From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH v1 10/20] acpi/hvmloader: Replace mem_alloc() and virt_to_phys() with memory ops Date: Tue, 5 Jul 2016 15:05:09 -0400 Message-ID: <1467745519-9868-11-git-send-email-boris.ostrovsky@oracle.com> References: <1467745519-9868-1-git-send-email-boris.ostrovsky@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1467745519-9868-1-git-send-email-boris.ostrovsky@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: wei.liu2@citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, julien.grall@arm.com, jbeulich@suse.com, zhaoshenglong@huawei.com, boris.ostrovsky@oracle.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org Q29tcG9uZW50cyB0aGF0IHdpc2ggdG8gdXNlIEFDUEkgYnVpbGRlciB3aWxsIG5lZWQgdG8gcHJv dmlkZSB0aGVpciBvd24KbWVtX2FsbG9jKCkgYW5kIHZpcnRfdG9fcGh5cygpIHJvdXRpbmVzLiBQ b2ludGVycyB0byB0aGVzZSByb3V0aW5lcyB3aWxsCmJlIHBhc3NlZCB0byB0aGUgYnVpbGRlciBh cyBtZW1vcnkgb3BzLgoKU2lnbmVkLW9mZi1ieTogQm9yaXMgT3N0cm92c2t5IDxib3Jpcy5vc3Ry b3Zza3lAb3JhY2xlLmNvbT4KLS0tCgpDaGFuZ2VzIGluIHYxOgoqIEtlZXAgbWVtb3J5IG9wcyBz ZXByYXRlIGZyb20gYWNwaV9jb25maWcsIGluIHN0cnVjdCBhY3BpX2NvbnRleHQuCgpKYW4gcmVx dWVzdGVkIGFkZGluZyBhIGZyZWUoKSBvcCB0byBzdHJ1Y3QgYWNwaV9tZW1fb3BzLiBJIGNvdWxk bid0IHNlZSB3aG8gbWlnaHQgd2FudCB0bwp1c2UgdGhvc2UuIFRoZSBidWlsZGVyIHVzZXMgKHNo b3VsZCB1c2UpIG1lbV9hbGxvYygpIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGFibGVzLCBub3Qg YXMgYQpnZW5lcmFsLXB1cnBvc2UgYWxsb2NhdG9yLgoKIHRvb2xzL2Zpcm13YXJlL2h2bWxvYWRl ci9hY3BpL2J1aWxkLmMgICB8ICAgODcgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQog dG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2FjcGkvbGliYWNwaS5oIHwgICAgOSArKystCiB0b29s cy9maXJtd2FyZS9odm1sb2FkZXIvdXRpbC5jICAgICAgICAgfCAgIDE2ICsrKysrLQogMyBmaWxl cyBjaGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS90b29scy9maXJtd2FyZS9odm1sb2FkZXIvYWNwaS9idWlsZC5jIGIvdG9vbHMvZmlybXdhcmUv aHZtbG9hZGVyL2FjcGkvYnVpbGQuYwppbmRleCA1NzBkMjZmLi4wYWRiM2Q2IDEwMDY0NAotLS0g YS90b29scy9maXJtd2FyZS9odm1sb2FkZXIvYWNwaS9idWlsZC5jCisrKyBiL3Rvb2xzL2Zpcm13 YXJlL2h2bWxvYWRlci9hY3BpL2J1aWxkLmMKQEAgLTU0LDcgKzU0LDggQEAgc3RhdGljIHZvaWQg c2V0X2NoZWNrc3VtKAogICAgIHBbY2hlY2tzdW1fb2Zmc2V0XSA9IC1zdW07CiB9CiAKLXN0YXRp YyBzdHJ1Y3QgYWNwaV8yMF9tYWR0ICpjb25zdHJ1Y3RfbWFkdChzdHJ1Y3QgYWNwaV9jb25maWcg KmNvbmZpZykKK3N0YXRpYyBzdHJ1Y3QgYWNwaV8yMF9tYWR0ICpjb25zdHJ1Y3RfbWFkdChzdHJ1 Y3QgYWNwaV9jdHh0ICpjdHh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnKQogewogICAgIHN0cnVjdCBhY3BpXzIw X21hZHQgICAgICAgICAgICptYWR0OwogICAgIHN0cnVjdCBhY3BpXzIwX21hZHRfaW50c3Jjb3Zy ICppbnRzcmNvdnI7CkBAIC02Nyw3ICs2OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYWNwaV8yMF9tYWR0 ICpjb25zdHJ1Y3RfbWFkdChzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZykKICAgICBzeiArPSBz aXplb2Yoc3RydWN0IGFjcGlfMjBfbWFkdF9pb2FwaWMpOwogICAgIHN6ICs9IHNpemVvZihzdHJ1 Y3QgYWNwaV8yMF9tYWR0X2xhcGljKSAqIGNvbmZpZy0+aHZtaW5mby0+bnJfdmNwdXM7CiAKLSAg ICBtYWR0ID0gbWVtX2FsbG9jKHN6LCAxNik7CisgICAgbWFkdCA9IGN0eHQtPm1lbV9vcHMuYWxs b2MoY3R4dCwgc3osIDE2KTsKICAgICBpZiAoIW1hZHQpIHJldHVybiBOVUxMOwogCiAgICAgbWVt c2V0KG1hZHQsIDAsIHNpemVvZigqbWFkdCkpOwpAQCAtMTQ3LDExICsxNDgsMTIgQEAgc3RhdGlj IHN0cnVjdCBhY3BpXzIwX21hZHQgKmNvbnN0cnVjdF9tYWR0KHN0cnVjdCBhY3BpX2NvbmZpZyAq Y29uZmlnKQogICAgIHJldHVybiBtYWR0OwogfQogCi1zdGF0aWMgc3RydWN0IGFjcGlfMjBfaHBl dCAqY29uc3RydWN0X2hwZXQodm9pZCkKK3N0YXRpYyBzdHJ1Y3QgYWNwaV8yMF9ocGV0ICpjb25z dHJ1Y3RfaHBldChzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnKQogewogICAg IHN0cnVjdCBhY3BpXzIwX2hwZXQgKmhwZXQ7CiAKLSAgICBocGV0ID0gbWVtX2FsbG9jKHNpemVv ZigqaHBldCksIDE2KTsKKyAgICBocGV0ID0gY3R4dC0+bWVtX29wcy5hbGxvYyhjdHh0LCBzaXpl b2YoKmhwZXQpLCAxNik7CiAgICAgaWYgKCFocGV0KSByZXR1cm4gTlVMTDsKIAogICAgIG1lbXNl dChocGV0LCAwLCBzaXplb2YoKmhwZXQpKTsKQEAgLTE3MCwxMSArMTcyLDEyIEBAIHN0YXRpYyBz dHJ1Y3QgYWNwaV8yMF9ocGV0ICpjb25zdHJ1Y3RfaHBldCh2b2lkKQogICAgIHJldHVybiBocGV0 OwogfQogCi1zdGF0aWMgc3RydWN0IGFjcGlfMjBfd2FldCAqY29uc3RydWN0X3dhZXQodm9pZCkK K3N0YXRpYyBzdHJ1Y3QgYWNwaV8yMF93YWV0ICpjb25zdHJ1Y3Rfd2FldChzdHJ1Y3QgYWNwaV9j dHh0ICpjdHh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnKQogewogICAgIHN0cnVjdCBhY3BpXzIwX3dhZXQgKndh ZXQ7CiAKLSAgICB3YWV0ID0gbWVtX2FsbG9jKHNpemVvZigqd2FldCksIDE2KTsKKyAgICB3YWV0 ID0gY3R4dC0+bWVtX29wcy5hbGxvYyhjdHh0LCBzaXplb2YoKndhZXQpLCAxNik7CiAgICAgaWYg KCF3YWV0KSByZXR1cm4gTlVMTDsKIAogICAgIG1lbWNweSh3YWV0LCAmV2FldCwgc2l6ZW9mKCp3 YWV0KSk7CkBAIC0xODUsNyArMTg4LDggQEAgc3RhdGljIHN0cnVjdCBhY3BpXzIwX3dhZXQgKmNv bnN0cnVjdF93YWV0KHZvaWQpCiAgICAgcmV0dXJuIHdhZXQ7CiB9CiAKLXN0YXRpYyBzdHJ1Y3Qg YWNwaV8yMF9zcmF0ICpjb25zdHJ1Y3Rfc3JhdChzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZykK K3N0YXRpYyBzdHJ1Y3QgYWNwaV8yMF9zcmF0ICpjb25zdHJ1Y3Rfc3JhdChzdHJ1Y3QgYWNwaV9j dHh0ICpjdHh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnKQogewogICAgIHN0cnVjdCBhY3BpXzIwX3NyYXQgKnNy YXQ7CiAgICAgc3RydWN0IGFjcGlfMjBfc3JhdF9wcm9jZXNzb3IgKnByb2Nlc3NvcjsKQEAgLTE5 Nyw3ICsyMDEsNyBAQCBzdGF0aWMgc3RydWN0IGFjcGlfMjBfc3JhdCAqY29uc3RydWN0X3NyYXQo c3RydWN0IGFjcGlfY29uZmlnICpjb25maWcpCiAgICAgc2l6ZSA9IHNpemVvZigqc3JhdCkgKyBz aXplb2YoKnByb2Nlc3NvcikgKiBjb25maWctPmh2bWluZm8tPm5yX3ZjcHVzICsKICAgICAgICAg ICAgc2l6ZW9mKCptZW1vcnkpICogY29uZmlnLT5udW1hLm5yX3ZtZW1yYW5nZXM7CiAKLSAgICBw ID0gbWVtX2FsbG9jKHNpemUsIDE2KTsKKyAgICBwID0gY3R4dC0+bWVtX29wcy5hbGxvYyhjdHh0 LCBzaXplLCAxNik7CiAgICAgaWYgKCAhcCApCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0y NDMsNyArMjQ3LDggQEAgc3RhdGljIHN0cnVjdCBhY3BpXzIwX3NyYXQgKmNvbnN0cnVjdF9zcmF0 KHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnKQogICAgIHJldHVybiBzcmF0OwogfQogCi1zdGF0 aWMgc3RydWN0IGFjcGlfMjBfc2xpdCAqY29uc3RydWN0X3NsaXQoc3RydWN0IGFjcGlfY29uZmln ICpjb25maWcpCitzdGF0aWMgc3RydWN0IGFjcGlfMjBfc2xpdCAqY29uc3RydWN0X3NsaXQoc3Ry dWN0IGFjcGlfY3R4dCAqY3R4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZykKIHsKICAgICBzdHJ1Y3QgYWNwaV8y MF9zbGl0ICpzbGl0OwogICAgIHVuc2lnbmVkIGludCBpLCBudW0sIHNpemU7CkBAIC0yNTEsNyAr MjU2LDcgQEAgc3RhdGljIHN0cnVjdCBhY3BpXzIwX3NsaXQgKmNvbnN0cnVjdF9zbGl0KHN0cnVj dCBhY3BpX2NvbmZpZyAqY29uZmlnKQogICAgIG51bSA9IGNvbmZpZy0+bnVtYS5ucl92bm9kZXMg KiBjb25maWctPm51bWEubnJfdm5vZGVzOwogICAgIHNpemUgPSBzaXplb2YoKnNsaXQpICsgbnVt ICogc2l6ZW9mKHVpbnQ4X3QpOwogCi0gICAgc2xpdCA9IG1lbV9hbGxvYyhzaXplLCAxNik7Cisg ICAgc2xpdCA9IGN0eHQtPm1lbV9vcHMuYWxsb2MoY3R4dCwgc2l6ZSwgMTYpOwogICAgIGlmICgg IXNsaXQgKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMjc1LDcgKzI4MCw4IEBAIHN0YXRp YyBzdHJ1Y3QgYWNwaV8yMF9zbGl0ICpjb25zdHJ1Y3Rfc2xpdChzdHJ1Y3QgYWNwaV9jb25maWcg KmNvbmZpZykKICAgICByZXR1cm4gc2xpdDsKIH0KIAotc3RhdGljIGludCBjb25zdHJ1Y3RfcGFz c3Rocm91Z2hfdGFibGVzKHVuc2lnbmVkIGxvbmcgKnRhYmxlX3B0cnMsCitzdGF0aWMgaW50IGNv bnN0cnVjdF9wYXNzdGhyb3VnaF90YWJsZXMoc3RydWN0IGFjcGlfY3R4dCAqY3R4dCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICp0YWJsZV9w dHJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBucl90YWJs ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFjcGlf Y29uZmlnICpjb25maWcpCiB7CkBAIC0zMDAsNyArMzA2LDcgQEAgc3RhdGljIGludCBjb25zdHJ1 Y3RfcGFzc3Rocm91Z2hfdGFibGVzKHVuc2lnbmVkIGxvbmcgKnRhYmxlX3B0cnMsCiAKICAgICAg ICAgaGVhZGVyID0gKHN0cnVjdCBhY3BpX2hlYWRlciopYWNwaV9wdF9hZGRyOwogCi0gICAgICAg IGJ1ZmZlciA9IG1lbV9hbGxvYyhoZWFkZXItPmxlbmd0aCwgMTYpOworICAgICAgICBidWZmZXIg PSBjdHh0LT5tZW1fb3BzLmFsbG9jKGN0eHQsIGhlYWRlci0+bGVuZ3RoLCAxNik7CiAgICAgICAg IGlmICggYnVmZmVyID09IE5VTEwgKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIG1lbWNw eShidWZmZXIsIGhlYWRlciwgaGVhZGVyLT5sZW5ndGgpOwpAQCAtMzEzLDcgKzMxOSw4IEBAIHN0 YXRpYyBpbnQgY29uc3RydWN0X3Bhc3N0aHJvdWdoX3RhYmxlcyh1bnNpZ25lZCBsb25nICp0YWJs ZV9wdHJzLAogICAgIHJldHVybiBucl9hZGRlZDsKIH0KIAotc3RhdGljIGludCBjb25zdHJ1Y3Rf c2Vjb25kYXJ5X3RhYmxlcyh1bnNpZ25lZCBsb25nICp0YWJsZV9wdHJzLAorc3RhdGljIGludCBj b25zdHJ1Y3Rfc2Vjb25kYXJ5X3RhYmxlcyhzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICp0YWJsZV9wdHJz LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYWNwaV9jb25m aWcgKmNvbmZpZykKIHsKICAgICBpbnQgbnJfdGFibGVzID0gMDsKQEAgLTMyOCw3ICszMzUsNyBA QCBzdGF0aWMgaW50IGNvbnN0cnVjdF9zZWNvbmRhcnlfdGFibGVzKHVuc2lnbmVkIGxvbmcgKnRh YmxlX3B0cnMsCiAgICAgLyogTUFEVC4gKi8KICAgICBpZiAoIChjb25maWctPmh2bWluZm8tPm5y X3ZjcHVzID4gMSkgfHwgY29uZmlnLT5odm1pbmZvLT5hcGljX21vZGUgKQogICAgIHsKLSAgICAg ICAgbWFkdCA9IGNvbnN0cnVjdF9tYWR0KGNvbmZpZyk7CisgICAgICAgIG1hZHQgPSBjb25zdHJ1 Y3RfbWFkdChjdHh0LCBjb25maWcpOwogICAgICAgICBpZiAoIW1hZHQpIHJldHVybiAtMTsKICAg ICAgICAgdGFibGVfcHRyc1tucl90YWJsZXMrK10gPSAodW5zaWduZWQgbG9uZyltYWR0OwogICAg IH0KQEAgLTMzNiw3ICszNDMsNyBAQCBzdGF0aWMgaW50IGNvbnN0cnVjdF9zZWNvbmRhcnlfdGFi bGVzKHVuc2lnbmVkIGxvbmcgKnRhYmxlX3B0cnMsCiAgICAgLyogSFBFVC4gKi8KICAgICBpZiAo IGNvbmZpZy0+YWluZm8uaHBldF9wcmVzZW50ICkKICAgICB7Ci0gICAgICAgIGhwZXQgPSBjb25z dHJ1Y3RfaHBldCgpOworICAgICAgICBocGV0ID0gY29uc3RydWN0X2hwZXQoY3R4dCwgY29uZmln KTsKICAgICAgICAgaWYgKCFocGV0KSByZXR1cm4gLTE7CiAgICAgICAgIHRhYmxlX3B0cnNbbnJf dGFibGVzKytdID0gKHVuc2lnbmVkIGxvbmcpaHBldDsKICAgICB9CkBAIC0zNDQsMTQgKzM1MSwx NCBAQCBzdGF0aWMgaW50IGNvbnN0cnVjdF9zZWNvbmRhcnlfdGFibGVzKHVuc2lnbmVkIGxvbmcg KnRhYmxlX3B0cnMsCiAgICAgLyogV0FFVC4gKi8KICAgICBpZiAoIGNvbmZpZy0+dGFibGVfZmxh Z3MgJiBBQ1BJX0JVSUxEX1dBRVQgKQogICAgIHsKLSAgICAgICAgd2FldCA9IGNvbnN0cnVjdF93 YWV0KCk7CisgICAgICAgIHdhZXQgPSBjb25zdHJ1Y3Rfd2FldChjdHh0LCBjb25maWcpOwogICAg ICAgICBpZiAoICF3YWV0ICkgcmV0dXJuIC0xOwogICAgICAgICB0YWJsZV9wdHJzW25yX3RhYmxl cysrXSA9ICh1bnNpZ25lZCBsb25nKXdhZXQ7CiAgICAgfQogCiAgICAgaWYgKCBjb25maWctPnRh YmxlX2ZsYWdzICYgQUNQSV9CVUlMRF9TU0RUX1BNICkKICAgICB7Ci0gICAgICAgIHNzZHQgPSBt ZW1fYWxsb2Moc2l6ZW9mKHNzZHRfcG0pLCAxNik7CisgICAgICAgIHNzZHQgPSBjdHh0LT5tZW1f b3BzLmFsbG9jKGN0eHQsIHNpemVvZihzc2R0X3BtKSwgMTYpOwogICAgICAgICBpZiAoIXNzZHQp IHJldHVybiAtMTsKICAgICAgICAgbWVtY3B5KHNzZHQsIHNzZHRfcG0sIHNpemVvZihzc2R0X3Bt KSk7CiAgICAgICAgIHRhYmxlX3B0cnNbbnJfdGFibGVzKytdID0gKHVuc2lnbmVkIGxvbmcpc3Nk dDsKQEAgLTM1OSw3ICszNjYsNyBAQCBzdGF0aWMgaW50IGNvbnN0cnVjdF9zZWNvbmRhcnlfdGFi bGVzKHVuc2lnbmVkIGxvbmcgKnRhYmxlX3B0cnMsCiAKICAgICBpZiAoIGNvbmZpZy0+dGFibGVf ZmxhZ3MgJiBBQ1BJX0JVSUxEX1NTRFRfUzMgKQogICAgIHsKLSAgICAgICAgc3NkdCA9IG1lbV9h bGxvYyhzaXplb2Yoc3NkdF9zMyksIDE2KTsKKyAgICAgICAgc3NkdCA9IGN0eHQtPm1lbV9vcHMu YWxsb2MoY3R4dCwgc2l6ZW9mKHNzZHRfczMpLCAxNik7CiAgICAgICAgIGlmICghc3NkdCkgcmV0 dXJuIC0xOwogICAgICAgICBtZW1jcHkoc3NkdCwgc3NkdF9zMywgc2l6ZW9mKHNzZHRfczMpKTsK ICAgICAgICAgdGFibGVfcHRyc1tucl90YWJsZXMrK10gPSAodW5zaWduZWQgbG9uZylzc2R0OwpA QCAtMzY5LDcgKzM3Niw3IEBAIHN0YXRpYyBpbnQgY29uc3RydWN0X3NlY29uZGFyeV90YWJsZXMo dW5zaWduZWQgbG9uZyAqdGFibGVfcHRycywKIAogICAgIGlmICggY29uZmlnLT50YWJsZV9mbGFn cyAmIEFDUElfQlVJTERfU1NEVF9TNCApCiAgICAgewotICAgICAgICBzc2R0ID0gbWVtX2FsbG9j KHNpemVvZihzc2R0X3M0KSwgMTYpOworICAgICAgICBzc2R0ID0gY3R4dC0+bWVtX29wcy5hbGxv YyhjdHh0LCBzaXplb2Yoc3NkdF9zNCksIDE2KTsKICAgICAgICAgaWYgKCFzc2R0KSByZXR1cm4g LTE7CiAgICAgICAgIG1lbWNweShzc2R0LCBzc2R0X3M0LCBzaXplb2Yoc3NkdF9zNCkpOwogICAg ICAgICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9ICh1bnNpZ25lZCBsb25nKXNzZHQ7CkBAIC0z ODMsMTIgKzM5MCwxMiBAQCBzdGF0aWMgaW50IGNvbnN0cnVjdF9zZWNvbmRhcnlfdGFibGVzKHVu c2lnbmVkIGxvbmcgKnRhYmxlX3B0cnMsCiAgICAgICAgICAoY29uZmlnLT50aXNfaGRyWzFdID09 IHRpc19zaWduYXR1cmVbMV0pICYmCiAgICAgICAgICAoY29uZmlnLT50aXNfaGRyWzJdID09IHRp c19zaWduYXR1cmVbMl0pICkKICAgICB7Ci0gICAgICAgIHNzZHQgPSBtZW1fYWxsb2Moc2l6ZW9m KHNzZHRfdHBtKSwgMTYpOworICAgICAgICBzc2R0ID0gY3R4dC0+bWVtX29wcy5hbGxvYyhjdHh0 LCBzaXplb2Yoc3NkdF90cG0pLCAxNik7CiAgICAgICAgIGlmICghc3NkdCkgcmV0dXJuIC0xOwog ICAgICAgICBtZW1jcHkoc3NkdCwgc3NkdF90cG0sIHNpemVvZihzc2R0X3RwbSkpOwogICAgICAg ICB0YWJsZV9wdHJzW25yX3RhYmxlcysrXSA9ICh1bnNpZ25lZCBsb25nKXNzZHQ7CiAKLSAgICAg ICAgdGNwYSA9IG1lbV9hbGxvYyhzaXplb2Yoc3RydWN0IGFjcGlfMjBfdGNwYSksIDE2KTsKKyAg ICAgICAgdGNwYSA9IGN0eHQtPm1lbV9vcHMuYWxsb2MoY3R4dCwgc2l6ZW9mKHN0cnVjdCBhY3Bp XzIwX3RjcGEpLCAxNik7CiAgICAgICAgIGlmICghdGNwYSkgcmV0dXJuIC0xOwogICAgICAgICBt ZW1zZXQodGNwYSwgMCwgc2l6ZW9mKCp0Y3BhKSk7CiAgICAgICAgIHRhYmxlX3B0cnNbbnJfdGFi bGVzKytdID0gKHVuc2lnbmVkIGxvbmcpdGNwYTsKQEAgLTQwMSw5ICs0MDgsOSBAQCBzdGF0aWMg aW50IGNvbnN0cnVjdF9zZWNvbmRhcnlfdGFibGVzKHVuc2lnbmVkIGxvbmcgKnRhYmxlX3B0cnMs CiAgICAgICAgIHRjcGEtPmhlYWRlci5vZW1fcmV2aXNpb24gPSBBQ1BJX09FTV9SRVZJU0lPTjsK ICAgICAgICAgdGNwYS0+aGVhZGVyLmNyZWF0b3JfaWQgICA9IEFDUElfQ1JFQVRPUl9JRDsKICAg ICAgICAgdGNwYS0+aGVhZGVyLmNyZWF0b3JfcmV2aXNpb24gPSBBQ1BJX0NSRUFUT1JfUkVWSVNJ T047Ci0gICAgICAgIGlmICggKGxhc2EgPSBtZW1fYWxsb2MoQUNQSV8yXzBfVENQQV9MQU1MX1NJ WkUsIDE2KSkgIT0gTlVMTCApCisgICAgICAgIGlmICggKGxhc2EgPSBjdHh0LT5tZW1fb3BzLmFs bG9jKGN0eHQsIEFDUElfMl8wX1RDUEFfTEFNTF9TSVpFLCAxNikpICE9IE5VTEwgKQogICAgICAg ICB7Ci0gICAgICAgICAgICB0Y3BhLT5sYXNhID0gdmlydF90b19waHlzKGxhc2EpOworICAgICAg ICAgICAgdGNwYS0+bGFzYSA9IGN0eHQtPm1lbV9vcHMudjJwKGN0eHQsIGxhc2EpOwogICAgICAg ICAgICAgdGNwYS0+bGFtbCA9IEFDUElfMl8wX1RDUEFfTEFNTF9TSVpFOwogICAgICAgICAgICAg bWVtc2V0KGxhc2EsIDAsIHRjcGEtPmxhbWwpOwogICAgICAgICAgICAgc2V0X2NoZWNrc3VtKHRj cGEsCkBAIC00MTUsOCArNDIyLDggQEAgc3RhdGljIGludCBjb25zdHJ1Y3Rfc2Vjb25kYXJ5X3Rh Ymxlcyh1bnNpZ25lZCBsb25nICp0YWJsZV9wdHJzLAogICAgIC8qIFNSQVQgYW5kIFNMSVQgKi8K ICAgICBpZiAoIGNvbmZpZy0+bnVtYS5ucl92bm9kZXMgPiAwICkKICAgICB7Ci0gICAgICAgIHN0 cnVjdCBhY3BpXzIwX3NyYXQgKnNyYXQgPSBjb25zdHJ1Y3Rfc3JhdChjb25maWcpOwotICAgICAg ICBzdHJ1Y3QgYWNwaV8yMF9zbGl0ICpzbGl0ID0gY29uc3RydWN0X3NsaXQoY29uZmlnKTsKKyAg ICAgICAgc3RydWN0IGFjcGlfMjBfc3JhdCAqc3JhdCA9IGNvbnN0cnVjdF9zcmF0KGN0eHQsIGNv bmZpZyk7CisgICAgICAgIHN0cnVjdCBhY3BpXzIwX3NsaXQgKnNsaXQgPSBjb25zdHJ1Y3Rfc2xp dChjdHh0LCBjb25maWcpOwogCiAgICAgICAgIGlmICggc3JhdCApCiAgICAgICAgICAgICB0YWJs ZV9wdHJzW25yX3RhYmxlcysrXSA9ICh1bnNpZ25lZCBsb25nKXNyYXQ7CkBAIC00MjksNyArNDM2 LDggQEAgc3RhdGljIGludCBjb25zdHJ1Y3Rfc2Vjb25kYXJ5X3RhYmxlcyh1bnNpZ25lZCBsb25n ICp0YWJsZV9wdHJzLAogICAgIH0KIAogICAgIC8qIExvYWQgYW55IGFkZGl0aW9uYWwgdGFibGVz IHBhc3NlZCB0aHJvdWdoLiAqLwotICAgIG5yX3RhYmxlcyArPSBjb25zdHJ1Y3RfcGFzc3Rocm91 Z2hfdGFibGVzKHRhYmxlX3B0cnMsIG5yX3RhYmxlcywgY29uZmlnKTsKKyAgICBucl90YWJsZXMg Kz0gY29uc3RydWN0X3Bhc3N0aHJvdWdoX3RhYmxlcyhjdHh0LCB0YWJsZV9wdHJzLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5yX3RhYmxlcywgY29uZmln KTsKIAogICAgIHRhYmxlX3B0cnNbbnJfdGFibGVzXSA9IDA7CiAgICAgcmV0dXJuIG5yX3RhYmxl czsKQEAgLTQ0Miw3ICs0NTAsOCBAQCBzdGF0aWMgaW50IGNvbnN0cnVjdF9zZWNvbmRhcnlfdGFi bGVzKHVuc2lnbmVkIGxvbmcgKnRhYmxlX3B0cnMsCiAgKgogICogUmV0dXJuIDAgaWYgbWVtb3J5 IGZhaWx1cmUsICE9IDAgaWYgc3VjY2VzcwogICovCi1zdGF0aWMgaW50IG5ld192bV9naWQoc3Ry dWN0IGFjcGlfY29uZmlnICpjb25maWcpCitzdGF0aWMgaW50IG5ld192bV9naWQoc3RydWN0IGFj cGlfY3R4dCAqY3R4dCwKKyAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYWNwaV9jb25maWcg KmNvbmZpZykKIHsKICAgICB1aW50NjRfdCAqYnVmOwogCkBAIC00NTMsMTggKzQ2MiwxOCBAQCBz dGF0aWMgaW50IG5ld192bV9naWQoc3RydWN0IGFjcGlfY29uZmlnICpjb25maWcpCiAgICAgICAg IHJldHVybiAxOwogCiAgICAgLyogY29weSB0byBhbGxvY2F0ZSBCSU9TIG1lbW9yeSAqLwotICAg IGJ1ZiA9ICh1aW50NjRfdCAqKSBtZW1fYWxsb2Moc2l6ZW9mKGNvbmZpZy0+dm1fZ2lkKSwgOCk7 CisgICAgYnVmID0gKHVpbnQ2NF90ICopIGN0eHQtPm1lbV9vcHMuYWxsb2MoY3R4dCwgc2l6ZW9m KGNvbmZpZy0+dm1fZ2lkKSwgOCk7CiAgICAgaWYgKCAhYnVmICkKICAgICAgICAgcmV0dXJuIDA7 CiAgICAgbWVtY3B5KGJ1ZiwgY29uZmlnLT52bV9naWQsIHNpemVvZihjb25maWctPnZtX2dpZCkp OwogCiAgICAgLyogc2V0IGludG8gQUNQSSB0YWJsZSBhbmQgSFZNIHBhcmFtIHRoZSBhZGRyZXNz ICovCi0gICAgY29uZmlnLT5haW5mby52bV9naWRfYWRkciA9IHZpcnRfdG9fcGh5cyhidWYpOwor ICAgIGNvbmZpZy0+YWluZm8udm1fZ2lkX2FkZHIgPSBjdHh0LT5tZW1fb3BzLnYycChjdHh0LCBi dWYpOwogCiAgICAgcmV0dXJuIDE7CiB9CiAKLXZvaWQgYWNwaV9idWlsZF90YWJsZXMoc3RydWN0 IGFjcGlfY29uZmlnICpjb25maWcpCit2b2lkIGFjcGlfYnVpbGRfdGFibGVzKHN0cnVjdCBhY3Bp X2N0eHQgKmN0eHQsIHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnKQogewogICAgIHN0cnVjdCBh Y3BpXzIwX3JzZHAgKnJzZHA7CiAgICAgc3RydWN0IGFjcGlfMjBfcnNkdCAqcnNkdDsKQEAgLTQ4 MCw3ICs0ODksNyBAQCB2b2lkIGFjcGlfYnVpbGRfdGFibGVzKHN0cnVjdCBhY3BpX2NvbmZpZyAq Y29uZmlnKQogICAgICAqIEZpbGwgaW4gaGlnaC1tZW1vcnkgZGF0YSBzdHJ1Y3R1cmVzLCBzdGFy dGluZyBhdCBAYnVmLgogICAgICAqLwogCi0gICAgZmFjcyA9IG1lbV9hbGxvYyhzaXplb2Yoc3Ry dWN0IGFjcGlfMjBfZmFjcyksIDE2KTsKKyAgICBmYWNzID0gY3R4dC0+bWVtX29wcy5hbGxvYyhj dHh0LCBzaXplb2Yoc3RydWN0IGFjcGlfMjBfZmFjcyksIDE2KTsKICAgICBpZiAoIWZhY3MpIGdv dG8gb29tOwogICAgIG1lbWNweShmYWNzLCAmRmFjcywgc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX2Zh Y3MpKTsKIApAQCAtNDk0LDEzICs1MDMsMTMgQEAgdm9pZCBhY3BpX2J1aWxkX3RhYmxlcyhzdHJ1 Y3QgYWNwaV9jb25maWcgKmNvbmZpZykKICAgICAgKi8KICAgICBpZiAoIGNvbmZpZy0+aHZtaW5m by0+bnJfdmNwdXMgPD0gMTUgJiYgY29uZmlnLT5kc2R0XzE1Y3B1KQogICAgIHsKLSAgICAgICAg ZHNkdCA9IG1lbV9hbGxvYyhjb25maWctPmRzZHRfMTVjcHVfbGVuLCAxNik7CisgICAgICAgIGRz ZHQgPSBjdHh0LT5tZW1fb3BzLmFsbG9jKGN0eHQsIGNvbmZpZy0+ZHNkdF8xNWNwdV9sZW4sIDE2 KTsKICAgICAgICAgaWYgKCFkc2R0KSBnb3RvIG9vbTsKICAgICAgICAgbWVtY3B5KGRzZHQsIGNv bmZpZy0+ZHNkdF8xNWNwdSwgY29uZmlnLT5kc2R0XzE1Y3B1X2xlbik7CiAgICAgfQogICAgIGVs c2UKICAgICB7Ci0gICAgICAgIGRzZHQgPSBtZW1fYWxsb2MoY29uZmlnLT5kc2R0X2FueWNwdV9s ZW4sIDE2KTsKKyAgICAgICAgZHNkdCA9IGN0eHQtPm1lbV9vcHMuYWxsb2MoY3R4dCwgY29uZmln LT5kc2R0X2FueWNwdV9sZW4sIDE2KTsKICAgICAgICAgaWYgKCFkc2R0KSBnb3RvIG9vbTsKICAg ICAgICAgbWVtY3B5KGRzZHQsIGNvbmZpZy0+ZHNkdF9hbnljcHUsIGNvbmZpZy0+ZHNkdF9hbnlj cHVfbGVuKTsKICAgICB9CkBAIC01MTMsNyArNTIyLDcgQEAgdm9pZCBhY3BpX2J1aWxkX3RhYmxl cyhzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZykKICAgICAgKiBjb21wYXRpYmxlIHJldmlzaW9u IDEgRkFEVCB0aGF0IGlzIGxpbmtlZCB3aXRoIHRoZSBSU0RULiBSZWZlciB0bzoKICAgICAgKiAg ICAgaHR0cDovL3d3dy5hY3BpLmluZm8vcHJlc2VudGF0aW9ucy9TMDFVU01PQlMxNjlfT1MlMjBu ZXcucHB0CiAgICAgICovCi0gICAgZmFkdF8xMCA9IG1lbV9hbGxvYyhzaXplb2Yoc3RydWN0IGFj cGlfMTBfZmFkdCksIDE2KTsKKyAgICBmYWR0XzEwID0gY3R4dC0+bWVtX29wcy5hbGxvYyhjdHh0 LCBzaXplb2Yoc3RydWN0IGFjcGlfMTBfZmFkdCksIDE2KTsKICAgICBpZiAoIWZhZHRfMTApIGdv dG8gb29tOwogICAgIG1lbWNweShmYWR0XzEwLCAmRmFkdCwgc2l6ZW9mKHN0cnVjdCBhY3BpXzEw X2ZhZHQpKTsKICAgICBmYWR0XzEwLT5oZWFkZXIubGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBhY3Bp XzEwX2ZhZHQpOwpAQCAtNTI0LDcgKzUzMyw3IEBAIHZvaWQgYWNwaV9idWlsZF90YWJsZXMoc3Ry dWN0IGFjcGlfY29uZmlnICpjb25maWcpCiAgICAgICAgICAgICAgICAgIG9mZnNldG9mKHN0cnVj dCBhY3BpX2hlYWRlciwgY2hlY2tzdW0pLAogICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0 IGFjcGlfMTBfZmFkdCkpOwogCi0gICAgZmFkdCA9IG1lbV9hbGxvYyhzaXplb2Yoc3RydWN0IGFj cGlfMjBfZmFkdCksIDE2KTsKKyAgICBmYWR0ID0gY3R4dC0+bWVtX29wcy5hbGxvYyhjdHh0LCBz aXplb2Yoc3RydWN0IGFjcGlfMjBfZmFkdCksIDE2KTsKICAgICBpZiAoIWZhZHQpIGdvdG8gb29t OwogICAgIG1lbWNweShmYWR0LCAmRmFkdCwgc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX2ZhZHQpKTsK ICAgICBmYWR0LT5kc2R0ICAgPSAodW5zaWduZWQgbG9uZylkc2R0OwpAQCAtNTM1LDExICs1NDQs MTEgQEAgdm9pZCBhY3BpX2J1aWxkX3RhYmxlcyhzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZykK ICAgICAgICAgICAgICAgICAgb2Zmc2V0b2Yoc3RydWN0IGFjcGlfaGVhZGVyLCBjaGVja3N1bSks CiAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgYWNwaV8yMF9mYWR0KSk7CiAKLSAgICBu cl9zZWNvbmRhcmllcyA9IGNvbnN0cnVjdF9zZWNvbmRhcnlfdGFibGVzKHNlY29uZGFyeV90YWJs ZXMsIGNvbmZpZyk7CisgICAgbnJfc2Vjb25kYXJpZXMgPSBjb25zdHJ1Y3Rfc2Vjb25kYXJ5X3Rh YmxlcyhjdHh0LCBzZWNvbmRhcnlfdGFibGVzLCBjb25maWcpOwogICAgIGlmICggbnJfc2Vjb25k YXJpZXMgPCAwICkKICAgICAgICAgZ290byBvb207CiAKLSAgICB4c2R0ID0gbWVtX2FsbG9jKHNp emVvZihzdHJ1Y3QgYWNwaV8yMF94c2R0KSsKKyAgICB4c2R0ID0gY3R4dC0+bWVtX29wcy5hbGxv YyhjdHh0LCBzaXplb2Yoc3RydWN0IGFjcGlfMjBfeHNkdCkrCiAgICAgICAgICAgICAgICAgICAg ICBzaXplb2YodWludDY0X3QpKm5yX3NlY29uZGFyaWVzLAogICAgICAgICAgICAgICAgICAgICAg MTYpOwogICAgIGlmICgheHNkdCkgZ290byBvb207CkBAIC01NTIsNyArNTYxLDcgQEAgdm9pZCBh Y3BpX2J1aWxkX3RhYmxlcyhzdHJ1Y3QgYWNwaV9jb25maWcgKmNvbmZpZykKICAgICAgICAgICAg ICAgICAgb2Zmc2V0b2Yoc3RydWN0IGFjcGlfaGVhZGVyLCBjaGVja3N1bSksCiAgICAgICAgICAg ICAgICAgIHhzZHQtPmhlYWRlci5sZW5ndGgpOwogCi0gICAgcnNkdCA9IG1lbV9hbGxvYyhzaXpl b2Yoc3RydWN0IGFjcGlfMjBfcnNkdCkrCisgICAgcnNkdCA9IGN0eHQtPm1lbV9vcHMuYWxsb2Mo Y3R4dCwgc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX3JzZHQpKwogICAgICAgICAgICAgICAgICAgICAg c2l6ZW9mKHVpbnQzMl90KSpucl9zZWNvbmRhcmllcywKICAgICAgICAgICAgICAgICAgICAgIDE2 KTsKICAgICBpZiAoIXJzZHQpIGdvdG8gb29tOwpAQCAtNTgwLDcgKzU4OSw3IEBAIHZvaWQgYWNw aV9idWlsZF90YWJsZXMoc3RydWN0IGFjcGlfY29uZmlnICpjb25maWcpCiAgICAgICAgICAgICAg ICAgIG9mZnNldG9mKHN0cnVjdCBhY3BpXzIwX3JzZHAsIGV4dGVuZGVkX2NoZWNrc3VtKSwKICAg ICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBhY3BpXzIwX3JzZHApKTsKIAotICAgIGlmICgg IW5ld192bV9naWQoY29uZmlnKSApCisgICAgaWYgKCAhbmV3X3ZtX2dpZChjdHh0LCBjb25maWcp ICkKICAgICAgICAgZ290byBvb207CiAKICAgICAqKHN0cnVjdCBhY3BpX2luZm8gKiljb25maWct PmFpbmZvcCA9IGNvbmZpZy0+YWluZm87CmRpZmYgLS1naXQgYS90b29scy9maXJtd2FyZS9odm1s b2FkZXIvYWNwaS9saWJhY3BpLmggYi90b29scy9maXJtd2FyZS9odm1sb2FkZXIvYWNwaS9saWJh Y3BpLmgKaW5kZXggYjA1MmVhYi4uODdhMjkzNyAxMDA2NDQKLS0tIGEvdG9vbHMvZmlybXdhcmUv aHZtbG9hZGVyL2FjcGkvbGliYWNwaS5oCisrKyBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9h Y3BpL2xpYmFjcGkuaApAQCAtNjQsNiArNjQsMTMgQEAgc3RydWN0IGFjcGlfbnVtYSB7CiAgICAg eGVuX3ZtZW1yYW5nZV90ICp2bWVtcmFuZ2U7CiB9OwogCitzdHJ1Y3QgYWNwaV9jdHh0IHsKKyAg ICBzdHJ1Y3QgYWNwaV9tZW1fb3BzIHsKKyAgICAgICAgdm9pZCAqKCphbGxvYykoc3RydWN0IGFj cGlfY3R4dCAqY3R4dCwgdWludDMyX3Qgc2l6ZSwgdWludDMyX3QgYWxpZ24pOworICAgICAgICB1 bnNpZ25lZCBsb25nICgqdjJwKShzdHJ1Y3QgYWNwaV9jdHh0ICpjdHh0LCB2b2lkICp2KTsKKyAg ICB9IG1lbV9vcHM7Cit9OworCiBzdHJ1Y3QgYWNwaV9jb25maWcgewogICAgIGNvbnN0IHVuc2ln bmVkIGNoYXIgKmRzZHRfYW55Y3B1OwogICAgIHVuc2lnbmVkIGludCBkc2R0X2FueWNwdV9sZW47 CkBAIC05Nyw3ICsxMDQsNyBAQCBzdHJ1Y3QgYWNwaV9jb25maWcgewogICAgIHVuc2lnbmVkIGlu dCByc2RwOwogfTsKIAotdm9pZCBhY3BpX2J1aWxkX3RhYmxlcyhzdHJ1Y3QgYWNwaV9jb25maWcg KmNvbmZpZyk7Cit2b2lkIGFjcGlfYnVpbGRfdGFibGVzKHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQs IHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnKTsKIAogI2VuZGlmIC8qIF9fTElCQUNQSV9IX18g Ki8KIApkaWZmIC0tZ2l0IGEvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3V0aWwuYyBiL3Rvb2xz L2Zpcm13YXJlL2h2bWxvYWRlci91dGlsLmMKaW5kZXggMDgzMjhmOC4uOTQzODU3MSAxMDA2NDQK LS0tIGEvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL3V0aWwuYworKysgYi90b29scy9maXJtd2Fy ZS9odm1sb2FkZXIvdXRpbC5jCkBAIC04NjYsMTAgKzg2NiwyMSBAQCBzdGF0aWMgdWludDhfdCBi YXR0ZXJ5X3BvcnRfZXhpc3RzKHZvaWQpCiAgICAgcmV0dXJuIChpbmIoMHg4OCkgPT0gMHgxRik7 CiB9CiAKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGFjcGlfdjJwKHN0cnVjdCBhY3BpX2N0eHQgKmN0 eHQsIHZvaWQgKnYpCit7CisgICAgcmV0dXJuIHZpcnRfdG9fcGh5cyh2KTsKK30KKworc3RhdGlj IHZvaWQgKmFjcGlfbWVtX2FsbG9jKHN0cnVjdCBhY3BpX2N0eHQgKmN0eHQsIHVpbnQzMl90IHNp emUsIHVpbnQzMl90IGFsaWduKQoreworICAgIHJldHVybiBtZW1fYWxsb2Moc2l6ZSwgYWxpZ24p OworfQorCiB2b2lkIGh2bWxvYWRlcl9hY3BpX2J1aWxkX3RhYmxlcyhzdHJ1Y3QgYWNwaV9jb25m aWcgKmNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBwaHlzaWNhbCkKIHsKICAgICBjb25zdCBjaGFyICpzOworICAgIHN0cnVjdCBhY3BpX2N0eHQg Y3R4dDsKIAogICAgIC8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXNlIHRoZSBhY3BpIGluZm8gYXJl YS4gKi8KICAgICBtZW1faG9sZV9wb3B1bGF0ZV9yYW0oQUNQSV9JTkZPX1BIWVNJQ0FMX0FERFJF U1MgPj4gUEFHRV9TSElGVCwgMSk7CkBAIC05MzAsNyArOTQxLDEwIEBAIHZvaWQgaHZtbG9hZGVy X2FjcGlfYnVpbGRfdGFibGVzKHN0cnVjdCBhY3BpX2NvbmZpZyAqY29uZmlnLAogICAgIGNvbmZp Zy0+cnNkcCA9IHBoeXNpY2FsOwogICAgIGNvbmZpZy0+YWluZm9wID0gQUNQSV9JTkZPX1BIWVNJ Q0FMX0FERFJFU1M7CiAKLSAgICBhY3BpX2J1aWxkX3RhYmxlcyhjb25maWcpOworICAgIGN0eHQu bWVtX29wcy5hbGxvYyA9IGFjcGlfbWVtX2FsbG9jOworICAgIGN0eHQubWVtX29wcy52MnAgPSBh Y3BpX3YycDsKKworICAgIGFjcGlfYnVpbGRfdGFibGVzKCZjdHh0LCBjb25maWcpOwogCiAgICAg aHZtX3BhcmFtX3NldChIVk1fUEFSQU1fVk1fR0VORVJBVElPTl9JRF9BRERSLCBjb25maWctPmFp bmZvLnZtX2dpZF9hZGRyKTsKIH0KLS0gCjEuNy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==