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] gdb-17.2-rebase-f44: Fix in "set auto-load" patchset for SCL scripts inheritance (BZ 815910). Date: Sat, 27 Jun 2026 23:55:38 GMT Message-ID: <178260453856.1.4368078581787719758.rpms-gdb-de3a5927681a@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: de3a5927681ab559eafc274cbeb0a214a1dd7bfc QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogZGUzYTU5Mjc2ODFhYjU1OWVhZmMyNzRjYmVi MGEyMTRhMWRkN2JmYwpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KRGF0ZSAgIDogMjAxMi0wNS0wOVQyMjozOToyNSswMjowMApTdGF0cyAgOiArNjM3 OS8tNTU5NyBpbiA0MSBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qu b3JnL3JwbXMvZ2RiL2MvZGUzYTU5Mjc2ODFhYjU1OWVhZmMyNzRjYmViMGEyMTRhMWRkN2JmYz9i cmFuY2g9Z2RiLTE3LjItcmViYXNlLWY0NAoKTG9nOgpGaXggaW4gInNldCBhdXRvLWxvYWQiIHBh dGNoc2V0IGZvciBTQ0wgc2NyaXB0cyBpbmhlcml0YW5jZSAoQlogODE1OTEwKS4KCi0tLQpkaWZm IC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTAxb2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wMW9mMTgu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMmIyMWYuLjAwMDAwMDAKLS0t IGEvZ2RiLWF1dG9sb2FkLTAxb2YxOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAg QEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDEvbXNnMDAyMDIuaHRt bAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAxOToxMjozMQkxLjEzNzcxCi0j IyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAyMDo1NjozMwkxLjEzNzcyCi0jIyAtMSwz ICsxLDEyIEBACi0rMjAxMi0wMS0yNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPgotKwotKwlDb2RlIGNsZWFudXAuCi0rCSogY2xpL2NsaS1jbWRzLmMgKHNvdXJj ZV9zY3JpcHRfZnJvbV9zdHJlYW0pOiBOZXZlciBmY2xvc2UgU1RSRUFNLgotKwlVcGRhdGUgdGhl IGZ1bmN0aW9uIGNvbW1lbnQgZm9yIGl0LgotKwkoc291cmNlX3NjcmlwdF93aXRoX3NlYXJjaCk6 IENhbGwgbWFrZV9jbGVhbnVwX2ZjbG9zZSBmb3IgU1RSRUFNLgotKwkqIGNsaS9jbGktc2NyaXB0 LmMgKHNjcmlwdF9mcm9tX2ZpbGUpOiBEbyBub3QgY2FsbCBtYWtlX2NsZWFudXBfZmNsb3NlCi0r CWZvciBTVFJFQU0uCi0rCi0gMjAxMi0wMS0yNCAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0 LmNvbT4KLSAKLSAJKiBicmVha3BvaW50LmMgKGJwc3RhdF9zdG9wX3N0YXR1cyk6IE1vdmluZyBj bGVhcmluZyBwcmludF9pdAotLS0tIHNyYy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi8wMS8yMyAx NjozNzowMwkxLjEyMwotKysrIHNyYy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi8wMS8yNCAyMDo1 NjozMwkxLjEyNAotQEAgLTUyNyw4ICs1MjcsNyBAQAotICAgcmV0dXJuIDE7Ci0gfQotIAotLS8q IExvYWQgc2NyaXB0IEZJTEUsIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gb3BlbmVkIGFzIFNUUkVB TS4KLS0gICBTVFJFQU0gaXMgY2xvc2VkIGJlZm9yZSB3ZSByZXR1cm4uICAqLwotKy8qIExvYWQg c2NyaXB0IEZJTEUsIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gb3BlbmVkIGFzIFNUUkVBTS4gICov Ci0gCi0gc3RhdGljIHZvaWQKLSBzb3VyY2Vfc2NyaXB0X2Zyb21fc3RyZWFtIChGSUxFICpzdHJl YW0sIGNvbnN0IGNoYXIgKmZpbGUpCi1AQCAtNTU2LDEyICs1NTUsOSBAQAotIAkgIGVsc2UKLSAJ ICAgIHsKLSAJICAgICAgLyogTm9wZSwganVzdCBwdW50LiAgKi8KLS0JICAgICAgZmNsb3NlIChz dHJlYW0pOwotIAkgICAgICB0aHJvd19leGNlcHRpb24gKGUpOwotIAkgICAgfQotIAl9Ci0tICAg ICAgZWxzZQotLQlmY2xvc2UgKHN0cmVhbSk7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgc2NyaXB0 X2Zyb21fZmlsZSAoc3RyZWFtLCBmaWxlKTsKLUBAIC01OTUsNiArNTkxLDcgQEAKLSAgICAgfQot IAotICAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKLSsg IG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7Ci0gICAvKiBUaGUgcHl0aG9uIHN1cHBvcnQg cmVvcGVucyB0aGUgZmlsZSwgc28gd2UgbmVlZCB0byBwYXNzIGZ1bGxfcGF0aCBoZXJlCi0gICAg ICBpbiBjYXNlIHRoZSBmaWxlIHdhcyBmb3VuZCBvbiB0aGUgc2VhcmNoIHBhdGguICBJdCdzIHVz ZWZ1bCB0byBkbyB0aGlzCi0gICAgICBhbnl3YXkgc28gdGhhdCBlcnJvciBtZXNzYWdlcyBzaG93 IHRoZSBhY3R1YWwgZmlsZSB1c2VkLiAgQnV0IG9ubHkgZG8KLS0tLSBzcmMvZ2RiL2NsaS9jbGkt c2NyaXB0LmMJMjAxMi8wMS8wNCAwODoxNzoxNwkxLjczCi0rKysgc3JjL2dkYi9jbGkvY2xpLXNj cmlwdC5jCTIwMTIvMDEvMjQgMjA6NTY6MzMJMS43NAotQEAgLTE2MTQsMTEgKzE2MTQsOSBAQAot ICAgaWYgKHN0cmVhbSA9PSBOVUxMKQotICAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9f TElORV9fLCBfKCJjYWxsZWQgd2l0aCBOVUxMIGZpbGUgcG9pbnRlciEiKSk7Ci0gCi0tICBvbGRf Y2xlYW51cHMgPSBtYWtlX2NsZWFudXBfZmNsb3NlIChzdHJlYW0pOwotLQotICAgb2xkX2xpbmVz Lm9sZF9saW5lID0gc291cmNlX2xpbmVfbnVtYmVyOwotICAgb2xkX2xpbmVzLm9sZF9maWxlID0g c291cmNlX2ZpbGVfbmFtZTsKLS0gIG1ha2VfY2xlYW51cCAoc291cmNlX2NsZWFudXBfbGluZXMs ICZvbGRfbGluZXMpOwotKyAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwIChzb3VyY2VfY2xl YW51cF9saW5lcywgJm9sZF9saW5lcyk7Ci0gICBzb3VyY2VfbGluZV9udW1iZXIgPSAwOwotICAg c291cmNlX2ZpbGVfbmFtZSA9IGZpbGU7Ci0gICAvKiBUaGlzIHdpbGwgZ2V0IHNldCBldmVyeSB0 aW1lIHdlIHJlYWQgYSBsaW5lLiAgU28gaXQgd29uJ3Qgc3RheSAiIgoKZGlmZiAtLWdpdCBhL2dk Yi1hdXRvbG9hZC0wMW9mMjIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDFvZjIyLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMmIyMWYKLS0tIC9kZXYvbnVsbAorKysg Yi9nZGItYXV0b2xvYWQtMDFvZjIyLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK2h0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDEvbXNnMDAyMDIuaHRtbAorCisjIyMgc3JjL2dk Yi9DaGFuZ2VMb2cJMjAxMi8wMS8yNCAxOToxMjozMQkxLjEzNzcxCisjIyMgc3JjL2dkYi9DaGFu Z2VMb2cJMjAxMi8wMS8yNCAyMDo1NjozMwkxLjEzNzcyCisjIyAtMSwzICsxLDEyIEBACisrMjAx Mi0wMS0yNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKwor KwlDb2RlIGNsZWFudXAuCisrCSogY2xpL2NsaS1jbWRzLmMgKHNvdXJjZV9zY3JpcHRfZnJvbV9z dHJlYW0pOiBOZXZlciBmY2xvc2UgU1RSRUFNLgorKwlVcGRhdGUgdGhlIGZ1bmN0aW9uIGNvbW1l bnQgZm9yIGl0LgorKwkoc291cmNlX3NjcmlwdF93aXRoX3NlYXJjaCk6IENhbGwgbWFrZV9jbGVh bnVwX2ZjbG9zZSBmb3IgU1RSRUFNLgorKwkqIGNsaS9jbGktc2NyaXB0LmMgKHNjcmlwdF9mcm9t X2ZpbGUpOiBEbyBub3QgY2FsbCBtYWtlX2NsZWFudXBfZmNsb3NlCisrCWZvciBTVFJFQU0uCisr CisgMjAxMi0wMS0yNCAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KKyAKKyAJKiBi cmVha3BvaW50LmMgKGJwc3RhdF9zdG9wX3N0YXR1cyk6IE1vdmluZyBjbGVhcmluZyBwcmludF9p dAorLS0tIHNyYy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi8wMS8yMyAxNjozNzowMwkxLjEyMwor KysrIHNyYy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi8wMS8yNCAyMDo1NjozMwkxLjEyNAorQEAg LTUyNyw4ICs1MjcsNyBAQAorICAgcmV0dXJuIDE7CisgfQorIAorLS8qIExvYWQgc2NyaXB0IEZJ TEUsIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gb3BlbmVkIGFzIFNUUkVBTS4KKy0gICBTVFJFQU0g aXMgY2xvc2VkIGJlZm9yZSB3ZSByZXR1cm4uICAqLworKy8qIExvYWQgc2NyaXB0IEZJTEUsIHdo aWNoIGhhcyBhbHJlYWR5IGJlZW4gb3BlbmVkIGFzIFNUUkVBTS4gICovCisgCisgc3RhdGljIHZv aWQKKyBzb3VyY2Vfc2NyaXB0X2Zyb21fc3RyZWFtIChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIg KmZpbGUpCitAQCAtNTU2LDEyICs1NTUsOSBAQAorIAkgIGVsc2UKKyAJICAgIHsKKyAJICAgICAg LyogTm9wZSwganVzdCBwdW50LiAgKi8KKy0JICAgICAgZmNsb3NlIChzdHJlYW0pOworIAkgICAg ICB0aHJvd19leGNlcHRpb24gKGUpOworIAkgICAgfQorIAl9CistICAgICAgZWxzZQorLQlmY2xv c2UgKHN0cmVhbSk7CisgICAgIH0KKyAgIGVsc2UKKyAgICAgc2NyaXB0X2Zyb21fZmlsZSAoc3Ry ZWFtLCBmaWxlKTsKK0BAIC01OTUsNiArNTkxLDcgQEAKKyAgICAgfQorIAorICAgb2xkX2NsZWFu dXBzID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKKysgIG1ha2VfY2xlYW51cF9m Y2xvc2UgKHN0cmVhbSk7CisgICAvKiBUaGUgcHl0aG9uIHN1cHBvcnQgcmVvcGVucyB0aGUgZmls ZSwgc28gd2UgbmVlZCB0byBwYXNzIGZ1bGxfcGF0aCBoZXJlCisgICAgICBpbiBjYXNlIHRoZSBm aWxlIHdhcyBmb3VuZCBvbiB0aGUgc2VhcmNoIHBhdGguICBJdCdzIHVzZWZ1bCB0byBkbyB0aGlz CisgICAgICBhbnl3YXkgc28gdGhhdCBlcnJvciBtZXNzYWdlcyBzaG93IHRoZSBhY3R1YWwgZmls ZSB1c2VkLiAgQnV0IG9ubHkgZG8KKy0tLSBzcmMvZ2RiL2NsaS9jbGktc2NyaXB0LmMJMjAxMi8w MS8wNCAwODoxNzoxNwkxLjczCisrKysgc3JjL2dkYi9jbGkvY2xpLXNjcmlwdC5jCTIwMTIvMDEv MjQgMjA6NTY6MzMJMS43NAorQEAgLTE2MTQsMTEgKzE2MTQsOSBAQAorICAgaWYgKHN0cmVhbSA9 PSBOVUxMKQorICAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLCBfKCJjYWxs ZWQgd2l0aCBOVUxMIGZpbGUgcG9pbnRlciEiKSk7CisgCistICBvbGRfY2xlYW51cHMgPSBtYWtl X2NsZWFudXBfZmNsb3NlIChzdHJlYW0pOworLQorICAgb2xkX2xpbmVzLm9sZF9saW5lID0gc291 cmNlX2xpbmVfbnVtYmVyOworICAgb2xkX2xpbmVzLm9sZF9maWxlID0gc291cmNlX2ZpbGVfbmFt ZTsKKy0gIG1ha2VfY2xlYW51cCAoc291cmNlX2NsZWFudXBfbGluZXMsICZvbGRfbGluZXMpOwor KyAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwIChzb3VyY2VfY2xlYW51cF9saW5lcywgJm9s ZF9saW5lcyk7CisgICBzb3VyY2VfbGluZV9udW1iZXIgPSAwOworICAgc291cmNlX2ZpbGVfbmFt ZSA9IGZpbGU7CisgICAvKiBUaGlzIHdpbGwgZ2V0IHNldCBldmVyeSB0aW1lIHdlIHJlYWQgYSBs aW5lLiAgU28gaXQgd29uJ3Qgc3RheSAiIgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wMm9m MTgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDJvZjE4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBiNDRjOWJiLi4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0wMm9mMTgucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1jdnMvMjAxMi0wMS9tc2cwMDIwNS5odG1sCi0KLS0tLSBzcmMvZ2RiL2dkYl92ZWNz LmgKLSsrKyBzcmMvZ2RiL2dkYl92ZWNzLmgJMjAxMi0wNC0xNyAyMjowNDoyMy44MTg2NjYwMDAg KzAwMDAKLUBAIC0wLDAgKzEsMjggQEAKLSsvKiBTb21lIGNvbW1vbmx5LXVzZWQgVkVDIHR5cGVz LgotKwotKyAgIENvcHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK LSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKwotKyNpZm5kZWYgR0RCX1ZFQ1NfSAotKyNk ZWZpbmUgR0RCX1ZFQ1NfSAotKwotKyNpbmNsdWRlICJ2ZWMuaCIKLSsKLStERUZfVkVDX1AgKGNo YXJfcHRyKTsKLSsKLSsjZW5kaWYgLyogR0RCX1ZFQ1NfSCAqLwotIyMjIHNyYy9nZGIvQ2hhbmdl TG9nCTIwMTIvMDEvMjQgMjE6MzI6NTYJMS4xMzc3NAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIw MTIvMDEvMjQgMjE6MzY6MzcJMS4xMzc3NQotIyMgLTEsMyArMSwxMCBAQAotKzIwMTItMDEtMjQg IFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSsKLSsJKiBhZGEtbGFuZy5jOiBJbmNs dWRlIGdkYl92ZWNzLmguCi0rCSogY2hhcnNldC5jOiBJbmNsdWRlIGdkYl92ZWNzLmguCi0rCSog dHJhY2Vwb2ludC5oOiBJbmNsdWRlIGdkYl92ZWNzLmguCi0rCSogZ2RiX3ZlY3MuaDogTmV3IGZp bGUuCi0rCi0gMjAxMi0wMS0yNCAgUGVkcm8gQWx2ZXMgIDxwZWRyb0Bjb2Rlc291cmNlcnkuY29t PgotIAotIAkqIGJyZWFrcG9pbnQuYyAoYnJlYWtwb2ludF9oaXRfY2F0Y2hfZm9yaykKLS0tLSBz cmMvZ2RiL2FkYS1sYW5nLmMJMjAxMi8wMS8wNiAwMzozNDo0NQkxLjMzMAotKysrIHNyYy9nZGIv YWRhLWxhbmcuYwkyMDEyLzAxLzI0IDIxOjM2OjM3CTEuMzMxCi1AQCAtNTcsNiArNTcsNyBAQAot ICNpbmNsdWRlICJvYnNlcnZlci5oIgotICNpbmNsdWRlICJ2ZWMuaCIKLSAjaW5jbHVkZSAic3Rh Y2suaCIKLSsjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKLSAKLSAjaW5jbHVkZSAicHN5bXRhYi5oIgot ICNpbmNsdWRlICJ2YWx1ZS5oIgotQEAgLTU2MjgsOCArNTYyOSw2IEBACi0gICByZXR1cm4gc3lt X25hbWU7Ci0gfQotIAotLURFRl9WRUNfUCAoY2hhcl9wdHIpOwotLQotIC8qIEEgY29tcGFuaW9u IGZ1bmN0aW9uIHRvIGFkYV9tYWtlX3N5bWJvbF9jb21wbGV0aW9uX2xpc3QoKS4KLSAgICBDaGVj ayBpZiBTWU1fTkFNRSByZXByZXNlbnRzIGEgc3ltYm9sIHdoaWNoIG5hbWUgd291bGQgYmUgc3Vp dGFibGUKLSAgICB0byBjb21wbGV0ZSBURVhUIChURVhUX0xFTiBpcyB0aGUgbGVuZ3RoIG9mIFRF WFQpLCBpbiB3aGljaCBjYXNlCi0tLS0gc3JjL2dkYi9jaGFyc2V0LmMJMjAxMi8wMS8wNCAwODox NzowMAkxLjQ2Ci0rKysgc3JjL2dkYi9jaGFyc2V0LmMJMjAxMi8wMS8yNCAyMTozNjozNwkxLjQ3 Ci1AQCAtMjcsNiArMjcsNyBAQAotICNpbmNsdWRlICJ2ZWMuaCIKLSAjaW5jbHVkZSAiZW52aXJv bi5oIgotICNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0rI2luY2x1ZGUgImdkYl92ZWNzLmgiCi0g Ci0gI2luY2x1ZGUgPHN0ZGRlZi5oPgotICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtNzE3 LDggKzcxOCw2IEBACi0gCi0gZXh0ZXJuIGluaXRpYWxpemVfZmlsZV9mdHlwZSBfaW5pdGlhbGl6 ZV9jaGFyc2V0OyAvKiAtV21pc3NpbmctcHJvdG90eXBlICovCi0gCi0tREVGX1ZFQ19QIChjaGFy X3B0cik7Ci0tCi0gc3RhdGljIFZFQyAoY2hhcl9wdHIpICpjaGFyc2V0czsKLSAKLSAjaWZkZWYg UEhPTllfSUNPTlYKLS0tLSBzcmMvZ2RiL3RyYWNlcG9pbnQuaAkyMDEyLzAxLzA0IDA4OjI3OjU3 CTEuNDYKLSsrKyBzcmMvZ2RiL3RyYWNlcG9pbnQuaAkyMDEyLzAxLzI0IDIxOjM2OjM3CTEuNDcK LUBAIC0yMiw2ICsyMiw3IEBACi0gI2luY2x1ZGUgImJyZWFrcG9pbnQuaCIKLSAjaW5jbHVkZSAi dGFyZ2V0LmgiCi0gI2luY2x1ZGUgIm1lbXJhbmdlLmgiCi0rI2luY2x1ZGUgImdkYl92ZWNzLmgi Ci0gCi0gLyogQSB0cmFjZSBzdGF0ZSB2YXJpYWJsZSBpcyBhIHZhbHVlIG1hbmFnZWQgYnkgYSB0 YXJnZXQgYmVpbmcKLSAgICB0cmFjZWQuICBBIHRyYWNlIHN0YXRlIHZhcmlhYmxlIChvciB0c3Yg Zm9yIHNob3J0KSBjYW4gYmUgYWNjZXNzZWQKLUBAIC0xNDMsOCArMTQ0LDYgQEAKLSAKLSAvKiBT dHJ1Y3QgdG8gY29sbGVjdCByYW5kb20gaW5mbyBhYm91dCB0cmFjZXBvaW50cyBvbiB0aGUgdGFy Z2V0LiAgKi8KLSAKLS1ERUZfVkVDX1AgKGNoYXJfcHRyKTsKLS0KLSBzdHJ1Y3QgdXBsb2FkZWRf dHAKLSB7Ci0gICBpbnQgbnVtYmVyOwoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wMm9mMjIu cGF0Y2ggYi9nZGItYXV0b2xvYWQtMDJvZjIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmI0NGM5YmIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMDJv ZjIyLnBhdGNoCkBAIC0wLDAgKzEsMTAzIEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LWN2cy8yMDEyLTAxL21zZzAwMjA1Lmh0bWwKKworLS0tIHNyYy9nZGIvZ2RiX3ZlY3MuaAorKysr IHNyYy9nZGIvZ2RiX3ZlY3MuaAkyMDEyLTA0LTE3IDIyOjA0OjIzLjgxODY2NjAwMCArMDAwMAor QEAgLTAsMCArMSwyOCBAQAorKy8qIFNvbWUgY29tbW9ubHktdXNlZCBWRUMgdHlwZXMuCisrCisr ICAgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKwor KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCisrCisrCisrI2lmbmRlZiBHREJfVkVDU19ICisrI2RlZmluZSBH REJfVkVDU19ICisrCisrI2luY2x1ZGUgInZlYy5oIgorKworK0RFRl9WRUNfUCAoY2hhcl9wdHIp OworKworKyNlbmRpZiAvKiBHREJfVkVDU19IICovCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAx Mi8wMS8yNCAyMTozMjo1NgkxLjEzNzc0CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8y NCAyMTozNjozNwkxLjEzNzc1CisjIyAtMSwzICsxLDEwIEBACisrMjAxMi0wMS0yNCAgVG9tIFRy b21leSAgPHRyb21leUByZWRoYXQuY29tPgorKworKwkqIGFkYS1sYW5nLmM6IEluY2x1ZGUgZ2Ri X3ZlY3MuaC4KKysJKiBjaGFyc2V0LmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KKysJKiB0cmFjZXBv aW50Lmg6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KKysJKiBnZGJfdmVjcy5oOiBOZXcgZmlsZS4KKysK KyAyMDEyLTAxLTI0ICBQZWRybyBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5jb20+CisgCisg CSogYnJlYWtwb2ludC5jIChicmVha3BvaW50X2hpdF9jYXRjaF9mb3JrKQorLS0tIHNyYy9nZGIv YWRhLWxhbmcuYwkyMDEyLzAxLzA2IDAzOjM0OjQ1CTEuMzMwCisrKysgc3JjL2dkYi9hZGEtbGFu Zy5jCTIwMTIvMDEvMjQgMjE6MzY6MzcJMS4zMzEKK0BAIC01Nyw2ICs1Nyw3IEBACisgI2luY2x1 ZGUgIm9ic2VydmVyLmgiCisgI2luY2x1ZGUgInZlYy5oIgorICNpbmNsdWRlICJzdGFjay5oIgor KyNpbmNsdWRlICJnZGJfdmVjcy5oIgorIAorICNpbmNsdWRlICJwc3ltdGFiLmgiCisgI2luY2x1 ZGUgInZhbHVlLmgiCitAQCAtNTYyOCw4ICs1NjI5LDYgQEAKKyAgIHJldHVybiBzeW1fbmFtZTsK KyB9CisgCistREVGX1ZFQ19QIChjaGFyX3B0cik7CistCisgLyogQSBjb21wYW5pb24gZnVuY3Rp b24gdG8gYWRhX21ha2Vfc3ltYm9sX2NvbXBsZXRpb25fbGlzdCgpLgorICAgIENoZWNrIGlmIFNZ TV9OQU1FIHJlcHJlc2VudHMgYSBzeW1ib2wgd2hpY2ggbmFtZSB3b3VsZCBiZSBzdWl0YWJsZQor ICAgIHRvIGNvbXBsZXRlIFRFWFQgKFRFWFRfTEVOIGlzIHRoZSBsZW5ndGggb2YgVEVYVCksIGlu IHdoaWNoIGNhc2UKKy0tLSBzcmMvZ2RiL2NoYXJzZXQuYwkyMDEyLzAxLzA0IDA4OjE3OjAwCTEu NDYKKysrKyBzcmMvZ2RiL2NoYXJzZXQuYwkyMDEyLzAxLzI0IDIxOjM2OjM3CTEuNDcKK0BAIC0y Nyw2ICsyNyw3IEBACisgI2luY2x1ZGUgInZlYy5oIgorICNpbmNsdWRlICJlbnZpcm9uLmgiCisg I2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKysjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKKyAKKyAjaW5j bHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKK0BAIC03MTcsOCArNzE4 LDYgQEAKKyAKKyBleHRlcm4gaW5pdGlhbGl6ZV9maWxlX2Z0eXBlIF9pbml0aWFsaXplX2NoYXJz ZXQ7IC8qIC1XbWlzc2luZy1wcm90b3R5cGUgKi8KKyAKKy1ERUZfVkVDX1AgKGNoYXJfcHRyKTsK Ky0KKyBzdGF0aWMgVkVDIChjaGFyX3B0cikgKmNoYXJzZXRzOworIAorICNpZmRlZiBQSE9OWV9J Q09OVgorLS0tIHNyYy9nZGIvdHJhY2Vwb2ludC5oCTIwMTIvMDEvMDQgMDg6Mjc6NTcJMS40Ngor KysrIHNyYy9nZGIvdHJhY2Vwb2ludC5oCTIwMTIvMDEvMjQgMjE6MzY6MzcJMS40NworQEAgLTIy LDYgKzIyLDcgQEAKKyAjaW5jbHVkZSAiYnJlYWtwb2ludC5oIgorICNpbmNsdWRlICJ0YXJnZXQu aCIKKyAjaW5jbHVkZSAibWVtcmFuZ2UuaCIKKysjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKKyAKKyAv KiBBIHRyYWNlIHN0YXRlIHZhcmlhYmxlIGlzIGEgdmFsdWUgbWFuYWdlZCBieSBhIHRhcmdldCBi ZWluZworICAgIHRyYWNlZC4gIEEgdHJhY2Ugc3RhdGUgdmFyaWFibGUgKG9yIHRzdiBmb3Igc2hv cnQpIGNhbiBiZSBhY2Nlc3NlZAorQEAgLTE0Myw4ICsxNDQsNiBAQAorIAorIC8qIFN0cnVjdCB0 byBjb2xsZWN0IHJhbmRvbSBpbmZvIGFib3V0IHRyYWNlcG9pbnRzIG9uIHRoZSB0YXJnZXQuICAq LworIAorLURFRl9WRUNfUCAoY2hhcl9wdHIpOworLQorIHN0cnVjdCB1cGxvYWRlZF90cAorIHsK KyAgIGludCBudW1iZXI7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTAzb2YxOC5wYXRjaCBi L2dkYi1hdXRvbG9hZC0wM29mMTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGMwZWZjOGMuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTAzb2YxOC5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDIxNSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2 cy8yMDEyLTAxL21zZzAwMjE5Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEv MjYgMTY6NDQ6MjkJMS4xMzc4MAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEvMjYgMjE6 NTQ6NDIJMS4xMzc4MQotIyMgLTEsMyArMSwyMiBAQAotKzIwMTItMDEtMjYgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJRG8gbm90IG9wZW4gc2NyaXB0 IGZpbGVuYW1lcyB0d2ljZS4KLSsJKiBjbGkvY2xpLWNtZHMuYyAoc291cmNlX3NjcmlwdF9mcm9t X3N0cmVhbSk6IFBhc3MgdG8KLSsJc291cmNlX3B5dGhvbl9zY3JpcHQgYWxzbyBTVFJFQU0uCi0r CSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jIChzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogUGFzcyB0 bwotKwlzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSBhbHNvIFNUUkVBTS4KLSsJKGF1 dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IFBhc3MgdG8gc291cmNlX3B5dGhvbl9zY3JpcHRfZm9y X29iamZpbGUKLSsJYWxzbyBJTlBVVC4KLSsJKiBweXRob24vcHl0aG9uLWludGVybmFsLmggKHNv dXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3Ci0rCXBhcmFtZXRlciBmaWxlLCBy ZW5hbWUgcGFyYW1ldGVyIGZpbGUgdG8gZmlsZW5hbWUuCi0rCSogcHl0aG9uL3B5dGhvbi5jIChw eXRob25fcnVuX3NpbXBsZV9maWxlKTogQ2FsbCBQeVJ1bl9TaW1wbGVGaWxlCi0rCWluc3RlYWQg aWYgIV9XSU4zMi4gIFVwZGF0ZSB0aGUgZnVuY3Rpb24gY29tbWVudC4KLSsJKHNvdXJjZV9weXRo b25fc2NyaXB0LCBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSkKLSsJKHNvdXJjZV9w eXRob25fc2NyaXB0KTogTmV3IHBhcmFtZXRlciBmaWxlLCByZW5hbWUgcGFyYW1ldGVyIGZpbGUg dG8KLSsJZmlsZW5hbWUuICBQYXNzIEZJTEVOQU1FIHRvIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUu Ci0rCSogcHl0aG9uL3B5dGhvbi5oIChzb3VyY2VfcHl0aG9uX3NjcmlwdCk6IE5ldyBwYXJhbWV0 ZXIgZmlsZSwgcmVuYW1lCi0rCXBhcmFtZXRlciBmaWxlIHRvIGZpbGVuYW1lLgotKwotIDIwMTIt MDEtMjYgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+Ci0gCi0gCSogY29yZWxvdy5j IChjb3JlX2hhc19mYWtlX3BpZCk6IERlbGV0ZS4KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9jbGkvY2xpLWNtZHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi0wMS0wNCAwOToxNzoxNi4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEyLTA0LTE4 IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAotQEAgLTUyOSw5ICs1MjksNyBAQCBzb3VyY2Vfc2Ny aXB0X2Zyb21fc3RyZWFtIChGSUxFICpzdHJlYW0sCi0gCi0gICAgICAgVFJZX0NBVENIIChlLCBS RVRVUk5fTUFTS19FUlJPUikKLSAJewotLSAgICAgICAgICAvKiBUaGUgcHl0aG9uIHN1cHBvcnQg cmVvcGVucyB0aGUgZmlsZSB1c2luZyBweXRob24gZnVuY3Rpb25zLAotLSAgICAgICAgICAgICBz byB0aGVyZSdzIG5vIHBvaW50IGluIHBhc3NpbmcgU1RSRUFNIGhlcmUuICAqLwotLQkgIHNvdXJj ZV9weXRob25fc2NyaXB0IChmaWxlKTsKLSsJICBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoc3RyZWFt LCBmaWxlKTsKLSAJfQotICAgICAgIGlmIChlLnJlYXNvbiA8IDApCi0gCXsKLUluZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEy LTAxLTA0IDA5OjE3OjI1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCAr MDIwMAotQEAgLTMxMiw3ICszMTIsNyBAQCBVc2UgYGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JF R0VYUF0nIHRvCi0gCXsKLSAJICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2Fk ZWQsIGxvYWQgaXQuICAqLwotIAkgIGlmICghIGluX2hhc2hfdGFibGUpCi0tCSAgICBzb3VyY2Vf cHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZnVsbF9wYXRoKTsKLSsJICAgIHNv dXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBzdHJlYW0sIGZ1bGxfcGF0 aCk7Ci0gCSAgZmNsb3NlIChzdHJlYW0pOwotIAkgIHhmcmVlIChmdWxsX3BhdGgpOwotIAl9Ci1A QCAtNDMxLDcgKzQzMSw3IEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZp bGUKLSAJIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxvYWQgaXQgdHdpY2Us Ci0gCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRl ciBtdWx0aXBsZQotIAkgbG9hZHMgYW55d2F5LiAgKi8KLS0gICAgICBzb3VyY2VfcHl0aG9uX3Nj cmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZGVidWdmaWxlKTsKLSsgICAgICBzb3VyY2VfcHl0 aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7Ci0gICAg ICAgZmNsb3NlIChpbnB1dCk7Ci0gICAgIH0KLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUw LjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAkyMDEyLTAxLTA0IDA5 OjE3OjI1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhv bi9weXRob24taW50ZXJuYWwuaAkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAot QEAgLTI4OSw4ICsyODksOCBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKnB5 dGhvCi0gCi0gdm9pZCBnZGJweV9wcmludF9zdGFjayAodm9pZCk7Ci0gCi0tdm9pZCBzb3VyY2Vf cHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0tCQkJ CSAgICAgICBjb25zdCBjaGFyICpmaWxlKTsKLSt2b2lkIHNvdXJjZV9weXRob25fc2NyaXB0X2Zv cl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKLSsJCQkJICAg ICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLSAKLSBQeU9iamVjdCAqcHl0aG9uX3N0cmluZ190 b191bmljb2RlIChQeU9iamVjdCAqb2JqKTsKLSBjaGFyICp1bmljb2RlX3RvX3RhcmdldF9zdHJp bmcgKFB5T2JqZWN0ICp1bmljb2RlX3N0cik7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvcHl0aG9uL3B5dGhvbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMi0wNC0x OCAwMDo0MTo0Mi42OTY4NTU0MzAgKzAyMDAKLUBAIC0xNTQsMzQgKzE1NCwzMSBAQCBlbnN1cmVf cHl0aG9uX2VudiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyCi0gICByZXR1cm4gbWFrZV9jbGVhbnVw IChyZXN0b3JlX3B5dGhvbl9lbnYsIGVudik7Ci0gfQotIAotLS8qIEEgd3JhcHBlciBhcm91bmQg UHlSdW5fU2ltcGxlRmlsZS4gIEZJTEVOQU1FIGlzIHRoZSBuYW1lIG9mCi0tICAgdGhlIFB5dGhv biBzY3JpcHQgdG8gcnVuLgotKy8qIEEgd3JhcHBlciBhcm91bmQgUHlSdW5fU2ltcGxlRmlsZS4g IEZJTEUgaXMgdGhlIFB5dGhvbiBzY3JpcHQgdG8gcnVuCi0rICAgbmFtZWQgRklMRU5BTUUuCi0g Ci0tICAgT25lIG9mIHRoZSBwYXJhbWV0ZXJzIG9mIFB5UnVuX1NpbXBsZUZpbGUgaXMgYSBGSUxF ICouCi0tICAgVGhlIHByb2JsZW0gaXMgdGhhdCB0eXBlIEZJTEUgaXMgZXh0cmVtZWx5IHN5c3Rl bSBhbmQgY29tcGlsZXIKLS0gICBkZXBlbmRlbnQuICBTbywgdW5sZXNzIHRoZSBQeXRob24gbGli cmFyeSBoYXMgYmVlbiBjb21waWxlZCB1c2luZwotLSAgIHRoZSBzYW1lIGJ1aWxkIGVudmlyb25t ZW50IGFzIEdEQiwgd2UgcnVuIHRoZSByaXNrIG9mIGdldHRpbmcKLS0gICBhIGNyYXNoIGR1ZSB0 byBpbmNvbnNpc3RlbmNpZXMgYmV0d2VlbiB0aGUgZGVmaW5pdGlvbiB1c2VkIGJ5IEdEQiwKLS0g ICBhbmQgdGhlIGRlZmluaXRpb24gdXNlZCBieSBQeXRob24uICBBIG1pc21hdGNoIGNhbiB2ZXJ5 IGxpa2VseQotLSAgIGxlYWQgdG8gYSBjcmFzaC4KLS0KLS0gICBUaGVyZSBpcyBhbHNvIHRoZSBz aXR1YXRpb24gd2hlcmUgdGhlIFB5dGhvbiBsaWJyYXJ5IGFuZCBHREIKLS0gICBhcmUgdXNpbmcg dHdvIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgQyBydW50aW1lIGxpYnJhcnkuCi0tICAgVGhp cyBpcyBwYXJ0aWN1bGFybHkgdmlzaWJsZSBvbiBXaW5kb3dzLCB3aGVyZSBmZXcgdXNlcnMgd291 bGQKLS0gICBidWlsZCBQeXRob24gdGhlbXNlbHZlcyAodGhpcyBpcyBubyB0cml2aWFsIHRhc2sg b24gdGhpcyBwbGF0Zm9ybSksCi0tICAgYW5kIHRodXMgdXNlIGJpbmFyaWVzIGJ1aWx0IGJ5IHNv bWVvbmUgZWxzZSBpbnN0ZWFkLiBQeXRob24sCi0tICAgYmVpbmcgYnVpbHQgd2l0aCBWQywgd291 bGQgdXNlIG9uZSB2ZXJzaW9uIG9mIHRoZSBtc3ZjciBETEwKLS0gICAoRWcuIG1zdmNyMTAwLmRs bCksIHdoaWxlIE1pbkdXIHVzZXMgbXN2Y3J0LmRsbC4gIEEgRklMRSAqCi0tICAgZnJvbSBvbmUg cnVudGltZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBvcGVyYXRlIGNvcnJlY3RseSBpbgotKyAgIE9u IFdpbmRvd3MgaG9zdHMgZmV3IHVzZXJzIHdvdWxkIGJ1aWxkIFB5dGhvbiB0aGVtc2VsdmVzICh0 aGlzIGlzIG5vCi0rICAgdHJpdmlhbCB0YXNrIG9uIHRoaXMgcGxhdGZvcm0pLCBhbmQgdGh1cyB1 c2UgYmluYXJpZXMgYnVpbHQgYnkKLSsgICBzb21lb25lIGVsc2UgaW5zdGVhZC4gIFRoZXJlIG1h eSBoYXBwZW4gc2l0dWF0aW9uIHdoZXJlIHRoZSBQeXRob24KLSsgICBsaWJyYXJ5IGFuZCBHREIg YXJlIHVzaW5nIHR3byBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIEMgcnVudGltZQotKyAgIGxp YnJhcnkuICBQeXRob24sIGJlaW5nIGJ1aWx0IHdpdGggVkMsIHdvdWxkIHVzZSBvbmUgdmVyc2lv biBvZiB0aGUKLSsgICBtc3ZjciBETEwgKEVnLiBtc3ZjcjEwMC5kbGwpLCB3aGlsZSBNaW5HVyB1 c2VzIG1zdmNydC5kbGwuCi0rICAgQSBGSUxFICogZnJvbSBvbmUgcnVudGltZSBkb2VzIG5vdCBu ZWNlc3NhcmlseSBvcGVyYXRlIGNvcnJlY3RseSBpbgotICAgIHRoZSBvdGhlciBydW50aW1lLgot IAotLSAgIFRvIHdvcmsgYXJvdW5kIHRoaXMgcG90ZW50aWFsIGlzc3VlLCB3ZSBjcmVhdGUgdGhl IEZJTEUgb2JqZWN0Ci0tICAgdXNpbmcgUHl0aG9uIHJvdXRpbmVzLCB0aHVzIG1ha2luZyBzdXJl IHRoYXQgaXQgaXMgY29tcGF0aWJsZQotLSAgIHdpdGggdGhlIFB5dGhvbiBsaWJyYXJ5LiAgKi8K LSsgICBUbyB3b3JrIGFyb3VuZCB0aGlzIHBvdGVudGlhbCBpc3N1ZSwgd2UgY3JlYXRlIG9uIFdp bmRvd3MgaG9zdHMgdGhlCi0rICAgRklMRSBvYmplY3QgdXNpbmcgUHl0aG9uIHJvdXRpbmVzLCB0 aHVzIG1ha2luZyBzdXJlIHRoYXQgaXQgaXMKLSsgICBjb21wYXRpYmxlIHdpdGggdGhlIFB5dGhv biBsaWJyYXJ5LiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLXB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUg KGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3B5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKEZJTEUgKmZp bGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotIHsKLSsjaWZuZGVmIF9XSU4zMgotKwotKyAgUHlS dW5fU2ltcGxlRmlsZSAoZmlsZSwgZmlsZW5hbWUpOwotKwotKyNlbHNlIC8qIF9XSU4zMiAqLwot KwotICAgY2hhciAqZnVsbF9wYXRoOwotICAgUHlPYmplY3QgKnB5dGhvbl9maWxlOwotICAgc3Ry dWN0IGNsZWFudXAgKmNsZWFudXA7Ci1AQCAtMjAxLDYgKzE5OCw4IEBAIHB5dGhvbl9ydW5fc2lt cGxlX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGUKLSAgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKHB5 dGhvbl9maWxlKTsKLSAgIFB5UnVuX1NpbXBsZUZpbGUgKFB5RmlsZV9Bc0ZpbGUgKHB5dGhvbl9m aWxlKSwgZmlsZW5hbWUpOwotICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotKwotKyNlbmRpZiAv KiBfV0lOMzIgKi8KLSB9Ci0gCi0gLyogR2l2ZW4gYSBjb21tYW5kX2xpbmUsIHJldHVybiBhIGNv bW1hbmQgc3RyaW5nIHN1aXRhYmxlIGZvciBwYXNzaW5nCi1AQCAtNjIzLDE3ICs2MjIsMTcgQEAg Z2RicHlfcGFyc2VfYW5kX2V2YWwgKFB5T2JqZWN0ICpzZWxmLCBQeQotIH0KLSAKLSAvKiBSZWFk IGEgZmlsZSBhcyBQeXRob24gY29kZS4KLS0gICBGSUxFIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxl LgotKyAgIEZJTEUgaXMgdGhlIGZpbGUgdG8gcnVuLiAgRklMRU5BTUUgaXMgbmFtZSBvZiB0aGUg ZmlsZSBGSUxFLgotICAgIFRoaXMgZG9lcyBub3QgdGhyb3cgYW55IGVycm9ycy4gIElmIGFuIGV4 Y2VwdGlvbiBvY2N1cnMgcHl0aG9uIHdpbGwgcHJpbnQKLSAgICB0aGUgdHJhY2ViYWNrIGFuZCBj bGVhciB0aGUgZXJyb3IgaW5kaWNhdG9yLiAgKi8KLSAKLSB2b2lkCi0tc291cmNlX3B5dGhvbl9z Y3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUpCi0rc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZp bGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotIHsKLSAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVw OwotIAotICAgY2xlYW51cCA9IGVuc3VyZV9weXRob25fZW52IChnZXRfY3VycmVudF9hcmNoICgp LCBjdXJyZW50X2xhbmd1YWdlKTsKLS0gIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGZpbGUpOwot KyAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoZmlsZSwgZmlsZW5hbWUpOwotICAgZG9fY2xlYW51 cHMgKGNsZWFudXApOwotIH0KLSAKLUBAIC0xMDQxLDE5ICsxMDQwLDIwIEBAIGdkYnB5X3Byb2dz cGFjZXMgKFB5T2JqZWN0ICp1bnVzZWQxLCBQeU8KLSAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9m b3Jfb2JqZmlsZTsgaXQgaXMgTlVMTCBhdCBvdGhlciB0aW1lcy4gICovCi0gc3RhdGljIHN0cnVj dCBvYmpmaWxlICpnZGJweV9jdXJyZW50X29iamZpbGU7Ci0gCi0tLyogU2V0IHRoZSBjdXJyZW50 IG9iamZpbGUgdG8gT0JKRklMRSBhbmQgdGhlbiByZWFkIEZJTEUgYXMgUHl0aG9uIGNvZGUuCi0t ICAgVGhpcyBkb2VzIG5vdCB0aHJvdyBhbnkgZXJyb3JzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3Vy cyBweXRob24gd2lsbCBwcmludAotLSAgIHRoZSB0cmFjZWJhY2sgYW5kIGNsZWFyIHRoZSBlcnJv ciBpbmRpY2F0b3IuICAqLwotKy8qIFNldCB0aGUgY3VycmVudCBvYmpmaWxlIHRvIE9CSkZJTEUg YW5kIHRoZW4gcmVhZCBGSUxFIG5hbWVkIEZJTEVOQU1FCi0rICAgYXMgUHl0aG9uIGNvZGUuICBU aGlzIGRvZXMgbm90IHRocm93IGFueSBlcnJvcnMuICBJZiBhbiBleGNlcHRpb24KLSsgICBvY2N1 cnMgcHl0aG9uIHdpbGwgcHJpbnQgdGhlIHRyYWNlYmFjayBhbmQgY2xlYXIgdGhlIGVycm9yIGlu ZGljYXRvci4gICovCi0gCi0gdm9pZAotLXNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqZmlsZSkKLStzb3VyY2VfcHl0 aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZp bGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVu YW1lKQotIHsKLSAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKLSAKLSAgIGNsZWFudXBzID0g ZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpLCBjdXJyZW50X2xh bmd1YWdlKTsKLSAgIGdkYnB5X2N1cnJlbnRfb2JqZmlsZSA9IG9iamZpbGU7Ci0gCi0tICBweXRo b25fcnVuX3NpbXBsZV9maWxlIChmaWxlKTsKLSsgIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGZp bGUsIGZpbGVuYW1lKTsKLSAKLSAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7Ci0gICBnZGJweV9j dXJyZW50X29iamZpbGUgPSBOVUxMOwotQEAgLTExMjksNyArMTEyOSw3IEBAIGV2YWxfcHl0aG9u X2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QKLSB9Ci0gCi0gdm9pZAotLXNvdXJjZV9weXRo b25fc2NyaXB0IChjb25zdCBjaGFyICpmaWxlKQotK3NvdXJjZV9weXRob25fc2NyaXB0IChGSUxF ICpmaWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKLSB7Ci0gICB0aHJvd19lcnJvciAoVU5TVVBQ T1JURURfRVJST1IsCi0gCSAgICAgICBfKCJQeXRob24gc2NyaXB0aW5nIGlzIG5vdCBzdXBwb3J0 ZWQgaW4gdGhpcyBjb3B5IG9mIEdEQi4iKSk7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvcHl0aG9uL3B5dGhvbi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0x OCAwMDo0MTo0Mi42OTc4NTU0MjcgKzAyMDAKLUBAIC0zMCw3ICszMCw3IEBAIGV4dGVybiB2b2lk IGZpbmlzaF9weXRob25faW5pdGlhbGl6YXRpb24KLSAKLSB2b2lkIGV2YWxfcHl0aG9uX2Zyb21f Y29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9saW5lICopOwotIAotLXZvaWQgc291cmNl X3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUpOwotK3ZvaWQgc291cmNlX3B5dGhvbl9z Y3JpcHQgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLSAKLSB2b2lkIHJ1bl9w eXRob25fc2NyaXB0IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwotIAoKZGlmZiAtLWdpdCBhL2dk Yi1hdXRvbG9hZC0wM29mMjIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDNvZjIyLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwZWZjOGMKLS0tIC9kZXYvbnVsbAorKysg Yi9nZGItYXV0b2xvYWQtMDNvZjIyLnBhdGNoCkBAIC0wLDAgKzEsMjE1IEBACitodHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAxL21zZzAwMjE5Lmh0bWwKKworIyMjIHNyYy9n ZGIvQ2hhbmdlTG9nCTIwMTIvMDEvMjYgMTY6NDQ6MjkJMS4xMzc4MAorIyMjIHNyYy9nZGIvQ2hh bmdlTG9nCTIwMTIvMDEvMjYgMjE6NTQ6NDIJMS4xMzc4MQorIyMgLTEsMyArMSwyMiBAQAorKzIw MTItMDEtMjYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysK KysJRG8gbm90IG9wZW4gc2NyaXB0IGZpbGVuYW1lcyB0d2ljZS4KKysJKiBjbGkvY2xpLWNtZHMu YyAoc291cmNlX3NjcmlwdF9mcm9tX3N0cmVhbSk6IFBhc3MgdG8KKysJc291cmNlX3B5dGhvbl9z Y3JpcHQgYWxzbyBTVFJFQU0uCisrCSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jIChzb3VyY2Vfc2Vj dGlvbl9zY3JpcHRzKTogUGFzcyB0bworKwlzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmls ZSBhbHNvIFNUUkVBTS4KKysJKGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IFBhc3MgdG8gc291 cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUKKysJYWxzbyBJTlBVVC4KKysJKiBweXRob24v cHl0aG9uLWludGVybmFsLmggKHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3 CisrCXBhcmFtZXRlciBmaWxlLCByZW5hbWUgcGFyYW1ldGVyIGZpbGUgdG8gZmlsZW5hbWUuCisr CSogcHl0aG9uL3B5dGhvbi5jIChweXRob25fcnVuX3NpbXBsZV9maWxlKTogQ2FsbCBQeVJ1bl9T aW1wbGVGaWxlCisrCWluc3RlYWQgaWYgIV9XSU4zMi4gIFVwZGF0ZSB0aGUgZnVuY3Rpb24gY29t bWVudC4KKysJKHNvdXJjZV9weXRob25fc2NyaXB0LCBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jf b2JqZmlsZSkKKysJKHNvdXJjZV9weXRob25fc2NyaXB0KTogTmV3IHBhcmFtZXRlciBmaWxlLCBy ZW5hbWUgcGFyYW1ldGVyIGZpbGUgdG8KKysJZmlsZW5hbWUuICBQYXNzIEZJTEVOQU1FIHRvIHB5 dGhvbl9ydW5fc2ltcGxlX2ZpbGUuCisrCSogcHl0aG9uL3B5dGhvbi5oIChzb3VyY2VfcHl0aG9u X3NjcmlwdCk6IE5ldyBwYXJhbWV0ZXIgZmlsZSwgcmVuYW1lCisrCXBhcmFtZXRlciBmaWxlIHRv IGZpbGVuYW1lLgorKworIDIwMTItMDEtMjYgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5j b20+CisgCisgCSogY29yZWxvdy5jIChjb3JlX2hhc19mYWtlX3BpZCk6IERlbGV0ZS4KK0luZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jbGkvY2xpLWNtZHMuYworPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi0wMS0wNCAw OToxNzoxNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jbGkv Y2xpLWNtZHMuYwkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAorQEAgLTUyOSw5 ICs1MjksNyBAQCBzb3VyY2Vfc2NyaXB0X2Zyb21fc3RyZWFtIChGSUxFICpzdHJlYW0sCisgCisg ICAgICAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19FUlJPUikKKyAJeworLSAgICAgICAgICAv KiBUaGUgcHl0aG9uIHN1cHBvcnQgcmVvcGVucyB0aGUgZmlsZSB1c2luZyBweXRob24gZnVuY3Rp b25zLAorLSAgICAgICAgICAgICBzbyB0aGVyZSdzIG5vIHBvaW50IGluIHBhc3NpbmcgU1RSRUFN IGhlcmUuICAqLworLQkgIHNvdXJjZV9weXRob25fc2NyaXB0IChmaWxlKTsKKysJICBzb3VyY2Vf cHl0aG9uX3NjcmlwdCAoc3RyZWFtLCBmaWxlKTsKKyAJfQorICAgICAgIGlmIChlLnJlYXNvbiA8 IDApCisgCXsKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1s b2FkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhv bi9weS1hdXRvLWxvYWQuYwkyMDEyLTAxLTA0IDA5OjE3OjI1LjAwMDAwMDAwMCArMDEwMAorKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4 IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAorQEAgLTMxMiw3ICszMTIsNyBAQCBVc2UgYGluZm8g YXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0nIHRvCisgCXsKKyAJICAvKiBJZiB0aGlzIGZpbGUg aXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLworIAkgIGlmICghIGluX2hhc2hf dGFibGUpCistCSAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwg ZnVsbF9wYXRoKTsKKysJICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpm aWxlLCBzdHJlYW0sIGZ1bGxfcGF0aCk7CisgCSAgZmNsb3NlIChzdHJlYW0pOworIAkgIHhmcmVl IChmdWxsX3BhdGgpOworIAl9CitAQCAtNDMxLDcgKzQzMSw3IEBAIGF1dG9fbG9hZF9vYmpmaWxl X3NjcmlwdCAoc3RydWN0IG9iamZpbGUKKyAJIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgd2Un ZCBldmVyIGxvYWQgaXQgdHdpY2UsCisgCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQg dG8gYmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQorIAkgbG9hZHMgYW55d2F5LiAgKi8KKy0g ICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZGVidWdmaWxl KTsKKysgICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5w dXQsIGRlYnVnZmlsZSk7CisgICAgICAgZmNsb3NlIChpbnB1dCk7CisgICAgIH0KKyAKK0luZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24taW50 ZXJuYWwuaAkyMDEyLTAxLTA0IDA5OjE3OjI1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAkyMDEyLTA0LTE4IDAwOjQx OjQyLjY5Njg1NTQzMCArMDIwMAorQEAgLTI4OSw4ICsyODksOCBAQCBleHRlcm4gY29uc3Qgc3Ry dWN0IGxhbmd1YWdlX2RlZm4gKnB5dGhvCisgCisgdm9pZCBnZGJweV9wcmludF9zdGFjayAodm9p ZCk7CisgCistdm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCistCQkJCSAgICAgICBjb25zdCBjaGFyICpmaWxlKTsKKyt2b2lkIHNv dXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg RklMRSAqZmlsZSwKKysJCQkJICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKyAKKyBQeU9i amVjdCAqcHl0aG9uX3N0cmluZ190b191bmljb2RlIChQeU9iamVjdCAqb2JqKTsKKyBjaGFyICp1 bmljb2RlX3RvX3RhcmdldF9zdHJpbmcgKFB5T2JqZWN0ICp1bmljb2RlX3N0cik7CitJbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5jCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMi0wNC0xOCAw MDo0MTozMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRo b24vcHl0aG9uLmMJMjAxMi0wNC0xOCAwMDo0MTo0Mi42OTY4NTU0MzAgKzAyMDAKK0BAIC0xNTQs MzQgKzE1NCwzMSBAQCBlbnN1cmVfcHl0aG9uX2VudiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyCisg ICByZXR1cm4gbWFrZV9jbGVhbnVwIChyZXN0b3JlX3B5dGhvbl9lbnYsIGVudik7CisgfQorIAor LS8qIEEgd3JhcHBlciBhcm91bmQgUHlSdW5fU2ltcGxlRmlsZS4gIEZJTEVOQU1FIGlzIHRoZSBu YW1lIG9mCistICAgdGhlIFB5dGhvbiBzY3JpcHQgdG8gcnVuLgorKy8qIEEgd3JhcHBlciBhcm91 bmQgUHlSdW5fU2ltcGxlRmlsZS4gIEZJTEUgaXMgdGhlIFB5dGhvbiBzY3JpcHQgdG8gcnVuCisr ICAgbmFtZWQgRklMRU5BTUUuCisgCistICAgT25lIG9mIHRoZSBwYXJhbWV0ZXJzIG9mIFB5UnVu X1NpbXBsZUZpbGUgaXMgYSBGSUxFICouCistICAgVGhlIHByb2JsZW0gaXMgdGhhdCB0eXBlIEZJ TEUgaXMgZXh0cmVtZWx5IHN5c3RlbSBhbmQgY29tcGlsZXIKKy0gICBkZXBlbmRlbnQuICBTbywg dW5sZXNzIHRoZSBQeXRob24gbGlicmFyeSBoYXMgYmVlbiBjb21waWxlZCB1c2luZworLSAgIHRo ZSBzYW1lIGJ1aWxkIGVudmlyb25tZW50IGFzIEdEQiwgd2UgcnVuIHRoZSByaXNrIG9mIGdldHRp bmcKKy0gICBhIGNyYXNoIGR1ZSB0byBpbmNvbnNpc3RlbmNpZXMgYmV0d2VlbiB0aGUgZGVmaW5p dGlvbiB1c2VkIGJ5IEdEQiwKKy0gICBhbmQgdGhlIGRlZmluaXRpb24gdXNlZCBieSBQeXRob24u ICBBIG1pc21hdGNoIGNhbiB2ZXJ5IGxpa2VseQorLSAgIGxlYWQgdG8gYSBjcmFzaC4KKy0KKy0g ICBUaGVyZSBpcyBhbHNvIHRoZSBzaXR1YXRpb24gd2hlcmUgdGhlIFB5dGhvbiBsaWJyYXJ5IGFu ZCBHREIKKy0gICBhcmUgdXNpbmcgdHdvIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgQyBydW50 aW1lIGxpYnJhcnkuCistICAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdmlzaWJsZSBvbiBXaW5kb3dz LCB3aGVyZSBmZXcgdXNlcnMgd291bGQKKy0gICBidWlsZCBQeXRob24gdGhlbXNlbHZlcyAodGhp cyBpcyBubyB0cml2aWFsIHRhc2sgb24gdGhpcyBwbGF0Zm9ybSksCistICAgYW5kIHRodXMgdXNl IGJpbmFyaWVzIGJ1aWx0IGJ5IHNvbWVvbmUgZWxzZSBpbnN0ZWFkLiBQeXRob24sCistICAgYmVp bmcgYnVpbHQgd2l0aCBWQywgd291bGQgdXNlIG9uZSB2ZXJzaW9uIG9mIHRoZSBtc3ZjciBETEwK Ky0gICAoRWcuIG1zdmNyMTAwLmRsbCksIHdoaWxlIE1pbkdXIHVzZXMgbXN2Y3J0LmRsbC4gIEEg RklMRSAqCistICAgZnJvbSBvbmUgcnVudGltZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBvcGVyYXRl IGNvcnJlY3RseSBpbgorKyAgIE9uIFdpbmRvd3MgaG9zdHMgZmV3IHVzZXJzIHdvdWxkIGJ1aWxk IFB5dGhvbiB0aGVtc2VsdmVzICh0aGlzIGlzIG5vCisrICAgdHJpdmlhbCB0YXNrIG9uIHRoaXMg cGxhdGZvcm0pLCBhbmQgdGh1cyB1c2UgYmluYXJpZXMgYnVpbHQgYnkKKysgICBzb21lb25lIGVs c2UgaW5zdGVhZC4gIFRoZXJlIG1heSBoYXBwZW4gc2l0dWF0aW9uIHdoZXJlIHRoZSBQeXRob24K KysgICBsaWJyYXJ5IGFuZCBHREIgYXJlIHVzaW5nIHR3byBkaWZmZXJlbnQgdmVyc2lvbnMgb2Yg dGhlIEMgcnVudGltZQorKyAgIGxpYnJhcnkuICBQeXRob24sIGJlaW5nIGJ1aWx0IHdpdGggVkMs IHdvdWxkIHVzZSBvbmUgdmVyc2lvbiBvZiB0aGUKKysgICBtc3ZjciBETEwgKEVnLiBtc3ZjcjEw MC5kbGwpLCB3aGlsZSBNaW5HVyB1c2VzIG1zdmNydC5kbGwuCisrICAgQSBGSUxFICogZnJvbSBv bmUgcnVudGltZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBvcGVyYXRlIGNvcnJlY3RseSBpbgorICAg IHRoZSBvdGhlciBydW50aW1lLgorIAorLSAgIFRvIHdvcmsgYXJvdW5kIHRoaXMgcG90ZW50aWFs IGlzc3VlLCB3ZSBjcmVhdGUgdGhlIEZJTEUgb2JqZWN0CistICAgdXNpbmcgUHl0aG9uIHJvdXRp bmVzLCB0aHVzIG1ha2luZyBzdXJlIHRoYXQgaXQgaXMgY29tcGF0aWJsZQorLSAgIHdpdGggdGhl IFB5dGhvbiBsaWJyYXJ5LiAgKi8KKysgICBUbyB3b3JrIGFyb3VuZCB0aGlzIHBvdGVudGlhbCBp c3N1ZSwgd2UgY3JlYXRlIG9uIFdpbmRvd3MgaG9zdHMgdGhlCisrICAgRklMRSBvYmplY3QgdXNp bmcgUHl0aG9uIHJvdXRpbmVzLCB0aHVzIG1ha2luZyBzdXJlIHRoYXQgaXQgaXMKKysgICBjb21w YXRpYmxlIHdpdGggdGhlIFB5dGhvbiBsaWJyYXJ5LiAgKi8KKyAKKyBzdGF0aWMgdm9pZAorLXB5 dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorK3B5dGhvbl9ydW5f c2ltcGxlX2ZpbGUgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorIHsKKysjaWZu ZGVmIF9XSU4zMgorKworKyAgUHlSdW5fU2ltcGxlRmlsZSAoZmlsZSwgZmlsZW5hbWUpOworKwor KyNlbHNlIC8qIF9XSU4zMiAqLworKworICAgY2hhciAqZnVsbF9wYXRoOworICAgUHlPYmplY3Qg KnB5dGhvbl9maWxlOworICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7CitAQCAtMjAxLDYgKzE5 OCw4IEBAIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGUKKyAgIG1ha2Vf Y2xlYW51cF9weV9kZWNyZWYgKHB5dGhvbl9maWxlKTsKKyAgIFB5UnVuX1NpbXBsZUZpbGUgKFB5 RmlsZV9Bc0ZpbGUgKHB5dGhvbl9maWxlKSwgZmlsZW5hbWUpOworICAgZG9fY2xlYW51cHMgKGNs ZWFudXApOworKworKyNlbmRpZiAvKiBfV0lOMzIgKi8KKyB9CisgCisgLyogR2l2ZW4gYSBjb21t YW5kX2xpbmUsIHJldHVybiBhIGNvbW1hbmQgc3RyaW5nIHN1aXRhYmxlIGZvciBwYXNzaW5nCitA QCAtNjIzLDE3ICs2MjIsMTcgQEAgZ2RicHlfcGFyc2VfYW5kX2V2YWwgKFB5T2JqZWN0ICpzZWxm LCBQeQorIH0KKyAKKyAvKiBSZWFkIGEgZmlsZSBhcyBQeXRob24gY29kZS4KKy0gICBGSUxFIGlz IHRoZSBuYW1lIG9mIHRoZSBmaWxlLgorKyAgIEZJTEUgaXMgdGhlIGZpbGUgdG8gcnVuLiAgRklM RU5BTUUgaXMgbmFtZSBvZiB0aGUgZmlsZSBGSUxFLgorICAgIFRoaXMgZG9lcyBub3QgdGhyb3cg YW55IGVycm9ycy4gIElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgcHl0aG9uIHdpbGwgcHJpbnQKKyAg ICB0aGUgdHJhY2ViYWNrIGFuZCBjbGVhciB0aGUgZXJyb3IgaW5kaWNhdG9yLiAgKi8KKyAKKyB2 b2lkCistc291cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUpCisrc291cmNlX3B5 dGhvbl9zY3JpcHQgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorIHsKKyAgIHN0 cnVjdCBjbGVhbnVwICpjbGVhbnVwOworIAorICAgY2xlYW51cCA9IGVuc3VyZV9weXRob25fZW52 IChnZXRfY3VycmVudF9hcmNoICgpLCBjdXJyZW50X2xhbmd1YWdlKTsKKy0gIHB5dGhvbl9ydW5f c2ltcGxlX2ZpbGUgKGZpbGUpOworKyAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoZmlsZSwgZmls ZW5hbWUpOworICAgZG9fY2xlYW51cHMgKGNsZWFudXApOworIH0KKyAKK0BAIC0xMDQxLDE5ICsx MDQwLDIwIEBAIGdkYnB5X3Byb2dzcGFjZXMgKFB5T2JqZWN0ICp1bnVzZWQxLCBQeU8KKyAgICBz b3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZTsgaXQgaXMgTlVMTCBhdCBvdGhlciB0aW1l cy4gICovCisgc3RhdGljIHN0cnVjdCBvYmpmaWxlICpnZGJweV9jdXJyZW50X29iamZpbGU7Cisg CistLyogU2V0IHRoZSBjdXJyZW50IG9iamZpbGUgdG8gT0JKRklMRSBhbmQgdGhlbiByZWFkIEZJ TEUgYXMgUHl0aG9uIGNvZGUuCistICAgVGhpcyBkb2VzIG5vdCB0aHJvdyBhbnkgZXJyb3JzLiAg SWYgYW4gZXhjZXB0aW9uIG9jY3VycyBweXRob24gd2lsbCBwcmludAorLSAgIHRoZSB0cmFjZWJh Y2sgYW5kIGNsZWFyIHRoZSBlcnJvciBpbmRpY2F0b3IuICAqLworKy8qIFNldCB0aGUgY3VycmVu dCBvYmpmaWxlIHRvIE9CSkZJTEUgYW5kIHRoZW4gcmVhZCBGSUxFIG5hbWVkIEZJTEVOQU1FCisr ICAgYXMgUHl0aG9uIGNvZGUuICBUaGlzIGRvZXMgbm90IHRocm93IGFueSBlcnJvcnMuICBJZiBh biBleGNlcHRpb24KKysgICBvY2N1cnMgcHl0aG9uIHdpbGwgcHJpbnQgdGhlIHRyYWNlYmFjayBh bmQgY2xlYXIgdGhlIGVycm9yIGluZGljYXRvci4gICovCisgCisgdm9pZAorLXNvdXJjZV9weXRo b25fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hh ciAqZmlsZSkKKytzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorIHsKKyAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVw czsKKyAKKyAgIGNsZWFudXBzID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9vYmpmaWxlX2FyY2gg KG9iamZpbGUpLCBjdXJyZW50X2xhbmd1YWdlKTsKKyAgIGdkYnB5X2N1cnJlbnRfb2JqZmlsZSA9 IG9iamZpbGU7CisgCistICBweXRob25fcnVuX3NpbXBsZV9maWxlIChmaWxlKTsKKysgIHB5dGhv bl9ydW5fc2ltcGxlX2ZpbGUgKGZpbGUsIGZpbGVuYW1lKTsKKyAKKyAgIGRvX2NsZWFudXBzIChj bGVhbnVwcyk7CisgICBnZGJweV9jdXJyZW50X29iamZpbGUgPSBOVUxMOworQEAgLTExMjksNyAr MTEyOSw3IEBAIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QKKyB9Cisg Cisgdm9pZAorLXNvdXJjZV9weXRob25fc2NyaXB0IChjb25zdCBjaGFyICpmaWxlKQorK3NvdXJj ZV9weXRob25fc2NyaXB0IChGSUxFICpmaWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKKyB7Cisg ICB0aHJvd19lcnJvciAoVU5TVVBQT1JURURfRVJST1IsCisgCSAgICAgICBfKCJQeXRob24gc2Ny aXB0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb3B5IG9mIEdEQi4iKSk7CitJbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5oCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAw MDo0MTozMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRo b24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0MTo0Mi42OTc4NTU0MjcgKzAyMDAKK0BAIC0zMCw3 ICszMCw3IEBAIGV4dGVybiB2b2lkIGZpbmlzaF9weXRob25faW5pdGlhbGl6YXRpb24KKyAKKyB2 b2lkIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9saW5l ICopOworIAorLXZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUpOwor K3ZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVu YW1lKTsKKyAKKyB2b2lkIHJ1bl9weXRob25fc2NyaXB0IChpbnQgYXJnYywgY2hhciAqKmFyZ3Yp OworIAoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wNG9mMTgucGF0Y2ggYi9nZGItYXV0b2xv YWQtMDRvZjE4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDVhYzg3Li4w MDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0wNG9mMTgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSwxNDEgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9t c2cwMDIzNC5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjEzOjM5 CTEuMTQwMjUKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE2OjE3CTEuMTQw MjYKLSMjIC0xLDMgKzEsMTQgQEAKLSsyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCUNvZGUgY2xlYW51cC4KLSsJKiBtYWluLmMgKHN0 cnVjdCBjbWRhcmcpOiBNb3ZlIGl0IGhlcmUgZnJvbSBtYWluLiAgQWRkIG1vcmUgY29tbWVudHMu Ci0rCShjbWRhcmdfcywgVkVDIChjbWRhcmdfcykpOiBOZXcuCi0rCShtYWluKTogTW92ZSBzdHJ1 Y3QgY21kYXJnIGZyb20gaGVyZS4gIE5ldyB2YXJpYWJsZXMgY21kYXJnX3ZlYyBhbmQKLSsJY21k YXJnX3AuICBSZW1vdmUgdmFyaWFibGVzIGNtZHNpemUgYW5kIG5jbWQgYW5kIHRoZWlyIGluaXRp YWxpemF0aW9uLgotKwlJbnN0YWxsIGNsZWFudXAgZm9yIGNtZGFyZ192ZWMuICBVcGRhdGUgZmls bGluZyBmb3Igb3B0aW9ucyAneCcgYW5kCi0rCSdYJy4gIFJlcGxhY2UgY21kYXJnIHByb2Nlc3Np bmcgYnkgY21kYXJnX3ZlYyBwcm9jZXNzaW5nLiAgUmVtb3ZlIHhmcmVlCi0rCW9mIENNREFSRy4K LSsKLSAyMDEyLTAzLTE5ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0gCi0gCSog Z251LXYzLWFiaS5jIChnbnV2M19wcmludF92dGFibGUpOiBJbml0aWFsaXplICdyZXN1bHRfdmVj Jy4KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQxOjMx LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEy LTA0LTE4IDAwOjQyOjE1LjM1NDc3MjMzNyArMDIwMAotQEAgLTI3Nyw2ICsyNzcsMjUgQEAgZXhl Y19vcl9jb3JlX2ZpbGVfYXR0YWNoIChjaGFyICpmaWxlbmFtZQotICAgICB9Ci0gfQotIAotKy8q IEFyZ3VtZW50cyBvZiAtLWNvbW1hbmQgb3B0aW9uIGFuZCBpdHMgY291bnRlcnBhcnQuICAqLwot K3R5cGVkZWYgc3RydWN0IGNtZGFyZyB7Ci0rICAvKiBUeXBlIG9mIHRoaXMgb3B0aW9uLiAgKi8K LSsgIGVudW0gewotKyAgICAvKiBPcHRpb24gdHlwZSAteC4gICovCi0rICAgIENNREFSR19GSUxF LAotKwotKyAgICAvKiBPcHRpb24gdHlwZSAtZXguICAqLwotKyAgICBDTURBUkdfQ09NTUFORAot KyAgfSB0eXBlOwotKwotKyAgLyogVmFsdWUgb2YgdGhpcyBvcHRpb24gLSBmaWxlbmFtZSBvciB0 aGUgR0RCIGNvbW1hbmQgaXRzZWxmLiAgU3RyaW5nIG1lbW9yeQotKyAgICAgaXMgbm90IG93bmVk IGJ5IHRoaXMgc3RydWN0dXJlIGRlc3BpdGUgaXQgaXMgJ2NvbnN0Jy4gICovCi0rICBjaGFyICpz dHJpbmc7Ci0rfSBjbWRhcmdfczsKLSsKLSsvKiBEZWZpbmUgdHlwZSBWRUMgKGNtZGFyZ19zKS4g ICovCi0rREVGX1ZFQ19PIChjbWRhcmdfcyk7Ci0rCi0gc3RhdGljIGludAotIGNhcHR1cmVkX21h aW4gKHZvaWQgKmRhdGEpCi0gewotQEAgLTMwMywxNyArMzIyLDggQEAgY2FwdHVyZWRfbWFpbiAo dm9pZCAqZGF0YSkKLSAgIHN0YXRpYyBpbnQgcHJpbnRfdmVyc2lvbjsKLSAKLSAgIC8qIFBvaW50 ZXJzIHRvIGFsbCBhcmd1bWVudHMgb2YgLS1jb21tYW5kIG9wdGlvbi4gICovCi0tICBzdHJ1Y3Qg Y21kYXJnIHsKLS0gICAgZW51bSB7Ci0tICAgICAgQ01EQVJHX0ZJTEUsCi0tICAgICAgQ01EQVJH X0NPTU1BTkQKLS0gICAgfSB0eXBlOwotLSAgICBjaGFyICpzdHJpbmc7Ci0tICB9ICpjbWRhcmc7 Ci0tICAvKiBBbGxvY2F0ZWQgc2l6ZSBvZiBjbWRhcmcuICAqLwotLSAgaW50IGNtZHNpemU7Ci0t ICAvKiBOdW1iZXIgb2YgZWxlbWVudHMgb2YgY21kYXJnIHVzZWQuICAqLwotLSAgaW50IG5jbWQ7 Ci0rICBWRUMgKGNtZGFyZ19zKSAqY21kYXJnX3ZlYyA9IE5VTEw7Ci0rICBzdHJ1Y3QgY21kYXJn ICpjbWRhcmdfcDsKLSAKLSAgIC8qIEluZGljZXMgb2YgYWxsIGFyZ3VtZW50cyBvZiAtLWRpcmVj dG9yeSBvcHRpb24uICAqLwotICAgY2hhciAqKmRpcmFyZzsKLUBAIC0zNDksOSArMzU5LDcgQEAg Y2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgIGJpbmR0ZXh0ZG9tYWluIChQQUNLQUdFLCBM T0NBTEVESVIpOwotICAgdGV4dGRvbWFpbiAoUEFDS0FHRSk7Ci0gCi0tICBjbWRzaXplID0gMTsK LS0gIGNtZGFyZyA9IChzdHJ1Y3QgY21kYXJnICopIHhtYWxsb2MgKGNtZHNpemUgKiBzaXplb2Yg KCpjbWRhcmcpKTsKLS0gIG5jbWQgPSAwOwotKyAgbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAo Y21kYXJnX3MpLCAmY21kYXJnX3ZlYyk7Ci0gICBkaXJzaXplID0gMTsKLSAgIGRpcmFyZyA9IChj aGFyICoqKSB4bWFsbG9jIChkaXJzaXplICogc2l6ZW9mICgqZGlyYXJnKSk7Ci0gICBuZGlyID0g MDsKLUBAIC01ODIsMjQgKzU5MCwxOSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotIAkg ICAgcGlkYXJnID0gb3B0YXJnOwotIAkgICAgYnJlYWs7Ci0gCSAgY2FzZSAneCc6Ci0tCSAgICBj bWRhcmdbbmNtZF0udHlwZSA9IENNREFSR19GSUxFOwotLQkgICAgY21kYXJnW25jbWQrK10uc3Ry aW5nID0gb3B0YXJnOwotLQkgICAgaWYgKG5jbWQgPj0gY21kc2l6ZSkKLS0JICAgICAgewotLQkJ Y21kc2l6ZSAqPSAyOwotLQkJY21kYXJnID0geHJlYWxsb2MgKChjaGFyICopIGNtZGFyZywKLS0J CQkJICAgY21kc2l6ZSAqIHNpemVvZiAoKmNtZGFyZykpOwotLQkgICAgICB9Ci0rCSAgICB7Ci0r CSAgICAgIHN0cnVjdCBjbWRhcmcgY21kYXJnID0geyBDTURBUkdfRklMRSwgb3B0YXJnIH07Ci0r Ci0rCSAgICAgIFZFQ19zYWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsK LSsJICAgIH0KLSAJICAgIGJyZWFrOwotIAkgIGNhc2UgJ1gnOgotLQkgICAgY21kYXJnW25jbWRd LnR5cGUgPSBDTURBUkdfQ09NTUFORDsKLS0JICAgIGNtZGFyZ1tuY21kKytdLnN0cmluZyA9IG9w dGFyZzsKLS0JICAgIGlmIChuY21kID49IGNtZHNpemUpCi0tCSAgICAgIHsKLS0JCWNtZHNpemUg Kj0gMjsKLS0JCWNtZGFyZyA9IHhyZWFsbG9jICgoY2hhciAqKSBjbWRhcmcsCi0tCQkJCSAgIGNt ZHNpemUgKiBzaXplb2YgKCpjbWRhcmcpKTsKLS0JICAgICAgfQotKwkgICAgewotKwkgICAgICBz dHJ1Y3QgY21kYXJnIGNtZGFyZyA9IHsgQ01EQVJHX0NPTU1BTkQsIG9wdGFyZyB9OwotKwotKwkg ICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7Ci0rCSAg ICB9Ci0rCSAgICBicmVhazsKLSAJICAgIGJyZWFrOwotIAkgIGNhc2UgJ0InOgotIAkgICAgYmF0 Y2hfZmxhZyA9IGJhdGNoX3NpbGVudCA9IDE7Ci1AQCAtOTkwLDE2ICs5OTMsMTggQEAgY2FwdHVy ZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKLSAgICAgbG9h ZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKG9iamZpbGUpOwotIAotLSAgZm9yIChpID0gMDsg aSA8IG5jbWQ7IGkrKykKLSsgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChjbWRhcmdfcywgY21k YXJnX3ZlYywgaSwgY21kYXJnX3ApOyBpKyspCi0rICAgIHN3aXRjaCAoY21kYXJnX3AtPnR5cGUp Ci0gICAgIHsKLS0gICAgICBpZiAoY21kYXJnW2ldLnR5cGUgPT0gQ01EQVJHX0ZJTEUpCi0tICAg ICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3NjcmlwdCwgY21kYXJnW2ldLnN0cmlu ZywKLSsgICAgICBjYXNlIENNREFSR19GSUxFOgotKyAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJv cnMgKHNvdXJjZV9zY3JpcHQsIGNtZGFyZ19wLT5zdHJpbmcsCi0gCQkJICAgICAgIWJhdGNoX2Zs YWcsIFJFVFVSTl9NQVNLX0FMTCk7Ci0tICAgICAgZWxzZSAgLyogY21kYXJnW2ldLnR5cGUgPT0g Q01EQVJHX0NPTU1BTkQgKi8KLS0gICAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChleGVjdXRl X2NvbW1hbmQsIGNtZGFyZ1tpXS5zdHJpbmcsCi0rCWJyZWFrOwotKyAgICAgIGNhc2UgQ01EQVJH X0NPTU1BTkQ6Ci0rICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoZXhlY3V0ZV9jb21tYW5k LCBjbWRhcmdfcC0+c3RyaW5nLAotIAkJCSAgICAgICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19B TEwpOwotKwlicmVhazsKLSAgICAgfQotLSAgeGZyZWUgKGNtZGFyZyk7Ci0gCi0gICAvKiBSZWFk IGluIHRoZSBvbGQgaGlzdG9yeSBhZnRlciBhbGwgdGhlIGNvbW1hbmQgZmlsZXMgaGF2ZSBiZWVu Ci0gICAgICByZWFkLiAgKi8KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDRvZjIyLnBhdGNo IGIvZ2RiLWF1dG9sb2FkLTA0b2YyMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi42NDVhYzg3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTA0b2YyMi5w YXRjaApAQCAtMCwwICsxLDE0MSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMv MjAxMi0wMy9tc2cwMDIzNC5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5 IDE4OjEzOjM5CTEuMTQwMjUKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE2 OjE3CTEuMTQwMjYKKyMjIC0xLDMgKzEsMTQgQEAKKysyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZp bCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCUNvZGUgY2xlYW51cC4KKysJKiBt YWluLmMgKHN0cnVjdCBjbWRhcmcpOiBNb3ZlIGl0IGhlcmUgZnJvbSBtYWluLiAgQWRkIG1vcmUg Y29tbWVudHMuCisrCShjbWRhcmdfcywgVkVDIChjbWRhcmdfcykpOiBOZXcuCisrCShtYWluKTog TW92ZSBzdHJ1Y3QgY21kYXJnIGZyb20gaGVyZS4gIE5ldyB2YXJpYWJsZXMgY21kYXJnX3ZlYyBh bmQKKysJY21kYXJnX3AuICBSZW1vdmUgdmFyaWFibGVzIGNtZHNpemUgYW5kIG5jbWQgYW5kIHRo ZWlyIGluaXRpYWxpemF0aW9uLgorKwlJbnN0YWxsIGNsZWFudXAgZm9yIGNtZGFyZ192ZWMuICBV cGRhdGUgZmlsbGluZyBmb3Igb3B0aW9ucyAneCcgYW5kCisrCSdYJy4gIFJlcGxhY2UgY21kYXJn IHByb2Nlc3NpbmcgYnkgY21kYXJnX3ZlYyBwcm9jZXNzaW5nLiAgUmVtb3ZlIHhmcmVlCisrCW9m IENNREFSRy4KKysKKyAyMDEyLTAzLTE5ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+ CisgCisgCSogZ251LXYzLWFiaS5jIChnbnV2M19wcmludF92dGFibGUpOiBJbml0aWFsaXplICdy ZXN1bHRfdmVjJy4KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4 IDAwOjQxOjMxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21h aW4uYwkyMDEyLTA0LTE4IDAwOjQyOjE1LjM1NDc3MjMzNyArMDIwMAorQEAgLTI3Nyw2ICsyNzcs MjUgQEAgZXhlY19vcl9jb3JlX2ZpbGVfYXR0YWNoIChjaGFyICpmaWxlbmFtZQorICAgICB9Cisg fQorIAorKy8qIEFyZ3VtZW50cyBvZiAtLWNvbW1hbmQgb3B0aW9uIGFuZCBpdHMgY291bnRlcnBh cnQuICAqLworK3R5cGVkZWYgc3RydWN0IGNtZGFyZyB7CisrICAvKiBUeXBlIG9mIHRoaXMgb3B0 aW9uLiAgKi8KKysgIGVudW0geworKyAgICAvKiBPcHRpb24gdHlwZSAteC4gICovCisrICAgIENN REFSR19GSUxFLAorKworKyAgICAvKiBPcHRpb24gdHlwZSAtZXguICAqLworKyAgICBDTURBUkdf Q09NTUFORAorKyAgfSB0eXBlOworKworKyAgLyogVmFsdWUgb2YgdGhpcyBvcHRpb24gLSBmaWxl bmFtZSBvciB0aGUgR0RCIGNvbW1hbmQgaXRzZWxmLiAgU3RyaW5nIG1lbW9yeQorKyAgICAgaXMg bm90IG93bmVkIGJ5IHRoaXMgc3RydWN0dXJlIGRlc3BpdGUgaXQgaXMgJ2NvbnN0Jy4gICovCisr ICBjaGFyICpzdHJpbmc7CisrfSBjbWRhcmdfczsKKysKKysvKiBEZWZpbmUgdHlwZSBWRUMgKGNt ZGFyZ19zKS4gICovCisrREVGX1ZFQ19PIChjbWRhcmdfcyk7CisrCisgc3RhdGljIGludAorIGNh cHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgeworQEAgLTMwMywxNyArMzIyLDggQEAgY2FwdHVy ZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgIHN0YXRpYyBpbnQgcHJpbnRfdmVyc2lvbjsKKyAKKyAg IC8qIFBvaW50ZXJzIHRvIGFsbCBhcmd1bWVudHMgb2YgLS1jb21tYW5kIG9wdGlvbi4gICovCist ICBzdHJ1Y3QgY21kYXJnIHsKKy0gICAgZW51bSB7CistICAgICAgQ01EQVJHX0ZJTEUsCistICAg ICAgQ01EQVJHX0NPTU1BTkQKKy0gICAgfSB0eXBlOworLSAgICBjaGFyICpzdHJpbmc7CistICB9 ICpjbWRhcmc7CistICAvKiBBbGxvY2F0ZWQgc2l6ZSBvZiBjbWRhcmcuICAqLworLSAgaW50IGNt ZHNpemU7CistICAvKiBOdW1iZXIgb2YgZWxlbWVudHMgb2YgY21kYXJnIHVzZWQuICAqLworLSAg aW50IG5jbWQ7CisrICBWRUMgKGNtZGFyZ19zKSAqY21kYXJnX3ZlYyA9IE5VTEw7CisrICBzdHJ1 Y3QgY21kYXJnICpjbWRhcmdfcDsKKyAKKyAgIC8qIEluZGljZXMgb2YgYWxsIGFyZ3VtZW50cyBv ZiAtLWRpcmVjdG9yeSBvcHRpb24uICAqLworICAgY2hhciAqKmRpcmFyZzsKK0BAIC0zNDksOSAr MzU5LDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgIGJpbmR0ZXh0ZG9tYWluIChQ QUNLQUdFLCBMT0NBTEVESVIpOworICAgdGV4dGRvbWFpbiAoUEFDS0FHRSk7CisgCistICBjbWRz aXplID0gMTsKKy0gIGNtZGFyZyA9IChzdHJ1Y3QgY21kYXJnICopIHhtYWxsb2MgKGNtZHNpemUg KiBzaXplb2YgKCpjbWRhcmcpKTsKKy0gIG5jbWQgPSAwOworKyAgbWFrZV9jbGVhbnVwIChWRUNf Y2xlYW51cCAoY21kYXJnX3MpLCAmY21kYXJnX3ZlYyk7CisgICBkaXJzaXplID0gMTsKKyAgIGRp cmFyZyA9IChjaGFyICoqKSB4bWFsbG9jIChkaXJzaXplICogc2l6ZW9mICgqZGlyYXJnKSk7Cisg ICBuZGlyID0gMDsKK0BAIC01ODIsMjQgKzU5MCwxOSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpk YXRhKQorIAkgICAgcGlkYXJnID0gb3B0YXJnOworIAkgICAgYnJlYWs7CisgCSAgY2FzZSAneCc6 CistCSAgICBjbWRhcmdbbmNtZF0udHlwZSA9IENNREFSR19GSUxFOworLQkgICAgY21kYXJnW25j bWQrK10uc3RyaW5nID0gb3B0YXJnOworLQkgICAgaWYgKG5jbWQgPj0gY21kc2l6ZSkKKy0JICAg ICAgeworLQkJY21kc2l6ZSAqPSAyOworLQkJY21kYXJnID0geHJlYWxsb2MgKChjaGFyICopIGNt ZGFyZywKKy0JCQkJICAgY21kc2l6ZSAqIHNpemVvZiAoKmNtZGFyZykpOworLQkgICAgICB9Cisr CSAgICB7CisrCSAgICAgIHN0cnVjdCBjbWRhcmcgY21kYXJnID0geyBDTURBUkdfRklMRSwgb3B0 YXJnIH07CisrCisrCSAgICAgIFZFQ19zYWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAm Y21kYXJnKTsKKysJICAgIH0KKyAJICAgIGJyZWFrOworIAkgIGNhc2UgJ1gnOgorLQkgICAgY21k YXJnW25jbWRdLnR5cGUgPSBDTURBUkdfQ09NTUFORDsKKy0JICAgIGNtZGFyZ1tuY21kKytdLnN0 cmluZyA9IG9wdGFyZzsKKy0JICAgIGlmIChuY21kID49IGNtZHNpemUpCistCSAgICAgIHsKKy0J CWNtZHNpemUgKj0gMjsKKy0JCWNtZGFyZyA9IHhyZWFsbG9jICgoY2hhciAqKSBjbWRhcmcsCist CQkJCSAgIGNtZHNpemUgKiBzaXplb2YgKCpjbWRhcmcpKTsKKy0JICAgICAgfQorKwkgICAgewor KwkgICAgICBzdHJ1Y3QgY21kYXJnIGNtZGFyZyA9IHsgQ01EQVJHX0NPTU1BTkQsIG9wdGFyZyB9 OworKworKwkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFy Zyk7CisrCSAgICB9CisrCSAgICBicmVhazsKKyAJICAgIGJyZWFrOworIAkgIGNhc2UgJ0InOgor IAkgICAgYmF0Y2hfZmxhZyA9IGJhdGNoX3NpbGVudCA9IDE7CitAQCAtOTkwLDE2ICs5OTMsMTgg QEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkK KyAgICAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKG9iamZpbGUpOworIAorLSAgZm9y IChpID0gMDsgaSA8IG5jbWQ7IGkrKykKKysgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChjbWRh cmdfcywgY21kYXJnX3ZlYywgaSwgY21kYXJnX3ApOyBpKyspCisrICAgIHN3aXRjaCAoY21kYXJn X3AtPnR5cGUpCisgICAgIHsKKy0gICAgICBpZiAoY21kYXJnW2ldLnR5cGUgPT0gQ01EQVJHX0ZJ TEUpCistICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3NjcmlwdCwgY21kYXJn W2ldLnN0cmluZywKKysgICAgICBjYXNlIENNREFSR19GSUxFOgorKyAgICAgICAgY2F0Y2hfY29t bWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGNtZGFyZ19wLT5zdHJpbmcsCisgCQkJICAgICAg IWJhdGNoX2ZsYWcsIFJFVFVSTl9NQVNLX0FMTCk7CistICAgICAgZWxzZSAgLyogY21kYXJnW2ld LnR5cGUgPT0gQ01EQVJHX0NPTU1BTkQgKi8KKy0gICAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3Jz IChleGVjdXRlX2NvbW1hbmQsIGNtZGFyZ1tpXS5zdHJpbmcsCisrCWJyZWFrOworKyAgICAgIGNh c2UgQ01EQVJHX0NPTU1BTkQ6CisrICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoZXhlY3V0 ZV9jb21tYW5kLCBjbWRhcmdfcC0+c3RyaW5nLAorIAkJCSAgICAgICFiYXRjaF9mbGFnLCBSRVRV Uk5fTUFTS19BTEwpOworKwlicmVhazsKKyAgICAgfQorLSAgeGZyZWUgKGNtZGFyZyk7CisgCisg ICAvKiBSZWFkIGluIHRoZSBvbGQgaGlzdG9yeSBhZnRlciBhbGwgdGhlIGNvbW1hbmQgZmlsZXMg aGF2ZSBiZWVuCisgICAgICByZWFkLiAgKi8KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDVv ZjE4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA1b2YxOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggOGRkOGNjMy4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMDVvZjE4LnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQ0ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItY3ZzLzIwMTItMDMvbXNnMDAyMzUuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VM b2cJMjAxMi8wMy8xOSAxODoxNjoxNwkxLjE0MDI2Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAx Mi8wMy8xOSAxODoxOToyMwkxLjE0MDI3Ci0jIyAtMSw1ICsxLDE4IEBACi0gMjAxMi0wMy0xOSAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotKwkqIE5FV1M6 IERlc2NyaWJlIG5ldyBvcHRpb25zIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCBhbmQKLSsJLS1p bml0LWV2YWwtY29tbWFuZD1DT01NQU5ELCAtaWV4LgotKwkqIG1haW4uYyAoc3RydWN0IGNtZGFy Zyk6IE5ldyBlbnVtIGl0ZW1zIENNREFSR19JTklUX0ZJTEUgYW5kCi0rCUNNREFSR19JTklUX0NP TU1BTkQuCi0rCShjYXB0dXJlZF9tYWluKTogTmV3IGVudW0gaXRlbXMgT1BUX0lYIGFuZCBPUFRf SUVYLiAgQWRkCi0rCSJpbml0LWNvbW1hbmQiLCAiaW5pdC1ldmFsLWNvbW1hbmQiLCAiaXgiIGFu ZCAiaWV4IiB0byB0aGUgdmFyaWFibGUKLSsJbG9uZ19vcHRpb25zLiAgSGFuZGxlIE9QVF9JWCBh bmQgT1BUX0lFWC4gIFByb2Nlc3MgdGhlbSBmcm9tIENNREFSR19WRUMuCi0rCU5ldyBjb21tZW50 IGZvciBDTURBUkdfRklMRSBhbmQgQ01EQVJHX0NPTU1BTkQgcHJvY2Vzc2luZy4KLSsJKHByaW50 X2dkYl9oZWxwKTogRGVzY3JpYmUgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IGFuZAotKwktLWlu aXQtZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1pZXguCi0rCi0rMjAxMi0wMy0xOSAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotIAlDb2RlIGNsZWFudXAuCi0g CSogbWFpbi5jIChzdHJ1Y3QgY21kYXJnKTogTW92ZSBpdCBoZXJlIGZyb20gbWFpbi4gIEFkZCBt b3JlIGNvbW1lbnRzLgotIAkoY21kYXJnX3MsIFZFQyAoY21kYXJnX3MpKTogTmV3LgotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUw LjIwMTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDI6NTEu MjI2NjgxMDY4ICswMjAwCi1AQCAtMjgsNiArMjgsMTMgQEAKLSAgIG5vdyBzZXQgYSBicmVha3Bv aW50IGluIGJ1aWxkL2djYy9leHByLmMsIGJ1dCBub3QKLSAgIGJ1aWxkL2xpYmNwcC9leHByLmMu Ci0gCi0rKiBOZXcgY29tbWFuZCBsaW5lIG9wdGlvbnMKLSsKLSstLWluaXQtY29tbWFuZD1GSUxF LCAtaXggICAgICAgICAgTGlrZSAtLWNvbW1hbmQsIC14IGJ1dCBleGVjdXRlIGl0Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSBsb2FkaW5nIGluZmVyaW9yLgotKy0t aW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWlleCBMaWtlIC0tZXZhbC1jb21tYW5kPUNPTU1B TkQsIC1leCBidXQKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZSBp dCBiZWZvcmUgbG9hZGluZyBpbmZlcmlvci4KLSsKLSAqKiogQ2hhbmdlcyBpbiBHREIgNy40Ci0g Ci0gKiBHREIgbm93IGhhbmRsZXMgYW1iaWd1b3VzIGxpbmVzcGVjcyBtb3JlIGNvbnNpc3RlbnRs eTsgdGhlIGV4aXN0aW5nCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9tYWluLmMJMjAxMi0w NC0xOCAwMDo0MjoxNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0Mjo1MS4yMjY2ODEwNjggKzAyMDAKLUBAIC0yODUsNyAr Mjg1LDEzIEBAIHR5cGVkZWYgc3RydWN0IGNtZGFyZyB7Ci0gICAgIENNREFSR19GSUxFLAotIAot ICAgICAvKiBPcHRpb24gdHlwZSAtZXguICAqLwotLSAgICBDTURBUkdfQ09NTUFORAotKyAgICBD TURBUkdfQ09NTUFORCwKLSsKLSsgICAgLyogT3B0aW9uIHR5cGUgLWl4LiAgKi8KLSsgICAgQ01E QVJHX0lOSVRfRklMRSwKLSsgICAgCi0rICAgIC8qIE9wdGlvbiB0eXBlIC1pZXguICAqLwotKyAg ICBDTURBUkdfSU5JVF9DT01NQU5ECi0gICB9IHR5cGU7Ci0gCi0gICAvKiBWYWx1ZSBvZiB0aGlz IG9wdGlvbiAtIGZpbGVuYW1lIG9yIHRoZSBHREIgY29tbWFuZCBpdHNlbGYuICBTdHJpbmcgbWVt b3J5Ci1AQCAtNDM0LDcgKzQ0MCw5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gICAg ICAgT1BUX1NUQVRJU1RJQ1MsCi0gICAgICAgT1BUX1RVSSwKLSAgICAgICBPUFRfTk9XSU5ET1dT LAotLSAgICAgIE9QVF9XSU5ET1dTCi0rICAgICAgT1BUX1dJTkRPV1MsCi0rICAgICAgT1BUX0lY LAotKyAgICAgIE9QVF9JRVgKLSAgICAgfTsKLSAgICAgc3RhdGljIHN0cnVjdCBvcHRpb24gbG9u Z19vcHRpb25zW10gPQotICAgICB7Ci1AQCAtNDc1LDYgKzQ4MywxMCBAQCBjYXB0dXJlZF9tYWlu ICh2b2lkICpkYXRhKQotICAgICAgIHsidmVyc2lvbiIsIG5vX2FyZ3VtZW50LCAmcHJpbnRfdmVy c2lvbiwgMX0sCi0gICAgICAgeyJ4IiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICd4J30sCi0gICAg ICAgeyJleCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCAnWCd9LAotKyAgICAgIHsiaW5pdC1jb21t YW5kIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsIE9QVF9JWH0sCi0rICAgICAgeyJpbml0LWV2YWwt Y29tbWFuZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCBPUFRfSUVYfSwKLSsgICAgICB7Iml4Iiwg cmVxdWlyZWRfYXJndW1lbnQsIDAsIE9QVF9JWH0sCi0rICAgICAgeyJpZXgiLCByZXF1aXJlZF9h cmd1bWVudCwgMCwgT1BUX0lFWH0sCi0gI2lmZGVmIEdEQlRLCi0gICAgICAgeyJ0Y2xjb21tYW5k IiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICd6J30sCi0gICAgICAgeyJlbmFibGUtZXh0ZXJuYWwt ZWRpdG9yIiwgbm9fYXJndW1lbnQsIDAsICd5J30sCi1AQCAtNjAzLDYgKzYxNSwxOSBAQCBjYXB0 dXJlZF9tYWluICh2b2lkICpkYXRhKQotIAkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywg Y21kYXJnX3ZlYywgJmNtZGFyZyk7Ci0gCSAgICB9Ci0gCSAgICBicmVhazsKLSsJICBjYXNlIE9Q VF9JWDoKLSsJICAgIHsKLSsJICAgICAgc3RydWN0IGNtZGFyZyBjbWRhcmcgPSB7IENNREFSR19J TklUX0ZJTEUsIG9wdGFyZyB9OwotKwotKwkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywg Y21kYXJnX3ZlYywgJmNtZGFyZyk7Ci0rCSAgICB9Ci0rCSAgICBicmVhazsKLSsJICBjYXNlIE9Q VF9JRVg6Ci0rCSAgICB7Ci0rCSAgICAgIHN0cnVjdCBjbWRhcmcgY21kYXJnID0geyBDTURBUkdf SU5JVF9DT01NQU5ELCBvcHRhcmcgfTsKLSsKLSsJICAgICAgVkVDX3NhZmVfcHVzaCAoY21kYXJn X3MsIGNtZGFyZ192ZWMsICZjbWRhcmcpOwotKwkgICAgfQotIAkgICAgYnJlYWs7Ci0gCSAgY2Fz ZSAnQic6Ci0gCSAgICBiYXRjaF9mbGFnID0gYmF0Y2hfc2lsZW50ID0gMTsKLUBAIC04NzcsNiAr OTAyLDIwIEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gICBxdWl0X3ByZV9wcmludCA9 IGVycm9yX3ByZV9wcmludDsKLSAgIHdhcm5pbmdfcHJlX3ByaW50ID0gXygiXG53YXJuaW5nOiAi KTsKLSAKLSsgIC8qIFByb2Nlc3MgJy1peCcgYW5kICctaWV4JyBvcHRpb25zIGVhcmx5LiAgKi8K LSsgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChjbWRhcmdfcywgY21kYXJnX3ZlYywgaSwgY21k YXJnX3ApOyBpKyspCi0rICAgIHN3aXRjaCAoY21kYXJnX3AtPnR5cGUpCi0rICAgIHsKLSsgICAg ICBjYXNlIENNREFSR19JTklUX0ZJTEU6Ci0rICAgICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAo c291cmNlX3NjcmlwdCwgY21kYXJnX3AtPnN0cmluZywKLSsJCQkgICAgICAhYmF0Y2hfZmxhZywg UkVUVVJOX01BU0tfQUxMKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBDTURBUkdfSU5JVF9DT01N QU5EOgotKyAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGV4ZWN1dGVfY29tbWFuZCwgY21k YXJnX3AtPnN0cmluZywKLSsJCQkgICAgICAhYmF0Y2hfZmxhZywgUkVUVVJOX01BU0tfQUxMKTsK LSsJYnJlYWs7Ci0rICAgIH0KLSsKLSAgIC8qIFJlYWQgYW5kIGV4ZWN1dGUgdGhlIHN5c3RlbS13 aWRlIGdkYmluaXQgZmlsZSwgaWYgaXQgZXhpc3RzLgotICAgICAgVGhpcyBpcyBkb25lICpiZWZv cmUqIGFsbCB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhcmUKLSAgICAgIHByb2Nlc3NlZDsg aXQgc2V0cyBnbG9iYWwgcGFyYW1ldGVycywgd2hpY2ggYXJlIGluZGVwZW5kZW50IG9mCi1AQCAt OTkzLDYgKzEwMzIsNyBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotICAgQUxMX09CSkZJ TEVTIChvYmpmaWxlKQotICAgICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmls ZSk7Ci0gCi0rICAvKiBQcm9jZXNzICcteCcgYW5kICctZXgnIG9wdGlvbnMuICAqLwotICAgZm9y IChpID0gMDsgVkVDX2l0ZXJhdGUgKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCBpLCBjbWRhcmdfcCk7 IGkrKykKLSAgICAgc3dpdGNoIChjbWRhcmdfcC0+dHlwZSkKLSAgICAgewotQEAgLTEwOTMsNiAr MTEzMyw4IEBAIE9wdGlvbnM6XG5cblwKLSAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRlIGEg c2luZ2xlIEdEQiBjb21tYW5kLlxuXAotICAgICAgICAgICAgICAgICAgICAgIE1heSBiZSB1c2Vk IG11bHRpcGxlIHRpbWVzIGFuZCBpbiBjb25qdW5jdGlvblxuXAotICAgICAgICAgICAgICAgICAg ICAgIHdpdGggLS1jb21tYW5kLlxuXAotKyAgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IExpa2Ug LXggYnV0IGV4ZWN1dGUgaXQgYmVmb3JlIGxvYWRpbmcgaW5mZXJpb3IuXG5cCi0rICAtLWluaXQt ZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1pZXggTGlrZSAtZXggYnV0IGJlZm9yZSBsb2FkaW5nIGlu ZmVyaW9yLlxuXAotICAgLS1jb3JlPUNPUkVGSUxFICAgIEFuYWx5emUgdGhlIGNvcmUgZHVtcCBD T1JFRklMRS5cblwKLSAgIC0tcGlkPVBJRCAgICAgICAgICBBdHRhY2ggdG8gcnVubmluZyBwcm9j ZXNzIFBJRC5cblwKLSAiKSwgc3RyZWFtKTsKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9kb2MvZ2RiLnRleGluZm8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQxOjMxLjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4 IDAwOjQyOjUxLjIzMjY4MTA1MiArMDIwMAotQEAgLTk4OSw2ICs5ODksMjIgQEAgYWxzbyBiZSBp bnRlcmxlYXZlZCB3aXRoIEBzYW1wey1jb21tYW5kfQotICAgIC14IHNldGJyZWFrcG9pbnRzIC1l eCAncnVuJyBhLm91dAotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0rQGl0ZW0gLWluaXQtY29tbWFu ZCBAdmFye2ZpbGV9Ci0rQGl0ZW14IC1peCBAdmFye2ZpbGV9Ci0rQGNpbmRleCBAY29kZXstLWlu aXQtY29tbWFuZH0KLStAY2luZGV4IEBjb2Rley1peH0KLStFeGVjdXRlIGNvbW1hbmRzIGZyb20g ZmlsZSBAdmFye2ZpbGV9IGJlZm9yZSBsb2FkaW5nIGdkYmluaXQgZmlsZXMgb3IgdGhlCi0raW5m ZXJpb3IuCi0rQHhyZWZ7U3RhcnR1cH0uCi0rCi0rQGl0ZW0gLWluaXQtZXZhbC1jb21tYW5kIEB2 YXJ7Y29tbWFuZH0KLStAaXRlbXggLWlleCBAdmFye2NvbW1hbmR9Ci0rQGNpbmRleCBAY29kZXst LWluaXQtZXZhbC1jb21tYW5kfQotK0BjaW5kZXggQGNvZGV7LWlleH0KLStFeGVjdXRlIGEgc2lu Z2xlIEB2YWx1ZXtHREJOfSBjb21tYW5kIGJlZm9yZSBsb2FkaW5nIGdkYmluaXQgZmlsZXMgb3Ig dGhlCi0raW5mZXJpb3IuCi0rQHhyZWZ7U3RhcnR1cH0uCi0rCi0gQGl0ZW0gLWRpcmVjdG9yeSBA dmFye2RpcmVjdG9yeX0KLSBAaXRlbXggLWQgQHZhcntkaXJlY3Rvcnl9Ci0gQGNpbmRleCBAY29k ZXstLWRpcmVjdG9yeX0KLUBAIC0xMjUwLDYgKzEyNjYsMTMgQEAgU2V0cyB1cCB0aGUgY29tbWFu ZCBpbnRlcnByZXRlciBhcyBzcGVjaQotIChAcHhyZWZ7TW9kZSBPcHRpb25zLCBpbnRlcnByZXRl cn0pLgotIAotIEBpdGVtCi0rRXhlY3V0ZXMgY29tbWFuZHMgYW5kIGNvbW1hbmQgZmlsZXMgc3Bl Y2lmaWVkIGJ5IHRoZSBAc2FtcHstaWV4fSBhbmQKLStAc2FtcHstaXh9IG9wdGlvbnMgaW4gdGhl aXIgc3BlY2lmaWVkIG9yZGVyLiAgVXN1YWxseSB5b3Ugc2hvdWxkIHVzZSB0aGUKLStAc2FtcHst ZXh9IGFuZCBAc2FtcHsteH0gb3B0aW9ucyBpbnN0ZWFkLCBidXQgdGhpcyB3YXkgeW91IGNhbiBh cHBseQotK3NldHRpbmdzIGJlZm9yZSBAdmFsdWV7R0RCTn0gaW5pdCBmaWxlcyBnZXQgZXhlY3V0 ZWQgYW5kIGJlZm9yZSBpbmZlcmlvcgotK2dldHMgbG9hZGVkLgotKwotK0BpdGVtCi0gQGNpbmRl eCBpbml0IGZpbGUKLSBSZWFkcyB0aGUgc3lzdGVtLXdpZGUgQGRmbntpbml0IGZpbGV9IChpZiBA b3B0aW9uey0td2l0aC1zeXN0ZW0tZ2RiaW5pdH0gd2FzCi0gdXNlZCB3aGVuIGJ1aWxkaW5nIEB2 YWx1ZXtHREJOfTsgQHB4cmVme1N5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24sCi1AQCAtMTI4Mywx NCArMTMwNiwxMSBAQCBJZiB5b3Ugd2lzaCB0byBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcKLSB5 b3UgbXVzdCBkbyBzb21ldGhpbmcgbGlrZSB0aGUgZm9sbG93aW5nOgotIAotIEBzbWFsbGV4YW1w bGUKLS0kIGdkYiAtZXggInNldCBhdXRvLWxvYWQtc2NyaXB0cyBvZmYiIC1leCAiZmlsZSBteXBy b2dyYW0iCi0rJCBnZGIgLWlleCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFt Ci0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLS1UaGUgZm9sbG93aW5nIGRvZXMgbm90IHdvcmsgYmVj YXVzZSB0aGUgYXV0by1sb2FkaW5nIGlzIHR1cm5lZCBvZmYgdG9vIGxhdGU6Ci0tCi0tQHNtYWxs ZXhhbXBsZQotLSQgZ2RiIC1leCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFt Ci0tQGVuZCBzbWFsbGV4YW1wbGUKLStPcHRpb24gQHNhbXB7LWV4fSBkb2VzIG5vdCB3b3JrIGJl Y2F1c2UgdGhlIGF1dG8tbG9hZGluZyBpcyB0aGVuIHR1cm5lZAotK29mZiB0b28gbGF0ZS4KLSAK LSBAaXRlbQotIFJlYWRzIGNvbW1hbmQgZmlsZXMgc3BlY2lmaWVkIGJ5IHRoZSBAc2FtcHsteH0g b3B0aW9uLiAgQHhyZWZ7Q29tbWFuZAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rl c3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCTIwMTItMDQt MTggMDA6NDE6MzEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv dGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCTIwMTItMDQtMTggMDA6NDI6NTEuMjMyNjgx MDUyICswMjAwCi1AQCAtOTIsNiArOTIsMTAgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30g ewotIAkJc2V0IGRlc2NyaXB0aW9uICJzdGVwIG92ZXIgcHl0aG9uX3NjcmlwdCBpbml0aWFsaXph dGlvbiIKLSAJCXNldCBjb21tYW5kICJzdGVwIgotIAkgICAgfQotKwkgICAgLXJlICIuKmNtZGFy Z192ZWMgPSBOVUxMLiokZ2RiX3Byb21wdCAkIiB7Ci0rCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAg b3ZlciBjbWRhcmdfdmVjIGluaXRpYWxpemF0aW9uIgotKwkJc2V0IGNvbW1hbmQgInN0ZXAiCi0r CSAgICB9Ci0gCSAgICAtcmUgIi4qcHJlX3N0YXRfY2hhaW4gPSBtYWtlX2NvbW1hbmRfc3RhdHNf Y2xlYW51cC4qJGdkYl9wcm9tcHQgJCIgewotIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIg bWFrZV9jb21tYW5kX3N0YXRzX2NsZWFudXAgYW5kIGV2ZXJ5dGhpbmcgaXQgY2FsbHMiCi0gCQlz ZXQgY29tbWFuZCAibmV4dCIKLUBAIC0xMjgsMTggKzEzMiw2IEBAIHByb2MgZG9fc3RlcHNfYW5k X25leHRzIHt9IHsKLSAJCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIGNvbmRpdGlvbmFsIHN0 YWNrIGFsaWdubWVudCBhbGxvY2EiCi0gCQlzZXQgY29tbWFuZCAibmV4dCIKLSAJICAgIH0KLS0J ICAgIC1yZSAiLipjbWRzaXplID0gMS4qJGdkYl9wcm9tcHQgJCIgewotLQkJc2V0IGRlc2NyaXB0 aW9uICJzdGVwIG92ZXIgY21kc2l6ZSBpbml0aWFsaXphdGlvbiIKLS0JCXNldCBjb21tYW5kICJu ZXh0IgotLQkgICAgfQotLQkgICAgLXJlICIuKmNtZGFyZyA9IC4qIHhtYWxsb2MuKiRnZGJfcHJv bXB0ICQiIHsKLS0JCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIGNtZGFyZyBpbml0aWFsaXph dGlvbiB2aWEgeG1hbGxvYyIKLS0JCXNldCBjb21tYW5kICJuZXh0IgotLQkgICAgfQotLQkgICAg LXJlICIuKm5jbWQgPSAwLiokZ2RiX3Byb21wdCAkIiB7Ci0tCQlzZXQgZGVzY3JpcHRpb24gIm5l eHQgb3ZlciBuY21kIGluaXRpYWxpemF0aW9uIgotLQkJc2V0IGNvbW1hbmQgIm5leHQiCi0tCSAg ICB9Ci0gCSAgICAtcmUgIi4qZGlyc2l6ZSA9IDEuKiRnZGJfcHJvbXB0ICQiIHsKLSAJCXNldCBk ZXNjcmlwdGlvbiAibmV4dCBvdmVyIGRpcnNpemUgaW5pdGlhbGl6YXRpb24iCi0gCQlzZXQgY29t bWFuZCAibmV4dCIKLUBAIC0xNjMsNiArMTU1LDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRz IHt9IHsKLSAJCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIHRleHRkb21haW4gUEFDS0FHRSIK LSAJCXNldCBjb21tYW5kICJuZXh0IgotIAkgICAgfQotKwkgICAgLXJlICIuKlZFQ19jbGVhbnVw IC5jbWRhcmdfcy4qJGdkYl9wcm9tcHQgJCIgewotKwkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92 ZXIgY21kYXJnX3MgVkVDX2NsZWFudXAiCi0rCQlzZXQgY29tbWFuZCAibmV4dCIKLSsJICAgIH0K LSAJICAgIC1yZSAiXFswLTlcXStcW1x0IFxdK1x7XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSAJCXNl dCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIGluaXRpYWwgYnJhY2UiCi0gCQlzZXQgY29tbWFuZCAi c3RlcCIKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDVvZjIyLnBhdGNoIGIvZ2RiLWF1dG9s b2FkLTA1b2YyMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGQ4 Y2MzCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTA1b2YyMi5wYXRjaApAQCAtMCww ICsxLDI0NCBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9tc2cw MDIzNS5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE2OjE3CTEu MTQwMjYKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE5OjIzCTEuMTQwMjcK KyMjIC0xLDUgKzEsMTggQEAKKyAyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+CisgCisrCSogTkVXUzogRGVzY3JpYmUgbmV3IG9wdGlvbnMgLS1p bml0LWNvbW1hbmQ9RklMRSwgLWl4IGFuZAorKwktLWluaXQtZXZhbC1jb21tYW5kPUNPTU1BTkQs IC1pZXguCisrCSogbWFpbi5jIChzdHJ1Y3QgY21kYXJnKTogTmV3IGVudW0gaXRlbXMgQ01EQVJH X0lOSVRfRklMRSBhbmQKKysJQ01EQVJHX0lOSVRfQ09NTUFORC4KKysJKGNhcHR1cmVkX21haW4p OiBOZXcgZW51bSBpdGVtcyBPUFRfSVggYW5kIE9QVF9JRVguICBBZGQKKysJImluaXQtY29tbWFu ZCIsICJpbml0LWV2YWwtY29tbWFuZCIsICJpeCIgYW5kICJpZXgiIHRvIHRoZSB2YXJpYWJsZQor Kwlsb25nX29wdGlvbnMuICBIYW5kbGUgT1BUX0lYIGFuZCBPUFRfSUVYLiAgUHJvY2VzcyB0aGVt IGZyb20gQ01EQVJHX1ZFQy4KKysJTmV3IGNvbW1lbnQgZm9yIENNREFSR19GSUxFIGFuZCBDTURB UkdfQ09NTUFORCBwcm9jZXNzaW5nLgorKwkocHJpbnRfZ2RiX2hlbHApOiBEZXNjcmliZSAtLWlu aXQtY29tbWFuZD1GSUxFLCAtaXggYW5kCisrCS0taW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwg LWlleC4KKysKKysyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+CisrCisgCUNvZGUgY2xlYW51cC4KKyAJKiBtYWluLmMgKHN0cnVjdCBjbWRhcmcp OiBNb3ZlIGl0IGhlcmUgZnJvbSBtYWluLiAgQWRkIG1vcmUgY29tbWVudHMuCisgCShjbWRhcmdf cywgVkVDIChjbWRhcmdfcykpOiBOZXcuCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv TkVXUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTkVXUwky MDEyLTA0LTE4IDAwOjQxOjMwLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0Mjo1MS4yMjY2ODEwNjggKzAyMDAKK0BAIC0yOCw2 ICsyOCwxMyBAQAorICAgbm93IHNldCBhIGJyZWFrcG9pbnQgaW4gYnVpbGQvZ2NjL2V4cHIuYywg YnV0IG5vdAorICAgYnVpbGQvbGliY3BwL2V4cHIuYy4KKyAKKysqIE5ldyBjb21tYW5kIGxpbmUg b3B0aW9ucworKworKy0taW5pdC1jb21tYW5kPUZJTEUsIC1peCAgICAgICAgICBMaWtlIC0tY29t bWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYmVmb3JlIGxvYWRpbmcgaW5mZXJpb3IuCisrLS1pbml0LWV2YWwtY29tbWFuZD1DT01NQU5E LCAtaWV4IExpa2UgLS1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWV4IGJ1dAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlIGl0IGJlZm9yZSBsb2FkaW5nIGluZmVyaW9y LgorKworICoqKiBDaGFuZ2VzIGluIEdEQiA3LjQKKyAKKyAqIEdEQiBub3cgaGFuZGxlcyBhbWJp Z3VvdXMgbGluZXNwZWNzIG1vcmUgY29uc2lzdGVudGx5OyB0aGUgZXhpc3RpbmcKK0luZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUw LjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQyOjE1LjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQy OjUxLjIyNjY4MTA2OCArMDIwMAorQEAgLTI4NSw3ICsyODUsMTMgQEAgdHlwZWRlZiBzdHJ1Y3Qg Y21kYXJnIHsKKyAgICAgQ01EQVJHX0ZJTEUsCisgCisgICAgIC8qIE9wdGlvbiB0eXBlIC1leC4g ICovCistICAgIENNREFSR19DT01NQU5ECisrICAgIENNREFSR19DT01NQU5ELAorKworKyAgICAv KiBPcHRpb24gdHlwZSAtaXguICAqLworKyAgICBDTURBUkdfSU5JVF9GSUxFLAorKyAgICAKKysg ICAgLyogT3B0aW9uIHR5cGUgLWlleC4gICovCisrICAgIENNREFSR19JTklUX0NPTU1BTkQKKyAg IH0gdHlwZTsKKyAKKyAgIC8qIFZhbHVlIG9mIHRoaXMgb3B0aW9uIC0gZmlsZW5hbWUgb3IgdGhl IEdEQiBjb21tYW5kIGl0c2VsZi4gIFN0cmluZyBtZW1vcnkKK0BAIC00MzQsNyArNDQwLDkgQEAg Y2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgICAgICBPUFRfU1RBVElTVElDUywKKyAgICAg ICBPUFRfVFVJLAorICAgICAgIE9QVF9OT1dJTkRPV1MsCistICAgICAgT1BUX1dJTkRPV1MKKysg ICAgICBPUFRfV0lORE9XUywKKysgICAgICBPUFRfSVgsCisrICAgICAgT1BUX0lFWAorICAgICB9 OworICAgICBzdGF0aWMgc3RydWN0IG9wdGlvbiBsb25nX29wdGlvbnNbXSA9CisgICAgIHsKK0BA IC00NzUsNiArNDgzLDEwIEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICAgICAgeyJ2 ZXJzaW9uIiwgbm9fYXJndW1lbnQsICZwcmludF92ZXJzaW9uLCAxfSwKKyAgICAgICB7IngiLCBy ZXF1aXJlZF9hcmd1bWVudCwgMCwgJ3gnfSwKKyAgICAgICB7ImV4IiwgcmVxdWlyZWRfYXJndW1l bnQsIDAsICdYJ30sCisrICAgICAgeyJpbml0LWNvbW1hbmQiLCByZXF1aXJlZF9hcmd1bWVudCwg MCwgT1BUX0lYfSwKKysgICAgICB7ImluaXQtZXZhbC1jb21tYW5kIiwgcmVxdWlyZWRfYXJndW1l bnQsIDAsIE9QVF9JRVh9LAorKyAgICAgIHsiaXgiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgT1BU X0lYfSwKKysgICAgICB7ImlleCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCBPUFRfSUVYfSwKKyAj aWZkZWYgR0RCVEsKKyAgICAgICB7InRjbGNvbW1hbmQiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwg J3onfSwKKyAgICAgICB7ImVuYWJsZS1leHRlcm5hbC1lZGl0b3IiLCBub19hcmd1bWVudCwgMCwg J3knfSwKK0BAIC02MDMsNiArNjE1LDE5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCisg CSAgICAgIFZFQ19zYWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKKyAJ ICAgIH0KKyAJICAgIGJyZWFrOworKwkgIGNhc2UgT1BUX0lYOgorKwkgICAgeworKwkgICAgICBz dHJ1Y3QgY21kYXJnIGNtZGFyZyA9IHsgQ01EQVJHX0lOSVRfRklMRSwgb3B0YXJnIH07CisrCisr CSAgICAgIFZFQ19zYWZlX3B1c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKKysJ ICAgIH0KKysJICAgIGJyZWFrOworKwkgIGNhc2UgT1BUX0lFWDoKKysJICAgIHsKKysJICAgICAg c3RydWN0IGNtZGFyZyBjbWRhcmcgPSB7IENNREFSR19JTklUX0NPTU1BTkQsIG9wdGFyZyB9Owor KworKwkgICAgICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7 CisrCSAgICB9CisgCSAgICBicmVhazsKKyAJICBjYXNlICdCJzoKKyAJICAgIGJhdGNoX2ZsYWcg PSBiYXRjaF9zaWxlbnQgPSAxOworQEAgLTg3Nyw2ICs5MDIsMjAgQEAgY2FwdHVyZWRfbWFpbiAo dm9pZCAqZGF0YSkKKyAgIHF1aXRfcHJlX3ByaW50ID0gZXJyb3JfcHJlX3ByaW50OworICAgd2Fy bmluZ19wcmVfcHJpbnQgPSBfKCJcbndhcm5pbmc6ICIpOworIAorKyAgLyogUHJvY2VzcyAnLWl4 JyBhbmQgJy1pZXgnIG9wdGlvbnMgZWFybHkuICAqLworKyAgZm9yIChpID0gMDsgVkVDX2l0ZXJh dGUgKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCBpLCBjbWRhcmdfcCk7IGkrKykKKysgICAgc3dpdGNo IChjbWRhcmdfcC0+dHlwZSkKKysgICAgeworKyAgICAgIGNhc2UgQ01EQVJHX0lOSVRfRklMRToK KysgICAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChzb3VyY2Vfc2NyaXB0LCBjbWRhcmdfcC0+ c3RyaW5nLAorKwkJCSAgICAgICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpOworKwlicmVh azsKKysgICAgICBjYXNlIENNREFSR19JTklUX0NPTU1BTkQ6CisrICAgICAgICBjYXRjaF9jb21t YW5kX2Vycm9ycyAoZXhlY3V0ZV9jb21tYW5kLCBjbWRhcmdfcC0+c3RyaW5nLAorKwkJCSAgICAg ICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpOworKwlicmVhazsKKysgICAgfQorKworICAg LyogUmVhZCBhbmQgZXhlY3V0ZSB0aGUgc3lzdGVtLXdpZGUgZ2RiaW5pdCBmaWxlLCBpZiBpdCBl eGlzdHMuCisgICAgICBUaGlzIGlzIGRvbmUgKmJlZm9yZSogYWxsIHRoZSBjb21tYW5kIGxpbmUg YXJndW1lbnRzIGFyZQorICAgICAgcHJvY2Vzc2VkOyBpdCBzZXRzIGdsb2JhbCBwYXJhbWV0ZXJz LCB3aGljaCBhcmUgaW5kZXBlbmRlbnQgb2YKK0BAIC05OTMsNiArMTAzMiw3IEBAIGNhcHR1cmVk X21haW4gKHZvaWQgKmRhdGEpCisgICBBTExfT0JKRklMRVMgKG9iamZpbGUpCisgICAgIGxvYWRf YXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChvYmpmaWxlKTsKKyAKKysgIC8qIFByb2Nlc3MgJy14 JyBhbmQgJy1leCcgb3B0aW9ucy4gICovCisgICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAoY21k YXJnX3MsIGNtZGFyZ192ZWMsIGksIGNtZGFyZ19wKTsgaSsrKQorICAgICBzd2l0Y2ggKGNtZGFy Z19wLT50eXBlKQorICAgICB7CitAQCAtMTA5Myw2ICsxMTMzLDggQEAgT3B0aW9uczpcblxuXAor ICAgICAgICAgICAgICAgICAgICAgIEV4ZWN1dGUgYSBzaW5nbGUgR0RCIGNvbW1hbmQuXG5cCisg ICAgICAgICAgICAgICAgICAgICAgTWF5IGJlIHVzZWQgbXVsdGlwbGUgdGltZXMgYW5kIGluIGNv bmp1bmN0aW9uXG5cCisgICAgICAgICAgICAgICAgICAgICAgd2l0aCAtLWNvbW1hbmQuXG5cCisr ICAtLWluaXQtY29tbWFuZD1GSUxFLCAtaXggTGlrZSAteCBidXQgZXhlY3V0ZSBpdCBiZWZvcmUg bG9hZGluZyBpbmZlcmlvci5cblwKKysgIC0taW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWll eCBMaWtlIC1leCBidXQgYmVmb3JlIGxvYWRpbmcgaW5mZXJpb3IuXG5cCisgICAtLWNvcmU9Q09S RUZJTEUgICAgQW5hbHl6ZSB0aGUgY29yZSBkdW1wIENPUkVGSUxFLlxuXAorICAgLS1waWQ9UElE ICAgICAgICAgIEF0dGFjaCB0byBydW5uaW5nIHByb2Nlc3MgUElELlxuXAorICIpLCBzdHJlYW0p OworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIw MTItMDQtMTggMDA6NDE6MzEuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDI6NTEuMjMyNjgxMDUyICswMjAw CitAQCAtOTg5LDYgKzk4OSwyMiBAQCBhbHNvIGJlIGludGVybGVhdmVkIHdpdGggQHNhbXB7LWNv bW1hbmR9CisgICAgLXggc2V0YnJlYWtwb2ludHMgLWV4ICdydW4nIGEub3V0CisgQGVuZCBzbWFs bGV4YW1wbGUKKyAKKytAaXRlbSAtaW5pdC1jb21tYW5kIEB2YXJ7ZmlsZX0KKytAaXRlbXggLWl4 IEB2YXJ7ZmlsZX0KKytAY2luZGV4IEBjb2Rley0taW5pdC1jb21tYW5kfQorK0BjaW5kZXggQGNv ZGV7LWl4fQorK0V4ZWN1dGUgY29tbWFuZHMgZnJvbSBmaWxlIEB2YXJ7ZmlsZX0gYmVmb3JlIGxv YWRpbmcgZ2RiaW5pdCBmaWxlcyBvciB0aGUKKytpbmZlcmlvci4KKytAeHJlZntTdGFydHVwfS4K KysKKytAaXRlbSAtaW5pdC1ldmFsLWNvbW1hbmQgQHZhcntjb21tYW5kfQorK0BpdGVteCAtaWV4 IEB2YXJ7Y29tbWFuZH0KKytAY2luZGV4IEBjb2Rley0taW5pdC1ldmFsLWNvbW1hbmR9CisrQGNp bmRleCBAY29kZXstaWV4fQorK0V4ZWN1dGUgYSBzaW5nbGUgQHZhbHVle0dEQk59IGNvbW1hbmQg YmVmb3JlIGxvYWRpbmcgZ2RiaW5pdCBmaWxlcyBvciB0aGUKKytpbmZlcmlvci4KKytAeHJlZntT dGFydHVwfS4KKysKKyBAaXRlbSAtZGlyZWN0b3J5IEB2YXJ7ZGlyZWN0b3J5fQorIEBpdGVteCAt ZCBAdmFye2RpcmVjdG9yeX0KKyBAY2luZGV4IEBjb2Rley0tZGlyZWN0b3J5fQorQEAgLTEyNTAs NiArMTI2NiwxMyBAQCBTZXRzIHVwIHRoZSBjb21tYW5kIGludGVycHJldGVyIGFzIHNwZWNpCisg KEBweHJlZntNb2RlIE9wdGlvbnMsIGludGVycHJldGVyfSkuCisgCisgQGl0ZW0KKytFeGVjdXRl cyBjb21tYW5kcyBhbmQgY29tbWFuZCBmaWxlcyBzcGVjaWZpZWQgYnkgdGhlIEBzYW1wey1pZXh9 IGFuZAorK0BzYW1wey1peH0gb3B0aW9ucyBpbiB0aGVpciBzcGVjaWZpZWQgb3JkZXIuICBVc3Vh bGx5IHlvdSBzaG91bGQgdXNlIHRoZQorK0BzYW1wey1leH0gYW5kIEBzYW1wey14fSBvcHRpb25z IGluc3RlYWQsIGJ1dCB0aGlzIHdheSB5b3UgY2FuIGFwcGx5Cisrc2V0dGluZ3MgYmVmb3JlIEB2 YWx1ZXtHREJOfSBpbml0IGZpbGVzIGdldCBleGVjdXRlZCBhbmQgYmVmb3JlIGluZmVyaW9yCisr Z2V0cyBsb2FkZWQuCisrCisrQGl0ZW0KKyBAY2luZGV4IGluaXQgZmlsZQorIFJlYWRzIHRoZSBz eXN0ZW0td2lkZSBAZGZue2luaXQgZmlsZX0gKGlmIEBvcHRpb257LS13aXRoLXN5c3RlbS1nZGJp bml0fSB3YXMKKyB1c2VkIHdoZW4gYnVpbGRpbmcgQHZhbHVle0dEQk59OyBAcHhyZWZ7U3lzdGVt LXdpZGUgY29uZmlndXJhdGlvbiwKK0BAIC0xMjgzLDE0ICsxMzA2LDExIEBAIElmIHlvdSB3aXNo IHRvIGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZworIHlvdSBtdXN0IGRvIHNvbWV0aGluZyBsaWtl IHRoZSBmb2xsb3dpbmc6CisgCisgQHNtYWxsZXhhbXBsZQorLSQgZ2RiIC1leCAic2V0IGF1dG8t bG9hZC1zY3JpcHRzIG9mZiIgLWV4ICJmaWxlIG15cHJvZ3JhbSIKKyskIGdkYiAtaWV4ICJzZXQg YXV0by1sb2FkLXNjcmlwdHMgb2ZmIiBteXByb2dyYW0KKyBAZW5kIHNtYWxsZXhhbXBsZQorIAor LVRoZSBmb2xsb3dpbmcgZG9lcyBub3Qgd29yayBiZWNhdXNlIHRoZSBhdXRvLWxvYWRpbmcgaXMg dHVybmVkIG9mZiB0b28gbGF0ZToKKy0KKy1Ac21hbGxleGFtcGxlCistJCBnZGIgLWV4ICJzZXQg YXV0by1sb2FkLXNjcmlwdHMgb2ZmIiBteXByb2dyYW0KKy1AZW5kIHNtYWxsZXhhbXBsZQorK09w dGlvbiBAc2FtcHstZXh9IGRvZXMgbm90IHdvcmsgYmVjYXVzZSB0aGUgYXV0by1sb2FkaW5nIGlz IHRoZW4gdHVybmVkCisrb2ZmIHRvbyBsYXRlLgorIAorIEBpdGVtCisgUmVhZHMgY29tbWFuZCBm aWxlcyBzcGVjaWZpZWQgYnkgdGhlIEBzYW1wey14fSBvcHRpb24uICBAeHJlZntDb21tYW5kCitJ bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3Qu ZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3Vp dGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAJMjAxMi0wNC0xOCAwMDo0MTozMS4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVz dC5leHAJMjAxMi0wNC0xOCAwMDo0Mjo1MS4yMzI2ODEwNTIgKzAyMDAKK0BAIC05Miw2ICs5Miwx MCBAQCBwcm9jIGRvX3N0ZXBzX2FuZF9uZXh0cyB7fSB7CisgCQlzZXQgZGVzY3JpcHRpb24gInN0 ZXAgb3ZlciBweXRob25fc2NyaXB0IGluaXRpYWxpemF0aW9uIgorIAkJc2V0IGNvbW1hbmQgInN0 ZXAiCisgCSAgICB9CisrCSAgICAtcmUgIi4qY21kYXJnX3ZlYyA9IE5VTEwuKiRnZGJfcHJvbXB0 ICQiIHsKKysJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIGNtZGFyZ192ZWMgaW5pdGlhbGl6 YXRpb24iCisrCQlzZXQgY29tbWFuZCAic3RlcCIKKysJICAgIH0KKyAJICAgIC1yZSAiLipwcmVf c3RhdF9jaGFpbiA9IG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwLiokZ2RiX3Byb21wdCAkIiB7 CisgCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51 cCBhbmQgZXZlcnl0aGluZyBpdCBjYWxscyIKKyAJCXNldCBjb21tYW5kICJuZXh0IgorQEAgLTEy OCwxOCArMTMyLDYgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30geworIAkJc2V0IGRlc2Ny aXB0aW9uICJuZXh0IG92ZXIgY29uZGl0aW9uYWwgc3RhY2sgYWxpZ25tZW50IGFsbG9jYSIKKyAJ CXNldCBjb21tYW5kICJuZXh0IgorIAkgICAgfQorLQkgICAgLXJlICIuKmNtZHNpemUgPSAxLiok Z2RiX3Byb21wdCAkIiB7CistCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBjbWRzaXplIGlu aXRpYWxpemF0aW9uIgorLQkJc2V0IGNvbW1hbmQgIm5leHQiCistCSAgICB9CistCSAgICAtcmUg Ii4qY21kYXJnID0gLiogeG1hbGxvYy4qJGdkYl9wcm9tcHQgJCIgeworLQkJc2V0IGRlc2NyaXB0 aW9uICJuZXh0IG92ZXIgY21kYXJnIGluaXRpYWxpemF0aW9uIHZpYSB4bWFsbG9jIgorLQkJc2V0 IGNvbW1hbmQgIm5leHQiCistCSAgICB9CistCSAgICAtcmUgIi4qbmNtZCA9IDAuKiRnZGJfcHJv bXB0ICQiIHsKKy0JCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIG5jbWQgaW5pdGlhbGl6YXRp b24iCistCQlzZXQgY29tbWFuZCAibmV4dCIKKy0JICAgIH0KKyAJICAgIC1yZSAiLipkaXJzaXpl ID0gMS4qJGdkYl9wcm9tcHQgJCIgeworIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgZGly c2l6ZSBpbml0aWFsaXphdGlvbiIKKyAJCXNldCBjb21tYW5kICJuZXh0IgorQEAgLTE2Myw2ICsx NTUsMTAgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30geworIAkJc2V0IGRlc2NyaXB0aW9u ICJuZXh0IG92ZXIgdGV4dGRvbWFpbiBQQUNLQUdFIgorIAkJc2V0IGNvbW1hbmQgIm5leHQiCisg CSAgICB9CisrCSAgICAtcmUgIi4qVkVDX2NsZWFudXAgLmNtZGFyZ19zLiokZ2RiX3Byb21wdCAk IiB7CisrCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBjbWRhcmdfcyBWRUNfY2xlYW51cCIK KysJCXNldCBjb21tYW5kICJuZXh0IgorKwkgICAgfQorIAkgICAgLXJlICJcWzAtOVxdK1xbXHQg XF0rXHtcclxuJGdkYl9wcm9tcHQgJCIgeworIAkJc2V0IGRlc2NyaXB0aW9uICJzdGVwIG92ZXIg aW5pdGlhbCBicmFjZSIKKyAJCXNldCBjb21tYW5kICJzdGVwIgoKZGlmZiAtLWdpdCBhL2dkYi1h dXRvbG9hZC0wNm9mMTgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDZvZjE4LnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTEyMWVmLi4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9h ZC0wNm9mMTgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1odHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAzL21zZzAwMjM2Lmh0bWwKLQotIyMjIHNyYy9n ZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMTkgMTg6MTk6MjMJMS4xNDAyNwotIyMjIHNyYy9nZGIvQ2hh bmdlTG9nCTIwMTIvMDMvMTkgMTg6MjM6NTEJMS4xNDAyOAotIyMgLTEsNSArMSwxMyBAQAotIDIw MTItMDMtMTkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAK LSsJQ29kZSBjbGVhbnVwLgotKwkqIHB5dGhvbi9weS1hdXRvLWxvYWQuYyAoc291cmNlX3NlY3Rp b25fc2NyaXB0cyk6IE5ldyB2YXJpYWJsZSBiYWNrX3RvLgotKwlUdXJuIGZjbG9zZSBhbmQgeGZy ZWUgY2FsbHMgaW50byBtYWtlX2NsZWFudXBfZmNsb3NlIGFuZCBtYWtlX2NsZWFudXAKLSsJd2l0 aCB4ZnJlZS4KLSsJKGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IFR1cm4gZmNsb3NlIGludG8g bWFrZV9jbGVhbnVwX2ZjbG9zZS4KLSsKLSsyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0gCSogTkVXUzogRGVzY3JpYmUgbmV3IG9wdGlv bnMgLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4IGFuZAotIAktLWluaXQtZXZhbC1jb21tYW5kPUNP TU1BTkQsIC1pZXguCi0gCSogbWFpbi5jIChzdHJ1Y3QgY21kYXJnKTogTmV3IGVudW0gaXRlbXMg Q01EQVJHX0lOSVRfRklMRSBhbmQKLS0tLSBzcmMvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwky MDEyLzAxLzI2IDIxOjU0OjQ1CTEuMTgKLSsrKyBzcmMvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQu YwkyMDEyLzAzLzE5IDE4OjIzOjUyCTEuMTkKLUBAIC0yNTQsNiArMjU0LDcgQEAKLSAgICAgICBG SUxFICpzdHJlYW07Ci0gICAgICAgY2hhciAqZnVsbF9wYXRoOwotICAgICAgIGludCBvcGVuZWQs IGluX2hhc2hfdGFibGU7Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87Ci0gCi0gICAg ICAgaWYgKCpwICE9IDEpCi0gCXsKLUBAIC0yODYsNiArMjg3LDEzIEBACi0gICAgICAgb3BlbmVk ID0gZmluZF9hbmRfb3Blbl9zY3JpcHQgKGZpbGUsIDEgLypzZWFyY2hfcGF0aCovLAotIAkJCQkg ICAgICZzdHJlYW0sICZmdWxsX3BhdGgpOwotIAotKyAgICAgIGJhY2tfdG8gPSBtYWtlX2NsZWFu dXAgKG51bGxfY2xlYW51cCwgTlVMTCk7Ci0rICAgICAgaWYgKG9wZW5lZCkKLSsJewotKwkgIG1h a2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7Ci0rCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVs bF9wYXRoKTsKLSsJfQotKwotICAgICAgIC8qIElmIG9uZSBzY3JpcHQgaXNuJ3QgZm91bmQgaXQn cyBub3QgdW5jb21tb24gZm9yIG1vcmUgdG8gbm90IGJlCi0gCSBmb3VuZCBlaXRoZXIuICBXZSBk b24ndCB3YW50IHRvIHByaW50IGFuIGVycm9yIG1lc3NhZ2UgZm9yIGVhY2gKLSAJIHNjcmlwdCwg dG9vIG11Y2ggbm9pc2UuICBJbnN0ZWFkLCB3ZSBwcmludCB0aGUgd2FybmluZyBvbmNlIGFuZCB0 ZWxsCi1AQCAtMzEzLDkgKzMyMSw5IEBACi0gCSAgLyogSWYgdGhpcyBmaWxlIGlzIG5vdCBjdXJy ZW50bHkgbG9hZGVkLCBsb2FkIGl0LiAgKi8KLSAJICBpZiAoISBpbl9oYXNoX3RhYmxlKQotIAkg ICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIHN0cmVhbSwgZnVs bF9wYXRoKTsKLS0JICBmY2xvc2UgKHN0cmVhbSk7Ci0tCSAgeGZyZWUgKGZ1bGxfcGF0aCk7Ci0g CX0KLSsKLSsgICAgICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0gICAgIH0KLSB9Ci0gCi1AQCAt NDIwLDYgKzQyOCw4IEBACi0gICAgIHsKLSAgICAgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9p bmZvICpwc3BhY2VfaW5mbzsKLSAKLSsgICAgICBtYWtlX2NsZWFudXBfZmNsb3NlIChpbnB1dCk7 Ci0rCi0gICAgICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAi aW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIKLSAJIGNhbiBwcmludCBpdC4gICovCi0gICAgICAgcHNw YWNlX2luZm8gPQotQEAgLTQzMiw3ICs0NDIsNiBAQAotIAkgYW5kIHRoZXNlIHNjcmlwdHMgYXJl IHJlcXVpcmVkIHRvIGJlIGlkZW1wb3RlbnQgdW5kZXIgbXVsdGlwbGUKLSAJIGxvYWRzIGFueXdh eS4gICovCi0gICAgICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUs IGlucHV0LCBkZWJ1Z2ZpbGUpOwotLSAgICAgIGZjbG9zZSAoaW5wdXQpOwotICAgICB9Ci0gCi0g ICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wNm9m MjIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDZvZjIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmFlMTIxZWYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQt MDZvZjIyLnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItY3ZzLzIwMTItMDMvbXNnMDAyMzYuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAx Mi8wMy8xOSAxODoxOToyMwkxLjE0MDI3CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8x OSAxODoyMzo1MQkxLjE0MDI4CisjIyAtMSw1ICsxLDEzIEBACisgMjAxMi0wMy0xOSAgSmFuIEty YXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorKwlDb2RlIGNsZWFudXAu CisrCSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jIChzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogTmV3 IHZhcmlhYmxlIGJhY2tfdG8uCisrCVR1cm4gZmNsb3NlIGFuZCB4ZnJlZSBjYWxscyBpbnRvIG1h a2VfY2xlYW51cF9mY2xvc2UgYW5kIG1ha2VfY2xlYW51cAorKwl3aXRoIHhmcmVlLgorKwkoYXV0 b19sb2FkX29iamZpbGVfc2NyaXB0KTogVHVybiBmY2xvc2UgaW50byBtYWtlX2NsZWFudXBfZmNs b3NlLgorKworKzIwMTItMDMtMTkgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KKysKKyAJKiBORVdTOiBEZXNjcmliZSBuZXcgb3B0aW9ucyAtLWluaXQtY29tbWFu ZD1GSUxFLCAtaXggYW5kCisgCS0taW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWlleC4KKyAJ KiBtYWluLmMgKHN0cnVjdCBjbWRhcmcpOiBOZXcgZW51bSBpdGVtcyBDTURBUkdfSU5JVF9GSUxF IGFuZAorLS0tIHNyYy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTIvMDEvMjYgMjE6NTQ6 NDUJMS4xOAorKysrIHNyYy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTIvMDMvMTkgMTg6 MjM6NTIJMS4xOQorQEAgLTI1NCw2ICsyNTQsNyBAQAorICAgICAgIEZJTEUgKnN0cmVhbTsKKyAg ICAgICBjaGFyICpmdWxsX3BhdGg7CisgICAgICAgaW50IG9wZW5lZCwgaW5faGFzaF90YWJsZTsK KysgICAgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKKyAKKyAgICAgICBpZiAoKnAgIT0gMSkK KyAJeworQEAgLTI4Niw2ICsyODcsMTMgQEAKKyAgICAgICBvcGVuZWQgPSBmaW5kX2FuZF9vcGVu X3NjcmlwdCAoZmlsZSwgMSAvKnNlYXJjaF9wYXRoKi8sCisgCQkJCSAgICAgJnN0cmVhbSwgJmZ1 bGxfcGF0aCk7CisgCisrICAgICAgYmFja190byA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVw LCBOVUxMKTsKKysgICAgICBpZiAob3BlbmVkKQorKwl7CisrCSAgbWFrZV9jbGVhbnVwX2ZjbG9z ZSAoc3RyZWFtKTsKKysJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOworKwl9Cisr CisgICAgICAgLyogSWYgb25lIHNjcmlwdCBpc24ndCBmb3VuZCBpdCdzIG5vdCB1bmNvbW1vbiBm b3IgbW9yZSB0byBub3QgYmUKKyAJIGZvdW5kIGVpdGhlci4gIFdlIGRvbid0IHdhbnQgdG8gcHJp bnQgYW4gZXJyb3IgbWVzc2FnZSBmb3IgZWFjaAorIAkgc2NyaXB0LCB0b28gbXVjaCBub2lzZS4g IEluc3RlYWQsIHdlIHByaW50IHRoZSB3YXJuaW5nIG9uY2UgYW5kIHRlbGwKK0BAIC0zMTMsOSAr MzIxLDkgQEAKKyAJICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxv YWQgaXQuICAqLworIAkgIGlmICghIGluX2hhc2hfdGFibGUpCisgCSAgICBzb3VyY2VfcHl0aG9u X3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgc3RyZWFtLCBmdWxsX3BhdGgpOworLQkgIGZj bG9zZSAoc3RyZWFtKTsKKy0JICB4ZnJlZSAoZnVsbF9wYXRoKTsKKyAJfQorKworKyAgICAgIGRv X2NsZWFudXBzIChiYWNrX3RvKTsKKyAgICAgfQorIH0KKyAKK0BAIC00MjAsNiArNDI4LDggQEAK KyAgICAgeworICAgICAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZv OworIAorKyAgICAgIG1ha2VfY2xlYW51cF9mY2xvc2UgKGlucHV0KTsKKysKKyAgICAgICAvKiBB ZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZC1z Y3JpcHRzIgorIAkgY2FuIHByaW50IGl0LiAgKi8KKyAgICAgICBwc3BhY2VfaW5mbyA9CitAQCAt NDMyLDcgKzQ0Miw2IEBACisgCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUg aWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQorIAkgbG9hZHMgYW55d2F5LiAgKi8KKyAgICAgICBz b3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmls ZSk7CistICAgICAgZmNsb3NlIChpbnB1dCk7CisgICAgIH0KKyAKKyAgIGRvX2NsZWFudXBzIChj bGVhbnVwcyk7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTA3b2YxOC5wYXRjaCBiL2dkYi1h dXRvbG9hZC0wN29mMTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxZDEy OWUuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTA3b2YxOC5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDU3ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTIt MDMvbXNnMDAyOTYuaHRtbAotCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDMvMjIg MDg6MTA6NDEJMS4xMjg5Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDMvMjcgMjA6 MTU6MjAJMS4xMjkwCi0jIyAtMSwzICsxLDEyIEBACi0rMjAxMi0wMy0yNyAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwkqIGdkYi50ZXhpbmZvIChBdXRv LWxvYWRpbmcpOiBSZW5hbWUgbm9kZSByZWZlcmVuY2UKLSsJJy5kZWJ1Z19nZGJfc2NyaXB0cyBz ZWN0aW9uJyB0byAnZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbicuCi0rCVR3aWNlLgotKwko LmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24pOiBSZW5hbWUgdGhlIG5vZGUgLi4uCi0rCShkb3Rk ZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uKTogLi4uIGhlcmUuCi0rCShNYWludGVuYW5jZSBDb21t YW5kcyk6IEFsc28gcmVuYW1lIHRoaXMgbm9kZSByZWZlcmVuY2UuCi0rCi0gMjAxMi0wMy0yMiAg U2l2YSBDaGFuZHJhIFJlZGR5ICA8c2l2YWNoYW5kcmFAZ29vZ2xlLmNvbT4KLSAKLSAJKiBnZGIu dGV4aW5mbyAoUHl0aG9uIEFQSS9WYWx1ZXMgRnJvbSBJbmZlcmlvcik6IEFkZCBkZXNjcmlwdGlv bgotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDMvMjIgMDg6MTA6NDEJMS45MzYK LSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzAzLzI3IDIwOjE1OjIwCTEuOTM3Ci1A QCAtMjQ3MTcsOCArMjQ3MTcsOCBAQAotIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLnB5fSBhbmQg QGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uLgotIAotIEBtZW51Ci0tKiBvYmpmaWxl LWdkYi5weSBmaWxlOjogICAgICAgICBUaGUgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIucHl9IGZp bGUKLS0qIC5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uOjogIFRoZSBAY29kZXsuZGVidWdfZ2Ri X3NjcmlwdHN9IHNlY3Rpb24KLSsqIG9iamZpbGUtZ2RiLnB5IGZpbGU6OiAgICAgICAgICBUaGUg QGZpbGV7QHZhcntvYmpmaWxlfS1nZGIucHl9IGZpbGUKLSsqIGRvdGRlYnVnX2dkYl9zY3JpcHRz IHNlY3Rpb246OiBUaGUgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uCi0gKiBXaGlj aCBmbGF2b3IgdG8gY2hvb3NlPzo6Ci0gQGVuZCBtZW51Ci0gCi1AQCAtMjQ3NDQsNyArMjQ3NDQs NyBAQAotIAotIEFsc28gcHJpbnRlZCBpcyB0aGUgbGlzdCBvZiBzY3JpcHRzIHRoYXQgd2VyZSBt ZW50aW9uZWQgaW4KLSB0aGUgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uIGFuZCB3 ZXJlIG5vdCBmb3VuZAotLShAcHhyZWZ7LmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259KS4KLSso QHB4cmVme2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259KS4KLSBUaGlzIGlzIHVzZWZ1bCBi ZWNhdXNlIHRoZWlyIG5hbWVzIGFyZSBub3QgcHJpbnRlZCB3aGVuIEB2YWx1ZXtHREJOfQotIHRy aWVzIHRvIGxvYWQgdGhlbSBhbmQgZmFpbHMuICBUaGVyZSBtYXkgYmUgbWFueSBvZiB0aGVtLCBh bmQgcHJpbnRpbmcKLSBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNoIG9uZSBpcyBwcm9ibGVtYXRp Yy4KLUBAIC0yNDc5NSw3ICsyNDc5NSw3IEBACi0gU28geW91ciBAZmlsZXstZ2RiLnB5fSBmaWxl IHNob3VsZCBiZSBjYXJlZnVsIHRvIGF2b2lkIGVycm9ycyBpZiBpdAotIGlzIGV2YWx1YXRlZCBt b3JlIHRoYW4gb25jZS4KLSAKLS1Abm9kZSAuZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbgotK0Bu b2RlIGRvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24KLSBAc3Vic3Vic2VjdGlvbiBUaGUgQGNv ZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uCi0gQGNpbmRleCBAY29kZXsuZGVidWdfZ2Ri X3NjcmlwdHN9IHNlY3Rpb24KLSAKLUBAIC0zMzQ3NSw3ICszMzQ3NSw3IEBACi0gbWF0Y2hpbmcg QHZhcntyZWdleHB9LgotIEZvciBlYWNoIHNjcmlwdCwgdGhpcyBjb21tYW5kIHByaW50cyBpdHMg bmFtZSBhcyBzcGVjaWZpZWQgaW4gdGhlIG9iamZpbGUsCi0gYW5kIHRoZSBmdWxsIHBhdGggaWYg a25vd24uCi0tQHhyZWZ7LmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259LgotK0B4cmVme2RvdGRl YnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259LgotIAotIEBraW5kZXggbWFpbnQgcHJpbnQgc3RhdGlz dGljcwotIEBjaW5kZXggYmNhY2hlIHN0YXRpc3RpY3MKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xv YWQtMDdvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA3b2YyMi5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWQxMjllCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1 dG9sb2FkLTA3b2YyMi5wYXRjaApAQCAtMCwwICsxLDU3IEBACitodHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLWN2cy8yMDEyLTAzL21zZzAwMjk2Lmh0bWwKKworIyMjIHNyYy9nZGIvZG9jL0No YW5nZUxvZwkyMDEyLzAzLzIyIDA4OjEwOjQxCTEuMTI4OQorIyMjIHNyYy9nZGIvZG9jL0NoYW5n ZUxvZwkyMDEyLzAzLzI3IDIwOjE1OjIwCTEuMTI5MAorIyMgLTEsMyArMSwxMiBAQAorKzIwMTIt MDMtMjcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKysJ KiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nKTogUmVuYW1lIG5vZGUgcmVmZXJlbmNlCisrCScu ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbicgdG8gJ2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rp b24nLgorKwlUd2ljZS4KKysJKC5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uKTogUmVuYW1lIHRo ZSBub2RlIC4uLgorKwkoZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbik6IC4uLiBoZXJlLgor KwkoTWFpbnRlbmFuY2UgQ29tbWFuZHMpOiBBbHNvIHJlbmFtZSB0aGlzIG5vZGUgcmVmZXJlbmNl LgorKworIDIwMTItMDMtMjIgIFNpdmEgQ2hhbmRyYSBSZWRkeSAgPHNpdmFjaGFuZHJhQGdvb2ds ZS5jb20+CisgCisgCSogZ2RiLnRleGluZm8gKFB5dGhvbiBBUEkvVmFsdWVzIEZyb20gSW5mZXJp b3IpOiBBZGQgZGVzY3JpcHRpb24KKy0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzAz LzIyIDA4OjEwOjQxCTEuOTM2CisrKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wMy8y NyAyMDoxNToyMAkxLjkzNworQEAgLTI0NzE3LDggKzI0NzE3LDggQEAKKyBAZmlsZXtAdmFye29i amZpbGV9LWdkYi5weX0gYW5kIEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbi4KKyAK KyBAbWVudQorLSogb2JqZmlsZS1nZGIucHkgZmlsZTo6ICAgICAgICAgVGhlIEBmaWxle0B2YXJ7 b2JqZmlsZX0tZ2RiLnB5fSBmaWxlCistKiAuZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbjo6ICBU aGUgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uCisrKiBvYmpmaWxlLWdkYi5weSBm aWxlOjogICAgICAgICAgVGhlIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLnB5fSBmaWxlCisrKiBk b3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uOjogVGhlIEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0 c30gc2VjdGlvbgorICogV2hpY2ggZmxhdm9yIHRvIGNob29zZT86OgorIEBlbmQgbWVudQorIAor QEAgLTI0NzQ0LDcgKzI0NzQ0LDcgQEAKKyAKKyBBbHNvIHByaW50ZWQgaXMgdGhlIGxpc3Qgb2Yg c2NyaXB0cyB0aGF0IHdlcmUgbWVudGlvbmVkIGluCisgdGhlIEBjb2Rley5kZWJ1Z19nZGJfc2Ny aXB0c30gc2VjdGlvbiBhbmQgd2VyZSBub3QgZm91bmQKKy0oQHB4cmVmey5kZWJ1Z19nZGJfc2Ny aXB0cyBzZWN0aW9ufSkuCisrKEBweHJlZntkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufSku CisgVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSB0aGVpciBuYW1lcyBhcmUgbm90IHByaW50ZWQgd2hl biBAdmFsdWV7R0RCTn0KKyB0cmllcyB0byBsb2FkIHRoZW0gYW5kIGZhaWxzLiAgVGhlcmUgbWF5 IGJlIG1hbnkgb2YgdGhlbSwgYW5kIHByaW50aW5nCisgYW4gZXJyb3IgbWVzc2FnZSBmb3IgZWFj aCBvbmUgaXMgcHJvYmxlbWF0aWMuCitAQCAtMjQ3OTUsNyArMjQ3OTUsNyBAQAorIFNvIHlvdXIg QGZpbGV7LWdkYi5weX0gZmlsZSBzaG91bGQgYmUgY2FyZWZ1bCB0byBhdm9pZCBlcnJvcnMgaWYg aXQKKyBpcyBldmFsdWF0ZWQgbW9yZSB0aGFuIG9uY2UuCisgCistQG5vZGUgLmRlYnVnX2dkYl9z Y3JpcHRzIHNlY3Rpb24KKytAbm9kZSBkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uCisgQHN1 YnN1YnNlY3Rpb24gVGhlIEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbgorIEBjaW5k ZXggQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uCisgCitAQCAtMzM0NzUsNyArMzM0 NzUsNyBAQAorIG1hdGNoaW5nIEB2YXJ7cmVnZXhwfS4KKyBGb3IgZWFjaCBzY3JpcHQsIHRoaXMg Y29tbWFuZCBwcmludHMgaXRzIG5hbWUgYXMgc3BlY2lmaWVkIGluIHRoZSBvYmpmaWxlLAorIGFu ZCB0aGUgZnVsbCBwYXRoIGlmIGtub3duLgorLUB4cmVmey5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0 aW9ufS4KKytAeHJlZntkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9ufS4KKyAKKyBAa2luZGV4 IG1haW50IHByaW50IHN0YXRpc3RpY3MKKyBAY2luZGV4IGJjYWNoZSBzdGF0aXN0aWNzCgpkaWZm IC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTA4b2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wOG9mMTgu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0OGJmYzEuLjAwMDAwMDAKLS0t IGEvZ2RiLWF1dG9sb2FkLTA4b2YxOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCww IEBACi1bcGF0Y2gjNCAyLzhdIENvZGUgY2xlYW51cDogbmV3IHBhdGggdG8gVkVDIGluIHV0aWxz LmMKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAwMDg2 Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxMTEu aHRtbAotIC0gcmVkdWNlZCBmb3IgdGhlIGJhY2twb3J0Ci0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxv ZwkyMDEyLzA0LzE3IDE1OjQ1OjA1CTEuMTQxMTAKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEy LzA0LzE3IDE1OjQ3OjA4CTEuMTQxMTEKLSMjIC0xLDYgKzEsMzQgQEAKLSAyMDEyLTA0LTE3ICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0gCUNvZGUgY2xl YW51cC4KLSsJKiBjaGFyc2V0LmMgKGZpbmRfY2hhcnNldF9uYW1lcyk6IFJlbW92ZSB2YXJpYWJs ZXMgaXggYW5kIGVsdC4KLSsJVXNlIGZyZWVfY2hhcl9wdHJfdmVjLgotKwkqIGVsZnJlYWQuYyAo YnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUpOiBOZXcgdmFyaWFibGVzIGRlYnVnZGlyX3ZlYywK LSsJYmFja190byBhbmQgaXguICBVc2UgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjLiAgUmVtb3Zl IHZhcmlhYmxlCi0rCWRlYnVnZGlyX2VuZC4gIE5ldyB2YXJpYWJsZSBkZWJ1Z2Rpcl9sZW4uCi0r CSogZ2RiX3ZlY3MuaCAoZnJlZV9jaGFyX3B0cl92ZWMsIG1ha2VfY2xlYW51cF9mcmVlX2NoYXJf cHRyX3ZlYykKLSsJKGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQsIGRpcm5hbWVzX3Rv X2NoYXJfcHRyX3ZlYyk6IE5ldwotKwlkZWNsYXJhdGlvbnMuCi0rCSogcHJvZ3NwYWNlLmMgKGNs ZWFyX3Byb2dyYW1fc3BhY2Vfc29saWJfY2FjaGUpOiBSZW1vdmUgdmFyaWFibGVzIGl4Ci0rCWFu ZCBlbHQuICBVc2UgZnJlZV9jaGFyX3B0cl92ZWMuCi0rCSogc291cmNlLmMgKGFkZF9wYXRoKTog UmVtb3ZlIHZhcmlhYmxlcyBhcmd2LCBhcmcgYW5kIGFyZ3ZfaW5kZXguCi0rCU5ldyB2YXJpYWJs ZXMgZGlyX3ZlYywgYmFja190bywgaXggYW5kIG5hbWUuCi0rCVVzZSBkaXJuYW1lc190b19jaGFy X3B0cl92ZWNfYXBwZW5kLiAgVXNlIGZyZWVhcmd2IGluc3RlYWQgb2YKLSsJbWFrZV9jbGVhbnVw X2ZyZWVhcmd2LiAgUmVtb3ZlIHZhcmlhYmxlIHNlcGFyYXRvci4gIFNpbXBsaWZ5IHRoZSBjb2Rl Ci0rCW5vIGxvbmdlciBleHBlY3RpbmcgRElSTkFNRV9TRVBBUkFUT1IuCi0rCShvcGVucCk6IFJl bW92ZSB2YXJpYWJsZSBwLCBwMSBhbmQgbGVuLiAgTmV3IHZhcmlhYmxlcyBkaXJfdmVjLAotKwli YWNrX3RvLCBpeCBhbmQgZGlyLiAgVXNlIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYy4gIFNpbXBs aWZ5IHRoZSBjb2RlCi0rCW5vIGxvbmdlciBleHBlY3RpbmcgRElSTkFNRV9TRVBBUkFUT1IuCi0r CSogc3ltZmlsZS5jIChmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUpOiBOZXcgdmFyaWFibGVzIGRl YnVnZGlyX3ZlYywKLSsJYmFja190byBhbmQgaXguICBVc2UgZGlybmFtZXNfdG9fY2hhcl9wdHJf dmVjLiAgUmVtb3ZlIHZhcmlhYmxlCi0rCWRlYnVnZGlyX2VuZC4KLSsJKiB1dGlscy5jIChmcmVl X2NoYXJfcHRyX3ZlYywgZG9fZnJlZV9jaGFyX3B0cl92ZWMpCi0rCShtYWtlX2NsZWFudXBfZnJl ZV9jaGFyX3B0cl92ZWMsIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQpCi0rCShkaXJu YW1lc190b19jaGFyX3B0cl92ZWMpOiBOZXcgZnVuY3Rpb25zLgotKwotKzIwMTItMDQtMTcgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJQ29kZSBjbGVh bnVwLgotIAkqIHNvdXJjZS5jIChhZGRfcGF0aCk6IFJlbW92ZSBhbHdheXMgdHJ1ZSBjb25kaXRp b25hbCAncCA9PSAwJyBhbmQKLSAJdW5pbmRlbnQgaXRzIGNvZGUgYmxvY2suCi0gCi1JbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZ2RiX3ZlY3MuaAotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZ2RiX3ZlY3MuaAkyMDEyLTA0LTE4IDAwOjQwOjEyLjA2 NzA4NjAxNiArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYl92ZWNzLmgJMjAx Mi0wNC0xOCAwMDo0MDoyMy40NzQwNTY5OTMgKzAyMDAKLUBAIC0yNSw0ICsyNSwxNiBAQAotIAot IERFRl9WRUNfUCAoY2hhcl9wdHIpOwotIAotKy8qIEZyb20gdXRpbHMuYzogKi8KLSsKLStleHRl cm4gdm9pZCBmcmVlX2NoYXJfcHRyX3ZlYyAoVkVDIChjaGFyX3B0cikgKmNoYXJfcHRyX3ZlYyk7 Ci0rCi0rZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICoKLSsgIG1ha2VfY2xlYW51cF9mcmVlX2NoYXJf cHRyX3ZlYyAoVkVDIChjaGFyX3B0cikgKmNoYXJfcHRyX3ZlYyk7Ci0rCi0rZXh0ZXJuIHZvaWQg ZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjX2FwcGVuZCAoVkVDIChjaGFyX3B0cikgKip2ZWNwLAot KwkJCQkJICAgICBjb25zdCBjaGFyICpkaXJuYW1lcyk7Ci0rCi0rZXh0ZXJuIFZFQyAoY2hhcl9w dHIpICpkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGNvbnN0IGNoYXIgKmRpcm5hbWVzKTsKLSsK LSAjZW5kaWYgLyogR0RCX1ZFQ1NfSCAqLwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L3V0aWxzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3V0 aWxzLmMJMjAxMi0wNC0xOCAwMDo0MDoxMi4wNjgwODYwMTMgKzAyMDAKLSsrKyBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi91dGlscy5jCTIwMTItMDQtMTggMDA6NDA6NDkuODYyOTg5ODU1ICswMjAw Ci1AQCAtMjksNiArMjksNyBAQAotICNpZmRlZiBIQVZFX1NZU19SRVNPVVJDRV9ICi0gI2luY2x1 ZGUgPHN5cy9yZXNvdXJjZS5oPgotICNlbmRpZiAvKiBIQVZFX1NZU19SRVNPVVJDRV9IICovCi0r I2luY2x1ZGUgImdkYl92ZWNzLmgiCi0gCi0gI2lmZGVmIFRVSQotICNpbmNsdWRlICJ0dWkvdHVp LmgiCQkvKiBGb3IgdHVpX2dldF9jb21tYW5kX2RpbWVuc2lvbi4gICAqLwotQEAgLTM4MzUsNiAr MzgzNiw5NSBAQCBwcm9kdWNlcl9pc19nY2NfZ2VfNCAoY29uc3QgY2hhciAqcHJvZHVjCi0gICBy ZXR1cm4gbWlub3I7Ci0gfQotIAotKy8qIENhbGwgeGZyZWUgZm9yIGVhY2ggZWxlbWVudCBvZiBD SEFSX1BUUl9WRUMgYW5kIGZpbmFsIFZFQ19mcmVlIGZvcgotKyAgIENIQVJfUFRSX1ZFQyBpdHNl bGYuCi0rCi0rICAgWW91IG11c3Qgbm90IG1vZGlmeSBDSEFSX1BUUl9WRUMgYWZ0ZXIgaXQgZ290 IHJlZ2lzdGVyZWQgd2l0aCB0aGlzIGZ1bmN0aW9uCi0rICAgYnkgbWFrZV9jbGVhbnVwIGFzIHRo ZSBDSEFSX1BUUl9WRUMgYmFzZSBhZGRyZXNzIG1heSBjaGFuZ2Ugb24gaXRzIHVwZGF0ZXMuCi0r ICAgQ29udHJhcnkgdG8gVkVDX2ZyZWUgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCAoY2Fubm90KSBj bGVhciB0aGUgcG9pbnRlci4gICovCi0rCi0rdm9pZAotK2ZyZWVfY2hhcl9wdHJfdmVjIChWRUMg KGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVjKQotK3sKLSsgIGludCBpeDsKLSsgIGNoYXIgKm5hbWU7 Ci0rCi0rICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNoYXJfcHRyLCBjaGFyX3B0cl92ZWMs IGl4LCBuYW1lKTsgKytpeCkKLSsgICAgeGZyZWUgKG5hbWUpOwotKyAgVkVDX2ZyZWUgKGNoYXJf cHRyLCBjaGFyX3B0cl92ZWMpOwotK30KLSsKLSsvKiBIZWxwZXIgZm9yIG1ha2VfY2xlYW51cF9m cmVlX2NoYXJfcHRyX3ZlYy4gICovCi0rCi0rc3RhdGljIHZvaWQKLStkb19mcmVlX2NoYXJfcHRy X3ZlYyAodm9pZCAqYXJnKQotK3sKLSsgIFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMgPSBh cmc7Ci0rCi0rICBmcmVlX2NoYXJfcHRyX3ZlYyAoY2hhcl9wdHJfdmVjKTsKLSt9Ci0rCi0rLyog TWFrZSBjbGVhbnVwIGhhbmRsZXIgY2FsbGluZyB4ZnJlZSBmb3IgZWFjaCBlbGVtZW50IG9mIENI QVJfUFRSX1ZFQyBhbmQKLSsgICBmaW5hbCBWRUNfZnJlZSBmb3IgQ0hBUl9QVFJfVkVDIGl0c2Vs Zi4KLSsKLSsgICBZb3UgbXVzdCBub3QgbW9kaWZ5IENIQVJfUFRSX1ZFQyBhZnRlciB0aGlzIGNs ZWFudXAgcmVnaXN0cmF0aW9uIGFzIHRoZQotKyAgIENIQVJfUFRSX1ZFQyBiYXNlIGFkZHJlc3Mg bWF5IGNoYW5nZSBvbiBpdHMgdXBkYXRlcy4gIENvbnRyYXJ5IHRvIFZFQ19mcmVlCi0rICAgdGhp cyBmdW5jdGlvbiBkb2VzIG5vdCAoY2Fubm90KSBjbGVhciB0aGUgcG9pbnRlci4gICovCi0rCi0r c3RydWN0IGNsZWFudXAgKgotK21ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYyAoVkVDIChj aGFyX3B0cikgKmNoYXJfcHRyX3ZlYykKLSt7Ci0rICByZXR1cm4gbWFrZV9jbGVhbnVwIChkb19m cmVlX2NoYXJfcHRyX3ZlYywgY2hhcl9wdHJfdmVjKTsKLSt9Ci0rCi0rLyogRXh0ZW5kZWQgdmVy c2lvbiBvZiBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgLSBhZGRpdGlvbmFsbHkgaWYgKlZFQ1Ag aXMKLSsgICBub24tTlVMTCB0aGUgbmV3IGxpc3QgZWxlbWVudHMgZnJvbSBESVJOQU1FUyBhcmUg YXBwZW5kZWQgdG8gdGhlIGV4aXN0aW5nCi0rICAgKlZFQ1AgbGlzdCBvZiBlbnRyaWVzLiAgKlZF Q1AgYWRkcmVzcyB3aWxsIGJlIHVwZGF0ZWQgYnkgdGhpcyBjYWxsLiAgKi8KLSsKLSt2b2lkCi0r ZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjX2FwcGVuZCAoVkVDIChjaGFyX3B0cikgKip2ZWNwLCBj b25zdCBjaGFyICpkaXJuYW1lcykKLSt7Ci0rICBkbwotKyAgICB7Ci0rICAgICAgc2l6ZV90IHRo aXNfbGVuOwotKyAgICAgIGNoYXIgKm5leHRfZGlyLCAqdGhpc19kaXI7Ci0rCi0rICAgICAgbmV4 dF9kaXIgPSBzdHJjaHIgKGRpcm5hbWVzLCBESVJOQU1FX1NFUEFSQVRPUik7Ci0rICAgICAgaWYg KG5leHRfZGlyID09IE5VTEwpCi0rCXRoaXNfbGVuID0gc3RybGVuIChkaXJuYW1lcyk7Ci0rICAg ICAgZWxzZQotKwl7Ci0rCSAgdGhpc19sZW4gPSBuZXh0X2RpciAtIGRpcm5hbWVzOwotKwkgIG5l eHRfZGlyKys7Ci0rCX0KLSsKLSsgICAgICB0aGlzX2RpciA9IHhtYWxsb2MgKHRoaXNfbGVuICsg MSk7Ci0rICAgICAgbWVtY3B5ICh0aGlzX2RpciwgZGlybmFtZXMsIHRoaXNfbGVuKTsKLSsgICAg ICB0aGlzX2Rpclt0aGlzX2xlbl0gPSAnXDAnOwotKyAgICAgIFZFQ19zYWZlX3B1c2ggKGNoYXJf cHRyLCAqdmVjcCwgdGhpc19kaXIpOwotKwotKyAgICAgIGRpcm5hbWVzID0gbmV4dF9kaXI7Ci0r ICAgIH0KLSsgIHdoaWxlIChkaXJuYW1lcyAhPSBOVUxMKTsKLSt9Ci0rCi0rLyogU3BsaXQgRElS TkFNRVMgYnkgRElSTkFNRV9TRVBBUkFUT1IgZGVsaW1pdGVyIGFuZCByZXR1cm4gYSBsaXN0IG9m IGFsbCB0aGUKLSsgICBlbGVtZW50cyBpbiB0aGVpciBvcmlnaW5hbCBvcmRlci4gIEZvciBlbXB0 eSBzdHJpbmcgKCIiKSBESVJOQU1FUyByZXR1cm4KLSsgICBsaXN0IG9mIG9uZSBlbXB0eSBzdHJp bmcgKCIiKSBlbGVtZW50LgotKyAgIAotKyAgIFlvdSBtYXkgbW9kaWZ5IHRoZSByZXR1cm5lZCBz dHJpbmdzLgotKyAgIFJlYWQgZnJlZV9jaGFyX3B0cl92ZWMgZm9yIGl0cyBjbGVhbnVwLiAgKi8K LSsKLStWRUMgKGNoYXJfcHRyKSAqCi0rZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChjb25zdCBj aGFyICpkaXJuYW1lcykKLSt7Ci0rICBWRUMgKGNoYXJfcHRyKSAqcmV0dmFsID0gTlVMTDsKLSsg IAotKyAgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjX2FwcGVuZCAoJnJldHZhbCwgZGlybmFtZXMp OwotKwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0rCi0gI2lmZGVmIEhBVkVfV0FJVFBJRAotIAot ICNpZmRlZiBTSUdBTFJNCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTA4b2YyMi5wYXRjaCBi L2dkYi1hdXRvbG9hZC0wOG9mMjIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYjQ4YmZjMQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0wOG9mMjIucGF0 Y2gKQEAgLTAsMCArMSwxNzEgQEAKK1twYXRjaCM0IDIvOF0gQ29kZSBjbGVhbnVwOiBuZXcgcGF0 aCB0byBWRUMgaW4gdXRpbHMuYworaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVz LzIwMTItMDQvbXNnMDAwODYuaHRtbAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMv MjAxMi0wNC9tc2cwMDExMS5odG1sCisgLSByZWR1Y2VkIGZvciB0aGUgYmFja3BvcnQKKworIyMj IHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NDU6MDUJMS4xNDExMAorIyMjIHNyYy9n ZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NDc6MDgJMS4xNDExMQorIyMgLTEsNiArMSwzNCBA QAorIDIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KKyAKKyAJQ29kZSBjbGVhbnVwLgorKwkqIGNoYXJzZXQuYyAoZmluZF9jaGFyc2V0X25hbWVz KTogUmVtb3ZlIHZhcmlhYmxlcyBpeCBhbmQgZWx0LgorKwlVc2UgZnJlZV9jaGFyX3B0cl92ZWMu CisrCSogZWxmcmVhZC5jIChidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSk6IE5ldyB2YXJpYWJs ZXMgZGVidWdkaXJfdmVjLAorKwliYWNrX3RvIGFuZCBpeC4gIFVzZSBkaXJuYW1lc190b19jaGFy X3B0cl92ZWMuICBSZW1vdmUgdmFyaWFibGUKKysJZGVidWdkaXJfZW5kLiAgTmV3IHZhcmlhYmxl IGRlYnVnZGlyX2xlbi4KKysJKiBnZGJfdmVjcy5oIChmcmVlX2NoYXJfcHRyX3ZlYywgbWFrZV9j bGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjKQorKwkoZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjX2Fw cGVuZCwgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjKTogTmV3CisrCWRlY2xhcmF0aW9ucy4KKysJ KiBwcm9nc3BhY2UuYyAoY2xlYXJfcHJvZ3JhbV9zcGFjZV9zb2xpYl9jYWNoZSk6IFJlbW92ZSB2 YXJpYWJsZXMgaXgKKysJYW5kIGVsdC4gIFVzZSBmcmVlX2NoYXJfcHRyX3ZlYy4KKysJKiBzb3Vy Y2UuYyAoYWRkX3BhdGgpOiBSZW1vdmUgdmFyaWFibGVzIGFyZ3YsIGFyZyBhbmQgYXJndl9pbmRl eC4KKysJTmV3IHZhcmlhYmxlcyBkaXJfdmVjLCBiYWNrX3RvLCBpeCBhbmQgbmFtZS4KKysJVXNl IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQuICBVc2UgZnJlZWFyZ3YgaW5zdGVhZCBv ZgorKwltYWtlX2NsZWFudXBfZnJlZWFyZ3YuICBSZW1vdmUgdmFyaWFibGUgc2VwYXJhdG9yLiAg U2ltcGxpZnkgdGhlIGNvZGUKKysJbm8gbG9uZ2VyIGV4cGVjdGluZyBESVJOQU1FX1NFUEFSQVRP Ui4KKysJKG9wZW5wKTogUmVtb3ZlIHZhcmlhYmxlIHAsIHAxIGFuZCBsZW4uICBOZXcgdmFyaWFi bGVzIGRpcl92ZWMsCisrCWJhY2tfdG8sIGl4IGFuZCBkaXIuICBVc2UgZGlybmFtZXNfdG9fY2hh cl9wdHJfdmVjLiAgU2ltcGxpZnkgdGhlIGNvZGUKKysJbm8gbG9uZ2VyIGV4cGVjdGluZyBESVJO QU1FX1NFUEFSQVRPUi4KKysJKiBzeW1maWxlLmMgKGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSk6 IE5ldyB2YXJpYWJsZXMgZGVidWdkaXJfdmVjLAorKwliYWNrX3RvIGFuZCBpeC4gIFVzZSBkaXJu YW1lc190b19jaGFyX3B0cl92ZWMuICBSZW1vdmUgdmFyaWFibGUKKysJZGVidWdkaXJfZW5kLgor KwkqIHV0aWxzLmMgKGZyZWVfY2hhcl9wdHJfdmVjLCBkb19mcmVlX2NoYXJfcHRyX3ZlYykKKysJ KG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYywgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVj X2FwcGVuZCkKKysJKGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyk6IE5ldyBmdW5jdGlvbnMuCisr CisrMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgorKworKwlDb2RlIGNsZWFudXAuCisgCSogc291cmNlLmMgKGFkZF9wYXRoKTogUmVtb3ZlIGFs d2F5cyB0cnVlIGNvbmRpdGlvbmFsICdwID09IDAnIGFuZAorIAl1bmluZGVudCBpdHMgY29kZSBi bG9jay4KKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGJfdmVjcy5oCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9nZGJfdmVjcy5oCTIwMTIt MDQtMTggMDA6NDA6MTIuMDY3MDg2MDE2ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvZ2RiX3ZlY3MuaAkyMDEyLTA0LTE4IDAwOjQwOjIzLjQ3NDA1Njk5MyArMDIwMAorQEAgLTI1 LDQgKzI1LDE2IEBACisgCisgREVGX1ZFQ19QIChjaGFyX3B0cik7CisgCisrLyogRnJvbSB1dGls cy5jOiAqLworKworK2V4dGVybiB2b2lkIGZyZWVfY2hhcl9wdHJfdmVjIChWRUMgKGNoYXJfcHRy KSAqY2hhcl9wdHJfdmVjKTsKKysKKytleHRlcm4gc3RydWN0IGNsZWFudXAgKgorKyAgbWFrZV9j bGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjIChWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVjKTsK KysKKytleHRlcm4gdm9pZCBkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kIChWRUMgKGNo YXJfcHRyKSAqKnZlY3AsCisrCQkJCQkgICAgIGNvbnN0IGNoYXIgKmRpcm5hbWVzKTsKKysKKytl eHRlcm4gVkVDIChjaGFyX3B0cikgKmRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoY29uc3QgY2hh ciAqZGlybmFtZXMpOworKworICNlbmRpZiAvKiBHREJfVkVDU19IICovCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvdXRpbHMuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAx MjAxMjAub3JpZy9nZGIvdXRpbHMuYwkyMDEyLTA0LTE4IDAwOjQwOjEyLjA2ODA4NjAxMyArMDIw MAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3V0aWxzLmMJMjAxMi0wNC0xOCAwMDo0MDo0 OS44NjI5ODk4NTUgKzAyMDAKK0BAIC0yOSw2ICsyOSw3IEBACisgI2lmZGVmIEhBVkVfU1lTX1JF U09VUkNFX0gKKyAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisgI2VuZGlmIC8qIEhBVkVfU1lT X1JFU09VUkNFX0ggKi8KKysjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKKyAKKyAjaWZkZWYgVFVJCisg I2luY2x1ZGUgInR1aS90dWkuaCIJCS8qIEZvciB0dWlfZ2V0X2NvbW1hbmRfZGltZW5zaW9uLiAg ICovCitAQCAtMzgzNSw2ICszODM2LDk1IEBAIHByb2R1Y2VyX2lzX2djY19nZV80IChjb25zdCBj aGFyICpwcm9kdWMKKyAgIHJldHVybiBtaW5vcjsKKyB9CisgCisrLyogQ2FsbCB4ZnJlZSBmb3Ig ZWFjaCBlbGVtZW50IG9mIENIQVJfUFRSX1ZFQyBhbmQgZmluYWwgVkVDX2ZyZWUgZm9yCisrICAg Q0hBUl9QVFJfVkVDIGl0c2VsZi4KKysKKysgICBZb3UgbXVzdCBub3QgbW9kaWZ5IENIQVJfUFRS X1ZFQyBhZnRlciBpdCBnb3QgcmVnaXN0ZXJlZCB3aXRoIHRoaXMgZnVuY3Rpb24KKysgICBieSBt YWtlX2NsZWFudXAgYXMgdGhlIENIQVJfUFRSX1ZFQyBiYXNlIGFkZHJlc3MgbWF5IGNoYW5nZSBv biBpdHMgdXBkYXRlcy4KKysgICBDb250cmFyeSB0byBWRUNfZnJlZSB0aGlzIGZ1bmN0aW9uIGRv ZXMgbm90IChjYW5ub3QpIGNsZWFyIHRoZSBwb2ludGVyLiAgKi8KKysKKyt2b2lkCisrZnJlZV9j aGFyX3B0cl92ZWMgKFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMpCisreworKyAgaW50IGl4 OworKyAgY2hhciAqbmFtZTsKKysKKysgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9w dHIsIGNoYXJfcHRyX3ZlYywgaXgsIG5hbWUpOyArK2l4KQorKyAgICB4ZnJlZSAobmFtZSk7Cisr ICBWRUNfZnJlZSAoY2hhcl9wdHIsIGNoYXJfcHRyX3ZlYyk7CisrfQorKworKy8qIEhlbHBlciBm b3IgbWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9wdHJfdmVjLiAgKi8KKysKKytzdGF0aWMgdm9pZAor K2RvX2ZyZWVfY2hhcl9wdHJfdmVjICh2b2lkICphcmcpCisreworKyAgVkVDIChjaGFyX3B0cikg KmNoYXJfcHRyX3ZlYyA9IGFyZzsKKysKKysgIGZyZWVfY2hhcl9wdHJfdmVjIChjaGFyX3B0cl92 ZWMpOworK30KKysKKysvKiBNYWtlIGNsZWFudXAgaGFuZGxlciBjYWxsaW5nIHhmcmVlIGZvciBl YWNoIGVsZW1lbnQgb2YgQ0hBUl9QVFJfVkVDIGFuZAorKyAgIGZpbmFsIFZFQ19mcmVlIGZvciBD SEFSX1BUUl9WRUMgaXRzZWxmLgorKworKyAgIFlvdSBtdXN0IG5vdCBtb2RpZnkgQ0hBUl9QVFJf VkVDIGFmdGVyIHRoaXMgY2xlYW51cCByZWdpc3RyYXRpb24gYXMgdGhlCisrICAgQ0hBUl9QVFJf VkVDIGJhc2UgYWRkcmVzcyBtYXkgY2hhbmdlIG9uIGl0cyB1cGRhdGVzLiAgQ29udHJhcnkgdG8g VkVDX2ZyZWUKKysgICB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IChjYW5ub3QpIGNsZWFyIHRoZSBw b2ludGVyLiAgKi8KKysKKytzdHJ1Y3QgY2xlYW51cCAqCisrbWFrZV9jbGVhbnVwX2ZyZWVfY2hh cl9wdHJfdmVjIChWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVjKQorK3sKKysgIHJldHVybiBt YWtlX2NsZWFudXAgKGRvX2ZyZWVfY2hhcl9wdHJfdmVjLCBjaGFyX3B0cl92ZWMpOworK30KKysK KysvKiBFeHRlbmRlZCB2ZXJzaW9uIG9mIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAtIGFkZGl0 aW9uYWxseSBpZiAqVkVDUCBpcworKyAgIG5vbi1OVUxMIHRoZSBuZXcgbGlzdCBlbGVtZW50cyBm cm9tIERJUk5BTUVTIGFyZSBhcHBlbmRlZCB0byB0aGUgZXhpc3RpbmcKKysgICAqVkVDUCBsaXN0 IG9mIGVudHJpZXMuICAqVkVDUCBhZGRyZXNzIHdpbGwgYmUgdXBkYXRlZCBieSB0aGlzIGNhbGwu ICAqLworKworK3ZvaWQKKytkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kIChWRUMgKGNo YXJfcHRyKSAqKnZlY3AsIGNvbnN0IGNoYXIgKmRpcm5hbWVzKQorK3sKKysgIGRvCisrICAgIHsK KysgICAgICBzaXplX3QgdGhpc19sZW47CisrICAgICAgY2hhciAqbmV4dF9kaXIsICp0aGlzX2Rp cjsKKysKKysgICAgICBuZXh0X2RpciA9IHN0cmNociAoZGlybmFtZXMsIERJUk5BTUVfU0VQQVJB VE9SKTsKKysgICAgICBpZiAobmV4dF9kaXIgPT0gTlVMTCkKKysJdGhpc19sZW4gPSBzdHJsZW4g KGRpcm5hbWVzKTsKKysgICAgICBlbHNlCisrCXsKKysJICB0aGlzX2xlbiA9IG5leHRfZGlyIC0g ZGlybmFtZXM7CisrCSAgbmV4dF9kaXIrKzsKKysJfQorKworKyAgICAgIHRoaXNfZGlyID0geG1h bGxvYyAodGhpc19sZW4gKyAxKTsKKysgICAgICBtZW1jcHkgKHRoaXNfZGlyLCBkaXJuYW1lcywg dGhpc19sZW4pOworKyAgICAgIHRoaXNfZGlyW3RoaXNfbGVuXSA9ICdcMCc7CisrICAgICAgVkVD X3NhZmVfcHVzaCAoY2hhcl9wdHIsICp2ZWNwLCB0aGlzX2Rpcik7CisrCisrICAgICAgZGlybmFt ZXMgPSBuZXh0X2RpcjsKKysgICAgfQorKyAgd2hpbGUgKGRpcm5hbWVzICE9IE5VTEwpOworK30K KysKKysvKiBTcGxpdCBESVJOQU1FUyBieSBESVJOQU1FX1NFUEFSQVRPUiBkZWxpbWl0ZXIgYW5k IHJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZQorKyAgIGVsZW1lbnRzIGluIHRoZWlyIG9yaWdpbmFs IG9yZGVyLiAgRm9yIGVtcHR5IHN0cmluZyAoIiIpIERJUk5BTUVTIHJldHVybgorKyAgIGxpc3Qg b2Ygb25lIGVtcHR5IHN0cmluZyAoIiIpIGVsZW1lbnQuCisrICAgCisrICAgWW91IG1heSBtb2Rp ZnkgdGhlIHJldHVybmVkIHN0cmluZ3MuCisrICAgUmVhZCBmcmVlX2NoYXJfcHRyX3ZlYyBmb3Ig aXRzIGNsZWFudXAuICAqLworKworK1ZFQyAoY2hhcl9wdHIpICoKKytkaXJuYW1lc190b19jaGFy X3B0cl92ZWMgKGNvbnN0IGNoYXIgKmRpcm5hbWVzKQorK3sKKysgIFZFQyAoY2hhcl9wdHIpICpy ZXR2YWwgPSBOVUxMOworKyAgCisrICBkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kICgm cmV0dmFsLCBkaXJuYW1lcyk7CisrCisrICByZXR1cm4gcmV0dmFsOworK30KKysKKyAjaWZkZWYg SEFWRV9XQUlUUElECisgCisgI2lmZGVmIFNJR0FMUk0KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xv YWQtMDlvZjE4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA5b2YxOC5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMTI0NGNmZi4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMDlv ZjE4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE2OCArMCwwIEBACi1bcGF0Y2gjNCAzLzhd IGF1dG8tbG9hZDogcmVzaHVmZmxlIGNvZGUKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt cGF0Y2hlcy8yMDEyLTA0L21zZzAwMDg3Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItY3ZzLzIwMTItMDQvbXNnMDAxMTIuaHRtbAotCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvYXV0by1sb2FkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRv LWxvYWQuYwkyMDEyLTA0LTE4IDAwOjI2OjI5LjA0OTEyMDIxMiArMDIwMAotQEAgLTAsMCArMSw0 NzIgQEAKLSsvKiBHREIgcm91dGluZXMgZm9yIHN1cHBvcnRpbmcgYXV0by1sb2FkZWQgc2NyaXB0 cy4KLSsKLSsgICBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNs dWRlICJhdXRvLWxvYWQuaCIKLSsjaW5jbHVkZSAicHJvZ3NwYWNlLmgiCi0rI2luY2x1ZGUgInB5 dGhvbi9weXRob24uaCIKLSsjaW5jbHVkZSAiZ2RiX3JlZ2V4LmgiCi0rI2luY2x1ZGUgInVpLW91 dC5oIgotKyNpbmNsdWRlICJmaWxlbmFtZXMuaCIKLSsjaW5jbHVkZSAiY29tbWFuZC5oIgotKyNp bmNsdWRlICJvYnNlcnZlci5oIgotKyNpbmNsdWRlICJvYmpmaWxlcy5oIgotKyNpbmNsdWRlICJw eXRob24vcHl0aG9uLWludGVybmFsLmgiCi0rCi0rLyogSW50ZXJuYWwtdXNlIGZsYWcgdG8gZW5h YmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nLgotKyAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQg YXV0by1sb2FkIHB5dGhvbiBjb2RlIHdoZW4gYW4gb2JqZmlsZSBpcyBvcGVuZWQsCi0rICAgZmFs c2Ugb3RoZXJ3aXNlLgotKwotKyAgIEJvdGggYXV0b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xv YmFsX2F1dG9fbG9hZCBtdXN0IGJlIHRydWUgdG8gZW5hYmxlCi0rICAgYXV0by1sb2FkaW5nLgot KwotKyAgIFRoaXMgZmxhZyBleGlzdHMgdG8gZmFjaWxpdGF0ZSBkZWZlcnJpbmcgYXV0by1sb2Fk aW5nIGR1cmluZyBzdGFydC11cAotKyAgIHVudGlsIGFmdGVyIC4vLmdkYmluaXQgaGFzIGJlZW4g cmVhZDsgaXQgbWF5IGF1Z21lbnQgdGhlIHNlYXJjaCBkaXJlY3RvcmllcwotKyAgIHVzZWQgdG8g ZmluZCB0aGUgc2NyaXB0cy4gICovCi0raW50IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgPSAxOwot KwotKy8qIEZvciBzY3JpcHRzIHNwZWNpZmllZCBpbiAuZGVidWdfZ2RiX3NjcmlwdHMsIG11bHRp cGxlIG9iamZpbGVzIG1heSBsb2FkCi0rICAgdGhlIHNhbWUgc2NyaXB0LiAgVGhlcmUncyBubyBw b2ludCBpbiBsb2FkaW5nIHRoZSBzY3JpcHQgbXVsdGlwbGUgdGltZXMsCi0rICAgYW5kIHRoZXJl IGNhbiBiZSBhIGxvdCBvZiBvYmpmaWxlcyBhbmQgc2NyaXB0cywgc28gd2Uga2VlcCB0cmFjayBv ZiBzY3JpcHRzCi0rICAgbG9hZGVkIHRoaXMgd2F5LiAgKi8KLSsKLStzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvCi0rewotKyAgLyogRm9yIGVhY2ggcHJvZ3JhbSBzcGFjZSB3ZSBrZWVwIHRy YWNrIG9mIGxvYWRlZCBzY3JpcHRzLiAgKi8KLSsgIHN0cnVjdCBodGFiICpsb2FkZWRfc2NyaXB0 czsKLSsKLSsgIC8qIE5vbi16ZXJvIGlmIHdlJ3ZlIGlzc3VlZCB0aGUgd2FybmluZyBhYm91dCBh biBhdXRvLWxvYWQgc2NyaXB0IG5vdCBiZWluZwotKyAgICAgZm91bmQuICBXZSBvbmx5IHdhbnQg dG8gaXNzdWUgdGhpcyB3YXJuaW5nIG9uY2UuICAqLwotKyAgaW50IHNjcmlwdF9ub3RfZm91bmRf d2FybmluZ19wcmludGVkOwotK307Ci0rCi0rLyogT2JqZWN0cyBvZiB0aGlzIHR5cGUgYXJlIHN0 b3JlZCBpbiB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoIHRhYmxlLiAgKi8KLSsKLStzdHJ1Y3QgbG9h ZGVkX3NjcmlwdAotK3sKLSsgIC8qIE5hbWUgYXMgcHJvdmlkZWQgYnkgdGhlIG9iamZpbGUuICAq LwotKyAgY29uc3QgY2hhciAqbmFtZTsKLSsgIC8qIEZ1bGwgcGF0aCBuYW1lIG9yIE5VTEwgaWYg c2NyaXB0IHdhc24ndCBmb3VuZCAob3Igd2FzIG90aGVyd2lzZQotKyAgICAgaW5hY2Nlc3NpYmxl KS4gICovCi0rICBjb25zdCBjaGFyICpmdWxsX3BhdGg7Ci0rfTsKLSsKLSsvKiBQZXItcHJvZ3Jh bS1zcGFjZSBkYXRhIGtleS4gICovCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBwcm9ncmFtX3NwYWNl X2RhdGEgKmF1dG9fbG9hZF9wc3BhY2VfZGF0YTsKLSsKLStzdGF0aWMgdm9pZAotK2F1dG9fbG9h ZF9wc3BhY2VfZGF0YV9jbGVhbnVwIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlLCB2b2lk ICphcmcpCi0rewotKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKLSsKLSsg IGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRh KTsKLSsgIGlmIChpbmZvICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBpZiAoaW5mby0+bG9hZGVk X3NjcmlwdHMpCi0rCWh0YWJfZGVsZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0cyk7Ci0rICAgICAg eGZyZWUgKGluZm8pOwotKyAgICB9Ci0rfQotKwotKy8qIEdldCB0aGUgY3VycmVudCBhdXRvbG9h ZCBkYXRhLiAgSWYgbm9uZSBpcyBmb3VuZCB5ZXQsIGFkZCBpdCBub3cuICBUaGlzCi0rICAgZnVu Y3Rpb24gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBvYmplY3QuICAqLwotKwotK3N0YXRpYyBzdHJ1 Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKLStnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChz dHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQotK3sKLSsgIHN0cnVjdCBhdXRvX2xvYWRfcHNw YWNlX2luZm8gKmluZm87Ci0rCi0rICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2Us IGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7Ci0rICBpZiAoaW5mbyA9PSBOVUxMKQotKyAgICB7Ci0r ICAgICAgaW5mbyA9IFhaQUxMT0MgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8pOwotKyAg ICAgIHNldF9wcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRh LCBpbmZvKTsKLSsgICAgfQotKwotKyAgcmV0dXJuIGluZm87Ci0rfQotKwotKy8qIEhhc2ggZnVu Y3Rpb24gZm9yIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLwotKwotK3N0YXRpYyBoYXNodmFs X3QKLStoYXNoX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmRhdGEpCi0rewotKyAg Y29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmUgPSBkYXRhOwotKwotKyAgcmV0dXJuIGh0YWJf aGFzaF9zdHJpbmcgKGUtPm5hbWUpOwotK30KLSsKLSsvKiBFcXVhbGl0eSBmdW5jdGlvbiBmb3Ig dGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCi0rCi0rc3RhdGljIGludAotK2VxX2xvYWRlZF9z Y3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCi0rewotKyAgY29uc3Qg c3RydWN0IGxvYWRlZF9zY3JpcHQgKmVhID0gYTsKLSsgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2Ny aXB0ICplYiA9IGI7Ci0rCi0rICByZXR1cm4gc3RyY21wIChlYS0+bmFtZSwgZWItPm5hbWUpID09 IDA7Ci0rfQotKwotKy8qIEluaXRpYWxpemUgdGhlIHRhYmxlIHRvIHRyYWNrIGxvYWRlZCBzY3Jp cHRzLgotKyAgIEVhY2ggZW50cnkgaXMgaGFzaGVkIGJ5IHRoZSBmdWxsIHBhdGggbmFtZS4gICov Ci0rCi0rc3RhdGljIHZvaWQKLStpbml0X2xvYWRlZF9zY3JpcHRzX2luZm8gKHN0cnVjdCBhdXRv X2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQotK3sKLSsgIC8qIENob29zZSAzMSBhcyB0 aGUgc3RhcnRpbmcgc2l6ZSBvZiB0aGUgaGFzaCB0YWJsZSwgc29tZXdoYXQgYXJiaXRyYXJpbHku Ci0rICAgICBTcGFjZSBmb3IgZWFjaCBlbnRyeSBpcyBvYnRhaW5lZCB3aXRoIG9uZSBtYWxsb2Mg c28gd2UgY2FuIGZyZWUgdGhlbQotKyAgICAgZWFzaWx5LiAgKi8KLSsKLSsgIHBzcGFjZV9pbmZv LT5sb2FkZWRfc2NyaXB0cyA9IGh0YWJfY3JlYXRlICgzMSwKLSsJCQkJCSAgICAgaGFzaF9sb2Fk ZWRfc2NyaXB0X2VudHJ5LAotKwkJCQkJICAgICBlcV9sb2FkZWRfc2NyaXB0X2VudHJ5LAotKwkJ CQkJICAgICB4ZnJlZSk7Ci0rCi0rICBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJu aW5nX3ByaW50ZWQgPSBGQUxTRTsKLSt9Ci0rCi0rLyogV3JhcHBlciBvbiBnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhIHRvIGFsc28gYWxsb2NhdGUgdGhlIGhhc2ggdGFibGUKLSsgICBmb3IgbG9h ZGluZyBzY3JpcHRzLiAgKi8KLSsKLStzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKLStn ZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFj ZSAqcHNwYWNlKQotK3sKLSsgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87Ci0r Ci0rICBpbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAocHNwYWNlKTsKLSsgIGlmIChp bmZvLT5sb2FkZWRfc2NyaXB0cyA9PSBOVUxMKQotKyAgICBpbml0X2xvYWRlZF9zY3JpcHRzX2lu Zm8gKGluZm8pOwotKwotKyAgcmV0dXJuIGluZm87Ci0rfQotKwotKy8qIEFkZCBzY3JpcHQgTkFN RSB0byBoYXNoIHRhYmxlIG9mIFBTUEFDRV9JTkZPLgotKyAgIEZVTExfUEFUSCBpcyBOVUxMIGlm IHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLgotKyAgIFRoZSByZXN1bHQgaXMgdHJ1ZSBpZiB0aGUg c2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KLSsKLStpbnQKLSttYXli ZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywg Y29uc3QgY2hhciAqbmFtZSwKLSsJCSAgY29uc3QgY2hhciAqZnVsbF9wYXRoKQotK3sKLSsgIHN0 cnVjdCBodGFiICpodGFiID0gcHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzOwotKyAgc3RydWN0 IGxvYWRlZF9zY3JpcHQgKipzbG90LCBlbnRyeTsKLSsgIGludCBpbl9oYXNoX3RhYmxlOwotKwot KyAgZW50cnkubmFtZSA9IG5hbWU7Ci0rICBlbnRyeS5mdWxsX3BhdGggPSBmdWxsX3BhdGg7Ci0r ICBzbG90ID0gKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBodGFiX2ZpbmRfc2xvdCAoaHRhYiwg JmVudHJ5LCBJTlNFUlQpOwotKyAgaW5faGFzaF90YWJsZSA9ICpzbG90ICE9IE5VTEw7Ci0rCi0r ICAvKiBJZiB0aGlzIHNjcmlwdCBpcyBub3QgaW4gdGhlIGhhc2ggdGFibGUsIGFkZCBpdC4gICov Ci0rCi0rICBpZiAoISBpbl9oYXNoX3RhYmxlKQotKyAgICB7Ci0rICAgICAgY2hhciAqcDsKLSsK LSsgICAgICAvKiBBbGxvY2F0ZSBhbGwgc3BhY2UgaW4gb25lIGNodW5rIHNvIGl0J3MgZWFzaWVy IHRvIGZyZWUuICAqLwotKyAgICAgICpzbG90ID0geG1hbGxvYyAoc2l6ZW9mICgqKnNsb3QpCi0r CQkgICAgICAgKyBzdHJsZW4gKG5hbWUpICsgMQotKwkJICAgICAgICsgKGZ1bGxfcGF0aCAhPSBO VUxMID8gKHN0cmxlbiAoZnVsbF9wYXRoKSArIDEpIDogMCkpOwotKyAgICAgIHAgPSAoKGNoYXIq KSAqc2xvdCkgKyBzaXplb2YgKCoqc2xvdCk7Ci0rICAgICAgc3RyY3B5IChwLCBuYW1lKTsKLSsg ICAgICAoKnNsb3QpLT5uYW1lID0gcDsKLSsgICAgICBpZiAoZnVsbF9wYXRoICE9IE5VTEwpCi0r CXsKLSsJICBwICs9IHN0cmxlbiAocCkgKyAxOwotKwkgIHN0cmNweSAocCwgZnVsbF9wYXRoKTsK LSsJICAoKnNsb3QpLT5mdWxsX3BhdGggPSBwOwotKwl9Ci0rICAgICAgZWxzZQotKwkoKnNsb3Qp LT5mdWxsX3BhdGggPSBOVUxMOwotKyAgICB9Ci0rCi0rICByZXR1cm4gaW5faGFzaF90YWJsZTsK LSt9Ci0rCi0rLyogQ2xlYXIgdGhlIHRhYmxlIG9mIGxvYWRlZCBzZWN0aW9uIHNjcmlwdHMuICAq LwotKwotK3N0YXRpYyB2b2lkCi0rY2xlYXJfc2VjdGlvbl9zY3JpcHRzICh2b2lkKQotK3sKLSsg IHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UgPSBjdXJyZW50X3Byb2dyYW1fc3BhY2U7Ci0r ICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOwotKwotKyAgaW5mbyA9IHByb2dy YW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEpOwotKyAgaWYgKGlu Zm8gIT0gTlVMTCAmJiBpbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQotKyAgICB7Ci0rICAg ICAgaHRhYl9kZWxldGUgKGluZm8tPmxvYWRlZF9zY3JpcHRzKTsKLSsgICAgICBpbmZvLT5sb2Fk ZWRfc2NyaXB0cyA9IE5VTEw7Ci0rICAgICAgaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5n X3ByaW50ZWQgPSBGQUxTRTsKLSsgICAgfQotK30KLSsKLSsvKiBMb29rIGZvciB0aGUgYXV0by1s b2FkIHNjcmlwdCBhc3NvY2lhdGVkIHdpdGggT0JKRklMRSBhbmQgbG9hZCBpdC4gICovCi0rCi0r dm9pZAotK2F1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IGNvbnN0IGNoYXIgKnN1ZmZpeCkKLSt7Ci0rICBjaGFyICpyZWFsbmFtZTsKLSsgIGNoYXIgKmZp bGVuYW1lLCAqZGVidWdmaWxlOwotKyAgaW50IGxlbjsKLSsgIEZJTEUgKmlucHV0OwotKyAgc3Ry dWN0IGNsZWFudXAgKmNsZWFudXBzOwotKwotKyAgcmVhbG5hbWUgPSBnZGJfcmVhbHBhdGggKG9i amZpbGUtPm5hbWUpOwotKyAgbGVuID0gc3RybGVuIChyZWFsbmFtZSk7Ci0rICBmaWxlbmFtZSA9 IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAoc3VmZml4KSArIDEpOwotKyAgbWVtY3B5IChmaWxlbmFt ZSwgcmVhbG5hbWUsIGxlbik7Ci0rICBzdHJjcHkgKGZpbGVuYW1lICsgbGVuLCBzdWZmaXgpOwot KwotKyAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7Ci0rICBtYWtl X2NsZWFudXAgKHhmcmVlLCByZWFsbmFtZSk7Ci0rCi0rICBpbnB1dCA9IGZvcGVuIChmaWxlbmFt ZSwgInIiKTsKLSsgIGRlYnVnZmlsZSA9IGZpbGVuYW1lOwotKwotKyAgaWYgKCFpbnB1dCAmJiBk ZWJ1Z19maWxlX2RpcmVjdG9yeSkKLSsgICAgewotKyAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1l IGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZGlyZWN0b3J5LiAgKi8KLSsgICAgICBk ZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGZpbGVuYW1lKQotKwkJCSAgICsgc3RybGVuIChk ZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAxKTsKLSsgICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVi dWdfZmlsZV9kaXJlY3RvcnkpOwotKyAgICAgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3 ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLwotKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBm aWxlbmFtZSk7Ci0rCi0rICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKLSsg ICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7Ci0rICAgIH0KLSsKLSsgIGlmICgh aW5wdXQgJiYgZ2RiX2RhdGFkaXIpCi0rICAgIHsKLSsgICAgICAvKiBBbHNvIHRyeSB0aGUgc2Ft ZSBmaWxlIGluIGEgc3ViZGlyZWN0b3J5IG9mIGdkYidzIGRhdGEKLSsJIGRpcmVjdG9yeS4gICov Ci0rICAgICAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVuIChnZGJfZGF0YWRpcikgKyBzdHJs ZW4gKGZpbGVuYW1lKQotKwkJCSAgICsgc3RybGVuICgiL2F1dG8tbG9hZCIpICsgMSk7Ci0rICAg ICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGdkYl9kYXRhZGlyKTsKLSsgICAgICBzdHJjYXQgKGRlYnVn ZmlsZSwgIi9hdXRvLWxvYWQiKTsKLSsgICAgICAvKiBGSUxFTkFNRSBpcyBhYnNvbHV0ZSwgc28g d2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJlLiAgKi8KLSsgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwg ZmlsZW5hbWUpOwotKwotKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGRlYnVnZmlsZSk7Ci0r ICAgICAgaW5wdXQgPSBmb3BlbiAoZGVidWdmaWxlLCAiciIpOwotKyAgICB9Ci0rCi0rICBpZiAo aW5wdXQpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3Bh Y2VfaW5mbzsKLSsKLSsgICAgICBtYWtlX2NsZWFudXBfZmNsb3NlIChpbnB1dCk7Ci0rCi0rICAg ICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRv LWxvYWQtc2NyaXB0cyIKLSsJIGNhbiBwcmludCBpdC4gICovCi0rICAgICAgcHNwYWNlX2luZm8g PQotKwlnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dy YW1fc3BhY2UpOwotKyAgICAgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBkZWJ1Z2Zp bGUsIGRlYnVnZmlsZSk7Ci0rCi0rICAgICAgLyogVG8gcHJlc2VydmUgZXhpc3RpbmcgYmVoYXZp b3VyIHdlIGRvbid0IGNoZWNrIGZvciB3aGV0aGVyIHRoZQotKwkgc2NyaXB0IHdhcyBhbHJlYWR5 IGluIHRoZSB0YWJsZSwgYW5kIGFsd2F5cyBsb2FkIGl0LgotKwkgSXQncyBoaWdobHkgdW5saWtl bHkgdGhhdCB3ZSdkIGV2ZXIgbG9hZCBpdCB0d2ljZSwKLSsJIGFuZCB0aGVzZSBzY3JpcHRzIGFy ZSByZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVyIG11bHRpcGxlCi0rCSBsb2FkcyBhbnl3 YXkuICAqLwotKyAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxl LCBpbnB1dCwgZGVidWdmaWxlKTsKLSsgICAgfQotKwotKyAgZG9fY2xlYW51cHMgKGNsZWFudXBz KTsKLSt9Ci0rCi0rLyogVGhpcyBpcyBhIG5ld19vYmpmaWxlIG9ic2VydmVyIGNhbGxiYWNrIHRv IGF1dG8tbG9hZCBzY3JpcHRzLgotKwotKyAgIFR3byBmbGF2b3JzIG9mIGF1dG8tbG9hZGVkIHNj cmlwdHMgYXJlIHN1cHBvcnRlZC4KLSsgICAxKSBiYXNlZCBvbiB0aGUgcGF0aCB0byB0aGUgb2Jq ZmlsZQotKyAgIDIpIGZyb20gLmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24gICovCi0rCi0rc3Rh dGljIHZvaWQKLSthdXRvX2xvYWRfbmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl KQotK3sKLSsgIGlmICghb2JqZmlsZSkKLSsgICAgewotKyAgICAgIC8qIE9CSkZJTEUgaXMgTlVM TCB3aGVuIGxvYWRpbmcgYSBuZXcgIm1haW4iIHN5bWJvbC1maWxlLiAgKi8KLSsgICAgICBjbGVh cl9zZWN0aW9uX3NjcmlwdHMgKCk7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICBsb2Fk X2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7Ci0rfQotKwotKy8qIENvbGxlY3Qg c2NyaXB0cyB0byBiZSBwcmludGVkIGluIGEgdmVjLiAgKi8KLSsKLSt0eXBlZGVmIHN0cnVjdCBs b2FkZWRfc2NyaXB0ICpsb2FkZWRfc2NyaXB0X3B0cjsKLStERUZfVkVDX1AgKGxvYWRlZF9zY3Jp cHRfcHRyKTsKLSsKLSsvKiBUcmF2ZXJzYWwgZnVuY3Rpb24gZm9yIGh0YWJfdHJhdmVyc2UuCi0r ICAgQ29sbGVjdCB0aGUgZW50cnkgaWYgaXQgbWF0Y2hlcyB0aGUgcmVnZXhwLiAgKi8KLSsKLStz dGF0aWMgaW50Ci0rY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzICh2b2lkICoqc2xvdCwgdm9pZCAq aW5mbykKLSt7Ci0rICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaXB0ID0gKnNsb3Q7Ci0rICBW RUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqKnNjcmlwdHNfcHRyID0gaW5mbzsKLSsKLSsgIGlmIChy ZV9leGVjIChzY3JpcHQtPm5hbWUpKQotKyAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0 X3B0ciwgKnNjcmlwdHNfcHRyLCBzY3JpcHQpOwotKwotKyAgcmV0dXJuIDE7Ci0rfQotKwotKy8q IFByaW50IFNDUklQVC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStwcmludF9zY3JpcHQgKHN0cnVj dCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQpCi0rewotKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBj dXJyZW50X3Vpb3V0OwotKyAgc3RydWN0IGNsZWFudXAgKmNoYWluOwotKwotKyAgY2hhaW4gPSBt YWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOwotKwotKyAg dWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxfcGF0aCA/ ICJZZXMiIDogIk1pc3NpbmciKTsKLSsgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAic2Ny aXB0Iiwgc2NyaXB0LT5uYW1lKTsKLSsgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7Ci0rCi0r ICAvKiBJZiB0aGUgbmFtZSBpc24ndCB0aGUgZnVsbCBwYXRoLCBwcmludCBpdCB0b28uICAqLwot KyAgaWYgKHNjcmlwdC0+ZnVsbF9wYXRoICE9IE5VTEwKLSsgICAgICAmJiBzdHJjbXAgKHNjcmlw dC0+bmFtZSwgc2NyaXB0LT5mdWxsX3BhdGgpICE9IDApCi0rICAgIHsKLSsgICAgICB1aV9vdXRf dGV4dCAodWlvdXQsICJcdGZ1bGwgbmFtZTogIik7Ci0rICAgICAgdWlfb3V0X2ZpZWxkX3N0cmlu ZyAodWlvdXQsICJmdWxsX3BhdGgiLCBzY3JpcHQtPmZ1bGxfcGF0aCk7Ci0rICAgICAgdWlfb3V0 X3RleHQgKHVpb3V0LCAiXG4iKTsKLSsgICAgfQotKwotKyAgZG9fY2xlYW51cHMgKGNoYWluKTsK LSt9Ci0rCi0rLyogSGVscGVyIGZvciBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIHRvIHNvcnQgdGhl IHNjcmlwdHMgYnkgbmFtZS4gICovCi0rCi0rc3RhdGljIGludAotK3NvcnRfc2NyaXB0c19ieV9u YW1lIChjb25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCi0rewotKyAgY29uc3Qgc3RydWN0 IGxvYWRlZF9zY3JpcHQgKmEgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBhcDsK LSsgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpiID0gKihjb25zdCBzdHJ1Y3QgbG9hZGVk X3NjcmlwdCAqKikgYnA7Ci0rCi0rICByZXR1cm4gRklMRU5BTUVfQ01QIChhLT5uYW1lLCBiLT5u YW1lKTsKLSt9Ci0rCi0rLyogImluZm8gYXV0by1sb2FkLXNjcmlwdHMiIGNvbW1hbmQuICAqLwot KwotK3N0YXRpYyB2b2lkCi0raW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwg aW50IGZyb21fdHR5KQotK3sKLSsgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91 dDsKLSsgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotKyAgc3Ry dWN0IGNsZWFudXAgKnNjcmlwdF9jaGFpbjsKLSsgIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICpz Y3JpcHRzOwotKyAgaW50IG5yX3NjcmlwdHM7Ci0rCi0rICBkb250X3JlcGVhdCAoKTsKLSsKLSsg IHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAoY3VycmVudF9wcm9ncmFt X3NwYWNlKTsKLSsKLSsgIGlmIChwYXR0ZXJuICYmICpwYXR0ZXJuKQotKyAgICB7Ci0rICAgICAg Y2hhciAqcmVfZXJyID0gcmVfY29tcCAocGF0dGVybik7Ci0rCi0rICAgICAgaWYgKHJlX2VycikK LSsJZXJyb3IgKF8oIkludmFsaWQgcmVnZXhwOiAlcyIpLCByZV9lcnIpOwotKyAgICB9Ci0rICBl bHNlCi0rICAgIHsKLSsgICAgICByZV9jb21wICgiIik7Ci0rICAgIH0KLSsKLSsgIC8qIFdlIG5l ZWQgdG8ga25vdyB0aGUgbnVtYmVyIG9mIHJvd3MgYmVmb3JlIHdlIGJ1aWxkIHRoZSB0YWJsZS4K LSsgICAgIFBsdXMgd2Ugd2FudCB0byBzb3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUuCi0rICAgICBT byBmaXJzdCB0cmF2ZXJzZSB0aGUgaGFzaCB0YWJsZSBjb2xsZWN0aW5nIHRoZSBtYXRjaGluZyBz Y3JpcHRzLiAgKi8KLSsKLSsgIHNjcmlwdHMgPSBWRUNfYWxsb2MgKGxvYWRlZF9zY3JpcHRfcHRy LCAxMCk7Ci0rICBzY3JpcHRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChsb2Fk ZWRfc2NyaXB0X3B0ciksICZzY3JpcHRzKTsKLSsKLSsgIGlmIChwc3BhY2VfaW5mbyAhPSBOVUxM ICYmIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAg aW1tZWRpYXRlX3F1aXQrKzsKLSsgICAgICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3JpcHRzIGFz IFZFQ19zYWZlX3B1c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAqLwotKyAgICAgIGh0YWJfdHJhdmVy c2Vfbm9yZXNpemUgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywKLSsJCQkgICAgICBjb2xs ZWN0X21hdGNoaW5nX3NjcmlwdHMsICZzY3JpcHRzKTsKLSsgICAgICBpbW1lZGlhdGVfcXVpdC0t OwotKyAgICB9Ci0rCi0rICBucl9zY3JpcHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9w dHIsIHNjcmlwdHMpOwotKyAgbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQgKHVp b3V0LCAyLCBucl9zY3JpcHRzLAotKwkJCQkgICAgICAgIkF1dG9Mb2FkZWRTY3JpcHRzVGFibGUi KTsKLSsKLSsgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3LCB1aV9sZWZ0LCAibG9hZGVk IiwgIkxvYWRlZCIpOwotKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDcwLCB1aV9sZWZ0 LCAic2NyaXB0IiwgIlNjcmlwdCIpOwotKyAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0KTsKLSsK LSsgIGlmIChucl9zY3JpcHRzID4gMCkKLSsgICAgewotKyAgICAgIGludCBpOwotKyAgICAgIGxv YWRlZF9zY3JpcHRfcHRyIHNjcmlwdDsKLSsKLSsgICAgICBxc29ydCAoVkVDX2FkZHJlc3MgKGxv YWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKSwKLSsJICAgICBWRUNfbGVuZ3RoIChsb2FkZWRfc2Ny aXB0X3B0ciwgc2NyaXB0cyksCi0rCSAgICAgc2l6ZW9mIChsb2FkZWRfc2NyaXB0X3B0ciksIHNv cnRfc2NyaXB0c19ieV9uYW1lKTsKLSsgICAgICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAobG9h ZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMsIGksIHNjcmlwdCk7ICsraSkKLSsJcHJpbnRfc2NyaXB0 IChzY3JpcHQpOwotKyAgICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoc2NyaXB0X2NoYWluKTsKLSsK LSsgIGlmIChucl9zY3JpcHRzID09IDApCi0rICAgIHsKLSsgICAgICBpZiAocGF0dGVybiAmJiAq cGF0dGVybikKLSsJdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlw dHMgbWF0Y2hpbmcgJXMuXG4iLAotKwkJCXBhdHRlcm4pOwotKyAgICAgIGVsc2UKLSsJdWlfb3V0 X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlwdHMuXG4iKTsKLSsgICAgfQot K30KLSsKLSsvKiBSZXR1cm4gbm9uLXplcm8gaWYgU0NSSVBUX05PVF9GT1VORF9XQVJOSU5HX1BS SU5URUQgb2YgUFNQQUNFX0lORk8gd2FzIHVuc2V0Ci0rICAgYmVmb3JlIGNhbGxpbmcgdGhpcyBm dW5jdGlvbi4gIEFsd2F5cyBzZXQgU0NSSVBUX05PVF9GT1VORF9XQVJOSU5HX1BSSU5URUQKLSsg ICBvZiBQU1BBQ0VfSU5GTy4gICovCi0rCi0raW50Ci0rc2NyaXB0X25vdF9mb3VuZF93YXJuaW5n X3ByaW50IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbykKLSt7Ci0r ICBpbnQgcmV0dmFsID0gIXBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJp bnRlZDsKLSsKLSsgIHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRl ZCA9IDE7Ci0rCi0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSt2b2lkIF9pbml0aWFsaXplX2F1 dG9fbG9hZCAodm9pZCk7Ci0rCi0rdm9pZAotK19pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkK LSt7Ci0rICBhdXRvX2xvYWRfcHNwYWNlX2RhdGEKLSsgICAgPSByZWdpc3Rlcl9wcm9ncmFtX3Nw YWNlX2RhdGFfd2l0aF9jbGVhbnVwIChhdXRvX2xvYWRfcHNwYWNlX2RhdGFfY2xlYW51cCk7Ci0r Ci0rICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKGF1dG9fbG9hZF9uZXdfb2JqZmlsZSk7 Ci0rCi0rICBhZGRfaW5mbyAoImF1dG8tbG9hZC1zY3JpcHRzIiwKLSsJICAgIGluZm9fYXV0b19s b2FkX3NjcmlwdHMsCi0rCSAgICBfKCJQcmludCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxv YWRlZCBzY3JpcHRzLlxuXAotK1VzYWdlOiBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBd IikpOwotK30KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6 MjY6MjkuMDQ5MTIwMjEyICswMjAwCi1AQCAtMCwwICsxLDM2IEBACi0rLyogR0RCIHJvdXRpbmVz IGZvciBzdXBwb3J0aW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuCi0rCi0rICAgQ29weXJpZ2h0IChD KSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCi0rCi0rI2lmbmRlZiBBVVRPX0xPQURfSAotKyNkZWZpbmUgQVVUT19MT0FEX0ggMQotKwot K3N0cnVjdCBwcm9ncmFtX3NwYWNlOwotKwotK2V4dGVybiBpbnQgZ2RicHlfZ2xvYmFsX2F1dG9f bG9hZDsKLSsKLStleHRlcm4gc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCi0rICBnZXRf YXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAq cHNwYWNlKTsKLStleHRlcm4gaW50IG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLAotKwkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29u c3QgY2hhciAqZnVsbF9wYXRoKTsKLStleHRlcm4gdm9pZCBhdXRvX2xvYWRfb2JqZmlsZV9zY3Jp cHQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCQkgICAgICBjb25zdCBjaGFyICpzdWZm aXgpOwotK2V4dGVybiBpbnQKLSsgIHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAoc3Ry dWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8pOwotKwotKyNlbmRpZiAvKiBB VVRPX0xPQURfSCAqLwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYi1nZGIuZ2Ri LmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZ2RiLWdkYi5nZGIuaW4JMjAx Mi0wNC0xOCAwMDoyNjoyOS4wNDkxMjAyMTIgKzAyMDAKLUBAIC0wLDAgKzEsMzQgQEAKLStlY2hv IFNldHRpbmcgdXAgdGhlIGVudmlyb25tZW50IGZvciBkZWJ1Z2dpbmcgZ2RiLlxuCi0rCi0rc2V0 IGNvbXBsYWludHMgMQotKwotK2IgaW50ZXJuYWxfZXJyb3IKLSsKLStiIGluZm9fY29tbWFuZAot K2NvbW1hbmRzCi0rCXNpbGVudAotKwlyZXR1cm4KLStlbmQKLSsKLStkaXIgQHNyY2RpckAvLi4v bGliaWJlcnR5Ci0rZGlyIEBzcmNkaXJALy4uL2JmZAotK2RpciBAc3JjZGlyQAotK2RpciAuCi0r c2V0IHByb21wdCAodG9wLWdkYikgCi0rCi0rZGVmaW5lIHBkaWUKLSsgIGlmICRhcmdjID09IDEK LSsgICAgY2FsbCBkdW1wX2RpZSAoJGFyZzAsIDEpCi0rICBlbHNlCi0rICAgIGlmICRhcmdjID09 IDIKLSsgICAgICBjYWxsIGR1bXBfZGllICgkYXJnMCwgJGFyZzEpCi0rICAgIGVsc2UKLSsgICAg ICBwcmludGYgIlN5bnRheDogcGRpZSBkaWUgW2RlcHRoXVxuIgotKyAgICBlbmQKLSsgIGVuZAot K2VuZAotKwotK2RvY3VtZW50IHBkaWUKLStQcmV0dHkgcHJpbnQgYSBEV0FSRiBESUUuCi0rU3lu dGF4OiBwZGllIGRpZSBbZGVwdGhdCi0rZW5kCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL01ha2VmaWxlLmluCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTWFrZWZpbGUuaW4JMjAxMi0wNC0xOCAwMDoyNjo1My40 NTUwNTgwMzcgKzAyMDAKLUBAIC02ODAsNyArNjgwLDcgQEAgVEFSR0VUX0ZMQUdTX1RPX1BBU1Mg PSBcCi0gIyBTRklMRVMgaXMgdXNlZCBpbiBidWlsZGluZyB0aGUgZGlzdHJpYnV0aW9uIGFyY2hp dmUuCi0gCi0gU0ZJTEVTID0gYWRhLWV4cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFk YS12YWxwcmludC5jIGFkYS10YXNrcy5jIFwKLS0JYWRkcm1hcC5jIFwKLSsJYWRkcm1hcC5jIGF1 dG8tbG9hZC5jIFwKLSAJYXV4di5jIGF4LWdlbmVyYWwuYyBheC1nZGIuYyBcCi0gCWJjYWNoZS5j IFwKLSAJYmZkLXRhcmdldC5jIFwKLUBAIC04MTksNyArODE5LDcgQEAgc29saWItZGFyd2luLmgg c29saWItaWE2NC1ocHV4Lmggc29saWItcwotIGdudWxpYi9leHRyYS9hcmctbm9ubnVsbC5oIGdu dWxpYi9leHRyYS9jKytkZWZzLmggZ251bGliL2V4dHJhL3dhcm4tb24tdXNlLmggXAotIGdudWxp Yi9zdGRkZWYuaW4uaCBpbmxpbmUtZnJhbWUuaCBza2lwLmggc3RhcC1wcm9iZS5oIFwKLSBjb21t b24vY29tbW9uLXV0aWxzLmggY29tbW9uL3htbC11dGlscy5oIGNvbW1vbi9idWZmZXIuaCBjb21t b24vcHRpZC5oIFwKLS1jb21tb24vbGludXgtb3NkYXRhLmggZ2RiLWRsZmNuLmgKLStjb21tb24v bGludXgtb3NkYXRhLmggZ2RiLWRsZmNuLmggYXV0by1sb2FkLmgKLSAKLSAjIEhlYWRlciBmaWxl cyB0aGF0IGFscmVhZHkgaGF2ZSBzcmNkaXIgaW4gdGhlbSwgb3Igd2hpY2ggYXJlIGluIG9iamRp ci4KLSAKLUBAIC04NTEsNyArODUxLDcgQEAgQ09NTU9OX09CUyA9ICQoREVQRklMRVMpICQoQ09O RklHX09CUykgJAotIAl2ZXJzaW9uLm8gXAotIAlhbm5vdGF0ZS5vIFwKLSAJYWRkcm1hcC5vIFwK LS0JYXV4di5vIFwKLSsJYXV0by1sb2FkLm8gYXV4di5vIFwKLSAJYmZkLXRhcmdldC5vIFwKLSAJ YmxvY2tmcmFtZS5vIGJyZWFrcG9pbnQubyBmaW5kdmFyLm8gcmVnY2FjaGUubyBcCi0gCWNoYXJz ZXQubyBjb250aW51YXRpb25zLm8gY29yZWxvdy5vIGRpc2FzbS5vIGR1bW15LWZyYW1lLm8gZGZw Lm8gXAotQEAgLTEyNTUsNyArMTI1NSw3IEBAIGRpc3RjbGVhbjogY2xlYW4KLSAJcm0gLWYgZ2Ri c2VydmVyL2NvbmZpZy5zdGF0dXMgZ2Ric2VydmVyL2NvbmZpZy5sb2cKLSAJcm0gLWYgZ2Ric2Vy dmVyL3RtLmggZ2Ric2VydmVyL3htLmggZ2Ric2VydmVyL25tLmgKLSAJcm0gLWYgZ2Ric2VydmVy L01ha2VmaWxlIGdkYnNlcnZlci9jb25maWcuY2FjaGUKLS0Jcm0gLWYgbm0uaCBjb25maWcuc3Rh dHVzIGNvbmZpZy5oIHN0YW1wLWggLmdkYmluaXQgaml0LXJlYWRlci5oCi0rCXJtIC1mIG5tLmgg Y29uZmlnLnN0YXR1cyBjb25maWcuaCBzdGFtcC1oIGdkYi1nZGIuZ2RiIGppdC1yZWFkZXIuaAot IAlybSAtZiB5Lm91dHB1dCB5YWNjLmFjdHMgeWFjYy50bXAgeS50YWIuaAotIAlybSAtZiBjb25m aWcubG9nIGNvbmZpZy5jYWNoZQotIAlybSAtZiBNYWtlZmlsZQotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6MjY6 MjkuMDUzMTIwMjAyICswMjAwCi1AQCAtMTY4MzksNyArMTY4MzksNyBAQCBhY19jb25maWdfbGlu a3M9IiRhY19jb25maWdfbGlua3MgJGFjX2NvCi0gJGFzX2VjaG8gIiNkZWZpbmUgR0RCX0RFRkFV TFRfSE9TVF9DSEFSU0VUIFwiVVRGLThcIiIgPj5jb25mZGVmcy5oCi0gCi0gCi0tYWNfY29uZmln X2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlIC5nZGJpbml0OmdkYmluaXQuaW4gZG9j L01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSIKLSthY19j b25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUgZ2RiLWdkYi5nZGIgZG9jL01h a2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSIKLSAKLSBhY19j b25maWdfY29tbWFuZHM9IiRhY19jb25maWdfY29tbWFuZHMgZGVmYXVsdCIKLSAKLUBAIC0xNzYw NSw3ICsxNzYwNSw3IEBAIGRvCi0gICAgICJqaXQtcmVhZGVyLmgiKSBDT05GSUdfRklMRVM9IiRD T05GSUdfRklMRVMgaml0LXJlYWRlci5oOmppdC1yZWFkZXIuaW4iIDs7Ci0gICAgICIkYWNfY29u ZmlnX2xpbmtzXzEiKSBDT05GSUdfTElOS1M9IiRDT05GSUdfTElOS1MgJGFjX2NvbmZpZ19saW5r c18xIiA7OwotICAgICAiTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgTWFr ZWZpbGUiIDs7Ci0tICAgICIuZ2RiaW5pdCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyAu Z2RiaW5pdDpnZGJpbml0LmluIiA7OwotKyAgICAiZ2RiLWdkYi5nZGIiKSBDT05GSUdfRklMRVM9 IiRDT05GSUdfRklMRVMgZ2RiLWdkYi5nZGIiIDs7Ci0gICAgICJkb2MvTWFrZWZpbGUiKSBDT05G SUdfRklMRVM9IiRDT05GSUdfRklMRVMgZG9jL01ha2VmaWxlIiA7OwotICAgICAiZ251bGliL01h a2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdudWxpYi9NYWtlZmlsZSIgOzsK LSAgICAgImRhdGEtZGlyZWN0b3J5L01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJ TEVTIGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlIiA7OwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMTggMDA6 MjY6MjkuMDUzMTIwMjAyICswMjAwCi1AQCAtMjQyMiw3ICsyNDIyLDcgQEAgZG5sICBBdCB0aGUg bW9tZW50LCB3ZSBqdXN0IGFzc3VtZSBpdCdzCi0gQUNfREVGSU5FKEdEQl9ERUZBVUxUX0hPU1Rf Q0hBUlNFVCwgIlVURi04IiwKLSAgICAgICAgICAgW0RlZmluZSB0byBiZSBhIHN0cmluZyBuYW1p bmcgdGhlIGRlZmF1bHQgaG9zdCBjaGFyYWN0ZXIgc2V0Ll0pCi0gCi0tQUNfT1VUUFVUKE1ha2Vm aWxlIC5nZGJpbml0OmdkYmluaXQuaW4gZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRh LWRpcmVjdG9yeS9NYWtlZmlsZSwKLStBQ19PVVRQVVQoTWFrZWZpbGUgZ2RiLWdkYi5nZGIgZG9j L01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSwKLSBbCi0g Y2FzZSB4JENPTkZJR19IRUFERVJTIGluCi0geGNvbmZpZy5oOmNvbmZpZy5pbikKLUluZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUw LjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjI2 OjI5LjA1NDEyMDE5OSArMDIwMAotQEAgLTQyLDYgKzQyLDcgQEAKLSAjaW5jbHVkZSAiY2xpL2Ns aS1jbWRzLmgiCi0gI2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIKLSAjaW5jbHVkZSAib2JqZmls ZXMuaCIKLSsjaW5jbHVkZSAiYXV0by1sb2FkLmgiCi0gCi0gLyogVGhlIHNlbGVjdGVkIGludGVy cHJldGVyLiAgVGhpcyB3aWxsIGJlIHVzZWQgYXMgYSBzZXQgY29tbWFuZAotICAgIHZhcmlhYmxl LCBzbyBpdCBzaG91bGQgYWx3YXlzIGJlIG1hbGxvYydlZCAtIHNpbmNlCi1JbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0w NC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTQxMjAxOTkgKzAy MDAKLUBAIC0xOCwzMCArMTgsMTQgQEAKLSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0gI2luY2x1 ZGUgImRlZnMuaCIKLS0jaW5jbHVkZSAiZmlsZW5hbWVzLmgiCi0gI2luY2x1ZGUgImdkYl9zdHJp bmcuaCIKLS0jaW5jbHVkZSAiZ2RiX3JlZ2V4LmgiCi0gI2luY2x1ZGUgInRvcC5oIgotICNpbmNs dWRlICJleGNlcHRpb25zLmgiCi0tI2luY2x1ZGUgImNvbW1hbmQuaCIKLSAjaW5jbHVkZSAiZ2Ri Y21kLmgiCi0tI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0tI2luY2x1ZGUgInByb2dzcGFjZS5oIgot ICNpbmNsdWRlICJvYmpmaWxlcy5oIgotICNpbmNsdWRlICJweXRob24uaCIKLSAjaW5jbHVkZSAi Y2xpL2NsaS1jbWRzLmgiCi0tCi0tLyogSW50ZXJuYWwtdXNlIGZsYWcgdG8gZW5hYmxlL2Rpc2Fi bGUgYXV0by1sb2FkaW5nLgotLSAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2Fk IHB5dGhvbiBjb2RlIHdoZW4gYW4gb2JqZmlsZSBpcyBvcGVuZWQsCi0tICAgZmFsc2Ugb3RoZXJ3 aXNlLgotLQotLSAgIEJvdGggYXV0b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9f bG9hZCBtdXN0IGJlIHRydWUgdG8gZW5hYmxlCi0tICAgYXV0by1sb2FkaW5nLgotLQotLSAgIFRo aXMgZmxhZyBleGlzdHMgdG8gZmFjaWxpdGF0ZSBkZWZlcnJpbmcgYXV0by1sb2FkaW5nIGR1cmlu ZyBzdGFydC11cAotLSAgIHVudGlsIGFmdGVyIC4vLmdkYmluaXQgaGFzIGJlZW4gcmVhZDsgaXQg bWF5IGF1Z21lbnQgdGhlIHNlYXJjaCBkaXJlY3RvcmllcwotLSAgIHVzZWQgdG8gZmluZCB0aGUg c2NyaXB0cy4gICovCi0taW50IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgPSAxOwotKyNpbmNsdWRl ICJhdXRvLWxvYWQuaCIKLSAKLSAjaWZkZWYgSEFWRV9QWVRIT04KLSAKLUBAIC02MCwzMiArNDQs NiBAQCBpbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7Ci0gICAgVGhlIGxlYWRpbmcgYnl0 ZSBpcyB0byBhbGxvdyB1cHdhcmQgY29tcGF0aWJsZSBleHRlbnNpb25zLiAgKi8KLSAjZGVmaW5l IEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FICIuZGVidWdfZ2RiX3NjcmlwdHMiCi0gCi0tLyogRm9y IHNjcmlwdHMgc3BlY2lmaWVkIGluIC5kZWJ1Z19nZGJfc2NyaXB0cywgbXVsdGlwbGUgb2JqZmls ZXMgbWF5IGxvYWQKLS0gICB0aGUgc2FtZSBzY3JpcHQuICBUaGVyZSdzIG5vIHBvaW50IGluIGxv YWRpbmcgdGhlIHNjcmlwdCBtdWx0aXBsZSB0aW1lcywKLS0gICBhbmQgdGhlcmUgY2FuIGJlIGEg bG90IG9mIG9iamZpbGVzIGFuZCBzY3JpcHRzLCBzbyB3ZSBrZWVwIHRyYWNrIG9mIHNjcmlwdHMK LS0gICBsb2FkZWQgdGhpcyB3YXkuICAqLwotLQotLXN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2lu Zm8KLS17Ci0tICAvKiBGb3IgZWFjaCBwcm9ncmFtIHNwYWNlIHdlIGtlZXAgdHJhY2sgb2YgbG9h ZGVkIHNjcmlwdHMuICAqLwotLSAgc3RydWN0IGh0YWIgKmxvYWRlZF9zY3JpcHRzOwotLQotLSAg LyogTm9uLXplcm8gaWYgd2UndmUgaXNzdWVkIHRoZSB3YXJuaW5nIGFib3V0IGFuIGF1dG8tbG9h ZCBzY3JpcHQgbm90IGJlaW5nCi0tICAgICBmb3VuZC4gIFdlIG9ubHkgd2FudCB0byBpc3N1ZSB0 aGlzIHdhcm5pbmcgb25jZS4gICovCi0tICBpbnQgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3By aW50ZWQ7Ci0tfTsKLS0KLS0vKiBPYmplY3RzIG9mIHRoaXMgdHlwZSBhcmUgc3RvcmVkIGluIHRo ZSBsb2FkZWQgc2NyaXB0IGhhc2ggdGFibGUuICAqLwotLQotLXN0cnVjdCBsb2FkZWRfc2NyaXB0 Ci0tewotLSAgLyogTmFtZSBhcyBwcm92aWRlZCBieSB0aGUgb2JqZmlsZS4gICovCi0tICBjb25z dCBjaGFyICpuYW1lOwotLSAgLyogRnVsbCBwYXRoIG5hbWUgb3IgTlVMTCBpZiBzY3JpcHQgd2Fz bid0IGZvdW5kIChvciB3YXMgb3RoZXJ3aXNlCi0tICAgICBpbmFjY2Vzc2libGUpLiAgKi8KLS0g IGNvbnN0IGNoYXIgKmZ1bGxfcGF0aDsKLS19OwotLQotIC8qIFVzZXItc2V0dGFibGUgb3B0aW9u IHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZzoKLSAgICBzZXQgYXV0by1sb2FkLXNjcmlw dHMgb258b2ZmCi0gICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2Np YXRlZCBzY3JpcHRzIHdoZW4gYW4gb2JqZmlsZQotQEAgLTk3LDEzNiArNTUsNiBAQCBzdHJ1Y3Qg bG9hZGVkX3NjcmlwdAotICAgIFRoZSBmYWN0IHRoYXQgaXQgbGl2ZXMgaGVyZSBpcyBqdXN0IGFu IGltcGxlbWVudGF0aW9uIGRldGFpbC4gICovCi0gc3RhdGljIGludCBhdXRvX2xvYWRfc2NyaXB0 cyA9IDE7Ci0gCi0tLyogUGVyLXByb2dyYW0tc3BhY2UgZGF0YSBrZXkuICAqLwotLXN0YXRpYyBj b25zdCBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZV9kYXRhICphdXRvX2xvYWRfcHNwYWNlX2RhdGE7Ci0t Ci0tc3RhdGljIHZvaWQKLS1hdXRvX2xvYWRfcHNwYWNlX2RhdGFfY2xlYW51cCAoc3RydWN0IHBy b2dyYW1fc3BhY2UgKnBzcGFjZSwgdm9pZCAqYXJnKQotLXsKLS0gIHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKmluZm87Ci0tCi0tICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3Bh Y2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7Ci0tICBpZiAoaW5mbyAhPSBOVUxMKQotLSAgICB7 Ci0tICAgICAgaWYgKGluZm8tPmxvYWRlZF9zY3JpcHRzKQotLQlodGFiX2RlbGV0ZSAoaW5mby0+ bG9hZGVkX3NjcmlwdHMpOwotLSAgICAgIHhmcmVlIChpbmZvKTsKLS0gICAgfQotLX0KLS0KLS0v KiBHZXQgdGhlIGN1cnJlbnQgYXV0b2xvYWQgZGF0YS4gIElmIG5vbmUgaXMgZm91bmQgeWV0LCBh ZGQgaXQgbm93LiAgVGhpcwotLSAgIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgb2Jq ZWN0LiAgKi8KLS0KLS1zdGF0aWMgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCi0tZ2V0 X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSkKLS17 Ci0tICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOwotLQotLSAgaW5mbyA9IHBy b2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEpOwotLSAgaWYg KGluZm8gPT0gTlVMTCkKLS0gICAgewotLSAgICAgIGluZm8gPSBYWkFMTE9DIChzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvKTsKLS0gICAgICBzZXRfcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3Bh Y2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSwgaW5mbyk7Ci0tICAgIH0KLS0KLS0gIHJldHVybiBp bmZvOwotLX0KLS0KLS0vKiBIYXNoIGZ1bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNjcmlwdCBoYXNo LiAgKi8KLS0KLS1zdGF0aWMgaGFzaHZhbF90Ci0taGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5IChj b25zdCB2b2lkICpkYXRhKQotLXsKLS0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplID0g ZGF0YTsKLS0KLS0gIHJldHVybiBodGFiX2hhc2hfc3RyaW5nIChlLT5uYW1lKTsKLS19Ci0tCi0t LyogRXF1YWxpdHkgZnVuY3Rpb24gZm9yIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLwotLQot LXN0YXRpYyBpbnQKLS1lcV9sb2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICphLCBjb25z dCB2b2lkICpiKQotLXsKLS0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYSA9IGE7Ci0t ICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZWIgPSBiOwotLQotLSAgcmV0dXJuIHN0cmNt cCAoZWEtPm5hbWUsIGViLT5uYW1lKSA9PSAwOwotLX0KLS0KLS0vKiBJbml0aWFsaXplIHRoZSB0 YWJsZSB0byB0cmFjayBsb2FkZWQgc2NyaXB0cy4KLS0gICBFYWNoIGVudHJ5IGlzIGhhc2hlZCBi eSB0aGUgZnVsbCBwYXRoIG5hbWUuICAqLwotLQotLXN0YXRpYyB2b2lkCi0taW5pdF9sb2FkZWRf c2NyaXB0c19pbmZvIChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbykK LS17Ci0tICAvKiBDaG9vc2UgMzEgYXMgdGhlIHN0YXJ0aW5nIHNpemUgb2YgdGhlIGhhc2ggdGFi bGUsIHNvbWV3aGF0IGFyYml0cmFyaWx5LgotLSAgICAgU3BhY2UgZm9yIGVhY2ggZW50cnkgaXMg b2J0YWluZWQgd2l0aCBvbmUgbWFsbG9jIHNvIHdlIGNhbiBmcmVlIHRoZW0KLS0gICAgIGVhc2ls eS4gICovCi0tCi0tICBwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMgPSBodGFiX2NyZWF0ZSAo MzEsCi0tCQkJCQkgICAgIGhhc2hfbG9hZGVkX3NjcmlwdF9lbnRyeSwKLS0JCQkJCSAgICAgZXFf bG9hZGVkX3NjcmlwdF9lbnRyeSwKLS0JCQkJCSAgICAgeGZyZWUpOwotLQotLSAgcHNwYWNlX2lu Zm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkID0gRkFMU0U7Ci0tfQotLQotLS8q IFdyYXBwZXIgb24gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSB0byBhbHNvIGFsbG9jYXRlIHRo ZSBoYXNoIHRhYmxlCi0tICAgZm9yIGxvYWRpbmcgc2NyaXB0cy4gICovCi0tCi0tc3RhdGljIHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgotLWdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFf Zm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCi0tewotLSAgc3RydWN0 IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKLS0KLS0gIGluZm8gPSBnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhIChwc3BhY2UpOwotLSAgaWYgKGluZm8tPmxvYWRlZF9zY3JpcHRzID09IE5V TEwpCi0tICAgIGluaXRfbG9hZGVkX3NjcmlwdHNfaW5mbyAoaW5mbyk7Ci0tCi0tICByZXR1cm4g aW5mbzsKLS19Ci0tCi0tLyogQWRkIHNjcmlwdCBOQU1FIHRvIGhhc2ggdGFibGUgSFRBQi4KLS0g ICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdhc24ndCBmb3VuZC4KLS0gICBUaGUg cmVzdWx0IGlzIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJs ZS4gICovCi0tCi0tc3RhdGljIGludAotLW1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBodGFiICpo dGFiLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgpCi0tewotLSAgc3Ry dWN0IGxvYWRlZF9zY3JpcHQgKipzbG90LCBlbnRyeTsKLS0gIGludCBpbl9oYXNoX3RhYmxlOwot LQotLSAgZW50cnkubmFtZSA9IG5hbWU7Ci0tICBlbnRyeS5mdWxsX3BhdGggPSBmdWxsX3BhdGg7 Ci0tICBzbG90ID0gKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBodGFiX2ZpbmRfc2xvdCAoaHRh YiwgJmVudHJ5LCBJTlNFUlQpOwotLSAgaW5faGFzaF90YWJsZSA9ICpzbG90ICE9IE5VTEw7Ci0t Ci0tICAvKiBJZiB0aGlzIHNjcmlwdCBpcyBub3QgaW4gdGhlIGhhc2ggdGFibGUsIGFkZCBpdC4g ICovCi0tCi0tICBpZiAoISBpbl9oYXNoX3RhYmxlKQotLSAgICB7Ci0tICAgICAgY2hhciAqcDsK LS0KLS0gICAgICAvKiBBbGxvY2F0ZSBhbGwgc3BhY2UgaW4gb25lIGNodW5rIHNvIGl0J3MgZWFz aWVyIHRvIGZyZWUuICAqLwotLSAgICAgICpzbG90ID0geG1hbGxvYyAoc2l6ZW9mICgqKnNsb3Qp Ci0tCQkgICAgICAgKyBzdHJsZW4gKG5hbWUpICsgMQotLQkJICAgICAgICsgKGZ1bGxfcGF0aCAh PSBOVUxMID8gKHN0cmxlbiAoZnVsbF9wYXRoKSArIDEpIDogMCkpOwotLSAgICAgIHAgPSAoKGNo YXIqKSAqc2xvdCkgKyBzaXplb2YgKCoqc2xvdCk7Ci0tICAgICAgc3RyY3B5IChwLCBuYW1lKTsK LS0gICAgICAoKnNsb3QpLT5uYW1lID0gcDsKLS0gICAgICBpZiAoZnVsbF9wYXRoICE9IE5VTEwp Ci0tCXsKLS0JICBwICs9IHN0cmxlbiAocCkgKyAxOwotLQkgIHN0cmNweSAocCwgZnVsbF9wYXRo KTsKLS0JICAoKnNsb3QpLT5mdWxsX3BhdGggPSBwOwotLQl9Ci0tICAgICAgZWxzZQotLQkoKnNs b3QpLT5mdWxsX3BhdGggPSBOVUxMOwotLSAgICB9Ci0tCi0tICByZXR1cm4gaW5faGFzaF90YWJs ZTsKLS19Ci0tCi0gLyogTG9hZCBzY3JpcHRzIHNwZWNpZmllZCBpbiBPQkpGSUxFLgotICAgIFNU QVJULEVORCBkZWxpbWl0IGEgYnVmZmVyIGNvbnRhaW5pbmcgYSBsaXN0IG9mIG51bC10ZXJtaW5h dGVkCi0gICAgZmlsZSBuYW1lcy4KLUBAIC0zMDEsMjAgKzEyOSwxNyBAQCBzb3VyY2Vfc2VjdGlv bl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsZSAqCi0gCi0gCSBJV0JOIGlmIGNvbXBsYWludHMuYyB3 ZXJlIG1vcmUgZ2VuZXJhbC1wdXJwb3NlLiAgKi8KLSAKLS0gICAgICBpbl9oYXNoX3RhYmxlID0g bWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzLCBmaWxlLAotKyAg ICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZSwK LSAJCQkJCW9wZW5lZCA/IGZ1bGxfcGF0aCA6IE5VTEwpOwotIAotICAgICAgIGlmICghIG9wZW5l ZCkKLSAJewotIAkgIC8qIFdlIGRvbid0IHRocm93IGFuIGVycm9yLCB0aGUgcHJvZ3JhbSBpcyBz dGlsbCBkZWJ1Z2dhYmxlLiAgKi8KLS0JICBpZiAoISBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9m b3VuZF93YXJuaW5nX3ByaW50ZWQpCi0tCSAgICB7Ci0tCSAgICAgIHdhcm5pbmcgKF8oIk1pc3Np bmcgYXV0by1sb2FkIHNjcmlwdHMgcmVmZXJlbmNlZCBpbiBzZWN0aW9uICVzXG5cCi0rCSAgaWYg KHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAocHNwYWNlX2luZm8pKQotKwkgICAgd2Fy bmluZyAoXygiTWlzc2luZyBhdXRvLWxvYWQgc2NyaXB0cyByZWZlcmVuY2VkIGluIHNlY3Rpb24g JXNcblwKLSBvZiBmaWxlICVzXG5cCi0gVXNlIGBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdF WFBdJyB0byBsaXN0IHRoZW0uIiksCi0tCQkgICAgICAgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUs IG9iamZpbGUtPm5hbWUpOwotLQkgICAgICBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93 YXJuaW5nX3ByaW50ZWQgPSBUUlVFOwotLQkgICAgfQotKwkJICAgICBHREJQWV9BVVRPX1NFQ1RJ T05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7Ci0gCX0KLSAgICAgICBlbHNlCi0gCXsKLUBAIC0zNTYs MTE2ICsxODEsNiBAQCBhdXRvX2xvYWRfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsCi0g ICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwotIH0KLSAKLS0vKiBDbGVhciB0aGUgdGFibGUgb2Yg bG9hZGVkIHNlY3Rpb24gc2NyaXB0cy4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1jbGVhcl9zZWN0 aW9uX3NjcmlwdHMgKHZvaWQpCi0tewotLSAgc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSA9 IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZTsKLS0gIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8g KmluZm87Ci0tCi0tICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9h ZF9wc3BhY2VfZGF0YSk7Ci0tICBpZiAoaW5mbyAhPSBOVUxMICYmIGluZm8tPmxvYWRlZF9zY3Jp cHRzICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICBodGFiX2RlbGV0ZSAoaW5mby0+bG9hZGVkX3Nj cmlwdHMpOwotLSAgICAgIGluZm8tPmxvYWRlZF9zY3JpcHRzID0gTlVMTDsKLS0gICAgICBpbmZv LT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IEZBTFNFOwotLSAgICB9Ci0tfQot LQotLS8qIExvb2sgZm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0IGFzc29jaWF0ZWQgd2l0aCBPQkpG SUxFIGFuZCBsb2FkIGl0LiAgKi8KLS0KLS1zdGF0aWMgdm9pZAotLWF1dG9fbG9hZF9vYmpmaWxl X3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKnN1ZmZpeCkKLS17 Ci0tICBjaGFyICpyZWFsbmFtZTsKLS0gIGNoYXIgKmZpbGVuYW1lLCAqZGVidWdmaWxlOwotLSAg aW50IGxlbjsKLS0gIEZJTEUgKmlucHV0OwotLSAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOwot LQotLSAgcmVhbG5hbWUgPSBnZGJfcmVhbHBhdGggKG9iamZpbGUtPm5hbWUpOwotLSAgbGVuID0g c3RybGVuIChyZWFsbmFtZSk7Ci0tICBmaWxlbmFtZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAo c3VmZml4KSArIDEpOwotLSAgbWVtY3B5IChmaWxlbmFtZSwgcmVhbG5hbWUsIGxlbik7Ci0tICBz dHJjcHkgKGZpbGVuYW1lICsgbGVuLCBzdWZmaXgpOwotLQotLSAgY2xlYW51cHMgPSBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7Ci0tICBtYWtlX2NsZWFudXAgKHhmcmVlLCByZWFsbmFt ZSk7Ci0tCi0tICBpbnB1dCA9IGZvcGVuIChmaWxlbmFtZSwgInIiKTsKLS0gIGRlYnVnZmlsZSA9 IGZpbGVuYW1lOwotLQotLSAgaWYgKCFpbnB1dCAmJiBkZWJ1Z19maWxlX2RpcmVjdG9yeSkKLS0g ICAgewotLSAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRl YnVnIGluZm8gZGlyZWN0b3J5LiAgKi8KLS0gICAgICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJs ZW4gKGZpbGVuYW1lKQotLQkJCSAgICsgc3RybGVuIChkZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAx KTsKLS0gICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVidWdfZmlsZV9kaXJlY3RvcnkpOwotLSAg ICAgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUu ICAqLwotLSAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7Ci0tCi0tICAgICAgbWFr ZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKLS0gICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1 Z2ZpbGUsICJyIik7Ci0tICAgIH0KLS0KLS0gIGlmICghaW5wdXQgJiYgZ2RiX2RhdGFkaXIpCi0t ICAgIHsKLS0gICAgICAvKiBBbHNvIHRyeSB0aGUgc2FtZSBmaWxlIGluIGEgc3ViZGlyZWN0b3J5 IG9mIGdkYidzIGRhdGEKLS0JIGRpcmVjdG9yeS4gICovCi0tICAgICAgZGVidWdmaWxlID0geG1h bGxvYyAoc3RybGVuIChnZGJfZGF0YWRpcikgKyBzdHJsZW4gKGZpbGVuYW1lKQotLQkJCSAgICsg c3RybGVuICgiL2F1dG8tbG9hZCIpICsgMSk7Ci0tICAgICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGdk Yl9kYXRhZGlyKTsKLS0gICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgIi9hdXRvLWxvYWQiKTsKLS0g ICAgICAvKiBGSUxFTkFNRSBpcyBhYnNvbHV0ZSwgc28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJl LiAgKi8KLS0gICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgZmlsZW5hbWUpOwotLQotLSAgICAgIG1h a2VfY2xlYW51cCAoeGZyZWUsIGRlYnVnZmlsZSk7Ci0tICAgICAgaW5wdXQgPSBmb3BlbiAoZGVi dWdmaWxlLCAiciIpOwotLSAgICB9Ci0tCi0tICBpZiAoaW5wdXQpCi0tICAgIHsKLS0gICAgICBz dHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLS0KLS0gICAgICBtYWtl X2NsZWFudXBfZmNsb3NlIChpbnB1dCk7Ci0tCi0tICAgICAgLyogQWRkIHRoaXMgc2NyaXB0IHRv IHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIKLS0JIGNhbiBw cmludCBpdC4gICovCi0tICAgICAgcHNwYWNlX2luZm8gPQotLQlnZXRfYXV0b19sb2FkX3BzcGFj ZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwotLSAgICAgIG1heWJl X2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywgZGVidWdmaWxlLCBkZWJ1 Z2ZpbGUpOwotLQotLSAgICAgIC8qIFRvIHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW91ciB3ZSBk b24ndCBjaGVjayBmb3Igd2hldGhlciB0aGUKLS0JIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUg dGFibGUsIGFuZCBhbHdheXMgbG9hZCBpdC4KLS0JIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQg d2UnZCBldmVyIGxvYWQgaXQgdHdpY2UsCi0tCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWly ZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQotLQkgbG9hZHMgYW55d2F5LiAgKi8K LS0gICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQs IGRlYnVnZmlsZSk7Ci0tICAgIH0KLS0KLS0gIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7Ci0tfQot LQotLS8qIFRoaXMgaXMgYSBuZXdfb2JqZmlsZSBvYnNlcnZlciBjYWxsYmFjayB0byBhdXRvLWxv YWQgc2NyaXB0cy4KLS0KLS0gICBUd28gZmxhdm9ycyBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzIGFy ZSBzdXBwb3J0ZWQuCi0tICAgMSkgYmFzZWQgb24gdGhlIHBhdGggdG8gdGhlIG9iamZpbGUKLS0g ICAyKSBmcm9tIC5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uICAqLwotLQotLXN0YXRpYyB2b2lk Ci0tYXV0b19sb2FkX25ld19vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLS17Ci0t ICBpZiAoIW9iamZpbGUpCi0tICAgIHsKLS0gICAgICAvKiBPQkpGSUxFIGlzIE5VTEwgd2hlbiBs b2FkaW5nIGEgbmV3ICJtYWluIiBzeW1ib2wtZmlsZS4gICovCi0tICAgICAgY2xlYXJfc2VjdGlv bl9zY3JpcHRzICgpOwotLSAgICAgIHJldHVybjsKLS0gICAgfQotLQotLSAgbG9hZF9hdXRvX3Nj cmlwdHNfZm9yX29iamZpbGUgKG9iamZpbGUpOwotLX0KLS0KLSAvKiBMb2FkIGFueSBhdXRvLWxv YWRlZCBzY3JpcHRzIGZvciBPQkpGSUxFLiAgKi8KLSAKLSB2b2lkCi1AQCAtNDc4LDE0NiArMTkz LDkgQEAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYgotICAgICB9Ci0g fQotIAwKLS0vKiBDb2xsZWN0IHNjcmlwdHMgdG8gYmUgcHJpbnRlZCBpbiBhIHZlYy4gICovCi0t Ci0tdHlwZWRlZiBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqbG9hZGVkX3NjcmlwdF9wdHI7Ci0tREVG X1ZFQ19QIChsb2FkZWRfc2NyaXB0X3B0cik7Ci0tCi0tLyogVHJhdmVyc2FsIGZ1bmN0aW9uIGZv ciBodGFiX3RyYXZlcnNlLgotLSAgIENvbGxlY3QgdGhlIGVudHJ5IGlmIGl0IG1hdGNoZXMgdGhl IHJlZ2V4cC4gICovCi0tCi0tc3RhdGljIGludAotLWNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cyAo dm9pZCAqKnNsb3QsIHZvaWQgKmluZm8pCi0tewotLSAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKnNj cmlwdCA9ICpzbG90OwotLSAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikgKipzY3JpcHRzX3B0ciA9 IGluZm87Ci0tCi0tICBpZiAocmVfZXhlYyAoc2NyaXB0LT5uYW1lKSkKLS0gICAgVkVDX3NhZmVf cHVzaCAobG9hZGVkX3NjcmlwdF9wdHIsICpzY3JpcHRzX3B0ciwgc2NyaXB0KTsKLS0KLS0gIHJl dHVybiAxOwotLX0KLS0KLS0vKiBQcmludCBTQ1JJUFQuICAqLwotLQotLXN0YXRpYyB2b2lkCi0t cHJpbnRfc2NyaXB0IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaXB0KQotLXsKLS0gIHN0cnVj dCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKLS0gIHN0cnVjdCBjbGVhbnVwICpjaGFp bjsKLS0KLS0gIGNoYWluID0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVp b3V0LCBOVUxMKTsKLS0KLS0gIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAibG9hZGVkIiwg c2NyaXB0LT5mdWxsX3BhdGggPyAiWWVzIiA6ICJNaXNzaW5nIik7Ci0tICB1aV9vdXRfZmllbGRf c3RyaW5nICh1aW91dCwgInNjcmlwdCIsIHNjcmlwdC0+bmFtZSk7Ci0tICB1aV9vdXRfdGV4dCAo dWlvdXQsICJcbiIpOwotLQotLSAgLyogSWYgdGhlIG5hbWUgaXNuJ3QgdGhlIGZ1bGwgcGF0aCwg cHJpbnQgaXQgdG9vLiAgKi8KLS0gIGlmIChzY3JpcHQtPmZ1bGxfcGF0aCAhPSBOVUxMCi0tICAg ICAgJiYgc3RyY21wIChzY3JpcHQtPm5hbWUsIHNjcmlwdC0+ZnVsbF9wYXRoKSAhPSAwKQotLSAg ICB7Ci0tICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXHRmdWxsIG5hbWU6ICIpOwotLSAgICAg IHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAiZnVsbF9wYXRoIiwgc2NyaXB0LT5mdWxsX3Bh dGgpOwotLSAgICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7Ci0tICAgIH0KLS0KLS0gIGRv X2NsZWFudXBzIChjaGFpbik7Ci0tfQotLQotLS8qIEhlbHBlciBmb3IgaW5mb19hdXRvX2xvYWRf c2NyaXB0cyB0byBzb3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUuICAqLwotLQotLXN0YXRpYyBpbnQK LS1zb3J0X3NjcmlwdHNfYnlfbmFtZSAoY29uc3Qgdm9pZCAqYXAsIGNvbnN0IHZvaWQgKmJwKQot LXsKLS0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICphID0gKihjb25zdCBzdHJ1Y3QgbG9h ZGVkX3NjcmlwdCAqKikgYXA7Ci0tICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqYiA9ICoo Y29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKiopIGJwOwotLQotLSAgcmV0dXJuIEZJTEVOQU1F X0NNUCAoYS0+bmFtZSwgYi0+bmFtZSk7Ci0tfQotLQotLS8qICJpbmZvIGF1dG8tbG9hZC1zY3Jp cHRzIiBjb21tYW5kLiAgKi8KLS0KLS1zdGF0aWMgdm9pZAotLWluZm9fYXV0b19sb2FkX3Njcmlw dHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSkKLS17Ci0tICBzdHJ1Y3QgdWlfb3V0ICp1 aW91dCA9IGN1cnJlbnRfdWlvdXQ7Ci0tICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpw c3BhY2VfaW5mbzsKLS0gIHN0cnVjdCBjbGVhbnVwICpzY3JpcHRfY2hhaW47Ci0tICBWRUMgKGxv YWRlZF9zY3JpcHRfcHRyKSAqc2NyaXB0czsKLS0gIGludCBucl9zY3JpcHRzOwotLQotLSAgZG9u dF9yZXBlYXQgKCk7Ci0tCi0tICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2Rh dGEgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0tCi0tICBpZiAocGF0dGVybiAmJiAqcGF0dGVy bikKLS0gICAgewotLSAgICAgIGNoYXIgKnJlX2VyciA9IHJlX2NvbXAgKHBhdHRlcm4pOwotLQot LSAgICAgIGlmIChyZV9lcnIpCi0tCWVycm9yIChfKCJJbnZhbGlkIHJlZ2V4cDogJXMiKSwgcmVf ZXJyKTsKLS0gICAgfQotLSAgZWxzZQotLSAgICB7Ci0tICAgICAgcmVfY29tcCAoIiIpOwotLSAg ICB9Ci0tCi0tICAvKiBXZSBuZWVkIHRvIGtub3cgdGhlIG51bWJlciBvZiByb3dzIGJlZm9yZSB3 ZSBidWlsZCB0aGUgdGFibGUuCi0tICAgICBQbHVzIHdlIHdhbnQgdG8gc29ydCB0aGUgc2NyaXB0 cyBieSBuYW1lLgotLSAgICAgU28gZmlyc3QgdHJhdmVyc2UgdGhlIGhhc2ggdGFibGUgY29sbGVj dGluZyB0aGUgbWF0Y2hpbmcgc2NyaXB0cy4gICovCi0tCi0tICBzY3JpcHRzID0gVkVDX2FsbG9j IChsb2FkZWRfc2NyaXB0X3B0ciwgMTApOwotLSAgc2NyaXB0X2NoYWluID0gbWFrZV9jbGVhbnVw IChWRUNfY2xlYW51cCAobG9hZGVkX3NjcmlwdF9wdHIpLCAmc2NyaXB0cyk7Ci0tCi0tICBpZiAo cHNwYWNlX2luZm8gIT0gTlVMTCAmJiBwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMgIT0gTlVM TCkKLS0gICAgewotLSAgICAgIGltbWVkaWF0ZV9xdWl0Kys7Ci0tICAgICAgLyogUGFzcyBhIHBv aW50ZXIgdG8gc2NyaXB0cyBhcyBWRUNfc2FmZV9wdXNoIGNhbiByZWFsbG9jIHNwYWNlLiAgKi8K LS0gICAgICBodGFiX3RyYXZlcnNlX25vcmVzaXplIChwc3BhY2VfaW5mby0+bG9hZGVkX3Njcmlw dHMsCi0tCQkJICAgICAgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzLCAmc2NyaXB0cyk7Ci0tICAg ICAgaW1tZWRpYXRlX3F1aXQtLTsKLS0gICAgfQotLQotLSAgbnJfc2NyaXB0cyA9IFZFQ19sZW5n dGggKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKTsKLS0gIG1ha2VfY2xlYW51cF91aV9vdXRf dGFibGVfYmVnaW5fZW5kICh1aW91dCwgMiwgbnJfc2NyaXB0cywKLS0JCQkJICAgICAgICJBdXRv TG9hZGVkU2NyaXB0c1RhYmxlIik7Ci0tCi0tICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwg NywgdWlfbGVmdCwgImxvYWRlZCIsICJMb2FkZWQiKTsKLS0gIHVpX291dF90YWJsZV9oZWFkZXIg KHVpb3V0LCA3MCwgdWlfbGVmdCwgInNjcmlwdCIsICJTY3JpcHQiKTsKLS0gIHVpX291dF90YWJs ZV9ib2R5ICh1aW91dCk7Ci0tCi0tICBpZiAobnJfc2NyaXB0cyA+IDApCi0tICAgIHsKLS0gICAg ICBpbnQgaTsKLS0gICAgICBsb2FkZWRfc2NyaXB0X3B0ciBzY3JpcHQ7Ci0tCi0tICAgICAgcXNv cnQgKFZFQ19hZGRyZXNzIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyksCi0tCSAgICAgVkVD X2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpLAotLQkgICAgIHNpemVvZiAobG9h ZGVkX3NjcmlwdF9wdHIpLCBzb3J0X3NjcmlwdHNfYnlfbmFtZSk7Ci0tICAgICAgZm9yIChpID0g MDsgVkVDX2l0ZXJhdGUgKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzLCBpLCBzY3JpcHQpOyAr K2kpCi0tCXByaW50X3NjcmlwdCAoc2NyaXB0KTsKLS0gICAgfQotLQotLSAgZG9fY2xlYW51cHMg KHNjcmlwdF9jaGFpbik7Ci0tCi0tICBpZiAobnJfc2NyaXB0cyA9PSAwKQotLSAgICB7Ci0tICAg ICAgaWYgKHBhdHRlcm4gJiYgKnBhdHRlcm4pCi0tCXVpX291dF9tZXNzYWdlICh1aW91dCwgMCwg Ik5vIGF1dG8tbG9hZCBzY3JpcHRzIG1hdGNoaW5nICVzLlxuIiwKLS0JCQlwYXR0ZXJuKTsKLS0g ICAgICBlbHNlCi0tCXVpX291dF9tZXNzYWdlICh1aW91dCwgMCwgIk5vIGF1dG8tbG9hZCBzY3Jp cHRzLlxuIik7Ci0tICAgIH0KLS19Ci0tDAotIHZvaWQKLSBnZGJweV9pbml0aWFsaXplX2F1dG9f bG9hZCAodm9pZCkKLSB7Ci0tICBhdXRvX2xvYWRfcHNwYWNlX2RhdGEKLS0gICAgPSByZWdpc3Rl cl9wcm9ncmFtX3NwYWNlX2RhdGFfd2l0aF9jbGVhbnVwIChhdXRvX2xvYWRfcHNwYWNlX2RhdGFf Y2xlYW51cCk7Ci0tCi0tICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKGF1dG9fbG9hZF9u ZXdfb2JqZmlsZSk7Ci0tCi0gICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImF1dG8tbG9hZC1z Y3JpcHRzIiwgY2xhc3Nfc3VwcG9ydCwKLSAJCQkgICAmYXV0b19sb2FkX3NjcmlwdHMsIF8oIlwK LSBTZXQgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBzY3Jp cHRzLiIpLCBfKCJcCi1AQCAtNjI3LDExICsyMDUsNiBAQCBhbiBleGVjdXRhYmxlIG9yIHNoYXJl ZCBsaWJyYXJ5LiIpLAotIAkJCSAgIE5VTEwsIE5VTEwsCi0gCQkJICAgJnNldGxpc3QsCi0gCQkJ ICAgJnNob3dsaXN0KTsKLS0KLS0gIGFkZF9pbmZvICgiYXV0by1sb2FkLXNjcmlwdHMiLAotLQkg ICAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cywKLS0JICAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1 dG9tYXRpY2FsbHkgbG9hZGVkIHNjcmlwdHMuXG5cCi0tVXNhZ2U6IGluZm8gYXV0by1sb2FkLXNj cmlwdHMgW1JFR0VYUF0iKSk7Ci0gfQotIAotICNlbHNlIC8qICEgSEFWRV9QWVRIT04gKi8KLUlu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0 LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjI2OjI5LjA1NDEyMDE5OSArMDIwMAotQEAg LTI0LDggKzI0LDYgQEAKLSAKLSBzdHJ1Y3QgYnJlYWtwb2ludF9vYmplY3Q7Ci0gCi0tZXh0ZXJu IGludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkOwotLQotIGV4dGVybiB2b2lkIGZpbmlzaF9weXRo b25faW5pdGlhbGl6YXRpb24gKHZvaWQpOwotIAotIHZvaWQgZXZhbF9weXRob25fZnJvbV9jb250 cm9sX2NvbW1hbmQgKHN0cnVjdCBjb21tYW5kX2xpbmUgKik7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1 dG9sb2FkLTA5b2YyMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0wOW9mMjIucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI0NGNmZgotLS0gL2Rldi9udWxsCisrKyBiL2dk Yi1hdXRvbG9hZC0wOW9mMjIucGF0Y2gKQEAgLTAsMCArMSwxMTY4IEBACitbcGF0Y2gjNCAzLzhd IGF1dG8tbG9hZDogcmVzaHVmZmxlIGNvZGUKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt cGF0Y2hlcy8yMDEyLTA0L21zZzAwMDg3Lmh0bWwKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItY3ZzLzIwMTItMDQvbXNnMDAxMTIuaHRtbAorCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvYXV0by1sb2FkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRv LWxvYWQuYwkyMDEyLTA0LTE4IDAwOjI2OjI5LjA0OTEyMDIxMiArMDIwMAorQEAgLTAsMCArMSw0 NzIgQEAKKysvKiBHREIgcm91dGluZXMgZm9yIHN1cHBvcnRpbmcgYXV0by1sb2FkZWQgc2NyaXB0 cy4KKysKKysgICBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSAiZGVmcy5oIgorKyNpbmNs dWRlICJhdXRvLWxvYWQuaCIKKysjaW5jbHVkZSAicHJvZ3NwYWNlLmgiCisrI2luY2x1ZGUgInB5 dGhvbi9weXRob24uaCIKKysjaW5jbHVkZSAiZ2RiX3JlZ2V4LmgiCisrI2luY2x1ZGUgInVpLW91 dC5oIgorKyNpbmNsdWRlICJmaWxlbmFtZXMuaCIKKysjaW5jbHVkZSAiY29tbWFuZC5oIgorKyNp bmNsdWRlICJvYnNlcnZlci5oIgorKyNpbmNsdWRlICJvYmpmaWxlcy5oIgorKyNpbmNsdWRlICJw eXRob24vcHl0aG9uLWludGVybmFsLmgiCisrCisrLyogSW50ZXJuYWwtdXNlIGZsYWcgdG8gZW5h YmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nLgorKyAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQg YXV0by1sb2FkIHB5dGhvbiBjb2RlIHdoZW4gYW4gb2JqZmlsZSBpcyBvcGVuZWQsCisrICAgZmFs c2Ugb3RoZXJ3aXNlLgorKworKyAgIEJvdGggYXV0b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xv YmFsX2F1dG9fbG9hZCBtdXN0IGJlIHRydWUgdG8gZW5hYmxlCisrICAgYXV0by1sb2FkaW5nLgor KworKyAgIFRoaXMgZmxhZyBleGlzdHMgdG8gZmFjaWxpdGF0ZSBkZWZlcnJpbmcgYXV0by1sb2Fk aW5nIGR1cmluZyBzdGFydC11cAorKyAgIHVudGlsIGFmdGVyIC4vLmdkYmluaXQgaGFzIGJlZW4g cmVhZDsgaXQgbWF5IGF1Z21lbnQgdGhlIHNlYXJjaCBkaXJlY3RvcmllcworKyAgIHVzZWQgdG8g ZmluZCB0aGUgc2NyaXB0cy4gICovCisraW50IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgPSAxOwor KworKy8qIEZvciBzY3JpcHRzIHNwZWNpZmllZCBpbiAuZGVidWdfZ2RiX3NjcmlwdHMsIG11bHRp cGxlIG9iamZpbGVzIG1heSBsb2FkCisrICAgdGhlIHNhbWUgc2NyaXB0LiAgVGhlcmUncyBubyBw b2ludCBpbiBsb2FkaW5nIHRoZSBzY3JpcHQgbXVsdGlwbGUgdGltZXMsCisrICAgYW5kIHRoZXJl IGNhbiBiZSBhIGxvdCBvZiBvYmpmaWxlcyBhbmQgc2NyaXB0cywgc28gd2Uga2VlcCB0cmFjayBv ZiBzY3JpcHRzCisrICAgbG9hZGVkIHRoaXMgd2F5LiAgKi8KKysKKytzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvCisreworKyAgLyogRm9yIGVhY2ggcHJvZ3JhbSBzcGFjZSB3ZSBrZWVwIHRy YWNrIG9mIGxvYWRlZCBzY3JpcHRzLiAgKi8KKysgIHN0cnVjdCBodGFiICpsb2FkZWRfc2NyaXB0 czsKKysKKysgIC8qIE5vbi16ZXJvIGlmIHdlJ3ZlIGlzc3VlZCB0aGUgd2FybmluZyBhYm91dCBh biBhdXRvLWxvYWQgc2NyaXB0IG5vdCBiZWluZworKyAgICAgZm91bmQuICBXZSBvbmx5IHdhbnQg dG8gaXNzdWUgdGhpcyB3YXJuaW5nIG9uY2UuICAqLworKyAgaW50IHNjcmlwdF9ub3RfZm91bmRf d2FybmluZ19wcmludGVkOworK307CisrCisrLyogT2JqZWN0cyBvZiB0aGlzIHR5cGUgYXJlIHN0 b3JlZCBpbiB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoIHRhYmxlLiAgKi8KKysKKytzdHJ1Y3QgbG9h ZGVkX3NjcmlwdAorK3sKKysgIC8qIE5hbWUgYXMgcHJvdmlkZWQgYnkgdGhlIG9iamZpbGUuICAq LworKyAgY29uc3QgY2hhciAqbmFtZTsKKysgIC8qIEZ1bGwgcGF0aCBuYW1lIG9yIE5VTEwgaWYg c2NyaXB0IHdhc24ndCBmb3VuZCAob3Igd2FzIG90aGVyd2lzZQorKyAgICAgaW5hY2Nlc3NpYmxl KS4gICovCisrICBjb25zdCBjaGFyICpmdWxsX3BhdGg7CisrfTsKKysKKysvKiBQZXItcHJvZ3Jh bS1zcGFjZSBkYXRhIGtleS4gICovCisrc3RhdGljIGNvbnN0IHN0cnVjdCBwcm9ncmFtX3NwYWNl X2RhdGEgKmF1dG9fbG9hZF9wc3BhY2VfZGF0YTsKKysKKytzdGF0aWMgdm9pZAorK2F1dG9fbG9h ZF9wc3BhY2VfZGF0YV9jbGVhbnVwIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlLCB2b2lk ICphcmcpCisreworKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKKysKKysg IGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRh KTsKKysgIGlmIChpbmZvICE9IE5VTEwpCisrICAgIHsKKysgICAgICBpZiAoaW5mby0+bG9hZGVk X3NjcmlwdHMpCisrCWh0YWJfZGVsZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0cyk7CisrICAgICAg eGZyZWUgKGluZm8pOworKyAgICB9CisrfQorKworKy8qIEdldCB0aGUgY3VycmVudCBhdXRvbG9h ZCBkYXRhLiAgSWYgbm9uZSBpcyBmb3VuZCB5ZXQsIGFkZCBpdCBub3cuICBUaGlzCisrICAgZnVu Y3Rpb24gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBvYmplY3QuICAqLworKworK3N0YXRpYyBzdHJ1 Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKKytnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChz dHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQorK3sKKysgIHN0cnVjdCBhdXRvX2xvYWRfcHNw YWNlX2luZm8gKmluZm87CisrCisrICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2Us IGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7CisrICBpZiAoaW5mbyA9PSBOVUxMKQorKyAgICB7Cisr ICAgICAgaW5mbyA9IFhaQUxMT0MgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8pOworKyAg ICAgIHNldF9wcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRh LCBpbmZvKTsKKysgICAgfQorKworKyAgcmV0dXJuIGluZm87CisrfQorKworKy8qIEhhc2ggZnVu Y3Rpb24gZm9yIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLworKworK3N0YXRpYyBoYXNodmFs X3QKKytoYXNoX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmRhdGEpCisreworKyAg Y29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmUgPSBkYXRhOworKworKyAgcmV0dXJuIGh0YWJf aGFzaF9zdHJpbmcgKGUtPm5hbWUpOworK30KKysKKysvKiBFcXVhbGl0eSBmdW5jdGlvbiBmb3Ig dGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCisrCisrc3RhdGljIGludAorK2VxX2xvYWRlZF9z Y3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCisreworKyAgY29uc3Qg c3RydWN0IGxvYWRlZF9zY3JpcHQgKmVhID0gYTsKKysgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2Ny aXB0ICplYiA9IGI7CisrCisrICByZXR1cm4gc3RyY21wIChlYS0+bmFtZSwgZWItPm5hbWUpID09 IDA7CisrfQorKworKy8qIEluaXRpYWxpemUgdGhlIHRhYmxlIHRvIHRyYWNrIGxvYWRlZCBzY3Jp cHRzLgorKyAgIEVhY2ggZW50cnkgaXMgaGFzaGVkIGJ5IHRoZSBmdWxsIHBhdGggbmFtZS4gICov CisrCisrc3RhdGljIHZvaWQKKytpbml0X2xvYWRlZF9zY3JpcHRzX2luZm8gKHN0cnVjdCBhdXRv X2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQorK3sKKysgIC8qIENob29zZSAzMSBhcyB0 aGUgc3RhcnRpbmcgc2l6ZSBvZiB0aGUgaGFzaCB0YWJsZSwgc29tZXdoYXQgYXJiaXRyYXJpbHku CisrICAgICBTcGFjZSBmb3IgZWFjaCBlbnRyeSBpcyBvYnRhaW5lZCB3aXRoIG9uZSBtYWxsb2Mg c28gd2UgY2FuIGZyZWUgdGhlbQorKyAgICAgZWFzaWx5LiAgKi8KKysKKysgIHBzcGFjZV9pbmZv LT5sb2FkZWRfc2NyaXB0cyA9IGh0YWJfY3JlYXRlICgzMSwKKysJCQkJCSAgICAgaGFzaF9sb2Fk ZWRfc2NyaXB0X2VudHJ5LAorKwkJCQkJICAgICBlcV9sb2FkZWRfc2NyaXB0X2VudHJ5LAorKwkJ CQkJICAgICB4ZnJlZSk7CisrCisrICBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJu aW5nX3ByaW50ZWQgPSBGQUxTRTsKKyt9CisrCisrLyogV3JhcHBlciBvbiBnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhIHRvIGFsc28gYWxsb2NhdGUgdGhlIGhhc2ggdGFibGUKKysgICBmb3IgbG9h ZGluZyBzY3JpcHRzLiAgKi8KKysKKytzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKKytn ZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFj ZSAqcHNwYWNlKQorK3sKKysgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKmluZm87Cisr CisrICBpbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAocHNwYWNlKTsKKysgIGlmIChp bmZvLT5sb2FkZWRfc2NyaXB0cyA9PSBOVUxMKQorKyAgICBpbml0X2xvYWRlZF9zY3JpcHRzX2lu Zm8gKGluZm8pOworKworKyAgcmV0dXJuIGluZm87CisrfQorKworKy8qIEFkZCBzY3JpcHQgTkFN RSB0byBoYXNoIHRhYmxlIG9mIFBTUEFDRV9JTkZPLgorKyAgIEZVTExfUEFUSCBpcyBOVUxMIGlm IHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLgorKyAgIFRoZSByZXN1bHQgaXMgdHJ1ZSBpZiB0aGUg c2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KKysKKytpbnQKKyttYXli ZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywg Y29uc3QgY2hhciAqbmFtZSwKKysJCSAgY29uc3QgY2hhciAqZnVsbF9wYXRoKQorK3sKKysgIHN0 cnVjdCBodGFiICpodGFiID0gcHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzOworKyAgc3RydWN0 IGxvYWRlZF9zY3JpcHQgKipzbG90LCBlbnRyeTsKKysgIGludCBpbl9oYXNoX3RhYmxlOworKwor KyAgZW50cnkubmFtZSA9IG5hbWU7CisrICBlbnRyeS5mdWxsX3BhdGggPSBmdWxsX3BhdGg7Cisr ICBzbG90ID0gKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBodGFiX2ZpbmRfc2xvdCAoaHRhYiwg JmVudHJ5LCBJTlNFUlQpOworKyAgaW5faGFzaF90YWJsZSA9ICpzbG90ICE9IE5VTEw7CisrCisr ICAvKiBJZiB0aGlzIHNjcmlwdCBpcyBub3QgaW4gdGhlIGhhc2ggdGFibGUsIGFkZCBpdC4gICov CisrCisrICBpZiAoISBpbl9oYXNoX3RhYmxlKQorKyAgICB7CisrICAgICAgY2hhciAqcDsKKysK KysgICAgICAvKiBBbGxvY2F0ZSBhbGwgc3BhY2UgaW4gb25lIGNodW5rIHNvIGl0J3MgZWFzaWVy IHRvIGZyZWUuICAqLworKyAgICAgICpzbG90ID0geG1hbGxvYyAoc2l6ZW9mICgqKnNsb3QpCisr CQkgICAgICAgKyBzdHJsZW4gKG5hbWUpICsgMQorKwkJICAgICAgICsgKGZ1bGxfcGF0aCAhPSBO VUxMID8gKHN0cmxlbiAoZnVsbF9wYXRoKSArIDEpIDogMCkpOworKyAgICAgIHAgPSAoKGNoYXIq KSAqc2xvdCkgKyBzaXplb2YgKCoqc2xvdCk7CisrICAgICAgc3RyY3B5IChwLCBuYW1lKTsKKysg ICAgICAoKnNsb3QpLT5uYW1lID0gcDsKKysgICAgICBpZiAoZnVsbF9wYXRoICE9IE5VTEwpCisr CXsKKysJICBwICs9IHN0cmxlbiAocCkgKyAxOworKwkgIHN0cmNweSAocCwgZnVsbF9wYXRoKTsK KysJICAoKnNsb3QpLT5mdWxsX3BhdGggPSBwOworKwl9CisrICAgICAgZWxzZQorKwkoKnNsb3Qp LT5mdWxsX3BhdGggPSBOVUxMOworKyAgICB9CisrCisrICByZXR1cm4gaW5faGFzaF90YWJsZTsK Kyt9CisrCisrLyogQ2xlYXIgdGhlIHRhYmxlIG9mIGxvYWRlZCBzZWN0aW9uIHNjcmlwdHMuICAq LworKworK3N0YXRpYyB2b2lkCisrY2xlYXJfc2VjdGlvbl9zY3JpcHRzICh2b2lkKQorK3sKKysg IHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UgPSBjdXJyZW50X3Byb2dyYW1fc3BhY2U7Cisr ICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOworKworKyAgaW5mbyA9IHByb2dy YW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEpOworKyAgaWYgKGlu Zm8gIT0gTlVMTCAmJiBpbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQorKyAgICB7CisrICAg ICAgaHRhYl9kZWxldGUgKGluZm8tPmxvYWRlZF9zY3JpcHRzKTsKKysgICAgICBpbmZvLT5sb2Fk ZWRfc2NyaXB0cyA9IE5VTEw7CisrICAgICAgaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJuaW5n X3ByaW50ZWQgPSBGQUxTRTsKKysgICAgfQorK30KKysKKysvKiBMb29rIGZvciB0aGUgYXV0by1s b2FkIHNjcmlwdCBhc3NvY2lhdGVkIHdpdGggT0JKRklMRSBhbmQgbG9hZCBpdC4gICovCisrCisr dm9pZAorK2F1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IGNvbnN0IGNoYXIgKnN1ZmZpeCkKKyt7CisrICBjaGFyICpyZWFsbmFtZTsKKysgIGNoYXIgKmZp bGVuYW1lLCAqZGVidWdmaWxlOworKyAgaW50IGxlbjsKKysgIEZJTEUgKmlucHV0OworKyAgc3Ry dWN0IGNsZWFudXAgKmNsZWFudXBzOworKworKyAgcmVhbG5hbWUgPSBnZGJfcmVhbHBhdGggKG9i amZpbGUtPm5hbWUpOworKyAgbGVuID0gc3RybGVuIChyZWFsbmFtZSk7CisrICBmaWxlbmFtZSA9 IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAoc3VmZml4KSArIDEpOworKyAgbWVtY3B5IChmaWxlbmFt ZSwgcmVhbG5hbWUsIGxlbik7CisrICBzdHJjcHkgKGZpbGVuYW1lICsgbGVuLCBzdWZmaXgpOwor KworKyAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7CisrICBtYWtl X2NsZWFudXAgKHhmcmVlLCByZWFsbmFtZSk7CisrCisrICBpbnB1dCA9IGZvcGVuIChmaWxlbmFt ZSwgInIiKTsKKysgIGRlYnVnZmlsZSA9IGZpbGVuYW1lOworKworKyAgaWYgKCFpbnB1dCAmJiBk ZWJ1Z19maWxlX2RpcmVjdG9yeSkKKysgICAgeworKyAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1l IGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZGlyZWN0b3J5LiAgKi8KKysgICAgICBk ZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGZpbGVuYW1lKQorKwkJCSAgICsgc3RybGVuIChk ZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAxKTsKKysgICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVi dWdfZmlsZV9kaXJlY3RvcnkpOworKyAgICAgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3 ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLworKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBm aWxlbmFtZSk7CisrCisrICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKKysg ICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7CisrICAgIH0KKysKKysgIGlmICgh aW5wdXQgJiYgZ2RiX2RhdGFkaXIpCisrICAgIHsKKysgICAgICAvKiBBbHNvIHRyeSB0aGUgc2Ft ZSBmaWxlIGluIGEgc3ViZGlyZWN0b3J5IG9mIGdkYidzIGRhdGEKKysJIGRpcmVjdG9yeS4gICov CisrICAgICAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVuIChnZGJfZGF0YWRpcikgKyBzdHJs ZW4gKGZpbGVuYW1lKQorKwkJCSAgICsgc3RybGVuICgiL2F1dG8tbG9hZCIpICsgMSk7CisrICAg ICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGdkYl9kYXRhZGlyKTsKKysgICAgICBzdHJjYXQgKGRlYnVn ZmlsZSwgIi9hdXRvLWxvYWQiKTsKKysgICAgICAvKiBGSUxFTkFNRSBpcyBhYnNvbHV0ZSwgc28g d2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJlLiAgKi8KKysgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwg ZmlsZW5hbWUpOworKworKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGRlYnVnZmlsZSk7Cisr ICAgICAgaW5wdXQgPSBmb3BlbiAoZGVidWdmaWxlLCAiciIpOworKyAgICB9CisrCisrICBpZiAo aW5wdXQpCisrICAgIHsKKysgICAgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3Bh Y2VfaW5mbzsKKysKKysgICAgICBtYWtlX2NsZWFudXBfZmNsb3NlIChpbnB1dCk7CisrCisrICAg ICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRv LWxvYWQtc2NyaXB0cyIKKysJIGNhbiBwcmludCBpdC4gICovCisrICAgICAgcHNwYWNlX2luZm8g PQorKwlnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dy YW1fc3BhY2UpOworKyAgICAgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBkZWJ1Z2Zp bGUsIGRlYnVnZmlsZSk7CisrCisrICAgICAgLyogVG8gcHJlc2VydmUgZXhpc3RpbmcgYmVoYXZp b3VyIHdlIGRvbid0IGNoZWNrIGZvciB3aGV0aGVyIHRoZQorKwkgc2NyaXB0IHdhcyBhbHJlYWR5 IGluIHRoZSB0YWJsZSwgYW5kIGFsd2F5cyBsb2FkIGl0LgorKwkgSXQncyBoaWdobHkgdW5saWtl bHkgdGhhdCB3ZSdkIGV2ZXIgbG9hZCBpdCB0d2ljZSwKKysJIGFuZCB0aGVzZSBzY3JpcHRzIGFy ZSByZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVyIG11bHRpcGxlCisrCSBsb2FkcyBhbnl3 YXkuICAqLworKyAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxl LCBpbnB1dCwgZGVidWdmaWxlKTsKKysgICAgfQorKworKyAgZG9fY2xlYW51cHMgKGNsZWFudXBz KTsKKyt9CisrCisrLyogVGhpcyBpcyBhIG5ld19vYmpmaWxlIG9ic2VydmVyIGNhbGxiYWNrIHRv IGF1dG8tbG9hZCBzY3JpcHRzLgorKworKyAgIFR3byBmbGF2b3JzIG9mIGF1dG8tbG9hZGVkIHNj cmlwdHMgYXJlIHN1cHBvcnRlZC4KKysgICAxKSBiYXNlZCBvbiB0aGUgcGF0aCB0byB0aGUgb2Jq ZmlsZQorKyAgIDIpIGZyb20gLmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24gICovCisrCisrc3Rh dGljIHZvaWQKKythdXRvX2xvYWRfbmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl KQorK3sKKysgIGlmICghb2JqZmlsZSkKKysgICAgeworKyAgICAgIC8qIE9CSkZJTEUgaXMgTlVM TCB3aGVuIGxvYWRpbmcgYSBuZXcgIm1haW4iIHN5bWJvbC1maWxlLiAgKi8KKysgICAgICBjbGVh cl9zZWN0aW9uX3NjcmlwdHMgKCk7CisrICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICBsb2Fk X2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7CisrfQorKworKy8qIENvbGxlY3Qg c2NyaXB0cyB0byBiZSBwcmludGVkIGluIGEgdmVjLiAgKi8KKysKKyt0eXBlZGVmIHN0cnVjdCBs b2FkZWRfc2NyaXB0ICpsb2FkZWRfc2NyaXB0X3B0cjsKKytERUZfVkVDX1AgKGxvYWRlZF9zY3Jp cHRfcHRyKTsKKysKKysvKiBUcmF2ZXJzYWwgZnVuY3Rpb24gZm9yIGh0YWJfdHJhdmVyc2UuCisr ICAgQ29sbGVjdCB0aGUgZW50cnkgaWYgaXQgbWF0Y2hlcyB0aGUgcmVnZXhwLiAgKi8KKysKKytz dGF0aWMgaW50CisrY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzICh2b2lkICoqc2xvdCwgdm9pZCAq aW5mbykKKyt7CisrICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaXB0ID0gKnNsb3Q7CisrICBW RUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqKnNjcmlwdHNfcHRyID0gaW5mbzsKKysKKysgIGlmIChy ZV9leGVjIChzY3JpcHQtPm5hbWUpKQorKyAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0 X3B0ciwgKnNjcmlwdHNfcHRyLCBzY3JpcHQpOworKworKyAgcmV0dXJuIDE7CisrfQorKworKy8q IFByaW50IFNDUklQVC4gICovCisrCisrc3RhdGljIHZvaWQKKytwcmludF9zY3JpcHQgKHN0cnVj dCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQpCisreworKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBj dXJyZW50X3Vpb3V0OworKyAgc3RydWN0IGNsZWFudXAgKmNoYWluOworKworKyAgY2hhaW4gPSBt YWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOworKworKyAg dWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxfcGF0aCA/ ICJZZXMiIDogIk1pc3NpbmciKTsKKysgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAic2Ny aXB0Iiwgc2NyaXB0LT5uYW1lKTsKKysgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7CisrCisr ICAvKiBJZiB0aGUgbmFtZSBpc24ndCB0aGUgZnVsbCBwYXRoLCBwcmludCBpdCB0b28uICAqLwor KyAgaWYgKHNjcmlwdC0+ZnVsbF9wYXRoICE9IE5VTEwKKysgICAgICAmJiBzdHJjbXAgKHNjcmlw dC0+bmFtZSwgc2NyaXB0LT5mdWxsX3BhdGgpICE9IDApCisrICAgIHsKKysgICAgICB1aV9vdXRf dGV4dCAodWlvdXQsICJcdGZ1bGwgbmFtZTogIik7CisrICAgICAgdWlfb3V0X2ZpZWxkX3N0cmlu ZyAodWlvdXQsICJmdWxsX3BhdGgiLCBzY3JpcHQtPmZ1bGxfcGF0aCk7CisrICAgICAgdWlfb3V0 X3RleHQgKHVpb3V0LCAiXG4iKTsKKysgICAgfQorKworKyAgZG9fY2xlYW51cHMgKGNoYWluKTsK Kyt9CisrCisrLyogSGVscGVyIGZvciBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIHRvIHNvcnQgdGhl IHNjcmlwdHMgYnkgbmFtZS4gICovCisrCisrc3RhdGljIGludAorK3NvcnRfc2NyaXB0c19ieV9u YW1lIChjb25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCisreworKyAgY29uc3Qgc3RydWN0 IGxvYWRlZF9zY3JpcHQgKmEgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBhcDsK KysgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpiID0gKihjb25zdCBzdHJ1Y3QgbG9hZGVk X3NjcmlwdCAqKikgYnA7CisrCisrICByZXR1cm4gRklMRU5BTUVfQ01QIChhLT5uYW1lLCBiLT5u YW1lKTsKKyt9CisrCisrLyogImluZm8gYXV0by1sb2FkLXNjcmlwdHMiIGNvbW1hbmQuICAqLwor KworK3N0YXRpYyB2b2lkCisraW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwg aW50IGZyb21fdHR5KQorK3sKKysgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91 dDsKKysgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworKyAgc3Ry dWN0IGNsZWFudXAgKnNjcmlwdF9jaGFpbjsKKysgIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICpz Y3JpcHRzOworKyAgaW50IG5yX3NjcmlwdHM7CisrCisrICBkb250X3JlcGVhdCAoKTsKKysKKysg IHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAoY3VycmVudF9wcm9ncmFt X3NwYWNlKTsKKysKKysgIGlmIChwYXR0ZXJuICYmICpwYXR0ZXJuKQorKyAgICB7CisrICAgICAg Y2hhciAqcmVfZXJyID0gcmVfY29tcCAocGF0dGVybik7CisrCisrICAgICAgaWYgKHJlX2VycikK KysJZXJyb3IgKF8oIkludmFsaWQgcmVnZXhwOiAlcyIpLCByZV9lcnIpOworKyAgICB9CisrICBl bHNlCisrICAgIHsKKysgICAgICByZV9jb21wICgiIik7CisrICAgIH0KKysKKysgIC8qIFdlIG5l ZWQgdG8ga25vdyB0aGUgbnVtYmVyIG9mIHJvd3MgYmVmb3JlIHdlIGJ1aWxkIHRoZSB0YWJsZS4K KysgICAgIFBsdXMgd2Ugd2FudCB0byBzb3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUuCisrICAgICBT byBmaXJzdCB0cmF2ZXJzZSB0aGUgaGFzaCB0YWJsZSBjb2xsZWN0aW5nIHRoZSBtYXRjaGluZyBz Y3JpcHRzLiAgKi8KKysKKysgIHNjcmlwdHMgPSBWRUNfYWxsb2MgKGxvYWRlZF9zY3JpcHRfcHRy LCAxMCk7CisrICBzY3JpcHRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChsb2Fk ZWRfc2NyaXB0X3B0ciksICZzY3JpcHRzKTsKKysKKysgIGlmIChwc3BhY2VfaW5mbyAhPSBOVUxM ICYmIHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQorKyAgICB7CisrICAgICAg aW1tZWRpYXRlX3F1aXQrKzsKKysgICAgICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3JpcHRzIGFz IFZFQ19zYWZlX3B1c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAqLworKyAgICAgIGh0YWJfdHJhdmVy c2Vfbm9yZXNpemUgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywKKysJCQkgICAgICBjb2xs ZWN0X21hdGNoaW5nX3NjcmlwdHMsICZzY3JpcHRzKTsKKysgICAgICBpbW1lZGlhdGVfcXVpdC0t OworKyAgICB9CisrCisrICBucl9zY3JpcHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9w dHIsIHNjcmlwdHMpOworKyAgbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQgKHVp b3V0LCAyLCBucl9zY3JpcHRzLAorKwkJCQkgICAgICAgIkF1dG9Mb2FkZWRTY3JpcHRzVGFibGUi KTsKKysKKysgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3LCB1aV9sZWZ0LCAibG9hZGVk IiwgIkxvYWRlZCIpOworKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDcwLCB1aV9sZWZ0 LCAic2NyaXB0IiwgIlNjcmlwdCIpOworKyAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0KTsKKysK KysgIGlmIChucl9zY3JpcHRzID4gMCkKKysgICAgeworKyAgICAgIGludCBpOworKyAgICAgIGxv YWRlZF9zY3JpcHRfcHRyIHNjcmlwdDsKKysKKysgICAgICBxc29ydCAoVkVDX2FkZHJlc3MgKGxv YWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKSwKKysJICAgICBWRUNfbGVuZ3RoIChsb2FkZWRfc2Ny aXB0X3B0ciwgc2NyaXB0cyksCisrCSAgICAgc2l6ZW9mIChsb2FkZWRfc2NyaXB0X3B0ciksIHNv cnRfc2NyaXB0c19ieV9uYW1lKTsKKysgICAgICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAobG9h ZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMsIGksIHNjcmlwdCk7ICsraSkKKysJcHJpbnRfc2NyaXB0 IChzY3JpcHQpOworKyAgICB9CisrCisrICBkb19jbGVhbnVwcyAoc2NyaXB0X2NoYWluKTsKKysK KysgIGlmIChucl9zY3JpcHRzID09IDApCisrICAgIHsKKysgICAgICBpZiAocGF0dGVybiAmJiAq cGF0dGVybikKKysJdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlw dHMgbWF0Y2hpbmcgJXMuXG4iLAorKwkJCXBhdHRlcm4pOworKyAgICAgIGVsc2UKKysJdWlfb3V0 X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlwdHMuXG4iKTsKKysgICAgfQor K30KKysKKysvKiBSZXR1cm4gbm9uLXplcm8gaWYgU0NSSVBUX05PVF9GT1VORF9XQVJOSU5HX1BS SU5URUQgb2YgUFNQQUNFX0lORk8gd2FzIHVuc2V0CisrICAgYmVmb3JlIGNhbGxpbmcgdGhpcyBm dW5jdGlvbi4gIEFsd2F5cyBzZXQgU0NSSVBUX05PVF9GT1VORF9XQVJOSU5HX1BSSU5URUQKKysg ICBvZiBQU1BBQ0VfSU5GTy4gICovCisrCisraW50Cisrc2NyaXB0X25vdF9mb3VuZF93YXJuaW5n X3ByaW50IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbykKKyt7Cisr ICBpbnQgcmV0dmFsID0gIXBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJp bnRlZDsKKysKKysgIHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRl ZCA9IDE7CisrCisrICByZXR1cm4gcmV0dmFsOworK30KKysKKyt2b2lkIF9pbml0aWFsaXplX2F1 dG9fbG9hZCAodm9pZCk7CisrCisrdm9pZAorK19pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkK Kyt7CisrICBhdXRvX2xvYWRfcHNwYWNlX2RhdGEKKysgICAgPSByZWdpc3Rlcl9wcm9ncmFtX3Nw YWNlX2RhdGFfd2l0aF9jbGVhbnVwIChhdXRvX2xvYWRfcHNwYWNlX2RhdGFfY2xlYW51cCk7Cisr CisrICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKGF1dG9fbG9hZF9uZXdfb2JqZmlsZSk7 CisrCisrICBhZGRfaW5mbyAoImF1dG8tbG9hZC1zY3JpcHRzIiwKKysJICAgIGluZm9fYXV0b19s b2FkX3NjcmlwdHMsCisrCSAgICBfKCJQcmludCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxv YWRlZCBzY3JpcHRzLlxuXAorK1VzYWdlOiBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBd IikpOworK30KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAorPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6 MjY6MjkuMDQ5MTIwMjEyICswMjAwCitAQCAtMCwwICsxLDM2IEBACisrLyogR0RCIHJvdXRpbmVz IGZvciBzdXBwb3J0aW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuCisrCisrICAgQ29weXJpZ2h0IChD KSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCisrCisrI2lmbmRlZiBBVVRPX0xPQURfSAorKyNkZWZpbmUgQVVUT19MT0FEX0ggMQorKwor K3N0cnVjdCBwcm9ncmFtX3NwYWNlOworKworK2V4dGVybiBpbnQgZ2RicHlfZ2xvYmFsX2F1dG9f bG9hZDsKKysKKytleHRlcm4gc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCisrICBnZXRf YXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAq cHNwYWNlKTsKKytleHRlcm4gaW50IG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLAorKwkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29u c3QgY2hhciAqZnVsbF9wYXRoKTsKKytleHRlcm4gdm9pZCBhdXRvX2xvYWRfb2JqZmlsZV9zY3Jp cHQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJCQkgICAgICBjb25zdCBjaGFyICpzdWZm aXgpOworK2V4dGVybiBpbnQKKysgIHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAoc3Ry dWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8pOworKworKyNlbmRpZiAvKiBB VVRPX0xPQURfSCAqLworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYi1nZGIuZ2Ri LmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZ2RiLWdkYi5nZGIuaW4JMjAx Mi0wNC0xOCAwMDoyNjoyOS4wNDkxMjAyMTIgKzAyMDAKK0BAIC0wLDAgKzEsMzQgQEAKKytlY2hv IFNldHRpbmcgdXAgdGhlIGVudmlyb25tZW50IGZvciBkZWJ1Z2dpbmcgZ2RiLlxuCisrCisrc2V0 IGNvbXBsYWludHMgMQorKworK2IgaW50ZXJuYWxfZXJyb3IKKysKKytiIGluZm9fY29tbWFuZAor K2NvbW1hbmRzCisrCXNpbGVudAorKwlyZXR1cm4KKytlbmQKKysKKytkaXIgQHNyY2RpckAvLi4v bGliaWJlcnR5CisrZGlyIEBzcmNkaXJALy4uL2JmZAorK2RpciBAc3JjZGlyQAorK2RpciAuCisr c2V0IHByb21wdCAodG9wLWdkYikgCisrCisrZGVmaW5lIHBkaWUKKysgIGlmICRhcmdjID09IDEK KysgICAgY2FsbCBkdW1wX2RpZSAoJGFyZzAsIDEpCisrICBlbHNlCisrICAgIGlmICRhcmdjID09 IDIKKysgICAgICBjYWxsIGR1bXBfZGllICgkYXJnMCwgJGFyZzEpCisrICAgIGVsc2UKKysgICAg ICBwcmludGYgIlN5bnRheDogcGRpZSBkaWUgW2RlcHRoXVxuIgorKyAgICBlbmQKKysgIGVuZAor K2VuZAorKworK2RvY3VtZW50IHBkaWUKKytQcmV0dHkgcHJpbnQgYSBEV0FSRiBESUUuCisrU3lu dGF4OiBwZGllIGRpZSBbZGVwdGhdCisrZW5kCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL01ha2VmaWxlLmluCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTWFrZWZpbGUuaW4JMjAxMi0wNC0xOCAwMDoyNjo1My40 NTUwNTgwMzcgKzAyMDAKK0BAIC02ODAsNyArNjgwLDcgQEAgVEFSR0VUX0ZMQUdTX1RPX1BBU1Mg PSBcCisgIyBTRklMRVMgaXMgdXNlZCBpbiBidWlsZGluZyB0aGUgZGlzdHJpYnV0aW9uIGFyY2hp dmUuCisgCisgU0ZJTEVTID0gYWRhLWV4cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFk YS12YWxwcmludC5jIGFkYS10YXNrcy5jIFwKKy0JYWRkcm1hcC5jIFwKKysJYWRkcm1hcC5jIGF1 dG8tbG9hZC5jIFwKKyAJYXV4di5jIGF4LWdlbmVyYWwuYyBheC1nZGIuYyBcCisgCWJjYWNoZS5j IFwKKyAJYmZkLXRhcmdldC5jIFwKK0BAIC04MTksNyArODE5LDcgQEAgc29saWItZGFyd2luLmgg c29saWItaWE2NC1ocHV4Lmggc29saWItcworIGdudWxpYi9leHRyYS9hcmctbm9ubnVsbC5oIGdu dWxpYi9leHRyYS9jKytkZWZzLmggZ251bGliL2V4dHJhL3dhcm4tb24tdXNlLmggXAorIGdudWxp Yi9zdGRkZWYuaW4uaCBpbmxpbmUtZnJhbWUuaCBza2lwLmggc3RhcC1wcm9iZS5oIFwKKyBjb21t b24vY29tbW9uLXV0aWxzLmggY29tbW9uL3htbC11dGlscy5oIGNvbW1vbi9idWZmZXIuaCBjb21t b24vcHRpZC5oIFwKKy1jb21tb24vbGludXgtb3NkYXRhLmggZ2RiLWRsZmNuLmgKKytjb21tb24v bGludXgtb3NkYXRhLmggZ2RiLWRsZmNuLmggYXV0by1sb2FkLmgKKyAKKyAjIEhlYWRlciBmaWxl cyB0aGF0IGFscmVhZHkgaGF2ZSBzcmNkaXIgaW4gdGhlbSwgb3Igd2hpY2ggYXJlIGluIG9iamRp ci4KKyAKK0BAIC04NTEsNyArODUxLDcgQEAgQ09NTU9OX09CUyA9ICQoREVQRklMRVMpICQoQ09O RklHX09CUykgJAorIAl2ZXJzaW9uLm8gXAorIAlhbm5vdGF0ZS5vIFwKKyAJYWRkcm1hcC5vIFwK Ky0JYXV4di5vIFwKKysJYXV0by1sb2FkLm8gYXV4di5vIFwKKyAJYmZkLXRhcmdldC5vIFwKKyAJ YmxvY2tmcmFtZS5vIGJyZWFrcG9pbnQubyBmaW5kdmFyLm8gcmVnY2FjaGUubyBcCisgCWNoYXJz ZXQubyBjb250aW51YXRpb25zLm8gY29yZWxvdy5vIGRpc2FzbS5vIGR1bW15LWZyYW1lLm8gZGZw Lm8gXAorQEAgLTEyNTUsNyArMTI1NSw3IEBAIGRpc3RjbGVhbjogY2xlYW4KKyAJcm0gLWYgZ2Ri c2VydmVyL2NvbmZpZy5zdGF0dXMgZ2Ric2VydmVyL2NvbmZpZy5sb2cKKyAJcm0gLWYgZ2Ric2Vy dmVyL3RtLmggZ2Ric2VydmVyL3htLmggZ2Ric2VydmVyL25tLmgKKyAJcm0gLWYgZ2Ric2VydmVy L01ha2VmaWxlIGdkYnNlcnZlci9jb25maWcuY2FjaGUKKy0Jcm0gLWYgbm0uaCBjb25maWcuc3Rh dHVzIGNvbmZpZy5oIHN0YW1wLWggLmdkYmluaXQgaml0LXJlYWRlci5oCisrCXJtIC1mIG5tLmgg Y29uZmlnLnN0YXR1cyBjb25maWcuaCBzdGFtcC1oIGdkYi1nZGIuZ2RiIGppdC1yZWFkZXIuaAor IAlybSAtZiB5Lm91dHB1dCB5YWNjLmFjdHMgeWFjYy50bXAgeS50YWIuaAorIAlybSAtZiBjb25m aWcubG9nIGNvbmZpZy5jYWNoZQorIAlybSAtZiBNYWtlZmlsZQorSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6MjY6 MjkuMDUzMTIwMjAyICswMjAwCitAQCAtMTY4MzksNyArMTY4MzksNyBAQCBhY19jb25maWdfbGlu a3M9IiRhY19jb25maWdfbGlua3MgJGFjX2NvCisgJGFzX2VjaG8gIiNkZWZpbmUgR0RCX0RFRkFV TFRfSE9TVF9DSEFSU0VUIFwiVVRGLThcIiIgPj5jb25mZGVmcy5oCisgCisgCistYWNfY29uZmln X2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlIC5nZGJpbml0OmdkYmluaXQuaW4gZG9j L01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSIKKythY19j b25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUgZ2RiLWdkYi5nZGIgZG9jL01h a2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSIKKyAKKyBhY19j b25maWdfY29tbWFuZHM9IiRhY19jb25maWdfY29tbWFuZHMgZGVmYXVsdCIKKyAKK0BAIC0xNzYw NSw3ICsxNzYwNSw3IEBAIGRvCisgICAgICJqaXQtcmVhZGVyLmgiKSBDT05GSUdfRklMRVM9IiRD T05GSUdfRklMRVMgaml0LXJlYWRlci5oOmppdC1yZWFkZXIuaW4iIDs7CisgICAgICIkYWNfY29u ZmlnX2xpbmtzXzEiKSBDT05GSUdfTElOS1M9IiRDT05GSUdfTElOS1MgJGFjX2NvbmZpZ19saW5r c18xIiA7OworICAgICAiTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgTWFr ZWZpbGUiIDs7CistICAgICIuZ2RiaW5pdCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyAu Z2RiaW5pdDpnZGJpbml0LmluIiA7OworKyAgICAiZ2RiLWdkYi5nZGIiKSBDT05GSUdfRklMRVM9 IiRDT05GSUdfRklMRVMgZ2RiLWdkYi5nZGIiIDs7CisgICAgICJkb2MvTWFrZWZpbGUiKSBDT05G SUdfRklMRVM9IiRDT05GSUdfRklMRVMgZG9jL01ha2VmaWxlIiA7OworICAgICAiZ251bGliL01h a2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdudWxpYi9NYWtlZmlsZSIgOzsK KyAgICAgImRhdGEtZGlyZWN0b3J5L01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJ TEVTIGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlIiA7OworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMTggMDA6 MjY6MjkuMDUzMTIwMjAyICswMjAwCitAQCAtMjQyMiw3ICsyNDIyLDcgQEAgZG5sICBBdCB0aGUg bW9tZW50LCB3ZSBqdXN0IGFzc3VtZSBpdCdzCisgQUNfREVGSU5FKEdEQl9ERUZBVUxUX0hPU1Rf Q0hBUlNFVCwgIlVURi04IiwKKyAgICAgICAgICAgW0RlZmluZSB0byBiZSBhIHN0cmluZyBuYW1p bmcgdGhlIGRlZmF1bHQgaG9zdCBjaGFyYWN0ZXIgc2V0Ll0pCisgCistQUNfT1VUUFVUKE1ha2Vm aWxlIC5nZGJpbml0OmdkYmluaXQuaW4gZG9jL01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRh LWRpcmVjdG9yeS9NYWtlZmlsZSwKKytBQ19PVVRQVVQoTWFrZWZpbGUgZ2RiLWdkYi5nZGIgZG9j L01ha2VmaWxlIGdudWxpYi9NYWtlZmlsZSBkYXRhLWRpcmVjdG9yeS9NYWtlZmlsZSwKKyBbCisg Y2FzZSB4JENPTkZJR19IRUFERVJTIGluCisgeGNvbmZpZy5oOmNvbmZpZy5pbikKK0luZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUw LjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCAr MDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjI2 OjI5LjA1NDEyMDE5OSArMDIwMAorQEAgLTQyLDYgKzQyLDcgQEAKKyAjaW5jbHVkZSAiY2xpL2Ns aS1jbWRzLmgiCisgI2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIKKyAjaW5jbHVkZSAib2JqZmls ZXMuaCIKKysjaW5jbHVkZSAiYXV0by1sb2FkLmgiCisgCisgLyogVGhlIHNlbGVjdGVkIGludGVy cHJldGVyLiAgVGhpcyB3aWxsIGJlIHVzZWQgYXMgYSBzZXQgY29tbWFuZAorICAgIHZhcmlhYmxl LCBzbyBpdCBzaG91bGQgYWx3YXlzIGJlIG1hbGxvYydlZCAtIHNpbmNlCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0w NC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTQxMjAxOTkgKzAy MDAKK0BAIC0xOCwzMCArMTgsMTQgQEAKKyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisgCisgI2luY2x1 ZGUgImRlZnMuaCIKKy0jaW5jbHVkZSAiZmlsZW5hbWVzLmgiCisgI2luY2x1ZGUgImdkYl9zdHJp bmcuaCIKKy0jaW5jbHVkZSAiZ2RiX3JlZ2V4LmgiCisgI2luY2x1ZGUgInRvcC5oIgorICNpbmNs dWRlICJleGNlcHRpb25zLmgiCistI2luY2x1ZGUgImNvbW1hbmQuaCIKKyAjaW5jbHVkZSAiZ2Ri Y21kLmgiCistI2luY2x1ZGUgIm9ic2VydmVyLmgiCistI2luY2x1ZGUgInByb2dzcGFjZS5oIgor ICNpbmNsdWRlICJvYmpmaWxlcy5oIgorICNpbmNsdWRlICJweXRob24uaCIKKyAjaW5jbHVkZSAi Y2xpL2NsaS1jbWRzLmgiCistCistLyogSW50ZXJuYWwtdXNlIGZsYWcgdG8gZW5hYmxlL2Rpc2Fi bGUgYXV0by1sb2FkaW5nLgorLSAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2Fk IHB5dGhvbiBjb2RlIHdoZW4gYW4gb2JqZmlsZSBpcyBvcGVuZWQsCistICAgZmFsc2Ugb3RoZXJ3 aXNlLgorLQorLSAgIEJvdGggYXV0b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9f bG9hZCBtdXN0IGJlIHRydWUgdG8gZW5hYmxlCistICAgYXV0by1sb2FkaW5nLgorLQorLSAgIFRo aXMgZmxhZyBleGlzdHMgdG8gZmFjaWxpdGF0ZSBkZWZlcnJpbmcgYXV0by1sb2FkaW5nIGR1cmlu ZyBzdGFydC11cAorLSAgIHVudGlsIGFmdGVyIC4vLmdkYmluaXQgaGFzIGJlZW4gcmVhZDsgaXQg bWF5IGF1Z21lbnQgdGhlIHNlYXJjaCBkaXJlY3RvcmllcworLSAgIHVzZWQgdG8gZmluZCB0aGUg c2NyaXB0cy4gICovCistaW50IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQgPSAxOworKyNpbmNsdWRl ICJhdXRvLWxvYWQuaCIKKyAKKyAjaWZkZWYgSEFWRV9QWVRIT04KKyAKK0BAIC02MCwzMiArNDQs NiBAQCBpbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7CisgICAgVGhlIGxlYWRpbmcgYnl0 ZSBpcyB0byBhbGxvdyB1cHdhcmQgY29tcGF0aWJsZSBleHRlbnNpb25zLiAgKi8KKyAjZGVmaW5l IEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FICIuZGVidWdfZ2RiX3NjcmlwdHMiCisgCistLyogRm9y IHNjcmlwdHMgc3BlY2lmaWVkIGluIC5kZWJ1Z19nZGJfc2NyaXB0cywgbXVsdGlwbGUgb2JqZmls ZXMgbWF5IGxvYWQKKy0gICB0aGUgc2FtZSBzY3JpcHQuICBUaGVyZSdzIG5vIHBvaW50IGluIGxv YWRpbmcgdGhlIHNjcmlwdCBtdWx0aXBsZSB0aW1lcywKKy0gICBhbmQgdGhlcmUgY2FuIGJlIGEg bG90IG9mIG9iamZpbGVzIGFuZCBzY3JpcHRzLCBzbyB3ZSBrZWVwIHRyYWNrIG9mIHNjcmlwdHMK Ky0gICBsb2FkZWQgdGhpcyB3YXkuICAqLworLQorLXN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2lu Zm8KKy17CistICAvKiBGb3IgZWFjaCBwcm9ncmFtIHNwYWNlIHdlIGtlZXAgdHJhY2sgb2YgbG9h ZGVkIHNjcmlwdHMuICAqLworLSAgc3RydWN0IGh0YWIgKmxvYWRlZF9zY3JpcHRzOworLQorLSAg LyogTm9uLXplcm8gaWYgd2UndmUgaXNzdWVkIHRoZSB3YXJuaW5nIGFib3V0IGFuIGF1dG8tbG9h ZCBzY3JpcHQgbm90IGJlaW5nCistICAgICBmb3VuZC4gIFdlIG9ubHkgd2FudCB0byBpc3N1ZSB0 aGlzIHdhcm5pbmcgb25jZS4gICovCistICBpbnQgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3By aW50ZWQ7CistfTsKKy0KKy0vKiBPYmplY3RzIG9mIHRoaXMgdHlwZSBhcmUgc3RvcmVkIGluIHRo ZSBsb2FkZWQgc2NyaXB0IGhhc2ggdGFibGUuICAqLworLQorLXN0cnVjdCBsb2FkZWRfc2NyaXB0 CisteworLSAgLyogTmFtZSBhcyBwcm92aWRlZCBieSB0aGUgb2JqZmlsZS4gICovCistICBjb25z dCBjaGFyICpuYW1lOworLSAgLyogRnVsbCBwYXRoIG5hbWUgb3IgTlVMTCBpZiBzY3JpcHQgd2Fz bid0IGZvdW5kIChvciB3YXMgb3RoZXJ3aXNlCistICAgICBpbmFjY2Vzc2libGUpLiAgKi8KKy0g IGNvbnN0IGNoYXIgKmZ1bGxfcGF0aDsKKy19OworLQorIC8qIFVzZXItc2V0dGFibGUgb3B0aW9u IHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZzoKKyAgICBzZXQgYXV0by1sb2FkLXNjcmlw dHMgb258b2ZmCisgICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2Np YXRlZCBzY3JpcHRzIHdoZW4gYW4gb2JqZmlsZQorQEAgLTk3LDEzNiArNTUsNiBAQCBzdHJ1Y3Qg bG9hZGVkX3NjcmlwdAorICAgIFRoZSBmYWN0IHRoYXQgaXQgbGl2ZXMgaGVyZSBpcyBqdXN0IGFu IGltcGxlbWVudGF0aW9uIGRldGFpbC4gICovCisgc3RhdGljIGludCBhdXRvX2xvYWRfc2NyaXB0 cyA9IDE7CisgCistLyogUGVyLXByb2dyYW0tc3BhY2UgZGF0YSBrZXkuICAqLworLXN0YXRpYyBj b25zdCBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZV9kYXRhICphdXRvX2xvYWRfcHNwYWNlX2RhdGE7Cist Cistc3RhdGljIHZvaWQKKy1hdXRvX2xvYWRfcHNwYWNlX2RhdGFfY2xlYW51cCAoc3RydWN0IHBy b2dyYW1fc3BhY2UgKnBzcGFjZSwgdm9pZCAqYXJnKQorLXsKKy0gIHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKmluZm87CistCistICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3Bh Y2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7CistICBpZiAoaW5mbyAhPSBOVUxMKQorLSAgICB7 CistICAgICAgaWYgKGluZm8tPmxvYWRlZF9zY3JpcHRzKQorLQlodGFiX2RlbGV0ZSAoaW5mby0+ bG9hZGVkX3NjcmlwdHMpOworLSAgICAgIHhmcmVlIChpbmZvKTsKKy0gICAgfQorLX0KKy0KKy0v KiBHZXQgdGhlIGN1cnJlbnQgYXV0b2xvYWQgZGF0YS4gIElmIG5vbmUgaXMgZm91bmQgeWV0LCBh ZGQgaXQgbm93LiAgVGhpcworLSAgIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgb2Jq ZWN0LiAgKi8KKy0KKy1zdGF0aWMgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCistZ2V0 X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSkKKy17 CistICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOworLQorLSAgaW5mbyA9IHBy b2dyYW1fc3BhY2VfZGF0YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEpOworLSAgaWYg KGluZm8gPT0gTlVMTCkKKy0gICAgeworLSAgICAgIGluZm8gPSBYWkFMTE9DIChzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvKTsKKy0gICAgICBzZXRfcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3Bh Y2UsIGF1dG9fbG9hZF9wc3BhY2VfZGF0YSwgaW5mbyk7CistICAgIH0KKy0KKy0gIHJldHVybiBp bmZvOworLX0KKy0KKy0vKiBIYXNoIGZ1bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNjcmlwdCBoYXNo LiAgKi8KKy0KKy1zdGF0aWMgaGFzaHZhbF90CistaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5IChj b25zdCB2b2lkICpkYXRhKQorLXsKKy0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplID0g ZGF0YTsKKy0KKy0gIHJldHVybiBodGFiX2hhc2hfc3RyaW5nIChlLT5uYW1lKTsKKy19CistCist LyogRXF1YWxpdHkgZnVuY3Rpb24gZm9yIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLworLQor LXN0YXRpYyBpbnQKKy1lcV9sb2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICphLCBjb25z dCB2b2lkICpiKQorLXsKKy0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYSA9IGE7Cist ICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZWIgPSBiOworLQorLSAgcmV0dXJuIHN0cmNt cCAoZWEtPm5hbWUsIGViLT5uYW1lKSA9PSAwOworLX0KKy0KKy0vKiBJbml0aWFsaXplIHRoZSB0 YWJsZSB0byB0cmFjayBsb2FkZWQgc2NyaXB0cy4KKy0gICBFYWNoIGVudHJ5IGlzIGhhc2hlZCBi eSB0aGUgZnVsbCBwYXRoIG5hbWUuICAqLworLQorLXN0YXRpYyB2b2lkCistaW5pdF9sb2FkZWRf c2NyaXB0c19pbmZvIChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbykK Ky17CistICAvKiBDaG9vc2UgMzEgYXMgdGhlIHN0YXJ0aW5nIHNpemUgb2YgdGhlIGhhc2ggdGFi bGUsIHNvbWV3aGF0IGFyYml0cmFyaWx5LgorLSAgICAgU3BhY2UgZm9yIGVhY2ggZW50cnkgaXMg b2J0YWluZWQgd2l0aCBvbmUgbWFsbG9jIHNvIHdlIGNhbiBmcmVlIHRoZW0KKy0gICAgIGVhc2ls eS4gICovCistCistICBwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMgPSBodGFiX2NyZWF0ZSAo MzEsCistCQkJCQkgICAgIGhhc2hfbG9hZGVkX3NjcmlwdF9lbnRyeSwKKy0JCQkJCSAgICAgZXFf bG9hZGVkX3NjcmlwdF9lbnRyeSwKKy0JCQkJCSAgICAgeGZyZWUpOworLQorLSAgcHNwYWNlX2lu Zm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkID0gRkFMU0U7CistfQorLQorLS8q IFdyYXBwZXIgb24gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSB0byBhbHNvIGFsbG9jYXRlIHRo ZSBoYXNoIHRhYmxlCistICAgZm9yIGxvYWRpbmcgc2NyaXB0cy4gICovCistCistc3RhdGljIHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgorLWdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFf Zm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCisteworLSAgc3RydWN0 IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKKy0KKy0gIGluZm8gPSBnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhIChwc3BhY2UpOworLSAgaWYgKGluZm8tPmxvYWRlZF9zY3JpcHRzID09IE5V TEwpCistICAgIGluaXRfbG9hZGVkX3NjcmlwdHNfaW5mbyAoaW5mbyk7CistCistICByZXR1cm4g aW5mbzsKKy19CistCistLyogQWRkIHNjcmlwdCBOQU1FIHRvIGhhc2ggdGFibGUgSFRBQi4KKy0g ICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdhc24ndCBmb3VuZC4KKy0gICBUaGUg cmVzdWx0IGlzIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJs ZS4gICovCistCistc3RhdGljIGludAorLW1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBodGFiICpo dGFiLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgpCisteworLSAgc3Ry dWN0IGxvYWRlZF9zY3JpcHQgKipzbG90LCBlbnRyeTsKKy0gIGludCBpbl9oYXNoX3RhYmxlOwor LQorLSAgZW50cnkubmFtZSA9IG5hbWU7CistICBlbnRyeS5mdWxsX3BhdGggPSBmdWxsX3BhdGg7 CistICBzbG90ID0gKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBodGFiX2ZpbmRfc2xvdCAoaHRh YiwgJmVudHJ5LCBJTlNFUlQpOworLSAgaW5faGFzaF90YWJsZSA9ICpzbG90ICE9IE5VTEw7Cist CistICAvKiBJZiB0aGlzIHNjcmlwdCBpcyBub3QgaW4gdGhlIGhhc2ggdGFibGUsIGFkZCBpdC4g ICovCistCistICBpZiAoISBpbl9oYXNoX3RhYmxlKQorLSAgICB7CistICAgICAgY2hhciAqcDsK Ky0KKy0gICAgICAvKiBBbGxvY2F0ZSBhbGwgc3BhY2UgaW4gb25lIGNodW5rIHNvIGl0J3MgZWFz aWVyIHRvIGZyZWUuICAqLworLSAgICAgICpzbG90ID0geG1hbGxvYyAoc2l6ZW9mICgqKnNsb3Qp CistCQkgICAgICAgKyBzdHJsZW4gKG5hbWUpICsgMQorLQkJICAgICAgICsgKGZ1bGxfcGF0aCAh PSBOVUxMID8gKHN0cmxlbiAoZnVsbF9wYXRoKSArIDEpIDogMCkpOworLSAgICAgIHAgPSAoKGNo YXIqKSAqc2xvdCkgKyBzaXplb2YgKCoqc2xvdCk7CistICAgICAgc3RyY3B5IChwLCBuYW1lKTsK Ky0gICAgICAoKnNsb3QpLT5uYW1lID0gcDsKKy0gICAgICBpZiAoZnVsbF9wYXRoICE9IE5VTEwp CistCXsKKy0JICBwICs9IHN0cmxlbiAocCkgKyAxOworLQkgIHN0cmNweSAocCwgZnVsbF9wYXRo KTsKKy0JICAoKnNsb3QpLT5mdWxsX3BhdGggPSBwOworLQl9CistICAgICAgZWxzZQorLQkoKnNs b3QpLT5mdWxsX3BhdGggPSBOVUxMOworLSAgICB9CistCistICByZXR1cm4gaW5faGFzaF90YWJs ZTsKKy19CistCisgLyogTG9hZCBzY3JpcHRzIHNwZWNpZmllZCBpbiBPQkpGSUxFLgorICAgIFNU QVJULEVORCBkZWxpbWl0IGEgYnVmZmVyIGNvbnRhaW5pbmcgYSBsaXN0IG9mIG51bC10ZXJtaW5h dGVkCisgICAgZmlsZSBuYW1lcy4KK0BAIC0zMDEsMjAgKzEyOSwxNyBAQCBzb3VyY2Vfc2VjdGlv bl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsZSAqCisgCisgCSBJV0JOIGlmIGNvbXBsYWludHMuYyB3 ZXJlIG1vcmUgZ2VuZXJhbC1wdXJwb3NlLiAgKi8KKyAKKy0gICAgICBpbl9oYXNoX3RhYmxlID0g bWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzLCBmaWxlLAorKyAg ICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZSwK KyAJCQkJCW9wZW5lZCA/IGZ1bGxfcGF0aCA6IE5VTEwpOworIAorICAgICAgIGlmICghIG9wZW5l ZCkKKyAJeworIAkgIC8qIFdlIGRvbid0IHRocm93IGFuIGVycm9yLCB0aGUgcHJvZ3JhbSBpcyBz dGlsbCBkZWJ1Z2dhYmxlLiAgKi8KKy0JICBpZiAoISBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9m b3VuZF93YXJuaW5nX3ByaW50ZWQpCistCSAgICB7CistCSAgICAgIHdhcm5pbmcgKF8oIk1pc3Np bmcgYXV0by1sb2FkIHNjcmlwdHMgcmVmZXJlbmNlZCBpbiBzZWN0aW9uICVzXG5cCisrCSAgaWYg KHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAocHNwYWNlX2luZm8pKQorKwkgICAgd2Fy bmluZyAoXygiTWlzc2luZyBhdXRvLWxvYWQgc2NyaXB0cyByZWZlcmVuY2VkIGluIHNlY3Rpb24g JXNcblwKKyBvZiBmaWxlICVzXG5cCisgVXNlIGBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdF WFBdJyB0byBsaXN0IHRoZW0uIiksCistCQkgICAgICAgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUs IG9iamZpbGUtPm5hbWUpOworLQkgICAgICBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93 YXJuaW5nX3ByaW50ZWQgPSBUUlVFOworLQkgICAgfQorKwkJICAgICBHREJQWV9BVVRPX1NFQ1RJ T05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7CisgCX0KKyAgICAgICBlbHNlCisgCXsKK0BAIC0zNTYs MTE2ICsxODEsNiBAQCBhdXRvX2xvYWRfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsCisg ICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworIH0KKyAKKy0vKiBDbGVhciB0aGUgdGFibGUgb2Yg bG9hZGVkIHNlY3Rpb24gc2NyaXB0cy4gICovCistCistc3RhdGljIHZvaWQKKy1jbGVhcl9zZWN0 aW9uX3NjcmlwdHMgKHZvaWQpCisteworLSAgc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSA9 IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZTsKKy0gIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8g KmluZm87CistCistICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1dG9fbG9h ZF9wc3BhY2VfZGF0YSk7CistICBpZiAoaW5mbyAhPSBOVUxMICYmIGluZm8tPmxvYWRlZF9zY3Jp cHRzICE9IE5VTEwpCistICAgIHsKKy0gICAgICBodGFiX2RlbGV0ZSAoaW5mby0+bG9hZGVkX3Nj cmlwdHMpOworLSAgICAgIGluZm8tPmxvYWRlZF9zY3JpcHRzID0gTlVMTDsKKy0gICAgICBpbmZv LT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IEZBTFNFOworLSAgICB9CistfQor LQorLS8qIExvb2sgZm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0IGFzc29jaWF0ZWQgd2l0aCBPQkpG SUxFIGFuZCBsb2FkIGl0LiAgKi8KKy0KKy1zdGF0aWMgdm9pZAorLWF1dG9fbG9hZF9vYmpmaWxl X3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKnN1ZmZpeCkKKy17 CistICBjaGFyICpyZWFsbmFtZTsKKy0gIGNoYXIgKmZpbGVuYW1lLCAqZGVidWdmaWxlOworLSAg aW50IGxlbjsKKy0gIEZJTEUgKmlucHV0OworLSAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOwor LQorLSAgcmVhbG5hbWUgPSBnZGJfcmVhbHBhdGggKG9iamZpbGUtPm5hbWUpOworLSAgbGVuID0g c3RybGVuIChyZWFsbmFtZSk7CistICBmaWxlbmFtZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAo c3VmZml4KSArIDEpOworLSAgbWVtY3B5IChmaWxlbmFtZSwgcmVhbG5hbWUsIGxlbik7CistICBz dHJjcHkgKGZpbGVuYW1lICsgbGVuLCBzdWZmaXgpOworLQorLSAgY2xlYW51cHMgPSBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7CistICBtYWtlX2NsZWFudXAgKHhmcmVlLCByZWFsbmFt ZSk7CistCistICBpbnB1dCA9IGZvcGVuIChmaWxlbmFtZSwgInIiKTsKKy0gIGRlYnVnZmlsZSA9 IGZpbGVuYW1lOworLQorLSAgaWYgKCFpbnB1dCAmJiBkZWJ1Z19maWxlX2RpcmVjdG9yeSkKKy0g ICAgeworLSAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRl YnVnIGluZm8gZGlyZWN0b3J5LiAgKi8KKy0gICAgICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJs ZW4gKGZpbGVuYW1lKQorLQkJCSAgICsgc3RybGVuIChkZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAx KTsKKy0gICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVidWdfZmlsZV9kaXJlY3RvcnkpOworLSAg ICAgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUu ICAqLworLSAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7CistCistICAgICAgbWFr ZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKKy0gICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1 Z2ZpbGUsICJyIik7CistICAgIH0KKy0KKy0gIGlmICghaW5wdXQgJiYgZ2RiX2RhdGFkaXIpCist ICAgIHsKKy0gICAgICAvKiBBbHNvIHRyeSB0aGUgc2FtZSBmaWxlIGluIGEgc3ViZGlyZWN0b3J5 IG9mIGdkYidzIGRhdGEKKy0JIGRpcmVjdG9yeS4gICovCistICAgICAgZGVidWdmaWxlID0geG1h bGxvYyAoc3RybGVuIChnZGJfZGF0YWRpcikgKyBzdHJsZW4gKGZpbGVuYW1lKQorLQkJCSAgICsg c3RybGVuICgiL2F1dG8tbG9hZCIpICsgMSk7CistICAgICAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGdk Yl9kYXRhZGlyKTsKKy0gICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgIi9hdXRvLWxvYWQiKTsKKy0g ICAgICAvKiBGSUxFTkFNRSBpcyBhYnNvbHV0ZSwgc28gd2UgZG9uJ3QgbmVlZCBhICIvIiBoZXJl LiAgKi8KKy0gICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgZmlsZW5hbWUpOworLQorLSAgICAgIG1h a2VfY2xlYW51cCAoeGZyZWUsIGRlYnVnZmlsZSk7CistICAgICAgaW5wdXQgPSBmb3BlbiAoZGVi dWdmaWxlLCAiciIpOworLSAgICB9CistCistICBpZiAoaW5wdXQpCistICAgIHsKKy0gICAgICBz dHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKy0KKy0gICAgICBtYWtl X2NsZWFudXBfZmNsb3NlIChpbnB1dCk7CistCistICAgICAgLyogQWRkIHRoaXMgc2NyaXB0IHRv IHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIKKy0JIGNhbiBw cmludCBpdC4gICovCistICAgICAgcHNwYWNlX2luZm8gPQorLQlnZXRfYXV0b19sb2FkX3BzcGFj ZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOworLSAgICAgIG1heWJl X2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywgZGVidWdmaWxlLCBkZWJ1 Z2ZpbGUpOworLQorLSAgICAgIC8qIFRvIHByZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW91ciB3ZSBk b24ndCBjaGVjayBmb3Igd2hldGhlciB0aGUKKy0JIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUg dGFibGUsIGFuZCBhbHdheXMgbG9hZCBpdC4KKy0JIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQg d2UnZCBldmVyIGxvYWQgaXQgdHdpY2UsCistCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWly ZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRlciBtdWx0aXBsZQorLQkgbG9hZHMgYW55d2F5LiAgKi8K Ky0gICAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQs IGRlYnVnZmlsZSk7CistICAgIH0KKy0KKy0gIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CistfQor LQorLS8qIFRoaXMgaXMgYSBuZXdfb2JqZmlsZSBvYnNlcnZlciBjYWxsYmFjayB0byBhdXRvLWxv YWQgc2NyaXB0cy4KKy0KKy0gICBUd28gZmxhdm9ycyBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzIGFy ZSBzdXBwb3J0ZWQuCistICAgMSkgYmFzZWQgb24gdGhlIHBhdGggdG8gdGhlIG9iamZpbGUKKy0g ICAyKSBmcm9tIC5kZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uICAqLworLQorLXN0YXRpYyB2b2lk CistYXV0b19sb2FkX25ld19vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKy17Cist ICBpZiAoIW9iamZpbGUpCistICAgIHsKKy0gICAgICAvKiBPQkpGSUxFIGlzIE5VTEwgd2hlbiBs b2FkaW5nIGEgbmV3ICJtYWluIiBzeW1ib2wtZmlsZS4gICovCistICAgICAgY2xlYXJfc2VjdGlv bl9zY3JpcHRzICgpOworLSAgICAgIHJldHVybjsKKy0gICAgfQorLQorLSAgbG9hZF9hdXRvX3Nj cmlwdHNfZm9yX29iamZpbGUgKG9iamZpbGUpOworLX0KKy0KKyAvKiBMb2FkIGFueSBhdXRvLWxv YWRlZCBzY3JpcHRzIGZvciBPQkpGSUxFLiAgKi8KKyAKKyB2b2lkCitAQCAtNDc4LDE0NiArMTkz LDkgQEAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYgorICAgICB9Cisg fQorIAwKKy0vKiBDb2xsZWN0IHNjcmlwdHMgdG8gYmUgcHJpbnRlZCBpbiBhIHZlYy4gICovCist CistdHlwZWRlZiBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqbG9hZGVkX3NjcmlwdF9wdHI7CistREVG X1ZFQ19QIChsb2FkZWRfc2NyaXB0X3B0cik7CistCistLyogVHJhdmVyc2FsIGZ1bmN0aW9uIGZv ciBodGFiX3RyYXZlcnNlLgorLSAgIENvbGxlY3QgdGhlIGVudHJ5IGlmIGl0IG1hdGNoZXMgdGhl IHJlZ2V4cC4gICovCistCistc3RhdGljIGludAorLWNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cyAo dm9pZCAqKnNsb3QsIHZvaWQgKmluZm8pCisteworLSAgc3RydWN0IGxvYWRlZF9zY3JpcHQgKnNj cmlwdCA9ICpzbG90OworLSAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikgKipzY3JpcHRzX3B0ciA9 IGluZm87CistCistICBpZiAocmVfZXhlYyAoc2NyaXB0LT5uYW1lKSkKKy0gICAgVkVDX3NhZmVf cHVzaCAobG9hZGVkX3NjcmlwdF9wdHIsICpzY3JpcHRzX3B0ciwgc2NyaXB0KTsKKy0KKy0gIHJl dHVybiAxOworLX0KKy0KKy0vKiBQcmludCBTQ1JJUFQuICAqLworLQorLXN0YXRpYyB2b2lkCist cHJpbnRfc2NyaXB0IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaXB0KQorLXsKKy0gIHN0cnVj dCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKKy0gIHN0cnVjdCBjbGVhbnVwICpjaGFp bjsKKy0KKy0gIGNoYWluID0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVp b3V0LCBOVUxMKTsKKy0KKy0gIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAibG9hZGVkIiwg c2NyaXB0LT5mdWxsX3BhdGggPyAiWWVzIiA6ICJNaXNzaW5nIik7CistICB1aV9vdXRfZmllbGRf c3RyaW5nICh1aW91dCwgInNjcmlwdCIsIHNjcmlwdC0+bmFtZSk7CistICB1aV9vdXRfdGV4dCAo dWlvdXQsICJcbiIpOworLQorLSAgLyogSWYgdGhlIG5hbWUgaXNuJ3QgdGhlIGZ1bGwgcGF0aCwg cHJpbnQgaXQgdG9vLiAgKi8KKy0gIGlmIChzY3JpcHQtPmZ1bGxfcGF0aCAhPSBOVUxMCistICAg ICAgJiYgc3RyY21wIChzY3JpcHQtPm5hbWUsIHNjcmlwdC0+ZnVsbF9wYXRoKSAhPSAwKQorLSAg ICB7CistICAgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXHRmdWxsIG5hbWU6ICIpOworLSAgICAg IHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAiZnVsbF9wYXRoIiwgc2NyaXB0LT5mdWxsX3Bh dGgpOworLSAgICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7CistICAgIH0KKy0KKy0gIGRv X2NsZWFudXBzIChjaGFpbik7CistfQorLQorLS8qIEhlbHBlciBmb3IgaW5mb19hdXRvX2xvYWRf c2NyaXB0cyB0byBzb3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUuICAqLworLQorLXN0YXRpYyBpbnQK Ky1zb3J0X3NjcmlwdHNfYnlfbmFtZSAoY29uc3Qgdm9pZCAqYXAsIGNvbnN0IHZvaWQgKmJwKQor LXsKKy0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICphID0gKihjb25zdCBzdHJ1Y3QgbG9h ZGVkX3NjcmlwdCAqKikgYXA7CistICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqYiA9ICoo Y29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKiopIGJwOworLQorLSAgcmV0dXJuIEZJTEVOQU1F X0NNUCAoYS0+bmFtZSwgYi0+bmFtZSk7CistfQorLQorLS8qICJpbmZvIGF1dG8tbG9hZC1zY3Jp cHRzIiBjb21tYW5kLiAgKi8KKy0KKy1zdGF0aWMgdm9pZAorLWluZm9fYXV0b19sb2FkX3Njcmlw dHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSkKKy17CistICBzdHJ1Y3QgdWlfb3V0ICp1 aW91dCA9IGN1cnJlbnRfdWlvdXQ7CistICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpw c3BhY2VfaW5mbzsKKy0gIHN0cnVjdCBjbGVhbnVwICpzY3JpcHRfY2hhaW47CistICBWRUMgKGxv YWRlZF9zY3JpcHRfcHRyKSAqc2NyaXB0czsKKy0gIGludCBucl9zY3JpcHRzOworLQorLSAgZG9u dF9yZXBlYXQgKCk7CistCistICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2Rh dGEgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CistCistICBpZiAocGF0dGVybiAmJiAqcGF0dGVy bikKKy0gICAgeworLSAgICAgIGNoYXIgKnJlX2VyciA9IHJlX2NvbXAgKHBhdHRlcm4pOworLQor LSAgICAgIGlmIChyZV9lcnIpCistCWVycm9yIChfKCJJbnZhbGlkIHJlZ2V4cDogJXMiKSwgcmVf ZXJyKTsKKy0gICAgfQorLSAgZWxzZQorLSAgICB7CistICAgICAgcmVfY29tcCAoIiIpOworLSAg ICB9CistCistICAvKiBXZSBuZWVkIHRvIGtub3cgdGhlIG51bWJlciBvZiByb3dzIGJlZm9yZSB3 ZSBidWlsZCB0aGUgdGFibGUuCistICAgICBQbHVzIHdlIHdhbnQgdG8gc29ydCB0aGUgc2NyaXB0 cyBieSBuYW1lLgorLSAgICAgU28gZmlyc3QgdHJhdmVyc2UgdGhlIGhhc2ggdGFibGUgY29sbGVj dGluZyB0aGUgbWF0Y2hpbmcgc2NyaXB0cy4gICovCistCistICBzY3JpcHRzID0gVkVDX2FsbG9j IChsb2FkZWRfc2NyaXB0X3B0ciwgMTApOworLSAgc2NyaXB0X2NoYWluID0gbWFrZV9jbGVhbnVw IChWRUNfY2xlYW51cCAobG9hZGVkX3NjcmlwdF9wdHIpLCAmc2NyaXB0cyk7CistCistICBpZiAo cHNwYWNlX2luZm8gIT0gTlVMTCAmJiBwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMgIT0gTlVM TCkKKy0gICAgeworLSAgICAgIGltbWVkaWF0ZV9xdWl0Kys7CistICAgICAgLyogUGFzcyBhIHBv aW50ZXIgdG8gc2NyaXB0cyBhcyBWRUNfc2FmZV9wdXNoIGNhbiByZWFsbG9jIHNwYWNlLiAgKi8K Ky0gICAgICBodGFiX3RyYXZlcnNlX25vcmVzaXplIChwc3BhY2VfaW5mby0+bG9hZGVkX3Njcmlw dHMsCistCQkJICAgICAgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzLCAmc2NyaXB0cyk7CistICAg ICAgaW1tZWRpYXRlX3F1aXQtLTsKKy0gICAgfQorLQorLSAgbnJfc2NyaXB0cyA9IFZFQ19sZW5n dGggKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKTsKKy0gIG1ha2VfY2xlYW51cF91aV9vdXRf dGFibGVfYmVnaW5fZW5kICh1aW91dCwgMiwgbnJfc2NyaXB0cywKKy0JCQkJICAgICAgICJBdXRv TG9hZGVkU2NyaXB0c1RhYmxlIik7CistCistICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwg NywgdWlfbGVmdCwgImxvYWRlZCIsICJMb2FkZWQiKTsKKy0gIHVpX291dF90YWJsZV9oZWFkZXIg KHVpb3V0LCA3MCwgdWlfbGVmdCwgInNjcmlwdCIsICJTY3JpcHQiKTsKKy0gIHVpX291dF90YWJs ZV9ib2R5ICh1aW91dCk7CistCistICBpZiAobnJfc2NyaXB0cyA+IDApCistICAgIHsKKy0gICAg ICBpbnQgaTsKKy0gICAgICBsb2FkZWRfc2NyaXB0X3B0ciBzY3JpcHQ7CistCistICAgICAgcXNv cnQgKFZFQ19hZGRyZXNzIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyksCistCSAgICAgVkVD X2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpLAorLQkgICAgIHNpemVvZiAobG9h ZGVkX3NjcmlwdF9wdHIpLCBzb3J0X3NjcmlwdHNfYnlfbmFtZSk7CistICAgICAgZm9yIChpID0g MDsgVkVDX2l0ZXJhdGUgKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzLCBpLCBzY3JpcHQpOyAr K2kpCistCXByaW50X3NjcmlwdCAoc2NyaXB0KTsKKy0gICAgfQorLQorLSAgZG9fY2xlYW51cHMg KHNjcmlwdF9jaGFpbik7CistCistICBpZiAobnJfc2NyaXB0cyA9PSAwKQorLSAgICB7CistICAg ICAgaWYgKHBhdHRlcm4gJiYgKnBhdHRlcm4pCistCXVpX291dF9tZXNzYWdlICh1aW91dCwgMCwg Ik5vIGF1dG8tbG9hZCBzY3JpcHRzIG1hdGNoaW5nICVzLlxuIiwKKy0JCQlwYXR0ZXJuKTsKKy0g ICAgICBlbHNlCistCXVpX291dF9tZXNzYWdlICh1aW91dCwgMCwgIk5vIGF1dG8tbG9hZCBzY3Jp cHRzLlxuIik7CistICAgIH0KKy19CistDAorIHZvaWQKKyBnZGJweV9pbml0aWFsaXplX2F1dG9f bG9hZCAodm9pZCkKKyB7CistICBhdXRvX2xvYWRfcHNwYWNlX2RhdGEKKy0gICAgPSByZWdpc3Rl cl9wcm9ncmFtX3NwYWNlX2RhdGFfd2l0aF9jbGVhbnVwIChhdXRvX2xvYWRfcHNwYWNlX2RhdGFf Y2xlYW51cCk7CistCistICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZpbGUgKGF1dG9fbG9hZF9u ZXdfb2JqZmlsZSk7CistCisgICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImF1dG8tbG9hZC1z Y3JpcHRzIiwgY2xhc3Nfc3VwcG9ydCwKKyAJCQkgICAmYXV0b19sb2FkX3NjcmlwdHMsIF8oIlwK KyBTZXQgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBzY3Jp cHRzLiIpLCBfKCJcCitAQCAtNjI3LDExICsyMDUsNiBAQCBhbiBleGVjdXRhYmxlIG9yIHNoYXJl ZCBsaWJyYXJ5LiIpLAorIAkJCSAgIE5VTEwsIE5VTEwsCisgCQkJICAgJnNldGxpc3QsCisgCQkJ ICAgJnNob3dsaXN0KTsKKy0KKy0gIGFkZF9pbmZvICgiYXV0by1sb2FkLXNjcmlwdHMiLAorLQkg ICAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cywKKy0JICAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1 dG9tYXRpY2FsbHkgbG9hZGVkIHNjcmlwdHMuXG5cCistVXNhZ2U6IGluZm8gYXV0by1sb2FkLXNj cmlwdHMgW1JFR0VYUF0iKSk7CisgfQorIAorICNlbHNlIC8qICEgSEFWRV9QWVRIT04gKi8KK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0 LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjI2OjI5LjA1NDEyMDE5OSArMDIwMAorQEAg LTI0LDggKzI0LDYgQEAKKyAKKyBzdHJ1Y3QgYnJlYWtwb2ludF9vYmplY3Q7CisgCistZXh0ZXJu IGludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkOworLQorIGV4dGVybiB2b2lkIGZpbmlzaF9weXRo b25faW5pdGlhbGl6YXRpb24gKHZvaWQpOworIAorIHZvaWQgZXZhbF9weXRob25fZnJvbV9jb250 cm9sX2NvbW1hbmQgKHN0cnVjdCBjb21tYW5kX2xpbmUgKik7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1 dG9sb2FkLTEwb2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xMG9mMTgucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1OTY5ODIuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2Fk LTEwb2YxOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3MDQgKzAsMCBAQAotW3BhdGNoIzQg NC84XSBzZXQgYXV0by1sb2FkICogbWFpbiBwYXJ0Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cwMDA4OC5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTEzLmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9n CTIwMTIvMDQvMTcgMTU6NDk6MTEJMS4xNDExMgotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIv MDQvMTcgMTU6NTE6NDEJMS4xNDExMwotIyMgLTEsNSArMSwxMDEgQEAKLSAyMDEyLTA0LTE3ICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0rCWF1dG8tbG9h ZDogSW1wbGVtZW50YXRpb24uCi0rCSogTkVXUzogTmV3IGRlc2NyaXB0aW9ucyBmb3IgImluZm8g YXV0by1sb2FkIiwKLSsJImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIiwgImluZm8gYXV0by1s b2FkIHB5dGhvbi1zY3JpcHRzIiwKLSsJImluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiIGFu ZCAiaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIi4KLSsJRGVwcmVjYXRlICJpbmZvIGF1dG8t bG9hZC1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQtc2NyaXB0cyBvbnxvZmYiCi0rCWFuZCAic2hv dyBhdXRvLWxvYWQtc2NyaXB0cyIuICBOZXcgZGVzY3JpcHRpb24gZm9yICJzZXQgYXV0by1sb2Fk IiwKLSsJInNob3cgYXV0by1sb2FkIiwgInNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLAotKwki c2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0 cyIsCi0rCSJzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkIGxv Y2FsLWdkYmluaXQiLAotKwkic2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIsICJzZXQgYXV0 by1sb2FkIGxpYnRocmVhZC1kYiIgYW5kCi0rCSJzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIi LgotKwkqIGF1dG8tbG9hZC5jOiBSZW1vdmUgaW5jbHVkZSBweXRob24vcHl0aG9uLWludGVybmFs LmguICBBZGQgaW5jbHVkZXMKLSsJZXhjZXB0aW9ucy5oLCBjbGkvY2xpLXNjcmlwdC5oLCBnZGJj bWQuaCwgY2xpL2NsaS1kZWNvZGUuaCBhbmQKLSsJY2xpL2NsaS1zZXRzaG93LmguCi0rCShHREJf QVVUT19GSUxFX05BTUUsIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlKQotKwkoYXV0b19s b2FkX2dkYl9zY3JpcHRzLCBzaG93X2F1dG9fbG9hZF9nZGJfc2NyaXB0cyk6IE5ldy4KLSsJKGdk YnB5X2dsb2JhbF9hdXRvX2xvYWQpOiBSZW5hbWUgdG8gLi4uCi0rCShnbG9iYWxfYXV0b19sb2Fk KTogLi4uIGhlcmUuCi0rCShhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCwgYXV0b19sb2FkX2xvY2Fs X2dkYmluaXRfcGF0aG5hbWUpCi0rCShhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQsIHNo b3dfYXV0b19sb2FkX2xvY2FsX2dkYmluaXQpCi0rCShzY3JpcHRfbGFuZ3VhZ2VfZ2RiLCBzb3Vy Y2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSk6IE5ldy4KLSsJKHN0cnVjdCBsb2FkZWRfc2NyaXB0 KTogTmV3IGZpZWxkIGxhbmd1YWdlLgotKwkoaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5LCBlcV9s b2FkZWRfc2NyaXB0X2VudHJ5KTogQ2FsY3VsYXRlIGFsc28KLSsJTEFOR1VBR0UuCi0rCShtYXli ZV9hZGRfc2NyaXB0KTogQWRkIHBhcmFtZXRlciBsYW5ndWFnZS4gIERyb3AgcmVkdW5kYW50Ci0r CWVudHJ5LmZ1bGxfcGF0aCBpbml0aWFsaXphdGlvbi4gIEluaXRpYWxpemUgZW50cnkubGFuZ3Vh Z2UgYW5kCi0rCSgqc2xvdCktPmxhbmd1YWdlLgotKwkoYXV0b19sb2FkX29iamZpbGVfc2NyaXB0 KTogQ2hhbmdlIHBhcmFtZXRlciBzdWZmaXggdG8gbGFuZ3VhZ2UuCi0rCVJlbW92ZSB0aGUgY2Fs bCBvZiBtYXliZV9hZGRfc2NyaXB0LgotKwlDYWxsIGxhbmd1YWdlLT5zb3VyY2Vfc2NyaXB0X2Zv cl9vYmpmaWxlLgotKwkobG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUsIHN0cnVjdCBjb2xs ZWN0X21hdGNoaW5nX3NjcmlwdHNfZGF0YSk6Ci0rCU5ldy4KLSsJKGNvbGxlY3RfbWF0Y2hpbmdf c2NyaXB0cyk6IEFkanVzdCBpdCBmb3IKLSsJc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0 c19kYXRhLgotKwkoYXV0b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJuX25sKTogTmV3IHZhcmlh YmxlLgotKwkoaW5mb19hdXRvX2xvYWRfc2NyaXB0cyk6IFJlbmFtZSB0byAuLi4KLSsJKGF1dG9f bG9hZF9pbmZvX3NjcmlwdHMpOiAuLi4gaGVyZSwgYWRkIHBhcmFtZXRlciBsYW5ndWFnZS4gIEFk anVzdCBpdAotKwlmb3Igc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhLgotKwko aW5mb19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMsIGluZm9fYXV0b19sb2FkX2xvY2FsX2dkYmluaXQp Ci0rCShzZXRfYXV0b19sb2FkX2NtZCwgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCwgc2hvd19h dXRvX2xvYWRfY21kKQotKwkoYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQsIGluZm9fYXV0b19s b2FkX2NtZCkKLSsJKGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0KTogTmV3LgotKwkoX2luaXRp YWxpemVfYXV0b19sb2FkKTogTW92ZSBhZGRfaW5mbyBvZiAiYXV0by1sb2FkLXNjcmlwdHMiIHRv Ci0rCXB5dGhvbi9weS1hdXRvLWxvYWQuYy4gIE5ldyBpbnN0YWxsbWVudCBmb3IgInNldCBhdXRv LWxvYWQgZ2RiLXNjcmlwdHMiLAotKwkiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLCAic2V0 IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiBhbmQKLSsJImluZm8gYXV0by1sb2FkIGxvY2FsLWdk YmluaXQiLgotKwkqIGF1dG8tbG9hZC5oIChzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlKTogTmV3Lgot KwkoZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCk6IFJlbmFtZSB0byAuLi4KLSsJKGdsb2JhbF9hdXRv X2xvYWQpOiAuLi4gaGVyZS4KLSsJKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0LCBhdXRvX2xvYWRf bG9jYWxfZ2RiaW5pdF9wYXRobmFtZSkKLSsJKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRl ZCk6IE5ldyBkZWNsYXJhdGlvbnMuCi0rCShtYXliZV9hZGRfc2NyaXB0KTogTmV3IHBhcmFtZXRl ciBsYW5ndWFnZS4KLSsJKGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IENoYW5nZSBwYXJhbWV0 ZXIgc3VmZml4IHRvIGxhbmd1YWdlLgotKwkobG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUs IGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubCkKLSsJKGF1dG9fbG9hZF9pbmZvX3Nj cmlwdHMsIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQpCi0rCShhdXRvX2xvYWRfc2hvd19jbWRs aXN0X2dldCwgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQpOiBOZXcKLSsJZGVjbGFyYXRpb25z LgotKwkqIGxpbnV4LXRocmVhZC1kYi5jOiBJbmNsdWRlIGF1dG8tbG9hZC5oIGFuZCBjdHlwZS5o LgotKwkoYXV0b19sb2FkX3RocmVhZF9kYiwgc2hvd19hdXRvX2xvYWRfdGhyZWFkX2RiKTogTmV3 LgotKwkoc3RydWN0IHRocmVhZF9kYl9pbmZvKTogTmV3IGZpZWxkIGZpbGVuYW1lLgotKwkoZGVs ZXRlX3RocmVhZF9kYl9pbmZvKTogQ2FsbCB4ZnJlZSBmb3IgRklMRU5BTUUuCi0rCSh0cnlfdGhy ZWFkX2RiX2xvYWQpOiBJbml0aWFsaXplIEZJTEVOQU1FLgotKwkodHJ5X3RocmVhZF9kYl9sb2Fk X2Zyb21fcGRpciwgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fZGlyKTogUmV0dXJuCi0rCWlmICFB VVRPX0xPQURfVEhSRUFEX0RCLgotKwkoaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiX2NvbXBh cmUsIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYik6IE5ldy4KLSsJKF9pbml0aWFsaXplX3Ro cmVhZF9kYik6IEluc3RhbGwgYXV0b19sb2FkX3RocmVhZF9kYgotKwlhcyAic2V0IGF1dG8tbG9h ZCBsaWJ0aHJlYWQtZGIiIGFuZCBpbnN0YWxsIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYgot KwlhcyAiaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIi4KLSsJKiBtYWluLmMgKGNhcHR1cmVk X21haW4pOiBSZW5hbWUgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCB0bwotKwlnbG9iYWxfYXV0b19s b2FkLiAgSW5pdGlhbGl6ZSBBVVRPX0xPQURfTE9DQUxfR0RCSU5JVF9QQVRITkFNRSBhbmQKLSsJ QVVUT19MT0FEX0xPQ0FMX0dEQklOSVRfTE9BREVELgotKwkocHJpbnRfZ2RiX2hlbHApOiBFeHRl bmQgdGhlIGhlbHAgZm9yICdsb2NhbCBpbml0IGZpbGUnLgotKwkqIHB5dGhvbi9weS1hdXRvLWxv YWQuYzogUmVtb3ZlIGEgY29tbWVudCBhYm91dCBnZGIgc2NyaXB0cyBleHRlbnNpb24uCi0rCShH REJQWV9BVVRPX1NFQ1RJT05fTkFNRSk6IEV4dGVuZCB0aGUgY29tbWVudCBpdCBpcyBQeXRob24g c3BlY2lmaWMuCi0rCShhdXRvX2xvYWRfc2NyaXB0cyk6IFJlbmFtZSB0byAuLi4KLSsJKGF1dG9f bG9hZF9weXRob25fc2NyaXB0cyk6IC4uLiBoZXJlLCB1cGRhdGUgdGhlIGNvbW1lbnQuCi0rCShn ZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3IGRlY2xhcmF0aW9uLgotKwko c2hvd19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsIHNjcmlwdF9sYW5ndWFnZV9weXRob24pCi0r CShnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3LgotKwkoc291cmNlX3Nl Y3Rpb25fc2NyaXB0cyk6IFJlZmFjdG9yIHRoZSBjb2RlLgotKwkobG9hZF9hdXRvX3NjcmlwdHNf Zm9yX29iamZpbGUpOiBSZW5hbWUgdG8gLi4uCi0rCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19m b3Jfb2JqZmlsZSk6IC4uLiBoZXJlLCB1cGRhdGUgdGhlCi0rCWF1dG9fbG9hZF9vYmpmaWxlX3Nj cmlwdCBjYWxsZXIsIGRyb3AgR0RCUFlfR0xPQkFMX0FVVE9fTE9BRCBjaGVja2luZy4KLSsJKGlu Zm9fYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzKTogTmV3LgotKwkoZ2RicHlfaW5pdGlhbGl6ZV9h dXRvX2xvYWQpOiBOZXcgdmFyaWFibGVzIGNtZCBhbmQgY21kX25hbWUuCi0rCVJlbmFtZSAic2V0 IGF1dG8tbG9hZC1zY3JpcHRzIiB0byAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIuCi0r CVJlZ2lzdGVyICJzZXQgYXV0by1sb2FkLXNjcmlwdHMiIGFzIGl0cyBkZXByZWNhdGVkIGFsaWFz LiAgUmVnaXN0ZXIKLSsJImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIi4gIFJlZ2lzdGVy ICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiBhcwotKwlpdHMgZGVwcmVjYXRlZCBhbGlhcy4KLSsJ KGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogUmVuYW1lIHRvIC4uLgotKwkoZ2RicHlf bG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUpOiAuLi4gaGVyZS4KLSsJKiBweXRob24vcHl0 aG9uLmggKGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogUmVuYW1lIHRvIC4uLgotKwko Z2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUpOiAuLi4gaGVyZS4KLSsKLSsyMDEy LTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0g CWF1dG8tbG9hZDogTW92ZSBmaWxlcy4KLSAJKiBNYWtlZmlsZS5pbiAoU0ZJTEVTKTogQWRkIGF1 dG8tbG9hZC5jLgotIAkoSEZJTEVTX05PX1NSQ0RJUik6IEFkZCBhdXRvLWxvYWQuaC4KLUluZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41 MC4yMDEyMDEyMC5vcmlnL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDI6NTEuMjI2NjgxMDY4ICsw MjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQ5OjAy LjAzNTczNzY0NCArMDIwMAotQEAgLTI4LDYgKzI4LDQ1IEBACi0gICBub3cgc2V0IGEgYnJlYWtw b2ludCBpbiBidWlsZC9nY2MvZXhwci5jLCBidXQgbm90Ci0gICBidWlsZC9saWJjcHAvZXhwci5j LgotIAotKyogTmV3IGNvbW1hbmRzCi0rCi0rICAqKiAiaW5mbyBhdXRvLWxvYWQiIHNob3dzIHN0 YXR1cyBvZiBhbGwga2luZHMgb2YgYXV0by1sb2FkZWQgZmlsZXMsCi0rICAgICAiaW5mbyBhdXRv LWxvYWQgZ2RiLXNjcmlwdHMiIHNob3dzIHN0YXR1cyBvZiBhdXRvLWxvYWRpbmcgR0RCIGNhbm5l ZAotKyAgICAgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIGZpbGVzLCAiaW5mbyBhdXRvLWxvYWQgcHl0 aG9uLXNjcmlwdHMiCi0rICAgICBzaG93cyBzdGF0dXMgb2YgYXV0by1sb2FkaW5nIFB5dGhvbiBz Y3JpcHQgZmlsZXMsCi0rICAgICAiaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIgc2hvd3Mg c3RhdHVzIG9mIGxvYWRpbmcgaW5pdCBmaWxlCi0rICAgICAoLmdkYmluaXQpIGZyb20gY3VycmVu dCBkaXJlY3RvcnkgYW5kICJpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiIHNob3dzCi0rICAg ICBzdGF0dXMgb2YgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBzaGFyZWQgbGli cmFyeSBsb2FkaW5nLgotKwotKyAgKiogImluZm8gYXV0by1sb2FkLXNjcmlwdHMiLCAic2V0IGF1 dG8tbG9hZC1zY3JpcHRzIG9ufG9mZiIKLSsgICAgIGFuZCAic2hvdyBhdXRvLWxvYWQtc2NyaXB0 cyIgY29tbWFuZHMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQsIHVzZSB0aGVpcgotKyAgICAgImluZm8g YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMg b258b2ZmIgotKyAgICAgYW5kICJzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIgY291bnRl cnBhcnRzIGluc3RlYWQuCi0rCi0rKiBOZXcgb3B0aW9ucwotKwotK3NldCBhdXRvLWxvYWQgb2Zm Ci0rICBEaXNhYmxlIGF1dG8tbG9hZGluZyBnbG9iYWxseS4KLSsKLStzaG93IGF1dG8tbG9hZAot KyAgU2hvdyBhdXRvLWxvYWRpbmcgc2V0dGluZyBvZiBhbGwga2luZHMgb2YgYXV0by1sb2FkZWQg ZmlsZXMuCi0rCi0rc2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyBvbnxvZmYKLStzaG93IGF1dG8t bG9hZCBnZGItc2NyaXB0cwotKyAgQ29udHJvbCBhdXRvLWxvYWRpbmcgb2YgR0RCIGNhbm5lZCBz ZXF1ZW5jZXMgb2YgY29tbWFuZHMgZmlsZXMuCi0rCi0rc2V0IGF1dG8tbG9hZCBweXRob24tc2Ny aXB0cyBvbnxvZmYKLStzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cwotKyAgQ29udHJvbCBh dXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdCBmaWxlcy4KLSsKLStzZXQgYXV0by1sb2FkIGxv Y2FsLWdkYmluaXQgb258b2ZmCi0rc2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAotKyAgQ29u dHJvbCBsb2FkaW5nIG9mIGluaXQgZmlsZSAoLmdkYmluaXQpIGZyb20gY3VycmVudCBkaXJlY3Rv cnkuCi0rCi0rc2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIgb258b2ZmCi0rc2hvdyBhdXRvLWxv YWQgbGlidGhyZWFkLWRiCi0rICBDb250cm9sIGF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVj aWZpYyB0aHJlYWQgZGVidWdnaW5nIHNoYXJlZCBsaWJyYXJ5LgotKwotICogTmV3IGNvbW1hbmQg bGluZSBvcHRpb25zCi0gCi0gLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4ICAgICAgICAgIExpa2Ug LS1jb21tYW5kLCAteCBidXQgZXhlY3V0ZSBpdAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2F1dG8tbG9hZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1MDQzNzUyMCArMDIwMAotKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDY6NDcu NTU2MDc5NzgwICswMjAwCi1AQCAtMjcsMTkgKzI3LDkyIEBACi0gI2luY2x1ZGUgImNvbW1hbmQu aCIKLSAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKLSAjaW5jbHVkZSAib2JqZmlsZXMuaCIKLS0jaW5j bHVkZSAicHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oIgotKyNpbmNsdWRlICJleGNlcHRpb25zLmgi Ci0rI2luY2x1ZGUgImNsaS9jbGktc2NyaXB0LmgiCi0rI2luY2x1ZGUgImdkYmNtZC5oIgotKyNp bmNsdWRlICJjbGkvY2xpLWRlY29kZS5oIgotKyNpbmNsdWRlICJjbGkvY2xpLXNldHNob3cuaCIK LSsKLSsvKiBUaGUgc3VmZml4IG9mIHBlci1vYmpmaWxlIHNjcmlwdHMgdG8gYXV0by1sb2FkIGFz IG5vbi1QeXRob24gY29tbWFuZCBmaWxlcy4KLSsgICBFLmcuIFdoZW4gdGhlIHByb2dyYW0gbG9h ZHMgbGliZm9vLnNvLCBsb29rIGZvciBsaWJmb28tZ2RiLmdkYi4gICovCi0rI2RlZmluZSBHREJf QVVUT19GSUxFX05BTUUgIi1nZGIuZ2RiIgotKwotK3N0YXRpYyB2b2lkIHNvdXJjZV9nZGJfc2Ny aXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKLSsJ CQkJCSAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLSsKLSsvKiBVc2VyLXNldHRhYmxlIG9wdGlv biB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgR0RCX0FVVE9fRklMRV9OQU1FCi0r ICAgc2NyaXB0czoKLSsgICBzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIG9ufG9mZgotKyAgIFRo aXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIGFzc29jaWF0ZWQgc2NyaXB0cyB3aGVu IGFuIG9iamZpbGUKLSsgICBpcyBvcGVuZWQsIGZhbHNlIG90aGVyd2lzZS4gICovCi0rc3RhdGlj IGludCBhdXRvX2xvYWRfZ2RiX3NjcmlwdHMgPSAxOwotKwotKy8qICJzaG93IiBjb21tYW5kIGZv ciB0aGUgYXV0b19sb2FkX2dkYl9zY3JpcHRzIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLwot KwotK3N0YXRpYyB2b2lkCi0rc2hvd19hdXRvX2xvYWRfZ2RiX3NjcmlwdHMgKHN0cnVjdCB1aV9m aWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50 ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKLSt7Ci0rICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBf KCJBdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyAiCi0rCQkJICAg ICJzY3JpcHRzIGlzICVzLlxuIiksCi0rCQkgICAgdmFsdWUpOwotK30KLSAKLSAvKiBJbnRlcm5h bC11c2UgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcuCi0gICAgVGhpcyBpcyB0 cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgcHl0aG9uIGNvZGUgd2hlbiBhbiBvYmpmaWxlIGlz IG9wZW5lZCwKLSAgICBmYWxzZSBvdGhlcndpc2UuCi0gCi0tICAgQm90aCBhdXRvX2xvYWRfc2Ny aXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2FkIG11c3QgYmUgdHJ1ZSB0byBlbmFibGUKLSsg ICBCb3RoIGF1dG9fbG9hZF9zY3JpcHRzICYmIGdsb2JhbF9hdXRvX2xvYWQgbXVzdCBiZSB0cnVl IHRvIGVuYWJsZQotICAgIGF1dG8tbG9hZGluZy4KLSAKLSAgICBUaGlzIGZsYWcgZXhpc3RzIHRv IGZhY2lsaXRhdGUgZGVmZXJyaW5nIGF1dG8tbG9hZGluZyBkdXJpbmcgc3RhcnQtdXAKLSAgICB1 bnRpbCBhZnRlciAuLy5nZGJpbml0IGhhcyBiZWVuIHJlYWQ7IGl0IG1heSBhdWdtZW50IHRoZSBz ZWFyY2ggZGlyZWN0b3JpZXMKLSAgICB1c2VkIHRvIGZpbmQgdGhlIHNjcmlwdHMuICAqLwotLWlu dCBnZGJweV9nbG9iYWxfYXV0b19sb2FkID0gMTsKLStpbnQgZ2xvYmFsX2F1dG9fbG9hZCA9IDE7 Ci0rCi0rLyogQXV0by1sb2FkIC5nZGJpbml0IGZpbGUgZnJvbSB0aGUgY3VycmVudCBkaXJlY3Rv cnk/ICAqLwotK2ludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCA9IDE7Ci0rCi0rLyogQWJzb2x1 dGUgcGF0aG5hbWUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IC5nZGJpbml0LCBpZiBpdCBleGlz dHMuICAqLwotK2NoYXIgKmF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lID0gTlVMTDsK LSsKLSsvKiBCb29sZWFuIHZhbHVlIGlmIEFVVE9fTE9BRF9MT0NBTF9HREJJTklUX1BBVEhOQU1F IGhhcyBiZWVuIGxvYWRlZC4gICovCi0raW50IGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRl ZCA9IDA7Ci0rCi0rLyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfbG9jYWxfZ2Ri aW5pdCBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nob3df YXV0b19sb2FkX2xvY2FsX2dkYmluaXQgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90 dHksCi0rCQkJICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZh bHVlKQotK3sKLSsgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZGluZyBvZiAu Z2RiaW5pdCBzY3JpcHQgZnJvbSBjdXJyZW50ICIKLSsJCQkgICAgImRpcmVjdG9yeSBpcyAlcy5c biIpLAotKwkJICAgIHZhbHVlKTsKLSt9Ci0rCi0rLyogRGVmaW5pdGlvbiBvZiBzY3JpcHQgbGFu Z3VhZ2UgZm9yIEdEQiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzLiAgKi8KLSsKLStzdGF0 aWMgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSBzY3JpcHRfbGFuZ3VhZ2VfZ2RiCi0rICA9 IHsgR0RCX0FVVE9fRklMRV9OQU1FLCBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSB9Owot KwotK3N0YXRpYyB2b2lkCi0rc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotKwkJCSAgICAgICBjb25zdCBjaGFyICpmaWxl bmFtZSkKLSt7Ci0rICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsK LSsgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7Ci0rCi0rICAvKiBBZGQgdGhpcyBz Y3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0 cyIKLSsgICAgIGNhbiBwcmludCBpdC4gICovCi0rICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xv YWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0rICBt YXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZW5hbWUsIGZpbGVuYW1lLCAmc2NyaXB0 X2xhbmd1YWdlX2dkYik7Ci0rCi0rICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0FMTCkKLSsg ICAgewotKyAgICAgIHNjcmlwdF9mcm9tX2ZpbGUgKGZpbGUsIGZpbGVuYW1lKTsKLSsgICAgfQot KyAgZXhjZXB0aW9uX3ByaW50IChnZGJfc3RkZXJyLCBlKTsKLSt9Ci0gCi0gLyogRm9yIHNjcmlw dHMgc3BlY2lmaWVkIGluIC5kZWJ1Z19nZGJfc2NyaXB0cywgbXVsdGlwbGUgb2JqZmlsZXMgbWF5 IGxvYWQKLSAgICB0aGUgc2FtZSBzY3JpcHQuICBUaGVyZSdzIG5vIHBvaW50IGluIGxvYWRpbmcg dGhlIHNjcmlwdCBtdWx0aXBsZSB0aW1lcywKLUBAIC02Miw5ICsxMzUsMTIgQEAgc3RydWN0IGxv YWRlZF9zY3JpcHQKLSB7Ci0gICAvKiBOYW1lIGFzIHByb3ZpZGVkIGJ5IHRoZSBvYmpmaWxlLiAg Ki8KLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0rCi0gICAvKiBGdWxsIHBhdGggbmFtZSBvciBOVUxM IGlmIHNjcmlwdCB3YXNuJ3QgZm91bmQgKG9yIHdhcyBvdGhlcndpc2UKLSAgICAgIGluYWNjZXNz aWJsZSkuICAqLwotICAgY29uc3QgY2hhciAqZnVsbF9wYXRoOwotKwotKyAgY29uc3Qgc3RydWN0 IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2U7Ci0gfTsKLSAKLSAvKiBQZXItcHJvZ3JhbS1zcGFj ZSBkYXRhIGtleS4gICovCi1AQCAtMTA5LDcgKzE4NSw3IEBAIGhhc2hfbG9hZGVkX3NjcmlwdF9l bnRyeSAoY29uc3Qgdm9pZCAqZGEKLSB7Ci0gICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAq ZSA9IGRhdGE7Ci0gCi0tICByZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAoZS0+bmFtZSk7Ci0rICBy ZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAoZS0+bmFtZSkgXiBodGFiX2hhc2hfcG9pbnRlciAoZS0+ bGFuZ3VhZ2UpOwotIH0KLSAKLSAvKiBFcXVhbGl0eSBmdW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBz Y3JpcHQgaGFzaC4gICovCi1AQCAtMTIwLDcgKzE5Niw3IEBAIGVxX2xvYWRlZF9zY3JpcHRfZW50 cnkgKGNvbnN0IHZvaWQgKmEsIGMKLSAgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplYSA9 IGE7Ci0gICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZWIgPSBiOwotIAotLSAgcmV0dXJu IHN0cmNtcCAoZWEtPm5hbWUsIGViLT5uYW1lKSA9PSAwOwotKyAgcmV0dXJuIHN0cmNtcCAoZWEt Pm5hbWUsIGViLT5uYW1lKSA9PSAwICYmIGVhLT5sYW5ndWFnZSA9PSBlYi0+bGFuZ3VhZ2U7Ci0g fQotIAotIC8qIEluaXRpYWxpemUgdGhlIHRhYmxlIHRvIHRyYWNrIGxvYWRlZCBzY3JpcHRzLgot QEAgLTE1NiwyMCArMjMyLDIxIEBAIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRp bmcgKHMKLSAgIHJldHVybiBpbmZvOwotIH0KLSAKLS0vKiBBZGQgc2NyaXB0IE5BTUUgdG8gaGFz aCB0YWJsZSBvZiBQU1BBQ0VfSU5GTy4KLS0gICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUgc2Ny aXB0IHdhc24ndCBmb3VuZC4KLS0gICBUaGUgcmVzdWx0IGlzIHRydWUgaWYgdGhlIHNjcmlwdCB3 YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCi0rLyogQWRkIHNjcmlwdCBOQU1FIGlu IExBTkdVQUdFIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8uCi0rICAgRlVMTF9QQVRIIGlz IE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuICBUaGUgcmVzdWx0IGlzCi0rICAgdHJ1 ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KLSAKLSBp bnQKLS1tYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3Bh Y2VfaW5mbywgY29uc3QgY2hhciAqbmFtZSwKLS0JCSAgY29uc3QgY2hhciAqZnVsbF9wYXRoKQot K21heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9p bmZvLAotKwkJICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgsCi0rCQkg IGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKQotIHsKLSAgIHN0cnVjdCBo dGFiICpodGFiID0gcHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzOwotICAgc3RydWN0IGxvYWRl ZF9zY3JpcHQgKipzbG90LCBlbnRyeTsKLSAgIGludCBpbl9oYXNoX3RhYmxlOwotIAotICAgZW50 cnkubmFtZSA9IG5hbWU7Ci0tICBlbnRyeS5mdWxsX3BhdGggPSBmdWxsX3BhdGg7Ci0rICBlbnRy eS5sYW5ndWFnZSA9IGxhbmd1YWdlOwotICAgc2xvdCA9IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAq KikgaHRhYl9maW5kX3Nsb3QgKGh0YWIsICZlbnRyeSwgSU5TRVJUKTsKLSAgIGluX2hhc2hfdGFi bGUgPSAqc2xvdCAhPSBOVUxMOwotIAotQEAgLTE5NCw2ICsyNzEsNyBAQCBtYXliZV9hZGRfc2Ny aXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjCi0gCX0KLSAgICAgICBlbHNlCi0gCSgqc2xvdCkt PmZ1bGxfcGF0aCA9IE5VTEw7Ci0rICAgICAgKCpzbG90KS0+bGFuZ3VhZ2UgPSBsYW5ndWFnZTsK LSAgICAgfQotIAotICAgcmV0dXJuIGluX2hhc2hfdGFibGU7Ci1AQCAtMjE2LDEwICsyOTQsMTIg QEAgY2xlYXJfc2VjdGlvbl9zY3JpcHRzICh2b2lkKQotICAgICB9Ci0gfQotIAotLS8qIExvb2sg Zm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0IGFzc29jaWF0ZWQgd2l0aCBPQkpGSUxFIGFuZCBsb2Fk IGl0LiAgKi8KLSsvKiBMb29rIGZvciB0aGUgYXV0by1sb2FkIHNjcmlwdCBpbiBMQU5HVUFHRSBh c3NvY2lhdGVkIHdpdGggT0JKRklMRSBhbmQgbG9hZAotKyAgIGl0LiAgKi8KLSAKLSB2b2lkCi0t YXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3Qg Y2hhciAqc3VmZml4KQotK2F1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCi0rCQkJICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSkK LSB7Ci0gICBjaGFyICpyZWFsbmFtZTsKLSAgIGNoYXIgKmZpbGVuYW1lLCAqZGVidWdmaWxlOwot QEAgLTIyOSw5ICszMDksOSBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpm aWxlCi0gCi0gICByZWFsbmFtZSA9IGdkYl9yZWFscGF0aCAob2JqZmlsZS0+bmFtZSk7Ci0gICBs ZW4gPSBzdHJsZW4gKHJlYWxuYW1lKTsKLS0gIGZpbGVuYW1lID0geG1hbGxvYyAobGVuICsgc3Ry bGVuIChzdWZmaXgpICsgMSk7Ci0rICBmaWxlbmFtZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAo bGFuZ3VhZ2UtPnN1ZmZpeCkgKyAxKTsKLSAgIG1lbWNweSAoZmlsZW5hbWUsIHJlYWxuYW1lLCBs ZW4pOwotLSAgc3RyY3B5IChmaWxlbmFtZSArIGxlbiwgc3VmZml4KTsKLSsgIHN0cmNweSAoZmls ZW5hbWUgKyBsZW4sIGxhbmd1YWdlLT5zdWZmaXgpOwotIAotICAgY2xlYW51cHMgPSBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBmaWxlbmFtZSk7Ci0gICBtYWtlX2NsZWFudXAgKHhmcmVlLCByZWFsbmFt ZSk7Ci1AQCAtMjY5LDI3ICszNDksMzMgQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1 Y3Qgb2JqZmlsZQotIAotICAgaWYgKGlucHV0KQotICAgICB7Ci0tICAgICAgc3RydWN0IGF1dG9f bG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0tCi0gICAgICAgbWFrZV9jbGVhbnVwX2Zj bG9zZSAoaW5wdXQpOwotIAotLSAgICAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0 YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkLXNjcmlwdHMiCi0tCSBjYW4gcHJpbnQgaXQuICAq LwotLSAgICAgIHBzcGFjZV9pbmZvID0KLS0JZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3Jf bG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLS0gICAgICBtYXliZV9hZGRfc2NyaXB0 IChwc3BhY2VfaW5mbywgZGVidWdmaWxlLCBkZWJ1Z2ZpbGUpOwotLQotICAgICAgIC8qIFRvIHBy ZXNlcnZlIGV4aXN0aW5nIGJlaGF2aW91ciB3ZSBkb24ndCBjaGVjayBmb3Igd2hldGhlciB0aGUK LSAJIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgdGFibGUsIGFuZCBhbHdheXMgbG9hZCBpdC4K LSAJIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxvYWQgaXQgdHdpY2UsCi0g CSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRlciBt dWx0aXBsZQotIAkgbG9hZHMgYW55d2F5LiAgKi8KLS0gICAgICBzb3VyY2VfcHl0aG9uX3Njcmlw dF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7Ci0rICAgICAgbGFuZ3Vh Z2UtPnNvdXJjZV9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1Z2ZpbGUp OwotICAgICB9Ci0gCi0gICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwotIH0KLSAKLSsvKiBMb2Fk IGFueSBhdXRvLWxvYWRlZCBzY3JpcHRzIGZvciBPQkpGSUxFLiAgKi8KLSsKLSt2b2lkCi0rbG9h ZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK3sK LSsgIGlmICghZ2xvYmFsX2F1dG9fbG9hZCkKLSsgICAgcmV0dXJuOwotKwotKyAgaWYgKGF1dG9f bG9hZF9nZGJfc2NyaXB0cykKLSsgICAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChvYmpmaWxl LCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7Ci0rCi0rICBnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19m b3Jfb2JqZmlsZSAob2JqZmlsZSk7Ci0rfQotKwotIC8qIFRoaXMgaXMgYSBuZXdfb2JqZmlsZSBv YnNlcnZlciBjYWxsYmFjayB0byBhdXRvLWxvYWQgc2NyaXB0cy4KLSAKLSAgICBUd28gZmxhdm9y cyBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzIGFyZSBzdXBwb3J0ZWQuCi1AQCAtMzE0LDYgKzQwMCwx MyBAQCBhdXRvX2xvYWRfbmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvCi0gdHlwZWRlZiBz dHJ1Y3QgbG9hZGVkX3NjcmlwdCAqbG9hZGVkX3NjcmlwdF9wdHI7Ci0gREVGX1ZFQ19QIChsb2Fk ZWRfc2NyaXB0X3B0cik7Ci0gCi0rc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRh Ci0rewotKyAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikgKipzY3JpcHRzX3A7Ci0rCi0rICBjb25z dCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZTsKLSt9OwotKwotIC8qIFRyYXZlcnNh bCBmdW5jdGlvbiBmb3IgaHRhYl90cmF2ZXJzZS4KLSAgICBDb2xsZWN0IHRoZSBlbnRyeSBpZiBp dCBtYXRjaGVzIHRoZSByZWdleHAuICAqLwotIAotQEAgLTMyMSwxMCArNDE0LDEwIEBAIHN0YXRp YyBpbnQKLSBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMgKHZvaWQgKipzbG90LCB2b2lkICppbmZv KQotIHsKLSAgIHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpcHQgPSAqc2xvdDsKLS0gIFZFQyAo bG9hZGVkX3NjcmlwdF9wdHIpICoqc2NyaXB0c19wdHIgPSBpbmZvOwotKyAgc3RydWN0IGNvbGxl Y3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRhICpkYXRhID0gaW5mbzsKLSAKLS0gIGlmIChyZV9leGVj IChzY3JpcHQtPm5hbWUpKQotLSAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0X3B0ciwg KnNjcmlwdHNfcHRyLCBzY3JpcHQpOwotKyAgaWYgKHNjcmlwdC0+bGFuZ3VhZ2UgPT0gZGF0YS0+ bGFuZ3VhZ2UgJiYgcmVfZXhlYyAoc2NyaXB0LT5uYW1lKSkKLSsgICAgVkVDX3NhZmVfcHVzaCAo bG9hZGVkX3NjcmlwdF9wdHIsICpkYXRhLT5zY3JpcHRzX3AsIHNjcmlwdCk7Ci0gCi0gICByZXR1 cm4gMTsKLSB9Ci1AQCAtMzY2LDEwICs0NTksMTggQEAgc29ydF9zY3JpcHRzX2J5X25hbWUgKGNv bnN0IHZvaWQgKmFwLCBjbwotICAgcmV0dXJuIEZJTEVOQU1FX0NNUCAoYS0+bmFtZSwgYi0+bmFt ZSk7Ci0gfQotIAotLS8qICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiBjb21tYW5kLiAgKi8KLSsv KiBTcGVjaWFsIGludGVybmFsIEdEQiB2YWx1ZSBvZiBhdXRvX2xvYWRfaW5mb19zY3JpcHRzJ3Mg UEFUVEVSTiBpZGVudGlmeQotKyAgIHRoZSAiaW5mbyBhdXRvLWxvYWQgWFhYIiBjb21tYW5kIGhh cyBiZWVuIGV4ZWN1dGVkIHRocm91Z2ggdGhlIGdlbmVyYWwKLSsgICAiaW5mbyBhdXRvLWxvYWQi IGludm9jYXRpb24uICBFeHRyYSBuZXdsaW5lIHdpbGwgYmUgcHJpbnRlZCBpZiBuZWVkZWQuICAq LwotK2NoYXIgYXV0b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJuX25sW10gPSAiIjsKLSsKLSsv KiBJbXBsZW1lbnRhdGlvbiBmb3IgImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIgotKyAgIChh bmQgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIikuICBMaXN0IHNjcmlwdHMgaW4gTEFO R1VBR0UgbWF0Y2hpbmcKLSsgICBQQVRURVJOLiAgRlJPTV9UVFkgaXMgdGhlIHVzdWFsIEdEQiBi b29sZWFuIGZvciB1c2VyIGludGVyYWN0aXZpdHkuICAqLwotIAotLXN0YXRpYyB2b2lkCi0taW5m b19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5KQotK3ZvaWQK LSthdXRvX2xvYWRfaW5mb19zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHksCi0r CQkJY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpCi0gewotICAgc3RydWN0 IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OwotICAgc3RydWN0IGF1dG9fbG9hZF9wc3Bh Y2VfaW5mbyAqcHNwYWNlX2luZm87Ci1AQCAtNDAyLDE0ICs1MDMsMjIgQEAgaW5mb19hdXRvX2xv YWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaQotIAotICAgaWYgKHBzcGFjZV9pbmZvICE9IE5V TEwgJiYgcHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzICE9IE5VTEwpCi0gICAgIHsKLSsgICAg ICBzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEgZGF0YSA9IHsgJnNjcmlwdHMs IGxhbmd1YWdlIH07Ci0rCi0gICAgICAgaW1tZWRpYXRlX3F1aXQrKzsKLSAgICAgICAvKiBQYXNz IGEgcG9pbnRlciB0byBzY3JpcHRzIGFzIFZFQ19zYWZlX3B1c2ggY2FuIHJlYWxsb2Mgc3BhY2Uu ICAqLwotICAgICAgIGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUgKHBzcGFjZV9pbmZvLT5sb2FkZWRf c2NyaXB0cywKLS0JCQkgICAgICBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMsICZzY3JpcHRzKTsK LSsJCQkgICAgICBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMsICZkYXRhKTsKLSAgICAgICBpbW1l ZGlhdGVfcXVpdC0tOwotICAgICB9Ci0gCi0gICBucl9zY3JpcHRzID0gVkVDX2xlbmd0aCAobG9h ZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMpOwotKwotKyAgLyogVGFibGUgaGVhZGVyIHNoaWZ0ZWQg cmlnaHQgYnkgcHJlY2VkaW5nICJnZGItc2NyaXB0czogICIgd291bGQgbm90IG1hdGNoCi0rICAg ICBpdHMgY29sdW1ucy4gICovCi0rICBpZiAobnJfc2NyaXB0cyA+IDAgJiYgcGF0dGVybiA9PSBh dXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmwpCi0rICAgIHVpX291dF90ZXh0ICh1aW91 dCwgIlxuIik7Ci0rCi0gICBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlv dXQsIDIsIG5yX3NjcmlwdHMsCi0gCQkJCSAgICAgICAiQXV0b0xvYWRlZFNjcmlwdHNUYWJsZSIp OwotIAotQEAgLTQ0MSw2ICs1NTAsMjkgQEAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAq cGF0dGVybiwgaQotICAgICB9Ci0gfQotIAotKy8qIFdyYXBwZXIgZm9yICJpbmZvIGF1dG8tbG9h ZCBnZGItc2NyaXB0cyIuICAqLwotKwotK3N0YXRpYyB2b2lkCi0raW5mb19hdXRvX2xvYWRfZ2Ri X3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSkKLSt7Ci0rICBhdXRvX2xvYWRf aW5mb19zY3JpcHRzIChwYXR0ZXJuLCBmcm9tX3R0eSwgJnNjcmlwdF9sYW5ndWFnZV9nZGIpOwot K30KLSsKLSsvKiBJbXBsZW1lbnQgJ2luZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQnLiAgKi8K LSsKLStzdGF0aWMgdm9pZAotK2luZm9fYXV0b19sb2FkX2xvY2FsX2dkYmluaXQgKGNoYXIgKmFy Z3MsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBpZiAoYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0 aG5hbWUgPT0gTlVMTCkKLSsgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJMb2NhbCAuZ2RiaW5pdCBm aWxlIHdhcyBub3QgZm91bmQuXG4iKSk7Ci0rICBlbHNlIGlmIChhdXRvX2xvYWRfbG9jYWxfZ2Ri aW5pdF9sb2FkZWQpCi0rICAgIHByaW50Zl9maWx0ZXJlZCAoXygiTG9jYWwgLmdkYmluaXQgZmls ZSBcIiVzXCIgaGFzIGJlZW4gbG9hZGVkLlxuIiksCi0rCQkgICAgIGF1dG9fbG9hZF9sb2NhbF9n ZGJpbml0X3BhdGhuYW1lKTsKLSsgIGVsc2UKLSsgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJMb2Nh bCAuZ2RiaW5pdCBmaWxlIFwiJXNcIiBoYXMgbm90IGJlZW4gbG9hZGVkLlxuIiksCi0rCQkgICAg IGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lKTsKLSt9Ci0rCi0gLyogUmV0dXJuIG5v bi16ZXJvIGlmIFNDUklQVF9OT1RfRk9VTkRfV0FSTklOR19QUklOVEVEIG9mIFBTUEFDRV9JTkZP IHdhcyB1bnNldAotICAgIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uICBBbHdheXMgc2V0 IFNDUklQVF9OT1RfRk9VTkRfV0FSTklOR19QUklOVEVECi0gICAgb2YgUFNQQUNFX0lORk8uICAq LwotQEAgLTQ1NSw2ICs1ODcsMTMyIEBAIHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAo c3RydWN0IGEKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotIAotKy8qIFRoZSBvbmx5IHZhbGlkICJz ZXQgYXV0by1sb2FkIiBhcmd1bWVudCBpcyBvZmZ8MHxub3xkaXNhYmxlLiAgKi8KLSsKLStzdGF0 aWMgdm9pZAotK3NldF9hdXRvX2xvYWRfY21kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0r ewotKyAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmxpc3Q7Ci0rICBzaXplX3QgbGVuZ3RoOwot KwotKyAgLyogU2VlIHBhcnNlX2JpbmFyeV9vcGVyYXRpb24gaW4gdXNlIGJ5IHRoZSBzdWItY29t bWFuZHMuICAqLwotKwotKyAgbGVuZ3RoID0gYXJncyA/IHN0cmxlbiAoYXJncykgOiAwOwotKwot KyAgd2hpbGUgKGxlbmd0aCA+IDAgJiYgKGFyZ3NbbGVuZ3RoIC0gMV0gPT0gJyAnIHx8IGFyZ3Nb bGVuZ3RoIC0gMV0gPT0gJ1x0JykpCi0rICAgIGxlbmd0aC0tOwotKwotKyAgaWYgKGxlbmd0aCA9 PSAwIHx8IChzdHJuY21wIChhcmdzLCAib2ZmIiwgbGVuZ3RoKSAhPSAwCi0rCQkgICAgICAmJiBz dHJuY21wIChhcmdzLCAiMCIsIGxlbmd0aCkgIT0gMAotKwkJICAgICAgJiYgc3RybmNtcCAoYXJn cywgIm5vIiwgbGVuZ3RoKSAhPSAwCi0rCQkgICAgICAmJiBzdHJuY21wIChhcmdzLCAiZGlzYWJs ZSIsIGxlbmd0aCkgIT0gMCkpCi0rICAgIGVycm9yIChfKCJWYWxpZCBpcyBvbmx5IGdsb2JhbCAn c2V0IGF1dG8tbG9hZCBubyc7ICIKLSsJICAgICAib3RoZXJ3aXNlIGNoZWNrIHRoZSBhdXRvLWxv YWQgc3ViLWNvbW1hbmRzLiIpKTsKLSsKLSsgIGZvciAobGlzdCA9ICphdXRvX2xvYWRfc2V0X2Nt ZGxpc3RfZ2V0ICgpOyBsaXN0ICE9IE5VTEw7IGxpc3QgPSBsaXN0LT5uZXh0KQotKyAgICBpZiAo bGlzdC0+dmFyX3R5cGUgPT0gdmFyX2Jvb2xlYW4pCi0rICAgICAgewotKwlnZGJfYXNzZXJ0IChs aXN0LT50eXBlID09IHNldF9jbWQpOwotKwlkb19zZXRzaG93X2NvbW1hbmQgKGFyZ3MsIGZyb21f dHR5LCBsaXN0KTsKLSsgICAgICB9Ci0rfQotKwotKy8qIEluaXRpYWxpemUgInNldCBhdXRvLWxv YWQgIiBjb21tYW5kcyBwcmVmaXggYW5kIHJldHVybiBpdC4gICovCi0rCi0rc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKioKLSthdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICh2b2lkKQotK3sKLSsg IHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqcmV0dmFsOwotKwotKyAgaWYgKHJldHZh bCA9PSBOVUxMKQotKyAgICBhZGRfcHJlZml4X2NtZCAoImF1dG8tbG9hZCIsIGNsYXNzX21haW50 ZW5hbmNlLCBzZXRfYXV0b19sb2FkX2NtZCwgXygiXAotK0F1dG8tbG9hZGluZyBzcGVjaWZpYyBz ZXR0aW5ncy5cblwKLStDb25maWd1cmUgdmFyaW91cyBhdXRvLWxvYWQtc3BlY2lmaWMgdmFyaWFi bGVzIHN1Y2ggYXNcblwKLSthdXRvbWF0aWMgbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cy4iKSwK LSsJCSAgICAmcmV0dmFsLCAic2V0IGF1dG8tbG9hZCAiLAotKwkJICAgIDEvKmFsbG93LXVua25v d24qLywgJnNldGxpc3QpOwotKwotKyAgcmV0dXJuICZyZXR2YWw7Ci0rfQotKwotKy8qIENvbW1h bmQgInNob3cgYXV0by1sb2FkIiBkaXNwbGF5cyBzdW1tYXJ5IG9mIGFsbCB0aGUgY3VycmVudAot KyAgICJzaG93IGF1dG8tbG9hZCAiIHNldHRpbmdzLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3No b3dfYXV0b19sb2FkX2NtZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotK3sKLSsgIGNtZF9z aG93X2xpc3QgKCphdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSwgZnJvbV90dHksICIiKTsK LSt9Ci0rCi0rLyogSW5pdGlhbGl6ZSAic2hvdyBhdXRvLWxvYWQgIiBjb21tYW5kcyBwcmVmaXgg YW5kIHJldHVybiBpdC4gICovCi0rCi0rc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKioKLSthdXRv X2xvYWRfc2hvd19jbWRsaXN0X2dldCAodm9pZCkKLSt7Ci0rICBzdGF0aWMgc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKnJldHZhbDsKLSsKLSsgIGlmIChyZXR2YWwgPT0gTlVMTCkKLSsgICAgYWRk X3ByZWZpeF9jbWQgKCJhdXRvLWxvYWQiLCBjbGFzc19tYWludGVuYW5jZSwgc2hvd19hdXRvX2xv YWRfY21kLCBfKCJcCi0rU2hvdyBhdXRvLWxvYWRpbmcgc3BlY2lmaWMgc2V0dGluZ3MuXG5cCi0r U2hvdyBjb25maWd1cmF0aW9uIG9mIHZhcmlvdXMgYXV0by1sb2FkLXNwZWNpZmljIHZhcmlhYmxl cyBzdWNoIGFzXG5cCi0rYXV0b21hdGljIGxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMuIiksCi0r CQkgICAgJnJldHZhbCwgInNob3cgYXV0by1sb2FkICIsCi0rCQkgICAgMC8qYWxsb3ctdW5rbm93 biovLCAmc2hvd2xpc3QpOwotKwotKyAgcmV0dXJuICZyZXR2YWw7Ci0rfQotKwotKy8qIENvbW1h bmQgImluZm8gYXV0by1sb2FkIiBkaXNwbGF5cyB3aGV0aGVyIHRoZSB2YXJpb3VzIGF1dG8tbG9h ZCBmaWxlcyBoYXZlCi0rICAgYmVlbiBsb2FkZWQuICBUaGlzIGlzIHJlaW1wbGVtZW50YXRpb24g b2YgY21kX3Nob3dfbGlzdCB3aGljaCBpbnNlcnRzCi0rICAgbmV3bGluZXMgYXQgcHJvcGVyIHBs YWNlcy4gICovCi0rCi0rc3RhdGljIHZvaWQKLStpbmZvX2F1dG9fbG9hZF9jbWQgKGNoYXIgKmFy Z3MsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqbGlzdDsK LSsgIHN0cnVjdCBjbGVhbnVwICppbmZvbGlzdF9jaGFpbjsKLSsgIHN0cnVjdCB1aV9vdXQgKnVp b3V0ID0gY3VycmVudF91aW91dDsKLSsKLSsgIGluZm9saXN0X2NoYWluID0gbWFrZV9jbGVhbnVw X3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCAiaW5mb2xpc3QiKTsKLSsKLSsgIGZvciAo bGlzdCA9ICphdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKTsgbGlzdCAhPSBOVUxMOyBsaXN0 ID0gbGlzdC0+bmV4dCkKLSsgICAgewotKyAgICAgIHN0cnVjdCBjbGVhbnVwICpvcHRpb25fY2hh aW4KLSsJPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsICJvcHRp b24iKTsKLSsKLSsgICAgICBnZGJfYXNzZXJ0ICghbGlzdC0+cHJlZml4bGlzdCk7Ci0rICAgICAg Z2RiX2Fzc2VydCAobGlzdC0+dHlwZSA9PSBub3Rfc2V0X2NtZCk7Ci0rCi0rICAgICAgdWlfb3V0 X2ZpZWxkX3N0cmluZyAodWlvdXQsICJuYW1lIiwgbGlzdC0+bmFtZSk7Ci0rICAgICAgdWlfb3V0 X3RleHQgKHVpb3V0LCAiOiAgIik7Ci0rICAgICAgY21kX2Z1bmMgKGxpc3QsIGF1dG9fbG9hZF9p bmZvX3NjcmlwdHNfcGF0dGVybl9ubCwgZnJvbV90dHkpOwotKwotKyAgICAgIC8qIENsb3NlIHRo ZSB0dXBsZS4gICovCi0rICAgICAgZG9fY2xlYW51cHMgKG9wdGlvbl9jaGFpbik7Ci0rICAgIH0K LSsKLSsgIC8qIENsb3NlIHRoZSB0dXBsZS4gICovCi0rICBkb19jbGVhbnVwcyAoaW5mb2xpc3Rf Y2hhaW4pOwotK30KLSsKLSsvKiBJbml0aWFsaXplICJpbmZvIGF1dG8tbG9hZCAiIGNvbW1hbmRz IHByZWZpeCBhbmQgcmV0dXJuIGl0LiAgKi8KLSsKLStzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq KgotK2F1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICh2b2lkKQotK3sKLSsgIHN0YXRpYyBzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqcmV0dmFsOwotKwotKyAgaWYgKHJldHZhbCA9PSBOVUxMKQot KyAgICBhZGRfcHJlZml4X2NtZCAoImF1dG8tbG9hZCIsIGNsYXNzX2luZm8sIGluZm9fYXV0b19s b2FkX2NtZCwgXygiXAotK1ByaW50IGN1cnJlbnQgc3RhdHVzIG9mIGF1dG8tbG9hZGVkIGZpbGVz LlxuXAotK1ByaW50IHdoZXRoZXIgdmFyaW91cyBmaWxlcyBsaWtlIFB5dGhvbiBzY3JpcHRzIG9y IC5nZGJpbml0IGZpbGVzIGhhdmUgYmVlblxuXAotK2ZvdW5kIGFuZC9vciBsb2FkZWQuIiksCi0r CQkgICAgJnJldHZhbCwgImluZm8gYXV0by1sb2FkICIsCi0rCQkgICAgMC8qYWxsb3ctdW5rbm93 biovLCAmaW5mb2xpc3QpOwotKwotKyAgcmV0dXJuICZyZXR2YWw7Ci0rfQotKwotIHZvaWQgX2lu aXRpYWxpemVfYXV0b19sb2FkICh2b2lkKTsKLSAKLSB2b2lkCi1AQCAtNDY1LDggKzcyMywzOCBA QCBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpCi0gCi0gICBvYnNlcnZlcl9hdHRhY2hfbmV3 X29iamZpbGUgKGF1dG9fbG9hZF9uZXdfb2JqZmlsZSk7Ci0gCi0tICBhZGRfaW5mbyAoImF1dG8t bG9hZC1zY3JpcHRzIiwKLS0JICAgIGluZm9fYXV0b19sb2FkX3NjcmlwdHMsCi0tCSAgICBfKCJQ cmludCB0aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBzY3JpcHRzLlxuXAotLVVzYWdl OiBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdIikpOwotKyAgYWRkX3NldHNob3dfYm9v bGVhbl9jbWQgKCJnZGItc2NyaXB0cyIsIGNsYXNzX3N1cHBvcnQsCi0rCQkJICAgJmF1dG9fbG9h ZF9nZGJfc2NyaXB0cywgXygiXAotK0VuYWJsZSBvciBkaXNhYmxlIGF1dG8tbG9hZGluZyBvZiBj YW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMuIiksIF8oIlwKLStTaG93IHdoZXRo ZXIgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBp cyBlbmFibGVkLiIpLAotKwkJCSAgIF8oIlwKLStJZiBlbmFibGVkLCBjYW5uZWQgc2VxdWVuY2Vz IG9mIGNvbW1hbmRzIGFyZSBsb2FkZWQgd2hlbiB0aGUgZGVidWdnZXIgcmVhZHNcblwKLSthbiBl eGVjdXRhYmxlIG9yIHNoYXJlZCBsaWJyYXJ5LlxuXAotK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJp dHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAotKwkJCSAgIE5VTEws IHNob3dfYXV0b19sb2FkX2dkYl9zY3JpcHRzLAotKwkJCSAgIGF1dG9fbG9hZF9zZXRfY21kbGlz dF9nZXQgKCksCi0rCQkJICAgYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKCkpOwotKwotKyAg YWRkX2NtZCAoImdkYi1zY3JpcHRzIiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfZ2RiX3Nj cmlwdHMsCi0rCSAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHNl cXVlbmNlcyBvZiBjb21tYW5kcy5cblwKLStVc2FnZTogaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlw dHMgW1JFR0VYUF0iKSwKLSsJICAgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOwotKwot KyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJsb2NhbC1nZGJpbml0IiwgY2xhc3Nfc3VwcG9y dCwKLSsJCQkgICAmYXV0b19sb2FkX2xvY2FsX2dkYmluaXQsIF8oIlwKLStFbmFibGUgb3IgZGlz YWJsZSBhdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGluIGN1cnJlbnQgZGlyZWN0b3J5 LiIpLCBfKCJcCi0rU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyAuZ2RiaW5pdCBzY3JpcHQgaW4g Y3VycmVudCBkaXJlY3RvcnkgaXMgZW5hYmxlZC4iKSwKLSsJCQkgICBfKCJcCi0rSWYgZW5hYmxl ZCwgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBhcmUgbG9hZGVkIHdoZW4gZGVidWdnZXIg c3RhcnRzXG5cCi0rZnJvbSAuZ2RiaW5pdCBmaWxlIGluIGN1cnJlbnQgZGlyZWN0b3J5LiAgU3Vj aCBmaWxlcyBhcmUgZGVwcmVjYXRlZCxcblwKLSt1c2UgYSBzY3JpcHQgYXNzb2NpYXRlZCB3aXRo IGluZmVyaW9yIGV4ZWN1dGFibGUgZmlsZSBpbnN0ZWFkLlxuXAotK1RoaXMgb3B0aW9ucyBoYXMg c2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAotKwkJCSAg IE5VTEwsIHNob3dfYXV0b19sb2FkX2xvY2FsX2dkYmluaXQsCi0rCQkJICAgYXV0b19sb2FkX3Nl dF9jbWRsaXN0X2dldCAoKSwKLSsJCQkgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7 Ci0rCi0rICBhZGRfY21kICgibG9jYWwtZ2RiaW5pdCIsIGNsYXNzX2luZm8sIGluZm9fYXV0b19s b2FkX2xvY2FsX2dkYmluaXQsCi0rCSAgIF8oIlByaW50IHdoZXRoZXIgY3VycmVudCBkaXJlY3Rv cnkgLmdkYmluaXQgZmlsZSBoYXMgYmVlbiBsb2FkZWQuXG5cCi0rVXNhZ2U6IGluZm8gYXV0by1s b2FkIGxvY2FsLWdkYmluaXQiKSwKLSsJICAgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkp OwotIH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmgJMjAxMi0w NC0xOCAwMDo0NDoyNi45NTE0Mzc1MTcgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1NjA3OTc4MCArMDIwMAotQEAgLTIy LDE1ICsyMiwzNiBAQAotIAotIHN0cnVjdCBwcm9ncmFtX3NwYWNlOwotIAotLWV4dGVybiBpbnQg Z2RicHlfZ2xvYmFsX2F1dG9fbG9hZDsKLStzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlCi0rewotKyAg Y29uc3QgY2hhciAqc3VmZml4OwotKwotKyAgdm9pZCAoKnNvdXJjZV9zY3JpcHRfZm9yX29iamZp bGUpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKLSsJCQkJICAgICBjb25z dCBjaGFyICpmaWxlbmFtZSk7Ci0rfTsKLSsKLStleHRlcm4gaW50IGdsb2JhbF9hdXRvX2xvYWQ7 Ci0rCi0rZXh0ZXJuIGludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdDsKLStleHRlcm4gY2hhciAq YXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWU7Ci0rZXh0ZXJuIGludCBhdXRvX2xvYWRf bG9jYWxfZ2RiaW5pdF9sb2FkZWQ7Ci0gCi0gZXh0ZXJuIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNl X2luZm8gKgotICAgZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoc3RydWN0 IHByb2dyYW1fc3BhY2UgKnBzcGFjZSk7Ci0gZXh0ZXJuIGludCBtYXliZV9hZGRfc2NyaXB0IChz dHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywKLS0JCQkgICAgIGNvbnN0 IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCk7Ci0rCQkJICAgICBjb25zdCBjaGFy ICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgsCi0rCQkJICAgICBjb25zdCBzdHJ1Y3Qgc2Ny aXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7Ci0gZXh0ZXJuIHZvaWQgYXV0b19sb2FkX29iamZpbGVf c2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLS0JCQkJICAgICAgY29uc3QgY2hhciAq c3VmZml4KTsKLSsJCQkJICAgICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3Vh Z2UpOwotK2V4dGVybiB2b2lkIGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSk7Ci0gZXh0ZXJuIGludAotICAgc2NyaXB0X25vdF9mb3VuZF93YXJu aW5nX3ByaW50IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbyk7Ci0r ZXh0ZXJuIGNoYXIgYXV0b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJuX25sW107Ci0rZXh0ZXJu IHZvaWQgYXV0b19sb2FkX2luZm9fc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5 LAotKwkJCQkgICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpOwotKwot K2V4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9zZXRfY21kbGlzdF9n ZXQgKHZvaWQpOwotK2V4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9z aG93X2NtZGxpc3RfZ2V0ICh2b2lkKTsKLStleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQg KiphdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAodm9pZCk7Ci0gCi0gI2VuZGlmIC8qIEFVVE9f TE9BRF9IICovCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRi LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2xpbnV4LXRo cmVhZC1kYi5jCTIwMTItMDEtMDQgMDk6MTc6MDUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny41 NTcwNzk3NzcgKzAyMDAKLUBAIC00MCw4ICs0MCwxMCBAQAotICNpbmNsdWRlICJvYnNlcnZlci5o IgotICNpbmNsdWRlICJsaW51eC1uYXQuaCIKLSAjaW5jbHVkZSAibGludXgtcHJvY2ZzLmgiCi0r I2luY2x1ZGUgImF1dG8tbG9hZC5oIgotIAotICNpbmNsdWRlIDxzaWduYWwuaD4KLSsjaW5jbHVk ZSA8Y3R5cGUuaD4KLSAKLSAjaWZkZWYgSEFWRV9HTlVfTElCQ19WRVJTSU9OX0gKLSAjaW5jbHVk ZSA8Z251L2xpYmMtdmVyc2lvbi5oPgotQEAgLTc1LDYgKzc3LDIxIEBACi0gCi0gc3RhdGljIGNo YXIgKmxpYnRocmVhZF9kYl9zZWFyY2hfcGF0aDsKLSAKLSsvKiBTZXQgdG8gbm9uLXplcm8gaWYg dGhyZWFkX2RiIGF1dG8tbG9hZGluZyBpcyBlbmFibGVkCi0rICAgYnkgdGhlICJzZXQgYXV0by1s b2FkIGxpYnRocmVhZC1kYiIgY29tbWFuZC4gICovCi0rc3RhdGljIGludCBhdXRvX2xvYWRfdGhy ZWFkX2RiID0gMTsKLSsKLSsvKiAic2hvdyIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF90aHJl YWRfZGIgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzaG93 X2F1dG9fbG9hZF90aHJlYWRfZGIgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHks Ci0rCQkJICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0r ewotKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkaW5nIG9mIGluZmVyaW9y IHNwZWNpZmljIGxpYnRocmVhZF9kYiAiCi0rCQkJICAgICJpcyAlcy5cbiIpLAotKwkJICAgIHZh bHVlKTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBzZXRfbGlidGhyZWFkX2RiX3NlYXJjaF9wYXRo IChjaGFyICppZ25vcmVkLCBpbnQgZnJvbV90dHksCi0gCQkJICAgICAgc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKmMpCi1AQCAtMTE5LDYgKzEzNiwxMCBAQCBzdHJ1Y3QgdGhyZWFkX2RiX2luZm8K LSAgIC8qIEhhbmRsZSBmcm9tIGRsb3BlbiBmb3IgbGlidGhyZWFkX2RiLnNvLiAgKi8KLSAgIHZv aWQgKmhhbmRsZTsKLSAKLSsgIC8qIEFic29sdXRlIHBhdGhuYW1lIGZyb20gZ2RiX3JlYWxwYXRo IHRvIGRpc2sgZmlsZSB1c2VkIGZvciBkbG9wZW4taW5nCi0rICAgICBIQU5ETEUuICBJdCBtYXkg YmUgTlVMTCBmb3Igc3lzdGVtIGxpYnJhcnkuICAqLwotKyAgY2hhciAqZmlsZW5hbWU7Ci0rCi0g ICAvKiBTdHJ1Y3R1cmUgdGhhdCBpZGVudGlmaWVzIHRoZSBjaGlsZCBwcm9jZXNzIGZvciB0aGUK LSAgICAgIDxwcm9jX3NlcnZpY2UuaD4gaW50ZXJmYWNlLiAgKi8KLSAgIHN0cnVjdCBwc19wcm9j aGFuZGxlIHByb2NfaGFuZGxlOwotQEAgLTI0OCw2ICsyNjksOCBAQCBkZWxldGVfdGhyZWFkX2Ri X2luZm8gKGludCBwaWQpCi0gICBpZiAoaW5mby0+aGFuZGxlICE9IE5VTEwpCi0gICAgIGRsY2xv c2UgKGluZm8tPmhhbmRsZSk7Ci0gCi0rICB4ZnJlZSAoaW5mby0+ZmlsZW5hbWUpOwotKwotICAg aWYgKGluZm9fcHJldikKLSAgICAgaW5mb19wcmV2LT5uZXh0ID0gaW5mby0+bmV4dDsKLSAgIGVs c2UKLUBAIC04MDcsNiArODMwLDEwIEBAIHRyeV90aHJlYWRfZGJfbG9hZCAoY29uc3QgY2hhciAq bGlicmFyeSkKLSAKLSAgIGluZm8gPSBhZGRfdGhyZWFkX2RiX2luZm8gKGhhbmRsZSk7Ci0gCi0r ICAvKiBEbyBub3Qgc2F2ZSBzeXN0ZW0gbGlicmFyeSBuYW1lLCB0aGF0IG9uZSBpcyBhbHdheXMg dHJ1c3RlZC4gICovCi0rICBpZiAoc3RyY2hyIChsaWJyYXJ5LCAnLycpICE9IE5VTEwpCi0rICAg IGluZm8tPmZpbGVuYW1lID0gZ2RiX3JlYWxwYXRoIChsaWJyYXJ5KTsKLSsKLSAgIGlmICh0cnlf dGhyZWFkX2RiX2xvYWRfMSAoaW5mbykpCi0gICAgIHJldHVybiAxOwotIAotQEAgLTg1Niw2ICs4 ODMsOSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyICh2b2lkKQotIHsKLSAgIHN0cnVj dCBvYmpmaWxlICpvYmo7Ci0gCi0rICBpZiAoIWF1dG9fbG9hZF90aHJlYWRfZGIpCi0rICAgIHJl dHVybiAwOwotKwotICAgQUxMX09CSkZJTEVTIChvYmopCi0gICAgIGlmIChsaWJwdGhyZWFkX25h bWVfcCAob2JqLT5uYW1lKSkKLSAgICAgICB7Ci1AQCAtODk1LDYgKzkyNSw5IEBAIHRyeV90aHJl YWRfZGJfbG9hZF9mcm9tX2RpciAoY29uc3QgY2hhcgotICAgY2hhciAqcGF0aDsKLSAgIGludCBy ZXN1bHQ7Ci0gCi0rICBpZiAoIWF1dG9fbG9hZF90aHJlYWRfZGIpCi0rICAgIHJldHVybiAwOwot KwotICAgcGF0aCA9IHhtYWxsb2MgKGRpcl9sZW4gKyAxICsgc3RybGVuIChMSUJUSFJFQURfREJf U08pICsgMSk7Ci0gICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgcGF0aCk7Ci0gCi1A QCAtMTgwMiw2ICsxODM1LDE1MCBAQCB0aHJlYWRfZGJfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29w cyAqb3BzCi0gICBiZW5lYXRoLT50b19yZXN1bWUgKGJlbmVhdGgsIHB0aWQsIHN0ZXAsIHNpZ25v KTsKLSB9Ci0gCi0rLyogcXNvcnQgaGVscGVyIGZ1bmN0aW9uIGZvciBpbmZvX2F1dG9fbG9hZF9s aWJ0aHJlYWRfZGIsIHNvcnQgdGhlCi0rICAgdGhyZWFkX2RiX2luZm8gcG9pbnRlcnMgcHJpbWFy aWx5IGJ5IHRoZWlyIEZJTEVOQU1FIGFuZCBzZWNvbmRhcmlseSBieSB0aGVpcgotKyAgIFBJRCwg Ym90aCBpbiBhc2NlbmRpbmcgb3JkZXIuICAqLwotKwotK3N0YXRpYyBpbnQKLStpbmZvX2F1dG9f bG9hZF9saWJ0aHJlYWRfZGJfY29tcGFyZSAoY29uc3Qgdm9pZCAqYXAsIGNvbnN0IHZvaWQgKmJw KQotK3sKLSsgIHN0cnVjdCB0aHJlYWRfZGJfaW5mbyAqYSA9ICooc3RydWN0IHRocmVhZF9kYl9p bmZvICoqKSBhcDsKLSsgIHN0cnVjdCB0aHJlYWRfZGJfaW5mbyAqYiA9ICooc3RydWN0IHRocmVh ZF9kYl9pbmZvICoqKSBicDsKLSsgIGludCByZXR2YWw7Ci0rCi0rICByZXR2YWwgPSBzdHJjbXAg KGEtPmZpbGVuYW1lLCBiLT5maWxlbmFtZSk7Ci0rICBpZiAocmV0dmFsKQotKyAgICByZXR1cm4g cmV0dmFsOwotKwotKyAgcmV0dXJuIChhLT5waWQgPiBiLT5waWQpIC0gKGEtPnBpZCAtIGItPnBp ZCk7Ci0rfQotKwotKy8qIEltcGxlbWVudCAnaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiJy4g ICovCi0rCi0rc3RhdGljIHZvaWQKLStpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIgKGNoYXIg KmFyZ3MsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJl bnRfdWlvdXQ7Ci0rICBjb25zdCBjaGFyICpjcyA9IGFyZ3MgPyBhcmdzIDogIiI7Ci0rICBzdHJ1 Y3QgdGhyZWFkX2RiX2luZm8gKmluZm8sICoqYXJyYXk7Ci0rICB1bnNpZ25lZCBpbmZvX2NvdW50 LCB1bmlxdWVfZmlsZW5hbWVzOwotKyAgc2l6ZV90IG1heF9maWxlbmFtZV9sZW4sIG1heF9waWRz X2xlbiwgcGlkc19sZW47Ci0rICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLSsgIGNoYXIgKnBp ZHM7Ci0rICBpbnQgaTsKLSsKLSsgIHdoaWxlIChpc3NwYWNlICgqY3MpKQotKyAgICBjcysrOwot KyAgaWYgKCpjcykKLSsgICAgZXJyb3IgKF8oIidpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIn IGRvZXMgbm90IGFjY2VwdCBhbnkgcGFyYW1ldGVycyIpKTsKLSsKLSsgIGluZm9fY291bnQgPSAw OwotKyAgZm9yIChpbmZvID0gdGhyZWFkX2RiX2xpc3Q7IGluZm87IGluZm8gPSBpbmZvLT5uZXh0 KQotKyAgICBpZiAoaW5mby0+ZmlsZW5hbWUgIT0gTlVMTCkKLSsgICAgICBpbmZvX2NvdW50Kys7 Ci0rCi0rICBhcnJheSA9IHhtYWxsb2MgKHNpemVvZiAoKmFycmF5KSAqIGluZm9fY291bnQpOwot KyAgYmFja190byA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGFycmF5KTsKLSsKLSsgIGluZm9fY291 bnQgPSAwOwotKyAgZm9yIChpbmZvID0gdGhyZWFkX2RiX2xpc3Q7IGluZm87IGluZm8gPSBpbmZv LT5uZXh0KQotKyAgICBpZiAoaW5mby0+ZmlsZW5hbWUgIT0gTlVMTCkKLSsgICAgICBhcnJheVtp bmZvX2NvdW50KytdID0gaW5mbzsKLSsKLSsgIC8qIFNvcnQgQVJSQVkgYnkgZmlsZW5hbWVzIGFu ZCBQSURzLiAgKi8KLSsKLSsgIHFzb3J0IChhcnJheSwgaW5mb19jb3VudCwgc2l6ZW9mICgqYXJy YXkpLAotKwkgaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiX2NvbXBhcmUpOwotKwotKyAgLyog Q2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgdW5pcXVlIGZpbGVuYW1lcyAocm93cykgYW5kIHRoZSBt YXhpbXVtIHN0cmluZwotKyAgICAgbGVuZ3RoIG9mIFBJRHMgbGlzdCBmb3IgdGhlIHVuaXF1ZSBm aWxlbmFtZXMgKGNvbHVtbnMpLiAgKi8KLSsKLSsgIHVuaXF1ZV9maWxlbmFtZXMgPSAwOwotKyAg bWF4X2ZpbGVuYW1lX2xlbiA9IDA7Ci0rICBtYXhfcGlkc19sZW4gPSAwOwotKyAgcGlkc19sZW4g PSAwOwotKyAgZm9yIChpID0gMDsgaSA8IGluZm9fY291bnQ7IGkrKykKLSsgICAgewotKyAgICAg IGludCBwaWQgPSBhcnJheVtpXS0+cGlkOwotKyAgICAgIHNpemVfdCB0aGlzX3BpZF9sZW47Ci0r Ci0rICAgICAgZm9yICh0aGlzX3BpZF9sZW4gPSAwOyBwaWQgIT0gMDsgcGlkIC89IDEwKQotKwl0 aGlzX3BpZF9sZW4rKzsKLSsKLSsgICAgICBpZiAoaSA9PSAwIHx8IHN0cmNtcCAoYXJyYXlbaSAt IDFdLT5maWxlbmFtZSwgYXJyYXlbaV0tPmZpbGVuYW1lKSAhPSAwKQotKwl7Ci0rCSAgdW5pcXVl X2ZpbGVuYW1lcysrOwotKwkgIG1heF9maWxlbmFtZV9sZW4gPSBtYXggKG1heF9maWxlbmFtZV9s ZW4sCi0rCQkJCSAgc3RybGVuIChhcnJheVtpXS0+ZmlsZW5hbWUpKTsKLSsKLSsJICBpZiAoaSA+ IDApCi0rCSAgICB7Ci0rCSAgICAgIHBpZHNfbGVuIC09IHN0cmxlbiAoIiwgIik7Ci0rCSAgICAg IG1heF9waWRzX2xlbiA9IG1heCAobWF4X3BpZHNfbGVuLCBwaWRzX2xlbik7Ci0rCSAgICB9Ci0r CSAgcGlkc19sZW4gPSAwOwotKwl9Ci0rICAgICAgcGlkc19sZW4gKz0gdGhpc19waWRfbGVuICsg c3RybGVuICgiLCAiKTsKLSsgICAgfQotKyAgaWYgKGkpCi0rICAgIHsKLSsgICAgICBwaWRzX2xl biAtPSBzdHJsZW4gKCIsICIpOwotKyAgICAgIG1heF9waWRzX2xlbiA9IG1heCAobWF4X3BpZHNf bGVuLCBwaWRzX2xlbik7Ci0rICAgIH0KLSsKLSsgIC8qIFRhYmxlIGhlYWRlciBzaGlmdGVkIHJp Z2h0IGJ5IHByZWNlZGluZyAibGlidGhyZWFkLWRiOiAgIiB3b3VsZCBub3QgbWF0Y2gKLSsgICAg IGl0cyBjb2x1bW5zLiAgKi8KLSsgIGlmIChpbmZvX2NvdW50ID4gMCAmJiBhcmdzID09IGF1dG9f bG9hZF9pbmZvX3NjcmlwdHNfcGF0dGVybl9ubCkKLSsgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAi XG4iKTsKLSsKLSsgIG1ha2VfY2xlYW51cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwg MiwgdW5pcXVlX2ZpbGVuYW1lcywKLSsJCQkJICAgICAgICJMaW51eFRocmVhZERiVGFibGUiKTsK LSsKLSsgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCBtYXhfZmlsZW5hbWVfbGVuLCB1aV9s ZWZ0LCAiZmlsZW5hbWUiLAotKwkJICAgICAgICJGaWxlbmFtZSIpOwotKyAgdWlfb3V0X3RhYmxl X2hlYWRlciAodWlvdXQsIHBpZHNfbGVuLCB1aV9sZWZ0LCAiUElEcyIsICJQaWRzIik7Ci0rICB1 aV9vdXRfdGFibGVfYm9keSAodWlvdXQpOwotKwotKyAgcGlkcyA9IHhtYWxsb2MgKG1heF9waWRz X2xlbiArIDEpOwotKyAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgcGlkcyk7Ci0rCi0rICAvKiBOb3Rl IEkgaXMgaW5jcmVtZW50ZWQgaW5zaWRlIHRoZSBjeWNsZSwgbm90IGF0IGl0cyBlbmQuICAqLwot KyAgZm9yIChpID0gMDsgaSA8IGluZm9fY291bnQ7KQotKyAgICB7Ci0rICAgICAgc3RydWN0IGNs ZWFudXAgKmNoYWluID0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0 LCBOVUxMKTsKLSsgICAgICBjaGFyICpwaWRzX2VuZDsKLSsKLSsgICAgICBpbmZvID0gYXJyYXlb aV07Ci0rICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJmaWxlbmFtZSIsIGluZm8t PmZpbGVuYW1lKTsKLSsgICAgICBwaWRzX2VuZCA9IHBpZHM7Ci0rCi0rICAgICAgd2hpbGUgKGkg PCBpbmZvX2NvdW50ICYmIHN0cmNtcCAoaW5mby0+ZmlsZW5hbWUsIGFycmF5W2ldLT5maWxlbmFt ZSkgPT0gMCkKLSsJewotKwkgIGlmIChwaWRzX2VuZCAhPSBwaWRzKQotKwkgICAgewotKwkgICAg ICAqcGlkc19lbmQrKyA9ICcsJzsKLSsJICAgICAgKnBpZHNfZW5kKysgPSAnICc7Ci0rCSAgICB9 Ci0rCSAgcGlkc19lbmQgKz0geHNucHJpbnRmIChwaWRzX2VuZCwgJnBpZHNbbWF4X3BpZHNfbGVu ICsgMV0gLSBwaWRzX2VuZCwKLSsJCQkJICIldSIsIGFycmF5W2ldLT5waWQpOwotKwkgIGdkYl9h c3NlcnQgKHBpZHNfZW5kIDwgJnBpZHNbbWF4X3BpZHNfbGVuICsgMV0pOwotKwotKwkgIGkrKzsK LSsJfQotKyAgICAgICpwaWRzX2VuZCA9ICdcMCc7Ci0rCi0rICAgICAgdWlfb3V0X2ZpZWxkX3N0 cmluZyAodWlvdXQsICJwaWRzIiwgcGlkcyk7Ci0rCi0rICAgICAgdWlfb3V0X3RleHQgKHVpb3V0 LCAiXG4iKTsKLSsgICAgICBkb19jbGVhbnVwcyAoY2hhaW4pOwotKyAgICB9Ci0rCi0rICBkb19j bGVhbnVwcyAoYmFja190byk7Ci0rCi0rICBpZiAoaW5mb19jb3VudCA9PSAwKQotKyAgICB1aV9v dXRfbWVzc2FnZSAodWlvdXQsIDAsIF8oIk5vIGF1dG8tbG9hZGVkIGxpYnRocmVhZC1kYi5cbiIp KTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBpbml0X3RocmVhZF9kYl9vcHMgKHZvaWQpCi0gewot QEAgLTE4NjMsNiArMjA0MCwyMyBAQCBXaGVuIG5vbi16ZXJvLCBsaWJ0aHJlYWQtZGIgZGVidWdn aW5nIGlzCi0gCQkJICAgIHNob3dfbGlidGhyZWFkX2RiX2RlYnVnLAotIAkJCSAgICAmc2V0ZGVi dWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7Ci0gCi0rICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAo ImxpYnRocmVhZC1kYiIsIGNsYXNzX3N1cHBvcnQsCi0rCQkJICAgJmF1dG9fbG9hZF90aHJlYWRf ZGIsIF8oIlwKLStFbmFibGUgb3IgZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3Bl Y2lmaWMgbGlidGhyZWFkX2RiLiIpLCBfKCJcCi0rU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBp bmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIgaXMgZW5hYmxlZC4iKSwgXygiXAotK0lmIGVu YWJsZWQsIGxpYnRocmVhZF9kYiB3aWxsIGJlIHNlYXJjaGVkIGluICdzZXQgbGlidGhyZWFkLWRi LXNlYXJjaC1wYXRoJ1xuXAotK2xvY2F0aW9ucyB0byBsb2FkIGxpYnRocmVhZF9kYiBjb21wYXRp YmxlIHdpdGggdGhlIGluZmVyaW9yLlxuXAotK1N0YW5kYXJkIHN5c3RlbSBsaWJ0aHJlYWRfZGIg c3RpbGwgZ2V0cyBsb2FkZWQgZXZlbiB3aXRoIHRoaXMgb3B0aW9uIG9mZi5cblwKLStUaGlzIG9w dGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4i KSwKLSsJCQkgICBOVUxMLCBzaG93X2F1dG9fbG9hZF90aHJlYWRfZGIsCi0rCQkJICAgYXV0b19s b2FkX3NldF9jbWRsaXN0X2dldCAoKSwKLSsJCQkgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dl dCAoKSk7Ci0rCi0rICBhZGRfY21kICgibGlidGhyZWFkLWRiIiwgY2xhc3NfaW5mbywgaW5mb19h dXRvX2xvYWRfbGlidGhyZWFkX2RiLAotKwkgICBfKCJQcmludCB0aGUgbGlzdCBvZiBsb2FkZWQg aW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiLlxuXAotK1VzYWdlOiBpbmZvIGF1dG8tbG9h ZCBsaWJ0aHJlYWQtZGIiKSwKLSsJICAgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOwot KwotICAgLyogQWRkIG91cnNlbHZlcyB0byBvYmpmaWxlIGV2ZW50IGNoYWluLiAgKi8KLSAgIG9i c2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAodGhyZWFkX2RiX25ld19vYmpmaWxlKTsKLSAKLUlu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1NzQz NzUwMyArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4 IDAwOjQ2OjQ3LjU1NzA3OTc3NyArMDIwMAotQEAgLTk0NSw4ICs5NDUsOCBAQCBjYXB0dXJlZF9t YWluICh2b2lkICpkYXRhKQotICAgLyogU2tpcCBhdXRvLWxvYWRpbmcgc2VjdGlvbi1zcGVjaWZp ZWQgc2NyaXB0cyB1bnRpbCB3ZSd2ZSBzb3VyY2VkCi0gICAgICBsb2NhbF9nZGJpbml0ICh3aGlj aCBpcyBvZnRlbiB1c2VkIHRvIGF1Z21lbnQgdGhlIHNvdXJjZSBzZWFyY2gKLSAgICAgIHBhdGgp LiAgKi8KLS0gIHNhdmVfYXV0b19sb2FkID0gZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZDsKLS0gIGdk YnB5X2dsb2JhbF9hdXRvX2xvYWQgPSAwOwotKyAgc2F2ZV9hdXRvX2xvYWQgPSBnbG9iYWxfYXV0 b19sb2FkOwotKyAgZ2xvYmFsX2F1dG9fbG9hZCA9IDA7Ci0gCi0gICBpZiAoZXhlY2FyZyAhPSBO VUxMCi0gICAgICAgJiYgc3ltYXJnICE9IE5VTEwKLUBAIC0xMDIyLDE0ICsxMDIyLDI0IEBAIGNh cHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gCi0gICAvKiBSZWFkIHRoZSAuZ2RiaW5pdCBmaWxl IGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgKmlmKiBpdCBpc24ndAotICAgICAgdGhlIHNhbWUg YXMgdGhlICRIT01FLy5nZGJpbml0IGZpbGUgKGl0IHNob3VsZCBleGlzdCwgYWxzbykuICAqLwot LSAgaWYgKGxvY2FsX2dkYmluaXQgJiYgIWluaGliaXRfZ2RiaW5pdCkKLS0gICAgY2F0Y2hfY29t bWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGxvY2FsX2dkYmluaXQsIDAsIFJFVFVSTl9NQVNL X0FMTCk7Ci0rICBpZiAobG9jYWxfZ2RiaW5pdCkKLSsgICAgewotKyAgICAgIGF1dG9fbG9hZF9s b2NhbF9nZGJpbml0X3BhdGhuYW1lID0gZ2RiX3JlYWxwYXRoIChsb2NhbF9nZGJpbml0KTsKLSsK LSsgICAgICBpZiAoIWluaGliaXRfZ2RiaW5pdCAmJiBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCkK LSsJewotKwkgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCA9IDE7Ci0rCi0rCSAgY2F0 Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGxvY2FsX2dkYmluaXQsIDAsCi0rCQkJ CVJFVFVSTl9NQVNLX0FMTCk7Ci0rCX0KLSsgICAgfQotIAotICAgLyogTm93IHRoYXQgYWxsIC5n ZGJpbml0J3MgaGF2ZSBiZWVuIHJlYWQgYW5kIGFsbCAtZCBvcHRpb25zIGhhdmUgYmVlbgotICAg ICAgcHJvY2Vzc2VkLCB3ZSBjYW4gcmVhZCBhbnkgc2NyaXB0cyBtZW50aW9uZWQgaW4gU1lNQVJH LgotICAgICAgV2Ugd2FpdCB1bnRpbCBub3cgYmVjYXVzZSBpdCBpcyBjb21tb24gdG8gYWRkIHRv IHRoZSBzb3VyY2Ugc2VhcmNoCi0gICAgICBwYXRoIGluIGxvY2FsX2dkYmluaXQuICAqLwotLSAg Z2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IHNhdmVfYXV0b19sb2FkOwotKyAgZ2xvYmFsX2F1dG9f bG9hZCA9IHNhdmVfYXV0b19sb2FkOwotICAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQotICAgICBs b2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7Ci0gCi1AQCAtMTE5Niw3ICsx MjA2LDcgQEAgQXQgc3RhcnR1cCwgR0RCIHJlYWRzIHRoZSBmb2xsb3dpbmcgaW5pdAotICIpLCBo b21lX2dkYmluaXQpOwotICAgaWYgKGxvY2FsX2dkYmluaXQpCi0gICAgIGZwcmludGZfdW5maWx0 ZXJlZCAoc3RyZWFtLCBfKCJcCi0tICAgKiBsb2NhbCBpbml0IGZpbGU6IC4vJXNcblwKLSsgICAq IGxvY2FsIGluaXQgZmlsZSAoc2VlIGFsc28gJ3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCcp OiAuLyVzXG5cCi0gIiksIGxvY2FsX2dkYmluaXQpOwotICAgZnB1dHNfdW5maWx0ZXJlZCAoXygi XG5cCi0gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHR5cGUgXCJoZWxwXCIgZnJvbSB3aXRoaW4gR0RC LCBvciBjb25zdWx0IHRoZVxuXAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9n ZGIudGV4aW5mbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv ZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDQ6MjYuOTI4NDM3NTc3ICswMjAwCi0rKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDY6 NDcuNTU4MDc5Nzc0ICswMjAwCi1AQCAtMTAzNCw2ICsxMDM0LDcgQEAgWW91IGNhbiBydW4gQHZh bHVle0dEQk59IGluIHZhcmlvdXMgYWx0ZQotIGJhdGNoIG1vZGUgb3IgcXVpZXQgbW9kZS4KLSAK LSBAdGFibGUgQGNvZGUKLStAYW5jaG9yey1ueH0KLSBAaXRlbSAtbngKLSBAaXRlbXggLW4KLSBA Y2luZGV4IEBjb2Rley0tbnh9Ci1AQCAtMTI2NSw2ICsxMjY2LDcgQEAgSGVyZSdzIHRoZSBkZXNj cmlwdGlvbiBvZiB3aGF0IEB2YWx1ZXtHRAotIFNldHMgdXAgdGhlIGNvbW1hbmQgaW50ZXJwcmV0 ZXIgYXMgc3BlY2lmaWVkIGJ5IHRoZSBjb21tYW5kIGxpbmUKLSAoQHB4cmVme01vZGUgT3B0aW9u cywgaW50ZXJwcmV0ZXJ9KS4KLSAKLStAYW5jaG9ye09wdGlvbiAtaW5pdC1ldmFsLWNvbW1hbmR9 Ci0gQGl0ZW0KLSBFeGVjdXRlcyBjb21tYW5kcyBhbmQgY29tbWFuZCBmaWxlcyBzcGVjaWZpZWQg YnkgdGhlIEBzYW1wey1pZXh9IGFuZAotIEBzYW1wey1peH0gb3B0aW9ucyBpbiB0aGVpciBzcGVj aWZpZWQgb3JkZXIuICBVc3VhbGx5IHlvdSBzaG91bGQgdXNlIHRoZQotQEAgLTEyNzksNiArMTI4 MSw3IEBAIHVzZWQgd2hlbiBidWlsZGluZyBAdmFsdWV7R0RCTn07IEBweHJlZnsKLSAgLFN5c3Rl bS13aWRlIGNvbmZpZ3VyYXRpb24gYW5kIHNldHRpbmdzfSkgYW5kIGV4ZWN1dGVzIGFsbCB0aGUg Y29tbWFuZHMgaW4KLSB0aGF0IGZpbGUuCi0gCi0rQGFuY2hvcntIb21lIERpcmVjdG9yeSBJbml0 IEZpbGV9Ci0gQGl0ZW0KLSBSZWFkcyB0aGUgaW5pdCBmaWxlIChpZiBhbnkpIGluIHlvdXIgaG9t ZSBkaXJlY3RvcnlAZm9vdG5vdGV7T24KLSBET1MvV2luZG93cyBzeXN0ZW1zLCB0aGUgaG9tZSBk aXJlY3RvcnkgaXMgdGhlIG9uZSBwb2ludGVkIHRvIGJ5IHRoZQotQEAgLTEyODgsOSArMTI5MSwx MiBAQCB0aGF0IGZpbGUuCi0gQGl0ZW0KLSBQcm9jZXNzZXMgY29tbWFuZCBsaW5lIG9wdGlvbnMg YW5kIG9wZXJhbmRzLgotIAotK0BhbmNob3J7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVj dG9yeSBkdXJpbmcgU3RhcnR1cH0KLSBAaXRlbQotIFJlYWRzIGFuZCBleGVjdXRlcyB0aGUgY29t bWFuZHMgZnJvbSBpbml0IGZpbGUgKGlmIGFueSkgaW4gdGhlIGN1cnJlbnQKLS13b3JraW5nIGRp cmVjdG9yeS4gIFRoaXMgaXMgb25seSBkb25lIGlmIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcwot K3dvcmtpbmcgZGlyZWN0b3J5IGFzIGxvbmcgYXMgQHNhbXB7c2V0IGF1dG8tbG9hZCBsb2NhbC1n ZGJpbml0fSBpcyBzZXQgdG8KLStAc2FtcHtvbn0gKEBweHJlZntJbml0IEZpbGUgaW4gdGhlIEN1 cnJlbnQgRGlyZWN0b3J5fSkuCi0rVGhpcyBpcyBvbmx5IGRvbmUgaWYgdGhlIGN1cnJlbnQgZGly ZWN0b3J5IGlzCi0gZGlmZmVyZW50IGZyb20geW91ciBob21lIGRpcmVjdG9yeS4gIFRodXMsIHlv dSBjYW4gaGF2ZSBtb3JlIHRoYW4gb25lCi0gaW5pdCBmaWxlLCBvbmUgZ2VuZXJpYyBpbiB5b3Vy IGhvbWUgZGlyZWN0b3J5LCBhbmQgYW5vdGhlciwgc3BlY2lmaWMKLSB0byB0aGUgcHJvZ3JhbSB5 b3UgYXJlIGRlYnVnZ2luZywgaW4gdGhlIGRpcmVjdG9yeSB3aGVyZSB5b3UgaW52b2tlCi1AQCAt MTMwNiw3ICsxMzEyLDcgQEAgSWYgeW91IHdpc2ggdG8gZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5n Ci0geW91IG11c3QgZG8gc29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZzoKLSAKLSBAc21hbGxl eGFtcGxlCi0tJCBnZGIgLWlleCAic2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFt Ci0rJCBnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBvZmYiIG15cHJvZ3Jh bQotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0gT3B0aW9uIEBzYW1wey1leH0gZG9lcyBub3Qgd29y ayBiZWNhdXNlIHRoZSBhdXRvLWxvYWRpbmcgaXMgdGhlbiB0dXJuZWQKLUBAIC0yODkxLDYgKzI4 OTcsNyBAQCBwcm9ncmFtcyB3aXRoIG11bHRpcGxlIHRocmVhZHMuCi0gQHhyZWZ7U2V0IFdhdGNo cG9pbnRzLCxTZXR0aW5nIFdhdGNocG9pbnRzfSwgZm9yIGluZm9ybWF0aW9uIGFib3V0Ci0gd2F0 Y2hwb2ludHMgaW4gcHJvZ3JhbXMgd2l0aCBtdWx0aXBsZSB0aHJlYWRzLgotIAotK0BhbmNob3J7 c2V0IGxpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0KLSBAdGFibGUgQGNvZGUKLSBAa2luZGV4IHNl dCBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGgKLSBAY2luZGV4IHNlYXJjaCBwYXRoIGZvciBAY29k ZXtsaWJ0aHJlYWRfZGJ9Ci1AQCAtMjkwNSwxMSArMjkxMiwxNSBAQCBtYWNyby4KLSBPbiBAc2N7 Z251fS9MaW51eCBhbmQgU29sYXJpcyBzeXN0ZW1zLCBAdmFsdWV7R0RCTn0gdXNlcyBhIGBgaGVs cGVyJycKLSBAY29kZXtsaWJ0aHJlYWRfZGJ9IGxpYnJhcnkgdG8gb2J0YWluIGluZm9ybWF0aW9u IGFib3V0IHRocmVhZHMgaW4gdGhlCi0gaW5mZXJpb3IgcHJvY2Vzcy4gIEB2YWx1ZXtHREJOfSB3 aWxsIHVzZSBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9Ci0tdG8gZmluZCBAY29kZXts aWJ0aHJlYWRfZGJ9LgotK3RvIGZpbmQgQGNvZGV7bGlidGhyZWFkX2RifS4gIEB2YWx1ZXtHREJO fSBhbHNvIGNvbnN1bHRzIGZpcnN0IGlmIGluZmVyaW9yCi0rc3BlY2lmaWMgdGhyZWFkIGRlYnVn Z2luZyBsaWJyYXJ5IGxvYWRpbmcgaXMgZW5hYmxlZAotK2J5IEBzYW1we3NldCBhdXRvLWxvYWQg bGlidGhyZWFkLWRifSAoQHB4cmVme2xpYnRocmVhZF9kYi5zby4xIGZpbGV9KS4KLSAKLSBBIHNw ZWNpYWwgZW50cnkgQHNhbXB7JHNkaXJ9IGZvciBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBh dGh9Ci0gcmVmZXJzIHRvIHRoZSBkZWZhdWx0IHN5c3RlbSBkaXJlY3RvcmllcyB0aGF0IGFyZQot LW5vcm1hbGx5IHNlYXJjaGVkIGZvciBsb2FkaW5nIHNoYXJlZCBsaWJyYXJpZXMuCi0rbm9ybWFs bHkgc2VhcmNoZWQgZm9yIGxvYWRpbmcgc2hhcmVkIGxpYnJhcmllcy4gIFRoZSBAc2FtcHskc2Rp cn0gZW50cnkKLStpcyB0aGUgb25seSBraW5kIG5vdCBuZWVkaW5nIHRvIGJlIGVuYWJsZWQgYnkg QHNhbXB7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9Ci0rKEBweHJlZntsaWJ0aHJlYWRfZGIu c28uMSBmaWxlfSkuCi0gCi0gQSBzcGVjaWFsIGVudHJ5IEBzYW1weyRwZGlyfSBmb3IgQHNhbXB7 bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRofQotIHJlZmVycyB0byB0aGUgZGlyZWN0b3J5IGZyb20g d2hpY2ggQGNvZGV7bGlicHRocmVhZH0KLUBAIC0yMDMyMCw2ICsyMDMzMSw3IEBAIGRlc2NyaWJl ZCBoZXJlLgotICogU2NyZWVuIFNpemU6OiAgICAgICAgICAgICAgICAgU2NyZWVuIHNpemUKLSAq IE51bWJlcnM6OiAgICAgICAgICAgICAgICAgICAgIE51bWJlcnMKLSAqIEFCSTo6ICAgICAgICAg ICAgICAgICAgICAgICAgIENvbmZpZ3VyaW5nIHRoZSBjdXJyZW50IEFCSQotKyogQXV0by1sb2Fk aW5nOjogICAgICAgICAgICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5nIGFzc29jaWF0ZWQgZmls ZXMKLSAqIE1lc3NhZ2VzL1dhcm5pbmdzOjogICAgICAgICAgIE9wdGlvbmFsIHdhcm5pbmdzIGFu ZCBtZXNzYWdlcwotICogRGVidWdnaW5nIE91dHB1dDo6ICAgICAgICAgICAgT3B0aW9uYWwgbWVz c2FnZXMgYWJvdXQgaW50ZXJuYWwgaGFwcGVuaW5ncwotICogT3RoZXIgTWlzYyBTZXR0aW5nczo6 ICAgICAgICAgT3RoZXIgTWlzY2VsbGFuZW91cyBTZXR0aW5ncwotQEAgLTIwNzQ1LDYgKzIwNzU3 LDIyNyBAQCBXaXRoIG5vIGFyZ3VtZW50LCBzaG93IHRoZSBsaXN0IG9mIHN1cHBvCi0gU2V0IHRo ZSBjdXJyZW50IENAdHsrK30gQUJJIHRvIEB2YXJ7YWJpfSwgb3IgcmV0dXJuIHRvIGF1dG9tYXRp YyBkZXRlY3Rpb24uCi0gQGVuZCB0YWJsZQotIAotK0Bub2RlIEF1dG8tbG9hZGluZwotK0BzZWN0 aW9uIEF1dG9tYXRpY2FsbHkgbG9hZGluZyBhc3NvY2lhdGVkIGZpbGVzCi0rQGNpbmRleCBhdXRv LWxvYWRpbmcKLSsKLStAdmFsdWV7R0RCTn0gc29tZXRpbWVzIHJlYWRzIGZpbGVzIHdpdGggY29t bWFuZHMgYW5kIHNldHRpbmdzIGF1dG9tYXRpY2FsbHksCi0rd2l0aG91dCBiZWluZyBleHBsaWNp dGx5IHRvbGQgc28gYnkgdGhlIHVzZXIuICBXZSBjYWxsIHRoaXMgZmVhdHVyZQotK0BkZm57YXV0 by1sb2FkaW5nfS4gIFdoaWxlIGF1dG8tbG9hZGluZyBpcyB1c2VmdWwgZm9yIGF1dG9tYXRpY2Fs bHkgYWRhcHRpbmcKLStAdmFsdWV7R0RCTn0gdG8gdGhlIG5lZWRzIG9mIHlvdXIgcHJvamVjdCwg aXQgY2FuIHNvbWV0aW1lcyBwcm9kdWNlIHVuZXhwZWN0ZWQKLStyZXN1bHRzIG9yIGludHJvZHVj ZSBzZWN1cml0eSByaXNrcyAoZS5nLiwgaWYgdGhlIGZpbGUgY29tZXMgZnJvbSB1bnRydXN0ZWQK LStzb3VyY2VzKS4KLSsKLStGb3IgdGhlc2UgcmVhc29ucywgQHZhbHVle0dEQk59IGluY2x1ZGVz IGNvbW1hbmRzIGFuZCBvcHRpb25zIHRvIGxldCB5b3UKLStjb250cm9sIHdoZW4gdG8gYXV0by1s b2FkIGZpbGVzIGFuZCB3aGljaCBmaWxlcyBzaG91bGQgYmUgYXV0by1sb2FkZWQuCi0rCi0rQHRh YmxlIEBjb2RlCi0rQGFuY2hvcntzZXQgYXV0by1sb2FkIG9mZn0KLStAa2luZGV4IHNldCBhdXRv LWxvYWQgb2ZmCi0rQGl0ZW0gc2V0IGF1dG8tbG9hZCBvZmYKLStHbG9iYWxseSBkaXNhYmxlIGxv YWRpbmcgb2YgYWxsIGF1dG8tbG9hZGVkIGZpbGVzLgotK1lvdSBtYXkgd2FudCB0byB1c2UgdGhp cyBjb21tYW5kIHdpdGggdGhlIEBzYW1wey1pZXh9IG9wdGlvbgotKyhAcHhyZWZ7T3B0aW9uIC1p bml0LWV2YWwtY29tbWFuZH0pIHN1Y2ggYXM6Ci0rQHNtYWxsZXhhbXBsZQotKyQgQGtiZHtnZGIg LWlleCAic2V0IGF1dG8tbG9hZCBvZmYiIHVudHJ1c3RlZC1leGVjdXRhYmxlIGNvcmVmaWxlfQot K0BlbmQgc21hbGxleGFtcGxlCi0rCi0rQmUgYXdhcmUgdGhhdCBzeXN0ZW0gaW5pdCBmaWxlIChA cHhyZWZ7U3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbn0pCi0rYW5kIGluaXQgZmlsZXMgZnJvbSB5 b3VyIGhvbWUgZGlyZWN0b3J5IChAcHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkKLStz dGlsbCBnZXQgcmVhZCAoYXMgdGhleSBjb21lIGZyb20gZ2VuZXJhbGx5IHRydXN0ZWQgZGlyZWN0 b3JpZXMpLgotK1RvIHByZXZlbnQgQHZhbHVle0dEQk59IGZyb20gYXV0by1sb2FkaW5nIGV2ZW4g dGhvc2UgaW5pdCBmaWxlcywgdXNlIHRoZQotK0BvcHRpb257LW54fSBvcHRpb24gKEBweHJlZntN b2RlIE9wdGlvbnN9KSwgaW4gYWRkaXRpb24gdG8KLStAY29kZXtzZXQgYXV0by1sb2FkIG5vfS4K LSsKLStAYW5jaG9ye3Nob3cgYXV0by1sb2FkfQotK0BraW5kZXggc2hvdyBhdXRvLWxvYWQKLStA aXRlbSBzaG93IGF1dG8tbG9hZAotK1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcgb2YgZWFjaCBz cGVjaWZpYyBAc2FtcHthdXRvLWxvYWR9IGZpbGUocykgaXMgZW5hYmxlZAotK29yIGRpc2FibGVk LgotKwotK0BzbWFsbGV4YW1wbGUKLSsoZ2RiKSBzaG93IGF1dG8tbG9hZAotK2dkYi1zY3JpcHRz OiAgQXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBp cyBvbi4KLStsaWJ0aHJlYWQtZGI6ICBBdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMg bGlidGhyZWFkX2RiIGlzIG9uLgotK2xvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdk YmluaXQgc2NyaXB0IGZyb20gY3VycmVudCBkaXJlY3RvcnkgaXMgb24uCi0rcHl0aG9uLXNjcmlw dHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMgaXMgb24uCi0rQGVuZCBzbWFsbGV4 YW1wbGUKLSsKLStAYW5jaG9ye2luZm8gYXV0by1sb2FkfQotK0BraW5kZXggaW5mbyBhdXRvLWxv YWQKLStAaXRlbSBpbmZvIGF1dG8tbG9hZAotK1ByaW50IHdoZXRoZXIgZWFjaCBzcGVjaWZpYyBA c2FtcHthdXRvLWxvYWR9IGZpbGUocykgaGF2ZSBiZWVuIGF1dG8tbG9hZGVkIG9yCi0rbm90Lgot KwotK0BzbWFsbGV4YW1wbGUKLSsoZ2RiKSBpbmZvIGF1dG8tbG9hZAotK2dkYi1zY3JpcHRzOgot K0xvYWRlZCAgU2NyaXB0Ci0rWWVzICAgICAvaG9tZS91c2VyL2dkYi9nZGItZ2RiLmdkYgotK2xp YnRocmVhZC1kYjogIE5vIGF1dG8tbG9hZGVkIGxpYnRocmVhZC1kYi4KLStsb2NhbC1nZGJpbml0 OiAgTG9jYWwgLmdkYmluaXQgZmlsZSAiL2hvbWUvdXNlci9nZGIvLmdkYmluaXQiIGhhcyBiZWVu IGxvYWRlZC4KLStweXRob24tc2NyaXB0czoKLStMb2FkZWQgIFNjcmlwdAotK1llcyAgICAgL2hv bWUvdXNlci9nZGIvZ2RiLWdkYi5weQotK0BlbmQgc21hbGxleGFtcGxlCi0rQGVuZCB0YWJsZQot KwotK1RoZXNlIGFyZSB2YXJpb3VzIGtpbmRzIG9mIGZpbGVzIEB2YWx1ZXtHREJOfSBjYW4gYXV0 b21hdGljYWxseSBsb2FkOgotKwotK0BpdGVtaXplIEBidWxsZXQKLStAaXRlbQotK0B4cmVme29i amZpbGUtZ2RiLnB5IGZpbGV9LCBjb250cm9sbGVkIGJ5IEByZWZ7c2V0IGF1dG8tbG9hZCBweXRo b24tc2NyaXB0c30uCi0rQGl0ZW0KLStAeHJlZntvYmpmaWxlLWdkYi5nZGIgZmlsZX0sIGNvbnRy b2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzfS4KLStAaXRlbQotK0B4cmVm e2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259LAotK2NvbnRyb2xsZWQgYnkgQHJlZntzZXQg YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfS4KLStAaXRlbQotK0B4cmVme0luaXQgRmlsZSBpbiB0 aGUgQ3VycmVudCBEaXJlY3Rvcnl9LAotK2NvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2Fk IGxvY2FsLWdkYmluaXR9LgotK0BpdGVtCi0rQHhyZWZ7bGlidGhyZWFkX2RiLnNvLjEgZmlsZX0s IGNvbnRyb2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0uCi0rQGVuZCBp dGVtaXplCi0rCi0rVGhlc2UgYXJlIEB2YWx1ZXtHREJOfSBjb250cm9sIGNvbW1hbmRzIGZvciB0 aGUgYXV0by1sb2FkaW5nOgotKwotK0BtdWx0aXRhYmxlIEBjb2x1bW5mcmFjdGlvbnMgLjUgLjUK LStAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIG9mZn0uCi0rQHRhYiBEaXNhYmxlIGF1dG8tbG9h ZGluZyBnbG9iYWxseS4KLStAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZH0uCi0rQHRhYiBTaG93 IHNldHRpbmcgb2YgYWxsIGtpbmRzIG9mIGZpbGVzLgotK0BpdGVtIEB4cmVme2luZm8gYXV0by1s b2FkfS4KLStAdGFiIFNob3cgc3RhdGUgb2YgYWxsIGtpbmRzIG9mIGZpbGVzLgotK0BpdGVtIEB4 cmVme3NldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9LgotK0B0YWIgQ29udHJvbCBmb3IgQHZhbHVl e0dEQk59IGNvbW1hbmQgc2NyaXB0cy4KLStAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBnZGIt c2NyaXB0c30uCi0rQHRhYiBTaG93IHNldHRpbmcgb2YgQHZhbHVle0dEQk59IGNvbW1hbmQgc2Ny aXB0cy4KLStAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0c30uCi0rQHRhYiBT aG93IHN0YXRlIG9mIEB2YWx1ZXtHREJOfSBjb21tYW5kIHNjcmlwdHMuCi0rQGl0ZW0gQHhyZWZ7 c2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCi0rQHRhYiBDb250cm9sIGZvciBAdmFsdWV7 R0RCTn0gUHl0aG9uIHNjcmlwdHMuCi0rQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHN9LgotK0B0YWIgU2hvdyBzZXR0aW5nIG9mIEB2YWx1ZXtHREJOfSBQeXRob24gc2Ny aXB0cy4KLStAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCi0rQHRh YiBTaG93IHN0YXRlIG9mIEB2YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0cy4KLStAaXRlbSBAeHJl ZntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgotK0B0YWIgQ29udHJvbCBmb3IgaW5pdCBm aWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLStAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9h ZCBsb2NhbC1nZGJpbml0fS4KLStAdGFiIFNob3cgc2V0dGluZyBvZiBpbml0IGZpbGUgaW4gdGhl IGN1cnJlbnQgZGlyZWN0b3J5LgotK0BpdGVtIEB4cmVme2luZm8gYXV0by1sb2FkIGxvY2FsLWdk YmluaXR9LgotK0B0YWIgU2hvdyBzdGF0ZSBvZiBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGly ZWN0b3J5LgotK0BpdGVtIEB4cmVme3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifS4KLStAdGFi IENvbnRyb2wgZm9yIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KLStAaXRlbSBAeHJlZntzaG93 IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgotK0B0YWIgU2hvdyBzZXR0aW5nIG9mIHRocmVhZCBk ZWJ1Z2dpbmcgbGlicmFyeS4KLStAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQt ZGJ9LgotK0B0YWIgU2hvdyBzdGF0ZSBvZiB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCi0rQGVu ZCBtdWx0aXRhYmxlCi0rCi0rQG1lbnUKLSsqIEluaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJl Y3Rvcnk6OiBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fQotKyog bGlidGhyZWFkX2RiLnNvLjEgZmlsZTo6ICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8g YXV0by1sb2FkIGxpYnRocmVhZC1kYn0KLSsqIG9iamZpbGUtZ2RiLmdkYiBmaWxlOjogICAgICAg ICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0fQotK0B4cmVm e1B5dGhvbiBBdXRvLWxvYWRpbmd9LgotK0BlbmQgbWVudQotKwotK0Bub2RlIEluaXQgRmlsZSBp biB0aGUgQ3VycmVudCBEaXJlY3RvcnkKLStAc3Vic2VjdGlvbiBBdXRvbWF0aWNhbGx5IGxvYWRp bmcgaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQotK0BjaW5kZXggYXV0by1sb2Fk aW5nIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKLSsKLStCeSBkZWZhdWx0LCBA dmFsdWV7R0RCTn0gcmVhZHMgYW5kIGV4ZWN1dGVzIHRoZSBjYW5uZWQgc2VxdWVuY2VzIG9mIGNv bW1hbmRzCi0rZnJvbSBpbml0IGZpbGUgKGlmIGFueSkgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBk aXJlY3RvcnksCi0rc2VlIEByZWZ7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeSBk dXJpbmcgU3RhcnR1cH0uCi0rCi0rQHRhYmxlIEBjb2RlCi0rQGFuY2hvcntzZXQgYXV0by1sb2Fk IGxvY2FsLWdkYmluaXR9Ci0rQGtpbmRleCBzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKLStA aXRlbSBzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQgW29ufG9mZl0KLStFbmFibGUgb3IgZGlz YWJsZSB0aGUgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMKLSso QHB4cmVme1NlcXVlbmNlc30pIGZvdW5kIGluIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJl Y3RvcnkuCi0rCi0rQGFuY2hvcntzaG93IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fQotK0BraW5k ZXggc2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAotK0BpdGVtIHNob3cgYXV0by1sb2FkIGxv Y2FsLWdkYmluaXQKLStTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5j ZXMgb2YgY29tbWFuZHMgZnJvbSBpbml0IGZpbGUgaW4gdGhlCi0rY3VycmVudCBkaXJlY3Rvcnkg aXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KLSsKLStAYW5jaG9ye2luZm8gYXV0by1sb2FkIGxvY2Fs LWdkYmluaXR9Ci0rQGtpbmRleCBpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0Ci0rQGl0ZW0g aW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAotK1ByaW50IHdoZXRoZXIgY2FubmVkIHNlcXVl bmNlcyBvZiBjb21tYW5kcyBmcm9tIGluaXQgZmlsZSBpbiB0aGUKLStjdXJyZW50IGRpcmVjdG9y eSBoYXZlIGJlZW4gYXV0by1sb2FkZWQuCi0rQGVuZCB0YWJsZQotKwotK0Bub2RlIGxpYnRocmVh ZF9kYi5zby4xIGZpbGUKLStAc3Vic2VjdGlvbiBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgdGhyZWFk IGRlYnVnZ2luZyBsaWJyYXJ5Ci0rQGNpbmRleCBhdXRvLWxvYWRpbmcgbGlidGhyZWFkX2RiLnNv LjEKLSsKLStUaGlzIGZlYXR1cmUgaXMgY3VycmVudGx5IHByZXNlbnQgb25seSBvbiBAc2N7Z251 fS9MaW51eCBuYXRpdmUgaG9zdHMuCi0rCi0rQHZhbHVle0dEQk59IHJlYWRzIGluIHNvbWUgY2Fz ZXMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5IGZyb20gcGxhY2VzIHNwZWNpZmljCi0rdG8gdGhl IGluZmVyaW9yIChAcHhyZWZ7c2V0IGxpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0pLgotKwotK1Ro ZSBzcGVjaWFsIEBzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0gZW50cnkgQHNhbXB7JHNk aXJ9IGlzIHByb2Nlc3NlZAotK3dpdGhvdXQgY2hlY2tpbmcgdGhpcyBAc2FtcHtzZXQgYXV0by1s b2FkIGxpYnRocmVhZC1kYn0gc3dpdGNoIGFzIHN5c3RlbQotK2xpYnJhcmllcyBoYXZlIHRvIGJl IHRydXN0ZWQgaW4gZ2VuZXJhbC4gIEluIGFsbCBvdGhlciBjYXNlcyBvZgotK0BzYW1we2xpYnRo cmVhZC1kYi1zZWFyY2gtcGF0aH0gZW50cmllcyBAdmFsdWV7R0RCTn0gY2hlY2tzIGZpcnN0IGlm IEBzYW1we3NldAotK2F1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9IGlzIGVuYWJsZWQgYmVmb3JlIHRy eWluZyB0byBvcGVuIHN1Y2ggdGhyZWFkIGRlYnVnZ2luZwotK2xpYnJhcnkuCi0rCi0rQHRhYmxl IEBjb2RlCi0rQGFuY2hvcntzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0KLStAa2luZGV4IHNl dCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCi0rQGl0ZW0gc2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQt ZGIgW29ufG9mZl0KLStFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5nIG9mIGluZmVy aW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KLSsKLStAYW5jaG9ye3Nob3cg YXV0by1sb2FkIGxpYnRocmVhZC1kYn0KLStAa2luZGV4IHNob3cgYXV0by1sb2FkIGxpYnRocmVh ZC1kYgotK0BpdGVtIHNob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYgotK1Nob3cgd2hldGhlciBh dXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5 IGlzCi0rZW5hYmxlZCBvciBkaXNhYmxlZC4KLSsKLStAYW5jaG9ye2luZm8gYXV0by1sb2FkIGxp YnRocmVhZC1kYn0KLStAa2luZGV4IGluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYgotK0BpdGVt IGluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYgotK1ByaW50IHRoZSBsaXN0IG9mIGFsbCBsb2Fk ZWQgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJpZXMgYW5kCi0rZm9y IGVhY2ggc3VjaCBsaWJyYXJ5IHByaW50IGxpc3Qgb2YgaW5mZXJpb3IgQHZhcntwaWR9cyB1c2lu ZyBpdC4KLStAZW5kIHRhYmxlCi0rCi0rQG5vZGUgb2JqZmlsZS1nZGIuZ2RiIGZpbGUKLStAc3Vi c2VjdGlvbiBUaGUgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIuZ2RifSBmaWxlCi0rQGNpbmRleCBh dXRvLWxvYWRpbmcgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIuZ2RifQotKwotK0B2YWx1ZXtHREJO fSB0cmllcyB0byBsb2FkIGFuIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLmdkYn0gZmlsZSBjb250 YWluaW5nCi0rY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyAoQHB4cmVme1NlcXVlbmNlc30p LCBhcyBsb25nIGFzIEBzYW1we3NldAotK2F1dG8tbG9hZCBnZGItc2NyaXB0c30gaXMgc2V0IHRv IEBzYW1we29ufS4KLSsKLStGb3IgbW9yZSBiYWNrZ3JvdW5kIHJlZmVyIHRvIHRoZSBzaW1pbGFy IFB5dGhvbiBzY3JpcHRzIGF1dG8tbG9hZGluZwotK2Rlc2NyaXB0aW9uIChAcHhyZWZ7b2JqZmls ZS1nZGIucHkgZmlsZX0pLgotKwotK0B0YWJsZSBAY29kZQotK0BhbmNob3J7c2V0IGF1dG8tbG9h ZCBnZGItc2NyaXB0c30KLStAa2luZGV4IHNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKLStAaXRl bSBzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIFtvbnxvZmZdCi0rRW5hYmxlIG9yIGRpc2FibGUg dGhlIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMu Ci0rCi0rQGFuY2hvcntzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0c30KLStAa2luZGV4IHNob3cg YXV0by1sb2FkIGdkYi1zY3JpcHRzCi0rQGl0ZW0gc2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMK LStTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFu ZHMgc2NyaXB0cyBpcyBlbmFibGVkIG9yCi0rZGlzYWJsZWQuCi0rCi0rQGFuY2hvcntpbmZvIGF1 dG8tbG9hZCBnZGItc2NyaXB0c30KLStAa2luZGV4IGluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRz Ci0rQGNpbmRleCBwcmludCBsaXN0IG9mIGF1dG8tbG9hZGVkIGNhbm5lZCBzZXF1ZW5jZXMgb2Yg Y29tbWFuZHMgc2NyaXB0cwotK0BpdGVtIGluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIFtAdmFy e3JlZ2V4cH1dCi0rUHJpbnQgdGhlIGxpc3Qgb2YgYWxsIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29t bWFuZHMgc2NyaXB0cyB0aGF0IEB2YWx1ZXtHREJOfQotK2F1dG8tbG9hZGVkLgotK0BlbmQgdGFi bGUKLSsKLStJZiBAdmFye3JlZ2V4cH0gaXMgc3VwcGxpZWQgb25seSBjYW5uZWQgc2VxdWVuY2Vz IG9mIGNvbW1hbmRzIHNjcmlwdHMgd2l0aAotK21hdGNoaW5nIG5hbWVzIGFyZSBwcmludGVkLgot KwotIEBub2RlIE1lc3NhZ2VzL1dhcm5pbmdzCi0gQHNlY3Rpb24gT3B0aW9uYWwgV2FybmluZ3Mg YW5kIE1lc3NhZ2VzCi0gCi1AQCAtMjE2MTYsNyArMjE4NDksNyBAQCBhdXRvbWF0aWNhbGx5IGlt cG9ydGVkIHdoZW4gQHZhbHVle0dEQk59Ci0gQG1lbnUKLSAqIFB5dGhvbiBDb21tYW5kczo6ICAg ICAgICAgICAgIEFjY2Vzc2luZyBQeXRob24gZnJvbSBAdmFsdWV7R0RCTn0uCi0gKiBQeXRob24g QVBJOjogICAgICAgICAgICAgICAgICBBY2Nlc3NpbmcgQHZhbHVle0dEQk59IGZyb20gUHl0aG9u LgotLSogQXV0by1sb2FkaW5nOjogICAgICAgICAgICAgICAgQXV0b21hdGljYWxseSBsb2FkaW5n IFB5dGhvbiBjb2RlLgotKyogUHl0aG9uIEF1dG8tbG9hZGluZzo6ICAgICAgICAgQXV0b21hdGlj YWxseSBsb2FkaW5nIFB5dGhvbiBjb2RlLgotICogUHl0aG9uIG1vZHVsZXM6OiAgICAgICAgICAg ICAgUHl0aG9uIG1vZHVsZXMgcHJvdmlkZWQgYnkgQHZhbHVle0dEQk59LgotIEBlbmQgbWVudQot IAotQEAgLTIyNzk5LDcgKzIzMDMyLDcgQEAgVGhpcyBwcmFjdGljZSB3aWxsIGVuYWJsZSBAdmFs dWV7R0RCTn0gdAotIHlvdXIgcHJldHR5LXByaW50ZXJzIGF0IHRoZSBzYW1lIHRpbWUsIGJlY2F1 c2UgdGhleSB3aWxsIGhhdmUKLSBkaWZmZXJlbnQgbmFtZXMuCi0gCi0tWW91IHNob3VsZCB3cml0 ZSBhdXRvLWxvYWRlZCBjb2RlIChAcHhyZWZ7QXV0by1sb2FkaW5nfSkgc3VjaCB0aGF0IGl0Ci0r WW91IHNob3VsZCB3cml0ZSBhdXRvLWxvYWRlZCBjb2RlIChAcHhyZWZ7UHl0aG9uIEF1dG8tbG9h ZGluZ30pIHN1Y2ggdGhhdCBpdAotIGNhbiBiZSBldmFsdWF0ZWQgbXVsdGlwbGUgdGltZXMgd2l0 aG91dCBjaGFuZ2luZyBpdHMgbWVhbmluZy4gIEFuCi0gaWRlYWwgYXV0by1sb2FkIGZpbGUgd2ls bCBjb25zaXN0IHNvbGVseSBvZiBAY29kZXtpbXBvcnR9cyBvZiB5b3VyCi0gcHJpbnRlciBtb2R1 bGVzLCBmb2xsb3dlZCBieSBhIGNhbGwgdG8gYSByZWdpc3RlciBwcmV0dHktcHJpbnRlcnMgd2l0 aAotQEAgLTIzNzYwLDcgKzIzOTkzLDcgQEAgVGhlIGZvbGxvd2luZyBvYmpmaWxlLXJlbGF0ZWQg ZnVuY3Rpb25zCi0gCi0gQGZpbmRleCBnZGIuY3VycmVudF9vYmpmaWxlCi0gQGRlZnVuIGdkYi5j dXJyZW50X29iamZpbGUgKCkKLS1XaGVuIGF1dG8tbG9hZGluZyBhIFB5dGhvbiBzY3JpcHQgKEBw eHJlZntBdXRvLWxvYWRpbmd9KSwgQHZhbHVle0dEQk59Ci0rV2hlbiBhdXRvLWxvYWRpbmcgYSBQ eXRob24gc2NyaXB0IChAcHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30pLCBAdmFsdWV7R0RCTn0K LSBzZXRzIHRoZSBgYGN1cnJlbnQgb2JqZmlsZScnIHRvIHRoZSBjb3JyZXNwb25kaW5nIG9iamZp bGUuICBUaGlzCi0gZnVuY3Rpb24gcmV0dXJucyB0aGUgY3VycmVudCBvYmpmaWxlLiAgSWYgdGhl cmUgaXMgbm8gY3VycmVudCBvYmpmaWxlLAotIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBAY29kZXtO b25lfS4KLUBAIC0yNDY3MSw5ICsyNDkwNCw5IEBAIHJlc29sdmUgdGhpcyB0byB0aGUgbGF6eSBz dHJpbmcncyBjaGFyYWMKLSB3cml0YWJsZS4KLSBAZW5kIGRlZnZhcgotIAotLUBub2RlIEF1dG8t bG9hZGluZwotLUBzdWJzZWN0aW9uIEF1dG8tbG9hZGluZwotLUBjaW5kZXggYXV0by1sb2FkaW5n LCBQeXRob24KLStAbm9kZSBQeXRob24gQXV0by1sb2FkaW5nCi0rQHN1YnNlY3Rpb24gUHl0aG9u IEF1dG8tbG9hZGluZwotK0BjaW5kZXggUHl0aG9uIGF1dG8tbG9hZGluZwotIAotIFdoZW4gYSBu ZXcgb2JqZWN0IGZpbGUgaXMgcmVhZCAoZm9yIGV4YW1wbGUsIGR1ZSB0byB0aGUgQGNvZGV7Zmls ZX0KLSBjb21tYW5kLCBvciBiZWNhdXNlIHRoZSBpbmZlcmlvciBoYXMgbG9hZGVkIGEgc2hhcmVk IGxpYnJhcnkpLAotQEAgLTI0NjkzLDMyICsyNDkyNiwzNSBAQCBBdXRvLWxvYWRpbmcgY2FuIGJl IGVuYWJsZWQgb3IgZGlzYWJsZWQsCi0gYW5kIHRoZSBsaXN0IG9mIGF1dG8tbG9hZGVkIHNjcmlw dHMgY2FuIGJlIHByaW50ZWQuCi0gCi0gQHRhYmxlIEBjb2RlCi0tQGtpbmRleCBzZXQgYXV0by1s b2FkLXNjcmlwdHMKLS1AaXRlbSBzZXQgYXV0by1sb2FkLXNjcmlwdHMgW3llc3xub10KLStAYW5j aG9ye3NldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9Ci0rQGtpbmRleCBzZXQgYXV0by1sb2Fk IHB5dGhvbi1zY3JpcHRzCi0rQGl0ZW0gc2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBbb258 b2ZmXQotIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlw dHMuCi0gCi0tQGtpbmRleCBzaG93IGF1dG8tbG9hZC1zY3JpcHRzCi0tQGl0ZW0gc2hvdyBhdXRv LWxvYWQtc2NyaXB0cwotK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9Ci0r QGtpbmRleCBzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cwotK0BpdGVtIHNob3cgYXV0by1s b2FkIHB5dGhvbi1zY3JpcHRzCi0gU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBQeXRob24g c2NyaXB0cyBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgotIAotLUBraW5kZXggaW5mbyBhdXRvLWxv YWQtc2NyaXB0cwotLUBjaW5kZXggcHJpbnQgbGlzdCBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzCi0t QGl0ZW0gaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbQHZhcntyZWdleHB9XQotLVByaW50IHRoZSBs aXN0IG9mIGFsbCBzY3JpcHRzIHRoYXQgQHZhbHVle0dEQk59IGF1dG8tbG9hZGVkLgotK0BhbmNo b3J7aW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9Ci0rQGtpbmRleCBpbmZvIGF1dG8tbG9h ZCBweXRob24tc2NyaXB0cwotK0BjaW5kZXggcHJpbnQgbGlzdCBvZiBhdXRvLWxvYWRlZCBQeXRo b24gc2NyaXB0cwotK0BpdGVtIGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIFtAdmFye3Jl Z2V4cH1dCi0rUHJpbnQgdGhlIGxpc3Qgb2YgYWxsIFB5dGhvbiBzY3JpcHRzIHRoYXQgQHZhbHVl e0dEQk59IGF1dG8tbG9hZGVkLgotIAotLUFsc28gcHJpbnRlZCBpcyB0aGUgbGlzdCBvZiBzY3Jp cHRzIHRoYXQgd2VyZSBtZW50aW9uZWQgaW4KLStBbHNvIHByaW50ZWQgaXMgdGhlIGxpc3Qgb2Yg UHl0aG9uIHNjcmlwdHMgdGhhdCB3ZXJlIG1lbnRpb25lZCBpbgotIHRoZSBAY29kZXsuZGVidWdf Z2RiX3NjcmlwdHN9IHNlY3Rpb24gYW5kIHdlcmUgbm90IGZvdW5kCi0gKEBweHJlZntkb3RkZWJ1 Z19nZGJfc2NyaXB0cyBzZWN0aW9ufSkuCi0gVGhpcyBpcyB1c2VmdWwgYmVjYXVzZSB0aGVpciBu YW1lcyBhcmUgbm90IHByaW50ZWQgd2hlbiBAdmFsdWV7R0RCTn0KLSB0cmllcyB0byBsb2FkIHRo ZW0gYW5kIGZhaWxzLiAgVGhlcmUgbWF5IGJlIG1hbnkgb2YgdGhlbSwgYW5kIHByaW50aW5nCi0g YW4gZXJyb3IgbWVzc2FnZSBmb3IgZWFjaCBvbmUgaXMgcHJvYmxlbWF0aWMuCi0gCi0tSWYgQHZh cntyZWdleHB9IGlzIHN1cHBsaWVkIG9ubHkgc2NyaXB0cyB3aXRoIG1hdGNoaW5nIG5hbWVzIGFy ZSBwcmludGVkLgotK0lmIEB2YXJ7cmVnZXhwfSBpcyBzdXBwbGllZCBvbmx5IFB5dGhvbiBzY3Jp cHRzIHdpdGggbWF0Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQuCi0gCi0gRXhhbXBsZToKLSAKLSBA c21hbGxleGFtcGxlCi0tKGdkYikgaW5mbyBhdXRvLWxvYWQtc2NyaXB0cwotKyhnZGIpIGluZm8g YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCi0gTG9hZGVkICBTY3JpcHQKLSBZZXMgICAgIHB5LXNl Y3Rpb24tc2NyaXB0LnB5Ci0gICAgICAgICBmdWxsIG5hbWU6IC90bXAvcHktc2VjdGlvbi1zY3Jp cHQucHkKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2Fk LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9w eS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1ODQzNzUwMCArMDIwMAotKysrIGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAw OjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAotQEAgLTMxLDI5ICszMSw1NiBAQAotIAotICNpbmNsdWRl ICJweXRob24taW50ZXJuYWwuaCIKLSAKLS0vKiBOT1RFOiBJdCdzIHRyaXZpYWwgdG8gYWxzbyBz dXBwb3J0IGF1dG8tbG9hZGluZyBub3JtYWwgZ2RiIHNjcmlwdHMuCi0tICAgVGhlcmUgaGFzIHll dCB0byBiZSBhIG5lZWQgc28gaXQncyBub3QgaW1wbGVtZW50ZWQuICAqLwotLQotIC8qIFRoZSBz dWZmaXggb2YgcGVyLW9iamZpbGUgc2NyaXB0cyB0byBhdXRvLWxvYWQuCi0gICAgRS5nLiBXaGVu IHRoZSBwcm9ncmFtIGxvYWRzIGxpYmZvby5zbywgbG9vayBmb3IgbGliZm9vLWdkYi5weS4gICov Ci0gI2RlZmluZSBHREJQWV9BVVRPX0ZJTEVfTkFNRSAiLWdkYi5weSIKLSAKLS0vKiBUaGUgc2Vj dGlvbiB0byBsb29rIGZvciBzY3JpcHRzIChpbiBmaWxlIGZvcm1hdHMgdGhhdCBzdXBwb3J0IHNl Y3Rpb25zKS4KLSsvKiBUaGUgc2VjdGlvbiB0byBsb29rIGZvciBQeXRob24gYXV0by1sb2FkZWQg c2NyaXB0cyAoaW4gZmlsZSBmb3JtYXRzIHRoYXQKLSsgICBzdXBwb3J0IHNlY3Rpb25zKS4KLSAg ICBFYWNoIGVudHJ5IGluIHRoaXMgc2VjdGlvbiBpcyBhIGJ5dGUgb2YgdmFsdWUgMSwgYW5kIHRo ZW4gdGhlIG51bC10ZXJtaW5hdGVkCi0gICAgbmFtZSBvZiB0aGUgc2NyaXB0LiAgVGhlIHNjcmlw dCBuYW1lIG1heSBpbmNsdWRlIGEgZGlyZWN0b3J5LgotICAgIFRoZSBsZWFkaW5nIGJ5dGUgaXMg dG8gYWxsb3cgdXB3YXJkIGNvbXBhdGlibGUgZXh0ZW5zaW9ucy4gICovCi0gI2RlZmluZSBHREJQ WV9BVVRPX1NFQ1RJT05fTkFNRSAiLmRlYnVnX2dkYl9zY3JpcHRzIgotIAotLS8qIFVzZXItc2V0 dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZzoKLS0gICBzZXQgYXV0 by1sb2FkLXNjcmlwdHMgb258b2ZmCi0tICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRv LWxvYWQgYXNzb2NpYXRlZCBzY3JpcHRzIHdoZW4gYW4gb2JqZmlsZQotLSAgIGlzIG9wZW5lZCwg ZmFsc2Ugb3RoZXJ3aXNlLgotLSAgIEF0IHRoZSBtb21lbnQsIHRoaXMgb25seSBhZmZlY3RzIHB5 dGhvbiBzY3JpcHRzLCBidXQgdGhlcmUncyBubyByZWFzb24KLS0gICBvbmUgY291bGRuJ3QgYWxz byBoYXZlIG90aGVyIGtpbmRzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMsIGFuZCB0aGVyZSdzCi0t ICAgbm8gcmVhc29uIHRvIGhhdmUgdGhlbSBlYWNoIGNvbnRyb2xsZWQgYnkgYSBzZXBhcmF0ZSBm bGFnLgotLSAgIFNvIHdlIGVsaWRlICJweXRob24iIGZyb20gdGhlIG5hbWUgaGVyZSBhbmQgaW4g dGhlIG9wdGlvbi4KLS0gICBUaGUgZmFjdCB0aGF0IGl0IGxpdmVzIGhlcmUgaXMganVzdCBhbiBp bXBsZW1lbnRhdGlvbiBkZXRhaWwuICAqLwotLXN0YXRpYyBpbnQgYXV0b19sb2FkX3NjcmlwdHMg PSAxOwotKy8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9h ZGluZyBvZiBQeXRob24gc2NyaXB0czoKLSsgICBzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRz IG9ufG9mZgotKyAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIGFzc29jaWF0 ZWQgUHl0aG9uIHNjcmlwdHMgd2hlbiBhbgotKyAgIG9iamZpbGUgaXMgb3BlbmVkLCBmYWxzZSBv dGhlcndpc2UuICAqLwotK3N0YXRpYyBpbnQgYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzID0gMTsK LSsKLStzdGF0aWMgdm9pZCBnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkJCQlGSUxFICpmaWxlLAotKwkJCQkJCWNvbnN0IGNo YXIgKmZpbGVuYW1lKTsKLSsKLSsvKiAic2hvdyIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9w eXRob25fc2NyaXB0cyBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KLSsKLStzdGF0aWMgdm9p ZAotK3Nob3dfYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwg aW50IGZyb21fdHR5LAotKwkJCSAgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29u c3QgY2hhciAqdmFsdWUpCi0rewotKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1s b2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlzICVzLlxuIiksIHZhbHVlKTsKLSt9Ci0rCi0rLyog RGVmaW5pdGlvbiBvZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIFB5dGhvbiBzY3JpcHRzLiAgKi8KLSsK LStzdGF0aWMgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSBzY3JpcHRfbGFuZ3VhZ2VfcHl0 aG9uCi0rICA9IHsgR0RCUFlfQVVUT19GSUxFX05BTUUsIGdkYnB5X2xvYWRfYXV0b19zY3JpcHRf Zm9yX29iamZpbGUgfTsKLSsKLSsvKiBXcmFwcGVyIG9mIHNvdXJjZV9weXRob25fc2NyaXB0X2Zv cl9vYmpmaWxlIGZvciBzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uLiAgKi8KLSsKLStzdGF0aWMgdm9p ZAotK2dkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLCBGSUxFICpmaWxlLAotKwkJCQkgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCi0rewot KyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0rCi0rICAvKiBB ZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBw eXRob24tc2NyaXB0cyIKLSsgICAgIGNhbiBwcmludCBpdC4gICovCi0rICBwc3BhY2VfaW5mbyA9 IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9z cGFjZSk7Ci0rICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZW5hbWUsIGZpbGVu YW1lLCAmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7Ci0rCi0rICBzb3VyY2VfcHl0aG9uX3Njcmlw dF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZmlsZSwgZmlsZW5hbWUpOwotK30KLSAKLSAvKiBMb2Fk IHNjcmlwdHMgc3BlY2lmaWVkIGluIE9CSkZJTEUuCi0gICAgU1RBUlQsRU5EIGRlbGltaXQgYSBi dWZmZXIgY29udGFpbmluZyBhIGxpc3Qgb2YgbnVsLXRlcm1pbmF0ZWQKLUBAIC0xMjEsNiArMTQ4 LDE3IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKLSAJICBtYWtl X2NsZWFudXBfZmNsb3NlIChzdHJlYW0pOwotIAkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZ1bGxf cGF0aCk7Ci0gCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBmdWxsX3BhdGggPSBOVUxMOwotKwot KwkgIC8qIFdlIGRvbid0IHRocm93IGFuIGVycm9yLCB0aGUgcHJvZ3JhbSBpcyBzdGlsbCBkZWJ1 Z2dhYmxlLiAgKi8KLSsJICBpZiAoc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChwc3Bh Y2VfaW5mbykpCi0rCSAgICB3YXJuaW5nIChfKCJNaXNzaW5nIGF1dG8tbG9hZCBzY3JpcHRzIHJl ZmVyZW5jZWQgaW4gc2VjdGlvbiAlc1xuXAotK29mIGZpbGUgJXNcblwKLStVc2UgYGluZm8gYXV0 by1sb2FkIHB5dGhvbiBbUkVHRVhQXScgdG8gbGlzdCB0aGVtLiIpLAotKwkJICAgICBHREJQWV9B VVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7Ci0rCX0KLSAKLSAgICAgICAvKiBJZiBv bmUgc2NyaXB0IGlzbid0IGZvdW5kIGl0J3Mgbm90IHVuY29tbW9uIGZvciBtb3JlIHRvIG5vdCBi ZQotIAkgZm91bmQgZWl0aGVyLiAgV2UgZG9uJ3Qgd2FudCB0byBwcmludCBhbiBlcnJvciBtZXNz YWdlIGZvciBlYWNoCi1AQCAtMTI5LDI0ICsxNjcsMTIgQEAgc291cmNlX3NlY3Rpb25fc2NyaXB0 cyAoc3RydWN0IG9iamZpbGUgKgotIAotIAkgSVdCTiBpZiBjb21wbGFpbnRzLmMgd2VyZSBtb3Jl IGdlbmVyYWwtcHVycG9zZS4gICovCi0gCi0tICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2Fk ZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLAotLQkJCQkJb3BlbmVkID8gZnVsbF9wYXRoIDog TlVMTCk7Ci0rICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9p bmZvLCBmaWxlLCBmdWxsX3BhdGgsCi0rCQkJCQkmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7Ci0g Ci0tICAgICAgaWYgKCEgb3BlbmVkKQotLQl7Ci0tCSAgLyogV2UgZG9uJ3QgdGhyb3cgYW4gZXJy b3IsIHRoZSBwcm9ncmFtIGlzIHN0aWxsIGRlYnVnZ2FibGUuICAqLwotLQkgIGlmIChzY3JpcHRf bm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHBzcGFjZV9pbmZvKSkKLS0JICAgIHdhcm5pbmcgKF8o Ik1pc3NpbmcgYXV0by1sb2FkIHNjcmlwdHMgcmVmZXJlbmNlZCBpbiBzZWN0aW9uICVzXG5cCi0t b2YgZmlsZSAlc1xuXAotLVVzZSBgaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXScgdG8g bGlzdCB0aGVtLiIpLAotLQkJICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+ bmFtZSk7Ci0tCX0KLS0gICAgICBlbHNlCi0tCXsKLS0JICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90 IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLwotLQkgIGlmICghIGluX2hhc2hfdGFibGUp Ci0tCSAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgc3RyZWFt LCBmdWxsX3BhdGgpOwotLQl9Ci0rICAgICAgLyogSWYgdGhpcyBmaWxlIGlzIG5vdCBjdXJyZW50 bHkgbG9hZGVkLCBsb2FkIGl0LiAgKi8KLSsgICAgICBpZiAob3BlbmVkICYmICFpbl9oYXNoX3Rh YmxlKQotKwlzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgc3RyZWFt LCBmdWxsX3BhdGgpOwotIAotICAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSAgICAgfQot QEAgLTE4MSwzNiArMjA3LDc1IEBAIGF1dG9fbG9hZF9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBv YmpmaWwKLSAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7Ci0gfQotIAotLS8qIExvYWQgYW55IGF1 dG8tbG9hZGVkIHNjcmlwdHMgZm9yIE9CSkZJTEUuICAqLwotKy8qIExvYWQgYW55IFB5dGhvbiBh dXRvLWxvYWRlZCBzY3JpcHRzIGZvciBPQkpGSUxFLiAgKi8KLSAKLSB2b2lkCi0tbG9hZF9hdXRv X3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK2dkYnB5X2xv YWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSB7 Ci0tICBpZiAoYXV0b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCkKLSsg IGlmIChhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMpCi0gICAgIHsKLS0gICAgICBhdXRvX2xvYWRf b2JqZmlsZV9zY3JpcHQgKG9iamZpbGUsIEdEQlBZX0FVVE9fRklMRV9OQU1FKTsKLSsgICAgICBh dXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKG9iamZpbGUsICZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9u KTsKLSAgICAgICBhdXRvX2xvYWRfc2VjdGlvbl9zY3JpcHRzIChvYmpmaWxlLCBHREJQWV9BVVRP X1NFQ1RJT05fTkFNRSk7Ci0gICAgIH0KLSB9Ci0rCi0rLyogV3JhcHBlciBmb3IgImluZm8gYXV0 by1sb2FkIHB5dGhvbi1zY3JpcHRzIi4gICovCi0rCi0rc3RhdGljIHZvaWQKLStpbmZvX2F1dG9f bG9hZF9weXRob25fc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5KQotK3sKLSsg IGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMgKHBhdHRlcm4sIGZyb21fdHR5LCAmc2NyaXB0X2xhbmd1 YWdlX3B5dGhvbik7Ci0rfQotIAwKLSB2b2lkCi0gZ2RicHlfaW5pdGlhbGl6ZV9hdXRvX2xvYWQg KHZvaWQpCi0gewotKyAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNtZDsKLSsgIGNoYXIgKmNt ZF9uYW1lOwotKwotKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJweXRob24tc2NyaXB0cyIs IGNsYXNzX3N1cHBvcnQsCi0rCQkJICAgJmF1dG9fbG9hZF9weXRob25fc2NyaXB0cywgXygiXAot K1NldCB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhv biBzY3JpcHRzLiIpLCBfKCJcCi0rU2hvdyB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJk aW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLiIpLCBfKCJcCi0rSWYgZW5hYmxlZCwgYXV0 by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMgYXJlIGxvYWRlZCB3aGVuIHRoZSBkZWJ1Z2dlciByZWFk c1xuXAotK2FuIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJhcnkuXG5cCi0rVGhpcyBvcHRpb25z IGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZm9yIHVudHJ1c3RlZCBpbmZlcmlvcnMuIiksCi0r CQkJICAgTlVMTCwgc2hvd19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsCi0rCQkJICAgYXV0b19s b2FkX3NldF9jbWRsaXN0X2dldCAoKSwKLSsJCQkgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dl dCAoKSk7Ci0rCi0gICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImF1dG8tbG9hZC1zY3JpcHRz IiwgY2xhc3Nfc3VwcG9ydCwKLS0JCQkgICAmYXV0b19sb2FkX3NjcmlwdHMsIF8oIlwKLS1TZXQg dGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLiIp LCBfKCJcCi0tU2hvdyB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9h ZGVkIHNjcmlwdHMuIiksIF8oIlwKLS1JZiBlbmFibGVkLCBhdXRvLWxvYWRlZCBzY3JpcHRzIGFy ZSBsb2FkZWQgd2hlbiB0aGUgZGVidWdnZXIgcmVhZHNcblwKLS1hbiBleGVjdXRhYmxlIG9yIHNo YXJlZCBsaWJyYXJ5LiIpLAotLQkJCSAgIE5VTEwsIE5VTEwsCi0tCQkJICAgJnNldGxpc3QsCi0t CQkJICAgJnNob3dsaXN0KTsKLSsJCQkgICAmYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLCBfKCJc Ci0rU2V0IHRoZSBkZWJ1Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgUHl0 aG9uIHNjcmlwdHMsICIKLSsJCQkJCQkJCSAiZGVwcmVjYXRlZC4iKSwKLSsJCQkgICBfKCJcCi0r U2hvdyB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhv biBzY3JpcHRzLCAiCi0rCQkJCQkJCQkgImRlcHJlY2F0ZWQuIiksCi0rCQkJICAgTlVMTCwgTlVM TCwgc2hvd19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsCi0rCQkJICAgJnNldGxpc3QsICZzaG93 bGlzdCk7Ci0rICBjbWRfbmFtZSA9ICJhdXRvLWxvYWQtc2NyaXB0cyI7Ci0rICBjbWQgPSBsb29r dXBfY21kICgmY21kX25hbWUsIHNldGxpc3QsICIiLCAtMSwgMSk7Ci0rICBkZXByZWNhdGVfY21k IChjbWQsICJzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIik7Ci0rCi0rICAvKiBJdCBpcyBu ZWVkZWQgYmVjYXVzZSBsb29rdXBfY21kIHVwZGF0ZXMgdGhlIENNRF9OQU1FIHBvaW50ZXIuICAq LwotKyAgY21kX25hbWUgPSAiYXV0by1sb2FkLXNjcmlwdHMiOwotKyAgY21kID0gbG9va3VwX2Nt ZCAoJmNtZF9uYW1lLCBzaG93bGlzdCwgIiIsIC0xLCAxKTsKLSsgIGRlcHJlY2F0ZV9jbWQgKGNt ZCwgInNob3cgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIik7Ci0rCi0rICBhZGRfY21kICgicHl0 aG9uLXNjcmlwdHMiLCBjbGFzc19pbmZvLCBpbmZvX2F1dG9fbG9hZF9weXRob25fc2NyaXB0cywK LSsJICAgXygiUHJpbnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2FkZWQgUHl0aG9uIHNj cmlwdHMuXG5cCi0rVXNhZ2U6IGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIFtSRUdFWFBd IiksCi0rCSAgIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSsgIGNtZCA9IGFk ZF9pbmZvICgiYXV0by1sb2FkLXNjcmlwdHMiLCBpbmZvX2F1dG9fbG9hZF9weXRob25fc2NyaXB0 cywgXygiXAotK1ByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIFB5dGhvbiBz Y3JpcHRzLCBkZXByZWNhdGVkLiIpKTsKLSsgIGRlcHJlY2F0ZV9jbWQgKGNtZCwgImluZm8gYXV0 by1sb2FkIHB5dGhvbi1zY3JpcHRzIik7Ci0gfQotIAotICNlbHNlIC8qICEgSEFWRV9QWVRIT04g Ki8KLSAKLSB2b2lkCi0tbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlKQotK2dkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSB7Ci0gfQotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL3B5dGhvbi9weXRob24uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMDQtMTggMDA6NDQ6MjYuOTU4NDM3NTAw ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTIt MDQtMTggMDA6NDQ6MjYuOTc5NDM3NDQ2ICswMjAwCi1AQCAtNDEsNyArNDEsNyBAQCBpbnQgYXBw bHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwCi0gCi0gdm9pZCBwcmVzZXJ2ZV9weXRo b25fdmFsdWVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaHRhYl90IGNvcGllZF90eXBlcyk7 Ci0gCi0tdm9pZCBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUpOwotK3ZvaWQgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKLSAKLSBpbnQgZ2RicHlfc2hvdWxkX3N0b3AgKHN0cnVj dCBicmVha3BvaW50X29iamVjdCAqYnBfb2JqKTsKLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAkyMDEy LTAxLTA0IDA5OjE3OjQ1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk4MDQz NzQ0NCArMDIwMAotQEAgLTI0LDcgKzI0LDcgQEAKLSBnZGJfc3RhcnQKLSAKLSAjIGZvcmNlIHRo ZSBoZWlnaHQgb2YgdGhlIGRlYnVnZ2VyIHRvIGJlIHByZXR0eSBsYXJnZSBzbyBubyBwYWdlcnMg Z2V0IHVzZWQKLS1nZGJfdGVzdF9ub19vdXRwdXQgInNldCBoZWlnaHQgNDAwIiAidGVzdCBzZXQg aGVpZ2h0IgotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGhlaWdodCA1MDAiICJ0ZXN0IHNldCBo ZWlnaHQiCi0gCi0gIyB1c2UgYSBsYXJnZXIgZXhwZWN0IGlucHV0IGJ1ZmZlciBmb3IgbG9uZyBo ZWxwIG91dHB1dHMuCi0gIyB0ZXN0IGhlbHAgYWRkLXN5bWJvbC1maWxlCi1JbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQu ZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAJMjAxMi0wMS0xNiAxNzoyMTo1Mi4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTgwNzk3 NzQgKzAyMDAKLUBAIC00MCw3ICs0MCw3IEBAIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIv JHN1YmRpcgotIGdkYl9sb2FkICR7YmluZmlsZX0KLSAKLSAjIFZlcmlmeSBnZGIgbG9hZGVkIHRo ZSBzY3JpcHQuCi0tZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkLXNjcmlwdHMiICJZZXMuKi8ke3Rl c3RmaWxlfS1nZGIucHkuKiIKLStnZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlw dHMiICJZZXMuKi8ke3Rlc3RmaWxlfS1nZGIucHkuKiIKLSAKLSBpZiAhW3J1bnRvX21haW5dIHsK LSAgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gbWFpbiIKLUluZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5leHAKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTAxLTE2IDE3OjIxOjUyLjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3NCArMDIw MAotQEAgLTUyLDExICs1MiwxMSBAQCBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJk aXIKLSBnZGJfbG9hZCAke2JpbmZpbGV9Ci0gCi0gIyBWZXJpZnkgZ2RiIGxvYWRlZCB0aGUgc2Ny aXB0LgotLWdkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiAiWWVzLioke3Rlc3RmaWxl fS5weS4qZnVsbCBuYW1lOiAuKi8ke3Rlc3RmaWxlfS5weS4qIgotK2dkYl90ZXN0ICJpbmZvIGF1 dG8tbG9hZCBweXRob24tc2NyaXB0cyIgIlllcy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1bGwgbmFtZTog LiovJHt0ZXN0ZmlsZX0ucHkuKiIKLSAjIEFnYWluLCB3aXRoIGEgcmVnZXhwIHRoaXMgdGltZS4K LS1nZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyAke3Rlc3RmaWxlfSIgIlllcy4qJHt0 ZXN0ZmlsZX0ucHkuKmZ1bGwgbmFtZTogLiovJHt0ZXN0ZmlsZX0ucHkuKiIKLStnZGJfdGVzdCAi aW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgJHt0ZXN0ZmlsZX0iICJZZXMuKiR7dGVzdGZp bGV9LnB5LipmdWxsIG5hbWU6IC4qLyR7dGVzdGZpbGV9LnB5LioiCi0gIyBBZ2Fpbiwgd2l0aCBh IHJlZ2V4cCB0aGF0IG1hdGNoZXMgbm8gc2NyaXB0cy4KLS1nZGJfdGVzdCAiaW5mbyBhdXRvLWxv YWQtc2NyaXB0cyBuby1zY3JpcHQtbWF0Y2hlcy10aGlzIiBcCi0rZ2RiX3Rlc3QgImluZm8gYXV0 by1sb2FkIHB5dGhvbi1zY3JpcHRzIG5vLXNjcmlwdC1tYXRjaGVzLXRoaXMiIFwKLSAgICJObyBh dXRvLWxvYWQgc2NyaXB0cyBtYXRjaGluZyBuby1zY3JpcHQtbWF0Y2hlcy10aGlzLiIKLSAKLSBp ZiAhW3J1bnRvX21haW5dIHsKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTBvZjIyLnBhdGNo IGIvZ2RiLWF1dG9sb2FkLTEwb2YyMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5jNTk2OTgyCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTEwb2YyMi5w YXRjaApAQCAtMCwwICsxLDE3MDQgQEAKK1twYXRjaCM0IDQvOF0gc2V0IGF1dG8tbG9hZCAqIG1h aW4gcGFydAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNn MDAwODguaHRtbAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cw MDExMy5odG1sCisKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjQ5OjExCTEu MTQxMTIKKyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjUxOjQxCTEuMTQxMTMK KyMjIC0xLDUgKzEsMTAxIEBACisgMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgorIAorKwlhdXRvLWxvYWQ6IEltcGxlbWVudGF0aW9uLgorKwkq IE5FV1M6IE5ldyBkZXNjcmlwdGlvbnMgZm9yICJpbmZvIGF1dG8tbG9hZCIsCisrCSJpbmZvIGF1 dG8tbG9hZCBnZGItc2NyaXB0cyIsICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIsCisr CSJpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiBhbmQgImluZm8gYXV0by1sb2FkIGxpYnRo cmVhZC1kYiIuCisrCURlcHJlY2F0ZSAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIsICJzZXQgYXV0 by1sb2FkLXNjcmlwdHMgb258b2ZmIgorKwlhbmQgInNob3cgYXV0by1sb2FkLXNjcmlwdHMiLiAg TmV3IGRlc2NyaXB0aW9uIGZvciAic2V0IGF1dG8tbG9hZCIsCisrCSJzaG93IGF1dG8tbG9hZCIs ICJzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIiwKKysJInNob3cgYXV0by1sb2FkIGdkYi1zY3Jp cHRzIiwgInNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLAorKwkic2hvdyBhdXRvLWxvYWQg cHl0aG9uLXNjcmlwdHMiLCAic2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiwKKysJInNob3cg YXV0by1sb2FkIGxvY2FsLWdkYmluaXQiLCAic2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiIGFu ZAorKwkic2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIi4KKysJKiBhdXRvLWxvYWQuYzogUmVt b3ZlIGluY2x1ZGUgcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oLiAgQWRkIGluY2x1ZGVzCisrCWV4 Y2VwdGlvbnMuaCwgY2xpL2NsaS1zY3JpcHQuaCwgZ2RiY21kLmgsIGNsaS9jbGktZGVjb2RlLmgg YW5kCisrCWNsaS9jbGktc2V0c2hvdy5oLgorKwkoR0RCX0FVVE9fRklMRV9OQU1FLCBzb3VyY2Vf Z2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSkKKysJKGF1dG9fbG9hZF9nZGJfc2NyaXB0cywgc2hvd19h dXRvX2xvYWRfZ2RiX3NjcmlwdHMpOiBOZXcuCisrCShnZGJweV9nbG9iYWxfYXV0b19sb2FkKTog UmVuYW1lIHRvIC4uLgorKwkoZ2xvYmFsX2F1dG9fbG9hZCk6IC4uLiBoZXJlLgorKwkoYXV0b19s b2FkX2xvY2FsX2dkYmluaXQsIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lKQorKwko YXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkLCBzaG93X2F1dG9fbG9hZF9sb2NhbF9nZGJp bml0KQorKwkoc2NyaXB0X2xhbmd1YWdlX2dkYiwgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZp bGUpOiBOZXcuCisrCShzdHJ1Y3QgbG9hZGVkX3NjcmlwdCk6IE5ldyBmaWVsZCBsYW5ndWFnZS4K KysJKGhhc2hfbG9hZGVkX3NjcmlwdF9lbnRyeSwgZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSk6IENh bGN1bGF0ZSBhbHNvCisrCUxBTkdVQUdFLgorKwkobWF5YmVfYWRkX3NjcmlwdCk6IEFkZCBwYXJh bWV0ZXIgbGFuZ3VhZ2UuICBEcm9wIHJlZHVuZGFudAorKwllbnRyeS5mdWxsX3BhdGggaW5pdGlh bGl6YXRpb24uICBJbml0aWFsaXplIGVudHJ5Lmxhbmd1YWdlIGFuZAorKwkoKnNsb3QpLT5sYW5n dWFnZS4KKysJKGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IENoYW5nZSBwYXJhbWV0ZXIgc3Vm Zml4IHRvIGxhbmd1YWdlLgorKwlSZW1vdmUgdGhlIGNhbGwgb2YgbWF5YmVfYWRkX3NjcmlwdC4K KysJQ2FsbCBsYW5ndWFnZS0+c291cmNlX3NjcmlwdF9mb3Jfb2JqZmlsZS4KKysJKGxvYWRfYXV0 b19zY3JpcHRzX2Zvcl9vYmpmaWxlLCBzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2Rh dGEpOgorKwlOZXcuCisrCShjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHMpOiBBZGp1c3QgaXQgZm9y CisrCXN0cnVjdCBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHNfZGF0YS4KKysJKGF1dG9fbG9hZF9p bmZvX3NjcmlwdHNfcGF0dGVybl9ubCk6IE5ldyB2YXJpYWJsZS4KKysJKGluZm9fYXV0b19sb2Fk X3NjcmlwdHMpOiBSZW5hbWUgdG8gLi4uCisrCShhdXRvX2xvYWRfaW5mb19zY3JpcHRzKTogLi4u IGhlcmUsIGFkZCBwYXJhbWV0ZXIgbGFuZ3VhZ2UuICBBZGp1c3QgaXQKKysJZm9yIHN0cnVjdCBj b2xsZWN0X21hdGNoaW5nX3NjcmlwdHNfZGF0YS4KKysJKGluZm9fYXV0b19sb2FkX2dkYl9zY3Jp cHRzLCBpbmZvX2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0KQorKwkoc2V0X2F1dG9fbG9hZF9jbWQs IGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQsIHNob3dfYXV0b19sb2FkX2NtZCkKKysJKGF1dG9f bG9hZF9zaG93X2NtZGxpc3RfZ2V0LCBpbmZvX2F1dG9fbG9hZF9jbWQpCisrCShhdXRvX2xvYWRf aW5mb19jbWRsaXN0X2dldCk6IE5ldy4KKysJKF9pbml0aWFsaXplX2F1dG9fbG9hZCk6IE1vdmUg YWRkX2luZm8gb2YgImF1dG8tbG9hZC1zY3JpcHRzIiB0bworKwlweXRob24vcHktYXV0by1sb2Fk LmMuICBOZXcgaW5zdGFsbG1lbnQgZm9yICJzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzIiwKKysJ ImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5p dCIgYW5kCisrCSJpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0Ii4KKysJKiBhdXRvLWxvYWQu aCAoc3RydWN0IHNjcmlwdF9sYW5ndWFnZSk6IE5ldy4KKysJKGdkYnB5X2dsb2JhbF9hdXRvX2xv YWQpOiBSZW5hbWUgdG8gLi4uCisrCShnbG9iYWxfYXV0b19sb2FkKTogLi4uIGhlcmUuCisrCShh dXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCwgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUp CisrCShhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQpOiBOZXcgZGVjbGFyYXRpb25zLgor KwkobWF5YmVfYWRkX3NjcmlwdCk6IE5ldyBwYXJhbWV0ZXIgbGFuZ3VhZ2UuCisrCShhdXRvX2xv YWRfb2JqZmlsZV9zY3JpcHQpOiBDaGFuZ2UgcGFyYW1ldGVyIHN1ZmZpeCB0byBsYW5ndWFnZS4K KysJKGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlLCBhdXRvX2xvYWRfaW5mb19zY3JpcHRz X3BhdHRlcm5fbmwpCisrCShhdXRvX2xvYWRfaW5mb19zY3JpcHRzLCBhdXRvX2xvYWRfc2V0X2Nt ZGxpc3RfZ2V0KQorKwkoYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQsIGF1dG9fbG9hZF9pbmZv X2NtZGxpc3RfZ2V0KTogTmV3CisrCWRlY2xhcmF0aW9ucy4KKysJKiBsaW51eC10aHJlYWQtZGIu YzogSW5jbHVkZSBhdXRvLWxvYWQuaCBhbmQgY3R5cGUuaC4KKysJKGF1dG9fbG9hZF90aHJlYWRf ZGIsIHNob3dfYXV0b19sb2FkX3RocmVhZF9kYik6IE5ldy4KKysJKHN0cnVjdCB0aHJlYWRfZGJf aW5mbyk6IE5ldyBmaWVsZCBmaWxlbmFtZS4KKysJKGRlbGV0ZV90aHJlYWRfZGJfaW5mbyk6IENh bGwgeGZyZWUgZm9yIEZJTEVOQU1FLgorKwkodHJ5X3RocmVhZF9kYl9sb2FkKTogSW5pdGlhbGl6 ZSBGSUxFTkFNRS4KKysJKHRyeV90aHJlYWRfZGJfbG9hZF9mcm9tX3BkaXIsIHRyeV90aHJlYWRf ZGJfbG9hZF9mcm9tX2Rpcik6IFJldHVybgorKwlpZiAhQVVUT19MT0FEX1RIUkVBRF9EQi4KKysJ KGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYl9jb21wYXJlLCBpbmZvX2F1dG9fbG9hZF9saWJ0 aHJlYWRfZGIpOiBOZXcuCisrCShfaW5pdGlhbGl6ZV90aHJlYWRfZGIpOiBJbnN0YWxsIGF1dG9f bG9hZF90aHJlYWRfZGIKKysJYXMgInNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIiBhbmQgaW5z dGFsbCBpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIKKysJYXMgImluZm8gYXV0by1sb2FkIGxp YnRocmVhZC1kYiIuCisrCSogbWFpbi5jIChjYXB0dXJlZF9tYWluKTogUmVuYW1lIGdkYnB5X2ds b2JhbF9hdXRvX2xvYWQgdG8KKysJZ2xvYmFsX2F1dG9fbG9hZC4gIEluaXRpYWxpemUgQVVUT19M T0FEX0xPQ0FMX0dEQklOSVRfUEFUSE5BTUUgYW5kCisrCUFVVE9fTE9BRF9MT0NBTF9HREJJTklU X0xPQURFRC4KKysJKHByaW50X2dkYl9oZWxwKTogRXh0ZW5kIHRoZSBoZWxwIGZvciAnbG9jYWwg aW5pdCBmaWxlJy4KKysJKiBweXRob24vcHktYXV0by1sb2FkLmM6IFJlbW92ZSBhIGNvbW1lbnQg YWJvdXQgZ2RiIHNjcmlwdHMgZXh0ZW5zaW9uLgorKwkoR0RCUFlfQVVUT19TRUNUSU9OX05BTUUp OiBFeHRlbmQgdGhlIGNvbW1lbnQgaXQgaXMgUHl0aG9uIHNwZWNpZmljLgorKwkoYXV0b19sb2Fk X3NjcmlwdHMpOiBSZW5hbWUgdG8gLi4uCisrCShhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMpOiAu Li4gaGVyZSwgdXBkYXRlIHRoZSBjb21tZW50LgorKwkoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9m b3Jfb2JqZmlsZSk6IE5ldyBkZWNsYXJhdGlvbi4KKysJKHNob3dfYXV0b19sb2FkX3B5dGhvbl9z Y3JpcHRzLCBzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKQorKwkoZ2RicHlfbG9hZF9hdXRvX3Njcmlw dF9mb3Jfb2JqZmlsZSk6IE5ldy4KKysJKHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMpOiBSZWZhY3Rv ciB0aGUgY29kZS4KKysJKGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogUmVuYW1lIHRv IC4uLgorKwkoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUpOiAuLi4gaGVyZSwg dXBkYXRlIHRoZQorKwlhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgY2FsbGVyLCBkcm9wIEdEQlBZ X0dMT0JBTF9BVVRPX0xPQUQgY2hlY2tpbmcuCisrCShpbmZvX2F1dG9fbG9hZF9weXRob25fc2Ny aXB0cyk6IE5ldy4KKysJKGdkYnB5X2luaXRpYWxpemVfYXV0b19sb2FkKTogTmV3IHZhcmlhYmxl cyBjbWQgYW5kIGNtZF9uYW1lLgorKwlSZW5hbWUgInNldCBhdXRvLWxvYWQtc2NyaXB0cyIgdG8g InNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLgorKwlSZWdpc3RlciAic2V0IGF1dG8tbG9h ZC1zY3JpcHRzIiBhcyBpdHMgZGVwcmVjYXRlZCBhbGlhcy4gIFJlZ2lzdGVyCisrCSJpbmZvIGF1 dG8tbG9hZCBweXRob24tc2NyaXB0cyIuICBSZWdpc3RlciAiaW5mbyBhdXRvLWxvYWQtc2NyaXB0 cyIgYXMKKysJaXRzIGRlcHJlY2F0ZWQgYWxpYXMuCisrCShsb2FkX2F1dG9fc2NyaXB0c19mb3Jf b2JqZmlsZSk6IFJlbmFtZSB0byAuLi4KKysJKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9v YmpmaWxlKTogLi4uIGhlcmUuCisrCSogcHl0aG9uL3B5dGhvbi5oIChsb2FkX2F1dG9fc2NyaXB0 c19mb3Jfb2JqZmlsZSk6IFJlbmFtZSB0byAuLi4KKysJKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRz X2Zvcl9vYmpmaWxlKTogLi4uIGhlcmUuCisrCisrMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworIAlhdXRvLWxvYWQ6IE1vdmUgZmlsZXMu CisgCSogTWFrZWZpbGUuaW4gKFNGSUxFUyk6IEFkZCBhdXRvLWxvYWQuYy4KKyAJKEhGSUxFU19O T19TUkNESVIpOiBBZGQgYXV0by1sb2FkLmguCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvTkVXUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTkVX UwkyMDEyLTA0LTE4IDAwOjQyOjUxLjIyNjY4MTA2OCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0OTowMi4wMzU3Mzc2NDQgKzAyMDAKK0BAIC0y OCw2ICsyOCw0NSBAQAorICAgbm93IHNldCBhIGJyZWFrcG9pbnQgaW4gYnVpbGQvZ2NjL2V4cHIu YywgYnV0IG5vdAorICAgYnVpbGQvbGliY3BwL2V4cHIuYy4KKyAKKysqIE5ldyBjb21tYW5kcwor KworKyAgKiogImluZm8gYXV0by1sb2FkIiBzaG93cyBzdGF0dXMgb2YgYWxsIGtpbmRzIG9mIGF1 dG8tbG9hZGVkIGZpbGVzLAorKyAgICAgImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIiBzaG93 cyBzdGF0dXMgb2YgYXV0by1sb2FkaW5nIEdEQiBjYW5uZWQKKysgICAgIHNlcXVlbmNlcyBvZiBj b21tYW5kcyBmaWxlcywgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIgorKyAgICAgc2hv d3Mgc3RhdHVzIG9mIGF1dG8tbG9hZGluZyBQeXRob24gc2NyaXB0IGZpbGVzLAorKyAgICAgImlu Zm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiIHNob3dzIHN0YXR1cyBvZiBsb2FkaW5nIGluaXQg ZmlsZQorKyAgICAgKC5nZGJpbml0KSBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5IGFuZCAiaW5mbyBh dXRvLWxvYWQgbGlidGhyZWFkLWRiIiBzaG93cworKyAgICAgc3RhdHVzIG9mIGluZmVyaW9yIHNw ZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgc2hhcmVkIGxpYnJhcnkgbG9hZGluZy4KKysKKysgICoq ICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQtc2NyaXB0cyBvbnxvZmYi CisrICAgICBhbmQgInNob3cgYXV0by1sb2FkLXNjcmlwdHMiIGNvbW1hbmRzIGhhdmUgYmVlbiBk ZXByZWNhdGVkLCB1c2UgdGhlaXIKKysgICAgICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0 cyIsICJzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIG9ufG9mZiIKKysgICAgIGFuZCAic2hv dyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiIGNvdW50ZXJwYXJ0cyBpbnN0ZWFkLgorKworKyog TmV3IG9wdGlvbnMKKysKKytzZXQgYXV0by1sb2FkIG9mZgorKyAgRGlzYWJsZSBhdXRvLWxvYWRp bmcgZ2xvYmFsbHkuCisrCisrc2hvdyBhdXRvLWxvYWQKKysgIFNob3cgYXV0by1sb2FkaW5nIHNl dHRpbmcgb2YgYWxsIGtpbmRzIG9mIGF1dG8tbG9hZGVkIGZpbGVzLgorKworK3NldCBhdXRvLWxv YWQgZ2RiLXNjcmlwdHMgb258b2ZmCisrc2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKKysgIENv bnRyb2wgYXV0by1sb2FkaW5nIG9mIEdEQiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIGZp bGVzLgorKworK3NldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgb258b2ZmCisrc2hvdyBhdXRv LWxvYWQgcHl0aG9uLXNjcmlwdHMKKysgIENvbnRyb2wgYXV0by1sb2FkaW5nIG9mIFB5dGhvbiBz Y3JpcHQgZmlsZXMuCisrCisrc2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IG9ufG9mZgorK3No b3cgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQKKysgIENvbnRyb2wgbG9hZGluZyBvZiBpbml0IGZp bGUgKC5nZGJpbml0KSBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5LgorKworK3NldCBhdXRvLWxvYWQg bGlidGhyZWFkLWRiIG9ufG9mZgorK3Nob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYgorKyAgQ29u dHJvbCBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVnZ2luZyBz aGFyZWQgbGlicmFyeS4KKysKKyAqIE5ldyBjb21tYW5kIGxpbmUgb3B0aW9ucworIAorIC0taW5p dC1jb21tYW5kPUZJTEUsIC1peCAgICAgICAgICBMaWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1 dGUgaXQKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0w NC0xOCAwMDo0NDoyNi45NTA0Mzc1MjAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1NjA3OTc4MCArMDIwMAorQEAgLTI3 LDE5ICsyNyw5MiBAQAorICNpbmNsdWRlICJjb21tYW5kLmgiCisgI2luY2x1ZGUgIm9ic2VydmVy LmgiCisgI2luY2x1ZGUgIm9iamZpbGVzLmgiCistI2luY2x1ZGUgInB5dGhvbi9weXRob24taW50 ZXJuYWwuaCIKKysjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgorKyNpbmNsdWRlICJjbGkvY2xpLXNj cmlwdC5oIgorKyNpbmNsdWRlICJnZGJjbWQuaCIKKysjaW5jbHVkZSAiY2xpL2NsaS1kZWNvZGUu aCIKKysjaW5jbHVkZSAiY2xpL2NsaS1zZXRzaG93LmgiCisrCisrLyogVGhlIHN1ZmZpeCBvZiBw ZXItb2JqZmlsZSBzY3JpcHRzIHRvIGF1dG8tbG9hZCBhcyBub24tUHl0aG9uIGNvbW1hbmQgZmls ZXMuCisrICAgRS5nLiBXaGVuIHRoZSBwcm9ncmFtIGxvYWRzIGxpYmZvby5zbywgbG9vayBmb3Ig bGliZm9vLWdkYi5nZGIuICAqLworKyNkZWZpbmUgR0RCX0FVVE9fRklMRV9OQU1FICItZ2RiLmdk YiIKKysKKytzdGF0aWMgdm9pZCBzb3VyY2VfZ2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCisrCQkJCQkgICBjb25zdCBjaGFyICpmaWxl bmFtZSk7CisrCisrLyogVXNlci1zZXR0YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rpc2FibGUgYXV0 by1sb2FkaW5nIG9mIEdEQl9BVVRPX0ZJTEVfTkFNRQorKyAgIHNjcmlwdHM6CisrICAgc2V0IGF1 dG8tbG9hZCBnZGItc2NyaXB0cyBvbnxvZmYKKysgICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxk IGF1dG8tbG9hZCBhc3NvY2lhdGVkIHNjcmlwdHMgd2hlbiBhbiBvYmpmaWxlCisrICAgaXMgb3Bl bmVkLCBmYWxzZSBvdGhlcndpc2UuICAqLworK3N0YXRpYyBpbnQgYXV0b19sb2FkX2dkYl9zY3Jp cHRzID0gMTsKKysKKysvKiAic2hvdyIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9nZGJfc2Ny aXB0cyBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Nob3df YXV0b19sb2FkX2dkYl9zY3JpcHRzIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5 LAorKwkJCSAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUp CisreworKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkaW5nIG9mIGNhbm5l ZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgIgorKwkJCSAgICAic2NyaXB0cyBpcyAlcy5cbiIpLAor KwkJICAgIHZhbHVlKTsKKyt9CisgCisgLyogSW50ZXJuYWwtdXNlIGZsYWcgdG8gZW5hYmxlL2Rp c2FibGUgYXV0by1sb2FkaW5nLgorICAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1s b2FkIHB5dGhvbiBjb2RlIHdoZW4gYW4gb2JqZmlsZSBpcyBvcGVuZWQsCisgICAgZmFsc2Ugb3Ro ZXJ3aXNlLgorIAorLSAgIEJvdGggYXV0b19sb2FkX3NjcmlwdHMgJiYgZ2RicHlfZ2xvYmFsX2F1 dG9fbG9hZCBtdXN0IGJlIHRydWUgdG8gZW5hYmxlCisrICAgQm90aCBhdXRvX2xvYWRfc2NyaXB0 cyAmJiBnbG9iYWxfYXV0b19sb2FkIG11c3QgYmUgdHJ1ZSB0byBlbmFibGUKKyAgICBhdXRvLWxv YWRpbmcuCisgCisgICAgVGhpcyBmbGFnIGV4aXN0cyB0byBmYWNpbGl0YXRlIGRlZmVycmluZyBh dXRvLWxvYWRpbmcgZHVyaW5nIHN0YXJ0LXVwCisgICAgdW50aWwgYWZ0ZXIgLi8uZ2RiaW5pdCBo YXMgYmVlbiByZWFkOyBpdCBtYXkgYXVnbWVudCB0aGUgc2VhcmNoIGRpcmVjdG9yaWVzCisgICAg dXNlZCB0byBmaW5kIHRoZSBzY3JpcHRzLiAgKi8KKy1pbnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9h ZCA9IDE7CisraW50IGdsb2JhbF9hdXRvX2xvYWQgPSAxOworKworKy8qIEF1dG8tbG9hZCAuZ2Ri aW5pdCBmaWxlIGZyb20gdGhlIGN1cnJlbnQgZGlyZWN0b3J5PyAgKi8KKytpbnQgYXV0b19sb2Fk X2xvY2FsX2dkYmluaXQgPSAxOworKworKy8qIEFic29sdXRlIHBhdGhuYW1lIHRvIHRoZSBjdXJy ZW50IGRpcmVjdG9yeSAuZ2RiaW5pdCwgaWYgaXQgZXhpc3RzLiAgKi8KKytjaGFyICphdXRvX2xv YWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSA9IE5VTEw7CisrCisrLyogQm9vbGVhbiB2YWx1ZSBp ZiBBVVRPX0xPQURfTE9DQUxfR0RCSU5JVF9QQVRITkFNRSBoYXMgYmVlbiBsb2FkZWQuICAqLwor K2ludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQgPSAwOworKworKy8qICJzaG93IiBj b21tYW5kIGZvciB0aGUgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQgY29uZmlndXJhdGlvbiB2YXJp YWJsZS4gICovCisrCisrc3RhdGljIHZvaWQKKytzaG93X2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0 IChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorKwkJCSAgICAgIHN0cnVjdCBj bWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKKyt7CisrICBmcHJpbnRmX2Zp bHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3Vy cmVudCAiCisrCQkJICAgICJkaXJlY3RvcnkgaXMgJXMuXG4iKSwKKysJCSAgICB2YWx1ZSk7Cisr fQorKworKy8qIERlZmluaXRpb24gb2Ygc2NyaXB0IGxhbmd1YWdlIGZvciBHREIgY2FubmVkIHNl cXVlbmNlcyBvZiBjb21tYW5kcy4gICovCisrCisrc3RhdGljIGNvbnN0IHN0cnVjdCBzY3JpcHRf bGFuZ3VhZ2Ugc2NyaXB0X2xhbmd1YWdlX2dkYgorKyAgPSB7IEdEQl9BVVRPX0ZJTEVfTkFNRSwg c291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUgfTsKKysKKytzdGF0aWMgdm9pZAorK3NvdXJj ZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAq ZmlsZSwKKysJCQkgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCisreworKyAgc3RydWN0IGF1 dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87CisrICB2b2xhdGlsZSBzdHJ1Y3QgZ2Ri X2V4Y2VwdGlvbiBlOworKworKyAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxl IHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiCisrICAgICBjYW4gcHJpbnQgaXQu ICAqLworKyAgcHNwYWNlX2luZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2Fk aW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOworKyAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNl X2luZm8sIGZpbGVuYW1lLCBmaWxlbmFtZSwgJnNjcmlwdF9sYW5ndWFnZV9nZGIpOworKworKyAg VFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19BTEwpCisrICAgIHsKKysgICAgICBzY3JpcHRfZnJv bV9maWxlIChmaWxlLCBmaWxlbmFtZSk7CisrICAgIH0KKysgIGV4Y2VwdGlvbl9wcmludCAoZ2Ri X3N0ZGVyciwgZSk7CisrfQorIAorIC8qIEZvciBzY3JpcHRzIHNwZWNpZmllZCBpbiAuZGVidWdf Z2RiX3NjcmlwdHMsIG11bHRpcGxlIG9iamZpbGVzIG1heSBsb2FkCisgICAgdGhlIHNhbWUgc2Ny aXB0LiAgVGhlcmUncyBubyBwb2ludCBpbiBsb2FkaW5nIHRoZSBzY3JpcHQgbXVsdGlwbGUgdGlt ZXMsCitAQCAtNjIsOSArMTM1LDEyIEBAIHN0cnVjdCBsb2FkZWRfc2NyaXB0CisgeworICAgLyog TmFtZSBhcyBwcm92aWRlZCBieSB0aGUgb2JqZmlsZS4gICovCisgICBjb25zdCBjaGFyICpuYW1l OworKworICAgLyogRnVsbCBwYXRoIG5hbWUgb3IgTlVMTCBpZiBzY3JpcHQgd2Fzbid0IGZvdW5k IChvciB3YXMgb3RoZXJ3aXNlCisgICAgICBpbmFjY2Vzc2libGUpLiAgKi8KKyAgIGNvbnN0IGNo YXIgKmZ1bGxfcGF0aDsKKysKKysgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1 YWdlOworIH07CisgCisgLyogUGVyLXByb2dyYW0tc3BhY2UgZGF0YSBrZXkuICAqLworQEAgLTEw OSw3ICsxODUsNyBAQCBoYXNoX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmRhCisg eworICAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmUgPSBkYXRhOworIAorLSAgcmV0dXJu IGh0YWJfaGFzaF9zdHJpbmcgKGUtPm5hbWUpOworKyAgcmV0dXJuIGh0YWJfaGFzaF9zdHJpbmcg KGUtPm5hbWUpIF4gaHRhYl9oYXNoX3BvaW50ZXIgKGUtPmxhbmd1YWdlKTsKKyB9CisgCisgLyog RXF1YWxpdHkgZnVuY3Rpb24gZm9yIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLworQEAgLTEy MCw3ICsxOTYsNyBAQCBlcV9sb2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICphLCBjCisg ICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZWEgPSBhOworICAgY29uc3Qgc3RydWN0IGxv YWRlZF9zY3JpcHQgKmViID0gYjsKKyAKKy0gIHJldHVybiBzdHJjbXAgKGVhLT5uYW1lLCBlYi0+ bmFtZSkgPT0gMDsKKysgIHJldHVybiBzdHJjbXAgKGVhLT5uYW1lLCBlYi0+bmFtZSkgPT0gMCAm JiBlYS0+bGFuZ3VhZ2UgPT0gZWItPmxhbmd1YWdlOworIH0KKyAKKyAvKiBJbml0aWFsaXplIHRo ZSB0YWJsZSB0byB0cmFjayBsb2FkZWQgc2NyaXB0cy4KK0BAIC0xNTYsMjAgKzIzMiwyMSBAQCBn ZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzCisgICByZXR1cm4gaW5mbzsK KyB9CisgCistLyogQWRkIHNjcmlwdCBOQU1FIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8u CistICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuCistICAg VGhlIHJlc3VsdCBpcyB0cnVlIGlmIHRoZSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIGhhc2gg dGFibGUuICAqLworKy8qIEFkZCBzY3JpcHQgTkFNRSBpbiBMQU5HVUFHRSB0byBoYXNoIHRhYmxl IG9mIFBTUEFDRV9JTkZPLgorKyAgIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fz bid0IGZvdW5kLiAgVGhlIHJlc3VsdCBpcworKyAgIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxy ZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4gICovCisgCisgaW50CistbWF5YmVfYWRkX3NjcmlwdCAo c3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sIGNvbnN0IGNoYXIgKm5h bWUsCistCQkgIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCkKKyttYXliZV9hZGRfc2NyaXB0IChzdHJ1 Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywKKysJCSAgY29uc3QgY2hhciAq bmFtZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoLAorKwkJICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xh bmd1YWdlICpsYW5ndWFnZSkKKyB7CisgICBzdHJ1Y3QgaHRhYiAqaHRhYiA9IHBzcGFjZV9pbmZv LT5sb2FkZWRfc2NyaXB0czsKKyAgIHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqc2xvdCwgZW50cnk7 CisgICBpbnQgaW5faGFzaF90YWJsZTsKKyAKKyAgIGVudHJ5Lm5hbWUgPSBuYW1lOworLSAgZW50 cnkuZnVsbF9wYXRoID0gZnVsbF9wYXRoOworKyAgZW50cnkubGFuZ3VhZ2UgPSBsYW5ndWFnZTsK KyAgIHNsb3QgPSAoc3RydWN0IGxvYWRlZF9zY3JpcHQgKiopIGh0YWJfZmluZF9zbG90IChodGFi LCAmZW50cnksIElOU0VSVCk7CisgICBpbl9oYXNoX3RhYmxlID0gKnNsb3QgIT0gTlVMTDsKKyAK K0BAIC0xOTQsNiArMjcxLDcgQEAgbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9w c3BhYworIAl9CisgICAgICAgZWxzZQorIAkoKnNsb3QpLT5mdWxsX3BhdGggPSBOVUxMOworKyAg ICAgICgqc2xvdCktPmxhbmd1YWdlID0gbGFuZ3VhZ2U7CisgICAgIH0KKyAKKyAgIHJldHVybiBp bl9oYXNoX3RhYmxlOworQEAgLTIxNiwxMCArMjk0LDEyIEBAIGNsZWFyX3NlY3Rpb25fc2NyaXB0 cyAodm9pZCkKKyAgICAgfQorIH0KKyAKKy0vKiBMb29rIGZvciB0aGUgYXV0by1sb2FkIHNjcmlw dCBhc3NvY2lhdGVkIHdpdGggT0JKRklMRSBhbmQgbG9hZCBpdC4gICovCisrLyogTG9vayBmb3Ig dGhlIGF1dG8tbG9hZCBzY3JpcHQgaW4gTEFOR1VBR0UgYXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUg YW5kIGxvYWQKKysgICBpdC4gICovCisgCisgdm9pZAorLWF1dG9fbG9hZF9vYmpmaWxlX3Njcmlw dCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKnN1ZmZpeCkKKythdXRvX2xv YWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJCSAgY29uc3Qg c3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2UpCisgeworICAgY2hhciAqcmVhbG5hbWU7 CisgICBjaGFyICpmaWxlbmFtZSwgKmRlYnVnZmlsZTsKK0BAIC0yMjksOSArMzA5LDkgQEAgYXV0 b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZQorIAorICAgcmVhbG5hbWUgPSBn ZGJfcmVhbHBhdGggKG9iamZpbGUtPm5hbWUpOworICAgbGVuID0gc3RybGVuIChyZWFsbmFtZSk7 CistICBmaWxlbmFtZSA9IHhtYWxsb2MgKGxlbiArIHN0cmxlbiAoc3VmZml4KSArIDEpOworKyAg ZmlsZW5hbWUgPSB4bWFsbG9jIChsZW4gKyBzdHJsZW4gKGxhbmd1YWdlLT5zdWZmaXgpICsgMSk7 CisgICBtZW1jcHkgKGZpbGVuYW1lLCByZWFsbmFtZSwgbGVuKTsKKy0gIHN0cmNweSAoZmlsZW5h bWUgKyBsZW4sIHN1ZmZpeCk7CisrICBzdHJjcHkgKGZpbGVuYW1lICsgbGVuLCBsYW5ndWFnZS0+ c3VmZml4KTsKKyAKKyAgIGNsZWFudXBzID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgZmlsZW5hbWUp OworICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgcmVhbG5hbWUpOworQEAgLTI2OSwyNyArMzQ5LDMz IEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUKKyAKKyAgIGlmIChp bnB1dCkKKyAgICAgeworLSAgICAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFj ZV9pbmZvOworLQorICAgICAgIG1ha2VfY2xlYW51cF9mY2xvc2UgKGlucHV0KTsKKyAKKy0gICAg ICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8t bG9hZC1zY3JpcHRzIgorLQkgY2FuIHByaW50IGl0LiAgKi8KKy0gICAgICBwc3BhY2VfaW5mbyA9 CistCWdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3Jh bV9zcGFjZSk7CistICAgICAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGRlYnVnZmls ZSwgZGVidWdmaWxlKTsKKy0KKyAgICAgICAvKiBUbyBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlv dXIgd2UgZG9uJ3QgY2hlY2sgZm9yIHdoZXRoZXIgdGhlCisgCSBzY3JpcHQgd2FzIGFscmVhZHkg aW4gdGhlIHRhYmxlLCBhbmQgYWx3YXlzIGxvYWQgaXQuCisgCSBJdCdzIGhpZ2hseSB1bmxpa2Vs eSB0aGF0IHdlJ2QgZXZlciBsb2FkIGl0IHR3aWNlLAorIAkgYW5kIHRoZXNlIHNjcmlwdHMgYXJl IHJlcXVpcmVkIHRvIGJlIGlkZW1wb3RlbnQgdW5kZXIgbXVsdGlwbGUKKyAJIGxvYWRzIGFueXdh eS4gICovCistICAgICAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUs IGlucHV0LCBkZWJ1Z2ZpbGUpOworKyAgICAgIGxhbmd1YWdlLT5zb3VyY2Vfc2NyaXB0X2Zvcl9v YmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKKyAgICAgfQorIAorICAgZG9fY2xl YW51cHMgKGNsZWFudXBzKTsKKyB9CisgCisrLyogTG9hZCBhbnkgYXV0by1sb2FkZWQgc2NyaXB0 cyBmb3IgT0JKRklMRS4gICovCisrCisrdm9pZAorK2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpm aWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyt7CisrICBpZiAoIWdsb2JhbF9hdXRvX2xv YWQpCisrICAgIHJldHVybjsKKysKKysgIGlmIChhdXRvX2xvYWRfZ2RiX3NjcmlwdHMpCisrICAg IGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAob2JqZmlsZSwgJnNjcmlwdF9sYW5ndWFnZV9nZGIp OworKworKyAgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKG9iamZpbGUpOwor K30KKysKKyAvKiBUaGlzIGlzIGEgbmV3X29iamZpbGUgb2JzZXJ2ZXIgY2FsbGJhY2sgdG8gYXV0 by1sb2FkIHNjcmlwdHMuCisgCisgICAgVHdvIGZsYXZvcnMgb2YgYXV0by1sb2FkZWQgc2NyaXB0 cyBhcmUgc3VwcG9ydGVkLgorQEAgLTMxNCw2ICs0MDAsMTMgQEAgYXV0b19sb2FkX25ld19vYmpm aWxlIChzdHJ1Y3Qgb2JqZmlsZSAqbworIHR5cGVkZWYgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmxv YWRlZF9zY3JpcHRfcHRyOworIERFRl9WRUNfUCAobG9hZGVkX3NjcmlwdF9wdHIpOworIAorK3N0 cnVjdCBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHNfZGF0YQorK3sKKysgIFZFQyAobG9hZGVkX3Nj cmlwdF9wdHIpICoqc2NyaXB0c19wOworKworKyAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFn ZSAqbGFuZ3VhZ2U7CisrfTsKKysKKyAvKiBUcmF2ZXJzYWwgZnVuY3Rpb24gZm9yIGh0YWJfdHJh dmVyc2UuCisgICAgQ29sbGVjdCB0aGUgZW50cnkgaWYgaXQgbWF0Y2hlcyB0aGUgcmVnZXhwLiAg Ki8KKyAKK0BAIC0zMjEsMTAgKzQxNCwxMCBAQCBzdGF0aWMgaW50CisgY29sbGVjdF9tYXRjaGlu Z19zY3JpcHRzICh2b2lkICoqc2xvdCwgdm9pZCAqaW5mbykKKyB7CisgICBzdHJ1Y3QgbG9hZGVk X3NjcmlwdCAqc2NyaXB0ID0gKnNsb3Q7CistICBWRUMgKGxvYWRlZF9zY3JpcHRfcHRyKSAqKnNj cmlwdHNfcHRyID0gaW5mbzsKKysgIHN0cnVjdCBjb2xsZWN0X21hdGNoaW5nX3NjcmlwdHNfZGF0 YSAqZGF0YSA9IGluZm87CisgCistICBpZiAocmVfZXhlYyAoc2NyaXB0LT5uYW1lKSkKKy0gICAg VkVDX3NhZmVfcHVzaCAobG9hZGVkX3NjcmlwdF9wdHIsICpzY3JpcHRzX3B0ciwgc2NyaXB0KTsK KysgIGlmIChzY3JpcHQtPmxhbmd1YWdlID09IGRhdGEtPmxhbmd1YWdlICYmIHJlX2V4ZWMgKHNj cmlwdC0+bmFtZSkpCisrICAgIFZFQ19zYWZlX3B1c2ggKGxvYWRlZF9zY3JpcHRfcHRyLCAqZGF0 YS0+c2NyaXB0c19wLCBzY3JpcHQpOworIAorICAgcmV0dXJuIDE7CisgfQorQEAgLTM2NiwxMCAr NDU5LDE4IEBAIHNvcnRfc2NyaXB0c19ieV9uYW1lIChjb25zdCB2b2lkICphcCwgY28KKyAgIHJl dHVybiBGSUxFTkFNRV9DTVAgKGEtPm5hbWUsIGItPm5hbWUpOworIH0KKyAKKy0vKiAiaW5mbyBh dXRvLWxvYWQtc2NyaXB0cyIgY29tbWFuZC4gICovCisrLyogU3BlY2lhbCBpbnRlcm5hbCBHREIg dmFsdWUgb2YgYXV0b19sb2FkX2luZm9fc2NyaXB0cydzIFBBVFRFUk4gaWRlbnRpZnkKKysgICB0 aGUgImluZm8gYXV0by1sb2FkIFhYWCIgY29tbWFuZCBoYXMgYmVlbiBleGVjdXRlZCB0aHJvdWdo IHRoZSBnZW5lcmFsCisrICAgImluZm8gYXV0by1sb2FkIiBpbnZvY2F0aW9uLiAgRXh0cmEgbmV3 bGluZSB3aWxsIGJlIHByaW50ZWQgaWYgbmVlZGVkLiAgKi8KKytjaGFyIGF1dG9fbG9hZF9pbmZv X3NjcmlwdHNfcGF0dGVybl9ubFtdID0gIiI7CisrCisrLyogSW1wbGVtZW50YXRpb24gZm9yICJp bmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKKysgICAoYW5kICJpbmZvIGF1dG8tbG9hZCBweXRo b24tc2NyaXB0cyIpLiAgTGlzdCBzY3JpcHRzIGluIExBTkdVQUdFIG1hdGNoaW5nCisrICAgUEFU VEVSTi4gIEZST01fVFRZIGlzIHRoZSB1c3VhbCBHREIgYm9vbGVhbiBmb3IgdXNlciBpbnRlcmFj dGl2aXR5LiAgKi8KKyAKKy1zdGF0aWMgdm9pZAorLWluZm9fYXV0b19sb2FkX3NjcmlwdHMgKGNo YXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSkKKyt2b2lkCisrYXV0b19sb2FkX2luZm9fc2NyaXB0 cyAoY2hhciAqcGF0dGVybiwgaW50IGZyb21fdHR5LAorKwkJCWNvbnN0IHN0cnVjdCBzY3JpcHRf bGFuZ3VhZ2UgKmxhbmd1YWdlKQorIHsKKyAgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVu dF91aW91dDsKKyAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwor QEAgLTQwMiwxNCArNTAzLDIyIEBAIGluZm9fYXV0b19sb2FkX3NjcmlwdHMgKGNoYXIgKnBhdHRl cm4sIGkKKyAKKyAgIGlmIChwc3BhY2VfaW5mbyAhPSBOVUxMICYmIHBzcGFjZV9pbmZvLT5sb2Fk ZWRfc2NyaXB0cyAhPSBOVUxMKQorICAgICB7CisrICAgICAgc3RydWN0IGNvbGxlY3RfbWF0Y2hp bmdfc2NyaXB0c19kYXRhIGRhdGEgPSB7ICZzY3JpcHRzLCBsYW5ndWFnZSB9OworKworICAgICAg IGltbWVkaWF0ZV9xdWl0Kys7CisgICAgICAgLyogUGFzcyBhIHBvaW50ZXIgdG8gc2NyaXB0cyBh cyBWRUNfc2FmZV9wdXNoIGNhbiByZWFsbG9jIHNwYWNlLiAgKi8KKyAgICAgICBodGFiX3RyYXZl cnNlX25vcmVzaXplIChwc3BhY2VfaW5mby0+bG9hZGVkX3NjcmlwdHMsCistCQkJICAgICAgY29s bGVjdF9tYXRjaGluZ19zY3JpcHRzLCAmc2NyaXB0cyk7CisrCQkJICAgICAgY29sbGVjdF9tYXRj aGluZ19zY3JpcHRzLCAmZGF0YSk7CisgICAgICAgaW1tZWRpYXRlX3F1aXQtLTsKKyAgICAgfQor IAorICAgbnJfc2NyaXB0cyA9IFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRz KTsKKysKKysgIC8qIFRhYmxlIGhlYWRlciBzaGlmdGVkIHJpZ2h0IGJ5IHByZWNlZGluZyAiZ2Ri LXNjcmlwdHM6ICAiIHdvdWxkIG5vdCBtYXRjaAorKyAgICAgaXRzIGNvbHVtbnMuICAqLworKyAg aWYgKG5yX3NjcmlwdHMgPiAwICYmIHBhdHRlcm4gPT0gYXV0b19sb2FkX2luZm9fc2NyaXB0c19w YXR0ZXJuX25sKQorKyAgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOworKworICAgbWFrZV9j bGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQgKHVpb3V0LCAyLCBucl9zY3JpcHRzLAorIAkJ CQkgICAgICAgIkF1dG9Mb2FkZWRTY3JpcHRzVGFibGUiKTsKKyAKK0BAIC00NDEsNiArNTUwLDI5 IEBAIGluZm9fYXV0b19sb2FkX3NjcmlwdHMgKGNoYXIgKnBhdHRlcm4sIGkKKyAgICAgfQorIH0K KyAKKysvKiBXcmFwcGVyIGZvciAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiLiAgKi8KKysK KytzdGF0aWMgdm9pZAorK2luZm9fYXV0b19sb2FkX2dkYl9zY3JpcHRzIChjaGFyICpwYXR0ZXJu LCBpbnQgZnJvbV90dHkpCisreworKyAgYXV0b19sb2FkX2luZm9fc2NyaXB0cyAocGF0dGVybiwg ZnJvbV90dHksICZzY3JpcHRfbGFuZ3VhZ2VfZ2RiKTsKKyt9CisrCisrLyogSW1wbGVtZW50ICdp bmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0Jy4gICovCisrCisrc3RhdGljIHZvaWQKKytpbmZv X2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0IChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisrewor KyAgaWYgKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lID09IE5VTEwpCisrICAgIHBy aW50Zl9maWx0ZXJlZCAoXygiTG9jYWwgLmdkYmluaXQgZmlsZSB3YXMgbm90IGZvdW5kLlxuIikp OworKyAgZWxzZSBpZiAoYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkKQorKyAgICBwcmlu dGZfZmlsdGVyZWQgKF8oIkxvY2FsIC5nZGJpbml0IGZpbGUgXCIlc1wiIGhhcyBiZWVuIGxvYWRl ZC5cbiIpLAorKwkJICAgICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSk7CisrICBl bHNlCisrICAgIHByaW50Zl9maWx0ZXJlZCAoXygiTG9jYWwgLmdkYmluaXQgZmlsZSBcIiVzXCIg aGFzIG5vdCBiZWVuIGxvYWRlZC5cbiIpLAorKwkJICAgICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5p dF9wYXRobmFtZSk7CisrfQorKworIC8qIFJldHVybiBub24temVybyBpZiBTQ1JJUFRfTk9UX0ZP VU5EX1dBUk5JTkdfUFJJTlRFRCBvZiBQU1BBQ0VfSU5GTyB3YXMgdW5zZXQKKyAgICBiZWZvcmUg Y2FsbGluZyB0aGlzIGZ1bmN0aW9uLiAgQWx3YXlzIHNldCBTQ1JJUFRfTk9UX0ZPVU5EX1dBUk5J TkdfUFJJTlRFRAorICAgIG9mIFBTUEFDRV9JTkZPLiAgKi8KK0BAIC00NTUsNiArNTg3LDEzMiBA QCBzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHN0cnVjdCBhCisgICByZXR1cm4gcmV0 dmFsOworIH0KKyAKKysvKiBUaGUgb25seSB2YWxpZCAic2V0IGF1dG8tbG9hZCIgYXJndW1lbnQg aXMgb2ZmfDB8bm98ZGlzYWJsZS4gICovCisrCisrc3RhdGljIHZvaWQKKytzZXRfYXV0b19sb2Fk X2NtZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQorK3sKKysgIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICpsaXN0OworKyAgc2l6ZV90IGxlbmd0aDsKKysKKysgIC8qIFNlZSBwYXJzZV9iaW5h cnlfb3BlcmF0aW9uIGluIHVzZSBieSB0aGUgc3ViLWNvbW1hbmRzLiAgKi8KKysKKysgIGxlbmd0 aCA9IGFyZ3MgPyBzdHJsZW4gKGFyZ3MpIDogMDsKKysKKysgIHdoaWxlIChsZW5ndGggPiAwICYm IChhcmdzW2xlbmd0aCAtIDFdID09ICcgJyB8fCBhcmdzW2xlbmd0aCAtIDFdID09ICdcdCcpKQor KyAgICBsZW5ndGgtLTsKKysKKysgIGlmIChsZW5ndGggPT0gMCB8fCAoc3RybmNtcCAoYXJncywg Im9mZiIsIGxlbmd0aCkgIT0gMAorKwkJICAgICAgJiYgc3RybmNtcCAoYXJncywgIjAiLCBsZW5n dGgpICE9IDAKKysJCSAgICAgICYmIHN0cm5jbXAgKGFyZ3MsICJubyIsIGxlbmd0aCkgIT0gMAor KwkJICAgICAgJiYgc3RybmNtcCAoYXJncywgImRpc2FibGUiLCBsZW5ndGgpICE9IDApKQorKyAg ICBlcnJvciAoXygiVmFsaWQgaXMgb25seSBnbG9iYWwgJ3NldCBhdXRvLWxvYWQgbm8nOyAiCisr CSAgICAgIm90aGVyd2lzZSBjaGVjayB0aGUgYXV0by1sb2FkIHN1Yi1jb21tYW5kcy4iKSk7Cisr CisrICBmb3IgKGxpc3QgPSAqYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKTsgbGlzdCAhPSBO VUxMOyBsaXN0ID0gbGlzdC0+bmV4dCkKKysgICAgaWYgKGxpc3QtPnZhcl90eXBlID09IHZhcl9i b29sZWFuKQorKyAgICAgIHsKKysJZ2RiX2Fzc2VydCAobGlzdC0+dHlwZSA9PSBzZXRfY21kKTsK KysJZG9fc2V0c2hvd19jb21tYW5kIChhcmdzLCBmcm9tX3R0eSwgbGlzdCk7CisrICAgICAgfQor K30KKysKKysvKiBJbml0aWFsaXplICJzZXQgYXV0by1sb2FkICIgY29tbWFuZHMgcHJlZml4IGFu ZCByZXR1cm4gaXQuICAqLworKworK3N0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqCisrYXV0b19s b2FkX3NldF9jbWRsaXN0X2dldCAodm9pZCkKKyt7CisrICBzdGF0aWMgc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKnJldHZhbDsKKysKKysgIGlmIChyZXR2YWwgPT0gTlVMTCkKKysgICAgYWRkX3By ZWZpeF9jbWQgKCJhdXRvLWxvYWQiLCBjbGFzc19tYWludGVuYW5jZSwgc2V0X2F1dG9fbG9hZF9j bWQsIF8oIlwKKytBdXRvLWxvYWRpbmcgc3BlY2lmaWMgc2V0dGluZ3MuXG5cCisrQ29uZmlndXJl IHZhcmlvdXMgYXV0by1sb2FkLXNwZWNpZmljIHZhcmlhYmxlcyBzdWNoIGFzXG5cCisrYXV0b21h dGljIGxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMuIiksCisrCQkgICAgJnJldHZhbCwgInNldCBh dXRvLWxvYWQgIiwKKysJCSAgICAxLyphbGxvdy11bmtub3duKi8sICZzZXRsaXN0KTsKKysKKysg IHJldHVybiAmcmV0dmFsOworK30KKysKKysvKiBDb21tYW5kICJzaG93IGF1dG8tbG9hZCIgZGlz cGxheXMgc3VtbWFyeSBvZiBhbGwgdGhlIGN1cnJlbnQKKysgICAic2hvdyBhdXRvLWxvYWQgIiBz ZXR0aW5ncy4gICovCisrCisrc3RhdGljIHZvaWQKKytzaG93X2F1dG9fbG9hZF9jbWQgKGNoYXIg KmFyZ3MsIGludCBmcm9tX3R0eSkKKyt7CisrICBjbWRfc2hvd19saXN0ICgqYXV0b19sb2FkX3No b3dfY21kbGlzdF9nZXQgKCksIGZyb21fdHR5LCAiIik7CisrfQorKworKy8qIEluaXRpYWxpemUg InNob3cgYXV0by1sb2FkICIgY29tbWFuZHMgcHJlZml4IGFuZCByZXR1cm4gaXQuICAqLworKwor K3N0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqCisrYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQg KHZvaWQpCisreworKyAgc3RhdGljIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpyZXR2YWw7Cisr CisrICBpZiAocmV0dmFsID09IE5VTEwpCisrICAgIGFkZF9wcmVmaXhfY21kICgiYXV0by1sb2Fk IiwgY2xhc3NfbWFpbnRlbmFuY2UsIHNob3dfYXV0b19sb2FkX2NtZCwgXygiXAorK1Nob3cgYXV0 by1sb2FkaW5nIHNwZWNpZmljIHNldHRpbmdzLlxuXAorK1Nob3cgY29uZmlndXJhdGlvbiBvZiB2 YXJpb3VzIGF1dG8tbG9hZC1zcGVjaWZpYyB2YXJpYWJsZXMgc3VjaCBhc1xuXAorK2F1dG9tYXRp YyBsb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzLiIpLAorKwkJICAgICZyZXR2YWwsICJzaG93IGF1 dG8tbG9hZCAiLAorKwkJICAgIDAvKmFsbG93LXVua25vd24qLywgJnNob3dsaXN0KTsKKysKKysg IHJldHVybiAmcmV0dmFsOworK30KKysKKysvKiBDb21tYW5kICJpbmZvIGF1dG8tbG9hZCIgZGlz cGxheXMgd2hldGhlciB0aGUgdmFyaW91cyBhdXRvLWxvYWQgZmlsZXMgaGF2ZQorKyAgIGJlZW4g bG9hZGVkLiAgVGhpcyBpcyByZWltcGxlbWVudGF0aW9uIG9mIGNtZF9zaG93X2xpc3Qgd2hpY2gg aW5zZXJ0cworKyAgIG5ld2xpbmVzIGF0IHByb3BlciBwbGFjZXMuICAqLworKworK3N0YXRpYyB2 b2lkCisraW5mb19hdXRvX2xvYWRfY21kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisrewor KyAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmxpc3Q7CisrICBzdHJ1Y3QgY2xlYW51cCAqaW5m b2xpc3RfY2hhaW47CisrICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7Cisr CisrICBpbmZvbGlzdF9jaGFpbiA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5k ICh1aW91dCwgImluZm9saXN0Iik7CisrCisrICBmb3IgKGxpc3QgPSAqYXV0b19sb2FkX2luZm9f Y21kbGlzdF9nZXQgKCk7IGxpc3QgIT0gTlVMTDsgbGlzdCA9IGxpc3QtPm5leHQpCisrICAgIHsK KysgICAgICBzdHJ1Y3QgY2xlYW51cCAqb3B0aW9uX2NoYWluCisrCT0gbWFrZV9jbGVhbnVwX3Vp X291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0LCAib3B0aW9uIik7CisrCisrICAgICAgZ2RiX2Fz c2VydCAoIWxpc3QtPnByZWZpeGxpc3QpOworKyAgICAgIGdkYl9hc3NlcnQgKGxpc3QtPnR5cGUg PT0gbm90X3NldF9jbWQpOworKworKyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAi bmFtZSIsIGxpc3QtPm5hbWUpOworKyAgICAgIHVpX291dF90ZXh0ICh1aW91dCwgIjogICIpOwor KyAgICAgIGNtZF9mdW5jIChsaXN0LCBhdXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRlcm5fbmws IGZyb21fdHR5KTsKKysKKysgICAgICAvKiBDbG9zZSB0aGUgdHVwbGUuICAqLworKyAgICAgIGRv X2NsZWFudXBzIChvcHRpb25fY2hhaW4pOworKyAgICB9CisrCisrICAvKiBDbG9zZSB0aGUgdHVw bGUuICAqLworKyAgZG9fY2xlYW51cHMgKGluZm9saXN0X2NoYWluKTsKKyt9CisrCisrLyogSW5p dGlhbGl6ZSAiaW5mbyBhdXRvLWxvYWQgIiBjb21tYW5kcyBwcmVmaXggYW5kIHJldHVybiBpdC4g ICovCisrCisrc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKioKKythdXRvX2xvYWRfaW5mb19jbWRs aXN0X2dldCAodm9pZCkKKyt7CisrICBzdGF0aWMgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnJl dHZhbDsKKysKKysgIGlmIChyZXR2YWwgPT0gTlVMTCkKKysgICAgYWRkX3ByZWZpeF9jbWQgKCJh dXRvLWxvYWQiLCBjbGFzc19pbmZvLCBpbmZvX2F1dG9fbG9hZF9jbWQsIF8oIlwKKytQcmludCBj dXJyZW50IHN0YXR1cyBvZiBhdXRvLWxvYWRlZCBmaWxlcy5cblwKKytQcmludCB3aGV0aGVyIHZh cmlvdXMgZmlsZXMgbGlrZSBQeXRob24gc2NyaXB0cyBvciAuZ2RiaW5pdCBmaWxlcyBoYXZlIGJl ZW5cblwKKytmb3VuZCBhbmQvb3IgbG9hZGVkLiIpLAorKwkJICAgICZyZXR2YWwsICJpbmZvIGF1 dG8tbG9hZCAiLAorKwkJICAgIDAvKmFsbG93LXVua25vd24qLywgJmluZm9saXN0KTsKKysKKysg IHJldHVybiAmcmV0dmFsOworK30KKysKKyB2b2lkIF9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9p ZCk7CisgCisgdm9pZAorQEAgLTQ2NSw4ICs3MjMsMzggQEAgX2luaXRpYWxpemVfYXV0b19sb2Fk ICh2b2lkKQorIAorICAgb2JzZXJ2ZXJfYXR0YWNoX25ld19vYmpmaWxlIChhdXRvX2xvYWRfbmV3 X29iamZpbGUpOworIAorLSAgYWRkX2luZm8gKCJhdXRvLWxvYWQtc2NyaXB0cyIsCistCSAgICBp bmZvX2F1dG9fbG9hZF9zY3JpcHRzLAorLQkgICAgXygiUHJpbnQgdGhlIGxpc3Qgb2YgYXV0b21h dGljYWxseSBsb2FkZWQgc2NyaXB0cy5cblwKKy1Vc2FnZTogaW5mbyBhdXRvLWxvYWQtc2NyaXB0 cyBbUkVHRVhQXSIpKTsKKysgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgiZ2RiLXNjcmlwdHMi LCBjbGFzc19zdXBwb3J0LAorKwkJCSAgICZhdXRvX2xvYWRfZ2RiX3NjcmlwdHMsIF8oIlwKKytF bmFibGUgb3IgZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21t YW5kcyBzY3JpcHRzLiIpLCBfKCJcCisrU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBjYW5u ZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgaXMgZW5hYmxlZC4iKSwKKysJCQkgICBf KCJcCisrSWYgZW5hYmxlZCwgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBhcmUgbG9hZGVk IHdoZW4gdGhlIGRlYnVnZ2VyIHJlYWRzXG5cCisrYW4gZXhlY3V0YWJsZSBvciBzaGFyZWQgbGli cmFyeS5cblwKKytUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBmb3IgdW50 cnVzdGVkIGluZmVyaW9ycy4iKSwKKysJCQkgICBOVUxMLCBzaG93X2F1dG9fbG9hZF9nZGJfc2Ny aXB0cywKKysJCQkgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpLAorKwkJCSAgIGF1dG9f bG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKKysKKysgIGFkZF9jbWQgKCJnZGItc2NyaXB0cyIs IGNsYXNzX2luZm8sIGluZm9fYXV0b19sb2FkX2dkYl9zY3JpcHRzLAorKwkgICBfKCJQcmludCB0 aGUgbGlzdCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMuXG5c CisrVXNhZ2U6IGluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIFtSRUdFWFBdIiksCisrCSAgIGF1 dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICgpKTsKKysKKysgIGFkZF9zZXRzaG93X2Jvb2xlYW5f Y21kICgibG9jYWwtZ2RiaW5pdCIsIGNsYXNzX3N1cHBvcnQsCisrCQkJICAgJmF1dG9fbG9hZF9s b2NhbF9nZGJpbml0LCBfKCJcCisrRW5hYmxlIG9yIGRpc2FibGUgYXV0by1sb2FkaW5nIG9mIC5n ZGJpbml0IHNjcmlwdCBpbiBjdXJyZW50IGRpcmVjdG9yeS4iKSwgXygiXAorK1Nob3cgd2hldGhl ciBhdXRvLWxvYWRpbmcgLmdkYmluaXQgc2NyaXB0IGluIGN1cnJlbnQgZGlyZWN0b3J5IGlzIGVu YWJsZWQuIiksCisrCQkJICAgXygiXAorK0lmIGVuYWJsZWQsIGNhbm5lZCBzZXF1ZW5jZXMgb2Yg Y29tbWFuZHMgYXJlIGxvYWRlZCB3aGVuIGRlYnVnZ2VyIHN0YXJ0c1xuXAorK2Zyb20gLmdkYmlu aXQgZmlsZSBpbiBjdXJyZW50IGRpcmVjdG9yeS4gIFN1Y2ggZmlsZXMgYXJlIGRlcHJlY2F0ZWQs XG5cCisrdXNlIGEgc2NyaXB0IGFzc29jaWF0ZWQgd2l0aCBpbmZlcmlvciBleGVjdXRhYmxlIGZp bGUgaW5zdGVhZC5cblwKKytUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBm b3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKKysJCQkgICBOVUxMLCBzaG93X2F1dG9fbG9hZF9s b2NhbF9nZGJpbml0LAorKwkJCSAgIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCksCisrCQkJ ICAgYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKCkpOworKworKyAgYWRkX2NtZCAoImxvY2Fs LWdkYmluaXQiLCBjbGFzc19pbmZvLCBpbmZvX2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0LAorKwkg ICBfKCJQcmludCB3aGV0aGVyIGN1cnJlbnQgZGlyZWN0b3J5IC5nZGJpbml0IGZpbGUgaGFzIGJl ZW4gbG9hZGVkLlxuXAorK1VzYWdlOiBpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiksCisr CSAgIGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICgpKTsKKyB9CitJbmRleDogZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6NDQ6MjYuOTUxNDM3NTE3 ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0x OCAwMDo0Njo0Ny41NTYwNzk3ODAgKzAyMDAKK0BAIC0yMiwxNSArMjIsMzYgQEAKKyAKKyBzdHJ1 Y3QgcHJvZ3JhbV9zcGFjZTsKKyAKKy1leHRlcm4gaW50IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQ7 Cisrc3RydWN0IHNjcmlwdF9sYW5ndWFnZQorK3sKKysgIGNvbnN0IGNoYXIgKnN1ZmZpeDsKKysK KysgIHZvaWQgKCpzb3VyY2Vfc2NyaXB0X2Zvcl9vYmpmaWxlKSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsIEZJTEUgKmZpbGUsCisrCQkJCSAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpOworK307 CisrCisrZXh0ZXJuIGludCBnbG9iYWxfYXV0b19sb2FkOworKworK2V4dGVybiBpbnQgYXV0b19s b2FkX2xvY2FsX2dkYmluaXQ7CisrZXh0ZXJuIGNoYXIgKmF1dG9fbG9hZF9sb2NhbF9nZGJpbml0 X3BhdGhuYW1lOworK2V4dGVybiBpbnQgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkOwor IAorIGV4dGVybiBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKKyAgIGdldF9hdXRvX2xv YWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2Up OworIGV4dGVybiBpbnQgbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2Vf aW5mbyAqcHNwYWNlX2luZm8sCistCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFy ICpmdWxsX3BhdGgpOworKwkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVs bF9wYXRoLAorKwkJCSAgICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2Up OworIGV4dGVybiB2b2lkIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCistCQkJCSAgICAgIGNvbnN0IGNoYXIgKnN1ZmZpeCk7CisrCQkJCSAgICAgIGNv bnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKTsKKytleHRlcm4gdm9pZCBsb2Fk X2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworIGV4 dGVybiBpbnQKKyAgIHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAoc3RydWN0IGF1dG9f bG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8pOworK2V4dGVybiBjaGFyIGF1dG9fbG9hZF9p bmZvX3NjcmlwdHNfcGF0dGVybl9ubFtdOworK2V4dGVybiB2b2lkIGF1dG9fbG9hZF9pbmZvX3Nj cmlwdHMgKGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSwKKysJCQkJICAgIGNvbnN0IHN0cnVj dCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKTsKKysKKytleHRlcm4gc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKiphdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICh2b2lkKTsKKytleHRlcm4gc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAodm9pZCk7 CisrZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX2luZm9fY21kbGlz dF9nZXQgKHZvaWQpOworIAorICNlbmRpZiAvKiBBVVRPX0xPQURfSCAqLworSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTAxLTA0IDA5 OjE3OjA1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4 LXRocmVhZC1kYi5jCTIwMTItMDQtMTggMDA6NDY6NDcuNTU3MDc5Nzc3ICswMjAwCitAQCAtNDAs OCArNDAsMTAgQEAKKyAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKKyAjaW5jbHVkZSAibGludXgtbmF0 LmgiCisgI2luY2x1ZGUgImxpbnV4LXByb2Nmcy5oIgorKyNpbmNsdWRlICJhdXRvLWxvYWQuaCIK KyAKKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisrI2luY2x1ZGUgPGN0eXBlLmg+CisgCisgI2lmZGVm IEhBVkVfR05VX0xJQkNfVkVSU0lPTl9ICisgI2luY2x1ZGUgPGdudS9saWJjLXZlcnNpb24uaD4K K0BAIC03NSw2ICs3NywyMSBAQAorIAorIHN0YXRpYyBjaGFyICpsaWJ0aHJlYWRfZGJfc2VhcmNo X3BhdGg7CisgCisrLyogU2V0IHRvIG5vbi16ZXJvIGlmIHRocmVhZF9kYiBhdXRvLWxvYWRpbmcg aXMgZW5hYmxlZAorKyAgIGJ5IHRoZSAic2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIiIGNvbW1h bmQuICAqLworK3N0YXRpYyBpbnQgYXV0b19sb2FkX3RocmVhZF9kYiA9IDE7CisrCisrLyogInNo b3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfdGhyZWFkX2RiIGNvbmZpZ3VyYXRpb24gdmFy aWFibGUuICAqLworKworK3N0YXRpYyB2b2lkCisrc2hvd19hdXRvX2xvYWRfdGhyZWFkX2RiIChz dHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorKwkJCSAgc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorK3sKKysgIGZwcmludGZfZmlsdGVyZWQg KGZpbGUsIF8oIkF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIg IgorKwkJCSAgICAiaXMgJXMuXG4iKSwKKysJCSAgICB2YWx1ZSk7CisrfQorKworIHN0YXRpYyB2 b2lkCisgc2V0X2xpYnRocmVhZF9kYl9zZWFyY2hfcGF0aCAoY2hhciAqaWdub3JlZCwgaW50IGZy b21fdHR5LAorIAkJCSAgICAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKQorQEAgLTExOSw2 ICsxMzYsMTAgQEAgc3RydWN0IHRocmVhZF9kYl9pbmZvCisgICAvKiBIYW5kbGUgZnJvbSBkbG9w ZW4gZm9yIGxpYnRocmVhZF9kYi5zby4gICovCisgICB2b2lkICpoYW5kbGU7CisgCisrICAvKiBB YnNvbHV0ZSBwYXRobmFtZSBmcm9tIGdkYl9yZWFscGF0aCB0byBkaXNrIGZpbGUgdXNlZCBmb3Ig ZGxvcGVuLWluZworKyAgICAgSEFORExFLiAgSXQgbWF5IGJlIE5VTEwgZm9yIHN5c3RlbSBsaWJy YXJ5LiAgKi8KKysgIGNoYXIgKmZpbGVuYW1lOworKworICAgLyogU3RydWN0dXJlIHRoYXQgaWRl bnRpZmllcyB0aGUgY2hpbGQgcHJvY2VzcyBmb3IgdGhlCisgICAgICA8cHJvY19zZXJ2aWNlLmg+ IGludGVyZmFjZS4gICovCisgICBzdHJ1Y3QgcHNfcHJvY2hhbmRsZSBwcm9jX2hhbmRsZTsKK0BA IC0yNDgsNiArMjY5LDggQEAgZGVsZXRlX3RocmVhZF9kYl9pbmZvIChpbnQgcGlkKQorICAgaWYg KGluZm8tPmhhbmRsZSAhPSBOVUxMKQorICAgICBkbGNsb3NlIChpbmZvLT5oYW5kbGUpOworIAor KyAgeGZyZWUgKGluZm8tPmZpbGVuYW1lKTsKKysKKyAgIGlmIChpbmZvX3ByZXYpCisgICAgIGlu Zm9fcHJldi0+bmV4dCA9IGluZm8tPm5leHQ7CisgICBlbHNlCitAQCAtODA3LDYgKzgzMCwxMCBA QCB0cnlfdGhyZWFkX2RiX2xvYWQgKGNvbnN0IGNoYXIgKmxpYnJhcnkpCisgCisgICBpbmZvID0g YWRkX3RocmVhZF9kYl9pbmZvIChoYW5kbGUpOworIAorKyAgLyogRG8gbm90IHNhdmUgc3lzdGVt IGxpYnJhcnkgbmFtZSwgdGhhdCBvbmUgaXMgYWx3YXlzIHRydXN0ZWQuICAqLworKyAgaWYgKHN0 cmNociAobGlicmFyeSwgJy8nKSAhPSBOVUxMKQorKyAgICBpbmZvLT5maWxlbmFtZSA9IGdkYl9y ZWFscGF0aCAobGlicmFyeSk7CisrCisgICBpZiAodHJ5X3RocmVhZF9kYl9sb2FkXzEgKGluZm8p KQorICAgICByZXR1cm4gMTsKKyAKK0BAIC04NTYsNiArODgzLDkgQEAgdHJ5X3RocmVhZF9kYl9s b2FkX2Zyb21fcGRpciAodm9pZCkKKyB7CisgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqOworIAorKyAg aWYgKCFhdXRvX2xvYWRfdGhyZWFkX2RiKQorKyAgICByZXR1cm4gMDsKKysKKyAgIEFMTF9PQkpG SUxFUyAob2JqKQorICAgICBpZiAobGlicHRocmVhZF9uYW1lX3AgKG9iai0+bmFtZSkpCisgICAg ICAgeworQEAgLTg5NSw2ICs5MjUsOSBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9kaXIgKGNv bnN0IGNoYXIKKyAgIGNoYXIgKnBhdGg7CisgICBpbnQgcmVzdWx0OworIAorKyAgaWYgKCFhdXRv X2xvYWRfdGhyZWFkX2RiKQorKyAgICByZXR1cm4gMDsKKysKKyAgIHBhdGggPSB4bWFsbG9jIChk aXJfbGVuICsgMSArIHN0cmxlbiAoTElCVEhSRUFEX0RCX1NPKSArIDEpOworICAgY2xlYW51cCA9 IG1ha2VfY2xlYW51cCAoeGZyZWUsIHBhdGgpOworIAorQEAgLTE4MDIsNiArMTgzNSwxNTAgQEAg dGhyZWFkX2RiX3Jlc3VtZSAoc3RydWN0IHRhcmdldF9vcHMgKm9wcworICAgYmVuZWF0aC0+dG9f cmVzdW1lIChiZW5lYXRoLCBwdGlkLCBzdGVwLCBzaWdubyk7CisgfQorIAorKy8qIHFzb3J0IGhl bHBlciBmdW5jdGlvbiBmb3IgaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiLCBzb3J0IHRoZQor KyAgIHRocmVhZF9kYl9pbmZvIHBvaW50ZXJzIHByaW1hcmlseSBieSB0aGVpciBGSUxFTkFNRSBh bmQgc2Vjb25kYXJpbHkgYnkgdGhlaXIKKysgICBQSUQsIGJvdGggaW4gYXNjZW5kaW5nIG9yZGVy LiAgKi8KKysKKytzdGF0aWMgaW50CisraW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiX2NvbXBh cmUgKGNvbnN0IHZvaWQgKmFwLCBjb25zdCB2b2lkICpicCkKKyt7CisrICBzdHJ1Y3QgdGhyZWFk X2RiX2luZm8gKmEgPSAqKHN0cnVjdCB0aHJlYWRfZGJfaW5mbyAqKikgYXA7CisrICBzdHJ1Y3Qg dGhyZWFkX2RiX2luZm8gKmIgPSAqKHN0cnVjdCB0aHJlYWRfZGJfaW5mbyAqKikgYnA7CisrICBp bnQgcmV0dmFsOworKworKyAgcmV0dmFsID0gc3RyY21wIChhLT5maWxlbmFtZSwgYi0+ZmlsZW5h bWUpOworKyAgaWYgKHJldHZhbCkKKysgICAgcmV0dXJuIHJldHZhbDsKKysKKysgIHJldHVybiAo YS0+cGlkID4gYi0+cGlkKSAtIChhLT5waWQgLSBiLT5waWQpOworK30KKysKKysvKiBJbXBsZW1l bnQgJ2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYicuICAqLworKworK3N0YXRpYyB2b2lkCisr aW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisr eworKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OworKyAgY29uc3QgY2hh ciAqY3MgPSBhcmdzID8gYXJncyA6ICIiOworKyAgc3RydWN0IHRocmVhZF9kYl9pbmZvICppbmZv LCAqKmFycmF5OworKyAgdW5zaWduZWQgaW5mb19jb3VudCwgdW5pcXVlX2ZpbGVuYW1lczsKKysg IHNpemVfdCBtYXhfZmlsZW5hbWVfbGVuLCBtYXhfcGlkc19sZW4sIHBpZHNfbGVuOworKyAgc3Ry dWN0IGNsZWFudXAgKmJhY2tfdG87CisrICBjaGFyICpwaWRzOworKyAgaW50IGk7CisrCisrICB3 aGlsZSAoaXNzcGFjZSAoKmNzKSkKKysgICAgY3MrKzsKKysgIGlmICgqY3MpCisrICAgIGVycm9y IChfKCInaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiJyBkb2VzIG5vdCBhY2NlcHQgYW55IHBh cmFtZXRlcnMiKSk7CisrCisrICBpbmZvX2NvdW50ID0gMDsKKysgIGZvciAoaW5mbyA9IHRocmVh ZF9kYl9saXN0OyBpbmZvOyBpbmZvID0gaW5mby0+bmV4dCkKKysgICAgaWYgKGluZm8tPmZpbGVu YW1lICE9IE5VTEwpCisrICAgICAgaW5mb19jb3VudCsrOworKworKyAgYXJyYXkgPSB4bWFsbG9j IChzaXplb2YgKCphcnJheSkgKiBpbmZvX2NvdW50KTsKKysgIGJhY2tfdG8gPSBtYWtlX2NsZWFu dXAgKHhmcmVlLCBhcnJheSk7CisrCisrICBpbmZvX2NvdW50ID0gMDsKKysgIGZvciAoaW5mbyA9 IHRocmVhZF9kYl9saXN0OyBpbmZvOyBpbmZvID0gaW5mby0+bmV4dCkKKysgICAgaWYgKGluZm8t PmZpbGVuYW1lICE9IE5VTEwpCisrICAgICAgYXJyYXlbaW5mb19jb3VudCsrXSA9IGluZm87Cisr CisrICAvKiBTb3J0IEFSUkFZIGJ5IGZpbGVuYW1lcyBhbmQgUElEcy4gICovCisrCisrICBxc29y dCAoYXJyYXksIGluZm9fY291bnQsIHNpemVvZiAoKmFycmF5KSwKKysJIGluZm9fYXV0b19sb2Fk X2xpYnRocmVhZF9kYl9jb21wYXJlKTsKKysKKysgIC8qIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9m IHVuaXF1ZSBmaWxlbmFtZXMgKHJvd3MpIGFuZCB0aGUgbWF4aW11bSBzdHJpbmcKKysgICAgIGxl bmd0aCBvZiBQSURzIGxpc3QgZm9yIHRoZSB1bmlxdWUgZmlsZW5hbWVzIChjb2x1bW5zKS4gICov CisrCisrICB1bmlxdWVfZmlsZW5hbWVzID0gMDsKKysgIG1heF9maWxlbmFtZV9sZW4gPSAwOwor KyAgbWF4X3BpZHNfbGVuID0gMDsKKysgIHBpZHNfbGVuID0gMDsKKysgIGZvciAoaSA9IDA7IGkg PCBpbmZvX2NvdW50OyBpKyspCisrICAgIHsKKysgICAgICBpbnQgcGlkID0gYXJyYXlbaV0tPnBp ZDsKKysgICAgICBzaXplX3QgdGhpc19waWRfbGVuOworKworKyAgICAgIGZvciAodGhpc19waWRf bGVuID0gMDsgcGlkICE9IDA7IHBpZCAvPSAxMCkKKysJdGhpc19waWRfbGVuKys7CisrCisrICAg ICAgaWYgKGkgPT0gMCB8fCBzdHJjbXAgKGFycmF5W2kgLSAxXS0+ZmlsZW5hbWUsIGFycmF5W2ld LT5maWxlbmFtZSkgIT0gMCkKKysJeworKwkgIHVuaXF1ZV9maWxlbmFtZXMrKzsKKysJICBtYXhf ZmlsZW5hbWVfbGVuID0gbWF4IChtYXhfZmlsZW5hbWVfbGVuLAorKwkJCQkgIHN0cmxlbiAoYXJy YXlbaV0tPmZpbGVuYW1lKSk7CisrCisrCSAgaWYgKGkgPiAwKQorKwkgICAgeworKwkgICAgICBw aWRzX2xlbiAtPSBzdHJsZW4gKCIsICIpOworKwkgICAgICBtYXhfcGlkc19sZW4gPSBtYXggKG1h eF9waWRzX2xlbiwgcGlkc19sZW4pOworKwkgICAgfQorKwkgIHBpZHNfbGVuID0gMDsKKysJfQor KyAgICAgIHBpZHNfbGVuICs9IHRoaXNfcGlkX2xlbiArIHN0cmxlbiAoIiwgIik7CisrICAgIH0K KysgIGlmIChpKQorKyAgICB7CisrICAgICAgcGlkc19sZW4gLT0gc3RybGVuICgiLCAiKTsKKysg ICAgICBtYXhfcGlkc19sZW4gPSBtYXggKG1heF9waWRzX2xlbiwgcGlkc19sZW4pOworKyAgICB9 CisrCisrICAvKiBUYWJsZSBoZWFkZXIgc2hpZnRlZCByaWdodCBieSBwcmVjZWRpbmcgImxpYnRo cmVhZC1kYjogICIgd291bGQgbm90IG1hdGNoCisrICAgICBpdHMgY29sdW1ucy4gICovCisrICBp ZiAoaW5mb19jb3VudCA+IDAgJiYgYXJncyA9PSBhdXRvX2xvYWRfaW5mb19zY3JpcHRzX3BhdHRl cm5fbmwpCisrICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7CisrCisrICBtYWtlX2NsZWFu dXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDIsIHVuaXF1ZV9maWxlbmFtZXMsCisr CQkJCSAgICAgICAiTGludXhUaHJlYWREYlRhYmxlIik7CisrCisrICB1aV9vdXRfdGFibGVfaGVh ZGVyICh1aW91dCwgbWF4X2ZpbGVuYW1lX2xlbiwgdWlfbGVmdCwgImZpbGVuYW1lIiwKKysJCSAg ICAgICAiRmlsZW5hbWUiKTsKKysgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCBwaWRzX2xl biwgdWlfbGVmdCwgIlBJRHMiLCAiUGlkcyIpOworKyAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0 KTsKKysKKysgIHBpZHMgPSB4bWFsbG9jIChtYXhfcGlkc19sZW4gKyAxKTsKKysgIG1ha2VfY2xl YW51cCAoeGZyZWUsIHBpZHMpOworKworKyAgLyogTm90ZSBJIGlzIGluY3JlbWVudGVkIGluc2lk ZSB0aGUgY3ljbGUsIG5vdCBhdCBpdHMgZW5kLiAgKi8KKysgIGZvciAoaSA9IDA7IGkgPCBpbmZv X2NvdW50OykKKysgICAgeworKyAgICAgIHN0cnVjdCBjbGVhbnVwICpjaGFpbiA9IG1ha2VfY2xl YW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgTlVMTCk7CisrICAgICAgY2hhciAq cGlkc19lbmQ7CisrCisrICAgICAgaW5mbyA9IGFycmF5W2ldOworKyAgICAgIHVpX291dF9maWVs ZF9zdHJpbmcgKHVpb3V0LCAiZmlsZW5hbWUiLCBpbmZvLT5maWxlbmFtZSk7CisrICAgICAgcGlk c19lbmQgPSBwaWRzOworKworKyAgICAgIHdoaWxlIChpIDwgaW5mb19jb3VudCAmJiBzdHJjbXAg KGluZm8tPmZpbGVuYW1lLCBhcnJheVtpXS0+ZmlsZW5hbWUpID09IDApCisrCXsKKysJICBpZiAo cGlkc19lbmQgIT0gcGlkcykKKysJICAgIHsKKysJICAgICAgKnBpZHNfZW5kKysgPSAnLCc7Cisr CSAgICAgICpwaWRzX2VuZCsrID0gJyAnOworKwkgICAgfQorKwkgIHBpZHNfZW5kICs9IHhzbnBy aW50ZiAocGlkc19lbmQsICZwaWRzW21heF9waWRzX2xlbiArIDFdIC0gcGlkc19lbmQsCisrCQkJ CSAiJXUiLCBhcnJheVtpXS0+cGlkKTsKKysJICBnZGJfYXNzZXJ0IChwaWRzX2VuZCA8ICZwaWRz W21heF9waWRzX2xlbiArIDFdKTsKKysKKysJICBpKys7CisrCX0KKysgICAgICAqcGlkc19lbmQg PSAnXDAnOworKworKyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAicGlkcyIsIHBp ZHMpOworKworKyAgICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7CisrICAgICAgZG9fY2xl YW51cHMgKGNoYWluKTsKKysgICAgfQorKworKyAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworKwor KyAgaWYgKGluZm9fY291bnQgPT0gMCkKKysgICAgdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCBf KCJObyBhdXRvLWxvYWRlZCBsaWJ0aHJlYWQtZGIuXG4iKSk7CisrfQorKworIHN0YXRpYyB2b2lk CisgaW5pdF90aHJlYWRfZGJfb3BzICh2b2lkKQorIHsKK0BAIC0xODYzLDYgKzIwNDAsMjMgQEAg V2hlbiBub24temVybywgbGlidGhyZWFkLWRiIGRlYnVnZ2luZyBpcworIAkJCSAgICBzaG93X2xp YnRocmVhZF9kYl9kZWJ1ZywKKyAJCQkgICAgJnNldGRlYnVnbGlzdCwgJnNob3dkZWJ1Z2xpc3Qp OworIAorKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJsaWJ0aHJlYWQtZGIiLCBjbGFzc19z dXBwb3J0LAorKwkJCSAgICZhdXRvX2xvYWRfdGhyZWFkX2RiLCBfKCJcCisrRW5hYmxlIG9yIGRp c2FibGUgYXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIGxpYnRocmVhZF9kYi4iKSwg XygiXAorK1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhy ZWFkX2RiIGlzIGVuYWJsZWQuIiksIF8oIlwKKytJZiBlbmFibGVkLCBsaWJ0aHJlYWRfZGIgd2ls bCBiZSBzZWFyY2hlZCBpbiAnc2V0IGxpYnRocmVhZC1kYi1zZWFyY2gtcGF0aCdcblwKKytsb2Nh dGlvbnMgdG8gbG9hZCBsaWJ0aHJlYWRfZGIgY29tcGF0aWJsZSB3aXRoIHRoZSBpbmZlcmlvci5c blwKKytTdGFuZGFyZCBzeXN0ZW0gbGlidGhyZWFkX2RiIHN0aWxsIGdldHMgbG9hZGVkIGV2ZW4g d2l0aCB0aGlzIG9wdGlvbiBvZmYuXG5cCisrVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBs aWNhdGlvbnMgZm9yIHVudHJ1c3RlZCBpbmZlcmlvcnMuIiksCisrCQkJICAgTlVMTCwgc2hvd19h dXRvX2xvYWRfdGhyZWFkX2RiLAorKwkJCSAgIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCks CisrCQkJICAgYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKCkpOworKworKyAgYWRkX2NtZCAo ImxpYnRocmVhZC1kYiIsIGNsYXNzX2luZm8sIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYiwK KysJICAgXygiUHJpbnQgdGhlIGxpc3Qgb2YgbG9hZGVkIGluZmVyaW9yIHNwZWNpZmljIGxpYnRo cmVhZF9kYi5cblwKKytVc2FnZTogaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIiksCisrCSAg IGF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICgpKTsKKysKKyAgIC8qIEFkZCBvdXJzZWx2ZXMg dG8gb2JqZmlsZSBldmVudCBjaGFpbi4gICovCisgICBvYnNlcnZlcl9hdHRhY2hfbmV3X29iamZp bGUgKHRocmVhZF9kYl9uZXdfb2JqZmlsZSk7CisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvbWFpbi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dk Yi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0NDoyNi45NTc0Mzc1MDMgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTcwNzk3NzcgKzAy MDAKK0BAIC05NDUsOCArOTQ1LDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgIC8q IFNraXAgYXV0by1sb2FkaW5nIHNlY3Rpb24tc3BlY2lmaWVkIHNjcmlwdHMgdW50aWwgd2UndmUg c291cmNlZAorICAgICAgbG9jYWxfZ2RiaW5pdCAod2hpY2ggaXMgb2Z0ZW4gdXNlZCB0byBhdWdt ZW50IHRoZSBzb3VyY2Ugc2VhcmNoCisgICAgICBwYXRoKS4gICovCistICBzYXZlX2F1dG9fbG9h ZCA9IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQ7CistICBnZGJweV9nbG9iYWxfYXV0b19sb2FkID0g MDsKKysgIHNhdmVfYXV0b19sb2FkID0gZ2xvYmFsX2F1dG9fbG9hZDsKKysgIGdsb2JhbF9hdXRv X2xvYWQgPSAwOworIAorICAgaWYgKGV4ZWNhcmcgIT0gTlVMTAorICAgICAgICYmIHN5bWFyZyAh PSBOVUxMCitAQCAtMTAyMiwxNCArMTAyMiwyNCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRh KQorIAorICAgLyogUmVhZCB0aGUgLmdkYmluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3Rv cnksICppZiogaXQgaXNuJ3QKKyAgICAgIHRoZSBzYW1lIGFzIHRoZSAkSE9NRS8uZ2RiaW5pdCBm aWxlIChpdCBzaG91bGQgZXhpc3QsIGFsc28pLiAgKi8KKy0gIGlmIChsb2NhbF9nZGJpbml0ICYm ICFpbmhpYml0X2dkYmluaXQpCistICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChzb3VyY2Vfc2Ny aXB0LCBsb2NhbF9nZGJpbml0LCAwLCBSRVRVUk5fTUFTS19BTEwpOworKyAgaWYgKGxvY2FsX2dk YmluaXQpCisrICAgIHsKKysgICAgICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSA9 IGdkYl9yZWFscGF0aCAobG9jYWxfZ2RiaW5pdCk7CisrCisrICAgICAgaWYgKCFpbmhpYml0X2dk YmluaXQgJiYgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQpCisrCXsKKysJICBhdXRvX2xvYWRfbG9j YWxfZ2RiaW5pdF9sb2FkZWQgPSAxOworKworKwkgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChzb3Vy Y2Vfc2NyaXB0LCBsb2NhbF9nZGJpbml0LCAwLAorKwkJCQlSRVRVUk5fTUFTS19BTEwpOworKwl9 CisrICAgIH0KKyAKKyAgIC8qIE5vdyB0aGF0IGFsbCAuZ2RiaW5pdCdzIGhhdmUgYmVlbiByZWFk IGFuZCBhbGwgLWQgb3B0aW9ucyBoYXZlIGJlZW4KKyAgICAgIHByb2Nlc3NlZCwgd2UgY2FuIHJl YWQgYW55IHNjcmlwdHMgbWVudGlvbmVkIGluIFNZTUFSRy4KKyAgICAgIFdlIHdhaXQgdW50aWwg bm93IGJlY2F1c2UgaXQgaXMgY29tbW9uIHRvIGFkZCB0byB0aGUgc291cmNlIHNlYXJjaAorICAg ICAgcGF0aCBpbiBsb2NhbF9nZGJpbml0LiAgKi8KKy0gIGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQg PSBzYXZlX2F1dG9fbG9hZDsKKysgIGdsb2JhbF9hdXRvX2xvYWQgPSBzYXZlX2F1dG9fbG9hZDsK KyAgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKKyAgICAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29i amZpbGUgKG9iamZpbGUpOworIAorQEAgLTExOTYsNyArMTIwNiw3IEBAIEF0IHN0YXJ0dXAsIEdE QiByZWFkcyB0aGUgZm9sbG93aW5nIGluaXQKKyAiKSwgaG9tZV9nZGJpbml0KTsKKyAgIGlmIChs b2NhbF9nZGJpbml0KQorICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKHN0cmVhbSwgXygiXAorLSAg ICogbG9jYWwgaW5pdCBmaWxlOiAuLyVzXG5cCisrICAgKiBsb2NhbCBpbml0IGZpbGUgKHNlZSBh bHNvICdzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQnKTogLi8lc1xuXAorICIpLCBsb2NhbF9n ZGJpbml0KTsKKyAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlxuXAorIEZvciBtb3JlIGluZm9ybWF0 aW9uLCB0eXBlIFwiaGVscFwiIGZyb20gd2l0aGluIEdEQiwgb3IgY29uc3VsdCB0aGVcblwKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8KKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0 LTE4IDAwOjQ0OjI2LjkyODQzNzU3NyArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAorQEAg LTEwMzQsNiArMTAzNCw3IEBAIFlvdSBjYW4gcnVuIEB2YWx1ZXtHREJOfSBpbiB2YXJpb3VzIGFs dGUKKyBiYXRjaCBtb2RlIG9yIHF1aWV0IG1vZGUuCisgCisgQHRhYmxlIEBjb2RlCisrQGFuY2hv cnstbnh9CisgQGl0ZW0gLW54CisgQGl0ZW14IC1uCisgQGNpbmRleCBAY29kZXstLW54fQorQEAg LTEyNjUsNiArMTI2Niw3IEBAIEhlcmUncyB0aGUgZGVzY3JpcHRpb24gb2Ygd2hhdCBAdmFsdWV7 R0QKKyBTZXRzIHVwIHRoZSBjb21tYW5kIGludGVycHJldGVyIGFzIHNwZWNpZmllZCBieSB0aGUg Y29tbWFuZCBsaW5lCisgKEBweHJlZntNb2RlIE9wdGlvbnMsIGludGVycHJldGVyfSkuCisgCisr QGFuY2hvcntPcHRpb24gLWluaXQtZXZhbC1jb21tYW5kfQorIEBpdGVtCisgRXhlY3V0ZXMgY29t bWFuZHMgYW5kIGNvbW1hbmQgZmlsZXMgc3BlY2lmaWVkIGJ5IHRoZSBAc2FtcHstaWV4fSBhbmQK KyBAc2FtcHstaXh9IG9wdGlvbnMgaW4gdGhlaXIgc3BlY2lmaWVkIG9yZGVyLiAgVXN1YWxseSB5 b3Ugc2hvdWxkIHVzZSB0aGUKK0BAIC0xMjc5LDYgKzEyODEsNyBAQCB1c2VkIHdoZW4gYnVpbGRp bmcgQHZhbHVle0dEQk59OyBAcHhyZWZ7CisgICxTeXN0ZW0td2lkZSBjb25maWd1cmF0aW9uIGFu ZCBzZXR0aW5nc30pIGFuZCBleGVjdXRlcyBhbGwgdGhlIGNvbW1hbmRzIGluCisgdGhhdCBmaWxl LgorIAorK0BhbmNob3J7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfQorIEBpdGVtCisgUmVhZHMg dGhlIGluaXQgZmlsZSAoaWYgYW55KSBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5QGZvb3Rub3Rle09u CisgRE9TL1dpbmRvd3Mgc3lzdGVtcywgdGhlIGhvbWUgZGlyZWN0b3J5IGlzIHRoZSBvbmUgcG9p bnRlZCB0byBieSB0aGUKK0BAIC0xMjg4LDkgKzEyOTEsMTIgQEAgdGhhdCBmaWxlLgorIEBpdGVt CisgUHJvY2Vzc2VzIGNvbW1hbmQgbGluZSBvcHRpb25zIGFuZCBvcGVyYW5kcy4KKyAKKytAYW5j aG9ye0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnkgZHVyaW5nIFN0YXJ0dXB9Cisg QGl0ZW0KKyBSZWFkcyBhbmQgZXhlY3V0ZXMgdGhlIGNvbW1hbmRzIGZyb20gaW5pdCBmaWxlIChp ZiBhbnkpIGluIHRoZSBjdXJyZW50Cistd29ya2luZyBkaXJlY3RvcnkuICBUaGlzIGlzIG9ubHkg ZG9uZSBpZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMKKyt3b3JraW5nIGRpcmVjdG9yeSBhcyBs b25nIGFzIEBzYW1we3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0gaXMgc2V0IHRvCisrQHNh bXB7b259IChAcHhyZWZ7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeX0pLgorK1Ro aXMgaXMgb25seSBkb25lIGlmIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcworIGRpZmZlcmVudCBm cm9tIHlvdXIgaG9tZSBkaXJlY3RvcnkuICBUaHVzLCB5b3UgY2FuIGhhdmUgbW9yZSB0aGFuIG9u ZQorIGluaXQgZmlsZSwgb25lIGdlbmVyaWMgaW4geW91ciBob21lIGRpcmVjdG9yeSwgYW5kIGFu b3RoZXIsIHNwZWNpZmljCisgdG8gdGhlIHByb2dyYW0geW91IGFyZSBkZWJ1Z2dpbmcsIGluIHRo ZSBkaXJlY3Rvcnkgd2hlcmUgeW91IGludm9rZQorQEAgLTEzMDYsNyArMTMxMiw3IEBAIElmIHlv dSB3aXNoIHRvIGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZworIHlvdSBtdXN0IGRvIHNvbWV0aGlu ZyBsaWtlIHRoZSBmb2xsb3dpbmc6CisgCisgQHNtYWxsZXhhbXBsZQorLSQgZ2RiIC1pZXggInNl dCBhdXRvLWxvYWQtc2NyaXB0cyBvZmYiIG15cHJvZ3JhbQorKyQgZ2RiIC1pZXggInNldCBhdXRv LWxvYWQgcHl0aG9uLXNjcmlwdHMgb2ZmIiBteXByb2dyYW0KKyBAZW5kIHNtYWxsZXhhbXBsZQor IAorIE9wdGlvbiBAc2FtcHstZXh9IGRvZXMgbm90IHdvcmsgYmVjYXVzZSB0aGUgYXV0by1sb2Fk aW5nIGlzIHRoZW4gdHVybmVkCitAQCAtMjg5MSw2ICsyODk3LDcgQEAgcHJvZ3JhbXMgd2l0aCBt dWx0aXBsZSB0aHJlYWRzLgorIEB4cmVme1NldCBXYXRjaHBvaW50cywsU2V0dGluZyBXYXRjaHBv aW50c30sIGZvciBpbmZvcm1hdGlvbiBhYm91dAorIHdhdGNocG9pbnRzIGluIHByb2dyYW1zIHdp dGggbXVsdGlwbGUgdGhyZWFkcy4KKyAKKytAYW5jaG9ye3NldCBsaWJ0aHJlYWQtZGItc2VhcmNo LXBhdGh9CisgQHRhYmxlIEBjb2RlCisgQGtpbmRleCBzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1w YXRoCisgQGNpbmRleCBzZWFyY2ggcGF0aCBmb3IgQGNvZGV7bGlidGhyZWFkX2RifQorQEAgLTI5 MDUsMTEgKzI5MTIsMTUgQEAgbWFjcm8uCisgT24gQHNje2dudX0vTGludXggYW5kIFNvbGFyaXMg c3lzdGVtcywgQHZhbHVle0dEQk59IHVzZXMgYSBgYGhlbHBlcicnCisgQGNvZGV7bGlidGhyZWFk X2RifSBsaWJyYXJ5IHRvIG9idGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aHJlYWRzIGluIHRoZQor IGluZmVyaW9yIHByb2Nlc3MuICBAdmFsdWV7R0RCTn0gd2lsbCB1c2UgQHNhbXB7bGlidGhyZWFk LWRiLXNlYXJjaC1wYXRofQorLXRvIGZpbmQgQGNvZGV7bGlidGhyZWFkX2RifS4KKyt0byBmaW5k IEBjb2Rle2xpYnRocmVhZF9kYn0uICBAdmFsdWV7R0RCTn0gYWxzbyBjb25zdWx0cyBmaXJzdCBp ZiBpbmZlcmlvcgorK3NwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeSBsb2FkaW5nIGlz IGVuYWJsZWQKKytieSBAc2FtcHtzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0gKEBweHJlZnts aWJ0aHJlYWRfZGIuc28uMSBmaWxlfSkuCisgCisgQSBzcGVjaWFsIGVudHJ5IEBzYW1weyRzZGly fSBmb3IgQHNhbXB7bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRofQorIHJlZmVycyB0byB0aGUgZGVm YXVsdCBzeXN0ZW0gZGlyZWN0b3JpZXMgdGhhdCBhcmUKKy1ub3JtYWxseSBzZWFyY2hlZCBmb3Ig bG9hZGluZyBzaGFyZWQgbGlicmFyaWVzLgorK25vcm1hbGx5IHNlYXJjaGVkIGZvciBsb2FkaW5n IHNoYXJlZCBsaWJyYXJpZXMuICBUaGUgQHNhbXB7JHNkaXJ9IGVudHJ5CisraXMgdGhlIG9ubHkg a2luZCBub3QgbmVlZGluZyB0byBiZSBlbmFibGVkIGJ5IEBzYW1we3NldCBhdXRvLWxvYWQgbGli dGhyZWFkLWRifQorKyhAcHhyZWZ7bGlidGhyZWFkX2RiLnNvLjEgZmlsZX0pLgorIAorIEEgc3Bl Y2lhbCBlbnRyeSBAc2FtcHskcGRpcn0gZm9yIEBzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0 aH0KKyByZWZlcnMgdG8gdGhlIGRpcmVjdG9yeSBmcm9tIHdoaWNoIEBjb2Rle2xpYnB0aHJlYWR9 CitAQCAtMjAzMjAsNiArMjAzMzEsNyBAQCBkZXNjcmliZWQgaGVyZS4KKyAqIFNjcmVlbiBTaXpl OjogICAgICAgICAgICAgICAgIFNjcmVlbiBzaXplCisgKiBOdW1iZXJzOjogICAgICAgICAgICAg ICAgICAgICBOdW1iZXJzCisgKiBBQkk6OiAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1 cmluZyB0aGUgY3VycmVudCBBQkkKKysqIEF1dG8tbG9hZGluZzo6ICAgICAgICAgICAgICAgIEF1 dG9tYXRpY2FsbHkgbG9hZGluZyBhc3NvY2lhdGVkIGZpbGVzCisgKiBNZXNzYWdlcy9XYXJuaW5n czo6ICAgICAgICAgICBPcHRpb25hbCB3YXJuaW5ncyBhbmQgbWVzc2FnZXMKKyAqIERlYnVnZ2lu ZyBPdXRwdXQ6OiAgICAgICAgICAgIE9wdGlvbmFsIG1lc3NhZ2VzIGFib3V0IGludGVybmFsIGhh cHBlbmluZ3MKKyAqIE90aGVyIE1pc2MgU2V0dGluZ3M6OiAgICAgICAgIE90aGVyIE1pc2NlbGxh bmVvdXMgU2V0dGluZ3MKK0BAIC0yMDc0NSw2ICsyMDc1NywyMjcgQEAgV2l0aCBubyBhcmd1bWVu dCwgc2hvdyB0aGUgbGlzdCBvZiBzdXBwbworIFNldCB0aGUgY3VycmVudCBDQHR7Kyt9IEFCSSB0 byBAdmFye2FiaX0sIG9yIHJldHVybiB0byBhdXRvbWF0aWMgZGV0ZWN0aW9uLgorIEBlbmQgdGFi bGUKKyAKKytAbm9kZSBBdXRvLWxvYWRpbmcKKytAc2VjdGlvbiBBdXRvbWF0aWNhbGx5IGxvYWRp bmcgYXNzb2NpYXRlZCBmaWxlcworK0BjaW5kZXggYXV0by1sb2FkaW5nCisrCisrQHZhbHVle0dE Qk59IHNvbWV0aW1lcyByZWFkcyBmaWxlcyB3aXRoIGNvbW1hbmRzIGFuZCBzZXR0aW5ncyBhdXRv bWF0aWNhbGx5LAorK3dpdGhvdXQgYmVpbmcgZXhwbGljaXRseSB0b2xkIHNvIGJ5IHRoZSB1c2Vy LiAgV2UgY2FsbCB0aGlzIGZlYXR1cmUKKytAZGZue2F1dG8tbG9hZGluZ30uICBXaGlsZSBhdXRv LWxvYWRpbmcgaXMgdXNlZnVsIGZvciBhdXRvbWF0aWNhbGx5IGFkYXB0aW5nCisrQHZhbHVle0dE Qk59IHRvIHRoZSBuZWVkcyBvZiB5b3VyIHByb2plY3QsIGl0IGNhbiBzb21ldGltZXMgcHJvZHVj ZSB1bmV4cGVjdGVkCisrcmVzdWx0cyBvciBpbnRyb2R1Y2Ugc2VjdXJpdHkgcmlza3MgKGUuZy4s IGlmIHRoZSBmaWxlIGNvbWVzIGZyb20gdW50cnVzdGVkCisrc291cmNlcykuCisrCisrRm9yIHRo ZXNlIHJlYXNvbnMsIEB2YWx1ZXtHREJOfSBpbmNsdWRlcyBjb21tYW5kcyBhbmQgb3B0aW9ucyB0 byBsZXQgeW91CisrY29udHJvbCB3aGVuIHRvIGF1dG8tbG9hZCBmaWxlcyBhbmQgd2hpY2ggZmls ZXMgc2hvdWxkIGJlIGF1dG8tbG9hZGVkLgorKworK0B0YWJsZSBAY29kZQorK0BhbmNob3J7c2V0 IGF1dG8tbG9hZCBvZmZ9CisrQGtpbmRleCBzZXQgYXV0by1sb2FkIG9mZgorK0BpdGVtIHNldCBh dXRvLWxvYWQgb2ZmCisrR2xvYmFsbHkgZGlzYWJsZSBsb2FkaW5nIG9mIGFsbCBhdXRvLWxvYWRl ZCBmaWxlcy4KKytZb3UgbWF5IHdhbnQgdG8gdXNlIHRoaXMgY29tbWFuZCB3aXRoIHRoZSBAc2Ft cHstaWV4fSBvcHRpb24KKysoQHB4cmVme09wdGlvbiAtaW5pdC1ldmFsLWNvbW1hbmR9KSBzdWNo IGFzOgorK0BzbWFsbGV4YW1wbGUKKyskIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgb2Zm IiB1bnRydXN0ZWQtZXhlY3V0YWJsZSBjb3JlZmlsZX0KKytAZW5kIHNtYWxsZXhhbXBsZQorKwor K0JlIGF3YXJlIHRoYXQgc3lzdGVtIGluaXQgZmlsZSAoQHB4cmVme1N5c3RlbS13aWRlIGNvbmZp Z3VyYXRpb259KQorK2FuZCBpbml0IGZpbGVzIGZyb20geW91ciBob21lIGRpcmVjdG9yeSAoQHB4 cmVme0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pCisrc3RpbGwgZ2V0IHJlYWQgKGFzIHRoZXkg Y29tZSBmcm9tIGdlbmVyYWxseSB0cnVzdGVkIGRpcmVjdG9yaWVzKS4KKytUbyBwcmV2ZW50IEB2 YWx1ZXtHREJOfSBmcm9tIGF1dG8tbG9hZGluZyBldmVuIHRob3NlIGluaXQgZmlsZXMsIHVzZSB0 aGUKKytAb3B0aW9uey1ueH0gb3B0aW9uIChAcHhyZWZ7TW9kZSBPcHRpb25zfSksIGluIGFkZGl0 aW9uIHRvCisrQGNvZGV7c2V0IGF1dG8tbG9hZCBub30uCisrCisrQGFuY2hvcntzaG93IGF1dG8t bG9hZH0KKytAa2luZGV4IHNob3cgYXV0by1sb2FkCisrQGl0ZW0gc2hvdyBhdXRvLWxvYWQKKytT aG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGVhY2ggc3BlY2lmaWMgQHNhbXB7YXV0by1sb2Fk fSBmaWxlKHMpIGlzIGVuYWJsZWQKKytvciBkaXNhYmxlZC4KKysKKytAc21hbGxleGFtcGxlCisr KGdkYikgc2hvdyBhdXRvLWxvYWQKKytnZGItc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBjYW5u ZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgaXMgb24uCisrbGlidGhyZWFkLWRiOiAg QXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIGxpYnRocmVhZF9kYiBpcyBvbi4KKyts b2NhbC1nZGJpbml0OiAgQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0IHNjcmlwdCBmcm9tIGN1cnJl bnQgZGlyZWN0b3J5IGlzIG9uLgorK3B5dGhvbi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIFB5 dGhvbiBzY3JpcHRzIGlzIG9uLgorK0BlbmQgc21hbGxleGFtcGxlCisrCisrQGFuY2hvcntpbmZv IGF1dG8tbG9hZH0KKytAa2luZGV4IGluZm8gYXV0by1sb2FkCisrQGl0ZW0gaW5mbyBhdXRvLWxv YWQKKytQcmludCB3aGV0aGVyIGVhY2ggc3BlY2lmaWMgQHNhbXB7YXV0by1sb2FkfSBmaWxlKHMp IGhhdmUgYmVlbiBhdXRvLWxvYWRlZCBvcgorK25vdC4KKysKKytAc21hbGxleGFtcGxlCisrKGdk YikgaW5mbyBhdXRvLWxvYWQKKytnZGItc2NyaXB0czoKKytMb2FkZWQgIFNjcmlwdAorK1llcyAg ICAgL2hvbWUvdXNlci9nZGIvZ2RiLWdkYi5nZGIKKytsaWJ0aHJlYWQtZGI6ICBObyBhdXRvLWxv YWRlZCBsaWJ0aHJlYWQtZGIuCisrbG9jYWwtZ2RiaW5pdDogIExvY2FsIC5nZGJpbml0IGZpbGUg Ii9ob21lL3VzZXIvZ2RiLy5nZGJpbml0IiBoYXMgYmVlbiBsb2FkZWQuCisrcHl0aG9uLXNjcmlw dHM6CisrTG9hZGVkICBTY3JpcHQKKytZZXMgICAgIC9ob21lL3VzZXIvZ2RiL2dkYi1nZGIucHkK KytAZW5kIHNtYWxsZXhhbXBsZQorK0BlbmQgdGFibGUKKysKKytUaGVzZSBhcmUgdmFyaW91cyBr aW5kcyBvZiBmaWxlcyBAdmFsdWV7R0RCTn0gY2FuIGF1dG9tYXRpY2FsbHkgbG9hZDoKKysKKytA aXRlbWl6ZSBAYnVsbGV0CisrQGl0ZW0KKytAeHJlZntvYmpmaWxlLWdkYi5weSBmaWxlfSwgY29u dHJvbGxlZCBieSBAcmVme3NldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9LgorK0BpdGVtCisr QHhyZWZ7b2JqZmlsZS1nZGIuZ2RiIGZpbGV9LCBjb250cm9sbGVkIGJ5IEByZWZ7c2V0IGF1dG8t bG9hZCBnZGItc2NyaXB0c30uCisrQGl0ZW0KKytAeHJlZntkb3RkZWJ1Z19nZGJfc2NyaXB0cyBz ZWN0aW9ufSwKKytjb250cm9sbGVkIGJ5IEByZWZ7c2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0 c30uCisrQGl0ZW0KKytAeHJlZntJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5fSwK Kytjb250cm9sbGVkIGJ5IEByZWZ7c2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KKytAaXRl bQorK0B4cmVme2xpYnRocmVhZF9kYi5zby4xIGZpbGV9LCBjb250cm9sbGVkIGJ5IEByZWZ7c2V0 IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgorK0BlbmQgaXRlbWl6ZQorKworK1RoZXNlIGFyZSBA dmFsdWV7R0RCTn0gY29udHJvbCBjb21tYW5kcyBmb3IgdGhlIGF1dG8tbG9hZGluZzoKKysKKytA bXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC41IC41CisrQGl0ZW0gQHhyZWZ7c2V0IGF1dG8t bG9hZCBvZmZ9LgorK0B0YWIgRGlzYWJsZSBhdXRvLWxvYWRpbmcgZ2xvYmFsbHkuCisrQGl0ZW0g QHhyZWZ7c2hvdyBhdXRvLWxvYWR9LgorK0B0YWIgU2hvdyBzZXR0aW5nIG9mIGFsbCBraW5kcyBv ZiBmaWxlcy4KKytAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZH0uCisrQHRhYiBTaG93IHN0YXRl IG9mIGFsbCBraW5kcyBvZiBmaWxlcy4KKytAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIGdkYi1z Y3JpcHRzfS4KKytAdGFiIENvbnRyb2wgZm9yIEB2YWx1ZXtHREJOfSBjb21tYW5kIHNjcmlwdHMu CisrQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9LgorK0B0YWIgU2hvdyBz ZXR0aW5nIG9mIEB2YWx1ZXtHREJOfSBjb21tYW5kIHNjcmlwdHMuCisrQGl0ZW0gQHhyZWZ7aW5m byBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9LgorK0B0YWIgU2hvdyBzdGF0ZSBvZiBAdmFsdWV7R0RC Tn0gY29tbWFuZCBzY3JpcHRzLgorK0BpdGVtIEB4cmVme3NldCBhdXRvLWxvYWQgcHl0aG9uLXNj cmlwdHN9LgorK0B0YWIgQ29udHJvbCBmb3IgQHZhbHVle0dEQk59IFB5dGhvbiBzY3JpcHRzLgor K0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfS4KKytAdGFiIFNob3cg c2V0dGluZyBvZiBAdmFsdWV7R0RCTn0gUHl0aG9uIHNjcmlwdHMuCisrQGl0ZW0gQHhyZWZ7aW5m byBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9LgorK0B0YWIgU2hvdyBzdGF0ZSBvZiBAdmFsdWV7 R0RCTn0gUHl0aG9uIHNjcmlwdHMuCisrQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBsb2NhbC1n ZGJpbml0fS4KKytAdGFiIENvbnRyb2wgZm9yIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJl Y3RvcnkuCisrQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0uCisrQHRh YiBTaG93IHNldHRpbmcgb2YgaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKytA aXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KKytAdGFiIFNob3cgc3Rh dGUgb2YgaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKytAaXRlbSBAeHJlZntz ZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0uCisrQHRhYiBDb250cm9sIGZvciB0aHJlYWQgZGVi dWdnaW5nIGxpYnJhcnkuCisrQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRi fS4KKytAdGFiIFNob3cgc2V0dGluZyBvZiB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCisrQGl0 ZW0gQHhyZWZ7aW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifS4KKytAdGFiIFNob3cgc3RhdGUg b2YgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5LgorK0BlbmQgbXVsdGl0YWJsZQorKworK0BtZW51 CisrKiBJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5OjogQHNhbXB7c2V0L3Nob3cv aW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0KKysqIGxpYnRocmVhZF9kYi5zby4xIGZpbGU6 OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9 CisrKiBvYmpmaWxlLWdkYi5nZGIgZmlsZTo6ICAgICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cv aW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdH0KKytAeHJlZntQeXRob24gQXV0by1sb2FkaW5nfS4K KytAZW5kIG1lbnUKKysKKytAbm9kZSBJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5 CisrQHN1YnNlY3Rpb24gQXV0b21hdGljYWxseSBsb2FkaW5nIGluaXQgZmlsZSBpbiB0aGUgY3Vy cmVudCBkaXJlY3RvcnkKKytAY2luZGV4IGF1dG8tbG9hZGluZyBpbml0IGZpbGUgaW4gdGhlIGN1 cnJlbnQgZGlyZWN0b3J5CisrCisrQnkgZGVmYXVsdCwgQHZhbHVle0dEQk59IHJlYWRzIGFuZCBl eGVjdXRlcyB0aGUgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcworK2Zyb20gaW5pdCBmaWxl IChpZiBhbnkpIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LAorK3NlZSBAcmVme0lu aXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnkgZHVyaW5nIFN0YXJ0dXB9LgorKworK0B0 YWJsZSBAY29kZQorK0BhbmNob3J7c2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fQorK0BraW5k ZXggc2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0CisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBsb2Nh bC1nZGJpbml0IFtvbnxvZmZdCisrRW5hYmxlIG9yIGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZyBv ZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzCisrKEBweHJlZntTZXF1ZW5jZXN9KSBmb3Vu ZCBpbiBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorKworK0BhbmNob3J7c2hv dyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0KKytAa2luZGV4IHNob3cgYXV0by1sb2FkIGxvY2Fs LWdkYmluaXQKKytAaXRlbSBzaG93IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0CisrU2hvdyB3aGV0 aGVyIGF1dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIGZyb20gaW5p dCBmaWxlIGluIHRoZQorK2N1cnJlbnQgZGlyZWN0b3J5IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQu CisrCisrQGFuY2hvcntpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fQorK0BraW5kZXggaW5m byBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAorK0BpdGVtIGluZm8gYXV0by1sb2FkIGxvY2FsLWdk YmluaXQKKytQcmludCB3aGV0aGVyIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgZnJvbSBp bml0IGZpbGUgaW4gdGhlCisrY3VycmVudCBkaXJlY3RvcnkgaGF2ZSBiZWVuIGF1dG8tbG9hZGVk LgorK0BlbmQgdGFibGUKKysKKytAbm9kZSBsaWJ0aHJlYWRfZGIuc28uMSBmaWxlCisrQHN1YnNl Y3Rpb24gQXV0b21hdGljYWxseSBsb2FkaW5nIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeQorK0Bj aW5kZXggYXV0by1sb2FkaW5nIGxpYnRocmVhZF9kYi5zby4xCisrCisrVGhpcyBmZWF0dXJlIGlz IGN1cnJlbnRseSBwcmVzZW50IG9ubHkgb24gQHNje2dudX0vTGludXggbmF0aXZlIGhvc3RzLgor KworK0B2YWx1ZXtHREJOfSByZWFkcyBpbiBzb21lIGNhc2VzIHRocmVhZCBkZWJ1Z2dpbmcgbGli cmFyeSBmcm9tIHBsYWNlcyBzcGVjaWZpYworK3RvIHRoZSBpbmZlcmlvciAoQHB4cmVme3NldCBs aWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9KS4KKysKKytUaGUgc3BlY2lhbCBAc2FtcHtsaWJ0aHJl YWQtZGItc2VhcmNoLXBhdGh9IGVudHJ5IEBzYW1weyRzZGlyfSBpcyBwcm9jZXNzZWQKKyt3aXRo b3V0IGNoZWNraW5nIHRoaXMgQHNhbXB7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9IHN3aXRj aCBhcyBzeXN0ZW0KKytsaWJyYXJpZXMgaGF2ZSB0byBiZSB0cnVzdGVkIGluIGdlbmVyYWwuICBJ biBhbGwgb3RoZXIgY2FzZXMgb2YKKytAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9IGVu dHJpZXMgQHZhbHVle0dEQk59IGNoZWNrcyBmaXJzdCBpZiBAc2FtcHtzZXQKKythdXRvLWxvYWQg bGlidGhyZWFkLWRifSBpcyBlbmFibGVkIGJlZm9yZSB0cnlpbmcgdG8gb3BlbiBzdWNoIHRocmVh ZCBkZWJ1Z2dpbmcKKytsaWJyYXJ5LgorKworK0B0YWJsZSBAY29kZQorK0BhbmNob3J7c2V0IGF1 dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9CisrQGtpbmRleCBzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1k YgorK0BpdGVtIHNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIFtvbnxvZmZdCisrRW5hYmxlIG9y IGRpc2FibGUgdGhlIGF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVi dWdnaW5nIGxpYnJhcnkuCisrCisrQGFuY2hvcntzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9 CisrQGtpbmRleCBzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIKKytAaXRlbSBzaG93IGF1dG8t bG9hZCBsaWJ0aHJlYWQtZGIKKytTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIGluZmVyaW9y IHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeSBpcworK2VuYWJsZWQgb3IgZGlzYWJs ZWQuCisrCisrQGFuY2hvcntpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9CisrQGtpbmRleCBp bmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIKKytAaXRlbSBpbmZvIGF1dG8tbG9hZCBsaWJ0aHJl YWQtZGIKKytQcmludCB0aGUgbGlzdCBvZiBhbGwgbG9hZGVkIGluZmVyaW9yIHNwZWNpZmljIHRo cmVhZCBkZWJ1Z2dpbmcgbGlicmFyaWVzIGFuZAorK2ZvciBlYWNoIHN1Y2ggbGlicmFyeSBwcmlu dCBsaXN0IG9mIGluZmVyaW9yIEB2YXJ7cGlkfXMgdXNpbmcgaXQuCisrQGVuZCB0YWJsZQorKwor K0Bub2RlIG9iamZpbGUtZ2RiLmdkYiBmaWxlCisrQHN1YnNlY3Rpb24gVGhlIEBmaWxle0B2YXJ7 b2JqZmlsZX0tZ2RiLmdkYn0gZmlsZQorK0BjaW5kZXggYXV0by1sb2FkaW5nIEBmaWxle0B2YXJ7 b2JqZmlsZX0tZ2RiLmdkYn0KKysKKytAdmFsdWV7R0RCTn0gdHJpZXMgdG8gbG9hZCBhbiBAZmls ZXtAdmFye29iamZpbGV9LWdkYi5nZGJ9IGZpbGUgY29udGFpbmluZworK2Nhbm5lZCBzZXF1ZW5j ZXMgb2YgY29tbWFuZHMgKEBweHJlZntTZXF1ZW5jZXN9KSwgYXMgbG9uZyBhcyBAc2FtcHtzZXQK KythdXRvLWxvYWQgZ2RiLXNjcmlwdHN9IGlzIHNldCB0byBAc2FtcHtvbn0uCisrCisrRm9yIG1v cmUgYmFja2dyb3VuZCByZWZlciB0byB0aGUgc2ltaWxhciBQeXRob24gc2NyaXB0cyBhdXRvLWxv YWRpbmcKKytkZXNjcmlwdGlvbiAoQHB4cmVme29iamZpbGUtZ2RiLnB5IGZpbGV9KS4KKysKKytA dGFibGUgQGNvZGUKKytAYW5jaG9ye3NldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9CisrQGtpbmRl eCBzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzCisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBnZGItc2Ny aXB0cyBbb258b2ZmXQorK0VuYWJsZSBvciBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcgb2YgY2Fu bmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzLgorKworK0BhbmNob3J7c2hvdyBhdXRv LWxvYWQgZ2RiLXNjcmlwdHN9CisrQGtpbmRleCBzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0cwor K0BpdGVtIHNob3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzCisrU2hvdyB3aGV0aGVyIGF1dG8tbG9h ZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgaXMgZW5hYmxlZCBv cgorK2Rpc2FibGVkLgorKworK0BhbmNob3J7aW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHN9Cisr QGtpbmRleCBpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cworK0BjaW5kZXggcHJpbnQgbGlzdCBv ZiBhdXRvLWxvYWRlZCBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMKKytAaXRl bSBpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyBbQHZhcntyZWdleHB9XQorK1ByaW50IHRoZSBs aXN0IG9mIGFsbCBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgdGhhdCBAdmFs dWV7R0RCTn0KKythdXRvLWxvYWRlZC4KKytAZW5kIHRhYmxlCisrCisrSWYgQHZhcntyZWdleHB9 IGlzIHN1cHBsaWVkIG9ubHkgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIHdp dGgKKyttYXRjaGluZyBuYW1lcyBhcmUgcHJpbnRlZC4KKysKKyBAbm9kZSBNZXNzYWdlcy9XYXJu aW5ncworIEBzZWN0aW9uIE9wdGlvbmFsIFdhcm5pbmdzIGFuZCBNZXNzYWdlcworIAorQEAgLTIx NjE2LDcgKzIxODQ5LDcgQEAgYXV0b21hdGljYWxseSBpbXBvcnRlZCB3aGVuIEB2YWx1ZXtHREJO fQorIEBtZW51CisgKiBQeXRob24gQ29tbWFuZHM6OiAgICAgICAgICAgICBBY2Nlc3NpbmcgUHl0 aG9uIGZyb20gQHZhbHVle0dEQk59LgorICogUHl0aG9uIEFQSTo6ICAgICAgICAgICAgICAgICAg QWNjZXNzaW5nIEB2YWx1ZXtHREJOfSBmcm9tIFB5dGhvbi4KKy0qIEF1dG8tbG9hZGluZzo6ICAg ICAgICAgICAgICAgIEF1dG9tYXRpY2FsbHkgbG9hZGluZyBQeXRob24gY29kZS4KKysqIFB5dGhv biBBdXRvLWxvYWRpbmc6OiAgICAgICAgIEF1dG9tYXRpY2FsbHkgbG9hZGluZyBQeXRob24gY29k ZS4KKyAqIFB5dGhvbiBtb2R1bGVzOjogICAgICAgICAgICAgIFB5dGhvbiBtb2R1bGVzIHByb3Zp ZGVkIGJ5IEB2YWx1ZXtHREJOfS4KKyBAZW5kIG1lbnUKKyAKK0BAIC0yMjc5OSw3ICsyMzAzMiw3 IEBAIFRoaXMgcHJhY3RpY2Ugd2lsbCBlbmFibGUgQHZhbHVle0dEQk59IHQKKyB5b3VyIHByZXR0 eS1wcmludGVycyBhdCB0aGUgc2FtZSB0aW1lLCBiZWNhdXNlIHRoZXkgd2lsbCBoYXZlCisgZGlm ZmVyZW50IG5hbWVzLgorIAorLVlvdSBzaG91bGQgd3JpdGUgYXV0by1sb2FkZWQgY29kZSAoQHB4 cmVme0F1dG8tbG9hZGluZ30pIHN1Y2ggdGhhdCBpdAorK1lvdSBzaG91bGQgd3JpdGUgYXV0by1s b2FkZWQgY29kZSAoQHB4cmVme1B5dGhvbiBBdXRvLWxvYWRpbmd9KSBzdWNoIHRoYXQgaXQKKyBj YW4gYmUgZXZhbHVhdGVkIG11bHRpcGxlIHRpbWVzIHdpdGhvdXQgY2hhbmdpbmcgaXRzIG1lYW5p bmcuICBBbgorIGlkZWFsIGF1dG8tbG9hZCBmaWxlIHdpbGwgY29uc2lzdCBzb2xlbHkgb2YgQGNv ZGV7aW1wb3J0fXMgb2YgeW91cgorIHByaW50ZXIgbW9kdWxlcywgZm9sbG93ZWQgYnkgYSBjYWxs IHRvIGEgcmVnaXN0ZXIgcHJldHR5LXByaW50ZXJzIHdpdGgKK0BAIC0yMzc2MCw3ICsyMzk5Myw3 IEBAIFRoZSBmb2xsb3dpbmcgb2JqZmlsZS1yZWxhdGVkIGZ1bmN0aW9ucworIAorIEBmaW5kZXgg Z2RiLmN1cnJlbnRfb2JqZmlsZQorIEBkZWZ1biBnZGIuY3VycmVudF9vYmpmaWxlICgpCistV2hl biBhdXRvLWxvYWRpbmcgYSBQeXRob24gc2NyaXB0IChAcHhyZWZ7QXV0by1sb2FkaW5nfSksIEB2 YWx1ZXtHREJOfQorK1doZW4gYXV0by1sb2FkaW5nIGEgUHl0aG9uIHNjcmlwdCAoQHB4cmVme1B5 dGhvbiBBdXRvLWxvYWRpbmd9KSwgQHZhbHVle0dEQk59Cisgc2V0cyB0aGUgYGBjdXJyZW50IG9i amZpbGUnJyB0byB0aGUgY29ycmVzcG9uZGluZyBvYmpmaWxlLiAgVGhpcworIGZ1bmN0aW9uIHJl dHVybnMgdGhlIGN1cnJlbnQgb2JqZmlsZS4gIElmIHRoZXJlIGlzIG5vIGN1cnJlbnQgb2JqZmls ZSwKKyB0aGlzIGZ1bmN0aW9uIHJldHVybnMgQGNvZGV7Tm9uZX0uCitAQCAtMjQ2NzEsOSArMjQ5 MDQsOSBAQCByZXNvbHZlIHRoaXMgdG8gdGhlIGxhenkgc3RyaW5nJ3MgY2hhcmFjCisgd3JpdGFi bGUuCisgQGVuZCBkZWZ2YXIKKyAKKy1Abm9kZSBBdXRvLWxvYWRpbmcKKy1Ac3Vic2VjdGlvbiBB dXRvLWxvYWRpbmcKKy1AY2luZGV4IGF1dG8tbG9hZGluZywgUHl0aG9uCisrQG5vZGUgUHl0aG9u IEF1dG8tbG9hZGluZworK0BzdWJzZWN0aW9uIFB5dGhvbiBBdXRvLWxvYWRpbmcKKytAY2luZGV4 IFB5dGhvbiBhdXRvLWxvYWRpbmcKKyAKKyBXaGVuIGEgbmV3IG9iamVjdCBmaWxlIGlzIHJlYWQg KGZvciBleGFtcGxlLCBkdWUgdG8gdGhlIEBjb2Rle2ZpbGV9CisgY29tbWFuZCwgb3IgYmVjYXVz ZSB0aGUgaW5mZXJpb3IgaGFzIGxvYWRlZCBhIHNoYXJlZCBsaWJyYXJ5KSwKK0BAIC0yNDY5Mywz MiArMjQ5MjYsMzUgQEAgQXV0by1sb2FkaW5nIGNhbiBiZSBlbmFibGVkIG9yIGRpc2FibGVkLAor IGFuZCB0aGUgbGlzdCBvZiBhdXRvLWxvYWRlZCBzY3JpcHRzIGNhbiBiZSBwcmludGVkLgorIAor IEB0YWJsZSBAY29kZQorLUBraW5kZXggc2V0IGF1dG8tbG9hZC1zY3JpcHRzCistQGl0ZW0gc2V0 IGF1dG8tbG9hZC1zY3JpcHRzIFt5ZXN8bm9dCisrQGFuY2hvcntzZXQgYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzfQorK0BraW5kZXggc2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cworK0BpdGVt IHNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgW29ufG9mZl0KKyBFbmFibGUgb3IgZGlzYWJs ZSB0aGUgYXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzLgorIAorLUBraW5kZXggc2hvdyBh dXRvLWxvYWQtc2NyaXB0cworLUBpdGVtIHNob3cgYXV0by1sb2FkLXNjcmlwdHMKKytAYW5jaG9y e3Nob3cgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfQorK0BraW5kZXggc2hvdyBhdXRvLWxvYWQg cHl0aG9uLXNjcmlwdHMKKytAaXRlbSBzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cworIFNo b3cgd2hldGhlciBhdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMgaXMgZW5hYmxlZCBvciBk aXNhYmxlZC4KKyAKKy1Aa2luZGV4IGluZm8gYXV0by1sb2FkLXNjcmlwdHMKKy1AY2luZGV4IHBy aW50IGxpc3Qgb2YgYXV0by1sb2FkZWQgc2NyaXB0cworLUBpdGVtIGluZm8gYXV0by1sb2FkLXNj cmlwdHMgW0B2YXJ7cmVnZXhwfV0KKy1QcmludCB0aGUgbGlzdCBvZiBhbGwgc2NyaXB0cyB0aGF0 IEB2YWx1ZXtHREJOfSBhdXRvLWxvYWRlZC4KKytAYW5jaG9ye2luZm8gYXV0by1sb2FkIHB5dGhv bi1zY3JpcHRzfQorK0BraW5kZXggaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMKKytAY2lu ZGV4IHByaW50IGxpc3Qgb2YgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMKKytAaXRlbSBpbmZv IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBbQHZhcntyZWdleHB9XQorK1ByaW50IHRoZSBsaXN0 IG9mIGFsbCBQeXRob24gc2NyaXB0cyB0aGF0IEB2YWx1ZXtHREJOfSBhdXRvLWxvYWRlZC4KKyAK Ky1BbHNvIHByaW50ZWQgaXMgdGhlIGxpc3Qgb2Ygc2NyaXB0cyB0aGF0IHdlcmUgbWVudGlvbmVk IGluCisrQWxzbyBwcmludGVkIGlzIHRoZSBsaXN0IG9mIFB5dGhvbiBzY3JpcHRzIHRoYXQgd2Vy ZSBtZW50aW9uZWQgaW4KKyB0aGUgQGNvZGV7LmRlYnVnX2dkYl9zY3JpcHRzfSBzZWN0aW9uIGFu ZCB3ZXJlIG5vdCBmb3VuZAorIChAcHhyZWZ7ZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbn0p LgorIFRoaXMgaXMgdXNlZnVsIGJlY2F1c2UgdGhlaXIgbmFtZXMgYXJlIG5vdCBwcmludGVkIHdo ZW4gQHZhbHVle0dEQk59CisgdHJpZXMgdG8gbG9hZCB0aGVtIGFuZCBmYWlscy4gIFRoZXJlIG1h eSBiZSBtYW55IG9mIHRoZW0sIGFuZCBwcmludGluZworIGFuIGVycm9yIG1lc3NhZ2UgZm9yIGVh Y2ggb25lIGlzIHByb2JsZW1hdGljLgorIAorLUlmIEB2YXJ7cmVnZXhwfSBpcyBzdXBwbGllZCBv bmx5IHNjcmlwdHMgd2l0aCBtYXRjaGluZyBuYW1lcyBhcmUgcHJpbnRlZC4KKytJZiBAdmFye3Jl Z2V4cH0gaXMgc3VwcGxpZWQgb25seSBQeXRob24gc2NyaXB0cyB3aXRoIG1hdGNoaW5nIG5hbWVz IGFyZSBwcmludGVkLgorIAorIEV4YW1wbGU6CisgCisgQHNtYWxsZXhhbXBsZQorLShnZGIpIGlu Zm8gYXV0by1sb2FkLXNjcmlwdHMKKysoZ2RiKSBpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0 cworIExvYWRlZCAgU2NyaXB0CisgWWVzICAgICBweS1zZWN0aW9uLXNjcmlwdC5weQorICAgICAg ICAgZnVsbCBuYW1lOiAvdG1wL3B5LXNlY3Rpb24tc2NyaXB0LnB5CitJbmRleDogZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0x OCAwMDo0NDoyNi45NTg0Mzc1MDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9w eXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTgwNzk3NzQgKzAyMDAK K0BAIC0zMSwyOSArMzEsNTYgQEAKKyAKKyAjaW5jbHVkZSAicHl0aG9uLWludGVybmFsLmgiCisg CistLyogTk9URTogSXQncyB0cml2aWFsIHRvIGFsc28gc3VwcG9ydCBhdXRvLWxvYWRpbmcgbm9y bWFsIGdkYiBzY3JpcHRzLgorLSAgIFRoZXJlIGhhcyB5ZXQgdG8gYmUgYSBuZWVkIHNvIGl0J3Mg bm90IGltcGxlbWVudGVkLiAgKi8KKy0KKyAvKiBUaGUgc3VmZml4IG9mIHBlci1vYmpmaWxlIHNj cmlwdHMgdG8gYXV0by1sb2FkLgorICAgIEUuZy4gV2hlbiB0aGUgcHJvZ3JhbSBsb2FkcyBsaWJm b28uc28sIGxvb2sgZm9yIGxpYmZvby1nZGIucHkuICAqLworICNkZWZpbmUgR0RCUFlfQVVUT19G SUxFX05BTUUgIi1nZGIucHkiCisgCistLyogVGhlIHNlY3Rpb24gdG8gbG9vayBmb3Igc2NyaXB0 cyAoaW4gZmlsZSBmb3JtYXRzIHRoYXQgc3VwcG9ydCBzZWN0aW9ucykuCisrLyogVGhlIHNlY3Rp b24gdG8gbG9vayBmb3IgUHl0aG9uIGF1dG8tbG9hZGVkIHNjcmlwdHMgKGluIGZpbGUgZm9ybWF0 cyB0aGF0CisrICAgc3VwcG9ydCBzZWN0aW9ucykuCisgICAgRWFjaCBlbnRyeSBpbiB0aGlzIHNl Y3Rpb24gaXMgYSBieXRlIG9mIHZhbHVlIDEsIGFuZCB0aGVuIHRoZSBudWwtdGVybWluYXRlZAor ICAgIG5hbWUgb2YgdGhlIHNjcmlwdC4gIFRoZSBzY3JpcHQgbmFtZSBtYXkgaW5jbHVkZSBhIGRp cmVjdG9yeS4KKyAgICBUaGUgbGVhZGluZyBieXRlIGlzIHRvIGFsbG93IHVwd2FyZCBjb21wYXRp YmxlIGV4dGVuc2lvbnMuICAqLworICNkZWZpbmUgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUgIi5k ZWJ1Z19nZGJfc2NyaXB0cyIKKyAKKy0vKiBVc2VyLXNldHRhYmxlIG9wdGlvbiB0byBlbmFibGUv ZGlzYWJsZSBhdXRvLWxvYWRpbmc6CistICAgc2V0IGF1dG8tbG9hZC1zY3JpcHRzIG9ufG9mZgor LSAgIFRoaXMgaXMgdHJ1ZSBpZiB3ZSBzaG91bGQgYXV0by1sb2FkIGFzc29jaWF0ZWQgc2NyaXB0 cyB3aGVuIGFuIG9iamZpbGUKKy0gICBpcyBvcGVuZWQsIGZhbHNlIG90aGVyd2lzZS4KKy0gICBB dCB0aGUgbW9tZW50LCB0aGlzIG9ubHkgYWZmZWN0cyBweXRob24gc2NyaXB0cywgYnV0IHRoZXJl J3Mgbm8gcmVhc29uCistICAgb25lIGNvdWxkbid0IGFsc28gaGF2ZSBvdGhlciBraW5kcyBvZiBh dXRvLWxvYWRlZCBzY3JpcHRzLCBhbmQgdGhlcmUncworLSAgIG5vIHJlYXNvbiB0byBoYXZlIHRo ZW0gZWFjaCBjb250cm9sbGVkIGJ5IGEgc2VwYXJhdGUgZmxhZy4KKy0gICBTbyB3ZSBlbGlkZSAi cHl0aG9uIiBmcm9tIHRoZSBuYW1lIGhlcmUgYW5kIGluIHRoZSBvcHRpb24uCistICAgVGhlIGZh Y3QgdGhhdCBpdCBsaXZlcyBoZXJlIGlzIGp1c3QgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAg Ki8KKy1zdGF0aWMgaW50IGF1dG9fbG9hZF9zY3JpcHRzID0gMTsKKysvKiBVc2VyLXNldHRhYmxl IG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHM6 CisrICAgc2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBvbnxvZmYKKysgICBUaGlzIGlzIHRy dWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBhc3NvY2lhdGVkIFB5dGhvbiBzY3JpcHRzIHdoZW4g YW4KKysgICBvYmpmaWxlIGlzIG9wZW5lZCwgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KKytzdGF0aWMg aW50IGF1dG9fbG9hZF9weXRob25fc2NyaXB0cyA9IDE7CisrCisrc3RhdGljIHZvaWQgZ2RicHlf bG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisr CQkJCQkJRklMRSAqZmlsZSwKKysJCQkJCQljb25zdCBjaGFyICpmaWxlbmFtZSk7CisrCisrLyog InNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMgY29uZmlndXJh dGlvbiB2YXJpYWJsZS4gICovCisrCisrc3RhdGljIHZvaWQKKytzaG93X2F1dG9fbG9hZF9weXRo b25fc2NyaXB0cyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKKysJCQkgICAg ICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorK3sKKysg IGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0 cyBpcyAlcy5cbiIpLCB2YWx1ZSk7CisrfQorKworKy8qIERlZmluaXRpb24gb2Ygc2NyaXB0IGxh bmd1YWdlIGZvciBQeXRob24gc2NyaXB0cy4gICovCisrCisrc3RhdGljIGNvbnN0IHN0cnVjdCBz Y3JpcHRfbGFuZ3VhZ2Ugc2NyaXB0X2xhbmd1YWdlX3B5dGhvbgorKyAgPSB7IEdEQlBZX0FVVE9f RklMRV9OQU1FLCBnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIH07CisrCisrLyog V3JhcHBlciBvZiBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSBmb3Igc2NyaXB0X2xh bmd1YWdlX3B5dGhvbi4gICovCisrCisrc3RhdGljIHZvaWQKKytnZGJweV9sb2FkX2F1dG9fc2Ny aXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKysJ CQkJICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorK3sKKysgIHN0cnVjdCBhdXRvX2xvYWRfcHNw YWNlX2luZm8gKnBzcGFjZV9pbmZvOworKworKyAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBo YXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiCisrICAgICBj YW4gcHJpbnQgaXQuICAqLworKyAgcHNwYWNlX2luZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9k YXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOworKyAgbWF5YmVfYWRkX3Nj cmlwdCAocHNwYWNlX2luZm8sIGZpbGVuYW1lLCBmaWxlbmFtZSwgJnNjcmlwdF9sYW5ndWFnZV9w eXRob24pOworKworKyAgc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUs IGZpbGUsIGZpbGVuYW1lKTsKKyt9CisgCisgLyogTG9hZCBzY3JpcHRzIHNwZWNpZmllZCBpbiBP QkpGSUxFLgorICAgIFNUQVJULEVORCBkZWxpbWl0IGEgYnVmZmVyIGNvbnRhaW5pbmcgYSBsaXN0 IG9mIG51bC10ZXJtaW5hdGVkCitAQCAtMTIxLDYgKzE0OCwxNyBAQCBzb3VyY2Vfc2VjdGlvbl9z Y3JpcHRzIChzdHJ1Y3Qgb2JqZmlsZSAqCisgCSAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFt KTsKKyAJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOworIAl9CisrICAgICAgZWxz ZQorKwl7CisrCSAgZnVsbF9wYXRoID0gTlVMTDsKKysKKysJICAvKiBXZSBkb24ndCB0aHJvdyBh biBlcnJvciwgdGhlIHByb2dyYW0gaXMgc3RpbGwgZGVidWdnYWJsZS4gICovCisrCSAgaWYgKHNj cmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAocHNwYWNlX2luZm8pKQorKwkgICAgd2Fybmlu ZyAoXygiTWlzc2luZyBhdXRvLWxvYWQgc2NyaXB0cyByZWZlcmVuY2VkIGluIHNlY3Rpb24gJXNc blwKKytvZiBmaWxlICVzXG5cCisrVXNlIGBpbmZvIGF1dG8tbG9hZCBweXRob24gW1JFR0VYUF0n IHRvIGxpc3QgdGhlbS4iKSwKKysJCSAgICAgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUsIG9iamZp bGUtPm5hbWUpOworKwl9CisgCisgICAgICAgLyogSWYgb25lIHNjcmlwdCBpc24ndCBmb3VuZCBp dCdzIG5vdCB1bmNvbW1vbiBmb3IgbW9yZSB0byBub3QgYmUKKyAJIGZvdW5kIGVpdGhlci4gIFdl IGRvbid0IHdhbnQgdG8gcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBmb3IgZWFjaAorQEAgLTEyOSwy NCArMTY3LDEyIEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxlICoKKyAK KyAJIElXQk4gaWYgY29tcGxhaW50cy5jIHdlcmUgbW9yZSBnZW5lcmFsLXB1cnBvc2UuICAqLwor IAorLSAgICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywg ZmlsZSwKKy0JCQkJCW9wZW5lZCA/IGZ1bGxfcGF0aCA6IE5VTEwpOworKyAgICAgIGluX2hhc2hf dGFibGUgPSBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgZmlsZSwgZnVsbF9wYXRoLAor KwkJCQkJJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOworIAorLSAgICAgIGlmICghIG9wZW5lZCkK Ky0JeworLQkgIC8qIFdlIGRvbid0IHRocm93IGFuIGVycm9yLCB0aGUgcHJvZ3JhbSBpcyBzdGls bCBkZWJ1Z2dhYmxlLiAgKi8KKy0JICBpZiAoc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50 IChwc3BhY2VfaW5mbykpCistCSAgICB3YXJuaW5nIChfKCJNaXNzaW5nIGF1dG8tbG9hZCBzY3Jp cHRzIHJlZmVyZW5jZWQgaW4gc2VjdGlvbiAlc1xuXAorLW9mIGZpbGUgJXNcblwKKy1Vc2UgYGlu Zm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0nIHRvIGxpc3QgdGhlbS4iKSwKKy0JCSAgICAg R0RCUFlfQVVUT19TRUNUSU9OX05BTUUsIG9iamZpbGUtPm5hbWUpOworLQl9CistICAgICAgZWxz ZQorLQl7CistCSAgLyogSWYgdGhpcyBmaWxlIGlzIG5vdCBjdXJyZW50bHkgbG9hZGVkLCBsb2Fk IGl0LiAgKi8KKy0JICBpZiAoISBpbl9oYXNoX3RhYmxlKQorLQkgICAgc291cmNlX3B5dGhvbl9z Y3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIHN0cmVhbSwgZnVsbF9wYXRoKTsKKy0JfQorKyAg ICAgIC8qIElmIHRoaXMgZmlsZSBpcyBub3QgY3VycmVudGx5IGxvYWRlZCwgbG9hZCBpdC4gICov CisrICAgICAgaWYgKG9wZW5lZCAmJiAhaW5faGFzaF90YWJsZSkKKysJc291cmNlX3B5dGhvbl9z Y3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIHN0cmVhbSwgZnVsbF9wYXRoKTsKKyAKKyAgICAg ICBkb19jbGVhbnVwcyAoYmFja190byk7CisgICAgIH0KK0BAIC0xODEsMzYgKzIwNyw3NSBAQCBh dXRvX2xvYWRfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsCisgICBkb19jbGVhbnVwcyAo Y2xlYW51cHMpOworIH0KKyAKKy0vKiBMb2FkIGFueSBhdXRvLWxvYWRlZCBzY3JpcHRzIGZvciBP QkpGSUxFLiAgKi8KKysvKiBMb2FkIGFueSBQeXRob24gYXV0by1sb2FkZWQgc2NyaXB0cyBmb3Ig T0JKRklMRS4gICovCisgCisgdm9pZAorLWxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKytnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2Jq ZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgeworLSAgaWYgKGF1dG9fbG9hZF9zY3Jp cHRzICYmIGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQpCisrICBpZiAoYXV0b19sb2FkX3B5dGhvbl9z Y3JpcHRzKQorICAgICB7CistICAgICAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChvYmpmaWxl LCBHREJQWV9BVVRPX0ZJTEVfTkFNRSk7CisrICAgICAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0 IChvYmpmaWxlLCAmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7CisgICAgICAgYXV0b19sb2FkX3Nl Y3Rpb25fc2NyaXB0cyAob2JqZmlsZSwgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUpOworICAgICB9 CisgfQorKworKy8qIFdyYXBwZXIgZm9yICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIu ICAqLworKworK3N0YXRpYyB2b2lkCisraW5mb19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMgKGNo YXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSkKKyt7CisrICBhdXRvX2xvYWRfaW5mb19zY3JpcHRz IChwYXR0ZXJuLCBmcm9tX3R0eSwgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOworK30KKyAMCisg dm9pZAorIGdkYnB5X2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQorIHsKKysgIHN0cnVjdCBj bWRfbGlzdF9lbGVtZW50ICpjbWQ7CisrICBjaGFyICpjbWRfbmFtZTsKKysKKysgIGFkZF9zZXRz aG93X2Jvb2xlYW5fY21kICgicHl0aG9uLXNjcmlwdHMiLCBjbGFzc19zdXBwb3J0LAorKwkJCSAg ICZhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsIF8oIlwKKytTZXQgdGhlIGRlYnVnZ2VyJ3MgYmVo YXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cy4iKSwgXygiXAorK1No b3cgdGhlIGRlYnVnZ2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBQeXRob24g c2NyaXB0cy4iKSwgXygiXAorK0lmIGVuYWJsZWQsIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRz IGFyZSBsb2FkZWQgd2hlbiB0aGUgZGVidWdnZXIgcmVhZHNcblwKKythbiBleGVjdXRhYmxlIG9y IHNoYXJlZCBsaWJyYXJ5LlxuXAorK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRp b25zIGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAorKwkJCSAgIE5VTEwsIHNob3dfYXV0b19s b2FkX3B5dGhvbl9zY3JpcHRzLAorKwkJCSAgIGF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCks CisrCQkJICAgYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKCkpOworKworICAgYWRkX3NldHNo b3dfYm9vbGVhbl9jbWQgKCJhdXRvLWxvYWQtc2NyaXB0cyIsIGNsYXNzX3N1cHBvcnQsCistCQkJ ICAgJmF1dG9fbG9hZF9zY3JpcHRzLCBfKCJcCistU2V0IHRoZSBkZWJ1Z2dlcidzIGJlaGF2aW91 ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgc2NyaXB0cy4iKSwgXygiXAorLVNob3cgdGhlIGRlYnVn Z2VyJ3MgYmVoYXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCist SWYgZW5hYmxlZCwgYXV0by1sb2FkZWQgc2NyaXB0cyBhcmUgbG9hZGVkIHdoZW4gdGhlIGRlYnVn Z2VyIHJlYWRzXG5cCistYW4gZXhlY3V0YWJsZSBvciBzaGFyZWQgbGlicmFyeS4iKSwKKy0JCQkg ICBOVUxMLCBOVUxMLAorLQkJCSAgICZzZXRsaXN0LAorLQkJCSAgICZzaG93bGlzdCk7CisrCQkJ ICAgJmF1dG9fbG9hZF9weXRob25fc2NyaXB0cywgXygiXAorK1NldCB0aGUgZGVidWdnZXIncyBi ZWhhdmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzLCAiCisrCQkJCQkJ CQkgImRlcHJlY2F0ZWQuIiksCisrCQkJICAgXygiXAorK1Nob3cgdGhlIGRlYnVnZ2VyJ3MgYmVo YXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cywgIgorKwkJCQkJCQkJ ICJkZXByZWNhdGVkLiIpLAorKwkJCSAgIE5VTEwsIE5VTEwsIHNob3dfYXV0b19sb2FkX3B5dGhv bl9zY3JpcHRzLAorKwkJCSAgICZzZXRsaXN0LCAmc2hvd2xpc3QpOworKyAgY21kX25hbWUgPSAi YXV0by1sb2FkLXNjcmlwdHMiOworKyAgY21kID0gbG9va3VwX2NtZCAoJmNtZF9uYW1lLCBzZXRs aXN0LCAiIiwgLTEsIDEpOworKyAgZGVwcmVjYXRlX2NtZCAoY21kLCAic2V0IGF1dG8tbG9hZCBw eXRob24tc2NyaXB0cyIpOworKworKyAgLyogSXQgaXMgbmVlZGVkIGJlY2F1c2UgbG9va3VwX2Nt ZCB1cGRhdGVzIHRoZSBDTURfTkFNRSBwb2ludGVyLiAgKi8KKysgIGNtZF9uYW1lID0gImF1dG8t bG9hZC1zY3JpcHRzIjsKKysgIGNtZCA9IGxvb2t1cF9jbWQgKCZjbWRfbmFtZSwgc2hvd2xpc3Qs ICIiLCAtMSwgMSk7CisrICBkZXByZWNhdGVfY21kIChjbWQsICJzaG93IGF1dG8tbG9hZCBweXRo b24tc2NyaXB0cyIpOworKworKyAgYWRkX2NtZCAoInB5dGhvbi1zY3JpcHRzIiwgY2xhc3NfaW5m bywgaW5mb19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsCisrCSAgIF8oIlByaW50IHRoZSBsaXN0 IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIFB5dGhvbiBzY3JpcHRzLlxuXAorK1VzYWdlOiBpbmZv IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBbUkVHRVhQXSIpLAorKwkgICBhdXRvX2xvYWRfaW5m b19jbWRsaXN0X2dldCAoKSk7CisrCisrICBjbWQgPSBhZGRfaW5mbyAoImF1dG8tbG9hZC1zY3Jp cHRzIiwgaW5mb19hdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsIF8oIlwKKytQcmludCB0aGUgbGlz dCBvZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBQeXRob24gc2NyaXB0cywgZGVwcmVjYXRlZC4iKSk7 CisrICBkZXByZWNhdGVfY21kIChjbWQsICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIp OworIH0KKyAKKyAjZWxzZSAvKiAhIEhBVkVfUFlUSE9OICovCisgCisgdm9pZAorLWxvYWRfYXV0 b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKytnZGJweV9s b2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisg eworIH0KKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRo b24uaAkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1ODQzNzUwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk3OTQzNzQ0 NiArMDIwMAorQEAgLTQxLDcgKzQxLDcgQEAgaW50IGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAo c3RydWN0IHR5cAorIAorIHZvaWQgcHJlc2VydmVfcHl0aG9uX3ZhbHVlcyAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGh0YWJfdCBjb3BpZWRfdHlwZXMpOworIAorLXZvaWQgbG9hZF9hdXRvX3Nj cmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKKyt2b2lkIGdkYnB5 X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7 CisgCisgaW50IGdkYnB5X3Nob3VsZF9zdG9wIChzdHJ1Y3QgYnJlYWtwb2ludF9vYmplY3QgKmJw X29iaik7CisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2hlbHAuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAJMjAxMi0wMS0wNCAwOToxNzo0NS4wMDAwMDAw MDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv aGVscC5leHAJMjAxMi0wNC0xOCAwMDo0NDoyNi45ODA0Mzc0NDQgKzAyMDAKK0BAIC0yNCw3ICsy NCw3IEBACisgZ2RiX3N0YXJ0CisgCisgIyBmb3JjZSB0aGUgaGVpZ2h0IG9mIHRoZSBkZWJ1Z2dl ciB0byBiZSBwcmV0dHkgbGFyZ2Ugc28gbm8gcGFnZXJzIGdldCB1c2VkCistZ2RiX3Rlc3Rfbm9f b3V0cHV0ICJzZXQgaGVpZ2h0IDQwMCIgInRlc3Qgc2V0IGhlaWdodCIKKytnZGJfdGVzdF9ub19v dXRwdXQgInNldCBoZWlnaHQgNTAwIiAidGVzdCBzZXQgaGVpZ2h0IgorIAorICMgdXNlIGEgbGFy Z2VyIGV4cGVjdCBpbnB1dCBidWZmZXIgZm9yIGxvbmcgaGVscCBvdXRwdXRzLgorICMgdGVzdCBo ZWxwIGFkZC1zeW1ib2wtZmlsZQorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LW9iamZpbGUtc2NyaXB0LmV4cAorPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktb2JqZmls ZS1zY3JpcHQuZXhwCTIwMTItMDEtMTYgMTc6MjE6NTIuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3Jp cHQuZXhwCTIwMTItMDQtMTggMDA6NDY6NDcuNTU4MDc5Nzc0ICswMjAwCitAQCAtNDAsNyArNDAs NyBAQCBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKyBnZGJfbG9hZCAke2Jp bmZpbGV9CisgCisgIyBWZXJpZnkgZ2RiIGxvYWRlZCB0aGUgc2NyaXB0LgorLWdkYl90ZXN0ICJp bmZvIGF1dG8tbG9hZC1zY3JpcHRzIiAiWWVzLiovJHt0ZXN0ZmlsZX0tZ2RiLnB5LioiCisrZ2Ri X3Rlc3QgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiAiWWVzLiovJHt0ZXN0ZmlsZX0t Z2RiLnB5LioiCisgCisgaWYgIVtydW50b19tYWluXSB7CisgICAgIHBlcnJvciAiY291bGRuJ3Qg cnVuIHRvIG1haW4iCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHktc2VjdGlvbi1zY3JpcHQuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41 MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlw dC5leHAJMjAxMi0wMS0xNiAxNzoyMTo1Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5leHAJ MjAxMi0wNC0xOCAwMDo0Njo0Ny41NTgwNzk3NzQgKzAyMDAKK0BAIC01MiwxMSArNTIsMTEgQEAg Z2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisgZ2RiX2xvYWQgJHtiaW5maWxl fQorIAorICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KKy1nZGJfdGVzdCAiaW5mbyBh dXRvLWxvYWQtc2NyaXB0cyIgIlllcy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1bGwgbmFtZTogLiovJHt0 ZXN0ZmlsZX0ucHkuKiIKKytnZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMi ICJZZXMuKiR7dGVzdGZpbGV9LnB5LipmdWxsIG5hbWU6IC4qLyR7dGVzdGZpbGV9LnB5LioiCisg IyBBZ2Fpbiwgd2l0aCBhIHJlZ2V4cCB0aGlzIHRpbWUuCistZ2RiX3Rlc3QgImluZm8gYXV0by1s b2FkLXNjcmlwdHMgJHt0ZXN0ZmlsZX0iICJZZXMuKiR7dGVzdGZpbGV9LnB5LipmdWxsIG5hbWU6 IC4qLyR7dGVzdGZpbGV9LnB5LioiCisrZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkIHB5dGhvbi1z Y3JpcHRzICR7dGVzdGZpbGV9IiAiWWVzLioke3Rlc3RmaWxlfS5weS4qZnVsbCBuYW1lOiAuKi8k e3Rlc3RmaWxlfS5weS4qIgorICMgQWdhaW4sIHdpdGggYSByZWdleHAgdGhhdCBtYXRjaGVzIG5v IHNjcmlwdHMuCistZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkLXNjcmlwdHMgbm8tc2NyaXB0LW1h dGNoZXMtdGhpcyIgXAorK2dkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBu by1zY3JpcHQtbWF0Y2hlcy10aGlzIiBcCisgICAiTm8gYXV0by1sb2FkIHNjcmlwdHMgbWF0Y2hp bmcgbm8tc2NyaXB0LW1hdGNoZXMtdGhpcy4iCisgCisgaWYgIVtydW50b19tYWluXSB7CgpkaWZm IC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTExb2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xMW9mMTgu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhYzY4YjAuLjAwMDAwMDAKLS0t IGEvZ2RiLWF1dG9sb2FkLTExb2YxOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc0NCArMCww IEBACi1bcGF0Y2gjNCA1LzhdIHNldCBhdXRvLWxvYWQgc2FmZS1wYXRoCi1odHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cwMDA5Mi5odG1sCi1odHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTE0Lmh0bWwKLQotIyMjIHNyYy9n ZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NTE6NDEJMS4xNDExMwotIyMjIHNyYy9nZGIvQ2hh bmdlTG9nCTIwMTIvMDQvMTcgMTU6NTQ6MjgJMS4xNDExNAotIyMgLTEsNSArMSwzOSBAQAotIDIw MTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAK LSsJTmV3IG9wdGlvbiAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiLgotKwkqIE5FV1M6IE5ldyBj b21tYW5kcyAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiCi0rCWFuZCAic2hvdyBhdXRvLWxvYWQg c2FmZS1wYXRoIi4KLSsJKiBhdXRvLWxvYWQuYzogSW5jbHVkZSBnZGJfdmVjcy5oLCByZWFkbGlu ZS90aWxkZS5oIGFuZCBjb21wbGV0ZXIuaC4KLSsJKGF1dG9fbG9hZF9zYWZlX3BhdGgsIGF1dG9f bG9hZF9zYWZlX3BhdGhfdmVjKQotKwkoYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlLCBz ZXRfYXV0b19sb2FkX3NhZmVfcGF0aCkKLSsJKHNob3dfYXV0b19sb2FkX3NhZmVfcGF0aCwgYWRk X2F1dG9fbG9hZF9zYWZlX3BhdGgsIGZpbGVuYW1lX2lzX2luX2RpcikKLSsJKGZpbGVuYW1lX2lz X2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlKTogTmV3 LgotKwkoc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUpOiBOZXcgdmFyaWFibGUgaXNfc2Fm ZS4gIENhbGwKLSsJZmlsZV9pc19hdXRvX2xvYWRfc2FmZS4gIFJldHVybiBpZiBpdCBpcyBub3Qu Ci0rCShzdHJ1Y3QgbG9hZGVkX3NjcmlwdCk6IE5ldyBmaWVsZCBsb2FkZWQuCi0rCShtYXliZV9h ZGRfc2NyaXB0KTogQWRkIHBhcmFtZXRlciBsb2FkZWQuICBJbml0aWFsaXplIFNMT1Qgd2l0aCBp dC4KLSsJKHByaW50X3NjcmlwdCk6IFVzZSBMT0FERUQgaW5kaWNhdG9yIGluc3RlYWQgb2YgRlVM TF9QQVRILiAgQ2hhbmdlCi0rCW91dHB1dCAiTWlzc2luZyIgdG8gIk5vIi4KLSsJKF9pbml0aWFs aXplX2F1dG9fbG9hZCk6IE5ldyB2YXJpYWJsZSBjbWQuICBJbml0aWFsaXplCi0rCWF1dG9fbG9h ZF9zYWZlX3BhdGguICBSZWdpc3RlciAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiLAotKwkic2hv dyBhdXRvLWxvYWQgc2FmZS1wYXRoIiBhbmQgImFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIi4KLSsJ KiBhdXRvLWxvYWQuaCAobWF5YmVfYWRkX3NjcmlwdCk6IEFkZCBwYXJhbWV0ZXIgbG9hZGVkLgot KwkoZmlsZV9pc19hdXRvX2xvYWRfc2FmZSk6IE5ldyBkZWNsYXJhdGlvbi4KLSsJKiBjb25maWcu aW46IFJlZ2VuZXJhdGUuCi0rCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgotKwkqIGNvbmZpZ3Vy ZS5hYzogTmV3IHBhcmFtZXRlcnMgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgKLSsJYW5kIC0t d2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoLgotKwkqIGxpbnV4LXRocmVhZC1kYi5jICh0cnlf dGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyXzEpCi0rCSh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9k aXIpOiBDaGVjayBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIGZpcnN0LgotKwkqIG1haW4uYyAoY2Fw dHVyZWRfbWFpbik6IENoZWNrIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgZm9yCi0rCUxPQ0FMX0dE QklOSVQuCi0rCSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jIChnZGJweV9sb2FkX2F1dG9fc2NyaXB0 X2Zvcl9vYmpmaWxlKTogTmV3Ci0rCXZhcmlhYmxlIGlzX3NhZmUuICBDYWxsIGZpbGVfaXNfYXV0 b19sb2FkX3NhZmUuICBSZXR1cm4gaWYgaXQgaXMgbm90LgotKwkoc291cmNlX3NlY3Rpb25fc2Ny aXB0cyk6IENhbGwgZmlsZV9pc19hdXRvX2xvYWRfc2FmZS4gIFJldHVybiBpZiBpdCBpcwotKwlu b3QuCi0rCi0rMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotKwotIAlhdXRvLWxvYWQ6IEltcGxlbWVudGF0aW9uLgotIAkqIE5FV1M6IE5ldyBk ZXNjcmlwdGlvbnMgZm9yICJpbmZvIGF1dG8tbG9hZCIsCi0gCSJpbmZvIGF1dG8tbG9hZCBnZGIt c2NyaXB0cyIsICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIsCi1JbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvTkVXUwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvTkVXUwkyMDEyLTA0LTE4IDAwOjQ5OjAyLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0OTozMy4yODI3MDYz MTkgKzAyMDAKLUBAIC02Nyw2ICs2NywxMSBAQCBzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiBv bnxvZmYKLSBzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIKLSAgIENvbnRyb2wgYXV0by1sb2Fk aW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgc2hhcmVkIGxpYnJhcnku Ci0gCi0rc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggPGRpcjE+Wzo8ZGlyMj4uLi5dCi0rc2hvdyBh dXRvLWxvYWQgc2FmZS1wYXRoCi0rICBTZXQgYSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hp Y2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMuCi0rICBUaGUgZGVsaW1pdGVyICgnOicg YWJvdmUpIG1heSBkaWZmZXIgYWNjb3JkaW5nIHRvIHRoZSBob3N0IHBsYXRmb3JtLgotKwotICog TmV3IGNvbW1hbmQgbGluZSBvcHRpb25zCi0gCi0gLS1pbml0LWNvbW1hbmQ9RklMRSwgLWl4ICAg ICAgICAgIExpa2UgLS1jb21tYW5kLCAteCBidXQgZXhlY3V0ZSBpdAotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4y MDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQt MTggMDA6NDk6MjEuNjA3NzM2MDIwICswMjAwCi1AQCAtMzIsNiArMzIsOSBAQAotICNpbmNsdWRl ICJnZGJjbWQuaCIKLSAjaW5jbHVkZSAiY2xpL2NsaS1kZWNvZGUuaCIKLSAjaW5jbHVkZSAiY2xp L2NsaS1zZXRzaG93LmgiCi0rI2luY2x1ZGUgImdkYl92ZWNzLmgiCi0rI2luY2x1ZGUgInJlYWRs aW5lL3RpbGRlLmgiCi0rI2luY2x1ZGUgImNvbXBsZXRlci5oIgotIAotIC8qIFRoZSBzdWZmaXgg b2YgcGVyLW9iamZpbGUgc2NyaXB0cyB0byBhdXRvLWxvYWQgYXMgbm9uLVB5dGhvbiBjb21tYW5k IGZpbGVzLgotICAgIEUuZy4gV2hlbiB0aGUgcHJvZ3JhbSBsb2FkcyBsaWJmb28uc28sIGxvb2sg Zm9yIGxpYmZvby1nZGIuZ2RiLiAgKi8KLUBAIC05MCw2ICs5MywxODEgQEAgc2hvd19hdXRvX2xv YWRfbG9jYWxfZ2RiaW5pdCAoc3RydWN0IHVpXwotIAkJICAgIHZhbHVlKTsKLSB9Ci0gCi0rLyog RGlyZWN0b3J5IGxpc3Qgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAgSXQgaXMgbm90 IGNoZWNrZWQgZm9yCi0rICAgYWJzb2x1dGUgcGF0aHMgYnV0IHRoZXkgYXJlIHN0cm9uZ2x5IHJl Y29tbWVuZGVkLiAgSXQgaXMgaW5pdGlhbGl6ZWQgYnkKLSsgICBfaW5pdGlhbGl6ZV9hdXRvX2xv YWQuICAqLwotK3N0YXRpYyBjaGFyICphdXRvX2xvYWRfc2FmZV9wYXRoOwotKwotKy8qIFZlY3Rv ciBvZiBkaXJlY3RvcnkgZWxlbWVudHMgb2YgQVVUT19MT0FEX1NBRkVfUEFUSCB3aXRoIGVhY2gg b25lIG5vcm1hbGl6ZWQKLSsgICBieSB0aWxkZV9leHBhbmQgYW5kIHBvc3NpYmx5IGVhY2ggZW50 cmllcyBoYXMgYWRkZWQgaXRzIGdkYl9yZWFscGF0aAotKyAgIGNvdW50ZXJwYXJ0LiAgKi8KLStz dGF0aWMgVkVDIChjaGFyX3B0cikgKmF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjOwotKwotKy8qIFVw ZGF0ZSBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyBmcm9tIGN1cnJlbnQgQVVUT19MT0FEX1NBRkVf UEFUSC4gICovCi0rCi0rc3RhdGljIHZvaWQKLSthdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRh dGUgKHZvaWQpCi0rewotKyAgVkVDIChjaGFyX3B0cikgKmRpcl92ZWMgPSBOVUxMOwotKyAgdW5z aWduZWQgbGVuOwotKyAgaW50IGl4OwotKwotKyAgZnJlZV9jaGFyX3B0cl92ZWMgKGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjKTsKLSsKLSsgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjID0gZGlybmFt ZXNfdG9fY2hhcl9wdHJfdmVjIChhdXRvX2xvYWRfc2FmZV9wYXRoKTsKLSsgIGxlbiA9IFZFQ19s ZW5ndGggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyk7Ci0rCi0rICAvKiBBcHBs eSB0aWxkZV9leHBhbmQgYW5kIGdkYl9yZWFscGF0aCB0byBlYWNoIEFVVE9fTE9BRF9TQUZFX1BB VEhfVkVDCi0rICAgICBlbGVtZW50LiAgKi8KLSsgIGZvciAoaXggPSAwOyBpeCA8IGxlbjsgaXgr KykKLSsgICAgewotKyAgICAgIGNoYXIgKmRpciA9IFZFQ19pbmRleCAoY2hhcl9wdHIsIGF1dG9f bG9hZF9zYWZlX3BhdGhfdmVjLCBpeCk7Ci0rICAgICAgY2hhciAqZXhwYW5kZWQgPSB0aWxkZV9l eHBhbmQgKGRpcik7Ci0rICAgICAgY2hhciAqcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChleHBh bmRlZCk7Ci0rCi0rICAgICAgLyogRW5zdXJlIHRoZSBjdXJyZW50IGVudHJ5IGlzIGF0IGxlYXN0 IHRpbGRlX2V4cGFuZC1lZC4gICovCi0rICAgICAgeGZyZWUgKGRpcik7Ci0rICAgICAgVkVDX3Jl cGxhY2UgKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGV4cGFuZGVkKTsK LSsKLSsgICAgICAvKiBJZiBnZGJfcmVhbHBhdGggcmV0dXJucyBhIGRpZmZlcmVudCBjb250ZW50 LCBhcHBlbmQgaXQuICAqLwotKyAgICAgIGlmIChzdHJjbXAgKHJlYWxfcGF0aCwgZXhwYW5kZWQp ID09IDApCi0rCXhmcmVlIChyZWFsX3BhdGgpOwotKyAgICAgIGVsc2UKLSsJVkVDX3NhZmVfcHVz aCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCByZWFsX3BhdGgpOwotKyAgICB9 Ci0rfQotKwotKy8qICJzZXQiIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9wYXRoIGNv bmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2F1dG9fbG9h ZF9zYWZlX3BhdGggKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwgc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQgKmMpCi0rewotKyAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOwotK30K LSsKLSsvKiAic2hvdyIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9zYWZlX3BhdGggY29uZmln dXJhdGlvbiB2YXJpYWJsZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzaG93X2F1dG9fbG9hZF9z YWZlX3BhdGggKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJICBzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgaWYgKCp2 YWx1ZSA9PSAwKQotKyAgICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWQgZmls ZXMgYXJlIHNhZmUgdG8gbG9hZCBmcm9tIGFueSAiCi0rCQkJICAgICAgImRpcmVjdG9yeS5cbiIp KTsKLSsgIGVsc2UKLSsgICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiTGlzdCBvZiBkaXJl Y3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gIgotKwkJCSAgICAgICJhdXRvLWxvYWQg ZmlsZXMgaXMgJXMuXG4iKSwKLSsJCSAgICAgIHZhbHVlKTsKLSt9Ci0rCi0rLyogImFkZC1hdXRv LWxvYWQtc2FmZS1wYXRoIiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3NhZmVfcGF0aCBjb25m aWd1cmF0aW9uCi0rICAgdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rYWRkX2F1dG9f bG9hZF9zYWZlX3BhdGggKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBjaGFyICpz OwotKwotKyAgaWYgKGFyZ3MgPT0gTlVMTCB8fCAqYXJncyA9PSAwKQotKyAgICBlcnJvciAoXygi XAotK0FkZGluZyBlbXB0eSBkaXJlY3RvcnkgZWxlbWVudCBkaXNhYmxlcyB0aGUgYXV0by1sb2Fk IHNhZmUtcGF0aCBzZWN1cml0eS4gIFwKLStVc2UgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoJyBp bnN0ZWFkIGlmIHlvdSBtZWFuIHRoYXQuIikpOwotKwotKyAgcyA9IHhzdHJwcmludGYgKCIlcyVj JXMiLCBhdXRvX2xvYWRfc2FmZV9wYXRoLCBESVJOQU1FX1NFUEFSQVRPUiwgYXJncyk7Ci0rICB4 ZnJlZSAoYXV0b19sb2FkX3NhZmVfcGF0aCk7Ci0rICBhdXRvX2xvYWRfc2FmZV9wYXRoID0gczsK LSsKLSsgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKLSt9Ci0rCi0rLyogUmV0 dXJuIDEgaWYgRklMRU5BTUUgaXMgZXF1YWwgdG8gRElSIG9yIGlmIEZJTEVOQU1FIGJlbG9uZ3Mg dG8gdGhlCi0rICAgc3ViZGlyZWN0b3J5IERJUi4gIFJldHVybiAwIG90aGVyd2lzZS4gIGdkYl9y ZWFscGF0aCBub3JtYWxpemF0aW9uIGlzIG5ldmVyCi0rICAgZG9uZSBoZXJlLiAgKi8KLSsKLStz dGF0aWMgQVRUUklCVVRFX1BVUkUgaW50Ci0rZmlsZW5hbWVfaXNfaW5fZGlyIChjb25zdCBjaGFy ICpmaWxlbmFtZSwgY29uc3QgY2hhciAqZGlyKQotK3sKLSsgIHNpemVfdCBkaXJfbGVuID0gc3Ry bGVuIChkaXIpOwotKwotKyAgd2hpbGUgKGRpcl9sZW4gJiYgSVNfRElSX1NFUEFSQVRPUiAoZGly W2Rpcl9sZW4gLSAxXSkpCi0rICAgIGRpcl9sZW4tLTsKLSsKLSsgIHJldHVybiAoZmlsZW5hbWVf bmNtcCAoZGlyLCBmaWxlbmFtZSwgZGlyX2xlbikgPT0gMAotKwkgICYmIChJU19ESVJfU0VQQVJB VE9SIChmaWxlbmFtZVtkaXJfbGVuXSkKLSsJICAgICAgfHwgZmlsZW5hbWVbZGlyX2xlbl0gPT0g J1wwJykpOwotK30KLSsKLSsvKiBSZXR1cm4gMSBpZiBGSUxFTkFNRSBiZWxvbmdzIHRvIG9uZSBv ZiBkaXJlY3RvcnkgY29tcG9uZW50cyBvZgotKyAgIEFVVE9fTE9BRF9TQUZFX1BBVEhfVkVDLiAg UmV0dXJuIDAgb3RoZXJ3aXNlLgotKyAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSBp cyBuZXZlciBjYWxsZWQuCi0rICAgKkZJTEVOQU1FX1JFQUxQIG1heSBiZSB1cGRhdGVkIGJ5IGdk Yl9yZWFscGF0aCBvZiBGSUxFTkFNRSAtIGl0IGhhcyB0byBiZQotKyAgIGZyZWVkIGJ5IHRoZSBj YWxsZXIuICAqLwotKwotK3N0YXRpYyBpbnQKLStmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2Fm ZV9wYXRoX3ZlYyAoY29uc3QgY2hhciAqZmlsZW5hbWUsCi0rCQkJCQljaGFyICoqZmlsZW5hbWVf cmVhbHApCi0rewotKyAgY2hhciAqZGlyOwotKyAgaW50IGl4OwotKwotKyAgZm9yIChpeCA9IDA7 IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBkaXIp OyArK2l4KQotKyAgICBpZiAoKmZpbGVuYW1lX3JlYWxwID09IE5VTEwgJiYgZmlsZW5hbWVfaXNf aW5fZGlyIChmaWxlbmFtZSwgZGlyKSkKLSsgICAgICBicmVhazsKLSsgIAotKyAgaWYgKGRpciA9 PSBOVUxMKQotKyAgICB7Ci0rICAgICAgaWYgKCpmaWxlbmFtZV9yZWFscCA9PSBOVUxMKQotKwkq ZmlsZW5hbWVfcmVhbHAgPSBnZGJfcmVhbHBhdGggKGZpbGVuYW1lKTsKLSsKLSsgICAgICBmb3Ig KGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywg aXgsIGRpcik7Ci0rCSAgICsraXgpCi0rCWlmIChmaWxlbmFtZV9pc19pbl9kaXIgKCpmaWxlbmFt ZV9yZWFscCwgZGlyKSkKLSsJICBicmVhazsKLSsgICAgfQotKwotKyAgaWYgKGRpciAhPSBOVUxM KQotKyAgICByZXR1cm4gMTsKLSsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBSZXR1cm4gMSBp ZiBGSUxFTkFNRSBpcyBsb2NhdGVkIGluIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMgb2YKLSsgICBB VVRPX0xPQURfU0FGRV9QQVRILiAgT3RoZXJ3aXNlIGNhbGwgd2FybmluZyBhbmQgcmV0dXJuIDAu ICBGSUxFTkFNRSBkb2VzCi0rICAgbm90IGhhdmUgdG8gYmUgYW4gYWJzb2x1dGUgcGF0aC4KLSsK LSsgICBFeGlzdGVuY2Ugb2YgRklMRU5BTUUgaXMgbm90IGNoZWNrZWQuICBGdW5jdGlvbiB3aWxs IHN0aWxsIGdpdmUgYSB3YXJuaW5nCi0rICAgZXZlbiBpZiB0aGUgY2FsbGVyIHdvdWxkIHF1aWV0 bHkgc2tpcCBub24tZXhpc3RpbmcgZmlsZSBpbiB1bnNhZmUKLSsgICBkaXJlY3RvcnkuICAqLwot KwotK2ludAotK2ZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQot K3sKLSsgIGNoYXIgKmZpbGVuYW1lX3JlYWwgPSBOVUxMOwotKyAgc3RydWN0IGNsZWFudXAgKmJh Y2tfdG87Ci0rCi0rICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRfY29udGVu dHMsICZmaWxlbmFtZV9yZWFsKTsKLSsKLSsgIGlmIChmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRf c2FmZV9wYXRoX3ZlYyAoZmlsZW5hbWUsICZmaWxlbmFtZV9yZWFsKSkKLSsgICAgewotKyAgICAg IGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSsgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAg YXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOwotKyAgaWYgKGZpbGVuYW1lX2lzX2lu X2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjIChmaWxlbmFtZSwgJmZpbGVuYW1lX3JlYWwpKQotKyAg ICB7Ci0rICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotKyAgICAgIHJldHVybiAxOwotKyAg ICB9Ci0rCi0rICB3YXJuaW5nIChfKCJGaWxlIFwiJXNcIiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4g ZGVjbGluZWQgYnkgeW91ciAiCi0rCSAgICAgImBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8g XCIlc1wiLiIpLAotKwkgICBmaWxlbmFtZV9yZWFsLCBhdXRvX2xvYWRfc2FmZV9wYXRoKTsKLSsK LSsgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSAvKiBEZWZp bml0aW9uIG9mIHNjcmlwdCBsYW5ndWFnZSBmb3IgR0RCIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29t bWFuZHMuICAqLwotIAotIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlIHNjcmlw dF9sYW5ndWFnZV9nZGIKLUBAIC05OSwxMyArMjc3LDIwIEBAIHN0YXRpYyB2b2lkCi0gc291cmNl X2dkYl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpm aWxlLAotIAkJCSAgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkKLSB7Ci0rICBpbnQgaXNfc2Fm ZTsKLSAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotICAgdm9s YXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZTsKLSAKLSsgIGlzX3NhZmUgPSBmaWxlX2lzX2F1 dG9fbG9hZF9zYWZlIChmaWxlbmFtZSk7Ci0rCi0gICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhl IGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKLSAgICAgIGNh biBwcmludCBpdC4gICovCi0gICBwc3BhY2VfaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2Rh dGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0tICBtYXliZV9hZGRfc2Ny aXB0IChwc3BhY2VfaW5mbywgZmlsZW5hbWUsIGZpbGVuYW1lLCAmc2NyaXB0X2xhbmd1YWdlX2dk Yik7Ci0rICBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2VfaW5mbywgaXNfc2FmZSwgZmlsZW5hbWUs IGZpbGVuYW1lLAotKwkJICAgICZzY3JpcHRfbGFuZ3VhZ2VfZ2RiKTsKLSsKLSsgIGlmICghaXNf c2FmZSkKLSsgICAgcmV0dXJuOwotIAotICAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19BTEwp Ci0gICAgIHsKLUBAIC0xNDAsNiArMzI1LDkgQEAgc3RydWN0IGxvYWRlZF9zY3JpcHQKLSAgICAg IGluYWNjZXNzaWJsZSkuICAqLwotICAgY29uc3QgY2hhciAqZnVsbF9wYXRoOwotIAotKyAgLyog Tm9uLXplcm8gaWYgdGhpcyBzY3JpcHQgaGFzIGJlZW4gbG9hZGVkLiAgKi8KLSsgIGludCBsb2Fk ZWQ7Ci0rCi0gICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZTsKLSB9Owot IAotQEAgLTIzMiwxMiArNDIwLDEzIEBAIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xv YWRpbmcgKHMKLSAgIHJldHVybiBpbmZvOwotIH0KLSAKLS0vKiBBZGQgc2NyaXB0IE5BTUUgaW4g TEFOR1VBR0UgdG8gaGFzaCB0YWJsZSBvZiBQU1BBQ0VfSU5GTy4KLS0gICBGVUxMX1BBVEggaXMg TlVMTCBpZiB0aGUgc2NyaXB0IHdhc24ndCBmb3VuZC4gIFRoZSByZXN1bHQgaXMKLSsvKiBBZGQg c2NyaXB0IE5BTUUgaW4gTEFOR1VBR0UgdG8gaGFzaCB0YWJsZSBvZiBQU1BBQ0VfSU5GTy4gIExP QURFRCAxIGlmIHRoZQotKyAgIHNjcmlwdCBoYXMgYmVlbiAoaXMgZ29pbmcgdG8pIGJlIGxvYWRl ZCwgMCBvdGhlcndpc2UgKHN1Y2ggYXMgaWYgaXQgaGFzIG5vdAotKyAgIGJlZW4gZm91bmQpLiAg RlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuICBUaGUgcmVzdWx0 IGlzCi0gICAgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxl LiAgKi8KLSAKLSBpbnQKLS1tYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj ZV9pbmZvICpwc3BhY2VfaW5mbywKLSttYXliZV9hZGRfc2NyaXB0IChzdHJ1Y3QgYXV0b19sb2Fk X3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbywgaW50IGxvYWRlZCwKLSAJCSAgY29uc3QgY2hhciAq bmFtZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoLAotIAkJICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xh bmd1YWdlICpsYW5ndWFnZSkKLSB7Ci1AQCAtMjcxLDYgKzQ2MCw3IEBAIG1heWJlX2FkZF9zY3Jp cHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWMKLSAJfQotICAgICAgIGVsc2UKLSAJKCpzbG90KS0+ ZnVsbF9wYXRoID0gTlVMTDsKLSsgICAgICAoKnNsb3QpLT5sb2FkZWQgPSBsb2FkZWQ7Ci0gICAg ICAgKCpzbG90KS0+bGFuZ3VhZ2UgPSBsYW5ndWFnZTsKLSAgICAgfQotIAotQEAgLTQzMiw3ICs2 MjIsNyBAQCBwcmludF9zY3JpcHQgKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpzY3JpCi0gCi0gICBj aGFpbiA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgTlVMTCk7 Ci0gCi0tICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImxvYWRlZCIsIHNjcmlwdC0+ZnVs bF9wYXRoID8gIlllcyIgOiAiTWlzc2luZyIpOwotKyAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlv dXQsICJsb2FkZWQiLCBzY3JpcHQtPmxvYWRlZCA/ICJZZXMiIDogIk5vIik7Ci0gICB1aV9vdXRf ZmllbGRfc3RyaW5nICh1aW91dCwgInNjcmlwdCIsIHNjcmlwdC0+bmFtZSk7Ci0gICB1aV9vdXRf dGV4dCAodWlvdXQsICJcbiIpOwotIAotQEAgLTcxOCw2ICs5MDgsOCBAQCB2b2lkIF9pbml0aWFs aXplX2F1dG9fbG9hZCAodm9pZCk7Ci0gdm9pZAotIF9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9p ZCkKLSB7Ci0rICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqY21kOwotKwotICAgYXV0b19sb2Fk X3BzcGFjZV9kYXRhCi0gICAgID0gcmVnaXN0ZXJfcHJvZ3JhbV9zcGFjZV9kYXRhX3dpdGhfY2xl YW51cCAoYXV0b19sb2FkX3BzcGFjZV9kYXRhX2NsZWFudXApOwotIAotQEAgLTc1Nyw0ICs5NDks MzAgQEAgVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZgotIAkgICBfKCJQ cmludCB3aGV0aGVyIGN1cnJlbnQgZGlyZWN0b3J5IC5nZGJpbml0IGZpbGUgaGFzIGJlZW4gbG9h ZGVkLlxuXAotIFVzYWdlOiBpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiksCi0gCSAgIGF1 dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSsgIGF1dG9fbG9hZF9zYWZlX3BhdGgg PSB4c3RyZHVwIChERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEgpOwotKyAgYXV0b19sb2FkX3Nh ZmVfcGF0aF92ZWNfdXBkYXRlICgpOwotKyAgYWRkX3NldHNob3dfb3B0aW9uYWxfZmlsZW5hbWVf Y21kICgic2FmZS1wYXRoIiwgY2xhc3Nfc3VwcG9ydCwKLSsJCQkJICAgICAmYXV0b19sb2FkX3Nh ZmVfcGF0aCwgXygiXAotK1NldCB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0 IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLiIpLCBfKCJcCi0rU2hvdyB0aGUgbGlzdCBvZiBk aXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLiIpLCBf KCJcCi0rVmFyaW91cyBmaWxlcyBsb2FkZWQgYXV0b21hdGljYWxseSBmb3IgdGhlICdzZXQgYXV0 by1sb2FkIC4uLicgb3B0aW9ucyBtdXN0XG5cCi0rYmUgbG9jYXRlZCBpbiBvbmUgb2YgdGhlIGRp cmVjdG9yaWVzIGxpc3RlZCBieSB0aGlzIG9wdGlvbi4gIFdhcm5pbmcgd2lsbCBiZVxuXAotK3By aW50ZWQgYW5kIGZpbGUgd2lsbCBub3QgYmUgdXNlZCBvdGhlcndpc2UuICBVc2UgZW1wdHkgc3Ry aW5nIChvciBldmVuXG5cCi0rZW1wdHkgZGlyZWN0b3J5IGVudHJ5KSB0byBhbGxvdyBhbnkgZmls ZSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIC4uLicgb3B0aW9ucy5cblwKLStUaGlzIG9wdGlvbiBp cyBpZ25vcmVkIGZvciB0aGUga2luZHMgb2YgZmlsZXMgaGF2aW5nICdzZXQgYXV0by1sb2FkIC4u LiBvZmYnLlxuXAotK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1 bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAotKwkJCQkgICAgIHNldF9hdXRvX2xvYWRfc2FmZV9wYXRo LAotKwkJCQkgICAgIHNob3dfYXV0b19sb2FkX3NhZmVfcGF0aCwKLSsJCQkJICAgICBhdXRvX2xv YWRfc2V0X2NtZGxpc3RfZ2V0ICgpLAotKwkJCQkgICAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3Rf Z2V0ICgpKTsKLSsKLSsgIGNtZCA9IGFkZF9jbWQgKCJhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCIs IGNsYXNzX3N1cHBvcnQsCi0rCQkgYWRkX2F1dG9fbG9hZF9zYWZlX3BhdGgsCi0rCQkgXygiQWRk IGVudHJpZXMgdG8gdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZl ICIKLSsJCSAgICJ0byBhdXRvLWxvYWQgZmlsZXMuXG5cCi0rU2VlIHRoZSBjb21tYW5kcyAnc2V0 IGF1dG8tbG9hZCBzYWZlLXBhdGgnIGFuZCAnc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoJyB0b1xu XAotK2FjY2VzcyB0aGUgY3VycmVudCBmdWxsIGxpc3Qgc2V0dGluZy4iKSwKLSsJCSAmY21kbGlz dCk7Ci0rICBzZXRfY21kX2NvbXBsZXRlciAoY21kLCBmaWxlbmFtZV9jb21wbGV0ZXIpOwotIH0K LUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuaAotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAw MDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRv LWxvYWQuaAkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYwNzczNjAyMCArMDIwMAotQEAgLTM5LDcgKzM5 LDggQEAgZXh0ZXJuIGludCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZQotIGV4dGVybiBz dHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKLSAgIGdldF9hdXRvX2xvYWRfcHNwYWNlX2Rh dGFfZm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpOwotIGV4dGVybiBp bnQgbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNl X2luZm8sCi0tCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgs Ci0rCQkJICAgICBpbnQgbG9hZGVkLCBjb25zdCBjaGFyICpuYW1lLAotKwkJCSAgICAgY29uc3Qg Y2hhciAqZnVsbF9wYXRoLAotIAkJCSAgICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAq bGFuZ3VhZ2UpOwotIGV4dGVybiB2b2lkIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsCi0gCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3Vh Z2UgKmxhbmd1YWdlKTsKLUBAIC01NCw0ICs1NSw2IEBAIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqKmF1dG9fbG8KLSBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRv X2xvYWRfc2hvd19jbWRsaXN0X2dldCAodm9pZCk7Ci0gZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICoqYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKHZvaWQpOwotIAotK2V4dGVybiBp bnQgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOwotKwotICNl bmRpZiAvKiBBVVRPX0xPQURfSCAqLwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2Nv bmZpZy5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29u ZmlnLmluCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvY29uZmlnLmluCTIwMTItMDQtMTggMDA6NDk6MjEuNjA3NzM2MDIwICsw MjAwCi1AQCAtNDMsNiArNDMsOSBAQAotICAgIG1vdmVkLiAqLwotICN1bmRlZiBERUJVR0RJUl9S RUxPQ0FUQUJMRQotIAotKy8qIERpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBm aWxlcy4gKi8KLSsjdW5kZWYgREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRICi0rCi0gLyogRGVm aW5lIHRvIEJGRCdzIGRlZmF1bHQgYXJjaGl0ZWN0dXJlLiAqLwotICN1bmRlZiBERUZBVUxUX0JG RF9BUkNICi0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUJMjAxMi0w NC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9jb25maWd1cmUJMjAxMi0wNC0xOCAwMDo0OToyMS42MTE3MzYwMTAgKzAyMDAKLUBAIC05NTUs NiArOTU1LDcgQEAgd2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIKLSB3aXRoX2dkYl9kYXRhZGlyCi0g d2l0aF9yZWxvY2F0ZWRfc291cmNlcwotIHdpdGhfcnBtCi0rd2l0aF9hdXRvX2xvYWRfc2FmZV9w YXRoCi0gZW5hYmxlX3RhcmdldHMKLSBlbmFibGVfNjRfYml0X2JmZAotIGVuYWJsZV9nZGJjbGkK LUBAIC0xNjY2LDYgKzE2NjcsMTAgQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHJlbG9jYXRlIHRoaXMgcGF0aCBmb3Igc291cmNl IGZpbGVzCi0gICAtLXdpdGgtcnBtICAgICAgICAgICAgICBxdWVyeSBycG0gZGF0YWJhc2UgZm9y IG1pc3NpbmcgZGVidWdpbmZvcyAoeWVzL25vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGVmLiBhdXRvPWxpYnJwbS5zbykKLSsgIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEgK LSsgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRv LWxvYWRlZCBmaWxlcwotKyAgLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGgKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgIGRvIG5vdCByZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxlcyBsb2Nh dGlvbnMKLSAgIC0td2l0aC1saWJ1bndpbmQgICAgICAgIHVzZSBsaWJ1bndpbmQgZnJhbWUgdW53 aW5kaW5nIHN1cHBvcnQKLSAgIC0td2l0aC1jdXJzZXMgICAgICAgICAgIHVzZSB0aGUgY3Vyc2Vz IGxpYnJhcnkgaW5zdGVhZCBvZiB0aGUgdGVybWNhcAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGlicmFyeQotQEAgLTg0NzcsNiArODQ4MiwzMiBAQCAkYXNfZWNobyAiJGFzX21lOiBXQVJO SU5HOiAkUlBNX1BLR19FUlJPCi0gICBmaQotIGZpCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1w YXRoIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2Fm ZS1wYXRoLi4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1hdXRvLWxvYWQt c2FmZS1wYXRoIHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0 aCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2F1dG9fbG9hZF9zYWZlX3Bh dGg7IGlmIHRlc3QgIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgotKyAg IHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iIgotKyBmaQotK2Vsc2UKLSsgIHdpdGhfYXV0b19s b2FkX3NhZmVfcGF0aD0iJHByZWZpeCIKLStmaQotKwotKwotKyAgdGVzdCAieCRwcmVmaXgiID0g eE5PTkUgJiYgcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCi0rICB0ZXN0ICJ4JGV4ZWNfcHJl Zml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCi0rICBhY19kZWZpbmVfZGly PWBldmFsIGVjaG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aGAKLSsgIGFjX2RlZmluZV9kaXI9 YGV2YWwgZWNobyAkYWNfZGVmaW5lX2RpcmAKLSsKLStjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9G Ci0rI2RlZmluZSBERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEggIiRhY19kZWZpbmVfZGlyIgot K19BQ0VPRgotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA+JjUKLSskYXNfZWNobyAiJHdpdGhf YXV0b19sb2FkX3NhZmVfcGF0aCIgPiY2OyB9Ci0rCi0gCi0gCi0gc3ViZGlycz0iJHN1YmRpcnMg dGVzdHN1aXRlIgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlLmFj CTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvY29uZmlndXJlLmFjCTIwMTItMDQtMTggMDA6NDk6MjEuNjExNzM2MDEwICswMjAw Ci1AQCAtMzM5LDYgKzMzOSwxOCBAQCBleHRlcm4gcnBtZGJNYXRjaEl0ZXJhdG9yIHJwbXRzSW5p dEl0ZXJhCi0gICBmaQotIGZpCi0gIAotK0FDX01TR19DSEVDS0lORyhbZm9yIGRlZmF1bHQgYXV0 by1sb2FkIHNhZmUtcGF0aF0pCi0rQUNfQVJHX1dJVEgoYXV0by1sb2FkLXNhZmUtcGF0aCwKLStB U19IRUxQX1NUUklORyhbLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSF0sIFtkaXJlY3Rv cmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXNdKQotK0FTX0hFTFBfU1RSSU5HKFst LXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aF0sIFtkbyBub3QgcmVzdHJpY3QgYXV0by1sb2Fk ZWQgZmlsZXMgbG9jYXRpb25zXSksCi0rW2lmIHRlc3QgIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3Bh dGgiID0gIm5vIjsgdGhlbgotKyAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iIgotKyBmaV0s Ci0rW3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHByZWZpeCJdKQotK0FDX0RFRklORV9ESVIo REVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRILCB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgsCi0r CSAgICAgIFtEaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuXSkKLStB Q19NU0dfUkVTVUxUKFskd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoXSkKLSsKLSBBQ19DT05GSUdf U1VCRElSUyh0ZXN0c3VpdGUpCi0gCi0gIyBDaGVjayB3aGV0aGVyIHRvIHN1cHBvcnQgYWx0ZXJu YXRpdmUgdGFyZ2V0IGNvbmZpZ3VyYXRpb25zCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvbGludXgtdGhyZWFkLWRiLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIw Lm9yaWcvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAx Mi0wNC0xOCAwMDo0OToyMS42MTI3MzYwMDcgKzAyMDAKLUBAIC04NjgsNyArODY4LDExIEBAIHRy eV90aHJlYWRfZGJfbG9hZF9mcm9tX3BkaXJfMSAoc3RydWN0IG8KLSAgIC8qIFRoaXMgc2hvdWxk IGF0IG1pbmltdW0gaGl0IHRoZSBmaXJzdCBjaGFyYWN0ZXIuICAqLwotICAgZ2RiX2Fzc2VydCAo Y3AgIT0gTlVMTCk7Ci0gICBzdHJjcHkgKGNwICsgMSwgTElCVEhSRUFEX0RCX1NPKTsKLS0gIHJl c3VsdCA9IHRyeV90aHJlYWRfZGJfbG9hZCAocGF0aCk7Ci0rCi0rICBpZiAoIWZpbGVfaXNfYXV0 b19sb2FkX3NhZmUgKHBhdGgpKQotKyAgICByZXN1bHQgPSAwOwotKyAgZWxzZQotKyAgICByZXN1 bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOwotIAotICAgZG9fY2xlYW51cHMgKGNsZWFu dXApOwotICAgcmV0dXJuIHJlc3VsdDsKLUBAIC05MzQsNyArOTM4LDExIEBAIHRyeV90aHJlYWRf ZGJfbG9hZF9mcm9tX2RpciAoY29uc3QgY2hhcgotICAgbWVtY3B5IChwYXRoLCBkaXIsIGRpcl9s ZW4pOwotICAgcGF0aFtkaXJfbGVuXSA9ICcvJzsKLSAgIHN0cmNweSAocGF0aCArIGRpcl9sZW4g KyAxLCBMSUJUSFJFQURfREJfU08pOwotLSAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChw YXRoKTsKLSsKLSsgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCkpCi0rICAgIHJl c3VsdCA9IDA7Ci0rICBlbHNlCi0rICAgIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJfbG9hZCAocGF0 aCk7Ci0gCi0gICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0gICByZXR1cm4gcmVzdWx0OwotSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTgg MDA6NDk6MjEuNjEyNzM2MDA3ICswMjAwCi1AQCAtMTAyNiw3ICsxMDI2LDggQEAgY2FwdHVyZWRf bWFpbiAodm9pZCAqZGF0YSkKLSAgICAgewotICAgICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0 X3BhdGhuYW1lID0gZ2RiX3JlYWxwYXRoIChsb2NhbF9nZGJpbml0KTsKLSAKLS0gICAgICBpZiAo IWluaGliaXRfZ2RiaW5pdCAmJiBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCkKLSsgICAgICBpZiAo IWluaGliaXRfZ2RiaW5pdCAmJiBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdAotKwkgICYmIGZpbGVf aXNfYXV0b19sb2FkX3NhZmUgKGxvY2FsX2dkYmluaXQpKQotIAl7Ci0gCSAgYXV0b19sb2FkX2xv Y2FsX2dkYmluaXRfbG9hZGVkID0gMTsKLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9kb2MvZ2RiLnRleGluZm8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4 IDAwOjQ5OjIxLjYyMDczNTk4NyArMDIwMAotQEAgLTIwODAxLDYgKzIwODAxLDggQEAgZ2RiLXNj cmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcQotIGxpYnRocmVhZC1kYjogIEF1dG8t bG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIgaXMgb24uCi0gbG9jYWwt Z2RiaW5pdDogIEF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQgZnJvbSBjdXJyZW50IGRp cmVjdG9yeSBpcyBvbi4KLSBweXRob24tc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBQeXRob24g c2NyaXB0cyBpcyBvbi4KLStzYWZlLXBhdGg6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hp Y2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMKLSsgICAgICAgICAgICBpcyAvdXNyL2xv Y2FsLgotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0gQGFuY2hvcntpbmZvIGF1dG8tbG9hZH0KLUBA IC0yMDg3MiwxMiArMjA4NzQsMTkgQEAgVGhlc2UgYXJlIEB2YWx1ZXtHREJOfSBjb250cm9sIGNv bW1hbmRzCi0gQHRhYiBTaG93IHNldHRpbmcgb2YgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5Lgot IEBpdGVtIEB4cmVme2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0uCi0gQHRhYiBTaG93IHN0 YXRlIG9mIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KLStAaXRlbSBAeHJlZntzZXQgYXV0by1s b2FkIHNhZmUtcGF0aH0uCi0rQHRhYiBDb250cm9sIGRpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGF1 dG9tYXRpYyBsb2FkaW5nLgotK0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0u Ci0rQHRhYiBTaG93IGRpcmVjdG9yaWVzIHRydXN0ZWQgZm9yIGF1dG9tYXRpYyBsb2FkaW5nLgot K0BpdGVtIEB4cmVme2FkZC1hdXRvLWxvYWQtc2FmZS1wYXRofS4KLStAdGFiIEFkZCBkaXJlY3Rv cnkgdHJ1c3RlZCBmb3IgYXV0b21hdGljIGxvYWRpbmcuCi0gQGVuZCBtdWx0aXRhYmxlCi0gCi0g QG1lbnUKLSAqIEluaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rvcnk6OiBAc2FtcHtzZXQv c2hvdy9pbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fQotICogbGlidGhyZWFkX2RiLnNvLjEg ZmlsZTo6ICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIGxpYnRocmVh ZC1kYn0KLSAqIG9iamZpbGUtZ2RiLmdkYiBmaWxlOjogICAgICAgICAgICAgICBAc2FtcHtzZXQv c2hvdy9pbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0fQotKyogQXV0by1sb2FkaW5nIHNhZmUgcGF0 aDo6ICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2luZm8gYXV0by1sb2FkIHNhZmUtcGF0aH0K LSBAeHJlZntQeXRob24gQXV0by1sb2FkaW5nfS4KLSBAZW5kIG1lbnUKLSAKLUBAIC0yMDk3OCw2 ICsyMDk4NywxMDQgQEAgYXV0by1sb2FkZWQuCi0gSWYgQHZhcntyZWdleHB9IGlzIHN1cHBsaWVk IG9ubHkgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIHdpdGgKLSBtYXRjaGlu ZyBuYW1lcyBhcmUgcHJpbnRlZC4KLSAKLStAbm9kZSBBdXRvLWxvYWRpbmcgc2FmZSBwYXRoCi0r QHN1YnNlY3Rpb24gU2VjdXJpdHkgcmVzdHJpY3Rpb24gZm9yIGF1dG8tbG9hZGluZwotK0BjaW5k ZXggYXV0by1sb2FkaW5nIHNhZmUtcGF0aAotKwotK0FzIHRoZSBmaWxlcyBvZiBpbmZlcmlvciBj YW4gY29tZSBmcm9tIHVudHJ1c3RlZCBzb3VyY2UgKHN1Y2ggYXMgc3VibWl0dGVkIGJ5Ci0rYW4g YXBwbGljYXRpb24gdXNlcikgQHZhbHVle0dEQk59IGRvZXMgbm90IGFsd2F5cyBsb2FkIGFueSBm aWxlcyBhdXRvbWF0aWNhbGx5LgotK0B2YWx1ZXtHREJOfSBwcm92aWRlcyB0aGUgQHNhbXB7c2V0 IGF1dG8tbG9hZCBzYWZlLXBhdGh9IHNldHRpbmcgdG8gbGlzdAotK2RpcmVjdG9yaWVzIHRydXN0 ZWQgZm9yIGxvYWRpbmcgZmlsZXMgbm90IGV4cGxpY2l0bHkgcmVxdWVzdGVkIGJ5IHVzZXIuCi0r Ci0rSWYgdGhlIHBhdGggaXMgbm90IHNldCBwcm9wZXJseSB5b3Ugd2lsbCBzZWUgYSB3YXJuaW5n IGFuZCB0aGUgZmlsZSB3aWxsIG5vdAotK2dldCBsb2FkZWQ6Ci0rCi0rQHNtYWxsZXhhbXBsZQot KyQgLi9nZGIgLXEgLi9nZGIKLStSZWFkaW5nIHN5bWJvbHMgZnJvbSAvaG9tZS91c2VyL2dkYi9n ZGIuLi5kb25lLgotK3dhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiIiBh dXRvLWxvYWRpbmcgaGFzIGJlZW4KLSsgICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxv YWQgc2FmZS1wYXRoJyBzZXQgdG8gIi91c3IvbG9jYWwiLgotK3dhcm5pbmc6IEZpbGUgIi9ob21l L3VzZXIvZ2RiL2dkYi1nZGIucHkiIGF1dG8tbG9hZGluZyBoYXMgYmVlbgotKyAgICAgICAgIGRl Y2xpbmVkIGJ5IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byAiL3Vzci9sb2NhbCIu Ci0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStUaGUgbGlzdCBvZiB0cnVzdGVkIGRpcmVjdG9yaWVz IGlzIGNvbnRyb2xsZWQgYnkgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKLSsKLStAdGFibGUgQGNv ZGUKLStAYW5jaG9ye3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofQotK0BraW5kZXggc2V0IGF1dG8t bG9hZCBzYWZlLXBhdGgKLStAaXRlbSBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCBAdmFye2RpcmVj dG9yaWVzfQotK1NldCB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyAoYW5kIHRoZWlyIHN1YmRpcmVj dG9yaWVzKSB0cnVzdGVkIGZvciBhdXRvbWF0aWMKLStsb2FkaW5nIGFuZCBleGVjdXRpb24gb2Yg c2NyaXB0cy4gIFlvdSBjYW4gYWxzbyBlbnRlciBhIHNwZWNpZmljIHRydXN0ZWQgZmlsZS4KLStU aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB1c2VzIGRpcmVjdG9yeSBzZXBhcmF0b3IgKEBzYW1wezp9 IG9uIEdOVSBhbmQgVW5peAotK3N5c3RlbXMsIEBzYW1wezt9IG9uIE1TLVdpbmRvd3MgYW5kIE1T LURPUykgdG8gc2VwYXJhdGUgZGlyZWN0b3JpZXMsIHNpbWlsYXJseQotK3RvIHRoZSBAZW52e1BB VEh9IGVudmlyb25tZW50IHZhcmlhYmxlLgotKwotK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgc2Fm ZS1wYXRofQotK0BraW5kZXggc2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRoCi0rQGl0ZW0gc2hvdyBh dXRvLWxvYWQgc2FmZS1wYXRoCi0rU2hvdyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0cnVzdGVk IGZvciBhdXRvbWF0aWMgbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mCi0rc2NyaXB0cy4KLSsKLStA YW5jaG9ye2FkZC1hdXRvLWxvYWQtc2FmZS1wYXRofQotK0BraW5kZXggYWRkLWF1dG8tbG9hZC1z YWZlLXBhdGgKLStAaXRlbSBhZGQtYXV0by1sb2FkLXNhZmUtcGF0aAotK0FkZCBhbiBlbnRyeSAo b3IgbGlzdCBvZiBlbnRyaWVzKSB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBh dXRvbWF0aWMKLStsb2FkaW5nIGFuZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4gIE11bHRpcGxlIGVu dHJpZXMgbWF5IGJlIGRlbGltaXRlZCBieSB0aGUKLStob3N0IHBsYXRmb3JtIGRpcmVjdG9yeSBz ZXBhcmF0b3IgaW4gdXNlLgotK0BlbmQgdGFibGUKLSsKLStTZXR0aW5nIHRoaXMgdmFyaWFibGUg dG8gYW4gZW1wdHkgc3RyaW5nIGRpc2FibGVzIHRoaXMgc2VjdXJpdHkgcHJvdGVjdGlvbi4KLStU aGlzIHZhcmlhYmxlIGlzIHN1cHBvc2VkIHRvIGJlIHNldCB0byB0aGUgc3lzdGVtIGRpcmVjdG9y aWVzIHdyaXRhYmxlIGJ5IHRoZQotK3N5c3RlbSBzdXBlcnVzZXIgb25seS4gIFVzZXJzIGNhbiBh ZGQgdGhlaXIgc291cmNlIGRpcmVjdG9yaWVzIGluIGluaXQgZmlsZXMgaW4KLSt0aGVpciBob21l IGRpcmVjdG9yaWVzIChAcHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBTZWUgYWxz byBkZXByZWNhdGVkCi0raW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQotKyhAcHhy ZWZ7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeSBkdXJpbmcgU3RhcnR1cH0pLgot KwotK1RvIGZvcmNlIEB2YWx1ZXtHREJOfSB0byBsb2FkIHRoZSBmaWxlcyBpdCBkZWNsaW5lZCB0 byBsb2FkIGluIHRoZSBwcmV2aW91cwotK2V4YW1wbGUsIHlvdSBjb3VsZCB1c2Ugb25lIG9mIHRo ZSBmb2xsb3dpbmcgd2F5czoKLSsKLStAaXRlbWl6ZSBAYnVsbGV0Ci0rQGl0ZW0gfi8uZ2RiaW5p dDogYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGggfi9zcmMvZ2RiCi0rU3BlY2lmeSB0aGlzIHRydXN0 ZWQgZGlyZWN0b3J5IChvciBhIGZpbGUpIGFzIGFkZGl0aW9uYWwgY29tcG9uZW50IG9mIHRoZSBs aXN0LgotK1lvdSBoYXZlIHRvIHNwZWNpZnkgYWxzbyBhbnkgZXhpc3RpbmcgZGlyZWN0b3JpZXMg ZGlzcGxheWVkIGJ5Ci0rYnkgQHNhbXB7c2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRofSAoc3VjaCBh cyBAc2FtcHsvdXNyOi9iaW59IGluIHRoaXMgZXhhbXBsZSkuCi0rCi0rQGl0ZW0gQGtiZHtnZGIg LWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggL3VzcjovYmluOn4vc3JjL2dkYiIgW0Bkb3Rz e31dfQotK1NwZWNpZnkgdGhpcyBkaXJlY3RvcnkgYXMgaW4gdGhlIHByZXZpb3VzIGNhc2UgYnV0 IGp1c3QgZm9yIGEgc2luZ2xlCi0rQHZhbHVle0dEQk59IHNlc3Npb24uCi0rCi0rQGl0ZW0gQGti ZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiIFtAZG90c3t9XX0KLStEaXNhYmxl IGF1dG8tbG9hZGluZyBzYWZldHkgZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgot K1RoaXMgYXNzdW1lcyBhbGwgdGhlIGZpbGVzIHlvdSBkZWJ1ZyBkdXJpbmcgdGhpcyBAdmFsdWV7 R0RCTn0gc2Vzc2lvbiB3aWxsIGNvbWUKLStmcm9tIHRydXN0ZWQgc291cmNlcy4KLSsKLStAaXRl bSBAa2Jkey4vY29uZmlndXJlIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRofQotK0R1cmlu ZyBjb21waWxhdGlvbiBvZiBAdmFsdWV7R0RCTn0geW91IG1heSBkaXNhYmxlIGFueSBhdXRvLWxv YWRpbmcgc2FmZXR5LgotK1RoaXMgYXNzdW1lcyBhbGwgdGhlIGZpbGVzIHlvdSB3aWxsIGV2ZXIg ZGVidWcgd2l0aCB0aGlzIEB2YWx1ZXtHREJOfSBjb21lIGZyb20KLSt0cnVzdGVkIHNvdXJjZXMu Ci0rQGVuZCBpdGVtaXplCi0rCi0rT24gdGhlIG90aGVyIGhhbmQgeW91IGNhbiBhbHNvIGV4cGxp Y2l0bHkgZm9yYmlkIGF1dG9tYXRpYyBmaWxlcyBsb2FkaW5nIHdoaWNoCi0rYWxzbyBzdXBwcmVz c2VzIGFueSBzdWNoIHdhcm5pbmcgbWVzc2FnZXM6Ci0rCi0rQGl0ZW1pemUgQGJ1bGxldAotK0Bp dGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgbm8iIFtAZG90c3t9XX0KLStZb3UgY2Fu IHVzZSBAdmFsdWV7R0RCTn0gY29tbWFuZC1saW5lIG9wdGlvbiBmb3IgYSBzaW5nbGUgQHZhbHVl e0dEQk59IHNlc3Npb24uCi0rCi0rQGl0ZW0gQHNhbXB7fi8uZ2RiaW5pdH06IEBzYW1we3NldCBh dXRvLWxvYWQgbm99Ci0rRGlzYWJsZSBhdXRvLWxvYWRpbmcgZ2xvYmFsbHkgZm9yIHRoZSB1c2Vy Ci0rKEBweHJlZntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9KS4gIFdoaWxlIGl0IGlzIGltcHJv YmFibGUsIHlvdSBjb3VsZCBhbHNvCi0rdXNlIHN5c3RlbSBpbml0IGZpbGUgaW5zdGVhZCAoQHB4 cmVme1N5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb259KS4KLStAZW5kIGl0ZW1pemUKLSsKLStUaGlz IHNldHRpbmcgYXBwbGllcyB0byB0aGUgZmlsZSBuYW1lcyBhcyBlbnRlcmVkIGJ5IHVzZXIuICBJ ZiBubyBlbnRyeSBtYXRjaGVzCi0rQHZhbHVle0dEQk59IHRyaWVzIGFzIGEgbGFzdCByZXNvcnQg dG8gYWxzbyByZXNvbHZlIGFsbCB0aGUgZmlsZSBuYW1lcyBpbnRvCi0rdGhlaXIgY2Fub25pY2Fs IGZvcm0gKHR5cGljYWxseSByZXNvbHZpbmcgc3ltYm9saWMgbGlua3MpIGFuZCBjb21wYXJlIHRo ZQotK2VudHJpZXMgYWdhaW4uICBAdmFsdWV7R0RCTn0gYWxyZWFkeSBjYW5vbmljYWxpemVzIG1v c3Qgb2YgdGhlIGZpbGVuYW1lcyBvbiBpdHMKLStvd24gYmVmb3JlIHN0YXJ0aW5nIHRoZSBjb21w YXJpc29uIHNvIGEgY2Fub25pY2FsIGZvcm0gb2YgZGlyZWN0b3JpZXMgaXMKLStyZWNvbW1lbmRl ZCB0byBiZSBlbnRlcmVkLgotKwotIEBub2RlIE1lc3NhZ2VzL1dhcm5pbmdzCi0gQHNlY3Rpb24g T3B0aW9uYWwgV2FybmluZ3MgYW5kIE1lc3NhZ2VzCi0gCi1AQCAtMjQ5NTUsMTAgKzI1MDYyLDEw IEBAIEV4YW1wbGU6Ci0gCi0gQHNtYWxsZXhhbXBsZQotIChnZGIpIGluZm8gYXV0by1sb2FkIHB5 dGhvbi1zY3JpcHRzCi0tTG9hZGVkICBTY3JpcHQKLS1ZZXMgICAgIHB5LXNlY3Rpb24tc2NyaXB0 LnB5Ci0tICAgICAgICBmdWxsIG5hbWU6IC90bXAvcHktc2VjdGlvbi1zY3JpcHQucHkKLS1NaXNz aW5nIG15LWZvby1wcmV0dHktcHJpbnRlcnMucHkKLStMb2FkZWQgU2NyaXB0Ci0rWWVzICAgIHB5 LXNlY3Rpb24tc2NyaXB0LnB5Ci0rICAgICAgIGZ1bGwgbmFtZTogL3RtcC9weS1zZWN0aW9uLXNj cmlwdC5weQotK05vICAgICBteS1mb28tcHJldHR5LXByaW50ZXJzLnB5Ci0gQGVuZCBzbWFsbGV4 YW1wbGUKLSBAZW5kIHRhYmxlCi0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0 aG9uL3B5LWF1dG8tbG9hZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2Fk LmMJMjAxMi0wNC0xOCAwMDo0OToyMS42MjE3MzU5ODUgKzAyMDAKLUBAIC03MiwxNCArNzIsMTkg QEAgc3RhdGljIHZvaWQKLSBnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKLSAJCQkJICAgIGNvbnN0IGNoYXIgKmZp bGVuYW1lKQotIHsKLSsgIGludCBpc19zYWZlOwotICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2Vf aW5mbyAqcHNwYWNlX2luZm87Ci0gCi0rICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRfc2Fm ZSAoZmlsZW5hbWUpOwotKwotICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxl IHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiCi0gICAgICBjYW4gcHJpbnQg aXQuICAqLwotICAgcHNwYWNlX2luZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9s b2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwotLSAgbWF5YmVfYWRkX3NjcmlwdCAocHNw YWNlX2luZm8sIGZpbGVuYW1lLCBmaWxlbmFtZSwgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOwot KyAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGlzX3NhZmUsIGZpbGVuYW1lLCBmaWxl bmFtZSwKLSsJCSAgICAmc2NyaXB0X2xhbmd1YWdlX3B5dGhvbik7Ci0gCi0tICBzb3VyY2VfcHl0 aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZmlsZSwgZmlsZW5hbWUpOwotKyAgaWYg KGlzX3NhZmUpCi0rICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxl LCBmaWxlLCBmaWxlbmFtZSk7Ci0gfQotIAotIC8qIExvYWQgc2NyaXB0cyBzcGVjaWZpZWQgaW4g T0JKRklMRS4KLUBAIC0xNDcsNiArMTUyLDkgQEAgc291cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3Ry dWN0IG9iamZpbGUgKgotIAl7Ci0gCSAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFtKTsKLSAJ ICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOwotKwotKwkgIGlmICghZmlsZV9pc19h dXRvX2xvYWRfc2FmZSAoZnVsbF9wYXRoKSkKLSsJICAgIG9wZW5lZCA9IDA7Ci0gCX0KLSAgICAg ICBlbHNlCi0gCXsKLUBAIC0xNjcsNyArMTc1LDcgQEAgVXNlIGBpbmZvIGF1dG8tbG9hZCBweXRo b24gW1JFR0VYUF0nIHRvCi0gCi0gCSBJV0JOIGlmIGNvbXBsYWludHMuYyB3ZXJlIG1vcmUgZ2Vu ZXJhbC1wdXJwb3NlLiAgKi8KLSAKLS0gICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3Nj cmlwdCAocHNwYWNlX2luZm8sIGZpbGUsIGZ1bGxfcGF0aCwKLSsgICAgICBpbl9oYXNoX3RhYmxl ID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIG9wZW5lZCwgZmlsZSwgZnVsbF9wYXRo LAotIAkJCQkJJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOwotIAotICAgICAgIC8qIElmIHRoaXMg ZmlsZSBpcyBub3QgY3VycmVudGx5IGxvYWRlZCwgbG9hZCBpdC4gICovCi1JbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQu ZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi90ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0Njo0Ny4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAJMjAxMi0wNC0xOCAwMDo0OToyMS42MjE3MzU5 ODUgKzAyMDAKLUBAIC0zNyw2ICszNyw3IEBAIGlmIHsgW3NraXBfcHl0aG9uX3Rlc3RzXSB9IHsg Y29udGludWUgfQotIHNldCByZW1vdGVfcHl0aG9uX2ZpbGUgW3JlbW90ZV9kb3dubG9hZCBob3N0 ICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0tZ2RiLnB5LmluICR7c3ViZGlyfS8ke3Rl c3RmaWxlfS1nZGIucHldCi0gCi0gZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGly Ci0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAke3JlbW90ZV9w eXRob25fZmlsZX0iICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIKLSBnZGJfbG9hZCAke2JpbmZp bGV9Ci0gCi0gIyBWZXJpZnkgZ2RiIGxvYWRlZCB0aGUgc2NyaXB0LgotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4 cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktc2VjdGlvbi1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDY6NDcuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktc2VjdGlvbi1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDk6MjEuNjIxNzM1OTg1 ICswMjAwCi1AQCAtNDksNiArNDksNyBAQCBpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNv bnRpbnVlIH0KLSBzZXQgcmVtb3RlX3B5dGhvbl9maWxlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCAk e3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LnB5XQotIAotIGdkYl9yZWluaXRpYWxpemVf ZGlyICRzcmNkaXIvJHN1YmRpcgotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tbG9hZCBz YWZlLXBhdGggJHtyZW1vdGVfcHl0aG9uX2ZpbGV9IiAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgi Ci0gZ2RiX2xvYWQgJHtiaW5maWxlfQotIAotICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlw dC4KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTFvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2Fk LTExb2YyMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWM2OGIw Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTExb2YyMi5wYXRjaApAQCAtMCwwICsx LDc0NCBAQAorW3BhdGNoIzQgNS84XSBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aAoraHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwOTIuaHRtbAoraHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExNC5odG1sCisKKyMjIyBz cmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjUxOjQxCTEuMTQxMTMKKyMjIyBzcmMvZ2Ri L0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjU0OjI4CTEuMTQxMTQKKyMjIC0xLDUgKzEsMzkgQEAK KyAyMDEyLTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ CisgCisrCU5ldyBvcHRpb24gInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIi4KKysJKiBORVdTOiBO ZXcgY29tbWFuZHMgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIgorKwlhbmQgInNob3cgYXV0by1s b2FkIHNhZmUtcGF0aCIuCisrCSogYXV0by1sb2FkLmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaCwgcmVh ZGxpbmUvdGlsZGUuaCBhbmQgY29tcGxldGVyLmguCisrCShhdXRvX2xvYWRfc2FmZV9wYXRoLCBh dXRvX2xvYWRfc2FmZV9wYXRoX3ZlYykKKysJKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0 ZSwgc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGgpCisrCShzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGgs IGFkZF9hdXRvX2xvYWRfc2FmZV9wYXRoLCBmaWxlbmFtZV9pc19pbl9kaXIpCisrCShmaWxlbmFt ZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSk6 IE5ldy4KKysJKHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3IHZhcmlhYmxlIGlz X3NhZmUuICBDYWxsCisrCWZpbGVfaXNfYXV0b19sb2FkX3NhZmUuICBSZXR1cm4gaWYgaXQgaXMg bm90LgorKwkoc3RydWN0IGxvYWRlZF9zY3JpcHQpOiBOZXcgZmllbGQgbG9hZGVkLgorKwkobWF5 YmVfYWRkX3NjcmlwdCk6IEFkZCBwYXJhbWV0ZXIgbG9hZGVkLiAgSW5pdGlhbGl6ZSBTTE9UIHdp dGggaXQuCisrCShwcmludF9zY3JpcHQpOiBVc2UgTE9BREVEIGluZGljYXRvciBpbnN0ZWFkIG9m IEZVTExfUEFUSC4gIENoYW5nZQorKwlvdXRwdXQgIk1pc3NpbmciIHRvICJObyIuCisrCShfaW5p dGlhbGl6ZV9hdXRvX2xvYWQpOiBOZXcgdmFyaWFibGUgY21kLiAgSW5pdGlhbGl6ZQorKwlhdXRv X2xvYWRfc2FmZV9wYXRoLiAgUmVnaXN0ZXIgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIiwKKysJ InNob3cgYXV0by1sb2FkIHNhZmUtcGF0aCIgYW5kICJhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCIu CisrCSogYXV0by1sb2FkLmggKG1heWJlX2FkZF9zY3JpcHQpOiBBZGQgcGFyYW1ldGVyIGxvYWRl ZC4KKysJKGZpbGVfaXNfYXV0b19sb2FkX3NhZmUpOiBOZXcgZGVjbGFyYXRpb24uCisrCSogY29u ZmlnLmluOiBSZWdlbmVyYXRlLgorKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKysJKiBjb25m aWd1cmUuYWM6IE5ldyBwYXJhbWV0ZXJzIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoCisrCWFu ZCAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aC4KKysJKiBsaW51eC10aHJlYWQtZGIuYyAo dHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fcGRpcl8xKQorKwkodHJ5X3RocmVhZF9kYl9sb2FkX2Zy b21fZGlyKTogQ2hlY2sgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSBmaXJzdC4KKysJKiBtYWluLmMg KGNhcHR1cmVkX21haW4pOiBDaGVjayBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIGZvcgorKwlMT0NB TF9HREJJTklULgorKwkqIHB5dGhvbi9weS1hdXRvLWxvYWQuYyAoZ2RicHlfbG9hZF9hdXRvX3Nj cmlwdF9mb3Jfb2JqZmlsZSk6IE5ldworKwl2YXJpYWJsZSBpc19zYWZlLiAgQ2FsbCBmaWxlX2lz X2F1dG9fbG9hZF9zYWZlLiAgUmV0dXJuIGlmIGl0IGlzIG5vdC4KKysJKHNvdXJjZV9zZWN0aW9u X3NjcmlwdHMpOiBDYWxsIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUuICBSZXR1cm4gaWYgaXQgaXMK KysJbm90LgorKworKzIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KKysKKyAJYXV0by1sb2FkOiBJbXBsZW1lbnRhdGlvbi4KKyAJKiBORVdTOiBO ZXcgZGVzY3JpcHRpb25zIGZvciAiaW5mbyBhdXRvLWxvYWQiLAorIAkiaW5mbyBhdXRvLWxvYWQg Z2RiLXNjcmlwdHMiLCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLAorSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0OTowMi4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDk6MzMuMjgy NzA2MzE5ICswMjAwCitAQCAtNjcsNiArNjcsMTEgQEAgc2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQt ZGIgb258b2ZmCisgc2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCisgICBDb250cm9sIGF1dG8t bG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIHNoYXJlZCBsaWJy YXJ5LgorIAorK3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoIDxkaXIxPls6PGRpcjI+Li4uXQorK3No b3cgYXV0by1sb2FkIHNhZmUtcGF0aAorKyAgU2V0IGEgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9t IHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLgorKyAgVGhlIGRlbGltaXRlciAo JzonIGFib3ZlKSBtYXkgZGlmZmVyIGFjY29yZGluZyB0byB0aGUgaG9zdCBwbGF0Zm9ybS4KKysK KyAqIE5ldyBjb21tYW5kIGxpbmUgb3B0aW9ucworIAorIC0taW5pdC1jb21tYW5kPUZJTEUsIC1p eCAgICAgICAgICBMaWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEy LTA0LTE4IDAwOjQ5OjIxLjYwNzczNjAyMCArMDIwMAorQEAgLTMyLDYgKzMyLDkgQEAKKyAjaW5j bHVkZSAiZ2RiY21kLmgiCisgI2luY2x1ZGUgImNsaS9jbGktZGVjb2RlLmgiCisgI2luY2x1ZGUg ImNsaS9jbGktc2V0c2hvdy5oIgorKyNpbmNsdWRlICJnZGJfdmVjcy5oIgorKyNpbmNsdWRlICJy ZWFkbGluZS90aWxkZS5oIgorKyNpbmNsdWRlICJjb21wbGV0ZXIuaCIKKyAKKyAvKiBUaGUgc3Vm Zml4IG9mIHBlci1vYmpmaWxlIHNjcmlwdHMgdG8gYXV0by1sb2FkIGFzIG5vbi1QeXRob24gY29t bWFuZCBmaWxlcy4KKyAgICBFLmcuIFdoZW4gdGhlIHByb2dyYW0gbG9hZHMgbGliZm9vLnNvLCBs b29rIGZvciBsaWJmb28tZ2RiLmdkYi4gICovCitAQCAtOTAsNiArOTMsMTgxIEBAIHNob3dfYXV0 b19sb2FkX2xvY2FsX2dkYmluaXQgKHN0cnVjdCB1aV8KKyAJCSAgICB2YWx1ZSk7CisgfQorIAor Ky8qIERpcmVjdG9yeSBsaXN0IHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy4gIEl0IGlz IG5vdCBjaGVja2VkIGZvcgorKyAgIGFic29sdXRlIHBhdGhzIGJ1dCB0aGV5IGFyZSBzdHJvbmds eSByZWNvbW1lbmRlZC4gIEl0IGlzIGluaXRpYWxpemVkIGJ5CisrICAgX2luaXRpYWxpemVfYXV0 b19sb2FkLiAgKi8KKytzdGF0aWMgY2hhciAqYXV0b19sb2FkX3NhZmVfcGF0aDsKKysKKysvKiBW ZWN0b3Igb2YgZGlyZWN0b3J5IGVsZW1lbnRzIG9mIEFVVE9fTE9BRF9TQUZFX1BBVEggd2l0aCBl YWNoIG9uZSBub3JtYWxpemVkCisrICAgYnkgdGlsZGVfZXhwYW5kIGFuZCBwb3NzaWJseSBlYWNo IGVudHJpZXMgaGFzIGFkZGVkIGl0cyBnZGJfcmVhbHBhdGgKKysgICBjb3VudGVycGFydC4gICov Cisrc3RhdGljIFZFQyAoY2hhcl9wdHIpICphdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYzsKKysKKysv KiBVcGRhdGUgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgZnJvbSBjdXJyZW50IEFVVE9fTE9BRF9T QUZFX1BBVEguICAqLworKworK3N0YXRpYyB2b2lkCisrYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNf dXBkYXRlICh2b2lkKQorK3sKKysgIFZFQyAoY2hhcl9wdHIpICpkaXJfdmVjID0gTlVMTDsKKysg IHVuc2lnbmVkIGxlbjsKKysgIGludCBpeDsKKysKKysgIGZyZWVfY2hhcl9wdHJfdmVjIChhdXRv X2xvYWRfc2FmZV9wYXRoX3ZlYyk7CisrCisrICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyA9IGRp cm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2FkX3NhZmVfcGF0aCk7CisrICBsZW4gPSBW RUNfbGVuZ3RoIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMpOworKworKyAgLyog QXBwbHkgdGlsZGVfZXhwYW5kIGFuZCBnZGJfcmVhbHBhdGggdG8gZWFjaCBBVVRPX0xPQURfU0FG RV9QQVRIX1ZFQworKyAgICAgZWxlbWVudC4gICovCisrICBmb3IgKGl4ID0gMDsgaXggPCBsZW47 IGl4KyspCisrICAgIHsKKysgICAgICBjaGFyICpkaXIgPSBWRUNfaW5kZXggKGNoYXJfcHRyLCBh dXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgpOworKyAgICAgIGNoYXIgKmV4cGFuZGVkID0gdGls ZGVfZXhwYW5kIChkaXIpOworKyAgICAgIGNoYXIgKnJlYWxfcGF0aCA9IGdkYl9yZWFscGF0aCAo ZXhwYW5kZWQpOworKworKyAgICAgIC8qIEVuc3VyZSB0aGUgY3VycmVudCBlbnRyeSBpcyBhdCBs ZWFzdCB0aWxkZV9leHBhbmQtZWQuICAqLworKyAgICAgIHhmcmVlIChkaXIpOworKyAgICAgIFZF Q19yZXBsYWNlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBleHBhbmRl ZCk7CisrCisrICAgICAgLyogSWYgZ2RiX3JlYWxwYXRoIHJldHVybnMgYSBkaWZmZXJlbnQgY29u dGVudCwgYXBwZW5kIGl0LiAgKi8KKysgICAgICBpZiAoc3RyY21wIChyZWFsX3BhdGgsIGV4cGFu ZGVkKSA9PSAwKQorKwl4ZnJlZSAocmVhbF9wYXRoKTsKKysgICAgICBlbHNlCisrCVZFQ19zYWZl X3B1c2ggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgcmVhbF9wYXRoKTsKKysg ICAgfQorK30KKysKKysvKiAic2V0IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3NhZmVfcGF0 aCBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3NldF9hdXRv X2xvYWRfc2FmZV9wYXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpjKQorK3sKKysgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsK Kyt9CisrCisrLyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9wYXRoIGNv bmZpZ3VyYXRpb24gdmFyaWFibGUuICAqLworKworK3N0YXRpYyB2b2lkCisrc2hvd19hdXRvX2xv YWRfc2FmZV9wYXRoIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorKwkJCSAg c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorK3sKKysgIGlm ICgqdmFsdWUgPT0gMCkKKysgICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2Fk IGZpbGVzIGFyZSBzYWZlIHRvIGxvYWQgZnJvbSBhbnkgIgorKwkJCSAgICAgICJkaXJlY3Rvcnku XG4iKSk7CisrICBlbHNlCisrICAgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkxpc3Qgb2Yg ZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvICIKKysJCQkgICAgICAiYXV0by1s b2FkIGZpbGVzIGlzICVzLlxuIiksCisrCQkgICAgICB2YWx1ZSk7CisrfQorKworKy8qICJhZGQt YXV0by1sb2FkLXNhZmUtcGF0aCIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9zYWZlX3BhdGgg Y29uZmlndXJhdGlvbgorKyAgIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2FkZF9h dXRvX2xvYWRfc2FmZV9wYXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCisreworKyAgY2hh ciAqczsKKysKKysgIGlmIChhcmdzID09IE5VTEwgfHwgKmFyZ3MgPT0gMCkKKysgICAgZXJyb3Ig KF8oIlwKKytBZGRpbmcgZW1wdHkgZGlyZWN0b3J5IGVsZW1lbnQgZGlzYWJsZXMgdGhlIGF1dG8t bG9hZCBzYWZlLXBhdGggc2VjdXJpdHkuICBcCisrVXNlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0 aCcgaW5zdGVhZCBpZiB5b3UgbWVhbiB0aGF0LiIpKTsKKysKKysgIHMgPSB4c3RycHJpbnRmICgi JXMlYyVzIiwgYXV0b19sb2FkX3NhZmVfcGF0aCwgRElSTkFNRV9TRVBBUkFUT1IsIGFyZ3MpOwor KyAgeGZyZWUgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOworKyAgYXV0b19sb2FkX3NhZmVfcGF0aCA9 IHM7CisrCisrICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7CisrfQorKworKy8q IFJldHVybiAxIGlmIEZJTEVOQU1FIGlzIGVxdWFsIHRvIERJUiBvciBpZiBGSUxFTkFNRSBiZWxv bmdzIHRvIHRoZQorKyAgIHN1YmRpcmVjdG9yeSBESVIuICBSZXR1cm4gMCBvdGhlcndpc2UuICBn ZGJfcmVhbHBhdGggbm9ybWFsaXphdGlvbiBpcyBuZXZlcgorKyAgIGRvbmUgaGVyZS4gICovCisr Cisrc3RhdGljIEFUVFJJQlVURV9QVVJFIGludAorK2ZpbGVuYW1lX2lzX2luX2RpciAoY29uc3Qg Y2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmRpcikKKyt7CisrICBzaXplX3QgZGlyX2xlbiA9 IHN0cmxlbiAoZGlyKTsKKysKKysgIHdoaWxlIChkaXJfbGVuICYmIElTX0RJUl9TRVBBUkFUT1Ig KGRpcltkaXJfbGVuIC0gMV0pKQorKyAgICBkaXJfbGVuLS07CisrCisrICByZXR1cm4gKGZpbGVu YW1lX25jbXAgKGRpciwgZmlsZW5hbWUsIGRpcl9sZW4pID09IDAKKysJICAmJiAoSVNfRElSX1NF UEFSQVRPUiAoZmlsZW5hbWVbZGlyX2xlbl0pCisrCSAgICAgIHx8IGZpbGVuYW1lW2Rpcl9sZW5d ID09ICdcMCcpKTsKKyt9CisrCisrLyogUmV0dXJuIDEgaWYgRklMRU5BTUUgYmVsb25ncyB0byBv bmUgb2YgZGlyZWN0b3J5IGNvbXBvbmVudHMgb2YKKysgICBBVVRPX0xPQURfU0FGRV9QQVRIX1ZF Qy4gIFJldHVybiAwIG90aGVyd2lzZS4KKysgICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRh dGUgaXMgbmV2ZXIgY2FsbGVkLgorKyAgICpGSUxFTkFNRV9SRUFMUCBtYXkgYmUgdXBkYXRlZCBi eSBnZGJfcmVhbHBhdGggb2YgRklMRU5BTUUgLSBpdCBoYXMgdG8gYmUKKysgICBmcmVlZCBieSB0 aGUgY2FsbGVyLiAgKi8KKysKKytzdGF0aWMgaW50CisrZmlsZW5hbWVfaXNfaW5fYXV0b19sb2Fk X3NhZmVfcGF0aF92ZWMgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorKwkJCQkJY2hhciAqKmZpbGVu YW1lX3JlYWxwKQorK3sKKysgIGNoYXIgKmRpcjsKKysgIGludCBpeDsKKysKKysgIGZvciAoaXgg PSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwg ZGlyKTsgKytpeCkKKysgICAgaWYgKCpmaWxlbmFtZV9yZWFscCA9PSBOVUxMICYmIGZpbGVuYW1l X2lzX2luX2RpciAoZmlsZW5hbWUsIGRpcikpCisrICAgICAgYnJlYWs7CisrICAKKysgIGlmIChk aXIgPT0gTlVMTCkKKysgICAgeworKyAgICAgIGlmICgqZmlsZW5hbWVfcmVhbHAgPT0gTlVMTCkK KysJKmZpbGVuYW1lX3JlYWxwID0gZ2RiX3JlYWxwYXRoIChmaWxlbmFtZSk7CisrCisrICAgICAg Zm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92 ZWMsIGl4LCBkaXIpOworKwkgICArK2l4KQorKwlpZiAoZmlsZW5hbWVfaXNfaW5fZGlyICgqZmls ZW5hbWVfcmVhbHAsIGRpcikpCisrCSAgYnJlYWs7CisrICAgIH0KKysKKysgIGlmIChkaXIgIT0g TlVMTCkKKysgICAgcmV0dXJuIDE7CisrCisrICByZXR1cm4gMDsKKyt9CisrCisrLyogUmV0dXJu IDEgaWYgRklMRU5BTUUgaXMgbG9jYXRlZCBpbiBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzIG9mCisr ICAgQVVUT19MT0FEX1NBRkVfUEFUSC4gIE90aGVyd2lzZSBjYWxsIHdhcm5pbmcgYW5kIHJldHVy biAwLiAgRklMRU5BTUUgZG9lcworKyAgIG5vdCBoYXZlIHRvIGJlIGFuIGFic29sdXRlIHBhdGgu CisrCisrICAgRXhpc3RlbmNlIG9mIEZJTEVOQU1FIGlzIG5vdCBjaGVja2VkLiAgRnVuY3Rpb24g d2lsbCBzdGlsbCBnaXZlIGEgd2FybmluZworKyAgIGV2ZW4gaWYgdGhlIGNhbGxlciB3b3VsZCBx dWlldGx5IHNraXAgbm9uLWV4aXN0aW5nIGZpbGUgaW4gdW5zYWZlCisrICAgZGlyZWN0b3J5LiAg Ki8KKysKKytpbnQKKytmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpmaWxlbmFt ZSkKKyt7CisrICBjaGFyICpmaWxlbmFtZV9yZWFsID0gTlVMTDsKKysgIHN0cnVjdCBjbGVhbnVw ICpiYWNrX3RvOworKworKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2Nv bnRlbnRzLCAmZmlsZW5hbWVfcmVhbCk7CisrCisrICBpZiAoZmlsZW5hbWVfaXNfaW5fYXV0b19s b2FkX3NhZmVfcGF0aF92ZWMgKGZpbGVuYW1lLCAmZmlsZW5hbWVfcmVhbCkpCisrICAgIHsKKysg ICAgICBkb19jbGVhbnVwcyAoYmFja190byk7CisrICAgICAgcmV0dXJuIDE7CisrICAgIH0KKysK KysgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKKysgIGlmIChmaWxlbmFtZV9p c19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoZmlsZW5hbWUsICZmaWxlbmFtZV9yZWFsKSkK KysgICAgeworKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKysgICAgICByZXR1cm4gMTsK KysgICAgfQorKworKyAgd2FybmluZyAoXygiRmlsZSBcIiVzXCIgYXV0by1sb2FkaW5nIGhhcyBi ZWVuIGRlY2xpbmVkIGJ5IHlvdXIgIgorKwkgICAgICJgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0 IHRvIFwiJXNcIi4iKSwKKysJICAgZmlsZW5hbWVfcmVhbCwgYXV0b19sb2FkX3NhZmVfcGF0aCk7 CisrCisrICBkb19jbGVhbnVwcyAoYmFja190byk7CisrICByZXR1cm4gMDsKKyt9CisrCisgLyog RGVmaW5pdGlvbiBvZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIEdEQiBjYW5uZWQgc2VxdWVuY2VzIG9m IGNvbW1hbmRzLiAgKi8KKyAKKyBzdGF0aWMgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSBz Y3JpcHRfbGFuZ3VhZ2VfZ2RiCitAQCAtOTksMTMgKzI3NywyMCBAQCBzdGF0aWMgdm9pZAorIHNv dXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklM RSAqZmlsZSwKKyAJCQkgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCisgeworKyAgaW50IGlz X3NhZmU7CisgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKyAg IHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7CisgCisrICBpc19zYWZlID0gZmlsZV9p c19hdXRvX2xvYWRfc2FmZSAoZmlsZW5hbWUpOworKworICAgLyogQWRkIHRoaXMgc2NyaXB0IHRv IHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiCisgICAg ICBjYW4gcHJpbnQgaXQuICAqLworICAgcHNwYWNlX2luZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFj ZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOworLSAgbWF5YmVfYWRk X3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGVuYW1lLCBmaWxlbmFtZSwgJnNjcmlwdF9sYW5ndWFn ZV9nZGIpOworKyAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGlzX3NhZmUsIGZpbGVu YW1lLCBmaWxlbmFtZSwKKysJCSAgICAmc2NyaXB0X2xhbmd1YWdlX2dkYik7CisrCisrICBpZiAo IWlzX3NhZmUpCisrICAgIHJldHVybjsKKyAKKyAgIFRSWV9DQVRDSCAoZSwgUkVUVVJOX01BU0tf QUxMKQorICAgICB7CitAQCAtMTQwLDYgKzMyNSw5IEBAIHN0cnVjdCBsb2FkZWRfc2NyaXB0Cisg ICAgICBpbmFjY2Vzc2libGUpLiAgKi8KKyAgIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aDsKKyAKKysg IC8qIE5vbi16ZXJvIGlmIHRoaXMgc2NyaXB0IGhhcyBiZWVuIGxvYWRlZC4gICovCisrICBpbnQg bG9hZGVkOworKworICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2U7Cisg fTsKKyAKK0BAIC0yMzIsMTIgKzQyMCwxMyBAQCBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zv cl9sb2FkaW5nIChzCisgICByZXR1cm4gaW5mbzsKKyB9CisgCistLyogQWRkIHNjcmlwdCBOQU1F IGluIExBTkdVQUdFIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8uCistICAgRlVMTF9QQVRI IGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuICBUaGUgcmVzdWx0IGlzCisrLyog QWRkIHNjcmlwdCBOQU1FIGluIExBTkdVQUdFIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8u ICBMT0FERUQgMSBpZiB0aGUKKysgICBzY3JpcHQgaGFzIGJlZW4gKGlzIGdvaW5nIHRvKSBiZSBs b2FkZWQsIDAgb3RoZXJ3aXNlIChzdWNoIGFzIGlmIGl0IGhhcyBub3QKKysgICBiZWVuIGZvdW5k KS4gIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLiAgVGhlIHJl c3VsdCBpcworICAgIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0 YWJsZS4gICovCisgCisgaW50CistbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9w c3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sCisrbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9f bG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sIGludCBsb2FkZWQsCisgCQkgIGNvbnN0IGNo YXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCwKKyAJCSAgY29uc3Qgc3RydWN0IHNjcmlw dF9sYW5ndWFnZSAqbGFuZ3VhZ2UpCisgeworQEAgLTI3MSw2ICs0NjAsNyBAQCBtYXliZV9hZGRf c2NyaXB0IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjCisgCX0KKyAgICAgICBlbHNlCisgCSgqc2xv dCktPmZ1bGxfcGF0aCA9IE5VTEw7CisrICAgICAgKCpzbG90KS0+bG9hZGVkID0gbG9hZGVkOwor ICAgICAgICgqc2xvdCktPmxhbmd1YWdlID0gbGFuZ3VhZ2U7CisgICAgIH0KKyAKK0BAIC00MzIs NyArNjIyLDcgQEAgcHJpbnRfc2NyaXB0IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaQorIAor ICAgY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5V TEwpOworIAorLSAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQt PmZ1bGxfcGF0aCA/ICJZZXMiIDogIk1pc3NpbmciKTsKKysgIHVpX291dF9maWVsZF9zdHJpbmcg KHVpb3V0LCAibG9hZGVkIiwgc2NyaXB0LT5sb2FkZWQgPyAiWWVzIiA6ICJObyIpOworICAgdWlf b3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJzY3JpcHQiLCBzY3JpcHQtPm5hbWUpOworICAgdWlf b3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKKyAKK0BAIC03MTgsNiArOTA4LDggQEAgdm9pZCBfaW5p dGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQpOworIHZvaWQKKyBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQg KHZvaWQpCisgeworKyAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNtZDsKKysKKyAgIGF1dG9f bG9hZF9wc3BhY2VfZGF0YQorICAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3BhY2VfZGF0YV93aXRo X2NsZWFudXAgKGF1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKKyAKK0BAIC03NTcsNCAr OTQ5LDMwIEBAIFRoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGYKKyAJICAg XygiUHJpbnQgd2hldGhlciBjdXJyZW50IGRpcmVjdG9yeSAuZ2RiaW5pdCBmaWxlIGhhcyBiZWVu IGxvYWRlZC5cblwKKyBVc2FnZTogaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIpLAorIAkg ICBhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7CisrCisrICBhdXRvX2xvYWRfc2FmZV9w YXRoID0geHN0cmR1cCAoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIKTsKKysgIGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKKysgIGFkZF9zZXRzaG93X29wdGlvbmFsX2ZpbGVu YW1lX2NtZCAoInNhZmUtcGF0aCIsIGNsYXNzX3N1cHBvcnQsCisrCQkJCSAgICAgJmF1dG9fbG9h ZF9zYWZlX3BhdGgsIF8oIlwKKytTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGlj aCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcy4iKSwgXygiXAorK1Nob3cgdGhlIGxpc3Qg b2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcy4i KSwgXygiXAorK1ZhcmlvdXMgZmlsZXMgbG9hZGVkIGF1dG9tYXRpY2FsbHkgZm9yIHRoZSAnc2V0 IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMgbXVzdFxuXAorK2JlIGxvY2F0ZWQgaW4gb25lIG9mIHRo ZSBkaXJlY3RvcmllcyBsaXN0ZWQgYnkgdGhpcyBvcHRpb24uICBXYXJuaW5nIHdpbGwgYmVcblwK KytwcmludGVkIGFuZCBmaWxlIHdpbGwgbm90IGJlIHVzZWQgb3RoZXJ3aXNlLiAgVXNlIGVtcHR5 IHN0cmluZyAob3IgZXZlblxuXAorK2VtcHR5IGRpcmVjdG9yeSBlbnRyeSkgdG8gYWxsb3cgYW55 IGZpbGUgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMuXG5cCisrVGhpcyBvcHRp b24gaXMgaWdub3JlZCBmb3IgdGhlIGtpbmRzIG9mIGZpbGVzIGhhdmluZyAnc2V0IGF1dG8tbG9h ZCAuLi4gb2ZmJy5cblwKKytUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBm b3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKKysJCQkJICAgICBzZXRfYXV0b19sb2FkX3NhZmVf cGF0aCwKKysJCQkJICAgICBzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGgsCisrCQkJCSAgICAgYXV0 b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKKysJCQkJICAgICBhdXRvX2xvYWRfc2hvd19jbWRs aXN0X2dldCAoKSk7CisrCisrICBjbWQgPSBhZGRfY21kICgiYWRkLWF1dG8tbG9hZC1zYWZlLXBh dGgiLCBjbGFzc19zdXBwb3J0LAorKwkJIGFkZF9hdXRvX2xvYWRfc2FmZV9wYXRoLAorKwkJIF8o IkFkZCBlbnRyaWVzIHRvIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMg c2FmZSAiCisrCQkgICAidG8gYXV0by1sb2FkIGZpbGVzLlxuXAorK1NlZSB0aGUgY29tbWFuZHMg J3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoJyBhbmQgJ3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aCcg dG9cblwKKythY2Nlc3MgdGhlIGN1cnJlbnQgZnVsbCBsaXN0IHNldHRpbmcuIiksCisrCQkgJmNt ZGxpc3QpOworKyAgc2V0X2NtZF9jb21wbGV0ZXIgKGNtZCwgZmlsZW5hbWVfY29tcGxldGVyKTsK KyB9CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQt MTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv YXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDo0OToyMS42MDc3MzYwMjAgKzAyMDAKK0BAIC0zOSw3 ICszOSw4IEBAIGV4dGVybiBpbnQgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGUKKyBleHRl cm4gc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCisgICBnZXRfYXV0b19sb2FkX3BzcGFj ZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsKKyBleHRl cm4gaW50IG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBz cGFjZV9pbmZvLAorLQkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVsbF9w YXRoLAorKwkJCSAgICAgaW50IGxvYWRlZCwgY29uc3QgY2hhciAqbmFtZSwKKysJCQkgICAgIGNv bnN0IGNoYXIgKmZ1bGxfcGF0aCwKKyAJCQkgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3Vh Z2UgKmxhbmd1YWdlKTsKKyBleHRlcm4gdm9pZCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAkJCQkgICAgICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xh bmd1YWdlICpsYW5ndWFnZSk7CitAQCAtNTQsNCArNTUsNiBAQCBleHRlcm4gc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKiphdXRvX2xvCisgZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoq YXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKHZvaWQpOworIGV4dGVybiBzdHJ1Y3QgY21kX2xp c3RfZWxlbWVudCAqKmF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICh2b2lkKTsKKyAKKytleHRl cm4gaW50IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKysK KyAjZW5kaWYgLyogQVVUT19MT0FEX0ggKi8KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9jb25maWcuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2NvbmZpZy5pbgkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy5pbgkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYwNzczNjAy MCArMDIwMAorQEAgLTQzLDYgKzQzLDkgQEAKKyAgICBtb3ZlZC4gKi8KKyAjdW5kZWYgREVCVUdE SVJfUkVMT0NBVEFCTEUKKyAKKysvKiBEaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2Fk ZWQgZmlsZXMuICovCisrI3VuZGVmIERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSAorKworIC8q IERlZmluZSB0byBCRkQncyBkZWZhdWx0IGFyY2hpdGVjdHVyZS4gKi8KKyAjdW5kZWYgREVGQVVM VF9CRkRfQVJDSAorIAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlCTIw MTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvY29uZmlndXJlCTIwMTItMDQtMTggMDA6NDk6MjEuNjExNzM2MDEwICswMjAwCitAQCAt OTU1LDYgKzk1NSw3IEBAIHdpdGhfc2VwYXJhdGVfZGVidWdfZGlyCisgd2l0aF9nZGJfZGF0YWRp cgorIHdpdGhfcmVsb2NhdGVkX3NvdXJjZXMKKyB3aXRoX3JwbQorK3dpdGhfYXV0b19sb2FkX3Nh ZmVfcGF0aAorIGVuYWJsZV90YXJnZXRzCisgZW5hYmxlXzY0X2JpdF9iZmQKKyBlbmFibGVfZ2Ri Y2xpCitAQCAtMTY2Niw2ICsxNjY3LDEwIEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSByZWxvY2F0ZSB0aGlzIHBhdGggZm9yIHNv dXJjZSBmaWxlcworICAgLS13aXRoLXJwbSAgICAgICAgICAgICAgcXVlcnkgcnBtIGRhdGFiYXNl IGZvciBtaXNzaW5nIGRlYnVnaW5mb3MgKHllcy9ubywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRlZi4gYXV0bz1saWJycG0uc28pCisrICAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1Q QVRICisrICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQg YXV0by1sb2FkZWQgZmlsZXMKKysgIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoCisrICAg ICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMg bG9jYXRpb25zCisgICAtLXdpdGgtbGlidW53aW5kICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1l IHVud2luZGluZyBzdXBwb3J0CisgICAtLXdpdGgtY3Vyc2VzICAgICAgICAgICB1c2UgdGhlIGN1 cnNlcyBsaWJyYXJ5IGluc3RlYWQgb2YgdGhlIHRlcm1jYXAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxpYnJhcnkKK0BAIC04NDc3LDYgKzg0ODIsMzIgQEAgJGFzX2VjaG8gIiRhc19tZTog V0FSTklORzogJFJQTV9QS0dfRVJSTworICAgZmkKKyBmaQorIAorK3sgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNh ZmUtcGF0aCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0by1sb2Fk IHNhZmUtcGF0aC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYXV0by1s b2FkLXNhZmUtcGF0aCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGgrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9hdXRvX2xvYWRfc2Fm ZV9wYXRoOyBpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4K KysgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiIKKysgZmkKKytlbHNlCisrICB3aXRoX2F1 dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgiCisrZmkKKysKKysKKysgIHRlc3QgIngkcHJlZml4 IiA9IHhOT05FICYmIHByZWZpeD0iJGFjX2RlZmF1bHRfcHJlZml4IgorKyAgdGVzdCAieCRleGVj X3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JworKyAgYWNfZGVmaW5l X2Rpcj1gZXZhbCBlY2hvICR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGhgCisrICBhY19kZWZpbmVf ZGlyPWBldmFsIGVjaG8gJGFjX2RlZmluZV9kaXJgCisrCisrY2F0ID4+Y29uZmRlZnMuaCA8PF9B Q0VPRgorKyNkZWZpbmUgREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIICIkYWNfZGVmaW5lX2Rp ciIKKytfQUNFT0YKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IHJlc3VsdDogJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPiY1CisrJGFzX2VjaG8gIiR3 aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID4mNjsgfQorKworIAorIAorIHN1YmRpcnM9IiRzdWJk aXJzIHRlc3RzdWl0ZSIKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUu YWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3Vy ZS5hYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYxMTczNjAxMCAr MDIwMAorQEAgLTMzOSw2ICszMzksMTggQEAgZXh0ZXJuIHJwbWRiTWF0Y2hJdGVyYXRvciBycG10 c0luaXRJdGVyYQorICAgZmkKKyBmaQorICAKKytBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0 IGF1dG8tbG9hZCBzYWZlLXBhdGhdKQorK0FDX0FSR19XSVRIKGF1dG8tbG9hZC1zYWZlLXBhdGgs CisrQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEhdLCBbZGly ZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzXSkKKytBU19IRUxQX1NUUklO RyhbLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGhdLCBbZG8gbm90IHJlc3RyaWN0IGF1dG8t bG9hZGVkIGZpbGVzIGxvY2F0aW9uc10pLAorK1tpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2Fm ZV9wYXRoIiA9ICJubyI7IHRoZW4KKysgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiIKKysg ZmldLAorK1t3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgiXSkKKytBQ19ERUZJTkVf RElSKERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCwgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo LAorKwkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLl0p CisrQUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aF0pCisrCisgQUNfQ09O RklHX1NVQkRJUlModGVzdHN1aXRlKQorIAorICMgQ2hlY2sgd2hldGhlciB0byBzdXBwb3J0IGFs dGVybmF0aXZlIHRhcmdldCBjb25maWd1cmF0aW9ucworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5j CTIwMTItMDQtMTggMDA6NDk6MjEuNjEyNzM2MDA3ICswMjAwCitAQCAtODY4LDcgKzg2OCwxMSBA QCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyXzEgKHN0cnVjdCBvCisgICAvKiBUaGlzIHNo b3VsZCBhdCBtaW5pbXVtIGhpdCB0aGUgZmlyc3QgY2hhcmFjdGVyLiAgKi8KKyAgIGdkYl9hc3Nl cnQgKGNwICE9IE5VTEwpOworICAgc3RyY3B5IChjcCArIDEsIExJQlRIUkVBRF9EQl9TTyk7Cist ICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOworKworKyAgaWYgKCFmaWxlX2lz X2F1dG9fbG9hZF9zYWZlIChwYXRoKSkKKysgICAgcmVzdWx0ID0gMDsKKysgIGVsc2UKKysgICAg cmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKKyAKKyAgIGRvX2NsZWFudXBzIChj bGVhbnVwKTsKKyAgIHJldHVybiByZXN1bHQ7CitAQCAtOTM0LDcgKzkzOCwxMSBAQCB0cnlfdGhy ZWFkX2RiX2xvYWRfZnJvbV9kaXIgKGNvbnN0IGNoYXIKKyAgIG1lbWNweSAocGF0aCwgZGlyLCBk aXJfbGVuKTsKKyAgIHBhdGhbZGlyX2xlbl0gPSAnLyc7CisgICBzdHJjcHkgKHBhdGggKyBkaXJf bGVuICsgMSwgTElCVEhSRUFEX0RCX1NPKTsKKy0gIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJfbG9h ZCAocGF0aCk7CisrCisrICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgpKQorKyAg ICByZXN1bHQgPSAwOworKyAgZWxzZQorKyAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQg KHBhdGgpOworIAorICAgZG9fY2xlYW51cHMgKGNsZWFudXApOworICAgcmV0dXJuIHJlc3VsdDsK K0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0 LTE4IDAwOjQ5OjIxLjYxMjczNjAwNyArMDIwMAorQEAgLTEwMjYsNyArMTAyNiw4IEBAIGNhcHR1 cmVkX21haW4gKHZvaWQgKmRhdGEpCisgICAgIHsKKyAgICAgICBhdXRvX2xvYWRfbG9jYWxfZ2Ri aW5pdF9wYXRobmFtZSA9IGdkYl9yZWFscGF0aCAobG9jYWxfZ2RiaW5pdCk7CisgCistICAgICAg aWYgKCFpbmhpYml0X2dkYmluaXQgJiYgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQpCisrICAgICAg aWYgKCFpbmhpYml0X2dkYmluaXQgJiYgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQKKysJICAmJiBm aWxlX2lzX2F1dG9fbG9hZF9zYWZlIChsb2NhbF9nZGJpbml0KSkKKyAJeworIAkgIGF1dG9fbG9h ZF9sb2NhbF9nZGJpbml0X2xvYWRlZCA9IDE7CisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvZG9jL2dkYi50ZXhpbmZvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEy MC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0w NC0xOCAwMDo0OToyMS42MjA3MzU5ODcgKzAyMDAKK0BAIC0yMDgwMSw2ICsyMDgwMSw4IEBAIGdk Yi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXEKKyBsaWJ0aHJlYWQtZGI6ICBB dXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiIGlzIG9uLgorIGxv Y2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3VycmVu dCBkaXJlY3RvcnkgaXMgb24uCisgcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0 aG9uIHNjcmlwdHMgaXMgb24uCisrc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9t IHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCisrICAgICAgICAgICAgaXMgL3Vz ci9sb2NhbC4KKyBAZW5kIHNtYWxsZXhhbXBsZQorIAorIEBhbmNob3J7aW5mbyBhdXRvLWxvYWR9 CitAQCAtMjA4NzIsMTIgKzIwODc0LDE5IEBAIFRoZXNlIGFyZSBAdmFsdWV7R0RCTn0gY29udHJv bCBjb21tYW5kcworIEB0YWIgU2hvdyBzZXR0aW5nIG9mIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFy eS4KKyBAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgorIEB0YWIgU2hv dyBzdGF0ZSBvZiB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCisrQGl0ZW0gQHhyZWZ7c2V0IGF1 dG8tbG9hZCBzYWZlLXBhdGh9LgorK0B0YWIgQ29udHJvbCBkaXJlY3RvcmllcyB0cnVzdGVkIGZv ciBhdXRvbWF0aWMgbG9hZGluZy4KKytAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBzYWZlLXBh dGh9LgorK0B0YWIgU2hvdyBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMgbG9hZGlu Zy4KKytAaXRlbSBAeHJlZnthZGQtYXV0by1sb2FkLXNhZmUtcGF0aH0uCisrQHRhYiBBZGQgZGly ZWN0b3J5IHRydXN0ZWQgZm9yIGF1dG9tYXRpYyBsb2FkaW5nLgorIEBlbmQgbXVsdGl0YWJsZQor IAorIEBtZW51CisgKiBJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5OjogQHNhbXB7 c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0KKyAqIGxpYnRocmVhZF9kYi5z by4xIGZpbGU6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsaWJ0 aHJlYWQtZGJ9CisgKiBvYmpmaWxlLWdkYi5nZGIgZmlsZTo6ICAgICAgICAgICAgICAgQHNhbXB7 c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdH0KKysqIEF1dG8tbG9hZGluZyBzYWZl IHBhdGg6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBzYWZlLXBh dGh9CisgQHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30uCisgQGVuZCBtZW51CisgCitAQCAtMjA5 NzgsNiArMjA5ODcsMTA0IEBAIGF1dG8tbG9hZGVkLgorIElmIEB2YXJ7cmVnZXhwfSBpcyBzdXBw bGllZCBvbmx5IGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyB3aXRoCisgbWF0 Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQuCisgCisrQG5vZGUgQXV0by1sb2FkaW5nIHNhZmUgcGF0 aAorK0BzdWJzZWN0aW9uIFNlY3VyaXR5IHJlc3RyaWN0aW9uIGZvciBhdXRvLWxvYWRpbmcKKytA Y2luZGV4IGF1dG8tbG9hZGluZyBzYWZlLXBhdGgKKysKKytBcyB0aGUgZmlsZXMgb2YgaW5mZXJp b3IgY2FuIGNvbWUgZnJvbSB1bnRydXN0ZWQgc291cmNlIChzdWNoIGFzIHN1Ym1pdHRlZCBieQor K2FuIGFwcGxpY2F0aW9uIHVzZXIpIEB2YWx1ZXtHREJOfSBkb2VzIG5vdCBhbHdheXMgbG9hZCBh bnkgZmlsZXMgYXV0b21hdGljYWxseS4KKytAdmFsdWV7R0RCTn0gcHJvdmlkZXMgdGhlIEBzYW1w e3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofSBzZXR0aW5nIHRvIGxpc3QKKytkaXJlY3RvcmllcyB0 cnVzdGVkIGZvciBsb2FkaW5nIGZpbGVzIG5vdCBleHBsaWNpdGx5IHJlcXVlc3RlZCBieSB1c2Vy LgorKworK0lmIHRoZSBwYXRoIGlzIG5vdCBzZXQgcHJvcGVybHkgeW91IHdpbGwgc2VlIGEgd2Fy bmluZyBhbmQgdGhlIGZpbGUgd2lsbCBub3QKKytnZXQgbG9hZGVkOgorKworK0BzbWFsbGV4YW1w bGUKKyskIC4vZ2RiIC1xIC4vZ2RiCisrUmVhZGluZyBzeW1ib2xzIGZyb20gL2hvbWUvdXNlci9n ZGIvZ2RiLi4uZG9uZS4KKyt3YXJuaW5nOiBGaWxlICIvaG9tZS91c2VyL2dkYi9nZGItZ2RiLmdk YiIgYXV0by1sb2FkaW5nIGhhcyBiZWVuCisrICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0 by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIvdXNyL2xvY2FsIi4KKyt3YXJuaW5nOiBGaWxlICIv aG9tZS91c2VyL2dkYi9nZGItZ2RiLnB5IiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4KKysgICAgICAg ICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIi91c3IvbG9j YWwiLgorK0BlbmQgc21hbGxleGFtcGxlCisrCisrVGhlIGxpc3Qgb2YgdHJ1c3RlZCBkaXJlY3Rv cmllcyBpcyBjb250cm9sbGVkIGJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6CisrCisrQHRhYmxl IEBjb2RlCisrQGFuY2hvcntzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0KKytAa2luZGV4IHNldCBh dXRvLWxvYWQgc2FmZS1wYXRoCisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggQHZhcntk aXJlY3Rvcmllc30KKytTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgKGFuZCB0aGVpciBzdWJk aXJlY3RvcmllcykgdHJ1c3RlZCBmb3IgYXV0b21hdGljCisrbG9hZGluZyBhbmQgZXhlY3V0aW9u IG9mIHNjcmlwdHMuICBZb3UgY2FuIGFsc28gZW50ZXIgYSBzcGVjaWZpYyB0cnVzdGVkIGZpbGUu CisrVGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdXNlcyBkaXJlY3Rvcnkgc2VwYXJhdG9yIChAc2Ft cHs6fSBvbiBHTlUgYW5kIFVuaXgKKytzeXN0ZW1zLCBAc2FtcHs7fSBvbiBNUy1XaW5kb3dzIGFu ZCBNUy1ET1MpIHRvIHNlcGFyYXRlIGRpcmVjdG9yaWVzLCBzaW1pbGFybHkKKyt0byB0aGUgQGVu dntQQVRIfSBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKysKKytAYW5jaG9ye3Nob3cgYXV0by1sb2Fk IHNhZmUtcGF0aH0KKytAa2luZGV4IHNob3cgYXV0by1sb2FkIHNhZmUtcGF0aAorK0BpdGVtIHNo b3cgYXV0by1sb2FkIHNhZmUtcGF0aAorK1Nob3cgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdHJ1 c3RlZCBmb3IgYXV0b21hdGljIGxvYWRpbmcgYW5kIGV4ZWN1dGlvbiBvZgorK3NjcmlwdHMuCisr CisrQGFuY2hvcnthZGQtYXV0by1sb2FkLXNhZmUtcGF0aH0KKytAa2luZGV4IGFkZC1hdXRvLWxv YWQtc2FmZS1wYXRoCisrQGl0ZW0gYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgKKytBZGQgYW4gZW50 cnkgKG9yIGxpc3Qgb2YgZW50cmllcykgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdHJ1c3RlZCBm b3IgYXV0b21hdGljCisrbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBNdWx0aXBs ZSBlbnRyaWVzIG1heSBiZSBkZWxpbWl0ZWQgYnkgdGhlCisraG9zdCBwbGF0Zm9ybSBkaXJlY3Rv cnkgc2VwYXJhdG9yIGluIHVzZS4KKytAZW5kIHRhYmxlCisrCisrU2V0dGluZyB0aGlzIHZhcmlh YmxlIHRvIGFuIGVtcHR5IHN0cmluZyBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24u CisrVGhpcyB2YXJpYWJsZSBpcyBzdXBwb3NlZCB0byBiZSBzZXQgdG8gdGhlIHN5c3RlbSBkaXJl Y3RvcmllcyB3cml0YWJsZSBieSB0aGUKKytzeXN0ZW0gc3VwZXJ1c2VyIG9ubHkuICBVc2VycyBj YW4gYWRkIHRoZWlyIHNvdXJjZSBkaXJlY3RvcmllcyBpbiBpbml0IGZpbGVzIGluCisrdGhlaXIg aG9tZSBkaXJlY3RvcmllcyAoQHB4cmVme0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pLiAgU2Vl IGFsc28gZGVwcmVjYXRlZAorK2luaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKKyso QHB4cmVme0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnkgZHVyaW5nIFN0YXJ0dXB9 KS4KKysKKytUbyBmb3JjZSBAdmFsdWV7R0RCTn0gdG8gbG9hZCB0aGUgZmlsZXMgaXQgZGVjbGlu ZWQgdG8gbG9hZCBpbiB0aGUgcHJldmlvdXMKKytleGFtcGxlLCB5b3UgY291bGQgdXNlIG9uZSBv ZiB0aGUgZm9sbG93aW5nIHdheXM6CisrCisrQGl0ZW1pemUgQGJ1bGxldAorK0BpdGVtIH4vLmdk YmluaXQ6IGFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIH4vc3JjL2dkYgorK1NwZWNpZnkgdGhpcyB0 cnVzdGVkIGRpcmVjdG9yeSAob3IgYSBmaWxlKSBhcyBhZGRpdGlvbmFsIGNvbXBvbmVudCBvZiB0 aGUgbGlzdC4KKytZb3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28gYW55IGV4aXN0aW5nIGRpcmVjdG9y aWVzIGRpc3BsYXllZCBieQorK2J5IEBzYW1we3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0gKHN1 Y2ggYXMgQHNhbXB7L3VzcjovYmlufSBpbiB0aGlzIGV4YW1wbGUpLgorKworK0BpdGVtIEBrYmR7 Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+L3NyYy9nZGIiIFtA ZG90c3t9XX0KKytTcGVjaWZ5IHRoaXMgZGlyZWN0b3J5IGFzIGluIHRoZSBwcmV2aW91cyBjYXNl IGJ1dCBqdXN0IGZvciBhIHNpbmdsZQorK0B2YWx1ZXtHREJOfSBzZXNzaW9uLgorKworK0BpdGVt IEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIiBbQGRvdHN7fV19CisrRGlz YWJsZSBhdXRvLWxvYWRpbmcgc2FmZXR5IGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lv bi4KKytUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3UgZGVidWcgZHVyaW5nIHRoaXMgQHZh bHVle0dEQk59IHNlc3Npb24gd2lsbCBjb21lCisrZnJvbSB0cnVzdGVkIHNvdXJjZXMuCisrCisr QGl0ZW0gQGtiZHsuL2NvbmZpZ3VyZSAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aH0KKytE dXJpbmcgY29tcGlsYXRpb24gb2YgQHZhbHVle0dEQk59IHlvdSBtYXkgZGlzYWJsZSBhbnkgYXV0 by1sb2FkaW5nIHNhZmV0eS4KKytUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3Ugd2lsbCBl dmVyIGRlYnVnIHdpdGggdGhpcyBAdmFsdWV7R0RCTn0gY29tZSBmcm9tCisrdHJ1c3RlZCBzb3Vy Y2VzLgorK0BlbmQgaXRlbWl6ZQorKworK09uIHRoZSBvdGhlciBoYW5kIHlvdSBjYW4gYWxzbyBl eHBsaWNpdGx5IGZvcmJpZCBhdXRvbWF0aWMgZmlsZXMgbG9hZGluZyB3aGljaAorK2Fsc28gc3Vw cHJlc3NlcyBhbnkgc3VjaCB3YXJuaW5nIG1lc3NhZ2VzOgorKworK0BpdGVtaXplIEBidWxsZXQK KytAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBbQGRvdHN7fV19CisrWW91 IGNhbiB1c2UgQHZhbHVle0dEQk59IGNvbW1hbmQtbGluZSBvcHRpb24gZm9yIGEgc2luZ2xlIEB2 YWx1ZXtHREJOfSBzZXNzaW9uLgorKworK0BpdGVtIEBzYW1we34vLmdkYmluaXR9OiBAc2FtcHtz ZXQgYXV0by1sb2FkIG5vfQorK0Rpc2FibGUgYXV0by1sb2FkaW5nIGdsb2JhbGx5IGZvciB0aGUg dXNlcgorKyhAcHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBXaGlsZSBpdCBpcyBp bXByb2JhYmxlLCB5b3UgY291bGQgYWxzbworK3VzZSBzeXN0ZW0gaW5pdCBmaWxlIGluc3RlYWQg KEBweHJlZntTeXN0ZW0td2lkZSBjb25maWd1cmF0aW9ufSkuCisrQGVuZCBpdGVtaXplCisrCisr VGhpcyBzZXR0aW5nIGFwcGxpZXMgdG8gdGhlIGZpbGUgbmFtZXMgYXMgZW50ZXJlZCBieSB1c2Vy LiAgSWYgbm8gZW50cnkgbWF0Y2hlcworK0B2YWx1ZXtHREJOfSB0cmllcyBhcyBhIGxhc3QgcmVz b3J0IHRvIGFsc28gcmVzb2x2ZSBhbGwgdGhlIGZpbGUgbmFtZXMgaW50bworK3RoZWlyIGNhbm9u aWNhbCBmb3JtICh0eXBpY2FsbHkgcmVzb2x2aW5nIHN5bWJvbGljIGxpbmtzKSBhbmQgY29tcGFy ZSB0aGUKKytlbnRyaWVzIGFnYWluLiAgQHZhbHVle0dEQk59IGFscmVhZHkgY2Fub25pY2FsaXpl cyBtb3N0IG9mIHRoZSBmaWxlbmFtZXMgb24gaXRzCisrb3duIGJlZm9yZSBzdGFydGluZyB0aGUg Y29tcGFyaXNvbiBzbyBhIGNhbm9uaWNhbCBmb3JtIG9mIGRpcmVjdG9yaWVzIGlzCisrcmVjb21t ZW5kZWQgdG8gYmUgZW50ZXJlZC4KKysKKyBAbm9kZSBNZXNzYWdlcy9XYXJuaW5ncworIEBzZWN0 aW9uIE9wdGlvbmFsIFdhcm5pbmdzIGFuZCBNZXNzYWdlcworIAorQEAgLTI0OTU1LDEwICsyNTA2 MiwxMCBAQCBFeGFtcGxlOgorIAorIEBzbWFsbGV4YW1wbGUKKyAoZ2RiKSBpbmZvIGF1dG8tbG9h ZCBweXRob24tc2NyaXB0cworLUxvYWRlZCAgU2NyaXB0CistWWVzICAgICBweS1zZWN0aW9uLXNj cmlwdC5weQorLSAgICAgICAgZnVsbCBuYW1lOiAvdG1wL3B5LXNlY3Rpb24tc2NyaXB0LnB5Cist TWlzc2luZyBteS1mb28tcHJldHR5LXByaW50ZXJzLnB5CisrTG9hZGVkIFNjcmlwdAorK1llcyAg ICBweS1zZWN0aW9uLXNjcmlwdC5weQorKyAgICAgICBmdWxsIG5hbWU6IC90bXAvcHktc2VjdGlv bi1zY3JpcHQucHkKKytObyAgICAgbXktZm9vLXByZXR0eS1wcmludGVycy5weQorIEBlbmQgc21h bGxleGFtcGxlCisgQGVuZCB0YWJsZQorIAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L3B5dGhvbi9weS1hdXRvLWxvYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8t bG9hZC5jCTIwMTItMDQtMTggMDA6NDk6MjEuNjIxNzM1OTg1ICswMjAwCitAQCAtNzIsMTQgKzcy LDE5IEBAIHN0YXRpYyB2b2lkCisgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCisgCQkJCSAgICBjb25zdCBjaGFy ICpmaWxlbmFtZSkKKyB7CisrICBpbnQgaXNfc2FmZTsKKyAgIHN0cnVjdCBhdXRvX2xvYWRfcHNw YWNlX2luZm8gKnBzcGFjZV9pbmZvOworIAorKyAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2Fk X3NhZmUgKGZpbGVuYW1lKTsKKysKKyAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0 YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIgorICAgICAgY2FuIHBy aW50IGl0LiAgKi8KKyAgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9m b3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKKy0gIG1heWJlX2FkZF9zY3JpcHQg KHBzcGFjZV9pbmZvLCBmaWxlbmFtZSwgZmlsZW5hbWUsICZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9u KTsKKysgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBpc19zYWZlLCBmaWxlbmFtZSwg ZmlsZW5hbWUsCisrCQkgICAgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOworIAorLSAgc291cmNl X3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGZpbGUsIGZpbGVuYW1lKTsKKysg IGlmIChpc19zYWZlKQorKyAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2Jq ZmlsZSwgZmlsZSwgZmlsZW5hbWUpOworIH0KKyAKKyAvKiBMb2FkIHNjcmlwdHMgc3BlY2lmaWVk IGluIE9CSkZJTEUuCitAQCAtMTQ3LDYgKzE1Miw5IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMg KHN0cnVjdCBvYmpmaWxlICoKKyAJeworIAkgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7 CisgCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKKysKKysJICBpZiAoIWZpbGVf aXNfYXV0b19sb2FkX3NhZmUgKGZ1bGxfcGF0aCkpCisrCSAgICBvcGVuZWQgPSAwOworIAl9Cisg ICAgICAgZWxzZQorIAl7CitAQCAtMTY3LDcgKzE3NSw3IEBAIFVzZSBgaW5mbyBhdXRvLWxvYWQg cHl0aG9uIFtSRUdFWFBdJyB0bworIAorIAkgSVdCTiBpZiBjb21wbGFpbnRzLmMgd2VyZSBtb3Jl IGdlbmVyYWwtcHVycG9zZS4gICovCisgCistICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2Fk ZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLCBmdWxsX3BhdGgsCisrICAgICAgaW5faGFzaF90 YWJsZSA9IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBvcGVuZWQsIGZpbGUsIGZ1bGxf cGF0aCwKKyAJCQkJCSZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKKyAKKyAgICAgICAvKiBJZiB0 aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLworSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9iamZpbGUtc2Ny aXB0LmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDY6 NDcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDk6MjEuNjIx NzM1OTg1ICswMjAwCitAQCAtMzcsNiArMzcsNyBAQCBpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10g fSB7IGNvbnRpbnVlIH0KKyBzZXQgcmVtb3RlX3B5dGhvbl9maWxlIFtyZW1vdGVfZG93bmxvYWQg aG9zdCAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWdkYi5weS5pbiAke3N1YmRpcn0v JHt0ZXN0ZmlsZX0tZ2RiLnB5XQorIAorIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1 YmRpcgorK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggJHtyZW1v dGVfcHl0aG9uX2ZpbGV9IiAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiCisgZ2RiX2xvYWQgJHti aW5maWxlfQorIAorICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlw dC5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ2OjQ3 LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYyMTcz NTk4NSArMDIwMAorQEAgLTQ5LDYgKzQ5LDcgQEAgaWYgeyBbc2tpcF9weXRob25fdGVzdHNdIH0g eyBjb250aW51ZSB9Cisgc2V0IHJlbW90ZV9weXRob25fZmlsZSBbcmVtb3RlX2Rvd25sb2FkIGhv c3QgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS5weV0KKyAKKyBnZGJfcmVpbml0aWFs aXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfdGVzdF9ub19vdXRwdXQgInNldCBhdXRvLWxv YWQgc2FmZS1wYXRoICR7cmVtb3RlX3B5dGhvbl9maWxlfSIgInNldCBhdXRvLWxvYWQgc2FmZS1w YXRoIgorIGdkYl9sb2FkICR7YmluZmlsZX0KKyAKKyAjIFZlcmlmeSBnZGIgbG9hZGVkIHRoZSBz Y3JpcHQuCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTEyb2YxOC5wYXRjaCBiL2dkYi1hdXRv bG9hZC0xMm9mMTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MmJkYmMu LjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTEyb2YxOC5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDM1MiArMCwwIEBACi1bcGF0Y2gjNCA2LzhdIHNldCBkZWJ1ZyBhdXRvLWxvYWQKLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAwMDg5Lmh0bWwKLWh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxMTUuaHRtbAotCi0j IyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1NDoyOAkxLjE0MTE0Ci0jIyMgc3Jj L2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1NjoyMAkxLjE0MTE1Ci0jIyAtMSw1ICsxLDI3 IEBACi0gMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgotIAotKwlOZXcgb3B0aW9uICJzZXQgZGVidWcgYXV0by1sb2FkIi4KLSsJKiBORVdTOiBO ZXcgY29tbWFuZHMgInNldCBkZWJ1ZyBhdXRvLWxvYWQiIGFuZCAic2hvdyBkZWJ1ZyBhdXRvLWxv YWQiLgotKwkqIGF1dG8tbG9hZC5jIChkZWJ1Z19hdXRvX2xvYWQsIHNob3dfZGVidWdfYXV0b19s b2FkOiBOZXcuCi0rCShhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUpCi0rCShmaWxlbmFt ZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyk6IENhbGwgZnByaW50Zl91bmZpbHRlcmVk Ci0rCWlmIERFQlVHX0FVVE9fTE9BRC4KLSsJKGZpbGVfaXNfYXV0b19sb2FkX3NhZmUpOiBOZXcg cGFyYW1ldGVycyBkZWJ1Z19mbXQgYW5kIC4uLi4KLSsJQ2FsbCBmcHJpbnRmX3VuZmlsdGVyZWQg aWYgREVCVUdfQVVUT19MT0FELgotKwkoc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUpOiBF eHRlbmQgdGhlIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUKLSsJY2FsbGVyIGJ5IGV4cGxhbmF0b3J5 IHN0cmluZy4KLSsJKF9pbml0aWFsaXplX2F1dG9fbG9hZCk6IFJlZ2lzdGVyICJzZXQgZGVidWcg YXV0by1sb2FkIi4KLSsJKiBhdXRvLWxvYWQuaCAoZmlsZV9pc19hdXRvX2xvYWRfc2FmZSk6IE5l dyBwYXJhbWV0ZXJzIGRlYnVnX2ZtdAotKwlhbmQgLi4uLgotKwkqIGxpbnV4LXRocmVhZC1kYi5j ICh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyXzEpCi0rCSh0cnlfdGhyZWFkX2RiX2xvYWRf ZnJvbV9kaXIpOiBFeHRlbmQgdGhlIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgY2FsbGVyCi0rCWJ5 IGV4cGxhbmF0b3J5IHN0cmluZy4KLSsJKiBtYWluLmMgKGNhcHR1cmVkX21haW4pOiBMaWtld2lz ZS4KLSsJKiBweXRob24vcHktYXV0by1sb2FkLmMgKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9y X29iamZpbGUpCi0rCShzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogTGlrZXdpc2UuCi0rCi0rMjAx Mi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwot IAlOZXcgb3B0aW9uICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIuCi0gCSogTkVXUzogTmV3IGNv bW1hbmRzICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIKLSAJYW5kICJzaG93IGF1dG8tbG9hZCBz YWZlLXBhdGgiLgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0 OTozMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIw MTItMDQtMTggMDA6NTA6MTUuMDE4NjAwMjgyICswMjAwCi1AQCAtNzIsNiArNzIsMTAgQEAgc2hv dyBhdXRvLWxvYWQgc2FmZS1wYXRoCi0gICBTZXQgYSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20g d2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMuCi0gICBUaGUgZGVsaW1pdGVyICgn OicgYWJvdmUpIG1heSBkaWZmZXIgYWNjb3JkaW5nIHRvIHRoZSBob3N0IHBsYXRmb3JtLgotIAot K3NldCBkZWJ1ZyBhdXRvLWxvYWQgb258b2ZmCi0rc2hvdyBkZWJ1ZyBhdXRvLWxvYWQKLSsgIENv bnRyb2wgZGlzcGxheSBvZiBkZWJ1Z2dpbmcgaW5mbyBmb3IgYXV0by1sb2FkaW5nIHRoZSBmaWxl cyBhYm92ZS4KLSsKLSAqIE5ldyBjb21tYW5kIGxpbmUgb3B0aW9ucwotIAotIC0taW5pdC1jb21t YW5kPUZJTEUsIC1peCAgICAgICAgICBMaWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQK LUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAw MDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRv LWxvYWQuYwkyMDEyLTA0LTE4IDAwOjUwOjA0LjgwMTYyNjIzNSArMDIwMAotQEAgLTQzLDYgKzQz LDIwIEBACi0gc3RhdGljIHZvaWQgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotIAkJCQkJICAgY29uc3QgY2hhciAqZmls ZW5hbWUpOwotIAotKy8qIFZhbHVlIG9mIHRoZSAnc2V0IGRlYnVnIGF1dG8tbG9hZCcgY29uZmln dXJhdGlvbiB2YXJpYWJsZS4gICovCi0rc3RhdGljIGludCBkZWJ1Z19hdXRvX2xvYWQgPSAwOwot KwotKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgZGVidWdfYXV0b19sb2FkIGNvbmZpZ3VyYXRp b24gdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19kZWJ1Z19hdXRvX2xvYWQg KHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkgICAgICBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgZnByaW50Zl9maWx0 ZXJlZCAoZmlsZSwgXygiRGVidWdnaW5nIG91dHB1dCBmb3IgZmlsZXMgIgotKwkJCSAgICAib2Yg J3NldCBhdXRvLWxvYWQgLi4uJyBpcyAlcy5cbiIpLAotKwkJICAgIHZhbHVlKTsKLSt9Ci0rCi0g LyogVXNlci1zZXR0YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nIG9m IEdEQl9BVVRPX0ZJTEVfTkFNRQotICAgIHNjcmlwdHM6Ci0gICAgc2V0IGF1dG8tbG9hZCBnZGIt c2NyaXB0cyBvbnxvZmYKLUBAIC0xMTIsNiArMTI2LDExIEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhf dmVjX3VwZGF0ZSAodm9pZCkKLSAgIHVuc2lnbmVkIGxlbjsKLSAgIGludCBpeDsKLSAKLSsgIGlm IChkZWJ1Z19hdXRvX2xvYWQpCi0rICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywK LSsJCQlfKCJhdXRvLWxvYWQ6IFVwZGF0aW5nIGRpcmVjdG9yaWVzIG9mIFwiJXNcIi5cbiIpLAot KwkJCWF1dG9fbG9hZF9zYWZlX3BhdGgpOwotKwotICAgZnJlZV9jaGFyX3B0cl92ZWMgKGF1dG9f bG9hZF9zYWZlX3BhdGhfdmVjKTsKLSAKLSAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjID0gZGly bmFtZXNfdG9fY2hhcl9wdHJfdmVjIChhdXRvX2xvYWRfc2FmZV9wYXRoKTsKLUBAIC0xMjYsMTQg KzE0NSwzNCBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCi0gICAgICAg Y2hhciAqcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7Ci0gCi0gICAgICAgLyog RW5zdXJlIHRoZSBjdXJyZW50IGVudHJ5IGlzIGF0IGxlYXN0IHRpbGRlX2V4cGFuZC1lZC4gICov Ci0tICAgICAgeGZyZWUgKGRpcik7Ci0gICAgICAgVkVDX3JlcGxhY2UgKGNoYXJfcHRyLCBhdXRv X2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGV4cGFuZGVkKTsKLSAKLSsgICAgICBpZiAoZGVidWdf YXV0b19sb2FkKQotKwl7Ci0rCSAgaWYgKHN0cmNtcCAoZXhwYW5kZWQsIGRpcikgPT0gMCkKLSsJ ICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJXygiYXV0by1sb2FkOiBV c2luZyBkaXJlY3RvcnkgXCIlc1wiLlxuIiksCi0rCQkJCWV4cGFuZGVkKTsKLSsJICBlbHNlCi0r CSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCV8oImF1dG8tbG9hZDog UmVzb2x2ZWQgZGlyZWN0b3J5IFwiJXNcIiAiCi0rCQkJCSAgImFzIFwiJXNcIi5cbiIpLAotKwkJ CQlkaXIsIGV4cGFuZGVkKTsKLSsJfQotKyAgICAgIHhmcmVlIChkaXIpOwotKwotICAgICAgIC8q IElmIGdkYl9yZWFscGF0aCByZXR1cm5zIGEgZGlmZmVyZW50IGNvbnRlbnQsIGFwcGVuZCBpdC4g ICovCi0gICAgICAgaWYgKHN0cmNtcCAocmVhbF9wYXRoLCBleHBhbmRlZCkgPT0gMCkKLSAJeGZy ZWUgKHJlYWxfcGF0aCk7Ci0gICAgICAgZWxzZQotLQlWRUNfc2FmZV9wdXNoIChjaGFyX3B0ciwg YXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIHJlYWxfcGF0aCk7Ci0rCXsKLSsJICBWRUNfc2FmZV9w dXNoIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIHJlYWxfcGF0aCk7Ci0rCi0r CSAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywKLSsJCQkJXygiYXV0by1sb2FkOiBBbmQgY2Fub25pY2FsaXplZCBhcyBcIiVzXCIuXG4i KSwKLSsJCQkJcmVhbF9wYXRoKTsKLSsJfQotICAgICB9Ci0gfQotIAotQEAgLTIxNywxNiArMjU2 LDMwIEBAIGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjICgKLSAgIGlmIChk aXIgPT0gTlVMTCkKLSAgICAgewotICAgICAgIGlmICgqZmlsZW5hbWVfcmVhbHAgPT0gTlVMTCkK LS0JKmZpbGVuYW1lX3JlYWxwID0gZ2RiX3JlYWxwYXRoIChmaWxlbmFtZSk7Ci0rCXsKLSsJICAq ZmlsZW5hbWVfcmVhbHAgPSBnZGJfcmVhbHBhdGggKGZpbGVuYW1lKTsKLSsJICBpZiAoZGVidWdf YXV0b19sb2FkICYmIHN0cmNtcCAoKmZpbGVuYW1lX3JlYWxwLCBmaWxlbmFtZSkgIT0gMCkKLSsJ ICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJXygiYXV0by1sb2FkOiBS ZXNvbHZlZCAiCi0rCQkJCSAgImZpbGUgXCIlc1wiIGFzIFwiJXNcIi5cbiIpLAotKwkJCQlmaWxl bmFtZSwgKmZpbGVuYW1lX3JlYWxwKTsKLSsJfQotIAotLSAgICAgIGZvciAoaXggPSAwOyBWRUNf aXRlcmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGlyKTsKLS0J ICAgKytpeCkKLS0JaWYgKGZpbGVuYW1lX2lzX2luX2RpciAoKmZpbGVuYW1lX3JlYWxwLCBkaXIp KQotLQkgIGJyZWFrOwotKyAgICAgIGlmIChzdHJjbXAgKCpmaWxlbmFtZV9yZWFscCwgZmlsZW5h bWUpICE9IDApCi0rCWZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGlyKTsKLSsJICAgICArK2l4KQotKwkgIGlmIChmaWxlbmFt ZV9pc19pbl9kaXIgKCpmaWxlbmFtZV9yZWFscCwgZGlyKSkKLSsJICAgIGJyZWFrOwotICAgICB9 Ci0gCi0gICBpZiAoZGlyICE9IE5VTEwpCi0tICAgIHJldHVybiAxOwotKyAgICB7Ci0rICAgICAg aWYgKGRlYnVnX2F1dG9fbG9hZCkKLSsJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBf KCJhdXRvLWxvYWQ6IEZpbGUgXCIlc1wiIG1hdGNoZXMgIgotKwkJCQkJICAiZGlyZWN0b3J5IFwi JXNcIi5cbiIpLAotKwkJCSAgICBmaWxlbmFtZSwgZGlyKTsKLSsgICAgICByZXR1cm4gMTsKLSsg ICAgfQotIAotICAgcmV0dXJuIDA7Ci0gfQotQEAgLTI0MCwxMSArMjkzLDIwIEBAIGZpbGVuYW1l X2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjICgKLSAgICBkaXJlY3RvcnkuICAqLwotIAot IGludAotLWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK2Zp bGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpk ZWJ1Z19mbXQsIC4uLikKLSB7Ci0gICBjaGFyICpmaWxlbmFtZV9yZWFsID0gTlVMTDsKLSAgIHN0 cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotIAotKyAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLSsgICAg ewotKyAgICAgIHZhX2xpc3QgZGVidWdfYXJnczsKLSsKLSsgICAgICB2YV9zdGFydCAoZGVidWdf YXJncywgZGVidWdfZm10KTsKLSsgICAgICB2ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LCBkZWJ1Z19mbXQsIGRlYnVnX2FyZ3MpOwotKyAgICAgIHZhX2VuZCAoZGVidWdfYXJncyk7Ci0r ICAgIH0KLSsKLSAgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50 cywgJmZpbGVuYW1lX3JlYWwpOwotIAotICAgaWYgKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9z YWZlX3BhdGhfdmVjIChmaWxlbmFtZSwgJmZpbGVuYW1lX3JlYWwpKQotQEAgLTI4MSw3ICszNDMs MTAgQEAgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYgotICAgc3RydWN0 IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0gICB2b2xhdGlsZSBzdHJ1Y3Qg Z2RiX2V4Y2VwdGlvbiBlOwotIAotLSAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUg KGZpbGVuYW1lKTsKLSsgIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFt ZSwgXygiYXV0by1sb2FkOiBMb2FkaW5nIGNhbm5lZCAiCi0rCQkJCQkJInNlcXVlbmNlcyBvZiBj b21tYW5kcyBzY3JpcHQgIgotKwkJCQkJCSJcIiVzXCIgZm9yIG9iamZpbGUgXCIlc1wiLlxuIiks Ci0rCQkJCSAgICBmaWxlbmFtZSwgb2JqZmlsZS0+bmFtZSk7Ci0gCi0gICAvKiBBZGQgdGhpcyBz Y3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0 cyIKLSAgICAgIGNhbiBwcmludCBpdC4gICovCi1AQCAtOTc1LDQgKzEwNDAsMTMgQEAgU2VlIHRo ZSBjb21tYW5kcyAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdAotIGFjY2VzcyB0aGUgY3VycmVudCBm dWxsIGxpc3Qgc2V0dGluZy4iKSwKLSAJCSAmY21kbGlzdCk7Ci0gICBzZXRfY21kX2NvbXBsZXRl ciAoY21kLCBmaWxlbmFtZV9jb21wbGV0ZXIpOwotKwotKyAgYWRkX3NldHNob3dfYm9vbGVhbl9j bWQgKCJhdXRvLWxvYWQiLCBjbGFzc19tYWludGVuYW5jZSwKLSsJCQkgICAmZGVidWdfYXV0b19s b2FkLCBfKCJcCi0rU2V0IGF1dG8tbG9hZCB2ZXJpZmljYXRpb25zIGRlYnVnZ2luZy4iKSwgXygi XAotK1Nob3cgYXV0by1sb2FkIHZlcmlmaWNhdGlvbnMgZGVidWdnaW5nLiIpLCBfKCJcCi0rV2hl biBub24temVybywgZGVidWdnaW5nIG91dHB1dCBmb3IgZmlsZXMgb2YgJ3NldCBhdXRvLWxvYWQg Li4uJ1xuXAotK2lzIGRpc3BsYXllZC4iKSwKLSsJCQkgICAgTlVMTCwgc2hvd19kZWJ1Z19hdXRv X2xvYWQsCi0rCQkJICAgICZzZXRkZWJ1Z2xpc3QsICZzaG93ZGVidWdsaXN0KTsKLSB9Ci1JbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6NDk6 MjEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2Fk LmgJMjAxMi0wNC0xOCAwMDo1MDowNC44MDE2MjYyMzUgKzAyMDAKLUBAIC01NSw2ICs1NSw3IEBA IGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG8KLSBleHRlcm4gc3RydWN0 IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAodm9pZCk7Ci0g ZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX2luZm9fY21kbGlzdF9n ZXQgKHZvaWQpOwotIAotLWV4dGVybiBpbnQgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoY29uc3Qg Y2hhciAqZmlsZW5hbWUpOwotK2V4dGVybiBpbnQgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoY29u c3QgY2hhciAqZmlsZW5hbWUsCi0rCQkJCSAgIGNvbnN0IGNoYXIgKmRlYnVnX2ZtdCwgLi4uKTsK LSAKLSAjZW5kaWYgLyogQVVUT19MT0FEX0ggKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9saW51eC10aHJlYWQtZGIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC10aHJlYWQtZGIuYwky MDEyLTA0LTE4IDAwOjUwOjA0LjgwMTYyNjIzNSArMDIwMAotQEAgLTg2OSw3ICs4NjksOSBAQCB0 cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyXzEgKHN0cnVjdCBvCi0gICBnZGJfYXNzZXJ0IChj cCAhPSBOVUxMKTsKLSAgIHN0cmNweSAoY3AgKyAxLCBMSUJUSFJFQURfREJfU08pOwotIAotLSAg aWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRoKSkKLSsgIGlmICghZmlsZV9pc19hdXRv X2xvYWRfc2FmZSAocGF0aCwgXygiYXV0by1sb2FkOiBMb2FkaW5nIGxpYnRocmVhZC1kYiAiCi0r CQkJCSAgICAgICAibGlicmFyeSBcIiVzXCIgZnJvbSAkcGRpci5cbiIpLAotKwkJCSAgICAgICBw YXRoKSkKLSAgICAgcmVzdWx0ID0gMDsKLSAgIGVsc2UKLSAgICAgcmVzdWx0ID0gdHJ5X3RocmVh ZF9kYl9sb2FkIChwYXRoKTsKLUBAIC05MzksNyArOTQxLDEwIEBAIHRyeV90aHJlYWRfZGJfbG9h ZF9mcm9tX2RpciAoY29uc3QgY2hhcgotICAgcGF0aFtkaXJfbGVuXSA9ICcvJzsKLSAgIHN0cmNw eSAocGF0aCArIGRpcl9sZW4gKyAxLCBMSUJUSFJFQURfREJfU08pOwotIAotLSAgaWYgKCFmaWxl X2lzX2F1dG9fbG9hZF9zYWZlIChwYXRoKSkKLSsgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2Fm ZSAocGF0aCwgXygiYXV0by1sb2FkOiBMb2FkaW5nIGxpYnRocmVhZC1kYiAiCi0rCQkJCSAgICAg ICAibGlicmFyeSBcIiVzXCIgZnJvbSBleHBsaWNpdCAiCi0rCQkJCSAgICAgICAiZGlyZWN0b3J5 LlxuIiksCi0rCQkJICAgICAgIHBhdGgpKQotICAgICByZXN1bHQgPSAwOwotICAgZWxzZQotICAg ICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOwotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL21haW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NTA6MDQuODAxNjI2 MjM1ICswMjAwCi1AQCAtMTAyNyw3ICsxMDI3LDEwIEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRh dGEpCi0gICAgICAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPSBnZGJfcmVhbHBh dGggKGxvY2FsX2dkYmluaXQpOwotIAotICAgICAgIGlmICghaW5oaWJpdF9nZGJpbml0ICYmIGF1 dG9fbG9hZF9sb2NhbF9nZGJpbml0Ci0tCSAgJiYgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAobG9j YWxfZ2RiaW5pdCkpCi0rCSAgJiYgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAobG9jYWxfZ2RiaW5p dCwKLSsJCQkJICAgICBfKCJhdXRvLWxvYWQ6IExvYWRpbmcgLmdkYmluaXQgIgotKwkJCQkgICAg ICAgImZpbGUgXCIlc1wiLlxuIiksCi0rCQkJCSAgICAgbG9jYWxfZ2RiaW5pdCkpCi0gCXsKLSAJ ICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQgPSAxOwotIAotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDk6MjEu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTItMDQtMTggMDA6NTA6MDQuODA5NjI2MjE1ICswMjAwCi1AQCAtMjA4ODcsNiArMjA4 ODcsNyBAQCBUaGVzZSBhcmUgQHZhbHVle0dEQk59IGNvbnRyb2wgY29tbWFuZHMKLSAqIGxpYnRo cmVhZF9kYi5zby4xIGZpbGU6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8t bG9hZCBsaWJ0aHJlYWQtZGJ9Ci0gKiBvYmpmaWxlLWdkYi5nZGIgZmlsZTo6ICAgICAgICAgICAg ICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdH0KLSAqIEF1dG8tbG9h ZGluZyBzYWZlIHBhdGg6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9h ZCBzYWZlLXBhdGh9Ci0rKiBBdXRvLWxvYWRpbmcgdmVyYm9zZSBtb2RlOjogICAgICAgICAgQHNh bXB7c2V0L3Nob3cgZGVidWcgYXV0by1sb2FkfQotIEB4cmVme1B5dGhvbiBBdXRvLWxvYWRpbmd9 LgotIEBlbmQgbWVudQotIAotQEAgLTIxMDg1LDYgKzIxMDg2LDQ1IEBAIGVudHJpZXMgYWdhaW4u ICBAdmFsdWV7R0RCTn0gYWxyZWFkeSBjYW4KLSBvd24gYmVmb3JlIHN0YXJ0aW5nIHRoZSBjb21w YXJpc29uIHNvIGEgY2Fub25pY2FsIGZvcm0gb2YgZGlyZWN0b3JpZXMgaXMKLSByZWNvbW1lbmRl ZCB0byBiZSBlbnRlcmVkLgotIAotK0Bub2RlIEF1dG8tbG9hZGluZyB2ZXJib3NlIG1vZGUKLStA c3Vic2VjdGlvbiBEaXNwbGF5aW5nIGZpbGVzIHRyaWVkIGZvciBhdXRvLWxvYWQKLStAY2luZGV4 IGF1dG8tbG9hZGluZyB2ZXJib3NlIG1vZGUKLSsKLStGb3IgYmV0dGVyIHZpc2liaWxpdHkgb2Yg YWxsIHRoZSBmaWxlIGxvY2F0aW9ucyB3aGVyZSB5b3UgY2FuIHBsYWNlIHNjcmlwdHMgdG8KLSti ZSBhdXRvLWxvYWRlZCB3aXRoIGluZmVyaW9yIC0tLSBvciB0byBwcm90ZWN0IHlvdXJzZWxmIGFn YWluc3QgYWNjaWRlbnRhbAotK2V4ZWN1dGlvbiBvZiB1bnRydXN0ZWQgc2NyaXB0cyAtLS0gQHZh bHVle0dEQk59IHByb3ZpZGVzIGEgZmVhdHVyZSBmb3IgcHJpbnRpbmcKLSthbGwgdGhlIGZpbGVz IGF0dGVtcHRlZCB0byBiZSBsb2FkZWQuICBCb3RoIGV4aXN0aW5nIGFuZCBub24tZXhpc3Rpbmcg ZmlsZXMgbWF5Ci0rYmUgcHJpbnRlZC4KLSsKLStGb3IgZXhhbXBsZSB0aGUgbGlzdCBvZiBkaXJl Y3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCi0rKEBweHJl ZntBdXRvLWxvYWRpbmcgc2FmZSBwYXRofSkgYXBwbGllcyBhbHNvIHRvIGNhbm9uaWNhbGl6ZWQg ZmlsZW5hbWVzIHdoaWNoCi0rbWF5IG5vdCBiZSB0b28gb2J2aW91cyB3aGlsZSBzZXR0aW5nIGl0 IHVwLgotKwotK0BzbWFsbGV4YW1wbGUKLSsoZ2RiKSBzZXQgZGVidWcgYXV0by1sb2FkIHVlcwot KyhnZGIpIGZpbGUgfi9zcmMvdC90cnVlCi0rYXV0by1sb2FkOiBMb2FkaW5nIGNhbm5lZCBzZXF1 ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0ICIvdG1wL3RydWUtZ2RiLmdkYiIKLSsgICAgICAgICAg IGZvciBvYmpmaWxlICIvdG1wL3RydWUiLgotK2F1dG8tbG9hZDogVXBkYXRpbmcgZGlyZWN0b3Jp ZXMgb2YgIi91c3I6L29wdCIuCi0rYXV0by1sb2FkOiBVc2luZyBkaXJlY3RvcnkgIi91c3IiLgot K2F1dG8tbG9hZDogVXNpbmcgZGlyZWN0b3J5ICIvb3B0Ii4KLSt3YXJuaW5nOiBGaWxlICIvdG1w L3RydWUtZ2RiLmdkYiIgYXV0by1sb2FkaW5nIGhhcyBiZWVuIGRlY2xpbmVkCi0rICAgICAgICAg YnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIvdXNyOi9vcHQiLgotK0BlbmQg c21hbGxleGFtcGxlCi0rCi0rQHRhYmxlIEBjb2RlCi0rQGFuY2hvcntzZXQgZGVidWcgYXV0by1s b2FkfQotK0BraW5kZXggc2V0IGRlYnVnIGF1dG8tbG9hZAotK0BpdGVtIHNldCBkZWJ1ZyBhdXRv LWxvYWQgW29ufG9mZl0KLStTZXQgd2hldGhlciB0byBwcmludCB0aGUgZmlsZW5hbWVzIGF0dGVt cHRlZCB0byBiZSBhdXRvLWxvYWRlZC4KLSsKLStAYW5jaG9ye3Nob3cgZGVidWcgYXV0by1sb2Fk fQotK0BraW5kZXggc2hvdyBkZWJ1ZyBhdXRvLWxvYWQKLStAaXRlbSBzaG93IGRlYnVnIGF1dG8t bG9hZAotK1Nob3cgd2hldGhlciBwcmludGluZyBvZiB0aGUgZmlsZW5hbWVzIGF0dGVtcHRlZCB0 byBiZSBhdXRvLWxvYWRlZCBpcyB0dXJuZWQKLStvbiBvciBvZmYuCi0rQGVuZCB0YWJsZQotKwot IEBub2RlIE1lc3NhZ2VzL1dhcm5pbmdzCi0gQHNlY3Rpb24gT3B0aW9uYWwgV2FybmluZ3MgYW5k IE1lc3NhZ2VzCi0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1 dG8tbG9hZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9w eXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0w NC0xOCAwMDo1MDowNC44MTA2MjYyMTIgKzAyMDAKLUBAIC03NSw3ICs3NSwxMCBAQCBnZGJweV9s b2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Ci0gICBpbnQgaXNfc2FmZTsKLSAgIHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotIAotLSAgaXNfc2FmZSA9 IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1lKTsKLSsgIGlzX3NhZmUgPSBmaWxlX2lz X2F1dG9fbG9hZF9zYWZlIChmaWxlbmFtZSwKLSsJCQkJICAgIF8oImF1dG8tbG9hZDogTG9hZGlu ZyBQeXRob24gc2NyaXB0IFwiJXNcIiAiCi0rCQkJCSAgICAgICJieSBleHRlbnNpb24gZm9yIG9i amZpbGUgXCIlc1wiLlxuIiksCi0rCQkJCSAgICBmaWxlbmFtZSwgb2JqZmlsZS0+bmFtZSk7Ci0g Ci0gICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1 dG8tbG9hZCBweXRob24tc2NyaXB0cyIKLSAgICAgIGNhbiBwcmludCBpdC4gICovCi1AQCAtMTUz LDcgKzE1NiwxMiBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsZSAqCi0g CSAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFtKTsKLSAJICBtYWtlX2NsZWFudXAgKHhmcmVl LCBmdWxsX3BhdGgpOwotIAotLQkgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZnVsbF9w YXRoKSkKLSsJICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZ1bGxfcGF0aCwKLSsJCQkJ ICAgICAgIF8oImF1dG8tbG9hZDogTG9hZGluZyBQeXRob24gc2NyaXB0ICIKLSsJCQkJCSAiXCIl c1wiIGZyb20gc2VjdGlvbiBcIiVzXCIgb2YgIgotKwkJCQkJICJvYmpmaWxlIFwiJXNcIi5cbiIp LAotKwkJCQkgICAgICAgZnVsbF9wYXRoLCBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwKLSsJCQkJ ICAgICAgIG9iamZpbGUtPm5hbWUpKQotIAkgICAgb3BlbmVkID0gMDsKLSAJfQotICAgICAgIGVs c2UKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTJvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2Fk LTEyb2YyMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTJiZGJj Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTEyb2YyMi5wYXRjaApAQCAtMCwwICsx LDM1MiBAQAorW3BhdGNoIzQgNi84XSBzZXQgZGVidWcgYXV0by1sb2FkCitodHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cwMDA4OS5odG1sCitodHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTE1Lmh0bWwKKworIyMjIHNyYy9n ZGIvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NTQ6MjgJMS4xNDExNAorIyMjIHNyYy9nZGIvQ2hh bmdlTG9nCTIwMTIvMDQvMTcgMTU6NTY6MjAJMS4xNDExNQorIyMgLTEsNSArMSwyNyBAQAorIDIw MTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAK KysJTmV3IG9wdGlvbiAic2V0IGRlYnVnIGF1dG8tbG9hZCIuCisrCSogTkVXUzogTmV3IGNvbW1h bmRzICJzZXQgZGVidWcgYXV0by1sb2FkIiBhbmQgInNob3cgZGVidWcgYXV0by1sb2FkIi4KKysJ KiBhdXRvLWxvYWQuYyAoZGVidWdfYXV0b19sb2FkLCBzaG93X2RlYnVnX2F1dG9fbG9hZDogTmV3 LgorKwkoYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlKQorKwkoZmlsZW5hbWVfaXNfaW5f YXV0b19sb2FkX3NhZmVfcGF0aF92ZWMpOiBDYWxsIGZwcmludGZfdW5maWx0ZXJlZAorKwlpZiBE RUJVR19BVVRPX0xPQUQuCisrCShmaWxlX2lzX2F1dG9fbG9hZF9zYWZlKTogTmV3IHBhcmFtZXRl cnMgZGVidWdfZm10IGFuZCAuLi4uCisrCUNhbGwgZnByaW50Zl91bmZpbHRlcmVkIGlmIERFQlVH X0FVVE9fTE9BRC4KKysJKHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlKTogRXh0ZW5kIHRo ZSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlCisrCWNhbGxlciBieSBleHBsYW5hdG9yeSBzdHJpbmcu CisrCShfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBSZWdpc3RlciAic2V0IGRlYnVnIGF1dG8tbG9h ZCIuCisrCSogYXV0by1sb2FkLmggKGZpbGVfaXNfYXV0b19sb2FkX3NhZmUpOiBOZXcgcGFyYW1l dGVycyBkZWJ1Z19mbXQKKysJYW5kIC4uLi4KKysJKiBsaW51eC10aHJlYWQtZGIuYyAodHJ5X3Ro cmVhZF9kYl9sb2FkX2Zyb21fcGRpcl8xKQorKwkodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fZGly KTogRXh0ZW5kIHRoZSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIGNhbGxlcgorKwlieSBleHBsYW5h dG9yeSBzdHJpbmcuCisrCSogbWFpbi5jIChjYXB0dXJlZF9tYWluKTogTGlrZXdpc2UuCisrCSog cHl0aG9uL3B5LWF1dG8tbG9hZC5jIChnZGJweV9sb2FkX2F1dG9fc2NyaXB0X2Zvcl9vYmpmaWxl KQorKwkoc291cmNlX3NlY3Rpb25fc2NyaXB0cyk6IExpa2V3aXNlLgorKworKzIwMTItMDQtMTcg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKyAJTmV3IG9w dGlvbiAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiLgorIAkqIE5FV1M6IE5ldyBjb21tYW5kcyAi c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiCisgCWFuZCAic2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRo Ii4KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDk6MzMuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUwkyMDEyLTA0LTE4 IDAwOjUwOjE1LjAxODYwMDI4MiArMDIwMAorQEAgLTcyLDYgKzcyLDEwIEBAIHNob3cgYXV0by1s b2FkIHNhZmUtcGF0aAorICAgU2V0IGEgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0 IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLgorICAgVGhlIGRlbGltaXRlciAoJzonIGFib3Zl KSBtYXkgZGlmZmVyIGFjY29yZGluZyB0byB0aGUgaG9zdCBwbGF0Zm9ybS4KKyAKKytzZXQgZGVi dWcgYXV0by1sb2FkIG9ufG9mZgorK3Nob3cgZGVidWcgYXV0by1sb2FkCisrICBDb250cm9sIGRp c3BsYXkgb2YgZGVidWdnaW5nIGluZm8gZm9yIGF1dG8tbG9hZGluZyB0aGUgZmlsZXMgYWJvdmUu CisrCisgKiBOZXcgY29tbWFuZCBsaW5lIG9wdGlvbnMKKyAKKyAtLWluaXQtY29tbWFuZD1GSUxF LCAtaXggICAgICAgICAgTGlrZSAtLWNvbW1hbmQsIC14IGJ1dCBleGVjdXRlIGl0CitJbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDk6MjEu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMJ MjAxMi0wNC0xOCAwMDo1MDowNC44MDE2MjYyMzUgKzAyMDAKK0BAIC00Myw2ICs0MywyMCBAQAor IHN0YXRpYyB2b2lkIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKKyAJCQkJCSAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsK KyAKKysvKiBWYWx1ZSBvZiB0aGUgJ3NldCBkZWJ1ZyBhdXRvLWxvYWQnIGNvbmZpZ3VyYXRpb24g dmFyaWFibGUuICAqLworK3N0YXRpYyBpbnQgZGVidWdfYXV0b19sb2FkID0gMDsKKysKKysvKiAi c2hvdyIgY29tbWFuZCBmb3IgdGhlIGRlYnVnX2F1dG9fbG9hZCBjb25maWd1cmF0aW9uIHZhcmlh YmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Nob3dfZGVidWdfYXV0b19sb2FkIChzdHJ1Y3Qg dWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAorKwkJICAgICAgc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorK3sKKysgIGZwcmludGZfZmlsdGVyZWQgKGZp bGUsIF8oIkRlYnVnZ2luZyBvdXRwdXQgZm9yIGZpbGVzICIKKysJCQkgICAgIm9mICdzZXQgYXV0 by1sb2FkIC4uLicgaXMgJXMuXG4iKSwKKysJCSAgICB2YWx1ZSk7CisrfQorKworIC8qIFVzZXIt c2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8tbG9hZGluZyBvZiBHREJfQVVU T19GSUxFX05BTUUKKyAgICBzY3JpcHRzOgorICAgIHNldCBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMg b258b2ZmCitAQCAtMTEyLDYgKzEyNiwxMSBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRh dGUgKHZvaWQpCisgICB1bnNpZ25lZCBsZW47CisgICBpbnQgaXg7CisgCisrICBpZiAoZGVidWdf YXV0b19sb2FkKQorKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisrCQkJXygi YXV0by1sb2FkOiBVcGRhdGluZyBkaXJlY3RvcmllcyBvZiBcIiVzXCIuXG4iKSwKKysJCQlhdXRv X2xvYWRfc2FmZV9wYXRoKTsKKysKKyAgIGZyZWVfY2hhcl9wdHJfdmVjIChhdXRvX2xvYWRfc2Fm ZV9wYXRoX3ZlYyk7CisgCisgICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyA9IGRpcm5hbWVzX3Rv X2NoYXJfcHRyX3ZlYyAoYXV0b19sb2FkX3NhZmVfcGF0aCk7CitAQCAtMTI2LDE0ICsxNDUsMzQg QEAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2b2lkKQorICAgICAgIGNoYXIgKnJl YWxfcGF0aCA9IGdkYl9yZWFscGF0aCAoZXhwYW5kZWQpOworIAorICAgICAgIC8qIEVuc3VyZSB0 aGUgY3VycmVudCBlbnRyeSBpcyBhdCBsZWFzdCB0aWxkZV9leHBhbmQtZWQuICAqLworLSAgICAg IHhmcmVlIChkaXIpOworICAgICAgIFZFQ19yZXBsYWNlIChjaGFyX3B0ciwgYXV0b19sb2FkX3Nh ZmVfcGF0aF92ZWMsIGl4LCBleHBhbmRlZCk7CisgCisrICAgICAgaWYgKGRlYnVnX2F1dG9fbG9h ZCkKKysJeworKwkgIGlmIChzdHJjbXAgKGV4cGFuZGVkLCBkaXIpID09IDApCisrCSAgICBmcHJp bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisrCQkJCV8oImF1dG8tbG9hZDogVXNpbmcgZGly ZWN0b3J5IFwiJXNcIi5cbiIpLAorKwkJCQlleHBhbmRlZCk7CisrCSAgZWxzZQorKwkgICAgZnBy aW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorKwkJCQlfKCJhdXRvLWxvYWQ6IFJlc29sdmVk IGRpcmVjdG9yeSBcIiVzXCIgIgorKwkJCQkgICJhcyBcIiVzXCIuXG4iKSwKKysJCQkJZGlyLCBl eHBhbmRlZCk7CisrCX0KKysgICAgICB4ZnJlZSAoZGlyKTsKKysKKyAgICAgICAvKiBJZiBnZGJf cmVhbHBhdGggcmV0dXJucyBhIGRpZmZlcmVudCBjb250ZW50LCBhcHBlbmQgaXQuICAqLworICAg ICAgIGlmIChzdHJjbXAgKHJlYWxfcGF0aCwgZXhwYW5kZWQpID09IDApCisgCXhmcmVlIChyZWFs X3BhdGgpOworICAgICAgIGVsc2UKKy0JVkVDX3NhZmVfcHVzaCAoY2hhcl9wdHIsIGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjLCByZWFsX3BhdGgpOworKwl7CisrCSAgVkVDX3NhZmVfcHVzaCAoY2hh cl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCByZWFsX3BhdGgpOworKworKwkgIGlmIChk ZWJ1Z19hdXRvX2xvYWQpCisrCSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisr CQkJCV8oImF1dG8tbG9hZDogQW5kIGNhbm9uaWNhbGl6ZWQgYXMgXCIlc1wiLlxuIiksCisrCQkJ CXJlYWxfcGF0aCk7CisrCX0KKyAgICAgfQorIH0KKyAKK0BAIC0yMTcsMTYgKzI1NiwzMCBAQCBm aWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoCisgICBpZiAoZGlyID09IE5V TEwpCisgICAgIHsKKyAgICAgICBpZiAoKmZpbGVuYW1lX3JlYWxwID09IE5VTEwpCistCSpmaWxl bmFtZV9yZWFscCA9IGdkYl9yZWFscGF0aCAoZmlsZW5hbWUpOworKwl7CisrCSAgKmZpbGVuYW1l X3JlYWxwID0gZ2RiX3JlYWxwYXRoIChmaWxlbmFtZSk7CisrCSAgaWYgKGRlYnVnX2F1dG9fbG9h ZCAmJiBzdHJjbXAgKCpmaWxlbmFtZV9yZWFscCwgZmlsZW5hbWUpICE9IDApCisrCSAgICBmcHJp bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisrCQkJCV8oImF1dG8tbG9hZDogUmVzb2x2ZWQg IgorKwkJCQkgICJmaWxlIFwiJXNcIiBhcyBcIiVzXCIuXG4iKSwKKysJCQkJZmlsZW5hbWUsICpm aWxlbmFtZV9yZWFscCk7CisrCX0KKyAKKy0gICAgICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUg KGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgsIGRpcik7CistCSAgICsraXgp CistCWlmIChmaWxlbmFtZV9pc19pbl9kaXIgKCpmaWxlbmFtZV9yZWFscCwgZGlyKSkKKy0JICBi cmVhazsKKysgICAgICBpZiAoc3RyY21wICgqZmlsZW5hbWVfcmVhbHAsIGZpbGVuYW1lKSAhPSAw KQorKwlmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9w YXRoX3ZlYywgaXgsIGRpcik7CisrCSAgICAgKytpeCkKKysJICBpZiAoZmlsZW5hbWVfaXNfaW5f ZGlyICgqZmlsZW5hbWVfcmVhbHAsIGRpcikpCisrCSAgICBicmVhazsKKyAgICAgfQorIAorICAg aWYgKGRpciAhPSBOVUxMKQorLSAgICByZXR1cm4gMTsKKysgICAgeworKyAgICAgIGlmIChkZWJ1 Z19hdXRvX2xvYWQpCisrCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgXygiYXV0by1s b2FkOiBGaWxlIFwiJXNcIiBtYXRjaGVzICIKKysJCQkJCSAgImRpcmVjdG9yeSBcIiVzXCIuXG4i KSwKKysJCQkgICAgZmlsZW5hbWUsIGRpcik7CisrICAgICAgcmV0dXJuIDE7CisrICAgIH0KKyAK KyAgIHJldHVybiAwOworIH0KK0BAIC0yNDAsMTEgKzI5MywyMCBAQCBmaWxlbmFtZV9pc19pbl9h dXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoCisgICAgZGlyZWN0b3J5LiAgKi8KKyAKKyBpbnQKKy1m aWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpmaWxlbmFtZSkKKytmaWxlX2lzX2F1 dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqZGVidWdfZm10 LCAuLi4pCisgeworICAgY2hhciAqZmlsZW5hbWVfcmVhbCA9IE5VTEw7CisgICBzdHJ1Y3QgY2xl YW51cCAqYmFja190bzsKKyAKKysgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCisrICAgIHsKKysgICAg ICB2YV9saXN0IGRlYnVnX2FyZ3M7CisrCisrICAgICAgdmFfc3RhcnQgKGRlYnVnX2FyZ3MsIGRl YnVnX2ZtdCk7CisrICAgICAgdmZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgZGVidWdf Zm10LCBkZWJ1Z19hcmdzKTsKKysgICAgICB2YV9lbmQgKGRlYnVnX2FyZ3MpOworKyAgICB9Cisr CisgICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRfY29udGVudHMsICZmaWxl bmFtZV9yZWFsKTsKKyAKKyAgIGlmIChmaWxlbmFtZV9pc19pbl9hdXRvX2xvYWRfc2FmZV9wYXRo X3ZlYyAoZmlsZW5hbWUsICZmaWxlbmFtZV9yZWFsKSkKK0BAIC0yODEsNyArMzQzLDEwIEBAIHNv dXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2IKKyAgIHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworICAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNl cHRpb24gZTsKKyAKKy0gIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFt ZSk7CisrICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZmlsZW5hbWUsIF8oImF1 dG8tbG9hZDogTG9hZGluZyBjYW5uZWQgIgorKwkJCQkJCSJzZXF1ZW5jZXMgb2YgY29tbWFuZHMg c2NyaXB0ICIKKysJCQkJCQkiXCIlc1wiIGZvciBvYmpmaWxlIFwiJXNcIi5cbiIpLAorKwkJCQkg ICAgZmlsZW5hbWUsIG9iamZpbGUtPm5hbWUpOworIAorICAgLyogQWRkIHRoaXMgc2NyaXB0IHRv IHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiCisgICAg ICBjYW4gcHJpbnQgaXQuICAqLworQEAgLTk3NSw0ICsxMDQwLDEzIEBAIFNlZSB0aGUgY29tbWFu ZHMgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXQKKyBhY2Nlc3MgdGhlIGN1cnJlbnQgZnVsbCBsaXN0 IHNldHRpbmcuIiksCisgCQkgJmNtZGxpc3QpOworICAgc2V0X2NtZF9jb21wbGV0ZXIgKGNtZCwg ZmlsZW5hbWVfY29tcGxldGVyKTsKKysKKysgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgiYXV0 by1sb2FkIiwgY2xhc3NfbWFpbnRlbmFuY2UsCisrCQkJICAgJmRlYnVnX2F1dG9fbG9hZCwgXygi XAorK1NldCBhdXRvLWxvYWQgdmVyaWZpY2F0aW9ucyBkZWJ1Z2dpbmcuIiksIF8oIlwKKytTaG93 IGF1dG8tbG9hZCB2ZXJpZmljYXRpb25zIGRlYnVnZ2luZy4iKSwgXygiXAorK1doZW4gbm9uLXpl cm8sIGRlYnVnZ2luZyBvdXRwdXQgZm9yIGZpbGVzIG9mICdzZXQgYXV0by1sb2FkIC4uLidcblwK KytpcyBkaXNwbGF5ZWQuIiksCisrCQkJICAgIE5VTEwsIHNob3dfZGVidWdfYXV0b19sb2FkLAor KwkJCSAgICAmc2V0ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7CisgfQorSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41 MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCTIwMTIt MDQtMTggMDA6NTA6MDQuODAxNjI2MjM1ICswMjAwCitAQCAtNTUsNiArNTUsNyBAQCBleHRlcm4g c3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKiphdXRvX2xvCisgZXh0ZXJuIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICoqYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKHZvaWQpOworIGV4dGVybiBz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICh2b2lk KTsKKyAKKy1leHRlcm4gaW50IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZp bGVuYW1lKTsKKytleHRlcm4gaW50IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIg KmZpbGVuYW1lLAorKwkJCQkgICBjb25zdCBjaGFyICpkZWJ1Z19mbXQsIC4uLik7CisgCisgI2Vu ZGlmIC8qIEFVVE9fTE9BRF9IICovCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGlu dXgtdGhyZWFkLWRiLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAxMi0wNC0x OCAwMDo1MDowNC44MDE2MjYyMzUgKzAyMDAKK0BAIC04NjksNyArODY5LDkgQEAgdHJ5X3RocmVh ZF9kYl9sb2FkX2Zyb21fcGRpcl8xIChzdHJ1Y3QgbworICAgZ2RiX2Fzc2VydCAoY3AgIT0gTlVM TCk7CisgICBzdHJjcHkgKGNwICsgMSwgTElCVEhSRUFEX0RCX1NPKTsKKyAKKy0gIGlmICghZmls ZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0aCkpCisrICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3Nh ZmUgKHBhdGgsIF8oImF1dG8tbG9hZDogTG9hZGluZyBsaWJ0aHJlYWQtZGIgIgorKwkJCQkgICAg ICAgImxpYnJhcnkgXCIlc1wiIGZyb20gJHBkaXIuXG4iKSwKKysJCQkgICAgICAgcGF0aCkpCisg ICAgIHJlc3VsdCA9IDA7CisgICBlbHNlCisgICAgIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJfbG9h ZCAocGF0aCk7CitAQCAtOTM5LDcgKzk0MSwxMCBAQCB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9k aXIgKGNvbnN0IGNoYXIKKyAgIHBhdGhbZGlyX2xlbl0gPSAnLyc7CisgICBzdHJjcHkgKHBhdGgg KyBkaXJfbGVuICsgMSwgTElCVEhSRUFEX0RCX1NPKTsKKyAKKy0gIGlmICghZmlsZV9pc19hdXRv X2xvYWRfc2FmZSAocGF0aCkpCisrICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgs IF8oImF1dG8tbG9hZDogTG9hZGluZyBsaWJ0aHJlYWQtZGIgIgorKwkJCQkgICAgICAgImxpYnJh cnkgXCIlc1wiIGZyb20gZXhwbGljaXQgIgorKwkJCQkgICAgICAgImRpcmVjdG9yeS5cbiIpLAor KwkJCSAgICAgICBwYXRoKSkKKyAgICAgcmVzdWx0ID0gMDsKKyAgIGVsc2UKKyAgICAgcmVzdWx0 ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9tYWluLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L21haW4uYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjUwOjA0LjgwMTYyNjIzNSArMDIw MAorQEAgLTEwMjcsNyArMTAyNywxMCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorICAg ICAgIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lID0gZ2RiX3JlYWxwYXRoIChsb2Nh bF9nZGJpbml0KTsKKyAKKyAgICAgICBpZiAoIWluaGliaXRfZ2RiaW5pdCAmJiBhdXRvX2xvYWRf bG9jYWxfZ2RiaW5pdAorLQkgICYmIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGxvY2FsX2dkYmlu aXQpKQorKwkgICYmIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGxvY2FsX2dkYmluaXQsCisrCQkJ CSAgICAgXygiYXV0by1sb2FkOiBMb2FkaW5nIC5nZGJpbml0ICIKKysJCQkJICAgICAgICJmaWxl IFwiJXNcIi5cbiIpLAorKwkJCQkgICAgIGxvY2FsX2dkYmluaXQpKQorIAl7CisgCSAgYXV0b19s b2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkID0gMTsKKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9kb2MvZ2RiLnRleGluZm8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIw MTIwLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEy LTA0LTE4IDAwOjUwOjA0LjgwOTYyNjIxNSArMDIwMAorQEAgLTIwODg3LDYgKzIwODg3LDcgQEAg VGhlc2UgYXJlIEB2YWx1ZXtHREJOfSBjb250cm9sIGNvbW1hbmRzCisgKiBsaWJ0aHJlYWRfZGIu c28uMSBmaWxlOjogICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgbGli dGhyZWFkLWRifQorICogb2JqZmlsZS1nZGIuZ2RiIGZpbGU6OiAgICAgICAgICAgICAgIEBzYW1w e3NldC9zaG93L2luZm8gYXV0by1sb2FkIGdkYi1zY3JpcHR9CisgKiBBdXRvLWxvYWRpbmcgc2Fm ZSBwYXRoOjogICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgc2FmZS1w YXRofQorKyogQXV0by1sb2FkaW5nIHZlcmJvc2UgbW9kZTo6ICAgICAgICAgIEBzYW1we3NldC9z aG93IGRlYnVnIGF1dG8tbG9hZH0KKyBAeHJlZntQeXRob24gQXV0by1sb2FkaW5nfS4KKyBAZW5k IG1lbnUKKyAKK0BAIC0yMTA4NSw2ICsyMTA4Niw0NSBAQCBlbnRyaWVzIGFnYWluLiAgQHZhbHVl e0dEQk59IGFscmVhZHkgY2FuCisgb3duIGJlZm9yZSBzdGFydGluZyB0aGUgY29tcGFyaXNvbiBz byBhIGNhbm9uaWNhbCBmb3JtIG9mIGRpcmVjdG9yaWVzIGlzCisgcmVjb21tZW5kZWQgdG8gYmUg ZW50ZXJlZC4KKyAKKytAbm9kZSBBdXRvLWxvYWRpbmcgdmVyYm9zZSBtb2RlCisrQHN1YnNlY3Rp b24gRGlzcGxheWluZyBmaWxlcyB0cmllZCBmb3IgYXV0by1sb2FkCisrQGNpbmRleCBhdXRvLWxv YWRpbmcgdmVyYm9zZSBtb2RlCisrCisrRm9yIGJldHRlciB2aXNpYmlsaXR5IG9mIGFsbCB0aGUg ZmlsZSBsb2NhdGlvbnMgd2hlcmUgeW91IGNhbiBwbGFjZSBzY3JpcHRzIHRvCisrYmUgYXV0by1s b2FkZWQgd2l0aCBpbmZlcmlvciAtLS0gb3IgdG8gcHJvdGVjdCB5b3Vyc2VsZiBhZ2FpbnN0IGFj Y2lkZW50YWwKKytleGVjdXRpb24gb2YgdW50cnVzdGVkIHNjcmlwdHMgLS0tIEB2YWx1ZXtHREJO fSBwcm92aWRlcyBhIGZlYXR1cmUgZm9yIHByaW50aW5nCisrYWxsIHRoZSBmaWxlcyBhdHRlbXB0 ZWQgdG8gYmUgbG9hZGVkLiAgQm90aCBleGlzdGluZyBhbmQgbm9uLWV4aXN0aW5nIGZpbGVzIG1h eQorK2JlIHByaW50ZWQuCisrCisrRm9yIGV4YW1wbGUgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMg ZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcworKyhAcHhyZWZ7QXV0by1s b2FkaW5nIHNhZmUgcGF0aH0pIGFwcGxpZXMgYWxzbyB0byBjYW5vbmljYWxpemVkIGZpbGVuYW1l cyB3aGljaAorK21heSBub3QgYmUgdG9vIG9idmlvdXMgd2hpbGUgc2V0dGluZyBpdCB1cC4KKysK KytAc21hbGxleGFtcGxlCisrKGdkYikgc2V0IGRlYnVnIGF1dG8tbG9hZCB1ZXMKKysoZ2RiKSBm aWxlIH4vc3JjL3QvdHJ1ZQorK2F1dG8tbG9hZDogTG9hZGluZyBjYW5uZWQgc2VxdWVuY2VzIG9m IGNvbW1hbmRzIHNjcmlwdCAiL3RtcC90cnVlLWdkYi5nZGIiCisrICAgICAgICAgICBmb3Igb2Jq ZmlsZSAiL3RtcC90cnVlIi4KKythdXRvLWxvYWQ6IFVwZGF0aW5nIGRpcmVjdG9yaWVzIG9mICIv dXNyOi9vcHQiLgorK2F1dG8tbG9hZDogVXNpbmcgZGlyZWN0b3J5ICIvdXNyIi4KKythdXRvLWxv YWQ6IFVzaW5nIGRpcmVjdG9yeSAiL29wdCIuCisrd2FybmluZzogRmlsZSAiL3RtcC90cnVlLWdk Yi5nZGIiIGF1dG8tbG9hZGluZyBoYXMgYmVlbiBkZWNsaW5lZAorKyAgICAgICAgIGJ5IHlvdXIg YGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byAiL3Vzcjovb3B0Ii4KKytAZW5kIHNtYWxsZXhh bXBsZQorKworK0B0YWJsZSBAY29kZQorK0BhbmNob3J7c2V0IGRlYnVnIGF1dG8tbG9hZH0KKytA a2luZGV4IHNldCBkZWJ1ZyBhdXRvLWxvYWQKKytAaXRlbSBzZXQgZGVidWcgYXV0by1sb2FkIFtv bnxvZmZdCisrU2V0IHdoZXRoZXIgdG8gcHJpbnQgdGhlIGZpbGVuYW1lcyBhdHRlbXB0ZWQgdG8g YmUgYXV0by1sb2FkZWQuCisrCisrQGFuY2hvcntzaG93IGRlYnVnIGF1dG8tbG9hZH0KKytAa2lu ZGV4IHNob3cgZGVidWcgYXV0by1sb2FkCisrQGl0ZW0gc2hvdyBkZWJ1ZyBhdXRvLWxvYWQKKytT aG93IHdoZXRoZXIgcHJpbnRpbmcgb2YgdGhlIGZpbGVuYW1lcyBhdHRlbXB0ZWQgdG8gYmUgYXV0 by1sb2FkZWQgaXMgdHVybmVkCisrb24gb3Igb2ZmLgorK0BlbmQgdGFibGUKKysKKyBAbm9kZSBN ZXNzYWdlcy9XYXJuaW5ncworIEBzZWN0aW9uIE9wdGlvbmFsIFdhcm5pbmdzIGFuZCBNZXNzYWdl cworIAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQu YworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5 LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6 NTA6MDQuODEwNjI2MjEyICswMjAwCitAQCAtNzUsNyArNzUsMTAgQEAgZ2RicHlfbG9hZF9hdXRv X3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydQorICAgaW50IGlzX3NhZmU7CisgICBzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKKyAKKy0gIGlzX3NhZmUgPSBmaWxlX2lz X2F1dG9fbG9hZF9zYWZlIChmaWxlbmFtZSk7CisrICBpc19zYWZlID0gZmlsZV9pc19hdXRvX2xv YWRfc2FmZSAoZmlsZW5hbWUsCisrCQkJCSAgICBfKCJhdXRvLWxvYWQ6IExvYWRpbmcgUHl0aG9u IHNjcmlwdCBcIiVzXCIgIgorKwkJCQkgICAgICAiYnkgZXh0ZW5zaW9uIGZvciBvYmpmaWxlIFwi JXNcIi5cbiIpLAorKwkJCQkgICAgZmlsZW5hbWUsIG9iamZpbGUtPm5hbWUpOworIAorICAgLyog QWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQg cHl0aG9uLXNjcmlwdHMiCisgICAgICBjYW4gcHJpbnQgaXQuICAqLworQEAgLTE1Myw3ICsxNTYs MTIgQEAgc291cmNlX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbGUgKgorIAkgIG1ha2Vf Y2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7CisgCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9w YXRoKTsKKyAKKy0JICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZ1bGxfcGF0aCkpCisr CSAgaWYgKCFmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmdWxsX3BhdGgsCisrCQkJCSAgICAgICBf KCJhdXRvLWxvYWQ6IExvYWRpbmcgUHl0aG9uIHNjcmlwdCAiCisrCQkJCQkgIlwiJXNcIiBmcm9t IHNlY3Rpb24gXCIlc1wiIG9mICIKKysJCQkJCSAib2JqZmlsZSBcIiVzXCIuXG4iKSwKKysJCQkJ ICAgICAgIGZ1bGxfcGF0aCwgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUsCisrCQkJCSAgICAgICBv YmpmaWxlLT5uYW1lKSkKKyAJICAgIG9wZW5lZCA9IDA7CisgCX0KKyAgICAgICBlbHNlCgpkaWZm IC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTEzb2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xM29mMTgu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2ZWExNTMuLjAwMDAwMDAKLS0t IGEvZ2RiLWF1dG9sb2FkLTEzb2YxOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAg QEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxMzAuaHRt bAotCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMTcgMTU6NTY6MjEJMS4xMjk3 Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMTggMDc6MDM6NTcJMS4xMjk4Ci0j IyAtMSwzICsxLDcgQEAKLSsyMDEyLTA0LTE4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyB2ZXJib3Nl IG1vZGUpOiBGaXggc21hbGxleGFtcGxlIHR5cG8uCi0rCi0gMjAxMi0wNC0xNyAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotIAlOZXcgb3B0aW9uICJzZXQg ZGVidWcgYXV0by1sb2FkIi4KLS0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzE3 IDE1OjU2OjIxCTEuOTQ0Ci0rKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNC8xOCAw NzowMzo1OAkxLjk0NQotQEAgLTIxMTkyLDcgKzIxMTkyLDcgQEAKLSBtYXkgbm90IGJlIHRvbyBv YnZpb3VzIHdoaWxlIHNldHRpbmcgaXQgdXAuCi0gCi0gQHNtYWxsZXhhbXBsZQotLShnZGIpIHNl dCBkZWJ1ZyBhdXRvLWxvYWQgdWVzCi0rKGdkYikgc2V0IGRlYnVnIGF1dG8tbG9hZCBvbgotIChn ZGIpIGZpbGUgfi9zcmMvdC90cnVlCi0gYXV0by1sb2FkOiBMb2FkaW5nIGNhbm5lZCBzZXF1ZW5j ZXMgb2YgY29tbWFuZHMgc2NyaXB0ICIvdG1wL3RydWUtZ2RiLmdkYiIKLSAgICAgICAgICAgIGZv ciBvYmpmaWxlICIvdG1wL3RydWUiLgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0xM29mMjIu cGF0Y2ggYi9nZGItYXV0b2xvYWQtMTNvZjIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjI2ZWExNTMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMTNv ZjIyLnBhdGNoCkBAIC0wLDAgKzEsMjMgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt Y3ZzLzIwMTItMDQvbXNnMDAxMzAuaHRtbAorCisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIw MTIvMDQvMTcgMTU6NTY6MjEJMS4xMjk3CisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIv MDQvMTggMDc6MDM6NTcJMS4xMjk4CisjIyAtMSwzICsxLDcgQEAKKysyMDEyLTA0LTE4ICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCSogZ2RiLnRleGlu Zm8gKEF1dG8tbG9hZGluZyB2ZXJib3NlIG1vZGUpOiBGaXggc21hbGxleGFtcGxlIHR5cG8uCisr CisgMjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgorIAorIAlOZXcgb3B0aW9uICJzZXQgZGVidWcgYXV0by1sb2FkIi4KKy0tLSBzcmMvZ2RiL2Rv Yy9nZGIudGV4aW5mbwkyMDEyLzA0LzE3IDE1OjU2OjIxCTEuOTQ0CisrKysgc3JjL2dkYi9kb2Mv Z2RiLnRleGluZm8JMjAxMi8wNC8xOCAwNzowMzo1OAkxLjk0NQorQEAgLTIxMTkyLDcgKzIxMTky LDcgQEAKKyBtYXkgbm90IGJlIHRvbyBvYnZpb3VzIHdoaWxlIHNldHRpbmcgaXQgdXAuCisgCisg QHNtYWxsZXhhbXBsZQorLShnZGIpIHNldCBkZWJ1ZyBhdXRvLWxvYWQgdWVzCisrKGdkYikgc2V0 IGRlYnVnIGF1dG8tbG9hZCBvbgorIChnZGIpIGZpbGUgfi9zcmMvdC90cnVlCisgYXV0by1sb2Fk OiBMb2FkaW5nIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0ICIvdG1wL3RydWUt Z2RiLmdkYiIKKyAgICAgICAgICAgIGZvciBvYmpmaWxlICIvdG1wL3RydWUiLgoKZGlmZiAtLWdp dCBhL2dkYi1hdXRvbG9hZC0xNG9mMTgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTRvZjE4LnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWNmZDBlLi4wMDAwMDAwCi0tLSBhL2dk Yi1hdXRvbG9hZC0xNG9mMTgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1o dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTc4Lmh0bWwKLQot IyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA0LzE4IDA3OjAzOjU3CTEuMTI5OAotIyMj IHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA0LzIyIDE1OjQ5OjIxCTEuMTI5OQotIyMgLTEs MyArMSw4IEBACi0rMjAxMi0wNC0yMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPgotKwotKwkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTog UmVwbGFjZSBAaXRlbWl6ZSBAYnVsbGV0Ci0rCWJ5IEB0YWJsZSBAYXNpcy4gIEZpeCBmb3JtYXR0 aW5nIG9mIG9uZSBpdGVtLgotKwotIDIwMTItMDQtMTggIEphbiBLcmF0b2NodmlsICA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSAJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHZl cmJvc2UgbW9kZSk6IEZpeCBzbWFsbGV4YW1wbGUgdHlwby4KLS0tLSBzcmMvZ2RiL2RvYy9nZGIu dGV4aW5mbwkyMDEyLzA0LzE4IDA3OjAzOjU4CTEuOTQ1Ci0rKysgc3JjL2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMi8wNC8yMiAxNTo0OToyMQkxLjk0NgotQEAgLTIxMTM2LDggKzIxMTM2LDggQEAK LSBUbyBmb3JjZSBAdmFsdWV7R0RCTn0gdG8gbG9hZCB0aGUgZmlsZXMgaXQgZGVjbGluZWQgdG8g bG9hZCBpbiB0aGUgcHJldmlvdXMKLSBleGFtcGxlLCB5b3UgY291bGQgdXNlIG9uZSBvZiB0aGUg Zm9sbG93aW5nIHdheXM6Ci0gCi0tQGl0ZW1pemUgQGJ1bGxldAotLUBpdGVtIH4vLmdkYmluaXQ6 IGFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIH4vc3JjL2dkYgotK0B0YWJsZSBAYXNpcwotK0BpdGVt IEBmaWxle34vLmdkYmluaXR9OiBAc2FtcHthZGQtYXV0by1sb2FkLXNhZmUtcGF0aCB+L3NyYy9n ZGJ9Ci0gU3BlY2lmeSB0aGlzIHRydXN0ZWQgZGlyZWN0b3J5IChvciBhIGZpbGUpIGFzIGFkZGl0 aW9uYWwgY29tcG9uZW50IG9mIHRoZSBsaXN0LgotIFlvdSBoYXZlIHRvIHNwZWNpZnkgYWxzbyBh bnkgZXhpc3RpbmcgZGlyZWN0b3JpZXMgZGlzcGxheWVkIGJ5Ci0gYnkgQHNhbXB7c2hvdyBhdXRv LWxvYWQgc2FmZS1wYXRofSAoc3VjaCBhcyBAc2FtcHsvdXNyOi9iaW59IGluIHRoaXMgZXhhbXBs ZSkuCi1AQCAtMjExNTUsMjAgKzIxMTU1LDIwIEBACi0gRHVyaW5nIGNvbXBpbGF0aW9uIG9mIEB2 YWx1ZXtHREJOfSB5b3UgbWF5IGRpc2FibGUgYW55IGF1dG8tbG9hZGluZyBzYWZldHkuCi0gVGhp cyBhc3N1bWVzIGFsbCB0aGUgZmlsZXMgeW91IHdpbGwgZXZlciBkZWJ1ZyB3aXRoIHRoaXMgQHZh bHVle0dEQk59IGNvbWUgZnJvbQotIHRydXN0ZWQgc291cmNlcy4KLS1AZW5kIGl0ZW1pemUKLStA ZW5kIHRhYmxlCi0gCi0gT24gdGhlIG90aGVyIGhhbmQgeW91IGNhbiBhbHNvIGV4cGxpY2l0bHkg Zm9yYmlkIGF1dG9tYXRpYyBmaWxlcyBsb2FkaW5nIHdoaWNoCi0gYWxzbyBzdXBwcmVzc2VzIGFu eSBzdWNoIHdhcm5pbmcgbWVzc2FnZXM6Ci0gCi0tQGl0ZW1pemUgQGJ1bGxldAotK0B0YWJsZSBA YXNpcwotIEBpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgbm8iIFtAZG90c3t9XX0K LSBZb3UgY2FuIHVzZSBAdmFsdWV7R0RCTn0gY29tbWFuZC1saW5lIG9wdGlvbiBmb3IgYSBzaW5n bGUgQHZhbHVle0dEQk59IHNlc3Npb24uCi0gCi0tQGl0ZW0gQHNhbXB7fi8uZ2RiaW5pdH06IEBz YW1we3NldCBhdXRvLWxvYWQgbm99Ci0rQGl0ZW0gQGZpbGV7fi8uZ2RiaW5pdH06IEBzYW1we3Nl dCBhdXRvLWxvYWQgbm99Ci0gRGlzYWJsZSBhdXRvLWxvYWRpbmcgZ2xvYmFsbHkgZm9yIHRoZSB1 c2VyCi0gKEBweHJlZntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9KS4gIFdoaWxlIGl0IGlzIGlt cHJvYmFibGUsIHlvdSBjb3VsZCBhbHNvCi0gdXNlIHN5c3RlbSBpbml0IGZpbGUgaW5zdGVhZCAo QHB4cmVme1N5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb259KS4KLS1AZW5kIGl0ZW1pemUKLStAZW5k IHRhYmxlCi0gCi0gVGhpcyBzZXR0aW5nIGFwcGxpZXMgdG8gdGhlIGZpbGUgbmFtZXMgYXMgZW50 ZXJlZCBieSB1c2VyLiAgSWYgbm8gZW50cnkgbWF0Y2hlcwotIEB2YWx1ZXtHREJOfSB0cmllcyBh cyBhIGxhc3QgcmVzb3J0IHRvIGFsc28gcmVzb2x2ZSBhbGwgdGhlIGZpbGUgbmFtZXMgaW50bwoK ZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0xNG9mMjIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTRv ZjIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhY2ZkMGUKLS0t IC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMTRvZjIyLnBhdGNoCkBAIC0wLDAgKzEsNTEg QEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxNzguaHRt bAorCisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMTggMDc6MDM6NTcJMS4xMjk4 CisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjIgMTU6NDk6MjEJMS4xMjk5Cisj IyAtMSwzICsxLDggQEAKKysyMDEyLTA0LTIyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+CisrCisrCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBh dGgpOiBSZXBsYWNlIEBpdGVtaXplIEBidWxsZXQKKysJYnkgQHRhYmxlIEBhc2lzLiAgRml4IGZv cm1hdHRpbmcgb2Ygb25lIGl0ZW0uCisrCisgMjAxMi0wNC0xOCAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIAorIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRp bmcgdmVyYm9zZSBtb2RlKTogRml4IHNtYWxsZXhhbXBsZSB0eXBvLgorLS0tIHNyYy9nZGIvZG9j L2dkYi50ZXhpbmZvCTIwMTIvMDQvMTggMDc6MDM6NTgJMS45NDUKKysrKyBzcmMvZ2RiL2RvYy9n ZGIudGV4aW5mbwkyMDEyLzA0LzIyIDE1OjQ5OjIxCTEuOTQ2CitAQCAtMjExMzYsOCArMjExMzYs OCBAQAorIFRvIGZvcmNlIEB2YWx1ZXtHREJOfSB0byBsb2FkIHRoZSBmaWxlcyBpdCBkZWNsaW5l ZCB0byBsb2FkIGluIHRoZSBwcmV2aW91cworIGV4YW1wbGUsIHlvdSBjb3VsZCB1c2Ugb25lIG9m IHRoZSBmb2xsb3dpbmcgd2F5czoKKyAKKy1AaXRlbWl6ZSBAYnVsbGV0CistQGl0ZW0gfi8uZ2Ri aW5pdDogYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGggfi9zcmMvZ2RiCisrQHRhYmxlIEBhc2lzCisr QGl0ZW0gQGZpbGV7fi8uZ2RiaW5pdH06IEBzYW1we2FkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIH4v c3JjL2dkYn0KKyBTcGVjaWZ5IHRoaXMgdHJ1c3RlZCBkaXJlY3RvcnkgKG9yIGEgZmlsZSkgYXMg YWRkaXRpb25hbCBjb21wb25lbnQgb2YgdGhlIGxpc3QuCisgWW91IGhhdmUgdG8gc3BlY2lmeSBh bHNvIGFueSBleGlzdGluZyBkaXJlY3RvcmllcyBkaXNwbGF5ZWQgYnkKKyBieSBAc2FtcHtzaG93 IGF1dG8tbG9hZCBzYWZlLXBhdGh9IChzdWNoIGFzIEBzYW1wey91c3I6L2Jpbn0gaW4gdGhpcyBl eGFtcGxlKS4KK0BAIC0yMTE1NSwyMCArMjExNTUsMjAgQEAKKyBEdXJpbmcgY29tcGlsYXRpb24g b2YgQHZhbHVle0dEQk59IHlvdSBtYXkgZGlzYWJsZSBhbnkgYXV0by1sb2FkaW5nIHNhZmV0eS4K KyBUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3Ugd2lsbCBldmVyIGRlYnVnIHdpdGggdGhp cyBAdmFsdWV7R0RCTn0gY29tZSBmcm9tCisgdHJ1c3RlZCBzb3VyY2VzLgorLUBlbmQgaXRlbWl6 ZQorK0BlbmQgdGFibGUKKyAKKyBPbiB0aGUgb3RoZXIgaGFuZCB5b3UgY2FuIGFsc28gZXhwbGlj aXRseSBmb3JiaWQgYXV0b21hdGljIGZpbGVzIGxvYWRpbmcgd2hpY2gKKyBhbHNvIHN1cHByZXNz ZXMgYW55IHN1Y2ggd2FybmluZyBtZXNzYWdlczoKKyAKKy1AaXRlbWl6ZSBAYnVsbGV0CisrQHRh YmxlIEBhc2lzCisgQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBubyIgW0Bkb3Rz e31dfQorIFlvdSBjYW4gdXNlIEB2YWx1ZXtHREJOfSBjb21tYW5kLWxpbmUgb3B0aW9uIGZvciBh IHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KKyAKKy1AaXRlbSBAc2FtcHt+Ly5nZGJpbml0 fTogQHNhbXB7c2V0IGF1dG8tbG9hZCBub30KKytAaXRlbSBAZmlsZXt+Ly5nZGJpbml0fTogQHNh bXB7c2V0IGF1dG8tbG9hZCBub30KKyBEaXNhYmxlIGF1dG8tbG9hZGluZyBnbG9iYWxseSBmb3Ig dGhlIHVzZXIKKyAoQHB4cmVme0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pLiAgV2hpbGUgaXQg aXMgaW1wcm9iYWJsZSwgeW91IGNvdWxkIGFsc28KKyB1c2Ugc3lzdGVtIGluaXQgZmlsZSBpbnN0 ZWFkIChAcHhyZWZ7U3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbn0pLgorLUBlbmQgaXRlbWl6ZQor K0BlbmQgdGFibGUKKyAKKyBUaGlzIHNldHRpbmcgYXBwbGllcyB0byB0aGUgZmlsZSBuYW1lcyBh cyBlbnRlcmVkIGJ5IHVzZXIuICBJZiBubyBlbnRyeSBtYXRjaGVzCisgQHZhbHVle0dEQk59IHRy aWVzIGFzIGEgbGFzdCByZXNvcnQgdG8gYWxzbyByZXNvbHZlIGFsbCB0aGUgZmlsZSBuYW1lcyBp bnRvCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTE1b2YxOC5wYXRjaCBiL2dkYi1hdXRvbG9h ZC0xNW9mMTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNTY4NDYuLjAw MDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTE1b2YxOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDM4ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNn MDAxODMuaHRtbAotCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjIgMTU6NDk6 MjEJMS4xMjk5Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjMgMTc6MjA6NTYJ MS4xMzAwCi0jIyAtMSwzICsxLDggQEAKLSsyMDEyLTA0LTIzICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGlu ZyBzYWZlIHBhdGgpOiBSZW1vdmUgdHJhaWxpbmcgW0Bkb3Rze31dLgotKwlUaHJlZSB0aW1lcy4K LSsKLSAyMDEyLTA0LTIyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+Ci0gCi0gCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBSZXBsYWNl IEBpdGVtaXplIEBidWxsZXQKLS0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzIy IDE1OjQ5OjIxCTEuOTQ2Ci0rKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNC8yMyAx NzoyMDo1NgkxLjk0NwotQEAgLTIxMTQyLDExICsyMTE0MiwxMSBAQAotIFlvdSBoYXZlIHRvIHNw ZWNpZnkgYWxzbyBhbnkgZXhpc3RpbmcgZGlyZWN0b3JpZXMgZGlzcGxheWVkIGJ5Ci0gYnkgQHNh bXB7c2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRofSAoc3VjaCBhcyBAc2FtcHsvdXNyOi9iaW59IGlu IHRoaXMgZXhhbXBsZSkuCi0gCi0tQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBz YWZlLXBhdGggL3VzcjovYmluOn4vc3JjL2dkYiIgW0Bkb3Rze31dfQotK0BpdGVtIEBrYmR7Z2Ri IC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+L3NyYy9nZGIifQotIFNw ZWNpZnkgdGhpcyBkaXJlY3RvcnkgYXMgaW4gdGhlIHByZXZpb3VzIGNhc2UgYnV0IGp1c3QgZm9y IGEgc2luZ2xlCi0gQHZhbHVle0dEQk59IHNlc3Npb24uCi0gCi0tQGl0ZW0gQGtiZHtnZGIgLWll eCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiIFtAZG90c3t9XX0KLStAaXRlbSBAa2Jke2dkYiAt aWV4ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCJ9Ci0gRGlzYWJsZSBhdXRvLWxvYWRpbmcgc2Fm ZXR5IGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KLSBUaGlzIGFzc3VtZXMgYWxs IHRoZSBmaWxlcyB5b3UgZGVidWcgZHVyaW5nIHRoaXMgQHZhbHVle0dEQk59IHNlc3Npb24gd2ls bCBjb21lCi0gZnJvbSB0cnVzdGVkIHNvdXJjZXMuCi1AQCAtMjExNjEsNyArMjExNjEsNyBAQAot IGFsc28gc3VwcHJlc3NlcyBhbnkgc3VjaCB3YXJuaW5nIG1lc3NhZ2VzOgotIAotIEB0YWJsZSBA YXNpcwotLUBpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgbm8iIFtAZG90c3t9XX0K LStAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIn0KLSBZb3UgY2FuIHVzZSBA dmFsdWV7R0RCTn0gY29tbWFuZC1saW5lIG9wdGlvbiBmb3IgYSBzaW5nbGUgQHZhbHVle0dEQk59 IHNlc3Npb24uCi0gCi0gQGl0ZW0gQGZpbGV7fi8uZ2RiaW5pdH06IEBzYW1we3NldCBhdXRvLWxv YWQgbm99CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTE1b2YyMi5wYXRjaCBiL2dkYi1hdXRv bG9hZC0xNW9mMjIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU1 Njg0NgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0xNW9mMjIucGF0Y2gKQEAgLTAs MCArMSwzOCBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cw MDE4My5odG1sCisKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8yMiAxNTo0OToy MQkxLjEyOTkKKyMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8yMyAxNzoyMDo1Ngkx LjEzMDAKKyMjIC0xLDMgKzEsOCBAQAorKzIwMTItMDQtMjMgIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKysJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5n IHNhZmUgcGF0aCk6IFJlbW92ZSB0cmFpbGluZyBbQGRvdHN7fV0uCisrCVRocmVlIHRpbWVzLgor KworIDIwMTItMDQtMjIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KKyAKKyAJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IFJlcGxhY2Ug QGl0ZW1pemUgQGJ1bGxldAorLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMjIg MTU6NDk6MjEJMS45NDYKKysrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzIzIDE3 OjIwOjU2CTEuOTQ3CitAQCAtMjExNDIsMTEgKzIxMTQyLDExIEBACisgWW91IGhhdmUgdG8gc3Bl Y2lmeSBhbHNvIGFueSBleGlzdGluZyBkaXJlY3RvcmllcyBkaXNwbGF5ZWQgYnkKKyBieSBAc2Ft cHtzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGh9IChzdWNoIGFzIEBzYW1wey91c3I6L2Jpbn0gaW4g dGhpcyBleGFtcGxlKS4KKyAKKy1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNh ZmUtcGF0aCAvdXNyOi9iaW46fi9zcmMvZ2RiIiBbQGRvdHN7fV19CisrQGl0ZW0gQGtiZHtnZGIg LWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggL3VzcjovYmluOn4vc3JjL2dkYiJ9CisgU3Bl Y2lmeSB0aGlzIGRpcmVjdG9yeSBhcyBpbiB0aGUgcHJldmlvdXMgY2FzZSBidXQganVzdCBmb3Ig YSBzaW5nbGUKKyBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KKyAKKy1AaXRlbSBAa2Jke2dkYiAtaWV4 ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIgW0Bkb3Rze31dfQorK0BpdGVtIEBrYmR7Z2RiIC1p ZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIn0KKyBEaXNhYmxlIGF1dG8tbG9hZGluZyBzYWZl dHkgZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgorIFRoaXMgYXNzdW1lcyBhbGwg dGhlIGZpbGVzIHlvdSBkZWJ1ZyBkdXJpbmcgdGhpcyBAdmFsdWV7R0RCTn0gc2Vzc2lvbiB3aWxs IGNvbWUKKyBmcm9tIHRydXN0ZWQgc291cmNlcy4KK0BAIC0yMTE2MSw3ICsyMTE2MSw3IEBACisg YWxzbyBzdXBwcmVzc2VzIGFueSBzdWNoIHdhcm5pbmcgbWVzc2FnZXM6CisgCisgQHRhYmxlIEBh c2lzCistQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBubyIgW0Bkb3Rze31dfQor K0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgbm8ifQorIFlvdSBjYW4gdXNlIEB2 YWx1ZXtHREJOfSBjb21tYW5kLWxpbmUgb3B0aW9uIGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0g c2Vzc2lvbi4KKyAKKyBAaXRlbSBAZmlsZXt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1dG8tbG9h ZCBub30KCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTZvZjE4LnBhdGNoIGIvZ2RiLWF1dG9s b2FkLTE2b2YxOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZhODhlNi4u MDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMTZvZjE4LnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMzkgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9t c2cwMDE4NC5odG1sCi0KLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8yMyAxNzoy MDo1NgkxLjEzMDAKLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8yMyAxNzoyNjow MAkxLjEzMDEKLSMjIC0zLDYgKzMsOSBAQAotIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcg c2FmZSBwYXRoKTogUmVtb3ZlIHRyYWlsaW5nIFtAZG90c3t9XS4KLSAJVGhyZWUgdGltZXMuCi0g Ci0rCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBBZGQgdHJhaWxpbmcg QGRvdHN7fS4KLSsJVGhyZWUgdGltZXMuCi0rCi0gMjAxMi0wNC0yMiAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxv YWRpbmcgc2FmZSBwYXRoKTogUmVwbGFjZSBAaXRlbWl6ZSBAYnVsbGV0Ci0tLS0gc3JjL2dkYi9k b2MvZ2RiLnRleGluZm8JMjAxMi8wNC8yMyAxNzoyMDo1NgkxLjk0NwotKysrIHNyYy9nZGIvZG9j L2dkYi50ZXhpbmZvCTIwMTIvMDQvMjMgMTc6MjY6MDEJMS45NDgKLUBAIC0yMTE0MiwxMSArMjEx NDIsMTEgQEAKLSBZb3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28gYW55IGV4aXN0aW5nIGRpcmVjdG9y aWVzIGRpc3BsYXllZCBieQotIGJ5IEBzYW1we3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0gKHN1 Y2ggYXMgQHNhbXB7L3VzcjovYmlufSBpbiB0aGlzIGV4YW1wbGUpLgotIAotLUBpdGVtIEBrYmR7 Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+L3NyYy9nZGIifQot K0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+ L3NyYy9nZGIiIEBkb3Rze319Ci0gU3BlY2lmeSB0aGlzIGRpcmVjdG9yeSBhcyBpbiB0aGUgcHJl dmlvdXMgY2FzZSBidXQganVzdCBmb3IgYSBzaW5nbGUKLSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4K LSAKLS1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCJ9Ci0rQGl0 ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiIEBkb3Rze319Ci0gRGlz YWJsZSBhdXRvLWxvYWRpbmcgc2FmZXR5IGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lv bi4KLSBUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3UgZGVidWcgZHVyaW5nIHRoaXMgQHZh bHVle0dEQk59IHNlc3Npb24gd2lsbCBjb21lCi0gZnJvbSB0cnVzdGVkIHNvdXJjZXMuCi1AQCAt MjExNjEsNyArMjExNjEsNyBAQAotIGFsc28gc3VwcHJlc3NlcyBhbnkgc3VjaCB3YXJuaW5nIG1l c3NhZ2VzOgotIAotIEB0YWJsZSBAYXNpcwotLUBpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRv LWxvYWQgbm8ifQotK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgbm8iIEBkb3Rz e319Ci0gWW91IGNhbiB1c2UgQHZhbHVle0dEQk59IGNvbW1hbmQtbGluZSBvcHRpb24gZm9yIGEg c2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgotIAotIEBpdGVtIEBmaWxle34vLmdkYmluaXR9 OiBAc2FtcHtzZXQgYXV0by1sb2FkIG5vfQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0xNm9m MjIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTZvZjIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmFmYTg4ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQt MTZvZjIyLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItY3ZzLzIwMTItMDQvbXNnMDAxODQuaHRtbAorCisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9n CTIwMTIvMDQvMjMgMTc6MjA6NTYJMS4xMzAwCisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIw MTIvMDQvMjMgMTc6MjY6MDAJMS4xMzAxCisjIyAtMyw2ICszLDkgQEAKKyAJKiBnZGIudGV4aW5m byAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IFJlbW92ZSB0cmFpbGluZyBbQGRvdHN7fV0uCisg CVRocmVlIHRpbWVzLgorIAorKwkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRo KTogQWRkIHRyYWlsaW5nIEBkb3Rze30uCisrCVRocmVlIHRpbWVzLgorKworIDIwMTItMDQtMjIg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAKKyAJKiBnZGIu dGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IFJlcGxhY2UgQGl0ZW1pemUgQGJ1bGxl dAorLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMjMgMTc6MjA6NTYJMS45NDcK KysrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzIzIDE3OjI2OjAxCTEuOTQ4CitA QCAtMjExNDIsMTEgKzIxMTQyLDExIEBACisgWW91IGhhdmUgdG8gc3BlY2lmeSBhbHNvIGFueSBl eGlzdGluZyBkaXJlY3RvcmllcyBkaXNwbGF5ZWQgYnkKKyBieSBAc2FtcHtzaG93IGF1dG8tbG9h ZCBzYWZlLXBhdGh9IChzdWNoIGFzIEBzYW1wey91c3I6L2Jpbn0gaW4gdGhpcyBleGFtcGxlKS4K KyAKKy1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAvdXNyOi9i aW46fi9zcmMvZ2RiIn0KKytAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNhZmUt cGF0aCAvdXNyOi9iaW46fi9zcmMvZ2RiIiBAZG90c3t9fQorIFNwZWNpZnkgdGhpcyBkaXJlY3Rv cnkgYXMgaW4gdGhlIHByZXZpb3VzIGNhc2UgYnV0IGp1c3QgZm9yIGEgc2luZ2xlCisgQHZhbHVl e0dEQk59IHNlc3Npb24uCisgCistQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBz YWZlLXBhdGgifQorK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRo IiBAZG90c3t9fQorIERpc2FibGUgYXV0by1sb2FkaW5nIHNhZmV0eSBmb3IgYSBzaW5nbGUgQHZh bHVle0dEQk59IHNlc3Npb24uCisgVGhpcyBhc3N1bWVzIGFsbCB0aGUgZmlsZXMgeW91IGRlYnVn IGR1cmluZyB0aGlzIEB2YWx1ZXtHREJOfSBzZXNzaW9uIHdpbGwgY29tZQorIGZyb20gdHJ1c3Rl ZCBzb3VyY2VzLgorQEAgLTIxMTYxLDcgKzIxMTYxLDcgQEAKKyBhbHNvIHN1cHByZXNzZXMgYW55 IHN1Y2ggd2FybmluZyBtZXNzYWdlczoKKyAKKyBAdGFibGUgQGFzaXMKKy1AaXRlbSBAa2Jke2dk YiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIn0KKytAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0 by1sb2FkIG5vIiBAZG90c3t9fQorIFlvdSBjYW4gdXNlIEB2YWx1ZXtHREJOfSBjb21tYW5kLWxp bmUgb3B0aW9uIGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KKyAKKyBAaXRlbSBA ZmlsZXt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1dG8tbG9hZCBub30KCmRpZmYgLS1naXQgYS9n ZGItYXV0b2xvYWQtMTdvZjE4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTE3b2YxOC5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjU0YWFmOS4uMDAwMDAwMAotLS0gYS9nZGItYXV0 b2xvYWQtMTdvZjE4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAwNzU2Lmh0bWwKLVN1 YmplY3Q6IFJlOiBbcGF0Y2hdIGF1dG8tbG9hZCBzYWZlLXBhdGggcmVzZXQgYmFjayBieSBzZXQg IiIKLSAtIFBhdGNoZWQgb3V0ICIod2l0aG91dCB0aGUgcXVvdGVzKSIuCi0KLU9uIFN1biwgMjIg QXByIDIwMTIgMjI6MTY6MzIgKzAyMDAsIEVsaSBaYXJldHNraWkgd3JvdGU6Ci0+ID4gK0BpdGVt IHNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIFtAdmFye2RpcmVjdG9yaWVzfV0KLT4gCi0+IFlvdSBu ZWVkIEBye30gYXJvdW5kIFsgYW5kIF0uCi0+IAotPiA+ICtTZXR0aW5nIHRoaXMgdmFyaWFibGUg dG8gQGNvZGV7Ii8ifSAod2l0aG91dCB0aGUgcXVvdGVzKSBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5 Ci0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eCi0+IFdoeSBub3QgQGZp bGV7L30/ICBUaGUgcXVvdGVzIGFyZSBub3QgbmVlZGVkIGluIGFueSBjYXNlLgotCi1kb25lLgot Ci0KLUluIGZhY3QgdGhpcyBwYXRjaCBpcyB1bnJlbGF0ZWQgdG8gdGhlIERvdWcncyBzdWdnZXN0 aW9uLCByZXBvc3RpbmcgaXQgb25seQotd2l0aCB0aGUgZG9jIHVwZGF0ZS4KLQotCi1UaGFua3Ms Ci1KYW4KLQotCi1nZGIvCi0yMDEyLTA0LTIzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0KLQkqIGF1dG8tbG9hZC5jIChzZXRfYXV0b19sb2FkX3NhZmVfcGF0 aCk6IFJlc2V0IEFVVE9fTE9BRF9TQUZFX1BBVEgKLQliYWNrIHRvIERFRkFVTFRfQVVUT19MT0FE X1NBRkVfUEFUSCBpZiBpdCBpcyBiZWluZyBzZXQgdG8gIiIuCi0JKHNob3dfYXV0b19sb2FkX3Nh ZmVfcGF0aCk6IENoZWNrIGFueS1kaXJlY3RvcnkgYnkgY29tcGFyaXNvbiB3aXRoICIvIi4KLQko YWRkX2F1dG9fbG9hZF9zYWZlX3BhdGgpOiBDaGFuZ2UgdGhlIGVycm9yIG1lc3NhZ2UuCi0JKF9p bml0aWFsaXplX2F1dG9fbG9hZCk6IENoYW5nZSB0aGUgInNhZmUtcGF0aCIgaGVscCB0ZXh0Lgot CSogY29uZmlndXJlOiBSZWdlbmVyYXRlCi0JKiBjb25maWd1cmUuYWMgKC0td2l0aG91dC1hdXRv LWxvYWQtc2FmZS1wYXRoKTogU2V0Ci0JV0lUSF9BVVRPX0xPQURfU0FGRV9QQVRIIHRvIC8uCi0K LWdkYi9kb2MvCi0yMDEyLTA0LTIzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+Ci0KLQkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogTWFr ZSAnZGlyZWN0b3JpZXMnCi0JZm9yICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgb3B0aW9uYWwu ICBNZW50aW9uIGlmIGl0IGlzIG9taXR0ZWQuCi0JQ2hhbmdlIGRpc2FibGluZyBzZWN1cml0eSBw cm90ZWN0aW9uIGNvbmRpdGlvbiB0byAiLyIsIHR3aWNlLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2F1 dG8tbG9hZC5jIGIvZ2RiL2F1dG8tbG9hZC5jCi1pbmRleCA5ZDE5MTc5Li42YzEzMDlmIDEwMDY0 NAotLS0tIGEvZ2RiL2F1dG8tbG9hZC5jCi0rKysgYi9nZGIvYXV0by1sb2FkLmMKLUBAIC0xODEs NiArMTgxLDEyIEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkKLSBzdGF0 aWMgdm9pZAotIHNldF9hdXRvX2xvYWRfc2FmZV9wYXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90 dHksIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjKQotIHsKLSsgIGlmIChhdXRvX2xvYWRfc2Fm ZV9wYXRoWzBdID09ICdcMCcpCi0rICAgIHsKLSsgICAgICB4ZnJlZSAoYXV0b19sb2FkX3NhZmVf cGF0aCk7Ci0rICAgICAgYXV0b19sb2FkX3NhZmVfcGF0aCA9IHhzdHJkdXAgKERFRkFVTFRfQVVU T19MT0FEX1NBRkVfUEFUSCk7Ci0rICAgIH0KLSsKLSAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVj X3VwZGF0ZSAoKTsKLSB9Ci0gCi1AQCAtMTkwLDcgKzE5Niw3IEBAIHN0YXRpYyB2b2lkCi0gc2hv d19hdXRvX2xvYWRfc2FmZV9wYXRoIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5 LAotIAkJCSAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQot IHsKLS0gIGlmICgqdmFsdWUgPT0gMCkKLSsgIGlmIChzdHJjbXAgKHZhbHVlLCAiLyIpID09IDAp Ci0gICAgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZCBmaWxlcyBhcmUgc2Fm ZSB0byBsb2FkIGZyb20gYW55ICIKLSAJCQkgICAgICAiZGlyZWN0b3J5LlxuIikpOwotICAgZWxz ZQotQEAgLTIwOSw4ICsyMTUsOSBAQCBhZGRfYXV0b19sb2FkX3NhZmVfcGF0aCAoY2hhciAqYXJn cywgaW50IGZyb21fdHR5KQotIAotICAgaWYgKGFyZ3MgPT0gTlVMTCB8fCAqYXJncyA9PSAwKQot ICAgICBlcnJvciAoXygiXAotLUFkZGluZyBlbXB0eSBkaXJlY3RvcnkgZWxlbWVudCBkaXNhYmxl cyB0aGUgYXV0by1sb2FkIHNhZmUtcGF0aCBzZWN1cml0eS4gIFwKLS1Vc2UgJ3NldCBhdXRvLWxv YWQgc2FmZS1wYXRoJyBpbnN0ZWFkIGlmIHlvdSBtZWFuIHRoYXQuIikpOwotK0RpcmVjdG9yeSBh cmd1bWVudCByZXF1aXJlZC5cblwKLStVc2UgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC8nIGZv ciBkaXNhYmxpbmcgdGhlIGF1dG8tbG9hZCBzYWZlLXBhdGggc2VjdXJpdHkuXAotKyIpKTsKLSAK LSAgIHMgPSB4c3RycHJpbnRmICgiJXMlYyVzIiwgYXV0b19sb2FkX3NhZmVfcGF0aCwgRElSTkFN RV9TRVBBUkFUT1IsIGFyZ3MpOwotICAgeGZyZWUgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOwotQEAg LTEwMjMsOCArMTAzMCwxMCBAQCBTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGlj aCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcy4iKSwgXygiXAotIFNob3cgdGhlIGxpc3Qg b2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcy4i KSwgXygiXAotIFZhcmlvdXMgZmlsZXMgbG9hZGVkIGF1dG9tYXRpY2FsbHkgZm9yIHRoZSAnc2V0 IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMgbXVzdFxuXAotIGJlIGxvY2F0ZWQgaW4gb25lIG9mIHRo ZSBkaXJlY3RvcmllcyBsaXN0ZWQgYnkgdGhpcyBvcHRpb24uICBXYXJuaW5nIHdpbGwgYmVcblwK LS1wcmludGVkIGFuZCBmaWxlIHdpbGwgbm90IGJlIHVzZWQgb3RoZXJ3aXNlLiAgVXNlIGVtcHR5 IHN0cmluZyAob3IgZXZlblxuXAotLWVtcHR5IGRpcmVjdG9yeSBlbnRyeSkgdG8gYWxsb3cgYW55 IGZpbGUgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMuXG5cCi0rcHJpbnRlZCBh bmQgZmlsZSB3aWxsIG5vdCBiZSB1c2VkIG90aGVyd2lzZS5cblwKLStTZXR0aW5nIHRoaXMgcGFy YW1ldGVyIHRvIGFuIGVtcHR5IGxpc3QgcmVzZXRzIGl0IHRvIGl0cyBkZWZhdWx0IHZhbHVlLlxu XAotK1NldHRpbmcgdGhpcyBwYXJhbWV0ZXIgdG8gJy8nICh3aXRob3V0IHRoZSBxdW90ZXMpIGFs bG93cyBhbnkgZmlsZVxuXAotK2ZvciB0aGUgJ3NldCBhdXRvLWxvYWQgLi4uJyBvcHRpb25zLlxu XAotIFRoaXMgb3B0aW9uIGlzIGlnbm9yZWQgZm9yIHRoZSBraW5kcyBvZiBmaWxlcyBoYXZpbmcg J3NldCBhdXRvLWxvYWQgLi4uIG9mZicuXG5cCi0gVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBp bXBsaWNhdGlvbnMgZm9yIHVudHJ1c3RlZCBpbmZlcmlvcnMuIiksCi0gCQkJCSAgICAgc2V0X2F1 dG9fbG9hZF9zYWZlX3BhdGgsCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25m aWd1cmUKLWluZGV4IDU0YzIzOTkuLjQyZDJmYmQgMTAwNzU1Ci0tLS0gYS9nZGIvY29uZmlndXJl Ci0rKysgYi9nZGIvY29uZmlndXJlCi1AQCAtNDk0OSw3ICs0OTQ5LDcgQEAgJGFzX2VjaG9fbiAi Y2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNhZmUtcGF0aC4uLiAiID4mNjsgfQotICMg Q2hlY2sgd2hldGhlciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aCB3YXMgZ2l2ZW4uCi0gaWYg dGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICAg d2l0aHZhbD0kd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoOyBpZiB0ZXN0ICIkd2l0aF9hdXRvX2xv YWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KLS0gICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9 IiIKLSsgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCi0gIGZpCi0gZWxzZQotICAgd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkcHJlZml4IgotZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1 cmUuYWMgYi9nZGIvY29uZmlndXJlLmFjCi1pbmRleCBhNDBjMmU1Li45YmRlMThmIDEwMDY0NAot LS0tIGEvZ2RiL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2RiL2NvbmZpZ3VyZS5hYwotQEAgLTE0MCw3 ICsxNDAsNyBAQCBBQ19BUkdfV0lUSChhdXRvLWxvYWQtc2FmZS1wYXRoLAotIEFTX0hFTFBfU1RS SU5HKFstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRIXSwgW2RpcmVjdG9yaWVzIHNhZmUg dG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlc10pCi0gQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1h dXRvLWxvYWQtc2FmZS1wYXRoXSwgW2RvIG5vdCByZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxlcyBs b2NhdGlvbnNdKSwKLSBbaWYgdGVzdCAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPSAibm8i OyB0aGVuCi0tICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIiCi0rICAgd2l0aF9hdXRvX2xv YWRfc2FmZV9wYXRoPSIvIgotICBmaV0sCi0gW3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHBy ZWZpeCJdKQotIEFDX0RFRklORV9ESVIoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRILCB3aXRo X2F1dG9fbG9hZF9zYWZlX3BhdGgsCi1kaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBi L2dkYi9kb2MvZ2RiLnRleGluZm8KLWluZGV4IGEyYTRlYjMuLjQ2ZGRlMjcgMTAwNjQ0Ci0tLS0g YS9nZGIvZG9jL2dkYi50ZXhpbmZvCi0rKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCi1AQCAtMjEx MDUsOSArMjExMDUsMTIgQEAgVGhlIGxpc3Qgb2YgdHJ1c3RlZCBkaXJlY3RvcmllcyBpcyBjb250 cm9sbGVkIGJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6Ci0gQHRhYmxlIEBjb2RlCi0gQGFuY2hv cntzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0KLSBAa2luZGV4IHNldCBhdXRvLWxvYWQgc2FmZS1w YXRoCi0tQGl0ZW0gc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggQHZhcntkaXJlY3Rvcmllc30KLStA aXRlbSBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCBAcntbfUB2YXJ7ZGlyZWN0b3JpZXN9QHJ7XX0K LSBTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgKGFuZCB0aGVpciBzdWJkaXJlY3Rvcmllcykg dHJ1c3RlZCBmb3IgYXV0b21hdGljCi0gbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMu ICBZb3UgY2FuIGFsc28gZW50ZXIgYSBzcGVjaWZpYyB0cnVzdGVkIGZpbGUuCi0rSWYgeW91IG9t aXQgQHZhcntkaXJlY3Rvcmllc30sIEBzYW1we2F1dG8tbG9hZCBzYWZlLXBhdGh9IHdpbGwgYmUg cmVzZXQgdG8KLStpdHMgZGVmYXVsdCB2YWx1ZSBhcyBzcGVjaWZpZWQgZHVyaW5nIEB2YWx1ZXtH REJOfSBjb21waWxhdGlvbi4KLSsKLSBUaGUgbGlzdCBvZiBkaXJlY3RvcmllcyB1c2VzIGRpcmVj dG9yeSBzZXBhcmF0b3IgKEBzYW1wezp9IG9uIEdOVSBhbmQgVW5peAotIHN5c3RlbXMsIEBzYW1w ezt9IG9uIE1TLVdpbmRvd3MgYW5kIE1TLURPUykgdG8gc2VwYXJhdGUgZGlyZWN0b3JpZXMsIHNp bWlsYXJseQotIHRvIHRoZSBAZW52e1BBVEh9IGVudmlyb25tZW50IHZhcmlhYmxlLgotQEAgLTIx MTI2LDcgKzIxMTI5LDggQEAgbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBNdWx0 aXBsZSBlbnRyaWVzIG1heSBiZSBkZWxpbWl0ZWQgYnkgdGhlCi0gaG9zdCBwbGF0Zm9ybSBkaXJl Y3Rvcnkgc2VwYXJhdG9yIGluIHVzZS4KLSBAZW5kIHRhYmxlCi0gCi0tU2V0dGluZyB0aGlzIHZh cmlhYmxlIHRvIGFuIGVtcHR5IHN0cmluZyBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rp b24uCi0rU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIEBmaWxley99IGRpc2FibGVzIHRoaXMgc2Vj dXJpdHkKLStwcm90ZWN0aW9uLgotIFRoaXMgdmFyaWFibGUgaXMgc3VwcG9zZWQgdG8gYmUgc2V0 IHRvIHRoZSBzeXN0ZW0gZGlyZWN0b3JpZXMgd3JpdGFibGUgYnkgdGhlCi0gc3lzdGVtIHN1cGVy dXNlciBvbmx5LiAgVXNlcnMgY2FuIGFkZCB0aGVpciBzb3VyY2UgZGlyZWN0b3JpZXMgaW4gaW5p dCBmaWxlcyBpbgotIHRoZWlyIGhvbWUgZGlyZWN0b3JpZXMgKEBweHJlZntIb21lIERpcmVjdG9y eSBJbml0IEZpbGV9KS4gIFNlZSBhbHNvIGRlcHJlY2F0ZWQKLUBAIC0yMTE0Niw3ICsyMTE1MCw3 IEBAIGJ5IEBzYW1we3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0gKHN1Y2ggYXMgQHNhbXB7L3Vz cjovYmlufSBpbiB0aGlzIGV4YW1wbGUpLgotIFNwZWNpZnkgdGhpcyBkaXJlY3RvcnkgYXMgaW4g dGhlIHByZXZpb3VzIGNhc2UgYnV0IGp1c3QgZm9yIGEgc2luZ2xlCi0gQHZhbHVle0dEQk59IHNl c3Npb24uCi0gCi0tQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgi IEBkb3Rze319Ci0rQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgg LyIgQGRvdHN7fX0KLSBEaXNhYmxlIGF1dG8tbG9hZGluZyBzYWZldHkgZm9yIGEgc2luZ2xlIEB2 YWx1ZXtHREJOfSBzZXNzaW9uLgotIFRoaXMgYXNzdW1lcyBhbGwgdGhlIGZpbGVzIHlvdSBkZWJ1 ZyBkdXJpbmcgdGhpcyBAdmFsdWV7R0RCTn0gc2Vzc2lvbiB3aWxsIGNvbWUKLSBmcm9tIHRydXN0 ZWQgc291cmNlcy4KLQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0xN29mMjIucGF0Y2ggYi9n ZGItYXV0b2xvYWQtMTdvZjIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmE3NGY3NWIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItYXV0b2xvYWQtMTdvZjIyLnBhdGNo CkBAIC0wLDAgKzEsMjggQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTIt MDUvbXNnMDAwMTAuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8wMiAxNzox MzozOQkxLjE0MTk0CisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8wMiAyMDowMDozMQkx LjE0MTk1CisjIyAtMSwzICsxLDggQEAKKysyMDEyLTA1LTAyICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCUZpeCAtLXdpdGhvdXQtYXV0by1sb2FkLXNh ZmUtcGF0aCBmb3IgTVMtV2luZG93cyBob3N0IHBsYXRmb3JtLgorKwkqIGF1dG8tbG9hZC5jIChm aWxlbmFtZV9pc19pbl9kaXIpOiBSZXR1cm4gMSBmb3IgRElSX0xFTiAwLgorKworIDIwMTItMDUt MDIgIEVsaSBaYXJldHNraWkgIDxlbGl6QGdudS5vcmc+CisgCisgCSogZ2RiX2N1cnNlcy5oOiBV bmRlZmluZSBLRVlfRVZFTlQgYmVmb3JlIGluY2x1ZGluZyBjdXJzZXMKKy0tLSBzcmMvZ2RiL2F1 dG8tbG9hZC5jCTIwMTIvMDQvMTcgMTU6NTY6MjEJMS40CisrKysgc3JjL2dkYi9hdXRvLWxvYWQu YwkyMDEyLzA1LzAyIDIwOjAwOjM2CTEuNQorQEAgLTIzMSw2ICsyMzEsMTIgQEAKKyAgIHdoaWxl IChkaXJfbGVuICYmIElTX0RJUl9TRVBBUkFUT1IgKGRpcltkaXJfbGVuIC0gMV0pKQorICAgICBk aXJfbGVuLS07CisgCisrICAvKiBFbnN1cmUgYXV0b19sb2FkX3NhZmVfcGF0aCAiLyIgbWF0Y2hl cyBhbnkgRklMRU5BTUUuICBPbiBNUy1XaW5kb3dzCisrICAgICBwbGF0Zm9ybSBGSUxFTkFNRSBl dmVuIGFmdGVyIGdkYl9yZWFscGF0aCBkb2VzIG5vdCBoYXZlIHRvIHN0YXJ0IHdpdGgKKysgICAg IElTX0RJUl9TRVBBUkFUT1IgY2hhcmFjdGVyLCBzdWNoIGFzIHRoZSAnQzpceC5leGUnIGZpbGVu YW1lLiAgKi8KKysgIGlmIChkaXJfbGVuID09IDApCisrICAgIHJldHVybiAxOworKworICAgcmV0 dXJuIChmaWxlbmFtZV9uY21wIChkaXIsIGZpbGVuYW1lLCBkaXJfbGVuKSA9PSAwCisgCSAgJiYg KElTX0RJUl9TRVBBUkFUT1IgKGZpbGVuYW1lW2Rpcl9sZW5dKQorIAkgICAgICB8fCBmaWxlbmFt ZVtkaXJfbGVuXSA9PSAnXDAnKSk7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTE4b2YxOC5w YXRjaCBiL2dkYi1hdXRvbG9hZC0xOG9mMTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGM4MTllNDcuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTE4b2YxOC5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDIzMSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cwMDc1OC5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIGF1dG8t bG9hZCBzYWZlLXBhdGggZGVmYXVsdD0kZGRpci9hdXRvLWxvYWQgIFtSZTogW3BhdGNoXSBhdXRv LWxvYWQgc2FmZS1wYXRoIHJlc2V0IGJhY2sgYnkgc2V0ICIiXQotCi1PbiBTdW4sIDIyIEFwciAy MDEyIDIzOjI2OjE2ICswMjAwLCBEb3VnIEV2YW5zIHdyb3RlOgotPiBBIHRob3VnaHQgb2NjdXJy ZWQgdG8gbWUgcmVnYXJkaW5nIHRoZSBkZWZhdWx0IHZhbHVlIG9mIGF1dG8tbG9hZC1wYXRoCi0+ ID0gJHtwcmVmaXh9LgotCi1UaGlzIGlzIHVucmVsYXRlZCB0byB0aGlzIHBhdGNoIGJ1dCB0aGFu a3MgZm9yIHRoZSBzdWdnZXN0aW9uLgotCi0KLT4gU28gSSB3YXMgd29uZGVyaW5nIGlmIHdlIHJl YWxseSB3YW50IHNlY3VyaXR5IHRvIGJlIG9uIGJ5IGRlZmF1bHQsCi0+IHNob3VsZCB0aGUgZGVm YXVsdCB2YWx1ZSBiZSBnZGIncyBkYXRhLWRpcmVjdG9yeSAoZS5nLiwKLT4gJHByZWZpeC9zaGFy ZS9nZGIpICsgJGV4ZWNfcHJlZml4L2xpYnssMzIsNjR9ICsgPz8/Ci0KLU1hZGUgaXQgdGhlcmVm b3JlICRkZGlyL2F1dG8tbG9hZCwgb24gYW4gaWRlYWwgc3lzdGVtL2Rpc3RybyB3ZSBjYW4gY2hh bmdlIGFsbAotdGhlIGF1dG8tbG9hZGVkIEdEQiBmaWxlcyB0byBiZSBsb2NhdGVkIHVuZGVyICRk ZGlyL2F1dG8tbG9hZC4gIEkgaGF2ZSBmaWxlZAotZm9yIHRoZSBvbmx5IHJlbWFpbmluZyB2aW9s YXRpb24gKC91c3IvYmluL21vbm8tZ2RiLnB5KSBrbm93biB0byBtZToKLQlodHRwczovL2J1Z3pp bGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTgxNTUwMQotCShTdXJlIEkgd2lsbCBhc2sg YWJvdXQgdXBzdHJlYW1pbmcgb2YgdGhlIGNoYW5nZS4pCi0KLQotPiBQbHVzLCBpdCBzZWVtcyBs aWtlIGF0IGxlYXN0IGRhdGEtZGlyZWN0b3J5IHNob3VsZCBiZSByZWxvY2F0YWJsZS4KLT4gSW1w bGVtZW50aW5nIHRoaXMgbWlnaHQgYmUgY3VtYmVyc29tZSB1bmxlc3MgZGF0YS1kaXJlY3Rvcnkg d2FzCi0+IHJlcHJlc2VudGVkIGFzIHNvbWV0aGluZyBsaWtlICIkZGRpciIuCi0KLURvbmUuICBV bmZvcnR1bmF0ZWx5IHRoaXMgc3RpbGwgZG9lcyBub3QgZml4IHRoZSAiLi9nZGIiIHJ1biBmb3Ig YSBuZXdseSBidWlsdAotR0RCLiAgTmV3bHkgYnVpbHQgR0RCIHByb2JhYmx5IGNvdWxkIHVzZSAi LWRhdGEtZGlyZWN0b3J5ICRQV0QvZGF0YS1kaXJlY3RvcnkiCi0oaWYgR0RCJ3MgcHJvZ3JhbSBk aXIgY29udGFpbnMgImRhdGEtZGlyZWN0b3J5IiBzb3J0IG9mIHJlbG9jYXRpb24pLgotV2UgY291 bGQgdGhlbiBjaGFuZ2UgY3VycmVudAotCWdkYi1nZGIuZ2RiLmluIC0+IGdkYi1nZGIuZ2RiCi10 bwotCWdkYi1nZGIuZ2RiLmluIC0+IGRhdGEtZGlyZWN0b3J5L2F1dG8tbG9hZC8kUFdEL2dkYi1n ZGIuZ2RiCi1hbmQgZXZlbiBpbnN0YWxsIHRoZSBmaWxlICh3aXRoIHByb3BlciBpbnN0YWxsYXRp b24gZGlyZWN0b3JpZXMpIGFzOgotCS91c3Ivc2hhcmUvZ2RiL3Vzci9iaW4vZ2RiLWdkYi5nZGIK LQkoYWRkaXRpb25hbGx5IGVuc3VyaW5nIGZvciBleGFtcGxlIGluIEZlZG9yYSAtIGluIGl0cyAu c3BlYyBmaWxlCi0JQHNyY2RpckAgZ2V0cyBzdWJzdGl0dXRlZCByaWdodCBmb3IgRmVkb3JhICot ZGVidWdpbmZvLnJwbSkKLQotV291bGQgaXQgbWFrZSBldmVyeW9uZSBoYXBweT8KLQotCi1UaGFu a3MsCi1KYW4KLQotCi1nZGIvCi0yMDEyLTA0LTIzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlDaGFuZ2UgYXV0by1sb2FkIHNhZmUtcGF0aCBkZWZhdWx0 IHRvICRkZGlyL2F1dG8tbG9hZC4KLQkqIGF1dG8tbG9hZC5jIChhdXRvX2xvYWRfc2FmZV9wYXRo X3ZlY191cGRhdGUpOiBDYWxsCi0Jc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCBmb3IgJGRkaXIu Ci0JKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCi0JKiBjb25maWd1cmUuYWMgKC0td2l0aC1hdXRv LWxvYWQtc2FmZS1wYXRoKTogU3VnZ2VzdCAkZGRpciBzeW50YXguCi0JQ2hhbmdlIHRoZSBkZWZh dWx0IHRvIFxcXCRkZGlyL2F1dG8tbG9hZC4KLQkqIGRlZnMuaCAoc3Vic3RpdHV0ZV9wYXRoX2Nv bXBvbmVudCk6IE5ldyBkZWNsYXJhdGlvbi4KLQkqIHV0aWxzLmMgKHN1YnN0aXR1dGVfcGF0aF9j b21wb25lbnQpOiBOZXcgZnVuY3Rpb24uCi0KLWdkYi9kb2MvCi0yMDEyLTA0LTIzICBKYW4gS3Jh dG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlDaGFuZ2UgYXV0by1sb2Fk IHNhZmUtcGF0aCBkZWZhdWx0IHRvICRkZGlyL2F1dG8tbG9hZC4KLQkqIGdkYi50ZXhpbmZvIChB dXRvLWxvYWRpbmcpOiBDaGFuZ2Ugc2hvd24gc2FmZS1wYXRoIGRlZmF1bHQgdG8KLQkkZGRpci9h dXRvLWxvYWQuCi0JKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBDaGFuZ2UgdGhlIHNhbXBsZSB3 YXJuaW5nIHRvICRkZGlyL2F1dG8tbG9hZC4KLQlUd2ljZS4gIE1lbnRpb24gdGhlICRkZGlyIHN1 YnN0aXR1dGlvbi4KLQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQu YwkyMDEyLTA0LTI0IDE4OjEyOjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQtMjQgMTg6MTI6MzguODE5Mjc5NTc0ICswMjAw Ci1AQCAtMTQxLDggKzE0MSwxMiBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZv aWQpCi0gICBmb3IgKGl4ID0gMDsgaXggPCBsZW47IGl4KyspCi0gICAgIHsKLSAgICAgICBjaGFy ICpkaXIgPSBWRUNfaW5kZXggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgp OwotLSAgICAgIGNoYXIgKmV4cGFuZGVkID0gdGlsZGVfZXhwYW5kIChkaXIpOwotLSAgICAgIGNo YXIgKnJlYWxfcGF0aCA9IGdkYl9yZWFscGF0aCAoZXhwYW5kZWQpOwotKyAgICAgIGNoYXIgKmV4 cGFuZGVkLCAqcmVhbF9wYXRoOwotKwotKyAgICAgIGV4cGFuZGVkID0gdGlsZGVfZXhwYW5kIChk aXIpOwotKyAgICAgIHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKCZleHBhbmRlZCwgIiRkZGly IiwgZ2RiX2RhdGFkaXIpOwotKwotKyAgICAgIHJlYWxfcGF0aCA9IGdkYl9yZWFscGF0aCAoZXhw YW5kZWQpOwotIAotICAgICAgIC8qIEVuc3VyZSB0aGUgY3VycmVudCBlbnRyeSBpcyBhdCBsZWFz dCB0aWxkZV9leHBhbmQtZWQuICAqLwotICAgICAgIFZFQ19yZXBsYWNlIChjaGFyX3B0ciwgYXV0 b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBleHBhbmRlZCk7Ci1JbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvY29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEy MC5vcmlnL2dkYi9jb25maWd1cmUJMjAxMi0wNC0yNCAxODoxMjoyMS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUJMjAxMi0wNC0yNCAxODoxMjoz OC44MjIyNzk1NjYgKzAyMDAKLUBAIC0xNjY4LDcgKzE2NjgsOCBAQCBPcHRpb25hbCBQYWNrYWdl czoKLSAgIC0td2l0aC1ycG0gICAgICAgICAgICAgIHF1ZXJ5IHJwbSBkYXRhYmFzZSBmb3IgbWlz c2luZyBkZWJ1Z2luZm9zICh5ZXMvbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYu IGF1dG89bGlicnBtLnNvKQotICAgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9h ZGVkIGZpbGVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRv IGhvbGQgYXV0by1sb2FkZWQgZmlsZXMsIHVzZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAg J1xcXCRkZGlyJyBmb3IgLWRhdGEtZGlyZWN0b3J5Ci0gICAtLXdpdGhvdXQtYXV0by1sb2FkLXNh ZmUtcGF0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gbm90IHJlc3RyaWN0IGF1dG8t bG9hZGVkIGZpbGVzIGxvY2F0aW9ucwotICAgLS13aXRoLWxpYnVud2luZCAgICAgICAgdXNlIGxp YnVud2luZCBmcmFtZSB1bndpbmRpbmcgc3VwcG9ydAotQEAgLTg0OTEsNyArODQ5Miw3IEBAIGlm IHRlc3QgIiR7d2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoK3NldH0KLSAgICB3aXRoX2F1dG9fbG9h ZF9zYWZlX3BhdGg9Ii8iCi0gIGZpCi0gZWxzZQotLSAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo PSIkcHJlZml4IgotKyAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSdcXFwkZGRpci9hdXRvLWxv YWQnCi0gZmkKLSAKLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUu YWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3Vy ZS5hYwkyMDEyLTA0LTI0IDE4OjEyOjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA0LTI0IDE4OjEzOjA0LjA5MDIxNjYwNSAr MDIwMAotQEAgLTM0MSwxMiArMzQxLDEzIEBAIGZpCi0gIAotIEFDX01TR19DSEVDS0lORyhbZm9y IGRlZmF1bHQgYXV0by1sb2FkIHNhZmUtcGF0aF0pCi0gQUNfQVJHX1dJVEgoYXV0by1sb2FkLXNh ZmUtcGF0aCwKLS1BU19IRUxQX1NUUklORyhbLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFU SF0sIFtkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXNdKQotK0FTX0hF TFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRIXSwKLSsgIFtkaXJlY3Rv cmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMsIHVzZSAnXFxcJGRkaXInIGZvciAt ZGF0YS1kaXJlY3RvcnldKQotIEFTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtYXV0by1sb2FkLXNh ZmUtcGF0aF0sIFtkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zXSks Ci0gW2lmIHRlc3QgIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgotICAg IHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iLyIKLSAgZmldLAotLVt3aXRoX2F1dG9fbG9hZF9z YWZlX3BhdGg9IiRwcmVmaXgiXSkKLStbd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSdcXFwkZGRp ci9hdXRvLWxvYWQnXSkKLSBBQ19ERUZJTkVfRElSKERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFU SCwgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoLAotIAkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0 byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLl0pCi0gQUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0b19s b2FkX3NhZmVfcGF0aF0pCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZGVmcy5oCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kZWZzLmgJMjAxMi0w NC0yNCAxODoxMjoyMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9kZWZzLmgJMjAxMi0wNC0yNCAxODoxMjozOC44MjQyNzk1NjIgKzAyMDAKLUBAIC00NDIsNiAr NDQyLDkgQEAgZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICptYWtlX2Jwc3RhdF9jbGVhcgotIAotIGV4 dGVybiBpbnQgcHJvZHVjZXJfaXNfZ2NjX2dlXzQgKGNvbnN0IGNoYXIgKnByb2R1Y2VyKTsKLSAK LStleHRlcm4gdm9pZCBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50IChjaGFyICoqc3RyaW5ncCwg Y29uc3QgY2hhciAqZnJvbSwKLSsJCQkJICAgICAgIGNvbnN0IGNoYXIgKnRvKTsKLSsKLSAjaWZk ZWYgSEFWRV9XQUlUUElECi0gZXh0ZXJuIHBpZF90IHdhaXRfdG9fZGllX3dpdGhfdGltZW91dCAo cGlkX3QgcGlkLCBpbnQgKnN0YXR1cywgaW50IHRpbWVvdXQpOwotICNlbmRpZgotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMjQgMTg6 MTI6MjEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dk Yi50ZXhpbmZvCTIwMTItMDQtMjQgMTg6MTM6MzguMjMzMTMxNTMzICswMjAwCi1AQCAtMjA4MDIs NyArMjA4MDIsNyBAQCBsaWJ0aHJlYWQtZGI6ICBBdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3IKLSBs b2NhbC1nZGJpbml0OiAgQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0IHNjcmlwdCBmcm9tIGN1cnJl bnQgZGlyZWN0b3J5IGlzIG9uLgotIHB5dGhvbi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIFB5 dGhvbiBzY3JpcHRzIGlzIG9uLgotIHNhZmUtcGF0aDogIExpc3Qgb2YgZGlyZWN0b3JpZXMgZnJv bSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcwotLSAgICAgICAgICAgIGlzIC91 c3IvbG9jYWwuCi0rICAgICAgICAgICAgaXMgJGRkaXIvYXV0by1sb2FkLgotIEBlbmQgc21hbGxl eGFtcGxlCi0gCi0gQGFuY2hvcntpbmZvIGF1dG8tbG9hZH0KLUBAIC0yMTAwNCw5ICsyMTAwNCw5 IEBAIGdldCBsb2FkZWQ6Ci0gJCAuL2dkYiAtcSAuL2dkYgotIFJlYWRpbmcgc3ltYm9scyBmcm9t IC9ob21lL3VzZXIvZ2RiL2dkYi4uLmRvbmUuCi0gd2FybmluZzogRmlsZSAiL2hvbWUvdXNlci9n ZGIvZ2RiLWdkYi5nZGIiIGF1dG8tbG9hZGluZyBoYXMgYmVlbgotLSAgICAgICAgIGRlY2xpbmVk IGJ5IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byAiL3Vzci9sb2NhbCIuCi0rICAg ICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIkZGRp ci9hdXRvLWxvYWQiLgotIHdhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIucHki IGF1dG8tbG9hZGluZyBoYXMgYmVlbgotLSAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8t bG9hZCBzYWZlLXBhdGgnIHNldCB0byAiL3Vzci9sb2NhbCIuCi0rICAgICAgICAgZGVjbGluZWQg YnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIkZGRpci9hdXRvLWxvYWQiLgot IEBlbmQgc21hbGxleGFtcGxlCi0gCi0gVGhlIGxpc3Qgb2YgdHJ1c3RlZCBkaXJlY3RvcmllcyBp cyBjb250cm9sbGVkIGJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6Ci1AQCAtMjEwMzgsNiArMjEw MzgsMTEgQEAgbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBNdWx0aQotIGhvc3Qg cGxhdGZvcm0gZGlyZWN0b3J5IHNlcGFyYXRvciBpbiB1c2UuCi0gQGVuZCB0YWJsZQotIAotK0Fu eSB1c2VkIHN0cmluZyBAZmlsZXskZGRpcn0gd2lsbCBnZXQgcmVwbGFjZWQgYnkgQHZhcntkYXRh LWRpcmVjdG9yeX0gd2hpY2ggaXMKLStkZXRlcm1pbmVkIGF0IEB2YWx1ZXtHREJOfSBzdGFydHVw IChAcHhyZWZ7RGF0YSBGaWxlc30pLiAgQGZpbGV7JGRkaXJ9IG11c3QgYmUKLStiZSBwbGFjZWQg YXMgYSBkaXJlY3RvcnkgY29tcG9uZW50IC0gZWl0aGVyIGFsb25lIG9yIGRlbGltaXRlZCBieSBA ZmlsZXsvfSBvcgotK0BmaWxle1x9IGRpcmVjdG9yeSBzZXBhcmF0b3JzLCBkZXBlbmRpbmcgb24g dGhlIGhvc3QgcGxhdGZvcm0uCi0rCi0gU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIEBmaWxley99 IGRpc2FibGVzIHRoaXMgc2VjdXJpdHkKLSBwcm90ZWN0aW9uLgotIFRoaXMgdmFyaWFibGUgaXMg c3VwcG9zZWQgdG8gYmUgc2V0IHRvIHRoZSBzeXN0ZW0gZGlyZWN0b3JpZXMgd3JpdGFibGUgYnkg dGhlCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdXRpbHMuYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdXRpbHMuYwkyMDEyLTA0LTI0IDE4OjEy OjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3V0aWxzLmMJ MjAxMi0wNC0yNCAxODoxMjozOC44MzMyNzk1NDAgKzAyMDAKLUBAIC0zOTI1LDYgKzM5MjUsNDgg QEAgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChjb25zdCBjaGFyICpkaQotICAgcmV0dXJuIHJl dHZhbDsKLSB9Ci0gCi0rLyogU3Vic3RpdHV0ZSBhbGwgb2NjdXJlbmNlcyBvZiBzdHJpbmcgRlJP TSBieSBzdHJpbmcgVE8gaW4gKlNUUklOR1AuICAqU1RSSU5HUAotKyAgIG11c3QgY29tZSBmcm9t IHhyZWFsbG9jLWNvbXBhdGlibGUgYWxsb2NhdG9yIGFuZCBpdCBtYXkgYmUgdXBkYXRlZC4gIEZS T00KLSsgICBuZWVkcyB0byBiZSBkZWxpbWl0ZWQgYnkgSVNfRElSX1NFUEFSQVRPUiAob3IgYmUg bG9jYXRlZCBhdCB0aGUgc3RhcnQgb3IKLSsgICBlbmQgb2YgKlNUUklOR1AuICAqLwotKwotK3Zv aWQKLStzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50IChjaGFyICoqc3RyaW5ncCwgY29uc3QgY2hh ciAqZnJvbSwgY29uc3QgY2hhciAqdG8pCi0rewotKyAgY2hhciAqc3RyaW5nID0gKnN0cmluZ3As ICpzOwotKyAgY29uc3Qgc2l6ZV90IGZyb21fbGVuID0gc3RybGVuIChmcm9tKTsKLSsgIGNvbnN0 IHNpemVfdCB0b19sZW4gPSBzdHJsZW4gKHRvKTsKLSsKLSsgIGZvciAocyA9IHN0cmluZzs7KQot KyAgICB7Ci0rICAgICAgcyA9IHN0cnN0ciAocywgZnJvbSk7Ci0rICAgICAgaWYgKHMgPT0gTlVM TCkKLSsJYnJlYWs7Ci0rCi0rICAgICAgaWYgKChzID09IHN0cmluZyB8fCBJU19ESVJfU0VQQVJB VE9SIChzWy0xXSkpCi0rICAgICAgICAgICYmIChzW2Zyb21fbGVuXSA9PSAnXDAnIHx8IElTX0RJ Ul9TRVBBUkFUT1IgKHNbZnJvbV9sZW5dKSkpCi0rCXsKLSsJICBjaGFyICpzdHJpbmdfbmV3Owot KwotKwkgIHN0cmluZ19uZXcgPSB4cmVhbGxvYyAoc3RyaW5nLCAoc3RybGVuIChzdHJpbmcpICsg dG9fbGVuICsgMSkpOwotKwotKwkgIC8qIFJlbG9jYXRlIHRoZSBjdXJyZW50IFMgcG9pbnRlci4g ICovCi0rCSAgcyA9IHMgLSBzdHJpbmcgKyBzdHJpbmdfbmV3OwotKwkgIHN0cmluZyA9IHN0cmlu Z19uZXc7Ci0rCi0rCSAgLyogUmVwbGFjZSBmcm9tIGJ5IHRvLiAgKi8KLSsJICBtZW1tb3ZlICgm c1t0b19sZW5dLCAmc1tmcm9tX2xlbl0sIHN0cmxlbiAoJnNbZnJvbV9sZW5dKSArIDEpOwotKwkg IG1lbWNweSAocywgdG8sIHRvX2xlbik7Ci0rCi0rCSAgcyArPSB0b19sZW47Ci0rCX0KLSsgICAg ICBlbHNlCi0rCXMrKzsKLSsgICAgfQotKwotKyAgKnN0cmluZ3AgPSBzdHJpbmc7Ci0rfQotKwot ICNpZmRlZiBIQVZFX1dBSVRQSUQKLSAKLSAjaWZkZWYgU0lHQUxSTQoKZGlmZiAtLWdpdCBhL2dk Yi1hdXRvbG9hZC0xOG9mMjIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMThvZjIyLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MGMyZTQKLS0tIC9kZXYvbnVsbAorKysg Yi9nZGItYXV0b2xvYWQtMThvZjIyLnBhdGNoCkBAIC0wLDAgKzEsMTM2IEBACitodHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA1L21zZzAwMDM4Lmh0bWwKKworIyMjIHNyYy9n ZGIvQ2hhbmdlTG9nCTIwMTIvMDUvMDUgMDU6MzY6MjMJMS4xNDIxMQorIyMjIHNyYy9nZGIvQ2hh bmdlTG9nCTIwMTIvMDUvMDYgMTU6MzA6NTkJMS4xNDIxMgorIyMgLTEsMyArMSwxNCBAQAorKzIw MTItMDUtMDYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysK KysJKiBhdXRvLWxvYWQuYyAoc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGgpOiBSZXNldCBBVVRPX0xP QURfU0FGRV9QQVRICisrCWJhY2sgdG8gREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIIGlmIGl0 IGlzIGJlaW5nIHNldCB0byAiIi4KKysJKHNob3dfYXV0b19sb2FkX3NhZmVfcGF0aCk6IENoZWNr IGFueS1kaXJlY3RvcnkgYnkgY29tcGFyaXNvbiB3aXRoICIvIi4KKysJKGFkZF9hdXRvX2xvYWRf c2FmZV9wYXRoKTogQ2hhbmdlIHRoZSBlcnJvciBtZXNzYWdlLgorKwkoX2luaXRpYWxpemVfYXV0 b19sb2FkKTogQ2hhbmdlIHRoZSAic2FmZS1wYXRoIiBoZWxwIHRleHQuCisrCSogY29uZmlndXJl OiBSZWdlbmVyYXRlCisrCSogY29uZmlndXJlLmFjICgtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUt cGF0aCk6IFNldAorKwlXSVRIX0FVVE9fTE9BRF9TQUZFX1BBVEggdG8gLy4KKysKKyAyMDEyLTA1 LTA1ICBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgIDxzZXJnaW9kakByZWRoYXQuY29tPgorIAorIAkq IHN0YXAtcHJvYmUuaDogRG8gbm90IGluY2x1ZGUgdW5lY2Vzc2FyeSBgcHJvYmUuaCcuCistLS0g c3JjL2dkYi9hdXRvLWxvYWQuYwkyMDEyLzA1LzAyIDIwOjAwOjM2CTEuNQorKysrIHNyYy9nZGIv YXV0by1sb2FkLmMJMjAxMi8wNS8wNiAxNTozMTowMgkxLjYKK0BAIC0xODEsNiArMTgxLDEyIEBA Cisgc3RhdGljIHZvaWQKKyBzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCAoY2hhciAqYXJncywgaW50 IGZyb21fdHR5LCBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKKyB7CisrICBpZiAoYXV0b19s b2FkX3NhZmVfcGF0aFswXSA9PSAnXDAnKQorKyAgICB7CisrICAgICAgeGZyZWUgKGF1dG9fbG9h ZF9zYWZlX3BhdGgpOworKyAgICAgIGF1dG9fbG9hZF9zYWZlX3BhdGggPSB4c3RyZHVwIChERUZB VUxUX0FVVE9fTE9BRF9TQUZFX1BBVEgpOworKyAgICB9CisrCisgICBhdXRvX2xvYWRfc2FmZV9w YXRoX3ZlY191cGRhdGUgKCk7CisgfQorIAorQEAgLTE5MCw3ICsxOTYsNyBAQAorIHNob3dfYXV0 b19sb2FkX3NhZmVfcGF0aCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKKyAJ CQkgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKKyB7Cist ICBpZiAoKnZhbHVlID09IDApCisrICBpZiAoc3RyY21wICh2YWx1ZSwgIi8iKSA9PSAwKQorICAg ICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWQgZmlsZXMgYXJlIHNhZmUgdG8g bG9hZCBmcm9tIGFueSAiCisgCQkJICAgICAgImRpcmVjdG9yeS5cbiIpKTsKKyAgIGVsc2UKK0BA IC0yMDksOCArMjE1LDkgQEAKKyAKKyAgIGlmIChhcmdzID09IE5VTEwgfHwgKmFyZ3MgPT0gMCkK KyAgICAgZXJyb3IgKF8oIlwKKy1BZGRpbmcgZW1wdHkgZGlyZWN0b3J5IGVsZW1lbnQgZGlzYWJs ZXMgdGhlIGF1dG8tbG9hZCBzYWZlLXBhdGggc2VjdXJpdHkuICBcCistVXNlICdzZXQgYXV0by1s b2FkIHNhZmUtcGF0aCcgaW5zdGVhZCBpZiB5b3UgbWVhbiB0aGF0LiIpKTsKKytEaXJlY3Rvcnkg YXJndW1lbnQgcmVxdWlyZWQuXG5cCisrVXNlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCAvJyBm b3IgZGlzYWJsaW5nIHRoZSBhdXRvLWxvYWQgc2FmZS1wYXRoIHNlY3VyaXR5LlwKKysiKSk7Cisg CisgICBzID0geHN0cnByaW50ZiAoIiVzJWMlcyIsIGF1dG9fbG9hZF9zYWZlX3BhdGgsIERJUk5B TUVfU0VQQVJBVE9SLCBhcmdzKTsKKyAgIHhmcmVlIChhdXRvX2xvYWRfc2FmZV9wYXRoKTsKK0BA IC0xMDI5LDggKzEwMzYsMTAgQEAKKyBTaG93IHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20g d2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMuIiksIF8oIlwKKyBWYXJpb3VzIGZp bGVzIGxvYWRlZCBhdXRvbWF0aWNhbGx5IGZvciB0aGUgJ3NldCBhdXRvLWxvYWQgLi4uJyBvcHRp b25zIG11c3RcblwKKyBiZSBsb2NhdGVkIGluIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMgbGlzdGVk IGJ5IHRoaXMgb3B0aW9uLiAgV2FybmluZyB3aWxsIGJlXG5cCistcHJpbnRlZCBhbmQgZmlsZSB3 aWxsIG5vdCBiZSB1c2VkIG90aGVyd2lzZS4gIFVzZSBlbXB0eSBzdHJpbmcgKG9yIGV2ZW5cblwK Ky1lbXB0eSBkaXJlY3RvcnkgZW50cnkpIHRvIGFsbG93IGFueSBmaWxlIGZvciB0aGUgJ3NldCBh dXRvLWxvYWQgLi4uJyBvcHRpb25zLlxuXAorK3ByaW50ZWQgYW5kIGZpbGUgd2lsbCBub3QgYmUg dXNlZCBvdGhlcndpc2UuXG5cCisrU2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byBhbiBlbXB0eSBs aXN0IHJlc2V0cyBpdCB0byBpdHMgZGVmYXVsdCB2YWx1ZS5cblwKKytTZXR0aW5nIHRoaXMgcGFy YW1ldGVyIHRvICcvJyAod2l0aG91dCB0aGUgcXVvdGVzKSBhbGxvd3MgYW55IGZpbGVcblwKKytm b3IgdGhlICdzZXQgYXV0by1sb2FkIC4uLicgb3B0aW9ucy5cblwKKyBUaGlzIG9wdGlvbiBpcyBp Z25vcmVkIGZvciB0aGUga2luZHMgb2YgZmlsZXMgaGF2aW5nICdzZXQgYXV0by1sb2FkIC4uLiBv ZmYnLlxuXAorIFRoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGZvciB1bnRy dXN0ZWQgaW5mZXJpb3JzLiIpLAorIAkJCQkgICAgIHNldF9hdXRvX2xvYWRfc2FmZV9wYXRoLAor LS0tIHNyYy9nZGIvY29uZmlndXJlCTIwMTIvMDQvMjcgMjA6NDc6NTIJMS4zNjAKKysrKyBzcmMv Z2RiL2NvbmZpZ3VyZQkyMDEyLzA1LzA2IDE1OjMxOjAyCTEuMzYxCitAQCAtNDk2NCw3ICs0OTY0 LDcgQEAKKyAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGggd2FzIGdp dmVuLgorIGlmIHRlc3QgIiR7d2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoK3NldH0iID0gc2V0OyB0 aGVuIDoKKyAgIHdpdGh2YWw9JHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aDsgaWYgdGVzdCAiJHdp dGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPSAibm8iOyB0aGVuCistICAgd2l0aF9hdXRvX2xvYWRf c2FmZV9wYXRoPSIiCisrICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgorICBmaQorIGVs c2UKKyAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHByZWZpeCIKKy0tLSBzcmMvZ2RiL2Nv bmZpZ3VyZS5hYwkyMDEyLzA0LzI3IDIwOjQ3OjUzCTEuMTcxCisrKysgc3JjL2dkYi9jb25maWd1 cmUuYWMJMjAxMi8wNS8wNiAxNTozMTowMwkxLjE3MgorQEAgLTE0MSw3ICsxNDEsNyBAQAorIEFT X0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRIXSwgW2RpcmVjdG9y aWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlc10pCisgQVNfSEVMUF9TVFJJTkcoWy0t d2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoXSwgW2RvIG5vdCByZXN0cmljdCBhdXRvLWxvYWRl ZCBmaWxlcyBsb2NhdGlvbnNdKSwKKyBbaWYgdGVzdCAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0 aCIgPSAibm8iOyB0aGVuCistICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIiCisrICAgd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgorICBmaV0sCisgW3dpdGhfYXV0b19sb2FkX3NhZmVf cGF0aD0iJHByZWZpeCJdKQorIEFDX0RFRklORV9ESVIoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9Q QVRILCB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgsCisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9n CTIwMTIvMDUvMDMgMDc6MDc6MjQJMS4xMzA4CisjIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIw MTIvMDUvMDYgMTU6MzE6MDQJMS4xMzA5CisjIyAtMSwzICsxLDkgQEAKKysyMDEyLTA1LTA2ICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCSogZ2RiLnRl eGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBNYWtlICdkaXJlY3RvcmllcycKKysJZm9y ICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgb3B0aW9uYWwuICBNZW50aW9uIGlmIGl0IGlzIG9t aXR0ZWQuCisrCUNoYW5nZSBkaXNhYmxpbmcgc2VjdXJpdHkgcHJvdGVjdGlvbiBjb25kaXRpb24g dG8gIi8iLCB0d2ljZS4KKysKKyAyMDEyLTA1LTAzICBTaXZhIENoYW5kcmEgUmVkZHkgIDxzaXZh Y2hhbmRyYUBnb29nbGUuY29tPgorIAorIAkqIGdkYi50ZXhpbmZvIChTeW1ib2wgVGFibGVzIElu IFB5dGhvbik6IEFkZCBkb2N1bWVudGF0aW9uIGFib3V0CistLS0gc3JjL2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMi8wNS8wMyAwNzowNzoyNAkxLjk1NAorKysrIHNyYy9nZGIvZG9jL2dkYi50ZXhp bmZvCTIwMTIvMDUvMDYgMTU6MzE6MDQJMS45NTUKK0BAIC0yMTIxOSw5ICsyMTIxOSwxMiBAQAor IEB0YWJsZSBAY29kZQorIEBhbmNob3J7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9CisgQGtpbmRl eCBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aAorLUBpdGVtIHNldCBhdXRvLWxvYWQgc2FmZS1wYXRo IEB2YXJ7ZGlyZWN0b3JpZXN9CisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggQHJ7W31A dmFye2RpcmVjdG9yaWVzfUBye119CisgU2V0IHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIChhbmQg dGhlaXIgc3ViZGlyZWN0b3JpZXMpIHRydXN0ZWQgZm9yIGF1dG9tYXRpYworIGxvYWRpbmcgYW5k IGV4ZWN1dGlvbiBvZiBzY3JpcHRzLiAgWW91IGNhbiBhbHNvIGVudGVyIGEgc3BlY2lmaWMgdHJ1 c3RlZCBmaWxlLgorK0lmIHlvdSBvbWl0IEB2YXJ7ZGlyZWN0b3JpZXN9LCBAc2FtcHthdXRvLWxv YWQgc2FmZS1wYXRofSB3aWxsIGJlIHJlc2V0IHRvCisraXRzIGRlZmF1bHQgdmFsdWUgYXMgc3Bl Y2lmaWVkIGR1cmluZyBAdmFsdWV7R0RCTn0gY29tcGlsYXRpb24uCisrCisgVGhlIGxpc3Qgb2Yg ZGlyZWN0b3JpZXMgdXNlcyBkaXJlY3Rvcnkgc2VwYXJhdG9yIChAc2FtcHs6fSBvbiBHTlUgYW5k IFVuaXgKKyBzeXN0ZW1zLCBAc2FtcHs7fSBvbiBNUy1XaW5kb3dzIGFuZCBNUy1ET1MpIHRvIHNl cGFyYXRlIGRpcmVjdG9yaWVzLCBzaW1pbGFybHkKKyB0byB0aGUgQGVudntQQVRIfSBlbnZpcm9u bWVudCB2YXJpYWJsZS4KK0BAIC0yMTI0MCw3ICsyMTI0Myw3IEBACisgaG9zdCBwbGF0Zm9ybSBk aXJlY3Rvcnkgc2VwYXJhdG9yIGluIHVzZS4KKyBAZW5kIHRhYmxlCisgCistU2V0dGluZyB0aGlz IHZhcmlhYmxlIHRvIGFuIGVtcHR5IHN0cmluZyBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3Rl Y3Rpb24uCisrU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIEBmaWxley99IGRpc2FibGVzIHRoaXMg c2VjdXJpdHkgcHJvdGVjdGlvbi4KKyBUaGlzIHZhcmlhYmxlIGlzIHN1cHBvc2VkIHRvIGJlIHNl dCB0byB0aGUgc3lzdGVtIGRpcmVjdG9yaWVzIHdyaXRhYmxlIGJ5IHRoZQorIHN5c3RlbSBzdXBl cnVzZXIgb25seS4gIFVzZXJzIGNhbiBhZGQgdGhlaXIgc291cmNlIGRpcmVjdG9yaWVzIGluIGlu aXQgZmlsZXMgaW4KKyB0aGVpciBob21lIGRpcmVjdG9yaWVzIChAcHhyZWZ7SG9tZSBEaXJlY3Rv cnkgSW5pdCBGaWxlfSkuICBTZWUgYWxzbyBkZXByZWNhdGVkCitAQCAtMjEyNjAsNyArMjEyNjMs NyBAQAorIFNwZWNpZnkgdGhpcyBkaXJlY3RvcnkgYXMgaW4gdGhlIHByZXZpb3VzIGNhc2UgYnV0 IGp1c3QgZm9yIGEgc2luZ2xlCisgQHZhbHVle0dEQk59IHNlc3Npb24uCisgCistQGl0ZW0gQGti ZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiIEBkb3Rze319CisrQGl0ZW0gQGti ZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggLyIgQGRvdHN7fX0KKyBEaXNhYmxl IGF1dG8tbG9hZGluZyBzYWZldHkgZm9yIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBzZXNzaW9uLgor IFRoaXMgYXNzdW1lcyBhbGwgdGhlIGZpbGVzIHlvdSBkZWJ1ZyBkdXJpbmcgdGhpcyBAdmFsdWV7 R0RCTn0gc2Vzc2lvbiB3aWxsIGNvbWUKKyBmcm9tIHRydXN0ZWQgc291cmNlcy4KCmRpZmYgLS1n aXQgYS9nZGItYXV0b2xvYWQtMTlvZjIyLnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTE5b2YyMi5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGU5NDRhCi0tLSAvZGV2L251 bGwKKysrIGIvZ2RiLWF1dG9sb2FkLTE5b2YyMi5wYXRjaApAQCAtMCwwICsxLDM1IEBACitodHRw Oi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA1L21zZzAwMDU5Lmh0bWwKKworIyMj IHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA1LzA2IDE1OjMxOjA0CTEuMTMwOQorIyMjIHNy Yy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA1LzA5IDE4OjE1OjU4CTEuMTMxMAorIyMgLTEsMyAr MSw4IEBACisrMjAxMi0wNS0wOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgorKworKwkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcpOiBXcmFwIHRvbyBsb25n IGxpbmVzIGluIEBzbWFsbGV4YW1wbGUuCisrCVR3aWNlLgorKworIDIwMTItMDUtMDYgIEphbiBL cmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAKKyAJKiBnZGIudGV4aW5m byAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IE1ha2UgJ2RpcmVjdG9yaWVzJworLS0tIHNyYy9n ZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDUvMDYgMTU6MzE6MDQJMS45NTUKKysrKyBzcmMvZ2Ri L2RvYy9nZGIudGV4aW5mbwkyMDEyLzA1LzA5IDE4OjE1OjU4CTEuOTU2CitAQCAtMjEwMDQsNyAr MjEwMDQsOCBAQAorIChnZGIpIHNob3cgYXV0by1sb2FkCisgZ2RiLXNjcmlwdHM6ICBBdXRvLWxv YWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIGlzIG9uLgorIGxp YnRocmVhZC1kYjogIEF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRf ZGIgaXMgb24uCistbG9jYWwtZ2RiaW5pdDogIEF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBzY3Jp cHQgZnJvbSBjdXJyZW50IGRpcmVjdG9yeSBpcyBvbi4KKytsb2NhbC1nZGJpbml0OiAgQXV0by1s b2FkaW5nIG9mIC5nZGJpbml0IHNjcmlwdCBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5CisrICAgICAg ICAgICAgICAgIGlzIG9uLgorIHB5dGhvbi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIFB5dGhv biBzY3JpcHRzIGlzIG9uLgorIHNhZmUtcGF0aDogIExpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3 aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcworICAgICAgICAgICAgIGlzIC91c3Iv bG9jYWwuCitAQCAtMjEwMjIsNyArMjEwMjMsOCBAQAorIExvYWRlZCAgU2NyaXB0CisgWWVzICAg ICAvaG9tZS91c2VyL2dkYi9nZGItZ2RiLmdkYgorIGxpYnRocmVhZC1kYjogIE5vIGF1dG8tbG9h ZGVkIGxpYnRocmVhZC1kYi4KKy1sb2NhbC1nZGJpbml0OiAgTG9jYWwgLmdkYmluaXQgZmlsZSAi L2hvbWUvdXNlci9nZGIvLmdkYmluaXQiIGhhcyBiZWVuIGxvYWRlZC4KKytsb2NhbC1nZGJpbml0 OiAgTG9jYWwgLmdkYmluaXQgZmlsZSAiL2hvbWUvdXNlci9nZGIvLmdkYmluaXQiIGhhcyBiZWVu CisrICAgICAgICAgICAgICAgIGxvYWRlZC4KKyBweXRob24tc2NyaXB0czoKKyBMb2FkZWQgIFNj cmlwdAorIFllcyAgICAgL2hvbWUvdXNlci9nZGIvZ2RiLWdkYi5weQoKZGlmZiAtLWdpdCBhL2dk Yi1hdXRvbG9hZC0yMG9mMjIucGF0Y2ggYi9nZGItYXV0b2xvYWQtMjBvZjIyLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0YzdkY2QKLS0tIC9kZXYvbnVsbAorKysg Yi9nZGItYXV0b2xvYWQtMjBvZjIyLnBhdGNoCkBAIC0wLDAgKzEsNzYgQEAKK2h0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA1L21zZzAwMTgwLmh0bWwKK1N1YmplY3Q6 IFtwYXRjaF0gYXV0by1sb2FkIGZpeCBtdWx0aS1kaXIgZGVidWctZmlsZS1kaXJlY3RvcnkKKwor SGksCisKK0kgZm9yZ290IHRvIGZpeCB0aGlzIGNhc2UgbXlzZWxmLCBQeXRob24gYXV0by1sb2Fk IHdhcyBpbXBsZW1lbnRlZCBieToKKwljb21taXQgMWU1ZTJhZmQ3Y2ZhNmJiNjJhYmI5NDkzYTUx NGM3MDQ4OWUxOWMzMgorCUF1dGhvcjogVG9tIFRyb21leSA8dHJvbWV5QHJlZGhhdC5jb20+CisJ RGF0ZTogICBUaHUgTWF5IDI4IDAwOjQwOjIzIDIwMDkgKzAwMDAKKword2hpbGUgbXVsdGktZGly IGRlYnVnLWZpbGUtZGlyZWN0b3J5IHdhcyBpbXBsZW1lbnRlZCBieQorCWNvbW1pdCAzNmFlNTJk MTZjYzlkMzhjZmUzMTdhNzliYjVkNjNjNjI0MzU5MTU0CisJQXV0aG9yOiBKYW4gS3JhdG9jaHZp bCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKwlEYXRlOiAgIE1vbiBOb3YgMiAxNDo1OTo0 OCAyMDA5ICswMDAwCisKK05vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0zMixpNjg2 fS1mZWRvcmExNy1saW51eC1nbnUuCisKK0FuZCBkZWJ1Z19maWxlX2RpcmVjdG9yeSByZWFsbHkg Y2Fubm90IGJlIE5VTEwgYWZ0ZXIgR0RCIGluaXRpYWxpemF0aW9uIGNvZGUuCisKKworVGhhbmtz LAorSmFuCisKKworZ2RiLworMjAxMi0wNS0wNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgorCisJTWFrZSBhdXRvLWxvYWQgaGFuZGxlIG11bHRpcGxlIGNvbXBv bmVudHMgb2YgREVCVUdfRklMRV9ESVJFQ1RPUlkuCisJKiBhdXRvLWxvYWQuYyAoYXV0b19sb2Fk X29iamZpbGVfc2NyaXB0KTogUmVtb3ZlIGNoZWNrIGZvciBOVUxMCisJREVCVUdfRklMRV9ESVJF Q1RPUlkuICBIYW5kbGUgbXVsdGlwbGUgY29tcG9uZW50cyBvZgorCURFQlVHX0ZJTEVfRElSRUNU T1JZLgorCitEaWZmIC0tZ2l0IGEvZ2RiL2F1dG8tbG9hZC5jIGIvZ2RiL2F1dG8tbG9hZC5jCitp bmRleCA5ZDRkMGJjLi4yNTRkZTNiIDEwMDY0NAorLS0tIGEvZ2RiL2F1dG8tbG9hZC5jCisrKysg Yi9nZGIvYXV0by1sb2FkLmMKK0BAIC01ODcsMTcgKzU4NywyOSBAQCBhdXRvX2xvYWRfb2JqZmls ZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorICAgaW5wdXQgPSBmb3BlbiAoZmls ZW5hbWUsICJyIik7CisgICBkZWJ1Z2ZpbGUgPSBmaWxlbmFtZTsKKyAKKy0gIGlmICghaW5wdXQg JiYgZGVidWdfZmlsZV9kaXJlY3RvcnkpCisrICBpZiAoIWlucHV0KQorICAgICB7CistICAgICAg LyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJl Y3RvcnkuICAqLworLSAgICAgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZmlsZW5hbWUp CistCQkJICAgKyBzdHJsZW4gKGRlYnVnX2ZpbGVfZGlyZWN0b3J5KSArIDEpOworLSAgICAgIHN0 cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7CistICAgICAgLyogRklMRU5B TUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4gICovCistICAgICAg c3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKKysgICAgICBjaGFyICpkZWJ1Z2RpcjsKKysg ICAgICBWRUMgKGNoYXJfcHRyKSAqZGVidWdkaXJfdmVjOworKyAgICAgIGludCBpeDsKKyAKKy0g ICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOworLSAgICAgIGlucHV0ID0gZm9w ZW4gKGRlYnVnZmlsZSwgInIiKTsKKysgICAgICBkZWJ1Z2Rpcl92ZWMgPSBkaXJuYW1lc190b19j aGFyX3B0cl92ZWMgKGRlYnVnX2ZpbGVfZGlyZWN0b3J5KTsKKysgICAgICBtYWtlX2NsZWFudXBf ZnJlZV9jaGFyX3B0cl92ZWMgKGRlYnVnZGlyX3ZlYyk7CisrCisrICAgICAgZm9yIChpeCA9IDA7 IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgZGVidWdkaXJfdmVjLCBpeCwgZGVidWdkaXIpOyArK2l4 KQorKwl7CisrCSAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVi dWcgaW5mbyBkaXJlY3RvcnkuICAqLworKwkgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAo ZGVidWdkaXIpICsgc3RybGVuIChmaWxlbmFtZSkgKyAxKTsKKysJICBzdHJjcHkgKGRlYnVnZmls ZSwgZGVidWdkaXIpOworKworKwkgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24n dCBuZWVkIGEgIi8iIGhlcmUuICAqLworKwkgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7 CisrCisrCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKKysJICBpbnB1dCA9IGZv cGVuIChkZWJ1Z2ZpbGUsICJyIik7CisrCSAgaWYgKGlucHV0ICE9IE5VTEwpCisrCSAgICBicmVh azsKKysJfQorICAgICB9CisgCisgICBpZiAoIWlucHV0ICYmIGdkYl9kYXRhZGlyKQorCgpkaWZm IC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTIxb2YyMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0yMW9mMjIu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFlY2I1ZAotLS0gL2Rl di9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0yMW9mMjIucGF0Y2gKQEAgLTAsMCArMSw0MDMgQEAK K2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA1L21zZzAwMzAzLmh0 bWwKK1N1YmplY3Q6IFJlOiBbcGF0Y2ggMS8yXSBQcm92aWRlICRkZGlyIHN1YnN0aXR1dGlvbiBm b3IgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgKKworT24gV2VkLCAwOSBNYXkgMjAxMiAxOTo0 MTowOCArMDIwMCwgRWxpIFphcmV0c2tpaSB3cm90ZToKKz4gT2theSB3aXRoIHRoYXQuICBUaGFu a3MuCisKK1VwZGF0ZWQganVzdCB0aGUgZG9jLgorCisKK1RoYW5rcywKK0phbgorCisKKworZ2Ri LworMjAxMi0wNS0wOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgorCisJUHJvdmlkZSAkZGRpciBzdWJzdGl0dXRpb24gZm9yIC0td2l0aC1hdXRvLWxvYWQtc2Fm ZS1wYXRoLgorCSogTkVXUyAoLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgsIC0td2l0aG91dC1h dXRvLWxvYWQtc2FmZS1wYXRoKTogTmV3CisJZW50cmllcy4KKwkqIGF1dG8tbG9hZC5jOiBJbmNs dWRlIG9ic2VydmVyLmguCisJKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSk6IENhbGwg c3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCBmb3IKKwllYWNoIGNvbXBvbmVudC4gIE5ldyB2YXJp YWJsZSBkZGlyX3N1YnN0LgorCShhdXRvX2xvYWRfZ2RiX2RhdGFkaXJfY2hhbmdlZCk6IE5ldyBm dW5jdGlvbi4KKwkoc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGgpOiBSZW5hbWUgREVGQVVMVF9BVVRP X0xPQURfU0FGRV9QQVRIIHRvCisJQVVUT19MT0FEX1NBRkVfUEFUSC4gIE5ldyBjb21tZW50Lgor CShfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBSZW5hbWUgREVGQVVMVF9BVVRPX0xPQURfU0FGRV9Q QVRIIHRvCisJQVVUT19MT0FEX1NBRkVfUEFUSC4gIEluc3RhbGwgYXV0b19sb2FkX2dkYl9kYXRh ZGlyX2NoYW5nZWQuCisJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCisJKiBjb25maWd1cmU6IFJl Z2VuZXJhdGUuCisJKiBjb25maWd1cmUuYWMgKC0tYXV0by1sb2FkLXNhZmUtcGF0aCk6IFJlbmFt ZQorCURFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCB0byBBVVRPX0xPQURfU0FGRV9QQVRILiAg RGVmYXVsdCB0bworCUdEQl9EQVRBRElSL2F1dG8tbG9hZC4KKwkqIGRlZnMuaCAoc3Vic3RpdHV0 ZV9wYXRoX2NvbXBvbmVudCk6IE5ldyBkZWNsYXJhdGlvbi4KKwkqIHRvcC5jOiBJbmNsdWRlIG9i c2VydmVyLmguCisJKHNldF9nZGJfZGF0YWRpcik6IE5ldyBmdW5jdGlvbi4KKwkoaW5pdF9tYWlu KTogSW5zdGFsbCBpdCBmb3IgInNldCBkYXRhLWRpcmVjdG9yeSIuCisJKiB1dGlscy5jIChzdWJz dGl0dXRlX3BhdGhfY29tcG9uZW50KTogTmV3IGZ1bmN0aW9uLgorCitnZGIvZG9jLworMjAxMi0w NS0wOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJUHJv dmlkZSAkZGRpciBzdWJzdGl0dXRpb24gZm9yIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoLgor CSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyk6IFJlcGxhY2UgL3Vzci9sb2NhbCBieSAkZGRp ci9hdXRvLWxvYWQuCisJKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBMaWtld2lzZS4gIE1lbnRp b24gdGhlIGRlZmF1bHQgdmFsdWUsCisJJGRkaXIgc3Vic3RpdHV0aW9uLCAtLXdpdGgtYXV0by1s b2FkLXNhZmUtcGF0aCBhbmQKKwktLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aC4KKwkqIG9i c2VydmVyLnRleGkgKGdkYl9kYXRhZGlyX2NoYW5nZWQpOiBOZXcuCisKK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9ORVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEy MC5vcmlnL2dkYi9ORVdTCTIwMTItMDUtMDkgMjI6MTM6NTguMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUwkyMDEyLTA1LTA5IDIyOjE0OjI5LjA5MTE4MzE5 MCArMDIwMAorQEAgLTc2LDYgKzc2LDE3IEBAIHNldCBkZWJ1ZyBhdXRvLWxvYWQgb258b2ZmCisg c2hvdyBkZWJ1ZyBhdXRvLWxvYWQKKyAgIENvbnRyb2wgZGlzcGxheSBvZiBkZWJ1Z2dpbmcgaW5m byBmb3IgYXV0by1sb2FkaW5nIHRoZSBmaWxlcyBhYm92ZS4KKyAKKysqIE5ldyBjb25maWd1cmUg b3B0aW9ucworKworKy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoCisrICBDb25maWd1cmUgZGVm YXVsdCB2YWx1ZSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0dGluZworKyAg YWJvdmUuICBJdCBkZWZhdWx0cyB0byAnJGRkaXIvYXV0by1sb2FkJywgJGRkaXIgcmVwcmVzZW50 aW5nIHRoZSB2YWx1ZQorKyAgb2YgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtZ2RiLWRhdGFkaXIu CisrCisrLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGgKKysgIFNldCAnc2V0IGF1dG8tbG9h ZCBzYWZlLXBhdGgnIHRvICcvJywgZWZmZWN0aXZlbHkgZGlzYWJsaW5nIHRoaXMKKysgIHNlY3Vy aXR5IGZlYXR1cmUuCisrCisgKiBOZXcgY29tbWFuZCBsaW5lIG9wdGlvbnMKKyAKKyAtLWluaXQt Y29tbWFuZD1GSUxFLCAtaXggICAgICAgICAgTGlrZSAtLWNvbW1hbmQsIC14IGJ1dCBleGVjdXRl IGl0CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDUt MDkgMjI6MTM6NTguMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv YXV0by1sb2FkLmMJMjAxMi0wNS0wOSAyMjoxNDowNC44MTIyMjIyMjYgKzAyMDAKK0BAIC0zNSw2 ICszNSw3IEBACisgI2luY2x1ZGUgImdkYl92ZWNzLmgiCisgI2luY2x1ZGUgInJlYWRsaW5lL3Rp bGRlLmgiCisgI2luY2x1ZGUgImNvbXBsZXRlci5oIgorKyNpbmNsdWRlICJvYnNlcnZlci5oIgor IAorIC8qIFRoZSBzdWZmaXggb2YgcGVyLW9iamZpbGUgc2NyaXB0cyB0byBhdXRvLWxvYWQgYXMg bm9uLVB5dGhvbiBjb21tYW5kIGZpbGVzLgorICAgIEUuZy4gV2hlbiB0aGUgcHJvZ3JhbSBsb2Fk cyBsaWJmb28uc28sIGxvb2sgZm9yIGxpYmZvby1nZGIuZ2RiLiAgKi8KK0BAIC0xNDEsMTAgKzE0 MiwxNiBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCisgICBmb3IgKGl4 ID0gMDsgaXggPCBsZW47IGl4KyspCisgICAgIHsKKyAgICAgICBjaGFyICpkaXIgPSBWRUNfaW5k ZXggKGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgaXgpOworLSAgICAgIGNoYXIg KmV4cGFuZGVkID0gdGlsZGVfZXhwYW5kIChkaXIpOworLSAgICAgIGNoYXIgKnJlYWxfcGF0aCA9 IGdkYl9yZWFscGF0aCAoZXhwYW5kZWQpOworKyAgICAgIGNoYXIgKmRkaXJfc3Vic3QsICpleHBh bmRlZCwgKnJlYWxfcGF0aDsKKyAKKy0gICAgICAvKiBFbnN1cmUgdGhlIGN1cnJlbnQgZW50cnkg aXMgYXQgbGVhc3QgdGlsZGVfZXhwYW5kLWVkLiAgKi8KKysgICAgICBkZGlyX3N1YnN0ID0geHN0 cmR1cCAoZGlyKTsKKysgICAgICBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50ICgmZGRpcl9zdWJz dCwgIiRkZGlyIiwgZ2RiX2RhdGFkaXIpOworKyAgICAgIGV4cGFuZGVkID0gdGlsZGVfZXhwYW5k IChkZGlyX3N1YnN0KTsKKysgICAgICB4ZnJlZSAoZGRpcl9zdWJzdCk7CisrICAgICAgcmVhbF9w YXRoID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7CisrCisrICAgICAgLyogRW5zdXJlIHRoZSBj dXJyZW50IGVudHJ5IGlzIGF0IGxlYXN0IGEgdmFsaWQgcGF0aCAodGhlcmVmb3JlCisrCSAkZGRp ci1leHBhbmRlZCBhbmQgdGlsZGUtZXhwYW5kZWQpLiAgKi8KKyAgICAgICBWRUNfcmVwbGFjZSAo Y2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZXhwYW5kZWQpOworIAorICAg ICAgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCitAQCAtMTc2LDE1ICsxODMsMjQgQEAgYXV0b19sb2Fk X3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2b2lkKQorICAgICB9CisgfQorIAorKy8qIFZhcmlhYmxl IGdkYl9kYXRhZGlyIGhhcyBiZWVuIHNldC4gIFVwZGF0ZSBjb250ZW50IGRlcGVuZGluZyBvbiAk ZGRpci4gICovCisrCisrc3RhdGljIHZvaWQKKythdXRvX2xvYWRfZ2RiX2RhdGFkaXJfY2hhbmdl ZCAodm9pZCkKKyt7CisrICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7CisrfQor KworIC8qICJzZXQiIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9wYXRoIGNvbmZpZ3Vy YXRpb24gdmFyaWFibGUuICAqLworIAorIHN0YXRpYyB2b2lkCisgc2V0X2F1dG9fbG9hZF9zYWZl X3BhdGggKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQg KmMpCisgeworKyAgLyogU2V0dGluZyB0aGUgdmFyaWFibGUgdG8gIiIgcmVzZXRzIGl0IHRvIHRo ZSBjb21waWxlIHRpbWUgZGVmYXVsdHMuICAqLworICAgaWYgKGF1dG9fbG9hZF9zYWZlX3BhdGhb MF0gPT0gJ1wwJykKKyAgICAgeworICAgICAgIHhmcmVlIChhdXRvX2xvYWRfc2FmZV9wYXRoKTsK Ky0gICAgICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0cmR1cCAoREVGQVVMVF9BVVRPX0xPQURf U0FGRV9QQVRIKTsKKysgICAgICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0cmR1cCAoQVVUT19M T0FEX1NBRkVfUEFUSCk7CisgICAgIH0KKyAKKyAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3Vw ZGF0ZSAoKTsKK0BAIC0xMDQwLDcgKzEwNTYsNyBAQCBUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5 IGltcGxpY2F0aW9ucyBmCisgVXNhZ2U6IGluZm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXQiKSwK KyAJICAgYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKCkpOworIAorLSAgYXV0b19sb2FkX3Nh ZmVfcGF0aCA9IHhzdHJkdXAgKERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCk7CisrICBhdXRv X2xvYWRfc2FmZV9wYXRoID0geHN0cmR1cCAoQVVUT19MT0FEX1NBRkVfUEFUSCk7CisgICBhdXRv X2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7CisgICBhZGRfc2V0c2hvd19vcHRpb25hbF9m aWxlbmFtZV9jbWQgKCJzYWZlLXBhdGgiLCBjbGFzc19zdXBwb3J0LAorIAkJCQkgICAgICZhdXRv X2xvYWRfc2FmZV9wYXRoLCBfKCJcCitAQCAtMTA1OCw2ICsxMDc0LDcgQEAgVGhpcyBvcHRpb25z IGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZgorIAkJCQkgICAgIHNob3dfYXV0b19sb2FkX3Nh ZmVfcGF0aCwKKyAJCQkJICAgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpLAorIAkJCQkg ICAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKKysgIG9ic2VydmVyX2F0dGFjaF9n ZGJfZGF0YWRpcl9jaGFuZ2VkIChhdXRvX2xvYWRfZ2RiX2RhdGFkaXJfY2hhbmdlZCk7CisgCisg ICBjbWQgPSBhZGRfY21kICgiYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgiLCBjbGFzc19zdXBwb3J0 LAorIAkJIGFkZF9hdXRvX2xvYWRfc2FmZV9wYXRoLAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2NvbmZpZy5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvY29uZmlnLmluCTIwMTItMDUtMDkgMjI6MTM6NTguMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnLmluCTIwMTItMDUtMDkgMjI6MTQ6MDQuODEy MjIyMjI2ICswMjAwCitAQCAtNyw2ICs3LDkgQEAKKyAvKiBEZWZpbmUgaWYgYnVpbGRpbmcgdW5p dmVyc2FsIChpbnRlcm5hbCBoZWxwZXIgbWFjcm8pICovCisgI3VuZGVmIEFDX0FQUExFX1VOSVZF UlNBTF9CVUlMRAorIAorKy8qIERpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBm aWxlcy4gKi8KKysjdW5kZWYgQVVUT19MT0FEX1NBRkVfUEFUSAorKworIC8qIERpcmVjdG9yeSBv ZiBwcm9ncmFtcy4gKi8KKyAjdW5kZWYgQklORElSCisgCitAQCAtNDMsOSArNDYsNiBAQAorICAg IG1vdmVkLiAqLworICN1bmRlZiBERUJVR0RJUl9SRUxPQ0FUQUJMRQorIAorLS8qIERpcmVjdG9y aWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy4gKi8KKy0jdW5kZWYgREVGQVVMVF9B VVRPX0xPQURfU0FGRV9QQVRICistCisgLyogRGVmaW5lIHRvIEJGRCdzIGRlZmF1bHQgYXJjaGl0 ZWN0dXJlLiAqLworICN1bmRlZiBERUZBVUxUX0JGRF9BUkNICisgCitJbmRleDogZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi9jb25maWd1cmUJMjAxMi0wNS0wOSAyMjoxMzo1OC4wMDAwMDAwMDAgKzAy MDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUJMjAxMi0wNS0wOSAyMjox NjoxOS44NzcwMDUwODMgKzAyMDAKK0BAIC0xNjY4LDcgKzE2NjgsOCBAQCBPcHRpb25hbCBQYWNr YWdlczoKKyAgIC0td2l0aC1ycG0gICAgICAgICAgICAgIHF1ZXJ5IHJwbSBkYXRhYmFzZSBmb3Ig bWlzc2luZyBkZWJ1Z2luZm9zICh5ZXMvbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBk ZWYuIGF1dG89bGlicnBtLnNvKQorICAgLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8t bG9hZGVkIGZpbGVzCisrICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZl IHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMsIHVzZQorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgJGRkaXIgZm9yIC0td2l0aC1nZGItZGF0YWRpciBwYXRoIFskZGRpci9hdXRvLWxvYWRdCisg ICAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0aW9ucworICAgLS13aXRo LWxpYnVud2luZCAgICAgICAgdXNlIGxpYnVud2luZCBmcmFtZSB1bndpbmRpbmcgc3VwcG9ydAor QEAgLTg0ODgsMjAgKzg0ODksMjEgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRlZmF1bHQg YXV0by1sbworICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aCB3YXMg Z2l2ZW4uCisgaWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgrc2V0fSIgPSBzZXQ7 IHRoZW4gOgorICAgd2l0aHZhbD0kd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoOyBpZiB0ZXN0ICIk d2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KKy0gICB3aXRoX2F1dG9fbG9h ZF9zYWZlX3BhdGg9Ii8iCistIGZpCisrICAgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8i CisrICAgICBmaQorIGVsc2UKKy0gIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHByZWZpeCIK KysgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0nJGRkaXIvYXV0by1sb2FkJworIGZpCisgCisr ZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2VkICdzL1skXWRk aXJcPi9cXFxcXFxcXFxcXFwmL2cnYAorIAorICAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYg cHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCisgICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhO T05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCistICBhY19kZWZpbmVfZGlyPWBldmFsIGVj aG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aGAKKysgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNo byAkZXNjYXBlX2RpcmAKKyAgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkYWNfZGVmaW5lX2Rp cmAKKyAKKyBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCistI2RlZmluZSBERUZBVUxUX0FVVE9f TE9BRF9TQUZFX1BBVEggIiRhY19kZWZpbmVfZGlyIgorKyNkZWZpbmUgQVVUT19MT0FEX1NBRkVf UEFUSCAiJGFjX2RlZmluZV9kaXIiCisgX0FDRU9GCisgCisgCitJbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNS0wOSAyMjoxMzo1OC4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNS0w OSAyMjoxNjoxMC41OTIwMjAwMTIgKzAyMDAKK0BAIC0zNDEsMTMgKzM0MSwxNiBAQCBmaQorICAK KyBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0IGF1dG8tbG9hZCBzYWZlLXBhdGhdKQorIEFD X0FSR19XSVRIKGF1dG8tbG9hZC1zYWZlLXBhdGgsCistQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1h dXRvLWxvYWQtc2FmZS1wYXRoPVBBVEhdLCBbZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8t bG9hZGVkIGZpbGVzXSkKKy1BU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8tbG9hZC1zYWZl LXBhdGhdLCBbZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0aW9uc10pLAor LVtpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KKy0gICB3 aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCistIGZpXSwKKy1bd2l0aF9hdXRvX2xvYWRfc2Fm ZV9wYXRoPSIkcHJlZml4Il0pCistQUNfREVGSU5FX0RJUihERUZBVUxUX0FVVE9fTE9BRF9TQUZF X1BBVEgsIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCwKKytBU19IRUxQX1NUUklORyhbLS13aXRo LWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSF0sCisrICBbZGlyZWN0b3JpZXMgc2FmZSB0byBob2xk IGF1dG8tbG9hZGVkIGZpbGVzLCB1c2UgJGRkaXIgZm9yIC0td2l0aC1nZGItZGF0YWRpciBwYXRo IEA8OkAkZGRpci9hdXRvLWxvYWRAOj5AXSkKKytBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1 dG8tbG9hZC1zYWZlLXBhdGhdLAorKyAgICAgICAgICAgICAgIFtkbyBub3QgcmVzdHJpY3QgYXV0 by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zXSksCisrICAgIFtpZiB0ZXN0ICIkd2l0aF9hdXRvX2xv YWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KKysgICAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0 aD0iLyIKKysgICAgIGZpXSwKKytbd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSckZGRpci9hdXRv LWxvYWQnXSkKKytlc2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGggfCBz ZWQgJ3MvW1skXV1kZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AKKytBQ19ERUZJTkVfRElSKEFVVE9f TE9BRF9TQUZFX1BBVEgsIGVzY2FwZV9kaXIsCisgCSAgICAgIFtEaXJlY3RvcmllcyBzYWZlIHRv IGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuXSkKKyBBQ19NU0dfUkVTVUxUKFskd2l0aF9hdXRvX2xv YWRfc2FmZV9wYXRoXSkKKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kZWZzLmgK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RlZnMuaAkyMDEy LTA1LTA5IDIyOjEzOjU3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2RlZnMuaAkyMDEyLTA1LTA5IDIyOjE0OjA0LjgxNjIyMjIyMCArMDIwMAorQEAgLTQ0Miw2 ICs0NDIsOSBAQCBleHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfYnBzdGF0X2NsZWFyCisgCisg ZXh0ZXJuIGludCBwcm9kdWNlcl9pc19nY2NfZ2VfNCAoY29uc3QgY2hhciAqcHJvZHVjZXIpOwor IAorK2V4dGVybiB2b2lkIHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKGNoYXIgKipzdHJpbmdw LCBjb25zdCBjaGFyICpmcm9tLAorKwkJCQkgICAgICAgY29uc3QgY2hhciAqdG8pOworKworICNp ZmRlZiBIQVZFX1dBSVRQSUQKKyBleHRlcm4gcGlkX3Qgd2FpdF90b19kaWVfd2l0aF90aW1lb3V0 IChwaWRfdCBwaWQsIGludCAqc3RhdHVzLCBpbnQgdGltZW91dCk7CisgI2VuZGlmCitJbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNS0wOSAy MjoxMzo1OC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2Mv Z2RiLnRleGluZm8JMjAxMi0wNS0wOSAyMjoxNjo0My43NTk5NjY2ODggKzAyMDAKK0BAIC0yMDgw Myw3ICsyMDgwMyw3IEBAIGxvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQK KyAgICAgICAgICAgICAgICAgaXMgb24uCisgcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcg b2YgUHl0aG9uIHNjcmlwdHMgaXMgb24uCisgc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3Rvcmll cyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCistICAgICAgICAgICAg aXMgL3Vzci9sb2NhbC4KKysgICAgICAgICAgICBpcyAkZGRpci9hdXRvLWxvYWQuCisgQGVuZCBz bWFsbGV4YW1wbGUKKyAKKyBAYW5jaG9ye2luZm8gYXV0by1sb2FkfQorQEAgLTIxMDA2LDkgKzIx MDA2LDkgQEAgZ2V0IGxvYWRlZDoKKyAkIC4vZ2RiIC1xIC4vZ2RiCisgUmVhZGluZyBzeW1ib2xz IGZyb20gL2hvbWUvdXNlci9nZGIvZ2RiLi4uZG9uZS4KKyB3YXJuaW5nOiBGaWxlICIvaG9tZS91 c2VyL2dkYi9nZGItZ2RiLmdkYiIgYXV0by1sb2FkaW5nIGhhcyBiZWVuCistICAgICAgICAgZGVj bGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIvdXNyL2xvY2FsIi4K KysgICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8g IiRkZGlyL2F1dG8tbG9hZCIuCisgd2FybmluZzogRmlsZSAiL2hvbWUvdXNlci9nZGIvZ2RiLWdk Yi5weSIgYXV0by1sb2FkaW5nIGhhcyBiZWVuCistICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBg YXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIvdXNyL2xvY2FsIi4KKysgICAgICAgICBkZWNs aW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIiRkZGlyL2F1dG8tbG9h ZCIuCisgQGVuZCBzbWFsbGV4YW1wbGUKKyAKKyBUaGUgbGlzdCBvZiB0cnVzdGVkIGRpcmVjdG9y aWVzIGlzIGNvbnRyb2xsZWQgYnkgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKK0BAIC0yMTA0MCw3 ICsyMTA0MCwxOCBAQCBsb2FkaW5nIGFuZCBleGVjdXRpb24gb2Ygc2NyaXB0cy4gIE11bHRpCisg aG9zdCBwbGF0Zm9ybSBkaXJlY3Rvcnkgc2VwYXJhdG9yIGluIHVzZS4KKyBAZW5kIHRhYmxlCisg CistU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIEBmaWxley99IGRpc2FibGVzIHRoaXMgc2VjdXJp dHkgcHJvdGVjdGlvbi4KKytUaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRvIEBmaWxleyRkZGlyL2F1 dG8tbG9hZH0uICBUaGUgZGVmYXVsdCBAY29kZXtzZXQKKythdXRvLWxvYWQgc2FmZS1wYXRofSB2 YWx1ZSBjYW4gYmUgYWxzbyBvdmVycmlkZW4gYnkgQHZhbHVle0dEQk59IGNvbmZpZ3VyYXRpb24K KytvcHRpb24gQG9wdGlvbnstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aH0uCisrCisrQW55IHVz ZWQgc3RyaW5nIEBmaWxleyRkZGlyfSB3aWxsIGdldCByZXBsYWNlZCBieSBAdmFye2RhdGEtZGly ZWN0b3J5fSB3aGljaCBpcworK2RldGVybWluZWQgYXQgQHZhbHVle0dEQk59IHN0YXJ0dXAgKEBw eHJlZntEYXRhIEZpbGVzfSkuICBAZmlsZXskZGRpcn0gbXVzdCBiZQorK2JlIHBsYWNlZCBhcyBh IGRpcmVjdG9yeSBjb21wb25lbnQgLS0tIGVpdGhlciBhbG9uZSBvciBkZWxpbWl0ZWQgYnkgQGZp bGV7L30gb3IKKytAZmlsZXtcfSBkaXJlY3Rvcnkgc2VwYXJhdG9ycywgZGVwZW5kaW5nIG9uIHRo ZSBob3N0IHBsYXRmb3JtLgorKworK1NldHRpbmcgdGhpcyB2YXJpYWJsZSB0byBAZmlsZXsvfSBk aXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24sCisrY29ycmVzcG9uZGluZyBAdmFsdWV7 R0RCTn0gY29uZmlndXJhdGlvbiBvcHRpb24gaXMKKytAb3B0aW9uey0td2l0aG91dC1hdXRvLWxv YWQtc2FmZS1wYXRofS4KKyBUaGlzIHZhcmlhYmxlIGlzIHN1cHBvc2VkIHRvIGJlIHNldCB0byB0 aGUgc3lzdGVtIGRpcmVjdG9yaWVzIHdyaXRhYmxlIGJ5IHRoZQorIHN5c3RlbSBzdXBlcnVzZXIg b25seS4gIFVzZXJzIGNhbiBhZGQgdGhlaXIgc291cmNlIGRpcmVjdG9yaWVzIGluIGluaXQgZmls ZXMgaW4KKyB0aGVpciBob21lIGRpcmVjdG9yaWVzIChAcHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5p dCBGaWxlfSkuICBTZWUgYWxzbyBkZXByZWNhdGVkCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvZG9jL29ic2VydmVyLnRleGkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIw MTIwLm9yaWcvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCTIwMTItMDUtMDkgMjI6MTM6NTYuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL29ic2VydmVyLnRleGkJ MjAxMi0wNS0wOSAyMjoxNzowNC4xMTg5MzM5NDggKzAyMDAKK0BAIC0yMzEsNiArMjMxLDEwIEBA IHRoZSBjdXJyZW50IHRvcC1sZXZlbCBwcm9tcHQuCisgQGMgY29sbGVjdG9yIHBhc3MuICBDdXJy ZW50bHkgb25seSBAY29kZXt0eXBlX21hcmtfdXNlZH0gbWFya2VyIGlzIHN1cHBvcnRlZC4KKyBA YyBAZW5kIGRlZnR5cGVmdW4KKyAKKytAZGVmdHlwZWZ1biB2b2lkIGdkYl9kYXRhZGlyX2NoYW5n ZWQgKHZvaWQpCisrVmFyaWFibGUgZ2RiX2RhdGFkaXIgaGFzIGJlZW4gc2V0LiAgVGhlIHZhbHVl IG1heSBub3QgbmVjZXNzYXJpbHkgY2hhbmdlLgorK0BlbmQgZGVmdHlwZWZ1bgorKworIEBkZWZ0 eXBlZnVuIHZvaWQgdGVzdF9ub3RpZmljYXRpb24gKGludCBAdmFye3NvbWVhcmd9KQorIFRoaXMg b2JzZXJ2ZXIgaXMgdXNlZCBmb3IgaW50ZXJuYWwgdGVzdGluZy4gIERvIG5vdCB1c2UuICAKKyBT ZWUgdGVzdHN1aXRlL2dkYi5nZGIvb2JzZXJ2ZXIuZXhwLgorSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL3RvcC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi90b3AuYwkyMDEyLTA1LTA5IDIyOjEzOjU3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL3RvcC5jCTIwMTItMDUtMDkgMjI6MTQ6MDQuODIzMjIyMjA4ICsw MjAwCitAQCAtNDcsNiArNDcsNyBAQAorICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKyAjaW5jbHVk ZSAicHl0aG9uL3B5dGhvbi5oIgorICNpbmNsdWRlICJpbnRlcnBzLmgiCisrI2luY2x1ZGUgIm9i c2VydmVyLmgiCisgCisgLyogcmVhZGxpbmUgaW5jbHVkZSBmaWxlcy4gICovCisgI2luY2x1ZGUg InJlYWRsaW5lL3JlYWRsaW5lLmgiCitAQCAtMTU2MSw2ICsxNTYyLDE1IEBAIHNob3dfZXhlY19k b25lX2Rpc3BsYXlfcCAoc3RydWN0IHVpX2ZpbGUKKyAJCQkgICAgImFzeW5jaHJvbm91cyBleGVj dXRpb24gY29tbWFuZHMgaXMgJXMuXG4iKSwKKyAJCSAgICB2YWx1ZSk7CisgfQorKworKy8qICJz ZXQiIGNvbW1hbmQgZm9yIHRoZSBnZGJfZGF0YWRpciBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAg Ki8KKysKKytzdGF0aWMgdm9pZAorK3NldF9nZGJfZGF0YWRpciAoY2hhciAqYXJncywgaW50IGZy b21fdHR5LCBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKKyt7CisrICBvYnNlcnZlcl9ub3Rp ZnlfZ2RiX2RhdGFkaXJfY2hhbmdlZCAoKTsKKyt9CisrCisgc3RhdGljIHZvaWQKKyBpbml0X21h aW4gKHZvaWQpCisgeworQEAgLTE2NjgsNyArMTY3OCw3IEBAIFVzZSBcIm9uXCIgdG8gZW5hYmxl IHRoZSBub3RpZmljYXRpb24sIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJTaG93 IEdEQidzIGRhdGEgZGlyZWN0b3J5LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8o IlwKKyBXaGVuIHNldCwgR0RCIHVzZXMgdGhlIHNwZWNpZmllZCBwYXRoIHRvIHNlYXJjaCBmb3Ig ZGF0YSBmaWxlcy4iKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9nZGJfZGF0YWRpciwgTlVMTCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmc2V0bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAmc2hvd2xpc3QpOworIH0KK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi91dGls cy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi91dGlscy5j CTIwMTItMDUtMDkgMjI6MTM6NTcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvdXRpbHMuYwkyMDEyLTA1LTA5IDIyOjE0OjA0LjgyNDIyMjIwNiArMDIwMAorQEAg LTM5MjUsNiArMzkyNSw0OCBAQCBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGNvbnN0IGNoYXIg KmRpCisgICByZXR1cm4gcmV0dmFsOworIH0KKyAKKysvKiBTdWJzdGl0dXRlIGFsbCBvY2N1cmVu Y2VzIG9mIHN0cmluZyBGUk9NIGJ5IHN0cmluZyBUTyBpbiAqU1RSSU5HUC4gICpTVFJJTkdQCisr ICAgbXVzdCBjb21lIGZyb20geHJlYWxsb2MtY29tcGF0aWJsZSBhbGxvY2F0b3IgYW5kIGl0IG1h eSBiZSB1cGRhdGVkLiAgRlJPTQorKyAgIG5lZWRzIHRvIGJlIGRlbGltaXRlZCBieSBJU19ESVJf U0VQQVJBVE9SIChvciBiZSBsb2NhdGVkIGF0IHRoZSBzdGFydCBvcgorKyAgIGVuZCBvZiAqU1RS SU5HUC4gICovCisrCisrdm9pZAorK3N1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKGNoYXIgKipz dHJpbmdwLCBjb25zdCBjaGFyICpmcm9tLCBjb25zdCBjaGFyICp0bykKKyt7CisrICBjaGFyICpz dHJpbmcgPSAqc3RyaW5ncCwgKnM7CisrICBjb25zdCBzaXplX3QgZnJvbV9sZW4gPSBzdHJsZW4g KGZyb20pOworKyAgY29uc3Qgc2l6ZV90IHRvX2xlbiA9IHN0cmxlbiAodG8pOworKworKyAgZm9y IChzID0gc3RyaW5nOzspCisrICAgIHsKKysgICAgICBzID0gc3Ryc3RyIChzLCBmcm9tKTsKKysg ICAgICBpZiAocyA9PSBOVUxMKQorKwlicmVhazsKKysKKysgICAgICBpZiAoKHMgPT0gc3RyaW5n IHx8IElTX0RJUl9TRVBBUkFUT1IgKHNbLTFdKSkKKysgICAgICAgICAgJiYgKHNbZnJvbV9sZW5d ID09ICdcMCcgfHwgSVNfRElSX1NFUEFSQVRPUiAoc1tmcm9tX2xlbl0pKSkKKysJeworKwkgIGNo YXIgKnN0cmluZ19uZXc7CisrCisrCSAgc3RyaW5nX25ldyA9IHhyZWFsbG9jIChzdHJpbmcsIChz dHJsZW4gKHN0cmluZykgKyB0b19sZW4gKyAxKSk7CisrCisrCSAgLyogUmVsb2NhdGUgdGhlIGN1 cnJlbnQgUyBwb2ludGVyLiAgKi8KKysJICBzID0gcyAtIHN0cmluZyArIHN0cmluZ19uZXc7Cisr CSAgc3RyaW5nID0gc3RyaW5nX25ldzsKKysKKysJICAvKiBSZXBsYWNlIGZyb20gYnkgdG8uICAq LworKwkgIG1lbW1vdmUgKCZzW3RvX2xlbl0sICZzW2Zyb21fbGVuXSwgc3RybGVuICgmc1tmcm9t X2xlbl0pICsgMSk7CisrCSAgbWVtY3B5IChzLCB0bywgdG9fbGVuKTsKKysKKysJICBzICs9IHRv X2xlbjsKKysJfQorKyAgICAgIGVsc2UKKysJcysrOworKyAgICB9CisrCisrICAqc3RyaW5ncCA9 IHN0cmluZzsKKyt9CisrCisgI2lmZGVmIEhBVkVfV0FJVFBJRAorIAorICNpZmRlZiBTSUdBTFJN CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTIyb2YyMi5wYXRjaCBiL2dkYi1hdXRvbG9hZC0y Mm9mMjIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NlZDYyNAot LS0gL2Rldi9udWxsCisrKyBiL2dkYi1hdXRvbG9hZC0yMm9mMjIucGF0Y2gKQEAgLTAsMCArMSw0 ODIgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA1L21zZzAw MzAxLmh0bWwKK1N1YmplY3Q6IFJlOiBbcGF0Y2ggMi8yXSBJbXBsZW1lbnQgbXVsdGktY29tcG9u ZW50IC0td2l0aC1hdXRvLWxvYWQtZGlyCisKK09uIFdlZCwgMDkgTWF5IDIwMTIgMTk6NDc6MDcg KzAyMDAsIEVsaSBaYXJldHNraWkgd3JvdGU6Cis+ID4gRGF0ZTogV2VkLCA5IE1heSAyMDEyIDE3 OjQ4OjQ3ICswMjAwCis+ID4gRnJvbTogSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+Cis+ID4gCis+ID4gK3NldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnkgPGRp cjE+Wzo8ZGlyMj4uLi5dCis+ID4gKyAgU2V0IGEgbGlzdCBvZiBkaXJlY3RvcmllcyB3aXRoIGF1 dG8tbG9hZGVkIHNjcmlwdHMuICBBdXRvbWF0aWNhbGx5Cis+IAorPiAgICJTZXQgYSBsaXN0IG9m IGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLiIKKwor T0suCisKKworPiA+ICtTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgd2l0aCBhdXRvLWxvYWRl ZCBzY3JpcHRzLiIpLCBfKCJcCis+ID4gK1Nob3cgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgd2l0 aCBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCis+IAorPiBMaWtld2lzZSBoZXJlLgorCitC dXQgdXNlZCAidGhlIiwgInRoZSIgaXMgcHJlc2VudC9yZXZpZXdlZCBpbiBtYW55IG90aGVyIGxv Y2F0aW9ucyBpbiBjb2RlLgorCisKKz4gPiArbWF5IGJlIGRlbGltaXRlZCBieSB0aGUgaG9zdCBw bGF0Zm9ybSBkaXJlY3Rvcnkgc2VwYXJhdG9yIGluIHVzZS4KKz4gCis+IEkgYmVsaWV2ZSB0aGUg Y29ycmVjdCB0ZXJtIGlzICJwYXRoIHNlcGFyYXRvciIuCisKK2RvbmUuCisKKworPiBJIHN1Z2dl c3QgdG8gc2F5Cis+IAorPiAgIChAc2FtcHs6fSBvbiBVbml4LCBAc2FtcHs7fSBvbiBXaW5kb3dz IGFuZCBET1MpCis+IAorPiBmb3IgY2xhcml0eSBoZXJlLCBhbmQgbm90IGZ1cnRoZXIgZG93bi4K KworVXNlZCwgd2l0aCBNUy0gcHJlZml4ZXMuCisKKworPiAKKz4gPiArRWFjaCBlbnRyeSBoZXJl IG5lZWRzIHRvIGJlIGNvdmVyZWQgYWxzbyBieSB0aGUgc2VjdXJpdHkgc2V0dGluZworPiA+ICtA eHJlZntzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0uCis+ICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXgorPiBZb3Ugd2FudCAiKEBweHJlZnsuLi59KSIgaGVyZS4KKworVXNlZDoKK0Vh Y2ggZW50cnkgaGVyZSBuZWVkcyB0byBiZSBjb3ZlcmVkIGFsc28gYnkgdGhlIHNlY3VyaXR5IHNl dHRpbmcKK0Bjb2Rle3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofSAoQHB4cmVme3NldCBhdXRvLWxv YWQgc2FmZS1wYXRofSkuCisKKworVGhhbmtzLAorSmFuCisKKworZ2RiLworMjAxMi0wNS0wOSAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJSW1wbGVtZW50 IG11bHRpLWNvbXBvbmVudCAtLXdpdGgtYXV0by1sb2FkLWRpci4KKwkqIE5FV1MgKHNldCBhdXRv LWxvYWQgc2NyaXB0cy1kaXJlY3RvcnksIC0td2l0aC1hdXRvLWxvYWQtZGlyKTogTmV3CisJZW50 cmllcy4KKwkoLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgpOiBVcGRhdGUgdGhlIGRlZmF1bHQg dmFsdWUgZGVzY3JpcHRpb24uCisJKiBhdXRvLWxvYWQuYyAoYXV0b19sb2FkX2Rpciwgc2V0X2F1 dG9fbG9hZF9kaXIsIHNob3dfYXV0b19sb2FkX2Rpcik6CisJTmV3LgorCShhdXRvX2xvYWRfb2Jq ZmlsZV9zY3JpcHQpOiBBZGQgREVCVUdfQVVUT19MT0FEIG91dHB1dC4gIFJlbW92ZQorCUdEQl9E QVRBRElSIE5VTEwgY2hlY2suICBSZXBsYWNlIEdEQl9EQVRBRElSL2F1dG8tbG9hZCBieQorCUFV VE9fTE9BRF9ESVIuICBTdXBwb3J0ICRkZGlyIGFuZCBtdWx0aXBsZSBjb21wb25lbnRzIGluIGl0 LgorCShfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBJbml0aWFsaXplIGFsc28gYXV0b19sb2FkX2Rp ci4gIEluc3RhbGwgbmV3CisJInNldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnkiLgorCSog Y29uZmlnLmluOiBSZWdlbmVyYXRlLgorCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCSogY29u ZmlndXJlLmFjICgtLXdpdGgtYXV0by1sb2FkLWRpcik6IE5ldyBjb25maWd1cmUgb3B0aW9uLgor CSgtLWF1dG8tbG9hZC1zYWZlLXBhdGgpOiBDaGFuZ2UgdGhlIGRlZmF1bHQgdG8gLS13aXRoLWF1 dG8tbG9hZC1kaXIuCisKK2dkYi9kb2MvCisyMDEyLTA1LTA5ICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwlJbXBsZW1lbnQgbXVsdGktY29tcG9uZW50IC0t d2l0aC1hdXRvLWxvYWQtZGlyLgorCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyk6IE5ldyBy ZWZlcmVuY2VzCisJZm9yICdzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5JworCWFuZCAn c2hvdyBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnknLgorCShBdXRvLWxvYWRpbmcgc2FmZSBw YXRoKTogRGVzY3JpYmUgdGhlIG5ldyBkZWZhdWx0LiAgTW92ZSAkZGRpcgorCXN1YnN0aXR1YXRp b24gcmVmZXJlbmNlIHRvICdvYmpmaWxlLWdkYi5weSBmaWxlJy4KKwkob2JqZmlsZS1nZGIucHkg ZmlsZSk6IERlc2NyaWJlIHNjcmlwdC1uYW1lIGFsaWFzLiAgQ2hhbmdlIHJlYWwtbmFtZSB0bwor CXNjcmlwdC1uYW1lLiAgRGVzY3JpYmUgbmV3ICdzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0 b3J5JworCWFuZCAnc2hvdyBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnknLgorCitJbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUworPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvTkVXUwkyMDEyLTA1LTA5IDIyOjE0OjI5LjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MJMjAxMi0wNS0wOSAyMjoxNzoxNi40 MTY5MTQxODQgKzAyMDAKK0BAIC02Nyw2ICs2NywxMiBAQCBzZXQgYXV0by1sb2FkIGxpYnRocmVh ZC1kYiBvbnxvZmYKKyBzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIKKyAgIENvbnRyb2wgYXV0 by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgc2hhcmVkIGxp YnJhcnkuCisgCisrc2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeSA8ZGlyMT5bOjxkaXIy Pi4uLl0KKysgIFNldCBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1 dG8tbG9hZGVkIHNjcmlwdHMuCisrICBBdXRvbWF0aWNhbGx5IGxvYWRlZCBQeXRob24gc2NyaXB0 cyBhbmQgR0RCIHNjcmlwdHMgYXJlIGxvY2F0ZWQgaW4gb25lCisrICBvZiB0aGUgZGlyZWN0b3Jp ZXMgbGlzdGVkIGJ5IHRoaXMgb3B0aW9uLgorKyAgVGhlIGRlbGltaXRlciAoJzonIGFib3ZlKSBt YXkgZGlmZmVyIGFjY29yZGluZyB0byB0aGUgaG9zdCBwbGF0Zm9ybS4KKysKKyBzZXQgYXV0by1s b2FkIHNhZmUtcGF0aCA8ZGlyMT5bOjxkaXIyPi4uLl0KKyBzaG93IGF1dG8tbG9hZCBzYWZlLXBh dGgKKyAgIFNldCBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRv IGF1dG8tbG9hZCBmaWxlcy4KK0BAIC03OCwxMCArODQsMTQgQEAgc2hvdyBkZWJ1ZyBhdXRvLWxv YWQKKyAKKyAqIE5ldyBjb25maWd1cmUgb3B0aW9ucworIAorKy0td2l0aC1hdXRvLWxvYWQtZGly CisrICBDb25maWd1cmUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIHNjcmlw dHMtZGlyZWN0b3J5JworKyAgc2V0dGluZyBhYm92ZS4gIEl0IGRlZmF1bHRzIHRvICckZGRpci9h dXRvLWxvYWQnLCAkZGRpciByZXByZXNlbnRpbmcKKysgIHRoZSB2YWx1ZSBvZiBjb25maWd1cmUg b3B0aW9uIC0td2l0aC1nZGItZGF0YWRpci4KKysKKyAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0 aAorICAgQ29uZmlndXJlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCBzYWZl LXBhdGgnIHNldHRpbmcKKy0gIGFib3ZlLiAgSXQgZGVmYXVsdHMgdG8gJyRkZGlyL2F1dG8tbG9h ZCcsICRkZGlyIHJlcHJlc2VudGluZyB0aGUgdmFsdWUKKy0gIG9mIGNvbmZpZ3VyZSBvcHRpb24g LS13aXRoLWdkYi1kYXRhZGlyLgorKyAgYWJvdmUuICBJdCBkZWZhdWx0cyB0byB0aGUgLS13aXRo LWF1dG8tbG9hZC1kaXIgc2V0dGluZy4KKyAKKyAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0 aAorICAgU2V0ICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgdG8gJy8nLCBlZmZlY3RpdmVseSBk aXNhYmxpbmcgdGhpcworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQu YwkyMDEyLTA1LTA5IDIyOjE0OjA0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDUtMDkgMjI6MTc6MTYuNDE3OTE0MTgyICswMjAw CitAQCAtMTA4LDYgKzEwOCwzNSBAQCBzaG93X2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0IChzdHJ1 Y3QgdWlfCisgCQkgICAgdmFsdWUpOworIH0KKyAKKysvKiBEaXJlY3RvcnkgbGlzdCBmcm9tIHdo aWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cy4gIEl0IGlzIG5vdCBjaGVja2VkCisrICAg Zm9yIGFic29sdXRlIHBhdGhzIGJ1dCB0aGV5IGFyZSBzdHJvbmdseSByZWNvbW1lbmRlZC4gIEl0 IGlzIGluaXRpYWxpemVkIGJ5CisrICAgX2luaXRpYWxpemVfYXV0b19sb2FkLiAgKi8KKytzdGF0 aWMgY2hhciAqYXV0b19sb2FkX2RpcjsKKysKKysvKiAic2V0IiBjb21tYW5kIGZvciB0aGUgYXV0 b19sb2FkX2RpciBjb25maWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAor K3NldF9hdXRvX2xvYWRfZGlyIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksIHN0cnVjdCBjbWRf bGlzdF9lbGVtZW50ICpjKQorK3sKKysgIC8qIFNldHRpbmcgdGhlIHZhcmlhYmxlIHRvICIiIHJl c2V0cyBpdCB0byB0aGUgY29tcGlsZSB0aW1lIGRlZmF1bHRzLiAgKi8KKysgIGlmIChhdXRvX2xv YWRfZGlyWzBdID09ICdcMCcpCisrICAgIHsKKysgICAgICB4ZnJlZSAoYXV0b19sb2FkX2Rpcik7 CisrICAgICAgYXV0b19sb2FkX2RpciA9IHhzdHJkdXAgKEFVVE9fTE9BRF9ESVIpOworKyAgICB9 CisrfQorKworKy8qICJzaG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX2RpciBjb25maWd1 cmF0aW9uIHZhcmlhYmxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3Nob3dfYXV0b19sb2FkX2Rp ciAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKKysJCSAgICBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCisreworKyAgZnByaW50Zl9maWx0 ZXJlZCAoZmlsZSwgXygiTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgIgor KwkJCSAgICAiYXV0by1sb2FkZWQgc2NyaXB0cyBpcyAlcy5cbiIpLAorKwkJICAgIHZhbHVlKTsK Kyt9CisrCisgLyogRGlyZWN0b3J5IGxpc3Qgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVz LiAgSXQgaXMgbm90IGNoZWNrZWQgZm9yCisgICAgYWJzb2x1dGUgcGF0aHMgYnV0IHRoZXkgYXJl IHN0cm9uZ2x5IHJlY29tbWVuZGVkLiAgSXQgaXMgaW5pdGlhbGl6ZWQgYnkKKyAgICBfaW5pdGlh bGl6ZV9hdXRvX2xvYWQuICAqLworQEAgLTYwMiw2ICs2MzEsOSBAQCBhdXRvX2xvYWRfb2JqZmls ZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCisgCisgICBpbnB1dCA9IGZvcGVuIChmaWxlbmFtZSwg InIiKTsKKyAgIGRlYnVnZmlsZSA9IGZpbGVuYW1lOworKyAgaWYgKGRlYnVnX2F1dG9fbG9hZCkK KysgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEF0dGVt cHRlZCBmaWxlIFwiJXNcIiAlcy5cbiIpLAorKwkJCWRlYnVnZmlsZSwgaW5wdXQgPyBfKCJleGlz dHMiKSA6IF8oImRvZXMgbm90IGV4aXN0IikpOworIAorICAgaWYgKCFpbnB1dCkKKyAgICAgewor QEAgLTYxMiw2ICs2NDQsMTIgQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2Jq ZmlsZQorICAgICAgIGRlYnVnZGlyX3ZlYyA9IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoZGVi dWdfZmlsZV9kaXJlY3RvcnkpOworICAgICAgIG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3Zl YyAoZGVidWdkaXJfdmVjKTsKKyAKKysgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQorKwlmcHJp bnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisrCQkJICAgIF8oImF1dG8tbG9hZDogU2VhcmNo aW5nICdzZXQgZGVidWctZmlsZS1kaXJlY3RvcnknICIKKysJCQkgICAgICAicGF0aCBcIiVzXCIu XG4iKSwKKysJCQkgICAgZGVidWdfZmlsZV9kaXJlY3RvcnkpOworKworICAgICAgIGZvciAoaXgg PSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGRlYnVnZGlyX3ZlYywgaXgsIGRlYnVnZGlyKTsg KytpeCkKKyAJeworIAkgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFyYXRl IGRlYnVnIGluZm8gZGlyZWN0b3J5LiAgKi8KK0BAIC02MjMsMjQgKzY2MSw1MyBAQCBhdXRvX2xv YWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCisgCisgCSAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgZGVidWdmaWxlKTsKKyAJICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7Cisr CSAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKKysJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywgXygiYXV0by1sb2FkOiBBdHRlbXB0ZWQgZmlsZSAiCisrCQkJCQkgICAgICAiXCIlc1wi ICVzLlxuIiksCisrCQkJCWRlYnVnZmlsZSwKKysJCQkJaW5wdXQgPyBfKCJleGlzdHMiKSA6IF8o ImRvZXMgbm90IGV4aXN0IikpOworIAkgIGlmIChpbnB1dCAhPSBOVUxMKQorIAkgICAgYnJlYWs7 CisgCX0KKyAgICAgfQorIAorLSAgaWYgKCFpbnB1dCAmJiBnZGJfZGF0YWRpcikKKysgIGlmICgh aW5wdXQpCisgICAgIHsKKysgICAgICBWRUMgKGNoYXJfcHRyKSAqdmVjOworKyAgICAgIGludCBp eDsKKysgICAgICBjaGFyICpkaXI7CisrCisgICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmls ZSBpbiBhIHN1YmRpcmVjdG9yeSBvZiBnZGIncyBkYXRhCisgCSBkaXJlY3RvcnkuICAqLworLSAg ICAgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZ2RiX2RhdGFkaXIpICsgc3RybGVuIChm aWxlbmFtZSkKKy0JCQkgICArIHN0cmxlbiAoIi9hdXRvLWxvYWQiKSArIDEpOworLSAgICAgIHN0 cmNweSAoZGVidWdmaWxlLCBnZGJfZGF0YWRpcik7CistICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUs ICIvYXV0by1sb2FkIik7CistICAgICAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRv bid0IG5lZWQgYSAiLyIgaGVyZS4gICovCistICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVu YW1lKTsKKyAKKy0gICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOworLSAgICAg IGlucHV0ID0gZm9wZW4gKGRlYnVnZmlsZSwgInIiKTsKKysgICAgICB2ZWMgPSBkaXJuYW1lc190 b19jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9kaXIpOworKyAgICAgIG1ha2VfY2xlYW51cF9mcmVl X2NoYXJfcHRyX3ZlYyAodmVjKTsKKysKKysgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQorKwlm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csIF8oImF1dG8tbG9hZDogU2VhcmNoaW5nICdz ZXQgYXV0by1sb2FkICIKKysJCQkJCSAgInNjcmlwdHMtZGlyZWN0b3J5JyBwYXRoIFwiJXNcIi5c biIpLAorKwkJCSAgICBhdXRvX2xvYWRfZGlyKTsKKysKKysgICAgICBmb3IgKGl4ID0gMDsgVkVD X2l0ZXJhdGUgKGNoYXJfcHRyLCB2ZWMsIGl4LCBkaXIpOyArK2l4KQorKwl7CisrCSAgZGVidWdm aWxlID0geHN0cmR1cCAoZGlyKTsKKysJICBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50ICgmZGVi dWdmaWxlLCAiJGRkaXIiLCBnZGJfZGF0YWRpcik7CisrCSAgZGVidWdmaWxlID0geHJlYWxsb2Mg KGRlYnVnZmlsZSwgKHN0cmxlbiAoZGVidWdmaWxlKQorKwkJCQkJICAgICsgc3RybGVuIChmaWxl bmFtZSkgKyAxKSk7CisrCisrCSAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0 IG5lZWQgYSAiLyIgaGVyZS4gICovCisrCSAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsK KysKKysJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOworKwkgIGlucHV0ID0gZm9w ZW4gKGRlYnVnZmlsZSwgInIiKTsKKysJICBpZiAoZGVidWdfYXV0b19sb2FkKQorKwkgICAgZnBy aW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEF0dGVtcHRlZCBmaWxl ICIKKysJCQkJCSAgICAgICJcIiVzXCIgJXMuXG4iKSwKKysJCQkJZGVidWdmaWxlLAorKwkJCQlp bnB1dCA/IF8oImV4aXN0cyIpIDogXygiZG9lcyBub3QgZXhpc3QiKSk7CisrCSAgaWYgKGlucHV0 ICE9IE5VTEwpCisrCSAgICBicmVhazsKKysJfQorICAgICB9CisgCisgICBpZiAoaW5wdXQpCitA QCAtMTA1Niw2ICsxMTIzLDE5IEBAIFRoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRp b25zIGYKKyBVc2FnZTogaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIpLAorIAkgICBhdXRv X2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7CisgCisrICBhdXRvX2xvYWRfZGlyID0geHN0cmR1 cCAoQVVUT19MT0FEX0RJUik7CisrICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9jbWQg KCJzY3JpcHRzLWRpcmVjdG9yeSIsIGNsYXNzX3N1cHBvcnQsCisrCQkJCSAgICAgJmF1dG9fbG9h ZF9kaXIsIF8oIlwKKytTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBs b2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKKytTaG93IHRoZSBsaXN0IG9mIGRpcmVj dG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCisr QXV0b21hdGljYWxseSBsb2FkZWQgUHl0aG9uIHNjcmlwdHMgYW5kIEdEQiBzY3JpcHRzIGFyZSBs b2NhdGVkIGluIG9uZSBvZiB0aGVcblwKKytkaXJlY3RvcmllcyBsaXN0ZWQgYnkgdGhpcyBvcHRp b24uICBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGZvciB0aGUga2luZHMgb2ZcblwKKytzY3JpcHRz IGhhdmluZyAnc2V0IGF1dG8tbG9hZCAuLi4gb2ZmJy4gIERpcmVjdG9yaWVzIGxpc3RlZCBoZXJl IG5lZWQgdG8gYmVcblwKKytwcmVzZW50IGFsc28gaW4gdGhlICdzZXQgYXV0by1sb2FkIHNhZmUt cGF0aCcgb3B0aW9uLiIpLAorKwkJCQkgICAgIHNldF9hdXRvX2xvYWRfZGlyLCBzaG93X2F1dG9f bG9hZF9kaXIsCisrCQkJCSAgICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKKysJCQkJ ICAgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAoKSk7CisrCisgICBhdXRvX2xvYWRfc2Fm ZV9wYXRoID0geHN0cmR1cCAoQVVUT19MT0FEX1NBRkVfUEFUSCk7CisgICBhdXRvX2xvYWRfc2Fm ZV9wYXRoX3ZlY191cGRhdGUgKCk7CisgICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9j bWQgKCJzYWZlLXBhdGgiLCBjbGFzc19zdXBwb3J0LAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2NvbmZpZy5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvY29uZmlnLmluCTIwMTItMDUtMDkgMjI6MTQ6MDQuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnLmluCTIwMTItMDUtMDkgMjI6MTc6MTYuNDE3 OTE0MTgyICswMjAwCitAQCAtNyw2ICs3LDkgQEAKKyAvKiBEZWZpbmUgaWYgYnVpbGRpbmcgdW5p dmVyc2FsIChpbnRlcm5hbCBoZWxwZXIgbWFjcm8pICovCisgI3VuZGVmIEFDX0FQUExFX1VOSVZF UlNBTF9CVUlMRAorIAorKy8qIERpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxv YWRlZCBzY3JpcHRzLiAqLworKyN1bmRlZiBBVVRPX0xPQURfRElSCisrCisgLyogRGlyZWN0b3Jp ZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAqLworICN1bmRlZiBBVVRPX0xPQURf U0FGRV9QQVRICisgCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUJMjAx Mi0wNS0wOSAyMjoxNjoxOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9jb25maWd1cmUJMjAxMi0wNS0wOSAyMjoxOToxOS4xOTI3MTY3OTggKzAyMDAKK0BAIC05 NTUsNiArOTU1LDcgQEAgd2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIKKyB3aXRoX2dkYl9kYXRhZGly Cisgd2l0aF9yZWxvY2F0ZWRfc291cmNlcworIHdpdGhfcnBtCisrd2l0aF9hdXRvX2xvYWRfZGly Cisgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoCisgZW5hYmxlX3RhcmdldHMKKyBlbmFibGVfNjRf Yml0X2JmZAorQEAgLTE2NjcsOSArMTY2OCwxMyBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBwYXRoIGZv ciBzb3VyY2UgZmlsZXMKKyAgIC0td2l0aC1ycG0gICAgICAgICAgICAgIHF1ZXJ5IHJwbSBkYXRh YmFzZSBmb3IgbWlzc2luZyBkZWJ1Z2luZm9zICh5ZXMvbm8sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZWYuIGF1dG89bGlicnBtLnNvKQorKyAgLS13aXRoLWF1dG8tbG9hZC1kaXI9UEFU SAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBs b2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Ug JyRkZGlyJyBmb3IgLWRhdGEtZGlyZWN0b3J5IFskZGRpci9hdXRvLWxvYWRdCisgICAtLXdpdGgt YXV0by1sb2FkLXNhZmUtcGF0aD1QQVRICisgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJl Y3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMsIHVzZQorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgJGRkaXIgZm9yIC0td2l0aC1nZGItZGF0YWRpciBwYXRoIFskZGRpci9h dXRvLWxvYWRdCisrICAgICAgICAgICAgICAgICAgICAgICAgICAkZGRpciBmb3IgLS13aXRoLWdk Yi1kYXRhZGlyIHBhdGgKKysgICAgICAgICAgICAgICAgICAgICAgICAgIFstLXdpdGgtYXV0by1s b2FkLWRpcl0KKyAgIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25z CisgICAtLXdpdGgtbGlidW53aW5kICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2luZGlu ZyBzdXBwb3J0CitAQCAtODQ4Myw2ICs4NDg4LDMxIEBAICRhc19lY2hvICIkYXNfbWU6IFdBUk5J Tkc6ICRSUE1fUEtHX0VSUk8KKyAgIGZpCisgZmkKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG9hZCBkaXJlY3Rv cnkiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG9hZCBkaXJl Y3RvcnkuLi4gIiA+JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWF1dG8tbG9hZC1k aXIgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9hdXRvX2xvYWRfZGlyK3NldH0iID0gc2V0 OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfYXV0b19sb2FkX2RpcjsKKytlbHNlCisrICB3aXRo X2F1dG9fbG9hZF9kaXI9JyRkZGlyL2F1dG8tbG9hZCcKKytmaQorKworK2VzY2FwZV9kaXI9YGVj aG8gJHdpdGhfYXV0b19sb2FkX2RpciB8IHNlZCAncy9bJF1kZGlyXD4vXFxcXFxcXFxcXFxcJi9n J2AKKysKKysgIHRlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0iJGFjX2RlZmF1bHRf cHJlZml4IgorKyAgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0n JHtwcmVmaXh9JworKyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRlc2NhcGVfZGlyYAorKyAg YWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRhY19kZWZpbmVfZGlyYAorKworK2NhdCA+PmNvbmZk ZWZzLmggPDxfQUNFT0YKKysjZGVmaW5lIEFVVE9fTE9BRF9ESVIgIiRhY19kZWZpbmVfZGlyIgor K19BQ0VPRgorKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkd2l0aF9hdXRvX2xvYWRfZGlyIiA+JjUKKyskYXNfZWNobyAiJHdpdGhfYXV0b19s b2FkX2RpciIgPiY2OyB9CisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5F Tk99OiBjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoIiA+JjUKKyAkYXNf ZWNob19uICJjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoLi4uICIgPiY2 OyB9CisgCitAQCAtODQ5Miw3ICs4NTIyLDcgQEAgaWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9z YWZlX3BhdGgrc2V0fQorICAgICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgorICAgICAg ZmkKKyBlbHNlCistICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9JyRkZGlyL2F1dG8tbG9hZCcK KysgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHdpdGhfYXV0b19sb2FkX2RpciIKKyBmaQor IAorIGVzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAncy9b JF1kZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA1LTA5IDIyOjE2OjEwLjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA1LTA5IDIyOjE5OjA4 LjM5MDczNDE2NyArMDIwMAorQEAgLTMzOSwxNiArMzM5LDI2IEBAIGV4dGVybiBycG1kYk1hdGNo SXRlcmF0b3IgcnBtdHNJbml0SXRlcmEKKyAgIGZpCisgZmkKKyAgCisrQUNfTVNHX0NIRUNLSU5H KFtmb3IgZGVmYXVsdCBhdXRvLWxvYWQgZGlyZWN0b3J5XSkKKytBQ19BUkdfV0lUSChhdXRvLWxv YWQtZGlyLAorK0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLWRpcj1QQVRIXSwKKysg IFtkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cywgdXNl ICckZGRpcicgZm9yIC1kYXRhLWRpcmVjdG9yeSBAPDpAJGRkaXIvYXV0by1sb2FkQDo+QF0pLCwK KysgIFt3aXRoX2F1dG9fbG9hZF9kaXI9JyRkZGlyL2F1dG8tbG9hZCddKQorK2VzY2FwZV9kaXI9 YGVjaG8gJHdpdGhfYXV0b19sb2FkX2RpciB8IHNlZCAncy9bWyRdXWRkaXJcPi9cXFxcXFxcXFxc XFwmL2cnYAorK0FDX0RFRklORV9ESVIoQVVUT19MT0FEX0RJUiwgZXNjYXBlX2RpciwKKysJICAg ICAgW0RpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLl0p CisrQUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0b19sb2FkX2Rpcl0pCisrCisgQUNfTVNHX0NIRUNL SU5HKFtmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoXSkKKyBBQ19BUkdfV0lUSChhdXRv LWxvYWQtc2FmZS1wYXRoLAorIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLXNhZmUt cGF0aD1QQVRIXSwKKy0gIFtkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmls ZXMsIHVzZSAkZGRpciBmb3IgLS13aXRoLWdkYi1kYXRhZGlyIHBhdGggQDw6QCRkZGlyL2F1dG8t bG9hZEA6PkBdKQorKyAgW2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxl cywgdXNlICRkZGlyIGZvciAtLXdpdGgtZ2RiLWRhdGFkaXIgcGF0aCBAPDpALS13aXRoLWF1dG8t bG9hZC1kaXJAOj5AXSkKKyBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8tbG9hZC1zYWZl LXBhdGhdLAorICAgICAgICAgICAgICAgIFtkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmls ZXMgbG9jYXRpb25zXSksCisgICAgIFtpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo IiA9ICJubyI7IHRoZW4KKyAgICAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iLyIKKyAgICAg IGZpXSwKKy1bd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSckZGRpci9hdXRvLWxvYWQnXSkKKytb d2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkd2l0aF9hdXRvX2xvYWRfZGlyIl0pCisgZXNjYXBl X2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2VkICdzL1tbJF1dZGRpclw+ L1xcXFxcXFxcXFxcXCYvZydgCisgQUNfREVGSU5FX0RJUihBVVRPX0xPQURfU0FGRV9QQVRILCBl c2NhcGVfZGlyLAorIAkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVk IGZpbGVzLl0pCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZv Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMi0wNS0wOSAyMjoxNjo0My4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNS0wOSAyMjoxODozOC4yOTQ3ODI1 NDkgKzAyMDAKK0BAIC0yMDgwNCw2ICsyMDgwNCw4IEBAIGxvY2FsLWdkYmluaXQ6ICBBdXRvLWxv YWRpbmcgb2YgLmdkYmluaXQKKyBweXRob24tc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBQeXRo b24gc2NyaXB0cyBpcyBvbi4KKyBzYWZlLXBhdGg6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20g d2hpY2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMKKyAgICAgICAgICAgICBpcyAkZGRp ci9hdXRvLWxvYWQuCisrc2NyaXB0cy1kaXJlY3Rvcnk6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZy b20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzCisrICAgICAgICAgICAgICAgICAg ICBpcyAkZGRpci9hdXRvLWxvYWQuCisgQGVuZCBzbWFsbGV4YW1wbGUKKyAKKyBAYW5jaG9ye2lu Zm8gYXV0by1sb2FkfQorQEAgLTIwODY0LDYgKzIwODY2LDEwIEBAIFRoZXNlIGFyZSBAdmFsdWV7 R0RCTn0gY29udHJvbCBjb21tYW5kcworIEB0YWIgU2hvdyBzZXR0aW5nIG9mIEB2YWx1ZXtHREJO fSBQeXRob24gc2NyaXB0cy4KKyBAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBweXRob24tc2Ny aXB0c30uCisgQHRhYiBTaG93IHN0YXRlIG9mIEB2YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0cy4K KytAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fS4KKytAdGFiIENv bnRyb2wgZm9yIEB2YWx1ZXtHREJOfSBhdXRvLWxvYWRlZCBzY3JpcHRzIGxvY2F0aW9uLgorK0Bp dGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fS4KKytAdGFiIFNob3cg QHZhbHVle0dEQk59IGF1dG8tbG9hZGVkIHNjcmlwdHMgbG9jYXRpb24uCisgQGl0ZW0gQHhyZWZ7 c2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0fS4KKyBAdGFiIENvbnRyb2wgZm9yIGluaXQgZmls ZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQg bG9jYWwtZ2RiaW5pdH0uCitAQCAtMjEwNDAsMTUgKzIxMDQ2LDEzIEBAIGxvYWRpbmcgYW5kIGV4 ZWN1dGlvbiBvZiBzY3JpcHRzLiAgTXVsdGkKKyBob3N0IHBsYXRmb3JtIGRpcmVjdG9yeSBzZXBh cmF0b3IgaW4gdXNlLgorIEBlbmQgdGFibGUKKyAKKy1UaGlzIHZhcmlhYmxlIGRlZmF1bHRzIHRv IEBmaWxleyRkZGlyL2F1dG8tbG9hZH0uICBUaGUgZGVmYXVsdCBAY29kZXtzZXQKKytUaGlzIHZh cmlhYmxlIGRlZmF1bHRzIHRvIHdoYXQgQGNvZGV7LS13aXRoLWF1dG8tbG9hZC1kaXJ9IGhhcyBi ZWVuIGNvbmZpZ3VyZWQKKyt0byAoQHB4cmVme3dpdGgtYXV0by1sb2FkLWRpcn0pLiAgQGZpbGV7 JGRkaXJ9IHN1YnN0aXR1YXRpb24gYXBwbGllcyB0aGUgc2FtZQorK2FzIGZvciBAeHJlZntzZXQg YXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fS4KKytUaGUgZGVmYXVsdCBAY29kZXtzZXQKKyBh dXRvLWxvYWQgc2FmZS1wYXRofSB2YWx1ZSBjYW4gYmUgYWxzbyBvdmVycmlkZW4gYnkgQHZhbHVl e0dEQk59IGNvbmZpZ3VyYXRpb24KKyBvcHRpb24gQG9wdGlvbnstLXdpdGgtYXV0by1sb2FkLXNh ZmUtcGF0aH0uCisgCistQW55IHVzZWQgc3RyaW5nIEBmaWxleyRkZGlyfSB3aWxsIGdldCByZXBs YWNlZCBieSBAdmFye2RhdGEtZGlyZWN0b3J5fSB3aGljaCBpcworLWRldGVybWluZWQgYXQgQHZh bHVle0dEQk59IHN0YXJ0dXAgKEBweHJlZntEYXRhIEZpbGVzfSkuICBAZmlsZXskZGRpcn0gbXVz dCBiZQorLWJlIHBsYWNlZCBhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQgLS0tIGVpdGhlciBhbG9u ZSBvciBkZWxpbWl0ZWQgYnkgQGZpbGV7L30gb3IKKy1AZmlsZXtcfSBkaXJlY3Rvcnkgc2VwYXJh dG9ycywgZGVwZW5kaW5nIG9uIHRoZSBob3N0IHBsYXRmb3JtLgorLQorIFNldHRpbmcgdGhpcyB2 YXJpYWJsZSB0byBAZmlsZXsvfSBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24sCisg Y29ycmVzcG9uZGluZyBAdmFsdWV7R0RCTn0gY29uZmlndXJhdGlvbiBvcHRpb24gaXMKKyBAb3B0 aW9uey0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRofS4KK0BAIC0yNTEzNSw3ICsyNTEzOSw3 IEBAIHJlZ2lzdGVyaW5nIG9iamZpbGUtc3BlY2lmaWMgcHJldHR5LXByaW4KKyBAY2luZGV4IEBm aWxle0B2YXJ7b2JqZmlsZX0tZ2RiLnB5fQorIAorIFdoZW4gYSBuZXcgb2JqZWN0IGZpbGUgaXMg cmVhZCwgQHZhbHVle0dEQk59IGxvb2tzIGZvcgorLWEgZmlsZSBuYW1lZCBAZmlsZXtAdmFye29i amZpbGV9LWdkYi5weX0sCisrYSBmaWxlIG5hbWVkIEBmaWxle0B2YXJ7b2JqZmlsZX0tZ2RiLnB5 fSAod2UgY2FsbCBpdCBAdmFye3NjcmlwdC1uYW1lfSBiZWxvdyksCisgd2hlcmUgQHZhcntvYmpm aWxlfSBpcyB0aGUgb2JqZWN0IGZpbGUncyByZWFsIG5hbWUsIGZvcm1lZCBieSBlbnN1cmluZwor IHRoYXQgdGhlIGZpbGUgbmFtZSBpcyBhYnNvbHV0ZSwgZm9sbG93aW5nIGFsbCBzeW1saW5rcywg YW5kIHJlc29sdmluZworIEBjb2Rley59IGFuZCBAY29kZXsuLn0gY29tcG9uZW50cy4gIElmIHRo aXMgZmlsZSBleGlzdHMgYW5kIGlzCitAQCAtMjUxNDMsMTQgKzI1MTQ3LDQyIEBAIHJlYWRhYmxl LCBAdmFsdWV7R0RCTn0gd2lsbCBldmFsdWF0ZSBpdAorIAorIElmIHRoaXMgZmlsZSBkb2VzIG5v dCBleGlzdCwgYW5kIGlmIHRoZSBwYXJhbWV0ZXIKKyBAY29kZXtkZWJ1Zy1maWxlLWRpcmVjdG9y eX0gaXMgc2V0IChAcHhyZWZ7U2VwYXJhdGUgRGVidWcgRmlsZXN9KSwKKy10aGVuIEB2YWx1ZXtH REJOfSB3aWxsIGxvb2sgZm9yIEB2YXJ7cmVhbC1uYW1lfSBpbiBhbGwgb2YgdGhlCisrdGhlbiBA dmFsdWV7R0RCTn0gd2lsbCBsb29rIGZvciBAdmFye3NjcmlwdC1uYW1lfSBpbiBhbGwgb2YgdGhl CisgZGlyZWN0b3JpZXMgbWVudGlvbmVkIGluIHRoZSB2YWx1ZSBvZiBAY29kZXtkZWJ1Zy1maWxl LWRpcmVjdG9yeX0uCisgCisgRmluYWxseSwgaWYgdGhpcyBmaWxlIGRvZXMgbm90IGV4aXN0LCB0 aGVuIEB2YWx1ZXtHREJOfSB3aWxsIGxvb2sgZm9yCistYSBmaWxlIG5hbWVkIEBmaWxle0B2YXJ7 ZGF0YS1kaXJlY3Rvcnl9L3B5dGhvbi9hdXRvLWxvYWQvQHZhcntyZWFsLW5hbWV9fSwgd2hlcmUK Ky1AdmFye2RhdGEtZGlyZWN0b3J5fSBpcyBAdmFsdWV7R0RCTn0ncyBkYXRhIGRpcmVjdG9yeSAo YXZhaWxhYmxlIHZpYQorLUBjb2Rle3Nob3cgZGF0YS1kaXJlY3Rvcnl9LCBAcHhyZWZ7RGF0YSBG aWxlc30pLCBhbmQgQHZhcntyZWFsLW5hbWV9CistaXMgdGhlIG9iamVjdCBmaWxlJ3MgcmVhbCBu YW1lLCBhcyBkZXNjcmliZWQgYWJvdmUuCisrQHZhcntzY3JpcHQtbmFtZX0gZmlsZSBpbiBhbGwg b2YgdGhlIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBieToKKysKKytAdGFibGUgQGNvZGUKKytAYW5j aG9ye3NldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3Rvcnl9CisrQGtpbmRleCBzZXQgYXV0by1s b2FkIHNjcmlwdHMtZGlyZWN0b3J5CisrQGl0ZW0gc2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVj dG9yeSBAcntbfUB2YXJ7ZGlyZWN0b3JpZXN9QHJ7XX0KKytDb250cm9sIEB2YWx1ZXtHREJOfSBh dXRvLWxvYWRlZCBzY3JpcHRzIGxvY2F0aW9uLiAgTXVsdGlwbGUgZGlyZWN0b3J5IGVudHJpZXMK KyttYXkgYmUgZGVsaW1pdGVkIGJ5IHRoZSBob3N0IHBsYXRmb3JtIHBhdGggc2VwYXJhdG9yIGlu IHVzZQorKyhAc2FtcHs6fSBvbiBVbml4LCBAc2FtcHs7fSBvbiBNUy1XaW5kb3dzIGFuZCBNUy1E T1MpLgorKworK0VhY2ggZW50cnkgaGVyZSBuZWVkcyB0byBiZSBjb3ZlcmVkIGFsc28gYnkgdGhl IHNlY3VyaXR5IHNldHRpbmcKKytAY29kZXtzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0gKEBweHJl ZntzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0pLgorKworK0BhbmNob3J7d2l0aC1hdXRvLWxvYWQt ZGlyfQorK1RoaXMgdmFyaWFibGUgZGVmYXVsdHMgdG8gQGZpbGV7JGRkaXIvYXV0by1sb2FkfS4g IFRoZSBkZWZhdWx0IEBjb2Rle3NldAorK2F1dG8tbG9hZCBzYWZlLXBhdGh9IHZhbHVlIGNhbiBi ZSBhbHNvIG92ZXJyaWRlbiBieSBAdmFsdWV7R0RCTn0gY29uZmlndXJhdGlvbgorK29wdGlvbiBA b3B0aW9uey0td2l0aC1hdXRvLWxvYWQtZGlyfS4KKysKKytBbnkgdXNlZCBzdHJpbmcgQGZpbGV7 JGRkaXJ9IHdpbGwgZ2V0IHJlcGxhY2VkIGJ5IEB2YXJ7ZGF0YS1kaXJlY3Rvcnl9IHdoaWNoIGlz CisrZGV0ZXJtaW5lZCBhdCBAdmFsdWV7R0RCTn0gc3RhcnR1cCAoQHB4cmVme0RhdGEgRmlsZXN9 KS4gIEBmaWxleyRkZGlyfSBtdXN0IGJlCisrYmUgcGxhY2VkIGFzIGEgZGlyZWN0b3J5IGNvbXBv bmVudCAtLS0gZWl0aGVyIGFsb25lIG9yIGRlbGltaXRlZCBieSBAZmlsZXsvfSBvcgorK0BmaWxl e1x9IGRpcmVjdG9yeSBzZXBhcmF0b3JzLCBkZXBlbmRpbmcgb24gdGhlIGhvc3QgcGxhdGZvcm0u CisrCisrVGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdXNlcyBwYXRoIHNlcGFyYXRvciAoQHNhbXB7 On0gb24gR05VIGFuZCBVbml4Cisrc3lzdGVtcywgQHNhbXB7O30gb24gTVMtV2luZG93cyBhbmQg TVMtRE9TKSB0byBzZXBhcmF0ZSBkaXJlY3Rvcmllcywgc2ltaWxhcmx5CisrdG8gdGhlIEBlbnZ7 UEFUSH0gZW52aXJvbm1lbnQgdmFyaWFibGUuCisrCisrQGFuY2hvcntzaG93IGF1dG8tbG9hZCBz Y3JpcHRzLWRpcmVjdG9yeX0KKytAa2luZGV4IHNob3cgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0 b3J5CisrQGl0ZW0gc2hvdyBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnkKKytTaG93IEB2YWx1 ZXtHREJOfSBhdXRvLWxvYWRlZCBzY3JpcHRzIGxvY2F0aW9uLgorK0BlbmQgdGFibGUKKyAKKyBA dmFsdWV7R0RCTn0gZG9lcyBub3QgdHJhY2sgd2hpY2ggZmlsZXMgaXQgaGFzIGFscmVhZHkgYXV0 by1sb2FkZWQgdGhpcyB3YXkuCisgQHZhbHVle0dEQk59IHdpbGwgbG9hZCB0aGUgYXNzb2NpYXRl ZCBzY3JpcHQgZXZlcnkgdGltZSB0aGUgY29ycmVzcG9uZGluZwoKZGlmZiAtLWdpdCBhL2dkYi5z cGVjIGIvZ2RiLnNwZWMKaW5kZXggYzhiZTljMC4uZDRiOTZkYSAxMDA2NDQKLS0tIGEvZ2RiLnNw ZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTM1LDcgKzM1LDcgQEAgVmVyc2lvbjogNy40LjUwLiV7c25h cH0KIAogIyBUaGUgcmVsZWFzZSBhbHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51 bWJlciwgc3RhcnQgaXQgYXQgMS4KICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1l JyB0byBzdGF5IGZ1bGx5IHJwbSBkZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRlc3Rp bmcuCi1SZWxlYXNlOiA0MyV7P2Rpc3R9CitSZWxlYXNlOiA0NCV7P2Rpc3R9CiAKIExpY2Vuc2U6 IEdQTHYzKyBhbmQgR1BMdjMrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMdjIrIGFuZCBHUEx2Misg d2l0aCBleGNlcHRpb25zIGFuZCBHUEwrIGFuZCBMR1BMdjIrIGFuZCBCU0QgYW5kIFB1YmxpYyBE b21haW4KIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMKQEAgLTU5MCwyNCArNTkwLDI4IEBA IFBhdGNoNjYxOiBnZGItc3RhbGUtZnJhbWVfaW5mby5wYXRjaAogCiAjIFNlY3VyaXR5IGZpeCBm b3IgbG9hZGluZyB1bnRydXN0ZWQgaW5mZXJpb3JzLCBzZWUgInNldCBhdXRvLWxvYWQiIChCWiA3 NTYxMTcpLgogIz1wdXNoCi1QYXRjaDY2MjogZ2RiLWF1dG9sb2FkLTAxb2YxOC5wYXRjaAotUGF0 Y2g2NjM6IGdkYi1hdXRvbG9hZC0wMm9mMTgucGF0Y2gKLVBhdGNoNjY0OiBnZGItYXV0b2xvYWQt MDNvZjE4LnBhdGNoCi1QYXRjaDY2NTogZ2RiLWF1dG9sb2FkLTA0b2YxOC5wYXRjaAotUGF0Y2g2 NjY6IGdkYi1hdXRvbG9hZC0wNW9mMTgucGF0Y2gKLVBhdGNoNjY3OiBnZGItYXV0b2xvYWQtMDZv ZjE4LnBhdGNoCi1QYXRjaDY2ODogZ2RiLWF1dG9sb2FkLTA3b2YxOC5wYXRjaAotUGF0Y2g2Njk6 IGdkYi1hdXRvbG9hZC0wOG9mMTgucGF0Y2gKLVBhdGNoNjcwOiBnZGItYXV0b2xvYWQtMDlvZjE4 LnBhdGNoCi1QYXRjaDY3MTogZ2RiLWF1dG9sb2FkLTEwb2YxOC5wYXRjaAotUGF0Y2g2NzI6IGdk Yi1hdXRvbG9hZC0xMW9mMTgucGF0Y2gKLVBhdGNoNjczOiBnZGItYXV0b2xvYWQtMTJvZjE4LnBh dGNoCi1QYXRjaDY3NDogZ2RiLWF1dG9sb2FkLTEzb2YxOC5wYXRjaAotUGF0Y2g2NzU6IGdkYi1h dXRvbG9hZC0xNG9mMTgucGF0Y2gKLVBhdGNoNjc2OiBnZGItYXV0b2xvYWQtMTVvZjE4LnBhdGNo Ci1QYXRjaDY3NzogZ2RiLWF1dG9sb2FkLTE2b2YxOC5wYXRjaAotUGF0Y2g2Nzg6IGdkYi1hdXRv bG9hZC0xN29mMTgucGF0Y2gKLVBhdGNoNjc5OiBnZGItYXV0b2xvYWQtMThvZjE4LnBhdGNoCitQ YXRjaDY2MjogZ2RiLWF1dG9sb2FkLTAxb2YyMi5wYXRjaAorUGF0Y2g2NjM6IGdkYi1hdXRvbG9h ZC0wMm9mMjIucGF0Y2gKK1BhdGNoNjY0OiBnZGItYXV0b2xvYWQtMDNvZjIyLnBhdGNoCitQYXRj aDY2NTogZ2RiLWF1dG9sb2FkLTA0b2YyMi5wYXRjaAorUGF0Y2g2NjY6IGdkYi1hdXRvbG9hZC0w NW9mMjIucGF0Y2gKK1BhdGNoNjY3OiBnZGItYXV0b2xvYWQtMDZvZjIyLnBhdGNoCitQYXRjaDY2 ODogZ2RiLWF1dG9sb2FkLTA3b2YyMi5wYXRjaAorUGF0Y2g2Njk6IGdkYi1hdXRvbG9hZC0wOG9m MjIucGF0Y2gKK1BhdGNoNjcwOiBnZGItYXV0b2xvYWQtMDlvZjIyLnBhdGNoCitQYXRjaDY3MTog Z2RiLWF1dG9sb2FkLTEwb2YyMi5wYXRjaAorUGF0Y2g2NzI6IGdkYi1hdXRvbG9hZC0xMW9mMjIu cGF0Y2gKK1BhdGNoNjczOiBnZGItYXV0b2xvYWQtMTJvZjIyLnBhdGNoCitQYXRjaDY3NDogZ2Ri LWF1dG9sb2FkLTEzb2YyMi5wYXRjaAorUGF0Y2g2NzU6IGdkYi1hdXRvbG9hZC0xNG9mMjIucGF0 Y2gKK1BhdGNoNjc2OiBnZGItYXV0b2xvYWQtMTVvZjIyLnBhdGNoCitQYXRjaDY3NzogZ2RiLWF1 dG9sb2FkLTE2b2YyMi5wYXRjaAorUGF0Y2g2Nzg6IGdkYi1hdXRvbG9hZC0xN29mMjIucGF0Y2gK K1BhdGNoNjc5OiBnZGItYXV0b2xvYWQtMThvZjIyLnBhdGNoCitQYXRjaDY4MDogZ2RiLWF1dG9s b2FkLTE5b2YyMi5wYXRjaAorUGF0Y2g2ODE6IGdkYi1hdXRvbG9hZC0yMG9mMjIucGF0Y2gKK1Bh dGNoNjgyOiBnZGItYXV0b2xvYWQtMjFvZjIyLnBhdGNoCitQYXRjaDY4MzogZ2RiLWF1dG9sb2Fk LTIyb2YyMi5wYXRjaAogCiAlaWYgMCV7IT9yaGVsOjF9IHx8IDAlez9yaGVsfSA+IDYKICMgUkxf U1RBVEVfRkVET1JBX0dEQiB3b3VsZCBub3QgYmUgZm91bmQgZm9yOgpAQCAtOTE3LDYgKzkyMSwx MCBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9w LWV4cC5jCiAlcGF0Y2g2NzcgLXAxCiAlcGF0Y2g2NzggLXAxCiAlcGF0Y2g2NzkgLXAxCislcGF0 Y2g2ODAgLXAxCislcGF0Y2g2ODEgLXAxCislcGF0Y2g2ODIgLXAxCislcGF0Y2g2ODMgLXAxCiAK ICVwYXRjaDM5MyAtcDEKICVpZiAwJXshP2VsNToxfSB8fCAwJXs/c2NsOjF9CkBAIC0xMDM4LDkg KzEwNDYsOSBAQCAkKDogUkhFTC01IGxpYnJwbSBoYXMgaW5jb21wYXRpYmxlIEFQSS4gKQkJCVwK ICVlbHNlCiAJLS1kaXNhYmxlLWlucHJvY2Vzcy1hZ2VudAkJCQlcCiAlZW5kaWYKLSQoOiAle19i aW5kaXJ9L21vbm8tZ2RiLnB5IGlzIHdvcmthcm91bmQgZm9yIG1vbm8gQlogODE1NTAxLiApCQkJ CQkJCQkJCQlcCi0kKDogZm9yIHRoZSBzY2wgcGFydCBzZWUgdW5maXhlZCBCWiA4MTU5MTAuICkJ CQkJCQkJCQkJCQkJXAotCS0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPSV7X2RhdGFkaXJ9L2dk Yi9hdXRvLWxvYWQ6L3Vzci9saWIvZGVidWclez9zY2w6OiV7X3Jvb3RfZGF0YWRpcn0vZ2RiL2F1 dG8tbG9hZH06JXtfcm9vdF9iaW5kaXJ9L21vbm8tZ2RiLnB5CVwKKyQoOiAle19iaW5kaXJ9L21v bm8tZ2RiLnB5IGlzIHdvcmthcm91bmQgZm9yIG1vbm8gQlogODE1NTAxLiApCQkJCQkJCQkJCVwK KwkgICAgICAtLXdpdGgtYXV0by1sb2FkLWRpcj0nJGRkaXIvYXV0by1sb2FkJXs/c2NsOjole19y b290X2RhdGFkaXJ9L2dkYi9hdXRvLWxvYWR9JwkJCQkJCVwKKwktLXdpdGgtYXV0by1sb2FkLXNh ZmUtcGF0aD0nJGRkaXIvYXV0by1sb2FkJXs/c2NsOjole19yb290X2RhdGFkaXJ9L2dkYi9hdXRv LWxvYWR9Oi91c3IvbGliL2RlYnVnOiV7X3Jvb3RfYmluZGlyfS9tb25vLWdkYi5weScJXAogJWlm YXJjaCBzcGFyYyBzcGFyY3Y5CiAJc3BhcmMtJXtfdmVuZG9yfS0le190YXJnZXRfb3N9JXs/X2du dX0KICVlbHNlCkBAIC0xNDAxLDYgKzE0MDksOSBAQCBmaQogJWVuZGlmICMgMCV7IT9lbDU6MX0g fHwgIiV7X3RhcmdldF9jcHV9IiA9PSAibm9hcmNoIgogCiAlY2hhbmdlbG9nCisqIFdlZCBNYXkg IDkgMjAxMiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjQu NTAuMjAxMjAxMjAtNDQuZmMxNworLSBGaXggaW4gInNldCBhdXRvLWxvYWQiIHBhdGNoc2V0IGZv ciBTQ0wgc2NyaXB0cyBpbmhlcml0YW5jZSAoQlogODE1OTEwKS4KKwogKiBXZWQgQXByIDI1IDIw MTIgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy40LjUwLjIw MTIwMTIwLTQzLmZjMTcKIC0gW1JIRUw1XSBXb3JrYXJvdW5kIGtlcm5lbCBmb3IgZGV0YWNoaW5n IFNJR1NUT1BwZWQgcHJvY2Vzc2VzIChCWiA4MDkzODIpLgogCg==