Name: series-workflowx8dfh Phase: Succeeded StartedAt: 2026-08-02 02:11:11 +0000 UTC FinishedAt: 2026-08-02 06:05:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[0] Phase: Succeeded StartedAt: 2026-08-02 02:11:11 +0000 UTC FinishedAt: 2026-08-02 02:13:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 02:11:11 +0000 UTC FinishedAt: 2026-08-02 02:13:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "7d3aae206663c4e006b25a1c7a20a4029e67da76", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM_VGEM", "DRM_VKMS", "DRM_VMWGFX", "DRM_TTM", "DRM_GEM_SHMEM_HELPER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "7d3aae206663c4e006b25a1c7a20a4029e67da76", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM_VGEM", "DRM_VKMS", "DRM_VMWGFX", "DRM_TTM", "DRM_GEM_SHMEM_HELPER" ], "series_id": "24f780a0-ea85-4b9d-b915-755f1e1b36ed" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vmf_insert_pfn_mkwrite", "__vmf_insert_pfn_prot", "ttm_bo_vm_fault_reserved", "vmw_bo_vm_mkwrite", "vmw_bo_vm_fault", "drm_gem_shmem_mmap" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTV9WR0VNJiMzNDssCiAgICAmIzM0O0RSTV9WS01TJiMzNDssCiAgICAmIzM0O0RSTV9WTVdHRlgmIzM0OywKICAgICYjMzQ7RFJNX1RUTSYjMzQ7LAogICAgJiMzNDtEUk1fR0VNX1NITUVNX0hFTFBFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZtZl9pbnNlcnRfcGZuX21rd3JpdGUmIzM0OywKICAgICYjMzQ7X192bWZfaW5zZXJ0X3Bmbl9wcm90JiMzNDssCiAgICAmIzM0O3R0bV9ib192bV9mYXVsdF9yZXNlcnZlZCYjMzQ7LAogICAgJiMzNDt2bXdfYm9fdm1fbWt3cml0ZSYjMzQ7LAogICAgJiMzNDt2bXdfYm9fdm1fZmF1bHQmIzM0OywKICAgICYjMzQ7ZHJtX2dlbV9zaG1lbV9tbWFwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgbmV3IGNvcmUgTU0gZnVuY3Rpb25zIGB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlYCBhbmQgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAgdG8gYWxsb3cgaW5zZXJ0aW5nIGEgd3JpdGFibGUgUFRFIGR1cmluZyBhIHBhZ2UgZmF1bHQgZXZlbiB3aGVuIHRoZSBWTUEgaXMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uLiBUaGlzIGZpeGVzIGFuIGlzc3VlIHdpdGggYGZpeHVwX3VzZXJfZmF1bHRgIGNhbGxlcnMuIEl0IG1vZGlmaWVzIHRoZSBwYWdlIGZhdWx0IGhhbmRsZXJzIGluIERSTSBHRU0gc2htZW0gaGVscGVyLCBUVE0gQk8gVk0sIGFuZCBWTVdnZnggdG8gdXNlIHRoZXNlIG5ldyBmdW5jdGlvbnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgdmlydHVhbCBHUFUgZHJpdmVycyB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG1tYXAgYW5kIHBhZ2UgZmF1bHRzLCBtYWtpbmcgdGhlbSBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkZjI1NTFkODU2M2ViNGIyMjg2OTZkMmVlZDk0MDFiOTA4ZTE3YzRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAwMjoxMjoxOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jXG5pbmRleCBjOTg5NDU5ZWIyMTU5Li5jODFiZTNlOTczMTczIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jXG5AQCAtNTg5LDExICYjNDM7NTg5LDI1IEBAIHN0YXRpYyB2b2lkIGRybV9nZW1fc2htZW1fcmVjb3JkX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4gXHRmb2xpb19tYXJrX2RpcnR5KHBhZ2VfZm9saW8oc2htZW0tXHUwMDNlcGFnZXNbcGFnZV9vZmZzZXRdKSk7XG4gfVxuIFxuJiM0MzsvKlxuJiM0MzsgKiBCZWNhdXNlIHRoZSB2bV9vcHMgaGF2ZSBhIC5wZm5fbWt3cml0ZSgpIGNhbGxiYWNrLCB2bWFfc2V0X3BhZ2VfcHJvdCgpXG4mIzQzOyAqIGhhcyBjbGVhcmVkIHRoZSB3cml0ZSBiaXQgZnJvbSB2bWEtXHUwMDNldm1fcGFnZV9wcm90LiAgdm1mX2luc2VydF9wZm4oKVxuJiM0MzsgKiB3b3VsZCBpbnN0YWxsIGEgcmVhZC1vbmx5IGVudHJ5IGV2ZW4gZm9yIGEgd3JpdGUgZmF1bHQsIHJlbHlpbmcgb24gYVxuJiM0MzsgKiBzZWNvbmQgZmF1bHQgdG8gcmVhY2ggLnBmbl9ta3dyaXRlKCkgYW5kIHVwZ3JhZGUgaXQsIGJ1dCB0aGF0IHNlY29uZFxuJiM0MzsgKiBmYXVsdCBuZXZlciBoYXBwZW5zIGZvciBmaXh1cF91c2VyX2ZhdWx0KCkgY2FsbGVycyB0aGF0IGRpcmVjdGx5XG4mIzQzOyAqIHdhbGsgdGhlIHBhZ2UgdGFibGVzIHdpdGggZm9sbG93X3Bmbm1hcF9zdGFydCgpLiAgVG8gZW5zdXJlIHRoYXRcbiYjNDM7ICogdGhleSBkb24mIzM5O3Qgc2VlIHRoZSByZWFkLW9ubHkgZW50cnksIHBhc3MgRkFVTFRfRkxBR19XUklURSBpbmZvIGRvd25cbiYjNDM7ICogdG8gaW5zdGFsbCBhIHdyaXRhYmxlIGVudHJ5IHJpZ2h0IGF3YXkuICBCZWNhdXNlIC5wZm5fbWt3cml0ZSgpIGlzXG4mIzQzOyAqIG5vdCBpbnZva2VkLCByZWNvcmQgdGhlIHdyaXRlIGFmdGVyd2FyZHMuXG4mIzQzOyAqL1xuIHN0YXRpYyB2bV9mYXVsdF90IHRyeV9pbnNlcnRfcGZuKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4gXHRcdFx0XHQgdW5zaWduZWQgbG9uZyBwZm4pXG4ge1xuJiM0MztcdGJvb2wgd3JpdGUgPSB2bWYtXHUwMDNlZmxhZ3MgXHUwMDI2IEZBVUxUX0ZMQUdfV1JJVEU7XG4mIzQzO1x0dm1fZmF1bHRfdCByZXQgPSBWTV9GQVVMVF9GQUxMQkFDSztcbiYjNDM7XG4gXHRpZiAoIW9yZGVyKSB7XG4tXHRcdHJldHVybiB2bWZfaW5zZXJ0X3Bmbih2bWYtXHUwMDNldm1hLCB2bWYtXHUwMDNlYWRkcmVzcywgcGZuKTtcbiYjNDM7XHRcdHJldCA9IHZtZl9pbnNlcnRfcGZuX21rd3JpdGUodm1mLVx1MDAzZXZtYSwgdm1mLVx1MDAzZWFkZHJlc3MsIHBmbiwgd3JpdGUpO1xuICNpZmRlZiBDT05GSUdfQVJDSF9TVVBQT1JUU19QTURfUEZOTUFQXG4gXHR9IGVsc2UgaWYgKG9yZGVyID09IFBNRF9PUkRFUikge1xuIFx0XHR1bnNpZ25lZCBsb25nIHBhZGRyID0gcGZuIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUO1xuQEAgLTYwMSwyNyAmIzQzOzYxNSwxNSBAQCBzdGF0aWMgdm1fZmF1bHRfdCB0cnlfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgdW5zaWduZWQgaW50IG9yZGVyLFxuIFxuIFx0XHRpZiAoYWxpZ25lZCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGZvbGlvX3Rlc3RfcG1kX21hcHBhYmxlKHBhZ2VfZm9saW8ocGZuX3RvX3BhZ2UocGZuKSkpKSB7XG4tXHRcdFx0dm1fZmF1bHRfdCByZXQ7XG4tXG4gXHRcdFx0cGZuIFx1MDAyNj0gUE1EX01BU0sgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4tXG4tXHRcdFx0LyogVW5saWtlIFBURXMgd2hpY2ggYXJlIGF1dG9tYXRpY2FsbHkgdXBncmFkZWQgdG9cbi1cdFx0XHQgKiB3cml0ZWFibGUgZW50cmllcywgdGhlIFBNRCB1cGdyYWRlcyBnbyB0aHJvdWdoXG4tXHRcdFx0ICogLmh1Z2VfZmF1bHQoKS4gTWFrZSBzdXJlIHdlIHBhc3MgdGhlIFwmIzM0O3dyaXRlXCYjMzQ7IGluZm9cbi1cdFx0XHQgKiBhbG9uZyBpbiB0aGF0IGNhc2UuXG4tXHRcdFx0ICogVGhpcyBhbHNvIG1lYW5zIHdlIGhhdmUgdG8gcmVjb3JkIHRoZSB3cml0ZSBmYXVsdFxuLVx0XHRcdCAqIGhlcmUsIGluc3RlYWQgb2YgaW4gLnBmbl9ta3dyaXRlKCkuXG4tXHRcdFx0ICovXG4tXHRcdFx0cmV0ID0gdm1mX2luc2VydF9wZm5fcG1kKHZtZiwgcGZuLFxuLVx0XHRcdFx0XHRcdCB2bWYtXHUwMDNlZmxhZ3MgXHUwMDI2IEZBVUxUX0ZMQUdfV1JJVEUpO1xuLVx0XHRcdGlmIChyZXQgPT0gVk1fRkFVTFRfTk9QQUdFIFx1MDAyNlx1MDAyNiAodm1mLVx1MDAzZWZsYWdzIFx1MDAyNiBGQVVMVF9GTEFHX1dSSVRFKSlcbi1cdFx0XHRcdGRybV9nZW1fc2htZW1fcmVjb3JkX21rd3JpdGUodm1mKTtcbi1cbi1cdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0XHRyZXQgPSB2bWZfaW5zZXJ0X3Bmbl9wbWQodm1mLCBwZm4sIHdyaXRlKTtcbiBcdFx0fVxuICNlbmRpZlxuIFx0fVxuLVx0cmV0dXJuIFZNX0ZBVUxUX0ZBTExCQUNLO1xuJiM0MztcbiYjNDM7XHRpZiAocmV0ID09IFZNX0ZBVUxUX05PUEFHRSBcdTAwMjZcdTAwMjYgd3JpdGUpXG4mIzQzO1x0XHRkcm1fZ2VtX3NobWVtX3JlY29yZF9ta3dyaXRlKHZtZik7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIHZtX2ZhdWx0X3QgZHJtX2dlbV9zaG1lbV9hbnlfZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHVuc2lnbmVkIGludCBvcmRlcilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uY1xuaW5kZXggYTgwNTEwNDg5YzQ1Ni4uZWYyN2EyZDdhZmMwNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmNcbkBAIC0yNjMsNyAmIzQzOzI2Myw4IEBAIHZtX2ZhdWx0X3QgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHN0cnVjdCB2bV9mYXVsdCAqdm1mLFxuIFx0XHQgKiBhdCBhcmJpdHJhcnkgdGltZXMgd2hpbGUgdGhlIGRhdGEgaXMgbW1hcCYjMzk7ZWQuXG4gXHRcdCAqIFNlZSB2bWZfaW5zZXJ0X3Bmbl9wcm90KCkgZm9yIGEgZGlzY3Vzc2lvbi5cbiBcdFx0ICovXG4tXHRcdHJldCA9IHZtZl9pbnNlcnRfcGZuX3Byb3Qodm1hLCBhZGRyZXNzLCBwZm4sIHByb3QpO1xuJiM0MztcdFx0cmV0ID0gX192bWZfaW5zZXJ0X3Bmbl9wcm90KHZtYSwgYWRkcmVzcywgcGZuLCBwcm90LFxuJiM0MztcdFx0XHRcdFx0ICAgIGkgPT0gMCBcdTAwMjZcdTAwMjYgISEodm1mLVx1MDAzZWZsYWdzIFx1MDAyNiBGQVVMVF9GTEFHX1dSSVRFKSk7XG4gXG4gXHRcdC8qIE5ldmVyIGVycm9yIG9uIHByZWZhdWx0ZWQgUFRFcyAqL1xuIFx0XHRpZiAodW5saWtlbHkoKHJldCBcdTAwMjYgVk1fRkFVTFRfRVJST1IpKSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuY1xuaW5kZXggNDU1NjFiYzFjOWVmZi4uMzA5OTU1OGMwNzYyZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jXG5AQCAtMzk4LDE1ICYjNDM7Mzk4LDMzIEBAIHZvaWQgdm13X2JvX2RpcnR5X2NsZWFyX3JlcyhzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMpXG4gXHRcdGRpcnR5LVx1MDAzZWVuZCA9IHJlc19zdGFydDtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2bV9mYXVsdF90IHZtd19ib19kaXJ0eV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBwYWdlX29mZnNldDtcbiYjNDM7XHRzdHJ1Y3Qgdm13X2JvICp2Ym8gPSB0b192bXdfYm8oXHUwMDI2Ym8tXHUwMDNlYmFzZSk7XG4mIzQzO1xuJiM0MztcdHBhZ2Vfb2Zmc2V0ID0gdm1mLVx1MDAzZXBnb2ZmIC0gZHJtX3ZtYV9ub2RlX3N0YXJ0KFx1MDAyNmJvLVx1MDAzZWJhc2Uudm1hX25vZGUpO1xuJiM0MztcdGlmICh1bmxpa2VseShwYWdlX29mZnNldCBcdTAwM2U9IFBGTl9VUChiby1cdTAwM2VyZXNvdXJjZS1cdTAwM2VzaXplKSkpXG4mIzQzO1x0XHRyZXR1cm4gVk1fRkFVTFRfU0lHQlVTO1xuJiM0MztcbiYjNDM7XHRpZiAodmJvLVx1MDAzZWRpcnR5IFx1MDAyNlx1MDAyNiB2Ym8tXHUwMDNlZGlydHktXHUwMDNlbWV0aG9kID09IFZNV19CT19ESVJUWV9NS1dSSVRFIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhdGVzdF9iaXQocGFnZV9vZmZzZXQsIFx1MDAyNnZiby1cdTAwM2VkaXJ0eS1cdTAwM2ViaXRtYXBbMF0pKSB7XG4mIzQzO1x0XHRzdHJ1Y3Qgdm13X2JvX2RpcnR5ICpkaXJ0eSA9IHZiby1cdTAwM2VkaXJ0eTtcbiYjNDM7XG4mIzQzO1x0XHRfX3NldF9iaXQocGFnZV9vZmZzZXQsIFx1MDAyNmRpcnR5LVx1MDAzZWJpdG1hcFswXSk7XG4mIzQzO1x0XHRkaXJ0eS1cdTAwM2VzdGFydCA9IG1pbihkaXJ0eS1cdTAwM2VzdGFydCwgcGFnZV9vZmZzZXQpO1xuJiM0MztcdFx0ZGlydHktXHUwMDNlZW5kID0gbWF4KGRpcnR5LVx1MDAzZWVuZCwgcGFnZV9vZmZzZXQgJiM0MzsgMSk7XG4mIzQzO1x0fVxuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIHZtX2ZhdWx0X3Qgdm13X2JvX3ZtX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4ge1xuIFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEgPSB2bWYtXHUwMDNldm1hO1xuIFx0c3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyA9IChzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKilcbiBcdCAgICB2bWEtXHUwMDNldm1fcHJpdmF0ZV9kYXRhO1xuIFx0dm1fZmF1bHRfdCByZXQ7XG4tXHR1bnNpZ25lZCBsb25nIHBhZ2Vfb2Zmc2V0O1xuIFx0dW5zaWduZWQgaW50IHNhdmVfZmxhZ3M7XG4tXHRzdHJ1Y3Qgdm13X2JvICp2Ym8gPSB0b192bXdfYm8oXHUwMDI2Ym8tXHUwMDNlYmFzZSk7XG4gXG4gXHQvKlxuIFx0ICogbWt3cml0ZSgpIGRvZXNuJiMzOTt0IGhhbmRsZSB0aGUgVk1fRkFVTFRfUkVUUlkgcmV0dXJuIHZhbHVlIGNvcnJlY3RseS5cbkBAIC00MTksMjIgJiM0Mzs0MzcsNyBAQCB2bV9mYXVsdF90IHZtd19ib192bV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdHBhZ2Vfb2Zmc2V0ID0gdm1mLVx1MDAzZXBnb2ZmIC0gZHJtX3ZtYV9ub2RlX3N0YXJ0KFx1MDAyNmJvLVx1MDAzZWJhc2Uudm1hX25vZGUpO1xuLVx0aWYgKHVubGlrZWx5KHBhZ2Vfb2Zmc2V0IFx1MDAzZT0gUEZOX1VQKGJvLVx1MDAzZXJlc291cmNlLVx1MDAzZXNpemUpKSkge1xuLVx0XHRyZXQgPSBWTV9GQVVMVF9TSUdCVVM7XG4tXHRcdGdvdG8gb3V0X3VubG9jaztcbi1cdH1cbi1cbi1cdGlmICh2Ym8tXHUwMDNlZGlydHkgXHUwMDI2XHUwMDI2IHZiby1cdTAwM2VkaXJ0eS1cdTAwM2VtZXRob2QgPT0gVk1XX0JPX0RJUlRZX01LV1JJVEUgXHUwMDI2XHUwMDI2XG4tXHQgICAgIXRlc3RfYml0KHBhZ2Vfb2Zmc2V0LCBcdTAwMjZ2Ym8tXHUwMDNlZGlydHktXHUwMDNlYml0bWFwWzBdKSkge1xuLVx0XHRzdHJ1Y3Qgdm13X2JvX2RpcnR5ICpkaXJ0eSA9IHZiby1cdTAwM2VkaXJ0eTtcbi1cbi1cdFx0X19zZXRfYml0KHBhZ2Vfb2Zmc2V0LCBcdTAwMjZkaXJ0eS1cdTAwM2ViaXRtYXBbMF0pO1xuLVx0XHRkaXJ0eS1cdTAwM2VzdGFydCA9IG1pbihkaXJ0eS1cdTAwM2VzdGFydCwgcGFnZV9vZmZzZXQpO1xuLVx0XHRkaXJ0eS1cdTAwM2VlbmQgPSBtYXgoZGlydHktXHUwMDNlZW5kLCBwYWdlX29mZnNldCAmIzQzOyAxKTtcbi1cdH1cbi1cbi1vdXRfdW5sb2NrOlxuJiM0MztcdHJldCA9IHZtd19ib19kaXJ0eV9ta3dyaXRlKHZtZiwgYm8pO1xuIFx0ZG1hX3Jlc3ZfdW5sb2NrKGJvLVx1MDAzZWJhc2UucmVzdik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbkBAIC00ODQsNiAmIzQzOzQ4Nyw5IEBAIHZtX2ZhdWx0X3Qgdm13X2JvX3ZtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIFx0XHRwcm90ID0gdm1fZ2V0X3BhZ2VfcHJvdCh2bWEtXHUwMDNldm1fZmxhZ3MpO1xuIFxuIFx0cmV0ID0gdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHZtZiwgcHJvdCwgbnVtX3ByZWZhdWx0KTtcbiYjNDM7XHRpZiAocmV0ID09IFZNX0ZBVUxUX05PUEFHRSBcdTAwMjZcdTAwMjYgKHZtZi1cdTAwM2VmbGFncyBcdTAwMjYgRkFVTFRfRkxBR19XUklURSkpXG4mIzQzO1x0XHRXQVJOX09OX09OQ0Uodm13X2JvX2RpcnR5X21rd3JpdGUodm1mLCBibykpO1xuJiM0MztcbiBcdGlmIChyZXQgPT0gVk1fRkFVTFRfUkVUUlkgXHUwMDI2XHUwMDI2ICEodm1mLVx1MDAzZWZsYWdzIFx1MDAyNiBGQVVMVF9GTEFHX1JFVFJZX05PV0FJVCkpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oXG5pbmRleCA0ODVkZjljMmRiZGRiLi40N2VhY2Y2NDBjMDM1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L21tLmhcbkBAIC00NTQ4LDYgJiM0Mzs0NTQ4LDEwIEBAIHZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdFx0XHR1bnNpZ25lZCBsb25nIHBmbik7XG4gdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3Bmbl9wcm90KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gXHRcdFx0dW5zaWduZWQgbG9uZyBwZm4sIHBncHJvdF90IHBncHJvdCk7XG4mIzQzO3ZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm5fbWt3cml0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuJiM0MztcdFx0XHR1bnNpZ25lZCBsb25nIHBmbiwgYm9vbCB3cml0ZSk7XG4mIzQzO3ZtX2ZhdWx0X3QgX192bWZfaW5zZXJ0X3Bmbl9wcm90KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4mIzQzO1x0XHRcdHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwZ3Byb3QsIGJvb2wgbWt3cml0ZSk7XG4gdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X21peGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gXHRcdFx0dW5zaWduZWQgbG9uZyBwZm4pO1xuIHZtX2ZhdWx0X3Qgdm1mX2luc2VydF9taXhlZF9ta3dyaXRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9odWdlX21lbW9yeS5jXG5pbmRleCBiNWQxZTlkNDQ2M2QwLi4yZjRkY2FhODE5Yjc5IDEwMDY0NFxuLS0tIGEvbW0vaHVnZV9tZW1vcnkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vaHVnZV9tZW1vcnkuY1xuQEAgLTE2MTUsNyAmIzQzOzE2MTUsNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBpbnNlcnRfcG1kKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gICogQHBmbjogcGZuIHRvIGluc2VydFxuICAqIEB3cml0ZTogd2hldGhlciBpdCYjMzk7cyBhIHdyaXRlIGZhdWx0XG4gICpcbi0gKiBJbnNlcnQgYSBwbWQgc2l6ZSBwZm4uIFNlZSB2bWZfaW5zZXJ0X3BmbigpIGZvciBhZGRpdGlvbmFsIGluZm8uXG4mIzQzOyAqIEluc2VydCBhIHBtZCBzaXplIHBmbi4gU2VlIHZtZl9pbnNlcnRfcGZuX21rd3JpdGUoKSBmb3IgYWRkaXRpb25hbCBpbmZvLlxuICAqXG4gICogUmV0dXJuOiB2bV9mYXVsdF90IHZhbHVlLlxuICAqL1xuZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmNcbmluZGV4IGZmMzM4YzJhYmU5MjMuLmQzZDEwYjJlNDc5YTQgMTAwNjQ0XG4tLS0gYS9tbS9tZW1vcnkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtb3J5LmNcbkBAIC0yNzE4LDYgJiM0MzsyNzE4LDM0IEBAIHN0YXRpYyB2bV9mYXVsdF90IGluc2VydF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdHJldHVybiBWTV9GQVVMVF9OT1BBR0U7XG4gfVxuIFxuJiM0Mzt2bV9mYXVsdF90IF9fdm1mX2luc2VydF9wZm5fcHJvdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbiYjNDM7XHRcdFx0dW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIHBmbiwgcGdwcm90X3QgcGdwcm90LFxuJiM0MztcdFx0XHRib29sIG1rd3JpdGUpXG4mIzQzO3tcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFRlY2huaWNhbGx5LCBhcmNoaXRlY3R1cmVzIHdpdGggcHRlX3NwZWNpYWwgY2FuIGF2b2lkIGFsbCB0aGVzZVxuJiM0MztcdCAqIHJlc3RyaWN0aW9ucyAoc2FtZSBmb3IgcmVtYXBfcGZuX3JhbmdlKS4gIEhvd2V2ZXIgd2Ugd291bGQgbGlrZVxuJiM0MztcdCAqIGNvbnNpc3RlbmN5IGluIHRlc3RpbmcgYW5kIGZlYXR1cmUgcGFyaXR5IGFtb25nIGFsbCwgc28gd2Ugc2hvdWxkXG4mIzQzO1x0ICogdHJ5IHRvIGtlZXAgdGhlc2UgaW52YXJpYW50cyBpbiBwbGFjZSBmb3IgZXZlcnlib2R5LlxuJiM0MztcdCAqL1xuJiM0MztcdEJVR19PTighKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgKFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpKTtcbiYjNDM7XHRCVUdfT04oKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgKFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpID09XG4mIzQzO1x0XHRcdFx0XHRcdChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKTtcbiYjNDM7XHRCVUdfT04oKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fUEZOTUFQKSBcdTAwMjZcdTAwMjYgaXNfY293X21hcHBpbmcodm1hLVx1MDAzZXZtX2ZsYWdzKSk7XG4mIzQzO1x0QlVHX09OKCh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX01JWEVETUFQKSBcdTAwMjZcdTAwMjYgcGZuX3ZhbGlkKHBmbikpO1xuJiM0MztcbiYjNDM7XHRpZiAoYWRkciBcdTAwM2Mgdm1hLVx1MDAzZXZtX3N0YXJ0IHx8IGFkZHIgXHUwMDNlPSB2bWEtXHUwMDNldm1fZW5kKVxuJiM0MztcdFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcbiYjNDM7XG4mIzQzO1x0aWYgKCFwZm5fbW9kaWZ5X2FsbG93ZWQocGZuLCBwZ3Byb3QpKVxuJiM0MztcdFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcbiYjNDM7XG4mIzQzO1x0cGZubWFwX3NldHVwX2NhY2hlbW9kZV9wZm4ocGZuLCBcdTAwMjZwZ3Byb3QpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gaW5zZXJ0X3Bmbih2bWEsIGFkZHIsIHBmbiwgcGdwcm90LCBta3dyaXRlKTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MKF9fdm1mX2luc2VydF9wZm5fcHJvdCk7XG4mIzQzO1xuIC8qKlxuICAqIHZtZl9pbnNlcnRfcGZuX3Byb3QgLSBpbnNlcnQgc2luZ2xlIHBmbiBpbnRvIHVzZXIgdm1hIHdpdGggc3BlY2lmaWVkIHBncHJvdFxuICAqIEB2bWE6IHVzZXIgdm1hIHRvIG1hcCB0b1xuQEAgLTI3NTQsMjcgJiM0MzsyNzgyLDcgQEAgc3RhdGljIHZtX2ZhdWx0X3QgaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIHZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm5fcHJvdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0XHRcdHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwZ3Byb3QpXG4ge1xuLVx0Lypcbi1cdCAqIFRlY2huaWNhbGx5LCBhcmNoaXRlY3R1cmVzIHdpdGggcHRlX3NwZWNpYWwgY2FuIGF2b2lkIGFsbCB0aGVzZVxuLVx0ICogcmVzdHJpY3Rpb25zIChzYW1lIGZvciByZW1hcF9wZm5fcmFuZ2UpLiAgSG93ZXZlciB3ZSB3b3VsZCBsaWtlXG4tXHQgKiBjb25zaXN0ZW5jeSBpbiB0ZXN0aW5nIGFuZCBmZWF0dXJlIHBhcml0eSBhbW9uZyBhbGwsIHNvIHdlIHNob3VsZFxuLVx0ICogdHJ5IHRvIGtlZXAgdGhlc2UgaW52YXJpYW50cyBpbiBwbGFjZSBmb3IgZXZlcnlib2R5LlxuLVx0ICovXG4tXHRCVUdfT04oISh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKSk7XG4tXHRCVUdfT04oKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgKFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpID09XG4tXHRcdFx0XHRcdFx0KFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpO1xuLVx0QlVHX09OKCh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1BGTk1BUCkgXHUwMDI2XHUwMDI2IGlzX2Nvd19tYXBwaW5nKHZtYS1cdTAwM2V2bV9mbGFncykpO1xuLVx0QlVHX09OKCh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX01JWEVETUFQKSBcdTAwMjZcdTAwMjYgcGZuX3ZhbGlkKHBmbikpO1xuLVxuLVx0aWYgKGFkZHIgXHUwMDNjIHZtYS1cdTAwM2V2bV9zdGFydCB8fCBhZGRyIFx1MDAzZT0gdm1hLVx1MDAzZXZtX2VuZClcbi1cdFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcbi1cbi1cdGlmICghcGZuX21vZGlmeV9hbGxvd2VkKHBmbiwgcGdwcm90KSlcbi1cdFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcbi1cbi1cdHBmbm1hcF9zZXR1cF9jYWNoZW1vZGVfcGZuKHBmbiwgXHUwMDI2cGdwcm90KTtcbi1cbi1cdHJldHVybiBpbnNlcnRfcGZuKHZtYSwgYWRkciwgcGZuLCBwZ3Byb3QsIGZhbHNlKTtcbiYjNDM7XHRyZXR1cm4gX192bWZfaW5zZXJ0X3Bmbl9wcm90KHZtYSwgYWRkciwgcGZuLCBwZ3Byb3QsIGZhbHNlKTtcbiB9XG4gRVhQT1JUX1NZTUJPTCh2bWZfaW5zZXJ0X3Bmbl9wcm90KTtcbiBcbkBAIC0yODA1LDYgJiM0MzsyODEzLDMxIEBAIHZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiB9XG4gRVhQT1JUX1NZTUJPTCh2bWZfaW5zZXJ0X3Bmbik7XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlIC0gaW5zZXJ0IHNpbmdsZSBwZm4gaW50byB1c2VyIHZtYSwgcG9zc2libHkgd3JpdGFibGVcbiYjNDM7ICogQHZtYTogdXNlciB2bWEgdG8gbWFwIHRvXG4mIzQzOyAqIEBhZGRyOiB0YXJnZXQgdXNlciBhZGRyZXNzIG9mIHRoaXMgcGFnZVxuJiM0MzsgKiBAcGZuOiBzb3VyY2Uga2VybmVsIHBmblxuJiM0MzsgKiBAd3JpdGU6IHdoZXRoZXIgdGhlIFBURSBzaG91bGQgYmUgaW5zdGFsbGVkIHdyaXRhYmxlXG4mIzQzOyAqXG4mIzQzOyAqIExpa2Ugdm1mX2luc2VydF9wZm4oKSwgZXhjZXB0IHRoYXQgQHdyaXRlIGFsbG93cyBpbnN0YWxsaW5nIGEgd3JpdGFibGVcbiYjNDM7ICogUFRFIGV2ZW4gd2hlbiBAdm1hIGlzIHVuZGVyIHdyaXRlIG5vdGlmaWNhdGlvbiwgaS5lLiB3aGVuIGl0IGhhcyBhXG4mIzQzOyAqIC5wYWdlX21rd3JpdGUoKSBvciAucGZuX21rd3JpdGUoKSBjYWxsYmFjayBhbmQgdm1hX3NldF9wYWdlX3Byb3QoKSBoYXNcbiYjNDM7ICogdGhlcmVmb3JlIGNsZWFyZWQgdGhlIHdyaXRlIGJpdCBmcm9tIEB2bWEtXHUwMDNldm1fcGFnZV9wcm90LlxuJiM0MzsgKlxuJiM0MzsgKiBOb3RlIHRoYXQgbmVpdGhlciBvZiB0aGVzZSBjYWxsYmFja3MgaXMgaW52b2tlZCwgc28gdGhlIGNhbGxlciBtdXN0XG4mIzQzOyAqIGl0c2VsZiBkbyB3aGF0ZXZlciB0aGV5IHdvdWxkIGhhdmUgZG9uZSBpZiBAd3JpdGUgaXMgdHJ1ZS5cbiYjNDM7ICpcbiYjNDM7ICogQ29udGV4dDogUHJvY2VzcyBjb250ZXh0LiAgTWF5IGFsbG9jYXRlIHVzaW5nICVHRlBfS0VSTkVMLlxuJiM0MzsgKiBSZXR1cm46IHZtX2ZhdWx0X3QgdmFsdWUuXG4mIzQzOyAqL1xuJiM0Mzt2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuX21rd3JpdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiYjNDM7XHRcdFx0dW5zaWduZWQgbG9uZyBwZm4sIGJvb2wgd3JpdGUpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gX192bWZfaW5zZXJ0X3Bmbl9wcm90KHZtYSwgYWRkciwgcGZuLCB2bWEtXHUwMDNldm1fcGFnZV9wcm90LCB3cml0ZSk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTCh2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlKTtcbiYjNDM7XG4gc3RhdGljIGJvb2wgdm1fbWl4ZWRfb2soc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgcGZuLFxuIFx0XHRcdGJvb2wgbWt3cml0ZSlcbiB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTV9WR0VNJiMzNDssCiAgICAmIzM0O0RSTV9WS01TJiMzNDssCiAgICAmIzM0O0RSTV9WTVdHRlgmIzM0OywKICAgICYjMzQ7RFJNX1RUTSYjMzQ7LAogICAgJiMzNDtEUk1fR0VNX1NITUVNX0hFTFBFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZtZl9pbnNlcnRfcGZuX21rd3JpdGUmIzM0OywKICAgICYjMzQ7X192bWZfaW5zZXJ0X3Bmbl9wcm90JiMzNDssCiAgICAmIzM0O3R0bV9ib192bV9mYXVsdF9yZXNlcnZlZCYjMzQ7LAogICAgJiMzNDt2bXdfYm9fdm1fbWt3cml0ZSYjMzQ7LAogICAgJiMzNDt2bXdfYm9fdm1fZmF1bHQmIzM0OywKICAgICYjMzQ7ZHJtX2dlbV9zaG1lbV9tbWFwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgbmV3IGNvcmUgTU0gZnVuY3Rpb25zIGB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlYCBhbmQgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAgdG8gYWxsb3cgaW5zZXJ0aW5nIGEgd3JpdGFibGUgUFRFIGR1cmluZyBhIHBhZ2UgZmF1bHQgZXZlbiB3aGVuIHRoZSBWTUEgaXMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uLiBUaGlzIGZpeGVzIGFuIGlzc3VlIHdpdGggYGZpeHVwX3VzZXJfZmF1bHRgIGNhbGxlcnMuIEl0IG1vZGlmaWVzIHRoZSBwYWdlIGZhdWx0IGhhbmRsZXJzIGluIERSTSBHRU0gc2htZW0gaGVscGVyLCBUVE0gQk8gVk0sIGFuZCBWTVdnZnggdG8gdXNlIHRoZXNlIG5ldyBmdW5jdGlvbnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgdmlydHVhbCBHUFUgZHJpdmVycyB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG1tYXAgYW5kIHBhZ2UgZmF1bHRzLCBtYWtpbmcgdGhlbSBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkZjI1NTFkODU2M2ViNGIyMjg2OTZkMmVlZDk0MDFiOTA4ZTE3YzRkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAwMjoxMjoxOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMKaW5kZXggYzk4OTQ1OWViMjE1OS4uYzgxYmUzZTk3MzE3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMKQEAgLTU4OSwxMSAmIzQzOzU4OSwyNSBAQCBzdGF0aWMgdm9pZCBkcm1fZ2VtX3NobWVtX3JlY29yZF9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogCWZvbGlvX21hcmtfZGlydHkocGFnZV9mb2xpbyhzaG1lbS0mZ3Q7cGFnZXNbcGFnZV9vZmZzZXRdKSk7CiB9CiAKJiM0MzsvKgomIzQzOyAqIEJlY2F1c2UgdGhlIHZtX29wcyBoYXZlIGEgLnBmbl9ta3dyaXRlKCkgY2FsbGJhY2ssIHZtYV9zZXRfcGFnZV9wcm90KCkKJiM0MzsgKiBoYXMgY2xlYXJlZCB0aGUgd3JpdGUgYml0IGZyb20gdm1hLSZndDt2bV9wYWdlX3Byb3QuICB2bWZfaW5zZXJ0X3BmbigpCiYjNDM7ICogd291bGQgaW5zdGFsbCBhIHJlYWQtb25seSBlbnRyeSBldmVuIGZvciBhIHdyaXRlIGZhdWx0LCByZWx5aW5nIG9uIGEKJiM0MzsgKiBzZWNvbmQgZmF1bHQgdG8gcmVhY2ggLnBmbl9ta3dyaXRlKCkgYW5kIHVwZ3JhZGUgaXQsIGJ1dCB0aGF0IHNlY29uZAomIzQzOyAqIGZhdWx0IG5ldmVyIGhhcHBlbnMgZm9yIGZpeHVwX3VzZXJfZmF1bHQoKSBjYWxsZXJzIHRoYXQgZGlyZWN0bHkKJiM0MzsgKiB3YWxrIHRoZSBwYWdlIHRhYmxlcyB3aXRoIGZvbGxvd19wZm5tYXBfc3RhcnQoKS4gIFRvIGVuc3VyZSB0aGF0CiYjNDM7ICogdGhleSBkb24mIzM5O3Qgc2VlIHRoZSByZWFkLW9ubHkgZW50cnksIHBhc3MgRkFVTFRfRkxBR19XUklURSBpbmZvIGRvd24KJiM0MzsgKiB0byBpbnN0YWxsIGEgd3JpdGFibGUgZW50cnkgcmlnaHQgYXdheS4gIEJlY2F1c2UgLnBmbl9ta3dyaXRlKCkgaXMKJiM0MzsgKiBub3QgaW52b2tlZCwgcmVjb3JkIHRoZSB3cml0ZSBhZnRlcndhcmRzLgomIzQzOyAqLwogc3RhdGljIHZtX2ZhdWx0X3QgdHJ5X2luc2VydF9wZm4oc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHVuc2lnbmVkIGludCBvcmRlciwKIAkJCQkgdW5zaWduZWQgbG9uZyBwZm4pCiB7CiYjNDM7CWJvb2wgd3JpdGUgPSB2bWYtJmd0O2ZsYWdzICZhbXA7IEZBVUxUX0ZMQUdfV1JJVEU7CiYjNDM7CXZtX2ZhdWx0X3QgcmV0ID0gVk1fRkFVTFRfRkFMTEJBQ0s7CiYjNDM7CiAJaWYgKCFvcmRlcikgewotCQlyZXR1cm4gdm1mX2luc2VydF9wZm4odm1mLSZndDt2bWEsIHZtZi0mZ3Q7YWRkcmVzcywgcGZuKTsKJiM0MzsJCXJldCA9IHZtZl9pbnNlcnRfcGZuX21rd3JpdGUodm1mLSZndDt2bWEsIHZtZi0mZ3Q7YWRkcmVzcywgcGZuLCB3cml0ZSk7CiAjaWZkZWYgQ09ORklHX0FSQ0hfU1VQUE9SVFNfUE1EX1BGTk1BUAogCX0gZWxzZSBpZiAob3JkZXIgPT0gUE1EX09SREVSKSB7CiAJCXVuc2lnbmVkIGxvbmcgcGFkZHIgPSBwZm4gJmx0OyZsdDsgUEFHRV9TSElGVDsKQEAgLTYwMSwyNyAmIzQzOzYxNSwxNSBAQCBzdGF0aWMgdm1fZmF1bHRfdCB0cnlfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgdW5zaWduZWQgaW50IG9yZGVyLAogCiAJCWlmIChhbGlnbmVkICZhbXA7JmFtcDsKIAkJICAgIGZvbGlvX3Rlc3RfcG1kX21hcHBhYmxlKHBhZ2VfZm9saW8ocGZuX3RvX3BhZ2UocGZuKSkpKSB7Ci0JCQl2bV9mYXVsdF90IHJldDsKLQogCQkJcGZuICZhbXA7PSBQTURfTUFTSyAmZ3Q7Jmd0OyBQQUdFX1NISUZUOwotCi0JCQkvKiBVbmxpa2UgUFRFcyB3aGljaCBhcmUgYXV0b21hdGljYWxseSB1cGdyYWRlZCB0bwotCQkJICogd3JpdGVhYmxlIGVudHJpZXMsIHRoZSBQTUQgdXBncmFkZXMgZ28gdGhyb3VnaAotCQkJICogLmh1Z2VfZmF1bHQoKS4gTWFrZSBzdXJlIHdlIHBhc3MgdGhlICYjMzQ7d3JpdGUmIzM0OyBpbmZvCi0JCQkgKiBhbG9uZyBpbiB0aGF0IGNhc2UuCi0JCQkgKiBUaGlzIGFsc28gbWVhbnMgd2UgaGF2ZSB0byByZWNvcmQgdGhlIHdyaXRlIGZhdWx0Ci0JCQkgKiBoZXJlLCBpbnN0ZWFkIG9mIGluIC5wZm5fbWt3cml0ZSgpLgotCQkJICovCi0JCQlyZXQgPSB2bWZfaW5zZXJ0X3Bmbl9wbWQodm1mLCBwZm4sCi0JCQkJCQkgdm1mLSZndDtmbGFncyAmYW1wOyBGQVVMVF9GTEFHX1dSSVRFKTsKLQkJCWlmIChyZXQgPT0gVk1fRkFVTFRfTk9QQUdFICZhbXA7JmFtcDsgKHZtZi0mZ3Q7ZmxhZ3MgJmFtcDsgRkFVTFRfRkxBR19XUklURSkpCi0JCQkJZHJtX2dlbV9zaG1lbV9yZWNvcmRfbWt3cml0ZSh2bWYpOwotCi0JCQlyZXR1cm4gcmV0OwomIzQzOwkJCXJldCA9IHZtZl9pbnNlcnRfcGZuX3BtZCh2bWYsIHBmbiwgd3JpdGUpOwogCQl9CiAjZW5kaWYKIAl9Ci0JcmV0dXJuIFZNX0ZBVUxUX0ZBTExCQUNLOwomIzQzOwomIzQzOwlpZiAocmV0ID09IFZNX0ZBVUxUX05PUEFHRSAmYW1wOyZhbXA7IHdyaXRlKQomIzQzOwkJZHJtX2dlbV9zaG1lbV9yZWNvcmRfbWt3cml0ZSh2bWYpOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdm1fZmF1bHRfdCBkcm1fZ2VtX3NobWVtX2FueV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgdW5zaWduZWQgaW50IG9yZGVyKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMKaW5kZXggYTgwNTEwNDg5YzQ1Ni4uZWYyN2EyZDdhZmMwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jCkBAIC0yNjMsNyAmIzQzOzI2Myw4IEBAIHZtX2ZhdWx0X3QgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHN0cnVjdCB2bV9mYXVsdCAqdm1mLAogCQkgKiBhdCBhcmJpdHJhcnkgdGltZXMgd2hpbGUgdGhlIGRhdGEgaXMgbW1hcCYjMzk7ZWQuCiAJCSAqIFNlZSB2bWZfaW5zZXJ0X3Bmbl9wcm90KCkgZm9yIGEgZGlzY3Vzc2lvbi4KIAkJICovCi0JCXJldCA9IHZtZl9pbnNlcnRfcGZuX3Byb3Qodm1hLCBhZGRyZXNzLCBwZm4sIHByb3QpOwomIzQzOwkJcmV0ID0gX192bWZfaW5zZXJ0X3Bmbl9wcm90KHZtYSwgYWRkcmVzcywgcGZuLCBwcm90LAomIzQzOwkJCQkJICAgIGkgPT0gMCAmYW1wOyZhbXA7ICEhKHZtZi0mZ3Q7ZmxhZ3MgJmFtcDsgRkFVTFRfRkxBR19XUklURSkpOwogCiAJCS8qIE5ldmVyIGVycm9yIG9uIHByZWZhdWx0ZWQgUFRFcyAqLwogCQlpZiAodW5saWtlbHkoKHJldCAmYW1wOyBWTV9GQVVMVF9FUlJPUikpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmMKaW5kZXggNDU1NjFiYzFjOWVmZi4uMzA5OTU1OGMwNzYyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYwpAQCAtMzk4LDE1ICYjNDM7Mzk4LDMzIEBAIHZvaWQgdm13X2JvX2RpcnR5X2NsZWFyX3JlcyhzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMpCiAJCWRpcnR5LSZndDtlbmQgPSByZXNfc3RhcnQ7CiB9CiAKJiM0MztzdGF0aWMgdm1fZmF1bHRfdCB2bXdfYm9fZGlydHlfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibykKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgcGFnZV9vZmZzZXQ7CiYjNDM7CXN0cnVjdCB2bXdfYm8gKnZibyA9IHRvX3Ztd19ibygmYW1wO2JvLSZndDtiYXNlKTsKJiM0MzsKJiM0MzsJcGFnZV9vZmZzZXQgPSB2bWYtJmd0O3Bnb2ZmIC0gZHJtX3ZtYV9ub2RlX3N0YXJ0KCZhbXA7Ym8tJmd0O2Jhc2Uudm1hX25vZGUpOwomIzQzOwlpZiAodW5saWtlbHkocGFnZV9vZmZzZXQgJmd0Oz0gUEZOX1VQKGJvLSZndDtyZXNvdXJjZS0mZ3Q7c2l6ZSkpKQomIzQzOwkJcmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKJiM0MzsKJiM0MzsJaWYgKHZiby0mZ3Q7ZGlydHkgJmFtcDsmYW1wOyB2Ym8tJmd0O2RpcnR5LSZndDttZXRob2QgPT0gVk1XX0JPX0RJUlRZX01LV1JJVEUgJmFtcDsmYW1wOwomIzQzOwkgICAgIXRlc3RfYml0KHBhZ2Vfb2Zmc2V0LCAmYW1wO3Ziby0mZ3Q7ZGlydHktJmd0O2JpdG1hcFswXSkpIHsKJiM0MzsJCXN0cnVjdCB2bXdfYm9fZGlydHkgKmRpcnR5ID0gdmJvLSZndDtkaXJ0eTsKJiM0MzsKJiM0MzsJCV9fc2V0X2JpdChwYWdlX29mZnNldCwgJmFtcDtkaXJ0eS0mZ3Q7Yml0bWFwWzBdKTsKJiM0MzsJCWRpcnR5LSZndDtzdGFydCA9IG1pbihkaXJ0eS0mZ3Q7c3RhcnQsIHBhZ2Vfb2Zmc2V0KTsKJiM0MzsJCWRpcnR5LSZndDtlbmQgPSBtYXgoZGlydHktJmd0O2VuZCwgcGFnZV9vZmZzZXQgJiM0MzsgMSk7CiYjNDM7CX0KJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogdm1fZmF1bHRfdCB2bXdfYm9fdm1fbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIHsKIAlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IHZtZi0mZ3Q7dm1hOwogCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSAoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICopCiAJICAgIHZtYS0mZ3Q7dm1fcHJpdmF0ZV9kYXRhOwogCXZtX2ZhdWx0X3QgcmV0OwotCXVuc2lnbmVkIGxvbmcgcGFnZV9vZmZzZXQ7CiAJdW5zaWduZWQgaW50IHNhdmVfZmxhZ3M7Ci0Jc3RydWN0IHZtd19ibyAqdmJvID0gdG9fdm13X2JvKCZhbXA7Ym8tJmd0O2Jhc2UpOwogCiAJLyoKIAkgKiBta3dyaXRlKCkgZG9lc24mIzM5O3QgaGFuZGxlIHRoZSBWTV9GQVVMVF9SRVRSWSByZXR1cm4gdmFsdWUgY29ycmVjdGx5LgpAQCAtNDE5LDIyICYjNDM7NDM3LDcgQEAgdm1fZmF1bHRfdCB2bXdfYm9fdm1fbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcGFnZV9vZmZzZXQgPSB2bWYtJmd0O3Bnb2ZmIC0gZHJtX3ZtYV9ub2RlX3N0YXJ0KCZhbXA7Ym8tJmd0O2Jhc2Uudm1hX25vZGUpOwotCWlmICh1bmxpa2VseShwYWdlX29mZnNldCAmZ3Q7PSBQRk5fVVAoYm8tJmd0O3Jlc291cmNlLSZndDtzaXplKSkpIHsKLQkJcmV0ID0gVk1fRkFVTFRfU0lHQlVTOwotCQlnb3RvIG91dF91bmxvY2s7Ci0JfQotCi0JaWYgKHZiby0mZ3Q7ZGlydHkgJmFtcDsmYW1wOyB2Ym8tJmd0O2RpcnR5LSZndDttZXRob2QgPT0gVk1XX0JPX0RJUlRZX01LV1JJVEUgJmFtcDsmYW1wOwotCSAgICAhdGVzdF9iaXQocGFnZV9vZmZzZXQsICZhbXA7dmJvLSZndDtkaXJ0eS0mZ3Q7Yml0bWFwWzBdKSkgewotCQlzdHJ1Y3Qgdm13X2JvX2RpcnR5ICpkaXJ0eSA9IHZiby0mZ3Q7ZGlydHk7Ci0KLQkJX19zZXRfYml0KHBhZ2Vfb2Zmc2V0LCAmYW1wO2RpcnR5LSZndDtiaXRtYXBbMF0pOwotCQlkaXJ0eS0mZ3Q7c3RhcnQgPSBtaW4oZGlydHktJmd0O3N0YXJ0LCBwYWdlX29mZnNldCk7Ci0JCWRpcnR5LSZndDtlbmQgPSBtYXgoZGlydHktJmd0O2VuZCwgcGFnZV9vZmZzZXQgJiM0MzsgMSk7Ci0JfQotCi1vdXRfdW5sb2NrOgomIzQzOwlyZXQgPSB2bXdfYm9fZGlydHlfbWt3cml0ZSh2bWYsIGJvKTsKIAlkbWFfcmVzdl91bmxvY2soYm8tJmd0O2Jhc2UucmVzdik7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTQ4NCw2ICYjNDM7NDg3LDkgQEAgdm1fZmF1bHRfdCB2bXdfYm9fdm1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJCXByb3QgPSB2bV9nZXRfcGFnZV9wcm90KHZtYS0mZ3Q7dm1fZmxhZ3MpOwogCiAJcmV0ID0gdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHZtZiwgcHJvdCwgbnVtX3ByZWZhdWx0KTsKJiM0MzsJaWYgKHJldCA9PSBWTV9GQVVMVF9OT1BBR0UgJmFtcDsmYW1wOyAodm1mLSZndDtmbGFncyAmYW1wOyBGQVVMVF9GTEFHX1dSSVRFKSkKJiM0MzsJCVdBUk5fT05fT05DRSh2bXdfYm9fZGlydHlfbWt3cml0ZSh2bWYsIGJvKSk7CiYjNDM7CiAJaWYgKHJldCA9PSBWTV9GQVVMVF9SRVRSWSAmYW1wOyZhbXA7ICEodm1mLSZndDtmbGFncyAmYW1wOyBGQVVMVF9GTEFHX1JFVFJZX05PV0FJVCkpCiAJCXJldHVybiByZXQ7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaAppbmRleCA0ODVkZjljMmRiZGRiLi40N2VhY2Y2NDBjMDM1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21tLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbS5oCkBAIC00NTQ4LDYgJiM0Mzs0NTQ4LDEwIEBAIHZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkciwKIAkJCXVuc2lnbmVkIGxvbmcgcGZuKTsKIHZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm5fcHJvdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLAogCQkJdW5zaWduZWQgbG9uZyBwZm4sIHBncHJvdF90IHBncHJvdCk7CiYjNDM7dm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCiYjNDM7CQkJdW5zaWduZWQgbG9uZyBwZm4sIGJvb2wgd3JpdGUpOwomIzQzO3ZtX2ZhdWx0X3QgX192bWZfaW5zZXJ0X3Bmbl9wcm90KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCiYjNDM7CQkJdW5zaWduZWQgbG9uZyBwZm4sIHBncHJvdF90IHBncHJvdCwgYm9vbCBta3dyaXRlKTsKIHZtX2ZhdWx0X3Qgdm1mX2luc2VydF9taXhlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLAogCQkJdW5zaWduZWQgbG9uZyBwZm4pOwogdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X21peGVkX21rd3JpdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCmRpZmYgLS1naXQgYS9tbS9odWdlX21lbW9yeS5jIGIvbW0vaHVnZV9tZW1vcnkuYwppbmRleCBiNWQxZTlkNDQ2M2QwLi4yZjRkY2FhODE5Yjc5IDEwMDY0NAotLS0gYS9tbS9odWdlX21lbW9yeS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2h1Z2VfbWVtb3J5LmMKQEAgLTE2MTUsNyAmIzQzOzE2MTUsNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBpbnNlcnRfcG1kKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAgKiBAcGZuOiBwZm4gdG8gaW5zZXJ0CiAgKiBAd3JpdGU6IHdoZXRoZXIgaXQmIzM5O3MgYSB3cml0ZSBmYXVsdAogICoKLSAqIEluc2VydCBhIHBtZCBzaXplIHBmbi4gU2VlIHZtZl9pbnNlcnRfcGZuKCkgZm9yIGFkZGl0aW9uYWwgaW5mby4KJiM0MzsgKiBJbnNlcnQgYSBwbWQgc2l6ZSBwZm4uIFNlZSB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlKCkgZm9yIGFkZGl0aW9uYWwgaW5mby4KICAqCiAgKiBSZXR1cm46IHZtX2ZhdWx0X3QgdmFsdWUuCiAgKi8KZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmMKaW5kZXggZmYzMzhjMmFiZTkyMy4uZDNkMTBiMmU0NzlhNCAxMDA2NDQKLS0tIGEvbW0vbWVtb3J5LmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtb3J5LmMKQEAgLTI3MTgsNiAmIzQzOzI3MTgsMzQgQEAgc3RhdGljIHZtX2ZhdWx0X3QgaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLAogCXJldHVybiBWTV9GQVVMVF9OT1BBR0U7CiB9CiAKJiM0Mzt2bV9mYXVsdF90IF9fdm1mX2luc2VydF9wZm5fcHJvdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKJiM0MzsJCQl1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwZ3Byb3QsCiYjNDM7CQkJYm9vbCBta3dyaXRlKQomIzQzO3sKJiM0MzsJLyoKJiM0MzsJICogVGVjaG5pY2FsbHksIGFyY2hpdGVjdHVyZXMgd2l0aCBwdGVfc3BlY2lhbCBjYW4gYXZvaWQgYWxsIHRoZXNlCiYjNDM7CSAqIHJlc3RyaWN0aW9ucyAoc2FtZSBmb3IgcmVtYXBfcGZuX3JhbmdlKS4gIEhvd2V2ZXIgd2Ugd291bGQgbGlrZQomIzQzOwkgKiBjb25zaXN0ZW5jeSBpbiB0ZXN0aW5nIGFuZCBmZWF0dXJlIHBhcml0eSBhbW9uZyBhbGwsIHNvIHdlIHNob3VsZAomIzQzOwkgKiB0cnkgdG8ga2VlcCB0aGVzZSBpbnZhcmlhbnRzIGluIHBsYWNlIGZvciBldmVyeWJvZHkuCiYjNDM7CSAqLwomIzQzOwlCVUdfT04oISh2bWEtJmd0O3ZtX2ZsYWdzICZhbXA7IChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKSk7CiYjNDM7CUJVR19PTigodm1hLSZndDt2bV9mbGFncyAmYW1wOyAoVk1fUEZOTUFQfFZNX01JWEVETUFQKSkgPT0KJiM0MzsJCQkJCQkoVk1fUEZOTUFQfFZNX01JWEVETUFQKSk7CiYjNDM7CUJVR19PTigodm1hLSZndDt2bV9mbGFncyAmYW1wOyBWTV9QRk5NQVApICZhbXA7JmFtcDsgaXNfY293X21hcHBpbmcodm1hLSZndDt2bV9mbGFncykpOwomIzQzOwlCVUdfT04oKHZtYS0mZ3Q7dm1fZmxhZ3MgJmFtcDsgVk1fTUlYRURNQVApICZhbXA7JmFtcDsgcGZuX3ZhbGlkKHBmbikpOwomIzQzOwomIzQzOwlpZiAoYWRkciAmbHQ7IHZtYS0mZ3Q7dm1fc3RhcnQgfHwgYWRkciAmZ3Q7PSB2bWEtJmd0O3ZtX2VuZCkKJiM0MzsJCXJldHVybiBWTV9GQVVMVF9TSUdCVVM7CiYjNDM7CiYjNDM7CWlmICghcGZuX21vZGlmeV9hbGxvd2VkKHBmbiwgcGdwcm90KSkKJiM0MzsJCXJldHVybiBWTV9GQVVMVF9TSUdCVVM7CiYjNDM7CiYjNDM7CXBmbm1hcF9zZXR1cF9jYWNoZW1vZGVfcGZuKHBmbiwgJmFtcDtwZ3Byb3QpOwomIzQzOwomIzQzOwlyZXR1cm4gaW5zZXJ0X3Bmbih2bWEsIGFkZHIsIHBmbiwgcGdwcm90LCBta3dyaXRlKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTChfX3ZtZl9pbnNlcnRfcGZuX3Byb3QpOwomIzQzOwogLyoqCiAgKiB2bWZfaW5zZXJ0X3Bmbl9wcm90IC0gaW5zZXJ0IHNpbmdsZSBwZm4gaW50byB1c2VyIHZtYSB3aXRoIHNwZWNpZmllZCBwZ3Byb3QKICAqIEB2bWE6IHVzZXIgdm1hIHRvIG1hcCB0bwpAQCAtMjc1NCwyNyAmIzQzOzI3ODIsNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBpbnNlcnRfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCiB2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuX3Byb3Qoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkciwKIAkJCXVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwZ3Byb3QpCiB7Ci0JLyoKLQkgKiBUZWNobmljYWxseSwgYXJjaGl0ZWN0dXJlcyB3aXRoIHB0ZV9zcGVjaWFsIGNhbiBhdm9pZCBhbGwgdGhlc2UKLQkgKiByZXN0cmljdGlvbnMgKHNhbWUgZm9yIHJlbWFwX3Bmbl9yYW5nZSkuICBIb3dldmVyIHdlIHdvdWxkIGxpa2UKLQkgKiBjb25zaXN0ZW5jeSBpbiB0ZXN0aW5nIGFuZCBmZWF0dXJlIHBhcml0eSBhbW9uZyBhbGwsIHNvIHdlIHNob3VsZAotCSAqIHRyeSB0byBrZWVwIHRoZXNlIGludmFyaWFudHMgaW4gcGxhY2UgZm9yIGV2ZXJ5Ym9keS4KLQkgKi8KLQlCVUdfT04oISh2bWEtJmd0O3ZtX2ZsYWdzICZhbXA7IChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKSk7Ci0JQlVHX09OKCh2bWEtJmd0O3ZtX2ZsYWdzICZhbXA7IChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKSA9PQotCQkJCQkJKFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpOwotCUJVR19PTigodm1hLSZndDt2bV9mbGFncyAmYW1wOyBWTV9QRk5NQVApICZhbXA7JmFtcDsgaXNfY293X21hcHBpbmcodm1hLSZndDt2bV9mbGFncykpOwotCUJVR19PTigodm1hLSZndDt2bV9mbGFncyAmYW1wOyBWTV9NSVhFRE1BUCkgJmFtcDsmYW1wOyBwZm5fdmFsaWQocGZuKSk7Ci0KLQlpZiAoYWRkciAmbHQ7IHZtYS0mZ3Q7dm1fc3RhcnQgfHwgYWRkciAmZ3Q7PSB2bWEtJmd0O3ZtX2VuZCkKLQkJcmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKLQotCWlmICghcGZuX21vZGlmeV9hbGxvd2VkKHBmbiwgcGdwcm90KSkKLQkJcmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKLQotCXBmbm1hcF9zZXR1cF9jYWNoZW1vZGVfcGZuKHBmbiwgJmFtcDtwZ3Byb3QpOwotCi0JcmV0dXJuIGluc2VydF9wZm4odm1hLCBhZGRyLCBwZm4sIHBncHJvdCwgZmFsc2UpOwomIzQzOwlyZXR1cm4gX192bWZfaW5zZXJ0X3Bmbl9wcm90KHZtYSwgYWRkciwgcGZuLCBwZ3Byb3QsIGZhbHNlKTsKIH0KIEVYUE9SVF9TWU1CT0wodm1mX2luc2VydF9wZm5fcHJvdCk7CiAKQEAgLTI4MDUsNiAmIzQzOzI4MTMsMzEgQEAgdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLAogfQogRVhQT1JUX1NZTUJPTCh2bWZfaW5zZXJ0X3Bmbik7CiAKJiM0MzsvKioKJiM0MzsgKiB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlIC0gaW5zZXJ0IHNpbmdsZSBwZm4gaW50byB1c2VyIHZtYSwgcG9zc2libHkgd3JpdGFibGUKJiM0MzsgKiBAdm1hOiB1c2VyIHZtYSB0byBtYXAgdG8KJiM0MzsgKiBAYWRkcjogdGFyZ2V0IHVzZXIgYWRkcmVzcyBvZiB0aGlzIHBhZ2UKJiM0MzsgKiBAcGZuOiBzb3VyY2Uga2VybmVsIHBmbgomIzQzOyAqIEB3cml0ZTogd2hldGhlciB0aGUgUFRFIHNob3VsZCBiZSBpbnN0YWxsZWQgd3JpdGFibGUKJiM0MzsgKgomIzQzOyAqIExpa2Ugdm1mX2luc2VydF9wZm4oKSwgZXhjZXB0IHRoYXQgQHdyaXRlIGFsbG93cyBpbnN0YWxsaW5nIGEgd3JpdGFibGUKJiM0MzsgKiBQVEUgZXZlbiB3aGVuIEB2bWEgaXMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uLCBpLmUuIHdoZW4gaXQgaGFzIGEKJiM0MzsgKiAucGFnZV9ta3dyaXRlKCkgb3IgLnBmbl9ta3dyaXRlKCkgY2FsbGJhY2sgYW5kIHZtYV9zZXRfcGFnZV9wcm90KCkgaGFzCiYjNDM7ICogdGhlcmVmb3JlIGNsZWFyZWQgdGhlIHdyaXRlIGJpdCBmcm9tIEB2bWEtJmd0O3ZtX3BhZ2VfcHJvdC4KJiM0MzsgKgomIzQzOyAqIE5vdGUgdGhhdCBuZWl0aGVyIG9mIHRoZXNlIGNhbGxiYWNrcyBpcyBpbnZva2VkLCBzbyB0aGUgY2FsbGVyIG11c3QKJiM0MzsgKiBpdHNlbGYgZG8gd2hhdGV2ZXIgdGhleSB3b3VsZCBoYXZlIGRvbmUgaWYgQHdyaXRlIGlzIHRydWUuCiYjNDM7ICoKJiM0MzsgKiBDb250ZXh0OiBQcm9jZXNzIGNvbnRleHQuICBNYXkgYWxsb2NhdGUgdXNpbmcgJUdGUF9LRVJORUwuCiYjNDM7ICogUmV0dXJuOiB2bV9mYXVsdF90IHZhbHVlLgomIzQzOyAqLwomIzQzO3ZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm5fbWt3cml0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLAomIzQzOwkJCXVuc2lnbmVkIGxvbmcgcGZuLCBib29sIHdyaXRlKQomIzQzO3sKJiM0MzsJcmV0dXJuIF9fdm1mX2luc2VydF9wZm5fcHJvdCh2bWEsIGFkZHIsIHBmbiwgdm1hLSZndDt2bV9wYWdlX3Byb3QsIHdyaXRlKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTCh2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlKTsKJiM0MzsKIHN0YXRpYyBib29sIHZtX21peGVkX29rKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHBmbiwKIAkJCWJvb2wgbWt3cml0ZSkKIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI0MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDM1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBmb3IgV3JpdGVhYmxlIFBURSBJbnNlcnRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBpbnRlcmVzdGluZy4gSXQmIzM5O3MgdG91Y2hpbmcgc29tZSBwcmV0dHkgZnVuZGFtZW50YWwgYXJlYXM6IHRoZSBEUk0gR0VNIHNobWVtIGhlbHBlciwgdGhlIFRUTSBCTyBWTSwgVk1XZ2Z4LCBhbmQgZXZlbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IChgbW0vbWVtb3J5LmNgKS4gVGhlIGtleSBzZWVtcyB0byBiZSB0aGVzZSBuZXcgZnVuY3Rpb25zLCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCBhbmQgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgLiBUaGV5JiMzOTtyZSBiZWluZyBpbnRyb2R1Y2VkIHRvIGhhbmRsZSBzaXR1YXRpb25zIHdoZXJlIHdlIG5lZWQgdG8gaW5zZXJ0IGEgKndyaXRhYmxlKiBQVEUsIGV2ZW4gd2hlbiB0aGUgVk1BIGlzIHVuZGVyIHdyaXRlIG5vdGlmaWNhdGlvbiDigJMgdGhhdCBgLnBmbl9ta3dyaXRlYCBjYWxsYmFjayBzaXR1YXRpb24uIFJpZ2h0LCB0aGUgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBpc3N1ZS4gYHZtZl9pbnNlcnRfcGZuYCB3YXMgaW5zdGFsbGluZyBhIHJlYWQtb25seSBlbnRyeSBvbiBhIHdyaXRlIGZhdWx0LCBob3BpbmcgZm9yIGEgc2Vjb25kIGZhdWx0IHRvIHRyaWdnZXIgdGhlIGAucGZuX21rd3JpdGVgIHVwZ3JhZGUsIGJ1dCB0aGF0IHdhc24mIzM5O3QgYWx3YXlzIGhhcHBlbmluZyBpbiBzY2VuYXJpb3MgbGlrZSBkaXJlY3QgcGFnZSB0YWJsZSB3YWxrcyB3aXRoIGBmaXh1cF91c2VyX2ZhdWx0YC4KCkZpcnN0LCBsZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaXMgZXZlbiByZWxldmFudCBhbmQgaWYgaXQmIzM5O3MgZ29pbmcgdG8gd29yay4gWWVzLCB0aGlzIGRlZmluaXRlbHkgaGl0cyBzb21lIGNvcmUgTU0gYW5kIERSTSBkcml2ZXIgY29kZS4gSXQmIzM5O3MgbW9kaWZ5aW5nIGNvZGUgaW4gcGxhY2VzIHRoYXQgYXJlIGNyaXRpY2FsIHRvIERSTSBkcml2ZXJzLCBpbmNsdWRpbmcgdmdlbSwgdmlydGlvLWdwdSwgYW5kIHZtd2dmeCwgYW5kIHRoZSBjb21tb24gc2htZW0gaGVscGVyLiBgZHJtX2dlbV9zaG1lbV9oZWxwZXIuY2AgaXMgaGVhdmlseSB1c2VkLCBhcyBpcyBgdHRtX2JvX3ZtLmNgLCBzbyBhIGZpeCBoZXJlIGhhcyB0aGUgcG90ZW50aWFsIGZvciBicm9hZCBpbXBhY3QuCgpOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBDT05GSUdfRFJNYCwgYENPTkZJR19EUk1fVk1XR0ZYYCwgYENPTkZJR19EUk1fVFRNYCwgYW5kIGBDT05GSUdfRFJNX0dFTV9TSE1FTV9IRUxQRVJgLiBXYWl0LCBgZHJtX2dlbV9zaG1lbV9oZWxwZXJgIGlzIHNlbGVjdGVkIGJ5ICphIGxvdCogb2YgZHJpdmVycy4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IEtjb25maWcgZmlsZSBpbiBgZHJpdmVycy9ncHUvZHJtL2AgdG8gYmUgY2VydGFpbi4gR290dGEgYmUgcHJlY2lzZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUk1fVk1XR0ZYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzoyOmNvbmZpZyBEUk1fVk1XR0ZYXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0RSTSBkcml2ZXIgZm9yIFZNd2FyZSBWaXJ0dWFsIEdQVVwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZy0xOS1cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzoyMDpjb25maWcgRFJNX1ZNV0dGWF9NS1NTVEFUU1xuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWtzR3Vlc3RTdGF0cyBpbnN0cnVtZW50YXRpb24gb2Ygdm13Z2Z4IGJ5IGRlZmF1bHRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjQwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSByb2xlIG9mIHRoZSB0aGlua2luZyBwcm9jZXNzIGRlc2NyaWJlZDoKCioqSW52ZXN0aWdhdGluZyBHRU1fU0hNRU1fSEVMUEVSIGluIHRoZSBEUk0gS2NvbmZpZyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB3b3JrLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYEdFTV9TSE1FTV9IRUxQRVJgIHRoaW5nLiBXaGVyZSB3b3VsZCB0aGUgZGVmaW5pdGlvbiBvZiB0aGF0IGJlLCBpbiB0aGUgdmFzdCBMaW51eCBrZXJuZWwgY29kZWJhc2U/IExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UsIHRoZSBoZWFydCBvZiB0aGUgZ3JhcGhpY3MgZHJpdmVyIGluZnJhc3RydWN0dXJlOiBgZHJpdmVycy9ncHUvZHJtL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyIChEUk0pIGRyaXZlcnMgYXJlIGxpa2VseSBkZWZpbmVkLiBJIG5lZWQgdG8gZGVsdmUgaW50byB0aGF0IEtjb25maWcgZmlsZSBhbmQgc2VlIHdoYXQgaW5mb3JtYXRpb24gaXQgaG9sZHMgcmVnYXJkaW5nIGBHRU1fU0hNRU1fSEVMUEVSYC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUk1fR0VNX1NITUVNX0hFTFBFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTI2MD1jb25maWcgRFJNX0dFTV9ETUFfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjY4LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjY5OmNvbmZpZyBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjcwLVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTU4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYSBUcmlzdGF0ZSBTZWxlY3RvcioqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7dmUgZ290IGEgdHJpc3RhdGUgaGVyZSwgYW5kIGl0IHNlZW1zIHRvIGJlIGRyaXZlbiBieSBzb21ldGhpbmcgZXh0ZXJuYWwsIHNvbWUgb3RoZXIgcGllY2Ugb2YgdGhlIHN5c3RlbSDigJMgZHJpdmVycywgcHJvYmFibHkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIHdobyYjMzk7cyBpbiBjaGFyZ2Ugb2Ygc2VsZWN0aW5nIHRoaXMgdGhpbmc/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgdGhlIGRlcGVuZGVuY2llcy4gVGhpcyBpcyBhIGNydWNpYWwgZmlyc3Qgc3RlcC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGlzIHRyaXN0YXRlIGFuZCBwaW5wb2ludCB0aGUgc2VsZWN0IHNpZ25hbC4gV2hlcmUgaXMgaXQgY29taW5nIGZyb20/IFdoYXQgYXJlIHRoZSBjb25kaXRpb25zIHRoYXQgdHJpZ2dlciB0aGUgZGlmZmVyZW50IHN0YXRlcz8gSXMgaXQgYSBzaW1wbGUgc3RhdGUgbWFjaGluZT8gSXMgdGhlcmUgYSBiaXQgb2YgYXN5bmNocm9ub3VzIGxvZ2ljIGF0IHBsYXk/IFRoaXMgaXMgaG93IEkmIzM5O2xsIGJlZ2luIG15IGludmVzdGlnYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBhc3NlcnRpbmcgdGhlc2Ugc3RhdGVzIGFuZCB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTI3OD1jb25maWcgUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI4MC1cdGRlcGVuZHMgb24gRFJNIFx1MDAyNlx1MDAyNiBNTVVcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI4MTpcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjgyLVx0aGVscFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnPTYwPWNvbmZpZyBEUk1fS1VOSVRfVEVTVFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTY5LVx0c2VsZWN0IERSTV9FWFBPUlRfRk9SX1RFU1RTIGlmIG1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjcwOlx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy03MS1cdHNlbGVjdCBEUk1fS1VOSVRfVEVTVF9IRUxQRVJTXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FzdC9LY29uZmlnPTI9Y29uZmlnIERSTV9BU1Rcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYXN0L0tjb25maWctNS1cdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxuZHJpdmVycy9ncHUvZHJtL2FzdC9LY29uZmlnOjY6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9hc3QvS2NvbmZpZy03LVx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL2d1ZC9LY29uZmlnPTM9Y29uZmlnIERSTV9HVURcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZ3VkL0tjb25maWctOC1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL2d1ZC9LY29uZmlnOjk6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9ndWQvS2NvbmZpZy0xMC1cdHNlbGVjdCBCQUNLTElHSFRfQ0xBU1NfREVWSUNFXG4tLVxuZHJpdmVycy9ncHUvZHJtL2h5cGVydi9LY29uZmlnPTI9Y29uZmlnIERSTV9IWVBFUlZcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaHlwZXJ2L0tjb25maWctNi1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL2h5cGVydi9LY29uZmlnOjc6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9oeXBlcnYvS2NvbmZpZy04LVx0aGVscFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9LY29uZmlnPTQ9Y29uZmlnIERSTV9QT1dFUlZSXG4tLVxuZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL0tjb25maWctMTEtXHRzZWxlY3QgRFJNX0VYRUNcbmRyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9LY29uZmlnOjEyOlx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vS2NvbmZpZy0xMy1cdHNlbGVjdCBEUk1fU0NIRURcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbGltYS9LY29uZmlnPTQ9Y29uZmlnIERSTV9MSU1BXG4tLVxuZHJpdmVycy9ncHUvZHJtL2xpbWEvS2NvbmZpZy0xMS0gICAgICAgc2VsZWN0IERSTV9TQ0hFRFxuZHJpdmVycy9ncHUvZHJtL2xpbWEvS2NvbmZpZzoxMjogICAgICAgc2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vbGltYS9LY29uZmlnLTEzLSAgICAgICBzZWxlY3QgUE1fREVWRlJFUVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL0tjb25maWc9Mj1jb25maWcgRFJNX01HQUcyMDBcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9LY29uZmlnLTUtXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cbmRyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL0tjb25maWc6NjpcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvS2NvbmZpZy03LVx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L0tjb25maWc9Mz1jb25maWcgRFJNX1BBTkZST1NUXG4tLVxuZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L0tjb25maWctMTEtXHRzZWxlY3QgSU9NTVVfSU9fUEdUQUJMRV9MUEFFXG5kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvS2NvbmZpZzoxMjpcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L0tjb25maWctMTMtXHRzZWxlY3QgUE1fREVWRlJFUVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9zaXRyb25peC9LY29uZmlnPTE9Y29uZmlnIERSTV9TVDc1NzFcbi0tXG5kcml2ZXJzL2dwdS9kcm0vc2l0cm9uaXgvS2NvbmZpZy00LVx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXG5kcml2ZXJzL2dwdS9kcm0vc2l0cm9uaXgvS2NvbmZpZzo1Olx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vc2l0cm9uaXgvS2NvbmZpZy02LVx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL3NpdHJvbml4L0tjb25maWc9NzE9Y29uZmlnIERSTV9TVDc5MjBcbi0tXG5kcml2ZXJzL2dwdS9kcm0vc2l0cm9uaXgvS2NvbmZpZy03My1cdGRlcGVuZHMgb24gRFJNIFx1MDAyNlx1MDAyNiBTUEkgXHUwMDI2XHUwMDI2IE1NVVxuZHJpdmVycy9ncHUvZHJtL3NpdHJvbml4L0tjb25maWc6NzQ6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9zaXRyb25peC9LY29uZmlnLTc1LVx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL3NvbG9tb24vS2NvbmZpZz0xPWNvbmZpZyBEUk1fU1NEMTMwWFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9zb2xvbW9uL0tjb25maWctNS1cdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxuZHJpdmVycy9ncHUvZHJtL3NvbG9tb24vS2NvbmZpZzo2Olx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vc29sb21vbi9LY29uZmlnLTctXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZz0xMD1jb25maWcgRFJNX0NPUkVCT09URFJNXG4tLVxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctMTUtXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnOjE2Olx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy0xNy1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnPTI2PWNvbmZpZyBEUk1fRUZJRFJNXG4tLVxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctMzAtXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnOjMxOlx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy0zMi1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnPTQyPWNvbmZpZyBEUk1fT0ZEUk1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy00Ni1cdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWc6NDc6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnLTQ4LVx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWc9NTc9Y29uZmlnIERSTV9TSU1QTEVEUk1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy02MS1cdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWc6NjI6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnLTYzLVx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWc9NzY9Y29uZmlnIERSTV9WRVNBRFJNXG4tLVxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctODAtXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnOjgxOlx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy04Mi1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc9Mz1jb25maWcgRFJNX0FQUExFVEJEUk1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTYtXHRkZXBlbmRzIG9uIFg4NiB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc6NzpcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy04LVx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZz0yNz1jb25maWcgRFJNX0JPQ0hTXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy0zMC1cdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZzozMTpcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy0zMi1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc9Mzk9Y29uZmlnIERSTV9DSVJSVVNfUUVNVVxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctNDMtXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc6NDQ6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctNDUtXHRoZWxwXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZz01OT1jb25maWcgRFJNX0dNMTJVMzIwXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy02My1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZzo2NDpcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy02NS1cdGhlbHBcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnPTg1PWNvbmZpZyBEUk1fUElYUEFQRVJcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTg5LSAgICAgICAgc2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnOjkwOiAgICAgICAgc2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTkxLSAgICAgICAgc2VsZWN0IERSTV9LTVNfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL3VkbC9LY29uZmlnPTI9Y29uZmlnIERSTV9VRExcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdWRsL0tjb25maWctOC1cdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxuZHJpdmVycy9ncHUvZHJtL3VkbC9LY29uZmlnOjk6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS91ZGwvS2NvbmZpZy0xMC1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS92M2QvS2NvbmZpZz0yPWNvbmZpZyBEUk1fVjNEXG4tLVxuZHJpdmVycy9ncHUvZHJtL3YzZC9LY29uZmlnLTgtXHRzZWxlY3QgRFJNX1NDSEVEXG5kcml2ZXJzL2dwdS9kcm0vdjNkL0tjb25maWc6OTpcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3YzZC9LY29uZmlnLTEwLVx0aGVscFxuLS1cbmRyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWc9Mj1jb25maWcgRFJNX1ZHRU1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmdlbS9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIERSTSBcdTAwMjZcdTAwMjYgTU1VXG5kcml2ZXJzL2dwdS9kcm0vdmdlbS9LY29uZmlnOjU6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWctNi1cdGhlbHBcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWc9Mj1jb25maWcgRFJNX1ZJUlRJT19HUFVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWctNy1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3ZpcnRpby9LY29uZmlnOjg6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vS2NvbmZpZy05LVx0c2VsZWN0IFZJUlRJT19ETUFfU0hBUkVEX0JVRkZFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc9Mz1jb25maWcgRFJNX1ZLTVNcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTctXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc6ODpcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy05LVx0c2VsZWN0IENSQzMyXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0NzEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIERSTSBNb2R1bGUgU2VsZWN0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGVuYWJsaW5nIGEgZmV3IERSTSBtb2R1bGVzIGhlcmU6IGBEUk1fVkdFTWAsIGBEUk1fVklSVElPX0dQVWAsIGBEUk1fVktNU2AsIGFuZCBgRFJNX1ZNV0dGWGAuIFNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHN0YXJ0aW5nIHBvaW50LCBnaXZlbiB0aGUgZGlmZmVyZW50IHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aGV5IHN1cHBvcnQuIEFjdHVhbGx5LCBob2xkIG9uIOKAkyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGZ1enppbmcgbm93LiBJIGtub3cgdGhhdCBgRFJNX1ZHRU1gIGFuZCBgRFJNX1ZLTVNgIGFyZSBwYXJ0aWN1bGFybHkgdmFsdWFibGUgaW4gdGhhdCBjb250ZXh0IGR1ZSB0byB0aGVpciBhcmNoaXRlY3R1cmVzLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoYXQgYERSTV9UVE1gIGlzIHNlbGVjdGVkIHdpdGggdGhlbSB0b28sIGFzIHRoYXQgY291bGQgY2F1c2UgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgRFJNX1RUTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MjUwPWNvbmZpZyBEUk1fVFRNX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI1Mi1cdGRlcGVuZHMgb24gRFJNXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyNTM6XHRzZWxlY3QgRFJNX1RUTVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjU0LVx0c2VsZWN0IERSTV9LTVNfSEVMUEVSIGlmIERSTV9GQkRFVl9FTVVMQVRJT05cbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zz04Nj1jb25maWcgRFJNX1RUTV9LVU5JVF9URVNUXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctODgtXHRkZXBlbmRzIG9uIERSTSBcdTAwMjZcdTAwMjYgS1VOSVQgXHUwMDI2XHUwMDI2IE1NVSBcdTAwMjZcdTAwMjYgKFVNTCB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zzo4OTpcdHNlbGVjdCBEUk1fVFRNXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy05MC1cdHNlbGVjdCBEUk1fQlVERFlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnPTM9Y29uZmlnIERSTV9BTURHUFVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTE1LVx0c2VsZWN0IERSTV9TQ0hFRFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZzoxNjpcdHNlbGVjdCBEUk1fVFRNXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnOjE3Olx0c2VsZWN0IERSTV9UVE1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTE4LVx0c2VsZWN0IFBPV0VSX1NVUFBMWVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvS2NvbmZpZz0yPWNvbmZpZyBEUk1fSElTSV9ISUJNQ1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvS2NvbmZpZy05LVx0c2VsZWN0IERSTV9WUkFNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9LY29uZmlnOjEwOlx0c2VsZWN0IERSTV9UVE1cbmRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvS2NvbmZpZzoxMTpcdHNlbGVjdCBEUk1fVFRNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9LY29uZmlnLTEyLVx0c2VsZWN0IEkyQ1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWc9Mj1jb25maWcgRFJNX0k5MTVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLTM5LVx0c2VsZWN0IFZNQVBfUEZOXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnOjQwOlx0c2VsZWN0IERSTV9UVE1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWctNDEtXHRzZWxlY3QgRFJNX0JVRERZXG4tLVxuZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL0tjb25maWc9Mz1jb25maWcgRFJNX0xPT05HU09OXG4tLVxuZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL0tjb25maWctOC1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL0tjb25maWc6OTpcdHNlbGVjdCBEUk1fVFRNXG5kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vS2NvbmZpZzoxMDpcdHNlbGVjdCBEUk1fVFRNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL0tjb25maWctMTEtXHRzZWxlY3QgSTJDXG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZz0yPWNvbmZpZyBEUk1fTk9VVkVBVVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWctMTItXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWc6MTM6XHRzZWxlY3QgRFJNX1RUTVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZzoxNDpcdHNlbGVjdCBEUk1fVFRNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZy0xNS1cdHNlbGVjdCBEUk1fRVhFQ1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZz0yPWNvbmZpZyBEUk1fUVhMXG4tLVxuZHJpdmVycy9ncHUvZHJtL3F4bC9LY29uZmlnLTYtXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZzo3Olx0c2VsZWN0IERSTV9UVE1cbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZzo4Olx0c2VsZWN0IERSTV9UVE1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vcXhsL0tjb25maWctOS1cdHNlbGVjdCBEUk1fRVhFQ1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZz0zPWNvbmZpZyBEUk1fUkFERU9OXG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnLTEyLVx0c2VsZWN0IERSTV9TVUJBTExPQ19IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZzoxMzogICAgICAgIHNlbGVjdCBEUk1fVFRNXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL0tjb25maWc6MTQ6XHRzZWxlY3QgRFJNX1RUTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZy0xNS1cdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTIGlmIERSTV9GQkRFVl9FTVVMQVRJT05cbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL0tjb25maWc9Mj1jb25maWcgRFJNX1ZCT1hWSURFT1xuLS1cbmRyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vS2NvbmZpZy03LVx0c2VsZWN0IERSTV9WUkFNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnOjg6XHRzZWxlY3QgRFJNX1RUTVxuZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnOjk6XHRzZWxlY3QgRFJNX1RUTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vS2NvbmZpZy0xMC1cdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZz0yPWNvbmZpZyBEUk1fVk1XR0ZYXG4tLVxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTYtXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzo3Olx0c2VsZWN0IERSTV9UVE1cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzo4Olx0c2VsZWN0IERSTV9UVE1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctOS1cdHNlbGVjdCBNQVBQSU5HX0RJUlRZX0hFTFBFUlNcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZz0yPWNvbmZpZyBEUk1fWEVcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy0zOC1cdHNlbGVjdCBWTUFQX1BGTlxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6Mzk6XHRzZWxlY3QgRFJNX1RUTVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6NDA6XHRzZWxlY3QgRFJNX1RUTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTQxLVx0c2VsZWN0IERSTV9FWEVDXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMTI3CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEUk0gRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBzZWUgd2UmIzM5O3JlIGVuYWJsaW5nIGEgYnVuY2ggb2YgRFJNIGRyaXZlcnM6IERSTV9WR0VNLCBEUk1fVktNUywgRFJNX1FYTCwgRFJNX1ZCT1hWSURFTywgYW5kIERSTV9WTVdHRlguIFRoZXNlIGFsbCBzZWVtIHRvIGRlcGVuZCBvbiBEUk1fVFRNLiBNYWtlcyBzZW5zZS4gTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgZnVuY3Rpb24gbW9kaWZpY2F0aW9ucyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjb25maWd1cmF0aW9uLgoKUmlnaHQsIEkmIzM5O20gc2VlaW5nIGNoYW5nZXMgaW46IGBkcm1fZ2VtX3NobWVtX3JlY29yZF9ta3dyaXRlYCwgYHRyeV9pbnNlcnRfcGZuYCwgYGRybV9nZW1fc2htZW1fYW55X2ZhdWx0YCwgYHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZGAsIGB2bXdfYm9fZGlydHlfbWt3cml0ZWAsIGB2bXdfYm9fdm1fbWt3cml0ZWAsIGB2bXdfYm9fdm1fZmF1bHRgLCBgdm1mX2luc2VydF9wZm5fbWt3cml0ZWAsIGBfX3ZtZl9pbnNlcnRfcGZuX3Byb3RgLCBgdm1mX2luc2VydF9wZm5fcHJvdGAsIGFuZCBgdm1mX2luc2VydF9wZm5gLiBUaGF0JiMzOTtzIGEgZGVjZW50LXNpemVkIGxpc3Q7IGRlZmluaXRlbHkgaW52b2x2aW5nIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBmYXVsdCBoYW5kbGluZy4KCkhtbSwgd2FpdCBhIHNlY29uZC4uLiBgdHJ5X2luc2VydF9wZm5gIGlzIGEgc3RhdGljIGZ1bmN0aW9uIGluIGBkcm1fZ2VtX3NobWVtX2hlbHBlci5jYC4gT2theSwgc28gaXQgbWlnaHQgYmUgYSBsb2NhbCBoZWxwZXIuIEFuZCwgaXMgYGRybV9nZW1fc2htZW1fYW55X2ZhdWx0YCBhbHNvIHN0YXRpYyBpbiBgZHJtX2dlbV9zaG1lbV9oZWxwZXIuY2A/IE5vLCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGp1c3QgY29udGV4dHVhbGx5IHJlbGV2YW50IGhlcmUsIG5vdCBhY3R1YWxseSBtb2RpZmllZC4gT2theSwgbGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgZHJtX2dlbV9zaG1lbV9oZWxwZXIuY2AgdG8gc2VlIGhvdyB0aGlzIGFmZmVjdHMgdGhlIG92ZXJhbGwgZmxvdy4gTmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMgYXJlIGJlaW5nIGNoYW5nZWQgYnkgdGhpcyBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkcm1fZ2VtX3NobWVtX2FueV9mYXVsdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTYwMz1zdGF0aWMgdm1fZmF1bHRfdCB0cnlfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTYyOC1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjYyOTpzdGF0aWMgdm1fZmF1bHRfdCBkcm1fZ2VtX3NobWVtX2FueV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgdW5zaWduZWQgaW50IG9yZGVyKVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNjMwLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz02Njk9c3RhdGljIHZtX2ZhdWx0X3QgZHJtX2dlbV9zaG1lbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTY3MC17XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo2NzE6XHRyZXR1cm4gZHJtX2dlbV9zaG1lbV9hbnlfZmF1bHQodm1mLCAwKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTY3Mi19XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9NzE0PWNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBkcm1fZ2VtX3NobWVtX3ZtX29wcyA9IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03MTYtI2lmZGVmIENPTkZJR19BUkNIX1NVUFBPUlRTX1BNRF9QRk5NQVBcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjcxNzpcdC5odWdlX2ZhdWx0ID0gZHJtX2dlbV9zaG1lbV9hbnlfZmF1bHQsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03MTgtI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMjU3CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRpdmluZyBpbnRvIHRoZSBNZW1vcnkgRmF1bHQqKgoKQWxyaWdodCwgdGhlIGxpa2VseSBjdWxwcml0IGZvciB0aGlzIG1lbW9yeSBpc3N1ZSBpcyBgZHJtX2dlbV9zaG1lbV9mYXVsdGAuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IHRvIGludmVzdGlnYXRlLCBhbmQgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGRlZXAgZGl2ZS4gSSBrbm93IHRoYXQgZnVuY3Rpb24gd2VsbC4gTm93LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGB0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWRgIGZ1bmN0aW9uIGl0IGNhbGxzLCB0byBzZWUgd2hhdCBraW5kIG9mIHJlc2VydmF0aW9uIGlzIHRha2luZyBwbGFjZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoYXQgcmVzb3VyY2VzIGFyZSBpbiBwbGF5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmM9MTYzPUVYUE9SVF9TWU1CT0wodHRtX2JvX3ZtX3Jlc2VydmUpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMtMTY1LS8qKlxuZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYzoxNjY6ICogdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkIC0gVFRNIGZhdWx0IGhlbHBlclxuZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYy0xNjctICogQHZtZjogVGhlIHN0cnVjdCB2bV9mYXVsdCBnaXZlbiBhcyBhcmd1bWVudCB0byB0aGUgZmF1bHQgY2FsbGJhY2tcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jLTE4Mi0gKi9cbmRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmM6MTgzOnZtX2ZhdWx0X3QgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHN0cnVjdCB2bV9mYXVsdCAqdm1mLFxuZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYy0xODQtXHRcdFx0XHQgICAgcGdwcm90X3QgcHJvdCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jLTI4Mi19XG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jOjI4MzpFWFBPUlRfU1lNQk9MKHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZCk7XG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jLTI4NC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jPTMyMj12bV9mYXVsdF90IHR0bV9ib192bV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jLTMzNS1cdGlmIChkcm1fZGV2X2VudGVyKGJvLVx1MDAzZWJhc2UuZGV2LCBcdTAwMjZpZHgpKSB7XG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jOjMzNjpcdFx0cmV0ID0gdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHZtZiwgcHJvdCwgVFRNX0JPX1ZNX05VTV9QUkVGQVVMVCk7XG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jLTMzNy1cdFx0ZHJtX2Rldl9leGl0KGlkeCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzOTgzCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIE1lbW9yeSBNYW5hZ2VtZW50IEZhdWx0KioKCk9rYXksIHNvIHdlJiMzOTt2ZSBoaXQgYSBgdHRtX2JvX3ZtX2ZhdWx0YCwgd2hpY2ggaXMgb3VyIGVudHJ5IHBvaW50IGhlcmUuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBUaGUgZmlyc3QgdGhpbmdzIEkgbmVlZCB0byBleGFtaW5lIGFyZSBgdm13X2JvX3ZtX21rd3JpdGVgIGFuZCBgdm13X2JvX3ZtX2ZhdWx0YC4gVGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIGxpa2VseSBpbnZvbHZlZCBpbiBoYW5kbGluZyB0aGlzIHZpcnR1YWwgbWVtb3J5IGZhdWx0IHdpdGhpbiB0aGUgZ3JhcGhpY3MgY29udGV4dC4gSSBzdXNwZWN0IHRoZSBjb3JlIGlzc3VlIGlzIGdvaW5nIHRvIGJlIHdpdGhpbiB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGVzZSB0d28gZnVuY3Rpb25zIGFuZCBob3cgdGhleSYjMzk7cmUgbWFuYWdpbmcgYnVmZmVyIG9iamVjdCB3cml0ZSBhY2Nlc3MgYW5kIGZhdWx0IGhhbmRsaW5nIHdpdGhpbiB0aGUgVk13YXJlIGVudmlyb25tZW50LiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgdW5kZXJzdGFuZCB0aGUgbWVtb3J5IG1hcHBpbmcgcHJvY2Vzcy4gSXQmIzM5O3MgbGlrZWx5IHJlbGF0ZWQgdG8gaG93IHRoZSBidWZmZXIgb2JqZWN0IGlzIG1hcHBlZCBmb3Igd3JpdGluZyBhbmQgdGhlbiB0aGUgZmF1bHQgaGFuZGxpbmcgdGhhdCBraWNrcyBpbiB3aGVuIGEgd3JpdGUgYXR0ZW1wdCBpcyBtYWRlLiBUaGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlc2UgdHdvIGZ1bmN0aW9ucyB3aWxsIGJlIHRoZSBjcnV4IG9mIHRoZSBwcm9ibGVtLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm13X2JvX3ZtX21rd3JpdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jPTQwMT1zdGF0aWMgdm1fZmF1bHRfdCB2bXdfYm9fZGlydHlfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmMtNDIwLVxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jOjQyMTp2bV9mYXVsdF90IHZtd19ib192bV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jLTQyMi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDUyCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgdm13X2JvX3ZtX2ZhdWx0YCBQYXRoKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgdm13X2JvX3ZtX2ZhdWx0YCBmdW5jdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVudGFsIG1hcCBvZiBob3cgdGhpcyB0aGluZyBvcGVyYXRlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgbWVudGFsbHkgcmVjb25zdHJ1Y3QgdGhlIGV4ZWN1dGlvbiBwYXRoLiBXaGF0IGFyZSB0aGUgbGlrZWx5IHRyaWdnZXJzPyBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSB1c3VhbCBzdXNwZWN0czogbWVtb3J5IGFjY2VzcyB2aW9sYXRpb25zIHdpdGhpbiBhIGd1ZXN0IFZNLCBwb3RlbnRpYWwgaXNzdWVzIHdpdGggYnVmZmVyIG9iamVjdHMgKEJPcykgbWFwcGluZywgYW5kIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBob3N0JiMzOTtzIG1lbW9yeSBtYW5hZ2VtZW50LiBXaGVyZSBhcmUgdGhlIGxpa2VseSBwb2ludHMgb2YgY29udGVudGlvbiBvciBwb3RlbnRpYWwgYm90dGxlbmVja3M/IEFtIEkgbG9va2luZyBmb3IgYSBzdHJhaWdodGZvcndhcmQgc2VnbWVudGF0aW9uIGZhdWx0LCBvciBzb21ldGhpbmcgbW9yZSBudWFuY2VkIGxpa2UgYSBwYWdlIHRhYmxlIHdhbGsgaXNzdWU/IEkgc2hvdWxkIGtlZXAgYW4gZXllIG91dCBmb3IgcG90ZW50aWFsIHJhY2VzIG9yIGxvY2sgY29udGVudGlvbiBwb2ludHMgd2l0aGluIHRoZSBzdXJyb3VuZGluZyBWTSBvciBob3N0IGNvZGUgcGF0aHMuIEEgcXVpY2sgbWVudGFsIHdhbGt0aHJvdWdoIG9mIHRoZSBjb2RlJiMzOTtzIGNhbGwgc3RhY2sgaXMgaW4gb3JkZXIuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBwb2ludHMgdG93YXJkcyBhIHNwZWNpZmljIGFyZWEsIG9yIGlmIHRoaXMgZnVuY3Rpb24gaXMgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Ztd19ib192bV9mYXVsdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmM9NDIxPXZtX2ZhdWx0X3Qgdm13X2JvX3ZtX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jLTQ0NC1cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYzo0NDU6dm1fZmF1bHRfdCB2bXdfYm9fdm1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmMtNDQ2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4ODYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIFBGTiBJbnNlcnRpb24gaW4gdGhlIFZNIEZyYW1ld29yayoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgY29yZSBtZWNoYW5pc21zIGZvciBwaHlzaWNhbGx5IGluc2VydGluZyBwYWdlIGZyYW1lIG51bWJlcnMgKFBGTnMpIGludG8gdGhlIHZpcnR1YWwgbWVtb3J5IGZyYW1ld29yay4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW50ZXJwbGF5IGJldHdlZW4gYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YC4gVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgdGhlIGxpa2VseSBsaW5jaHBpbnMgd2hlbiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHdyaXRlIHBlcm1pc3Npb25zIGFuZCBwcm90ZWN0aW9uIGF0dHJpYnV0ZXMgZHVyaW5nIFBGTiBpbnNlcnRpb24uIEkgd2FudCB0byBxdWlja2x5IGVuc3VyZSB0aGF0IEkgY2FuIGFjY3VyYXRlbHkgcmVsYXRlIHRoZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGJhY2sgdG8gdGhlIGJyb2FkZXIgY29uY2VwdHVhbCBtb2RlbC4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW5kIGFjY291bnQgZm9yIGFueSBwb3RlbnRpYWwgc3VidGxlIGludGVyYWN0aW9ucyBvciBzaWRlIGVmZmVjdHMgdGhleSBtaWdodCBleGhpYml0LCBlc3BlY2lhbGx5IGlmIHRoZXJlJiMzOTtzIGFueSB0cmlja3kgbG9ja2luZyBvciBhdG9taWNpdHkgaW52b2x2ZWQgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgaW4gdGhpcyBjb250ZXh0LiBUaW1lIHRvIHJlZnJlc2ggYW5kIGRpc3NlY3QgdGhlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm1mX2luc2VydF9wZm5fbWt3cml0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL21lbW9yeS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbW9yeS5jPTI4MTQ9RVhQT1JUX1NZTUJPTCh2bWZfaW5zZXJ0X3Bmbik7XG4tLVxubW0vbWVtb3J5LmMtMjgxNi0vKipcbm1tL21lbW9yeS5jOjI4MTc6ICogdm1mX2luc2VydF9wZm5fbWt3cml0ZSAtIGluc2VydCBzaW5nbGUgcGZuIGludG8gdXNlciB2bWEsIHBvc3NpYmx5IHdyaXRhYmxlXG5tbS9tZW1vcnkuYy0yODE4LSAqIEB2bWE6IHVzZXIgdm1hIHRvIG1hcCB0b1xuLS1cbm1tL21lbW9yeS5jLTI4MzMtICovXG5tbS9tZW1vcnkuYzoyODM0OnZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm5fbWt3cml0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxubW0vbWVtb3J5LmMtMjgzNS1cdFx0XHR1bnNpZ25lZCBsb25nIHBmbiwgYm9vbCB3cml0ZSlcbi0tXG5tbS9tZW1vcnkuYy0yODM4LX1cbm1tL21lbW9yeS5jOjI4Mzk6RVhQT1JUX1NZTUJPTCh2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlKTtcbm1tL21lbW9yeS5jLTI4NDAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MzgxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLZXJuZWwgRmF1bHQgSGFuZGxlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucywgYW5kIHRoZXkmIzM5O3JlIGFsbCBtYXJrZWQgYXMgYEVYUE9SVF9TWU1CT0xgLCB3aGljaCBpbW1lZGlhdGVseSBncmFicyBteSBhdHRlbnRpb24uIFRoYXQgbWVhbnMgdGhleSYjMzk7cmUgY29yZSBlbm91Z2ggdG8gYmUgZXhwb3J0ZWQgZm9yIHVzZSBpbiBvdGhlciBtb2R1bGVzLCB3aGljaCBvZnRlbiBpbmRpY2F0ZXMgdGhleSYjMzk7cmUgcGFydCBvZiBhIGNyaXRpY2FsIHBhdGggb3IgY29tbW9ubHkgdXNlZCBzdWJzeXN0ZW0uIFRoZSBlbnRyeSBwb2ludHMgSSBzZWUgYXJlOiBgZHJtX2dlbV9zaG1lbV9mYXVsdGAsIGB0dG1fYm9fdm1fZmF1bHRgLCBgdm13X2JvX3ZtX21rd3JpdGVgLCBgdm13X2JvX3ZtX2ZhdWx0YCwgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgLCBhbmQgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAuIFdhaXQsIEkgd2FzIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBmYXVsdCBoYW5kbGVycy4KCk9rYXksIGxldCYjMzk7cyBqdXN0IGZvY3VzIG9uIHRoZSBmYXVsdCBoYW5kbGVycy4gSSYjMzk7bSBnb2luZyB0byBzZXQgYXNpZGUgdGhlIG90aGVycyBmb3Igbm93LiBTbyB3ZSYjMzk7cmUgcmVhbGx5IGxvb2tpbmcgYXQ6IGBkcm1fZ2VtX3NobWVtX2ZhdWx0YCwgYHR0bV9ib192bV9mYXVsdGAsIGB2bXdfYm9fdm1fbWt3cml0ZWAsIGB2bXdfYm9fdm1fZmF1bHRgLCBgdm1mX2luc2VydF9wZm5fbWt3cml0ZWAsIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YC4gSSBtaWdodCBjaXJjbGUgYmFjayB0byB0aGF0IGxhc3Qgb25lIGxhdGVyLCBidXQgbGV0JiMzOTtzIGJlZ2luIGJ5IHplcm9pbmcgaW4gb24gYGRybV9nZW1fc2htZW1fZmF1bHRgIGFzIGEgZ29vZCBzeW1ib2wgdG8gc3RhcnQgd2l0aCBhbmQgc2VlIHdoZXJlIHRoYXQgdGFrZXMgbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RybV9nZW1fc2htZW1fZmF1bHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz02Mjk9c3RhdGljIHZtX2ZhdWx0X3QgZHJtX2dlbV9zaG1lbV9hbnlfZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHVuc2lnbmVkIGludCBvcmRlcilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy02NjgtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo2Njk6c3RhdGljIHZtX2ZhdWx0X3QgZHJtX2dlbV9zaG1lbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTY3MC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9NzE0PWNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBkcm1fZ2VtX3NobWVtX3ZtX29wcyA9IHtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjcxNTpcdC5mYXVsdCA9IGRybV9nZW1fc2htZW1fZmF1bHQsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03MTYtI2lmZGVmIENPTkZJR19BUkNIX1NVUFBPUlRTX1BNRF9QRk5NQVBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxOTIKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgRmF1bHQgSGFuZGxlcioqCgpBbHJpZ2h0LCB5ZXAsIHRoYXQgY29uZmlybXMgaXQg4oCTIHRoaXMgaXMgYSBmYXVsdCBoYW5kbGVyLiBOb3RoaW5nIHN1cnByaXNpbmcgdGhlcmUsIGJ1dCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFdhaXQsIGhvbGQgb24gYSBzZWPigKYgSSBzZWUgYGRybV9nZW1fc2htZW1fZmF1bHRgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBPa2F5LCB0aGF0JiMzOTtzIHNvbWV3aGF0IGludGVyZXN0aW5nLiBUaGF0IG1lYW5zIGl04oCZcyBvbmx5IHZpc2libGUgd2l0aGluIHRoaXMgcGFydGljdWxhciBjb21waWxhdGlvbiB1bml0LCB3aGljaCBtaWdodCBpbmZsdWVuY2UgaG93IHdlIG5lZWQgdG8gYXBwcm9hY2ggdW5kZXJzdGFuZGluZyBpdHMgaW50ZXJhY3Rpb24gd2l0aGluIHRoZSBicm9hZGVyIERSTSBmcmFtZXdvcmsuIEhtbS4uLiBsZXTigJlzIG5vdCBqdW1wIHRvIGFueSBjb25jbHVzaW9ucy4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwIGludG8gdGhhdCBzdGF0aWMgZGVjbGFyYXRpb24sIGl0JiMzOTtzIHdvcnRoIHRha2luZyBhIHF1aWNrIGxvb2sgYXJvdW5kLiBMZXQmIzM5O3MgY2hlY2sgZm9yIGFueSAqb3RoZXIqIGV4cG9ydGVkIGZ1bmN0aW9ucyBpbiB0aGlzIGNvZGUuIEl0JiMzOTtsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgaGFuZGxlciBpcyBtZWFudCB0byBiZSB1c2VkLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgaGFuZGxlciBpcyBleHBvc2VkIHRvLCBvciBhY2Nlc3NlZCBieSwgdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCBtb2R1bGVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZWxzZSB0aGlzIGZpbGUgb2ZmZXJzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmRybV9nZW1fc2htZW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0xMDk9aW50IGRybV9nZW1fc2htZW1faW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBzaXplX3Qgc2l6ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xMTItfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6MTEzOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1faW5pdCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xMTQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9MTU1PXN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqZHJtX2dlbV9zaG1lbV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc2l6ZV90IHNpemUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMTU4LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjE1OTpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX2NyZWF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xNjAtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9MTc0PXZvaWQgX19kcm1fZ2VtX3NobWVtX2ZyZWVfc2d0X2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTE4Mi19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzoxODM6RVhQT1JUX1NZTUJPTF9HUEwoX19kcm1fZ2VtX3NobWVtX2ZyZWVfc2d0X2xvY2tlZCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xODQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9MTkyPXZvaWQgZHJtX2dlbV9zaG1lbV9yZWxlYXNlKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMjE1LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjIxNjpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX3JlbGVhc2UpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMjE3LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTIyNT12b2lkIGRybV9nZW1fc2htZW1fZnJlZShzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTIyOS19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzoyMzA6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9mcmVlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTIzMS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0yNzI9dm9pZCBkcm1fZ2VtX3NobWVtX3B1dF9wYWdlc19sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0yOTEtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6MjkyOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fcHV0X3BhZ2VzX2xvY2tlZCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0yOTMtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0yOTQ9aW50IGRybV9nZW1fc2htZW1fcGluX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTMxMC19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzozMTE6RVhQT1JUX1NZTUJPTChkcm1fZ2VtX3NobWVtX3Bpbl9sb2NrZWQpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMzEyLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9MzEzPXZvaWQgZHJtX2dlbV9zaG1lbV91bnBpbl9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0zMTktfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6MzIwOkVYUE9SVF9TWU1CT0woZHJtX2dlbV9zaG1lbV91bnBpbl9sb2NrZWQpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMzIxLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTMzMj1pbnQgZHJtX2dlbV9zaG1lbV9waW4oc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0zNDktfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6MzUwOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fcGluKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTM1MS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0zNTk9dm9pZCBkcm1fZ2VtX3NobWVtX3VucGluKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMzcxLX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjM3MjpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX3VucGluKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTM3My1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0zODk9aW50IGRybV9nZW1fc2htZW1fdm1hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy00MzktfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6NDQwOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fdm1hcF9sb2NrZWQpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNDQxLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTQ1ND12b2lkIGRybV9nZW1fc2htZW1fdnVubWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTQ3My19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo0NzQ6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV92dW5tYXBfbG9ja2VkKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTQ3NS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz01MDI9aW50IGRybV9nZW1fc2htZW1fbWFkdmlzZV9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSwgaW50IG1hZHYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNTEyLX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjUxMzpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX21hZHZpc2VfbG9ja2VkKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTUxNC1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTUxNT12b2lkIGRybV9nZW1fc2htZW1fcHVyZ2VfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNTQ0LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjU0NTpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX3B1cmdlX2xvY2tlZCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy01NDYtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9NTY0PWludCBkcm1fZ2VtX3NobWVtX2R1bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwgc3RydWN0IGRybV9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy01NzQtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6NTc1OkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fZHVtYl9jcmVhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNTc2LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTcxND1jb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgZHJtX2dlbV9zaG1lbV92bV9vcHMgPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNzIyLX07XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo3MjM6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV92bV9vcHMpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNzI0LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTczNj1pbnQgZHJtX2dlbV9zaG1lbV9tbWFwKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTc3NC19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo3NzU6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9tbWFwKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTc3Ni1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz03ODM9dm9pZCBkcm1fZ2VtX3NobWVtX3ByaW50X2luZm8oY29uc3Qgc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03OTMtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6Nzk0OkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fcHJpbnRfaW5mbyk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03OTUtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9ODEwPXN0cnVjdCBzZ190YWJsZSAqZHJtX2dlbV9zaG1lbV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy04MTctfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6ODE4OkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fZ2V0X3NnX3RhYmxlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTgxOS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz04NzM9c3RydWN0IHNnX3RhYmxlICpkcm1fZ2VtX3NobWVtX2dldF9wYWdlc19zZ3Qoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy04ODUtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6ODg2OkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fZ2V0X3BhZ2VzX3NndCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy04ODctXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9OTA0PWRybV9nZW1fc2htZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtOTIwLX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjkyMTpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy05MjItXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9OTMyPXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZHJtX2dlbV9zaG1lbV9wcmltZV9pbXBvcnRfbm9fbWFwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtOTc3LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjk3ODpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX3ByaW1lX2ltcG9ydF9ub19tYXApO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtOTc5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTk4NT1pbnQgZHJtX2dlbV9zaG1lbV92bWFwKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0sIHN0cnVjdCBpb3N5c19tYXAgKm1hcClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy05OTctfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6OTk4OkVYUE9SVF9TWU1CT0xfSUZfS1VOSVQoZHJtX2dlbV9zaG1lbV92bWFwKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTk5OS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTEwMDA9dm9pZCBkcm1fZ2VtX3NobWVtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBzdHJ1Y3QgaW9zeXNfbWFwICptYXApXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMTAwNy19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzoxMDA4OkVYUE9SVF9TWU1CT0xfSUZfS1VOSVQoZHJtX2dlbV9zaG1lbV92dW5tYXApO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMTAwOS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTEwMTA9aW50IGRybV9nZW1fc2htZW1fbWFkdmlzZShzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBpbnQgbWFkdilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xMDIyLX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjEwMjM6RVhQT1JUX1NZTUJPTF9JRl9LVU5JVChkcm1fZ2VtX3NobWVtX21hZHZpc2UpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMTAyNC1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTEwMjU9aW50IGRybV9nZW1fc2htZW1fcHVyZ2Uoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xMDM3LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjEwMzg6RVhQT1JUX1NZTUJPTF9JRl9LVU5JVChkcm1fZ2VtX3NobWVtX3B1cmdlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTEwMzktI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDgzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMsICYjMzQ7V2hlcmUgYXJlIHRoZSBwcmltZSB0YXJnZXRzIGZvciBmdXp6aW5nIGluIHRoaXMgbWVtb3J5IG1hbmFnZW1lbnQgY29udGV4dD8mIzM0OyBJIHNlZSB0aGF0IGBkcm1fZ2VtX3NobWVtX21tYXBgIGlzIGV4cG9ydGVkLCBhbmQgY3JpdGljYWxseSwgaXQgc2V0cyB1cCBgdm1hLSZndDt2bV9vcHNgIHRvIGAmYW1wO2RybV9nZW1fc2htZW1fdm1fb3BzYC4gQmluZ28sIGBkcm1fZ2VtX3NobWVtX21tYXBgIGxvb2tzIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gVGhlbiwgSSBub3RpY2VkIGB0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWRgIGlzIGV4cG9ydGVkLCB0aGF0IGdvZXMgb24gdGhlIGxpc3QuCgpOZXh0LCBJIG5vdGVkIHRoYXQgYHZtd19ib192bV9ta3dyaXRlYCBhbmQgYHZtd19ib192bV9mYXVsdGAgYXJlbiYjMzk7dCAqZGlyZWN0bHkqIGV4cG9ydGVkLCBidXQgdGhleSYjMzk7cmUgcGFydCBvZiBgdm13X2JvX3ZtX29wc2AsIHdoaWNoIGlzIHVzZWQgaW4gYHZtd19tbWFwYC4gVGhhdCBzdWdnZXN0cyB0aG9zZSBjb3VsZCBiZSBpbnRlcmVzdGluZywgZXZlbiBpZiBpbmRpcmVjdGx5IHJlYWNoYWJsZS4gQWxzbywgSSBzZWUgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCBhcmUgZXhwb3J0ZWQsIHdoaWNoIGFyZSBwcm9iYWJseSBwcmV0dHkgY29yZSwgYW5kIEkgc2hvdWxkIHNlZSBpZiB0aGV5IGFyZSBpbiBgbW0vbWVtb3J5LmNgLiBZZXAsIHRoZXkgYXJlLiBUaGF0JiMzOTtzIGdvb2QuCgpTbywgc3VtbWluZyB0aGlzIHVwLCB0aGUgZnVuY3Rpb25zIHRoYXQgSSB3YW50IHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nIGFyZToKKiAgIGB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlYAoqICAgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAKKiAgIGB0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWRgCiogICBgdm13X2JvX3ZtX21rd3JpdGVgCiogICBgdm13X2JvX3ZtX2ZhdWx0YAoKV2FpdCwgaGFuZyBvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGNvcnJlY3QsIGl0IGxvb2tzIGxpa2UgYHZtd19ib192bV9ta3dyaXRlYCBhbmQgYHZtd19ib192bV9mYXVsdGAgYXJlbiYjMzk7dCBzdGF0aWMgZnVuY3Rpb25zLCB0aGV5JiMzOTtyZSBpbiBgdm13Z2Z4X3BhZ2VfZGlydHkuY2AuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhleSYjMzk7cmUgYWN0dWFsbHkgZXhwb3J0ZWQuIExldCYjMzk7cyBsb29rIGludG8gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLip2bXdfYm9fdm0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwODk3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIFNjb3BlIG9mIFRoZXNlIEZ1bmN0aW9ucyoqCgpBbHJpZ2h0LCBzbyB0aGVzZSBmdW5jdGlvbnMgYXJlbiYjMzk7dCBleHBsaWNpdGx5IGV4cG9ydGVkLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGhleSYjMzk7cmUgaGFuZ2luZyBvdXQgdGhlcmUgYXMgZ2xvYmFsIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIG1vZHVsZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O09rYXksIGxldCYjMzk7cyBmaWd1cmUgb3V0IGhvdyBicm9hZGx5IHRoZXNlIGFyZSBiZWluZyB1dGlsaXplZC4mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBpbXBhY3QgYW5kIGlmIHJlbW92aW5nIG9yIG1vZGlmeWluZyB0aGVtIHdvdWxkIGJlIGEgYmlnIGRlYWwuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkbyBhIHRob3JvdWdoIGNvZGUgc2VhcmNoIGFuZCBwaW5wb2ludCBhbGwgdGhlIGNhbGwgc2l0ZXMuIElkZW50aWZ5aW5nIGV2ZXJ5IGluc3RhbmNlIHdoZXJlIHRoZXkmIzM5O3JlIGludm9rZWQgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aWdodGx5IGNvdXBsZWQgdGhleSBhcmUgdG8gb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gSSBoYXZlIHRvIGFzc2VzcyB0aGVpciBpbXBhY3QgYmVmb3JlIEkgdG91Y2ggdGhlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm13X2JvX3ZtX2ZhdWx0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2Lmg9MTM5Mj12b2lkIHZtd19ib19kaXJ0eV91bm1hcChzdHJ1Y3Qgdm13X2JvICp2Ym8sXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaC0xMzkzLVx0XHRcdHBnb2ZmX3Qgc3RhcnQsIHBnb2ZmX3QgZW5kKTtcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5oOjEzOTQ6dm1fZmF1bHRfdCB2bXdfYm9fdm1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpO1xuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgtMTM5NS12bV9mYXVsdF90IHZtd19ib192bV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9nZW0uYz0xMzU9c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCB2bXdfdm1fb3BzID0ge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2dlbS5jLTEzNy1cdC5wYWdlX21rd3JpdGUgPSB2bXdfYm9fdm1fbWt3cml0ZSxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2dlbS5jOjEzODpcdC5mYXVsdCA9IHZtd19ib192bV9mYXVsdCxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2dlbS5jLTEzOS1cdC5vcGVuID0gdHRtX2JvX3ZtX29wZW4sXG4tLVxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jPTQyMT12bV9mYXVsdF90IHZtd19ib192bV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYy00NDQtXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmM6NDQ1OnZtX2ZhdWx0X3Qgdm13X2JvX3ZtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jLTQ0Ni17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjA4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFJlbGV2YW50IFZpcnR1YWwgTWVtb3J5IEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGVzZSB2aXJ0dWFsIG1lbW9yeSBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgdGhvc2UgdXNlZCB3aXRoaW4gYHZtd192bV9vcHNgLiBMZXQmIzM5O3MgbmFycm93IGRvd24gdGhlIGZvY3VzLiBJIG5lZWQgdG8gbGlzdCB0aGUga2V5IGZ1bmN0aW9ucyBJIHNob3VsZCBiZSBsb29raW5nIGF0LiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGg6CgoqICAgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgCiogICBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YAoqICAgYHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZGAKKiAgIGB2bXdfYm9fdm1fbWt3cml0ZWAKKiAgIGB2bXdfYm9fdm1fZmF1bHRgCgpOb3csIHdhaXQgYSBtaW51dGUuLi4gYGRybV9nZW1fc2htZW1fZmF1bHRgIGlzIHN0YXRpYywgYnV0IGBkcm1fZ2VtX3NobWVtX21tYXBgIGlzIGV4cG9ydGVkIGFuZCBzZXRzIHVwIHRoZSBgdm1fb3BzYC4gU2luY2UgdGhlIHByb21wdCBzcGVjaWZpZXMgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljIGVudHJ5cG9pbnRzLCBgZHJtX2dlbV9zaG1lbV9tbWFwYCBpcyBwb3RlbnRpYWxseSB1c2VmdWwsIG9yIGlmIHJlYWNoYWJsZSB0aHJvdWdoIHN5c2NhbGxzIGV2ZW4gYGRybV9nZW1fc2htZW1fZmF1bHRgLiBBY3R1YWxseSwgdGhlIHJlYWwgbG9naWMgY2hhbmdlIGlzIGluIGB0cnlfaW5zZXJ0X3BmbmAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBkcm1fZ2VtX3NobWVtX2FueV9mYXVsdGAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBkcm1fZ2VtX3NobWVtX2ZhdWx0YC4gVGhpcyBzdGF0aWMgZnVuY3Rpb24gY2FuIGJlIGZ1enphYmxlIHZpYSBzeXNjYWxscywgc28gdGhpcyBtYXkgd29yayBmaW5lLiBVbHRpbWF0ZWx5LCBJIHNob3VsZCBmb2N1cyBvbiB0aGUgY29yZSBNTSBmdW5jdGlvbnM6IGB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlYCBhbmQgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAuIFRoZXkgYXJlIGNyaXRpY2FsIGZvciBpbnNlcnRpbmcgYW5kIG1hbmFnaW5nIHBhZ2UgZnJhbWUgbnVtYmVycyAoUEZOcykuCgpJJiMzOTtsbCBjaGVjayB0byBzZWUgaWYgdGhvc2UgZnVuY3Rpb25zIGFyZSBleHBvcnRlZC4gR29vZCwgYm90aCBgdm1mX2luc2VydF9wZm5fbWt3cml0ZWAgYW5kIGBfX3ZtZl9pbnNlcnRfcGZuX3Byb3RgIGFyZS4KCkFzIGZvciB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucyB0byBlbmFibGUsIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTt2ZSBpZGVudGlmaWVkOgoKKiAgIGBEUk1fVkdFTWAKKiAgIGBEUk1fVktNU2AKKiAgIGBEUk1fVk1XR0ZYYAoqICAgYERSTV9RWExgCiogICBgRFJNX1ZCT1hWSURFT2AKKiAgIGBEUk1fVFRNYAoqICAgYERSTV9HRU1fU0hNRU1fSEVMUEVSYAoKSSByZWFsaXplIHRoYXQgYERSTV9WR0VNYCBhbmQgYERSTV9WS01TYCBzZWxlY3QgYERSTV9HRU1fU0hNRU1fSEVMUEVSYCwgYW5kIGBEUk1fVk1XR0ZYYCwgYERSTV9RWExgLCBhbmQgYERSTV9WQk9YVklERU9gIHNlbGVjdCBgRFJNX1RUTWAuIFNvLCBlbmFibGluZyBgRFJNX1ZHRU1gLCBgRFJNX1ZLTVNgLCBgRFJNX1ZNV0dGWGAsIGBEUk1fUVhMYCwgYW5kIGBEUk1fVkJPWFZJREVPYCBzaG91bGQgYmUgc3VmZmljaWVudC4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIGBEUk1fVk1XR0ZYYCBmb3IgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMganVzdCB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFJNX1ZNV0dGWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWc6Mjpjb25maWcgRFJNX1ZNV0dGWFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtEUk0gZHJpdmVyIGZvciBWTXdhcmUgVmlydHVhbCBHUFVcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctMTktXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWc6MjA6Y29uZmlnIERSTV9WTVdHRlhfTUtTU1RBVFNcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7RW5hYmxlIG1rc0d1ZXN0U3RhdHMgaW5zdHJ1bWVudGF0aW9uIG9mIHZtd2dmeCBieSBkZWZhdWx0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDQyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIERlcGVuZGVuY2llcyoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBCZWZvcmUgSSBwcm9jZWVkLCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZS4gVGhlIGZvY3VzIGlzIG9uIGBEUk1fVk1XR0ZYYCwgYW5kIEkgbmVlZCB0byBpbW1lZGlhdGVseSB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIEkgY2FuJiMzOTt0IG1vdmUgZm9yd2FyZCB3aXRob3V0IGtub3dpbmcgd2hhdCBvdGhlciBtb2R1bGVzIG9yIGNvbXBvbmVudHMgaXQgcmVsaWVzIG9uLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgYGRlcGVuZHMgb25gIGluZm9ybWF0aW9uIGZvciB0aGF0IHBhcnRpY3VsYXIgbW9kdWxlLiBVbmRlcnN0YW5kaW5nIGl0cyBkZXBlbmRlbmNpZXMgaXMgdGhlIGZvdW5kYXRpb24gZm9yIGVmZmVjdGl2ZSB0cm91Ymxlc2hvb3RpbmcsIG1vZGlmaWNhdGlvbiwgb3IgZXZlbiBqdXN0IGEgZ2VuZXJhbCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGdyYXBoaWNzIGRyaXZlciBmaXRzIGludG8gdGhlIGJyb2FkZXIgc3lzdGVtIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWc9Mj1jb25maWcgRFJNX1ZNV0dGWFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtEUk0gZHJpdmVyIGZvciBWTXdhcmUgVmlydHVhbCBHUFVcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBEUk0gXHUwMDI2XHUwMDI2IFBDSVxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnOjU6XHRkZXBlbmRzIG9uIChYODYgXHUwMDI2XHUwMDI2IEhZUEVSVklTT1JfR1VFU1QpIHx8IEFSTTY0XG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctNi1cdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxuLS1cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZz0yMD1jb25maWcgRFJNX1ZNV0dGWF9NS1NTVEFUU1xuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWtzR3Vlc3RTdGF0cyBpbnN0cnVtZW50YXRpb24gb2Ygdm13Z2Z4IGJ5IGRlZmF1bHRcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzoyMjpcdGRlcGVuZHMgb24gRFJNX1ZNV0dGWFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnOjIzOlx0ZGVwZW5kcyBvbiBYODZcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZy0yNC1cdGRlZmF1bHQgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzQ5NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jeSBDaGVjayoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2Uga2VybmVsIG1vZHVsZSBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyBzdGFydCB3aXRoIGBEUk1fVk1XR0ZYYC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGl0IHJlbGllcyBvbiBib3RoIGBEUk1gIGFuZCBgUENJYC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJIGFsc28gc2VlIHRoYXQgaXQgcmVxdWlyZXMgZWl0aGVyIGFuIGBYODZgIGFyY2hpdGVjdHVyZSAqYW5kKiBhIGBIWVBFUlZJU09SX0dVRVNUYCBzZXR0aW5nLCBvciBhbHRlcm5hdGl2ZWx5LCBgQVJNNjRgLiBZZXAsIHRoYXQgYWxsIGNoZWNrcyBvdXQgYW5kIHNlZW1zIGxvZ2ljYWxseSBzb3VuZC4gTm8gaW1tZWRpYXRlIHJlZCBmbGFncyB0aGVyZS4gTm93LCBsZXQmIzM5O3MgbW92ZSBvbiB0byBgRFJNX1FYTGAgYW5kIHNlZSB3aGF0IHRoYXQgbW9kdWxlIGJyaW5ncyB0byB0aGUgdGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vcXhsL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3F4bC9LY29uZmlnPTI9Y29uZmlnIERSTV9RWExcbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UVhMIHZpcnR1YWwgR1BVXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vcXhsL0tjb25maWc6NDpcdGRlcGVuZHMgb24gRFJNIFx1MDAyNlx1MDAyNiBQQ0kgXHUwMDI2XHUwMDI2IEhBU19JT1BPUlRcbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZy01LVx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzODMwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgdGhlIGBEUk1fVkJPWFZJREVPYCBNb2R1bGUqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gaXQuIExldCYjMzk7cyBkaWcgaW4gYW5kIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgc3F1YXJlZCBhd2F5IG9uIGBEUk1fVkJPWFZJREVPYC4gSSBuZWVkIHRvIGFzc2VzcyBpdHMgY3VycmVudCBzdGF0dXMgYW5kIGlmIHRoZXJlIGFyZSBhbnkgaXNzdWVzIHdpdGggaXQuIFRoZXJlIGNvdWxkIGJlIGRlcGVuZGVuY2llcywgY29uZmxpY3RzLCBvciBqdXN0IHBsYWluIG9sZCBidWdzIHRoYXQgbmVlZCB0byBiZSBhZGRyZXNzZWQuIFBlcmhhcHMgdGhlcmUgaXMgc29tZSByZWNlbnQgd29yayBpbiB0aGlzIGFyZWEgSSBuZWVkIHRvIGFzc2VzcyBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vS2NvbmZpZz0yPWNvbmZpZyBEUk1fVkJPWFZJREVPXG5kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgQm94IEdyYXBoaWNzIENhcmRcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBEUk0gXHUwMDI2XHUwMDI2IFg4NiBcdTAwMjZcdTAwMjYgUENJXG5kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL0tjb25maWctNS1cdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDEwMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBgRFJNX1ZHRU1gKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgbWluZCBpbW1lZGlhdGVseSBnb2VzIHRvIGBEUk1fVkdFTWAuIEdvdHRhIGNoZWNrIGl0LCBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcgdGhlcmUuIFByb2JhYmx5IHRoZSBzdGFydGluZyBwb2ludCBmb3Igd2hhdGV2ZXIgd2UmIzM5O3JlIGRlYnVnZ2luZy4gSXQmIzM5O3MgdGhlIHVzdWFsIHN1c3BlY3RzLCByaWdodD8gS2VybmVsIGRyaXZlciwgZ3JhcGhpY3MsIERSTSAtIHRoZSB3aG9sZSBraXQgYW5kIGNhYm9vZGxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGhpbiB0aGF0IHBhcnRpY3VsYXIgY29udGV4dC4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgYm90dGxlbmVja3Mgb3IgZ2xpdGNoZXMgdGhhdCBzdGFuZCBvdXQgaW1tZWRpYXRlbHkuIERpZ2dpbmcgaW4uLi4gdGhlIGluaXRpYWwgc3RlcCBvZiB0aGUgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3ZnZW0vS2NvbmZpZz0yPWNvbmZpZyBEUk1fVkdFTVxuZHJpdmVycy9ncHUvZHJtL3ZnZW0vS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBHRU0gcHJvdmlkZXJcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWc6NDpcdGRlcGVuZHMgb24gRFJNIFx1MDAyNlx1MDAyNiBNTVVcbmRyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWctNS1cdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDM5NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipDaGVja2luZyBgRFJNX1ZLTVNgKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBUaGUgaW5pdGlhbCBkaXJlY3Rpb24gaXMgdG8gY2hlY2sgYERSTV9WS01TYC4gVGhhdCYjMzk7cyBhIGNsZWFyIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIHJlbGV2YW50IGFib3V0IHRoZSBjdXJyZW50IGNvbnRleHQsIGFuZCB0aGlzIGxvb2tzIGxpa2UgdGhlIGNydWNpYWwgZWxlbWVudCBmb3IgaW52ZXN0aWdhdGlvbi4gR290dGEgYXNzZXNzIGl0cyBzdGF0ZSwgaXRzIGNvbmZpZ3VyYXRpb24sIGFuZCwgb2YgY291cnNlLCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBicm9hZGVyIHN5c3RlbS4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGUgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBtb2R1bGUgd2l0aGluIHRoZSB3aWRlciBlY29zeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc9Mz1jb25maWcgRFJNX1ZLTVNcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgS01TIChFWFBFUklNRU5UQUwpXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnOjU6XHRkZXBlbmRzIG9uIERSTSBcdTAwMjZcdTAwMjYgTU1VXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTYtXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnPTE5PWNvbmZpZyBEUk1fVktNU19LVU5JVF9URVNUXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIFZLTVNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZzoyMTpcdGRlcGVuZHMgb24gRFJNX1ZLTVMgXHUwMDI2XHUwMDI2IEtVTklUXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTIyLVx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ3NzUKCQkJCQkJCW91dHB1dDogMjc4CgkJCQkJCQl0aG91Z2h0czogNjkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBEUk0gTU0gYW5kIFZpcnR1YWwgR1BVIERyaXZlciBDaGFuZ2VzIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGlua2luZyBhYm91dCBob3cgdG8gYmVzdCBmdXp6IGl0LiBUaGUgbWFpbiBmb2N1cyBoZXJlIGlzIG9uIG5ldyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkmIzM5O3JlIHVzZWQgYnkgc2V2ZXJhbCB2aXJ0dWFsIEdQVSBkcml2ZXJzLiBTcGVjaWZpY2FsbHksIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCB0byBoYW5kbGUgd3JpdGFibGUgUFRFcyBkdXJpbmcgcGFnZSBmYXVsdHMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uIGlzIGtleS4gVGhpcyBpcyBhIGZpeCBmb3IgYGZpeHVwX3VzZXJfZmF1bHRgIGFuZCBhZmZlY3RzIGhvdyBtZW1vcnkgaXMgaGFuZGxlZCBpbiB0aGVzZSBjcml0aWNhbCBhcmVhcywgd2hpY2ggbWFrZXMgaXQgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEl0IGltcGFjdHMgYERSTSBHRU0gc2htZW0gaGVscGVyYCwgYFRUTSBCTyBWTWAsIGFuZCBgVk1XZ2Z4YCBwYWdlIGZhdWx0IGhhbmRsZXJzLiBUaGVzZSBhcmUgYWxsIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHRocm91Z2ggYG1tYXBgIGFuZCBwYWdlIGZhdWx0cyDigJMgY2xhc3NpYyBmdXp6aW5nIGVudHJ5IHBvaW50cy4KCkdpdmVuIHRoYXQsIEkgbmVlZCB0byBlbnN1cmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkIHRvIGV4cG9zZSB0aGlzIGNvZGUuIEkgaW5pdGlhbGx5IHRob3VnaHQgb2YgZW5hYmxpbmcgYERSTV9WR0VNYCwgYERSTV9WS01TYCwgYERSTV9WTVdHRlhgLCBhbmQgYERSTV9RWExgLCBhbmQgYERSTV9WQk9YVklERU9gLCBidXQgSSByZWFsaXplZCBgRFJNX1ZNV0dGWGAgZGVwZW5kcyBvbiBgSFlQRVJWSVNPUl9HVUVTVGAsIHdoaWNoIGlzIHVzdWFsbHkgZW5hYmxlZCBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gVG8gYmUgb24gdGhlIHNhZmUgc2lkZSwgYW5kIGFmdGVyIGRvdWJsZSBjaGVja2luZyBpZiB0aGVzZSBzeW1ib2xzIGFyZSB0cmlzdGF0ZSwgSSYjMzk7bSBnb2luZyB0byBleHBsaWNpdGx5IGVuYWJsZSBgRFJNX1RUTWAgYW5kIGBEUk1fR0VNX1NITUVNX0hFTFBFUmAsIGp1c3QgaW4gY2FzZS4KCkxldCYjMzk7cyBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIHRoZSBuZXcgZnVuY3Rpb25zIGFyZSBleHBvcnRlZC4gR29vZCwgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCBhcmUgYm90aCBleHBvcnRlZCwgbWVhbmluZyB3ZSBjYW4gcmVhY2ggdGhlbSBmcm9tIHVzZXJzcGFjZS4gQWxzbywgYHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZGAgaXMgZXhwb3J0ZWQuIEFkZGl0aW9uYWxseSwgYHZtd19ib192bV9ta3dyaXRlYCBhbmQgYHZtd19ib192bV9mYXVsdGAgYXJlIGdsb2JhbCBmdW5jdGlvbnMgaW4gYHZtd2dmeF9wYWdlX2RpcnR5LmNgLgoKSSBhbHNvIG5vdGljZWQgYGRybV9nZW1fc2htZW1fZmF1bHRgIGlzIHN0YXRpYywgd2hpY2ggaXMgYSBiaXQgb2YgYSBwcm9ibGVtLiBCdXQsIEkgc2VlIHRoYXQgYGRybV9nZW1fc2htZW1fbW1hcGAgKmlzKiBleHBvcnRlZCBhbmQgc2V0cyB1cCB0aGUgYHZtX29wc2AsIHNvIHRoYXQmIzM5O3MgYW5vdGhlciBpbXBvcnRhbnQgZnVuY3Rpb24gdGhhdCBuZWVkcyB0byBiZSBhZGRlZCB0byB0aGUgbGlzdCBvZiB0aGluZ3MgdG8gdHJ5IHRvIGZ1enouCgpBbHJpZ2h0LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRob3NlIGNvbmZpZ3VyYXRpb25zIGFnYWluOgoKKiAgIGBEUk1fVkdFTWAKKiAgIGBEUk1fVktNU2AKKiAgIGBEUk1fVk1XR0ZYYAoqICAgYERSTV9UVE1gCiogICBgRFJNX0dFTV9TSE1FTV9IRUxQRVJgCgpUaGF0IGNvdmVycyBldmVyeXRoaW5nLCBJIHRoaW5rLiBUaGlzIHNlZW1zIGxpa2UgYSBwcmV0dHkgc29saWQgc2V0IG9mIHRhcmdldHMgZm9yIHNvbWUgZm9jdXNlZCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFJNX1ZHRU0mIzM0OywKICAgICYjMzQ7RFJNX1ZLTVMmIzM0OywKICAgICYjMzQ7RFJNX1ZNV0dGWCYjMzQ7LAogICAgJiMzNDtEUk1fVFRNJiMzNDssCiAgICAmIzM0O0RSTV9HRU1fU0hNRU1fSEVMUEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dm1mX2luc2VydF9wZm5fbWt3cml0ZSYjMzQ7LAogICAgJiMzNDtfX3ZtZl9pbnNlcnRfcGZuX3Byb3QmIzM0OywKICAgICYjMzQ7dHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkJiMzNDssCiAgICAmIzM0O3Ztd19ib192bV9ta3dyaXRlJiMzNDssCiAgICAmIzM0O3Ztd19ib192bV9mYXVsdCYjMzQ7LAogICAgJiMzNDtkcm1fZ2VtX3NobWVtX21tYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgY29yZSBNTSBmdW5jdGlvbnMgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCB0byBhbGxvdyBpbnNlcnRpbmcgYSB3cml0YWJsZSBQVEUgZHVyaW5nIGEgcGFnZSBmYXVsdCBldmVuIHdoZW4gdGhlIFZNQSBpcyB1bmRlciB3cml0ZSBub3RpZmljYXRpb24uIFRoaXMgZml4ZXMgYW4gaXNzdWUgd2l0aCBgZml4dXBfdXNlcl9mYXVsdGAgY2FsbGVycy4gSXQgbW9kaWZpZXMgdGhlIHBhZ2UgZmF1bHQgaGFuZGxlcnMgaW4gRFJNIEdFTSBzaG1lbSBoZWxwZXIsIFRUTSBCTyBWTSwgYW5kIFZNV2dmeCB0byB1c2UgdGhlc2UgbmV3IGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB2aXJ0dWFsIEdQVSBkcml2ZXJzIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbW1hcCBhbmQgcGFnZSBmYXVsdHMsIG1ha2luZyB0aGVtIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFJNX1ZHRU0mIzM0OywKICAgICYjMzQ7RFJNX1ZLTVMmIzM0OywKICAgICYjMzQ7RFJNX1ZNV0dGWCYjMzQ7LAogICAgJiMzNDtEUk1fVFRNJiMzNDssCiAgICAmIzM0O0RSTV9HRU1fU0hNRU1fSEVMUEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dm1mX2luc2VydF9wZm5fbWt3cml0ZSYjMzQ7LAogICAgJiMzNDtfX3ZtZl9pbnNlcnRfcGZuX3Byb3QmIzM0OywKICAgICYjMzQ7dHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkJiMzNDssCiAgICAmIzM0O3Ztd19ib192bV9ta3dyaXRlJiMzNDssCiAgICAmIzM0O3Ztd19ib192bV9mYXVsdCYjMzQ7LAogICAgJiMzNDtkcm1fZ2VtX3NobWVtX21tYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgY29yZSBNTSBmdW5jdGlvbnMgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCB0byBhbGxvdyBpbnNlcnRpbmcgYSB3cml0YWJsZSBQVEUgZHVyaW5nIGEgcGFnZSBmYXVsdCBldmVuIHdoZW4gdGhlIFZNQSBpcyB1bmRlciB3cml0ZSBub3RpZmljYXRpb24uIFRoaXMgZml4ZXMgYW4gaXNzdWUgd2l0aCBgZml4dXBfdXNlcl9mYXVsdGAgY2FsbGVycy4gSXQgbW9kaWZpZXMgdGhlIHBhZ2UgZmF1bHQgaGFuZGxlcnMgaW4gRFJNIEdFTSBzaG1lbSBoZWxwZXIsIFRUTSBCTyBWTSwgYW5kIFZNV2dmeCB0byB1c2UgdGhlc2UgbmV3IGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB2aXJ0dWFsIEdQVSBkcml2ZXJzIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbW1hcCBhbmQgcGFnZSBmYXVsdHMsIG1ha2luZyB0aGVtIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEyOjIwLjM0NjU4NDM3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMDU0OTYyMzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTV9WR0VNXCIsXG4gICAgXCJEUk1fVktNU1wiLFxuICAgIFwiRFJNX1ZNV0dGWFwiLFxuICAgIFwiRFJNX1RUTVwiLFxuICAgIFwiRFJNX0dFTV9TSE1FTV9IRUxQRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlXCIsXG4gICAgXCJfX3ZtZl9pbnNlcnRfcGZuX3Byb3RcIixcbiAgICBcInR0bV9ib192bV9mYXVsdF9yZXNlcnZlZFwiLFxuICAgIFwidm13X2JvX3ZtX21rd3JpdGVcIixcbiAgICBcInZtd19ib192bV9mYXVsdFwiLFxuICAgIFwiZHJtX2dlbV9zaG1lbV9tbWFwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgY29yZSBNTSBmdW5jdGlvbnMgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCB0byBhbGxvdyBpbnNlcnRpbmcgYSB3cml0YWJsZSBQVEUgZHVyaW5nIGEgcGFnZSBmYXVsdCBldmVuIHdoZW4gdGhlIFZNQSBpcyB1bmRlciB3cml0ZSBub3RpZmljYXRpb24uIFRoaXMgZml4ZXMgYW4gaXNzdWUgd2l0aCBgZml4dXBfdXNlcl9mYXVsdGAgY2FsbGVycy4gSXQgbW9kaWZpZXMgdGhlIHBhZ2UgZmF1bHQgaGFuZGxlcnMgaW4gRFJNIEdFTSBzaG1lbSBoZWxwZXIsIFRUTSBCTyBWTSwgYW5kIFZNV2dmeCB0byB1c2UgdGhlc2UgbmV3IGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB2aXJ0dWFsIEdQVSBkcml2ZXJzIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbW1hcCBhbmQgcGFnZSBmYXVsdHMsIG1ha2luZyB0aGVtIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6MjAuMzQ2NTkwMjQyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDg1Mjc1OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZjI1NTFkODU2M2ViNGIyMjg2OTZkMmVlZDk0MDFiOTA4ZTE3YzRkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMDI6MTI6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuY1xcbmluZGV4IGM5ODk0NTllYjIxNTkuLmM4MWJlM2U5NzMxNzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuY1xcbkBAIC01ODksMTEgKzU4OSwyNSBAQCBzdGF0aWMgdm9pZCBkcm1fZ2VtX3NobWVtX3JlY29yZF9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbiBcXHRmb2xpb19tYXJrX2RpcnR5KHBhZ2VfZm9saW8oc2htZW0tXFx1MDAzZXBhZ2VzW3BhZ2Vfb2Zmc2V0XSkpO1xcbiB9XFxuIFxcbisvKlxcbisgKiBCZWNhdXNlIHRoZSB2bV9vcHMgaGF2ZSBhIC5wZm5fbWt3cml0ZSgpIGNhbGxiYWNrLCB2bWFfc2V0X3BhZ2VfcHJvdCgpXFxuKyAqIGhhcyBjbGVhcmVkIHRoZSB3cml0ZSBiaXQgZnJvbSB2bWEtXFx1MDAzZXZtX3BhZ2VfcHJvdC4gIHZtZl9pbnNlcnRfcGZuKClcXG4rICogd291bGQgaW5zdGFsbCBhIHJlYWQtb25seSBlbnRyeSBldmVuIGZvciBhIHdyaXRlIGZhdWx0LCByZWx5aW5nIG9uIGFcXG4rICogc2Vjb25kIGZhdWx0IHRvIHJlYWNoIC5wZm5fbWt3cml0ZSgpIGFuZCB1cGdyYWRlIGl0LCBidXQgdGhhdCBzZWNvbmRcXG4rICogZmF1bHQgbmV2ZXIgaGFwcGVucyBmb3IgZml4dXBfdXNlcl9mYXVsdCgpIGNhbGxlcnMgdGhhdCBkaXJlY3RseVxcbisgKiB3YWxrIHRoZSBwYWdlIHRhYmxlcyB3aXRoIGZvbGxvd19wZm5tYXBfc3RhcnQoKS4gIFRvIGVuc3VyZSB0aGF0XFxuKyAqIHRoZXkgZG9uJ3Qgc2VlIHRoZSByZWFkLW9ubHkgZW50cnksIHBhc3MgRkFVTFRfRkxBR19XUklURSBpbmZvIGRvd25cXG4rICogdG8gaW5zdGFsbCBhIHdyaXRhYmxlIGVudHJ5IHJpZ2h0IGF3YXkuICBCZWNhdXNlIC5wZm5fbWt3cml0ZSgpIGlzXFxuKyAqIG5vdCBpbnZva2VkLCByZWNvcmQgdGhlIHdyaXRlIGFmdGVyd2FyZHMuXFxuKyAqL1xcbiBzdGF0aWMgdm1fZmF1bHRfdCB0cnlfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgdW5zaWduZWQgaW50IG9yZGVyLFxcbiBcXHRcXHRcXHRcXHQgdW5zaWduZWQgbG9uZyBwZm4pXFxuIHtcXG4rXFx0Ym9vbCB3cml0ZSA9IHZtZi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBGQVVMVF9GTEFHX1dSSVRFO1xcbitcXHR2bV9mYXVsdF90IHJldCA9IFZNX0ZBVUxUX0ZBTExCQUNLO1xcbitcXG4gXFx0aWYgKCFvcmRlcikge1xcbi1cXHRcXHRyZXR1cm4gdm1mX2luc2VydF9wZm4odm1mLVxcdTAwM2V2bWEsIHZtZi1cXHUwMDNlYWRkcmVzcywgcGZuKTtcXG4rXFx0XFx0cmV0ID0gdm1mX2luc2VydF9wZm5fbWt3cml0ZSh2bWYtXFx1MDAzZXZtYSwgdm1mLVxcdTAwM2VhZGRyZXNzLCBwZm4sIHdyaXRlKTtcXG4gI2lmZGVmIENPTkZJR19BUkNIX1NVUFBPUlRTX1BNRF9QRk5NQVBcXG4gXFx0fSBlbHNlIGlmIChvcmRlciA9PSBQTURfT1JERVIpIHtcXG4gXFx0XFx0dW5zaWduZWQgbG9uZyBwYWRkciA9IHBmbiBcXHUwMDNjXFx1MDAzYyBQQUdFX1NISUZUO1xcbkBAIC02MDEsMjcgKzYxNSwxNSBAQCBzdGF0aWMgdm1fZmF1bHRfdCB0cnlfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgdW5zaWduZWQgaW50IG9yZGVyLFxcbiBcXG4gXFx0XFx0aWYgKGFsaWduZWQgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIGZvbGlvX3Rlc3RfcG1kX21hcHBhYmxlKHBhZ2VfZm9saW8ocGZuX3RvX3BhZ2UocGZuKSkpKSB7XFxuLVxcdFxcdFxcdHZtX2ZhdWx0X3QgcmV0O1xcbi1cXG4gXFx0XFx0XFx0cGZuIFxcdTAwMjY9IFBNRF9NQVNLIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQ7XFxuLVxcbi1cXHRcXHRcXHQvKiBVbmxpa2UgUFRFcyB3aGljaCBhcmUgYXV0b21hdGljYWxseSB1cGdyYWRlZCB0b1xcbi1cXHRcXHRcXHQgKiB3cml0ZWFibGUgZW50cmllcywgdGhlIFBNRCB1cGdyYWRlcyBnbyB0aHJvdWdoXFxuLVxcdFxcdFxcdCAqIC5odWdlX2ZhdWx0KCkuIE1ha2Ugc3VyZSB3ZSBwYXNzIHRoZSBcXFwid3JpdGVcXFwiIGluZm9cXG4tXFx0XFx0XFx0ICogYWxvbmcgaW4gdGhhdCBjYXNlLlxcbi1cXHRcXHRcXHQgKiBUaGlzIGFsc28gbWVhbnMgd2UgaGF2ZSB0byByZWNvcmQgdGhlIHdyaXRlIGZhdWx0XFxuLVxcdFxcdFxcdCAqIGhlcmUsIGluc3RlYWQgb2YgaW4gLnBmbl9ta3dyaXRlKCkuXFxuLVxcdFxcdFxcdCAqL1xcbi1cXHRcXHRcXHRyZXQgPSB2bWZfaW5zZXJ0X3Bmbl9wbWQodm1mLCBwZm4sXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCB2bWYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgRkFVTFRfRkxBR19XUklURSk7XFxuLVxcdFxcdFxcdGlmIChyZXQgPT0gVk1fRkFVTFRfTk9QQUdFIFxcdTAwMjZcXHUwMDI2ICh2bWYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgRkFVTFRfRkxBR19XUklURSkpXFxuLVxcdFxcdFxcdFxcdGRybV9nZW1fc2htZW1fcmVjb3JkX21rd3JpdGUodm1mKTtcXG4tXFxuLVxcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdFxcdHJldCA9IHZtZl9pbnNlcnRfcGZuX3BtZCh2bWYsIHBmbiwgd3JpdGUpO1xcbiBcXHRcXHR9XFxuICNlbmRpZlxcbiBcXHR9XFxuLVxcdHJldHVybiBWTV9GQVVMVF9GQUxMQkFDSztcXG4rXFxuK1xcdGlmIChyZXQgPT0gVk1fRkFVTFRfTk9QQUdFIFxcdTAwMjZcXHUwMDI2IHdyaXRlKVxcbitcXHRcXHRkcm1fZ2VtX3NobWVtX3JlY29yZF9ta3dyaXRlKHZtZik7XFxuK1xcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2bV9mYXVsdF90IGRybV9nZW1fc2htZW1fYW55X2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLCB1bnNpZ25lZCBpbnQgb3JkZXIpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jXFxuaW5kZXggYTgwNTEwNDg5YzQ1Ni4uZWYyN2EyZDdhZmMwNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uY1xcbkBAIC0yNjMsNyArMjYzLDggQEAgdm1fZmF1bHRfdCB0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsXFxuIFxcdFxcdCAqIGF0IGFyYml0cmFyeSB0aW1lcyB3aGlsZSB0aGUgZGF0YSBpcyBtbWFwJ2VkLlxcbiBcXHRcXHQgKiBTZWUgdm1mX2luc2VydF9wZm5fcHJvdCgpIGZvciBhIGRpc2N1c3Npb24uXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRyZXQgPSB2bWZfaW5zZXJ0X3Bmbl9wcm90KHZtYSwgYWRkcmVzcywgcGZuLCBwcm90KTtcXG4rXFx0XFx0cmV0ID0gX192bWZfaW5zZXJ0X3Bmbl9wcm90KHZtYSwgYWRkcmVzcywgcGZuLCBwcm90LFxcbitcXHRcXHRcXHRcXHRcXHQgICAgaSA9PSAwIFxcdTAwMjZcXHUwMDI2ICEhKHZtZi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBGQVVMVF9GTEFHX1dSSVRFKSk7XFxuIFxcbiBcXHRcXHQvKiBOZXZlciBlcnJvciBvbiBwcmVmYXVsdGVkIFBURXMgKi9cXG4gXFx0XFx0aWYgKHVubGlrZWx5KChyZXQgXFx1MDAyNiBWTV9GQVVMVF9FUlJPUikpKSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuY1xcbmluZGV4IDQ1NTYxYmMxYzllZmYuLjMwOTk1NThjMDc2MmYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jXFxuQEAgLTM5OCwxNSArMzk4LDMzIEBAIHZvaWQgdm13X2JvX2RpcnR5X2NsZWFyX3JlcyhzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMpXFxuIFxcdFxcdGRpcnR5LVxcdTAwM2VlbmQgPSByZXNfc3RhcnQ7XFxuIH1cXG4gXFxuK3N0YXRpYyB2bV9mYXVsdF90IHZtd19ib19kaXJ0eV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKVxcbit7XFxuK1xcdHVuc2lnbmVkIGxvbmcgcGFnZV9vZmZzZXQ7XFxuK1xcdHN0cnVjdCB2bXdfYm8gKnZibyA9IHRvX3Ztd19ibyhcXHUwMDI2Ym8tXFx1MDAzZWJhc2UpO1xcbitcXG4rXFx0cGFnZV9vZmZzZXQgPSB2bWYtXFx1MDAzZXBnb2ZmIC0gZHJtX3ZtYV9ub2RlX3N0YXJ0KFxcdTAwMjZiby1cXHUwMDNlYmFzZS52bWFfbm9kZSk7XFxuK1xcdGlmICh1bmxpa2VseShwYWdlX29mZnNldCBcXHUwMDNlPSBQRk5fVVAoYm8tXFx1MDAzZXJlc291cmNlLVxcdTAwM2VzaXplKSkpXFxuK1xcdFxcdHJldHVybiBWTV9GQVVMVF9TSUdCVVM7XFxuK1xcbitcXHRpZiAodmJvLVxcdTAwM2VkaXJ0eSBcXHUwMDI2XFx1MDAyNiB2Ym8tXFx1MDAzZWRpcnR5LVxcdTAwM2VtZXRob2QgPT0gVk1XX0JPX0RJUlRZX01LV1JJVEUgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICF0ZXN0X2JpdChwYWdlX29mZnNldCwgXFx1MDAyNnZiby1cXHUwMDNlZGlydHktXFx1MDAzZWJpdG1hcFswXSkpIHtcXG4rXFx0XFx0c3RydWN0IHZtd19ib19kaXJ0eSAqZGlydHkgPSB2Ym8tXFx1MDAzZWRpcnR5O1xcbitcXG4rXFx0XFx0X19zZXRfYml0KHBhZ2Vfb2Zmc2V0LCBcXHUwMDI2ZGlydHktXFx1MDAzZWJpdG1hcFswXSk7XFxuK1xcdFxcdGRpcnR5LVxcdTAwM2VzdGFydCA9IG1pbihkaXJ0eS1cXHUwMDNlc3RhcnQsIHBhZ2Vfb2Zmc2V0KTtcXG4rXFx0XFx0ZGlydHktXFx1MDAzZWVuZCA9IG1heChkaXJ0eS1cXHUwMDNlZW5kLCBwYWdlX29mZnNldCArIDEpO1xcbitcXHR9XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiB2bV9mYXVsdF90IHZtd19ib192bV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbiB7XFxuIFxcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gdm1mLVxcdTAwM2V2bWE7XFxuIFxcdHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSAoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICopXFxuIFxcdCAgICB2bWEtXFx1MDAzZXZtX3ByaXZhdGVfZGF0YTtcXG4gXFx0dm1fZmF1bHRfdCByZXQ7XFxuLVxcdHVuc2lnbmVkIGxvbmcgcGFnZV9vZmZzZXQ7XFxuIFxcdHVuc2lnbmVkIGludCBzYXZlX2ZsYWdzO1xcbi1cXHRzdHJ1Y3Qgdm13X2JvICp2Ym8gPSB0b192bXdfYm8oXFx1MDAyNmJvLVxcdTAwM2ViYXNlKTtcXG4gXFxuIFxcdC8qXFxuIFxcdCAqIG1rd3JpdGUoKSBkb2Vzbid0IGhhbmRsZSB0aGUgVk1fRkFVTFRfUkVUUlkgcmV0dXJuIHZhbHVlIGNvcnJlY3RseS5cXG5AQCAtNDE5LDIyICs0MzcsNyBAQCB2bV9mYXVsdF90IHZtd19ib192bV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4tXFx0cGFnZV9vZmZzZXQgPSB2bWYtXFx1MDAzZXBnb2ZmIC0gZHJtX3ZtYV9ub2RlX3N0YXJ0KFxcdTAwMjZiby1cXHUwMDNlYmFzZS52bWFfbm9kZSk7XFxuLVxcdGlmICh1bmxpa2VseShwYWdlX29mZnNldCBcXHUwMDNlPSBQRk5fVVAoYm8tXFx1MDAzZXJlc291cmNlLVxcdTAwM2VzaXplKSkpIHtcXG4tXFx0XFx0cmV0ID0gVk1fRkFVTFRfU0lHQlVTO1xcbi1cXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuLVxcdH1cXG4tXFxuLVxcdGlmICh2Ym8tXFx1MDAzZWRpcnR5IFxcdTAwMjZcXHUwMDI2IHZiby1cXHUwMDNlZGlydHktXFx1MDAzZW1ldGhvZCA9PSBWTVdfQk9fRElSVFlfTUtXUklURSBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgIXRlc3RfYml0KHBhZ2Vfb2Zmc2V0LCBcXHUwMDI2dmJvLVxcdTAwM2VkaXJ0eS1cXHUwMDNlYml0bWFwWzBdKSkge1xcbi1cXHRcXHRzdHJ1Y3Qgdm13X2JvX2RpcnR5ICpkaXJ0eSA9IHZiby1cXHUwMDNlZGlydHk7XFxuLVxcbi1cXHRcXHRfX3NldF9iaXQocGFnZV9vZmZzZXQsIFxcdTAwMjZkaXJ0eS1cXHUwMDNlYml0bWFwWzBdKTtcXG4tXFx0XFx0ZGlydHktXFx1MDAzZXN0YXJ0ID0gbWluKGRpcnR5LVxcdTAwM2VzdGFydCwgcGFnZV9vZmZzZXQpO1xcbi1cXHRcXHRkaXJ0eS1cXHUwMDNlZW5kID0gbWF4KGRpcnR5LVxcdTAwM2VlbmQsIHBhZ2Vfb2Zmc2V0ICsgMSk7XFxuLVxcdH1cXG4tXFxuLW91dF91bmxvY2s6XFxuK1xcdHJldCA9IHZtd19ib19kaXJ0eV9ta3dyaXRlKHZtZiwgYm8pO1xcbiBcXHRkbWFfcmVzdl91bmxvY2soYm8tXFx1MDAzZWJhc2UucmVzdik7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtNDg0LDYgKzQ4Nyw5IEBAIHZtX2ZhdWx0X3Qgdm13X2JvX3ZtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbiBcXHRcXHRwcm90ID0gdm1fZ2V0X3BhZ2VfcHJvdCh2bWEtXFx1MDAzZXZtX2ZsYWdzKTtcXG4gXFxuIFxcdHJldCA9IHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZCh2bWYsIHByb3QsIG51bV9wcmVmYXVsdCk7XFxuK1xcdGlmIChyZXQgPT0gVk1fRkFVTFRfTk9QQUdFIFxcdTAwMjZcXHUwMDI2ICh2bWYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgRkFVTFRfRkxBR19XUklURSkpXFxuK1xcdFxcdFdBUk5fT05fT05DRSh2bXdfYm9fZGlydHlfbWt3cml0ZSh2bWYsIGJvKSk7XFxuK1xcbiBcXHRpZiAocmV0ID09IFZNX0ZBVUxUX1JFVFJZIFxcdTAwMjZcXHUwMDI2ICEodm1mLVxcdTAwM2VmbGFncyBcXHUwMDI2IEZBVUxUX0ZMQUdfUkVUUllfTk9XQUlUKSlcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaFxcbmluZGV4IDQ4NWRmOWMyZGJkZGIuLjQ3ZWFjZjY0MGMwMzUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9tbS5oXFxuQEAgLTQ1NDgsNiArNDU0OCwxMCBAQCB2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuIFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgcGZuKTtcXG4gdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3Bmbl9wcm90KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuIFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwZ3Byb3QpO1xcbit2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuX21rd3JpdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4rXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBwZm4sIGJvb2wgd3JpdGUpO1xcbit2bV9mYXVsdF90IF9fdm1mX2luc2VydF9wZm5fcHJvdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbitcXHRcXHRcXHR1bnNpZ25lZCBsb25nIHBmbiwgcGdwcm90X3QgcGdwcm90LCBib29sIG1rd3JpdGUpO1xcbiB2bV9mYXVsdF90IHZtZl9pbnNlcnRfbWl4ZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4gXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBwZm4pO1xcbiB2bV9mYXVsdF90IHZtZl9pbnNlcnRfbWl4ZWRfbWt3cml0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZV9tZW1vcnkuYyBiL21tL2h1Z2VfbWVtb3J5LmNcXG5pbmRleCBiNWQxZTlkNDQ2M2QwLi4yZjRkY2FhODE5Yjc5IDEwMDY0NFxcbi0tLSBhL21tL2h1Z2VfbWVtb3J5LmNcXG4rKysgYi9tbS9odWdlX21lbW9yeS5jXFxuQEAgLTE2MTUsNyArMTYxNSw3IEBAIHN0YXRpYyB2bV9mYXVsdF90IGluc2VydF9wbWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4gICogQHBmbjogcGZuIHRvIGluc2VydFxcbiAgKiBAd3JpdGU6IHdoZXRoZXIgaXQncyBhIHdyaXRlIGZhdWx0XFxuICAqXFxuLSAqIEluc2VydCBhIHBtZCBzaXplIHBmbi4gU2VlIHZtZl9pbnNlcnRfcGZuKCkgZm9yIGFkZGl0aW9uYWwgaW5mby5cXG4rICogSW5zZXJ0IGEgcG1kIHNpemUgcGZuLiBTZWUgdm1mX2luc2VydF9wZm5fbWt3cml0ZSgpIGZvciBhZGRpdGlvbmFsIGluZm8uXFxuICAqXFxuICAqIFJldHVybjogdm1fZmF1bHRfdCB2YWx1ZS5cXG4gICovXFxuZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmNcXG5pbmRleCBmZjMzOGMyYWJlOTIzLi5kM2QxMGIyZTQ3OWE0IDEwMDY0NFxcbi0tLSBhL21tL21lbW9yeS5jXFxuKysrIGIvbW0vbWVtb3J5LmNcXG5AQCAtMjcxOCw2ICsyNzE4LDM0IEBAIHN0YXRpYyB2bV9mYXVsdF90IGluc2VydF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4gXFx0cmV0dXJuIFZNX0ZBVUxUX05PUEFHRTtcXG4gfVxcbiBcXG4rdm1fZmF1bHRfdCBfX3ZtZl9pbnNlcnRfcGZuX3Byb3Qoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuK1xcdFxcdFxcdHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBwZm4sIHBncHJvdF90IHBncHJvdCxcXG4rXFx0XFx0XFx0Ym9vbCBta3dyaXRlKVxcbit7XFxuK1xcdC8qXFxuK1xcdCAqIFRlY2huaWNhbGx5LCBhcmNoaXRlY3R1cmVzIHdpdGggcHRlX3NwZWNpYWwgY2FuIGF2b2lkIGFsbCB0aGVzZVxcbitcXHQgKiByZXN0cmljdGlvbnMgKHNhbWUgZm9yIHJlbWFwX3Bmbl9yYW5nZSkuICBIb3dldmVyIHdlIHdvdWxkIGxpa2VcXG4rXFx0ICogY29uc2lzdGVuY3kgaW4gdGVzdGluZyBhbmQgZmVhdHVyZSBwYXJpdHkgYW1vbmcgYWxsLCBzbyB3ZSBzaG91bGRcXG4rXFx0ICogdHJ5IHRvIGtlZXAgdGhlc2UgaW52YXJpYW50cyBpbiBwbGFjZSBmb3IgZXZlcnlib2R5LlxcbitcXHQgKi9cXG4rXFx0QlVHX09OKCEodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKSk7XFxuK1xcdEJVR19PTigodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKSA9PVxcbitcXHRcXHRcXHRcXHRcXHRcXHQoVk1fUEZOTUFQfFZNX01JWEVETUFQKSk7XFxuK1xcdEJVR19PTigodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1BGTk1BUCkgXFx1MDAyNlxcdTAwMjYgaXNfY293X21hcHBpbmcodm1hLVxcdTAwM2V2bV9mbGFncykpO1xcbitcXHRCVUdfT04oKHZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiBWTV9NSVhFRE1BUCkgXFx1MDAyNlxcdTAwMjYgcGZuX3ZhbGlkKHBmbikpO1xcbitcXG4rXFx0aWYgKGFkZHIgXFx1MDAzYyB2bWEtXFx1MDAzZXZtX3N0YXJ0IHx8IGFkZHIgXFx1MDAzZT0gdm1hLVxcdTAwM2V2bV9lbmQpXFxuK1xcdFxcdHJldHVybiBWTV9GQVVMVF9TSUdCVVM7XFxuK1xcbitcXHRpZiAoIXBmbl9tb2RpZnlfYWxsb3dlZChwZm4sIHBncHJvdCkpXFxuK1xcdFxcdHJldHVybiBWTV9GQVVMVF9TSUdCVVM7XFxuK1xcbitcXHRwZm5tYXBfc2V0dXBfY2FjaGVtb2RlX3BmbihwZm4sIFxcdTAwMjZwZ3Byb3QpO1xcbitcXG4rXFx0cmV0dXJuIGluc2VydF9wZm4odm1hLCBhZGRyLCBwZm4sIHBncHJvdCwgbWt3cml0ZSk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTChfX3ZtZl9pbnNlcnRfcGZuX3Byb3QpO1xcbitcXG4gLyoqXFxuICAqIHZtZl9pbnNlcnRfcGZuX3Byb3QgLSBpbnNlcnQgc2luZ2xlIHBmbiBpbnRvIHVzZXIgdm1hIHdpdGggc3BlY2lmaWVkIHBncHJvdFxcbiAgKiBAdm1hOiB1c2VyIHZtYSB0byBtYXAgdG9cXG5AQCAtMjc1NCwyNyArMjc4Miw3IEBAIHN0YXRpYyB2bV9mYXVsdF90IGluc2VydF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4gdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3Bmbl9wcm90KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuIFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwZ3Byb3QpXFxuIHtcXG4tXFx0LypcXG4tXFx0ICogVGVjaG5pY2FsbHksIGFyY2hpdGVjdHVyZXMgd2l0aCBwdGVfc3BlY2lhbCBjYW4gYXZvaWQgYWxsIHRoZXNlXFxuLVxcdCAqIHJlc3RyaWN0aW9ucyAoc2FtZSBmb3IgcmVtYXBfcGZuX3JhbmdlKS4gIEhvd2V2ZXIgd2Ugd291bGQgbGlrZVxcbi1cXHQgKiBjb25zaXN0ZW5jeSBpbiB0ZXN0aW5nIGFuZCBmZWF0dXJlIHBhcml0eSBhbW9uZyBhbGwsIHNvIHdlIHNob3VsZFxcbi1cXHQgKiB0cnkgdG8ga2VlcCB0aGVzZSBpbnZhcmlhbnRzIGluIHBsYWNlIGZvciBldmVyeWJvZHkuXFxuLVxcdCAqL1xcbi1cXHRCVUdfT04oISh2bWEtXFx1MDAzZXZtX2ZsYWdzIFxcdTAwMjYgKFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpKTtcXG4tXFx0QlVHX09OKCh2bWEtXFx1MDAzZXZtX2ZsYWdzIFxcdTAwMjYgKFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpID09XFxuLVxcdFxcdFxcdFxcdFxcdFxcdChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKTtcXG4tXFx0QlVHX09OKCh2bWEtXFx1MDAzZXZtX2ZsYWdzIFxcdTAwMjYgVk1fUEZOTUFQKSBcXHUwMDI2XFx1MDAyNiBpc19jb3dfbWFwcGluZyh2bWEtXFx1MDAzZXZtX2ZsYWdzKSk7XFxuLVxcdEJVR19PTigodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX01JWEVETUFQKSBcXHUwMDI2XFx1MDAyNiBwZm5fdmFsaWQocGZuKSk7XFxuLVxcbi1cXHRpZiAoYWRkciBcXHUwMDNjIHZtYS1cXHUwMDNldm1fc3RhcnQgfHwgYWRkciBcXHUwMDNlPSB2bWEtXFx1MDAzZXZtX2VuZClcXG4tXFx0XFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcXG4tXFxuLVxcdGlmICghcGZuX21vZGlmeV9hbGxvd2VkKHBmbiwgcGdwcm90KSlcXG4tXFx0XFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcXG4tXFxuLVxcdHBmbm1hcF9zZXR1cF9jYWNoZW1vZGVfcGZuKHBmbiwgXFx1MDAyNnBncHJvdCk7XFxuLVxcbi1cXHRyZXR1cm4gaW5zZXJ0X3Bmbih2bWEsIGFkZHIsIHBmbiwgcGdwcm90LCBmYWxzZSk7XFxuK1xcdHJldHVybiBfX3ZtZl9pbnNlcnRfcGZuX3Byb3Qodm1hLCBhZGRyLCBwZm4sIHBncHJvdCwgZmFsc2UpO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0wodm1mX2luc2VydF9wZm5fcHJvdCk7XFxuIFxcbkBAIC0yODA1LDYgKzI4MTMsMzEgQEAgdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbiB9XFxuIEVYUE9SVF9TWU1CT0wodm1mX2luc2VydF9wZm4pO1xcbiBcXG4rLyoqXFxuKyAqIHZtZl9pbnNlcnRfcGZuX21rd3JpdGUgLSBpbnNlcnQgc2luZ2xlIHBmbiBpbnRvIHVzZXIgdm1hLCBwb3NzaWJseSB3cml0YWJsZVxcbisgKiBAdm1hOiB1c2VyIHZtYSB0byBtYXAgdG9cXG4rICogQGFkZHI6IHRhcmdldCB1c2VyIGFkZHJlc3Mgb2YgdGhpcyBwYWdlXFxuKyAqIEBwZm46IHNvdXJjZSBrZXJuZWwgcGZuXFxuKyAqIEB3cml0ZTogd2hldGhlciB0aGUgUFRFIHNob3VsZCBiZSBpbnN0YWxsZWQgd3JpdGFibGVcXG4rICpcXG4rICogTGlrZSB2bWZfaW5zZXJ0X3BmbigpLCBleGNlcHQgdGhhdCBAd3JpdGUgYWxsb3dzIGluc3RhbGxpbmcgYSB3cml0YWJsZVxcbisgKiBQVEUgZXZlbiB3aGVuIEB2bWEgaXMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uLCBpLmUuIHdoZW4gaXQgaGFzIGFcXG4rICogLnBhZ2VfbWt3cml0ZSgpIG9yIC5wZm5fbWt3cml0ZSgpIGNhbGxiYWNrIGFuZCB2bWFfc2V0X3BhZ2VfcHJvdCgpIGhhc1xcbisgKiB0aGVyZWZvcmUgY2xlYXJlZCB0aGUgd3JpdGUgYml0IGZyb20gQHZtYS1cXHUwMDNldm1fcGFnZV9wcm90LlxcbisgKlxcbisgKiBOb3RlIHRoYXQgbmVpdGhlciBvZiB0aGVzZSBjYWxsYmFja3MgaXMgaW52b2tlZCwgc28gdGhlIGNhbGxlciBtdXN0XFxuKyAqIGl0c2VsZiBkbyB3aGF0ZXZlciB0aGV5IHdvdWxkIGhhdmUgZG9uZSBpZiBAd3JpdGUgaXMgdHJ1ZS5cXG4rICpcXG4rICogQ29udGV4dDogUHJvY2VzcyBjb250ZXh0LiAgTWF5IGFsbG9jYXRlIHVzaW5nICVHRlBfS0VSTkVMLlxcbisgKiBSZXR1cm46IHZtX2ZhdWx0X3QgdmFsdWUuXFxuKyAqL1xcbit2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuX21rd3JpdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4rXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBwZm4sIGJvb2wgd3JpdGUpXFxuK3tcXG4rXFx0cmV0dXJuIF9fdm1mX2luc2VydF9wZm5fcHJvdCh2bWEsIGFkZHIsIHBmbiwgdm1hLVxcdTAwM2V2bV9wYWdlX3Byb3QsIHdyaXRlKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MKHZtZl9pbnNlcnRfcGZuX21rd3JpdGUpO1xcbitcXG4gc3RhdGljIGJvb2wgdm1fbWl4ZWRfb2soc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgcGZuLFxcbiBcXHRcXHRcXHRib29sIG1rd3JpdGUpXFxuIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6MjAuNzU1OTI1NDI2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODI2NDU2MTAwMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNX1ZHRU1cIixcbiAgICBcIkRSTV9WS01TXCIsXG4gICAgXCJEUk1fVk1XR0ZYXCIsXG4gICAgXCJEUk1fVFRNXCIsXG4gICAgXCJEUk1fR0VNX1NITUVNX0hFTFBFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZtZl9pbnNlcnRfcGZuX21rd3JpdGVcIixcbiAgICBcIl9fdm1mX2luc2VydF9wZm5fcHJvdFwiLFxuICAgIFwidHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkXCIsXG4gICAgXCJ2bXdfYm9fdm1fbWt3cml0ZVwiLFxuICAgIFwidm13X2JvX3ZtX2ZhdWx0XCIsXG4gICAgXCJkcm1fZ2VtX3NobWVtX21tYXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBjb3JlIE1NIGZ1bmN0aW9ucyBgdm1mX2luc2VydF9wZm5fbWt3cml0ZWAgYW5kIGBfX3ZtZl9pbnNlcnRfcGZuX3Byb3RgIHRvIGFsbG93IGluc2VydGluZyBhIHdyaXRhYmxlIFBURSBkdXJpbmcgYSBwYWdlIGZhdWx0IGV2ZW4gd2hlbiB0aGUgVk1BIGlzIHVuZGVyIHdyaXRlIG5vdGlmaWNhdGlvbi4gVGhpcyBmaXhlcyBhbiBpc3N1ZSB3aXRoIGBmaXh1cF91c2VyX2ZhdWx0YCBjYWxsZXJzLiBJdCBtb2RpZmllcyB0aGUgcGFnZSBmYXVsdCBoYW5kbGVycyBpbiBEUk0gR0VNIHNobWVtIGhlbHBlciwgVFRNIEJPIFZNLCBhbmQgVk1XZ2Z4IHRvIHVzZSB0aGVzZSBuZXcgZnVuY3Rpb25zLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHZpcnR1YWwgR1BVIGRyaXZlcnMgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBtbWFwIGFuZCBwYWdlIGZhdWx0cywgbWFraW5nIHRoZW0gaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkZjI1NTFkODU2M2ViNGIyMjg2OTZkMmVlZDk0MDFiOTA4ZTE3YzRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAwMjoxMjoxOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmNcbmluZGV4IGM5ODk0NTllYjIxNTkuLmM4MWJlM2U5NzMxNzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmNcbkBAIC01ODksMTEgKzU4OSwyNSBAQCBzdGF0aWMgdm9pZCBkcm1fZ2VtX3NobWVtX3JlY29yZF9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIFx0Zm9saW9fbWFya19kaXJ0eShwYWdlX2ZvbGlvKHNobWVtLVx1MDAzZXBhZ2VzW3BhZ2Vfb2Zmc2V0XSkpO1xuIH1cbiBcbisvKlxuKyAqIEJlY2F1c2UgdGhlIHZtX29wcyBoYXZlIGEgLnBmbl9ta3dyaXRlKCkgY2FsbGJhY2ssIHZtYV9zZXRfcGFnZV9wcm90KClcbisgKiBoYXMgY2xlYXJlZCB0aGUgd3JpdGUgYml0IGZyb20gdm1hLVx1MDAzZXZtX3BhZ2VfcHJvdC4gIHZtZl9pbnNlcnRfcGZuKClcbisgKiB3b3VsZCBpbnN0YWxsIGEgcmVhZC1vbmx5IGVudHJ5IGV2ZW4gZm9yIGEgd3JpdGUgZmF1bHQsIHJlbHlpbmcgb24gYVxuKyAqIHNlY29uZCBmYXVsdCB0byByZWFjaCAucGZuX21rd3JpdGUoKSBhbmQgdXBncmFkZSBpdCwgYnV0IHRoYXQgc2Vjb25kXG4rICogZmF1bHQgbmV2ZXIgaGFwcGVucyBmb3IgZml4dXBfdXNlcl9mYXVsdCgpIGNhbGxlcnMgdGhhdCBkaXJlY3RseVxuKyAqIHdhbGsgdGhlIHBhZ2UgdGFibGVzIHdpdGggZm9sbG93X3Bmbm1hcF9zdGFydCgpLiAgVG8gZW5zdXJlIHRoYXRcbisgKiB0aGV5IGRvbid0IHNlZSB0aGUgcmVhZC1vbmx5IGVudHJ5LCBwYXNzIEZBVUxUX0ZMQUdfV1JJVEUgaW5mbyBkb3duXG4rICogdG8gaW5zdGFsbCBhIHdyaXRhYmxlIGVudHJ5IHJpZ2h0IGF3YXkuICBCZWNhdXNlIC5wZm5fbWt3cml0ZSgpIGlzXG4rICogbm90IGludm9rZWQsIHJlY29yZCB0aGUgd3JpdGUgYWZ0ZXJ3YXJkcy5cbisgKi9cbiBzdGF0aWMgdm1fZmF1bHRfdCB0cnlfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgdW5zaWduZWQgaW50IG9yZGVyLFxuIFx0XHRcdFx0IHVuc2lnbmVkIGxvbmcgcGZuKVxuIHtcbitcdGJvb2wgd3JpdGUgPSB2bWYtXHUwMDNlZmxhZ3MgXHUwMDI2IEZBVUxUX0ZMQUdfV1JJVEU7XG4rXHR2bV9mYXVsdF90IHJldCA9IFZNX0ZBVUxUX0ZBTExCQUNLO1xuK1xuIFx0aWYgKCFvcmRlcikge1xuLVx0XHRyZXR1cm4gdm1mX2luc2VydF9wZm4odm1mLVx1MDAzZXZtYSwgdm1mLVx1MDAzZWFkZHJlc3MsIHBmbik7XG4rXHRcdHJldCA9IHZtZl9pbnNlcnRfcGZuX21rd3JpdGUodm1mLVx1MDAzZXZtYSwgdm1mLVx1MDAzZWFkZHJlc3MsIHBmbiwgd3JpdGUpO1xuICNpZmRlZiBDT05GSUdfQVJDSF9TVVBQT1JUU19QTURfUEZOTUFQXG4gXHR9IGVsc2UgaWYgKG9yZGVyID09IFBNRF9PUkRFUikge1xuIFx0XHR1bnNpZ25lZCBsb25nIHBhZGRyID0gcGZuIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUO1xuQEAgLTYwMSwyNyArNjE1LDE1IEBAIHN0YXRpYyB2bV9mYXVsdF90IHRyeV9pbnNlcnRfcGZuKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4gXG4gXHRcdGlmIChhbGlnbmVkIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgZm9saW9fdGVzdF9wbWRfbWFwcGFibGUocGFnZV9mb2xpbyhwZm5fdG9fcGFnZShwZm4pKSkpIHtcbi1cdFx0XHR2bV9mYXVsdF90IHJldDtcbi1cbiBcdFx0XHRwZm4gXHUwMDI2PSBQTURfTUFTSyBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVDtcbi1cbi1cdFx0XHQvKiBVbmxpa2UgUFRFcyB3aGljaCBhcmUgYXV0b21hdGljYWxseSB1cGdyYWRlZCB0b1xuLVx0XHRcdCAqIHdyaXRlYWJsZSBlbnRyaWVzLCB0aGUgUE1EIHVwZ3JhZGVzIGdvIHRocm91Z2hcbi1cdFx0XHQgKiAuaHVnZV9mYXVsdCgpLiBNYWtlIHN1cmUgd2UgcGFzcyB0aGUgXCJ3cml0ZVwiIGluZm9cbi1cdFx0XHQgKiBhbG9uZyBpbiB0aGF0IGNhc2UuXG4tXHRcdFx0ICogVGhpcyBhbHNvIG1lYW5zIHdlIGhhdmUgdG8gcmVjb3JkIHRoZSB3cml0ZSBmYXVsdFxuLVx0XHRcdCAqIGhlcmUsIGluc3RlYWQgb2YgaW4gLnBmbl9ta3dyaXRlKCkuXG4tXHRcdFx0ICovXG4tXHRcdFx0cmV0ID0gdm1mX2luc2VydF9wZm5fcG1kKHZtZiwgcGZuLFxuLVx0XHRcdFx0XHRcdCB2bWYtXHUwMDNlZmxhZ3MgXHUwMDI2IEZBVUxUX0ZMQUdfV1JJVEUpO1xuLVx0XHRcdGlmIChyZXQgPT0gVk1fRkFVTFRfTk9QQUdFIFx1MDAyNlx1MDAyNiAodm1mLVx1MDAzZWZsYWdzIFx1MDAyNiBGQVVMVF9GTEFHX1dSSVRFKSlcbi1cdFx0XHRcdGRybV9nZW1fc2htZW1fcmVjb3JkX21rd3JpdGUodm1mKTtcbi1cbi1cdFx0XHRyZXR1cm4gcmV0O1xuK1x0XHRcdHJldCA9IHZtZl9pbnNlcnRfcGZuX3BtZCh2bWYsIHBmbiwgd3JpdGUpO1xuIFx0XHR9XG4gI2VuZGlmXG4gXHR9XG4tXHRyZXR1cm4gVk1fRkFVTFRfRkFMTEJBQ0s7XG4rXG4rXHRpZiAocmV0ID09IFZNX0ZBVUxUX05PUEFHRSBcdTAwMjZcdTAwMjYgd3JpdGUpXG4rXHRcdGRybV9nZW1fc2htZW1fcmVjb3JkX21rd3JpdGUodm1mKTtcbitcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyB2bV9mYXVsdF90IGRybV9nZW1fc2htZW1fYW55X2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmNcbmluZGV4IGE4MDUxMDQ4OWM0NTYuLmVmMjdhMmQ3YWZjMDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jXG5AQCAtMjYzLDcgKzI2Myw4IEBAIHZtX2ZhdWx0X3QgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHN0cnVjdCB2bV9mYXVsdCAqdm1mLFxuIFx0XHQgKiBhdCBhcmJpdHJhcnkgdGltZXMgd2hpbGUgdGhlIGRhdGEgaXMgbW1hcCdlZC5cbiBcdFx0ICogU2VlIHZtZl9pbnNlcnRfcGZuX3Byb3QoKSBmb3IgYSBkaXNjdXNzaW9uLlxuIFx0XHQgKi9cbi1cdFx0cmV0ID0gdm1mX2luc2VydF9wZm5fcHJvdCh2bWEsIGFkZHJlc3MsIHBmbiwgcHJvdCk7XG4rXHRcdHJldCA9IF9fdm1mX2luc2VydF9wZm5fcHJvdCh2bWEsIGFkZHJlc3MsIHBmbiwgcHJvdCxcbitcdFx0XHRcdFx0ICAgIGkgPT0gMCBcdTAwMjZcdTAwMjYgISEodm1mLVx1MDAzZWZsYWdzIFx1MDAyNiBGQVVMVF9GTEFHX1dSSVRFKSk7XG4gXG4gXHRcdC8qIE5ldmVyIGVycm9yIG9uIHByZWZhdWx0ZWQgUFRFcyAqL1xuIFx0XHRpZiAodW5saWtlbHkoKHJldCBcdTAwMjYgVk1fRkFVTFRfRVJST1IpKSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuY1xuaW5kZXggNDU1NjFiYzFjOWVmZi4uMzA5OTU1OGMwNzYyZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jXG5AQCAtMzk4LDE1ICszOTgsMzMgQEAgdm9pZCB2bXdfYm9fZGlydHlfY2xlYXJfcmVzKHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcylcbiBcdFx0ZGlydHktXHUwMDNlZW5kID0gcmVzX3N0YXJ0O1xuIH1cbiBcbitzdGF0aWMgdm1fZmF1bHRfdCB2bXdfYm9fZGlydHlfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibylcbit7XG4rXHR1bnNpZ25lZCBsb25nIHBhZ2Vfb2Zmc2V0O1xuK1x0c3RydWN0IHZtd19ibyAqdmJvID0gdG9fdm13X2JvKFx1MDAyNmJvLVx1MDAzZWJhc2UpO1xuK1xuK1x0cGFnZV9vZmZzZXQgPSB2bWYtXHUwMDNlcGdvZmYgLSBkcm1fdm1hX25vZGVfc3RhcnQoXHUwMDI2Ym8tXHUwMDNlYmFzZS52bWFfbm9kZSk7XG4rXHRpZiAodW5saWtlbHkocGFnZV9vZmZzZXQgXHUwMDNlPSBQRk5fVVAoYm8tXHUwMDNlcmVzb3VyY2UtXHUwMDNlc2l6ZSkpKVxuK1x0XHRyZXR1cm4gVk1fRkFVTFRfU0lHQlVTO1xuK1xuK1x0aWYgKHZiby1cdTAwM2VkaXJ0eSBcdTAwMjZcdTAwMjYgdmJvLVx1MDAzZWRpcnR5LVx1MDAzZW1ldGhvZCA9PSBWTVdfQk9fRElSVFlfTUtXUklURSBcdTAwMjZcdTAwMjZcbitcdCAgICAhdGVzdF9iaXQocGFnZV9vZmZzZXQsIFx1MDAyNnZiby1cdTAwM2VkaXJ0eS1cdTAwM2ViaXRtYXBbMF0pKSB7XG4rXHRcdHN0cnVjdCB2bXdfYm9fZGlydHkgKmRpcnR5ID0gdmJvLVx1MDAzZWRpcnR5O1xuK1xuK1x0XHRfX3NldF9iaXQocGFnZV9vZmZzZXQsIFx1MDAyNmRpcnR5LVx1MDAzZWJpdG1hcFswXSk7XG4rXHRcdGRpcnR5LVx1MDAzZXN0YXJ0ID0gbWluKGRpcnR5LVx1MDAzZXN0YXJ0LCBwYWdlX29mZnNldCk7XG4rXHRcdGRpcnR5LVx1MDAzZWVuZCA9IG1heChkaXJ0eS1cdTAwM2VlbmQsIHBhZ2Vfb2Zmc2V0ICsgMSk7XG4rXHR9XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gdm1fZmF1bHRfdCB2bXdfYm9fdm1fbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbiB7XG4gXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IHZtZi1cdTAwM2V2bWE7XG4gXHRzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0gKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqKVxuIFx0ICAgIHZtYS1cdTAwM2V2bV9wcml2YXRlX2RhdGE7XG4gXHR2bV9mYXVsdF90IHJldDtcbi1cdHVuc2lnbmVkIGxvbmcgcGFnZV9vZmZzZXQ7XG4gXHR1bnNpZ25lZCBpbnQgc2F2ZV9mbGFncztcbi1cdHN0cnVjdCB2bXdfYm8gKnZibyA9IHRvX3Ztd19ibyhcdTAwMjZiby1cdTAwM2ViYXNlKTtcbiBcbiBcdC8qXG4gXHQgKiBta3dyaXRlKCkgZG9lc24ndCBoYW5kbGUgdGhlIFZNX0ZBVUxUX1JFVFJZIHJldHVybiB2YWx1ZSBjb3JyZWN0bHkuXG5AQCAtNDE5LDIyICs0MzcsNyBAQCB2bV9mYXVsdF90IHZtd19ib192bV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdHBhZ2Vfb2Zmc2V0ID0gdm1mLVx1MDAzZXBnb2ZmIC0gZHJtX3ZtYV9ub2RlX3N0YXJ0KFx1MDAyNmJvLVx1MDAzZWJhc2Uudm1hX25vZGUpO1xuLVx0aWYgKHVubGlrZWx5KHBhZ2Vfb2Zmc2V0IFx1MDAzZT0gUEZOX1VQKGJvLVx1MDAzZXJlc291cmNlLVx1MDAzZXNpemUpKSkge1xuLVx0XHRyZXQgPSBWTV9GQVVMVF9TSUdCVVM7XG4tXHRcdGdvdG8gb3V0X3VubG9jaztcbi1cdH1cbi1cbi1cdGlmICh2Ym8tXHUwMDNlZGlydHkgXHUwMDI2XHUwMDI2IHZiby1cdTAwM2VkaXJ0eS1cdTAwM2VtZXRob2QgPT0gVk1XX0JPX0RJUlRZX01LV1JJVEUgXHUwMDI2XHUwMDI2XG4tXHQgICAgIXRlc3RfYml0KHBhZ2Vfb2Zmc2V0LCBcdTAwMjZ2Ym8tXHUwMDNlZGlydHktXHUwMDNlYml0bWFwWzBdKSkge1xuLVx0XHRzdHJ1Y3Qgdm13X2JvX2RpcnR5ICpkaXJ0eSA9IHZiby1cdTAwM2VkaXJ0eTtcbi1cbi1cdFx0X19zZXRfYml0KHBhZ2Vfb2Zmc2V0LCBcdTAwMjZkaXJ0eS1cdTAwM2ViaXRtYXBbMF0pO1xuLVx0XHRkaXJ0eS1cdTAwM2VzdGFydCA9IG1pbihkaXJ0eS1cdTAwM2VzdGFydCwgcGFnZV9vZmZzZXQpO1xuLVx0XHRkaXJ0eS1cdTAwM2VlbmQgPSBtYXgoZGlydHktXHUwMDNlZW5kLCBwYWdlX29mZnNldCArIDEpO1xuLVx0fVxuLVxuLW91dF91bmxvY2s6XG4rXHRyZXQgPSB2bXdfYm9fZGlydHlfbWt3cml0ZSh2bWYsIGJvKTtcbiBcdGRtYV9yZXN2X3VubG9jayhiby1cdTAwM2ViYXNlLnJlc3YpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtNDg0LDYgKzQ4Nyw5IEBAIHZtX2ZhdWx0X3Qgdm13X2JvX3ZtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIFx0XHRwcm90ID0gdm1fZ2V0X3BhZ2VfcHJvdCh2bWEtXHUwMDNldm1fZmxhZ3MpO1xuIFxuIFx0cmV0ID0gdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHZtZiwgcHJvdCwgbnVtX3ByZWZhdWx0KTtcbitcdGlmIChyZXQgPT0gVk1fRkFVTFRfTk9QQUdFIFx1MDAyNlx1MDAyNiAodm1mLVx1MDAzZWZsYWdzIFx1MDAyNiBGQVVMVF9GTEFHX1dSSVRFKSlcbitcdFx0V0FSTl9PTl9PTkNFKHZtd19ib19kaXJ0eV9ta3dyaXRlKHZtZiwgYm8pKTtcbitcbiBcdGlmIChyZXQgPT0gVk1fRkFVTFRfUkVUUlkgXHUwMDI2XHUwMDI2ICEodm1mLVx1MDAzZWZsYWdzIFx1MDAyNiBGQVVMVF9GTEFHX1JFVFJZX05PV0FJVCkpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oXG5pbmRleCA0ODVkZjljMmRiZGRiLi40N2VhY2Y2NDBjMDM1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L21tLmhcbkBAIC00NTQ4LDYgKzQ1NDgsMTAgQEAgdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0XHRcdHVuc2lnbmVkIGxvbmcgcGZuKTtcbiB2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuX3Byb3Qoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdFx0XHR1bnNpZ25lZCBsb25nIHBmbiwgcGdwcm90X3QgcGdwcm90KTtcbit2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuX21rd3JpdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbitcdFx0XHR1bnNpZ25lZCBsb25nIHBmbiwgYm9vbCB3cml0ZSk7XG4rdm1fZmF1bHRfdCBfX3ZtZl9pbnNlcnRfcGZuX3Byb3Qoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbitcdFx0XHR1bnNpZ25lZCBsb25nIHBmbiwgcGdwcm90X3QgcGdwcm90LCBib29sIG1rd3JpdGUpO1xuIHZtX2ZhdWx0X3Qgdm1mX2luc2VydF9taXhlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0XHRcdHVuc2lnbmVkIGxvbmcgcGZuKTtcbiB2bV9mYXVsdF90IHZtZl9pbnNlcnRfbWl4ZWRfbWt3cml0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbmRpZmYgLS1naXQgYS9tbS9odWdlX21lbW9yeS5jIGIvbW0vaHVnZV9tZW1vcnkuY1xuaW5kZXggYjVkMWU5ZDQ0NjNkMC4uMmY0ZGNhYTgxOWI3OSAxMDA2NDRcbi0tLSBhL21tL2h1Z2VfbWVtb3J5LmNcbisrKyBiL21tL2h1Z2VfbWVtb3J5LmNcbkBAIC0xNjE1LDcgKzE2MTUsNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBpbnNlcnRfcG1kKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gICogQHBmbjogcGZuIHRvIGluc2VydFxuICAqIEB3cml0ZTogd2hldGhlciBpdCdzIGEgd3JpdGUgZmF1bHRcbiAgKlxuLSAqIEluc2VydCBhIHBtZCBzaXplIHBmbi4gU2VlIHZtZl9pbnNlcnRfcGZuKCkgZm9yIGFkZGl0aW9uYWwgaW5mby5cbisgKiBJbnNlcnQgYSBwbWQgc2l6ZSBwZm4uIFNlZSB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlKCkgZm9yIGFkZGl0aW9uYWwgaW5mby5cbiAgKlxuICAqIFJldHVybjogdm1fZmF1bHRfdCB2YWx1ZS5cbiAgKi9cbmRpZmYgLS1naXQgYS9tbS9tZW1vcnkuYyBiL21tL21lbW9yeS5jXG5pbmRleCBmZjMzOGMyYWJlOTIzLi5kM2QxMGIyZTQ3OWE0IDEwMDY0NFxuLS0tIGEvbW0vbWVtb3J5LmNcbisrKyBiL21tL21lbW9yeS5jXG5AQCAtMjcxOCw2ICsyNzE4LDM0IEBAIHN0YXRpYyB2bV9mYXVsdF90IGluc2VydF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdHJldHVybiBWTV9GQVVMVF9OT1BBR0U7XG4gfVxuIFxuK3ZtX2ZhdWx0X3QgX192bWZfaW5zZXJ0X3Bmbl9wcm90KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuK1x0XHRcdHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBwZm4sIHBncHJvdF90IHBncHJvdCxcbitcdFx0XHRib29sIG1rd3JpdGUpXG4re1xuK1x0LypcbitcdCAqIFRlY2huaWNhbGx5LCBhcmNoaXRlY3R1cmVzIHdpdGggcHRlX3NwZWNpYWwgY2FuIGF2b2lkIGFsbCB0aGVzZVxuK1x0ICogcmVzdHJpY3Rpb25zIChzYW1lIGZvciByZW1hcF9wZm5fcmFuZ2UpLiAgSG93ZXZlciB3ZSB3b3VsZCBsaWtlXG4rXHQgKiBjb25zaXN0ZW5jeSBpbiB0ZXN0aW5nIGFuZCBmZWF0dXJlIHBhcml0eSBhbW9uZyBhbGwsIHNvIHdlIHNob3VsZFxuK1x0ICogdHJ5IHRvIGtlZXAgdGhlc2UgaW52YXJpYW50cyBpbiBwbGFjZSBmb3IgZXZlcnlib2R5LlxuK1x0ICovXG4rXHRCVUdfT04oISh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKSk7XG4rXHRCVUdfT04oKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgKFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpID09XG4rXHRcdFx0XHRcdFx0KFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpO1xuK1x0QlVHX09OKCh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1BGTk1BUCkgXHUwMDI2XHUwMDI2IGlzX2Nvd19tYXBwaW5nKHZtYS1cdTAwM2V2bV9mbGFncykpO1xuK1x0QlVHX09OKCh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX01JWEVETUFQKSBcdTAwMjZcdTAwMjYgcGZuX3ZhbGlkKHBmbikpO1xuK1xuK1x0aWYgKGFkZHIgXHUwMDNjIHZtYS1cdTAwM2V2bV9zdGFydCB8fCBhZGRyIFx1MDAzZT0gdm1hLVx1MDAzZXZtX2VuZClcbitcdFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcbitcbitcdGlmICghcGZuX21vZGlmeV9hbGxvd2VkKHBmbiwgcGdwcm90KSlcbitcdFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcbitcbitcdHBmbm1hcF9zZXR1cF9jYWNoZW1vZGVfcGZuKHBmbiwgXHUwMDI2cGdwcm90KTtcbitcbitcdHJldHVybiBpbnNlcnRfcGZuKHZtYSwgYWRkciwgcGZuLCBwZ3Byb3QsIG1rd3JpdGUpO1xuK31cbitFWFBPUlRfU1lNQk9MKF9fdm1mX2luc2VydF9wZm5fcHJvdCk7XG4rXG4gLyoqXG4gICogdm1mX2luc2VydF9wZm5fcHJvdCAtIGluc2VydCBzaW5nbGUgcGZuIGludG8gdXNlciB2bWEgd2l0aCBzcGVjaWZpZWQgcGdwcm90XG4gICogQHZtYTogdXNlciB2bWEgdG8gbWFwIHRvXG5AQCAtMjc1NCwyNyArMjc4Miw3IEBAIHN0YXRpYyB2bV9mYXVsdF90IGluc2VydF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiB2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuX3Byb3Qoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdFx0XHR1bnNpZ25lZCBsb25nIHBmbiwgcGdwcm90X3QgcGdwcm90KVxuIHtcbi1cdC8qXG4tXHQgKiBUZWNobmljYWxseSwgYXJjaGl0ZWN0dXJlcyB3aXRoIHB0ZV9zcGVjaWFsIGNhbiBhdm9pZCBhbGwgdGhlc2Vcbi1cdCAqIHJlc3RyaWN0aW9ucyAoc2FtZSBmb3IgcmVtYXBfcGZuX3JhbmdlKS4gIEhvd2V2ZXIgd2Ugd291bGQgbGlrZVxuLVx0ICogY29uc2lzdGVuY3kgaW4gdGVzdGluZyBhbmQgZmVhdHVyZSBwYXJpdHkgYW1vbmcgYWxsLCBzbyB3ZSBzaG91bGRcbi1cdCAqIHRyeSB0byBrZWVwIHRoZXNlIGludmFyaWFudHMgaW4gcGxhY2UgZm9yIGV2ZXJ5Ym9keS5cbi1cdCAqL1xuLVx0QlVHX09OKCEodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiAoVk1fUEZOTUFQfFZNX01JWEVETUFQKSkpO1xuLVx0QlVHX09OKCh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKSA9PVxuLVx0XHRcdFx0XHRcdChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKTtcbi1cdEJVR19PTigodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9QRk5NQVApIFx1MDAyNlx1MDAyNiBpc19jb3dfbWFwcGluZyh2bWEtXHUwMDNldm1fZmxhZ3MpKTtcbi1cdEJVR19PTigodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9NSVhFRE1BUCkgXHUwMDI2XHUwMDI2IHBmbl92YWxpZChwZm4pKTtcbi1cbi1cdGlmIChhZGRyIFx1MDAzYyB2bWEtXHUwMDNldm1fc3RhcnQgfHwgYWRkciBcdTAwM2U9IHZtYS1cdTAwM2V2bV9lbmQpXG4tXHRcdHJldHVybiBWTV9GQVVMVF9TSUdCVVM7XG4tXG4tXHRpZiAoIXBmbl9tb2RpZnlfYWxsb3dlZChwZm4sIHBncHJvdCkpXG4tXHRcdHJldHVybiBWTV9GQVVMVF9TSUdCVVM7XG4tXG4tXHRwZm5tYXBfc2V0dXBfY2FjaGVtb2RlX3BmbihwZm4sIFx1MDAyNnBncHJvdCk7XG4tXG4tXHRyZXR1cm4gaW5zZXJ0X3Bmbih2bWEsIGFkZHIsIHBmbiwgcGdwcm90LCBmYWxzZSk7XG4rXHRyZXR1cm4gX192bWZfaW5zZXJ0X3Bmbl9wcm90KHZtYSwgYWRkciwgcGZuLCBwZ3Byb3QsIGZhbHNlKTtcbiB9XG4gRVhQT1JUX1NZTUJPTCh2bWZfaW5zZXJ0X3Bmbl9wcm90KTtcbiBcbkBAIC0yODA1LDYgKzI4MTMsMzEgQEAgdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIH1cbiBFWFBPUlRfU1lNQk9MKHZtZl9pbnNlcnRfcGZuKTtcbiBcbisvKipcbisgKiB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlIC0gaW5zZXJ0IHNpbmdsZSBwZm4gaW50byB1c2VyIHZtYSwgcG9zc2libHkgd3JpdGFibGVcbisgKiBAdm1hOiB1c2VyIHZtYSB0byBtYXAgdG9cbisgKiBAYWRkcjogdGFyZ2V0IHVzZXIgYWRkcmVzcyBvZiB0aGlzIHBhZ2VcbisgKiBAcGZuOiBzb3VyY2Uga2VybmVsIHBmblxuKyAqIEB3cml0ZTogd2hldGhlciB0aGUgUFRFIHNob3VsZCBiZSBpbnN0YWxsZWQgd3JpdGFibGVcbisgKlxuKyAqIExpa2Ugdm1mX2luc2VydF9wZm4oKSwgZXhjZXB0IHRoYXQgQHdyaXRlIGFsbG93cyBpbnN0YWxsaW5nIGEgd3JpdGFibGVcbisgKiBQVEUgZXZlbiB3aGVuIEB2bWEgaXMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uLCBpLmUuIHdoZW4gaXQgaGFzIGFcbisgKiAucGFnZV9ta3dyaXRlKCkgb3IgLnBmbl9ta3dyaXRlKCkgY2FsbGJhY2sgYW5kIHZtYV9zZXRfcGFnZV9wcm90KCkgaGFzXG4rICogdGhlcmVmb3JlIGNsZWFyZWQgdGhlIHdyaXRlIGJpdCBmcm9tIEB2bWEtXHUwMDNldm1fcGFnZV9wcm90LlxuKyAqXG4rICogTm90ZSB0aGF0IG5laXRoZXIgb2YgdGhlc2UgY2FsbGJhY2tzIGlzIGludm9rZWQsIHNvIHRoZSBjYWxsZXIgbXVzdFxuKyAqIGl0c2VsZiBkbyB3aGF0ZXZlciB0aGV5IHdvdWxkIGhhdmUgZG9uZSBpZiBAd3JpdGUgaXMgdHJ1ZS5cbisgKlxuKyAqIENvbnRleHQ6IFByb2Nlc3MgY29udGV4dC4gIE1heSBhbGxvY2F0ZSB1c2luZyAlR0ZQX0tFUk5FTC5cbisgKiBSZXR1cm46IHZtX2ZhdWx0X3QgdmFsdWUuXG4rICovXG4rdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4rXHRcdFx0dW5zaWduZWQgbG9uZyBwZm4sIGJvb2wgd3JpdGUpXG4re1xuK1x0cmV0dXJuIF9fdm1mX2luc2VydF9wZm5fcHJvdCh2bWEsIGFkZHIsIHBmbiwgdm1hLVx1MDAzZXZtX3BhZ2VfcHJvdCwgd3JpdGUpO1xuK31cbitFWFBPUlRfU1lNQk9MKHZtZl9pbnNlcnRfcGZuX21rd3JpdGUpO1xuK1xuIHN0YXRpYyBib29sIHZtX21peGVkX29rKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHBmbixcbiBcdFx0XHRib29sIG1rd3JpdGUpXG4ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6MjAuNzU1OTI3ODA2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQxNzE4MjEwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBmb3IgV3JpdGVhYmxlIFBURSBJbnNlcnRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgaXMgaW50ZXJlc3RpbmcuIEl0J3MgdG91Y2hpbmcgc29tZSBwcmV0dHkgZnVuZGFtZW50YWwgYXJlYXM6IHRoZSBEUk0gR0VNIHNobWVtIGhlbHBlciwgdGhlIFRUTSBCTyBWTSwgVk1XZ2Z4LCBhbmQgZXZlbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IChgbW0vbWVtb3J5LmNgKS4gVGhlIGtleSBzZWVtcyB0byBiZSB0aGVzZSBuZXcgZnVuY3Rpb25zLCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCBhbmQgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgLiBUaGV5J3JlIGJlaW5nIGludHJvZHVjZWQgdG8gaGFuZGxlIHNpdHVhdGlvbnMgd2hlcmUgd2UgbmVlZCB0byBpbnNlcnQgYSAqd3JpdGFibGUqIFBURSwgZXZlbiB3aGVuIHRoZSBWTUEgaXMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uIOKAkyB0aGF0IGAucGZuX21rd3JpdGVgIGNhbGxiYWNrIHNpdHVhdGlvbi4gUmlnaHQsIHRoZSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uIGlzc3VlLiBgdm1mX2luc2VydF9wZm5gIHdhcyBpbnN0YWxsaW5nIGEgcmVhZC1vbmx5IGVudHJ5IG9uIGEgd3JpdGUgZmF1bHQsIGhvcGluZyBmb3IgYSBzZWNvbmQgZmF1bHQgdG8gdHJpZ2dlciB0aGUgYC5wZm5fbWt3cml0ZWAgdXBncmFkZSwgYnV0IHRoYXQgd2Fzbid0IGFsd2F5cyBoYXBwZW5pbmcgaW4gc2NlbmFyaW9zIGxpa2UgZGlyZWN0IHBhZ2UgdGFibGUgd2Fsa3Mgd2l0aCBgZml4dXBfdXNlcl9mYXVsdGAuXG5cbkZpcnN0LCBsZXQncyBzZWUgaWYgdGhpcyBpcyBldmVuIHJlbGV2YW50IGFuZCBpZiBpdCdzIGdvaW5nIHRvIHdvcmsuIFllcywgdGhpcyBkZWZpbml0ZWx5IGhpdHMgc29tZSBjb3JlIE1NIGFuZCBEUk0gZHJpdmVyIGNvZGUuIEl0J3MgbW9kaWZ5aW5nIGNvZGUgaW4gcGxhY2VzIHRoYXQgYXJlIGNyaXRpY2FsIHRvIERSTSBkcml2ZXJzLCBpbmNsdWRpbmcgdmdlbSwgdmlydGlvLWdwdSwgYW5kIHZtd2dmeCwgYW5kIHRoZSBjb21tb24gc2htZW0gaGVscGVyLiBgZHJtX2dlbV9zaG1lbV9oZWxwZXIuY2AgaXMgaGVhdmlseSB1c2VkLCBhcyBpcyBgdHRtX2JvX3ZtLmNgLCBzbyBhIGZpeCBoZXJlIGhhcyB0aGUgcG90ZW50aWFsIGZvciBicm9hZCBpbXBhY3QuXG5cbk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgQ09ORklHX0RSTWAsIGBDT05GSUdfRFJNX1ZNV0dGWGAsIGBDT05GSUdfRFJNX1RUTWAsIGFuZCBgQ09ORklHX0RSTV9HRU1fU0hNRU1fSEVMUEVSYC4gV2FpdCwgYGRybV9nZW1fc2htZW1faGVscGVyYCBpcyBzZWxlY3RlZCBieSAqYSBsb3QqIG9mIGRyaXZlcnMuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvZ3B1L2RybS9gIHRvIGJlIGNlcnRhaW4uIEdvdHRhIGJlIHByZWNpc2UgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI0MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEyOjI3LjE3MzExMjUyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMTcwNjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEUk1fVk1XR0ZYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnOjI6Y29uZmlnIERSTV9WTVdHRlhcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRFJNIGRyaXZlciBmb3IgVk13YXJlIFZpcnR1YWwgR1BVXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTE5LVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzoyMDpjb25maWcgRFJNX1ZNV0dGWF9NS1NTVEFUU1xcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZy0yMS1cXHRib29sIFxcXCJFbmFibGUgbWtzR3Vlc3RTdGF0cyBpbnN0cnVtZW50YXRpb24gb2Ygdm13Z2Z4IGJ5IGRlZmF1bHRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEyOjI3LjIyNTI5MDQ0NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2Njg0NDEzMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHJvbGUgb2YgdGhlIHRoaW5raW5nIHByb2Nlc3MgZGVzY3JpYmVkOlxuXG4qKkludmVzdGlnYXRpbmcgR0VNX1NITUVNX0hFTFBFUiBpbiB0aGUgRFJNIEtjb25maWcqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB3b3JrLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYEdFTV9TSE1FTV9IRUxQRVJgIHRoaW5nLiBXaGVyZSB3b3VsZCB0aGUgZGVmaW5pdGlvbiBvZiB0aGF0IGJlLCBpbiB0aGUgdmFzdCBMaW51eCBrZXJuZWwgY29kZWJhc2U/IExldCdzIHN0YXJ0IHdpdGggdGhlIG1vc3QgbG9naWNhbCBwbGFjZSwgdGhlIGhlYXJ0IG9mIHRoZSBncmFwaGljcyBkcml2ZXIgaW5mcmFzdHJ1Y3R1cmU6IGBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERpcmVjdCBSZW5kZXJpbmcgTWFuYWdlciAoRFJNKSBkcml2ZXJzIGFyZSBsaWtlbHkgZGVmaW5lZC4gSSBuZWVkIHRvIGRlbHZlIGludG8gdGhhdCBLY29uZmlnIGZpbGUgYW5kIHNlZSB3aGF0IGluZm9ybWF0aW9uIGl0IGhvbGRzIHJlZ2FyZGluZyBgR0VNX1NITUVNX0hFTFBFUmAuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjQwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6MjkuODkzNzM0MjE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTczMzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEUk1fR0VNX1NITUVNX0hFTFBFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0yNjA9Y29uZmlnIERSTV9HRU1fRE1BX0hFTFBFUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjY4LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI2OTpjb25maWcgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNzAtXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6MjkuOTM5OTE0MTQ0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk3NTM4MTE0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBhIFRyaXN0YXRlIFNlbGVjdG9yKipcblxuQWxyaWdodCwgc28gd2UndmUgZ290IGEgdHJpc3RhdGUgaGVyZSwgYW5kIGl0IHNlZW1zIHRvIGJlIGRyaXZlbiBieSBzb21ldGhpbmcgZXh0ZXJuYWwsIHNvbWUgb3RoZXIgcGllY2Ugb2YgdGhlIHN5c3RlbSDigJMgZHJpdmVycywgcHJvYmFibHkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIHdobydzIGluIGNoYXJnZSBvZiBzZWxlY3RpbmcgdGhpcyB0aGluZz9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCB0aGUgZGVwZW5kZW5jaWVzLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoaXMgdHJpc3RhdGUgYW5kIHBpbnBvaW50IHRoZSBzZWxlY3Qgc2lnbmFsLiBXaGVyZSBpcyBpdCBjb21pbmcgZnJvbT8gV2hhdCBhcmUgdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZSBkaWZmZXJlbnQgc3RhdGVzPyBJcyBpdCBhIHNpbXBsZSBzdGF0ZSBtYWNoaW5lPyBJcyB0aGVyZSBhIGJpdCBvZiBhc3luY2hyb25vdXMgbG9naWMgYXQgcGxheT8gVGhpcyBpcyBob3cgSSdsbCBiZWdpbiBteSBpbnZlc3RpZ2F0aW9uLiBMZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5IGFzc2VydGluZyB0aGVzZSBzdGF0ZXMgYW5kIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTU4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6MzIuOTE1Mjk3ODA2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4Njc0NDQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0yNzg9Y29uZmlnIFJVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI4MC1cXHRkZXBlbmRzIG9uIERSTSBcXHUwMDI2XFx1MDAyNiBNTVVcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyODE6XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjgyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnPTYwPWNvbmZpZyBEUk1fS1VOSVRfVEVTVFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctNjktXFx0c2VsZWN0IERSTV9FWFBPUlRfRk9SX1RFU1RTIGlmIG1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zzo3MDpcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy03MS1cXHRzZWxlY3QgRFJNX0tVTklUX1RFU1RfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FzdC9LY29uZmlnPTI9Y29uZmlnIERSTV9BU1RcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hc3QvS2NvbmZpZy01LVxcdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxcbmRyaXZlcnMvZ3B1L2RybS9hc3QvS2NvbmZpZzo2OlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9hc3QvS2NvbmZpZy03LVxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2d1ZC9LY29uZmlnPTM9Y29uZmlnIERSTV9HVURcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ndWQvS2NvbmZpZy04LVxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9ndWQvS2NvbmZpZzo5OlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9ndWQvS2NvbmZpZy0xMC1cXHRzZWxlY3QgQkFDS0xJR0hUX0NMQVNTX0RFVklDRVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2h5cGVydi9LY29uZmlnPTI9Y29uZmlnIERSTV9IWVBFUlZcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9oeXBlcnYvS2NvbmZpZy02LVxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9oeXBlcnYvS2NvbmZpZzo3OlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9oeXBlcnYvS2NvbmZpZy04LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9LY29uZmlnPTQ9Y29uZmlnIERSTV9QT1dFUlZSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vS2NvbmZpZy0xMS1cXHRzZWxlY3QgRFJNX0VYRUNcXG5kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vS2NvbmZpZzoxMjpcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vS2NvbmZpZy0xMy1cXHRzZWxlY3QgRFJNX1NDSEVEXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbGltYS9LY29uZmlnPTQ9Y29uZmlnIERSTV9MSU1BXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbGltYS9LY29uZmlnLTExLSAgICAgICBzZWxlY3QgRFJNX1NDSEVEXFxuZHJpdmVycy9ncHUvZHJtL2xpbWEvS2NvbmZpZzoxMjogICAgICAgc2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL2xpbWEvS2NvbmZpZy0xMy0gICAgICAgc2VsZWN0IFBNX0RFVkZSRVFcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL0tjb25maWc9Mj1jb25maWcgRFJNX01HQUcyMDBcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL0tjb25maWctNS1cXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cXG5kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9LY29uZmlnOjY6XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvS2NvbmZpZy03LVxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L0tjb25maWc9Mz1jb25maWcgRFJNX1BBTkZST1NUXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvS2NvbmZpZy0xMS1cXHRzZWxlY3QgSU9NTVVfSU9fUEdUQUJMRV9MUEFFXFxuZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L0tjb25maWc6MTI6XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L0tjb25maWctMTMtXFx0c2VsZWN0IFBNX0RFVkZSRVFcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zaXRyb25peC9LY29uZmlnPTE9Y29uZmlnIERSTV9TVDc1NzFcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zaXRyb25peC9LY29uZmlnLTQtXFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXFxuZHJpdmVycy9ncHUvZHJtL3NpdHJvbml4L0tjb25maWc6NTpcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vc2l0cm9uaXgvS2NvbmZpZy02LVxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3NpdHJvbml4L0tjb25maWc9NzE9Y29uZmlnIERSTV9TVDc5MjBcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zaXRyb25peC9LY29uZmlnLTczLVxcdGRlcGVuZHMgb24gRFJNIFxcdTAwMjZcXHUwMDI2IFNQSSBcXHUwMDI2XFx1MDAyNiBNTVVcXG5kcml2ZXJzL2dwdS9kcm0vc2l0cm9uaXgvS2NvbmZpZzo3NDpcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vc2l0cm9uaXgvS2NvbmZpZy03NS1cXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zb2xvbW9uL0tjb25maWc9MT1jb25maWcgRFJNX1NTRDEzMFhcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zb2xvbW9uL0tjb25maWctNS1cXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cXG5kcml2ZXJzL2dwdS9kcm0vc29sb21vbi9LY29uZmlnOjY6XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3NvbG9tb24vS2NvbmZpZy03LVxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWc9MTA9Y29uZmlnIERSTV9DT1JFQk9PVERSTVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctMTUtXFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWc6MTY6XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctMTctXFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZz0yNj1jb25maWcgRFJNX0VGSURSTVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctMzAtXFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWc6MzE6XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctMzItXFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZz00Mj1jb25maWcgRFJNX09GRFJNXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy00Ni1cXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZzo0NzpcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy00OC1cXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnPTU3PWNvbmZpZyBEUk1fU0lNUExFRFJNXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy02MS1cXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZzo2MjpcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy02My1cXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnPTc2PWNvbmZpZyBEUk1fVkVTQURSTVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctODAtXFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWc6ODE6XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctODItXFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnPTM9Y29uZmlnIERSTV9BUFBMRVRCRFJNXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTYtXFx0ZGVwZW5kcyBvbiBYODYgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZzo3OlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctOC1cXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc9Mjc9Y29uZmlnIERSTV9CT0NIU1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy0zMC1cXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnOjMxOlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctMzItXFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnPTM5PWNvbmZpZyBEUk1fQ0lSUlVTX1FFTVVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctNDMtXFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZzo0NDpcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTQ1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc9NTk9Y29uZmlnIERSTV9HTTEyVTMyMFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy02My1cXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnOjY0OlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctNjUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZz04NT1jb25maWcgRFJNX1BJWFBBUEVSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTg5LSAgICAgICAgc2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZzo5MDogICAgICAgIHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctOTEtICAgICAgICBzZWxlY3QgRFJNX0tNU19IRUxQRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS91ZGwvS2NvbmZpZz0yPWNvbmZpZyBEUk1fVURMXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdWRsL0tjb25maWctOC1cXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cXG5kcml2ZXJzL2dwdS9kcm0vdWRsL0tjb25maWc6OTpcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vdWRsL0tjb25maWctMTAtXFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdjNkL0tjb25maWc9Mj1jb25maWcgRFJNX1YzRFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3YzZC9LY29uZmlnLTgtXFx0c2VsZWN0IERSTV9TQ0hFRFxcbmRyaXZlcnMvZ3B1L2RybS92M2QvS2NvbmZpZzo5OlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS92M2QvS2NvbmZpZy0xMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdmdlbS9LY29uZmlnPTI9Y29uZmlnIERSTV9WR0VNXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdmdlbS9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBEUk0gXFx1MDAyNlxcdTAwMjYgTU1VXFxuZHJpdmVycy9ncHUvZHJtL3ZnZW0vS2NvbmZpZzo1OlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWctNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWc9Mj1jb25maWcgRFJNX1ZJUlRJT19HUFVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vS2NvbmZpZy03LVxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vS2NvbmZpZzo4OlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vS2NvbmZpZy05LVxcdHNlbGVjdCBWSVJUSU9fRE1BX1NIQVJFRF9CVUZGRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc9Mz1jb25maWcgRFJNX1ZLTVNcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWctNy1cXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnOjg6XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy05LVxcdHNlbGVjdCBDUkMzMlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMjozMy4zMDIwNDk1MjFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQzOTkxNDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gRFJNIE1vZHVsZSBTZWxlY3Rpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGVuYWJsaW5nIGEgZmV3IERSTSBtb2R1bGVzIGhlcmU6IGBEUk1fVkdFTWAsIGBEUk1fVklSVElPX0dQVWAsIGBEUk1fVktNU2AsIGFuZCBgRFJNX1ZNV0dGWGAuIFNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHN0YXJ0aW5nIHBvaW50LCBnaXZlbiB0aGUgZGlmZmVyZW50IHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aGV5IHN1cHBvcnQuIEFjdHVhbGx5LCBob2xkIG9uIOKAkyBJJ20gdGhpbmtpbmcgYWJvdXQgZnV6emluZyBub3cuIEkga25vdyB0aGF0IGBEUk1fVkdFTWAgYW5kIGBEUk1fVktNU2AgYXJlIHBhcnRpY3VsYXJseSB2YWx1YWJsZSBpbiB0aGF0IGNvbnRleHQgZHVlIHRvIHRoZWlyIGFyY2hpdGVjdHVyZXMuIExldCdzIG1ha2Ugc3VyZSB0aGF0IGBEUk1fVFRNYCBpcyBzZWxlY3RlZCB3aXRoIHRoZW0gdG9vLCBhcyB0aGF0IGNvdWxkIGNhdXNlIGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0NzEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMjozNi4yNDYwNDQzODVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTMxNTc1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRFJNX1RUTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTI1MD1jb25maWcgRFJNX1RUTV9IRUxQRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI1Mi1cXHRkZXBlbmRzIG9uIERSTVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI1MzpcXHRzZWxlY3QgRFJNX1RUTVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI1NC1cXHRzZWxlY3QgRFJNX0tNU19IRUxQRVIgaWYgRFJNX0ZCREVWX0VNVUxBVElPTlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWc9ODY9Y29uZmlnIERSTV9UVE1fS1VOSVRfVEVTVFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctODgtXFx0ZGVwZW5kcyBvbiBEUk0gXFx1MDAyNlxcdTAwMjYgS1VOSVQgXFx1MDAyNlxcdTAwMjYgTU1VIFxcdTAwMjZcXHUwMDI2IChVTUwgfHwgQ09NUElMRV9URVNUKVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjg5OlxcdHNlbGVjdCBEUk1fVFRNXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctOTAtXFx0c2VsZWN0IERSTV9CVUREWVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZz0zPWNvbmZpZyBEUk1fQU1ER1BVXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTE1LVxcdHNlbGVjdCBEUk1fU0NIRURcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnOjE2OlxcdHNlbGVjdCBEUk1fVFRNXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZzoxNzpcXHRzZWxlY3QgRFJNX1RUTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTE4LVxcdHNlbGVjdCBQT1dFUl9TVVBQTFlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvS2NvbmZpZz0yPWNvbmZpZyBEUk1fSElTSV9ISUJNQ1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9LY29uZmlnLTktXFx0c2VsZWN0IERSTV9WUkFNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvS2NvbmZpZzoxMDpcXHRzZWxlY3QgRFJNX1RUTVxcbmRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvS2NvbmZpZzoxMTpcXHRzZWxlY3QgRFJNX1RUTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL0tjb25maWctMTItXFx0c2VsZWN0IEkyQ1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZz0yPWNvbmZpZyBEUk1fSTkxNVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy0zOS1cXHRzZWxlY3QgVk1BUF9QRk5cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnOjQwOlxcdHNlbGVjdCBEUk1fVFRNXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy00MS1cXHRzZWxlY3QgRFJNX0JVRERZXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vS2NvbmZpZz0zPWNvbmZpZyBEUk1fTE9PTkdTT05cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9LY29uZmlnLTgtXFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL0tjb25maWc6OTpcXHRzZWxlY3QgRFJNX1RUTVxcbmRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9LY29uZmlnOjEwOlxcdHNlbGVjdCBEUk1fVFRNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9LY29uZmlnLTExLVxcdHNlbGVjdCBJMkNcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWc9Mj1jb25maWcgRFJNX05PVVZFQVVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWctMTItXFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZzoxMzpcXHRzZWxlY3QgRFJNX1RUTVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWc6MTQ6XFx0c2VsZWN0IERSTV9UVE1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZy0xNS1cXHRzZWxlY3QgRFJNX0VYRUNcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZz0yPWNvbmZpZyBEUk1fUVhMXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcXhsL0tjb25maWctNi1cXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vcXhsL0tjb25maWc6NzpcXHRzZWxlY3QgRFJNX1RUTVxcbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZzo4OlxcdHNlbGVjdCBEUk1fVFRNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZy05LVxcdHNlbGVjdCBEUk1fRVhFQ1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnPTM9Y29uZmlnIERSTV9SQURFT05cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZy0xMi1cXHRzZWxlY3QgRFJNX1NVQkFMTE9DX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZzoxMzogICAgICAgIHNlbGVjdCBEUk1fVFRNXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnOjE0OlxcdHNlbGVjdCBEUk1fVFRNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZy0xNS1cXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSUyBpZiBEUk1fRkJERVZfRU1VTEFUSU9OXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL0tjb25maWc9Mj1jb25maWcgRFJNX1ZCT1hWSURFT1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnLTctXFx0c2VsZWN0IERSTV9WUkFNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vS2NvbmZpZzo4OlxcdHNlbGVjdCBEUk1fVFRNXFxuZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnOjk6XFx0c2VsZWN0IERSTV9UVE1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnLTEwLVxcdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnPTI9Y29uZmlnIERSTV9WTVdHRlhcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZy02LVxcdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzo3OlxcdHNlbGVjdCBEUk1fVFRNXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnOjg6XFx0c2VsZWN0IERSTV9UVE1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTktXFx0c2VsZWN0IE1BUFBJTkdfRElSVFlfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc9Mj1jb25maWcgRFJNX1hFXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy0zOC1cXHRzZWxlY3QgVk1BUF9QRk5cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzozOTpcXHRzZWxlY3QgRFJNX1RUTVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjQwOlxcdHNlbGVjdCBEUk1fVFRNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTQxLVxcdHNlbGVjdCBEUk1fRVhFQ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMjozNi43MDczNjYxMDZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzNTAwNDM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRFJNIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBzZWUgd2UncmUgZW5hYmxpbmcgYSBidW5jaCBvZiBEUk0gZHJpdmVyczogRFJNX1ZHRU0sIERSTV9WS01TLCBEUk1fUVhMLCBEUk1fVkJPWFZJREVPLCBhbmQgRFJNX1ZNV0dGWC4gVGhlc2UgYWxsIHNlZW0gdG8gZGVwZW5kIG9uIERSTV9UVE0uIE1ha2VzIHNlbnNlLiBOb3csIGxldCdzIGxvb2sgYXQgdGhlIGZ1bmN0aW9uIG1vZGlmaWNhdGlvbnMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY29uZmlndXJhdGlvbi5cblxuUmlnaHQsIEknbSBzZWVpbmcgY2hhbmdlcyBpbjogYGRybV9nZW1fc2htZW1fcmVjb3JkX21rd3JpdGVgLCBgdHJ5X2luc2VydF9wZm5gLCBgZHJtX2dlbV9zaG1lbV9hbnlfZmF1bHRgLCBgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkYCwgYHZtd19ib19kaXJ0eV9ta3dyaXRlYCwgYHZtd19ib192bV9ta3dyaXRlYCwgYHZtd19ib192bV9mYXVsdGAsIGB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlYCwgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAsIGB2bWZfaW5zZXJ0X3Bmbl9wcm90YCwgYW5kIGB2bWZfaW5zZXJ0X3BmbmAuIFRoYXQncyBhIGRlY2VudC1zaXplZCBsaXN0OyBkZWZpbml0ZWx5IGludm9sdmluZyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgZmF1bHQgaGFuZGxpbmcuXG5cbkhtbSwgd2FpdCBhIHNlY29uZC4uLiBgdHJ5X2luc2VydF9wZm5gIGlzIGEgc3RhdGljIGZ1bmN0aW9uIGluIGBkcm1fZ2VtX3NobWVtX2hlbHBlci5jYC4gT2theSwgc28gaXQgbWlnaHQgYmUgYSBsb2NhbCBoZWxwZXIuIEFuZCwgaXMgYGRybV9nZW1fc2htZW1fYW55X2ZhdWx0YCBhbHNvIHN0YXRpYyBpbiBgZHJtX2dlbV9zaG1lbV9oZWxwZXIuY2A/IE5vLCBpdCBsb29rcyBsaWtlIGl0J3MganVzdCBjb250ZXh0dWFsbHkgcmVsZXZhbnQgaGVyZSwgbm90IGFjdHVhbGx5IG1vZGlmaWVkLiBPa2F5LCBsZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGRybV9nZW1fc2htZW1faGVscGVyLmNgIHRvIHNlZSBob3cgdGhpcyBhZmZlY3RzIHRoZSBvdmVyYWxsIGZsb3cuIE5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25zIGFyZSBiZWluZyBjaGFuZ2VkIGJ5IHRoaXMgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxMjcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6NDEuNTQyMzcyODM5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjk1MzY4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcm1fZ2VtX3NobWVtX2FueV9mYXVsdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz02MDM9c3RhdGljIHZtX2ZhdWx0X3QgdHJ5X2luc2VydF9wZm4oc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHVuc2lnbmVkIGludCBvcmRlcixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTYyOC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo2Mjk6c3RhdGljIHZtX2ZhdWx0X3QgZHJtX2dlbV9zaG1lbV9hbnlfZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHVuc2lnbmVkIGludCBvcmRlcilcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy02MzAte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9NjY5PXN0YXRpYyB2bV9mYXVsdF90IGRybV9nZW1fc2htZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNjcwLXtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo2NzE6XFx0cmV0dXJuIGRybV9nZW1fc2htZW1fYW55X2ZhdWx0KHZtZiwgMCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNjcyLX1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTcxND1jb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgZHJtX2dlbV9zaG1lbV92bV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03MTYtI2lmZGVmIENPTkZJR19BUkNIX1NVUFBPUlRTX1BNRF9QRk5NQVBcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo3MTc6XFx0Lmh1Z2VfZmF1bHQgPSBkcm1fZ2VtX3NobWVtX2FueV9mYXVsdCxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03MTgtI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEyOjQxLjU4NTMzMDcwN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODI4NDUzODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXZpbmcgaW50byB0aGUgTWVtb3J5IEZhdWx0KipcblxuQWxyaWdodCwgdGhlIGxpa2VseSBjdWxwcml0IGZvciB0aGlzIG1lbW9yeSBpc3N1ZSBpcyBgZHJtX2dlbV9zaG1lbV9mYXVsdGAuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgdG8gaW52ZXN0aWdhdGUsIGFuZCBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbXkgZGVlcCBkaXZlLiBJIGtub3cgdGhhdCBmdW5jdGlvbiB3ZWxsLiBOb3csIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkYCBmdW5jdGlvbiBpdCBjYWxscywgdG8gc2VlIHdoYXQga2luZCBvZiByZXNlcnZhdGlvbiBpcyB0YWtpbmcgcGxhY2UuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB3aGF0IHJlc291cmNlcyBhcmUgaW4gcGxheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyNTcsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMjo0NC40MTM3ODgyNDhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzQxNDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInR0bV9ib192bV9mYXVsdF9yZXNlcnZlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmM9MTYzPUVYUE9SVF9TWU1CT0wodHRtX2JvX3ZtX3Jlc2VydmUpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYy0xNjUtLyoqXFxuZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYzoxNjY6ICogdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkIC0gVFRNIGZhdWx0IGhlbHBlclxcbmRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMtMTY3LSAqIEB2bWY6IFRoZSBzdHJ1Y3Qgdm1fZmF1bHQgZ2l2ZW4gYXMgYXJndW1lbnQgdG8gdGhlIGZhdWx0IGNhbGxiYWNrXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jLTE4Mi0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jOjE4Mzp2bV9mYXVsdF90IHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZixcXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jLTE4NC1cXHRcXHRcXHRcXHQgICAgcGdwcm90X3QgcHJvdCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMtMjgyLX1cXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jOjI4MzpFWFBPUlRfU1lNQk9MKHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZCk7XFxuZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYy0yODQtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jPTMyMj12bV9mYXVsdF90IHR0bV9ib192bV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMtMzM1LVxcdGlmIChkcm1fZGV2X2VudGVyKGJvLVxcdTAwM2ViYXNlLmRldiwgXFx1MDAyNmlkeCkpIHtcXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jOjMzNjpcXHRcXHRyZXQgPSB0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWQodm1mLCBwcm90LCBUVE1fQk9fVk1fTlVNX1BSRUZBVUxUKTtcXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jLTMzNy1cXHRcXHRkcm1fZGV2X2V4aXQoaWR4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6NDQuNDU4NTM4Mjc1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODM5OTQ2MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24sIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBNZW1vcnkgTWFuYWdlbWVudCBGYXVsdCoqXG5cbk9rYXksIHNvIHdlJ3ZlIGhpdCBhIGB0dG1fYm9fdm1fZmF1bHRgLCB3aGljaCBpcyBvdXIgZW50cnkgcG9pbnQgaGVyZS4gTGV0J3MgZGlnIGRlZXBlci4gVGhlIGZpcnN0IHRoaW5ncyBJIG5lZWQgdG8gZXhhbWluZSBhcmUgYHZtd19ib192bV9ta3dyaXRlYCBhbmQgYHZtd19ib192bV9mYXVsdGAuIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBsaWtlbHkgaW52b2x2ZWQgaW4gaGFuZGxpbmcgdGhpcyB2aXJ0dWFsIG1lbW9yeSBmYXVsdCB3aXRoaW4gdGhlIGdyYXBoaWNzIGNvbnRleHQuIEkgc3VzcGVjdCB0aGUgY29yZSBpc3N1ZSBpcyBnb2luZyB0byBiZSB3aXRoaW4gdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlc2UgdHdvIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkncmUgbWFuYWdpbmcgYnVmZmVyIG9iamVjdCB3cml0ZSBhY2Nlc3MgYW5kIGZhdWx0IGhhbmRsaW5nIHdpdGhpbiB0aGUgVk13YXJlIGVudmlyb25tZW50LiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCB1bmRlcnN0YW5kIHRoZSBtZW1vcnkgbWFwcGluZyBwcm9jZXNzLiBJdCdzIGxpa2VseSByZWxhdGVkIHRvIGhvdyB0aGUgYnVmZmVyIG9iamVjdCBpcyBtYXBwZWQgZm9yIHdyaXRpbmcgYW5kIHRoZW4gdGhlIGZhdWx0IGhhbmRsaW5nIHRoYXQga2lja3MgaW4gd2hlbiBhIHdyaXRlIGF0dGVtcHQgaXMgbWFkZS4gVGhlIGludGVycGxheSBiZXR3ZWVuIHRoZXNlIHR3byBmdW5jdGlvbnMgd2lsbCBiZSB0aGUgY3J1eCBvZiB0aGUgcHJvYmxlbS4gVGltZSB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzOTgzLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6NDguMTQyNTM1NTcyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTMxNjA3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2bXdfYm9fdm1fbWt3cml0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jPTQwMT1zdGF0aWMgdm1fZmF1bHRfdCB2bXdfYm9fZGlydHlfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYy00MjAtXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jOjQyMTp2bV9mYXVsdF90IHZtd19ib192bV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYy00MjIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMjo0OC4xODc4NTgwODlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4NTE5NTg4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgdm13X2JvX3ZtX2ZhdWx0YCBQYXRoKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgYHZtd19ib192bV9mYXVsdGAgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbnRhbCBtYXAgb2YgaG93IHRoaXMgdGhpbmcgb3BlcmF0ZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IG1lbnRhbGx5IHJlY29uc3RydWN0IHRoZSBleGVjdXRpb24gcGF0aC4gV2hhdCBhcmUgdGhlIGxpa2VseSB0cmlnZ2Vycz8gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgdXN1YWwgc3VzcGVjdHM6IG1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9ucyB3aXRoaW4gYSBndWVzdCBWTSwgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGJ1ZmZlciBvYmplY3RzIChCT3MpIG1hcHBpbmcsIGFuZCB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaG9zdCdzIG1lbW9yeSBtYW5hZ2VtZW50LiBXaGVyZSBhcmUgdGhlIGxpa2VseSBwb2ludHMgb2YgY29udGVudGlvbiBvciBwb3RlbnRpYWwgYm90dGxlbmVja3M/IEFtIEkgbG9va2luZyBmb3IgYSBzdHJhaWdodGZvcndhcmQgc2VnbWVudGF0aW9uIGZhdWx0LCBvciBzb21ldGhpbmcgbW9yZSBudWFuY2VkIGxpa2UgYSBwYWdlIHRhYmxlIHdhbGsgaXNzdWU/IEkgc2hvdWxkIGtlZXAgYW4gZXllIG91dCBmb3IgcG90ZW50aWFsIHJhY2VzIG9yIGxvY2sgY29udGVudGlvbiBwb2ludHMgd2l0aGluIHRoZSBzdXJyb3VuZGluZyBWTSBvciBob3N0IGNvZGUgcGF0aHMuIEEgcXVpY2sgbWVudGFsIHdhbGt0aHJvdWdoIG9mIHRoZSBjb2RlJ3MgY2FsbCBzdGFjayBpcyBpbiBvcmRlci4gTGV0J3Mgc2VlIGlmIHRoaXMgcG9pbnRzIHRvd2FyZHMgYSBzcGVjaWZpYyBhcmVhLCBvciBpZiB0aGlzIGZ1bmN0aW9uIGlzIGJlaGF2aW5nIGFzIGV4cGVjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDQ1MiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEyOjUxLjU3MzA1NjM5NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3ODc4ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm13X2JvX3ZtX2ZhdWx0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmM9NDIxPXZtX2ZhdWx0X3Qgdm13X2JvX3ZtX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmMtNDQ0LVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYzo0NDU6dm1fZmF1bHRfdCB2bXdfYm9fdm1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jLTQ0Ni17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEyOjUxLjYxNjg0OTg1MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDcxNDU1MzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIFBGTiBJbnNlcnRpb24gaW4gdGhlIFZNIEZyYW1ld29yayoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBjb3JlIG1lY2hhbmlzbXMgZm9yIHBoeXNpY2FsbHkgaW5zZXJ0aW5nIHBhZ2UgZnJhbWUgbnVtYmVycyAoUEZOcykgaW50byB0aGUgdmlydHVhbCBtZW1vcnkgZnJhbWV3b3JrLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBgdm1mX2luc2VydF9wZm5fbWt3cml0ZWAgYW5kIGBfX3ZtZl9pbnNlcnRfcGZuX3Byb3RgLiBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSB0aGUgbGlrZWx5IGxpbmNocGlucyB3aGVuIHdlJ3JlIGRlYWxpbmcgd2l0aCB3cml0ZSBwZXJtaXNzaW9ucyBhbmQgcHJvdGVjdGlvbiBhdHRyaWJ1dGVzIGR1cmluZyBQRk4gaW5zZXJ0aW9uLiBJIHdhbnQgdG8gcXVpY2tseSBlbnN1cmUgdGhhdCBJIGNhbiBhY2N1cmF0ZWx5IHJlbGF0ZSB0aGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZGV0YWlscyBiYWNrIHRvIHRoZSBicm9hZGVyIGNvbmNlcHR1YWwgbW9kZWwuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGFuZCBhY2NvdW50IGZvciBhbnkgcG90ZW50aWFsIHN1YnRsZSBpbnRlcmFjdGlvbnMgb3Igc2lkZSBlZmZlY3RzIHRoZXkgbWlnaHQgZXhoaWJpdCwgZXNwZWNpYWxseSBpZiB0aGVyZSdzIGFueSB0cmlja3kgbG9ja2luZyBvciBhdG9taWNpdHkgaW52b2x2ZWQgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgaW4gdGhpcyBjb250ZXh0LiBUaW1lIHRvIHJlZnJlc2ggYW5kIGRpc3NlY3QgdGhlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4ODYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMjo1NC42ODgzMDcyMjdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMjM4NjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZtZl9pbnNlcnRfcGZuX21rd3JpdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbWVtb3J5LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWVtb3J5LmM9MjgxND1FWFBPUlRfU1lNQk9MKHZtZl9pbnNlcnRfcGZuKTtcXG4tLVxcbm1tL21lbW9yeS5jLTI4MTYtLyoqXFxubW0vbWVtb3J5LmM6MjgxNzogKiB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlIC0gaW5zZXJ0IHNpbmdsZSBwZm4gaW50byB1c2VyIHZtYSwgcG9zc2libHkgd3JpdGFibGVcXG5tbS9tZW1vcnkuYy0yODE4LSAqIEB2bWE6IHVzZXIgdm1hIHRvIG1hcCB0b1xcbi0tXFxubW0vbWVtb3J5LmMtMjgzMy0gKi9cXG5tbS9tZW1vcnkuYzoyODM0OnZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm5fbWt3cml0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbm1tL21lbW9yeS5jLTI4MzUtXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBwZm4sIGJvb2wgd3JpdGUpXFxuLS1cXG5tbS9tZW1vcnkuYy0yODM4LX1cXG5tbS9tZW1vcnkuYzoyODM5OkVYUE9SVF9TWU1CT0wodm1mX2luc2VydF9wZm5fbWt3cml0ZSk7XFxubW0vbWVtb3J5LmMtMjg0MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6NTQuNzMxNTUxOTY0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MDEyNzU0NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtlcm5lbCBGYXVsdCBIYW5kbGVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucywgYW5kIHRoZXkncmUgYWxsIG1hcmtlZCBhcyBgRVhQT1JUX1NZTUJPTGAsIHdoaWNoIGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gVGhhdCBtZWFucyB0aGV5J3JlIGNvcmUgZW5vdWdoIHRvIGJlIGV4cG9ydGVkIGZvciB1c2UgaW4gb3RoZXIgbW9kdWxlcywgd2hpY2ggb2Z0ZW4gaW5kaWNhdGVzIHRoZXkncmUgcGFydCBvZiBhIGNyaXRpY2FsIHBhdGggb3IgY29tbW9ubHkgdXNlZCBzdWJzeXN0ZW0uIFRoZSBlbnRyeSBwb2ludHMgSSBzZWUgYXJlOiBgZHJtX2dlbV9zaG1lbV9mYXVsdGAsIGB0dG1fYm9fdm1fZmF1bHRgLCBgdm13X2JvX3ZtX21rd3JpdGVgLCBgdm13X2JvX3ZtX2ZhdWx0YCwgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgLCBhbmQgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAuIFdhaXQsIEkgd2FzIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBmYXVsdCBoYW5kbGVycy5cblxuT2theSwgbGV0J3MganVzdCBmb2N1cyBvbiB0aGUgZmF1bHQgaGFuZGxlcnMuIEknbSBnb2luZyB0byBzZXQgYXNpZGUgdGhlIG90aGVycyBmb3Igbm93LiBTbyB3ZSdyZSByZWFsbHkgbG9va2luZyBhdDogYGRybV9nZW1fc2htZW1fZmF1bHRgLCBgdHRtX2JvX3ZtX2ZhdWx0YCwgYHZtd19ib192bV9ta3dyaXRlYCwgYHZtd19ib192bV9mYXVsdGAsIGB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlYCwgYW5kIGBfX3ZtZl9pbnNlcnRfcGZuX3Byb3RgLiBJIG1pZ2h0IGNpcmNsZSBiYWNrIHRvIHRoYXQgbGFzdCBvbmUgbGF0ZXIsIGJ1dCBsZXQncyBiZWdpbiBieSB6ZXJvaW5nIGluIG9uIGBkcm1fZ2VtX3NobWVtX2ZhdWx0YCBhcyBhIGdvb2Qgc3ltYm9sIHRvIHN0YXJ0IHdpdGggYW5kIHNlZSB3aGVyZSB0aGF0IHRha2VzIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM4MSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMjo1OS4yMzI4MzAwODlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDY5MDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRybV9nZW1fc2htZW1fZmF1bHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9NjI5PXN0YXRpYyB2bV9mYXVsdF90IGRybV9nZW1fc2htZW1fYW55X2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLCB1bnNpZ25lZCBpbnQgb3JkZXIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy02NjgtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6NjY5OnN0YXRpYyB2bV9mYXVsdF90IGRybV9nZW1fc2htZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNjcwLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTcxND1jb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgZHJtX2dlbV9zaG1lbV92bV9vcHMgPSB7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6NzE1OlxcdC5mYXVsdCA9IGRybV9nZW1fc2htZW1fZmF1bHQsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNzE2LSNpZmRlZiBDT05GSUdfQVJDSF9TVVBQT1JUU19QTURfUEZOTUFQXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEyOjU5LjI3NjMwNjc5NloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY3OTE3NDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBGYXVsdCBIYW5kbGVyKipcblxuQWxyaWdodCwgeWVwLCB0aGF0IGNvbmZpcm1zIGl0IOKAkyB0aGlzIGlzIGEgZmF1bHQgaGFuZGxlci4gTm90aGluZyBzdXJwcmlzaW5nIHRoZXJlLCBidXQgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBXYWl0LCBob2xkIG9uIGEgc2Vj4oCmIEkgc2VlIGBkcm1fZ2VtX3NobWVtX2ZhdWx0YCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gT2theSwgdGhhdCdzIHNvbWV3aGF0IGludGVyZXN0aW5nLiBUaGF0IG1lYW5zIGl04oCZcyBvbmx5IHZpc2libGUgd2l0aGluIHRoaXMgcGFydGljdWxhciBjb21waWxhdGlvbiB1bml0LCB3aGljaCBtaWdodCBpbmZsdWVuY2UgaG93IHdlIG5lZWQgdG8gYXBwcm9hY2ggdW5kZXJzdGFuZGluZyBpdHMgaW50ZXJhY3Rpb24gd2l0aGluIHRoZSBicm9hZGVyIERSTSBmcmFtZXdvcmsuIEhtbS4uLiBsZXTigJlzIG5vdCBqdW1wIHRvIGFueSBjb25jbHVzaW9ucy4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwIGludG8gdGhhdCBzdGF0aWMgZGVjbGFyYXRpb24sIGl0J3Mgd29ydGggdGFraW5nIGEgcXVpY2sgbG9vayBhcm91bmQuIExldCdzIGNoZWNrIGZvciBhbnkgKm90aGVyKiBleHBvcnRlZCBmdW5jdGlvbnMgaW4gdGhpcyBjb2RlLiBJdCdsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgaGFuZGxlciBpcyBtZWFudCB0byBiZSB1c2VkLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgaGFuZGxlciBpcyBleHBvc2VkIHRvLCBvciBhY2Nlc3NlZCBieSwgdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCBtb2R1bGVzLiBMZXQncyBzZWUgd2hhdCBlbHNlIHRoaXMgZmlsZSBvZmZlcnMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYxOTIsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMzowMi42NDQyMjgwMjNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMzY2NTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKmRybV9nZW1fc2htZW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9MTA5PWludCBkcm1fZ2VtX3NobWVtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSwgc2l6ZV90IHNpemUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xMTItfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjExMzpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX2luaXQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTExNC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTE1NT1zdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKmRybV9nZW1fc2htZW1fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMTU4LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzoxNTk6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9jcmVhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTE2MC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTE3ND12b2lkIF9fZHJtX2dlbV9zaG1lbV9mcmVlX3NndF9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTE4Mi19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6MTgzOkVYUE9SVF9TWU1CT0xfR1BMKF9fZHJtX2dlbV9zaG1lbV9mcmVlX3NndF9sb2NrZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTE4NC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTE5Mj12b2lkIGRybV9nZW1fc2htZW1fcmVsZWFzZShzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMjE1LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzoyMTY6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9yZWxlYXNlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0yMTctXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0yMjU9dm9pZCBkcm1fZ2VtX3NobWVtX2ZyZWUoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTIyOS19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6MjMwOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fZnJlZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMjMxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9MjcyPXZvaWQgZHJtX2dlbV9zaG1lbV9wdXRfcGFnZXNfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0yOTEtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjI5MjpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX3B1dF9wYWdlc19sb2NrZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTI5My1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0yOTQ9aW50IGRybV9nZW1fc2htZW1fcGluX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMzEwLX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzozMTE6RVhQT1JUX1NZTUJPTChkcm1fZ2VtX3NobWVtX3Bpbl9sb2NrZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTMxMi1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0zMTM9dm9pZCBkcm1fZ2VtX3NobWVtX3VucGluX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMzE5LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzozMjA6RVhQT1JUX1NZTUJPTChkcm1fZ2VtX3NobWVtX3VucGluX2xvY2tlZCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMzIxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9MzMyPWludCBkcm1fZ2VtX3NobWVtX3BpbihzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMzQ5LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzozNTA6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9waW4pO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTM1MS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTM1OT12b2lkIGRybV9nZW1fc2htZW1fdW5waW4oc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTM3MS19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6MzcyOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fdW5waW4pO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTM3My1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTM4OT1pbnQgZHJtX2dlbV9zaG1lbV92bWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNDM5LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo0NDA6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV92bWFwX2xvY2tlZCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNDQxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9NDU0PXZvaWQgZHJtX2dlbV9zaG1lbV92dW5tYXBfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy00NzMtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjQ3NDpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX3Z1bm1hcF9sb2NrZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTQ3NS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTUwMj1pbnQgZHJtX2dlbV9zaG1lbV9tYWR2aXNlX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBpbnQgbWFkdilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTUxMi19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6NTEzOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fbWFkdmlzZV9sb2NrZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTUxNC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz01MTU9dm9pZCBkcm1fZ2VtX3NobWVtX3B1cmdlX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNTQ0LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo1NDU6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9wdXJnZV9sb2NrZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTU0Ni1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTU2ND1pbnQgZHJtX2dlbV9zaG1lbV9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy01NzQtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjU3NTpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX2R1bWJfY3JlYXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy01NzYtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz03MTQ9Y29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGRybV9nZW1fc2htZW1fdm1fb3BzID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNzIyLX07XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6NzIzOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fdm1fb3BzKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03MjQtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz03MzY9aW50IGRybV9nZW1fc2htZW1fbW1hcChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTc3NC19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6Nzc1OkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fbW1hcCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNzc2LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9NzgzPXZvaWQgZHJtX2dlbV9zaG1lbV9wcmludF9pbmZvKGNvbnN0IHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03OTMtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjc5NDpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX3ByaW50X2luZm8pO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTc5NS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTgxMD1zdHJ1Y3Qgc2dfdGFibGUgKmRybV9nZW1fc2htZW1fZ2V0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy04MTctfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjgxODpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX2dldF9zZ190YWJsZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtODE5LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9ODczPXN0cnVjdCBzZ190YWJsZSAqZHJtX2dlbV9zaG1lbV9nZXRfcGFnZXNfc2d0KHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy04ODUtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjg4NjpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX2dldF9wYWdlc19zZ3QpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTg4Ny1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTkwND1kcm1fZ2VtX3NobWVtX3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtOTIwLX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo5MjE6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9wcmltZV9pbXBvcnRfc2dfdGFibGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTkyMi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTkzMj1zdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmRybV9nZW1fc2htZW1fcHJpbWVfaW1wb3J0X25vX21hcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtOTc3LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo5Nzg6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9wcmltZV9pbXBvcnRfbm9fbWFwKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy05NzktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz05ODU9aW50IGRybV9nZW1fc2htZW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBzdHJ1Y3QgaW9zeXNfbWFwICptYXApXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy05OTctfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjk5ODpFWFBPUlRfU1lNQk9MX0lGX0tVTklUKGRybV9nZW1fc2htZW1fdm1hcCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtOTk5LVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTEwMDA9dm9pZCBkcm1fZ2VtX3NobWVtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBzdHJ1Y3QgaW9zeXNfbWFwICptYXApXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xMDA3LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzoxMDA4OkVYUE9SVF9TWU1CT0xfSUZfS1VOSVQoZHJtX2dlbV9zaG1lbV92dW5tYXApO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTEwMDktXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9MTAxMD1pbnQgZHJtX2dlbV9zaG1lbV9tYWR2aXNlKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0sIGludCBtYWR2KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMTAyMi19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6MTAyMzpFWFBPUlRfU1lNQk9MX0lGX0tVTklUKGRybV9nZW1fc2htZW1fbWFkdmlzZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMTAyNC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0xMDI1PWludCBkcm1fZ2VtX3NobWVtX3B1cmdlKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xMDM3LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzoxMDM4OkVYUE9SVF9TWU1CT0xfSUZfS1VOSVQoZHJtX2dlbV9zaG1lbV9wdXJnZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMTAzOS0jZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTM6MDIuNjg2NjAzMThaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc5NjY2MjUyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgXCJXaGVyZSBhcmUgdGhlIHByaW1lIHRhcmdldHMgZm9yIGZ1enppbmcgaW4gdGhpcyBtZW1vcnkgbWFuYWdlbWVudCBjb250ZXh0P1wiIEkgc2VlIHRoYXQgYGRybV9nZW1fc2htZW1fbW1hcGAgaXMgZXhwb3J0ZWQsIGFuZCBjcml0aWNhbGx5LCBpdCBzZXRzIHVwIGB2bWEtXHUwMDNldm1fb3BzYCB0byBgXHUwMDI2ZHJtX2dlbV9zaG1lbV92bV9vcHNgLiBCaW5nbywgYGRybV9nZW1fc2htZW1fbW1hcGAgbG9va3MgbGlrZSBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LiBUaGVuLCBJIG5vdGljZWQgYHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZGAgaXMgZXhwb3J0ZWQsIHRoYXQgZ29lcyBvbiB0aGUgbGlzdC5cblxuTmV4dCwgSSBub3RlZCB0aGF0IGB2bXdfYm9fdm1fbWt3cml0ZWAgYW5kIGB2bXdfYm9fdm1fZmF1bHRgIGFyZW4ndCAqZGlyZWN0bHkqIGV4cG9ydGVkLCBidXQgdGhleSdyZSBwYXJ0IG9mIGB2bXdfYm9fdm1fb3BzYCwgd2hpY2ggaXMgdXNlZCBpbiBgdm13X21tYXBgLiBUaGF0IHN1Z2dlc3RzIHRob3NlIGNvdWxkIGJlIGludGVyZXN0aW5nLCBldmVuIGlmIGluZGlyZWN0bHkgcmVhY2hhYmxlLiBBbHNvLCBJIHNlZSBgdm1mX2luc2VydF9wZm5fbWt3cml0ZWAgYW5kIGBfX3ZtZl9pbnNlcnRfcGZuX3Byb3RgIGFyZSBleHBvcnRlZCwgd2hpY2ggYXJlIHByb2JhYmx5IHByZXR0eSBjb3JlLCBhbmQgSSBzaG91bGQgc2VlIGlmIHRoZXkgYXJlIGluIGBtbS9tZW1vcnkuY2AuIFllcCwgdGhleSBhcmUuIFRoYXQncyBnb29kLlxuXG5Tbywgc3VtbWluZyB0aGlzIHVwLCB0aGUgZnVuY3Rpb25zIHRoYXQgSSB3YW50IHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nIGFyZTpcbiogICBgdm1mX2luc2VydF9wZm5fbWt3cml0ZWBcbiogICBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YFxuKiAgIGB0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWRgXG4qICAgYHZtd19ib192bV9ta3dyaXRlYFxuKiAgIGB2bXdfYm9fdm1fZmF1bHRgXG5cbldhaXQsIGhhbmcgb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBjb3JyZWN0LCBpdCBsb29rcyBsaWtlIGB2bXdfYm9fdm1fbWt3cml0ZWAgYW5kIGB2bXdfYm9fdm1fZmF1bHRgIGFyZW4ndCBzdGF0aWMgZnVuY3Rpb25zLCB0aGV5J3JlIGluIGB2bXdnZnhfcGFnZV9kaXJ0eS5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGV5J3JlIGFjdHVhbGx5IGV4cG9ydGVkLiBMZXQncyBsb29rIGludG8gdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwODMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTM6MDguNDgzMjY3NjQ0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzIwMTI0OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qdm13X2JvX3ZtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS92bXdnZngvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMzowOC41MjY0NzgzODFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEwODcwMDcyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU2NvcGUgb2YgVGhlc2UgRnVuY3Rpb25zKipcblxuQWxyaWdodCwgc28gdGhlc2UgZnVuY3Rpb25zIGFyZW4ndCBleHBsaWNpdGx5IGV4cG9ydGVkLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGhleSdyZSBoYW5naW5nIG91dCB0aGVyZSBhcyBnbG9iYWwgZnVuY3Rpb25zIHdpdGhpbiB0aGUgbW9kdWxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiT2theSwgbGV0J3MgZmlndXJlIG91dCBob3cgYnJvYWRseSB0aGVzZSBhcmUgYmVpbmcgdXRpbGl6ZWQuXCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgaW1wYWN0IGFuZCBpZiByZW1vdmluZyBvciBtb2RpZnlpbmcgdGhlbSB3b3VsZCBiZSBhIGJpZyBkZWFsLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZG8gYSB0aG9yb3VnaCBjb2RlIHNlYXJjaCBhbmQgcGlucG9pbnQgYWxsIHRoZSBjYWxsIHNpdGVzLiBJZGVudGlmeWluZyBldmVyeSBpbnN0YW5jZSB3aGVyZSB0aGV5J3JlIGludm9rZWQgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aWdodGx5IGNvdXBsZWQgdGhleSBhcmUgdG8gb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gSSBoYXZlIHRvIGFzc2VzcyB0aGVpciBpbXBhY3QgYmVmb3JlIEkgdG91Y2ggdGhlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4OTcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMzoxMS42MzUxODE0NTRaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODA4MDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZtd19ib192bV9mYXVsdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaD0xMzkyPXZvaWQgdm13X2JvX2RpcnR5X3VubWFwKHN0cnVjdCB2bXdfYm8gKnZibyxcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaC0xMzkzLVxcdFxcdFxcdHBnb2ZmX3Qgc3RhcnQsIHBnb2ZmX3QgZW5kKTtcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaDoxMzk0OnZtX2ZhdWx0X3Qgdm13X2JvX3ZtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKTtcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaC0xMzk1LXZtX2ZhdWx0X3Qgdm13X2JvX3ZtX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZ2VtLmM9MTM1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3Qgdm13X3ZtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2dlbS5jLTEzNy1cXHQucGFnZV9ta3dyaXRlID0gdm13X2JvX3ZtX21rd3JpdGUsXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZ2VtLmM6MTM4OlxcdC5mYXVsdCA9IHZtd19ib192bV9mYXVsdCxcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9nZW0uYy0xMzktXFx0Lm9wZW4gPSB0dG1fYm9fdm1fb3BlbixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYz00MjE9dm1fZmF1bHRfdCB2bXdfYm9fdm1fbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYy00NDQtXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jOjQ0NTp2bV9mYXVsdF90IHZtd19ib192bV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmMtNDQ2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTM6MTEuNjgwOTk0NzQxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NzE4MDkzNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgUmVsZXZhbnQgVmlydHVhbCBNZW1vcnkgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGVzZSB2aXJ0dWFsIG1lbW9yeSBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgdGhvc2UgdXNlZCB3aXRoaW4gYHZtd192bV9vcHNgLiBMZXQncyBuYXJyb3cgZG93biB0aGUgZm9jdXMuIEkgbmVlZCB0byBsaXN0IHRoZSBrZXkgZnVuY3Rpb25zIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQuIEknbSBnb2luZyB0byBzdGFydCB3aXRoOlxuXG4qICAgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgXG4qICAgYF9fdm1mX2luc2VydF9wZm5fcHJvdGBcbiogICBgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkYFxuKiAgIGB2bXdfYm9fdm1fbWt3cml0ZWBcbiogICBgdm13X2JvX3ZtX2ZhdWx0YFxuXG5Ob3csIHdhaXQgYSBtaW51dGUuLi4gYGRybV9nZW1fc2htZW1fZmF1bHRgIGlzIHN0YXRpYywgYnV0IGBkcm1fZ2VtX3NobWVtX21tYXBgIGlzIGV4cG9ydGVkIGFuZCBzZXRzIHVwIHRoZSBgdm1fb3BzYC4gU2luY2UgdGhlIHByb21wdCBzcGVjaWZpZXMgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljIGVudHJ5cG9pbnRzLCBgZHJtX2dlbV9zaG1lbV9tbWFwYCBpcyBwb3RlbnRpYWxseSB1c2VmdWwsIG9yIGlmIHJlYWNoYWJsZSB0aHJvdWdoIHN5c2NhbGxzIGV2ZW4gYGRybV9nZW1fc2htZW1fZmF1bHRgLiBBY3R1YWxseSwgdGhlIHJlYWwgbG9naWMgY2hhbmdlIGlzIGluIGB0cnlfaW5zZXJ0X3BmbmAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBkcm1fZ2VtX3NobWVtX2FueV9mYXVsdGAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBkcm1fZ2VtX3NobWVtX2ZhdWx0YC4gVGhpcyBzdGF0aWMgZnVuY3Rpb24gY2FuIGJlIGZ1enphYmxlIHZpYSBzeXNjYWxscywgc28gdGhpcyBtYXkgd29yayBmaW5lLiBVbHRpbWF0ZWx5LCBJIHNob3VsZCBmb2N1cyBvbiB0aGUgY29yZSBNTSBmdW5jdGlvbnM6IGB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlYCBhbmQgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAuIFRoZXkgYXJlIGNyaXRpY2FsIGZvciBpbnNlcnRpbmcgYW5kIG1hbmFnaW5nIHBhZ2UgZnJhbWUgbnVtYmVycyAoUEZOcykuXG5cbkknbGwgY2hlY2sgdG8gc2VlIGlmIHRob3NlIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQuIEdvb2QsIGJvdGggYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCBhcmUuXG5cbkFzIGZvciB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucyB0byBlbmFibGUsIGhlcmUncyB3aGF0IEkndmUgaWRlbnRpZmllZDpcblxuKiAgIGBEUk1fVkdFTWBcbiogICBgRFJNX1ZLTVNgXG4qICAgYERSTV9WTVdHRlhgXG4qICAgYERSTV9RWExgXG4qICAgYERSTV9WQk9YVklERU9gXG4qICAgYERSTV9UVE1gXG4qICAgYERSTV9HRU1fU0hNRU1fSEVMUEVSYFxuXG5JIHJlYWxpemUgdGhhdCBgRFJNX1ZHRU1gIGFuZCBgRFJNX1ZLTVNgIHNlbGVjdCBgRFJNX0dFTV9TSE1FTV9IRUxQRVJgLCBhbmQgYERSTV9WTVdHRlhgLCBgRFJNX1FYTGAsIGFuZCBgRFJNX1ZCT1hWSURFT2Agc2VsZWN0IGBEUk1fVFRNYC4gU28sIGVuYWJsaW5nIGBEUk1fVkdFTWAsIGBEUk1fVktNU2AsIGBEUk1fVk1XR0ZYYCwgYERSTV9RWExgLCBhbmQgYERSTV9WQk9YVklERU9gIHNob3VsZCBiZSBzdWZmaWNpZW50LiBJJ2xsIGRvdWJsZS1jaGVjayBgRFJNX1ZNV0dGWGAgZm9yIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIGp1c3QgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2MDgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTM6MTkuNDUyODA3MTM5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDQ5NDIzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFJNX1ZNV0dGWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzoyOmNvbmZpZyBEUk1fVk1XR0ZYXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkRSTSBkcml2ZXIgZm9yIFZNd2FyZSBWaXJ0dWFsIEdQVVxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWc6MjA6Y29uZmlnIERSTV9WTVdHRlhfTUtTU1RBVFNcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctMjEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1rc0d1ZXN0U3RhdHMgaW5zdHJ1bWVudGF0aW9uIG9mIHZtd2dmeCBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMzoxOS41MDMzMDg0MDZaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYyNjQ4NDcwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIHByb2NlZWQsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlLiBUaGUgZm9jdXMgaXMgb24gYERSTV9WTVdHRlhgLCBhbmQgSSBuZWVkIHRvIGltbWVkaWF0ZWx5IHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gSSBjYW4ndCBtb3ZlIGZvcndhcmQgd2l0aG91dCBrbm93aW5nIHdoYXQgb3RoZXIgbW9kdWxlcyBvciBjb21wb25lbnRzIGl0IHJlbGllcyBvbi4gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGBkZXBlbmRzIG9uYCBpbmZvcm1hdGlvbiBmb3IgdGhhdCBwYXJ0aWN1bGFyIG1vZHVsZS4gVW5kZXJzdGFuZGluZyBpdHMgZGVwZW5kZW5jaWVzIGlzIHRoZSBmb3VuZGF0aW9uIGZvciBlZmZlY3RpdmUgdHJvdWJsZXNob290aW5nLCBtb2RpZmljYXRpb24sIG9yIGV2ZW4ganVzdCBhIGdlbmVyYWwgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBncmFwaGljcyBkcml2ZXIgZml0cyBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbSBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDQyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTM6MjIuMTI5Nzk2NTE5WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjAxMTk4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWc9Mj1jb25maWcgRFJNX1ZNV0dGWFxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJEUk0gZHJpdmVyIGZvciBWTXdhcmUgVmlydHVhbCBHUFVcXFwiXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBEUk0gXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnOjU6XFx0ZGVwZW5kcyBvbiAoWDg2IFxcdTAwMjZcXHUwMDI2IEhZUEVSVklTT1JfR1VFU1QpIHx8IEFSTTY0XFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTYtXFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWc9MjA9Y29uZmlnIERSTV9WTVdHRlhfTUtTU1RBVFNcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctMjEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1rc0d1ZXN0U3RhdHMgaW5zdHJ1bWVudGF0aW9uIG9mIHZtd2dmeCBieSBkZWZhdWx0XFxcIlxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzoyMjpcXHRkZXBlbmRzIG9uIERSTV9WTVdHRlhcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWc6MjM6XFx0ZGVwZW5kcyBvbiBYODZcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctMjQtXFx0ZGVmYXVsdCBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEzOjIyLjE3NTgxNTQwNloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg0Njg4Njc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jeSBDaGVjayoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGtlcm5lbCBtb2R1bGUgZGVwZW5kZW5jaWVzLiBMZXQncyBzdGFydCB3aXRoIGBEUk1fVk1XR0ZYYC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGl0IHJlbGllcyBvbiBib3RoIGBEUk1gIGFuZCBgUENJYC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJIGFsc28gc2VlIHRoYXQgaXQgcmVxdWlyZXMgZWl0aGVyIGFuIGBYODZgIGFyY2hpdGVjdHVyZSAqYW5kKiBhIGBIWVBFUlZJU09SX0dVRVNUYCBzZXR0aW5nLCBvciBhbHRlcm5hdGl2ZWx5LCBgQVJNNjRgLiBZZXAsIHRoYXQgYWxsIGNoZWNrcyBvdXQgYW5kIHNlZW1zIGxvZ2ljYWxseSBzb3VuZC4gTm8gaW1tZWRpYXRlIHJlZCBmbGFncyB0aGVyZS4gTm93LCBsZXQncyBtb3ZlIG9uIHRvIGBEUk1fUVhMYCBhbmQgc2VlIHdoYXQgdGhhdCBtb2R1bGUgYnJpbmdzIHRvIHRoZSB0YWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM0OTUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMzoyNS4wNjA1MDgwNzRaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2ODg4MjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL3F4bC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZz0yPWNvbmZpZyBEUk1fUVhMXFxuZHJpdmVycy9ncHUvZHJtL3F4bC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlFYTCB2aXJ0dWFsIEdQVVxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vcXhsL0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIERSTSBcXHUwMDI2XFx1MDAyNiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPUE9SVFxcbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZy01LVxcdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMzoyNS4xMDc0MDQ5MTFaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY2MzA5MzUxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ2hlY2tpbmcgdGhlIGBEUk1fVkJPWFZJREVPYCBNb2R1bGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byBpdC4gTGV0J3MgZGlnIGluIGFuZCBtYWtlIHN1cmUgd2UncmUgc3F1YXJlZCBhd2F5IG9uIGBEUk1fVkJPWFZJREVPYC4gSSBuZWVkIHRvIGFzc2VzcyBpdHMgY3VycmVudCBzdGF0dXMgYW5kIGlmIHRoZXJlIGFyZSBhbnkgaXNzdWVzIHdpdGggaXQuIFRoZXJlIGNvdWxkIGJlIGRlcGVuZGVuY2llcywgY29uZmxpY3RzLCBvciBqdXN0IHBsYWluIG9sZCBidWdzIHRoYXQgbmVlZCB0byBiZSBhZGRyZXNzZWQuIFBlcmhhcHMgdGhlcmUgaXMgc29tZSByZWNlbnQgd29yayBpbiB0aGlzIGFyZWEgSSBuZWVkIHRvIGFzc2VzcyBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzgzMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEzOjI3Ljc3MDUwNDI1MloiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg0NzExNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnPTI9Y29uZmlnIERSTV9WQk9YVklERU9cXG5kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBCb3ggR3JhcGhpY3MgQ2FyZFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIERSTSBcXHUwMDI2XFx1MDAyNiBYODYgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnLTUtXFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEzOjI3LjgyODk4MjAzOVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzkwOTY2NDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgRFJNX1ZHRU1gKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gYERSTV9WR0VNYC4gR290dGEgY2hlY2sgaXQsIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHRoZXJlLiBQcm9iYWJseSB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHdoYXRldmVyIHdlJ3JlIGRlYnVnZ2luZy4gSXQncyB0aGUgdXN1YWwgc3VzcGVjdHMsIHJpZ2h0PyBLZXJuZWwgZHJpdmVyLCBncmFwaGljcywgRFJNIC0gdGhlIHdob2xlIGtpdCBhbmQgY2Fib29kbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBnb2luZyBvbiB3aXRoaW4gdGhhdCBwYXJ0aWN1bGFyIGNvbnRleHQuIExldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgYm90dGxlbmVja3Mgb3IgZ2xpdGNoZXMgdGhhdCBzdGFuZCBvdXQgaW1tZWRpYXRlbHkuIERpZ2dpbmcgaW4uLi4gdGhlIGluaXRpYWwgc3RlcCBvZiB0aGUgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQxMDEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMzozMC42MTk5NTE1ODJaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzU0Mzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL3ZnZW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdmdlbS9LY29uZmlnPTI9Y29uZmlnIERSTV9WR0VNXFxuZHJpdmVycy9ncHUvZHJtL3ZnZW0vS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIEdFTSBwcm92aWRlclxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vdmdlbS9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBEUk0gXFx1MDAyNlxcdTAwMjYgTU1VXFxuZHJpdmVycy9ncHUvZHJtL3ZnZW0vS2NvbmZpZy01LVxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMzozMC42NjM3MTAxNjlaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg1MjU5NzkyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkNoZWNraW5nIGBEUk1fVktNU2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gVGhlIGluaXRpYWwgZGlyZWN0aW9uIGlzIHRvIGNoZWNrIGBEUk1fVktNU2AuIFRoYXQncyBhIGNsZWFyIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgcmVsZXZhbnQgYWJvdXQgdGhlIGN1cnJlbnQgY29udGV4dCwgYW5kIHRoaXMgbG9va3MgbGlrZSB0aGUgY3J1Y2lhbCBlbGVtZW50IGZvciBpbnZlc3RpZ2F0aW9uLiBHb3R0YSBhc3Nlc3MgaXRzIHN0YXRlLCBpdHMgY29uZmlndXJhdGlvbiwgYW5kLCBvZiBjb3Vyc2UsIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGJyb2FkZXIgc3lzdGVtLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGFyY2hpdGVjdHVyYWwgaW1wbGljYXRpb25zIG9mIHRoaXMgbW9kdWxlIHdpdGhpbiB0aGUgd2lkZXIgZWNvc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDM5NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEzOjMzLjUxNjMxMjMwOFoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYxMDc0NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc9Mz1jb25maWcgRFJNX1ZLTVNcXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgS01TIChFWFBFUklNRU5UQUwpXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc6NTpcXHRkZXBlbmRzIG9uIERSTSBcXHUwMDI2XFx1MDAyNiBNTVVcXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTYtXFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnPTE5PWNvbmZpZyBEUk1fVktNU19LVU5JVF9URVNUXFxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIFZLTVNcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnOjIxOlxcdGRlcGVuZHMgb24gRFJNX1ZLTVMgXFx1MDAyNlxcdTAwMjYgS1VOSVRcXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTIyLVxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEzOjMzLjU2MjQyNzA1NVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzU5MDQ0NzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBEUk0gTU0gYW5kIFZpcnR1YWwgR1BVIERyaXZlciBDaGFuZ2VzIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhpbmtpbmcgYWJvdXQgaG93IHRvIGJlc3QgZnV6eiBpdC4gVGhlIG1haW4gZm9jdXMgaGVyZSBpcyBvbiBuZXcgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMgYW5kIGhvdyB0aGV5J3JlIHVzZWQgYnkgc2V2ZXJhbCB2aXJ0dWFsIEdQVSBkcml2ZXJzLiBTcGVjaWZpY2FsbHksIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCB0byBoYW5kbGUgd3JpdGFibGUgUFRFcyBkdXJpbmcgcGFnZSBmYXVsdHMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uIGlzIGtleS4gVGhpcyBpcyBhIGZpeCBmb3IgYGZpeHVwX3VzZXJfZmF1bHRgIGFuZCBhZmZlY3RzIGhvdyBtZW1vcnkgaXMgaGFuZGxlZCBpbiB0aGVzZSBjcml0aWNhbCBhcmVhcywgd2hpY2ggbWFrZXMgaXQgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEl0IGltcGFjdHMgYERSTSBHRU0gc2htZW0gaGVscGVyYCwgYFRUTSBCTyBWTWAsIGFuZCBgVk1XZ2Z4YCBwYWdlIGZhdWx0IGhhbmRsZXJzLiBUaGVzZSBhcmUgYWxsIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHRocm91Z2ggYG1tYXBgIGFuZCBwYWdlIGZhdWx0cyDigJMgY2xhc3NpYyBmdXp6aW5nIGVudHJ5IHBvaW50cy5cblxuR2l2ZW4gdGhhdCwgSSBuZWVkIHRvIGVuc3VyZSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQgdG8gZXhwb3NlIHRoaXMgY29kZS4gSSBpbml0aWFsbHkgdGhvdWdodCBvZiBlbmFibGluZyBgRFJNX1ZHRU1gLCBgRFJNX1ZLTVNgLCBgRFJNX1ZNV0dGWGAsIGFuZCBgRFJNX1FYTGAsIGFuZCBgRFJNX1ZCT1hWSURFT2AsIGJ1dCBJIHJlYWxpemVkIGBEUk1fVk1XR0ZYYCBkZXBlbmRzIG9uIGBIWVBFUlZJU09SX0dVRVNUYCwgd2hpY2ggaXMgdXN1YWxseSBlbmFibGVkIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUbyBiZSBvbiB0aGUgc2FmZSBzaWRlLCBhbmQgYWZ0ZXIgZG91YmxlIGNoZWNraW5nIGlmIHRoZXNlIHN5bWJvbHMgYXJlIHRyaXN0YXRlLCBJJ20gZ29pbmcgdG8gZXhwbGljaXRseSBlbmFibGUgYERSTV9UVE1gIGFuZCBgRFJNX0dFTV9TSE1FTV9IRUxQRVJgLCBqdXN0IGluIGNhc2UuXG5cbkxldCdzIGRvdWJsZSBjaGVjayB0byBzZWUgaWYgdGhlIG5ldyBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkLiBHb29kLCBgdm1mX2luc2VydF9wZm5fbWt3cml0ZWAgYW5kIGBfX3ZtZl9pbnNlcnRfcGZuX3Byb3RgIGFyZSBib3RoIGV4cG9ydGVkLCBtZWFuaW5nIHdlIGNhbiByZWFjaCB0aGVtIGZyb20gdXNlcnNwYWNlLiBBbHNvLCBgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkYCBpcyBleHBvcnRlZC4gQWRkaXRpb25hbGx5LCBgdm13X2JvX3ZtX21rd3JpdGVgIGFuZCBgdm13X2JvX3ZtX2ZhdWx0YCBhcmUgZ2xvYmFsIGZ1bmN0aW9ucyBpbiBgdm13Z2Z4X3BhZ2VfZGlydHkuY2AuXG5cbkkgYWxzbyBub3RpY2VkIGBkcm1fZ2VtX3NobWVtX2ZhdWx0YCBpcyBzdGF0aWMsIHdoaWNoIGlzIGEgYml0IG9mIGEgcHJvYmxlbS4gQnV0LCBJIHNlZSB0aGF0IGBkcm1fZ2VtX3NobWVtX21tYXBgICppcyogZXhwb3J0ZWQgYW5kIHNldHMgdXAgdGhlIGB2bV9vcHNgLCBzbyB0aGF0J3MgYW5vdGhlciBpbXBvcnRhbnQgZnVuY3Rpb24gdGhhdCBuZWVkcyB0byBiZSBhZGRlZCB0byB0aGUgbGlzdCBvZiB0aGluZ3MgdG8gdHJ5IHRvIGZ1enouXG5cbkFscmlnaHQsIGxldCdzIG5haWwgZG93biB0aG9zZSBjb25maWd1cmF0aW9ucyBhZ2FpbjpcblxuKiAgIGBEUk1fVkdFTWBcbiogICBgRFJNX1ZLTVNgXG4qICAgYERSTV9WTVdHRlhgXG4qICAgYERSTV9UVE1gXG4qICAgYERSTV9HRU1fU0hNRU1fSEVMUEVSYFxuXG5UaGF0IGNvdmVycyBldmVyeXRoaW5nLCBJIHRoaW5rLiBUaGlzIHNlZW1zIGxpa2UgYSBwcmV0dHkgc29saWQgc2V0IG9mIHRhcmdldHMgZm9yIHNvbWUgZm9jdXNlZCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDc3NSwiT3V0cHV0VG9rZW5zIjoyNzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTM6NDMuMzIxNDc0NTc4WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAwNTc5MDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTV9WR0VNXCIsXG4gICAgXCJEUk1fVktNU1wiLFxuICAgIFwiRFJNX1ZNV0dGWFwiLFxuICAgIFwiRFJNX1RUTVwiLFxuICAgIFwiRFJNX0dFTV9TSE1FTV9IRUxQRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlXCIsXG4gICAgXCJfX3ZtZl9pbnNlcnRfcGZuX3Byb3RcIixcbiAgICBcInR0bV9ib192bV9mYXVsdF9yZXNlcnZlZFwiLFxuICAgIFwidm13X2JvX3ZtX21rd3JpdGVcIixcbiAgICBcInZtd19ib192bV9mYXVsdFwiLFxuICAgIFwiZHJtX2dlbV9zaG1lbV9tbWFwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgY29yZSBNTSBmdW5jdGlvbnMgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCB0byBhbGxvdyBpbnNlcnRpbmcgYSB3cml0YWJsZSBQVEUgZHVyaW5nIGEgcGFnZSBmYXVsdCBldmVuIHdoZW4gdGhlIFZNQSBpcyB1bmRlciB3cml0ZSBub3RpZmljYXRpb24uIFRoaXMgZml4ZXMgYW4gaXNzdWUgd2l0aCBgZml4dXBfdXNlcl9mYXVsdGAgY2FsbGVycy4gSXQgbW9kaWZpZXMgdGhlIHBhZ2UgZmF1bHQgaGFuZGxlcnMgaW4gRFJNIEdFTSBzaG1lbSBoZWxwZXIsIFRUTSBCTyBWTSwgYW5kIFZNV2dmeCB0byB1c2UgdGhlc2UgbmV3IGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB2aXJ0dWFsIEdQVSBkcml2ZXJzIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbW1hcCBhbmQgcGFnZSBmYXVsdHMsIG1ha2luZyB0aGVtIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1fVkdFTVwiLFxuICAgIFwiRFJNX1ZLTVNcIixcbiAgICBcIkRSTV9WTVdHRlhcIixcbiAgICBcIkRSTV9UVE1cIixcbiAgICBcIkRSTV9HRU1fU0hNRU1fSEVMUEVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidm1mX2luc2VydF9wZm5fbWt3cml0ZVwiLFxuICAgIFwiX192bWZfaW5zZXJ0X3Bmbl9wcm90XCIsXG4gICAgXCJ0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWRcIixcbiAgICBcInZtd19ib192bV9ta3dyaXRlXCIsXG4gICAgXCJ2bXdfYm9fdm1fZmF1bHRcIixcbiAgICBcImRybV9nZW1fc2htZW1fbW1hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgbmV3IGNvcmUgTU0gZnVuY3Rpb25zIGB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlYCBhbmQgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAgdG8gYWxsb3cgaW5zZXJ0aW5nIGEgd3JpdGFibGUgUFRFIGR1cmluZyBhIHBhZ2UgZmF1bHQgZXZlbiB3aGVuIHRoZSBWTUEgaXMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uLiBUaGlzIGZpeGVzIGFuIGlzc3VlIHdpdGggYGZpeHVwX3VzZXJfZmF1bHRgIGNhbGxlcnMuIEl0IG1vZGlmaWVzIHRoZSBwYWdlIGZhdWx0IGhhbmRsZXJzIGluIERSTSBHRU0gc2htZW0gaGVscGVyLCBUVE0gQk8gVk0sIGFuZCBWTVdnZnggdG8gdXNlIHRoZXNlIG5ldyBmdW5jdGlvbnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgdmlydHVhbCBHUFUgZHJpdmVycyB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG1tYXAgYW5kIHBhZ2UgZmF1bHRzLCBtYWtpbmcgdGhlbSBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowx8dfh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 02:11:11 +0000 UTC FinishedAt: 2026-08-02 02:13:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "7d3aae206663c4e006b25a1c7a20a4029e67da76", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM_VGEM", "DRM_VKMS", "DRM_VMWGFX", "DRM_TTM", "DRM_GEM_SHMEM_HELPER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "kvm-next", "tree_url": "https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/", "commit_hash": "7d3aae206663c4e006b25a1c7a20a4029e67da76", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM_VGEM", "DRM_VKMS", "DRM_VMWGFX", "DRM_TTM", "DRM_GEM_SHMEM_HELPER" ], "series_id": "24f780a0-ea85-4b9d-b915-755f1e1b36ed" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vmf_insert_pfn_mkwrite", "__vmf_insert_pfn_prot", "ttm_bo_vm_fault_reserved", "vmw_bo_vm_mkwrite", "vmw_bo_vm_fault", "drm_gem_shmem_mmap" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTV9WR0VNJiMzNDssCiAgICAmIzM0O0RSTV9WS01TJiMzNDssCiAgICAmIzM0O0RSTV9WTVdHRlgmIzM0OywKICAgICYjMzQ7RFJNX1RUTSYjMzQ7LAogICAgJiMzNDtEUk1fR0VNX1NITUVNX0hFTFBFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZtZl9pbnNlcnRfcGZuX21rd3JpdGUmIzM0OywKICAgICYjMzQ7X192bWZfaW5zZXJ0X3Bmbl9wcm90JiMzNDssCiAgICAmIzM0O3R0bV9ib192bV9mYXVsdF9yZXNlcnZlZCYjMzQ7LAogICAgJiMzNDt2bXdfYm9fdm1fbWt3cml0ZSYjMzQ7LAogICAgJiMzNDt2bXdfYm9fdm1fZmF1bHQmIzM0OywKICAgICYjMzQ7ZHJtX2dlbV9zaG1lbV9tbWFwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgbmV3IGNvcmUgTU0gZnVuY3Rpb25zIGB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlYCBhbmQgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAgdG8gYWxsb3cgaW5zZXJ0aW5nIGEgd3JpdGFibGUgUFRFIGR1cmluZyBhIHBhZ2UgZmF1bHQgZXZlbiB3aGVuIHRoZSBWTUEgaXMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uLiBUaGlzIGZpeGVzIGFuIGlzc3VlIHdpdGggYGZpeHVwX3VzZXJfZmF1bHRgIGNhbGxlcnMuIEl0IG1vZGlmaWVzIHRoZSBwYWdlIGZhdWx0IGhhbmRsZXJzIGluIERSTSBHRU0gc2htZW0gaGVscGVyLCBUVE0gQk8gVk0sIGFuZCBWTVdnZnggdG8gdXNlIHRoZXNlIG5ldyBmdW5jdGlvbnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgdmlydHVhbCBHUFUgZHJpdmVycyB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG1tYXAgYW5kIHBhZ2UgZmF1bHRzLCBtYWtpbmcgdGhlbSBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkZjI1NTFkODU2M2ViNGIyMjg2OTZkMmVlZDk0MDFiOTA4ZTE3YzRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAwMjoxMjoxOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jXG5pbmRleCBjOTg5NDU5ZWIyMTU5Li5jODFiZTNlOTczMTczIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jXG5AQCAtNTg5LDExICYjNDM7NTg5LDI1IEBAIHN0YXRpYyB2b2lkIGRybV9nZW1fc2htZW1fcmVjb3JkX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4gXHRmb2xpb19tYXJrX2RpcnR5KHBhZ2VfZm9saW8oc2htZW0tXHUwMDNlcGFnZXNbcGFnZV9vZmZzZXRdKSk7XG4gfVxuIFxuJiM0MzsvKlxuJiM0MzsgKiBCZWNhdXNlIHRoZSB2bV9vcHMgaGF2ZSBhIC5wZm5fbWt3cml0ZSgpIGNhbGxiYWNrLCB2bWFfc2V0X3BhZ2VfcHJvdCgpXG4mIzQzOyAqIGhhcyBjbGVhcmVkIHRoZSB3cml0ZSBiaXQgZnJvbSB2bWEtXHUwMDNldm1fcGFnZV9wcm90LiAgdm1mX2luc2VydF9wZm4oKVxuJiM0MzsgKiB3b3VsZCBpbnN0YWxsIGEgcmVhZC1vbmx5IGVudHJ5IGV2ZW4gZm9yIGEgd3JpdGUgZmF1bHQsIHJlbHlpbmcgb24gYVxuJiM0MzsgKiBzZWNvbmQgZmF1bHQgdG8gcmVhY2ggLnBmbl9ta3dyaXRlKCkgYW5kIHVwZ3JhZGUgaXQsIGJ1dCB0aGF0IHNlY29uZFxuJiM0MzsgKiBmYXVsdCBuZXZlciBoYXBwZW5zIGZvciBmaXh1cF91c2VyX2ZhdWx0KCkgY2FsbGVycyB0aGF0IGRpcmVjdGx5XG4mIzQzOyAqIHdhbGsgdGhlIHBhZ2UgdGFibGVzIHdpdGggZm9sbG93X3Bmbm1hcF9zdGFydCgpLiAgVG8gZW5zdXJlIHRoYXRcbiYjNDM7ICogdGhleSBkb24mIzM5O3Qgc2VlIHRoZSByZWFkLW9ubHkgZW50cnksIHBhc3MgRkFVTFRfRkxBR19XUklURSBpbmZvIGRvd25cbiYjNDM7ICogdG8gaW5zdGFsbCBhIHdyaXRhYmxlIGVudHJ5IHJpZ2h0IGF3YXkuICBCZWNhdXNlIC5wZm5fbWt3cml0ZSgpIGlzXG4mIzQzOyAqIG5vdCBpbnZva2VkLCByZWNvcmQgdGhlIHdyaXRlIGFmdGVyd2FyZHMuXG4mIzQzOyAqL1xuIHN0YXRpYyB2bV9mYXVsdF90IHRyeV9pbnNlcnRfcGZuKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4gXHRcdFx0XHQgdW5zaWduZWQgbG9uZyBwZm4pXG4ge1xuJiM0MztcdGJvb2wgd3JpdGUgPSB2bWYtXHUwMDNlZmxhZ3MgXHUwMDI2IEZBVUxUX0ZMQUdfV1JJVEU7XG4mIzQzO1x0dm1fZmF1bHRfdCByZXQgPSBWTV9GQVVMVF9GQUxMQkFDSztcbiYjNDM7XG4gXHRpZiAoIW9yZGVyKSB7XG4tXHRcdHJldHVybiB2bWZfaW5zZXJ0X3Bmbih2bWYtXHUwMDNldm1hLCB2bWYtXHUwMDNlYWRkcmVzcywgcGZuKTtcbiYjNDM7XHRcdHJldCA9IHZtZl9pbnNlcnRfcGZuX21rd3JpdGUodm1mLVx1MDAzZXZtYSwgdm1mLVx1MDAzZWFkZHJlc3MsIHBmbiwgd3JpdGUpO1xuICNpZmRlZiBDT05GSUdfQVJDSF9TVVBQT1JUU19QTURfUEZOTUFQXG4gXHR9IGVsc2UgaWYgKG9yZGVyID09IFBNRF9PUkRFUikge1xuIFx0XHR1bnNpZ25lZCBsb25nIHBhZGRyID0gcGZuIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUO1xuQEAgLTYwMSwyNyAmIzQzOzYxNSwxNSBAQCBzdGF0aWMgdm1fZmF1bHRfdCB0cnlfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgdW5zaWduZWQgaW50IG9yZGVyLFxuIFxuIFx0XHRpZiAoYWxpZ25lZCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGZvbGlvX3Rlc3RfcG1kX21hcHBhYmxlKHBhZ2VfZm9saW8ocGZuX3RvX3BhZ2UocGZuKSkpKSB7XG4tXHRcdFx0dm1fZmF1bHRfdCByZXQ7XG4tXG4gXHRcdFx0cGZuIFx1MDAyNj0gUE1EX01BU0sgXHUwMDNlXHUwMDNlIFBBR0VfU0hJRlQ7XG4tXG4tXHRcdFx0LyogVW5saWtlIFBURXMgd2hpY2ggYXJlIGF1dG9tYXRpY2FsbHkgdXBncmFkZWQgdG9cbi1cdFx0XHQgKiB3cml0ZWFibGUgZW50cmllcywgdGhlIFBNRCB1cGdyYWRlcyBnbyB0aHJvdWdoXG4tXHRcdFx0ICogLmh1Z2VfZmF1bHQoKS4gTWFrZSBzdXJlIHdlIHBhc3MgdGhlIFwmIzM0O3dyaXRlXCYjMzQ7IGluZm9cbi1cdFx0XHQgKiBhbG9uZyBpbiB0aGF0IGNhc2UuXG4tXHRcdFx0ICogVGhpcyBhbHNvIG1lYW5zIHdlIGhhdmUgdG8gcmVjb3JkIHRoZSB3cml0ZSBmYXVsdFxuLVx0XHRcdCAqIGhlcmUsIGluc3RlYWQgb2YgaW4gLnBmbl9ta3dyaXRlKCkuXG4tXHRcdFx0ICovXG4tXHRcdFx0cmV0ID0gdm1mX2luc2VydF9wZm5fcG1kKHZtZiwgcGZuLFxuLVx0XHRcdFx0XHRcdCB2bWYtXHUwMDNlZmxhZ3MgXHUwMDI2IEZBVUxUX0ZMQUdfV1JJVEUpO1xuLVx0XHRcdGlmIChyZXQgPT0gVk1fRkFVTFRfTk9QQUdFIFx1MDAyNlx1MDAyNiAodm1mLVx1MDAzZWZsYWdzIFx1MDAyNiBGQVVMVF9GTEFHX1dSSVRFKSlcbi1cdFx0XHRcdGRybV9nZW1fc2htZW1fcmVjb3JkX21rd3JpdGUodm1mKTtcbi1cbi1cdFx0XHRyZXR1cm4gcmV0O1xuJiM0MztcdFx0XHRyZXQgPSB2bWZfaW5zZXJ0X3Bmbl9wbWQodm1mLCBwZm4sIHdyaXRlKTtcbiBcdFx0fVxuICNlbmRpZlxuIFx0fVxuLVx0cmV0dXJuIFZNX0ZBVUxUX0ZBTExCQUNLO1xuJiM0MztcbiYjNDM7XHRpZiAocmV0ID09IFZNX0ZBVUxUX05PUEFHRSBcdTAwMjZcdTAwMjYgd3JpdGUpXG4mIzQzO1x0XHRkcm1fZ2VtX3NobWVtX3JlY29yZF9ta3dyaXRlKHZtZik7XG4mIzQzO1x0cmV0dXJuIHJldDtcbiB9XG4gXG4gc3RhdGljIHZtX2ZhdWx0X3QgZHJtX2dlbV9zaG1lbV9hbnlfZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHVuc2lnbmVkIGludCBvcmRlcilcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uY1xuaW5kZXggYTgwNTEwNDg5YzQ1Ni4uZWYyN2EyZDdhZmMwNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmNcbkBAIC0yNjMsNyAmIzQzOzI2Myw4IEBAIHZtX2ZhdWx0X3QgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHN0cnVjdCB2bV9mYXVsdCAqdm1mLFxuIFx0XHQgKiBhdCBhcmJpdHJhcnkgdGltZXMgd2hpbGUgdGhlIGRhdGEgaXMgbW1hcCYjMzk7ZWQuXG4gXHRcdCAqIFNlZSB2bWZfaW5zZXJ0X3Bmbl9wcm90KCkgZm9yIGEgZGlzY3Vzc2lvbi5cbiBcdFx0ICovXG4tXHRcdHJldCA9IHZtZl9pbnNlcnRfcGZuX3Byb3Qodm1hLCBhZGRyZXNzLCBwZm4sIHByb3QpO1xuJiM0MztcdFx0cmV0ID0gX192bWZfaW5zZXJ0X3Bmbl9wcm90KHZtYSwgYWRkcmVzcywgcGZuLCBwcm90LFxuJiM0MztcdFx0XHRcdFx0ICAgIGkgPT0gMCBcdTAwMjZcdTAwMjYgISEodm1mLVx1MDAzZWZsYWdzIFx1MDAyNiBGQVVMVF9GTEFHX1dSSVRFKSk7XG4gXG4gXHRcdC8qIE5ldmVyIGVycm9yIG9uIHByZWZhdWx0ZWQgUFRFcyAqL1xuIFx0XHRpZiAodW5saWtlbHkoKHJldCBcdTAwMjYgVk1fRkFVTFRfRVJST1IpKSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuY1xuaW5kZXggNDU1NjFiYzFjOWVmZi4uMzA5OTU1OGMwNzYyZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jXG5AQCAtMzk4LDE1ICYjNDM7Mzk4LDMzIEBAIHZvaWQgdm13X2JvX2RpcnR5X2NsZWFyX3JlcyhzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMpXG4gXHRcdGRpcnR5LVx1MDAzZWVuZCA9IHJlc19zdGFydDtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2bV9mYXVsdF90IHZtd19ib19kaXJ0eV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKVxuJiM0Mzt7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBwYWdlX29mZnNldDtcbiYjNDM7XHRzdHJ1Y3Qgdm13X2JvICp2Ym8gPSB0b192bXdfYm8oXHUwMDI2Ym8tXHUwMDNlYmFzZSk7XG4mIzQzO1xuJiM0MztcdHBhZ2Vfb2Zmc2V0ID0gdm1mLVx1MDAzZXBnb2ZmIC0gZHJtX3ZtYV9ub2RlX3N0YXJ0KFx1MDAyNmJvLVx1MDAzZWJhc2Uudm1hX25vZGUpO1xuJiM0MztcdGlmICh1bmxpa2VseShwYWdlX29mZnNldCBcdTAwM2U9IFBGTl9VUChiby1cdTAwM2VyZXNvdXJjZS1cdTAwM2VzaXplKSkpXG4mIzQzO1x0XHRyZXR1cm4gVk1fRkFVTFRfU0lHQlVTO1xuJiM0MztcbiYjNDM7XHRpZiAodmJvLVx1MDAzZWRpcnR5IFx1MDAyNlx1MDAyNiB2Ym8tXHUwMDNlZGlydHktXHUwMDNlbWV0aG9kID09IFZNV19CT19ESVJUWV9NS1dSSVRFIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhdGVzdF9iaXQocGFnZV9vZmZzZXQsIFx1MDAyNnZiby1cdTAwM2VkaXJ0eS1cdTAwM2ViaXRtYXBbMF0pKSB7XG4mIzQzO1x0XHRzdHJ1Y3Qgdm13X2JvX2RpcnR5ICpkaXJ0eSA9IHZiby1cdTAwM2VkaXJ0eTtcbiYjNDM7XG4mIzQzO1x0XHRfX3NldF9iaXQocGFnZV9vZmZzZXQsIFx1MDAyNmRpcnR5LVx1MDAzZWJpdG1hcFswXSk7XG4mIzQzO1x0XHRkaXJ0eS1cdTAwM2VzdGFydCA9IG1pbihkaXJ0eS1cdTAwM2VzdGFydCwgcGFnZV9vZmZzZXQpO1xuJiM0MztcdFx0ZGlydHktXHUwMDNlZW5kID0gbWF4KGRpcnR5LVx1MDAzZWVuZCwgcGFnZV9vZmZzZXQgJiM0MzsgMSk7XG4mIzQzO1x0fVxuJiM0MztcdHJldHVybiAwO1xuJiM0Mzt9XG4mIzQzO1xuIHZtX2ZhdWx0X3Qgdm13X2JvX3ZtX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4ge1xuIFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEgPSB2bWYtXHUwMDNldm1hO1xuIFx0c3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibyA9IChzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKilcbiBcdCAgICB2bWEtXHUwMDNldm1fcHJpdmF0ZV9kYXRhO1xuIFx0dm1fZmF1bHRfdCByZXQ7XG4tXHR1bnNpZ25lZCBsb25nIHBhZ2Vfb2Zmc2V0O1xuIFx0dW5zaWduZWQgaW50IHNhdmVfZmxhZ3M7XG4tXHRzdHJ1Y3Qgdm13X2JvICp2Ym8gPSB0b192bXdfYm8oXHUwMDI2Ym8tXHUwMDNlYmFzZSk7XG4gXG4gXHQvKlxuIFx0ICogbWt3cml0ZSgpIGRvZXNuJiMzOTt0IGhhbmRsZSB0aGUgVk1fRkFVTFRfUkVUUlkgcmV0dXJuIHZhbHVlIGNvcnJlY3RseS5cbkBAIC00MTksMjIgJiM0Mzs0MzcsNyBAQCB2bV9mYXVsdF90IHZtd19ib192bV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdHBhZ2Vfb2Zmc2V0ID0gdm1mLVx1MDAzZXBnb2ZmIC0gZHJtX3ZtYV9ub2RlX3N0YXJ0KFx1MDAyNmJvLVx1MDAzZWJhc2Uudm1hX25vZGUpO1xuLVx0aWYgKHVubGlrZWx5KHBhZ2Vfb2Zmc2V0IFx1MDAzZT0gUEZOX1VQKGJvLVx1MDAzZXJlc291cmNlLVx1MDAzZXNpemUpKSkge1xuLVx0XHRyZXQgPSBWTV9GQVVMVF9TSUdCVVM7XG4tXHRcdGdvdG8gb3V0X3VubG9jaztcbi1cdH1cbi1cbi1cdGlmICh2Ym8tXHUwMDNlZGlydHkgXHUwMDI2XHUwMDI2IHZiby1cdTAwM2VkaXJ0eS1cdTAwM2VtZXRob2QgPT0gVk1XX0JPX0RJUlRZX01LV1JJVEUgXHUwMDI2XHUwMDI2XG4tXHQgICAgIXRlc3RfYml0KHBhZ2Vfb2Zmc2V0LCBcdTAwMjZ2Ym8tXHUwMDNlZGlydHktXHUwMDNlYml0bWFwWzBdKSkge1xuLVx0XHRzdHJ1Y3Qgdm13X2JvX2RpcnR5ICpkaXJ0eSA9IHZiby1cdTAwM2VkaXJ0eTtcbi1cbi1cdFx0X19zZXRfYml0KHBhZ2Vfb2Zmc2V0LCBcdTAwMjZkaXJ0eS1cdTAwM2ViaXRtYXBbMF0pO1xuLVx0XHRkaXJ0eS1cdTAwM2VzdGFydCA9IG1pbihkaXJ0eS1cdTAwM2VzdGFydCwgcGFnZV9vZmZzZXQpO1xuLVx0XHRkaXJ0eS1cdTAwM2VlbmQgPSBtYXgoZGlydHktXHUwMDNlZW5kLCBwYWdlX29mZnNldCAmIzQzOyAxKTtcbi1cdH1cbi1cbi1vdXRfdW5sb2NrOlxuJiM0MztcdHJldCA9IHZtd19ib19kaXJ0eV9ta3dyaXRlKHZtZiwgYm8pO1xuIFx0ZG1hX3Jlc3ZfdW5sb2NrKGJvLVx1MDAzZWJhc2UucmVzdik7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbkBAIC00ODQsNiAmIzQzOzQ4Nyw5IEBAIHZtX2ZhdWx0X3Qgdm13X2JvX3ZtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIFx0XHRwcm90ID0gdm1fZ2V0X3BhZ2VfcHJvdCh2bWEtXHUwMDNldm1fZmxhZ3MpO1xuIFxuIFx0cmV0ID0gdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHZtZiwgcHJvdCwgbnVtX3ByZWZhdWx0KTtcbiYjNDM7XHRpZiAocmV0ID09IFZNX0ZBVUxUX05PUEFHRSBcdTAwMjZcdTAwMjYgKHZtZi1cdTAwM2VmbGFncyBcdTAwMjYgRkFVTFRfRkxBR19XUklURSkpXG4mIzQzO1x0XHRXQVJOX09OX09OQ0Uodm13X2JvX2RpcnR5X21rd3JpdGUodm1mLCBibykpO1xuJiM0MztcbiBcdGlmIChyZXQgPT0gVk1fRkFVTFRfUkVUUlkgXHUwMDI2XHUwMDI2ICEodm1mLVx1MDAzZWZsYWdzIFx1MDAyNiBGQVVMVF9GTEFHX1JFVFJZX05PV0FJVCkpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oXG5pbmRleCA0ODVkZjljMmRiZGRiLi40N2VhY2Y2NDBjMDM1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L21tLmhcbkBAIC00NTQ4LDYgJiM0Mzs0NTQ4LDEwIEBAIHZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdFx0XHR1bnNpZ25lZCBsb25nIHBmbik7XG4gdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3Bmbl9wcm90KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gXHRcdFx0dW5zaWduZWQgbG9uZyBwZm4sIHBncHJvdF90IHBncHJvdCk7XG4mIzQzO3ZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm5fbWt3cml0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuJiM0MztcdFx0XHR1bnNpZ25lZCBsb25nIHBmbiwgYm9vbCB3cml0ZSk7XG4mIzQzO3ZtX2ZhdWx0X3QgX192bWZfaW5zZXJ0X3Bmbl9wcm90KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4mIzQzO1x0XHRcdHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwZ3Byb3QsIGJvb2wgbWt3cml0ZSk7XG4gdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X21peGVkKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gXHRcdFx0dW5zaWduZWQgbG9uZyBwZm4pO1xuIHZtX2ZhdWx0X3Qgdm1mX2luc2VydF9taXhlZF9ta3dyaXRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuZGlmZiAtLWdpdCBhL21tL2h1Z2VfbWVtb3J5LmMgYi9tbS9odWdlX21lbW9yeS5jXG5pbmRleCBiNWQxZTlkNDQ2M2QwLi4yZjRkY2FhODE5Yjc5IDEwMDY0NFxuLS0tIGEvbW0vaHVnZV9tZW1vcnkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vaHVnZV9tZW1vcnkuY1xuQEAgLTE2MTUsNyAmIzQzOzE2MTUsNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBpbnNlcnRfcG1kKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gICogQHBmbjogcGZuIHRvIGluc2VydFxuICAqIEB3cml0ZTogd2hldGhlciBpdCYjMzk7cyBhIHdyaXRlIGZhdWx0XG4gICpcbi0gKiBJbnNlcnQgYSBwbWQgc2l6ZSBwZm4uIFNlZSB2bWZfaW5zZXJ0X3BmbigpIGZvciBhZGRpdGlvbmFsIGluZm8uXG4mIzQzOyAqIEluc2VydCBhIHBtZCBzaXplIHBmbi4gU2VlIHZtZl9pbnNlcnRfcGZuX21rd3JpdGUoKSBmb3IgYWRkaXRpb25hbCBpbmZvLlxuICAqXG4gICogUmV0dXJuOiB2bV9mYXVsdF90IHZhbHVlLlxuICAqL1xuZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmNcbmluZGV4IGZmMzM4YzJhYmU5MjMuLmQzZDEwYjJlNDc5YTQgMTAwNjQ0XG4tLS0gYS9tbS9tZW1vcnkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtb3J5LmNcbkBAIC0yNzE4LDYgJiM0MzsyNzE4LDM0IEBAIHN0YXRpYyB2bV9mYXVsdF90IGluc2VydF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdHJldHVybiBWTV9GQVVMVF9OT1BBR0U7XG4gfVxuIFxuJiM0Mzt2bV9mYXVsdF90IF9fdm1mX2luc2VydF9wZm5fcHJvdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbiYjNDM7XHRcdFx0dW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIHBmbiwgcGdwcm90X3QgcGdwcm90LFxuJiM0MztcdFx0XHRib29sIG1rd3JpdGUpXG4mIzQzO3tcbiYjNDM7XHQvKlxuJiM0MztcdCAqIFRlY2huaWNhbGx5LCBhcmNoaXRlY3R1cmVzIHdpdGggcHRlX3NwZWNpYWwgY2FuIGF2b2lkIGFsbCB0aGVzZVxuJiM0MztcdCAqIHJlc3RyaWN0aW9ucyAoc2FtZSBmb3IgcmVtYXBfcGZuX3JhbmdlKS4gIEhvd2V2ZXIgd2Ugd291bGQgbGlrZVxuJiM0MztcdCAqIGNvbnNpc3RlbmN5IGluIHRlc3RpbmcgYW5kIGZlYXR1cmUgcGFyaXR5IGFtb25nIGFsbCwgc28gd2Ugc2hvdWxkXG4mIzQzO1x0ICogdHJ5IHRvIGtlZXAgdGhlc2UgaW52YXJpYW50cyBpbiBwbGFjZSBmb3IgZXZlcnlib2R5LlxuJiM0MztcdCAqL1xuJiM0MztcdEJVR19PTighKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgKFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpKTtcbiYjNDM7XHRCVUdfT04oKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgKFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpID09XG4mIzQzO1x0XHRcdFx0XHRcdChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKTtcbiYjNDM7XHRCVUdfT04oKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fUEZOTUFQKSBcdTAwMjZcdTAwMjYgaXNfY293X21hcHBpbmcodm1hLVx1MDAzZXZtX2ZsYWdzKSk7XG4mIzQzO1x0QlVHX09OKCh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX01JWEVETUFQKSBcdTAwMjZcdTAwMjYgcGZuX3ZhbGlkKHBmbikpO1xuJiM0MztcbiYjNDM7XHRpZiAoYWRkciBcdTAwM2Mgdm1hLVx1MDAzZXZtX3N0YXJ0IHx8IGFkZHIgXHUwMDNlPSB2bWEtXHUwMDNldm1fZW5kKVxuJiM0MztcdFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcbiYjNDM7XG4mIzQzO1x0aWYgKCFwZm5fbW9kaWZ5X2FsbG93ZWQocGZuLCBwZ3Byb3QpKVxuJiM0MztcdFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcbiYjNDM7XG4mIzQzO1x0cGZubWFwX3NldHVwX2NhY2hlbW9kZV9wZm4ocGZuLCBcdTAwMjZwZ3Byb3QpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gaW5zZXJ0X3Bmbih2bWEsIGFkZHIsIHBmbiwgcGdwcm90LCBta3dyaXRlKTtcbiYjNDM7fVxuJiM0MztFWFBPUlRfU1lNQk9MKF9fdm1mX2luc2VydF9wZm5fcHJvdCk7XG4mIzQzO1xuIC8qKlxuICAqIHZtZl9pbnNlcnRfcGZuX3Byb3QgLSBpbnNlcnQgc2luZ2xlIHBmbiBpbnRvIHVzZXIgdm1hIHdpdGggc3BlY2lmaWVkIHBncHJvdFxuICAqIEB2bWE6IHVzZXIgdm1hIHRvIG1hcCB0b1xuQEAgLTI3NTQsMjcgJiM0MzsyNzgyLDcgQEAgc3RhdGljIHZtX2ZhdWx0X3QgaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIHZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm5fcHJvdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0XHRcdHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwZ3Byb3QpXG4ge1xuLVx0Lypcbi1cdCAqIFRlY2huaWNhbGx5LCBhcmNoaXRlY3R1cmVzIHdpdGggcHRlX3NwZWNpYWwgY2FuIGF2b2lkIGFsbCB0aGVzZVxuLVx0ICogcmVzdHJpY3Rpb25zIChzYW1lIGZvciByZW1hcF9wZm5fcmFuZ2UpLiAgSG93ZXZlciB3ZSB3b3VsZCBsaWtlXG4tXHQgKiBjb25zaXN0ZW5jeSBpbiB0ZXN0aW5nIGFuZCBmZWF0dXJlIHBhcml0eSBhbW9uZyBhbGwsIHNvIHdlIHNob3VsZFxuLVx0ICogdHJ5IHRvIGtlZXAgdGhlc2UgaW52YXJpYW50cyBpbiBwbGFjZSBmb3IgZXZlcnlib2R5LlxuLVx0ICovXG4tXHRCVUdfT04oISh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKSk7XG4tXHRCVUdfT04oKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgKFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpID09XG4tXHRcdFx0XHRcdFx0KFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpO1xuLVx0QlVHX09OKCh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1BGTk1BUCkgXHUwMDI2XHUwMDI2IGlzX2Nvd19tYXBwaW5nKHZtYS1cdTAwM2V2bV9mbGFncykpO1xuLVx0QlVHX09OKCh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX01JWEVETUFQKSBcdTAwMjZcdTAwMjYgcGZuX3ZhbGlkKHBmbikpO1xuLVxuLVx0aWYgKGFkZHIgXHUwMDNjIHZtYS1cdTAwM2V2bV9zdGFydCB8fCBhZGRyIFx1MDAzZT0gdm1hLVx1MDAzZXZtX2VuZClcbi1cdFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcbi1cbi1cdGlmICghcGZuX21vZGlmeV9hbGxvd2VkKHBmbiwgcGdwcm90KSlcbi1cdFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcbi1cbi1cdHBmbm1hcF9zZXR1cF9jYWNoZW1vZGVfcGZuKHBmbiwgXHUwMDI2cGdwcm90KTtcbi1cbi1cdHJldHVybiBpbnNlcnRfcGZuKHZtYSwgYWRkciwgcGZuLCBwZ3Byb3QsIGZhbHNlKTtcbiYjNDM7XHRyZXR1cm4gX192bWZfaW5zZXJ0X3Bmbl9wcm90KHZtYSwgYWRkciwgcGZuLCBwZ3Byb3QsIGZhbHNlKTtcbiB9XG4gRVhQT1JUX1NZTUJPTCh2bWZfaW5zZXJ0X3Bmbl9wcm90KTtcbiBcbkBAIC0yODA1LDYgJiM0MzsyODEzLDMxIEBAIHZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiB9XG4gRVhQT1JUX1NZTUJPTCh2bWZfaW5zZXJ0X3Bmbik7XG4gXG4mIzQzOy8qKlxuJiM0MzsgKiB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlIC0gaW5zZXJ0IHNpbmdsZSBwZm4gaW50byB1c2VyIHZtYSwgcG9zc2libHkgd3JpdGFibGVcbiYjNDM7ICogQHZtYTogdXNlciB2bWEgdG8gbWFwIHRvXG4mIzQzOyAqIEBhZGRyOiB0YXJnZXQgdXNlciBhZGRyZXNzIG9mIHRoaXMgcGFnZVxuJiM0MzsgKiBAcGZuOiBzb3VyY2Uga2VybmVsIHBmblxuJiM0MzsgKiBAd3JpdGU6IHdoZXRoZXIgdGhlIFBURSBzaG91bGQgYmUgaW5zdGFsbGVkIHdyaXRhYmxlXG4mIzQzOyAqXG4mIzQzOyAqIExpa2Ugdm1mX2luc2VydF9wZm4oKSwgZXhjZXB0IHRoYXQgQHdyaXRlIGFsbG93cyBpbnN0YWxsaW5nIGEgd3JpdGFibGVcbiYjNDM7ICogUFRFIGV2ZW4gd2hlbiBAdm1hIGlzIHVuZGVyIHdyaXRlIG5vdGlmaWNhdGlvbiwgaS5lLiB3aGVuIGl0IGhhcyBhXG4mIzQzOyAqIC5wYWdlX21rd3JpdGUoKSBvciAucGZuX21rd3JpdGUoKSBjYWxsYmFjayBhbmQgdm1hX3NldF9wYWdlX3Byb3QoKSBoYXNcbiYjNDM7ICogdGhlcmVmb3JlIGNsZWFyZWQgdGhlIHdyaXRlIGJpdCBmcm9tIEB2bWEtXHUwMDNldm1fcGFnZV9wcm90LlxuJiM0MzsgKlxuJiM0MzsgKiBOb3RlIHRoYXQgbmVpdGhlciBvZiB0aGVzZSBjYWxsYmFja3MgaXMgaW52b2tlZCwgc28gdGhlIGNhbGxlciBtdXN0XG4mIzQzOyAqIGl0c2VsZiBkbyB3aGF0ZXZlciB0aGV5IHdvdWxkIGhhdmUgZG9uZSBpZiBAd3JpdGUgaXMgdHJ1ZS5cbiYjNDM7ICpcbiYjNDM7ICogQ29udGV4dDogUHJvY2VzcyBjb250ZXh0LiAgTWF5IGFsbG9jYXRlIHVzaW5nICVHRlBfS0VSTkVMLlxuJiM0MzsgKiBSZXR1cm46IHZtX2ZhdWx0X3QgdmFsdWUuXG4mIzQzOyAqL1xuJiM0Mzt2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuX21rd3JpdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiYjNDM7XHRcdFx0dW5zaWduZWQgbG9uZyBwZm4sIGJvb2wgd3JpdGUpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gX192bWZfaW5zZXJ0X3Bmbl9wcm90KHZtYSwgYWRkciwgcGZuLCB2bWEtXHUwMDNldm1fcGFnZV9wcm90LCB3cml0ZSk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTCh2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlKTtcbiYjNDM7XG4gc3RhdGljIGJvb2wgdm1fbWl4ZWRfb2soc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgcGZuLFxuIFx0XHRcdGJvb2wgbWt3cml0ZSlcbiB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTV9WR0VNJiMzNDssCiAgICAmIzM0O0RSTV9WS01TJiMzNDssCiAgICAmIzM0O0RSTV9WTVdHRlgmIzM0OywKICAgICYjMzQ7RFJNX1RUTSYjMzQ7LAogICAgJiMzNDtEUk1fR0VNX1NITUVNX0hFTFBFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZtZl9pbnNlcnRfcGZuX21rd3JpdGUmIzM0OywKICAgICYjMzQ7X192bWZfaW5zZXJ0X3Bmbl9wcm90JiMzNDssCiAgICAmIzM0O3R0bV9ib192bV9mYXVsdF9yZXNlcnZlZCYjMzQ7LAogICAgJiMzNDt2bXdfYm9fdm1fbWt3cml0ZSYjMzQ7LAogICAgJiMzNDt2bXdfYm9fdm1fZmF1bHQmIzM0OywKICAgICYjMzQ7ZHJtX2dlbV9zaG1lbV9tbWFwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgbmV3IGNvcmUgTU0gZnVuY3Rpb25zIGB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlYCBhbmQgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAgdG8gYWxsb3cgaW5zZXJ0aW5nIGEgd3JpdGFibGUgUFRFIGR1cmluZyBhIHBhZ2UgZmF1bHQgZXZlbiB3aGVuIHRoZSBWTUEgaXMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uLiBUaGlzIGZpeGVzIGFuIGlzc3VlIHdpdGggYGZpeHVwX3VzZXJfZmF1bHRgIGNhbGxlcnMuIEl0IG1vZGlmaWVzIHRoZSBwYWdlIGZhdWx0IGhhbmRsZXJzIGluIERSTSBHRU0gc2htZW0gaGVscGVyLCBUVE0gQk8gVk0sIGFuZCBWTVdnZnggdG8gdXNlIHRoZXNlIG5ldyBmdW5jdGlvbnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgdmlydHVhbCBHUFUgZHJpdmVycyB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG1tYXAgYW5kIHBhZ2UgZmF1bHRzLCBtYWtpbmcgdGhlbSBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkZjI1NTFkODU2M2ViNGIyMjg2OTZkMmVlZDk0MDFiOTA4ZTE3YzRkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMiAwMjoxMjoxOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMKaW5kZXggYzk4OTQ1OWViMjE1OS4uYzgxYmUzZTk3MzE3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMKQEAgLTU4OSwxMSAmIzQzOzU4OSwyNSBAQCBzdGF0aWMgdm9pZCBkcm1fZ2VtX3NobWVtX3JlY29yZF9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogCWZvbGlvX21hcmtfZGlydHkocGFnZV9mb2xpbyhzaG1lbS0mZ3Q7cGFnZXNbcGFnZV9vZmZzZXRdKSk7CiB9CiAKJiM0MzsvKgomIzQzOyAqIEJlY2F1c2UgdGhlIHZtX29wcyBoYXZlIGEgLnBmbl9ta3dyaXRlKCkgY2FsbGJhY2ssIHZtYV9zZXRfcGFnZV9wcm90KCkKJiM0MzsgKiBoYXMgY2xlYXJlZCB0aGUgd3JpdGUgYml0IGZyb20gdm1hLSZndDt2bV9wYWdlX3Byb3QuICB2bWZfaW5zZXJ0X3BmbigpCiYjNDM7ICogd291bGQgaW5zdGFsbCBhIHJlYWQtb25seSBlbnRyeSBldmVuIGZvciBhIHdyaXRlIGZhdWx0LCByZWx5aW5nIG9uIGEKJiM0MzsgKiBzZWNvbmQgZmF1bHQgdG8gcmVhY2ggLnBmbl9ta3dyaXRlKCkgYW5kIHVwZ3JhZGUgaXQsIGJ1dCB0aGF0IHNlY29uZAomIzQzOyAqIGZhdWx0IG5ldmVyIGhhcHBlbnMgZm9yIGZpeHVwX3VzZXJfZmF1bHQoKSBjYWxsZXJzIHRoYXQgZGlyZWN0bHkKJiM0MzsgKiB3YWxrIHRoZSBwYWdlIHRhYmxlcyB3aXRoIGZvbGxvd19wZm5tYXBfc3RhcnQoKS4gIFRvIGVuc3VyZSB0aGF0CiYjNDM7ICogdGhleSBkb24mIzM5O3Qgc2VlIHRoZSByZWFkLW9ubHkgZW50cnksIHBhc3MgRkFVTFRfRkxBR19XUklURSBpbmZvIGRvd24KJiM0MzsgKiB0byBpbnN0YWxsIGEgd3JpdGFibGUgZW50cnkgcmlnaHQgYXdheS4gIEJlY2F1c2UgLnBmbl9ta3dyaXRlKCkgaXMKJiM0MzsgKiBub3QgaW52b2tlZCwgcmVjb3JkIHRoZSB3cml0ZSBhZnRlcndhcmRzLgomIzQzOyAqLwogc3RhdGljIHZtX2ZhdWx0X3QgdHJ5X2luc2VydF9wZm4oc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHVuc2lnbmVkIGludCBvcmRlciwKIAkJCQkgdW5zaWduZWQgbG9uZyBwZm4pCiB7CiYjNDM7CWJvb2wgd3JpdGUgPSB2bWYtJmd0O2ZsYWdzICZhbXA7IEZBVUxUX0ZMQUdfV1JJVEU7CiYjNDM7CXZtX2ZhdWx0X3QgcmV0ID0gVk1fRkFVTFRfRkFMTEJBQ0s7CiYjNDM7CiAJaWYgKCFvcmRlcikgewotCQlyZXR1cm4gdm1mX2luc2VydF9wZm4odm1mLSZndDt2bWEsIHZtZi0mZ3Q7YWRkcmVzcywgcGZuKTsKJiM0MzsJCXJldCA9IHZtZl9pbnNlcnRfcGZuX21rd3JpdGUodm1mLSZndDt2bWEsIHZtZi0mZ3Q7YWRkcmVzcywgcGZuLCB3cml0ZSk7CiAjaWZkZWYgQ09ORklHX0FSQ0hfU1VQUE9SVFNfUE1EX1BGTk1BUAogCX0gZWxzZSBpZiAob3JkZXIgPT0gUE1EX09SREVSKSB7CiAJCXVuc2lnbmVkIGxvbmcgcGFkZHIgPSBwZm4gJmx0OyZsdDsgUEFHRV9TSElGVDsKQEAgLTYwMSwyNyAmIzQzOzYxNSwxNSBAQCBzdGF0aWMgdm1fZmF1bHRfdCB0cnlfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgdW5zaWduZWQgaW50IG9yZGVyLAogCiAJCWlmIChhbGlnbmVkICZhbXA7JmFtcDsKIAkJICAgIGZvbGlvX3Rlc3RfcG1kX21hcHBhYmxlKHBhZ2VfZm9saW8ocGZuX3RvX3BhZ2UocGZuKSkpKSB7Ci0JCQl2bV9mYXVsdF90IHJldDsKLQogCQkJcGZuICZhbXA7PSBQTURfTUFTSyAmZ3Q7Jmd0OyBQQUdFX1NISUZUOwotCi0JCQkvKiBVbmxpa2UgUFRFcyB3aGljaCBhcmUgYXV0b21hdGljYWxseSB1cGdyYWRlZCB0bwotCQkJICogd3JpdGVhYmxlIGVudHJpZXMsIHRoZSBQTUQgdXBncmFkZXMgZ28gdGhyb3VnaAotCQkJICogLmh1Z2VfZmF1bHQoKS4gTWFrZSBzdXJlIHdlIHBhc3MgdGhlICYjMzQ7d3JpdGUmIzM0OyBpbmZvCi0JCQkgKiBhbG9uZyBpbiB0aGF0IGNhc2UuCi0JCQkgKiBUaGlzIGFsc28gbWVhbnMgd2UgaGF2ZSB0byByZWNvcmQgdGhlIHdyaXRlIGZhdWx0Ci0JCQkgKiBoZXJlLCBpbnN0ZWFkIG9mIGluIC5wZm5fbWt3cml0ZSgpLgotCQkJICovCi0JCQlyZXQgPSB2bWZfaW5zZXJ0X3Bmbl9wbWQodm1mLCBwZm4sCi0JCQkJCQkgdm1mLSZndDtmbGFncyAmYW1wOyBGQVVMVF9GTEFHX1dSSVRFKTsKLQkJCWlmIChyZXQgPT0gVk1fRkFVTFRfTk9QQUdFICZhbXA7JmFtcDsgKHZtZi0mZ3Q7ZmxhZ3MgJmFtcDsgRkFVTFRfRkxBR19XUklURSkpCi0JCQkJZHJtX2dlbV9zaG1lbV9yZWNvcmRfbWt3cml0ZSh2bWYpOwotCi0JCQlyZXR1cm4gcmV0OwomIzQzOwkJCXJldCA9IHZtZl9pbnNlcnRfcGZuX3BtZCh2bWYsIHBmbiwgd3JpdGUpOwogCQl9CiAjZW5kaWYKIAl9Ci0JcmV0dXJuIFZNX0ZBVUxUX0ZBTExCQUNLOwomIzQzOwomIzQzOwlpZiAocmV0ID09IFZNX0ZBVUxUX05PUEFHRSAmYW1wOyZhbXA7IHdyaXRlKQomIzQzOwkJZHJtX2dlbV9zaG1lbV9yZWNvcmRfbWt3cml0ZSh2bWYpOwomIzQzOwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdm1fZmF1bHRfdCBkcm1fZ2VtX3NobWVtX2FueV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgdW5zaWduZWQgaW50IG9yZGVyKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMKaW5kZXggYTgwNTEwNDg5YzQ1Ni4uZWYyN2EyZDdhZmMwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jCkBAIC0yNjMsNyAmIzQzOzI2Myw4IEBAIHZtX2ZhdWx0X3QgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHN0cnVjdCB2bV9mYXVsdCAqdm1mLAogCQkgKiBhdCBhcmJpdHJhcnkgdGltZXMgd2hpbGUgdGhlIGRhdGEgaXMgbW1hcCYjMzk7ZWQuCiAJCSAqIFNlZSB2bWZfaW5zZXJ0X3Bmbl9wcm90KCkgZm9yIGEgZGlzY3Vzc2lvbi4KIAkJICovCi0JCXJldCA9IHZtZl9pbnNlcnRfcGZuX3Byb3Qodm1hLCBhZGRyZXNzLCBwZm4sIHByb3QpOwomIzQzOwkJcmV0ID0gX192bWZfaW5zZXJ0X3Bmbl9wcm90KHZtYSwgYWRkcmVzcywgcGZuLCBwcm90LAomIzQzOwkJCQkJICAgIGkgPT0gMCAmYW1wOyZhbXA7ICEhKHZtZi0mZ3Q7ZmxhZ3MgJmFtcDsgRkFVTFRfRkxBR19XUklURSkpOwogCiAJCS8qIE5ldmVyIGVycm9yIG9uIHByZWZhdWx0ZWQgUFRFcyAqLwogCQlpZiAodW5saWtlbHkoKHJldCAmYW1wOyBWTV9GQVVMVF9FUlJPUikpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmMgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmMKaW5kZXggNDU1NjFiYzFjOWVmZi4uMzA5OTU1OGMwNzYyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYwpAQCAtMzk4LDE1ICYjNDM7Mzk4LDMzIEBAIHZvaWQgdm13X2JvX2RpcnR5X2NsZWFyX3JlcyhzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMpCiAJCWRpcnR5LSZndDtlbmQgPSByZXNfc3RhcnQ7CiB9CiAKJiM0MztzdGF0aWMgdm1fZmF1bHRfdCB2bXdfYm9fZGlydHlfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibykKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGxvbmcgcGFnZV9vZmZzZXQ7CiYjNDM7CXN0cnVjdCB2bXdfYm8gKnZibyA9IHRvX3Ztd19ibygmYW1wO2JvLSZndDtiYXNlKTsKJiM0MzsKJiM0MzsJcGFnZV9vZmZzZXQgPSB2bWYtJmd0O3Bnb2ZmIC0gZHJtX3ZtYV9ub2RlX3N0YXJ0KCZhbXA7Ym8tJmd0O2Jhc2Uudm1hX25vZGUpOwomIzQzOwlpZiAodW5saWtlbHkocGFnZV9vZmZzZXQgJmd0Oz0gUEZOX1VQKGJvLSZndDtyZXNvdXJjZS0mZ3Q7c2l6ZSkpKQomIzQzOwkJcmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKJiM0MzsKJiM0MzsJaWYgKHZiby0mZ3Q7ZGlydHkgJmFtcDsmYW1wOyB2Ym8tJmd0O2RpcnR5LSZndDttZXRob2QgPT0gVk1XX0JPX0RJUlRZX01LV1JJVEUgJmFtcDsmYW1wOwomIzQzOwkgICAgIXRlc3RfYml0KHBhZ2Vfb2Zmc2V0LCAmYW1wO3Ziby0mZ3Q7ZGlydHktJmd0O2JpdG1hcFswXSkpIHsKJiM0MzsJCXN0cnVjdCB2bXdfYm9fZGlydHkgKmRpcnR5ID0gdmJvLSZndDtkaXJ0eTsKJiM0MzsKJiM0MzsJCV9fc2V0X2JpdChwYWdlX29mZnNldCwgJmFtcDtkaXJ0eS0mZ3Q7Yml0bWFwWzBdKTsKJiM0MzsJCWRpcnR5LSZndDtzdGFydCA9IG1pbihkaXJ0eS0mZ3Q7c3RhcnQsIHBhZ2Vfb2Zmc2V0KTsKJiM0MzsJCWRpcnR5LSZndDtlbmQgPSBtYXgoZGlydHktJmd0O2VuZCwgcGFnZV9vZmZzZXQgJiM0MzsgMSk7CiYjNDM7CX0KJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogdm1fZmF1bHRfdCB2bXdfYm9fdm1fbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIHsKIAlzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IHZtZi0mZ3Q7dm1hOwogCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSAoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICopCiAJICAgIHZtYS0mZ3Q7dm1fcHJpdmF0ZV9kYXRhOwogCXZtX2ZhdWx0X3QgcmV0OwotCXVuc2lnbmVkIGxvbmcgcGFnZV9vZmZzZXQ7CiAJdW5zaWduZWQgaW50IHNhdmVfZmxhZ3M7Ci0Jc3RydWN0IHZtd19ibyAqdmJvID0gdG9fdm13X2JvKCZhbXA7Ym8tJmd0O2Jhc2UpOwogCiAJLyoKIAkgKiBta3dyaXRlKCkgZG9lc24mIzM5O3QgaGFuZGxlIHRoZSBWTV9GQVVMVF9SRVRSWSByZXR1cm4gdmFsdWUgY29ycmVjdGx5LgpAQCAtNDE5LDIyICYjNDM7NDM3LDcgQEAgdm1fZmF1bHRfdCB2bXdfYm9fdm1fbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcGFnZV9vZmZzZXQgPSB2bWYtJmd0O3Bnb2ZmIC0gZHJtX3ZtYV9ub2RlX3N0YXJ0KCZhbXA7Ym8tJmd0O2Jhc2Uudm1hX25vZGUpOwotCWlmICh1bmxpa2VseShwYWdlX29mZnNldCAmZ3Q7PSBQRk5fVVAoYm8tJmd0O3Jlc291cmNlLSZndDtzaXplKSkpIHsKLQkJcmV0ID0gVk1fRkFVTFRfU0lHQlVTOwotCQlnb3RvIG91dF91bmxvY2s7Ci0JfQotCi0JaWYgKHZiby0mZ3Q7ZGlydHkgJmFtcDsmYW1wOyB2Ym8tJmd0O2RpcnR5LSZndDttZXRob2QgPT0gVk1XX0JPX0RJUlRZX01LV1JJVEUgJmFtcDsmYW1wOwotCSAgICAhdGVzdF9iaXQocGFnZV9vZmZzZXQsICZhbXA7dmJvLSZndDtkaXJ0eS0mZ3Q7Yml0bWFwWzBdKSkgewotCQlzdHJ1Y3Qgdm13X2JvX2RpcnR5ICpkaXJ0eSA9IHZiby0mZ3Q7ZGlydHk7Ci0KLQkJX19zZXRfYml0KHBhZ2Vfb2Zmc2V0LCAmYW1wO2RpcnR5LSZndDtiaXRtYXBbMF0pOwotCQlkaXJ0eS0mZ3Q7c3RhcnQgPSBtaW4oZGlydHktJmd0O3N0YXJ0LCBwYWdlX29mZnNldCk7Ci0JCWRpcnR5LSZndDtlbmQgPSBtYXgoZGlydHktJmd0O2VuZCwgcGFnZV9vZmZzZXQgJiM0MzsgMSk7Ci0JfQotCi1vdXRfdW5sb2NrOgomIzQzOwlyZXQgPSB2bXdfYm9fZGlydHlfbWt3cml0ZSh2bWYsIGJvKTsKIAlkbWFfcmVzdl91bmxvY2soYm8tJmd0O2Jhc2UucmVzdik7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTQ4NCw2ICYjNDM7NDg3LDkgQEAgdm1fZmF1bHRfdCB2bXdfYm9fdm1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJCXByb3QgPSB2bV9nZXRfcGFnZV9wcm90KHZtYS0mZ3Q7dm1fZmxhZ3MpOwogCiAJcmV0ID0gdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHZtZiwgcHJvdCwgbnVtX3ByZWZhdWx0KTsKJiM0MzsJaWYgKHJldCA9PSBWTV9GQVVMVF9OT1BBR0UgJmFtcDsmYW1wOyAodm1mLSZndDtmbGFncyAmYW1wOyBGQVVMVF9GTEFHX1dSSVRFKSkKJiM0MzsJCVdBUk5fT05fT05DRSh2bXdfYm9fZGlydHlfbWt3cml0ZSh2bWYsIGJvKSk7CiYjNDM7CiAJaWYgKHJldCA9PSBWTV9GQVVMVF9SRVRSWSAmYW1wOyZhbXA7ICEodm1mLSZndDtmbGFncyAmYW1wOyBGQVVMVF9GTEFHX1JFVFJZX05PV0FJVCkpCiAJCXJldHVybiByZXQ7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaAppbmRleCA0ODVkZjljMmRiZGRiLi40N2VhY2Y2NDBjMDM1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21tLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9tbS5oCkBAIC00NTQ4LDYgJiM0Mzs0NTQ4LDEwIEBAIHZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkciwKIAkJCXVuc2lnbmVkIGxvbmcgcGZuKTsKIHZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm5fcHJvdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLAogCQkJdW5zaWduZWQgbG9uZyBwZm4sIHBncHJvdF90IHBncHJvdCk7CiYjNDM7dm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCiYjNDM7CQkJdW5zaWduZWQgbG9uZyBwZm4sIGJvb2wgd3JpdGUpOwomIzQzO3ZtX2ZhdWx0X3QgX192bWZfaW5zZXJ0X3Bmbl9wcm90KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCiYjNDM7CQkJdW5zaWduZWQgbG9uZyBwZm4sIHBncHJvdF90IHBncHJvdCwgYm9vbCBta3dyaXRlKTsKIHZtX2ZhdWx0X3Qgdm1mX2luc2VydF9taXhlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLAogCQkJdW5zaWduZWQgbG9uZyBwZm4pOwogdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X21peGVkX21rd3JpdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsCmRpZmYgLS1naXQgYS9tbS9odWdlX21lbW9yeS5jIGIvbW0vaHVnZV9tZW1vcnkuYwppbmRleCBiNWQxZTlkNDQ2M2QwLi4yZjRkY2FhODE5Yjc5IDEwMDY0NAotLS0gYS9tbS9odWdlX21lbW9yeS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2h1Z2VfbWVtb3J5LmMKQEAgLTE2MTUsNyAmIzQzOzE2MTUsNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBpbnNlcnRfcG1kKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCiAgKiBAcGZuOiBwZm4gdG8gaW5zZXJ0CiAgKiBAd3JpdGU6IHdoZXRoZXIgaXQmIzM5O3MgYSB3cml0ZSBmYXVsdAogICoKLSAqIEluc2VydCBhIHBtZCBzaXplIHBmbi4gU2VlIHZtZl9pbnNlcnRfcGZuKCkgZm9yIGFkZGl0aW9uYWwgaW5mby4KJiM0MzsgKiBJbnNlcnQgYSBwbWQgc2l6ZSBwZm4uIFNlZSB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlKCkgZm9yIGFkZGl0aW9uYWwgaW5mby4KICAqCiAgKiBSZXR1cm46IHZtX2ZhdWx0X3QgdmFsdWUuCiAgKi8KZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmMKaW5kZXggZmYzMzhjMmFiZTkyMy4uZDNkMTBiMmU0NzlhNCAxMDA2NDQKLS0tIGEvbW0vbWVtb3J5LmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtb3J5LmMKQEAgLTI3MTgsNiAmIzQzOzI3MTgsMzQgQEAgc3RhdGljIHZtX2ZhdWx0X3QgaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLAogCXJldHVybiBWTV9GQVVMVF9OT1BBR0U7CiB9CiAKJiM0Mzt2bV9mYXVsdF90IF9fdm1mX2luc2VydF9wZm5fcHJvdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwKJiM0MzsJCQl1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwZ3Byb3QsCiYjNDM7CQkJYm9vbCBta3dyaXRlKQomIzQzO3sKJiM0MzsJLyoKJiM0MzsJICogVGVjaG5pY2FsbHksIGFyY2hpdGVjdHVyZXMgd2l0aCBwdGVfc3BlY2lhbCBjYW4gYXZvaWQgYWxsIHRoZXNlCiYjNDM7CSAqIHJlc3RyaWN0aW9ucyAoc2FtZSBmb3IgcmVtYXBfcGZuX3JhbmdlKS4gIEhvd2V2ZXIgd2Ugd291bGQgbGlrZQomIzQzOwkgKiBjb25zaXN0ZW5jeSBpbiB0ZXN0aW5nIGFuZCBmZWF0dXJlIHBhcml0eSBhbW9uZyBhbGwsIHNvIHdlIHNob3VsZAomIzQzOwkgKiB0cnkgdG8ga2VlcCB0aGVzZSBpbnZhcmlhbnRzIGluIHBsYWNlIGZvciBldmVyeWJvZHkuCiYjNDM7CSAqLwomIzQzOwlCVUdfT04oISh2bWEtJmd0O3ZtX2ZsYWdzICZhbXA7IChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKSk7CiYjNDM7CUJVR19PTigodm1hLSZndDt2bV9mbGFncyAmYW1wOyAoVk1fUEZOTUFQfFZNX01JWEVETUFQKSkgPT0KJiM0MzsJCQkJCQkoVk1fUEZOTUFQfFZNX01JWEVETUFQKSk7CiYjNDM7CUJVR19PTigodm1hLSZndDt2bV9mbGFncyAmYW1wOyBWTV9QRk5NQVApICZhbXA7JmFtcDsgaXNfY293X21hcHBpbmcodm1hLSZndDt2bV9mbGFncykpOwomIzQzOwlCVUdfT04oKHZtYS0mZ3Q7dm1fZmxhZ3MgJmFtcDsgVk1fTUlYRURNQVApICZhbXA7JmFtcDsgcGZuX3ZhbGlkKHBmbikpOwomIzQzOwomIzQzOwlpZiAoYWRkciAmbHQ7IHZtYS0mZ3Q7dm1fc3RhcnQgfHwgYWRkciAmZ3Q7PSB2bWEtJmd0O3ZtX2VuZCkKJiM0MzsJCXJldHVybiBWTV9GQVVMVF9TSUdCVVM7CiYjNDM7CiYjNDM7CWlmICghcGZuX21vZGlmeV9hbGxvd2VkKHBmbiwgcGdwcm90KSkKJiM0MzsJCXJldHVybiBWTV9GQVVMVF9TSUdCVVM7CiYjNDM7CiYjNDM7CXBmbm1hcF9zZXR1cF9jYWNoZW1vZGVfcGZuKHBmbiwgJmFtcDtwZ3Byb3QpOwomIzQzOwomIzQzOwlyZXR1cm4gaW5zZXJ0X3Bmbih2bWEsIGFkZHIsIHBmbiwgcGdwcm90LCBta3dyaXRlKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTChfX3ZtZl9pbnNlcnRfcGZuX3Byb3QpOwomIzQzOwogLyoqCiAgKiB2bWZfaW5zZXJ0X3Bmbl9wcm90IC0gaW5zZXJ0IHNpbmdsZSBwZm4gaW50byB1c2VyIHZtYSB3aXRoIHNwZWNpZmllZCBwZ3Byb3QKICAqIEB2bWE6IHVzZXIgdm1hIHRvIG1hcCB0bwpAQCAtMjc1NCwyNyAmIzQzOzI3ODIsNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBpbnNlcnRfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsCiB2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuX3Byb3Qoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkciwKIAkJCXVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwZ3Byb3QpCiB7Ci0JLyoKLQkgKiBUZWNobmljYWxseSwgYXJjaGl0ZWN0dXJlcyB3aXRoIHB0ZV9zcGVjaWFsIGNhbiBhdm9pZCBhbGwgdGhlc2UKLQkgKiByZXN0cmljdGlvbnMgKHNhbWUgZm9yIHJlbWFwX3Bmbl9yYW5nZSkuICBIb3dldmVyIHdlIHdvdWxkIGxpa2UKLQkgKiBjb25zaXN0ZW5jeSBpbiB0ZXN0aW5nIGFuZCBmZWF0dXJlIHBhcml0eSBhbW9uZyBhbGwsIHNvIHdlIHNob3VsZAotCSAqIHRyeSB0byBrZWVwIHRoZXNlIGludmFyaWFudHMgaW4gcGxhY2UgZm9yIGV2ZXJ5Ym9keS4KLQkgKi8KLQlCVUdfT04oISh2bWEtJmd0O3ZtX2ZsYWdzICZhbXA7IChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKSk7Ci0JQlVHX09OKCh2bWEtJmd0O3ZtX2ZsYWdzICZhbXA7IChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKSA9PQotCQkJCQkJKFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpOwotCUJVR19PTigodm1hLSZndDt2bV9mbGFncyAmYW1wOyBWTV9QRk5NQVApICZhbXA7JmFtcDsgaXNfY293X21hcHBpbmcodm1hLSZndDt2bV9mbGFncykpOwotCUJVR19PTigodm1hLSZndDt2bV9mbGFncyAmYW1wOyBWTV9NSVhFRE1BUCkgJmFtcDsmYW1wOyBwZm5fdmFsaWQocGZuKSk7Ci0KLQlpZiAoYWRkciAmbHQ7IHZtYS0mZ3Q7dm1fc3RhcnQgfHwgYWRkciAmZ3Q7PSB2bWEtJmd0O3ZtX2VuZCkKLQkJcmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKLQotCWlmICghcGZuX21vZGlmeV9hbGxvd2VkKHBmbiwgcGdwcm90KSkKLQkJcmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKLQotCXBmbm1hcF9zZXR1cF9jYWNoZW1vZGVfcGZuKHBmbiwgJmFtcDtwZ3Byb3QpOwotCi0JcmV0dXJuIGluc2VydF9wZm4odm1hLCBhZGRyLCBwZm4sIHBncHJvdCwgZmFsc2UpOwomIzQzOwlyZXR1cm4gX192bWZfaW5zZXJ0X3Bmbl9wcm90KHZtYSwgYWRkciwgcGZuLCBwZ3Byb3QsIGZhbHNlKTsKIH0KIEVYUE9SVF9TWU1CT0wodm1mX2luc2VydF9wZm5fcHJvdCk7CiAKQEAgLTI4MDUsNiAmIzQzOzI4MTMsMzEgQEAgdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLAogfQogRVhQT1JUX1NZTUJPTCh2bWZfaW5zZXJ0X3Bmbik7CiAKJiM0MzsvKioKJiM0MzsgKiB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlIC0gaW5zZXJ0IHNpbmdsZSBwZm4gaW50byB1c2VyIHZtYSwgcG9zc2libHkgd3JpdGFibGUKJiM0MzsgKiBAdm1hOiB1c2VyIHZtYSB0byBtYXAgdG8KJiM0MzsgKiBAYWRkcjogdGFyZ2V0IHVzZXIgYWRkcmVzcyBvZiB0aGlzIHBhZ2UKJiM0MzsgKiBAcGZuOiBzb3VyY2Uga2VybmVsIHBmbgomIzQzOyAqIEB3cml0ZTogd2hldGhlciB0aGUgUFRFIHNob3VsZCBiZSBpbnN0YWxsZWQgd3JpdGFibGUKJiM0MzsgKgomIzQzOyAqIExpa2Ugdm1mX2luc2VydF9wZm4oKSwgZXhjZXB0IHRoYXQgQHdyaXRlIGFsbG93cyBpbnN0YWxsaW5nIGEgd3JpdGFibGUKJiM0MzsgKiBQVEUgZXZlbiB3aGVuIEB2bWEgaXMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uLCBpLmUuIHdoZW4gaXQgaGFzIGEKJiM0MzsgKiAucGFnZV9ta3dyaXRlKCkgb3IgLnBmbl9ta3dyaXRlKCkgY2FsbGJhY2sgYW5kIHZtYV9zZXRfcGFnZV9wcm90KCkgaGFzCiYjNDM7ICogdGhlcmVmb3JlIGNsZWFyZWQgdGhlIHdyaXRlIGJpdCBmcm9tIEB2bWEtJmd0O3ZtX3BhZ2VfcHJvdC4KJiM0MzsgKgomIzQzOyAqIE5vdGUgdGhhdCBuZWl0aGVyIG9mIHRoZXNlIGNhbGxiYWNrcyBpcyBpbnZva2VkLCBzbyB0aGUgY2FsbGVyIG11c3QKJiM0MzsgKiBpdHNlbGYgZG8gd2hhdGV2ZXIgdGhleSB3b3VsZCBoYXZlIGRvbmUgaWYgQHdyaXRlIGlzIHRydWUuCiYjNDM7ICoKJiM0MzsgKiBDb250ZXh0OiBQcm9jZXNzIGNvbnRleHQuICBNYXkgYWxsb2NhdGUgdXNpbmcgJUdGUF9LRVJORUwuCiYjNDM7ICogUmV0dXJuOiB2bV9mYXVsdF90IHZhbHVlLgomIzQzOyAqLwomIzQzO3ZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm5fbWt3cml0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLAomIzQzOwkJCXVuc2lnbmVkIGxvbmcgcGZuLCBib29sIHdyaXRlKQomIzQzO3sKJiM0MzsJcmV0dXJuIF9fdm1mX2luc2VydF9wZm5fcHJvdCh2bWEsIGFkZHIsIHBmbiwgdm1hLSZndDt2bV9wYWdlX3Byb3QsIHdyaXRlKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTCh2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlKTsKJiM0MzsKIHN0YXRpYyBib29sIHZtX21peGVkX29rKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHBmbiwKIAkJCWJvb2wgbWt3cml0ZSkKIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjI0MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDM1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCBmb3IgV3JpdGVhYmxlIFBURSBJbnNlcnRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyBpcyBpbnRlcmVzdGluZy4gSXQmIzM5O3MgdG91Y2hpbmcgc29tZSBwcmV0dHkgZnVuZGFtZW50YWwgYXJlYXM6IHRoZSBEUk0gR0VNIHNobWVtIGhlbHBlciwgdGhlIFRUTSBCTyBWTSwgVk1XZ2Z4LCBhbmQgZXZlbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IChgbW0vbWVtb3J5LmNgKS4gVGhlIGtleSBzZWVtcyB0byBiZSB0aGVzZSBuZXcgZnVuY3Rpb25zLCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCBhbmQgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgLiBUaGV5JiMzOTtyZSBiZWluZyBpbnRyb2R1Y2VkIHRvIGhhbmRsZSBzaXR1YXRpb25zIHdoZXJlIHdlIG5lZWQgdG8gaW5zZXJ0IGEgKndyaXRhYmxlKiBQVEUsIGV2ZW4gd2hlbiB0aGUgVk1BIGlzIHVuZGVyIHdyaXRlIG5vdGlmaWNhdGlvbiDigJMgdGhhdCBgLnBmbl9ta3dyaXRlYCBjYWxsYmFjayBzaXR1YXRpb24uIFJpZ2h0LCB0aGUgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBpc3N1ZS4gYHZtZl9pbnNlcnRfcGZuYCB3YXMgaW5zdGFsbGluZyBhIHJlYWQtb25seSBlbnRyeSBvbiBhIHdyaXRlIGZhdWx0LCBob3BpbmcgZm9yIGEgc2Vjb25kIGZhdWx0IHRvIHRyaWdnZXIgdGhlIGAucGZuX21rd3JpdGVgIHVwZ3JhZGUsIGJ1dCB0aGF0IHdhc24mIzM5O3QgYWx3YXlzIGhhcHBlbmluZyBpbiBzY2VuYXJpb3MgbGlrZSBkaXJlY3QgcGFnZSB0YWJsZSB3YWxrcyB3aXRoIGBmaXh1cF91c2VyX2ZhdWx0YC4KCkZpcnN0LCBsZXQmIzM5O3Mgc2VlIGlmIHRoaXMgaXMgZXZlbiByZWxldmFudCBhbmQgaWYgaXQmIzM5O3MgZ29pbmcgdG8gd29yay4gWWVzLCB0aGlzIGRlZmluaXRlbHkgaGl0cyBzb21lIGNvcmUgTU0gYW5kIERSTSBkcml2ZXIgY29kZS4gSXQmIzM5O3MgbW9kaWZ5aW5nIGNvZGUgaW4gcGxhY2VzIHRoYXQgYXJlIGNyaXRpY2FsIHRvIERSTSBkcml2ZXJzLCBpbmNsdWRpbmcgdmdlbSwgdmlydGlvLWdwdSwgYW5kIHZtd2dmeCwgYW5kIHRoZSBjb21tb24gc2htZW0gaGVscGVyLiBgZHJtX2dlbV9zaG1lbV9oZWxwZXIuY2AgaXMgaGVhdmlseSB1c2VkLCBhcyBpcyBgdHRtX2JvX3ZtLmNgLCBzbyBhIGZpeCBoZXJlIGhhcyB0aGUgcG90ZW50aWFsIGZvciBicm9hZCBpbXBhY3QuCgpOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSXQgbG9va3MgbGlrZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGBDT05GSUdfRFJNYCwgYENPTkZJR19EUk1fVk1XR0ZYYCwgYENPTkZJR19EUk1fVFRNYCwgYW5kIGBDT05GSUdfRFJNX0dFTV9TSE1FTV9IRUxQRVJgLiBXYWl0LCBgZHJtX2dlbV9zaG1lbV9oZWxwZXJgIGlzIHNlbGVjdGVkIGJ5ICphIGxvdCogb2YgZHJpdmVycy4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IEtjb25maWcgZmlsZSBpbiBgZHJpdmVycy9ncHUvZHJtL2AgdG8gYmUgY2VydGFpbi4gR290dGEgYmUgcHJlY2lzZSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUk1fVk1XR0ZYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzoyOmNvbmZpZyBEUk1fVk1XR0ZYXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0RSTSBkcml2ZXIgZm9yIFZNd2FyZSBWaXJ0dWFsIEdQVVwmIzM0O1xuLS1cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZy0xOS1cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzoyMDpjb25maWcgRFJNX1ZNV0dGWF9NS1NTVEFUU1xuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWtzR3Vlc3RTdGF0cyBpbnN0cnVtZW50YXRpb24gb2Ygdm13Z2Z4IGJ5IGRlZmF1bHRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjQwCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSByb2xlIG9mIHRoZSB0aGlua2luZyBwcm9jZXNzIGRlc2NyaWJlZDoKCioqSW52ZXN0aWdhdGluZyBHRU1fU0hNRU1fSEVMUEVSIGluIHRoZSBEUk0gS2NvbmZpZyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB3b3JrLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYEdFTV9TSE1FTV9IRUxQRVJgIHRoaW5nLiBXaGVyZSB3b3VsZCB0aGUgZGVmaW5pdGlvbiBvZiB0aGF0IGJlLCBpbiB0aGUgdmFzdCBMaW51eCBrZXJuZWwgY29kZWJhc2U/IExldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UsIHRoZSBoZWFydCBvZiB0aGUgZ3JhcGhpY3MgZHJpdmVyIGluZnJhc3RydWN0dXJlOiBgZHJpdmVycy9ncHUvZHJtL0tjb25maWdgLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyIChEUk0pIGRyaXZlcnMgYXJlIGxpa2VseSBkZWZpbmVkLiBJIG5lZWQgdG8gZGVsdmUgaW50byB0aGF0IEtjb25maWcgZmlsZSBhbmQgc2VlIHdoYXQgaW5mb3JtYXRpb24gaXQgaG9sZHMgcmVnYXJkaW5nIGBHRU1fU0hNRU1fSEVMUEVSYC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUk1fR0VNX1NITUVNX0hFTFBFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTI2MD1jb25maWcgRFJNX0dFTV9ETUFfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjY4LVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc6MjY5OmNvbmZpZyBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjcwLVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTU4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgYSBUcmlzdGF0ZSBTZWxlY3RvcioqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7dmUgZ290IGEgdHJpc3RhdGUgaGVyZSwgYW5kIGl0IHNlZW1zIHRvIGJlIGRyaXZlbiBieSBzb21ldGhpbmcgZXh0ZXJuYWwsIHNvbWUgb3RoZXIgcGllY2Ugb2YgdGhlIHN5c3RlbSDigJMgZHJpdmVycywgcHJvYmFibHkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIHdobyYjMzk7cyBpbiBjaGFyZ2Ugb2Ygc2VsZWN0aW5nIHRoaXMgdGhpbmc/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgdGhlIGRlcGVuZGVuY2llcy4gVGhpcyBpcyBhIGNydWNpYWwgZmlyc3Qgc3RlcC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSB0aGlzIHRyaXN0YXRlIGFuZCBwaW5wb2ludCB0aGUgc2VsZWN0IHNpZ25hbC4gV2hlcmUgaXMgaXQgY29taW5nIGZyb20/IFdoYXQgYXJlIHRoZSBjb25kaXRpb25zIHRoYXQgdHJpZ2dlciB0aGUgZGlmZmVyZW50IHN0YXRlcz8gSXMgaXQgYSBzaW1wbGUgc3RhdGUgbWFjaGluZT8gSXMgdGhlcmUgYSBiaXQgb2YgYXN5bmNocm9ub3VzIGxvZ2ljIGF0IHBsYXk/IFRoaXMgaXMgaG93IEkmIzM5O2xsIGJlZ2luIG15IGludmVzdGlnYXRpb24uIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBhc3NlcnRpbmcgdGhlc2Ugc3RhdGVzIGFuZCB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTI3OD1jb25maWcgUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI4MC1cdGRlcGVuZHMgb24gRFJNIFx1MDAyNlx1MDAyNiBNTVVcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI4MTpcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjgyLVx0aGVscFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnPTYwPWNvbmZpZyBEUk1fS1VOSVRfVEVTVFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnLTY5LVx0c2VsZWN0IERSTV9FWFBPUlRfRk9SX1RFU1RTIGlmIG1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjcwOlx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy03MS1cdHNlbGVjdCBEUk1fS1VOSVRfVEVTVF9IRUxQRVJTXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FzdC9LY29uZmlnPTI9Y29uZmlnIERSTV9BU1Rcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYXN0L0tjb25maWctNS1cdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxuZHJpdmVycy9ncHUvZHJtL2FzdC9LY29uZmlnOjY6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9hc3QvS2NvbmZpZy03LVx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL2d1ZC9LY29uZmlnPTM9Y29uZmlnIERSTV9HVURcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZ3VkL0tjb25maWctOC1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL2d1ZC9LY29uZmlnOjk6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9ndWQvS2NvbmZpZy0xMC1cdHNlbGVjdCBCQUNLTElHSFRfQ0xBU1NfREVWSUNFXG4tLVxuZHJpdmVycy9ncHUvZHJtL2h5cGVydi9LY29uZmlnPTI9Y29uZmlnIERSTV9IWVBFUlZcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaHlwZXJ2L0tjb25maWctNi1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL2h5cGVydi9LY29uZmlnOjc6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9oeXBlcnYvS2NvbmZpZy04LVx0aGVscFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9LY29uZmlnPTQ9Y29uZmlnIERSTV9QT1dFUlZSXG4tLVxuZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uL0tjb25maWctMTEtXHRzZWxlY3QgRFJNX0VYRUNcbmRyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9LY29uZmlnOjEyOlx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vS2NvbmZpZy0xMy1cdHNlbGVjdCBEUk1fU0NIRURcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbGltYS9LY29uZmlnPTQ9Y29uZmlnIERSTV9MSU1BXG4tLVxuZHJpdmVycy9ncHUvZHJtL2xpbWEvS2NvbmZpZy0xMS0gICAgICAgc2VsZWN0IERSTV9TQ0hFRFxuZHJpdmVycy9ncHUvZHJtL2xpbWEvS2NvbmZpZzoxMjogICAgICAgc2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vbGltYS9LY29uZmlnLTEzLSAgICAgICBzZWxlY3QgUE1fREVWRlJFUVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL0tjb25maWc9Mj1jb25maWcgRFJNX01HQUcyMDBcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9LY29uZmlnLTUtXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cbmRyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL0tjb25maWc6NjpcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvS2NvbmZpZy03LVx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L0tjb25maWc9Mz1jb25maWcgRFJNX1BBTkZST1NUXG4tLVxuZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L0tjb25maWctMTEtXHRzZWxlY3QgSU9NTVVfSU9fUEdUQUJMRV9MUEFFXG5kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvS2NvbmZpZzoxMjpcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L0tjb25maWctMTMtXHRzZWxlY3QgUE1fREVWRlJFUVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9zaXRyb25peC9LY29uZmlnPTE9Y29uZmlnIERSTV9TVDc1NzFcbi0tXG5kcml2ZXJzL2dwdS9kcm0vc2l0cm9uaXgvS2NvbmZpZy00LVx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXG5kcml2ZXJzL2dwdS9kcm0vc2l0cm9uaXgvS2NvbmZpZzo1Olx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vc2l0cm9uaXgvS2NvbmZpZy02LVx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL3NpdHJvbml4L0tjb25maWc9NzE9Y29uZmlnIERSTV9TVDc5MjBcbi0tXG5kcml2ZXJzL2dwdS9kcm0vc2l0cm9uaXgvS2NvbmZpZy03My1cdGRlcGVuZHMgb24gRFJNIFx1MDAyNlx1MDAyNiBTUEkgXHUwMDI2XHUwMDI2IE1NVVxuZHJpdmVycy9ncHUvZHJtL3NpdHJvbml4L0tjb25maWc6NzQ6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9zaXRyb25peC9LY29uZmlnLTc1LVx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL3NvbG9tb24vS2NvbmZpZz0xPWNvbmZpZyBEUk1fU1NEMTMwWFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9zb2xvbW9uL0tjb25maWctNS1cdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxuZHJpdmVycy9ncHUvZHJtL3NvbG9tb24vS2NvbmZpZzo2Olx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vc29sb21vbi9LY29uZmlnLTctXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZz0xMD1jb25maWcgRFJNX0NPUkVCT09URFJNXG4tLVxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctMTUtXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnOjE2Olx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy0xNy1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnPTI2PWNvbmZpZyBEUk1fRUZJRFJNXG4tLVxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctMzAtXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnOjMxOlx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy0zMi1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnPTQyPWNvbmZpZyBEUk1fT0ZEUk1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy00Ni1cdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWc6NDc6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnLTQ4LVx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWc9NTc9Y29uZmlnIERSTV9TSU1QTEVEUk1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy02MS1cdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWc6NjI6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnLTYzLVx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWc9NzY9Y29uZmlnIERSTV9WRVNBRFJNXG4tLVxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctODAtXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnOjgxOlx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy04Mi1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc9Mz1jb25maWcgRFJNX0FQUExFVEJEUk1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTYtXHRkZXBlbmRzIG9uIFg4NiB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc6NzpcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy04LVx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZz0yNz1jb25maWcgRFJNX0JPQ0hTXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy0zMC1cdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZzozMTpcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy0zMi1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc9Mzk9Y29uZmlnIERSTV9DSVJSVVNfUUVNVVxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctNDMtXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc6NDQ6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctNDUtXHRoZWxwXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZz01OT1jb25maWcgRFJNX0dNMTJVMzIwXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy02My1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZzo2NDpcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy02NS1cdGhlbHBcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnPTg1PWNvbmZpZyBEUk1fUElYUEFQRVJcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTg5LSAgICAgICAgc2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnOjkwOiAgICAgICAgc2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTkxLSAgICAgICAgc2VsZWN0IERSTV9LTVNfSEVMUEVSXG4tLVxuZHJpdmVycy9ncHUvZHJtL3VkbC9LY29uZmlnPTI9Y29uZmlnIERSTV9VRExcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdWRsL0tjb25maWctOC1cdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxuZHJpdmVycy9ncHUvZHJtL3VkbC9LY29uZmlnOjk6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS91ZGwvS2NvbmZpZy0xMC1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS92M2QvS2NvbmZpZz0yPWNvbmZpZyBEUk1fVjNEXG4tLVxuZHJpdmVycy9ncHUvZHJtL3YzZC9LY29uZmlnLTgtXHRzZWxlY3QgRFJNX1NDSEVEXG5kcml2ZXJzL2dwdS9kcm0vdjNkL0tjb25maWc6OTpcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3YzZC9LY29uZmlnLTEwLVx0aGVscFxuLS1cbmRyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWc9Mj1jb25maWcgRFJNX1ZHRU1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmdlbS9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIERSTSBcdTAwMjZcdTAwMjYgTU1VXG5kcml2ZXJzL2dwdS9kcm0vdmdlbS9LY29uZmlnOjU6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWctNi1cdGhlbHBcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWc9Mj1jb25maWcgRFJNX1ZJUlRJT19HUFVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWctNy1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3ZpcnRpby9LY29uZmlnOjg6XHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vS2NvbmZpZy05LVx0c2VsZWN0IFZJUlRJT19ETUFfU0hBUkVEX0JVRkZFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc9Mz1jb25maWcgRFJNX1ZLTVNcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTctXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc6ODpcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy05LVx0c2VsZWN0IENSQzMyXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0NzEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIERSTSBNb2R1bGUgU2VsZWN0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGVuYWJsaW5nIGEgZmV3IERSTSBtb2R1bGVzIGhlcmU6IGBEUk1fVkdFTWAsIGBEUk1fVklSVElPX0dQVWAsIGBEUk1fVktNU2AsIGFuZCBgRFJNX1ZNV0dGWGAuIFNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHN0YXJ0aW5nIHBvaW50LCBnaXZlbiB0aGUgZGlmZmVyZW50IHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aGV5IHN1cHBvcnQuIEFjdHVhbGx5LCBob2xkIG9uIOKAkyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGZ1enppbmcgbm93LiBJIGtub3cgdGhhdCBgRFJNX1ZHRU1gIGFuZCBgRFJNX1ZLTVNgIGFyZSBwYXJ0aWN1bGFybHkgdmFsdWFibGUgaW4gdGhhdCBjb250ZXh0IGR1ZSB0byB0aGVpciBhcmNoaXRlY3R1cmVzLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoYXQgYERSTV9UVE1gIGlzIHNlbGVjdGVkIHdpdGggdGhlbSB0b28sIGFzIHRoYXQgY291bGQgY2F1c2UgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgRFJNX1RUTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MjUwPWNvbmZpZyBEUk1fVFRNX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI1Mi1cdGRlcGVuZHMgb24gRFJNXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyNTM6XHRzZWxlY3QgRFJNX1RUTVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjU0LVx0c2VsZWN0IERSTV9LTVNfSEVMUEVSIGlmIERSTV9GQkRFVl9FTVVMQVRJT05cbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zz04Nj1jb25maWcgRFJNX1RUTV9LVU5JVF9URVNUXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctODgtXHRkZXBlbmRzIG9uIERSTSBcdTAwMjZcdTAwMjYgS1VOSVQgXHUwMDI2XHUwMDI2IE1NVSBcdTAwMjZcdTAwMjYgKFVNTCB8fCBDT01QSUxFX1RFU1QpXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zzo4OTpcdHNlbGVjdCBEUk1fVFRNXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy05MC1cdHNlbGVjdCBEUk1fQlVERFlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnPTM9Y29uZmlnIERSTV9BTURHUFVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTE1LVx0c2VsZWN0IERSTV9TQ0hFRFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZzoxNjpcdHNlbGVjdCBEUk1fVFRNXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnOjE3Olx0c2VsZWN0IERSTV9UVE1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTE4LVx0c2VsZWN0IFBPV0VSX1NVUFBMWVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvS2NvbmZpZz0yPWNvbmZpZyBEUk1fSElTSV9ISUJNQ1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvS2NvbmZpZy05LVx0c2VsZWN0IERSTV9WUkFNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9LY29uZmlnOjEwOlx0c2VsZWN0IERSTV9UVE1cbmRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvS2NvbmZpZzoxMTpcdHNlbGVjdCBEUk1fVFRNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9LY29uZmlnLTEyLVx0c2VsZWN0IEkyQ1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWc9Mj1jb25maWcgRFJNX0k5MTVcbi0tXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnLTM5LVx0c2VsZWN0IFZNQVBfUEZOXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnOjQwOlx0c2VsZWN0IERSTV9UVE1cbmRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWctNDEtXHRzZWxlY3QgRFJNX0JVRERZXG4tLVxuZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL0tjb25maWc9Mz1jb25maWcgRFJNX0xPT05HU09OXG4tLVxuZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL0tjb25maWctOC1cdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL0tjb25maWc6OTpcdHNlbGVjdCBEUk1fVFRNXG5kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vS2NvbmZpZzoxMDpcdHNlbGVjdCBEUk1fVFRNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL0tjb25maWctMTEtXHRzZWxlY3QgSTJDXG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZz0yPWNvbmZpZyBEUk1fTk9VVkVBVVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWctMTItXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWc6MTM6XHRzZWxlY3QgRFJNX1RUTVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZzoxNDpcdHNlbGVjdCBEUk1fVFRNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZy0xNS1cdHNlbGVjdCBEUk1fRVhFQ1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZz0yPWNvbmZpZyBEUk1fUVhMXG4tLVxuZHJpdmVycy9ncHUvZHJtL3F4bC9LY29uZmlnLTYtXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZzo3Olx0c2VsZWN0IERSTV9UVE1cbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZzo4Olx0c2VsZWN0IERSTV9UVE1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vcXhsL0tjb25maWctOS1cdHNlbGVjdCBEUk1fRVhFQ1xuLS1cbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZz0zPWNvbmZpZyBEUk1fUkFERU9OXG4tLVxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnLTEyLVx0c2VsZWN0IERSTV9TVUJBTExPQ19IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZzoxMzogICAgICAgIHNlbGVjdCBEUk1fVFRNXG5kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL0tjb25maWc6MTQ6XHRzZWxlY3QgRFJNX1RUTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZy0xNS1cdHNlbGVjdCBGQl9JT01FTV9IRUxQRVJTIGlmIERSTV9GQkRFVl9FTVVMQVRJT05cbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL0tjb25maWc9Mj1jb25maWcgRFJNX1ZCT1hWSURFT1xuLS1cbmRyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vS2NvbmZpZy03LVx0c2VsZWN0IERSTV9WUkFNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnOjg6XHRzZWxlY3QgRFJNX1RUTVxuZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnOjk6XHRzZWxlY3QgRFJNX1RUTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vS2NvbmZpZy0xMC1cdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZz0yPWNvbmZpZyBEUk1fVk1XR0ZYXG4tLVxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTYtXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzo3Olx0c2VsZWN0IERSTV9UVE1cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzo4Olx0c2VsZWN0IERSTV9UVE1fSEVMUEVSXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctOS1cdHNlbGVjdCBNQVBQSU5HX0RJUlRZX0hFTFBFUlNcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZz0yPWNvbmZpZyBEUk1fWEVcbi0tXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy0zOC1cdHNlbGVjdCBWTUFQX1BGTlxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6Mzk6XHRzZWxlY3QgRFJNX1RUTVxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc6NDA6XHRzZWxlY3QgRFJNX1RUTV9IRUxQRVJcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTQxLVx0c2VsZWN0IERSTV9FWEVDXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMTI3CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMjgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBEUk0gRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBzZWUgd2UmIzM5O3JlIGVuYWJsaW5nIGEgYnVuY2ggb2YgRFJNIGRyaXZlcnM6IERSTV9WR0VNLCBEUk1fVktNUywgRFJNX1FYTCwgRFJNX1ZCT1hWSURFTywgYW5kIERSTV9WTVdHRlguIFRoZXNlIGFsbCBzZWVtIHRvIGRlcGVuZCBvbiBEUk1fVFRNLiBNYWtlcyBzZW5zZS4gTm93LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgZnVuY3Rpb24gbW9kaWZpY2F0aW9ucyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjb25maWd1cmF0aW9uLgoKUmlnaHQsIEkmIzM5O20gc2VlaW5nIGNoYW5nZXMgaW46IGBkcm1fZ2VtX3NobWVtX3JlY29yZF9ta3dyaXRlYCwgYHRyeV9pbnNlcnRfcGZuYCwgYGRybV9nZW1fc2htZW1fYW55X2ZhdWx0YCwgYHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZGAsIGB2bXdfYm9fZGlydHlfbWt3cml0ZWAsIGB2bXdfYm9fdm1fbWt3cml0ZWAsIGB2bXdfYm9fdm1fZmF1bHRgLCBgdm1mX2luc2VydF9wZm5fbWt3cml0ZWAsIGBfX3ZtZl9pbnNlcnRfcGZuX3Byb3RgLCBgdm1mX2luc2VydF9wZm5fcHJvdGAsIGFuZCBgdm1mX2luc2VydF9wZm5gLiBUaGF0JiMzOTtzIGEgZGVjZW50LXNpemVkIGxpc3Q7IGRlZmluaXRlbHkgaW52b2x2aW5nIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBmYXVsdCBoYW5kbGluZy4KCkhtbSwgd2FpdCBhIHNlY29uZC4uLiBgdHJ5X2luc2VydF9wZm5gIGlzIGEgc3RhdGljIGZ1bmN0aW9uIGluIGBkcm1fZ2VtX3NobWVtX2hlbHBlci5jYC4gT2theSwgc28gaXQgbWlnaHQgYmUgYSBsb2NhbCBoZWxwZXIuIEFuZCwgaXMgYGRybV9nZW1fc2htZW1fYW55X2ZhdWx0YCBhbHNvIHN0YXRpYyBpbiBgZHJtX2dlbV9zaG1lbV9oZWxwZXIuY2A/IE5vLCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGp1c3QgY29udGV4dHVhbGx5IHJlbGV2YW50IGhlcmUsIG5vdCBhY3R1YWxseSBtb2RpZmllZC4gT2theSwgbGV0JiMzOTtzIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgZHJtX2dlbV9zaG1lbV9oZWxwZXIuY2AgdG8gc2VlIGhvdyB0aGlzIGFmZmVjdHMgdGhlIG92ZXJhbGwgZmxvdy4gTmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMgYXJlIGJlaW5nIGNoYW5nZWQgYnkgdGhpcyBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkcm1fZ2VtX3NobWVtX2FueV9mYXVsdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTYwMz1zdGF0aWMgdm1fZmF1bHRfdCB0cnlfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgdW5zaWduZWQgaW50IG9yZGVyLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTYyOC1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjYyOTpzdGF0aWMgdm1fZmF1bHRfdCBkcm1fZ2VtX3NobWVtX2FueV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgdW5zaWduZWQgaW50IG9yZGVyKVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNjMwLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz02Njk9c3RhdGljIHZtX2ZhdWx0X3QgZHJtX2dlbV9zaG1lbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTY3MC17XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo2NzE6XHRyZXR1cm4gZHJtX2dlbV9zaG1lbV9hbnlfZmF1bHQodm1mLCAwKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTY3Mi19XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9NzE0PWNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBkcm1fZ2VtX3NobWVtX3ZtX29wcyA9IHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03MTYtI2lmZGVmIENPTkZJR19BUkNIX1NVUFBPUlRTX1BNRF9QRk5NQVBcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjcxNzpcdC5odWdlX2ZhdWx0ID0gZHJtX2dlbV9zaG1lbV9hbnlfZmF1bHQsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03MTgtI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMjU3CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRpdmluZyBpbnRvIHRoZSBNZW1vcnkgRmF1bHQqKgoKQWxyaWdodCwgdGhlIGxpa2VseSBjdWxwcml0IGZvciB0aGlzIG1lbW9yeSBpc3N1ZSBpcyBgZHJtX2dlbV9zaG1lbV9mYXVsdGAuIFRoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50IHRvIGludmVzdGlnYXRlLCBhbmQgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGRlZXAgZGl2ZS4gSSBrbm93IHRoYXQgZnVuY3Rpb24gd2VsbC4gTm93LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGB0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWRgIGZ1bmN0aW9uIGl0IGNhbGxzLCB0byBzZWUgd2hhdCBraW5kIG9mIHJlc2VydmF0aW9uIGlzIHRha2luZyBwbGFjZS4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoYXQgcmVzb3VyY2VzIGFyZSBpbiBwbGF5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmM9MTYzPUVYUE9SVF9TWU1CT0wodHRtX2JvX3ZtX3Jlc2VydmUpO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMtMTY1LS8qKlxuZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYzoxNjY6ICogdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkIC0gVFRNIGZhdWx0IGhlbHBlclxuZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYy0xNjctICogQHZtZjogVGhlIHN0cnVjdCB2bV9mYXVsdCBnaXZlbiBhcyBhcmd1bWVudCB0byB0aGUgZmF1bHQgY2FsbGJhY2tcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jLTE4Mi0gKi9cbmRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmM6MTgzOnZtX2ZhdWx0X3QgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHN0cnVjdCB2bV9mYXVsdCAqdm1mLFxuZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYy0xODQtXHRcdFx0XHQgICAgcGdwcm90X3QgcHJvdCxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jLTI4Mi19XG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jOjI4MzpFWFBPUlRfU1lNQk9MKHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZCk7XG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jLTI4NC1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jPTMyMj12bV9mYXVsdF90IHR0bV9ib192bV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jLTMzNS1cdGlmIChkcm1fZGV2X2VudGVyKGJvLVx1MDAzZWJhc2UuZGV2LCBcdTAwMjZpZHgpKSB7XG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jOjMzNjpcdFx0cmV0ID0gdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHZtZiwgcHJvdCwgVFRNX0JPX1ZNX05VTV9QUkVGQVVMVCk7XG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jLTMzNy1cdFx0ZHJtX2Rldl9leGl0KGlkeCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzOTgzCgkJCQkJCQlvdXRwdXQ6IDQ4CgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOgoKKipBbmFseXppbmcgdGhlIE1lbW9yeSBNYW5hZ2VtZW50IEZhdWx0KioKCk9rYXksIHNvIHdlJiMzOTt2ZSBoaXQgYSBgdHRtX2JvX3ZtX2ZhdWx0YCwgd2hpY2ggaXMgb3VyIGVudHJ5IHBvaW50IGhlcmUuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBUaGUgZmlyc3QgdGhpbmdzIEkgbmVlZCB0byBleGFtaW5lIGFyZSBgdm13X2JvX3ZtX21rd3JpdGVgIGFuZCBgdm13X2JvX3ZtX2ZhdWx0YC4gVGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIGxpa2VseSBpbnZvbHZlZCBpbiBoYW5kbGluZyB0aGlzIHZpcnR1YWwgbWVtb3J5IGZhdWx0IHdpdGhpbiB0aGUgZ3JhcGhpY3MgY29udGV4dC4gSSBzdXNwZWN0IHRoZSBjb3JlIGlzc3VlIGlzIGdvaW5nIHRvIGJlIHdpdGhpbiB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGVzZSB0d28gZnVuY3Rpb25zIGFuZCBob3cgdGhleSYjMzk7cmUgbWFuYWdpbmcgYnVmZmVyIG9iamVjdCB3cml0ZSBhY2Nlc3MgYW5kIGZhdWx0IGhhbmRsaW5nIHdpdGhpbiB0aGUgVk13YXJlIGVudmlyb25tZW50LiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgdW5kZXJzdGFuZCB0aGUgbWVtb3J5IG1hcHBpbmcgcHJvY2Vzcy4gSXQmIzM5O3MgbGlrZWx5IHJlbGF0ZWQgdG8gaG93IHRoZSBidWZmZXIgb2JqZWN0IGlzIG1hcHBlZCBmb3Igd3JpdGluZyBhbmQgdGhlbiB0aGUgZmF1bHQgaGFuZGxpbmcgdGhhdCBraWNrcyBpbiB3aGVuIGEgd3JpdGUgYXR0ZW1wdCBpcyBtYWRlLiBUaGUgaW50ZXJwbGF5IGJldHdlZW4gdGhlc2UgdHdvIGZ1bmN0aW9ucyB3aWxsIGJlIHRoZSBjcnV4IG9mIHRoZSBwcm9ibGVtLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm13X2JvX3ZtX21rd3JpdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jPTQwMT1zdGF0aWMgdm1fZmF1bHRfdCB2bXdfYm9fZGlydHlfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmMtNDIwLVxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jOjQyMTp2bV9mYXVsdF90IHZtd19ib192bV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jLTQyMi17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0NDUyCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgdm13X2JvX3ZtX2ZhdWx0YCBQYXRoKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgdm13X2JvX3ZtX2ZhdWx0YCBmdW5jdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVudGFsIG1hcCBvZiBob3cgdGhpcyB0aGluZyBvcGVyYXRlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgbWVudGFsbHkgcmVjb25zdHJ1Y3QgdGhlIGV4ZWN1dGlvbiBwYXRoLiBXaGF0IGFyZSB0aGUgbGlrZWx5IHRyaWdnZXJzPyBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHRoZSB1c3VhbCBzdXNwZWN0czogbWVtb3J5IGFjY2VzcyB2aW9sYXRpb25zIHdpdGhpbiBhIGd1ZXN0IFZNLCBwb3RlbnRpYWwgaXNzdWVzIHdpdGggYnVmZmVyIG9iamVjdHMgKEJPcykgbWFwcGluZywgYW5kIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBob3N0JiMzOTtzIG1lbW9yeSBtYW5hZ2VtZW50LiBXaGVyZSBhcmUgdGhlIGxpa2VseSBwb2ludHMgb2YgY29udGVudGlvbiBvciBwb3RlbnRpYWwgYm90dGxlbmVja3M/IEFtIEkgbG9va2luZyBmb3IgYSBzdHJhaWdodGZvcndhcmQgc2VnbWVudGF0aW9uIGZhdWx0LCBvciBzb21ldGhpbmcgbW9yZSBudWFuY2VkIGxpa2UgYSBwYWdlIHRhYmxlIHdhbGsgaXNzdWU/IEkgc2hvdWxkIGtlZXAgYW4gZXllIG91dCBmb3IgcG90ZW50aWFsIHJhY2VzIG9yIGxvY2sgY29udGVudGlvbiBwb2ludHMgd2l0aGluIHRoZSBzdXJyb3VuZGluZyBWTSBvciBob3N0IGNvZGUgcGF0aHMuIEEgcXVpY2sgbWVudGFsIHdhbGt0aHJvdWdoIG9mIHRoZSBjb2RlJiMzOTtzIGNhbGwgc3RhY2sgaXMgaW4gb3JkZXIuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBwb2ludHMgdG93YXJkcyBhIHNwZWNpZmljIGFyZWEsIG9yIGlmIHRoaXMgZnVuY3Rpb24gaXMgYmVoYXZpbmcgYXMgZXhwZWN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Ztd19ib192bV9mYXVsdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmM9NDIxPXZtX2ZhdWx0X3Qgdm13X2JvX3ZtX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jLTQ0NC1cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYzo0NDU6dm1fZmF1bHRfdCB2bXdfYm9fdm1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmMtNDQ2LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ4ODYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIFBGTiBJbnNlcnRpb24gaW4gdGhlIFZNIEZyYW1ld29yayoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiB0aGUgY29yZSBtZWNoYW5pc21zIGZvciBwaHlzaWNhbGx5IGluc2VydGluZyBwYWdlIGZyYW1lIG51bWJlcnMgKFBGTnMpIGludG8gdGhlIHZpcnR1YWwgbWVtb3J5IGZyYW1ld29yay4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW50ZXJwbGF5IGJldHdlZW4gYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YC4gVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgdGhlIGxpa2VseSBsaW5jaHBpbnMgd2hlbiB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHdyaXRlIHBlcm1pc3Npb25zIGFuZCBwcm90ZWN0aW9uIGF0dHJpYnV0ZXMgZHVyaW5nIFBGTiBpbnNlcnRpb24uIEkgd2FudCB0byBxdWlja2x5IGVuc3VyZSB0aGF0IEkgY2FuIGFjY3VyYXRlbHkgcmVsYXRlIHRoZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGJhY2sgdG8gdGhlIGJyb2FkZXIgY29uY2VwdHVhbCBtb2RlbC4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW5kIGFjY291bnQgZm9yIGFueSBwb3RlbnRpYWwgc3VidGxlIGludGVyYWN0aW9ucyBvciBzaWRlIGVmZmVjdHMgdGhleSBtaWdodCBleGhpYml0LCBlc3BlY2lhbGx5IGlmIHRoZXJlJiMzOTtzIGFueSB0cmlja3kgbG9ja2luZyBvciBhdG9taWNpdHkgaW52b2x2ZWQgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgaW4gdGhpcyBjb250ZXh0LiBUaW1lIHRvIHJlZnJlc2ggYW5kIGRpc3NlY3QgdGhlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm1mX2luc2VydF9wZm5fbWt3cml0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL21lbW9yeS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbW9yeS5jPTI4MTQ9RVhQT1JUX1NZTUJPTCh2bWZfaW5zZXJ0X3Bmbik7XG4tLVxubW0vbWVtb3J5LmMtMjgxNi0vKipcbm1tL21lbW9yeS5jOjI4MTc6ICogdm1mX2luc2VydF9wZm5fbWt3cml0ZSAtIGluc2VydCBzaW5nbGUgcGZuIGludG8gdXNlciB2bWEsIHBvc3NpYmx5IHdyaXRhYmxlXG5tbS9tZW1vcnkuYy0yODE4LSAqIEB2bWE6IHVzZXIgdm1hIHRvIG1hcCB0b1xuLS1cbm1tL21lbW9yeS5jLTI4MzMtICovXG5tbS9tZW1vcnkuYzoyODM0OnZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm5fbWt3cml0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxubW0vbWVtb3J5LmMtMjgzNS1cdFx0XHR1bnNpZ25lZCBsb25nIHBmbiwgYm9vbCB3cml0ZSlcbi0tXG5tbS9tZW1vcnkuYy0yODM4LX1cbm1tL21lbW9yeS5jOjI4Mzk6RVhQT1JUX1NZTUJPTCh2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlKTtcbm1tL21lbW9yeS5jLTI4NDAtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MzgxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBLZXJuZWwgRmF1bHQgSGFuZGxlcnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucywgYW5kIHRoZXkmIzM5O3JlIGFsbCBtYXJrZWQgYXMgYEVYUE9SVF9TWU1CT0xgLCB3aGljaCBpbW1lZGlhdGVseSBncmFicyBteSBhdHRlbnRpb24uIFRoYXQgbWVhbnMgdGhleSYjMzk7cmUgY29yZSBlbm91Z2ggdG8gYmUgZXhwb3J0ZWQgZm9yIHVzZSBpbiBvdGhlciBtb2R1bGVzLCB3aGljaCBvZnRlbiBpbmRpY2F0ZXMgdGhleSYjMzk7cmUgcGFydCBvZiBhIGNyaXRpY2FsIHBhdGggb3IgY29tbW9ubHkgdXNlZCBzdWJzeXN0ZW0uIFRoZSBlbnRyeSBwb2ludHMgSSBzZWUgYXJlOiBgZHJtX2dlbV9zaG1lbV9mYXVsdGAsIGB0dG1fYm9fdm1fZmF1bHRgLCBgdm13X2JvX3ZtX21rd3JpdGVgLCBgdm13X2JvX3ZtX2ZhdWx0YCwgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgLCBhbmQgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAuIFdhaXQsIEkgd2FzIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBmYXVsdCBoYW5kbGVycy4KCk9rYXksIGxldCYjMzk7cyBqdXN0IGZvY3VzIG9uIHRoZSBmYXVsdCBoYW5kbGVycy4gSSYjMzk7bSBnb2luZyB0byBzZXQgYXNpZGUgdGhlIG90aGVycyBmb3Igbm93LiBTbyB3ZSYjMzk7cmUgcmVhbGx5IGxvb2tpbmcgYXQ6IGBkcm1fZ2VtX3NobWVtX2ZhdWx0YCwgYHR0bV9ib192bV9mYXVsdGAsIGB2bXdfYm9fdm1fbWt3cml0ZWAsIGB2bXdfYm9fdm1fZmF1bHRgLCBgdm1mX2luc2VydF9wZm5fbWt3cml0ZWAsIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YC4gSSBtaWdodCBjaXJjbGUgYmFjayB0byB0aGF0IGxhc3Qgb25lIGxhdGVyLCBidXQgbGV0JiMzOTtzIGJlZ2luIGJ5IHplcm9pbmcgaW4gb24gYGRybV9nZW1fc2htZW1fZmF1bHRgIGFzIGEgZ29vZCBzeW1ib2wgdG8gc3RhcnQgd2l0aCBhbmQgc2VlIHdoZXJlIHRoYXQgdGFrZXMgbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RybV9nZW1fc2htZW1fZmF1bHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz02Mjk9c3RhdGljIHZtX2ZhdWx0X3QgZHJtX2dlbV9zaG1lbV9hbnlfZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHVuc2lnbmVkIGludCBvcmRlcilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy02NjgtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo2Njk6c3RhdGljIHZtX2ZhdWx0X3QgZHJtX2dlbV9zaG1lbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTY3MC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9NzE0PWNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCBkcm1fZ2VtX3NobWVtX3ZtX29wcyA9IHtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjcxNTpcdC5mYXVsdCA9IGRybV9nZW1fc2htZW1fZmF1bHQsXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03MTYtI2lmZGVmIENPTkZJR19BUkNIX1NVUFBPUlRTX1BNRF9QRk5NQVBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxOTIKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgRmF1bHQgSGFuZGxlcioqCgpBbHJpZ2h0LCB5ZXAsIHRoYXQgY29uZmlybXMgaXQg4oCTIHRoaXMgaXMgYSBmYXVsdCBoYW5kbGVyLiBOb3RoaW5nIHN1cnByaXNpbmcgdGhlcmUsIGJ1dCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIFdhaXQsIGhvbGQgb24gYSBzZWPigKYgSSBzZWUgYGRybV9nZW1fc2htZW1fZmF1bHRgIGlzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBPa2F5LCB0aGF0JiMzOTtzIHNvbWV3aGF0IGludGVyZXN0aW5nLiBUaGF0IG1lYW5zIGl04oCZcyBvbmx5IHZpc2libGUgd2l0aGluIHRoaXMgcGFydGljdWxhciBjb21waWxhdGlvbiB1bml0LCB3aGljaCBtaWdodCBpbmZsdWVuY2UgaG93IHdlIG5lZWQgdG8gYXBwcm9hY2ggdW5kZXJzdGFuZGluZyBpdHMgaW50ZXJhY3Rpb24gd2l0aGluIHRoZSBicm9hZGVyIERSTSBmcmFtZXdvcmsuIEhtbS4uLiBsZXTigJlzIG5vdCBqdW1wIHRvIGFueSBjb25jbHVzaW9ucy4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwIGludG8gdGhhdCBzdGF0aWMgZGVjbGFyYXRpb24sIGl0JiMzOTtzIHdvcnRoIHRha2luZyBhIHF1aWNrIGxvb2sgYXJvdW5kLiBMZXQmIzM5O3MgY2hlY2sgZm9yIGFueSAqb3RoZXIqIGV4cG9ydGVkIGZ1bmN0aW9ucyBpbiB0aGlzIGNvZGUuIEl0JiMzOTtsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgaGFuZGxlciBpcyBtZWFudCB0byBiZSB1c2VkLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgaGFuZGxlciBpcyBleHBvc2VkIHRvLCBvciBhY2Nlc3NlZCBieSwgdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCBtb2R1bGVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgZWxzZSB0aGlzIGZpbGUgb2ZmZXJzLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKmRybV9nZW1fc2htZW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0xMDk9aW50IGRybV9nZW1fc2htZW1faW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBzaXplX3Qgc2l6ZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xMTItfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6MTEzOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1faW5pdCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xMTQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9MTU1PXN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqZHJtX2dlbV9zaG1lbV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc2l6ZV90IHNpemUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMTU4LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjE1OTpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX2NyZWF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xNjAtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9MTc0PXZvaWQgX19kcm1fZ2VtX3NobWVtX2ZyZWVfc2d0X2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTE4Mi19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzoxODM6RVhQT1JUX1NZTUJPTF9HUEwoX19kcm1fZ2VtX3NobWVtX2ZyZWVfc2d0X2xvY2tlZCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xODQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9MTkyPXZvaWQgZHJtX2dlbV9zaG1lbV9yZWxlYXNlKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMjE1LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjIxNjpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX3JlbGVhc2UpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMjE3LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTIyNT12b2lkIGRybV9nZW1fc2htZW1fZnJlZShzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTIyOS19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzoyMzA6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9mcmVlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTIzMS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0yNzI9dm9pZCBkcm1fZ2VtX3NobWVtX3B1dF9wYWdlc19sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0yOTEtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6MjkyOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fcHV0X3BhZ2VzX2xvY2tlZCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0yOTMtXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0yOTQ9aW50IGRybV9nZW1fc2htZW1fcGluX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTMxMC19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzozMTE6RVhQT1JUX1NZTUJPTChkcm1fZ2VtX3NobWVtX3Bpbl9sb2NrZWQpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMzEyLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9MzEzPXZvaWQgZHJtX2dlbV9zaG1lbV91bnBpbl9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0zMTktfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6MzIwOkVYUE9SVF9TWU1CT0woZHJtX2dlbV9zaG1lbV91bnBpbl9sb2NrZWQpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMzIxLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTMzMj1pbnQgZHJtX2dlbV9zaG1lbV9waW4oc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0zNDktfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6MzUwOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fcGluKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTM1MS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0zNTk9dm9pZCBkcm1fZ2VtX3NobWVtX3VucGluKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMzcxLX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjM3MjpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX3VucGluKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTM3My1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0zODk9aW50IGRybV9nZW1fc2htZW1fdm1hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy00MzktfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6NDQwOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fdm1hcF9sb2NrZWQpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNDQxLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTQ1ND12b2lkIGRybV9nZW1fc2htZW1fdnVubWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTQ3My19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo0NzQ6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV92dW5tYXBfbG9ja2VkKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTQ3NS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz01MDI9aW50IGRybV9nZW1fc2htZW1fbWFkdmlzZV9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSwgaW50IG1hZHYpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNTEyLX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjUxMzpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX21hZHZpc2VfbG9ja2VkKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTUxNC1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTUxNT12b2lkIGRybV9nZW1fc2htZW1fcHVyZ2VfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNTQ0LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjU0NTpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX3B1cmdlX2xvY2tlZCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy01NDYtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9NTY0PWludCBkcm1fZ2VtX3NobWVtX2R1bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwgc3RydWN0IGRybV9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy01NzQtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6NTc1OkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fZHVtYl9jcmVhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNTc2LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTcxND1jb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgZHJtX2dlbV9zaG1lbV92bV9vcHMgPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNzIyLX07XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo3MjM6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV92bV9vcHMpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNzI0LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTczNj1pbnQgZHJtX2dlbV9zaG1lbV9tbWFwKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0sIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTc3NC19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo3NzU6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9tbWFwKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTc3Ni1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz03ODM9dm9pZCBkcm1fZ2VtX3NobWVtX3ByaW50X2luZm8oY29uc3Qgc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03OTMtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6Nzk0OkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fcHJpbnRfaW5mbyk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03OTUtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9ODEwPXN0cnVjdCBzZ190YWJsZSAqZHJtX2dlbV9zaG1lbV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy04MTctfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6ODE4OkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fZ2V0X3NnX3RhYmxlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTgxOS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz04NzM9c3RydWN0IHNnX3RhYmxlICpkcm1fZ2VtX3NobWVtX2dldF9wYWdlc19zZ3Qoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy04ODUtfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6ODg2OkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fZ2V0X3BhZ2VzX3NndCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy04ODctXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9OTA0PWRybV9nZW1fc2htZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtOTIwLX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjkyMTpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX3ByaW1lX2ltcG9ydF9zZ190YWJsZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy05MjItXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9OTMyPXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZHJtX2dlbV9zaG1lbV9wcmltZV9pbXBvcnRfbm9fbWFwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtOTc3LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjk3ODpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX3ByaW1lX2ltcG9ydF9ub19tYXApO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtOTc5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTk4NT1pbnQgZHJtX2dlbV9zaG1lbV92bWFwKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0sIHN0cnVjdCBpb3N5c19tYXAgKm1hcClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy05OTctfVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6OTk4OkVYUE9SVF9TWU1CT0xfSUZfS1VOSVQoZHJtX2dlbV9zaG1lbV92bWFwKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTk5OS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTEwMDA9dm9pZCBkcm1fZ2VtX3NobWVtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBzdHJ1Y3QgaW9zeXNfbWFwICptYXApXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMTAwNy19XG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzoxMDA4OkVYUE9SVF9TWU1CT0xfSUZfS1VOSVQoZHJtX2dlbV9zaG1lbV92dW5tYXApO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMTAwOS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTEwMTA9aW50IGRybV9nZW1fc2htZW1fbWFkdmlzZShzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBpbnQgbWFkdilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xMDIyLX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjEwMjM6RVhQT1JUX1NZTUJPTF9JRl9LVU5JVChkcm1fZ2VtX3NobWVtX21hZHZpc2UpO1xuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMTAyNC1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTEwMjU9aW50IGRybV9nZW1fc2htZW1fcHVyZ2Uoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xMDM3LX1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjEwMzg6RVhQT1JUX1NZTUJPTF9JRl9LVU5JVChkcm1fZ2VtX3NobWVtX3B1cmdlKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTEwMzktI2VuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDgzCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCB3YXMsICYjMzQ7V2hlcmUgYXJlIHRoZSBwcmltZSB0YXJnZXRzIGZvciBmdXp6aW5nIGluIHRoaXMgbWVtb3J5IG1hbmFnZW1lbnQgY29udGV4dD8mIzM0OyBJIHNlZSB0aGF0IGBkcm1fZ2VtX3NobWVtX21tYXBgIGlzIGV4cG9ydGVkLCBhbmQgY3JpdGljYWxseSwgaXQgc2V0cyB1cCBgdm1hLSZndDt2bV9vcHNgIHRvIGAmYW1wO2RybV9nZW1fc2htZW1fdm1fb3BzYC4gQmluZ28sIGBkcm1fZ2VtX3NobWVtX21tYXBgIGxvb2tzIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gVGhlbiwgSSBub3RpY2VkIGB0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWRgIGlzIGV4cG9ydGVkLCB0aGF0IGdvZXMgb24gdGhlIGxpc3QuCgpOZXh0LCBJIG5vdGVkIHRoYXQgYHZtd19ib192bV9ta3dyaXRlYCBhbmQgYHZtd19ib192bV9mYXVsdGAgYXJlbiYjMzk7dCAqZGlyZWN0bHkqIGV4cG9ydGVkLCBidXQgdGhleSYjMzk7cmUgcGFydCBvZiBgdm13X2JvX3ZtX29wc2AsIHdoaWNoIGlzIHVzZWQgaW4gYHZtd19tbWFwYC4gVGhhdCBzdWdnZXN0cyB0aG9zZSBjb3VsZCBiZSBpbnRlcmVzdGluZywgZXZlbiBpZiBpbmRpcmVjdGx5IHJlYWNoYWJsZS4gQWxzbywgSSBzZWUgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCBhcmUgZXhwb3J0ZWQsIHdoaWNoIGFyZSBwcm9iYWJseSBwcmV0dHkgY29yZSwgYW5kIEkgc2hvdWxkIHNlZSBpZiB0aGV5IGFyZSBpbiBgbW0vbWVtb3J5LmNgLiBZZXAsIHRoZXkgYXJlLiBUaGF0JiMzOTtzIGdvb2QuCgpTbywgc3VtbWluZyB0aGlzIHVwLCB0aGUgZnVuY3Rpb25zIHRoYXQgSSB3YW50IHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nIGFyZToKKiAgIGB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlYAoqICAgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAKKiAgIGB0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWRgCiogICBgdm13X2JvX3ZtX21rd3JpdGVgCiogICBgdm13X2JvX3ZtX2ZhdWx0YAoKV2FpdCwgaGFuZyBvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIGNvcnJlY3QsIGl0IGxvb2tzIGxpa2UgYHZtd19ib192bV9ta3dyaXRlYCBhbmQgYHZtd19ib192bV9mYXVsdGAgYXJlbiYjMzk7dCBzdGF0aWMgZnVuY3Rpb25zLCB0aGV5JiMzOTtyZSBpbiBgdm13Z2Z4X3BhZ2VfZGlydHkuY2AuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhleSYjMzk7cmUgYWN0dWFsbHkgZXhwb3J0ZWQuIExldCYjMzk7cyBsb29rIGludG8gdGhhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLip2bXdfYm9fdm0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwODk3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIFNjb3BlIG9mIFRoZXNlIEZ1bmN0aW9ucyoqCgpBbHJpZ2h0LCBzbyB0aGVzZSBmdW5jdGlvbnMgYXJlbiYjMzk7dCBleHBsaWNpdGx5IGV4cG9ydGVkLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGhleSYjMzk7cmUgaGFuZ2luZyBvdXQgdGhlcmUgYXMgZ2xvYmFsIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIG1vZHVsZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O09rYXksIGxldCYjMzk7cyBmaWd1cmUgb3V0IGhvdyBicm9hZGx5IHRoZXNlIGFyZSBiZWluZyB1dGlsaXplZC4mIzM0OyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBpbXBhY3QgYW5kIGlmIHJlbW92aW5nIG9yIG1vZGlmeWluZyB0aGVtIHdvdWxkIGJlIGEgYmlnIGRlYWwuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkbyBhIHRob3JvdWdoIGNvZGUgc2VhcmNoIGFuZCBwaW5wb2ludCBhbGwgdGhlIGNhbGwgc2l0ZXMuIElkZW50aWZ5aW5nIGV2ZXJ5IGluc3RhbmNlIHdoZXJlIHRoZXkmIzM5O3JlIGludm9rZWQgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aWdodGx5IGNvdXBsZWQgdGhleSBhcmUgdG8gb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gSSBoYXZlIHRvIGFzc2VzcyB0aGVpciBpbXBhY3QgYmVmb3JlIEkgdG91Y2ggdGhlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm13X2JvX3ZtX2ZhdWx0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2Lmg9MTM5Mj12b2lkIHZtd19ib19kaXJ0eV91bm1hcChzdHJ1Y3Qgdm13X2JvICp2Ym8sXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaC0xMzkzLVx0XHRcdHBnb2ZmX3Qgc3RhcnQsIHBnb2ZmX3QgZW5kKTtcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5oOjEzOTQ6dm1fZmF1bHRfdCB2bXdfYm9fdm1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpO1xuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgtMTM5NS12bV9mYXVsdF90IHZtd19ib192bV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9nZW0uYz0xMzU9c3RhdGljIGNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCB2bXdfdm1fb3BzID0ge1xuLS1cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2dlbS5jLTEzNy1cdC5wYWdlX21rd3JpdGUgPSB2bXdfYm9fdm1fbWt3cml0ZSxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2dlbS5jOjEzODpcdC5mYXVsdCA9IHZtd19ib192bV9mYXVsdCxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2dlbS5jLTEzOS1cdC5vcGVuID0gdHRtX2JvX3ZtX29wZW4sXG4tLVxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jPTQyMT12bV9mYXVsdF90IHZtd19ib192bV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYy00NDQtXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmM6NDQ1OnZtX2ZhdWx0X3Qgdm13X2JvX3ZtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jLTQ0Ni17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjA4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNjEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFJlbGV2YW50IFZpcnR1YWwgTWVtb3J5IEZ1bmN0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGVzZSB2aXJ0dWFsIG1lbW9yeSBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgdGhvc2UgdXNlZCB3aXRoaW4gYHZtd192bV9vcHNgLiBMZXQmIzM5O3MgbmFycm93IGRvd24gdGhlIGZvY3VzLiBJIG5lZWQgdG8gbGlzdCB0aGUga2V5IGZ1bmN0aW9ucyBJIHNob3VsZCBiZSBsb29raW5nIGF0LiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHdpdGg6CgoqICAgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgCiogICBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YAoqICAgYHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZGAKKiAgIGB2bXdfYm9fdm1fbWt3cml0ZWAKKiAgIGB2bXdfYm9fdm1fZmF1bHRgCgpOb3csIHdhaXQgYSBtaW51dGUuLi4gYGRybV9nZW1fc2htZW1fZmF1bHRgIGlzIHN0YXRpYywgYnV0IGBkcm1fZ2VtX3NobWVtX21tYXBgIGlzIGV4cG9ydGVkIGFuZCBzZXRzIHVwIHRoZSBgdm1fb3BzYC4gU2luY2UgdGhlIHByb21wdCBzcGVjaWZpZXMgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljIGVudHJ5cG9pbnRzLCBgZHJtX2dlbV9zaG1lbV9tbWFwYCBpcyBwb3RlbnRpYWxseSB1c2VmdWwsIG9yIGlmIHJlYWNoYWJsZSB0aHJvdWdoIHN5c2NhbGxzIGV2ZW4gYGRybV9nZW1fc2htZW1fZmF1bHRgLiBBY3R1YWxseSwgdGhlIHJlYWwgbG9naWMgY2hhbmdlIGlzIGluIGB0cnlfaW5zZXJ0X3BmbmAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBkcm1fZ2VtX3NobWVtX2FueV9mYXVsdGAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBkcm1fZ2VtX3NobWVtX2ZhdWx0YC4gVGhpcyBzdGF0aWMgZnVuY3Rpb24gY2FuIGJlIGZ1enphYmxlIHZpYSBzeXNjYWxscywgc28gdGhpcyBtYXkgd29yayBmaW5lLiBVbHRpbWF0ZWx5LCBJIHNob3VsZCBmb2N1cyBvbiB0aGUgY29yZSBNTSBmdW5jdGlvbnM6IGB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlYCBhbmQgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAuIFRoZXkgYXJlIGNyaXRpY2FsIGZvciBpbnNlcnRpbmcgYW5kIG1hbmFnaW5nIHBhZ2UgZnJhbWUgbnVtYmVycyAoUEZOcykuCgpJJiMzOTtsbCBjaGVjayB0byBzZWUgaWYgdGhvc2UgZnVuY3Rpb25zIGFyZSBleHBvcnRlZC4gR29vZCwgYm90aCBgdm1mX2luc2VydF9wZm5fbWt3cml0ZWAgYW5kIGBfX3ZtZl9pbnNlcnRfcGZuX3Byb3RgIGFyZS4KCkFzIGZvciB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucyB0byBlbmFibGUsIGhlcmUmIzM5O3Mgd2hhdCBJJiMzOTt2ZSBpZGVudGlmaWVkOgoKKiAgIGBEUk1fVkdFTWAKKiAgIGBEUk1fVktNU2AKKiAgIGBEUk1fVk1XR0ZYYAoqICAgYERSTV9RWExgCiogICBgRFJNX1ZCT1hWSURFT2AKKiAgIGBEUk1fVFRNYAoqICAgYERSTV9HRU1fU0hNRU1fSEVMUEVSYAoKSSByZWFsaXplIHRoYXQgYERSTV9WR0VNYCBhbmQgYERSTV9WS01TYCBzZWxlY3QgYERSTV9HRU1fU0hNRU1fSEVMUEVSYCwgYW5kIGBEUk1fVk1XR0ZYYCwgYERSTV9RWExgLCBhbmQgYERSTV9WQk9YVklERU9gIHNlbGVjdCBgRFJNX1RUTWAuIFNvLCBlbmFibGluZyBgRFJNX1ZHRU1gLCBgRFJNX1ZLTVNgLCBgRFJNX1ZNV0dGWGAsIGBEUk1fUVhMYCwgYW5kIGBEUk1fVkJPWFZJREVPYCBzaG91bGQgYmUgc3VmZmljaWVudC4gSSYjMzk7bGwgZG91YmxlLWNoZWNrIGBEUk1fVk1XR0ZYYCBmb3IgYW55IGhpZGRlbiBkZXBlbmRlbmNpZXMganVzdCB0byBiZSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRFJNX1ZNV0dGWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWc6Mjpjb25maWcgRFJNX1ZNV0dGWFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtEUk0gZHJpdmVyIGZvciBWTXdhcmUgVmlydHVhbCBHUFVcJiMzNDtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctMTktXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWc6MjA6Y29uZmlnIERSTV9WTVdHRlhfTUtTU1RBVFNcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7RW5hYmxlIG1rc0d1ZXN0U3RhdHMgaW5zdHJ1bWVudGF0aW9uIG9mIHZtd2dmeCBieSBkZWZhdWx0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDQyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIERlcGVuZGVuY2llcyoqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBCZWZvcmUgSSBwcm9jZWVkLCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZS4gVGhlIGZvY3VzIGlzIG9uIGBEUk1fVk1XR0ZYYCwgYW5kIEkgbmVlZCB0byBpbW1lZGlhdGVseSB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIEkgY2FuJiMzOTt0IG1vdmUgZm9yd2FyZCB3aXRob3V0IGtub3dpbmcgd2hhdCBvdGhlciBtb2R1bGVzIG9yIGNvbXBvbmVudHMgaXQgcmVsaWVzIG9uLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgYGRlcGVuZHMgb25gIGluZm9ybWF0aW9uIGZvciB0aGF0IHBhcnRpY3VsYXIgbW9kdWxlLiBVbmRlcnN0YW5kaW5nIGl0cyBkZXBlbmRlbmNpZXMgaXMgdGhlIGZvdW5kYXRpb24gZm9yIGVmZmVjdGl2ZSB0cm91Ymxlc2hvb3RpbmcsIG1vZGlmaWNhdGlvbiwgb3IgZXZlbiBqdXN0IGEgZ2VuZXJhbCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGdyYXBoaWNzIGRyaXZlciBmaXRzIGludG8gdGhlIGJyb2FkZXIgc3lzdGVtIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWc9Mj1jb25maWcgRFJNX1ZNV0dGWFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtEUk0gZHJpdmVyIGZvciBWTXdhcmUgVmlydHVhbCBHUFVcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBEUk0gXHUwMDI2XHUwMDI2IFBDSVxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnOjU6XHRkZXBlbmRzIG9uIChYODYgXHUwMDI2XHUwMDI2IEhZUEVSVklTT1JfR1VFU1QpIHx8IEFSTTY0XG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctNi1cdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxuLS1cbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZz0yMD1jb25maWcgRFJNX1ZNV0dGWF9NS1NTVEFUU1xuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWtzR3Vlc3RTdGF0cyBpbnN0cnVtZW50YXRpb24gb2Ygdm13Z2Z4IGJ5IGRlZmF1bHRcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzoyMjpcdGRlcGVuZHMgb24gRFJNX1ZNV0dGWFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnOjIzOlx0ZGVwZW5kcyBvbiBYODZcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZy0yNC1cdGRlZmF1bHQgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzQ5NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jeSBDaGVjayoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2Uga2VybmVsIG1vZHVsZSBkZXBlbmRlbmNpZXMuIExldCYjMzk7cyBzdGFydCB3aXRoIGBEUk1fVk1XR0ZYYC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGl0IHJlbGllcyBvbiBib3RoIGBEUk1gIGFuZCBgUENJYC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJIGFsc28gc2VlIHRoYXQgaXQgcmVxdWlyZXMgZWl0aGVyIGFuIGBYODZgIGFyY2hpdGVjdHVyZSAqYW5kKiBhIGBIWVBFUlZJU09SX0dVRVNUYCBzZXR0aW5nLCBvciBhbHRlcm5hdGl2ZWx5LCBgQVJNNjRgLiBZZXAsIHRoYXQgYWxsIGNoZWNrcyBvdXQgYW5kIHNlZW1zIGxvZ2ljYWxseSBzb3VuZC4gTm8gaW1tZWRpYXRlIHJlZCBmbGFncyB0aGVyZS4gTm93LCBsZXQmIzM5O3MgbW92ZSBvbiB0byBgRFJNX1FYTGAgYW5kIHNlZSB3aGF0IHRoYXQgbW9kdWxlIGJyaW5ncyB0byB0aGUgdGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vcXhsL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3F4bC9LY29uZmlnPTI9Y29uZmlnIERSTV9RWExcbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UVhMIHZpcnR1YWwgR1BVXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vcXhsL0tjb25maWc6NDpcdGRlcGVuZHMgb24gRFJNIFx1MDAyNlx1MDAyNiBQQ0kgXHUwMDI2XHUwMDI2IEhBU19JT1BPUlRcbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZy01LVx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzODMwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgdGhlIGBEUk1fVkJPWFZJREVPYCBNb2R1bGUqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gaXQuIExldCYjMzk7cyBkaWcgaW4gYW5kIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgc3F1YXJlZCBhd2F5IG9uIGBEUk1fVkJPWFZJREVPYC4gSSBuZWVkIHRvIGFzc2VzcyBpdHMgY3VycmVudCBzdGF0dXMgYW5kIGlmIHRoZXJlIGFyZSBhbnkgaXNzdWVzIHdpdGggaXQuIFRoZXJlIGNvdWxkIGJlIGRlcGVuZGVuY2llcywgY29uZmxpY3RzLCBvciBqdXN0IHBsYWluIG9sZCBidWdzIHRoYXQgbmVlZCB0byBiZSBhZGRyZXNzZWQuIFBlcmhhcHMgdGhlcmUgaXMgc29tZSByZWNlbnQgd29yayBpbiB0aGlzIGFyZWEgSSBuZWVkIHRvIGFzc2VzcyBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vS2NvbmZpZz0yPWNvbmZpZyBEUk1fVkJPWFZJREVPXG5kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgQm94IEdyYXBoaWNzIENhcmRcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBEUk0gXHUwMDI2XHUwMDI2IFg4NiBcdTAwMjZcdTAwMjYgUENJXG5kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL0tjb25maWctNS1cdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDEwMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBgRFJNX1ZHRU1gKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgbWluZCBpbW1lZGlhdGVseSBnb2VzIHRvIGBEUk1fVkdFTWAuIEdvdHRhIGNoZWNrIGl0LCBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcgdGhlcmUuIFByb2JhYmx5IHRoZSBzdGFydGluZyBwb2ludCBmb3Igd2hhdGV2ZXIgd2UmIzM5O3JlIGRlYnVnZ2luZy4gSXQmIzM5O3MgdGhlIHVzdWFsIHN1c3BlY3RzLCByaWdodD8gS2VybmVsIGRyaXZlciwgZ3JhcGhpY3MsIERSTSAtIHRoZSB3aG9sZSBraXQgYW5kIGNhYm9vZGxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGdvaW5nIG9uIHdpdGhpbiB0aGF0IHBhcnRpY3VsYXIgY29udGV4dC4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgYm90dGxlbmVja3Mgb3IgZ2xpdGNoZXMgdGhhdCBzdGFuZCBvdXQgaW1tZWRpYXRlbHkuIERpZ2dpbmcgaW4uLi4gdGhlIGluaXRpYWwgc3RlcCBvZiB0aGUgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3ZnZW0vS2NvbmZpZz0yPWNvbmZpZyBEUk1fVkdFTVxuZHJpdmVycy9ncHUvZHJtL3ZnZW0vS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBHRU0gcHJvdmlkZXJcJiMzNDtcbmRyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWc6NDpcdGRlcGVuZHMgb24gRFJNIFx1MDAyNlx1MDAyNiBNTVVcbmRyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWctNS1cdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDM5NAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipDaGVja2luZyBgRFJNX1ZLTVNgKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBUaGUgaW5pdGlhbCBkaXJlY3Rpb24gaXMgdG8gY2hlY2sgYERSTV9WS01TYC4gVGhhdCYjMzk7cyBhIGNsZWFyIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIHJlbGV2YW50IGFib3V0IHRoZSBjdXJyZW50IGNvbnRleHQsIGFuZCB0aGlzIGxvb2tzIGxpa2UgdGhlIGNydWNpYWwgZWxlbWVudCBmb3IgaW52ZXN0aWdhdGlvbi4gR290dGEgYXNzZXNzIGl0cyBzdGF0ZSwgaXRzIGNvbmZpZ3VyYXRpb24sIGFuZCwgb2YgY291cnNlLCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBicm9hZGVyIHN5c3RlbS4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGUgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMgb2YgdGhpcyBtb2R1bGUgd2l0aGluIHRoZSB3aWRlciBlY29zeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDAyOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc9Mz1jb25maWcgRFJNX1ZLTVNcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgS01TIChFWFBFUklNRU5UQUwpXCYjMzQ7XG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnOjU6XHRkZXBlbmRzIG9uIERSTSBcdTAwMjZcdTAwMjYgTU1VXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTYtXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cbi0tXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnPTE5PWNvbmZpZyBEUk1fVktNU19LVU5JVF9URVNUXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIFZLTVNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZzoyMTpcdGRlcGVuZHMgb24gRFJNX1ZLTVMgXHUwMDI2XHUwMDI2IEtVTklUXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTIyLVx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDI6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ3NzUKCQkJCQkJCW91dHB1dDogMjc4CgkJCQkJCQl0aG91Z2h0czogNjkzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBEUk0gTU0gYW5kIFZpcnR1YWwgR1BVIERyaXZlciBDaGFuZ2VzIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGlua2luZyBhYm91dCBob3cgdG8gYmVzdCBmdXp6IGl0LiBUaGUgbWFpbiBmb2N1cyBoZXJlIGlzIG9uIG5ldyBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkmIzM5O3JlIHVzZWQgYnkgc2V2ZXJhbCB2aXJ0dWFsIEdQVSBkcml2ZXJzLiBTcGVjaWZpY2FsbHksIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCB0byBoYW5kbGUgd3JpdGFibGUgUFRFcyBkdXJpbmcgcGFnZSBmYXVsdHMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uIGlzIGtleS4gVGhpcyBpcyBhIGZpeCBmb3IgYGZpeHVwX3VzZXJfZmF1bHRgIGFuZCBhZmZlY3RzIGhvdyBtZW1vcnkgaXMgaGFuZGxlZCBpbiB0aGVzZSBjcml0aWNhbCBhcmVhcywgd2hpY2ggbWFrZXMgaXQgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEl0IGltcGFjdHMgYERSTSBHRU0gc2htZW0gaGVscGVyYCwgYFRUTSBCTyBWTWAsIGFuZCBgVk1XZ2Z4YCBwYWdlIGZhdWx0IGhhbmRsZXJzLiBUaGVzZSBhcmUgYWxsIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHRocm91Z2ggYG1tYXBgIGFuZCBwYWdlIGZhdWx0cyDigJMgY2xhc3NpYyBmdXp6aW5nIGVudHJ5IHBvaW50cy4KCkdpdmVuIHRoYXQsIEkgbmVlZCB0byBlbnN1cmUgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb25zIGFyZSBlbmFibGVkIHRvIGV4cG9zZSB0aGlzIGNvZGUuIEkgaW5pdGlhbGx5IHRob3VnaHQgb2YgZW5hYmxpbmcgYERSTV9WR0VNYCwgYERSTV9WS01TYCwgYERSTV9WTVdHRlhgLCBhbmQgYERSTV9RWExgLCBhbmQgYERSTV9WQk9YVklERU9gLCBidXQgSSByZWFsaXplZCBgRFJNX1ZNV0dGWGAgZGVwZW5kcyBvbiBgSFlQRVJWSVNPUl9HVUVTVGAsIHdoaWNoIGlzIHVzdWFsbHkgZW5hYmxlZCBpbiBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4gVG8gYmUgb24gdGhlIHNhZmUgc2lkZSwgYW5kIGFmdGVyIGRvdWJsZSBjaGVja2luZyBpZiB0aGVzZSBzeW1ib2xzIGFyZSB0cmlzdGF0ZSwgSSYjMzk7bSBnb2luZyB0byBleHBsaWNpdGx5IGVuYWJsZSBgRFJNX1RUTWAgYW5kIGBEUk1fR0VNX1NITUVNX0hFTFBFUmAsIGp1c3QgaW4gY2FzZS4KCkxldCYjMzk7cyBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIHRoZSBuZXcgZnVuY3Rpb25zIGFyZSBleHBvcnRlZC4gR29vZCwgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCBhcmUgYm90aCBleHBvcnRlZCwgbWVhbmluZyB3ZSBjYW4gcmVhY2ggdGhlbSBmcm9tIHVzZXJzcGFjZS4gQWxzbywgYHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZGAgaXMgZXhwb3J0ZWQuIEFkZGl0aW9uYWxseSwgYHZtd19ib192bV9ta3dyaXRlYCBhbmQgYHZtd19ib192bV9mYXVsdGAgYXJlIGdsb2JhbCBmdW5jdGlvbnMgaW4gYHZtd2dmeF9wYWdlX2RpcnR5LmNgLgoKSSBhbHNvIG5vdGljZWQgYGRybV9nZW1fc2htZW1fZmF1bHRgIGlzIHN0YXRpYywgd2hpY2ggaXMgYSBiaXQgb2YgYSBwcm9ibGVtLiBCdXQsIEkgc2VlIHRoYXQgYGRybV9nZW1fc2htZW1fbW1hcGAgKmlzKiBleHBvcnRlZCBhbmQgc2V0cyB1cCB0aGUgYHZtX29wc2AsIHNvIHRoYXQmIzM5O3MgYW5vdGhlciBpbXBvcnRhbnQgZnVuY3Rpb24gdGhhdCBuZWVkcyB0byBiZSBhZGRlZCB0byB0aGUgbGlzdCBvZiB0aGluZ3MgdG8gdHJ5IHRvIGZ1enouCgpBbHJpZ2h0LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRob3NlIGNvbmZpZ3VyYXRpb25zIGFnYWluOgoKKiAgIGBEUk1fVkdFTWAKKiAgIGBEUk1fVktNU2AKKiAgIGBEUk1fVk1XR0ZYYAoqICAgYERSTV9UVE1gCiogICBgRFJNX0dFTV9TSE1FTV9IRUxQRVJgCgpUaGF0IGNvdmVycyBldmVyeXRoaW5nLCBJIHRoaW5rLiBUaGlzIHNlZW1zIGxpa2UgYSBwcmV0dHkgc29saWQgc2V0IG9mIHRhcmdldHMgZm9yIHNvbWUgZm9jdXNlZCBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwMjoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFJNX1ZHRU0mIzM0OywKICAgICYjMzQ7RFJNX1ZLTVMmIzM0OywKICAgICYjMzQ7RFJNX1ZNV0dGWCYjMzQ7LAogICAgJiMzNDtEUk1fVFRNJiMzNDssCiAgICAmIzM0O0RSTV9HRU1fU0hNRU1fSEVMUEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dm1mX2luc2VydF9wZm5fbWt3cml0ZSYjMzQ7LAogICAgJiMzNDtfX3ZtZl9pbnNlcnRfcGZuX3Byb3QmIzM0OywKICAgICYjMzQ7dHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkJiMzNDssCiAgICAmIzM0O3Ztd19ib192bV9ta3dyaXRlJiMzNDssCiAgICAmIzM0O3Ztd19ib192bV9mYXVsdCYjMzQ7LAogICAgJiMzNDtkcm1fZ2VtX3NobWVtX21tYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgY29yZSBNTSBmdW5jdGlvbnMgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCB0byBhbGxvdyBpbnNlcnRpbmcgYSB3cml0YWJsZSBQVEUgZHVyaW5nIGEgcGFnZSBmYXVsdCBldmVuIHdoZW4gdGhlIFZNQSBpcyB1bmRlciB3cml0ZSBub3RpZmljYXRpb24uIFRoaXMgZml4ZXMgYW4gaXNzdWUgd2l0aCBgZml4dXBfdXNlcl9mYXVsdGAgY2FsbGVycy4gSXQgbW9kaWZpZXMgdGhlIHBhZ2UgZmF1bHQgaGFuZGxlcnMgaW4gRFJNIEdFTSBzaG1lbSBoZWxwZXIsIFRUTSBCTyBWTSwgYW5kIFZNV2dmeCB0byB1c2UgdGhlc2UgbmV3IGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB2aXJ0dWFsIEdQVSBkcml2ZXJzIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbW1hcCBhbmQgcGFnZSBmYXVsdHMsIG1ha2luZyB0aGVtIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFJNX1ZHRU0mIzM0OywKICAgICYjMzQ7RFJNX1ZLTVMmIzM0OywKICAgICYjMzQ7RFJNX1ZNV0dGWCYjMzQ7LAogICAgJiMzNDtEUk1fVFRNJiMzNDssCiAgICAmIzM0O0RSTV9HRU1fU0hNRU1fSEVMUEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dm1mX2luc2VydF9wZm5fbWt3cml0ZSYjMzQ7LAogICAgJiMzNDtfX3ZtZl9pbnNlcnRfcGZuX3Byb3QmIzM0OywKICAgICYjMzQ7dHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkJiMzNDssCiAgICAmIzM0O3Ztd19ib192bV9ta3dyaXRlJiMzNDssCiAgICAmIzM0O3Ztd19ib192bV9mYXVsdCYjMzQ7LAogICAgJiMzNDtkcm1fZ2VtX3NobWVtX21tYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgY29yZSBNTSBmdW5jdGlvbnMgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCB0byBhbGxvdyBpbnNlcnRpbmcgYSB3cml0YWJsZSBQVEUgZHVyaW5nIGEgcGFnZSBmYXVsdCBldmVuIHdoZW4gdGhlIFZNQSBpcyB1bmRlciB3cml0ZSBub3RpZmljYXRpb24uIFRoaXMgZml4ZXMgYW4gaXNzdWUgd2l0aCBgZml4dXBfdXNlcl9mYXVsdGAgY2FsbGVycy4gSXQgbW9kaWZpZXMgdGhlIHBhZ2UgZmF1bHQgaGFuZGxlcnMgaW4gRFJNIEdFTSBzaG1lbSBoZWxwZXIsIFRUTSBCTyBWTSwgYW5kIFZNV2dmeCB0byB1c2UgdGhlc2UgbmV3IGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB2aXJ0dWFsIEdQVSBkcml2ZXJzIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbW1hcCBhbmQgcGFnZSBmYXVsdHMsIG1ha2luZyB0aGVtIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEyOjIwLjM0NjU4NDM3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzMDU0OTYyMzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTV9WR0VNXCIsXG4gICAgXCJEUk1fVktNU1wiLFxuICAgIFwiRFJNX1ZNV0dGWFwiLFxuICAgIFwiRFJNX1RUTVwiLFxuICAgIFwiRFJNX0dFTV9TSE1FTV9IRUxQRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlXCIsXG4gICAgXCJfX3ZtZl9pbnNlcnRfcGZuX3Byb3RcIixcbiAgICBcInR0bV9ib192bV9mYXVsdF9yZXNlcnZlZFwiLFxuICAgIFwidm13X2JvX3ZtX21rd3JpdGVcIixcbiAgICBcInZtd19ib192bV9mYXVsdFwiLFxuICAgIFwiZHJtX2dlbV9zaG1lbV9tbWFwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgY29yZSBNTSBmdW5jdGlvbnMgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCB0byBhbGxvdyBpbnNlcnRpbmcgYSB3cml0YWJsZSBQVEUgZHVyaW5nIGEgcGFnZSBmYXVsdCBldmVuIHdoZW4gdGhlIFZNQSBpcyB1bmRlciB3cml0ZSBub3RpZmljYXRpb24uIFRoaXMgZml4ZXMgYW4gaXNzdWUgd2l0aCBgZml4dXBfdXNlcl9mYXVsdGAgY2FsbGVycy4gSXQgbW9kaWZpZXMgdGhlIHBhZ2UgZmF1bHQgaGFuZGxlcnMgaW4gRFJNIEdFTSBzaG1lbSBoZWxwZXIsIFRUTSBCTyBWTSwgYW5kIFZNV2dmeCB0byB1c2UgdGhlc2UgbmV3IGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB2aXJ0dWFsIEdQVSBkcml2ZXJzIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbW1hcCBhbmQgcGFnZSBmYXVsdHMsIG1ha2luZyB0aGVtIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6MjAuMzQ2NTkwMjQyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDg1Mjc1OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkZjI1NTFkODU2M2ViNGIyMjg2OTZkMmVlZDk0MDFiOTA4ZTE3YzRkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMDI6MTI6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuY1xcbmluZGV4IGM5ODk0NTllYjIxNTkuLmM4MWJlM2U5NzMxNzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmNcXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuY1xcbkBAIC01ODksMTEgKzU4OSwyNSBAQCBzdGF0aWMgdm9pZCBkcm1fZ2VtX3NobWVtX3JlY29yZF9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbiBcXHRmb2xpb19tYXJrX2RpcnR5KHBhZ2VfZm9saW8oc2htZW0tXFx1MDAzZXBhZ2VzW3BhZ2Vfb2Zmc2V0XSkpO1xcbiB9XFxuIFxcbisvKlxcbisgKiBCZWNhdXNlIHRoZSB2bV9vcHMgaGF2ZSBhIC5wZm5fbWt3cml0ZSgpIGNhbGxiYWNrLCB2bWFfc2V0X3BhZ2VfcHJvdCgpXFxuKyAqIGhhcyBjbGVhcmVkIHRoZSB3cml0ZSBiaXQgZnJvbSB2bWEtXFx1MDAzZXZtX3BhZ2VfcHJvdC4gIHZtZl9pbnNlcnRfcGZuKClcXG4rICogd291bGQgaW5zdGFsbCBhIHJlYWQtb25seSBlbnRyeSBldmVuIGZvciBhIHdyaXRlIGZhdWx0LCByZWx5aW5nIG9uIGFcXG4rICogc2Vjb25kIGZhdWx0IHRvIHJlYWNoIC5wZm5fbWt3cml0ZSgpIGFuZCB1cGdyYWRlIGl0LCBidXQgdGhhdCBzZWNvbmRcXG4rICogZmF1bHQgbmV2ZXIgaGFwcGVucyBmb3IgZml4dXBfdXNlcl9mYXVsdCgpIGNhbGxlcnMgdGhhdCBkaXJlY3RseVxcbisgKiB3YWxrIHRoZSBwYWdlIHRhYmxlcyB3aXRoIGZvbGxvd19wZm5tYXBfc3RhcnQoKS4gIFRvIGVuc3VyZSB0aGF0XFxuKyAqIHRoZXkgZG9uJ3Qgc2VlIHRoZSByZWFkLW9ubHkgZW50cnksIHBhc3MgRkFVTFRfRkxBR19XUklURSBpbmZvIGRvd25cXG4rICogdG8gaW5zdGFsbCBhIHdyaXRhYmxlIGVudHJ5IHJpZ2h0IGF3YXkuICBCZWNhdXNlIC5wZm5fbWt3cml0ZSgpIGlzXFxuKyAqIG5vdCBpbnZva2VkLCByZWNvcmQgdGhlIHdyaXRlIGFmdGVyd2FyZHMuXFxuKyAqL1xcbiBzdGF0aWMgdm1fZmF1bHRfdCB0cnlfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgdW5zaWduZWQgaW50IG9yZGVyLFxcbiBcXHRcXHRcXHRcXHQgdW5zaWduZWQgbG9uZyBwZm4pXFxuIHtcXG4rXFx0Ym9vbCB3cml0ZSA9IHZtZi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBGQVVMVF9GTEFHX1dSSVRFO1xcbitcXHR2bV9mYXVsdF90IHJldCA9IFZNX0ZBVUxUX0ZBTExCQUNLO1xcbitcXG4gXFx0aWYgKCFvcmRlcikge1xcbi1cXHRcXHRyZXR1cm4gdm1mX2luc2VydF9wZm4odm1mLVxcdTAwM2V2bWEsIHZtZi1cXHUwMDNlYWRkcmVzcywgcGZuKTtcXG4rXFx0XFx0cmV0ID0gdm1mX2luc2VydF9wZm5fbWt3cml0ZSh2bWYtXFx1MDAzZXZtYSwgdm1mLVxcdTAwM2VhZGRyZXNzLCBwZm4sIHdyaXRlKTtcXG4gI2lmZGVmIENPTkZJR19BUkNIX1NVUFBPUlRTX1BNRF9QRk5NQVBcXG4gXFx0fSBlbHNlIGlmIChvcmRlciA9PSBQTURfT1JERVIpIHtcXG4gXFx0XFx0dW5zaWduZWQgbG9uZyBwYWRkciA9IHBmbiBcXHUwMDNjXFx1MDAzYyBQQUdFX1NISUZUO1xcbkBAIC02MDEsMjcgKzYxNSwxNSBAQCBzdGF0aWMgdm1fZmF1bHRfdCB0cnlfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgdW5zaWduZWQgaW50IG9yZGVyLFxcbiBcXG4gXFx0XFx0aWYgKGFsaWduZWQgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIGZvbGlvX3Rlc3RfcG1kX21hcHBhYmxlKHBhZ2VfZm9saW8ocGZuX3RvX3BhZ2UocGZuKSkpKSB7XFxuLVxcdFxcdFxcdHZtX2ZhdWx0X3QgcmV0O1xcbi1cXG4gXFx0XFx0XFx0cGZuIFxcdTAwMjY9IFBNRF9NQVNLIFxcdTAwM2VcXHUwMDNlIFBBR0VfU0hJRlQ7XFxuLVxcbi1cXHRcXHRcXHQvKiBVbmxpa2UgUFRFcyB3aGljaCBhcmUgYXV0b21hdGljYWxseSB1cGdyYWRlZCB0b1xcbi1cXHRcXHRcXHQgKiB3cml0ZWFibGUgZW50cmllcywgdGhlIFBNRCB1cGdyYWRlcyBnbyB0aHJvdWdoXFxuLVxcdFxcdFxcdCAqIC5odWdlX2ZhdWx0KCkuIE1ha2Ugc3VyZSB3ZSBwYXNzIHRoZSBcXFwid3JpdGVcXFwiIGluZm9cXG4tXFx0XFx0XFx0ICogYWxvbmcgaW4gdGhhdCBjYXNlLlxcbi1cXHRcXHRcXHQgKiBUaGlzIGFsc28gbWVhbnMgd2UgaGF2ZSB0byByZWNvcmQgdGhlIHdyaXRlIGZhdWx0XFxuLVxcdFxcdFxcdCAqIGhlcmUsIGluc3RlYWQgb2YgaW4gLnBmbl9ta3dyaXRlKCkuXFxuLVxcdFxcdFxcdCAqL1xcbi1cXHRcXHRcXHRyZXQgPSB2bWZfaW5zZXJ0X3Bmbl9wbWQodm1mLCBwZm4sXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCB2bWYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgRkFVTFRfRkxBR19XUklURSk7XFxuLVxcdFxcdFxcdGlmIChyZXQgPT0gVk1fRkFVTFRfTk9QQUdFIFxcdTAwMjZcXHUwMDI2ICh2bWYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgRkFVTFRfRkxBR19XUklURSkpXFxuLVxcdFxcdFxcdFxcdGRybV9nZW1fc2htZW1fcmVjb3JkX21rd3JpdGUodm1mKTtcXG4tXFxuLVxcdFxcdFxcdHJldHVybiByZXQ7XFxuK1xcdFxcdFxcdHJldCA9IHZtZl9pbnNlcnRfcGZuX3BtZCh2bWYsIHBmbiwgd3JpdGUpO1xcbiBcXHRcXHR9XFxuICNlbmRpZlxcbiBcXHR9XFxuLVxcdHJldHVybiBWTV9GQVVMVF9GQUxMQkFDSztcXG4rXFxuK1xcdGlmIChyZXQgPT0gVk1fRkFVTFRfTk9QQUdFIFxcdTAwMjZcXHUwMDI2IHdyaXRlKVxcbitcXHRcXHRkcm1fZ2VtX3NobWVtX3JlY29yZF9ta3dyaXRlKHZtZik7XFxuK1xcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2bV9mYXVsdF90IGRybV9nZW1fc2htZW1fYW55X2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLCB1bnNpZ25lZCBpbnQgb3JkZXIpXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jXFxuaW5kZXggYTgwNTEwNDg5YzQ1Ni4uZWYyN2EyZDdhZmMwNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uY1xcbkBAIC0yNjMsNyArMjYzLDggQEAgdm1fZmF1bHRfdCB0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsXFxuIFxcdFxcdCAqIGF0IGFyYml0cmFyeSB0aW1lcyB3aGlsZSB0aGUgZGF0YSBpcyBtbWFwJ2VkLlxcbiBcXHRcXHQgKiBTZWUgdm1mX2luc2VydF9wZm5fcHJvdCgpIGZvciBhIGRpc2N1c3Npb24uXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRyZXQgPSB2bWZfaW5zZXJ0X3Bmbl9wcm90KHZtYSwgYWRkcmVzcywgcGZuLCBwcm90KTtcXG4rXFx0XFx0cmV0ID0gX192bWZfaW5zZXJ0X3Bmbl9wcm90KHZtYSwgYWRkcmVzcywgcGZuLCBwcm90LFxcbitcXHRcXHRcXHRcXHRcXHQgICAgaSA9PSAwIFxcdTAwMjZcXHUwMDI2ICEhKHZtZi1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBGQVVMVF9GTEFHX1dSSVRFKSk7XFxuIFxcbiBcXHRcXHQvKiBOZXZlciBlcnJvciBvbiBwcmVmYXVsdGVkIFBURXMgKi9cXG4gXFx0XFx0aWYgKHVubGlrZWx5KChyZXQgXFx1MDAyNiBWTV9GQVVMVF9FUlJPUikpKSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuY1xcbmluZGV4IDQ1NTYxYmMxYzllZmYuLjMwOTk1NThjMDc2MmYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jXFxuQEAgLTM5OCwxNSArMzk4LDMzIEBAIHZvaWQgdm13X2JvX2RpcnR5X2NsZWFyX3JlcyhzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMpXFxuIFxcdFxcdGRpcnR5LVxcdTAwM2VlbmQgPSByZXNfc3RhcnQ7XFxuIH1cXG4gXFxuK3N0YXRpYyB2bV9mYXVsdF90IHZtd19ib19kaXJ0eV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCBzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvKVxcbit7XFxuK1xcdHVuc2lnbmVkIGxvbmcgcGFnZV9vZmZzZXQ7XFxuK1xcdHN0cnVjdCB2bXdfYm8gKnZibyA9IHRvX3Ztd19ibyhcXHUwMDI2Ym8tXFx1MDAzZWJhc2UpO1xcbitcXG4rXFx0cGFnZV9vZmZzZXQgPSB2bWYtXFx1MDAzZXBnb2ZmIC0gZHJtX3ZtYV9ub2RlX3N0YXJ0KFxcdTAwMjZiby1cXHUwMDNlYmFzZS52bWFfbm9kZSk7XFxuK1xcdGlmICh1bmxpa2VseShwYWdlX29mZnNldCBcXHUwMDNlPSBQRk5fVVAoYm8tXFx1MDAzZXJlc291cmNlLVxcdTAwM2VzaXplKSkpXFxuK1xcdFxcdHJldHVybiBWTV9GQVVMVF9TSUdCVVM7XFxuK1xcbitcXHRpZiAodmJvLVxcdTAwM2VkaXJ0eSBcXHUwMDI2XFx1MDAyNiB2Ym8tXFx1MDAzZWRpcnR5LVxcdTAwM2VtZXRob2QgPT0gVk1XX0JPX0RJUlRZX01LV1JJVEUgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICF0ZXN0X2JpdChwYWdlX29mZnNldCwgXFx1MDAyNnZiby1cXHUwMDNlZGlydHktXFx1MDAzZWJpdG1hcFswXSkpIHtcXG4rXFx0XFx0c3RydWN0IHZtd19ib19kaXJ0eSAqZGlydHkgPSB2Ym8tXFx1MDAzZWRpcnR5O1xcbitcXG4rXFx0XFx0X19zZXRfYml0KHBhZ2Vfb2Zmc2V0LCBcXHUwMDI2ZGlydHktXFx1MDAzZWJpdG1hcFswXSk7XFxuK1xcdFxcdGRpcnR5LVxcdTAwM2VzdGFydCA9IG1pbihkaXJ0eS1cXHUwMDNlc3RhcnQsIHBhZ2Vfb2Zmc2V0KTtcXG4rXFx0XFx0ZGlydHktXFx1MDAzZWVuZCA9IG1heChkaXJ0eS1cXHUwMDNlZW5kLCBwYWdlX29mZnNldCArIDEpO1xcbitcXHR9XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbiB2bV9mYXVsdF90IHZtd19ib192bV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbiB7XFxuIFxcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hID0gdm1mLVxcdTAwM2V2bWE7XFxuIFxcdHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSAoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICopXFxuIFxcdCAgICB2bWEtXFx1MDAzZXZtX3ByaXZhdGVfZGF0YTtcXG4gXFx0dm1fZmF1bHRfdCByZXQ7XFxuLVxcdHVuc2lnbmVkIGxvbmcgcGFnZV9vZmZzZXQ7XFxuIFxcdHVuc2lnbmVkIGludCBzYXZlX2ZsYWdzO1xcbi1cXHRzdHJ1Y3Qgdm13X2JvICp2Ym8gPSB0b192bXdfYm8oXFx1MDAyNmJvLVxcdTAwM2ViYXNlKTtcXG4gXFxuIFxcdC8qXFxuIFxcdCAqIG1rd3JpdGUoKSBkb2Vzbid0IGhhbmRsZSB0aGUgVk1fRkFVTFRfUkVUUlkgcmV0dXJuIHZhbHVlIGNvcnJlY3RseS5cXG5AQCAtNDE5LDIyICs0MzcsNyBAQCB2bV9mYXVsdF90IHZtd19ib192bV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXG4tXFx0cGFnZV9vZmZzZXQgPSB2bWYtXFx1MDAzZXBnb2ZmIC0gZHJtX3ZtYV9ub2RlX3N0YXJ0KFxcdTAwMjZiby1cXHUwMDNlYmFzZS52bWFfbm9kZSk7XFxuLVxcdGlmICh1bmxpa2VseShwYWdlX29mZnNldCBcXHUwMDNlPSBQRk5fVVAoYm8tXFx1MDAzZXJlc291cmNlLVxcdTAwM2VzaXplKSkpIHtcXG4tXFx0XFx0cmV0ID0gVk1fRkFVTFRfU0lHQlVTO1xcbi1cXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuLVxcdH1cXG4tXFxuLVxcdGlmICh2Ym8tXFx1MDAzZWRpcnR5IFxcdTAwMjZcXHUwMDI2IHZiby1cXHUwMDNlZGlydHktXFx1MDAzZW1ldGhvZCA9PSBWTVdfQk9fRElSVFlfTUtXUklURSBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgIXRlc3RfYml0KHBhZ2Vfb2Zmc2V0LCBcXHUwMDI2dmJvLVxcdTAwM2VkaXJ0eS1cXHUwMDNlYml0bWFwWzBdKSkge1xcbi1cXHRcXHRzdHJ1Y3Qgdm13X2JvX2RpcnR5ICpkaXJ0eSA9IHZiby1cXHUwMDNlZGlydHk7XFxuLVxcbi1cXHRcXHRfX3NldF9iaXQocGFnZV9vZmZzZXQsIFxcdTAwMjZkaXJ0eS1cXHUwMDNlYml0bWFwWzBdKTtcXG4tXFx0XFx0ZGlydHktXFx1MDAzZXN0YXJ0ID0gbWluKGRpcnR5LVxcdTAwM2VzdGFydCwgcGFnZV9vZmZzZXQpO1xcbi1cXHRcXHRkaXJ0eS1cXHUwMDNlZW5kID0gbWF4KGRpcnR5LVxcdTAwM2VlbmQsIHBhZ2Vfb2Zmc2V0ICsgMSk7XFxuLVxcdH1cXG4tXFxuLW91dF91bmxvY2s6XFxuK1xcdHJldCA9IHZtd19ib19kaXJ0eV9ta3dyaXRlKHZtZiwgYm8pO1xcbiBcXHRkbWFfcmVzdl91bmxvY2soYm8tXFx1MDAzZWJhc2UucmVzdik7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5AQCAtNDg0LDYgKzQ4Nyw5IEBAIHZtX2ZhdWx0X3Qgdm13X2JvX3ZtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbiBcXHRcXHRwcm90ID0gdm1fZ2V0X3BhZ2VfcHJvdCh2bWEtXFx1MDAzZXZtX2ZsYWdzKTtcXG4gXFxuIFxcdHJldCA9IHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZCh2bWYsIHByb3QsIG51bV9wcmVmYXVsdCk7XFxuK1xcdGlmIChyZXQgPT0gVk1fRkFVTFRfTk9QQUdFIFxcdTAwMjZcXHUwMDI2ICh2bWYtXFx1MDAzZWZsYWdzIFxcdTAwMjYgRkFVTFRfRkxBR19XUklURSkpXFxuK1xcdFxcdFdBUk5fT05fT05DRSh2bXdfYm9fZGlydHlfbWt3cml0ZSh2bWYsIGJvKSk7XFxuK1xcbiBcXHRpZiAocmV0ID09IFZNX0ZBVUxUX1JFVFJZIFxcdTAwMjZcXHUwMDI2ICEodm1mLVxcdTAwM2VmbGFncyBcXHUwMDI2IEZBVUxUX0ZMQUdfUkVUUllfTk9XQUlUKSlcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaFxcbmluZGV4IDQ4NWRmOWMyZGJkZGIuLjQ3ZWFjZjY0MGMwMzUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9tbS5oXFxuQEAgLTQ1NDgsNiArNDU0OCwxMCBAQCB2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuIFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgcGZuKTtcXG4gdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3Bmbl9wcm90KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuIFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwZ3Byb3QpO1xcbit2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuX21rd3JpdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4rXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBwZm4sIGJvb2wgd3JpdGUpO1xcbit2bV9mYXVsdF90IF9fdm1mX2luc2VydF9wZm5fcHJvdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbitcXHRcXHRcXHR1bnNpZ25lZCBsb25nIHBmbiwgcGdwcm90X3QgcGdwcm90LCBib29sIG1rd3JpdGUpO1xcbiB2bV9mYXVsdF90IHZtZl9pbnNlcnRfbWl4ZWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4gXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBwZm4pO1xcbiB2bV9mYXVsdF90IHZtZl9pbnNlcnRfbWl4ZWRfbWt3cml0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG5kaWZmIC0tZ2l0IGEvbW0vaHVnZV9tZW1vcnkuYyBiL21tL2h1Z2VfbWVtb3J5LmNcXG5pbmRleCBiNWQxZTlkNDQ2M2QwLi4yZjRkY2FhODE5Yjc5IDEwMDY0NFxcbi0tLSBhL21tL2h1Z2VfbWVtb3J5LmNcXG4rKysgYi9tbS9odWdlX21lbW9yeS5jXFxuQEAgLTE2MTUsNyArMTYxNSw3IEBAIHN0YXRpYyB2bV9mYXVsdF90IGluc2VydF9wbWQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4gICogQHBmbjogcGZuIHRvIGluc2VydFxcbiAgKiBAd3JpdGU6IHdoZXRoZXIgaXQncyBhIHdyaXRlIGZhdWx0XFxuICAqXFxuLSAqIEluc2VydCBhIHBtZCBzaXplIHBmbi4gU2VlIHZtZl9pbnNlcnRfcGZuKCkgZm9yIGFkZGl0aW9uYWwgaW5mby5cXG4rICogSW5zZXJ0IGEgcG1kIHNpemUgcGZuLiBTZWUgdm1mX2luc2VydF9wZm5fbWt3cml0ZSgpIGZvciBhZGRpdGlvbmFsIGluZm8uXFxuICAqXFxuICAqIFJldHVybjogdm1fZmF1bHRfdCB2YWx1ZS5cXG4gICovXFxuZGlmZiAtLWdpdCBhL21tL21lbW9yeS5jIGIvbW0vbWVtb3J5LmNcXG5pbmRleCBmZjMzOGMyYWJlOTIzLi5kM2QxMGIyZTQ3OWE0IDEwMDY0NFxcbi0tLSBhL21tL21lbW9yeS5jXFxuKysrIGIvbW0vbWVtb3J5LmNcXG5AQCAtMjcxOCw2ICsyNzE4LDM0IEBAIHN0YXRpYyB2bV9mYXVsdF90IGluc2VydF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4gXFx0cmV0dXJuIFZNX0ZBVUxUX05PUEFHRTtcXG4gfVxcbiBcXG4rdm1fZmF1bHRfdCBfX3ZtZl9pbnNlcnRfcGZuX3Byb3Qoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXFxuK1xcdFxcdFxcdHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBwZm4sIHBncHJvdF90IHBncHJvdCxcXG4rXFx0XFx0XFx0Ym9vbCBta3dyaXRlKVxcbit7XFxuK1xcdC8qXFxuK1xcdCAqIFRlY2huaWNhbGx5LCBhcmNoaXRlY3R1cmVzIHdpdGggcHRlX3NwZWNpYWwgY2FuIGF2b2lkIGFsbCB0aGVzZVxcbitcXHQgKiByZXN0cmljdGlvbnMgKHNhbWUgZm9yIHJlbWFwX3Bmbl9yYW5nZSkuICBIb3dldmVyIHdlIHdvdWxkIGxpa2VcXG4rXFx0ICogY29uc2lzdGVuY3kgaW4gdGVzdGluZyBhbmQgZmVhdHVyZSBwYXJpdHkgYW1vbmcgYWxsLCBzbyB3ZSBzaG91bGRcXG4rXFx0ICogdHJ5IHRvIGtlZXAgdGhlc2UgaW52YXJpYW50cyBpbiBwbGFjZSBmb3IgZXZlcnlib2R5LlxcbitcXHQgKi9cXG4rXFx0QlVHX09OKCEodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKSk7XFxuK1xcdEJVR19PTigodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKSA9PVxcbitcXHRcXHRcXHRcXHRcXHRcXHQoVk1fUEZOTUFQfFZNX01JWEVETUFQKSk7XFxuK1xcdEJVR19PTigodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1BGTk1BUCkgXFx1MDAyNlxcdTAwMjYgaXNfY293X21hcHBpbmcodm1hLVxcdTAwM2V2bV9mbGFncykpO1xcbitcXHRCVUdfT04oKHZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiBWTV9NSVhFRE1BUCkgXFx1MDAyNlxcdTAwMjYgcGZuX3ZhbGlkKHBmbikpO1xcbitcXG4rXFx0aWYgKGFkZHIgXFx1MDAzYyB2bWEtXFx1MDAzZXZtX3N0YXJ0IHx8IGFkZHIgXFx1MDAzZT0gdm1hLVxcdTAwM2V2bV9lbmQpXFxuK1xcdFxcdHJldHVybiBWTV9GQVVMVF9TSUdCVVM7XFxuK1xcbitcXHRpZiAoIXBmbl9tb2RpZnlfYWxsb3dlZChwZm4sIHBncHJvdCkpXFxuK1xcdFxcdHJldHVybiBWTV9GQVVMVF9TSUdCVVM7XFxuK1xcbitcXHRwZm5tYXBfc2V0dXBfY2FjaGVtb2RlX3BmbihwZm4sIFxcdTAwMjZwZ3Byb3QpO1xcbitcXG4rXFx0cmV0dXJuIGluc2VydF9wZm4odm1hLCBhZGRyLCBwZm4sIHBncHJvdCwgbWt3cml0ZSk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTChfX3ZtZl9pbnNlcnRfcGZuX3Byb3QpO1xcbitcXG4gLyoqXFxuICAqIHZtZl9pbnNlcnRfcGZuX3Byb3QgLSBpbnNlcnQgc2luZ2xlIHBmbiBpbnRvIHVzZXIgdm1hIHdpdGggc3BlY2lmaWVkIHBncHJvdFxcbiAgKiBAdm1hOiB1c2VyIHZtYSB0byBtYXAgdG9cXG5AQCAtMjc1NCwyNyArMjc4Miw3IEBAIHN0YXRpYyB2bV9mYXVsdF90IGluc2VydF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4gdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3Bmbl9wcm90KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXFxuIFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgcGZuLCBwZ3Byb3RfdCBwZ3Byb3QpXFxuIHtcXG4tXFx0LypcXG4tXFx0ICogVGVjaG5pY2FsbHksIGFyY2hpdGVjdHVyZXMgd2l0aCBwdGVfc3BlY2lhbCBjYW4gYXZvaWQgYWxsIHRoZXNlXFxuLVxcdCAqIHJlc3RyaWN0aW9ucyAoc2FtZSBmb3IgcmVtYXBfcGZuX3JhbmdlKS4gIEhvd2V2ZXIgd2Ugd291bGQgbGlrZVxcbi1cXHQgKiBjb25zaXN0ZW5jeSBpbiB0ZXN0aW5nIGFuZCBmZWF0dXJlIHBhcml0eSBhbW9uZyBhbGwsIHNvIHdlIHNob3VsZFxcbi1cXHQgKiB0cnkgdG8ga2VlcCB0aGVzZSBpbnZhcmlhbnRzIGluIHBsYWNlIGZvciBldmVyeWJvZHkuXFxuLVxcdCAqL1xcbi1cXHRCVUdfT04oISh2bWEtXFx1MDAzZXZtX2ZsYWdzIFxcdTAwMjYgKFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpKTtcXG4tXFx0QlVHX09OKCh2bWEtXFx1MDAzZXZtX2ZsYWdzIFxcdTAwMjYgKFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpID09XFxuLVxcdFxcdFxcdFxcdFxcdFxcdChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKTtcXG4tXFx0QlVHX09OKCh2bWEtXFx1MDAzZXZtX2ZsYWdzIFxcdTAwMjYgVk1fUEZOTUFQKSBcXHUwMDI2XFx1MDAyNiBpc19jb3dfbWFwcGluZyh2bWEtXFx1MDAzZXZtX2ZsYWdzKSk7XFxuLVxcdEJVR19PTigodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX01JWEVETUFQKSBcXHUwMDI2XFx1MDAyNiBwZm5fdmFsaWQocGZuKSk7XFxuLVxcbi1cXHRpZiAoYWRkciBcXHUwMDNjIHZtYS1cXHUwMDNldm1fc3RhcnQgfHwgYWRkciBcXHUwMDNlPSB2bWEtXFx1MDAzZXZtX2VuZClcXG4tXFx0XFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcXG4tXFxuLVxcdGlmICghcGZuX21vZGlmeV9hbGxvd2VkKHBmbiwgcGdwcm90KSlcXG4tXFx0XFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcXG4tXFxuLVxcdHBmbm1hcF9zZXR1cF9jYWNoZW1vZGVfcGZuKHBmbiwgXFx1MDAyNnBncHJvdCk7XFxuLVxcbi1cXHRyZXR1cm4gaW5zZXJ0X3Bmbih2bWEsIGFkZHIsIHBmbiwgcGdwcm90LCBmYWxzZSk7XFxuK1xcdHJldHVybiBfX3ZtZl9pbnNlcnRfcGZuX3Byb3Qodm1hLCBhZGRyLCBwZm4sIHBncHJvdCwgZmFsc2UpO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0wodm1mX2luc2VydF9wZm5fcHJvdCk7XFxuIFxcbkBAIC0yODA1LDYgKzI4MTMsMzEgQEAgdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbiB9XFxuIEVYUE9SVF9TWU1CT0wodm1mX2luc2VydF9wZm4pO1xcbiBcXG4rLyoqXFxuKyAqIHZtZl9pbnNlcnRfcGZuX21rd3JpdGUgLSBpbnNlcnQgc2luZ2xlIHBmbiBpbnRvIHVzZXIgdm1hLCBwb3NzaWJseSB3cml0YWJsZVxcbisgKiBAdm1hOiB1c2VyIHZtYSB0byBtYXAgdG9cXG4rICogQGFkZHI6IHRhcmdldCB1c2VyIGFkZHJlc3Mgb2YgdGhpcyBwYWdlXFxuKyAqIEBwZm46IHNvdXJjZSBrZXJuZWwgcGZuXFxuKyAqIEB3cml0ZTogd2hldGhlciB0aGUgUFRFIHNob3VsZCBiZSBpbnN0YWxsZWQgd3JpdGFibGVcXG4rICpcXG4rICogTGlrZSB2bWZfaW5zZXJ0X3BmbigpLCBleGNlcHQgdGhhdCBAd3JpdGUgYWxsb3dzIGluc3RhbGxpbmcgYSB3cml0YWJsZVxcbisgKiBQVEUgZXZlbiB3aGVuIEB2bWEgaXMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uLCBpLmUuIHdoZW4gaXQgaGFzIGFcXG4rICogLnBhZ2VfbWt3cml0ZSgpIG9yIC5wZm5fbWt3cml0ZSgpIGNhbGxiYWNrIGFuZCB2bWFfc2V0X3BhZ2VfcHJvdCgpIGhhc1xcbisgKiB0aGVyZWZvcmUgY2xlYXJlZCB0aGUgd3JpdGUgYml0IGZyb20gQHZtYS1cXHUwMDNldm1fcGFnZV9wcm90LlxcbisgKlxcbisgKiBOb3RlIHRoYXQgbmVpdGhlciBvZiB0aGVzZSBjYWxsYmFja3MgaXMgaW52b2tlZCwgc28gdGhlIGNhbGxlciBtdXN0XFxuKyAqIGl0c2VsZiBkbyB3aGF0ZXZlciB0aGV5IHdvdWxkIGhhdmUgZG9uZSBpZiBAd3JpdGUgaXMgdHJ1ZS5cXG4rICpcXG4rICogQ29udGV4dDogUHJvY2VzcyBjb250ZXh0LiAgTWF5IGFsbG9jYXRlIHVzaW5nICVHRlBfS0VSTkVMLlxcbisgKiBSZXR1cm46IHZtX2ZhdWx0X3QgdmFsdWUuXFxuKyAqL1xcbit2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuX21rd3JpdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4rXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBwZm4sIGJvb2wgd3JpdGUpXFxuK3tcXG4rXFx0cmV0dXJuIF9fdm1mX2luc2VydF9wZm5fcHJvdCh2bWEsIGFkZHIsIHBmbiwgdm1hLVxcdTAwM2V2bV9wYWdlX3Byb3QsIHdyaXRlKTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MKHZtZl9pbnNlcnRfcGZuX21rd3JpdGUpO1xcbitcXG4gc3RhdGljIGJvb2wgdm1fbWl4ZWRfb2soc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgcGZuLFxcbiBcXHRcXHRcXHRib29sIG1rd3JpdGUpXFxuIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6MjAuNzU1OTI1NDI2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6ODI2NDU2MTAwMzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNX1ZHRU1cIixcbiAgICBcIkRSTV9WS01TXCIsXG4gICAgXCJEUk1fVk1XR0ZYXCIsXG4gICAgXCJEUk1fVFRNXCIsXG4gICAgXCJEUk1fR0VNX1NITUVNX0hFTFBFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZtZl9pbnNlcnRfcGZuX21rd3JpdGVcIixcbiAgICBcIl9fdm1mX2luc2VydF9wZm5fcHJvdFwiLFxuICAgIFwidHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkXCIsXG4gICAgXCJ2bXdfYm9fdm1fbWt3cml0ZVwiLFxuICAgIFwidm13X2JvX3ZtX2ZhdWx0XCIsXG4gICAgXCJkcm1fZ2VtX3NobWVtX21tYXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBjb3JlIE1NIGZ1bmN0aW9ucyBgdm1mX2luc2VydF9wZm5fbWt3cml0ZWAgYW5kIGBfX3ZtZl9pbnNlcnRfcGZuX3Byb3RgIHRvIGFsbG93IGluc2VydGluZyBhIHdyaXRhYmxlIFBURSBkdXJpbmcgYSBwYWdlIGZhdWx0IGV2ZW4gd2hlbiB0aGUgVk1BIGlzIHVuZGVyIHdyaXRlIG5vdGlmaWNhdGlvbi4gVGhpcyBmaXhlcyBhbiBpc3N1ZSB3aXRoIGBmaXh1cF91c2VyX2ZhdWx0YCBjYWxsZXJzLiBJdCBtb2RpZmllcyB0aGUgcGFnZSBmYXVsdCBoYW5kbGVycyBpbiBEUk0gR0VNIHNobWVtIGhlbHBlciwgVFRNIEJPIFZNLCBhbmQgVk1XZ2Z4IHRvIHVzZSB0aGVzZSBuZXcgZnVuY3Rpb25zLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHZpcnR1YWwgR1BVIGRyaXZlcnMgdGhhdCBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBtbWFwIGFuZCBwYWdlIGZhdWx0cywgbWFraW5nIHRoZW0gaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkZjI1NTFkODU2M2ViNGIyMjg2OTZkMmVlZDk0MDFiOTA4ZTE3YzRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAwMjoxMjoxOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmNcbmluZGV4IGM5ODk0NTllYjIxNTkuLmM4MWJlM2U5NzMxNzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmNcbkBAIC01ODksMTEgKzU4OSwyNSBAQCBzdGF0aWMgdm9pZCBkcm1fZ2VtX3NobWVtX3JlY29yZF9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIFx0Zm9saW9fbWFya19kaXJ0eShwYWdlX2ZvbGlvKHNobWVtLVx1MDAzZXBhZ2VzW3BhZ2Vfb2Zmc2V0XSkpO1xuIH1cbiBcbisvKlxuKyAqIEJlY2F1c2UgdGhlIHZtX29wcyBoYXZlIGEgLnBmbl9ta3dyaXRlKCkgY2FsbGJhY2ssIHZtYV9zZXRfcGFnZV9wcm90KClcbisgKiBoYXMgY2xlYXJlZCB0aGUgd3JpdGUgYml0IGZyb20gdm1hLVx1MDAzZXZtX3BhZ2VfcHJvdC4gIHZtZl9pbnNlcnRfcGZuKClcbisgKiB3b3VsZCBpbnN0YWxsIGEgcmVhZC1vbmx5IGVudHJ5IGV2ZW4gZm9yIGEgd3JpdGUgZmF1bHQsIHJlbHlpbmcgb24gYVxuKyAqIHNlY29uZCBmYXVsdCB0byByZWFjaCAucGZuX21rd3JpdGUoKSBhbmQgdXBncmFkZSBpdCwgYnV0IHRoYXQgc2Vjb25kXG4rICogZmF1bHQgbmV2ZXIgaGFwcGVucyBmb3IgZml4dXBfdXNlcl9mYXVsdCgpIGNhbGxlcnMgdGhhdCBkaXJlY3RseVxuKyAqIHdhbGsgdGhlIHBhZ2UgdGFibGVzIHdpdGggZm9sbG93X3Bmbm1hcF9zdGFydCgpLiAgVG8gZW5zdXJlIHRoYXRcbisgKiB0aGV5IGRvbid0IHNlZSB0aGUgcmVhZC1vbmx5IGVudHJ5LCBwYXNzIEZBVUxUX0ZMQUdfV1JJVEUgaW5mbyBkb3duXG4rICogdG8gaW5zdGFsbCBhIHdyaXRhYmxlIGVudHJ5IHJpZ2h0IGF3YXkuICBCZWNhdXNlIC5wZm5fbWt3cml0ZSgpIGlzXG4rICogbm90IGludm9rZWQsIHJlY29yZCB0aGUgd3JpdGUgYWZ0ZXJ3YXJkcy5cbisgKi9cbiBzdGF0aWMgdm1fZmF1bHRfdCB0cnlfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgdW5zaWduZWQgaW50IG9yZGVyLFxuIFx0XHRcdFx0IHVuc2lnbmVkIGxvbmcgcGZuKVxuIHtcbitcdGJvb2wgd3JpdGUgPSB2bWYtXHUwMDNlZmxhZ3MgXHUwMDI2IEZBVUxUX0ZMQUdfV1JJVEU7XG4rXHR2bV9mYXVsdF90IHJldCA9IFZNX0ZBVUxUX0ZBTExCQUNLO1xuK1xuIFx0aWYgKCFvcmRlcikge1xuLVx0XHRyZXR1cm4gdm1mX2luc2VydF9wZm4odm1mLVx1MDAzZXZtYSwgdm1mLVx1MDAzZWFkZHJlc3MsIHBmbik7XG4rXHRcdHJldCA9IHZtZl9pbnNlcnRfcGZuX21rd3JpdGUodm1mLVx1MDAzZXZtYSwgdm1mLVx1MDAzZWFkZHJlc3MsIHBmbiwgd3JpdGUpO1xuICNpZmRlZiBDT05GSUdfQVJDSF9TVVBQT1JUU19QTURfUEZOTUFQXG4gXHR9IGVsc2UgaWYgKG9yZGVyID09IFBNRF9PUkRFUikge1xuIFx0XHR1bnNpZ25lZCBsb25nIHBhZGRyID0gcGZuIFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUO1xuQEAgLTYwMSwyNyArNjE1LDE1IEBAIHN0YXRpYyB2bV9mYXVsdF90IHRyeV9pbnNlcnRfcGZuKHN0cnVjdCB2bV9mYXVsdCAqdm1mLCB1bnNpZ25lZCBpbnQgb3JkZXIsXG4gXG4gXHRcdGlmIChhbGlnbmVkIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgZm9saW9fdGVzdF9wbWRfbWFwcGFibGUocGFnZV9mb2xpbyhwZm5fdG9fcGFnZShwZm4pKSkpIHtcbi1cdFx0XHR2bV9mYXVsdF90IHJldDtcbi1cbiBcdFx0XHRwZm4gXHUwMDI2PSBQTURfTUFTSyBcdTAwM2VcdTAwM2UgUEFHRV9TSElGVDtcbi1cbi1cdFx0XHQvKiBVbmxpa2UgUFRFcyB3aGljaCBhcmUgYXV0b21hdGljYWxseSB1cGdyYWRlZCB0b1xuLVx0XHRcdCAqIHdyaXRlYWJsZSBlbnRyaWVzLCB0aGUgUE1EIHVwZ3JhZGVzIGdvIHRocm91Z2hcbi1cdFx0XHQgKiAuaHVnZV9mYXVsdCgpLiBNYWtlIHN1cmUgd2UgcGFzcyB0aGUgXCJ3cml0ZVwiIGluZm9cbi1cdFx0XHQgKiBhbG9uZyBpbiB0aGF0IGNhc2UuXG4tXHRcdFx0ICogVGhpcyBhbHNvIG1lYW5zIHdlIGhhdmUgdG8gcmVjb3JkIHRoZSB3cml0ZSBmYXVsdFxuLVx0XHRcdCAqIGhlcmUsIGluc3RlYWQgb2YgaW4gLnBmbl9ta3dyaXRlKCkuXG4tXHRcdFx0ICovXG4tXHRcdFx0cmV0ID0gdm1mX2luc2VydF9wZm5fcG1kKHZtZiwgcGZuLFxuLVx0XHRcdFx0XHRcdCB2bWYtXHUwMDNlZmxhZ3MgXHUwMDI2IEZBVUxUX0ZMQUdfV1JJVEUpO1xuLVx0XHRcdGlmIChyZXQgPT0gVk1fRkFVTFRfTk9QQUdFIFx1MDAyNlx1MDAyNiAodm1mLVx1MDAzZWZsYWdzIFx1MDAyNiBGQVVMVF9GTEFHX1dSSVRFKSlcbi1cdFx0XHRcdGRybV9nZW1fc2htZW1fcmVjb3JkX21rd3JpdGUodm1mKTtcbi1cbi1cdFx0XHRyZXR1cm4gcmV0O1xuK1x0XHRcdHJldCA9IHZtZl9pbnNlcnRfcGZuX3BtZCh2bWYsIHBmbiwgd3JpdGUpO1xuIFx0XHR9XG4gI2VuZGlmXG4gXHR9XG4tXHRyZXR1cm4gVk1fRkFVTFRfRkFMTEJBQ0s7XG4rXG4rXHRpZiAocmV0ID09IFZNX0ZBVUxUX05PUEFHRSBcdTAwMjZcdTAwMjYgd3JpdGUpXG4rXHRcdGRybV9nZW1fc2htZW1fcmVjb3JkX21rd3JpdGUodm1mKTtcbitcdHJldHVybiByZXQ7XG4gfVxuIFxuIHN0YXRpYyB2bV9mYXVsdF90IGRybV9nZW1fc2htZW1fYW55X2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLCB1bnNpZ25lZCBpbnQgb3JkZXIpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmNcbmluZGV4IGE4MDUxMDQ4OWM0NTYuLmVmMjdhMmQ3YWZjMDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jXG5AQCAtMjYzLDcgKzI2Myw4IEBAIHZtX2ZhdWx0X3QgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHN0cnVjdCB2bV9mYXVsdCAqdm1mLFxuIFx0XHQgKiBhdCBhcmJpdHJhcnkgdGltZXMgd2hpbGUgdGhlIGRhdGEgaXMgbW1hcCdlZC5cbiBcdFx0ICogU2VlIHZtZl9pbnNlcnRfcGZuX3Byb3QoKSBmb3IgYSBkaXNjdXNzaW9uLlxuIFx0XHQgKi9cbi1cdFx0cmV0ID0gdm1mX2luc2VydF9wZm5fcHJvdCh2bWEsIGFkZHJlc3MsIHBmbiwgcHJvdCk7XG4rXHRcdHJldCA9IF9fdm1mX2luc2VydF9wZm5fcHJvdCh2bWEsIGFkZHJlc3MsIHBmbiwgcHJvdCxcbitcdFx0XHRcdFx0ICAgIGkgPT0gMCBcdTAwMjZcdTAwMjYgISEodm1mLVx1MDAzZWZsYWdzIFx1MDAyNiBGQVVMVF9GTEFHX1dSSVRFKSk7XG4gXG4gXHRcdC8qIE5ldmVyIGVycm9yIG9uIHByZWZhdWx0ZWQgUFRFcyAqL1xuIFx0XHRpZiAodW5saWtlbHkoKHJldCBcdTAwMjYgVk1fRkFVTFRfRVJST1IpKSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuY1xuaW5kZXggNDU1NjFiYzFjOWVmZi4uMzA5OTU1OGMwNzYyZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuY1xuKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jXG5AQCAtMzk4LDE1ICszOTgsMzMgQEAgdm9pZCB2bXdfYm9fZGlydHlfY2xlYXJfcmVzKHN0cnVjdCB2bXdfcmVzb3VyY2UgKnJlcylcbiBcdFx0ZGlydHktXHUwMDNlZW5kID0gcmVzX3N0YXJ0O1xuIH1cbiBcbitzdGF0aWMgdm1fZmF1bHRfdCB2bXdfYm9fZGlydHlfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibylcbit7XG4rXHR1bnNpZ25lZCBsb25nIHBhZ2Vfb2Zmc2V0O1xuK1x0c3RydWN0IHZtd19ibyAqdmJvID0gdG9fdm13X2JvKFx1MDAyNmJvLVx1MDAzZWJhc2UpO1xuK1xuK1x0cGFnZV9vZmZzZXQgPSB2bWYtXHUwMDNlcGdvZmYgLSBkcm1fdm1hX25vZGVfc3RhcnQoXHUwMDI2Ym8tXHUwMDNlYmFzZS52bWFfbm9kZSk7XG4rXHRpZiAodW5saWtlbHkocGFnZV9vZmZzZXQgXHUwMDNlPSBQRk5fVVAoYm8tXHUwMDNlcmVzb3VyY2UtXHUwMDNlc2l6ZSkpKVxuK1x0XHRyZXR1cm4gVk1fRkFVTFRfU0lHQlVTO1xuK1xuK1x0aWYgKHZiby1cdTAwM2VkaXJ0eSBcdTAwMjZcdTAwMjYgdmJvLVx1MDAzZWRpcnR5LVx1MDAzZW1ldGhvZCA9PSBWTVdfQk9fRElSVFlfTUtXUklURSBcdTAwMjZcdTAwMjZcbitcdCAgICAhdGVzdF9iaXQocGFnZV9vZmZzZXQsIFx1MDAyNnZiby1cdTAwM2VkaXJ0eS1cdTAwM2ViaXRtYXBbMF0pKSB7XG4rXHRcdHN0cnVjdCB2bXdfYm9fZGlydHkgKmRpcnR5ID0gdmJvLVx1MDAzZWRpcnR5O1xuK1xuK1x0XHRfX3NldF9iaXQocGFnZV9vZmZzZXQsIFx1MDAyNmRpcnR5LVx1MDAzZWJpdG1hcFswXSk7XG4rXHRcdGRpcnR5LVx1MDAzZXN0YXJ0ID0gbWluKGRpcnR5LVx1MDAzZXN0YXJ0LCBwYWdlX29mZnNldCk7XG4rXHRcdGRpcnR5LVx1MDAzZWVuZCA9IG1heChkaXJ0eS1cdTAwM2VlbmQsIHBhZ2Vfb2Zmc2V0ICsgMSk7XG4rXHR9XG4rXHRyZXR1cm4gMDtcbit9XG4rXG4gdm1fZmF1bHRfdCB2bXdfYm9fdm1fbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbiB7XG4gXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSA9IHZtZi1cdTAwM2V2bWE7XG4gXHRzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0gKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqKVxuIFx0ICAgIHZtYS1cdTAwM2V2bV9wcml2YXRlX2RhdGE7XG4gXHR2bV9mYXVsdF90IHJldDtcbi1cdHVuc2lnbmVkIGxvbmcgcGFnZV9vZmZzZXQ7XG4gXHR1bnNpZ25lZCBpbnQgc2F2ZV9mbGFncztcbi1cdHN0cnVjdCB2bXdfYm8gKnZibyA9IHRvX3Ztd19ibyhcdTAwMjZiby1cdTAwM2ViYXNlKTtcbiBcbiBcdC8qXG4gXHQgKiBta3dyaXRlKCkgZG9lc24ndCBoYW5kbGUgdGhlIFZNX0ZBVUxUX1JFVFJZIHJldHVybiB2YWx1ZSBjb3JyZWN0bHkuXG5AQCAtNDE5LDIyICs0MzcsNyBAQCB2bV9mYXVsdF90IHZtd19ib192bV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIFx0aWYgKHJldClcbiBcdFx0cmV0dXJuIHJldDtcbiBcbi1cdHBhZ2Vfb2Zmc2V0ID0gdm1mLVx1MDAzZXBnb2ZmIC0gZHJtX3ZtYV9ub2RlX3N0YXJ0KFx1MDAyNmJvLVx1MDAzZWJhc2Uudm1hX25vZGUpO1xuLVx0aWYgKHVubGlrZWx5KHBhZ2Vfb2Zmc2V0IFx1MDAzZT0gUEZOX1VQKGJvLVx1MDAzZXJlc291cmNlLVx1MDAzZXNpemUpKSkge1xuLVx0XHRyZXQgPSBWTV9GQVVMVF9TSUdCVVM7XG4tXHRcdGdvdG8gb3V0X3VubG9jaztcbi1cdH1cbi1cbi1cdGlmICh2Ym8tXHUwMDNlZGlydHkgXHUwMDI2XHUwMDI2IHZiby1cdTAwM2VkaXJ0eS1cdTAwM2VtZXRob2QgPT0gVk1XX0JPX0RJUlRZX01LV1JJVEUgXHUwMDI2XHUwMDI2XG4tXHQgICAgIXRlc3RfYml0KHBhZ2Vfb2Zmc2V0LCBcdTAwMjZ2Ym8tXHUwMDNlZGlydHktXHUwMDNlYml0bWFwWzBdKSkge1xuLVx0XHRzdHJ1Y3Qgdm13X2JvX2RpcnR5ICpkaXJ0eSA9IHZiby1cdTAwM2VkaXJ0eTtcbi1cbi1cdFx0X19zZXRfYml0KHBhZ2Vfb2Zmc2V0LCBcdTAwMjZkaXJ0eS1cdTAwM2ViaXRtYXBbMF0pO1xuLVx0XHRkaXJ0eS1cdTAwM2VzdGFydCA9IG1pbihkaXJ0eS1cdTAwM2VzdGFydCwgcGFnZV9vZmZzZXQpO1xuLVx0XHRkaXJ0eS1cdTAwM2VlbmQgPSBtYXgoZGlydHktXHUwMDNlZW5kLCBwYWdlX29mZnNldCArIDEpO1xuLVx0fVxuLVxuLW91dF91bmxvY2s6XG4rXHRyZXQgPSB2bXdfYm9fZGlydHlfbWt3cml0ZSh2bWYsIGJvKTtcbiBcdGRtYV9yZXN2X3VubG9jayhiby1cdTAwM2ViYXNlLnJlc3YpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5AQCAtNDg0LDYgKzQ4Nyw5IEBAIHZtX2ZhdWx0X3Qgdm13X2JvX3ZtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuIFx0XHRwcm90ID0gdm1fZ2V0X3BhZ2VfcHJvdCh2bWEtXHUwMDNldm1fZmxhZ3MpO1xuIFxuIFx0cmV0ID0gdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkKHZtZiwgcHJvdCwgbnVtX3ByZWZhdWx0KTtcbitcdGlmIChyZXQgPT0gVk1fRkFVTFRfTk9QQUdFIFx1MDAyNlx1MDAyNiAodm1mLVx1MDAzZWZsYWdzIFx1MDAyNiBGQVVMVF9GTEFHX1dSSVRFKSlcbitcdFx0V0FSTl9PTl9PTkNFKHZtd19ib19kaXJ0eV9ta3dyaXRlKHZtZiwgYm8pKTtcbitcbiBcdGlmIChyZXQgPT0gVk1fRkFVTFRfUkVUUlkgXHUwMDI2XHUwMDI2ICEodm1mLVx1MDAzZWZsYWdzIFx1MDAyNiBGQVVMVF9GTEFHX1JFVFJZX05PV0FJVCkpXG4gXHRcdHJldHVybiByZXQ7XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oXG5pbmRleCA0ODVkZjljMmRiZGRiLi40N2VhY2Y2NDBjMDM1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L21tLmhcbkBAIC00NTQ4LDYgKzQ1NDgsMTAgQEAgdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0XHRcdHVuc2lnbmVkIGxvbmcgcGZuKTtcbiB2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuX3Byb3Qoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdFx0XHR1bnNpZ25lZCBsb25nIHBmbiwgcGdwcm90X3QgcGdwcm90KTtcbit2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuX21rd3JpdGUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbitcdFx0XHR1bnNpZ25lZCBsb25nIHBmbiwgYm9vbCB3cml0ZSk7XG4rdm1fZmF1bHRfdCBfX3ZtZl9pbnNlcnRfcGZuX3Byb3Qoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbitcdFx0XHR1bnNpZ25lZCBsb25nIHBmbiwgcGdwcm90X3QgcGdwcm90LCBib29sIG1rd3JpdGUpO1xuIHZtX2ZhdWx0X3Qgdm1mX2luc2VydF9taXhlZChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIFx0XHRcdHVuc2lnbmVkIGxvbmcgcGZuKTtcbiB2bV9mYXVsdF90IHZtZl9pbnNlcnRfbWl4ZWRfbWt3cml0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbmRpZmYgLS1naXQgYS9tbS9odWdlX21lbW9yeS5jIGIvbW0vaHVnZV9tZW1vcnkuY1xuaW5kZXggYjVkMWU5ZDQ0NjNkMC4uMmY0ZGNhYTgxOWI3OSAxMDA2NDRcbi0tLSBhL21tL2h1Z2VfbWVtb3J5LmNcbisrKyBiL21tL2h1Z2VfbWVtb3J5LmNcbkBAIC0xNjE1LDcgKzE2MTUsNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBpbnNlcnRfcG1kKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4gICogQHBmbjogcGZuIHRvIGluc2VydFxuICAqIEB3cml0ZTogd2hldGhlciBpdCdzIGEgd3JpdGUgZmF1bHRcbiAgKlxuLSAqIEluc2VydCBhIHBtZCBzaXplIHBmbi4gU2VlIHZtZl9pbnNlcnRfcGZuKCkgZm9yIGFkZGl0aW9uYWwgaW5mby5cbisgKiBJbnNlcnQgYSBwbWQgc2l6ZSBwZm4uIFNlZSB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlKCkgZm9yIGFkZGl0aW9uYWwgaW5mby5cbiAgKlxuICAqIFJldHVybjogdm1fZmF1bHRfdCB2YWx1ZS5cbiAgKi9cbmRpZmYgLS1naXQgYS9tbS9tZW1vcnkuYyBiL21tL21lbW9yeS5jXG5pbmRleCBmZjMzOGMyYWJlOTIzLi5kM2QxMGIyZTQ3OWE0IDEwMDY0NFxuLS0tIGEvbW0vbWVtb3J5LmNcbisrKyBiL21tL21lbW9yeS5jXG5AQCAtMjcxOCw2ICsyNzE4LDM0IEBAIHN0YXRpYyB2bV9mYXVsdF90IGluc2VydF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdHJldHVybiBWTV9GQVVMVF9OT1BBR0U7XG4gfVxuIFxuK3ZtX2ZhdWx0X3QgX192bWZfaW5zZXJ0X3Bmbl9wcm90KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxuK1x0XHRcdHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBwZm4sIHBncHJvdF90IHBncHJvdCxcbitcdFx0XHRib29sIG1rd3JpdGUpXG4re1xuK1x0LypcbitcdCAqIFRlY2huaWNhbGx5LCBhcmNoaXRlY3R1cmVzIHdpdGggcHRlX3NwZWNpYWwgY2FuIGF2b2lkIGFsbCB0aGVzZVxuK1x0ICogcmVzdHJpY3Rpb25zIChzYW1lIGZvciByZW1hcF9wZm5fcmFuZ2UpLiAgSG93ZXZlciB3ZSB3b3VsZCBsaWtlXG4rXHQgKiBjb25zaXN0ZW5jeSBpbiB0ZXN0aW5nIGFuZCBmZWF0dXJlIHBhcml0eSBhbW9uZyBhbGwsIHNvIHdlIHNob3VsZFxuK1x0ICogdHJ5IHRvIGtlZXAgdGhlc2UgaW52YXJpYW50cyBpbiBwbGFjZSBmb3IgZXZlcnlib2R5LlxuK1x0ICovXG4rXHRCVUdfT04oISh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKSk7XG4rXHRCVUdfT04oKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgKFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpID09XG4rXHRcdFx0XHRcdFx0KFZNX1BGTk1BUHxWTV9NSVhFRE1BUCkpO1xuK1x0QlVHX09OKCh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1BGTk1BUCkgXHUwMDI2XHUwMDI2IGlzX2Nvd19tYXBwaW5nKHZtYS1cdTAwM2V2bV9mbGFncykpO1xuK1x0QlVHX09OKCh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX01JWEVETUFQKSBcdTAwMjZcdTAwMjYgcGZuX3ZhbGlkKHBmbikpO1xuK1xuK1x0aWYgKGFkZHIgXHUwMDNjIHZtYS1cdTAwM2V2bV9zdGFydCB8fCBhZGRyIFx1MDAzZT0gdm1hLVx1MDAzZXZtX2VuZClcbitcdFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcbitcbitcdGlmICghcGZuX21vZGlmeV9hbGxvd2VkKHBmbiwgcGdwcm90KSlcbitcdFx0cmV0dXJuIFZNX0ZBVUxUX1NJR0JVUztcbitcbitcdHBmbm1hcF9zZXR1cF9jYWNoZW1vZGVfcGZuKHBmbiwgXHUwMDI2cGdwcm90KTtcbitcbitcdHJldHVybiBpbnNlcnRfcGZuKHZtYSwgYWRkciwgcGZuLCBwZ3Byb3QsIG1rd3JpdGUpO1xuK31cbitFWFBPUlRfU1lNQk9MKF9fdm1mX2luc2VydF9wZm5fcHJvdCk7XG4rXG4gLyoqXG4gICogdm1mX2luc2VydF9wZm5fcHJvdCAtIGluc2VydCBzaW5nbGUgcGZuIGludG8gdXNlciB2bWEgd2l0aCBzcGVjaWZpZWQgcGdwcm90XG4gICogQHZtYTogdXNlciB2bWEgdG8gbWFwIHRvXG5AQCAtMjc1NCwyNyArMjc4Miw3IEBAIHN0YXRpYyB2bV9mYXVsdF90IGluc2VydF9wZm4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiB2bV9mYXVsdF90IHZtZl9pbnNlcnRfcGZuX3Byb3Qoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgYWRkcixcbiBcdFx0XHR1bnNpZ25lZCBsb25nIHBmbiwgcGdwcm90X3QgcGdwcm90KVxuIHtcbi1cdC8qXG4tXHQgKiBUZWNobmljYWxseSwgYXJjaGl0ZWN0dXJlcyB3aXRoIHB0ZV9zcGVjaWFsIGNhbiBhdm9pZCBhbGwgdGhlc2Vcbi1cdCAqIHJlc3RyaWN0aW9ucyAoc2FtZSBmb3IgcmVtYXBfcGZuX3JhbmdlKS4gIEhvd2V2ZXIgd2Ugd291bGQgbGlrZVxuLVx0ICogY29uc2lzdGVuY3kgaW4gdGVzdGluZyBhbmQgZmVhdHVyZSBwYXJpdHkgYW1vbmcgYWxsLCBzbyB3ZSBzaG91bGRcbi1cdCAqIHRyeSB0byBrZWVwIHRoZXNlIGludmFyaWFudHMgaW4gcGxhY2UgZm9yIGV2ZXJ5Ym9keS5cbi1cdCAqL1xuLVx0QlVHX09OKCEodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiAoVk1fUEZOTUFQfFZNX01JWEVETUFQKSkpO1xuLVx0QlVHX09OKCh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKSA9PVxuLVx0XHRcdFx0XHRcdChWTV9QRk5NQVB8Vk1fTUlYRURNQVApKTtcbi1cdEJVR19PTigodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9QRk5NQVApIFx1MDAyNlx1MDAyNiBpc19jb3dfbWFwcGluZyh2bWEtXHUwMDNldm1fZmxhZ3MpKTtcbi1cdEJVR19PTigodm1hLVx1MDAzZXZtX2ZsYWdzIFx1MDAyNiBWTV9NSVhFRE1BUCkgXHUwMDI2XHUwMDI2IHBmbl92YWxpZChwZm4pKTtcbi1cbi1cdGlmIChhZGRyIFx1MDAzYyB2bWEtXHUwMDNldm1fc3RhcnQgfHwgYWRkciBcdTAwM2U9IHZtYS1cdTAwM2V2bV9lbmQpXG4tXHRcdHJldHVybiBWTV9GQVVMVF9TSUdCVVM7XG4tXG4tXHRpZiAoIXBmbl9tb2RpZnlfYWxsb3dlZChwZm4sIHBncHJvdCkpXG4tXHRcdHJldHVybiBWTV9GQVVMVF9TSUdCVVM7XG4tXG4tXHRwZm5tYXBfc2V0dXBfY2FjaGVtb2RlX3BmbihwZm4sIFx1MDAyNnBncHJvdCk7XG4tXG4tXHRyZXR1cm4gaW5zZXJ0X3Bmbih2bWEsIGFkZHIsIHBmbiwgcGdwcm90LCBmYWxzZSk7XG4rXHRyZXR1cm4gX192bWZfaW5zZXJ0X3Bmbl9wcm90KHZtYSwgYWRkciwgcGZuLCBwZ3Byb3QsIGZhbHNlKTtcbiB9XG4gRVhQT1JUX1NZTUJPTCh2bWZfaW5zZXJ0X3Bmbl9wcm90KTtcbiBcbkBAIC0yODA1LDYgKzI4MTMsMzEgQEAgdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3BmbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxuIH1cbiBFWFBPUlRfU1lNQk9MKHZtZl9pbnNlcnRfcGZuKTtcbiBcbisvKipcbisgKiB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlIC0gaW5zZXJ0IHNpbmdsZSBwZm4gaW50byB1c2VyIHZtYSwgcG9zc2libHkgd3JpdGFibGVcbisgKiBAdm1hOiB1c2VyIHZtYSB0byBtYXAgdG9cbisgKiBAYWRkcjogdGFyZ2V0IHVzZXIgYWRkcmVzcyBvZiB0aGlzIHBhZ2VcbisgKiBAcGZuOiBzb3VyY2Uga2VybmVsIHBmblxuKyAqIEB3cml0ZTogd2hldGhlciB0aGUgUFRFIHNob3VsZCBiZSBpbnN0YWxsZWQgd3JpdGFibGVcbisgKlxuKyAqIExpa2Ugdm1mX2luc2VydF9wZm4oKSwgZXhjZXB0IHRoYXQgQHdyaXRlIGFsbG93cyBpbnN0YWxsaW5nIGEgd3JpdGFibGVcbisgKiBQVEUgZXZlbiB3aGVuIEB2bWEgaXMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uLCBpLmUuIHdoZW4gaXQgaGFzIGFcbisgKiAucGFnZV9ta3dyaXRlKCkgb3IgLnBmbl9ta3dyaXRlKCkgY2FsbGJhY2sgYW5kIHZtYV9zZXRfcGFnZV9wcm90KCkgaGFzXG4rICogdGhlcmVmb3JlIGNsZWFyZWQgdGhlIHdyaXRlIGJpdCBmcm9tIEB2bWEtXHUwMDNldm1fcGFnZV9wcm90LlxuKyAqXG4rICogTm90ZSB0aGF0IG5laXRoZXIgb2YgdGhlc2UgY2FsbGJhY2tzIGlzIGludm9rZWQsIHNvIHRoZSBjYWxsZXIgbXVzdFxuKyAqIGl0c2VsZiBkbyB3aGF0ZXZlciB0aGV5IHdvdWxkIGhhdmUgZG9uZSBpZiBAd3JpdGUgaXMgdHJ1ZS5cbisgKlxuKyAqIENvbnRleHQ6IFByb2Nlc3MgY29udGV4dC4gIE1heSBhbGxvY2F0ZSB1c2luZyAlR0ZQX0tFUk5FTC5cbisgKiBSZXR1cm46IHZtX2ZhdWx0X3QgdmFsdWUuXG4rICovXG4rdm1fZmF1bHRfdCB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIsXG4rXHRcdFx0dW5zaWduZWQgbG9uZyBwZm4sIGJvb2wgd3JpdGUpXG4re1xuK1x0cmV0dXJuIF9fdm1mX2luc2VydF9wZm5fcHJvdCh2bWEsIGFkZHIsIHBmbiwgdm1hLVx1MDAzZXZtX3BhZ2VfcHJvdCwgd3JpdGUpO1xuK31cbitFWFBPUlRfU1lNQk9MKHZtZl9pbnNlcnRfcGZuX21rd3JpdGUpO1xuK1xuIHN0YXRpYyBib29sIHZtX21peGVkX29rKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHBmbixcbiBcdFx0XHRib29sIG1rd3JpdGUpXG4ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6MjAuNzU1OTI3ODA2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQxNzE4MjEwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBmb3IgV3JpdGVhYmxlIFBURSBJbnNlcnRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIHRoaXMgaXMgaW50ZXJlc3RpbmcuIEl0J3MgdG91Y2hpbmcgc29tZSBwcmV0dHkgZnVuZGFtZW50YWwgYXJlYXM6IHRoZSBEUk0gR0VNIHNobWVtIGhlbHBlciwgdGhlIFRUTSBCTyBWTSwgVk1XZ2Z4LCBhbmQgZXZlbiBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IChgbW0vbWVtb3J5LmNgKS4gVGhlIGtleSBzZWVtcyB0byBiZSB0aGVzZSBuZXcgZnVuY3Rpb25zLCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCBhbmQgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgLiBUaGV5J3JlIGJlaW5nIGludHJvZHVjZWQgdG8gaGFuZGxlIHNpdHVhdGlvbnMgd2hlcmUgd2UgbmVlZCB0byBpbnNlcnQgYSAqd3JpdGFibGUqIFBURSwgZXZlbiB3aGVuIHRoZSBWTUEgaXMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uIOKAkyB0aGF0IGAucGZuX21rd3JpdGVgIGNhbGxiYWNrIHNpdHVhdGlvbi4gUmlnaHQsIHRoZSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uIGlzc3VlLiBgdm1mX2luc2VydF9wZm5gIHdhcyBpbnN0YWxsaW5nIGEgcmVhZC1vbmx5IGVudHJ5IG9uIGEgd3JpdGUgZmF1bHQsIGhvcGluZyBmb3IgYSBzZWNvbmQgZmF1bHQgdG8gdHJpZ2dlciB0aGUgYC5wZm5fbWt3cml0ZWAgdXBncmFkZSwgYnV0IHRoYXQgd2Fzbid0IGFsd2F5cyBoYXBwZW5pbmcgaW4gc2NlbmFyaW9zIGxpa2UgZGlyZWN0IHBhZ2UgdGFibGUgd2Fsa3Mgd2l0aCBgZml4dXBfdXNlcl9mYXVsdGAuXG5cbkZpcnN0LCBsZXQncyBzZWUgaWYgdGhpcyBpcyBldmVuIHJlbGV2YW50IGFuZCBpZiBpdCdzIGdvaW5nIHRvIHdvcmsuIFllcywgdGhpcyBkZWZpbml0ZWx5IGhpdHMgc29tZSBjb3JlIE1NIGFuZCBEUk0gZHJpdmVyIGNvZGUuIEl0J3MgbW9kaWZ5aW5nIGNvZGUgaW4gcGxhY2VzIHRoYXQgYXJlIGNyaXRpY2FsIHRvIERSTSBkcml2ZXJzLCBpbmNsdWRpbmcgdmdlbSwgdmlydGlvLWdwdSwgYW5kIHZtd2dmeCwgYW5kIHRoZSBjb21tb24gc2htZW0gaGVscGVyLiBgZHJtX2dlbV9zaG1lbV9oZWxwZXIuY2AgaXMgaGVhdmlseSB1c2VkLCBhcyBpcyBgdHRtX2JvX3ZtLmNgLCBzbyBhIGZpeCBoZXJlIGhhcyB0aGUgcG90ZW50aWFsIGZvciBicm9hZCBpbXBhY3QuXG5cbk5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJdCBsb29rcyBsaWtlIHdlJ3JlIGRlYWxpbmcgd2l0aCBgQ09ORklHX0RSTWAsIGBDT05GSUdfRFJNX1ZNV0dGWGAsIGBDT05GSUdfRFJNX1RUTWAsIGFuZCBgQ09ORklHX0RSTV9HRU1fU0hNRU1fSEVMUEVSYC4gV2FpdCwgYGRybV9nZW1fc2htZW1faGVscGVyYCBpcyBzZWxlY3RlZCBieSAqYSBsb3QqIG9mIGRyaXZlcnMuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvZ3B1L2RybS9gIHRvIGJlIGNlcnRhaW4uIEdvdHRhIGJlIHByZWNpc2UgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI0MywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEyOjI3LjE3MzExMjUyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMTcwNjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEUk1fVk1XR0ZYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnOjI6Y29uZmlnIERSTV9WTVdHRlhcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRFJNIGRyaXZlciBmb3IgVk13YXJlIFZpcnR1YWwgR1BVXFxcIlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTE5LVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzoyMDpjb25maWcgRFJNX1ZNV0dGWF9NS1NTVEFUU1xcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZy0yMS1cXHRib29sIFxcXCJFbmFibGUgbWtzR3Vlc3RTdGF0cyBpbnN0cnVtZW50YXRpb24gb2Ygdm13Z2Z4IGJ5IGRlZmF1bHRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEyOjI3LjIyNTI5MDQ0NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2Njg0NDEzMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHJvbGUgb2YgdGhlIHRoaW5raW5nIHByb2Nlc3MgZGVzY3JpYmVkOlxuXG4qKkludmVzdGlnYXRpbmcgR0VNX1NITUVNX0hFTFBFUiBpbiB0aGUgRFJNIEtjb25maWcqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB3b3JrLiBGaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYEdFTV9TSE1FTV9IRUxQRVJgIHRoaW5nLiBXaGVyZSB3b3VsZCB0aGUgZGVmaW5pdGlvbiBvZiB0aGF0IGJlLCBpbiB0aGUgdmFzdCBMaW51eCBrZXJuZWwgY29kZWJhc2U/IExldCdzIHN0YXJ0IHdpdGggdGhlIG1vc3QgbG9naWNhbCBwbGFjZSwgdGhlIGhlYXJ0IG9mIHRoZSBncmFwaGljcyBkcml2ZXIgaW5mcmFzdHJ1Y3R1cmU6IGBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZ2AuIFRoYXQncyB3aGVyZSBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIERpcmVjdCBSZW5kZXJpbmcgTWFuYWdlciAoRFJNKSBkcml2ZXJzIGFyZSBsaWtlbHkgZGVmaW5lZC4gSSBuZWVkIHRvIGRlbHZlIGludG8gdGhhdCBLY29uZmlnIGZpbGUgYW5kIHNlZSB3aGF0IGluZm9ybWF0aW9uIGl0IGhvbGRzIHJlZ2FyZGluZyBgR0VNX1NITUVNX0hFTFBFUmAuIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjQwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6MjkuODkzNzM0MjE3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTczMzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEUk1fR0VNX1NITUVNX0hFTFBFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0yNjA9Y29uZmlnIERSTV9HRU1fRE1BX0hFTFBFUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjY4LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI2OTpjb25maWcgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yNzAtXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6MjkuOTM5OTE0MTQ0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk3NTM4MTE0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBhIFRyaXN0YXRlIFNlbGVjdG9yKipcblxuQWxyaWdodCwgc28gd2UndmUgZ290IGEgdHJpc3RhdGUgaGVyZSwgYW5kIGl0IHNlZW1zIHRvIGJlIGRyaXZlbiBieSBzb21ldGhpbmcgZXh0ZXJuYWwsIHNvbWUgb3RoZXIgcGllY2Ugb2YgdGhlIHN5c3RlbSDigJMgZHJpdmVycywgcHJvYmFibHkuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIHdobydzIGluIGNoYXJnZSBvZiBzZWxlY3RpbmcgdGhpcyB0aGluZz9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCB0aGUgZGVwZW5kZW5jaWVzLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoaXMgdHJpc3RhdGUgYW5kIHBpbnBvaW50IHRoZSBzZWxlY3Qgc2lnbmFsLiBXaGVyZSBpcyBpdCBjb21pbmcgZnJvbT8gV2hhdCBhcmUgdGhlIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZSBkaWZmZXJlbnQgc3RhdGVzPyBJcyBpdCBhIHNpbXBsZSBzdGF0ZSBtYWNoaW5lPyBJcyB0aGVyZSBhIGJpdCBvZiBhc3luY2hyb25vdXMgbG9naWMgYXQgcGxheT8gVGhpcyBpcyBob3cgSSdsbCBiZWdpbiBteSBpbnZlc3RpZ2F0aW9uLiBMZXQncyBzZWUgd2hhdCdzIGFjdHVhbGx5IGFzc2VydGluZyB0aGVzZSBzdGF0ZXMgYW5kIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTU4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6MzIuOTE1Mjk3ODA2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4Njc0NDQ4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0yNzg9Y29uZmlnIFJVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI4MC1cXHRkZXBlbmRzIG9uIERSTSBcXHUwMDI2XFx1MDAyNiBNTVVcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyODE6XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjgyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnPTYwPWNvbmZpZyBEUk1fS1VOSVRfVEVTVFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctNjktXFx0c2VsZWN0IERSTV9FWFBPUlRfRk9SX1RFU1RTIGlmIG1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zzo3MDpcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy5kZWJ1Zy03MS1cXHRzZWxlY3QgRFJNX0tVTklUX1RFU1RfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FzdC9LY29uZmlnPTI9Y29uZmlnIERSTV9BU1RcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hc3QvS2NvbmZpZy01LVxcdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxcbmRyaXZlcnMvZ3B1L2RybS9hc3QvS2NvbmZpZzo2OlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9hc3QvS2NvbmZpZy03LVxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2d1ZC9LY29uZmlnPTM9Y29uZmlnIERSTV9HVURcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ndWQvS2NvbmZpZy04LVxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9ndWQvS2NvbmZpZzo5OlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9ndWQvS2NvbmZpZy0xMC1cXHRzZWxlY3QgQkFDS0xJR0hUX0NMQVNTX0RFVklDRVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2h5cGVydi9LY29uZmlnPTI9Y29uZmlnIERSTV9IWVBFUlZcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9oeXBlcnYvS2NvbmZpZy02LVxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9oeXBlcnYvS2NvbmZpZzo3OlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9oeXBlcnYvS2NvbmZpZy04LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9pbWFnaW5hdGlvbi9LY29uZmlnPTQ9Y29uZmlnIERSTV9QT1dFUlZSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vS2NvbmZpZy0xMS1cXHRzZWxlY3QgRFJNX0VYRUNcXG5kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vS2NvbmZpZzoxMjpcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vaW1hZ2luYXRpb24vS2NvbmZpZy0xMy1cXHRzZWxlY3QgRFJNX1NDSEVEXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbGltYS9LY29uZmlnPTQ9Y29uZmlnIERSTV9MSU1BXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbGltYS9LY29uZmlnLTExLSAgICAgICBzZWxlY3QgRFJNX1NDSEVEXFxuZHJpdmVycy9ncHUvZHJtL2xpbWEvS2NvbmZpZzoxMjogICAgICAgc2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL2xpbWEvS2NvbmZpZy0xMy0gICAgICAgc2VsZWN0IFBNX0RFVkZSRVFcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL0tjb25maWc9Mj1jb25maWcgRFJNX01HQUcyMDBcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL0tjb25maWctNS1cXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cXG5kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9LY29uZmlnOjY6XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvS2NvbmZpZy03LVxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L0tjb25maWc9Mz1jb25maWcgRFJNX1BBTkZST1NUXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvS2NvbmZpZy0xMS1cXHRzZWxlY3QgSU9NTVVfSU9fUEdUQUJMRV9MUEFFXFxuZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L0tjb25maWc6MTI6XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L0tjb25maWctMTMtXFx0c2VsZWN0IFBNX0RFVkZSRVFcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zaXRyb25peC9LY29uZmlnPTE9Y29uZmlnIERSTV9TVDc1NzFcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zaXRyb25peC9LY29uZmlnLTQtXFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXFxuZHJpdmVycy9ncHUvZHJtL3NpdHJvbml4L0tjb25maWc6NTpcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vc2l0cm9uaXgvS2NvbmZpZy02LVxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3NpdHJvbml4L0tjb25maWc9NzE9Y29uZmlnIERSTV9TVDc5MjBcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zaXRyb25peC9LY29uZmlnLTczLVxcdGRlcGVuZHMgb24gRFJNIFxcdTAwMjZcXHUwMDI2IFNQSSBcXHUwMDI2XFx1MDAyNiBNTVVcXG5kcml2ZXJzL2dwdS9kcm0vc2l0cm9uaXgvS2NvbmZpZzo3NDpcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vc2l0cm9uaXgvS2NvbmZpZy03NS1cXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zb2xvbW9uL0tjb25maWc9MT1jb25maWcgRFJNX1NTRDEzMFhcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zb2xvbW9uL0tjb25maWctNS1cXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cXG5kcml2ZXJzL2dwdS9kcm0vc29sb21vbi9LY29uZmlnOjY6XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3NvbG9tb24vS2NvbmZpZy03LVxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWc9MTA9Y29uZmlnIERSTV9DT1JFQk9PVERSTVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctMTUtXFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWc6MTY6XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctMTctXFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZz0yNj1jb25maWcgRFJNX0VGSURSTVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctMzAtXFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWc6MzE6XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctMzItXFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZz00Mj1jb25maWcgRFJNX09GRFJNXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy00Ni1cXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZzo0NzpcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy00OC1cXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnPTU3PWNvbmZpZyBEUk1fU0lNUExFRFJNXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy02MS1cXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZzo2MjpcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vc3lzZmIvS2NvbmZpZy02My1cXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9zeXNmYi9LY29uZmlnPTc2PWNvbmZpZyBEUk1fVkVTQURSTVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctODAtXFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWc6ODE6XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3N5c2ZiL0tjb25maWctODItXFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnPTM9Y29uZmlnIERSTV9BUFBMRVRCRFJNXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTYtXFx0ZGVwZW5kcyBvbiBYODYgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZzo3OlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctOC1cXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc9Mjc9Y29uZmlnIERSTV9CT0NIU1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy0zMC1cXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnOjMxOlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctMzItXFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnPTM5PWNvbmZpZyBEUk1fQ0lSUlVTX1FFTVVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctNDMtXFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZzo0NDpcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTQ1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc9NTk9Y29uZmlnIERSTV9HTTEyVTMyMFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy02My1cXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnOjY0OlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctNjUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZz04NT1jb25maWcgRFJNX1BJWFBBUEVSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTg5LSAgICAgICAgc2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZzo5MDogICAgICAgIHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctOTEtICAgICAgICBzZWxlY3QgRFJNX0tNU19IRUxQRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS91ZGwvS2NvbmZpZz0yPWNvbmZpZyBEUk1fVURMXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdWRsL0tjb25maWctOC1cXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cXG5kcml2ZXJzL2dwdS9kcm0vdWRsL0tjb25maWc6OTpcXHRzZWxlY3QgRFJNX0dFTV9TSE1FTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vdWRsL0tjb25maWctMTAtXFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdjNkL0tjb25maWc9Mj1jb25maWcgRFJNX1YzRFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3YzZC9LY29uZmlnLTgtXFx0c2VsZWN0IERSTV9TQ0hFRFxcbmRyaXZlcnMvZ3B1L2RybS92M2QvS2NvbmZpZzo5OlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS92M2QvS2NvbmZpZy0xMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdmdlbS9LY29uZmlnPTI9Y29uZmlnIERSTV9WR0VNXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdmdlbS9LY29uZmlnLTQtXFx0ZGVwZW5kcyBvbiBEUk0gXFx1MDAyNlxcdTAwMjYgTU1VXFxuZHJpdmVycy9ncHUvZHJtL3ZnZW0vS2NvbmZpZzo1OlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS92Z2VtL0tjb25maWctNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdmlydGlvL0tjb25maWc9Mj1jb25maWcgRFJNX1ZJUlRJT19HUFVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vS2NvbmZpZy03LVxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vS2NvbmZpZzo4OlxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS92aXJ0aW8vS2NvbmZpZy05LVxcdHNlbGVjdCBWSVJUSU9fRE1BX1NIQVJFRF9CVUZGRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc9Mz1jb25maWcgRFJNX1ZLTVNcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWctNy1cXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnOjg6XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy05LVxcdHNlbGVjdCBDUkMzMlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMjozMy4zMDIwNDk1MjFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQzOTkxNDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gRFJNIE1vZHVsZSBTZWxlY3Rpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IGVuYWJsaW5nIGEgZmV3IERSTSBtb2R1bGVzIGhlcmU6IGBEUk1fVkdFTWAsIGBEUk1fVklSVElPX0dQVWAsIGBEUk1fVktNU2AsIGFuZCBgRFJNX1ZNV0dGWGAuIFNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHN0YXJ0aW5nIHBvaW50LCBnaXZlbiB0aGUgZGlmZmVyZW50IHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB0aGV5IHN1cHBvcnQuIEFjdHVhbGx5LCBob2xkIG9uIOKAkyBJJ20gdGhpbmtpbmcgYWJvdXQgZnV6emluZyBub3cuIEkga25vdyB0aGF0IGBEUk1fVkdFTWAgYW5kIGBEUk1fVktNU2AgYXJlIHBhcnRpY3VsYXJseSB2YWx1YWJsZSBpbiB0aGF0IGNvbnRleHQgZHVlIHRvIHRoZWlyIGFyY2hpdGVjdHVyZXMuIExldCdzIG1ha2Ugc3VyZSB0aGF0IGBEUk1fVFRNYCBpcyBzZWxlY3RlZCB3aXRoIHRoZW0gdG9vLCBhcyB0aGF0IGNvdWxkIGNhdXNlIGlzc3Vlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0NzEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMjozNi4yNDYwNDQzODVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTMxNTc1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgRFJNX1RUTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9LY29uZmlnPTI1MD1jb25maWcgRFJNX1RUTV9IRUxQRVJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI1Mi1cXHRkZXBlbmRzIG9uIERSTVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI1MzpcXHRzZWxlY3QgRFJNX1RUTVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI1NC1cXHRzZWxlY3QgRFJNX0tNU19IRUxQRVIgaWYgRFJNX0ZCREVWX0VNVUxBVElPTlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWc9ODY9Y29uZmlnIERSTV9UVE1fS1VOSVRfVEVTVFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctODgtXFx0ZGVwZW5kcyBvbiBEUk0gXFx1MDAyNlxcdTAwMjYgS1VOSVQgXFx1MDAyNlxcdTAwMjYgTU1VIFxcdTAwMjZcXHUwMDI2IChVTUwgfHwgQ09NUElMRV9URVNUKVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLmRlYnVnOjg5OlxcdHNlbGVjdCBEUk1fVFRNXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWcuZGVidWctOTAtXFx0c2VsZWN0IERSTV9CVUREWVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZz0zPWNvbmZpZyBEUk1fQU1ER1BVXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTE1LVxcdHNlbGVjdCBEUk1fU0NIRURcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnOjE2OlxcdHNlbGVjdCBEUk1fVFRNXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvS2NvbmZpZzoxNzpcXHRzZWxlY3QgRFJNX1RUTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9LY29uZmlnLTE4LVxcdHNlbGVjdCBQT1dFUl9TVVBQTFlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvS2NvbmZpZz0yPWNvbmZpZyBEUk1fSElTSV9ISUJNQ1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2hpc2lsaWNvbi9oaWJtYy9LY29uZmlnLTktXFx0c2VsZWN0IERSTV9WUkFNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvS2NvbmZpZzoxMDpcXHRzZWxlY3QgRFJNX1RUTVxcbmRyaXZlcnMvZ3B1L2RybS9oaXNpbGljb24vaGlibWMvS2NvbmZpZzoxMTpcXHRzZWxlY3QgRFJNX1RUTV9IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vaGlzaWxpY29uL2hpYm1jL0tjb25maWctMTItXFx0c2VsZWN0IEkyQ1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZz0yPWNvbmZpZyBEUk1fSTkxNVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy0zOS1cXHRzZWxlY3QgVk1BUF9QRk5cXG5kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnOjQwOlxcdHNlbGVjdCBEUk1fVFRNXFxuZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZy00MS1cXHRzZWxlY3QgRFJNX0JVRERZXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vS2NvbmZpZz0zPWNvbmZpZyBEUk1fTE9PTkdTT05cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9LY29uZmlnLTgtXFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL2xvb25nc29uL0tjb25maWc6OTpcXHRzZWxlY3QgRFJNX1RUTVxcbmRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9LY29uZmlnOjEwOlxcdHNlbGVjdCBEUk1fVFRNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9sb29uZ3Nvbi9LY29uZmlnLTExLVxcdHNlbGVjdCBJMkNcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWc9Mj1jb25maWcgRFJNX05PVVZFQVVcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWctMTItXFx0c2VsZWN0IERSTV9LTVNfSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZzoxMzpcXHRzZWxlY3QgRFJNX1RUTVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L0tjb25maWc6MTQ6XFx0c2VsZWN0IERSTV9UVE1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZy0xNS1cXHRzZWxlY3QgRFJNX0VYRUNcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZz0yPWNvbmZpZyBEUk1fUVhMXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vcXhsL0tjb25maWctNi1cXHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcXG5kcml2ZXJzL2dwdS9kcm0vcXhsL0tjb25maWc6NzpcXHRzZWxlY3QgRFJNX1RUTVxcbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZzo4OlxcdHNlbGVjdCBEUk1fVFRNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZy05LVxcdHNlbGVjdCBEUk1fRVhFQ1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnPTM9Y29uZmlnIERSTV9SQURFT05cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZy0xMi1cXHRzZWxlY3QgRFJNX1NVQkFMTE9DX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZzoxMzogICAgICAgIHNlbGVjdCBEUk1fVFRNXFxuZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9LY29uZmlnOjE0OlxcdHNlbGVjdCBEUk1fVFRNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9yYWRlb24vS2NvbmZpZy0xNS1cXHRzZWxlY3QgRkJfSU9NRU1fSEVMUEVSUyBpZiBEUk1fRkJERVZfRU1VTEFUSU9OXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL0tjb25maWc9Mj1jb25maWcgRFJNX1ZCT1hWSURFT1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnLTctXFx0c2VsZWN0IERSTV9WUkFNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vS2NvbmZpZzo4OlxcdHNlbGVjdCBEUk1fVFRNXFxuZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnOjk6XFx0c2VsZWN0IERSTV9UVE1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnLTEwLVxcdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnPTI9Y29uZmlnIERSTV9WTVdHRlhcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZy02LVxcdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzo3OlxcdHNlbGVjdCBEUk1fVFRNXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnOjg6XFx0c2VsZWN0IERSTV9UVE1fSEVMUEVSXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTktXFx0c2VsZWN0IE1BUFBJTkdfRElSVFlfSEVMUEVSU1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3hlL0tjb25maWc9Mj1jb25maWcgRFJNX1hFXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZy0zOC1cXHRzZWxlY3QgVk1BUF9QRk5cXG5kcml2ZXJzL2dwdS9kcm0veGUvS2NvbmZpZzozOTpcXHRzZWxlY3QgRFJNX1RUTVxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnOjQwOlxcdHNlbGVjdCBEUk1fVFRNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS94ZS9LY29uZmlnLTQxLVxcdHNlbGVjdCBEUk1fRVhFQ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMjozNi43MDczNjYxMDZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzNTAwNDM2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRFJNIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBzZWUgd2UncmUgZW5hYmxpbmcgYSBidW5jaCBvZiBEUk0gZHJpdmVyczogRFJNX1ZHRU0sIERSTV9WS01TLCBEUk1fUVhMLCBEUk1fVkJPWFZJREVPLCBhbmQgRFJNX1ZNV0dGWC4gVGhlc2UgYWxsIHNlZW0gdG8gZGVwZW5kIG9uIERSTV9UVE0uIE1ha2VzIHNlbnNlLiBOb3csIGxldCdzIGxvb2sgYXQgdGhlIGZ1bmN0aW9uIG1vZGlmaWNhdGlvbnMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY29uZmlndXJhdGlvbi5cblxuUmlnaHQsIEknbSBzZWVpbmcgY2hhbmdlcyBpbjogYGRybV9nZW1fc2htZW1fcmVjb3JkX21rd3JpdGVgLCBgdHJ5X2luc2VydF9wZm5gLCBgZHJtX2dlbV9zaG1lbV9hbnlfZmF1bHRgLCBgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkYCwgYHZtd19ib19kaXJ0eV9ta3dyaXRlYCwgYHZtd19ib192bV9ta3dyaXRlYCwgYHZtd19ib192bV9mYXVsdGAsIGB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlYCwgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAsIGB2bWZfaW5zZXJ0X3Bmbl9wcm90YCwgYW5kIGB2bWZfaW5zZXJ0X3BmbmAuIFRoYXQncyBhIGRlY2VudC1zaXplZCBsaXN0OyBkZWZpbml0ZWx5IGludm9sdmluZyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgZmF1bHQgaGFuZGxpbmcuXG5cbkhtbSwgd2FpdCBhIHNlY29uZC4uLiBgdHJ5X2luc2VydF9wZm5gIGlzIGEgc3RhdGljIGZ1bmN0aW9uIGluIGBkcm1fZ2VtX3NobWVtX2hlbHBlci5jYC4gT2theSwgc28gaXQgbWlnaHQgYmUgYSBsb2NhbCBoZWxwZXIuIEFuZCwgaXMgYGRybV9nZW1fc2htZW1fYW55X2ZhdWx0YCBhbHNvIHN0YXRpYyBpbiBgZHJtX2dlbV9zaG1lbV9oZWxwZXIuY2A/IE5vLCBpdCBsb29rcyBsaWtlIGl0J3MganVzdCBjb250ZXh0dWFsbHkgcmVsZXZhbnQgaGVyZSwgbm90IGFjdHVhbGx5IG1vZGlmaWVkLiBPa2F5LCBsZXQncyB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGRybV9nZW1fc2htZW1faGVscGVyLmNgIHRvIHNlZSBob3cgdGhpcyBhZmZlY3RzIHRoZSBvdmVyYWxsIGZsb3cuIE5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgbWVtb3J5IG1hbmFnZW1lbnQgZnVuY3Rpb25zIGFyZSBiZWluZyBjaGFuZ2VkIGJ5IHRoaXMgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxMjcsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6NDEuNTQyMzcyODM5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mjk1MzY4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkcm1fZ2VtX3NobWVtX2FueV9mYXVsdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz02MDM9c3RhdGljIHZtX2ZhdWx0X3QgdHJ5X2luc2VydF9wZm4oc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHVuc2lnbmVkIGludCBvcmRlcixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTYyOC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo2Mjk6c3RhdGljIHZtX2ZhdWx0X3QgZHJtX2dlbV9zaG1lbV9hbnlfZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYsIHVuc2lnbmVkIGludCBvcmRlcilcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy02MzAte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9NjY5PXN0YXRpYyB2bV9mYXVsdF90IGRybV9nZW1fc2htZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNjcwLXtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo2NzE6XFx0cmV0dXJuIGRybV9nZW1fc2htZW1fYW55X2ZhdWx0KHZtZiwgMCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNjcyLX1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTcxND1jb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgZHJtX2dlbV9zaG1lbV92bV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03MTYtI2lmZGVmIENPTkZJR19BUkNIX1NVUFBPUlRTX1BNRF9QRk5NQVBcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo3MTc6XFx0Lmh1Z2VfZmF1bHQgPSBkcm1fZ2VtX3NobWVtX2FueV9mYXVsdCxcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03MTgtI2VuZGlmXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEyOjQxLjU4NTMzMDcwN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODI4NDUzODgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXZpbmcgaW50byB0aGUgTWVtb3J5IEZhdWx0KipcblxuQWxyaWdodCwgdGhlIGxpa2VseSBjdWxwcml0IGZvciB0aGlzIG1lbW9yeSBpc3N1ZSBpcyBgZHJtX2dlbV9zaG1lbV9mYXVsdGAuIFRoYXQncyB0aGUgZW50cnkgcG9pbnQgdG8gaW52ZXN0aWdhdGUsIGFuZCBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbXkgZGVlcCBkaXZlLiBJIGtub3cgdGhhdCBmdW5jdGlvbiB3ZWxsLiBOb3csIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkYCBmdW5jdGlvbiBpdCBjYWxscywgdG8gc2VlIHdoYXQga2luZCBvZiByZXNlcnZhdGlvbiBpcyB0YWtpbmcgcGxhY2UuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB3aGF0IHJlc291cmNlcyBhcmUgaW4gcGxheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMyNTcsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMjo0NC40MTM3ODgyNDhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzQxNDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInR0bV9ib192bV9mYXVsdF9yZXNlcnZlZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmM9MTYzPUVYUE9SVF9TWU1CT0wodHRtX2JvX3ZtX3Jlc2VydmUpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYy0xNjUtLyoqXFxuZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYzoxNjY6ICogdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkIC0gVFRNIGZhdWx0IGhlbHBlclxcbmRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMtMTY3LSAqIEB2bWY6IFRoZSBzdHJ1Y3Qgdm1fZmF1bHQgZ2l2ZW4gYXMgYXJndW1lbnQgdG8gdGhlIGZhdWx0IGNhbGxiYWNrXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jLTE4Mi0gKi9cXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jOjE4Mzp2bV9mYXVsdF90IHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZixcXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jLTE4NC1cXHRcXHRcXHRcXHQgICAgcGdwcm90X3QgcHJvdCxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMtMjgyLX1cXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jOjI4MzpFWFBPUlRfU1lNQk9MKHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZCk7XFxuZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm9fdm0uYy0yODQtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jPTMyMj12bV9mYXVsdF90IHR0bV9ib192bV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvX3ZtLmMtMzM1LVxcdGlmIChkcm1fZGV2X2VudGVyKGJvLVxcdTAwM2ViYXNlLmRldiwgXFx1MDAyNmlkeCkpIHtcXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jOjMzNjpcXHRcXHRyZXQgPSB0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWQodm1mLCBwcm90LCBUVE1fQk9fVk1fTlVNX1BSRUZBVUxUKTtcXG5kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib192bS5jLTMzNy1cXHRcXHRkcm1fZGV2X2V4aXQoaWR4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6NDQuNDU4NTM4Mjc1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODM5OTQ2MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24sIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBNZW1vcnkgTWFuYWdlbWVudCBGYXVsdCoqXG5cbk9rYXksIHNvIHdlJ3ZlIGhpdCBhIGB0dG1fYm9fdm1fZmF1bHRgLCB3aGljaCBpcyBvdXIgZW50cnkgcG9pbnQgaGVyZS4gTGV0J3MgZGlnIGRlZXBlci4gVGhlIGZpcnN0IHRoaW5ncyBJIG5lZWQgdG8gZXhhbWluZSBhcmUgYHZtd19ib192bV9ta3dyaXRlYCBhbmQgYHZtd19ib192bV9mYXVsdGAuIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBsaWtlbHkgaW52b2x2ZWQgaW4gaGFuZGxpbmcgdGhpcyB2aXJ0dWFsIG1lbW9yeSBmYXVsdCB3aXRoaW4gdGhlIGdyYXBoaWNzIGNvbnRleHQuIEkgc3VzcGVjdCB0aGUgY29yZSBpc3N1ZSBpcyBnb2luZyB0byBiZSB3aXRoaW4gdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlc2UgdHdvIGZ1bmN0aW9ucyBhbmQgaG93IHRoZXkncmUgbWFuYWdpbmcgYnVmZmVyIG9iamVjdCB3cml0ZSBhY2Nlc3MgYW5kIGZhdWx0IGhhbmRsaW5nIHdpdGhpbiB0aGUgVk13YXJlIGVudmlyb25tZW50LiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCB1bmRlcnN0YW5kIHRoZSBtZW1vcnkgbWFwcGluZyBwcm9jZXNzLiBJdCdzIGxpa2VseSByZWxhdGVkIHRvIGhvdyB0aGUgYnVmZmVyIG9iamVjdCBpcyBtYXBwZWQgZm9yIHdyaXRpbmcgYW5kIHRoZW4gdGhlIGZhdWx0IGhhbmRsaW5nIHRoYXQga2lja3MgaW4gd2hlbiBhIHdyaXRlIGF0dGVtcHQgaXMgbWFkZS4gVGhlIGludGVycGxheSBiZXR3ZWVuIHRoZXNlIHR3byBmdW5jdGlvbnMgd2lsbCBiZSB0aGUgY3J1eCBvZiB0aGUgcHJvYmxlbS4gVGltZSB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzOTgzLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6NDguMTQyNTM1NTcyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTMxNjA3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2bXdfYm9fdm1fbWt3cml0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jPTQwMT1zdGF0aWMgdm1fZmF1bHRfdCB2bXdfYm9fZGlydHlfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZiwgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYy00MjAtXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jOjQyMTp2bV9mYXVsdF90IHZtd19ib192bV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYy00MjIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMjo0OC4xODc4NTgwODlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4NTE5NTg4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgdm13X2JvX3ZtX2ZhdWx0YCBQYXRoKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgYHZtd19ib192bV9mYXVsdGAgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbnRhbCBtYXAgb2YgaG93IHRoaXMgdGhpbmcgb3BlcmF0ZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IG1lbnRhbGx5IHJlY29uc3RydWN0IHRoZSBleGVjdXRpb24gcGF0aC4gV2hhdCBhcmUgdGhlIGxpa2VseSB0cmlnZ2Vycz8gSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCB0aGUgdXN1YWwgc3VzcGVjdHM6IG1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9ucyB3aXRoaW4gYSBndWVzdCBWTSwgcG90ZW50aWFsIGlzc3VlcyB3aXRoIGJ1ZmZlciBvYmplY3RzIChCT3MpIG1hcHBpbmcsIGFuZCB0aGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaG9zdCdzIG1lbW9yeSBtYW5hZ2VtZW50LiBXaGVyZSBhcmUgdGhlIGxpa2VseSBwb2ludHMgb2YgY29udGVudGlvbiBvciBwb3RlbnRpYWwgYm90dGxlbmVja3M/IEFtIEkgbG9va2luZyBmb3IgYSBzdHJhaWdodGZvcndhcmQgc2VnbWVudGF0aW9uIGZhdWx0LCBvciBzb21ldGhpbmcgbW9yZSBudWFuY2VkIGxpa2UgYSBwYWdlIHRhYmxlIHdhbGsgaXNzdWU/IEkgc2hvdWxkIGtlZXAgYW4gZXllIG91dCBmb3IgcG90ZW50aWFsIHJhY2VzIG9yIGxvY2sgY29udGVudGlvbiBwb2ludHMgd2l0aGluIHRoZSBzdXJyb3VuZGluZyBWTSBvciBob3N0IGNvZGUgcGF0aHMuIEEgcXVpY2sgbWVudGFsIHdhbGt0aHJvdWdoIG9mIHRoZSBjb2RlJ3MgY2FsbCBzdGFjayBpcyBpbiBvcmRlci4gTGV0J3Mgc2VlIGlmIHRoaXMgcG9pbnRzIHRvd2FyZHMgYSBzcGVjaWZpYyBhcmVhLCBvciBpZiB0aGlzIGZ1bmN0aW9uIGlzIGJlaGF2aW5nIGFzIGV4cGVjdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDQ1MiwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEyOjUxLjU3MzA1NjM5NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM3ODc4ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidm13X2JvX3ZtX2ZhdWx0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmM9NDIxPXZtX2ZhdWx0X3Qgdm13X2JvX3ZtX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmMtNDQ0LVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYzo0NDU6dm1fZmF1bHRfdCB2bXdfYm9fdm1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jLTQ0Ni17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEyOjUxLjYxNjg0OTg1MloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDcxNDU1MzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIFBGTiBJbnNlcnRpb24gaW4gdGhlIFZNIEZyYW1ld29yayoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIG9uIHRoZSBjb3JlIG1lY2hhbmlzbXMgZm9yIHBoeXNpY2FsbHkgaW5zZXJ0aW5nIHBhZ2UgZnJhbWUgbnVtYmVycyAoUEZOcykgaW50byB0aGUgdmlydHVhbCBtZW1vcnkgZnJhbWV3b3JrLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBgdm1mX2luc2VydF9wZm5fbWt3cml0ZWAgYW5kIGBfX3ZtZl9pbnNlcnRfcGZuX3Byb3RgLiBUaGVzZSB0d28gZnVuY3Rpb25zIGFyZSB0aGUgbGlrZWx5IGxpbmNocGlucyB3aGVuIHdlJ3JlIGRlYWxpbmcgd2l0aCB3cml0ZSBwZXJtaXNzaW9ucyBhbmQgcHJvdGVjdGlvbiBhdHRyaWJ1dGVzIGR1cmluZyBQRk4gaW5zZXJ0aW9uLiBJIHdhbnQgdG8gcXVpY2tseSBlbnN1cmUgdGhhdCBJIGNhbiBhY2N1cmF0ZWx5IHJlbGF0ZSB0aGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZGV0YWlscyBiYWNrIHRvIHRoZSBicm9hZGVyIGNvbmNlcHR1YWwgbW9kZWwuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGFuZCBhY2NvdW50IGZvciBhbnkgcG90ZW50aWFsIHN1YnRsZSBpbnRlcmFjdGlvbnMgb3Igc2lkZSBlZmZlY3RzIHRoZXkgbWlnaHQgZXhoaWJpdCwgZXNwZWNpYWxseSBpZiB0aGVyZSdzIGFueSB0cmlja3kgbG9ja2luZyBvciBhdG9taWNpdHkgaW52b2x2ZWQgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgaW4gdGhpcyBjb250ZXh0LiBUaW1lIHRvIHJlZnJlc2ggYW5kIGRpc3NlY3QgdGhlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ4ODYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMjo1NC42ODgzMDcyMjdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMjM4NjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZtZl9pbnNlcnRfcGZuX21rd3JpdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbWVtb3J5LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWVtb3J5LmM9MjgxND1FWFBPUlRfU1lNQk9MKHZtZl9pbnNlcnRfcGZuKTtcXG4tLVxcbm1tL21lbW9yeS5jLTI4MTYtLyoqXFxubW0vbWVtb3J5LmM6MjgxNzogKiB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlIC0gaW5zZXJ0IHNpbmdsZSBwZm4gaW50byB1c2VyIHZtYSwgcG9zc2libHkgd3JpdGFibGVcXG5tbS9tZW1vcnkuYy0yODE4LSAqIEB2bWE6IHVzZXIgdm1hIHRvIG1hcCB0b1xcbi0tXFxubW0vbWVtb3J5LmMtMjgzMy0gKi9cXG5tbS9tZW1vcnkuYzoyODM0OnZtX2ZhdWx0X3Qgdm1mX2luc2VydF9wZm5fbWt3cml0ZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgdW5zaWduZWQgbG9uZyBhZGRyLFxcbm1tL21lbW9yeS5jLTI4MzUtXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBwZm4sIGJvb2wgd3JpdGUpXFxuLS1cXG5tbS9tZW1vcnkuYy0yODM4LX1cXG5tbS9tZW1vcnkuYzoyODM5OkVYUE9SVF9TWU1CT0wodm1mX2luc2VydF9wZm5fbWt3cml0ZSk7XFxubW0vbWVtb3J5LmMtMjg0MC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTI6NTQuNzMxNTUxOTY0WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MDEyNzU0NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEtlcm5lbCBGYXVsdCBIYW5kbGVycyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucywgYW5kIHRoZXkncmUgYWxsIG1hcmtlZCBhcyBgRVhQT1JUX1NZTUJPTGAsIHdoaWNoIGltbWVkaWF0ZWx5IGdyYWJzIG15IGF0dGVudGlvbi4gVGhhdCBtZWFucyB0aGV5J3JlIGNvcmUgZW5vdWdoIHRvIGJlIGV4cG9ydGVkIGZvciB1c2UgaW4gb3RoZXIgbW9kdWxlcywgd2hpY2ggb2Z0ZW4gaW5kaWNhdGVzIHRoZXkncmUgcGFydCBvZiBhIGNyaXRpY2FsIHBhdGggb3IgY29tbW9ubHkgdXNlZCBzdWJzeXN0ZW0uIFRoZSBlbnRyeSBwb2ludHMgSSBzZWUgYXJlOiBgZHJtX2dlbV9zaG1lbV9mYXVsdGAsIGB0dG1fYm9fdm1fZmF1bHRgLCBgdm13X2JvX3ZtX21rd3JpdGVgLCBgdm13X2JvX3ZtX2ZhdWx0YCwgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgLCBhbmQgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAuIFdhaXQsIEkgd2FzIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBmYXVsdCBoYW5kbGVycy5cblxuT2theSwgbGV0J3MganVzdCBmb2N1cyBvbiB0aGUgZmF1bHQgaGFuZGxlcnMuIEknbSBnb2luZyB0byBzZXQgYXNpZGUgdGhlIG90aGVycyBmb3Igbm93LiBTbyB3ZSdyZSByZWFsbHkgbG9va2luZyBhdDogYGRybV9nZW1fc2htZW1fZmF1bHRgLCBgdHRtX2JvX3ZtX2ZhdWx0YCwgYHZtd19ib192bV9ta3dyaXRlYCwgYHZtd19ib192bV9mYXVsdGAsIGB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlYCwgYW5kIGBfX3ZtZl9pbnNlcnRfcGZuX3Byb3RgLiBJIG1pZ2h0IGNpcmNsZSBiYWNrIHRvIHRoYXQgbGFzdCBvbmUgbGF0ZXIsIGJ1dCBsZXQncyBiZWdpbiBieSB6ZXJvaW5nIGluIG9uIGBkcm1fZ2VtX3NobWVtX2ZhdWx0YCBhcyBhIGdvb2Qgc3ltYm9sIHRvIHN0YXJ0IHdpdGggYW5kIHNlZSB3aGVyZSB0aGF0IHRha2VzIG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM4MSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMjo1OS4yMzI4MzAwODlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDY5MDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRybV9nZW1fc2htZW1fZmF1bHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9NjI5PXN0YXRpYyB2bV9mYXVsdF90IGRybV9nZW1fc2htZW1fYW55X2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mLCB1bnNpZ25lZCBpbnQgb3JkZXIpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy02NjgtXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6NjY5OnN0YXRpYyB2bV9mYXVsdF90IGRybV9nZW1fc2htZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNjcwLXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTcxND1jb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgZHJtX2dlbV9zaG1lbV92bV9vcHMgPSB7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6NzE1OlxcdC5mYXVsdCA9IGRybV9nZW1fc2htZW1fZmF1bHQsXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNzE2LSNpZmRlZiBDT05GSUdfQVJDSF9TVVBQT1JUU19QTURfUEZOTUFQXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEyOjU5LjI3NjMwNjc5NloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzY3OTE3NDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBGYXVsdCBIYW5kbGVyKipcblxuQWxyaWdodCwgeWVwLCB0aGF0IGNvbmZpcm1zIGl0IOKAkyB0aGlzIGlzIGEgZmF1bHQgaGFuZGxlci4gTm90aGluZyBzdXJwcmlzaW5nIHRoZXJlLCBidXQgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBXYWl0LCBob2xkIG9uIGEgc2Vj4oCmIEkgc2VlIGBkcm1fZ2VtX3NobWVtX2ZhdWx0YCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gT2theSwgdGhhdCdzIHNvbWV3aGF0IGludGVyZXN0aW5nLiBUaGF0IG1lYW5zIGl04oCZcyBvbmx5IHZpc2libGUgd2l0aGluIHRoaXMgcGFydGljdWxhciBjb21waWxhdGlvbiB1bml0LCB3aGljaCBtaWdodCBpbmZsdWVuY2UgaG93IHdlIG5lZWQgdG8gYXBwcm9hY2ggdW5kZXJzdGFuZGluZyBpdHMgaW50ZXJhY3Rpb24gd2l0aGluIHRoZSBicm9hZGVyIERSTSBmcmFtZXdvcmsuIEhtbS4uLiBsZXTigJlzIG5vdCBqdW1wIHRvIGFueSBjb25jbHVzaW9ucy4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwIGludG8gdGhhdCBzdGF0aWMgZGVjbGFyYXRpb24sIGl0J3Mgd29ydGggdGFraW5nIGEgcXVpY2sgbG9vayBhcm91bmQuIExldCdzIGNoZWNrIGZvciBhbnkgKm90aGVyKiBleHBvcnRlZCBmdW5jdGlvbnMgaW4gdGhpcyBjb2RlLiBJdCdsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgaGFuZGxlciBpcyBtZWFudCB0byBiZSB1c2VkLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIHBhcnRpY3VsYXIgaGFuZGxlciBpcyBleHBvc2VkIHRvLCBvciBhY2Nlc3NlZCBieSwgdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCBtb2R1bGVzLiBMZXQncyBzZWUgd2hhdCBlbHNlIHRoaXMgZmlsZSBvZmZlcnMuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYxOTIsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMzowMi42NDQyMjgwMjNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMzY2NTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKmRybV9nZW1fc2htZW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9MTA5PWludCBkcm1fZ2VtX3NobWVtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSwgc2l6ZV90IHNpemUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xMTItfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjExMzpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX2luaXQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTExNC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTE1NT1zdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKmRybV9nZW1fc2htZW1fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMTU4LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzoxNTk6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9jcmVhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTE2MC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTE3ND12b2lkIF9fZHJtX2dlbV9zaG1lbV9mcmVlX3NndF9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTE4Mi19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6MTgzOkVYUE9SVF9TWU1CT0xfR1BMKF9fZHJtX2dlbV9zaG1lbV9mcmVlX3NndF9sb2NrZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTE4NC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTE5Mj12b2lkIGRybV9nZW1fc2htZW1fcmVsZWFzZShzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMjE1LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzoyMTY6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9yZWxlYXNlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0yMTctXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0yMjU9dm9pZCBkcm1fZ2VtX3NobWVtX2ZyZWUoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTIyOS19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6MjMwOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fZnJlZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMjMxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9MjcyPXZvaWQgZHJtX2dlbV9zaG1lbV9wdXRfcGFnZXNfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0yOTEtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjI5MjpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX3B1dF9wYWdlc19sb2NrZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTI5My1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0yOTQ9aW50IGRybV9nZW1fc2htZW1fcGluX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMzEwLX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzozMTE6RVhQT1JUX1NZTUJPTChkcm1fZ2VtX3NobWVtX3Bpbl9sb2NrZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTMxMi1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0zMTM9dm9pZCBkcm1fZ2VtX3NobWVtX3VucGluX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMzE5LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzozMjA6RVhQT1JUX1NZTUJPTChkcm1fZ2VtX3NobWVtX3VucGluX2xvY2tlZCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMzIxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9MzMyPWludCBkcm1fZ2VtX3NobWVtX3BpbihzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMzQ5LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzozNTA6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9waW4pO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTM1MS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTM1OT12b2lkIGRybV9nZW1fc2htZW1fdW5waW4oc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTM3MS19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6MzcyOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fdW5waW4pO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTM3My1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTM4OT1pbnQgZHJtX2dlbV9zaG1lbV92bWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNDM5LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo0NDA6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV92bWFwX2xvY2tlZCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNDQxLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9NDU0PXZvaWQgZHJtX2dlbV9zaG1lbV92dW5tYXBfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy00NzMtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjQ3NDpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX3Z1bm1hcF9sb2NrZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTQ3NS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTUwMj1pbnQgZHJtX2dlbV9zaG1lbV9tYWR2aXNlX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBpbnQgbWFkdilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTUxMi19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6NTEzOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fbWFkdmlzZV9sb2NrZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTUxNC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz01MTU9dm9pZCBkcm1fZ2VtX3NobWVtX3B1cmdlX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNTQ0LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo1NDU6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9wdXJnZV9sb2NrZWQpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTU0Ni1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTU2ND1pbnQgZHJtX2dlbV9zaG1lbV9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy01NzQtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjU3NTpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX2R1bWJfY3JlYXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy01NzYtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz03MTQ9Y29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGRybV9nZW1fc2htZW1fdm1fb3BzID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNzIyLX07XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6NzIzOkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fdm1fb3BzKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03MjQtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz03MzY9aW50IGRybV9nZW1fc2htZW1fbW1hcChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTc3NC19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6Nzc1OkVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1fbW1hcCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtNzc2LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9NzgzPXZvaWQgZHJtX2dlbV9zaG1lbV9wcmludF9pbmZvKGNvbnN0IHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy03OTMtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjc5NDpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX3ByaW50X2luZm8pO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTc5NS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTgxMD1zdHJ1Y3Qgc2dfdGFibGUgKmRybV9nZW1fc2htZW1fZ2V0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy04MTctfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjgxODpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX2dldF9zZ190YWJsZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtODE5LVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9ODczPXN0cnVjdCBzZ190YWJsZSAqZHJtX2dlbV9zaG1lbV9nZXRfcGFnZXNfc2d0KHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy04ODUtfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjg4NjpFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX2dldF9wYWdlc19zZ3QpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTg4Ny1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTkwND1kcm1fZ2VtX3NobWVtX3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtOTIwLX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo5MjE6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9wcmltZV9pbXBvcnRfc2dfdGFibGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTkyMi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTkzMj1zdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmRybV9nZW1fc2htZW1fcHJpbWVfaW1wb3J0X25vX21hcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtOTc3LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzo5Nzg6RVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9wcmltZV9pbXBvcnRfbm9fbWFwKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy05NzktXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz05ODU9aW50IGRybV9nZW1fc2htZW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBzdHJ1Y3QgaW9zeXNfbWFwICptYXApXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy05OTctfVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jOjk5ODpFWFBPUlRfU1lNQk9MX0lGX0tVTklUKGRybV9nZW1fc2htZW1fdm1hcCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtOTk5LVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jPTEwMDA9dm9pZCBkcm1fZ2VtX3NobWVtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBzdHJ1Y3QgaW9zeXNfbWFwICptYXApXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xMDA3LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzoxMDA4OkVYUE9SVF9TWU1CT0xfSUZfS1VOSVQoZHJtX2dlbV9zaG1lbV92dW5tYXApO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jLTEwMDktXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM9MTAxMD1pbnQgZHJtX2dlbV9zaG1lbV9tYWR2aXNlKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0sIGludCBtYWR2KVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMTAyMi19XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmM6MTAyMzpFWFBPUlRfU1lNQk9MX0lGX0tVTklUKGRybV9nZW1fc2htZW1fbWFkdmlzZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMTAyNC1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYz0xMDI1PWludCBkcm1fZ2VtX3NobWVtX3B1cmdlKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYy0xMDM3LX1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYzoxMDM4OkVYUE9SVF9TWU1CT0xfSUZfS1VOSVQoZHJtX2dlbV9zaG1lbV9wdXJnZSk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMtMTAzOS0jZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTM6MDIuNjg2NjAzMThaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc5NjY2MjUyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgXCJXaGVyZSBhcmUgdGhlIHByaW1lIHRhcmdldHMgZm9yIGZ1enppbmcgaW4gdGhpcyBtZW1vcnkgbWFuYWdlbWVudCBjb250ZXh0P1wiIEkgc2VlIHRoYXQgYGRybV9nZW1fc2htZW1fbW1hcGAgaXMgZXhwb3J0ZWQsIGFuZCBjcml0aWNhbGx5LCBpdCBzZXRzIHVwIGB2bWEtXHUwMDNldm1fb3BzYCB0byBgXHUwMDI2ZHJtX2dlbV9zaG1lbV92bV9vcHNgLiBCaW5nbywgYGRybV9nZW1fc2htZW1fbW1hcGAgbG9va3MgbGlrZSBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LiBUaGVuLCBJIG5vdGljZWQgYHR0bV9ib192bV9mYXVsdF9yZXNlcnZlZGAgaXMgZXhwb3J0ZWQsIHRoYXQgZ29lcyBvbiB0aGUgbGlzdC5cblxuTmV4dCwgSSBub3RlZCB0aGF0IGB2bXdfYm9fdm1fbWt3cml0ZWAgYW5kIGB2bXdfYm9fdm1fZmF1bHRgIGFyZW4ndCAqZGlyZWN0bHkqIGV4cG9ydGVkLCBidXQgdGhleSdyZSBwYXJ0IG9mIGB2bXdfYm9fdm1fb3BzYCwgd2hpY2ggaXMgdXNlZCBpbiBgdm13X21tYXBgLiBUaGF0IHN1Z2dlc3RzIHRob3NlIGNvdWxkIGJlIGludGVyZXN0aW5nLCBldmVuIGlmIGluZGlyZWN0bHkgcmVhY2hhYmxlLiBBbHNvLCBJIHNlZSBgdm1mX2luc2VydF9wZm5fbWt3cml0ZWAgYW5kIGBfX3ZtZl9pbnNlcnRfcGZuX3Byb3RgIGFyZSBleHBvcnRlZCwgd2hpY2ggYXJlIHByb2JhYmx5IHByZXR0eSBjb3JlLCBhbmQgSSBzaG91bGQgc2VlIGlmIHRoZXkgYXJlIGluIGBtbS9tZW1vcnkuY2AuIFllcCwgdGhleSBhcmUuIFRoYXQncyBnb29kLlxuXG5Tbywgc3VtbWluZyB0aGlzIHVwLCB0aGUgZnVuY3Rpb25zIHRoYXQgSSB3YW50IHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nIGFyZTpcbiogICBgdm1mX2luc2VydF9wZm5fbWt3cml0ZWBcbiogICBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YFxuKiAgIGB0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWRgXG4qICAgYHZtd19ib192bV9ta3dyaXRlYFxuKiAgIGB2bXdfYm9fdm1fZmF1bHRgXG5cbldhaXQsIGhhbmcgb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBjb3JyZWN0LCBpdCBsb29rcyBsaWtlIGB2bXdfYm9fdm1fbWt3cml0ZWAgYW5kIGB2bXdfYm9fdm1fZmF1bHRgIGFyZW4ndCBzdGF0aWMgZnVuY3Rpb25zLCB0aGV5J3JlIGluIGB2bXdnZnhfcGFnZV9kaXJ0eS5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciB0aGV5J3JlIGFjdHVhbGx5IGV4cG9ydGVkLiBMZXQncyBsb29rIGludG8gdGhhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwODMsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTM6MDguNDgzMjY3NjQ0WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzIwMTI0OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qdm13X2JvX3ZtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS92bXdnZngvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMzowOC41MjY0NzgzODFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEwODcwMDcyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU2NvcGUgb2YgVGhlc2UgRnVuY3Rpb25zKipcblxuQWxyaWdodCwgc28gdGhlc2UgZnVuY3Rpb25zIGFyZW4ndCBleHBsaWNpdGx5IGV4cG9ydGVkLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gVGhleSdyZSBoYW5naW5nIG91dCB0aGVyZSBhcyBnbG9iYWwgZnVuY3Rpb25zIHdpdGhpbiB0aGUgbW9kdWxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIFwiT2theSwgbGV0J3MgZmlndXJlIG91dCBob3cgYnJvYWRseSB0aGVzZSBhcmUgYmVpbmcgdXRpbGl6ZWQuXCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgaW1wYWN0IGFuZCBpZiByZW1vdmluZyBvciBtb2RpZnlpbmcgdGhlbSB3b3VsZCBiZSBhIGJpZyBkZWFsLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZG8gYSB0aG9yb3VnaCBjb2RlIHNlYXJjaCBhbmQgcGlucG9pbnQgYWxsIHRoZSBjYWxsIHNpdGVzLiBJZGVudGlmeWluZyBldmVyeSBpbnN0YW5jZSB3aGVyZSB0aGV5J3JlIGludm9rZWQgd2lsbCBnaXZlIG1lIGEgY2xlYXIgcGljdHVyZSBvZiB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aWdodGx5IGNvdXBsZWQgdGhleSBhcmUgdG8gb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gSSBoYXZlIHRvIGFzc2VzcyB0aGVpciBpbXBhY3QgYmVmb3JlIEkgdG91Y2ggdGhlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA4OTcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMzoxMS42MzUxODE0NTRaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODA4MDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZtd19ib192bV9mYXVsdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaD0xMzkyPXZvaWQgdm13X2JvX2RpcnR5X3VubWFwKHN0cnVjdCB2bXdfYm8gKnZibyxcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaC0xMzkzLVxcdFxcdFxcdHBnb2ZmX3Qgc3RhcnQsIHBnb2ZmX3QgZW5kKTtcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaDoxMzk0OnZtX2ZhdWx0X3Qgdm13X2JvX3ZtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKTtcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaC0xMzk1LXZtX2ZhdWx0X3Qgdm13X2JvX3ZtX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZ2VtLmM9MTM1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3Qgdm13X3ZtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2dlbS5jLTEzNy1cXHQucGFnZV9ta3dyaXRlID0gdm13X2JvX3ZtX21rd3JpdGUsXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZ2VtLmM6MTM4OlxcdC5mYXVsdCA9IHZtd19ib192bV9mYXVsdCxcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9nZW0uYy0xMzktXFx0Lm9wZW4gPSB0dG1fYm9fdm1fb3BlbixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYz00MjE9dm1fZmF1bHRfdCB2bXdfYm9fdm1fbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3BhZ2VfZGlydHkuYy00NDQtXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfcGFnZV9kaXJ0eS5jOjQ0NTp2bV9mYXVsdF90IHZtd19ib192bV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9wYWdlX2RpcnR5LmMtNDQ2LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTM6MTEuNjgwOTk0NzQxWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NzE4MDkzNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgUmVsZXZhbnQgVmlydHVhbCBNZW1vcnkgRnVuY3Rpb25zKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGVzZSB2aXJ0dWFsIG1lbW9yeSBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgdGhvc2UgdXNlZCB3aXRoaW4gYHZtd192bV9vcHNgLiBMZXQncyBuYXJyb3cgZG93biB0aGUgZm9jdXMuIEkgbmVlZCB0byBsaXN0IHRoZSBrZXkgZnVuY3Rpb25zIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQuIEknbSBnb2luZyB0byBzdGFydCB3aXRoOlxuXG4qICAgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgXG4qICAgYF9fdm1mX2luc2VydF9wZm5fcHJvdGBcbiogICBgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkYFxuKiAgIGB2bXdfYm9fdm1fbWt3cml0ZWBcbiogICBgdm13X2JvX3ZtX2ZhdWx0YFxuXG5Ob3csIHdhaXQgYSBtaW51dGUuLi4gYGRybV9nZW1fc2htZW1fZmF1bHRgIGlzIHN0YXRpYywgYnV0IGBkcm1fZ2VtX3NobWVtX21tYXBgIGlzIGV4cG9ydGVkIGFuZCBzZXRzIHVwIHRoZSBgdm1fb3BzYC4gU2luY2UgdGhlIHByb21wdCBzcGVjaWZpZXMgYSBwcmVmZXJlbmNlIGZvciBub24tc3RhdGljIGVudHJ5cG9pbnRzLCBgZHJtX2dlbV9zaG1lbV9tbWFwYCBpcyBwb3RlbnRpYWxseSB1c2VmdWwsIG9yIGlmIHJlYWNoYWJsZSB0aHJvdWdoIHN5c2NhbGxzIGV2ZW4gYGRybV9nZW1fc2htZW1fZmF1bHRgLiBBY3R1YWxseSwgdGhlIHJlYWwgbG9naWMgY2hhbmdlIGlzIGluIGB0cnlfaW5zZXJ0X3BmbmAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBkcm1fZ2VtX3NobWVtX2FueV9mYXVsdGAgd2hpY2ggaXMgY2FsbGVkIGJ5IGBkcm1fZ2VtX3NobWVtX2ZhdWx0YC4gVGhpcyBzdGF0aWMgZnVuY3Rpb24gY2FuIGJlIGZ1enphYmxlIHZpYSBzeXNjYWxscywgc28gdGhpcyBtYXkgd29yayBmaW5lLiBVbHRpbWF0ZWx5LCBJIHNob3VsZCBmb2N1cyBvbiB0aGUgY29yZSBNTSBmdW5jdGlvbnM6IGB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlYCBhbmQgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAuIFRoZXkgYXJlIGNyaXRpY2FsIGZvciBpbnNlcnRpbmcgYW5kIG1hbmFnaW5nIHBhZ2UgZnJhbWUgbnVtYmVycyAoUEZOcykuXG5cbkknbGwgY2hlY2sgdG8gc2VlIGlmIHRob3NlIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQuIEdvb2QsIGJvdGggYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCBhcmUuXG5cbkFzIGZvciB0aGUgbmVjZXNzYXJ5IGtlcm5lbCBjb25maWd1cmF0aW9ucyB0byBlbmFibGUsIGhlcmUncyB3aGF0IEkndmUgaWRlbnRpZmllZDpcblxuKiAgIGBEUk1fVkdFTWBcbiogICBgRFJNX1ZLTVNgXG4qICAgYERSTV9WTVdHRlhgXG4qICAgYERSTV9RWExgXG4qICAgYERSTV9WQk9YVklERU9gXG4qICAgYERSTV9UVE1gXG4qICAgYERSTV9HRU1fU0hNRU1fSEVMUEVSYFxuXG5JIHJlYWxpemUgdGhhdCBgRFJNX1ZHRU1gIGFuZCBgRFJNX1ZLTVNgIHNlbGVjdCBgRFJNX0dFTV9TSE1FTV9IRUxQRVJgLCBhbmQgYERSTV9WTVdHRlhgLCBgRFJNX1FYTGAsIGFuZCBgRFJNX1ZCT1hWSURFT2Agc2VsZWN0IGBEUk1fVFRNYC4gU28sIGVuYWJsaW5nIGBEUk1fVkdFTWAsIGBEUk1fVktNU2AsIGBEUk1fVk1XR0ZYYCwgYERSTV9RWExgLCBhbmQgYERSTV9WQk9YVklERU9gIHNob3VsZCBiZSBzdWZmaWNpZW50LiBJJ2xsIGRvdWJsZS1jaGVjayBgRFJNX1ZNV0dGWGAgZm9yIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzIGp1c3QgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2MDgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTM6MTkuNDUyODA3MTM5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDQ5NDIzNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFJNX1ZNV0dGWFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzoyOmNvbmZpZyBEUk1fVk1XR0ZYXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkRSTSBkcml2ZXIgZm9yIFZNd2FyZSBWaXJ0dWFsIEdQVVxcXCJcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWc6MjA6Y29uZmlnIERSTV9WTVdHRlhfTUtTU1RBVFNcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctMjEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1rc0d1ZXN0U3RhdHMgaW5zdHJ1bWVudGF0aW9uIG9mIHZtd2dmeCBieSBkZWZhdWx0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMzoxOS41MDMzMDg0MDZaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjYyNjQ4NDcwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIHByb2NlZWQsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlLiBUaGUgZm9jdXMgaXMgb24gYERSTV9WTVdHRlhgLCBhbmQgSSBuZWVkIHRvIGltbWVkaWF0ZWx5IHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gSSBjYW4ndCBtb3ZlIGZvcndhcmQgd2l0aG91dCBrbm93aW5nIHdoYXQgb3RoZXIgbW9kdWxlcyBvciBjb21wb25lbnRzIGl0IHJlbGllcyBvbi4gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGBkZXBlbmRzIG9uYCBpbmZvcm1hdGlvbiBmb3IgdGhhdCBwYXJ0aWN1bGFyIG1vZHVsZS4gVW5kZXJzdGFuZGluZyBpdHMgZGVwZW5kZW5jaWVzIGlzIHRoZSBmb3VuZGF0aW9uIGZvciBlZmZlY3RpdmUgdHJvdWJsZXNob290aW5nLCBtb2RpZmljYXRpb24sIG9yIGV2ZW4ganVzdCBhIGdlbmVyYWwgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBncmFwaGljcyBkcml2ZXIgZml0cyBpbnRvIHRoZSBicm9hZGVyIHN5c3RlbSBhcmNoaXRlY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMDQyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTM6MjIuMTI5Nzk2NTE5WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjAxMTk4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWc9Mj1jb25maWcgRFJNX1ZNV0dGWFxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJEUk0gZHJpdmVyIGZvciBWTXdhcmUgVmlydHVhbCBHUFVcXFwiXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBEUk0gXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnOjU6XFx0ZGVwZW5kcyBvbiAoWDg2IFxcdTAwMjZcXHUwMDI2IEhZUEVSVklTT1JfR1VFU1QpIHx8IEFSTTY0XFxuZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC9LY29uZmlnLTYtXFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWc9MjA9Y29uZmlnIERSTV9WTVdHRlhfTUtTU1RBVFNcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctMjEtXFx0Ym9vbCBcXFwiRW5hYmxlIG1rc0d1ZXN0U3RhdHMgaW5zdHJ1bWVudGF0aW9uIG9mIHZtd2dmeCBieSBkZWZhdWx0XFxcIlxcbmRyaXZlcnMvZ3B1L2RybS92bXdnZngvS2NvbmZpZzoyMjpcXHRkZXBlbmRzIG9uIERSTV9WTVdHRlhcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWc6MjM6XFx0ZGVwZW5kcyBvbiBYODZcXG5kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L0tjb25maWctMjQtXFx0ZGVmYXVsdCBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEzOjIyLjE3NTgxNTQwNloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg0Njg4Njc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jeSBDaGVjayoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGtlcm5lbCBtb2R1bGUgZGVwZW5kZW5jaWVzLiBMZXQncyBzdGFydCB3aXRoIGBEUk1fVk1XR0ZYYC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGl0IHJlbGllcyBvbiBib3RoIGBEUk1gIGFuZCBgUENJYC4gVGhhdCBzZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBJIGFsc28gc2VlIHRoYXQgaXQgcmVxdWlyZXMgZWl0aGVyIGFuIGBYODZgIGFyY2hpdGVjdHVyZSAqYW5kKiBhIGBIWVBFUlZJU09SX0dVRVNUYCBzZXR0aW5nLCBvciBhbHRlcm5hdGl2ZWx5LCBgQVJNNjRgLiBZZXAsIHRoYXQgYWxsIGNoZWNrcyBvdXQgYW5kIHNlZW1zIGxvZ2ljYWxseSBzb3VuZC4gTm8gaW1tZWRpYXRlIHJlZCBmbGFncyB0aGVyZS4gTm93LCBsZXQncyBtb3ZlIG9uIHRvIGBEUk1fUVhMYCBhbmQgc2VlIHdoYXQgdGhhdCBtb2R1bGUgYnJpbmdzIHRvIHRoZSB0YWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM0OTUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMzoyNS4wNjA1MDgwNzRaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2ODg4MjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL3F4bC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZz0yPWNvbmZpZyBEUk1fUVhMXFxuZHJpdmVycy9ncHUvZHJtL3F4bC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlFYTCB2aXJ0dWFsIEdQVVxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vcXhsL0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIERSTSBcXHUwMDI2XFx1MDAyNiBQQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0lPUE9SVFxcbmRyaXZlcnMvZ3B1L2RybS9xeGwvS2NvbmZpZy01LVxcdHNlbGVjdCBEUk1fQ0xJRU5UX1NFTEVDVElPTlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMzoyNS4xMDc0MDQ5MTFaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY2MzA5MzUxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ2hlY2tpbmcgdGhlIGBEUk1fVkJPWFZJREVPYCBNb2R1bGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byBpdC4gTGV0J3MgZGlnIGluIGFuZCBtYWtlIHN1cmUgd2UncmUgc3F1YXJlZCBhd2F5IG9uIGBEUk1fVkJPWFZJREVPYC4gSSBuZWVkIHRvIGFzc2VzcyBpdHMgY3VycmVudCBzdGF0dXMgYW5kIGlmIHRoZXJlIGFyZSBhbnkgaXNzdWVzIHdpdGggaXQuIFRoZXJlIGNvdWxkIGJlIGRlcGVuZGVuY2llcywgY29uZmxpY3RzLCBvciBqdXN0IHBsYWluIG9sZCBidWdzIHRoYXQgbmVlZCB0byBiZSBhZGRyZXNzZWQuIFBlcmhhcHMgdGhlcmUgaXMgc29tZSByZWNlbnQgd29yayBpbiB0aGlzIGFyZWEgSSBuZWVkIHRvIGFzc2VzcyBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzgzMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEzOjI3Ljc3MDUwNDI1MloiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg0NzExNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnPTI9Y29uZmlnIERSTV9WQk9YVklERU9cXG5kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBCb3ggR3JhcGhpY3MgQ2FyZFxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vdmJveHZpZGVvL0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIERSTSBcXHUwMDI2XFx1MDAyNiBYODYgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy9ncHUvZHJtL3Zib3h2aWRlby9LY29uZmlnLTUtXFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEzOjI3LjgyODk4MjAzOVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzkwOTY2NDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgRFJNX1ZHRU1gKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gYERSTV9WR0VNYC4gR290dGEgY2hlY2sgaXQsIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHRoZXJlLiBQcm9iYWJseSB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHdoYXRldmVyIHdlJ3JlIGRlYnVnZ2luZy4gSXQncyB0aGUgdXN1YWwgc3VzcGVjdHMsIHJpZ2h0PyBLZXJuZWwgZHJpdmVyLCBncmFwaGljcywgRFJNIC0gdGhlIHdob2xlIGtpdCBhbmQgY2Fib29kbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBnb2luZyBvbiB3aXRoaW4gdGhhdCBwYXJ0aWN1bGFyIGNvbnRleHQuIExldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgYm90dGxlbmVja3Mgb3IgZ2xpdGNoZXMgdGhhdCBzdGFuZCBvdXQgaW1tZWRpYXRlbHkuIERpZ2dpbmcgaW4uLi4gdGhlIGluaXRpYWwgc3RlcCBvZiB0aGUgcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQxMDEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMzozMC42MTk5NTE1ODJaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzU0Mzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL3ZnZW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdmdlbS9LY29uZmlnPTI9Y29uZmlnIERSTV9WR0VNXFxuZHJpdmVycy9ncHUvZHJtL3ZnZW0vS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIEdFTSBwcm92aWRlclxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vdmdlbS9LY29uZmlnOjQ6XFx0ZGVwZW5kcyBvbiBEUk0gXFx1MDAyNlxcdTAwMjYgTU1VXFxuZHJpdmVycy9ncHUvZHJtL3ZnZW0vS2NvbmZpZy01LVxcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwMjoxMzozMC42NjM3MTAxNjlaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg1MjU5NzkyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkNoZWNraW5nIGBEUk1fVktNU2AqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gVGhlIGluaXRpYWwgZGlyZWN0aW9uIGlzIHRvIGNoZWNrIGBEUk1fVktNU2AuIFRoYXQncyBhIGNsZWFyIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgcmVsZXZhbnQgYWJvdXQgdGhlIGN1cnJlbnQgY29udGV4dCwgYW5kIHRoaXMgbG9va3MgbGlrZSB0aGUgY3J1Y2lhbCBlbGVtZW50IGZvciBpbnZlc3RpZ2F0aW9uLiBHb3R0YSBhc3Nlc3MgaXRzIHN0YXRlLCBpdHMgY29uZmlndXJhdGlvbiwgYW5kLCBvZiBjb3Vyc2UsIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGJyb2FkZXIgc3lzdGVtLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGFyY2hpdGVjdHVyYWwgaW1wbGljYXRpb25zIG9mIHRoaXMgbW9kdWxlIHdpdGhpbiB0aGUgd2lkZXIgZWNvc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDM5NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEzOjMzLjUxNjMxMjMwOFoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYxMDc0NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc9Mz1jb25maWcgRFJNX1ZLTVNcXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgS01TIChFWFBFUklNRU5UQUwpXFxcIlxcbmRyaXZlcnMvZ3B1L2RybS92a21zL0tjb25maWc6NTpcXHRkZXBlbmRzIG9uIERSTSBcXHUwMDI2XFx1MDAyNiBNTVVcXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTYtXFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnPTE5PWNvbmZpZyBEUk1fVktNU19LVU5JVF9URVNUXFxuZHJpdmVycy9ncHUvZHJtL3ZrbXMvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIFZLTVNcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnOjIxOlxcdGRlcGVuZHMgb24gRFJNX1ZLTVMgXFx1MDAyNlxcdTAwMjYgS1VOSVRcXG5kcml2ZXJzL2dwdS9kcm0vdmttcy9LY29uZmlnLTIyLVxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDAyOjEzOjMzLjU2MjQyNzA1NVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NzU5MDQ0NzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBEUk0gTU0gYW5kIFZpcnR1YWwgR1BVIERyaXZlciBDaGFuZ2VzIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhpbmtpbmcgYWJvdXQgaG93IHRvIGJlc3QgZnV6eiBpdC4gVGhlIG1haW4gZm9jdXMgaGVyZSBpcyBvbiBuZXcgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBmdW5jdGlvbnMgYW5kIGhvdyB0aGV5J3JlIHVzZWQgYnkgc2V2ZXJhbCB2aXJ0dWFsIEdQVSBkcml2ZXJzLiBTcGVjaWZpY2FsbHksIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCB0byBoYW5kbGUgd3JpdGFibGUgUFRFcyBkdXJpbmcgcGFnZSBmYXVsdHMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uIGlzIGtleS4gVGhpcyBpcyBhIGZpeCBmb3IgYGZpeHVwX3VzZXJfZmF1bHRgIGFuZCBhZmZlY3RzIGhvdyBtZW1vcnkgaXMgaGFuZGxlZCBpbiB0aGVzZSBjcml0aWNhbCBhcmVhcywgd2hpY2ggbWFrZXMgaXQgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEl0IGltcGFjdHMgYERSTSBHRU0gc2htZW0gaGVscGVyYCwgYFRUTSBCTyBWTWAsIGFuZCBgVk1XZ2Z4YCBwYWdlIGZhdWx0IGhhbmRsZXJzLiBUaGVzZSBhcmUgYWxsIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHRocm91Z2ggYG1tYXBgIGFuZCBwYWdlIGZhdWx0cyDigJMgY2xhc3NpYyBmdXp6aW5nIGVudHJ5IHBvaW50cy5cblxuR2l2ZW4gdGhhdCwgSSBuZWVkIHRvIGVuc3VyZSB0aGUgcmlnaHQgY29uZmlndXJhdGlvbnMgYXJlIGVuYWJsZWQgdG8gZXhwb3NlIHRoaXMgY29kZS4gSSBpbml0aWFsbHkgdGhvdWdodCBvZiBlbmFibGluZyBgRFJNX1ZHRU1gLCBgRFJNX1ZLTVNgLCBgRFJNX1ZNV0dGWGAsIGFuZCBgRFJNX1FYTGAsIGFuZCBgRFJNX1ZCT1hWSURFT2AsIGJ1dCBJIHJlYWxpemVkIGBEUk1fVk1XR0ZYYCBkZXBlbmRzIG9uIGBIWVBFUlZJU09SX0dVRVNUYCwgd2hpY2ggaXMgdXN1YWxseSBlbmFibGVkIGluIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUbyBiZSBvbiB0aGUgc2FmZSBzaWRlLCBhbmQgYWZ0ZXIgZG91YmxlIGNoZWNraW5nIGlmIHRoZXNlIHN5bWJvbHMgYXJlIHRyaXN0YXRlLCBJJ20gZ29pbmcgdG8gZXhwbGljaXRseSBlbmFibGUgYERSTV9UVE1gIGFuZCBgRFJNX0dFTV9TSE1FTV9IRUxQRVJgLCBqdXN0IGluIGNhc2UuXG5cbkxldCdzIGRvdWJsZSBjaGVjayB0byBzZWUgaWYgdGhlIG5ldyBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkLiBHb29kLCBgdm1mX2luc2VydF9wZm5fbWt3cml0ZWAgYW5kIGBfX3ZtZl9pbnNlcnRfcGZuX3Byb3RgIGFyZSBib3RoIGV4cG9ydGVkLCBtZWFuaW5nIHdlIGNhbiByZWFjaCB0aGVtIGZyb20gdXNlcnNwYWNlLiBBbHNvLCBgdHRtX2JvX3ZtX2ZhdWx0X3Jlc2VydmVkYCBpcyBleHBvcnRlZC4gQWRkaXRpb25hbGx5LCBgdm13X2JvX3ZtX21rd3JpdGVgIGFuZCBgdm13X2JvX3ZtX2ZhdWx0YCBhcmUgZ2xvYmFsIGZ1bmN0aW9ucyBpbiBgdm13Z2Z4X3BhZ2VfZGlydHkuY2AuXG5cbkkgYWxzbyBub3RpY2VkIGBkcm1fZ2VtX3NobWVtX2ZhdWx0YCBpcyBzdGF0aWMsIHdoaWNoIGlzIGEgYml0IG9mIGEgcHJvYmxlbS4gQnV0LCBJIHNlZSB0aGF0IGBkcm1fZ2VtX3NobWVtX21tYXBgICppcyogZXhwb3J0ZWQgYW5kIHNldHMgdXAgdGhlIGB2bV9vcHNgLCBzbyB0aGF0J3MgYW5vdGhlciBpbXBvcnRhbnQgZnVuY3Rpb24gdGhhdCBuZWVkcyB0byBiZSBhZGRlZCB0byB0aGUgbGlzdCBvZiB0aGluZ3MgdG8gdHJ5IHRvIGZ1enouXG5cbkFscmlnaHQsIGxldCdzIG5haWwgZG93biB0aG9zZSBjb25maWd1cmF0aW9ucyBhZ2FpbjpcblxuKiAgIGBEUk1fVkdFTWBcbiogICBgRFJNX1ZLTVNgXG4qICAgYERSTV9WTVdHRlhgXG4qICAgYERSTV9UVE1gXG4qICAgYERSTV9HRU1fU0hNRU1fSEVMUEVSYFxuXG5UaGF0IGNvdmVycyBldmVyeXRoaW5nLCBJIHRoaW5rLiBUaGlzIHNlZW1zIGxpa2UgYSBwcmV0dHkgc29saWQgc2V0IG9mIHRhcmdldHMgZm9yIHNvbWUgZm9jdXNlZCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDc3NSwiT3V0cHV0VG9rZW5zIjoyNzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDI6MTM6NDMuMzIxNDc0NTc4WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAwNTc5MDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTV9WR0VNXCIsXG4gICAgXCJEUk1fVktNU1wiLFxuICAgIFwiRFJNX1ZNV0dGWFwiLFxuICAgIFwiRFJNX1RUTVwiLFxuICAgIFwiRFJNX0dFTV9TSE1FTV9IRUxQRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlXCIsXG4gICAgXCJfX3ZtZl9pbnNlcnRfcGZuX3Byb3RcIixcbiAgICBcInR0bV9ib192bV9mYXVsdF9yZXNlcnZlZFwiLFxuICAgIFwidm13X2JvX3ZtX21rd3JpdGVcIixcbiAgICBcInZtd19ib192bV9mYXVsdFwiLFxuICAgIFwiZHJtX2dlbV9zaG1lbV9tbWFwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBuZXcgY29yZSBNTSBmdW5jdGlvbnMgYHZtZl9pbnNlcnRfcGZuX21rd3JpdGVgIGFuZCBgX192bWZfaW5zZXJ0X3Bmbl9wcm90YCB0byBhbGxvdyBpbnNlcnRpbmcgYSB3cml0YWJsZSBQVEUgZHVyaW5nIGEgcGFnZSBmYXVsdCBldmVuIHdoZW4gdGhlIFZNQSBpcyB1bmRlciB3cml0ZSBub3RpZmljYXRpb24uIFRoaXMgZml4ZXMgYW4gaXNzdWUgd2l0aCBgZml4dXBfdXNlcl9mYXVsdGAgY2FsbGVycy4gSXQgbW9kaWZpZXMgdGhlIHBhZ2UgZmF1bHQgaGFuZGxlcnMgaW4gRFJNIEdFTSBzaG1lbSBoZWxwZXIsIFRUTSBCTyBWTSwgYW5kIFZNV2dmeCB0byB1c2UgdGhlc2UgbmV3IGZ1bmN0aW9ucy4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb3JlIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCB2aXJ0dWFsIEdQVSBkcml2ZXJzIHRoYXQgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbW1hcCBhbmQgcGFnZSBmYXVsdHMsIG1ha2luZyB0aGVtIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1fVkdFTVwiLFxuICAgIFwiRFJNX1ZLTVNcIixcbiAgICBcIkRSTV9WTVdHRlhcIixcbiAgICBcIkRSTV9UVE1cIixcbiAgICBcIkRSTV9HRU1fU0hNRU1fSEVMUEVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidm1mX2luc2VydF9wZm5fbWt3cml0ZVwiLFxuICAgIFwiX192bWZfaW5zZXJ0X3Bmbl9wcm90XCIsXG4gICAgXCJ0dG1fYm9fdm1fZmF1bHRfcmVzZXJ2ZWRcIixcbiAgICBcInZtd19ib192bV9ta3dyaXRlXCIsXG4gICAgXCJ2bXdfYm9fdm1fZmF1bHRcIixcbiAgICBcImRybV9nZW1fc2htZW1fbW1hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgbmV3IGNvcmUgTU0gZnVuY3Rpb25zIGB2bWZfaW5zZXJ0X3Bmbl9ta3dyaXRlYCBhbmQgYF9fdm1mX2luc2VydF9wZm5fcHJvdGAgdG8gYWxsb3cgaW5zZXJ0aW5nIGEgd3JpdGFibGUgUFRFIGR1cmluZyBhIHBhZ2UgZmF1bHQgZXZlbiB3aGVuIHRoZSBWTUEgaXMgdW5kZXIgd3JpdGUgbm90aWZpY2F0aW9uLiBUaGlzIGZpeGVzIGFuIGlzc3VlIHdpdGggYGZpeHVwX3VzZXJfZmF1bHRgIGNhbGxlcnMuIEl0IG1vZGlmaWVzIHRoZSBwYWdlIGZhdWx0IGhhbmRsZXJzIGluIERSTSBHRU0gc2htZW0gaGVscGVyLCBUVE0gQk8gVk0sIGFuZCBWTVdnZnggdG8gdXNlIHRoZXNlIG5ldyBmdW5jdGlvbnMuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29yZSBtZW1vcnkgbWFuYWdlbWVudCBhbmQgdmlydHVhbCBHUFUgZHJpdmVycyB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG1tYXAgYW5kIHBhZ2UgZmF1bHRzLCBtYWtpbmcgdGhlbSBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowx8dfh[1] Phase: Succeeded StartedAt: 2026-08-02 02:13:55 +0000 UTC FinishedAt: 2026-08-02 02:13:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-02 02:13:55 +0000 UTC FinishedAt: 2026-08-02 02:13:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2] Phase: Succeeded StartedAt: 2026-08-02 02:13:55 +0000 UTC FinishedAt: 2026-08-02 06:05:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-02 02:13:55 +0000 UTC FinishedAt: 2026-08-02 06:05:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-02 02:13:55 +0000 UTC FinishedAt: 2026-08-02 02:14:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-02 02:13:55 +0000 UTC FinishedAt: 2026-08-02 02:13:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx8dfh/series-workflowx8dfh-convert-artifact-340343747/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-02 02:14:05 +0000 UTC FinishedAt: 2026-08-02 02:34:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-02 02:14:05 +0000 UTC FinishedAt: 2026-08-02 02:34:19 +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:*aef80215-c3e4-4945-adbf-93d14f8a2b94,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-workflowx8dfh/series-workflowx8dfh-convert-artifact-340343747/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": "6b8e93e3-a730-4cf0-ae20-5b2d7298fe00", "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-workflowx8dfh/series-workflowx8dfh-build-action-1100789297/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-02 02:14:05 +0000 UTC FinishedAt: 2026-08-02 02:34:09 +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:*aef80215-c3e4-4945-adbf-93d14f8a2b94,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-workflowx8dfh/series-workflowx8dfh-convert-artifact-340343747/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": "6b8e93e3-a730-4cf0-ae20-5b2d7298fe00", "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-workflowx8dfh/series-workflowx8dfh-build-action-1100789297/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-02 02:34:19 +0000 UTC FinishedAt: 2026-08-02 02:34:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-02 02:34:19 +0000 UTC FinishedAt: 2026-08-02 02:34:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-02 02:34:19 +0000 UTC FinishedAt: 2026-08-02 02:34:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-02 02:34:19 +0000 UTC FinishedAt: 2026-08-02 02:34:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowx8dfh/series-workflowx8dfh-convert-artifact-110290810/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-02 02:34:29 +0000 UTC FinishedAt: 2026-08-02 02:36:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-02 02:34:29 +0000 UTC FinishedAt: 2026-08-02 02:36:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6b8e93e3-a730-4cf0-ae20-5b2d7298fe00,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-workflowx8dfh/series-workflowx8dfh-build-action-1100789297/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-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-02 02:36:20 +0000 UTC FinishedAt: 2026-08-02 02:36:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-02 02:36:20 +0000 UTC FinishedAt: 2026-08-02 02:36:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-02 02:36:20 +0000 UTC FinishedAt: 2026-08-02 02:59:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-02 02:36:20 +0000 UTC FinishedAt: 2026-08-02 02:59:57 +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:*aef80215-c3e4-4945-adbf-93d14f8a2b94,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-workflowx8dfh/series-workflowx8dfh-convert-artifact-110290810/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": "d3d47bea-9571-498f-967f-47409fae7221", "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-workflowx8dfh/series-workflowx8dfh-build-action-3371009758/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-02 02:36:20 +0000 UTC FinishedAt: 2026-08-02 02:59:47 +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:*aef80215-c3e4-4945-adbf-93d14f8a2b94,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-workflowx8dfh/series-workflowx8dfh-convert-artifact-110290810/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": "d3d47bea-9571-498f-967f-47409fae7221", "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-workflowx8dfh/series-workflowx8dfh-build-action-3371009758/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-02 02:59:57 +0000 UTC FinishedAt: 2026-08-02 02:59:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-02 02:59:57 +0000 UTC FinishedAt: 2026-08-02 02:59:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-02 02:59:57 +0000 UTC FinishedAt: 2026-08-02 03:02:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-02 02:59:57 +0000 UTC FinishedAt: 2026-08-02 03:01:52 +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:*d3d47bea-9571-498f-967f-47409fae7221,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-workflowx8dfh/series-workflowx8dfh-build-action-3371009758/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-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-02 03:02:01 +0000 UTC FinishedAt: 2026-08-02 06:05:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-02 03:02:01 +0000 UTC FinishedAt: 2026-08-02 06:05:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"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:*6b8e93e3-a730-4cf0-ae20-5b2d7298fe00,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d3d47bea-9571-498f-967f-47409fae7221,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-workflowx8dfh/series-workflowx8dfh-build-action-1100789297/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-workflowx8dfh/series-workflowx8dfh-build-action-3371009758/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-02 03:02:01 +0000 UTC FinishedAt: 2026-08-02 03:02:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-02 03:02:01 +0000 UTC FinishedAt: 2026-08-02 03:02:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"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-workflowx8dfh/series-workflowx8dfh-convert-artifact-2591705775/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-02 03:02:01 +0000 UTC FinishedAt: 2026-08-02 03:02:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-02 03:02:01 +0000 UTC FinishedAt: 2026-08-02 03:02:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-02 03:02:01 +0000 UTC FinishedAt: 2026-08-02 03:02:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-02 03:02:36 +0000 UTC FinishedAt: 2026-08-02 06:05:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowx8dfh[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vmf_insert_pfn_mkwrite","__vmf_insert_pfn_prot","ttm_bo_vm_fault_reserved","vmw_bo_vm_mkwrite","vmw_bo_vm_fault","drm_gem_shmem_mmap"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"7d3aae206663c4e006b25a1c7a20a4029e67da76","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_VGEM","DRM_VKMS","DRM_VMWGFX","DRM_TTM","DRM_GEM_SHMEM_HELPER"],"series_id":"24f780a0-ea85-4b9d-b915-755f1e1b36ed","tree_name":"kvm-next","tree_url":"https://kernel.googlesource.com/pub/scm/virt/kvm/kvm/"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-02 03:02:36 +0000 UTC FinishedAt: 2026-08-02 06:04:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*6b8e93e3-a730-4cf0-ae20-5b2d7298fe00,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d3d47bea-9571-498f-967f-47409fae7221,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-workflowx8dfh/series-workflowx8dfh-build-action-1100789297/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-workflowx8dfh/series-workflowx8dfh-build-action-3371009758/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-workflowx8dfh/series-workflowx8dfh-convert-artifact-2591705775/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,}