From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: [scl] Disable Python frame filters on scl. Date: Thu, 23 Jul 2026 18:31:00 GMT Message-ID: <178483146095.1.13477044737438193960.rpms-gdb-19d445823809@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 19d445823809e4d540df6401c1b8b7b84acc8dfc ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogMTlkNDQ1ODIzODA5ZTRkNTQwZGY2NDAxYzFiOGI3Yjg0YWNjOGRmYwog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMy0wNi0xMFQxNTowNDozNyswMjowMAogICAg ICAgICAgICBTdGF0cyAgOiArMzE4NC8tMjkwNyBpbiAyMSBmaWxlKHMpCiAgICAgICAgICAgIFVS TCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvMTlkNDQ1ODIz ODA5ZTRkNTQwZGY2NDAxYzFiOGI3Yjg0YWNjOGRmYz9icmFuY2g9Zml4LWR1cC1wYXRjaAoKICAg ICAgICAgICAgTG9nOgogICAgICAgICAgICBbc2NsXSBEaXNhYmxlIFB5dGhvbiBmcmFtZSBmaWx0 ZXJzIG9uIHNjbC4KCi0gVXBkYXRlIGxpYnJhcmllcyBvcGVuaW5nIHBlcmZvcm1hbmNlIGZpeCBm cm9tIHVwc3RyZWFtLgotIEZpeCBDKysgbG9va3VwcyBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIChE b3VnIEV2YW5zLCBCWiA5NzI2NzcpLgoKLS0tCmRpZmYgLS1naXQgYS9nZGItY3h4LXBlcmZvcm1h bmNlLTFvZjIucGF0Y2ggYi9nZGItY3h4LXBlcmZvcm1hbmNlLTFvZjIucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA3NzNlYwotLS0gL2Rldi9udWxsCisrKyBiL2dk Yi1jeHgtcGVyZm9ybWFuY2UtMW9mMi5wYXRjaApAQCAtMCwwICsxLDIwOSBAQAoraHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMy0wNi9tc2cwMDAzNC5odG1sCisKKyMjIyBzcmMv Z2RiL0NoYW5nZUxvZwkyMDEzLzA2LzA1IDIwOjQzOjUzCTEuMTU2ODkKKyMjIyBzcmMvZ2RiL0No YW5nZUxvZwkyMDEzLzA2LzA1IDIyOjI4OjUxCTEuMTU2OTAKKyMjIC0xLDMgKzEsMTQgQEAKKysy MDEzLTA2LTA1ICBEb3VnIEV2YW5zICA8ZGplQGdvb2dsZS5jb20+CisrCSAgICBLZWl0aCBTZWl0 eiAgPGtlaXRoc0ByZWRoYXQuY29tPgorKworKwlQUiAxNTUxOQorKwkqIGNwLW5hbWVzcGFjZS5j IChmaW5kX3N5bWJvbF9pbl9iYXNlY2xhc3MpOiBDYWxsCisrCWNwX2xvb2t1cF9zeW1ib2xfaW5f bmFtZXNwYWNlIGluc3RlYWQgb2YgY3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2UuCisrCUNoZWNr IHJlc3VsdCBvZiBjYWxsIHRvIGxvb2t1cF9zeW1ib2xfc3RhdGljLgorKwlDYWxsIGxvb2t1cF9z dGF0aWNfc3ltYm9sX2F1eCB1bmNvbmRpdGlvbmFsbHkuCisrCUNhbGwgY2hlY2tfdHlwZWRlZiBv biBiYXNlIHR5cGVzIGJlZm9yZSBhY2Nlc3NpbmcgdGhlbS4KKysJKGNwX2xvb2t1cF9uZXN0ZWRf c3ltYm9sKTogRml4IGNvbW1lbnQuCisrCisgMjAxMy0wNi0wNSAgTHVpcyBNYWNoYWRvICA8bGd1 c3Rhdm9AY29kZXNvdXJjZXJ5LmNvbT4KKyAKKyAJKiBnbnUtdjMtYWJpLmMgKGdudXYzX3NraXBf dHJhbXBvbGluZSk6IEhhbmRsZSB0aHVuaworLS0tIHNyYy9nZGIvY3AtbmFtZXNwYWNlLmMJMjAx My8wNS8zMCAxNzoyOTowNgkxLjY3CisrKysgc3JjL2dkYi9jcC1uYW1lc3BhY2UuYwkyMDEzLzA2 LzA1IDIyOjI4OjUxCTEuNjgKK0BAIC03MjAsMzYgKzcyMCw0MCBAQAorICAgZm9yIChpID0gMDsg aSA8IFRZUEVfTl9CQVNFQ0xBU1NFUyAocGFyZW50X3R5cGUpOyArK2kpCisgICAgIHsKKyAgICAg ICBzaXplX3QgbGVuOworKyAgICAgIHN0cnVjdCB0eXBlICpiYXNlX3R5cGUgPSBUWVBFX0JBU0VD TEFTUyAocGFyZW50X3R5cGUsIGkpOworICAgICAgIGNvbnN0IGNoYXIgKmJhc2VfbmFtZSA9IFRZ UEVfQkFTRUNMQVNTX05BTUUgKHBhcmVudF90eXBlLCBpKTsKKyAKKyAgICAgICBpZiAoYmFzZV9u YW1lID09IE5VTEwpCisgCWNvbnRpbnVlOworIAorICAgICAgIC8qIFNlYXJjaCB0aGlzIHBhcnRp Y3VsYXIgYmFzZSBjbGFzcy4gICovCistICAgICAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9uYW1l c3BhY2UgKGJhc2VfbmFtZSwgbmFtZSwgYmxvY2ssIFZBUl9ET01BSU4pOworKyAgICAgIHN5bSA9 IGNwX2xvb2t1cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChiYXNlX25hbWUsIG5hbWUsIGJsb2NrLAor KwkJCQkJICAgVkFSX0RPTUFJTiwgMCk7CisgICAgICAgaWYgKHN5bSAhPSBOVUxMKQorIAlicmVh azsKKyAKKysgICAgICAvKiBOb3cgc2VhcmNoIGFsbCBzdGF0aWMgZmlsZS1sZXZlbCBzeW1ib2xz LiAgV2UgaGF2ZSB0byBkbyB0aGlzIGZvcgorKwkgdGhpbmdzIGxpa2UgdHlwZWRlZnMgaW4gdGhl IGNsYXNzLiAgRmlyc3Qgc2VhcmNoIGluIHRoaXMgc3ltdGFiLAorKwkgd2hhdCB3ZSB3YW50IGlz IHBvc3NpYmx5IHRoZXJlLiAgKi8KKyAgICAgICBsZW4gPSBzdHJsZW4gKGJhc2VfbmFtZSkgKyAy ICsgc3RybGVuIChuYW1lKSArIDE7CisgICAgICAgY29uY2F0ZW5hdGVkX25hbWUgPSB4cmVhbGxv YyAoY29uY2F0ZW5hdGVkX25hbWUsIGxlbik7CisgICAgICAgeHNucHJpbnRmIChjb25jYXRlbmF0 ZWRfbmFtZSwgbGVuLCAiJXM6OiVzIiwgYmFzZV9uYW1lLCBuYW1lKTsKKyAgICAgICBzeW0gPSBs b29rdXBfc3ltYm9sX3N0YXRpYyAoY29uY2F0ZW5hdGVkX25hbWUsIGJsb2NrLCBWQVJfRE9NQUlO KTsKKysgICAgICBpZiAoc3ltICE9IE5VTEwpCisrCWJyZWFrOworIAorLSAgICAgIC8qIElmIHRo ZXJlIGlzIGN1cnJlbnRseSBubyBCTE9DSywgZS5nLiwgdGhlIGluZmVyaW9yIGhhc24ndCB5ZXQK Ky0JIGJlZW4gc3RhcnRlZCwgdGhlbiB0cnkgc2VhcmNoaW5nIGFsbCBTVEFUSUNfQkxPQ0sgc3lt Ym9scyBpbgorLQkgYWxsIG9iamZpbGVzLiAgKi8KKy0gICAgICBpZiAoYmxvY2sgPT0gTlVMTCkK Ky0JeworLQkgIHN5bSA9IGxvb2t1cF9zdGF0aWNfc3ltYm9sX2F1eCAoY29uY2F0ZW5hdGVkX25h bWUsIFZBUl9ET01BSU4pOworLQkgIGlmIChzeW0gIT0gTlVMTCkKKy0JICAgIGJyZWFrOworLQl9 CisrICAgICAgLyogTm9wZS4gIFdlIG5vdyBoYXZlIHRvIHNlYXJjaCBhbGwgc3RhdGljIGJsb2Nr cyBpbiBhbGwgb2JqZmlsZXMsCisrCSBldmVuIGlmIGJsb2NrICE9IE5VTEwsIGJlY2F1c2UgdGhl cmUncyBubyBndWFyYW50ZWVzIGFzIHRvIHdoaWNoCisrCSBzeW10YWIgdGhlIHN5bWJvbCB3ZSB3 YW50IGlzIGluLiAgKi8KKysgICAgICBzeW0gPSBsb29rdXBfc3RhdGljX3N5bWJvbF9hdXggKGNv bmNhdGVuYXRlZF9uYW1lLCBWQVJfRE9NQUlOKTsKKysgICAgICBpZiAoc3ltICE9IE5VTEwpCisr CWJyZWFrOworIAorICAgICAgIC8qIElmIHRoaXMgY2xhc3MgaGFzIGJhc2UgY2xhc3Nlcywgc2Vh cmNoIHRoZW0gbmV4dC4gICovCistICAgICAgaWYgKFRZUEVfTl9CQVNFQ0xBU1NFUyAoVFlQRV9C QVNFQ0xBU1MgKHBhcmVudF90eXBlLCBpKSkgPiAwKQorKyAgICAgIENIRUNLX1RZUEVERUYgKGJh c2VfdHlwZSk7CisrICAgICAgaWYgKFRZUEVfTl9CQVNFQ0xBU1NFUyAoYmFzZV90eXBlKSA+IDAp CisgCXsKKy0JICBzeW0gPSBmaW5kX3N5bWJvbF9pbl9iYXNlY2xhc3MgKFRZUEVfQkFTRUNMQVNT IChwYXJlbnRfdHlwZSwgaSksCistCQkJCQkgIG5hbWUsIGJsb2NrKTsKKysJICBzeW0gPSBmaW5k X3N5bWJvbF9pbl9iYXNlY2xhc3MgKGJhc2VfdHlwZSwgbmFtZSwgYmxvY2spOworIAkgIGlmIChz eW0gIT0gTlVMTCkKKyAJICAgIGJyZWFrOworIAl9CitAQCAtNzk3LDggKzgwMSw4IEBACisgCWlm IChzeW0gIT0gTlVMTCkKKyAJICByZXR1cm4gc3ltOworIAorLQkvKiBOb3cgc2VhcmNoIGFsbCBz dGF0aWMgZmlsZS1sZXZlbCBzeW1ib2xzLiAgTm90IHN0cmljdGx5CistCSAgIGNvcnJlY3QsIGJ1 dCBtb3JlIHVzZWZ1bCB0aGFuIGFuIGVycm9yLiAgV2UgZG8gbm90IHRyeSB0bworKwkvKiBOb3cg c2VhcmNoIGFsbCBzdGF0aWMgZmlsZS1sZXZlbCBzeW1ib2xzLiAgV2UgaGF2ZSB0byBkbyB0aGlz CisrCSAgIGZvciB0aGluZ3MgbGlrZSB0eXBlZGVmcyBpbiB0aGUgY2xhc3MuICBXZSBkbyBub3Qg dHJ5IHRvCisgCSAgIGd1ZXNzIGFueSBpbXBvcnRlZCBuYW1lc3BhY2UgYXMgZXZlbiB0aGUgZnVs bHkgc3BlY2lmaWVkCisgCSAgIG5hbWVzcGFjZSBzZWFyY2ggaXMgYWxyZWFkeSBub3QgQysrIGNv bXBsaWFudCBhbmQgbW9yZQorIAkgICBhc3N1bXB0aW9ucyBjb3VsZCBtYWtlIGl0IHRvbyBtYWdp Yy4gICovCisjIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMTMvMDYvMDUgMjA6Mzg6 MzcJMS4zNjg1CisjIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIwMTMvMDYvMDUgMjI6 Mjg6NTEJMS4zNjg2CisjIyAtMSwzICsxLDExIEBACisrMjAxMy0wNi0wNSAgRG91ZyBFdmFucyAg PGRqZUBnb29nbGUuY29tPgorKwkgICAgS2VpdGggU2VpdHogIDxrZWl0aHNAcmVkaGF0LmNvbT4K KysKKysJKiBnZGIuY3AvZGVyaXZhdGlvbjIuY2M6IE5ldyBmaWxlLgorKwkqIGdkYi5jcC9kZXJp dmF0aW9uLmNjIChtYWluKTogQ2FsbCBmb28yLgorKwkqIGdkYi5jcC9kZXJpdmF0aW9uLmV4cDog QWRkIHRlc3RzIGZvciB0eXBlZGVmcyBpbiBhbm90aGVyCisrCWZpbGUsIGFuZCB3aGVuIHRoZXJl J3MgYW4gYWN0aXZlIGJsb2NrLgorKworIDIwMTMtMDYtMDUgIEx1aXMgTWFjaGFkbyAgPGxndXN0 YXZvQGNvZGVzb3VyY2VyeS5jb20+CisgCisgCSogZ2RiLmNwL3ZpcnRmdW5jLmV4cCAobWFrZV9v bmVfdnRhYmxlX3Jlc3VsdCk6IEhhbmRsZSBleHRyYSBvdXRwdXQKKy0tLSBzcmMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvZGVyaXZhdGlvbjIuY2MKKysrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av ZGVyaXZhdGlvbjIuY2MJMjAxMy0wNi0xMCAxMjozNToxNC44ODEyNzIyNDcgKzAwMDAKK0BAIC0w LDAgKzEsNDkgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRl YnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisr ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyAgICovCisr CisrLyogQSBjb3B5IG9mIHNvbWUgY2xhc3NlcyBpbiBkZXJpdmF0aW9uLmNjIHNvIHRoYXQgd2Ug Y2FuIHRlc3Qgc3ltYm9sIGxvb2t1cAorKyAgIGluIG90aGVyIENVcy4gICovCisrCisrY2xhc3Mg QTIgeworK3B1YmxpYzoKKysgICAgdHlwZWRlZiBpbnQgdmFsdWVfdHlwZTsKKysgICAgdmFsdWVf dHlwZSBhOworKworKyAgICBBMigpCisrICAgIHsKKysgICAgICAgIGE9MTsKKysgICAgfQorK307 CisrCisrY2xhc3MgRDIgOiBwdWJsaWMgQTIgeworK3B1YmxpYzoKKysgICAgdmFsdWVfdHlwZSBk OworKworKyAgICBEMigpCisrICAgIHsKKysgICAgICAgIGQ9NzsKKysgICAgfQorK307CisrCisr dm9pZAorK2ZvbzIgKCkKKyt7CisrICBEMiBkMl9pbnN0YW5jZTsKKysgIGQyX2luc3RhbmNlLmEg PSA0MjsKKysgIGQyX2luc3RhbmNlLmQgPSA0MzsKKyt9CistLS0gc3JjL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL2Rlcml2YXRpb24uY2MJMjAxMy8wMS8wMSAwNjozMzoyNwkxLjUKKysrKyBzcmMvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvZGVyaXZhdGlvbi5jYwkyMDEzLzA2LzA1IDIyOjI4OjUxCTEuNgor QEAgLTE2LDYgKzE2LDggQEAKKyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAgICAqLworIAorK2V4dGVybiB2 b2lkIGZvbzIgKCk7IC8qIGZyb20gZGVyaXZhdGlvbjIuY2MgKi8KKysKKyBuYW1lc3BhY2UgTiB7 CisgICB0eXBlZGVmIGRvdWJsZSB2YWx1ZV90eXBlOworICAgc3RydWN0IEJhc2UgeyB0eXBlZGVm IGludCB2YWx1ZV90eXBlOyB9OworQEAgLTMwNiw5ICszMDgsNyBAQAorICAgICBOOjpEZXJpdmVk Ojp2YWx1ZV90eXBlIGQgPSAxOworICAgICBOOjp2YWx1ZV90eXBlIG4gPSAzLjA7CisgICAgIGRv YmouZG9pdCAoKTsKKysgICAgZm9vMiAoKTsKKyAgICAgcmV0dXJuIDA7CisgICAgIAorIH0KKy0K Ky0gICAgCistICAgIAorLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9kZXJpdmF0aW9uLmV4 cAkyMDEzLzAxLzAxIDA2OjMzOjI3CTEuMjQKKysrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av ZGVyaXZhdGlvbi5leHAJMjAxMy8wNi8wNSAyMjoyODo1MQkxLjI1CitAQCAtMzIsMTQgKzMyLDE1 IEBACisgCisgbG9hZF9saWIgImNwLXN1cHBvcnQuZXhwIgorIAorLXN0YW5kYXJkX3Rlc3RmaWxl IC5jYworK3N0YW5kYXJkX3Rlc3RmaWxlIGRlcml2YXRpb24uY2MgZGVyaXZhdGlvbjIuY2MKKyAK Ky1pZiB7W3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNyY2Zp bGUge2RlYnVnIGMrK31dfSB7CisraWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5l eHAgJHRlc3RmaWxlIFwKKysJW2xpc3QgJHNyY2ZpbGUgJHNyY2ZpbGUyXSB7ZGVidWcgYysrfV19 IHsKKyAgICAgcmV0dXJuIC0xCisgfQorIAorICMgQ2hlY2sgaW5oZXJpdGFuY2Ugb2YgdHlwZWRl ZnMuCistZm9yZWFjaCBrbGFzcyB7IkEiICJEIiAiRSIgIkYifSB7CisrZm9yZWFjaCBrbGFzcyB7 IkEiICJEIiAiRSIgIkYiICJBMiIgIkQyIn0geworICAgICBnZGJfdGVzdCAicHR5cGUgJHtrbGFz c306OnZhbHVlX3R5cGUiICJ0eXBlID0gaW50IgorICAgICBnZGJfdGVzdCAid2hhdGlzICR7a2xh c3N9Ojp2YWx1ZV90eXBlIiAidHlwZSA9IGludCIKKyAgICAgZ2RiX3Rlc3QgInAgKCR7a2xhc3N9 Ojp2YWx1ZV90eXBlKSAwIiAiID0gMCIKK0BAIC01Nyw2ICs1OCwxMyBAQAorICAgICBjb250aW51 ZQorIH0KKyAKKysjIENoZWNrIGluaGVyaXRhbmNlIG9mIHR5cGVkZWZzIGFnYWluLCBidXQgdGhp cyB0aW1lIHdpdGggYW4gYWN0aXZlIGJsb2NrLgorK2ZvcmVhY2gga2xhc3MgeyJBIiAiRCIgIkEy IiAiRDIifSB7CisrICAgIGdkYl90ZXN0ICJwdHlwZSAke2tsYXNzfTo6dmFsdWVfdHlwZSIgInR5 cGUgPSBpbnQiCisrICAgIGdkYl90ZXN0ICJ3aGF0aXMgJHtrbGFzc306OnZhbHVlX3R5cGUiICJ0 eXBlID0gaW50IgorKyAgICBnZGJfdGVzdCAicCAoJHtrbGFzc306OnZhbHVlX3R5cGUpIDAiICIg PSAwIgorK30KKysKKyBnZGJfdGVzdCAidXAiICIuKm1haW4uKiIgInVwIGZyb20gbWFya2VyMSIK KyAKKyAjIFByaW50IGNsYXNzIHR5cGVzIGFuZCB2YWx1ZXMuCgpkaWZmIC0tZ2l0IGEvZ2RiLWN4 eC1wZXJmb3JtYW5jZS0yb2YyLnBhdGNoIGIvZ2RiLWN4eC1wZXJmb3JtYW5jZS0yb2YyLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNTY5OGQKLS0tIC9kZXYvbnVs bAorKysgYi9nZGItY3h4LXBlcmZvcm1hbmNlLTJvZjIucGF0Y2gKQEAgLTAsMCArMSw1OCBAQAor aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMy0wNi9tc2cwMDA0NC5odG1sCisK KyMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMy8wNi8wNiAxOTowMDoxMwkxLjM2 ODgKKyMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMy8wNi8wNiAxOTowMjoyNgkx LjM2ODkKKyMjIC0xLDMgKzEsNyBAQAorKzIwMTMtMDYtMDYgIERvdWcgRXZhbnMgIDxkamVAZ29v Z2xlLmNvbT4KKysKKysJKiBnZGIuY3AvZGVyaXZhdGlvbi5leHA6IE1ha2UgdGVzdHMgaGF2ZSB1 bmlxdWUgbmFtZXMuCisrCisgMjAxMy0wNi0wNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQu Y29tPgorIAorIAkqIGdkYi5iYXNlL2R1bXAuZXhwIChjYXB0dXJlX3ZhbHVlKTogRG9uJ3QgcHV0 IGV4cHJlc3Npb24gaW50bworLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9kZXJpdmF0aW9u LmV4cAkyMDEzLzA2LzA1IDIyOjI4OjUxCTEuMjUKKysrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvZGVyaXZhdGlvbi5leHAJMjAxMy8wNi8wNiAxOTowMjoyNwkxLjI2CitAQCAtNDAsMTUgKzQw LDE3IEBACisgfQorIAorICMgQ2hlY2sgaW5oZXJpdGFuY2Ugb2YgdHlwZWRlZnMuCistZm9yZWFj aCBrbGFzcyB7IkEiICJEIiAiRSIgIkYiICJBMiIgIkQyIn0geworLSAgICBnZGJfdGVzdCAicHR5 cGUgJHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBlID0gaW50IgorLSAgICBnZGJfdGVzdCAid2hh dGlzICR7a2xhc3N9Ojp2YWx1ZV90eXBlIiAidHlwZSA9IGludCIKKy0gICAgZ2RiX3Rlc3QgInAg KCR7a2xhc3N9Ojp2YWx1ZV90eXBlKSAwIiAiID0gMCIKKy19CistZm9yZWFjaCBrbGFzcyB7Iloi ICJaWiJ9IHsKKy0gICAgZ2RiX3Rlc3QgInB0eXBlICR7a2xhc3N9Ojp2YWx1ZV90eXBlIiAidHlw ZSA9IGZsb2F0IgorLSAgICBnZGJfdGVzdCAid2hhdGlzICR7a2xhc3N9Ojp2YWx1ZV90eXBlIiAi dHlwZSA9IGZsb2F0IgorLSAgICBnZGJfdGVzdCAicCAoJHtrbGFzc306OnZhbHVlX3R5cGUpIDAi ICIgPSAwIgorK3dpdGhfdGVzdF9wcmVmaXggImJlZm9yZSBydW4iIHsKKysgICAgZm9yZWFjaCBr bGFzcyB7IkEiICJEIiAiRSIgIkYiICJBMiIgIkQyIn0geworKwlnZGJfdGVzdCAicHR5cGUgJHtr bGFzc306OnZhbHVlX3R5cGUiICJ0eXBlID0gaW50IgorKwlnZGJfdGVzdCAid2hhdGlzICR7a2xh c3N9Ojp2YWx1ZV90eXBlIiAidHlwZSA9IGludCIKKysJZ2RiX3Rlc3QgInAgKCR7a2xhc3N9Ojp2 YWx1ZV90eXBlKSAwIiAiID0gMCIKKysgICAgfQorKyAgICBmb3JlYWNoIGtsYXNzIHsiWiIgIlpa In0geworKwlnZGJfdGVzdCAicHR5cGUgJHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBlID0gZmxv YXQiCisrCWdkYl90ZXN0ICJ3aGF0aXMgJHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBlID0gZmxv YXQiCisrCWdkYl90ZXN0ICJwICgke2tsYXNzfTo6dmFsdWVfdHlwZSkgMCIgIiA9IDAiCisrICAg IH0KKyB9CisgCisgIyBTZXQgaXQgdXAgYXQgYSBicmVha3BvaW50IHNvIHdlIGNhbiBwbGF5IHdp dGggdGhlIHZhcmlhYmxlIHZhbHVlcy4KK0BAIC01OSwxMCArNjEsMTIgQEAKKyB9CisgCisgIyBD aGVjayBpbmhlcml0YW5jZSBvZiB0eXBlZGVmcyBhZ2FpbiwgYnV0IHRoaXMgdGltZSB3aXRoIGFu IGFjdGl2ZSBibG9jay4KKy1mb3JlYWNoIGtsYXNzIHsiQSIgIkQiICJBMiIgIkQyIn0geworLSAg ICBnZGJfdGVzdCAicHR5cGUgJHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBlID0gaW50IgorLSAg ICBnZGJfdGVzdCAid2hhdGlzICR7a2xhc3N9Ojp2YWx1ZV90eXBlIiAidHlwZSA9IGludCIKKy0g ICAgZ2RiX3Rlc3QgInAgKCR7a2xhc3N9Ojp2YWx1ZV90eXBlKSAwIiAiID0gMCIKKyt3aXRoX3Rl c3RfcHJlZml4ICJhdCBtYXJrZXIxIiB7CisrICAgIGZvcmVhY2gga2xhc3MgeyJBIiAiRCIgIkEy IiAiRDIifSB7CisrCWdkYl90ZXN0ICJwdHlwZSAke2tsYXNzfTo6dmFsdWVfdHlwZSIgInR5cGUg PSBpbnQiCisrCWdkYl90ZXN0ICJ3aGF0aXMgJHtrbGFzc306OnZhbHVlX3R5cGUiICJ0eXBlID0g aW50IgorKwlnZGJfdGVzdCAicCAoJHtrbGFzc306OnZhbHVlX3R5cGUpIDAiICIgPSAwIgorKyAg ICB9CisgfQorIAorIGdkYl90ZXN0ICJ1cCIgIi4qbWFpbi4qIiAidXAgZnJvbSBtYXJrZXIxIgoK ZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS0xb2Y3LnBhdGNoIGIvZ2RiLWRsb3Bl bi1zdGFwLXByb2JlLTFvZjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNi NzQ4MDIuLjAwMDAwMDAKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTFvZjcucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1wYXRjaGVzLzIwMTMtMDUvbXNnMDA2MjUuaHRtbAotU3ViamVjdDogW1JGQSAxLzddIFByb2Jl cyBBUEkgY29udmVuaWVuY2UgcGF0Y2gKLQotCi0tLXV1S1Z6QW1CK2MrelFsaHUKLUNvbnRlbnQt VHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQotQ29udGVudC1EaXNwb3NpdGlvbjog aW5saW5lCi0KLVRoaXMgcGF0Y2ggZXhwb3NlcyBwYXJ0IG9mIHRoZSBwcm9iZXMgQVBJIGluIGEg bW9yZSBjb252ZW5pZW50Ci13YXkuICBJJ3ZlIGluY2x1ZGVkIGl0IGZvciBjb21wbGV0ZW5lc3Ms IGJ1dCBpdCBoYXMgcHJldmlvdXNseQotYmVlbiBhcHByb3ZlZDoKLQotICBodHRwOi8vd3d3LmN5 Z3dpbi5jb20vbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNy9tc2cwMDM0MC5odG1sCi0KLS0tdXVLVnpB bUIrYyt6UWxodQotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpCi1D b250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0icnRsZC1wcm9iZXMtMS1j b252ZW5pZW5jZS5wYXRjaCIKLQotMjAxMy0wNS0xNiAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJl ZGhhdC5jb20+Ci0KLQkqIHByb2JlLmggKGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCk6IE5ldyBk ZWNsYXJhdGlvbi4KLQkoZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQpOiBMaWtld2lzZS4KLQkqIHBy b2JlLmMgKGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCk6IE5ldyBmdW5jdGlvbi4KLQkoZXZhbHVh dGVfcHJvYmVfYXJndW1lbnQpOiBMaWtld2lzZS4KLQkocHJvYmVfc2FmZV9ldmFsdWF0ZV9hdF9w Yyk6IFVzZSB0aGUgYWJvdmUgbmV3IGZ1bmN0aW9ucy4KLQotZGlmZiAtLWdpdCBhL2dkYi9wcm9i ZS5oIGIvZ2RiL3Byb2JlLmgKLWluZGV4IDhkNDRjYTIuLjFkMjliODcgMTAwNjQ0Ci0tLS0gYS9n ZGIvcHJvYmUuaAotKysrIGIvZ2RiL3Byb2JlLmgKLUBAIC0yMTQsNiArMjE0LDE2IEBAIGV4dGVy biB2b2lkIGluZm9fcHJvYmVzX2Zvcl9vcHMgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5LAotIAot IGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmluZm9fcHJvYmVzX2NtZGxpc3RfZ2V0 ICh2b2lkKTsKLSAKLSsvKiBSZXR1cm4gdGhlIGFyZ3VtZW50IGNvdW50IG9mIHRoZSBzcGVjaWZp ZWQgcHJvYmUuICAqLwotKwotK2V4dGVybiB1bnNpZ25lZCBnZXRfcHJvYmVfYXJndW1lbnRfY291 bnQgKHN0cnVjdCBwcm9iZSAqcHJvYmUpOwotKwotKy8qIEV2YWx1YXRlIGFyZ3VtZW50IE4gb2Yg dGhlIHNwZWNpZmllZCBwcm9iZS4gIE4gbXVzdCBiZSBiZXR3ZWVuIDAKLSsgICBpbmNsdXNpdmUg YW5kIGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCBleGNsdXNpdmUuICAqLwotKwotK2V4dGVybiBz dHJ1Y3QgdmFsdWUgKmV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChzdHJ1Y3QgcHJvYmUgKnByb2Jl LAotKwkJCQkJICAgICAgdW5zaWduZWQgbik7Ci0rCi0gLyogQSBjb252ZW5pZW5jZSBmdW5jdGlv biB0aGF0IGZpbmRzIGEgcHJvYmUgYXQgdGhlIFBDIGluIEZSQU1FIGFuZAotICAgIGV2YWx1YXRl cyBhcmd1bWVudCBOLCB3aXRoIDAgPD0gTiA8IG51bWJlcl9vZl9hcmdzLiAgSWYgdGhlcmUgaXMg bm8KLSAgICBwcm9iZSBhdCB0aGF0IGxvY2F0aW9uLCBvciBpZiB0aGUgcHJvYmUgZG9lcyBub3Qg aGF2ZSBlbm91Z2ggYXJndW1lbnRzLAotZGlmZiAtLWdpdCBhL2dkYi9wcm9iZS5jIGIvZ2RiL3By b2JlLmMKLWluZGV4IDc3ZjNiMTMuLmE2MWY0ZWEgMTAwNjQ0Ci0tLS0gYS9nZGIvcHJvYmUuYwot KysrIGIvZ2RiL3Byb2JlLmMKLUBAIC02MDgsMjggKzYwOCw1NSBAQCBpbmZvX3Byb2Jlc19jb21t YW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKLSAKLSAvKiBTZWUgY29tbWVudHMgaW4gcHJv YmUuaC4gICovCi0gCi0rdW5zaWduZWQKLStnZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHN0cnVj dCBwcm9iZSAqcHJvYmUpCi0rewotKyAgY29uc3Qgc3RydWN0IHN5bV9wcm9iZV9mbnMgKnByb2Jl X2ZuczsKLSsKLSsgIGdkYl9hc3NlcnQgKHByb2JlLT5vYmpmaWxlICE9IE5VTEwpOwotKyAgZ2Ri X2Fzc2VydCAocHJvYmUtPm9iamZpbGUtPnNmICE9IE5VTEwpOwotKwotKyAgcHJvYmVfZm5zID0g cHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zOwotKwotKyAgZ2RiX2Fzc2VydCAocHJv YmVfZm5zICE9IE5VTEwpOwotKwotKyAgcmV0dXJuIHByb2JlX2Zucy0+c3ltX2dldF9wcm9iZV9h cmd1bWVudF9jb3VudCAocHJvYmUpOwotK30KLSsKLSsvKiBTZWUgY29tbWVudHMgaW4gcHJvYmUu aC4gICovCi0rCi0rc3RydWN0IHZhbHVlICoKLStldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAoc3Ry dWN0IHByb2JlICpwcm9iZSwgdW5zaWduZWQgbikKLSt7Ci0rICBjb25zdCBzdHJ1Y3Qgc3ltX3By b2JlX2ZucyAqcHJvYmVfZm5zOwotKwotKyAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUgIT0g TlVMTCk7Ci0rICBnZGJfYXNzZXJ0IChwcm9iZS0+b2JqZmlsZS0+c2YgIT0gTlVMTCk7Ci0rCi0r ICBwcm9iZV9mbnMgPSBwcm9iZS0+b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnM7Ci0rCi0rICBn ZGJfYXNzZXJ0IChwcm9iZV9mbnMgIT0gTlVMTCk7Ci0rCi0rICByZXR1cm4gcHJvYmVfZm5zLT5z eW1fZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQgKHByb2JlLCBuKTsKLSt9Ci0rCi0rLyogU2VlIGNv bW1lbnRzIGluIHByb2JlLmguICAqLwotKwotIHN0cnVjdCB2YWx1ZSAqCi0gcHJvYmVfc2FmZV9l dmFsdWF0ZV9hdF9wYyAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCB1bnNpZ25lZCBuKQotIHsK LSAgIHN0cnVjdCBwcm9iZSAqcHJvYmU7Ci0tICBjb25zdCBzdHJ1Y3Qgc3ltX3Byb2JlX2ZucyAq cHJvYmVfZm5zOwotICAgdW5zaWduZWQgbl9hcmdzOwotIAotICAgcHJvYmUgPSBmaW5kX3Byb2Jl X2J5X3BjIChnZXRfZnJhbWVfcGMgKGZyYW1lKSk7Ci0gICBpZiAoIXByb2JlKQotICAgICByZXR1 cm4gTlVMTDsKLSAKLS0gIGdkYl9hc3NlcnQgKHByb2JlLT5vYmpmaWxlICE9IE5VTEwpOwotLSAg Z2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUtPnNmICE9IE5VTEwpOwotLSAgZ2RiX2Fzc2VydCAo cHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zICE9IE5VTEwpOwotLQotLSAgcHJvYmVf Zm5zID0gcHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zOwotLSAgbl9hcmdzID0gcHJv YmVfZm5zLT5zeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChwcm9iZSk7Ci0tCi0rICBuX2Fy Z3MgPSBnZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHByb2JlKTsKLSAgIGlmIChuID49IG5fYXJn cykKLSAgICAgcmV0dXJuIE5VTEw7Ci0gCi0tICByZXR1cm4gcHJvYmVfZm5zLT5zeW1fZXZhbHVh dGVfcHJvYmVfYXJndW1lbnQgKHByb2JlLCBuKTsKLSsgIHJldHVybiBldmFsdWF0ZV9wcm9iZV9h cmd1bWVudCAocHJvYmUsIG4pOwotIH0KLSAKLSAvKiBTZWUgY29tbWVudCBpbiBwcm9iZS5oLiAg Ki8KLQotLS11dUtWekFtQitjK3pRbGh1LS0KLQoKZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3Rh cC1wcm9iZS0xb2Y5LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTFvZjkucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQxOWRjOQotLS0gL2Rldi9udWxsCisr KyBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS0xb2Y5LnBhdGNoCkBAIC0wLDAgKzEsMTAyIEBACito dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEzLTA2L21zZzAwMDEyLmh0bWwKKwor IyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTMvMDYvMDQgMDI6NDQ6MzQJMS4xNTY4MAorIyMjIHNy Yy9nZGIvQ2hhbmdlTG9nCTIwMTMvMDYvMDQgMTI6NTA6MjAJMS4xNTY4MQorIyMgLTEsMyArMSwx MSBAQAorKzIwMTMtMDYtMDQgIEdhcnkgQmVuc29uICA8Z2JlbnNvbkByZWRoYXQuY29tPgorKwor KwkqIHByb2JlLmggKGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCk6IE5ldyBkZWNsYXJhdGlvbi4K KysJKGV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50KTogTGlrZXdpc2UuCisrCSogcHJvYmUuYyAoZ2V0 X3Byb2JlX2FyZ3VtZW50X2NvdW50KTogTmV3IGZ1bmN0aW9uLgorKwkoZXZhbHVhdGVfcHJvYmVf YXJndW1lbnQpOiBMaWtld2lzZS4KKysJKHByb2JlX3NhZmVfZXZhbHVhdGVfYXRfcGMpOiBVc2Ug dGhlIGFib3ZlIG5ldyBmdW5jdGlvbnMuCisrCisgMjAxMy0wNi0wNCAgQWxhbiBNb2RyYSAgPGFt b2RyYUBnbWFpbC5jb20+CisgCisgCSogcHBjLXRkZXAuaCAocHBjX2luc25zX21hdGNoX3BhdHRl cm4pOiBVcGRhdGUgcHJvdG90eXBlLgorLS0tIHNyYy9nZGIvcHJvYmUuYwkyMDEzLzA1LzMwIDE3 OjM5OjM0CTEuOAorKysrIHNyYy9nZGIvcHJvYmUuYwkyMDEzLzA2LzA0IDEyOjUwOjIwCTEuOQor QEAgLTYxMSwyOCArNjExLDU1IEBACisgCisgLyogU2VlIGNvbW1lbnRzIGluIHByb2JlLmguICAq LworIAorK3Vuc2lnbmVkCisrZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChzdHJ1Y3QgcHJvYmUg KnByb2JlKQorK3sKKysgIGNvbnN0IHN0cnVjdCBzeW1fcHJvYmVfZm5zICpwcm9iZV9mbnM7Cisr CisrICBnZGJfYXNzZXJ0IChwcm9iZS0+b2JqZmlsZSAhPSBOVUxMKTsKKysgIGdkYl9hc3NlcnQg KHByb2JlLT5vYmpmaWxlLT5zZiAhPSBOVUxMKTsKKysKKysgIHByb2JlX2ZucyA9IHByb2JlLT5v YmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZuczsKKysKKysgIGdkYl9hc3NlcnQgKHByb2JlX2ZucyAh PSBOVUxMKTsKKysKKysgIHJldHVybiBwcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVfYXJndW1lbnRf Y291bnQgKHByb2JlKTsKKyt9CisrCisrLyogU2VlIGNvbW1lbnRzIGluIHByb2JlLmguICAqLwor KworK3N0cnVjdCB2YWx1ZSAqCisrZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQgKHN0cnVjdCBwcm9i ZSAqcHJvYmUsIHVuc2lnbmVkIG4pCisreworKyAgY29uc3Qgc3RydWN0IHN5bV9wcm9iZV9mbnMg KnByb2JlX2ZuczsKKysKKysgIGdkYl9hc3NlcnQgKHByb2JlLT5vYmpmaWxlICE9IE5VTEwpOwor KyAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUtPnNmICE9IE5VTEwpOworKworKyAgcHJvYmVf Zm5zID0gcHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zOworKworKyAgZ2RiX2Fzc2Vy dCAocHJvYmVfZm5zICE9IE5VTEwpOworKworKyAgcmV0dXJuIHByb2JlX2Zucy0+c3ltX2V2YWx1 YXRlX3Byb2JlX2FyZ3VtZW50IChwcm9iZSwgbik7CisrfQorKworKy8qIFNlZSBjb21tZW50cyBp biBwcm9iZS5oLiAgKi8KKysKKyBzdHJ1Y3QgdmFsdWUgKgorIHByb2JlX3NhZmVfZXZhbHVhdGVf YXRfcGMgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgdW5zaWduZWQgbikKKyB7CisgICBzdHJ1 Y3QgcHJvYmUgKnByb2JlOworLSAgY29uc3Qgc3RydWN0IHN5bV9wcm9iZV9mbnMgKnByb2JlX2Zu czsKKyAgIHVuc2lnbmVkIG5fYXJnczsKKyAKKyAgIHByb2JlID0gZmluZF9wcm9iZV9ieV9wYyAo Z2V0X2ZyYW1lX3BjIChmcmFtZSkpOworICAgaWYgKCFwcm9iZSkKKyAgICAgcmV0dXJuIE5VTEw7 CisgCistICBnZGJfYXNzZXJ0IChwcm9iZS0+b2JqZmlsZSAhPSBOVUxMKTsKKy0gIGdkYl9hc3Nl cnQgKHByb2JlLT5vYmpmaWxlLT5zZiAhPSBOVUxMKTsKKy0gIGdkYl9hc3NlcnQgKHByb2JlLT5v YmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZucyAhPSBOVUxMKTsKKy0KKy0gIHByb2JlX2ZucyA9IHBy b2JlLT5vYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZuczsKKy0gIG5fYXJncyA9IHByb2JlX2Zucy0+ c3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAocHJvYmUpOworLQorKyAgbl9hcmdzID0gZ2V0 X3Byb2JlX2FyZ3VtZW50X2NvdW50IChwcm9iZSk7CisgICBpZiAobiA+PSBuX2FyZ3MpCisgICAg IHJldHVybiBOVUxMOworIAorLSAgcmV0dXJuIHByb2JlX2Zucy0+c3ltX2V2YWx1YXRlX3Byb2Jl X2FyZ3VtZW50IChwcm9iZSwgbik7CisrICByZXR1cm4gZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQg KHByb2JlLCBuKTsKKyB9CisgCisgLyogU2VlIGNvbW1lbnQgaW4gcHJvYmUuaC4gICovCistLS0g c3JjL2dkYi9wcm9iZS5oCTIwMTMvMDEvMDEgMDY6MzI6NDkJMS40CisrKysgc3JjL2dkYi9wcm9i ZS5oCTIwMTMvMDYvMDQgMTI6NTA6MjEJMS41CitAQCAtMjE0LDYgKzIxNCwxNiBAQAorIAorIGV4 dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmluZm9fcHJvYmVzX2NtZGxpc3RfZ2V0ICh2 b2lkKTsKKyAKKysvKiBSZXR1cm4gdGhlIGFyZ3VtZW50IGNvdW50IG9mIHRoZSBzcGVjaWZpZWQg cHJvYmUuICAqLworKworK2V4dGVybiB1bnNpZ25lZCBnZXRfcHJvYmVfYXJndW1lbnRfY291bnQg KHN0cnVjdCBwcm9iZSAqcHJvYmUpOworKworKy8qIEV2YWx1YXRlIGFyZ3VtZW50IE4gb2YgdGhl IHNwZWNpZmllZCBwcm9iZS4gIE4gbXVzdCBiZSBiZXR3ZWVuIDAKKysgICBpbmNsdXNpdmUgYW5k IGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCBleGNsdXNpdmUuICAqLworKworK2V4dGVybiBzdHJ1 Y3QgdmFsdWUgKmV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChzdHJ1Y3QgcHJvYmUgKnByb2JlLAor KwkJCQkJICAgICAgdW5zaWduZWQgbik7CisrCisgLyogQSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0 aGF0IGZpbmRzIGEgcHJvYmUgYXQgdGhlIFBDIGluIEZSQU1FIGFuZAorICAgIGV2YWx1YXRlcyBh cmd1bWVudCBOLCB3aXRoIDAgPD0gTiA8IG51bWJlcl9vZl9hcmdzLiAgSWYgdGhlcmUgaXMgbm8K KyAgICBwcm9iZSBhdCB0aGF0IGxvY2F0aW9uLCBvciBpZiB0aGUgcHJvYmUgZG9lcyBub3QgaGF2 ZSBlbm91Z2ggYXJndW1lbnRzLAoKZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS0y b2Y3LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTJvZjcucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDM2MDZjZWMuLjAwMDAwMDAKLS0tIGEvZ2RiLWRsb3Blbi1zdGFw LXByb2JlLTJvZjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTggKzAsMCBAQAotaHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTMtMDUvbXNnMDA2MjcuaHRtbAotU3Vi amVjdDogW1JGQSAyLzddIEFQSSBmb3IgaW5oaWJpdGluZyBzZWN0aW9uIG1hcCB1cGRhdGVzCi0K LQotLS1iUGc5TmRwTTlFRVR4dnF0Ci1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9 dXMtYXNjaWkKLUNvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZQotCi1UaGlzIHBhdGNoIGFkZHMg YSBjb3VwbGUgb2YgZnVuY3Rpb25zIHRvIGFsbG93IHNlY3Rpb24gbWFwIHVwZGF0ZXMKLXRvIGJl IHRlbXBvcmFyaWx5IGluaGliaXRlZC4gIFdpdGhvdXQgdGhpcyBhYmlsaXR5LCB0aGUgY2FsbHMg dG8KLWV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IGluIHN2cjRfaGFuZGxlX3NvbGliX2V2ZW50IHRy aWdnZXIgYSBzZWN0aW9uCi1tYXAgdXBkYXRlIGV2ZXJ5IHRpbWUgYSBncm91cCBvZiBzaGFyZWQg b2JqZWN0cyBhcmUgbWFwcGVkLCB3aGljaAotc2lnbmlmaWNhbnRseSBhZmZlY3RzIHBlcmZvcm1h bmNlLiAgVGhlIHVwZGF0ZXMgYXJlIHVubmVjZXNzYXJ5IGluCi10aGlzIGNhc2UgYXMgdGhlIHNl Y3Rpb25zIGluIHF1ZXN0aW9uIGFyZSBpbiB0aGUgcnVudGltZSBsaW5rZXIgYW5kCi1zbyBhbHJl YWR5IGluIHRoZSBzZWN0aW9uIG1hcC4KLQotLS1iUGc5TmRwTTlFRVR4dnF0Ci1Db250ZW50LVR5 cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkKLUNvbnRlbnQtRGlzcG9zaXRpb246IGF0 dGFjaG1lbnQ7IGZpbGVuYW1lPSJydGxkLXByb2Jlcy0yLWluaGliaXQtc20tdXBkYXRlcy5wYXRj aCIKLQotMjAxMy0wNS0xNiAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJlZGhhdC5jb20+Ci0KLQkq IG9iamZpbGVzLmggKGluaGliaXRfc2VjdGlvbl9tYXBfdXBkYXRlcyk6IE5ldyBmdW5jdGlvbgot CWRlY2xhcmF0aW9uLgotCShyZXN1bWVfc2VjdGlvbl9tYXBfdXBkYXRlcyk6IExpa2V3aXNlLgot CShyZXN1bWVfc2VjdGlvbl9tYXBfdXBkYXRlc19jbGVhbnVwKTogTGlrZXdpc2UuCi0JKiBvYmpm aWxlcy5jIChvYmpmaWxlX3BzcGFjZV9pbmZvKTogUmVtb3ZlZCBmaWVsZAotCSJvYmpmaWxlc19j aGFuZ2VkX3AiLiAgTmV3IGZpZWxkcyAibmV3X29iamZpbGVzX2F2YWlsYWJsZSIsCi0JInNlY3Rp b25fbWFwX2RpcnR5IiBhbmQgImluaGliaXRfdXBkYXRlcyIuCi0JKGFsbG9jYXRlX29iamZpbGUp OiBTZXQgbmV3X29iamZpbGVzX2F2YWlsYWJsZS4KLQkoZnJlZV9vYmpmaWxlKTogU2V0IHNlY3Rp b25fbWFwX2RpcnR5LgotCShvYmpmaWxlX3JlbG9jYXRlMSk6IExpa2V3aXNlLgotCShpbl9wbHRf c2VjdGlvbik6IExpa2V3aXNlLgotCShmaW5kX3BjX3NlY3Rpb24pOiBVcGRhdGUgdGhlIGNvbmRp dGlvbnMgdW5kZXIgd2hpY2ggdGhlCi0Jc2VjdGlvbiBtYXAgd2lsbCBiZSB1cGRhdGVkLgotCShp bmhpYml0X3NlY3Rpb25fbWFwX3VwZGF0ZXMpOiBOZXcgZnVuY3Rpb24uCi0JKHJlc3VtZV9zZWN0 aW9uX21hcF91cGRhdGVzKTogTGlrZXdpc2UuCi0JKHJlc3VtZV9zZWN0aW9uX21hcF91cGRhdGVz X2NsZWFudXApOiBMaWtld2lzZS4KLQotZGlmZiAtLWdpdCBhL2dkYi9vYmpmaWxlcy5oIGIvZ2Ri L29iamZpbGVzLmgKLWluZGV4IDkzMTQ5ZTIuLjBiN2VlYTkgMTAwNjQ0Ci0tLS0gYS9nZGIvb2Jq ZmlsZXMuaAotKysrIGIvZ2RiL29iamZpbGVzLmgKLUBAIC01MDEsNiArNTAxLDIyIEBAIGV4dGVy biBpbnQgaW5fcGx0X3NlY3Rpb24gKENPUkVfQUREUiwgY2hhciAqKTsKLSAgICBtb2R1bGVzLiAg Ki8KLSBERUNMQVJFX1JFR0lTVFJZKG9iamZpbGUpOwotIAotKy8qIEluIG5vcm1hbCB1c2UsIHRo ZSBzZWN0aW9uIG1hcCB3aWxsIGJlIHJlYnVpbHQgYnkgRklORF9QQ19TRUNUSU9OCi0rICAgaWYg b2JqZmlsZXMgaGF2ZSBiZWVuIGFkZGVkLCByZW1vdmVkIG9yIHJlbG9jYXRlZCBzaW5jZSBpdCB3 YXMgbGFzdAotKyAgIGNhbGxlZC4gIENhbGxpbmcgSU5ISUJJVF9TRUNUSU9OX01BUF9VUERBVEVT IHdpbGwgaW5oaWJpdCB0aGlzCi0rICAgYmVoYXZpb3IgdW50aWwgUkVTVU1FX1NFQ1RJT05fTUFQ X1VQREFURVMgaXMgY2FsbGVkLiAgSWYgeW91IGNhbGwKLSsgICBJTkhJQklUX1NFQ1RJT05fTUFQ X1VQREFURVMgeW91IG11c3QgZW5zdXJlIHRoYXQgZXZlcnkgY2FsbCB0bwotKyAgIEZJTkRfUENf U0VDVElPTiBpbiB0aGUgaW5oaWJpdGVkIHJlZ2lvbiByZWxhdGVzIHRvIGEgc2VjdGlvbiB0aGF0 Ci0rICAgaXMgYWxyZWFkeSBpbiB0aGUgc2VjdGlvbiBtYXAgYW5kIGhhcyBub3Qgc2luY2UgYmVl biByZW1vdmVkIG9yCi0rICAgcmVsb2NhdGVkLiAgKi8KLStleHRlcm4gdm9pZCBpbmhpYml0X3Nl Y3Rpb25fbWFwX3VwZGF0ZXMgKHZvaWQpOwotKwotKy8qIFJlc3VtZSBhdXRvbWF0aWNhbGx5IHJl YnVpbGRpbmcgdGhlIHNlY3Rpb24gbWFwIGFzIHJlcXVpcmVkLiAgKi8KLStleHRlcm4gdm9pZCBy ZXN1bWVfc2VjdGlvbl9tYXBfdXBkYXRlcyAodm9pZCk7Ci0rCi0rLyogVmVyc2lvbiBvZiB0aGUg YWJvdmUgc3VpdGFibGUgZm9yIHVzZSBhcyBhIGNsZWFudXAuICAqLwotK2V4dGVybiB2b2lkIHJl c3VtZV9zZWN0aW9uX21hcF91cGRhdGVzX2NsZWFudXAgKHZvaWQgKmFyZyk7Ci0rCi0gZXh0ZXJu IHZvaWQgZGVmYXVsdF9pdGVyYXRlX292ZXJfb2JqZmlsZXNfaW5fc2VhcmNoX29yZGVyCi0gICAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gICAgaXRlcmF0ZV9vdmVyX29iamZpbGVzX2luX3Nl YXJjaF9vcmRlcl9jYl9mdHlwZSAqY2IsCi1kaWZmIC0tZ2l0IGEvZ2RiL29iamZpbGVzLmMgYi9n ZGIvb2JqZmlsZXMuYwotaW5kZXggM2U0OWVhMi4uM2FmMTA2NCAxMDA2NDQKLS0tLSBhL2dkYi9v YmpmaWxlcy5jCi0rKysgYi9nZGIvb2JqZmlsZXMuYwotQEAgLTY3LDkgKzY3LDE4IEBAIHN0cnVj dCBvYmpmaWxlICpydF9jb21tb25fb2JqZmlsZTsJLyogRm9yIHJ1bnRpbWUgY29tbW9uIHN5bWJv bHMgKi8KLSAKLSBzdHJ1Y3Qgb2JqZmlsZV9wc3BhY2VfaW5mbwotIHsKLS0gIGludCBvYmpmaWxl c19jaGFuZ2VkX3A7Ci0gICBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKipzZWN0aW9uczsKLSAgIGludCBu dW1fc2VjdGlvbnM7Ci0rCi0rICAvKiBOb256ZXJvIGlmIG9iamVjdCBmaWxlcyBoYXZlIGJlZW4g YWRkZWQgc2luY2UgdGhlIHNlY3Rpb24gbWFwCi0rICAgICB3YXMgbGFzdCB1cGRhdGVkLiAgKi8K LSsgIGludCBuZXdfb2JqZmlsZXNfYXZhaWxhYmxlOwotKwotKyAgLyogTm9uemVybyBpZiB0aGUg c2VjdGlvbiBtYXAgTVVTVCBiZSB1cGRhdGVkIGJlZm9yZSB1c2UuICAqLwotKyAgaW50IHNlY3Rp b25fbWFwX2RpcnR5OwotKwotKyAgLyogTm9uemVybyBpZiBzZWN0aW9uIG1hcCB1cGRhdGVzIHNo b3VsZCBiZSBpbmhpYml0ZWQgaWYgcG9zc2libGUuICAqLwotKyAgaW50IGluaGliaXRfdXBkYXRl czsKLSB9OwotIAotIC8qIFBlci1wcm9ncmFtLXNwYWNlIGRhdGEga2V5LiAgKi8KLUBAIC0zMTcs NyArMzI2LDcgQEAgYWxsb2NhdGVfb2JqZmlsZSAoYmZkICphYmZkLCBpbnQgZmxhZ3MpCi0gICBv YmpmaWxlLT5mbGFncyB8PSBmbGFnczsKLSAKLSAgIC8qIFJlYnVpbGQgc2VjdGlvbiBtYXAgbmV4 dCB0aW1lIHdlIG5lZWQgaXQuICAqLwotLSAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKG9iamZp bGUtPnBzcGFjZSktPm9iamZpbGVzX2NoYW5nZWRfcCA9IDE7Ci0rICBnZXRfb2JqZmlsZV9wc3Bh Y2VfZGF0YSAob2JqZmlsZS0+cHNwYWNlKS0+bmV3X29iamZpbGVzX2F2YWlsYWJsZSA9IDE7Ci0g Ci0gICByZXR1cm4gb2JqZmlsZTsKLSB9Ci1AQCAtNjQ2LDcgKzY1NSw3IEBAIGZyZWVfb2JqZmls ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gICBvYnN0YWNrX2ZyZWUgKCZvYmpmaWxlLT5v YmpmaWxlX29ic3RhY2ssIDApOwotIAotICAgLyogUmVidWlsZCBzZWN0aW9uIG1hcCBuZXh0IHRp bWUgd2UgbmVlZCBpdC4gICovCi0tICBnZXRfb2JqZmlsZV9wc3BhY2VfZGF0YSAob2JqZmlsZS0+ cHNwYWNlKS0+b2JqZmlsZXNfY2hhbmdlZF9wID0gMTsKLSsgIGdldF9vYmpmaWxlX3BzcGFjZV9k YXRhIChvYmpmaWxlLT5wc3BhY2UpLT5zZWN0aW9uX21hcF9kaXJ0eSA9IDE7Ci0gCi0gICB4ZnJl ZSAob2JqZmlsZSk7Ci0gfQotQEAgLTgyNiw3ICs4MzUsNyBAQCBvYmpmaWxlX3JlbG9jYXRlMSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gICB9Ci0gCi0gICAvKiBSZWJ1aWxkIHNlY3Rpb24g bWFwIG5leHQgdGltZSB3ZSBuZWVkIGl0LiAgKi8KLS0gIGdldF9vYmpmaWxlX3BzcGFjZV9kYXRh IChvYmpmaWxlLT5wc3BhY2UpLT5vYmpmaWxlc19jaGFuZ2VkX3AgPSAxOwotKyAgZ2V0X29iamZp bGVfcHNwYWNlX2RhdGEgKG9iamZpbGUtPnBzcGFjZSktPnNlY3Rpb25fbWFwX2RpcnR5ID0gMTsK LSAKLSAgIC8qIFVwZGF0ZSB0aGUgdGFibGUgaW4gZXhlY19vcHMsIHVzZWQgdG8gcmVhZCBtZW1v cnkuICAqLwotICAgQUxMX09CSkZJTEVfT1NFQ1RJT05TIChvYmpmaWxlLCBzKQotQEAgLTEyOTEs MTEgKzEzMDAsMTQgQEAgc3RhdGljIHZvaWQKLSB1cGRhdGVfc2VjdGlvbl9tYXAgKHN0cnVjdCBw cm9ncmFtX3NwYWNlICpwc3BhY2UsCi0gCQkgICAgc3RydWN0IG9ial9zZWN0aW9uICoqKnBtYXAs IGludCAqcG1hcF9zaXplKQotIHsKLSsgIHN0cnVjdCBvYmpmaWxlX3BzcGFjZV9pbmZvICpwc3Bh Y2VfaW5mbzsKLSAgIGludCBhbGxvY19zaXplLCBtYXBfc2l6ZSwgaTsKLSAgIHN0cnVjdCBvYmpf c2VjdGlvbiAqcywgKiptYXA7Ci0gICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSAKLS0gIGdk Yl9hc3NlcnQgKGdldF9vYmpmaWxlX3BzcGFjZV9kYXRhIChwc3BhY2UpLT5vYmpmaWxlc19jaGFu Z2VkX3AgIT0gMCk7Ci0rICBwc3BhY2VfaW5mbyA9IGdldF9vYmpmaWxlX3BzcGFjZV9kYXRhIChj dXJyZW50X3Byb2dyYW1fc3BhY2UpOwotKyAgZ2RiX2Fzc2VydCAocHNwYWNlX2luZm8tPnNlY3Rp b25fbWFwX2RpcnR5ICE9IDAKLSsJICAgICAgfHwgcHNwYWNlX2luZm8tPm5ld19vYmpmaWxlc19h dmFpbGFibGUgIT0gMCk7Ci0gCi0gICBtYXAgPSAqcG1hcDsKLSAgIHhmcmVlIChtYXApOwotQEAg LTEzNjUsNyArMTM3Nyw5IEBAIGZpbmRfcGNfc2VjdGlvbiAoQ09SRV9BRERSIHBjKQotICAgICBy ZXR1cm4gczsKLSAKLSAgIHBzcGFjZV9pbmZvID0gZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKGN1 cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0tICBpZiAocHNwYWNlX2luZm8tPm9iamZpbGVzX2NoYW5n ZWRfcCAhPSAwKQotKyAgaWYgKHBzcGFjZV9pbmZvLT5zZWN0aW9uX21hcF9kaXJ0eQotKyAgICAg IHx8IChwc3BhY2VfaW5mby0+bmV3X29iamZpbGVzX2F2YWlsYWJsZQotKwkgICYmICFwc3BhY2Vf aW5mby0+aW5oaWJpdF91cGRhdGVzKSkKLSAgICAgewotICAgICAgIHVwZGF0ZV9zZWN0aW9uX21h cCAoY3VycmVudF9wcm9ncmFtX3NwYWNlLAotIAkJCSAgJnBzcGFjZV9pbmZvLT5zZWN0aW9ucywK LUBAIC0xMzczLDcgKzEzODcsOCBAQCBmaW5kX3BjX3NlY3Rpb24gKENPUkVfQUREUiBwYykKLSAK LSAgICAgICAvKiBEb24ndCBuZWVkIHVwZGF0ZXMgdG8gc2VjdGlvbiBtYXAgdW50aWwgb2JqZmls ZXMgYXJlIGFkZGVkLAotICAgICAgICAgIHJlbW92ZWQgb3IgcmVsb2NhdGVkLiAgKi8KLS0gICAg ICBwc3BhY2VfaW5mby0+b2JqZmlsZXNfY2hhbmdlZF9wID0gMDsKLSsgICAgICBwc3BhY2VfaW5m by0+bmV3X29iamZpbGVzX2F2YWlsYWJsZSA9IDA7Ci0rICAgICAgcHNwYWNlX2luZm8tPnNlY3Rp b25fbWFwX2RpcnR5ID0gMDsKLSAgICAgfQotIAotICAgLyogVGhlIEMgc3RhbmRhcmQgKElTTy9J RUMgOTg5OTpUQzIpIHJlcXVpcmVzIHRoZSBCQVNFIGFyZ3VtZW50IHRvCi1AQCAtMTQxNCwxNCAr MTQyOSwzOCBAQCBpbl9wbHRfc2VjdGlvbiAoQ09SRV9BRERSIHBjLCBjaGFyICpuYW1lKQotIH0K LSAMCi0gCi0tLyogU2V0IG9iamZpbGVzX2NoYW5nZWRfcCBzbyBzZWN0aW9uIG1hcCB3aWxsIGJl IHJlYnVpbHQgbmV4dCB0aW1lIGl0Ci0rLyogU2V0IHNlY3Rpb25fbWFwX2RpcnR5IHNvIHNlY3Rp b24gbWFwIHdpbGwgYmUgcmVidWlsdCBuZXh0IHRpbWUgaXQKLSAgICBpcyB1c2VkLiAgQ2FsbGVk IGJ5IHJlcmVhZF9zeW1ib2xzLiAgKi8KLSAKLSB2b2lkCi0gb2JqZmlsZXNfY2hhbmdlZCAodm9p ZCkKLSB7Ci0gICAvKiBSZWJ1aWxkIHNlY3Rpb24gbWFwIG5leHQgdGltZSB3ZSBuZWVkIGl0LiAg Ki8KLS0gIGdldF9vYmpmaWxlX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpLT5v YmpmaWxlc19jaGFuZ2VkX3AgPSAxOwotKyAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKGN1cnJl bnRfcHJvZ3JhbV9zcGFjZSktPnNlY3Rpb25fbWFwX2RpcnR5ID0gMTsKLSt9Ci0rCi0rLyogU2Vl IGNvbW1lbnRzIGluIG9iamZpbGVzLmguICAqLwotKwotK3ZvaWQKLStpbmhpYml0X3NlY3Rpb25f bWFwX3VwZGF0ZXMgKHZvaWQpCi0rewotKyAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKGN1cnJl bnRfcHJvZ3JhbV9zcGFjZSktPmluaGliaXRfdXBkYXRlcyA9IDE7Ci0rfQotKwotKy8qIFNlZSBj b21tZW50cyBpbiBvYmpmaWxlcy5oLiAgKi8KLSsKLSt2b2lkCi0rcmVzdW1lX3NlY3Rpb25fbWFw X3VwZGF0ZXMgKHZvaWQpCi0rewotKyAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKGN1cnJlbnRf cHJvZ3JhbV9zcGFjZSktPmluaGliaXRfdXBkYXRlcyA9IDA7Ci0rfQotKwotKy8qIFNlZSBjb21t ZW50cyBpbiBvYmpmaWxlcy5oLiAgKi8KLSsKLSt2b2lkCi0rcmVzdW1lX3NlY3Rpb25fbWFwX3Vw ZGF0ZXNfY2xlYW51cCAodm9pZCAqYXJnKQotK3sKLSsgIHJlc3VtZV9zZWN0aW9uX21hcF91cGRh dGVzICgpOwotIH0KLSAKLSAvKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlICJp dGVyYXRlX292ZXJfb2JqZmlsZXNfaW5fc2VhcmNoX29yZGVyIgotCi0tLWJQZzlOZHBNOUVFVHh2 cXQtLQotCgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTJvZjkucGF0Y2ggYi9n ZGItZGxvcGVuLXN0YXAtcHJvYmUtMm9mOS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4xMzFhNzlhCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWRsb3Blbi1zdGFwLXBy b2JlLTJvZjkucGF0Y2gKQEAgLTAsMCArMSwxODEgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItY3ZzLzIwMTMtMDYvbXNnMDAwMTMuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJ MjAxMy8wNi8wNCAxMjo1MDoyMAkxLjE1NjgxCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8w Ni8wNCAxMjo1MzozMwkxLjE1NjgyCisjIyAtMSw1ICsxLDI0IEBACisgMjAxMy0wNi0wNCAgR2Fy eSBCZW5zb24gIDxnYmVuc29uQHJlZGhhdC5jb20+CisgCisrCSogb2JqZmlsZXMuaCAoaW5oaWJp dF9zZWN0aW9uX21hcF91cGRhdGVzKTogTmV3IGZ1bmN0aW9uCisrCWRlY2xhcmF0aW9uLgorKwko cmVzdW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXMpOiBMaWtld2lzZS4KKysJKHJlc3VtZV9zZWN0aW9u X21hcF91cGRhdGVzX2NsZWFudXApOiBMaWtld2lzZS4KKysJKiBvYmpmaWxlcy5jIChvYmpmaWxl X3BzcGFjZV9pbmZvKTogUmVtb3ZlZCBmaWVsZAorKwkib2JqZmlsZXNfY2hhbmdlZF9wIi4gIE5l dyBmaWVsZHMgIm5ld19vYmpmaWxlc19hdmFpbGFibGUiLAorKwkic2VjdGlvbl9tYXBfZGlydHki IGFuZCAiaW5oaWJpdF91cGRhdGVzIi4KKysJKGFsbG9jYXRlX29iamZpbGUpOiBTZXQgbmV3X29i amZpbGVzX2F2YWlsYWJsZS4KKysJKGZyZWVfb2JqZmlsZSk6IFNldCBzZWN0aW9uX21hcF9kaXJ0 eS4KKysJKG9iamZpbGVfcmVsb2NhdGUxKTogTGlrZXdpc2UuCisrCShpbl9wbHRfc2VjdGlvbik6 IExpa2V3aXNlLgorKwkoZmluZF9wY19zZWN0aW9uKTogVXBkYXRlIHRoZSBjb25kaXRpb25zIHVu ZGVyIHdoaWNoIHRoZQorKwlzZWN0aW9uIG1hcCB3aWxsIGJlIHVwZGF0ZWQuCisrCShpbmhpYml0 X3NlY3Rpb25fbWFwX3VwZGF0ZXMpOiBOZXcgZnVuY3Rpb24uCisrCShyZXN1bWVfc2VjdGlvbl9t YXBfdXBkYXRlcyk6IExpa2V3aXNlLgorKwkocmVzdW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXNfY2xl YW51cCk6IExpa2V3aXNlLgorKworKzIwMTMtMDYtMDQgIEdhcnkgQmVuc29uICA8Z2JlbnNvbkBy ZWRoYXQuY29tPgorKworIAkqIHByb2JlLmggKGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCk6IE5l dyBkZWNsYXJhdGlvbi4KKyAJKGV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50KTogTGlrZXdpc2UuCisg CSogcHJvYmUuYyAoZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50KTogTmV3IGZ1bmN0aW9uLgorLS0t IHNyYy9nZGIvb2JqZmlsZXMuYwkyMDEzLzA1LzA2IDE5OjE1OjE3CTEuMTYwCisrKysgc3JjL2dk Yi9vYmpmaWxlcy5jCTIwMTMvMDYvMDQgMTI6NTM6MzQJMS4xNjEKK0BAIC02Nyw5ICs2NywxOCBA QAorIAorIHN0cnVjdCBvYmpmaWxlX3BzcGFjZV9pbmZvCisgeworLSAgaW50IG9iamZpbGVzX2No YW5nZWRfcDsKKyAgIHN0cnVjdCBvYmpfc2VjdGlvbiAqKnNlY3Rpb25zOworICAgaW50IG51bV9z ZWN0aW9uczsKKysKKysgIC8qIE5vbnplcm8gaWYgb2JqZWN0IGZpbGVzIGhhdmUgYmVlbiBhZGRl ZCBzaW5jZSB0aGUgc2VjdGlvbiBtYXAKKysgICAgIHdhcyBsYXN0IHVwZGF0ZWQuICAqLworKyAg aW50IG5ld19vYmpmaWxlc19hdmFpbGFibGU7CisrCisrICAvKiBOb256ZXJvIGlmIHRoZSBzZWN0 aW9uIG1hcCBNVVNUIGJlIHVwZGF0ZWQgYmVmb3JlIHVzZS4gICovCisrICBpbnQgc2VjdGlvbl9t YXBfZGlydHk7CisrCisrICAvKiBOb256ZXJvIGlmIHNlY3Rpb24gbWFwIHVwZGF0ZXMgc2hvdWxk IGJlIGluaGliaXRlZCBpZiBwb3NzaWJsZS4gICovCisrICBpbnQgaW5oaWJpdF91cGRhdGVzOwor IH07CisgCisgLyogUGVyLXByb2dyYW0tc3BhY2UgZGF0YSBrZXkuICAqLworQEAgLTMxNyw3ICsz MjYsNyBAQAorICAgb2JqZmlsZS0+ZmxhZ3MgfD0gZmxhZ3M7CisgCisgICAvKiBSZWJ1aWxkIHNl Y3Rpb24gbWFwIG5leHQgdGltZSB3ZSBuZWVkIGl0LiAgKi8KKy0gIGdldF9vYmpmaWxlX3BzcGFj ZV9kYXRhIChvYmpmaWxlLT5wc3BhY2UpLT5vYmpmaWxlc19jaGFuZ2VkX3AgPSAxOworKyAgZ2V0 X29iamZpbGVfcHNwYWNlX2RhdGEgKG9iamZpbGUtPnBzcGFjZSktPm5ld19vYmpmaWxlc19hdmFp bGFibGUgPSAxOworIAorICAgcmV0dXJuIG9iamZpbGU7CisgfQorQEAgLTY0Niw3ICs2NTUsNyBA QAorICAgb2JzdGFja19mcmVlICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCAwKTsKKyAKKyAg IC8qIFJlYnVpbGQgc2VjdGlvbiBtYXAgbmV4dCB0aW1lIHdlIG5lZWQgaXQuICAqLworLSAgZ2V0 X29iamZpbGVfcHNwYWNlX2RhdGEgKG9iamZpbGUtPnBzcGFjZSktPm9iamZpbGVzX2NoYW5nZWRf cCA9IDE7CisrICBnZXRfb2JqZmlsZV9wc3BhY2VfZGF0YSAob2JqZmlsZS0+cHNwYWNlKS0+c2Vj dGlvbl9tYXBfZGlydHkgPSAxOworIAorICAgeGZyZWUgKG9iamZpbGUpOworIH0KK0BAIC04MjYs NyArODM1LDcgQEAKKyAgIH0KKyAKKyAgIC8qIFJlYnVpbGQgc2VjdGlvbiBtYXAgbmV4dCB0aW1l IHdlIG5lZWQgaXQuICAqLworLSAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKG9iamZpbGUtPnBz cGFjZSktPm9iamZpbGVzX2NoYW5nZWRfcCA9IDE7CisrICBnZXRfb2JqZmlsZV9wc3BhY2VfZGF0 YSAob2JqZmlsZS0+cHNwYWNlKS0+c2VjdGlvbl9tYXBfZGlydHkgPSAxOworIAorICAgLyogVXBk YXRlIHRoZSB0YWJsZSBpbiBleGVjX29wcywgdXNlZCB0byByZWFkIG1lbW9yeS4gICovCisgICBB TExfT0JKRklMRV9PU0VDVElPTlMgKG9iamZpbGUsIHMpCitAQCAtMTI5MSwxMSArMTMwMCwxNCBA QAorIHVwZGF0ZV9zZWN0aW9uX21hcCAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwKKyAJ CSAgICBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKioqcG1hcCwgaW50ICpwbWFwX3NpemUpCisgeworKyAg c3RydWN0IG9iamZpbGVfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOworICAgaW50IGFsbG9jX3Np emUsIG1hcF9zaXplLCBpOworICAgc3RydWN0IG9ial9zZWN0aW9uICpzLCAqKm1hcDsKKyAgIHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlOworIAorLSAgZ2RiX2Fzc2VydCAoZ2V0X29iamZpbGVfcHNw YWNlX2RhdGEgKHBzcGFjZSktPm9iamZpbGVzX2NoYW5nZWRfcCAhPSAwKTsKKysgIHBzcGFjZV9p bmZvID0gZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKHBzcGFjZSk7CisrICBnZGJfYXNzZXJ0IChw c3BhY2VfaW5mby0+c2VjdGlvbl9tYXBfZGlydHkgIT0gMAorKwkgICAgICB8fCBwc3BhY2VfaW5m by0+bmV3X29iamZpbGVzX2F2YWlsYWJsZSAhPSAwKTsKKyAKKyAgIG1hcCA9ICpwbWFwOworICAg eGZyZWUgKG1hcCk7CitAQCAtMTM2NSw3ICsxMzc3LDkgQEAKKyAgICAgcmV0dXJuIHM7CisgCisg ICBwc3BhY2VfaW5mbyA9IGdldF9vYmpmaWxlX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1f c3BhY2UpOworLSAgaWYgKHBzcGFjZV9pbmZvLT5vYmpmaWxlc19jaGFuZ2VkX3AgIT0gMCkKKysg IGlmIChwc3BhY2VfaW5mby0+c2VjdGlvbl9tYXBfZGlydHkKKysgICAgICB8fCAocHNwYWNlX2lu Zm8tPm5ld19vYmpmaWxlc19hdmFpbGFibGUKKysJICAmJiAhcHNwYWNlX2luZm8tPmluaGliaXRf dXBkYXRlcykpCisgICAgIHsKKyAgICAgICB1cGRhdGVfc2VjdGlvbl9tYXAgKGN1cnJlbnRfcHJv Z3JhbV9zcGFjZSwKKyAJCQkgICZwc3BhY2VfaW5mby0+c2VjdGlvbnMsCitAQCAtMTM3Myw3ICsx Mzg3LDggQEAKKyAKKyAgICAgICAvKiBEb24ndCBuZWVkIHVwZGF0ZXMgdG8gc2VjdGlvbiBtYXAg dW50aWwgb2JqZmlsZXMgYXJlIGFkZGVkLAorICAgICAgICAgIHJlbW92ZWQgb3IgcmVsb2NhdGVk LiAgKi8KKy0gICAgICBwc3BhY2VfaW5mby0+b2JqZmlsZXNfY2hhbmdlZF9wID0gMDsKKysgICAg ICBwc3BhY2VfaW5mby0+bmV3X29iamZpbGVzX2F2YWlsYWJsZSA9IDA7CisrICAgICAgcHNwYWNl X2luZm8tPnNlY3Rpb25fbWFwX2RpcnR5ID0gMDsKKyAgICAgfQorIAorICAgLyogVGhlIEMgc3Rh bmRhcmQgKElTTy9JRUMgOTg5OTpUQzIpIHJlcXVpcmVzIHRoZSBCQVNFIGFyZ3VtZW50IHRvCitA QCAtMTQxNCwxNCArMTQyOSwzOCBAQAorIH0KKyAMCisgCistLyogU2V0IG9iamZpbGVzX2NoYW5n ZWRfcCBzbyBzZWN0aW9uIG1hcCB3aWxsIGJlIHJlYnVpbHQgbmV4dCB0aW1lIGl0CisrLyogU2V0 IHNlY3Rpb25fbWFwX2RpcnR5IHNvIHNlY3Rpb24gbWFwIHdpbGwgYmUgcmVidWlsdCBuZXh0IHRp bWUgaXQKKyAgICBpcyB1c2VkLiAgQ2FsbGVkIGJ5IHJlcmVhZF9zeW1ib2xzLiAgKi8KKyAKKyB2 b2lkCisgb2JqZmlsZXNfY2hhbmdlZCAodm9pZCkKKyB7CisgICAvKiBSZWJ1aWxkIHNlY3Rpb24g bWFwIG5leHQgdGltZSB3ZSBuZWVkIGl0LiAgKi8KKy0gIGdldF9vYmpmaWxlX3BzcGFjZV9kYXRh IChjdXJyZW50X3Byb2dyYW1fc3BhY2UpLT5vYmpmaWxlc19jaGFuZ2VkX3AgPSAxOworKyAgZ2V0 X29iamZpbGVfcHNwYWNlX2RhdGEgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSktPnNlY3Rpb25fbWFw X2RpcnR5ID0gMTsKKyt9CisrCisrLyogU2VlIGNvbW1lbnRzIGluIG9iamZpbGVzLmguICAqLwor KworK3ZvaWQKKytpbmhpYml0X3NlY3Rpb25fbWFwX3VwZGF0ZXMgKHN0cnVjdCBwcm9ncmFtX3Nw YWNlICpwc3BhY2UpCisreworKyAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKHBzcGFjZSktPmlu aGliaXRfdXBkYXRlcyA9IDE7CisrfQorKworKy8qIFNlZSBjb21tZW50cyBpbiBvYmpmaWxlcy5o LiAgKi8KKysKKyt2b2lkCisrcmVzdW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXMgKHN0cnVjdCBwcm9n cmFtX3NwYWNlICpwc3BhY2UpCisreworKyAgZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKHBzcGFj ZSktPmluaGliaXRfdXBkYXRlcyA9IDA7CisrfQorKworKy8qIFNlZSBjb21tZW50cyBpbiBvYmpm aWxlcy5oLiAgKi8KKysKKyt2b2lkCisrcmVzdW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXNfY2xlYW51 cCAodm9pZCAqYXJnKQorK3sKKysgIHJlc3VtZV9zZWN0aW9uX21hcF91cGRhdGVzIChhcmcpOwor IH0KKyAKKyAvKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlICJpdGVyYXRlX292 ZXJfb2JqZmlsZXNfaW5fc2VhcmNoX29yZGVyIgorLS0tIHNyYy9nZGIvb2JqZmlsZXMuaAkyMDEz LzA1LzA2IDE5OjE1OjE3CTEuMTA2CisrKysgc3JjL2dkYi9vYmpmaWxlcy5oCTIwMTMvMDYvMDQg MTI6NTM6MzQJMS4xMDcKK0BAIC01MDEsNiArNTAxLDIyIEBACisgICAgbW9kdWxlcy4gICovCisg REVDTEFSRV9SRUdJU1RSWShvYmpmaWxlKTsKKyAKKysvKiBJbiBub3JtYWwgdXNlLCB0aGUgc2Vj dGlvbiBtYXAgd2lsbCBiZSByZWJ1aWx0IGJ5IGZpbmRfcGNfc2VjdGlvbgorKyAgIGlmIG9iamZp bGVzIGhhdmUgYmVlbiBhZGRlZCwgcmVtb3ZlZCBvciByZWxvY2F0ZWQgc2luY2UgaXQgd2FzIGxh c3QKKysgICBjYWxsZWQuICBDYWxsaW5nIGluaGliaXRfc2VjdGlvbl9tYXBfdXBkYXRlcyB3aWxs IGluaGliaXQgdGhpcworKyAgIGJlaGF2aW9yIHVudGlsIHJlc3VtZV9zZWN0aW9uX21hcF91cGRh dGVzIGlzIGNhbGxlZC4gIElmIHlvdSBjYWxsCisrICAgaW5oaWJpdF9zZWN0aW9uX21hcF91cGRh dGVzIHlvdSBtdXN0IGVuc3VyZSB0aGF0IGV2ZXJ5IGNhbGwgdG8KKysgICBmaW5kX3BjX3NlY3Rp b24gaW4gdGhlIGluaGliaXRlZCByZWdpb24gcmVsYXRlcyB0byBhIHNlY3Rpb24gdGhhdAorKyAg IGlzIGFscmVhZHkgaW4gdGhlIHNlY3Rpb24gbWFwIGFuZCBoYXMgbm90IHNpbmNlIGJlZW4gcmVt b3ZlZCBvcgorKyAgIHJlbG9jYXRlZC4gICovCisrZXh0ZXJuIHZvaWQgaW5oaWJpdF9zZWN0aW9u X21hcF91cGRhdGVzIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsKKysKKysvKiBSZXN1 bWUgYXV0b21hdGljYWxseSByZWJ1aWxkaW5nIHRoZSBzZWN0aW9uIG1hcCBhcyByZXF1aXJlZC4g ICovCisrZXh0ZXJuIHZvaWQgcmVzdW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXMgKHN0cnVjdCBwcm9n cmFtX3NwYWNlICpwc3BhY2UpOworKworKy8qIFZlcnNpb24gb2YgdGhlIGFib3ZlIHN1aXRhYmxl IGZvciB1c2UgYXMgYSBjbGVhbnVwLiAgKi8KKytleHRlcm4gdm9pZCByZXN1bWVfc2VjdGlvbl9t YXBfdXBkYXRlc19jbGVhbnVwICh2b2lkICphcmcpOworKworIGV4dGVybiB2b2lkIGRlZmF1bHRf aXRlcmF0ZV9vdmVyX29iamZpbGVzX2luX3NlYXJjaF9vcmRlcgorICAgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLAorICAgIGl0ZXJhdGVfb3Zlcl9vYmpmaWxlc19pbl9zZWFyY2hfb3JkZXJfY2Jf ZnR5cGUgKmNiLAoKZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS0zb2Y3LnBhdGNo IGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTNvZjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDkzMjUxY2EuLjAwMDAwMDAKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTNv ZjcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMTQgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTMtMDUvbXNnMDA2MjYuaHRtbAotU3ViamVjdDogW1JG QSAzLzddIE5ldyBnZGJzZXJ2ZXIgZnVuY3Rpb25hbGl0eQotCi0KLS0tS2M5SE5qcHpPWFZjN0ZG VQotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpCi1Db250ZW50LURp c3Bvc2l0aW9uOiBpbmxpbmUKLQotVGhpcyBwYXRjaCB1cGRhdGVzIGdkYnNlcnZlciB0byBhbGxv dyBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIGluIHRoZQotYW5uZXggb2YgcVhmZXI6bGlicmFyaWVz LXN2cjQ6cmVhZCB0byBhbGxvdyB0aGF0IGZ1bmN0aW9uIHRvIHRyYW5zZmVyCi1wYXJ0aWFsIGxp c3RzIG9mIGxpYnJhcmllcy4gIFRoZSBhYmlsaXR5IG9mIGdkYnNlcnZlciB0byBzdXBwb3J0Ci10 aGVzZSBhcmd1bWVudHMgaXMgaW5kaWNhdGVkIGJ5IGEgcVN1cHBvcnRlZCByZXNwb25zZSBjb250 YWluaW5nCi0iYXVnbWVudGVkLWxpYnJhcmllcy1zdnI0LXJlYWQrIi4KLQotLS1LYzlITmpwek9Y VmM3RkZVCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkKLUNvbnRl bnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSJydGxkLXByb2Jlcy0zLWdkYnNl cnZlci5wYXRjaCIKLQotMjAxMy0wNS0xNiAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJlZGhhdC5j b20+Ci0KLQkqIHNlcnZlci5jIChoYW5kbGVfcXVlcnkpOiBBZGQgImF1Z21lbnRlZC1saWJyYXJp ZXMtc3ZyNC1yZWFkKyIKLQl0byBxU3VwcG9ydGVkIHJlc3BvbnNlIHdoZW4gYXBwcm9wcmlhdGUu Ci0JKGhhbmRsZV9xeGZlcl9saWJyYXJpZXNfc3ZyNCk6IEFsbG93IHFYZmVyOmxpYnJhcmllcy1z dnI0OnJlYWQKLQl3aXRoIG5vbnplcm8tbGVuZ3RoIGFubmV4LgotCSogbGludXgtbG93LmMgKGxp bnV4X3F4ZmVyX2xpYnJhcmllc19zdnI0KTogUGFyc2UgYW5kIGhhbmRsZQotCWFyZ3VtZW50cyBz dXBwbGllZCBpbiBhbm5leC4KLQotZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvc2VydmVyLmMg Yi9nZGIvZ2Ric2VydmVyL3NlcnZlci5jCi1pbmRleCA2YmIzNmQ4Li4wYThmNjhiIDEwMDY0NAot LS0tIGEvZ2RiL2dkYnNlcnZlci9zZXJ2ZXIuYwotKysrIGIvZ2RiL2dkYnNlcnZlci9zZXJ2ZXIu YwotQEAgLTExMTUsOCArMTExNSw3IEBAIGhhbmRsZV9xeGZlcl9saWJyYXJpZXNfc3ZyNCAoY29u c3QgY2hhciAqYW5uZXgsCi0gICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLSAgICAgcmV0dXJuIC0y OwotIAotLSAgaWYgKGFubmV4WzBdICE9ICdcMCcgfHwgIXRhcmdldF9ydW5uaW5nICgpCi0tICAg ICAgfHwgdGhlX3RhcmdldC0+cXhmZXJfbGlicmFyaWVzX3N2cjQgPT0gTlVMTCkKLSsgIGlmICgh dGFyZ2V0X3J1bm5pbmcgKCkgfHwgdGhlX3RhcmdldC0+cXhmZXJfbGlicmFyaWVzX3N2cjQgPT0g TlVMTCkKLSAgICAgcmV0dXJuIC0xOwotIAotICAgcmV0dXJuIHRoZV90YXJnZXQtPnF4ZmVyX2xp YnJhcmllc19zdnI0IChhbm5leCwgcmVhZGJ1Ziwgd3JpdGVidWYsIG9mZnNldCwgbGVuKTsKLUBA IC0xNzQzLDcgKzE3NDIsOCBAQCBoYW5kbGVfcXVlcnkgKGNoYXIgKm93bl9idWYsIGludCBwYWNr ZXRfbGVuLCBpbnQgKm5ld19wYWNrZXRfbGVuX3ApCi0gCSAgICAgICBQQlVGU0laIC0gMSk7Ci0g Ci0gICAgICAgaWYgKHRoZV90YXJnZXQtPnF4ZmVyX2xpYnJhcmllc19zdnI0ICE9IE5VTEwpCi0t CXN0cmNhdCAob3duX2J1ZiwgIjtxWGZlcjpsaWJyYXJpZXMtc3ZyNDpyZWFkKyIpOwotKwlzdHJj YXQgKG93bl9idWYsICI7cVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCsiCi0rCQkiO2F1Z21lbnRl ZC1saWJyYXJpZXMtc3ZyNC1yZWFkKyIpOwotICAgICAgIGVsc2UKLSAJewotIAkgIC8qIFdlIGRv IG5vdCBoYXZlIGFueSBob29rIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIG5vbi1TVlI0IHRhcmdl dAotZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMgYi9nZGIvZ2Ric2VydmVy L2xpbnV4LWxvdy5jCi1pbmRleCA3MmM1MWUwLi5iZWIzYjhmIDEwMDY0NAotLS0tIGEvZ2RiL2dk YnNlcnZlci9saW51eC1sb3cuYwotKysrIGIvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwotQEAg LTU2NzcsNiArNTY3NywxMiBAQCBsaW51eF9xeGZlcl9saWJyYXJpZXNfc3ZyNCAoY29uc3QgY2hh ciAqYW5uZXgsIHVuc2lnbmVkIGNoYXIgKnJlYWRidWYsCi0gICAgIH07Ci0gICBjb25zdCBzdHJ1 Y3QgbGlua19tYXBfb2Zmc2V0cyAqbG1vOwotICAgdW5zaWduZWQgaW50IG1hY2hpbmU7Ci0rICBp bnQgcHRyX3NpemU7Ci0rICBDT1JFX0FERFIgbG1fYWRkciA9IDAsIGxtX3ByZXYgPSAwOwotKyAg aW50IGFsbG9jYXRlZCA9IDEwMjQ7Ci0rICBjaGFyICpwOwotKyAgQ09SRV9BRERSIGxfbmFtZSwg bF9hZGRyLCBsX2xkLCBsX25leHQsIGxfcHJldjsKLSsgIGludCBoZWFkZXJfZG9uZSA9IDA7Ci0g Ci0gICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLSAgICAgcmV0dXJuIC0yOwotQEAgLTU2ODcsMTI4 ICs1NjkzLDE0NiBAQCBsaW51eF9xeGZlcl9saWJyYXJpZXNfc3ZyNCAoY29uc3QgY2hhciAqYW5u ZXgsIHVuc2lnbmVkIGNoYXIgKnJlYWRidWYsCi0gICB4c25wcmludGYgKGZpbGVuYW1lLCBzaXpl b2YgZmlsZW5hbWUsICIvcHJvYy8lZC9leGUiLCBwaWQpOwotICAgaXNfZWxmNjQgPSBlbGZfNjRf ZmlsZV9wIChmaWxlbmFtZSwgJm1hY2hpbmUpOwotICAgbG1vID0gaXNfZWxmNjQgPyAmbG1vXzY0 Yml0X29mZnNldHMgOiAmbG1vXzMyYml0X29mZnNldHM7Ci0rICBwdHJfc2l6ZSA9IGlzX2VsZjY0 ID8gOCA6IDQ7Ci0gCi0tICBpZiAocHJpdi0+cl9kZWJ1ZyA9PSAwKQotLSAgICBwcml2LT5yX2Rl YnVnID0gZ2V0X3JfZGVidWcgKHBpZCwgaXNfZWxmNjQpOwotKyAgaWYgKGFubmV4WzBdID09ICdc MCcpCi0rICAgIHsKLSsgICAgICBpbnQgcl92ZXJzaW9uID0gMDsKLSAKLS0gIC8qIFdlIGZhaWxl ZCB0byBmaW5kIERUX0RFQlVHLiAgU3VjaCBzaXR1YXRpb24gd2lsbCBub3QgY2hhbmdlIGZvciB0 aGlzCi0tICAgICBpbmZlcmlvciAtIGRvIG5vdCByZXRyeSBpdC4gIFJlcG9ydCBpdCB0byBHREIg YXMgRTAxLCBzZWUgZm9yIHRoZSByZWFzb25zCi0tICAgICBhdCB0aGUgR0RCIHNvbGliLXN2cjQu YyBzaWRlLiAgKi8KLS0gIGlmIChwcml2LT5yX2RlYnVnID09IChDT1JFX0FERFIpIC0xKQotLSAg ICByZXR1cm4gLTE7Ci0rICAgICAgaWYgKHByaXYtPnJfZGVidWcgPT0gMCkKLSsJcHJpdi0+cl9k ZWJ1ZyA9IGdldF9yX2RlYnVnIChwaWQsIGlzX2VsZjY0KTsKLSAKLS0gIGlmIChwcml2LT5yX2Rl YnVnID09IDApCi0tICAgIHsKLS0gICAgICBkb2N1bWVudCA9IHhzdHJkdXAgKCI8bGlicmFyeS1s aXN0LXN2cjQgdmVyc2lvbj1cIjEuMFwiLz5cbiIpOwotKyAgICAgIC8qIFdlIGZhaWxlZCB0byBm aW5kIERUX0RFQlVHLiAgU3VjaCBzaXR1YXRpb24gd2lsbCBub3QgY2hhbmdlCi0rCSBmb3IgdGhp cyBpbmZlcmlvciAtIGRvIG5vdCByZXRyeSBpdC4gIFJlcG9ydCBpdCB0byBHREIgYXMKLSsJIEUw MSwgc2VlIGZvciB0aGUgcmVhc29ucyBhdCB0aGUgR0RCIHNvbGliLXN2cjQuYyBzaWRlLiAgKi8K LSsgICAgICBpZiAocHJpdi0+cl9kZWJ1ZyA9PSAoQ09SRV9BRERSKSAtMSkKLSsJcmV0dXJuIC0x OwotKwotKyAgICAgIGlmIChwcml2LT5yX2RlYnVnICE9IDApCi0rCXsKLSsJICBpZiAobGludXhf cmVhZF9tZW1vcnkgKHByaXYtPnJfZGVidWcgKyBsbW8tPnJfdmVyc2lvbl9vZmZzZXQsCi0rCQkJ CSAodW5zaWduZWQgY2hhciAqKSAmcl92ZXJzaW9uLAotKwkJCQkgc2l6ZW9mIChyX3ZlcnNpb24p KSAhPSAwCi0rCSAgICAgIHx8IHJfdmVyc2lvbiAhPSAxKQotKwkgICAgewotKwkgICAgICB3YXJu aW5nICgidW5leHBlY3RlZCByX2RlYnVnIHZlcnNpb24gJWQiLCByX3ZlcnNpb24pOwotKwkgICAg fQotKwkgIGVsc2UgaWYgKHJlYWRfb25lX3B0ciAocHJpdi0+cl9kZWJ1ZyArIGxtby0+cl9tYXBf b2Zmc2V0LAotKwkJCQkgJmxtX2FkZHIsIHB0cl9zaXplKSAhPSAwKQotKwkgICAgewotKwkgICAg ICB3YXJuaW5nICgidW5hYmxlIHRvIHJlYWQgcl9tYXAgZnJvbSAweCVseCIsCi0rCQkgICAgICAg KGxvbmcpIHByaXYtPnJfZGVidWcgKyBsbW8tPnJfbWFwX29mZnNldCk7Ci0rCSAgICB9Ci0rCX0K LSAgICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgaW50IGFsbG9jYXRlZCA9IDEwMjQ7Ci0t ICAgICAgY2hhciAqcDsKLS0gICAgICBjb25zdCBpbnQgcHRyX3NpemUgPSBpc19lbGY2NCA/IDgg OiA0OwotLSAgICAgIENPUkVfQUREUiBsbV9hZGRyLCBsbV9wcmV2LCBsX25hbWUsIGxfYWRkciwg bF9sZCwgbF9uZXh0LCBsX3ByZXY7Ci0tICAgICAgaW50IHJfdmVyc2lvbiwgaGVhZGVyX2RvbmUg PSAwOwotLQotLSAgICAgIGRvY3VtZW50ID0geG1hbGxvYyAoYWxsb2NhdGVkKTsKLS0gICAgICBz dHJjcHkgKGRvY3VtZW50LCAiPGxpYnJhcnktbGlzdC1zdnI0IHZlcnNpb249XCIxLjBcIiIpOwot LSAgICAgIHAgPSBkb2N1bWVudCArIHN0cmxlbiAoZG9jdW1lbnQpOwotLQotLSAgICAgIHJfdmVy c2lvbiA9IDA7Ci0tICAgICAgaWYgKGxpbnV4X3JlYWRfbWVtb3J5IChwcml2LT5yX2RlYnVnICsg bG1vLT5yX3ZlcnNpb25fb2Zmc2V0LAotLQkJCSAgICAgKHVuc2lnbmVkIGNoYXIgKikgJnJfdmVy c2lvbiwKLS0JCQkgICAgIHNpemVvZiAocl92ZXJzaW9uKSkgIT0gMAotLQkgIHx8IHJfdmVyc2lv biAhPSAxKQotKyAgICAgIHdoaWxlIChhbm5leFswXSAhPSAnXDAnKQotIAl7Ci0tCSAgd2Fybmlu ZyAoInVuZXhwZWN0ZWQgcl9kZWJ1ZyB2ZXJzaW9uICVkIiwgcl92ZXJzaW9uKTsKLS0JICBnb3Rv IGRvbmU7Ci0rCSAgY29uc3QgY2hhciAqc2VwOwotKwkgIENPUkVfQUREUiAqYWRkcnA7Ci0rCSAg aW50IGxlbjsKLSsKLSsJICBzZXAgPSBzdHJjaHIgKGFubmV4LCAnPScpOwotKwkgIGlmICghc2Vw KQotKwkgICAgYnJlYWs7Ci0rCi0rCSAgbGVuID0gc2VwIC0gYW5uZXg7Ci0rCSAgaWYgKGxlbiA9 PSA1ICYmICFzdHJuY21wIChhbm5leCwgInN0YXJ0IiwgNSkpCi0rCSAgICBhZGRycCA9ICZsbV9h ZGRyOwotKwkgIGVsc2UgaWYgKGxlbiA9PSA0ICYmICFzdHJuY21wIChhbm5leCwgInByZXYiLCA0 KSkKLSsJICAgIGFkZHJwID0gJmxtX3ByZXY7Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBh bm5leCA9IHN0cmNociAoc2VwLCAnOycpOwotKwkgICAgICBpZiAoIWFubmV4KQotKwkJYnJlYWs7 Ci0rCSAgICAgIGFubmV4Kys7Ci0rCSAgICAgIGNvbnRpbnVlOwotKwkgICAgfQotKwotKwkgIGFu bmV4ID0gZGVjb2RlX2FkZHJlc3NfdG9fc2VtaWNvbG9uIChhZGRycCwgc2VwICsgMSk7Ci0gCX0K LSsgICAgfQotIAotLSAgICAgIGlmIChyZWFkX29uZV9wdHIgKHByaXYtPnJfZGVidWcgKyBsbW8t PnJfbWFwX29mZnNldCwKLS0JCQkmbG1fYWRkciwgcHRyX3NpemUpICE9IDApCi0rICBkb2N1bWVu dCA9IHhtYWxsb2MgKGFsbG9jYXRlZCk7Ci0rICBzdHJjcHkgKGRvY3VtZW50LCAiPGxpYnJhcnkt bGlzdC1zdnI0IHZlcnNpb249XCIxLjBcIiIpOwotKyAgcCA9IGRvY3VtZW50ICsgc3RybGVuIChk b2N1bWVudCk7Ci0rCi0rICB3aGlsZSAobG1fYWRkcgotKwkgJiYgcmVhZF9vbmVfcHRyIChsbV9h ZGRyICsgbG1vLT5sX25hbWVfb2Zmc2V0LAotKwkJCSAgJmxfbmFtZSwgcHRyX3NpemUpID09IDAK LSsJICYmIHJlYWRfb25lX3B0ciAobG1fYWRkciArIGxtby0+bF9hZGRyX29mZnNldCwKLSsJCQkg ICZsX2FkZHIsIHB0cl9zaXplKSA9PSAwCi0rCSAmJiByZWFkX29uZV9wdHIgKGxtX2FkZHIgKyBs bW8tPmxfbGRfb2Zmc2V0LAotKwkJCSAgJmxfbGQsIHB0cl9zaXplKSA9PSAwCi0rCSAmJiByZWFk X29uZV9wdHIgKGxtX2FkZHIgKyBsbW8tPmxfcHJldl9vZmZzZXQsCi0rCQkJICAmbF9wcmV2LCBw dHJfc2l6ZSkgPT0gMAotKwkgJiYgcmVhZF9vbmVfcHRyIChsbV9hZGRyICsgbG1vLT5sX25leHRf b2Zmc2V0LAotKwkJCSAgJmxfbmV4dCwgcHRyX3NpemUpID09IDApCi0rICAgIHsKLSsgICAgICB1 bnNpZ25lZCBjaGFyIGxpYm5hbWVbUEFUSF9NQVhdOwotKwotKyAgICAgIGlmIChsbV9wcmV2ICE9 IGxfcHJldikKLSAJewotLQkgIHdhcm5pbmcgKCJ1bmFibGUgdG8gcmVhZCByX21hcCBmcm9tIDB4 JWx4IiwKLS0JCSAgIChsb25nKSBwcml2LT5yX2RlYnVnICsgbG1vLT5yX21hcF9vZmZzZXQpOwot LQkgIGdvdG8gZG9uZTsKLSsJICB3YXJuaW5nICgiQ29ycnVwdGVkIHNoYXJlZCBsaWJyYXJ5IGxp c3Q6IDB4JWx4ICE9IDB4JWx4IiwKLSsJCSAgIChsb25nKSBsbV9wcmV2LCAobG9uZykgbF9wcmV2 KTsKLSsJICBicmVhazsKLSAJfQotIAotLSAgICAgIGxtX3ByZXYgPSAwOwotLSAgICAgIHdoaWxl IChyZWFkX29uZV9wdHIgKGxtX2FkZHIgKyBsbW8tPmxfbmFtZV9vZmZzZXQsCi0tCQkJICAgJmxf bmFtZSwgcHRyX3NpemUpID09IDAKLS0JICAgICAmJiByZWFkX29uZV9wdHIgKGxtX2FkZHIgKyBs bW8tPmxfYWRkcl9vZmZzZXQsCi0tCQkJICAgICAgJmxfYWRkciwgcHRyX3NpemUpID09IDAKLS0J ICAgICAmJiByZWFkX29uZV9wdHIgKGxtX2FkZHIgKyBsbW8tPmxfbGRfb2Zmc2V0LAotLQkJCSAg ICAgICZsX2xkLCBwdHJfc2l6ZSkgPT0gMAotLQkgICAgICYmIHJlYWRfb25lX3B0ciAobG1fYWRk ciArIGxtby0+bF9wcmV2X29mZnNldCwKLS0JCQkgICAgICAmbF9wcmV2LCBwdHJfc2l6ZSkgPT0g MAotLQkgICAgICYmIHJlYWRfb25lX3B0ciAobG1fYWRkciArIGxtby0+bF9uZXh0X29mZnNldCwK LS0JCQkgICAgICAmbF9uZXh0LCBwdHJfc2l6ZSkgPT0gMCkKLSsgICAgICAvKiBOb3QgY2hlY2tp bmcgZm9yIGVycm9yIGJlY2F1c2UgcmVhZGluZyBtYXkgc3RvcCBiZWZvcmUKLSsJIHdlJ3ZlIGdv dCBQQVRIX01BWCB3b3J0aCBvZiBjaGFyYWN0ZXJzLiAgKi8KLSsgICAgICBsaWJuYW1lWzBdID0g J1wwJzsKLSsgICAgICBsaW51eF9yZWFkX21lbW9yeSAobF9uYW1lLCBsaWJuYW1lLCBzaXplb2Yg KGxpYm5hbWUpIC0gMSk7Ci0rICAgICAgbGlibmFtZVtzaXplb2YgKGxpYm5hbWUpIC0gMV0gPSAn XDAnOwotKyAgICAgIGlmIChsaWJuYW1lWzBdICE9ICdcMCcpCi0gCXsKLS0JICB1bnNpZ25lZCBj aGFyIGxpYm5hbWVbUEFUSF9NQVhdOwotKwkgIC8qIDZ4IHRoZSBzaXplIGZvciB4bWxfZXNjYXBl X3RleHQgYmVsb3cuICAqLwotKwkgIHNpemVfdCBsZW4gPSA2ICogc3RybGVuICgoY2hhciAqKSBs aWJuYW1lKTsKLSsJICBjaGFyICpuYW1lOwotIAotLQkgIGlmIChsbV9wcmV2ICE9IGxfcHJldikK LSsJICBpZiAoIWhlYWRlcl9kb25lKQotIAkgICAgewotLQkgICAgICB3YXJuaW5nICgiQ29ycnVw dGVkIHNoYXJlZCBsaWJyYXJ5IGxpc3Q6IDB4JWx4ICE9IDB4JWx4IiwKLS0JCSAgICAgICAobG9u ZykgbG1fcHJldiwgKGxvbmcpIGxfcHJldik7Ci0tCSAgICAgIGJyZWFrOwotKwkgICAgICAvKiBU ZXJtaW5hdGUgYDxsaWJyYXJ5LWxpc3Qtc3ZyNCcuICAqLwotKwkgICAgICAqcCsrID0gJz4nOwot KwkgICAgICBoZWFkZXJfZG9uZSA9IDE7Ci0gCSAgICB9Ci0gCi0tCSAgLyogTm90IGNoZWNraW5n IGZvciBlcnJvciBiZWNhdXNlIHJlYWRpbmcgbWF5IHN0b3AgYmVmb3JlCi0tCSAgICAgd2UndmUg Z290IFBBVEhfTUFYIHdvcnRoIG9mIGNoYXJhY3RlcnMuICAqLwotLQkgIGxpYm5hbWVbMF0gPSAn XDAnOwotLQkgIGxpbnV4X3JlYWRfbWVtb3J5IChsX25hbWUsIGxpYm5hbWUsIHNpemVvZiAobGli bmFtZSkgLSAxKTsKLS0JICBsaWJuYW1lW3NpemVvZiAobGlibmFtZSkgLSAxXSA9ICdcMCc7Ci0t CSAgaWYgKGxpYm5hbWVbMF0gIT0gJ1wwJykKLSsJICB3aGlsZSAoYWxsb2NhdGVkIDwgcCAtIGRv Y3VtZW50ICsgbGVuICsgMjAwKQotIAkgICAgewotLQkgICAgICAvKiA2eCB0aGUgc2l6ZSBmb3Ig eG1sX2VzY2FwZV90ZXh0IGJlbG93LiAgKi8KLS0JICAgICAgc2l6ZV90IGxlbiA9IDYgKiBzdHJs ZW4gKChjaGFyICopIGxpYm5hbWUpOwotLQkgICAgICBjaGFyICpuYW1lOwotLQotLQkgICAgICBp ZiAoIWhlYWRlcl9kb25lKQotLQkJewotLQkJICAvKiBUZXJtaW5hdGUgYDxsaWJyYXJ5LWxpc3Qt c3ZyNCcuICAqLwotLQkJICAqcCsrID0gJz4nOwotLQkJICBoZWFkZXJfZG9uZSA9IDE7Ci0tCQl9 Ci0tCi0tCSAgICAgIHdoaWxlIChhbGxvY2F0ZWQgPCBwIC0gZG9jdW1lbnQgKyBsZW4gKyAyMDAp Ci0tCQl7Ci0tCQkgIC8qIEV4cGFuZCB0byBndWFyYW50ZWUgc3VmZmljaWVudCBzdG9yYWdlLiAg Ki8KLS0JCSAgdWludHB0cl90IGRvY3VtZW50X2xlbiA9IHAgLSBkb2N1bWVudDsKLS0KLS0JCSAg ZG9jdW1lbnQgPSB4cmVhbGxvYyAoZG9jdW1lbnQsIDIgKiBhbGxvY2F0ZWQpOwotLQkJICBhbGxv Y2F0ZWQgKj0gMjsKLS0JCSAgcCA9IGRvY3VtZW50ICsgZG9jdW1lbnRfbGVuOwotLQkJfQotKwkg ICAgICAvKiBFeHBhbmQgdG8gZ3VhcmFudGVlIHN1ZmZpY2llbnQgc3RvcmFnZS4gICovCi0rCSAg ICAgIHVpbnRwdHJfdCBkb2N1bWVudF9sZW4gPSBwIC0gZG9jdW1lbnQ7Ci0gCi0tCSAgICAgIG5h bWUgPSB4bWxfZXNjYXBlX3RleHQgKChjaGFyICopIGxpYm5hbWUpOwotLQkgICAgICBwICs9IHNw cmludGYgKHAsICI8bGlicmFyeSBuYW1lPVwiJXNcIiBsbT1cIjB4JWx4XCIgIgotLQkJCSAgICAg ICAibF9hZGRyPVwiMHglbHhcIiBsX2xkPVwiMHglbHhcIi8+IiwKLS0JCQkgICAgbmFtZSwgKHVu c2lnbmVkIGxvbmcpIGxtX2FkZHIsCi0tCQkJICAgICh1bnNpZ25lZCBsb25nKSBsX2FkZHIsICh1 bnNpZ25lZCBsb25nKSBsX2xkKTsKLS0JICAgICAgZnJlZSAobmFtZSk7Ci0tCSAgICB9Ci0tCSAg ZWxzZSBpZiAobG1fcHJldiA9PSAwKQotLQkgICAgewotLQkgICAgICBzcHJpbnRmIChwLCAiIG1h aW4tbG09XCIweCVseFwiIiwgKHVuc2lnbmVkIGxvbmcpIGxtX2FkZHIpOwotLQkgICAgICBwID0g cCArIHN0cmxlbiAocCk7Ci0rCSAgICAgIGRvY3VtZW50ID0geHJlYWxsb2MgKGRvY3VtZW50LCAy ICogYWxsb2NhdGVkKTsKLSsJICAgICAgYWxsb2NhdGVkICo9IDI7Ci0rCSAgICAgIHAgPSBkb2N1 bWVudCArIGRvY3VtZW50X2xlbjsKLSAJICAgIH0KLSAKLS0JICBpZiAobF9uZXh0ID09IDApCi0t CSAgICBicmVhazsKLS0KLS0JICBsbV9wcmV2ID0gbG1fYWRkcjsKLS0JICBsbV9hZGRyID0gbF9u ZXh0OwotKwkgIG5hbWUgPSB4bWxfZXNjYXBlX3RleHQgKChjaGFyICopIGxpYm5hbWUpOwotKwkg IHAgKz0gc3ByaW50ZiAocCwgIjxsaWJyYXJ5IG5hbWU9XCIlc1wiIGxtPVwiMHglbHhcIiAiCi0r CQkJImxfYWRkcj1cIjB4JWx4XCIgbF9sZD1cIjB4JWx4XCIvPiIsCi0rCQkJbmFtZSwgKHVuc2ln bmVkIGxvbmcpIGxtX2FkZHIsCi0rCQkJKHVuc2lnbmVkIGxvbmcpIGxfYWRkciwgKHVuc2lnbmVk IGxvbmcpIGxfbGQpOwotKwkgIGZyZWUgKG5hbWUpOwotIAl9Ci0tICAgIGRvbmU6Ci0tICAgICAg aWYgKCFoZWFkZXJfZG9uZSkKLSsgICAgICBlbHNlIGlmIChsbV9wcmV2ID09IDApCi0gCXsKLS0J ICAvKiBFbXB0eSBsaXN0OyB0ZXJtaW5hdGUgYDxsaWJyYXJ5LWxpc3Qtc3ZyNCcuICAqLwotLQkg IHN0cmNweSAocCwgIi8+Iik7Ci0rCSAgc3ByaW50ZiAocCwgIiBtYWluLWxtPVwiMHglbHhcIiIs ICh1bnNpZ25lZCBsb25nKSBsbV9hZGRyKTsKLSsJICBwID0gcCArIHN0cmxlbiAocCk7Ci0gCX0K LS0gICAgICBlbHNlCi0tCXN0cmNweSAocCwgIjwvbGlicmFyeS1saXN0LXN2cjQ+Iik7Ci0rCi0r ICAgICAgbG1fcHJldiA9IGxtX2FkZHI7Ci0rICAgICAgbG1fYWRkciA9IGxfbmV4dDsKLSAgICAg fQotIAotKyAgaWYgKCFoZWFkZXJfZG9uZSkKLSsgICAgewotKyAgICAgIC8qIEVtcHR5IGxpc3Q7 IHRlcm1pbmF0ZSBgPGxpYnJhcnktbGlzdC1zdnI0Jy4gICovCi0rICAgICAgc3RyY3B5IChwLCAi Lz4iKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICBzdHJjcHkgKHAsICI8L2xpYnJhcnktbGlzdC1z dnI0PiIpOwotKwotICAgZG9jdW1lbnRfbGVuID0gc3RybGVuIChkb2N1bWVudCk7Ci0gICBpZiAo b2Zmc2V0IDwgZG9jdW1lbnRfbGVuKQotICAgICBkb2N1bWVudF9sZW4gLT0gb2Zmc2V0OwotCi0t LUtjOUhOanB6T1hWYzdGRlUtLQotCgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFwLXByb2Jl LTNvZjkucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtM29mOS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTFmNGJkCi0tLSAvZGV2L251bGwKKysrIGIvZ2Ri LWRsb3Blbi1zdGFwLXByb2JlLTNvZjkucGF0Y2gKQEAgLTAsMCArMSwyOTggQEAKK2h0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDYvbXNnMDAwMTQuaHRtbAorCisjIyMgc3Jj L2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nCTIwMTMvMDUvMzEgMTk6MTQ6MzMJMS43MjAKKyMjIyBz cmMvZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cJMjAxMy8wNi8wNCAxMjo1OToyMAkxLjcyMQorIyMg LTEsMyArMSwxMiBAQAorKzIwMTMtMDYtMDQgIEdhcnkgQmVuc29uICA8Z2JlbnNvbkByZWRoYXQu Y29tPgorKworKwkqIHNlcnZlci5jIChoYW5kbGVfcXVlcnkpOiBBZGQgImF1Z21lbnRlZC1saWJy YXJpZXMtc3ZyNC1yZWFkKyIKKysJdG8gcVN1cHBvcnRlZCByZXNwb25zZSB3aGVuIGFwcHJvcHJp YXRlLgorKwkoaGFuZGxlX3F4ZmVyX2xpYnJhcmllc19zdnI0KTogQWxsb3cgcVhmZXI6bGlicmFy aWVzLXN2cjQ6cmVhZAorKwl3aXRoIG5vbnplcm8tbGVuZ3RoIGFubmV4LgorKwkqIGxpbnV4LWxv dy5jIChsaW51eF9xeGZlcl9saWJyYXJpZXNfc3ZyNCk6IFBhcnNlIGFuZCBoYW5kbGUKKysJYXJn dW1lbnRzIHN1cHBsaWVkIGluIGFubmV4LgorKworIDIwMTMtMDUtMzEgIERvdWcgRXZhbnMgIDxk amVAZ29vZ2xlLmNvbT4KKyAKKyAJKiBsaW51eC14ODYtbG93LmMgKHBzX2dldF90aHJlYWRfYXJl YSk6IFByb3Blcmx5IGV4dGVuZCBhZGRyZXNzIHRvCistLS0gc3JjL2dkYi9nZGJzZXJ2ZXIvbGlu dXgtbG93LmMJMjAxMy8wNS8yMyAxNzoxNzo1MAkxLjIzNworKysrIHNyYy9nZGIvZ2Ric2VydmVy L2xpbnV4LWxvdy5jCTIwMTMvMDYvMDQgMTI6NTk6MjEJMS4yMzgKK0BAIC01NzI4LDYgKzU3Mjgs MTIgQEAKKyAgICAgfTsKKyAgIGNvbnN0IHN0cnVjdCBsaW5rX21hcF9vZmZzZXRzICpsbW87Cisg ICB1bnNpZ25lZCBpbnQgbWFjaGluZTsKKysgIGludCBwdHJfc2l6ZTsKKysgIENPUkVfQUREUiBs bV9hZGRyID0gMCwgbG1fcHJldiA9IDA7CisrICBpbnQgYWxsb2NhdGVkID0gMTAyNDsKKysgIGNo YXIgKnA7CisrICBDT1JFX0FERFIgbF9uYW1lLCBsX2FkZHIsIGxfbGQsIGxfbmV4dCwgbF9wcmV2 OworKyAgaW50IGhlYWRlcl9kb25lID0gMDsKKyAKKyAgIGlmICh3cml0ZWJ1ZiAhPSBOVUxMKQor ICAgICByZXR1cm4gLTI7CitAQCAtNTczOCwxMjggKzU3NDQsMTQ0IEBACisgICB4c25wcmludGYg KGZpbGVuYW1lLCBzaXplb2YgZmlsZW5hbWUsICIvcHJvYy8lZC9leGUiLCBwaWQpOworICAgaXNf ZWxmNjQgPSBlbGZfNjRfZmlsZV9wIChmaWxlbmFtZSwgJm1hY2hpbmUpOworICAgbG1vID0gaXNf ZWxmNjQgPyAmbG1vXzY0Yml0X29mZnNldHMgOiAmbG1vXzMyYml0X29mZnNldHM7CisrICBwdHJf c2l6ZSA9IGlzX2VsZjY0ID8gOCA6IDQ7CisgCistICBpZiAocHJpdi0+cl9kZWJ1ZyA9PSAwKQor LSAgICBwcml2LT5yX2RlYnVnID0gZ2V0X3JfZGVidWcgKHBpZCwgaXNfZWxmNjQpOworLQorLSAg LyogV2UgZmFpbGVkIHRvIGZpbmQgRFRfREVCVUcuICBTdWNoIHNpdHVhdGlvbiB3aWxsIG5vdCBj aGFuZ2UgZm9yIHRoaXMKKy0gICAgIGluZmVyaW9yIC0gZG8gbm90IHJldHJ5IGl0LiAgUmVwb3J0 IGl0IHRvIEdEQiBhcyBFMDEsIHNlZSBmb3IgdGhlIHJlYXNvbnMKKy0gICAgIGF0IHRoZSBHREIg c29saWItc3ZyNC5jIHNpZGUuICAqLworLSAgaWYgKHByaXYtPnJfZGVidWcgPT0gKENPUkVfQURE UikgLTEpCistICAgIHJldHVybiAtMTsKKy0KKy0gIGlmIChwcml2LT5yX2RlYnVnID09IDApCisr ICB3aGlsZSAoYW5uZXhbMF0gIT0gJ1wwJykKKyAgICAgeworLSAgICAgIGRvY3VtZW50ID0geHN0 cmR1cCAoIjxsaWJyYXJ5LWxpc3Qtc3ZyNCB2ZXJzaW9uPVwiMS4wXCIvPlxuIik7CisrICAgICAg Y29uc3QgY2hhciAqc2VwOworKyAgICAgIENPUkVfQUREUiAqYWRkcnA7CisrICAgICAgaW50IGxl bjsKKysKKysgICAgICBzZXAgPSBzdHJjaHIgKGFubmV4LCAnPScpOworKyAgICAgIGlmIChzZXAg PT0gTlVMTCkKKysJYnJlYWs7CisrCisrICAgICAgbGVuID0gc2VwIC0gYW5uZXg7CisrICAgICAg aWYgKGxlbiA9PSA1ICYmIHN0cm5jbXAgKGFubmV4LCAic3RhcnQiLCA1KSA9PSAwKQorKwlhZGRy cCA9ICZsbV9hZGRyOworKyAgICAgIGVsc2UgaWYgKGxlbiA9PSA0ICYmIHN0cm5jbXAgKGFubmV4 LCAicHJldiIsIDQpID09IDApCisrCWFkZHJwID0gJmxtX3ByZXY7CisrICAgICAgZWxzZQorKwl7 CisrCSAgYW5uZXggPSBzdHJjaHIgKHNlcCwgJzsnKTsKKysJICBpZiAoYW5uZXggPT0gTlVMTCkK KysJICAgIGJyZWFrOworKwkgIGFubmV4Kys7CisrCSAgY29udGludWU7CisrCX0KKysKKysgICAg ICBhbm5leCA9IGRlY29kZV9hZGRyZXNzX3RvX3NlbWljb2xvbiAoYWRkcnAsIHNlcCArIDEpOwor ICAgICB9CistICBlbHNlCisrCisrICBpZiAobG1fYWRkciA9PSAwKQorICAgICB7CistICAgICAg aW50IGFsbG9jYXRlZCA9IDEwMjQ7CistICAgICAgY2hhciAqcDsKKy0gICAgICBjb25zdCBpbnQg cHRyX3NpemUgPSBpc19lbGY2NCA/IDggOiA0OworLSAgICAgIENPUkVfQUREUiBsbV9hZGRyLCBs bV9wcmV2LCBsX25hbWUsIGxfYWRkciwgbF9sZCwgbF9uZXh0LCBsX3ByZXY7CistICAgICAgaW50 IHJfdmVyc2lvbiwgaGVhZGVyX2RvbmUgPSAwOworLQorLSAgICAgIGRvY3VtZW50ID0geG1hbGxv YyAoYWxsb2NhdGVkKTsKKy0gICAgICBzdHJjcHkgKGRvY3VtZW50LCAiPGxpYnJhcnktbGlzdC1z dnI0IHZlcnNpb249XCIxLjBcIiIpOworLSAgICAgIHAgPSBkb2N1bWVudCArIHN0cmxlbiAoZG9j dW1lbnQpOworLQorLSAgICAgIHJfdmVyc2lvbiA9IDA7CistICAgICAgaWYgKGxpbnV4X3JlYWRf bWVtb3J5IChwcml2LT5yX2RlYnVnICsgbG1vLT5yX3ZlcnNpb25fb2Zmc2V0LAorLQkJCSAgICAg KHVuc2lnbmVkIGNoYXIgKikgJnJfdmVyc2lvbiwKKy0JCQkgICAgIHNpemVvZiAocl92ZXJzaW9u KSkgIT0gMAorLQkgIHx8IHJfdmVyc2lvbiAhPSAxKQorKyAgICAgIGludCByX3ZlcnNpb24gPSAw OworKworKyAgICAgIGlmIChwcml2LT5yX2RlYnVnID09IDApCisrCXByaXYtPnJfZGVidWcgPSBn ZXRfcl9kZWJ1ZyAocGlkLCBpc19lbGY2NCk7CisrCisrICAgICAgLyogV2UgZmFpbGVkIHRvIGZp bmQgRFRfREVCVUcuICBTdWNoIHNpdHVhdGlvbiB3aWxsIG5vdCBjaGFuZ2UKKysJIGZvciB0aGlz IGluZmVyaW9yIC0gZG8gbm90IHJldHJ5IGl0LiAgUmVwb3J0IGl0IHRvIEdEQiBhcworKwkgRTAx LCBzZWUgZm9yIHRoZSByZWFzb25zIGF0IHRoZSBHREIgc29saWItc3ZyNC5jIHNpZGUuICAqLwor KyAgICAgIGlmIChwcml2LT5yX2RlYnVnID09IChDT1JFX0FERFIpIC0xKQorKwlyZXR1cm4gLTE7 CisrCisrICAgICAgaWYgKHByaXYtPnJfZGVidWcgIT0gMCkKKyAJeworLQkgIHdhcm5pbmcgKCJ1 bmV4cGVjdGVkIHJfZGVidWcgdmVyc2lvbiAlZCIsIHJfdmVyc2lvbik7CistCSAgZ290byBkb25l OworKwkgIGlmIChsaW51eF9yZWFkX21lbW9yeSAocHJpdi0+cl9kZWJ1ZyArIGxtby0+cl92ZXJz aW9uX29mZnNldCwKKysJCQkJICh1bnNpZ25lZCBjaGFyICopICZyX3ZlcnNpb24sCisrCQkJCSBz aXplb2YgKHJfdmVyc2lvbikpICE9IDAKKysJICAgICAgfHwgcl92ZXJzaW9uICE9IDEpCisrCSAg ICB7CisrCSAgICAgIHdhcm5pbmcgKCJ1bmV4cGVjdGVkIHJfZGVidWcgdmVyc2lvbiAlZCIsIHJf dmVyc2lvbik7CisrCSAgICB9CisrCSAgZWxzZSBpZiAocmVhZF9vbmVfcHRyIChwcml2LT5yX2Rl YnVnICsgbG1vLT5yX21hcF9vZmZzZXQsCisrCQkJCSAmbG1fYWRkciwgcHRyX3NpemUpICE9IDAp CisrCSAgICB7CisrCSAgICAgIHdhcm5pbmcgKCJ1bmFibGUgdG8gcmVhZCByX21hcCBmcm9tIDB4 JWx4IiwKKysJCSAgICAgICAobG9uZykgcHJpdi0+cl9kZWJ1ZyArIGxtby0+cl9tYXBfb2Zmc2V0 KTsKKysJICAgIH0KKyAJfQorKyAgICB9CisrCisrICBkb2N1bWVudCA9IHhtYWxsb2MgKGFsbG9j YXRlZCk7CisrICBzdHJjcHkgKGRvY3VtZW50LCAiPGxpYnJhcnktbGlzdC1zdnI0IHZlcnNpb249 XCIxLjBcIiIpOworKyAgcCA9IGRvY3VtZW50ICsgc3RybGVuIChkb2N1bWVudCk7CisrCisrICB3 aGlsZSAobG1fYWRkcgorKwkgJiYgcmVhZF9vbmVfcHRyIChsbV9hZGRyICsgbG1vLT5sX25hbWVf b2Zmc2V0LAorKwkJCSAgJmxfbmFtZSwgcHRyX3NpemUpID09IDAKKysJICYmIHJlYWRfb25lX3B0 ciAobG1fYWRkciArIGxtby0+bF9hZGRyX29mZnNldCwKKysJCQkgICZsX2FkZHIsIHB0cl9zaXpl KSA9PSAwCisrCSAmJiByZWFkX29uZV9wdHIgKGxtX2FkZHIgKyBsbW8tPmxfbGRfb2Zmc2V0LAor KwkJCSAgJmxfbGQsIHB0cl9zaXplKSA9PSAwCisrCSAmJiByZWFkX29uZV9wdHIgKGxtX2FkZHIg KyBsbW8tPmxfcHJldl9vZmZzZXQsCisrCQkJICAmbF9wcmV2LCBwdHJfc2l6ZSkgPT0gMAorKwkg JiYgcmVhZF9vbmVfcHRyIChsbV9hZGRyICsgbG1vLT5sX25leHRfb2Zmc2V0LAorKwkJCSAgJmxf bmV4dCwgcHRyX3NpemUpID09IDApCisrICAgIHsKKysgICAgICB1bnNpZ25lZCBjaGFyIGxpYm5h bWVbUEFUSF9NQVhdOworIAorLSAgICAgIGlmIChyZWFkX29uZV9wdHIgKHByaXYtPnJfZGVidWcg KyBsbW8tPnJfbWFwX29mZnNldCwKKy0JCQkmbG1fYWRkciwgcHRyX3NpemUpICE9IDApCisrICAg ICAgaWYgKGxtX3ByZXYgIT0gbF9wcmV2KQorIAl7CistCSAgd2FybmluZyAoInVuYWJsZSB0byBy ZWFkIHJfbWFwIGZyb20gMHglbHgiLAorLQkJICAgKGxvbmcpIHByaXYtPnJfZGVidWcgKyBsbW8t PnJfbWFwX29mZnNldCk7CistCSAgZ290byBkb25lOworKwkgIHdhcm5pbmcgKCJDb3JydXB0ZWQg c2hhcmVkIGxpYnJhcnkgbGlzdDogMHglbHggIT0gMHglbHgiLAorKwkJICAgKGxvbmcpIGxtX3By ZXYsIChsb25nKSBsX3ByZXYpOworKwkgIGJyZWFrOworIAl9CisgCistICAgICAgbG1fcHJldiA9 IDA7CistICAgICAgd2hpbGUgKHJlYWRfb25lX3B0ciAobG1fYWRkciArIGxtby0+bF9uYW1lX29m ZnNldCwKKy0JCQkgICAmbF9uYW1lLCBwdHJfc2l6ZSkgPT0gMAorLQkgICAgICYmIHJlYWRfb25l X3B0ciAobG1fYWRkciArIGxtby0+bF9hZGRyX29mZnNldCwKKy0JCQkgICAgICAmbF9hZGRyLCBw dHJfc2l6ZSkgPT0gMAorLQkgICAgICYmIHJlYWRfb25lX3B0ciAobG1fYWRkciArIGxtby0+bF9s ZF9vZmZzZXQsCistCQkJICAgICAgJmxfbGQsIHB0cl9zaXplKSA9PSAwCistCSAgICAgJiYgcmVh ZF9vbmVfcHRyIChsbV9hZGRyICsgbG1vLT5sX3ByZXZfb2Zmc2V0LAorLQkJCSAgICAgICZsX3By ZXYsIHB0cl9zaXplKSA9PSAwCistCSAgICAgJiYgcmVhZF9vbmVfcHRyIChsbV9hZGRyICsgbG1v LT5sX25leHRfb2Zmc2V0LAorLQkJCSAgICAgICZsX25leHQsIHB0cl9zaXplKSA9PSAwKQorKyAg ICAgIC8qIE5vdCBjaGVja2luZyBmb3IgZXJyb3IgYmVjYXVzZSByZWFkaW5nIG1heSBzdG9wIGJl Zm9yZQorKwkgd2UndmUgZ290IFBBVEhfTUFYIHdvcnRoIG9mIGNoYXJhY3RlcnMuICAqLworKyAg ICAgIGxpYm5hbWVbMF0gPSAnXDAnOworKyAgICAgIGxpbnV4X3JlYWRfbWVtb3J5IChsX25hbWUs IGxpYm5hbWUsIHNpemVvZiAobGlibmFtZSkgLSAxKTsKKysgICAgICBsaWJuYW1lW3NpemVvZiAo bGlibmFtZSkgLSAxXSA9ICdcMCc7CisrICAgICAgaWYgKGxpYm5hbWVbMF0gIT0gJ1wwJykKKyAJ eworLQkgIHVuc2lnbmVkIGNoYXIgbGlibmFtZVtQQVRIX01BWF07CisrCSAgLyogNnggdGhlIHNp emUgZm9yIHhtbF9lc2NhcGVfdGV4dCBiZWxvdy4gICovCisrCSAgc2l6ZV90IGxlbiA9IDYgKiBz dHJsZW4gKChjaGFyICopIGxpYm5hbWUpOworKwkgIGNoYXIgKm5hbWU7CisgCistCSAgaWYgKGxt X3ByZXYgIT0gbF9wcmV2KQorKwkgIGlmICghaGVhZGVyX2RvbmUpCisgCSAgICB7CistCSAgICAg IHdhcm5pbmcgKCJDb3JydXB0ZWQgc2hhcmVkIGxpYnJhcnkgbGlzdDogMHglbHggIT0gMHglbHgi LAorLQkJICAgICAgIChsb25nKSBsbV9wcmV2LCAobG9uZykgbF9wcmV2KTsKKy0JICAgICAgYnJl YWs7CisrCSAgICAgIC8qIFRlcm1pbmF0ZSBgPGxpYnJhcnktbGlzdC1zdnI0Jy4gICovCisrCSAg ICAgICpwKysgPSAnPic7CisrCSAgICAgIGhlYWRlcl9kb25lID0gMTsKKyAJICAgIH0KKyAKKy0J ICAvKiBOb3QgY2hlY2tpbmcgZm9yIGVycm9yIGJlY2F1c2UgcmVhZGluZyBtYXkgc3RvcCBiZWZv cmUKKy0JICAgICB3ZSd2ZSBnb3QgUEFUSF9NQVggd29ydGggb2YgY2hhcmFjdGVycy4gICovCist CSAgbGlibmFtZVswXSA9ICdcMCc7CistCSAgbGludXhfcmVhZF9tZW1vcnkgKGxfbmFtZSwgbGli bmFtZSwgc2l6ZW9mIChsaWJuYW1lKSAtIDEpOworLQkgIGxpYm5hbWVbc2l6ZW9mIChsaWJuYW1l KSAtIDFdID0gJ1wwJzsKKy0JICBpZiAobGlibmFtZVswXSAhPSAnXDAnKQorKwkgIHdoaWxlIChh bGxvY2F0ZWQgPCBwIC0gZG9jdW1lbnQgKyBsZW4gKyAyMDApCisgCSAgICB7CistCSAgICAgIC8q IDZ4IHRoZSBzaXplIGZvciB4bWxfZXNjYXBlX3RleHQgYmVsb3cuICAqLworLQkgICAgICBzaXpl X3QgbGVuID0gNiAqIHN0cmxlbiAoKGNoYXIgKikgbGlibmFtZSk7CistCSAgICAgIGNoYXIgKm5h bWU7CistCistCSAgICAgIGlmICghaGVhZGVyX2RvbmUpCistCQl7CistCQkgIC8qIFRlcm1pbmF0 ZSBgPGxpYnJhcnktbGlzdC1zdnI0Jy4gICovCistCQkgICpwKysgPSAnPic7CistCQkgIGhlYWRl cl9kb25lID0gMTsKKy0JCX0KKy0KKy0JICAgICAgd2hpbGUgKGFsbG9jYXRlZCA8IHAgLSBkb2N1 bWVudCArIGxlbiArIDIwMCkKKy0JCXsKKy0JCSAgLyogRXhwYW5kIHRvIGd1YXJhbnRlZSBzdWZm aWNpZW50IHN0b3JhZ2UuICAqLworLQkJICB1aW50cHRyX3QgZG9jdW1lbnRfbGVuID0gcCAtIGRv Y3VtZW50OworLQorLQkJICBkb2N1bWVudCA9IHhyZWFsbG9jIChkb2N1bWVudCwgMiAqIGFsbG9j YXRlZCk7CistCQkgIGFsbG9jYXRlZCAqPSAyOworLQkJICBwID0gZG9jdW1lbnQgKyBkb2N1bWVu dF9sZW47CistCQl9CistCistCSAgICAgIG5hbWUgPSB4bWxfZXNjYXBlX3RleHQgKChjaGFyICop IGxpYm5hbWUpOworLQkgICAgICBwICs9IHNwcmludGYgKHAsICI8bGlicmFyeSBuYW1lPVwiJXNc IiBsbT1cIjB4JWx4XCIgIgorLQkJCSAgICAgICAibF9hZGRyPVwiMHglbHhcIiBsX2xkPVwiMHgl bHhcIi8+IiwKKy0JCQkgICAgbmFtZSwgKHVuc2lnbmVkIGxvbmcpIGxtX2FkZHIsCistCQkJICAg ICh1bnNpZ25lZCBsb25nKSBsX2FkZHIsICh1bnNpZ25lZCBsb25nKSBsX2xkKTsKKy0JICAgICAg ZnJlZSAobmFtZSk7CistCSAgICB9CistCSAgZWxzZSBpZiAobG1fcHJldiA9PSAwKQorLQkgICAg eworLQkgICAgICBzcHJpbnRmIChwLCAiIG1haW4tbG09XCIweCVseFwiIiwgKHVuc2lnbmVkIGxv bmcpIGxtX2FkZHIpOworLQkgICAgICBwID0gcCArIHN0cmxlbiAocCk7CistCSAgICB9CisrCSAg ICAgIC8qIEV4cGFuZCB0byBndWFyYW50ZWUgc3VmZmljaWVudCBzdG9yYWdlLiAgKi8KKysJICAg ICAgdWludHB0cl90IGRvY3VtZW50X2xlbiA9IHAgLSBkb2N1bWVudDsKKyAKKy0JICBpZiAobF9u ZXh0ID09IDApCistCSAgICBicmVhazsKKysJICAgICAgZG9jdW1lbnQgPSB4cmVhbGxvYyAoZG9j dW1lbnQsIDIgKiBhbGxvY2F0ZWQpOworKwkgICAgICBhbGxvY2F0ZWQgKj0gMjsKKysJICAgICAg cCA9IGRvY3VtZW50ICsgZG9jdW1lbnRfbGVuOworKwkgICAgfQorIAorLQkgIGxtX3ByZXYgPSBs bV9hZGRyOworLQkgIGxtX2FkZHIgPSBsX25leHQ7CisrCSAgbmFtZSA9IHhtbF9lc2NhcGVfdGV4 dCAoKGNoYXIgKikgbGlibmFtZSk7CisrCSAgcCArPSBzcHJpbnRmIChwLCAiPGxpYnJhcnkgbmFt ZT1cIiVzXCIgbG09XCIweCVseFwiICIKKysJCQkibF9hZGRyPVwiMHglbHhcIiBsX2xkPVwiMHgl bHhcIi8+IiwKKysJCQluYW1lLCAodW5zaWduZWQgbG9uZykgbG1fYWRkciwKKysJCQkodW5zaWdu ZWQgbG9uZykgbF9hZGRyLCAodW5zaWduZWQgbG9uZykgbF9sZCk7CisrCSAgZnJlZSAobmFtZSk7 CisgCX0KKy0gICAgZG9uZToKKy0gICAgICBpZiAoIWhlYWRlcl9kb25lKQorKyAgICAgIGVsc2Ug aWYgKGxtX3ByZXYgPT0gMCkKKyAJeworLQkgIC8qIEVtcHR5IGxpc3Q7IHRlcm1pbmF0ZSBgPGxp YnJhcnktbGlzdC1zdnI0Jy4gICovCistCSAgc3RyY3B5IChwLCAiLz4iKTsKKysJICBzcHJpbnRm IChwLCAiIG1haW4tbG09XCIweCVseFwiIiwgKHVuc2lnbmVkIGxvbmcpIGxtX2FkZHIpOworKwkg IHAgPSBwICsgc3RybGVuIChwKTsKKyAJfQorLSAgICAgIGVsc2UKKy0Jc3RyY3B5IChwLCAiPC9s aWJyYXJ5LWxpc3Qtc3ZyND4iKTsKKysKKysgICAgICBsbV9wcmV2ID0gbG1fYWRkcjsKKysgICAg ICBsbV9hZGRyID0gbF9uZXh0OworICAgICB9CisgCisrICBpZiAoIWhlYWRlcl9kb25lKQorKyAg ICB7CisrICAgICAgLyogRW1wdHkgbGlzdDsgdGVybWluYXRlIGA8bGlicmFyeS1saXN0LXN2cjQn LiAgKi8KKysgICAgICBzdHJjcHkgKHAsICIvPiIpOworKyAgICB9CisrICBlbHNlCisrICAgIHN0 cmNweSAocCwgIjwvbGlicmFyeS1saXN0LXN2cjQ+Iik7CisrCisgICBkb2N1bWVudF9sZW4gPSBz dHJsZW4gKGRvY3VtZW50KTsKKyAgIGlmIChvZmZzZXQgPCBkb2N1bWVudF9sZW4pCisgICAgIGRv Y3VtZW50X2xlbiAtPSBvZmZzZXQ7CistLS0gc3JjL2dkYi9nZGJzZXJ2ZXIvc2VydmVyLmMJMjAx My8wNS8yNCAxMToyODowNgkxLjE5MQorKysrIHNyYy9nZGIvZ2Ric2VydmVyL3NlcnZlci5jCTIw MTMvMDYvMDQgMTI6NTk6MjEJMS4xOTIKK0BAIC0xMTE1LDggKzExMTUsNyBAQAorICAgaWYgKHdy aXRlYnVmICE9IE5VTEwpCisgICAgIHJldHVybiAtMjsKKyAKKy0gIGlmIChhbm5leFswXSAhPSAn XDAnIHx8ICF0YXJnZXRfcnVubmluZyAoKQorLSAgICAgIHx8IHRoZV90YXJnZXQtPnF4ZmVyX2xp YnJhcmllc19zdnI0ID09IE5VTEwpCisrICBpZiAoIXRhcmdldF9ydW5uaW5nICgpIHx8IHRoZV90 YXJnZXQtPnF4ZmVyX2xpYnJhcmllc19zdnI0ID09IE5VTEwpCisgICAgIHJldHVybiAtMTsKKyAK KyAgIHJldHVybiB0aGVfdGFyZ2V0LT5xeGZlcl9saWJyYXJpZXNfc3ZyNCAoYW5uZXgsIHJlYWRi dWYsIHdyaXRlYnVmLCBvZmZzZXQsIGxlbik7CitAQCAtMTc0Myw3ICsxNzQyLDggQEAKKyAJICAg ICAgIFBCVUZTSVogLSAxKTsKKyAKKyAgICAgICBpZiAodGhlX3RhcmdldC0+cXhmZXJfbGlicmFy aWVzX3N2cjQgIT0gTlVMTCkKKy0Jc3RyY2F0IChvd25fYnVmLCAiO3FYZmVyOmxpYnJhcmllcy1z dnI0OnJlYWQrIik7CisrCXN0cmNhdCAob3duX2J1ZiwgIjtxWGZlcjpsaWJyYXJpZXMtc3ZyNDpy ZWFkKyIKKysJCSI7YXVnbWVudGVkLWxpYnJhcmllcy1zdnI0LXJlYWQrIik7CisgICAgICAgZWxz ZQorIAl7CisgCSAgLyogV2UgZG8gbm90IGhhdmUgYW55IGhvb2sgdG8gaW5kaWNhdGUgd2hldGhl ciB0aGUgbm9uLVNWUjQgdGFyZ2V0CgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFwLXByb2Jl LTRvZjcucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtNG9mNy5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMjI0YzM2Ni4uMDAwMDAwMAotLS0gYS9nZGItZGxvcGVuLXN0 YXAtcHJvYmUtNG9mNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi1odHRw Oi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMy0wNS9tc2cwMDYyOC5odG1sCi1T dWJqZWN0OiBbUkZBIDQvN10gR0RCIHN1cHBvcnQgZm9yIG5ldyBnZGJzZXJ2ZXIgZnVuY3Rpb25h bGl0eQotCi0KLS0tQ2FQS2doM1hIcHEzckVVVgotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBj aGFyc2V0PXVzLWFzY2lpCi1Db250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmUKLQotVGhpcyBwYXRj aCBhZGRzIGNsaWVudCBzdXBwb3J0IGZvciB0aGUgbmV3IGdkYnNlcnZlciBmdW5jdGlvbmFsaXR5 Ci1wcm92aWRlZCBieSBwYXRjaCAzIG9mIHRoaXMgc2VyaWVzLgotCi0tLUNhUEtnaDNYSHBxM3JF VVYKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQotQ29udGVudC1E aXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9InJ0bGQtcHJvYmVzLTQtcmVtb3RlLnBh dGNoIgotCi0yMDEzLTA1LTE2ICBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4KLQot CSogdGFyZ2V0LmggKHRhcmdldF9vcHMpOiBOZXcgZmllbGQKLQkidG9fYXVnbWVudGVkX2xpYnJh cmllc19zdnI0X3JlYWQiLgotCSh0YXJnZXRfYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQp OiBOZXcgbWFjcm8uCi0JKiB0YXJnZXQuYyAodXBkYXRlX2N1cnJlbnRfdGFyZ2V0KTogSGFuZGxl Ci0JdG9fYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQuCi0JKiByZW1vdGUuYyAocmVtb3Rl X3N0YXRlKTogTmV3IGZpZWxkCi0JImF1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkIi4KLQko cmVtb3RlX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkX2ZlYXR1cmUpOiBOZXcgZnVuY3Rp b24uCi0JKHJlbW90ZV9wcm90b2NvbF9mZWF0dXJlcyk6IEFkZCBlbnRyeSBmb3IKLQkiYXVnbWVu dGVkLWxpYnJhcmllcy1zdnI0LXJlYWQiLgotCShyZW1vdGVfYXVnbWVudGVkX2xpYnJhcmllc19z dnI0X3JlYWQpOiBOZXcgZnVuY3Rpb24uCi0JKGluaXRfcmVtb3RlX29wcyk6IEluaXRpYWxpemUK LQlyZW1vdGVfb3BzLnRvX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkLgotCi1kaWZmIC0t Z2l0IGEvZ2RiL3RhcmdldC5oIGIvZ2RiL3RhcmdldC5oCi1pbmRleCBlOTM3ZDM5Li5hODU4N2U4 IDEwMDY0NAotLS0tIGEvZ2RiL3RhcmdldC5oCi0rKysgYi9nZGIvdGFyZ2V0LmgKLUBAIC05NDEs NiArOTQxLDEwIEBAIHN0cnVjdCB0YXJnZXRfb3BzCi0gICAgICAgIChpbmNsdXNpdmUpIHRvIGZ1 bmN0aW9uIEVORCAoZXhjbHVzaXZlKS4gICovCi0gICAgIHZvaWQgKCp0b19jYWxsX2hpc3Rvcnlf cmFuZ2UpIChVTE9OR0VTVCBiZWdpbiwgVUxPTkdFU1QgZW5kLCBpbnQgZmxhZ3MpOwotIAotKyAg ICAvKiBOb256ZXJvIGlmIFRBUkdFVF9PQkpFQ1RfTElCUkFSSUVTX1NWUjQgbWF5IGJlIHJlYWQg d2l0aCBhCi0rICAgICAgIG5vbi1lbXB0eSBhbm5leC4gICovCi0rICAgIGludCAoKnRvX2F1Z21l bnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkKSAodm9pZCk7Ci0rCi0gICAgIGludCB0b19tYWdpYzsK LSAgICAgLyogTmVlZCBzdWItc3RydWN0dXJlIGZvciB0YXJnZXQgbWFjaGluZSByZWxhdGVkIHJh dGhlciB0aGFuIGNvbW0gcmVsYXRlZD8KLSAgICAgICovCi1AQCAtMTgwOSw2ICsxODEzLDkgQEAg ZXh0ZXJuIGNoYXIgKnRhcmdldF9maWxlaW9fcmVhZF9zdHJhbGxvYyAoY29uc3QgY2hhciAqZmls ZW5hbWUpOwotICNkZWZpbmUgdGFyZ2V0X2Nhbl91c2VfYWdlbnQoKSBcCi0gICAoKmN1cnJlbnRf dGFyZ2V0LnRvX2Nhbl91c2VfYWdlbnQpICgpCi0gCi0rI2RlZmluZSB0YXJnZXRfYXVnbWVudGVk X2xpYnJhcmllc19zdnI0X3JlYWQoKSBcCi0rICAoKmN1cnJlbnRfdGFyZ2V0LnRvX2F1Z21lbnRl ZF9saWJyYXJpZXNfc3ZyNF9yZWFkKSAoKQotKwotIC8qIENvbW1hbmQgbG9nZ2luZyBmYWNpbGl0 eS4gICovCi0gCi0gI2RlZmluZSB0YXJnZXRfbG9nX2NvbW1hbmQocCkJCQkJCQlcCi1kaWZmIC0t Z2l0IGEvZ2RiL3RhcmdldC5jIGIvZ2RiL3RhcmdldC5jCi1pbmRleCA4NjUzZGFjLi41MTliOTdm IDEwMDY0NAotLS0tIGEvZ2RiL3RhcmdldC5jCi0rKysgYi9nZGIvdGFyZ2V0LmMKLUBAIC03MzEs NiArNzMxLDcgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQotICAgICAgIElOSEVSSVQg KHRvX3RyYWNlZnJhbWVfaW5mbywgdCk7Ci0gICAgICAgSU5IRVJJVCAodG9fdXNlX2FnZW50LCB0 KTsKLSAgICAgICBJTkhFUklUICh0b19jYW5fdXNlX2FnZW50LCB0KTsKLSsgICAgICBJTkhFUklU ICh0b19hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZCwgdCk7Ci0gICAgICAgSU5IRVJJVCAo dG9fbWFnaWMsIHQpOwotICAgICAgIElOSEVSSVQgKHRvX3N1cHBvcnRzX2V2YWx1YXRpb25fb2Zf YnJlYWtwb2ludF9jb25kaXRpb25zLCB0KTsKLSAgICAgICBJTkhFUklUICh0b19jYW5fcnVuX2Jy ZWFrcG9pbnRfY29tbWFuZHMsIHQpOwotQEAgLTk3NSw2ICs5NzYsOSBAQCB1cGRhdGVfY3VycmVu dF90YXJnZXQgKHZvaWQpCi0gICBkZV9mYXVsdCAodG9fY2FuX3VzZV9hZ2VudCwKLSAJICAgIChp bnQgKCopICh2b2lkKSkKLSAJICAgIHJldHVybl96ZXJvKTsKLSsgIGRlX2ZhdWx0ICh0b19hdWdt ZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZCwKLSsJICAgIChpbnQgKCopICh2b2lkKSkKLSsJICAg IHJldHVybl96ZXJvKTsKLSAgIGRlX2ZhdWx0ICh0b19leGVjdXRpb25fZGlyZWN0aW9uLCBkZWZh dWx0X2V4ZWN1dGlvbl9kaXJlY3Rpb24pOwotIAotICN1bmRlZiBkZV9mYXVsdAotZGlmZiAtLWdp dCBhL2dkYi9yZW1vdGUuYyBiL2dkYi9yZW1vdGUuYwotaW5kZXggNTFiZjAyNS4uZTFjZjhhNCAx MDA2NDQKLS0tLSBhL2dkYi9yZW1vdGUuYwotKysrIGIvZ2RiL3JlbW90ZS5jCi1AQCAtMzQzLDYg KzM0MywxMCBAQCBzdHJ1Y3QgcmVtb3RlX3N0YXRlCi0gICAvKiBUcnVlIGlmIHRoZSBzdHViIGNh biBjb2xsZWN0IHN0cmluZ3MgdXNpbmcgdHJhY2VueiBieXRlY29kZS4gICovCi0gICBpbnQgc3Ry aW5nX3RyYWNpbmc7Ci0gCi0rICAvKiBUcnVlIGlmIHRoZSBzdHViIHN1cHBvcnRzIHFYZmVyOmxp YnJhcmllcy1zdnI0OnJlYWQgd2l0aCBhCi0rICAgICBub24tZW1wdHkgYW5uZXguICAqLwotKyAg aW50IGF1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkOwotKwotICAgLyogTm9uemVybyBpZiB0 aGUgdXNlciBoYXMgcHJlc3NlZCBDdHJsLUMsIGJ1dCB0aGUgdGFyZ2V0IGhhc24ndAotICAgICAg cmVzcG9uZGVkIHRvIHRoYXQuICAqLwotICAgaW50IGN0cmxjX3BlbmRpbmdfcDsKLUBAIC0zOTMx LDYgKzM5MzUsMTYgQEAgcmVtb3RlX3N0cmluZ190cmFjaW5nX2ZlYXR1cmUgKGNvbnN0IHN0cnVj dCBwcm90b2NvbF9mZWF0dXJlICpmZWF0dXJlLAotICAgcnMtPnN0cmluZ190cmFjaW5nID0gKHN1 cHBvcnQgPT0gUEFDS0VUX0VOQUJMRSk7Ci0gfQotIAotK3N0YXRpYyB2b2lkCi0rcmVtb3RlX2F1 Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkX2ZlYXR1cmUKLSsgIChjb25zdCBzdHJ1Y3QgcHJv dG9jb2xfZmVhdHVyZSAqZmVhdHVyZSwKLSsgICBlbnVtIHBhY2tldF9zdXBwb3J0IHN1cHBvcnQs IGNvbnN0IGNoYXIgKnZhbHVlKQotK3sKLSsgIHN0cnVjdCByZW1vdGVfc3RhdGUgKnJzID0gZ2V0 X3JlbW90ZV9zdGF0ZSAoKTsKLSsKLSsgIHJzLT5hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVh ZCA9IChzdXBwb3J0ID09IFBBQ0tFVF9FTkFCTEUpOwotK30KLSsKLSBzdGF0aWMgc3RydWN0IHBy b3RvY29sX2ZlYXR1cmUgcmVtb3RlX3Byb3RvY29sX2ZlYXR1cmVzW10gPSB7Ci0gICB7ICJQYWNr ZXRTaXplIiwgUEFDS0VUX0RJU0FCTEUsIHJlbW90ZV9wYWNrZXRfc2l6ZSwgLTEgfSwKLSAgIHsg InFYZmVyOmF1eHY6cmVhZCIsIFBBQ0tFVF9ESVNBQkxFLCByZW1vdGVfc3VwcG9ydGVkX3BhY2tl dCwKLUBAIC0zOTQxLDYgKzM5NTUsOCBAQCBzdGF0aWMgc3RydWN0IHByb3RvY29sX2ZlYXR1cmUg cmVtb3RlX3Byb3RvY29sX2ZlYXR1cmVzW10gPSB7Ci0gICAgIFBBQ0tFVF9xWGZlcl9saWJyYXJp ZXMgfSwKLSAgIHsgInFYZmVyOmxpYnJhcmllcy1zdnI0OnJlYWQiLCBQQUNLRVRfRElTQUJMRSwg cmVtb3RlX3N1cHBvcnRlZF9wYWNrZXQsCi0gICAgIFBBQ0tFVF9xWGZlcl9saWJyYXJpZXNfc3Zy NCB9LAotKyAgeyAiYXVnbWVudGVkLWxpYnJhcmllcy1zdnI0LXJlYWQiLCBQQUNLRVRfRElTQUJM RSwKLSsgICAgcmVtb3RlX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkX2ZlYXR1cmUsIC0x IH0sCi0gICB7ICJxWGZlcjptZW1vcnktbWFwOnJlYWQiLCBQQUNLRVRfRElTQUJMRSwgcmVtb3Rl X3N1cHBvcnRlZF9wYWNrZXQsCi0gICAgIFBBQ0tFVF9xWGZlcl9tZW1vcnlfbWFwIH0sCi0gICB7 ICJxWGZlcjpzcHU6cmVhZCIsIFBBQ0tFVF9ESVNBQkxFLCByZW1vdGVfc3VwcG9ydGVkX3BhY2tl dCwKLUBAIC0xMTM0Myw2ICsxMTM1OSwxNCBAQCByZW1vdGVfcmVhZF9idHJhY2UgKHN0cnVjdCBi dHJhY2VfdGFyZ2V0X2luZm8gKnRpbmZvLAotICAgcmV0dXJuIGJ0cmFjZTsKLSB9Ci0gCi0rc3Rh dGljIGludAotK3JlbW90ZV9hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZCAodm9pZCkKLSt7 Ci0rICBzdHJ1Y3QgcmVtb3RlX3N0YXRlICpycyA9IGdldF9yZW1vdGVfc3RhdGUgKCk7Ci0rCi0r ICByZXR1cm4gcnMtPmF1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkOwotK30KLSsKLSBzdGF0 aWMgdm9pZAotIGluaXRfcmVtb3RlX29wcyAodm9pZCkKLSB7Ci1AQCAtMTE0NjUsNiArMTE0ODks OCBAQCBTcGVjaWZ5IHRoZSBzZXJpYWwgZGV2aWNlIGl0IGlzIGNvbm5lY3RlZCB0b1xuXAotICAg cmVtb3RlX29wcy50b19kaXNhYmxlX2J0cmFjZSA9IHJlbW90ZV9kaXNhYmxlX2J0cmFjZTsKLSAg IHJlbW90ZV9vcHMudG9fdGVhcmRvd25fYnRyYWNlID0gcmVtb3RlX3RlYXJkb3duX2J0cmFjZTsK LSAgIHJlbW90ZV9vcHMudG9fcmVhZF9idHJhY2UgPSByZW1vdGVfcmVhZF9idHJhY2U7Ci0rICBy ZW1vdGVfb3BzLnRvX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkID0KLSsgICAgcmVtb3Rl X2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkOwotIH0KLSAKLSAvKiBTZXQgdXAgdGhlIGV4 dGVuZGVkIHJlbW90ZSB2ZWN0b3IgYnkgbWFraW5nIGEgY29weSBvZiB0aGUgc3RhbmRhcmQKLQot LS1DYVBLZ2gzWEhwcTNyRVVWLS0KLQoKZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3RhcC1wcm9i ZS00b2Y5LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTRvZjkucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU5YzU4MQotLS0gL2Rldi9udWxsCisrKyBiL2dk Yi1kbG9wZW4tc3RhcC1wcm9iZS00b2Y5LnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK2h0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDYvbXNnMDAwMTUuaHRtbAorCisjIyMgc3Jj L2dkYi9DaGFuZ2VMb2cJMjAxMy8wNi8wNCAxMjo1MzozMwkxLjE1NjgyCisjIyMgc3JjL2dkYi9D aGFuZ2VMb2cJMjAxMy8wNi8wNCAxMzowMjoxNQkxLjE1NjgzCisjIyAtMSw1ICsxLDkgQEAKKyAy MDEzLTA2LTA0ICBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4KKyAKKysJKiBORVdT OiBVcGRhdGUuCisrCisrMjAxMy0wNi0wNCAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJlZGhhdC5j b20+CisrCisgCSogb2JqZmlsZXMuaCAoaW5oaWJpdF9zZWN0aW9uX21hcF91cGRhdGVzKTogTmV3 IGZ1bmN0aW9uCisgCWRlY2xhcmF0aW9uLgorIAkocmVzdW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXMp OiBMaWtld2lzZS4KK0luZGV4OiBnZGItNy42L2dkYi9ORVdTCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuNi5vcmlnL2dkYi9ORVdTCTIwMTMtMDYtMTAgMTQ6Mjc6MDIuMDcxMTg0MTUzICswMjAwCisr KysgZ2RiLTcuNi9nZGIvTkVXUwkyMDEzLTA2LTEwIDE0OjI4OjM0LjM5MTE0NTMzOSArMDIwMAor QEAgLTQsNiArNCwxNiBAQAorICogTmV3bHkgaW5zdGFsbGVkICRwcmVmaXgvYmluL2djb3JlIGFj dHMgYXMgYSBzaGVsbCBpbnRlcmZhY2UgZm9yIHRoZQorICAgR0RCIGNvbW1hbmQgZ2NvcmUuCisg CisrKiBOZXcgcmVtb3RlIHBhY2tldHMKKysKKytxWGZlcjpsaWJyYXJpZXMtc3ZyNDpyZWFkJ3Mg YW5uZXgKKysgIFRoZSBwcmV2aW91c2x5IHVudXNlZCBhbm5leCBvZiB0aGUgcVhmZXI6bGlicmFy aWVzLXN2cjQ6cmVhZCBwYWNrZXQKKysgIGlzIG5vdyB1c2VkIHRvIHN1cHBvcnQgcGFzc2luZyBh biBhcmd1bWVudCBsaXN0LiAgVGhlIHJlbW90ZSBzdHViCisrICByZXBvcnRzIHN1cHBvcnQgZm9y IHRoaXMgYXJndW1lbnQgbGlzdCB0byBHREIncyBxU3VwcG9ydGVkIHF1ZXJ5LgorKyAgVGhlIGRl ZmluZWQgYXJndW1lbnRzIGFyZSAic3RhcnQiIGFuZCAicHJldiIsIHVzZWQgdG8gcmVkdWNlIHdv cmsKKysgIG5lY2Vzc2FyeSBmb3IgbGlicmFyeSBsaXN0IHVwZGF0aW5nLCByZXN1bHRpbmcgaW4g c2lnbmlmaWNhbnQKKysgIHNwZWVkdXAuCisrCisgKioqIENoYW5nZXMgaW4gR0RCIDcuNgorIAor ICogVGFyZ2V0IHJlY29yZCBoYXMgYmVlbiByZW5hbWVkIHRvIHJlY29yZC1mdWxsLgoKZGlmZiAt LWdpdCBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS01b2Y3LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFw LXByb2JlLTVvZjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlYTg3M2Qu LjAwMDAwMDAKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTVvZjcucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSwxMDg5ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0 Y2hlcy8yMDEzLTA1L21zZzAwNjMyLmh0bWwKLVN1YmplY3Q6IFtSRkEgNS83XSBJbXByb3ZlZCBs aW5rZXItZGVidWdnZXIgaW50ZXJmYWNlCi0KLQotLS1xc2UrV0JINGd1ZXNpcForCi1Db250ZW50 LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkKLUNvbnRlbnQtRGlzcG9zaXRpb246 IGlubGluZQotCi1UaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIHByb2Jlcy1iYXNlZCBydW50aW1l IGxpbmtlciBpbnRlcmZhY2UuCi1JdCB3b3JrcyBhcyBmb2xsb3dzOgotCi0gLSBPbiBpbmZlcmlv ciBzdGFydHVwLCBHREIgc2VhcmNoZXMgdGhlIGR5bmFtaWMgbGlua2VyIGZvciBhCi0gICBudW1i ZXIgb2YgbmFtZWQgcHJvYmVzLgotCi0gLSBJZiBhbGwgcHJvYmVzIGFyZSBmb3VuZCwgR0RCIHNl dHMgYSBicmVha3BvaW50IG9uIGVhY2ggb25lLgotICAgT3RoZXJ3aXNlLCB0aGUgc3RhbmRhcmQg ZnVuY3Rpb24gX2RsX2RlYnVnX3N0YXRlIGlzIHVzZWQuCi0KLSAtIFdoZW4gdXNpbmcgcHJvYmVz LCBhIHBlci1wc3BhY2UgbGlzdCBpcyBtYWludGFpbmVkIG9mIGFsbAotICAgbGlicmFyaWVzIGN1 cnJlbnRseSBsb2FkZWQgYnkgdGhlIGluZmVyaW9yLiAgSXQncyB1cGRhdGVkCi0gICBhcyBuZWNl c3NhcnkgZXZlcnkgdGltZSBhIHNvbGliIGV2ZW50IHN0b3Agb2NjdXJzLgotCi0gLSBXaGVuIHVz aW5nIHByb2Jlcywgc3ZyNF9jdXJyZW50X3NvcyB3aWxsIHJldHVybiBhIGNvcHkgb2YKLSAgIHRo ZSBjYWNoZWQgbGlzdC4gIFdoZW4gbm90IHVzaW5nIHByb2JlcyB0aGUgZW50aXJlIGxpc3QKLSAg IHdpbGwgYmUgZmV0Y2hlZCBmcm9tIHRoZSBpbmZlcmlvciBhcyBiZWZvcmUuCi0KLSAtIElmIGFu eSBlcnJvciBvY2N1cnMsIEdEQiB3aWxsIHByaW50IGEgd2FybmluZyBhbmQgcmV2ZXJ0IHRvCi0g ICB0aGUgc3RhbmRhcmQgaW50ZXJmYWNlLgotCi0tLXFzZStXQkg0Z3Vlc2lwWisKLUNvbnRlbnQt VHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQotQ29udGVudC1EaXNwb3NpdGlvbjog YXR0YWNobWVudDsgZmlsZW5hbWU9InJ0bGQtcHJvYmVzLTUtbWFpbi1jaGFuZ2VzLnBhdGNoIgot Ci0yMDEzLTA1LTE2ICBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4KLQotCSogYnJl YWtwb2ludC5oIChoYW5kbGVfc29saWJfZXZlbnQpOiBNb3ZlZCBmdW5jdGlvbiBkZWNsYXJhdGlv bgotCXRvIHNvbGliLmguCi0JKiBicmVha3BvaW50LmMgKGhhbmRsZV9zb2xpYl9ldmVudCk6IE1v dmVkIGZ1bmN0aW9uIHRvIHNvbGliLmMuCi0JKGJwc3RhdF9zdG9wX3N0YXR1cyk6IFBhc3MgbmV3 IGFyZ3VtZW50IHRvIGhhbmRsZV9zb2xpYl9ldmVudC4KLQkqIHNvbGliLmggKHVwZGF0ZV9zb2xp Yl9icmVha3BvaW50cyk6IE5ldyBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KLQkoaGFuZGxlX3NvbGli X2V2ZW50KTogTW92ZWQgZnVuY3Rpb24gZGVjbGFyYXRpb24gZnJvbQotCWJyZWFrcG9pbnQuaC4K LQkqIHNvbGliLmMgKHVwZGF0ZV9zb2xpYl9icmVha3BvaW50cyk6IE5ldyBmdW5jdGlvbi4KLQko aGFuZGxlX3NvbGliX2V2ZW50KTogTW92ZWQgZnVuY3Rpb24gZnJvbSBicmVha3BvaW50LmMuCi0J VXBkYXRlZCB0byBjYWxsIHNvbGliX29wcy0+aGFuZGxlX2V2ZW50IGlmIG5vdCBOVUxMLgotCSog c29saXN0LmggKHRhcmdldF9zb19vcHMpOiBOZXcgZmllbGRzICJ1cGRhdGVfYnJlYWtwb2ludHMi IGFuZAotCSJoYW5kbGVfZXZlbnQiLgotCSogaW5mcnVuLmMgKHNldF9zdG9wX29uX3NvbGliX2V2 ZW50cyk6IE5ldyBmdW5jdGlvbi4KLQkoX2luaXRpYWxpemVfaW5mcnVuKTogVXNlIHRoZSBhYm92 ZSBmb3IgInNldAotCXN0b3Atb24tc29saWItZXZlbnRzIi4KLQkoaGFuZGxlX2luZmVyaW9yX2V2 ZW50KTogUGFzcyBuZXcgYXJndW1lbnQgdG8gaGFuZGxlX3NvbGliX2V2ZW50LgotCSogc29saWIt c3ZyNC5jIChwcm9iZS5oKTogTmV3IGluY2x1ZGUuCi0JKHN2cjRfZnJlZV9saWJyYXJ5X2xpc3Qp OiBOZXcgZm9yd2FyZCBkZWNsYXJhdGlvbi4KLQkocHJvYmVfYWN0aW9uKTogTmV3IGVudW0uCi0J KHByb2JlX2luZm8pOiBOZXcgc3RydWN0LgotCShwcm9iZV9pbmZvKTogTmV3IHN0YXRpYyB2YXJp YWJsZS4KLQkoTlVNX1BST0JFUyk6IE5ldyBkZWZpbml0aW9uLgotCShzdnI0X2luZm8pOiBOZXcg ZmllbGRzICJ1c2luZ194ZmVyIiwgInByb2Jlc190YWJsZSIgYW5kCi0JInNvbGliX2xpc3QiLgot CShmcmVlX3Byb2Jlc190YWJsZSk6IE5ldyBmdW5jdGlvbi4KLQkoZnJlZV9zb2xpYl9saXN0KTog TmV3IGZ1bmN0aW9uLgotCShzdnI0X3BzcGFjZV9kYXRhX2NsZWFudXApOiBGcmVlIHByb2JlcyB0 YWJsZSBhbmQgc29saWIgbGlzdC4KLQkoc3ZyNF9jb3B5X2xpYnJhcnlfbGlzdCk6IE5ldyBmdW5j dGlvbi4KLQkoc3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9saWJyYXJpZXMpOiBOZXcgcGFyYW1l dGVyICJhbm5leCIuCi0JKHN2cjRfcmVhZF9zb19saXN0KTogTmV3IHBhcmFtZXRlciAicHJldl9s bSIuCi0JKHN2cjRfY3VycmVudF9zb3NfZGlyZWN0KTogUmVuYW1lZCBmcm9tICJzdnI0X2N1cnJl bnRfc29zIi4KLQkoc3ZyNF9jdXJyZW50X3Nvcyk6IE5ldyBmdW5jdGlvbi4KLQkocHJvYmVfYW5k X2FjdGlvbik6IE5ldyBzdHJ1Y3QuCi0JKGhhc2hfcHJvYmVfYW5kX2FjdGlvbik6IE5ldyBmdW5j dGlvbi4KLQkoZXF1YWxfcHJvYmVfYW5kX2FjdGlvbik6IExpa2V3aXNlLgotCShyZWdpc3Rlcl9z b2xpYl9ldmVudF9wcm9iZSk6IExpa2V3aXNlLgotCShzb2xpYl9ldmVudF9wcm9iZV9hdCk6IExp a2V3aXNlLgotCShzb2xpYl9ldmVudF9wcm9iZV9hY3Rpb24pOiBMaWtld2lzZS4KLQkoc29saXN0 X3VwZGF0ZV9mdWxsKTogTGlrZXdpc2UuCi0JKHNvbGlzdF91cGRhdGVfaW5jcmVtZW50YWwpOiBM aWtld2lzZS4KLQkoZGlzYWJsZV9wcm9iZXNfaW50ZXJmYWNlX2NsZWFudXApOiBMaWtld2lzZS4K LQkoc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQpOiBMaWtld2lzZS4KLQkoc3ZyNF91cGRhdGVfc29s aWJfZXZlbnRfYnJlYWtwb2ludCk6IExpa2V3aXNlLgotCShzdnI0X3VwZGF0ZV9zb2xpYl9ldmVu dF9icmVha3BvaW50cyk6IExpa2V3aXNlLgotCShzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9icmVh a3BvaW50cyk6IExpa2V3aXNlLgotCShlbmFibGVfYnJlYWspOiBGcmVlIHByb2JlcyB0YWJsZSBi ZWZvcmUgY3JlYXRpbmcgYnJlYWtwb2ludHMuCi0JVXNlIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50 X2JyZWFrcG9pbnRzIHRvIGNyZWF0ZSBicmVha3BvaW50cy4KLQkoc3ZyNF9zb2xpYl9jcmVhdGVf aW5mZXJpb3JfaG9vayk6IEZyZWUgdGhlIHNvbGliIGxpc3QuCi0JKF9pbml0aWFsaXplX3N2cjRf c29saWIpOiBJbml0aWFsaXNlCi0Jc3ZyNF9zb19vcHMuaGFuZGxlX3NvbGliX2V2ZW50IGFuZCBz dnI0X3NvX29wcy51cGRhdGVfYnJlYWtwb2ludHMuCi0KLUluZGV4OiBnZGItNy42L2dkYi9icmVh a3BvaW50LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuaAky MDEzLTA1LTE5IDE2OjE2OjIwLjU1MTA4NzI3MCArMDIwMAotKysrIGdkYi03LjYvZ2RiL2JyZWFr cG9pbnQuaAkyMDEzLTA1LTE5IDE2OjE2OjIwLjgzNzA4Njk0OCArMDIwMAotQEAgLTE1NTIsOCAr MTU1Miw2IEBAIGV4dGVybiBpbnQgdXNlcl9icmVha3BvaW50X3AgKHN0cnVjdCBicmUKLSAvKiBB dHRlbXB0IHRvIGRldGVybWluZSBhcmNoaXRlY3R1cmUgb2YgbG9jYXRpb24gaWRlbnRpZmllZCBi eSBTQUwuICAqLwotIGV4dGVybiBzdHJ1Y3QgZ2RiYXJjaCAqZ2V0X3NhbF9hcmNoIChzdHJ1Y3Qg c3ltdGFiX2FuZF9saW5lIHNhbCk7Ci0gCi0tZXh0ZXJuIHZvaWQgaGFuZGxlX3NvbGliX2V2ZW50 ICh2b2lkKTsKLS0KLSBleHRlcm4gdm9pZCBicmVha3BvaW50X2ZyZWVfb2JqZmlsZSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUpOwotIAotIGV4dGVybiB2b2lkIGJyZWFrcG9pbnRzX3JlbG9jYXRl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLUluZGV4OiBnZGItNy42L2dkYi9zb2xpYi5oCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9zb2xpYi5oCTIwMTMtMDEtMDEgMDc6MzI6 NTEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNi9nZGIvc29saWIuaAkyMDEzLTA1LTE5IDE2 OjE2OjIwLjgzODA4Njk0NiArMDIwMAotQEAgLTkwLDQgKzkwLDEyIEBAIGV4dGVybiBDT1JFX0FE RFIgZ2RiX2JmZF9sb29rdXBfc3ltYm9sX2YKLSAJCQkJCQkJCSAgICAgIHZvaWQgKiksCi0gCQkJ CQkJICAgIHZvaWQgKmRhdGEpOwotIAotKy8qIEVuYWJsZSBvciBkaXNhYmxlIG9wdGlvbmFsIHNv bGliIGV2ZW50IGJyZWFrcG9pbnRzIGFzIGFwcHJvcHJpYXRlLiAgKi8KLSsKLStleHRlcm4gdm9p ZCB1cGRhdGVfc29saWJfYnJlYWtwb2ludHMgKHZvaWQpOwotKwotKy8qIEhhbmRsZSBhbiBzb2xp YiBldmVudCBieSBjYWxsaW5nIHNvbGliX2FkZC4gICovCi0rCi0rZXh0ZXJuIHZvaWQgaGFuZGxl X3NvbGliX2V2ZW50ICh2b2lkKTsKLSsKLSAjZW5kaWYgLyogU09MSUJfSCAqLwotSW5kZXg6IGdk Yi03LjYvZ2RiL3NvbGliLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3NvbGli LmMJMjAxMy0wNS0xOSAxNjoxNjoyMC40NjgwODczNjMgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9z b2xpYi5jCTIwMTMtMDUtMTkgMTY6MTY6MjAuODM4MDg2OTQ2ICswMjAwCi1AQCAtMTIyMSw2ICsx MjIxLDM4IEBAIG5vX3NoYXJlZF9saWJyYXJpZXMgKGNoYXIgKmlnbm9yZWQsIGludAotICAgb2Jq ZmlsZV9wdXJnZV9zb2xpYnMgKCk7Ci0gfQotIAotKy8qIFNlZSBzb2xpYi5oLiAgKi8KLSsKLSt2 b2lkCi0rdXBkYXRlX3NvbGliX2JyZWFrcG9pbnRzICh2b2lkKQotK3sKLSsgIHN0cnVjdCB0YXJn ZXRfc29fb3BzICpvcHMgPSBzb2xpYl9vcHMgKHRhcmdldF9nZGJhcmNoICgpKTsKLSsKLSsgIGlm IChvcHMtPnVwZGF0ZV9icmVha3BvaW50cyAhPSBOVUxMKQotKyAgICBvcHMtPnVwZGF0ZV9icmVh a3BvaW50cyAoKTsKLSt9Ci0rCi0rLyogU2VlIHNvbGliLmguICAqLwotKwotK3ZvaWQKLStoYW5k bGVfc29saWJfZXZlbnQgKHZvaWQpCi0rewotKyAgc3RydWN0IHRhcmdldF9zb19vcHMgKm9wcyA9 IHNvbGliX29wcyAodGFyZ2V0X2dkYmFyY2ggKCkpOwotKwotKyAgaWYgKG9wcy0+aGFuZGxlX2V2 ZW50ICE9IE5VTEwpCi0rICAgIG9wcy0+aGFuZGxlX2V2ZW50ICgpOwotKwotKyAgY2xlYXJfcHJv Z3JhbV9zcGFjZV9zb2xpYl9jYWNoZSAoY3VycmVudF9pbmZlcmlvciAoKS0+cHNwYWNlKTsKLSsK LSsgIC8qIENoZWNrIGZvciBhbnkgbmV3bHkgYWRkZWQgc2hhcmVkIGxpYnJhcmllcyBpZiB3ZSdy ZSBzdXBwb3NlZCB0bwotKyAgICAgYmUgYWRkaW5nIHRoZW0gYXV0b21hdGljYWxseS4gIFN3aXRj aCB0ZXJtaW5hbCBmb3IgYW55IG1lc3NhZ2VzCi0rICAgICBwcm9kdWNlZCBieSBicmVha3BvaW50 X3JlX3NldC4gICovCi0rICB0YXJnZXRfdGVybWluYWxfb3Vyc19mb3Jfb3V0cHV0ICgpOwotKyAg c29saWJfYWRkIChOVUxMLCAwLCAmY3VycmVudF90YXJnZXQsIGF1dG9fc29saWJfYWRkKTsKLSsg IHRhcmdldF90ZXJtaW5hbF9pbmZlcmlvciAoKTsKLSt9Ci0rCi0rCi0gLyogUmVsb2FkIHNoYXJl ZCBsaWJyYXJpZXMsIGJ1dCBhdm9pZCByZWxvYWRpbmcgdGhlIHNhbWUgc3ltYm9sIGZpbGUKLSAg ICB3ZSBhbHJlYWR5IGhhdmUgbG9hZGVkLiAgKi8KLSAKLUluZGV4OiBnZGItNy42L2dkYi9zb2xp c3QuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvc29saXN0LmgJMjAxMy0wMS0w MSAwNzozMjo1MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42L2dkYi9zb2xpc3QuaAkyMDEz LTA1LTE5IDE2OjE2OjIwLjgzODA4Njk0NiArMDIwMAotQEAgLTE0OCw2ICsxNDgsMTkgQEAgc3Ry dWN0IHRhcmdldF9zb19vcHMKLSAgICAgICAgY29yZSBmaWxlIChpbiBwYXJ0aWN1bGFyLCBmb3Ig cmVhZG9ubHkgc2VjdGlvbnMpLiAgKi8KLSAgICAgaW50ICgqa2VlcF9kYXRhX2luX2NvcmUpIChD T1JFX0FERFIgdmFkZHIsCi0gCQkJICAgICAgdW5zaWduZWQgbG9uZyBzaXplKTsKLSsKLSsgICAg LyogRW5hYmxlIG9yIGRpc2FibGUgb3B0aW9uYWwgc29saWIgZXZlbnQgYnJlYWtwb2ludHMgYXMK LSsgICAgICAgYXBwcm9wcmlhdGUuICBUaGlzIHNob3VsZCBiZSBjYWxsZWQgd2hlbmV2ZXIKLSsg ICAgICAgc3RvcF9vbl9zb2xpYl9ldmVudHMgaXMgY2hhbmdlZC4gIFRoaXMgcG9pbnRlciBjYW4g YmUKLSsgICAgICAgTlVMTCwgaW4gd2hpY2ggY2FzZSBubyBlbmFibGluZyBvciBkaXNhYmxpbmcg aXMgbmVjZXNzYXJ5Ci0rICAgICAgIGZvciB0aGlzIHRhcmdldC4gICovCi0rICAgIHZvaWQgKCp1 cGRhdGVfYnJlYWtwb2ludHMpICh2b2lkKTsKLSsKLSsgICAgLyogVGFyZ2V0LXNwZWNpZmljIHBy b2Nlc3Npbmcgb2Ygc29saWIgZXZlbnRzIHRoYXQgd2lsbCBiZQotKyAgICAgICBwZXJmb3JtZWQg YmVmb3JlIHNvbGliX2FkZCBpcyBjYWxsZWQuICBUaGlzIHBvaW50ZXIgY2FuIGJlCi0rICAgICAg IE5VTEwsIGluIHdoaWNoIGNhc2Ugbm8gc3BlY2lmaWMgcHJlcHJvY2Vzc2luZyBpcyBuZWNlc3Nh cnkKLSsgICAgICAgZm9yIHRoaXMgdGFyZ2V0LiAgKi8KLSsgICAgdm9pZCAoKmhhbmRsZV9ldmVu dCkgKHZvaWQpOwotICAgfTsKLSAKLSAvKiBGcmVlIHRoZSBtZW1vcnkgYXNzb2NpYXRlZCB3aXRo IGEgKHNvX2xpc3QgKikuICAqLwotSW5kZXg6IGdkYi03LjYvZ2RiL2luZnJ1bi5jCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9pbmZydW4uYwkyMDEzLTA1LTE5IDE2OjE2OjIwLjUw ODA4NzMxOCArMDIwMAotKysrIGdkYi03LjYvZ2RiL2luZnJ1bi5jCTIwMTMtMDUtMTkgMTY6MTY6 MjAuODQwMDg2OTQ0ICswMjAwCi1AQCAtMzcwLDYgKzM3MCwxNiBAQCBzdGF0aWMgc3RydWN0IHN5 bWJvbCAqc3RlcF9zdGFydF9mdW5jdGlvCi0gLyogTm9uemVybyBpZiB3ZSB3YW50IHRvIGdpdmUg Y29udHJvbCB0byB0aGUgdXNlciB3aGVuIHdlJ3JlIG5vdGlmaWVkCi0gICAgb2Ygc2hhcmVkIGxp YnJhcnkgZXZlbnRzIGJ5IHRoZSBkeW5hbWljIGxpbmtlci4gICovCi0gaW50IHN0b3Bfb25fc29s aWJfZXZlbnRzOwotKwotKy8qIEVuYWJsZSBvciBkaXNhYmxlIG9wdGlvbmFsIHNoYXJlZCBsaWJy YXJ5IGV2ZW50IGJyZWFrcG9pbnRzCi0rICAgYXMgYXBwcm9wcmlhdGUgd2hlbiB0aGUgYWJvdmUg ZmxhZyBpcyBjaGFuZ2VkLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3NldF9zdG9wX29uX3NvbGli X2V2ZW50cyAoY2hhciAqYXJncywgaW50IGZyb21fdHR5LCBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqYykKLSt7Ci0rICB1cGRhdGVfc29saWJfYnJlYWtwb2ludHMgKCk7Ci0rfQotKwotIHN0YXRp YyB2b2lkCi0gc2hvd19zdG9wX29uX3NvbGliX2V2ZW50cyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUs IGludCBmcm9tX3R0eSwKLSAJCQkgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3Qg Y2hhciAqdmFsdWUpCi1AQCAtNzMzNSw3ICs3MzQ1LDcgQEAgU2hvdyBzdG9wcGluZyBmb3Igc2hh cmVkIGxpYnJhcnkgZXZlbnRzLgotIElmIG5vbnplcm8sIGdkYiB3aWxsIGdpdmUgY29udHJvbCB0 byB0aGUgdXNlciB3aGVuIHRoZSBkeW5hbWljIGxpbmtlclxuXAotIG5vdGlmaWVzIGdkYiBvZiBz aGFyZWQgbGlicmFyeSBldmVudHMuICBUaGUgbW9zdCBjb21tb24gZXZlbnQgb2YgaW50ZXJlc3Rc blwKLSB0byB0aGUgdXNlciB3b3VsZCBiZSBsb2FkaW5nL3VubG9hZGluZyBvZiBhIG5ldyBsaWJy YXJ5LiIpLAotLQkJCSAgICBOVUxMLAotKwkJCSAgICBzZXRfc3RvcF9vbl9zb2xpYl9ldmVudHMs Ci0gCQkJICAgIHNob3dfc3RvcF9vbl9zb2xpYl9ldmVudHMsCi0gCQkJICAgICZzZXRsaXN0LCAm c2hvd2xpc3QpOwotIAotSW5kZXg6IGdkYi03LjYvZ2RiL3NvbGliLXN2cjQuYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjYub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTMtMDUtMTkgMTY6MTY6MjAu NDY4MDg3MzYzICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvc29saWItc3ZyNC5jCTIwMTMtMDUtMTkg MTY6MjE6NDAuMjg1ODE2MDg0ICswMjAwCi1AQCAtNDcsOSArNDcsMTIgQEAKLSAjaW5jbHVkZSAi ZXhjZXB0aW9ucy5oIgotICNpbmNsdWRlICJnZGJfYmZkLmgiCi0gCi0rI2luY2x1ZGUgInByb2Jl LmgiCi0rCi0gc3RhdGljIHN0cnVjdCBsaW5rX21hcF9vZmZzZXRzICpzdnI0X2ZldGNoX2xpbmtf bWFwX29mZnNldHMgKHZvaWQpOwotIHN0YXRpYyBpbnQgc3ZyNF9oYXZlX2xpbmtfbWFwX29mZnNl dHMgKHZvaWQpOwotIHN0YXRpYyB2b2lkIHN2cjRfcmVsb2NhdGVfbWFpbl9leGVjdXRhYmxlICh2 b2lkKTsKLStzdGF0aWMgdm9pZCBzdnI0X2ZyZWVfbGlicmFyeV9saXN0ICh2b2lkICpwX2xpc3Qp OwotIAotIC8qIExpbmsgbWFwIGluZm8gdG8gaW5jbHVkZSBpbiBhbiBhbGxvY2F0ZWQgc29fbGlz dCBlbnRyeS4gICovCi0gCi1AQCAtMTA2LDYgKzEwOSw1NSBAQCBzdGF0aWMgY29uc3QgIGNoYXIg KiBjb25zdCBtYWluX25hbWVfbGlzCi0gICBOVUxMCi0gfTsKLSAKLSsvKiBXaGF0IHRvIGRvIHdo ZW4gYSBwcm9iZSBzdG9wIG9jY3Vycy4gICovCi0rCi0rZW51bSBwcm9iZV9hY3Rpb24KLSsgIHsK LSsgICAgLyogU29tZXRoaW5nIHdlbnQgc2VyaW91c2x5IHdyb25nLiAgU3RvcCB1c2luZyBwcm9i ZXMgYW5kCi0rICAgICAgIHJldmVydCB0byB1c2luZyB0aGUgb2xkZXIgaW50ZXJmYWNlLiAgKi8K LSsgICAgUFJPQkVTX0lOVEVSRkFDRV9GQUlMRUQsCi0rCi0rICAgIC8qIE5vIGFjdGlvbiBpcyBy ZXF1aXJlZC4gIFRoZSBzaGFyZWQgb2JqZWN0IGxpc3QgaXMgc3RpbGwKLSsgICAgICAgdmFsaWQu ICAqLwotKyAgICBET19OT1RISU5HLAotKwotKyAgICAvKiBUaGUgc2hhcmVkIG9iamVjdCBsaXN0 IHNob3VsZCBiZSByZWxvYWRlZCBlbnRpcmVseS4gICovCi0rICAgIEZVTExfUkVMT0FELAotKwot KyAgICAvKiBBdHRlbXB0IHRvIGluY3JlbWVudGFsbHkgdXBkYXRlIHRoZSBzaGFyZWQgb2JqZWN0 IGxpc3QuIElmCi0rICAgICAgIHRoZSB1cGRhdGUgZmFpbHMgb3IgaXMgbm90IHBvc3NpYmxlLCBm YWxsIGJhY2sgdG8gcmVsb2FkaW5nCi0rICAgICAgIHRoZSBsaXN0IGluIGZ1bGwuICAqLwotKyAg ICBVUERBVEVfT1JfUkVMT0FELAotKyAgfTsKLSsKLSsvKiBBIHByb2JlJ3MgbmFtZSBhbmQgaXRz IGFzc29jaWF0ZWQgYWN0aW9uLiAgKi8KLSsKLStzdHJ1Y3QgcHJvYmVfaW5mbwotK3sKLSsgIC8q IFRoZSBuYW1lIG9mIHRoZSBwcm9iZS4gICovCi0rICBjb25zdCBjaGFyICpuYW1lOwotKwotKyAg LyogV2hhdCB0byBkbyB3aGVuIGEgcHJvYmUgc3RvcCBvY2N1cnMuICAqLwotKyAgZW51bSBwcm9i ZV9hY3Rpb24gYWN0aW9uOwotK307Ci0rCi0rLyogQSBsaXN0IG9mIG5hbWVkIHByb2JlcyBhbmQg dGhlaXIgYXNzb2NpYXRlZCBhY3Rpb25zLiAgSWYgYWxsCi0rICAgcHJvYmVzIGFyZSBwcmVzZW50 IGluIHRoZSBkeW5hbWljIGxpbmtlciB0aGVuIHRoZSBwcm9iZXMtYmFzZWQKLSsgICBpbnRlcmZh Y2Ugd2lsbCBiZSB1c2VkLiAgKi8KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IHByb2JlX2luZm8g cHJvYmVfaW5mb1tdID0KLSt7Ci0rICB7ICJpbml0X3N0YXJ0IiwgRE9fTk9USElORyB9LAotKyAg eyAiaW5pdF9jb21wbGV0ZSIsIEZVTExfUkVMT0FEIH0sCi0rICB7ICJtYXBfc3RhcnQiLCBET19O T1RISU5HIH0sCi0rICB7ICJtYXBfZmFpbGVkIiwgRE9fTk9USElORyB9LAotKyAgeyAicmVsb2Nf Y29tcGxldGUiLCBVUERBVEVfT1JfUkVMT0FEIH0sCi0rICB7ICJ1bm1hcF9zdGFydCIsIERPX05P VEhJTkcgfSwKLSsgIHsgInVubWFwX2NvbXBsZXRlIiwgRlVMTF9SRUxPQUQgfSwKLSt9OwotKwot KyNkZWZpbmUgTlVNX1BST0JFUyBBUlJBWV9TSVpFIChwcm9iZV9pbmZvKQotKwotIC8qIFJldHVy biBub24temVybyBpZiBHREJfU09fTkFNRSBhbmQgSU5GRVJJT1JfU09fTkFNRSByZXByZXNlbnQK LSAgICB0aGUgc2FtZSBzaGFyZWQgbGlicmFyeS4gICovCi0gCi1AQCAtMzEzLDE3ICszNjUsNTYg QEAgc3RydWN0IHN2cjRfaW5mbwotICAgQ09SRV9BRERSIGludGVycF90ZXh0X3NlY3RfaGlnaDsK LSAgIENPUkVfQUREUiBpbnRlcnBfcGx0X3NlY3RfbG93OwotICAgQ09SRV9BRERSIGludGVycF9w bHRfc2VjdF9oaWdoOwotKwotKyAgLyogTm9uemVybyBpZiB0aGUgbGlzdCBvZiBvYmplY3RzIHdh cyBsYXN0IG9idGFpbmVkIGZyb20gdGhlIHRhcmdldAotKyAgICAgdmlhIHFYZmVyOmxpYnJhcmll cy1zdnI0OnJlYWQuICAqLwotKyAgaW50IHVzaW5nX3hmZXI7Ci0rCi0rICAvKiBUYWJsZSBtYXBw aW5nIGJyZWFrcG9pbnQgYWRkcmVzc2VzIHRvIHByb2JlcyBhbmQgYWN0aW9ucywgdXNlZAotKyAg ICAgYnkgdGhlIHByb2Jlcy1iYXNlZCBpbnRlcmZhY2UuICAqLwotKyAgaHRhYl90IHByb2Jlc190 YWJsZTsKLSsKLSsgIC8qIExpc3Qgb2Ygb2JqZWN0cyBsb2FkZWQgaW50byB0aGUgaW5mZXJpb3Is IHVzZWQgYnkgdGhlIHByb2Jlcy0KLSsgICAgIGJhc2VkIGludGVyZmFjZS4gICovCi0rICBzdHJ1 Y3Qgc29fbGlzdCAqc29saWJfbGlzdDsKLSB9OwotIAotIC8qIFBlci1wcm9ncmFtLXNwYWNlIGRh dGEga2V5LiAgKi8KLSBzdGF0aWMgY29uc3Qgc3RydWN0IHByb2dyYW1fc3BhY2VfZGF0YSAqc29s aWJfc3ZyNF9wc3BhY2VfZGF0YTsKLSAKLSsvKiBGcmVlIHRoZSBwcm9iZXMgdGFibGUuICAqLwot KwotK3N0YXRpYyB2b2lkCi0rZnJlZV9wcm9iZXNfdGFibGUgKHN0cnVjdCBzdnI0X2luZm8gKmlu Zm8pCi0rewotKyAgaWYgKGluZm8tPnByb2Jlc190YWJsZSA9PSBOVUxMKQotKyAgICByZXR1cm47 Ci0rCi0rICBodGFiX2RlbGV0ZSAoaW5mby0+cHJvYmVzX3RhYmxlKTsKLSsgIGluZm8tPnByb2Jl c190YWJsZSA9IE5VTEw7Ci0rfQotKwotKy8qIEZyZWUgdGhlIHNvbGliIGxpc3QuICAqLwotKwot K3N0YXRpYyB2b2lkCi0rZnJlZV9zb2xpYl9saXN0IChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvKQot K3sKLSsgIHN2cjRfZnJlZV9saWJyYXJ5X2xpc3QgKCZpbmZvLT5zb2xpYl9saXN0KTsKLSsgIGlu Zm8tPnNvbGliX2xpc3QgPSBOVUxMOwotK30KLSsKLSBzdGF0aWMgdm9pZAotIHN2cjRfcHNwYWNl X2RhdGFfY2xlYW51cCAoc3RydWN0IHByb2dyYW1fc3BhY2UgKnBzcGFjZSwgdm9pZCAqYXJnKQot IHsKLSAgIHN0cnVjdCBzdnI0X2luZm8gKmluZm87Ci0gCi0gICBpbmZvID0gcHJvZ3JhbV9zcGFj ZV9kYXRhIChwc3BhY2UsIHNvbGliX3N2cjRfcHNwYWNlX2RhdGEpOwotKyAgaWYgKGluZm8gPT0g TlVMTCkKLSsgICAgcmV0dXJuOwotKwotKyAgZnJlZV9wcm9iZXNfdGFibGUgKGluZm8pOwotKyAg ZnJlZV9zb2xpYl9saXN0IChpbmZvKTsKLSsKLSAgIHhmcmVlIChpbmZvKTsKLSB9Ci0gCi1AQCAt OTgyLDYgKzEwNzMsMzYgQEAgc3ZyNF9mcmVlX2xpYnJhcnlfbGlzdCAodm9pZCAqcF9saXN0KQot ICAgICB9Ci0gfQotIAotKy8qIENvcHkgbGlicmFyeSBsaXN0LiAgKi8KLSsKLStzdGF0aWMgc3Ry dWN0IHNvX2xpc3QgKgotK3N2cjRfY29weV9saWJyYXJ5X2xpc3QgKHN0cnVjdCBzb19saXN0ICpz cmMpCi0rewotKyAgc3RydWN0IGxpbmtfbWFwX29mZnNldHMgKmxtbyA9IHN2cjRfZmV0Y2hfbGlu a19tYXBfb2Zmc2V0cyAoKTsKLSsgIHN0cnVjdCBzb19saXN0ICpkc3QgPSBOVUxMOwotKyAgc3Ry dWN0IHNvX2xpc3QgKipsaW5rID0gJmRzdDsKLSsKLSsgIHdoaWxlIChzcmMgIT0gTlVMTCkKLSsg ICAgewotKyAgICAgIHN0cnVjdCBzb19saXN0ICpuZXc7Ci0rCi0rICAgICAgbmV3ID0gWFpBTExP QyAoc3RydWN0IHNvX2xpc3QpOwotKwotKyAgICAgIG1lbWNweSAobmV3LCBzcmMsIHNpemVvZiAo c3RydWN0IHNvX2xpc3QpKTsKLSsKLSsgICAgICBuZXctPmxtX2luZm8gPSB4bWFsbG9jIChsbW8t PmxpbmtfbWFwX3NpemUpOwotKyAgICAgIG1lbWNweSAobmV3LT5sbV9pbmZvLCBzcmMtPmxtX2lu Zm8sIGxtby0+bGlua19tYXBfc2l6ZSk7Ci0rCi0rICAgICAgbmV3LT5uZXh0ID0gTlVMTDsKLSsg ICAgICAqbGluayA9IG5ldzsKLSsgICAgICBsaW5rID0gJm5ldy0+bmV4dDsKLSsKLSsgICAgICBz cmMgPSBzcmMtPm5leHQ7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBkc3Q7Ci0rfQotKwotICNpZmRl ZiBIQVZFX0xJQkVYUEFUCi0gCi0gI2luY2x1ZGUgInhtbC1zdXBwb3J0LmgiCi1AQCAtMTA5Nywx NCArMTIxOCwxOSBAQCBzdnI0X3BhcnNlX2xpYnJhcmllcyAoY29uc3QgY2hhciAqZG9jdW1lCi0g ICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogQXR0ZW1wdCB0byBnZXQgc29fbGlzdCBmcm9tIHRhcmdl dCB2aWEgcVhmZXI6bGlicmFyaWVzOnJlYWQgcGFja2V0LgotKy8qIEF0dGVtcHQgdG8gZ2V0IHNv X2xpc3QgZnJvbSB0YXJnZXQgdmlhIHFYZmVyOmxpYnJhcmllcy1zdnI0OnJlYWQgcGFja2V0Lgot IAotICAgIFJldHVybiAwIGlmIHBhY2tldCBub3Qgc3VwcG9ydGVkLCAqU09fTElTVF9SRVRVUk4g aXMgbm90IG1vZGlmaWVkIGluIHN1Y2gKLSAgICBjYXNlLiAgUmV0dXJuIDEgaWYgKlNPX0xJU1Rf UkVUVVJOIGNvbnRhaW5zIHRoZSBsaWJyYXJ5IGxpc3QsIGl0IG1heSBiZQotLSAgIGVtcHR5LCBj YWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgYWxsIGl0cyBlbnRyaWVzLiAgKi8KLSsg ICBlbXB0eSwgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIGFsbCBpdHMgZW50cmll cy4KLSsKLSsgICBOb3RlIHRoYXQgQU5ORVggbXVzdCBiZSBOVUxMIGlmIHRoZSByZW1vdGUgZG9l cyBub3QgZXhwbGljaXRseSBhbGxvdwotKyAgIHFYZmVyOmxpYnJhcmllcy1zdnI0OnJlYWQgcGFj a2V0cyB3aXRoIG5vbi1lbXB0eSBhbm5leGVzLiAgU3VwcG9ydCBmb3IKLSsgICB0aGlzIGNhbiBi ZSBjaGVja2VkIHVzaW5nIHRhcmdldF9hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZCAoKS4g ICovCi0gCi0gc3RhdGljIGludAotLXN2cjRfY3VycmVudF9zb3NfdmlhX3hmZXJfbGlicmFyaWVz IChzdHJ1Y3Qgc3ZyNF9saWJyYXJ5X2xpc3QgKmxpc3QpCi0rc3ZyNF9jdXJyZW50X3Nvc192aWFf eGZlcl9saWJyYXJpZXMgKHN0cnVjdCBzdnI0X2xpYnJhcnlfbGlzdCAqbGlzdCwKLSsJCQkJICAg ICBjb25zdCBjaGFyICphbm5leCkKLSB7Ci0gICBjaGFyICpzdnI0X2xpYnJhcnlfZG9jdW1lbnQ7 Ci0gICBpbnQgcmVzdWx0OwotQEAgLTExMTMsNyArMTIzOSw3IEBAIHN2cjRfY3VycmVudF9zb3Nf dmlhX3hmZXJfbGlicmFyaWVzIChzdHIKLSAgIC8qIEZldGNoIHRoZSBsaXN0IG9mIHNoYXJlZCBs aWJyYXJpZXMuICAqLwotICAgc3ZyNF9saWJyYXJ5X2RvY3VtZW50ID0gdGFyZ2V0X3JlYWRfc3Ry YWxsb2MgKCZjdXJyZW50X3RhcmdldCwKLSAJCQkJCQlUQVJHRVRfT0JKRUNUX0xJQlJBUklFU19T VlI0LAotLQkJCQkJCU5VTEwpOwotKwkJCQkJCWFubmV4KTsKLSAgIGlmIChzdnI0X2xpYnJhcnlf ZG9jdW1lbnQgPT0gTlVMTCkKLSAgICAgcmV0dXJuIDA7Ci0gCi1AQCAtMTEyNyw3ICsxMjUzLDgg QEAgc3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9saWJyYXJpZXMgKHN0cgotICNlbHNlCi0gCi0g c3RhdGljIGludAotLXN2cjRfY3VycmVudF9zb3NfdmlhX3hmZXJfbGlicmFyaWVzIChzdHJ1Y3Qg c3ZyNF9saWJyYXJ5X2xpc3QgKmxpc3QpCi0rc3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9saWJy YXJpZXMgKHN0cnVjdCBzdnI0X2xpYnJhcnlfbGlzdCAqbGlzdCwKLSsJCQkJICAgICBjb25zdCBj aGFyICphbm5leCkKLSB7Ci0gICByZXR1cm4gMDsKLSB9Ci1AQCAtMTE2MSwxNSArMTI4OCwxNyBA QCBzdnI0X2RlZmF1bHRfc29zICh2b2lkKQotICAgcmV0dXJuIG5ldzsKLSB9Ci0gCi0tLyogUmVh ZCB0aGUgd2hvbGUgaW5mZXJpb3IgbGlicmFyaWVzIGNoYWluIHN0YXJ0aW5nIGF0IGFkZHJlc3Mg TE0uICBBZGQgdGhlCi0tICAgZW50cmllcyB0byB0aGUgdGFpbCByZWZlcmVuY2VkIGJ5IExJTktf UFRSX1BUUi4gIElnbm9yZSB0aGUgZmlyc3QgZW50cnkgaWYKLS0gICBJR05PUkVfRklSU1QgYW5k IHNldCBnbG9iYWwgTUFJTl9MTV9BRERSIGFjY29yZGluZyB0byBpdC4gICovCi0rLyogUmVhZCB0 aGUgd2hvbGUgaW5mZXJpb3IgbGlicmFyaWVzIGNoYWluIHN0YXJ0aW5nIGF0IGFkZHJlc3MgTE0u Ci0rICAgRXhwZWN0IHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgY2hhaW4ncyBwcmV2aW91cyBlbnRy eSB0byBiZSBQUkVWX0xNLgotKyAgIEFkZCB0aGUgZW50cmllcyB0byB0aGUgdGFpbCByZWZlcmVu Y2VkIGJ5IExJTktfUFRSX1BUUi4gIElnbm9yZSB0aGUKLSsgICBmaXJzdCBlbnRyeSBpZiBJR05P UkVfRklSU1QgYW5kIHNldCBnbG9iYWwgTUFJTl9MTV9BRERSIGFjY29yZGluZwotKyAgIHRvIGl0 LiAgUmV0dXJucyBub256ZXJvIHVwb24gc3VjY2Vzcy4gICovCi0gCi0tc3RhdGljIHZvaWQKLS1z dnI0X3JlYWRfc29fbGlzdCAoQ09SRV9BRERSIGxtLCBzdHJ1Y3Qgc29fbGlzdCAqKipsaW5rX3B0 cl9wdHIsCi0tCQkgICBpbnQgaWdub3JlX2ZpcnN0KQotK3N0YXRpYyBpbnQKLStzdnI0X3JlYWRf c29fbGlzdCAoQ09SRV9BRERSIGxtLCBDT1JFX0FERFIgcHJldl9sbSwKLSsJCSAgIHN0cnVjdCBz b19saXN0ICoqKmxpbmtfcHRyX3B0ciwgaW50IGlnbm9yZV9maXJzdCkKLSB7Ci0tICBDT1JFX0FE RFIgcHJldl9sbSA9IDAsIG5leHRfbG07Ci0rICBDT1JFX0FERFIgbmV4dF9sbTsKLSAKLSAgIGZv ciAoOyBsbSAhPSAwOyBwcmV2X2xtID0gbG0sIGxtID0gbmV4dF9sbSkKLSAgICAgewotQEAgLTEx ODUsNyArMTMxNCw3IEBAIHN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0sIHN0cnVjdAot ICAgICAgIGlmIChuZXctPmxtX2luZm8gPT0gTlVMTCkKLSAJewotIAkgIGRvX2NsZWFudXBzIChv bGRfY2hhaW4pOwotLQkgIGJyZWFrOwotKwkgIHJldHVybiAwOwotIAl9Ci0gCi0gICAgICAgbmV4 dF9sbSA9IG5ldy0+bG1faW5mby0+bF9uZXh0OwotQEAgLTExOTYsNyArMTMyNSw3IEBAIHN2cjRf cmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0sIHN0cnVjdAotIAkJICAgcGFkZHJlc3MgKHRhcmdl dF9nZGJhcmNoICgpLCBwcmV2X2xtKSwKLSAJCSAgIHBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCAo KSwgbmV3LT5sbV9pbmZvLT5sX3ByZXYpKTsKLSAJICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsK LS0JICBicmVhazsKLSsJICByZXR1cm4gMDsKLSAJfQotIAotICAgICAgIC8qIEZvciBTVlI0IHZl cnNpb25zLCB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIGxpbmsgbWFwIGlzIGZvciB0aGUKLUBAIC0x MjkxLDE3ICsxNDIwLDE5IEBAIHN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0sIHN0cnVj dAotICAgICAgICoqbGlua19wdHJfcHRyID0gbmV3OwotICAgICAgICpsaW5rX3B0cl9wdHIgPSAm bmV3LT5uZXh0OwotICAgICB9Ci0rCi0rICByZXR1cm4gMTsKLSB9Ci0gCi0tLyogSW1wbGVtZW50 IHRoZSAiY3VycmVudF9zb3MiIHRhcmdldF9zb19vcHMgbWV0aG9kLiAgKi8KLSsvKiBSZWFkIHRo ZSBmdWxsIGxpc3Qgb2YgY3VycmVudGx5IGxvYWRlZCBzaGFyZWQgb2JqZWN0cyBkaXJlY3RseSBm cm9tCi0rICAgdGhlIGluZmVyaW9yLiAgKi8KLSAKLSBzdGF0aWMgc3RydWN0IHNvX2xpc3QgKgot LXN2cjRfY3VycmVudF9zb3MgKHZvaWQpCi0rc3ZyNF9jdXJyZW50X3Nvc19kaXJlY3QgKHN0cnVj dCBzdnI0X2luZm8gKmluZm8pCi0gewotICAgQ09SRV9BRERSIGxtOwotICAgc3RydWN0IHNvX2xp c3QgKmhlYWQgPSBOVUxMOwotICAgc3RydWN0IHNvX2xpc3QgKipsaW5rX3B0ciA9ICZoZWFkOwot LSAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbzsKLSAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwot ICAgaW50IGlnbm9yZV9maXJzdDsKLSAgIHN0cnVjdCBzdnI0X2xpYnJhcnlfbGlzdCBsaWJyYXJ5 X2xpc3Q7Ci1AQCAtMTMxNCwxOSArMTQ0NSwxNiBAQCBzdnI0X2N1cnJlbnRfc29zICh2b2lkKQot ICAgICAgVW5mb3J0dW5hdGVseSBzdGF0aWNhbGx5IGxpbmtlZCBpbmZlcmlvcnMgd2lsbCBhbHNv IGZhbGwgYmFjayB0aHJvdWdoIHRoaXMKLSAgICAgIHN1Ym9wdGltYWwgY29kZSBwYXRoLiAgKi8K LSAKLS0gIGlmIChzdnI0X2N1cnJlbnRfc29zX3ZpYV94ZmVyX2xpYnJhcmllcyAoJmxpYnJhcnlf bGlzdCkpCi0rICBpbmZvLT51c2luZ194ZmVyID0gc3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9s aWJyYXJpZXMgKCZsaWJyYXJ5X2xpc3QsCi0rCQkJCQkJCSAgTlVMTCk7Ci0rICBpZiAoaW5mby0+ dXNpbmdfeGZlcikKLSAgICAgewotICAgICAgIGlmIChsaWJyYXJ5X2xpc3QubWFpbl9sbSkKLS0J ewotLQkgIGluZm8gPSBnZXRfc3ZyNF9pbmZvICgpOwotLQkgIGluZm8tPm1haW5fbG1fYWRkciA9 IGxpYnJhcnlfbGlzdC5tYWluX2xtOwotLQl9Ci0rCWluZm8tPm1haW5fbG1fYWRkciA9IGxpYnJh cnlfbGlzdC5tYWluX2xtOwotIAotICAgICAgIHJldHVybiBsaWJyYXJ5X2xpc3QuaGVhZCA/IGxp YnJhcnlfbGlzdC5oZWFkIDogc3ZyNF9kZWZhdWx0X3NvcyAoKTsKLSAgICAgfQotIAotLSAgaW5m byA9IGdldF9zdnI0X2luZm8gKCk7Ci0tCi0gICAvKiBBbHdheXMgbG9jYXRlIHRoZSBkZWJ1ZyBz dHJ1Y3QsIGluIGNhc2UgaXQgaGFzIG1vdmVkLiAgKi8KLSAgIGluZm8tPmRlYnVnX2Jhc2UgPSAw OwotICAgbG9jYXRlX2Jhc2UgKGluZm8pOwotQEAgLTEzNDksNyArMTQ3Nyw3IEBAIHN2cjRfY3Vy cmVudF9zb3MgKHZvaWQpCi0gICAgICBgc3RydWN0IHNvX2xpc3QnIG5vZGVzLiAgKi8KLSAgIGxt ID0gc29saWJfc3ZyNF9yX21hcCAoaW5mbyk7Ci0gICBpZiAobG0pCi0tICAgIHN2cjRfcmVhZF9z b19saXN0IChsbSwgJmxpbmtfcHRyLCBpZ25vcmVfZmlyc3QpOwotKyAgICBzdnI0X3JlYWRfc29f bGlzdCAobG0sIDAsICZsaW5rX3B0ciwgaWdub3JlX2ZpcnN0KTsKLSAKLSAgIC8qIE9uIFNvbGFy aXMsIHRoZSBkeW5hbWljIGxpbmtlciBpcyBub3QgaW4gdGhlIG5vcm1hbCBsaXN0IG9mCi0gICAg ICBzaGFyZWQgb2JqZWN0cywgc28gbWFrZSBzdXJlIHdlIHBpY2sgaXQgdXAgdG9vLiAgSGF2aW5n Ci1AQCAtMTM1Nyw3ICsxNDg1LDcgQEAgc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKLSAgICAgIGZv ciBza2lwcGluZyBkeW5hbWljIGxpbmtlciByZXNvbHZlciBjb2RlLiAgKi8KLSAgIGxtID0gc29s aWJfc3ZyNF9yX2xkc29tYXAgKGluZm8pOwotICAgaWYgKGxtKQotLSAgICBzdnI0X3JlYWRfc29f bGlzdCAobG0sICZsaW5rX3B0ciwgMCk7Ci0rICAgIHN2cjRfcmVhZF9zb19saXN0IChsbSwgMCwg JmxpbmtfcHRyLCAwKTsKLSAKLSAgIGRpc2NhcmRfY2xlYW51cHMgKGJhY2tfdG8pOwotIAotQEAg LTEzNjcsNiArMTQ5NSwyMiBAQCBzdnI0X2N1cnJlbnRfc29zICh2b2lkKQotICAgcmV0dXJuIGhl YWQ7Ci0gfQotIAotKy8qIEltcGxlbWVudCB0aGUgImN1cnJlbnRfc29zIiB0YXJnZXRfc29fb3Bz IG1ldGhvZC4gICovCi0rCi0rc3RhdGljIHN0cnVjdCBzb19saXN0ICoKLStzdnI0X2N1cnJlbnRf c29zICh2b2lkKQotK3sKLSsgIHN0cnVjdCBzdnI0X2luZm8gKmluZm8gPSBnZXRfc3ZyNF9pbmZv ICgpOwotKwotKyAgLyogSWYgd2UgYXJlIHVzaW5nIHRoZSBwcm9iZXMgaW50ZXJmYWNlIGFuZCB0 aGUgc29saWIgbGlzdCBoYXMKLSsgICAgIGJlZW4gY2FjaGVkIHRoZW4gd2Ugc2ltcGx5IHJldHVy biB0aGF0LiAgKi8KLSsgIGlmIChpbmZvLT5zb2xpYl9saXN0ICE9IE5VTEwpCi0rICAgIHJldHVy biBzdnI0X2NvcHlfbGlicmFyeV9saXN0IChpbmZvLT5zb2xpYl9saXN0KTsKLSsKLSsgIC8qIE90 aGVyd2lzZSBvYnRhaW4gdGhlIHNvbGliIGxpc3QgZGlyZWN0bHkgZnJvbSB0aGUgaW5mZXJpb3Iu ICAqLwotKyAgcmV0dXJuIHN2cjRfY3VycmVudF9zb3NfZGlyZWN0IChpbmZvKTsKLSt9Ci0rCi0g LyogR2V0IHRoZSBhZGRyZXNzIG9mIHRoZSBsaW5rX21hcCBmb3IgYSBnaXZlbiBPQkpGSUxFLiAg Ki8KLSAKLSBDT1JFX0FERFIKLUBAIC0xNDQ5LDYgKzE1OTMsNDM0IEBAIGV4ZWNfZW50cnlfcG9p bnQgKHN0cnVjdCBiZmQgKmFiZmQsIHN0cnUKLSAgIHJldHVybiBnZGJhcmNoX2FkZHJfYml0c19y ZW1vdmUgKHRhcmdldF9nZGJhcmNoICgpLCBhZGRyKTsKLSB9Ci0gCi0rLyogQSBwcm9iZSBhbmQg aXRzIGFzc29jaWF0ZWQgYWN0aW9uLiAgKi8KLSsKLStzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlvbgot K3sKLSsgIC8qIFRoZSBwcm9iZS4gICovCi0rICBzdHJ1Y3QgcHJvYmUgKnByb2JlOwotKwotKyAg LyogVGhlIGFjdGlvbi4gICovCi0rICBlbnVtIHByb2JlX2FjdGlvbiBhY3Rpb247Ci0rfTsKLSsK LSsvKiBSZXR1cm5zIGEgaGFzaCBjb2RlIGZvciB0aGUgcHJvYmVfYW5kX2FjdGlvbiByZWZlcmVu Y2VkIGJ5IHAuICAqLwotKwotK3N0YXRpYyBoYXNodmFsX3QKLStoYXNoX3Byb2JlX2FuZF9hY3Rp b24gKGNvbnN0IHZvaWQgKnApCi0rewotKyAgY29uc3Qgc3RydWN0IHByb2JlX2FuZF9hY3Rpb24g KnBhID0gcDsKLSsKLSsgIHJldHVybiAoaGFzaHZhbF90KSBwYS0+cHJvYmUtPmFkZHJlc3M7Ci0r fQotKwotKy8qIFJldHVybnMgbm9uLXplcm8gaWYgdGhlIHByb2JlX2FuZF9hY3Rpb25zIHJlZmVy ZW5jZWQgYnkgcDEgYW5kIHAyCi0rICAgYXJlIGVxdWFsLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0r ZXF1YWxfcHJvYmVfYW5kX2FjdGlvbiAoY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQgKnAyKQot K3sKLSsgIGNvbnN0IHN0cnVjdCBwcm9iZV9hbmRfYWN0aW9uICpwYTEgPSBwMTsKLSsgIGNvbnN0 IHN0cnVjdCBwcm9iZV9hbmRfYWN0aW9uICpwYTIgPSBwMjsKLSsKLSsgIHJldHVybiBwYTEtPnBy b2JlLT5hZGRyZXNzID09IHBhMi0+cHJvYmUtPmFkZHJlc3M7Ci0rfQotKwotKy8qIFJlZ2lzdGVy IGEgc29saWIgZXZlbnQgcHJvYmUgYW5kIGl0cyBhc3NvY2lhdGVkIGFjdGlvbiBpbiB0aGUKLSsg ICBwcm9iZXMgdGFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rcmVnaXN0ZXJfc29saWJfZXZl bnRfcHJvYmUgKHN0cnVjdCBwcm9iZSAqcHJvYmUsIGVudW0gcHJvYmVfYWN0aW9uIGFjdGlvbikK LSt7Ci0rICBzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvID0gZ2V0X3N2cjRfaW5mbyAoKTsKLSsgIHN0 cnVjdCBwcm9iZV9hbmRfYWN0aW9uIGxvb2t1cCwgKnBhOwotKyAgdm9pZCAqKnNsb3Q7Ci0rCi0r ICAvKiBDcmVhdGUgdGhlIHByb2JlcyB0YWJsZSwgaWYgbmVjZXNzYXJ5LiAgKi8KLSsgIGlmIChp bmZvLT5wcm9iZXNfdGFibGUgPT0gTlVMTCkKLSsgICAgewotKyAgICAgIGluZm8tPnByb2Jlc190 YWJsZSA9IGh0YWJfY3JlYXRlX2FsbG9jICgxLCBoYXNoX3Byb2JlX2FuZF9hY3Rpb24sCi0rCQkJ CQkgICAgICBlcXVhbF9wcm9iZV9hbmRfYWN0aW9uLAotKwkJCQkJICAgICAgeGZyZWUsIHhjYWxs b2MsIHhmcmVlKTsKLSsgICAgfQotKwotKyAgbG9va3VwLnByb2JlID0gcHJvYmU7Ci0rICBzbG90 ID0gaHRhYl9maW5kX3Nsb3QgKGluZm8tPnByb2Jlc190YWJsZSwgJmxvb2t1cCwgSU5TRVJUKTsK LSsgIGdkYl9hc3NlcnQgKCpzbG90ID09IEhUQUJfRU1QVFlfRU5UUlkpOwotKwotKyAgcGEgPSBY Q05FVyAoc3RydWN0IHByb2JlX2FuZF9hY3Rpb24pOwotKyAgcGEtPnByb2JlID0gcHJvYmU7Ci0r ICBwYS0+YWN0aW9uID0gYWN0aW9uOwotKwotKyAgKnNsb3QgPSBwYTsKLSt9Ci0rCi0rLyogR2V0 IHRoZSBzb2xpYiBldmVudCBwcm9iZSBhdCB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uLCBhbmQgdGhl Ci0rICAgYWN0aW9uIGFzc29jaWF0ZWQgd2l0aCBpdC4gIFJldHVybnMgTlVMTCBpZiBubyBzb2xp YiBldmVudCBwcm9iZQotKyAgIHdhcyBmb3VuZC4gICovCi0rCi0rc3RhdGljIHN0cnVjdCBwcm9i ZV9hbmRfYWN0aW9uICoKLStzb2xpYl9ldmVudF9wcm9iZV9hdCAoc3RydWN0IHN2cjRfaW5mbyAq aW5mbywgQ09SRV9BRERSIGFkZHJlc3MpCi0rewotKyAgc3RydWN0IHByb2JlIGxvb2t1cF9wcm9i ZTsKLSsgIHN0cnVjdCBwcm9iZV9hbmRfYWN0aW9uIGxvb2t1cDsKLSsgIHZvaWQgKipzbG90Owot KwotKyAgbG9va3VwX3Byb2JlLmFkZHJlc3MgPSBhZGRyZXNzOwotKyAgbG9va3VwLnByb2JlID0g Jmxvb2t1cF9wcm9iZTsKLSsgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAoaW5mby0+cHJvYmVzX3Rh YmxlLCAmbG9va3VwLCBOT19JTlNFUlQpOwotKwotKyAgaWYgKHNsb3QgPT0gTlVMTCkKLSsgICAg cmV0dXJuIE5VTEw7Ci0rCi0rICByZXR1cm4gKHN0cnVjdCBwcm9iZV9hbmRfYWN0aW9uICopICpz bG90OwotK30KLSsKLSsvKiBEZWNpZGUgd2hhdCBhY3Rpb24gdG8gdGFrZSB3aGVuIHRoZSBzcGVj aWZpZWQgc29saWIgZXZlbnQgcHJvYmUgaXMKLSsgICBoaXQuICAqLwotKwotK3N0YXRpYyBlbnVt IHByb2JlX2FjdGlvbgotK3NvbGliX2V2ZW50X3Byb2JlX2FjdGlvbiAoc3RydWN0IHByb2JlX2Fu ZF9hY3Rpb24gKnBhKQotK3sKLSsgIGVudW0gcHJvYmVfYWN0aW9uIGFjdGlvbjsKLSsgIHVuc2ln bmVkIHByb2JlX2FyZ2M7Ci0rCi0rICBhY3Rpb24gPSBwYS0+YWN0aW9uOwotKyAgaWYgKGFjdGlv biA9PSBET19OT1RISU5HIHx8IGFjdGlvbiA9PSBQUk9CRVNfSU5URVJGQUNFX0ZBSUxFRCkKLSsg ICAgcmV0dXJuIGFjdGlvbjsKLSsKLSsgIGdkYl9hc3NlcnQgKGFjdGlvbiA9PSBGVUxMX1JFTE9B RCB8fCBhY3Rpb24gPT0gVVBEQVRFX09SX1JFTE9BRCk7Ci0rCi0rICAvKiBDaGVjayB0aGF0IGFu IGFwcHJvcHJpYXRlIG51bWJlciBvZiBhcmd1bWVudHMgaGFzIGJlZW4gc3VwcGxpZWQuCi0rICAg ICBXZSBleHBlY3Q6Ci0rICAgICAgIGFyZzA6IExtaWRfdCBsbWlkIChtYW5kYXRvcnkpCi0rICAg ICAgIGFyZzE6IHN0cnVjdCByX2RlYnVnICpkZWJ1Z19iYXNlIChtYW5kYXRvcnkpCi0rICAgICAg IGFyZzI6IHN0cnVjdCBsaW5rX21hcCAqbmV3IChvcHRpb25hbCwgZm9yIGluY3JlbWVudGFsIHVw ZGF0ZXMpICAqLwotKyAgcHJvYmVfYXJnYyA9IGdldF9wcm9iZV9hcmd1bWVudF9jb3VudCAocGEt PnByb2JlKTsKLSsgIGlmIChwcm9iZV9hcmdjID09IDIpCi0rICAgIGFjdGlvbiA9IEZVTExfUkVM T0FEOwotKyAgZWxzZSBpZiAocHJvYmVfYXJnYyA8IDIpCi0rICAgIGFjdGlvbiA9IFBST0JFU19J TlRFUkZBQ0VfRkFJTEVEOwotKwotKyAgcmV0dXJuIGFjdGlvbjsKLSt9Ci0rCi0rLyogUG9wdWxh dGUgdGhlIHNoYXJlZCBvYmplY3QgbGlzdCBieSByZWFkaW5nIHRoZSBlbnRpcmUgbGlzdCBvZgot KyAgIHNoYXJlZCBvYmplY3RzIGZyb20gdGhlIGluZmVyaW9yLiAgUmV0dXJucyBub256ZXJvIG9u IHN1Y2Nlc3MuICAqLwotKwotK3N0YXRpYyBpbnQKLStzb2xpc3RfdXBkYXRlX2Z1bGwgKHN0cnVj dCBzdnI0X2luZm8gKmluZm8pCi0rewotKyAgc3ZyNF9mcmVlX2xpYnJhcnlfbGlzdCAoJmluZm8t PnNvbGliX2xpc3QpOwotKyAgaW5mby0+c29saWJfbGlzdCA9IHN2cjRfY3VycmVudF9zb3NfZGly ZWN0IChpbmZvKTsKLSsKLSsgIHJldHVybiAxOwotK30KLSsKLSsvKiBVcGRhdGUgdGhlIHNoYXJl ZCBvYmplY3QgbGlzdCBzdGFydGluZyBmcm9tIHRoZSBsaW5rLW1hcCBlbnRyeQotKyAgIHBhc3Nl ZCBieSB0aGUgbGlua2VyIGluIHRoZSBwcm9iZSdzIHRoaXJkIGFyZ3VtZW50LiAgUmV0dXJucwot KyAgIG5vbnplcm8gaWYgdGhlIGxpc3Qgd2FzIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLCBvciB6ZXJv IHRvIGluZGljYXRlCi0rICAgZmFpbHVyZS4gICovCi0rCi0rc3RhdGljIGludAotK3NvbGlzdF91 cGRhdGVfaW5jcmVtZW50YWwgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIENPUkVfQUREUiBsbSkK LSt7Ci0rICBzdHJ1Y3Qgc29fbGlzdCAqdGFpbDsKLSsgIENPUkVfQUREUiBwcmV2X2xtOwotKwot KyAgLyogRmFsbCBiYWNrIHRvIGEgZnVsbCB1cGRhdGUgaWYgd2UgaGF2ZW4ndCByZWFkIGFueXRo aW5nIHlldC4gICovCi0rICBpZiAoaW5mby0+c29saWJfbGlzdCA9PSBOVUxMKQotKyAgICByZXR1 cm4gMDsKLSsKLSsgIC8qIEZhbGwgYmFjayB0byBhIGZ1bGwgdXBkYXRlIGlmIHdlIGFyZSB1c2lu ZyBhIHJlbW90ZSB0YXJnZXQKLSsgICAgIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCBpbmNyZW1lbnRh bCB0cmFuc2ZlcnMuICAqLwotKyAgaWYgKGluZm8tPnVzaW5nX3hmZXIgJiYgIXRhcmdldF9hdWdt ZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZCgpKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIC8qIFdh bGsgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4gICovCi0rICBmb3IgKHRhaWwgPSBpbmZvLT5zb2xp Yl9saXN0OyB0YWlsLT5uZXh0OyB0YWlsID0gdGFpbC0+bmV4dCk7Ci0rICBwcmV2X2xtID0gdGFp bC0+bG1faW5mby0+bG1fYWRkcjsKLSsKLSsgIC8qIFJlYWQgdGhlIG5ldyBvYmplY3RzLiAgKi8K LSsgIGlmIChpbmZvLT51c2luZ194ZmVyKQotKyAgICB7Ci0rICAgICAgc3RydWN0IHN2cjRfbGli cmFyeV9saXN0IGxpYnJhcnlfbGlzdDsKLSsgICAgICBjaGFyIGFubmV4WzY0XTsKLSsKLSsgICAg ICB4c25wcmludGYgKGFubmV4LCBzaXplb2YgKGFubmV4KSwgInN0YXJ0PSVseDtwcmV2PSVseCIs IGxtLCBwcmV2X2xtKTsKLSsgICAgICBpZiAoIXN2cjRfY3VycmVudF9zb3NfdmlhX3hmZXJfbGli cmFyaWVzICgmbGlicmFyeV9saXN0LCBhbm5leCkpCi0rCXJldHVybiAwOwotKwotKyAgICAgIHRh aWwtPm5leHQgPSBsaWJyYXJ5X2xpc3QuaGVhZDsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0r ICAgICAgc3RydWN0IHNvX2xpc3QgKipsaW5rID0gJnRhaWwtPm5leHQ7Ci0rCi0rICAgICAgaWYg KCFzdnI0X3JlYWRfc29fbGlzdCAobG0sIHByZXZfbG0sICZsaW5rLCAwKSkKLSsJcmV0dXJuIDA7 Ci0rICAgIH0KLSsKLSsgIHJldHVybiAxOwotK30KLSsKLSsvKiBEaXNhYmxlIHRoZSBwcm9iZXMt YmFzZWQgbGlua2VyIGludGVyZmFjZSBhbmQgcmV2ZXJ0IHRvIHRoZQotKyAgIG9yaWdpbmFsIGlu dGVyZmFjZS4gIFdlIGRvbid0IHJlc2V0IHRoZSBicmVha3BvaW50cyBhcyB0aGUKLSsgICBvbmVz IHNldCB1cCBmb3IgdGhlIHByb2Jlcy1iYXNlZCBpbnRlcmZhY2UgYXJlIGFkZXF1YXRlLiAgKi8K LSsKLStzdGF0aWMgdm9pZAotK2Rpc2FibGVfcHJvYmVzX2ludGVyZmFjZV9jbGVhbnVwICh2b2lk ICphcmcpCi0rewotKyAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7 Ci0rCi0rICB3YXJuaW5nIChfKCJQcm9iZXMtYmFzZWQgZHluYW1pYyBsaW5rZXIgaW50ZXJmYWNl IGZhaWxlZC5cbiIKLSsJICAgICAiUmV2ZXJ0aW5nIHRvIG9yaWdpbmFsIGludGVyZmFjZS5cbiIp KTsKLSsKLSsgIGZyZWVfcHJvYmVzX3RhYmxlIChpbmZvKTsKLSsgIGZyZWVfc29saWJfbGlzdCAo aW5mbyk7Ci0rfQotKwotKy8qIFVwZGF0ZSB0aGUgc29saWIgbGlzdCBhcyBhcHByb3ByaWF0ZSB3 aGVuIHVzaW5nIHRoZQotKyAgIHByb2Jlcy1iYXNlZCBsaW5rZXIgaW50ZXJmYWNlLiAgRG8gbm90 aGluZyBpZiB1c2luZyB0aGUKLSsgICBzdGFuZGFyZCBpbnRlcmZhY2UuICAqLwotKwotK3N0YXRp YyB2b2lkCi0rc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQgKHZvaWQpCi0rewotKyAgc3RydWN0IHN2 cjRfaW5mbyAqaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7Ci0rICBzdHJ1Y3QgcHJvYmVfYW5kX2Fj dGlvbiAqcGE7Ci0rICBlbnVtIHByb2JlX2FjdGlvbiBhY3Rpb247Ci0rICBzdHJ1Y3QgY2xlYW51 cCAqb2xkX2NoYWluLCAqdXNtX2NoYWluOwotKyAgc3RydWN0IHZhbHVlICp2YWw7Ci0rICBDT1JF X0FERFIgcGMsIGRlYnVnX2Jhc2UsIGxtID0gMDsKLSsgIGludCBpc19pbml0aWFsX25zOwotKwot KyAgLyogRG8gbm90aGluZyBpZiBub3QgdXNpbmcgdGhlIHByb2JlcyBpbnRlcmZhY2UuICAqLwot KyAgaWYgKGluZm8tPnByb2Jlc190YWJsZSA9PSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0rICAv KiBJZiBhbnl0aGluZyBnb2VzIHdyb25nIHdlIHJldmVydCB0byB0aGUgb3JpZ2luYWwgbGlua2Vy Ci0rICAgICBpbnRlcmZhY2UuICAqLwotKyAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChkaXNh YmxlX3Byb2Jlc19pbnRlcmZhY2VfY2xlYW51cCwgTlVMTCk7Ci0rCi0rICBwYyA9IHJlZ2NhY2hl X3JlYWRfcGMgKGdldF9jdXJyZW50X3JlZ2NhY2hlICgpKTsKLSsgIHBhID0gc29saWJfZXZlbnRf cHJvYmVfYXQgKGluZm8sIHBjKTsKLSsgIGlmIChwYSA9PSBOVUxMKQotKyAgICBnb3RvIGVycm9y OwotKwotKyAgYWN0aW9uID0gc29saWJfZXZlbnRfcHJvYmVfYWN0aW9uIChwYSk7Ci0rICBpZiAo YWN0aW9uID09IFBST0JFU19JTlRFUkZBQ0VfRkFJTEVEKQotKyAgICBnb3RvIGVycm9yOwotKwot KyAgaWYgKGFjdGlvbiA9PSBET19OT1RISU5HKQotKyAgICByZXR1cm47Ci0rCi0rICAvKiBFVkFM VUFURV9QUk9CRV9BUkdVTUVOVCBsb29rcyB1cCBzeW1ib2xzIGluIHRoZSBkeW5hbWljIGxpbmtl cgotKyAgICAgdXNpbmcgRklORF9QQ19TRUNUSU9OLiAgRklORF9QQ19TRUNUSU9OIGlzIGFjY2Vs ZXJhdGVkIGJ5IGEgY2FjaGUKLSsgICAgIGNhbGxlZCB0aGUgc2VjdGlvbiBtYXAuICBUaGUgc2Vj dGlvbiBtYXAgaXMgaW52YWxpZGF0ZWQgZXZlcnkKLSsgICAgIHRpbWUgYSBzaGFyZWQgbGlicmFy eSBpcyBsb2FkZWQgb3IgdW5sb2FkZWQsIGFuZCBpZiB0aGUgaW5mZXJpb3IKLSsgICAgIGlzIGdl bmVyYXRpbmcgYSBsb3Qgb2Ygc2hhcmVkIGxpYnJhcnkgZXZlbnRzIHRoZW4gdGhlIHNlY3Rpb24g bWFwCi0rICAgICB3aWxsIGJlIHVwZGF0ZWQgZXZlcnkgdGltZSBTVlI0X0hBTkRMRV9TT0xJQl9F VkVOVCBpcyBjYWxsZWQuCi0rICAgICBXZSBjYWxsZWQgRklORF9QQ19TRUNUSU9OIGluIFNWUjRf Q1JFQVRFX1NPTElCX0VWRU5UX0JSRUFLUE9JTlRTLAotKyAgICAgc28gd2UgY2FuIGd1YXJhbnRl ZSB0aGF0IHRoZSBkeW5hbWljIGxpbmtlcidzIHNlY3Rpb25zIGFyZSBpbiB0aGUKLSsgICAgIHNl Y3Rpb24gbWFwLiAgV2UgY2FuIHRoZXJlZm9yZSBpbmhpYml0IHNlY3Rpb24gbWFwIHVwZGF0ZXMg YWNyb3NzCi0rICAgICB0aGVzZSBjYWxscyB0byBFVkFMVUFURV9QUk9CRV9BUkdVTUVOVCBhbmQg c2F2ZSBhIGxvdCBvZiB0aW1lLiAgKi8KLSsgIGluaGliaXRfc2VjdGlvbl9tYXBfdXBkYXRlcyAo KTsKLSsgIHVzbV9jaGFpbiA9IG1ha2VfY2xlYW51cCAocmVzdW1lX3NlY3Rpb25fbWFwX3VwZGF0 ZXNfY2xlYW51cCwgTlVMTCk7Ci0rCi0rICB2YWwgPSBldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAo cGEtPnByb2JlLCAxKTsKLSsgIGlmICh2YWwgPT0gTlVMTCkKLSsgICAgZ290byBlcnJvcjsKLSsK LSsgIGRlYnVnX2Jhc2UgPSB2YWx1ZV9hc19hZGRyZXNzICh2YWwpOwotKyAgaWYgKGRlYnVnX2Jh c2UgPT0gMCkKLSsgICAgZ290byBlcnJvcjsKLSsKLSsgIC8qIEFsd2F5cyBsb2NhdGUgdGhlIGRl YnVnIHN0cnVjdCwgaW4gY2FzZSBpdCBtb3ZlZC4gICovCi0rICBpbmZvLT5kZWJ1Z19iYXNlID0g MDsKLSsgIGlmIChsb2NhdGVfYmFzZSAoaW5mbykgPT0gMCkKLSsgICAgZ290byBlcnJvcjsKLSsK LSsgIC8qIERvIG5vdCBwcm9jZXNzIG5hbWVzcGFjZXMgb3RoZXIgdGhhbiB0aGUgaW5pdGlhbCBv bmUuICAqLwotKyAgaWYgKGRlYnVnX2Jhc2UgIT0gaW5mby0+ZGVidWdfYmFzZSkKLSsgICAgYWN0 aW9uID0gRE9fTk9USElORzsKLSsKLSsgIGlmIChhY3Rpb24gPT0gVVBEQVRFX09SX1JFTE9BRCkK LSsgICAgewotKyAgICAgIHZhbCA9IGV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChwYS0+cHJvYmUs IDIpOwotKyAgICAgIGlmICh2YWwgIT0gTlVMTCkKLSsJbG0gPSB2YWx1ZV9hc19hZGRyZXNzICh2 YWwpOwotKwotKyAgICAgIGlmIChsbSA9PSAwKQotKwlhY3Rpb24gPSBGVUxMX1JFTE9BRDsKLSsg ICAgfQotKwotKyAgLyogUmVzdW1lIHNlY3Rpb24gbWFwIHVwZGF0ZXMuICAqLwotKyAgZG9fY2xl YW51cHMgKHVzbV9jaGFpbik7Ci0rCi0rICBpZiAoYWN0aW9uID09IFVQREFURV9PUl9SRUxPQUQp Ci0rICAgIHsKLSsgICAgICBpZiAoIXNvbGlzdF91cGRhdGVfaW5jcmVtZW50YWwgKGluZm8sIGxt KSkKLSsJYWN0aW9uID0gRlVMTF9SRUxPQUQ7Ci0rICAgIH0KLSsKLSsgIGlmIChhY3Rpb24gPT0g RlVMTF9SRUxPQUQpCi0rICAgIHsKLSsgICAgICBpZiAoIXNvbGlzdF91cGRhdGVfZnVsbCAoaW5m bykpCi0rCWdvdG8gZXJyb3I7Ci0rICAgIH0KLSsKLSsgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9j aGFpbik7Ci0rICByZXR1cm47Ci0rCi0rIGVycm9yOgotKyAgLyogV2Ugc2hvdWxkIG5ldmVyIHJl YWNoIGhlcmUsIGJ1dCBpZiB3ZSBkbyB3ZSBkaXNhYmxlIHRoZQotKyAgICAgcHJvYmVzIGludGVy ZmFjZSBhbmQgcmV2ZXJ0IHRvIHRoZSBvcmlnaW5hbCBpbnRlcmZhY2UuICAqLwotKwotKyAgZG9f Y2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rfQotKwotKy8qIEhlbHBlciBmdW5jdGlvbiBmb3Igc3Zy NF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMuICAqLwotKwotK3N0YXRpYyBpbnQKLStz dnI0X3VwZGF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwg dm9pZCAqYXJnKQotK3sKLSsgIHN0cnVjdCBzdnI0X2luZm8gKmluZm8gPSBnZXRfc3ZyNF9pbmZv ICgpOwotKyAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2M7Ci0rCi0rICBpZiAoYi0+dHlwZSAhPSBi cF9zaGxpYl9ldmVudCkKLSsgICAgcmV0dXJuIDA7IC8qIENvbnRpbnVlIGl0ZXJhdGluZy4gICov Ci0rCi0rICBmb3IgKGxvYyA9IGItPmxvYzsgbG9jOyBsb2MgPSBsb2MtPm5leHQpCi0rICAgIHsK LSsgICAgICBzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlvbiAqcGEgPSBzb2xpYl9ldmVudF9wcm9iZV9h dCAoaW5mbywgbG9jLT5hZGRyZXNzKTsKLSsKLSsgICAgICBpZiAocGEgIT0gTlVMTCkKLSsJewot KwkgIGlmIChwYS0+YWN0aW9uID09IERPX05PVEhJTkcpCi0rCSAgICBiLT5lbmFibGVfc3RhdGUg PSAoc3RvcF9vbl9zb2xpYl9ldmVudHMKLSsJCQkgICAgICAgPyBicF9lbmFibGVkIDogYnBfZGlz YWJsZWQpOwotKwotKwkgIHJldHVybiAwOyAvKiBDb250aW51ZSBpdGVyYXRpbmcuICAqLwotKwl9 Ci0rICAgIH0KLSsKLSsgIHJldHVybiAwOyAvKiBDb250aW51ZSBpdGVyYXRpbmcuICAqLwotK30K LSsKLSsvKiBFbmFibGUgb3IgZGlzYWJsZSBvcHRpb25hbCBzb2xpYiBldmVudCBicmVha3BvaW50 cyBhcyBhcHByb3ByaWF0ZS4KLSsgICBDYWxsZWQgd2hlbmV2ZXIgc3RvcF9vbl9zb2xpYl9ldmVu dHMgaXMgY2hhbmdlZC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzdnI0X3VwZGF0ZV9zb2xpYl9l dmVudF9icmVha3BvaW50cyAodm9pZCkKLSt7Ci0rICBzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvID0g Z2V0X3N2cjRfaW5mbyAoKTsKLSsKLSsgIGlmIChpbmZvLT5wcm9iZXNfdGFibGUpCi0rICAgIGl0 ZXJhdGVfb3Zlcl9icmVha3BvaW50cyAoc3ZyNF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtwb2lu dCwgTlVMTCk7Ci0rfQotKwotKy8qIENyZWF0ZSBhbmQgcmVnaXN0ZXIgc29saWIgZXZlbnQgYnJl YWtwb2ludHMuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc3ZyNF9jcmVhdGVfcHJvYmVfYnJlYWtw b2ludHMgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKwkJCSAgICAgICBWRUMgKHByb2JlX3Ap ICoqcHJvYmVzKQotK3sKLSsgIGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IE5VTV9QUk9C RVM7IGkrKykKLSsgICAgewotKyAgICAgIGVudW0gcHJvYmVfYWN0aW9uIGFjdGlvbiA9IHByb2Jl X2luZm9baV0uYWN0aW9uOwotKyAgICAgIHN0cnVjdCBwcm9iZSAqcHJvYmU7Ci0rICAgICAgaW50 IGl4OwotKwotKyAgICAgIGZvciAoaXggPSAwOwotKwkgICBWRUNfaXRlcmF0ZSAocHJvYmVfcCwg cHJvYmVzW2ldLCBpeCwgcHJvYmUpOwotKwkgICArK2l4KQotKwl7Ci0rCSAgY3JlYXRlX3NvbGli X2V2ZW50X2JyZWFrcG9pbnQgKGdkYmFyY2gsIHByb2JlLT5hZGRyZXNzKTsKLSsJICByZWdpc3Rl cl9zb2xpYl9ldmVudF9wcm9iZSAocHJvYmUsIGFjdGlvbik7Ci0rCX0KLSsgICAgfQotKwotKyAg c3ZyNF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMgKCk7Ci0rfQotKwotKy8qIEJvdGgg dGhlIFN1bk9TIGFuZCB0aGUgU1ZSNCBkeW5hbWljIGxpbmtlcnMgY2FsbCBhIG1hcmtlciBmdW5j dGlvbgotKyAgIGJlZm9yZSBhbmQgYWZ0ZXIgbWFwcGluZyBhbmQgdW5tYXBwaW5nIHNoYXJlZCBs aWJyYXJpZXMuICBUaGUgc29sZQotKyAgIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gYWxs b3cgZGVidWdnZXJzIHRvIHNldCBhIGJyZWFrcG9pbnQgc28KLSsgICB0aGV5IGNhbiB0cmFjayB0 aGVzZSBjaGFuZ2VzLgotKwotKyAgIFNvbWUgdmVyc2lvbnMgb2YgdGhlIGdsaWJjIGR5bmFtaWMg bGlua2VyIGNvbnRhaW4gbmFtZWQgcHJvYmVzCi0rICAgdG8gYWxsb3cgbW9yZSBmaW5lIGdyYWlu ZWQgc3RvcHBpbmcuICBHaXZlbiB0aGUgYWRkcmVzcyBvZiB0aGUKLSsgICBvcmlnaW5hbCBtYXJr ZXIgZnVuY3Rpb24sIHRoaXMgZnVuY3Rpb24gYXR0ZW1wdHMgdG8gZmluZCB0aGVzZQotKyAgIHBy b2JlcywgYW5kIGlmIGZvdW5kLCBzZXRzIGJyZWFrcG9pbnRzIG9uIHRob3NlIGluc3RlYWQuICBJ ZiB0aGUKLSsgICBwcm9iZXMgYXJlbid0IGZvdW5kLCBhIHNpbmdsZSBicmVha3BvaW50IGlzIHNl dCBvbiB0aGUgb3JpZ2luYWwKLSsgICBtYXJrZXIgZnVuY3Rpb24uICAqLwotKwotK3N0YXRpYyB2 b2lkCi0rc3ZyNF9jcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLAotKwkJCQkgICAgIENPUkVfQUREUiBhZGRyZXNzKQotK3sKLSsgIHN0cnVjdCBz dnI0X2luZm8gKmluZm8gPSBnZXRfc3ZyNF9pbmZvICgpOwotKyAgc3RydWN0IG9ial9zZWN0aW9u ICpvczsKLSsKLSsgIG9zID0gZmluZF9wY19zZWN0aW9uIChhZGRyZXNzKTsKLSsgIGlmIChvcyAh PSBOVUxMKQotKyAgICB7Ci0rICAgICAgaW50IHdpdGhfcHJlZml4OwotKwotKyAgICAgIGZvciAo d2l0aF9wcmVmaXggPSAwOyB3aXRoX3ByZWZpeCA8PSAxOyB3aXRoX3ByZWZpeCsrKQotKwl7Ci0r CSAgVkVDIChwcm9iZV9wKSAqcHJvYmVzW05VTV9QUk9CRVNdOwotKwkgIGludCBhbGxfcHJvYmVz X2ZvdW5kID0gMTsKLSsJICBpbnQgaTsKLSsKLSsJICBtZW1zZXQgKHByb2JlcywgMCwgc2l6ZW9m IChwcm9iZXMpKTsKLSsJICBmb3IgKGkgPSAwOyBpIDwgTlVNX1BST0JFUzsgaSsrKQotKwkgICAg ewotKwkgICAgICBjaGFyIG5hbWVbMzJdID0geyAnXDAnIH07Ci0rCi0rCSAgICAgIC8qIEZlZG9y YSAxNywgUkhFTCA2LjIsIGFuZCBSSEVMIDYuMyBzaGlwcGVkIHdpdGggYW4KLSsJCSBlYXJseSB2 ZXJzaW9uIG9mIHRoZSBwcm9iZXMgY29kZSBpbiB3aGljaCB0aGUgcHJvYmVzJwotKwkJIG5hbWVz IHdlcmUgcHJlZml4ZWQgd2l0aCAicnRsZF8iIGFuZCB0aGUgIm1hcF9mYWlsZWQiCi0rCQkgcHJv YmUgZGlkIG5vdCBleGlzdC4gIFRoZSBsb2NhdGlvbnMgb2YgdGhlIHByb2JlcyBhcmUKLSsJCSBv dGhlcndpc2UgdGhlIHNhbWUsIHNvIHdlIGNoZWNrIGZvciBwcm9iZXMgd2l0aAotKwkJIHByZWZp eGVkIG5hbWVzIGlmIHByb2JlcyB3aXRoIHVucHJlZml4ZWQgbmFtZXMgYXJlCi0rCQkgbm90IHBy ZXNlbnQuICAqLwotKwotKwkgICAgICBpZiAod2l0aF9wcmVmaXgpCi0rCQlzdHJuY2F0IChuYW1l LCAicnRsZF8iLCBzaXplb2YgKG5hbWUpIC0gc3RybGVuIChuYW1lKSAtIDEpOwotKwotKwkgICAg ICBzdHJuY2F0IChuYW1lLCBwcm9iZV9pbmZvW2ldLm5hbWUsCi0rCQkgICAgICAgc2l6ZW9mIChu YW1lKSAtIHN0cmxlbiAobmFtZSkgLSAxKTsKLSsKLSsJICAgICAgcHJvYmVzW2ldID0gZmluZF9w cm9iZXNfaW5fb2JqZmlsZSAob3MtPm9iamZpbGUsICJydGxkIiwgbmFtZSk7Ci0rCi0rCSAgICAg IGlmICghc3RyY21wIChuYW1lLCAicnRsZF9tYXBfZmFpbGVkIikpCi0rCQljb250aW51ZTsKLSsK LSsJICAgICAgaWYgKCFWRUNfbGVuZ3RoIChwcm9iZV9wLCBwcm9iZXNbaV0pKQotKwkJewotKwkJ ICBhbGxfcHJvYmVzX2ZvdW5kID0gMDsKLSsJCSAgYnJlYWs7Ci0rCQl9Ci0rCSAgICB9Ci0rCi0r CSAgaWYgKGFsbF9wcm9iZXNfZm91bmQpCi0rCSAgICBzdnI0X2NyZWF0ZV9wcm9iZV9icmVha3Bv aW50cyAoZ2RiYXJjaCwgcHJvYmVzKTsKLSsKLSsJICBmb3IgKGkgPSAwOyBpIDwgTlVNX1BST0JF UzsgaSsrKQotKwkgICAgVkVDX2ZyZWUgKHByb2JlX3AsIHByb2Jlc1tpXSk7Ci0rCi0rCSAgaWYg KGFsbF9wcm9iZXNfZm91bmQpCi0rCSAgICByZXR1cm47Ci0rCX0KLSsgICAgfQotKwotKyAgY3Jl YXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnQgKGdkYmFyY2gsIGFkZHJlc3MpOwotK30KLSsKLSAv KiBIZWxwZXIgZnVuY3Rpb24gZm9yIGdkYl9iZmRfbG9va3VwX3N5bWJvbC4gICovCi0gCi0gc3Rh dGljIGludAotQEAgLTE1MDEsNiArMjA3Myw4IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRf aW5mbyAqaW5mbywgaW4KLSAgIGluZm8tPmludGVycF90ZXh0X3NlY3RfbG93ID0gaW5mby0+aW50 ZXJwX3RleHRfc2VjdF9oaWdoID0gMDsKLSAgIGluZm8tPmludGVycF9wbHRfc2VjdF9sb3cgPSBp bmZvLT5pbnRlcnBfcGx0X3NlY3RfaGlnaCA9IDA7Ci0gCi0rICBmcmVlX3Byb2Jlc190YWJsZSAo aW5mbyk7Ci0rCi0gICAvKiBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBzaGFyZWQgbGlicmFyeSBsaXN0 IGluIHRoZSB0YXJnZXQsIGFuZAotICAgICAgcl9kZWJ1ZyBjb250YWlucyByX2Jyaywgc2V0IHRo ZSBicmVha3BvaW50IHRoZXJlIC0gdGhpcyBzaG91bGQKLSAgICAgIG1lYW4gcl9icmsgaGFzIGFs cmVhZHkgYmVlbiByZWxvY2F0ZWQuICBBc3N1bWUgdGhlIGR5bmFtaWMgbGlua2VyCi1AQCAtMTUz Miw3ICsyMTA2LDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgot IAkgVGhhdCBrbm93bGVkZ2UgaXMgZW5jb2RlZCBpbiB0aGUgYWRkcmVzcywgaWYgaXQncyBUaHVt YiB0aGUgbG93IGJpdAotIAkgaXMgMS4gIEhvd2V2ZXIsIHdlJ3ZlIHN0cmlwcGVkIHRoYXQgaW5m byBhYm92ZSBhbmQgaXQncyBub3QgY2xlYXIKLSAJIHdoYXQgYWxsIHRoZSBjb25zZXF1ZW5jZXMg YXJlIG9mIHBhc3NpbmcgYSBub24tYWRkcl9iaXRzX3JlbW92ZSdkCi0tCSBhZGRyZXNzIHRvIGNy ZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50LiAgVGhlIGNhbGwgdG8KLSsJIGFkZHJlc3MgdG8g c3ZyNF9jcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMuICBUaGUgY2FsbCB0bwotIAkgZmlu ZF9wY19zZWN0aW9uIHZlcmlmaWVzIHdlIGtub3cgYWJvdXQgdGhlIGFkZHJlc3MgYW5kIGhhdmUg c29tZQotIAkgaG9wZSBvZiBjb21wdXRpbmcgdGhlIHJpZ2h0IGtpbmQgb2YgYnJlYWtwb2ludCB0 byB1c2UgKHZpYQotIAkgc3ltYm9sIGluZm8pLiAgSXQgZG9lcyBtZWFuIHRoYXQgR0RCIG5lZWRz IHRvIGJlIHBvaW50ZWQgYXQgYQotQEAgLTE1NzAsNyArMjE0NCw3IEBAIGVuYWJsZV9icmVhayAo c3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KLSAJCSsgYmZkX3NlY3Rpb25fc2l6ZSAodG1wX2Jm ZCwgaW50ZXJwX3NlY3QpOwotIAkgICAgfQotIAotLQkgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVh a3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIpOwotKwkgIHN2cjRfY3JlYXRlX3Nv bGliX2V2ZW50X2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIpOwotIAkg IHJldHVybiAxOwotIAl9Ci0gICAgIH0KLUBAIC0xNzI4LDcgKzIzMDIsOCBAQCBlbmFibGVfYnJl YWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCi0gCi0gICAgICAgaWYgKHN5bV9hZGRyICE9 IDApCi0gCXsKLS0JICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCAodGFyZ2V0X2dkYmFy Y2ggKCksIGxvYWRfYWRkciArIHN5bV9hZGRyKTsKLSsJICBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVu dF9icmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2ggKCksCi0rCQkJCQkgICAgICAgbG9hZF9hZGRy ICsgc3ltX2FkZHIpOwotIAkgIHhmcmVlIChpbnRlcnBfbmFtZSk7Ci0gCSAgcmV0dXJuIDE7Ci0g CX0KLUBAIC0xNzU0LDcgKzIzMjksNyBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8g KmluZm8sIGluCi0gCSAgc3ltX2FkZHIgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9h ZGRyICh0YXJnZXRfZ2RiYXJjaCAoKSwKLSAJCQkJCQkJIHN5bV9hZGRyLAotIAkJCQkJCQkgJmN1 cnJlbnRfdGFyZ2V0KTsKLS0JICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCAodGFyZ2V0 X2dkYmFyY2ggKCksIHN5bV9hZGRyKTsKLSsJICBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9icmVh a3BvaW50cyAodGFyZ2V0X2dkYmFyY2ggKCksIHN5bV9hZGRyKTsKLSAJICByZXR1cm4gMTsKLSAJ fQotICAgICB9Ci1AQCAtMTc3MCw3ICsyMzQ1LDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3Zy NF9pbmZvICppbmZvLCBpbgotIAkgICAgICBzeW1fYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9t X2Z1bmNfcHRyX2FkZHIgKHRhcmdldF9nZGJhcmNoICgpLAotIAkJCQkJCQkgICAgIHN5bV9hZGRy LAotIAkJCQkJCQkgICAgICZjdXJyZW50X3RhcmdldCk7Ci0tCSAgICAgIGNyZWF0ZV9zb2xpYl9l dmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIpOwotKwkgICAgICBz dnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2ggKCksIHN5 bV9hZGRyKTsKLSAJICAgICAgcmV0dXJuIDE7Ci0gCSAgICB9Ci0gCX0KLUBAIC0yMjY2LDYgKzI4 NDEsOSBAQCBzdnI0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJvCi0gCi0gICBp bmZvID0gZ2V0X3N2cjRfaW5mbyAoKTsKLSAKLSsgIC8qIEZyZWUgdGhlIHByb2Jlcy1iYXNlZCBp bnRlcmZhY2UncyBzb2xpYiBsaXN0LiAgKi8KLSsgIGZyZWVfc29saWJfbGlzdCAoaW5mbyk7Ci0r Ci0gICAvKiBSZWxvY2F0ZSB0aGUgbWFpbiBleGVjdXRhYmxlIGlmIG5lY2Vzc2FyeS4gICovCi0g ICBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAoKTsKLSAKLUBAIC0yNTA3LDQgKzMwODUs NiBAQCBfaW5pdGlhbGl6ZV9zdnI0X3NvbGliICh2b2lkKQotICAgc3ZyNF9zb19vcHMubG9va3Vw X2xpYl9nbG9iYWxfc3ltYm9sID0gZWxmX2xvb2t1cF9saWJfc3ltYm9sOwotICAgc3ZyNF9zb19v cHMuc2FtZSA9IHN2cjRfc2FtZTsKLSAgIHN2cjRfc29fb3BzLmtlZXBfZGF0YV9pbl9jb3JlID0g c3ZyNF9rZWVwX2RhdGFfaW5fY29yZTsKLSsgIHN2cjRfc29fb3BzLnVwZGF0ZV9icmVha3BvaW50 cyA9IHN2cjRfdXBkYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzOwotKyAgc3ZyNF9zb19vcHMu aGFuZGxlX2V2ZW50ID0gc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQ7Ci0gfQotSW5kZXg6IGdkYi03 LjYvZ2RiL2JyZWFrcG9pbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvYnJl YWtwb2ludC5jCTIwMTMtMDUtMTkgMTY6MTY6MjAuNjA2MDg3MjA4ICswMjAwCi0rKysgZ2RiLTcu Ni9nZGIvYnJlYWtwb2ludC5jCTIwMTMtMDUtMTkgMTY6MjE6NTUuMjg4ODA1MjY5ICswMjAwCi1A QCAtNTM2MSwyNSArNTM2MSw2IEBAIGhhbmRsZV9qaXRfZXZlbnQgKHZvaWQpCi0gICB0YXJnZXRf dGVybWluYWxfaW5mZXJpb3IgKCk7Ci0gfQotIAotLS8qIEhhbmRsZSBhbiBzb2xpYiBldmVudCBi eSBjYWxsaW5nIHNvbGliX2FkZC4gICovCi0tCi0tdm9pZAotLWhhbmRsZV9zb2xpYl9ldmVudCAo dm9pZCkKLS17Ci0tICBjbGVhcl9wcm9ncmFtX3NwYWNlX3NvbGliX2NhY2hlIChjdXJyZW50X2lu ZmVyaW9yICgpLT5wc3BhY2UpOwotLQotLSAgLyogQ2hlY2sgZm9yIGFueSBuZXdseSBhZGRlZCBz aGFyZWQgbGlicmFyaWVzIGlmIHdlJ3JlIHN1cHBvc2VkIHRvCi0tICAgICBiZSBhZGRpbmcgdGhl bSBhdXRvbWF0aWNhbGx5LiAgU3dpdGNoIHRlcm1pbmFsIGZvciBhbnkgbWVzc2FnZXMKLS0gICAg IHByb2R1Y2VkIGJ5IGJyZWFrcG9pbnRfcmVfc2V0LiAgKi8KLS0gIHRhcmdldF90ZXJtaW5hbF9v dXJzX2Zvcl9vdXRwdXQgKCk7Ci0tI2lmZGVmIFNPTElCX0FERAotLSAgU09MSUJfQUREIChOVUxM LCAwLCAmY3VycmVudF90YXJnZXQsIGF1dG9fc29saWJfYWRkKTsKLS0jZWxzZQotLSAgc29saWJf YWRkIChOVUxMLCAwLCAmY3VycmVudF90YXJnZXQsIGF1dG9fc29saWJfYWRkKTsKLS0jZW5kaWYK LS0gIHRhcmdldF90ZXJtaW5hbF9pbmZlcmlvciAoKTsKLS19Ci0tCi0gLyogUHJlcGFyZSBXSEFU IGZpbmFsIGRlY2lzaW9uIGZvciBpbmZydW4uICAqLwotIAotIC8qIERlY2lkZSB3aGF0IGluZnJ1 biBuZWVkcyB0byBkbyB3aXRoIHRoaXMgYnBzdGF0LiAgKi8KCmRpZmYgLS1naXQgYS9nZGItZGxv cGVuLXN0YXAtcHJvYmUtNW9mOS5wYXRjaCBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS01b2Y5LnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhYjU5OGYKLS0tIC9kZXYv bnVsbAorKysgYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtNW9mOS5wYXRjaApAQCAtMCwwICsxLDkx IEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEzLTA2L21zZzAwMDE2Lmh0 bWwKKworIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEzLzA1LzI0IDA0OjUwOjI2CTEuMTQ2 MworIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEzLzA2LzA0IDEzOjA3OjQ1CTEuMTQ2NAor IyMgLTEsMyArMSwxMiBAQAorKzIwMTMtMDYtMDQgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJlZGhh dC5jb20+CisrCisrCSogZ2RiLnRleGluZm8gKEdlbmVyYWwgUXVlcnkgUGFja2V0cy9xU3VwcG9y dGVkKTogQWRkZWQKKysJInFYZmVyOmxpYnJhcmllcy1zdnI0OnJlYWQiIGFuZCAiYXVnbWVudGVk LWxpYnJhcmllcy1zdnI0LXJlYWQiLgorKwl0byB0aGUgdGFibGUgb2YgY3VycmVudGx5IGRlZmlu ZWQgc3R1YiBmZWF0dXJlcy4KKysJQWRkZWQgYSBtb3JlIGRldGFpbGVkIGVudHJ5IGZvciAiYXVn bWVudGVkLWxpYnJhcmllcy1zdnI0LXJlYWQiLgorKwkoR2VuZXJhbCBRdWVyeSBQYWNrZXRzL3FY ZmVyOmxpYnJhcmllcy1zdnI0OnJlYWQpOiBEb2N1bWVudGVkCisrCXRoZSBhdWdtZW50ZWQgZm9y bSBvZiB0aGlzIHBhY2tldC4KKysKKyAyMDEzLTA1LTIzICBKb2VsIEJyb2JlY2tlciAgPGJyb2Jl Y2tlckBhZGFjb3JlLmNvbT4KKyAKKyAJKiBnZGIudGV4aW5mbyAoU3lzdGVtLXdpZGUgQ29uZmln dXJhdGlvbiBTY3JpcHRzKTogUmVuYW1lcworLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIw MTMvMDUvMjQgMDQ6NTA6MjYJMS4xMDkzCisrKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAx My8wNi8wNCAxMzowNzo0NQkxLjEwOTQKK0BAIC0zODU5NCw2ICszODU5NCwxNiBAQAorIEB0YWIg QHNhbXB7LX0KKyBAdGFiIFllcworIAorK0BpdGVtIEBzYW1we3FYZmVyOmxpYnJhcmllcy1zdnI0 OnJlYWR9CisrQHRhYiBObworK0B0YWIgQHNhbXB7LX0KKytAdGFiIFllcworKworK0BpdGVtIEBz YW1we2F1Z21lbnRlZC1saWJyYXJpZXMtc3ZyNC1yZWFkfQorK0B0YWIgTm8KKytAdGFiIEBzYW1w ey19CisrQHRhYiBObworKworIEBpdGVtIEBzYW1we3FYZmVyOm1lbW9yeS1tYXA6cmVhZH0KKyBA dGFiIE5vCisgQHRhYiBAc2FtcHstfQorQEAgLTM4NzcwLDYgKzM4NzgwLDExIEBACisgVGhlIHJl bW90ZSBzdHViIHVuZGVyc3RhbmRzIHRoZSBAc2FtcHtxWGZlcjpsaWJyYXJpZXMtc3ZyNDpyZWFk fSBwYWNrZXQKKyAoQHB4cmVme3FYZmVyIHN2cjQgbGlicmFyeSBsaXN0IHJlYWR9KS4KKyAKKytA aXRlbSBhdWdtZW50ZWQtbGlicmFyaWVzLXN2cjQtcmVhZAorK1RoZSByZW1vdGUgc3R1YiB1bmRl cnN0YW5kcyB0aGUgYXVnbWVudGVkIGZvcm0gb2YgdGhlCisrQHNhbXB7cVhmZXI6bGlicmFyaWVz LXN2cjQ6cmVhZH0gcGFja2V0CisrKEBweHJlZntxWGZlciBzdnI0IGxpYnJhcnkgbGlzdCByZWFk fSkuCisrCisgQGl0ZW0gcVhmZXI6bWVtb3J5LW1hcDpyZWFkCisgVGhlIHJlbW90ZSBzdHViIHVu ZGVyc3RhbmRzIHRoZSBAc2FtcHtxWGZlcjptZW1vcnktbWFwOnJlYWR9IHBhY2tldAorIChAcHhy ZWZ7cVhmZXIgbWVtb3J5IG1hcCByZWFkfSkuCitAQCAtMzkwNjUsNyArMzkwODAsMTAgQEAKKyBA YW5jaG9ye3FYZmVyIHN2cjQgbGlicmFyeSBsaXN0IHJlYWR9CisgQWNjZXNzIHRoZSB0YXJnZXQn cyBsaXN0IG9mIGxvYWRlZCBsaWJyYXJpZXMgd2hlbiB0aGUgdGFyZ2V0IGlzIGFuIFNWUjQKKyBw bGF0Zm9ybS4gIEB4cmVme0xpYnJhcnkgTGlzdCBGb3JtYXQgZm9yIFNWUjQgVGFyZ2V0c30uICBU aGUgYW5uZXggcGFydAorLW9mIHRoZSBnZW5lcmljIEBzYW1we3FYZmVyfSBwYWNrZXQgbXVzdCBi ZSBlbXB0eSAoQHB4cmVme3FYZmVyIHJlYWR9KS4KKytvZiB0aGUgZ2VuZXJpYyBAc2FtcHtxWGZl cn0gcGFja2V0IG11c3QgYmUgZW1wdHkgdW5sZXNzIHRoZSByZW1vdGUKKytzdHViIGluZGljYXRl ZCBpdCBzdXBwb3J0cyB0aGUgYXVnbWVudGVkIGZvcm0gb2YgdGhpcyBwYWNrZXQKKytieSBzdXBw bHlpbmcgYW4gYXBwcm9wcmlhdGUgQHNhbXB7cVN1cHBvcnRlZH0gcmVzcG9uc2UKKysoQHB4cmVm e3FYZmVyIHJlYWR9LCBAcmVme3FTdXBwb3J0ZWR9KS4KKyAKKyBUaGlzIHBhY2tldCBpcyBvcHRp b25hbCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlIG9uIFNWUjQgdGFyZ2V0cy4gIAorIEB2YWx1ZXtH REJOfSB1c2VzIG1lbW9yeSByZWFkIHBhY2tldHMgdG8gcmVhZCB0aGUgU1ZSNCBsaWJyYXJ5IGxp c3Qgb3RoZXJ3aXNlLgorQEAgLTM5MDczLDYgKzM5MDkxLDMwIEBACisgVGhpcyBwYWNrZXQgaXMg bm90IHByb2JlZCBieSBkZWZhdWx0OyB0aGUgcmVtb3RlIHN0dWIgbXVzdCByZXF1ZXN0IGl0LAor IGJ5IHN1cHBseWluZyBhbiBhcHByb3ByaWF0ZSBAc2FtcHtxU3VwcG9ydGVkfSByZXNwb25zZSAo QHB4cmVme3FTdXBwb3J0ZWR9KS4KKyAKKytJZiB0aGUgcmVtb3RlIHN0dWIgaW5kaWNhdGVzIGl0 IHN1cHBvcnRzIHRoZSBhdWdtZW50ZWQgZm9ybSBvZiB0aGlzCisrcGFja2V0IHRoZW4gdGhlIGFu bmV4IHBhcnQgb2YgdGhlIGdlbmVyaWMgQHNhbXB7cVhmZXJ9IHBhY2tldCBtYXkKKytjb250YWlu IGEgc2VtaWNvbG9uLXNlcGFyYXRlZCBsaXN0IG9mIEBzYW1we0B2YXJ7bmFtZX09QHZhcnt2YWx1 ZX19CisrYXJndW1lbnRzLiAgVGhlIGN1cnJlbnRseSBzdXBwb3J0ZWQgYXJndW1lbnRzIGFyZToK KysKKytAdGFibGUgQGNvZGUKKytAaXRlbSBzdGFydD1AdmFye2FkZHJlc3N9CisrQSBoZXhhZGVj aW1hbCBudW1iZXIgc3BlY2lmeWluZyB0aGUgYWRkcmVzcyBvZiB0aGUgQHNhbXB7c3RydWN0Cisr bGlua19tYXB9IHRvIHN0YXJ0IHJlYWRpbmcgdGhlIGxpYnJhcnkgbGlzdCBmcm9tLiAgSWYgdW5z ZXQgb3IgemVybworK3RoZW4gdGhlIGZpcnN0IEBzYW1we3N0cnVjdCBsaW5rX21hcH0gaW4gdGhl IGxpYnJhcnkgbGlzdCB3aWxsIGJlCisrY2hvc2VuIGFzIHRoZSBzdGFydGluZyBwb2ludC4KKysK KytAaXRlbSBwcmV2PUB2YXJ7YWRkcmVzc30KKytBIGhleGFkZWNpbWFsIG51bWJlciBzcGVjaWZ5 aW5nIHRoZSBhZGRyZXNzIG9mIHRoZSBAc2FtcHtzdHJ1Y3QKKytsaW5rX21hcH0gaW1tZWRpYXRl bHkgcHJlY2VkaW5nIHRoZSBAc2FtcHtzdHJ1Y3QgbGlua19tYXB9Cisrc3BlY2lmaWVkIGJ5IHRo ZSBAc2FtcHtzdGFydH0gYXJndW1lbnQuICBJZiB1bnNldCBvciB6ZXJvIHRoZW4KKyt0aGUgcmVt b3RlIHN0dWIgd2lsbCBleHBlY3QgdGhhdCBubyBAc2FtcHtzdHJ1Y3QgbGlua19tYXB9CisrZXhp c3RzIHByaW9yIHRvIHRoZSBzdGFydGluZyBwb2ludC4KKysKKytAZW5kIHRhYmxlCisrCisrQXJn dW1lbnRzIHRoYXQgYXJlIG5vdCB1bmRlcnN0b29kIGJ5IHRoZSByZW1vdGUgc3R1YiB3aWxsIGJl IHNpbGVudGx5CisraWdub3JlZC4KKysKKyBAaXRlbSBxWGZlcjptZW1vcnktbWFwOnJlYWQ6OkB2 YXJ7b2Zmc2V0fSxAdmFye2xlbmd0aH0KKyBAYW5jaG9ye3FYZmVyIG1lbW9yeSBtYXAgcmVhZH0K KyBBY2Nlc3MgdGhlIHRhcmdldCdzIEBkZm57bWVtb3J5LW1hcH0uICBAeHJlZntNZW1vcnkgTWFw IEZvcm1hdH0uICBUaGUKCmRpZmYgLS1naXQgYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUtNm9mNy5w YXRjaCBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS02b2Y3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCA1MDBhYjM0Li4wMDAwMDAwCi0tLSBhL2dkYi1kbG9wZW4tc3RhcC1wcm9i ZS02b2Y3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcwICswLDAgQEAKLWh0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEzLTA1L21zZzAwNjMxLmh0bWwKLVN1YmplY3Q6 IFtSRkEgNi83XSBMaW5rZXItZGVidWdnZXIgaW50ZXJmYWNlIHRlc3RzIGJ5IEphbgotCi0KLS0t SVlWOWNScjJ1NnJqY1A0QgotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFz Y2lpCi1Db250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmUKLQotVGhpcyBwYXRjaCB1cGRhdGVzIHRo ZSB0ZXN0c3VpdGUgdG8gY29wZSB3aXRoIHNvbWUgY2hhbmdlcyByZXN1bHRpbmcKLWZyb20gdGhl IHByb2Jlcy1iYXNlZCBpbnRlcmZhY2UsIGFuZCBhZGRzIGEgbmV3IHRlc3QuICBUaGlzIHBhdGNo IGlzCi1wcmluY2lwYWxseSB0aGUgd29yayBvZiBKYW4gS3JhdG9jaHZpbC4KLQotLS1JWVY5Y1Jy MnU2cmpjUDRCCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkKLUNv bnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSJydGxkLXByb2Jlcy02LXRl c3RzLWprLnBhdGNoIgotCi0yMDEzLTA1LTE2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0JICAgIEdhcnkgQmVuc29uICA8Z2JlbnNvbkByZWRoYXQuY29tPgot Ci0JKiBsaWIvZ2RiLmV4cCAoYnVpbGRfZXhlY3V0YWJsZV9mcm9tX3NwZWNzKTogVXNlIGdkYl9j b21waWxlX3B0aHJlYWQsCi0JZ2RiX2NvbXBpbGVfc2hsaWIgb3IgZ2RiX2NvbXBpbGVfc2hsaWJf cHRocmVhZHMgd2hlcmUgYXBwcm9wcmlhdGUuCi0JKiBsaWIvcHJlbGluay1zdXBwb3J0LmV4cCAo YnVpbGRfZXhlY3V0YWJsZV9vd25fbGlicyk6IEFsbG93IElOVEVSUAotCXRvIGJlIHNldCB0byAi bm8iIHRvIGluZGljYXRlIHRoYXQgbm8gbGQuc28gY29weSBzaG91bGQgYmUgbWFkZS4KLQkqIGdk Yi5iYXNlL2JyZWFrLWludGVycC5leHAgKHNvbGliX2JwKTogTmV3IGNvbnN0YW50LgotCShyZWFj aF8xKTogVXNlIHRoZSBhYm92ZSBpbnN0ZWFkIG9mICJfZGxfZGVidWdfc3RhdGUiLgotCSh0ZXN0 X2F0dGFjaCk6IExpa2V3aXNlLgotCSh0ZXN0X2xkKTogTGlrZXdpc2UuCi0JKiBnZGIudGhyZWFk cy9kbG9wZW4tbGlicHRocmVhZC5leHA6IE5ldyBmaWxlLgotCSogZ2RiLnRocmVhZHMvZGxvcGVu LWxpYnB0aHJlYWQuYzogTGlrZXdpc2UuCi0JKiBnZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVh ZC1saWIuYzogTGlrZXdpc2UuCi0JKiBnZGIuYmFzZS9zb2xpYi1jb3JydXB0ZWQuZXhwOiBEaXNh YmxlIHRlc3QgaWYgR0RCIGlzIHVzaW5nIHByb2Jlcy4KLQotSW5kZXg6IGdkYi03LjYvZ2RiL3Rl c3RzdWl0ZS9saWIvZ2RiLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvdGVz dHN1aXRlL2xpYi9nZGIuZXhwCTIwMTMtMDUtMTkgMTY6MDU6MzcuODgxODQwNjQ2ICswMjAwCi0r KysgZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTMtMDUtMTkgMTY6MDY6MTAu NDM2ODIyOTY0ICswMjAwCi1AQCAtNDAxMSwyMiArNDAxMSw2IEBAIHByb2MgYnVpbGRfZXhlY3V0 YWJsZV9mcm9tX3NwZWNzIHt0ZXN0bmEKLSAKLSAgICAgc2V0IGJpbmZpbGUgW3N0YW5kYXJkX291 dHB1dF9maWxlICRleGVjdXRhYmxlXQotIAotLSAgICBzZXQgb2JqZWN0cyB7fQotLSAgICBzZXQg aSAwCi0tICAgIGZvcmVhY2gge3MgbG9jYWxfb3B0aW9uc30gJGFyZ3MgewotLSAgICAgICAgaWYg IHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c30iICIke2JpbmZpbGV9JHtp fS5vIiBvYmplY3QgJGxvY2FsX29wdGlvbnNdICE9ICIiIH0gewotLSAgICAgICAgICAgIHVudGVz dGVkICR0ZXN0bmFtZQotLSAgICAgICAgICAgIHJldHVybiAtMQotLSAgICAgICAgfQotLSAgICAg ICAgbGFwcGVuZCBvYmplY3RzICIke2JpbmZpbGV9JHtpfS5vIgotLQlpbmNyIGkKLS0gICAgfQot LSAgICAKLS0gICAgaWYgIHsgW2dkYl9jb21waWxlICRvYmplY3RzICIke2JpbmZpbGV9IiBleGVj dXRhYmxlICRvcHRpb25zXSAhPSAiIiB9IHsKLS0gICAgICAgIHVudGVzdGVkICR0ZXN0bmFtZQot LSAgICAgICAgcmV0dXJuIC0xCi0tICAgIH0KLS0KLSAgICAgc2V0IGluZm9fb3B0aW9ucyAiIgot ICAgICBpZiB7IFtsc2VhcmNoIC1leGFjdCAkb3B0aW9ucyAiYysrIl0gPj0gMCB9IHsKLSAJc2V0 IGluZm9fb3B0aW9ucyAiYysrIgotQEAgLTQwMzQsNiArNDAxOCw0MiBAQCBwcm9jIGJ1aWxkX2V4 ZWN1dGFibGVfZnJvbV9zcGVjcyB7dGVzdG5hCi0gICAgIGlmIFtnZXRfY29tcGlsZXJfaW5mbyAk e2luZm9fb3B0aW9uc31dIHsKLSAgICAgICAgIHJldHVybiAtMQotICAgICB9Ci0rCi0rICAgIHNl dCBiaW5maWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAkZXhlY3V0YWJsZV0KLSsKLSsgICAgc2V0 IGZ1bmMgZ2RiX2NvbXBpbGUKLSsgICAgc2V0IGZ1bmNfaW5kZXggW2xzZWFyY2ggLXJlZ2V4cCAk b3B0aW9ucyB7XihwdGhyZWFkc3xzaGxpYnxzaGxpYl9wdGhyZWFkcykkfV0KLSsgICAgaWYgeyRm dW5jX2luZGV4ICE9IC0xfSB7Ci0rCXNldCBmdW5jICIke2Z1bmN9X1tsaW5kZXggJG9wdGlvbnMg JGZ1bmNfaW5kZXhdIgotKyAgICB9Ci0rCi0rICAgICMgZ2RiX2NvbXBpbGVfc2hsaWIgYW5kIGdk Yl9jb21waWxlX3NobGliX3B0aHJlYWRzIGRvIG5vdCB1c2UgdGhlIDNyZAotKyAgICAjIHBhcmFt ZXRlci4gIFRoZXkgYWxzbyByZXF1aXJlcyAkc291cmNlcyB3aGlsZSBnZGJfY29tcGlsZSBhbmQK LSsgICAgIyBnZGJfY29tcGlsZV9wdGhyZWFkcyByZXF1aXJlICRvYmplY3RzLiAgTW9yZW92ZXIg dGhleSBpZ25vcmUgYW55IG9wdGlvbnMuCi0rICAgIGlmIFtzdHJpbmcgbWF0Y2ggZ2RiX2NvbXBp bGVfc2hsaWIqICRmdW5jXSB7Ci0rCXNldCBzb3VyY2VzX3BhdGgge30KLSsJZm9yZWFjaCB7cyBs b2NhbF9vcHRpb25zfSAkYXJncyB7Ci0rCSAgICBsYXBwZW5kIHNvdXJjZXNfcGF0aCAiJHtzcmNk aXJ9LyR7c3ViZGlyfS8ke3N9IgotKwl9Ci0rCXNldCByZXQgWyRmdW5jICRzb3VyY2VzX3BhdGgg IiR7YmluZmlsZX0iICRvcHRpb25zXQotKyAgICB9IGVsc2UgewotKwlzZXQgb2JqZWN0cyB7fQot KwlzZXQgaSAwCi0rCWZvcmVhY2gge3MgbG9jYWxfb3B0aW9uc30gJGFyZ3MgewotKwkgICAgaWYg IHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c30iICIke2JpbmZpbGV9JHtp fS5vIiBvYmplY3QgJGxvY2FsX29wdGlvbnNdICE9ICIiIH0gewotKwkJdW50ZXN0ZWQgJHRlc3Ru YW1lCi0rCQlyZXR1cm4gLTEKLSsJICAgIH0KLSsJICAgIGxhcHBlbmQgb2JqZWN0cyAiJHtiaW5m aWxlfSR7aX0ubyIKLSsJICAgIGluY3IgaQotKwl9Ci0rCXNldCByZXQgWyRmdW5jICRvYmplY3Rz ICIke2JpbmZpbGV9IiBleGVjdXRhYmxlICRvcHRpb25zXQotKyAgICB9Ci0rICAgIGlmICB7ICRy ZXQgIT0gIiIgfSB7Ci0rICAgICAgICB1bnRlc3RlZCAkdGVzdG5hbWUKLSsgICAgICAgIHJldHVy biAtMQotKyAgICB9Ci0rCi0gICAgIHJldHVybiAwCi0gfQotIAotSW5kZXg6IGdkYi03LjYvZ2Ri L3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjYub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIwMTMtMDUtMTkg MTY6MDU6MzcuODgxODQwNjQ2ICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2xpYi9w cmVsaW5rLXN1cHBvcnQuZXhwCTIwMTMtMDUtMTkgMTY6MDU6MzkuMTAwODM5OTgwICswMjAwCi1A QCAtOTUsOCArOTUsOSBAQCBwcm9jIGZpbGVfY29weSB7c3JjIGRlc3R9IHsKLSAjIFdyYXAgZnVu Y3Rpb24gYnVpbGRfZXhlY3V0YWJsZSBzbyB0aGF0IHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSBp cyBmdWxseQotICMgc2VsZi1zdWZmaWNpZW50ICh3aXRob3V0IGRlcGVuZGVuY2llcyBvbiBzeXN0 ZW0gbGlicmFyaWVzKS4gIFBhcmFtZXRlcgotICMgSU5URVJQIG1heSBiZSB1c2VkIHRvIHNwZWNp ZnkgYSBsb2FkZXIgKGxkLnNvKSB0byBiZSB1c2VkIHRoYXQgaXMKLS0jIGRpZmZlcmVudCBmcm9t IHRoZSBkZWZhdWx0IHN5c3RlbSBvbmUuICBMaWJyYXJpZXMgb24gd2hpY2ggdGhlIGV4ZWN1dGFi bGUKLS0jIGRlcGVuZHMgYXJlIGNvcGllZCBpbnRvIGRpcmVjdG9yeSBESVIuICBEZWZhdWx0IERJ UiB2YWx1ZSB0bwotKyMgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQgc3lzdGVtIG9uZS4gIElO VEVSUCBjYW4gYmUgc2V0IHRvICJubyIgaWYgbm8gbGQuc28KLSsjIGNvcHkgc2hvdWxkIGJlIG1h ZGUuICBMaWJyYXJpZXMgb24gd2hpY2ggdGhlIGV4ZWN1dGFibGUgZGVwZW5kcyBhcmUgY29waWVk Ci0rIyBpbnRvIGRpcmVjdG9yeSBESVIuICBEZWZhdWx0IERJUiB2YWx1ZSB0bwotICMgYCR7b2Jq ZGlyfS8ke3N1YmRpcn0vJHtFWEVDVVRBQkxFfS5kJy4KLSAjCi0gIyBJbiBjYXNlIG9mIHN1Y2Nl c3MsIHJldHVybiBhIHN0cmluZyBjb250YWluaW5nIHRoZSBhcmd1bWVudHMgdG8gYmUgdXNlZAot QEAgLTE1MSw4ICsxNTIsMTUgQEAgcHJvYyBidWlsZF9leGVjdXRhYmxlX293bl9saWJzIHt0ZXN0 bmFtZQotIAotICAgICBpZiB7JGludGVycCA9PSAiIn0gewotIAlzZXQgaW50ZXJwX3N5c3RlbSBb c2VjdGlvbl9nZXQgJGJpbmZpbGUgLmludGVycF0KLS0Jc2V0IGludGVycCAke2Rpcn0vW2ZpbGUg dGFpbCAkaW50ZXJwX3N5c3RlbV0KLS0JZmlsZV9jb3B5ICRpbnRlcnBfc3lzdGVtICRpbnRlcnAK LSsJaWYgeyRpbnRlcnBfc3lzdGVtID09ICIifSB7Ci0rCSAgICBmYWlsICIkdGVzdCBjb3VsZCBu b3QgZmluZCAuaW50ZXJwIgotKwl9IGVsc2UgewotKwkgICAgc2V0IGludGVycCAke2Rpcn0vW2Zp bGUgdGFpbCAkaW50ZXJwX3N5c3RlbV0KLSsJICAgIGZpbGVfY29weSAkaW50ZXJwX3N5c3RlbSAk aW50ZXJwCi0rCX0KLSsgICAgfQotKyAgICBpZiB7JGludGVycCA9PSAibm8ifSB7Ci0rCXNldCBp bnRlcnAgIiIKLSAgICAgfQotIAotICAgICBzZXQgZGVzdHMge30KLUBAIC0xNjQsMTMgKzE3Miwx OSBAQCBwcm9jIGJ1aWxkX2V4ZWN1dGFibGVfb3duX2xpYnMge3Rlc3RuYW1lCi0gCi0gICAgICMg RG8gbm90IGxhcHBlbmQgaXQgc28gdGhhdCAiLXJwYXRoICRkaXIiIG92ZXJyaWRlcyBhbnkgcG9z c2libGUgIi1ycGF0aCJzCi0gICAgICMgc3BlY2lmaWVkIGJ5IHRoZSBjYWxsZXIgdG8gYmUgYWJs ZSB0byBsaW5rIGl0IGZvciBsZGQiIGFib3ZlLgotLSAgICBzZXQgb3B0aW9ucyBbbGluc2VydCAk b3B0aW9ucyAwICJsZGZsYWdzPS1XbCwtLWR5bmFtaWMtbGlua2VyLCRpbnRlcnAsLXJwYXRoLCRk aXIiXQotKyAgICBzZXQgb3B0aW9ucyBbbGluc2VydCAkb3B0aW9ucyAwICJsZGZsYWdzPS1XbCwt cnBhdGgsJGRpciJdCi0rICAgIGlmIHskaW50ZXJwICE9ICIifSB7Ci0rCXNldCBvcHRpb25zIFts aW5zZXJ0ICRvcHRpb25zIDAgImxkZmxhZ3M9LVdsLC0tZHluYW1pYy1saW5rZXIsJGludGVycCJd Ci0rICAgIH0KLSAKLSAgICAgaWYge1tidWlsZF9leGVjdXRhYmxlICR0ZXN0bmFtZSAkZXhlY3V0 YWJsZSAkc291cmNlcyAkb3B0aW9uc10gPT0gLTF9IHsKLSAJcmV0dXJuICIiCi0gICAgIH0KLSAK LS0gICAgc2V0IHByZWxpbmtfYXJncyAiLS1keW5hbWljLWxpbmtlcj0kaW50ZXJwIC0tbGQtbGli cmFyeS1wYXRoPSRkaXIgJGJpbmZpbGUgJGludGVycCBbY29uY2F0ICRkZXN0c10iCi0rICAgIHNl dCBwcmVsaW5rX2FyZ3MgIi0tbGQtbGlicmFyeS1wYXRoPSRkaXIgJGJpbmZpbGUgW2NvbmNhdCAk ZGVzdHNdIgotKyAgICBpZiB7JGludGVycCAhPSAiIn0gewotKwlzZXQgcHJlbGlua19hcmdzICIt LWR5bmFtaWMtbGlua2VyPSRpbnRlcnAgJHByZWxpbmtfYXJncyAkaW50ZXJwIgotKyAgICB9Ci0g ICAgIHJldHVybiAkcHJlbGlua19hcmdzCi0gfQotIAotSW5kZXg6IGdkYi03LjYvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5v cmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAkyMDEzLTA1LTE5IDE2 OjA1OjM3Ljg4Mjg0MDY0NiArMDIwMAotKysrIGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9icmVhay1pbnRlcnAuZXhwCTIwMTMtMDUtMTkgMTY6MDU6MzkuMTAxODM5OTc5ICswMjAwCi1A QCAtMTA5LDEyICsxMDksMTkgQEAgcHJvYyBzdHJpcF9kZWJ1ZyB7ZGVzdH0gewotICAgICB9Ci0g fQotIAotKyMgVGhlIG1hcmtlciBmdW5jdGlvbiBmb3IgdGhlIHN0YW5kYXJkIHJ1bnRpbWUgbGlu a2VyIGludGVyZmFjZSBpcwotKyMgX2RsX2RlYnVnX3N0YXRlLiAgVGhlIHByb2Jlcy1iYXNlZCBp bnRlcmZhY2UgaGFzIG5vIHNwZWNpZmljIG1hcmtlcgotKyMgZnVuY3Rpb247IHRoZSBwcm9iZSB3 ZSB3aWxsIHN0b3Agb24gKGluaXRfc3RhcnQpIGlzIGluIGRsX21haW4gc28gd2UKLSsjIGNoZWNr IGZvciB0aGF0LgotKwotK3NldCBzb2xpYl9icCB7KF9kbF9kZWJ1Z19zdGF0ZXxkbF9tYWluKX0K LSsKLSAjIEltcGxlbWVudGF0aW9uIG9mIHJlYWNoLgotIAotIHByb2MgcmVhY2hfMSB7ZnVuYyBj b21tYW5kIGRpc3BsYWNlbWVudH0gewotLSAgICBnbG9iYWwgZ2RiX3Byb21wdCBleHBlY3Rfb3V0 Ci0rICAgIGdsb2JhbCBnZGJfcHJvbXB0IGV4cGVjdF9vdXQgc29saWJfYnAKLSAKLS0gICAgaWYg eyRmdW5jID09ICJfZGxfZGVidWdfc3RhdGUifSB7Ci0rICAgIGlmIHskZnVuYyA9PSAkc29saWJf YnB9IHsKLSAJIyBCcmVha3BvaW50IG9uIF9kbF9kZWJ1Z19zdGF0ZSBjYW4gaGF2ZSBwcm9ibGVt cyBkdWUgdG8gaXRzIG92ZXJsYXAKLSAJIyB3aXRoIHRoZSBleGlzdGluZyBpbnRlcm5hbCBicmVh a3BvaW50IGZyb20gR0RCLgotIAlnZGJfdGVzdF9ub19vdXRwdXQgInNldCBzdG9wLW9uLXNvbGli LWV2ZW50cyAxIgotQEAgLTE0MiwyMSArMTQ5LDIxIEBAIHByb2MgcmVhY2hfMSB7ZnVuYyBjb21t YW5kIGRpc3BsYWNlbWVudH0KLSAJICAgIGV4cF9jb250aW51ZQotIAl9Ci0gCS1yZSAiQnJlYWtw b2ludCBcWzAtOVxdKywgXFwuPyhfX0dJXyk/JGZ1bmMgXFwoLipcXCkgYXQgLio6XFswLTlcXStc clxuLiokZ2RiX3Byb21wdCAkIiB7Ci0tCSAgICBpZiB7JGZ1bmMgPT0gIl9kbF9kZWJ1Z19zdGF0 ZSJ9IHsKLSsJICAgIGlmIHskZnVuYyA9PSAkc29saWJfYnB9IHsKLSAJCWZhaWwgJHRlc3QKLSAJ ICAgIH0gZWxzZSB7Ci0gCQlwYXNzICR0ZXN0Ci0gCSAgICB9Ci0gCX0KLSAJLXJlICJCcmVha3Bv aW50IFxbMC05XF0rLCBcWzAtOXhhLWZcXSsgaW4gXFwuPyhfX0dJXyk/JGZ1bmMgXFwoXFwpLipc clxuJGdkYl9wcm9tcHQgJCIgewotLQkgICAgaWYgeyRmdW5jID09ICJfZGxfZGVidWdfc3RhdGUi fSB7Ci0rCSAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7Ci0gCQlmYWlsICR0ZXN0Ci0gCSAg ICB9IGVsc2UgewotIAkJcGFzcyAkdGVzdAotIAkgICAgfQotIAl9Ci0gCS1yZSAiU3RvcHBlZCBk dWUgdG8gKHNwdXJpb3VzICk/c2hhcmVkIGxpYnJhcnkgZXZlbnQuKlxyXG4kZ2RiX3Byb21wdCAk IiB7Ci0tCSAgICBpZiB7JGZ1bmMgPT0gIl9kbF9kZWJ1Z19zdGF0ZSJ9IHsKLSsJICAgIGlmIHsk ZnVuYyA9PSAkc29saWJfYnB9IHsKLSAJCWlmIHskZGVidWdfc3RhdGVfY291bnQgPT0gMH0gewot IAkJICAgICMgRmlyc3Qgc3RvcCBkb2VzIG5vdCB5ZXQgcmVsb2NhdGUgdGhlIF9zdGFydCBmdW5j dGlvbgotIAkJICAgICMgZGVzY3JpcHRvciBvbiBwcGM2NC4KLUBAIC0xNzUsNyArMTgyLDcgQEAg cHJvYyByZWFjaF8xIHtmdW5jIGNvbW1hbmQgZGlzcGxhY2VtZW50fQotIAlmYWlsICR0ZXN0X2Rp c3BsYWNlbWVudAotICAgICB9Ci0gCi0tICAgIGlmIHskZnVuYyA9PSAiX2RsX2RlYnVnX3N0YXRl In0gewotKyAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7Ci0gCWdkYl90ZXN0X25vX291dHB1 dCAic2V0IHN0b3Atb24tc29saWItZXZlbnRzIDAiCi0gICAgIH0KLSB9Ci1AQCAtMzU3LDcgKzM2 NCw3IEBAIHByb2MgdGVzdF9hdHRhY2gge2ZpbGUgZGlzcGxhY2VtZW50IHtyZWwKLSB9Ci0gCi0g cHJvYyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bSBkaXNwbGFjZW1lbnR9IHsKLS0gICAg Z2xvYmFsIHNyY2RpciBzdWJkaXIgZ2RiX3Byb21wdCBleHBlY3Rfb3V0IGluZmVyaW9yX2V4aXRl ZF9yZQotKyAgICBnbG9iYWwgc3JjZGlyIHN1YmRpciBnZGJfcHJvbXB0IGV4cGVjdF9vdXQgaW5m ZXJpb3JfZXhpdGVkX3JlIHNvbGliX2JwCi0gCi0gICAgICMgRmlyc3QgdGVzdCBub3JtYWwgYGZp bGUnLWNvbW1hbmQgbG9hZGVkICRGSUxFIHdpdGggc3ltYm9scy4KLSAKLUBAIC0zODUsOSArMzky LDkgQEAgcHJvYyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bSBkaXNwbAotIAlnZGJfdGVz dF9ub19vdXRwdXQgInNldCBhcmdzICR7b2JqZGlyfS8ke3N1YmRpcn0vJGJpbmZpbGVfdGVzdCIg InNldCBhcmdzIE9CSkRJUi8ke3N1YmRpcn0vJGJpbmZpbGVfdGVzdCIKLSAgICAgfQotIAotLSAg ICByZWFjaCAiX2RsX2RlYnVnX3N0YXRlIiAicnVuIiAkZGlzcGxhY2VtZW50Ci0rICAgIHJlYWNo ICRzb2xpYl9icCAicnVuIiAkZGlzcGxhY2VtZW50Ci0gCi0tICAgIGdkYl90ZXN0ICJidCIgIiMw ICtcW15cclxuXF0qXFxtKF9fR0lfKT9fZGxfZGVidWdfc3RhdGVcXE0uKiIgImRsIGJ0IgotKyAg ICBnZGJfdGVzdCAiYnQiICIjMCArXFteXHJcblxdKlxcbShfX0dJXyk/JHNvbGliX2JwXFxNLioi ICJkbCBidCIKLSAKLSAgICAgaWYgJGlmbWFpbiB7Ci0gCXJlYWNoICJtYWluIiBjb250aW51ZSAi Tk9ORSIKLUBAIC0zOTksNyArNDA2LDcgQEAgcHJvYyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlu b3N5bSBkaXNwbAotIAotICAgICAjIFRyeSByZS1ydW4gaWYgdGhlIG5ldyBQSUUgZGlzcGxhY2Vt ZW50IHRha2VzIGVmZmVjdC4KLSAgICAgZ2RiX3Rlc3QgImtpbGwiICIiICJraWxsIiB7S2lsbCB0 aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZFw/IFwoeSBvciBuXCkgfSAieSIKLS0gICAgcmVhY2gg Il9kbF9kZWJ1Z19zdGF0ZSIgInJ1biIgJGRpc3BsYWNlbWVudAotKyAgICByZWFjaCAkc29saWJf YnAgInJ1biIgJGRpc3BsYWNlbWVudAotIAotICAgICBpZiAkaWZtYWluIHsKLSAJdGVzdF9jb3Jl ICRmaWxlICRkaXNwbGFjZW1lbnQKLUBAIC00MzEsNyArNDM4LDcgQEAgcHJvYyB0ZXN0X2xkIHtm aWxlIGlmbWFpbiB0cnlub3N5bSBkaXNwbAotIAlnZGJfdGVzdCAiZXhlYy1maWxlICRmaWxlIiAi ZXhlYy1maWxlICRlc2NhcGVkZmlsZSIgImxvYWQiCi0gCi0gCWlmICRpZm1haW4gewotLQkgICAg cmVhY2ggIl9kbF9kZWJ1Z19zdGF0ZSIgcnVuICRkaXNwbGFjZW1lbnQKLSsJICAgIHJlYWNoICRz b2xpYl9icCBydW4gJGRpc3BsYWNlbWVudAotIAotIAkgICAgIyBVc2UgdHdvIHNlcGFyYXRlIGdk Yl90ZXN0X211bHRpcGxlIHN0YXRlbWVudHMgdG8gYXZvaWQgdGltZW91dHMgZHVlCi0gCSAgICAj IHRvIHNsb3cgcHJvY2Vzc2luZyBvZiB3aWxkY2FyZCBjYXB0dXJpbmcgbG9uZyBvdXRwdXQKLUlu ZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQu ZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1s aWJwdGhyZWFkLmV4cAkyMDEzLTA1LTE5IDE2OjA1OjM5LjEwMTgzOTk3OSArMDIwMAotQEAgLTAs MCArMSw3NCBAQAotKyMgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpZiB7IVtpc3Rhcmdl dCAqLWxpbnV4Kl0gfHwgW3NraXBfc2hsaWJfdGVzdHNdfSB7Ci0rICAgIHJldHVybiAwCi0rfQot KwotK2xvYWRfbGliIHByZWxpbmstc3VwcG9ydC5leHAKLSsKLStzZXQgdGVzdGZpbGUgImRsb3Bl bi1saWJwdGhyZWFkIgotK3NldCBzcmNtYWluZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IHNyY2xp YmZpbGUgJHt0ZXN0ZmlsZX0tbGliLmMKLStzZXQgZXhlY3V0YWJsZSAke3Rlc3RmaWxlfQotK3Nl dCBiaW5maWxlX2xpYiAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0uc28KLStzZXQg YmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0KLStzZXQgbGliX2Rsb3Bl biBbc2hsaWJfdGFyZ2V0X2ZpbGUgJHtleGVjdXRhYmxlfS5zb10KLSsKLSsjIFVzZSBidWlsZF9l eGVjdXRhYmxlX293bl9saWJzIGFzIHByZWxpbmtlZCBsaWJwdGhyZWFkLnNvIGNhbiBwcm9kdWNl IGZhbHNlCi0rIyBQQVNTIC0gaXQgaXMgT0sgaWYgR0RCIHByb2Nlc3NlcyBpdCBzdGlsbCBiZWZv cmUgcmVsb2NhdGlvbi4KLSsKLStzZXQgcmVsaW5rX2FyZ3MgW2J1aWxkX2V4ZWN1dGFibGVfb3du X2xpYnMgJHt0ZXN0ZmlsZX0uZXhwICR7ZXhlY3V0YWJsZX0uc28gJHNyY2xpYmZpbGUge2RlYnVn IHNobGliX3B0aHJlYWRzfSBub10KLStpZiB7JHJlbGlua19hcmdzID09ICIiIHx8ICFbcHJlbGlu a19ubyAkcmVsaW5rX2FyZ3NdCi0rICAgIHx8IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZp bGV9LmV4cCAke2V4ZWN1dGFibGV9ICR7c3JjbWFpbmZpbGV9IHtkZWJ1ZyBzaGxpYl9sb2FkfV0g fSB7Ci0rICAgIHJldHVybiAtMQotK30KLStnZGJfbG9hZF9zaGxpYnMgJGJpbmZpbGVfbGliCi0r Ci0raWYgeyAhW3J1bnRvX21haW5dIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rc2V0IHRl c3QgImluZm8gcHJvYmVzIGFsbCBydGxkIHJ0bGRfbWFwX2NvbXBsZXRlIgotK2dkYl90ZXN0X211 bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJcWyBcdFxdcnRsZF9tYXBfY29tcGxldGVc WyBcdFxdKzB4XFswLTlhLWZcXSsuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QK LSsgICAgfQotKyAgICAtcmUgIk5vIHByb2JlcyBtYXRjaGVkXFwuXHJcbiRnZGJfcHJvbXB0ICQi IHsKLSsJeGZhaWwgJHRlc3QKLSsJdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0uZXhwCi0rCXJldHVybgot KyAgICB9Ci0rfQotKwotK3NldCB0ZXN0ICJsaWJwdGhyZWFkLnNvIG5vdCBmb3VuZCIKLStnZGJf dGVzdF9tdWx0aXBsZSAiaW5mbyBzaGFyZWRsaWJyYXJ5IiAkdGVzdCB7Ci0rICAgIC1yZSAiL2xp YnB0aHJlYWRcXC5zby4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJZmFpbCAkdGVzdAotKyAgICB9 Ci0rICAgIC1yZSAiL2xpYmNcXC5zby4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVz dAotKyAgICB9Ci0rfQotKwotK2dkYl90ZXN0ICJzZXQgdmFyaWFibGUgZmlsZW5hbWU9XCIkbGli X2Rsb3BlblwiIgotKwotK2dkYl9icmVha3BvaW50ICJub3RpZnkiCi0rCi0rIyBUaGUgZXJyb3Ig d2FzOgotKyMgQ2Fubm90IGZpbmQgbmV3IHRocmVhZHM6IGdlbmVyaWMgZXJyb3IKLStnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAibm90aWZ5IiAiLiogbm90aWZ5LWhlcmUgLioiCi0rCi0rZ2Ri X3Rlc3QgImluZm8gc2hhcmVkbGlicmFyeSIgey9saWJwdGhyZWFkXC5zby4qfSAibGlicHRocmVh ZC5zbyBmb3VuZCIKLUluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxv cGVuLWxpYnB0aHJlYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy9kbG9wZW4tbGlicHRocmVhZC5jCTIwMTMtMDUtMTkgMTY6MDU6MzkuMTAxODM5OTc5ICsw MjAwCi1AQCAtMCwwICsxLDQ2IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwg dGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCi0rCi0rI2luY2x1ZGUgPGRsZmNuLmg+Ci0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyNpbmNs dWRlIDxhc3NlcnQuaD4KLSsKLStzdGF0aWMgY29uc3QgY2hhciAqdm9sYXRpbGUgZmlsZW5hbWU7 Ci0rCi0rc3RhdGljIHZvaWQKLStub3RpZnkgKHZvaWQpCi0rewotKyAgZmlsZW5hbWUgPSBOVUxM OyAvKiBub3RpZnktaGVyZSAqLwotK30KLSsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIHZv aWQgKmg7Ci0rICB2b2lkICgqZnApICh2b2lkICgqKSAodm9pZCkpOwotKwotKyAgYXNzZXJ0IChm aWxlbmFtZSAhPSBOVUxMKTsKLSsgIGggPSBkbG9wZW4gKGZpbGVuYW1lLCBSVExEX0xBWlkpOwot KyAgYXNzZXJ0IChoICE9IE5VTEwpOwotKwotKyAgZnAgPSBkbHN5bSAoaCwgImYiKTsKLSsgIGFz c2VydCAoZnAgIT0gTlVMTCk7Ci0rCi0rICBmcCAobm90aWZ5KTsKLSsKLSsgIHJldHVybiAwOwot K30KLUluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0 aHJlYWQtbGliLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv ZGxvcGVuLWxpYnB0aHJlYWQtbGliLmMJMjAxMy0wNS0xOSAxNjowNTozOS4xMDE4Mzk5NzkgKzAy MDAKLUBAIC0wLDAgKzEsNDAgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0 aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KLSsKLSsjaW5jbHVkZSA8cHRocmVhZC5oPgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsKLStz dGF0aWMgdm9pZCAqCi0rdGZ1bmMgKHZvaWQgKmFyZykKLSt7Ci0rICB2b2lkICgqbm90aWZ5cCkg KHZvaWQpID0gYXJnOwotKwotKyAgbm90aWZ5cCAoKTsKLSt9Ci0rCi0rdm9pZAotK2YgKHZvaWQg KCpub3RpZnlwKSAodm9pZCkpCi0rewotKyAgcHRocmVhZF90IHQ7Ci0rICBpbnQgaTsKLSsKLSsg IGkgPSBwdGhyZWFkX2NyZWF0ZSAoJnQsIE5VTEwsIHRmdW5jLCBub3RpZnlwKTsKLSsgIGFzc2Vy dCAoaSA9PSAwKTsKLSsKLSsgIGkgPSBwdGhyZWFkX2pvaW4gKHQsIE5VTEwpOwotKyAgYXNzZXJ0 IChpID09IDApOwotK30KLUluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc29s aWItY29ycnVwdGVkLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3NvbGliLWNvcnJ1cHRlZC5leHAJMjAxMy0wNS0xOSAxNjowNTozNy44ODM4 NDA2NDUgKzAyMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc29saWItY29y cnVwdGVkLmV4cAkyMDEzLTA1LTE5IDE2OjA1OjM5LjEwMjgzOTk3OCArMDIwMAotQEAgLTM2LDYg KzM2LDMzIEBAIGlmICFbcnVudG9fbWFpbl0gewotICAgICByZXR1cm4KLSB9Ci0gCi0rIyBXaXRo IHByb2JlcyBpbnRlcmZhY2UgR0RCIG5vIGxvbmdlciBzY2FucyB0aGUgaW5mZXJpb3IgbGlicmFy eSBsaXN0IHNvIGl0cwotKyMgY29ycnVwdGlvbiBjYW5ub3QgYmUgdGVzdGVkLiAgVGhlcmUgaXMg bm8gd2F5IHRvIGRpc2FibGUgdGhlIHByb2JlcwotKyMgaW50ZXJmYWNlLgotKwotK3NldCBwcm9i ZXMgeyBpbml0X3N0YXJ0IGluaXRfY29tcGxldGUgbWFwX3N0YXJ0IHJlbG9jX2NvbXBsZXRlIHVu bWFwX3N0YXJ0Ci0rCSAgICAgdW5tYXBfY29tcGxldGUgfQotK3NldCB0ZXN0ICJpbmZvIHByb2Jl cyIKLStnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0rICAgIC1yZSAiXnJ0bGRcWyBc dFxdKyg/OnJ0bGRfKT8oXFthLXpfXF0rKVxbIFx0XF0iIHsKLSsJc2V0IGlkeCBbbHNlYXJjaCAt ZXhhY3QgJHByb2JlcyAkZXhwZWN0X291dCgxLHN0cmluZyldCi0rCWlmIHsgJGlkeCA+PSAwIH0g ewotKwkgICAgc2V0IHByb2JlcyBbbHJlcGxhY2UgJHByb2JlcyAkaWR4ICRpZHhdCi0rCX0KLSsJ ZXhwX2NvbnRpbnVlCi0rICAgIH0KLSsgICAgLXJlICJeXFteXHJcblxdKlxyXG4iIHsKLSsJZXhw X2NvbnRpbnVlCi0rICAgIH0KLSsgICAgLXJlICJeJGdkYl9wcm9tcHQgJCIgewotKyAgICB9Ci0r fQotK2lmIHsgW2xsZW5ndGggJHByb2Jlc10gPT0gMCB9IHsKLSsgICAgeGZhaWwgJHRlc3QKLSsg ICAgdW50ZXN0ZWQgIkdEQiBpcyB1c2luZyBwcm9iZXMiCi0rICAgIHJldHVybgotK30KLSsKLSBn ZGJfdGVzdCAiaW5mbyBzaGFyZWRsaWJyYXJ5IiAiRnJvbSAqIFRvIC4qIiAibm9ybWFsIGxpc3Qi Ci0gCi0gIyBHREIgY2hlY2tzIHRoZXJlIGZvciBtYXRjaGluZyBMX1BSRVYuCgpkaWZmIC0tZ2l0 IGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTZvZjkucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJv YmUtNm9mOS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTFjMzM4 Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTZvZjkucGF0Y2gKQEAg LTAsMCArMSwxMzIgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDYv bXNnMDAwMTcuaHRtbAorCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNi8wNCAxMzowMjox NQkxLjE1NjgzCisjIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMy8wNi8wNCAxMzoxMDo1MwkxLjE1 Njg0CisjIyAtMSw1ICsxLDIxIEBACisgMjAxMy0wNi0wNCAgR2FyeSBCZW5zb24gIDxnYmVuc29u QHJlZGhhdC5jb20+CisgCisrCSogdGFyZ2V0LmggKHRhcmdldF9vcHMpOiBOZXcgZmllbGQKKysJ InRvX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkIi4KKysJKHRhcmdldF9hdWdtZW50ZWRf bGlicmFyaWVzX3N2cjRfcmVhZCk6IE5ldyBtYWNyby4KKysJKiB0YXJnZXQuYyAodXBkYXRlX2N1 cnJlbnRfdGFyZ2V0KTogSGFuZGxlCisrCXRvX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFk LgorKwkqIHJlbW90ZS5jIChyZW1vdGVfc3RhdGUpOiBOZXcgZmllbGQKKysJImF1Z21lbnRlZF9s aWJyYXJpZXNfc3ZyNF9yZWFkIi4KKysJKHJlbW90ZV9hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRf cmVhZF9mZWF0dXJlKTogTmV3IGZ1bmN0aW9uLgorKwkocmVtb3RlX3Byb3RvY29sX2ZlYXR1cmVz KTogQWRkIGVudHJ5IGZvcgorKwkiYXVnbWVudGVkLWxpYnJhcmllcy1zdnI0LXJlYWQiLgorKwko cmVtb3RlX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkKTogTmV3IGZ1bmN0aW9uLgorKwko aW5pdF9yZW1vdGVfb3BzKTogSW5pdGlhbGl6ZQorKwlyZW1vdGVfb3BzLnRvX2F1Z21lbnRlZF9s aWJyYXJpZXNfc3ZyNF9yZWFkLgorKworKzIwMTMtMDYtMDQgIEdhcnkgQmVuc29uICA8Z2JlbnNv bkByZWRoYXQuY29tPgorKworIAkqIE5FV1M6IFVwZGF0ZS4KKyAKKyAyMDEzLTA2LTA0ICBHYXJ5 IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4KKy0tLSBzcmMvZ2RiL3JlbW90ZS5jCTIwMTMv MDUvMzAgMDk6Mjk6MTgJMS41NTIKKysrKyBzcmMvZ2RiL3JlbW90ZS5jCTIwMTMvMDYvMDQgMTM6 MTA6NTMJMS41NTMKK0BAIC0zNjEsNiArMzYxLDEwIEBACisgICAvKiBUcnVlIGlmIHRoZSBzdHVi IGNhbiBjb2xsZWN0IHN0cmluZ3MgdXNpbmcgdHJhY2VueiBieXRlY29kZS4gICovCisgICBpbnQg c3RyaW5nX3RyYWNpbmc7CisgCisrICAvKiBUcnVlIGlmIHRoZSBzdHViIHN1cHBvcnRzIHFYZmVy OmxpYnJhcmllcy1zdnI0OnJlYWQgd2l0aCBhCisrICAgICBub24tZW1wdHkgYW5uZXguICAqLwor KyAgaW50IGF1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkOworKworICAgLyogTm9uemVybyBp ZiB0aGUgdXNlciBoYXMgcHJlc3NlZCBDdHJsLUMsIGJ1dCB0aGUgdGFyZ2V0IGhhc24ndAorICAg ICAgcmVzcG9uZGVkIHRvIHRoYXQuICAqLworICAgaW50IGN0cmxjX3BlbmRpbmdfcDsKK0BAIC0z OTQ5LDYgKzM5NTMsMTYgQEAKKyAgIHJzLT5zdHJpbmdfdHJhY2luZyA9IChzdXBwb3J0ID09IFBB Q0tFVF9FTkFCTEUpOworIH0KKyAKKytzdGF0aWMgdm9pZAorK3JlbW90ZV9hdWdtZW50ZWRfbGli cmFyaWVzX3N2cjRfcmVhZF9mZWF0dXJlCisrICAoY29uc3Qgc3RydWN0IHByb3RvY29sX2ZlYXR1 cmUgKmZlYXR1cmUsCisrICAgZW51bSBwYWNrZXRfc3VwcG9ydCBzdXBwb3J0LCBjb25zdCBjaGFy ICp2YWx1ZSkKKyt7CisrICBzdHJ1Y3QgcmVtb3RlX3N0YXRlICpycyA9IGdldF9yZW1vdGVfc3Rh dGUgKCk7CisrCisrICBycy0+YXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQgPSAoc3VwcG9y dCA9PSBQQUNLRVRfRU5BQkxFKTsKKyt9CisrCisgc3RhdGljIHN0cnVjdCBwcm90b2NvbF9mZWF0 dXJlIHJlbW90ZV9wcm90b2NvbF9mZWF0dXJlc1tdID0geworICAgeyAiUGFja2V0U2l6ZSIsIFBB Q0tFVF9ESVNBQkxFLCByZW1vdGVfcGFja2V0X3NpemUsIC0xIH0sCisgICB7ICJxWGZlcjphdXh2 OnJlYWQiLCBQQUNLRVRfRElTQUJMRSwgcmVtb3RlX3N1cHBvcnRlZF9wYWNrZXQsCitAQCAtMzk1 OSw2ICszOTczLDggQEAKKyAgICAgUEFDS0VUX3FYZmVyX2xpYnJhcmllcyB9LAorICAgeyAicVhm ZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCIsIFBBQ0tFVF9ESVNBQkxFLCByZW1vdGVfc3VwcG9ydGVk X3BhY2tldCwKKyAgICAgUEFDS0VUX3FYZmVyX2xpYnJhcmllc19zdnI0IH0sCisrICB7ICJhdWdt ZW50ZWQtbGlicmFyaWVzLXN2cjQtcmVhZCIsIFBBQ0tFVF9ESVNBQkxFLAorKyAgICByZW1vdGVf YXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWRfZmVhdHVyZSwgLTEgfSwKKyAgIHsgInFYZmVy Om1lbW9yeS1tYXA6cmVhZCIsIFBBQ0tFVF9ESVNBQkxFLCByZW1vdGVfc3VwcG9ydGVkX3BhY2tl dCwKKyAgICAgUEFDS0VUX3FYZmVyX21lbW9yeV9tYXAgfSwKKyAgIHsgInFYZmVyOnNwdTpyZWFk IiwgUEFDS0VUX0RJU0FCTEUsIHJlbW90ZV9zdXBwb3J0ZWRfcGFja2V0LAorQEAgLTExNDM5LDYg KzExNDU1LDE0IEBACisgICByZXR1cm4gYnRyYWNlOworIH0KKyAKKytzdGF0aWMgaW50CisrcmVt b3RlX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkICh2b2lkKQorK3sKKysgIHN0cnVjdCBy ZW1vdGVfc3RhdGUgKnJzID0gZ2V0X3JlbW90ZV9zdGF0ZSAoKTsKKysKKysgIHJldHVybiBycy0+ YXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQ7CisrfQorKworIHN0YXRpYyB2b2lkCisgaW5p dF9yZW1vdGVfb3BzICh2b2lkKQorIHsKK0BAIC0xMTU2MSw2ICsxMTU4NSw4IEBACisgICByZW1v dGVfb3BzLnRvX2Rpc2FibGVfYnRyYWNlID0gcmVtb3RlX2Rpc2FibGVfYnRyYWNlOworICAgcmVt b3RlX29wcy50b190ZWFyZG93bl9idHJhY2UgPSByZW1vdGVfdGVhcmRvd25fYnRyYWNlOworICAg cmVtb3RlX29wcy50b19yZWFkX2J0cmFjZSA9IHJlbW90ZV9yZWFkX2J0cmFjZTsKKysgIHJlbW90 ZV9vcHMudG9fYXVnbWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQgPQorKyAgICByZW1vdGVfYXVn bWVudGVkX2xpYnJhcmllc19zdnI0X3JlYWQ7CisgfQorIAorIC8qIFNldCB1cCB0aGUgZXh0ZW5k ZWQgcmVtb3RlIHZlY3RvciBieSBtYWtpbmcgYSBjb3B5IG9mIHRoZSBzdGFuZGFyZAorLS0tIHNy Yy9nZGIvdGFyZ2V0LmMJMjAxMy8wNS8xNCAyMDozMzozNgkxLjMzNQorKysrIHNyYy9nZGIvdGFy Z2V0LmMJMjAxMy8wNi8wNCAxMzoxMDo1MwkxLjMzNgorQEAgLTczMSw2ICs3MzEsNyBAQAorICAg ICAgIElOSEVSSVQgKHRvX3RyYWNlZnJhbWVfaW5mbywgdCk7CisgICAgICAgSU5IRVJJVCAodG9f dXNlX2FnZW50LCB0KTsKKyAgICAgICBJTkhFUklUICh0b19jYW5fdXNlX2FnZW50LCB0KTsKKysg ICAgICBJTkhFUklUICh0b19hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZCwgdCk7CisgICAg ICAgSU5IRVJJVCAodG9fbWFnaWMsIHQpOworICAgICAgIElOSEVSSVQgKHRvX3N1cHBvcnRzX2V2 YWx1YXRpb25fb2ZfYnJlYWtwb2ludF9jb25kaXRpb25zLCB0KTsKKyAgICAgICBJTkhFUklUICh0 b19jYW5fcnVuX2JyZWFrcG9pbnRfY29tbWFuZHMsIHQpOworQEAgLTk3NSw2ICs5NzYsOSBAQAor ICAgZGVfZmF1bHQgKHRvX2Nhbl91c2VfYWdlbnQsCisgCSAgICAoaW50ICgqKSAodm9pZCkpCisg CSAgICByZXR1cm5femVybyk7CisrICBkZV9mYXVsdCAodG9fYXVnbWVudGVkX2xpYnJhcmllc19z dnI0X3JlYWQsCisrCSAgICAoaW50ICgqKSAodm9pZCkpCisrCSAgICByZXR1cm5femVybyk7Cisg ICBkZV9mYXVsdCAodG9fZXhlY3V0aW9uX2RpcmVjdGlvbiwgZGVmYXVsdF9leGVjdXRpb25fZGly ZWN0aW9uKTsKKyAKKyAjdW5kZWYgZGVfZmF1bHQKKy0tLSBzcmMvZ2RiL3RhcmdldC5oCTIwMTMv MDUvMTQgMjA6MzM6MzYJMS4yNjIKKysrKyBzcmMvZ2RiL3RhcmdldC5oCTIwMTMvMDYvMDQgMTM6 MTA6NTMJMS4yNjMKK0BAIC05NDEsNiArOTQxLDEwIEBACisgICAgICAgIChpbmNsdXNpdmUpIHRv IGZ1bmN0aW9uIEVORCAoZXhjbHVzaXZlKS4gICovCisgICAgIHZvaWQgKCp0b19jYWxsX2hpc3Rv cnlfcmFuZ2UpIChVTE9OR0VTVCBiZWdpbiwgVUxPTkdFU1QgZW5kLCBpbnQgZmxhZ3MpOworIAor KyAgICAvKiBOb256ZXJvIGlmIFRBUkdFVF9PQkpFQ1RfTElCUkFSSUVTX1NWUjQgbWF5IGJlIHJl YWQgd2l0aCBhCisrICAgICAgIG5vbi1lbXB0eSBhbm5leC4gICovCisrICAgIGludCAoKnRvX2F1 Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkKSAodm9pZCk7CisrCisgICAgIGludCB0b19tYWdp YzsKKyAgICAgLyogTmVlZCBzdWItc3RydWN0dXJlIGZvciB0YXJnZXQgbWFjaGluZSByZWxhdGVk IHJhdGhlciB0aGFuIGNvbW0gcmVsYXRlZD8KKyAgICAgICovCitAQCAtMTgwOSw2ICsxODEzLDkg QEAKKyAjZGVmaW5lIHRhcmdldF9jYW5fdXNlX2FnZW50KCkgXAorICAgKCpjdXJyZW50X3Rhcmdl dC50b19jYW5fdXNlX2FnZW50KSAoKQorIAorKyNkZWZpbmUgdGFyZ2V0X2F1Z21lbnRlZF9saWJy YXJpZXNfc3ZyNF9yZWFkKCkgXAorKyAgKCpjdXJyZW50X3RhcmdldC50b19hdWdtZW50ZWRfbGli cmFyaWVzX3N2cjRfcmVhZCkgKCkKKysKKyAvKiBDb21tYW5kIGxvZ2dpbmcgZmFjaWxpdHkuICAq LworIAorICNkZWZpbmUgdGFyZ2V0X2xvZ19jb21tYW5kKHApCQkJCQkJXAoKZGlmZiAtLWdpdCBh L2dkYi1kbG9wZW4tc3RhcC1wcm9iZS03b2Y3LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2Jl LTdvZjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwMzU3ZTkuLjAwMDAw MDAKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTdvZjcucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSw0MzUgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIw MTMtMDUvbXNnMDA2MzAuaHRtbAotU3ViamVjdDogW1JGQSA3LzddIExpbmtlci1kZWJ1Z2dlciBp bnRlcmZhY2UgdGVzdHMKLQotCi0tLURDQS9DOVdTbkR0bDUwenUKLUNvbnRlbnQtVHlwZTogdGV4 dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaQotQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lCi0K LVRoaXMgcGF0Y2ggYWRkcyBzb21lIHRlc3RjYXNlcyBmb3IgdGhlIGxpbmtlci1kZWJ1Z2dlciBp bnRlcmZhY2UuCi0KLS0tRENBL0M5V1NuRHRsNTB6dQotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWlu OyBjaGFyc2V0PXVzLWFzY2lpCi1Db250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxl bmFtZT0icnRsZC1wcm9iZXMtNy10ZXN0cy1nYi5wYXRjaCIKLQotMjAxMy0wNS0xNiAgR2FyeSBC ZW5zb24gIDxnYmVuc29uQHJlZGhhdC5jb20+Ci0KLQkqIGdkYi5iYXNlL2JyZWFrLXByb2Jlcy5l eHA6IE5ldyBmaWxlLgotCSogZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmM6IExpa2V3aXNlLgotCSog Z2RiLmJhc2UvYnJlYWstcHJvYmVzLXNvbGliLmM6IExpa2V3aXNlLgotCSogZ2RiLmJhc2UvaW5m by1zaGFyZWQuZXhwOiBOZXcgZmlsZS4KLQkqIGdkYi5iYXNlL2luZm8tc2hhcmVkLmM6IExpa2V3 aXNlLgotCSogZ2RiLmJhc2UvaW5mby1zaGFyZWQtc29saWIxLmM6IExpa2V3aXNlLgotCSogZ2Ri LmJhc2UvaW5mby1zaGFyZWQtc29saWIyLmM6IExpa2V3aXNlLgotCi1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9icmVhay1wcm9iZXMuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MC4uODM3MjYzNgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9i cmVhay1wcm9iZXMuZXhwCi1AQCAtMCwwICsxLDc3IEBACi0rIyBDb3B5cmlnaHQgMjAxMyBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCi0rCi0raWYgeyBbc2tpcF9zaGxpYl90ZXN0c10gfSB7Ci0rICAgIHJldHVybiAwCi0rfQot KwotK3N0YW5kYXJkX3Rlc3RmaWxlCi0rCi0rc2V0IGxpYm5hbWUgJHRlc3RmaWxlLXNvbGliCi0r c2V0IHNyY2ZpbGVfbGliICRzcmNkaXIvJHN1YmRpci8kbGlibmFtZS5jCi0rc2V0IGJpbmZpbGVf bGliIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAkbGlibmFtZS5zb10KLSsKLStzZXQgbm9ybWFsX2Jw ICJfZGxfZGVidWdfc3RhdGUiCi0rc2V0IHByb2Jlc19icCAiZGxfbWFpbiIKLSsKLStpZiB7IFtn ZGJfY29tcGlsZV9zaGxpYiAkc3JjZmlsZV9saWIgJGJpbmZpbGVfbGliIFwKLSsJICBbbGlzdCBh ZGRpdGlvbmFsX2ZsYWdzPS1mUElDXV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZCBu b3QgY29tcGlsZSAkYmluZmlsZV9saWIuIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgeyBb cHJlcGFyZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUuZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSBcCi0r CSAgW2xpc3QgYWRkaXRpb25hbF9mbGFncz0tRFNITElCX05BTUVcPVwiJGJpbmZpbGVfbGliXCIg bGlicz0tbGRsXV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIEVuYWJsZSBzdG9wLW9u LXNvbGliLWV2ZW50cwotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IHN0b3Atb24tc29saWItZXZl bnRzIDEiCi0rCi0rIyBTdGFydCB0aGUgaW5mZXJpb3IgYW5kIHJ1biB0byB0aGUgZmlyc3Qgc3Rv cAotK2dkYl9ydW5fY21kCi0rZ2RiX3Rlc3QgIiIgIi4qU3RvcHBlZCBkdWUgdG8gc2hhcmVkIGxp YnJhcnkgZXZlbnQuKiIKLSsKLSsjIFhGQUlMIGlmIHdlIGFyZSBub3QgdXNpbmcgcHJvYmVzCi0r c2V0IHRlc3QgImVuc3VyZSB1c2luZyBwcm9iZXMiCi0rc2V0IHVzaW5nX3Byb2JlcyAwCi0rZ2Ri X3Rlc3RfbXVsdGlwbGUgImJ0IiAkdGVzdCB7Ci0rICAgIC1yZSAiIzAgK1xbXlxyXG5cXSpcXG0o X19HSV8pPyRub3JtYWxfYnBcXE0uKiRnZGJfcHJvbXB0ICQiIHsKLSsJeGZhaWwgJHRlc3QKLSsg ICAgfQotKyAgICAtcmUgIiMwICtcW15cclxuXF0qXFxtKF9fR0lfKT8kcHJvYmVzX2JwXFxNLiok Z2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsJc2V0IHVzaW5nX3Byb2JlcyAxCi0rICAg IH0KLSt9Ci0rCi0raWYgeyAkdXNpbmdfcHJvYmVzIH0gewotKyAgICAjIFJ1biB0aWwgaXQgbG9h ZHMgb3VyIGxpYnJhcnkKLSsgICAgc2V0IHRlc3QgInJ1biB0aWwgb3VyIGxpYnJhcnkgbG9hZHMi Ci0rICAgIHNldCBsb2FkZWRfbGlicmFyeSAwCi0rICAgIHdoaWxlIHsgISRsb2FkZWRfbGlicmFy eSB9IHsKLSsJZ2RiX3Rlc3RfbXVsdGlwbGUgImMiICR0ZXN0IHsKLSsJICAgIC1yZSAiSW5mZXJp b3IgbG9hZGVkICRiaW5maWxlX2xpYlxcTS4qJGdkYl9wcm9tcHQgJCIgewotKwkJcGFzcyAkdGVz dAotKwkJc2V0IGxvYWRlZF9saWJyYXJ5IDEKLSsJICAgIH0KLSsJICAgIC1yZSAiU3RvcHBlZCBk dWUgdG8gc2hhcmVkIGxpYnJhcnkgZXZlbnRcXE0uKiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIH0K LSsJfQotKyAgICB9Ci0rCi0rICAgICMgQ2FsbCBzb21ldGhpbmcgdG8gZW5zdXJlIHRoYXQgcmVs b2NhdGlvbiBvY2N1cnJlZAotKyAgICBnZGJfdGVzdCAiY2FsbCBmb28oMjMpIiAiXFxcJC4qID0g MzEuKlxcXE0uKiIKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVh ay1wcm9iZXMuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmMKLW5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hNzc4MDk5Ci0tLS0gL2Rldi9udWxsCi0r KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy5jCi1AQCAtMCwwICsxLDI2 IEBACi0rLyogQ29weXJpZ2h0IDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRl IDxkbGZjbi5oPgotKwotK2ludAotK21haW4gKCkKLSt7Ci0rICB2b2lkICpoYW5kbGUgPSBkbG9w ZW4gKFNITElCX05BTUUsIFJUTERfTEFaWSk7Ci0rCi0rICBkbGNsb3NlIChoYW5kbGUpOwotKwot KyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJl YWstcHJvYmVzLXNvbGliLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy1z b2xpYi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmRkZTJkYgotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMtc29s aWIuYwotQEAgLTAsMCArMSwyMiBAQAotKy8qIENvcHlyaWdodCAyMDEzIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0r ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsKLStpbnQKLStmb28gKGludCBuKQotK3sK LSsgIHJldHVybiBuICogbiAvIDE3OwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2luZm8tc2hhcmVkLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFy ZWQuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMWRhYmI5ZgotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC5leHAK LUBAIC0wLDAgKzEsMTQ1IEBACi0rIyBDb3B5cmlnaHQgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raWYgeyBb c2tpcF9zaGxpYl90ZXN0c10gfSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK3N0YW5kYXJkX3Rl c3RmaWxlCi0rCi0rc2V0IGxpYjFuYW1lICR0ZXN0ZmlsZS1zb2xpYjEKLStzZXQgc3JjZmlsZV9s aWIxICRzcmNkaXIvJHN1YmRpci8kbGliMW5hbWUuYwotK3NldCBiaW5maWxlX2xpYjEgW3N0YW5k YXJkX291dHB1dF9maWxlICRsaWIxbmFtZS5zb10KLStzZXQgZGVmaW5lMSAtRFNITElCMV9OQU1F XD1cIiRiaW5maWxlX2xpYjFcIgotKwotK3NldCBsaWIybmFtZSAkdGVzdGZpbGUtc29saWIyCi0r c2V0IHNyY2ZpbGVfbGliMiAkc3JjZGlyLyRzdWJkaXIvJGxpYjJuYW1lLmMKLStzZXQgYmluZmls ZV9saWIyIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAkbGliMm5hbWUuc29dCi0rc2V0IGRlZmluZTIg LURTSExJQjJfTkFNRVw9XCIkYmluZmlsZV9saWIyXCIKLSsKLStpZiB7IFtnZGJfY29tcGlsZV9z aGxpYiAkc3JjZmlsZV9saWIxICRiaW5maWxlX2xpYjEgXAotKwkgIFtsaXN0IGFkZGl0aW9uYWxf ZmxhZ3M9LWZQSUNdXSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkIG5vdCBjb21waWxl ICRiaW5maWxlX2xpYjEuIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgeyBbZ2RiX2NvbXBp bGVfc2hsaWIgJHNyY2ZpbGVfbGliMiAkYmluZmlsZV9saWIyIFwKLSsJICBbbGlzdCBhZGRpdGlv bmFsX2ZsYWdzPS1mUElDXV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZCBub3QgY29t cGlsZSAkYmluZmlsZV9saWIyLiIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK3NldCBjZmxhZ3Mg IiRkZWZpbmUxICRkZWZpbmUyIgotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHRlc3RmaWxl LmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGUgXAotKwkgIFtsaXN0IGFkZGl0aW9uYWxfZmxhZ3M9JGNm bGFncyBsaWJzPS1sZGxdXSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgUnVuICJpbmZv IHNoYXJlZGxpYnJhcnkiIGFuZCBjaGVjayBmb3IgdGhlIHByZXNlbmNlIG9yIGFic2VuY2Ugb2YK LSsjIG91ciBsaWJyYXJpZXMuCi0rcHJvYyBjaGVja19pbmZvX3NoYXJlZCB7IHRlc3QgZXhwZWN0 MSBleHBlY3QyIH0gewotKyAgICBnbG9iYWwgbGliMW5hbWUKLSsgICAgZ2xvYmFsIGxpYjJuYW1l Ci0rICAgIGdsb2JhbCBnZGJfcHJvbXB0Ci0rCi0rICAgIHNldCBhY3R1YWwxIDAKLSsgICAgc2V0 IGFjdHVhbDIgMAotKwotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAiaW5mbyBzaGFyZWRsaWJyYXJ5 IiAkdGVzdCB7Ci0rCS1yZSAkbGliMW5hbWUgewotKwkgICAgc2V0IGFjdHVhbDEgMQotKwkgICAg ZXhwX2NvbnRpbnVlCi0rCX0KLSsJLXJlICRsaWIybmFtZSB7Ci0rCSAgICBzZXQgYWN0dWFsMiAx Ci0rCSAgICBleHBfY29udGludWUKLSsJfQotKwktcmUgIlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0r CSAgICBpZiB7ICRhY3R1YWwxID09ICRleHBlY3QxICYmICRhY3R1YWwyID09ICRleHBlY3QyIH0g ewotKwkJcGFzcyAkdGVzdAotKwkgICAgfSBlbHNlIHsKLSsJCWZhaWwgJHRlc3QKLSsJICAgIH0K LSsJfQotKyAgICB9Ci0rfQotKwotKyMgU3RhcnQgdGhlIGluZmVyaW9yLCBhbmQgY2hlY2sgbmVp dGhlciBvZiB0aGUgbGlicmFyaWVzIGFyZSBsb2FkZWQgYXQKLSsjIHRoZSBzdGFydC4KLStydW50 b19tYWluCi0rY2hlY2tfaW5mb19zaGFyZWQgImluZm8gc2hhcmVkbGlicmFyeSAjMSIgMCAwCi0r Ci0rIyBTZXQgdXAgYnJlYWtwb2ludHMuCi0rZ2RiX3Rlc3QgImJyZWFrIHN0b3AiIHtCcmVha3Bv aW50IFswLTldKyBhdCAuKn0KLStnZGJfdGVzdF9ub19vdXRwdXQgInNldCBicmVha3BvaW50IHBl bmRpbmcgb24iCi0rZ2RiX3Rlc3QgImJyZWFrIGZvbyIge0JyZWFrcG9pbnQgWzAtOV0rIFwoZm9v XCkgcGVuZGluZ1wufQotK2dkYl90ZXN0ICJicmVhayBiYXIiIHtCcmVha3BvaW50IFswLTldKyBc KGJhclwpIHBlbmRpbmdcLn0KLSsKLSsjIFJ1biB0byB0aGUgZmlyc3Qgc3RvcCBhbmQgY2hlY2sg dGhhdCBvbmx5IHRoZSBmaXJzdCBsaWJyYXJ5IGlzIGxvYWRlZC4KLStnZGJfdGVzdCAiYyIge0Jy ZWFrcG9pbnQgWzAtOV0rLCAuKiBpbiBzdG9wIFwoXCl9Ci0rY2hlY2tfaW5mb19zaGFyZWQgImlu Zm8gc2hhcmVkbGlicmFyeSAjMiIgMSAwCi0rCi0rIyBSdW4gdG8gdGhlIHNlY29uZCBzdG9wIGFu ZCBjaGVjayB0aGF0IGJvdGggbGlicmFyaWVzIGFyZSBsb2FkZWQuCi0rZ2RiX3Rlc3QgImMiIHtC cmVha3BvaW50IFswLTldKywgLiogaW4gc3RvcCBcKFwpfQotK2NoZWNrX2luZm9fc2hhcmVkICJp bmZvIHNoYXJlZGxpYnJhcnkgIzMiIDEgMQotKwotKyMgQ2hlY2sgdGhhdCB0aGUgbmV4dCBzdG9w IGlzIGluIGZvby4KLStnZGJfdGVzdCAiYyIge0JyZWFrcG9pbnQgWzAtOV0rLCAuKiBpbiBmb28g XChcKSBmcm9tIC4qfQotKwotKyMgQ2hlY2sgdGhhdCB0aGUgbmV4dCBzdG9wIGlzIGluIGJhci4K LStnZGJfdGVzdCAiYyIge0JyZWFrcG9pbnQgWzAtOV0rLCAuKiBpbiBiYXIgXChcKSBmcm9tIC4q fQotKwotKyMgUmVzdGFydCB0aGUgaW5mZXJpb3IgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8g YnJlYWtwb2ludCByZXNldAotKyMgZXJyb3JzLiAgVGhlc2UgY2FuIGhhcHBlbiB3aXRoIHRoZSBw cm9iZXMtYmFzZWQgcnVudGltZSBsaW5rZXIKLSsjIGludGVyZmFjZSBpZiB0aGUgY2FjaGUgaXMg bm90IGNsZWFyZWQgY29ycmVjdGx5LgotK3NldCB0ZXN0ICJyZXN0YXJ0IgotK2dkYl9ydW5fY21k Ci0rZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRlc3QgewotKyAgICAtcmUge1N0YXJ0IGl0IGZyb20g dGhlIGJlZ2lubmluZ1w/IFwoeSBvciBuXCkgfSB7Ci0rCXNlbmRfZ2RiICJ5XG4iCi0rCWV4cF9j b250aW51ZQotKyAgICB9Ci0rICAgIC1yZSB7RXJyb3IgaW4gcmUtc2V0dGluZyBicmVha3BvaW50 fSB7Ci0rCWZhaWwgJHRlc3QKLSsgICAgfQotKyAgICAtcmUgIlxyXG4kZ2RiX3Byb21wdCAkIiB7 Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotK30KLSsKLSsjIENoZWNrIHRoYXQgbmVpdGhlciBsaWJy YXJ5IGlzIGxvYWRlZC4KLStjaGVja19pbmZvX3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICM0 IiAwIDAKLSsKLSsjIFJ1biB0byB0aGUgZmlyc3Qgc3RvcCBhbmQgY2hlY2sgdGhhdCBvbmx5IHRo ZSBmaXJzdCBsaWJyYXJ5IGlzIGxvYWRlZC4KLStnZGJfdGVzdCAiYyIge0JyZWFrcG9pbnQgWzAt OV0rLCAuKiBpbiBzdG9wIFwoXCl9Ci0rY2hlY2tfaW5mb19zaGFyZWQgImluZm8gc2hhcmVkbGli cmFyeSAjNSIgMSAwCi0rCi0rIyBSdW4gdG8gdGhlIHNlY29uZCBzdG9wIGFuZCBjaGVjayB0aGF0 IGJvdGggbGlicmFyaWVzIGFyZSBsb2FkZWQuCi0rZ2RiX3Rlc3QgImMiIHtCcmVha3BvaW50IFsw LTldKywgLiogaW4gc3RvcCBcKFwpfQotK2NoZWNrX2luZm9fc2hhcmVkICJpbmZvIHNoYXJlZGxp YnJhcnkgIzYiIDEgMQotKwotKyMgQ2hlY2sgdGhhdCB0aGUgbmV4dCBzdG9wIGlzIGluIGZvby4K LStnZGJfdGVzdCAiYyIge0JyZWFrcG9pbnQgWzAtOV0rLCAuKiBpbiBmb28gXChcKSBmcm9tIC4q fQotKwotKyMgQ2hlY2sgdGhhdCB0aGUgbmV4dCBzdG9wIGlzIGluIGJhci4KLStnZGJfdGVzdCAi YyIge0JyZWFrcG9pbnQgWzAtOV0rLCAuKiBpbiBiYXIgXChcKSBmcm9tIC4qfQotKwotKyMgUnVu IHRvIHRoZSBuZXh0IHN0b3AgYW5kIGNoZWNrIHRoYXQgdGhlIGZpcnN0IGxpYnJhcnkgaGFzIGJl ZW4gdW5sb2FkZWQuCi0rZ2RiX3Rlc3QgImMiIHtCcmVha3BvaW50IFswLTldKywgLiogaW4gc3Rv cCBcKFwpfQotK2NoZWNrX2luZm9fc2hhcmVkICJpbmZvIHNoYXJlZGxpYnJhcnkgIzciIDAgMQot KwotKyMgUnVuIHRvIHRoZSBsYXN0IHN0b3AgYW5kIGNoZWNrIHRoYXQgYm90aCBsaWJyYXJpZXMg YXJlIGdvbmUuCi0rZ2RiX3Rlc3QgImMiIHtCcmVha3BvaW50IFswLTldKywgLiogaW4gc3RvcCBc KFwpfQotK2NoZWNrX2luZm9fc2hhcmVkICJpbmZvIHNoYXJlZGxpYnJhcnkgIzgiIDAgMAotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQuYyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4 IDAwMDAwMDAuLmQ2OTlhMTEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvaW5mby1zaGFyZWQuYwotQEAgLTAsMCArMSw0OCBAQAotKy8qIENvcHlyaWdodCAyMDEz IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8ZGxmY24uaD4KLSsKLSt2b2lkCi0r c3RvcCAoKQotK3sKLSt9Ci0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsgIHZvaWQgKmhhbmRsZTEs ICpoYW5kbGUyOwotKyAgdm9pZCAoKmZ1bmMpKGludCk7Ci0rCi0rICBoYW5kbGUxID0gZGxvcGVu IChTSExJQjFfTkFNRSwgUlRMRF9MQVpZKTsKLSsgIHN0b3AgKCk7Ci0rCi0rICBoYW5kbGUyID0g ZGxvcGVuIChTSExJQjJfTkFNRSwgUlRMRF9MQVpZKTsKLSsgIHN0b3AgKCk7Ci0rCi0rICBmdW5j ID0gKHZvaWQgKCopKGludCkpIGRsc3ltIChoYW5kbGUxLCAiZm9vIik7Ci0rICBmdW5jICgxKTsK LSsKLSsgIGZ1bmMgPSAodm9pZCAoKikoaW50KSkgZGxzeW0gKGhhbmRsZTIsICJiYXIiKTsKLSsg IGZ1bmMgKDIpOwotKwotKyAgZGxjbG9zZSAoaGFuZGxlMSk7Ci0rICBzdG9wICgpOwotKwotKyAg ZGxjbG9zZSAoaGFuZGxlMik7Ci0rICBzdG9wICgpOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQtc29saWIxLmMgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLXNvbGliMS5jCi1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOTk3OWVlNwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjEuYwotQEAgLTAsMCArMSwyNCBA QAotKy8qIENvcHlyaWdodCAyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwot KyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8 c3RkaW8uaD4KLSsKLStpbnQKLStmb28gKGludCBuKQotK3sKLSsgIHByaW50ZiAoImZvbyAlZFxu Iiwgbik7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjIuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5m by1zaGFyZWQtc29saWIyLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5k NGVkMWU2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8t c2hhcmVkLXNvbGliMi5jCi1AQCAtMCwwICsxLDI0IEBACi0rLyogQ29weXJpZ2h0IDIwMTMgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxzdGRpby5oPgotKwotK2ludAotK2JhciAo aW50IG4pCi0rewotKyAgcHJpbnRmICgiYmFyICVkXG4iLCBuKTsKLSsKLSsgIHJldHVybiAwOwot K30KLQotLS1EQ0EvQzlXU25EdGw1MHp1LS0KLQoKZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3Rh cC1wcm9iZS03b2Y5LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTdvZjkucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNkNWY1NgotLS0gL2Rldi9udWxsCisr KyBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS03b2Y5LnBhdGNoCkBAIC0wLDAgKzEsMTEwNyBAQAor aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMy0wNi9tc2cwMDAxOC5odG1sCisK KyMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEzLzA2LzA0IDEzOjEwOjUzCTEuMTU2ODQKKyMjIyBz cmMvZ2RiL0NoYW5nZUxvZwkyMDEzLzA2LzA0IDEzOjE3OjA1CTEuMTU2ODUKKyMjIC0xLDUgKzEs NTggQEAKKyAyMDEzLTA2LTA0ICBHYXJ5IEJlbnNvbiAgPGdiZW5zb25AcmVkaGF0LmNvbT4KKyAK KysJKiBicmVha3BvaW50LmggKGhhbmRsZV9zb2xpYl9ldmVudCk6IE1vdmVkIGZ1bmN0aW9uIGRl Y2xhcmF0aW9uCisrCXRvIHNvbGliLmguCisrCSogYnJlYWtwb2ludC5jIChoYW5kbGVfc29saWJf ZXZlbnQpOiBNb3ZlZCBmdW5jdGlvbiB0byBzb2xpYi5jLgorKwkoYnBzdGF0X3N0b3Bfc3RhdHVz KTogUGFzcyBuZXcgYXJndW1lbnQgdG8gaGFuZGxlX3NvbGliX2V2ZW50LgorKwkqIHNvbGliLmgg KHVwZGF0ZV9zb2xpYl9icmVha3BvaW50cyk6IE5ldyBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KKysJ KGhhbmRsZV9zb2xpYl9ldmVudCk6IE1vdmVkIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGZyb20KKysJ YnJlYWtwb2ludC5oLgorKwkqIHNvbGliLmMgKHVwZGF0ZV9zb2xpYl9icmVha3BvaW50cyk6IE5l dyBmdW5jdGlvbi4KKysJKGhhbmRsZV9zb2xpYl9ldmVudCk6IE1vdmVkIGZ1bmN0aW9uIGZyb20g YnJlYWtwb2ludC5jLgorKwlVcGRhdGVkIHRvIGNhbGwgc29saWJfb3BzLT5oYW5kbGVfZXZlbnQg aWYgbm90IE5VTEwuCisrCSogc29saXN0LmggKHRhcmdldF9zb19vcHMpOiBOZXcgZmllbGRzICJ1 cGRhdGVfYnJlYWtwb2ludHMiIGFuZAorKwkiaGFuZGxlX2V2ZW50Ii4KKysJKiBpbmZydW4uYyAo c2V0X3N0b3Bfb25fc29saWJfZXZlbnRzKTogTmV3IGZ1bmN0aW9uLgorKwkoX2luaXRpYWxpemVf aW5mcnVuKTogVXNlIHRoZSBhYm92ZSBmb3IgInNldAorKwlzdG9wLW9uLXNvbGliLWV2ZW50cyIu CisrCShoYW5kbGVfaW5mZXJpb3JfZXZlbnQpOiBQYXNzIG5ldyBhcmd1bWVudCB0byBoYW5kbGVf c29saWJfZXZlbnQuCisrCSogc29saWItc3ZyNC5jIChwcm9iZS5oKTogTmV3IGluY2x1ZGUuCisr CShzdnI0X2ZyZWVfbGlicmFyeV9saXN0KTogTmV3IGZvcndhcmQgZGVjbGFyYXRpb24uCisrCShw cm9iZV9hY3Rpb24pOiBOZXcgZW51bS4KKysJKHByb2JlX2luZm8pOiBOZXcgc3RydWN0LgorKwko cHJvYmVfaW5mbyk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCisrCShOVU1fUFJPQkVTKTogTmV3IGRl ZmluaXRpb24uCisrCShzdnI0X2luZm8pOiBOZXcgZmllbGRzICJ1c2luZ194ZmVyIiwgInByb2Jl c190YWJsZSIgYW5kCisrCSJzb2xpYl9saXN0Ii4KKysJKGZyZWVfcHJvYmVzX3RhYmxlKTogTmV3 IGZ1bmN0aW9uLgorKwkoZnJlZV9zb2xpYl9saXN0KTogTmV3IGZ1bmN0aW9uLgorKwkoc3ZyNF9w c3BhY2VfZGF0YV9jbGVhbnVwKTogRnJlZSBwcm9iZXMgdGFibGUgYW5kIHNvbGliIGxpc3QuCisr CShzdnI0X2NvcHlfbGlicmFyeV9saXN0KTogTmV3IGZ1bmN0aW9uLgorKwkoc3ZyNF9jdXJyZW50 X3Nvc192aWFfeGZlcl9saWJyYXJpZXMpOiBOZXcgcGFyYW1ldGVyICJhbm5leCIuCisrCShzdnI0 X3JlYWRfc29fbGlzdCk6IE5ldyBwYXJhbWV0ZXIgInByZXZfbG0iLgorKwkoc3ZyNF9jdXJyZW50 X3Nvc19kaXJlY3QpOiBSZW5hbWVkIGZyb20gInN2cjRfY3VycmVudF9zb3MiLgorKwkoc3ZyNF9j dXJyZW50X3Nvcyk6IE5ldyBmdW5jdGlvbi4KKysJKHByb2JlX2FuZF9hY3Rpb24pOiBOZXcgc3Ry dWN0LgorKwkoaGFzaF9wcm9iZV9hbmRfYWN0aW9uKTogTmV3IGZ1bmN0aW9uLgorKwkoZXF1YWxf cHJvYmVfYW5kX2FjdGlvbik6IExpa2V3aXNlLgorKwkocmVnaXN0ZXJfc29saWJfZXZlbnRfcHJv YmUpOiBMaWtld2lzZS4KKysJKHNvbGliX2V2ZW50X3Byb2JlX2F0KTogTGlrZXdpc2UuCisrCShz b2xpYl9ldmVudF9wcm9iZV9hY3Rpb24pOiBMaWtld2lzZS4KKysJKHNvbGlzdF91cGRhdGVfZnVs bCk6IExpa2V3aXNlLgorKwkoc29saXN0X3VwZGF0ZV9pbmNyZW1lbnRhbCk6IExpa2V3aXNlLgor KwkoZGlzYWJsZV9wcm9iZXNfaW50ZXJmYWNlX2NsZWFudXApOiBMaWtld2lzZS4KKysJKHN2cjRf aGFuZGxlX3NvbGliX2V2ZW50KTogTGlrZXdpc2UuCisrCShzdnI0X3VwZGF0ZV9zb2xpYl9ldmVu dF9icmVha3BvaW50KTogTGlrZXdpc2UuCisrCShzdnI0X3VwZGF0ZV9zb2xpYl9ldmVudF9icmVh a3BvaW50cyk6IExpa2V3aXNlLgorKwkoc3ZyNF9jcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2lu dHMpOiBMaWtld2lzZS4KKysJKGVuYWJsZV9icmVhayk6IEZyZWUgcHJvYmVzIHRhYmxlIGJlZm9y ZSBjcmVhdGluZyBicmVha3BvaW50cy4KKysJVXNlIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2Jy ZWFrcG9pbnRzIHRvIGNyZWF0ZSBicmVha3BvaW50cy4KKysJKHN2cjRfc29saWJfY3JlYXRlX2lu ZmVyaW9yX2hvb2spOiBGcmVlIHRoZSBzb2xpYiBsaXN0LgorKwkoX2luaXRpYWxpemVfc3ZyNF9z b2xpYik6IEluaXRpYWxpc2UKKysJc3ZyNF9zb19vcHMuaGFuZGxlX3NvbGliX2V2ZW50IGFuZCBz dnI0X3NvX29wcy51cGRhdGVfYnJlYWtwb2ludHMuCisrCisrMjAxMy0wNi0wNCAgR2FyeSBCZW5z b24gIDxnYmVuc29uQHJlZGhhdC5jb20+CisrCisgCSogdGFyZ2V0LmggKHRhcmdldF9vcHMpOiBO ZXcgZmllbGQKKyAJInRvX2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkIi4KKyAJKHRhcmdl dF9hdWdtZW50ZWRfbGlicmFyaWVzX3N2cjRfcmVhZCk6IE5ldyBtYWNyby4KK0luZGV4OiBnZGIt Ny42L2dkYi9icmVha3BvaW50LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy42Lm9yaWcvZ2RiL2Jy ZWFrcG9pbnQuaAkyMDEzLTA2LTEwIDE0OjQ0OjM3LjQ1NTgxMjY1NiArMDIwMAorKysrIGdkYi03 LjYvZ2RiL2JyZWFrcG9pbnQuaAkyMDEzLTA2LTEwIDE0OjQ0OjM3LjcwOTgxMjU3OSArMDIwMAor QEAgLTE1NTIsOCArMTU1Miw2IEBAIGV4dGVybiBpbnQgdXNlcl9icmVha3BvaW50X3AgKHN0cnVj dCBicmUKKyAvKiBBdHRlbXB0IHRvIGRldGVybWluZSBhcmNoaXRlY3R1cmUgb2YgbG9jYXRpb24g aWRlbnRpZmllZCBieSBTQUwuICAqLworIGV4dGVybiBzdHJ1Y3QgZ2RiYXJjaCAqZ2V0X3NhbF9h cmNoIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbCk7CisgCistZXh0ZXJuIHZvaWQgaGFuZGxl X3NvbGliX2V2ZW50ICh2b2lkKTsKKy0KKyBleHRlcm4gdm9pZCBicmVha3BvaW50X2ZyZWVfb2Jq ZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworIAorIGV4dGVybiB2b2lkIGJyZWFrcG9p bnRzX3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0luZGV4OiBnZGItNy42L2dk Yi9pbmZydW4uYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjYub3JpZy9nZGIvaW5mcnVuLmMJMjAx My0wNi0xMCAxNDo0NDozNy40Mjc4MTI2NjQgKzAyMDAKKysrKyBnZGItNy42L2dkYi9pbmZydW4u YwkyMDEzLTA2LTEwIDE0OjQ0OjM3LjcxMTgxMjU3OSArMDIwMAorQEAgLTM3MCw2ICszNzAsMTYg QEAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKnN0ZXBfc3RhcnRfZnVuY3RpbworIC8qIE5vbnplcm8g aWYgd2Ugd2FudCB0byBnaXZlIGNvbnRyb2wgdG8gdGhlIHVzZXIgd2hlbiB3ZSdyZSBub3RpZmll ZAorICAgIG9mIHNoYXJlZCBsaWJyYXJ5IGV2ZW50cyBieSB0aGUgZHluYW1pYyBsaW5rZXIuICAq LworIGludCBzdG9wX29uX3NvbGliX2V2ZW50czsKKysKKysvKiBFbmFibGUgb3IgZGlzYWJsZSBv cHRpb25hbCBzaGFyZWQgbGlicmFyeSBldmVudCBicmVha3BvaW50cworKyAgIGFzIGFwcHJvcHJp YXRlIHdoZW4gdGhlIGFib3ZlIGZsYWcgaXMgY2hhbmdlZC4gICovCisrCisrc3RhdGljIHZvaWQK KytzZXRfc3RvcF9vbl9zb2xpYl9ldmVudHMgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwgc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCisreworKyAgdXBkYXRlX3NvbGliX2JyZWFrcG9pbnRz ICgpOworK30KKysKKyBzdGF0aWMgdm9pZAorIHNob3dfc3RvcF9vbl9zb2xpYl9ldmVudHMgKHN0 cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCisgCQkJICAgc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQorQEAgLTczMzUsNyArNzM0NSw3IEBAIFNo b3cgc3RvcHBpbmcgZm9yIHNoYXJlZCBsaWJyYXJ5IGV2ZW50cy4KKyBJZiBub256ZXJvLCBnZGIg d2lsbCBnaXZlIGNvbnRyb2wgdG8gdGhlIHVzZXIgd2hlbiB0aGUgZHluYW1pYyBsaW5rZXJcblwK KyBub3RpZmllcyBnZGIgb2Ygc2hhcmVkIGxpYnJhcnkgZXZlbnRzLiAgVGhlIG1vc3QgY29tbW9u IGV2ZW50IG9mIGludGVyZXN0XG5cCisgdG8gdGhlIHVzZXIgd291bGQgYmUgbG9hZGluZy91bmxv YWRpbmcgb2YgYSBuZXcgbGlicmFyeS4iKSwKKy0JCQkgICAgTlVMTCwKKysJCQkgICAgc2V0X3N0 b3Bfb25fc29saWJfZXZlbnRzLAorIAkJCSAgICBzaG93X3N0b3Bfb25fc29saWJfZXZlbnRzLAor IAkJCSAgICAmc2V0bGlzdCwgJnNob3dsaXN0KTsKKyAKK0luZGV4OiBnZGItNy42L2dkYi9zb2xp Yi1zdnI0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy42Lm9yaWcvZ2RiL3NvbGliLXN2cjQuYwky MDEzLTA2LTEwIDE0OjQ0OjM3LjM5MjgxMjY3NSArMDIwMAorKysrIGdkYi03LjYvZ2RiL3NvbGli LXN2cjQuYwkyMDEzLTA2LTEwIDE0OjQ0OjM3LjcxMjgxMjU3OCArMDIwMAorQEAgLTQ2LDEwICs0 NiwxMiBAQAorICNpbmNsdWRlICJhdXh2LmgiCisgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKyAj aW5jbHVkZSAiZ2RiX2JmZC5oIgorKyNpbmNsdWRlICJwcm9iZS5oIgorIAorIHN0YXRpYyBzdHJ1 Y3QgbGlua19tYXBfb2Zmc2V0cyAqc3ZyNF9mZXRjaF9saW5rX21hcF9vZmZzZXRzICh2b2lkKTsK KyBzdGF0aWMgaW50IHN2cjRfaGF2ZV9saW5rX21hcF9vZmZzZXRzICh2b2lkKTsKKyBzdGF0aWMg dm9pZCBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAodm9pZCk7Cisrc3RhdGljIHZvaWQg c3ZyNF9mcmVlX2xpYnJhcnlfbGlzdCAodm9pZCAqcF9saXN0KTsKKyAKKyAvKiBMaW5rIG1hcCBp bmZvIHRvIGluY2x1ZGUgaW4gYW4gYWxsb2NhdGVkIHNvX2xpc3QgZW50cnkuICAqLworIAorQEAg LTEwNiw2ICsxMDgsNTUgQEAgc3RhdGljIGNvbnN0ICBjaGFyICogY29uc3QgbWFpbl9uYW1lX2xp cworICAgTlVMTAorIH07CisgCisrLyogV2hhdCB0byBkbyB3aGVuIGEgcHJvYmUgc3RvcCBvY2N1 cnMuICAqLworKworK2VudW0gcHJvYmVfYWN0aW9uCisreworKyAgLyogU29tZXRoaW5nIHdlbnQg c2VyaW91c2x5IHdyb25nLiAgU3RvcCB1c2luZyBwcm9iZXMgYW5kCisrICAgICByZXZlcnQgdG8g dXNpbmcgdGhlIG9sZGVyIGludGVyZmFjZS4gICovCisrICBQUk9CRVNfSU5URVJGQUNFX0ZBSUxF RCwKKysKKysgIC8qIE5vIGFjdGlvbiBpcyByZXF1aXJlZC4gIFRoZSBzaGFyZWQgb2JqZWN0IGxp c3QgaXMgc3RpbGwKKysgICAgIHZhbGlkLiAgKi8KKysgIERPX05PVEhJTkcsCisrCisrICAvKiBU aGUgc2hhcmVkIG9iamVjdCBsaXN0IHNob3VsZCBiZSByZWxvYWRlZCBlbnRpcmVseS4gICovCisr ICBGVUxMX1JFTE9BRCwKKysKKysgIC8qIEF0dGVtcHQgdG8gaW5jcmVtZW50YWxseSB1cGRhdGUg dGhlIHNoYXJlZCBvYmplY3QgbGlzdC4gSWYKKysgICAgIHRoZSB1cGRhdGUgZmFpbHMgb3IgaXMg bm90IHBvc3NpYmxlLCBmYWxsIGJhY2sgdG8gcmVsb2FkaW5nCisrICAgICB0aGUgbGlzdCBpbiBm dWxsLiAgKi8KKysgIFVQREFURV9PUl9SRUxPQUQsCisrfTsKKysKKysvKiBBIHByb2JlJ3MgbmFt ZSBhbmQgaXRzIGFzc29jaWF0ZWQgYWN0aW9uLiAgKi8KKysKKytzdHJ1Y3QgcHJvYmVfaW5mbwor K3sKKysgIC8qIFRoZSBuYW1lIG9mIHRoZSBwcm9iZS4gICovCisrICBjb25zdCBjaGFyICpuYW1l OworKworKyAgLyogV2hhdCB0byBkbyB3aGVuIGEgcHJvYmUgc3RvcCBvY2N1cnMuICAqLworKyAg ZW51bSBwcm9iZV9hY3Rpb24gYWN0aW9uOworK307CisrCisrLyogQSBsaXN0IG9mIG5hbWVkIHBy b2JlcyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBhY3Rpb25zLiAgSWYgYWxsCisrICAgcHJvYmVzIGFy ZSBwcmVzZW50IGluIHRoZSBkeW5hbWljIGxpbmtlciB0aGVuIHRoZSBwcm9iZXMtYmFzZWQKKysg ICBpbnRlcmZhY2Ugd2lsbCBiZSB1c2VkLiAgKi8KKysKKytzdGF0aWMgY29uc3Qgc3RydWN0IHBy b2JlX2luZm8gcHJvYmVfaW5mb1tdID0KKyt7CisrICB7ICJpbml0X3N0YXJ0IiwgRE9fTk9USElO RyB9LAorKyAgeyAiaW5pdF9jb21wbGV0ZSIsIEZVTExfUkVMT0FEIH0sCisrICB7ICJtYXBfc3Rh cnQiLCBET19OT1RISU5HIH0sCisrICB7ICJtYXBfZmFpbGVkIiwgRE9fTk9USElORyB9LAorKyAg eyAicmVsb2NfY29tcGxldGUiLCBVUERBVEVfT1JfUkVMT0FEIH0sCisrICB7ICJ1bm1hcF9zdGFy dCIsIERPX05PVEhJTkcgfSwKKysgIHsgInVubWFwX2NvbXBsZXRlIiwgRlVMTF9SRUxPQUQgfSwK Kyt9OworKworKyNkZWZpbmUgTlVNX1BST0JFUyBBUlJBWV9TSVpFIChwcm9iZV9pbmZvKQorKwor IC8qIFJldHVybiBub24temVybyBpZiBHREJfU09fTkFNRSBhbmQgSU5GRVJJT1JfU09fTkFNRSBy ZXByZXNlbnQKKyAgICB0aGUgc2FtZSBzaGFyZWQgbGlicmFyeS4gICovCisgCitAQCAtMzEzLDE3 ICszNjQsNTggQEAgc3RydWN0IHN2cjRfaW5mbworICAgQ09SRV9BRERSIGludGVycF90ZXh0X3Nl Y3RfaGlnaDsKKyAgIENPUkVfQUREUiBpbnRlcnBfcGx0X3NlY3RfbG93OworICAgQ09SRV9BRERS IGludGVycF9wbHRfc2VjdF9oaWdoOworKworKyAgLyogTm9uemVybyBpZiB0aGUgbGlzdCBvZiBv YmplY3RzIHdhcyBsYXN0IG9idGFpbmVkIGZyb20gdGhlIHRhcmdldAorKyAgICAgdmlhIHFYZmVy OmxpYnJhcmllcy1zdnI0OnJlYWQuICAqLworKyAgaW50IHVzaW5nX3hmZXI7CisrCisrICAvKiBU YWJsZSBvZiBzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlvbiBpbnN0YW5jZXMsIHVzZWQgYnkgdGhlCisr ICAgICBwcm9iZXMtYmFzZWQgaW50ZXJmYWNlIHRvIG1hcCBicmVha3BvaW50IGFkZHJlc3NlcyB0 byBwcm9iZXMKKysgICAgIGFuZCB0aGVpciBhc3NvY2lhdGVkIGFjdGlvbnMuICBMb29rdXAgaXMg cGVyZm9ybWVkIHVzaW5nCisrICAgICBwcm9iZV9hbmRfYWN0aW9uLT5wcm9iZS0+YWRkcmVzcy4g ICovCisrICBodGFiX3QgcHJvYmVzX3RhYmxlOworKworKyAgLyogTGlzdCBvZiBvYmplY3RzIGxv YWRlZCBpbnRvIHRoZSBpbmZlcmlvciwgdXNlZCBieSB0aGUgcHJvYmVzLQorKyAgICAgYmFzZWQg aW50ZXJmYWNlLiAgKi8KKysgIHN0cnVjdCBzb19saXN0ICpzb2xpYl9saXN0OworIH07CisgCisg LyogUGVyLXByb2dyYW0tc3BhY2UgZGF0YSBrZXkuICAqLworIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg cHJvZ3JhbV9zcGFjZV9kYXRhICpzb2xpYl9zdnI0X3BzcGFjZV9kYXRhOworIAorKy8qIEZyZWUg dGhlIHByb2JlcyB0YWJsZS4gICovCisrCisrc3RhdGljIHZvaWQKKytmcmVlX3Byb2Jlc190YWJs ZSAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbykKKyt7CisrICBpZiAoaW5mby0+cHJvYmVzX3RhYmxl ID09IE5VTEwpCisrICAgIHJldHVybjsKKysKKysgIGh0YWJfZGVsZXRlIChpbmZvLT5wcm9iZXNf dGFibGUpOworKyAgaW5mby0+cHJvYmVzX3RhYmxlID0gTlVMTDsKKyt9CisrCisrLyogRnJlZSB0 aGUgc29saWIgbGlzdC4gICovCisrCisrc3RhdGljIHZvaWQKKytmcmVlX3NvbGliX2xpc3QgKHN0 cnVjdCBzdnI0X2luZm8gKmluZm8pCisreworKyAgc3ZyNF9mcmVlX2xpYnJhcnlfbGlzdCAoJmlu Zm8tPnNvbGliX2xpc3QpOworKyAgaW5mby0+c29saWJfbGlzdCA9IE5VTEw7CisrfQorKworIHN0 YXRpYyB2b2lkCisgc3ZyNF9wc3BhY2VfZGF0YV9jbGVhbnVwIChzdHJ1Y3QgcHJvZ3JhbV9zcGFj ZSAqcHNwYWNlLCB2b2lkICphcmcpCisgeworICAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbzsKKyAK KyAgIGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgc29saWJfc3ZyNF9wc3BhY2Vf ZGF0YSk7CisrICBpZiAoaW5mbyA9PSBOVUxMKQorKyAgICByZXR1cm47CisrCisrICBmcmVlX3By b2Jlc190YWJsZSAoaW5mbyk7CisrICBmcmVlX3NvbGliX2xpc3QgKGluZm8pOworKworICAgeGZy ZWUgKGluZm8pOworIH0KKyAKK0BAIC05ODIsNiArMTA3NCwzNCBAQCBzdnI0X2ZyZWVfbGlicmFy eV9saXN0ICh2b2lkICpwX2xpc3QpCisgICAgIH0KKyB9CisgCisrLyogQ29weSBsaWJyYXJ5IGxp c3QuICAqLworKworK3N0YXRpYyBzdHJ1Y3Qgc29fbGlzdCAqCisrc3ZyNF9jb3B5X2xpYnJhcnlf bGlzdCAoc3RydWN0IHNvX2xpc3QgKnNyYykKKyt7CisrICBzdHJ1Y3Qgc29fbGlzdCAqZHN0ID0g TlVMTDsKKysgIHN0cnVjdCBzb19saXN0ICoqbGluayA9ICZkc3Q7CisrCisrICB3aGlsZSAoc3Jj ICE9IE5VTEwpCisrICAgIHsKKysgICAgICBzdHJ1Y3Qgc29fbGlzdCAqbmV3OworKworKyAgICAg IG5ldyA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHNvX2xpc3QpKTsKKysgICAgICBtZW1jcHkg KG5ldywgc3JjLCBzaXplb2YgKHN0cnVjdCBzb19saXN0KSk7CisrCisrICAgICAgbmV3LT5sbV9p bmZvID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgbG1faW5mbykpOworKyAgICAgIG1lbWNweSAo bmV3LT5sbV9pbmZvLCBzcmMtPmxtX2luZm8sIHNpemVvZiAoc3RydWN0IGxtX2luZm8pKTsKKysK KysgICAgICBuZXctPm5leHQgPSBOVUxMOworKyAgICAgICpsaW5rID0gbmV3OworKyAgICAgIGxp bmsgPSAmbmV3LT5uZXh0OworKworKyAgICAgIHNyYyA9IHNyYy0+bmV4dDsKKysgICAgfQorKwor KyAgcmV0dXJuIGRzdDsKKyt9CisrCisgI2lmZGVmIEhBVkVfTElCRVhQQVQKKyAKKyAjaW5jbHVk ZSAieG1sLXN1cHBvcnQuaCIKK0BAIC0xMDk3LDIzICsxMjE3LDMwIEBAIHN2cjRfcGFyc2VfbGli cmFyaWVzIChjb25zdCBjaGFyICpkb2N1bWUKKyAgIHJldHVybiAwOworIH0KKyAKKy0vKiBBdHRl bXB0IHRvIGdldCBzb19saXN0IGZyb20gdGFyZ2V0IHZpYSBxWGZlcjpsaWJyYXJpZXM6cmVhZCBw YWNrZXQuCisrLyogQXR0ZW1wdCB0byBnZXQgc29fbGlzdCBmcm9tIHRhcmdldCB2aWEgcVhmZXI6 bGlicmFyaWVzLXN2cjQ6cmVhZCBwYWNrZXQuCisgCisgICAgUmV0dXJuIDAgaWYgcGFja2V0IG5v dCBzdXBwb3J0ZWQsICpTT19MSVNUX1JFVFVSTiBpcyBub3QgbW9kaWZpZWQgaW4gc3VjaAorICAg IGNhc2UuICBSZXR1cm4gMSBpZiAqU09fTElTVF9SRVRVUk4gY29udGFpbnMgdGhlIGxpYnJhcnkg bGlzdCwgaXQgbWF5IGJlCistICAgZW1wdHksIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZnJl ZWluZyBhbGwgaXRzIGVudHJpZXMuICAqLworKyAgIGVtcHR5LCBjYWxsZXIgaXMgcmVzcG9uc2li bGUgZm9yIGZyZWVpbmcgYWxsIGl0cyBlbnRyaWVzLgorKworKyAgIE5vdGUgdGhhdCBBTk5FWCBt dXN0IGJlIE5VTEwgaWYgdGhlIHJlbW90ZSBkb2VzIG5vdCBleHBsaWNpdGx5IGFsbG93CisrICAg cVhmZXI6bGlicmFyaWVzLXN2cjQ6cmVhZCBwYWNrZXRzIHdpdGggbm9uLWVtcHR5IGFubmV4ZXMu ICBTdXBwb3J0IGZvcgorKyAgIHRoaXMgY2FuIGJlIGNoZWNrZWQgdXNpbmcgdGFyZ2V0X2F1Z21l bnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkICgpLiAgKi8KKyAKKyBzdGF0aWMgaW50Cistc3ZyNF9j dXJyZW50X3Nvc192aWFfeGZlcl9saWJyYXJpZXMgKHN0cnVjdCBzdnI0X2xpYnJhcnlfbGlzdCAq bGlzdCkKKytzdnI0X2N1cnJlbnRfc29zX3ZpYV94ZmVyX2xpYnJhcmllcyAoc3RydWN0IHN2cjRf bGlicmFyeV9saXN0ICpsaXN0LAorKwkJCQkgICAgIGNvbnN0IGNoYXIgKmFubmV4KQorIHsKKyAg IGNoYXIgKnN2cjRfbGlicmFyeV9kb2N1bWVudDsKKyAgIGludCByZXN1bHQ7CisgICBzdHJ1Y3Qg Y2xlYW51cCAqYmFja190bzsKKyAKKysgIGdkYl9hc3NlcnQgKGFubmV4ID09IE5VTEwgfHwgdGFy Z2V0X2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkICgpKTsKKysKKyAgIC8qIEZldGNoIHRo ZSBsaXN0IG9mIHNoYXJlZCBsaWJyYXJpZXMuICAqLworICAgc3ZyNF9saWJyYXJ5X2RvY3VtZW50 ID0gdGFyZ2V0X3JlYWRfc3RyYWxsb2MgKCZjdXJyZW50X3RhcmdldCwKKyAJCQkJCQlUQVJHRVRf T0JKRUNUX0xJQlJBUklFU19TVlI0LAorLQkJCQkJCU5VTEwpOworKwkJCQkJCWFubmV4KTsKKyAg IGlmIChzdnI0X2xpYnJhcnlfZG9jdW1lbnQgPT0gTlVMTCkKKyAgICAgcmV0dXJuIDA7CisgCitA QCAtMTEyNyw3ICsxMjU0LDggQEAgc3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9saWJyYXJpZXMg KHN0cgorICNlbHNlCisgCisgc3RhdGljIGludAorLXN2cjRfY3VycmVudF9zb3NfdmlhX3hmZXJf bGlicmFyaWVzIChzdHJ1Y3Qgc3ZyNF9saWJyYXJ5X2xpc3QgKmxpc3QpCisrc3ZyNF9jdXJyZW50 X3Nvc192aWFfeGZlcl9saWJyYXJpZXMgKHN0cnVjdCBzdnI0X2xpYnJhcnlfbGlzdCAqbGlzdCwK KysJCQkJICAgICBjb25zdCBjaGFyICphbm5leCkKKyB7CisgICByZXR1cm4gMDsKKyB9CitAQCAt MTE2MSwxNSArMTI4OSwxOSBAQCBzdnI0X2RlZmF1bHRfc29zICh2b2lkKQorICAgcmV0dXJuIG5l dzsKKyB9CisgCistLyogUmVhZCB0aGUgd2hvbGUgaW5mZXJpb3IgbGlicmFyaWVzIGNoYWluIHN0 YXJ0aW5nIGF0IGFkZHJlc3MgTE0uICBBZGQgdGhlCistICAgZW50cmllcyB0byB0aGUgdGFpbCBy ZWZlcmVuY2VkIGJ5IExJTktfUFRSX1BUUi4gIElnbm9yZSB0aGUgZmlyc3QgZW50cnkgaWYKKy0g ICBJR05PUkVfRklSU1QgYW5kIHNldCBnbG9iYWwgTUFJTl9MTV9BRERSIGFjY29yZGluZyB0byBp dC4gICovCisrLyogUmVhZCB0aGUgd2hvbGUgaW5mZXJpb3IgbGlicmFyaWVzIGNoYWluIHN0YXJ0 aW5nIGF0IGFkZHJlc3MgTE0uCisrICAgRXhwZWN0IHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgY2hh aW4ncyBwcmV2aW91cyBlbnRyeSB0byBiZSBQUkVWX0xNLgorKyAgIEFkZCB0aGUgZW50cmllcyB0 byB0aGUgdGFpbCByZWZlcmVuY2VkIGJ5IExJTktfUFRSX1BUUi4gIElnbm9yZSB0aGUKKysgICBm aXJzdCBlbnRyeSBpZiBJR05PUkVfRklSU1QgYW5kIHNldCBnbG9iYWwgTUFJTl9MTV9BRERSIGFj Y29yZGluZworKyAgIHRvIGl0LiAgUmV0dXJucyBub256ZXJvIHVwb24gc3VjY2Vzcy4gIElmIHpl cm8gaXMgcmV0dXJuZWQgdGhlCisrICAgZW50cmllcyBzdG9yZWQgdG8gTElOS19QVFJfUFRSIGFy ZSBzdGlsbCB2YWxpZCBhbHRob3VnaCB0aGV5IG1heQorKyAgIHJlcHJlc2VudCBvbmx5IHBhcnQg b2YgdGhlIGluZmVyaW9yIGxpYnJhcnkgbGlzdC4gICovCisgCistc3RhdGljIHZvaWQKKy1zdnI0 X3JlYWRfc29fbGlzdCAoQ09SRV9BRERSIGxtLCBzdHJ1Y3Qgc29fbGlzdCAqKipsaW5rX3B0cl9w dHIsCistCQkgICBpbnQgaWdub3JlX2ZpcnN0KQorK3N0YXRpYyBpbnQKKytzdnI0X3JlYWRfc29f bGlzdCAoQ09SRV9BRERSIGxtLCBDT1JFX0FERFIgcHJldl9sbSwKKysJCSAgIHN0cnVjdCBzb19s aXN0ICoqKmxpbmtfcHRyX3B0ciwgaW50IGlnbm9yZV9maXJzdCkKKyB7CistICBDT1JFX0FERFIg cHJldl9sbSA9IDAsIG5leHRfbG07CisrICBDT1JFX0FERFIgbmV4dF9sbTsKKyAKKyAgIGZvciAo OyBsbSAhPSAwOyBwcmV2X2xtID0gbG0sIGxtID0gbmV4dF9sbSkKKyAgICAgeworQEAgLTExODUs NyArMTMxNyw3IEBAIHN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0sIHN0cnVjdAorICAg ICAgIGlmIChuZXctPmxtX2luZm8gPT0gTlVMTCkKKyAJeworIAkgIGRvX2NsZWFudXBzIChvbGRf Y2hhaW4pOworLQkgIGJyZWFrOworKwkgIHJldHVybiAwOworIAl9CisgCisgICAgICAgbmV4dF9s bSA9IG5ldy0+bG1faW5mby0+bF9uZXh0OworQEAgLTExOTYsNyArMTMyOCw3IEBAIHN2cjRfcmVh ZF9zb19saXN0IChDT1JFX0FERFIgbG0sIHN0cnVjdAorIAkJICAgcGFkZHJlc3MgKHRhcmdldF9n ZGJhcmNoICgpLCBwcmV2X2xtKSwKKyAJCSAgIHBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCAoKSwg bmV3LT5sbV9pbmZvLT5sX3ByZXYpKTsKKyAJICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKKy0J ICBicmVhazsKKysJICByZXR1cm4gMDsKKyAJfQorIAorICAgICAgIC8qIEZvciBTVlI0IHZlcnNp b25zLCB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIGxpbmsgbWFwIGlzIGZvciB0aGUKK0BAIC0xMjkx LDE3ICsxNDIzLDIxIEBAIHN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0sIHN0cnVjdAor ICAgICAgICoqbGlua19wdHJfcHRyID0gbmV3OworICAgICAgICpsaW5rX3B0cl9wdHIgPSAmbmV3 LT5uZXh0OworICAgICB9CisrCisrICByZXR1cm4gMTsKKyB9CisgCistLyogSW1wbGVtZW50IHRo ZSAiY3VycmVudF9zb3MiIHRhcmdldF9zb19vcHMgbWV0aG9kLiAgKi8KKysvKiBSZWFkIHRoZSBm dWxsIGxpc3Qgb2YgY3VycmVudGx5IGxvYWRlZCBzaGFyZWQgb2JqZWN0cyBkaXJlY3RseQorKyAg IGZyb20gdGhlIGluZmVyaW9yLCB3aXRob3V0IHJlZmVycmluZyB0byBhbnkgbGlicmFyaWVzIHJl YWQgYW5kCisrICAgc3RvcmVkIGJ5IHRoZSBwcm9iZXMgaW50ZXJmYWNlLiAgSGFuZGxlIHNwZWNp YWwgY2FzZXMgcmVsYXRpbmcKKysgICB0byB0aGUgZmlyc3QgZWxlbWVudHMgb2YgdGhlIGxpc3Qu ICAqLworIAorIHN0YXRpYyBzdHJ1Y3Qgc29fbGlzdCAqCistc3ZyNF9jdXJyZW50X3NvcyAodm9p ZCkKKytzdnI0X2N1cnJlbnRfc29zX2RpcmVjdCAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbykKKyB7 CisgICBDT1JFX0FERFIgbG07CisgICBzdHJ1Y3Qgc29fbGlzdCAqaGVhZCA9IE5VTEw7CisgICBz dHJ1Y3Qgc29fbGlzdCAqKmxpbmtfcHRyID0gJmhlYWQ7CistICBzdHJ1Y3Qgc3ZyNF9pbmZvICpp bmZvOworICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CisgICBpbnQgaWdub3JlX2ZpcnN0Owor ICAgc3RydWN0IHN2cjRfbGlicmFyeV9saXN0IGxpYnJhcnlfbGlzdDsKK0BAIC0xMzE0LDE5ICsx NDUwLDE2IEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCisgICAgICBVbmZvcnR1bmF0ZWx5IHN0 YXRpY2FsbHkgbGlua2VkIGluZmVyaW9ycyB3aWxsIGFsc28gZmFsbCBiYWNrIHRocm91Z2ggdGhp cworICAgICAgc3Vib3B0aW1hbCBjb2RlIHBhdGguICAqLworIAorLSAgaWYgKHN2cjRfY3VycmVu dF9zb3NfdmlhX3hmZXJfbGlicmFyaWVzICgmbGlicmFyeV9saXN0KSkKKysgIGluZm8tPnVzaW5n X3hmZXIgPSBzdnI0X2N1cnJlbnRfc29zX3ZpYV94ZmVyX2xpYnJhcmllcyAoJmxpYnJhcnlfbGlz dCwKKysJCQkJCQkJICBOVUxMKTsKKysgIGlmIChpbmZvLT51c2luZ194ZmVyKQorICAgICB7Cisg ICAgICAgaWYgKGxpYnJhcnlfbGlzdC5tYWluX2xtKQorLQl7CistCSAgaW5mbyA9IGdldF9zdnI0 X2luZm8gKCk7CistCSAgaW5mby0+bWFpbl9sbV9hZGRyID0gbGlicmFyeV9saXN0Lm1haW5fbG07 CistCX0KKysJaW5mby0+bWFpbl9sbV9hZGRyID0gbGlicmFyeV9saXN0Lm1haW5fbG07CisgCisg ICAgICAgcmV0dXJuIGxpYnJhcnlfbGlzdC5oZWFkID8gbGlicmFyeV9saXN0LmhlYWQgOiBzdnI0 X2RlZmF1bHRfc29zICgpOworICAgICB9CisgCistICBpbmZvID0gZ2V0X3N2cjRfaW5mbyAoKTsK Ky0KKyAgIC8qIEFsd2F5cyBsb2NhdGUgdGhlIGRlYnVnIHN0cnVjdCwgaW4gY2FzZSBpdCBoYXMg bW92ZWQuICAqLworICAgaW5mby0+ZGVidWdfYmFzZSA9IDA7CisgICBsb2NhdGVfYmFzZSAoaW5m byk7CitAQCAtMTM0OSw3ICsxNDgyLDcgQEAgc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKKyAgICAg IGBzdHJ1Y3Qgc29fbGlzdCcgbm9kZXMuICAqLworICAgbG0gPSBzb2xpYl9zdnI0X3JfbWFwIChp bmZvKTsKKyAgIGlmIChsbSkKKy0gICAgc3ZyNF9yZWFkX3NvX2xpc3QgKGxtLCAmbGlua19wdHIs IGlnbm9yZV9maXJzdCk7CisrICAgIHN2cjRfcmVhZF9zb19saXN0IChsbSwgMCwgJmxpbmtfcHRy LCBpZ25vcmVfZmlyc3QpOworIAorICAgLyogT24gU29sYXJpcywgdGhlIGR5bmFtaWMgbGlua2Vy IGlzIG5vdCBpbiB0aGUgbm9ybWFsIGxpc3Qgb2YKKyAgICAgIHNoYXJlZCBvYmplY3RzLCBzbyBt YWtlIHN1cmUgd2UgcGljayBpdCB1cCB0b28uICBIYXZpbmcKK0BAIC0xMzU3LDcgKzE0OTAsNyBA QCBzdnI0X2N1cnJlbnRfc29zICh2b2lkKQorICAgICAgZm9yIHNraXBwaW5nIGR5bmFtaWMgbGlu a2VyIHJlc29sdmVyIGNvZGUuICAqLworICAgbG0gPSBzb2xpYl9zdnI0X3JfbGRzb21hcCAoaW5m byk7CisgICBpZiAobG0pCistICAgIHN2cjRfcmVhZF9zb19saXN0IChsbSwgJmxpbmtfcHRyLCAw KTsKKysgICAgc3ZyNF9yZWFkX3NvX2xpc3QgKGxtLCAwLCAmbGlua19wdHIsIDApOworIAorICAg ZGlzY2FyZF9jbGVhbnVwcyAoYmFja190byk7CisgCitAQCAtMTM2Nyw2ICsxNTAwLDIyIEBAIHN2 cjRfY3VycmVudF9zb3MgKHZvaWQpCisgICByZXR1cm4gaGVhZDsKKyB9CisgCisrLyogSW1wbGVt ZW50IHRoZSAiY3VycmVudF9zb3MiIHRhcmdldF9zb19vcHMgbWV0aG9kLiAgKi8KKysKKytzdGF0 aWMgc3RydWN0IHNvX2xpc3QgKgorK3N2cjRfY3VycmVudF9zb3MgKHZvaWQpCisreworKyAgc3Ry dWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7CisrCisrICAvKiBJZiB0aGUg c29saWIgbGlzdCBoYXMgYmVlbiByZWFkIGFuZCBzdG9yZWQgYnkgdGhlIHByb2JlcworKyAgICAg aW50ZXJmYWNlIHRoZW4gd2UgcmV0dXJuIGEgY29weSBvZiB0aGUgc3RvcmVkIGxpc3QuICAqLwor KyAgaWYgKGluZm8tPnNvbGliX2xpc3QgIT0gTlVMTCkKKysgICAgcmV0dXJuIHN2cjRfY29weV9s aWJyYXJ5X2xpc3QgKGluZm8tPnNvbGliX2xpc3QpOworKworKyAgLyogT3RoZXJ3aXNlIG9idGFp biB0aGUgc29saWIgbGlzdCBkaXJlY3RseSBmcm9tIHRoZSBpbmZlcmlvci4gICovCisrICByZXR1 cm4gc3ZyNF9jdXJyZW50X3Nvc19kaXJlY3QgKGluZm8pOworK30KKysKKyAvKiBHZXQgdGhlIGFk ZHJlc3Mgb2YgdGhlIGxpbmtfbWFwIGZvciBhIGdpdmVuIE9CSkZJTEUuICAqLworIAorIENPUkVf QUREUgorQEAgLTE0NDksNiArMTU5OCw0NzYgQEAgZXhlY19lbnRyeV9wb2ludCAoc3RydWN0IGJm ZCAqYWJmZCwgc3RydQorICAgcmV0dXJuIGdkYmFyY2hfYWRkcl9iaXRzX3JlbW92ZSAodGFyZ2V0 X2dkYmFyY2ggKCksIGFkZHIpOworIH0KKyAKKysvKiBBIHByb2JlIGFuZCBpdHMgYXNzb2NpYXRl ZCBhY3Rpb24uICAqLworKworK3N0cnVjdCBwcm9iZV9hbmRfYWN0aW9uCisreworKyAgLyogVGhl IHByb2JlLiAgKi8KKysgIHN0cnVjdCBwcm9iZSAqcHJvYmU7CisrCisrICAvKiBUaGUgYWN0aW9u LiAgKi8KKysgIGVudW0gcHJvYmVfYWN0aW9uIGFjdGlvbjsKKyt9OworKworKy8qIFJldHVybnMg YSBoYXNoIGNvZGUgZm9yIHRoZSBwcm9iZV9hbmRfYWN0aW9uIHJlZmVyZW5jZWQgYnkgcC4gICov CisrCisrc3RhdGljIGhhc2h2YWxfdAorK2hhc2hfcHJvYmVfYW5kX2FjdGlvbiAoY29uc3Qgdm9p ZCAqcCkKKyt7CisrICBjb25zdCBzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlvbiAqcGEgPSBwOworKwor KyAgcmV0dXJuIChoYXNodmFsX3QpIHBhLT5wcm9iZS0+YWRkcmVzczsKKyt9CisrCisrLyogUmV0 dXJucyBub24temVybyBpZiB0aGUgcHJvYmVfYW5kX2FjdGlvbnMgcmVmZXJlbmNlZCBieSBwMSBh bmQgcDIKKysgICBhcmUgZXF1YWwuICAqLworKworK3N0YXRpYyBpbnQKKytlcXVhbF9wcm9iZV9h bmRfYWN0aW9uIChjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpCisreworKyAgY29uc3Qg c3RydWN0IHByb2JlX2FuZF9hY3Rpb24gKnBhMSA9IHAxOworKyAgY29uc3Qgc3RydWN0IHByb2Jl X2FuZF9hY3Rpb24gKnBhMiA9IHAyOworKworKyAgcmV0dXJuIHBhMS0+cHJvYmUtPmFkZHJlc3Mg PT0gcGEyLT5wcm9iZS0+YWRkcmVzczsKKyt9CisrCisrLyogUmVnaXN0ZXIgYSBzb2xpYiBldmVu dCBwcm9iZSBhbmQgaXRzIGFzc29jaWF0ZWQgYWN0aW9uIGluIHRoZQorKyAgIHByb2JlcyB0YWJs ZS4gICovCisrCisrc3RhdGljIHZvaWQKKytyZWdpc3Rlcl9zb2xpYl9ldmVudF9wcm9iZSAoc3Ry dWN0IHByb2JlICpwcm9iZSwgZW51bSBwcm9iZV9hY3Rpb24gYWN0aW9uKQorK3sKKysgIHN0cnVj dCBzdnI0X2luZm8gKmluZm8gPSBnZXRfc3ZyNF9pbmZvICgpOworKyAgc3RydWN0IHByb2JlX2Fu ZF9hY3Rpb24gbG9va3VwLCAqcGE7CisrICB2b2lkICoqc2xvdDsKKysKKysgIC8qIENyZWF0ZSB0 aGUgcHJvYmVzIHRhYmxlLCBpZiBuZWNlc3NhcnkuICAqLworKyAgaWYgKGluZm8tPnByb2Jlc190 YWJsZSA9PSBOVUxMKQorKyAgICBpbmZvLT5wcm9iZXNfdGFibGUgPSBodGFiX2NyZWF0ZV9hbGxv YyAoMSwgaGFzaF9wcm9iZV9hbmRfYWN0aW9uLAorKwkJCQkJICAgIGVxdWFsX3Byb2JlX2FuZF9h Y3Rpb24sCisrCQkJCQkgICAgeGZyZWUsIHhjYWxsb2MsIHhmcmVlKTsKKysKKysgIGxvb2t1cC5w cm9iZSA9IHByb2JlOworKyAgc2xvdCA9IGh0YWJfZmluZF9zbG90IChpbmZvLT5wcm9iZXNfdGFi bGUsICZsb29rdXAsIElOU0VSVCk7CisrICBnZGJfYXNzZXJ0ICgqc2xvdCA9PSBIVEFCX0VNUFRZ X0VOVFJZKTsKKysKKysgIHBhID0gWENORVcgKHN0cnVjdCBwcm9iZV9hbmRfYWN0aW9uKTsKKysg IHBhLT5wcm9iZSA9IHByb2JlOworKyAgcGEtPmFjdGlvbiA9IGFjdGlvbjsKKysKKysgICpzbG90 ID0gcGE7CisrfQorKworKy8qIEdldCB0aGUgc29saWIgZXZlbnQgcHJvYmUgYXQgdGhlIHNwZWNp ZmllZCBsb2NhdGlvbiwgYW5kIHRoZQorKyAgIGFjdGlvbiBhc3NvY2lhdGVkIHdpdGggaXQuICBS ZXR1cm5zIE5VTEwgaWYgbm8gc29saWIgZXZlbnQgcHJvYmUKKysgICB3YXMgZm91bmQuICAqLwor KworK3N0YXRpYyBzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlvbiAqCisrc29saWJfZXZlbnRfcHJvYmVf YXQgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIENPUkVfQUREUiBhZGRyZXNzKQorK3sKKysgIHN0 cnVjdCBwcm9iZSBsb29rdXBfcHJvYmU7CisrICBzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlvbiBsb29r dXA7CisrICB2b2lkICoqc2xvdDsKKysKKysgIGxvb2t1cF9wcm9iZS5hZGRyZXNzID0gYWRkcmVz czsKKysgIGxvb2t1cC5wcm9iZSA9ICZsb29rdXBfcHJvYmU7CisrICBzbG90ID0gaHRhYl9maW5k X3Nsb3QgKGluZm8tPnByb2Jlc190YWJsZSwgJmxvb2t1cCwgTk9fSU5TRVJUKTsKKysKKysgIGlm IChzbG90ID09IE5VTEwpCisrICAgIHJldHVybiBOVUxMOworKworKyAgcmV0dXJuIChzdHJ1Y3Qg cHJvYmVfYW5kX2FjdGlvbiAqKSAqc2xvdDsKKyt9CisrCisrLyogRGVjaWRlIHdoYXQgYWN0aW9u IHRvIHRha2Ugd2hlbiB0aGUgc3BlY2lmaWVkIHNvbGliIGV2ZW50IHByb2JlIGlzCisrICAgaGl0 LiAgKi8KKysKKytzdGF0aWMgZW51bSBwcm9iZV9hY3Rpb24KKytzb2xpYl9ldmVudF9wcm9iZV9h Y3Rpb24gKHN0cnVjdCBwcm9iZV9hbmRfYWN0aW9uICpwYSkKKyt7CisrICBlbnVtIHByb2JlX2Fj dGlvbiBhY3Rpb247CisrICB1bnNpZ25lZCBwcm9iZV9hcmdjOworKworKyAgYWN0aW9uID0gcGEt PmFjdGlvbjsKKysgIGlmIChhY3Rpb24gPT0gRE9fTk9USElORyB8fCBhY3Rpb24gPT0gUFJPQkVT X0lOVEVSRkFDRV9GQUlMRUQpCisrICAgIHJldHVybiBhY3Rpb247CisrCisrICBnZGJfYXNzZXJ0 IChhY3Rpb24gPT0gRlVMTF9SRUxPQUQgfHwgYWN0aW9uID09IFVQREFURV9PUl9SRUxPQUQpOwor KworKyAgLyogQ2hlY2sgdGhhdCBhbiBhcHByb3ByaWF0ZSBudW1iZXIgb2YgYXJndW1lbnRzIGhh cyBiZWVuIHN1cHBsaWVkLgorKyAgICAgV2UgZXhwZWN0OgorKyAgICAgICBhcmcwOiBMbWlkX3Qg bG1pZCAobWFuZGF0b3J5KQorKyAgICAgICBhcmcxOiBzdHJ1Y3Qgcl9kZWJ1ZyAqZGVidWdfYmFz ZSAobWFuZGF0b3J5KQorKyAgICAgICBhcmcyOiBzdHJ1Y3QgbGlua19tYXAgKm5ldyAob3B0aW9u YWwsIGZvciBpbmNyZW1lbnRhbCB1cGRhdGVzKSAgKi8KKysgIHByb2JlX2FyZ2MgPSBnZXRfcHJv YmVfYXJndW1lbnRfY291bnQgKHBhLT5wcm9iZSk7CisrICBpZiAocHJvYmVfYXJnYyA9PSAyKQor KyAgICBhY3Rpb24gPSBGVUxMX1JFTE9BRDsKKysgIGVsc2UgaWYgKHByb2JlX2FyZ2MgPCAyKQor KyAgICBhY3Rpb24gPSBQUk9CRVNfSU5URVJGQUNFX0ZBSUxFRDsKKysKKysgIHJldHVybiBhY3Rp b247CisrfQorKworKy8qIFBvcHVsYXRlIHRoZSBzaGFyZWQgb2JqZWN0IGxpc3QgYnkgcmVhZGlu ZyB0aGUgZW50aXJlIGxpc3Qgb2YKKysgICBzaGFyZWQgb2JqZWN0cyBmcm9tIHRoZSBpbmZlcmlv ci4gIEhhbmRsZSBzcGVjaWFsIGNhc2VzIHJlbGF0aW5nCisrICAgdG8gdGhlIGZpcnN0IGVsZW1l bnRzIG9mIHRoZSBsaXN0LiAgUmV0dXJucyBub256ZXJvIG9uIHN1Y2Nlc3MuICAqLworKworK3N0 YXRpYyBpbnQKKytzb2xpc3RfdXBkYXRlX2Z1bGwgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCisr eworKyAgZnJlZV9zb2xpYl9saXN0IChpbmZvKTsKKysgIGluZm8tPnNvbGliX2xpc3QgPSBzdnI0 X2N1cnJlbnRfc29zX2RpcmVjdCAoaW5mbyk7CisrCisrICByZXR1cm4gMTsKKyt9CisrCisrLyog VXBkYXRlIHRoZSBzaGFyZWQgb2JqZWN0IGxpc3Qgc3RhcnRpbmcgZnJvbSB0aGUgbGluay1tYXAg ZW50cnkKKysgICBwYXNzZWQgYnkgdGhlIGxpbmtlciBpbiB0aGUgcHJvYmUncyB0aGlyZCBhcmd1 bWVudC4gIFJldHVybnMKKysgICBub256ZXJvIGlmIHRoZSBsaXN0IHdhcyBzdWNjZXNzZnVsbHkg dXBkYXRlZCwgb3IgemVybyB0byBpbmRpY2F0ZQorKyAgIGZhaWx1cmUuICAqLworKworK3N0YXRp YyBpbnQKKytzb2xpc3RfdXBkYXRlX2luY3JlbWVudGFsIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZv LCBDT1JFX0FERFIgbG0pCisreworKyAgc3RydWN0IHNvX2xpc3QgKnRhaWw7CisrICBDT1JFX0FE RFIgcHJldl9sbTsKKysKKysgIC8qIHN2cjRfY3VycmVudF9zb3NfZGlyZWN0IGNvbnRhaW5zIGxv Z2ljIHRvIGhhbmRsZSBhIG51bWJlciBvZgorKyAgICAgc3BlY2lhbCBjYXNlcyByZWxhdGluZyB0 byB0aGUgZmlyc3QgZWxlbWVudHMgb2YgdGhlIGxpc3QuICBUbworKyAgICAgYXZvaWQgZHVwbGlj YXRpbmcgdGhpcyBsb2dpYyB3ZSBkZWZlciB0byBzb2xpc3RfdXBkYXRlX2Z1bGwKKysgICAgIGlm IHRoZSBsaXN0IGlzIGVtcHR5LiAgKi8KKysgIGlmIChpbmZvLT5zb2xpYl9saXN0ID09IE5VTEwp CisrICAgIHJldHVybiAwOworKworKyAgLyogRmFsbCBiYWNrIHRvIGEgZnVsbCB1cGRhdGUgaWYg d2UgYXJlIHVzaW5nIGEgcmVtb3RlIHRhcmdldAorKyAgICAgdGhhdCBkb2VzIG5vdCBzdXBwb3J0 IGluY3JlbWVudGFsIHRyYW5zZmVycy4gICovCisrICBpZiAoaW5mby0+dXNpbmdfeGZlciAmJiAh dGFyZ2V0X2F1Z21lbnRlZF9saWJyYXJpZXNfc3ZyNF9yZWFkICgpKQorKyAgICByZXR1cm4gMDsK KysKKysgIC8qIFdhbGsgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4gICovCisrICBmb3IgKHRhaWwg PSBpbmZvLT5zb2xpYl9saXN0OyB0YWlsLT5uZXh0ICE9IE5VTEw7IHRhaWwgPSB0YWlsLT5uZXh0 KQorKyAgICAvKiBOb3RoaW5nLiAgKi87CisrICBwcmV2X2xtID0gdGFpbC0+bG1faW5mby0+bG1f YWRkcjsKKysKKysgIC8qIFJlYWQgdGhlIG5ldyBvYmplY3RzLiAgKi8KKysgIGlmIChpbmZvLT51 c2luZ194ZmVyKQorKyAgICB7CisrICAgICAgc3RydWN0IHN2cjRfbGlicmFyeV9saXN0IGxpYnJh cnlfbGlzdDsKKysgICAgICBjaGFyIGFubmV4WzY0XTsKKysKKysgICAgICB4c25wcmludGYgKGFu bmV4LCBzaXplb2YgKGFubmV4KSwgInN0YXJ0PSVzO3ByZXY9JXMiLAorKwkJIHBoZXhfbnogKGxt LCBzaXplb2YgKGxtKSksCisrCQkgcGhleF9ueiAocHJldl9sbSwgc2l6ZW9mIChwcmV2X2xtKSkp OworKyAgICAgIGlmICghc3ZyNF9jdXJyZW50X3Nvc192aWFfeGZlcl9saWJyYXJpZXMgKCZsaWJy YXJ5X2xpc3QsIGFubmV4KSkKKysJcmV0dXJuIDA7CisrCisrICAgICAgdGFpbC0+bmV4dCA9IGxp YnJhcnlfbGlzdC5oZWFkOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICBzdHJ1Y3Qg c29fbGlzdCAqKmxpbmsgPSAmdGFpbC0+bmV4dDsKKysKKysgICAgICAvKiBJR05PUkVfRklSU1Qg bWF5IHNhZmVseSBiZSBzZXQgdG8gemVybyBoZXJlIGJlY2F1c2UgdGhlCisrCSBhYm92ZSBjaGVj ayBhbmQgZGVmZXJyYWwgdG8gc29saXN0X3VwZGF0ZV9mdWxsIGVuc3VyZXMKKysJIHRoYXQgdGhp cyBjYWxsIHRvIHN2cjRfcmVhZF9zb19saXN0IHdpbGwgbmV2ZXIgc2VlIHRoZQorKwkgZmlyc3Qg ZWxlbWVudC4gICovCisrICAgICAgaWYgKCFzdnI0X3JlYWRfc29fbGlzdCAobG0sIHByZXZfbG0s ICZsaW5rLCAwKSkKKysJcmV0dXJuIDA7CisrICAgIH0KKysKKysgIHJldHVybiAxOworK30KKysK KysvKiBEaXNhYmxlIHRoZSBwcm9iZXMtYmFzZWQgbGlua2VyIGludGVyZmFjZSBhbmQgcmV2ZXJ0 IHRvIHRoZQorKyAgIG9yaWdpbmFsIGludGVyZmFjZS4gIFdlIGRvbid0IHJlc2V0IHRoZSBicmVh a3BvaW50cyBhcyB0aGUKKysgICBvbmVzIHNldCB1cCBmb3IgdGhlIHByb2Jlcy1iYXNlZCBpbnRl cmZhY2UgYXJlIGFkZXF1YXRlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2Rpc2FibGVfcHJvYmVz X2ludGVyZmFjZV9jbGVhbnVwICh2b2lkICphcmcpCisreworKyAgc3RydWN0IHN2cjRfaW5mbyAq aW5mbyA9IGdldF9zdnI0X2luZm8gKCk7CisrCisrICB3YXJuaW5nIChfKCJQcm9iZXMtYmFzZWQg ZHluYW1pYyBsaW5rZXIgaW50ZXJmYWNlIGZhaWxlZC5cbiIKKysJICAgICAiUmV2ZXJ0aW5nIHRv IG9yaWdpbmFsIGludGVyZmFjZS5cbiIpKTsKKysKKysgIGZyZWVfcHJvYmVzX3RhYmxlIChpbmZv KTsKKysgIGZyZWVfc29saWJfbGlzdCAoaW5mbyk7CisrfQorKworKy8qIFVwZGF0ZSB0aGUgc29s aWIgbGlzdCBhcyBhcHByb3ByaWF0ZSB3aGVuIHVzaW5nIHRoZQorKyAgIHByb2Jlcy1iYXNlZCBs aW5rZXIgaW50ZXJmYWNlLiAgRG8gbm90aGluZyBpZiB1c2luZyB0aGUKKysgICBzdGFuZGFyZCBp bnRlcmZhY2UuICAqLworKworK3N0YXRpYyB2b2lkCisrc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQg KHZvaWQpCisreworKyAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7 CisrICBzdHJ1Y3QgcHJvYmVfYW5kX2FjdGlvbiAqcGE7CisrICBlbnVtIHByb2JlX2FjdGlvbiBh Y3Rpb247CisrICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluLCAqdXNtX2NoYWluOworKyAgc3Ry dWN0IHZhbHVlICp2YWw7CisrICBDT1JFX0FERFIgcGMsIGRlYnVnX2Jhc2UsIGxtID0gMDsKKysg IGludCBpc19pbml0aWFsX25zOworKworKyAgLyogRG8gbm90aGluZyBpZiBub3QgdXNpbmcgdGhl IHByb2JlcyBpbnRlcmZhY2UuICAqLworKyAgaWYgKGluZm8tPnByb2Jlc190YWJsZSA9PSBOVUxM KQorKyAgICByZXR1cm47CisrCisrICAvKiBJZiBhbnl0aGluZyBnb2VzIHdyb25nIHdlIHJldmVy dCB0byB0aGUgb3JpZ2luYWwgbGlua2VyCisrICAgICBpbnRlcmZhY2UuICAqLworKyAgb2xkX2No YWluID0gbWFrZV9jbGVhbnVwIChkaXNhYmxlX3Byb2Jlc19pbnRlcmZhY2VfY2xlYW51cCwgTlVM TCk7CisrCisrICBwYyA9IHJlZ2NhY2hlX3JlYWRfcGMgKGdldF9jdXJyZW50X3JlZ2NhY2hlICgp KTsKKysgIHBhID0gc29saWJfZXZlbnRfcHJvYmVfYXQgKGluZm8sIHBjKTsKKysgIGlmIChwYSA9 PSBOVUxMKQorKyAgICB7CisrICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisrICAgICAg cmV0dXJuOworKyAgICB9CisrCisrICBhY3Rpb24gPSBzb2xpYl9ldmVudF9wcm9iZV9hY3Rpb24g KHBhKTsKKysgIGlmIChhY3Rpb24gPT0gUFJPQkVTX0lOVEVSRkFDRV9GQUlMRUQpCisrICAgIHsK KysgICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKKysgICAgICByZXR1cm47CisrICAgIH0K KysKKysgIGlmIChhY3Rpb24gPT0gRE9fTk9USElORykKKysgICAgeworKyAgICAgIGRpc2NhcmRf Y2xlYW51cHMgKG9sZF9jaGFpbik7CisrICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICAvKiBl dmFsdWF0ZV9wcm9iZV9hcmd1bWVudCBsb29rcyB1cCBzeW1ib2xzIGluIHRoZSBkeW5hbWljIGxp bmtlcgorKyAgICAgdXNpbmcgZmluZF9wY19zZWN0aW9uLiAgZmluZF9wY19zZWN0aW9uIGlzIGFj Y2VsZXJhdGVkIGJ5IGEgY2FjaGUKKysgICAgIGNhbGxlZCB0aGUgc2VjdGlvbiBtYXAuICBUaGUg c2VjdGlvbiBtYXAgaXMgaW52YWxpZGF0ZWQgZXZlcnkKKysgICAgIHRpbWUgYSBzaGFyZWQgbGli cmFyeSBpcyBsb2FkZWQgb3IgdW5sb2FkZWQsIGFuZCBpZiB0aGUgaW5mZXJpb3IKKysgICAgIGlz IGdlbmVyYXRpbmcgYSBsb3Qgb2Ygc2hhcmVkIGxpYnJhcnkgZXZlbnRzIHRoZW4gdGhlIHNlY3Rp b24gbWFwCisrICAgICB3aWxsIGJlIHVwZGF0ZWQgZXZlcnkgdGltZSBzdnI0X2hhbmRsZV9zb2xp Yl9ldmVudCBpcyBjYWxsZWQuCisrICAgICBXZSBjYWxsZWQgZmluZF9wY19zZWN0aW9uIGluIHN2 cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzLAorKyAgICAgc28gd2UgY2FuIGd1YXJh bnRlZSB0aGF0IHRoZSBkeW5hbWljIGxpbmtlcidzIHNlY3Rpb25zIGFyZSBpbiB0aGUKKysgICAg IHNlY3Rpb24gbWFwLiAgV2UgY2FuIHRoZXJlZm9yZSBpbmhpYml0IHNlY3Rpb24gbWFwIHVwZGF0 ZXMgYWNyb3NzCisrICAgICB0aGVzZSBjYWxscyB0byBldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCBh bmQgc2F2ZSBhIGxvdCBvZiB0aW1lLiAgKi8KKysgIGluaGliaXRfc2VjdGlvbl9tYXBfdXBkYXRl cyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKKysgIHVzbV9jaGFpbiA9IG1ha2VfY2xlYW51cCAo cmVzdW1lX3NlY3Rpb25fbWFwX3VwZGF0ZXNfY2xlYW51cCwKKysJCQkgICAgY3VycmVudF9wcm9n cmFtX3NwYWNlKTsKKysKKysgIHZhbCA9IGV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChwYS0+cHJv YmUsIDEpOworKyAgaWYgKHZhbCA9PSBOVUxMKQorKyAgICB7CisrICAgICAgZG9fY2xlYW51cHMg KG9sZF9jaGFpbik7CisrICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICBkZWJ1Z19iYXNlID0g dmFsdWVfYXNfYWRkcmVzcyAodmFsKTsKKysgIGlmIChkZWJ1Z19iYXNlID09IDApCisrICAgIHsK KysgICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKKysgICAgICByZXR1cm47CisrICAgIH0K KysKKysgIC8qIEFsd2F5cyBsb2NhdGUgdGhlIGRlYnVnIHN0cnVjdCwgaW4gY2FzZSBpdCBtb3Zl ZC4gICovCisrICBpbmZvLT5kZWJ1Z19iYXNlID0gMDsKKysgIGlmIChsb2NhdGVfYmFzZSAoaW5m bykgPT0gMCkKKysgICAgeworKyAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworKyAgICAg IHJldHVybjsKKysgICAgfQorKworKyAgLyogR0RCIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0 IGxpYnJhcmllcyBsb2FkZWQgdmlhIGRsbW9wZW4KKysgICAgIGludG8gbmFtZXNwYWNlcyBvdGhl ciB0aGFuIHRoZSBpbml0aWFsIG9uZS4gIFdlIG11c3QgaWdub3JlCisrICAgICBhbnkgbmFtZXNw YWNlIG90aGVyIHRoYW4gdGhlIGluaXRpYWwgbmFtZXNwYWNlIGhlcmUgdW50aWwKKysgICAgIHN1 cHBvcnQgZm9yIHRoaXMgaXMgYWRkZWQgdG8gR0RCLiAgKi8KKysgIGlmIChkZWJ1Z19iYXNlICE9 IGluZm8tPmRlYnVnX2Jhc2UpCisrICAgIGFjdGlvbiA9IERPX05PVEhJTkc7CisrCisrICBpZiAo YWN0aW9uID09IFVQREFURV9PUl9SRUxPQUQpCisrICAgIHsKKysgICAgICB2YWwgPSBldmFsdWF0 ZV9wcm9iZV9hcmd1bWVudCAocGEtPnByb2JlLCAyKTsKKysgICAgICBpZiAodmFsICE9IE5VTEwp CisrCWxtID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsKTsKKysKKysgICAgICBpZiAobG0gPT0gMCkK KysJYWN0aW9uID0gRlVMTF9SRUxPQUQ7CisrICAgIH0KKysKKysgIC8qIFJlc3VtZSBzZWN0aW9u IG1hcCB1cGRhdGVzLiAgKi8KKysgIGRvX2NsZWFudXBzICh1c21fY2hhaW4pOworKworKyAgaWYg KGFjdGlvbiA9PSBVUERBVEVfT1JfUkVMT0FEKQorKyAgICB7CisrICAgICAgaWYgKCFzb2xpc3Rf dXBkYXRlX2luY3JlbWVudGFsIChpbmZvLCBsbSkpCisrCWFjdGlvbiA9IEZVTExfUkVMT0FEOwor KyAgICB9CisrCisrICBpZiAoYWN0aW9uID09IEZVTExfUkVMT0FEKQorKyAgICB7CisrICAgICAg aWYgKCFzb2xpc3RfdXBkYXRlX2Z1bGwgKGluZm8pKQorKwl7CisrCSAgZG9fY2xlYW51cHMgKG9s ZF9jaGFpbik7CisrCSAgcmV0dXJuOworKwl9CisrICAgIH0KKysKKysgIGRpc2NhcmRfY2xlYW51 cHMgKG9sZF9jaGFpbik7CisrfQorKworKy8qIEhlbHBlciBmdW5jdGlvbiBmb3Igc3ZyNF91cGRh dGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMuICAqLworKworK3N0YXRpYyBpbnQKKytzdnI0X3Vw ZGF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgdm9pZCAq YXJnKQorK3sKKysgIHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jOworKworKyAgaWYgKGItPnR5cGUg IT0gYnBfc2hsaWJfZXZlbnQpCisrICAgIHsKKysgICAgICAvKiBDb250aW51ZSBpdGVyYXRpbmcu ICAqLworKyAgICAgIHJldHVybiAwOworKyAgICB9CisrCisrICBmb3IgKGxvYyA9IGItPmxvYzsg bG9jICE9IE5VTEw7IGxvYyA9IGxvYy0+bmV4dCkKKysgICAgeworKyAgICAgIHN0cnVjdCBzdnI0 X2luZm8gKmluZm87CisrICAgICAgc3RydWN0IHByb2JlX2FuZF9hY3Rpb24gKnBhOworKworKyAg ICAgIGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKGxvYy0+cHNwYWNlLCBzb2xpYl9zdnI0X3Bz cGFjZV9kYXRhKTsKKysgICAgICBpZiAoaW5mbyA9PSBOVUxMIHx8IGluZm8tPnByb2Jlc190YWJs ZSA9PSBOVUxMKQorKwljb250aW51ZTsKKysKKysgICAgICBwYSA9IHNvbGliX2V2ZW50X3Byb2Jl X2F0IChpbmZvLCBsb2MtPmFkZHJlc3MpOworKyAgICAgIGlmIChwYSA9PSBOVUxMKQorKwljb250 aW51ZTsKKysKKysgICAgICBpZiAocGEtPmFjdGlvbiA9PSBET19OT1RISU5HKQorKwl7CisrCSAg aWYgKGItPmVuYWJsZV9zdGF0ZSA9PSBicF9kaXNhYmxlZCAmJiBzdG9wX29uX3NvbGliX2V2ZW50 cykKKysJICAgIGVuYWJsZV9icmVha3BvaW50IChiKTsKKysJICBlbHNlIGlmIChiLT5lbmFibGVf c3RhdGUgPT0gYnBfZW5hYmxlZCAmJiAhc3RvcF9vbl9zb2xpYl9ldmVudHMpCisrCSAgICBkaXNh YmxlX2JyZWFrcG9pbnQgKGIpOworKwl9CisrCisrICAgICAgYnJlYWs7CisrICAgIH0KKysKKysg IC8qIENvbnRpbnVlIGl0ZXJhdGluZy4gICovCisrICByZXR1cm4gMDsKKyt9CisrCisrLyogRW5h YmxlIG9yIGRpc2FibGUgb3B0aW9uYWwgc29saWIgZXZlbnQgYnJlYWtwb2ludHMgYXMgYXBwcm9w cmlhdGUuCisrICAgQ2FsbGVkIHdoZW5ldmVyIHN0b3Bfb25fc29saWJfZXZlbnRzIGlzIGNoYW5n ZWQuICAqLworKworK3N0YXRpYyB2b2lkCisrc3ZyNF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtw b2ludHMgKHZvaWQpCisreworKyAgaXRlcmF0ZV9vdmVyX2JyZWFrcG9pbnRzIChzdnI0X3VwZGF0 ZV9zb2xpYl9ldmVudF9icmVha3BvaW50LCBOVUxMKTsKKyt9CisrCisrLyogQ3JlYXRlIGFuZCBy ZWdpc3RlciBzb2xpYiBldmVudCBicmVha3BvaW50cy4gIFBST0JFUyBpcyBhbiBhcnJheQorKyAg IG9mIE5VTV9QUk9CRVMgZWxlbWVudHMsIGVhY2ggb2Ygd2hpY2ggaXMgdmVjdG9yIG9mIHByb2Jl cy4gIEEKKysgICBzb2xpYiBldmVudCBicmVha3BvaW50IHdpbGwgYmUgY3JlYXRlZCBhbmQgcmVn aXN0ZXJlZCBmb3IgZWFjaAorKyAgIHByb2JlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3N2cjRf Y3JlYXRlX3Byb2JlX2JyZWFrcG9pbnRzIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJCQkg ICAgICAgVkVDIChwcm9iZV9wKSAqKnByb2JlcykKKyt7CisrICBpbnQgaTsKKysKKysgIGZvciAo aSA9IDA7IGkgPCBOVU1fUFJPQkVTOyBpKyspCisrICAgIHsKKysgICAgICBlbnVtIHByb2JlX2Fj dGlvbiBhY3Rpb24gPSBwcm9iZV9pbmZvW2ldLmFjdGlvbjsKKysgICAgICBzdHJ1Y3QgcHJvYmUg KnByb2JlOworKyAgICAgIGludCBpeDsKKysKKysgICAgICBmb3IgKGl4ID0gMDsKKysJICAgVkVD X2l0ZXJhdGUgKHByb2JlX3AsIHByb2Jlc1tpXSwgaXgsIHByb2JlKTsKKysJICAgKytpeCkKKysJ eworKwkgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50IChnZGJhcmNoLCBwcm9iZS0+YWRk cmVzcyk7CisrCSAgcmVnaXN0ZXJfc29saWJfZXZlbnRfcHJvYmUgKHByb2JlLCBhY3Rpb24pOwor Kwl9CisrICAgIH0KKysKKysgIHN2cjRfdXBkYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzICgp OworK30KKysKKysvKiBCb3RoIHRoZSBTdW5PUyBhbmQgdGhlIFNWUjQgZHluYW1pYyBsaW5rZXJz IGNhbGwgYSBtYXJrZXIgZnVuY3Rpb24KKysgICBiZWZvcmUgYW5kIGFmdGVyIG1hcHBpbmcgYW5k IHVubWFwcGluZyBzaGFyZWQgbGlicmFyaWVzLiAgVGhlIHNvbGUKKysgICBwdXJwb3NlIG9mIHRo aXMgbWV0aG9kIGlzIHRvIGFsbG93IGRlYnVnZ2VycyB0byBzZXQgYSBicmVha3BvaW50IHNvCisr ICAgdGhleSBjYW4gdHJhY2sgdGhlc2UgY2hhbmdlcy4KKysKKysgICBTb21lIHZlcnNpb25zIG9m IHRoZSBnbGliYyBkeW5hbWljIGxpbmtlciBjb250YWluIG5hbWVkIHByb2JlcworKyAgIHRvIGFs bG93IG1vcmUgZmluZSBncmFpbmVkIHN0b3BwaW5nLiAgR2l2ZW4gdGhlIGFkZHJlc3Mgb2YgdGhl CisrICAgb3JpZ2luYWwgbWFya2VyIGZ1bmN0aW9uLCB0aGlzIGZ1bmN0aW9uIGF0dGVtcHRzIHRv IGZpbmQgdGhlc2UKKysgICBwcm9iZXMsIGFuZCBpZiBmb3VuZCwgc2V0cyBicmVha3BvaW50cyBv biB0aG9zZSBpbnN0ZWFkLiAgSWYgdGhlCisrICAgcHJvYmVzIGFyZW4ndCBmb3VuZCwgYSBzaW5n bGUgYnJlYWtwb2ludCBpcyBzZXQgb24gdGhlIG9yaWdpbmFsCisrICAgbWFya2VyIGZ1bmN0aW9u LiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3N2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9p bnRzIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJCQkJICAgICBDT1JFX0FERFIgYWRkcmVz cykKKyt7CisrICBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKm9zOworKworKyAgb3MgPSBmaW5kX3BjX3Nl Y3Rpb24gKGFkZHJlc3MpOworKyAgaWYgKG9zICE9IE5VTEwpCisrICAgIHsKKysgICAgICBpbnQg d2l0aF9wcmVmaXg7CisrCisrICAgICAgZm9yICh3aXRoX3ByZWZpeCA9IDA7IHdpdGhfcHJlZml4 IDw9IDE7IHdpdGhfcHJlZml4KyspCisrCXsKKysJICBWRUMgKHByb2JlX3ApICpwcm9iZXNbTlVN X1BST0JFU107CisrCSAgaW50IGFsbF9wcm9iZXNfZm91bmQgPSAxOworKwkgIGludCBpOworKwor KwkgIG1lbXNldCAocHJvYmVzLCAwLCBzaXplb2YgKHByb2JlcykpOworKwkgIGZvciAoaSA9IDA7 IGkgPCBOVU1fUFJPQkVTOyBpKyspCisrCSAgICB7CisrCSAgICAgIGNvbnN0IGNoYXIgKm5hbWUg PSBwcm9iZV9pbmZvW2ldLm5hbWU7CisrCSAgICAgIGNoYXIgYnVmWzMyXTsKKysKKysJICAgICAg LyogRmVkb3JhIDE3IGFuZCBSZWQgSGF0IEVudGVycHJpc2UgTGludXggNi4yLTYuNAorKwkJIHNo aXBwZWQgd2l0aCBhbiBlYXJseSB2ZXJzaW9uIG9mIHRoZSBwcm9iZXMgY29kZSBpbgorKwkJIHdo aWNoIHRoZSBwcm9iZXMnIG5hbWVzIHdlcmUgcHJlZml4ZWQgd2l0aCAicnRsZF8iCisrCQkgYW5k IHRoZSAibWFwX2ZhaWxlZCIgcHJvYmUgZGlkIG5vdCBleGlzdC4gIFRoZQorKwkJIGxvY2F0aW9u cyBvZiB0aGUgcHJvYmVzIGFyZSBvdGhlcndpc2UgdGhlIHNhbWUsIHNvCisrCQkgd2UgY2hlY2sg Zm9yIHByb2JlcyB3aXRoIHByZWZpeGVkIG5hbWVzIGlmIHByb2JlcworKwkJIHdpdGggdW5wcmVm aXhlZCBuYW1lcyBhcmUgbm90IHByZXNlbnQuICAqLworKwkgICAgICBpZiAod2l0aF9wcmVmaXgp CisrCQl7CisrCQkgIHhzbnByaW50ZiAoYnVmLCBzaXplb2YgKGJ1ZiksICJydGxkXyVzIiwgbmFt ZSk7CisrCQkgIG5hbWUgPSBidWY7CisrCQl9CisrCisrCSAgICAgIHByb2Jlc1tpXSA9IGZpbmRf cHJvYmVzX2luX29iamZpbGUgKG9zLT5vYmpmaWxlLCAicnRsZCIsIG5hbWUpOworKworKwkgICAg ICAvKiBUaGUgIm1hcF9mYWlsZWQiIHByb2JlIGRpZCBub3QgZXhpc3QgaW4gZWFybHkKKysJCSB2 ZXJzaW9ucyBvZiB0aGUgcHJvYmVzIGNvZGUgaW4gd2hpY2ggdGhlIHByb2JlcycKKysJCSBuYW1l cyB3ZXJlIHByZWZpeGVkIHdpdGggInJ0bGRfIi4gICovCisrCSAgICAgIGlmIChzdHJjbXAgKG5h bWUsICJydGxkX21hcF9mYWlsZWQiKSA9PSAwKQorKwkJY29udGludWU7CisrCisrCSAgICAgIGlm IChWRUNfZW1wdHkgKHByb2JlX3AsIHByb2Jlc1tpXSkpCisrCQl7CisrCQkgIGFsbF9wcm9iZXNf Zm91bmQgPSAwOworKwkJICBicmVhazsKKysJCX0KKysJICAgIH0KKysKKysJICBpZiAoYWxsX3By b2Jlc19mb3VuZCkKKysJICAgIHN2cjRfY3JlYXRlX3Byb2JlX2JyZWFrcG9pbnRzIChnZGJhcmNo LCBwcm9iZXMpOworKworKwkgIGZvciAoaSA9IDA7IGkgPCBOVU1fUFJPQkVTOyBpKyspCisrCSAg ICBWRUNfZnJlZSAocHJvYmVfcCwgcHJvYmVzW2ldKTsKKysKKysJICBpZiAoYWxsX3Byb2Jlc19m b3VuZCkKKysJICAgIHJldHVybjsKKysJfQorKyAgICB9CisrCisrICBjcmVhdGVfc29saWJfZXZl bnRfYnJlYWtwb2ludCAoZ2RiYXJjaCwgYWRkcmVzcyk7CisrfQorKworIC8qIEhlbHBlciBmdW5j dGlvbiBmb3IgZ2RiX2JmZF9sb29rdXBfc3ltYm9sLiAgKi8KKyAKKyBzdGF0aWMgaW50CitAQCAt MTUzMiw3ICsyMTUxLDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBp bgorIAkgVGhhdCBrbm93bGVkZ2UgaXMgZW5jb2RlZCBpbiB0aGUgYWRkcmVzcywgaWYgaXQncyBU aHVtYiB0aGUgbG93IGJpdAorIAkgaXMgMS4gIEhvd2V2ZXIsIHdlJ3ZlIHN0cmlwcGVkIHRoYXQg aW5mbyBhYm92ZSBhbmQgaXQncyBub3QgY2xlYXIKKyAJIHdoYXQgYWxsIHRoZSBjb25zZXF1ZW5j ZXMgYXJlIG9mIHBhc3NpbmcgYSBub24tYWRkcl9iaXRzX3JlbW92ZSdkCistCSBhZGRyZXNzIHRv IGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50LiAgVGhlIGNhbGwgdG8KKysJIGFkZHJlc3Mg dG8gc3ZyNF9jcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMuICBUaGUgY2FsbCB0bworIAkg ZmluZF9wY19zZWN0aW9uIHZlcmlmaWVzIHdlIGtub3cgYWJvdXQgdGhlIGFkZHJlc3MgYW5kIGhh dmUgc29tZQorIAkgaG9wZSBvZiBjb21wdXRpbmcgdGhlIHJpZ2h0IGtpbmQgb2YgYnJlYWtwb2lu dCB0byB1c2UgKHZpYQorIAkgc3ltYm9sIGluZm8pLiAgSXQgZG9lcyBtZWFuIHRoYXQgR0RCIG5l ZWRzIHRvIGJlIHBvaW50ZWQgYXQgYQorQEAgLTE1NzAsNyArMjE4OSw3IEBAIGVuYWJsZV9icmVh ayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KKyAJCSsgYmZkX3NlY3Rpb25fc2l6ZSAodG1w X2JmZCwgaW50ZXJwX3NlY3QpOworIAkgICAgfQorIAorLQkgIGNyZWF0ZV9zb2xpYl9ldmVudF9i cmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIpOworKwkgIHN2cjRfY3JlYXRl X3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIpOwor IAkgIHJldHVybiAxOworIAl9CisgICAgIH0KK0BAIC0xNzI4LDcgKzIzNDcsOCBAQCBlbmFibGVf YnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCisgCisgICAgICAgaWYgKHN5bV9hZGRy ICE9IDApCisgCXsKKy0JICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCAodGFyZ2V0X2dk YmFyY2ggKCksIGxvYWRfYWRkciArIHN5bV9hZGRyKTsKKysJICBzdnI0X2NyZWF0ZV9zb2xpYl9l dmVudF9icmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2ggKCksCisrCQkJCQkgICAgICAgbG9hZF9h ZGRyICsgc3ltX2FkZHIpOworIAkgIHhmcmVlIChpbnRlcnBfbmFtZSk7CisgCSAgcmV0dXJuIDE7 CisgCX0KK0BAIC0xNzU0LDcgKzIzNzQsNyBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2lu Zm8gKmluZm8sIGluCisgCSAgc3ltX2FkZHIgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0 cl9hZGRyICh0YXJnZXRfZ2RiYXJjaCAoKSwKKyAJCQkJCQkJIHN5bV9hZGRyLAorIAkJCQkJCQkg JmN1cnJlbnRfdGFyZ2V0KTsKKy0JICBjcmVhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludCAodGFy Z2V0X2dkYmFyY2ggKCksIHN5bV9hZGRyKTsKKysJICBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9i cmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2ggKCksIHN5bV9hZGRyKTsKKyAJICByZXR1cm4gMTsK KyAJfQorICAgICB9CitAQCAtMTc3MCw3ICsyMzkwLDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qg c3ZyNF9pbmZvICppbmZvLCBpbgorIAkgICAgICBzeW1fYWRkciA9IGdkYmFyY2hfY29udmVydF9m cm9tX2Z1bmNfcHRyX2FkZHIgKHRhcmdldF9nZGJhcmNoICgpLAorIAkJCQkJCQkgICAgIHN5bV9h ZGRyLAorIAkJCQkJCQkgICAgICZjdXJyZW50X3RhcmdldCk7CistCSAgICAgIGNyZWF0ZV9zb2xp Yl9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIpOworKwkgICAg ICBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2ggKCks IHN5bV9hZGRyKTsKKyAJICAgICAgcmV0dXJuIDE7CisgCSAgICB9CisgCX0KK0BAIC0yMjY2LDYg KzI4ODYsMTAgQEAgc3ZyNF9zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoaW50IGZybworIAor ICAgaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7CisgCisrICAvKiBDbGVhciB0aGUgcHJvYmVzLWJh c2VkIGludGVyZmFjZSdzIHN0YXRlLiAgKi8KKysgIGZyZWVfcHJvYmVzX3RhYmxlIChpbmZvKTsK KysgIGZyZWVfc29saWJfbGlzdCAoaW5mbyk7CisrCisgICAvKiBSZWxvY2F0ZSB0aGUgbWFpbiBl eGVjdXRhYmxlIGlmIG5lY2Vzc2FyeS4gICovCisgICBzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0 YWJsZSAoKTsKKyAKK0BAIC0yNTA3LDQgKzMxMzEsNiBAQCBfaW5pdGlhbGl6ZV9zdnI0X3NvbGli ICh2b2lkKQorICAgc3ZyNF9zb19vcHMubG9va3VwX2xpYl9nbG9iYWxfc3ltYm9sID0gZWxmX2xv b2t1cF9saWJfc3ltYm9sOworICAgc3ZyNF9zb19vcHMuc2FtZSA9IHN2cjRfc2FtZTsKKyAgIHN2 cjRfc29fb3BzLmtlZXBfZGF0YV9pbl9jb3JlID0gc3ZyNF9rZWVwX2RhdGFfaW5fY29yZTsKKysg IHN2cjRfc29fb3BzLnVwZGF0ZV9icmVha3BvaW50cyA9IHN2cjRfdXBkYXRlX3NvbGliX2V2ZW50 X2JyZWFrcG9pbnRzOworKyAgc3ZyNF9zb19vcHMuaGFuZGxlX2V2ZW50ID0gc3ZyNF9oYW5kbGVf c29saWJfZXZlbnQ7CisgfQorSW5kZXg6IGdkYi03LjYvZ2RiL3NvbGliLmMKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy42Lm9yaWcvZ2RiL3NvbGliLmMJMjAxMy0wNi0xMCAxNDo0NDozNy4zOTI4MTI2 NzUgKzAyMDAKKysrKyBnZGItNy42L2dkYi9zb2xpYi5jCTIwMTMtMDYtMTAgMTQ6NDQ6MzcuNzEz ODEyNTc4ICswMjAwCitAQCAtMTIyMSw2ICsxMjIxLDM3IEBAIG5vX3NoYXJlZF9saWJyYXJpZXMg KGNoYXIgKmlnbm9yZWQsIGludAorICAgb2JqZmlsZV9wdXJnZV9zb2xpYnMgKCk7CisgfQorIAor Ky8qIFNlZSBzb2xpYi5oLiAgKi8KKysKKyt2b2lkCisrdXBkYXRlX3NvbGliX2JyZWFrcG9pbnRz ICh2b2lkKQorK3sKKysgIGNvbnN0IHN0cnVjdCB0YXJnZXRfc29fb3BzICpvcHMgPSBzb2xpYl9v cHMgKHRhcmdldF9nZGJhcmNoICgpKTsKKysKKysgIGlmIChvcHMtPnVwZGF0ZV9icmVha3BvaW50 cyAhPSBOVUxMKQorKyAgICBvcHMtPnVwZGF0ZV9icmVha3BvaW50cyAoKTsKKyt9CisrCisrLyog U2VlIHNvbGliLmguICAqLworKworK3ZvaWQKKytoYW5kbGVfc29saWJfZXZlbnQgKHZvaWQpCisr eworKyAgY29uc3Qgc3RydWN0IHRhcmdldF9zb19vcHMgKm9wcyA9IHNvbGliX29wcyAodGFyZ2V0 X2dkYmFyY2ggKCkpOworKworKyAgaWYgKG9wcy0+aGFuZGxlX2V2ZW50ICE9IE5VTEwpCisrICAg IG9wcy0+aGFuZGxlX2V2ZW50ICgpOworKworKyAgY2xlYXJfcHJvZ3JhbV9zcGFjZV9zb2xpYl9j YWNoZSAoY3VycmVudF9pbmZlcmlvciAoKS0+cHNwYWNlKTsKKysKKysgIC8qIENoZWNrIGZvciBh bnkgbmV3bHkgYWRkZWQgc2hhcmVkIGxpYnJhcmllcyBpZiB3ZSdyZSBzdXBwb3NlZCB0bworKyAg ICAgYmUgYWRkaW5nIHRoZW0gYXV0b21hdGljYWxseS4gIFN3aXRjaCB0ZXJtaW5hbCBmb3IgYW55 IG1lc3NhZ2VzCisrICAgICBwcm9kdWNlZCBieSBicmVha3BvaW50X3JlX3NldC4gICovCisrICB0 YXJnZXRfdGVybWluYWxfb3Vyc19mb3Jfb3V0cHV0ICgpOworKyAgc29saWJfYWRkIChOVUxMLCAw LCAmY3VycmVudF90YXJnZXQsIGF1dG9fc29saWJfYWRkKTsKKysgIHRhcmdldF90ZXJtaW5hbF9p bmZlcmlvciAoKTsKKyt9CisrCisgLyogUmVsb2FkIHNoYXJlZCBsaWJyYXJpZXMsIGJ1dCBhdm9p ZCByZWxvYWRpbmcgdGhlIHNhbWUgc3ltYm9sIGZpbGUKKyAgICB3ZSBhbHJlYWR5IGhhdmUgbG9h ZGVkLiAgKi8KKyAKK0luZGV4OiBnZGItNy42L2dkYi9zb2xpYi5oCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuNi5vcmlnL2dkYi9zb2xpYi5oCTIwMTMtMDEtMDEgMDc6MzI6NTEuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuNi9nZGIvc29saWIuaAkyMDEzLTA2LTEwIDE0OjQ0OjM3LjcxMzgxMjU3 OCArMDIwMAorQEAgLTkwLDQgKzkwLDEyIEBAIGV4dGVybiBDT1JFX0FERFIgZ2RiX2JmZF9sb29r dXBfc3ltYm9sX2YKKyAJCQkJCQkJCSAgICAgIHZvaWQgKiksCisgCQkJCQkJICAgIHZvaWQgKmRh dGEpOworIAorKy8qIEVuYWJsZSBvciBkaXNhYmxlIG9wdGlvbmFsIHNvbGliIGV2ZW50IGJyZWFr cG9pbnRzIGFzIGFwcHJvcHJpYXRlLiAgKi8KKysKKytleHRlcm4gdm9pZCB1cGRhdGVfc29saWJf YnJlYWtwb2ludHMgKHZvaWQpOworKworKy8qIEhhbmRsZSBhbiBzb2xpYiBldmVudCBieSBjYWxs aW5nIHNvbGliX2FkZC4gICovCisrCisrZXh0ZXJuIHZvaWQgaGFuZGxlX3NvbGliX2V2ZW50ICh2 b2lkKTsKKysKKyAjZW5kaWYgLyogU09MSUJfSCAqLworSW5kZXg6IGdkYi03LjYvZ2RiL3NvbGlz dC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNi5vcmlnL2dkYi9zb2xpc3QuaAkyMDEzLTAxLTAx IDA3OjMyOjUxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjYvZ2RiL3NvbGlzdC5oCTIwMTMt MDYtMTAgMTQ6NDQ6MzcuNzEzODEyNTc4ICswMjAwCitAQCAtMTQ4LDYgKzE0OCwxOSBAQCBzdHJ1 Y3QgdGFyZ2V0X3NvX29wcworICAgICAgICBjb3JlIGZpbGUgKGluIHBhcnRpY3VsYXIsIGZvciBy ZWFkb25seSBzZWN0aW9ucykuICAqLworICAgICBpbnQgKCprZWVwX2RhdGFfaW5fY29yZSkgKENP UkVfQUREUiB2YWRkciwKKyAJCQkgICAgICB1bnNpZ25lZCBsb25nIHNpemUpOworKworKyAgICAv KiBFbmFibGUgb3IgZGlzYWJsZSBvcHRpb25hbCBzb2xpYiBldmVudCBicmVha3BvaW50cyBhcwor KyAgICAgICBhcHByb3ByaWF0ZS4gIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB3aGVuZXZlcgorKyAg ICAgICBzdG9wX29uX3NvbGliX2V2ZW50cyBpcyBjaGFuZ2VkLiAgVGhpcyBwb2ludGVyIGNhbiBi ZQorKyAgICAgICBOVUxMLCBpbiB3aGljaCBjYXNlIG5vIGVuYWJsaW5nIG9yIGRpc2FibGluZyBp cyBuZWNlc3NhcnkKKysgICAgICAgZm9yIHRoaXMgdGFyZ2V0LiAgKi8KKysgICAgdm9pZCAoKnVw ZGF0ZV9icmVha3BvaW50cykgKHZvaWQpOworKworKyAgICAvKiBUYXJnZXQtc3BlY2lmaWMgcHJv Y2Vzc2luZyBvZiBzb2xpYiBldmVudHMgdGhhdCB3aWxsIGJlCisrICAgICAgIHBlcmZvcm1lZCBi ZWZvcmUgc29saWJfYWRkIGlzIGNhbGxlZC4gIFRoaXMgcG9pbnRlciBjYW4gYmUKKysgICAgICAg TlVMTCwgaW4gd2hpY2ggY2FzZSBubyBzcGVjaWZpYyBwcmVwcm9jZXNzaW5nIGlzIG5lY2Vzc2Fy eQorKyAgICAgICBmb3IgdGhpcyB0YXJnZXQuICAqLworKyAgICB2b2lkICgqaGFuZGxlX2V2ZW50 KSAodm9pZCk7CisgICB9OworIAorIC8qIEZyZWUgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGgg YSAoc29fbGlzdCAqKS4gICovCitJbmRleDogZ2RiLTcuNi9nZGIvYnJlYWtwb2ludC5jCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuNi5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMy0wNi0xMCAxNDo0 NDozNy41MDA4MTI2NDIgKzAyMDAKKysrKyBnZGItNy42L2dkYi9icmVha3BvaW50LmMJMjAxMy0w Ni0xMCAxNDo0NDo1Ny4zMDE4MDY3MDggKzAyMDAKK0BAIC01MzQ4LDI1ICs1MzQ4LDYgQEAgaGFu ZGxlX2ppdF9ldmVudCAodm9pZCkKKyAgIHRhcmdldF90ZXJtaW5hbF9pbmZlcmlvciAoKTsKKyB9 CisgCistLyogSGFuZGxlIGFuIHNvbGliIGV2ZW50IGJ5IGNhbGxpbmcgc29saWJfYWRkLiAgKi8K Ky0KKy12b2lkCistaGFuZGxlX3NvbGliX2V2ZW50ICh2b2lkKQorLXsKKy0gIGNsZWFyX3Byb2dy YW1fc3BhY2Vfc29saWJfY2FjaGUgKGN1cnJlbnRfaW5mZXJpb3IgKCktPnBzcGFjZSk7CistCist ICAvKiBDaGVjayBmb3IgYW55IG5ld2x5IGFkZGVkIHNoYXJlZCBsaWJyYXJpZXMgaWYgd2UncmUg c3VwcG9zZWQgdG8KKy0gICAgIGJlIGFkZGluZyB0aGVtIGF1dG9tYXRpY2FsbHkuICBTd2l0Y2gg dGVybWluYWwgZm9yIGFueSBtZXNzYWdlcworLSAgICAgcHJvZHVjZWQgYnkgYnJlYWtwb2ludF9y ZV9zZXQuICAqLworLSAgdGFyZ2V0X3Rlcm1pbmFsX291cnNfZm9yX291dHB1dCAoKTsKKy0jaWZk ZWYgU09MSUJfQURECistICBTT0xJQl9BREQgKE5VTEwsIDAsICZjdXJyZW50X3RhcmdldCwgYXV0 b19zb2xpYl9hZGQpOworLSNlbHNlCistICBzb2xpYl9hZGQgKE5VTEwsIDAsICZjdXJyZW50X3Rh cmdldCwgYXV0b19zb2xpYl9hZGQpOworLSNlbmRpZgorLSAgdGFyZ2V0X3Rlcm1pbmFsX2luZmVy aW9yICgpOworLX0KKy0KKyAvKiBQcmVwYXJlIFdIQVQgZmluYWwgZGVjaXNpb24gZm9yIGluZnJ1 bi4gICovCisgCisgLyogRGVjaWRlIHdoYXQgaW5mcnVuIG5lZWRzIHRvIGRvIHdpdGggdGhpcyBi cHN0YXQuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS04b2Y5LnBhdGNo IGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLThvZjkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uM2I2NjM4YQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1kbG9wZW4tc3Rh cC1wcm9iZS04b2Y5LnBhdGNoCkBAIC0wLDAgKzEsNDYyIEBACitodHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLWN2cy8yMDEzLTA2L21zZzAwMDE5Lmh0bWwKKworIyMjIHNyYy9nZGIvdGVzdHN1 aXRlL0NoYW5nZUxvZwkyMDEzLzA1LzMwIDAwOjI1OjE2CTEuMzY4MgorIyMjIHNyYy9nZGIvdGVz dHN1aXRlL0NoYW5nZUxvZwkyMDEzLzA2LzA0IDEzOjIzOjMxCTEuMzY4MworIyMgLTEsMyArMSwx OSBAQAorKzIwMTMtMDYtMDQgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KKysJICAgIEdhcnkgQmVuc29uICA8Z2JlbnNvbkByZWRoYXQuY29tPgorKworKwkqIGxp Yi9nZGIuZXhwIChidWlsZF9leGVjdXRhYmxlX2Zyb21fc3BlY3MpOiBVc2UgZ2RiX2NvbXBpbGVf cHRocmVhZCwKKysJZ2RiX2NvbXBpbGVfc2hsaWIgb3IgZ2RiX2NvbXBpbGVfc2hsaWJfcHRocmVh ZHMgd2hlcmUgYXBwcm9wcmlhdGUuCisrCSogbGliL3ByZWxpbmstc3VwcG9ydC5leHAgKGJ1aWxk X2V4ZWN1dGFibGVfb3duX2xpYnMpOiBBbGxvdyBJTlRFUlAKKysJdG8gYmUgc2V0IHRvICJubyIg dG8gaW5kaWNhdGUgdGhhdCBubyBsZC5zbyBjb3B5IHNob3VsZCBiZSBtYWRlLgorKwkqIGdkYi5i YXNlL2JyZWFrLWludGVycC5leHAgKHNvbGliX2JwKTogTmV3IGNvbnN0YW50LgorKwkocmVhY2hf MSk6IFVzZSB0aGUgYWJvdmUgaW5zdGVhZCBvZiAiX2RsX2RlYnVnX3N0YXRlIi4KKysJKHRlc3Rf YXR0YWNoKTogTGlrZXdpc2UuCisrCSh0ZXN0X2xkKTogTGlrZXdpc2UuCisrCSogZ2RiLnRocmVh ZHMvZGxvcGVuLWxpYnB0aHJlYWQuZXhwOiBOZXcgZmlsZS4KKysJKiBnZGIudGhyZWFkcy9kbG9w ZW4tbGlicHRocmVhZC5jOiBMaWtld2lzZS4KKysJKiBnZGIudGhyZWFkcy9kbG9wZW4tbGlicHRo cmVhZC1saWIuYzogTGlrZXdpc2UuCisrCSogZ2RiLmJhc2Uvc29saWItY29ycnVwdGVkLmV4cDog RGlzYWJsZSB0ZXN0IGlmIEdEQiBpcyB1c2luZyBwcm9iZXMuCisrCisgMjAxMy0wNS0zMCAgWWFv IFFpICA8eWFvQGNvZGVzb3VyY2VyeS5jb20+CisgCisgCSogZ2RiLm1pL21pLWNtZC1wYXJhbS1j aGFuZ2VkLmV4cCAodGVzdF9jb21tYW5kX3BhcmFtX2NoYW5nZWQpOgorSW5kZXg6IGdkYi03LjYv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAkyMDEz LTA2LTEwIDE0OjI5OjI0LjgxNTEyMzk0MSArMDIwMAorKysrIGdkYi03LjYvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMTMtMDYtMTAgMTQ6MzA6MTguMDg2MTAyMzc1 ICswMjAwCitAQCAtMTA5LDEyICsxMDksMTkgQEAgcHJvYyBzdHJpcF9kZWJ1ZyB7ZGVzdH0gewor ICAgICB9CisgfQorIAorKyMgVGhlIG1hcmtlciBmdW5jdGlvbiBmb3IgdGhlIHN0YW5kYXJkIHJ1 bnRpbWUgbGlua2VyIGludGVyZmFjZSBpcworKyMgX2RsX2RlYnVnX3N0YXRlLiAgVGhlIHByb2Jl cy1iYXNlZCBpbnRlcmZhY2UgaGFzIG5vIHNwZWNpZmljIG1hcmtlcgorKyMgZnVuY3Rpb247IHRo ZSBwcm9iZSB3ZSB3aWxsIHN0b3Agb24gKGluaXRfc3RhcnQpIGlzIGluIGRsX21haW4gc28gd2UK KysjIGNoZWNrIGZvciB0aGF0LgorKworK3NldCBzb2xpYl9icCB7KF9kbF9kZWJ1Z19zdGF0ZXxk bF9tYWluKX0KKysKKyAjIEltcGxlbWVudGF0aW9uIG9mIHJlYWNoLgorIAorIHByb2MgcmVhY2hf MSB7ZnVuYyBjb21tYW5kIGRpc3BsYWNlbWVudH0geworLSAgICBnbG9iYWwgZ2RiX3Byb21wdCBl eHBlY3Rfb3V0CisrICAgIGdsb2JhbCBnZGJfcHJvbXB0IGV4cGVjdF9vdXQgc29saWJfYnAKKyAK Ky0gICAgaWYgeyRmdW5jID09ICJfZGxfZGVidWdfc3RhdGUifSB7CisrICAgIGlmIHskZnVuYyA9 PSAkc29saWJfYnB9IHsKKyAJIyBCcmVha3BvaW50IG9uIF9kbF9kZWJ1Z19zdGF0ZSBjYW4gaGF2 ZSBwcm9ibGVtcyBkdWUgdG8gaXRzIG92ZXJsYXAKKyAJIyB3aXRoIHRoZSBleGlzdGluZyBpbnRl cm5hbCBicmVha3BvaW50IGZyb20gR0RCLgorIAlnZGJfdGVzdF9ub19vdXRwdXQgInNldCBzdG9w LW9uLXNvbGliLWV2ZW50cyAxIgorQEAgLTE0MiwyMSArMTQ5LDIxIEBAIHByb2MgcmVhY2hfMSB7 ZnVuYyBjb21tYW5kIGRpc3BsYWNlbWVudH0KKyAJICAgIGV4cF9jb250aW51ZQorIAl9CisgCS1y ZSAiQnJlYWtwb2ludCBcWzAtOVxdKywgXFwuPyhfX0dJXyk/JGZ1bmMgXFwoLipcXCkgYXQgLio6 XFswLTlcXStcclxuLiokZ2RiX3Byb21wdCAkIiB7CistCSAgICBpZiB7JGZ1bmMgPT0gIl9kbF9k ZWJ1Z19zdGF0ZSJ9IHsKKysJICAgIGlmIHskZnVuYyA9PSAkc29saWJfYnB9IHsKKyAJCWZhaWwg JHRlc3QKKyAJICAgIH0gZWxzZSB7CisgCQlwYXNzICR0ZXN0CisgCSAgICB9CisgCX0KKyAJLXJl ICJCcmVha3BvaW50IFxbMC05XF0rLCBcWzAtOXhhLWZcXSsgaW4gXFwuPyhfX0dJXyk/JGZ1bmMg XFwoXFwpLipcclxuJGdkYl9wcm9tcHQgJCIgeworLQkgICAgaWYgeyRmdW5jID09ICJfZGxfZGVi dWdfc3RhdGUifSB7CisrCSAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7CisgCQlmYWlsICR0 ZXN0CisgCSAgICB9IGVsc2UgeworIAkJcGFzcyAkdGVzdAorIAkgICAgfQorIAl9CisgCS1yZSAi U3RvcHBlZCBkdWUgdG8gKHNwdXJpb3VzICk/c2hhcmVkIGxpYnJhcnkgZXZlbnQuKlxyXG4kZ2Ri X3Byb21wdCAkIiB7CistCSAgICBpZiB7JGZ1bmMgPT0gIl9kbF9kZWJ1Z19zdGF0ZSJ9IHsKKysJ ICAgIGlmIHskZnVuYyA9PSAkc29saWJfYnB9IHsKKyAJCWlmIHskZGVidWdfc3RhdGVfY291bnQg PT0gMH0geworIAkJICAgICMgRmlyc3Qgc3RvcCBkb2VzIG5vdCB5ZXQgcmVsb2NhdGUgdGhlIF9z dGFydCBmdW5jdGlvbgorIAkJICAgICMgZGVzY3JpcHRvciBvbiBwcGM2NC4KK0BAIC0xNzUsNyAr MTgyLDcgQEAgcHJvYyByZWFjaF8xIHtmdW5jIGNvbW1hbmQgZGlzcGxhY2VtZW50fQorIAlmYWls ICR0ZXN0X2Rpc3BsYWNlbWVudAorICAgICB9CisgCistICAgIGlmIHskZnVuYyA9PSAiX2RsX2Rl YnVnX3N0YXRlIn0geworKyAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7CisgCWdkYl90ZXN0 X25vX291dHB1dCAic2V0IHN0b3Atb24tc29saWItZXZlbnRzIDAiCisgICAgIH0KKyB9CitAQCAt MzU3LDcgKzM2NCw3IEBAIHByb2MgdGVzdF9hdHRhY2gge2ZpbGUgZGlzcGxhY2VtZW50IHtyZWwK KyB9CisgCisgcHJvYyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bSBkaXNwbGFjZW1lbnR9 IHsKKy0gICAgZ2xvYmFsIHNyY2RpciBzdWJkaXIgZ2RiX3Byb21wdCBleHBlY3Rfb3V0IGluZmVy aW9yX2V4aXRlZF9yZQorKyAgICBnbG9iYWwgc3JjZGlyIHN1YmRpciBnZGJfcHJvbXB0IGV4cGVj dF9vdXQgaW5mZXJpb3JfZXhpdGVkX3JlIHNvbGliX2JwCisgCisgICAgICMgRmlyc3QgdGVzdCBu b3JtYWwgYGZpbGUnLWNvbW1hbmQgbG9hZGVkICRGSUxFIHdpdGggc3ltYm9scy4KKyAKK0BAIC0z ODUsOSArMzkyLDkgQEAgcHJvYyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bSBkaXNwbAor IAlnZGJfdGVzdF9ub19vdXRwdXQgInNldCBhcmdzICR7b2JqZGlyfS8ke3N1YmRpcn0vJGJpbmZp bGVfdGVzdCIgInNldCBhcmdzIE9CSkRJUi8ke3N1YmRpcn0vJGJpbmZpbGVfdGVzdCIKKyAgICAg fQorIAorLSAgICByZWFjaCAiX2RsX2RlYnVnX3N0YXRlIiAicnVuIiAkZGlzcGxhY2VtZW50Cisr ICAgIHJlYWNoICRzb2xpYl9icCAicnVuIiAkZGlzcGxhY2VtZW50CisgCistICAgIGdkYl90ZXN0 ICJidCIgIiMwICtcW15cclxuXF0qXFxtKF9fR0lfKT9fZGxfZGVidWdfc3RhdGVcXE0uKiIgImRs IGJ0IgorKyAgICBnZGJfdGVzdCAiYnQiICIjMCArXFteXHJcblxdKlxcbShfX0dJXyk/JHNvbGli X2JwXFxNLioiICJkbCBidCIKKyAKKyAgICAgaWYgJGlmbWFpbiB7CisgCXJlYWNoICJtYWluIiBj b250aW51ZSAiTk9ORSIKK0BAIC0zOTksNyArNDA2LDcgQEAgcHJvYyB0ZXN0X2xkIHtmaWxlIGlm bWFpbiB0cnlub3N5bSBkaXNwbAorIAorICAgICAjIFRyeSByZS1ydW4gaWYgdGhlIG5ldyBQSUUg ZGlzcGxhY2VtZW50IHRha2VzIGVmZmVjdC4KKyAgICAgZ2RiX3Rlc3QgImtpbGwiICIiICJraWxs IiB7S2lsbCB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZFw/IFwoeSBvciBuXCkgfSAieSIKKy0g ICAgcmVhY2ggIl9kbF9kZWJ1Z19zdGF0ZSIgInJ1biIgJGRpc3BsYWNlbWVudAorKyAgICByZWFj aCAkc29saWJfYnAgInJ1biIgJGRpc3BsYWNlbWVudAorIAorICAgICBpZiAkaWZtYWluIHsKKyAJ dGVzdF9jb3JlICRmaWxlICRkaXNwbGFjZW1lbnQKK0BAIC00MzEsNyArNDM4LDcgQEAgcHJvYyB0 ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bSBkaXNwbAorIAlnZGJfdGVzdCAiZXhlYy1maWxl ICRmaWxlIiAiZXhlYy1maWxlICRlc2NhcGVkZmlsZSIgImxvYWQiCisgCisgCWlmICRpZm1haW4g eworLQkgICAgcmVhY2ggIl9kbF9kZWJ1Z19zdGF0ZSIgcnVuICRkaXNwbGFjZW1lbnQKKysJICAg IHJlYWNoICRzb2xpYl9icCBydW4gJGRpc3BsYWNlbWVudAorIAorIAkgICAgIyBVc2UgdHdvIHNl cGFyYXRlIGdkYl90ZXN0X211bHRpcGxlIHN0YXRlbWVudHMgdG8gYXZvaWQgdGltZW91dHMgZHVl CisgCSAgICAjIHRvIHNsb3cgcHJvY2Vzc2luZyBvZiB3aWxkY2FyZCBjYXB0dXJpbmcgbG9uZyBv dXRwdXQKK0luZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc29saWItY29ycnVw dGVkLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjYub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3NvbGliLWNvcnJ1cHRlZC5leHAJMjAxMy0wNi0xMCAxNDoyOToyNC44MTYxMjM5NDEgKzAy MDAKKysrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc29saWItY29ycnVwdGVkLmV4 cAkyMDEzLTA2LTEwIDE0OjMwOjE4LjA4NjEwMjM3NSArMDIwMAorQEAgLTM2LDYgKzM2LDMzIEBA IGlmICFbcnVudG9fbWFpbl0geworICAgICByZXR1cm4KKyB9CisgCisrIyBXaXRoIHByb2JlcyBp bnRlcmZhY2UgR0RCIG5vIGxvbmdlciBzY2FucyB0aGUgaW5mZXJpb3IgbGlicmFyeSBsaXN0IHNv IGl0cworKyMgY29ycnVwdGlvbiBjYW5ub3QgYmUgdGVzdGVkLiAgVGhlcmUgaXMgbm8gd2F5IHRv IGRpc2FibGUgdGhlIHByb2JlcworKyMgaW50ZXJmYWNlLgorKworK3NldCBwcm9iZXMgeyBpbml0 X3N0YXJ0IGluaXRfY29tcGxldGUgbWFwX3N0YXJ0IHJlbG9jX2NvbXBsZXRlIHVubWFwX3N0YXJ0 CisrCSAgICAgdW5tYXBfY29tcGxldGUgfQorK3NldCB0ZXN0ICJpbmZvIHByb2JlcyIKKytnZGJf dGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrICAgIC1yZSAiXnJ0bGRcWyBcdFxdKyg/OnJ0 bGRfKT8oXFthLXpfXF0rKVxbIFx0XF0iIHsKKysJc2V0IGlkeCBbbHNlYXJjaCAtZXhhY3QgJHBy b2JlcyAkZXhwZWN0X291dCgxLHN0cmluZyldCisrCWlmIHsgJGlkeCA+PSAwIH0geworKwkgICAg c2V0IHByb2JlcyBbbHJlcGxhY2UgJHByb2JlcyAkaWR4ICRpZHhdCisrCX0KKysJZXhwX2NvbnRp bnVlCisrICAgIH0KKysgICAgLXJlICJeXFteXHJcblxdKlxyXG4iIHsKKysJZXhwX2NvbnRpbnVl CisrICAgIH0KKysgICAgLXJlICJeJGdkYl9wcm9tcHQgJCIgeworKyAgICB9CisrfQorK2lmIHsg W2xsZW5ndGggJHByb2Jlc10gPT0gMCB9IHsKKysgICAgeGZhaWwgJHRlc3QKKysgICAgdW50ZXN0 ZWQgIkdEQiBpcyB1c2luZyBwcm9iZXMiCisrICAgIHJldHVybgorK30KKysKKyBnZGJfdGVzdCAi aW5mbyBzaGFyZWRsaWJyYXJ5IiAiRnJvbSAqIFRvIC4qIiAibm9ybWFsIGxpc3QiCisgCisgIyBH REIgY2hlY2tzIHRoZXJlIGZvciBtYXRjaGluZyBMX1BSRVYuCitJbmRleDogZ2RiLTcuNi9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLWxpYi5jCis9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysg Z2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLWxpYi5j CTIwMTMtMDYtMTAgMTQ6MzA6MTguMDg2MTAyMzc1ICswMjAwCitAQCAtMCwwICsxLDQwIEBACisr LyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysg ICBDb3B5cmlnaHQgMjAxMS0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKwor KyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSA8 cHRocmVhZC5oPgorKyNpbmNsdWRlIDxhc3NlcnQuaD4KKysKKytzdGF0aWMgdm9pZCAqCisrdGZ1 bmMgKHZvaWQgKmFyZykKKyt7CisrICB2b2lkICgqbm90aWZ5cCkgKHZvaWQpID0gYXJnOworKwor KyAgbm90aWZ5cCAoKTsKKyt9CisrCisrdm9pZAorK2YgKHZvaWQgKCpub3RpZnlwKSAodm9pZCkp CisreworKyAgcHRocmVhZF90IHQ7CisrICBpbnQgaTsKKysKKysgIGkgPSBwdGhyZWFkX2NyZWF0 ZSAoJnQsIE5VTEwsIHRmdW5jLCBub3RpZnlwKTsKKysgIGFzc2VydCAoaSA9PSAwKTsKKysKKysg IGkgPSBwdGhyZWFkX2pvaW4gKHQsIE5VTEwpOworKyAgYXNzZXJ0IChpID09IDApOworK30KK0lu ZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQu YworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAorKysrIGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGli cHRocmVhZC5jCTIwMTMtMDYtMTAgMTQ6MzA6MTguMDg3MTAyMzc1ICswMjAwCitAQCAtMCwwICsx LDQ2IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dl ci4KKysKKysgICBDb3B5cmlnaHQgMjAxMS0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisr ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysj aW5jbHVkZSA8ZGxmY24uaD4KKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrI2luY2x1ZGUgPGFzc2Vy dC5oPgorKworK3N0YXRpYyBjb25zdCBjaGFyICp2b2xhdGlsZSBmaWxlbmFtZTsKKysKKytzdGF0 aWMgdm9pZAorK25vdGlmeSAodm9pZCkKKyt7CisrICBmaWxlbmFtZSA9IE5VTEw7IC8qIG5vdGlm eS1oZXJlICovCisrfQorKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgdm9pZCAqaDsKKysg IHZvaWQgKCpmcCkgKHZvaWQgKCopICh2b2lkKSk7CisrCisrICBhc3NlcnQgKGZpbGVuYW1lICE9 IE5VTEwpOworKyAgaCA9IGRsb3BlbiAoZmlsZW5hbWUsIFJUTERfTEFaWSk7CisrICBhc3NlcnQg KGggIT0gTlVMTCk7CisrCisrICBmcCA9IGRsc3ltIChoLCAiZiIpOworKyAgYXNzZXJ0IChmcCAh PSBOVUxMKTsKKysKKysgIGZwIChub3RpZnkpOworKworKyAgcmV0dXJuIDA7CisrfQorSW5kZXg6 IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC5leHAK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKKysrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0 aHJlYWQuZXhwCTIwMTMtMDYtMTAgMTQ6MzA6MTguMDg3MTAyMzc1ICswMjAwCitAQCAtMCwwICsx LDc0IEBACisrIyBDb3B5cmlnaHQgMjAxMS0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisraWYgeyFbaXN0YXJn ZXQgKi1saW51eCpdIHx8IFtza2lwX3NobGliX3Rlc3RzXX0geworKyAgICByZXR1cm4gMAorK30K KysKKytsb2FkX2xpYiBwcmVsaW5rLXN1cHBvcnQuZXhwCisrCisrc2V0IHRlc3RmaWxlICJkbG9w ZW4tbGlicHRocmVhZCIKKytzZXQgc3JjbWFpbmZpbGUgJHt0ZXN0ZmlsZX0uYworK3NldCBzcmNs aWJmaWxlICR7dGVzdGZpbGV9LWxpYi5jCisrc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KKytz ZXQgYmluZmlsZV9saWIgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1dGFibGV9LnNvCisrc2V0 IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1dGFibGV9Cisrc2V0IGxpYl9kbG9w ZW4gW3NobGliX3RhcmdldF9maWxlICR7ZXhlY3V0YWJsZX0uc29dCisrCisrIyBVc2UgYnVpbGRf ZXhlY3V0YWJsZV9vd25fbGlicyBhcyBwcmVsaW5rZWQgbGlicHRocmVhZC5zbyBjYW4gcHJvZHVj ZSBmYWxzZQorKyMgUEFTUyAtIGl0IGlzIE9LIGlmIEdEQiBwcm9jZXNzZXMgaXQgc3RpbGwgYmVm b3JlIHJlbG9jYXRpb24uCisrCisrc2V0IHJlbGlua19hcmdzIFtidWlsZF9leGVjdXRhYmxlX293 bl9saWJzICR7dGVzdGZpbGV9LmV4cCAke2V4ZWN1dGFibGV9LnNvICRzcmNsaWJmaWxlIHtkZWJ1 ZyBzaGxpYl9wdGhyZWFkc30gbm9dCisraWYgeyRyZWxpbmtfYXJncyA9PSAiIiB8fCAhW3ByZWxp bmtfbm8gJHJlbGlua19hcmdzXQorKyAgICB8fCBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3Rm aWxlfS5leHAgJHtleGVjdXRhYmxlfSAke3NyY21haW5maWxlfSB7ZGVidWcgc2hsaWJfbG9hZH1d IH0geworKyAgICByZXR1cm4gLTEKKyt9CisrZ2RiX2xvYWRfc2hsaWJzICRiaW5maWxlX2xpYgor KworK2lmIHsgIVtydW50b19tYWluXSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK3NldCB0 ZXN0ICJpbmZvIHByb2JlcyBhbGwgcnRsZCBydGxkX21hcF9jb21wbGV0ZSIKKytnZGJfdGVzdF9t dWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrICAgIC1yZSAiXFsgXHRcXXJ0bGRfbWFwX2NvbXBsZXRl XFsgXHRcXSsweFxbMC05YS1mXF0rLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICR0ZXN0 CisrICAgIH0KKysgICAgLXJlICJObyBwcm9iZXMgbWF0Y2hlZFxcLlxyXG4kZ2RiX3Byb21wdCAk IiB7CisrCXhmYWlsICR0ZXN0CisrCXVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAorKwlyZXR1cm4K KysgICAgfQorK30KKysKKytzZXQgdGVzdCAibGlicHRocmVhZC5zbyBub3QgZm91bmQiCisrZ2Ri X3Rlc3RfbXVsdGlwbGUgImluZm8gc2hhcmVkbGlicmFyeSIgJHRlc3QgeworKyAgICAtcmUgIi9s aWJwdGhyZWFkXFwuc28uKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCWZhaWwgJHRlc3QKKysgICAg fQorKyAgICAtcmUgIi9saWJjXFwuc28uKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXBhc3MgJHRl c3QKKysgICAgfQorK30KKysKKytnZGJfdGVzdCAic2V0IHZhcmlhYmxlIGZpbGVuYW1lPVwiJGxp Yl9kbG9wZW5cIiIKKysKKytnZGJfYnJlYWtwb2ludCAibm90aWZ5IgorKworKyMgVGhlIGVycm9y IHdhczoKKysjIENhbm5vdCBmaW5kIG5ldyB0aHJlYWRzOiBnZW5lcmljIGVycm9yCisrZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgIm5vdGlmeSIgIi4qIG5vdGlmeS1oZXJlIC4qIgorKworK2dk Yl90ZXN0ICJpbmZvIHNoYXJlZGxpYnJhcnkiIHsvbGlicHRocmVhZFwuc28uKn0gImxpYnB0aHJl YWQuc28gZm91bmQiCitJbmRleDogZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gZ2RiLTcuNi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAx My0wNi0xMCAxNDoyOToyNC44MTkxMjM5NDAgKzAyMDAKKysrKyBnZGItNy42L2dkYi90ZXN0c3Vp dGUvbGliL2dkYi5leHAJMjAxMy0wNi0xMCAxNDozMDo0NC42NTQwOTIxNDAgKzAyMDAKK0BAIC00 MDExLDIyICs0MDExLDYgQEAgcHJvYyBidWlsZF9leGVjdXRhYmxlX2Zyb21fc3BlY3Mge3Rlc3Ru YQorIAorICAgICBzZXQgYmluZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJGV4ZWN1dGFibGVd CisgCistICAgIHNldCBvYmplY3RzIHt9CistICAgIHNldCBpIDAKKy0gICAgZm9yZWFjaCB7cyBs b2NhbF9vcHRpb25zfSAkYXJncyB7CistICAgICAgICBpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3Jj ZGlyfS8ke3N1YmRpcn0vJHtzfSIgIiR7YmluZmlsZX0ke2l9Lm8iIG9iamVjdCAkbG9jYWxfb3B0 aW9uc10gIT0gIiIgfSB7CistICAgICAgICAgICAgdW50ZXN0ZWQgJHRlc3RuYW1lCistICAgICAg ICAgICAgcmV0dXJuIC0xCistICAgICAgICB9CistICAgICAgICBsYXBwZW5kIG9iamVjdHMgIiR7 YmluZmlsZX0ke2l9Lm8iCistCWluY3IgaQorLSAgICB9CistICAgIAorLSAgICBpZiAgeyBbZ2Ri X2NvbXBpbGUgJG9iamVjdHMgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUgJG9wdGlvbnNdICE9ICIi IH0geworLSAgICAgICAgdW50ZXN0ZWQgJHRlc3RuYW1lCistICAgICAgICByZXR1cm4gLTEKKy0g ICAgfQorLQorICAgICBzZXQgaW5mb19vcHRpb25zICIiCisgICAgIGlmIHsgW2xzZWFyY2ggLWV4 YWN0ICRvcHRpb25zICJjKysiXSA+PSAwIH0geworIAlzZXQgaW5mb19vcHRpb25zICJjKysiCitA QCAtNDAzNCw2ICs0MDE4LDQyIEBAIHByb2MgYnVpbGRfZXhlY3V0YWJsZV9mcm9tX3NwZWNzIHt0 ZXN0bmEKKyAgICAgaWYgW2dldF9jb21waWxlcl9pbmZvICR7aW5mb19vcHRpb25zfV0geworICAg ICAgICAgcmV0dXJuIC0xCisgICAgIH0KKysKKysgICAgc2V0IGJpbmZpbGUgW3N0YW5kYXJkX291 dHB1dF9maWxlICRleGVjdXRhYmxlXQorKworKyAgICBzZXQgZnVuYyBnZGJfY29tcGlsZQorKyAg ICBzZXQgZnVuY19pbmRleCBbbHNlYXJjaCAtcmVnZXhwICRvcHRpb25zIHteKHB0aHJlYWRzfHNo bGlifHNobGliX3B0aHJlYWRzKSR9XQorKyAgICBpZiB7JGZ1bmNfaW5kZXggIT0gLTF9IHsKKysJ c2V0IGZ1bmMgIiR7ZnVuY31fW2xpbmRleCAkb3B0aW9ucyAkZnVuY19pbmRleF0iCisrICAgIH0K KysKKysgICAgIyBnZGJfY29tcGlsZV9zaGxpYiBhbmQgZ2RiX2NvbXBpbGVfc2hsaWJfcHRocmVh ZHMgZG8gbm90IHVzZSB0aGUgM3JkCisrICAgICMgcGFyYW1ldGVyLiAgVGhleSBhbHNvIHJlcXVp cmVzICRzb3VyY2VzIHdoaWxlIGdkYl9jb21waWxlIGFuZAorKyAgICAjIGdkYl9jb21waWxlX3B0 aHJlYWRzIHJlcXVpcmUgJG9iamVjdHMuICBNb3Jlb3ZlciB0aGV5IGlnbm9yZSBhbnkgb3B0aW9u cy4KKysgICAgaWYgW3N0cmluZyBtYXRjaCBnZGJfY29tcGlsZV9zaGxpYiogJGZ1bmNdIHsKKysJ c2V0IHNvdXJjZXNfcGF0aCB7fQorKwlmb3JlYWNoIHtzIGxvY2FsX29wdGlvbnN9ICRhcmdzIHsK KysJICAgIGxhcHBlbmQgc291cmNlc19wYXRoICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c30iCisr CX0KKysJc2V0IHJldCBbJGZ1bmMgJHNvdXJjZXNfcGF0aCAiJHtiaW5maWxlfSIgJG9wdGlvbnNd CisrICAgIH0gZWxzZSB7CisrCXNldCBvYmplY3RzIHt9CisrCXNldCBpIDAKKysJZm9yZWFjaCB7 cyBsb2NhbF9vcHRpb25zfSAkYXJncyB7CisrCSAgICBpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3Jj ZGlyfS8ke3N1YmRpcn0vJHtzfSIgIiR7YmluZmlsZX0ke2l9Lm8iIG9iamVjdCAkbG9jYWxfb3B0 aW9uc10gIT0gIiIgfSB7CisrCQl1bnRlc3RlZCAkdGVzdG5hbWUKKysJCXJldHVybiAtMQorKwkg ICAgfQorKwkgICAgbGFwcGVuZCBvYmplY3RzICIke2JpbmZpbGV9JHtpfS5vIgorKwkgICAgaW5j ciBpCisrCX0KKysJc2V0IHJldCBbJGZ1bmMgJG9iamVjdHMgIiR7YmluZmlsZX0iIGV4ZWN1dGFi bGUgJG9wdGlvbnNdCisrICAgIH0KKysgICAgaWYgIHsgJHJldCAhPSAiIiB9IHsKKysgICAgICAg IHVudGVzdGVkICR0ZXN0bmFtZQorKyAgICAgICAgcmV0dXJuIC0xCisrICAgIH0KKysKKyAgICAg cmV0dXJuIDAKKyB9CisgCitJbmRleDogZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5r LXN1cHBvcnQuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNi5vcmlnL2dkYi90ZXN0c3VpdGUv bGliL3ByZWxpbmstc3VwcG9ydC5leHAJMjAxMy0wNi0xMCAxNDoyOToyNC44MTkxMjM5NDAgKzAy MDAKKysrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAJMjAx My0wNi0xMCAxNDozMDoxOC4wODkxMDIzNzQgKzAyMDAKK0BAIC05NSw4ICs5NSw5IEBAIHByb2Mg ZmlsZV9jb3B5IHtzcmMgZGVzdH0geworICMgV3JhcCBmdW5jdGlvbiBidWlsZF9leGVjdXRhYmxl IHNvIHRoYXQgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIGlzIGZ1bGx5CisgIyBzZWxmLXN1ZmZp Y2llbnQgKHdpdGhvdXQgZGVwZW5kZW5jaWVzIG9uIHN5c3RlbSBsaWJyYXJpZXMpLiAgUGFyYW1l dGVyCisgIyBJTlRFUlAgbWF5IGJlIHVzZWQgdG8gc3BlY2lmeSBhIGxvYWRlciAobGQuc28pIHRv IGJlIHVzZWQgdGhhdCBpcworLSMgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQgc3lzdGVtIG9u ZS4gIExpYnJhcmllcyBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZQorLSMgZGVwZW5kcyBhcmUgY29w aWVkIGludG8gZGlyZWN0b3J5IERJUi4gIERlZmF1bHQgRElSIHZhbHVlIHRvCisrIyBkaWZmZXJl bnQgZnJvbSB0aGUgZGVmYXVsdCBzeXN0ZW0gb25lLiAgSU5URVJQIGNhbiBiZSBzZXQgdG8gIm5v IiBpZiBubyBsZC5zbworKyMgY29weSBzaG91bGQgYmUgbWFkZS4gIExpYnJhcmllcyBvbiB3aGlj aCB0aGUgZXhlY3V0YWJsZSBkZXBlbmRzIGFyZSBjb3BpZWQKKysjIGludG8gZGlyZWN0b3J5IERJ Ui4gIERlZmF1bHQgRElSIHZhbHVlIHRvCisgIyBgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke0VYRUNV VEFCTEV9LmQnLgorICMKKyAjIEluIGNhc2Ugb2Ygc3VjY2VzcywgcmV0dXJuIGEgc3RyaW5nIGNv bnRhaW5pbmcgdGhlIGFyZ3VtZW50cyB0byBiZSB1c2VkCitAQCAtMTUxLDggKzE1MiwxNSBAQCBw cm9jIGJ1aWxkX2V4ZWN1dGFibGVfb3duX2xpYnMge3Rlc3RuYW1lCisgCisgICAgIGlmIHskaW50 ZXJwID09ICIifSB7CisgCXNldCBpbnRlcnBfc3lzdGVtIFtzZWN0aW9uX2dldCAkYmluZmlsZSAu aW50ZXJwXQorLQlzZXQgaW50ZXJwICR7ZGlyfS9bZmlsZSB0YWlsICRpbnRlcnBfc3lzdGVtXQor LQlmaWxlX2NvcHkgJGludGVycF9zeXN0ZW0gJGludGVycAorKwlpZiB7JGludGVycF9zeXN0ZW0g PT0gIiJ9IHsKKysJICAgIGZhaWwgIiR0ZXN0IGNvdWxkIG5vdCBmaW5kIC5pbnRlcnAiCisrCX0g ZWxzZSB7CisrCSAgICBzZXQgaW50ZXJwICR7ZGlyfS9bZmlsZSB0YWlsICRpbnRlcnBfc3lzdGVt XQorKwkgICAgZmlsZV9jb3B5ICRpbnRlcnBfc3lzdGVtICRpbnRlcnAKKysJfQorKyAgICB9Cisr ICAgIGlmIHskaW50ZXJwID09ICJubyJ9IHsKKysJc2V0IGludGVycCAiIgorICAgICB9CisgCisg ICAgIHNldCBkZXN0cyB7fQorQEAgLTE2NCwxMyArMTcyLDE5IEBAIHByb2MgYnVpbGRfZXhlY3V0 YWJsZV9vd25fbGlicyB7dGVzdG5hbWUKKyAKKyAgICAgIyBEbyBub3QgbGFwcGVuZCBpdCBzbyB0 aGF0ICItcnBhdGggJGRpciIgb3ZlcnJpZGVzIGFueSBwb3NzaWJsZSAiLXJwYXRoInMKKyAgICAg IyBzcGVjaWZpZWQgYnkgdGhlIGNhbGxlciB0byBiZSBhYmxlIHRvIGxpbmsgaXQgZm9yIGxkZCIg YWJvdmUuCistICAgIHNldCBvcHRpb25zIFtsaW5zZXJ0ICRvcHRpb25zIDAgImxkZmxhZ3M9LVds LC0tZHluYW1pYy1saW5rZXIsJGludGVycCwtcnBhdGgsJGRpciJdCisrICAgIHNldCBvcHRpb25z IFtsaW5zZXJ0ICRvcHRpb25zIDAgImxkZmxhZ3M9LVdsLC1ycGF0aCwkZGlyIl0KKysgICAgaWYg eyRpbnRlcnAgIT0gIiJ9IHsKKysJc2V0IG9wdGlvbnMgW2xpbnNlcnQgJG9wdGlvbnMgMCAibGRm bGFncz0tV2wsLS1keW5hbWljLWxpbmtlciwkaW50ZXJwIl0KKysgICAgfQorIAorICAgICBpZiB7 W2J1aWxkX2V4ZWN1dGFibGUgJHRlc3RuYW1lICRleGVjdXRhYmxlICRzb3VyY2VzICRvcHRpb25z XSA9PSAtMX0geworIAlyZXR1cm4gIiIKKyAgICAgfQorIAorLSAgICBzZXQgcHJlbGlua19hcmdz ICItLWR5bmFtaWMtbGlua2VyPSRpbnRlcnAgLS1sZC1saWJyYXJ5LXBhdGg9JGRpciAkYmluZmls ZSAkaW50ZXJwIFtjb25jYXQgJGRlc3RzXSIKKysgICAgc2V0IHByZWxpbmtfYXJncyAiLS1sZC1s aWJyYXJ5LXBhdGg9JGRpciAkYmluZmlsZSBbY29uY2F0ICRkZXN0c10iCisrICAgIGlmIHskaW50 ZXJwICE9ICIifSB7CisrCXNldCBwcmVsaW5rX2FyZ3MgIi0tZHluYW1pYy1saW5rZXI9JGludGVy cCAkcHJlbGlua19hcmdzICRpbnRlcnAiCisrICAgIH0KKyAgICAgcmV0dXJuICRwcmVsaW5rX2Fy Z3MKKyB9CisgCgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTlvZjkucGF0Y2gg Yi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtOW9mOS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi5jMmJiODk3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWRsb3Blbi1zdGFw LXByb2JlLTlvZjkucGF0Y2gKQEAgLTAsMCArMSw0MTUgQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItY3ZzLzIwMTMtMDYvbXNnMDAwMjAuaHRtbAorCisjIyMgc3JjL2dkYi90ZXN0c3Vp dGUvQ2hhbmdlTG9nCTIwMTMvMDYvMDQgMTM6MjM6MzEJMS4zNjgzCisjIyMgc3JjL2dkYi90ZXN0 c3VpdGUvQ2hhbmdlTG9nCTIwMTMvMDYvMDQgMTM6MzE6MDAJMS4zNjg0CisjIyAtMSwzICsxLDEz IEBACisrMjAxMy0wNi0wNCAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJlZGhhdC5jb20+CisrCisr CSogZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmV4cDogTmV3IGZpbGUuCisrCSogZ2RiLmJhc2UvYnJl YWstcHJvYmVzLmM6IExpa2V3aXNlLgorKwkqIGdkYi5iYXNlL2JyZWFrLXByb2Jlcy1zb2xpYi5j OiBMaWtld2lzZS4KKysJKiBnZGIuYmFzZS9pbmZvLXNoYXJlZC5leHA6IE5ldyBmaWxlLgorKwkq IGdkYi5iYXNlL2luZm8tc2hhcmVkLmM6IExpa2V3aXNlLgorKwkqIGdkYi5iYXNlL2luZm8tc2hh cmVkLXNvbGliMS5jOiBMaWtld2lzZS4KKysJKiBnZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjIu YzogTGlrZXdpc2UuCisrCisgMjAxMy0wNi0wNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgorIAkgICAgR2FyeSBCZW5zb24gIDxnYmVuc29uQHJlZGhhdC5jb20+ CisgCistLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLXNvbGliLmMK KysrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMtc29saWIuYwkyMDEz LTA2LTEwIDEyOjE1OjExLjU0ODkzNTQxMyArMDAwMAorQEAgLTAsMCArMSwyMiBAQAorKy8qIENv cHlyaWdodCAyMDEyLTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor KworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDxzdGRp by5oPgorKworK2ludAorK2ZvbyAoaW50IG4pCisreworKyAgcmV0dXJuIG4gKiBuIC8gMTc7Cisr fQorLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy5jCisrKysgc3Jj L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmMJMjAxMy0wNi0xMCAxMjoxNTox Mi4wNDc3MTczODMgKzAwMDAKK0BAIC0wLDAgKzEsMzAgQEAKKysvKiBDb3B5cmlnaHQgMjAxMi0y MDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSA8ZGxmY24uaD4KKysjaW5jbHVk ZSA8YXNzZXJ0Lmg+CisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorKworK2ludAorK21haW4gKHZvaWQp CisreworKyAgdm9pZCAqaGFuZGxlID0gZGxvcGVuIChTSExJQl9OQU1FLCBSVExEX0xBWlkpOwor KworKyAgYXNzZXJ0IChoYW5kbGUgIT0gTlVMTCk7CisrCisrICBkbGNsb3NlIChoYW5kbGUpOwor KworKyAgcmV0dXJuIDA7CisrfQorLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFr LXByb2Jlcy5leHAKKysrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMu ZXhwCTIwMTMtMDYtMTAgMTI6MTU6MTIuNjIwMzY4MDQwICswMDAwCitAQCAtMCwwICsxLDc4IEBA CisrIyBDb3B5cmlnaHQgMjAxMi0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor KworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisr IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor KyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytpZiB7IFtza2lwX3NobGliX3Rl c3RzXSB9IHsKKysgICAgcmV0dXJuIDAKKyt9CisrCisrc3RhbmRhcmRfdGVzdGZpbGUKKysKKytz ZXQgbGlibmFtZSAkdGVzdGZpbGUtc29saWIKKytzZXQgc3JjZmlsZV9saWIgJHNyY2Rpci8kc3Vi ZGlyLyRsaWJuYW1lLmMKKytzZXQgYmluZmlsZV9saWIgW3N0YW5kYXJkX291dHB1dF9maWxlICRs aWJuYW1lLnNvXQorKworK3NldCBub3JtYWxfYnAgIl9kbF9kZWJ1Z19zdGF0ZSIKKytzZXQgcHJv YmVzX2JwICJkbF9tYWluIgorKworK2lmIHsgW2dkYl9jb21waWxlX3NobGliICRzcmNmaWxlX2xp YiAkYmluZmlsZV9saWIgXAorKwkgIFtsaXN0IGFkZGl0aW9uYWxfZmxhZ3M9LWZQSUNdXSAhPSAi IiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkIG5vdCBjb21waWxlICRiaW5maWxlX2xpYi4iCisr ICAgIHJldHVybiAtMQorK30KKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR0ZXN0Zmls ZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIFwKKysJICBbbGlzdCBhZGRpdGlvbmFsX2ZsYWdzPS1E U0hMSUJfTkFNRT1cIiRiaW5maWxlX2xpYlwiIGxpYnM9LWxkbF1dIH0geworKyAgICByZXR1cm4g LTEKKyt9CisrCisrIyBFbmFibGUgc3RvcC1vbi1zb2xpYi1ldmVudHMKKytnZGJfdGVzdF9ub19v dXRwdXQgInNldCBzdG9wLW9uLXNvbGliLWV2ZW50cyAxIgorKworKyMgU3RhcnQgdGhlIGluZmVy aW9yIGFuZCBydW4gdG8gdGhlIGZpcnN0IHN0b3AKKytnZGJfcnVuX2NtZAorK2dkYl90ZXN0ICIi ICIuKlN0b3BwZWQgZHVlIHRvIHNoYXJlZCBsaWJyYXJ5IGV2ZW50LioiCisrCisrIyBYRkFJTCBp ZiB3ZSBhcmUgbm90IHVzaW5nIHByb2JlcworK3NldCB0ZXN0ICJlbnN1cmUgdXNpbmcgcHJvYmVz IgorK3NldCB1c2luZ19wcm9iZXMgMAorK2dkYl90ZXN0X211bHRpcGxlICJidCIgJHRlc3Qgewor KyAgICAtcmUgIiMwICtcW15cclxuXF0qXFxtKF9fR0lfKT8kbm9ybWFsX2JwXFxNLiokZ2RiX3By b21wdCAkIiB7CisrCXVudGVzdGVkICJwcm9iZXMgbm90IHByZXNlbnQgb24gdGhpcyBzeXN0ZW0i CisrICAgIH0KKysgICAgLXJlICIjMCArXFteXHJcblxdKlxcbShfX0dJXyk/JHByb2Jlc19icFxc TS4qJGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICR0ZXN0CisrCXNldCB1c2luZ19wcm9iZXMgMQor KyAgICB9CisrfQorKworK2lmIHsgJHVzaW5nX3Byb2JlcyB9IHsKKysgICAgIyBSdW4gdGlsIGl0 IGxvYWRzIG91ciBsaWJyYXJ5CisrICAgIHNldCB0ZXN0ICJydW4gdGlsIG91ciBsaWJyYXJ5IGxv YWRzIgorKyAgICBzZXQgbm90X2xvYWRlZF9saWJyYXJ5IDEKKysgICAgd2hpbGUgeyAkbm90X2xv YWRlZF9saWJyYXJ5IH0geworKwlzZXQgbm90X2xvYWRlZF9saWJyYXJ5IDAKKysJZ2RiX3Rlc3Rf bXVsdGlwbGUgImMiICR0ZXN0IHsKKysJICAgIC1yZSAiSW5mZXJpb3IgbG9hZGVkICRiaW5maWxl X2xpYlxcTS4qJGdkYl9wcm9tcHQgJCIgeworKwkJcGFzcyAkdGVzdAorKwkgICAgfQorKwkgICAg LXJlICJTdG9wcGVkIGR1ZSB0byBzaGFyZWQgbGlicmFyeSBldmVudFxcTS4qJGdkYl9wcm9tcHQg JCIgeworKwkJc2V0IG5vdF9sb2FkZWRfbGlicmFyeSAxCisrCSAgICB9CisrCX0KKysgICAgfQor KworKyAgICAjIENhbGwgc29tZXRoaW5nIHRvIGVuc3VyZSB0aGF0IHJlbG9jYXRpb24gb2NjdXJy ZWQKKysgICAgZ2RiX3Rlc3QgImNhbGwgZm9vKDIzKSIgIlxcXCQuKiA9IDMxLipcXFxNLioiCisr fQorLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLXNvbGliMS5jCisr Kysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQtc29saWIxLmMJMjAxMy0w Ni0xMCAxMjoxNToxNC4zOTkxMjkyODggKzAwMDAKK0BAIC0wLDAgKzEsMjQgQEAKKysvKiBDb3B5 cmlnaHQgMjAxMi0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysK KysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSA8c3RkaW8u aD4KKysKKytpbnQKKytmb28gKGludCBuKQorK3sKKysgIHByaW50ZiAoImZvbyAlZFxuIiwgbik7 CisrCisrICByZXR1cm4gMDsKKyt9CistLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5m by1zaGFyZWQtc29saWIyLmMKKysrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNo YXJlZC1zb2xpYjIuYwkyMDEzLTA2LTEwIDEyOjE1OjE0LjkzMDEzNTc0MiArMDAwMAorQEAgLTAs MCArMSwyNCBAQAorKy8qIENvcHlyaWdodCAyMDEyLTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwor KworKyNpbmNsdWRlIDxzdGRpby5oPgorKworK2ludAorK2JhciAoaW50IG4pCisreworKyAgcHJp bnRmICgiYmFyICVkXG4iLCBuKTsKKysKKysgIHJldHVybiAwOworK30KKy0tLSBzcmMvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC5jCisrKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvaW5mby1zaGFyZWQuYwkyMDEzLTA2LTEwIDEyOjE1OjE1LjM5NTQ3NDgxOSArMDAwMAor QEAgLTAsMCArMSw1MiBAQAorKy8qIENvcHlyaWdodCAyMDEyLTIwMTMgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLworKworKyNpbmNsdWRlIDxkbGZjbi5oPgorKyNpbmNsdWRlIDxhc3NlcnQuaD4KKysjaW5j bHVkZSA8c3RkZGVmLmg+CisrCisrdm9pZAorK3N0b3AgKHZvaWQpCisreworK30KKysKKytpbnQK KyttYWluICh2b2lkKQorK3sKKysgIHZvaWQgKmhhbmRsZTEsICpoYW5kbGUyOworKyAgdm9pZCAo KmZ1bmMpKGludCk7CisrCisrICBoYW5kbGUxID0gZGxvcGVuIChTSExJQjFfTkFNRSwgUlRMRF9M QVpZKTsKKysgIGFzc2VydCAoaGFuZGxlMSAhPSBOVUxMKTsKKysgIHN0b3AgKCk7CisrCisrICBo YW5kbGUyID0gZGxvcGVuIChTSExJQjJfTkFNRSwgUlRMRF9MQVpZKTsKKysgIGFzc2VydCAoaGFu ZGxlMiAhPSBOVUxMKTsKKysgIHN0b3AgKCk7CisrCisrICBmdW5jID0gKHZvaWQgKCopKGludCkp IGRsc3ltIChoYW5kbGUxLCAiZm9vIik7CisrICBmdW5jICgxKTsKKysKKysgIGZ1bmMgPSAodm9p ZCAoKikoaW50KSkgZGxzeW0gKGhhbmRsZTIsICJiYXIiKTsKKysgIGZ1bmMgKDIpOworKworKyAg ZGxjbG9zZSAoaGFuZGxlMSk7CisrICBzdG9wICgpOworKworKyAgZGxjbG9zZSAoaGFuZGxlMik7 CisrICBzdG9wICgpOworKworKyAgcmV0dXJuIDA7CisrfQorLS0tIHNyYy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2luZm8tc2hhcmVkLmV4cAorKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2luZm8tc2hhcmVkLmV4cAkyMDEzLTA2LTEwIDEyOjE1OjE1Ljg5MTQ1MDI4NSArMDAwMAorQEAg LTAsMCArMSwxNDYgQEAKKysjIENvcHlyaWdodCAyMDEyLTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK2lmIHsg W3NraXBfc2hsaWJfdGVzdHNdIH0geworKyAgICByZXR1cm4gMAorK30KKysKKytzdGFuZGFyZF90 ZXN0ZmlsZQorKworK3NldCBsaWIxbmFtZSAkdGVzdGZpbGUtc29saWIxCisrc2V0IHNyY2ZpbGVf bGliMSAkc3JjZGlyLyRzdWJkaXIvJGxpYjFuYW1lLmMKKytzZXQgYmluZmlsZV9saWIxIFtzdGFu ZGFyZF9vdXRwdXRfZmlsZSAkbGliMW5hbWUuc29dCisrc2V0IGRlZmluZTEgLURTSExJQjFfTkFN RT1cIiRiaW5maWxlX2xpYjFcIgorKworK3NldCBsaWIybmFtZSAkdGVzdGZpbGUtc29saWIyCisr c2V0IHNyY2ZpbGVfbGliMiAkc3JjZGlyLyRzdWJkaXIvJGxpYjJuYW1lLmMKKytzZXQgYmluZmls ZV9saWIyIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAkbGliMm5hbWUuc29dCisrc2V0IGRlZmluZTIg LURTSExJQjJfTkFNRT1cIiRiaW5maWxlX2xpYjJcIgorKworK2lmIHsgW2dkYl9jb21waWxlX3No bGliICRzcmNmaWxlX2xpYjEgJGJpbmZpbGVfbGliMSBcCisrCSAgW2xpc3QgYWRkaXRpb25hbF9m bGFncz0tZlBJQ11dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGQgbm90IGNvbXBpbGUg JGJpbmZpbGVfbGliMS4iCisrICAgIHJldHVybiAtMQorK30KKysKKytpZiB7IFtnZGJfY29tcGls ZV9zaGxpYiAkc3JjZmlsZV9saWIyICRiaW5maWxlX2xpYjIgXAorKwkgIFtsaXN0IGFkZGl0aW9u YWxfZmxhZ3M9LWZQSUNdXSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkIG5vdCBjb21w aWxlICRiaW5maWxlX2xpYjIuIgorKyAgICByZXR1cm4gLTEKKyt9CisrCisrc2V0IGNmbGFncyAi JGRlZmluZTEgJGRlZmluZTIiCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUu ZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSBcCisrCSAgW2xpc3QgYWRkaXRpb25hbF9mbGFncz0kY2Zs YWdzIGxpYnM9LWxkbF1dIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBSdW4gImluZm8g c2hhcmVkbGlicmFyeSIgYW5kIGNoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZgor KyMgb3VyIGxpYnJhcmllcy4KKytwcm9jIGNoZWNrX2luZm9fc2hhcmVkIHsgdGVzdCBleHBlY3Qx IGV4cGVjdDIgfSB7CisrICAgIGdsb2JhbCBsaWIxbmFtZQorKyAgICBnbG9iYWwgbGliMm5hbWUK KysgICAgZ2xvYmFsIGdkYl9wcm9tcHQKKysKKysgICAgc2V0IGFjdHVhbDEgMAorKyAgICBzZXQg YWN0dWFsMiAwCisrCisrICAgIGdkYl90ZXN0X211bHRpcGxlICJpbmZvIHNoYXJlZGxpYnJhcnki ICR0ZXN0IHsKKysJLXJlICRsaWIxbmFtZSB7CisrCSAgICBzZXQgYWN0dWFsMSAxCisrCSAgICBl eHBfY29udGludWUKKysJfQorKwktcmUgJGxpYjJuYW1lIHsKKysJICAgIHNldCBhY3R1YWwyIDEK KysJICAgIGV4cF9jb250aW51ZQorKwl9CisrCS1yZSAiXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJ ICAgIGlmIHsgJGFjdHVhbDEgPT0gJGV4cGVjdDEgJiYgJGFjdHVhbDIgPT0gJGV4cGVjdDIgfSB7 CisrCQlwYXNzICR0ZXN0CisrCSAgICB9IGVsc2UgeworKwkJZmFpbCAkdGVzdAorKwkgICAgfQor Kwl9CisrICAgIH0KKyt9CisrCisrIyBTdGFydCB0aGUgaW5mZXJpb3IsIGFuZCBjaGVjayBuZWl0 aGVyIG9mIHRoZSBsaWJyYXJpZXMgYXJlIGxvYWRlZCBhdAorKyMgdGhlIHN0YXJ0LgorK2lmICFb cnVudG9fbWFpbl0geworKyAgICByZXR1cm4gMAorK30KKytjaGVja19pbmZvX3NoYXJlZCAiaW5m byBzaGFyZWRsaWJyYXJ5ICMxIiAwIDAKKysKKysjIFNldCB1cCBicmVha3BvaW50cy4KKytnZGJf YnJlYWtwb2ludCAic3RvcCIKKytnZGJfYnJlYWtwb2ludCAiZm9vIiBhbGxvdy1wZW5kaW5nCisr Z2RiX2JyZWFrcG9pbnQgImJhciIgYWxsb3ctcGVuZGluZworKworKyMgUnVuIHRvIHRoZSBmaXJz dCBzdG9wIGFuZCBjaGVjayB0aGF0IG9ubHkgdGhlIGZpcnN0IGxpYnJhcnkgaXMgbG9hZGVkLgor K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJsaWJyYXJ5IGxvYWQgIzEiICJzdG9wIC4qIgor K2NoZWNrX2luZm9fc2hhcmVkICJpbmZvIHNoYXJlZGxpYnJhcnkgIzIiIDEgMAorKworKyMgUnVu IHRvIHRoZSBzZWNvbmQgc3RvcCBhbmQgY2hlY2sgdGhhdCBib3RoIGxpYnJhcmllcyBhcmUgbG9h ZGVkLgorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJsaWJyYXJ5IGxvYWQgIzIiICJzdG9w IC4qIgorK2NoZWNrX2luZm9fc2hhcmVkICJpbmZvIHNoYXJlZGxpYnJhcnkgIzMiIDEgMQorKwor KyMgQ2hlY2sgdGhhdCB0aGUgbmV4dCBzdG9wIGlzIGluIGZvby4KKytnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAibGlicmFyeSBmdW5jdGlvbiAjMSIgImZvbyAuKiIKKysKKysjIENoZWNrIHRo YXQgdGhlIG5leHQgc3RvcCBpcyBpbiBiYXIuCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg ImxpYnJhcnkgZnVuY3Rpb24gIzIiICJiYXIgLioiCisrCisrIyBSZXN0YXJ0IHRoZSBpbmZlcmlv ciBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBicmVha3BvaW50IHJlc2V0CisrIyBlcnJvcnMu ICBUaGVzZSBjYW4gaGFwcGVuIHdpdGggdGhlIHByb2Jlcy1iYXNlZCBydW50aW1lIGxpbmtlcgor KyMgaW50ZXJmYWNlIGlmIHRoZSBjYWNoZSBpcyBub3QgY2xlYXJlZCBjb3JyZWN0bHkuCisrc2V0 IHRlc3QgInJlc3RhcnQiCisrZ2RiX3J1bl9jbWQKKytnZGJfdGVzdF9tdWx0aXBsZSAiIiAkdGVz dCB7CisrICAgIC1yZSB7U3RhcnQgaXQgZnJvbSB0aGUgYmVnaW5uaW5nXD8gXCh5IG9yIG5cKSAk fSB7CisrCXNlbmRfZ2RiICJ5XG4iCisrCWV4cF9jb250aW51ZQorKyAgICB9CisrICAgIC1yZSB7 RXJyb3IgaW4gcmUtc2V0dGluZyBicmVha3BvaW50fSB7CisrCWZhaWwgJHRlc3QKKysgICAgfQor KyAgICAtcmUgIlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXBhc3MgJHRlc3QKKysgICAgfQorK30K KysKKysjIENoZWNrIHRoYXQgbmVpdGhlciBsaWJyYXJ5IGlzIGxvYWRlZC4KKytjaGVja19pbmZv X3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICM0IiAwIDAKKysKKysjIFJ1biB0byB0aGUgZmly c3Qgc3RvcCBhbmQgY2hlY2sgdGhhdCBvbmx5IHRoZSBmaXJzdCBsaWJyYXJ5IGlzIGxvYWRlZC4K KytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibGlicmFyeSBsb2FkICMzIiAic3RvcCAuKiIK KytjaGVja19pbmZvX3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICM1IiAxIDAKKysKKysjIFJ1 biB0byB0aGUgc2Vjb25kIHN0b3AgYW5kIGNoZWNrIHRoYXQgYm90aCBsaWJyYXJpZXMgYXJlIGxv YWRlZC4KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibGlicmFyeSBsb2FkICM0IiAic3Rv cCAuKiIKKytjaGVja19pbmZvX3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICM2IiAxIDEKKysK KysjIENoZWNrIHRoYXQgdGhlIG5leHQgc3RvcCBpcyBpbiBmb28uCisrZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgImxpYnJhcnkgZnVuY3Rpb24gIzMiICJmb28gLioiCisrCisrIyBDaGVjayB0 aGF0IHRoZSBuZXh0IHN0b3AgaXMgaW4gYmFyLgorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50 ICJsaWJyYXJ5IGZ1bmN0aW9uICM0IiAiYmFyIC4qIgorKworKyMgUnVuIHRvIHRoZSBuZXh0IHN0 b3AgYW5kIGNoZWNrIHRoYXQgdGhlIGZpcnN0IGxpYnJhcnkgaGFzIGJlZW4gdW5sb2FkZWQuCisr Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImxpYnJhcnkgdW5sb2FkICMxIiAic3RvcCAuKiIK KytjaGVja19pbmZvX3NoYXJlZCAiaW5mbyBzaGFyZWRsaWJyYXJ5ICM3IiAwIDEKKysKKysjIFJ1 biB0byB0aGUgbGFzdCBzdG9wIGFuZCBjaGVjayB0aGF0IGJvdGggbGlicmFyaWVzIGFyZSBnb25l LgorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJsaWJyYXJ5IHVubG9hZCAjMiIgInN0b3Ag LioiCisrY2hlY2tfaW5mb19zaGFyZWQgImluZm8gc2hhcmVkbGlicmFyeSAjOCIgMCAwCgpkaWZm IC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLWZpeHVwLnBhdGNoIGIvZ2RiLWRsb3Blbi1z dGFwLXByb2JlLWZpeHVwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGUx OGMxLi4wMDAwMDAwCi0tLSBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS1maXh1cC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS0tLSBnZGItNy42LXgvZ2RiL3NvbGliLXN2cjQu YwkyMDEzLTA1LTE5IDE2OjA0OjM2LjgzODg3NDU5NSArMDIwMAotKysrIGdkYi03LjYvZ2RiL3Nv bGliLXN2cjQuYwkyMDEzLTA1LTE5IDE2OjEyOjM1LjExMjUxNDk3OCArMDIwMAotQEAgLTEwNzgs NyArMTA3OCw2IEBAIHN2cjRfZnJlZV9saWJyYXJ5X2xpc3QgKHZvaWQgKnBfbGlzdCkKLSBzdGF0 aWMgc3RydWN0IHNvX2xpc3QgKgotIHN2cjRfY29weV9saWJyYXJ5X2xpc3QgKHN0cnVjdCBzb19s aXN0ICpzcmMpCi0gewotLSAgc3RydWN0IGxpbmtfbWFwX29mZnNldHMgKmxtbyA9IHN2cjRfZmV0 Y2hfbGlua19tYXBfb2Zmc2V0cyAoKTsKLSAgIHN0cnVjdCBzb19saXN0ICpkc3QgPSBOVUxMOwot ICAgc3RydWN0IHNvX2xpc3QgKipsaW5rID0gJmRzdDsKLSAKLUBAIC0xMDkwLDggKzEwODksOCBA QCBzdnI0X2NvcHlfbGlicmFyeV9saXN0IChzdHJ1Y3Qgc29fbGlzdCAqCi0gCi0gICAgICAgbWVt Y3B5IChuZXcsIHNyYywgc2l6ZW9mIChzdHJ1Y3Qgc29fbGlzdCkpOwotIAotLSAgICAgIG5ldy0+ bG1faW5mbyA9IHhtYWxsb2MgKGxtby0+bGlua19tYXBfc2l6ZSk7Ci0tICAgICAgbWVtY3B5IChu ZXctPmxtX2luZm8sIHNyYy0+bG1faW5mbywgbG1vLT5saW5rX21hcF9zaXplKTsKLSsgICAgICBu ZXctPmxtX2luZm8gPSB4bWFsbG9jIChzaXplb2YgKCpuZXctPmxtX2luZm8pKTsKLSsgICAgICBt ZW1jcHkgKG5ldy0+bG1faW5mbywgc3JjLT5sbV9pbmZvLCBzaXplb2YgKCpuZXctPmxtX2luZm8p KTsKLSAKLSAgICAgICBuZXctPm5leHQgPSBOVUxMOwotICAgICAgICpsaW5rID0gbmV3OwotQEAg LTE3NDcsNyArMTc0Niw3IEBAIHNvbGlzdF91cGRhdGVfaW5jcmVtZW50YWwgKHN0cnVjdCBzdnI0 X2kKLSAgICAgICBzdHJ1Y3Qgc3ZyNF9saWJyYXJ5X2xpc3QgbGlicmFyeV9saXN0OwotICAgICAg IGNoYXIgYW5uZXhbNjRdOwotIAotLSAgICAgIHhzbnByaW50ZiAoYW5uZXgsIHNpemVvZiAoYW5u ZXgpLCAic3RhcnQ9JWx4O3ByZXY9JWx4IiwgbG0sIHByZXZfbG0pOwotKyAgICAgIHhzbnByaW50 ZiAoYW5uZXgsIHNpemVvZiAoYW5uZXgpLCAic3RhcnQ9JWx4O3ByZXY9JWx4IiwgKHVuc2lnbmVk IGxvbmcpIGxtLCAodW5zaWduZWQgbG9uZykgcHJldl9sbSk7Ci0gICAgICAgaWYgKCFzdnI0X2N1 cnJlbnRfc29zX3ZpYV94ZmVyX2xpYnJhcmllcyAoJmxpYnJhcnlfbGlzdCwgYW5uZXgpKQotIAly ZXR1cm4gMDsKLSAKLUBAIC0xODEzLDcgKzE4MTIsMTAgQEAgc3ZyNF9oYW5kbGVfc29saWJfZXZl bnQgKHZvaWQpCi0gICAgIGdvdG8gZXJyb3I7Ci0gCi0gICBpZiAoYWN0aW9uID09IERPX05PVEhJ TkcpCi0rewotK2RvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotICAgICByZXR1cm47Ci0rfQotIAot ICAgLyogRVZBTFVBVEVfUFJPQkVfQVJHVU1FTlQgbG9va3MgdXAgc3ltYm9scyBpbiB0aGUgZHlu YW1pYyBsaW5rZXIKLSAgICAgIHVzaW5nIEZJTkRfUENfU0VDVElPTi4gIEZJTkRfUENfU0VDVElP TiBpcyBhY2NlbGVyYXRlZCBieSBhIGNhY2hlCi0tLS0gZ2RiLTcuNi14L2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYnJlYWstcHJvYmVzLmV4cAkyMDEzLTA1LTE5IDE2OjA2OjE5LjQ1MjgxODA5MCAr MDIwMAotKysrIGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMuZXhw CTIwMTMtMDUtMTkgMTY6MDc6NDkuNzMwNzcwMTM1ICswMjAwCi1AQCAtNjAsMTQgKzYwLDE1IEBA IGdkYl90ZXN0X211bHRpcGxlICJidCIgJHRlc3QgewotIGlmIHsgJHVzaW5nX3Byb2JlcyB9IHsK LSAgICAgIyBSdW4gdGlsIGl0IGxvYWRzIG91ciBsaWJyYXJ5Ci0gICAgIHNldCB0ZXN0ICJydW4g dGlsIG91ciBsaWJyYXJ5IGxvYWRzIgotLSAgICBzZXQgbG9hZGVkX2xpYnJhcnkgMAotLSAgICB3 aGlsZSB7ICEkbG9hZGVkX2xpYnJhcnkgfSB7Ci0rICAgIHNldCBub3RfbG9hZGVkX2xpYnJhcnkg MQotKyAgICB3aGlsZSB7ICRub3RfbG9hZGVkX2xpYnJhcnkgfSB7Ci0rCXNldCBub3RfbG9hZGVk X2xpYnJhcnkgMAotIAlnZGJfdGVzdF9tdWx0aXBsZSAiYyIgJHRlc3QgewotIAkgICAgLXJlICJJ bmZlcmlvciBsb2FkZWQgJGJpbmZpbGVfbGliXFxNLiokZ2RiX3Byb21wdCAkIiB7Ci0gCQlwYXNz ICR0ZXN0Ci0tCQlzZXQgbG9hZGVkX2xpYnJhcnkgMQotIAkgICAgfQotIAkgICAgLXJlICJTdG9w cGVkIGR1ZSB0byBzaGFyZWQgbGlicmFyeSBldmVudFxcTS4qJGdkYl9wcm9tcHQgJCIgewotKwkJ c2V0IG5vdF9sb2FkZWRfbGlicmFyeSAxCi0gCSAgICB9Ci0gCX0KLSAgICAgfQoKZGlmZiAtLWdp dCBhL2dkYi11cHN0cmVhbS1mcmFtZWZpbHRlcnMtMW9mMi5wYXRjaCBiL2dkYi11cHN0cmVhbS1m cmFtZWZpbHRlcnMtMW9mMi5wYXRjaAppbmRleCBkMGFiMTg4Li44MGEwZDQzIDEwMDY0NAotLS0g YS9nZGItdXBzdHJlYW0tZnJhbWVmaWx0ZXJzLTFvZjIucGF0Y2gKKysrIGIvZ2RiLXVwc3RyZWFt LWZyYW1lZmlsdGVycy0xb2YyLnBhdGNoCkBAIC01Nyw4ICs1Nyw4IEBAIGh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTMtMDUvbXNnMDAwODQuaHRtbAogIAkqIHN5bWZpbGUuYyAo c3ltc19mcm9tX29iamZpbGVfMSk6IERlbGV0ZSBhcmdzIG9mZnNldHMsIG51bV9vZmZzZXRzLgog SW5kZXg6IGdkYi03LjYvZ2RiL01ha2VmaWxlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5v cmlnL2dkYi9NYWtlZmlsZS5pbgkyMDEzLTA1LTIwIDIyOjIzOjM2Ljc0ODIxNTE0NiArMDIwMAot KysrIGdkYi03LjYvZ2RiL01ha2VmaWxlLmluCTIwMTMtMDUtMjAgMjI6MjU6NTIuMDk2MTY1Nzcz ICswMjAwCistLS0gZ2RiLTcuNi5vcmlnL2dkYi9NYWtlZmlsZS5pbgkyMDEzLTA2LTEwIDE0OjMx OjAyLjcwNDA4NDY2MyArMDIwMAorKysrIGdkYi03LjYvZ2RiL01ha2VmaWxlLmluCTIwMTMtMDYt MTAgMTQ6MzE6MDguMzUxMDgyNDQzICswMjAwCiBAQCAtMjg0LDYgKzI4NCw3IEBAIFNVQkRJUl9Q WVRIT05fT0JTID0gXAogIAlweS1leGl0ZWRldmVudC5vIFwKICAJcHktZmluaXNoYnJlYWtwb2lu dC5vIFwKQEAgLTc1LDcgKzc1LDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL01ha2VmaWxlLmluCiAg CXB5dGhvbi9weS1mdW5jdGlvbi5jIFwKICAJcHl0aG9uL3B5LWdkYi1yZWFkbGluZS5jIFwKICAJ cHl0aG9uL3B5LWluZmVyaW9yLmMgXAotQEAgLTIxMzUsNiArMjEzNywxMCBAQCBweS1mcmFtZS5v OiAkKHNyY2RpcikvcHl0aG9uL3B5LWZyYW1lLmMKK0BAIC0yMTc0LDYgKzIxNzYsMTAgQEAgcHkt ZnJhbWUubzogJChzcmNkaXIpL3B5dGhvbi9weS1mcmFtZS5jCiAgCSQoQ09NUElMRSkgJChQWVRI T05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LWZyYW1lLmMKICAJJChQT1NUQ09NUElMRSkK ICAKQEAgLTg4LDggKzg4LDggQEAgSW5kZXg6IGdkYi03LjYvZ2RiL01ha2VmaWxlLmluCiAgCSQo UE9TVENPTVBJTEUpCiBJbmRleDogZ2RiLTcuNi9nZGIvTkVXUwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjYub3JpZy9nZGIvTkVXUwkyMDEzLTA1LTIwIDIyOjIzOjM2Ljc0ODIxNTE0NiArMDIwMAot KysrIGdkYi03LjYvZ2RiL05FV1MJMjAxMy0wNS0yMCAyMjoyNTo1Mi4wOTcxNjU3NzIgKzAyMDAK Ky0tLSBnZGItNy42Lm9yaWcvZ2RiL05FV1MJMjAxMy0wNi0xMCAxNDozMTowOC4zNTMwODI0NDIg KzAyMDAKKysrKyBnZGItNy42L2dkYi9ORVdTCTIwMTMtMDYtMTAgMTQ6MzE6MjEuMjMwMDc3MzE5 ICswMjAwCiBAQCAtNCw2ICs0LDEwIEBACiAgKiBOZXdseSBpbnN0YWxsZWQgJHByZWZpeC9iaW4v Z2NvcmUgYWN0cyBhcyBhIHNoZWxsIGludGVyZmFjZSBmb3IgdGhlCiAgICBHREIgY29tbWFuZCBn Y29yZS4KQEAgLTk4LDEzICs5OCwxMyBAQCBJbmRleDogZ2RiLTcuNi9nZGIvTkVXUwogKwogKyAg KiogRnJhbWUgZmlsdGVycyBhbmQgZnJhbWUgZGVjb3JhdG9ycyBoYXZlIGJlZW4gYWRkZWQuCiAr Ci0gKioqIENoYW5nZXMgaW4gR0RCIDcuNgorICogTmV3IHJlbW90ZSBwYWNrZXRzCiAgCi0gKiBU YXJnZXQgcmVjb3JkIGhhcyBiZWVuIHJlbmFtZWQgdG8gcmVjb3JkLWZ1bGwuCisgcVhmZXI6bGli cmFyaWVzLXN2cjQ6cmVhZCdzIGFubmV4CiBJbmRleDogZ2RiLTcuNi9nZGIvc3RhY2suYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvc3RhY2suYwkyMDEzLTA1LTIwIDIyOjIzOjM2 Ljc0ODIxNTE0NiArMDIwMAotKysrIGdkYi03LjYvZ2RiL3N0YWNrLmMJMjAxMy0wNS0yMCAyMjoy NTo1Mi4wOTgxNjU3NzIgKzAyMDAKKy0tLSBnZGItNy42Lm9yaWcvZ2RiL3N0YWNrLmMJMjAxMy0w Ni0xMCAxNDozMTowMi43MDkwODQ2NjEgKzAyMDAKKysrKyBnZGItNy42L2dkYi9zdGFjay5jCTIw MTMtMDYtMTAgMTQ6MzE6MDguMzU0MDgyNDQxICswMjAwCiBAQCAtNTQsNiArNTQsNyBAQAogIAog ICNpbmNsdWRlICJwc3ltdGFiLmgiCkBAIC0zMjksOCArMzI5LDggQEAgSW5kZXg6IGdkYi03LjYv Z2RiL3N0YWNrLmMKICAgICAgewogSW5kZXg6IGdkYi03LjYvZ2RiL2RhdGEtZGlyZWN0b3J5L01h a2VmaWxlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9kYXRhLWRpcmVjdG9y eS9NYWtlZmlsZS5pbgkyMDEzLTA1LTIwIDIyOjIzOjM2Ljc0ODIxNTE0NiArMDIwMAotKysrIGdk Yi03LjYvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCTIwMTMtMDUtMjAgMjI6MjU6NTIu MDk4MTY1NzcyICswMjAwCistLS0gZ2RiLTcuNi5vcmlnL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtl ZmlsZS5pbgkyMDEzLTA2LTEwIDE0OjMxOjAyLjcxMDA4NDY2MCArMDIwMAorKysrIGdkYi03LjYv Z2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCTIwMTMtMDYtMTAgMTQ6MzE6MDguMzU1MDgy NDQxICswMjAwCiBAQCAtNTMsNyArNTMsMTEgQEAgUFlUSE9OX0RJUiA9IHB5dGhvbgogIFBZVEhP Tl9JTlNUQUxMX0RJUiA9ICQoREVTVERJUikkKEdEQl9EQVRBRElSKS8kKFBZVEhPTl9ESVIpCiAg UFlUSE9OX0ZJTEVTID0gXApAQCAtMzQ1LDkgKzM0NSw5IEBAIEluZGV4OiBnZGItNy42L2dkYi9k YXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgogIAlnZGIvY29tbWFuZC90eXBlX3ByaW50ZXJzLnB5 IFwKIEluZGV4OiBnZGItNy42L2dkYi9kb2MvZ2RiLnRleGluZm8KID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy42Lm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEzLTA1LTIwIDIyOjIzOjM2Ljc0ODIx NTE0NiArMDIwMAotKysrIGdkYi03LjYvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEzLTA1LTIwIDIy OjI1OjUyLjExMDE2NTc2NyArMDIwMAotQEAgLTY0NTMsNiArNjQ1Myw3IEBAIGN1cnJlbnRseSBl eGVjdXRpbmcgZnJhbWUgYW5kIGRlc2NyaWJlcworLS0tIGdkYi03LjYub3JpZy9nZGIvZG9jL2dk Yi50ZXhpbmZvCTIwMTMtMDYtMTAgMTQ6MzE6MDIuNzI3MDg0NjU0ICswMjAwCisrKysgZ2RiLTcu Ni9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTMtMDYtMTAgMTQ6MzE6MDguMzY0MDgyNDM4ICswMjAw CitAQCAtNjQ1OSw2ICs2NDU5LDcgQEAgY3VycmVudGx5IGV4ZWN1dGluZyBmcmFtZSBhbmQgZGVz Y3JpYmVzCiAgQG1lbnUKICAqIEZyYW1lczo6ICAgICAgICAgICAgICAgICAgICAgIFN0YWNrIGZy YW1lcwogICogQmFja3RyYWNlOjogICAgICAgICAgICAgICAgICAgQmFja3RyYWNlcwpAQCAtMzU1 LDcgKzM1NSw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9kb2MvZ2RiLnRleGluZm8KICAqIFNlbGVj dGlvbjo6ICAgICAgICAgICAgICAgICAgIFNlbGVjdGluZyBhIGZyYW1lCiAgKiBGcmFtZSBJbmZv OjogICAgICAgICAgICAgICAgICBJbmZvcm1hdGlvbiBvbiBhIGZyYW1lCiAgCi1AQCAtNjU0MCw2 ICs2NTQxLDcgQEAgbGluZSBwZXIgZnJhbWUsIGZvciBtYW55IGZyYW1lcywgc3RhcnRpbgorQEAg LTY1NDYsNiArNjU0Nyw3IEBAIGxpbmUgcGVyIGZyYW1lLCBmb3IgbWFueSBmcmFtZXMsIHN0YXJ0 aW4KICBmcmFtZSAoZnJhbWUgemVybyksIGZvbGxvd2VkIGJ5IGl0cyBjYWxsZXIgKGZyYW1lIG9u ZSksIGFuZCBvbiB1cCB0aGUKICBzdGFjay4KICAKQEAgLTM2Myw3ICszNjMsNyBAQCBJbmRleDog Z2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQHRhYmxlIEBjb2RlCiAgQGtpbmRleCBiYWNr dHJhY2UKICBAa2luZGV4IGJ0IEByeyhAY29kZXtiYWNrdHJhY2V9KX0KLUBAIC02NTY1LDYgKzY1 NjcsMTkgQEAgU2ltaWxhciwgYnV0IHByaW50IG9ubHkgdGhlIG91dGVybW9zdCBAdgorQEAgLTY1 NzEsNiArNjU3MywxOSBAQCBTaW1pbGFyLCBidXQgcHJpbnQgb25seSB0aGUgb3V0ZXJtb3N0IEB2 CiAgQGl0ZW14IGJ0IGZ1bGwgLUB2YXJ7bn0KICBQcmludCB0aGUgdmFsdWVzIG9mIHRoZSBsb2Nh bCB2YXJpYWJsZXMgYWxzby4gIEB2YXJ7bn0gc3BlY2lmaWVzIHRoZQogIG51bWJlciBvZiBmcmFt ZXMgdG8gcHJpbnQsIGFzIGRlc2NyaWJlZCBhYm92ZS4KQEAgLTM4Myw3ICszODMsNyBAQCBJbmRl eDogZ2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGVuZCB0YWJsZQogIAogIEBraW5kZXgg d2hlcmUKLUBAIC02NzE0LDYgKzY3MjksMTQ5IEBAIERpc3BsYXkgYW4gYWJzb2x1dGUgZmlsZW5h bWUuCitAQCAtNjcyMCw2ICs2NzM1LDE0OSBAQCBEaXNwbGF5IGFuIGFic29sdXRlIGZpbGVuYW1l LgogIFNob3cgdGhlIGN1cnJlbnQgd2F5IHRvIGRpc3BsYXkgZmlsZW5hbWVzLgogIEBlbmQgdGFi bGUKICAKQEAgLTUzMyw3ICs1MzMsNyBAQCBJbmRleDogZ2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhp bmZvCiAgQG5vZGUgU2VsZWN0aW9uCiAgQHNlY3Rpb24gU2VsZWN0aW5nIGEgRnJhbWUKICAKLUBA IC0yMzA2NSw2ICsyMzIyMyw5IEBAIHNpdHVhdGlvbiwgYSBQeXRob24gQGNvZGV7S2V5Ym9hcmRJ bnRlcnIKK0BAIC0yMzEwMCw2ICsyMzI1OCw5IEBAIHNpdHVhdGlvbiwgYSBQeXRob24gQGNvZGV7 S2V5Ym9hcmRJbnRlcnIKICAqIFNlbGVjdGluZyBQcmV0dHktUHJpbnRlcnM6OiAgIEhvdyBHREIg Y2hvb3NlcyBhIHByZXR0eS1wcmludGVyLgogICogV3JpdGluZyBhIFByZXR0eS1QcmludGVyOjog ICAgV3JpdGluZyBhIFByZXR0eS1QcmludGVyLgogICogVHlwZSBQcmludGluZyBBUEk6OgkJUHJl dHR5LXByaW50aW5nIHR5cGVzLgpAQCAtNTQzLDcgKzU0Myw3IEBAIEluZGV4OiBnZGItNy42L2dk Yi9kb2MvZ2RiLnRleGluZm8KICAqIEluZmVyaW9ycyBJbiBQeXRob246OiAgICAgICAgIFB5dGhv biByZXByZXNlbnRhdGlvbiBvZiBpbmZlcmlvcnMgKHByb2Nlc3NlcykKICAqIEV2ZW50cyBJbiBQ eXRob246OiAgICAgICAgICAgIExpc3RlbmluZyBmb3IgZXZlbnRzIGZyb20gQHZhbHVle0dEQk59 LgogICogVGhyZWFkcyBJbiBQeXRob246OiAgICAgICAgICAgQWNjZXNzaW5nIGluZmVyaW9yIHRo cmVhZHMgZnJvbSBQeXRob24uCi1AQCAtMjQ0MTUsNiArMjQ1NzYsNjM2IEBAIGRvbmUgdGhlbiB0 eXBlIHByaW50ZXJzIHdvdWxkIGhhdmUgdG8gbWEKK0BAIC0yNDQ1MCw2ICsyNDYxMSw2MzYgQEAg ZG9uZSB0aGVuIHR5cGUgcHJpbnRlcnMgd291bGQgaGF2ZSB0byBtYQogIG9yZGVyIHRvIGF2b2lk IGhvbGRpbmcgaW5mb3JtYXRpb24gdGhhdCBjb3VsZCBiZWNvbWUgc3RhbGUgYXMgdGhlCiAgaW5m ZXJpb3IgY2hhbmdlZC4KICAKQEAgLTExODAsNyArMTE4MCw3IEBAIEluZGV4OiBnZGItNy42L2dk Yi9kb2MvZ2RiLnRleGluZm8KICBAbm9kZSBJbmZlcmlvcnMgSW4gUHl0aG9uCiAgQHN1YnN1YnNl Y3Rpb24gSW5mZXJpb3JzIEluIFB5dGhvbgogIEBjaW5kZXggaW5mZXJpb3JzIGluIFB5dGhvbgot QEAgLTI1MjQ1LDYgKzI2MDM2LDExIEBAIFRoZSBAY29kZXt0eXBlX3ByaW50ZXJzfSBhdHRyaWJ1 dGUgaXMgYQorQEAgLTI1MjgwLDYgKzI2MDcxLDExIEBAIFRoZSBAY29kZXt0eXBlX3ByaW50ZXJz fSBhdHRyaWJ1dGUgaXMgYQogIEB4cmVme1R5cGUgUHJpbnRpbmcgQVBJfSwgZm9yIG1vcmUgaW5m b3JtYXRpb24uCiAgQGVuZCBkZWZ2YXIKICAKQEAgLTExOTIsNyArMTE5Miw3IEBAIEluZGV4OiBn ZGItNy42L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAbm9kZSBPYmpmaWxlcyBJbiBQeXRob24KICBA c3Vic3Vic2VjdGlvbiBPYmpmaWxlcyBJbiBQeXRob24KICAKLUBAIC0yNTI5NSw2ICsyNjA5MSwx MSBAQCBUaGUgQGNvZGV7dHlwZV9wcmludGVyc30gYXR0cmlidXRlIGlzIGEKK0BAIC0yNTMzMCw2 ICsyNjEyNiwxMSBAQCBUaGUgQGNvZGV7dHlwZV9wcmludGVyc30gYXR0cmlidXRlIGlzIGEKICBA eHJlZntUeXBlIFByaW50aW5nIEFQSX0sIGZvciBtb3JlIGluZm9ybWF0aW9uLgogIEBlbmQgZGVm dmFyCiAgCkBAIC0xMjA0LDcgKzEyMDQsNyBAQCBJbmRleDogZ2RiLTcuNi9nZGIvZG9jL2dkYi50 ZXhpbmZvCiAgQSBAY29kZXtnZGIuT2JqZmlsZX0gb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIG1l dGhvZHM6CiAgCiAgQGRlZnVuIE9iamZpbGUuaXNfdmFsaWQgKCkKLUBAIC0yNjMxMyw3ICsyNzEx NCw3IEBAIE5vICAgICBteS1mb28tcHJldHR5LXByaW50ZXJzLnB5CitAQCAtMjYzNDgsNyArMjcx NDksNyBAQCBObyAgICAgbXktZm9vLXByZXR0eS1wcmludGVycy5weQogIFdoZW4gcmVhZGluZyBh biBhdXRvLWxvYWRlZCBmaWxlLCBAdmFsdWV7R0RCTn0gc2V0cyB0aGUKICBAZGZue2N1cnJlbnQg b2JqZmlsZX0uICBUaGlzIGlzIGF2YWlsYWJsZSB2aWEgdGhlIEBjb2Rle2dkYi5jdXJyZW50X29i amZpbGV9CiAgZnVuY3Rpb24gKEBweHJlZntPYmpmaWxlcyBJbiBQeXRob259KS4gIFRoaXMgY2Fu IGJlIHVzZWZ1bCBmb3IKQEAgLTEyMTMsNyArMTIxMyw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9k b2MvZ2RiLnRleGluZm8KICAKICBAbWVudQogICogb2JqZmlsZS1nZGIucHkgZmlsZTo6ICAgICAg ICAgIFRoZSBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5weX0gZmlsZQotQEAgLTMwMTg0LDYgKzMw OTg1LDIyIEBAIElzIHRoaXMgZ29pbmcgYXdheT8/Pz8KK0BAIC0zMDIxOSw2ICszMTAyMCwyMiBA QCBJcyB0aGlzIGdvaW5nIGF3YXk/Pz8/CiAgQG5vZGUgR0RCL01JIFN0YWNrIE1hbmlwdWxhdGlv bgogIEBzZWN0aW9uIEBzY3tnZGIvbWl9IFN0YWNrIE1hbmlwdWxhdGlvbiBDb21tYW5kcwogIApA QCAtMTIzNiw3ICsxMjM2LDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL2RvYy9nZGIudGV4aW5mbwog IAogIEBzdWJoZWFkaW5nIFRoZSBAY29kZXstc3RhY2staW5mby1mcmFtZX0gQ29tbWFuZAogIEBm aW5kZXggLXN0YWNrLWluZm8tZnJhbWUKLUBAIC0zMDI1MSwxMyArMzEwNjgsMTQgQEAgRm9yIGEg c3RhY2sgd2l0aCBmcmFtZSBsZXZlbHMgMCB0aHJvdWdoCitAQCAtMzAyODYsMTMgKzMxMTAzLDE0 IEBAIEZvciBhIHN0YWNrIHdpdGggZnJhbWUgbGV2ZWxzIDAgdGhyb3VnaAogIChnZGIpCiAgQGVu ZCBzbWFsbGV4YW1wbGUKICAKQEAgLTEyNTIsNyArMTI1Miw3IEBAIEluZGV4OiBnZGItNy42L2dk Yi9kb2MvZ2RiLnRleGluZm8KICAgICAgWyBAdmFye2xvdy1mcmFtZX0gQHZhcntoaWdoLWZyYW1l fSBdCiAgQGVuZCBzbWFsbGV4YW1wbGUKICAKLUBAIC0zMDI3NCw3ICszMTA5Miw5IEBAIElmIEB2 YXJ7cHJpbnQtdmFsdWVzfSBpcyAwIG9yIEBjb2Rley0tbm8KK0BAIC0zMDMwOSw3ICszMTEyNyw5 IEBAIElmIEB2YXJ7cHJpbnQtdmFsdWVzfSBpcyAwIG9yIEBjb2Rley0tbm8KICB0aGUgdmFyaWFi bGVzOyBpZiBpdCBpcyAxIG9yIEBjb2Rley0tYWxsLXZhbHVlc30sIHByaW50IGFsc28gdGhlaXIK ICB2YWx1ZXM7IGFuZCBpZiBpdCBpcyAyIG9yIEBjb2Rley0tc2ltcGxlLXZhbHVlc30sIHByaW50 IHRoZSBuYW1lLAogIHR5cGUgYW5kIHZhbHVlIGZvciBzaW1wbGUgZGF0YSB0eXBlcywgYW5kIHRo ZSBuYW1lIGFuZCB0eXBlIGZvciBhcnJheXMsCkBAIC0xMjYzLDcgKzEyNjMsNyBAQCBJbmRleDog Z2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgCiAgVXNlIG9mIHRoaXMgY29tbWFuZCB0byBv YnRhaW4gYXJndW1lbnRzIGluIGEgc2luZ2xlIGZyYW1lIGlzCiAgZGVwcmVjYXRlZCBpbiBmYXZv ciBvZiB0aGUgQHNhbXB7LXN0YWNrLWxpc3QtdmFyaWFibGVzfSBjb21tYW5kLgotQEAgLTMwMzQ1 LDEzICszMTE2NSwxNCBAQCBhcmdzPVtAe25hbWU9ImludGFyZyIsdmFsdWU9IjIiQH0sCitAQCAt MzAzODAsMTMgKzMxMjAwLDE0IEBAIGFyZ3M9W0B7bmFtZT0iaW50YXJnIix2YWx1ZT0iMiJAfSwK ICBAYyBAc3ViaGVhZGluZyAtc3RhY2stbGlzdC1leGNlcHRpb24taGFuZGxlcnMKICAKICAKQEAg LTEyNzksNyArMTI3OSw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9kb2MvZ2RiLnRleGluZm8KICBA ZW5kIHNtYWxsZXhhbXBsZQogIAogIExpc3QgdGhlIGZyYW1lcyBjdXJyZW50bHkgb24gdGhlIHN0 YWNrLiAgRm9yIGVhY2ggZnJhbWUgaXQgZGlzcGxheXMgdGhlCi1AQCAtMzAzODEsNyArMzEyMDIs OSBAQCBsZXZlbHMgYXJlIGJldHdlZW4gdGhlIHR3byBhcmd1bWVudHMgKGluCitAQCAtMzA0MTYs NyArMzEyMzcsOSBAQCBsZXZlbHMgYXJlIGJldHdlZW4gdGhlIHR3byBhcmd1bWVudHMgKGluCiAg YXJlIGVxdWFsLCBpdCBzaG93cyB0aGUgc2luZ2xlIGZyYW1lIGF0IHRoZSBjb3JyZXNwb25kaW5n IGxldmVsLiAgSXQgaXMKICBhbiBlcnJvciBpZiBAdmFye2xvdy1mcmFtZX0gaXMgbGFyZ2VyIHRo YW4gdGhlIGFjdHVhbCBudW1iZXIgb2YKICBmcmFtZXMuICBPbiB0aGUgb3RoZXIgaGFuZCwgQHZh cntoaWdoLWZyYW1lfSBtYXkgYmUgbGFyZ2VyIHRoYW4gdGhlCkBAIC0xMjkwLDcgKzEyOTAsNyBA QCBJbmRleDogZ2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgCiAgQHN1YnN1YmhlYWRpbmcg QHZhbHVle0dEQk59IENvbW1hbmQKICAKLUBAIC0zMDQ1MSwxMSArMzEyNzQsMTIgQEAgU2hvdyBh IHNpbmdsZSBmcmFtZToKK0BAIC0zMDQ4NiwxMSArMzEzMDksMTIgQEAgU2hvdyBhIHNpbmdsZSBm cmFtZToKICAKICBAc3ViaGVhZGluZyBUaGUgQGNvZGV7LXN0YWNrLWxpc3QtbG9jYWxzfSBDb21t YW5kCiAgQGZpbmRleCAtc3RhY2stbGlzdC1sb2NhbHMKQEAgLTEzMDQsNyArMTMwNCw3IEBAIElu ZGV4OiBnZGItNy42L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAZW5kIHNtYWxsZXhhbXBsZQogIAog IERpc3BsYXkgdGhlIGxvY2FsIHZhcmlhYmxlIG5hbWVzIGZvciB0aGUgc2VsZWN0ZWQgZnJhbWUu ICBJZgotQEAgLTMwNDY2LDcgKzMxMjkwLDggQEAgdHlwZSBhbmQgdmFsdWUgZm9yIHNpbXBsZSBk YXRhIHR5cGVzLCBhbgorQEAgLTMwNTAxLDcgKzMxMzI1LDggQEAgdHlwZSBhbmQgdmFsdWUgZm9y IHNpbXBsZSBkYXRhIHR5cGVzLCBhbgogIHN0cnVjdHVyZXMgYW5kIHVuaW9ucy4gIEluIHRoaXMg bGFzdCBjYXNlLCBhIGZyb250ZW5kIGNhbiBpbW1lZGlhdGVseQogIGRpc3BsYXkgdGhlIHZhbHVl IG9mIHNpbXBsZSBkYXRhIHR5cGVzIGFuZCBjcmVhdGUgdmFyaWFibGUgb2JqZWN0cyBmb3IKICBv dGhlciBkYXRhIHR5cGVzIHdoZW4gdGhlIHVzZXIgd2lzaGVzIHRvIGV4cGxvcmUgdGhlaXIgdmFs dWVzIGluCkBAIC0xMzE0LDcgKzEzMTQsNyBAQCBJbmRleDogZ2RiLTcuNi9nZGIvZG9jL2dkYi50 ZXhpbmZvCiAgCiAgVGhpcyBjb21tYW5kIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhlCiAg QHNhbXB7LXN0YWNrLWxpc3QtdmFyaWFibGVzfSBjb21tYW5kLgotQEAgLTMwNDkxLDEzICszMTMx NiwxNCBAQCBUaGlzIGNvbW1hbmQgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0CitAQCAtMzA1 MjYsMTMgKzMxMzUxLDE0IEBAIFRoaXMgY29tbWFuZCBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9m IHQKICAoZ2RiKQogIEBlbmQgc21hbGxleGFtcGxlCiAgCkBAIC0xMzMwLDcgKzEzMzAsNyBAQCBJ bmRleDogZ2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGVuZCBzbWFsbGV4YW1wbGUKICAK ICBEaXNwbGF5IHRoZSBuYW1lcyBvZiBsb2NhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9uIGFyZ3Vt ZW50cyBmb3IgdGhlIHNlbGVjdGVkIGZyYW1lLiAgSWYKLUBAIC0zMDUwNSw3ICszMTMzMSw4IEBA IERpc3BsYXkgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcyBhbmQKK0BAIC0zMDU0MCw3ICsz MTM2Niw4IEBAIERpc3BsYXkgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcyBhbmQKICB0aGUg dmFyaWFibGVzOyBpZiBpdCBpcyAxIG9yIEBjb2Rley0tYWxsLXZhbHVlc30sIHByaW50IGFsc28g dGhlaXIKICB2YWx1ZXM7IGFuZCBpZiBpdCBpcyAyIG9yIEBjb2Rley0tc2ltcGxlLXZhbHVlc30s IHByaW50IHRoZSBuYW1lLAogIHR5cGUgYW5kIHZhbHVlIGZvciBzaW1wbGUgZGF0YSB0eXBlcywg YW5kIHRoZSBuYW1lIGFuZCB0eXBlIGZvciBhcnJheXMsCkBAIC0xMzQyLDggKzEzNDIsOCBAQCBJ bmRleDogZ2RiLTcuNi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgCiBJbmRleDogZ2RiLTcuNi9nZGIv bWkvbWktY21kLXN0YWNrLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL21pL21p LWNtZC1zdGFjay5jCTIwMTMtMDUtMjAgMjI6MjM6MzYuNzQ4MjE1MTQ2ICswMjAwCi0rKysgZ2Ri LTcuNi9nZGIvbWkvbWktY21kLXN0YWNrLmMJMjAxMy0wNS0yMCAyMjoyNTo1Mi4xMTExNjU3Njcg KzAyMDAKKy0tLSBnZGItNy42Lm9yaWcvZ2RiL21pL21pLWNtZC1zdGFjay5jCTIwMTMtMDYtMTAg MTQ6MzE6MDIuNzMwMDg0NjUyICswMjAwCisrKysgZ2RiLTcuNi9nZGIvbWkvbWktY21kLXN0YWNr LmMJMjAxMy0wNi0xMCAxNDozMTowOC4zNjUwODI0MzcgKzAyMDAKIEBAIC0zMSw2ICszMSwxMCBA QAogICNpbmNsdWRlICJsYW5ndWFnZS5oIgogICNpbmNsdWRlICJ2YWxwcmludC5oIgpAQCAtMTY1 NSw4ICsxNjU1LDggQEAgSW5kZXg6IGdkYi03LjYvZ2RiL21pL21pLWNtZC1zdGFjay5jCiAgLyog UHJpbnQgc2luZ2xlIGxvY2FsIG9yIGFyZ3VtZW50LiAgQVJHIG11c3QgYmUgYWxyZWFkeSByZWFk IGluLiAgRm9yCiBJbmRleDogZ2RiLTcuNi9nZGIvbWkvbWktY21kcy5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNi5vcmlnL2dkYi9taS9taS1jbWRzLmMJMjAxMy0wNS0yMCAyMjoyMzozNi43NDgy MTUxNDYgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9taS9taS1jbWRzLmMJMjAxMy0wNS0yMCAyMjoy NTo1Mi4xMTExNjU3NjcgKzAyMDAKKy0tLSBnZGItNy42Lm9yaWcvZ2RiL21pL21pLWNtZHMuYwky MDEzLTA2LTEwIDE0OjMxOjAyLjczMDA4NDY1MiArMDIwMAorKysrIGdkYi03LjYvZ2RiL21pL21p LWNtZHMuYwkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2NTA4MjQzNyArMDIwMAogQEAgLTg2LDYgKzg2 LDcgQEAgc3RhdGljIHN0cnVjdCBtaV9jbWQgbWlfY21kc1tdID0KICAJCSBtaV9jbWRfZGF0YV93 cml0ZV9yZWdpc3Rlcl92YWx1ZXMpLAogICAgREVGX01JX0NNRF9NSSAoImVuYWJsZS10aW1pbmdz IiwgbWlfY21kX2VuYWJsZV90aW1pbmdzKSwKQEAgLTE2NjcsOCArMTY2Nyw4IEBAIEluZGV4OiBn ZGItNy42L2dkYi9taS9taS1jbWRzLmMKICAgIERFRl9NSV9DTURfTUkgKCJlbnZpcm9ubWVudC1w YXRoIiwgbWlfY21kX2Vudl9wYXRoKSwKIEluZGV4OiBnZGItNy42L2dkYi9taS9taS1jbWRzLmgK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL21pL21pLWNtZHMuaAkyMDEzLTA1LTIw IDIyOjIzOjM2Ljc0ODIxNTE0NiArMDIwMAotKysrIGdkYi03LjYvZ2RiL21pL21pLWNtZHMuaAky MDEzLTA1LTIwIDIyOjI1OjUyLjExMTE2NTc2NyArMDIwMAorLS0tIGdkYi03LjYub3JpZy9nZGIv bWkvbWktY21kcy5oCTIwMTMtMDYtMTAgMTQ6MzE6MDIuNzMwMDg0NjUyICswMjAwCisrKysgZ2Ri LTcuNi9nZGIvbWkvbWktY21kcy5oCTIwMTMtMDYtMTAgMTQ6MzE6MDguMzY1MDgyNDM3ICswMjAw CiBAQCAtMTE4LDYgKzExOCw3IEBAIGV4dGVybiBtaV9jbWRfYXJndl9mdHlwZSBtaV9jbWRfdmFy X3Nob3cKICBleHRlcm4gbWlfY21kX2FyZ3ZfZnR5cGUgbWlfY21kX3Zhcl9zaG93X2Zvcm1hdDsK ICBleHRlcm4gbWlfY21kX2FyZ3ZfZnR5cGUgbWlfY21kX3Zhcl91cGRhdGU7CkBAIC0xNjgwLDcg KzE2ODAsNyBAQCBJbmRleDogZ2RiLTcuNi9nZGIvbWkvbWktY21kcy5oCiBJbmRleDogZ2RiLTcu Ni9nZGIvcHl0aG9uL3B5LWZyYW1lZmlsdGVyLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi9weXRo b24vcHktZnJhbWVmaWx0ZXIuYwkyMDEzLTA1LTIwIDIyOjI2OjUzLjAyOTE0MzA2OCArMDIwMAor KysrIGdkYi03LjYvZ2RiL3B5dGhvbi9weS1mcmFtZWZpbHRlci5jCTIwMTMtMDYtMTAgMTQ6MzE6 MDguMzY2MDgyNDM3ICswMjAwCiBAQCAtMCwwICsxLDE1MjggQEAKICsvKiBQeXRob24gZnJhbWUg ZmlsdGVycwogKwpAQCAtMzIxMiw4ICszMjEyLDggQEAgSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhv bi9weS1mcmFtZWZpbHRlci5jCiArfQogSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhvbi9weS1vYmpm aWxlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3B5dGhvbi9weS1vYmpmaWxl LmMJMjAxMy0wNS0yMCAyMjoyMzozNi43NDgyMTUxNDYgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9w eXRob24vcHktb2JqZmlsZS5jCTIwMTMtMDUtMjAgMjI6MjU6NTIuMTEyMTY1NzY3ICswMjAwCist LS0gZ2RiLTcuNi5vcmlnL2dkYi9weXRob24vcHktb2JqZmlsZS5jCTIwMTMtMDYtMTAgMTQ6MzE6 MDIuNzMxMDg0NjUyICswMjAwCisrKysgZ2RiLTcuNi9nZGIvcHl0aG9uL3B5LW9iamZpbGUuYwky MDEzLTA2LTEwIDE0OjMxOjA4LjM2NjA4MjQzNyArMDIwMAogQEAgLTMzLDYgKzMzLDggQEAgdHlw ZWRlZiBzdHJ1Y3QKICAgIC8qIFRoZSBwcmV0dHktcHJpbnRlciBsaXN0IG9mIGZ1bmN0aW9ucy4g ICovCiAgICBQeU9iamVjdCAqcHJpbnRlcnM7CkBAIC0zMzE4LDggKzMzMTgsOCBAQCBJbmRleDog Z2RiLTcuNi9nZGIvcHl0aG9uL3B5LW9iamZpbGUuYwogICAgeyBOVUxMIH0KIEluZGV4OiBnZGIt Ny42L2dkYi9weXRob24vcHktcHJvZ3NwYWNlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9y aWcvZ2RiL3B5dGhvbi9weS1wcm9nc3BhY2UuYwkyMDEzLTA1LTIwIDIyOjIzOjM2Ljc0ODIxNTE0 NiArMDIwMAotKysrIGdkYi03LjYvZ2RiL3B5dGhvbi9weS1wcm9nc3BhY2UuYwkyMDEzLTA1LTIw IDIyOjI1OjUyLjExMjE2NTc2NyArMDIwMAorLS0tIGdkYi03LjYub3JpZy9nZGIvcHl0aG9uL3B5 LXByb2dzcGFjZS5jCTIwMTMtMDYtMTAgMTQ6MzE6MDIuNzMxMDg0NjUyICswMjAwCisrKysgZ2Ri LTcuNi9nZGIvcHl0aG9uL3B5LXByb2dzcGFjZS5jCTIwMTMtMDYtMTAgMTQ6MzE6MDguMzY2MDgy NDM3ICswMjAwCiBAQCAtMzUsNiArMzUsOCBAQCB0eXBlZGVmIHN0cnVjdAogICAgLyogVGhlIHBy ZXR0eS1wcmludGVyIGxpc3Qgb2YgZnVuY3Rpb25zLiAgKi8KICAgIFB5T2JqZWN0ICpwcmludGVy czsKQEAgLTM0MjQsOCArMzQyNCw4IEBAIEluZGV4OiBnZGItNy42L2dkYi9weXRob24vcHktcHJv Z3NwYWNlLmMKICAgIHsgTlVMTCB9CiBJbmRleDogZ2RiLTcuNi9nZGIvcHl0aG9uL3B5LXV0aWxz LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42Lm9yaWcvZ2RiL3B5dGhvbi9weS11dGlscy5jCTIw MTMtMDUtMjAgMjI6MjM6MzYuNzQ4MjE1MTQ2ICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvcHl0aG9u L3B5LXV0aWxzLmMJMjAxMy0wNS0yMCAyMjoyNTo1Mi4xMTMxNjU3NjYgKzAyMDAKKy0tLSBnZGIt Ny42Lm9yaWcvZ2RiL3B5dGhvbi9weS11dGlscy5jCTIwMTMtMDYtMTAgMTQ6MzE6MDIuNzMyMDg0 NjUyICswMjAwCisrKysgZ2RiLTcuNi9nZGIvcHl0aG9uL3B5LXV0aWxzLmMJMjAxMy0wNi0xMCAx NDozMTowOC4zNjYwODI0MzcgKzAyMDAKIEBAIC00OCw2ICs0OCwyOCBAQCBtYWtlX2NsZWFudXBf cHlfZGVjcmVmIChQeU9iamVjdCAqcHkpCiAgICByZXR1cm4gbWFrZV9jbGVhbnVwIChweV9kZWNy ZWYsICh2b2lkICopIHB5KTsKICB9CkBAIC0zNDU3LDggKzM0NTcsOCBAQCBJbmRleDogZ2RiLTcu Ni9nZGIvcHl0aG9uL3B5LXV0aWxzLmMKICAgICByZXR1cm5zIE5VTEwgd2l0aCBhIHB5dGhvbiBl eGNlcHRpb24gc2V0LgogSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwu aAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjYub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5h bC5oCTIwMTMtMDUtMjAgMjI6MjM6MzYuNzQ4MjE1MTQ2ICswMjAwCi0rKysgZ2RiLTcuNi9nZGIv cHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCTIwMTMtMDUtMjAgMjI6MjU6NTIuMTEzMTY1NzY2ICsw MjAwCistLS0gZ2RiLTcuNi5vcmlnL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgJMjAxMy0w Ni0xMCAxNDozMTowMi43MzIwODQ2NTIgKzAyMDAKKysrKyBnZGItNy42L2dkYi9weXRob24vcHl0 aG9uLWludGVybmFsLmgJMjAxMy0wNi0xMCAxNDozMTowOC4zNjcwODI0MzYgKzAyMDAKIEBAIC0y NTEsOSArMjUxLDExIEBAIFB5T2JqZWN0ICpmcmFtZV9pbmZvX3RvX2ZyYW1lX29iamVjdCAoc3QK ICAKICBQeU9iamVjdCAqcHNwYWNlX3RvX3BzcGFjZV9vYmplY3QgKHN0cnVjdCBwcm9ncmFtX3Nw YWNlICopOwpAQCAtMzQ4MSw4ICszNDgxLDggQEAgSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhvbi9w eXRob24taW50ZXJuYWwuaAogIAkJCQkgICBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqbGFu Z3VhZ2UpOwogSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhvbi9weXRob24uYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjYub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5jCTIwMTMtMDUtMjAgMjI6MjM6MzYu NzQ4MjE1MTQ2ICswMjAwCi0rKysgZ2RiLTcuNi9nZGIvcHl0aG9uL3B5dGhvbi5jCTIwMTMtMDUt MjAgMjI6MjU6NTIuMTEzMTY1NzY2ICswMjAwCistLS0gZ2RiLTcuNi5vcmlnL2dkYi9weXRob24v cHl0aG9uLmMJMjAxMy0wNi0xMCAxNDozMTowMi43MzIwODQ2NTIgKzAyMDAKKysrKyBnZGItNy42 L2dkYi9weXRob24vcHl0aG9uLmMJMjAxMy0wNi0xMCAxNDozMTowOC4zNjcwODI0MzYgKzAyMDAK IEBAIC0xNDQyLDYgKzE0NDIsMTUgQEAgZnJlZV90eXBlX3ByaW50ZXJzICh2b2lkICphcmcpCiAg ewogIH0KQEAgLTM1MDEsOCArMzUwMSw4IEBAIEluZGV4OiBnZGItNy42L2dkYi9weXRob24vcHl0 aG9uLmMKICAMCiBJbmRleDogZ2RiLTcuNi9nZGIvcHl0aG9uL3B5dGhvbi5oCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNi5vcmlnL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMy0wNS0yMCAyMjoyMzoz Ni43NDgyMTUxNDYgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9weXRob24vcHl0aG9uLmgJMjAxMy0w NS0yMCAyMjoyNTo1Mi4xMTMxNjU3NjYgKzAyMDAKKy0tLSBnZGItNy42Lm9yaWcvZ2RiL3B5dGhv bi9weXRob24uaAkyMDEzLTA2LTEwIDE0OjMxOjAyLjczMjA4NDY1MiArMDIwMAorKysrIGdkYi03 LjYvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2NzA4MjQzNiArMDIw MAogQEAgLTIxLDYgKzIxLDcgQEAKICAjZGVmaW5lIEdEQl9QWVRIT05fSAogIApAQCAtMzU5Myw3 ICszNTkzLDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhvbi9weXRob24uaAogSW5kZXg6IGdk Yi03LjYvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lRGVjb3JhdG9yLnB5CiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAt LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTcuNi9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVEZWNvcmF0b3IucHkJMjAxMy0wNS0yMCAyMjoy NTo1Mi4xMTMxNjU3NjYgKzAyMDAKKysrKyBnZGItNy42L2dkYi9weXRob24vbGliL2dkYi9GcmFt ZURlY29yYXRvci5weQkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2NzA4MjQzNiArMDIwMAogQEAgLTAs MCArMSwyODUgQEAKICsjIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KICsKQEAgLTM4ODMsNyArMzg4Myw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9weXRo b24vbGliL2dkYi9GcmFtZURlY29yYXRvci5weQogSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhvbi9s aWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi9weXRob24vbGli L2dkYi9GcmFtZUl0ZXJhdG9yLnB5CTIwMTMtMDUtMjAgMjI6MjU6NTIuMTE0MTY1NzY2ICswMjAw CisrKysgZ2RiLTcuNi9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVJdGVyYXRvci5weQkyMDEzLTA2 LTEwIDE0OjMxOjA4LjM2NzA4MjQzNiArMDIwMAogQEAgLTAsMCArMSw0NSBAQAogKyMgQ29weXJp Z2h0IChDKSAyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMzkzMyw3 ICszOTMzLDcgQEAgSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0 b3IucHkKIEluZGV4OiBnZGItNy42L2dkYi9weXRob24vbGliL2dkYi9mcmFtZXMucHkKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAK LSsrKyBnZGItNy42L2dkYi9weXRob24vbGliL2dkYi9mcmFtZXMucHkJMjAxMy0wNS0yMCAyMjoy NTo1Mi4xMTQxNjU3NjYgKzAyMDAKKysrKyBnZGItNy42L2dkYi9weXRob24vbGliL2dkYi9mcmFt ZXMucHkJMjAxMy0wNi0xMCAxNDozMTowOC4zNjgwODI0MzYgKzAyMDAKIEBAIC0wLDAgKzEsMjI5 IEBACiArIyBGcmFtZS1maWx0ZXIgY29tbWFuZHMuCiArIyBDb3B5cmlnaHQgKEMpIDIwMTMgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC00MTY2LDggKzQxNjYsOCBAQCBJbmRleDog Z2RiLTcuNi9nZGIvcHl0aG9uL2xpYi9nZGIvZnJhbWVzLnB5CiArICAgIHJldHVybiBzbGljZWQK IEluZGV4OiBnZGItNy42L2dkYi9weXRob24vbGliL2dkYi9fX2luaXRfXy5weQogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjYub3JpZy9nZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkJMjAxMy0w NS0yMCAyMjoyMzozNi43NDgyMTUxNDYgKzAyMDAKLSsrKyBnZGItNy42L2dkYi9weXRob24vbGli L2dkYi9fX2luaXRfXy5weQkyMDEzLTA1LTIwIDIyOjI1OjUyLjExNDE2NTc2NiArMDIwMAorLS0t IGdkYi03LjYub3JpZy9nZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkJMjAxMy0wNi0xMCAx NDozMTowMi43MzMwODQ2NTEgKzAyMDAKKysrKyBnZGItNy42L2dkYi9weXRob24vbGliL2dkYi9f X2luaXRfXy5weQkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2ODA4MjQzNiArMDIwMAogQEAgLTY3LDYg KzY3LDggQEAgcHJldHR5X3ByaW50ZXJzID0gW10KICAKICAjIEluaXRpYWwgdHlwZSBwcmludGVy cy4KQEAgLTQxODAsNyArNDE4MCw3IEBAIEluZGV4OiBnZGItNy42L2dkYi9weXRob24vbGliL2dk Yi9fX2luaXRfXy5weQogSW5kZXg6IGdkYi03LjYvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQv ZnJhbWVfZmlsdGVycy5weQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjYvZ2RiL3B5dGhvbi9saWIvZ2RiL2Nv bW1hbmQvZnJhbWVfZmlsdGVycy5weQkyMDEzLTA1LTIwIDIyOjI1OjUyLjExNDE2NTc2NiArMDIw MAorKysrIGdkYi03LjYvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvZnJhbWVfZmlsdGVycy5w eQkyMDEzLTA2LTEwIDE0OjMxOjA4LjM2ODA4MjQzNiArMDIwMAogQEAgLTAsMCArMSw0NjEgQEAK ICsjIEZyYW1lLWZpbHRlciBjb21tYW5kcy4KICsjIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTQ2NDYsNyArNDY0Niw3IEBAIEluZGV4OiBnZGIt Ny42L2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2ZyYW1lX2ZpbHRlcnMucHkKIEluZGV4OiBn ZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRlci1nZGIucHkuaW4K ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRl ci1nZGIucHkuaW4JMjAxMy0wNS0yMCAyMjoyNTo1Mi4xMTQxNjU3NjYgKzAyMDAKKysrKyBnZGIt Ny42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRlci1nZGIucHkuaW4JMjAx My0wNi0xMCAxNDozMTowOC4zNjgwODI0MzYgKzAyMDAKIEBAIC0wLDAgKzEsNDggQEAKICsjIENv cHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTQ2 OTksNyArNDY5OSw3IEBAIEluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1mcmFtZWZpbHRlci1nZGIucHkuaW4KIEluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9weS1mcmFtZWZpbHRlci1taS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNi9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXItbWkuYwkyMDEzLTA1LTIwIDIyOjI1OjUyLjEx NDE2NTc2NiArMDIwMAorKysrIGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZy YW1lZmlsdGVyLW1pLmMJMjAxMy0wNi0xMCAxNDozMTowOC4zNjgwODI0MzYgKzAyMDAKIEBAIC0w LDAgKzEsMTM4IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBk ZWJ1Z2dlci4KICsKQEAgLTQ4NDIsNyArNDg0Miw3IEBAIEluZGV4OiBnZGItNy42L2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRlci1taS5jCiBJbmRleDogZ2RiLTcuNi9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXItbWkuZXhwCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAt LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXItbWkuZXhwCTIwMTMt MDUtMjAgMjI6MjU6NTIuMTE1MTY1NzY2ICswMjAwCisrKysgZ2RiLTcuNi9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXItbWkuZXhwCTIwMTMtMDYtMTAgMTQ6MzE6MDguMzY4 MDgyNDM2ICswMjAwCiBAQCAtMCwwICsxLDE3OSBAQAogKyMgQ29weXJpZ2h0IChDKSAyMDEzIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtNTAyNiw3ICs1MDI2LDcgQEAgSW5k ZXg6IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lZmlsdGVyLW1pLmV4 cAogSW5kZXg6IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lZmlsdGVy LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZp bHRlci5jCTIwMTMtMDUtMjAgMjI6MjU6NTIuMTE1MTY1NzY2ICswMjAwCisrKysgZ2RiLTcuNi9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWVmaWx0ZXIuYwkyMDEzLTA2LTEwIDE0OjMx OjA4LjM2OTA4MjQzNiArMDIwMAogQEAgLTAsMCArMSwxNTUgQEAKICsvKiBUaGlzIHRlc3RjYXNl IGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtNTE4Niw3ICs1MTg2LDcg QEAgSW5kZXg6IGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lZmlsdGVy LmMKIEluZGV4OiBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRl ci5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFt ZWZpbHRlci5leHAJMjAxMy0wNS0yMCAyMjoyNTo1Mi4xMTUxNjU3NjYgKzAyMDAKKysrKyBnZGIt Ny42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZWZpbHRlci5leHAJMjAxMy0wNi0x MCAxNDozMTowOC4zNjkwODI0MzYgKzAyMDAKIEBAIC0wLDAgKzEsMjM5IEBACiArIyBDb3B5cmln aHQgKEMpIDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC01NDMwLDcg KzU0MzAsNyBAQCBJbmRleDogZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJh bWVmaWx0ZXIuZXhwCiBJbmRleDogZ2RiLTcuNi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt ZnJhbWVmaWx0ZXIucHkKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1mcmFtZWZpbHRlci5weQkyMDEzLTA1LTIwIDIyOjI1OjUyLjExNTE2NTc2NiArMDIwMAor KysrIGdkYi03LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lZmlsdGVyLnB5CTIw MTMtMDYtMTAgMTQ6MzE6MDguMzY5MDgyNDM2ICswMjAwCiBAQCAtMCwwICsxLDExNyBAQAogKyMg Q29weXJpZ2h0IChDKSAyMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwoKZGlm ZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggOGExZDM4OC4uNWUyN2NhMiAxMDA2 NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTM2LDcgKzM2LDcgQEAgVmVyc2lv bjogNy42CiAKICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyByZXNlcnZl ZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFydCBvZiBg bmFtZScgdG8gc3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRoZSB0 ZXN0aW5nLgotUmVsZWFzZTogMzElez9kaXN0fQorUmVsZWFzZTogMzIlez9kaXN0fQogCiBMaWNl bnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BM djIrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMKyBhbmQgTEdQTHYyKyBhbmQgQlNEIGFuZCBQdWJs aWMgRG9tYWluCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC01MDgsMTUgKzUwOCwx NiBAQCBQYXRjaDU3OTogZ2RiLTcuMi41MC1zcGFyYy1hZGQtd29ya2Fyb3VuZC10by1icm9rZW4t ZGVidWctZmlsZXMucGF0Y2gKICMgRml4IGRsb3BlbiBvZiBsaWJwdGhyZWFkLnNvLCBwYXRjaGVk IGdsaWJjIHJlcXVpcmVkIChHYXJ5IEJlbnNvbiwgQlogNjY5NDMyKS4KICMgRml4IGNyYXNoIHJl Z3Jlc3Npb24gZnJvbSB0aGUgZGxvcGVuIG9mIGxpYnB0aHJlYWQuc28gZml4IChCWiA5MTE3MTIp LgogIyBGaXggcGVyZm9ybWFuY2UgcmVncmVzc2lvbiB3aGVuIGluZmVyaW9yIG9wZW5zIG1hbnkg bGlicmFyaWVzIChHYXJ5IEJlbnNvbikuCi0jPXB1c2gKLVBhdGNoNzE4OiBnZGItZGxvcGVuLXN0 YXAtcHJvYmUtMW9mNy5wYXRjaAotUGF0Y2g3MTk6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS0yb2Y3 LnBhdGNoCi1QYXRjaDcyMDogZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTNvZjcucGF0Y2gKLVBhdGNo NzIxOiBnZGItZGxvcGVuLXN0YXAtcHJvYmUtNG9mNy5wYXRjaAotUGF0Y2g3MjI6IGdkYi1kbG9w ZW4tc3RhcC1wcm9iZS01b2Y3LnBhdGNoCi1QYXRjaDcyMzogZ2RiLWRsb3Blbi1zdGFwLXByb2Jl LTZvZjcucGF0Y2gKLVBhdGNoODIyOiBnZGItZGxvcGVuLXN0YXAtcHJvYmUtN29mNy5wYXRjaAot UGF0Y2g4Mjc6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS1maXh1cC5wYXRjaAorIz1kcm9wCitQYXRj aDcxODogZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTFvZjkucGF0Y2gKK1BhdGNoNzE5OiBnZGItZGxv cGVuLXN0YXAtcHJvYmUtMm9mOS5wYXRjaAorUGF0Y2g3MjA6IGdkYi1kbG9wZW4tc3RhcC1wcm9i ZS0zb2Y5LnBhdGNoCitQYXRjaDcyMTogZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTRvZjkucGF0Y2gK K1BhdGNoNzIyOiBnZGItZGxvcGVuLXN0YXAtcHJvYmUtNW9mOS5wYXRjaAorUGF0Y2g3MjM6IGdk Yi1kbG9wZW4tc3RhcC1wcm9iZS02b2Y5LnBhdGNoCitQYXRjaDgyMjogZ2RiLWRsb3Blbi1zdGFw LXByb2JlLTdvZjkucGF0Y2gKK1BhdGNoODI3OiBnZGItZGxvcGVuLXN0YXAtcHJvYmUtOG9mOS5w YXRjaAorUGF0Y2g2MTk6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS05b2Y5LnBhdGNoCiAKICMgV29y ayBhcm91bmQgUFIgbGliYy8xMzA5NyAibGludXgtdmRzby5zby4xIiB3YXJuaW5nIG1lc3NhZ2Uu CiAjPXB1c2gKQEAgLTU3MCwxMSArNTcxLDE4IEBAIFBhdGNoODE4OiBnZGItcmhiejc5NTQyNC1i aXRwb3MtbGF6eXZhbHVlLnBhdGNoCiBQYXRjaDgzMjogZ2RiLXJoYno5NDc1NjQtZmluZHZhci1h c3NlcnRpb24tZnJhbWUtZmFpbGVkLXRlc3RjYXNlLnBhdGNoCiAKICMgRml4IGdjb3JlIGZvciB2 RFNPIChvbiBwcGM2NCkuCisjPWRyb3AKIFBhdGNoODM0OiBnZGItdmRzby1nY29yZS5wYXRjaAog CiAjIEZpeCBuZWVkbGVzcyBleHBhbnNpb24gb2Ygbm9uLWdkYmluZGV4IHN5bXRhYnMgKERvdWcg RXZhbnMpLgorIz1kcm9wCiBQYXRjaDgzNTogZ2RiLXBzeW10YWItZXhwYW5kLnBhdGNoCiAKKyMg Rml4IEMrKyBsb29rdXBzIHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24gKERvdWcgRXZhbnMsIEJaIDk3 MjY3NykuCisjPWRyb3AKK1BhdGNoODM4OiBnZGItY3h4LXBlcmZvcm1hbmNlLTFvZjIucGF0Y2gK K1BhdGNoODM5OiBnZGItY3h4LXBlcmZvcm1hbmNlLTJvZjIucGF0Y2gKKwogJWlmIDAleyE/cmhl bDoxfSB8fCAwJXs/cmhlbH0gPiA2CiAjIFJMX1NUQVRFX0ZFRE9SQV9HREIgd291bGQgbm90IGJl IGZvdW5kIGZvcjoKICMgUGF0Y2g2NDI6IGdkYi1yZWFkbGluZTYyLWFzay1tb3JlLXJoLnBhdGNo CkBAIC03ODMsOCArNzkxLDYgQEAgZmluZCAtbmFtZSAiKi5pbmZvKiJ8eGFyZ3Mgcm0gLWYKICVw YXRjaDIzMiAtcDEKICVwYXRjaDgyOCAtcDEKICVwYXRjaDgyOSAtcDEKLSVwYXRjaDgzNiAtcDEK LSVwYXRjaDgzNyAtcDEKICVwYXRjaDEgLXAxCiAlcGF0Y2gzIC1wMQogCkBAIC04ODEsNiArODg3 LDcgQEAgZmluZCAtbmFtZSAiKi5pbmZvKiJ8eGFyZ3Mgcm0gLWYKICVwYXRjaDcyMyAtcDEKICVw YXRjaDgyMiAtcDEKICVwYXRjaDgyNyAtcDEKKyVwYXRjaDYxOSAtcDEKICVwYXRjaDYyNyAtcDEK ICVwYXRjaDYzNCAtcDEKICVwYXRjaDY1MyAtcDEKQEAgLTg5OSw3ICs5MDYsMTUgQEAgZmluZCAt bmFtZSAiKi5pbmZvKiJ8eGFyZ3Mgcm0gLWYKICVwYXRjaDgzMiAtcDEKICVwYXRjaDgzNCAtcDEK ICVwYXRjaDgzNSAtcDEKKyVwYXRjaDgzOCAtcDEKKyVwYXRjaDgzOSAtcDEKIAorJXBhdGNoODM2 IC1wMQorJXBhdGNoODM3IC1wMQorJWlmIDAlez9zY2w6MX0KKyVwYXRjaDgzNiAtcDEgLVIKKyVw YXRjaDgzNyAtcDEgLVIKKyVlbmRpZgogJXBhdGNoMzkzIC1wMQogJWlmIDAleyE/ZWw1OjF9IHx8 IDAlez9zY2w6MX0KICVwYXRjaDM5MyAtcDEgLVIKQEAgLTE0MDIsNiArMTQxNywxMSBAQCBmaQog JWVuZGlmICMgMCV7IT9lbDU6MX0gfHwgIiV7X3RhcmdldF9jcHV9IiA9PSAibm9hcmNoIgogCiAl Y2hhbmdlbG9nCisqIE1vbiBKdW4gMTAgMjAxMyBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4gLSA3LjYtMzIuZmMxOQorLSBbc2NsXSBEaXNhYmxlIFB5dGhvbiBmcmFt ZSBmaWx0ZXJzIG9uIHNjbC4KKy0gVXBkYXRlIGxpYnJhcmllcyBvcGVuaW5nIHBlcmZvcm1hbmNl IGZpeCBmcm9tIHVwc3RyZWFtLgorLSBGaXggQysrIGxvb2t1cHMgcGVyZm9ybWFuY2UgcmVncmVz c2lvbiAoRG91ZyBFdmFucywgQlogOTcyNjc3KS4KKwogKiBUdWUgTWF5IDI4IDIwMTMgSmFuIEty YXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy42LTMxLmZjMTkKIC0gW3Bw Y10gQmFja3BvcnQgaGFyZHdhcmUgd2F0Y2hwb2ludHMgZml4IChFZGp1bmlvciBNYWNoYWRvLCBC WiA5Njc5MTUpLgogCg==