From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Update "set auto-load" patchset and the --with-auto-load-safe-path setting. Date: Thu, 23 Jul 2026 18:30:25 GMT Message-ID: <178483142507.1.15409148201391503255.rpms-gdb-fdf21a3584ce@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: fdf21a3584ceb7f9ce19488009a78ca09fd739db ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogZmRmMjFhMzU4NGNlYjdmOWNlMTk0ODgwMDlhNzhjYTA5ZmQ3MzlkYgog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMi0wNC0yNFQyMjoyNDoxMiswMjowMAogICAg ICAgICAgICBTdGF0cyAgOiArNTYxOC8tNTA2MiBpbiAzMSBmaWxlKHMpCiAgICAgICAgICAgIFVS TCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvZmRmMjFhMzU4 NGNlYjdmOWNlMTk0ODgwMDlhNzhjYTA5ZmQ3MzlkYj9icmFuY2g9Zml4LWR1cC1wYXRjaAoKICAg ICAgICAgICAgTG9nOgogICAgICAgICAgICBVcGRhdGUgInNldCBhdXRvLWxvYWQiIHBhdGNoc2V0 IGFuZCB0aGUgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGggc2V0dGluZy4KCi0gW1JIRUxdIERp c2FibGUgZ2RiLWFkZC1pbmRleCBldmVuIG9uIFJIRUwtNiBhcyBSSEVMLTYuMCBoYWQgdG9vIG9s ZCBlbGZ1dGlscy4KCi0tLQpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTAxb2YxMi5wYXRjaCBi L2dkYi1hdXRvbG9hZC0wMW9mMTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGQzMmIyMWYuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTAxb2YxMi5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDY1ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3Zz LzIwMTItMDEvbXNnMDAyMDIuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8y NCAxOToxMjozMQkxLjEzNzcxCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMDo1 NjozMwkxLjEzNzcyCi0jIyAtMSwzICsxLDEyIEBACi0rMjAxMi0wMS0yNCAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwlDb2RlIGNsZWFudXAuCi0rCSog Y2xpL2NsaS1jbWRzLmMgKHNvdXJjZV9zY3JpcHRfZnJvbV9zdHJlYW0pOiBOZXZlciBmY2xvc2Ug U1RSRUFNLgotKwlVcGRhdGUgdGhlIGZ1bmN0aW9uIGNvbW1lbnQgZm9yIGl0LgotKwkoc291cmNl X3NjcmlwdF93aXRoX3NlYXJjaCk6IENhbGwgbWFrZV9jbGVhbnVwX2ZjbG9zZSBmb3IgU1RSRUFN LgotKwkqIGNsaS9jbGktc2NyaXB0LmMgKHNjcmlwdF9mcm9tX2ZpbGUpOiBEbyBub3QgY2FsbCBt YWtlX2NsZWFudXBfZmNsb3NlCi0rCWZvciBTVFJFQU0uCi0rCi0gMjAxMi0wMS0yNCAgUGVkcm8g QWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KLSAKLSAJKiBicmVha3BvaW50LmMgKGJwc3RhdF9z dG9wX3N0YXR1cyk6IE1vdmluZyBjbGVhcmluZyBwcmludF9pdAotLS0tIHNyYy9nZGIvY2xpL2Ns aS1jbWRzLmMJMjAxMi8wMS8yMyAxNjozNzowMwkxLjEyMwotKysrIHNyYy9nZGIvY2xpL2NsaS1j bWRzLmMJMjAxMi8wMS8yNCAyMDo1NjozMwkxLjEyNAotQEAgLTUyNyw4ICs1MjcsNyBAQAotICAg cmV0dXJuIDE7Ci0gfQotIAotLS8qIExvYWQgc2NyaXB0IEZJTEUsIHdoaWNoIGhhcyBhbHJlYWR5 IGJlZW4gb3BlbmVkIGFzIFNUUkVBTS4KLS0gICBTVFJFQU0gaXMgY2xvc2VkIGJlZm9yZSB3ZSBy ZXR1cm4uICAqLwotKy8qIExvYWQgc2NyaXB0IEZJTEUsIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4g b3BlbmVkIGFzIFNUUkVBTS4gICovCi0gCi0gc3RhdGljIHZvaWQKLSBzb3VyY2Vfc2NyaXB0X2Zy b21fc3RyZWFtIChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZpbGUpCi1AQCAtNTU2LDEyICs1 NTUsOSBAQAotIAkgIGVsc2UKLSAJICAgIHsKLSAJICAgICAgLyogTm9wZSwganVzdCBwdW50LiAg Ki8KLS0JICAgICAgZmNsb3NlIChzdHJlYW0pOwotIAkgICAgICB0aHJvd19leGNlcHRpb24gKGUp OwotIAkgICAgfQotIAl9Ci0tICAgICAgZWxzZQotLQlmY2xvc2UgKHN0cmVhbSk7Ci0gICAgIH0K LSAgIGVsc2UKLSAgICAgc2NyaXB0X2Zyb21fZmlsZSAoc3RyZWFtLCBmaWxlKTsKLUBAIC01OTUs NiArNTkxLDcgQEAKLSAgICAgfQotIAotICAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwICh4 ZnJlZSwgZnVsbF9wYXRoKTsKLSsgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7Ci0gICAv KiBUaGUgcHl0aG9uIHN1cHBvcnQgcmVvcGVucyB0aGUgZmlsZSwgc28gd2UgbmVlZCB0byBwYXNz IGZ1bGxfcGF0aCBoZXJlCi0gICAgICBpbiBjYXNlIHRoZSBmaWxlIHdhcyBmb3VuZCBvbiB0aGUg c2VhcmNoIHBhdGguICBJdCdzIHVzZWZ1bCB0byBkbyB0aGlzCi0gICAgICBhbnl3YXkgc28gdGhh dCBlcnJvciBtZXNzYWdlcyBzaG93IHRoZSBhY3R1YWwgZmlsZSB1c2VkLiAgQnV0IG9ubHkgZG8K LS0tLSBzcmMvZ2RiL2NsaS9jbGktc2NyaXB0LmMJMjAxMi8wMS8wNCAwODoxNzoxNwkxLjczCi0r Kysgc3JjL2dkYi9jbGkvY2xpLXNjcmlwdC5jCTIwMTIvMDEvMjQgMjA6NTY6MzMJMS43NAotQEAg LTE2MTQsMTEgKzE2MTQsOSBAQAotICAgaWYgKHN0cmVhbSA9PSBOVUxMKQotICAgICBpbnRlcm5h bF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLCBfKCJjYWxsZWQgd2l0aCBOVUxMIGZpbGUgcG9p bnRlciEiKSk7Ci0gCi0tICBvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXBfZmNsb3NlIChzdHJl YW0pOwotLQotICAgb2xkX2xpbmVzLm9sZF9saW5lID0gc291cmNlX2xpbmVfbnVtYmVyOwotICAg b2xkX2xpbmVzLm9sZF9maWxlID0gc291cmNlX2ZpbGVfbmFtZTsKLS0gIG1ha2VfY2xlYW51cCAo c291cmNlX2NsZWFudXBfbGluZXMsICZvbGRfbGluZXMpOwotKyAgb2xkX2NsZWFudXBzID0gbWFr ZV9jbGVhbnVwIChzb3VyY2VfY2xlYW51cF9saW5lcywgJm9sZF9saW5lcyk7Ci0gICBzb3VyY2Vf bGluZV9udW1iZXIgPSAwOwotICAgc291cmNlX2ZpbGVfbmFtZSA9IGZpbGU7Ci0gICAvKiBUaGlz IHdpbGwgZ2V0IHNldCBldmVyeSB0aW1lIHdlIHJlYWQgYSBsaW5lLiAgU28gaXQgd29uJ3Qgc3Rh eSAiIgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wMW9mMTgucGF0Y2ggYi9nZGItYXV0b2xv YWQtMDFvZjE4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMmIy MWYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDFvZjE4LnBhdGNoCkBAIC0wLDAg KzEsNjUgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDEvbXNnMDAy MDIuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAxOToxMjozMQkxLjEz NzcxCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMDo1NjozMwkxLjEzNzcyCisj IyAtMSwzICsxLDEyIEBACisrMjAxMi0wMS0yNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgorKworKwlDb2RlIGNsZWFudXAuCisrCSogY2xpL2NsaS1jbWRzLmMg KHNvdXJjZV9zY3JpcHRfZnJvbV9zdHJlYW0pOiBOZXZlciBmY2xvc2UgU1RSRUFNLgorKwlVcGRh dGUgdGhlIGZ1bmN0aW9uIGNvbW1lbnQgZm9yIGl0LgorKwkoc291cmNlX3NjcmlwdF93aXRoX3Nl YXJjaCk6IENhbGwgbWFrZV9jbGVhbnVwX2ZjbG9zZSBmb3IgU1RSRUFNLgorKwkqIGNsaS9jbGkt c2NyaXB0LmMgKHNjcmlwdF9mcm9tX2ZpbGUpOiBEbyBub3QgY2FsbCBtYWtlX2NsZWFudXBfZmNs b3NlCisrCWZvciBTVFJFQU0uCisrCisgMjAxMi0wMS0yNCAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNA cmVkaGF0LmNvbT4KKyAKKyAJKiBicmVha3BvaW50LmMgKGJwc3RhdF9zdG9wX3N0YXR1cyk6IE1v dmluZyBjbGVhcmluZyBwcmludF9pdAorLS0tIHNyYy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi8w MS8yMyAxNjozNzowMwkxLjEyMworKysrIHNyYy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi8wMS8y NCAyMDo1NjozMwkxLjEyNAorQEAgLTUyNyw4ICs1MjcsNyBAQAorICAgcmV0dXJuIDE7CisgfQor IAorLS8qIExvYWQgc2NyaXB0IEZJTEUsIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gb3BlbmVkIGFz IFNUUkVBTS4KKy0gICBTVFJFQU0gaXMgY2xvc2VkIGJlZm9yZSB3ZSByZXR1cm4uICAqLworKy8q IExvYWQgc2NyaXB0IEZJTEUsIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gb3BlbmVkIGFzIFNUUkVB TS4gICovCisgCisgc3RhdGljIHZvaWQKKyBzb3VyY2Vfc2NyaXB0X2Zyb21fc3RyZWFtIChGSUxF ICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZpbGUpCitAQCAtNTU2LDEyICs1NTUsOSBAQAorIAkgIGVs c2UKKyAJICAgIHsKKyAJICAgICAgLyogTm9wZSwganVzdCBwdW50LiAgKi8KKy0JICAgICAgZmNs b3NlIChzdHJlYW0pOworIAkgICAgICB0aHJvd19leGNlcHRpb24gKGUpOworIAkgICAgfQorIAl9 CistICAgICAgZWxzZQorLQlmY2xvc2UgKHN0cmVhbSk7CisgICAgIH0KKyAgIGVsc2UKKyAgICAg c2NyaXB0X2Zyb21fZmlsZSAoc3RyZWFtLCBmaWxlKTsKK0BAIC01OTUsNiArNTkxLDcgQEAKKyAg ICAgfQorIAorICAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRo KTsKKysgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7CisgICAvKiBUaGUgcHl0aG9uIHN1 cHBvcnQgcmVvcGVucyB0aGUgZmlsZSwgc28gd2UgbmVlZCB0byBwYXNzIGZ1bGxfcGF0aCBoZXJl CisgICAgICBpbiBjYXNlIHRoZSBmaWxlIHdhcyBmb3VuZCBvbiB0aGUgc2VhcmNoIHBhdGguICBJ dCdzIHVzZWZ1bCB0byBkbyB0aGlzCisgICAgICBhbnl3YXkgc28gdGhhdCBlcnJvciBtZXNzYWdl cyBzaG93IHRoZSBhY3R1YWwgZmlsZSB1c2VkLiAgQnV0IG9ubHkgZG8KKy0tLSBzcmMvZ2RiL2Ns aS9jbGktc2NyaXB0LmMJMjAxMi8wMS8wNCAwODoxNzoxNwkxLjczCisrKysgc3JjL2dkYi9jbGkv Y2xpLXNjcmlwdC5jCTIwMTIvMDEvMjQgMjA6NTY6MzMJMS43NAorQEAgLTE2MTQsMTEgKzE2MTQs OSBAQAorICAgaWYgKHN0cmVhbSA9PSBOVUxMKQorICAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxF X18sIF9fTElORV9fLCBfKCJjYWxsZWQgd2l0aCBOVUxMIGZpbGUgcG9pbnRlciEiKSk7CisgCist ICBvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXBfZmNsb3NlIChzdHJlYW0pOworLQorICAgb2xk X2xpbmVzLm9sZF9saW5lID0gc291cmNlX2xpbmVfbnVtYmVyOworICAgb2xkX2xpbmVzLm9sZF9m aWxlID0gc291cmNlX2ZpbGVfbmFtZTsKKy0gIG1ha2VfY2xlYW51cCAoc291cmNlX2NsZWFudXBf bGluZXMsICZvbGRfbGluZXMpOworKyAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwIChzb3Vy Y2VfY2xlYW51cF9saW5lcywgJm9sZF9saW5lcyk7CisgICBzb3VyY2VfbGluZV9udW1iZXIgPSAw OworICAgc291cmNlX2ZpbGVfbmFtZSA9IGZpbGU7CisgICAvKiBUaGlzIHdpbGwgZ2V0IHNldCBl dmVyeSB0aW1lIHdlIHJlYWQgYSBsaW5lLiAgU28gaXQgd29uJ3Qgc3RheSAiIgoKZGlmZiAtLWdp dCBhL2dkYi1hdXRvbG9hZC0wMm9mMTIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDJvZjEyLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDRjOWJiLi4wMDAwMDAwCi0tLSBhL2dk Yi1hdXRvbG9hZC0wMm9mMTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAot aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMS9tc2cwMDIwNS5odG1sCi0K LS0tLSBzcmMvZ2RiL2dkYl92ZWNzLmgKLSsrKyBzcmMvZ2RiL2dkYl92ZWNzLmgJMjAxMi0wNC0x NyAyMjowNDoyMy44MTg2NjYwMDAgKzAwMDAKLUBAIC0wLDAgKzEsMjggQEAKLSsvKiBTb21lIGNv bW1vbmx5LXVzZWQgVkVDIHR5cGVzLgotKwotKyAgIENvcHlyaWdodCAoQykgMjAxMiBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIu Ci0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKwotKyNp Zm5kZWYgR0RCX1ZFQ1NfSAotKyNkZWZpbmUgR0RCX1ZFQ1NfSAotKwotKyNpbmNsdWRlICJ2ZWMu aCIKLSsKLStERUZfVkVDX1AgKGNoYXJfcHRyKTsKLSsKLSsjZW5kaWYgLyogR0RCX1ZFQ1NfSCAq LwotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEvMjQgMjE6MzI6NTYJMS4xMzc3NAotIyMj IHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEvMjQgMjE6MzY6MzcJMS4xMzc3NQotIyMgLTEsMyAr MSwxMCBAQAotKzIwMTItMDEtMjQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSsK LSsJKiBhZGEtbGFuZy5jOiBJbmNsdWRlIGdkYl92ZWNzLmguCi0rCSogY2hhcnNldC5jOiBJbmNs dWRlIGdkYl92ZWNzLmguCi0rCSogdHJhY2Vwb2ludC5oOiBJbmNsdWRlIGdkYl92ZWNzLmguCi0r CSogZ2RiX3ZlY3MuaDogTmV3IGZpbGUuCi0rCi0gMjAxMi0wMS0yNCAgUGVkcm8gQWx2ZXMgIDxw ZWRyb0Bjb2Rlc291cmNlcnkuY29tPgotIAotIAkqIGJyZWFrcG9pbnQuYyAoYnJlYWtwb2ludF9o aXRfY2F0Y2hfZm9yaykKLS0tLSBzcmMvZ2RiL2FkYS1sYW5nLmMJMjAxMi8wMS8wNiAwMzozNDo0 NQkxLjMzMAotKysrIHNyYy9nZGIvYWRhLWxhbmcuYwkyMDEyLzAxLzI0IDIxOjM2OjM3CTEuMzMx Ci1AQCAtNTcsNiArNTcsNyBAQAotICNpbmNsdWRlICJvYnNlcnZlci5oIgotICNpbmNsdWRlICJ2 ZWMuaCIKLSAjaW5jbHVkZSAic3RhY2suaCIKLSsjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKLSAKLSAj aW5jbHVkZSAicHN5bXRhYi5oIgotICNpbmNsdWRlICJ2YWx1ZS5oIgotQEAgLTU2MjgsOCArNTYy OSw2IEBACi0gICByZXR1cm4gc3ltX25hbWU7Ci0gfQotIAotLURFRl9WRUNfUCAoY2hhcl9wdHIp OwotLQotIC8qIEEgY29tcGFuaW9uIGZ1bmN0aW9uIHRvIGFkYV9tYWtlX3N5bWJvbF9jb21wbGV0 aW9uX2xpc3QoKS4KLSAgICBDaGVjayBpZiBTWU1fTkFNRSByZXByZXNlbnRzIGEgc3ltYm9sIHdo aWNoIG5hbWUgd291bGQgYmUgc3VpdGFibGUKLSAgICB0byBjb21wbGV0ZSBURVhUIChURVhUX0xF TiBpcyB0aGUgbGVuZ3RoIG9mIFRFWFQpLCBpbiB3aGljaCBjYXNlCi0tLS0gc3JjL2dkYi9jaGFy c2V0LmMJMjAxMi8wMS8wNCAwODoxNzowMAkxLjQ2Ci0rKysgc3JjL2dkYi9jaGFyc2V0LmMJMjAx Mi8wMS8yNCAyMTozNjozNwkxLjQ3Ci1AQCAtMjcsNiArMjcsNyBAQAotICNpbmNsdWRlICJ2ZWMu aCIKLSAjaW5jbHVkZSAiZW52aXJvbi5oIgotICNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0rI2lu Y2x1ZGUgImdkYl92ZWNzLmgiCi0gCi0gI2luY2x1ZGUgPHN0ZGRlZi5oPgotICNpbmNsdWRlICJn ZGJfc3RyaW5nLmgiCi1AQCAtNzE3LDggKzcxOCw2IEBACi0gCi0gZXh0ZXJuIGluaXRpYWxpemVf ZmlsZV9mdHlwZSBfaW5pdGlhbGl6ZV9jaGFyc2V0OyAvKiAtV21pc3NpbmctcHJvdG90eXBlICov Ci0gCi0tREVGX1ZFQ19QIChjaGFyX3B0cik7Ci0tCi0gc3RhdGljIFZFQyAoY2hhcl9wdHIpICpj aGFyc2V0czsKLSAKLSAjaWZkZWYgUEhPTllfSUNPTlYKLS0tLSBzcmMvZ2RiL3RyYWNlcG9pbnQu aAkyMDEyLzAxLzA0IDA4OjI3OjU3CTEuNDYKLSsrKyBzcmMvZ2RiL3RyYWNlcG9pbnQuaAkyMDEy LzAxLzI0IDIxOjM2OjM3CTEuNDcKLUBAIC0yMiw2ICsyMiw3IEBACi0gI2luY2x1ZGUgImJyZWFr cG9pbnQuaCIKLSAjaW5jbHVkZSAidGFyZ2V0LmgiCi0gI2luY2x1ZGUgIm1lbXJhbmdlLmgiCi0r I2luY2x1ZGUgImdkYl92ZWNzLmgiCi0gCi0gLyogQSB0cmFjZSBzdGF0ZSB2YXJpYWJsZSBpcyBh IHZhbHVlIG1hbmFnZWQgYnkgYSB0YXJnZXQgYmVpbmcKLSAgICB0cmFjZWQuICBBIHRyYWNlIHN0 YXRlIHZhcmlhYmxlIChvciB0c3YgZm9yIHNob3J0KSBjYW4gYmUgYWNjZXNzZWQKLUBAIC0xNDMs OCArMTQ0LDYgQEAKLSAKLSAvKiBTdHJ1Y3QgdG8gY29sbGVjdCByYW5kb20gaW5mbyBhYm91dCB0 cmFjZXBvaW50cyBvbiB0aGUgdGFyZ2V0LiAgKi8KLSAKLS1ERUZfVkVDX1AgKGNoYXJfcHRyKTsK LS0KLSBzdHJ1Y3QgdXBsb2FkZWRfdHAKLSB7Ci0gICBpbnQgbnVtYmVyOwoKZGlmZiAtLWdpdCBh L2dkYi1hdXRvbG9hZC0wMm9mMTgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDJvZjE4LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NGM5YmIKLS0tIC9kZXYvbnVsbAor KysgYi9nZGItYXV0b2xvYWQtMDJvZjE4LnBhdGNoCkBAIC0wLDAgKzEsMTAzIEBACitodHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAxL21zZzAwMjA1Lmh0bWwKKworLS0tIHNy Yy9nZGIvZ2RiX3ZlY3MuaAorKysrIHNyYy9nZGIvZ2RiX3ZlY3MuaAkyMDEyLTA0LTE3IDIyOjA0 OjIzLjgxODY2NjAwMCArMDAwMAorQEAgLTAsMCArMSwyOCBAQAorKy8qIFNvbWUgY29tbW9ubHkt dXNlZCBWRUMgdHlwZXMuCisrCisrICAgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysKKysg ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisr ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrCisrI2lmbmRlZiBH REJfVkVDU19ICisrI2RlZmluZSBHREJfVkVDU19ICisrCisrI2luY2x1ZGUgInZlYy5oIgorKwor K0RFRl9WRUNfUCAoY2hhcl9wdHIpOworKworKyNlbmRpZiAvKiBHREJfVkVDU19IICovCisjIyMg c3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMTozMjo1NgkxLjEzNzc0CisjIyMgc3JjL2dk Yi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMTozNjozNwkxLjEzNzc1CisjIyAtMSwzICsxLDEwIEBA CisrMjAxMi0wMS0yNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgorKworKwkqIGFk YS1sYW5nLmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KKysJKiBjaGFyc2V0LmM6IEluY2x1ZGUgZ2Ri X3ZlY3MuaC4KKysJKiB0cmFjZXBvaW50Lmg6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KKysJKiBnZGJf dmVjcy5oOiBOZXcgZmlsZS4KKysKKyAyMDEyLTAxLTI0ICBQZWRybyBBbHZlcyAgPHBlZHJvQGNv ZGVzb3VyY2VyeS5jb20+CisgCisgCSogYnJlYWtwb2ludC5jIChicmVha3BvaW50X2hpdF9jYXRj aF9mb3JrKQorLS0tIHNyYy9nZGIvYWRhLWxhbmcuYwkyMDEyLzAxLzA2IDAzOjM0OjQ1CTEuMzMw CisrKysgc3JjL2dkYi9hZGEtbGFuZy5jCTIwMTIvMDEvMjQgMjE6MzY6MzcJMS4zMzEKK0BAIC01 Nyw2ICs1Nyw3IEBACisgI2luY2x1ZGUgIm9ic2VydmVyLmgiCisgI2luY2x1ZGUgInZlYy5oIgor ICNpbmNsdWRlICJzdGFjay5oIgorKyNpbmNsdWRlICJnZGJfdmVjcy5oIgorIAorICNpbmNsdWRl ICJwc3ltdGFiLmgiCisgI2luY2x1ZGUgInZhbHVlLmgiCitAQCAtNTYyOCw4ICs1NjI5LDYgQEAK KyAgIHJldHVybiBzeW1fbmFtZTsKKyB9CisgCistREVGX1ZFQ19QIChjaGFyX3B0cik7CistCisg LyogQSBjb21wYW5pb24gZnVuY3Rpb24gdG8gYWRhX21ha2Vfc3ltYm9sX2NvbXBsZXRpb25fbGlz dCgpLgorICAgIENoZWNrIGlmIFNZTV9OQU1FIHJlcHJlc2VudHMgYSBzeW1ib2wgd2hpY2ggbmFt ZSB3b3VsZCBiZSBzdWl0YWJsZQorICAgIHRvIGNvbXBsZXRlIFRFWFQgKFRFWFRfTEVOIGlzIHRo ZSBsZW5ndGggb2YgVEVYVCksIGluIHdoaWNoIGNhc2UKKy0tLSBzcmMvZ2RiL2NoYXJzZXQuYwky MDEyLzAxLzA0IDA4OjE3OjAwCTEuNDYKKysrKyBzcmMvZ2RiL2NoYXJzZXQuYwkyMDEyLzAxLzI0 IDIxOjM2OjM3CTEuNDcKK0BAIC0yNyw2ICsyNyw3IEBACisgI2luY2x1ZGUgInZlYy5oIgorICNp bmNsdWRlICJlbnZpcm9uLmgiCisgI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKysjaW5jbHVkZSAi Z2RiX3ZlY3MuaCIKKyAKKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUgImdkYl9zdHJp bmcuaCIKK0BAIC03MTcsOCArNzE4LDYgQEAKKyAKKyBleHRlcm4gaW5pdGlhbGl6ZV9maWxlX2Z0 eXBlIF9pbml0aWFsaXplX2NoYXJzZXQ7IC8qIC1XbWlzc2luZy1wcm90b3R5cGUgKi8KKyAKKy1E RUZfVkVDX1AgKGNoYXJfcHRyKTsKKy0KKyBzdGF0aWMgVkVDIChjaGFyX3B0cikgKmNoYXJzZXRz OworIAorICNpZmRlZiBQSE9OWV9JQ09OVgorLS0tIHNyYy9nZGIvdHJhY2Vwb2ludC5oCTIwMTIv MDEvMDQgMDg6Mjc6NTcJMS40NgorKysrIHNyYy9nZGIvdHJhY2Vwb2ludC5oCTIwMTIvMDEvMjQg MjE6MzY6MzcJMS40NworQEAgLTIyLDYgKzIyLDcgQEAKKyAjaW5jbHVkZSAiYnJlYWtwb2ludC5o IgorICNpbmNsdWRlICJ0YXJnZXQuaCIKKyAjaW5jbHVkZSAibWVtcmFuZ2UuaCIKKysjaW5jbHVk ZSAiZ2RiX3ZlY3MuaCIKKyAKKyAvKiBBIHRyYWNlIHN0YXRlIHZhcmlhYmxlIGlzIGEgdmFsdWUg bWFuYWdlZCBieSBhIHRhcmdldCBiZWluZworICAgIHRyYWNlZC4gIEEgdHJhY2Ugc3RhdGUgdmFy aWFibGUgKG9yIHRzdiBmb3Igc2hvcnQpIGNhbiBiZSBhY2Nlc3NlZAorQEAgLTE0Myw4ICsxNDQs NiBAQAorIAorIC8qIFN0cnVjdCB0byBjb2xsZWN0IHJhbmRvbSBpbmZvIGFib3V0IHRyYWNlcG9p bnRzIG9uIHRoZSB0YXJnZXQuICAqLworIAorLURFRl9WRUNfUCAoY2hhcl9wdHIpOworLQorIHN0 cnVjdCB1cGxvYWRlZF90cAorIHsKKyAgIGludCBudW1iZXI7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1 dG9sb2FkLTAzb2YxMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wM29mMTIucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwZWZjOGMuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2Fk LTAzb2YxMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxNSArMCwwIEBACi1odHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAxL21zZzAwMjE5Lmh0bWwKLQotIyMjIHNyYy9n ZGIvQ2hhbmdlTG9nCTIwMTIvMDEvMjYgMTY6NDQ6MjkJMS4xMzc4MAotIyMjIHNyYy9nZGIvQ2hh bmdlTG9nCTIwMTIvMDEvMjYgMjE6NTQ6NDIJMS4xMzc4MQotIyMgLTEsMyArMSwyMiBAQAotKzIw MTItMDEtMjYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsK LSsJRG8gbm90IG9wZW4gc2NyaXB0IGZpbGVuYW1lcyB0d2ljZS4KLSsJKiBjbGkvY2xpLWNtZHMu YyAoc291cmNlX3NjcmlwdF9mcm9tX3N0cmVhbSk6IFBhc3MgdG8KLSsJc291cmNlX3B5dGhvbl9z Y3JpcHQgYWxzbyBTVFJFQU0uCi0rCSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jIChzb3VyY2Vfc2Vj dGlvbl9zY3JpcHRzKTogUGFzcyB0bwotKwlzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmls ZSBhbHNvIFNUUkVBTS4KLSsJKGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IFBhc3MgdG8gc291 cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUKLSsJYWxzbyBJTlBVVC4KLSsJKiBweXRob24v cHl0aG9uLWludGVybmFsLmggKHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3 Ci0rCXBhcmFtZXRlciBmaWxlLCByZW5hbWUgcGFyYW1ldGVyIGZpbGUgdG8gZmlsZW5hbWUuCi0r CSogcHl0aG9uL3B5dGhvbi5jIChweXRob25fcnVuX3NpbXBsZV9maWxlKTogQ2FsbCBQeVJ1bl9T aW1wbGVGaWxlCi0rCWluc3RlYWQgaWYgIV9XSU4zMi4gIFVwZGF0ZSB0aGUgZnVuY3Rpb24gY29t bWVudC4KLSsJKHNvdXJjZV9weXRob25fc2NyaXB0LCBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jf b2JqZmlsZSkKLSsJKHNvdXJjZV9weXRob25fc2NyaXB0KTogTmV3IHBhcmFtZXRlciBmaWxlLCBy ZW5hbWUgcGFyYW1ldGVyIGZpbGUgdG8KLSsJZmlsZW5hbWUuICBQYXNzIEZJTEVOQU1FIHRvIHB5 dGhvbl9ydW5fc2ltcGxlX2ZpbGUuCi0rCSogcHl0aG9uL3B5dGhvbi5oIChzb3VyY2VfcHl0aG9u X3NjcmlwdCk6IE5ldyBwYXJhbWV0ZXIgZmlsZSwgcmVuYW1lCi0rCXBhcmFtZXRlciBmaWxlIHRv IGZpbGVuYW1lLgotKwotIDIwMTItMDEtMjYgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5j b20+Ci0gCi0gCSogY29yZWxvdy5jIChjb3JlX2hhc19mYWtlX3BpZCk6IERlbGV0ZS4KLUluZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jbGkvY2xpLWNtZHMuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi0wMS0wNCAw OToxNzoxNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jbGkv Y2xpLWNtZHMuYwkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAotQEAgLTUyOSw5 ICs1MjksNyBAQCBzb3VyY2Vfc2NyaXB0X2Zyb21fc3RyZWFtIChGSUxFICpzdHJlYW0sCi0gCi0g ICAgICAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19FUlJPUikKLSAJewotLSAgICAgICAgICAv KiBUaGUgcHl0aG9uIHN1cHBvcnQgcmVvcGVucyB0aGUgZmlsZSB1c2luZyBweXRob24gZnVuY3Rp b25zLAotLSAgICAgICAgICAgICBzbyB0aGVyZSdzIG5vIHBvaW50IGluIHBhc3NpbmcgU1RSRUFN IGhlcmUuICAqLwotLQkgIHNvdXJjZV9weXRob25fc2NyaXB0IChmaWxlKTsKLSsJICBzb3VyY2Vf cHl0aG9uX3NjcmlwdCAoc3RyZWFtLCBmaWxlKTsKLSAJfQotICAgICAgIGlmIChlLnJlYXNvbiA8 IDApCi0gCXsKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1s b2FkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhv bi9weS1hdXRvLWxvYWQuYwkyMDEyLTAxLTA0IDA5OjE3OjI1LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4 IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAotQEAgLTMxMiw3ICszMTIsNyBAQCBVc2UgYGluZm8g YXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0nIHRvCi0gCXsKLSAJICAvKiBJZiB0aGlzIGZpbGUg aXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLwotIAkgIGlmICghIGluX2hhc2hf dGFibGUpCi0tCSAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwg ZnVsbF9wYXRoKTsKLSsJICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpm aWxlLCBzdHJlYW0sIGZ1bGxfcGF0aCk7Ci0gCSAgZmNsb3NlIChzdHJlYW0pOwotIAkgIHhmcmVl IChmdWxsX3BhdGgpOwotIAl9Ci1AQCAtNDMxLDcgKzQzMSw3IEBAIGF1dG9fbG9hZF9vYmpmaWxl X3NjcmlwdCAoc3RydWN0IG9iamZpbGUKLSAJIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgd2Un ZCBldmVyIGxvYWQgaXQgdHdpY2UsCi0gCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQg dG8gYmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQotIAkgbG9hZHMgYW55d2F5LiAgKi8KLS0g ICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZGVidWdmaWxl KTsKLSsgICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5w dXQsIGRlYnVnZmlsZSk7Ci0gICAgICAgZmNsb3NlIChpbnB1dCk7Ci0gICAgIH0KLSAKLUluZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24taW50 ZXJuYWwuaAkyMDEyLTAxLTA0IDA5OjE3OjI1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAkyMDEyLTA0LTE4IDAwOjQx OjQyLjY5Njg1NTQzMCArMDIwMAotQEAgLTI4OSw4ICsyODksOCBAQCBleHRlcm4gY29uc3Qgc3Ry dWN0IGxhbmd1YWdlX2RlZm4gKnB5dGhvCi0gCi0gdm9pZCBnZGJweV9wcmludF9zdGFjayAodm9p ZCk7Ci0gCi0tdm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCi0tCQkJCSAgICAgICBjb25zdCBjaGFyICpmaWxlKTsKLSt2b2lkIHNv dXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg RklMRSAqZmlsZSwKLSsJCQkJICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLSAKLSBQeU9i amVjdCAqcHl0aG9uX3N0cmluZ190b191bmljb2RlIChQeU9iamVjdCAqb2JqKTsKLSBjaGFyICp1 bmljb2RlX3RvX3RhcmdldF9zdHJpbmcgKFB5T2JqZWN0ICp1bmljb2RlX3N0cik7Ci1JbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMi0wNC0xOCAw MDo0MTozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRo b24vcHl0aG9uLmMJMjAxMi0wNC0xOCAwMDo0MTo0Mi42OTY4NTU0MzAgKzAyMDAKLUBAIC0xNTQs MzQgKzE1NCwzMSBAQCBlbnN1cmVfcHl0aG9uX2VudiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyCi0g ICByZXR1cm4gbWFrZV9jbGVhbnVwIChyZXN0b3JlX3B5dGhvbl9lbnYsIGVudik7Ci0gfQotIAot LS8qIEEgd3JhcHBlciBhcm91bmQgUHlSdW5fU2ltcGxlRmlsZS4gIEZJTEVOQU1FIGlzIHRoZSBu YW1lIG9mCi0tICAgdGhlIFB5dGhvbiBzY3JpcHQgdG8gcnVuLgotKy8qIEEgd3JhcHBlciBhcm91 bmQgUHlSdW5fU2ltcGxlRmlsZS4gIEZJTEUgaXMgdGhlIFB5dGhvbiBzY3JpcHQgdG8gcnVuCi0r ICAgbmFtZWQgRklMRU5BTUUuCi0gCi0tICAgT25lIG9mIHRoZSBwYXJhbWV0ZXJzIG9mIFB5UnVu X1NpbXBsZUZpbGUgaXMgYSBGSUxFICouCi0tICAgVGhlIHByb2JsZW0gaXMgdGhhdCB0eXBlIEZJ TEUgaXMgZXh0cmVtZWx5IHN5c3RlbSBhbmQgY29tcGlsZXIKLS0gICBkZXBlbmRlbnQuICBTbywg dW5sZXNzIHRoZSBQeXRob24gbGlicmFyeSBoYXMgYmVlbiBjb21waWxlZCB1c2luZwotLSAgIHRo ZSBzYW1lIGJ1aWxkIGVudmlyb25tZW50IGFzIEdEQiwgd2UgcnVuIHRoZSByaXNrIG9mIGdldHRp bmcKLS0gICBhIGNyYXNoIGR1ZSB0byBpbmNvbnNpc3RlbmNpZXMgYmV0d2VlbiB0aGUgZGVmaW5p dGlvbiB1c2VkIGJ5IEdEQiwKLS0gICBhbmQgdGhlIGRlZmluaXRpb24gdXNlZCBieSBQeXRob24u ICBBIG1pc21hdGNoIGNhbiB2ZXJ5IGxpa2VseQotLSAgIGxlYWQgdG8gYSBjcmFzaC4KLS0KLS0g ICBUaGVyZSBpcyBhbHNvIHRoZSBzaXR1YXRpb24gd2hlcmUgdGhlIFB5dGhvbiBsaWJyYXJ5IGFu ZCBHREIKLS0gICBhcmUgdXNpbmcgdHdvIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgQyBydW50 aW1lIGxpYnJhcnkuCi0tICAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdmlzaWJsZSBvbiBXaW5kb3dz LCB3aGVyZSBmZXcgdXNlcnMgd291bGQKLS0gICBidWlsZCBQeXRob24gdGhlbXNlbHZlcyAodGhp cyBpcyBubyB0cml2aWFsIHRhc2sgb24gdGhpcyBwbGF0Zm9ybSksCi0tICAgYW5kIHRodXMgdXNl IGJpbmFyaWVzIGJ1aWx0IGJ5IHNvbWVvbmUgZWxzZSBpbnN0ZWFkLiBQeXRob24sCi0tICAgYmVp bmcgYnVpbHQgd2l0aCBWQywgd291bGQgdXNlIG9uZSB2ZXJzaW9uIG9mIHRoZSBtc3ZjciBETEwK LS0gICAoRWcuIG1zdmNyMTAwLmRsbCksIHdoaWxlIE1pbkdXIHVzZXMgbXN2Y3J0LmRsbC4gIEEg RklMRSAqCi0tICAgZnJvbSBvbmUgcnVudGltZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBvcGVyYXRl IGNvcnJlY3RseSBpbgotKyAgIE9uIFdpbmRvd3MgaG9zdHMgZmV3IHVzZXJzIHdvdWxkIGJ1aWxk IFB5dGhvbiB0aGVtc2VsdmVzICh0aGlzIGlzIG5vCi0rICAgdHJpdmlhbCB0YXNrIG9uIHRoaXMg cGxhdGZvcm0pLCBhbmQgdGh1cyB1c2UgYmluYXJpZXMgYnVpbHQgYnkKLSsgICBzb21lb25lIGVs c2UgaW5zdGVhZC4gIFRoZXJlIG1heSBoYXBwZW4gc2l0dWF0aW9uIHdoZXJlIHRoZSBQeXRob24K LSsgICBsaWJyYXJ5IGFuZCBHREIgYXJlIHVzaW5nIHR3byBkaWZmZXJlbnQgdmVyc2lvbnMgb2Yg dGhlIEMgcnVudGltZQotKyAgIGxpYnJhcnkuICBQeXRob24sIGJlaW5nIGJ1aWx0IHdpdGggVkMs IHdvdWxkIHVzZSBvbmUgdmVyc2lvbiBvZiB0aGUKLSsgICBtc3ZjciBETEwgKEVnLiBtc3ZjcjEw MC5kbGwpLCB3aGlsZSBNaW5HVyB1c2VzIG1zdmNydC5kbGwuCi0rICAgQSBGSUxFICogZnJvbSBv bmUgcnVudGltZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBvcGVyYXRlIGNvcnJlY3RseSBpbgotICAg IHRoZSBvdGhlciBydW50aW1lLgotIAotLSAgIFRvIHdvcmsgYXJvdW5kIHRoaXMgcG90ZW50aWFs IGlzc3VlLCB3ZSBjcmVhdGUgdGhlIEZJTEUgb2JqZWN0Ci0tICAgdXNpbmcgUHl0aG9uIHJvdXRp bmVzLCB0aHVzIG1ha2luZyBzdXJlIHRoYXQgaXQgaXMgY29tcGF0aWJsZQotLSAgIHdpdGggdGhl IFB5dGhvbiBsaWJyYXJ5LiAgKi8KLSsgICBUbyB3b3JrIGFyb3VuZCB0aGlzIHBvdGVudGlhbCBp c3N1ZSwgd2UgY3JlYXRlIG9uIFdpbmRvd3MgaG9zdHMgdGhlCi0rICAgRklMRSBvYmplY3QgdXNp bmcgUHl0aG9uIHJvdXRpbmVzLCB0aHVzIG1ha2luZyBzdXJlIHRoYXQgaXQgaXMKLSsgICBjb21w YXRpYmxlIHdpdGggdGhlIFB5dGhvbiBsaWJyYXJ5LiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLXB5 dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3B5dGhvbl9ydW5f c2ltcGxlX2ZpbGUgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotIHsKLSsjaWZu ZGVmIF9XSU4zMgotKwotKyAgUHlSdW5fU2ltcGxlRmlsZSAoZmlsZSwgZmlsZW5hbWUpOwotKwot KyNlbHNlIC8qIF9XSU4zMiAqLwotKwotICAgY2hhciAqZnVsbF9wYXRoOwotICAgUHlPYmplY3Qg KnB5dGhvbl9maWxlOwotICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7Ci1AQCAtMjAxLDYgKzE5 OCw4IEBAIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGUKLSAgIG1ha2Vf Y2xlYW51cF9weV9kZWNyZWYgKHB5dGhvbl9maWxlKTsKLSAgIFB5UnVuX1NpbXBsZUZpbGUgKFB5 RmlsZV9Bc0ZpbGUgKHB5dGhvbl9maWxlKSwgZmlsZW5hbWUpOwotICAgZG9fY2xlYW51cHMgKGNs ZWFudXApOwotKwotKyNlbmRpZiAvKiBfV0lOMzIgKi8KLSB9Ci0gCi0gLyogR2l2ZW4gYSBjb21t YW5kX2xpbmUsIHJldHVybiBhIGNvbW1hbmQgc3RyaW5nIHN1aXRhYmxlIGZvciBwYXNzaW5nCi1A QCAtNjIzLDE3ICs2MjIsMTcgQEAgZ2RicHlfcGFyc2VfYW5kX2V2YWwgKFB5T2JqZWN0ICpzZWxm LCBQeQotIH0KLSAKLSAvKiBSZWFkIGEgZmlsZSBhcyBQeXRob24gY29kZS4KLS0gICBGSUxFIGlz IHRoZSBuYW1lIG9mIHRoZSBmaWxlLgotKyAgIEZJTEUgaXMgdGhlIGZpbGUgdG8gcnVuLiAgRklM RU5BTUUgaXMgbmFtZSBvZiB0aGUgZmlsZSBGSUxFLgotICAgIFRoaXMgZG9lcyBub3QgdGhyb3cg YW55IGVycm9ycy4gIElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgcHl0aG9uIHdpbGwgcHJpbnQKLSAg ICB0aGUgdHJhY2ViYWNrIGFuZCBjbGVhciB0aGUgZXJyb3IgaW5kaWNhdG9yLiAgKi8KLSAKLSB2 b2lkCi0tc291cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUpCi0rc291cmNlX3B5 dGhvbl9zY3JpcHQgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotIHsKLSAgIHN0 cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotIAotICAgY2xlYW51cCA9IGVuc3VyZV9weXRob25fZW52 IChnZXRfY3VycmVudF9hcmNoICgpLCBjdXJyZW50X2xhbmd1YWdlKTsKLS0gIHB5dGhvbl9ydW5f c2ltcGxlX2ZpbGUgKGZpbGUpOwotKyAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoZmlsZSwgZmls ZW5hbWUpOwotICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotIH0KLSAKLUBAIC0xMDQxLDE5ICsx MDQwLDIwIEBAIGdkYnB5X3Byb2dzcGFjZXMgKFB5T2JqZWN0ICp1bnVzZWQxLCBQeU8KLSAgICBz b3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZTsgaXQgaXMgTlVMTCBhdCBvdGhlciB0aW1l cy4gICovCi0gc3RhdGljIHN0cnVjdCBvYmpmaWxlICpnZGJweV9jdXJyZW50X29iamZpbGU7Ci0g Ci0tLyogU2V0IHRoZSBjdXJyZW50IG9iamZpbGUgdG8gT0JKRklMRSBhbmQgdGhlbiByZWFkIEZJ TEUgYXMgUHl0aG9uIGNvZGUuCi0tICAgVGhpcyBkb2VzIG5vdCB0aHJvdyBhbnkgZXJyb3JzLiAg SWYgYW4gZXhjZXB0aW9uIG9jY3VycyBweXRob24gd2lsbCBwcmludAotLSAgIHRoZSB0cmFjZWJh Y2sgYW5kIGNsZWFyIHRoZSBlcnJvciBpbmRpY2F0b3IuICAqLwotKy8qIFNldCB0aGUgY3VycmVu dCBvYmpmaWxlIHRvIE9CSkZJTEUgYW5kIHRoZW4gcmVhZCBGSUxFIG5hbWVkIEZJTEVOQU1FCi0r ICAgYXMgUHl0aG9uIGNvZGUuICBUaGlzIGRvZXMgbm90IHRocm93IGFueSBlcnJvcnMuICBJZiBh biBleGNlcHRpb24KLSsgICBvY2N1cnMgcHl0aG9uIHdpbGwgcHJpbnQgdGhlIHRyYWNlYmFjayBh bmQgY2xlYXIgdGhlIGVycm9yIGluZGljYXRvci4gICovCi0gCi0gdm9pZAotLXNvdXJjZV9weXRo b25fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hh ciAqZmlsZSkKLStzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotIHsKLSAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVw czsKLSAKLSAgIGNsZWFudXBzID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9vYmpmaWxlX2FyY2gg KG9iamZpbGUpLCBjdXJyZW50X2xhbmd1YWdlKTsKLSAgIGdkYnB5X2N1cnJlbnRfb2JqZmlsZSA9 IG9iamZpbGU7Ci0gCi0tICBweXRob25fcnVuX3NpbXBsZV9maWxlIChmaWxlKTsKLSsgIHB5dGhv bl9ydW5fc2ltcGxlX2ZpbGUgKGZpbGUsIGZpbGVuYW1lKTsKLSAKLSAgIGRvX2NsZWFudXBzIChj bGVhbnVwcyk7Ci0gICBnZGJweV9jdXJyZW50X29iamZpbGUgPSBOVUxMOwotQEAgLTExMjksNyAr MTEyOSw3IEBAIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QKLSB9Ci0g Ci0gdm9pZAotLXNvdXJjZV9weXRob25fc2NyaXB0IChjb25zdCBjaGFyICpmaWxlKQotK3NvdXJj ZV9weXRob25fc2NyaXB0IChGSUxFICpmaWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKLSB7Ci0g ICB0aHJvd19lcnJvciAoVU5TVVBQT1JURURfRVJST1IsCi0gCSAgICAgICBfKCJQeXRob24gc2Ny aXB0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb3B5IG9mIEdEQi4iKSk7Ci1JbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5oCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAw MDo0MTozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRo b24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0MTo0Mi42OTc4NTU0MjcgKzAyMDAKLUBAIC0zMCw3 ICszMCw3IEBAIGV4dGVybiB2b2lkIGZpbmlzaF9weXRob25faW5pdGlhbGl6YXRpb24KLSAKLSB2 b2lkIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9saW5l ICopOwotIAotLXZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUpOwot K3ZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVu YW1lKTsKLSAKLSB2b2lkIHJ1bl9weXRob25fc2NyaXB0IChpbnQgYXJnYywgY2hhciAqKmFyZ3Yp OwotIAoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wM29mMTgucGF0Y2ggYi9nZGItYXV0b2xv YWQtMDNvZjE4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwZWZj OGMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDNvZjE4LnBhdGNoCkBAIC0wLDAg KzEsMjE1IEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAxL21zZzAw MjE5Lmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEvMjYgMTY6NDQ6MjkJMS4x Mzc4MAorIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEvMjYgMjE6NTQ6NDIJMS4xMzc4MQor IyMgLTEsMyArMSwyMiBAQAorKzIwMTItMDEtMjYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KKysKKysJRG8gbm90IG9wZW4gc2NyaXB0IGZpbGVuYW1lcyB0d2lj ZS4KKysJKiBjbGkvY2xpLWNtZHMuYyAoc291cmNlX3NjcmlwdF9mcm9tX3N0cmVhbSk6IFBhc3Mg dG8KKysJc291cmNlX3B5dGhvbl9zY3JpcHQgYWxzbyBTVFJFQU0uCisrCSogcHl0aG9uL3B5LWF1 dG8tbG9hZC5jIChzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogUGFzcyB0bworKwlzb3VyY2VfcHl0 aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSBhbHNvIFNUUkVBTS4KKysJKGF1dG9fbG9hZF9vYmpmaWxl X3NjcmlwdCk6IFBhc3MgdG8gc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUKKysJYWxz byBJTlBVVC4KKysJKiBweXRob24vcHl0aG9uLWludGVybmFsLmggKHNvdXJjZV9weXRob25fc2Ny aXB0X2Zvcl9vYmpmaWxlKTogTmV3CisrCXBhcmFtZXRlciBmaWxlLCByZW5hbWUgcGFyYW1ldGVy IGZpbGUgdG8gZmlsZW5hbWUuCisrCSogcHl0aG9uL3B5dGhvbi5jIChweXRob25fcnVuX3NpbXBs ZV9maWxlKTogQ2FsbCBQeVJ1bl9TaW1wbGVGaWxlCisrCWluc3RlYWQgaWYgIV9XSU4zMi4gIFVw ZGF0ZSB0aGUgZnVuY3Rpb24gY29tbWVudC4KKysJKHNvdXJjZV9weXRob25fc2NyaXB0LCBzb3Vy Y2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSkKKysJKHNvdXJjZV9weXRob25fc2NyaXB0KTog TmV3IHBhcmFtZXRlciBmaWxlLCByZW5hbWUgcGFyYW1ldGVyIGZpbGUgdG8KKysJZmlsZW5hbWUu ICBQYXNzIEZJTEVOQU1FIHRvIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUuCisrCSogcHl0aG9uL3B5 dGhvbi5oIChzb3VyY2VfcHl0aG9uX3NjcmlwdCk6IE5ldyBwYXJhbWV0ZXIgZmlsZSwgcmVuYW1l CisrCXBhcmFtZXRlciBmaWxlIHRvIGZpbGVuYW1lLgorKworIDIwMTItMDEtMjYgIFBlZHJvIEFs dmVzICA8cGFsdmVzQHJlZGhhdC5jb20+CisgCisgCSogY29yZWxvdy5jIChjb3JlX2hhc19mYWtl X3BpZCk6IERlbGV0ZS4KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jbGkvY2xpLWNt ZHMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY2xpL2Ns aS1jbWRzLmMJMjAxMi0wMS0wNCAwOToxNzoxNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1 NTQzMCArMDIwMAorQEAgLTUyOSw5ICs1MjksNyBAQCBzb3VyY2Vfc2NyaXB0X2Zyb21fc3RyZWFt IChGSUxFICpzdHJlYW0sCisgCisgICAgICAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19FUlJP UikKKyAJeworLSAgICAgICAgICAvKiBUaGUgcHl0aG9uIHN1cHBvcnQgcmVvcGVucyB0aGUgZmls ZSB1c2luZyBweXRob24gZnVuY3Rpb25zLAorLSAgICAgICAgICAgICBzbyB0aGVyZSdzIG5vIHBv aW50IGluIHBhc3NpbmcgU1RSRUFNIGhlcmUuICAqLworLQkgIHNvdXJjZV9weXRob25fc2NyaXB0 IChmaWxlKTsKKysJICBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoc3RyZWFtLCBmaWxlKTsKKyAJfQor ICAgICAgIGlmIChlLnJlYXNvbiA8IDApCisgCXsKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTAxLTA0IDA5OjE3OjI1 LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1h dXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAorQEAgLTMxMiw3 ICszMTIsNyBAQCBVc2UgYGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0nIHRvCisgCXsK KyAJICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAq LworIAkgIGlmICghIGluX2hhc2hfdGFibGUpCistCSAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9m b3Jfb2JqZmlsZSAob2JqZmlsZSwgZnVsbF9wYXRoKTsKKysJICAgIHNvdXJjZV9weXRob25fc2Ny aXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBzdHJlYW0sIGZ1bGxfcGF0aCk7CisgCSAgZmNsb3Nl IChzdHJlYW0pOworIAkgIHhmcmVlIChmdWxsX3BhdGgpOworIAl9CitAQCAtNDMxLDcgKzQzMSw3 IEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUKKyAJIEl0J3MgaGln aGx5IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxvYWQgaXQgdHdpY2UsCisgCSBhbmQgdGhlc2Ug c2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQorIAkg bG9hZHMgYW55d2F5LiAgKi8KKy0gICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmls ZSAob2JqZmlsZSwgZGVidWdmaWxlKTsKKysgICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jf b2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7CisgICAgICAgZmNsb3NlIChpbnB1 dCk7CisgICAgIH0KKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0 aG9uLWludGVybmFsLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAkyMDEyLTAxLTA0IDA5OjE3OjI1LjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24taW50ZXJu YWwuaAkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAorQEAgLTI4OSw4ICsyODks OCBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKnB5dGhvCisgCisgdm9pZCBn ZGJweV9wcmludF9zdGFjayAodm9pZCk7CisgCistdm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdF9m b3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCistCQkJCSAgICAgICBjb25zdCBj aGFyICpmaWxlKTsKKyt2b2lkIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKysJCQkJICAgICAgIGNvbnN0IGNoYXIg KmZpbGVuYW1lKTsKKyAKKyBQeU9iamVjdCAqcHl0aG9uX3N0cmluZ190b191bmljb2RlIChQeU9i amVjdCAqb2JqKTsKKyBjaGFyICp1bmljb2RlX3RvX3RhcmdldF9zdHJpbmcgKFB5T2JqZWN0ICp1 bmljb2RlX3N0cik7CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhv bi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24v cHl0aG9uLmMJMjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMi0wNC0xOCAwMDo0MTo0Mi42OTY4 NTU0MzAgKzAyMDAKK0BAIC0xNTQsMzQgKzE1NCwzMSBAQCBlbnN1cmVfcHl0aG9uX2VudiAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyCisgICByZXR1cm4gbWFrZV9jbGVhbnVwIChyZXN0b3JlX3B5dGhv bl9lbnYsIGVudik7CisgfQorIAorLS8qIEEgd3JhcHBlciBhcm91bmQgUHlSdW5fU2ltcGxlRmls ZS4gIEZJTEVOQU1FIGlzIHRoZSBuYW1lIG9mCistICAgdGhlIFB5dGhvbiBzY3JpcHQgdG8gcnVu LgorKy8qIEEgd3JhcHBlciBhcm91bmQgUHlSdW5fU2ltcGxlRmlsZS4gIEZJTEUgaXMgdGhlIFB5 dGhvbiBzY3JpcHQgdG8gcnVuCisrICAgbmFtZWQgRklMRU5BTUUuCisgCistICAgT25lIG9mIHRo ZSBwYXJhbWV0ZXJzIG9mIFB5UnVuX1NpbXBsZUZpbGUgaXMgYSBGSUxFICouCistICAgVGhlIHBy b2JsZW0gaXMgdGhhdCB0eXBlIEZJTEUgaXMgZXh0cmVtZWx5IHN5c3RlbSBhbmQgY29tcGlsZXIK Ky0gICBkZXBlbmRlbnQuICBTbywgdW5sZXNzIHRoZSBQeXRob24gbGlicmFyeSBoYXMgYmVlbiBj b21waWxlZCB1c2luZworLSAgIHRoZSBzYW1lIGJ1aWxkIGVudmlyb25tZW50IGFzIEdEQiwgd2Ug cnVuIHRoZSByaXNrIG9mIGdldHRpbmcKKy0gICBhIGNyYXNoIGR1ZSB0byBpbmNvbnNpc3RlbmNp ZXMgYmV0d2VlbiB0aGUgZGVmaW5pdGlvbiB1c2VkIGJ5IEdEQiwKKy0gICBhbmQgdGhlIGRlZmlu aXRpb24gdXNlZCBieSBQeXRob24uICBBIG1pc21hdGNoIGNhbiB2ZXJ5IGxpa2VseQorLSAgIGxl YWQgdG8gYSBjcmFzaC4KKy0KKy0gICBUaGVyZSBpcyBhbHNvIHRoZSBzaXR1YXRpb24gd2hlcmUg dGhlIFB5dGhvbiBsaWJyYXJ5IGFuZCBHREIKKy0gICBhcmUgdXNpbmcgdHdvIGRpZmZlcmVudCB2 ZXJzaW9ucyBvZiB0aGUgQyBydW50aW1lIGxpYnJhcnkuCistICAgVGhpcyBpcyBwYXJ0aWN1bGFy bHkgdmlzaWJsZSBvbiBXaW5kb3dzLCB3aGVyZSBmZXcgdXNlcnMgd291bGQKKy0gICBidWlsZCBQ eXRob24gdGhlbXNlbHZlcyAodGhpcyBpcyBubyB0cml2aWFsIHRhc2sgb24gdGhpcyBwbGF0Zm9y bSksCistICAgYW5kIHRodXMgdXNlIGJpbmFyaWVzIGJ1aWx0IGJ5IHNvbWVvbmUgZWxzZSBpbnN0 ZWFkLiBQeXRob24sCistICAgYmVpbmcgYnVpbHQgd2l0aCBWQywgd291bGQgdXNlIG9uZSB2ZXJz aW9uIG9mIHRoZSBtc3ZjciBETEwKKy0gICAoRWcuIG1zdmNyMTAwLmRsbCksIHdoaWxlIE1pbkdX IHVzZXMgbXN2Y3J0LmRsbC4gIEEgRklMRSAqCistICAgZnJvbSBvbmUgcnVudGltZSBkb2VzIG5v dCBuZWNlc3NhcmlseSBvcGVyYXRlIGNvcnJlY3RseSBpbgorKyAgIE9uIFdpbmRvd3MgaG9zdHMg ZmV3IHVzZXJzIHdvdWxkIGJ1aWxkIFB5dGhvbiB0aGVtc2VsdmVzICh0aGlzIGlzIG5vCisrICAg dHJpdmlhbCB0YXNrIG9uIHRoaXMgcGxhdGZvcm0pLCBhbmQgdGh1cyB1c2UgYmluYXJpZXMgYnVp bHQgYnkKKysgICBzb21lb25lIGVsc2UgaW5zdGVhZC4gIFRoZXJlIG1heSBoYXBwZW4gc2l0dWF0 aW9uIHdoZXJlIHRoZSBQeXRob24KKysgICBsaWJyYXJ5IGFuZCBHREIgYXJlIHVzaW5nIHR3byBk aWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIEMgcnVudGltZQorKyAgIGxpYnJhcnkuICBQeXRob24s IGJlaW5nIGJ1aWx0IHdpdGggVkMsIHdvdWxkIHVzZSBvbmUgdmVyc2lvbiBvZiB0aGUKKysgICBt c3ZjciBETEwgKEVnLiBtc3ZjcjEwMC5kbGwpLCB3aGlsZSBNaW5HVyB1c2VzIG1zdmNydC5kbGwu CisrICAgQSBGSUxFICogZnJvbSBvbmUgcnVudGltZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBvcGVy YXRlIGNvcnJlY3RseSBpbgorICAgIHRoZSBvdGhlciBydW50aW1lLgorIAorLSAgIFRvIHdvcmsg YXJvdW5kIHRoaXMgcG90ZW50aWFsIGlzc3VlLCB3ZSBjcmVhdGUgdGhlIEZJTEUgb2JqZWN0Cist ICAgdXNpbmcgUHl0aG9uIHJvdXRpbmVzLCB0aHVzIG1ha2luZyBzdXJlIHRoYXQgaXQgaXMgY29t cGF0aWJsZQorLSAgIHdpdGggdGhlIFB5dGhvbiBsaWJyYXJ5LiAgKi8KKysgICBUbyB3b3JrIGFy b3VuZCB0aGlzIHBvdGVudGlhbCBpc3N1ZSwgd2UgY3JlYXRlIG9uIFdpbmRvd3MgaG9zdHMgdGhl CisrICAgRklMRSBvYmplY3QgdXNpbmcgUHl0aG9uIHJvdXRpbmVzLCB0aHVzIG1ha2luZyBzdXJl IHRoYXQgaXQgaXMKKysgICBjb21wYXRpYmxlIHdpdGggdGhlIFB5dGhvbiBsaWJyYXJ5LiAgKi8K KyAKKyBzdGF0aWMgdm9pZAorLXB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGNvbnN0IGNoYXIgKmZp bGVuYW1lKQorK3B5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIg KmZpbGVuYW1lKQorIHsKKysjaWZuZGVmIF9XSU4zMgorKworKyAgUHlSdW5fU2ltcGxlRmlsZSAo ZmlsZSwgZmlsZW5hbWUpOworKworKyNlbHNlIC8qIF9XSU4zMiAqLworKworICAgY2hhciAqZnVs bF9wYXRoOworICAgUHlPYmplY3QgKnB5dGhvbl9maWxlOworICAgc3RydWN0IGNsZWFudXAgKmNs ZWFudXA7CitAQCAtMjAxLDYgKzE5OCw4IEBAIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGNvbnN0 IGNoYXIgKmZpbGUKKyAgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKHB5dGhvbl9maWxlKTsKKyAg IFB5UnVuX1NpbXBsZUZpbGUgKFB5RmlsZV9Bc0ZpbGUgKHB5dGhvbl9maWxlKSwgZmlsZW5hbWUp OworICAgZG9fY2xlYW51cHMgKGNsZWFudXApOworKworKyNlbmRpZiAvKiBfV0lOMzIgKi8KKyB9 CisgCisgLyogR2l2ZW4gYSBjb21tYW5kX2xpbmUsIHJldHVybiBhIGNvbW1hbmQgc3RyaW5nIHN1 aXRhYmxlIGZvciBwYXNzaW5nCitAQCAtNjIzLDE3ICs2MjIsMTcgQEAgZ2RicHlfcGFyc2VfYW5k X2V2YWwgKFB5T2JqZWN0ICpzZWxmLCBQeQorIH0KKyAKKyAvKiBSZWFkIGEgZmlsZSBhcyBQeXRo b24gY29kZS4KKy0gICBGSUxFIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlLgorKyAgIEZJTEUgaXMg dGhlIGZpbGUgdG8gcnVuLiAgRklMRU5BTUUgaXMgbmFtZSBvZiB0aGUgZmlsZSBGSUxFLgorICAg IFRoaXMgZG9lcyBub3QgdGhyb3cgYW55IGVycm9ycy4gIElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMg cHl0aG9uIHdpbGwgcHJpbnQKKyAgICB0aGUgdHJhY2ViYWNrIGFuZCBjbGVhciB0aGUgZXJyb3Ig aW5kaWNhdG9yLiAgKi8KKyAKKyB2b2lkCistc291cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNo YXIgKmZpbGUpCisrc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIg KmZpbGVuYW1lKQorIHsKKyAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOworIAorICAgY2xlYW51 cCA9IGVuc3VyZV9weXRob25fZW52IChnZXRfY3VycmVudF9hcmNoICgpLCBjdXJyZW50X2xhbmd1 YWdlKTsKKy0gIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGZpbGUpOworKyAgcHl0aG9uX3J1bl9z aW1wbGVfZmlsZSAoZmlsZSwgZmlsZW5hbWUpOworICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwor IH0KKyAKK0BAIC0xMDQxLDE5ICsxMDQwLDIwIEBAIGdkYnB5X3Byb2dzcGFjZXMgKFB5T2JqZWN0 ICp1bnVzZWQxLCBQeU8KKyAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZTsgaXQg aXMgTlVMTCBhdCBvdGhlciB0aW1lcy4gICovCisgc3RhdGljIHN0cnVjdCBvYmpmaWxlICpnZGJw eV9jdXJyZW50X29iamZpbGU7CisgCistLyogU2V0IHRoZSBjdXJyZW50IG9iamZpbGUgdG8gT0JK RklMRSBhbmQgdGhlbiByZWFkIEZJTEUgYXMgUHl0aG9uIGNvZGUuCistICAgVGhpcyBkb2VzIG5v dCB0aHJvdyBhbnkgZXJyb3JzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBweXRob24gd2lsbCBw cmludAorLSAgIHRoZSB0cmFjZWJhY2sgYW5kIGNsZWFyIHRoZSBlcnJvciBpbmRpY2F0b3IuICAq LworKy8qIFNldCB0aGUgY3VycmVudCBvYmpmaWxlIHRvIE9CSkZJTEUgYW5kIHRoZW4gcmVhZCBG SUxFIG5hbWVkIEZJTEVOQU1FCisrICAgYXMgUHl0aG9uIGNvZGUuICBUaGlzIGRvZXMgbm90IHRo cm93IGFueSBlcnJvcnMuICBJZiBhbiBleGNlcHRpb24KKysgICBvY2N1cnMgcHl0aG9uIHdpbGwg cHJpbnQgdGhlIHRyYWNlYmFjayBhbmQgY2xlYXIgdGhlIGVycm9yIGluZGljYXRvci4gICovCisg Cisgdm9pZAorLXNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqZmlsZSkKKytzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jf b2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorIHsKKyAgIHN0 cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKKyAKKyAgIGNsZWFudXBzID0gZW5zdXJlX3B5dGhvbl9l bnYgKGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpLCBjdXJyZW50X2xhbmd1YWdlKTsKKyAgIGdk YnB5X2N1cnJlbnRfb2JqZmlsZSA9IG9iamZpbGU7CisgCistICBweXRob25fcnVuX3NpbXBsZV9m aWxlIChmaWxlKTsKKysgIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGZpbGUsIGZpbGVuYW1lKTsK KyAKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CisgICBnZGJweV9jdXJyZW50X29iamZpbGUg PSBOVUxMOworQEAgLTExMjksNyArMTEyOSw3IEBAIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9j b21tYW5kIChzdHJ1Y3QKKyB9CisgCisgdm9pZAorLXNvdXJjZV9weXRob25fc2NyaXB0IChjb25z dCBjaGFyICpmaWxlKQorK3NvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpmaWxlLCBjb25zdCBj aGFyICpmaWxlbmFtZSkKKyB7CisgICB0aHJvd19lcnJvciAoVU5TVVBQT1JURURfRVJST1IsCisg CSAgICAgICBfKCJQeXRob24gc2NyaXB0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb3B5 IG9mIEdEQi4iKSk7CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhv bi5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24v cHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0MTo0Mi42OTc4 NTU0MjcgKzAyMDAKK0BAIC0zMCw3ICszMCw3IEBAIGV4dGVybiB2b2lkIGZpbmlzaF9weXRob25f aW5pdGlhbGl6YXRpb24KKyAKKyB2b2lkIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5k IChzdHJ1Y3QgY29tbWFuZF9saW5lICopOworIAorLXZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQg KGNvbnN0IGNoYXIgKmZpbGUpOworK3ZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZp bGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKyAKKyB2b2lkIHJ1bl9weXRob25fc2NyaXB0IChp bnQgYXJnYywgY2hhciAqKmFyZ3YpOworIAoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wNG9m MTIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDRvZjEyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA2NDVhYzg3Li4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0wNG9mMTIucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1jdnMvMjAxMi0wMy9tc2cwMDIzNC5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxv ZwkyMDEyLzAzLzE5IDE4OjEzOjM5CTEuMTQwMjUKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEy LzAzLzE5IDE4OjE2OjE3CTEuMTQwMjYKLSMjIC0xLDMgKzEsMTQgQEAKLSsyMDEyLTAzLTE5ICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCUNvZGUgY2xl YW51cC4KLSsJKiBtYWluLmMgKHN0cnVjdCBjbWRhcmcpOiBNb3ZlIGl0IGhlcmUgZnJvbSBtYWlu LiAgQWRkIG1vcmUgY29tbWVudHMuCi0rCShjbWRhcmdfcywgVkVDIChjbWRhcmdfcykpOiBOZXcu Ci0rCShtYWluKTogTW92ZSBzdHJ1Y3QgY21kYXJnIGZyb20gaGVyZS4gIE5ldyB2YXJpYWJsZXMg Y21kYXJnX3ZlYyBhbmQKLSsJY21kYXJnX3AuICBSZW1vdmUgdmFyaWFibGVzIGNtZHNpemUgYW5k IG5jbWQgYW5kIHRoZWlyIGluaXRpYWxpemF0aW9uLgotKwlJbnN0YWxsIGNsZWFudXAgZm9yIGNt ZGFyZ192ZWMuICBVcGRhdGUgZmlsbGluZyBmb3Igb3B0aW9ucyAneCcgYW5kCi0rCSdYJy4gIFJl cGxhY2UgY21kYXJnIHByb2Nlc3NpbmcgYnkgY21kYXJnX3ZlYyBwcm9jZXNzaW5nLiAgUmVtb3Zl IHhmcmVlCi0rCW9mIENNREFSRy4KLSsKLSAyMDEyLTAzLTE5ICBUb20gVHJvbWV5ICA8dHJvbWV5 QHJlZGhhdC5jb20+Ci0gCi0gCSogZ251LXYzLWFiaS5jIChnbnV2M19wcmludF92dGFibGUpOiBJ bml0aWFsaXplICdyZXN1bHRfdmVjJy4KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9t YWluLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4u YwkyMDEyLTA0LTE4IDAwOjQxOjMxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQyOjE1LjM1NDc3MjMzNyArMDIwMAotQEAg LTI3Nyw2ICsyNzcsMjUgQEAgZXhlY19vcl9jb3JlX2ZpbGVfYXR0YWNoIChjaGFyICpmaWxlbmFt ZQotICAgICB9Ci0gfQotIAotKy8qIEFyZ3VtZW50cyBvZiAtLWNvbW1hbmQgb3B0aW9uIGFuZCBp dHMgY291bnRlcnBhcnQuICAqLwotK3R5cGVkZWYgc3RydWN0IGNtZGFyZyB7Ci0rICAvKiBUeXBl IG9mIHRoaXMgb3B0aW9uLiAgKi8KLSsgIGVudW0gewotKyAgICAvKiBPcHRpb24gdHlwZSAteC4g ICovCi0rICAgIENNREFSR19GSUxFLAotKwotKyAgICAvKiBPcHRpb24gdHlwZSAtZXguICAqLwot KyAgICBDTURBUkdfQ09NTUFORAotKyAgfSB0eXBlOwotKwotKyAgLyogVmFsdWUgb2YgdGhpcyBv cHRpb24gLSBmaWxlbmFtZSBvciB0aGUgR0RCIGNvbW1hbmQgaXRzZWxmLiAgU3RyaW5nIG1lbW9y eQotKyAgICAgaXMgbm90IG93bmVkIGJ5IHRoaXMgc3RydWN0dXJlIGRlc3BpdGUgaXQgaXMgJ2Nv bnN0Jy4gICovCi0rICBjaGFyICpzdHJpbmc7Ci0rfSBjbWRhcmdfczsKLSsKLSsvKiBEZWZpbmUg dHlwZSBWRUMgKGNtZGFyZ19zKS4gICovCi0rREVGX1ZFQ19PIChjbWRhcmdfcyk7Ci0rCi0gc3Rh dGljIGludAotIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gewotQEAgLTMwMywxNyArMzIy LDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgIHN0YXRpYyBpbnQgcHJpbnRfdmVy c2lvbjsKLSAKLSAgIC8qIFBvaW50ZXJzIHRvIGFsbCBhcmd1bWVudHMgb2YgLS1jb21tYW5kIG9w dGlvbi4gICovCi0tICBzdHJ1Y3QgY21kYXJnIHsKLS0gICAgZW51bSB7Ci0tICAgICAgQ01EQVJH X0ZJTEUsCi0tICAgICAgQ01EQVJHX0NPTU1BTkQKLS0gICAgfSB0eXBlOwotLSAgICBjaGFyICpz dHJpbmc7Ci0tICB9ICpjbWRhcmc7Ci0tICAvKiBBbGxvY2F0ZWQgc2l6ZSBvZiBjbWRhcmcuICAq LwotLSAgaW50IGNtZHNpemU7Ci0tICAvKiBOdW1iZXIgb2YgZWxlbWVudHMgb2YgY21kYXJnIHVz ZWQuICAqLwotLSAgaW50IG5jbWQ7Ci0rICBWRUMgKGNtZGFyZ19zKSAqY21kYXJnX3ZlYyA9IE5V TEw7Ci0rICBzdHJ1Y3QgY21kYXJnICpjbWRhcmdfcDsKLSAKLSAgIC8qIEluZGljZXMgb2YgYWxs IGFyZ3VtZW50cyBvZiAtLWRpcmVjdG9yeSBvcHRpb24uICAqLwotICAgY2hhciAqKmRpcmFyZzsK LUBAIC0zNDksOSArMzU5LDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgIGJpbmR0 ZXh0ZG9tYWluIChQQUNLQUdFLCBMT0NBTEVESVIpOwotICAgdGV4dGRvbWFpbiAoUEFDS0FHRSk7 Ci0gCi0tICBjbWRzaXplID0gMTsKLS0gIGNtZGFyZyA9IChzdHJ1Y3QgY21kYXJnICopIHhtYWxs b2MgKGNtZHNpemUgKiBzaXplb2YgKCpjbWRhcmcpKTsKLS0gIG5jbWQgPSAwOwotKyAgbWFrZV9j bGVhbnVwIChWRUNfY2xlYW51cCAoY21kYXJnX3MpLCAmY21kYXJnX3ZlYyk7Ci0gICBkaXJzaXpl ID0gMTsKLSAgIGRpcmFyZyA9IChjaGFyICoqKSB4bWFsbG9jIChkaXJzaXplICogc2l6ZW9mICgq ZGlyYXJnKSk7Ci0gICBuZGlyID0gMDsKLUBAIC01ODIsMjQgKzU5MCwxOSBAQCBjYXB0dXJlZF9t YWluICh2b2lkICpkYXRhKQotIAkgICAgcGlkYXJnID0gb3B0YXJnOwotIAkgICAgYnJlYWs7Ci0g CSAgY2FzZSAneCc6Ci0tCSAgICBjbWRhcmdbbmNtZF0udHlwZSA9IENNREFSR19GSUxFOwotLQkg ICAgY21kYXJnW25jbWQrK10uc3RyaW5nID0gb3B0YXJnOwotLQkgICAgaWYgKG5jbWQgPj0gY21k c2l6ZSkKLS0JICAgICAgewotLQkJY21kc2l6ZSAqPSAyOwotLQkJY21kYXJnID0geHJlYWxsb2Mg KChjaGFyICopIGNtZGFyZywKLS0JCQkJICAgY21kc2l6ZSAqIHNpemVvZiAoKmNtZGFyZykpOwot LQkgICAgICB9Ci0rCSAgICB7Ci0rCSAgICAgIHN0cnVjdCBjbWRhcmcgY21kYXJnID0geyBDTURB UkdfRklMRSwgb3B0YXJnIH07Ci0rCi0rCSAgICAgIFZFQ19zYWZlX3B1c2ggKGNtZGFyZ19zLCBj bWRhcmdfdmVjLCAmY21kYXJnKTsKLSsJICAgIH0KLSAJICAgIGJyZWFrOwotIAkgIGNhc2UgJ1gn OgotLQkgICAgY21kYXJnW25jbWRdLnR5cGUgPSBDTURBUkdfQ09NTUFORDsKLS0JICAgIGNtZGFy Z1tuY21kKytdLnN0cmluZyA9IG9wdGFyZzsKLS0JICAgIGlmIChuY21kID49IGNtZHNpemUpCi0t CSAgICAgIHsKLS0JCWNtZHNpemUgKj0gMjsKLS0JCWNtZGFyZyA9IHhyZWFsbG9jICgoY2hhciAq KSBjbWRhcmcsCi0tCQkJCSAgIGNtZHNpemUgKiBzaXplb2YgKCpjbWRhcmcpKTsKLS0JICAgICAg fQotKwkgICAgewotKwkgICAgICBzdHJ1Y3QgY21kYXJnIGNtZGFyZyA9IHsgQ01EQVJHX0NPTU1B TkQsIG9wdGFyZyB9OwotKwotKwkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJn X3ZlYywgJmNtZGFyZyk7Ci0rCSAgICB9Ci0rCSAgICBicmVhazsKLSAJICAgIGJyZWFrOwotIAkg IGNhc2UgJ0InOgotIAkgICAgYmF0Y2hfZmxhZyA9IGJhdGNoX3NpbGVudCA9IDE7Ci1AQCAtOTkw LDE2ICs5OTMsMTggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgIEFMTF9PQkpGSUxF UyAob2JqZmlsZSkKLSAgICAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKG9iamZpbGUp OwotIAotLSAgZm9yIChpID0gMDsgaSA8IG5jbWQ7IGkrKykKLSsgIGZvciAoaSA9IDA7IFZFQ19p dGVyYXRlIChjbWRhcmdfcywgY21kYXJnX3ZlYywgaSwgY21kYXJnX3ApOyBpKyspCi0rICAgIHN3 aXRjaCAoY21kYXJnX3AtPnR5cGUpCi0gICAgIHsKLS0gICAgICBpZiAoY21kYXJnW2ldLnR5cGUg PT0gQ01EQVJHX0ZJTEUpCi0tICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3Nj cmlwdCwgY21kYXJnW2ldLnN0cmluZywKLSsgICAgICBjYXNlIENNREFSR19GSUxFOgotKyAgICAg ICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGNtZGFyZ19wLT5zdHJpbmcs Ci0gCQkJICAgICAgIWJhdGNoX2ZsYWcsIFJFVFVSTl9NQVNLX0FMTCk7Ci0tICAgICAgZWxzZSAg LyogY21kYXJnW2ldLnR5cGUgPT0gQ01EQVJHX0NPTU1BTkQgKi8KLS0gICAgICAgIGNhdGNoX2Nv bW1hbmRfZXJyb3JzIChleGVjdXRlX2NvbW1hbmQsIGNtZGFyZ1tpXS5zdHJpbmcsCi0rCWJyZWFr OwotKyAgICAgIGNhc2UgQ01EQVJHX0NPTU1BTkQ6Ci0rICAgICAgICBjYXRjaF9jb21tYW5kX2Vy cm9ycyAoZXhlY3V0ZV9jb21tYW5kLCBjbWRhcmdfcC0+c3RyaW5nLAotIAkJCSAgICAgICFiYXRj aF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpOwotKwlicmVhazsKLSAgICAgfQotLSAgeGZyZWUgKGNt ZGFyZyk7Ci0gCi0gICAvKiBSZWFkIGluIHRoZSBvbGQgaGlzdG9yeSBhZnRlciBhbGwgdGhlIGNv bW1hbmQgZmlsZXMgaGF2ZSBiZWVuCi0gICAgICByZWFkLiAgKi8KCmRpZmYgLS1naXQgYS9nZGIt YXV0b2xvYWQtMDRvZjE4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA0b2YxOC5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDVhYzg3Ci0tLSAvZGV2L251bGwKKysrIGIv Z2RiLWF1dG9sb2FkLTA0b2YxOC5wYXRjaApAQCAtMCwwICsxLDE0MSBAQAoraHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9tc2cwMDIzNC5odG1sCisKKyMjIyBzcmMvZ2Ri L0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjEzOjM5CTEuMTQwMjUKKyMjIyBzcmMvZ2RiL0NoYW5n ZUxvZwkyMDEyLzAzLzE5IDE4OjE2OjE3CTEuMTQwMjYKKyMjIC0xLDMgKzEsMTQgQEAKKysyMDEy LTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisr CUNvZGUgY2xlYW51cC4KKysJKiBtYWluLmMgKHN0cnVjdCBjbWRhcmcpOiBNb3ZlIGl0IGhlcmUg ZnJvbSBtYWluLiAgQWRkIG1vcmUgY29tbWVudHMuCisrCShjbWRhcmdfcywgVkVDIChjbWRhcmdf cykpOiBOZXcuCisrCShtYWluKTogTW92ZSBzdHJ1Y3QgY21kYXJnIGZyb20gaGVyZS4gIE5ldyB2 YXJpYWJsZXMgY21kYXJnX3ZlYyBhbmQKKysJY21kYXJnX3AuICBSZW1vdmUgdmFyaWFibGVzIGNt ZHNpemUgYW5kIG5jbWQgYW5kIHRoZWlyIGluaXRpYWxpemF0aW9uLgorKwlJbnN0YWxsIGNsZWFu dXAgZm9yIGNtZGFyZ192ZWMuICBVcGRhdGUgZmlsbGluZyBmb3Igb3B0aW9ucyAneCcgYW5kCisr CSdYJy4gIFJlcGxhY2UgY21kYXJnIHByb2Nlc3NpbmcgYnkgY21kYXJnX3ZlYyBwcm9jZXNzaW5n LiAgUmVtb3ZlIHhmcmVlCisrCW9mIENNREFSRy4KKysKKyAyMDEyLTAzLTE5ICBUb20gVHJvbWV5 ICA8dHJvbWV5QHJlZGhhdC5jb20+CisgCisgCSogZ251LXYzLWFiaS5jIChnbnV2M19wcmludF92 dGFibGUpOiBJbml0aWFsaXplICdyZXN1bHRfdmVjJy4KK0luZGV4OiBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9tYWluLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQxOjMxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQyOjE1LjM1NDc3MjMzNyAr MDIwMAorQEAgLTI3Nyw2ICsyNzcsMjUgQEAgZXhlY19vcl9jb3JlX2ZpbGVfYXR0YWNoIChjaGFy ICpmaWxlbmFtZQorICAgICB9CisgfQorIAorKy8qIEFyZ3VtZW50cyBvZiAtLWNvbW1hbmQgb3B0 aW9uIGFuZCBpdHMgY291bnRlcnBhcnQuICAqLworK3R5cGVkZWYgc3RydWN0IGNtZGFyZyB7Cisr ICAvKiBUeXBlIG9mIHRoaXMgb3B0aW9uLiAgKi8KKysgIGVudW0geworKyAgICAvKiBPcHRpb24g dHlwZSAteC4gICovCisrICAgIENNREFSR19GSUxFLAorKworKyAgICAvKiBPcHRpb24gdHlwZSAt ZXguICAqLworKyAgICBDTURBUkdfQ09NTUFORAorKyAgfSB0eXBlOworKworKyAgLyogVmFsdWUg b2YgdGhpcyBvcHRpb24gLSBmaWxlbmFtZSBvciB0aGUgR0RCIGNvbW1hbmQgaXRzZWxmLiAgU3Ry aW5nIG1lbW9yeQorKyAgICAgaXMgbm90IG93bmVkIGJ5IHRoaXMgc3RydWN0dXJlIGRlc3BpdGUg aXQgaXMgJ2NvbnN0Jy4gICovCisrICBjaGFyICpzdHJpbmc7CisrfSBjbWRhcmdfczsKKysKKysv KiBEZWZpbmUgdHlwZSBWRUMgKGNtZGFyZ19zKS4gICovCisrREVGX1ZFQ19PIChjbWRhcmdfcyk7 CisrCisgc3RhdGljIGludAorIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgeworQEAgLTMw MywxNyArMzIyLDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgIHN0YXRpYyBpbnQg cHJpbnRfdmVyc2lvbjsKKyAKKyAgIC8qIFBvaW50ZXJzIHRvIGFsbCBhcmd1bWVudHMgb2YgLS1j b21tYW5kIG9wdGlvbi4gICovCistICBzdHJ1Y3QgY21kYXJnIHsKKy0gICAgZW51bSB7CistICAg ICAgQ01EQVJHX0ZJTEUsCistICAgICAgQ01EQVJHX0NPTU1BTkQKKy0gICAgfSB0eXBlOworLSAg ICBjaGFyICpzdHJpbmc7CistICB9ICpjbWRhcmc7CistICAvKiBBbGxvY2F0ZWQgc2l6ZSBvZiBj bWRhcmcuICAqLworLSAgaW50IGNtZHNpemU7CistICAvKiBOdW1iZXIgb2YgZWxlbWVudHMgb2Yg Y21kYXJnIHVzZWQuICAqLworLSAgaW50IG5jbWQ7CisrICBWRUMgKGNtZGFyZ19zKSAqY21kYXJn X3ZlYyA9IE5VTEw7CisrICBzdHJ1Y3QgY21kYXJnICpjbWRhcmdfcDsKKyAKKyAgIC8qIEluZGlj ZXMgb2YgYWxsIGFyZ3VtZW50cyBvZiAtLWRpcmVjdG9yeSBvcHRpb24uICAqLworICAgY2hhciAq KmRpcmFyZzsKK0BAIC0zNDksOSArMzU5LDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkK KyAgIGJpbmR0ZXh0ZG9tYWluIChQQUNLQUdFLCBMT0NBTEVESVIpOworICAgdGV4dGRvbWFpbiAo UEFDS0FHRSk7CisgCistICBjbWRzaXplID0gMTsKKy0gIGNtZGFyZyA9IChzdHJ1Y3QgY21kYXJn ICopIHhtYWxsb2MgKGNtZHNpemUgKiBzaXplb2YgKCpjbWRhcmcpKTsKKy0gIG5jbWQgPSAwOwor KyAgbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAoY21kYXJnX3MpLCAmY21kYXJnX3ZlYyk7Cisg ICBkaXJzaXplID0gMTsKKyAgIGRpcmFyZyA9IChjaGFyICoqKSB4bWFsbG9jIChkaXJzaXplICog c2l6ZW9mICgqZGlyYXJnKSk7CisgICBuZGlyID0gMDsKK0BAIC01ODIsMjQgKzU5MCwxOSBAQCBj YXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorIAkgICAgcGlkYXJnID0gb3B0YXJnOworIAkgICAg YnJlYWs7CisgCSAgY2FzZSAneCc6CistCSAgICBjbWRhcmdbbmNtZF0udHlwZSA9IENNREFSR19G SUxFOworLQkgICAgY21kYXJnW25jbWQrK10uc3RyaW5nID0gb3B0YXJnOworLQkgICAgaWYgKG5j bWQgPj0gY21kc2l6ZSkKKy0JICAgICAgeworLQkJY21kc2l6ZSAqPSAyOworLQkJY21kYXJnID0g eHJlYWxsb2MgKChjaGFyICopIGNtZGFyZywKKy0JCQkJICAgY21kc2l6ZSAqIHNpemVvZiAoKmNt ZGFyZykpOworLQkgICAgICB9CisrCSAgICB7CisrCSAgICAgIHN0cnVjdCBjbWRhcmcgY21kYXJn ID0geyBDTURBUkdfRklMRSwgb3B0YXJnIH07CisrCisrCSAgICAgIFZFQ19zYWZlX3B1c2ggKGNt ZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKKysJICAgIH0KKyAJICAgIGJyZWFrOworIAkg IGNhc2UgJ1gnOgorLQkgICAgY21kYXJnW25jbWRdLnR5cGUgPSBDTURBUkdfQ09NTUFORDsKKy0J ICAgIGNtZGFyZ1tuY21kKytdLnN0cmluZyA9IG9wdGFyZzsKKy0JICAgIGlmIChuY21kID49IGNt ZHNpemUpCistCSAgICAgIHsKKy0JCWNtZHNpemUgKj0gMjsKKy0JCWNtZGFyZyA9IHhyZWFsbG9j ICgoY2hhciAqKSBjbWRhcmcsCistCQkJCSAgIGNtZHNpemUgKiBzaXplb2YgKCpjbWRhcmcpKTsK Ky0JICAgICAgfQorKwkgICAgeworKwkgICAgICBzdHJ1Y3QgY21kYXJnIGNtZGFyZyA9IHsgQ01E QVJHX0NPTU1BTkQsIG9wdGFyZyB9OworKworKwkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdf cywgY21kYXJnX3ZlYywgJmNtZGFyZyk7CisrCSAgICB9CisrCSAgICBicmVhazsKKyAJICAgIGJy ZWFrOworIAkgIGNhc2UgJ0InOgorIAkgICAgYmF0Y2hfZmxhZyA9IGJhdGNoX3NpbGVudCA9IDE7 CitAQCAtOTkwLDE2ICs5OTMsMTggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgIEFM TF9PQkpGSUxFUyAob2JqZmlsZSkKKyAgICAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUg KG9iamZpbGUpOworIAorLSAgZm9yIChpID0gMDsgaSA8IG5jbWQ7IGkrKykKKysgIGZvciAoaSA9 IDA7IFZFQ19pdGVyYXRlIChjbWRhcmdfcywgY21kYXJnX3ZlYywgaSwgY21kYXJnX3ApOyBpKysp CisrICAgIHN3aXRjaCAoY21kYXJnX3AtPnR5cGUpCisgICAgIHsKKy0gICAgICBpZiAoY21kYXJn W2ldLnR5cGUgPT0gQ01EQVJHX0ZJTEUpCistICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAo c291cmNlX3NjcmlwdCwgY21kYXJnW2ldLnN0cmluZywKKysgICAgICBjYXNlIENNREFSR19GSUxF OgorKyAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGNtZGFyZ19w LT5zdHJpbmcsCisgCQkJICAgICAgIWJhdGNoX2ZsYWcsIFJFVFVSTl9NQVNLX0FMTCk7CistICAg ICAgZWxzZSAgLyogY21kYXJnW2ldLnR5cGUgPT0gQ01EQVJHX0NPTU1BTkQgKi8KKy0gICAgICAg IGNhdGNoX2NvbW1hbmRfZXJyb3JzIChleGVjdXRlX2NvbW1hbmQsIGNtZGFyZ1tpXS5zdHJpbmcs CisrCWJyZWFrOworKyAgICAgIGNhc2UgQ01EQVJHX0NPTU1BTkQ6CisrICAgICAgICBjYXRjaF9j b21tYW5kX2Vycm9ycyAoZXhlY3V0ZV9jb21tYW5kLCBjbWRhcmdfcC0+c3RyaW5nLAorIAkJCSAg ICAgICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpOworKwlicmVhazsKKyAgICAgfQorLSAg eGZyZWUgKGNtZGFyZyk7CisgCisgICAvKiBSZWFkIGluIHRoZSBvbGQgaGlzdG9yeSBhZnRlciBh bGwgdGhlIGNvbW1hbmQgZmlsZXMgaGF2ZSBiZWVuCisgICAgICByZWFkLiAgKi8KCmRpZmYgLS1n aXQgYS9nZGItYXV0b2xvYWQtMDVvZjEyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA1b2YxMi5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRkOGNjMy4uMDAwMDAwMAotLS0gYS9n ZGItYXV0b2xvYWQtMDVvZjEyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQ0ICswLDAgQEAK LWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDMvbXNnMDAyMzUuaHRtbAot Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODoxNjoxNwkxLjE0MDI2Ci0jIyMg c3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODoxOToyMwkxLjE0MDI3Ci0jIyAtMSw1ICsx LDE4IEBACi0gMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotIAotKwkqIE5FV1M6IERlc2NyaWJlIG5ldyBvcHRpb25zIC0taW5pdC1jb21tYW5k PUZJTEUsIC1peCBhbmQKLSsJLS1pbml0LWV2YWwtY29tbWFuZD1DT01NQU5ELCAtaWV4LgotKwkq IG1haW4uYyAoc3RydWN0IGNtZGFyZyk6IE5ldyBlbnVtIGl0ZW1zIENNREFSR19JTklUX0ZJTEUg YW5kCi0rCUNNREFSR19JTklUX0NPTU1BTkQuCi0rCShjYXB0dXJlZF9tYWluKTogTmV3IGVudW0g aXRlbXMgT1BUX0lYIGFuZCBPUFRfSUVYLiAgQWRkCi0rCSJpbml0LWNvbW1hbmQiLCAiaW5pdC1l dmFsLWNvbW1hbmQiLCAiaXgiIGFuZCAiaWV4IiB0byB0aGUgdmFyaWFibGUKLSsJbG9uZ19vcHRp b25zLiAgSGFuZGxlIE9QVF9JWCBhbmQgT1BUX0lFWC4gIFByb2Nlc3MgdGhlbSBmcm9tIENNREFS R19WRUMuCi0rCU5ldyBjb21tZW50IGZvciBDTURBUkdfRklMRSBhbmQgQ01EQVJHX0NPTU1BTkQg cHJvY2Vzc2luZy4KLSsJKHByaW50X2dkYl9oZWxwKTogRGVzY3JpYmUgLS1pbml0LWNvbW1hbmQ9 RklMRSwgLWl4IGFuZAotKwktLWluaXQtZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1pZXguCi0rCi0r MjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot KwotIAlDb2RlIGNsZWFudXAuCi0gCSogbWFpbi5jIChzdHJ1Y3QgY21kYXJnKTogTW92ZSBpdCBo ZXJlIGZyb20gbWFpbi4gIEFkZCBtb3JlIGNvbW1lbnRzLgotIAkoY21kYXJnX3MsIFZFQyAoY21k YXJnX3MpKTogTmV3LgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAxMi0wNC0xOCAw MDo0MTozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdT CTIwMTItMDQtMTggMDA6NDI6NTEuMjI2NjgxMDY4ICswMjAwCi1AQCAtMjgsNiArMjgsMTMgQEAK LSAgIG5vdyBzZXQgYSBicmVha3BvaW50IGluIGJ1aWxkL2djYy9leHByLmMsIGJ1dCBub3QKLSAg IGJ1aWxkL2xpYmNwcC9leHByLmMuCi0gCi0rKiBOZXcgY29tbWFuZCBsaW5lIG9wdGlvbnMKLSsK LSstLWluaXQtY29tbWFuZD1GSUxFLCAtaXggICAgICAgICAgTGlrZSAtLWNvbW1hbmQsIC14IGJ1 dCBleGVjdXRlIGl0Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSBs b2FkaW5nIGluZmVyaW9yLgotKy0taW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWlleCBMaWtl IC0tZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1leCBidXQKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXhlY3V0ZSBpdCBiZWZvcmUgbG9hZGluZyBpbmZlcmlvci4KLSsKLSAqKiog Q2hhbmdlcyBpbiBHREIgNy40Ci0gCi0gKiBHREIgbm93IGhhbmRsZXMgYW1iaWd1b3VzIGxpbmVz cGVjcyBtb3JlIGNvbnNpc3RlbnRseTsgdGhlIGV4aXN0aW5nCi1JbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvbWFpbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0MjoxNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0Mjo1MS4yMjY2ODEw NjggKzAyMDAKLUBAIC0yODUsNyArMjg1LDEzIEBAIHR5cGVkZWYgc3RydWN0IGNtZGFyZyB7Ci0g ICAgIENNREFSR19GSUxFLAotIAotICAgICAvKiBPcHRpb24gdHlwZSAtZXguICAqLwotLSAgICBD TURBUkdfQ09NTUFORAotKyAgICBDTURBUkdfQ09NTUFORCwKLSsKLSsgICAgLyogT3B0aW9uIHR5 cGUgLWl4LiAgKi8KLSsgICAgQ01EQVJHX0lOSVRfRklMRSwKLSsgICAgCi0rICAgIC8qIE9wdGlv biB0eXBlIC1pZXguICAqLwotKyAgICBDTURBUkdfSU5JVF9DT01NQU5ECi0gICB9IHR5cGU7Ci0g Ci0gICAvKiBWYWx1ZSBvZiB0aGlzIG9wdGlvbiAtIGZpbGVuYW1lIG9yIHRoZSBHREIgY29tbWFu ZCBpdHNlbGYuICBTdHJpbmcgbWVtb3J5Ci1AQCAtNDM0LDcgKzQ0MCw5IEBAIGNhcHR1cmVkX21h aW4gKHZvaWQgKmRhdGEpCi0gICAgICAgT1BUX1NUQVRJU1RJQ1MsCi0gICAgICAgT1BUX1RVSSwK LSAgICAgICBPUFRfTk9XSU5ET1dTLAotLSAgICAgIE9QVF9XSU5ET1dTCi0rICAgICAgT1BUX1dJ TkRPV1MsCi0rICAgICAgT1BUX0lYLAotKyAgICAgIE9QVF9JRVgKLSAgICAgfTsKLSAgICAgc3Rh dGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25zW10gPQotICAgICB7Ci1AQCAtNDc1LDYgKzQ4 MywxMCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotICAgICAgIHsidmVyc2lvbiIsIG5v X2FyZ3VtZW50LCAmcHJpbnRfdmVyc2lvbiwgMX0sCi0gICAgICAgeyJ4IiwgcmVxdWlyZWRfYXJn dW1lbnQsIDAsICd4J30sCi0gICAgICAgeyJleCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCAnWCd9 LAotKyAgICAgIHsiaW5pdC1jb21tYW5kIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsIE9QVF9JWH0s Ci0rICAgICAgeyJpbml0LWV2YWwtY29tbWFuZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCBPUFRf SUVYfSwKLSsgICAgICB7Iml4IiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsIE9QVF9JWH0sCi0rICAg ICAgeyJpZXgiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgT1BUX0lFWH0sCi0gI2lmZGVmIEdEQlRL Ci0gICAgICAgeyJ0Y2xjb21tYW5kIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICd6J30sCi0gICAg ICAgeyJlbmFibGUtZXh0ZXJuYWwtZWRpdG9yIiwgbm9fYXJndW1lbnQsIDAsICd5J30sCi1AQCAt NjAzLDYgKzYxNSwxOSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotIAkgICAgICBWRUNf c2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7Ci0gCSAgICB9Ci0gCSAg ICBicmVhazsKLSsJICBjYXNlIE9QVF9JWDoKLSsJICAgIHsKLSsJICAgICAgc3RydWN0IGNtZGFy ZyBjbWRhcmcgPSB7IENNREFSR19JTklUX0ZJTEUsIG9wdGFyZyB9OwotKwotKwkgICAgICBWRUNf c2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7Ci0rCSAgICB9Ci0rCSAg ICBicmVhazsKLSsJICBjYXNlIE9QVF9JRVg6Ci0rCSAgICB7Ci0rCSAgICAgIHN0cnVjdCBjbWRh cmcgY21kYXJnID0geyBDTURBUkdfSU5JVF9DT01NQU5ELCBvcHRhcmcgfTsKLSsKLSsJICAgICAg VkVDX3NhZmVfcHVzaCAoY21kYXJnX3MsIGNtZGFyZ192ZWMsICZjbWRhcmcpOwotKwkgICAgfQot IAkgICAgYnJlYWs7Ci0gCSAgY2FzZSAnQic6Ci0gCSAgICBiYXRjaF9mbGFnID0gYmF0Y2hfc2ls ZW50ID0gMTsKLUBAIC04NzcsNiArOTAyLDIwIEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEp Ci0gICBxdWl0X3ByZV9wcmludCA9IGVycm9yX3ByZV9wcmludDsKLSAgIHdhcm5pbmdfcHJlX3By aW50ID0gXygiXG53YXJuaW5nOiAiKTsKLSAKLSsgIC8qIFByb2Nlc3MgJy1peCcgYW5kICctaWV4 JyBvcHRpb25zIGVhcmx5LiAgKi8KLSsgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChjbWRhcmdf cywgY21kYXJnX3ZlYywgaSwgY21kYXJnX3ApOyBpKyspCi0rICAgIHN3aXRjaCAoY21kYXJnX3At PnR5cGUpCi0rICAgIHsKLSsgICAgICBjYXNlIENNREFSR19JTklUX0ZJTEU6Ci0rICAgICAgICBj YXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3NjcmlwdCwgY21kYXJnX3AtPnN0cmluZywKLSsJ CQkgICAgICAhYmF0Y2hfZmxhZywgUkVUVVJOX01BU0tfQUxMKTsKLSsJYnJlYWs7Ci0rICAgICAg Y2FzZSBDTURBUkdfSU5JVF9DT01NQU5EOgotKyAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMg KGV4ZWN1dGVfY29tbWFuZCwgY21kYXJnX3AtPnN0cmluZywKLSsJCQkgICAgICAhYmF0Y2hfZmxh ZywgUkVUVVJOX01BU0tfQUxMKTsKLSsJYnJlYWs7Ci0rICAgIH0KLSsKLSAgIC8qIFJlYWQgYW5k IGV4ZWN1dGUgdGhlIHN5c3RlbS13aWRlIGdkYmluaXQgZmlsZSwgaWYgaXQgZXhpc3RzLgotICAg ICAgVGhpcyBpcyBkb25lICpiZWZvcmUqIGFsbCB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBh cmUKLSAgICAgIHByb2Nlc3NlZDsgaXQgc2V0cyBnbG9iYWwgcGFyYW1ldGVycywgd2hpY2ggYXJl IGluZGVwZW5kZW50IG9mCi1AQCAtOTkzLDYgKzEwMzIsNyBAQCBjYXB0dXJlZF9tYWluICh2b2lk ICpkYXRhKQotICAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQotICAgICBsb2FkX2F1dG9fc2NyaXB0 c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7Ci0gCi0rICAvKiBQcm9jZXNzICcteCcgYW5kICctZXgn IG9wdGlvbnMuICAqLwotICAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKGNtZGFyZ19zLCBjbWRh cmdfdmVjLCBpLCBjbWRhcmdfcCk7IGkrKykKLSAgICAgc3dpdGNoIChjbWRhcmdfcC0+dHlwZSkK LSAgICAgewotQEAgLTEwOTMsNiArMTEzMyw4IEBAIE9wdGlvbnM6XG5cblwKLSAgICAgICAgICAg ICAgICAgICAgICBFeGVjdXRlIGEgc2luZ2xlIEdEQiBjb21tYW5kLlxuXAotICAgICAgICAgICAg ICAgICAgICAgIE1heSBiZSB1c2VkIG11bHRpcGxlIHRpbWVzIGFuZCBpbiBjb25qdW5jdGlvblxu XAotICAgICAgICAgICAgICAgICAgICAgIHdpdGggLS1jb21tYW5kLlxuXAotKyAgLS1pbml0LWNv bW1hbmQ9RklMRSwgLWl4IExpa2UgLXggYnV0IGV4ZWN1dGUgaXQgYmVmb3JlIGxvYWRpbmcgaW5m ZXJpb3IuXG5cCi0rICAtLWluaXQtZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1pZXggTGlrZSAtZXgg YnV0IGJlZm9yZSBsb2FkaW5nIGluZmVyaW9yLlxuXAotICAgLS1jb3JlPUNPUkVGSUxFICAgIEFu YWx5emUgdGhlIGNvcmUgZHVtcCBDT1JFRklMRS5cblwKLSAgIC0tcGlkPVBJRCAgICAgICAgICBB dHRhY2ggdG8gcnVubmluZyBwcm9jZXNzIFBJRC5cblwKLSAiKSwgc3RyZWFtKTsKLUluZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8KLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAw OjQxOjMxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9n ZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQyOjUxLjIzMjY4MTA1MiArMDIwMAotQEAgLTk4OSw2 ICs5ODksMjIgQEAgYWxzbyBiZSBpbnRlcmxlYXZlZCB3aXRoIEBzYW1wey1jb21tYW5kfQotICAg IC14IHNldGJyZWFrcG9pbnRzIC1leCAncnVuJyBhLm91dAotIEBlbmQgc21hbGxleGFtcGxlCi0g Ci0rQGl0ZW0gLWluaXQtY29tbWFuZCBAdmFye2ZpbGV9Ci0rQGl0ZW14IC1peCBAdmFye2ZpbGV9 Ci0rQGNpbmRleCBAY29kZXstLWluaXQtY29tbWFuZH0KLStAY2luZGV4IEBjb2Rley1peH0KLStF eGVjdXRlIGNvbW1hbmRzIGZyb20gZmlsZSBAdmFye2ZpbGV9IGJlZm9yZSBsb2FkaW5nIGdkYmlu aXQgZmlsZXMgb3IgdGhlCi0raW5mZXJpb3IuCi0rQHhyZWZ7U3RhcnR1cH0uCi0rCi0rQGl0ZW0g LWluaXQtZXZhbC1jb21tYW5kIEB2YXJ7Y29tbWFuZH0KLStAaXRlbXggLWlleCBAdmFye2NvbW1h bmR9Ci0rQGNpbmRleCBAY29kZXstLWluaXQtZXZhbC1jb21tYW5kfQotK0BjaW5kZXggQGNvZGV7 LWlleH0KLStFeGVjdXRlIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBjb21tYW5kIGJlZm9yZSBsb2Fk aW5nIGdkYmluaXQgZmlsZXMgb3IgdGhlCi0raW5mZXJpb3IuCi0rQHhyZWZ7U3RhcnR1cH0uCi0r Ci0gQGl0ZW0gLWRpcmVjdG9yeSBAdmFye2RpcmVjdG9yeX0KLSBAaXRlbXggLWQgQHZhcntkaXJl Y3Rvcnl9Ci0gQGNpbmRleCBAY29kZXstLWRpcmVjdG9yeX0KLUBAIC0xMjUwLDYgKzEyNjYsMTMg QEAgU2V0cyB1cCB0aGUgY29tbWFuZCBpbnRlcnByZXRlciBhcyBzcGVjaQotIChAcHhyZWZ7TW9k ZSBPcHRpb25zLCBpbnRlcnByZXRlcn0pLgotIAotIEBpdGVtCi0rRXhlY3V0ZXMgY29tbWFuZHMg YW5kIGNvbW1hbmQgZmlsZXMgc3BlY2lmaWVkIGJ5IHRoZSBAc2FtcHstaWV4fSBhbmQKLStAc2Ft cHstaXh9IG9wdGlvbnMgaW4gdGhlaXIgc3BlY2lmaWVkIG9yZGVyLiAgVXN1YWxseSB5b3Ugc2hv dWxkIHVzZSB0aGUKLStAc2FtcHstZXh9IGFuZCBAc2FtcHsteH0gb3B0aW9ucyBpbnN0ZWFkLCBi dXQgdGhpcyB3YXkgeW91IGNhbiBhcHBseQotK3NldHRpbmdzIGJlZm9yZSBAdmFsdWV7R0RCTn0g aW5pdCBmaWxlcyBnZXQgZXhlY3V0ZWQgYW5kIGJlZm9yZSBpbmZlcmlvcgotK2dldHMgbG9hZGVk LgotKwotK0BpdGVtCi0gQGNpbmRleCBpbml0IGZpbGUKLSBSZWFkcyB0aGUgc3lzdGVtLXdpZGUg QGRmbntpbml0IGZpbGV9IChpZiBAb3B0aW9uey0td2l0aC1zeXN0ZW0tZ2RiaW5pdH0gd2FzCi0g dXNlZCB3aGVuIGJ1aWxkaW5nIEB2YWx1ZXtHREJOfTsgQHB4cmVme1N5c3RlbS13aWRlIGNvbmZp Z3VyYXRpb24sCi1AQCAtMTI4MywxNCArMTMwNiwxMSBAQCBJZiB5b3Ugd2lzaCB0byBkaXNhYmxl IHRoZSBhdXRvLWxvYWRpbmcKLSB5b3UgbXVzdCBkbyBzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93 aW5nOgotIAotIEBzbWFsbGV4YW1wbGUKLS0kIGdkYiAtZXggInNldCBhdXRvLWxvYWQtc2NyaXB0 cyBvZmYiIC1leCAiZmlsZSBteXByb2dyYW0iCi0rJCBnZGIgLWlleCAic2V0IGF1dG8tbG9hZC1z Y3JpcHRzIG9mZiIgbXlwcm9ncmFtCi0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLS1UaGUgZm9sbG93 aW5nIGRvZXMgbm90IHdvcmsgYmVjYXVzZSB0aGUgYXV0by1sb2FkaW5nIGlzIHR1cm5lZCBvZmYg dG9vIGxhdGU6Ci0tCi0tQHNtYWxsZXhhbXBsZQotLSQgZ2RiIC1leCAic2V0IGF1dG8tbG9hZC1z Y3JpcHRzIG9mZiIgbXlwcm9ncmFtCi0tQGVuZCBzbWFsbGV4YW1wbGUKLStPcHRpb24gQHNhbXB7 LWV4fSBkb2VzIG5vdCB3b3JrIGJlY2F1c2UgdGhlIGF1dG8tbG9hZGluZyBpcyB0aGVuIHR1cm5l ZAotK29mZiB0b28gbGF0ZS4KLSAKLSBAaXRlbQotIFJlYWRzIGNvbW1hbmQgZmlsZXMgc3BlY2lm aWVkIGJ5IHRoZSBAc2FtcHsteH0gb3B0aW9uLiAgQHhyZWZ7Q29tbWFuZAotSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5nZGIv c2VsZnRlc3QuZXhwCTIwMTItMDQtMTggMDA6NDE6MzEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCTIwMTIt MDQtMTggMDA6NDI6NTEuMjMyNjgxMDUyICswMjAwCi1AQCAtOTIsNiArOTIsMTAgQEAgcHJvYyBk b19zdGVwc19hbmRfbmV4dHMge30gewotIAkJc2V0IGRlc2NyaXB0aW9uICJzdGVwIG92ZXIgcHl0 aG9uX3NjcmlwdCBpbml0aWFsaXphdGlvbiIKLSAJCXNldCBjb21tYW5kICJzdGVwIgotIAkgICAg fQotKwkgICAgLXJlICIuKmNtZGFyZ192ZWMgPSBOVUxMLiokZ2RiX3Byb21wdCAkIiB7Ci0rCQlz ZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBjbWRhcmdfdmVjIGluaXRpYWxpemF0aW9uIgotKwkJ c2V0IGNvbW1hbmQgInN0ZXAiCi0rCSAgICB9Ci0gCSAgICAtcmUgIi4qcHJlX3N0YXRfY2hhaW4g PSBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cC4qJGdkYl9wcm9tcHQgJCIgewotIAkJc2V0IGRl c2NyaXB0aW9uICJuZXh0IG92ZXIgbWFrZV9jb21tYW5kX3N0YXRzX2NsZWFudXAgYW5kIGV2ZXJ5 dGhpbmcgaXQgY2FsbHMiCi0gCQlzZXQgY29tbWFuZCAibmV4dCIKLUBAIC0xMjgsMTggKzEzMiw2 IEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKLSAJCXNldCBkZXNjcmlwdGlvbiAibmV4 dCBvdmVyIGNvbmRpdGlvbmFsIHN0YWNrIGFsaWdubWVudCBhbGxvY2EiCi0gCQlzZXQgY29tbWFu ZCAibmV4dCIKLSAJICAgIH0KLS0JICAgIC1yZSAiLipjbWRzaXplID0gMS4qJGdkYl9wcm9tcHQg JCIgewotLQkJc2V0IGRlc2NyaXB0aW9uICJzdGVwIG92ZXIgY21kc2l6ZSBpbml0aWFsaXphdGlv biIKLS0JCXNldCBjb21tYW5kICJuZXh0IgotLQkgICAgfQotLQkgICAgLXJlICIuKmNtZGFyZyA9 IC4qIHhtYWxsb2MuKiRnZGJfcHJvbXB0ICQiIHsKLS0JCXNldCBkZXNjcmlwdGlvbiAibmV4dCBv dmVyIGNtZGFyZyBpbml0aWFsaXphdGlvbiB2aWEgeG1hbGxvYyIKLS0JCXNldCBjb21tYW5kICJu ZXh0IgotLQkgICAgfQotLQkgICAgLXJlICIuKm5jbWQgPSAwLiokZ2RiX3Byb21wdCAkIiB7Ci0t CQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBuY21kIGluaXRpYWxpemF0aW9uIgotLQkJc2V0 IGNvbW1hbmQgIm5leHQiCi0tCSAgICB9Ci0gCSAgICAtcmUgIi4qZGlyc2l6ZSA9IDEuKiRnZGJf cHJvbXB0ICQiIHsKLSAJCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIGRpcnNpemUgaW5pdGlh bGl6YXRpb24iCi0gCQlzZXQgY29tbWFuZCAibmV4dCIKLUBAIC0xNjMsNiArMTU1LDEwIEBAIHBy b2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKLSAJCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVy IHRleHRkb21haW4gUEFDS0FHRSIKLSAJCXNldCBjb21tYW5kICJuZXh0IgotIAkgICAgfQotKwkg ICAgLXJlICIuKlZFQ19jbGVhbnVwIC5jbWRhcmdfcy4qJGdkYl9wcm9tcHQgJCIgewotKwkJc2V0 IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgY21kYXJnX3MgVkVDX2NsZWFudXAiCi0rCQlzZXQgY29t bWFuZCAibmV4dCIKLSsJICAgIH0KLSAJICAgIC1yZSAiXFswLTlcXStcW1x0IFxdK1x7XHJcbiRn ZGJfcHJvbXB0ICQiIHsKLSAJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIGluaXRpYWwgYnJh Y2UiCi0gCQlzZXQgY29tbWFuZCAic3RlcCIKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDVv ZjE4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA1b2YxOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi44ZGQ4Y2MzCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2Fk LTA1b2YxOC5wYXRjaApAQCAtMCwwICsxLDI0NCBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1jdnMvMjAxMi0wMy9tc2cwMDIzNS5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwky MDEyLzAzLzE5IDE4OjE2OjE3CTEuMTQwMjYKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAz LzE5IDE4OjE5OjIzCTEuMTQwMjcKKyMjIC0xLDUgKzEsMTggQEAKKyAyMDEyLTAzLTE5ICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisrCSogTkVXUzogRGVz Y3JpYmUgbmV3IG9wdGlvbnMgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IGFuZAorKwktLWluaXQt ZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1pZXguCisrCSogbWFpbi5jIChzdHJ1Y3QgY21kYXJnKTog TmV3IGVudW0gaXRlbXMgQ01EQVJHX0lOSVRfRklMRSBhbmQKKysJQ01EQVJHX0lOSVRfQ09NTUFO RC4KKysJKGNhcHR1cmVkX21haW4pOiBOZXcgZW51bSBpdGVtcyBPUFRfSVggYW5kIE9QVF9JRVgu ICBBZGQKKysJImluaXQtY29tbWFuZCIsICJpbml0LWV2YWwtY29tbWFuZCIsICJpeCIgYW5kICJp ZXgiIHRvIHRoZSB2YXJpYWJsZQorKwlsb25nX29wdGlvbnMuICBIYW5kbGUgT1BUX0lYIGFuZCBP UFRfSUVYLiAgUHJvY2VzcyB0aGVtIGZyb20gQ01EQVJHX1ZFQy4KKysJTmV3IGNvbW1lbnQgZm9y IENNREFSR19GSUxFIGFuZCBDTURBUkdfQ09NTUFORCBwcm9jZXNzaW5nLgorKwkocHJpbnRfZ2Ri X2hlbHApOiBEZXNjcmliZSAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXggYW5kCisrCS0taW5pdC1l dmFsLWNvbW1hbmQ9Q09NTUFORCwgLWlleC4KKysKKysyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZp bCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisgCUNvZGUgY2xlYW51cC4KKyAJKiBt YWluLmMgKHN0cnVjdCBjbWRhcmcpOiBNb3ZlIGl0IGhlcmUgZnJvbSBtYWluLiAgQWRkIG1vcmUg Y29tbWVudHMuCisgCShjbWRhcmdfcywgVkVDIChjbWRhcmdfcykpOiBOZXcuCitJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAx MjAxMjAub3JpZy9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQxOjMwLjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0Mjo1MS4yMjY2 ODEwNjggKzAyMDAKK0BAIC0yOCw2ICsyOCwxMyBAQAorICAgbm93IHNldCBhIGJyZWFrcG9pbnQg aW4gYnVpbGQvZ2NjL2V4cHIuYywgYnV0IG5vdAorICAgYnVpbGQvbGliY3BwL2V4cHIuYy4KKyAK KysqIE5ldyBjb21tYW5kIGxpbmUgb3B0aW9ucworKworKy0taW5pdC1jb21tYW5kPUZJTEUsIC1p eCAgICAgICAgICBMaWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlIGxvYWRpbmcgaW5mZXJpb3IuCisrLS1pbml0 LWV2YWwtY29tbWFuZD1DT01NQU5ELCAtaWV4IExpa2UgLS1ldmFsLWNvbW1hbmQ9Q09NTUFORCwg LWV4IGJ1dAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlIGl0IGJl Zm9yZSBsb2FkaW5nIGluZmVyaW9yLgorKworICoqKiBDaGFuZ2VzIGluIEdEQiA3LjQKKyAKKyAq IEdEQiBub3cgaGFuZGxlcyBhbWJpZ3VvdXMgbGluZXNwZWNzIG1vcmUgY29uc2lzdGVudGx5OyB0 aGUgZXhpc3RpbmcKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4 IDAwOjQyOjE1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21h aW4uYwkyMDEyLTA0LTE4IDAwOjQyOjUxLjIyNjY4MTA2OCArMDIwMAorQEAgLTI4NSw3ICsyODUs MTMgQEAgdHlwZWRlZiBzdHJ1Y3QgY21kYXJnIHsKKyAgICAgQ01EQVJHX0ZJTEUsCisgCisgICAg IC8qIE9wdGlvbiB0eXBlIC1leC4gICovCistICAgIENNREFSR19DT01NQU5ECisrICAgIENNREFS R19DT01NQU5ELAorKworKyAgICAvKiBPcHRpb24gdHlwZSAtaXguICAqLworKyAgICBDTURBUkdf SU5JVF9GSUxFLAorKyAgICAKKysgICAgLyogT3B0aW9uIHR5cGUgLWlleC4gICovCisrICAgIENN REFSR19JTklUX0NPTU1BTkQKKyAgIH0gdHlwZTsKKyAKKyAgIC8qIFZhbHVlIG9mIHRoaXMgb3B0 aW9uIC0gZmlsZW5hbWUgb3IgdGhlIEdEQiBjb21tYW5kIGl0c2VsZi4gIFN0cmluZyBtZW1vcnkK K0BAIC00MzQsNyArNDQwLDkgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgICAgICBP UFRfU1RBVElTVElDUywKKyAgICAgICBPUFRfVFVJLAorICAgICAgIE9QVF9OT1dJTkRPV1MsCist ICAgICAgT1BUX1dJTkRPV1MKKysgICAgICBPUFRfV0lORE9XUywKKysgICAgICBPUFRfSVgsCisr ICAgICAgT1BUX0lFWAorICAgICB9OworICAgICBzdGF0aWMgc3RydWN0IG9wdGlvbiBsb25nX29w dGlvbnNbXSA9CisgICAgIHsKK0BAIC00NzUsNiArNDgzLDEwIEBAIGNhcHR1cmVkX21haW4gKHZv aWQgKmRhdGEpCisgICAgICAgeyJ2ZXJzaW9uIiwgbm9fYXJndW1lbnQsICZwcmludF92ZXJzaW9u LCAxfSwKKyAgICAgICB7IngiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgJ3gnfSwKKyAgICAgICB7 ImV4IiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICdYJ30sCisrICAgICAgeyJpbml0LWNvbW1hbmQi LCByZXF1aXJlZF9hcmd1bWVudCwgMCwgT1BUX0lYfSwKKysgICAgICB7ImluaXQtZXZhbC1jb21t YW5kIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsIE9QVF9JRVh9LAorKyAgICAgIHsiaXgiLCByZXF1 aXJlZF9hcmd1bWVudCwgMCwgT1BUX0lYfSwKKysgICAgICB7ImlleCIsIHJlcXVpcmVkX2FyZ3Vt ZW50LCAwLCBPUFRfSUVYfSwKKyAjaWZkZWYgR0RCVEsKKyAgICAgICB7InRjbGNvbW1hbmQiLCBy ZXF1aXJlZF9hcmd1bWVudCwgMCwgJ3onfSwKKyAgICAgICB7ImVuYWJsZS1leHRlcm5hbC1lZGl0 b3IiLCBub19hcmd1bWVudCwgMCwgJ3knfSwKK0BAIC02MDMsNiArNjE1LDE5IEBAIGNhcHR1cmVk X21haW4gKHZvaWQgKmRhdGEpCisgCSAgICAgIFZFQ19zYWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRh cmdfdmVjLCAmY21kYXJnKTsKKyAJICAgIH0KKyAJICAgIGJyZWFrOworKwkgIGNhc2UgT1BUX0lY OgorKwkgICAgeworKwkgICAgICBzdHJ1Y3QgY21kYXJnIGNtZGFyZyA9IHsgQ01EQVJHX0lOSVRf RklMRSwgb3B0YXJnIH07CisrCisrCSAgICAgIFZFQ19zYWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRh cmdfdmVjLCAmY21kYXJnKTsKKysJICAgIH0KKysJICAgIGJyZWFrOworKwkgIGNhc2UgT1BUX0lF WDoKKysJICAgIHsKKysJICAgICAgc3RydWN0IGNtZGFyZyBjbWRhcmcgPSB7IENNREFSR19JTklU X0NPTU1BTkQsIG9wdGFyZyB9OworKworKwkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywg Y21kYXJnX3ZlYywgJmNtZGFyZyk7CisrCSAgICB9CisgCSAgICBicmVhazsKKyAJICBjYXNlICdC JzoKKyAJICAgIGJhdGNoX2ZsYWcgPSBiYXRjaF9zaWxlbnQgPSAxOworQEAgLTg3Nyw2ICs5MDIs MjAgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgIHF1aXRfcHJlX3ByaW50ID0gZXJy b3JfcHJlX3ByaW50OworICAgd2FybmluZ19wcmVfcHJpbnQgPSBfKCJcbndhcm5pbmc6ICIpOwor IAorKyAgLyogUHJvY2VzcyAnLWl4JyBhbmQgJy1pZXgnIG9wdGlvbnMgZWFybHkuICAqLworKyAg Zm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCBpLCBjbWRhcmdf cCk7IGkrKykKKysgICAgc3dpdGNoIChjbWRhcmdfcC0+dHlwZSkKKysgICAgeworKyAgICAgIGNh c2UgQ01EQVJHX0lOSVRfRklMRToKKysgICAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChzb3Vy Y2Vfc2NyaXB0LCBjbWRhcmdfcC0+c3RyaW5nLAorKwkJCSAgICAgICFiYXRjaF9mbGFnLCBSRVRV Uk5fTUFTS19BTEwpOworKwlicmVhazsKKysgICAgICBjYXNlIENNREFSR19JTklUX0NPTU1BTkQ6 CisrICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoZXhlY3V0ZV9jb21tYW5kLCBjbWRhcmdf cC0+c3RyaW5nLAorKwkJCSAgICAgICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpOworKwli cmVhazsKKysgICAgfQorKworICAgLyogUmVhZCBhbmQgZXhlY3V0ZSB0aGUgc3lzdGVtLXdpZGUg Z2RiaW5pdCBmaWxlLCBpZiBpdCBleGlzdHMuCisgICAgICBUaGlzIGlzIGRvbmUgKmJlZm9yZSog YWxsIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGFyZQorICAgICAgcHJvY2Vzc2VkOyBpdCBz ZXRzIGdsb2JhbCBwYXJhbWV0ZXJzLCB3aGljaCBhcmUgaW5kZXBlbmRlbnQgb2YKK0BAIC05OTMs NiArMTAzMiw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICBBTExfT0JKRklMRVMg KG9iamZpbGUpCisgICAgIGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChvYmpmaWxlKTsK KyAKKysgIC8qIFByb2Nlc3MgJy14JyBhbmQgJy1leCcgb3B0aW9ucy4gICovCisgICBmb3IgKGkg PSAwOyBWRUNfaXRlcmF0ZSAoY21kYXJnX3MsIGNtZGFyZ192ZWMsIGksIGNtZGFyZ19wKTsgaSsr KQorICAgICBzd2l0Y2ggKGNtZGFyZ19wLT50eXBlKQorICAgICB7CitAQCAtMTA5Myw2ICsxMTMz LDggQEAgT3B0aW9uczpcblxuXAorICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGUgYSBzaW5n bGUgR0RCIGNvbW1hbmQuXG5cCisgICAgICAgICAgICAgICAgICAgICAgTWF5IGJlIHVzZWQgbXVs dGlwbGUgdGltZXMgYW5kIGluIGNvbmp1bmN0aW9uXG5cCisgICAgICAgICAgICAgICAgICAgICAg d2l0aCAtLWNvbW1hbmQuXG5cCisrICAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXggTGlrZSAteCBi dXQgZXhlY3V0ZSBpdCBiZWZvcmUgbG9hZGluZyBpbmZlcmlvci5cblwKKysgIC0taW5pdC1ldmFs LWNvbW1hbmQ9Q09NTUFORCwgLWlleCBMaWtlIC1leCBidXQgYmVmb3JlIGxvYWRpbmcgaW5mZXJp b3IuXG5cCisgICAtLWNvcmU9Q09SRUZJTEUgICAgQW5hbHl6ZSB0aGUgY29yZSBkdW1wIENPUkVG SUxFLlxuXAorICAgLS1waWQ9UElEICAgICAgICAgIEF0dGFjaCB0byBydW5uaW5nIHByb2Nlc3Mg UElELlxuXAorICIpLCBzdHJlYW0pOworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2Rv Yy9nZGIudGV4aW5mbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9n ZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDE6MzEuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6 NDI6NTEuMjMyNjgxMDUyICswMjAwCitAQCAtOTg5LDYgKzk4OSwyMiBAQCBhbHNvIGJlIGludGVy bGVhdmVkIHdpdGggQHNhbXB7LWNvbW1hbmR9CisgICAgLXggc2V0YnJlYWtwb2ludHMgLWV4ICdy dW4nIGEub3V0CisgQGVuZCBzbWFsbGV4YW1wbGUKKyAKKytAaXRlbSAtaW5pdC1jb21tYW5kIEB2 YXJ7ZmlsZX0KKytAaXRlbXggLWl4IEB2YXJ7ZmlsZX0KKytAY2luZGV4IEBjb2Rley0taW5pdC1j b21tYW5kfQorK0BjaW5kZXggQGNvZGV7LWl4fQorK0V4ZWN1dGUgY29tbWFuZHMgZnJvbSBmaWxl IEB2YXJ7ZmlsZX0gYmVmb3JlIGxvYWRpbmcgZ2RiaW5pdCBmaWxlcyBvciB0aGUKKytpbmZlcmlv ci4KKytAeHJlZntTdGFydHVwfS4KKysKKytAaXRlbSAtaW5pdC1ldmFsLWNvbW1hbmQgQHZhcntj b21tYW5kfQorK0BpdGVteCAtaWV4IEB2YXJ7Y29tbWFuZH0KKytAY2luZGV4IEBjb2Rley0taW5p dC1ldmFsLWNvbW1hbmR9CisrQGNpbmRleCBAY29kZXstaWV4fQorK0V4ZWN1dGUgYSBzaW5nbGUg QHZhbHVle0dEQk59IGNvbW1hbmQgYmVmb3JlIGxvYWRpbmcgZ2RiaW5pdCBmaWxlcyBvciB0aGUK KytpbmZlcmlvci4KKytAeHJlZntTdGFydHVwfS4KKysKKyBAaXRlbSAtZGlyZWN0b3J5IEB2YXJ7 ZGlyZWN0b3J5fQorIEBpdGVteCAtZCBAdmFye2RpcmVjdG9yeX0KKyBAY2luZGV4IEBjb2Rley0t ZGlyZWN0b3J5fQorQEAgLTEyNTAsNiArMTI2NiwxMyBAQCBTZXRzIHVwIHRoZSBjb21tYW5kIGlu dGVycHJldGVyIGFzIHNwZWNpCisgKEBweHJlZntNb2RlIE9wdGlvbnMsIGludGVycHJldGVyfSku CisgCisgQGl0ZW0KKytFeGVjdXRlcyBjb21tYW5kcyBhbmQgY29tbWFuZCBmaWxlcyBzcGVjaWZp ZWQgYnkgdGhlIEBzYW1wey1pZXh9IGFuZAorK0BzYW1wey1peH0gb3B0aW9ucyBpbiB0aGVpciBz cGVjaWZpZWQgb3JkZXIuICBVc3VhbGx5IHlvdSBzaG91bGQgdXNlIHRoZQorK0BzYW1wey1leH0g YW5kIEBzYW1wey14fSBvcHRpb25zIGluc3RlYWQsIGJ1dCB0aGlzIHdheSB5b3UgY2FuIGFwcGx5 Cisrc2V0dGluZ3MgYmVmb3JlIEB2YWx1ZXtHREJOfSBpbml0IGZpbGVzIGdldCBleGVjdXRlZCBh bmQgYmVmb3JlIGluZmVyaW9yCisrZ2V0cyBsb2FkZWQuCisrCisrQGl0ZW0KKyBAY2luZGV4IGlu aXQgZmlsZQorIFJlYWRzIHRoZSBzeXN0ZW0td2lkZSBAZGZue2luaXQgZmlsZX0gKGlmIEBvcHRp b257LS13aXRoLXN5c3RlbS1nZGJpbml0fSB3YXMKKyB1c2VkIHdoZW4gYnVpbGRpbmcgQHZhbHVl e0dEQk59OyBAcHhyZWZ7U3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbiwKK0BAIC0xMjgzLDE0ICsx MzA2LDExIEBAIElmIHlvdSB3aXNoIHRvIGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZworIHlvdSBt dXN0IGRvIHNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmc6CisgCisgQHNtYWxsZXhhbXBsZQor LSQgZ2RiIC1leCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgLWV4ICJmaWxlIG15cHJvZ3Jh bSIKKyskIGdkYiAtaWV4ICJzZXQgYXV0by1sb2FkLXNjcmlwdHMgb2ZmIiBteXByb2dyYW0KKyBA ZW5kIHNtYWxsZXhhbXBsZQorIAorLVRoZSBmb2xsb3dpbmcgZG9lcyBub3Qgd29yayBiZWNhdXNl IHRoZSBhdXRvLWxvYWRpbmcgaXMgdHVybmVkIG9mZiB0b28gbGF0ZToKKy0KKy1Ac21hbGxleGFt cGxlCistJCBnZGIgLWV4ICJzZXQgYXV0by1sb2FkLXNjcmlwdHMgb2ZmIiBteXByb2dyYW0KKy1A ZW5kIHNtYWxsZXhhbXBsZQorK09wdGlvbiBAc2FtcHstZXh9IGRvZXMgbm90IHdvcmsgYmVjYXVz ZSB0aGUgYXV0by1sb2FkaW5nIGlzIHRoZW4gdHVybmVkCisrb2ZmIHRvbyBsYXRlLgorIAorIEBp dGVtCisgUmVhZHMgY29tbWFuZCBmaWxlcyBzcGVjaWZpZWQgYnkgdGhlIEBzYW1wey14fSBvcHRp b24uICBAeHJlZntDb21tYW5kCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1 aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAJMjAxMi0wNC0xOCAw MDo0MTozMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0 c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAJMjAxMi0wNC0xOCAwMDo0Mjo1MS4yMzI2ODEwNTIg KzAyMDAKK0BAIC05Miw2ICs5MiwxMCBAQCBwcm9jIGRvX3N0ZXBzX2FuZF9uZXh0cyB7fSB7Cisg CQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBweXRob25fc2NyaXB0IGluaXRpYWxpemF0aW9u IgorIAkJc2V0IGNvbW1hbmQgInN0ZXAiCisgCSAgICB9CisrCSAgICAtcmUgIi4qY21kYXJnX3Zl YyA9IE5VTEwuKiRnZGJfcHJvbXB0ICQiIHsKKysJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVy IGNtZGFyZ192ZWMgaW5pdGlhbGl6YXRpb24iCisrCQlzZXQgY29tbWFuZCAic3RlcCIKKysJICAg IH0KKyAJICAgIC1yZSAiLipwcmVfc3RhdF9jaGFpbiA9IG1ha2VfY29tbWFuZF9zdGF0c19jbGVh bnVwLiokZ2RiX3Byb21wdCAkIiB7CisgCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBtYWtl X2NvbW1hbmRfc3RhdHNfY2xlYW51cCBhbmQgZXZlcnl0aGluZyBpdCBjYWxscyIKKyAJCXNldCBj b21tYW5kICJuZXh0IgorQEAgLTEyOCwxOCArMTMyLDYgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4 dHMge30geworIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgY29uZGl0aW9uYWwgc3RhY2sg YWxpZ25tZW50IGFsbG9jYSIKKyAJCXNldCBjb21tYW5kICJuZXh0IgorIAkgICAgfQorLQkgICAg LXJlICIuKmNtZHNpemUgPSAxLiokZ2RiX3Byb21wdCAkIiB7CistCQlzZXQgZGVzY3JpcHRpb24g InN0ZXAgb3ZlciBjbWRzaXplIGluaXRpYWxpemF0aW9uIgorLQkJc2V0IGNvbW1hbmQgIm5leHQi CistCSAgICB9CistCSAgICAtcmUgIi4qY21kYXJnID0gLiogeG1hbGxvYy4qJGdkYl9wcm9tcHQg JCIgeworLQkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgY21kYXJnIGluaXRpYWxpemF0aW9u IHZpYSB4bWFsbG9jIgorLQkJc2V0IGNvbW1hbmQgIm5leHQiCistCSAgICB9CistCSAgICAtcmUg Ii4qbmNtZCA9IDAuKiRnZGJfcHJvbXB0ICQiIHsKKy0JCXNldCBkZXNjcmlwdGlvbiAibmV4dCBv dmVyIG5jbWQgaW5pdGlhbGl6YXRpb24iCistCQlzZXQgY29tbWFuZCAibmV4dCIKKy0JICAgIH0K KyAJICAgIC1yZSAiLipkaXJzaXplID0gMS4qJGdkYl9wcm9tcHQgJCIgeworIAkJc2V0IGRlc2Ny aXB0aW9uICJuZXh0IG92ZXIgZGlyc2l6ZSBpbml0aWFsaXphdGlvbiIKKyAJCXNldCBjb21tYW5k ICJuZXh0IgorQEAgLTE2Myw2ICsxNTUsMTAgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30g eworIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgdGV4dGRvbWFpbiBQQUNLQUdFIgorIAkJ c2V0IGNvbW1hbmQgIm5leHQiCisgCSAgICB9CisrCSAgICAtcmUgIi4qVkVDX2NsZWFudXAgLmNt ZGFyZ19zLiokZ2RiX3Byb21wdCAkIiB7CisrCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBj bWRhcmdfcyBWRUNfY2xlYW51cCIKKysJCXNldCBjb21tYW5kICJuZXh0IgorKwkgICAgfQorIAkg ICAgLXJlICJcWzAtOVxdK1xbXHQgXF0rXHtcclxuJGdkYl9wcm9tcHQgJCIgeworIAkJc2V0IGRl c2NyaXB0aW9uICJzdGVwIG92ZXIgaW5pdGlhbCBicmFjZSIKKyAJCXNldCBjb21tYW5kICJzdGVw IgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wNm9mMTIucGF0Y2ggYi9nZGItYXV0b2xvYWQt MDZvZjEyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTEyMWVmLi4wMDAw MDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0wNm9mMTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3 MSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAzL21zZzAw MjM2Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MTk6MjMJMS4x NDAyNwotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MjM6NTEJMS4xNDAyOAot IyMgLTEsNSArMSwxMyBAQAotIDIwMTItMDMtMTkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KLSAKLSsJQ29kZSBjbGVhbnVwLgotKwkqIHB5dGhvbi9weS1hdXRv LWxvYWQuYyAoc291cmNlX3NlY3Rpb25fc2NyaXB0cyk6IE5ldyB2YXJpYWJsZSBiYWNrX3RvLgot KwlUdXJuIGZjbG9zZSBhbmQgeGZyZWUgY2FsbHMgaW50byBtYWtlX2NsZWFudXBfZmNsb3NlIGFu ZCBtYWtlX2NsZWFudXAKLSsJd2l0aCB4ZnJlZS4KLSsJKGF1dG9fbG9hZF9vYmpmaWxlX3Njcmlw dCk6IFR1cm4gZmNsb3NlIGludG8gbWFrZV9jbGVhbnVwX2ZjbG9zZS4KLSsKLSsyMDEyLTAzLTE5 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0gCSogTkVX UzogRGVzY3JpYmUgbmV3IG9wdGlvbnMgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IGFuZAotIAkt LWluaXQtZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1pZXguCi0gCSogbWFpbi5jIChzdHJ1Y3QgY21k YXJnKTogTmV3IGVudW0gaXRlbXMgQ01EQVJHX0lOSVRfRklMRSBhbmQKLS0tLSBzcmMvZ2RiL3B5 dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLzAxLzI2IDIxOjU0OjQ1CTEuMTgKLSsrKyBzcmMvZ2Ri L3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLzAzLzE5IDE4OjIzOjUyCTEuMTkKLUBAIC0yNTQs NiArMjU0LDcgQEAKLSAgICAgICBGSUxFICpzdHJlYW07Ci0gICAgICAgY2hhciAqZnVsbF9wYXRo OwotICAgICAgIGludCBvcGVuZWQsIGluX2hhc2hfdGFibGU7Ci0rICAgICAgc3RydWN0IGNsZWFu dXAgKmJhY2tfdG87Ci0gCi0gICAgICAgaWYgKCpwICE9IDEpCi0gCXsKLUBAIC0yODYsNiArMjg3 LDEzIEBACi0gICAgICAgb3BlbmVkID0gZmluZF9hbmRfb3Blbl9zY3JpcHQgKGZpbGUsIDEgLypz ZWFyY2hfcGF0aCovLAotIAkJCQkgICAgICZzdHJlYW0sICZmdWxsX3BhdGgpOwotIAotKyAgICAg IGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgTlVMTCk7Ci0rICAgICAgaWYg KG9wZW5lZCkKLSsJewotKwkgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7Ci0rCSAgbWFr ZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKLSsJfQotKwotICAgICAgIC8qIElmIG9uZSBz Y3JpcHQgaXNuJ3QgZm91bmQgaXQncyBub3QgdW5jb21tb24gZm9yIG1vcmUgdG8gbm90IGJlCi0g CSBmb3VuZCBlaXRoZXIuICBXZSBkb24ndCB3YW50IHRvIHByaW50IGFuIGVycm9yIG1lc3NhZ2Ug Zm9yIGVhY2gKLSAJIHNjcmlwdCwgdG9vIG11Y2ggbm9pc2UuICBJbnN0ZWFkLCB3ZSBwcmludCB0 aGUgd2FybmluZyBvbmNlIGFuZCB0ZWxsCi1AQCAtMzEzLDkgKzMyMSw5IEBACi0gCSAgLyogSWYg dGhpcyBmaWxlIGlzIG5vdCBjdXJyZW50bHkgbG9hZGVkLCBsb2FkIGl0LiAgKi8KLSAJICBpZiAo ISBpbl9oYXNoX3RhYmxlKQotIAkgICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUg KG9iamZpbGUsIHN0cmVhbSwgZnVsbF9wYXRoKTsKLS0JICBmY2xvc2UgKHN0cmVhbSk7Ci0tCSAg eGZyZWUgKGZ1bGxfcGF0aCk7Ci0gCX0KLSsKLSsgICAgICBkb19jbGVhbnVwcyAoYmFja190byk7 Ci0gICAgIH0KLSB9Ci0gCi1AQCAtNDIwLDYgKzQyOCw4IEBACi0gICAgIHsKLSAgICAgICBzdHJ1 Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLSAKLSsgICAgICBtYWtlX2Ns ZWFudXBfZmNsb3NlIChpbnB1dCk7Ci0rCi0gICAgICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRo ZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIKLSAJIGNhbiBwcmlu dCBpdC4gICovCi0gICAgICAgcHNwYWNlX2luZm8gPQotQEAgLTQzMiw3ICs0NDIsNiBAQAotIAkg YW5kIHRoZXNlIHNjcmlwdHMgYXJlIHJlcXVpcmVkIHRvIGJlIGlkZW1wb3RlbnQgdW5kZXIgbXVs dGlwbGUKLSAJIGxvYWRzIGFueXdheS4gICovCi0gICAgICAgc291cmNlX3B5dGhvbl9zY3JpcHRf Zm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1Z2ZpbGUpOwotLSAgICAgIGZjbG9zZSAo aW5wdXQpOwotICAgICB9Ci0gCi0gICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwoKZGlmZiAtLWdp dCBhL2dkYi1hdXRvbG9hZC0wNm9mMTgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDZvZjE4LnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMTIxZWYKLS0tIC9kZXYvbnVs bAorKysgYi9nZGItYXV0b2xvYWQtMDZvZjE4LnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKK2h0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDMvbXNnMDAyMzYuaHRtbAorCisjIyMg c3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODoxOToyMwkxLjE0MDI3CisjIyMgc3JjL2dk Yi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODoyMzo1MQkxLjE0MDI4CisjIyAtMSw1ICsxLDEzIEBA CisgMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgorIAorKwlDb2RlIGNsZWFudXAuCisrCSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jIChzb3VyY2Vf c2VjdGlvbl9zY3JpcHRzKTogTmV3IHZhcmlhYmxlIGJhY2tfdG8uCisrCVR1cm4gZmNsb3NlIGFu ZCB4ZnJlZSBjYWxscyBpbnRvIG1ha2VfY2xlYW51cF9mY2xvc2UgYW5kIG1ha2VfY2xlYW51cAor Kwl3aXRoIHhmcmVlLgorKwkoYXV0b19sb2FkX29iamZpbGVfc2NyaXB0KTogVHVybiBmY2xvc2Ug aW50byBtYWtlX2NsZWFudXBfZmNsb3NlLgorKworKzIwMTItMDMtMTkgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKyAJKiBORVdTOiBEZXNjcmliZSBuZXcg b3B0aW9ucyAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXggYW5kCisgCS0taW5pdC1ldmFsLWNvbW1h bmQ9Q09NTUFORCwgLWlleC4KKyAJKiBtYWluLmMgKHN0cnVjdCBjbWRhcmcpOiBOZXcgZW51bSBp dGVtcyBDTURBUkdfSU5JVF9GSUxFIGFuZAorLS0tIHNyYy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9h ZC5jCTIwMTIvMDEvMjYgMjE6NTQ6NDUJMS4xOAorKysrIHNyYy9nZGIvcHl0aG9uL3B5LWF1dG8t bG9hZC5jCTIwMTIvMDMvMTkgMTg6MjM6NTIJMS4xOQorQEAgLTI1NCw2ICsyNTQsNyBAQAorICAg ICAgIEZJTEUgKnN0cmVhbTsKKyAgICAgICBjaGFyICpmdWxsX3BhdGg7CisgICAgICAgaW50IG9w ZW5lZCwgaW5faGFzaF90YWJsZTsKKysgICAgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKKyAK KyAgICAgICBpZiAoKnAgIT0gMSkKKyAJeworQEAgLTI4Niw2ICsyODcsMTMgQEAKKyAgICAgICBv cGVuZWQgPSBmaW5kX2FuZF9vcGVuX3NjcmlwdCAoZmlsZSwgMSAvKnNlYXJjaF9wYXRoKi8sCisg CQkJCSAgICAgJnN0cmVhbSwgJmZ1bGxfcGF0aCk7CisgCisrICAgICAgYmFja190byA9IG1ha2Vf Y2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsKKysgICAgICBpZiAob3BlbmVkKQorKwl7Cisr CSAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFtKTsKKysJICBtYWtlX2NsZWFudXAgKHhmcmVl LCBmdWxsX3BhdGgpOworKwl9CisrCisgICAgICAgLyogSWYgb25lIHNjcmlwdCBpc24ndCBmb3Vu ZCBpdCdzIG5vdCB1bmNvbW1vbiBmb3IgbW9yZSB0byBub3QgYmUKKyAJIGZvdW5kIGVpdGhlci4g IFdlIGRvbid0IHdhbnQgdG8gcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBmb3IgZWFjaAorIAkgc2Ny aXB0LCB0b28gbXVjaCBub2lzZS4gIEluc3RlYWQsIHdlIHByaW50IHRoZSB3YXJuaW5nIG9uY2Ug YW5kIHRlbGwKK0BAIC0zMTMsOSArMzIxLDkgQEAKKyAJICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90 IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLworIAkgIGlmICghIGluX2hhc2hfdGFibGUp CisgCSAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgc3RyZWFt LCBmdWxsX3BhdGgpOworLQkgIGZjbG9zZSAoc3RyZWFtKTsKKy0JICB4ZnJlZSAoZnVsbF9wYXRo KTsKKyAJfQorKworKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKyAgICAgfQorIH0KKyAK K0BAIC00MjAsNiArNDI4LDggQEAKKyAgICAgeworICAgICAgIHN0cnVjdCBhdXRvX2xvYWRfcHNw YWNlX2luZm8gKnBzcGFjZV9pbmZvOworIAorKyAgICAgIG1ha2VfY2xlYW51cF9mY2xvc2UgKGlu cHV0KTsKKysKKyAgICAgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9v IHNvICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIgorIAkgY2FuIHByaW50IGl0LiAgKi8KKyAgICAg ICBwc3BhY2VfaW5mbyA9CitAQCAtNDMyLDcgKzQ0Miw2IEBACisgCSBhbmQgdGhlc2Ugc2NyaXB0 cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQorIAkgbG9hZHMg YW55d2F5LiAgKi8KKyAgICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2Jq ZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7CistICAgICAgZmNsb3NlIChpbnB1dCk7CisgICAgIH0K KyAKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2Fk LTA3b2YxMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wN29mMTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDUxZDEyOWUuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTA3b2Yx Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItY3ZzLzIwMTItMDMvbXNnMDAyOTYuaHRtbAotCi0jIyMgc3JjL2dkYi9kb2Mv Q2hhbmdlTG9nCTIwMTIvMDMvMjIgMDg6MTA6NDEJMS4xMjg5Ci0jIyMgc3JjL2dkYi9kb2MvQ2hh bmdlTG9nCTIwMTIvMDMvMjcgMjA6MTU6MjAJMS4xMjkwCi0jIyAtMSwzICsxLDEyIEBACi0rMjAx Mi0wMy0yNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwot KwkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcpOiBSZW5hbWUgbm9kZSByZWZlcmVuY2UKLSsJ Jy5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uJyB0byAnZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2Vj dGlvbicuCi0rCVR3aWNlLgotKwkoLmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24pOiBSZW5hbWUg dGhlIG5vZGUgLi4uCi0rCShkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uKTogLi4uIGhlcmUu Ci0rCShNYWludGVuYW5jZSBDb21tYW5kcyk6IEFsc28gcmVuYW1lIHRoaXMgbm9kZSByZWZlcmVu Y2UuCi0rCi0gMjAxMi0wMy0yMiAgU2l2YSBDaGFuZHJhIFJlZGR5ICA8c2l2YWNoYW5kcmFAZ29v Z2xlLmNvbT4KLSAKLSAJKiBnZGIudGV4aW5mbyAoUHl0aG9uIEFQSS9WYWx1ZXMgRnJvbSBJbmZl cmlvcik6IEFkZCBkZXNjcmlwdGlvbgotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIv MDMvMjIgMDg6MTA6NDEJMS45MzYKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzAz LzI3IDIwOjE1OjIwCTEuOTM3Ci1AQCAtMjQ3MTcsOCArMjQ3MTcsOCBAQAotIEBmaWxle0B2YXJ7 b2JqZmlsZX0tZ2RiLnB5fSBhbmQgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uLgot IAotIEBtZW51Ci0tKiBvYmpmaWxlLWdkYi5weSBmaWxlOjogICAgICAgICBUaGUgQGZpbGV7QHZh cntvYmpmaWxlfS1nZGIucHl9IGZpbGUKLS0qIC5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uOjog IFRoZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24KLSsqIG9iamZpbGUtZ2RiLnB5 IGZpbGU6OiAgICAgICAgICBUaGUgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIucHl9IGZpbGUKLSsq IGRvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb246OiBUaGUgQGNvZGV7LmRlYnVnX2dkYl9zY3Jp cHRzfSBzZWN0aW9uCi0gKiBXaGljaCBmbGF2b3IgdG8gY2hvb3NlPzo6Ci0gQGVuZCBtZW51Ci0g Ci1AQCAtMjQ3NDQsNyArMjQ3NDQsNyBAQAotIAotIEFsc28gcHJpbnRlZCBpcyB0aGUgbGlzdCBv ZiBzY3JpcHRzIHRoYXQgd2VyZSBtZW50aW9uZWQgaW4KLSB0aGUgQGNvZGV7LmRlYnVnX2dkYl9z Y3JpcHRzfSBzZWN0aW9uIGFuZCB3ZXJlIG5vdCBmb3VuZAotLShAcHhyZWZ7LmRlYnVnX2dkYl9z Y3JpcHRzIHNlY3Rpb259KS4KLSsoQHB4cmVme2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259 KS4KLSBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIHRoZWlyIG5hbWVzIGFyZSBub3QgcHJpbnRlZCB3 aGVuIEB2YWx1ZXtHREJOfQotIHRyaWVzIHRvIGxvYWQgdGhlbSBhbmQgZmFpbHMuICBUaGVyZSBt YXkgYmUgbWFueSBvZiB0aGVtLCBhbmQgcHJpbnRpbmcKLSBhbiBlcnJvciBtZXNzYWdlIGZvciBl YWNoIG9uZSBpcyBwcm9ibGVtYXRpYy4KLUBAIC0yNDc5NSw3ICsyNDc5NSw3IEBACi0gU28geW91 ciBAZmlsZXstZ2RiLnB5fSBmaWxlIHNob3VsZCBiZSBjYXJlZnVsIHRvIGF2b2lkIGVycm9ycyBp ZiBpdAotIGlzIGV2YWx1YXRlZCBtb3JlIHRoYW4gb25jZS4KLSAKLS1Abm9kZSAuZGVidWdfZ2Ri X3NjcmlwdHMgc2VjdGlvbgotK0Bub2RlIGRvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24KLSBA c3Vic3Vic2VjdGlvbiBUaGUgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uCi0gQGNp bmRleCBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24KLSAKLUBAIC0zMzQ3NSw3ICsz MzQ3NSw3IEBACi0gbWF0Y2hpbmcgQHZhcntyZWdleHB9LgotIEZvciBlYWNoIHNjcmlwdCwgdGhp cyBjb21tYW5kIHByaW50cyBpdHMgbmFtZSBhcyBzcGVjaWZpZWQgaW4gdGhlIG9iamZpbGUsCi0g YW5kIHRoZSBmdWxsIHBhdGggaWYga25vd24uCi0tQHhyZWZ7LmRlYnVnX2dkYl9zY3JpcHRzIHNl Y3Rpb259LgotK0B4cmVme2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259LgotIAotIEBraW5k ZXggbWFpbnQgcHJpbnQgc3RhdGlzdGljcwotIEBjaW5kZXggYmNhY2hlIHN0YXRpc3RpY3MKCmRp ZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDdvZjE4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA3b2Yx OC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWQxMjllCi0tLSAv ZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTA3b2YxOC5wYXRjaApAQCAtMCwwICsxLDU3IEBA CitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAzL21zZzAwMjk2Lmh0bWwK KworIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzAzLzIyIDA4OjEwOjQxCTEuMTI4OQor IyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzAzLzI3IDIwOjE1OjIwCTEuMTI5MAorIyMg LTEsMyArMSwxMiBAQAorKzIwMTItMDMtMjcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KKysKKysJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nKTogUmVuYW1l IG5vZGUgcmVmZXJlbmNlCisrCScuZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbicgdG8gJ2RvdGRl YnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24nLgorKwlUd2ljZS4KKysJKC5kZWJ1Z19nZGJfc2NyaXB0 cyBzZWN0aW9uKTogUmVuYW1lIHRoZSBub2RlIC4uLgorKwkoZG90ZGVidWdfZ2RiX3NjcmlwdHMg c2VjdGlvbik6IC4uLiBoZXJlLgorKwkoTWFpbnRlbmFuY2UgQ29tbWFuZHMpOiBBbHNvIHJlbmFt ZSB0aGlzIG5vZGUgcmVmZXJlbmNlLgorKworIDIwMTItMDMtMjIgIFNpdmEgQ2hhbmRyYSBSZWRk eSAgPHNpdmFjaGFuZHJhQGdvb2dsZS5jb20+CisgCisgCSogZ2RiLnRleGluZm8gKFB5dGhvbiBB UEkvVmFsdWVzIEZyb20gSW5mZXJpb3IpOiBBZGQgZGVzY3JpcHRpb24KKy0tLSBzcmMvZ2RiL2Rv Yy9nZGIudGV4aW5mbwkyMDEyLzAzLzIyIDA4OjEwOjQxCTEuOTM2CisrKysgc3JjL2dkYi9kb2Mv Z2RiLnRleGluZm8JMjAxMi8wMy8yNyAyMDoxNToyMAkxLjkzNworQEAgLTI0NzE3LDggKzI0NzE3 LDggQEAKKyBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5weX0gYW5kIEBjb2Rley5kZWJ1Z19nZGJf c2NyaXB0c30gc2VjdGlvbi4KKyAKKyBAbWVudQorLSogb2JqZmlsZS1nZGIucHkgZmlsZTo6ICAg ICAgICAgVGhlIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLnB5fSBmaWxlCistKiAuZGVidWdfZ2Ri X3NjcmlwdHMgc2VjdGlvbjo6ICBUaGUgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9u CisrKiBvYmpmaWxlLWdkYi5weSBmaWxlOjogICAgICAgICAgVGhlIEBmaWxle0B2YXJ7b2JqZmls ZX0tZ2RiLnB5fSBmaWxlCisrKiBkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uOjogVGhlIEBj b2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbgorICogV2hpY2ggZmxhdm9yIHRvIGNob29z ZT86OgorIEBlbmQgbWVudQorIAorQEAgLTI0NzQ0LDcgKzI0NzQ0LDcgQEAKKyAKKyBBbHNvIHBy aW50ZWQgaXMgdGhlIGxpc3Qgb2Ygc2NyaXB0cyB0aGF0IHdlcmUgbWVudGlvbmVkIGluCisgdGhl IEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbiBhbmQgd2VyZSBub3QgZm91bmQKKy0o QHB4cmVmey5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufSkuCisrKEBweHJlZntkb3RkZWJ1Z19n ZGJfc2NyaXB0cyBzZWN0aW9ufSkuCisgVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSB0aGVpciBuYW1l cyBhcmUgbm90IHByaW50ZWQgd2hlbiBAdmFsdWV7R0RCTn0KKyB0cmllcyB0byBsb2FkIHRoZW0g YW5kIGZhaWxzLiAgVGhlcmUgbWF5IGJlIG1hbnkgb2YgdGhlbSwgYW5kIHByaW50aW5nCisgYW4g ZXJyb3IgbWVzc2FnZSBmb3IgZWFjaCBvbmUgaXMgcHJvYmxlbWF0aWMuCitAQCAtMjQ3OTUsNyAr MjQ3OTUsNyBAQAorIFNvIHlvdXIgQGZpbGV7LWdkYi5weX0gZmlsZSBzaG91bGQgYmUgY2FyZWZ1 bCB0byBhdm9pZCBlcnJvcnMgaWYgaXQKKyBpcyBldmFsdWF0ZWQgbW9yZSB0aGFuIG9uY2UuCisg CistQG5vZGUgLmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24KKytAbm9kZSBkb3RkZWJ1Z19nZGJf c2NyaXB0cyBzZWN0aW9uCisgQHN1YnN1YnNlY3Rpb24gVGhlIEBjb2Rley5kZWJ1Z19nZGJfc2Ny aXB0c30gc2VjdGlvbgorIEBjaW5kZXggQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9u CisgCitAQCAtMzM0NzUsNyArMzM0NzUsNyBAQAorIG1hdGNoaW5nIEB2YXJ7cmVnZXhwfS4KKyBG b3IgZWFjaCBzY3JpcHQsIHRoaXMgY29tbWFuZCBwcmludHMgaXRzIG5hbWUgYXMgc3BlY2lmaWVk IGluIHRoZSBvYmpmaWxlLAorIGFuZCB0aGUgZnVsbCBwYXRoIGlmIGtub3duLgorLUB4cmVmey5k ZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufS4KKytAeHJlZntkb3RkZWJ1Z19nZGJfc2NyaXB0cyBz ZWN0aW9ufS4KKyAKKyBAa2luZGV4IG1haW50IHByaW50IHN0YXRpc3RpY3MKKyBAY2luZGV4IGJj YWNoZSBzdGF0aXN0aWNzCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTA4b2YxMi5wYXRjaCBi L2dkYi1hdXRvbG9hZC0wOG9mMTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGI0OGJmYzEuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTA4b2YxMi5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDE3MSArMCwwIEBACi1bcGF0Y2gjNCAyLzhdIENvZGUgY2xlYW51cDogbmV3 IHBhdGggdG8gVkVDIGluIHV0aWxzLmMKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0 Y2hlcy8yMDEyLTA0L21zZzAwMDg2Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt Y3ZzLzIwMTItMDQvbXNnMDAxMTEuaHRtbAotIC0gcmVkdWNlZCBmb3IgdGhlIGJhY2twb3J0Ci0K LSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjQ1OjA1CTEuMTQxMTAKLSMjIyBz cmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjQ3OjA4CTEuMTQxMTEKLSMjIC0xLDYgKzEs MzQgQEAKLSAyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+Ci0gCi0gCUNvZGUgY2xlYW51cC4KLSsJKiBjaGFyc2V0LmMgKGZpbmRfY2hhcnNldF9u YW1lcyk6IFJlbW92ZSB2YXJpYWJsZXMgaXggYW5kIGVsdC4KLSsJVXNlIGZyZWVfY2hhcl9wdHJf dmVjLgotKwkqIGVsZnJlYWQuYyAoYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUpOiBOZXcgdmFy aWFibGVzIGRlYnVnZGlyX3ZlYywKLSsJYmFja190byBhbmQgaXguICBVc2UgZGlybmFtZXNfdG9f Y2hhcl9wdHJfdmVjLiAgUmVtb3ZlIHZhcmlhYmxlCi0rCWRlYnVnZGlyX2VuZC4gIE5ldyB2YXJp YWJsZSBkZWJ1Z2Rpcl9sZW4uCi0rCSogZ2RiX3ZlY3MuaCAoZnJlZV9jaGFyX3B0cl92ZWMsIG1h a2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYykKLSsJKGRpcm5hbWVzX3RvX2NoYXJfcHRyX3Zl Y19hcHBlbmQsIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyk6IE5ldwotKwlkZWNsYXJhdGlvbnMu Ci0rCSogcHJvZ3NwYWNlLmMgKGNsZWFyX3Byb2dyYW1fc3BhY2Vfc29saWJfY2FjaGUpOiBSZW1v dmUgdmFyaWFibGVzIGl4Ci0rCWFuZCBlbHQuICBVc2UgZnJlZV9jaGFyX3B0cl92ZWMuCi0rCSog c291cmNlLmMgKGFkZF9wYXRoKTogUmVtb3ZlIHZhcmlhYmxlcyBhcmd2LCBhcmcgYW5kIGFyZ3Zf aW5kZXguCi0rCU5ldyB2YXJpYWJsZXMgZGlyX3ZlYywgYmFja190bywgaXggYW5kIG5hbWUuCi0r CVVzZSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kLiAgVXNlIGZyZWVhcmd2IGluc3Rl YWQgb2YKLSsJbWFrZV9jbGVhbnVwX2ZyZWVhcmd2LiAgUmVtb3ZlIHZhcmlhYmxlIHNlcGFyYXRv ci4gIFNpbXBsaWZ5IHRoZSBjb2RlCi0rCW5vIGxvbmdlciBleHBlY3RpbmcgRElSTkFNRV9TRVBB UkFUT1IuCi0rCShvcGVucCk6IFJlbW92ZSB2YXJpYWJsZSBwLCBwMSBhbmQgbGVuLiAgTmV3IHZh cmlhYmxlcyBkaXJfdmVjLAotKwliYWNrX3RvLCBpeCBhbmQgZGlyLiAgVXNlIGRpcm5hbWVzX3Rv X2NoYXJfcHRyX3ZlYy4gIFNpbXBsaWZ5IHRoZSBjb2RlCi0rCW5vIGxvbmdlciBleHBlY3Rpbmcg RElSTkFNRV9TRVBBUkFUT1IuCi0rCSogc3ltZmlsZS5jIChmaW5kX3NlcGFyYXRlX2RlYnVnX2Zp bGUpOiBOZXcgdmFyaWFibGVzIGRlYnVnZGlyX3ZlYywKLSsJYmFja190byBhbmQgaXguICBVc2Ug ZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjLiAgUmVtb3ZlIHZhcmlhYmxlCi0rCWRlYnVnZGlyX2Vu ZC4KLSsJKiB1dGlscy5jIChmcmVlX2NoYXJfcHRyX3ZlYywgZG9fZnJlZV9jaGFyX3B0cl92ZWMp Ci0rCShtYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92ZWMsIGRpcm5hbWVzX3RvX2NoYXJfcHRy X3ZlY19hcHBlbmQpCi0rCShkaXJuYW1lc190b19jaGFyX3B0cl92ZWMpOiBOZXcgZnVuY3Rpb25z LgotKwotKzIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KLSsKLSsJQ29kZSBjbGVhbnVwLgotIAkqIHNvdXJjZS5jIChhZGRfcGF0aCk6IFJlbW92 ZSBhbHdheXMgdHJ1ZSBjb25kaXRpb25hbCAncCA9PSAwJyBhbmQKLSAJdW5pbmRlbnQgaXRzIGNv ZGUgYmxvY2suCi0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZ2RiX3ZlY3MuaAot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZ2RiX3ZlY3MuaAky MDEyLTA0LTE4IDAwOjQwOjEyLjA2NzA4NjAxNiArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2dkYl92ZWNzLmgJMjAxMi0wNC0xOCAwMDo0MDoyMy40NzQwNTY5OTMgKzAyMDAKLUBA IC0yNSw0ICsyNSwxNiBAQAotIAotIERFRl9WRUNfUCAoY2hhcl9wdHIpOwotIAotKy8qIEZyb20g dXRpbHMuYzogKi8KLSsKLStleHRlcm4gdm9pZCBmcmVlX2NoYXJfcHRyX3ZlYyAoVkVDIChjaGFy X3B0cikgKmNoYXJfcHRyX3ZlYyk7Ci0rCi0rZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICoKLSsgIG1h a2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYyAoVkVDIChjaGFyX3B0cikgKmNoYXJfcHRyX3Zl Yyk7Ci0rCi0rZXh0ZXJuIHZvaWQgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjX2FwcGVuZCAoVkVD IChjaGFyX3B0cikgKip2ZWNwLAotKwkJCQkJICAgICBjb25zdCBjaGFyICpkaXJuYW1lcyk7Ci0r Ci0rZXh0ZXJuIFZFQyAoY2hhcl9wdHIpICpkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGNvbnN0 IGNoYXIgKmRpcm5hbWVzKTsKLSsKLSAjZW5kaWYgLyogR0RCX1ZFQ1NfSCAqLwotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL3V0aWxzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUw LjIwMTIwMTIwLm9yaWcvZ2RiL3V0aWxzLmMJMjAxMi0wNC0xOCAwMDo0MDoxMi4wNjgwODYwMTMg KzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi91dGlscy5jCTIwMTItMDQtMTggMDA6 NDA6NDkuODYyOTg5ODU1ICswMjAwCi1AQCAtMjksNiArMjksNyBAQAotICNpZmRlZiBIQVZFX1NZ U19SRVNPVVJDRV9ICi0gI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotICNlbmRpZiAvKiBIQVZF X1NZU19SRVNPVVJDRV9IICovCi0rI2luY2x1ZGUgImdkYl92ZWNzLmgiCi0gCi0gI2lmZGVmIFRV SQotICNpbmNsdWRlICJ0dWkvdHVpLmgiCQkvKiBGb3IgdHVpX2dldF9jb21tYW5kX2RpbWVuc2lv bi4gICAqLwotQEAgLTM4MzUsNiArMzgzNiw5NSBAQCBwcm9kdWNlcl9pc19nY2NfZ2VfNCAoY29u c3QgY2hhciAqcHJvZHVjCi0gICByZXR1cm4gbWlub3I7Ci0gfQotIAotKy8qIENhbGwgeGZyZWUg Zm9yIGVhY2ggZWxlbWVudCBvZiBDSEFSX1BUUl9WRUMgYW5kIGZpbmFsIFZFQ19mcmVlIGZvcgot KyAgIENIQVJfUFRSX1ZFQyBpdHNlbGYuCi0rCi0rICAgWW91IG11c3Qgbm90IG1vZGlmeSBDSEFS X1BUUl9WRUMgYWZ0ZXIgaXQgZ290IHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGZ1bmN0aW9uCi0rICAg YnkgbWFrZV9jbGVhbnVwIGFzIHRoZSBDSEFSX1BUUl9WRUMgYmFzZSBhZGRyZXNzIG1heSBjaGFu Z2Ugb24gaXRzIHVwZGF0ZXMuCi0rICAgQ29udHJhcnkgdG8gVkVDX2ZyZWUgdGhpcyBmdW5jdGlv biBkb2VzIG5vdCAoY2Fubm90KSBjbGVhciB0aGUgcG9pbnRlci4gICovCi0rCi0rdm9pZAotK2Zy ZWVfY2hhcl9wdHJfdmVjIChWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVjKQotK3sKLSsgIGlu dCBpeDsKLSsgIGNoYXIgKm5hbWU7Ci0rCi0rICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNo YXJfcHRyLCBjaGFyX3B0cl92ZWMsIGl4LCBuYW1lKTsgKytpeCkKLSsgICAgeGZyZWUgKG5hbWUp OwotKyAgVkVDX2ZyZWUgKGNoYXJfcHRyLCBjaGFyX3B0cl92ZWMpOwotK30KLSsKLSsvKiBIZWxw ZXIgZm9yIG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYy4gICovCi0rCi0rc3RhdGljIHZv aWQKLStkb19mcmVlX2NoYXJfcHRyX3ZlYyAodm9pZCAqYXJnKQotK3sKLSsgIFZFQyAoY2hhcl9w dHIpICpjaGFyX3B0cl92ZWMgPSBhcmc7Ci0rCi0rICBmcmVlX2NoYXJfcHRyX3ZlYyAoY2hhcl9w dHJfdmVjKTsKLSt9Ci0rCi0rLyogTWFrZSBjbGVhbnVwIGhhbmRsZXIgY2FsbGluZyB4ZnJlZSBm b3IgZWFjaCBlbGVtZW50IG9mIENIQVJfUFRSX1ZFQyBhbmQKLSsgICBmaW5hbCBWRUNfZnJlZSBm b3IgQ0hBUl9QVFJfVkVDIGl0c2VsZi4KLSsKLSsgICBZb3UgbXVzdCBub3QgbW9kaWZ5IENIQVJf UFRSX1ZFQyBhZnRlciB0aGlzIGNsZWFudXAgcmVnaXN0cmF0aW9uIGFzIHRoZQotKyAgIENIQVJf UFRSX1ZFQyBiYXNlIGFkZHJlc3MgbWF5IGNoYW5nZSBvbiBpdHMgdXBkYXRlcy4gIENvbnRyYXJ5 IHRvIFZFQ19mcmVlCi0rICAgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCAoY2Fubm90KSBjbGVhciB0 aGUgcG9pbnRlci4gICovCi0rCi0rc3RydWN0IGNsZWFudXAgKgotK21ha2VfY2xlYW51cF9mcmVl X2NoYXJfcHRyX3ZlYyAoVkVDIChjaGFyX3B0cikgKmNoYXJfcHRyX3ZlYykKLSt7Ci0rICByZXR1 cm4gbWFrZV9jbGVhbnVwIChkb19mcmVlX2NoYXJfcHRyX3ZlYywgY2hhcl9wdHJfdmVjKTsKLSt9 Ci0rCi0rLyogRXh0ZW5kZWQgdmVyc2lvbiBvZiBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgLSBh ZGRpdGlvbmFsbHkgaWYgKlZFQ1AgaXMKLSsgICBub24tTlVMTCB0aGUgbmV3IGxpc3QgZWxlbWVu dHMgZnJvbSBESVJOQU1FUyBhcmUgYXBwZW5kZWQgdG8gdGhlIGV4aXN0aW5nCi0rICAgKlZFQ1Ag bGlzdCBvZiBlbnRyaWVzLiAgKlZFQ1AgYWRkcmVzcyB3aWxsIGJlIHVwZGF0ZWQgYnkgdGhpcyBj YWxsLiAgKi8KLSsKLSt2b2lkCi0rZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjX2FwcGVuZCAoVkVD IChjaGFyX3B0cikgKip2ZWNwLCBjb25zdCBjaGFyICpkaXJuYW1lcykKLSt7Ci0rICBkbwotKyAg ICB7Ci0rICAgICAgc2l6ZV90IHRoaXNfbGVuOwotKyAgICAgIGNoYXIgKm5leHRfZGlyLCAqdGhp c19kaXI7Ci0rCi0rICAgICAgbmV4dF9kaXIgPSBzdHJjaHIgKGRpcm5hbWVzLCBESVJOQU1FX1NF UEFSQVRPUik7Ci0rICAgICAgaWYgKG5leHRfZGlyID09IE5VTEwpCi0rCXRoaXNfbGVuID0gc3Ry bGVuIChkaXJuYW1lcyk7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgdGhpc19sZW4gPSBuZXh0X2Rp ciAtIGRpcm5hbWVzOwotKwkgIG5leHRfZGlyKys7Ci0rCX0KLSsKLSsgICAgICB0aGlzX2RpciA9 IHhtYWxsb2MgKHRoaXNfbGVuICsgMSk7Ci0rICAgICAgbWVtY3B5ICh0aGlzX2RpciwgZGlybmFt ZXMsIHRoaXNfbGVuKTsKLSsgICAgICB0aGlzX2Rpclt0aGlzX2xlbl0gPSAnXDAnOwotKyAgICAg IFZFQ19zYWZlX3B1c2ggKGNoYXJfcHRyLCAqdmVjcCwgdGhpc19kaXIpOwotKwotKyAgICAgIGRp cm5hbWVzID0gbmV4dF9kaXI7Ci0rICAgIH0KLSsgIHdoaWxlIChkaXJuYW1lcyAhPSBOVUxMKTsK LSt9Ci0rCi0rLyogU3BsaXQgRElSTkFNRVMgYnkgRElSTkFNRV9TRVBBUkFUT1IgZGVsaW1pdGVy IGFuZCByZXR1cm4gYSBsaXN0IG9mIGFsbCB0aGUKLSsgICBlbGVtZW50cyBpbiB0aGVpciBvcmln aW5hbCBvcmRlci4gIEZvciBlbXB0eSBzdHJpbmcgKCIiKSBESVJOQU1FUyByZXR1cm4KLSsgICBs aXN0IG9mIG9uZSBlbXB0eSBzdHJpbmcgKCIiKSBlbGVtZW50LgotKyAgIAotKyAgIFlvdSBtYXkg bW9kaWZ5IHRoZSByZXR1cm5lZCBzdHJpbmdzLgotKyAgIFJlYWQgZnJlZV9jaGFyX3B0cl92ZWMg Zm9yIGl0cyBjbGVhbnVwLiAgKi8KLSsKLStWRUMgKGNoYXJfcHRyKSAqCi0rZGlybmFtZXNfdG9f Y2hhcl9wdHJfdmVjIChjb25zdCBjaGFyICpkaXJuYW1lcykKLSt7Ci0rICBWRUMgKGNoYXJfcHRy KSAqcmV0dmFsID0gTlVMTDsKLSsgIAotKyAgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjX2FwcGVu ZCAoJnJldHZhbCwgZGlybmFtZXMpOwotKwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0rCi0gI2lm ZGVmIEhBVkVfV0FJVFBJRAotIAotICNpZmRlZiBTSUdBTFJNCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1 dG9sb2FkLTA4b2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wOG9mMTgucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ4YmZjMQotLS0gL2Rldi9udWxsCisrKyBiL2dk Yi1hdXRvbG9hZC0wOG9mMTgucGF0Y2gKQEAgLTAsMCArMSwxNzEgQEAKK1twYXRjaCM0IDIvOF0g Q29kZSBjbGVhbnVwOiBuZXcgcGF0aCB0byBWRUMgaW4gdXRpbHMuYworaHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwODYuaHRtbAoraHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExMS5odG1sCisgLSByZWR1Y2VkIGZv ciB0aGUgYmFja3BvcnQKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NDU6 MDUJMS4xNDExMAorIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NDc6MDgJMS4x NDExMQorIyMgLTEsNiArMSwzNCBAQAorIDIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAKKyAJQ29kZSBjbGVhbnVwLgorKwkqIGNoYXJzZXQu YyAoZmluZF9jaGFyc2V0X25hbWVzKTogUmVtb3ZlIHZhcmlhYmxlcyBpeCBhbmQgZWx0LgorKwlV c2UgZnJlZV9jaGFyX3B0cl92ZWMuCisrCSogZWxmcmVhZC5jIChidWlsZF9pZF90b19kZWJ1Z19m aWxlbmFtZSk6IE5ldyB2YXJpYWJsZXMgZGVidWdkaXJfdmVjLAorKwliYWNrX3RvIGFuZCBpeC4g IFVzZSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMuICBSZW1vdmUgdmFyaWFibGUKKysJZGVidWdk aXJfZW5kLiAgTmV3IHZhcmlhYmxlIGRlYnVnZGlyX2xlbi4KKysJKiBnZGJfdmVjcy5oIChmcmVl X2NoYXJfcHRyX3ZlYywgbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjKQorKwkoZGlybmFt ZXNfdG9fY2hhcl9wdHJfdmVjX2FwcGVuZCwgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjKTogTmV3 CisrCWRlY2xhcmF0aW9ucy4KKysJKiBwcm9nc3BhY2UuYyAoY2xlYXJfcHJvZ3JhbV9zcGFjZV9z b2xpYl9jYWNoZSk6IFJlbW92ZSB2YXJpYWJsZXMgaXgKKysJYW5kIGVsdC4gIFVzZSBmcmVlX2No YXJfcHRyX3ZlYy4KKysJKiBzb3VyY2UuYyAoYWRkX3BhdGgpOiBSZW1vdmUgdmFyaWFibGVzIGFy Z3YsIGFyZyBhbmQgYXJndl9pbmRleC4KKysJTmV3IHZhcmlhYmxlcyBkaXJfdmVjLCBiYWNrX3Rv LCBpeCBhbmQgbmFtZS4KKysJVXNlIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQuICBV c2UgZnJlZWFyZ3YgaW5zdGVhZCBvZgorKwltYWtlX2NsZWFudXBfZnJlZWFyZ3YuICBSZW1vdmUg dmFyaWFibGUgc2VwYXJhdG9yLiAgU2ltcGxpZnkgdGhlIGNvZGUKKysJbm8gbG9uZ2VyIGV4cGVj dGluZyBESVJOQU1FX1NFUEFSQVRPUi4KKysJKG9wZW5wKTogUmVtb3ZlIHZhcmlhYmxlIHAsIHAx IGFuZCBsZW4uICBOZXcgdmFyaWFibGVzIGRpcl92ZWMsCisrCWJhY2tfdG8sIGl4IGFuZCBkaXIu ICBVc2UgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjLiAgU2ltcGxpZnkgdGhlIGNvZGUKKysJbm8g bG9uZ2VyIGV4cGVjdGluZyBESVJOQU1FX1NFUEFSQVRPUi4KKysJKiBzeW1maWxlLmMgKGZpbmRf c2VwYXJhdGVfZGVidWdfZmlsZSk6IE5ldyB2YXJpYWJsZXMgZGVidWdkaXJfdmVjLAorKwliYWNr X3RvIGFuZCBpeC4gIFVzZSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMuICBSZW1vdmUgdmFyaWFi bGUKKysJZGVidWdkaXJfZW5kLgorKwkqIHV0aWxzLmMgKGZyZWVfY2hhcl9wdHJfdmVjLCBkb19m cmVlX2NoYXJfcHRyX3ZlYykKKysJKG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYywgZGly bmFtZXNfdG9fY2hhcl9wdHJfdmVjX2FwcGVuZCkKKysJKGRpcm5hbWVzX3RvX2NoYXJfcHRyX3Zl Yyk6IE5ldyBmdW5jdGlvbnMuCisrCisrMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwlDb2RlIGNsZWFudXAuCisgCSogc291cmNlLmMg KGFkZF9wYXRoKTogUmVtb3ZlIGFsd2F5cyB0cnVlIGNvbmRpdGlvbmFsICdwID09IDAnIGFuZAor IAl1bmluZGVudCBpdHMgY29kZSBibG9jay4KKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9nZGJfdmVjcy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9nZGJfdmVjcy5oCTIwMTItMDQtMTggMDA6NDA6MTIuMDY3MDg2MDE2ICswMjAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZ2RiX3ZlY3MuaAkyMDEyLTA0LTE4IDAwOjQwOjIzLjQ3 NDA1Njk5MyArMDIwMAorQEAgLTI1LDQgKzI1LDE2IEBACisgCisgREVGX1ZFQ19QIChjaGFyX3B0 cik7CisgCisrLyogRnJvbSB1dGlscy5jOiAqLworKworK2V4dGVybiB2b2lkIGZyZWVfY2hhcl9w dHJfdmVjIChWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVjKTsKKysKKytleHRlcm4gc3RydWN0 IGNsZWFudXAgKgorKyAgbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjIChWRUMgKGNoYXJf cHRyKSAqY2hhcl9wdHJfdmVjKTsKKysKKytleHRlcm4gdm9pZCBkaXJuYW1lc190b19jaGFyX3B0 cl92ZWNfYXBwZW5kIChWRUMgKGNoYXJfcHRyKSAqKnZlY3AsCisrCQkJCQkgICAgIGNvbnN0IGNo YXIgKmRpcm5hbWVzKTsKKysKKytleHRlcm4gVkVDIChjaGFyX3B0cikgKmRpcm5hbWVzX3RvX2No YXJfcHRyX3ZlYyAoY29uc3QgY2hhciAqZGlybmFtZXMpOworKworICNlbmRpZiAvKiBHREJfVkVD U19IICovCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdXRpbHMuYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdXRpbHMuYwkyMDEyLTA0LTE4IDAw OjQwOjEyLjA2ODA4NjAxMyArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3V0aWxz LmMJMjAxMi0wNC0xOCAwMDo0MDo0OS44NjI5ODk4NTUgKzAyMDAKK0BAIC0yOSw2ICsyOSw3IEBA CisgI2lmZGVmIEhBVkVfU1lTX1JFU09VUkNFX0gKKyAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+ CisgI2VuZGlmIC8qIEhBVkVfU1lTX1JFU09VUkNFX0ggKi8KKysjaW5jbHVkZSAiZ2RiX3ZlY3Mu aCIKKyAKKyAjaWZkZWYgVFVJCisgI2luY2x1ZGUgInR1aS90dWkuaCIJCS8qIEZvciB0dWlfZ2V0 X2NvbW1hbmRfZGltZW5zaW9uLiAgICovCitAQCAtMzgzNSw2ICszODM2LDk1IEBAIHByb2R1Y2Vy X2lzX2djY19nZV80IChjb25zdCBjaGFyICpwcm9kdWMKKyAgIHJldHVybiBtaW5vcjsKKyB9Cisg CisrLyogQ2FsbCB4ZnJlZSBmb3IgZWFjaCBlbGVtZW50IG9mIENIQVJfUFRSX1ZFQyBhbmQgZmlu YWwgVkVDX2ZyZWUgZm9yCisrICAgQ0hBUl9QVFJfVkVDIGl0c2VsZi4KKysKKysgICBZb3UgbXVz dCBub3QgbW9kaWZ5IENIQVJfUFRSX1ZFQyBhZnRlciBpdCBnb3QgcmVnaXN0ZXJlZCB3aXRoIHRo aXMgZnVuY3Rpb24KKysgICBieSBtYWtlX2NsZWFudXAgYXMgdGhlIENIQVJfUFRSX1ZFQyBiYXNl IGFkZHJlc3MgbWF5IGNoYW5nZSBvbiBpdHMgdXBkYXRlcy4KKysgICBDb250cmFyeSB0byBWRUNf ZnJlZSB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IChjYW5ub3QpIGNsZWFyIHRoZSBwb2ludGVyLiAg Ki8KKysKKyt2b2lkCisrZnJlZV9jaGFyX3B0cl92ZWMgKFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0 cl92ZWMpCisreworKyAgaW50IGl4OworKyAgY2hhciAqbmFtZTsKKysKKysgIGZvciAoaXggPSAw OyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGNoYXJfcHRyX3ZlYywgaXgsIG5hbWUpOyArK2l4KQor KyAgICB4ZnJlZSAobmFtZSk7CisrICBWRUNfZnJlZSAoY2hhcl9wdHIsIGNoYXJfcHRyX3ZlYyk7 CisrfQorKworKy8qIEhlbHBlciBmb3IgbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjLiAg Ki8KKysKKytzdGF0aWMgdm9pZAorK2RvX2ZyZWVfY2hhcl9wdHJfdmVjICh2b2lkICphcmcpCisr eworKyAgVkVDIChjaGFyX3B0cikgKmNoYXJfcHRyX3ZlYyA9IGFyZzsKKysKKysgIGZyZWVfY2hh cl9wdHJfdmVjIChjaGFyX3B0cl92ZWMpOworK30KKysKKysvKiBNYWtlIGNsZWFudXAgaGFuZGxl ciBjYWxsaW5nIHhmcmVlIGZvciBlYWNoIGVsZW1lbnQgb2YgQ0hBUl9QVFJfVkVDIGFuZAorKyAg IGZpbmFsIFZFQ19mcmVlIGZvciBDSEFSX1BUUl9WRUMgaXRzZWxmLgorKworKyAgIFlvdSBtdXN0 IG5vdCBtb2RpZnkgQ0hBUl9QVFJfVkVDIGFmdGVyIHRoaXMgY2xlYW51cCByZWdpc3RyYXRpb24g YXMgdGhlCisrICAgQ0hBUl9QVFJfVkVDIGJhc2UgYWRkcmVzcyBtYXkgY2hhbmdlIG9uIGl0cyB1 cGRhdGVzLiAgQ29udHJhcnkgdG8gVkVDX2ZyZWUKKysgICB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90 IChjYW5ub3QpIGNsZWFyIHRoZSBwb2ludGVyLiAgKi8KKysKKytzdHJ1Y3QgY2xlYW51cCAqCisr bWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjIChWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJf dmVjKQorK3sKKysgIHJldHVybiBtYWtlX2NsZWFudXAgKGRvX2ZyZWVfY2hhcl9wdHJfdmVjLCBj aGFyX3B0cl92ZWMpOworK30KKysKKysvKiBFeHRlbmRlZCB2ZXJzaW9uIG9mIGRpcm5hbWVzX3Rv X2NoYXJfcHRyX3ZlYyAtIGFkZGl0aW9uYWxseSBpZiAqVkVDUCBpcworKyAgIG5vbi1OVUxMIHRo ZSBuZXcgbGlzdCBlbGVtZW50cyBmcm9tIERJUk5BTUVTIGFyZSBhcHBlbmRlZCB0byB0aGUgZXhp c3RpbmcKKysgICAqVkVDUCBsaXN0IG9mIGVudHJpZXMuICAqVkVDUCBhZGRyZXNzIHdpbGwgYmUg dXBkYXRlZCBieSB0aGlzIGNhbGwuICAqLworKworK3ZvaWQKKytkaXJuYW1lc190b19jaGFyX3B0 cl92ZWNfYXBwZW5kIChWRUMgKGNoYXJfcHRyKSAqKnZlY3AsIGNvbnN0IGNoYXIgKmRpcm5hbWVz KQorK3sKKysgIGRvCisrICAgIHsKKysgICAgICBzaXplX3QgdGhpc19sZW47CisrICAgICAgY2hh ciAqbmV4dF9kaXIsICp0aGlzX2RpcjsKKysKKysgICAgICBuZXh0X2RpciA9IHN0cmNociAoZGly bmFtZXMsIERJUk5BTUVfU0VQQVJBVE9SKTsKKysgICAgICBpZiAobmV4dF9kaXIgPT0gTlVMTCkK KysJdGhpc19sZW4gPSBzdHJsZW4gKGRpcm5hbWVzKTsKKysgICAgICBlbHNlCisrCXsKKysJICB0 aGlzX2xlbiA9IG5leHRfZGlyIC0gZGlybmFtZXM7CisrCSAgbmV4dF9kaXIrKzsKKysJfQorKwor KyAgICAgIHRoaXNfZGlyID0geG1hbGxvYyAodGhpc19sZW4gKyAxKTsKKysgICAgICBtZW1jcHkg KHRoaXNfZGlyLCBkaXJuYW1lcywgdGhpc19sZW4pOworKyAgICAgIHRoaXNfZGlyW3RoaXNfbGVu XSA9ICdcMCc7CisrICAgICAgVkVDX3NhZmVfcHVzaCAoY2hhcl9wdHIsICp2ZWNwLCB0aGlzX2Rp cik7CisrCisrICAgICAgZGlybmFtZXMgPSBuZXh0X2RpcjsKKysgICAgfQorKyAgd2hpbGUgKGRp cm5hbWVzICE9IE5VTEwpOworK30KKysKKysvKiBTcGxpdCBESVJOQU1FUyBieSBESVJOQU1FX1NF UEFSQVRPUiBkZWxpbWl0ZXIgYW5kIHJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZQorKyAgIGVsZW1l bnRzIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLiAgRm9yIGVtcHR5IHN0cmluZyAoIiIpIERJUk5B TUVTIHJldHVybgorKyAgIGxpc3Qgb2Ygb25lIGVtcHR5IHN0cmluZyAoIiIpIGVsZW1lbnQuCisr ICAgCisrICAgWW91IG1heSBtb2RpZnkgdGhlIHJldHVybmVkIHN0cmluZ3MuCisrICAgUmVhZCBm cmVlX2NoYXJfcHRyX3ZlYyBmb3IgaXRzIGNsZWFudXAuICAqLworKworK1ZFQyAoY2hhcl9wdHIp ICoKKytkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGNvbnN0IGNoYXIgKmRpcm5hbWVzKQorK3sK KysgIFZFQyAoY2hhcl9wdHIpICpyZXR2YWwgPSBOVUxMOworKyAgCisrICBkaXJuYW1lc190b19j aGFyX3B0cl92ZWNfYXBwZW5kICgmcmV0dmFsLCBkaXJuYW1lcyk7CisrCisrICByZXR1cm4gcmV0 dmFsOworK30KKysKKyAjaWZkZWYgSEFWRV9XQUlUUElECisgCisgI2lmZGVmIFNJR0FMUk0KCmRp ZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDlvZjEyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA5b2Yx Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI0NGNmZi4uMDAwMDAwMAot LS0gYS9nZGItYXV0b2xvYWQtMDlvZjEyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE2OCAr MCwwIEBACi1bcGF0Y2gjNCAzLzhdIGF1dG8tbG9hZDogcmVzaHVmZmxlIGNvZGUKLWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAwMDg3Lmh0bWwKLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxMTIuaHRtbAotCi1JbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjI2OjI5LjA0OTEyMDIx MiArMDIwMAotQEAgLTAsMCArMSw0NzIgQEAKLSsvKiBHREIgcm91dGluZXMgZm9yIHN1cHBvcnRp bmcgYXV0by1sb2FkZWQgc2NyaXB0cy4KLSsKLSsgICBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RC LgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAg IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5j bHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJhdXRvLWxvYWQuaCIKLSsjaW5jbHVkZSAicHJvZ3Nw YWNlLmgiCi0rI2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIKLSsjaW5jbHVkZSAiZ2RiX3JlZ2V4 LmgiCi0rI2luY2x1ZGUgInVpLW91dC5oIgotKyNpbmNsdWRlICJmaWxlbmFtZXMuaCIKLSsjaW5j bHVkZSAiY29tbWFuZC5oIgotKyNpbmNsdWRlICJvYnNlcnZlci5oIgotKyNpbmNsdWRlICJvYmpm aWxlcy5oIgotKyNpbmNsdWRlICJweXRob24vcHl0aG9uLWludGVybmFsLmgiCi0rCi0rLyogSW50 ZXJuYWwtdXNlIGZsYWcgdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nLgotKyAgIFRoaXMg aXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIHB5dGhvbiBjb2RlIHdoZW4gYW4gb2JqZmls ZSBpcyBvcGVuZWQsCi0rICAgZmFsc2Ugb3RoZXJ3aXNlLgotKwotKyAgIEJvdGggYXV0b19sb2Fk X3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCBtdXN0IGJlIHRydWUgdG8gZW5hYmxl Ci0rICAgYXV0by1sb2FkaW5nLgotKwotKyAgIFRoaXMgZmxhZyBleGlzdHMgdG8gZmFjaWxpdGF0 ZSBkZWZlcnJpbmcgYXV0by1sb2FkaW5nIGR1cmluZyBzdGFydC11cAotKyAgIHVudGlsIGFmdGVy IC4vLmdkYmluaXQgaGFzIGJlZW4gcmVhZDsgaXQgbWF5IGF1Z21lbnQgdGhlIHNlYXJjaCBkaXJl Y3RvcmllcwotKyAgIHVzZWQgdG8gZmluZCB0aGUgc2NyaXB0cy4gICovCi0raW50IGdkYnB5X2ds b2JhbF9hdXRvX2xvYWQgPSAxOwotKwotKy8qIEZvciBzY3JpcHRzIHNwZWNpZmllZCBpbiAuZGVi dWdfZ2RiX3NjcmlwdHMsIG11bHRpcGxlIG9iamZpbGVzIG1heSBsb2FkCi0rICAgdGhlIHNhbWUg c2NyaXB0LiAgVGhlcmUncyBubyBwb2ludCBpbiBsb2FkaW5nIHRoZSBzY3JpcHQgbXVsdGlwbGUg dGltZXMsCi0rICAgYW5kIHRoZXJlIGNhbiBiZSBhIGxvdCBvZiBvYmpmaWxlcyBhbmQgc2NyaXB0 cywgc28gd2Uga2VlcCB0cmFjayBvZiBzY3JpcHRzCi0rICAgbG9hZGVkIHRoaXMgd2F5LiAgKi8K LSsKLStzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvCi0rewotKyAgLyogRm9yIGVhY2ggcHJv Z3JhbSBzcGFjZSB3ZSBrZWVwIHRyYWNrIG9mIGxvYWRlZCBzY3JpcHRzLiAgKi8KLSsgIHN0cnVj dCBodGFiICpsb2FkZWRfc2NyaXB0czsKLSsKLSsgIC8qIE5vbi16ZXJvIGlmIHdlJ3ZlIGlzc3Vl ZCB0aGUgd2FybmluZyBhYm91dCBhbiBhdXRvLWxvYWQgc2NyaXB0IG5vdCBiZWluZwotKyAgICAg Zm91bmQuICBXZSBvbmx5IHdhbnQgdG8gaXNzdWUgdGhpcyB3YXJuaW5nIG9uY2UuICAqLwotKyAg aW50IHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkOwotK307Ci0rCi0rLyogT2JqZWN0 cyBvZiB0aGlzIHR5cGUgYXJlIHN0b3JlZCBpbiB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoIHRhYmxl LiAgKi8KLSsKLStzdHJ1Y3QgbG9hZGVkX3NjcmlwdAotK3sKLSsgIC8qIE5hbWUgYXMgcHJvdmlk ZWQgYnkgdGhlIG9iamZpbGUuICAqLwotKyAgY29uc3QgY2hhciAqbmFtZTsKLSsgIC8qIEZ1bGwg cGF0aCBuYW1lIG9yIE5VTEwgaWYgc2NyaXB0IHdhc24ndCBmb3VuZCAob3Igd2FzIG90aGVyd2lz ZQotKyAgICAgaW5hY2Nlc3NpYmxlKS4gICovCi0rICBjb25zdCBjaGFyICpmdWxsX3BhdGg7Ci0r fTsKLSsKLSsvKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4gICovCi0rc3RhdGljIGNvbnN0 IHN0cnVjdCBwcm9ncmFtX3NwYWNlX2RhdGEgKmF1dG9fbG9hZF9wc3BhY2VfZGF0YTsKLSsKLStz dGF0aWMgdm9pZAotK2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwIChzdHJ1Y3QgcHJvZ3Jh bV9zcGFjZSAqcHNwYWNlLCB2b2lkICphcmcpCi0rewotKyAgc3RydWN0IGF1dG9fbG9hZF9wc3Bh Y2VfaW5mbyAqaW5mbzsKLSsKLSsgIGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwg YXV0b19sb2FkX3BzcGFjZV9kYXRhKTsKLSsgIGlmIChpbmZvICE9IE5VTEwpCi0rICAgIHsKLSsg ICAgICBpZiAoaW5mby0+bG9hZGVkX3NjcmlwdHMpCi0rCWh0YWJfZGVsZXRlIChpbmZvLT5sb2Fk ZWRfc2NyaXB0cyk7Ci0rICAgICAgeGZyZWUgKGluZm8pOwotKyAgICB9Ci0rfQotKwotKy8qIEdl dCB0aGUgY3VycmVudCBhdXRvbG9hZCBkYXRhLiAgSWYgbm9uZSBpcyBmb3VuZCB5ZXQsIGFkZCBp dCBub3cuICBUaGlzCi0rICAgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBvYmplY3Qu ICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKLStnZXRfYXV0 b19sb2FkX3BzcGFjZV9kYXRhIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQotK3sKLSsg IHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87Ci0rCi0rICBpbmZvID0gcHJvZ3Jh bV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7Ci0rICBpZiAoaW5m byA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgaW5mbyA9IFhaQUxMT0MgKHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8pOwotKyAgICAgIHNldF9wcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwg YXV0b19sb2FkX3BzcGFjZV9kYXRhLCBpbmZvKTsKLSsgICAgfQotKwotKyAgcmV0dXJuIGluZm87 Ci0rfQotKwotKy8qIEhhc2ggZnVuY3Rpb24gZm9yIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAq LwotKwotK3N0YXRpYyBoYXNodmFsX3QKLStoYXNoX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0 IHZvaWQgKmRhdGEpCi0rewotKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmUgPSBkYXRh OwotKwotKyAgcmV0dXJuIGh0YWJfaGFzaF9zdHJpbmcgKGUtPm5hbWUpOwotK30KLSsKLSsvKiBF cXVhbGl0eSBmdW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCi0rCi0rc3Rh dGljIGludAotK2VxX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZv aWQgKmIpCi0rewotKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmVhID0gYTsKLSsgIGNv bnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYiA9IGI7Ci0rCi0rICByZXR1cm4gc3RyY21wIChl YS0+bmFtZSwgZWItPm5hbWUpID09IDA7Ci0rfQotKwotKy8qIEluaXRpYWxpemUgdGhlIHRhYmxl IHRvIHRyYWNrIGxvYWRlZCBzY3JpcHRzLgotKyAgIEVhY2ggZW50cnkgaXMgaGFzaGVkIGJ5IHRo ZSBmdWxsIHBhdGggbmFtZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStpbml0X2xvYWRlZF9zY3Jp cHRzX2luZm8gKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQotK3sK LSsgIC8qIENob29zZSAzMSBhcyB0aGUgc3RhcnRpbmcgc2l6ZSBvZiB0aGUgaGFzaCB0YWJsZSwg c29tZXdoYXQgYXJiaXRyYXJpbHkuCi0rICAgICBTcGFjZSBmb3IgZWFjaCBlbnRyeSBpcyBvYnRh aW5lZCB3aXRoIG9uZSBtYWxsb2Mgc28gd2UgY2FuIGZyZWUgdGhlbQotKyAgICAgZWFzaWx5LiAg Ki8KLSsKLSsgIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyA9IGh0YWJfY3JlYXRlICgzMSwK LSsJCQkJCSAgICAgaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5LAotKwkJCQkJICAgICBlcV9sb2Fk ZWRfc2NyaXB0X2VudHJ5LAotKwkJCQkJICAgICB4ZnJlZSk7Ci0rCi0rICBwc3BhY2VfaW5mby0+ c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBGQUxTRTsKLSt9Ci0rCi0rLyogV3Jh cHBlciBvbiBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIHRvIGFsc28gYWxsb2NhdGUgdGhlIGhh c2ggdGFibGUKLSsgICBmb3IgbG9hZGluZyBzY3JpcHRzLiAgKi8KLSsKLStzdHJ1Y3QgYXV0b19s b2FkX3BzcGFjZV9pbmZvICoKLStnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5n IChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQotK3sKLSsgIHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKmluZm87Ci0rCi0rICBpbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0 YSAocHNwYWNlKTsKLSsgIGlmIChpbmZvLT5sb2FkZWRfc2NyaXB0cyA9PSBOVUxMKQotKyAgICBp bml0X2xvYWRlZF9zY3JpcHRzX2luZm8gKGluZm8pOwotKwotKyAgcmV0dXJuIGluZm87Ci0rfQot KwotKy8qIEFkZCBzY3JpcHQgTkFNRSB0byBoYXNoIHRhYmxlIG9mIFBTUEFDRV9JTkZPLgotKyAg IEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLgotKyAgIFRoZSBy ZXN1bHQgaXMgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxl LiAgKi8KLSsKLStpbnQKLSttYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj ZV9pbmZvICpwc3BhY2VfaW5mbywgY29uc3QgY2hhciAqbmFtZSwKLSsJCSAgY29uc3QgY2hhciAq ZnVsbF9wYXRoKQotK3sKLSsgIHN0cnVjdCBodGFiICpodGFiID0gcHNwYWNlX2luZm8tPmxvYWRl ZF9zY3JpcHRzOwotKyAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKipzbG90LCBlbnRyeTsKLSsgIGlu dCBpbl9oYXNoX3RhYmxlOwotKwotKyAgZW50cnkubmFtZSA9IG5hbWU7Ci0rICBlbnRyeS5mdWxs X3BhdGggPSBmdWxsX3BhdGg7Ci0rICBzbG90ID0gKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBo dGFiX2ZpbmRfc2xvdCAoaHRhYiwgJmVudHJ5LCBJTlNFUlQpOwotKyAgaW5faGFzaF90YWJsZSA9 ICpzbG90ICE9IE5VTEw7Ci0rCi0rICAvKiBJZiB0aGlzIHNjcmlwdCBpcyBub3QgaW4gdGhlIGhh c2ggdGFibGUsIGFkZCBpdC4gICovCi0rCi0rICBpZiAoISBpbl9oYXNoX3RhYmxlKQotKyAgICB7 Ci0rICAgICAgY2hhciAqcDsKLSsKLSsgICAgICAvKiBBbGxvY2F0ZSBhbGwgc3BhY2UgaW4gb25l IGNodW5rIHNvIGl0J3MgZWFzaWVyIHRvIGZyZWUuICAqLwotKyAgICAgICpzbG90ID0geG1hbGxv YyAoc2l6ZW9mICgqKnNsb3QpCi0rCQkgICAgICAgKyBzdHJsZW4gKG5hbWUpICsgMQotKwkJICAg ICAgICsgKGZ1bGxfcGF0aCAhPSBOVUxMID8gKHN0cmxlbiAoZnVsbF9wYXRoKSArIDEpIDogMCkp OwotKyAgICAgIHAgPSAoKGNoYXIqKSAqc2xvdCkgKyBzaXplb2YgKCoqc2xvdCk7Ci0rICAgICAg c3RyY3B5IChwLCBuYW1lKTsKLSsgICAgICAoKnNsb3QpLT5uYW1lID0gcDsKLSsgICAgICBpZiAo ZnVsbF9wYXRoICE9IE5VTEwpCi0rCXsKLSsJICBwICs9IHN0cmxlbiAocCkgKyAxOwotKwkgIHN0 cmNweSAocCwgZnVsbF9wYXRoKTsKLSsJICAoKnNsb3QpLT5mdWxsX3BhdGggPSBwOwotKwl9Ci0r ICAgICAgZWxzZQotKwkoKnNsb3QpLT5mdWxsX3BhdGggPSBOVUxMOwotKyAgICB9Ci0rCi0rICBy ZXR1cm4gaW5faGFzaF90YWJsZTsKLSt9Ci0rCi0rLyogQ2xlYXIgdGhlIHRhYmxlIG9mIGxvYWRl ZCBzZWN0aW9uIHNjcmlwdHMuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rY2xlYXJfc2VjdGlvbl9z Y3JpcHRzICh2b2lkKQotK3sKLSsgIHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UgPSBjdXJy ZW50X3Byb2dyYW1fc3BhY2U7Ci0rICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICppbmZv OwotKwotKyAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNw YWNlX2RhdGEpOwotKyAgaWYgKGluZm8gIT0gTlVMTCAmJiBpbmZvLT5sb2FkZWRfc2NyaXB0cyAh PSBOVUxMKQotKyAgICB7Ci0rICAgICAgaHRhYl9kZWxldGUgKGluZm8tPmxvYWRlZF9zY3JpcHRz KTsKLSsgICAgICBpbmZvLT5sb2FkZWRfc2NyaXB0cyA9IE5VTEw7Ci0rICAgICAgaW5mby0+c2Ny aXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBGQUxTRTsKLSsgICAgfQotK30KLSsKLSsv KiBMb29rIGZvciB0aGUgYXV0by1sb2FkIHNjcmlwdCBhc3NvY2lhdGVkIHdpdGggT0JKRklMRSBh bmQgbG9hZCBpdC4gICovCi0rCi0rdm9pZAotK2F1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKnN1ZmZpeCkKLSt7Ci0rICBjaGFyICpy ZWFsbmFtZTsKLSsgIGNoYXIgKmZpbGVuYW1lLCAqZGVidWdmaWxlOwotKyAgaW50IGxlbjsKLSsg IEZJTEUgKmlucHV0OwotKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOwotKwotKyAgcmVhbG5h bWUgPSBnZGJfcmVhbHBhdGggKG9iamZpbGUtPm5hbWUpOwotKyAgbGVuID0gc3RybGVuIChyZWFs bmFtZSk7Ci0rICBmaWxlbmFtZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAoc3VmZml4KSArIDEp OwotKyAgbWVtY3B5IChmaWxlbmFtZSwgcmVhbG5hbWUsIGxlbik7Ci0rICBzdHJjcHkgKGZpbGVu YW1lICsgbGVuLCBzdWZmaXgpOwotKwotKyAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVl LCBmaWxlbmFtZSk7Ci0rICBtYWtlX2NsZWFudXAgKHhmcmVlLCByZWFsbmFtZSk7Ci0rCi0rICBp bnB1dCA9IGZvcGVuIChmaWxlbmFtZSwgInIiKTsKLSsgIGRlYnVnZmlsZSA9IGZpbGVuYW1lOwot KwotKyAgaWYgKCFpbnB1dCAmJiBkZWJ1Z19maWxlX2RpcmVjdG9yeSkKLSsgICAgewotKyAgICAg IC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZGly ZWN0b3J5LiAgKi8KLSsgICAgICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGZpbGVuYW1l KQotKwkJCSAgICsgc3RybGVuIChkZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAxKTsKLSsgICAgICBz dHJjcHkgKGRlYnVnZmlsZSwgZGVidWdfZmlsZV9kaXJlY3RvcnkpOwotKyAgICAgIC8qIEZJTEVO QU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLwotKyAgICAg IHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7Ci0rCi0rICAgICAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgZGVidWdmaWxlKTsKLSsgICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7 Ci0rICAgIH0KLSsKLSsgIGlmICghaW5wdXQgJiYgZ2RiX2RhdGFkaXIpCi0rICAgIHsKLSsgICAg ICAvKiBBbHNvIHRyeSB0aGUgc2FtZSBmaWxlIGluIGEgc3ViZGlyZWN0b3J5IG9mIGdkYidzIGRh dGEKLSsJIGRpcmVjdG9yeS4gICovCi0rICAgICAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVu IChnZGJfZGF0YWRpcikgKyBzdHJsZW4gKGZpbGVuYW1lKQotKwkJCSAgICsgc3RybGVuICgiL2F1 dG8tbG9hZCIpICsgMSk7Ci0rICAgICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGdkYl9kYXRhZGlyKTsK LSsgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgIi9hdXRvLWxvYWQiKTsKLSsgICAgICAvKiBGSUxF TkFNRSBpcyBhYnNvbHV0ZSwgc28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJlLiAgKi8KLSsgICAg ICBzdHJjYXQgKGRlYnVnZmlsZSwgZmlsZW5hbWUpOwotKwotKyAgICAgIG1ha2VfY2xlYW51cCAo eGZyZWUsIGRlYnVnZmlsZSk7Ci0rICAgICAgaW5wdXQgPSBmb3BlbiAoZGVidWdmaWxlLCAiciIp OwotKyAgICB9Ci0rCi0rICBpZiAoaW5wdXQpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgYXV0b19s b2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLSsKLSsgICAgICBtYWtlX2NsZWFudXBfZmNs b3NlIChpbnB1dCk7Ci0rCi0rICAgICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRh YmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIKLSsJIGNhbiBwcmludCBpdC4gICov Ci0rICAgICAgcHNwYWNlX2luZm8gPQotKwlnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9s b2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwotKyAgICAgIG1heWJlX2FkZF9zY3JpcHQg KHBzcGFjZV9pbmZvLCBkZWJ1Z2ZpbGUsIGRlYnVnZmlsZSk7Ci0rCi0rICAgICAgLyogVG8gcHJl c2VydmUgZXhpc3RpbmcgYmVoYXZpb3VyIHdlIGRvbid0IGNoZWNrIGZvciB3aGV0aGVyIHRoZQot Kwkgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSB0YWJsZSwgYW5kIGFsd2F5cyBsb2FkIGl0Lgot KwkgSXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCB3ZSdkIGV2ZXIgbG9hZCBpdCB0d2ljZSwKLSsJ IGFuZCB0aGVzZSBzY3JpcHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVyIG11 bHRpcGxlCi0rCSBsb2FkcyBhbnl3YXkuICAqLwotKyAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0 X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKLSsgICAgfQotKwotKyAg ZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKLSt9Ci0rCi0rLyogVGhpcyBpcyBhIG5ld19vYmpmaWxl IG9ic2VydmVyIGNhbGxiYWNrIHRvIGF1dG8tbG9hZCBzY3JpcHRzLgotKwotKyAgIFR3byBmbGF2 b3JzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgYXJlIHN1cHBvcnRlZC4KLSsgICAxKSBiYXNlZCBv biB0aGUgcGF0aCB0byB0aGUgb2JqZmlsZQotKyAgIDIpIGZyb20gLmRlYnVnX2dkYl9zY3JpcHRz IHNlY3Rpb24gICovCi0rCi0rc3RhdGljIHZvaWQKLSthdXRvX2xvYWRfbmV3X29iamZpbGUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK3sKLSsgIGlmICghb2JqZmlsZSkKLSsgICAgewotKyAg ICAgIC8qIE9CSkZJTEUgaXMgTlVMTCB3aGVuIGxvYWRpbmcgYSBuZXcgIm1haW4iIHN5bWJvbC1m aWxlLiAgKi8KLSsgICAgICBjbGVhcl9zZWN0aW9uX3NjcmlwdHMgKCk7Ci0rICAgICAgcmV0dXJu OwotKyAgICB9Ci0rCi0rICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7 Ci0rfQotKwotKy8qIENvbGxlY3Qgc2NyaXB0cyB0byBiZSBwcmludGVkIGluIGEgdmVjLiAgKi8K LSsKLSt0eXBlZGVmIHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpsb2FkZWRfc2NyaXB0X3B0cjsKLStE RUZfVkVDX1AgKGxvYWRlZF9zY3JpcHRfcHRyKTsKLSsKLSsvKiBUcmF2ZXJzYWwgZnVuY3Rpb24g Zm9yIGh0YWJfdHJhdmVyc2UuCi0rICAgQ29sbGVjdCB0aGUgZW50cnkgaWYgaXQgbWF0Y2hlcyB0 aGUgcmVnZXhwLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rY29sbGVjdF9tYXRjaGluZ19zY3JpcHRz ICh2b2lkICoqc2xvdCwgdm9pZCAqaW5mbykKLSt7Ci0rICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAq c2NyaXB0ID0gKnNsb3Q7Ci0rICBWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqKnNjcmlwdHNfcHRy ID0gaW5mbzsKLSsKLSsgIGlmIChyZV9leGVjIChzY3JpcHQtPm5hbWUpKQotKyAgICBWRUNfc2Fm ZV9wdXNoIChsb2FkZWRfc2NyaXB0X3B0ciwgKnNjcmlwdHNfcHRyLCBzY3JpcHQpOwotKwotKyAg cmV0dXJuIDE7Ci0rfQotKwotKy8qIFByaW50IFNDUklQVC4gICovCi0rCi0rc3RhdGljIHZvaWQK LStwcmludF9zY3JpcHQgKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQpCi0rewotKyAgc3Ry dWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OwotKyAgc3RydWN0IGNsZWFudXAgKmNo YWluOwotKwotKyAgY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAo dWlvdXQsIE5VTEwpOwotKwotKyAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQi LCBzY3JpcHQtPmZ1bGxfcGF0aCA/ICJZZXMiIDogIk1pc3NpbmciKTsKLSsgIHVpX291dF9maWVs ZF9zdHJpbmcgKHVpb3V0LCAic2NyaXB0Iiwgc2NyaXB0LT5uYW1lKTsKLSsgIHVpX291dF90ZXh0 ICh1aW91dCwgIlxuIik7Ci0rCi0rICAvKiBJZiB0aGUgbmFtZSBpc24ndCB0aGUgZnVsbCBwYXRo LCBwcmludCBpdCB0b28uICAqLwotKyAgaWYgKHNjcmlwdC0+ZnVsbF9wYXRoICE9IE5VTEwKLSsg ICAgICAmJiBzdHJjbXAgKHNjcmlwdC0+bmFtZSwgc2NyaXB0LT5mdWxsX3BhdGgpICE9IDApCi0r ICAgIHsKLSsgICAgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcdGZ1bGwgbmFtZTogIik7Ci0rICAg ICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJmdWxsX3BhdGgiLCBzY3JpcHQtPmZ1bGxf cGF0aCk7Ci0rICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLSsgICAgfQotKwotKyAg ZG9fY2xlYW51cHMgKGNoYWluKTsKLSt9Ci0rCi0rLyogSGVscGVyIGZvciBpbmZvX2F1dG9fbG9h ZF9zY3JpcHRzIHRvIHNvcnQgdGhlIHNjcmlwdHMgYnkgbmFtZS4gICovCi0rCi0rc3RhdGljIGlu dAotK3NvcnRfc2NyaXB0c19ieV9uYW1lIChjb25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnAp Ci0rewotKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmEgPSAqKGNvbnN0IHN0cnVjdCBs b2FkZWRfc2NyaXB0ICoqKSBhcDsKLSsgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpiID0g Kihjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgYnA7Ci0rCi0rICByZXR1cm4gRklMRU5B TUVfQ01QIChhLT5uYW1lLCBiLT5uYW1lKTsKLSt9Ci0rCi0rLyogImluZm8gYXV0by1sb2FkLXNj cmlwdHMiIGNvbW1hbmQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0raW5mb19hdXRvX2xvYWRfc2Ny aXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5KQotK3sKLSsgIHN0cnVjdCB1aV9vdXQg KnVpb3V0ID0gY3VycmVudF91aW91dDsKLSsgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8g KnBzcGFjZV9pbmZvOwotKyAgc3RydWN0IGNsZWFudXAgKnNjcmlwdF9jaGFpbjsKLSsgIFZFQyAo bG9hZGVkX3NjcmlwdF9wdHIpICpzY3JpcHRzOwotKyAgaW50IG5yX3NjcmlwdHM7Ci0rCi0rICBk b250X3JlcGVhdCAoKTsKLSsKLSsgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2Vf ZGF0YSAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLSsKLSsgIGlmIChwYXR0ZXJuICYmICpwYXR0 ZXJuKQotKyAgICB7Ci0rICAgICAgY2hhciAqcmVfZXJyID0gcmVfY29tcCAocGF0dGVybik7Ci0r Ci0rICAgICAgaWYgKHJlX2VycikKLSsJZXJyb3IgKF8oIkludmFsaWQgcmVnZXhwOiAlcyIpLCBy ZV9lcnIpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICByZV9jb21wICgiIik7Ci0r ICAgIH0KLSsKLSsgIC8qIFdlIG5lZWQgdG8ga25vdyB0aGUgbnVtYmVyIG9mIHJvd3MgYmVmb3Jl IHdlIGJ1aWxkIHRoZSB0YWJsZS4KLSsgICAgIFBsdXMgd2Ugd2FudCB0byBzb3J0IHRoZSBzY3Jp cHRzIGJ5IG5hbWUuCi0rICAgICBTbyBmaXJzdCB0cmF2ZXJzZSB0aGUgaGFzaCB0YWJsZSBjb2xs ZWN0aW5nIHRoZSBtYXRjaGluZyBzY3JpcHRzLiAgKi8KLSsKLSsgIHNjcmlwdHMgPSBWRUNfYWxs b2MgKGxvYWRlZF9zY3JpcHRfcHRyLCAxMCk7Ci0rICBzY3JpcHRfY2hhaW4gPSBtYWtlX2NsZWFu dXAgKFZFQ19jbGVhbnVwIChsb2FkZWRfc2NyaXB0X3B0ciksICZzY3JpcHRzKTsKLSsKLSsgIGlm IChwc3BhY2VfaW5mbyAhPSBOVUxMICYmIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBO VUxMKQotKyAgICB7Ci0rICAgICAgaW1tZWRpYXRlX3F1aXQrKzsKLSsgICAgICAvKiBQYXNzIGEg cG9pbnRlciB0byBzY3JpcHRzIGFzIFZFQ19zYWZlX3B1c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAq LwotKyAgICAgIGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2Ny aXB0cywKLSsJCQkgICAgICBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMsICZzY3JpcHRzKTsKLSsg ICAgICBpbW1lZGlhdGVfcXVpdC0tOwotKyAgICB9Ci0rCi0rICBucl9zY3JpcHRzID0gVkVDX2xl bmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpOwotKyAgbWFrZV9jbGVhbnVwX3VpX291 dF90YWJsZV9iZWdpbl9lbmQgKHVpb3V0LCAyLCBucl9zY3JpcHRzLAotKwkJCQkgICAgICAgIkF1 dG9Mb2FkZWRTY3JpcHRzVGFibGUiKTsKLSsKLSsgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0 LCA3LCB1aV9sZWZ0LCAibG9hZGVkIiwgIkxvYWRlZCIpOwotKyAgdWlfb3V0X3RhYmxlX2hlYWRl ciAodWlvdXQsIDcwLCB1aV9sZWZ0LCAic2NyaXB0IiwgIlNjcmlwdCIpOwotKyAgdWlfb3V0X3Rh YmxlX2JvZHkgKHVpb3V0KTsKLSsKLSsgIGlmIChucl9zY3JpcHRzID4gMCkKLSsgICAgewotKyAg ICAgIGludCBpOwotKyAgICAgIGxvYWRlZF9zY3JpcHRfcHRyIHNjcmlwdDsKLSsKLSsgICAgICBx c29ydCAoVkVDX2FkZHJlc3MgKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKSwKLSsJICAgICBW RUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyksCi0rCSAgICAgc2l6ZW9mIChs b2FkZWRfc2NyaXB0X3B0ciksIHNvcnRfc2NyaXB0c19ieV9uYW1lKTsKLSsgICAgICBmb3IgKGkg PSAwOyBWRUNfaXRlcmF0ZSAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMsIGksIHNjcmlwdCk7 ICsraSkKLSsJcHJpbnRfc2NyaXB0IChzY3JpcHQpOwotKyAgICB9Ci0rCi0rICBkb19jbGVhbnVw cyAoc2NyaXB0X2NoYWluKTsKLSsKLSsgIGlmIChucl9zY3JpcHRzID09IDApCi0rICAgIHsKLSsg ICAgICBpZiAocGF0dGVybiAmJiAqcGF0dGVybikKLSsJdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAw LCAiTm8gYXV0by1sb2FkIHNjcmlwdHMgbWF0Y2hpbmcgJXMuXG4iLAotKwkJCXBhdHRlcm4pOwot KyAgICAgIGVsc2UKLSsJdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNj cmlwdHMuXG4iKTsKLSsgICAgfQotK30KLSsKLSsvKiBSZXR1cm4gbm9uLXplcm8gaWYgU0NSSVBU X05PVF9GT1VORF9XQVJOSU5HX1BSSU5URUQgb2YgUFNQQUNFX0lORk8gd2FzIHVuc2V0Ci0rICAg YmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gIEFsd2F5cyBzZXQgU0NSSVBUX05PVF9GT1VO RF9XQVJOSU5HX1BSSU5URUQKLSsgICBvZiBQU1BBQ0VfSU5GTy4gICovCi0rCi0raW50Ci0rc2Ny aXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZv ICpwc3BhY2VfaW5mbykKLSt7Ci0rICBpbnQgcmV0dmFsID0gIXBzcGFjZV9pbmZvLT5zY3JpcHRf bm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZDsKLSsKLSsgIHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90 X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IDE7Ci0rCi0rICByZXR1cm4gcmV0dmFsOwotK30KLSsK LSt2b2lkIF9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCk7Ci0rCi0rdm9pZAotK19pbml0aWFs aXplX2F1dG9fbG9hZCAodm9pZCkKLSt7Ci0rICBhdXRvX2xvYWRfcHNwYWNlX2RhdGEKLSsgICAg PSByZWdpc3Rlcl9wcm9ncmFtX3NwYWNlX2RhdGFfd2l0aF9jbGVhbnVwIChhdXRvX2xvYWRfcHNw YWNlX2RhdGFfY2xlYW51cCk7Ci0rCi0rICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKGF1 dG9fbG9hZF9uZXdfb2JqZmlsZSk7Ci0rCi0rICBhZGRfaW5mbyAoImF1dG8tbG9hZC1zY3JpcHRz IiwKLSsJICAgIGluZm9fYXV0b19sb2FkX3NjcmlwdHMsCi0rCSAgICBfKCJQcmludCB0aGUgbGlz dCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBzY3JpcHRzLlxuXAotK1VzYWdlOiBpbmZvIGF1dG8t bG9hZC1zY3JpcHRzIFtSRUdFWFBdIikpOwotK30KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9hdXRvLWxvYWQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8t bG9hZC5oCTIwMTItMDQtMTggMDA6MjY6MjkuMDQ5MTIwMjEyICswMjAwCi1AQCAtMCwwICsxLDM2 IEBACi0rLyogR0RCIHJvdXRpbmVzIGZvciBzdXBwb3J0aW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMu Ci0rCi0rICAgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2lmbmRlZiBBVVRPX0xPQURfSAotKyNkZWZp bmUgQVVUT19MT0FEX0ggMQotKwotK3N0cnVjdCBwcm9ncmFtX3NwYWNlOwotKwotK2V4dGVybiBp bnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZDsKLSsKLStleHRlcm4gc3RydWN0IGF1dG9fbG9hZF9w c3BhY2VfaW5mbyAqCi0rICBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChz dHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsKLStleHRlcm4gaW50IG1heWJlX2FkZF9zY3Jp cHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLAotKwkJCSAgICAg Y29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoKTsKLStleHRlcm4gdm9pZCBh dXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCQkg ICAgICBjb25zdCBjaGFyICpzdWZmaXgpOwotK2V4dGVybiBpbnQKLSsgIHNjcmlwdF9ub3RfZm91 bmRfd2FybmluZ19wcmludCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2lu Zm8pOwotKwotKyNlbmRpZiAvKiBBVVRPX0xPQURfSCAqLwotSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL2dkYi1nZGIuZ2RiLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvZ2RiLWdkYi5nZGIuaW4JMjAxMi0wNC0xOCAwMDoyNjoyOS4wNDkxMjAyMTIgKzAyMDAKLUBA IC0wLDAgKzEsMzQgQEAKLStlY2hvIFNldHRpbmcgdXAgdGhlIGVudmlyb25tZW50IGZvciBkZWJ1 Z2dpbmcgZ2RiLlxuCi0rCi0rc2V0IGNvbXBsYWludHMgMQotKwotK2IgaW50ZXJuYWxfZXJyb3IK LSsKLStiIGluZm9fY29tbWFuZAotK2NvbW1hbmRzCi0rCXNpbGVudAotKwlyZXR1cm4KLStlbmQK LSsKLStkaXIgQHNyY2RpckAvLi4vbGliaWJlcnR5Ci0rZGlyIEBzcmNkaXJALy4uL2JmZAotK2Rp ciBAc3JjZGlyQAotK2RpciAuCi0rc2V0IHByb21wdCAodG9wLWdkYikgCi0rCi0rZGVmaW5lIHBk aWUKLSsgIGlmICRhcmdjID09IDEKLSsgICAgY2FsbCBkdW1wX2RpZSAoJGFyZzAsIDEpCi0rICBl bHNlCi0rICAgIGlmICRhcmdjID09IDIKLSsgICAgICBjYWxsIGR1bXBfZGllICgkYXJnMCwgJGFy ZzEpCi0rICAgIGVsc2UKLSsgICAgICBwcmludGYgIlN5bnRheDogcGRpZSBkaWUgW2RlcHRoXVxu IgotKyAgICBlbmQKLSsgIGVuZAotK2VuZAotKwotK2RvY3VtZW50IHBkaWUKLStQcmV0dHkgcHJp bnQgYSBEV0FSRiBESUUuCi0rU3ludGF4OiBwZGllIGRpZSBbZGVwdGhdCi0rZW5kCi1JbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL01ha2VmaWxlLmluCTIwMTItMDQtMTggMDA6MjY6MTQu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTWFrZWZpbGUuaW4J MjAxMi0wNC0xOCAwMDoyNjo1My40NTUwNTgwMzcgKzAyMDAKLUBAIC02ODAsNyArNjgwLDcgQEAg VEFSR0VUX0ZMQUdTX1RPX1BBU1MgPSBcCi0gIyBTRklMRVMgaXMgdXNlZCBpbiBidWlsZGluZyB0 aGUgZGlzdHJpYnV0aW9uIGFyY2hpdmUuCi0gCi0gU0ZJTEVTID0gYWRhLWV4cC55IGFkYS1sYW5n LmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxwcmludC5jIGFkYS10YXNrcy5jIFwKLS0JYWRkcm1h cC5jIFwKLSsJYWRkcm1hcC5jIGF1dG8tbG9hZC5jIFwKLSAJYXV4di5jIGF4LWdlbmVyYWwuYyBh eC1nZGIuYyBcCi0gCWJjYWNoZS5jIFwKLSAJYmZkLXRhcmdldC5jIFwKLUBAIC04MTksNyArODE5 LDcgQEAgc29saWItZGFyd2luLmggc29saWItaWE2NC1ocHV4Lmggc29saWItcwotIGdudWxpYi9l eHRyYS9hcmctbm9ubnVsbC5oIGdudWxpYi9leHRyYS9jKytkZWZzLmggZ251bGliL2V4dHJhL3dh cm4tb24tdXNlLmggXAotIGdudWxpYi9zdGRkZWYuaW4uaCBpbmxpbmUtZnJhbWUuaCBza2lwLmgg c3RhcC1wcm9iZS5oIFwKLSBjb21tb24vY29tbW9uLXV0aWxzLmggY29tbW9uL3htbC11dGlscy5o IGNvbW1vbi9idWZmZXIuaCBjb21tb24vcHRpZC5oIFwKLS1jb21tb24vbGludXgtb3NkYXRhLmgg Z2RiLWRsZmNuLmgKLStjb21tb24vbGludXgtb3NkYXRhLmggZ2RiLWRsZmNuLmggYXV0by1sb2Fk LmgKLSAKLSAjIEhlYWRlciBmaWxlcyB0aGF0IGFscmVhZHkgaGF2ZSBzcmNkaXIgaW4gdGhlbSwg b3Igd2hpY2ggYXJlIGluIG9iamRpci4KLSAKLUBAIC04NTEsNyArODUxLDcgQEAgQ09NTU9OX09C UyA9ICQoREVQRklMRVMpICQoQ09ORklHX09CUykgJAotIAl2ZXJzaW9uLm8gXAotIAlhbm5vdGF0 ZS5vIFwKLSAJYWRkcm1hcC5vIFwKLS0JYXV4di5vIFwKLSsJYXV0by1sb2FkLm8gYXV4di5vIFwK LSAJYmZkLXRhcmdldC5vIFwKLSAJYmxvY2tmcmFtZS5vIGJyZWFrcG9pbnQubyBmaW5kdmFyLm8g cmVnY2FjaGUubyBcCi0gCWNoYXJzZXQubyBjb250aW51YXRpb25zLm8gY29yZWxvdy5vIGRpc2Fz bS5vIGR1bW15LWZyYW1lLm8gZGZwLm8gXAotQEAgLTEyNTUsNyArMTI1NSw3IEBAIGRpc3RjbGVh bjogY2xlYW4KLSAJcm0gLWYgZ2Ric2VydmVyL2NvbmZpZy5zdGF0dXMgZ2Ric2VydmVyL2NvbmZp Zy5sb2cKLSAJcm0gLWYgZ2Ric2VydmVyL3RtLmggZ2Ric2VydmVyL3htLmggZ2Ric2VydmVyL25t LmgKLSAJcm0gLWYgZ2Ric2VydmVyL01ha2VmaWxlIGdkYnNlcnZlci9jb25maWcuY2FjaGUKLS0J cm0gLWYgbm0uaCBjb25maWcuc3RhdHVzIGNvbmZpZy5oIHN0YW1wLWggLmdkYmluaXQgaml0LXJl YWRlci5oCi0rCXJtIC1mIG5tLmggY29uZmlnLnN0YXR1cyBjb25maWcuaCBzdGFtcC1oIGdkYi1n ZGIuZ2RiIGppdC1yZWFkZXIuaAotIAlybSAtZiB5Lm91dHB1dCB5YWNjLmFjdHMgeWFjYy50bXAg eS50YWIuaAotIAlybSAtZiBjb25maWcubG9nIGNvbmZpZy5jYWNoZQotIAlybSAtZiBNYWtlZmls ZQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6 MjY6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmln dXJlCTIwMTItMDQtMTggMDA6MjY6MjkuMDUzMTIwMjAyICswMjAwCi1AQCAtMTY4MzksNyArMTY4 MzksNyBAQCBhY19jb25maWdfbGlua3M9IiRhY19jb25maWdfbGlua3MgJGFjX2NvCi0gJGFzX2Vj aG8gIiNkZWZpbmUgR0RCX0RFRkFVTFRfSE9TVF9DSEFSU0VUIFwiVVRGLThcIiIgPj5jb25mZGVm cy5oCi0gCi0gCi0tYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlIC5n ZGJpbml0OmdkYmluaXQuaW4gZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVj dG9yeS9NYWtlZmlsZSIKLSthY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZp bGUgZ2RiLWdkYi5nZGIgZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9y eS9NYWtlZmlsZSIKLSAKLSBhY19jb25maWdfY29tbWFuZHM9IiRhY19jb25maWdfY29tbWFuZHMg ZGVmYXVsdCIKLSAKLUBAIC0xNzYwNSw3ICsxNzYwNSw3IEBAIGRvCi0gICAgICJqaXQtcmVhZGVy LmgiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgaml0LXJlYWRlci5oOmppdC1yZWFkZXIu aW4iIDs7Ci0gICAgICIkYWNfY29uZmlnX2xpbmtzXzEiKSBDT05GSUdfTElOS1M9IiRDT05GSUdf TElOS1MgJGFjX2NvbmZpZ19saW5rc18xIiA7OwotICAgICAiTWFrZWZpbGUiKSBDT05GSUdfRklM RVM9IiRDT05GSUdfRklMRVMgTWFrZWZpbGUiIDs7Ci0tICAgICIuZ2RiaW5pdCIpIENPTkZJR19G SUxFUz0iJENPTkZJR19GSUxFUyAuZ2RiaW5pdDpnZGJpbml0LmluIiA7OwotKyAgICAiZ2RiLWdk Yi5nZGIiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ2RiLWdkYi5nZGIiIDs7Ci0gICAg ICJkb2MvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZG9jL01ha2VmaWxl IiA7OwotICAgICAiZ251bGliL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVT IGdudWxpYi9NYWtlZmlsZSIgOzsKLSAgICAgImRhdGEtZGlyZWN0b3J5L01ha2VmaWxlIikgQ09O RklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlIiA7OwotSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMTggMDA6 MjY6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmln dXJlLmFjCTIwMTItMDQtMTggMDA6MjY6MjkuMDUzMTIwMjAyICswMjAwCi1AQCAtMjQyMiw3ICsy NDIyLDcgQEAgZG5sICBBdCB0aGUgbW9tZW50LCB3ZSBqdXN0IGFzc3VtZSBpdCdzCi0gQUNfREVG SU5FKEdEQl9ERUZBVUxUX0hPU1RfQ0hBUlNFVCwgIlVURi04IiwKLSAgICAgICAgICAgW0RlZmlu ZSB0byBiZSBhIHN0cmluZyBuYW1pbmcgdGhlIGRlZmF1bHQgaG9zdCBjaGFyYWN0ZXIgc2V0Ll0p Ci0gCi0tQUNfT1VUUFVUKE1ha2VmaWxlIC5nZGJpbml0OmdkYmluaXQuaW4gZG9jL01ha2VmaWxl IGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSwKLStBQ19PVVRQVVQoTWFr ZWZpbGUgZ2RiLWdkYi5nZGIgZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVj dG9yeS9NYWtlZmlsZSwKLSBbCi0gY2FzZSB4JENPTkZJR19IRUFERVJTIGluCi0geGNvbmZpZy5o OmNvbmZpZy5pbikKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4 IDAwOjI2OjE0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21h aW4uYwkyMDEyLTA0LTE4IDAwOjI2OjI5LjA1NDEyMDE5OSArMDIwMAotQEAgLTQyLDYgKzQyLDcg QEAKLSAjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCi0gI2luY2x1ZGUgInB5dGhvbi9weXRob24u aCIKLSAjaW5jbHVkZSAib2JqZmlsZXMuaCIKLSsjaW5jbHVkZSAiYXV0by1sb2FkLmgiCi0gCi0g LyogVGhlIHNlbGVjdGVkIGludGVycHJldGVyLiAgVGhpcyB3aWxsIGJlIHVzZWQgYXMgYSBzZXQg Y29tbWFuZAotICAgIHZhcmlhYmxlLCBzbyBpdCBzaG91bGQgYWx3YXlzIGJlIG1hbGxvYydlZCAt IHNpbmNlCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9h ZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24v cHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAw MDoyNjoyOS4wNTQxMjAxOTkgKzAyMDAKLUBAIC0xOCwzMCArMTgsMTQgQEAKLSAgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCi0gCi0gI2luY2x1ZGUgImRlZnMuaCIKLS0jaW5jbHVkZSAiZmlsZW5hbWVzLmgi Ci0gI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLS0jaW5jbHVkZSAiZ2RiX3JlZ2V4LmgiCi0gI2lu Y2x1ZGUgInRvcC5oIgotICNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0tI2luY2x1ZGUgImNvbW1h bmQuaCIKLSAjaW5jbHVkZSAiZ2RiY21kLmgiCi0tI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0tI2lu Y2x1ZGUgInByb2dzcGFjZS5oIgotICNpbmNsdWRlICJvYmpmaWxlcy5oIgotICNpbmNsdWRlICJw eXRob24uaCIKLSAjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCi0tCi0tLyogSW50ZXJuYWwtdXNl IGZsYWcgdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nLgotLSAgIFRoaXMgaXMgdHJ1ZSBp ZiB3ZSBzaG91bGQgYXV0by1sb2FkIHB5dGhvbiBjb2RlIHdoZW4gYW4gb2JqZmlsZSBpcyBvcGVu ZWQsCi0tICAgZmFsc2Ugb3RoZXJ3aXNlLgotLQotLSAgIEJvdGggYXV0b19sb2FkX3NjcmlwdHMg JiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCBtdXN0IGJlIHRydWUgdG8gZW5hYmxlCi0tICAgYXV0 by1sb2FkaW5nLgotLQotLSAgIFRoaXMgZmxhZyBleGlzdHMgdG8gZmFjaWxpdGF0ZSBkZWZlcnJp bmcgYXV0by1sb2FkaW5nIGR1cmluZyBzdGFydC11cAotLSAgIHVudGlsIGFmdGVyIC4vLmdkYmlu aXQgaGFzIGJlZW4gcmVhZDsgaXQgbWF5IGF1Z21lbnQgdGhlIHNlYXJjaCBkaXJlY3Rvcmllcwot LSAgIHVzZWQgdG8gZmluZCB0aGUgc2NyaXB0cy4gICovCi0taW50IGdkYnB5X2dsb2JhbF9hdXRv X2xvYWQgPSAxOwotKyNpbmNsdWRlICJhdXRvLWxvYWQuaCIKLSAKLSAjaWZkZWYgSEFWRV9QWVRI T04KLSAKLUBAIC02MCwzMiArNDQsNiBAQCBpbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7 Ci0gICAgVGhlIGxlYWRpbmcgYnl0ZSBpcyB0byBhbGxvdyB1cHdhcmQgY29tcGF0aWJsZSBleHRl bnNpb25zLiAgKi8KLSAjZGVmaW5lIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FICIuZGVidWdfZ2Ri X3NjcmlwdHMiCi0gCi0tLyogRm9yIHNjcmlwdHMgc3BlY2lmaWVkIGluIC5kZWJ1Z19nZGJfc2Ny aXB0cywgbXVsdGlwbGUgb2JqZmlsZXMgbWF5IGxvYWQKLS0gICB0aGUgc2FtZSBzY3JpcHQuICBU aGVyZSdzIG5vIHBvaW50IGluIGxvYWRpbmcgdGhlIHNjcmlwdCBtdWx0aXBsZSB0aW1lcywKLS0g ICBhbmQgdGhlcmUgY2FuIGJlIGEgbG90IG9mIG9iamZpbGVzIGFuZCBzY3JpcHRzLCBzbyB3ZSBr ZWVwIHRyYWNrIG9mIHNjcmlwdHMKLS0gICBsb2FkZWQgdGhpcyB3YXkuICAqLwotLQotLXN0cnVj dCBhdXRvX2xvYWRfcHNwYWNlX2luZm8KLS17Ci0tICAvKiBGb3IgZWFjaCBwcm9ncmFtIHNwYWNl IHdlIGtlZXAgdHJhY2sgb2YgbG9hZGVkIHNjcmlwdHMuICAqLwotLSAgc3RydWN0IGh0YWIgKmxv YWRlZF9zY3JpcHRzOwotLQotLSAgLyogTm9uLXplcm8gaWYgd2UndmUgaXNzdWVkIHRoZSB3YXJu aW5nIGFib3V0IGFuIGF1dG8tbG9hZCBzY3JpcHQgbm90IGJlaW5nCi0tICAgICBmb3VuZC4gIFdl IG9ubHkgd2FudCB0byBpc3N1ZSB0aGlzIHdhcm5pbmcgb25jZS4gICovCi0tICBpbnQgc2NyaXB0 X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQ7Ci0tfTsKLS0KLS0vKiBPYmplY3RzIG9mIHRoaXMg dHlwZSBhcmUgc3RvcmVkIGluIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2ggdGFibGUuICAqLwotLQot LXN0cnVjdCBsb2FkZWRfc2NyaXB0Ci0tewotLSAgLyogTmFtZSBhcyBwcm92aWRlZCBieSB0aGUg b2JqZmlsZS4gICovCi0tICBjb25zdCBjaGFyICpuYW1lOwotLSAgLyogRnVsbCBwYXRoIG5hbWUg b3IgTlVMTCBpZiBzY3JpcHQgd2Fzbid0IGZvdW5kIChvciB3YXMgb3RoZXJ3aXNlCi0tICAgICBp bmFjY2Vzc2libGUpLiAgKi8KLS0gIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aDsKLS19OwotLQotIC8q IFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZzoKLSAg ICBzZXQgYXV0by1sb2FkLXNjcmlwdHMgb258b2ZmCi0gICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNo b3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRlZCBzY3JpcHRzIHdoZW4gYW4gb2JqZmlsZQotQEAgLTk3 LDEzNiArNTUsNiBAQCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdAotICAgIFRoZSBmYWN0IHRoYXQgaXQg bGl2ZXMgaGVyZSBpcyBqdXN0IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gICovCi0gc3RhdGlj IGludCBhdXRvX2xvYWRfc2NyaXB0cyA9IDE7Ci0gCi0tLyogUGVyLXByb2dyYW0tc3BhY2UgZGF0 YSBrZXkuICAqLwotLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZV9kYXRhICphdXRv X2xvYWRfcHNwYWNlX2RhdGE7Ci0tCi0tc3RhdGljIHZvaWQKLS1hdXRvX2xvYWRfcHNwYWNlX2Rh dGFfY2xlYW51cCAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwgdm9pZCAqYXJnKQotLXsK LS0gIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87Ci0tCi0tICBpbmZvID0gcHJv Z3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7Ci0tICBpZiAo aW5mbyAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgaWYgKGluZm8tPmxvYWRlZF9zY3JpcHRzKQot LQlodGFiX2RlbGV0ZSAoaW5mby0+bG9hZGVkX3NjcmlwdHMpOwotLSAgICAgIHhmcmVlIChpbmZv KTsKLS0gICAgfQotLX0KLS0KLS0vKiBHZXQgdGhlIGN1cnJlbnQgYXV0b2xvYWQgZGF0YS4gIElm IG5vbmUgaXMgZm91bmQgeWV0LCBhZGQgaXQgbm93LiAgVGhpcwotLSAgIGZ1bmN0aW9uIGFsd2F5 cyByZXR1cm5zIGEgdmFsaWQgb2JqZWN0LiAgKi8KLS0KLS1zdGF0aWMgc3RydWN0IGF1dG9fbG9h ZF9wc3BhY2VfaW5mbyAqCi0tZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAoc3RydWN0IHByb2dy YW1fc3BhY2UgKnBzcGFjZSkKLS17Ci0tICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpp bmZvOwotLQotLSAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRf cHNwYWNlX2RhdGEpOwotLSAgaWYgKGluZm8gPT0gTlVMTCkKLS0gICAgewotLSAgICAgIGluZm8g PSBYWkFMTE9DIChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvKTsKLS0gICAgICBzZXRfcHJv Z3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSwgaW5mbyk7Ci0t ICAgIH0KLS0KLS0gIHJldHVybiBpbmZvOwotLX0KLS0KLS0vKiBIYXNoIGZ1bmN0aW9uIGZvciB0 aGUgbG9hZGVkIHNjcmlwdCBoYXNoLiAgKi8KLS0KLS1zdGF0aWMgaGFzaHZhbF90Ci0taGFzaF9s b2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICpkYXRhKQotLXsKLS0gIGNvbnN0IHN0cnVj dCBsb2FkZWRfc2NyaXB0ICplID0gZGF0YTsKLS0KLS0gIHJldHVybiBodGFiX2hhc2hfc3RyaW5n IChlLT5uYW1lKTsKLS19Ci0tCi0tLyogRXF1YWxpdHkgZnVuY3Rpb24gZm9yIHRoZSBsb2FkZWQg c2NyaXB0IGhhc2guICAqLwotLQotLXN0YXRpYyBpbnQKLS1lcV9sb2FkZWRfc2NyaXB0X2VudHJ5 IChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQotLXsKLS0gIGNvbnN0IHN0cnVjdCBsb2Fk ZWRfc2NyaXB0ICplYSA9IGE7Ci0tICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZWIgPSBi OwotLQotLSAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUsIGViLT5uYW1lKSA9PSAwOwotLX0KLS0K LS0vKiBJbml0aWFsaXplIHRoZSB0YWJsZSB0byB0cmFjayBsb2FkZWQgc2NyaXB0cy4KLS0gICBF YWNoIGVudHJ5IGlzIGhhc2hlZCBieSB0aGUgZnVsbCBwYXRoIG5hbWUuICAqLwotLQotLXN0YXRp YyB2b2lkCi0taW5pdF9sb2FkZWRfc2NyaXB0c19pbmZvIChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj ZV9pbmZvICpwc3BhY2VfaW5mbykKLS17Ci0tICAvKiBDaG9vc2UgMzEgYXMgdGhlIHN0YXJ0aW5n IHNpemUgb2YgdGhlIGhhc2ggdGFibGUsIHNvbWV3aGF0IGFyYml0cmFyaWx5LgotLSAgICAgU3Bh Y2UgZm9yIGVhY2ggZW50cnkgaXMgb2J0YWluZWQgd2l0aCBvbmUgbWFsbG9jIHNvIHdlIGNhbiBm cmVlIHRoZW0KLS0gICAgIGVhc2lseS4gICovCi0tCi0tICBwc3BhY2VfaW5mby0+bG9hZGVkX3Nj cmlwdHMgPSBodGFiX2NyZWF0ZSAoMzEsCi0tCQkJCQkgICAgIGhhc2hfbG9hZGVkX3NjcmlwdF9l bnRyeSwKLS0JCQkJCSAgICAgZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSwKLS0JCQkJCSAgICAgeGZy ZWUpOwotLQotLSAgcHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVk ID0gRkFMU0U7Ci0tfQotLQotLS8qIFdyYXBwZXIgb24gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0 YSB0byBhbHNvIGFsbG9jYXRlIHRoZSBoYXNoIHRhYmxlCi0tICAgZm9yIGxvYWRpbmcgc2NyaXB0 cy4gICovCi0tCi0tc3RhdGljIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgotLWdldF9h dXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpw c3BhY2UpCi0tewotLSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKLS0KLS0g IGluZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChwc3BhY2UpOwotLSAgaWYgKGluZm8t PmxvYWRlZF9zY3JpcHRzID09IE5VTEwpCi0tICAgIGluaXRfbG9hZGVkX3NjcmlwdHNfaW5mbyAo aW5mbyk7Ci0tCi0tICByZXR1cm4gaW5mbzsKLS19Ci0tCi0tLyogQWRkIHNjcmlwdCBOQU1FIHRv IGhhc2ggdGFibGUgSFRBQi4KLS0gICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdh c24ndCBmb3VuZC4KLS0gICBUaGUgcmVzdWx0IGlzIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxy ZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCi0tCi0tc3RhdGljIGludAotLW1heWJlX2FkZF9z Y3JpcHQgKHN0cnVjdCBodGFiICpodGFiLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpm dWxsX3BhdGgpCi0tewotLSAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKipzbG90LCBlbnRyeTsKLS0g IGludCBpbl9oYXNoX3RhYmxlOwotLQotLSAgZW50cnkubmFtZSA9IG5hbWU7Ci0tICBlbnRyeS5m dWxsX3BhdGggPSBmdWxsX3BhdGg7Ci0tICBzbG90ID0gKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoq KSBodGFiX2ZpbmRfc2xvdCAoaHRhYiwgJmVudHJ5LCBJTlNFUlQpOwotLSAgaW5faGFzaF90YWJs ZSA9ICpzbG90ICE9IE5VTEw7Ci0tCi0tICAvKiBJZiB0aGlzIHNjcmlwdCBpcyBub3QgaW4gdGhl IGhhc2ggdGFibGUsIGFkZCBpdC4gICovCi0tCi0tICBpZiAoISBpbl9oYXNoX3RhYmxlKQotLSAg ICB7Ci0tICAgICAgY2hhciAqcDsKLS0KLS0gICAgICAvKiBBbGxvY2F0ZSBhbGwgc3BhY2UgaW4g b25lIGNodW5rIHNvIGl0J3MgZWFzaWVyIHRvIGZyZWUuICAqLwotLSAgICAgICpzbG90ID0geG1h bGxvYyAoc2l6ZW9mICgqKnNsb3QpCi0tCQkgICAgICAgKyBzdHJsZW4gKG5hbWUpICsgMQotLQkJ ICAgICAgICsgKGZ1bGxfcGF0aCAhPSBOVUxMID8gKHN0cmxlbiAoZnVsbF9wYXRoKSArIDEpIDog MCkpOwotLSAgICAgIHAgPSAoKGNoYXIqKSAqc2xvdCkgKyBzaXplb2YgKCoqc2xvdCk7Ci0tICAg ICAgc3RyY3B5IChwLCBuYW1lKTsKLS0gICAgICAoKnNsb3QpLT5uYW1lID0gcDsKLS0gICAgICBp ZiAoZnVsbF9wYXRoICE9IE5VTEwpCi0tCXsKLS0JICBwICs9IHN0cmxlbiAocCkgKyAxOwotLQkg IHN0cmNweSAocCwgZnVsbF9wYXRoKTsKLS0JICAoKnNsb3QpLT5mdWxsX3BhdGggPSBwOwotLQl9 Ci0tICAgICAgZWxzZQotLQkoKnNsb3QpLT5mdWxsX3BhdGggPSBOVUxMOwotLSAgICB9Ci0tCi0t ICByZXR1cm4gaW5faGFzaF90YWJsZTsKLS19Ci0tCi0gLyogTG9hZCBzY3JpcHRzIHNwZWNpZmll ZCBpbiBPQkpGSUxFLgotICAgIFNUQVJULEVORCBkZWxpbWl0IGEgYnVmZmVyIGNvbnRhaW5pbmcg YSBsaXN0IG9mIG51bC10ZXJtaW5hdGVkCi0gICAgZmlsZSBuYW1lcy4KLUBAIC0zMDEsMjAgKzEy OSwxNyBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsZSAqCi0gCi0gCSBJ V0JOIGlmIGNvbXBsYWludHMuYyB3ZXJlIG1vcmUgZ2VuZXJhbC1wdXJwb3NlLiAgKi8KLSAKLS0g ICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8tPmxvYWRl ZF9zY3JpcHRzLCBmaWxlLAotKyAgICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2NyaXB0 IChwc3BhY2VfaW5mbywgZmlsZSwKLSAJCQkJCW9wZW5lZCA/IGZ1bGxfcGF0aCA6IE5VTEwpOwot IAotICAgICAgIGlmICghIG9wZW5lZCkKLSAJewotIAkgIC8qIFdlIGRvbid0IHRocm93IGFuIGVy cm9yLCB0aGUgcHJvZ3JhbSBpcyBzdGlsbCBkZWJ1Z2dhYmxlLiAgKi8KLS0JICBpZiAoISBwc3Bh Y2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQpCi0tCSAgICB7Ci0tCSAg ICAgIHdhcm5pbmcgKF8oIk1pc3NpbmcgYXV0by1sb2FkIHNjcmlwdHMgcmVmZXJlbmNlZCBpbiBz ZWN0aW9uICVzXG5cCi0rCSAgaWYgKHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAocHNw YWNlX2luZm8pKQotKwkgICAgd2FybmluZyAoXygiTWlzc2luZyBhdXRvLWxvYWQgc2NyaXB0cyBy ZWZlcmVuY2VkIGluIHNlY3Rpb24gJXNcblwKLSBvZiBmaWxlICVzXG5cCi0gVXNlIGBpbmZvIGF1 dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdJyB0byBsaXN0IHRoZW0uIiksCi0tCQkgICAgICAgR0RC UFlfQVVUT19TRUNUSU9OX05BTUUsIG9iamZpbGUtPm5hbWUpOwotLQkgICAgICBwc3BhY2VfaW5m by0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBUUlVFOwotLQkgICAgfQotKwkJ ICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7Ci0gCX0KLSAgICAg ICBlbHNlCi0gCXsKLUBAIC0zNTYsMTE2ICsxODEsNiBAQCBhdXRvX2xvYWRfc2VjdGlvbl9zY3Jp cHRzIChzdHJ1Y3Qgb2JqZmlsCi0gICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwotIH0KLSAKLS0v KiBDbGVhciB0aGUgdGFibGUgb2YgbG9hZGVkIHNlY3Rpb24gc2NyaXB0cy4gICovCi0tCi0tc3Rh dGljIHZvaWQKLS1jbGVhcl9zZWN0aW9uX3NjcmlwdHMgKHZvaWQpCi0tewotLSAgc3RydWN0IHBy b2dyYW1fc3BhY2UgKnBzcGFjZSA9IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZTsKLS0gIHN0cnVjdCBh dXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87Ci0tCi0tICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9k YXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7Ci0tICBpZiAoaW5mbyAhPSBOVUxM ICYmIGluZm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICBodGFiX2Rl bGV0ZSAoaW5mby0+bG9hZGVkX3NjcmlwdHMpOwotLSAgICAgIGluZm8tPmxvYWRlZF9zY3JpcHRz ID0gTlVMTDsKLS0gICAgICBpbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9 IEZBTFNFOwotLSAgICB9Ci0tfQotLQotLS8qIExvb2sgZm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0 IGFzc29jaWF0ZWQgd2l0aCBPQkpGSUxFIGFuZCBsb2FkIGl0LiAgKi8KLS0KLS1zdGF0aWMgdm9p ZAotLWF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNv bnN0IGNoYXIgKnN1ZmZpeCkKLS17Ci0tICBjaGFyICpyZWFsbmFtZTsKLS0gIGNoYXIgKmZpbGVu YW1lLCAqZGVidWdmaWxlOwotLSAgaW50IGxlbjsKLS0gIEZJTEUgKmlucHV0OwotLSAgc3RydWN0 IGNsZWFudXAgKmNsZWFudXBzOwotLQotLSAgcmVhbG5hbWUgPSBnZGJfcmVhbHBhdGggKG9iamZp bGUtPm5hbWUpOwotLSAgbGVuID0gc3RybGVuIChyZWFsbmFtZSk7Ci0tICBmaWxlbmFtZSA9IHht YWxsb2MgKGxlbiArIHN0cmxlbiAoc3VmZml4KSArIDEpOwotLSAgbWVtY3B5IChmaWxlbmFtZSwg cmVhbG5hbWUsIGxlbik7Ci0tICBzdHJjcHkgKGZpbGVuYW1lICsgbGVuLCBzdWZmaXgpOwotLQot LSAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7Ci0tICBtYWtlX2Ns ZWFudXAgKHhmcmVlLCByZWFsbmFtZSk7Ci0tCi0tICBpbnB1dCA9IGZvcGVuIChmaWxlbmFtZSwg InIiKTsKLS0gIGRlYnVnZmlsZSA9IGZpbGVuYW1lOwotLQotLSAgaWYgKCFpbnB1dCAmJiBkZWJ1 Z19maWxlX2RpcmVjdG9yeSkKLS0gICAgewotLSAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZp bGUgaW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZGlyZWN0b3J5LiAgKi8KLS0gICAgICBkZWJ1 Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGZpbGVuYW1lKQotLQkJCSAgICsgc3RybGVuIChkZWJ1 Z19maWxlX2RpcmVjdG9yeSkgKyAxKTsKLS0gICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVidWdf ZmlsZV9kaXJlY3RvcnkpOwotLSAgICAgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBk b24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLwotLSAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxl bmFtZSk7Ci0tCi0tICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKLS0gICAg ICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7Ci0tICAgIH0KLS0KLS0gIGlmICghaW5w dXQgJiYgZ2RiX2RhdGFkaXIpCi0tICAgIHsKLS0gICAgICAvKiBBbHNvIHRyeSB0aGUgc2FtZSBm aWxlIGluIGEgc3ViZGlyZWN0b3J5IG9mIGdkYidzIGRhdGEKLS0JIGRpcmVjdG9yeS4gICovCi0t ICAgICAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVuIChnZGJfZGF0YWRpcikgKyBzdHJsZW4g KGZpbGVuYW1lKQotLQkJCSAgICsgc3RybGVuICgiL2F1dG8tbG9hZCIpICsgMSk7Ci0tICAgICAg c3RyY3B5IChkZWJ1Z2ZpbGUsIGdkYl9kYXRhZGlyKTsKLS0gICAgICBzdHJjYXQgKGRlYnVnZmls ZSwgIi9hdXRvLWxvYWQiKTsKLS0gICAgICAvKiBGSUxFTkFNRSBpcyBhYnNvbHV0ZSwgc28gd2Ug ZG9uJ3QgbmVlZCBhICIvIiBoZXJlLiAgKi8KLS0gICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgZmls ZW5hbWUpOwotLQotLSAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGRlYnVnZmlsZSk7Ci0tICAg ICAgaW5wdXQgPSBmb3BlbiAoZGVidWdmaWxlLCAiciIpOwotLSAgICB9Ci0tCi0tICBpZiAoaW5w dXQpCi0tICAgIHsKLS0gICAgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2Vf aW5mbzsKLS0KLS0gICAgICBtYWtlX2NsZWFudXBfZmNsb3NlIChpbnB1dCk7Ci0tCi0tICAgICAg LyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxv YWQtc2NyaXB0cyIKLS0JIGNhbiBwcmludCBpdC4gICovCi0tICAgICAgcHNwYWNlX2luZm8gPQot LQlnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1f c3BhY2UpOwotLSAgICAgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2Ny aXB0cywgZGVidWdmaWxlLCBkZWJ1Z2ZpbGUpOwotLQotLSAgICAgIC8qIFRvIHByZXNlcnZlIGV4 aXN0aW5nIGJlaGF2aW91ciB3ZSBkb24ndCBjaGVjayBmb3Igd2hldGhlciB0aGUKLS0JIHNjcmlw dCB3YXMgYWxyZWFkeSBpbiB0aGUgdGFibGUsIGFuZCBhbHdheXMgbG9hZCBpdC4KLS0JIEl0J3Mg aGlnaGx5IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxvYWQgaXQgdHdpY2UsCi0tCSBhbmQgdGhl c2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQot LQkgbG9hZHMgYW55d2F5LiAgKi8KLS0gICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2Jq ZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7Ci0tICAgIH0KLS0KLS0gIGRvX2NsZWFu dXBzIChjbGVhbnVwcyk7Ci0tfQotLQotLS8qIFRoaXMgaXMgYSBuZXdfb2JqZmlsZSBvYnNlcnZl ciBjYWxsYmFjayB0byBhdXRvLWxvYWQgc2NyaXB0cy4KLS0KLS0gICBUd28gZmxhdm9ycyBvZiBh dXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBzdXBwb3J0ZWQuCi0tICAgMSkgYmFzZWQgb24gdGhlIHBh dGggdG8gdGhlIG9iamZpbGUKLS0gICAyKSBmcm9tIC5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9u ICAqLwotLQotLXN0YXRpYyB2b2lkCi0tYXV0b19sb2FkX25ld19vYmpmaWxlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSkKLS17Ci0tICBpZiAoIW9iamZpbGUpCi0tICAgIHsKLS0gICAgICAvKiBP QkpGSUxFIGlzIE5VTEwgd2hlbiBsb2FkaW5nIGEgbmV3ICJtYWluIiBzeW1ib2wtZmlsZS4gICov Ci0tICAgICAgY2xlYXJfc2VjdGlvbl9zY3JpcHRzICgpOwotLSAgICAgIHJldHVybjsKLS0gICAg fQotLQotLSAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKG9iamZpbGUpOwotLX0KLS0K LSAvKiBMb2FkIGFueSBhdXRvLWxvYWRlZCBzY3JpcHRzIGZvciBPQkpGSUxFLiAgKi8KLSAKLSB2 b2lkCi1AQCAtNDc4LDE0NiArMTkzLDkgQEAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUg KHN0cnVjdCBvYgotICAgICB9Ci0gfQotIAwKLS0vKiBDb2xsZWN0IHNjcmlwdHMgdG8gYmUgcHJp bnRlZCBpbiBhIHZlYy4gICovCi0tCi0tdHlwZWRlZiBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqbG9h ZGVkX3NjcmlwdF9wdHI7Ci0tREVGX1ZFQ19QIChsb2FkZWRfc2NyaXB0X3B0cik7Ci0tCi0tLyog VHJhdmVyc2FsIGZ1bmN0aW9uIGZvciBodGFiX3RyYXZlcnNlLgotLSAgIENvbGxlY3QgdGhlIGVu dHJ5IGlmIGl0IG1hdGNoZXMgdGhlIHJlZ2V4cC4gICovCi0tCi0tc3RhdGljIGludAotLWNvbGxl Y3RfbWF0Y2hpbmdfc2NyaXB0cyAodm9pZCAqKnNsb3QsIHZvaWQgKmluZm8pCi0tewotLSAgc3Ry dWN0IGxvYWRlZF9zY3JpcHQgKnNjcmlwdCA9ICpzbG90OwotLSAgVkVDIChsb2FkZWRfc2NyaXB0 X3B0cikgKipzY3JpcHRzX3B0ciA9IGluZm87Ci0tCi0tICBpZiAocmVfZXhlYyAoc2NyaXB0LT5u YW1lKSkKLS0gICAgVkVDX3NhZmVfcHVzaCAobG9hZGVkX3NjcmlwdF9wdHIsICpzY3JpcHRzX3B0 ciwgc2NyaXB0KTsKLS0KLS0gIHJldHVybiAxOwotLX0KLS0KLS0vKiBQcmludCBTQ1JJUFQuICAq LwotLQotLXN0YXRpYyB2b2lkCi0tcHJpbnRfc2NyaXB0IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAq c2NyaXB0KQotLXsKLS0gIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKLS0g IHN0cnVjdCBjbGVhbnVwICpjaGFpbjsKLS0KLS0gIGNoYWluID0gbWFrZV9jbGVhbnVwX3VpX291 dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsKLS0KLS0gIHVpX291dF9maWVsZF9zdHJp bmcgKHVpb3V0LCAibG9hZGVkIiwgc2NyaXB0LT5mdWxsX3BhdGggPyAiWWVzIiA6ICJNaXNzaW5n Iik7Ci0tICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgInNjcmlwdCIsIHNjcmlwdC0+bmFt ZSk7Ci0tICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOwotLQotLSAgLyogSWYgdGhlIG5hbWUg aXNuJ3QgdGhlIGZ1bGwgcGF0aCwgcHJpbnQgaXQgdG9vLiAgKi8KLS0gIGlmIChzY3JpcHQtPmZ1 bGxfcGF0aCAhPSBOVUxMCi0tICAgICAgJiYgc3RyY21wIChzY3JpcHQtPm5hbWUsIHNjcmlwdC0+ ZnVsbF9wYXRoKSAhPSAwKQotLSAgICB7Ci0tICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXHRm dWxsIG5hbWU6ICIpOwotLSAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAiZnVsbF9w YXRoIiwgc2NyaXB0LT5mdWxsX3BhdGgpOwotLSAgICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxu Iik7Ci0tICAgIH0KLS0KLS0gIGRvX2NsZWFudXBzIChjaGFpbik7Ci0tfQotLQotLS8qIEhlbHBl ciBmb3IgaW5mb19hdXRvX2xvYWRfc2NyaXB0cyB0byBzb3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUu ICAqLwotLQotLXN0YXRpYyBpbnQKLS1zb3J0X3NjcmlwdHNfYnlfbmFtZSAoY29uc3Qgdm9pZCAq YXAsIGNvbnN0IHZvaWQgKmJwKQotLXsKLS0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICph ID0gKihjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgYXA7Ci0tICBjb25zdCBzdHJ1Y3Qg bG9hZGVkX3NjcmlwdCAqYiA9ICooY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKiopIGJwOwot LQotLSAgcmV0dXJuIEZJTEVOQU1FX0NNUCAoYS0+bmFtZSwgYi0+bmFtZSk7Ci0tfQotLQotLS8q ICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiBjb21tYW5kLiAgKi8KLS0KLS1zdGF0aWMgdm9pZAot LWluZm9fYXV0b19sb2FkX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSkKLS17 Ci0tICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7Ci0tICBzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLS0gIHN0cnVjdCBjbGVhbnVwICpzY3Jp cHRfY2hhaW47Ci0tICBWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqc2NyaXB0czsKLS0gIGludCBu cl9zY3JpcHRzOwotLQotLSAgZG9udF9yZXBlYXQgKCk7Ci0tCi0tICBwc3BhY2VfaW5mbyA9IGdl dF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0tCi0tICBp ZiAocGF0dGVybiAmJiAqcGF0dGVybikKLS0gICAgewotLSAgICAgIGNoYXIgKnJlX2VyciA9IHJl X2NvbXAgKHBhdHRlcm4pOwotLQotLSAgICAgIGlmIChyZV9lcnIpCi0tCWVycm9yIChfKCJJbnZh bGlkIHJlZ2V4cDogJXMiKSwgcmVfZXJyKTsKLS0gICAgfQotLSAgZWxzZQotLSAgICB7Ci0tICAg ICAgcmVfY29tcCAoIiIpOwotLSAgICB9Ci0tCi0tICAvKiBXZSBuZWVkIHRvIGtub3cgdGhlIG51 bWJlciBvZiByb3dzIGJlZm9yZSB3ZSBidWlsZCB0aGUgdGFibGUuCi0tICAgICBQbHVzIHdlIHdh bnQgdG8gc29ydCB0aGUgc2NyaXB0cyBieSBuYW1lLgotLSAgICAgU28gZmlyc3QgdHJhdmVyc2Ug dGhlIGhhc2ggdGFibGUgY29sbGVjdGluZyB0aGUgbWF0Y2hpbmcgc2NyaXB0cy4gICovCi0tCi0t ICBzY3JpcHRzID0gVkVDX2FsbG9jIChsb2FkZWRfc2NyaXB0X3B0ciwgMTApOwotLSAgc2NyaXB0 X2NoYWluID0gbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAobG9hZGVkX3NjcmlwdF9wdHIpLCAm c2NyaXB0cyk7Ci0tCi0tICBpZiAocHNwYWNlX2luZm8gIT0gTlVMTCAmJiBwc3BhY2VfaW5mby0+ bG9hZGVkX3NjcmlwdHMgIT0gTlVMTCkKLS0gICAgewotLSAgICAgIGltbWVkaWF0ZV9xdWl0Kys7 Ci0tICAgICAgLyogUGFzcyBhIHBvaW50ZXIgdG8gc2NyaXB0cyBhcyBWRUNfc2FmZV9wdXNoIGNh biByZWFsbG9jIHNwYWNlLiAgKi8KLS0gICAgICBodGFiX3RyYXZlcnNlX25vcmVzaXplIChwc3Bh Y2VfaW5mby0+bG9hZGVkX3NjcmlwdHMsCi0tCQkJICAgICAgY29sbGVjdF9tYXRjaGluZ19zY3Jp cHRzLCAmc2NyaXB0cyk7Ci0tICAgICAgaW1tZWRpYXRlX3F1aXQtLTsKLS0gICAgfQotLQotLSAg bnJfc2NyaXB0cyA9IFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKTsKLS0g IG1ha2VfY2xlYW51cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwgMiwgbnJfc2NyaXB0 cywKLS0JCQkJICAgICAgICJBdXRvTG9hZGVkU2NyaXB0c1RhYmxlIik7Ci0tCi0tICB1aV9vdXRf dGFibGVfaGVhZGVyICh1aW91dCwgNywgdWlfbGVmdCwgImxvYWRlZCIsICJMb2FkZWQiKTsKLS0g IHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3MCwgdWlfbGVmdCwgInNjcmlwdCIsICJTY3Jp cHQiKTsKLS0gIHVpX291dF90YWJsZV9ib2R5ICh1aW91dCk7Ci0tCi0tICBpZiAobnJfc2NyaXB0 cyA+IDApCi0tICAgIHsKLS0gICAgICBpbnQgaTsKLS0gICAgICBsb2FkZWRfc2NyaXB0X3B0ciBz Y3JpcHQ7Ci0tCi0tICAgICAgcXNvcnQgKFZFQ19hZGRyZXNzIChsb2FkZWRfc2NyaXB0X3B0ciwg c2NyaXB0cyksCi0tCSAgICAgVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMp LAotLQkgICAgIHNpemVvZiAobG9hZGVkX3NjcmlwdF9wdHIpLCBzb3J0X3NjcmlwdHNfYnlfbmFt ZSk7Ci0tICAgICAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKGxvYWRlZF9zY3JpcHRfcHRyLCBz Y3JpcHRzLCBpLCBzY3JpcHQpOyArK2kpCi0tCXByaW50X3NjcmlwdCAoc2NyaXB0KTsKLS0gICAg fQotLQotLSAgZG9fY2xlYW51cHMgKHNjcmlwdF9jaGFpbik7Ci0tCi0tICBpZiAobnJfc2NyaXB0 cyA9PSAwKQotLSAgICB7Ci0tICAgICAgaWYgKHBhdHRlcm4gJiYgKnBhdHRlcm4pCi0tCXVpX291 dF9tZXNzYWdlICh1aW91dCwgMCwgIk5vIGF1dG8tbG9hZCBzY3JpcHRzIG1hdGNoaW5nICVzLlxu IiwKLS0JCQlwYXR0ZXJuKTsKLS0gICAgICBlbHNlCi0tCXVpX291dF9tZXNzYWdlICh1aW91dCwg MCwgIk5vIGF1dG8tbG9hZCBzY3JpcHRzLlxuIik7Ci0tICAgIH0KLS19Ci0tDAotIHZvaWQKLSBn ZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkKLSB7Ci0tICBhdXRvX2xvYWRfcHNwYWNl X2RhdGEKLS0gICAgPSByZWdpc3Rlcl9wcm9ncmFtX3NwYWNlX2RhdGFfd2l0aF9jbGVhbnVwIChh dXRvX2xvYWRfcHNwYWNlX2RhdGFfY2xlYW51cCk7Ci0tCi0tICBvYnNlcnZlcl9hdHRhY2hfbmV3 X29iamZpbGUgKGF1dG9fbG9hZF9uZXdfb2JqZmlsZSk7Ci0tCi0gICBhZGRfc2V0c2hvd19ib29s ZWFuX2NtZCAoImF1dG8tbG9hZC1zY3JpcHRzIiwgY2xhc3Nfc3VwcG9ydCwKLSAJCQkgICAmYXV0 b19sb2FkX3NjcmlwdHMsIF8oIlwKLSBTZXQgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2Fy ZGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCi1AQCAtNjI3LDExICsyMDUsNiBAQCBh biBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LiIpLAotIAkJCSAgIE5VTEwsIE5VTEwsCi0g CQkJICAgJnNldGxpc3QsCi0gCQkJICAgJnNob3dsaXN0KTsKLS0KLS0gIGFkZF9pbmZvICgiYXV0 by1sb2FkLXNjcmlwdHMiLAotLQkgICAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cywKLS0JICAgIF8o IlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHNjcmlwdHMuXG5cCi0tVXNh Z2U6IGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0iKSk7Ci0gfQotIAotICNlbHNlIC8q ICEgSEFWRV9QWVRIT04gKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24v cHl0aG9uLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5 dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjI2OjI5 LjA1NDEyMDE5OSArMDIwMAotQEAgLTI0LDggKzI0LDYgQEAKLSAKLSBzdHJ1Y3QgYnJlYWtwb2lu dF9vYmplY3Q7Ci0gCi0tZXh0ZXJuIGludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkOwotLQotIGV4 dGVybiB2b2lkIGZpbmlzaF9weXRob25faW5pdGlhbGl6YXRpb24gKHZvaWQpOwotIAotIHZvaWQg ZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1hbmQgKHN0cnVjdCBjb21tYW5kX2xpbmUgKik7 CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTA5b2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0w OW9mMTgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI0NGNmZgot LS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0wOW9mMTgucGF0Y2gKQEAgLTAsMCArMSwx MTY4IEBACitbcGF0Y2gjNCAzLzhdIGF1dG8tbG9hZDogcmVzaHVmZmxlIGNvZGUKK2h0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAwMDg3Lmh0bWwKK2h0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxMTIuaHRtbAorCitJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjI2OjI5LjA0OTEyMDIx MiArMDIwMAorQEAgLTAsMCArMSw0NzIgQEAKKysvKiBHREIgcm91dGluZXMgZm9yIHN1cHBvcnRp bmcgYXV0by1sb2FkZWQgc2NyaXB0cy4KKysKKysgICBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RC LgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAg IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5j bHVkZSAiZGVmcy5oIgorKyNpbmNsdWRlICJhdXRvLWxvYWQuaCIKKysjaW5jbHVkZSAicHJvZ3Nw YWNlLmgiCisrI2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIKKysjaW5jbHVkZSAiZ2RiX3JlZ2V4 LmgiCisrI2luY2x1ZGUgInVpLW91dC5oIgorKyNpbmNsdWRlICJmaWxlbmFtZXMuaCIKKysjaW5j bHVkZSAiY29tbWFuZC5oIgorKyNpbmNsdWRlICJvYnNlcnZlci5oIgorKyNpbmNsdWRlICJvYmpm aWxlcy5oIgorKyNpbmNsdWRlICJweXRob24vcHl0aG9uLWludGVybmFsLmgiCisrCisrLyogSW50 ZXJuYWwtdXNlIGZsYWcgdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nLgorKyAgIFRoaXMg aXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIHB5dGhvbiBjb2RlIHdoZW4gYW4gb2JqZmls ZSBpcyBvcGVuZWQsCisrICAgZmFsc2Ugb3RoZXJ3aXNlLgorKworKyAgIEJvdGggYXV0b19sb2Fk X3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCBtdXN0IGJlIHRydWUgdG8gZW5hYmxl CisrICAgYXV0by1sb2FkaW5nLgorKworKyAgIFRoaXMgZmxhZyBleGlzdHMgdG8gZmFjaWxpdGF0 ZSBkZWZlcnJpbmcgYXV0by1sb2FkaW5nIGR1cmluZyBzdGFydC11cAorKyAgIHVudGlsIGFmdGVy IC4vLmdkYmluaXQgaGFzIGJlZW4gcmVhZDsgaXQgbWF5IGF1Z21lbnQgdGhlIHNlYXJjaCBkaXJl Y3RvcmllcworKyAgIHVzZWQgdG8gZmluZCB0aGUgc2NyaXB0cy4gICovCisraW50IGdkYnB5X2ds b2JhbF9hdXRvX2xvYWQgPSAxOworKworKy8qIEZvciBzY3JpcHRzIHNwZWNpZmllZCBpbiAuZGVi dWdfZ2RiX3NjcmlwdHMsIG11bHRpcGxlIG9iamZpbGVzIG1heSBsb2FkCisrICAgdGhlIHNhbWUg c2NyaXB0LiAgVGhlcmUncyBubyBwb2ludCBpbiBsb2FkaW5nIHRoZSBzY3JpcHQgbXVsdGlwbGUg dGltZXMsCisrICAgYW5kIHRoZXJlIGNhbiBiZSBhIGxvdCBvZiBvYmpmaWxlcyBhbmQgc2NyaXB0 cywgc28gd2Uga2VlcCB0cmFjayBvZiBzY3JpcHRzCisrICAgbG9hZGVkIHRoaXMgd2F5LiAgKi8K KysKKytzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvCisreworKyAgLyogRm9yIGVhY2ggcHJv Z3JhbSBzcGFjZSB3ZSBrZWVwIHRyYWNrIG9mIGxvYWRlZCBzY3JpcHRzLiAgKi8KKysgIHN0cnVj dCBodGFiICpsb2FkZWRfc2NyaXB0czsKKysKKysgIC8qIE5vbi16ZXJvIGlmIHdlJ3ZlIGlzc3Vl ZCB0aGUgd2FybmluZyBhYm91dCBhbiBhdXRvLWxvYWQgc2NyaXB0IG5vdCBiZWluZworKyAgICAg Zm91bmQuICBXZSBvbmx5IHdhbnQgdG8gaXNzdWUgdGhpcyB3YXJuaW5nIG9uY2UuICAqLworKyAg aW50IHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkOworK307CisrCisrLyogT2JqZWN0 cyBvZiB0aGlzIHR5cGUgYXJlIHN0b3JlZCBpbiB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoIHRhYmxl LiAgKi8KKysKKytzdHJ1Y3QgbG9hZGVkX3NjcmlwdAorK3sKKysgIC8qIE5hbWUgYXMgcHJvdmlk ZWQgYnkgdGhlIG9iamZpbGUuICAqLworKyAgY29uc3QgY2hhciAqbmFtZTsKKysgIC8qIEZ1bGwg cGF0aCBuYW1lIG9yIE5VTEwgaWYgc2NyaXB0IHdhc24ndCBmb3VuZCAob3Igd2FzIG90aGVyd2lz ZQorKyAgICAgaW5hY2Nlc3NpYmxlKS4gICovCisrICBjb25zdCBjaGFyICpmdWxsX3BhdGg7Cisr fTsKKysKKysvKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4gICovCisrc3RhdGljIGNvbnN0 IHN0cnVjdCBwcm9ncmFtX3NwYWNlX2RhdGEgKmF1dG9fbG9hZF9wc3BhY2VfZGF0YTsKKysKKytz dGF0aWMgdm9pZAorK2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwIChzdHJ1Y3QgcHJvZ3Jh bV9zcGFjZSAqcHNwYWNlLCB2b2lkICphcmcpCisreworKyAgc3RydWN0IGF1dG9fbG9hZF9wc3Bh Y2VfaW5mbyAqaW5mbzsKKysKKysgIGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwg YXV0b19sb2FkX3BzcGFjZV9kYXRhKTsKKysgIGlmIChpbmZvICE9IE5VTEwpCisrICAgIHsKKysg ICAgICBpZiAoaW5mby0+bG9hZGVkX3NjcmlwdHMpCisrCWh0YWJfZGVsZXRlIChpbmZvLT5sb2Fk ZWRfc2NyaXB0cyk7CisrICAgICAgeGZyZWUgKGluZm8pOworKyAgICB9CisrfQorKworKy8qIEdl dCB0aGUgY3VycmVudCBhdXRvbG9hZCBkYXRhLiAgSWYgbm9uZSBpcyBmb3VuZCB5ZXQsIGFkZCBp dCBub3cuICBUaGlzCisrICAgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBvYmplY3Qu ICAqLworKworK3N0YXRpYyBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKKytnZXRfYXV0 b19sb2FkX3BzcGFjZV9kYXRhIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQorK3sKKysg IHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87CisrCisrICBpbmZvID0gcHJvZ3Jh bV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7CisrICBpZiAoaW5m byA9PSBOVUxMKQorKyAgICB7CisrICAgICAgaW5mbyA9IFhaQUxMT0MgKHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8pOworKyAgICAgIHNldF9wcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwg YXV0b19sb2FkX3BzcGFjZV9kYXRhLCBpbmZvKTsKKysgICAgfQorKworKyAgcmV0dXJuIGluZm87 CisrfQorKworKy8qIEhhc2ggZnVuY3Rpb24gZm9yIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAq LworKworK3N0YXRpYyBoYXNodmFsX3QKKytoYXNoX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0 IHZvaWQgKmRhdGEpCisreworKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmUgPSBkYXRh OworKworKyAgcmV0dXJuIGh0YWJfaGFzaF9zdHJpbmcgKGUtPm5hbWUpOworK30KKysKKysvKiBF cXVhbGl0eSBmdW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCisrCisrc3Rh dGljIGludAorK2VxX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZv aWQgKmIpCisreworKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmVhID0gYTsKKysgIGNv bnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYiA9IGI7CisrCisrICByZXR1cm4gc3RyY21wIChl YS0+bmFtZSwgZWItPm5hbWUpID09IDA7CisrfQorKworKy8qIEluaXRpYWxpemUgdGhlIHRhYmxl IHRvIHRyYWNrIGxvYWRlZCBzY3JpcHRzLgorKyAgIEVhY2ggZW50cnkgaXMgaGFzaGVkIGJ5IHRo ZSBmdWxsIHBhdGggbmFtZS4gICovCisrCisrc3RhdGljIHZvaWQKKytpbml0X2xvYWRlZF9zY3Jp cHRzX2luZm8gKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQorK3sK KysgIC8qIENob29zZSAzMSBhcyB0aGUgc3RhcnRpbmcgc2l6ZSBvZiB0aGUgaGFzaCB0YWJsZSwg c29tZXdoYXQgYXJiaXRyYXJpbHkuCisrICAgICBTcGFjZSBmb3IgZWFjaCBlbnRyeSBpcyBvYnRh aW5lZCB3aXRoIG9uZSBtYWxsb2Mgc28gd2UgY2FuIGZyZWUgdGhlbQorKyAgICAgZWFzaWx5LiAg Ki8KKysKKysgIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyA9IGh0YWJfY3JlYXRlICgzMSwK KysJCQkJCSAgICAgaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5LAorKwkJCQkJICAgICBlcV9sb2Fk ZWRfc2NyaXB0X2VudHJ5LAorKwkJCQkJICAgICB4ZnJlZSk7CisrCisrICBwc3BhY2VfaW5mby0+ c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBGQUxTRTsKKyt9CisrCisrLyogV3Jh cHBlciBvbiBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIHRvIGFsc28gYWxsb2NhdGUgdGhlIGhh c2ggdGFibGUKKysgICBmb3IgbG9hZGluZyBzY3JpcHRzLiAgKi8KKysKKytzdHJ1Y3QgYXV0b19s b2FkX3BzcGFjZV9pbmZvICoKKytnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5n IChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQorK3sKKysgIHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKmluZm87CisrCisrICBpbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0 YSAocHNwYWNlKTsKKysgIGlmIChpbmZvLT5sb2FkZWRfc2NyaXB0cyA9PSBOVUxMKQorKyAgICBp bml0X2xvYWRlZF9zY3JpcHRzX2luZm8gKGluZm8pOworKworKyAgcmV0dXJuIGluZm87CisrfQor KworKy8qIEFkZCBzY3JpcHQgTkFNRSB0byBoYXNoIHRhYmxlIG9mIFBTUEFDRV9JTkZPLgorKyAg IEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLgorKyAgIFRoZSBy ZXN1bHQgaXMgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxl LiAgKi8KKysKKytpbnQKKyttYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj ZV9pbmZvICpwc3BhY2VfaW5mbywgY29uc3QgY2hhciAqbmFtZSwKKysJCSAgY29uc3QgY2hhciAq ZnVsbF9wYXRoKQorK3sKKysgIHN0cnVjdCBodGFiICpodGFiID0gcHNwYWNlX2luZm8tPmxvYWRl ZF9zY3JpcHRzOworKyAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKipzbG90LCBlbnRyeTsKKysgIGlu dCBpbl9oYXNoX3RhYmxlOworKworKyAgZW50cnkubmFtZSA9IG5hbWU7CisrICBlbnRyeS5mdWxs X3BhdGggPSBmdWxsX3BhdGg7CisrICBzbG90ID0gKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBo dGFiX2ZpbmRfc2xvdCAoaHRhYiwgJmVudHJ5LCBJTlNFUlQpOworKyAgaW5faGFzaF90YWJsZSA9 ICpzbG90ICE9IE5VTEw7CisrCisrICAvKiBJZiB0aGlzIHNjcmlwdCBpcyBub3QgaW4gdGhlIGhh c2ggdGFibGUsIGFkZCBpdC4gICovCisrCisrICBpZiAoISBpbl9oYXNoX3RhYmxlKQorKyAgICB7 CisrICAgICAgY2hhciAqcDsKKysKKysgICAgICAvKiBBbGxvY2F0ZSBhbGwgc3BhY2UgaW4gb25l IGNodW5rIHNvIGl0J3MgZWFzaWVyIHRvIGZyZWUuICAqLworKyAgICAgICpzbG90ID0geG1hbGxv YyAoc2l6ZW9mICgqKnNsb3QpCisrCQkgICAgICAgKyBzdHJsZW4gKG5hbWUpICsgMQorKwkJICAg ICAgICsgKGZ1bGxfcGF0aCAhPSBOVUxMID8gKHN0cmxlbiAoZnVsbF9wYXRoKSArIDEpIDogMCkp OworKyAgICAgIHAgPSAoKGNoYXIqKSAqc2xvdCkgKyBzaXplb2YgKCoqc2xvdCk7CisrICAgICAg c3RyY3B5IChwLCBuYW1lKTsKKysgICAgICAoKnNsb3QpLT5uYW1lID0gcDsKKysgICAgICBpZiAo ZnVsbF9wYXRoICE9IE5VTEwpCisrCXsKKysJICBwICs9IHN0cmxlbiAocCkgKyAxOworKwkgIHN0 cmNweSAocCwgZnVsbF9wYXRoKTsKKysJICAoKnNsb3QpLT5mdWxsX3BhdGggPSBwOworKwl9Cisr ICAgICAgZWxzZQorKwkoKnNsb3QpLT5mdWxsX3BhdGggPSBOVUxMOworKyAgICB9CisrCisrICBy ZXR1cm4gaW5faGFzaF90YWJsZTsKKyt9CisrCisrLyogQ2xlYXIgdGhlIHRhYmxlIG9mIGxvYWRl ZCBzZWN0aW9uIHNjcmlwdHMuICAqLworKworK3N0YXRpYyB2b2lkCisrY2xlYXJfc2VjdGlvbl9z Y3JpcHRzICh2b2lkKQorK3sKKysgIHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UgPSBjdXJy ZW50X3Byb2dyYW1fc3BhY2U7CisrICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICppbmZv OworKworKyAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNw YWNlX2RhdGEpOworKyAgaWYgKGluZm8gIT0gTlVMTCAmJiBpbmZvLT5sb2FkZWRfc2NyaXB0cyAh PSBOVUxMKQorKyAgICB7CisrICAgICAgaHRhYl9kZWxldGUgKGluZm8tPmxvYWRlZF9zY3JpcHRz KTsKKysgICAgICBpbmZvLT5sb2FkZWRfc2NyaXB0cyA9IE5VTEw7CisrICAgICAgaW5mby0+c2Ny aXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBGQUxTRTsKKysgICAgfQorK30KKysKKysv KiBMb29rIGZvciB0aGUgYXV0by1sb2FkIHNjcmlwdCBhc3NvY2lhdGVkIHdpdGggT0JKRklMRSBh bmQgbG9hZCBpdC4gICovCisrCisrdm9pZAorK2F1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKnN1ZmZpeCkKKyt7CisrICBjaGFyICpy ZWFsbmFtZTsKKysgIGNoYXIgKmZpbGVuYW1lLCAqZGVidWdmaWxlOworKyAgaW50IGxlbjsKKysg IEZJTEUgKmlucHV0OworKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOworKworKyAgcmVhbG5h bWUgPSBnZGJfcmVhbHBhdGggKG9iamZpbGUtPm5hbWUpOworKyAgbGVuID0gc3RybGVuIChyZWFs bmFtZSk7CisrICBmaWxlbmFtZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAoc3VmZml4KSArIDEp OworKyAgbWVtY3B5IChmaWxlbmFtZSwgcmVhbG5hbWUsIGxlbik7CisrICBzdHJjcHkgKGZpbGVu YW1lICsgbGVuLCBzdWZmaXgpOworKworKyAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVl LCBmaWxlbmFtZSk7CisrICBtYWtlX2NsZWFudXAgKHhmcmVlLCByZWFsbmFtZSk7CisrCisrICBp bnB1dCA9IGZvcGVuIChmaWxlbmFtZSwgInIiKTsKKysgIGRlYnVnZmlsZSA9IGZpbGVuYW1lOwor KworKyAgaWYgKCFpbnB1dCAmJiBkZWJ1Z19maWxlX2RpcmVjdG9yeSkKKysgICAgeworKyAgICAg IC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZGly ZWN0b3J5LiAgKi8KKysgICAgICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGZpbGVuYW1l KQorKwkJCSAgICsgc3RybGVuIChkZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAxKTsKKysgICAgICBz dHJjcHkgKGRlYnVnZmlsZSwgZGVidWdfZmlsZV9kaXJlY3RvcnkpOworKyAgICAgIC8qIEZJTEVO QU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLworKyAgICAg IHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7CisrCisrICAgICAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgZGVidWdmaWxlKTsKKysgICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7 CisrICAgIH0KKysKKysgIGlmICghaW5wdXQgJiYgZ2RiX2RhdGFkaXIpCisrICAgIHsKKysgICAg ICAvKiBBbHNvIHRyeSB0aGUgc2FtZSBmaWxlIGluIGEgc3ViZGlyZWN0b3J5IG9mIGdkYidzIGRh dGEKKysJIGRpcmVjdG9yeS4gICovCisrICAgICAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVu IChnZGJfZGF0YWRpcikgKyBzdHJsZW4gKGZpbGVuYW1lKQorKwkJCSAgICsgc3RybGVuICgiL2F1 dG8tbG9hZCIpICsgMSk7CisrICAgICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGdkYl9kYXRhZGlyKTsK KysgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgIi9hdXRvLWxvYWQiKTsKKysgICAgICAvKiBGSUxF TkFNRSBpcyBhYnNvbHV0ZSwgc28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJlLiAgKi8KKysgICAg ICBzdHJjYXQgKGRlYnVnZmlsZSwgZmlsZW5hbWUpOworKworKyAgICAgIG1ha2VfY2xlYW51cCAo eGZyZWUsIGRlYnVnZmlsZSk7CisrICAgICAgaW5wdXQgPSBmb3BlbiAoZGVidWdmaWxlLCAiciIp OworKyAgICB9CisrCisrICBpZiAoaW5wdXQpCisrICAgIHsKKysgICAgICBzdHJ1Y3QgYXV0b19s b2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKysKKysgICAgICBtYWtlX2NsZWFudXBfZmNs b3NlIChpbnB1dCk7CisrCisrICAgICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRh YmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIKKysJIGNhbiBwcmludCBpdC4gICov CisrICAgICAgcHNwYWNlX2luZm8gPQorKwlnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9s b2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOworKyAgICAgIG1heWJlX2FkZF9zY3JpcHQg KHBzcGFjZV9pbmZvLCBkZWJ1Z2ZpbGUsIGRlYnVnZmlsZSk7CisrCisrICAgICAgLyogVG8gcHJl c2VydmUgZXhpc3RpbmcgYmVoYXZpb3VyIHdlIGRvbid0IGNoZWNrIGZvciB3aGV0aGVyIHRoZQor Kwkgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSB0YWJsZSwgYW5kIGFsd2F5cyBsb2FkIGl0Lgor KwkgSXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCB3ZSdkIGV2ZXIgbG9hZCBpdCB0d2ljZSwKKysJ IGFuZCB0aGVzZSBzY3JpcHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVyIG11 bHRpcGxlCisrCSBsb2FkcyBhbnl3YXkuICAqLworKyAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0 X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKKysgICAgfQorKworKyAg ZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKyt9CisrCisrLyogVGhpcyBpcyBhIG5ld19vYmpmaWxl IG9ic2VydmVyIGNhbGxiYWNrIHRvIGF1dG8tbG9hZCBzY3JpcHRzLgorKworKyAgIFR3byBmbGF2 b3JzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgYXJlIHN1cHBvcnRlZC4KKysgICAxKSBiYXNlZCBv biB0aGUgcGF0aCB0byB0aGUgb2JqZmlsZQorKyAgIDIpIGZyb20gLmRlYnVnX2dkYl9zY3JpcHRz IHNlY3Rpb24gICovCisrCisrc3RhdGljIHZvaWQKKythdXRvX2xvYWRfbmV3X29iamZpbGUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorK3sKKysgIGlmICghb2JqZmlsZSkKKysgICAgeworKyAg ICAgIC8qIE9CSkZJTEUgaXMgTlVMTCB3aGVuIGxvYWRpbmcgYSBuZXcgIm1haW4iIHN5bWJvbC1m aWxlLiAgKi8KKysgICAgICBjbGVhcl9zZWN0aW9uX3NjcmlwdHMgKCk7CisrICAgICAgcmV0dXJu OworKyAgICB9CisrCisrICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7 CisrfQorKworKy8qIENvbGxlY3Qgc2NyaXB0cyB0byBiZSBwcmludGVkIGluIGEgdmVjLiAgKi8K KysKKyt0eXBlZGVmIHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpsb2FkZWRfc2NyaXB0X3B0cjsKKytE RUZfVkVDX1AgKGxvYWRlZF9zY3JpcHRfcHRyKTsKKysKKysvKiBUcmF2ZXJzYWwgZnVuY3Rpb24g Zm9yIGh0YWJfdHJhdmVyc2UuCisrICAgQ29sbGVjdCB0aGUgZW50cnkgaWYgaXQgbWF0Y2hlcyB0 aGUgcmVnZXhwLiAgKi8KKysKKytzdGF0aWMgaW50CisrY29sbGVjdF9tYXRjaGluZ19zY3JpcHRz ICh2b2lkICoqc2xvdCwgdm9pZCAqaW5mbykKKyt7CisrICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAq c2NyaXB0ID0gKnNsb3Q7CisrICBWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqKnNjcmlwdHNfcHRy ID0gaW5mbzsKKysKKysgIGlmIChyZV9leGVjIChzY3JpcHQtPm5hbWUpKQorKyAgICBWRUNfc2Fm ZV9wdXNoIChsb2FkZWRfc2NyaXB0X3B0ciwgKnNjcmlwdHNfcHRyLCBzY3JpcHQpOworKworKyAg cmV0dXJuIDE7CisrfQorKworKy8qIFByaW50IFNDUklQVC4gICovCisrCisrc3RhdGljIHZvaWQK KytwcmludF9zY3JpcHQgKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQpCisreworKyAgc3Ry dWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OworKyAgc3RydWN0IGNsZWFudXAgKmNo YWluOworKworKyAgY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAo dWlvdXQsIE5VTEwpOworKworKyAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQi LCBzY3JpcHQtPmZ1bGxfcGF0aCA/ICJZZXMiIDogIk1pc3NpbmciKTsKKysgIHVpX291dF9maWVs ZF9zdHJpbmcgKHVpb3V0LCAic2NyaXB0Iiwgc2NyaXB0LT5uYW1lKTsKKysgIHVpX291dF90ZXh0 ICh1aW91dCwgIlxuIik7CisrCisrICAvKiBJZiB0aGUgbmFtZSBpc24ndCB0aGUgZnVsbCBwYXRo LCBwcmludCBpdCB0b28uICAqLworKyAgaWYgKHNjcmlwdC0+ZnVsbF9wYXRoICE9IE5VTEwKKysg ICAgICAmJiBzdHJjbXAgKHNjcmlwdC0+bmFtZSwgc2NyaXB0LT5mdWxsX3BhdGgpICE9IDApCisr ICAgIHsKKysgICAgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcdGZ1bGwgbmFtZTogIik7CisrICAg ICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJmdWxsX3BhdGgiLCBzY3JpcHQtPmZ1bGxf cGF0aCk7CisrICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKKysgICAgfQorKworKyAg ZG9fY2xlYW51cHMgKGNoYWluKTsKKyt9CisrCisrLyogSGVscGVyIGZvciBpbmZvX2F1dG9fbG9h ZF9zY3JpcHRzIHRvIHNvcnQgdGhlIHNjcmlwdHMgYnkgbmFtZS4gICovCisrCisrc3RhdGljIGlu dAorK3NvcnRfc2NyaXB0c19ieV9uYW1lIChjb25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnAp CisreworKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmEgPSAqKGNvbnN0IHN0cnVjdCBs b2FkZWRfc2NyaXB0ICoqKSBhcDsKKysgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpiID0g Kihjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgYnA7CisrCisrICByZXR1cm4gRklMRU5B TUVfQ01QIChhLT5uYW1lLCBiLT5uYW1lKTsKKyt9CisrCisrLyogImluZm8gYXV0by1sb2FkLXNj cmlwdHMiIGNvbW1hbmQuICAqLworKworK3N0YXRpYyB2b2lkCisraW5mb19hdXRvX2xvYWRfc2Ny aXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5KQorK3sKKysgIHN0cnVjdCB1aV9vdXQg KnVpb3V0ID0gY3VycmVudF91aW91dDsKKysgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8g KnBzcGFjZV9pbmZvOworKyAgc3RydWN0IGNsZWFudXAgKnNjcmlwdF9jaGFpbjsKKysgIFZFQyAo bG9hZGVkX3NjcmlwdF9wdHIpICpzY3JpcHRzOworKyAgaW50IG5yX3NjcmlwdHM7CisrCisrICBk b250X3JlcGVhdCAoKTsKKysKKysgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2Vf ZGF0YSAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKKysKKysgIGlmIChwYXR0ZXJuICYmICpwYXR0 ZXJuKQorKyAgICB7CisrICAgICAgY2hhciAqcmVfZXJyID0gcmVfY29tcCAocGF0dGVybik7Cisr CisrICAgICAgaWYgKHJlX2VycikKKysJZXJyb3IgKF8oIkludmFsaWQgcmVnZXhwOiAlcyIpLCBy ZV9lcnIpOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICByZV9jb21wICgiIik7Cisr ICAgIH0KKysKKysgIC8qIFdlIG5lZWQgdG8ga25vdyB0aGUgbnVtYmVyIG9mIHJvd3MgYmVmb3Jl IHdlIGJ1aWxkIHRoZSB0YWJsZS4KKysgICAgIFBsdXMgd2Ugd2FudCB0byBzb3J0IHRoZSBzY3Jp cHRzIGJ5IG5hbWUuCisrICAgICBTbyBmaXJzdCB0cmF2ZXJzZSB0aGUgaGFzaCB0YWJsZSBjb2xs ZWN0aW5nIHRoZSBtYXRjaGluZyBzY3JpcHRzLiAgKi8KKysKKysgIHNjcmlwdHMgPSBWRUNfYWxs b2MgKGxvYWRlZF9zY3JpcHRfcHRyLCAxMCk7CisrICBzY3JpcHRfY2hhaW4gPSBtYWtlX2NsZWFu dXAgKFZFQ19jbGVhbnVwIChsb2FkZWRfc2NyaXB0X3B0ciksICZzY3JpcHRzKTsKKysKKysgIGlm IChwc3BhY2VfaW5mbyAhPSBOVUxMICYmIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBO VUxMKQorKyAgICB7CisrICAgICAgaW1tZWRpYXRlX3F1aXQrKzsKKysgICAgICAvKiBQYXNzIGEg cG9pbnRlciB0byBzY3JpcHRzIGFzIFZFQ19zYWZlX3B1c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAq LworKyAgICAgIGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2Ny aXB0cywKKysJCQkgICAgICBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMsICZzY3JpcHRzKTsKKysg ICAgICBpbW1lZGlhdGVfcXVpdC0tOworKyAgICB9CisrCisrICBucl9zY3JpcHRzID0gVkVDX2xl bmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpOworKyAgbWFrZV9jbGVhbnVwX3VpX291 dF90YWJsZV9iZWdpbl9lbmQgKHVpb3V0LCAyLCBucl9zY3JpcHRzLAorKwkJCQkgICAgICAgIkF1 dG9Mb2FkZWRTY3JpcHRzVGFibGUiKTsKKysKKysgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0 LCA3LCB1aV9sZWZ0LCAibG9hZGVkIiwgIkxvYWRlZCIpOworKyAgdWlfb3V0X3RhYmxlX2hlYWRl ciAodWlvdXQsIDcwLCB1aV9sZWZ0LCAic2NyaXB0IiwgIlNjcmlwdCIpOworKyAgdWlfb3V0X3Rh YmxlX2JvZHkgKHVpb3V0KTsKKysKKysgIGlmIChucl9zY3JpcHRzID4gMCkKKysgICAgeworKyAg ICAgIGludCBpOworKyAgICAgIGxvYWRlZF9zY3JpcHRfcHRyIHNjcmlwdDsKKysKKysgICAgICBx c29ydCAoVkVDX2FkZHJlc3MgKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKSwKKysJICAgICBW RUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyksCisrCSAgICAgc2l6ZW9mIChs b2FkZWRfc2NyaXB0X3B0ciksIHNvcnRfc2NyaXB0c19ieV9uYW1lKTsKKysgICAgICBmb3IgKGkg PSAwOyBWRUNfaXRlcmF0ZSAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMsIGksIHNjcmlwdCk7 ICsraSkKKysJcHJpbnRfc2NyaXB0IChzY3JpcHQpOworKyAgICB9CisrCisrICBkb19jbGVhbnVw cyAoc2NyaXB0X2NoYWluKTsKKysKKysgIGlmIChucl9zY3JpcHRzID09IDApCisrICAgIHsKKysg ICAgICBpZiAocGF0dGVybiAmJiAqcGF0dGVybikKKysJdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAw LCAiTm8gYXV0by1sb2FkIHNjcmlwdHMgbWF0Y2hpbmcgJXMuXG4iLAorKwkJCXBhdHRlcm4pOwor KyAgICAgIGVsc2UKKysJdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNj cmlwdHMuXG4iKTsKKysgICAgfQorK30KKysKKysvKiBSZXR1cm4gbm9uLXplcm8gaWYgU0NSSVBU X05PVF9GT1VORF9XQVJOSU5HX1BSSU5URUQgb2YgUFNQQUNFX0lORk8gd2FzIHVuc2V0CisrICAg YmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gIEFsd2F5cyBzZXQgU0NSSVBUX05PVF9GT1VO RF9XQVJOSU5HX1BSSU5URUQKKysgICBvZiBQU1BBQ0VfSU5GTy4gICovCisrCisraW50Cisrc2Ny aXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZv ICpwc3BhY2VfaW5mbykKKyt7CisrICBpbnQgcmV0dmFsID0gIXBzcGFjZV9pbmZvLT5zY3JpcHRf bm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZDsKKysKKysgIHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90 X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IDE7CisrCisrICByZXR1cm4gcmV0dmFsOworK30KKysK Kyt2b2lkIF9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCk7CisrCisrdm9pZAorK19pbml0aWFs aXplX2F1dG9fbG9hZCAodm9pZCkKKyt7CisrICBhdXRvX2xvYWRfcHNwYWNlX2RhdGEKKysgICAg PSByZWdpc3Rlcl9wcm9ncmFtX3NwYWNlX2RhdGFfd2l0aF9jbGVhbnVwIChhdXRvX2xvYWRfcHNw YWNlX2RhdGFfY2xlYW51cCk7CisrCisrICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKGF1 dG9fbG9hZF9uZXdfb2JqZmlsZSk7CisrCisrICBhZGRfaW5mbyAoImF1dG8tbG9hZC1zY3JpcHRz IiwKKysJICAgIGluZm9fYXV0b19sb2FkX3NjcmlwdHMsCisrCSAgICBfKCJQcmludCB0aGUgbGlz dCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBzY3JpcHRzLlxuXAorK1VzYWdlOiBpbmZvIGF1dG8t bG9hZC1zY3JpcHRzIFtSRUdFWFBdIikpOworK30KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9hdXRvLWxvYWQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8t bG9hZC5oCTIwMTItMDQtMTggMDA6MjY6MjkuMDQ5MTIwMjEyICswMjAwCitAQCAtMCwwICsxLDM2 IEBACisrLyogR0RCIHJvdXRpbmVzIGZvciBzdXBwb3J0aW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMu CisrCisrICAgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor KyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2lmbmRlZiBBVVRPX0xPQURfSAorKyNkZWZp bmUgQVVUT19MT0FEX0ggMQorKworK3N0cnVjdCBwcm9ncmFtX3NwYWNlOworKworK2V4dGVybiBp bnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZDsKKysKKytleHRlcm4gc3RydWN0IGF1dG9fbG9hZF9w c3BhY2VfaW5mbyAqCisrICBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChz dHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsKKytleHRlcm4gaW50IG1heWJlX2FkZF9zY3Jp cHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLAorKwkJCSAgICAg Y29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoKTsKKytleHRlcm4gdm9pZCBh dXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJCQkg ICAgICBjb25zdCBjaGFyICpzdWZmaXgpOworK2V4dGVybiBpbnQKKysgIHNjcmlwdF9ub3RfZm91 bmRfd2FybmluZ19wcmludCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2lu Zm8pOworKworKyNlbmRpZiAvKiBBVVRPX0xPQURfSCAqLworSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL2dkYi1nZGIuZ2RiLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvZ2RiLWdkYi5nZGIuaW4JMjAxMi0wNC0xOCAwMDoyNjoyOS4wNDkxMjAyMTIgKzAyMDAKK0BA IC0wLDAgKzEsMzQgQEAKKytlY2hvIFNldHRpbmcgdXAgdGhlIGVudmlyb25tZW50IGZvciBkZWJ1 Z2dpbmcgZ2RiLlxuCisrCisrc2V0IGNvbXBsYWludHMgMQorKworK2IgaW50ZXJuYWxfZXJyb3IK KysKKytiIGluZm9fY29tbWFuZAorK2NvbW1hbmRzCisrCXNpbGVudAorKwlyZXR1cm4KKytlbmQK KysKKytkaXIgQHNyY2RpckAvLi4vbGliaWJlcnR5CisrZGlyIEBzcmNkaXJALy4uL2JmZAorK2Rp ciBAc3JjZGlyQAorK2RpciAuCisrc2V0IHByb21wdCAodG9wLWdkYikgCisrCisrZGVmaW5lIHBk aWUKKysgIGlmICRhcmdjID09IDEKKysgICAgY2FsbCBkdW1wX2RpZSAoJGFyZzAsIDEpCisrICBl bHNlCisrICAgIGlmICRhcmdjID09IDIKKysgICAgICBjYWxsIGR1bXBfZGllICgkYXJnMCwgJGFy ZzEpCisrICAgIGVsc2UKKysgICAgICBwcmludGYgIlN5bnRheDogcGRpZSBkaWUgW2RlcHRoXVxu IgorKyAgICBlbmQKKysgIGVuZAorK2VuZAorKworK2RvY3VtZW50IHBkaWUKKytQcmV0dHkgcHJp bnQgYSBEV0FSRiBESUUuCisrU3ludGF4OiBwZGllIGRpZSBbZGVwdGhdCisrZW5kCitJbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL01ha2VmaWxlLmluCTIwMTItMDQtMTggMDA6MjY6MTQu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTWFrZWZpbGUuaW4J MjAxMi0wNC0xOCAwMDoyNjo1My40NTUwNTgwMzcgKzAyMDAKK0BAIC02ODAsNyArNjgwLDcgQEAg VEFSR0VUX0ZMQUdTX1RPX1BBU1MgPSBcCisgIyBTRklMRVMgaXMgdXNlZCBpbiBidWlsZGluZyB0 aGUgZGlzdHJpYnV0aW9uIGFyY2hpdmUuCisgCisgU0ZJTEVTID0gYWRhLWV4cC55IGFkYS1sYW5n LmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxwcmludC5jIGFkYS10YXNrcy5jIFwKKy0JYWRkcm1h cC5jIFwKKysJYWRkcm1hcC5jIGF1dG8tbG9hZC5jIFwKKyAJYXV4di5jIGF4LWdlbmVyYWwuYyBh eC1nZGIuYyBcCisgCWJjYWNoZS5jIFwKKyAJYmZkLXRhcmdldC5jIFwKK0BAIC04MTksNyArODE5 LDcgQEAgc29saWItZGFyd2luLmggc29saWItaWE2NC1ocHV4Lmggc29saWItcworIGdudWxpYi9l eHRyYS9hcmctbm9ubnVsbC5oIGdudWxpYi9leHRyYS9jKytkZWZzLmggZ251bGliL2V4dHJhL3dh cm4tb24tdXNlLmggXAorIGdudWxpYi9zdGRkZWYuaW4uaCBpbmxpbmUtZnJhbWUuaCBza2lwLmgg c3RhcC1wcm9iZS5oIFwKKyBjb21tb24vY29tbW9uLXV0aWxzLmggY29tbW9uL3htbC11dGlscy5o IGNvbW1vbi9idWZmZXIuaCBjb21tb24vcHRpZC5oIFwKKy1jb21tb24vbGludXgtb3NkYXRhLmgg Z2RiLWRsZmNuLmgKKytjb21tb24vbGludXgtb3NkYXRhLmggZ2RiLWRsZmNuLmggYXV0by1sb2Fk LmgKKyAKKyAjIEhlYWRlciBmaWxlcyB0aGF0IGFscmVhZHkgaGF2ZSBzcmNkaXIgaW4gdGhlbSwg b3Igd2hpY2ggYXJlIGluIG9iamRpci4KKyAKK0BAIC04NTEsNyArODUxLDcgQEAgQ09NTU9OX09C UyA9ICQoREVQRklMRVMpICQoQ09ORklHX09CUykgJAorIAl2ZXJzaW9uLm8gXAorIAlhbm5vdGF0 ZS5vIFwKKyAJYWRkcm1hcC5vIFwKKy0JYXV4di5vIFwKKysJYXV0by1sb2FkLm8gYXV4di5vIFwK KyAJYmZkLXRhcmdldC5vIFwKKyAJYmxvY2tmcmFtZS5vIGJyZWFrcG9pbnQubyBmaW5kdmFyLm8g cmVnY2FjaGUubyBcCisgCWNoYXJzZXQubyBjb250aW51YXRpb25zLm8gY29yZWxvdy5vIGRpc2Fz bS5vIGR1bW15LWZyYW1lLm8gZGZwLm8gXAorQEAgLTEyNTUsNyArMTI1NSw3IEBAIGRpc3RjbGVh bjogY2xlYW4KKyAJcm0gLWYgZ2Ric2VydmVyL2NvbmZpZy5zdGF0dXMgZ2Ric2VydmVyL2NvbmZp Zy5sb2cKKyAJcm0gLWYgZ2Ric2VydmVyL3RtLmggZ2Ric2VydmVyL3htLmggZ2Ric2VydmVyL25t LmgKKyAJcm0gLWYgZ2Ric2VydmVyL01ha2VmaWxlIGdkYnNlcnZlci9jb25maWcuY2FjaGUKKy0J cm0gLWYgbm0uaCBjb25maWcuc3RhdHVzIGNvbmZpZy5oIHN0YW1wLWggLmdkYmluaXQgaml0LXJl YWRlci5oCisrCXJtIC1mIG5tLmggY29uZmlnLnN0YXR1cyBjb25maWcuaCBzdGFtcC1oIGdkYi1n ZGIuZ2RiIGppdC1yZWFkZXIuaAorIAlybSAtZiB5Lm91dHB1dCB5YWNjLmFjdHMgeWFjYy50bXAg eS50YWIuaAorIAlybSAtZiBjb25maWcubG9nIGNvbmZpZy5jYWNoZQorIAlybSAtZiBNYWtlZmls ZQorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQorPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6 MjY6MTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmln dXJlCTIwMTItMDQtMTggMDA6MjY6MjkuMDUzMTIwMjAyICswMjAwCitAQCAtMTY4MzksNyArMTY4 MzksNyBAQCBhY19jb25maWdfbGlua3M9IiRhY19jb25maWdfbGlua3MgJGFjX2NvCisgJGFzX2Vj aG8gIiNkZWZpbmUgR0RCX0RFRkFVTFRfSE9TVF9DSEFSU0VUIFwiVVRGLThcIiIgPj5jb25mZGVm cy5oCisgCisgCistYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlIC5n ZGJpbml0OmdkYmluaXQuaW4gZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVj dG9yeS9NYWtlZmlsZSIKKythY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZp bGUgZ2RiLWdkYi5nZGIgZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9y eS9NYWtlZmlsZSIKKyAKKyBhY19jb25maWdfY29tbWFuZHM9IiRhY19jb25maWdfY29tbWFuZHMg ZGVmYXVsdCIKKyAKK0BAIC0xNzYwNSw3ICsxNzYwNSw3IEBAIGRvCisgICAgICJqaXQtcmVhZGVy LmgiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgaml0LXJlYWRlci5oOmppdC1yZWFkZXIu aW4iIDs7CisgICAgICIkYWNfY29uZmlnX2xpbmtzXzEiKSBDT05GSUdfTElOS1M9IiRDT05GSUdf TElOS1MgJGFjX2NvbmZpZ19saW5rc18xIiA7OworICAgICAiTWFrZWZpbGUiKSBDT05GSUdfRklM RVM9IiRDT05GSUdfRklMRVMgTWFrZWZpbGUiIDs7CistICAgICIuZ2RiaW5pdCIpIENPTkZJR19G SUxFUz0iJENPTkZJR19GSUxFUyAuZ2RiaW5pdDpnZGJpbml0LmluIiA7OworKyAgICAiZ2RiLWdk Yi5nZGIiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ2RiLWdkYi5nZGIiIDs7CisgICAg ICJkb2MvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZG9jL01ha2VmaWxl IiA7OworICAgICAiZ251bGliL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVT IGdudWxpYi9NYWtlZmlsZSIgOzsKKyAgICAgImRhdGEtZGlyZWN0b3J5L01ha2VmaWxlIikgQ09O RklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlIiA7OworSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMTggMDA6 MjY6MTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmln dXJlLmFjCTIwMTItMDQtMTggMDA6MjY6MjkuMDUzMTIwMjAyICswMjAwCitAQCAtMjQyMiw3ICsy NDIyLDcgQEAgZG5sICBBdCB0aGUgbW9tZW50LCB3ZSBqdXN0IGFzc3VtZSBpdCdzCisgQUNfREVG SU5FKEdEQl9ERUZBVUxUX0hPU1RfQ0hBUlNFVCwgIlVURi04IiwKKyAgICAgICAgICAgW0RlZmlu ZSB0byBiZSBhIHN0cmluZyBuYW1pbmcgdGhlIGRlZmF1bHQgaG9zdCBjaGFyYWN0ZXIgc2V0Ll0p CisgCistQUNfT1VUUFVUKE1ha2VmaWxlIC5nZGJpbml0OmdkYmluaXQuaW4gZG9jL01ha2VmaWxl IGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSwKKytBQ19PVVRQVVQoTWFr ZWZpbGUgZ2RiLWdkYi5nZGIgZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVj dG9yeS9NYWtlZmlsZSwKKyBbCisgY2FzZSB4JENPTkZJR19IRUFERVJTIGluCisgeGNvbmZpZy5o OmNvbmZpZy5pbikKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4 IDAwOjI2OjE0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21h aW4uYwkyMDEyLTA0LTE4IDAwOjI2OjI5LjA1NDEyMDE5OSArMDIwMAorQEAgLTQyLDYgKzQyLDcg QEAKKyAjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCisgI2luY2x1ZGUgInB5dGhvbi9weXRob24u aCIKKyAjaW5jbHVkZSAib2JqZmlsZXMuaCIKKysjaW5jbHVkZSAiYXV0by1sb2FkLmgiCisgCisg LyogVGhlIHNlbGVjdGVkIGludGVycHJldGVyLiAgVGhpcyB3aWxsIGJlIHVzZWQgYXMgYSBzZXQg Y29tbWFuZAorICAgIHZhcmlhYmxlLCBzbyBpdCBzaG91bGQgYWx3YXlzIGJlIG1hbGxvYydlZCAt IHNpbmNlCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9h ZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24v cHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAw MDoyNjoyOS4wNTQxMjAxOTkgKzAyMDAKK0BAIC0xOCwzMCArMTgsMTQgQEAKKyAgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCisgCisgI2luY2x1ZGUgImRlZnMuaCIKKy0jaW5jbHVkZSAiZmlsZW5hbWVzLmgi CisgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKKy0jaW5jbHVkZSAiZ2RiX3JlZ2V4LmgiCisgI2lu Y2x1ZGUgInRvcC5oIgorICNpbmNsdWRlICJleGNlcHRpb25zLmgiCistI2luY2x1ZGUgImNvbW1h bmQuaCIKKyAjaW5jbHVkZSAiZ2RiY21kLmgiCistI2luY2x1ZGUgIm9ic2VydmVyLmgiCistI2lu Y2x1ZGUgInByb2dzcGFjZS5oIgorICNpbmNsdWRlICJvYmpmaWxlcy5oIgorICNpbmNsdWRlICJw eXRob24uaCIKKyAjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCistCistLyogSW50ZXJuYWwtdXNl IGZsYWcgdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nLgorLSAgIFRoaXMgaXMgdHJ1ZSBp ZiB3ZSBzaG91bGQgYXV0by1sb2FkIHB5dGhvbiBjb2RlIHdoZW4gYW4gb2JqZmlsZSBpcyBvcGVu ZWQsCistICAgZmFsc2Ugb3RoZXJ3aXNlLgorLQorLSAgIEJvdGggYXV0b19sb2FkX3NjcmlwdHMg JiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCBtdXN0IGJlIHRydWUgdG8gZW5hYmxlCistICAgYXV0 by1sb2FkaW5nLgorLQorLSAgIFRoaXMgZmxhZyBleGlzdHMgdG8gZmFjaWxpdGF0ZSBkZWZlcnJp bmcgYXV0by1sb2FkaW5nIGR1cmluZyBzdGFydC11cAorLSAgIHVudGlsIGFmdGVyIC4vLmdkYmlu aXQgaGFzIGJlZW4gcmVhZDsgaXQgbWF5IGF1Z21lbnQgdGhlIHNlYXJjaCBkaXJlY3Rvcmllcwor LSAgIHVzZWQgdG8gZmluZCB0aGUgc2NyaXB0cy4gICovCistaW50IGdkYnB5X2dsb2JhbF9hdXRv X2xvYWQgPSAxOworKyNpbmNsdWRlICJhdXRvLWxvYWQuaCIKKyAKKyAjaWZkZWYgSEFWRV9QWVRI T04KKyAKK0BAIC02MCwzMiArNDQsNiBAQCBpbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7 CisgICAgVGhlIGxlYWRpbmcgYnl0ZSBpcyB0byBhbGxvdyB1cHdhcmQgY29tcGF0aWJsZSBleHRl bnNpb25zLiAgKi8KKyAjZGVmaW5lIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FICIuZGVidWdfZ2Ri X3NjcmlwdHMiCisgCistLyogRm9yIHNjcmlwdHMgc3BlY2lmaWVkIGluIC5kZWJ1Z19nZGJfc2Ny aXB0cywgbXVsdGlwbGUgb2JqZmlsZXMgbWF5IGxvYWQKKy0gICB0aGUgc2FtZSBzY3JpcHQuICBU aGVyZSdzIG5vIHBvaW50IGluIGxvYWRpbmcgdGhlIHNjcmlwdCBtdWx0aXBsZSB0aW1lcywKKy0g ICBhbmQgdGhlcmUgY2FuIGJlIGEgbG90IG9mIG9iamZpbGVzIGFuZCBzY3JpcHRzLCBzbyB3ZSBr ZWVwIHRyYWNrIG9mIHNjcmlwdHMKKy0gICBsb2FkZWQgdGhpcyB3YXkuICAqLworLQorLXN0cnVj dCBhdXRvX2xvYWRfcHNwYWNlX2luZm8KKy17CistICAvKiBGb3IgZWFjaCBwcm9ncmFtIHNwYWNl IHdlIGtlZXAgdHJhY2sgb2YgbG9hZGVkIHNjcmlwdHMuICAqLworLSAgc3RydWN0IGh0YWIgKmxv YWRlZF9zY3JpcHRzOworLQorLSAgLyogTm9uLXplcm8gaWYgd2UndmUgaXNzdWVkIHRoZSB3YXJu aW5nIGFib3V0IGFuIGF1dG8tbG9hZCBzY3JpcHQgbm90IGJlaW5nCistICAgICBmb3VuZC4gIFdl IG9ubHkgd2FudCB0byBpc3N1ZSB0aGlzIHdhcm5pbmcgb25jZS4gICovCistICBpbnQgc2NyaXB0 X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQ7CistfTsKKy0KKy0vKiBPYmplY3RzIG9mIHRoaXMg dHlwZSBhcmUgc3RvcmVkIGluIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2ggdGFibGUuICAqLworLQor LXN0cnVjdCBsb2FkZWRfc2NyaXB0CisteworLSAgLyogTmFtZSBhcyBwcm92aWRlZCBieSB0aGUg b2JqZmlsZS4gICovCistICBjb25zdCBjaGFyICpuYW1lOworLSAgLyogRnVsbCBwYXRoIG5hbWUg b3IgTlVMTCBpZiBzY3JpcHQgd2Fzbid0IGZvdW5kIChvciB3YXMgb3RoZXJ3aXNlCistICAgICBp bmFjY2Vzc2libGUpLiAgKi8KKy0gIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aDsKKy19OworLQorIC8q IFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZzoKKyAg ICBzZXQgYXV0by1sb2FkLXNjcmlwdHMgb258b2ZmCisgICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNo b3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRlZCBzY3JpcHRzIHdoZW4gYW4gb2JqZmlsZQorQEAgLTk3 LDEzNiArNTUsNiBAQCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdAorICAgIFRoZSBmYWN0IHRoYXQgaXQg bGl2ZXMgaGVyZSBpcyBqdXN0IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gICovCisgc3RhdGlj IGludCBhdXRvX2xvYWRfc2NyaXB0cyA9IDE7CisgCistLyogUGVyLXByb2dyYW0tc3BhY2UgZGF0 YSBrZXkuICAqLworLXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZV9kYXRhICphdXRv X2xvYWRfcHNwYWNlX2RhdGE7CistCistc3RhdGljIHZvaWQKKy1hdXRvX2xvYWRfcHNwYWNlX2Rh dGFfY2xlYW51cCAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwgdm9pZCAqYXJnKQorLXsK Ky0gIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87CistCistICBpbmZvID0gcHJv Z3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7CistICBpZiAo aW5mbyAhPSBOVUxMKQorLSAgICB7CistICAgICAgaWYgKGluZm8tPmxvYWRlZF9zY3JpcHRzKQor LQlodGFiX2RlbGV0ZSAoaW5mby0+bG9hZGVkX3NjcmlwdHMpOworLSAgICAgIHhmcmVlIChpbmZv KTsKKy0gICAgfQorLX0KKy0KKy0vKiBHZXQgdGhlIGN1cnJlbnQgYXV0b2xvYWQgZGF0YS4gIElm IG5vbmUgaXMgZm91bmQgeWV0LCBhZGQgaXQgbm93LiAgVGhpcworLSAgIGZ1bmN0aW9uIGFsd2F5 cyByZXR1cm5zIGEgdmFsaWQgb2JqZWN0LiAgKi8KKy0KKy1zdGF0aWMgc3RydWN0IGF1dG9fbG9h ZF9wc3BhY2VfaW5mbyAqCistZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAoc3RydWN0IHByb2dy YW1fc3BhY2UgKnBzcGFjZSkKKy17CistICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpp bmZvOworLQorLSAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRf cHNwYWNlX2RhdGEpOworLSAgaWYgKGluZm8gPT0gTlVMTCkKKy0gICAgeworLSAgICAgIGluZm8g PSBYWkFMTE9DIChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvKTsKKy0gICAgICBzZXRfcHJv Z3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSwgaW5mbyk7Cist ICAgIH0KKy0KKy0gIHJldHVybiBpbmZvOworLX0KKy0KKy0vKiBIYXNoIGZ1bmN0aW9uIGZvciB0 aGUgbG9hZGVkIHNjcmlwdCBoYXNoLiAgKi8KKy0KKy1zdGF0aWMgaGFzaHZhbF90CistaGFzaF9s b2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICpkYXRhKQorLXsKKy0gIGNvbnN0IHN0cnVj dCBsb2FkZWRfc2NyaXB0ICplID0gZGF0YTsKKy0KKy0gIHJldHVybiBodGFiX2hhc2hfc3RyaW5n IChlLT5uYW1lKTsKKy19CistCistLyogRXF1YWxpdHkgZnVuY3Rpb24gZm9yIHRoZSBsb2FkZWQg c2NyaXB0IGhhc2guICAqLworLQorLXN0YXRpYyBpbnQKKy1lcV9sb2FkZWRfc2NyaXB0X2VudHJ5 IChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQorLXsKKy0gIGNvbnN0IHN0cnVjdCBsb2Fk ZWRfc2NyaXB0ICplYSA9IGE7CistICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZWIgPSBi OworLQorLSAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUsIGViLT5uYW1lKSA9PSAwOworLX0KKy0K Ky0vKiBJbml0aWFsaXplIHRoZSB0YWJsZSB0byB0cmFjayBsb2FkZWQgc2NyaXB0cy4KKy0gICBF YWNoIGVudHJ5IGlzIGhhc2hlZCBieSB0aGUgZnVsbCBwYXRoIG5hbWUuICAqLworLQorLXN0YXRp YyB2b2lkCistaW5pdF9sb2FkZWRfc2NyaXB0c19pbmZvIChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj ZV9pbmZvICpwc3BhY2VfaW5mbykKKy17CistICAvKiBDaG9vc2UgMzEgYXMgdGhlIHN0YXJ0aW5n IHNpemUgb2YgdGhlIGhhc2ggdGFibGUsIHNvbWV3aGF0IGFyYml0cmFyaWx5LgorLSAgICAgU3Bh Y2UgZm9yIGVhY2ggZW50cnkgaXMgb2J0YWluZWQgd2l0aCBvbmUgbWFsbG9jIHNvIHdlIGNhbiBm cmVlIHRoZW0KKy0gICAgIGVhc2lseS4gICovCistCistICBwc3BhY2VfaW5mby0+bG9hZGVkX3Nj cmlwdHMgPSBodGFiX2NyZWF0ZSAoMzEsCistCQkJCQkgICAgIGhhc2hfbG9hZGVkX3NjcmlwdF9l bnRyeSwKKy0JCQkJCSAgICAgZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSwKKy0JCQkJCSAgICAgeGZy ZWUpOworLQorLSAgcHNwYWNlX2luZm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVk ID0gRkFMU0U7CistfQorLQorLS8qIFdyYXBwZXIgb24gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0 YSB0byBhbHNvIGFsbG9jYXRlIHRoZSBoYXNoIHRhYmxlCistICAgZm9yIGxvYWRpbmcgc2NyaXB0 cy4gICovCistCistc3RhdGljIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgorLWdldF9h dXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpw c3BhY2UpCisteworLSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKKy0KKy0g IGluZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChwc3BhY2UpOworLSAgaWYgKGluZm8t PmxvYWRlZF9zY3JpcHRzID09IE5VTEwpCistICAgIGluaXRfbG9hZGVkX3NjcmlwdHNfaW5mbyAo aW5mbyk7CistCistICByZXR1cm4gaW5mbzsKKy19CistCistLyogQWRkIHNjcmlwdCBOQU1FIHRv IGhhc2ggdGFibGUgSFRBQi4KKy0gICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdh c24ndCBmb3VuZC4KKy0gICBUaGUgcmVzdWx0IGlzIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxy ZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCistCistc3RhdGljIGludAorLW1heWJlX2FkZF9z Y3JpcHQgKHN0cnVjdCBodGFiICpodGFiLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpm dWxsX3BhdGgpCisteworLSAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKipzbG90LCBlbnRyeTsKKy0g IGludCBpbl9oYXNoX3RhYmxlOworLQorLSAgZW50cnkubmFtZSA9IG5hbWU7CistICBlbnRyeS5m dWxsX3BhdGggPSBmdWxsX3BhdGg7CistICBzbG90ID0gKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoq KSBodGFiX2ZpbmRfc2xvdCAoaHRhYiwgJmVudHJ5LCBJTlNFUlQpOworLSAgaW5faGFzaF90YWJs ZSA9ICpzbG90ICE9IE5VTEw7CistCistICAvKiBJZiB0aGlzIHNjcmlwdCBpcyBub3QgaW4gdGhl IGhhc2ggdGFibGUsIGFkZCBpdC4gICovCistCistICBpZiAoISBpbl9oYXNoX3RhYmxlKQorLSAg ICB7CistICAgICAgY2hhciAqcDsKKy0KKy0gICAgICAvKiBBbGxvY2F0ZSBhbGwgc3BhY2UgaW4g b25lIGNodW5rIHNvIGl0J3MgZWFzaWVyIHRvIGZyZWUuICAqLworLSAgICAgICpzbG90ID0geG1h bGxvYyAoc2l6ZW9mICgqKnNsb3QpCistCQkgICAgICAgKyBzdHJsZW4gKG5hbWUpICsgMQorLQkJ ICAgICAgICsgKGZ1bGxfcGF0aCAhPSBOVUxMID8gKHN0cmxlbiAoZnVsbF9wYXRoKSArIDEpIDog MCkpOworLSAgICAgIHAgPSAoKGNoYXIqKSAqc2xvdCkgKyBzaXplb2YgKCoqc2xvdCk7CistICAg ICAgc3RyY3B5IChwLCBuYW1lKTsKKy0gICAgICAoKnNsb3QpLT5uYW1lID0gcDsKKy0gICAgICBp ZiAoZnVsbF9wYXRoICE9IE5VTEwpCistCXsKKy0JICBwICs9IHN0cmxlbiAocCkgKyAxOworLQkg IHN0cmNweSAocCwgZnVsbF9wYXRoKTsKKy0JICAoKnNsb3QpLT5mdWxsX3BhdGggPSBwOworLQl9 CistICAgICAgZWxzZQorLQkoKnNsb3QpLT5mdWxsX3BhdGggPSBOVUxMOworLSAgICB9CistCist ICByZXR1cm4gaW5faGFzaF90YWJsZTsKKy19CistCisgLyogTG9hZCBzY3JpcHRzIHNwZWNpZmll ZCBpbiBPQkpGSUxFLgorICAgIFNUQVJULEVORCBkZWxpbWl0IGEgYnVmZmVyIGNvbnRhaW5pbmcg YSBsaXN0IG9mIG51bC10ZXJtaW5hdGVkCisgICAgZmlsZSBuYW1lcy4KK0BAIC0zMDEsMjAgKzEy OSwxNyBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsZSAqCisgCisgCSBJ V0JOIGlmIGNvbXBsYWludHMuYyB3ZXJlIG1vcmUgZ2VuZXJhbC1wdXJwb3NlLiAgKi8KKyAKKy0g ICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8tPmxvYWRl ZF9zY3JpcHRzLCBmaWxlLAorKyAgICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2NyaXB0 IChwc3BhY2VfaW5mbywgZmlsZSwKKyAJCQkJCW9wZW5lZCA/IGZ1bGxfcGF0aCA6IE5VTEwpOwor IAorICAgICAgIGlmICghIG9wZW5lZCkKKyAJeworIAkgIC8qIFdlIGRvbid0IHRocm93IGFuIGVy cm9yLCB0aGUgcHJvZ3JhbSBpcyBzdGlsbCBkZWJ1Z2dhYmxlLiAgKi8KKy0JICBpZiAoISBwc3Bh Y2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQpCistCSAgICB7CistCSAg ICAgIHdhcm5pbmcgKF8oIk1pc3NpbmcgYXV0by1sb2FkIHNjcmlwdHMgcmVmZXJlbmNlZCBpbiBz ZWN0aW9uICVzXG5cCisrCSAgaWYgKHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAocHNw YWNlX2luZm8pKQorKwkgICAgd2FybmluZyAoXygiTWlzc2luZyBhdXRvLWxvYWQgc2NyaXB0cyBy ZWZlcmVuY2VkIGluIHNlY3Rpb24gJXNcblwKKyBvZiBmaWxlICVzXG5cCisgVXNlIGBpbmZvIGF1 dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdJyB0byBsaXN0IHRoZW0uIiksCistCQkgICAgICAgR0RC UFlfQVVUT19TRUNUSU9OX05BTUUsIG9iamZpbGUtPm5hbWUpOworLQkgICAgICBwc3BhY2VfaW5m by0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQgPSBUUlVFOworLQkgICAgfQorKwkJ ICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7CisgCX0KKyAgICAg ICBlbHNlCisgCXsKK0BAIC0zNTYsMTE2ICsxODEsNiBAQCBhdXRvX2xvYWRfc2VjdGlvbl9zY3Jp cHRzIChzdHJ1Y3Qgb2JqZmlsCisgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworIH0KKyAKKy0v KiBDbGVhciB0aGUgdGFibGUgb2YgbG9hZGVkIHNlY3Rpb24gc2NyaXB0cy4gICovCistCistc3Rh dGljIHZvaWQKKy1jbGVhcl9zZWN0aW9uX3NjcmlwdHMgKHZvaWQpCisteworLSAgc3RydWN0IHBy b2dyYW1fc3BhY2UgKnBzcGFjZSA9IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZTsKKy0gIHN0cnVjdCBh dXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87CistCistICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9k YXRhIChwc3BhY2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7CistICBpZiAoaW5mbyAhPSBOVUxM ICYmIGluZm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwpCistICAgIHsKKy0gICAgICBodGFiX2Rl bGV0ZSAoaW5mby0+bG9hZGVkX3NjcmlwdHMpOworLSAgICAgIGluZm8tPmxvYWRlZF9zY3JpcHRz ID0gTlVMTDsKKy0gICAgICBpbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9 IEZBTFNFOworLSAgICB9CistfQorLQorLS8qIExvb2sgZm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0 IGFzc29jaWF0ZWQgd2l0aCBPQkpGSUxFIGFuZCBsb2FkIGl0LiAgKi8KKy0KKy1zdGF0aWMgdm9p ZAorLWF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNv bnN0IGNoYXIgKnN1ZmZpeCkKKy17CistICBjaGFyICpyZWFsbmFtZTsKKy0gIGNoYXIgKmZpbGVu YW1lLCAqZGVidWdmaWxlOworLSAgaW50IGxlbjsKKy0gIEZJTEUgKmlucHV0OworLSAgc3RydWN0 IGNsZWFudXAgKmNsZWFudXBzOworLQorLSAgcmVhbG5hbWUgPSBnZGJfcmVhbHBhdGggKG9iamZp bGUtPm5hbWUpOworLSAgbGVuID0gc3RybGVuIChyZWFsbmFtZSk7CistICBmaWxlbmFtZSA9IHht YWxsb2MgKGxlbiArIHN0cmxlbiAoc3VmZml4KSArIDEpOworLSAgbWVtY3B5IChmaWxlbmFtZSwg cmVhbG5hbWUsIGxlbik7CistICBzdHJjcHkgKGZpbGVuYW1lICsgbGVuLCBzdWZmaXgpOworLQor LSAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7CistICBtYWtlX2Ns ZWFudXAgKHhmcmVlLCByZWFsbmFtZSk7CistCistICBpbnB1dCA9IGZvcGVuIChmaWxlbmFtZSwg InIiKTsKKy0gIGRlYnVnZmlsZSA9IGZpbGVuYW1lOworLQorLSAgaWYgKCFpbnB1dCAmJiBkZWJ1 Z19maWxlX2RpcmVjdG9yeSkKKy0gICAgeworLSAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZp bGUgaW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZGlyZWN0b3J5LiAgKi8KKy0gICAgICBkZWJ1 Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGZpbGVuYW1lKQorLQkJCSAgICsgc3RybGVuIChkZWJ1 Z19maWxlX2RpcmVjdG9yeSkgKyAxKTsKKy0gICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVidWdf ZmlsZV9kaXJlY3RvcnkpOworLSAgICAgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBk b24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLworLSAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxl bmFtZSk7CistCistICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKKy0gICAg ICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7CistICAgIH0KKy0KKy0gIGlmICghaW5w dXQgJiYgZ2RiX2RhdGFkaXIpCistICAgIHsKKy0gICAgICAvKiBBbHNvIHRyeSB0aGUgc2FtZSBm aWxlIGluIGEgc3ViZGlyZWN0b3J5IG9mIGdkYidzIGRhdGEKKy0JIGRpcmVjdG9yeS4gICovCist ICAgICAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVuIChnZGJfZGF0YWRpcikgKyBzdHJsZW4g KGZpbGVuYW1lKQorLQkJCSAgICsgc3RybGVuICgiL2F1dG8tbG9hZCIpICsgMSk7CistICAgICAg c3RyY3B5IChkZWJ1Z2ZpbGUsIGdkYl9kYXRhZGlyKTsKKy0gICAgICBzdHJjYXQgKGRlYnVnZmls ZSwgIi9hdXRvLWxvYWQiKTsKKy0gICAgICAvKiBGSUxFTkFNRSBpcyBhYnNvbHV0ZSwgc28gd2Ug ZG9uJ3QgbmVlZCBhICIvIiBoZXJlLiAgKi8KKy0gICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgZmls ZW5hbWUpOworLQorLSAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGRlYnVnZmlsZSk7CistICAg ICAgaW5wdXQgPSBmb3BlbiAoZGVidWdmaWxlLCAiciIpOworLSAgICB9CistCistICBpZiAoaW5w dXQpCistICAgIHsKKy0gICAgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2Vf aW5mbzsKKy0KKy0gICAgICBtYWtlX2NsZWFudXBfZmNsb3NlIChpbnB1dCk7CistCistICAgICAg LyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxv YWQtc2NyaXB0cyIKKy0JIGNhbiBwcmludCBpdC4gICovCistICAgICAgcHNwYWNlX2luZm8gPQor LQlnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1f c3BhY2UpOworLSAgICAgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2Ny aXB0cywgZGVidWdmaWxlLCBkZWJ1Z2ZpbGUpOworLQorLSAgICAgIC8qIFRvIHByZXNlcnZlIGV4 aXN0aW5nIGJlaGF2aW91ciB3ZSBkb24ndCBjaGVjayBmb3Igd2hldGhlciB0aGUKKy0JIHNjcmlw dCB3YXMgYWxyZWFkeSBpbiB0aGUgdGFibGUsIGFuZCBhbHdheXMgbG9hZCBpdC4KKy0JIEl0J3Mg aGlnaGx5IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxvYWQgaXQgdHdpY2UsCistCSBhbmQgdGhl c2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQor LQkgbG9hZHMgYW55d2F5LiAgKi8KKy0gICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2Jq ZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7CistICAgIH0KKy0KKy0gIGRvX2NsZWFu dXBzIChjbGVhbnVwcyk7CistfQorLQorLS8qIFRoaXMgaXMgYSBuZXdfb2JqZmlsZSBvYnNlcnZl ciBjYWxsYmFjayB0byBhdXRvLWxvYWQgc2NyaXB0cy4KKy0KKy0gICBUd28gZmxhdm9ycyBvZiBh dXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBzdXBwb3J0ZWQuCistICAgMSkgYmFzZWQgb24gdGhlIHBh dGggdG8gdGhlIG9iamZpbGUKKy0gICAyKSBmcm9tIC5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9u ICAqLworLQorLXN0YXRpYyB2b2lkCistYXV0b19sb2FkX25ld19vYmpmaWxlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSkKKy17CistICBpZiAoIW9iamZpbGUpCistICAgIHsKKy0gICAgICAvKiBP QkpGSUxFIGlzIE5VTEwgd2hlbiBsb2FkaW5nIGEgbmV3ICJtYWluIiBzeW1ib2wtZmlsZS4gICov CistICAgICAgY2xlYXJfc2VjdGlvbl9zY3JpcHRzICgpOworLSAgICAgIHJldHVybjsKKy0gICAg fQorLQorLSAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKG9iamZpbGUpOworLX0KKy0K KyAvKiBMb2FkIGFueSBhdXRvLWxvYWRlZCBzY3JpcHRzIGZvciBPQkpGSUxFLiAgKi8KKyAKKyB2 b2lkCitAQCAtNDc4LDE0NiArMTkzLDkgQEAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUg KHN0cnVjdCBvYgorICAgICB9CisgfQorIAwKKy0vKiBDb2xsZWN0IHNjcmlwdHMgdG8gYmUgcHJp bnRlZCBpbiBhIHZlYy4gICovCistCistdHlwZWRlZiBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqbG9h ZGVkX3NjcmlwdF9wdHI7CistREVGX1ZFQ19QIChsb2FkZWRfc2NyaXB0X3B0cik7CistCistLyog VHJhdmVyc2FsIGZ1bmN0aW9uIGZvciBodGFiX3RyYXZlcnNlLgorLSAgIENvbGxlY3QgdGhlIGVu dHJ5IGlmIGl0IG1hdGNoZXMgdGhlIHJlZ2V4cC4gICovCistCistc3RhdGljIGludAorLWNvbGxl Y3RfbWF0Y2hpbmdfc2NyaXB0cyAodm9pZCAqKnNsb3QsIHZvaWQgKmluZm8pCisteworLSAgc3Ry dWN0IGxvYWRlZF9zY3JpcHQgKnNjcmlwdCA9ICpzbG90OworLSAgVkVDIChsb2FkZWRfc2NyaXB0 X3B0cikgKipzY3JpcHRzX3B0ciA9IGluZm87CistCistICBpZiAocmVfZXhlYyAoc2NyaXB0LT5u YW1lKSkKKy0gICAgVkVDX3NhZmVfcHVzaCAobG9hZGVkX3NjcmlwdF9wdHIsICpzY3JpcHRzX3B0 ciwgc2NyaXB0KTsKKy0KKy0gIHJldHVybiAxOworLX0KKy0KKy0vKiBQcmludCBTQ1JJUFQuICAq LworLQorLXN0YXRpYyB2b2lkCistcHJpbnRfc2NyaXB0IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAq c2NyaXB0KQorLXsKKy0gIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKKy0g IHN0cnVjdCBjbGVhbnVwICpjaGFpbjsKKy0KKy0gIGNoYWluID0gbWFrZV9jbGVhbnVwX3VpX291 dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsKKy0KKy0gIHVpX291dF9maWVsZF9zdHJp bmcgKHVpb3V0LCAibG9hZGVkIiwgc2NyaXB0LT5mdWxsX3BhdGggPyAiWWVzIiA6ICJNaXNzaW5n Iik7CistICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgInNjcmlwdCIsIHNjcmlwdC0+bmFt ZSk7CistICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOworLQorLSAgLyogSWYgdGhlIG5hbWUg aXNuJ3QgdGhlIGZ1bGwgcGF0aCwgcHJpbnQgaXQgdG9vLiAgKi8KKy0gIGlmIChzY3JpcHQtPmZ1 bGxfcGF0aCAhPSBOVUxMCistICAgICAgJiYgc3RyY21wIChzY3JpcHQtPm5hbWUsIHNjcmlwdC0+ ZnVsbF9wYXRoKSAhPSAwKQorLSAgICB7CistICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXHRm dWxsIG5hbWU6ICIpOworLSAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAiZnVsbF9w YXRoIiwgc2NyaXB0LT5mdWxsX3BhdGgpOworLSAgICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxu Iik7CistICAgIH0KKy0KKy0gIGRvX2NsZWFudXBzIChjaGFpbik7CistfQorLQorLS8qIEhlbHBl ciBmb3IgaW5mb19hdXRvX2xvYWRfc2NyaXB0cyB0byBzb3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUu ICAqLworLQorLXN0YXRpYyBpbnQKKy1zb3J0X3NjcmlwdHNfYnlfbmFtZSAoY29uc3Qgdm9pZCAq YXAsIGNvbnN0IHZvaWQgKmJwKQorLXsKKy0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICph ID0gKihjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgYXA7CistICBjb25zdCBzdHJ1Y3Qg bG9hZGVkX3NjcmlwdCAqYiA9ICooY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKiopIGJwOwor LQorLSAgcmV0dXJuIEZJTEVOQU1FX0NNUCAoYS0+bmFtZSwgYi0+bmFtZSk7CistfQorLQorLS8q ICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiBjb21tYW5kLiAgKi8KKy0KKy1zdGF0aWMgdm9pZAor LWluZm9fYXV0b19sb2FkX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSkKKy17 CistICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7CistICBzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKy0gIHN0cnVjdCBjbGVhbnVwICpzY3Jp cHRfY2hhaW47CistICBWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqc2NyaXB0czsKKy0gIGludCBu cl9zY3JpcHRzOworLQorLSAgZG9udF9yZXBlYXQgKCk7CistCistICBwc3BhY2VfaW5mbyA9IGdl dF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CistCistICBp ZiAocGF0dGVybiAmJiAqcGF0dGVybikKKy0gICAgeworLSAgICAgIGNoYXIgKnJlX2VyciA9IHJl X2NvbXAgKHBhdHRlcm4pOworLQorLSAgICAgIGlmIChyZV9lcnIpCistCWVycm9yIChfKCJJbnZh bGlkIHJlZ2V4cDogJXMiKSwgcmVfZXJyKTsKKy0gICAgfQorLSAgZWxzZQorLSAgICB7CistICAg ICAgcmVfY29tcCAoIiIpOworLSAgICB9CistCistICAvKiBXZSBuZWVkIHRvIGtub3cgdGhlIG51 bWJlciBvZiByb3dzIGJlZm9yZSB3ZSBidWlsZCB0aGUgdGFibGUuCistICAgICBQbHVzIHdlIHdh bnQgdG8gc29ydCB0aGUgc2NyaXB0cyBieSBuYW1lLgorLSAgICAgU28gZmlyc3QgdHJhdmVyc2Ug dGhlIGhhc2ggdGFibGUgY29sbGVjdGluZyB0aGUgbWF0Y2hpbmcgc2NyaXB0cy4gICovCistCist ICBzY3JpcHRzID0gVkVDX2FsbG9jIChsb2FkZWRfc2NyaXB0X3B0ciwgMTApOworLSAgc2NyaXB0 X2NoYWluID0gbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAobG9hZGVkX3NjcmlwdF9wdHIpLCAm c2NyaXB0cyk7CistCistICBpZiAocHNwYWNlX2luZm8gIT0gTlVMTCAmJiBwc3BhY2VfaW5mby0+ bG9hZGVkX3NjcmlwdHMgIT0gTlVMTCkKKy0gICAgeworLSAgICAgIGltbWVkaWF0ZV9xdWl0Kys7 CistICAgICAgLyogUGFzcyBhIHBvaW50ZXIgdG8gc2NyaXB0cyBhcyBWRUNfc2FmZV9wdXNoIGNh biByZWFsbG9jIHNwYWNlLiAgKi8KKy0gICAgICBodGFiX3RyYXZlcnNlX25vcmVzaXplIChwc3Bh Y2VfaW5mby0+bG9hZGVkX3NjcmlwdHMsCistCQkJICAgICAgY29sbGVjdF9tYXRjaGluZ19zY3Jp cHRzLCAmc2NyaXB0cyk7CistICAgICAgaW1tZWRpYXRlX3F1aXQtLTsKKy0gICAgfQorLQorLSAg bnJfc2NyaXB0cyA9IFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKTsKKy0g IG1ha2VfY2xlYW51cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwgMiwgbnJfc2NyaXB0 cywKKy0JCQkJICAgICAgICJBdXRvTG9hZGVkU2NyaXB0c1RhYmxlIik7CistCistICB1aV9vdXRf dGFibGVfaGVhZGVyICh1aW91dCwgNywgdWlfbGVmdCwgImxvYWRlZCIsICJMb2FkZWQiKTsKKy0g IHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3MCwgdWlfbGVmdCwgInNjcmlwdCIsICJTY3Jp cHQiKTsKKy0gIHVpX291dF90YWJsZV9ib2R5ICh1aW91dCk7CistCistICBpZiAobnJfc2NyaXB0 cyA+IDApCistICAgIHsKKy0gICAgICBpbnQgaTsKKy0gICAgICBsb2FkZWRfc2NyaXB0X3B0ciBz Y3JpcHQ7CistCistICAgICAgcXNvcnQgKFZFQ19hZGRyZXNzIChsb2FkZWRfc2NyaXB0X3B0ciwg c2NyaXB0cyksCistCSAgICAgVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMp LAorLQkgICAgIHNpemVvZiAobG9hZGVkX3NjcmlwdF9wdHIpLCBzb3J0X3NjcmlwdHNfYnlfbmFt ZSk7CistICAgICAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKGxvYWRlZF9zY3JpcHRfcHRyLCBz Y3JpcHRzLCBpLCBzY3JpcHQpOyArK2kpCistCXByaW50X3NjcmlwdCAoc2NyaXB0KTsKKy0gICAg fQorLQorLSAgZG9fY2xlYW51cHMgKHNjcmlwdF9jaGFpbik7CistCistICBpZiAobnJfc2NyaXB0 cyA9PSAwKQorLSAgICB7CistICAgICAgaWYgKHBhdHRlcm4gJiYgKnBhdHRlcm4pCistCXVpX291 dF9tZXNzYWdlICh1aW91dCwgMCwgIk5vIGF1dG8tbG9hZCBzY3JpcHRzIG1hdGNoaW5nICVzLlxu IiwKKy0JCQlwYXR0ZXJuKTsKKy0gICAgICBlbHNlCistCXVpX291dF9tZXNzYWdlICh1aW91dCwg MCwgIk5vIGF1dG8tbG9hZCBzY3JpcHRzLlxuIik7CistICAgIH0KKy19CistDAorIHZvaWQKKyBn ZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkKKyB7CistICBhdXRvX2xvYWRfcHNwYWNl X2RhdGEKKy0gICAgPSByZWdpc3Rlcl9wcm9ncmFtX3NwYWNlX2RhdGFfd2l0aF9jbGVhbnVwIChh dXRvX2xvYWRfcHNwYWNlX2RhdGFfY2xlYW51cCk7CistCistICBvYnNlcnZlcl9hdHRhY2hfbmV3 X29iamZpbGUgKGF1dG9fbG9hZF9uZXdfb2JqZmlsZSk7CistCisgICBhZGRfc2V0c2hvd19ib29s ZWFuX2NtZCAoImF1dG8tbG9hZC1zY3JpcHRzIiwgY2xhc3Nfc3VwcG9ydCwKKyAJCQkgICAmYXV0 b19sb2FkX3NjcmlwdHMsIF8oIlwKKyBTZXQgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2Fy ZGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCitAQCAtNjI3LDExICsyMDUsNiBAQCBh biBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LiIpLAorIAkJCSAgIE5VTEwsIE5VTEwsCisg CQkJICAgJnNldGxpc3QsCisgCQkJICAgJnNob3dsaXN0KTsKKy0KKy0gIGFkZF9pbmZvICgiYXV0 by1sb2FkLXNjcmlwdHMiLAorLQkgICAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cywKKy0JICAgIF8o IlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHNjcmlwdHMuXG5cCistVXNh Z2U6IGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0iKSk7CisgfQorIAorICNlbHNlIC8q ICEgSEFWRV9QWVRIT04gKi8KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24v cHl0aG9uLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5 dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjI2OjI5 LjA1NDEyMDE5OSArMDIwMAorQEAgLTI0LDggKzI0LDYgQEAKKyAKKyBzdHJ1Y3QgYnJlYWtwb2lu dF9vYmplY3Q7CisgCistZXh0ZXJuIGludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkOworLQorIGV4 dGVybiB2b2lkIGZpbmlzaF9weXRob25faW5pdGlhbGl6YXRpb24gKHZvaWQpOworIAorIHZvaWQg ZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1hbmQgKHN0cnVjdCBjb21tYW5kX2xpbmUgKik7 CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTEwb2YxMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0x MG9mMTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1OTY5ODIuLjAwMDAw MDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTEwb2YxMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3 MDQgKzAsMCBAQAotW3BhdGNoIzQgNC84XSBzZXQgYXV0by1sb2FkICogbWFpbiBwYXJ0Ci1odHRw Oi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cwMDA4OC5odG1sCi1o dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTEzLmh0bWwKLQot IyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NDk6MTEJMS4xNDExMgotIyMjIHNy Yy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NTE6NDEJMS4xNDExMwotIyMgLTEsNSArMSwx MDEgQEAKLSAyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+Ci0gCi0rCWF1dG8tbG9hZDogSW1wbGVtZW50YXRpb24uCi0rCSogTkVXUzogTmV3IGRl c2NyaXB0aW9ucyBmb3IgImluZm8gYXV0by1sb2FkIiwKLSsJImluZm8gYXV0by1sb2FkIGdkYi1z Y3JpcHRzIiwgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiwKLSsJImluZm8gYXV0by1s b2FkIGxvY2FsLWdkYmluaXQiIGFuZCAiaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIi4KLSsJ RGVwcmVjYXRlICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQtc2NyaXB0 cyBvbnxvZmYiCi0rCWFuZCAic2hvdyBhdXRvLWxvYWQtc2NyaXB0cyIuICBOZXcgZGVzY3JpcHRp b24gZm9yICJzZXQgYXV0by1sb2FkIiwKLSsJInNob3cgYXV0by1sb2FkIiwgInNldCBhdXRvLWxv YWQgZ2RiLXNjcmlwdHMiLAotKwkic2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLCAic2V0IGF1 dG8tbG9hZCBweXRob24tc2NyaXB0cyIsCi0rCSJzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0 cyIsICJzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiLAotKwkic2hvdyBhdXRvLWxvYWQgbG9j YWwtZ2RiaW5pdCIsICJzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiIgYW5kCi0rCSJzaG93IGF1 dG8tbG9hZCBsaWJ0aHJlYWQtZGIiLgotKwkqIGF1dG8tbG9hZC5jOiBSZW1vdmUgaW5jbHVkZSBw eXRob24vcHl0aG9uLWludGVybmFsLmguICBBZGQgaW5jbHVkZXMKLSsJZXhjZXB0aW9ucy5oLCBj bGkvY2xpLXNjcmlwdC5oLCBnZGJjbWQuaCwgY2xpL2NsaS1kZWNvZGUuaCBhbmQKLSsJY2xpL2Ns aS1zZXRzaG93LmguCi0rCShHREJfQVVUT19GSUxFX05BTUUsIHNvdXJjZV9nZGJfc2NyaXB0X2Zv cl9vYmpmaWxlKQotKwkoYXV0b19sb2FkX2dkYl9zY3JpcHRzLCBzaG93X2F1dG9fbG9hZF9nZGJf c2NyaXB0cyk6IE5ldy4KLSsJKGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQpOiBSZW5hbWUgdG8gLi4u Ci0rCShnbG9iYWxfYXV0b19sb2FkKTogLi4uIGhlcmUuCi0rCShhdXRvX2xvYWRfbG9jYWxfZ2Ri aW5pdCwgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUpCi0rCShhdXRvX2xvYWRfbG9j YWxfZ2RiaW5pdF9sb2FkZWQsIHNob3dfYXV0b19sb2FkX2xvY2FsX2dkYmluaXQpCi0rCShzY3Jp cHRfbGFuZ3VhZ2VfZ2RiLCBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSk6IE5ldy4KLSsJ KHN0cnVjdCBsb2FkZWRfc2NyaXB0KTogTmV3IGZpZWxkIGxhbmd1YWdlLgotKwkoaGFzaF9sb2Fk ZWRfc2NyaXB0X2VudHJ5LCBlcV9sb2FkZWRfc2NyaXB0X2VudHJ5KTogQ2FsY3VsYXRlIGFsc28K LSsJTEFOR1VBR0UuCi0rCShtYXliZV9hZGRfc2NyaXB0KTogQWRkIHBhcmFtZXRlciBsYW5ndWFn ZS4gIERyb3AgcmVkdW5kYW50Ci0rCWVudHJ5LmZ1bGxfcGF0aCBpbml0aWFsaXphdGlvbi4gIElu aXRpYWxpemUgZW50cnkubGFuZ3VhZ2UgYW5kCi0rCSgqc2xvdCktPmxhbmd1YWdlLgotKwkoYXV0 b19sb2FkX29iamZpbGVfc2NyaXB0KTogQ2hhbmdlIHBhcmFtZXRlciBzdWZmaXggdG8gbGFuZ3Vh Z2UuCi0rCVJlbW92ZSB0aGUgY2FsbCBvZiBtYXliZV9hZGRfc2NyaXB0LgotKwlDYWxsIGxhbmd1 YWdlLT5zb3VyY2Vfc2NyaXB0X2Zvcl9vYmpmaWxlLgotKwkobG9hZF9hdXRvX3NjcmlwdHNfZm9y X29iamZpbGUsIHN0cnVjdCBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHNfZGF0YSk6Ci0rCU5ldy4K LSsJKGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cyk6IEFkanVzdCBpdCBmb3IKLSsJc3RydWN0IGNv bGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhLgotKwkoYXV0b19sb2FkX2luZm9fc2NyaXB0c19w YXR0ZXJuX25sKTogTmV3IHZhcmlhYmxlLgotKwkoaW5mb19hdXRvX2xvYWRfc2NyaXB0cyk6IFJl bmFtZSB0byAuLi4KLSsJKGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMpOiAuLi4gaGVyZSwgYWRkIHBh cmFtZXRlciBsYW5ndWFnZS4gIEFkanVzdCBpdAotKwlmb3Igc3RydWN0IGNvbGxlY3RfbWF0Y2hp bmdfc2NyaXB0c19kYXRhLgotKwkoaW5mb19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMsIGluZm9fYXV0 b19sb2FkX2xvY2FsX2dkYmluaXQpCi0rCShzZXRfYXV0b19sb2FkX2NtZCwgYXV0b19sb2FkX3Nl dF9jbWRsaXN0X2dldCwgc2hvd19hdXRvX2xvYWRfY21kKQotKwkoYXV0b19sb2FkX3Nob3dfY21k bGlzdF9nZXQsIGluZm9fYXV0b19sb2FkX2NtZCkKLSsJKGF1dG9fbG9hZF9pbmZvX2NtZGxpc3Rf Z2V0KTogTmV3LgotKwkoX2luaXRpYWxpemVfYXV0b19sb2FkKTogTW92ZSBhZGRfaW5mbyBvZiAi YXV0by1sb2FkLXNjcmlwdHMiIHRvCi0rCXB5dGhvbi9weS1hdXRvLWxvYWQuYy4gIE5ldyBpbnN0 YWxsbWVudCBmb3IgInNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLAotKwkiaW5mbyBhdXRvLWxv YWQgZ2RiLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiBhbmQKLSsJImlu Zm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiLgotKwkqIGF1dG8tbG9hZC5oIChzdHJ1Y3Qgc2Ny aXB0X2xhbmd1YWdlKTogTmV3LgotKwkoZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCk6IFJlbmFtZSB0 byAuLi4KLSsJKGdsb2JhbF9hdXRvX2xvYWQpOiAuLi4gaGVyZS4KLSsJKGF1dG9fbG9hZF9sb2Nh bF9nZGJpbml0LCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSkKLSsJKGF1dG9fbG9h ZF9sb2NhbF9nZGJpbml0X2xvYWRlZCk6IE5ldyBkZWNsYXJhdGlvbnMuCi0rCShtYXliZV9hZGRf c2NyaXB0KTogTmV3IHBhcmFtZXRlciBsYW5ndWFnZS4KLSsJKGF1dG9fbG9hZF9vYmpmaWxlX3Nj cmlwdCk6IENoYW5nZSBwYXJhbWV0ZXIgc3VmZml4IHRvIGxhbmd1YWdlLgotKwkobG9hZF9hdXRv X3NjcmlwdHNfZm9yX29iamZpbGUsIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubCkK LSsJKGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMsIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQpCi0r CShhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCwgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQp OiBOZXcKLSsJZGVjbGFyYXRpb25zLgotKwkqIGxpbnV4LXRocmVhZC1kYi5jOiBJbmNsdWRlIGF1 dG8tbG9hZC5oIGFuZCBjdHlwZS5oLgotKwkoYXV0b19sb2FkX3RocmVhZF9kYiwgc2hvd19hdXRv X2xvYWRfdGhyZWFkX2RiKTogTmV3LgotKwkoc3RydWN0IHRocmVhZF9kYl9pbmZvKTogTmV3IGZp ZWxkIGZpbGVuYW1lLgotKwkoZGVsZXRlX3RocmVhZF9kYl9pbmZvKTogQ2FsbCB4ZnJlZSBmb3Ig RklMRU5BTUUuCi0rCSh0cnlfdGhyZWFkX2RiX2xvYWQpOiBJbml0aWFsaXplIEZJTEVOQU1FLgot KwkodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRpciwgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21f ZGlyKTogUmV0dXJuCi0rCWlmICFBVVRPX0xPQURfVEhSRUFEX0RCLgotKwkoaW5mb19hdXRvX2xv YWRfbGlidGhyZWFkX2RiX2NvbXBhcmUsIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYik6IE5l dy4KLSsJKF9pbml0aWFsaXplX3RocmVhZF9kYik6IEluc3RhbGwgYXV0b19sb2FkX3RocmVhZF9k YgotKwlhcyAic2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiIGFuZCBpbnN0YWxsIGluZm9fYXV0 b19sb2FkX2xpYnRocmVhZF9kYgotKwlhcyAiaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIi4K LSsJKiBtYWluLmMgKGNhcHR1cmVkX21haW4pOiBSZW5hbWUgZ2RicHlfZ2xvYmFsX2F1dG9fbG9h ZCB0bwotKwlnbG9iYWxfYXV0b19sb2FkLiAgSW5pdGlhbGl6ZSBBVVRPX0xPQURfTE9DQUxfR0RC SU5JVF9QQVRITkFNRSBhbmQKLSsJQVVUT19MT0FEX0xPQ0FMX0dEQklOSVRfTE9BREVELgotKwko cHJpbnRfZ2RiX2hlbHApOiBFeHRlbmQgdGhlIGhlbHAgZm9yICdsb2NhbCBpbml0IGZpbGUnLgot KwkqIHB5dGhvbi9weS1hdXRvLWxvYWQuYzogUmVtb3ZlIGEgY29tbWVudCBhYm91dCBnZGIgc2Ny aXB0cyBleHRlbnNpb24uCi0rCShHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSk6IEV4dGVuZCB0aGUg Y29tbWVudCBpdCBpcyBQeXRob24gc3BlY2lmaWMuCi0rCShhdXRvX2xvYWRfc2NyaXB0cyk6IFJl bmFtZSB0byAuLi4KLSsJKGF1dG9fbG9hZF9weXRob25fc2NyaXB0cyk6IC4uLiBoZXJlLCB1cGRh dGUgdGhlIGNvbW1lbnQuCi0rCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlKTog TmV3IGRlY2xhcmF0aW9uLgotKwkoc2hvd19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsIHNjcmlw dF9sYW5ndWFnZV9weXRob24pCi0rCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxl KTogTmV3LgotKwkoc291cmNlX3NlY3Rpb25fc2NyaXB0cyk6IFJlZmFjdG9yIHRoZSBjb2RlLgot KwkobG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUpOiBSZW5hbWUgdG8gLi4uCi0rCShnZGJw eV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSk6IC4uLiBoZXJlLCB1cGRhdGUgdGhlCi0r CWF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCBjYWxsZXIsIGRyb3AgR0RCUFlfR0xPQkFMX0FVVE9f TE9BRCBjaGVja2luZy4KLSsJKGluZm9fYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzKTogTmV3Lgot KwkoZ2RicHlfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBOZXcgdmFyaWFibGVzIGNtZCBhbmQgY21k X25hbWUuCi0rCVJlbmFtZSAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIiB0byAic2V0IGF1dG8tbG9h ZCBweXRob24tc2NyaXB0cyIuCi0rCVJlZ2lzdGVyICJzZXQgYXV0by1sb2FkLXNjcmlwdHMiIGFz IGl0cyBkZXByZWNhdGVkIGFsaWFzLiAgUmVnaXN0ZXIKLSsJImluZm8gYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzIi4gIFJlZ2lzdGVyICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiBhcwotKwlpdHMg ZGVwcmVjYXRlZCBhbGlhcy4KLSsJKGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogUmVu YW1lIHRvIC4uLgotKwkoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUpOiAuLi4g aGVyZS4KLSsJKiBweXRob24vcHl0aG9uLmggKGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxl KTogUmVuYW1lIHRvIC4uLgotKwkoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUp OiAuLi4gaGVyZS4KLSsKLSsyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0rCi0gCWF1dG8tbG9hZDogTW92ZSBmaWxlcy4KLSAJKiBNYWtlZmls ZS5pbiAoU0ZJTEVTKTogQWRkIGF1dG8tbG9hZC5jLgotIAkoSEZJTEVTX05PX1NSQ0RJUik6IEFk ZCBhdXRvLWxvYWQuaC4KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9ORVdTCTIwMTItMDQtMTgg MDA6NDI6NTEuMjI2NjgxMDY4ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVX UwkyMDEyLTA0LTE4IDAwOjQ5OjAyLjAzNTczNzY0NCArMDIwMAotQEAgLTI4LDYgKzI4LDQ1IEBA Ci0gICBub3cgc2V0IGEgYnJlYWtwb2ludCBpbiBidWlsZC9nY2MvZXhwci5jLCBidXQgbm90Ci0g ICBidWlsZC9saWJjcHAvZXhwci5jLgotIAotKyogTmV3IGNvbW1hbmRzCi0rCi0rICAqKiAiaW5m byBhdXRvLWxvYWQiIHNob3dzIHN0YXR1cyBvZiBhbGwga2luZHMgb2YgYXV0by1sb2FkZWQgZmls ZXMsCi0rICAgICAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiIHNob3dzIHN0YXR1cyBvZiBh dXRvLWxvYWRpbmcgR0RCIGNhbm5lZAotKyAgICAgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIGZpbGVz LCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiCi0rICAgICBzaG93cyBzdGF0dXMgb2Yg YXV0by1sb2FkaW5nIFB5dGhvbiBzY3JpcHQgZmlsZXMsCi0rICAgICAiaW5mbyBhdXRvLWxvYWQg bG9jYWwtZ2RiaW5pdCIgc2hvd3Mgc3RhdHVzIG9mIGxvYWRpbmcgaW5pdCBmaWxlCi0rICAgICAo LmdkYmluaXQpIGZyb20gY3VycmVudCBkaXJlY3RvcnkgYW5kICJpbmZvIGF1dG8tbG9hZCBsaWJ0 aHJlYWQtZGIiIHNob3dzCi0rICAgICBzdGF0dXMgb2YgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFk IGRlYnVnZ2luZyBzaGFyZWQgbGlicmFyeSBsb2FkaW5nLgotKwotKyAgKiogImluZm8gYXV0by1s b2FkLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9ufG9mZiIKLSsgICAgIGFuZCAi c2hvdyBhdXRvLWxvYWQtc2NyaXB0cyIgY29tbWFuZHMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQsIHVz ZSB0aGVpcgotKyAgICAgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiwgInNldCBhdXRv LWxvYWQgcHl0aG9uLXNjcmlwdHMgb258b2ZmIgotKyAgICAgYW5kICJzaG93IGF1dG8tbG9hZCBw eXRob24tc2NyaXB0cyIgY291bnRlcnBhcnRzIGluc3RlYWQuCi0rCi0rKiBOZXcgb3B0aW9ucwot KwotK3NldCBhdXRvLWxvYWQgb2ZmCi0rICBEaXNhYmxlIGF1dG8tbG9hZGluZyBnbG9iYWxseS4K LSsKLStzaG93IGF1dG8tbG9hZAotKyAgU2hvdyBhdXRvLWxvYWRpbmcgc2V0dGluZyBvZiBhbGwg a2luZHMgb2YgYXV0by1sb2FkZWQgZmlsZXMuCi0rCi0rc2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0 cyBvbnxvZmYKLStzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0cwotKyAgQ29udHJvbCBhdXRvLWxv YWRpbmcgb2YgR0RCIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgZmlsZXMuCi0rCi0rc2V0 IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBvbnxvZmYKLStzaG93IGF1dG8tbG9hZCBweXRob24t c2NyaXB0cwotKyAgQ29udHJvbCBhdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdCBmaWxlcy4K LSsKLStzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQgb258b2ZmCi0rc2hvdyBhdXRvLWxvYWQg bG9jYWwtZ2RiaW5pdAotKyAgQ29udHJvbCBsb2FkaW5nIG9mIGluaXQgZmlsZSAoLmdkYmluaXQp IGZyb20gY3VycmVudCBkaXJlY3RvcnkuCi0rCi0rc2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIg b258b2ZmCi0rc2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCi0rICBDb250cm9sIGF1dG8tbG9h ZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIHNoYXJlZCBsaWJyYXJ5 LgotKwotICogTmV3IGNvbW1hbmQgbGluZSBvcHRpb25zCi0gCi0gLS1pbml0LWNvbW1hbmQ9RklM RSwgLWl4ICAgICAgICAgIExpa2UgLS1jb21tYW5kLCAteCBidXQgZXhlY3V0ZSBpdAotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ0OjI2 Ljk1MDQzNzUyMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5j CTIwMTItMDQtMTggMDA6NDY6NDcuNTU2MDc5NzgwICswMjAwCi1AQCAtMjcsMTkgKzI3LDkyIEBA Ci0gI2luY2x1ZGUgImNvbW1hbmQuaCIKLSAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKLSAjaW5jbHVk ZSAib2JqZmlsZXMuaCIKLS0jaW5jbHVkZSAicHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oIgotKyNp bmNsdWRlICJleGNlcHRpb25zLmgiCi0rI2luY2x1ZGUgImNsaS9jbGktc2NyaXB0LmgiCi0rI2lu Y2x1ZGUgImdkYmNtZC5oIgotKyNpbmNsdWRlICJjbGkvY2xpLWRlY29kZS5oIgotKyNpbmNsdWRl ICJjbGkvY2xpLXNldHNob3cuaCIKLSsKLSsvKiBUaGUgc3VmZml4IG9mIHBlci1vYmpmaWxlIHNj cmlwdHMgdG8gYXV0by1sb2FkIGFzIG5vbi1QeXRob24gY29tbWFuZCBmaWxlcy4KLSsgICBFLmcu IFdoZW4gdGhlIHByb2dyYW0gbG9hZHMgbGliZm9vLnNvLCBsb29rIGZvciBsaWJmb28tZ2RiLmdk Yi4gICovCi0rI2RlZmluZSBHREJfQVVUT19GSUxFX05BTUUgIi1nZGIuZ2RiIgotKwotK3N0YXRp YyB2b2lkIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgRklMRSAqZmlsZSwKLSsJCQkJCSAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLSsKLSsv KiBVc2VyLXNldHRhYmxlIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2Yg R0RCX0FVVE9fRklMRV9OQU1FCi0rICAgc2NyaXB0czoKLSsgICBzZXQgYXV0by1sb2FkIGdkYi1z Y3JpcHRzIG9ufG9mZgotKyAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIGFz c29jaWF0ZWQgc2NyaXB0cyB3aGVuIGFuIG9iamZpbGUKLSsgICBpcyBvcGVuZWQsIGZhbHNlIG90 aGVyd2lzZS4gICovCi0rc3RhdGljIGludCBhdXRvX2xvYWRfZ2RiX3NjcmlwdHMgPSAxOwotKwot Ky8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX2dkYl9zY3JpcHRzIGNvbmZpZ3Vy YXRpb24gdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19hdXRvX2xvYWRfZ2Ri X3NjcmlwdHMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJICAgIHN0 cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKLSt7Ci0rICBmcHJp bnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBv ZiBjb21tYW5kcyAiCi0rCQkJICAgICJzY3JpcHRzIGlzICVzLlxuIiksCi0rCQkgICAgdmFsdWUp OwotK30KLSAKLSAvKiBJbnRlcm5hbC11c2UgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxv YWRpbmcuCi0gICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgcHl0aG9uIGNv ZGUgd2hlbiBhbiBvYmpmaWxlIGlzIG9wZW5lZCwKLSAgICBmYWxzZSBvdGhlcndpc2UuCi0gCi0t ICAgQm90aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2FkIG11c3Qg YmUgdHJ1ZSB0byBlbmFibGUKLSsgICBCb3RoIGF1dG9fbG9hZF9zY3JpcHRzICYmIGdsb2JhbF9h dXRvX2xvYWQgbXVzdCBiZSB0cnVlIHRvIGVuYWJsZQotICAgIGF1dG8tbG9hZGluZy4KLSAKLSAg ICBUaGlzIGZsYWcgZXhpc3RzIHRvIGZhY2lsaXRhdGUgZGVmZXJyaW5nIGF1dG8tbG9hZGluZyBk dXJpbmcgc3RhcnQtdXAKLSAgICB1bnRpbCBhZnRlciAuLy5nZGJpbml0IGhhcyBiZWVuIHJlYWQ7 IGl0IG1heSBhdWdtZW50IHRoZSBzZWFyY2ggZGlyZWN0b3JpZXMKLSAgICB1c2VkIHRvIGZpbmQg dGhlIHNjcmlwdHMuICAqLwotLWludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkID0gMTsKLStpbnQg Z2xvYmFsX2F1dG9fbG9hZCA9IDE7Ci0rCi0rLyogQXV0by1sb2FkIC5nZGJpbml0IGZpbGUgZnJv bSB0aGUgY3VycmVudCBkaXJlY3Rvcnk/ICAqLwotK2ludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5p dCA9IDE7Ci0rCi0rLyogQWJzb2x1dGUgcGF0aG5hbWUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5 IC5nZGJpbml0LCBpZiBpdCBleGlzdHMuICAqLwotK2NoYXIgKmF1dG9fbG9hZF9sb2NhbF9nZGJp bml0X3BhdGhuYW1lID0gTlVMTDsKLSsKLSsvKiBCb29sZWFuIHZhbHVlIGlmIEFVVE9fTE9BRF9M T0NBTF9HREJJTklUX1BBVEhOQU1FIGhhcyBiZWVuIGxvYWRlZC4gICovCi0raW50IGF1dG9fbG9h ZF9sb2NhbF9nZGJpbml0X2xvYWRlZCA9IDA7Ci0rCi0rLyogInNob3ciIGNvbW1hbmQgZm9yIHRo ZSBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KLSsK LStzdGF0aWMgdm9pZAotK3Nob3dfYXV0b19sb2FkX2xvY2FsX2dkYmluaXQgKHN0cnVjdCB1aV9m aWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1l bnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotK3sKLSsgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUs IF8oIkF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQgZnJvbSBjdXJyZW50ICIKLSsJCQkg ICAgImRpcmVjdG9yeSBpcyAlcy5cbiIpLAotKwkJICAgIHZhbHVlKTsKLSt9Ci0rCi0rLyogRGVm aW5pdGlvbiBvZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIEdEQiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNv bW1hbmRzLiAgKi8KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSBzY3Jp cHRfbGFuZ3VhZ2VfZ2RiCi0rICA9IHsgR0RCX0FVVE9fRklMRV9OQU1FLCBzb3VyY2VfZ2RiX3Nj cmlwdF9mb3Jfb2JqZmlsZSB9OwotKwotK3N0YXRpYyB2b2lkCi0rc291cmNlX2dkYl9zY3JpcHRf Zm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotKwkJCSAg ICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkKLSt7Ci0rICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj ZV9pbmZvICpwc3BhY2VfaW5mbzsKLSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7 Ci0rCi0rICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZv IGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKLSsgICAgIGNhbiBwcmludCBpdC4gICovCi0rICBwc3Bh Y2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRf cHJvZ3JhbV9zcGFjZSk7Ci0rICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZW5h bWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7Ci0rCi0rICBUUllfQ0FUQ0ggKGUs IFJFVFVSTl9NQVNLX0FMTCkKLSsgICAgewotKyAgICAgIHNjcmlwdF9mcm9tX2ZpbGUgKGZpbGUs IGZpbGVuYW1lKTsKLSsgICAgfQotKyAgZXhjZXB0aW9uX3ByaW50IChnZGJfc3RkZXJyLCBlKTsK LSt9Ci0gCi0gLyogRm9yIHNjcmlwdHMgc3BlY2lmaWVkIGluIC5kZWJ1Z19nZGJfc2NyaXB0cywg bXVsdGlwbGUgb2JqZmlsZXMgbWF5IGxvYWQKLSAgICB0aGUgc2FtZSBzY3JpcHQuICBUaGVyZSdz IG5vIHBvaW50IGluIGxvYWRpbmcgdGhlIHNjcmlwdCBtdWx0aXBsZSB0aW1lcywKLUBAIC02Miw5 ICsxMzUsMTIgQEAgc3RydWN0IGxvYWRlZF9zY3JpcHQKLSB7Ci0gICAvKiBOYW1lIGFzIHByb3Zp ZGVkIGJ5IHRoZSBvYmpmaWxlLiAgKi8KLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0rCi0gICAvKiBG dWxsIHBhdGggbmFtZSBvciBOVUxMIGlmIHNjcmlwdCB3YXNuJ3QgZm91bmQgKG9yIHdhcyBvdGhl cndpc2UKLSAgICAgIGluYWNjZXNzaWJsZSkuICAqLwotICAgY29uc3QgY2hhciAqZnVsbF9wYXRo OwotKwotKyAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2U7Ci0gfTsKLSAK LSAvKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4gICovCi1AQCAtMTA5LDcgKzE4NSw3IEBA IGhhc2hfbG9hZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9pZCAqZGEKLSB7Ci0gICBjb25zdCBz dHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZSA9IGRhdGE7Ci0gCi0tICByZXR1cm4gaHRhYl9oYXNoX3N0 cmluZyAoZS0+bmFtZSk7Ci0rICByZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAoZS0+bmFtZSkgXiBo dGFiX2hhc2hfcG9pbnRlciAoZS0+bGFuZ3VhZ2UpOwotIH0KLSAKLSAvKiBFcXVhbGl0eSBmdW5j dGlvbiBmb3IgdGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCi1AQCAtMTIwLDcgKzE5Niw3IEBA IGVxX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmEsIGMKLSAgIGNvbnN0IHN0cnVj dCBsb2FkZWRfc2NyaXB0ICplYSA9IGE7Ci0gICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAq ZWIgPSBiOwotIAotLSAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUsIGViLT5uYW1lKSA9PSAwOwot KyAgcmV0dXJuIHN0cmNtcCAoZWEtPm5hbWUsIGViLT5uYW1lKSA9PSAwICYmIGVhLT5sYW5ndWFn ZSA9PSBlYi0+bGFuZ3VhZ2U7Ci0gfQotIAotIC8qIEluaXRpYWxpemUgdGhlIHRhYmxlIHRvIHRy YWNrIGxvYWRlZCBzY3JpcHRzLgotQEAgLTE1NiwyMCArMjMyLDIxIEBAIGdldF9hdXRvX2xvYWRf cHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHMKLSAgIHJldHVybiBpbmZvOwotIH0KLSAKLS0vKiBB ZGQgc2NyaXB0IE5BTUUgdG8gaGFzaCB0YWJsZSBvZiBQU1BBQ0VfSU5GTy4KLS0gICBGVUxMX1BB VEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdhc24ndCBmb3VuZC4KLS0gICBUaGUgcmVzdWx0IGlz IHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCi0r LyogQWRkIHNjcmlwdCBOQU1FIGluIExBTkdVQUdFIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lO Rk8uCi0rICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuICBU aGUgcmVzdWx0IGlzCi0rICAgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBo YXNoIHRhYmxlLiAgKi8KLSAKLSBpbnQKLS1tYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19s b2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywgY29uc3QgY2hhciAqbmFtZSwKLS0JCSAgY29u c3QgY2hhciAqZnVsbF9wYXRoKQotK21heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLAotKwkJICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBj aGFyICpmdWxsX3BhdGgsCi0rCQkgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1 YWdlKQotIHsKLSAgIHN0cnVjdCBodGFiICpodGFiID0gcHNwYWNlX2luZm8tPmxvYWRlZF9zY3Jp cHRzOwotICAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKipzbG90LCBlbnRyeTsKLSAgIGludCBpbl9o YXNoX3RhYmxlOwotIAotICAgZW50cnkubmFtZSA9IG5hbWU7Ci0tICBlbnRyeS5mdWxsX3BhdGgg PSBmdWxsX3BhdGg7Ci0rICBlbnRyeS5sYW5ndWFnZSA9IGxhbmd1YWdlOwotICAgc2xvdCA9IChz dHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKikgaHRhYl9maW5kX3Nsb3QgKGh0YWIsICZlbnRyeSwgSU5T RVJUKTsKLSAgIGluX2hhc2hfdGFibGUgPSAqc2xvdCAhPSBOVUxMOwotIAotQEAgLTE5NCw2ICsy NzEsNyBAQCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjCi0gCX0KLSAg ICAgICBlbHNlCi0gCSgqc2xvdCktPmZ1bGxfcGF0aCA9IE5VTEw7Ci0rICAgICAgKCpzbG90KS0+ bGFuZ3VhZ2UgPSBsYW5ndWFnZTsKLSAgICAgfQotIAotICAgcmV0dXJuIGluX2hhc2hfdGFibGU7 Ci1AQCAtMjE2LDEwICsyOTQsMTIgQEAgY2xlYXJfc2VjdGlvbl9zY3JpcHRzICh2b2lkKQotICAg ICB9Ci0gfQotIAotLS8qIExvb2sgZm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0IGFzc29jaWF0ZWQg d2l0aCBPQkpGSUxFIGFuZCBsb2FkIGl0LiAgKi8KLSsvKiBMb29rIGZvciB0aGUgYXV0by1sb2Fk IHNjcmlwdCBpbiBMQU5HVUFHRSBhc3NvY2lhdGVkIHdpdGggT0JKRklMRSBhbmQgbG9hZAotKyAg IGl0LiAgKi8KLSAKLSB2b2lkCi0tYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqc3VmZml4KQotK2F1dG9fbG9hZF9vYmpmaWxlX3Nj cmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJICBjb25zdCBzdHJ1Y3Qgc2NyaXB0 X2xhbmd1YWdlICpsYW5ndWFnZSkKLSB7Ci0gICBjaGFyICpyZWFsbmFtZTsKLSAgIGNoYXIgKmZp bGVuYW1lLCAqZGVidWdmaWxlOwotQEAgLTIyOSw5ICszMDksOSBAQCBhdXRvX2xvYWRfb2JqZmls ZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCi0gCi0gICByZWFsbmFtZSA9IGdkYl9yZWFscGF0aCAo b2JqZmlsZS0+bmFtZSk7Ci0gICBsZW4gPSBzdHJsZW4gKHJlYWxuYW1lKTsKLS0gIGZpbGVuYW1l ID0geG1hbGxvYyAobGVuICsgc3RybGVuIChzdWZmaXgpICsgMSk7Ci0rICBmaWxlbmFtZSA9IHht YWxsb2MgKGxlbiArIHN0cmxlbiAobGFuZ3VhZ2UtPnN1ZmZpeCkgKyAxKTsKLSAgIG1lbWNweSAo ZmlsZW5hbWUsIHJlYWxuYW1lLCBsZW4pOwotLSAgc3RyY3B5IChmaWxlbmFtZSArIGxlbiwgc3Vm Zml4KTsKLSsgIHN0cmNweSAoZmlsZW5hbWUgKyBsZW4sIGxhbmd1YWdlLT5zdWZmaXgpOwotIAot ICAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7Ci0gICBtYWtlX2Ns ZWFudXAgKHhmcmVlLCByZWFsbmFtZSk7Ci1AQCAtMjY5LDI3ICszNDksMzMgQEAgYXV0b19sb2Fk X29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZQotIAotICAgaWYgKGlucHV0KQotICAgICB7 Ci0tICAgICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0tCi0g ICAgICAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoaW5wdXQpOwotIAotLSAgICAgIC8qIEFkZCB0aGlz IHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkLXNjcmlwdHMi Ci0tCSBjYW4gcHJpbnQgaXQuICAqLwotLSAgICAgIHBzcGFjZV9pbmZvID0KLS0JZ2V0X2F1dG9f bG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLS0g ICAgICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZGVidWdmaWxlLCBkZWJ1Z2ZpbGUp OwotLQotICAgICAgIC8qIFRvIHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW91ciB3ZSBkb24ndCBj aGVjayBmb3Igd2hldGhlciB0aGUKLSAJIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgdGFibGUs IGFuZCBhbHdheXMgbG9hZCBpdC4KLSAJIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgd2UnZCBl dmVyIGxvYWQgaXQgdHdpY2UsCi0gCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8g YmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQotIAkgbG9hZHMgYW55d2F5LiAgKi8KLS0gICAg ICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVn ZmlsZSk7Ci0rICAgICAgbGFuZ3VhZ2UtPnNvdXJjZV9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZp bGUsIGlucHV0LCBkZWJ1Z2ZpbGUpOwotICAgICB9Ci0gCi0gICBkb19jbGVhbnVwcyAoY2xlYW51 cHMpOwotIH0KLSAKLSsvKiBMb2FkIGFueSBhdXRvLWxvYWRlZCBzY3JpcHRzIGZvciBPQkpGSUxF LiAgKi8KLSsKLSt2b2lkCi0rbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlKQotK3sKLSsgIGlmICghZ2xvYmFsX2F1dG9fbG9hZCkKLSsgICAgcmV0 dXJuOwotKwotKyAgaWYgKGF1dG9fbG9hZF9nZGJfc2NyaXB0cykKLSsgICAgYXV0b19sb2FkX29i amZpbGVfc2NyaXB0IChvYmpmaWxlLCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7Ci0rCi0rICBnZGJw eV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7Ci0rfQotKwotIC8qIFRo aXMgaXMgYSBuZXdfb2JqZmlsZSBvYnNlcnZlciBjYWxsYmFjayB0byBhdXRvLWxvYWQgc2NyaXB0 cy4KLSAKLSAgICBUd28gZmxhdm9ycyBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBzdXBwb3J0 ZWQuCi1AQCAtMzE0LDYgKzQwMCwxMyBAQCBhdXRvX2xvYWRfbmV3X29iamZpbGUgKHN0cnVjdCBv YmpmaWxlICpvCi0gdHlwZWRlZiBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqbG9hZGVkX3NjcmlwdF9w dHI7Ci0gREVGX1ZFQ19QIChsb2FkZWRfc2NyaXB0X3B0cik7Ci0gCi0rc3RydWN0IGNvbGxlY3Rf bWF0Y2hpbmdfc2NyaXB0c19kYXRhCi0rewotKyAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikgKipz Y3JpcHRzX3A7Ci0rCi0rICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZTsK LSt9OwotKwotIC8qIFRyYXZlcnNhbCBmdW5jdGlvbiBmb3IgaHRhYl90cmF2ZXJzZS4KLSAgICBD b2xsZWN0IHRoZSBlbnRyeSBpZiBpdCBtYXRjaGVzIHRoZSByZWdleHAuICAqLwotIAotQEAgLTMy MSwxMCArNDE0LDEwIEBAIHN0YXRpYyBpbnQKLSBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMgKHZv aWQgKipzbG90LCB2b2lkICppbmZvKQotIHsKLSAgIHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3Jp cHQgPSAqc2xvdDsKLS0gIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICoqc2NyaXB0c19wdHIgPSBp bmZvOwotKyAgc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhICpkYXRhID0gaW5m bzsKLSAKLS0gIGlmIChyZV9leGVjIChzY3JpcHQtPm5hbWUpKQotLSAgICBWRUNfc2FmZV9wdXNo IChsb2FkZWRfc2NyaXB0X3B0ciwgKnNjcmlwdHNfcHRyLCBzY3JpcHQpOwotKyAgaWYgKHNjcmlw dC0+bGFuZ3VhZ2UgPT0gZGF0YS0+bGFuZ3VhZ2UgJiYgcmVfZXhlYyAoc2NyaXB0LT5uYW1lKSkK LSsgICAgVkVDX3NhZmVfcHVzaCAobG9hZGVkX3NjcmlwdF9wdHIsICpkYXRhLT5zY3JpcHRzX3As IHNjcmlwdCk7Ci0gCi0gICByZXR1cm4gMTsKLSB9Ci1AQCAtMzY2LDEwICs0NTksMTggQEAgc29y dF9zY3JpcHRzX2J5X25hbWUgKGNvbnN0IHZvaWQgKmFwLCBjbwotICAgcmV0dXJuIEZJTEVOQU1F X0NNUCAoYS0+bmFtZSwgYi0+bmFtZSk7Ci0gfQotIAotLS8qICJpbmZvIGF1dG8tbG9hZC1zY3Jp cHRzIiBjb21tYW5kLiAgKi8KLSsvKiBTcGVjaWFsIGludGVybmFsIEdEQiB2YWx1ZSBvZiBhdXRv X2xvYWRfaW5mb19zY3JpcHRzJ3MgUEFUVEVSTiBpZGVudGlmeQotKyAgIHRoZSAiaW5mbyBhdXRv LWxvYWQgWFhYIiBjb21tYW5kIGhhcyBiZWVuIGV4ZWN1dGVkIHRocm91Z2ggdGhlIGdlbmVyYWwK LSsgICAiaW5mbyBhdXRvLWxvYWQiIGludm9jYXRpb24uICBFeHRyYSBuZXdsaW5lIHdpbGwgYmUg cHJpbnRlZCBpZiBuZWVkZWQuICAqLwotK2NoYXIgYXV0b19sb2FkX2luZm9fc2NyaXB0c19wYXR0 ZXJuX25sW10gPSAiIjsKLSsKLSsvKiBJbXBsZW1lbnRhdGlvbiBmb3IgImluZm8gYXV0by1sb2Fk IGdkYi1zY3JpcHRzIgotKyAgIChhbmQgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiku ICBMaXN0IHNjcmlwdHMgaW4gTEFOR1VBR0UgbWF0Y2hpbmcKLSsgICBQQVRURVJOLiAgRlJPTV9U VFkgaXMgdGhlIHVzdWFsIEdEQiBib29sZWFuIGZvciB1c2VyIGludGVyYWN0aXZpdHkuICAqLwot IAotLXN0YXRpYyB2b2lkCi0taW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwg aW50IGZyb21fdHR5KQotK3ZvaWQKLSthdXRvX2xvYWRfaW5mb19zY3JpcHRzIChjaGFyICpwYXR0 ZXJuLCBpbnQgZnJvbV90dHksCi0rCQkJY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFu Z3VhZ2UpCi0gewotICAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OwotICAg c3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci1AQCAtNDAyLDE0ICs1 MDMsMjIgQEAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaQotIAotICAg aWYgKHBzcGFjZV9pbmZvICE9IE5VTEwgJiYgcHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzICE9 IE5VTEwpCi0gICAgIHsKLSsgICAgICBzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2Rh dGEgZGF0YSA9IHsgJnNjcmlwdHMsIGxhbmd1YWdlIH07Ci0rCi0gICAgICAgaW1tZWRpYXRlX3F1 aXQrKzsKLSAgICAgICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3JpcHRzIGFzIFZFQ19zYWZlX3B1 c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAqLwotICAgICAgIGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUg KHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywKLS0JCQkgICAgICBjb2xsZWN0X21hdGNoaW5n X3NjcmlwdHMsICZzY3JpcHRzKTsKLSsJCQkgICAgICBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMs ICZkYXRhKTsKLSAgICAgICBpbW1lZGlhdGVfcXVpdC0tOwotICAgICB9Ci0gCi0gICBucl9zY3Jp cHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpOwotKwotKyAgLyog VGFibGUgaGVhZGVyIHNoaWZ0ZWQgcmlnaHQgYnkgcHJlY2VkaW5nICJnZGItc2NyaXB0czogICIg d291bGQgbm90IG1hdGNoCi0rICAgICBpdHMgY29sdW1ucy4gICovCi0rICBpZiAobnJfc2NyaXB0 cyA+IDAgJiYgcGF0dGVybiA9PSBhdXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmwpCi0r ICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7Ci0rCi0gICBtYWtlX2NsZWFudXBfdWlfb3V0 X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDIsIG5yX3NjcmlwdHMsCi0gCQkJCSAgICAgICAiQXV0 b0xvYWRlZFNjcmlwdHNUYWJsZSIpOwotIAotQEAgLTQ0MSw2ICs1NTAsMjkgQEAgaW5mb19hdXRv X2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaQotICAgICB9Ci0gfQotIAotKy8qIFdyYXBw ZXIgZm9yICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIuICAqLwotKwotK3N0YXRpYyB2b2lk Ci0raW5mb19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0 eSkKLSt7Ci0rICBhdXRvX2xvYWRfaW5mb19zY3JpcHRzIChwYXR0ZXJuLCBmcm9tX3R0eSwgJnNj cmlwdF9sYW5ndWFnZV9nZGIpOwotK30KLSsKLSsvKiBJbXBsZW1lbnQgJ2luZm8gYXV0by1sb2Fk IGxvY2FsLWdkYmluaXQnLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2luZm9fYXV0b19sb2FkX2xv Y2FsX2dkYmluaXQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBpZiAoYXV0b19s b2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPT0gTlVMTCkKLSsgICAgcHJpbnRmX2ZpbHRlcmVk IChfKCJMb2NhbCAuZ2RiaW5pdCBmaWxlIHdhcyBub3QgZm91bmQuXG4iKSk7Ci0rICBlbHNlIGlm IChhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQpCi0rICAgIHByaW50Zl9maWx0ZXJlZCAo XygiTG9jYWwgLmdkYmluaXQgZmlsZSBcIiVzXCIgaGFzIGJlZW4gbG9hZGVkLlxuIiksCi0rCQkg ICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lKTsKLSsgIGVsc2UKLSsgICAgcHJp bnRmX2ZpbHRlcmVkIChfKCJMb2NhbCAuZ2RiaW5pdCBmaWxlIFwiJXNcIiBoYXMgbm90IGJlZW4g bG9hZGVkLlxuIiksCi0rCQkgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lKTsK LSt9Ci0rCi0gLyogUmV0dXJuIG5vbi16ZXJvIGlmIFNDUklQVF9OT1RfRk9VTkRfV0FSTklOR19Q UklOVEVEIG9mIFBTUEFDRV9JTkZPIHdhcyB1bnNldAotICAgIGJlZm9yZSBjYWxsaW5nIHRoaXMg ZnVuY3Rpb24uICBBbHdheXMgc2V0IFNDUklQVF9OT1RfRk9VTkRfV0FSTklOR19QUklOVEVECi0g ICAgb2YgUFNQQUNFX0lORk8uICAqLwotQEAgLTQ1NSw2ICs1ODcsMTMyIEBAIHNjcmlwdF9ub3Rf Zm91bmRfd2FybmluZ19wcmludCAoc3RydWN0IGEKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotIAot Ky8qIFRoZSBvbmx5IHZhbGlkICJzZXQgYXV0by1sb2FkIiBhcmd1bWVudCBpcyBvZmZ8MHxub3xk aXNhYmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3NldF9hdXRvX2xvYWRfY21kIChjaGFyICph cmdzLCBpbnQgZnJvbV90dHkpCi0rewotKyAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmxpc3Q7 Ci0rICBzaXplX3QgbGVuZ3RoOwotKwotKyAgLyogU2VlIHBhcnNlX2JpbmFyeV9vcGVyYXRpb24g aW4gdXNlIGJ5IHRoZSBzdWItY29tbWFuZHMuICAqLwotKwotKyAgbGVuZ3RoID0gYXJncyA/IHN0 cmxlbiAoYXJncykgOiAwOwotKwotKyAgd2hpbGUgKGxlbmd0aCA+IDAgJiYgKGFyZ3NbbGVuZ3Ro IC0gMV0gPT0gJyAnIHx8IGFyZ3NbbGVuZ3RoIC0gMV0gPT0gJ1x0JykpCi0rICAgIGxlbmd0aC0t OwotKwotKyAgaWYgKGxlbmd0aCA9PSAwIHx8IChzdHJuY21wIChhcmdzLCAib2ZmIiwgbGVuZ3Ro KSAhPSAwCi0rCQkgICAgICAmJiBzdHJuY21wIChhcmdzLCAiMCIsIGxlbmd0aCkgIT0gMAotKwkJ ICAgICAgJiYgc3RybmNtcCAoYXJncywgIm5vIiwgbGVuZ3RoKSAhPSAwCi0rCQkgICAgICAmJiBz dHJuY21wIChhcmdzLCAiZGlzYWJsZSIsIGxlbmd0aCkgIT0gMCkpCi0rICAgIGVycm9yIChfKCJW YWxpZCBpcyBvbmx5IGdsb2JhbCAnc2V0IGF1dG8tbG9hZCBubyc7ICIKLSsJICAgICAib3RoZXJ3 aXNlIGNoZWNrIHRoZSBhdXRvLWxvYWQgc3ViLWNvbW1hbmRzLiIpKTsKLSsKLSsgIGZvciAobGlz dCA9ICphdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpOyBsaXN0ICE9IE5VTEw7IGxpc3QgPSBs aXN0LT5uZXh0KQotKyAgICBpZiAobGlzdC0+dmFyX3R5cGUgPT0gdmFyX2Jvb2xlYW4pCi0rICAg ICAgewotKwlnZGJfYXNzZXJ0IChsaXN0LT50eXBlID09IHNldF9jbWQpOwotKwlkb19zZXRzaG93 X2NvbW1hbmQgKGFyZ3MsIGZyb21fdHR5LCBsaXN0KTsKLSsgICAgICB9Ci0rfQotKwotKy8qIElu aXRpYWxpemUgInNldCBhdXRvLWxvYWQgIiBjb21tYW5kcyBwcmVmaXggYW5kIHJldHVybiBpdC4g ICovCi0rCi0rc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKioKLSthdXRvX2xvYWRfc2V0X2NtZGxp c3RfZ2V0ICh2b2lkKQotK3sKLSsgIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqcmV0 dmFsOwotKwotKyAgaWYgKHJldHZhbCA9PSBOVUxMKQotKyAgICBhZGRfcHJlZml4X2NtZCAoImF1 dG8tbG9hZCIsIGNsYXNzX21haW50ZW5hbmNlLCBzZXRfYXV0b19sb2FkX2NtZCwgXygiXAotK0F1 dG8tbG9hZGluZyBzcGVjaWZpYyBzZXR0aW5ncy5cblwKLStDb25maWd1cmUgdmFyaW91cyBhdXRv LWxvYWQtc3BlY2lmaWMgdmFyaWFibGVzIHN1Y2ggYXNcblwKLSthdXRvbWF0aWMgbG9hZGluZyBv ZiBQeXRob24gc2NyaXB0cy4iKSwKLSsJCSAgICAmcmV0dmFsLCAic2V0IGF1dG8tbG9hZCAiLAot KwkJICAgIDEvKmFsbG93LXVua25vd24qLywgJnNldGxpc3QpOwotKwotKyAgcmV0dXJuICZyZXR2 YWw7Ci0rfQotKwotKy8qIENvbW1hbmQgInNob3cgYXV0by1sb2FkIiBkaXNwbGF5cyBzdW1tYXJ5 IG9mIGFsbCB0aGUgY3VycmVudAotKyAgICJzaG93IGF1dG8tbG9hZCAiIHNldHRpbmdzLiAgKi8K LSsKLStzdGF0aWMgdm9pZAotK3Nob3dfYXV0b19sb2FkX2NtZCAoY2hhciAqYXJncywgaW50IGZy b21fdHR5KQotK3sKLSsgIGNtZF9zaG93X2xpc3QgKCphdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dl dCAoKSwgZnJvbV90dHksICIiKTsKLSt9Ci0rCi0rLyogSW5pdGlhbGl6ZSAic2hvdyBhdXRvLWxv YWQgIiBjb21tYW5kcyBwcmVmaXggYW5kIHJldHVybiBpdC4gICovCi0rCi0rc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKioKLSthdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAodm9pZCkKLSt7Ci0r ICBzdGF0aWMgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnJldHZhbDsKLSsKLSsgIGlmIChyZXR2 YWwgPT0gTlVMTCkKLSsgICAgYWRkX3ByZWZpeF9jbWQgKCJhdXRvLWxvYWQiLCBjbGFzc19tYWlu dGVuYW5jZSwgc2hvd19hdXRvX2xvYWRfY21kLCBfKCJcCi0rU2hvdyBhdXRvLWxvYWRpbmcgc3Bl Y2lmaWMgc2V0dGluZ3MuXG5cCi0rU2hvdyBjb25maWd1cmF0aW9uIG9mIHZhcmlvdXMgYXV0by1s b2FkLXNwZWNpZmljIHZhcmlhYmxlcyBzdWNoIGFzXG5cCi0rYXV0b21hdGljIGxvYWRpbmcgb2Yg UHl0aG9uIHNjcmlwdHMuIiksCi0rCQkgICAgJnJldHZhbCwgInNob3cgYXV0by1sb2FkICIsCi0r CQkgICAgMC8qYWxsb3ctdW5rbm93biovLCAmc2hvd2xpc3QpOwotKwotKyAgcmV0dXJuICZyZXR2 YWw7Ci0rfQotKwotKy8qIENvbW1hbmQgImluZm8gYXV0by1sb2FkIiBkaXNwbGF5cyB3aGV0aGVy IHRoZSB2YXJpb3VzIGF1dG8tbG9hZCBmaWxlcyBoYXZlCi0rICAgYmVlbiBsb2FkZWQuICBUaGlz IGlzIHJlaW1wbGVtZW50YXRpb24gb2YgY21kX3Nob3dfbGlzdCB3aGljaCBpbnNlcnRzCi0rICAg bmV3bGluZXMgYXQgcHJvcGVyIHBsYWNlcy4gICovCi0rCi0rc3RhdGljIHZvaWQKLStpbmZvX2F1 dG9fbG9hZF9jbWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqbGlzdDsKLSsgIHN0cnVjdCBjbGVhbnVwICppbmZvbGlzdF9jaGFpbjsK LSsgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKLSsKLSsgIGluZm9saXN0 X2NoYWluID0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCAiaW5m b2xpc3QiKTsKLSsKLSsgIGZvciAobGlzdCA9ICphdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAo KTsgbGlzdCAhPSBOVUxMOyBsaXN0ID0gbGlzdC0+bmV4dCkKLSsgICAgewotKyAgICAgIHN0cnVj dCBjbGVhbnVwICpvcHRpb25fY2hhaW4KLSsJPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2Jl Z2luX2VuZCAodWlvdXQsICJvcHRpb24iKTsKLSsKLSsgICAgICBnZGJfYXNzZXJ0ICghbGlzdC0+ cHJlZml4bGlzdCk7Ci0rICAgICAgZ2RiX2Fzc2VydCAobGlzdC0+dHlwZSA9PSBub3Rfc2V0X2Nt ZCk7Ci0rCi0rICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJuYW1lIiwgbGlzdC0+ bmFtZSk7Ci0rICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiOiAgIik7Ci0rICAgICAgY21kX2Z1 bmMgKGxpc3QsIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubCwgZnJvbV90dHkpOwot KwotKyAgICAgIC8qIENsb3NlIHRoZSB0dXBsZS4gICovCi0rICAgICAgZG9fY2xlYW51cHMgKG9w dGlvbl9jaGFpbik7Ci0rICAgIH0KLSsKLSsgIC8qIENsb3NlIHRoZSB0dXBsZS4gICovCi0rICBk b19jbGVhbnVwcyAoaW5mb2xpc3RfY2hhaW4pOwotK30KLSsKLSsvKiBJbml0aWFsaXplICJpbmZv IGF1dG8tbG9hZCAiIGNvbW1hbmRzIHByZWZpeCBhbmQgcmV0dXJuIGl0LiAgKi8KLSsKLStzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqKgotK2F1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICh2b2lk KQotK3sKLSsgIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqcmV0dmFsOwotKwotKyAg aWYgKHJldHZhbCA9PSBOVUxMKQotKyAgICBhZGRfcHJlZml4X2NtZCAoImF1dG8tbG9hZCIsIGNs YXNzX2luZm8sIGluZm9fYXV0b19sb2FkX2NtZCwgXygiXAotK1ByaW50IGN1cnJlbnQgc3RhdHVz IG9mIGF1dG8tbG9hZGVkIGZpbGVzLlxuXAotK1ByaW50IHdoZXRoZXIgdmFyaW91cyBmaWxlcyBs aWtlIFB5dGhvbiBzY3JpcHRzIG9yIC5nZGJpbml0IGZpbGVzIGhhdmUgYmVlblxuXAotK2ZvdW5k IGFuZC9vciBsb2FkZWQuIiksCi0rCQkgICAgJnJldHZhbCwgImluZm8gYXV0by1sb2FkICIsCi0r CQkgICAgMC8qYWxsb3ctdW5rbm93biovLCAmaW5mb2xpc3QpOwotKwotKyAgcmV0dXJuICZyZXR2 YWw7Ci0rfQotKwotIHZvaWQgX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKTsKLSAKLSB2b2lk Ci1AQCAtNDY1LDggKzcyMywzOCBAQCBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpCi0gCi0g ICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKGF1dG9fbG9hZF9uZXdfb2JqZmlsZSk7Ci0g Ci0tICBhZGRfaW5mbyAoImF1dG8tbG9hZC1zY3JpcHRzIiwKLS0JICAgIGluZm9fYXV0b19sb2Fk X3NjcmlwdHMsCi0tCSAgICBfKCJQcmludCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRl ZCBzY3JpcHRzLlxuXAotLVVzYWdlOiBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdIikp OwotKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJnZGItc2NyaXB0cyIsIGNsYXNzX3N1cHBv cnQsCi0rCQkJICAgJmF1dG9fbG9hZF9nZGJfc2NyaXB0cywgXygiXAotK0VuYWJsZSBvciBkaXNh YmxlIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMu IiksIF8oIlwKLStTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMg b2YgY29tbWFuZHMgc2NyaXB0cyBpcyBlbmFibGVkLiIpLAotKwkJCSAgIF8oIlwKLStJZiBlbmFi bGVkLCBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIGFyZSBsb2FkZWQgd2hlbiB0aGUgZGVi dWdnZXIgcmVhZHNcblwKLSthbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LlxuXAotK1Ro aXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJp b3JzLiIpLAotKwkJCSAgIE5VTEwsIHNob3dfYXV0b19sb2FkX2dkYl9zY3JpcHRzLAotKwkJCSAg IGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCksCi0rCQkJICAgYXV0b19sb2FkX3Nob3dfY21k bGlzdF9nZXQgKCkpOwotKwotKyAgYWRkX2NtZCAoImdkYi1zY3JpcHRzIiwgY2xhc3NfaW5mbywg aW5mb19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMsCi0rCSAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1 dG9tYXRpY2FsbHkgbG9hZGVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcy5cblwKLStVc2FnZTogaW5m byBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMgW1JFR0VYUF0iKSwKLSsJICAgYXV0b19sb2FkX2luZm9f Y21kbGlzdF9nZXQgKCkpOwotKwotKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJsb2NhbC1n ZGJpbml0IiwgY2xhc3Nfc3VwcG9ydCwKLSsJCQkgICAmYXV0b19sb2FkX2xvY2FsX2dkYmluaXQs IF8oIlwKLStFbmFibGUgb3IgZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0 IGluIGN1cnJlbnQgZGlyZWN0b3J5LiIpLCBfKCJcCi0rU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGlu ZyAuZ2RiaW5pdCBzY3JpcHQgaW4gY3VycmVudCBkaXJlY3RvcnkgaXMgZW5hYmxlZC4iKSwKLSsJ CQkgICBfKCJcCi0rSWYgZW5hYmxlZCwgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBhcmUg bG9hZGVkIHdoZW4gZGVidWdnZXIgc3RhcnRzXG5cCi0rZnJvbSAuZ2RiaW5pdCBmaWxlIGluIGN1 cnJlbnQgZGlyZWN0b3J5LiAgU3VjaCBmaWxlcyBhcmUgZGVwcmVjYXRlZCxcblwKLSt1c2UgYSBz Y3JpcHQgYXNzb2NpYXRlZCB3aXRoIGluZmVyaW9yIGV4ZWN1dGFibGUgZmlsZSBpbnN0ZWFkLlxu XAotK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQg aW5mZXJpb3JzLiIpLAotKwkJCSAgIE5VTEwsIHNob3dfYXV0b19sb2FkX2xvY2FsX2dkYmluaXQs Ci0rCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKLSsJCQkgICBhdXRvX2xvYWRf c2hvd19jbWRsaXN0X2dldCAoKSk7Ci0rCi0rICBhZGRfY21kICgibG9jYWwtZ2RiaW5pdCIsIGNs YXNzX2luZm8sIGluZm9fYXV0b19sb2FkX2xvY2FsX2dkYmluaXQsCi0rCSAgIF8oIlByaW50IHdo ZXRoZXIgY3VycmVudCBkaXJlY3RvcnkgLmdkYmluaXQgZmlsZSBoYXMgYmVlbiBsb2FkZWQuXG5c Ci0rVXNhZ2U6IGluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiKSwKLSsJICAgYXV0b19sb2Fk X2luZm9fY21kbGlzdF9nZXQgKCkpOwotIH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9hdXRvLWxvYWQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9n ZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0NDoyNi45NTE0Mzc1MTcgKzAyMDAKLSsrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1 NjA3OTc4MCArMDIwMAotQEAgLTIyLDE1ICsyMiwzNiBAQAotIAotIHN0cnVjdCBwcm9ncmFtX3Nw YWNlOwotIAotLWV4dGVybiBpbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZDsKLStzdHJ1Y3Qgc2Ny aXB0X2xhbmd1YWdlCi0rewotKyAgY29uc3QgY2hhciAqc3VmZml4OwotKwotKyAgdm9pZCAoKnNv dXJjZV9zY3JpcHRfZm9yX29iamZpbGUpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAq ZmlsZSwKLSsJCQkJICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSk7Ci0rfTsKLSsKLStleHRlcm4g aW50IGdsb2JhbF9hdXRvX2xvYWQ7Ci0rCi0rZXh0ZXJuIGludCBhdXRvX2xvYWRfbG9jYWxfZ2Ri aW5pdDsKLStleHRlcm4gY2hhciAqYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWU7Ci0r ZXh0ZXJuIGludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQ7Ci0gCi0gZXh0ZXJuIHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgotICAgZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0 YV9mb3JfbG9hZGluZyAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSk7Ci0gZXh0ZXJuIGlu dCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2Vf aW5mbywKLS0JCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCk7 Ci0rCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgsCi0rCQkJ ICAgICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7Ci0gZXh0ZXJuIHZv aWQgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLS0J CQkJICAgICAgY29uc3QgY2hhciAqc3VmZml4KTsKLSsJCQkJICAgICAgY29uc3Qgc3RydWN0IHNj cmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOwotK2V4dGVybiB2b2lkIGxvYWRfYXV0b19zY3JpcHRz X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7Ci0gZXh0ZXJuIGludAotICAg c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9p bmZvICpwc3BhY2VfaW5mbyk7Ci0rZXh0ZXJuIGNoYXIgYXV0b19sb2FkX2luZm9fc2NyaXB0c19w YXR0ZXJuX25sW107Ci0rZXh0ZXJuIHZvaWQgYXV0b19sb2FkX2luZm9fc2NyaXB0cyAoY2hhciAq cGF0dGVybiwgaW50IGZyb21fdHR5LAotKwkJCQkgICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5n dWFnZSAqbGFuZ3VhZ2UpOwotKwotK2V4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1 dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKHZvaWQpOwotK2V4dGVybiBzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqKmF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICh2b2lkKTsKLStleHRlcm4gc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAodm9pZCk7 Ci0gCi0gI2VuZGlmIC8qIEFVVE9fTE9BRF9IICovCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvbGludXgtdGhyZWFkLWRiLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIw MTIwLm9yaWcvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDEtMDQgMDk6MTc6MDUuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMJ MjAxMi0wNC0xOCAwMDo0Njo0Ny41NTcwNzk3NzcgKzAyMDAKLUBAIC00MCw4ICs0MCwxMCBAQAot ICNpbmNsdWRlICJvYnNlcnZlci5oIgotICNpbmNsdWRlICJsaW51eC1uYXQuaCIKLSAjaW5jbHVk ZSAibGludXgtcHJvY2ZzLmgiCi0rI2luY2x1ZGUgImF1dG8tbG9hZC5oIgotIAotICNpbmNsdWRl IDxzaWduYWwuaD4KLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSAKLSAjaWZkZWYgSEFWRV9HTlVfTElC Q19WRVJTSU9OX0gKLSAjaW5jbHVkZSA8Z251L2xpYmMtdmVyc2lvbi5oPgotQEAgLTc1LDYgKzc3 LDIxIEBACi0gCi0gc3RhdGljIGNoYXIgKmxpYnRocmVhZF9kYl9zZWFyY2hfcGF0aDsKLSAKLSsv KiBTZXQgdG8gbm9uLXplcm8gaWYgdGhyZWFkX2RiIGF1dG8tbG9hZGluZyBpcyBlbmFibGVkCi0r ICAgYnkgdGhlICJzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiIgY29tbWFuZC4gICovCi0rc3Rh dGljIGludCBhdXRvX2xvYWRfdGhyZWFkX2RiID0gMTsKLSsKLSsvKiAic2hvdyIgY29tbWFuZCBm b3IgdGhlIGF1dG9fbG9hZF90aHJlYWRfZGIgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCi0r Ci0rc3RhdGljIHZvaWQKLStzaG93X2F1dG9fbG9hZF90aHJlYWRfZGIgKHN0cnVjdCB1aV9maWxl ICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywg Y29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0 by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIGxpYnRocmVhZF9kYiAiCi0rCQkJICAgICJp cyAlcy5cbiIpLAotKwkJICAgIHZhbHVlKTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBzZXRfbGli dGhyZWFkX2RiX3NlYXJjaF9wYXRoIChjaGFyICppZ25vcmVkLCBpbnQgZnJvbV90dHksCi0gCQkJ ICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCi1AQCAtMTE5LDYgKzEzNiwxMCBAQCBz dHJ1Y3QgdGhyZWFkX2RiX2luZm8KLSAgIC8qIEhhbmRsZSBmcm9tIGRsb3BlbiBmb3IgbGlidGhy ZWFkX2RiLnNvLiAgKi8KLSAgIHZvaWQgKmhhbmRsZTsKLSAKLSsgIC8qIEFic29sdXRlIHBhdGhu YW1lIGZyb20gZ2RiX3JlYWxwYXRoIHRvIGRpc2sgZmlsZSB1c2VkIGZvciBkbG9wZW4taW5nCi0r ICAgICBIQU5ETEUuICBJdCBtYXkgYmUgTlVMTCBmb3Igc3lzdGVtIGxpYnJhcnkuICAqLwotKyAg Y2hhciAqZmlsZW5hbWU7Ci0rCi0gICAvKiBTdHJ1Y3R1cmUgdGhhdCBpZGVudGlmaWVzIHRoZSBj aGlsZCBwcm9jZXNzIGZvciB0aGUKLSAgICAgIDxwcm9jX3NlcnZpY2UuaD4gaW50ZXJmYWNlLiAg Ki8KLSAgIHN0cnVjdCBwc19wcm9jaGFuZGxlIHByb2NfaGFuZGxlOwotQEAgLTI0OCw2ICsyNjks OCBAQCBkZWxldGVfdGhyZWFkX2RiX2luZm8gKGludCBwaWQpCi0gICBpZiAoaW5mby0+aGFuZGxl ICE9IE5VTEwpCi0gICAgIGRsY2xvc2UgKGluZm8tPmhhbmRsZSk7Ci0gCi0rICB4ZnJlZSAoaW5m by0+ZmlsZW5hbWUpOwotKwotICAgaWYgKGluZm9fcHJldikKLSAgICAgaW5mb19wcmV2LT5uZXh0 ID0gaW5mby0+bmV4dDsKLSAgIGVsc2UKLUBAIC04MDcsNiArODMwLDEwIEBAIHRyeV90aHJlYWRf ZGJfbG9hZCAoY29uc3QgY2hhciAqbGlicmFyeSkKLSAKLSAgIGluZm8gPSBhZGRfdGhyZWFkX2Ri X2luZm8gKGhhbmRsZSk7Ci0gCi0rICAvKiBEbyBub3Qgc2F2ZSBzeXN0ZW0gbGlicmFyeSBuYW1l LCB0aGF0IG9uZSBpcyBhbHdheXMgdHJ1c3RlZC4gICovCi0rICBpZiAoc3RyY2hyIChsaWJyYXJ5 LCAnLycpICE9IE5VTEwpCi0rICAgIGluZm8tPmZpbGVuYW1lID0gZ2RiX3JlYWxwYXRoIChsaWJy YXJ5KTsKLSsKLSAgIGlmICh0cnlfdGhyZWFkX2RiX2xvYWRfMSAoaW5mbykpCi0gICAgIHJldHVy biAxOwotIAotQEAgLTg1Niw2ICs4ODMsOSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGly ICh2b2lkKQotIHsKLSAgIHN0cnVjdCBvYmpmaWxlICpvYmo7Ci0gCi0rICBpZiAoIWF1dG9fbG9h ZF90aHJlYWRfZGIpCi0rICAgIHJldHVybiAwOwotKwotICAgQUxMX09CSkZJTEVTIChvYmopCi0g ICAgIGlmIChsaWJwdGhyZWFkX25hbWVfcCAob2JqLT5uYW1lKSkKLSAgICAgICB7Ci1AQCAtODk1 LDYgKzkyNSw5IEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2RpciAoY29uc3QgY2hhcgotICAg Y2hhciAqcGF0aDsKLSAgIGludCByZXN1bHQ7Ci0gCi0rICBpZiAoIWF1dG9fbG9hZF90aHJlYWRf ZGIpCi0rICAgIHJldHVybiAwOwotKwotICAgcGF0aCA9IHhtYWxsb2MgKGRpcl9sZW4gKyAxICsg c3RybGVuIChMSUJUSFJFQURfREJfU08pICsgMSk7Ci0gICBjbGVhbnVwID0gbWFrZV9jbGVhbnVw ICh4ZnJlZSwgcGF0aCk7Ci0gCi1AQCAtMTgwMiw2ICsxODM1LDE1MCBAQCB0aHJlYWRfZGJfcmVz dW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCi0gICBiZW5lYXRoLT50b19yZXN1bWUgKGJlbmVh dGgsIHB0aWQsIHN0ZXAsIHNpZ25vKTsKLSB9Ci0gCi0rLyogcXNvcnQgaGVscGVyIGZ1bmN0aW9u IGZvciBpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIsIHNvcnQgdGhlCi0rICAgdGhyZWFkX2Ri X2luZm8gcG9pbnRlcnMgcHJpbWFyaWx5IGJ5IHRoZWlyIEZJTEVOQU1FIGFuZCBzZWNvbmRhcmls eSBieSB0aGVpcgotKyAgIFBJRCwgYm90aCBpbiBhc2NlbmRpbmcgb3JkZXIuICAqLwotKwotK3N0 YXRpYyBpbnQKLStpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGJfY29tcGFyZSAoY29uc3Qgdm9p ZCAqYXAsIGNvbnN0IHZvaWQgKmJwKQotK3sKLSsgIHN0cnVjdCB0aHJlYWRfZGJfaW5mbyAqYSA9 ICooc3RydWN0IHRocmVhZF9kYl9pbmZvICoqKSBhcDsKLSsgIHN0cnVjdCB0aHJlYWRfZGJfaW5m byAqYiA9ICooc3RydWN0IHRocmVhZF9kYl9pbmZvICoqKSBicDsKLSsgIGludCByZXR2YWw7Ci0r Ci0rICByZXR2YWwgPSBzdHJjbXAgKGEtPmZpbGVuYW1lLCBiLT5maWxlbmFtZSk7Ci0rICBpZiAo cmV0dmFsKQotKyAgICByZXR1cm4gcmV0dmFsOwotKwotKyAgcmV0dXJuIChhLT5waWQgPiBiLT5w aWQpIC0gKGEtPnBpZCAtIGItPnBpZCk7Ci0rfQotKwotKy8qIEltcGxlbWVudCAnaW5mbyBhdXRv LWxvYWQgbGlidGhyZWFkLWRiJy4gICovCi0rCi0rc3RhdGljIHZvaWQKLStpbmZvX2F1dG9fbG9h ZF9saWJ0aHJlYWRfZGIgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBzdHJ1Y3Qg dWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7Ci0rICBjb25zdCBjaGFyICpjcyA9IGFyZ3Mg PyBhcmdzIDogIiI7Ci0rICBzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKmluZm8sICoqYXJyYXk7Ci0r ICB1bnNpZ25lZCBpbmZvX2NvdW50LCB1bmlxdWVfZmlsZW5hbWVzOwotKyAgc2l6ZV90IG1heF9m aWxlbmFtZV9sZW4sIG1heF9waWRzX2xlbiwgcGlkc19sZW47Ci0rICBzdHJ1Y3QgY2xlYW51cCAq YmFja190bzsKLSsgIGNoYXIgKnBpZHM7Ci0rICBpbnQgaTsKLSsKLSsgIHdoaWxlIChpc3NwYWNl ICgqY3MpKQotKyAgICBjcysrOwotKyAgaWYgKCpjcykKLSsgICAgZXJyb3IgKF8oIidpbmZvIGF1 dG8tbG9hZCBsaWJ0aHJlYWQtZGInIGRvZXMgbm90IGFjY2VwdCBhbnkgcGFyYW1ldGVycyIpKTsK LSsKLSsgIGluZm9fY291bnQgPSAwOwotKyAgZm9yIChpbmZvID0gdGhyZWFkX2RiX2xpc3Q7IGlu Zm87IGluZm8gPSBpbmZvLT5uZXh0KQotKyAgICBpZiAoaW5mby0+ZmlsZW5hbWUgIT0gTlVMTCkK LSsgICAgICBpbmZvX2NvdW50Kys7Ci0rCi0rICBhcnJheSA9IHhtYWxsb2MgKHNpemVvZiAoKmFy cmF5KSAqIGluZm9fY291bnQpOwotKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGFy cmF5KTsKLSsKLSsgIGluZm9fY291bnQgPSAwOwotKyAgZm9yIChpbmZvID0gdGhyZWFkX2RiX2xp c3Q7IGluZm87IGluZm8gPSBpbmZvLT5uZXh0KQotKyAgICBpZiAoaW5mby0+ZmlsZW5hbWUgIT0g TlVMTCkKLSsgICAgICBhcnJheVtpbmZvX2NvdW50KytdID0gaW5mbzsKLSsKLSsgIC8qIFNvcnQg QVJSQVkgYnkgZmlsZW5hbWVzIGFuZCBQSURzLiAgKi8KLSsKLSsgIHFzb3J0IChhcnJheSwgaW5m b19jb3VudCwgc2l6ZW9mICgqYXJyYXkpLAotKwkgaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2Ri X2NvbXBhcmUpOwotKwotKyAgLyogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgdW5pcXVlIGZpbGVu YW1lcyAocm93cykgYW5kIHRoZSBtYXhpbXVtIHN0cmluZwotKyAgICAgbGVuZ3RoIG9mIFBJRHMg bGlzdCBmb3IgdGhlIHVuaXF1ZSBmaWxlbmFtZXMgKGNvbHVtbnMpLiAgKi8KLSsKLSsgIHVuaXF1 ZV9maWxlbmFtZXMgPSAwOwotKyAgbWF4X2ZpbGVuYW1lX2xlbiA9IDA7Ci0rICBtYXhfcGlkc19s ZW4gPSAwOwotKyAgcGlkc19sZW4gPSAwOwotKyAgZm9yIChpID0gMDsgaSA8IGluZm9fY291bnQ7 IGkrKykKLSsgICAgewotKyAgICAgIGludCBwaWQgPSBhcnJheVtpXS0+cGlkOwotKyAgICAgIHNp emVfdCB0aGlzX3BpZF9sZW47Ci0rCi0rICAgICAgZm9yICh0aGlzX3BpZF9sZW4gPSAwOyBwaWQg IT0gMDsgcGlkIC89IDEwKQotKwl0aGlzX3BpZF9sZW4rKzsKLSsKLSsgICAgICBpZiAoaSA9PSAw IHx8IHN0cmNtcCAoYXJyYXlbaSAtIDFdLT5maWxlbmFtZSwgYXJyYXlbaV0tPmZpbGVuYW1lKSAh PSAwKQotKwl7Ci0rCSAgdW5pcXVlX2ZpbGVuYW1lcysrOwotKwkgIG1heF9maWxlbmFtZV9sZW4g PSBtYXggKG1heF9maWxlbmFtZV9sZW4sCi0rCQkJCSAgc3RybGVuIChhcnJheVtpXS0+ZmlsZW5h bWUpKTsKLSsKLSsJICBpZiAoaSA+IDApCi0rCSAgICB7Ci0rCSAgICAgIHBpZHNfbGVuIC09IHN0 cmxlbiAoIiwgIik7Ci0rCSAgICAgIG1heF9waWRzX2xlbiA9IG1heCAobWF4X3BpZHNfbGVuLCBw aWRzX2xlbik7Ci0rCSAgICB9Ci0rCSAgcGlkc19sZW4gPSAwOwotKwl9Ci0rICAgICAgcGlkc19s ZW4gKz0gdGhpc19waWRfbGVuICsgc3RybGVuICgiLCAiKTsKLSsgICAgfQotKyAgaWYgKGkpCi0r ICAgIHsKLSsgICAgICBwaWRzX2xlbiAtPSBzdHJsZW4gKCIsICIpOwotKyAgICAgIG1heF9waWRz X2xlbiA9IG1heCAobWF4X3BpZHNfbGVuLCBwaWRzX2xlbik7Ci0rICAgIH0KLSsKLSsgIC8qIFRh YmxlIGhlYWRlciBzaGlmdGVkIHJpZ2h0IGJ5IHByZWNlZGluZyAibGlidGhyZWFkLWRiOiAgIiB3 b3VsZCBub3QgbWF0Y2gKLSsgICAgIGl0cyBjb2x1bW5zLiAgKi8KLSsgIGlmIChpbmZvX2NvdW50 ID4gMCAmJiBhcmdzID09IGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubCkKLSsgICAg dWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLSsKLSsgIG1ha2VfY2xlYW51cF91aV9vdXRfdGFi bGVfYmVnaW5fZW5kICh1aW91dCwgMiwgdW5pcXVlX2ZpbGVuYW1lcywKLSsJCQkJICAgICAgICJM aW51eFRocmVhZERiVGFibGUiKTsKLSsKLSsgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCBt YXhfZmlsZW5hbWVfbGVuLCB1aV9sZWZ0LCAiZmlsZW5hbWUiLAotKwkJICAgICAgICJGaWxlbmFt ZSIpOwotKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIHBpZHNfbGVuLCB1aV9sZWZ0LCAi UElEcyIsICJQaWRzIik7Ci0rICB1aV9vdXRfdGFibGVfYm9keSAodWlvdXQpOwotKwotKyAgcGlk cyA9IHhtYWxsb2MgKG1heF9waWRzX2xlbiArIDEpOwotKyAgbWFrZV9jbGVhbnVwICh4ZnJlZSwg cGlkcyk7Ci0rCi0rICAvKiBOb3RlIEkgaXMgaW5jcmVtZW50ZWQgaW5zaWRlIHRoZSBjeWNsZSwg bm90IGF0IGl0cyBlbmQuICAqLwotKyAgZm9yIChpID0gMDsgaSA8IGluZm9fY291bnQ7KQotKyAg ICB7Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKmNoYWluID0gbWFrZV9jbGVhbnVwX3VpX291dF90 dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCBOVUxMKTsKLSsgICAgICBjaGFyICpwaWRzX2VuZDsKLSsK LSsgICAgICBpbmZvID0gYXJyYXlbaV07Ci0rICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlv dXQsICJmaWxlbmFtZSIsIGluZm8tPmZpbGVuYW1lKTsKLSsgICAgICBwaWRzX2VuZCA9IHBpZHM7 Ci0rCi0rICAgICAgd2hpbGUgKGkgPCBpbmZvX2NvdW50ICYmIHN0cmNtcCAoaW5mby0+ZmlsZW5h bWUsIGFycmF5W2ldLT5maWxlbmFtZSkgPT0gMCkKLSsJewotKwkgIGlmIChwaWRzX2VuZCAhPSBw aWRzKQotKwkgICAgewotKwkgICAgICAqcGlkc19lbmQrKyA9ICcsJzsKLSsJICAgICAgKnBpZHNf ZW5kKysgPSAnICc7Ci0rCSAgICB9Ci0rCSAgcGlkc19lbmQgKz0geHNucHJpbnRmIChwaWRzX2Vu ZCwgJnBpZHNbbWF4X3BpZHNfbGVuICsgMV0gLSBwaWRzX2VuZCwKLSsJCQkJICIldSIsIGFycmF5 W2ldLT5waWQpOwotKwkgIGdkYl9hc3NlcnQgKHBpZHNfZW5kIDwgJnBpZHNbbWF4X3BpZHNfbGVu ICsgMV0pOwotKwotKwkgIGkrKzsKLSsJfQotKyAgICAgICpwaWRzX2VuZCA9ICdcMCc7Ci0rCi0r ICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJwaWRzIiwgcGlkcyk7Ci0rCi0rICAg ICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLSsgICAgICBkb19jbGVhbnVwcyAoY2hhaW4p OwotKyAgICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0rCi0rICBpZiAoaW5mb19j b3VudCA9PSAwKQotKyAgICB1aV9vdXRfbWVzc2FnZSAodWlvdXQsIDAsIF8oIk5vIGF1dG8tbG9h ZGVkIGxpYnRocmVhZC1kYi5cbiIpKTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBpbml0X3RocmVh ZF9kYl9vcHMgKHZvaWQpCi0gewotQEAgLTE4NjMsNiArMjA0MCwyMyBAQCBXaGVuIG5vbi16ZXJv LCBsaWJ0aHJlYWQtZGIgZGVidWdnaW5nIGlzCi0gCQkJICAgIHNob3dfbGlidGhyZWFkX2RiX2Rl YnVnLAotIAkJCSAgICAmc2V0ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7Ci0gCi0rICBhZGRf c2V0c2hvd19ib29sZWFuX2NtZCAoImxpYnRocmVhZC1kYiIsIGNsYXNzX3N1cHBvcnQsCi0rCQkJ ICAgJmF1dG9fbG9hZF90aHJlYWRfZGIsIF8oIlwKLStFbmFibGUgb3IgZGlzYWJsZSBhdXRvLWxv YWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiLiIpLCBfKCJcCi0rU2hvdyB3 aGV0aGVyIGF1dG8tbG9hZGluZyBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIgaXMgZW5h YmxlZC4iKSwgXygiXAotK0lmIGVuYWJsZWQsIGxpYnRocmVhZF9kYiB3aWxsIGJlIHNlYXJjaGVk IGluICdzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoJ1xuXAotK2xvY2F0aW9ucyB0byBsb2Fk IGxpYnRocmVhZF9kYiBjb21wYXRpYmxlIHdpdGggdGhlIGluZmVyaW9yLlxuXAotK1N0YW5kYXJk IHN5c3RlbSBsaWJ0aHJlYWRfZGIgc3RpbGwgZ2V0cyBsb2FkZWQgZXZlbiB3aXRoIHRoaXMgb3B0 aW9uIG9mZi5cblwKLStUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBmb3Ig dW50cnVzdGVkIGluZmVyaW9ycy4iKSwKLSsJCQkgICBOVUxMLCBzaG93X2F1dG9fbG9hZF90aHJl YWRfZGIsCi0rCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKLSsJCQkgICBhdXRv X2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7Ci0rCi0rICBhZGRfY21kICgibGlidGhyZWFkLWRi IiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiLAotKwkgICBfKCJQcmlu dCB0aGUgbGlzdCBvZiBsb2FkZWQgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiLlxuXAot K1VzYWdlOiBpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiKSwKLSsJICAgYXV0b19sb2FkX2lu Zm9fY21kbGlzdF9nZXQgKCkpOwotKwotICAgLyogQWRkIG91cnNlbHZlcyB0byBvYmpmaWxlIGV2 ZW50IGNoYWluLiAgKi8KLSAgIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAodGhyZWFkX2Ri X25ld19vYmpmaWxlKTsKLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEy LTA0LTE4IDAwOjQ0OjI2Ljk1NzQzNzUwMyArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1NzA3OTc3NyArMDIwMAotQEAgLTk0NSw4 ICs5NDUsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotICAgLyogU2tpcCBhdXRvLWxv YWRpbmcgc2VjdGlvbi1zcGVjaWZpZWQgc2NyaXB0cyB1bnRpbCB3ZSd2ZSBzb3VyY2VkCi0gICAg ICBsb2NhbF9nZGJpbml0ICh3aGljaCBpcyBvZnRlbiB1c2VkIHRvIGF1Z21lbnQgdGhlIHNvdXJj ZSBzZWFyY2gKLSAgICAgIHBhdGgpLiAgKi8KLS0gIHNhdmVfYXV0b19sb2FkID0gZ2RicHlfZ2xv YmFsX2F1dG9fbG9hZDsKLS0gIGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgPSAwOwotKyAgc2F2ZV9h dXRvX2xvYWQgPSBnbG9iYWxfYXV0b19sb2FkOwotKyAgZ2xvYmFsX2F1dG9fbG9hZCA9IDA7Ci0g Ci0gICBpZiAoZXhlY2FyZyAhPSBOVUxMCi0gICAgICAgJiYgc3ltYXJnICE9IE5VTEwKLUBAIC0x MDIyLDE0ICsxMDIyLDI0IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gCi0gICAvKiBS ZWFkIHRoZSAuZ2RiaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgKmlmKiBpdCBp c24ndAotICAgICAgdGhlIHNhbWUgYXMgdGhlICRIT01FLy5nZGJpbml0IGZpbGUgKGl0IHNob3Vs ZCBleGlzdCwgYWxzbykuICAqLwotLSAgaWYgKGxvY2FsX2dkYmluaXQgJiYgIWluaGliaXRfZ2Ri aW5pdCkKLS0gICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGxvY2FsX2dk YmluaXQsIDAsIFJFVFVSTl9NQVNLX0FMTCk7Ci0rICBpZiAobG9jYWxfZ2RiaW5pdCkKLSsgICAg ewotKyAgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lID0gZ2RiX3JlYWxwYXRo IChsb2NhbF9nZGJpbml0KTsKLSsKLSsgICAgICBpZiAoIWluaGliaXRfZ2RiaW5pdCAmJiBhdXRv X2xvYWRfbG9jYWxfZ2RiaW5pdCkKLSsJewotKwkgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xv YWRlZCA9IDE7Ci0rCi0rCSAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGxv Y2FsX2dkYmluaXQsIDAsCi0rCQkJCVJFVFVSTl9NQVNLX0FMTCk7Ci0rCX0KLSsgICAgfQotIAot ICAgLyogTm93IHRoYXQgYWxsIC5nZGJpbml0J3MgaGF2ZSBiZWVuIHJlYWQgYW5kIGFsbCAtZCBv cHRpb25zIGhhdmUgYmVlbgotICAgICAgcHJvY2Vzc2VkLCB3ZSBjYW4gcmVhZCBhbnkgc2NyaXB0 cyBtZW50aW9uZWQgaW4gU1lNQVJHLgotICAgICAgV2Ugd2FpdCB1bnRpbCBub3cgYmVjYXVzZSBp dCBpcyBjb21tb24gdG8gYWRkIHRvIHRoZSBzb3VyY2Ugc2VhcmNoCi0gICAgICBwYXRoIGluIGxv Y2FsX2dkYmluaXQuICAqLwotLSAgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IHNhdmVfYXV0b19s b2FkOwotKyAgZ2xvYmFsX2F1dG9fbG9hZCA9IHNhdmVfYXV0b19sb2FkOwotICAgQUxMX09CSkZJ TEVTIChvYmpmaWxlKQotICAgICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmls ZSk7Ci0gCi1AQCAtMTE5Niw3ICsxMjA2LDcgQEAgQXQgc3RhcnR1cCwgR0RCIHJlYWRzIHRoZSBm b2xsb3dpbmcgaW5pdAotICIpLCBob21lX2dkYmluaXQpOwotICAgaWYgKGxvY2FsX2dkYmluaXQp Ci0gICAgIGZwcmludGZfdW5maWx0ZXJlZCAoc3RyZWFtLCBfKCJcCi0tICAgKiBsb2NhbCBpbml0 IGZpbGU6IC4vJXNcblwKLSsgICAqIGxvY2FsIGluaXQgZmlsZSAoc2VlIGFsc28gJ3NldCBhdXRv LWxvYWQgbG9jYWwtZ2RiaW5pdCcpOiAuLyVzXG5cCi0gIiksIGxvY2FsX2dkYmluaXQpOwotICAg ZnB1dHNfdW5maWx0ZXJlZCAoXygiXG5cCi0gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHR5cGUgXCJo ZWxwXCIgZnJvbSB3aXRoaW4gR0RCLCBvciBjb25zdWx0IHRoZVxuXAotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDQ6MjYu OTI4NDM3NTc3ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTItMDQtMTggMDA6NDY6NDcuNTU4MDc5Nzc0ICswMjAwCi1AQCAtMTAzNCw2ICsxMDM0 LDcgQEAgWW91IGNhbiBydW4gQHZhbHVle0dEQk59IGluIHZhcmlvdXMgYWx0ZQotIGJhdGNoIG1v ZGUgb3IgcXVpZXQgbW9kZS4KLSAKLSBAdGFibGUgQGNvZGUKLStAYW5jaG9yey1ueH0KLSBAaXRl bSAtbngKLSBAaXRlbXggLW4KLSBAY2luZGV4IEBjb2Rley0tbnh9Ci1AQCAtMTI2NSw2ICsxMjY2 LDcgQEAgSGVyZSdzIHRoZSBkZXNjcmlwdGlvbiBvZiB3aGF0IEB2YWx1ZXtHRAotIFNldHMgdXAg dGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIgYXMgc3BlY2lmaWVkIGJ5IHRoZSBjb21tYW5kIGxpbmUK LSAoQHB4cmVme01vZGUgT3B0aW9ucywgaW50ZXJwcmV0ZXJ9KS4KLSAKLStAYW5jaG9ye09wdGlv biAtaW5pdC1ldmFsLWNvbW1hbmR9Ci0gQGl0ZW0KLSBFeGVjdXRlcyBjb21tYW5kcyBhbmQgY29t bWFuZCBmaWxlcyBzcGVjaWZpZWQgYnkgdGhlIEBzYW1wey1pZXh9IGFuZAotIEBzYW1wey1peH0g b3B0aW9ucyBpbiB0aGVpciBzcGVjaWZpZWQgb3JkZXIuICBVc3VhbGx5IHlvdSBzaG91bGQgdXNl IHRoZQotQEAgLTEyNzksNiArMTI4MSw3IEBAIHVzZWQgd2hlbiBidWlsZGluZyBAdmFsdWV7R0RC Tn07IEBweHJlZnsKLSAgLFN5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24gYW5kIHNldHRpbmdzfSkg YW5kIGV4ZWN1dGVzIGFsbCB0aGUgY29tbWFuZHMgaW4KLSB0aGF0IGZpbGUuCi0gCi0rQGFuY2hv cntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9Ci0gQGl0ZW0KLSBSZWFkcyB0aGUgaW5pdCBmaWxl IChpZiBhbnkpIGluIHlvdXIgaG9tZSBkaXJlY3RvcnlAZm9vdG5vdGV7T24KLSBET1MvV2luZG93 cyBzeXN0ZW1zLCB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgdGhlIG9uZSBwb2ludGVkIHRvIGJ5IHRo ZQotQEAgLTEyODgsOSArMTI5MSwxMiBAQCB0aGF0IGZpbGUuCi0gQGl0ZW0KLSBQcm9jZXNzZXMg Y29tbWFuZCBsaW5lIG9wdGlvbnMgYW5kIG9wZXJhbmRzLgotIAotK0BhbmNob3J7SW5pdCBGaWxl IGluIHRoZSBDdXJyZW50IERpcmVjdG9yeSBkdXJpbmcgU3RhcnR1cH0KLSBAaXRlbQotIFJlYWRz IGFuZCBleGVjdXRlcyB0aGUgY29tbWFuZHMgZnJvbSBpbml0IGZpbGUgKGlmIGFueSkgaW4gdGhl IGN1cnJlbnQKLS13b3JraW5nIGRpcmVjdG9yeS4gIFRoaXMgaXMgb25seSBkb25lIGlmIHRoZSBj dXJyZW50IGRpcmVjdG9yeSBpcwotK3dvcmtpbmcgZGlyZWN0b3J5IGFzIGxvbmcgYXMgQHNhbXB7 c2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fSBpcyBzZXQgdG8KLStAc2FtcHtvbn0gKEBweHJl ZntJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5fSkuCi0rVGhpcyBpcyBvbmx5IGRv bmUgaWYgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzCi0gZGlmZmVyZW50IGZyb20geW91ciBob21l IGRpcmVjdG9yeS4gIFRodXMsIHlvdSBjYW4gaGF2ZSBtb3JlIHRoYW4gb25lCi0gaW5pdCBmaWxl LCBvbmUgZ2VuZXJpYyBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5LCBhbmQgYW5vdGhlciwgc3BlY2lm aWMKLSB0byB0aGUgcHJvZ3JhbSB5b3UgYXJlIGRlYnVnZ2luZywgaW4gdGhlIGRpcmVjdG9yeSB3 aGVyZSB5b3UgaW52b2tlCi1AQCAtMTMwNiw3ICsxMzEyLDcgQEAgSWYgeW91IHdpc2ggdG8gZGlz YWJsZSB0aGUgYXV0by1sb2FkaW5nCi0geW91IG11c3QgZG8gc29tZXRoaW5nIGxpa2UgdGhlIGZv bGxvd2luZzoKLSAKLSBAc21hbGxleGFtcGxlCi0tJCBnZGIgLWlleCAic2V0IGF1dG8tbG9hZC1z Y3JpcHRzIG9mZiIgbXlwcm9ncmFtCi0rJCBnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBweXRob24t c2NyaXB0cyBvZmYiIG15cHJvZ3JhbQotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0gT3B0aW9uIEBz YW1wey1leH0gZG9lcyBub3Qgd29yayBiZWNhdXNlIHRoZSBhdXRvLWxvYWRpbmcgaXMgdGhlbiB0 dXJuZWQKLUBAIC0yODkxLDYgKzI4OTcsNyBAQCBwcm9ncmFtcyB3aXRoIG11bHRpcGxlIHRocmVh ZHMuCi0gQHhyZWZ7U2V0IFdhdGNocG9pbnRzLCxTZXR0aW5nIFdhdGNocG9pbnRzfSwgZm9yIGlu Zm9ybWF0aW9uIGFib3V0Ci0gd2F0Y2hwb2ludHMgaW4gcHJvZ3JhbXMgd2l0aCBtdWx0aXBsZSB0 aHJlYWRzLgotIAotK0BhbmNob3J7c2V0IGxpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0KLSBAdGFi bGUgQGNvZGUKLSBAa2luZGV4IHNldCBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGgKLSBAY2luZGV4 IHNlYXJjaCBwYXRoIGZvciBAY29kZXtsaWJ0aHJlYWRfZGJ9Ci1AQCAtMjkwNSwxMSArMjkxMiwx NSBAQCBtYWNyby4KLSBPbiBAc2N7Z251fS9MaW51eCBhbmQgU29sYXJpcyBzeXN0ZW1zLCBAdmFs dWV7R0RCTn0gdXNlcyBhIGBgaGVscGVyJycKLSBAY29kZXtsaWJ0aHJlYWRfZGJ9IGxpYnJhcnkg dG8gb2J0YWluIGluZm9ybWF0aW9uIGFib3V0IHRocmVhZHMgaW4gdGhlCi0gaW5mZXJpb3IgcHJv Y2Vzcy4gIEB2YWx1ZXtHREJOfSB3aWxsIHVzZSBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBh dGh9Ci0tdG8gZmluZCBAY29kZXtsaWJ0aHJlYWRfZGJ9LgotK3RvIGZpbmQgQGNvZGV7bGlidGhy ZWFkX2RifS4gIEB2YWx1ZXtHREJOfSBhbHNvIGNvbnN1bHRzIGZpcnN0IGlmIGluZmVyaW9yCi0r c3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5IGxvYWRpbmcgaXMgZW5hYmxlZAotK2J5 IEBzYW1we3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifSAoQHB4cmVme2xpYnRocmVhZF9kYi5z by4xIGZpbGV9KS4KLSAKLSBBIHNwZWNpYWwgZW50cnkgQHNhbXB7JHNkaXJ9IGZvciBAc2FtcHts aWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9Ci0gcmVmZXJzIHRvIHRoZSBkZWZhdWx0IHN5c3RlbSBk aXJlY3RvcmllcyB0aGF0IGFyZQotLW5vcm1hbGx5IHNlYXJjaGVkIGZvciBsb2FkaW5nIHNoYXJl ZCBsaWJyYXJpZXMuCi0rbm9ybWFsbHkgc2VhcmNoZWQgZm9yIGxvYWRpbmcgc2hhcmVkIGxpYnJh cmllcy4gIFRoZSBAc2FtcHskc2Rpcn0gZW50cnkKLStpcyB0aGUgb25seSBraW5kIG5vdCBuZWVk aW5nIHRvIGJlIGVuYWJsZWQgYnkgQHNhbXB7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9Ci0r KEBweHJlZntsaWJ0aHJlYWRfZGIuc28uMSBmaWxlfSkuCi0gCi0gQSBzcGVjaWFsIGVudHJ5IEBz YW1weyRwZGlyfSBmb3IgQHNhbXB7bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRofQotIHJlZmVycyB0 byB0aGUgZGlyZWN0b3J5IGZyb20gd2hpY2ggQGNvZGV7bGlicHRocmVhZH0KLUBAIC0yMDMyMCw2 ICsyMDMzMSw3IEBAIGRlc2NyaWJlZCBoZXJlLgotICogU2NyZWVuIFNpemU6OiAgICAgICAgICAg ICAgICAgU2NyZWVuIHNpemUKLSAqIE51bWJlcnM6OiAgICAgICAgICAgICAgICAgICAgIE51bWJl cnMKLSAqIEFCSTo6ICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyaW5nIHRoZSBjdXJy ZW50IEFCSQotKyogQXV0by1sb2FkaW5nOjogICAgICAgICAgICAgICAgQXV0b21hdGljYWxseSBs b2FkaW5nIGFzc29jaWF0ZWQgZmlsZXMKLSAqIE1lc3NhZ2VzL1dhcm5pbmdzOjogICAgICAgICAg IE9wdGlvbmFsIHdhcm5pbmdzIGFuZCBtZXNzYWdlcwotICogRGVidWdnaW5nIE91dHB1dDo6ICAg ICAgICAgICAgT3B0aW9uYWwgbWVzc2FnZXMgYWJvdXQgaW50ZXJuYWwgaGFwcGVuaW5ncwotICog T3RoZXIgTWlzYyBTZXR0aW5nczo6ICAgICAgICAgT3RoZXIgTWlzY2VsbGFuZW91cyBTZXR0aW5n cwotQEAgLTIwNzQ1LDYgKzIwNzU3LDIyNyBAQCBXaXRoIG5vIGFyZ3VtZW50LCBzaG93IHRoZSBs aXN0IG9mIHN1cHBvCi0gU2V0IHRoZSBjdXJyZW50IENAdHsrK30gQUJJIHRvIEB2YXJ7YWJpfSwg b3IgcmV0dXJuIHRvIGF1dG9tYXRpYyBkZXRlY3Rpb24uCi0gQGVuZCB0YWJsZQotIAotK0Bub2Rl IEF1dG8tbG9hZGluZwotK0BzZWN0aW9uIEF1dG9tYXRpY2FsbHkgbG9hZGluZyBhc3NvY2lhdGVk IGZpbGVzCi0rQGNpbmRleCBhdXRvLWxvYWRpbmcKLSsKLStAdmFsdWV7R0RCTn0gc29tZXRpbWVz IHJlYWRzIGZpbGVzIHdpdGggY29tbWFuZHMgYW5kIHNldHRpbmdzIGF1dG9tYXRpY2FsbHksCi0r d2l0aG91dCBiZWluZyBleHBsaWNpdGx5IHRvbGQgc28gYnkgdGhlIHVzZXIuICBXZSBjYWxsIHRo aXMgZmVhdHVyZQotK0BkZm57YXV0by1sb2FkaW5nfS4gIFdoaWxlIGF1dG8tbG9hZGluZyBpcyB1 c2VmdWwgZm9yIGF1dG9tYXRpY2FsbHkgYWRhcHRpbmcKLStAdmFsdWV7R0RCTn0gdG8gdGhlIG5l ZWRzIG9mIHlvdXIgcHJvamVjdCwgaXQgY2FuIHNvbWV0aW1lcyBwcm9kdWNlIHVuZXhwZWN0ZWQK LStyZXN1bHRzIG9yIGludHJvZHVjZSBzZWN1cml0eSByaXNrcyAoZS5nLiwgaWYgdGhlIGZpbGUg Y29tZXMgZnJvbSB1bnRydXN0ZWQKLStzb3VyY2VzKS4KLSsKLStGb3IgdGhlc2UgcmVhc29ucywg QHZhbHVle0dEQk59IGluY2x1ZGVzIGNvbW1hbmRzIGFuZCBvcHRpb25zIHRvIGxldCB5b3UKLStj b250cm9sIHdoZW4gdG8gYXV0by1sb2FkIGZpbGVzIGFuZCB3aGljaCBmaWxlcyBzaG91bGQgYmUg YXV0by1sb2FkZWQuCi0rCi0rQHRhYmxlIEBjb2RlCi0rQGFuY2hvcntzZXQgYXV0by1sb2FkIG9m Zn0KLStAa2luZGV4IHNldCBhdXRvLWxvYWQgb2ZmCi0rQGl0ZW0gc2V0IGF1dG8tbG9hZCBvZmYK LStHbG9iYWxseSBkaXNhYmxlIGxvYWRpbmcgb2YgYWxsIGF1dG8tbG9hZGVkIGZpbGVzLgotK1lv dSBtYXkgd2FudCB0byB1c2UgdGhpcyBjb21tYW5kIHdpdGggdGhlIEBzYW1wey1pZXh9IG9wdGlv bgotKyhAcHhyZWZ7T3B0aW9uIC1pbml0LWV2YWwtY29tbWFuZH0pIHN1Y2ggYXM6Ci0rQHNtYWxs ZXhhbXBsZQotKyQgQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBvZmYiIHVudHJ1c3RlZC1l eGVjdXRhYmxlIGNvcmVmaWxlfQotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0rQmUgYXdhcmUgdGhh dCBzeXN0ZW0gaW5pdCBmaWxlIChAcHhyZWZ7U3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbn0pCi0r YW5kIGluaXQgZmlsZXMgZnJvbSB5b3VyIGhvbWUgZGlyZWN0b3J5IChAcHhyZWZ7SG9tZSBEaXJl Y3RvcnkgSW5pdCBGaWxlfSkKLStzdGlsbCBnZXQgcmVhZCAoYXMgdGhleSBjb21lIGZyb20gZ2Vu ZXJhbGx5IHRydXN0ZWQgZGlyZWN0b3JpZXMpLgotK1RvIHByZXZlbnQgQHZhbHVle0dEQk59IGZy b20gYXV0by1sb2FkaW5nIGV2ZW4gdGhvc2UgaW5pdCBmaWxlcywgdXNlIHRoZQotK0BvcHRpb257 LW54fSBvcHRpb24gKEBweHJlZntNb2RlIE9wdGlvbnN9KSwgaW4gYWRkaXRpb24gdG8KLStAY29k ZXtzZXQgYXV0by1sb2FkIG5vfS4KLSsKLStAYW5jaG9ye3Nob3cgYXV0by1sb2FkfQotK0BraW5k ZXggc2hvdyBhdXRvLWxvYWQKLStAaXRlbSBzaG93IGF1dG8tbG9hZAotK1Nob3cgd2hldGhlciBh dXRvLWxvYWRpbmcgb2YgZWFjaCBzcGVjaWZpYyBAc2FtcHthdXRvLWxvYWR9IGZpbGUocykgaXMg ZW5hYmxlZAotK29yIGRpc2FibGVkLgotKwotK0BzbWFsbGV4YW1wbGUKLSsoZ2RiKSBzaG93IGF1 dG8tbG9hZAotK2dkYi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMg b2YgY29tbWFuZHMgc2NyaXB0cyBpcyBvbi4KLStsaWJ0aHJlYWQtZGI6ICBBdXRvLWxvYWRpbmcg b2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiIGlzIG9uLgotK2xvY2FsLWdkYmluaXQ6 ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3VycmVudCBkaXJlY3Rvcnkg aXMgb24uCi0rcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMg aXMgb24uCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStAYW5jaG9ye2luZm8gYXV0by1sb2FkfQot K0BraW5kZXggaW5mbyBhdXRvLWxvYWQKLStAaXRlbSBpbmZvIGF1dG8tbG9hZAotK1ByaW50IHdo ZXRoZXIgZWFjaCBzcGVjaWZpYyBAc2FtcHthdXRvLWxvYWR9IGZpbGUocykgaGF2ZSBiZWVuIGF1 dG8tbG9hZGVkIG9yCi0rbm90LgotKwotK0BzbWFsbGV4YW1wbGUKLSsoZ2RiKSBpbmZvIGF1dG8t bG9hZAotK2dkYi1zY3JpcHRzOgotK0xvYWRlZCAgU2NyaXB0Ci0rWWVzICAgICAvaG9tZS91c2Vy L2dkYi9nZGItZ2RiLmdkYgotK2xpYnRocmVhZC1kYjogIE5vIGF1dG8tbG9hZGVkIGxpYnRocmVh ZC1kYi4KLStsb2NhbC1nZGJpbml0OiAgTG9jYWwgLmdkYmluaXQgZmlsZSAiL2hvbWUvdXNlci9n ZGIvLmdkYmluaXQiIGhhcyBiZWVuIGxvYWRlZC4KLStweXRob24tc2NyaXB0czoKLStMb2FkZWQg IFNjcmlwdAotK1llcyAgICAgL2hvbWUvdXNlci9nZGIvZ2RiLWdkYi5weQotK0BlbmQgc21hbGxl eGFtcGxlCi0rQGVuZCB0YWJsZQotKwotK1RoZXNlIGFyZSB2YXJpb3VzIGtpbmRzIG9mIGZpbGVz IEB2YWx1ZXtHREJOfSBjYW4gYXV0b21hdGljYWxseSBsb2FkOgotKwotK0BpdGVtaXplIEBidWxs ZXQKLStAaXRlbQotK0B4cmVme29iamZpbGUtZ2RiLnB5IGZpbGV9LCBjb250cm9sbGVkIGJ5IEBy ZWZ7c2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCi0rQGl0ZW0KLStAeHJlZntvYmpmaWxl LWdkYi5nZGIgZmlsZX0sIGNvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIGdkYi1zY3Jp cHRzfS4KLStAaXRlbQotK0B4cmVme2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259LAotK2Nv bnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfS4KLStAaXRlbQot K0B4cmVme0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rvcnl9LAotK2NvbnRyb2xsZWQg YnkgQHJlZntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgotK0BpdGVtCi0rQHhyZWZ7bGli dGhyZWFkX2RiLnNvLjEgZmlsZX0sIGNvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIGxp YnRocmVhZC1kYn0uCi0rQGVuZCBpdGVtaXplCi0rCi0rVGhlc2UgYXJlIEB2YWx1ZXtHREJOfSBj b250cm9sIGNvbW1hbmRzIGZvciB0aGUgYXV0by1sb2FkaW5nOgotKwotK0BtdWx0aXRhYmxlIEBj b2x1bW5mcmFjdGlvbnMgLjUgLjUKLStAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIG9mZn0uCi0r QHRhYiBEaXNhYmxlIGF1dG8tbG9hZGluZyBnbG9iYWxseS4KLStAaXRlbSBAeHJlZntzaG93IGF1 dG8tbG9hZH0uCi0rQHRhYiBTaG93IHNldHRpbmcgb2YgYWxsIGtpbmRzIG9mIGZpbGVzLgotK0Bp dGVtIEB4cmVme2luZm8gYXV0by1sb2FkfS4KLStAdGFiIFNob3cgc3RhdGUgb2YgYWxsIGtpbmRz IG9mIGZpbGVzLgotK0BpdGVtIEB4cmVme3NldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9LgotK0B0 YWIgQ29udHJvbCBmb3IgQHZhbHVle0dEQk59IGNvbW1hbmQgc2NyaXB0cy4KLStAaXRlbSBAeHJl ZntzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0c30uCi0rQHRhYiBTaG93IHNldHRpbmcgb2YgQHZh bHVle0dEQk59IGNvbW1hbmQgc2NyaXB0cy4KLStAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBn ZGItc2NyaXB0c30uCi0rQHRhYiBTaG93IHN0YXRlIG9mIEB2YWx1ZXtHREJOfSBjb21tYW5kIHNj cmlwdHMuCi0rQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCi0rQHRh YiBDb250cm9sIGZvciBAdmFsdWV7R0RCTn0gUHl0aG9uIHNjcmlwdHMuCi0rQGl0ZW0gQHhyZWZ7 c2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9LgotK0B0YWIgU2hvdyBzZXR0aW5nIG9mIEB2 YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0cy4KLStAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBw eXRob24tc2NyaXB0c30uCi0rQHRhYiBTaG93IHN0YXRlIG9mIEB2YWx1ZXtHREJOfSBQeXRob24g c2NyaXB0cy4KLStAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgotK0B0 YWIgQ29udHJvbCBmb3IgaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLStAaXRl bSBAeHJlZntzaG93IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KLStAdGFiIFNob3cgc2V0dGlu ZyBvZiBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgotK0BpdGVtIEB4cmVme2lu Zm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgotK0B0YWIgU2hvdyBzdGF0ZSBvZiBpbml0IGZp bGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgotK0BpdGVtIEB4cmVme3NldCBhdXRvLWxvYWQg bGlidGhyZWFkLWRifS4KLStAdGFiIENvbnRyb2wgZm9yIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFy eS4KLStAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgotK0B0YWIgU2hv dyBzZXR0aW5nIG9mIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KLStAaXRlbSBAeHJlZntpbmZv IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgotK0B0YWIgU2hvdyBzdGF0ZSBvZiB0aHJlYWQgZGVi dWdnaW5nIGxpYnJhcnkuCi0rQGVuZCBtdWx0aXRhYmxlCi0rCi0rQG1lbnUKLSsqIEluaXQgRmls ZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rvcnk6OiBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9h ZCBsb2NhbC1nZGJpbml0fQotKyogbGlidGhyZWFkX2RiLnNvLjEgZmlsZTo6ICAgICAgICAgICAg IEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KLSsqIG9iamZpbGUt Z2RiLmdkYiBmaWxlOjogICAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9h ZCBnZGItc2NyaXB0fQotK0B4cmVme1B5dGhvbiBBdXRvLWxvYWRpbmd9LgotK0BlbmQgbWVudQot KwotK0Bub2RlIEluaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnkKLStAc3Vic2VjdGlv biBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9y eQotK0BjaW5kZXggYXV0by1sb2FkaW5nIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3Rv cnkKLSsKLStCeSBkZWZhdWx0LCBAdmFsdWV7R0RCTn0gcmVhZHMgYW5kIGV4ZWN1dGVzIHRoZSBj YW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzCi0rZnJvbSBpbml0IGZpbGUgKGlmIGFueSkgaW4g dGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksCi0rc2VlIEByZWZ7SW5pdCBGaWxlIGluIHRo ZSBDdXJyZW50IERpcmVjdG9yeSBkdXJpbmcgU3RhcnR1cH0uCi0rCi0rQHRhYmxlIEBjb2RlCi0r QGFuY2hvcntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9Ci0rQGtpbmRleCBzZXQgYXV0by1s b2FkIGxvY2FsLWdkYmluaXQKLStAaXRlbSBzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQgW29u fG9mZl0KLStFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1 ZW5jZXMgb2YgY29tbWFuZHMKLSsoQHB4cmVme1NlcXVlbmNlc30pIGZvdW5kIGluIGluaXQgZmls ZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0rCi0rQGFuY2hvcntzaG93IGF1dG8tbG9hZCBs b2NhbC1nZGJpbml0fQotK0BraW5kZXggc2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAotK0Bp dGVtIHNob3cgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKLStTaG93IHdoZXRoZXIgYXV0by1sb2Fk aW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgZnJvbSBpbml0IGZpbGUgaW4gdGhl Ci0rY3VycmVudCBkaXJlY3RvcnkgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KLSsKLStAYW5jaG9y e2luZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9Ci0rQGtpbmRleCBpbmZvIGF1dG8tbG9hZCBs b2NhbC1nZGJpbml0Ci0rQGl0ZW0gaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAotK1ByaW50 IHdoZXRoZXIgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBmcm9tIGluaXQgZmlsZSBpbiB0 aGUKLStjdXJyZW50IGRpcmVjdG9yeSBoYXZlIGJlZW4gYXV0by1sb2FkZWQuCi0rQGVuZCB0YWJs ZQotKwotK0Bub2RlIGxpYnRocmVhZF9kYi5zby4xIGZpbGUKLStAc3Vic2VjdGlvbiBBdXRvbWF0 aWNhbGx5IGxvYWRpbmcgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5Ci0rQGNpbmRleCBhdXRvLWxv YWRpbmcgbGlidGhyZWFkX2RiLnNvLjEKLSsKLStUaGlzIGZlYXR1cmUgaXMgY3VycmVudGx5IHBy ZXNlbnQgb25seSBvbiBAc2N7Z251fS9MaW51eCBuYXRpdmUgaG9zdHMuCi0rCi0rQHZhbHVle0dE Qk59IHJlYWRzIGluIHNvbWUgY2FzZXMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5IGZyb20gcGxh Y2VzIHNwZWNpZmljCi0rdG8gdGhlIGluZmVyaW9yIChAcHhyZWZ7c2V0IGxpYnRocmVhZC1kYi1z ZWFyY2gtcGF0aH0pLgotKwotK1RoZSBzcGVjaWFsIEBzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gt cGF0aH0gZW50cnkgQHNhbXB7JHNkaXJ9IGlzIHByb2Nlc3NlZAotK3dpdGhvdXQgY2hlY2tpbmcg dGhpcyBAc2FtcHtzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0gc3dpdGNoIGFzIHN5c3RlbQot K2xpYnJhcmllcyBoYXZlIHRvIGJlIHRydXN0ZWQgaW4gZ2VuZXJhbC4gIEluIGFsbCBvdGhlciBj YXNlcyBvZgotK0BzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0gZW50cmllcyBAdmFsdWV7 R0RCTn0gY2hlY2tzIGZpcnN0IGlmIEBzYW1we3NldAotK2F1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9 IGlzIGVuYWJsZWQgYmVmb3JlIHRyeWluZyB0byBvcGVuIHN1Y2ggdGhyZWFkIGRlYnVnZ2luZwot K2xpYnJhcnkuCi0rCi0rQHRhYmxlIEBjb2RlCi0rQGFuY2hvcntzZXQgYXV0by1sb2FkIGxpYnRo cmVhZC1kYn0KLStAa2luZGV4IHNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCi0rQGl0ZW0gc2V0 IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIgW29ufG9mZl0KLStFbmFibGUgb3IgZGlzYWJsZSB0aGUg YXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFy eS4KLSsKLStAYW5jaG9ye3Nob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KLStAa2luZGV4IHNo b3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYgotK0BpdGVtIHNob3cgYXV0by1sb2FkIGxpYnRocmVh ZC1kYgotK1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgdGhy ZWFkIGRlYnVnZ2luZyBsaWJyYXJ5IGlzCi0rZW5hYmxlZCBvciBkaXNhYmxlZC4KLSsKLStAYW5j aG9ye2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KLStAa2luZGV4IGluZm8gYXV0by1sb2Fk IGxpYnRocmVhZC1kYgotK0BpdGVtIGluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYgotK1ByaW50 IHRoZSBsaXN0IG9mIGFsbCBsb2FkZWQgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2lu ZyBsaWJyYXJpZXMgYW5kCi0rZm9yIGVhY2ggc3VjaCBsaWJyYXJ5IHByaW50IGxpc3Qgb2YgaW5m ZXJpb3IgQHZhcntwaWR9cyB1c2luZyBpdC4KLStAZW5kIHRhYmxlCi0rCi0rQG5vZGUgb2JqZmls ZS1nZGIuZ2RiIGZpbGUKLStAc3Vic2VjdGlvbiBUaGUgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIu Z2RifSBmaWxlCi0rQGNpbmRleCBhdXRvLWxvYWRpbmcgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIu Z2RifQotKwotK0B2YWx1ZXtHREJOfSB0cmllcyB0byBsb2FkIGFuIEBmaWxle0B2YXJ7b2JqZmls ZX0tZ2RiLmdkYn0gZmlsZSBjb250YWluaW5nCi0rY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5k cyAoQHB4cmVme1NlcXVlbmNlc30pLCBhcyBsb25nIGFzIEBzYW1we3NldAotK2F1dG8tbG9hZCBn ZGItc2NyaXB0c30gaXMgc2V0IHRvIEBzYW1we29ufS4KLSsKLStGb3IgbW9yZSBiYWNrZ3JvdW5k IHJlZmVyIHRvIHRoZSBzaW1pbGFyIFB5dGhvbiBzY3JpcHRzIGF1dG8tbG9hZGluZwotK2Rlc2Ny aXB0aW9uIChAcHhyZWZ7b2JqZmlsZS1nZGIucHkgZmlsZX0pLgotKwotK0B0YWJsZSBAY29kZQot K0BhbmNob3J7c2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0c30KLStAa2luZGV4IHNldCBhdXRvLWxv YWQgZ2RiLXNjcmlwdHMKLStAaXRlbSBzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIFtvbnxvZmZd Ci0rRW5hYmxlIG9yIGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2Vz IG9mIGNvbW1hbmRzIHNjcmlwdHMuCi0rCi0rQGFuY2hvcntzaG93IGF1dG8tbG9hZCBnZGItc2Ny aXB0c30KLStAa2luZGV4IHNob3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzCi0rQGl0ZW0gc2hvdyBh dXRvLWxvYWQgZ2RiLXNjcmlwdHMKLStTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGNhbm5l ZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBpcyBlbmFibGVkIG9yCi0rZGlzYWJsZWQu Ci0rCi0rQGFuY2hvcntpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0c30KLStAa2luZGV4IGluZm8g YXV0by1sb2FkIGdkYi1zY3JpcHRzCi0rQGNpbmRleCBwcmludCBsaXN0IG9mIGF1dG8tbG9hZGVk IGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cwotK0BpdGVtIGluZm8gYXV0by1s b2FkIGdkYi1zY3JpcHRzIFtAdmFye3JlZ2V4cH1dCi0rUHJpbnQgdGhlIGxpc3Qgb2YgYWxsIGNh bm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyB0aGF0IEB2YWx1ZXtHREJOfQotK2F1 dG8tbG9hZGVkLgotK0BlbmQgdGFibGUKLSsKLStJZiBAdmFye3JlZ2V4cH0gaXMgc3VwcGxpZWQg b25seSBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgd2l0aAotK21hdGNoaW5n IG5hbWVzIGFyZSBwcmludGVkLgotKwotIEBub2RlIE1lc3NhZ2VzL1dhcm5pbmdzCi0gQHNlY3Rp b24gT3B0aW9uYWwgV2FybmluZ3MgYW5kIE1lc3NhZ2VzCi0gCi1AQCAtMjE2MTYsNyArMjE4NDks NyBAQCBhdXRvbWF0aWNhbGx5IGltcG9ydGVkIHdoZW4gQHZhbHVle0dEQk59Ci0gQG1lbnUKLSAq IFB5dGhvbiBDb21tYW5kczo6ICAgICAgICAgICAgIEFjY2Vzc2luZyBQeXRob24gZnJvbSBAdmFs dWV7R0RCTn0uCi0gKiBQeXRob24gQVBJOjogICAgICAgICAgICAgICAgICBBY2Nlc3NpbmcgQHZh bHVle0dEQk59IGZyb20gUHl0aG9uLgotLSogQXV0by1sb2FkaW5nOjogICAgICAgICAgICAgICAg QXV0b21hdGljYWxseSBsb2FkaW5nIFB5dGhvbiBjb2RlLgotKyogUHl0aG9uIEF1dG8tbG9hZGlu Zzo6ICAgICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5nIFB5dGhvbiBjb2RlLgotICogUHl0aG9u IG1vZHVsZXM6OiAgICAgICAgICAgICAgUHl0aG9uIG1vZHVsZXMgcHJvdmlkZWQgYnkgQHZhbHVl e0dEQk59LgotIEBlbmQgbWVudQotIAotQEAgLTIyNzk5LDcgKzIzMDMyLDcgQEAgVGhpcyBwcmFj dGljZSB3aWxsIGVuYWJsZSBAdmFsdWV7R0RCTn0gdAotIHlvdXIgcHJldHR5LXByaW50ZXJzIGF0 IHRoZSBzYW1lIHRpbWUsIGJlY2F1c2UgdGhleSB3aWxsIGhhdmUKLSBkaWZmZXJlbnQgbmFtZXMu Ci0gCi0tWW91IHNob3VsZCB3cml0ZSBhdXRvLWxvYWRlZCBjb2RlIChAcHhyZWZ7QXV0by1sb2Fk aW5nfSkgc3VjaCB0aGF0IGl0Ci0rWW91IHNob3VsZCB3cml0ZSBhdXRvLWxvYWRlZCBjb2RlIChA cHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30pIHN1Y2ggdGhhdCBpdAotIGNhbiBiZSBldmFsdWF0 ZWQgbXVsdGlwbGUgdGltZXMgd2l0aG91dCBjaGFuZ2luZyBpdHMgbWVhbmluZy4gIEFuCi0gaWRl YWwgYXV0by1sb2FkIGZpbGUgd2lsbCBjb25zaXN0IHNvbGVseSBvZiBAY29kZXtpbXBvcnR9cyBv ZiB5b3VyCi0gcHJpbnRlciBtb2R1bGVzLCBmb2xsb3dlZCBieSBhIGNhbGwgdG8gYSByZWdpc3Rl ciBwcmV0dHktcHJpbnRlcnMgd2l0aAotQEAgLTIzNzYwLDcgKzIzOTkzLDcgQEAgVGhlIGZvbGxv d2luZyBvYmpmaWxlLXJlbGF0ZWQgZnVuY3Rpb25zCi0gCi0gQGZpbmRleCBnZGIuY3VycmVudF9v YmpmaWxlCi0gQGRlZnVuIGdkYi5jdXJyZW50X29iamZpbGUgKCkKLS1XaGVuIGF1dG8tbG9hZGlu ZyBhIFB5dGhvbiBzY3JpcHQgKEBweHJlZntBdXRvLWxvYWRpbmd9KSwgQHZhbHVle0dEQk59Ci0r V2hlbiBhdXRvLWxvYWRpbmcgYSBQeXRob24gc2NyaXB0IChAcHhyZWZ7UHl0aG9uIEF1dG8tbG9h ZGluZ30pLCBAdmFsdWV7R0RCTn0KLSBzZXRzIHRoZSBgYGN1cnJlbnQgb2JqZmlsZScnIHRvIHRo ZSBjb3JyZXNwb25kaW5nIG9iamZpbGUuICBUaGlzCi0gZnVuY3Rpb24gcmV0dXJucyB0aGUgY3Vy cmVudCBvYmpmaWxlLiAgSWYgdGhlcmUgaXMgbm8gY3VycmVudCBvYmpmaWxlLAotIHRoaXMgZnVu Y3Rpb24gcmV0dXJucyBAY29kZXtOb25lfS4KLUBAIC0yNDY3MSw5ICsyNDkwNCw5IEBAIHJlc29s dmUgdGhpcyB0byB0aGUgbGF6eSBzdHJpbmcncyBjaGFyYWMKLSB3cml0YWJsZS4KLSBAZW5kIGRl ZnZhcgotIAotLUBub2RlIEF1dG8tbG9hZGluZwotLUBzdWJzZWN0aW9uIEF1dG8tbG9hZGluZwot LUBjaW5kZXggYXV0by1sb2FkaW5nLCBQeXRob24KLStAbm9kZSBQeXRob24gQXV0by1sb2FkaW5n Ci0rQHN1YnNlY3Rpb24gUHl0aG9uIEF1dG8tbG9hZGluZwotK0BjaW5kZXggUHl0aG9uIGF1dG8t bG9hZGluZwotIAotIFdoZW4gYSBuZXcgb2JqZWN0IGZpbGUgaXMgcmVhZCAoZm9yIGV4YW1wbGUs IGR1ZSB0byB0aGUgQGNvZGV7ZmlsZX0KLSBjb21tYW5kLCBvciBiZWNhdXNlIHRoZSBpbmZlcmlv ciBoYXMgbG9hZGVkIGEgc2hhcmVkIGxpYnJhcnkpLAotQEAgLTI0NjkzLDMyICsyNDkyNiwzNSBA QCBBdXRvLWxvYWRpbmcgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQsCi0gYW5kIHRoZSBsaXN0 IG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgY2FuIGJlIHByaW50ZWQuCi0gCi0gQHRhYmxlIEBjb2Rl Ci0tQGtpbmRleCBzZXQgYXV0by1sb2FkLXNjcmlwdHMKLS1AaXRlbSBzZXQgYXV0by1sb2FkLXNj cmlwdHMgW3llc3xub10KLStAYW5jaG9ye3NldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9Ci0r QGtpbmRleCBzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCi0rQGl0ZW0gc2V0IGF1dG8tbG9h ZCBweXRob24tc2NyaXB0cyBbb258b2ZmXQotIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBhdXRvLWxv YWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMuCi0gCi0tQGtpbmRleCBzaG93IGF1dG8tbG9hZC1zY3Jp cHRzCi0tQGl0ZW0gc2hvdyBhdXRvLWxvYWQtc2NyaXB0cwotK0BhbmNob3J7c2hvdyBhdXRvLWxv YWQgcHl0aG9uLXNjcmlwdHN9Ci0rQGtpbmRleCBzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0 cwotK0BpdGVtIHNob3cgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCi0gU2hvdyB3aGV0aGVyIGF1 dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgotIAot LUBraW5kZXggaW5mbyBhdXRvLWxvYWQtc2NyaXB0cwotLUBjaW5kZXggcHJpbnQgbGlzdCBvZiBh dXRvLWxvYWRlZCBzY3JpcHRzCi0tQGl0ZW0gaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbQHZhcnty ZWdleHB9XQotLVByaW50IHRoZSBsaXN0IG9mIGFsbCBzY3JpcHRzIHRoYXQgQHZhbHVle0dEQk59 IGF1dG8tbG9hZGVkLgotK0BhbmNob3J7aW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9Ci0r QGtpbmRleCBpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cwotK0BjaW5kZXggcHJpbnQgbGlz dCBvZiBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cwotK0BpdGVtIGluZm8gYXV0by1sb2FkIHB5 dGhvbi1zY3JpcHRzIFtAdmFye3JlZ2V4cH1dCi0rUHJpbnQgdGhlIGxpc3Qgb2YgYWxsIFB5dGhv biBzY3JpcHRzIHRoYXQgQHZhbHVle0dEQk59IGF1dG8tbG9hZGVkLgotIAotLUFsc28gcHJpbnRl ZCBpcyB0aGUgbGlzdCBvZiBzY3JpcHRzIHRoYXQgd2VyZSBtZW50aW9uZWQgaW4KLStBbHNvIHBy aW50ZWQgaXMgdGhlIGxpc3Qgb2YgUHl0aG9uIHNjcmlwdHMgdGhhdCB3ZXJlIG1lbnRpb25lZCBp bgotIHRoZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24gYW5kIHdlcmUgbm90IGZv dW5kCi0gKEBweHJlZntkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufSkuCi0gVGhpcyBpcyB1 c2VmdWwgYmVjYXVzZSB0aGVpciBuYW1lcyBhcmUgbm90IHByaW50ZWQgd2hlbiBAdmFsdWV7R0RC Tn0KLSB0cmllcyB0byBsb2FkIHRoZW0gYW5kIGZhaWxzLiAgVGhlcmUgbWF5IGJlIG1hbnkgb2Yg dGhlbSwgYW5kIHByaW50aW5nCi0gYW4gZXJyb3IgbWVzc2FnZSBmb3IgZWFjaCBvbmUgaXMgcHJv YmxlbWF0aWMuCi0gCi0tSWYgQHZhcntyZWdleHB9IGlzIHN1cHBsaWVkIG9ubHkgc2NyaXB0cyB3 aXRoIG1hdGNoaW5nIG5hbWVzIGFyZSBwcmludGVkLgotK0lmIEB2YXJ7cmVnZXhwfSBpcyBzdXBw bGllZCBvbmx5IFB5dGhvbiBzY3JpcHRzIHdpdGggbWF0Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQu Ci0gCi0gRXhhbXBsZToKLSAKLSBAc21hbGxleGFtcGxlCi0tKGdkYikgaW5mbyBhdXRvLWxvYWQt c2NyaXB0cwotKyhnZGIpIGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCi0gTG9hZGVkICBT Y3JpcHQKLSBZZXMgICAgIHB5LXNlY3Rpb24tc2NyaXB0LnB5Ci0gICAgICAgICBmdWxsIG5hbWU6 IC90bXAvcHktc2VjdGlvbi1zY3JpcHQucHkKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9weXRob24vcHktYXV0by1sb2FkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIw MTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1 ODQzNzUwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRv LWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAotQEAgLTMxLDI5ICsz MSw1NiBAQAotIAotICNpbmNsdWRlICJweXRob24taW50ZXJuYWwuaCIKLSAKLS0vKiBOT1RFOiBJ dCdzIHRyaXZpYWwgdG8gYWxzbyBzdXBwb3J0IGF1dG8tbG9hZGluZyBub3JtYWwgZ2RiIHNjcmlw dHMuCi0tICAgVGhlcmUgaGFzIHlldCB0byBiZSBhIG5lZWQgc28gaXQncyBub3QgaW1wbGVtZW50 ZWQuICAqLwotLQotIC8qIFRoZSBzdWZmaXggb2YgcGVyLW9iamZpbGUgc2NyaXB0cyB0byBhdXRv LWxvYWQuCi0gICAgRS5nLiBXaGVuIHRoZSBwcm9ncmFtIGxvYWRzIGxpYmZvby5zbywgbG9vayBm b3IgbGliZm9vLWdkYi5weS4gICovCi0gI2RlZmluZSBHREJQWV9BVVRPX0ZJTEVfTkFNRSAiLWdk Yi5weSIKLSAKLS0vKiBUaGUgc2VjdGlvbiB0byBsb29rIGZvciBzY3JpcHRzIChpbiBmaWxlIGZv cm1hdHMgdGhhdCBzdXBwb3J0IHNlY3Rpb25zKS4KLSsvKiBUaGUgc2VjdGlvbiB0byBsb29rIGZv ciBQeXRob24gYXV0by1sb2FkZWQgc2NyaXB0cyAoaW4gZmlsZSBmb3JtYXRzIHRoYXQKLSsgICBz dXBwb3J0IHNlY3Rpb25zKS4KLSAgICBFYWNoIGVudHJ5IGluIHRoaXMgc2VjdGlvbiBpcyBhIGJ5 dGUgb2YgdmFsdWUgMSwgYW5kIHRoZW4gdGhlIG51bC10ZXJtaW5hdGVkCi0gICAgbmFtZSBvZiB0 aGUgc2NyaXB0LiAgVGhlIHNjcmlwdCBuYW1lIG1heSBpbmNsdWRlIGEgZGlyZWN0b3J5LgotICAg IFRoZSBsZWFkaW5nIGJ5dGUgaXMgdG8gYWxsb3cgdXB3YXJkIGNvbXBhdGlibGUgZXh0ZW5zaW9u cy4gICovCi0gI2RlZmluZSBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSAiLmRlYnVnX2dkYl9zY3Jp cHRzIgotIAotLS8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8t bG9hZGluZzoKLS0gICBzZXQgYXV0by1sb2FkLXNjcmlwdHMgb258b2ZmCi0tICAgVGhpcyBpcyB0 cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRlZCBzY3JpcHRzIHdoZW4gYW4gb2Jq ZmlsZQotLSAgIGlzIG9wZW5lZCwgZmFsc2Ugb3RoZXJ3aXNlLgotLSAgIEF0IHRoZSBtb21lbnQs IHRoaXMgb25seSBhZmZlY3RzIHB5dGhvbiBzY3JpcHRzLCBidXQgdGhlcmUncyBubyByZWFzb24K LS0gICBvbmUgY291bGRuJ3QgYWxzbyBoYXZlIG90aGVyIGtpbmRzIG9mIGF1dG8tbG9hZGVkIHNj cmlwdHMsIGFuZCB0aGVyZSdzCi0tICAgbm8gcmVhc29uIHRvIGhhdmUgdGhlbSBlYWNoIGNvbnRy b2xsZWQgYnkgYSBzZXBhcmF0ZSBmbGFnLgotLSAgIFNvIHdlIGVsaWRlICJweXRob24iIGZyb20g dGhlIG5hbWUgaGVyZSBhbmQgaW4gdGhlIG9wdGlvbi4KLS0gICBUaGUgZmFjdCB0aGF0IGl0IGxp dmVzIGhlcmUgaXMganVzdCBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICAqLwotLXN0YXRpYyBp bnQgYXV0b19sb2FkX3NjcmlwdHMgPSAxOwotKy8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVu YWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0czoKLSsgICBzZXQgYXV0 by1sb2FkIHB5dGhvbi1zY3JpcHRzIG9ufG9mZgotKyAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91 bGQgYXV0by1sb2FkIGFzc29jaWF0ZWQgUHl0aG9uIHNjcmlwdHMgd2hlbiBhbgotKyAgIG9iamZp bGUgaXMgb3BlbmVkLCBmYWxzZSBvdGhlcndpc2UuICAqLwotK3N0YXRpYyBpbnQgYXV0b19sb2Fk X3B5dGhvbl9zY3JpcHRzID0gMTsKLSsKLStzdGF0aWMgdm9pZCBnZGJweV9sb2FkX2F1dG9fc2Ny aXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkJCQlGSUxFICpm aWxlLAotKwkJCQkJCWNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLSsKLSsvKiAic2hvdyIgY29tbWFu ZCBmb3IgdGhlIGF1dG9fbG9hZF9weXRob25fc2NyaXB0cyBjb25maWd1cmF0aW9uIHZhcmlhYmxl LiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nob3dfYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzIChz dHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotKwkJCSAgICAgICBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgZnByaW50Zl9maWx0 ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlzICVzLlxuIiks IHZhbHVlKTsKLSt9Ci0rCi0rLyogRGVmaW5pdGlvbiBvZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIFB5 dGhvbiBzY3JpcHRzLiAgKi8KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFn ZSBzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uCi0rICA9IHsgR0RCUFlfQVVUT19GSUxFX05BTUUsIGdk YnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUgfTsKLSsKLSsvKiBXcmFwcGVyIG9mIHNv dXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIGZvciBzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9u LiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2dkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZp bGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotKwkJCQkgICAgY29uc3Qg Y2hhciAqZmlsZW5hbWUpCi0rewotKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNw YWNlX2luZm87Ci0rCi0rICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9v IHNvICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIKLSsgICAgIGNhbiBwcmludCBpdC4g ICovCi0rICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRp bmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0rICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2Vf aW5mbywgZmlsZW5hbWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7Ci0rCi0r ICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZmlsZSwgZmlsZW5h bWUpOwotK30KLSAKLSAvKiBMb2FkIHNjcmlwdHMgc3BlY2lmaWVkIGluIE9CSkZJTEUuCi0gICAg U1RBUlQsRU5EIGRlbGltaXQgYSBidWZmZXIgY29udGFpbmluZyBhIGxpc3Qgb2YgbnVsLXRlcm1p bmF0ZWQKLUBAIC0xMjEsNiArMTQ4LDE3IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVj dCBvYmpmaWxlICoKLSAJICBtYWtlX2NsZWFudXBfZmNsb3NlIChzdHJlYW0pOwotIAkgIG1ha2Vf Y2xlYW51cCAoeGZyZWUsIGZ1bGxfcGF0aCk7Ci0gCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBm dWxsX3BhdGggPSBOVUxMOwotKwotKwkgIC8qIFdlIGRvbid0IHRocm93IGFuIGVycm9yLCB0aGUg cHJvZ3JhbSBpcyBzdGlsbCBkZWJ1Z2dhYmxlLiAgKi8KLSsJICBpZiAoc2NyaXB0X25vdF9mb3Vu ZF93YXJuaW5nX3ByaW50IChwc3BhY2VfaW5mbykpCi0rCSAgICB3YXJuaW5nIChfKCJNaXNzaW5n IGF1dG8tbG9hZCBzY3JpcHRzIHJlZmVyZW5jZWQgaW4gc2VjdGlvbiAlc1xuXAotK29mIGZpbGUg JXNcblwKLStVc2UgYGluZm8gYXV0by1sb2FkIHB5dGhvbiBbUkVHRVhQXScgdG8gbGlzdCB0aGVt LiIpLAotKwkJICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7Ci0r CX0KLSAKLSAgICAgICAvKiBJZiBvbmUgc2NyaXB0IGlzbid0IGZvdW5kIGl0J3Mgbm90IHVuY29t bW9uIGZvciBtb3JlIHRvIG5vdCBiZQotIAkgZm91bmQgZWl0aGVyLiAgV2UgZG9uJ3Qgd2FudCB0 byBwcmludCBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNoCi1AQCAtMTI5LDI0ICsxNjcsMTIgQEAg c291cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbGUgKgotIAotIAkgSVdCTiBpZiBj b21wbGFpbnRzLmMgd2VyZSBtb3JlIGdlbmVyYWwtcHVycG9zZS4gICovCi0gCi0tICAgICAgaW5f aGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLAotLQkJCQkJ b3BlbmVkID8gZnVsbF9wYXRoIDogTlVMTCk7Ci0rICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJl X2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLCBmdWxsX3BhdGgsCi0rCQkJCQkmc2NyaXB0 X2xhbmd1YWdlX3B5dGhvbik7Ci0gCi0tICAgICAgaWYgKCEgb3BlbmVkKQotLQl7Ci0tCSAgLyog V2UgZG9uJ3QgdGhyb3cgYW4gZXJyb3IsIHRoZSBwcm9ncmFtIGlzIHN0aWxsIGRlYnVnZ2FibGUu ICAqLwotLQkgIGlmIChzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHBzcGFjZV9pbmZv KSkKLS0JICAgIHdhcm5pbmcgKF8oIk1pc3NpbmcgYXV0by1sb2FkIHNjcmlwdHMgcmVmZXJlbmNl ZCBpbiBzZWN0aW9uICVzXG5cCi0tb2YgZmlsZSAlc1xuXAotLVVzZSBgaW5mbyBhdXRvLWxvYWQt c2NyaXB0cyBbUkVHRVhQXScgdG8gbGlzdCB0aGVtLiIpLAotLQkJICAgICBHREJQWV9BVVRPX1NF Q1RJT05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7Ci0tCX0KLS0gICAgICBlbHNlCi0tCXsKLS0JICAv KiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLwotLQkg IGlmICghIGluX2hhc2hfdGFibGUpCi0tCSAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2Jq ZmlsZSAob2JqZmlsZSwgc3RyZWFtLCBmdWxsX3BhdGgpOwotLQl9Ci0rICAgICAgLyogSWYgdGhp cyBmaWxlIGlzIG5vdCBjdXJyZW50bHkgbG9hZGVkLCBsb2FkIGl0LiAgKi8KLSsgICAgICBpZiAo b3BlbmVkICYmICFpbl9oYXNoX3RhYmxlKQotKwlzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2Jq ZmlsZSAob2JqZmlsZSwgc3RyZWFtLCBmdWxsX3BhdGgpOwotIAotICAgICAgIGRvX2NsZWFudXBz IChiYWNrX3RvKTsKLSAgICAgfQotQEAgLTE4MSwzNiArMjA3LDc1IEBAIGF1dG9fbG9hZF9zZWN0 aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWwKLSAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7Ci0g fQotIAotLS8qIExvYWQgYW55IGF1dG8tbG9hZGVkIHNjcmlwdHMgZm9yIE9CSkZJTEUuICAqLwot Ky8qIExvYWQgYW55IFB5dGhvbiBhdXRvLWxvYWRlZCBzY3JpcHRzIGZvciBPQkpGSUxFLiAgKi8K LSAKLSB2b2lkCi0tbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlKQotK2dkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSkKLSB7Ci0tICBpZiAoYXV0b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlf Z2xvYmFsX2F1dG9fbG9hZCkKLSsgIGlmIChhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMpCi0gICAg IHsKLS0gICAgICBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKG9iamZpbGUsIEdEQlBZX0FVVE9f RklMRV9OQU1FKTsKLSsgICAgICBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKG9iamZpbGUsICZz Y3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKLSAgICAgICBhdXRvX2xvYWRfc2VjdGlvbl9zY3JpcHRz IChvYmpmaWxlLCBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSk7Ci0gICAgIH0KLSB9Ci0rCi0rLyog V3JhcHBlciBmb3IgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIi4gICovCi0rCi0rc3Rh dGljIHZvaWQKLStpbmZvX2F1dG9fbG9hZF9weXRob25fc2NyaXB0cyAoY2hhciAqcGF0dGVybiwg aW50IGZyb21fdHR5KQotK3sKLSsgIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMgKHBhdHRlcm4sIGZy b21fdHR5LCAmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7Ci0rfQotIAwKLSB2b2lkCi0gZ2RicHlf aW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpCi0gewotKyAgc3RydWN0IGNtZF9saXN0X2VsZW1l bnQgKmNtZDsKLSsgIGNoYXIgKmNtZF9uYW1lOwotKwotKyAgYWRkX3NldHNob3dfYm9vbGVhbl9j bWQgKCJweXRob24tc2NyaXB0cyIsIGNsYXNzX3N1cHBvcnQsCi0rCQkJICAgJmF1dG9fbG9hZF9w eXRob25fc2NyaXB0cywgXygiXAotK1NldCB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJk aW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLiIpLCBfKCJcCi0rU2hvdyB0aGUgZGVidWdn ZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLiIpLCBf KCJcCi0rSWYgZW5hYmxlZCwgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMgYXJlIGxvYWRlZCB3 aGVuIHRoZSBkZWJ1Z2dlciByZWFkc1xuXAotK2FuIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJh cnkuXG5cCi0rVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZm9yIHVudHJ1 c3RlZCBpbmZlcmlvcnMuIiksCi0rCQkJICAgTlVMTCwgc2hvd19hdXRvX2xvYWRfcHl0aG9uX3Nj cmlwdHMsCi0rCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKLSsJCQkgICBhdXRv X2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7Ci0rCi0gICBhZGRfc2V0c2hvd19ib29sZWFuX2Nt ZCAoImF1dG8tbG9hZC1zY3JpcHRzIiwgY2xhc3Nfc3VwcG9ydCwKLS0JCQkgICAmYXV0b19sb2Fk X3NjcmlwdHMsIF8oIlwKLS1TZXQgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBh dXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCi0tU2hvdyB0aGUgZGVidWdnZXIncyBiZWhhdmlv dXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKLS1JZiBlbmFibGVkLCBh dXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBsb2FkZWQgd2hlbiB0aGUgZGVidWdnZXIgcmVhZHNcblwK LS1hbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LiIpLAotLQkJCSAgIE5VTEwsIE5VTEws Ci0tCQkJICAgJnNldGxpc3QsCi0tCQkJICAgJnNob3dsaXN0KTsKLSsJCQkgICAmYXV0b19sb2Fk X3B5dGhvbl9zY3JpcHRzLCBfKCJcCi0rU2V0IHRoZSBkZWJ1Z2dlcidzIGJlaGF2aW91ciByZWdh cmRpbmcgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMsICIKLSsJCQkJCQkJCSAiZGVwcmVjYXRl ZC4iKSwKLSsJCQkgICBfKCJcCi0rU2hvdyB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJk aW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLCAiCi0rCQkJCQkJCQkgImRlcHJlY2F0ZWQu IiksCi0rCQkJICAgTlVMTCwgTlVMTCwgc2hvd19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsCi0r CQkJICAgJnNldGxpc3QsICZzaG93bGlzdCk7Ci0rICBjbWRfbmFtZSA9ICJhdXRvLWxvYWQtc2Ny aXB0cyI7Ci0rICBjbWQgPSBsb29rdXBfY21kICgmY21kX25hbWUsIHNldGxpc3QsICIiLCAtMSwg MSk7Ci0rICBkZXByZWNhdGVfY21kIChjbWQsICJzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRz Iik7Ci0rCi0rICAvKiBJdCBpcyBuZWVkZWQgYmVjYXVzZSBsb29rdXBfY21kIHVwZGF0ZXMgdGhl IENNRF9OQU1FIHBvaW50ZXIuICAqLwotKyAgY21kX25hbWUgPSAiYXV0by1sb2FkLXNjcmlwdHMi OwotKyAgY21kID0gbG9va3VwX2NtZCAoJmNtZF9uYW1lLCBzaG93bGlzdCwgIiIsIC0xLCAxKTsK LSsgIGRlcHJlY2F0ZV9jbWQgKGNtZCwgInNob3cgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIik7 Ci0rCi0rICBhZGRfY21kICgicHl0aG9uLXNjcmlwdHMiLCBjbGFzc19pbmZvLCBpbmZvX2F1dG9f bG9hZF9weXRob25fc2NyaXB0cywKLSsJICAgXygiUHJpbnQgdGhlIGxpc3Qgb2YgYXV0b21hdGlj YWxseSBsb2FkZWQgUHl0aG9uIHNjcmlwdHMuXG5cCi0rVXNhZ2U6IGluZm8gYXV0by1sb2FkIHB5 dGhvbi1zY3JpcHRzIFtSRUdFWFBdIiksCi0rCSAgIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0 ICgpKTsKLSsKLSsgIGNtZCA9IGFkZF9pbmZvICgiYXV0by1sb2FkLXNjcmlwdHMiLCBpbmZvX2F1 dG9fbG9hZF9weXRob25fc2NyaXB0cywgXygiXAotK1ByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRp Y2FsbHkgbG9hZGVkIFB5dGhvbiBzY3JpcHRzLCBkZXByZWNhdGVkLiIpKTsKLSsgIGRlcHJlY2F0 ZV9jbWQgKGNtZCwgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIik7Ci0gfQotIAotICNl bHNlIC8qICEgSEFWRV9QWVRIT04gKi8KLSAKLSB2b2lkCi0tbG9hZF9hdXRvX3NjcmlwdHNfZm9y X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK2dkYnB5X2xvYWRfYXV0b19zY3Jp cHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSB7Ci0gfQotIAotSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMDQt MTggMDA6NDQ6MjYuOTU4NDM3NTAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv cHl0aG9uL3B5dGhvbi5oCTIwMTItMDQtMTggMDA6NDQ6MjYuOTc5NDM3NDQ2ICswMjAwCi1AQCAt NDEsNyArNDEsNyBAQCBpbnQgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwCi0g Ci0gdm9pZCBwcmVzZXJ2ZV9weXRob25fdmFsdWVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg aHRhYl90IGNvcGllZF90eXBlcyk7Ci0gCi0tdm9pZCBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2Jq ZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwotK3ZvaWQgZ2RicHlfbG9hZF9hdXRvX3Nj cmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKLSAKLSBpbnQgZ2Ri cHlfc2hvdWxkX3N0b3AgKHN0cnVjdCBicmVha3BvaW50X29iamVjdCAqYnBfb2JqKTsKLSAKLUlu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9oZWxwLmV4cAkyMDEyLTAxLTA0IDA5OjE3OjQ1LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAkyMDEy LTA0LTE4IDAwOjQ0OjI2Ljk4MDQzNzQ0NCArMDIwMAotQEAgLTI0LDcgKzI0LDcgQEAKLSBnZGJf c3RhcnQKLSAKLSAjIGZvcmNlIHRoZSBoZWlnaHQgb2YgdGhlIGRlYnVnZ2VyIHRvIGJlIHByZXR0 eSBsYXJnZSBzbyBubyBwYWdlcnMgZ2V0IHVzZWQKLS1nZGJfdGVzdF9ub19vdXRwdXQgInNldCBo ZWlnaHQgNDAwIiAidGVzdCBzZXQgaGVpZ2h0IgotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGhl aWdodCA1MDAiICJ0ZXN0IHNldCBoZWlnaHQiCi0gCi0gIyB1c2UgYSBsYXJnZXIgZXhwZWN0IGlu cHV0IGJ1ZmZlciBmb3IgbG9uZyBoZWxwIG91dHB1dHMuCi0gIyB0ZXN0IGhlbHAgYWRkLXN5bWJv bC1maWxlCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAJ MjAxMi0wMS0xNiAxNzoyMTo1Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAJMjAxMi0w NC0xOCAwMDo0Njo0Ny41NTgwNzk3NzQgKzAyMDAKLUBAIC00MCw3ICs0MCw3IEBAIGdkYl9yZWlu aXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotIGdkYl9sb2FkICR7YmluZmlsZX0KLSAKLSAj IFZlcmlmeSBnZGIgbG9hZGVkIHRoZSBzY3JpcHQuCi0tZ2RiX3Rlc3QgImluZm8gYXV0by1sb2Fk LXNjcmlwdHMiICJZZXMuKi8ke3Rlc3RmaWxlfS1nZGIucHkuKiIKLStnZGJfdGVzdCAiaW5mbyBh dXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiICJZZXMuKi8ke3Rlc3RmaWxlfS1nZGIucHkuKiIKLSAK LSBpZiAhW3J1bnRvX21haW5dIHsKLSAgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gbWFpbiIK LUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1z ZWN0aW9uLXNjcmlwdC5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTAx LTE2IDE3OjIxOjUyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAw OjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAotQEAgLTUyLDExICs1MiwxMSBAQCBnZGJfcmVpbml0aWFs aXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLSBnZGJfbG9hZCAke2JpbmZpbGV9Ci0gCi0gIyBWZXJp ZnkgZ2RiIGxvYWRlZCB0aGUgc2NyaXB0LgotLWdkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZC1zY3Jp cHRzIiAiWWVzLioke3Rlc3RmaWxlfS5weS4qZnVsbCBuYW1lOiAuKi8ke3Rlc3RmaWxlfS5weS4q IgotK2dkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIgIlllcy4qJHt0ZXN0 ZmlsZX0ucHkuKmZ1bGwgbmFtZTogLiovJHt0ZXN0ZmlsZX0ucHkuKiIKLSAjIEFnYWluLCB3aXRo IGEgcmVnZXhwIHRoaXMgdGltZS4KLS1nZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyAk e3Rlc3RmaWxlfSIgIlllcy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1bGwgbmFtZTogLiovJHt0ZXN0Zmls ZX0ucHkuKiIKLStnZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgJHt0ZXN0 ZmlsZX0iICJZZXMuKiR7dGVzdGZpbGV9LnB5LipmdWxsIG5hbWU6IC4qLyR7dGVzdGZpbGV9LnB5 LioiCi0gIyBBZ2Fpbiwgd2l0aCBhIHJlZ2V4cCB0aGF0IG1hdGNoZXMgbm8gc2NyaXB0cy4KLS1n ZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBuby1zY3JpcHQtbWF0Y2hlcy10aGlzIiBc Ci0rZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIG5vLXNjcmlwdC1tYXRj aGVzLXRoaXMiIFwKLSAgICJObyBhdXRvLWxvYWQgc2NyaXB0cyBtYXRjaGluZyBuby1zY3JpcHQt bWF0Y2hlcy10aGlzLiIKLSAKLSBpZiAhW3J1bnRvX21haW5dIHsKCmRpZmYgLS1naXQgYS9nZGIt YXV0b2xvYWQtMTBvZjE4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTEwb2YxOC5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTk2OTgyCi0tLSAvZGV2L251bGwKKysrIGIv Z2RiLWF1dG9sb2FkLTEwb2YxOC5wYXRjaApAQCAtMCwwICsxLDE3MDQgQEAKK1twYXRjaCM0IDQv OF0gc2V0IGF1dG8tbG9hZCAqIG1haW4gcGFydAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwODguaHRtbAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExMy5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwky MDEyLzA0LzE3IDE1OjQ5OjExCTEuMTQxMTIKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0 LzE3IDE1OjUxOjQxCTEuMTQxMTMKKyMjIC0xLDUgKzEsMTAxIEBACisgMjAxMi0wNC0xNyAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorKwlhdXRvLWxvYWQ6 IEltcGxlbWVudGF0aW9uLgorKwkqIE5FV1M6IE5ldyBkZXNjcmlwdGlvbnMgZm9yICJpbmZvIGF1 dG8tbG9hZCIsCisrCSJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIsICJpbmZvIGF1dG8tbG9h ZCBweXRob24tc2NyaXB0cyIsCisrCSJpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiBhbmQg ImluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYiIuCisrCURlcHJlY2F0ZSAiaW5mbyBhdXRvLWxv YWQtc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkLXNjcmlwdHMgb258b2ZmIgorKwlhbmQgInNob3cg YXV0by1sb2FkLXNjcmlwdHMiLiAgTmV3IGRlc2NyaXB0aW9uIGZvciAic2V0IGF1dG8tbG9hZCIs CisrCSJzaG93IGF1dG8tbG9hZCIsICJzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIiwKKysJInNo b3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMi LAorKwkic2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZCBsb2Nh bC1nZGJpbml0IiwKKysJInNob3cgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiLCAic2V0IGF1dG8t bG9hZCBsaWJ0aHJlYWQtZGIiIGFuZAorKwkic2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIi4K KysJKiBhdXRvLWxvYWQuYzogUmVtb3ZlIGluY2x1ZGUgcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5o LiAgQWRkIGluY2x1ZGVzCisrCWV4Y2VwdGlvbnMuaCwgY2xpL2NsaS1zY3JpcHQuaCwgZ2RiY21k LmgsIGNsaS9jbGktZGVjb2RlLmggYW5kCisrCWNsaS9jbGktc2V0c2hvdy5oLgorKwkoR0RCX0FV VE9fRklMRV9OQU1FLCBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSkKKysJKGF1dG9fbG9h ZF9nZGJfc2NyaXB0cywgc2hvd19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMpOiBOZXcuCisrCShnZGJw eV9nbG9iYWxfYXV0b19sb2FkKTogUmVuYW1lIHRvIC4uLgorKwkoZ2xvYmFsX2F1dG9fbG9hZCk6 IC4uLiBoZXJlLgorKwkoYXV0b19sb2FkX2xvY2FsX2dkYmluaXQsIGF1dG9fbG9hZF9sb2NhbF9n ZGJpbml0X3BhdGhuYW1lKQorKwkoYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkLCBzaG93 X2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0KQorKwkoc2NyaXB0X2xhbmd1YWdlX2dkYiwgc291cmNl X2dkYl9zY3JpcHRfZm9yX29iamZpbGUpOiBOZXcuCisrCShzdHJ1Y3QgbG9hZGVkX3NjcmlwdCk6 IE5ldyBmaWVsZCBsYW5ndWFnZS4KKysJKGhhc2hfbG9hZGVkX3NjcmlwdF9lbnRyeSwgZXFfbG9h ZGVkX3NjcmlwdF9lbnRyeSk6IENhbGN1bGF0ZSBhbHNvCisrCUxBTkdVQUdFLgorKwkobWF5YmVf YWRkX3NjcmlwdCk6IEFkZCBwYXJhbWV0ZXIgbGFuZ3VhZ2UuICBEcm9wIHJlZHVuZGFudAorKwll bnRyeS5mdWxsX3BhdGggaW5pdGlhbGl6YXRpb24uICBJbml0aWFsaXplIGVudHJ5Lmxhbmd1YWdl IGFuZAorKwkoKnNsb3QpLT5sYW5ndWFnZS4KKysJKGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6 IENoYW5nZSBwYXJhbWV0ZXIgc3VmZml4IHRvIGxhbmd1YWdlLgorKwlSZW1vdmUgdGhlIGNhbGwg b2YgbWF5YmVfYWRkX3NjcmlwdC4KKysJQ2FsbCBsYW5ndWFnZS0+c291cmNlX3NjcmlwdF9mb3Jf b2JqZmlsZS4KKysJKGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlLCBzdHJ1Y3QgY29sbGVj dF9tYXRjaGluZ19zY3JpcHRzX2RhdGEpOgorKwlOZXcuCisrCShjb2xsZWN0X21hdGNoaW5nX3Nj cmlwdHMpOiBBZGp1c3QgaXQgZm9yCisrCXN0cnVjdCBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHNf ZGF0YS4KKysJKGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubCk6IE5ldyB2YXJpYWJs ZS4KKysJKGluZm9fYXV0b19sb2FkX3NjcmlwdHMpOiBSZW5hbWUgdG8gLi4uCisrCShhdXRvX2xv YWRfaW5mb19zY3JpcHRzKTogLi4uIGhlcmUsIGFkZCBwYXJhbWV0ZXIgbGFuZ3VhZ2UuICBBZGp1 c3QgaXQKKysJZm9yIHN0cnVjdCBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHNfZGF0YS4KKysJKGlu Zm9fYXV0b19sb2FkX2dkYl9zY3JpcHRzLCBpbmZvX2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0KQor Kwkoc2V0X2F1dG9fbG9hZF9jbWQsIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQsIHNob3dfYXV0 b19sb2FkX2NtZCkKKysJKGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0LCBpbmZvX2F1dG9fbG9h ZF9jbWQpCisrCShhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCk6IE5ldy4KKysJKF9pbml0aWFs aXplX2F1dG9fbG9hZCk6IE1vdmUgYWRkX2luZm8gb2YgImF1dG8tbG9hZC1zY3JpcHRzIiB0bwor KwlweXRob24vcHktYXV0by1sb2FkLmMuICBOZXcgaW5zdGFsbG1lbnQgZm9yICJzZXQgYXV0by1s b2FkIGdkYi1zY3JpcHRzIiwKKysJImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIiwgInNldCBh dXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIgYW5kCisrCSJpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJp bml0Ii4KKysJKiBhdXRvLWxvYWQuaCAoc3RydWN0IHNjcmlwdF9sYW5ndWFnZSk6IE5ldy4KKysJ KGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQpOiBSZW5hbWUgdG8gLi4uCisrCShnbG9iYWxfYXV0b19s b2FkKTogLi4uIGhlcmUuCisrCShhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCwgYXV0b19sb2FkX2xv Y2FsX2dkYmluaXRfcGF0aG5hbWUpCisrCShhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQp OiBOZXcgZGVjbGFyYXRpb25zLgorKwkobWF5YmVfYWRkX3NjcmlwdCk6IE5ldyBwYXJhbWV0ZXIg bGFuZ3VhZ2UuCisrCShhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQpOiBDaGFuZ2UgcGFyYW1ldGVy IHN1ZmZpeCB0byBsYW5ndWFnZS4KKysJKGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlLCBh dXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmwpCisrCShhdXRvX2xvYWRfaW5mb19zY3Jp cHRzLCBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0KQorKwkoYXV0b19sb2FkX3Nob3dfY21kbGlz dF9nZXQsIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0KTogTmV3CisrCWRlY2xhcmF0aW9ucy4K KysJKiBsaW51eC10aHJlYWQtZGIuYzogSW5jbHVkZSBhdXRvLWxvYWQuaCBhbmQgY3R5cGUuaC4K KysJKGF1dG9fbG9hZF90aHJlYWRfZGIsIHNob3dfYXV0b19sb2FkX3RocmVhZF9kYik6IE5ldy4K KysJKHN0cnVjdCB0aHJlYWRfZGJfaW5mbyk6IE5ldyBmaWVsZCBmaWxlbmFtZS4KKysJKGRlbGV0 ZV90aHJlYWRfZGJfaW5mbyk6IENhbGwgeGZyZWUgZm9yIEZJTEVOQU1FLgorKwkodHJ5X3RocmVh ZF9kYl9sb2FkKTogSW5pdGlhbGl6ZSBGSUxFTkFNRS4KKysJKHRyeV90aHJlYWRfZGJfbG9hZF9m cm9tX3BkaXIsIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2Rpcik6IFJldHVybgorKwlpZiAhQVVU T19MT0FEX1RIUkVBRF9EQi4KKysJKGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYl9jb21wYXJl LCBpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIpOiBOZXcuCisrCShfaW5pdGlhbGl6ZV90aHJl YWRfZGIpOiBJbnN0YWxsIGF1dG9fbG9hZF90aHJlYWRfZGIKKysJYXMgInNldCBhdXRvLWxvYWQg bGlidGhyZWFkLWRiIiBhbmQgaW5zdGFsbCBpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIKKysJ YXMgImluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYiIuCisrCSogbWFpbi5jIChjYXB0dXJlZF9t YWluKTogUmVuYW1lIGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgdG8KKysJZ2xvYmFsX2F1dG9fbG9h ZC4gIEluaXRpYWxpemUgQVVUT19MT0FEX0xPQ0FMX0dEQklOSVRfUEFUSE5BTUUgYW5kCisrCUFV VE9fTE9BRF9MT0NBTF9HREJJTklUX0xPQURFRC4KKysJKHByaW50X2dkYl9oZWxwKTogRXh0ZW5k IHRoZSBoZWxwIGZvciAnbG9jYWwgaW5pdCBmaWxlJy4KKysJKiBweXRob24vcHktYXV0by1sb2Fk LmM6IFJlbW92ZSBhIGNvbW1lbnQgYWJvdXQgZ2RiIHNjcmlwdHMgZXh0ZW5zaW9uLgorKwkoR0RC UFlfQVVUT19TRUNUSU9OX05BTUUpOiBFeHRlbmQgdGhlIGNvbW1lbnQgaXQgaXMgUHl0aG9uIHNw ZWNpZmljLgorKwkoYXV0b19sb2FkX3NjcmlwdHMpOiBSZW5hbWUgdG8gLi4uCisrCShhdXRvX2xv YWRfcHl0aG9uX3NjcmlwdHMpOiAuLi4gaGVyZSwgdXBkYXRlIHRoZSBjb21tZW50LgorKwkoZ2Ri cHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSk6IE5ldyBkZWNsYXJhdGlvbi4KKysJKHNo b3dfYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLCBzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKQorKwko Z2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSk6IE5ldy4KKysJKHNvdXJjZV9zZWN0 aW9uX3NjcmlwdHMpOiBSZWZhY3RvciB0aGUgY29kZS4KKysJKGxvYWRfYXV0b19zY3JpcHRzX2Zv cl9vYmpmaWxlKTogUmVuYW1lIHRvIC4uLgorKwkoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9y X29iamZpbGUpOiAuLi4gaGVyZSwgdXBkYXRlIHRoZQorKwlhdXRvX2xvYWRfb2JqZmlsZV9zY3Jp cHQgY2FsbGVyLCBkcm9wIEdEQlBZX0dMT0JBTF9BVVRPX0xPQUQgY2hlY2tpbmcuCisrCShpbmZv X2F1dG9fbG9hZF9weXRob25fc2NyaXB0cyk6IE5ldy4KKysJKGdkYnB5X2luaXRpYWxpemVfYXV0 b19sb2FkKTogTmV3IHZhcmlhYmxlcyBjbWQgYW5kIGNtZF9uYW1lLgorKwlSZW5hbWUgInNldCBh dXRvLWxvYWQtc2NyaXB0cyIgdG8gInNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLgorKwlS ZWdpc3RlciAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIiBhcyBpdHMgZGVwcmVjYXRlZCBhbGlhcy4g IFJlZ2lzdGVyCisrCSJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIuICBSZWdpc3RlciAi aW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIgYXMKKysJaXRzIGRlcHJlY2F0ZWQgYWxpYXMuCisrCShs b2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSk6IFJlbmFtZSB0byAuLi4KKysJKGdkYnB5X2xv YWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogLi4uIGhlcmUuCisrCSogcHl0aG9uL3B5dGhv bi5oIChsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSk6IFJlbmFtZSB0byAuLi4KKysJKGdk YnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogLi4uIGhlcmUuCisrCisrMjAxMi0w NC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworIAlh dXRvLWxvYWQ6IE1vdmUgZmlsZXMuCisgCSogTWFrZWZpbGUuaW4gKFNGSUxFUyk6IEFkZCBhdXRv LWxvYWQuYy4KKyAJKEhGSUxFU19OT19TUkNESVIpOiBBZGQgYXV0by1sb2FkLmguCitJbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUworPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQyOjUxLjIyNjY4MTA2OCArMDIw MAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0OTowMi4w MzU3Mzc2NDQgKzAyMDAKK0BAIC0yOCw2ICsyOCw0NSBAQAorICAgbm93IHNldCBhIGJyZWFrcG9p bnQgaW4gYnVpbGQvZ2NjL2V4cHIuYywgYnV0IG5vdAorICAgYnVpbGQvbGliY3BwL2V4cHIuYy4K KyAKKysqIE5ldyBjb21tYW5kcworKworKyAgKiogImluZm8gYXV0by1sb2FkIiBzaG93cyBzdGF0 dXMgb2YgYWxsIGtpbmRzIG9mIGF1dG8tbG9hZGVkIGZpbGVzLAorKyAgICAgImluZm8gYXV0by1s b2FkIGdkYi1zY3JpcHRzIiBzaG93cyBzdGF0dXMgb2YgYXV0by1sb2FkaW5nIEdEQiBjYW5uZWQK KysgICAgIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBmaWxlcywgImluZm8gYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzIgorKyAgICAgc2hvd3Mgc3RhdHVzIG9mIGF1dG8tbG9hZGluZyBQeXRob24gc2Ny aXB0IGZpbGVzLAorKyAgICAgImluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiIHNob3dzIHN0 YXR1cyBvZiBsb2FkaW5nIGluaXQgZmlsZQorKyAgICAgKC5nZGJpbml0KSBmcm9tIGN1cnJlbnQg ZGlyZWN0b3J5IGFuZCAiaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIiBzaG93cworKyAgICAg c3RhdHVzIG9mIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgc2hhcmVkIGxpYnJh cnkgbG9hZGluZy4KKysKKysgICoqICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiwgInNldCBhdXRv LWxvYWQtc2NyaXB0cyBvbnxvZmYiCisrICAgICBhbmQgInNob3cgYXV0by1sb2FkLXNjcmlwdHMi IGNvbW1hbmRzIGhhdmUgYmVlbiBkZXByZWNhdGVkLCB1c2UgdGhlaXIKKysgICAgICJpbmZvIGF1 dG8tbG9hZCBweXRob24tc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIG9u fG9mZiIKKysgICAgIGFuZCAic2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiIGNvdW50ZXJw YXJ0cyBpbnN0ZWFkLgorKworKyogTmV3IG9wdGlvbnMKKysKKytzZXQgYXV0by1sb2FkIG9mZgor KyAgRGlzYWJsZSBhdXRvLWxvYWRpbmcgZ2xvYmFsbHkuCisrCisrc2hvdyBhdXRvLWxvYWQKKysg IFNob3cgYXV0by1sb2FkaW5nIHNldHRpbmcgb2YgYWxsIGtpbmRzIG9mIGF1dG8tbG9hZGVkIGZp bGVzLgorKworK3NldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMgb258b2ZmCisrc2hvdyBhdXRvLWxv YWQgZ2RiLXNjcmlwdHMKKysgIENvbnRyb2wgYXV0by1sb2FkaW5nIG9mIEdEQiBjYW5uZWQgc2Vx dWVuY2VzIG9mIGNvbW1hbmRzIGZpbGVzLgorKworK3NldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlw dHMgb258b2ZmCisrc2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMKKysgIENvbnRyb2wgYXV0 by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHQgZmlsZXMuCisrCisrc2V0IGF1dG8tbG9hZCBsb2Nh bC1nZGJpbml0IG9ufG9mZgorK3Nob3cgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKKysgIENvbnRy b2wgbG9hZGluZyBvZiBpbml0IGZpbGUgKC5nZGJpbml0KSBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5 LgorKworK3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIG9ufG9mZgorK3Nob3cgYXV0by1sb2Fk IGxpYnRocmVhZC1kYgorKyAgQ29udHJvbCBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lm aWMgdGhyZWFkIGRlYnVnZ2luZyBzaGFyZWQgbGlicmFyeS4KKysKKyAqIE5ldyBjb21tYW5kIGxp bmUgb3B0aW9ucworIAorIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCAgICAgICAgICBMaWtlIC0t Y29tbWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9hdXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9n ZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0NDoyNi45NTA0Mzc1MjAgKzAyMDAKKysrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1 NjA3OTc4MCArMDIwMAorQEAgLTI3LDE5ICsyNyw5MiBAQAorICNpbmNsdWRlICJjb21tYW5kLmgi CisgI2luY2x1ZGUgIm9ic2VydmVyLmgiCisgI2luY2x1ZGUgIm9iamZpbGVzLmgiCistI2luY2x1 ZGUgInB5dGhvbi9weXRob24taW50ZXJuYWwuaCIKKysjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgor KyNpbmNsdWRlICJjbGkvY2xpLXNjcmlwdC5oIgorKyNpbmNsdWRlICJnZGJjbWQuaCIKKysjaW5j bHVkZSAiY2xpL2NsaS1kZWNvZGUuaCIKKysjaW5jbHVkZSAiY2xpL2NsaS1zZXRzaG93LmgiCisr CisrLyogVGhlIHN1ZmZpeCBvZiBwZXItb2JqZmlsZSBzY3JpcHRzIHRvIGF1dG8tbG9hZCBhcyBu b24tUHl0aG9uIGNvbW1hbmQgZmlsZXMuCisrICAgRS5nLiBXaGVuIHRoZSBwcm9ncmFtIGxvYWRz IGxpYmZvby5zbywgbG9vayBmb3IgbGliZm9vLWdkYi5nZGIuICAqLworKyNkZWZpbmUgR0RCX0FV VE9fRklMRV9OQU1FICItZ2RiLmdkYiIKKysKKytzdGF0aWMgdm9pZCBzb3VyY2VfZ2RiX3Njcmlw dF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCisrCQkJ CQkgICBjb25zdCBjaGFyICpmaWxlbmFtZSk7CisrCisrLyogVXNlci1zZXR0YWJsZSBvcHRpb24g dG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nIG9mIEdEQl9BVVRPX0ZJTEVfTkFNRQorKyAg IHNjcmlwdHM6CisrICAgc2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyBvbnxvZmYKKysgICBUaGlz IGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBhc3NvY2lhdGVkIHNjcmlwdHMgd2hlbiBh biBvYmpmaWxlCisrICAgaXMgb3BlbmVkLCBmYWxzZSBvdGhlcndpc2UuICAqLworK3N0YXRpYyBp bnQgYXV0b19sb2FkX2dkYl9zY3JpcHRzID0gMTsKKysKKysvKiAic2hvdyIgY29tbWFuZCBmb3Ig dGhlIGF1dG9fbG9hZF9nZGJfc2NyaXB0cyBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysK KytzdGF0aWMgdm9pZAorK3Nob3dfYXV0b19sb2FkX2dkYl9zY3JpcHRzIChzdHJ1Y3QgdWlfZmls ZSAqZmlsZSwgaW50IGZyb21fdHR5LAorKwkJCSAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq YywgY29uc3QgY2hhciAqdmFsdWUpCisreworKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygi QXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgIgorKwkJCSAgICAi c2NyaXB0cyBpcyAlcy5cbiIpLAorKwkJICAgIHZhbHVlKTsKKyt9CisgCisgLyogSW50ZXJuYWwt dXNlIGZsYWcgdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nLgorICAgIFRoaXMgaXMgdHJ1 ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIHB5dGhvbiBjb2RlIHdoZW4gYW4gb2JqZmlsZSBpcyBv cGVuZWQsCisgICAgZmFsc2Ugb3RoZXJ3aXNlLgorIAorLSAgIEJvdGggYXV0b19sb2FkX3Njcmlw dHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCBtdXN0IGJlIHRydWUgdG8gZW5hYmxlCisrICAg Qm90aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnbG9iYWxfYXV0b19sb2FkIG11c3QgYmUgdHJ1ZSB0 byBlbmFibGUKKyAgICBhdXRvLWxvYWRpbmcuCisgCisgICAgVGhpcyBmbGFnIGV4aXN0cyB0byBm YWNpbGl0YXRlIGRlZmVycmluZyBhdXRvLWxvYWRpbmcgZHVyaW5nIHN0YXJ0LXVwCisgICAgdW50 aWwgYWZ0ZXIgLi8uZ2RiaW5pdCBoYXMgYmVlbiByZWFkOyBpdCBtYXkgYXVnbWVudCB0aGUgc2Vh cmNoIGRpcmVjdG9yaWVzCisgICAgdXNlZCB0byBmaW5kIHRoZSBzY3JpcHRzLiAgKi8KKy1pbnQg Z2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7CisraW50IGdsb2JhbF9hdXRvX2xvYWQgPSAxOwor KworKy8qIEF1dG8tbG9hZCAuZ2RiaW5pdCBmaWxlIGZyb20gdGhlIGN1cnJlbnQgZGlyZWN0b3J5 PyAgKi8KKytpbnQgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQgPSAxOworKworKy8qIEFic29sdXRl IHBhdGhuYW1lIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeSAuZ2RiaW5pdCwgaWYgaXQgZXhpc3Rz LiAgKi8KKytjaGFyICphdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSA9IE5VTEw7Cisr CisrLyogQm9vbGVhbiB2YWx1ZSBpZiBBVVRPX0xPQURfTE9DQUxfR0RCSU5JVF9QQVRITkFNRSBo YXMgYmVlbiBsb2FkZWQuICAqLworK2ludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQg PSAwOworKworKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX2xvY2FsX2dkYmlu aXQgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCisrCisrc3RhdGljIHZvaWQKKytzaG93X2F1 dG9fbG9hZF9sb2NhbF9nZGJpbml0IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5 LAorKwkJCSAgICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1 ZSkKKyt7CisrICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWRpbmcgb2YgLmdk YmluaXQgc2NyaXB0IGZyb20gY3VycmVudCAiCisrCQkJICAgICJkaXJlY3RvcnkgaXMgJXMuXG4i KSwKKysJCSAgICB2YWx1ZSk7CisrfQorKworKy8qIERlZmluaXRpb24gb2Ygc2NyaXB0IGxhbmd1 YWdlIGZvciBHREIgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcy4gICovCisrCisrc3RhdGlj IGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2Ugc2NyaXB0X2xhbmd1YWdlX2dkYgorKyAgPSB7 IEdEQl9BVVRPX0ZJTEVfTkFNRSwgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUgfTsKKysK KytzdGF0aWMgdm9pZAorK3NvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKysJCQkgICAgICAgY29uc3QgY2hhciAqZmlsZW5h bWUpCisreworKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Cisr ICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBlOworKworKyAgLyogQWRkIHRoaXMgc2Ny aXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMi CisrICAgICBjYW4gcHJpbnQgaXQuICAqLworKyAgcHNwYWNlX2luZm8gPSBnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOworKyAgbWF5 YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGVuYW1lLCBmaWxlbmFtZSwgJnNjcmlwdF9s YW5ndWFnZV9nZGIpOworKworKyAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19BTEwpCisrICAg IHsKKysgICAgICBzY3JpcHRfZnJvbV9maWxlIChmaWxlLCBmaWxlbmFtZSk7CisrICAgIH0KKysg IGV4Y2VwdGlvbl9wcmludCAoZ2RiX3N0ZGVyciwgZSk7CisrfQorIAorIC8qIEZvciBzY3JpcHRz IHNwZWNpZmllZCBpbiAuZGVidWdfZ2RiX3NjcmlwdHMsIG11bHRpcGxlIG9iamZpbGVzIG1heSBs b2FkCisgICAgdGhlIHNhbWUgc2NyaXB0LiAgVGhlcmUncyBubyBwb2ludCBpbiBsb2FkaW5nIHRo ZSBzY3JpcHQgbXVsdGlwbGUgdGltZXMsCitAQCAtNjIsOSArMTM1LDEyIEBAIHN0cnVjdCBsb2Fk ZWRfc2NyaXB0CisgeworICAgLyogTmFtZSBhcyBwcm92aWRlZCBieSB0aGUgb2JqZmlsZS4gICov CisgICBjb25zdCBjaGFyICpuYW1lOworKworICAgLyogRnVsbCBwYXRoIG5hbWUgb3IgTlVMTCBp ZiBzY3JpcHQgd2Fzbid0IGZvdW5kIChvciB3YXMgb3RoZXJ3aXNlCisgICAgICBpbmFjY2Vzc2li bGUpLiAgKi8KKyAgIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aDsKKysKKysgIGNvbnN0IHN0cnVjdCBz Y3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlOworIH07CisgCisgLyogUGVyLXByb2dyYW0tc3BhY2Ug ZGF0YSBrZXkuICAqLworQEAgLTEwOSw3ICsxODUsNyBAQCBoYXNoX2xvYWRlZF9zY3JpcHRfZW50 cnkgKGNvbnN0IHZvaWQgKmRhCisgeworICAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmUg PSBkYXRhOworIAorLSAgcmV0dXJuIGh0YWJfaGFzaF9zdHJpbmcgKGUtPm5hbWUpOworKyAgcmV0 dXJuIGh0YWJfaGFzaF9zdHJpbmcgKGUtPm5hbWUpIF4gaHRhYl9oYXNoX3BvaW50ZXIgKGUtPmxh bmd1YWdlKTsKKyB9CisgCisgLyogRXF1YWxpdHkgZnVuY3Rpb24gZm9yIHRoZSBsb2FkZWQgc2Ny aXB0IGhhc2guICAqLworQEAgLTEyMCw3ICsxOTYsNyBAQCBlcV9sb2FkZWRfc2NyaXB0X2VudHJ5 IChjb25zdCB2b2lkICphLCBjCisgICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZWEgPSBh OworICAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmViID0gYjsKKyAKKy0gIHJldHVybiBz dHJjbXAgKGVhLT5uYW1lLCBlYi0+bmFtZSkgPT0gMDsKKysgIHJldHVybiBzdHJjbXAgKGVhLT5u YW1lLCBlYi0+bmFtZSkgPT0gMCAmJiBlYS0+bGFuZ3VhZ2UgPT0gZWItPmxhbmd1YWdlOworIH0K KyAKKyAvKiBJbml0aWFsaXplIHRoZSB0YWJsZSB0byB0cmFjayBsb2FkZWQgc2NyaXB0cy4KK0BA IC0xNTYsMjAgKzIzMiwyMSBAQCBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5n IChzCisgICByZXR1cm4gaW5mbzsKKyB9CisgCistLyogQWRkIHNjcmlwdCBOQU1FIHRvIGhhc2gg dGFibGUgb2YgUFNQQUNFX0lORk8uCistICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlw dCB3YXNuJ3QgZm91bmQuCistICAgVGhlIHJlc3VsdCBpcyB0cnVlIGlmIHRoZSBzY3JpcHQgd2Fz IGFscmVhZHkgaW4gdGhlIGhhc2ggdGFibGUuICAqLworKy8qIEFkZCBzY3JpcHQgTkFNRSBpbiBM QU5HVUFHRSB0byBoYXNoIHRhYmxlIG9mIFBTUEFDRV9JTkZPLgorKyAgIEZVTExfUEFUSCBpcyBO VUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLiAgVGhlIHJlc3VsdCBpcworKyAgIHRydWUg aWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCisgCisgaW50 CistbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNl X2luZm8sIGNvbnN0IGNoYXIgKm5hbWUsCistCQkgIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCkKKytt YXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5m bywKKysJCSAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoLAorKwkJICBj b25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSkKKyB7CisgICBzdHJ1Y3QgaHRh YiAqaHRhYiA9IHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0czsKKyAgIHN0cnVjdCBsb2FkZWRf c2NyaXB0ICoqc2xvdCwgZW50cnk7CisgICBpbnQgaW5faGFzaF90YWJsZTsKKyAKKyAgIGVudHJ5 Lm5hbWUgPSBuYW1lOworLSAgZW50cnkuZnVsbF9wYXRoID0gZnVsbF9wYXRoOworKyAgZW50cnku bGFuZ3VhZ2UgPSBsYW5ndWFnZTsKKyAgIHNsb3QgPSAoc3RydWN0IGxvYWRlZF9zY3JpcHQgKiop IGh0YWJfZmluZF9zbG90IChodGFiLCAmZW50cnksIElOU0VSVCk7CisgICBpbl9oYXNoX3RhYmxl ID0gKnNsb3QgIT0gTlVMTDsKKyAKK0BAIC0xOTQsNiArMjcxLDcgQEAgbWF5YmVfYWRkX3Njcmlw dCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhYworIAl9CisgICAgICAgZWxzZQorIAkoKnNsb3QpLT5m dWxsX3BhdGggPSBOVUxMOworKyAgICAgICgqc2xvdCktPmxhbmd1YWdlID0gbGFuZ3VhZ2U7Cisg ICAgIH0KKyAKKyAgIHJldHVybiBpbl9oYXNoX3RhYmxlOworQEAgLTIxNiwxMCArMjk0LDEyIEBA IGNsZWFyX3NlY3Rpb25fc2NyaXB0cyAodm9pZCkKKyAgICAgfQorIH0KKyAKKy0vKiBMb29rIGZv ciB0aGUgYXV0by1sb2FkIHNjcmlwdCBhc3NvY2lhdGVkIHdpdGggT0JKRklMRSBhbmQgbG9hZCBp dC4gICovCisrLyogTG9vayBmb3IgdGhlIGF1dG8tbG9hZCBzY3JpcHQgaW4gTEFOR1VBR0UgYXNz b2NpYXRlZCB3aXRoIE9CSkZJTEUgYW5kIGxvYWQKKysgICBpdC4gICovCisgCisgdm9pZAorLWF1 dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNo YXIgKnN1ZmZpeCkKKythdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAorKwkJCSAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpCisg eworICAgY2hhciAqcmVhbG5hbWU7CisgICBjaGFyICpmaWxlbmFtZSwgKmRlYnVnZmlsZTsKK0BA IC0yMjksOSArMzA5LDkgQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmls ZQorIAorICAgcmVhbG5hbWUgPSBnZGJfcmVhbHBhdGggKG9iamZpbGUtPm5hbWUpOworICAgbGVu ID0gc3RybGVuIChyZWFsbmFtZSk7CistICBmaWxlbmFtZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxl biAoc3VmZml4KSArIDEpOworKyAgZmlsZW5hbWUgPSB4bWFsbG9jIChsZW4gKyBzdHJsZW4gKGxh bmd1YWdlLT5zdWZmaXgpICsgMSk7CisgICBtZW1jcHkgKGZpbGVuYW1lLCByZWFsbmFtZSwgbGVu KTsKKy0gIHN0cmNweSAoZmlsZW5hbWUgKyBsZW4sIHN1ZmZpeCk7CisrICBzdHJjcHkgKGZpbGVu YW1lICsgbGVuLCBsYW5ndWFnZS0+c3VmZml4KTsKKyAKKyAgIGNsZWFudXBzID0gbWFrZV9jbGVh bnVwICh4ZnJlZSwgZmlsZW5hbWUpOworICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgcmVhbG5hbWUp OworQEAgLTI2OSwyNyArMzQ5LDMzIEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0 IG9iamZpbGUKKyAKKyAgIGlmIChpbnB1dCkKKyAgICAgeworLSAgICAgIHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworLQorICAgICAgIG1ha2VfY2xlYW51cF9mY2xv c2UgKGlucHV0KTsKKyAKKy0gICAgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFi bGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIgorLQkgY2FuIHByaW50IGl0LiAgKi8K Ky0gICAgICBwc3BhY2VfaW5mbyA9CistCWdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xv YWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CistICAgICAgbWF5YmVfYWRkX3NjcmlwdCAo cHNwYWNlX2luZm8sIGRlYnVnZmlsZSwgZGVidWdmaWxlKTsKKy0KKyAgICAgICAvKiBUbyBwcmVz ZXJ2ZSBleGlzdGluZyBiZWhhdmlvdXIgd2UgZG9uJ3QgY2hlY2sgZm9yIHdoZXRoZXIgdGhlCisg CSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIHRhYmxlLCBhbmQgYWx3YXlzIGxvYWQgaXQuCisg CSBJdCdzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHdlJ2QgZXZlciBsb2FkIGl0IHR3aWNlLAorIAkg YW5kIHRoZXNlIHNjcmlwdHMgYXJlIHJlcXVpcmVkIHRvIGJlIGlkZW1wb3RlbnQgdW5kZXIgbXVs dGlwbGUKKyAJIGxvYWRzIGFueXdheS4gICovCistICAgICAgc291cmNlX3B5dGhvbl9zY3JpcHRf Zm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1Z2ZpbGUpOworKyAgICAgIGxhbmd1YWdl LT5zb3VyY2Vfc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsK KyAgICAgfQorIAorICAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKKyB9CisgCisrLyogTG9hZCBh bnkgYXV0by1sb2FkZWQgc2NyaXB0cyBmb3IgT0JKRklMRS4gICovCisrCisrdm9pZAorK2xvYWRf YXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyt7Cisr ICBpZiAoIWdsb2JhbF9hdXRvX2xvYWQpCisrICAgIHJldHVybjsKKysKKysgIGlmIChhdXRvX2xv YWRfZ2RiX3NjcmlwdHMpCisrICAgIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAob2JqZmlsZSwg JnNjcmlwdF9sYW5ndWFnZV9nZGIpOworKworKyAgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9y X29iamZpbGUgKG9iamZpbGUpOworK30KKysKKyAvKiBUaGlzIGlzIGEgbmV3X29iamZpbGUgb2Jz ZXJ2ZXIgY2FsbGJhY2sgdG8gYXV0by1sb2FkIHNjcmlwdHMuCisgCisgICAgVHdvIGZsYXZvcnMg b2YgYXV0by1sb2FkZWQgc2NyaXB0cyBhcmUgc3VwcG9ydGVkLgorQEAgLTMxNCw2ICs0MDAsMTMg QEAgYXV0b19sb2FkX25ld19vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqbworIHR5cGVkZWYgc3Ry dWN0IGxvYWRlZF9zY3JpcHQgKmxvYWRlZF9zY3JpcHRfcHRyOworIERFRl9WRUNfUCAobG9hZGVk X3NjcmlwdF9wdHIpOworIAorK3N0cnVjdCBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHNfZGF0YQor K3sKKysgIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICoqc2NyaXB0c19wOworKworKyAgY29uc3Qg c3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2U7CisrfTsKKysKKyAvKiBUcmF2ZXJzYWwg ZnVuY3Rpb24gZm9yIGh0YWJfdHJhdmVyc2UuCisgICAgQ29sbGVjdCB0aGUgZW50cnkgaWYgaXQg bWF0Y2hlcyB0aGUgcmVnZXhwLiAgKi8KKyAKK0BAIC0zMjEsMTAgKzQxNCwxMCBAQCBzdGF0aWMg aW50CisgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzICh2b2lkICoqc2xvdCwgdm9pZCAqaW5mbykK KyB7CisgICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaXB0ID0gKnNsb3Q7CistICBWRUMgKGxv YWRlZF9zY3JpcHRfcHRyKSAqKnNjcmlwdHNfcHRyID0gaW5mbzsKKysgIHN0cnVjdCBjb2xsZWN0 X21hdGNoaW5nX3NjcmlwdHNfZGF0YSAqZGF0YSA9IGluZm87CisgCistICBpZiAocmVfZXhlYyAo c2NyaXB0LT5uYW1lKSkKKy0gICAgVkVDX3NhZmVfcHVzaCAobG9hZGVkX3NjcmlwdF9wdHIsICpz Y3JpcHRzX3B0ciwgc2NyaXB0KTsKKysgIGlmIChzY3JpcHQtPmxhbmd1YWdlID09IGRhdGEtPmxh bmd1YWdlICYmIHJlX2V4ZWMgKHNjcmlwdC0+bmFtZSkpCisrICAgIFZFQ19zYWZlX3B1c2ggKGxv YWRlZF9zY3JpcHRfcHRyLCAqZGF0YS0+c2NyaXB0c19wLCBzY3JpcHQpOworIAorICAgcmV0dXJu IDE7CisgfQorQEAgLTM2NiwxMCArNDU5LDE4IEBAIHNvcnRfc2NyaXB0c19ieV9uYW1lIChjb25z dCB2b2lkICphcCwgY28KKyAgIHJldHVybiBGSUxFTkFNRV9DTVAgKGEtPm5hbWUsIGItPm5hbWUp OworIH0KKyAKKy0vKiAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIgY29tbWFuZC4gICovCisrLyog U3BlY2lhbCBpbnRlcm5hbCBHREIgdmFsdWUgb2YgYXV0b19sb2FkX2luZm9fc2NyaXB0cydzIFBB VFRFUk4gaWRlbnRpZnkKKysgICB0aGUgImluZm8gYXV0by1sb2FkIFhYWCIgY29tbWFuZCBoYXMg YmVlbiBleGVjdXRlZCB0aHJvdWdoIHRoZSBnZW5lcmFsCisrICAgImluZm8gYXV0by1sb2FkIiBp bnZvY2F0aW9uLiAgRXh0cmEgbmV3bGluZSB3aWxsIGJlIHByaW50ZWQgaWYgbmVlZGVkLiAgKi8K KytjaGFyIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubFtdID0gIiI7CisrCisrLyog SW1wbGVtZW50YXRpb24gZm9yICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKKysgICAoYW5k ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIpLiAgTGlzdCBzY3JpcHRzIGluIExBTkdV QUdFIG1hdGNoaW5nCisrICAgUEFUVEVSTi4gIEZST01fVFRZIGlzIHRoZSB1c3VhbCBHREIgYm9v bGVhbiBmb3IgdXNlciBpbnRlcmFjdGl2aXR5LiAgKi8KKyAKKy1zdGF0aWMgdm9pZAorLWluZm9f YXV0b19sb2FkX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSkKKyt2b2lkCisr YXV0b19sb2FkX2luZm9fc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5LAorKwkJ CWNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKQorIHsKKyAgIHN0cnVjdCB1 aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKKyAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNl X2luZm8gKnBzcGFjZV9pbmZvOworQEAgLTQwMiwxNCArNTAzLDIyIEBAIGluZm9fYXV0b19sb2Fk X3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGkKKyAKKyAgIGlmIChwc3BhY2VfaW5mbyAhPSBOVUxM ICYmIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQorICAgICB7CisrICAgICAg c3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhIGRhdGEgPSB7ICZzY3JpcHRzLCBs YW5ndWFnZSB9OworKworICAgICAgIGltbWVkaWF0ZV9xdWl0Kys7CisgICAgICAgLyogUGFzcyBh IHBvaW50ZXIgdG8gc2NyaXB0cyBhcyBWRUNfc2FmZV9wdXNoIGNhbiByZWFsbG9jIHNwYWNlLiAg Ki8KKyAgICAgICBodGFiX3RyYXZlcnNlX25vcmVzaXplIChwc3BhY2VfaW5mby0+bG9hZGVkX3Nj cmlwdHMsCistCQkJICAgICAgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzLCAmc2NyaXB0cyk7Cisr CQkJICAgICAgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzLCAmZGF0YSk7CisgICAgICAgaW1tZWRp YXRlX3F1aXQtLTsKKyAgICAgfQorIAorICAgbnJfc2NyaXB0cyA9IFZFQ19sZW5ndGggKGxvYWRl ZF9zY3JpcHRfcHRyLCBzY3JpcHRzKTsKKysKKysgIC8qIFRhYmxlIGhlYWRlciBzaGlmdGVkIHJp Z2h0IGJ5IHByZWNlZGluZyAiZ2RiLXNjcmlwdHM6ICAiIHdvdWxkIG5vdCBtYXRjaAorKyAgICAg aXRzIGNvbHVtbnMuICAqLworKyAgaWYgKG5yX3NjcmlwdHMgPiAwICYmIHBhdHRlcm4gPT0gYXV0 b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJuX25sKQorKyAgICB1aV9vdXRfdGV4dCAodWlvdXQs ICJcbiIpOworKworICAgbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQgKHVpb3V0 LCAyLCBucl9zY3JpcHRzLAorIAkJCQkgICAgICAgIkF1dG9Mb2FkZWRTY3JpcHRzVGFibGUiKTsK KyAKK0BAIC00NDEsNiArNTUwLDI5IEBAIGluZm9fYXV0b19sb2FkX3NjcmlwdHMgKGNoYXIgKnBh dHRlcm4sIGkKKyAgICAgfQorIH0KKyAKKysvKiBXcmFwcGVyIGZvciAiaW5mbyBhdXRvLWxvYWQg Z2RiLXNjcmlwdHMiLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2luZm9fYXV0b19sb2FkX2dkYl9z Y3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHkpCisreworKyAgYXV0b19sb2FkX2lu Zm9fc2NyaXB0cyAocGF0dGVybiwgZnJvbV90dHksICZzY3JpcHRfbGFuZ3VhZ2VfZ2RiKTsKKyt9 CisrCisrLyogSW1wbGVtZW50ICdpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0Jy4gICovCisr Cisrc3RhdGljIHZvaWQKKytpbmZvX2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0IChjaGFyICphcmdz LCBpbnQgZnJvbV90dHkpCisreworKyAgaWYgKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhu YW1lID09IE5VTEwpCisrICAgIHByaW50Zl9maWx0ZXJlZCAoXygiTG9jYWwgLmdkYmluaXQgZmls ZSB3YXMgbm90IGZvdW5kLlxuIikpOworKyAgZWxzZSBpZiAoYXV0b19sb2FkX2xvY2FsX2dkYmlu aXRfbG9hZGVkKQorKyAgICBwcmludGZfZmlsdGVyZWQgKF8oIkxvY2FsIC5nZGJpbml0IGZpbGUg XCIlc1wiIGhhcyBiZWVuIGxvYWRlZC5cbiIpLAorKwkJICAgICBhdXRvX2xvYWRfbG9jYWxfZ2Ri aW5pdF9wYXRobmFtZSk7CisrICBlbHNlCisrICAgIHByaW50Zl9maWx0ZXJlZCAoXygiTG9jYWwg LmdkYmluaXQgZmlsZSBcIiVzXCIgaGFzIG5vdCBiZWVuIGxvYWRlZC5cbiIpLAorKwkJICAgICBh dXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSk7CisrfQorKworIC8qIFJldHVybiBub24t emVybyBpZiBTQ1JJUFRfTk9UX0ZPVU5EX1dBUk5JTkdfUFJJTlRFRCBvZiBQU1BBQ0VfSU5GTyB3 YXMgdW5zZXQKKyAgICBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiAgQWx3YXlzIHNldCBT Q1JJUFRfTk9UX0ZPVU5EX1dBUk5JTkdfUFJJTlRFRAorICAgIG9mIFBTUEFDRV9JTkZPLiAgKi8K K0BAIC00NTUsNiArNTg3LDEzMiBAQCBzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHN0 cnVjdCBhCisgICByZXR1cm4gcmV0dmFsOworIH0KKyAKKysvKiBUaGUgb25seSB2YWxpZCAic2V0 IGF1dG8tbG9hZCIgYXJndW1lbnQgaXMgb2ZmfDB8bm98ZGlzYWJsZS4gICovCisrCisrc3RhdGlj IHZvaWQKKytzZXRfYXV0b19sb2FkX2NtZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQorK3sK KysgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpsaXN0OworKyAgc2l6ZV90IGxlbmd0aDsKKysK KysgIC8qIFNlZSBwYXJzZV9iaW5hcnlfb3BlcmF0aW9uIGluIHVzZSBieSB0aGUgc3ViLWNvbW1h bmRzLiAgKi8KKysKKysgIGxlbmd0aCA9IGFyZ3MgPyBzdHJsZW4gKGFyZ3MpIDogMDsKKysKKysg IHdoaWxlIChsZW5ndGggPiAwICYmIChhcmdzW2xlbmd0aCAtIDFdID09ICcgJyB8fCBhcmdzW2xl bmd0aCAtIDFdID09ICdcdCcpKQorKyAgICBsZW5ndGgtLTsKKysKKysgIGlmIChsZW5ndGggPT0g MCB8fCAoc3RybmNtcCAoYXJncywgIm9mZiIsIGxlbmd0aCkgIT0gMAorKwkJICAgICAgJiYgc3Ry bmNtcCAoYXJncywgIjAiLCBsZW5ndGgpICE9IDAKKysJCSAgICAgICYmIHN0cm5jbXAgKGFyZ3Ms ICJubyIsIGxlbmd0aCkgIT0gMAorKwkJICAgICAgJiYgc3RybmNtcCAoYXJncywgImRpc2FibGUi LCBsZW5ndGgpICE9IDApKQorKyAgICBlcnJvciAoXygiVmFsaWQgaXMgb25seSBnbG9iYWwgJ3Nl dCBhdXRvLWxvYWQgbm8nOyAiCisrCSAgICAgIm90aGVyd2lzZSBjaGVjayB0aGUgYXV0by1sb2Fk IHN1Yi1jb21tYW5kcy4iKSk7CisrCisrICBmb3IgKGxpc3QgPSAqYXV0b19sb2FkX3NldF9jbWRs aXN0X2dldCAoKTsgbGlzdCAhPSBOVUxMOyBsaXN0ID0gbGlzdC0+bmV4dCkKKysgICAgaWYgKGxp c3QtPnZhcl90eXBlID09IHZhcl9ib29sZWFuKQorKyAgICAgIHsKKysJZ2RiX2Fzc2VydCAobGlz dC0+dHlwZSA9PSBzZXRfY21kKTsKKysJZG9fc2V0c2hvd19jb21tYW5kIChhcmdzLCBmcm9tX3R0 eSwgbGlzdCk7CisrICAgICAgfQorK30KKysKKysvKiBJbml0aWFsaXplICJzZXQgYXV0by1sb2Fk ICIgY29tbWFuZHMgcHJlZml4IGFuZCByZXR1cm4gaXQuICAqLworKworK3N0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICoqCisrYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAodm9pZCkKKyt7CisrICBz dGF0aWMgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnJldHZhbDsKKysKKysgIGlmIChyZXR2YWwg PT0gTlVMTCkKKysgICAgYWRkX3ByZWZpeF9jbWQgKCJhdXRvLWxvYWQiLCBjbGFzc19tYWludGVu YW5jZSwgc2V0X2F1dG9fbG9hZF9jbWQsIF8oIlwKKytBdXRvLWxvYWRpbmcgc3BlY2lmaWMgc2V0 dGluZ3MuXG5cCisrQ29uZmlndXJlIHZhcmlvdXMgYXV0by1sb2FkLXNwZWNpZmljIHZhcmlhYmxl cyBzdWNoIGFzXG5cCisrYXV0b21hdGljIGxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMuIiksCisr CQkgICAgJnJldHZhbCwgInNldCBhdXRvLWxvYWQgIiwKKysJCSAgICAxLyphbGxvdy11bmtub3du Ki8sICZzZXRsaXN0KTsKKysKKysgIHJldHVybiAmcmV0dmFsOworK30KKysKKysvKiBDb21tYW5k ICJzaG93IGF1dG8tbG9hZCIgZGlzcGxheXMgc3VtbWFyeSBvZiBhbGwgdGhlIGN1cnJlbnQKKysg ICAic2hvdyBhdXRvLWxvYWQgIiBzZXR0aW5ncy4gICovCisrCisrc3RhdGljIHZvaWQKKytzaG93 X2F1dG9fbG9hZF9jbWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyt7CisrICBjbWRfc2hv d19saXN0ICgqYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKCksIGZyb21fdHR5LCAiIik7Cisr fQorKworKy8qIEluaXRpYWxpemUgInNob3cgYXV0by1sb2FkICIgY29tbWFuZHMgcHJlZml4IGFu ZCByZXR1cm4gaXQuICAqLworKworK3N0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqCisrYXV0b19s b2FkX3Nob3dfY21kbGlzdF9nZXQgKHZvaWQpCisreworKyAgc3RhdGljIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpyZXR2YWw7CisrCisrICBpZiAocmV0dmFsID09IE5VTEwpCisrICAgIGFkZF9w cmVmaXhfY21kICgiYXV0by1sb2FkIiwgY2xhc3NfbWFpbnRlbmFuY2UsIHNob3dfYXV0b19sb2Fk X2NtZCwgXygiXAorK1Nob3cgYXV0by1sb2FkaW5nIHNwZWNpZmljIHNldHRpbmdzLlxuXAorK1No b3cgY29uZmlndXJhdGlvbiBvZiB2YXJpb3VzIGF1dG8tbG9hZC1zcGVjaWZpYyB2YXJpYWJsZXMg c3VjaCBhc1xuXAorK2F1dG9tYXRpYyBsb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzLiIpLAorKwkJ ICAgICZyZXR2YWwsICJzaG93IGF1dG8tbG9hZCAiLAorKwkJICAgIDAvKmFsbG93LXVua25vd24q LywgJnNob3dsaXN0KTsKKysKKysgIHJldHVybiAmcmV0dmFsOworK30KKysKKysvKiBDb21tYW5k ICJpbmZvIGF1dG8tbG9hZCIgZGlzcGxheXMgd2hldGhlciB0aGUgdmFyaW91cyBhdXRvLWxvYWQg ZmlsZXMgaGF2ZQorKyAgIGJlZW4gbG9hZGVkLiAgVGhpcyBpcyByZWltcGxlbWVudGF0aW9uIG9m IGNtZF9zaG93X2xpc3Qgd2hpY2ggaW5zZXJ0cworKyAgIG5ld2xpbmVzIGF0IHByb3BlciBwbGFj ZXMuICAqLworKworK3N0YXRpYyB2b2lkCisraW5mb19hdXRvX2xvYWRfY21kIChjaGFyICphcmdz LCBpbnQgZnJvbV90dHkpCisreworKyAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmxpc3Q7Cisr ICBzdHJ1Y3QgY2xlYW51cCAqaW5mb2xpc3RfY2hhaW47CisrICBzdHJ1Y3QgdWlfb3V0ICp1aW91 dCA9IGN1cnJlbnRfdWlvdXQ7CisrCisrICBpbmZvbGlzdF9jaGFpbiA9IG1ha2VfY2xlYW51cF91 aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgImluZm9saXN0Iik7CisrCisrICBmb3IgKGxp c3QgPSAqYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCk7IGxpc3QgIT0gTlVMTDsgbGlzdCA9 IGxpc3QtPm5leHQpCisrICAgIHsKKysgICAgICBzdHJ1Y3QgY2xlYW51cCAqb3B0aW9uX2NoYWlu CisrCT0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCAib3B0aW9u Iik7CisrCisrICAgICAgZ2RiX2Fzc2VydCAoIWxpc3QtPnByZWZpeGxpc3QpOworKyAgICAgIGdk Yl9hc3NlcnQgKGxpc3QtPnR5cGUgPT0gbm90X3NldF9jbWQpOworKworKyAgICAgIHVpX291dF9m aWVsZF9zdHJpbmcgKHVpb3V0LCAibmFtZSIsIGxpc3QtPm5hbWUpOworKyAgICAgIHVpX291dF90 ZXh0ICh1aW91dCwgIjogICIpOworKyAgICAgIGNtZF9mdW5jIChsaXN0LCBhdXRvX2xvYWRfaW5m b19zY3JpcHRzX3BhdHRlcm5fbmwsIGZyb21fdHR5KTsKKysKKysgICAgICAvKiBDbG9zZSB0aGUg dHVwbGUuICAqLworKyAgICAgIGRvX2NsZWFudXBzIChvcHRpb25fY2hhaW4pOworKyAgICB9Cisr CisrICAvKiBDbG9zZSB0aGUgdHVwbGUuICAqLworKyAgZG9fY2xlYW51cHMgKGluZm9saXN0X2No YWluKTsKKyt9CisrCisrLyogSW5pdGlhbGl6ZSAiaW5mbyBhdXRvLWxvYWQgIiBjb21tYW5kcyBw cmVmaXggYW5kIHJldHVybiBpdC4gICovCisrCisrc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKioK KythdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAodm9pZCkKKyt7CisrICBzdGF0aWMgc3RydWN0 IGNtZF9saXN0X2VsZW1lbnQgKnJldHZhbDsKKysKKysgIGlmIChyZXR2YWwgPT0gTlVMTCkKKysg ICAgYWRkX3ByZWZpeF9jbWQgKCJhdXRvLWxvYWQiLCBjbGFzc19pbmZvLCBpbmZvX2F1dG9fbG9h ZF9jbWQsIF8oIlwKKytQcmludCBjdXJyZW50IHN0YXR1cyBvZiBhdXRvLWxvYWRlZCBmaWxlcy5c blwKKytQcmludCB3aGV0aGVyIHZhcmlvdXMgZmlsZXMgbGlrZSBQeXRob24gc2NyaXB0cyBvciAu Z2RiaW5pdCBmaWxlcyBoYXZlIGJlZW5cblwKKytmb3VuZCBhbmQvb3IgbG9hZGVkLiIpLAorKwkJ ICAgICZyZXR2YWwsICJpbmZvIGF1dG8tbG9hZCAiLAorKwkJICAgIDAvKmFsbG93LXVua25vd24q LywgJmluZm9saXN0KTsKKysKKysgIHJldHVybiAmcmV0dmFsOworK30KKysKKyB2b2lkIF9pbml0 aWFsaXplX2F1dG9fbG9hZCAodm9pZCk7CisgCisgdm9pZAorQEAgLTQ2NSw4ICs3MjMsMzggQEAg X2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQorIAorICAgb2JzZXJ2ZXJfYXR0YWNoX25ld19v YmpmaWxlIChhdXRvX2xvYWRfbmV3X29iamZpbGUpOworIAorLSAgYWRkX2luZm8gKCJhdXRvLWxv YWQtc2NyaXB0cyIsCistCSAgICBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzLAorLQkgICAgXygiUHJp bnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2FkZWQgc2NyaXB0cy5cblwKKy1Vc2FnZTog aW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXSIpKTsKKysgIGFkZF9zZXRzaG93X2Jvb2xl YW5fY21kICgiZ2RiLXNjcmlwdHMiLCBjbGFzc19zdXBwb3J0LAorKwkJCSAgICZhdXRvX2xvYWRf Z2RiX3NjcmlwdHMsIF8oIlwKKytFbmFibGUgb3IgZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgY2Fu bmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzLiIpLCBfKCJcCisrU2hvdyB3aGV0aGVy IGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgaXMg ZW5hYmxlZC4iKSwKKysJCQkgICBfKCJcCisrSWYgZW5hYmxlZCwgY2FubmVkIHNlcXVlbmNlcyBv ZiBjb21tYW5kcyBhcmUgbG9hZGVkIHdoZW4gdGhlIGRlYnVnZ2VyIHJlYWRzXG5cCisrYW4gZXhl Y3V0YWJsZSBvciBzaGFyZWQgbGlicmFyeS5cblwKKytUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5 IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKKysJCQkgICBOVUxMLCBz aG93X2F1dG9fbG9hZF9nZGJfc2NyaXB0cywKKysJCQkgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3Rf Z2V0ICgpLAorKwkJCSAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKKysKKysgIGFk ZF9jbWQgKCJnZGItc2NyaXB0cyIsIGNsYXNzX2luZm8sIGluZm9fYXV0b19sb2FkX2dkYl9zY3Jp cHRzLAorKwkgICBfKCJQcmludCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBzZXF1 ZW5jZXMgb2YgY29tbWFuZHMuXG5cCisrVXNhZ2U6IGluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRz IFtSRUdFWFBdIiksCisrCSAgIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICgpKTsKKysKKysg IGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgibG9jYWwtZ2RiaW5pdCIsIGNsYXNzX3N1cHBvcnQs CisrCQkJICAgJmF1dG9fbG9hZF9sb2NhbF9nZGJpbml0LCBfKCJcCisrRW5hYmxlIG9yIGRpc2Fi bGUgYXV0by1sb2FkaW5nIG9mIC5nZGJpbml0IHNjcmlwdCBpbiBjdXJyZW50IGRpcmVjdG9yeS4i KSwgXygiXAorK1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcgLmdkYmluaXQgc2NyaXB0IGluIGN1 cnJlbnQgZGlyZWN0b3J5IGlzIGVuYWJsZWQuIiksCisrCQkJICAgXygiXAorK0lmIGVuYWJsZWQs IGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgYXJlIGxvYWRlZCB3aGVuIGRlYnVnZ2VyIHN0 YXJ0c1xuXAorK2Zyb20gLmdkYmluaXQgZmlsZSBpbiBjdXJyZW50IGRpcmVjdG9yeS4gIFN1Y2gg ZmlsZXMgYXJlIGRlcHJlY2F0ZWQsXG5cCisrdXNlIGEgc2NyaXB0IGFzc29jaWF0ZWQgd2l0aCBp bmZlcmlvciBleGVjdXRhYmxlIGZpbGUgaW5zdGVhZC5cblwKKytUaGlzIG9wdGlvbnMgaGFzIHNl Y3VyaXR5IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKKysJCQkgICBO VUxMLCBzaG93X2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0LAorKwkJCSAgIGF1dG9fbG9hZF9zZXRf Y21kbGlzdF9nZXQgKCksCisrCQkJICAgYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKCkpOwor KworKyAgYWRkX2NtZCAoImxvY2FsLWdkYmluaXQiLCBjbGFzc19pbmZvLCBpbmZvX2F1dG9fbG9h ZF9sb2NhbF9nZGJpbml0LAorKwkgICBfKCJQcmludCB3aGV0aGVyIGN1cnJlbnQgZGlyZWN0b3J5 IC5nZGJpbml0IGZpbGUgaGFzIGJlZW4gbG9hZGVkLlxuXAorK1VzYWdlOiBpbmZvIGF1dG8tbG9h ZCBsb2NhbC1nZGJpbml0IiksCisrCSAgIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICgpKTsK KyB9CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQt MTggMDA6NDQ6MjYuOTUxNDM3NTE3ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv YXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTYwNzk3ODAgKzAyMDAKK0BAIC0yMiwx NSArMjIsMzYgQEAKKyAKKyBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZTsKKyAKKy1leHRlcm4gaW50IGdk YnB5X2dsb2JhbF9hdXRvX2xvYWQ7Cisrc3RydWN0IHNjcmlwdF9sYW5ndWFnZQorK3sKKysgIGNv bnN0IGNoYXIgKnN1ZmZpeDsKKysKKysgIHZvaWQgKCpzb3VyY2Vfc2NyaXB0X2Zvcl9vYmpmaWxl KSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCisrCQkJCSAgICAgY29uc3Qg Y2hhciAqZmlsZW5hbWUpOworK307CisrCisrZXh0ZXJuIGludCBnbG9iYWxfYXV0b19sb2FkOwor KworK2V4dGVybiBpbnQgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQ7CisrZXh0ZXJuIGNoYXIgKmF1 dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lOworK2V4dGVybiBpbnQgYXV0b19sb2FkX2xv Y2FsX2dkYmluaXRfbG9hZGVkOworIAorIGV4dGVybiBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9p bmZvICoKKyAgIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHN0cnVjdCBw cm9ncmFtX3NwYWNlICpwc3BhY2UpOworIGV4dGVybiBpbnQgbWF5YmVfYWRkX3NjcmlwdCAoc3Ry dWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sCistCQkJICAgICBjb25zdCBj aGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgpOworKwkJCSAgICAgY29uc3QgY2hhciAq bmFtZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoLAorKwkJCSAgICAgY29uc3Qgc3RydWN0IHNjcmlw dF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOworIGV4dGVybiB2b2lkIGF1dG9fbG9hZF9vYmpmaWxlX3Nj cmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCistCQkJCSAgICAgIGNvbnN0IGNoYXIgKnN1 ZmZpeCk7CisrCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdl KTsKKytleHRlcm4gdm9pZCBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUpOworIGV4dGVybiBpbnQKKyAgIHNjcmlwdF9ub3RfZm91bmRfd2Fybmlu Z19wcmludCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8pOworK2V4 dGVybiBjaGFyIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubFtdOworK2V4dGVybiB2 b2lkIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSwK KysJCQkJICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKTsKKysKKytl eHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0 ICh2b2lkKTsKKytleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfc2hv d19jbWRsaXN0X2dldCAodm9pZCk7CisrZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoq YXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKHZvaWQpOworIAorICNlbmRpZiAvKiBBVVRPX0xP QURfSCAqLworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9saW51eC10aHJl YWQtZGIuYwkyMDEyLTAxLTA0IDA5OjE3OjA1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDQtMTggMDA6NDY6NDcuNTU3 MDc5Nzc3ICswMjAwCitAQCAtNDAsOCArNDAsMTAgQEAKKyAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIK KyAjaW5jbHVkZSAibGludXgtbmF0LmgiCisgI2luY2x1ZGUgImxpbnV4LXByb2Nmcy5oIgorKyNp bmNsdWRlICJhdXRvLWxvYWQuaCIKKyAKKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisrI2luY2x1ZGUg PGN0eXBlLmg+CisgCisgI2lmZGVmIEhBVkVfR05VX0xJQkNfVkVSU0lPTl9ICisgI2luY2x1ZGUg PGdudS9saWJjLXZlcnNpb24uaD4KK0BAIC03NSw2ICs3NywyMSBAQAorIAorIHN0YXRpYyBjaGFy ICpsaWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGg7CisgCisrLyogU2V0IHRvIG5vbi16ZXJvIGlmIHRo cmVhZF9kYiBhdXRvLWxvYWRpbmcgaXMgZW5hYmxlZAorKyAgIGJ5IHRoZSAic2V0IGF1dG8tbG9h ZCBsaWJ0aHJlYWQtZGIiIGNvbW1hbmQuICAqLworK3N0YXRpYyBpbnQgYXV0b19sb2FkX3RocmVh ZF9kYiA9IDE7CisrCisrLyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfdGhyZWFk X2RiIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLworKworK3N0YXRpYyB2b2lkCisrc2hvd19h dXRvX2xvYWRfdGhyZWFkX2RiIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAor KwkJCSAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorK3sK KysgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBz cGVjaWZpYyBsaWJ0aHJlYWRfZGIgIgorKwkJCSAgICAiaXMgJXMuXG4iKSwKKysJCSAgICB2YWx1 ZSk7CisrfQorKworIHN0YXRpYyB2b2lkCisgc2V0X2xpYnRocmVhZF9kYl9zZWFyY2hfcGF0aCAo Y2hhciAqaWdub3JlZCwgaW50IGZyb21fdHR5LAorIAkJCSAgICAgIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICpjKQorQEAgLTExOSw2ICsxMzYsMTAgQEAgc3RydWN0IHRocmVhZF9kYl9pbmZvCisg ICAvKiBIYW5kbGUgZnJvbSBkbG9wZW4gZm9yIGxpYnRocmVhZF9kYi5zby4gICovCisgICB2b2lk ICpoYW5kbGU7CisgCisrICAvKiBBYnNvbHV0ZSBwYXRobmFtZSBmcm9tIGdkYl9yZWFscGF0aCB0 byBkaXNrIGZpbGUgdXNlZCBmb3IgZGxvcGVuLWluZworKyAgICAgSEFORExFLiAgSXQgbWF5IGJl IE5VTEwgZm9yIHN5c3RlbSBsaWJyYXJ5LiAgKi8KKysgIGNoYXIgKmZpbGVuYW1lOworKworICAg LyogU3RydWN0dXJlIHRoYXQgaWRlbnRpZmllcyB0aGUgY2hpbGQgcHJvY2VzcyBmb3IgdGhlCisg ICAgICA8cHJvY19zZXJ2aWNlLmg+IGludGVyZmFjZS4gICovCisgICBzdHJ1Y3QgcHNfcHJvY2hh bmRsZSBwcm9jX2hhbmRsZTsKK0BAIC0yNDgsNiArMjY5LDggQEAgZGVsZXRlX3RocmVhZF9kYl9p bmZvIChpbnQgcGlkKQorICAgaWYgKGluZm8tPmhhbmRsZSAhPSBOVUxMKQorICAgICBkbGNsb3Nl IChpbmZvLT5oYW5kbGUpOworIAorKyAgeGZyZWUgKGluZm8tPmZpbGVuYW1lKTsKKysKKyAgIGlm IChpbmZvX3ByZXYpCisgICAgIGluZm9fcHJldi0+bmV4dCA9IGluZm8tPm5leHQ7CisgICBlbHNl CitAQCAtODA3LDYgKzgzMCwxMCBAQCB0cnlfdGhyZWFkX2RiX2xvYWQgKGNvbnN0IGNoYXIgKmxp YnJhcnkpCisgCisgICBpbmZvID0gYWRkX3RocmVhZF9kYl9pbmZvIChoYW5kbGUpOworIAorKyAg LyogRG8gbm90IHNhdmUgc3lzdGVtIGxpYnJhcnkgbmFtZSwgdGhhdCBvbmUgaXMgYWx3YXlzIHRy dXN0ZWQuICAqLworKyAgaWYgKHN0cmNociAobGlicmFyeSwgJy8nKSAhPSBOVUxMKQorKyAgICBp bmZvLT5maWxlbmFtZSA9IGdkYl9yZWFscGF0aCAobGlicmFyeSk7CisrCisgICBpZiAodHJ5X3Ro cmVhZF9kYl9sb2FkXzEgKGluZm8pKQorICAgICByZXR1cm4gMTsKKyAKK0BAIC04NTYsNiArODgz LDkgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRpciAodm9pZCkKKyB7CisgICBzdHJ1Y3Qg b2JqZmlsZSAqb2JqOworIAorKyAgaWYgKCFhdXRvX2xvYWRfdGhyZWFkX2RiKQorKyAgICByZXR1 cm4gMDsKKysKKyAgIEFMTF9PQkpGSUxFUyAob2JqKQorICAgICBpZiAobGlicHRocmVhZF9uYW1l X3AgKG9iai0+bmFtZSkpCisgICAgICAgeworQEAgLTg5NSw2ICs5MjUsOSBAQCB0cnlfdGhyZWFk X2RiX2xvYWRfZnJvbV9kaXIgKGNvbnN0IGNoYXIKKyAgIGNoYXIgKnBhdGg7CisgICBpbnQgcmVz dWx0OworIAorKyAgaWYgKCFhdXRvX2xvYWRfdGhyZWFkX2RiKQorKyAgICByZXR1cm4gMDsKKysK KyAgIHBhdGggPSB4bWFsbG9jIChkaXJfbGVuICsgMSArIHN0cmxlbiAoTElCVEhSRUFEX0RCX1NP KSArIDEpOworICAgY2xlYW51cCA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIHBhdGgpOworIAorQEAg LTE4MDIsNiArMTgzNSwxNTAgQEAgdGhyZWFkX2RiX3Jlc3VtZSAoc3RydWN0IHRhcmdldF9vcHMg Km9wcworICAgYmVuZWF0aC0+dG9fcmVzdW1lIChiZW5lYXRoLCBwdGlkLCBzdGVwLCBzaWdubyk7 CisgfQorIAorKy8qIHFzb3J0IGhlbHBlciBmdW5jdGlvbiBmb3IgaW5mb19hdXRvX2xvYWRfbGli dGhyZWFkX2RiLCBzb3J0IHRoZQorKyAgIHRocmVhZF9kYl9pbmZvIHBvaW50ZXJzIHByaW1hcmls eSBieSB0aGVpciBGSUxFTkFNRSBhbmQgc2Vjb25kYXJpbHkgYnkgdGhlaXIKKysgICBQSUQsIGJv dGggaW4gYXNjZW5kaW5nIG9yZGVyLiAgKi8KKysKKytzdGF0aWMgaW50CisraW5mb19hdXRvX2xv YWRfbGlidGhyZWFkX2RiX2NvbXBhcmUgKGNvbnN0IHZvaWQgKmFwLCBjb25zdCB2b2lkICpicCkK Kyt7CisrICBzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKmEgPSAqKHN0cnVjdCB0aHJlYWRfZGJfaW5m byAqKikgYXA7CisrICBzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKmIgPSAqKHN0cnVjdCB0aHJlYWRf ZGJfaW5mbyAqKikgYnA7CisrICBpbnQgcmV0dmFsOworKworKyAgcmV0dmFsID0gc3RyY21wIChh LT5maWxlbmFtZSwgYi0+ZmlsZW5hbWUpOworKyAgaWYgKHJldHZhbCkKKysgICAgcmV0dXJuIHJl dHZhbDsKKysKKysgIHJldHVybiAoYS0+cGlkID4gYi0+cGlkKSAtIChhLT5waWQgLSBiLT5waWQp OworK30KKysKKysvKiBJbXBsZW1lbnQgJ2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYicuICAq LworKworK3N0YXRpYyB2b2lkCisraW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiIChjaGFyICph cmdzLCBpbnQgZnJvbV90dHkpCisreworKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50 X3Vpb3V0OworKyAgY29uc3QgY2hhciAqY3MgPSBhcmdzID8gYXJncyA6ICIiOworKyAgc3RydWN0 IHRocmVhZF9kYl9pbmZvICppbmZvLCAqKmFycmF5OworKyAgdW5zaWduZWQgaW5mb19jb3VudCwg dW5pcXVlX2ZpbGVuYW1lczsKKysgIHNpemVfdCBtYXhfZmlsZW5hbWVfbGVuLCBtYXhfcGlkc19s ZW4sIHBpZHNfbGVuOworKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CisrICBjaGFyICpwaWRz OworKyAgaW50IGk7CisrCisrICB3aGlsZSAoaXNzcGFjZSAoKmNzKSkKKysgICAgY3MrKzsKKysg IGlmICgqY3MpCisrICAgIGVycm9yIChfKCInaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiJyBk b2VzIG5vdCBhY2NlcHQgYW55IHBhcmFtZXRlcnMiKSk7CisrCisrICBpbmZvX2NvdW50ID0gMDsK KysgIGZvciAoaW5mbyA9IHRocmVhZF9kYl9saXN0OyBpbmZvOyBpbmZvID0gaW5mby0+bmV4dCkK KysgICAgaWYgKGluZm8tPmZpbGVuYW1lICE9IE5VTEwpCisrICAgICAgaW5mb19jb3VudCsrOwor KworKyAgYXJyYXkgPSB4bWFsbG9jIChzaXplb2YgKCphcnJheSkgKiBpbmZvX2NvdW50KTsKKysg IGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBhcnJheSk7CisrCisrICBpbmZvX2NvdW50 ID0gMDsKKysgIGZvciAoaW5mbyA9IHRocmVhZF9kYl9saXN0OyBpbmZvOyBpbmZvID0gaW5mby0+ bmV4dCkKKysgICAgaWYgKGluZm8tPmZpbGVuYW1lICE9IE5VTEwpCisrICAgICAgYXJyYXlbaW5m b19jb3VudCsrXSA9IGluZm87CisrCisrICAvKiBTb3J0IEFSUkFZIGJ5IGZpbGVuYW1lcyBhbmQg UElEcy4gICovCisrCisrICBxc29ydCAoYXJyYXksIGluZm9fY291bnQsIHNpemVvZiAoKmFycmF5 KSwKKysJIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYl9jb21wYXJlKTsKKysKKysgIC8qIENh bGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHVuaXF1ZSBmaWxlbmFtZXMgKHJvd3MpIGFuZCB0aGUgbWF4 aW11bSBzdHJpbmcKKysgICAgIGxlbmd0aCBvZiBQSURzIGxpc3QgZm9yIHRoZSB1bmlxdWUgZmls ZW5hbWVzIChjb2x1bW5zKS4gICovCisrCisrICB1bmlxdWVfZmlsZW5hbWVzID0gMDsKKysgIG1h eF9maWxlbmFtZV9sZW4gPSAwOworKyAgbWF4X3BpZHNfbGVuID0gMDsKKysgIHBpZHNfbGVuID0g MDsKKysgIGZvciAoaSA9IDA7IGkgPCBpbmZvX2NvdW50OyBpKyspCisrICAgIHsKKysgICAgICBp bnQgcGlkID0gYXJyYXlbaV0tPnBpZDsKKysgICAgICBzaXplX3QgdGhpc19waWRfbGVuOworKwor KyAgICAgIGZvciAodGhpc19waWRfbGVuID0gMDsgcGlkICE9IDA7IHBpZCAvPSAxMCkKKysJdGhp c19waWRfbGVuKys7CisrCisrICAgICAgaWYgKGkgPT0gMCB8fCBzdHJjbXAgKGFycmF5W2kgLSAx XS0+ZmlsZW5hbWUsIGFycmF5W2ldLT5maWxlbmFtZSkgIT0gMCkKKysJeworKwkgIHVuaXF1ZV9m aWxlbmFtZXMrKzsKKysJICBtYXhfZmlsZW5hbWVfbGVuID0gbWF4IChtYXhfZmlsZW5hbWVfbGVu LAorKwkJCQkgIHN0cmxlbiAoYXJyYXlbaV0tPmZpbGVuYW1lKSk7CisrCisrCSAgaWYgKGkgPiAw KQorKwkgICAgeworKwkgICAgICBwaWRzX2xlbiAtPSBzdHJsZW4gKCIsICIpOworKwkgICAgICBt YXhfcGlkc19sZW4gPSBtYXggKG1heF9waWRzX2xlbiwgcGlkc19sZW4pOworKwkgICAgfQorKwkg IHBpZHNfbGVuID0gMDsKKysJfQorKyAgICAgIHBpZHNfbGVuICs9IHRoaXNfcGlkX2xlbiArIHN0 cmxlbiAoIiwgIik7CisrICAgIH0KKysgIGlmIChpKQorKyAgICB7CisrICAgICAgcGlkc19sZW4g LT0gc3RybGVuICgiLCAiKTsKKysgICAgICBtYXhfcGlkc19sZW4gPSBtYXggKG1heF9waWRzX2xl biwgcGlkc19sZW4pOworKyAgICB9CisrCisrICAvKiBUYWJsZSBoZWFkZXIgc2hpZnRlZCByaWdo dCBieSBwcmVjZWRpbmcgImxpYnRocmVhZC1kYjogICIgd291bGQgbm90IG1hdGNoCisrICAgICBp dHMgY29sdW1ucy4gICovCisrICBpZiAoaW5mb19jb3VudCA+IDAgJiYgYXJncyA9PSBhdXRvX2xv YWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmwpCisrICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxu Iik7CisrCisrICBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDIs IHVuaXF1ZV9maWxlbmFtZXMsCisrCQkJCSAgICAgICAiTGludXhUaHJlYWREYlRhYmxlIik7Cisr CisrICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgbWF4X2ZpbGVuYW1lX2xlbiwgdWlfbGVm dCwgImZpbGVuYW1lIiwKKysJCSAgICAgICAiRmlsZW5hbWUiKTsKKysgIHVpX291dF90YWJsZV9o ZWFkZXIgKHVpb3V0LCBwaWRzX2xlbiwgdWlfbGVmdCwgIlBJRHMiLCAiUGlkcyIpOworKyAgdWlf b3V0X3RhYmxlX2JvZHkgKHVpb3V0KTsKKysKKysgIHBpZHMgPSB4bWFsbG9jIChtYXhfcGlkc19s ZW4gKyAxKTsKKysgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHBpZHMpOworKworKyAgLyogTm90ZSBJ IGlzIGluY3JlbWVudGVkIGluc2lkZSB0aGUgY3ljbGUsIG5vdCBhdCBpdHMgZW5kLiAgKi8KKysg IGZvciAoaSA9IDA7IGkgPCBpbmZvX2NvdW50OykKKysgICAgeworKyAgICAgIHN0cnVjdCBjbGVh bnVwICpjaGFpbiA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwg TlVMTCk7CisrICAgICAgY2hhciAqcGlkc19lbmQ7CisrCisrICAgICAgaW5mbyA9IGFycmF5W2ld OworKyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAiZmlsZW5hbWUiLCBpbmZvLT5m aWxlbmFtZSk7CisrICAgICAgcGlkc19lbmQgPSBwaWRzOworKworKyAgICAgIHdoaWxlIChpIDwg aW5mb19jb3VudCAmJiBzdHJjbXAgKGluZm8tPmZpbGVuYW1lLCBhcnJheVtpXS0+ZmlsZW5hbWUp ID09IDApCisrCXsKKysJICBpZiAocGlkc19lbmQgIT0gcGlkcykKKysJICAgIHsKKysJICAgICAg KnBpZHNfZW5kKysgPSAnLCc7CisrCSAgICAgICpwaWRzX2VuZCsrID0gJyAnOworKwkgICAgfQor KwkgIHBpZHNfZW5kICs9IHhzbnByaW50ZiAocGlkc19lbmQsICZwaWRzW21heF9waWRzX2xlbiAr IDFdIC0gcGlkc19lbmQsCisrCQkJCSAiJXUiLCBhcnJheVtpXS0+cGlkKTsKKysJICBnZGJfYXNz ZXJ0IChwaWRzX2VuZCA8ICZwaWRzW21heF9waWRzX2xlbiArIDFdKTsKKysKKysJICBpKys7Cisr CX0KKysgICAgICAqcGlkc19lbmQgPSAnXDAnOworKworKyAgICAgIHVpX291dF9maWVsZF9zdHJp bmcgKHVpb3V0LCAicGlkcyIsIHBpZHMpOworKworKyAgICAgIHVpX291dF90ZXh0ICh1aW91dCwg IlxuIik7CisrICAgICAgZG9fY2xlYW51cHMgKGNoYWluKTsKKysgICAgfQorKworKyAgZG9fY2xl YW51cHMgKGJhY2tfdG8pOworKworKyAgaWYgKGluZm9fY291bnQgPT0gMCkKKysgICAgdWlfb3V0 X21lc3NhZ2UgKHVpb3V0LCAwLCBfKCJObyBhdXRvLWxvYWRlZCBsaWJ0aHJlYWQtZGIuXG4iKSk7 CisrfQorKworIHN0YXRpYyB2b2lkCisgaW5pdF90aHJlYWRfZGJfb3BzICh2b2lkKQorIHsKK0BA IC0xODYzLDYgKzIwNDAsMjMgQEAgV2hlbiBub24temVybywgbGlidGhyZWFkLWRiIGRlYnVnZ2lu ZyBpcworIAkJCSAgICBzaG93X2xpYnRocmVhZF9kYl9kZWJ1ZywKKyAJCQkgICAgJnNldGRlYnVn bGlzdCwgJnNob3dkZWJ1Z2xpc3QpOworIAorKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJs aWJ0aHJlYWQtZGIiLCBjbGFzc19zdXBwb3J0LAorKwkJCSAgICZhdXRvX2xvYWRfdGhyZWFkX2Ri LCBfKCJcCisrRW5hYmxlIG9yIGRpc2FibGUgYXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNp ZmljIGxpYnRocmVhZF9kYi4iKSwgXygiXAorK1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcgaW5m ZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiIGlzIGVuYWJsZWQuIiksIF8oIlwKKytJZiBlbmFi bGVkLCBsaWJ0aHJlYWRfZGIgd2lsbCBiZSBzZWFyY2hlZCBpbiAnc2V0IGxpYnRocmVhZC1kYi1z ZWFyY2gtcGF0aCdcblwKKytsb2NhdGlvbnMgdG8gbG9hZCBsaWJ0aHJlYWRfZGIgY29tcGF0aWJs ZSB3aXRoIHRoZSBpbmZlcmlvci5cblwKKytTdGFuZGFyZCBzeXN0ZW0gbGlidGhyZWFkX2RiIHN0 aWxsIGdldHMgbG9hZGVkIGV2ZW4gd2l0aCB0aGlzIG9wdGlvbiBvZmYuXG5cCisrVGhpcyBvcHRp b25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZm9yIHVudHJ1c3RlZCBpbmZlcmlvcnMuIiks CisrCQkJICAgTlVMTCwgc2hvd19hdXRvX2xvYWRfdGhyZWFkX2RiLAorKwkJCSAgIGF1dG9fbG9h ZF9zZXRfY21kbGlzdF9nZXQgKCksCisrCQkJICAgYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQg KCkpOworKworKyAgYWRkX2NtZCAoImxpYnRocmVhZC1kYiIsIGNsYXNzX2luZm8sIGluZm9fYXV0 b19sb2FkX2xpYnRocmVhZF9kYiwKKysJICAgXygiUHJpbnQgdGhlIGxpc3Qgb2YgbG9hZGVkIGlu ZmVyaW9yIHNwZWNpZmljIGxpYnRocmVhZF9kYi5cblwKKytVc2FnZTogaW5mbyBhdXRvLWxvYWQg bGlidGhyZWFkLWRiIiksCisrCSAgIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICgpKTsKKysK KyAgIC8qIEFkZCBvdXJzZWx2ZXMgdG8gb2JqZmlsZSBldmVudCBjaGFpbi4gICovCisgICBvYnNl cnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKHRocmVhZF9kYl9uZXdfb2JqZmlsZSk7CisgCitJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcu NC41MC4yMDEyMDEyMC5vcmlnL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0NDoyNi45NTc0Mzc1 MDMgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAw MDo0Njo0Ny41NTcwNzk3NzcgKzAyMDAKK0BAIC05NDUsOCArOTQ1LDggQEAgY2FwdHVyZWRfbWFp biAodm9pZCAqZGF0YSkKKyAgIC8qIFNraXAgYXV0by1sb2FkaW5nIHNlY3Rpb24tc3BlY2lmaWVk IHNjcmlwdHMgdW50aWwgd2UndmUgc291cmNlZAorICAgICAgbG9jYWxfZ2RiaW5pdCAod2hpY2gg aXMgb2Z0ZW4gdXNlZCB0byBhdWdtZW50IHRoZSBzb3VyY2Ugc2VhcmNoCisgICAgICBwYXRoKS4g ICovCistICBzYXZlX2F1dG9fbG9hZCA9IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQ7CistICBnZGJw eV9nbG9iYWxfYXV0b19sb2FkID0gMDsKKysgIHNhdmVfYXV0b19sb2FkID0gZ2xvYmFsX2F1dG9f bG9hZDsKKysgIGdsb2JhbF9hdXRvX2xvYWQgPSAwOworIAorICAgaWYgKGV4ZWNhcmcgIT0gTlVM TAorICAgICAgICYmIHN5bWFyZyAhPSBOVUxMCitAQCAtMTAyMiwxNCArMTAyMiwyNCBAQCBjYXB0 dXJlZF9tYWluICh2b2lkICpkYXRhKQorIAorICAgLyogUmVhZCB0aGUgLmdkYmluaXQgZmlsZSBp biB0aGUgY3VycmVudCBkaXJlY3RvcnksICppZiogaXQgaXNuJ3QKKyAgICAgIHRoZSBzYW1lIGFz IHRoZSAkSE9NRS8uZ2RiaW5pdCBmaWxlIChpdCBzaG91bGQgZXhpc3QsIGFsc28pLiAgKi8KKy0g IGlmIChsb2NhbF9nZGJpbml0ICYmICFpbmhpYml0X2dkYmluaXQpCistICAgIGNhdGNoX2NvbW1h bmRfZXJyb3JzIChzb3VyY2Vfc2NyaXB0LCBsb2NhbF9nZGJpbml0LCAwLCBSRVRVUk5fTUFTS19B TEwpOworKyAgaWYgKGxvY2FsX2dkYmluaXQpCisrICAgIHsKKysgICAgICBhdXRvX2xvYWRfbG9j YWxfZ2RiaW5pdF9wYXRobmFtZSA9IGdkYl9yZWFscGF0aCAobG9jYWxfZ2RiaW5pdCk7CisrCisr ICAgICAgaWYgKCFpbmhpYml0X2dkYmluaXQgJiYgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQpCisr CXsKKysJICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQgPSAxOworKworKwkgIGNhdGNo X2NvbW1hbmRfZXJyb3JzIChzb3VyY2Vfc2NyaXB0LCBsb2NhbF9nZGJpbml0LCAwLAorKwkJCQlS RVRVUk5fTUFTS19BTEwpOworKwl9CisrICAgIH0KKyAKKyAgIC8qIE5vdyB0aGF0IGFsbCAuZ2Ri aW5pdCdzIGhhdmUgYmVlbiByZWFkIGFuZCBhbGwgLWQgb3B0aW9ucyBoYXZlIGJlZW4KKyAgICAg IHByb2Nlc3NlZCwgd2UgY2FuIHJlYWQgYW55IHNjcmlwdHMgbWVudGlvbmVkIGluIFNZTUFSRy4K KyAgICAgIFdlIHdhaXQgdW50aWwgbm93IGJlY2F1c2UgaXQgaXMgY29tbW9uIHRvIGFkZCB0byB0 aGUgc291cmNlIHNlYXJjaAorICAgICAgcGF0aCBpbiBsb2NhbF9nZGJpbml0LiAgKi8KKy0gIGdk YnB5X2dsb2JhbF9hdXRvX2xvYWQgPSBzYXZlX2F1dG9fbG9hZDsKKysgIGdsb2JhbF9hdXRvX2xv YWQgPSBzYXZlX2F1dG9fbG9hZDsKKyAgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKKyAgICAgbG9h ZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKG9iamZpbGUpOworIAorQEAgLTExOTYsNyArMTIw Niw3IEBAIEF0IHN0YXJ0dXAsIEdEQiByZWFkcyB0aGUgZm9sbG93aW5nIGluaXQKKyAiKSwgaG9t ZV9nZGJpbml0KTsKKyAgIGlmIChsb2NhbF9nZGJpbml0KQorICAgICBmcHJpbnRmX3VuZmlsdGVy ZWQgKHN0cmVhbSwgXygiXAorLSAgICogbG9jYWwgaW5pdCBmaWxlOiAuLyVzXG5cCisrICAgKiBs b2NhbCBpbml0IGZpbGUgKHNlZSBhbHNvICdzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQnKTog Li8lc1xuXAorICIpLCBsb2NhbF9nZGJpbml0KTsKKyAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlxu XAorIEZvciBtb3JlIGluZm9ybWF0aW9uLCB0eXBlIFwiaGVscFwiIGZyb20gd2l0aGluIEdEQiwg b3IgY29uc3VsdCB0aGVcblwKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2Ri LnRleGluZm8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2Rv Yy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQ0OjI2LjkyODQzNzU3NyArMDIwMAorKysrIGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQ2OjQ3 LjU1ODA3OTc3NCArMDIwMAorQEAgLTEwMzQsNiArMTAzNCw3IEBAIFlvdSBjYW4gcnVuIEB2YWx1 ZXtHREJOfSBpbiB2YXJpb3VzIGFsdGUKKyBiYXRjaCBtb2RlIG9yIHF1aWV0IG1vZGUuCisgCisg QHRhYmxlIEBjb2RlCisrQGFuY2hvcnstbnh9CisgQGl0ZW0gLW54CisgQGl0ZW14IC1uCisgQGNp bmRleCBAY29kZXstLW54fQorQEAgLTEyNjUsNiArMTI2Niw3IEBAIEhlcmUncyB0aGUgZGVzY3Jp cHRpb24gb2Ygd2hhdCBAdmFsdWV7R0QKKyBTZXRzIHVwIHRoZSBjb21tYW5kIGludGVycHJldGVy IGFzIHNwZWNpZmllZCBieSB0aGUgY29tbWFuZCBsaW5lCisgKEBweHJlZntNb2RlIE9wdGlvbnMs IGludGVycHJldGVyfSkuCisgCisrQGFuY2hvcntPcHRpb24gLWluaXQtZXZhbC1jb21tYW5kfQor IEBpdGVtCisgRXhlY3V0ZXMgY29tbWFuZHMgYW5kIGNvbW1hbmQgZmlsZXMgc3BlY2lmaWVkIGJ5 IHRoZSBAc2FtcHstaWV4fSBhbmQKKyBAc2FtcHstaXh9IG9wdGlvbnMgaW4gdGhlaXIgc3BlY2lm aWVkIG9yZGVyLiAgVXN1YWxseSB5b3Ugc2hvdWxkIHVzZSB0aGUKK0BAIC0xMjc5LDYgKzEyODEs NyBAQCB1c2VkIHdoZW4gYnVpbGRpbmcgQHZhbHVle0dEQk59OyBAcHhyZWZ7CisgICxTeXN0ZW0t d2lkZSBjb25maWd1cmF0aW9uIGFuZCBzZXR0aW5nc30pIGFuZCBleGVjdXRlcyBhbGwgdGhlIGNv bW1hbmRzIGluCisgdGhhdCBmaWxlLgorIAorK0BhbmNob3J7SG9tZSBEaXJlY3RvcnkgSW5pdCBG aWxlfQorIEBpdGVtCisgUmVhZHMgdGhlIGluaXQgZmlsZSAoaWYgYW55KSBpbiB5b3VyIGhvbWUg ZGlyZWN0b3J5QGZvb3Rub3Rle09uCisgRE9TL1dpbmRvd3Mgc3lzdGVtcywgdGhlIGhvbWUgZGly ZWN0b3J5IGlzIHRoZSBvbmUgcG9pbnRlZCB0byBieSB0aGUKK0BAIC0xMjg4LDkgKzEyOTEsMTIg QEAgdGhhdCBmaWxlLgorIEBpdGVtCisgUHJvY2Vzc2VzIGNvbW1hbmQgbGluZSBvcHRpb25zIGFu ZCBvcGVyYW5kcy4KKyAKKytAYW5jaG9ye0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rv cnkgZHVyaW5nIFN0YXJ0dXB9CisgQGl0ZW0KKyBSZWFkcyBhbmQgZXhlY3V0ZXMgdGhlIGNvbW1h bmRzIGZyb20gaW5pdCBmaWxlIChpZiBhbnkpIGluIHRoZSBjdXJyZW50Cistd29ya2luZyBkaXJl Y3RvcnkuICBUaGlzIGlzIG9ubHkgZG9uZSBpZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMKKyt3 b3JraW5nIGRpcmVjdG9yeSBhcyBsb25nIGFzIEBzYW1we3NldCBhdXRvLWxvYWQgbG9jYWwtZ2Ri aW5pdH0gaXMgc2V0IHRvCisrQHNhbXB7b259IChAcHhyZWZ7SW5pdCBGaWxlIGluIHRoZSBDdXJy ZW50IERpcmVjdG9yeX0pLgorK1RoaXMgaXMgb25seSBkb25lIGlmIHRoZSBjdXJyZW50IGRpcmVj dG9yeSBpcworIGRpZmZlcmVudCBmcm9tIHlvdXIgaG9tZSBkaXJlY3RvcnkuICBUaHVzLCB5b3Ug Y2FuIGhhdmUgbW9yZSB0aGFuIG9uZQorIGluaXQgZmlsZSwgb25lIGdlbmVyaWMgaW4geW91ciBo b21lIGRpcmVjdG9yeSwgYW5kIGFub3RoZXIsIHNwZWNpZmljCisgdG8gdGhlIHByb2dyYW0geW91 IGFyZSBkZWJ1Z2dpbmcsIGluIHRoZSBkaXJlY3Rvcnkgd2hlcmUgeW91IGludm9rZQorQEAgLTEz MDYsNyArMTMxMiw3IEBAIElmIHlvdSB3aXNoIHRvIGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZwor IHlvdSBtdXN0IGRvIHNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmc6CisgCisgQHNtYWxsZXhh bXBsZQorLSQgZ2RiIC1pZXggInNldCBhdXRvLWxvYWQtc2NyaXB0cyBvZmYiIG15cHJvZ3JhbQor KyQgZ2RiIC1pZXggInNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgb2ZmIiBteXByb2dyYW0K KyBAZW5kIHNtYWxsZXhhbXBsZQorIAorIE9wdGlvbiBAc2FtcHstZXh9IGRvZXMgbm90IHdvcmsg YmVjYXVzZSB0aGUgYXV0by1sb2FkaW5nIGlzIHRoZW4gdHVybmVkCitAQCAtMjg5MSw2ICsyODk3 LDcgQEAgcHJvZ3JhbXMgd2l0aCBtdWx0aXBsZSB0aHJlYWRzLgorIEB4cmVme1NldCBXYXRjaHBv aW50cywsU2V0dGluZyBXYXRjaHBvaW50c30sIGZvciBpbmZvcm1hdGlvbiBhYm91dAorIHdhdGNo cG9pbnRzIGluIHByb2dyYW1zIHdpdGggbXVsdGlwbGUgdGhyZWFkcy4KKyAKKytAYW5jaG9ye3Nl dCBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9CisgQHRhYmxlIEBjb2RlCisgQGtpbmRleCBzZXQg bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRoCisgQGNpbmRleCBzZWFyY2ggcGF0aCBmb3IgQGNvZGV7 bGlidGhyZWFkX2RifQorQEAgLTI5MDUsMTEgKzI5MTIsMTUgQEAgbWFjcm8uCisgT24gQHNje2du dX0vTGludXggYW5kIFNvbGFyaXMgc3lzdGVtcywgQHZhbHVle0dEQk59IHVzZXMgYSBgYGhlbHBl cicnCisgQGNvZGV7bGlidGhyZWFkX2RifSBsaWJyYXJ5IHRvIG9idGFpbiBpbmZvcm1hdGlvbiBh Ym91dCB0aHJlYWRzIGluIHRoZQorIGluZmVyaW9yIHByb2Nlc3MuICBAdmFsdWV7R0RCTn0gd2ls bCB1c2UgQHNhbXB7bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRofQorLXRvIGZpbmQgQGNvZGV7bGli dGhyZWFkX2RifS4KKyt0byBmaW5kIEBjb2Rle2xpYnRocmVhZF9kYn0uICBAdmFsdWV7R0RCTn0g YWxzbyBjb25zdWx0cyBmaXJzdCBpZiBpbmZlcmlvcgorK3NwZWNpZmljIHRocmVhZCBkZWJ1Z2dp bmcgbGlicmFyeSBsb2FkaW5nIGlzIGVuYWJsZWQKKytieSBAc2FtcHtzZXQgYXV0by1sb2FkIGxp YnRocmVhZC1kYn0gKEBweHJlZntsaWJ0aHJlYWRfZGIuc28uMSBmaWxlfSkuCisgCisgQSBzcGVj aWFsIGVudHJ5IEBzYW1weyRzZGlyfSBmb3IgQHNhbXB7bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRo fQorIHJlZmVycyB0byB0aGUgZGVmYXVsdCBzeXN0ZW0gZGlyZWN0b3JpZXMgdGhhdCBhcmUKKy1u b3JtYWxseSBzZWFyY2hlZCBmb3IgbG9hZGluZyBzaGFyZWQgbGlicmFyaWVzLgorK25vcm1hbGx5 IHNlYXJjaGVkIGZvciBsb2FkaW5nIHNoYXJlZCBsaWJyYXJpZXMuICBUaGUgQHNhbXB7JHNkaXJ9 IGVudHJ5CisraXMgdGhlIG9ubHkga2luZCBub3QgbmVlZGluZyB0byBiZSBlbmFibGVkIGJ5IEBz YW1we3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQorKyhAcHhyZWZ7bGlidGhyZWFkX2RiLnNv LjEgZmlsZX0pLgorIAorIEEgc3BlY2lhbCBlbnRyeSBAc2FtcHskcGRpcn0gZm9yIEBzYW1we2xp YnRocmVhZC1kYi1zZWFyY2gtcGF0aH0KKyByZWZlcnMgdG8gdGhlIGRpcmVjdG9yeSBmcm9tIHdo aWNoIEBjb2Rle2xpYnB0aHJlYWR9CitAQCAtMjAzMjAsNiArMjAzMzEsNyBAQCBkZXNjcmliZWQg aGVyZS4KKyAqIFNjcmVlbiBTaXplOjogICAgICAgICAgICAgICAgIFNjcmVlbiBzaXplCisgKiBO dW1iZXJzOjogICAgICAgICAgICAgICAgICAgICBOdW1iZXJzCisgKiBBQkk6OiAgICAgICAgICAg ICAgICAgICAgICAgICBDb25maWd1cmluZyB0aGUgY3VycmVudCBBQkkKKysqIEF1dG8tbG9hZGlu Zzo6ICAgICAgICAgICAgICAgIEF1dG9tYXRpY2FsbHkgbG9hZGluZyBhc3NvY2lhdGVkIGZpbGVz CisgKiBNZXNzYWdlcy9XYXJuaW5nczo6ICAgICAgICAgICBPcHRpb25hbCB3YXJuaW5ncyBhbmQg bWVzc2FnZXMKKyAqIERlYnVnZ2luZyBPdXRwdXQ6OiAgICAgICAgICAgIE9wdGlvbmFsIG1lc3Nh Z2VzIGFib3V0IGludGVybmFsIGhhcHBlbmluZ3MKKyAqIE90aGVyIE1pc2MgU2V0dGluZ3M6OiAg ICAgICAgIE90aGVyIE1pc2NlbGxhbmVvdXMgU2V0dGluZ3MKK0BAIC0yMDc0NSw2ICsyMDc1Nywy MjcgQEAgV2l0aCBubyBhcmd1bWVudCwgc2hvdyB0aGUgbGlzdCBvZiBzdXBwbworIFNldCB0aGUg Y3VycmVudCBDQHR7Kyt9IEFCSSB0byBAdmFye2FiaX0sIG9yIHJldHVybiB0byBhdXRvbWF0aWMg ZGV0ZWN0aW9uLgorIEBlbmQgdGFibGUKKyAKKytAbm9kZSBBdXRvLWxvYWRpbmcKKytAc2VjdGlv biBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgYXNzb2NpYXRlZCBmaWxlcworK0BjaW5kZXggYXV0by1s b2FkaW5nCisrCisrQHZhbHVle0dEQk59IHNvbWV0aW1lcyByZWFkcyBmaWxlcyB3aXRoIGNvbW1h bmRzIGFuZCBzZXR0aW5ncyBhdXRvbWF0aWNhbGx5LAorK3dpdGhvdXQgYmVpbmcgZXhwbGljaXRs eSB0b2xkIHNvIGJ5IHRoZSB1c2VyLiAgV2UgY2FsbCB0aGlzIGZlYXR1cmUKKytAZGZue2F1dG8t bG9hZGluZ30uICBXaGlsZSBhdXRvLWxvYWRpbmcgaXMgdXNlZnVsIGZvciBhdXRvbWF0aWNhbGx5 IGFkYXB0aW5nCisrQHZhbHVle0dEQk59IHRvIHRoZSBuZWVkcyBvZiB5b3VyIHByb2plY3QsIGl0 IGNhbiBzb21ldGltZXMgcHJvZHVjZSB1bmV4cGVjdGVkCisrcmVzdWx0cyBvciBpbnRyb2R1Y2Ug c2VjdXJpdHkgcmlza3MgKGUuZy4sIGlmIHRoZSBmaWxlIGNvbWVzIGZyb20gdW50cnVzdGVkCisr c291cmNlcykuCisrCisrRm9yIHRoZXNlIHJlYXNvbnMsIEB2YWx1ZXtHREJOfSBpbmNsdWRlcyBj b21tYW5kcyBhbmQgb3B0aW9ucyB0byBsZXQgeW91CisrY29udHJvbCB3aGVuIHRvIGF1dG8tbG9h ZCBmaWxlcyBhbmQgd2hpY2ggZmlsZXMgc2hvdWxkIGJlIGF1dG8tbG9hZGVkLgorKworK0B0YWJs ZSBAY29kZQorK0BhbmNob3J7c2V0IGF1dG8tbG9hZCBvZmZ9CisrQGtpbmRleCBzZXQgYXV0by1s b2FkIG9mZgorK0BpdGVtIHNldCBhdXRvLWxvYWQgb2ZmCisrR2xvYmFsbHkgZGlzYWJsZSBsb2Fk aW5nIG9mIGFsbCBhdXRvLWxvYWRlZCBmaWxlcy4KKytZb3UgbWF5IHdhbnQgdG8gdXNlIHRoaXMg Y29tbWFuZCB3aXRoIHRoZSBAc2FtcHstaWV4fSBvcHRpb24KKysoQHB4cmVme09wdGlvbiAtaW5p dC1ldmFsLWNvbW1hbmR9KSBzdWNoIGFzOgorK0BzbWFsbGV4YW1wbGUKKyskIEBrYmR7Z2RiIC1p ZXggInNldCBhdXRvLWxvYWQgb2ZmIiB1bnRydXN0ZWQtZXhlY3V0YWJsZSBjb3JlZmlsZX0KKytA ZW5kIHNtYWxsZXhhbXBsZQorKworK0JlIGF3YXJlIHRoYXQgc3lzdGVtIGluaXQgZmlsZSAoQHB4 cmVme1N5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb259KQorK2FuZCBpbml0IGZpbGVzIGZyb20geW91 ciBob21lIGRpcmVjdG9yeSAoQHB4cmVme0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pCisrc3Rp bGwgZ2V0IHJlYWQgKGFzIHRoZXkgY29tZSBmcm9tIGdlbmVyYWxseSB0cnVzdGVkIGRpcmVjdG9y aWVzKS4KKytUbyBwcmV2ZW50IEB2YWx1ZXtHREJOfSBmcm9tIGF1dG8tbG9hZGluZyBldmVuIHRo b3NlIGluaXQgZmlsZXMsIHVzZSB0aGUKKytAb3B0aW9uey1ueH0gb3B0aW9uIChAcHhyZWZ7TW9k ZSBPcHRpb25zfSksIGluIGFkZGl0aW9uIHRvCisrQGNvZGV7c2V0IGF1dG8tbG9hZCBub30uCisr CisrQGFuY2hvcntzaG93IGF1dG8tbG9hZH0KKytAa2luZGV4IHNob3cgYXV0by1sb2FkCisrQGl0 ZW0gc2hvdyBhdXRvLWxvYWQKKytTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGVhY2ggc3Bl Y2lmaWMgQHNhbXB7YXV0by1sb2FkfSBmaWxlKHMpIGlzIGVuYWJsZWQKKytvciBkaXNhYmxlZC4K KysKKytAc21hbGxleGFtcGxlCisrKGdkYikgc2hvdyBhdXRvLWxvYWQKKytnZGItc2NyaXB0czog IEF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgaXMg b24uCisrbGlidGhyZWFkLWRiOiAgQXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIGxp YnRocmVhZF9kYiBpcyBvbi4KKytsb2NhbC1nZGJpbml0OiAgQXV0by1sb2FkaW5nIG9mIC5nZGJp bml0IHNjcmlwdCBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5IGlzIG9uLgorK3B5dGhvbi1zY3JpcHRz OiAgQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlzIG9uLgorK0BlbmQgc21hbGxleGFt cGxlCisrCisrQGFuY2hvcntpbmZvIGF1dG8tbG9hZH0KKytAa2luZGV4IGluZm8gYXV0by1sb2Fk CisrQGl0ZW0gaW5mbyBhdXRvLWxvYWQKKytQcmludCB3aGV0aGVyIGVhY2ggc3BlY2lmaWMgQHNh bXB7YXV0by1sb2FkfSBmaWxlKHMpIGhhdmUgYmVlbiBhdXRvLWxvYWRlZCBvcgorK25vdC4KKysK KytAc21hbGxleGFtcGxlCisrKGdkYikgaW5mbyBhdXRvLWxvYWQKKytnZGItc2NyaXB0czoKKytM b2FkZWQgIFNjcmlwdAorK1llcyAgICAgL2hvbWUvdXNlci9nZGIvZ2RiLWdkYi5nZGIKKytsaWJ0 aHJlYWQtZGI6ICBObyBhdXRvLWxvYWRlZCBsaWJ0aHJlYWQtZGIuCisrbG9jYWwtZ2RiaW5pdDog IExvY2FsIC5nZGJpbml0IGZpbGUgIi9ob21lL3VzZXIvZ2RiLy5nZGJpbml0IiBoYXMgYmVlbiBs b2FkZWQuCisrcHl0aG9uLXNjcmlwdHM6CisrTG9hZGVkICBTY3JpcHQKKytZZXMgICAgIC9ob21l L3VzZXIvZ2RiL2dkYi1nZGIucHkKKytAZW5kIHNtYWxsZXhhbXBsZQorK0BlbmQgdGFibGUKKysK KytUaGVzZSBhcmUgdmFyaW91cyBraW5kcyBvZiBmaWxlcyBAdmFsdWV7R0RCTn0gY2FuIGF1dG9t YXRpY2FsbHkgbG9hZDoKKysKKytAaXRlbWl6ZSBAYnVsbGV0CisrQGl0ZW0KKytAeHJlZntvYmpm aWxlLWdkYi5weSBmaWxlfSwgY29udHJvbGxlZCBieSBAcmVme3NldCBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHN9LgorK0BpdGVtCisrQHhyZWZ7b2JqZmlsZS1nZGIuZ2RiIGZpbGV9LCBjb250cm9s bGVkIGJ5IEByZWZ7c2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0c30uCisrQGl0ZW0KKytAeHJlZntk b3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufSwKKytjb250cm9sbGVkIGJ5IEByZWZ7c2V0IGF1 dG8tbG9hZCBweXRob24tc2NyaXB0c30uCisrQGl0ZW0KKytAeHJlZntJbml0IEZpbGUgaW4gdGhl IEN1cnJlbnQgRGlyZWN0b3J5fSwKKytjb250cm9sbGVkIGJ5IEByZWZ7c2V0IGF1dG8tbG9hZCBs b2NhbC1nZGJpbml0fS4KKytAaXRlbQorK0B4cmVme2xpYnRocmVhZF9kYi5zby4xIGZpbGV9LCBj b250cm9sbGVkIGJ5IEByZWZ7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgorK0BlbmQgaXRl bWl6ZQorKworK1RoZXNlIGFyZSBAdmFsdWV7R0RCTn0gY29udHJvbCBjb21tYW5kcyBmb3IgdGhl IGF1dG8tbG9hZGluZzoKKysKKytAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC41IC41Cisr QGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBvZmZ9LgorK0B0YWIgRGlzYWJsZSBhdXRvLWxvYWRp bmcgZ2xvYmFsbHkuCisrQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWR9LgorK0B0YWIgU2hvdyBz ZXR0aW5nIG9mIGFsbCBraW5kcyBvZiBmaWxlcy4KKytAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9h ZH0uCisrQHRhYiBTaG93IHN0YXRlIG9mIGFsbCBraW5kcyBvZiBmaWxlcy4KKytAaXRlbSBAeHJl ZntzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzfS4KKytAdGFiIENvbnRyb2wgZm9yIEB2YWx1ZXtH REJOfSBjb21tYW5kIHNjcmlwdHMuCisrQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQgZ2RiLXNj cmlwdHN9LgorK0B0YWIgU2hvdyBzZXR0aW5nIG9mIEB2YWx1ZXtHREJOfSBjb21tYW5kIHNjcmlw dHMuCisrQGl0ZW0gQHhyZWZ7aW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9LgorK0B0YWIgU2hv dyBzdGF0ZSBvZiBAdmFsdWV7R0RCTn0gY29tbWFuZCBzY3JpcHRzLgorK0BpdGVtIEB4cmVme3Nl dCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9LgorK0B0YWIgQ29udHJvbCBmb3IgQHZhbHVle0dE Qk59IFB5dGhvbiBzY3JpcHRzLgorK0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIHB5dGhvbi1z Y3JpcHRzfS4KKytAdGFiIFNob3cgc2V0dGluZyBvZiBAdmFsdWV7R0RCTn0gUHl0aG9uIHNjcmlw dHMuCisrQGl0ZW0gQHhyZWZ7aW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9LgorK0B0YWIg U2hvdyBzdGF0ZSBvZiBAdmFsdWV7R0RCTn0gUHl0aG9uIHNjcmlwdHMuCisrQGl0ZW0gQHhyZWZ7 c2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KKytAdGFiIENvbnRyb2wgZm9yIGluaXQgZmls ZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisrQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQg bG9jYWwtZ2RiaW5pdH0uCisrQHRhYiBTaG93IHNldHRpbmcgb2YgaW5pdCBmaWxlIGluIHRoZSBj dXJyZW50IGRpcmVjdG9yeS4KKytAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJp bml0fS4KKytAdGFiIFNob3cgc3RhdGUgb2YgaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVj dG9yeS4KKytAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0uCisrQHRhYiBD b250cm9sIGZvciB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCisrQGl0ZW0gQHhyZWZ7c2hvdyBh dXRvLWxvYWQgbGlidGhyZWFkLWRifS4KKytAdGFiIFNob3cgc2V0dGluZyBvZiB0aHJlYWQgZGVi dWdnaW5nIGxpYnJhcnkuCisrQGl0ZW0gQHhyZWZ7aW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRi fS4KKytAdGFiIFNob3cgc3RhdGUgb2YgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5LgorK0BlbmQg bXVsdGl0YWJsZQorKworK0BtZW51CisrKiBJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0 b3J5OjogQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0KKysqIGxp YnRocmVhZF9kYi5zby4xIGZpbGU6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1 dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9CisrKiBvYmpmaWxlLWdkYi5nZGIgZmlsZTo6ICAgICAgICAg ICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdH0KKytAeHJlZntQ eXRob24gQXV0by1sb2FkaW5nfS4KKytAZW5kIG1lbnUKKysKKytAbm9kZSBJbml0IEZpbGUgaW4g dGhlIEN1cnJlbnQgRGlyZWN0b3J5CisrQHN1YnNlY3Rpb24gQXV0b21hdGljYWxseSBsb2FkaW5n IGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKKytAY2luZGV4IGF1dG8tbG9hZGlu ZyBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5CisrCisrQnkgZGVmYXVsdCwgQHZh bHVle0dEQk59IHJlYWRzIGFuZCBleGVjdXRlcyB0aGUgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21t YW5kcworK2Zyb20gaW5pdCBmaWxlIChpZiBhbnkpIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGly ZWN0b3J5LAorK3NlZSBAcmVme0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnkgZHVy aW5nIFN0YXJ0dXB9LgorKworK0B0YWJsZSBAY29kZQorK0BhbmNob3J7c2V0IGF1dG8tbG9hZCBs b2NhbC1nZGJpbml0fQorK0BraW5kZXggc2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0CisrQGl0 ZW0gc2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IFtvbnxvZmZdCisrRW5hYmxlIG9yIGRpc2Fi bGUgdGhlIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzCisrKEBw eHJlZntTZXF1ZW5jZXN9KSBmb3VuZCBpbiBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0 b3J5LgorKworK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0KKytAa2luZGV4 IHNob3cgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKKytAaXRlbSBzaG93IGF1dG8tbG9hZCBsb2Nh bC1nZGJpbml0CisrU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2Vz IG9mIGNvbW1hbmRzIGZyb20gaW5pdCBmaWxlIGluIHRoZQorK2N1cnJlbnQgZGlyZWN0b3J5IGlz IGVuYWJsZWQgb3IgZGlzYWJsZWQuCisrCisrQGFuY2hvcntpbmZvIGF1dG8tbG9hZCBsb2NhbC1n ZGJpbml0fQorK0BraW5kZXggaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAorK0BpdGVtIGlu Zm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKKytQcmludCB3aGV0aGVyIGNhbm5lZCBzZXF1ZW5j ZXMgb2YgY29tbWFuZHMgZnJvbSBpbml0IGZpbGUgaW4gdGhlCisrY3VycmVudCBkaXJlY3Rvcnkg aGF2ZSBiZWVuIGF1dG8tbG9hZGVkLgorK0BlbmQgdGFibGUKKysKKytAbm9kZSBsaWJ0aHJlYWRf ZGIuc28uMSBmaWxlCisrQHN1YnNlY3Rpb24gQXV0b21hdGljYWxseSBsb2FkaW5nIHRocmVhZCBk ZWJ1Z2dpbmcgbGlicmFyeQorK0BjaW5kZXggYXV0by1sb2FkaW5nIGxpYnRocmVhZF9kYi5zby4x CisrCisrVGhpcyBmZWF0dXJlIGlzIGN1cnJlbnRseSBwcmVzZW50IG9ubHkgb24gQHNje2dudX0v TGludXggbmF0aXZlIGhvc3RzLgorKworK0B2YWx1ZXtHREJOfSByZWFkcyBpbiBzb21lIGNhc2Vz IHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeSBmcm9tIHBsYWNlcyBzcGVjaWZpYworK3RvIHRoZSBp bmZlcmlvciAoQHB4cmVme3NldCBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9KS4KKysKKytUaGUg c3BlY2lhbCBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9IGVudHJ5IEBzYW1weyRzZGly fSBpcyBwcm9jZXNzZWQKKyt3aXRob3V0IGNoZWNraW5nIHRoaXMgQHNhbXB7c2V0IGF1dG8tbG9h ZCBsaWJ0aHJlYWQtZGJ9IHN3aXRjaCBhcyBzeXN0ZW0KKytsaWJyYXJpZXMgaGF2ZSB0byBiZSB0 cnVzdGVkIGluIGdlbmVyYWwuICBJbiBhbGwgb3RoZXIgY2FzZXMgb2YKKytAc2FtcHtsaWJ0aHJl YWQtZGItc2VhcmNoLXBhdGh9IGVudHJpZXMgQHZhbHVle0dEQk59IGNoZWNrcyBmaXJzdCBpZiBA c2FtcHtzZXQKKythdXRvLWxvYWQgbGlidGhyZWFkLWRifSBpcyBlbmFibGVkIGJlZm9yZSB0cnlp bmcgdG8gb3BlbiBzdWNoIHRocmVhZCBkZWJ1Z2dpbmcKKytsaWJyYXJ5LgorKworK0B0YWJsZSBA Y29kZQorK0BhbmNob3J7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9CisrQGtpbmRleCBzZXQg YXV0by1sb2FkIGxpYnRocmVhZC1kYgorK0BpdGVtIHNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRi IFtvbnxvZmZdCisrRW5hYmxlIG9yIGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZyBvZiBpbmZlcmlv ciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCisrCisrQGFuY2hvcntzaG93IGF1 dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9CisrQGtpbmRleCBzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQt ZGIKKytAaXRlbSBzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIKKytTaG93IHdoZXRoZXIgYXV0 by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeSBp cworK2VuYWJsZWQgb3IgZGlzYWJsZWQuCisrCisrQGFuY2hvcntpbmZvIGF1dG8tbG9hZCBsaWJ0 aHJlYWQtZGJ9CisrQGtpbmRleCBpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIKKytAaXRlbSBp bmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIKKytQcmludCB0aGUgbGlzdCBvZiBhbGwgbG9hZGVk IGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyaWVzIGFuZAorK2ZvciBl YWNoIHN1Y2ggbGlicmFyeSBwcmludCBsaXN0IG9mIGluZmVyaW9yIEB2YXJ7cGlkfXMgdXNpbmcg aXQuCisrQGVuZCB0YWJsZQorKworK0Bub2RlIG9iamZpbGUtZ2RiLmdkYiBmaWxlCisrQHN1YnNl Y3Rpb24gVGhlIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLmdkYn0gZmlsZQorK0BjaW5kZXggYXV0 by1sb2FkaW5nIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLmdkYn0KKysKKytAdmFsdWV7R0RCTn0g dHJpZXMgdG8gbG9hZCBhbiBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5nZGJ9IGZpbGUgY29udGFp bmluZworK2Nhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgKEBweHJlZntTZXF1ZW5jZXN9KSwg YXMgbG9uZyBhcyBAc2FtcHtzZXQKKythdXRvLWxvYWQgZ2RiLXNjcmlwdHN9IGlzIHNldCB0byBA c2FtcHtvbn0uCisrCisrRm9yIG1vcmUgYmFja2dyb3VuZCByZWZlciB0byB0aGUgc2ltaWxhciBQ eXRob24gc2NyaXB0cyBhdXRvLWxvYWRpbmcKKytkZXNjcmlwdGlvbiAoQHB4cmVme29iamZpbGUt Z2RiLnB5IGZpbGV9KS4KKysKKytAdGFibGUgQGNvZGUKKytAYW5jaG9ye3NldCBhdXRvLWxvYWQg Z2RiLXNjcmlwdHN9CisrQGtpbmRleCBzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzCisrQGl0ZW0g c2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyBbb258b2ZmXQorK0VuYWJsZSBvciBkaXNhYmxlIHRo ZSBhdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzLgor KworK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9CisrQGtpbmRleCBzaG93IGF1 dG8tbG9hZCBnZGItc2NyaXB0cworK0BpdGVtIHNob3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzCisr U2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRz IHNjcmlwdHMgaXMgZW5hYmxlZCBvcgorK2Rpc2FibGVkLgorKworK0BhbmNob3J7aW5mbyBhdXRv LWxvYWQgZ2RiLXNjcmlwdHN9CisrQGtpbmRleCBpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cwor K0BjaW5kZXggcHJpbnQgbGlzdCBvZiBhdXRvLWxvYWRlZCBjYW5uZWQgc2VxdWVuY2VzIG9mIGNv bW1hbmRzIHNjcmlwdHMKKytAaXRlbSBpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyBbQHZhcnty ZWdleHB9XQorK1ByaW50IHRoZSBsaXN0IG9mIGFsbCBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1h bmRzIHNjcmlwdHMgdGhhdCBAdmFsdWV7R0RCTn0KKythdXRvLWxvYWRlZC4KKytAZW5kIHRhYmxl CisrCisrSWYgQHZhcntyZWdleHB9IGlzIHN1cHBsaWVkIG9ubHkgY2FubmVkIHNlcXVlbmNlcyBv ZiBjb21tYW5kcyBzY3JpcHRzIHdpdGgKKyttYXRjaGluZyBuYW1lcyBhcmUgcHJpbnRlZC4KKysK KyBAbm9kZSBNZXNzYWdlcy9XYXJuaW5ncworIEBzZWN0aW9uIE9wdGlvbmFsIFdhcm5pbmdzIGFu ZCBNZXNzYWdlcworIAorQEAgLTIxNjE2LDcgKzIxODQ5LDcgQEAgYXV0b21hdGljYWxseSBpbXBv cnRlZCB3aGVuIEB2YWx1ZXtHREJOfQorIEBtZW51CisgKiBQeXRob24gQ29tbWFuZHM6OiAgICAg ICAgICAgICBBY2Nlc3NpbmcgUHl0aG9uIGZyb20gQHZhbHVle0dEQk59LgorICogUHl0aG9uIEFQ STo6ICAgICAgICAgICAgICAgICAgQWNjZXNzaW5nIEB2YWx1ZXtHREJOfSBmcm9tIFB5dGhvbi4K Ky0qIEF1dG8tbG9hZGluZzo6ICAgICAgICAgICAgICAgIEF1dG9tYXRpY2FsbHkgbG9hZGluZyBQ eXRob24gY29kZS4KKysqIFB5dGhvbiBBdXRvLWxvYWRpbmc6OiAgICAgICAgIEF1dG9tYXRpY2Fs bHkgbG9hZGluZyBQeXRob24gY29kZS4KKyAqIFB5dGhvbiBtb2R1bGVzOjogICAgICAgICAgICAg IFB5dGhvbiBtb2R1bGVzIHByb3ZpZGVkIGJ5IEB2YWx1ZXtHREJOfS4KKyBAZW5kIG1lbnUKKyAK K0BAIC0yMjc5OSw3ICsyMzAzMiw3IEBAIFRoaXMgcHJhY3RpY2Ugd2lsbCBlbmFibGUgQHZhbHVl e0dEQk59IHQKKyB5b3VyIHByZXR0eS1wcmludGVycyBhdCB0aGUgc2FtZSB0aW1lLCBiZWNhdXNl IHRoZXkgd2lsbCBoYXZlCisgZGlmZmVyZW50IG5hbWVzLgorIAorLVlvdSBzaG91bGQgd3JpdGUg YXV0by1sb2FkZWQgY29kZSAoQHB4cmVme0F1dG8tbG9hZGluZ30pIHN1Y2ggdGhhdCBpdAorK1lv dSBzaG91bGQgd3JpdGUgYXV0by1sb2FkZWQgY29kZSAoQHB4cmVme1B5dGhvbiBBdXRvLWxvYWRp bmd9KSBzdWNoIHRoYXQgaXQKKyBjYW4gYmUgZXZhbHVhdGVkIG11bHRpcGxlIHRpbWVzIHdpdGhv dXQgY2hhbmdpbmcgaXRzIG1lYW5pbmcuICBBbgorIGlkZWFsIGF1dG8tbG9hZCBmaWxlIHdpbGwg Y29uc2lzdCBzb2xlbHkgb2YgQGNvZGV7aW1wb3J0fXMgb2YgeW91cgorIHByaW50ZXIgbW9kdWxl cywgZm9sbG93ZWQgYnkgYSBjYWxsIHRvIGEgcmVnaXN0ZXIgcHJldHR5LXByaW50ZXJzIHdpdGgK K0BAIC0yMzc2MCw3ICsyMzk5Myw3IEBAIFRoZSBmb2xsb3dpbmcgb2JqZmlsZS1yZWxhdGVkIGZ1 bmN0aW9ucworIAorIEBmaW5kZXggZ2RiLmN1cnJlbnRfb2JqZmlsZQorIEBkZWZ1biBnZGIuY3Vy cmVudF9vYmpmaWxlICgpCistV2hlbiBhdXRvLWxvYWRpbmcgYSBQeXRob24gc2NyaXB0IChAcHhy ZWZ7QXV0by1sb2FkaW5nfSksIEB2YWx1ZXtHREJOfQorK1doZW4gYXV0by1sb2FkaW5nIGEgUHl0 aG9uIHNjcmlwdCAoQHB4cmVme1B5dGhvbiBBdXRvLWxvYWRpbmd9KSwgQHZhbHVle0dEQk59Cisg c2V0cyB0aGUgYGBjdXJyZW50IG9iamZpbGUnJyB0byB0aGUgY29ycmVzcG9uZGluZyBvYmpmaWxl LiAgVGhpcworIGZ1bmN0aW9uIHJldHVybnMgdGhlIGN1cnJlbnQgb2JqZmlsZS4gIElmIHRoZXJl IGlzIG5vIGN1cnJlbnQgb2JqZmlsZSwKKyB0aGlzIGZ1bmN0aW9uIHJldHVybnMgQGNvZGV7Tm9u ZX0uCitAQCAtMjQ2NzEsOSArMjQ5MDQsOSBAQCByZXNvbHZlIHRoaXMgdG8gdGhlIGxhenkgc3Ry aW5nJ3MgY2hhcmFjCisgd3JpdGFibGUuCisgQGVuZCBkZWZ2YXIKKyAKKy1Abm9kZSBBdXRvLWxv YWRpbmcKKy1Ac3Vic2VjdGlvbiBBdXRvLWxvYWRpbmcKKy1AY2luZGV4IGF1dG8tbG9hZGluZywg UHl0aG9uCisrQG5vZGUgUHl0aG9uIEF1dG8tbG9hZGluZworK0BzdWJzZWN0aW9uIFB5dGhvbiBB dXRvLWxvYWRpbmcKKytAY2luZGV4IFB5dGhvbiBhdXRvLWxvYWRpbmcKKyAKKyBXaGVuIGEgbmV3 IG9iamVjdCBmaWxlIGlzIHJlYWQgKGZvciBleGFtcGxlLCBkdWUgdG8gdGhlIEBjb2Rle2ZpbGV9 CisgY29tbWFuZCwgb3IgYmVjYXVzZSB0aGUgaW5mZXJpb3IgaGFzIGxvYWRlZCBhIHNoYXJlZCBs aWJyYXJ5KSwKK0BAIC0yNDY5MywzMiArMjQ5MjYsMzUgQEAgQXV0by1sb2FkaW5nIGNhbiBiZSBl bmFibGVkIG9yIGRpc2FibGVkLAorIGFuZCB0aGUgbGlzdCBvZiBhdXRvLWxvYWRlZCBzY3JpcHRz IGNhbiBiZSBwcmludGVkLgorIAorIEB0YWJsZSBAY29kZQorLUBraW5kZXggc2V0IGF1dG8tbG9h ZC1zY3JpcHRzCistQGl0ZW0gc2V0IGF1dG8tbG9hZC1zY3JpcHRzIFt5ZXN8bm9dCisrQGFuY2hv cntzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfQorK0BraW5kZXggc2V0IGF1dG8tbG9hZCBw eXRob24tc2NyaXB0cworK0BpdGVtIHNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgW29ufG9m Zl0KKyBFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRz LgorIAorLUBraW5kZXggc2hvdyBhdXRvLWxvYWQtc2NyaXB0cworLUBpdGVtIHNob3cgYXV0by1s b2FkLXNjcmlwdHMKKytAYW5jaG9ye3Nob3cgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfQorK0Br aW5kZXggc2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMKKytAaXRlbSBzaG93IGF1dG8tbG9h ZCBweXRob24tc2NyaXB0cworIFNob3cgd2hldGhlciBhdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNj cmlwdHMgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KKyAKKy1Aa2luZGV4IGluZm8gYXV0by1sb2Fk LXNjcmlwdHMKKy1AY2luZGV4IHByaW50IGxpc3Qgb2YgYXV0by1sb2FkZWQgc2NyaXB0cworLUBp dGVtIGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW0B2YXJ7cmVnZXhwfV0KKy1QcmludCB0aGUgbGlz dCBvZiBhbGwgc2NyaXB0cyB0aGF0IEB2YWx1ZXtHREJOfSBhdXRvLWxvYWRlZC4KKytAYW5jaG9y e2luZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfQorK0BraW5kZXggaW5mbyBhdXRvLWxvYWQg cHl0aG9uLXNjcmlwdHMKKytAY2luZGV4IHByaW50IGxpc3Qgb2YgYXV0by1sb2FkZWQgUHl0aG9u IHNjcmlwdHMKKytAaXRlbSBpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBbQHZhcntyZWdl eHB9XQorK1ByaW50IHRoZSBsaXN0IG9mIGFsbCBQeXRob24gc2NyaXB0cyB0aGF0IEB2YWx1ZXtH REJOfSBhdXRvLWxvYWRlZC4KKyAKKy1BbHNvIHByaW50ZWQgaXMgdGhlIGxpc3Qgb2Ygc2NyaXB0 cyB0aGF0IHdlcmUgbWVudGlvbmVkIGluCisrQWxzbyBwcmludGVkIGlzIHRoZSBsaXN0IG9mIFB5 dGhvbiBzY3JpcHRzIHRoYXQgd2VyZSBtZW50aW9uZWQgaW4KKyB0aGUgQGNvZGV7LmRlYnVnX2dk Yl9zY3JpcHRzfSBzZWN0aW9uIGFuZCB3ZXJlIG5vdCBmb3VuZAorIChAcHhyZWZ7ZG90ZGVidWdf Z2RiX3NjcmlwdHMgc2VjdGlvbn0pLgorIFRoaXMgaXMgdXNlZnVsIGJlY2F1c2UgdGhlaXIgbmFt ZXMgYXJlIG5vdCBwcmludGVkIHdoZW4gQHZhbHVle0dEQk59CisgdHJpZXMgdG8gbG9hZCB0aGVt IGFuZCBmYWlscy4gIFRoZXJlIG1heSBiZSBtYW55IG9mIHRoZW0sIGFuZCBwcmludGluZworIGFu IGVycm9yIG1lc3NhZ2UgZm9yIGVhY2ggb25lIGlzIHByb2JsZW1hdGljLgorIAorLUlmIEB2YXJ7 cmVnZXhwfSBpcyBzdXBwbGllZCBvbmx5IHNjcmlwdHMgd2l0aCBtYXRjaGluZyBuYW1lcyBhcmUg cHJpbnRlZC4KKytJZiBAdmFye3JlZ2V4cH0gaXMgc3VwcGxpZWQgb25seSBQeXRob24gc2NyaXB0 cyB3aXRoIG1hdGNoaW5nIG5hbWVzIGFyZSBwcmludGVkLgorIAorIEV4YW1wbGU6CisgCisgQHNt YWxsZXhhbXBsZQorLShnZGIpIGluZm8gYXV0by1sb2FkLXNjcmlwdHMKKysoZ2RiKSBpbmZvIGF1 dG8tbG9hZCBweXRob24tc2NyaXB0cworIExvYWRlZCAgU2NyaXB0CisgWWVzICAgICBweS1zZWN0 aW9uLXNjcmlwdC5weQorICAgICAgICAgZnVsbCBuYW1lOiAvdG1wL3B5LXNlY3Rpb24tc2NyaXB0 LnB5CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHkt YXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0NDoyNi45NTg0Mzc1MDAgKzAyMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0 Njo0Ny41NTgwNzk3NzQgKzAyMDAKK0BAIC0zMSwyOSArMzEsNTYgQEAKKyAKKyAjaW5jbHVkZSAi cHl0aG9uLWludGVybmFsLmgiCisgCistLyogTk9URTogSXQncyB0cml2aWFsIHRvIGFsc28gc3Vw cG9ydCBhdXRvLWxvYWRpbmcgbm9ybWFsIGdkYiBzY3JpcHRzLgorLSAgIFRoZXJlIGhhcyB5ZXQg dG8gYmUgYSBuZWVkIHNvIGl0J3Mgbm90IGltcGxlbWVudGVkLiAgKi8KKy0KKyAvKiBUaGUgc3Vm Zml4IG9mIHBlci1vYmpmaWxlIHNjcmlwdHMgdG8gYXV0by1sb2FkLgorICAgIEUuZy4gV2hlbiB0 aGUgcHJvZ3JhbSBsb2FkcyBsaWJmb28uc28sIGxvb2sgZm9yIGxpYmZvby1nZGIucHkuICAqLwor ICNkZWZpbmUgR0RCUFlfQVVUT19GSUxFX05BTUUgIi1nZGIucHkiCisgCistLyogVGhlIHNlY3Rp b24gdG8gbG9vayBmb3Igc2NyaXB0cyAoaW4gZmlsZSBmb3JtYXRzIHRoYXQgc3VwcG9ydCBzZWN0 aW9ucykuCisrLyogVGhlIHNlY3Rpb24gdG8gbG9vayBmb3IgUHl0aG9uIGF1dG8tbG9hZGVkIHNj cmlwdHMgKGluIGZpbGUgZm9ybWF0cyB0aGF0CisrICAgc3VwcG9ydCBzZWN0aW9ucykuCisgICAg RWFjaCBlbnRyeSBpbiB0aGlzIHNlY3Rpb24gaXMgYSBieXRlIG9mIHZhbHVlIDEsIGFuZCB0aGVu IHRoZSBudWwtdGVybWluYXRlZAorICAgIG5hbWUgb2YgdGhlIHNjcmlwdC4gIFRoZSBzY3JpcHQg bmFtZSBtYXkgaW5jbHVkZSBhIGRpcmVjdG9yeS4KKyAgICBUaGUgbGVhZGluZyBieXRlIGlzIHRv IGFsbG93IHVwd2FyZCBjb21wYXRpYmxlIGV4dGVuc2lvbnMuICAqLworICNkZWZpbmUgR0RCUFlf QVVUT19TRUNUSU9OX05BTUUgIi5kZWJ1Z19nZGJfc2NyaXB0cyIKKyAKKy0vKiBVc2VyLXNldHRh YmxlIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmc6CistICAgc2V0IGF1dG8t bG9hZC1zY3JpcHRzIG9ufG9mZgorLSAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1s b2FkIGFzc29jaWF0ZWQgc2NyaXB0cyB3aGVuIGFuIG9iamZpbGUKKy0gICBpcyBvcGVuZWQsIGZh bHNlIG90aGVyd2lzZS4KKy0gICBBdCB0aGUgbW9tZW50LCB0aGlzIG9ubHkgYWZmZWN0cyBweXRo b24gc2NyaXB0cywgYnV0IHRoZXJlJ3Mgbm8gcmVhc29uCistICAgb25lIGNvdWxkbid0IGFsc28g aGF2ZSBvdGhlciBraW5kcyBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzLCBhbmQgdGhlcmUncworLSAg IG5vIHJlYXNvbiB0byBoYXZlIHRoZW0gZWFjaCBjb250cm9sbGVkIGJ5IGEgc2VwYXJhdGUgZmxh Zy4KKy0gICBTbyB3ZSBlbGlkZSAicHl0aG9uIiBmcm9tIHRoZSBuYW1lIGhlcmUgYW5kIGluIHRo ZSBvcHRpb24uCistICAgVGhlIGZhY3QgdGhhdCBpdCBsaXZlcyBoZXJlIGlzIGp1c3QgYW4gaW1w bGVtZW50YXRpb24gZGV0YWlsLiAgKi8KKy1zdGF0aWMgaW50IGF1dG9fbG9hZF9zY3JpcHRzID0g MTsKKysvKiBVc2VyLXNldHRhYmxlIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRp bmcgb2YgUHl0aG9uIHNjcmlwdHM6CisrICAgc2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBv bnxvZmYKKysgICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBhc3NvY2lhdGVk IFB5dGhvbiBzY3JpcHRzIHdoZW4gYW4KKysgICBvYmpmaWxlIGlzIG9wZW5lZCwgZmFsc2Ugb3Ro ZXJ3aXNlLiAgKi8KKytzdGF0aWMgaW50IGF1dG9fbG9hZF9weXRob25fc2NyaXB0cyA9IDE7Cisr Cisrc3RhdGljIHZvaWQgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsCisrCQkJCQkJRklMRSAqZmlsZSwKKysJCQkJCQljb25zdCBjaGFy ICpmaWxlbmFtZSk7CisrCisrLyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfcHl0 aG9uX3NjcmlwdHMgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCisrCisrc3RhdGljIHZvaWQK KytzaG93X2F1dG9fbG9hZF9weXRob25fc2NyaXB0cyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGlu dCBmcm9tX3R0eSwKKysJCQkgICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0 IGNoYXIgKnZhbHVlKQorK3sKKysgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9h ZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyAlcy5cbiIpLCB2YWx1ZSk7CisrfQorKworKy8qIERl ZmluaXRpb24gb2Ygc2NyaXB0IGxhbmd1YWdlIGZvciBQeXRob24gc2NyaXB0cy4gICovCisrCisr c3RhdGljIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2Ugc2NyaXB0X2xhbmd1YWdlX3B5dGhv bgorKyAgPSB7IEdEQlBZX0FVVE9fRklMRV9OQU1FLCBnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zv cl9vYmpmaWxlIH07CisrCisrLyogV3JhcHBlciBvZiBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jf b2JqZmlsZSBmb3Igc2NyaXB0X2xhbmd1YWdlX3B5dGhvbi4gICovCisrCisrc3RhdGljIHZvaWQK KytnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgRklMRSAqZmlsZSwKKysJCQkJICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorK3sKKysg IHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworKworKyAgLyogQWRk IHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQgcHl0 aG9uLXNjcmlwdHMiCisrICAgICBjYW4gcHJpbnQgaXQuICAqLworKyAgcHNwYWNlX2luZm8gPSBn ZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3Bh Y2UpOworKyAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGVuYW1lLCBmaWxlbmFt ZSwgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOworKworKyAgc291cmNlX3B5dGhvbl9zY3JpcHRf Zm9yX29iamZpbGUgKG9iamZpbGUsIGZpbGUsIGZpbGVuYW1lKTsKKyt9CisgCisgLyogTG9hZCBz Y3JpcHRzIHNwZWNpZmllZCBpbiBPQkpGSUxFLgorICAgIFNUQVJULEVORCBkZWxpbWl0IGEgYnVm ZmVyIGNvbnRhaW5pbmcgYSBsaXN0IG9mIG51bC10ZXJtaW5hdGVkCitAQCAtMTIxLDYgKzE0OCwx NyBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsZSAqCisgCSAgbWFrZV9j bGVhbnVwX2ZjbG9zZSAoc3RyZWFtKTsKKyAJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3Bh dGgpOworIAl9CisrICAgICAgZWxzZQorKwl7CisrCSAgZnVsbF9wYXRoID0gTlVMTDsKKysKKysJ ICAvKiBXZSBkb24ndCB0aHJvdyBhbiBlcnJvciwgdGhlIHByb2dyYW0gaXMgc3RpbGwgZGVidWdn YWJsZS4gICovCisrCSAgaWYgKHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAocHNwYWNl X2luZm8pKQorKwkgICAgd2FybmluZyAoXygiTWlzc2luZyBhdXRvLWxvYWQgc2NyaXB0cyByZWZl cmVuY2VkIGluIHNlY3Rpb24gJXNcblwKKytvZiBmaWxlICVzXG5cCisrVXNlIGBpbmZvIGF1dG8t bG9hZCBweXRob24gW1JFR0VYUF0nIHRvIGxpc3QgdGhlbS4iKSwKKysJCSAgICAgR0RCUFlfQVVU T19TRUNUSU9OX05BTUUsIG9iamZpbGUtPm5hbWUpOworKwl9CisgCisgICAgICAgLyogSWYgb25l IHNjcmlwdCBpc24ndCBmb3VuZCBpdCdzIG5vdCB1bmNvbW1vbiBmb3IgbW9yZSB0byBub3QgYmUK KyAJIGZvdW5kIGVpdGhlci4gIFdlIGRvbid0IHdhbnQgdG8gcHJpbnQgYW4gZXJyb3IgbWVzc2Fn ZSBmb3IgZWFjaAorQEAgLTEyOSwyNCArMTY3LDEyIEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMg KHN0cnVjdCBvYmpmaWxlICoKKyAKKyAJIElXQk4gaWYgY29tcGxhaW50cy5jIHdlcmUgbW9yZSBn ZW5lcmFsLXB1cnBvc2UuICAqLworIAorLSAgICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRf c2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZSwKKy0JCQkJCW9wZW5lZCA/IGZ1bGxfcGF0aCA6IE5V TEwpOworKyAgICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5m bywgZmlsZSwgZnVsbF9wYXRoLAorKwkJCQkJJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOworIAor LSAgICAgIGlmICghIG9wZW5lZCkKKy0JeworLQkgIC8qIFdlIGRvbid0IHRocm93IGFuIGVycm9y LCB0aGUgcHJvZ3JhbSBpcyBzdGlsbCBkZWJ1Z2dhYmxlLiAgKi8KKy0JICBpZiAoc2NyaXB0X25v dF9mb3VuZF93YXJuaW5nX3ByaW50IChwc3BhY2VfaW5mbykpCistCSAgICB3YXJuaW5nIChfKCJN aXNzaW5nIGF1dG8tbG9hZCBzY3JpcHRzIHJlZmVyZW5jZWQgaW4gc2VjdGlvbiAlc1xuXAorLW9m IGZpbGUgJXNcblwKKy1Vc2UgYGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0nIHRvIGxp c3QgdGhlbS4iKSwKKy0JCSAgICAgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUsIG9iamZpbGUtPm5h bWUpOworLQl9CistICAgICAgZWxzZQorLQl7CistCSAgLyogSWYgdGhpcyBmaWxlIGlzIG5vdCBj dXJyZW50bHkgbG9hZGVkLCBsb2FkIGl0LiAgKi8KKy0JICBpZiAoISBpbl9oYXNoX3RhYmxlKQor LQkgICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIHN0cmVhbSwg ZnVsbF9wYXRoKTsKKy0JfQorKyAgICAgIC8qIElmIHRoaXMgZmlsZSBpcyBub3QgY3VycmVudGx5 IGxvYWRlZCwgbG9hZCBpdC4gICovCisrICAgICAgaWYgKG9wZW5lZCAmJiAhaW5faGFzaF90YWJs ZSkKKysJc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIHN0cmVhbSwg ZnVsbF9wYXRoKTsKKyAKKyAgICAgICBkb19jbGVhbnVwcyAoYmFja190byk7CisgICAgIH0KK0BA IC0xODEsMzYgKzIwNyw3NSBAQCBhdXRvX2xvYWRfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2Jq ZmlsCisgICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworIH0KKyAKKy0vKiBMb2FkIGFueSBhdXRv LWxvYWRlZCBzY3JpcHRzIGZvciBPQkpGSUxFLiAgKi8KKysvKiBMb2FkIGFueSBQeXRob24gYXV0 by1sb2FkZWQgc2NyaXB0cyBmb3IgT0JKRklMRS4gICovCisgCisgdm9pZAorLWxvYWRfYXV0b19z Y3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKytnZGJweV9sb2Fk X2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgewor LSAgaWYgKGF1dG9fbG9hZF9zY3JpcHRzICYmIGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQpCisrICBp ZiAoYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzKQorICAgICB7CistICAgICAgYXV0b19sb2FkX29i amZpbGVfc2NyaXB0IChvYmpmaWxlLCBHREJQWV9BVVRPX0ZJTEVfTkFNRSk7CisrICAgICAgYXV0 b19sb2FkX29iamZpbGVfc2NyaXB0IChvYmpmaWxlLCAmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7 CisgICAgICAgYXV0b19sb2FkX3NlY3Rpb25fc2NyaXB0cyAob2JqZmlsZSwgR0RCUFlfQVVUT19T RUNUSU9OX05BTUUpOworICAgICB9CisgfQorKworKy8qIFdyYXBwZXIgZm9yICJpbmZvIGF1dG8t bG9hZCBweXRob24tc2NyaXB0cyIuICAqLworKworK3N0YXRpYyB2b2lkCisraW5mb19hdXRvX2xv YWRfcHl0aG9uX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSkKKyt7CisrICBh dXRvX2xvYWRfaW5mb19zY3JpcHRzIChwYXR0ZXJuLCBmcm9tX3R0eSwgJnNjcmlwdF9sYW5ndWFn ZV9weXRob24pOworK30KKyAMCisgdm9pZAorIGdkYnB5X2luaXRpYWxpemVfYXV0b19sb2FkICh2 b2lkKQorIHsKKysgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjbWQ7CisrICBjaGFyICpjbWRf bmFtZTsKKysKKysgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgicHl0aG9uLXNjcmlwdHMiLCBj bGFzc19zdXBwb3J0LAorKwkJCSAgICZhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsIF8oIlwKKytT ZXQgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBQeXRob24g c2NyaXB0cy4iKSwgXygiXAorK1Nob3cgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGlu ZyBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cy4iKSwgXygiXAorK0lmIGVuYWJsZWQsIGF1dG8t bG9hZGVkIFB5dGhvbiBzY3JpcHRzIGFyZSBsb2FkZWQgd2hlbiB0aGUgZGVidWdnZXIgcmVhZHNc blwKKythbiBleGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LlxuXAorK1RoaXMgb3B0aW9ucyBo YXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAorKwkJ CSAgIE5VTEwsIHNob3dfYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLAorKwkJCSAgIGF1dG9fbG9h ZF9zZXRfY21kbGlzdF9nZXQgKCksCisrCQkJICAgYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQg KCkpOworKworICAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJhdXRvLWxvYWQtc2NyaXB0cyIs IGNsYXNzX3N1cHBvcnQsCistCQkJICAgJmF1dG9fbG9hZF9zY3JpcHRzLCBfKCJcCistU2V0IHRo ZSBkZWJ1Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgc2NyaXB0cy4iKSwg XygiXAorLVNob3cgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRl ZCBzY3JpcHRzLiIpLCBfKCJcCistSWYgZW5hYmxlZCwgYXV0by1sb2FkZWQgc2NyaXB0cyBhcmUg bG9hZGVkIHdoZW4gdGhlIGRlYnVnZ2VyIHJlYWRzXG5cCistYW4gZXhlY3V0YWJsZSBvciBzaGFy ZWQgbGlicmFyeS4iKSwKKy0JCQkgICBOVUxMLCBOVUxMLAorLQkJCSAgICZzZXRsaXN0LAorLQkJ CSAgICZzaG93bGlzdCk7CisrCQkJICAgJmF1dG9fbG9hZF9weXRob25fc2NyaXB0cywgXygiXAor K1NldCB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhv biBzY3JpcHRzLCAiCisrCQkJCQkJCQkgImRlcHJlY2F0ZWQuIiksCisrCQkJICAgXygiXAorK1No b3cgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBQeXRob24g c2NyaXB0cywgIgorKwkJCQkJCQkJICJkZXByZWNhdGVkLiIpLAorKwkJCSAgIE5VTEwsIE5VTEws IHNob3dfYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLAorKwkJCSAgICZzZXRsaXN0LCAmc2hvd2xp c3QpOworKyAgY21kX25hbWUgPSAiYXV0by1sb2FkLXNjcmlwdHMiOworKyAgY21kID0gbG9va3Vw X2NtZCAoJmNtZF9uYW1lLCBzZXRsaXN0LCAiIiwgLTEsIDEpOworKyAgZGVwcmVjYXRlX2NtZCAo Y21kLCAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIpOworKworKyAgLyogSXQgaXMgbmVl ZGVkIGJlY2F1c2UgbG9va3VwX2NtZCB1cGRhdGVzIHRoZSBDTURfTkFNRSBwb2ludGVyLiAgKi8K KysgIGNtZF9uYW1lID0gImF1dG8tbG9hZC1zY3JpcHRzIjsKKysgIGNtZCA9IGxvb2t1cF9jbWQg KCZjbWRfbmFtZSwgc2hvd2xpc3QsICIiLCAtMSwgMSk7CisrICBkZXByZWNhdGVfY21kIChjbWQs ICJzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIpOworKworKyAgYWRkX2NtZCAoInB5dGhv bi1zY3JpcHRzIiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsCisr CSAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIFB5dGhvbiBzY3Jp cHRzLlxuXAorK1VzYWdlOiBpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBbUkVHRVhQXSIp LAorKwkgICBhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7CisrCisrICBjbWQgPSBhZGRf aW5mbyAoImF1dG8tbG9hZC1zY3JpcHRzIiwgaW5mb19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMs IF8oIlwKKytQcmludCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBQeXRob24gc2Ny aXB0cywgZGVwcmVjYXRlZC4iKSk7CisrICBkZXByZWNhdGVfY21kIChjbWQsICJpbmZvIGF1dG8t bG9hZCBweXRob24tc2NyaXB0cyIpOworIH0KKyAKKyAjZWxzZSAvKiAhIEhBVkVfUFlUSE9OICov CisgCisgdm9pZAorLWxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSkKKytnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUpCisgeworIH0KKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9weXRob24vcHl0aG9uLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIw Lm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1ODQzNzUwMCAr MDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0 LTE4IDAwOjQ0OjI2Ljk3OTQzNzQ0NiArMDIwMAorQEAgLTQxLDcgKzQxLDcgQEAgaW50IGFwcGx5 X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cAorIAorIHZvaWQgcHJlc2VydmVfcHl0aG9u X3ZhbHVlcyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGh0YWJfdCBjb3BpZWRfdHlwZXMpOwor IAorLXZvaWQgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlKTsKKyt2b2lkIGdkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisgCisgaW50IGdkYnB5X3Nob3VsZF9zdG9wIChzdHJ1Y3Qg YnJlYWtwb2ludF9vYmplY3QgKmJwX29iaik7CisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhwCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcu NC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAJMjAxMi0w MS0wNCAwOToxNzo0NS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAJMjAxMi0wNC0xOCAwMDo0NDoyNi45ODA0Mzc0 NDQgKzAyMDAKK0BAIC0yNCw3ICsyNCw3IEBACisgZ2RiX3N0YXJ0CisgCisgIyBmb3JjZSB0aGUg aGVpZ2h0IG9mIHRoZSBkZWJ1Z2dlciB0byBiZSBwcmV0dHkgbGFyZ2Ugc28gbm8gcGFnZXJzIGdl dCB1c2VkCistZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgaGVpZ2h0IDQwMCIgInRlc3Qgc2V0IGhl aWdodCIKKytnZGJfdGVzdF9ub19vdXRwdXQgInNldCBoZWlnaHQgNTAwIiAidGVzdCBzZXQgaGVp Z2h0IgorIAorICMgdXNlIGEgbGFyZ2VyIGV4cGVjdCBpbnB1dCBidWZmZXIgZm9yIGxvbmcgaGVs cCBvdXRwdXRzLgorICMgdGVzdCBoZWxwIGFkZC1zeW1ib2wtZmlsZQorSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9iamZpbGUtc2NyaXB0LmV4 cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCTIwMTItMDEtMTYgMTc6MjE6NTIuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDY6NDcuNTU4MDc5Nzc0 ICswMjAwCitAQCAtNDAsNyArNDAsNyBAQCBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRz dWJkaXIKKyBnZGJfbG9hZCAke2JpbmZpbGV9CisgCisgIyBWZXJpZnkgZ2RiIGxvYWRlZCB0aGUg c2NyaXB0LgorLWdkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiAiWWVzLiovJHt0ZXN0 ZmlsZX0tZ2RiLnB5LioiCisrZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRz IiAiWWVzLiovJHt0ZXN0ZmlsZX0tZ2RiLnB5LioiCisgCisgaWYgIVtydW50b19tYWluXSB7Cisg ICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIG1haW4iCitJbmRleDogZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2VjdGlvbi1zY3JpcHQuZXhwCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5leHAJMjAxMi0wMS0xNiAxNzoyMTo1Mi4wMDAwMDAwMDAg KzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1zZWN0aW9uLXNjcmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTgwNzk3NzQgKzAyMDAK K0BAIC01MiwxMSArNTIsMTEgQEAgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGly CisgZ2RiX2xvYWQgJHtiaW5maWxlfQorIAorICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlw dC4KKy1nZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIgIlllcy4qJHt0ZXN0ZmlsZX0u cHkuKmZ1bGwgbmFtZTogLiovJHt0ZXN0ZmlsZX0ucHkuKiIKKytnZGJfdGVzdCAiaW5mbyBhdXRv LWxvYWQgcHl0aG9uLXNjcmlwdHMiICJZZXMuKiR7dGVzdGZpbGV9LnB5LipmdWxsIG5hbWU6IC4q LyR7dGVzdGZpbGV9LnB5LioiCisgIyBBZ2Fpbiwgd2l0aCBhIHJlZ2V4cCB0aGlzIHRpbWUuCist Z2RiX3Rlc3QgImluZm8gYXV0by1sb2FkLXNjcmlwdHMgJHt0ZXN0ZmlsZX0iICJZZXMuKiR7dGVz dGZpbGV9LnB5LipmdWxsIG5hbWU6IC4qLyR7dGVzdGZpbGV9LnB5LioiCisrZ2RiX3Rlc3QgImlu Zm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzICR7dGVzdGZpbGV9IiAiWWVzLioke3Rlc3RmaWxl fS5weS4qZnVsbCBuYW1lOiAuKi8ke3Rlc3RmaWxlfS5weS4qIgorICMgQWdhaW4sIHdpdGggYSBy ZWdleHAgdGhhdCBtYXRjaGVzIG5vIHNjcmlwdHMuCistZ2RiX3Rlc3QgImluZm8gYXV0by1sb2Fk LXNjcmlwdHMgbm8tc2NyaXB0LW1hdGNoZXMtdGhpcyIgXAorK2dkYl90ZXN0ICJpbmZvIGF1dG8t bG9hZCBweXRob24tc2NyaXB0cyBuby1zY3JpcHQtbWF0Y2hlcy10aGlzIiBcCisgICAiTm8gYXV0 by1sb2FkIHNjcmlwdHMgbWF0Y2hpbmcgbm8tc2NyaXB0LW1hdGNoZXMtdGhpcy4iCisgCisgaWYg IVtydW50b19tYWluXSB7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTExb2YxMi5wYXRjaCBi L2dkYi1hdXRvbG9hZC0xMW9mMTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDRhYzY4YjAuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTExb2YxMi5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDc0NCArMCwwIEBACi1bcGF0Y2gjNCA1LzhdIHNldCBhdXRvLWxvYWQgc2Fm ZS1wYXRoCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cw MDA5Mi5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAw MTE0Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NTE6NDEJMS4x NDExMwotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NTQ6MjgJMS4xNDExNAot IyMgLTEsNSArMSwzOSBAQAotIDIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KLSAKLSsJTmV3IG9wdGlvbiAic2V0IGF1dG8tbG9hZCBzYWZlLXBh dGgiLgotKwkqIE5FV1M6IE5ldyBjb21tYW5kcyAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiCi0r CWFuZCAic2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoIi4KLSsJKiBhdXRvLWxvYWQuYzogSW5jbHVk ZSBnZGJfdmVjcy5oLCByZWFkbGluZS90aWxkZS5oIGFuZCBjb21wbGV0ZXIuaC4KLSsJKGF1dG9f bG9hZF9zYWZlX3BhdGgsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjKQotKwkoYXV0b19sb2FkX3Nh ZmVfcGF0aF92ZWNfdXBkYXRlLCBzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCkKLSsJKHNob3dfYXV0 b19sb2FkX3NhZmVfcGF0aCwgYWRkX2F1dG9fbG9hZF9zYWZlX3BhdGgsIGZpbGVuYW1lX2lzX2lu X2RpcikKLSsJKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBmaWxlX2lz X2F1dG9fbG9hZF9zYWZlKTogTmV3LgotKwkoc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUp OiBOZXcgdmFyaWFibGUgaXNfc2FmZS4gIENhbGwKLSsJZmlsZV9pc19hdXRvX2xvYWRfc2FmZS4g IFJldHVybiBpZiBpdCBpcyBub3QuCi0rCShzdHJ1Y3QgbG9hZGVkX3NjcmlwdCk6IE5ldyBmaWVs ZCBsb2FkZWQuCi0rCShtYXliZV9hZGRfc2NyaXB0KTogQWRkIHBhcmFtZXRlciBsb2FkZWQuICBJ bml0aWFsaXplIFNMT1Qgd2l0aCBpdC4KLSsJKHByaW50X3NjcmlwdCk6IFVzZSBMT0FERUQgaW5k aWNhdG9yIGluc3RlYWQgb2YgRlVMTF9QQVRILiAgQ2hhbmdlCi0rCW91dHB1dCAiTWlzc2luZyIg dG8gIk5vIi4KLSsJKF9pbml0aWFsaXplX2F1dG9fbG9hZCk6IE5ldyB2YXJpYWJsZSBjbWQuICBJ bml0aWFsaXplCi0rCWF1dG9fbG9hZF9zYWZlX3BhdGguICBSZWdpc3RlciAic2V0IGF1dG8tbG9h ZCBzYWZlLXBhdGgiLAotKwkic2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoIiBhbmQgImFkZC1hdXRv LWxvYWQtc2FmZS1wYXRoIi4KLSsJKiBhdXRvLWxvYWQuaCAobWF5YmVfYWRkX3NjcmlwdCk6IEFk ZCBwYXJhbWV0ZXIgbG9hZGVkLgotKwkoZmlsZV9pc19hdXRvX2xvYWRfc2FmZSk6IE5ldyBkZWNs YXJhdGlvbi4KLSsJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCi0rCSogY29uZmlndXJlOiBSZWdl bmVyYXRlLgotKwkqIGNvbmZpZ3VyZS5hYzogTmV3IHBhcmFtZXRlcnMgLS13aXRoLWF1dG8tbG9h ZC1zYWZlLXBhdGgKLSsJYW5kIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoLgotKwkqIGxp bnV4LXRocmVhZC1kYi5jICh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyXzEpCi0rCSh0cnlf dGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIpOiBDaGVjayBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIGZp cnN0LgotKwkqIG1haW4uYyAoY2FwdHVyZWRfbWFpbik6IENoZWNrIGZpbGVfaXNfYXV0b19sb2Fk X3NhZmUgZm9yCi0rCUxPQ0FMX0dEQklOSVQuCi0rCSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jIChn ZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3Ci0rCXZhcmlhYmxlIGlzX3Nh ZmUuICBDYWxsIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUuICBSZXR1cm4gaWYgaXQgaXMgbm90Lgot Kwkoc291cmNlX3NlY3Rpb25fc2NyaXB0cyk6IENhbGwgZmlsZV9pc19hdXRvX2xvYWRfc2FmZS4g IFJldHVybiBpZiBpdCBpcwotKwlub3QuCi0rCi0rMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotIAlhdXRvLWxvYWQ6IEltcGxlbWVudGF0 aW9uLgotIAkqIE5FV1M6IE5ldyBkZXNjcmlwdGlvbnMgZm9yICJpbmZvIGF1dG8tbG9hZCIsCi0g CSJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIsICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2Ny aXB0cyIsCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQ5OjAy LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MJMjAxMi0w NC0xOCAwMDo0OTozMy4yODI3MDYzMTkgKzAyMDAKLUBAIC02Nyw2ICs2NywxMSBAQCBzZXQgYXV0 by1sb2FkIGxpYnRocmVhZC1kYiBvbnxvZmYKLSBzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIK LSAgIENvbnRyb2wgYXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1 Z2dpbmcgc2hhcmVkIGxpYnJhcnkuCi0gCi0rc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggPGRpcjE+ Wzo8ZGlyMj4uLi5dCi0rc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoCi0rICBTZXQgYSBsaXN0IG9m IGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMuCi0r ICBUaGUgZGVsaW1pdGVyICgnOicgYWJvdmUpIG1heSBkaWZmZXIgYWNjb3JkaW5nIHRvIHRoZSBo b3N0IHBsYXRmb3JtLgotKwotICogTmV3IGNvbW1hbmQgbGluZSBvcHRpb25zCi0gCi0gLS1pbml0 LWNvbW1hbmQ9RklMRSwgLWl4ICAgICAgICAgIExpa2UgLS1jb21tYW5kLCAteCBidXQgZXhlY3V0 ZSBpdAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0 LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2F1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDk6MjEuNjA3NzM2MDIwICswMjAwCi1AQCAtMzIs NiArMzIsOSBAQAotICNpbmNsdWRlICJnZGJjbWQuaCIKLSAjaW5jbHVkZSAiY2xpL2NsaS1kZWNv ZGUuaCIKLSAjaW5jbHVkZSAiY2xpL2NsaS1zZXRzaG93LmgiCi0rI2luY2x1ZGUgImdkYl92ZWNz LmgiCi0rI2luY2x1ZGUgInJlYWRsaW5lL3RpbGRlLmgiCi0rI2luY2x1ZGUgImNvbXBsZXRlci5o IgotIAotIC8qIFRoZSBzdWZmaXggb2YgcGVyLW9iamZpbGUgc2NyaXB0cyB0byBhdXRvLWxvYWQg YXMgbm9uLVB5dGhvbiBjb21tYW5kIGZpbGVzLgotICAgIEUuZy4gV2hlbiB0aGUgcHJvZ3JhbSBs b2FkcyBsaWJmb28uc28sIGxvb2sgZm9yIGxpYmZvby1nZGIuZ2RiLiAgKi8KLUBAIC05MCw2ICs5 MywxODEgQEAgc2hvd19hdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCAoc3RydWN0IHVpXwotIAkJICAg IHZhbHVlKTsKLSB9Ci0gCi0rLyogRGlyZWN0b3J5IGxpc3Qgc2FmZSB0byBob2xkIGF1dG8tbG9h ZGVkIGZpbGVzLiAgSXQgaXMgbm90IGNoZWNrZWQgZm9yCi0rICAgYWJzb2x1dGUgcGF0aHMgYnV0 IHRoZXkgYXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVkLiAgSXQgaXMgaW5pdGlhbGl6ZWQgYnkKLSsg ICBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQuICAqLwotK3N0YXRpYyBjaGFyICphdXRvX2xvYWRfc2Fm ZV9wYXRoOwotKwotKy8qIFZlY3RvciBvZiBkaXJlY3RvcnkgZWxlbWVudHMgb2YgQVVUT19MT0FE X1NBRkVfUEFUSCB3aXRoIGVhY2ggb25lIG5vcm1hbGl6ZWQKLSsgICBieSB0aWxkZV9leHBhbmQg YW5kIHBvc3NpYmx5IGVhY2ggZW50cmllcyBoYXMgYWRkZWQgaXRzIGdkYl9yZWFscGF0aAotKyAg IGNvdW50ZXJwYXJ0LiAgKi8KLStzdGF0aWMgVkVDIChjaGFyX3B0cikgKmF1dG9fbG9hZF9zYWZl X3BhdGhfdmVjOwotKwotKy8qIFVwZGF0ZSBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyBmcm9tIGN1 cnJlbnQgQVVUT19MT0FEX1NBRkVfUEFUSC4gICovCi0rCi0rc3RhdGljIHZvaWQKLSthdXRvX2xv YWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCi0rewotKyAgVkVDIChjaGFyX3B0cikgKmRp cl92ZWMgPSBOVUxMOwotKyAgdW5zaWduZWQgbGVuOwotKyAgaW50IGl4OwotKwotKyAgZnJlZV9j aGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjKTsKLSsKLSsgIGF1dG9fbG9hZF9z YWZlX3BhdGhfdmVjID0gZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChhdXRvX2xvYWRfc2FmZV9w YXRoKTsKLSsgIGxlbiA9IFZFQ19sZW5ndGggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRo X3ZlYyk7Ci0rCi0rICAvKiBBcHBseSB0aWxkZV9leHBhbmQgYW5kIGdkYl9yZWFscGF0aCB0byBl YWNoIEFVVE9fTE9BRF9TQUZFX1BBVEhfVkVDCi0rICAgICBlbGVtZW50LiAgKi8KLSsgIGZvciAo aXggPSAwOyBpeCA8IGxlbjsgaXgrKykKLSsgICAgewotKyAgICAgIGNoYXIgKmRpciA9IFZFQ19p bmRleCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCk7Ci0rICAgICAgY2hh ciAqZXhwYW5kZWQgPSB0aWxkZV9leHBhbmQgKGRpcik7Ci0rICAgICAgY2hhciAqcmVhbF9wYXRo ID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7Ci0rCi0rICAgICAgLyogRW5zdXJlIHRoZSBjdXJy ZW50IGVudHJ5IGlzIGF0IGxlYXN0IHRpbGRlX2V4cGFuZC1lZC4gICovCi0rICAgICAgeGZyZWUg KGRpcik7Ci0rICAgICAgVkVDX3JlcGxhY2UgKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRo X3ZlYywgaXgsIGV4cGFuZGVkKTsKLSsKLSsgICAgICAvKiBJZiBnZGJfcmVhbHBhdGggcmV0dXJu cyBhIGRpZmZlcmVudCBjb250ZW50LCBhcHBlbmQgaXQuICAqLwotKyAgICAgIGlmIChzdHJjbXAg KHJlYWxfcGF0aCwgZXhwYW5kZWQpID09IDApCi0rCXhmcmVlIChyZWFsX3BhdGgpOwotKyAgICAg IGVsc2UKLSsJVkVDX3NhZmVfcHVzaCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVj LCByZWFsX3BhdGgpOwotKyAgICB9Ci0rfQotKwotKy8qICJzZXQiIGNvbW1hbmQgZm9yIHRoZSBh dXRvX2xvYWRfc2FmZV9wYXRoIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLwotKwotK3N0YXRp YyB2b2lkCi0rc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGggKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0 eSwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCi0rewotKyAgYXV0b19sb2FkX3NhZmVfcGF0 aF92ZWNfdXBkYXRlICgpOwotK30KLSsKLSsvKiAic2hvdyIgY29tbWFuZCBmb3IgdGhlIGF1dG9f bG9hZF9zYWZlX3BhdGggY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCi0rCi0rc3RhdGljIHZv aWQKLStzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGggKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQg ZnJvbV90dHksCi0rCQkJICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAq dmFsdWUpCi0rewotKyAgaWYgKCp2YWx1ZSA9PSAwKQotKyAgICBmcHJpbnRmX2ZpbHRlcmVkIChm aWxlLCBfKCJBdXRvLWxvYWQgZmlsZXMgYXJlIHNhZmUgdG8gbG9hZCBmcm9tIGFueSAiCi0rCQkJ ICAgICAgImRpcmVjdG9yeS5cbiIpKTsKLSsgIGVsc2UKLSsgICAgZnByaW50Zl9maWx0ZXJlZCAo ZmlsZSwgXygiTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gIgot KwkJCSAgICAgICJhdXRvLWxvYWQgZmlsZXMgaXMgJXMuXG4iKSwKLSsJCSAgICAgIHZhbHVlKTsK LSt9Ci0rCi0rLyogImFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIiBjb21tYW5kIGZvciB0aGUgYXV0 b19sb2FkX3NhZmVfcGF0aCBjb25maWd1cmF0aW9uCi0rICAgdmFyaWFibGUuICAqLwotKwotK3N0 YXRpYyB2b2lkCi0rYWRkX2F1dG9fbG9hZF9zYWZlX3BhdGggKGNoYXIgKmFyZ3MsIGludCBmcm9t X3R0eSkKLSt7Ci0rICBjaGFyICpzOwotKwotKyAgaWYgKGFyZ3MgPT0gTlVMTCB8fCAqYXJncyA9 PSAwKQotKyAgICBlcnJvciAoXygiXAotK0FkZGluZyBlbXB0eSBkaXJlY3RvcnkgZWxlbWVudCBk aXNhYmxlcyB0aGUgYXV0by1sb2FkIHNhZmUtcGF0aCBzZWN1cml0eS4gIFwKLStVc2UgJ3NldCBh dXRvLWxvYWQgc2FmZS1wYXRoJyBpbnN0ZWFkIGlmIHlvdSBtZWFuIHRoYXQuIikpOwotKwotKyAg cyA9IHhzdHJwcmludGYgKCIlcyVjJXMiLCBhdXRvX2xvYWRfc2FmZV9wYXRoLCBESVJOQU1FX1NF UEFSQVRPUiwgYXJncyk7Ci0rICB4ZnJlZSAoYXV0b19sb2FkX3NhZmVfcGF0aCk7Ci0rICBhdXRv X2xvYWRfc2FmZV9wYXRoID0gczsKLSsKLSsgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0 ZSAoKTsKLSt9Ci0rCi0rLyogUmV0dXJuIDEgaWYgRklMRU5BTUUgaXMgZXF1YWwgdG8gRElSIG9y IGlmIEZJTEVOQU1FIGJlbG9uZ3MgdG8gdGhlCi0rICAgc3ViZGlyZWN0b3J5IERJUi4gIFJldHVy biAwIG90aGVyd2lzZS4gIGdkYl9yZWFscGF0aCBub3JtYWxpemF0aW9uIGlzIG5ldmVyCi0rICAg ZG9uZSBoZXJlLiAgKi8KLSsKLStzdGF0aWMgQVRUUklCVVRFX1BVUkUgaW50Ci0rZmlsZW5hbWVf aXNfaW5fZGlyIChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqZGlyKQotK3sKLSsg IHNpemVfdCBkaXJfbGVuID0gc3RybGVuIChkaXIpOwotKwotKyAgd2hpbGUgKGRpcl9sZW4gJiYg SVNfRElSX1NFUEFSQVRPUiAoZGlyW2Rpcl9sZW4gLSAxXSkpCi0rICAgIGRpcl9sZW4tLTsKLSsK LSsgIHJldHVybiAoZmlsZW5hbWVfbmNtcCAoZGlyLCBmaWxlbmFtZSwgZGlyX2xlbikgPT0gMAot KwkgICYmIChJU19ESVJfU0VQQVJBVE9SIChmaWxlbmFtZVtkaXJfbGVuXSkKLSsJICAgICAgfHwg ZmlsZW5hbWVbZGlyX2xlbl0gPT0gJ1wwJykpOwotK30KLSsKLSsvKiBSZXR1cm4gMSBpZiBGSUxF TkFNRSBiZWxvbmdzIHRvIG9uZSBvZiBkaXJlY3RvcnkgY29tcG9uZW50cyBvZgotKyAgIEFVVE9f TE9BRF9TQUZFX1BBVEhfVkVDLiAgUmV0dXJuIDAgb3RoZXJ3aXNlLgotKyAgIGF1dG9fbG9hZF9z YWZlX3BhdGhfdmVjX3VwZGF0ZSBpcyBuZXZlciBjYWxsZWQuCi0rICAgKkZJTEVOQU1FX1JFQUxQ IG1heSBiZSB1cGRhdGVkIGJ5IGdkYl9yZWFscGF0aCBvZiBGSUxFTkFNRSAtIGl0IGhhcyB0byBi ZQotKyAgIGZyZWVkIGJ5IHRoZSBjYWxsZXIuICAqLwotKwotK3N0YXRpYyBpbnQKLStmaWxlbmFt ZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoY29uc3QgY2hhciAqZmlsZW5hbWUsCi0r CQkJCQljaGFyICoqZmlsZW5hbWVfcmVhbHApCi0rewotKyAgY2hhciAqZGlyOwotKyAgaW50IGl4 OwotKwotKyAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgYXV0b19sb2FkX3Nh ZmVfcGF0aF92ZWMsIGl4LCBkaXIpOyArK2l4KQotKyAgICBpZiAoKmZpbGVuYW1lX3JlYWxwID09 IE5VTEwgJiYgZmlsZW5hbWVfaXNfaW5fZGlyIChmaWxlbmFtZSwgZGlyKSkKLSsgICAgICBicmVh azsKLSsgIAotKyAgaWYgKGRpciA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgaWYgKCpmaWxlbmFt ZV9yZWFscCA9PSBOVUxMKQotKwkqZmlsZW5hbWVfcmVhbHAgPSBnZGJfcmVhbHBhdGggKGZpbGVu YW1lKTsKLSsKLSsgICAgICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNoYXJfcHRyLCBhdXRv X2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGRpcik7Ci0rCSAgICsraXgpCi0rCWlmIChmaWxlbmFt ZV9pc19pbl9kaXIgKCpmaWxlbmFtZV9yZWFscCwgZGlyKSkKLSsJICBicmVhazsKLSsgICAgfQot KwotKyAgaWYgKGRpciAhPSBOVUxMKQotKyAgICByZXR1cm4gMTsKLSsKLSsgIHJldHVybiAwOwot K30KLSsKLSsvKiBSZXR1cm4gMSBpZiBGSUxFTkFNRSBpcyBsb2NhdGVkIGluIG9uZSBvZiB0aGUg ZGlyZWN0b3JpZXMgb2YKLSsgICBBVVRPX0xPQURfU0FGRV9QQVRILiAgT3RoZXJ3aXNlIGNhbGwg d2FybmluZyBhbmQgcmV0dXJuIDAuICBGSUxFTkFNRSBkb2VzCi0rICAgbm90IGhhdmUgdG8gYmUg YW4gYWJzb2x1dGUgcGF0aC4KLSsKLSsgICBFeGlzdGVuY2Ugb2YgRklMRU5BTUUgaXMgbm90IGNo ZWNrZWQuICBGdW5jdGlvbiB3aWxsIHN0aWxsIGdpdmUgYSB3YXJuaW5nCi0rICAgZXZlbiBpZiB0 aGUgY2FsbGVyIHdvdWxkIHF1aWV0bHkgc2tpcCBub24tZXhpc3RpbmcgZmlsZSBpbiB1bnNhZmUK LSsgICBkaXJlY3RvcnkuICAqLwotKwotK2ludAotK2ZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNv bnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsgIGNoYXIgKmZpbGVuYW1lX3JlYWwgPSBOVUxMOwot KyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87Ci0rCi0rICBiYWNrX3RvID0gbWFrZV9jbGVhbnVw IChmcmVlX2N1cnJlbnRfY29udGVudHMsICZmaWxlbmFtZV9yZWFsKTsKLSsKLSsgIGlmIChmaWxl bmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoZmlsZW5hbWUsICZmaWxlbmFtZV9y ZWFsKSkKLSsgICAgewotKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSsgICAgICByZXR1 cm4gMTsKLSsgICAgfQotKwotKyAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOwot KyAgaWYgKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjIChmaWxlbmFtZSwg JmZpbGVuYW1lX3JlYWwpKQotKyAgICB7Ci0rICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwot KyAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICB3YXJuaW5nIChfKCJGaWxlIFwiJXNcIiBh dXRvLWxvYWRpbmcgaGFzIGJlZW4gZGVjbGluZWQgYnkgeW91ciAiCi0rCSAgICAgImBhdXRvLWxv YWQgc2FmZS1wYXRoJyBzZXQgdG8gXCIlc1wiLiIpLAotKwkgICBmaWxlbmFtZV9yZWFsLCBhdXRv X2xvYWRfc2FmZV9wYXRoKTsKLSsKLSsgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSsgIHJldHVy biAwOwotK30KLSsKLSAvKiBEZWZpbml0aW9uIG9mIHNjcmlwdCBsYW5ndWFnZSBmb3IgR0RCIGNh bm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMuICAqLwotIAotIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg c2NyaXB0X2xhbmd1YWdlIHNjcmlwdF9sYW5ndWFnZV9nZGIKLUBAIC05OSwxMyArMjc3LDIwIEBA IHN0YXRpYyB2b2lkCi0gc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotIAkJCSAgICAgICBjb25zdCBjaGFyICpmaWxlbmFt ZSkKLSB7Ci0rICBpbnQgaXNfc2FmZTsKLSAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8g KnBzcGFjZV9pbmZvOwotICAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZTsKLSAKLSsg IGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFtZSk7Ci0rCi0gICAvKiBB ZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBn ZGItc2NyaXB0cyIKLSAgICAgIGNhbiBwcmludCBpdC4gICovCi0gICBwc3BhY2VfaW5mbyA9IGdl dF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFj ZSk7Ci0tICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZW5hbWUsIGZpbGVuYW1l LCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7Ci0rICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5m bywgaXNfc2FmZSwgZmlsZW5hbWUsIGZpbGVuYW1lLAotKwkJICAgICZzY3JpcHRfbGFuZ3VhZ2Vf Z2RiKTsKLSsKLSsgIGlmICghaXNfc2FmZSkKLSsgICAgcmV0dXJuOwotIAotICAgVFJZX0NBVENI IChlLCBSRVRVUk5fTUFTS19BTEwpCi0gICAgIHsKLUBAIC0xNDAsNiArMzI1LDkgQEAgc3RydWN0 IGxvYWRlZF9zY3JpcHQKLSAgICAgIGluYWNjZXNzaWJsZSkuICAqLwotICAgY29uc3QgY2hhciAq ZnVsbF9wYXRoOwotIAotKyAgLyogTm9uLXplcm8gaWYgdGhpcyBzY3JpcHQgaGFzIGJlZW4gbG9h ZGVkLiAgKi8KLSsgIGludCBsb2FkZWQ7Ci0rCi0gICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1 YWdlICpsYW5ndWFnZTsKLSB9OwotIAotQEAgLTIzMiwxMiArNDIwLDEzIEBAIGdldF9hdXRvX2xv YWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHMKLSAgIHJldHVybiBpbmZvOwotIH0KLSAKLS0v KiBBZGQgc2NyaXB0IE5BTUUgaW4gTEFOR1VBR0UgdG8gaGFzaCB0YWJsZSBvZiBQU1BBQ0VfSU5G Ty4KLS0gICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdhc24ndCBmb3VuZC4gIFRo ZSByZXN1bHQgaXMKLSsvKiBBZGQgc2NyaXB0IE5BTUUgaW4gTEFOR1VBR0UgdG8gaGFzaCB0YWJs ZSBvZiBQU1BBQ0VfSU5GTy4gIExPQURFRCAxIGlmIHRoZQotKyAgIHNjcmlwdCBoYXMgYmVlbiAo aXMgZ29pbmcgdG8pIGJlIGxvYWRlZCwgMCBvdGhlcndpc2UgKHN1Y2ggYXMgaWYgaXQgaGFzIG5v dAotKyAgIGJlZW4gZm91bmQpLiAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNu J3QgZm91bmQuICBUaGUgcmVzdWx0IGlzCi0gICAgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJl YWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KLSAKLSBpbnQKLS1tYXliZV9hZGRfc2NyaXB0IChz dHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywKLSttYXliZV9hZGRfc2Ny aXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywgaW50IGxvYWRl ZCwKLSAJCSAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoLAotIAkJICBj b25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSkKLSB7Ci1AQCAtMjcxLDYgKzQ2 MCw3IEBAIG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWMKLSAJfQotICAg ICAgIGVsc2UKLSAJKCpzbG90KS0+ZnVsbF9wYXRoID0gTlVMTDsKLSsgICAgICAoKnNsb3QpLT5s b2FkZWQgPSBsb2FkZWQ7Ci0gICAgICAgKCpzbG90KS0+bGFuZ3VhZ2UgPSBsYW5ndWFnZTsKLSAg ICAgfQotIAotQEAgLTQzMiw3ICs2MjIsNyBAQCBwcmludF9zY3JpcHQgKHN0cnVjdCBsb2FkZWRf c2NyaXB0ICpzY3JpCi0gCi0gICBjaGFpbiA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVwbGVfYmVn aW5fZW5kICh1aW91dCwgTlVMTCk7Ci0gCi0tICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwg ImxvYWRlZCIsIHNjcmlwdC0+ZnVsbF9wYXRoID8gIlllcyIgOiAiTWlzc2luZyIpOwotKyAgdWlf b3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQtPmxvYWRlZCA/ICJZZXMi IDogIk5vIik7Ci0gICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgInNjcmlwdCIsIHNjcmlw dC0+bmFtZSk7Ci0gICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOwotIAotQEAgLTcxOCw2ICs5 MDgsOCBAQCB2b2lkIF9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCk7Ci0gdm9pZAotIF9pbml0 aWFsaXplX2F1dG9fbG9hZCAodm9pZCkKLSB7Ci0rICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq Y21kOwotKwotICAgYXV0b19sb2FkX3BzcGFjZV9kYXRhCi0gICAgID0gcmVnaXN0ZXJfcHJvZ3Jh bV9zcGFjZV9kYXRhX3dpdGhfY2xlYW51cCAoYXV0b19sb2FkX3BzcGFjZV9kYXRhX2NsZWFudXAp OwotIAotQEAgLTc1Nyw0ICs5NDksMzAgQEAgVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBs aWNhdGlvbnMgZgotIAkgICBfKCJQcmludCB3aGV0aGVyIGN1cnJlbnQgZGlyZWN0b3J5IC5nZGJp bml0IGZpbGUgaGFzIGJlZW4gbG9hZGVkLlxuXAotIFVzYWdlOiBpbmZvIGF1dG8tbG9hZCBsb2Nh bC1nZGJpbml0IiksCi0gCSAgIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSsg IGF1dG9fbG9hZF9zYWZlX3BhdGggPSB4c3RyZHVwIChERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BB VEgpOwotKyAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOwotKyAgYWRkX3NldHNo b3dfb3B0aW9uYWxfZmlsZW5hbWVfY21kICgic2FmZS1wYXRoIiwgY2xhc3Nfc3VwcG9ydCwKLSsJ CQkJICAgICAmYXV0b19sb2FkX3NhZmVfcGF0aCwgXygiXAotK1NldCB0aGUgbGlzdCBvZiBkaXJl Y3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLiIpLCBfKCJc Ci0rU2hvdyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8g YXV0by1sb2FkIGZpbGVzLiIpLCBfKCJcCi0rVmFyaW91cyBmaWxlcyBsb2FkZWQgYXV0b21hdGlj YWxseSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIC4uLicgb3B0aW9ucyBtdXN0XG5cCi0rYmUgbG9j YXRlZCBpbiBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzIGxpc3RlZCBieSB0aGlzIG9wdGlvbi4gIFdh cm5pbmcgd2lsbCBiZVxuXAotK3ByaW50ZWQgYW5kIGZpbGUgd2lsbCBub3QgYmUgdXNlZCBvdGhl cndpc2UuICBVc2UgZW1wdHkgc3RyaW5nIChvciBldmVuXG5cCi0rZW1wdHkgZGlyZWN0b3J5IGVu dHJ5KSB0byBhbGxvdyBhbnkgZmlsZSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIC4uLicgb3B0aW9u cy5cblwKLStUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGZvciB0aGUga2luZHMgb2YgZmlsZXMgaGF2 aW5nICdzZXQgYXV0by1sb2FkIC4uLiBvZmYnLlxuXAotK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJp dHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAotKwkJCQkgICAgIHNl dF9hdXRvX2xvYWRfc2FmZV9wYXRoLAotKwkJCQkgICAgIHNob3dfYXV0b19sb2FkX3NhZmVfcGF0 aCwKLSsJCQkJICAgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpLAotKwkJCQkgICAgIGF1 dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSsgIGNtZCA9IGFkZF9jbWQgKCJhZGQt YXV0by1sb2FkLXNhZmUtcGF0aCIsIGNsYXNzX3N1cHBvcnQsCi0rCQkgYWRkX2F1dG9fbG9hZF9z YWZlX3BhdGgsCi0rCQkgXygiQWRkIGVudHJpZXMgdG8gdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMg ZnJvbSB3aGljaCBpdCBpcyBzYWZlICIKLSsJCSAgICJ0byBhdXRvLWxvYWQgZmlsZXMuXG5cCi0r U2VlIHRoZSBjb21tYW5kcyAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgnIGFuZCAnc2hvdyBhdXRv LWxvYWQgc2FmZS1wYXRoJyB0b1xuXAotK2FjY2VzcyB0aGUgY3VycmVudCBmdWxsIGxpc3Qgc2V0 dGluZy4iKSwKLSsJCSAmY21kbGlzdCk7Ci0rICBzZXRfY21kX2NvbXBsZXRlciAoY21kLCBmaWxl bmFtZV9jb21wbGV0ZXIpOwotIH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRv LWxvYWQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0 by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYwNzczNjAy MCArMDIwMAotQEAgLTM5LDcgKzM5LDggQEAgZXh0ZXJuIGludCBhdXRvX2xvYWRfbG9jYWxfZ2Ri aW5pdF9sb2FkZQotIGV4dGVybiBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKLSAgIGdl dF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNl ICpwc3BhY2UpOwotIGV4dGVybiBpbnQgbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9h ZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sCi0tCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBj b25zdCBjaGFyICpmdWxsX3BhdGgsCi0rCQkJICAgICBpbnQgbG9hZGVkLCBjb25zdCBjaGFyICpu YW1lLAotKwkJCSAgICAgY29uc3QgY2hhciAqZnVsbF9wYXRoLAotIAkJCSAgICAgY29uc3Qgc3Ry dWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOwotIGV4dGVybiB2b2lkIGF1dG9fbG9hZF9v YmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCQkJCSAgICAgIGNvbnN0 IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKTsKLUBAIC01NCw0ICs1NSw2IEBAIGV4 dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG8KLSBleHRlcm4gc3RydWN0IGNt ZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAodm9pZCk7Ci0gZXh0 ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQg KHZvaWQpOwotIAotK2V4dGVybiBpbnQgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hh ciAqZmlsZW5hbWUpOwotKwotICNlbmRpZiAvKiBBVVRPX0xPQURfSCAqLwotSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvY29uZmlnLmluCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnLmluCTIwMTItMDQtMTgg MDA6NDk6MjEuNjA3NzM2MDIwICswMjAwCi1AQCAtNDMsNiArNDMsOSBAQAotICAgIG1vdmVkLiAq LwotICN1bmRlZiBERUJVR0RJUl9SRUxPQ0FUQUJMRQotIAotKy8qIERpcmVjdG9yaWVzIHNhZmUg dG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy4gKi8KLSsjdW5kZWYgREVGQVVMVF9BVVRPX0xPQURf U0FGRV9QQVRICi0rCi0gLyogRGVmaW5lIHRvIEJGRCdzIGRlZmF1bHQgYXJjaGl0ZWN0dXJlLiAq LwotICN1bmRlZiBERUZBVUxUX0JGRF9BUkNICi0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvY29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9jb25maWd1cmUJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUJMjAxMi0wNC0xOCAwMDo0OToyMS42MTE3 MzYwMTAgKzAyMDAKLUBAIC05NTUsNiArOTU1LDcgQEAgd2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIK LSB3aXRoX2dkYl9kYXRhZGlyCi0gd2l0aF9yZWxvY2F0ZWRfc291cmNlcwotIHdpdGhfcnBtCi0r d2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoCi0gZW5hYmxlX3RhcmdldHMKLSBlbmFibGVfNjRfYml0 X2JmZAotIGVuYWJsZV9nZGJjbGkKLUBAIC0xNjY2LDYgKzE2NjcsMTAgQEAgT3B0aW9uYWwgUGFj a2FnZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHJlbG9jYXRl IHRoaXMgcGF0aCBmb3Igc291cmNlIGZpbGVzCi0gICAtLXdpdGgtcnBtICAgICAgICAgICAgICBx dWVyeSBycG0gZGF0YWJhc2UgZm9yIG1pc3NpbmcgZGVidWdpbmZvcyAoeWVzL25vLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGVmLiBhdXRvPWxpYnJwbS5zbykKLSsgIC0td2l0aC1hdXRv LWxvYWQtc2FmZS1wYXRoPVBBVEgKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9y aWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcwotKyAgLS13aXRob3V0LWF1dG8tbG9h ZC1zYWZlLXBhdGgKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIG5vdCByZXN0cmljdCBh dXRvLWxvYWRlZCBmaWxlcyBsb2NhdGlvbnMKLSAgIC0td2l0aC1saWJ1bndpbmQgICAgICAgIHVz ZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIHN1cHBvcnQKLSAgIC0td2l0aC1jdXJzZXMgICAg ICAgICAgIHVzZSB0aGUgY3Vyc2VzIGxpYnJhcnkgaW5zdGVhZCBvZiB0aGUgdGVybWNhcAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQotQEAgLTg0NzcsNiArODQ4MiwzMiBAQCAk YXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkUlBNX1BLR19FUlJPCi0gICBmaQotIGZpCi0gCi0r eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGVm YXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3Ig ZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoLi4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0 aGVyIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoIHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dp dGhfYXV0b19sb2FkX3NhZmVfcGF0aCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3 aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg7IGlmIHRlc3QgIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3Bh dGgiID0gIm5vIjsgdGhlbgotKyAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iIgotKyBmaQot K2Vsc2UKLSsgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHByZWZpeCIKLStmaQotKwotKwot KyAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgi Ci0rICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZp eH0nCi0rICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0 aGAKLSsgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkYWNfZGVmaW5lX2RpcmAKLSsKLStjYXQg Pj5jb25mZGVmcy5oIDw8X0FDRU9GCi0rI2RlZmluZSBERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BB VEggIiRhY19kZWZpbmVfZGlyIgotK19BQ0VPRgotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA+ JjUKLSskYXNfZWNobyAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPiY2OyB9Ci0rCi0gCi0g Ci0gc3ViZGlycz0iJHN1YmRpcnMgdGVzdHN1aXRlIgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMTggMDA6 NDk6MjEuNjExNzM2MDEwICswMjAwCi1AQCAtMzM5LDYgKzMzOSwxOCBAQCBleHRlcm4gcnBtZGJN YXRjaEl0ZXJhdG9yIHJwbXRzSW5pdEl0ZXJhCi0gICBmaQotIGZpCi0gIAotK0FDX01TR19DSEVD S0lORyhbZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNhZmUtcGF0aF0pCi0rQUNfQVJHX1dJVEgoYXV0 by1sb2FkLXNhZmUtcGF0aCwKLStBU19IRUxQX1NUUklORyhbLS13aXRoLWF1dG8tbG9hZC1zYWZl LXBhdGg9UEFUSF0sIFtkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXNd KQotK0FTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aF0sIFtkbyBu b3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zXSksCi0rW2lmIHRlc3QgIiR3 aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgotKyAgIHdpdGhfYXV0b19sb2Fk X3NhZmVfcGF0aD0iIgotKyBmaV0sCi0rW3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHByZWZp eCJdKQotK0FDX0RFRklORV9ESVIoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRILCB3aXRoX2F1 dG9fbG9hZF9zYWZlX3BhdGgsCi0rCSAgICAgIFtEaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0 by1sb2FkZWQgZmlsZXMuXSkKLStBQ19NU0dfUkVTVUxUKFskd2l0aF9hdXRvX2xvYWRfc2FmZV9w YXRoXSkKLSsKLSBBQ19DT05GSUdfU1VCRElSUyh0ZXN0c3VpdGUpCi0gCi0gIyBDaGVjayB3aGV0 aGVyIHRvIHN1cHBvcnQgYWx0ZXJuYXRpdmUgdGFyZ2V0IGNvbmZpZ3VyYXRpb25zCi1JbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDQt MTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv bGludXgtdGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo0OToyMS42MTI3MzYwMDcgKzAyMDAKLUBA IC04NjgsNyArODY4LDExIEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX3BkaXJfMSAoc3RydWN0 IG8KLSAgIC8qIFRoaXMgc2hvdWxkIGF0IG1pbmltdW0gaGl0IHRoZSBmaXJzdCBjaGFyYWN0ZXIu ICAqLwotICAgZ2RiX2Fzc2VydCAoY3AgIT0gTlVMTCk7Ci0gICBzdHJjcHkgKGNwICsgMSwgTElC VEhSRUFEX0RCX1NPKTsKLS0gIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCk7Ci0r Ci0rICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgpKQotKyAgICByZXN1bHQgPSAw OwotKyAgZWxzZQotKyAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOwotIAot ICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotICAgcmV0dXJuIHJlc3VsdDsKLUBAIC05MzQsNyAr OTM4LDExIEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2RpciAoY29uc3QgY2hhcgotICAgbWVt Y3B5IChwYXRoLCBkaXIsIGRpcl9sZW4pOwotICAgcGF0aFtkaXJfbGVuXSA9ICcvJzsKLSAgIHN0 cmNweSAocGF0aCArIGRpcl9sZW4gKyAxLCBMSUJUSFJFQURfREJfU08pOwotLSAgcmVzdWx0ID0g dHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKLSsKLSsgIGlmICghZmlsZV9pc19hdXRvX2xvYWRf c2FmZSAocGF0aCkpCi0rICAgIHJlc3VsdCA9IDA7Ci0rICBlbHNlCi0rICAgIHJlc3VsdCA9IHRy eV90aHJlYWRfZGJfbG9hZCAocGF0aCk7Ci0gCi0gICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0g ICByZXR1cm4gcmVzdWx0OwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbWFpbi5jCTIwMTIt MDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDk6MjEuNjEyNzM2MDA3ICswMjAwCi1AQCAtMTAyNiw3 ICsxMDI2LDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgICAgewotICAgICAgIGF1 dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lID0gZ2RiX3JlYWxwYXRoIChsb2NhbF9nZGJp bml0KTsKLSAKLS0gICAgICBpZiAoIWluaGliaXRfZ2RiaW5pdCAmJiBhdXRvX2xvYWRfbG9jYWxf Z2RiaW5pdCkKLSsgICAgICBpZiAoIWluaGliaXRfZ2RiaW5pdCAmJiBhdXRvX2xvYWRfbG9jYWxf Z2RiaW5pdAotKwkgICYmIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGxvY2FsX2dkYmluaXQpKQot IAl7Ci0gCSAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkID0gMTsKLSAKLUluZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8KLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAw OjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9n ZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYyMDczNTk4NyArMDIwMAotQEAgLTIwODAx LDYgKzIwODAxLDggQEAgZ2RiLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcQot IGxpYnRocmVhZC1kYjogIEF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJl YWRfZGIgaXMgb24uCi0gbG9jYWwtZ2RiaW5pdDogIEF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBz Y3JpcHQgZnJvbSBjdXJyZW50IGRpcmVjdG9yeSBpcyBvbi4KLSBweXRob24tc2NyaXB0czogIEF1 dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyBvbi4KLStzYWZlLXBhdGg6ICBMaXN0IG9m IGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMKLSsg ICAgICAgICAgICBpcyAvdXNyL2xvY2FsLgotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0gQGFuY2hv cntpbmZvIGF1dG8tbG9hZH0KLUBAIC0yMDg3MiwxMiArMjA4NzQsMTkgQEAgVGhlc2UgYXJlIEB2 YWx1ZXtHREJOfSBjb250cm9sIGNvbW1hbmRzCi0gQHRhYiBTaG93IHNldHRpbmcgb2YgdGhyZWFk IGRlYnVnZ2luZyBsaWJyYXJ5LgotIEBpdGVtIEB4cmVme2luZm8gYXV0by1sb2FkIGxpYnRocmVh ZC1kYn0uCi0gQHRhYiBTaG93IHN0YXRlIG9mIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KLStA aXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0uCi0rQHRhYiBDb250cm9sIGRpcmVj dG9yaWVzIHRydXN0ZWQgZm9yIGF1dG9tYXRpYyBsb2FkaW5nLgotK0BpdGVtIEB4cmVme3Nob3cg YXV0by1sb2FkIHNhZmUtcGF0aH0uCi0rQHRhYiBTaG93IGRpcmVjdG9yaWVzIHRydXN0ZWQgZm9y IGF1dG9tYXRpYyBsb2FkaW5nLgotK0BpdGVtIEB4cmVme2FkZC1hdXRvLWxvYWQtc2FmZS1wYXRo fS4KLStAdGFiIEFkZCBkaXJlY3RvcnkgdHJ1c3RlZCBmb3IgYXV0b21hdGljIGxvYWRpbmcuCi0g QGVuZCBtdWx0aXRhYmxlCi0gCi0gQG1lbnUKLSAqIEluaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBE aXJlY3Rvcnk6OiBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fQot ICogbGlidGhyZWFkX2RiLnNvLjEgZmlsZTo6ICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2lu Zm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KLSAqIG9iamZpbGUtZ2RiLmdkYiBmaWxlOjogICAg ICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0fQotKyog QXV0by1sb2FkaW5nIHNhZmUgcGF0aDo6ICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8g YXV0by1sb2FkIHNhZmUtcGF0aH0KLSBAeHJlZntQeXRob24gQXV0by1sb2FkaW5nfS4KLSBAZW5k IG1lbnUKLSAKLUBAIC0yMDk3OCw2ICsyMDk4NywxMDQgQEAgYXV0by1sb2FkZWQuCi0gSWYgQHZh cntyZWdleHB9IGlzIHN1cHBsaWVkIG9ubHkgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBz Y3JpcHRzIHdpdGgKLSBtYXRjaGluZyBuYW1lcyBhcmUgcHJpbnRlZC4KLSAKLStAbm9kZSBBdXRv LWxvYWRpbmcgc2FmZSBwYXRoCi0rQHN1YnNlY3Rpb24gU2VjdXJpdHkgcmVzdHJpY3Rpb24gZm9y IGF1dG8tbG9hZGluZwotK0BjaW5kZXggYXV0by1sb2FkaW5nIHNhZmUtcGF0aAotKwotK0FzIHRo ZSBmaWxlcyBvZiBpbmZlcmlvciBjYW4gY29tZSBmcm9tIHVudHJ1c3RlZCBzb3VyY2UgKHN1Y2gg YXMgc3VibWl0dGVkIGJ5Ci0rYW4gYXBwbGljYXRpb24gdXNlcikgQHZhbHVle0dEQk59IGRvZXMg bm90IGFsd2F5cyBsb2FkIGFueSBmaWxlcyBhdXRvbWF0aWNhbGx5LgotK0B2YWx1ZXtHREJOfSBw cm92aWRlcyB0aGUgQHNhbXB7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9IHNldHRpbmcgdG8gbGlz dAotK2RpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGxvYWRpbmcgZmlsZXMgbm90IGV4cGxpY2l0bHkg cmVxdWVzdGVkIGJ5IHVzZXIuCi0rCi0rSWYgdGhlIHBhdGggaXMgbm90IHNldCBwcm9wZXJseSB5 b3Ugd2lsbCBzZWUgYSB3YXJuaW5nIGFuZCB0aGUgZmlsZSB3aWxsIG5vdAotK2dldCBsb2FkZWQ6 Ci0rCi0rQHNtYWxsZXhhbXBsZQotKyQgLi9nZGIgLXEgLi9nZGIKLStSZWFkaW5nIHN5bWJvbHMg ZnJvbSAvaG9tZS91c2VyL2dkYi9nZGIuLi5kb25lLgotK3dhcm5pbmc6IEZpbGUgIi9ob21lL3Vz ZXIvZ2RiL2dkYi1nZGIuZ2RiIiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4KLSsgICAgICAgICBkZWNs aW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIi91c3IvbG9jYWwiLgot K3dhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIucHkiIGF1dG8tbG9hZGluZyBo YXMgYmVlbgotKyAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgn IHNldCB0byAiL3Vzci9sb2NhbCIuCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStUaGUgbGlzdCBv ZiB0cnVzdGVkIGRpcmVjdG9yaWVzIGlzIGNvbnRyb2xsZWQgYnkgdGhlIGZvbGxvd2luZyBjb21t YW5kczoKLSsKLStAdGFibGUgQGNvZGUKLStAYW5jaG9ye3NldCBhdXRvLWxvYWQgc2FmZS1wYXRo fQotK0BraW5kZXggc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgKLStAaXRlbSBzZXQgYXV0by1sb2Fk IHNhZmUtcGF0aCBAdmFye2RpcmVjdG9yaWVzfQotK1NldCB0aGUgbGlzdCBvZiBkaXJlY3Rvcmll cyAoYW5kIHRoZWlyIHN1YmRpcmVjdG9yaWVzKSB0cnVzdGVkIGZvciBhdXRvbWF0aWMKLStsb2Fk aW5nIGFuZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4gIFlvdSBjYW4gYWxzbyBlbnRlciBhIHNwZWNp ZmljIHRydXN0ZWQgZmlsZS4KLStUaGUgbGlzdCBvZiBkaXJlY3RvcmllcyB1c2VzIGRpcmVjdG9y eSBzZXBhcmF0b3IgKEBzYW1wezp9IG9uIEdOVSBhbmQgVW5peAotK3N5c3RlbXMsIEBzYW1wezt9 IG9uIE1TLVdpbmRvd3MgYW5kIE1TLURPUykgdG8gc2VwYXJhdGUgZGlyZWN0b3JpZXMsIHNpbWls YXJseQotK3RvIHRoZSBAZW52e1BBVEh9IGVudmlyb25tZW50IHZhcmlhYmxlLgotKwotK0BhbmNo b3J7c2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRofQotK0BraW5kZXggc2hvdyBhdXRvLWxvYWQgc2Fm ZS1wYXRoCi0rQGl0ZW0gc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoCi0rU2hvdyB0aGUgbGlzdCBv ZiBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMgbG9hZGluZyBhbmQgZXhlY3V0aW9u IG9mCi0rc2NyaXB0cy4KLSsKLStAYW5jaG9ye2FkZC1hdXRvLWxvYWQtc2FmZS1wYXRofQotK0Br aW5kZXggYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgKLStAaXRlbSBhZGQtYXV0by1sb2FkLXNhZmUt cGF0aAotK0FkZCBhbiBlbnRyeSAob3IgbGlzdCBvZiBlbnRyaWVzKSB0aGUgbGlzdCBvZiBkaXJl Y3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMKLStsb2FkaW5nIGFuZCBleGVjdXRpb24gb2Yg c2NyaXB0cy4gIE11bHRpcGxlIGVudHJpZXMgbWF5IGJlIGRlbGltaXRlZCBieSB0aGUKLStob3N0 IHBsYXRmb3JtIGRpcmVjdG9yeSBzZXBhcmF0b3IgaW4gdXNlLgotK0BlbmQgdGFibGUKLSsKLStT ZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gYW4gZW1wdHkgc3RyaW5nIGRpc2FibGVzIHRoaXMgc2Vj dXJpdHkgcHJvdGVjdGlvbi4KLStUaGlzIHZhcmlhYmxlIGlzIHN1cHBvc2VkIHRvIGJlIHNldCB0 byB0aGUgc3lzdGVtIGRpcmVjdG9yaWVzIHdyaXRhYmxlIGJ5IHRoZQotK3N5c3RlbSBzdXBlcnVz ZXIgb25seS4gIFVzZXJzIGNhbiBhZGQgdGhlaXIgc291cmNlIGRpcmVjdG9yaWVzIGluIGluaXQg ZmlsZXMgaW4KLSt0aGVpciBob21lIGRpcmVjdG9yaWVzIChAcHhyZWZ7SG9tZSBEaXJlY3Rvcnkg SW5pdCBGaWxlfSkuICBTZWUgYWxzbyBkZXByZWNhdGVkCi0raW5pdCBmaWxlIGluIHRoZSBjdXJy ZW50IGRpcmVjdG9yeQotKyhAcHhyZWZ7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9y eSBkdXJpbmcgU3RhcnR1cH0pLgotKwotK1RvIGZvcmNlIEB2YWx1ZXtHREJOfSB0byBsb2FkIHRo ZSBmaWxlcyBpdCBkZWNsaW5lZCB0byBsb2FkIGluIHRoZSBwcmV2aW91cwotK2V4YW1wbGUsIHlv dSBjb3VsZCB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgd2F5czoKLSsKLStAaXRlbWl6ZSBAYnVs bGV0Ci0rQGl0ZW0gfi8uZ2RiaW5pdDogYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGggfi9zcmMvZ2Ri Ci0rU3BlY2lmeSB0aGlzIHRydXN0ZWQgZGlyZWN0b3J5IChvciBhIGZpbGUpIGFzIGFkZGl0aW9u YWwgY29tcG9uZW50IG9mIHRoZSBsaXN0LgotK1lvdSBoYXZlIHRvIHNwZWNpZnkgYWxzbyBhbnkg ZXhpc3RpbmcgZGlyZWN0b3JpZXMgZGlzcGxheWVkIGJ5Ci0rYnkgQHNhbXB7c2hvdyBhdXRvLWxv YWQgc2FmZS1wYXRofSAoc3VjaCBhcyBAc2FtcHsvdXNyOi9iaW59IGluIHRoaXMgZXhhbXBsZSku Ci0rCi0rQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggL3Vzcjov YmluOn4vc3JjL2dkYiIgW0Bkb3Rze31dfQotK1NwZWNpZnkgdGhpcyBkaXJlY3RvcnkgYXMgaW4g dGhlIHByZXZpb3VzIGNhc2UgYnV0IGp1c3QgZm9yIGEgc2luZ2xlCi0rQHZhbHVle0dEQk59IHNl c3Npb24uCi0rCi0rQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgi IFtAZG90c3t9XX0KLStEaXNhYmxlIGF1dG8tbG9hZGluZyBzYWZldHkgZm9yIGEgc2luZ2xlIEB2 YWx1ZXtHREJOfSBzZXNzaW9uLgotK1RoaXMgYXNzdW1lcyBhbGwgdGhlIGZpbGVzIHlvdSBkZWJ1 ZyBkdXJpbmcgdGhpcyBAdmFsdWV7R0RCTn0gc2Vzc2lvbiB3aWxsIGNvbWUKLStmcm9tIHRydXN0 ZWQgc291cmNlcy4KLSsKLStAaXRlbSBAa2Jkey4vY29uZmlndXJlIC0td2l0aG91dC1hdXRvLWxv YWQtc2FmZS1wYXRofQotK0R1cmluZyBjb21waWxhdGlvbiBvZiBAdmFsdWV7R0RCTn0geW91IG1h eSBkaXNhYmxlIGFueSBhdXRvLWxvYWRpbmcgc2FmZXR5LgotK1RoaXMgYXNzdW1lcyBhbGwgdGhl IGZpbGVzIHlvdSB3aWxsIGV2ZXIgZGVidWcgd2l0aCB0aGlzIEB2YWx1ZXtHREJOfSBjb21lIGZy b20KLSt0cnVzdGVkIHNvdXJjZXMuCi0rQGVuZCBpdGVtaXplCi0rCi0rT24gdGhlIG90aGVyIGhh bmQgeW91IGNhbiBhbHNvIGV4cGxpY2l0bHkgZm9yYmlkIGF1dG9tYXRpYyBmaWxlcyBsb2FkaW5n IHdoaWNoCi0rYWxzbyBzdXBwcmVzc2VzIGFueSBzdWNoIHdhcm5pbmcgbWVzc2FnZXM6Ci0rCi0r QGl0ZW1pemUgQGJ1bGxldAotK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgbm8i IFtAZG90c3t9XX0KLStZb3UgY2FuIHVzZSBAdmFsdWV7R0RCTn0gY29tbWFuZC1saW5lIG9wdGlv biBmb3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Npb24uCi0rCi0rQGl0ZW0gQHNhbXB7fi8u Z2RiaW5pdH06IEBzYW1we3NldCBhdXRvLWxvYWQgbm99Ci0rRGlzYWJsZSBhdXRvLWxvYWRpbmcg Z2xvYmFsbHkgZm9yIHRoZSB1c2VyCi0rKEBweHJlZntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9 KS4gIFdoaWxlIGl0IGlzIGltcHJvYmFibGUsIHlvdSBjb3VsZCBhbHNvCi0rdXNlIHN5c3RlbSBp bml0IGZpbGUgaW5zdGVhZCAoQHB4cmVme1N5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb259KS4KLStA ZW5kIGl0ZW1pemUKLSsKLStUaGlzIHNldHRpbmcgYXBwbGllcyB0byB0aGUgZmlsZSBuYW1lcyBh cyBlbnRlcmVkIGJ5IHVzZXIuICBJZiBubyBlbnRyeSBtYXRjaGVzCi0rQHZhbHVle0dEQk59IHRy aWVzIGFzIGEgbGFzdCByZXNvcnQgdG8gYWxzbyByZXNvbHZlIGFsbCB0aGUgZmlsZSBuYW1lcyBp bnRvCi0rdGhlaXIgY2Fub25pY2FsIGZvcm0gKHR5cGljYWxseSByZXNvbHZpbmcgc3ltYm9saWMg bGlua3MpIGFuZCBjb21wYXJlIHRoZQotK2VudHJpZXMgYWdhaW4uICBAdmFsdWV7R0RCTn0gYWxy ZWFkeSBjYW5vbmljYWxpemVzIG1vc3Qgb2YgdGhlIGZpbGVuYW1lcyBvbiBpdHMKLStvd24gYmVm b3JlIHN0YXJ0aW5nIHRoZSBjb21wYXJpc29uIHNvIGEgY2Fub25pY2FsIGZvcm0gb2YgZGlyZWN0 b3JpZXMgaXMKLStyZWNvbW1lbmRlZCB0byBiZSBlbnRlcmVkLgotKwotIEBub2RlIE1lc3NhZ2Vz L1dhcm5pbmdzCi0gQHNlY3Rpb24gT3B0aW9uYWwgV2FybmluZ3MgYW5kIE1lc3NhZ2VzCi0gCi1A QCAtMjQ5NTUsMTAgKzI1MDYyLDEwIEBAIEV4YW1wbGU6Ci0gCi0gQHNtYWxsZXhhbXBsZQotIChn ZGIpIGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCi0tTG9hZGVkICBTY3JpcHQKLS1ZZXMg ICAgIHB5LXNlY3Rpb24tc2NyaXB0LnB5Ci0tICAgICAgICBmdWxsIG5hbWU6IC90bXAvcHktc2Vj dGlvbi1zY3JpcHQucHkKLS1NaXNzaW5nIG15LWZvby1wcmV0dHktcHJpbnRlcnMucHkKLStMb2Fk ZWQgU2NyaXB0Ci0rWWVzICAgIHB5LXNlY3Rpb24tc2NyaXB0LnB5Ci0rICAgICAgIGZ1bGwgbmFt ZTogL3RtcC9weS1zZWN0aW9uLXNjcmlwdC5weQotK05vICAgICBteS1mb28tcHJldHR5LXByaW50 ZXJzLnB5Ci0gQGVuZCBzbWFsbGV4YW1wbGUKLSBAZW5kIHRhYmxlCi0gCi1JbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0w NC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0OToyMS42MjE3MzU5ODUgKzAy MDAKLUBAIC03MiwxNCArNzIsMTkgQEAgc3RhdGljIHZvaWQKLSBnZGJweV9sb2FkX2F1dG9fc2Ny aXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKLSAJ CQkJICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotIHsKLSsgIGludCBpc19zYWZlOwotICAgc3Ry dWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0gCi0rICBpc19zYWZlID0g ZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZmlsZW5hbWUpOwotKwotICAgLyogQWRkIHRoaXMgc2Ny aXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlw dHMiCi0gICAgICBjYW4gcHJpbnQgaXQuICAqLwotICAgcHNwYWNlX2luZm8gPSBnZXRfYXV0b19s b2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwotLSAg bWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGVuYW1lLCBmaWxlbmFtZSwgJnNjcmlw dF9sYW5ndWFnZV9weXRob24pOwotKyAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGlz X3NhZmUsIGZpbGVuYW1lLCBmaWxlbmFtZSwKLSsJCSAgICAmc2NyaXB0X2xhbmd1YWdlX3B5dGhv bik7Ci0gCi0tICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZmls ZSwgZmlsZW5hbWUpOwotKyAgaWYgKGlzX3NhZmUpCi0rICAgIHNvdXJjZV9weXRob25fc2NyaXB0 X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBmaWxlLCBmaWxlbmFtZSk7Ci0gfQotIAotIC8qIExvYWQg c2NyaXB0cyBzcGVjaWZpZWQgaW4gT0JKRklMRS4KLUBAIC0xNDcsNiArMTUyLDkgQEAgc291cmNl X3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbGUgKgotIAl7Ci0gCSAgbWFrZV9jbGVhbnVw X2ZjbG9zZSAoc3RyZWFtKTsKLSAJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOwot KwotKwkgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZnVsbF9wYXRoKSkKLSsJICAgIG9w ZW5lZCA9IDA7Ci0gCX0KLSAgICAgICBlbHNlCi0gCXsKLUBAIC0xNjcsNyArMTc1LDcgQEAgVXNl IGBpbmZvIGF1dG8tbG9hZCBweXRob24gW1JFR0VYUF0nIHRvCi0gCi0gCSBJV0JOIGlmIGNvbXBs YWludHMuYyB3ZXJlIG1vcmUgZ2VuZXJhbC1wdXJwb3NlLiAgKi8KLSAKLS0gICAgICBpbl9oYXNo X3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGUsIGZ1bGxfcGF0aCwK LSsgICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIG9w ZW5lZCwgZmlsZSwgZnVsbF9wYXRoLAotIAkJCQkJJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOwot IAotICAgICAgIC8qIElmIHRoaXMgZmlsZSBpcyBub3QgY3VycmVudGx5IGxvYWRlZCwgbG9hZCBp dC4gICovCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAJ MjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAJMjAxMi0w NC0xOCAwMDo0OToyMS42MjE3MzU5ODUgKzAyMDAKLUBAIC0zNyw2ICszNyw3IEBAIGlmIHsgW3Nr aXBfcHl0aG9uX3Rlc3RzXSB9IHsgY29udGludWUgfQotIHNldCByZW1vdGVfcHl0aG9uX2ZpbGUg W3JlbW90ZV9kb3dubG9hZCBob3N0ICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0tZ2Ri LnB5LmluICR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1nZGIucHldCi0gCi0gZ2RiX3JlaW5pdGlhbGl6 ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXV0by1sb2Fk IHNhZmUtcGF0aCAke3JlbW90ZV9weXRob25fZmlsZX0iICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0 aCIKLSBnZGJfbG9hZCAke2JpbmZpbGV9Ci0gCi0gIyBWZXJpZnkgZ2RiIGxvYWRlZCB0aGUgc2Ny aXB0LgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LXNlY3Rpb24tc2NyaXB0LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2VjdGlvbi1zY3JpcHQuZXhwCTIw MTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2VjdGlvbi1zY3JpcHQuZXhwCTIwMTItMDQt MTggMDA6NDk6MjEuNjIxNzM1OTg1ICswMjAwCi1AQCAtNDksNiArNDksNyBAQCBpZiB7IFtza2lw X3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVlIH0KLSBzZXQgcmVtb3RlX3B5dGhvbl9maWxlIFty ZW1vdGVfZG93bmxvYWQgaG9zdCAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LnB5XQot IAotIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2dkYl90ZXN0X25vX291 dHB1dCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggJHtyZW1vdGVfcHl0aG9uX2ZpbGV9IiAic2V0 IGF1dG8tbG9hZCBzYWZlLXBhdGgiCi0gZ2RiX2xvYWQgJHtiaW5maWxlfQotIAotICMgVmVyaWZ5 IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTFvZjE4 LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTExb2YxOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi40YWM2OGIwCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTEx b2YxOC5wYXRjaApAQCAtMCwwICsxLDc0NCBAQAorW3BhdGNoIzQgNS84XSBzZXQgYXV0by1sb2Fk IHNhZmUtcGF0aAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQv bXNnMDAwOTIuaHRtbAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9t c2cwMDExNC5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjUxOjQx CTEuMTQxMTMKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjU0OjI4CTEuMTQx MTQKKyMjIC0xLDUgKzEsMzkgQEAKKyAyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisrCU5ldyBvcHRpb24gInNldCBhdXRvLWxvYWQgc2Fm ZS1wYXRoIi4KKysJKiBORVdTOiBOZXcgY29tbWFuZHMgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRo IgorKwlhbmQgInNob3cgYXV0by1sb2FkIHNhZmUtcGF0aCIuCisrCSogYXV0by1sb2FkLmM6IElu Y2x1ZGUgZ2RiX3ZlY3MuaCwgcmVhZGxpbmUvdGlsZGUuaCBhbmQgY29tcGxldGVyLmguCisrCShh dXRvX2xvYWRfc2FmZV9wYXRoLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYykKKysJKGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSwgc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGgpCisrCShzaG93 X2F1dG9fbG9hZF9zYWZlX3BhdGgsIGFkZF9hdXRvX2xvYWRfc2FmZV9wYXRoLCBmaWxlbmFtZV9p c19pbl9kaXIpCisrCShmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgZmls ZV9pc19hdXRvX2xvYWRfc2FmZSk6IE5ldy4KKysJKHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpm aWxlKTogTmV3IHZhcmlhYmxlIGlzX3NhZmUuICBDYWxsCisrCWZpbGVfaXNfYXV0b19sb2FkX3Nh ZmUuICBSZXR1cm4gaWYgaXQgaXMgbm90LgorKwkoc3RydWN0IGxvYWRlZF9zY3JpcHQpOiBOZXcg ZmllbGQgbG9hZGVkLgorKwkobWF5YmVfYWRkX3NjcmlwdCk6IEFkZCBwYXJhbWV0ZXIgbG9hZGVk LiAgSW5pdGlhbGl6ZSBTTE9UIHdpdGggaXQuCisrCShwcmludF9zY3JpcHQpOiBVc2UgTE9BREVE IGluZGljYXRvciBpbnN0ZWFkIG9mIEZVTExfUEFUSC4gIENoYW5nZQorKwlvdXRwdXQgIk1pc3Np bmciIHRvICJObyIuCisrCShfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBOZXcgdmFyaWFibGUgY21k LiAgSW5pdGlhbGl6ZQorKwlhdXRvX2xvYWRfc2FmZV9wYXRoLiAgUmVnaXN0ZXIgInNldCBhdXRv LWxvYWQgc2FmZS1wYXRoIiwKKysJInNob3cgYXV0by1sb2FkIHNhZmUtcGF0aCIgYW5kICJhZGQt YXV0by1sb2FkLXNhZmUtcGF0aCIuCisrCSogYXV0by1sb2FkLmggKG1heWJlX2FkZF9zY3JpcHQp OiBBZGQgcGFyYW1ldGVyIGxvYWRlZC4KKysJKGZpbGVfaXNfYXV0b19sb2FkX3NhZmUpOiBOZXcg ZGVjbGFyYXRpb24uCisrCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgorKwkqIGNvbmZpZ3VyZTog UmVnZW5lcmF0ZS4KKysJKiBjb25maWd1cmUuYWM6IE5ldyBwYXJhbWV0ZXJzIC0td2l0aC1hdXRv LWxvYWQtc2FmZS1wYXRoCisrCWFuZCAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aC4KKysJ KiBsaW51eC10aHJlYWQtZGIuYyAodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRpcl8xKQorKwko dHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fZGlyKTogQ2hlY2sgZmlsZV9pc19hdXRvX2xvYWRfc2Fm ZSBmaXJzdC4KKysJKiBtYWluLmMgKGNhcHR1cmVkX21haW4pOiBDaGVjayBmaWxlX2lzX2F1dG9f bG9hZF9zYWZlIGZvcgorKwlMT0NBTF9HREJJTklULgorKwkqIHB5dGhvbi9weS1hdXRvLWxvYWQu YyAoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSk6IE5ldworKwl2YXJpYWJsZSBp c19zYWZlLiAgQ2FsbCBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlLiAgUmV0dXJuIGlmIGl0IGlzIG5v dC4KKysJKHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMpOiBDYWxsIGZpbGVfaXNfYXV0b19sb2FkX3Nh ZmUuICBSZXR1cm4gaWYgaXQgaXMKKysJbm90LgorKworKzIwMTItMDQtMTcgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKyAJYXV0by1sb2FkOiBJbXBsZW1l bnRhdGlvbi4KKyAJKiBORVdTOiBOZXcgZGVzY3JpcHRpb25zIGZvciAiaW5mbyBhdXRvLWxvYWQi LAorIAkiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHMiLAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0 OTowMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIw MTItMDQtMTggMDA6NDk6MzMuMjgyNzA2MzE5ICswMjAwCitAQCAtNjcsNiArNjcsMTEgQEAgc2V0 IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIgb258b2ZmCisgc2hvdyBhdXRvLWxvYWQgbGlidGhyZWFk LWRiCisgICBDb250cm9sIGF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyB0aHJlYWQg ZGVidWdnaW5nIHNoYXJlZCBsaWJyYXJ5LgorIAorK3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoIDxk aXIxPls6PGRpcjI+Li4uXQorK3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aAorKyAgU2V0IGEgbGlz dCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVz LgorKyAgVGhlIGRlbGltaXRlciAoJzonIGFib3ZlKSBtYXkgZGlmZmVyIGFjY29yZGluZyB0byB0 aGUgaG9zdCBwbGF0Zm9ybS4KKysKKyAqIE5ldyBjb21tYW5kIGxpbmUgb3B0aW9ucworIAorIC0t aW5pdC1jb21tYW5kPUZJTEUsIC1peCAgICAgICAgICBMaWtlIC0tY29tbWFuZCwgLXggYnV0IGV4 ZWN1dGUgaXQKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYworPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAx Mi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYwNzczNjAyMCArMDIwMAorQEAg LTMyLDYgKzMyLDkgQEAKKyAjaW5jbHVkZSAiZ2RiY21kLmgiCisgI2luY2x1ZGUgImNsaS9jbGkt ZGVjb2RlLmgiCisgI2luY2x1ZGUgImNsaS9jbGktc2V0c2hvdy5oIgorKyNpbmNsdWRlICJnZGJf dmVjcy5oIgorKyNpbmNsdWRlICJyZWFkbGluZS90aWxkZS5oIgorKyNpbmNsdWRlICJjb21wbGV0 ZXIuaCIKKyAKKyAvKiBUaGUgc3VmZml4IG9mIHBlci1vYmpmaWxlIHNjcmlwdHMgdG8gYXV0by1s b2FkIGFzIG5vbi1QeXRob24gY29tbWFuZCBmaWxlcy4KKyAgICBFLmcuIFdoZW4gdGhlIHByb2dy YW0gbG9hZHMgbGliZm9vLnNvLCBsb29rIGZvciBsaWJmb28tZ2RiLmdkYi4gICovCitAQCAtOTAs NiArOTMsMTgxIEBAIHNob3dfYXV0b19sb2FkX2xvY2FsX2dkYmluaXQgKHN0cnVjdCB1aV8KKyAJ CSAgICB2YWx1ZSk7CisgfQorIAorKy8qIERpcmVjdG9yeSBsaXN0IHNhZmUgdG8gaG9sZCBhdXRv LWxvYWRlZCBmaWxlcy4gIEl0IGlzIG5vdCBjaGVja2VkIGZvcgorKyAgIGFic29sdXRlIHBhdGhz IGJ1dCB0aGV5IGFyZSBzdHJvbmdseSByZWNvbW1lbmRlZC4gIEl0IGlzIGluaXRpYWxpemVkIGJ5 CisrICAgX2luaXRpYWxpemVfYXV0b19sb2FkLiAgKi8KKytzdGF0aWMgY2hhciAqYXV0b19sb2Fk X3NhZmVfcGF0aDsKKysKKysvKiBWZWN0b3Igb2YgZGlyZWN0b3J5IGVsZW1lbnRzIG9mIEFVVE9f TE9BRF9TQUZFX1BBVEggd2l0aCBlYWNoIG9uZSBub3JtYWxpemVkCisrICAgYnkgdGlsZGVfZXhw YW5kIGFuZCBwb3NzaWJseSBlYWNoIGVudHJpZXMgaGFzIGFkZGVkIGl0cyBnZGJfcmVhbHBhdGgK KysgICBjb3VudGVycGFydC4gICovCisrc3RhdGljIFZFQyAoY2hhcl9wdHIpICphdXRvX2xvYWRf c2FmZV9wYXRoX3ZlYzsKKysKKysvKiBVcGRhdGUgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgZnJv bSBjdXJyZW50IEFVVE9fTE9BRF9TQUZFX1BBVEguICAqLworKworK3N0YXRpYyB2b2lkCisrYXV0 b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2b2lkKQorK3sKKysgIFZFQyAoY2hhcl9wdHIp ICpkaXJfdmVjID0gTlVMTDsKKysgIHVuc2lnbmVkIGxlbjsKKysgIGludCBpeDsKKysKKysgIGZy ZWVfY2hhcl9wdHJfdmVjIChhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyk7CisrCisrICBhdXRvX2xv YWRfc2FmZV9wYXRoX3ZlYyA9IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2FkX3Nh ZmVfcGF0aCk7CisrICBsZW4gPSBWRUNfbGVuZ3RoIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVf cGF0aF92ZWMpOworKworKyAgLyogQXBwbHkgdGlsZGVfZXhwYW5kIGFuZCBnZGJfcmVhbHBhdGgg dG8gZWFjaCBBVVRPX0xPQURfU0FGRV9QQVRIX1ZFQworKyAgICAgZWxlbWVudC4gICovCisrICBm b3IgKGl4ID0gMDsgaXggPCBsZW47IGl4KyspCisrICAgIHsKKysgICAgICBjaGFyICpkaXIgPSBW RUNfaW5kZXggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgpOworKyAgICAg IGNoYXIgKmV4cGFuZGVkID0gdGlsZGVfZXhwYW5kIChkaXIpOworKyAgICAgIGNoYXIgKnJlYWxf cGF0aCA9IGdkYl9yZWFscGF0aCAoZXhwYW5kZWQpOworKworKyAgICAgIC8qIEVuc3VyZSB0aGUg Y3VycmVudCBlbnRyeSBpcyBhdCBsZWFzdCB0aWxkZV9leHBhbmQtZWQuICAqLworKyAgICAgIHhm cmVlIChkaXIpOworKyAgICAgIFZFQ19yZXBsYWNlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVf cGF0aF92ZWMsIGl4LCBleHBhbmRlZCk7CisrCisrICAgICAgLyogSWYgZ2RiX3JlYWxwYXRoIHJl dHVybnMgYSBkaWZmZXJlbnQgY29udGVudCwgYXBwZW5kIGl0LiAgKi8KKysgICAgICBpZiAoc3Ry Y21wIChyZWFsX3BhdGgsIGV4cGFuZGVkKSA9PSAwKQorKwl4ZnJlZSAocmVhbF9wYXRoKTsKKysg ICAgICBlbHNlCisrCVZFQ19zYWZlX3B1c2ggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRo X3ZlYywgcmVhbF9wYXRoKTsKKysgICAgfQorK30KKysKKysvKiAic2V0IiBjb21tYW5kIGZvciB0 aGUgYXV0b19sb2FkX3NhZmVfcGF0aCBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysKKytz dGF0aWMgdm9pZAorK3NldF9hdXRvX2xvYWRfc2FmZV9wYXRoIChjaGFyICphcmdzLCBpbnQgZnJv bV90dHksIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKQorK3sKKysgIGF1dG9fbG9hZF9zYWZl X3BhdGhfdmVjX3VwZGF0ZSAoKTsKKyt9CisrCisrLyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBh dXRvX2xvYWRfc2FmZV9wYXRoIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLworKworK3N0YXRp YyB2b2lkCisrc2hvd19hdXRvX2xvYWRfc2FmZV9wYXRoIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwg aW50IGZyb21fdHR5LAorKwkJCSAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNo YXIgKnZhbHVlKQorK3sKKysgIGlmICgqdmFsdWUgPT0gMCkKKysgICAgZnByaW50Zl9maWx0ZXJl ZCAoZmlsZSwgXygiQXV0by1sb2FkIGZpbGVzIGFyZSBzYWZlIHRvIGxvYWQgZnJvbSBhbnkgIgor KwkJCSAgICAgICJkaXJlY3RvcnkuXG4iKSk7CisrICBlbHNlCisrICAgIGZwcmludGZfZmlsdGVy ZWQgKGZpbGUsIF8oIkxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRv ICIKKysJCQkgICAgICAiYXV0by1sb2FkIGZpbGVzIGlzICVzLlxuIiksCisrCQkgICAgICB2YWx1 ZSk7CisrfQorKworKy8qICJhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCIgY29tbWFuZCBmb3IgdGhl IGF1dG9fbG9hZF9zYWZlX3BhdGggY29uZmlndXJhdGlvbgorKyAgIHZhcmlhYmxlLiAgKi8KKysK KytzdGF0aWMgdm9pZAorK2FkZF9hdXRvX2xvYWRfc2FmZV9wYXRoIChjaGFyICphcmdzLCBpbnQg ZnJvbV90dHkpCisreworKyAgY2hhciAqczsKKysKKysgIGlmIChhcmdzID09IE5VTEwgfHwgKmFy Z3MgPT0gMCkKKysgICAgZXJyb3IgKF8oIlwKKytBZGRpbmcgZW1wdHkgZGlyZWN0b3J5IGVsZW1l bnQgZGlzYWJsZXMgdGhlIGF1dG8tbG9hZCBzYWZlLXBhdGggc2VjdXJpdHkuICBcCisrVXNlICdz ZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgaW5zdGVhZCBpZiB5b3UgbWVhbiB0aGF0LiIpKTsKKysK KysgIHMgPSB4c3RycHJpbnRmICgiJXMlYyVzIiwgYXV0b19sb2FkX3NhZmVfcGF0aCwgRElSTkFN RV9TRVBBUkFUT1IsIGFyZ3MpOworKyAgeGZyZWUgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOworKyAg YXV0b19sb2FkX3NhZmVfcGF0aCA9IHM7CisrCisrICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191 cGRhdGUgKCk7CisrfQorKworKy8qIFJldHVybiAxIGlmIEZJTEVOQU1FIGlzIGVxdWFsIHRvIERJ UiBvciBpZiBGSUxFTkFNRSBiZWxvbmdzIHRvIHRoZQorKyAgIHN1YmRpcmVjdG9yeSBESVIuICBS ZXR1cm4gMCBvdGhlcndpc2UuICBnZGJfcmVhbHBhdGggbm9ybWFsaXphdGlvbiBpcyBuZXZlcgor KyAgIGRvbmUgaGVyZS4gICovCisrCisrc3RhdGljIEFUVFJJQlVURV9QVVJFIGludAorK2ZpbGVu YW1lX2lzX2luX2RpciAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmRpcikKKyt7 CisrICBzaXplX3QgZGlyX2xlbiA9IHN0cmxlbiAoZGlyKTsKKysKKysgIHdoaWxlIChkaXJfbGVu ICYmIElTX0RJUl9TRVBBUkFUT1IgKGRpcltkaXJfbGVuIC0gMV0pKQorKyAgICBkaXJfbGVuLS07 CisrCisrICByZXR1cm4gKGZpbGVuYW1lX25jbXAgKGRpciwgZmlsZW5hbWUsIGRpcl9sZW4pID09 IDAKKysJICAmJiAoSVNfRElSX1NFUEFSQVRPUiAoZmlsZW5hbWVbZGlyX2xlbl0pCisrCSAgICAg IHx8IGZpbGVuYW1lW2Rpcl9sZW5dID09ICdcMCcpKTsKKyt9CisrCisrLyogUmV0dXJuIDEgaWYg RklMRU5BTUUgYmVsb25ncyB0byBvbmUgb2YgZGlyZWN0b3J5IGNvbXBvbmVudHMgb2YKKysgICBB VVRPX0xPQURfU0FGRV9QQVRIX1ZFQy4gIFJldHVybiAwIG90aGVyd2lzZS4KKysgICBhdXRvX2xv YWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgaXMgbmV2ZXIgY2FsbGVkLgorKyAgICpGSUxFTkFNRV9S RUFMUCBtYXkgYmUgdXBkYXRlZCBieSBnZGJfcmVhbHBhdGggb2YgRklMRU5BTUUgLSBpdCBoYXMg dG8gYmUKKysgICBmcmVlZCBieSB0aGUgY2FsbGVyLiAgKi8KKysKKytzdGF0aWMgaW50CisrZmls ZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgKGNvbnN0IGNoYXIgKmZpbGVuYW1l LAorKwkJCQkJY2hhciAqKmZpbGVuYW1lX3JlYWxwKQorK3sKKysgIGNoYXIgKmRpcjsKKysgIGlu dCBpeDsKKysKKysgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGlyKTsgKytpeCkKKysgICAgaWYgKCpmaWxlbmFtZV9yZWFs cCA9PSBOVUxMICYmIGZpbGVuYW1lX2lzX2luX2RpciAoZmlsZW5hbWUsIGRpcikpCisrICAgICAg YnJlYWs7CisrICAKKysgIGlmIChkaXIgPT0gTlVMTCkKKysgICAgeworKyAgICAgIGlmICgqZmls ZW5hbWVfcmVhbHAgPT0gTlVMTCkKKysJKmZpbGVuYW1lX3JlYWxwID0gZ2RiX3JlYWxwYXRoIChm aWxlbmFtZSk7CisrCisrICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwg YXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBkaXIpOworKwkgICArK2l4KQorKwlpZiAoZmls ZW5hbWVfaXNfaW5fZGlyICgqZmlsZW5hbWVfcmVhbHAsIGRpcikpCisrCSAgYnJlYWs7CisrICAg IH0KKysKKysgIGlmIChkaXIgIT0gTlVMTCkKKysgICAgcmV0dXJuIDE7CisrCisrICByZXR1cm4g MDsKKyt9CisrCisrLyogUmV0dXJuIDEgaWYgRklMRU5BTUUgaXMgbG9jYXRlZCBpbiBvbmUgb2Yg dGhlIGRpcmVjdG9yaWVzIG9mCisrICAgQVVUT19MT0FEX1NBRkVfUEFUSC4gIE90aGVyd2lzZSBj YWxsIHdhcm5pbmcgYW5kIHJldHVybiAwLiAgRklMRU5BTUUgZG9lcworKyAgIG5vdCBoYXZlIHRv IGJlIGFuIGFic29sdXRlIHBhdGguCisrCisrICAgRXhpc3RlbmNlIG9mIEZJTEVOQU1FIGlzIG5v dCBjaGVja2VkLiAgRnVuY3Rpb24gd2lsbCBzdGlsbCBnaXZlIGEgd2FybmluZworKyAgIGV2ZW4g aWYgdGhlIGNhbGxlciB3b3VsZCBxdWlldGx5IHNraXAgbm9uLWV4aXN0aW5nIGZpbGUgaW4gdW5z YWZlCisrICAgZGlyZWN0b3J5LiAgKi8KKysKKytpbnQKKytmaWxlX2lzX2F1dG9fbG9hZF9zYWZl IChjb25zdCBjaGFyICpmaWxlbmFtZSkKKyt7CisrICBjaGFyICpmaWxlbmFtZV9yZWFsID0gTlVM TDsKKysgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOworKworKyAgYmFja190byA9IG1ha2VfY2xl YW51cCAoZnJlZV9jdXJyZW50X2NvbnRlbnRzLCAmZmlsZW5hbWVfcmVhbCk7CisrCisrICBpZiAo ZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgKGZpbGVuYW1lLCAmZmlsZW5h bWVfcmVhbCkpCisrICAgIHsKKysgICAgICBkb19jbGVhbnVwcyAoYmFja190byk7CisrICAgICAg cmV0dXJuIDE7CisrICAgIH0KKysKKysgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAo KTsKKysgIGlmIChmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoZmlsZW5h bWUsICZmaWxlbmFtZV9yZWFsKSkKKysgICAgeworKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3Rv KTsKKysgICAgICByZXR1cm4gMTsKKysgICAgfQorKworKyAgd2FybmluZyAoXygiRmlsZSBcIiVz XCIgYXV0by1sb2FkaW5nIGhhcyBiZWVuIGRlY2xpbmVkIGJ5IHlvdXIgIgorKwkgICAgICJgYXV0 by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvIFwiJXNcIi4iKSwKKysJICAgZmlsZW5hbWVfcmVhbCwg YXV0b19sb2FkX3NhZmVfcGF0aCk7CisrCisrICBkb19jbGVhbnVwcyAoYmFja190byk7CisrICBy ZXR1cm4gMDsKKyt9CisrCisgLyogRGVmaW5pdGlvbiBvZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIEdE QiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzLiAgKi8KKyAKKyBzdGF0aWMgY29uc3Qgc3Ry dWN0IHNjcmlwdF9sYW5ndWFnZSBzY3JpcHRfbGFuZ3VhZ2VfZ2RiCitAQCAtOTksMTMgKzI3Nywy MCBAQCBzdGF0aWMgdm9pZAorIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKyAJCQkgICAgICAgY29uc3QgY2hhciAqZmls ZW5hbWUpCisgeworKyAgaW50IGlzX3NhZmU7CisgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9p bmZvICpwc3BhY2VfaW5mbzsKKyAgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7Cisg CisrICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZmlsZW5hbWUpOworKworICAg LyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxv YWQgZ2RiLXNjcmlwdHMiCisgICAgICBjYW4gcHJpbnQgaXQuICAqLworICAgcHNwYWNlX2luZm8g PSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1f c3BhY2UpOworLSAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGVuYW1lLCBmaWxl bmFtZSwgJnNjcmlwdF9sYW5ndWFnZV9nZGIpOworKyAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNl X2luZm8sIGlzX3NhZmUsIGZpbGVuYW1lLCBmaWxlbmFtZSwKKysJCSAgICAmc2NyaXB0X2xhbmd1 YWdlX2dkYik7CisrCisrICBpZiAoIWlzX3NhZmUpCisrICAgIHJldHVybjsKKyAKKyAgIFRSWV9D QVRDSCAoZSwgUkVUVVJOX01BU0tfQUxMKQorICAgICB7CitAQCAtMTQwLDYgKzMyNSw5IEBAIHN0 cnVjdCBsb2FkZWRfc2NyaXB0CisgICAgICBpbmFjY2Vzc2libGUpLiAgKi8KKyAgIGNvbnN0IGNo YXIgKmZ1bGxfcGF0aDsKKyAKKysgIC8qIE5vbi16ZXJvIGlmIHRoaXMgc2NyaXB0IGhhcyBiZWVu IGxvYWRlZC4gICovCisrICBpbnQgbG9hZGVkOworKworICAgY29uc3Qgc3RydWN0IHNjcmlwdF9s YW5ndWFnZSAqbGFuZ3VhZ2U7CisgfTsKKyAKK0BAIC0yMzIsMTIgKzQyMCwxMyBAQCBnZXRfYXV0 b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzCisgICByZXR1cm4gaW5mbzsKKyB9Cisg CistLyogQWRkIHNjcmlwdCBOQU1FIGluIExBTkdVQUdFIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNF X0lORk8uCistICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQu ICBUaGUgcmVzdWx0IGlzCisrLyogQWRkIHNjcmlwdCBOQU1FIGluIExBTkdVQUdFIHRvIGhhc2gg dGFibGUgb2YgUFNQQUNFX0lORk8uICBMT0FERUQgMSBpZiB0aGUKKysgICBzY3JpcHQgaGFzIGJl ZW4gKGlzIGdvaW5nIHRvKSBiZSBsb2FkZWQsIDAgb3RoZXJ3aXNlIChzdWNoIGFzIGlmIGl0IGhh cyBub3QKKysgICBiZWVuIGZvdW5kKS4gIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQg d2Fzbid0IGZvdW5kLiAgVGhlIHJlc3VsdCBpcworICAgIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMg YWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCisgCisgaW50CistbWF5YmVfYWRkX3Njcmlw dCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sCisrbWF5YmVfYWRk X3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sIGludCBs b2FkZWQsCisgCQkgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCwKKyAJ CSAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpCisgeworQEAgLTI3MSw2 ICs0NjAsNyBAQCBtYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjCisgCX0K KyAgICAgICBlbHNlCisgCSgqc2xvdCktPmZ1bGxfcGF0aCA9IE5VTEw7CisrICAgICAgKCpzbG90 KS0+bG9hZGVkID0gbG9hZGVkOworICAgICAgICgqc2xvdCktPmxhbmd1YWdlID0gbGFuZ3VhZ2U7 CisgICAgIH0KKyAKK0BAIC00MzIsNyArNjIyLDcgQEAgcHJpbnRfc2NyaXB0IChzdHJ1Y3QgbG9h ZGVkX3NjcmlwdCAqc2NyaQorIAorICAgY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxl X2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOworIAorLSAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlv dXQsICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxfcGF0aCA/ICJZZXMiIDogIk1pc3NpbmciKTsKKysg IHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAibG9hZGVkIiwgc2NyaXB0LT5sb2FkZWQgPyAi WWVzIiA6ICJObyIpOworICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJzY3JpcHQiLCBz Y3JpcHQtPm5hbWUpOworICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKKyAKK0BAIC03MTgs NiArOTA4LDggQEAgdm9pZCBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpOworIHZvaWQKKyBf aW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpCisgeworKyAgc3RydWN0IGNtZF9saXN0X2VsZW1l bnQgKmNtZDsKKysKKyAgIGF1dG9fbG9hZF9wc3BhY2VfZGF0YQorICAgICA9IHJlZ2lzdGVyX3By b2dyYW1fc3BhY2VfZGF0YV93aXRoX2NsZWFudXAgKGF1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVh bnVwKTsKKyAKK0BAIC03NTcsNCArOTQ5LDMwIEBAIFRoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkg aW1wbGljYXRpb25zIGYKKyAJICAgXygiUHJpbnQgd2hldGhlciBjdXJyZW50IGRpcmVjdG9yeSAu Z2RiaW5pdCBmaWxlIGhhcyBiZWVuIGxvYWRlZC5cblwKKyBVc2FnZTogaW5mbyBhdXRvLWxvYWQg bG9jYWwtZ2RiaW5pdCIpLAorIAkgICBhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7Cisr CisrICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0cmR1cCAoREVGQVVMVF9BVVRPX0xPQURfU0FG RV9QQVRIKTsKKysgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKKysgIGFkZF9z ZXRzaG93X29wdGlvbmFsX2ZpbGVuYW1lX2NtZCAoInNhZmUtcGF0aCIsIGNsYXNzX3N1cHBvcnQs CisrCQkJCSAgICAgJmF1dG9fbG9hZF9zYWZlX3BhdGgsIF8oIlwKKytTZXQgdGhlIGxpc3Qgb2Yg ZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcy4iKSwg XygiXAorK1Nob3cgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZl IHRvIGF1dG8tbG9hZCBmaWxlcy4iKSwgXygiXAorK1ZhcmlvdXMgZmlsZXMgbG9hZGVkIGF1dG9t YXRpY2FsbHkgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMgbXVzdFxuXAorK2Jl IGxvY2F0ZWQgaW4gb25lIG9mIHRoZSBkaXJlY3RvcmllcyBsaXN0ZWQgYnkgdGhpcyBvcHRpb24u ICBXYXJuaW5nIHdpbGwgYmVcblwKKytwcmludGVkIGFuZCBmaWxlIHdpbGwgbm90IGJlIHVzZWQg b3RoZXJ3aXNlLiAgVXNlIGVtcHR5IHN0cmluZyAob3IgZXZlblxuXAorK2VtcHR5IGRpcmVjdG9y eSBlbnRyeSkgdG8gYWxsb3cgYW55IGZpbGUgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAuLi4nIG9w dGlvbnMuXG5cCisrVGhpcyBvcHRpb24gaXMgaWdub3JlZCBmb3IgdGhlIGtpbmRzIG9mIGZpbGVz IGhhdmluZyAnc2V0IGF1dG8tbG9hZCAuLi4gb2ZmJy5cblwKKytUaGlzIG9wdGlvbnMgaGFzIHNl Y3VyaXR5IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKKysJCQkJICAg ICBzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCwKKysJCQkJICAgICBzaG93X2F1dG9fbG9hZF9zYWZl X3BhdGgsCisrCQkJCSAgICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKKysJCQkJICAg ICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7CisrCisrICBjbWQgPSBhZGRfY21kICgi YWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgiLCBjbGFzc19zdXBwb3J0LAorKwkJIGFkZF9hdXRvX2xv YWRfc2FmZV9wYXRoLAorKwkJIF8oIkFkZCBlbnRyaWVzIHRvIHRoZSBsaXN0IG9mIGRpcmVjdG9y aWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSAiCisrCQkgICAidG8gYXV0by1sb2FkIGZpbGVzLlxu XAorK1NlZSB0aGUgY29tbWFuZHMgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoJyBhbmQgJ3Nob3cg YXV0by1sb2FkIHNhZmUtcGF0aCcgdG9cblwKKythY2Nlc3MgdGhlIGN1cnJlbnQgZnVsbCBsaXN0 IHNldHRpbmcuIiksCisrCQkgJmNtZGxpc3QpOworKyAgc2V0X2NtZF9jb21wbGV0ZXIgKGNtZCwg ZmlsZW5hbWVfY29tcGxldGVyKTsKKyB9CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv YXV0by1sb2FkLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0OToyMS42MDc3 MzYwMjAgKzAyMDAKK0BAIC0zOSw3ICszOSw4IEBAIGV4dGVybiBpbnQgYXV0b19sb2FkX2xvY2Fs X2dkYmluaXRfbG9hZGUKKyBleHRlcm4gc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCisg ICBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9z cGFjZSAqcHNwYWNlKTsKKyBleHRlcm4gaW50IG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRv X2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLAorLQkJCSAgICAgY29uc3QgY2hhciAqbmFt ZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoLAorKwkJCSAgICAgaW50IGxvYWRlZCwgY29uc3QgY2hh ciAqbmFtZSwKKysJCQkgICAgIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCwKKyAJCQkgICAgIGNvbnN0 IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKTsKKyBleHRlcm4gdm9pZCBhdXRvX2xv YWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAkJCQkgICAgICBj b25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7CitAQCAtNTQsNCArNTUsNiBA QCBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvCisgZXh0ZXJuIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKHZvaWQpOwor IGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9pbmZvX2NtZGxpc3Rf Z2V0ICh2b2lkKTsKKyAKKytleHRlcm4gaW50IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0 IGNoYXIgKmZpbGVuYW1lKTsKKysKKyAjZW5kaWYgLyogQVVUT19MT0FEX0ggKi8KK0luZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcuaW4KKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40 LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZy5pbgkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy5pbgkyMDEyLTA0 LTE4IDAwOjQ5OjIxLjYwNzczNjAyMCArMDIwMAorQEAgLTQzLDYgKzQzLDkgQEAKKyAgICBtb3Zl ZC4gKi8KKyAjdW5kZWYgREVCVUdESVJfUkVMT0NBVEFCTEUKKyAKKysvKiBEaXJlY3RvcmllcyBz YWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuICovCisrI3VuZGVmIERFRkFVTFRfQVVUT19M T0FEX1NBRkVfUEFUSAorKworIC8qIERlZmluZSB0byBCRkQncyBkZWZhdWx0IGFyY2hpdGVjdHVy ZS4gKi8KKyAjdW5kZWYgREVGQVVMVF9CRkRfQVJDSAorIAorSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL2NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6NDk6MjEu NjExNzM2MDEwICswMjAwCitAQCAtOTU1LDYgKzk1NSw3IEBAIHdpdGhfc2VwYXJhdGVfZGVidWdf ZGlyCisgd2l0aF9nZGJfZGF0YWRpcgorIHdpdGhfcmVsb2NhdGVkX3NvdXJjZXMKKyB3aXRoX3Jw bQorK3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aAorIGVuYWJsZV90YXJnZXRzCisgZW5hYmxlXzY0 X2JpdF9iZmQKKyBlbmFibGVfZ2RiY2xpCitAQCAtMTY2Niw2ICsxNjY3LDEwIEBAIE9wdGlvbmFs IFBhY2thZ2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSByZWxv Y2F0ZSB0aGlzIHBhdGggZm9yIHNvdXJjZSBmaWxlcworICAgLS13aXRoLXJwbSAgICAgICAgICAg ICAgcXVlcnkgcnBtIGRhdGFiYXNlIGZvciBtaXNzaW5nIGRlYnVnaW5mb3MgKHllcy9ubywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRlZi4gYXV0bz1saWJycG0uc28pCisrICAtLXdpdGgt YXV0by1sb2FkLXNhZmUtcGF0aD1QQVRICisrICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJl Y3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMKKysgIC0td2l0aG91dC1hdXRv LWxvYWQtc2FmZS1wYXRoCisrICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJp Y3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zCisgICAtLXdpdGgtbGlidW53aW5kICAgICAg ICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2luZGluZyBzdXBwb3J0CisgICAtLXdpdGgtY3Vyc2Vz ICAgICAgICAgICB1c2UgdGhlIGN1cnNlcyBsaWJyYXJ5IGluc3RlYWQgb2YgdGhlIHRlcm1jYXAK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkKK0BAIC04NDc3LDYgKzg0ODIsMzIg QEAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJFJQTV9QS0dfRVJSTworICAgZmkKKyBmaQor IAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y IGRlZmF1bHQgYXV0by1sb2FkIHNhZmUtcGF0aCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcg Zm9yIGRlZmF1bHQgYXV0by1sb2FkIHNhZmUtcGF0aC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sg d2hldGhlciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAi JHt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZh bD0kd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoOyBpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2Fm ZV9wYXRoIiA9ICJubyI7IHRoZW4KKysgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiIKKysg ZmkKKytlbHNlCisrICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgiCisrZmkKKysK KysKKysgIHRlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0iJGFjX2RlZmF1bHRfcHJl Zml4IgorKyAgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtw cmVmaXh9JworKyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICR3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGhgCisrICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8gJGFjX2RlZmluZV9kaXJgCisrCisr Y2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZpbmUgREVGQVVMVF9BVVRPX0xPQURfU0FG RV9QQVRIICIkYWNfZGVmaW5lX2RpciIKKytfQUNFT0YKKysKKysKKyt7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0 aCIgPiY1CisrJGFzX2VjaG8gIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID4mNjsgfQorKwor IAorIAorIHN1YmRpcnM9IiRzdWJkaXJzIHRlc3RzdWl0ZSIKK0luZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIw MTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA0LTE4 IDAwOjQ5OjIxLjYxMTczNjAxMCArMDIwMAorQEAgLTMzOSw2ICszMzksMTggQEAgZXh0ZXJuIHJw bWRiTWF0Y2hJdGVyYXRvciBycG10c0luaXRJdGVyYQorICAgZmkKKyBmaQorICAKKytBQ19NU0df Q0hFQ0tJTkcoW2ZvciBkZWZhdWx0IGF1dG8tbG9hZCBzYWZlLXBhdGhdKQorK0FDX0FSR19XSVRI KGF1dG8tbG9hZC1zYWZlLXBhdGgsCisrQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hdXRvLWxvYWQt c2FmZS1wYXRoPVBBVEhdLCBbZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZp bGVzXSkKKytBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGhdLCBb ZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0aW9uc10pLAorK1tpZiB0ZXN0 ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KKysgICB3aXRoX2F1dG9f bG9hZF9zYWZlX3BhdGg9IiIKKysgZmldLAorK1t3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRw cmVmaXgiXSkKKytBQ19ERUZJTkVfRElSKERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCwgd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoLAorKwkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xk IGF1dG8tbG9hZGVkIGZpbGVzLl0pCisrQUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0b19sb2FkX3Nh ZmVfcGF0aF0pCisrCisgQUNfQ09ORklHX1NVQkRJUlModGVzdHN1aXRlKQorIAorICMgQ2hlY2sg d2hldGhlciB0byBzdXBwb3J0IGFsdGVybmF0aXZlIHRhcmdldCBjb25maWd1cmF0aW9ucworSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDEy LTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDQtMTggMDA6NDk6MjEuNjEyNzM2MDA3ICswMjAw CitAQCAtODY4LDcgKzg2OCwxMSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyXzEgKHN0 cnVjdCBvCisgICAvKiBUaGlzIHNob3VsZCBhdCBtaW5pbXVtIGhpdCB0aGUgZmlyc3QgY2hhcmFj dGVyLiAgKi8KKyAgIGdkYl9hc3NlcnQgKGNwICE9IE5VTEwpOworICAgc3RyY3B5IChjcCArIDEs IExJQlRIUkVBRF9EQl9TTyk7CistICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgp OworKworKyAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRoKSkKKysgICAgcmVzdWx0 ID0gMDsKKysgIGVsc2UKKysgICAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsK KyAKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyAgIHJldHVybiByZXN1bHQ7CitAQCAtOTM0 LDcgKzkzOCwxMSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIgKGNvbnN0IGNoYXIKKyAg IG1lbWNweSAocGF0aCwgZGlyLCBkaXJfbGVuKTsKKyAgIHBhdGhbZGlyX2xlbl0gPSAnLyc7Cisg ICBzdHJjcHkgKHBhdGggKyBkaXJfbGVuICsgMSwgTElCVEhSRUFEX0RCX1NPKTsKKy0gIHJlc3Vs dCA9IHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCk7CisrCisrICBpZiAoIWZpbGVfaXNfYXV0b19s b2FkX3NhZmUgKHBhdGgpKQorKyAgICByZXN1bHQgPSAwOworKyAgZWxzZQorKyAgICByZXN1bHQg PSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOworIAorICAgZG9fY2xlYW51cHMgKGNsZWFudXAp OworICAgcmV0dXJuIHJlc3VsdDsKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWlu LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwky MDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYxMjczNjAwNyArMDIwMAorQEAgLTEw MjYsNyArMTAyNiw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICAgIHsKKyAgICAg ICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSA9IGdkYl9yZWFscGF0aCAobG9jYWxf Z2RiaW5pdCk7CisgCistICAgICAgaWYgKCFpbmhpYml0X2dkYmluaXQgJiYgYXV0b19sb2FkX2xv Y2FsX2dkYmluaXQpCisrICAgICAgaWYgKCFpbmhpYml0X2dkYmluaXQgJiYgYXV0b19sb2FkX2xv Y2FsX2dkYmluaXQKKysJICAmJiBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChsb2NhbF9nZGJpbml0 KSkKKyAJeworIAkgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCA9IDE7CisgCitJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0x OCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9k b2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0OToyMS42MjA3MzU5ODcgKzAyMDAKK0BAIC0y MDgwMSw2ICsyMDgwMSw4IEBAIGdkYi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIGNhbm5lZCBz ZXEKKyBsaWJ0aHJlYWQtZGI6ICBBdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGli dGhyZWFkX2RiIGlzIG9uLgorIGxvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmlu aXQgc2NyaXB0IGZyb20gY3VycmVudCBkaXJlY3RvcnkgaXMgb24uCisgcHl0aG9uLXNjcmlwdHM6 ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMgaXMgb24uCisrc2FmZS1wYXRoOiAgTGlz dCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVz CisrICAgICAgICAgICAgaXMgL3Vzci9sb2NhbC4KKyBAZW5kIHNtYWxsZXhhbXBsZQorIAorIEBh bmNob3J7aW5mbyBhdXRvLWxvYWR9CitAQCAtMjA4NzIsMTIgKzIwODc0LDE5IEBAIFRoZXNlIGFy ZSBAdmFsdWV7R0RCTn0gY29udHJvbCBjb21tYW5kcworIEB0YWIgU2hvdyBzZXR0aW5nIG9mIHRo cmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KKyBAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBsaWJ0 aHJlYWQtZGJ9LgorIEB0YWIgU2hvdyBzdGF0ZSBvZiB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnku CisrQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9LgorK0B0YWIgQ29udHJvbCBk aXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMgbG9hZGluZy4KKytAaXRlbSBAeHJlZntz aG93IGF1dG8tbG9hZCBzYWZlLXBhdGh9LgorK0B0YWIgU2hvdyBkaXJlY3RvcmllcyB0cnVzdGVk IGZvciBhdXRvbWF0aWMgbG9hZGluZy4KKytAaXRlbSBAeHJlZnthZGQtYXV0by1sb2FkLXNhZmUt cGF0aH0uCisrQHRhYiBBZGQgZGlyZWN0b3J5IHRydXN0ZWQgZm9yIGF1dG9tYXRpYyBsb2FkaW5n LgorIEBlbmQgbXVsdGl0YWJsZQorIAorIEBtZW51CisgKiBJbml0IEZpbGUgaW4gdGhlIEN1cnJl bnQgRGlyZWN0b3J5OjogQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5p dH0KKyAqIGxpYnRocmVhZF9kYi5zby4xIGZpbGU6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hv dy9pbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9CisgKiBvYmpmaWxlLWdkYi5nZGIgZmlsZTo6 ICAgICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdH0K KysqIEF1dG8tbG9hZGluZyBzYWZlIHBhdGg6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9p bmZvIGF1dG8tbG9hZCBzYWZlLXBhdGh9CisgQHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30uCisg QGVuZCBtZW51CisgCitAQCAtMjA5NzgsNiArMjA5ODcsMTA0IEBAIGF1dG8tbG9hZGVkLgorIElm IEB2YXJ7cmVnZXhwfSBpcyBzdXBwbGllZCBvbmx5IGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFu ZHMgc2NyaXB0cyB3aXRoCisgbWF0Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQuCisgCisrQG5vZGUg QXV0by1sb2FkaW5nIHNhZmUgcGF0aAorK0BzdWJzZWN0aW9uIFNlY3VyaXR5IHJlc3RyaWN0aW9u IGZvciBhdXRvLWxvYWRpbmcKKytAY2luZGV4IGF1dG8tbG9hZGluZyBzYWZlLXBhdGgKKysKKytB cyB0aGUgZmlsZXMgb2YgaW5mZXJpb3IgY2FuIGNvbWUgZnJvbSB1bnRydXN0ZWQgc291cmNlIChz dWNoIGFzIHN1Ym1pdHRlZCBieQorK2FuIGFwcGxpY2F0aW9uIHVzZXIpIEB2YWx1ZXtHREJOfSBk b2VzIG5vdCBhbHdheXMgbG9hZCBhbnkgZmlsZXMgYXV0b21hdGljYWxseS4KKytAdmFsdWV7R0RC Tn0gcHJvdmlkZXMgdGhlIEBzYW1we3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofSBzZXR0aW5nIHRv IGxpc3QKKytkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBsb2FkaW5nIGZpbGVzIG5vdCBleHBsaWNp dGx5IHJlcXVlc3RlZCBieSB1c2VyLgorKworK0lmIHRoZSBwYXRoIGlzIG5vdCBzZXQgcHJvcGVy bHkgeW91IHdpbGwgc2VlIGEgd2FybmluZyBhbmQgdGhlIGZpbGUgd2lsbCBub3QKKytnZXQgbG9h ZGVkOgorKworK0BzbWFsbGV4YW1wbGUKKyskIC4vZ2RiIC1xIC4vZ2RiCisrUmVhZGluZyBzeW1i b2xzIGZyb20gL2hvbWUvdXNlci9nZGIvZ2RiLi4uZG9uZS4KKyt3YXJuaW5nOiBGaWxlICIvaG9t ZS91c2VyL2dkYi9nZGItZ2RiLmdkYiIgYXV0by1sb2FkaW5nIGhhcyBiZWVuCisrICAgICAgICAg ZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIvdXNyL2xvY2Fs Ii4KKyt3YXJuaW5nOiBGaWxlICIvaG9tZS91c2VyL2dkYi9nZGItZ2RiLnB5IiBhdXRvLWxvYWRp bmcgaGFzIGJlZW4KKysgICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1w YXRoJyBzZXQgdG8gIi91c3IvbG9jYWwiLgorK0BlbmQgc21hbGxleGFtcGxlCisrCisrVGhlIGxp c3Qgb2YgdHJ1c3RlZCBkaXJlY3RvcmllcyBpcyBjb250cm9sbGVkIGJ5IHRoZSBmb2xsb3dpbmcg Y29tbWFuZHM6CisrCisrQHRhYmxlIEBjb2RlCisrQGFuY2hvcntzZXQgYXV0by1sb2FkIHNhZmUt cGF0aH0KKytAa2luZGV4IHNldCBhdXRvLWxvYWQgc2FmZS1wYXRoCisrQGl0ZW0gc2V0IGF1dG8t bG9hZCBzYWZlLXBhdGggQHZhcntkaXJlY3Rvcmllc30KKytTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0 b3JpZXMgKGFuZCB0aGVpciBzdWJkaXJlY3RvcmllcykgdHJ1c3RlZCBmb3IgYXV0b21hdGljCisr bG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBZb3UgY2FuIGFsc28gZW50ZXIgYSBz cGVjaWZpYyB0cnVzdGVkIGZpbGUuCisrVGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdXNlcyBkaXJl Y3Rvcnkgc2VwYXJhdG9yIChAc2FtcHs6fSBvbiBHTlUgYW5kIFVuaXgKKytzeXN0ZW1zLCBAc2Ft cHs7fSBvbiBNUy1XaW5kb3dzIGFuZCBNUy1ET1MpIHRvIHNlcGFyYXRlIGRpcmVjdG9yaWVzLCBz aW1pbGFybHkKKyt0byB0aGUgQGVudntQQVRIfSBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKysKKytA YW5jaG9ye3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0KKytAa2luZGV4IHNob3cgYXV0by1sb2Fk IHNhZmUtcGF0aAorK0BpdGVtIHNob3cgYXV0by1sb2FkIHNhZmUtcGF0aAorK1Nob3cgdGhlIGxp c3Qgb2YgZGlyZWN0b3JpZXMgdHJ1c3RlZCBmb3IgYXV0b21hdGljIGxvYWRpbmcgYW5kIGV4ZWN1 dGlvbiBvZgorK3NjcmlwdHMuCisrCisrQGFuY2hvcnthZGQtYXV0by1sb2FkLXNhZmUtcGF0aH0K KytAa2luZGV4IGFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoCisrQGl0ZW0gYWRkLWF1dG8tbG9hZC1z YWZlLXBhdGgKKytBZGQgYW4gZW50cnkgKG9yIGxpc3Qgb2YgZW50cmllcykgdGhlIGxpc3Qgb2Yg ZGlyZWN0b3JpZXMgdHJ1c3RlZCBmb3IgYXV0b21hdGljCisrbG9hZGluZyBhbmQgZXhlY3V0aW9u IG9mIHNjcmlwdHMuICBNdWx0aXBsZSBlbnRyaWVzIG1heSBiZSBkZWxpbWl0ZWQgYnkgdGhlCisr aG9zdCBwbGF0Zm9ybSBkaXJlY3Rvcnkgc2VwYXJhdG9yIGluIHVzZS4KKytAZW5kIHRhYmxlCisr CisrU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIGFuIGVtcHR5IHN0cmluZyBkaXNhYmxlcyB0aGlz IHNlY3VyaXR5IHByb3RlY3Rpb24uCisrVGhpcyB2YXJpYWJsZSBpcyBzdXBwb3NlZCB0byBiZSBz ZXQgdG8gdGhlIHN5c3RlbSBkaXJlY3RvcmllcyB3cml0YWJsZSBieSB0aGUKKytzeXN0ZW0gc3Vw ZXJ1c2VyIG9ubHkuICBVc2VycyBjYW4gYWRkIHRoZWlyIHNvdXJjZSBkaXJlY3RvcmllcyBpbiBp bml0IGZpbGVzIGluCisrdGhlaXIgaG9tZSBkaXJlY3RvcmllcyAoQHB4cmVme0hvbWUgRGlyZWN0 b3J5IEluaXQgRmlsZX0pLiAgU2VlIGFsc28gZGVwcmVjYXRlZAorK2luaXQgZmlsZSBpbiB0aGUg Y3VycmVudCBkaXJlY3RvcnkKKysoQHB4cmVme0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJl Y3RvcnkgZHVyaW5nIFN0YXJ0dXB9KS4KKysKKytUbyBmb3JjZSBAdmFsdWV7R0RCTn0gdG8gbG9h ZCB0aGUgZmlsZXMgaXQgZGVjbGluZWQgdG8gbG9hZCBpbiB0aGUgcHJldmlvdXMKKytleGFtcGxl LCB5b3UgY291bGQgdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHdheXM6CisrCisrQGl0ZW1pemUg QGJ1bGxldAorK0BpdGVtIH4vLmdkYmluaXQ6IGFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIH4vc3Jj L2dkYgorK1NwZWNpZnkgdGhpcyB0cnVzdGVkIGRpcmVjdG9yeSAob3IgYSBmaWxlKSBhcyBhZGRp dGlvbmFsIGNvbXBvbmVudCBvZiB0aGUgbGlzdC4KKytZb3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28g YW55IGV4aXN0aW5nIGRpcmVjdG9yaWVzIGRpc3BsYXllZCBieQorK2J5IEBzYW1we3Nob3cgYXV0 by1sb2FkIHNhZmUtcGF0aH0gKHN1Y2ggYXMgQHNhbXB7L3VzcjovYmlufSBpbiB0aGlzIGV4YW1w bGUpLgorKworK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91 c3I6L2Jpbjp+L3NyYy9nZGIiIFtAZG90c3t9XX0KKytTcGVjaWZ5IHRoaXMgZGlyZWN0b3J5IGFz IGluIHRoZSBwcmV2aW91cyBjYXNlIGJ1dCBqdXN0IGZvciBhIHNpbmdsZQorK0B2YWx1ZXtHREJO fSBzZXNzaW9uLgorKworK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1w YXRoIiBbQGRvdHN7fV19CisrRGlzYWJsZSBhdXRvLWxvYWRpbmcgc2FmZXR5IGZvciBhIHNpbmds ZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KKytUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3Ug ZGVidWcgZHVyaW5nIHRoaXMgQHZhbHVle0dEQk59IHNlc3Npb24gd2lsbCBjb21lCisrZnJvbSB0 cnVzdGVkIHNvdXJjZXMuCisrCisrQGl0ZW0gQGtiZHsuL2NvbmZpZ3VyZSAtLXdpdGhvdXQtYXV0 by1sb2FkLXNhZmUtcGF0aH0KKytEdXJpbmcgY29tcGlsYXRpb24gb2YgQHZhbHVle0dEQk59IHlv dSBtYXkgZGlzYWJsZSBhbnkgYXV0by1sb2FkaW5nIHNhZmV0eS4KKytUaGlzIGFzc3VtZXMgYWxs IHRoZSBmaWxlcyB5b3Ugd2lsbCBldmVyIGRlYnVnIHdpdGggdGhpcyBAdmFsdWV7R0RCTn0gY29t ZSBmcm9tCisrdHJ1c3RlZCBzb3VyY2VzLgorK0BlbmQgaXRlbWl6ZQorKworK09uIHRoZSBvdGhl ciBoYW5kIHlvdSBjYW4gYWxzbyBleHBsaWNpdGx5IGZvcmJpZCBhdXRvbWF0aWMgZmlsZXMgbG9h ZGluZyB3aGljaAorK2Fsc28gc3VwcHJlc3NlcyBhbnkgc3VjaCB3YXJuaW5nIG1lc3NhZ2VzOgor KworK0BpdGVtaXplIEBidWxsZXQKKytAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2Fk IG5vIiBbQGRvdHN7fV19CisrWW91IGNhbiB1c2UgQHZhbHVle0dEQk59IGNvbW1hbmQtbGluZSBv cHRpb24gZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgorKworK0BpdGVtIEBzYW1w e34vLmdkYmluaXR9OiBAc2FtcHtzZXQgYXV0by1sb2FkIG5vfQorK0Rpc2FibGUgYXV0by1sb2Fk aW5nIGdsb2JhbGx5IGZvciB0aGUgdXNlcgorKyhAcHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBG aWxlfSkuICBXaGlsZSBpdCBpcyBpbXByb2JhYmxlLCB5b3UgY291bGQgYWxzbworK3VzZSBzeXN0 ZW0gaW5pdCBmaWxlIGluc3RlYWQgKEBweHJlZntTeXN0ZW0td2lkZSBjb25maWd1cmF0aW9ufSku CisrQGVuZCBpdGVtaXplCisrCisrVGhpcyBzZXR0aW5nIGFwcGxpZXMgdG8gdGhlIGZpbGUgbmFt ZXMgYXMgZW50ZXJlZCBieSB1c2VyLiAgSWYgbm8gZW50cnkgbWF0Y2hlcworK0B2YWx1ZXtHREJO fSB0cmllcyBhcyBhIGxhc3QgcmVzb3J0IHRvIGFsc28gcmVzb2x2ZSBhbGwgdGhlIGZpbGUgbmFt ZXMgaW50bworK3RoZWlyIGNhbm9uaWNhbCBmb3JtICh0eXBpY2FsbHkgcmVzb2x2aW5nIHN5bWJv bGljIGxpbmtzKSBhbmQgY29tcGFyZSB0aGUKKytlbnRyaWVzIGFnYWluLiAgQHZhbHVle0dEQk59 IGFscmVhZHkgY2Fub25pY2FsaXplcyBtb3N0IG9mIHRoZSBmaWxlbmFtZXMgb24gaXRzCisrb3du IGJlZm9yZSBzdGFydGluZyB0aGUgY29tcGFyaXNvbiBzbyBhIGNhbm9uaWNhbCBmb3JtIG9mIGRp cmVjdG9yaWVzIGlzCisrcmVjb21tZW5kZWQgdG8gYmUgZW50ZXJlZC4KKysKKyBAbm9kZSBNZXNz YWdlcy9XYXJuaW5ncworIEBzZWN0aW9uIE9wdGlvbmFsIFdhcm5pbmdzIGFuZCBNZXNzYWdlcwor IAorQEAgLTI0OTU1LDEwICsyNTA2MiwxMCBAQCBFeGFtcGxlOgorIAorIEBzbWFsbGV4YW1wbGUK KyAoZ2RiKSBpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cworLUxvYWRlZCAgU2NyaXB0Cist WWVzICAgICBweS1zZWN0aW9uLXNjcmlwdC5weQorLSAgICAgICAgZnVsbCBuYW1lOiAvdG1wL3B5 LXNlY3Rpb24tc2NyaXB0LnB5CistTWlzc2luZyBteS1mb28tcHJldHR5LXByaW50ZXJzLnB5Cisr TG9hZGVkIFNjcmlwdAorK1llcyAgICBweS1zZWN0aW9uLXNjcmlwdC5weQorKyAgICAgICBmdWxs IG5hbWU6IC90bXAvcHktc2VjdGlvbi1zY3JpcHQucHkKKytObyAgICAgbXktZm9vLXByZXR0eS1w cmludGVycy5weQorIEBlbmQgc21hbGxleGFtcGxlCisgQGVuZCB0YWJsZQorIAorSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIw MTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDk6MjEuNjIxNzM1OTg1 ICswMjAwCitAQCAtNzIsMTQgKzcyLDE5IEBAIHN0YXRpYyB2b2lkCisgZ2RicHlfbG9hZF9hdXRv X3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUs CisgCQkJCSAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkKKyB7CisrICBpbnQgaXNfc2FmZTsKKyAg IHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworIAorKyAgaXNfc2Fm ZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1lKTsKKysKKyAgIC8qIEFkZCB0aGlz IHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkIHB5dGhvbi1z Y3JpcHRzIgorICAgICAgY2FuIHByaW50IGl0LiAgKi8KKyAgIHBzcGFjZV9pbmZvID0gZ2V0X2F1 dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsK Ky0gIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlbmFtZSwgZmlsZW5hbWUsICZz Y3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKKysgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZv LCBpc19zYWZlLCBmaWxlbmFtZSwgZmlsZW5hbWUsCisrCQkgICAgJnNjcmlwdF9sYW5ndWFnZV9w eXRob24pOworIAorLSAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUs IGZpbGUsIGZpbGVuYW1lKTsKKysgIGlmIChpc19zYWZlKQorKyAgICBzb3VyY2VfcHl0aG9uX3Nj cmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZmlsZSwgZmlsZW5hbWUpOworIH0KKyAKKyAvKiBM b2FkIHNjcmlwdHMgc3BlY2lmaWVkIGluIE9CSkZJTEUuCitAQCAtMTQ3LDYgKzE1Miw5IEBAIHNv dXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKKyAJeworIAkgIG1ha2VfY2xl YW51cF9mY2xvc2UgKHN0cmVhbSk7CisgCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRo KTsKKysKKysJICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZ1bGxfcGF0aCkpCisrCSAg ICBvcGVuZWQgPSAwOworIAl9CisgICAgICAgZWxzZQorIAl7CitAQCAtMTY3LDcgKzE3NSw3IEBA IFVzZSBgaW5mbyBhdXRvLWxvYWQgcHl0aG9uIFtSRUdFWFBdJyB0bworIAorIAkgSVdCTiBpZiBj b21wbGFpbnRzLmMgd2VyZSBtb3JlIGdlbmVyYWwtcHVycG9zZS4gICovCisgCistICAgICAgaW5f aGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLCBmdWxsX3Bh dGgsCisrICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZv LCBvcGVuZWQsIGZpbGUsIGZ1bGxfcGF0aCwKKyAJCQkJCSZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9u KTsKKyAKKyAgICAgICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxv YWQgaXQuICAqLworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LW9iamZpbGUtc2NyaXB0LmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQu ZXhwCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCTIw MTItMDQtMTggMDA6NDk6MjEuNjIxNzM1OTg1ICswMjAwCitAQCAtMzcsNiArMzcsNyBAQCBpZiB7 IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVlIH0KKyBzZXQgcmVtb3RlX3B5dGhvbl9m aWxlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9 LWdkYi5weS5pbiAke3N1YmRpcn0vJHt0ZXN0ZmlsZX0tZ2RiLnB5XQorIAorIGdkYl9yZWluaXRp YWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8t bG9hZCBzYWZlLXBhdGggJHtyZW1vdGVfcHl0aG9uX2ZpbGV9IiAic2V0IGF1dG8tbG9hZCBzYWZl LXBhdGgiCisgZ2RiX2xvYWQgJHtiaW5maWxlfQorIAorICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhl IHNjcmlwdC4KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4 cAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEy LTA0LTE4IDAwOjQ5OjIxLjYyMTczNTk4NSArMDIwMAorQEAgLTQ5LDYgKzQ5LDcgQEAgaWYgeyBb c2tpcF9weXRob25fdGVzdHNdIH0geyBjb250aW51ZSB9Cisgc2V0IHJlbW90ZV9weXRob25fZmls ZSBbcmVtb3RlX2Rvd25sb2FkIGhvc3QgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS5w eV0KKyAKKyBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfdGVzdF9u b19vdXRwdXQgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoICR7cmVtb3RlX3B5dGhvbl9maWxlfSIg InNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIgorIGdkYl9sb2FkICR7YmluZmlsZX0KKyAKKyAjIFZl cmlmeSBnZGIgbG9hZGVkIHRoZSBzY3JpcHQuCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTEy b2YxMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xMm9mMTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDM5MmJkYmMuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTEyb2YxMi5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1MiArMCwwIEBACi1bcGF0Y2gjNCA2LzhdIHNldCBk ZWJ1ZyBhdXRvLWxvYWQKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEy LTA0L21zZzAwMDg5Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTIt MDQvbXNnMDAxMTUuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1 NDoyOAkxLjE0MTE0Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1NjoyMAkx LjE0MTE1Ci0jIyAtMSw1ICsxLDI3IEBACi0gMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotKwlOZXcgb3B0aW9uICJzZXQgZGVidWcgYXV0 by1sb2FkIi4KLSsJKiBORVdTOiBOZXcgY29tbWFuZHMgInNldCBkZWJ1ZyBhdXRvLWxvYWQiIGFu ZCAic2hvdyBkZWJ1ZyBhdXRvLWxvYWQiLgotKwkqIGF1dG8tbG9hZC5jIChkZWJ1Z19hdXRvX2xv YWQsIHNob3dfZGVidWdfYXV0b19sb2FkOiBOZXcuCi0rCShhdXRvX2xvYWRfc2FmZV9wYXRoX3Zl Y191cGRhdGUpCi0rCShmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyk6IENh bGwgZnByaW50Zl91bmZpbHRlcmVkCi0rCWlmIERFQlVHX0FVVE9fTE9BRC4KLSsJKGZpbGVfaXNf YXV0b19sb2FkX3NhZmUpOiBOZXcgcGFyYW1ldGVycyBkZWJ1Z19mbXQgYW5kIC4uLi4KLSsJQ2Fs bCBmcHJpbnRmX3VuZmlsdGVyZWQgaWYgREVCVUdfQVVUT19MT0FELgotKwkoc291cmNlX2dkYl9z Y3JpcHRfZm9yX29iamZpbGUpOiBFeHRlbmQgdGhlIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUKLSsJ Y2FsbGVyIGJ5IGV4cGxhbmF0b3J5IHN0cmluZy4KLSsJKF9pbml0aWFsaXplX2F1dG9fbG9hZCk6 IFJlZ2lzdGVyICJzZXQgZGVidWcgYXV0by1sb2FkIi4KLSsJKiBhdXRvLWxvYWQuaCAoZmlsZV9p c19hdXRvX2xvYWRfc2FmZSk6IE5ldyBwYXJhbWV0ZXJzIGRlYnVnX2ZtdAotKwlhbmQgLi4uLgot KwkqIGxpbnV4LXRocmVhZC1kYi5jICh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyXzEpCi0r CSh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIpOiBFeHRlbmQgdGhlIGZpbGVfaXNfYXV0b19s b2FkX3NhZmUgY2FsbGVyCi0rCWJ5IGV4cGxhbmF0b3J5IHN0cmluZy4KLSsJKiBtYWluLmMgKGNh cHR1cmVkX21haW4pOiBMaWtld2lzZS4KLSsJKiBweXRob24vcHktYXV0by1sb2FkLmMgKGdkYnB5 X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUpCi0rCShzb3VyY2Vfc2VjdGlvbl9zY3JpcHRz KTogTGlrZXdpc2UuCi0rCi0rMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotKwotIAlOZXcgb3B0aW9uICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0 aCIuCi0gCSogTkVXUzogTmV3IGNvbW1hbmRzICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIKLSAJ YW5kICJzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGgiLgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L05FV1MJMjAxMi0wNC0xOCAwMDo0OTozMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NTA6MTUuMDE4NjAwMjgyICswMjAwCi1A QCAtNzIsNiArNzIsMTAgQEAgc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoCi0gICBTZXQgYSBsaXN0 IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMu Ci0gICBUaGUgZGVsaW1pdGVyICgnOicgYWJvdmUpIG1heSBkaWZmZXIgYWNjb3JkaW5nIHRvIHRo ZSBob3N0IHBsYXRmb3JtLgotIAotK3NldCBkZWJ1ZyBhdXRvLWxvYWQgb258b2ZmCi0rc2hvdyBk ZWJ1ZyBhdXRvLWxvYWQKLSsgIENvbnRyb2wgZGlzcGxheSBvZiBkZWJ1Z2dpbmcgaW5mbyBmb3Ig YXV0by1sb2FkaW5nIHRoZSBmaWxlcyBhYm92ZS4KLSsKLSAqIE5ldyBjb21tYW5kIGxpbmUgb3B0 aW9ucwotIAotIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCAgICAgICAgICBMaWtlIC0tY29tbWFu ZCwgLXggYnV0IGV4ZWN1dGUgaXQKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRv LWxvYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0 by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjUwOjA0LjgwMTYyNjIz NSArMDIwMAotQEAgLTQzLDYgKzQzLDIwIEBACi0gc3RhdGljIHZvaWQgc291cmNlX2dkYl9zY3Jp cHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotIAkJ CQkJICAgY29uc3QgY2hhciAqZmlsZW5hbWUpOwotIAotKy8qIFZhbHVlIG9mIHRoZSAnc2V0IGRl YnVnIGF1dG8tbG9hZCcgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCi0rc3RhdGljIGludCBk ZWJ1Z19hdXRvX2xvYWQgPSAwOwotKwotKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgZGVidWdf YXV0b19sb2FkIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0r c2hvd19kZWJ1Z19hdXRvX2xvYWQgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHks Ci0rCQkgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUp Ci0rewotKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiRGVidWdnaW5nIG91dHB1dCBmb3Ig ZmlsZXMgIgotKwkJCSAgICAib2YgJ3NldCBhdXRvLWxvYWQgLi4uJyBpcyAlcy5cbiIpLAotKwkJ ICAgIHZhbHVlKTsKLSt9Ci0rCi0gLyogVXNlci1zZXR0YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rp c2FibGUgYXV0by1sb2FkaW5nIG9mIEdEQl9BVVRPX0ZJTEVfTkFNRQotICAgIHNjcmlwdHM6Ci0g ICAgc2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyBvbnxvZmYKLUBAIC0xMTIsNiArMTI2LDExIEBA IGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkKLSAgIHVuc2lnbmVkIGxlbjsK LSAgIGludCBpeDsKLSAKLSsgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCi0rICAgIGZwcmludGZfdW5m aWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQlfKCJhdXRvLWxvYWQ6IFVwZGF0aW5nIGRpcmVjdG9y aWVzIG9mIFwiJXNcIi5cbiIpLAotKwkJCWF1dG9fbG9hZF9zYWZlX3BhdGgpOwotKwotICAgZnJl ZV9jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjKTsKLSAKLSAgIGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjID0gZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChhdXRvX2xvYWRfc2Fm ZV9wYXRoKTsKLUBAIC0xMjYsMTQgKzE0NSwzNCBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191 cGRhdGUgKHZvaWQpCi0gICAgICAgY2hhciAqcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChleHBh bmRlZCk7Ci0gCi0gICAgICAgLyogRW5zdXJlIHRoZSBjdXJyZW50IGVudHJ5IGlzIGF0IGxlYXN0 IHRpbGRlX2V4cGFuZC1lZC4gICovCi0tICAgICAgeGZyZWUgKGRpcik7Ci0gICAgICAgVkVDX3Jl cGxhY2UgKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGV4cGFuZGVkKTsK LSAKLSsgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQotKwl7Ci0rCSAgaWYgKHN0cmNtcCAoZXhw YW5kZWQsIGRpcikgPT0gMCkKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywK LSsJCQkJXygiYXV0by1sb2FkOiBVc2luZyBkaXJlY3RvcnkgXCIlc1wiLlxuIiksCi0rCQkJCWV4 cGFuZGVkKTsKLSsJICBlbHNlCi0rCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2cs Ci0rCQkJCV8oImF1dG8tbG9hZDogUmVzb2x2ZWQgZGlyZWN0b3J5IFwiJXNcIiAiCi0rCQkJCSAg ImFzIFwiJXNcIi5cbiIpLAotKwkJCQlkaXIsIGV4cGFuZGVkKTsKLSsJfQotKyAgICAgIHhmcmVl IChkaXIpOwotKwotICAgICAgIC8qIElmIGdkYl9yZWFscGF0aCByZXR1cm5zIGEgZGlmZmVyZW50 IGNvbnRlbnQsIGFwcGVuZCBpdC4gICovCi0gICAgICAgaWYgKHN0cmNtcCAocmVhbF9wYXRoLCBl eHBhbmRlZCkgPT0gMCkKLSAJeGZyZWUgKHJlYWxfcGF0aCk7Ci0gICAgICAgZWxzZQotLQlWRUNf c2FmZV9wdXNoIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIHJlYWxfcGF0aCk7 Ci0rCXsKLSsJICBWRUNfc2FmZV9wdXNoIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92 ZWMsIHJlYWxfcGF0aCk7Ci0rCi0rCSAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLSsJICAgIGZwcmlu dGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJXygiYXV0by1sb2FkOiBBbmQgY2Fub25p Y2FsaXplZCBhcyBcIiVzXCIuXG4iKSwKLSsJCQkJcmVhbF9wYXRoKTsKLSsJfQotICAgICB9Ci0g fQotIAotQEAgLTIxNywxNiArMjU2LDMwIEBAIGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZl X3BhdGhfdmVjICgKLSAgIGlmIChkaXIgPT0gTlVMTCkKLSAgICAgewotICAgICAgIGlmICgqZmls ZW5hbWVfcmVhbHAgPT0gTlVMTCkKLS0JKmZpbGVuYW1lX3JlYWxwID0gZ2RiX3JlYWxwYXRoIChm aWxlbmFtZSk7Ci0rCXsKLSsJICAqZmlsZW5hbWVfcmVhbHAgPSBnZGJfcmVhbHBhdGggKGZpbGVu YW1lKTsKLSsJICBpZiAoZGVidWdfYXV0b19sb2FkICYmIHN0cmNtcCAoKmZpbGVuYW1lX3JlYWxw LCBmaWxlbmFtZSkgIT0gMCkKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywK LSsJCQkJXygiYXV0by1sb2FkOiBSZXNvbHZlZCAiCi0rCQkJCSAgImZpbGUgXCIlc1wiIGFzIFwi JXNcIi5cbiIpLAotKwkJCQlmaWxlbmFtZSwgKmZpbGVuYW1lX3JlYWxwKTsKLSsJfQotIAotLSAg ICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3Bh dGhfdmVjLCBpeCwgZGlyKTsKLS0JICAgKytpeCkKLS0JaWYgKGZpbGVuYW1lX2lzX2luX2RpciAo KmZpbGVuYW1lX3JlYWxwLCBkaXIpKQotLQkgIGJyZWFrOwotKyAgICAgIGlmIChzdHJjbXAgKCpm aWxlbmFtZV9yZWFscCwgZmlsZW5hbWUpICE9IDApCi0rCWZvciAoaXggPSAwOyBWRUNfaXRlcmF0 ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGlyKTsKLSsJICAgICAr K2l4KQotKwkgIGlmIChmaWxlbmFtZV9pc19pbl9kaXIgKCpmaWxlbmFtZV9yZWFscCwgZGlyKSkK LSsJICAgIGJyZWFrOwotICAgICB9Ci0gCi0gICBpZiAoZGlyICE9IE5VTEwpCi0tICAgIHJldHVy biAxOwotKyAgICB7Ci0rICAgICAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLSsJZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEZpbGUgXCIlc1wiIG1hdGNoZXMgIgot KwkJCQkJICAiZGlyZWN0b3J5IFwiJXNcIi5cbiIpLAotKwkJCSAgICBmaWxlbmFtZSwgZGlyKTsK LSsgICAgICByZXR1cm4gMTsKLSsgICAgfQotIAotICAgcmV0dXJuIDA7Ci0gfQotQEAgLTI0MCwx MSArMjkzLDIwIEBAIGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjICgKLSAg ICBkaXJlY3RvcnkuICAqLwotIAotIGludAotLWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0 IGNoYXIgKmZpbGVuYW1lKQotK2ZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZp bGVuYW1lLCBjb25zdCBjaGFyICpkZWJ1Z19mbXQsIC4uLikKLSB7Ci0gICBjaGFyICpmaWxlbmFt ZV9yZWFsID0gTlVMTDsKLSAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotIAotKyAgaWYgKGRl YnVnX2F1dG9fbG9hZCkKLSsgICAgewotKyAgICAgIHZhX2xpc3QgZGVidWdfYXJnczsKLSsKLSsg ICAgICB2YV9zdGFydCAoZGVidWdfYXJncywgZGVidWdfZm10KTsKLSsgICAgICB2ZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBkZWJ1Z19mbXQsIGRlYnVnX2FyZ3MpOwotKyAgICAgIHZh X2VuZCAoZGVidWdfYXJncyk7Ci0rICAgIH0KLSsKLSAgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAg KGZyZWVfY3VycmVudF9jb250ZW50cywgJmZpbGVuYW1lX3JlYWwpOwotIAotICAgaWYgKGZpbGVu YW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjIChmaWxlbmFtZSwgJmZpbGVuYW1lX3Jl YWwpKQotQEAgLTI4MSw3ICszNDMsMTAgQEAgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUg KHN0cnVjdCBvYgotICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87 Ci0gICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBlOwotIAotLSAgaXNfc2FmZSA9IGZp bGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1lKTsKLSsgIGlzX3NhZmUgPSBmaWxlX2lzX2F1 dG9fbG9hZF9zYWZlIChmaWxlbmFtZSwgXygiYXV0by1sb2FkOiBMb2FkaW5nIGNhbm5lZCAiCi0r CQkJCQkJInNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHQgIgotKwkJCQkJCSJcIiVzXCIgZm9y IG9iamZpbGUgXCIlc1wiLlxuIiksCi0rCQkJCSAgICBmaWxlbmFtZSwgb2JqZmlsZS0+bmFtZSk7 Ci0gCi0gICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZv IGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKLSAgICAgIGNhbiBwcmludCBpdC4gICovCi1AQCAtOTc1 LDQgKzEwNDAsMTMgQEAgU2VlIHRoZSBjb21tYW5kcyAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdAot IGFjY2VzcyB0aGUgY3VycmVudCBmdWxsIGxpc3Qgc2V0dGluZy4iKSwKLSAJCSAmY21kbGlzdCk7 Ci0gICBzZXRfY21kX2NvbXBsZXRlciAoY21kLCBmaWxlbmFtZV9jb21wbGV0ZXIpOwotKwotKyAg YWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJhdXRvLWxvYWQiLCBjbGFzc19tYWludGVuYW5jZSwK LSsJCQkgICAmZGVidWdfYXV0b19sb2FkLCBfKCJcCi0rU2V0IGF1dG8tbG9hZCB2ZXJpZmljYXRp b25zIGRlYnVnZ2luZy4iKSwgXygiXAotK1Nob3cgYXV0by1sb2FkIHZlcmlmaWNhdGlvbnMgZGVi dWdnaW5nLiIpLCBfKCJcCi0rV2hlbiBub24temVybywgZGVidWdnaW5nIG91dHB1dCBmb3IgZmls ZXMgb2YgJ3NldCBhdXRvLWxvYWQgLi4uJ1xuXAotK2lzIGRpc3BsYXllZC4iKSwKLSsJCQkgICAg TlVMTCwgc2hvd19kZWJ1Z19hdXRvX2xvYWQsCi0rCQkJICAgICZzZXRkZWJ1Z2xpc3QsICZzaG93 ZGVidWdsaXN0KTsKLSB9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2Fk LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9h ZC5oCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo1MDowNC44MDE2MjYyMzUgKzAy MDAKLUBAIC01NSw2ICs1NSw3IEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1 dG9fbG8KLSBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfc2hvd19j bWRsaXN0X2dldCAodm9pZCk7Ci0gZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0 b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKHZvaWQpOwotIAotLWV4dGVybiBpbnQgZmlsZV9pc19h dXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOwotK2V4dGVybiBpbnQgZmlsZV9p c19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsCi0rCQkJCSAgIGNvbnN0IGNo YXIgKmRlYnVnX2ZtdCwgLi4uKTsKLSAKLSAjZW5kaWYgLyogQVVUT19MT0FEX0ggKi8KLUluZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC10aHJlYWQtZGIuYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAxMi0w NC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjUwOjA0LjgwMTYyNjIzNSArMDIwMAot QEAgLTg2OSw3ICs4NjksOSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyXzEgKHN0cnVj dCBvCi0gICBnZGJfYXNzZXJ0IChjcCAhPSBOVUxMKTsKLSAgIHN0cmNweSAoY3AgKyAxLCBMSUJU SFJFQURfREJfU08pOwotIAotLSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRoKSkK LSsgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCwgXygiYXV0by1sb2FkOiBMb2Fk aW5nIGxpYnRocmVhZC1kYiAiCi0rCQkJCSAgICAgICAibGlicmFyeSBcIiVzXCIgZnJvbSAkcGRp ci5cbiIpLAotKwkJCSAgICAgICBwYXRoKSkKLSAgICAgcmVzdWx0ID0gMDsKLSAgIGVsc2UKLSAg ICAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKLUBAIC05MzksNyArOTQxLDEw IEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX2RpciAoY29uc3QgY2hhcgotICAgcGF0aFtkaXJf bGVuXSA9ICcvJzsKLSAgIHN0cmNweSAocGF0aCArIGRpcl9sZW4gKyAxLCBMSUJUSFJFQURfREJf U08pOwotIAotLSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRoKSkKLSsgIGlmICgh ZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCwgXygiYXV0by1sb2FkOiBMb2FkaW5nIGxpYnRo cmVhZC1kYiAiCi0rCQkJCSAgICAgICAibGlicmFyeSBcIiVzXCIgZnJvbSBleHBsaWNpdCAiCi0r CQkJCSAgICAgICAiZGlyZWN0b3J5LlxuIiksCi0rCQkJICAgICAgIHBhdGgpKQotICAgICByZXN1 bHQgPSAwOwotICAgZWxzZQotICAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgp OwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDk6MjEu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTIt MDQtMTggMDA6NTA6MDQuODAxNjI2MjM1ICswMjAwCi1AQCAtMTAyNyw3ICsxMDI3LDEwIEBAIGNh cHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gICAgICAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRf cGF0aG5hbWUgPSBnZGJfcmVhbHBhdGggKGxvY2FsX2dkYmluaXQpOwotIAotICAgICAgIGlmICgh aW5oaWJpdF9nZGJpbml0ICYmIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0Ci0tCSAgJiYgZmlsZV9p c19hdXRvX2xvYWRfc2FmZSAobG9jYWxfZ2RiaW5pdCkpCi0rCSAgJiYgZmlsZV9pc19hdXRvX2xv YWRfc2FmZSAobG9jYWxfZ2RiaW5pdCwKLSsJCQkJICAgICBfKCJhdXRvLWxvYWQ6IExvYWRpbmcg LmdkYmluaXQgIgotKwkJCQkgICAgICAgImZpbGUgXCIlc1wiLlxuIiksCi0rCQkJCSAgICAgbG9j YWxfZ2RiaW5pdCkpCi0gCXsKLSAJICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQgPSAx OwotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZv CTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NTA6MDQuODA5NjI2MjE1ICsw MjAwCi1AQCAtMjA4ODcsNiArMjA4ODcsNyBAQCBUaGVzZSBhcmUgQHZhbHVle0dEQk59IGNvbnRy b2wgY29tbWFuZHMKLSAqIGxpYnRocmVhZF9kYi5zby4xIGZpbGU6OiAgICAgICAgICAgICBAc2Ft cHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9Ci0gKiBvYmpmaWxlLWdkYi5n ZGIgZmlsZTo6ICAgICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgZ2Ri LXNjcmlwdH0KLSAqIEF1dG8tbG9hZGluZyBzYWZlIHBhdGg6OiAgICAgICAgICAgICBAc2FtcHtz ZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBzYWZlLXBhdGh9Ci0rKiBBdXRvLWxvYWRpbmcgdmVyYm9z ZSBtb2RlOjogICAgICAgICAgQHNhbXB7c2V0L3Nob3cgZGVidWcgYXV0by1sb2FkfQotIEB4cmVm e1B5dGhvbiBBdXRvLWxvYWRpbmd9LgotIEBlbmQgbWVudQotIAotQEAgLTIxMDg1LDYgKzIxMDg2 LDQ1IEBAIGVudHJpZXMgYWdhaW4uICBAdmFsdWV7R0RCTn0gYWxyZWFkeSBjYW4KLSBvd24gYmVm b3JlIHN0YXJ0aW5nIHRoZSBjb21wYXJpc29uIHNvIGEgY2Fub25pY2FsIGZvcm0gb2YgZGlyZWN0 b3JpZXMgaXMKLSByZWNvbW1lbmRlZCB0byBiZSBlbnRlcmVkLgotIAotK0Bub2RlIEF1dG8tbG9h ZGluZyB2ZXJib3NlIG1vZGUKLStAc3Vic2VjdGlvbiBEaXNwbGF5aW5nIGZpbGVzIHRyaWVkIGZv ciBhdXRvLWxvYWQKLStAY2luZGV4IGF1dG8tbG9hZGluZyB2ZXJib3NlIG1vZGUKLSsKLStGb3Ig YmV0dGVyIHZpc2liaWxpdHkgb2YgYWxsIHRoZSBmaWxlIGxvY2F0aW9ucyB3aGVyZSB5b3UgY2Fu IHBsYWNlIHNjcmlwdHMgdG8KLStiZSBhdXRvLWxvYWRlZCB3aXRoIGluZmVyaW9yIC0tLSBvciB0 byBwcm90ZWN0IHlvdXJzZWxmIGFnYWluc3QgYWNjaWRlbnRhbAotK2V4ZWN1dGlvbiBvZiB1bnRy dXN0ZWQgc2NyaXB0cyAtLS0gQHZhbHVle0dEQk59IHByb3ZpZGVzIGEgZmVhdHVyZSBmb3IgcHJp bnRpbmcKLSthbGwgdGhlIGZpbGVzIGF0dGVtcHRlZCB0byBiZSBsb2FkZWQuICBCb3RoIGV4aXN0 aW5nIGFuZCBub24tZXhpc3RpbmcgZmlsZXMgbWF5Ci0rYmUgcHJpbnRlZC4KLSsKLStGb3IgZXhh bXBsZSB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0 by1sb2FkIGZpbGVzCi0rKEBweHJlZntBdXRvLWxvYWRpbmcgc2FmZSBwYXRofSkgYXBwbGllcyBh bHNvIHRvIGNhbm9uaWNhbGl6ZWQgZmlsZW5hbWVzIHdoaWNoCi0rbWF5IG5vdCBiZSB0b28gb2J2 aW91cyB3aGlsZSBzZXR0aW5nIGl0IHVwLgotKwotK0BzbWFsbGV4YW1wbGUKLSsoZ2RiKSBzZXQg ZGVidWcgYXV0by1sb2FkIHVlcwotKyhnZGIpIGZpbGUgfi9zcmMvdC90cnVlCi0rYXV0by1sb2Fk OiBMb2FkaW5nIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0ICIvdG1wL3RydWUt Z2RiLmdkYiIKLSsgICAgICAgICAgIGZvciBvYmpmaWxlICIvdG1wL3RydWUiLgotK2F1dG8tbG9h ZDogVXBkYXRpbmcgZGlyZWN0b3JpZXMgb2YgIi91c3I6L29wdCIuCi0rYXV0by1sb2FkOiBVc2lu ZyBkaXJlY3RvcnkgIi91c3IiLgotK2F1dG8tbG9hZDogVXNpbmcgZGlyZWN0b3J5ICIvb3B0Ii4K LSt3YXJuaW5nOiBGaWxlICIvdG1wL3RydWUtZ2RiLmdkYiIgYXV0by1sb2FkaW5nIGhhcyBiZWVu IGRlY2xpbmVkCi0rICAgICAgICAgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRv ICIvdXNyOi9vcHQiLgotK0BlbmQgc21hbGxleGFtcGxlCi0rCi0rQHRhYmxlIEBjb2RlCi0rQGFu Y2hvcntzZXQgZGVidWcgYXV0by1sb2FkfQotK0BraW5kZXggc2V0IGRlYnVnIGF1dG8tbG9hZAot K0BpdGVtIHNldCBkZWJ1ZyBhdXRvLWxvYWQgW29ufG9mZl0KLStTZXQgd2hldGhlciB0byBwcmlu dCB0aGUgZmlsZW5hbWVzIGF0dGVtcHRlZCB0byBiZSBhdXRvLWxvYWRlZC4KLSsKLStAYW5jaG9y e3Nob3cgZGVidWcgYXV0by1sb2FkfQotK0BraW5kZXggc2hvdyBkZWJ1ZyBhdXRvLWxvYWQKLStA aXRlbSBzaG93IGRlYnVnIGF1dG8tbG9hZAotK1Nob3cgd2hldGhlciBwcmludGluZyBvZiB0aGUg ZmlsZW5hbWVzIGF0dGVtcHRlZCB0byBiZSBhdXRvLWxvYWRlZCBpcyB0dXJuZWQKLStvbiBvciBv ZmYuCi0rQGVuZCB0YWJsZQotKwotIEBub2RlIE1lc3NhZ2VzL1dhcm5pbmdzCi0gQHNlY3Rpb24g T3B0aW9uYWwgV2FybmluZ3MgYW5kIE1lc3NhZ2VzCi0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41 MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0 OToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24v cHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo1MDowNC44MTA2MjYyMTIgKzAyMDAKLUBAIC03 NSw3ICs3NSwxMCBAQCBnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Ci0g ICBpbnQgaXNfc2FmZTsKLSAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9p bmZvOwotIAotLSAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1lKTsK LSsgIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFtZSwKLSsJCQkJICAg IF8oImF1dG8tbG9hZDogTG9hZGluZyBQeXRob24gc2NyaXB0IFwiJXNcIiAiCi0rCQkJCSAgICAg ICJieSBleHRlbnNpb24gZm9yIG9iamZpbGUgXCIlc1wiLlxuIiksCi0rCQkJCSAgICBmaWxlbmFt ZSwgb2JqZmlsZS0+bmFtZSk7Ci0gCi0gICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2gg dGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIKLSAgICAgIGNhbiBw cmludCBpdC4gICovCi1AQCAtMTUzLDcgKzE1NiwxMiBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRz IChzdHJ1Y3Qgb2JqZmlsZSAqCi0gCSAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFtKTsKLSAJ ICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOwotIAotLQkgIGlmICghZmlsZV9pc19h dXRvX2xvYWRfc2FmZSAoZnVsbF9wYXRoKSkKLSsJICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3Nh ZmUgKGZ1bGxfcGF0aCwKLSsJCQkJICAgICAgIF8oImF1dG8tbG9hZDogTG9hZGluZyBQeXRob24g c2NyaXB0ICIKLSsJCQkJCSAiXCIlc1wiIGZyb20gc2VjdGlvbiBcIiVzXCIgb2YgIgotKwkJCQkJ ICJvYmpmaWxlIFwiJXNcIi5cbiIpLAotKwkJCQkgICAgICAgZnVsbF9wYXRoLCBHREJQWV9BVVRP X1NFQ1RJT05fTkFNRSwKLSsJCQkJICAgICAgIG9iamZpbGUtPm5hbWUpKQotIAkgICAgb3BlbmVk ID0gMDsKLSAJfQotICAgICAgIGVsc2UKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTJvZjE4 LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTEyb2YxOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4zOTJiZGJjCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTEy b2YxOC5wYXRjaApAQCAtMCwwICsxLDM1MiBAQAorW3BhdGNoIzQgNi84XSBzZXQgZGVidWcgYXV0 by1sb2FkCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cw MDA4OS5odG1sCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAw MTE1Lmh0bWwKKworIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NTQ6MjgJMS4x NDExNAorIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NTY6MjAJMS4xNDExNQor IyMgLTEsNSArMSwyNyBAQAorIDIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KKyAKKysJTmV3IG9wdGlvbiAic2V0IGRlYnVnIGF1dG8tbG9hZCIu CisrCSogTkVXUzogTmV3IGNvbW1hbmRzICJzZXQgZGVidWcgYXV0by1sb2FkIiBhbmQgInNob3cg ZGVidWcgYXV0by1sb2FkIi4KKysJKiBhdXRvLWxvYWQuYyAoZGVidWdfYXV0b19sb2FkLCBzaG93 X2RlYnVnX2F1dG9fbG9hZDogTmV3LgorKwkoYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRl KQorKwkoZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMpOiBDYWxsIGZwcmlu dGZfdW5maWx0ZXJlZAorKwlpZiBERUJVR19BVVRPX0xPQUQuCisrCShmaWxlX2lzX2F1dG9fbG9h ZF9zYWZlKTogTmV3IHBhcmFtZXRlcnMgZGVidWdfZm10IGFuZCAuLi4uCisrCUNhbGwgZnByaW50 Zl91bmZpbHRlcmVkIGlmIERFQlVHX0FVVE9fTE9BRC4KKysJKHNvdXJjZV9nZGJfc2NyaXB0X2Zv cl9vYmpmaWxlKTogRXh0ZW5kIHRoZSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlCisrCWNhbGxlciBi eSBleHBsYW5hdG9yeSBzdHJpbmcuCisrCShfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBSZWdpc3Rl ciAic2V0IGRlYnVnIGF1dG8tbG9hZCIuCisrCSogYXV0by1sb2FkLmggKGZpbGVfaXNfYXV0b19s b2FkX3NhZmUpOiBOZXcgcGFyYW1ldGVycyBkZWJ1Z19mbXQKKysJYW5kIC4uLi4KKysJKiBsaW51 eC10aHJlYWQtZGIuYyAodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRpcl8xKQorKwkodHJ5X3Ro cmVhZF9kYl9sb2FkX2Zyb21fZGlyKTogRXh0ZW5kIHRoZSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZl IGNhbGxlcgorKwlieSBleHBsYW5hdG9yeSBzdHJpbmcuCisrCSogbWFpbi5jIChjYXB0dXJlZF9t YWluKTogTGlrZXdpc2UuCisrCSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jIChnZGJweV9sb2FkX2F1 dG9fc2NyaXB0X2Zvcl9vYmpmaWxlKQorKwkoc291cmNlX3NlY3Rpb25fc2NyaXB0cyk6IExpa2V3 aXNlLgorKworKzIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KKysKKyAJTmV3IG9wdGlvbiAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiLgorIAkq IE5FV1M6IE5ldyBjb21tYW5kcyAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiCisgCWFuZCAic2hv dyBhdXRvLWxvYWQgc2FmZS1wYXRoIi4KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9O RVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9ORVdTCTIw MTItMDQtMTggMDA6NDk6MzMuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjUwOjE1LjAxODYwMDI4MiArMDIwMAorQEAgLTcyLDYg KzcyLDEwIEBAIHNob3cgYXV0by1sb2FkIHNhZmUtcGF0aAorICAgU2V0IGEgbGlzdCBvZiBkaXJl Y3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLgorICAgVGhl IGRlbGltaXRlciAoJzonIGFib3ZlKSBtYXkgZGlmZmVyIGFjY29yZGluZyB0byB0aGUgaG9zdCBw bGF0Zm9ybS4KKyAKKytzZXQgZGVidWcgYXV0by1sb2FkIG9ufG9mZgorK3Nob3cgZGVidWcgYXV0 by1sb2FkCisrICBDb250cm9sIGRpc3BsYXkgb2YgZGVidWdnaW5nIGluZm8gZm9yIGF1dG8tbG9h ZGluZyB0aGUgZmlsZXMgYWJvdmUuCisrCisgKiBOZXcgY29tbWFuZCBsaW5lIG9wdGlvbnMKKyAK KyAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXggICAgICAgICAgTGlrZSAtLWNvbW1hbmQsIC14IGJ1 dCBleGVjdXRlIGl0CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5j CTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo1MDowNC44MDE2MjYyMzUgKzAyMDAK K0BAIC00Myw2ICs0MywyMCBAQAorIHN0YXRpYyB2b2lkIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9v YmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKyAJCQkJCSAgIGNv bnN0IGNoYXIgKmZpbGVuYW1lKTsKKyAKKysvKiBWYWx1ZSBvZiB0aGUgJ3NldCBkZWJ1ZyBhdXRv LWxvYWQnIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLworK3N0YXRpYyBpbnQgZGVidWdfYXV0 b19sb2FkID0gMDsKKysKKysvKiAic2hvdyIgY29tbWFuZCBmb3IgdGhlIGRlYnVnX2F1dG9fbG9h ZCBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Nob3dfZGVi dWdfYXV0b19sb2FkIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorKwkJICAg ICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorK3sKKysg IGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkRlYnVnZ2luZyBvdXRwdXQgZm9yIGZpbGVzICIK KysJCQkgICAgIm9mICdzZXQgYXV0by1sb2FkIC4uLicgaXMgJXMuXG4iKSwKKysJCSAgICB2YWx1 ZSk7CisrfQorKworIC8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1 dG8tbG9hZGluZyBvZiBHREJfQVVUT19GSUxFX05BTUUKKyAgICBzY3JpcHRzOgorICAgIHNldCBh dXRvLWxvYWQgZ2RiLXNjcmlwdHMgb258b2ZmCitAQCAtMTEyLDYgKzEyNiwxMSBAQCBhdXRvX2xv YWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCisgICB1bnNpZ25lZCBsZW47CisgICBpbnQg aXg7CisgCisrICBpZiAoZGVidWdfYXV0b19sb2FkKQorKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQg KGdkYl9zdGRsb2csCisrCQkJXygiYXV0by1sb2FkOiBVcGRhdGluZyBkaXJlY3RvcmllcyBvZiBc IiVzXCIuXG4iKSwKKysJCQlhdXRvX2xvYWRfc2FmZV9wYXRoKTsKKysKKyAgIGZyZWVfY2hhcl9w dHJfdmVjIChhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyk7CisgCisgICBhdXRvX2xvYWRfc2FmZV9w YXRoX3ZlYyA9IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2FkX3NhZmVfcGF0aCk7 CitAQCAtMTI2LDE0ICsxNDUsMzQgQEAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2 b2lkKQorICAgICAgIGNoYXIgKnJlYWxfcGF0aCA9IGdkYl9yZWFscGF0aCAoZXhwYW5kZWQpOwor IAorICAgICAgIC8qIEVuc3VyZSB0aGUgY3VycmVudCBlbnRyeSBpcyBhdCBsZWFzdCB0aWxkZV9l eHBhbmQtZWQuICAqLworLSAgICAgIHhmcmVlIChkaXIpOworICAgICAgIFZFQ19yZXBsYWNlIChj aGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBleHBhbmRlZCk7CisgCisrICAg ICAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKKysJeworKwkgIGlmIChzdHJjbXAgKGV4cGFuZGVkLCBk aXIpID09IDApCisrCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisrCQkJCV8o ImF1dG8tbG9hZDogVXNpbmcgZGlyZWN0b3J5IFwiJXNcIi5cbiIpLAorKwkJCQlleHBhbmRlZCk7 CisrCSAgZWxzZQorKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorKwkJCQlf KCJhdXRvLWxvYWQ6IFJlc29sdmVkIGRpcmVjdG9yeSBcIiVzXCIgIgorKwkJCQkgICJhcyBcIiVz XCIuXG4iKSwKKysJCQkJZGlyLCBleHBhbmRlZCk7CisrCX0KKysgICAgICB4ZnJlZSAoZGlyKTsK KysKKyAgICAgICAvKiBJZiBnZGJfcmVhbHBhdGggcmV0dXJucyBhIGRpZmZlcmVudCBjb250ZW50 LCBhcHBlbmQgaXQuICAqLworICAgICAgIGlmIChzdHJjbXAgKHJlYWxfcGF0aCwgZXhwYW5kZWQp ID09IDApCisgCXhmcmVlIChyZWFsX3BhdGgpOworICAgICAgIGVsc2UKKy0JVkVDX3NhZmVfcHVz aCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCByZWFsX3BhdGgpOworKwl7Cisr CSAgVkVDX3NhZmVfcHVzaCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCByZWFs X3BhdGgpOworKworKwkgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCisrCSAgICBmcHJpbnRmX3VuZmls dGVyZWQgKGdkYl9zdGRsb2csCisrCQkJCV8oImF1dG8tbG9hZDogQW5kIGNhbm9uaWNhbGl6ZWQg YXMgXCIlc1wiLlxuIiksCisrCQkJCXJlYWxfcGF0aCk7CisrCX0KKyAgICAgfQorIH0KKyAKK0BA IC0yMTcsMTYgKzI1NiwzMCBAQCBmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3Zl YyAoCisgICBpZiAoZGlyID09IE5VTEwpCisgICAgIHsKKyAgICAgICBpZiAoKmZpbGVuYW1lX3Jl YWxwID09IE5VTEwpCistCSpmaWxlbmFtZV9yZWFscCA9IGdkYl9yZWFscGF0aCAoZmlsZW5hbWUp OworKwl7CisrCSAgKmZpbGVuYW1lX3JlYWxwID0gZ2RiX3JlYWxwYXRoIChmaWxlbmFtZSk7Cisr CSAgaWYgKGRlYnVnX2F1dG9fbG9hZCAmJiBzdHJjbXAgKCpmaWxlbmFtZV9yZWFscCwgZmlsZW5h bWUpICE9IDApCisrCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisrCQkJCV8o ImF1dG8tbG9hZDogUmVzb2x2ZWQgIgorKwkJCQkgICJmaWxlIFwiJXNcIiBhcyBcIiVzXCIuXG4i KSwKKysJCQkJZmlsZW5hbWUsICpmaWxlbmFtZV9yZWFscCk7CisrCX0KKyAKKy0gICAgICBmb3Ig KGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywg aXgsIGRpcik7CistCSAgICsraXgpCistCWlmIChmaWxlbmFtZV9pc19pbl9kaXIgKCpmaWxlbmFt ZV9yZWFscCwgZGlyKSkKKy0JICBicmVhazsKKysgICAgICBpZiAoc3RyY21wICgqZmlsZW5hbWVf cmVhbHAsIGZpbGVuYW1lKSAhPSAwKQorKwlmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNoYXJf cHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGRpcik7CisrCSAgICAgKytpeCkKKysJ ICBpZiAoZmlsZW5hbWVfaXNfaW5fZGlyICgqZmlsZW5hbWVfcmVhbHAsIGRpcikpCisrCSAgICBi cmVhazsKKyAgICAgfQorIAorICAgaWYgKGRpciAhPSBOVUxMKQorLSAgICByZXR1cm4gMTsKKysg ICAgeworKyAgICAgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCisrCWZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywgXygiYXV0by1sb2FkOiBGaWxlIFwiJXNcIiBtYXRjaGVzICIKKysJCQkJCSAg ImRpcmVjdG9yeSBcIiVzXCIuXG4iKSwKKysJCQkgICAgZmlsZW5hbWUsIGRpcik7CisrICAgICAg cmV0dXJuIDE7CisrICAgIH0KKyAKKyAgIHJldHVybiAwOworIH0KK0BAIC0yNDAsMTEgKzI5Mywy MCBAQCBmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoCisgICAgZGlyZWN0 b3J5LiAgKi8KKyAKKyBpbnQKKy1maWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpm aWxlbmFtZSkKKytmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpmaWxlbmFtZSwg Y29uc3QgY2hhciAqZGVidWdfZm10LCAuLi4pCisgeworICAgY2hhciAqZmlsZW5hbWVfcmVhbCA9 IE5VTEw7CisgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKKyAKKysgIGlmIChkZWJ1Z19hdXRv X2xvYWQpCisrICAgIHsKKysgICAgICB2YV9saXN0IGRlYnVnX2FyZ3M7CisrCisrICAgICAgdmFf c3RhcnQgKGRlYnVnX2FyZ3MsIGRlYnVnX2ZtdCk7CisrICAgICAgdmZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywgZGVidWdfZm10LCBkZWJ1Z19hcmdzKTsKKysgICAgICB2YV9lbmQgKGRl YnVnX2FyZ3MpOworKyAgICB9CisrCisgICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChmcmVlX2N1 cnJlbnRfY29udGVudHMsICZmaWxlbmFtZV9yZWFsKTsKKyAKKyAgIGlmIChmaWxlbmFtZV9pc19p bl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoZmlsZW5hbWUsICZmaWxlbmFtZV9yZWFsKSkKK0BA IC0yODEsNyArMzQzLDEwIEBAIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qg b2IKKyAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworICAgdm9s YXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZTsKKyAKKy0gIGlzX3NhZmUgPSBmaWxlX2lzX2F1 dG9fbG9hZF9zYWZlIChmaWxlbmFtZSk7CisrICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRf c2FmZSAoZmlsZW5hbWUsIF8oImF1dG8tbG9hZDogTG9hZGluZyBjYW5uZWQgIgorKwkJCQkJCSJz ZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0ICIKKysJCQkJCQkiXCIlc1wiIGZvciBvYmpmaWxl IFwiJXNcIi5cbiIpLAorKwkJCQkgICAgZmlsZW5hbWUsIG9iamZpbGUtPm5hbWUpOworIAorICAg LyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxv YWQgZ2RiLXNjcmlwdHMiCisgICAgICBjYW4gcHJpbnQgaXQuICAqLworQEAgLTk3NSw0ICsxMDQw LDEzIEBAIFNlZSB0aGUgY29tbWFuZHMgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXQKKyBhY2Nlc3Mg dGhlIGN1cnJlbnQgZnVsbCBsaXN0IHNldHRpbmcuIiksCisgCQkgJmNtZGxpc3QpOworICAgc2V0 X2NtZF9jb21wbGV0ZXIgKGNtZCwgZmlsZW5hbWVfY29tcGxldGVyKTsKKysKKysgIGFkZF9zZXRz aG93X2Jvb2xlYW5fY21kICgiYXV0by1sb2FkIiwgY2xhc3NfbWFpbnRlbmFuY2UsCisrCQkJICAg JmRlYnVnX2F1dG9fbG9hZCwgXygiXAorK1NldCBhdXRvLWxvYWQgdmVyaWZpY2F0aW9ucyBkZWJ1 Z2dpbmcuIiksIF8oIlwKKytTaG93IGF1dG8tbG9hZCB2ZXJpZmljYXRpb25zIGRlYnVnZ2luZy4i KSwgXygiXAorK1doZW4gbm9uLXplcm8sIGRlYnVnZ2luZyBvdXRwdXQgZm9yIGZpbGVzIG9mICdz ZXQgYXV0by1sb2FkIC4uLidcblwKKytpcyBkaXNwbGF5ZWQuIiksCisrCQkJICAgIE5VTEwsIHNo b3dfZGVidWdfYXV0b19sb2FkLAorKwkJCSAgICAmc2V0ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlz dCk7CisgfQorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuaAkyMDEy LTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6NTA6MDQuODAxNjI2MjM1ICswMjAwCitAQCAt NTUsNiArNTUsNyBAQCBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvCisg ZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX3Nob3dfY21kbGlzdF9n ZXQgKHZvaWQpOworIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9p bmZvX2NtZGxpc3RfZ2V0ICh2b2lkKTsKKyAKKy1leHRlcm4gaW50IGZpbGVfaXNfYXV0b19sb2Fk X3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKytleHRlcm4gaW50IGZpbGVfaXNfYXV0b19s b2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorKwkJCQkgICBjb25zdCBjaGFyICpkZWJ1 Z19mbXQsIC4uLik7CisgCisgI2VuZGlmIC8qIEFVVE9fTE9BRF9IICovCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDQtMTggMDA6 NDk6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgt dGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo1MDowNC44MDE2MjYyMzUgKzAyMDAKK0BAIC04Njks NyArODY5LDkgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRpcl8xIChzdHJ1Y3QgbworICAg Z2RiX2Fzc2VydCAoY3AgIT0gTlVMTCk7CisgICBzdHJjcHkgKGNwICsgMSwgTElCVEhSRUFEX0RC X1NPKTsKKyAKKy0gIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCkpCisrICBpZiAo IWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgsIF8oImF1dG8tbG9hZDogTG9hZGluZyBsaWJ0 aHJlYWQtZGIgIgorKwkJCQkgICAgICAgImxpYnJhcnkgXCIlc1wiIGZyb20gJHBkaXIuXG4iKSwK KysJCQkgICAgICAgcGF0aCkpCisgICAgIHJlc3VsdCA9IDA7CisgICBlbHNlCisgICAgIHJlc3Vs dCA9IHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCk7CitAQCAtOTM5LDcgKzk0MSwxMCBAQCB0cnlf dGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIgKGNvbnN0IGNoYXIKKyAgIHBhdGhbZGlyX2xlbl0gPSAn Lyc7CisgICBzdHJjcHkgKHBhdGggKyBkaXJfbGVuICsgMSwgTElCVEhSRUFEX0RCX1NPKTsKKyAK Ky0gIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCkpCisrICBpZiAoIWZpbGVfaXNf YXV0b19sb2FkX3NhZmUgKHBhdGgsIF8oImF1dG8tbG9hZDogTG9hZGluZyBsaWJ0aHJlYWQtZGIg IgorKwkJCQkgICAgICAgImxpYnJhcnkgXCIlc1wiIGZyb20gZXhwbGljaXQgIgorKwkJCQkgICAg ICAgImRpcmVjdG9yeS5cbiIpLAorKwkJCSAgICAgICBwYXRoKSkKKyAgICAgcmVzdWx0ID0gMDsK KyAgIGVsc2UKKyAgICAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKK0luZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40 LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAw OjUwOjA0LjgwMTYyNjIzNSArMDIwMAorQEAgLTEwMjcsNyArMTAyNywxMCBAQCBjYXB0dXJlZF9t YWluICh2b2lkICpkYXRhKQorICAgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1l ID0gZ2RiX3JlYWxwYXRoIChsb2NhbF9nZGJpbml0KTsKKyAKKyAgICAgICBpZiAoIWluaGliaXRf Z2RiaW5pdCAmJiBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdAorLQkgICYmIGZpbGVfaXNfYXV0b19s b2FkX3NhZmUgKGxvY2FsX2dkYmluaXQpKQorKwkgICYmIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUg KGxvY2FsX2dkYmluaXQsCisrCQkJCSAgICAgXygiYXV0by1sb2FkOiBMb2FkaW5nIC5nZGJpbml0 ICIKKysJCQkJICAgICAgICJmaWxlIFwiJXNcIi5cbiIpLAorKwkJCQkgICAgIGxvY2FsX2dkYmlu aXQpKQorIAl7CisgCSAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkID0gMTsKKyAKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8KKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0 LTE4IDAwOjQ5OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjUwOjA0LjgwOTYyNjIxNSArMDIwMAorQEAg LTIwODg3LDYgKzIwODg3LDcgQEAgVGhlc2UgYXJlIEB2YWx1ZXtHREJOfSBjb250cm9sIGNvbW1h bmRzCisgKiBsaWJ0aHJlYWRfZGIuc28uMSBmaWxlOjogICAgICAgICAgICAgQHNhbXB7c2V0L3No b3cvaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQorICogb2JqZmlsZS1nZGIuZ2RiIGZpbGU6 OiAgICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIGdkYi1zY3JpcHR9 CisgKiBBdXRvLWxvYWRpbmcgc2FmZSBwYXRoOjogICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cv aW5mbyBhdXRvLWxvYWQgc2FmZS1wYXRofQorKyogQXV0by1sb2FkaW5nIHZlcmJvc2UgbW9kZTo6 ICAgICAgICAgIEBzYW1we3NldC9zaG93IGRlYnVnIGF1dG8tbG9hZH0KKyBAeHJlZntQeXRob24g QXV0by1sb2FkaW5nfS4KKyBAZW5kIG1lbnUKKyAKK0BAIC0yMTA4NSw2ICsyMTA4Niw0NSBAQCBl bnRyaWVzIGFnYWluLiAgQHZhbHVle0dEQk59IGFscmVhZHkgY2FuCisgb3duIGJlZm9yZSBzdGFy dGluZyB0aGUgY29tcGFyaXNvbiBzbyBhIGNhbm9uaWNhbCBmb3JtIG9mIGRpcmVjdG9yaWVzIGlz CisgcmVjb21tZW5kZWQgdG8gYmUgZW50ZXJlZC4KKyAKKytAbm9kZSBBdXRvLWxvYWRpbmcgdmVy Ym9zZSBtb2RlCisrQHN1YnNlY3Rpb24gRGlzcGxheWluZyBmaWxlcyB0cmllZCBmb3IgYXV0by1s b2FkCisrQGNpbmRleCBhdXRvLWxvYWRpbmcgdmVyYm9zZSBtb2RlCisrCisrRm9yIGJldHRlciB2 aXNpYmlsaXR5IG9mIGFsbCB0aGUgZmlsZSBsb2NhdGlvbnMgd2hlcmUgeW91IGNhbiBwbGFjZSBz Y3JpcHRzIHRvCisrYmUgYXV0by1sb2FkZWQgd2l0aCBpbmZlcmlvciAtLS0gb3IgdG8gcHJvdGVj dCB5b3Vyc2VsZiBhZ2FpbnN0IGFjY2lkZW50YWwKKytleGVjdXRpb24gb2YgdW50cnVzdGVkIHNj cmlwdHMgLS0tIEB2YWx1ZXtHREJOfSBwcm92aWRlcyBhIGZlYXR1cmUgZm9yIHByaW50aW5nCisr YWxsIHRoZSBmaWxlcyBhdHRlbXB0ZWQgdG8gYmUgbG9hZGVkLiAgQm90aCBleGlzdGluZyBhbmQg bm9uLWV4aXN0aW5nIGZpbGVzIG1heQorK2JlIHByaW50ZWQuCisrCisrRm9yIGV4YW1wbGUgdGhl IGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBm aWxlcworKyhAcHhyZWZ7QXV0by1sb2FkaW5nIHNhZmUgcGF0aH0pIGFwcGxpZXMgYWxzbyB0byBj YW5vbmljYWxpemVkIGZpbGVuYW1lcyB3aGljaAorK21heSBub3QgYmUgdG9vIG9idmlvdXMgd2hp bGUgc2V0dGluZyBpdCB1cC4KKysKKytAc21hbGxleGFtcGxlCisrKGdkYikgc2V0IGRlYnVnIGF1 dG8tbG9hZCB1ZXMKKysoZ2RiKSBmaWxlIH4vc3JjL3QvdHJ1ZQorK2F1dG8tbG9hZDogTG9hZGlu ZyBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdCAiL3RtcC90cnVlLWdkYi5nZGIi CisrICAgICAgICAgICBmb3Igb2JqZmlsZSAiL3RtcC90cnVlIi4KKythdXRvLWxvYWQ6IFVwZGF0 aW5nIGRpcmVjdG9yaWVzIG9mICIvdXNyOi9vcHQiLgorK2F1dG8tbG9hZDogVXNpbmcgZGlyZWN0 b3J5ICIvdXNyIi4KKythdXRvLWxvYWQ6IFVzaW5nIGRpcmVjdG9yeSAiL29wdCIuCisrd2Fybmlu ZzogRmlsZSAiL3RtcC90cnVlLWdkYi5nZGIiIGF1dG8tbG9hZGluZyBoYXMgYmVlbiBkZWNsaW5l ZAorKyAgICAgICAgIGJ5IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byAiL3Vzcjov b3B0Ii4KKytAZW5kIHNtYWxsZXhhbXBsZQorKworK0B0YWJsZSBAY29kZQorK0BhbmNob3J7c2V0 IGRlYnVnIGF1dG8tbG9hZH0KKytAa2luZGV4IHNldCBkZWJ1ZyBhdXRvLWxvYWQKKytAaXRlbSBz ZXQgZGVidWcgYXV0by1sb2FkIFtvbnxvZmZdCisrU2V0IHdoZXRoZXIgdG8gcHJpbnQgdGhlIGZp bGVuYW1lcyBhdHRlbXB0ZWQgdG8gYmUgYXV0by1sb2FkZWQuCisrCisrQGFuY2hvcntzaG93IGRl YnVnIGF1dG8tbG9hZH0KKytAa2luZGV4IHNob3cgZGVidWcgYXV0by1sb2FkCisrQGl0ZW0gc2hv dyBkZWJ1ZyBhdXRvLWxvYWQKKytTaG93IHdoZXRoZXIgcHJpbnRpbmcgb2YgdGhlIGZpbGVuYW1l cyBhdHRlbXB0ZWQgdG8gYmUgYXV0by1sb2FkZWQgaXMgdHVybmVkCisrb24gb3Igb2ZmLgorK0Bl bmQgdGFibGUKKysKKyBAbm9kZSBNZXNzYWdlcy9XYXJuaW5ncworIEBzZWN0aW9uIE9wdGlvbmFs IFdhcm5pbmdzIGFuZCBNZXNzYWdlcworIAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L3B5dGhvbi9weS1hdXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDk6MjEuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8t bG9hZC5jCTIwMTItMDQtMTggMDA6NTA6MDQuODEwNjI2MjEyICswMjAwCitAQCAtNzUsNyArNzUs MTAgQEAgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydQorICAgaW50IGlz X3NhZmU7CisgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKyAK Ky0gIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFtZSk7CisrICBpc19z YWZlID0gZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZmlsZW5hbWUsCisrCQkJCSAgICBfKCJhdXRv LWxvYWQ6IExvYWRpbmcgUHl0aG9uIHNjcmlwdCBcIiVzXCIgIgorKwkJCQkgICAgICAiYnkgZXh0 ZW5zaW9uIGZvciBvYmpmaWxlIFwiJXNcIi5cbiIpLAorKwkJCQkgICAgZmlsZW5hbWUsIG9iamZp bGUtPm5hbWUpOworIAorICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRv byBzbyAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiCisgICAgICBjYW4gcHJpbnQgaXQu ICAqLworQEAgLTE1Myw3ICsxNTYsMTIgQEAgc291cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0 IG9iamZpbGUgKgorIAkgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7CisgCSAgbWFrZV9j bGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKKyAKKy0JICBpZiAoIWZpbGVfaXNfYXV0b19sb2Fk X3NhZmUgKGZ1bGxfcGF0aCkpCisrCSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmdWxs X3BhdGgsCisrCQkJCSAgICAgICBfKCJhdXRvLWxvYWQ6IExvYWRpbmcgUHl0aG9uIHNjcmlwdCAi CisrCQkJCQkgIlwiJXNcIiBmcm9tIHNlY3Rpb24gXCIlc1wiIG9mICIKKysJCQkJCSAib2JqZmls ZSBcIiVzXCIuXG4iKSwKKysJCQkJICAgICAgIGZ1bGxfcGF0aCwgR0RCUFlfQVVUT19TRUNUSU9O X05BTUUsCisrCQkJCSAgICAgICBvYmpmaWxlLT5uYW1lKSkKKyAJICAgIG9wZW5lZCA9IDA7Cisg CX0KKyAgICAgICBlbHNlCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTEzb2YxOC5wYXRjaCBi L2dkYi1hdXRvbG9hZC0xM29mMTgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMjZlYTE1MwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0xM29mMTgucGF0 Y2gKQEAgLTAsMCArMSwyMyBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAx Mi0wNC9tc2cwMDEzMC5odG1sCisKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8x NyAxNTo1NjoyMQkxLjEyOTcKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8xOCAw NzowMzo1NwkxLjEyOTgKKyMjIC0xLDMgKzEsNyBAQAorKzIwMTItMDQtMTggIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKysJKiBnZGIudGV4aW5mbyAoQXV0 by1sb2FkaW5nIHZlcmJvc2UgbW9kZSk6IEZpeCBzbWFsbGV4YW1wbGUgdHlwby4KKysKKyAyMDEy LTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisgCisg CU5ldyBvcHRpb24gInNldCBkZWJ1ZyBhdXRvLWxvYWQiLgorLS0tIHNyYy9nZGIvZG9jL2dkYi50 ZXhpbmZvCTIwMTIvMDQvMTcgMTU6NTY6MjEJMS45NDQKKysrKyBzcmMvZ2RiL2RvYy9nZGIudGV4 aW5mbwkyMDEyLzA0LzE4IDA3OjAzOjU4CTEuOTQ1CitAQCAtMjExOTIsNyArMjExOTIsNyBAQAor IG1heSBub3QgYmUgdG9vIG9idmlvdXMgd2hpbGUgc2V0dGluZyBpdCB1cC4KKyAKKyBAc21hbGxl eGFtcGxlCistKGdkYikgc2V0IGRlYnVnIGF1dG8tbG9hZCB1ZXMKKysoZ2RiKSBzZXQgZGVidWcg YXV0by1sb2FkIG9uCisgKGdkYikgZmlsZSB+L3NyYy90L3RydWUKKyBhdXRvLWxvYWQ6IExvYWRp bmcgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHQgIi90bXAvdHJ1ZS1nZGIuZ2Ri IgorICAgICAgICAgICAgZm9yIG9iamZpbGUgIi90bXAvdHJ1ZSIuCgpkaWZmIC0tZ2l0IGEvZ2Ri LWF1dG9sb2FkLTE0b2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xNG9mMTgucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFjZmQwZQotLS0gL2Rldi9udWxsCisrKyBi L2dkYi1hdXRvbG9hZC0xNG9mMTgucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAoraHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDE3OC5odG1sCisKKyMjIyBzcmMvZ2Ri L2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8xOCAwNzowMzo1NwkxLjEyOTgKKyMjIyBzcmMvZ2RiL2Rv Yy9DaGFuZ2VMb2cJMjAxMi8wNC8yMiAxNTo0OToyMQkxLjEyOTkKKyMjIC0xLDMgKzEsOCBAQAor KzIwMTItMDQtMjIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K KysKKysJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IFJlcGxhY2UgQGl0 ZW1pemUgQGJ1bGxldAorKwlieSBAdGFibGUgQGFzaXMuICBGaXggZm9ybWF0dGluZyBvZiBvbmUg aXRlbS4KKysKKyAyMDEyLTA0LTE4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+CisgCisgCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyB2ZXJib3NlIG1vZGUp OiBGaXggc21hbGxleGFtcGxlIHR5cG8uCistLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAx Mi8wNC8xOCAwNzowMzo1OAkxLjk0NQorKysrIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIv MDQvMjIgMTU6NDk6MjEJMS45NDYKK0BAIC0yMTEzNiw4ICsyMTEzNiw4IEBACisgVG8gZm9yY2Ug QHZhbHVle0dEQk59IHRvIGxvYWQgdGhlIGZpbGVzIGl0IGRlY2xpbmVkIHRvIGxvYWQgaW4gdGhl IHByZXZpb3VzCisgZXhhbXBsZSwgeW91IGNvdWxkIHVzZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB3 YXlzOgorIAorLUBpdGVtaXplIEBidWxsZXQKKy1AaXRlbSB+Ly5nZGJpbml0OiBhZGQtYXV0by1s b2FkLXNhZmUtcGF0aCB+L3NyYy9nZGIKKytAdGFibGUgQGFzaXMKKytAaXRlbSBAZmlsZXt+Ly5n ZGJpbml0fTogQHNhbXB7YWRkLWF1dG8tbG9hZC1zYWZlLXBhdGggfi9zcmMvZ2RifQorIFNwZWNp ZnkgdGhpcyB0cnVzdGVkIGRpcmVjdG9yeSAob3IgYSBmaWxlKSBhcyBhZGRpdGlvbmFsIGNvbXBv bmVudCBvZiB0aGUgbGlzdC4KKyBZb3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28gYW55IGV4aXN0aW5n IGRpcmVjdG9yaWVzIGRpc3BsYXllZCBieQorIGJ5IEBzYW1we3Nob3cgYXV0by1sb2FkIHNhZmUt cGF0aH0gKHN1Y2ggYXMgQHNhbXB7L3VzcjovYmlufSBpbiB0aGlzIGV4YW1wbGUpLgorQEAgLTIx MTU1LDIwICsyMTE1NSwyMCBAQAorIER1cmluZyBjb21waWxhdGlvbiBvZiBAdmFsdWV7R0RCTn0g eW91IG1heSBkaXNhYmxlIGFueSBhdXRvLWxvYWRpbmcgc2FmZXR5LgorIFRoaXMgYXNzdW1lcyBh bGwgdGhlIGZpbGVzIHlvdSB3aWxsIGV2ZXIgZGVidWcgd2l0aCB0aGlzIEB2YWx1ZXtHREJOfSBj b21lIGZyb20KKyB0cnVzdGVkIHNvdXJjZXMuCistQGVuZCBpdGVtaXplCisrQGVuZCB0YWJsZQor IAorIE9uIHRoZSBvdGhlciBoYW5kIHlvdSBjYW4gYWxzbyBleHBsaWNpdGx5IGZvcmJpZCBhdXRv bWF0aWMgZmlsZXMgbG9hZGluZyB3aGljaAorIGFsc28gc3VwcHJlc3NlcyBhbnkgc3VjaCB3YXJu aW5nIG1lc3NhZ2VzOgorIAorLUBpdGVtaXplIEBidWxsZXQKKytAdGFibGUgQGFzaXMKKyBAaXRl bSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBbQGRvdHN7fV19CisgWW91IGNhbiB1 c2UgQHZhbHVle0dEQk59IGNvbW1hbmQtbGluZSBvcHRpb24gZm9yIGEgc2luZ2xlIEB2YWx1ZXtH REJOfSBzZXNzaW9uLgorIAorLUBpdGVtIEBzYW1we34vLmdkYmluaXR9OiBAc2FtcHtzZXQgYXV0 by1sb2FkIG5vfQorK0BpdGVtIEBmaWxle34vLmdkYmluaXR9OiBAc2FtcHtzZXQgYXV0by1sb2Fk IG5vfQorIERpc2FibGUgYXV0by1sb2FkaW5nIGdsb2JhbGx5IGZvciB0aGUgdXNlcgorIChAcHhy ZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBXaGlsZSBpdCBpcyBpbXByb2JhYmxlLCB5 b3UgY291bGQgYWxzbworIHVzZSBzeXN0ZW0gaW5pdCBmaWxlIGluc3RlYWQgKEBweHJlZntTeXN0 ZW0td2lkZSBjb25maWd1cmF0aW9ufSkuCistQGVuZCBpdGVtaXplCisrQGVuZCB0YWJsZQorIAor IFRoaXMgc2V0dGluZyBhcHBsaWVzIHRvIHRoZSBmaWxlIG5hbWVzIGFzIGVudGVyZWQgYnkgdXNl ci4gIElmIG5vIGVudHJ5IG1hdGNoZXMKKyBAdmFsdWV7R0RCTn0gdHJpZXMgYXMgYSBsYXN0IHJl c29ydCB0byBhbHNvIHJlc29sdmUgYWxsIHRoZSBmaWxlIG5hbWVzIGludG8KCmRpZmYgLS1naXQg YS9nZGItYXV0b2xvYWQtMTVvZjE4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTE1b2YxOC5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTU2ODQ2Ci0tLSAvZGV2L251bGwK KysrIGIvZ2RiLWF1dG9sb2FkLTE1b2YxOC5wYXRjaApAQCAtMCwwICsxLDM4IEBACitodHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTgzLmh0bWwKKworIyMjIHNy Yy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA0LzIyIDE1OjQ5OjIxCTEuMTI5OQorIyMjIHNyYy9n ZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA0LzIzIDE3OjIwOjU2CTEuMTMwMAorIyMgLTEsMyArMSw4 IEBACisrMjAxMi0wNC0yMyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgorKworKwkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogUmVtb3Zl IHRyYWlsaW5nIFtAZG90c3t9XS4KKysJVGhyZWUgdGltZXMuCisrCisgMjAxMi0wNC0yMiAgSmFu IEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorIAkqIGdkYi50ZXhp bmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogUmVwbGFjZSBAaXRlbWl6ZSBAYnVsbGV0Cist LS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNC8yMiAxNTo0OToyMQkxLjk0NgorKysr IHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMjMgMTc6MjA6NTYJMS45NDcKK0BAIC0y MTE0MiwxMSArMjExNDIsMTEgQEAKKyBZb3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28gYW55IGV4aXN0 aW5nIGRpcmVjdG9yaWVzIGRpc3BsYXllZCBieQorIGJ5IEBzYW1we3Nob3cgYXV0by1sb2FkIHNh ZmUtcGF0aH0gKHN1Y2ggYXMgQHNhbXB7L3VzcjovYmlufSBpbiB0aGlzIGV4YW1wbGUpLgorIAor LUBpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+ L3NyYy9nZGIiIFtAZG90c3t9XX0KKytAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2Fk IHNhZmUtcGF0aCAvdXNyOi9iaW46fi9zcmMvZ2RiIn0KKyBTcGVjaWZ5IHRoaXMgZGlyZWN0b3J5 IGFzIGluIHRoZSBwcmV2aW91cyBjYXNlIGJ1dCBqdXN0IGZvciBhIHNpbmdsZQorIEB2YWx1ZXtH REJOfSBzZXNzaW9uLgorIAorLUBpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2Fm ZS1wYXRoIiBbQGRvdHN7fV19CisrQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBz YWZlLXBhdGgifQorIERpc2FibGUgYXV0by1sb2FkaW5nIHNhZmV0eSBmb3IgYSBzaW5nbGUgQHZh bHVle0dEQk59IHNlc3Npb24uCisgVGhpcyBhc3N1bWVzIGFsbCB0aGUgZmlsZXMgeW91IGRlYnVn IGR1cmluZyB0aGlzIEB2YWx1ZXtHREJOfSBzZXNzaW9uIHdpbGwgY29tZQorIGZyb20gdHJ1c3Rl ZCBzb3VyY2VzLgorQEAgLTIxMTYxLDcgKzIxMTYxLDcgQEAKKyBhbHNvIHN1cHByZXNzZXMgYW55 IHN1Y2ggd2FybmluZyBtZXNzYWdlczoKKyAKKyBAdGFibGUgQGFzaXMKKy1AaXRlbSBAa2Jke2dk YiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBbQGRvdHN7fV19CisrQGl0ZW0gQGtiZHtnZGIgLWll eCAic2V0IGF1dG8tbG9hZCBubyJ9CisgWW91IGNhbiB1c2UgQHZhbHVle0dEQk59IGNvbW1hbmQt bGluZSBvcHRpb24gZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgorIAorIEBpdGVt IEBmaWxle34vLmdkYmluaXR9OiBAc2FtcHtzZXQgYXV0by1sb2FkIG5vfQoKZGlmZiAtLWdpdCBh L2dkYi1hdXRvbG9hZC0xNm9mMTgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTZvZjE4LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmYTg4ZTYKLS0tIC9kZXYvbnVsbAor KysgYi9nZGItYXV0b2xvYWQtMTZvZjE4LnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK2h0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxODQuaHRtbAorCisjIyMgc3Jj L2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjMgMTc6MjA6NTYJMS4xMzAwCisjIyMgc3JjL2dk Yi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjMgMTc6MjY6MDAJMS4xMzAxCisjIyAtMyw2ICszLDkg QEAKKyAJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IFJlbW92ZSB0cmFp bGluZyBbQGRvdHN7fV0uCisgCVRocmVlIHRpbWVzLgorIAorKwkqIGdkYi50ZXhpbmZvIChBdXRv LWxvYWRpbmcgc2FmZSBwYXRoKTogQWRkIHRyYWlsaW5nIEBkb3Rze30uCisrCVRocmVlIHRpbWVz LgorKworIDIwMTItMDQtMjIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KKyAKKyAJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IFJlcGxh Y2UgQGl0ZW1pemUgQGJ1bGxldAorLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQv MjMgMTc6MjA6NTYJMS45NDcKKysrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzIz IDE3OjI2OjAxCTEuOTQ4CitAQCAtMjExNDIsMTEgKzIxMTQyLDExIEBACisgWW91IGhhdmUgdG8g c3BlY2lmeSBhbHNvIGFueSBleGlzdGluZyBkaXJlY3RvcmllcyBkaXNwbGF5ZWQgYnkKKyBieSBA c2FtcHtzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGh9IChzdWNoIGFzIEBzYW1wey91c3I6L2Jpbn0g aW4gdGhpcyBleGFtcGxlKS4KKyAKKy1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2Fk IHNhZmUtcGF0aCAvdXNyOi9iaW46fi9zcmMvZ2RiIn0KKytAaXRlbSBAa2Jke2dkYiAtaWV4ICJz ZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAvdXNyOi9iaW46fi9zcmMvZ2RiIiBAZG90c3t9fQorIFNw ZWNpZnkgdGhpcyBkaXJlY3RvcnkgYXMgaW4gdGhlIHByZXZpb3VzIGNhc2UgYnV0IGp1c3QgZm9y IGEgc2luZ2xlCisgQHZhbHVle0dEQk59IHNlc3Npb24uCisgCistQGl0ZW0gQGtiZHtnZGIgLWll eCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgifQorK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBh dXRvLWxvYWQgc2FmZS1wYXRoIiBAZG90c3t9fQorIERpc2FibGUgYXV0by1sb2FkaW5nIHNhZmV0 eSBmb3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Npb24uCisgVGhpcyBhc3N1bWVzIGFsbCB0 aGUgZmlsZXMgeW91IGRlYnVnIGR1cmluZyB0aGlzIEB2YWx1ZXtHREJOfSBzZXNzaW9uIHdpbGwg Y29tZQorIGZyb20gdHJ1c3RlZCBzb3VyY2VzLgorQEAgLTIxMTYxLDcgKzIxMTYxLDcgQEAKKyBh bHNvIHN1cHByZXNzZXMgYW55IHN1Y2ggd2FybmluZyBtZXNzYWdlczoKKyAKKyBAdGFibGUgQGFz aXMKKy1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIn0KKytAaXRlbSBAa2Jk e2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBAZG90c3t9fQorIFlvdSBjYW4gdXNlIEB2YWx1 ZXtHREJOfSBjb21tYW5kLWxpbmUgb3B0aW9uIGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vz c2lvbi4KKyAKKyBAaXRlbSBAZmlsZXt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1dG8tbG9hZCBu b30KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTdvZjE4LnBhdGNoIGIvZ2RiLWF1dG9sb2Fk LTE3b2YxOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTRhYWY5 Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTE3b2YxOC5wYXRjaApAQCAtMCwwICsx LDE1OCBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNn MDA3NTYuaHRtbAorU3ViamVjdDogUmU6IFtwYXRjaF0gYXV0by1sb2FkIHNhZmUtcGF0aCByZXNl dCBiYWNrIGJ5IHNldCAiIgorIC0gUGF0Y2hlZCBvdXQgIih3aXRob3V0IHRoZSBxdW90ZXMpIi4K KworT24gU3VuLCAyMiBBcHIgMjAxMiAyMjoxNjozMiArMDIwMCwgRWxpIFphcmV0c2tpaSB3cm90 ZToKKz4gPiArQGl0ZW0gc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggW0B2YXJ7ZGlyZWN0b3JpZXN9 XQorPiAKKz4gWW91IG5lZWQgQHJ7fSBhcm91bmQgWyBhbmQgXS4KKz4gCis+ID4gK1NldHRpbmcg dGhpcyB2YXJpYWJsZSB0byBAY29kZXsiLyJ9ICh3aXRob3V0IHRoZSBxdW90ZXMpIGRpc2FibGVz IHRoaXMgc2VjdXJpdHkKKz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl5eXl4K Kz4gV2h5IG5vdCBAZmlsZXsvfT8gIFRoZSBxdW90ZXMgYXJlIG5vdCBuZWVkZWQgaW4gYW55IGNh c2UuCisKK2RvbmUuCisKKworSW4gZmFjdCB0aGlzIHBhdGNoIGlzIHVucmVsYXRlZCB0byB0aGUg RG91ZydzIHN1Z2dlc3Rpb24sIHJlcG9zdGluZyBpdCBvbmx5Cit3aXRoIHRoZSBkb2MgdXBkYXRl LgorCisKK1RoYW5rcywKK0phbgorCisKK2dkYi8KKzIwMTItMDQtMjMgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogYXV0by1sb2FkLmMgKHNldF9hdXRv X2xvYWRfc2FmZV9wYXRoKTogUmVzZXQgQVVUT19MT0FEX1NBRkVfUEFUSAorCWJhY2sgdG8gREVG QVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIIGlmIGl0IGlzIGJlaW5nIHNldCB0byAiIi4KKwkoc2hv d19hdXRvX2xvYWRfc2FmZV9wYXRoKTogQ2hlY2sgYW55LWRpcmVjdG9yeSBieSBjb21wYXJpc29u IHdpdGggIi8iLgorCShhZGRfYXV0b19sb2FkX3NhZmVfcGF0aCk6IENoYW5nZSB0aGUgZXJyb3Ig bWVzc2FnZS4KKwkoX2luaXRpYWxpemVfYXV0b19sb2FkKTogQ2hhbmdlIHRoZSAic2FmZS1wYXRo IiBoZWxwIHRleHQuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUKKwkqIGNvbmZpZ3VyZS5hYyAo LS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGgpOiBTZXQKKwlXSVRIX0FVVE9fTE9BRF9TQUZF X1BBVEggdG8gLy4KKworZ2RiL2RvYy8KKzIwMTItMDQtMjMgIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBz YWZlIHBhdGgpOiBNYWtlICdkaXJlY3RvcmllcycKKwlmb3IgJ3NldCBhdXRvLWxvYWQgc2FmZS1w YXRoJyBvcHRpb25hbC4gIE1lbnRpb24gaWYgaXQgaXMgb21pdHRlZC4KKwlDaGFuZ2UgZGlzYWJs aW5nIHNlY3VyaXR5IHByb3RlY3Rpb24gY29uZGl0aW9uIHRvICIvIiwgdHdpY2UuCisKK2RpZmYg LS1naXQgYS9nZGIvYXV0by1sb2FkLmMgYi9nZGIvYXV0by1sb2FkLmMKK2luZGV4IDlkMTkxNzku LjZjMTMwOWYgMTAwNjQ0CistLS0gYS9nZGIvYXV0by1sb2FkLmMKKysrKyBiL2dkYi9hdXRvLWxv YWQuYworQEAgLTE4MSw2ICsxODEsMTIgQEAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRl ICh2b2lkKQorIHN0YXRpYyB2b2lkCisgc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGggKGNoYXIgKmFy Z3MsIGludCBmcm9tX3R0eSwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCisgeworKyAgaWYg KGF1dG9fbG9hZF9zYWZlX3BhdGhbMF0gPT0gJ1wwJykKKysgICAgeworKyAgICAgIHhmcmVlIChh dXRvX2xvYWRfc2FmZV9wYXRoKTsKKysgICAgICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0cmR1 cCAoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIKTsKKysgICAgfQorKworICAgYXV0b19sb2Fk X3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOworIH0KKyAKK0BAIC0xOTAsNyArMTk2LDcgQEAgc3Rh dGljIHZvaWQKKyBzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGggKHN0cnVjdCB1aV9maWxlICpmaWxl LCBpbnQgZnJvbV90dHksCisgCQkJICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3Qg Y2hhciAqdmFsdWUpCisgeworLSAgaWYgKCp2YWx1ZSA9PSAwKQorKyAgaWYgKHN0cmNtcCAodmFs dWUsICIvIikgPT0gMCkKKyAgICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2Fk IGZpbGVzIGFyZSBzYWZlIHRvIGxvYWQgZnJvbSBhbnkgIgorIAkJCSAgICAgICJkaXJlY3Rvcnku XG4iKSk7CisgICBlbHNlCitAQCAtMjA5LDggKzIxNSw5IEBAIGFkZF9hdXRvX2xvYWRfc2FmZV9w YXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisgCisgICBpZiAoYXJncyA9PSBOVUxMIHx8 ICphcmdzID09IDApCisgICAgIGVycm9yIChfKCJcCistQWRkaW5nIGVtcHR5IGRpcmVjdG9yeSBl bGVtZW50IGRpc2FibGVzIHRoZSBhdXRvLWxvYWQgc2FmZS1wYXRoIHNlY3VyaXR5LiAgXAorLVVz ZSAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgnIGluc3RlYWQgaWYgeW91IG1lYW4gdGhhdC4iKSk7 CisrRGlyZWN0b3J5IGFyZ3VtZW50IHJlcXVpcmVkLlxuXAorK1VzZSAnc2V0IGF1dG8tbG9hZCBz YWZlLXBhdGggLycgZm9yIGRpc2FibGluZyB0aGUgYXV0by1sb2FkIHNhZmUtcGF0aCBzZWN1cml0 eS5cCisrIikpOworIAorICAgcyA9IHhzdHJwcmludGYgKCIlcyVjJXMiLCBhdXRvX2xvYWRfc2Fm ZV9wYXRoLCBESVJOQU1FX1NFUEFSQVRPUiwgYXJncyk7CisgICB4ZnJlZSAoYXV0b19sb2FkX3Nh ZmVfcGF0aCk7CitAQCAtMTAyMyw4ICsxMDMwLDEwIEBAIFNldCB0aGUgbGlzdCBvZiBkaXJlY3Rv cmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLiIpLCBfKCJcCisg U2hvdyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0 by1sb2FkIGZpbGVzLiIpLCBfKCJcCisgVmFyaW91cyBmaWxlcyBsb2FkZWQgYXV0b21hdGljYWxs eSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIC4uLicgb3B0aW9ucyBtdXN0XG5cCisgYmUgbG9jYXRl ZCBpbiBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzIGxpc3RlZCBieSB0aGlzIG9wdGlvbi4gIFdhcm5p bmcgd2lsbCBiZVxuXAorLXByaW50ZWQgYW5kIGZpbGUgd2lsbCBub3QgYmUgdXNlZCBvdGhlcndp c2UuICBVc2UgZW1wdHkgc3RyaW5nIChvciBldmVuXG5cCistZW1wdHkgZGlyZWN0b3J5IGVudHJ5 KSB0byBhbGxvdyBhbnkgZmlsZSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIC4uLicgb3B0aW9ucy5c blwKKytwcmludGVkIGFuZCBmaWxlIHdpbGwgbm90IGJlIHVzZWQgb3RoZXJ3aXNlLlxuXAorK1Nl dHRpbmcgdGhpcyBwYXJhbWV0ZXIgdG8gYW4gZW1wdHkgbGlzdCByZXNldHMgaXQgdG8gaXRzIGRl ZmF1bHQgdmFsdWUuXG5cCisrU2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byAnLycgKHdpdGhvdXQg dGhlIHF1b3RlcykgYWxsb3dzIGFueSBmaWxlXG5cCisrZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAu Li4nIG9wdGlvbnMuXG5cCisgVGhpcyBvcHRpb24gaXMgaWdub3JlZCBmb3IgdGhlIGtpbmRzIG9m IGZpbGVzIGhhdmluZyAnc2V0IGF1dG8tbG9hZCAuLi4gb2ZmJy5cblwKKyBUaGlzIG9wdGlvbnMg aGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKKyAJ CQkJICAgICBzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCwKK2RpZmYgLS1naXQgYS9nZGIvY29uZmln dXJlIGIvZ2RiL2NvbmZpZ3VyZQoraW5kZXggNTRjMjM5OS4uNDJkMmZiZCAxMDA3NTUKKy0tLSBh L2dkYi9jb25maWd1cmUKKysrKyBiL2dkYi9jb25maWd1cmUKK0BAIC00OTQ5LDcgKzQ5NDksNyBA QCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoLi4u ICIgPiY2OyB9CisgIyBDaGVjayB3aGV0aGVyIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoIHdh cyBnaXZlbi4KKyBpZiB0ZXN0ICIke3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCtzZXR9IiA9IHNl dDsgdGhlbiA6CisgICB3aXRodmFsPSR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg7IGlmIHRlc3Qg IiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgorLSAgIHdpdGhfYXV0b19s b2FkX3NhZmVfcGF0aD0iIgorKyAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iLyIKKyAgZmkK KyBlbHNlCisgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgiCitkaWZmIC0tZ2l0 IGEvZ2RiL2NvbmZpZ3VyZS5hYyBiL2dkYi9jb25maWd1cmUuYWMKK2luZGV4IGE0MGMyZTUuLjli ZGUxOGYgMTAwNjQ0CistLS0gYS9nZGIvY29uZmlndXJlLmFjCisrKysgYi9nZGIvY29uZmlndXJl LmFjCitAQCAtMTQwLDcgKzE0MCw3IEBAIEFDX0FSR19XSVRIKGF1dG8tbG9hZC1zYWZlLXBhdGgs CisgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEhdLCBbZGly ZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzXSkKKyBBU19IRUxQX1NUUklO RyhbLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGhdLCBbZG8gbm90IHJlc3RyaWN0IGF1dG8t bG9hZGVkIGZpbGVzIGxvY2F0aW9uc10pLAorIFtpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2Fm ZV9wYXRoIiA9ICJubyI7IHRoZW4KKy0gICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiIKKysg ICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCisgIGZpXSwKKyBbd2l0aF9hdXRvX2xvYWRf c2FmZV9wYXRoPSIkcHJlZml4Il0pCisgQUNfREVGSU5FX0RJUihERUZBVUxUX0FVVE9fTE9BRF9T QUZFX1BBVEgsIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCwKK2RpZmYgLS1naXQgYS9nZGIvZG9j L2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbworaW5kZXggYTJhNGViMy4uNDZkZGUy NyAxMDA2NDQKKy0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8KKysrKyBiL2dkYi9kb2MvZ2RiLnRl eGluZm8KK0BAIC0yMTEwNSw5ICsyMTEwNSwxMiBAQCBUaGUgbGlzdCBvZiB0cnVzdGVkIGRpcmVj dG9yaWVzIGlzIGNvbnRyb2xsZWQgYnkgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKKyBAdGFibGUg QGNvZGUKKyBAYW5jaG9ye3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofQorIEBraW5kZXggc2V0IGF1 dG8tbG9hZCBzYWZlLXBhdGgKKy1AaXRlbSBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCBAdmFye2Rp cmVjdG9yaWVzfQorK0BpdGVtIHNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIEBye1t9QHZhcntkaXJl Y3Rvcmllc31AcntdfQorIFNldCB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyAoYW5kIHRoZWlyIHN1 YmRpcmVjdG9yaWVzKSB0cnVzdGVkIGZvciBhdXRvbWF0aWMKKyBsb2FkaW5nIGFuZCBleGVjdXRp b24gb2Ygc2NyaXB0cy4gIFlvdSBjYW4gYWxzbyBlbnRlciBhIHNwZWNpZmljIHRydXN0ZWQgZmls ZS4KKytJZiB5b3Ugb21pdCBAdmFye2RpcmVjdG9yaWVzfSwgQHNhbXB7YXV0by1sb2FkIHNhZmUt cGF0aH0gd2lsbCBiZSByZXNldCB0bworK2l0cyBkZWZhdWx0IHZhbHVlIGFzIHNwZWNpZmllZCBk dXJpbmcgQHZhbHVle0dEQk59IGNvbXBpbGF0aW9uLgorKworIFRoZSBsaXN0IG9mIGRpcmVjdG9y aWVzIHVzZXMgZGlyZWN0b3J5IHNlcGFyYXRvciAoQHNhbXB7On0gb24gR05VIGFuZCBVbml4Cisg c3lzdGVtcywgQHNhbXB7O30gb24gTVMtV2luZG93cyBhbmQgTVMtRE9TKSB0byBzZXBhcmF0ZSBk aXJlY3Rvcmllcywgc2ltaWxhcmx5CisgdG8gdGhlIEBlbnZ7UEFUSH0gZW52aXJvbm1lbnQgdmFy aWFibGUuCitAQCAtMjExMjYsNyArMjExMjksOCBAQCBsb2FkaW5nIGFuZCBleGVjdXRpb24gb2Yg c2NyaXB0cy4gIE11bHRpcGxlIGVudHJpZXMgbWF5IGJlIGRlbGltaXRlZCBieSB0aGUKKyBob3N0 IHBsYXRmb3JtIGRpcmVjdG9yeSBzZXBhcmF0b3IgaW4gdXNlLgorIEBlbmQgdGFibGUKKyAKKy1T ZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gYW4gZW1wdHkgc3RyaW5nIGRpc2FibGVzIHRoaXMgc2Vj dXJpdHkgcHJvdGVjdGlvbi4KKytTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gQGZpbGV7L30gZGlz YWJsZXMgdGhpcyBzZWN1cml0eQorK3Byb3RlY3Rpb24uCisgVGhpcyB2YXJpYWJsZSBpcyBzdXBw b3NlZCB0byBiZSBzZXQgdG8gdGhlIHN5c3RlbSBkaXJlY3RvcmllcyB3cml0YWJsZSBieSB0aGUK KyBzeXN0ZW0gc3VwZXJ1c2VyIG9ubHkuICBVc2VycyBjYW4gYWRkIHRoZWlyIHNvdXJjZSBkaXJl Y3RvcmllcyBpbiBpbml0IGZpbGVzIGluCisgdGhlaXIgaG9tZSBkaXJlY3RvcmllcyAoQHB4cmVm e0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pLiAgU2VlIGFsc28gZGVwcmVjYXRlZAorQEAgLTIx MTQ2LDcgKzIxMTUwLDcgQEAgYnkgQHNhbXB7c2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRofSAoc3Vj aCBhcyBAc2FtcHsvdXNyOi9iaW59IGluIHRoaXMgZXhhbXBsZSkuCisgU3BlY2lmeSB0aGlzIGRp cmVjdG9yeSBhcyBpbiB0aGUgcHJldmlvdXMgY2FzZSBidXQganVzdCBmb3IgYSBzaW5nbGUKKyBA dmFsdWV7R0RCTn0gc2Vzc2lvbi4KKyAKKy1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1s b2FkIHNhZmUtcGF0aCIgQGRvdHN7fX0KKytAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1s b2FkIHNhZmUtcGF0aCAvIiBAZG90c3t9fQorIERpc2FibGUgYXV0by1sb2FkaW5nIHNhZmV0eSBm b3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Npb24uCisgVGhpcyBhc3N1bWVzIGFsbCB0aGUg ZmlsZXMgeW91IGRlYnVnIGR1cmluZyB0aGlzIEB2YWx1ZXtHREJOfSBzZXNzaW9uIHdpbGwgY29t ZQorIGZyb20gdHJ1c3RlZCBzb3VyY2VzLgorCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTE4 b2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xOG9mMTgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uYzgxOWU0NwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9h ZC0xOG9mMTgucGF0Y2gKQEAgLTAsMCArMSwyMzEgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAwNzU4Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gYXV0 by1sb2FkIHNhZmUtcGF0aCBkZWZhdWx0PSRkZGlyL2F1dG8tbG9hZCAgW1JlOiBbcGF0Y2hdIGF1 dG8tbG9hZCBzYWZlLXBhdGggcmVzZXQgYmFjayBieSBzZXQgIiJdCisKK09uIFN1biwgMjIgQXBy IDIwMTIgMjM6MjY6MTYgKzAyMDAsIERvdWcgRXZhbnMgd3JvdGU6Cis+IEEgdGhvdWdodCBvY2N1 cnJlZCB0byBtZSByZWdhcmRpbmcgdGhlIGRlZmF1bHQgdmFsdWUgb2YgYXV0by1sb2FkLXBhdGgK Kz4gPSAke3ByZWZpeH0uCisKK1RoaXMgaXMgdW5yZWxhdGVkIHRvIHRoaXMgcGF0Y2ggYnV0IHRo YW5rcyBmb3IgdGhlIHN1Z2dlc3Rpb24uCisKKworPiBTbyBJIHdhcyB3b25kZXJpbmcgaWYgd2Ug cmVhbGx5IHdhbnQgc2VjdXJpdHkgdG8gYmUgb24gYnkgZGVmYXVsdCwKKz4gc2hvdWxkIHRoZSBk ZWZhdWx0IHZhbHVlIGJlIGdkYidzIGRhdGEtZGlyZWN0b3J5IChlLmcuLAorPiAkcHJlZml4L3No YXJlL2dkYikgKyAkZXhlY19wcmVmaXgvbGlieywzMiw2NH0gKyA/Pz8KKworTWFkZSBpdCB0aGVy ZWZvcmUgJGRkaXIvYXV0by1sb2FkLCBvbiBhbiBpZGVhbCBzeXN0ZW0vZGlzdHJvIHdlIGNhbiBj aGFuZ2UgYWxsCit0aGUgYXV0by1sb2FkZWQgR0RCIGZpbGVzIHRvIGJlIGxvY2F0ZWQgdW5kZXIg JGRkaXIvYXV0by1sb2FkLiAgSSBoYXZlIGZpbGVkCitmb3IgdGhlIG9ubHkgcmVtYWluaW5nIHZp b2xhdGlvbiAoL3Vzci9iaW4vbW9uby1nZGIucHkpIGtub3duIHRvIG1lOgorCWh0dHBzOi8vYnVn emlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9ODE1NTAxCisJKFN1cmUgSSB3aWxsIGFz ayBhYm91dCB1cHN0cmVhbWluZyBvZiB0aGUgY2hhbmdlLikKKworCis+IFBsdXMsIGl0IHNlZW1z IGxpa2UgYXQgbGVhc3QgZGF0YS1kaXJlY3Rvcnkgc2hvdWxkIGJlIHJlbG9jYXRhYmxlLgorPiBJ bXBsZW1lbnRpbmcgdGhpcyBtaWdodCBiZSBjdW1iZXJzb21lIHVubGVzcyBkYXRhLWRpcmVjdG9y eSB3YXMKKz4gcmVwcmVzZW50ZWQgYXMgc29tZXRoaW5nIGxpa2UgIiRkZGlyIi4KKworRG9uZS4g IFVuZm9ydHVuYXRlbHkgdGhpcyBzdGlsbCBkb2VzIG5vdCBmaXggdGhlICIuL2dkYiIgcnVuIGZv ciBhIG5ld2x5IGJ1aWx0CitHREIuICBOZXdseSBidWlsdCBHREIgcHJvYmFibHkgY291bGQgdXNl ICItZGF0YS1kaXJlY3RvcnkgJFBXRC9kYXRhLWRpcmVjdG9yeSIKKyhpZiBHREIncyBwcm9ncmFt IGRpciBjb250YWlucyAiZGF0YS1kaXJlY3RvcnkiIHNvcnQgb2YgcmVsb2NhdGlvbikuCitXZSBj b3VsZCB0aGVuIGNoYW5nZSBjdXJyZW50CisJZ2RiLWdkYi5nZGIuaW4gLT4gZ2RiLWdkYi5nZGIK K3RvCisJZ2RiLWdkYi5nZGIuaW4gLT4gZGF0YS1kaXJlY3RvcnkvYXV0by1sb2FkLyRQV0QvZ2Ri LWdkYi5nZGIKK2FuZCBldmVuIGluc3RhbGwgdGhlIGZpbGUgKHdpdGggcHJvcGVyIGluc3RhbGxh dGlvbiBkaXJlY3RvcmllcykgYXM6CisJL3Vzci9zaGFyZS9nZGIvdXNyL2Jpbi9nZGItZ2RiLmdk YgorCShhZGRpdGlvbmFsbHkgZW5zdXJpbmcgZm9yIGV4YW1wbGUgaW4gRmVkb3JhIC0gaW4gaXRz IC5zcGVjIGZpbGUKKwlAc3JjZGlyQCBnZXRzIHN1YnN0aXR1dGVkIHJpZ2h0IGZvciBGZWRvcmEg Ki1kZWJ1Z2luZm8ucnBtKQorCitXb3VsZCBpdCBtYWtlIGV2ZXJ5b25lIGhhcHB5PworCisKK1Ro YW5rcywKK0phbgorCisKK2dkYi8KKzIwMTItMDQtMjMgIEphbiBLcmF0b2NodmlsICA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCUNoYW5nZSBhdXRvLWxvYWQgc2FmZS1wYXRoIGRlZmF1 bHQgdG8gJGRkaXIvYXV0by1sb2FkLgorCSogYXV0by1sb2FkLmMgKGF1dG9fbG9hZF9zYWZlX3Bh dGhfdmVjX3VwZGF0ZSk6IENhbGwKKwlzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50IGZvciAkZGRp ci4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKwkqIGNvbmZpZ3VyZS5hYyAoLS13aXRoLWF1 dG8tbG9hZC1zYWZlLXBhdGgpOiBTdWdnZXN0ICRkZGlyIHN5bnRheC4KKwlDaGFuZ2UgdGhlIGRl ZmF1bHQgdG8gXFxcJGRkaXIvYXV0by1sb2FkLgorCSogZGVmcy5oIChzdWJzdGl0dXRlX3BhdGhf Y29tcG9uZW50KTogTmV3IGRlY2xhcmF0aW9uLgorCSogdXRpbHMuYyAoc3Vic3RpdHV0ZV9wYXRo X2NvbXBvbmVudCk6IE5ldyBmdW5jdGlvbi4KKworZ2RiL2RvYy8KKzIwMTItMDQtMjMgIEphbiBL cmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCUNoYW5nZSBhdXRvLWxv YWQgc2FmZS1wYXRoIGRlZmF1bHQgdG8gJGRkaXIvYXV0by1sb2FkLgorCSogZ2RiLnRleGluZm8g KEF1dG8tbG9hZGluZyk6IENoYW5nZSBzaG93biBzYWZlLXBhdGggZGVmYXVsdCB0bworCSRkZGly L2F1dG8tbG9hZC4KKwkoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IENoYW5nZSB0aGUgc2FtcGxl IHdhcm5pbmcgdG8gJGRkaXIvYXV0by1sb2FkLgorCVR3aWNlLiAgTWVudGlvbiB0aGUgJGRkaXIg c3Vic3RpdHV0aW9uLgorCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2Fk LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9h ZC5jCTIwMTItMDQtMjQgMTg6MTI6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0yNCAxODoxMjozOC44MTkyNzk1NzQgKzAy MDAKK0BAIC0xNDEsOCArMTQxLDEyIEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAo dm9pZCkKKyAgIGZvciAoaXggPSAwOyBpeCA8IGxlbjsgaXgrKykKKyAgICAgeworICAgICAgIGNo YXIgKmRpciA9IFZFQ19pbmRleCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBp eCk7CistICAgICAgY2hhciAqZXhwYW5kZWQgPSB0aWxkZV9leHBhbmQgKGRpcik7CistICAgICAg Y2hhciAqcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7CisrICAgICAgY2hhciAq ZXhwYW5kZWQsICpyZWFsX3BhdGg7CisrCisrICAgICAgZXhwYW5kZWQgPSB0aWxkZV9leHBhbmQg KGRpcik7CisrICAgICAgc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCAoJmV4cGFuZGVkLCAiJGRk aXIiLCBnZGJfZGF0YWRpcik7CisrCisrICAgICAgcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChl eHBhbmRlZCk7CisgCisgICAgICAgLyogRW5zdXJlIHRoZSBjdXJyZW50IGVudHJ5IGlzIGF0IGxl YXN0IHRpbGRlX2V4cGFuZC1lZC4gICovCisgICAgICAgVkVDX3JlcGxhY2UgKGNoYXJfcHRyLCBh dXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGV4cGFuZGVkKTsKK0luZGV4OiBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9jb25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIw MTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDEyLTA0LTI0IDE4OjEyOjIxLjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQkyMDEyLTA0LTI0IDE4OjEy OjM4LjgyMjI3OTU2NiArMDIwMAorQEAgLTE2NjgsNyArMTY2OCw4IEBAIE9wdGlvbmFsIFBhY2th Z2VzOgorICAgLS13aXRoLXJwbSAgICAgICAgICAgICAgcXVlcnkgcnBtIGRhdGFiYXNlIGZvciBt aXNzaW5nIGRlYnVnaW5mb3MgKHllcy9ubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl Zi4gYXV0bz1saWJycG0uc28pCisgICAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRICist ICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1s b2FkZWQgZmlsZXMKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIHNhZmUg dG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcywgdXNlCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAnXFxcJGRkaXInIGZvciAtZGF0YS1kaXJlY3RvcnkKKyAgIC0td2l0aG91dC1hdXRvLWxvYWQt c2FmZS1wYXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0 by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zCisgICAtLXdpdGgtbGlidW53aW5kICAgICAgICB1c2Ug bGlidW53aW5kIGZyYW1lIHVud2luZGluZyBzdXBwb3J0CitAQCAtODQ5MSw3ICs4NDkyLDcgQEAg aWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgrc2V0fQorICAgIHdpdGhfYXV0b19s b2FkX3NhZmVfcGF0aD0iLyIKKyAgZmkKKyBlbHNlCistICB3aXRoX2F1dG9fbG9hZF9zYWZlX3Bh dGg9IiRwcmVmaXgiCisrICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9J1xcXCRkZGlyL2F1dG8t bG9hZCcKKyBmaQorIAorIAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3Vy ZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmln dXJlLmFjCTIwMTItMDQtMjQgMTg6MTI6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMjQgMTg6MTM6MDQuMDkwMjE2NjA1 ICswMjAwCitAQCAtMzQxLDEyICszNDEsMTMgQEAgZmkKKyAgCisgQUNfTVNHX0NIRUNLSU5HKFtm b3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoXSkKKyBBQ19BUkdfV0lUSChhdXRvLWxvYWQt c2FmZS1wYXRoLAorLUFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1Q QVRIXSwgW2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlc10pCisrQVNf SEVMUF9TVFJJTkcoWy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEhdLAorKyAgW2RpcmVj dG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcywgdXNlICdcXFwkZGRpcicgZm9y IC1kYXRhLWRpcmVjdG9yeV0pCisgQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1hdXRvLWxvYWQt c2FmZS1wYXRoXSwgW2RvIG5vdCByZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxlcyBsb2NhdGlvbnNd KSwKKyBbaWYgdGVzdCAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPSAibm8iOyB0aGVuCisg ICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgorICBmaV0sCistW3dpdGhfYXV0b19sb2Fk X3NhZmVfcGF0aD0iJHByZWZpeCJdKQorK1t3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9J1xcXCRk ZGlyL2F1dG8tbG9hZCddKQorIEFDX0RFRklORV9ESVIoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9Q QVRILCB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgsCisgCSAgICAgIFtEaXJlY3RvcmllcyBzYWZl IHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuXSkKKyBBQ19NU0dfUkVTVUxUKFskd2l0aF9hdXRv X2xvYWRfc2FmZV9wYXRoXSkKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kZWZzLmgK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RlZnMuaAkyMDEy LTA0LTI0IDE4OjEyOjIwLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2RlZnMuaAkyMDEyLTA0LTI0IDE4OjEyOjM4LjgyNDI3OTU2MiArMDIwMAorQEAgLTQ0Miw2 ICs0NDIsOSBAQCBleHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfYnBzdGF0X2NsZWFyCisgCisg ZXh0ZXJuIGludCBwcm9kdWNlcl9pc19nY2NfZ2VfNCAoY29uc3QgY2hhciAqcHJvZHVjZXIpOwor IAorK2V4dGVybiB2b2lkIHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKGNoYXIgKipzdHJpbmdw LCBjb25zdCBjaGFyICpmcm9tLAorKwkJCQkgICAgICAgY29uc3QgY2hhciAqdG8pOworKworICNp ZmRlZiBIQVZFX1dBSVRQSUQKKyBleHRlcm4gcGlkX3Qgd2FpdF90b19kaWVfd2l0aF90aW1lb3V0 IChwaWRfdCBwaWQsIGludCAqc3RhdHVzLCBpbnQgdGltZW91dCk7CisgI2VuZGlmCitJbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0yNCAx ODoxMjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2Mv Z2RiLnRleGluZm8JMjAxMi0wNC0yNCAxODoxMzozOC4yMzMxMzE1MzMgKzAyMDAKK0BAIC0yMDgw Miw3ICsyMDgwMiw3IEBAIGxpYnRocmVhZC1kYjogIEF1dG8tbG9hZGluZyBvZiBpbmZlcmlvcgor IGxvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3Vy cmVudCBkaXJlY3RvcnkgaXMgb24uCisgcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2Yg UHl0aG9uIHNjcmlwdHMgaXMgb24uCisgc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3RvcmllcyBm cm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCistICAgICAgICAgICAgaXMg L3Vzci9sb2NhbC4KKysgICAgICAgICAgICBpcyAkZGRpci9hdXRvLWxvYWQuCisgQGVuZCBzbWFs bGV4YW1wbGUKKyAKKyBAYW5jaG9ye2luZm8gYXV0by1sb2FkfQorQEAgLTIxMDA0LDkgKzIxMDA0 LDkgQEAgZ2V0IGxvYWRlZDoKKyAkIC4vZ2RiIC1xIC4vZ2RiCisgUmVhZGluZyBzeW1ib2xzIGZy b20gL2hvbWUvdXNlci9nZGIvZ2RiLi4uZG9uZS4KKyB3YXJuaW5nOiBGaWxlICIvaG9tZS91c2Vy L2dkYi9nZGItZ2RiLmdkYiIgYXV0by1sb2FkaW5nIGhhcyBiZWVuCistICAgICAgICAgZGVjbGlu ZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIvdXNyL2xvY2FsIi4KKysg ICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIiRk ZGlyL2F1dG8tbG9hZCIuCisgd2FybmluZzogRmlsZSAiL2hvbWUvdXNlci9nZGIvZ2RiLWdkYi5w eSIgYXV0by1sb2FkaW5nIGhhcyBiZWVuCistICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0 by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIvdXNyL2xvY2FsIi4KKysgICAgICAgICBkZWNsaW5l ZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIiRkZGlyL2F1dG8tbG9hZCIu CisgQGVuZCBzbWFsbGV4YW1wbGUKKyAKKyBUaGUgbGlzdCBvZiB0cnVzdGVkIGRpcmVjdG9yaWVz IGlzIGNvbnRyb2xsZWQgYnkgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKK0BAIC0yMTAzOCw2ICsy MTAzOCwxMSBAQCBsb2FkaW5nIGFuZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4gIE11bHRpCisgaG9z dCBwbGF0Zm9ybSBkaXJlY3Rvcnkgc2VwYXJhdG9yIGluIHVzZS4KKyBAZW5kIHRhYmxlCisgCisr QW55IHVzZWQgc3RyaW5nIEBmaWxleyRkZGlyfSB3aWxsIGdldCByZXBsYWNlZCBieSBAdmFye2Rh dGEtZGlyZWN0b3J5fSB3aGljaCBpcworK2RldGVybWluZWQgYXQgQHZhbHVle0dEQk59IHN0YXJ0 dXAgKEBweHJlZntEYXRhIEZpbGVzfSkuICBAZmlsZXskZGRpcn0gbXVzdCBiZQorK2JlIHBsYWNl ZCBhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQgLSBlaXRoZXIgYWxvbmUgb3IgZGVsaW1pdGVkIGJ5 IEBmaWxley99IG9yCisrQGZpbGV7XH0gZGlyZWN0b3J5IHNlcGFyYXRvcnMsIGRlcGVuZGluZyBv biB0aGUgaG9zdCBwbGF0Zm9ybS4KKysKKyBTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gQGZpbGV7 L30gZGlzYWJsZXMgdGhpcyBzZWN1cml0eQorIHByb3RlY3Rpb24uCisgVGhpcyB2YXJpYWJsZSBp cyBzdXBwb3NlZCB0byBiZSBzZXQgdG8gdGhlIHN5c3RlbSBkaXJlY3RvcmllcyB3cml0YWJsZSBi eSB0aGUKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi91dGlscy5jCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi91dGlscy5jCTIwMTItMDQtMjQgMTg6 MTI6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdXRpbHMu YwkyMDEyLTA0LTI0IDE4OjEyOjM4LjgzMzI3OTU0MCArMDIwMAorQEAgLTM5MjUsNiArMzkyNSw0 OCBAQCBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGNvbnN0IGNoYXIgKmRpCisgICByZXR1cm4g cmV0dmFsOworIH0KKyAKKysvKiBTdWJzdGl0dXRlIGFsbCBvY2N1cmVuY2VzIG9mIHN0cmluZyBG Uk9NIGJ5IHN0cmluZyBUTyBpbiAqU1RSSU5HUC4gICpTVFJJTkdQCisrICAgbXVzdCBjb21lIGZy b20geHJlYWxsb2MtY29tcGF0aWJsZSBhbGxvY2F0b3IgYW5kIGl0IG1heSBiZSB1cGRhdGVkLiAg RlJPTQorKyAgIG5lZWRzIHRvIGJlIGRlbGltaXRlZCBieSBJU19ESVJfU0VQQVJBVE9SIChvciBi ZSBsb2NhdGVkIGF0IHRoZSBzdGFydCBvcgorKyAgIGVuZCBvZiAqU1RSSU5HUC4gICovCisrCisr dm9pZAorK3N1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKGNoYXIgKipzdHJpbmdwLCBjb25zdCBj aGFyICpmcm9tLCBjb25zdCBjaGFyICp0bykKKyt7CisrICBjaGFyICpzdHJpbmcgPSAqc3RyaW5n cCwgKnM7CisrICBjb25zdCBzaXplX3QgZnJvbV9sZW4gPSBzdHJsZW4gKGZyb20pOworKyAgY29u c3Qgc2l6ZV90IHRvX2xlbiA9IHN0cmxlbiAodG8pOworKworKyAgZm9yIChzID0gc3RyaW5nOzsp CisrICAgIHsKKysgICAgICBzID0gc3Ryc3RyIChzLCBmcm9tKTsKKysgICAgICBpZiAocyA9PSBO VUxMKQorKwlicmVhazsKKysKKysgICAgICBpZiAoKHMgPT0gc3RyaW5nIHx8IElTX0RJUl9TRVBB UkFUT1IgKHNbLTFdKSkKKysgICAgICAgICAgJiYgKHNbZnJvbV9sZW5dID09ICdcMCcgfHwgSVNf RElSX1NFUEFSQVRPUiAoc1tmcm9tX2xlbl0pKSkKKysJeworKwkgIGNoYXIgKnN0cmluZ19uZXc7 CisrCisrCSAgc3RyaW5nX25ldyA9IHhyZWFsbG9jIChzdHJpbmcsIChzdHJsZW4gKHN0cmluZykg KyB0b19sZW4gKyAxKSk7CisrCisrCSAgLyogUmVsb2NhdGUgdGhlIGN1cnJlbnQgUyBwb2ludGVy LiAgKi8KKysJICBzID0gcyAtIHN0cmluZyArIHN0cmluZ19uZXc7CisrCSAgc3RyaW5nID0gc3Ry aW5nX25ldzsKKysKKysJICAvKiBSZXBsYWNlIGZyb20gYnkgdG8uICAqLworKwkgIG1lbW1vdmUg KCZzW3RvX2xlbl0sICZzW2Zyb21fbGVuXSwgc3RybGVuICgmc1tmcm9tX2xlbl0pICsgMSk7Cisr CSAgbWVtY3B5IChzLCB0bywgdG9fbGVuKTsKKysKKysJICBzICs9IHRvX2xlbjsKKysJfQorKyAg ICAgIGVsc2UKKysJcysrOworKyAgICB9CisrCisrICAqc3RyaW5ncCA9IHN0cmluZzsKKyt9Cisr CisgI2lmZGVmIEhBVkVfV0FJVFBJRAorIAorICNpZmRlZiBTSUdBTFJNCgpkaWZmIC0tZ2l0IGEv Z2RiLnNwZWMgYi9nZGIuc3BlYwppbmRleCAxYTI5YzY5Li5lMjU3ZmFkIDEwMDY0NAotLS0gYS9n ZGIuc3BlYworKysgYi9nZGIuc3BlYwpAQCAtMjAsNiArMjAsOCBAQAogJXshP3NjbDoKICAlZ2xv YmFsIHBrZ19uYW1lICV7bmFtZX0KICAlZ2xvYmFsIF9yb290X3ByZWZpeCAle19wcmVmaXh9Cisg JWdsb2JhbCBfcm9vdF9kYXRhZGlyICV7X2RhdGFkaXJ9CisgJWdsb2JhbCBfcm9vdF9iaW5kaXIg JXtfYmluZGlyfQogfQogCiBTdW1tYXJ5OiBBIEdOVSBzb3VyY2UtbGV2ZWwgZGVidWdnZXIgZm9y IEMsIEMrKywgRm9ydHJhbiBhbmQgb3RoZXIgbGFuZ3VhZ2VzCkBAIC0zMyw3ICszNSw3IEBAIFZl cnNpb246IDcuNC41MC4le3NuYXB9CiAKICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5zIGEg bGVhZGluZyByZXNlcnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScgaXMg bm90IGEgcGFydCBvZiBgbmFtZScgdG8gc3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNvbXBh dGlibGUgZm9yIHRoZSB0ZXN0aW5nLgotUmVsZWFzZTogNDElez9kaXN0fQorUmVsZWFzZTogNDIl ez9kaXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5k IEdQTHYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMKyBhbmQgTEdQTHYyKyBh bmQgQlNEIGFuZCBQdWJsaWMgRG9tYWluCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBA IC02NSwxMSArNjcsMTEgQEAgT2Jzb2xldGVzOiBnZGI2NCA8IDUuMy45MQogJWVuZGlmICMgMCV7 IT9lbDU6MX0KICVlbmRpZiAjICV7aXg4Nn0geDg2XzY0CiAKLSMgTm9ib2R5IGlzIGdvaW5nIHRv IHJ1biBnZGItYWRkLWluZGV4IGZyb20gU0NMIHBhY2thZ2Ugb24gUkhFTC01LgotJWlmICEoMCV7 P2VsNToxfSAmJiAwJXs/c2NsOjF9KQorIyBnZGItYWRkLWluZGV4IGNhbm5vdCBiZSBydW4gZXZl biBmb3IgU0NMIHBhY2thZ2Ugb24gUkhFTDw9Ni4KKyVpZiAwJXshP3JoZWw6MX0gfHwgMCV7P3Jo ZWx9ID4gNgogIyBldS1zdHJpcDogLWcgcmVjb2duaXplcyAuZ2RiX2luZGV4IGFzIGEgZGVidWdn aW5nIHNlY3Rpb24uICgjNjMxOTk3KQogQ29uZmxpY3RzOiBlbGZ1dGlscyA8IDAuMTQ5Ci0lZW5k aWYgIyAhKDAlez9lbDU6MX0gJiYgMCV7P3NjbDoxfSkKKyVlbmRpZgogCiAjIGh0dHBzOi8vZmVk b3JhaG9zdGVkLm9yZy9mcGMvdGlja2V0LzQzIGh0dHBzOi8vZmVkb3JhaG9zdGVkLm9yZy9mcGMv dGlja2V0LzEwOQogUHJvdmlkZXM6IGJ1bmRsZWQobGliaWJlcnR5KSA9ICV7c25hcH0KQEAgLTU4 NCwxOCArNTg2LDI0IEBAIFBhdGNoNjYxOiBnZGItc3RhbGUtZnJhbWVfaW5mby5wYXRjaAogCiAj IFNlY3VyaXR5IGZpeCBmb3IgbG9hZGluZyB1bnRydXN0ZWQgaW5mZXJpb3JzLCBzZWUgInNldCBh dXRvLWxvYWQiIChCWiA3NTYxMTcpLgogIz1wdXNoCi1QYXRjaDY2MjogZ2RiLWF1dG9sb2FkLTAx b2YxMi5wYXRjaAotUGF0Y2g2NjM6IGdkYi1hdXRvbG9hZC0wMm9mMTIucGF0Y2gKLVBhdGNoNjY0 OiBnZGItYXV0b2xvYWQtMDNvZjEyLnBhdGNoCi1QYXRjaDY2NTogZ2RiLWF1dG9sb2FkLTA0b2Yx Mi5wYXRjaAotUGF0Y2g2NjY6IGdkYi1hdXRvbG9hZC0wNW9mMTIucGF0Y2gKLVBhdGNoNjY3OiBn ZGItYXV0b2xvYWQtMDZvZjEyLnBhdGNoCi1QYXRjaDY2ODogZ2RiLWF1dG9sb2FkLTA3b2YxMi5w YXRjaAotUGF0Y2g2Njk6IGdkYi1hdXRvbG9hZC0wOG9mMTIucGF0Y2gKLVBhdGNoNjcwOiBnZGIt YXV0b2xvYWQtMDlvZjEyLnBhdGNoCi1QYXRjaDY3MTogZ2RiLWF1dG9sb2FkLTEwb2YxMi5wYXRj aAotUGF0Y2g2NzI6IGdkYi1hdXRvbG9hZC0xMW9mMTIucGF0Y2gKLVBhdGNoNjczOiBnZGItYXV0 b2xvYWQtMTJvZjEyLnBhdGNoCitQYXRjaDY2MjogZ2RiLWF1dG9sb2FkLTAxb2YxOC5wYXRjaAor UGF0Y2g2NjM6IGdkYi1hdXRvbG9hZC0wMm9mMTgucGF0Y2gKK1BhdGNoNjY0OiBnZGItYXV0b2xv YWQtMDNvZjE4LnBhdGNoCitQYXRjaDY2NTogZ2RiLWF1dG9sb2FkLTA0b2YxOC5wYXRjaAorUGF0 Y2g2NjY6IGdkYi1hdXRvbG9hZC0wNW9mMTgucGF0Y2gKK1BhdGNoNjY3OiBnZGItYXV0b2xvYWQt MDZvZjE4LnBhdGNoCitQYXRjaDY2ODogZ2RiLWF1dG9sb2FkLTA3b2YxOC5wYXRjaAorUGF0Y2g2 Njk6IGdkYi1hdXRvbG9hZC0wOG9mMTgucGF0Y2gKK1BhdGNoNjcwOiBnZGItYXV0b2xvYWQtMDlv ZjE4LnBhdGNoCitQYXRjaDY3MTogZ2RiLWF1dG9sb2FkLTEwb2YxOC5wYXRjaAorUGF0Y2g2NzI6 IGdkYi1hdXRvbG9hZC0xMW9mMTgucGF0Y2gKK1BhdGNoNjczOiBnZGItYXV0b2xvYWQtMTJvZjE4 LnBhdGNoCitQYXRjaDY3NDogZ2RiLWF1dG9sb2FkLTEzb2YxOC5wYXRjaAorUGF0Y2g2NzU6IGdk Yi1hdXRvbG9hZC0xNG9mMTgucGF0Y2gKK1BhdGNoNjc2OiBnZGItYXV0b2xvYWQtMTVvZjE4LnBh dGNoCitQYXRjaDY3NzogZ2RiLWF1dG9sb2FkLTE2b2YxOC5wYXRjaAorUGF0Y2g2Nzg6IGdkYi1h dXRvbG9hZC0xN29mMTgucGF0Y2gKK1BhdGNoNjc5OiBnZGItYXV0b2xvYWQtMThvZjE4LnBhdGNo CiAKICVpZiAwJXshP3JoZWw6MX0gfHwgMCV7P3JoZWx9ID4gNgogIyBSTF9TVEFURV9GRURPUkFf R0RCIHdvdWxkIG5vdCBiZSBmb3VuZCBmb3I6CkBAIC04OTksNiArOTA3LDEyIEBAIHJtIC1mIGdk Yi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMKICVwYXRj aDY3MSAtcDEKICVwYXRjaDY3MiAtcDEKICVwYXRjaDY3MyAtcDEKKyVwYXRjaDY3NCAtcDEKKyVw YXRjaDY3NSAtcDEKKyVwYXRjaDY3NiAtcDEKKyVwYXRjaDY3NyAtcDEKKyVwYXRjaDY3OCAtcDEK KyVwYXRjaDY3OSAtcDEKIAogJXBhdGNoMzkzIC1wMQogJWlmIDAleyE/ZWw1OjF9IHx8IDAlez9z Y2w6MX0KQEAgLTEwMTgsMTEgKzEwMzIsOSBAQCAkKDogUkhFTC01IGxpYnJwbSBoYXMgaW5jb21w YXRpYmxlIEFQSS4gKQkJCVwKICVlbHNlCiAJLS1kaXNhYmxlLWlucHJvY2Vzcy1hZ2VudAkJCQlc CiAlZW5kaWYKLSVpZiAwJXshP3JoZWw6MX0gfHwgMCV7P3JoZWx9ID4gNgotCS0td2l0aC1hdXRv LWxvYWQtc2FmZS1wYXRoPSV7X3Jvb3RfcHJlZml4fSV7P3NjbDo6JXtfc2NsX3Jvb3R9fQkJCQlc Ci0lZWxzZQotCS0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPSV7X3Jvb3RfcHJlZml4fTovYmlu Oi9zYmluOi9saWI6L2xpYjY0JXs/c2NsOjole19zY2xfcm9vdH19CVwKLSVlbmRpZgorJCg6ICV7 X2JpbmRpcn0vbW9uby1nZGIucHkgaXMgd29ya2Fyb3VuZCBmb3IgbW9ubyBCWiA4MTU1MDEuICkJ CQkJCQkJCQkJCVwKKyQoOiBmb3IgdGhlIHNjbCBwYXJ0IHNlZSB1bmZpeGVkIEJaIDgxNTkxMC4g KQkJCQkJCQkJCQkJCQlcCisJLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9JXtfZGF0YWRpcn0v Z2RiL2F1dG8tbG9hZDovdXNyL2xpYi9kZWJ1ZyV7P3NjbDo6JXtfcm9vdF9kYXRhZGlyfS9nZGIv YXV0by1sb2FkfTole19yb290X2JpbmRpcn0vbW9uby1nZGIucHkJXAogJWlmYXJjaCBzcGFyYyBz cGFyY3Y5CiAJc3BhcmMtJXtfdmVuZG9yfS0le190YXJnZXRfb3N9JXs/X2dudX0KICVlbHNlCkBA IC0xMjQ4LDEwICsxMjYwLDEwIEBAIGRvbmUKICVlbmRpZiAjIDAleyE/X3dpdGhvdXRfcHl0aG9u OjF9CiAlZW5kaWYgIyAwJXs/cmhlbDoxfSAmJiAwJXs/cmhlbH0gPD0gNgogCi0jIGdkYi1hZGQt aW5kZXggZG9lcyBub3QgaGF2ZSBzdWZmaWNpZW50IHZlcnNpb24gb2YgZWxmdXRpbHMgb24gUkhF TC01IChpbiBTQ0wpLgotJWlmIDAlez9lbDU6MX0gJiYgMCV7P3NjbDoxfQorIyBnZGItYWRkLWlu ZGV4IGNhbm5vdCBiZSBydW4gZXZlbiBmb3IgU0NMIHBhY2thZ2Ugb24gUkhFTDw9Ni4KKyVpZiAw JXs/cmhlbDoxfSAmJiAwJXs/cmhlbH0gPD0gNgogcm0gLWYgJFJQTV9CVUlMRF9ST09UJXtfYmlu ZGlyfS9nZGItYWRkLWluZGV4Ci0lZW5kaWYgIyAwJXs/ZWw1OjF9ICYmIDAlez9zY2w6MX0KKyVl bmRpZgogCiAjIFJlbW92ZSB0aGUgZmlsZXMgdGhhdCBhcmUgcGFydCBvZiBhIGdkYiBidWlsZCBi dXQgdGhhdCBhcmUgb3duZWQgYW5kCiAjIHByb3ZpZGVkIGJ5IG90aGVyIHBhY2thZ2VzLgpAQCAt MTMyOCwxMCArMTM0MCwxMCBAQCBybSAtcmYgJFJQTV9CVUlMRF9ST09UCiAle19iaW5kaXJ9L2dk YnR1aQogJXtfbWFuZGlyfS8qL2dkYnR1aS4xKgogJWVuZGlmICMgMCV7P3JoZWw6MX0gJiYgMCV7 P3JoZWx9IDw9IDYKLSMgZ2RiLWFkZC1pbmRleCBkb2VzIG5vdCBoYXZlIHN1ZmZpY2llbnQgdmVy c2lvbiBvZiBlbGZ1dGlscyBvbiBSSEVMLTUgKGluIFNDTCkuCi0laWYgISgwJXs/ZWw1OjF9ICYm IDAlez9zY2w6MX0pCisjIGdkYi1hZGQtaW5kZXggY2Fubm90IGJlIHJ1biBldmVuIGZvciBTQ0wg cGFja2FnZSBvbiBSSEVMPD02LgorJWlmIDAleyE/cmhlbDoxfSB8fCAwJXs/cmhlbH0gPiA2CiAl e19iaW5kaXJ9L2dkYi1hZGQtaW5kZXgKLSVlbmRpZiAjICEoMCV7P2VsNToxfSAmJiAwJXs/c2Ns OjF9KQorJWVuZGlmCiAle19iaW5kaXJ9L3BzdGFjawogJXtfbWFuZGlyfS8qL3BzdGFjay4xKgog JXtfZGF0YWRpcn0vZ2RiCkBAIC0xMzgzLDYgKzEzOTUsMTAgQEAgZmkKICVlbmRpZiAjIDAleyE/ ZWw1OjF9IHx8ICIle190YXJnZXRfY3B1fSIgPT0gIm5vYXJjaCIKIAogJWNoYW5nZWxvZworKiBU dWUgQXByIDI0IDIwMTIgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ IC0gNy40LjUwLjIwMTIwMTIwLTQyLmZjMTcKKy0gVXBkYXRlICJzZXQgYXV0by1sb2FkIiBwYXRj aHNldCBhbmQgdGhlIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoIHNldHRpbmcuCistIFtSSEVM XSBEaXNhYmxlIGdkYi1hZGQtaW5kZXggZXZlbiBvbiBSSEVMLTYgYXMgUkhFTC02LjAgaGFkIHRv byBvbGQgZWxmdXRpbHMuCisKICogV2VkIEFwciAxOCAyMDEyIEphbiBLcmF0b2NodmlsIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuNC41MC4yMDEyMDEyMC00MS5mYzE3CiAtIFtSSEVM XSBGaXggLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGggc3lzdGVtcyBwcmlvciB0byAvdXNyIG1v dmUuCiAK