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: Rex Dieter To: git-commits@fedoraproject.org Subject: [rpms/amarok] epel10.2: new iteration of proxy_loading patch (kde#295199) Date: Mon, 06 Jul 2026 18:31:37 GMT Message-ID: <178336269753.1.12807079468967761818.rpms-amarok-b46f918942a8@fedoraproject.org> List-ID: X-Git-Repo: rpms/amarok X-Git-Branch: epel10.2 X-Git-Rev: b46f918942a85f0f0c7c1d257a790044404f9950 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvYW1hcm9rCkJyYW5j aCA6IGVwZWwxMC4yCkNvbW1pdCA6IGI0NmY5MTg5NDJhODVmMGYwYzdjMWQyNTdhNzkwMDQ0NDA0 Zjk5NTAKQXV0aG9yIDogUmV4IERpZXRlciA8cmRpZXRlckBmZWRvcmFwcm9qZWN0Lm9yZz4KRGF0 ZSAgIDogMjAxMi0wMy0yMVQwOToxMjoxNC0wNTowMApTdGF0cyAgOiArMTE3My8tNzU2IGluIDMg ZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2FtYXJv ay9jL2I0NmY5MTg5NDJhODVmMGYwYzdjMWQyNTdhNzkwMDQ0NDA0Zjk5NTA/YnJhbmNoPWVwZWwx MC4yCgpMb2c6Cm5ldyBpdGVyYXRpb24gb2YgcHJveHlfbG9hZGluZyBwYXRjaCAoa2RlIzI5NTE5 OSkKCi0tLQpkaWZmIC0tZ2l0IGEvMDAwMS1Mb2FkLWFsbC10cmFja3MtZnJvbS1YU1BGLXVzaW5n LU1ldGFQcm94eS5wYXRjaCBiLzAwMDEtTG9hZC1hbGwtdHJhY2tzLWZyb20tWFNQRi11c2luZy1N ZXRhUHJveHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlZTc4NDkuLjAw MDAwMDAKLS0tIGEvMDAwMS1Mb2FkLWFsbC10cmFja3MtZnJvbS1YU1BGLXVzaW5nLU1ldGFQcm94 eS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc1MyArMCwwIEBACi1kaWZmIC0tZ2l0IGEvc3Jj L0NNYWtlTGlzdHMudHh0IGIvc3JjL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA0MjQxZTY5Li5iYmUz Zjc1IDEwMDY0NAotLS0tIGEvc3JjL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9zcmMvQ01ha2VMaXN0 cy50eHQKLUBAIC0yODQsNiArMjg0LDcgQEAgc2V0KGxpYm1ldGFpbXBsX1NSQ1MKLSAgICAgY29y ZS1pbXBsL21ldGEvbXVsdGkvTXVsdGlUcmFjay5jcHAKLSAgICAgY29yZS1pbXBsL21ldGEvY3Vl L0N1ZUZpbGVTdXBwb3J0LmNwcAotICAgICBjb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHku Y3BwCi0rICAgIGNvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eVdvcmtlci5jcHAKLSAgICAg Y29yZS1pbXBsL21ldGEvc3RyZWFtL1N0cmVhbS5jcHAKLSAgICAgY29yZS1pbXBsL3BsYXlsaXN0 cy90eXBlcy9maWxlL1BsYXlsaXN0RmlsZS5jcHAKLSAgICAgY29yZS1pbXBsL3N0YXRpc3RpY3Mv cHJvdmlkZXJzL3VybC9QZXJtYW5lbnRVcmxTdGF0aXN0aWNzUHJvdmlkZXIuY3BwCi1kaWZmIC0t Z2l0IGEvc3JjL2NvcmUtaW1wbC9jb2xsZWN0aW9ucy9zdXBwb3J0L0NvbGxlY3Rpb25NYW5hZ2Vy LmNwcCBiL3NyYy9jb3JlLWltcGwvY29sbGVjdGlvbnMvc3VwcG9ydC9Db2xsZWN0aW9uTWFuYWdl ci5jcHAKLWluZGV4IDM3ZmUwM2EuLjkwODViNWEgMTAwNjQ0Ci0tLS0gYS9zcmMvY29yZS1pbXBs L2NvbGxlY3Rpb25zL3N1cHBvcnQvQ29sbGVjdGlvbk1hbmFnZXIuY3BwCi0rKysgYi9zcmMvY29y ZS1pbXBsL2NvbGxlY3Rpb25zL3N1cHBvcnQvQ29sbGVjdGlvbk1hbmFnZXIuY3BwCi1AQCAtNDYz LDYgKzQ2Myw3IEBAIENvbGxlY3Rpb25NYW5hZ2VyOjp0cmFja0ZvclVybCggY29uc3QgS1VybCAm dXJsICkKLSAgICAgICAgIH0KLSAgICAgfQotIAotKyAgICAvL1RPRE86IGNyZWF0ZSBzcGVjaWZp YyBUcmFja1Byb3ZpZGVycyBmb3IgdGhlc2U6Ci0gICAgIGlmKCB1cmwucHJvdG9jb2woKSA9PSBR TGF0aW4xU3RyaW5nKCJodHRwIikgfHwgdXJsLnByb3RvY29sKCkgPT0gUUxhdGluMVN0cmluZygi bW1zIikgfHwKLSAgICAgICAgIHVybC5wcm90b2NvbCgpID09IFFMYXRpbjFTdHJpbmcoInNtYiIp ICkKLSAgICAgICAgIHJldHVybiBNZXRhOjpUcmFja1B0ciggbmV3IE1ldGFTdHJlYW06OlRyYWNr KCB1cmwgKSApOwotZGlmZiAtLWdpdCBhL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJv eHkuaCBiL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHkuaAotaW5kZXggZDgzMjli ZS4uMDYwMjIzZiAxMDA2NDQKLS0tLSBhL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJv eHkuaAotKysrIGIvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eS5oCi1AQCAtMTcs NiArMTcsOCBAQAotICNpZm5kZWYgQU1BUk9LX01FVEFQUk9YWV9ICi0gI2RlZmluZSBBTUFST0tf TUVUQVBST1hZX0gKLSAKLSsjaW5jbHVkZSAiTWV0YVByb3h5V29ya2VyLmgiCi0rCi0gI2luY2x1 ZGUgImNvcmUvbWV0YS9NZXRhLmgiCi0gI2luY2x1ZGUgImNvcmUvY2FwYWJpbGl0aWVzL0NhcGFi aWxpdHkuaCIKLSAKLUBAIC04Miw2ICs4NCw3IEBAIG5hbWVzcGFjZSBNZXRhUHJveHkKLSAgICAg ICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0RGlzY051bWJlciggaW50IGRpc2NOdW1iZXIgKTsKLSAK LSAgICAgICAgICAgICB2aXJ0dWFsIHFpbnQ2NCBsZW5ndGgoKSBjb25zdDsKLSsgICAgICAgICAg ICB2aXJ0dWFsIHZvaWQgc2V0TGVuZ3RoKCBxaW50NjQgbGVuZ3RoICk7Ci0gICAgICAgICAgICAg dmlydHVhbCBpbnQgZmlsZXNpemUoKSBjb25zdDsKLSAgICAgICAgICAgICB2aXJ0dWFsIGludCBz YW1wbGVSYXRlKCkgY29uc3Q7Ci0gICAgICAgICAgICAgdmlydHVhbCBpbnQgYml0cmF0ZSgpIGNv bnN0OwotQEAgLTExMCwxMSArMTEzLDEyIEBAIG5hbWVzcGFjZSBNZXRhUHJveHkKLSAJCSAqIGFs bG93cyBzdWJjbGFzc2VzIHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0cmFja3Byb3ZpZGVyIHdo aWNoIHdpbGwgb25seSBjaGVjayB0aGUgVHJhY2tQcm92aWRlcgotIAkJICogcGFzc2VkIHRvIGxv b2t1cFRyYWNrKFRyYWNrUHJvdmlkZXIqKSBmb3IgdGhlIHJlYWwgdHJhY2suCi0gCQkgKi8KLS0J CVRyYWNrKCBjb25zdCBLVXJsICZ1cmwsIGJvb2wgYXdhaXRMb29rdXBOb3RpZmljYXRpb24pOwot KyAgICAgICAgVHJhY2soIGNvbnN0IEtVcmwgJnVybCwgYm9vbCBhd2FpdExvb2t1cE5vdGlmaWNh dGlvbiApOwotKwotIAkJLyoqCi0gCQkgKiBNZXRhUHJveHkgd2lsbCBjaGVjayB0aGUgZ2l2ZW4g dHJhY2twcm92aWRlciBpZiBpdCBjYW4gcHJvdmlkZSB0aGUgdHJhY2sgZm9yIHRoZSBwcm94eSdz IHVybC4KLSAJCSAqLwotLQkJdm9pZCBsb29rdXBUcmFjayhDb2xsZWN0aW9uczo6VHJhY2tQcm92 aWRlciAqcHJvdmlkZXIpOwotKyAgICAgICAgdm9pZCBsb29rdXBUcmFjayggQ29sbGVjdGlvbnM6 OlRyYWNrUHJvdmlkZXIgKnByb3ZpZGVyICk7Ci0gCi0gICAgICAgICAvKioKLSAgICAgICAgICAq IE1ldGFQcm94eSB3aWxsIHVwZGF0ZSB0aGUgcHJveHkgd2l0aCB0aGUgdHJhY2suCi1AQCAtMTIz LDcgKzEyNyw3IEBAIG5hbWVzcGFjZSBNZXRhUHJveHkKLSAKLSAgICAgICAgIHByaXZhdGU6Ci0g CQkJdm9pZCBpbml0KCBjb25zdCBLVXJsICZ1cmwsIGJvb2wgYXdhaXRMb29rdXBOb3RpZmljYXRp b24gKTsKLS0gICAgICAgICAgICBQcml2YXRlICogY29uc3QgZDsKLSsgICAgICAgICAgICBQcml2 YXRlICpjb25zdCBkOwotICAgICB9OwotIAotIH0KLWRpZmYgLS1naXQgYS9zcmMvY29yZS1pbXBs L21ldGEvcHJveHkvTWV0YVByb3h5LmNwcCBiL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRh UHJveHkuY3BwCi1pbmRleCBkMTU3N2EyLi42YTI3ZjBlIDEwMDY0NAotLS0tIGEvc3JjL2NvcmUt aW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eS5jcHAKLSsrKyBiL3NyYy9jb3JlLWltcGwvbWV0YS9w cm94eS9NZXRhUHJveHkuY3BwCi1AQCAtMTcsNiArMTcsNyBAQAotICNpbmNsdWRlICJjb3JlLWlt cGwvbWV0YS9wcm94eS9NZXRhUHJveHkuaCIKLSAjaW5jbHVkZSAiY29yZS1pbXBsL21ldGEvcHJv eHkvTWV0YVByb3h5X3AuaCIKLSAjaW5jbHVkZSAiY29yZS1pbXBsL21ldGEvcHJveHkvTWV0YVBy b3h5X3AubW9jIgotKyNpbmNsdWRlICJjb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHlXb3Jr ZXIuaCIKLSAKLSAjaW5jbHVkZSAiY29yZS9jYXBhYmlsaXRpZXMvRWRpdENhcGFiaWxpdHkuaCIK LSAKLUBAIC0yNyw2ICsyOCw3IEBACi0gI2luY2x1ZGUgPFFUaW1lcj4KLSAKLSAjaW5jbHVkZSA8 S1NoYXJlZFB0cj4KLSsjaW5jbHVkZSA8dGhyZWFkd2VhdmVyL1RocmVhZFdlYXZlci5oPgotIAot IHVzaW5nIG5hbWVzcGFjZSBNZXRhUHJveHk7Ci0gCi1AQCAtODMsMTggKzg1LDIwIEBAIE1ldGFQ cm94eTo6VHJhY2s6OmluaXQoIGNvbnN0IEtVcmwgJnVybCwgYm9vbCBhd2FpdExvb2t1cE5vdGlm aWNhdGlvbiApCi0gCWQtPnVybCA9IHVybDsKLSAgICAgZC0+cHJveHkgPSB0aGlzOwotICAgICBk LT5jYWNoZWRMZW5ndGggPSAwOwotLQotLQlpZiggIWF3YWl0TG9va3VwTm90aWZpY2F0aW9uICkK LS0gICAgewotLSAgICAgICAgUU9iamVjdDo6Y29ubmVjdCggQ29sbGVjdGlvbk1hbmFnZXI6Omlu c3RhbmNlKCksIFNJR05BTCggdHJhY2tQcm92aWRlckFkZGVkKCBDb2xsZWN0aW9uczo6VHJhY2tQ cm92aWRlciogKSApLCBkLCBTTE9UKCBzbG90TmV3VHJhY2tQcm92aWRlciggQ29sbGVjdGlvbnM6 OlRyYWNrUHJvdmlkZXIqICkgKSApOwotLSAgICAgICAgUU9iamVjdDo6Y29ubmVjdCggQ29sbGVj dGlvbk1hbmFnZXI6Omluc3RhbmNlKCksIFNJR05BTCggY29sbGVjdGlvbkFkZGVkKCBDb2xsZWN0 aW9uczo6Q29sbGVjdGlvbiogKSApLCBkLCBTTE9UKCBzbG90TmV3Q29sbGVjdGlvbiggQ29sbGVj dGlvbnM6OkNvbGxlY3Rpb24qICkgKSApOwotLSAgICB9Ci0tCi0gICAgIGQtPmFsYnVtUHRyID0g TWV0YTo6QWxidW1QdHIoIG5ldyBQcm94eUFsYnVtKCBkICkgKTsKLSAgICAgZC0+YXJ0aXN0UHRy ID0gTWV0YTo6QXJ0aXN0UHRyKCBuZXcgUHJveHlBcnRpc3QoIGQgKSApOwotICAgICBkLT5nZW5y ZVB0ciA9IE1ldGE6OkdlbnJlUHRyKCBuZXcgUHJveHlHZW5yZSggZCApICk7Ci0gICAgIGQtPmNv bXBvc2VyUHRyID0gTWV0YTo6Q29tcG9zZXJQdHIoIG5ldyBQcm94eUNvbXBvc2VyKCBkICkgKTsK LSAgICAgZC0+eWVhclB0ciA9IE1ldGE6OlllYXJQdHIoIG5ldyBQcm94eVllYXIoIGQgKSApOwot KwotKyAgICBpZiggIWF3YWl0TG9va3VwTm90aWZpY2F0aW9uICkKLSsgICAgewotKyAgICAgICAg V29ya2VyICp3b3JrZXIgPSBuZXcgV29ya2VyKCBkLT51cmwgKTsKLSsgICAgICAgIFFPYmplY3Q6 OmNvbm5lY3QoIHdvcmtlciwgU0lHTkFMKGZpbmlzaGVkTG9va3VwKCBjb25zdCBNZXRhOjpUcmFj a1B0ciAmICkpLAotKyAgICAgICAgICAgICAgICBkLCBTTE9UKHNsb3RVcGRhdGVUcmFjayhNZXRh OjpUcmFja1B0cikpICk7Ci0rCi0rICAgICAgICBUaHJlYWRXZWF2ZXI6OldlYXZlcjo6aW5zdGFu Y2UoKS0+ZW5xdWV1ZSggd29ya2VyICk7Ci0rICAgIH0KLSB9Ci0gCi0gTWV0YVByb3h5OjpUcmFj azo6flRyYWNrKCkKLUBAIC0zNDUsNiArMzQ5LDEyIEBAIE1ldGFQcm94eTo6VHJhY2s6Omxlbmd0 aCgpIGNvbnN0Ci0gICAgIHJldHVybiBkLT5jYWNoZWRMZW5ndGg7Ci0gfQotIAotK3ZvaWQKLStN ZXRhUHJveHk6OlRyYWNrOjpzZXRMZW5ndGgoIHFpbnQ2NCBsZW5ndGggKQotK3sKLSsgICAgZC0+ Y2FjaGVkTGVuZ3RoID0gbGVuZ3RoOwotK30KLSsKLSBpbnQKLSBNZXRhUHJveHk6OlRyYWNrOjpm aWxlc2l6ZSgpIGNvbnN0Ci0gewotQEAgLTQyNCw3ICs0MzQsNyBAQCBNZXRhUHJveHk6OlRyYWNr OjppbkNvbGxlY3Rpb24oKSBjb25zdAotICAgICByZXR1cm4gZmFsc2U7Ci0gfQotIAotLUNvbGxl Y3Rpb25zOjpDb2xsZWN0aW9uKgotK0NvbGxlY3Rpb25zOjpDb2xsZWN0aW9uICoKLSBNZXRhUHJv eHk6OlRyYWNrOjpjb2xsZWN0aW9uKCkgY29uc3QKLSB7Ci0gICAgIGlmKCBkLT5yZWFsVHJhY2sg KQotQEAgLTQ1MCw3ICs0NjAsMTEgQEAgTWV0YVByb3h5OjpUcmFjazo6dW5zdWJzY3JpYmUoIE1l dGE6Ok9ic2VydmVyICpvYnNlcnZlciApCi0gdm9pZAotIE1ldGFQcm94eTo6VHJhY2s6Omxvb2t1 cFRyYWNrKCBDb2xsZWN0aW9uczo6VHJhY2tQcm92aWRlciAqcHJvdmlkZXIgKQotIHsKLS0JZC0+ c2xvdE5ld1RyYWNrUHJvdmlkZXIoIHByb3ZpZGVyICk7Ci0rICAgIGlmKCBwcm92aWRlci0+cG9z c2libHlDb250YWluc1RyYWNrKCBkLT51cmwgKSApCi0rICAgIHsKLSsgICAgICAgIE1ldGE6OlRy YWNrUHRyIHRyYWNrID0gcHJvdmlkZXItPnRyYWNrRm9yVXJsKCBkLT51cmwgKTsKLSsgICAgICAg IGQtPnNsb3RVcGRhdGVUcmFjayggdHJhY2sgKTsKLSsgICAgfQotIH0KLSAKLSB2b2lkCi1AQCAt NDcwLDcgKzQ4NCw3IEBAIE1ldGFQcm94eTo6VHJhY2s6Omhhc0NhcGFiaWxpdHlJbnRlcmZhY2Uo IENhcGFiaWxpdGllczo6Q2FwYWJpbGl0eTo6VHlwZSB0eXBlICkKLSAgICAgcmV0dXJuIGZhbHNl OwotIH0KLSAKLS1DYXBhYmlsaXRpZXM6OkNhcGFiaWxpdHkqCi0rQ2FwYWJpbGl0aWVzOjpDYXBh YmlsaXR5ICoKLSBNZXRhUHJveHk6OlRyYWNrOjpjcmVhdGVDYXBhYmlsaXR5SW50ZXJmYWNlKCBD YXBhYmlsaXRpZXM6OkNhcGFiaWxpdHk6OlR5cGUgdHlwZSApCi0gewotICAgICBpZiggZC0+cmVh bFRyYWNrICkKLUBAIC00ODQsNyArNDk4LDcgQEAgTWV0YVByb3h5OjpUcmFjazo6Y3JlYXRlQ2Fw YWJpbGl0eUludGVyZmFjZSggQ2FwYWJpbGl0aWVzOjpDYXBhYmlsaXR5OjpUeXBlIHR5cGUKLSBi b29sCi0gTWV0YVByb3h5OjpUcmFjazo6b3BlcmF0b3I9PSggY29uc3QgTWV0YTo6VHJhY2sgJnRy YWNrICkgY29uc3QKLSB7Ci0tICAgIGNvbnN0IE1ldGFQcm94eTo6VHJhY2sgKnByb3h5ID0gZHlu YW1pY19jYXN0PGNvbnN0IE1ldGFQcm94eTo6VHJhY2sqPiggJnRyYWNrICk7Ci0rICAgIGNvbnN0 IE1ldGFQcm94eTo6VHJhY2sgKnByb3h5ID0gZHluYW1pY19jYXN0PGNvbnN0IE1ldGFQcm94eTo6 VHJhY2sgKj4oICZ0cmFjayApOwotICAgICBpZiggcHJveHkgJiYgZC0+cmVhbFRyYWNrICkKLSAg ICAgICAgIHJldHVybiBkLT5yZWFsVHJhY2sgPT0gcHJveHktPmQtPnJlYWxUcmFjazsKLSAgICAg ZWxzZSBpZiggcHJveHkgKQotZGlmZiAtLWdpdCBhL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9N ZXRhUHJveHlXb3JrZXIuaCBiL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHlXb3Jr ZXIuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjU1N2YyOWQKLS0tLSAv ZGV2L251bGwKLSsrKyBiL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHlXb3JrZXIu aAotQEAgLTAsMCArMSw0MiBAQAotKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0r ICogQ29weXJpZ2h0IChjKSAyMDEyIEJhcnQgQ2VybmVlbHMgPGJhcnQuY2VybmVlbHNAa2RlLm9y Zz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSsgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKgotKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyICAgICAgICAqCi0rICogdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgICAgICAgICoKLSsgKiBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciAgICAgICAgICAg KgotKyAqIHZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0rICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICoKLSsgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZICAgICAgKgotKyAqIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgICAgICAqCi0rICogUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAg ICAgICoKLSsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotKyAqIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFs b25nIHdpdGggICAgICAgICAqCi0rICogdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSsg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSsKLSsjaWZuZGVmIE1FVEFQUk9YWV9N RVRBUFJPWFlXT1JLRVJfSAotKyNkZWZpbmUgTUVUQVBST1hZX01FVEFQUk9YWVdPUktFUl9ICi0r Ci0rI2luY2x1ZGUgPGNvcmUvY29sbGVjdGlvbnMvc3VwcG9ydC9UcmFja0ZvclVybFdvcmtlci5o PgotKyNpbmNsdWRlIDxjb3JlL2NvbGxlY3Rpb25zL0NvbGxlY3Rpb24uaD4KLSsKLStuYW1lc3Bh Y2UgTWV0YVByb3h5IHsKLSsKLStjbGFzcyBXb3JrZXIgOiBwdWJsaWMgQW1hcm9rOjpUcmFja0Zv clVybFdvcmtlcgotK3sKLSsgICAgUV9PQkpFQ1QKLSsgICAgcHVibGljOgotKyAgICAgICAgZXhw bGljaXQgV29ya2VyKCBjb25zdCBLVXJsICZ1cmwgKTsKLSsKLSsgICAgICAgIC8vVHJhY2tGb3JV cmxXb3JrZXIgdmlydHVhbCBtZXRob2RzCi0rICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuKCk7Ci0r Ci0rICAgIHByaXZhdGUgc2xvdHM6Ci0rICAgICAgICB2b2lkIHNsb3ROZXdUcmFja1Byb3ZpZGVy KCBDb2xsZWN0aW9uczo6VHJhY2tQcm92aWRlciAqbmV3VHJhY2tQcm92aWRlciApOwotKyAgICAg ICAgdm9pZCBzbG90TmV3Q29sbGVjdGlvbiggQ29sbGVjdGlvbnM6OkNvbGxlY3Rpb24gKm5ld0Nv bGxlY3Rpb24gKTsKLSsKLSt9OwotKwotK30gLy8gbmFtZXNwYWNlIE1ldGFQcm94eQotKwotKyNl bmRpZiAvLyBNRVRBUFJPWFlfTUVUQVBST1hZV09SS0VSX0gKLWRpZmYgLS1naXQgYS9zcmMvY29y ZS1pbXBsL21ldGEvcHJveHkvTWV0YVByb3h5V29ya2VyLmNwcCBiL3NyYy9jb3JlLWltcGwvbWV0 YS9wcm94eS9NZXRhUHJveHlXb3JrZXIuY3BwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg MDAwMDAwMC4uMGNkZTI4MAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2NvcmUtaW1wbC9tZXRh L3Byb3h5L01ldGFQcm94eVdvcmtlci5jcHAKLUBAIC0wLDAgKzEsODIgQEAKLSsvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgotKyAqIENvcHlyaWdodCAoYykgMjAxMiBCYXJ0IENlcm5l ZWxzIDxiYXJ0LmNlcm5lZWxzQGtkZS5vcmc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq Ci0rICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSsgKiBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1 bmRlciAgICAgICAgKgotKyAqIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlICAgICAgICAqCi0rICogRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgICAgICAgICAgICoKLSsgKiB2ZXJzaW9uLiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKgotKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0rICogVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBX SVRIT1VUIEFOWSAgICAgICoKLSsgKiBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBICAgICAgKgotKyAq IFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAqCi0rICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoICAgICAgICAgKgotKyAqIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICAgICAg ICAgICAgICAgICAgICAgICAgICAqCi0rICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov Ci0rCi0rI2luY2x1ZGUgIk1ldGFQcm94eVdvcmtlci5oIgotKwotKyNpbmNsdWRlICJjb3JlLWlt cGwvY29sbGVjdGlvbnMvc3VwcG9ydC9Db2xsZWN0aW9uTWFuYWdlci5oIgotKwotK25hbWVzcGFj ZSBNZXRhUHJveHkgewotKwotK1dvcmtlcjo6V29ya2VyKCBjb25zdCBLVXJsICZ1cmwgKQotKyAg ICA6IEFtYXJvazo6VHJhY2tGb3JVcmxXb3JrZXIoIHVybCApCi0rewotKwotK30KLSsKLSt2b2lk Ci0rV29ya2VyOjpydW4oKQotK3sKLSsgICAgTWV0YTo6VHJhY2tQdHIgdHJhY2sgPSBDb2xsZWN0 aW9uTWFuYWdlcjo6aW5zdGFuY2UoKS0+dHJhY2tGb3JVcmwoIG1fdXJsICk7Ci0rCi0rICAgIC8v bm8gVHJhY2tQcm92aWRlciBoYXMgYSB0cmFjayBmb3IgdXMgeWV0LCBxdWVyeSBuZXcgb25lcyB0 aGF0IGFyZSBhZGRlZC4KLSsgICAgaWYoIHRyYWNrLmlzTnVsbCgpICkKLSsgICAgewotKyAgICAg ICAgLy9UT0RPOiBzaG91bGQgb25seSBoYXZlIHRvIGNvbm5lY3RvIHRvIFRyYWNrUHJvdmlkZXIg c2lnbmFscy4KLSsgICAgICAgIC8vRWFjaCBDb2xsZWN0aW9uIGNvbnRhaW5zIGEgVHJhY2tQcm92 aWRlcgotKyAgICAgICAgY29ubmVjdCggQ29sbGVjdGlvbk1hbmFnZXI6Omluc3RhbmNlKCksCi0r ICAgICAgICAgICAgICAgICBTSUdOQUwodHJhY2tQcm92aWRlckFkZGVkKCBDb2xsZWN0aW9uczo6 VHJhY2tQcm92aWRlciAqICkpLAotKyAgICAgICAgICAgICAgICAgU0xPVChzbG90TmV3VHJhY2tQ cm92aWRlciggQ29sbGVjdGlvbnM6OlRyYWNrUHJvdmlkZXIgKiApKSApOwotKyAgICAgICAgY29u bmVjdCggQ29sbGVjdGlvbk1hbmFnZXI6Omluc3RhbmNlKCksCi0rICAgICAgICAgICAgICAgICBT SUdOQUwoY29sbGVjdGlvbkFkZGVkKCBDb2xsZWN0aW9uczo6Q29sbGVjdGlvbiAqICkpLAotKyAg ICAgICAgICAgICAgICAgU0xPVChzbG90TmV3Q29sbGVjdGlvbiggQ29sbGVjdGlvbnM6OkNvbGxl Y3Rpb24gKiApKSApOwotKwotKyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0rCi0rICAgIGVtaXQo IGZpbmlzaGVkTG9va3VwKCB0cmFjayApICk7Ci0rfQotKwotK3ZvaWQKLStXb3JrZXI6OnNsb3RO ZXdUcmFja1Byb3ZpZGVyKCBDb2xsZWN0aW9uczo6VHJhY2tQcm92aWRlciAqbmV3VHJhY2tQcm92 aWRlciApCi0rewotKyAgICBpZiggIW5ld1RyYWNrUHJvdmlkZXIgKQotKyAgICB7Ci0rICAgICAg ICByZXR1cm47Ci0rICAgIH0KLSsKLSsgICAgaWYoIG5ld1RyYWNrUHJvdmlkZXItPnBvc3NpYmx5 Q29udGFpbnNUcmFjayggbV91cmwgKSApCi0rICAgIHsKLSsgICAgICAgIE1ldGE6OlRyYWNrUHRy IHRyYWNrID0gbmV3VHJhY2tQcm92aWRlci0+dHJhY2tGb3JVcmwoIG1fdXJsICk7Ci0rICAgICAg ICBlbWl0KCBmaW5pc2hlZExvb2t1cCggdHJhY2sgKSApOwotKyAgICB9Ci0rfQotKwotK3ZvaWQK LStXb3JrZXI6OnNsb3ROZXdDb2xsZWN0aW9uKCBDb2xsZWN0aW9uczo6Q29sbGVjdGlvbiAqbmV3 Q29sbGVjdGlvbiApCi0rewotKyAgICBpZiggIW5ld0NvbGxlY3Rpb24gKQotKyAgICB7Ci0rICAg ICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgICAgaWYoIG5ld0NvbGxlY3Rpb24tPnBvc3NpYmx5 Q29udGFpbnNUcmFjayggbV91cmwgKSApCi0rICAgIHsKLSsgICAgICAgIE1ldGE6OlRyYWNrUHRy IHRyYWNrID0gbmV3Q29sbGVjdGlvbi0+dHJhY2tGb3JVcmwoIG1fdXJsICk7Ci0rICAgICAgICBl bWl0KCBmaW5pc2hlZExvb2t1cCggdHJhY2sgKSApOwotKyAgICB9Ci0rfQotKwotK30gLy8gbmFt ZXNwYWNlIE1ldGFQcm94eQotZGlmZiAtLWdpdCBhL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9N ZXRhUHJveHlfcC5oIGIvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eV9wLmgKLWlu ZGV4IDc5MjY3NWQuLmFjOGVmYjAgMTAwNjQ0Ci0tLS0gYS9zcmMvY29yZS1pbXBsL21ldGEvcHJv eHkvTWV0YVByb3h5X3AuaAotKysrIGIvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94 eV9wLmgKLUBAIC00Myw3ICs0Myw3IEBAIGNsYXNzIE1ldGFQcm94eTo6VHJhY2s6OlByaXZhdGUg OiBwdWJsaWMgUU9iamVjdCwgcHVibGljIE1ldGE6Ok9ic2VydmVyCi0gCi0gICAgICAgICBNZXRh OjpUcmFja1B0ciByZWFsVHJhY2s7Ci0gCi0tICAgICAgICBRTGlzdDxNZXRhOjpPYnNlcnZlcio+ IG9ic2VydmVyczsKLSsgICAgICAgIFFMaXN0PE1ldGE6Ok9ic2VydmVyICo+IG9ic2VydmVyczsK LSAKLSAgICAgICAgIFFTdHJpbmcgY2FjaGVkQXJ0aXN0OwotICAgICAgICAgUVN0cmluZyBjYWNo ZWRBbGJ1bTsKLUBAIC04MiwzNCArODIsNiBAQCBjbGFzcyBNZXRhUHJveHk6OlRyYWNrOjpQcml2 YXRlIDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBNZXRhOjpPYnNlcnZlcgotICAgICAgICAgfQot IAotICAgICBwdWJsaWMgc2xvdHM6Ci0tICAgICAgICB2b2lkIHNsb3ROZXdUcmFja1Byb3ZpZGVy KCBDb2xsZWN0aW9uczo6VHJhY2tQcm92aWRlciAqbmV3VHJhY2tQcm92aWRlciApCi0tICAgICAg ICB7Ci0tICAgICAgICAgICAgaWYgKCAhbmV3VHJhY2tQcm92aWRlciApCi0tICAgICAgICAgICAg ewotLSAgICAgICAgICAgICAgICByZXR1cm47Ci0tICAgICAgICAgICAgfQotLQotLSAgICAgICAg ICAgIGlmKCBuZXdUcmFja1Byb3ZpZGVyLT5wb3NzaWJseUNvbnRhaW5zVHJhY2soIHVybCApICkK LS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIE1ldGE6OlRyYWNrUHRyIHRyYWNrID0g bmV3VHJhY2tQcm92aWRlci0+dHJhY2tGb3JVcmwoIHVybCApOwotLSAgICAgICAgICAgICAgICBz bG90VXBkYXRlVHJhY2soIHRyYWNrICk7Ci0tICAgICAgICAgICAgfQotLSAgICAgICAgfQotLQot LSAgICAgICAgdm9pZCBzbG90TmV3Q29sbGVjdGlvbiggQ29sbGVjdGlvbnM6OkNvbGxlY3Rpb24g Km5ld0NvbGxlY3Rpb24gKQotLSAgICAgICAgewotLSAgICAgICAgICAgIGlmICggIW5ld0NvbGxl Y3Rpb24gKQotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgcmV0dXJuOwotLSAgICAg ICAgICAgIH0KLS0KLS0gICAgICAgICAgICBpZiggbmV3Q29sbGVjdGlvbi0+cG9zc2libHlDb250 YWluc1RyYWNrKCB1cmwgKSApCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICBNZXRh OjpUcmFja1B0ciB0cmFjayA9IG5ld0NvbGxlY3Rpb24tPnRyYWNrRm9yVXJsKCB1cmwgKTsKLS0g ICAgICAgICAgICAgICAgc2xvdFVwZGF0ZVRyYWNrKCB0cmFjayApOwotLSAgICAgICAgICAgIH0K LS0gICAgICAgIH0KLS0KLSAgICAgICAgIHZvaWQgc2xvdFVwZGF0ZVRyYWNrKCBNZXRhOjpUcmFj a1B0ciB0cmFjayApCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgaWYoIHRyYWNrICkKLWRpZmYg LS1naXQgYS9zcmMvY29yZS1pbXBsL3BsYXlsaXN0cy90eXBlcy9maWxlL3hzcGYvWFNQRlBsYXls aXN0LmNwcCBiL3NyYy9jb3JlLWltcGwvcGxheWxpc3RzL3R5cGVzL2ZpbGUveHNwZi9YU1BGUGxh eWxpc3QuY3BwCi1pbmRleCA0Y2I0OWZiLi4wMWNmMWU2IDEwMDY0NAotLS0tIGEvc3JjL2NvcmUt aW1wbC9wbGF5bGlzdHMvdHlwZXMvZmlsZS94c3BmL1hTUEZQbGF5bGlzdC5jcHAKLSsrKyBiL3Ny Yy9jb3JlLWltcGwvcGxheWxpc3RzL3R5cGVzL2ZpbGUveHNwZi9YU1BGUGxheWxpc3QuY3BwCi1A QCAtMjMzLDggKzIzMyw3IEBAIFhTUEZQbGF5bGlzdDo6dHJhY2tDb3VudCgpIGNvbnN0Ci0gTWV0 YTo6VHJhY2tMaXN0Ci0gWFNQRlBsYXlsaXN0Ojp0cmFja3MoKQotIHsKLS0gICAgLy9JZiB5b3Ug ZG8gbm90IGxvYWQgYmVmb3JlLCBtX3RyYWNrcwotLSAgICAvL2NhbiBiZSBlbXB0eSBiZWZvcmUg dXNhZ2UuCi0rICAgIC8vSWYgeW91IGRvIG5vdCBsb2FkLCBtX3RyYWNrcyBjYW4gYmUgZW1wdHkg YmVmb3JlIHVzYWdlLgotICAgICB0cmlnZ2VyVHJhY2tMb2FkKCk7Ci0gCi0gICAgIHJldHVybiBt X3RyYWNrczsKLUBAIC0yNTEsNzYgKzI1MCwxNCBAQCBYU1BGUGxheWxpc3Q6OnRyaWdnZXJUcmFj a0xvYWQoKQotIAotICAgICBmb3JlYWNoKCBjb25zdCBYU1BGVHJhY2sgJnRyYWNrLCB4c3BmVHJh Y2tzICkKLSAgICAgewotLSAgICAgICAgTWV0YTo6VHJhY2tQdHIgdHJhY2tQdHI7Ci0tICAgICAg ICBpZiggIXRyYWNrLmlkZW50aWZpZXIuaXNFbXB0eSgpICkKLS0gICAgICAgICAgICB0cmFja1B0 ciA9IENvbGxlY3Rpb25NYW5hZ2VyOjppbnN0YW5jZSgpLT50cmFja0ZvclVybCggdHJhY2suaWRl bnRpZmllciApOwotLSAgICAgICAgZWxzZQotLSAgICAgICAgICAgIHRyYWNrUHRyID0gQ29sbGVj dGlvbk1hbmFnZXI6Omluc3RhbmNlKCktPnRyYWNrRm9yVXJsKCB0cmFjay5sb2NhdGlvbiApOwot LSAgICAgICAgaWYoIHRyYWNrUHRyICkKLS0gICAgICAgIHsKLS0gICAgICAgICAgICAvKioKLS0g ICAgICAgICAgICAgKiBOT1RFOiBJZiB0aGlzIGlzIGEgTWV0YVByb3h5OjpUcmFjaywgaXQgcHJv YmFibHkgaXNuJ3QgcGxheWFibGUgeWV0LAotLSAgICAgICAgICAgICAqICAgICAgIGJ1dCB0aGF0 J3Mgb2theS4gSG93ZXZlciwgaXQncyBub3QgYSBnb29kIGlkZWEgdG8gZ2V0IGFub3RoZXIKLS0g ICAgICAgICAgICAgKiAgICAgICBvbmUgZnJvbSB0aGUgc2FtZSBwcm92aWRlciwgc2luY2UgdGhl IHByb3h5IHByb2JhYmx5IG1lYW5zIHRoYXQKLS0gICAgICAgICAgICAgKiAgICAgICBtYWtpbmcg b25lIGludm9sdmVzIHF1aXRlIGEgYml0IG9mIHdvcmsuCi0tICAgICAgICAgICAgICogICAgICAg ICAtIEFuZHkgQ29kZXIgPGFuZHJldy5jb2RlckBnbWFpbC5jb20+Ci0tICAgICAgICAgICAgICov Ci0tICAgICAgICAgICAgaWYoICF0cmFja1B0ci0+aXNQbGF5YWJsZSgpICYmICggdHlwZWlkKCAq IHRyYWNrUHRyLmRhdGEoKSApICE9IHR5cGVpZCggTWV0YVByb3h5OjpUcmFjayApICkgKQotLSAg ICAgICAgICAgICAgICB0cmFja1B0ciA9IENvbGxlY3Rpb25NYW5hZ2VyOjppbnN0YW5jZSgpLT50 cmFja0ZvclVybCggdHJhY2suaWRlbnRpZmllciApOwotLSAgICAgICAgfQotLQotLSAgICAgICAg aWYoIHRyYWNrUHRyICkKLS0gICAgICAgIHsKLS0gICAgICAgICAgICBpZiggdHlwZWlkKCAqIHRy YWNrUHRyLmRhdGEoKSApID09IHR5cGVpZCggTWV0YVN0cmVhbTo6VHJhY2sgKSApCi0tICAgICAg ICAgICAgewotLSAgICAgICAgICAgICAgICBNZXRhU3RyZWFtOjpUcmFjayAqIHN0cmVhbVRyYWNr ID0gZHluYW1pY19jYXN0PE1ldGFTdHJlYW06OlRyYWNrICo+ICggdHJhY2tQdHIuZGF0YSgpICk7 Ci0tICAgICAgICAgICAgICAgIGlmICggc3RyZWFtVHJhY2sgKQotLSAgICAgICAgICAgICAgICB7 Ci0tICAgICAgICAgICAgICAgICAgICBzdHJlYW1UcmFjay0+c2V0VGl0bGUoIHRyYWNrLnRpdGxl ICk7Ci0tICAgICAgICAgICAgICAgICAgICBzdHJlYW1UcmFjay0+c2V0QWxidW0oIHRyYWNrLmFs YnVtICk7Ci0tICAgICAgICAgICAgICAgICAgICBzdHJlYW1UcmFjay0+c2V0QXJ0aXN0KCB0cmFj ay5jcmVhdG9yICk7Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICB9Ci0tICAgICAg ICAgICAgZWxzZSBpZiggdHlwZWlkKCAqIHRyYWNrUHRyLmRhdGEoKSApID09IHR5cGVpZCggTWV0 YTo6VGltZWNvZGVUcmFjayApICkKLS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIE1l dGE6OlRpbWVjb2RlVHJhY2sgKiB0aW1lY29kZVRyYWNrID0KLS0gICAgICAgICAgICAgICAgICAg ICAgICBkeW5hbWljX2Nhc3Q8TWV0YTo6VGltZWNvZGVUcmFjayAqPiggdHJhY2tQdHIuZGF0YSgp ICk7Ci0tICAgICAgICAgICAgICAgIGlmKCB0aW1lY29kZVRyYWNrICkKLS0gICAgICAgICAgICAg ICAgewotLSAgICAgICAgICAgICAgICAgICAgdGltZWNvZGVUcmFjay0+YmVnaW5NZXRhRGF0YVVw ZGF0ZSgpOwotLSAgICAgICAgICAgICAgICAgICAgdGltZWNvZGVUcmFjay0+c2V0VGl0bGUoIHRy YWNrLnRpdGxlICk7Ci0tICAgICAgICAgICAgICAgICAgICB0aW1lY29kZVRyYWNrLT5zZXRBbGJ1 bSggdHJhY2suYWxidW0gKTsKLS0gICAgICAgICAgICAgICAgICAgIHRpbWVjb2RlVHJhY2stPnNl dEFydGlzdCggdHJhY2suY3JlYXRvciApOwotLSAgICAgICAgICAgICAgICAgICAgdGltZWNvZGVU cmFjay0+ZW5kTWV0YURhdGFVcGRhdGUoKTsKLS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAg ICAgIH0KLS0KLS0gICAgICAgICAgICBtX3RyYWNrcyA8PCB0cmFja1B0cjsKLS0gICAgICAgIH0K LS0KLS0KLS0gICAgICAgIC8vIHdoeSBkbyB3ZSBuZWVkIHRoaXM/IHNxbHBsYXlsaXN0IGlzIG5v dCBkb2luZyB0aGlzCi0tICAgICAgICAvLyB3ZSBkb24ndCB3YW50IChwcm9iYWJseSkgdW5wbGF5 YWJsZSB0cmFja3MKLS0gICAgICAgIC8vIGFuZCBpdCBjYXVzZXMgcHJvYmxlbXMgZm9yIG1lIChE YW5pZWxXKSBhcyBsb25nCi0tICAgICAgICAvLyBhbWFyb2sgbm90IHJlc3BlY3RzIFRyYWNrOjpp c1BsYXlhYmxlKCkKLS0gICAgICAgIC8qZWxzZSB7Ci0tCi0tICAgICAgICAgICAgTWV0YVByb3h5 OjpUcmFjayAqcHJveHlUcmFjayA9IG5ldyBNZXRhUHJveHk6OlRyYWNrKCB0cmFjay5sb2NhdGlv biApOwotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgLy9GaWxsIGluIHZhbHVlcyBm cm9tIHhzcGYuLgotLSAgICAgICAgICAgICAgICBRVmFyaWFudE1hcCBtYXA7Ci0tICAgICAgICAg ICAgICAgIG1hcC5pbnNlcnQoIE1ldGE6OkZpZWxkOjpUSVRMRSwgdHJhY2sudGl0bGUgKTsKLS0g ICAgICAgICAgICAgICAgbWFwLmluc2VydCggTWV0YTo6RmllbGQ6OkFMQlVNLCB0cmFjay5hbGJ1 bSApOwotLSAgICAgICAgICAgICAgICBtYXAuaW5zZXJ0KCBNZXRhOjpGaWVsZDo6QVJUSVNULCB0 cmFjay5jcmVhdG9yICk7Ci0tICAgICAgICAgICAgICAgIG1hcC5pbnNlcnQoIE1ldGE6OkZpZWxk OjpMRU5HVEgsIHRyYWNrLmR1cmF0aW9uICk7Ci0tICAgICAgICAgICAgICAgIG1hcC5pbnNlcnQo IE1ldGE6OkZpZWxkOjpUUkFDS05VTUJFUiwgdHJhY2sudHJhY2tOdW0gKTsKLS0gICAgICAgICAg ICAgICAgbWFwLmluc2VydCggTWV0YTo6RmllbGQ6OlVSTCwgdHJhY2subG9jYXRpb24gKTsKLS0g ICAgICAgICAgICAgICAgTWV0YTo6RmllbGQ6OnVwZGF0ZVRyYWNrKCBwcm94eVRyYWNrLCBtYXAg KTsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICAgICAgbV90cmFja3MgPDwgTWV0YTo6VHJhY2tQ dHIoIHByb3h5VHJhY2sgKTsKLS0gICAgLy8gICAgICAgICBtX3RyYWNrcyA8PCBDb2xsZWN0aW9u TWFuYWdlcjo6aW5zdGFuY2UoKS0+dHJhY2tGb3JVcmwoIHRyYWNrLmxvY2F0aW9uICk7Ci0tICAg ICAgICB9Ki8KLS0KLSsgICAgICAgTWV0YVByb3h5OjpUcmFjayAqcHJveHlUcmFjayA9IG5ldyBN ZXRhUHJveHk6OlRyYWNrKCB0cmFjay5sb2NhdGlvbiApOwotKyAgICAgICAvL0ZpbGwgaW4gdmFs dWVzIGZyb20geHNwZi4uCi0rICAgICAgIHByb3h5VHJhY2stPnNldE5hbWUoIHRyYWNrLnRpdGxl ICk7Ci0rICAgICAgIHByb3h5VHJhY2stPnNldEFsYnVtKCB0cmFjay5hbGJ1bSApOwotKyAgICAg ICBwcm94eVRyYWNrLT5zZXRBcnRpc3QoIHRyYWNrLmNyZWF0b3IgKTsKLSsgICAgICAgcHJveHlU cmFjay0+c2V0TGVuZ3RoKCB0cmFjay5kdXJhdGlvbiApOwotKyAgICAgICBwcm94eVRyYWNrLT5z ZXRUcmFja051bWJlciggdHJhY2sudHJhY2tOdW0gKTsKLSsgICAgICAgbV90cmFja3MgPDwgTWV0 YTo6VHJhY2tQdHIoIHByb3h5VHJhY2sgKTsKLSAgICAgfQotIAotICAgICBtX3RyYWNrc0xvYWRl ZCA9IHRydWU7Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvcmUvY29sbGVjdGlvbnMvc3VwcG9ydC9UcmFj a0ZvclVybFdvcmtlci5oIGIvc3JjL2NvcmUvY29sbGVjdGlvbnMvc3VwcG9ydC9UcmFja0ZvclVy bFdvcmtlci5oCi1pbmRleCA2NGQyM2JkLi4xNmQ3NjRlIDEwMDY0NAotLS0tIGEvc3JjL2NvcmUv Y29sbGVjdGlvbnMvc3VwcG9ydC9UcmFja0ZvclVybFdvcmtlci5oCi0rKysgYi9zcmMvY29yZS9j b2xsZWN0aW9ucy9zdXBwb3J0L1RyYWNrRm9yVXJsV29ya2VyLmgKLUBAIC0zNSwxNyArMzUsMTcg QEAgY2xhc3MgQU1BUk9LX0NPUkVfRVhQT1JUIFRyYWNrRm9yVXJsV29ya2VyIDogcHVibGljIFRo cmVhZFdlYXZlcjo6Sm9iCi0gewotICAgICBRX09CSkVDVAotIHB1YmxpYzoKLS0gICAgVHJhY2tG b3JVcmxXb3JrZXIgKCBjb25zdCBLVXJsICZ1cmwgKTsKLS0gICAgVHJhY2tGb3JVcmxXb3JrZXIg KCBjb25zdCBRU3RyaW5nICZ1cmwgKTsKLSsgICAgVHJhY2tGb3JVcmxXb3JrZXIoIGNvbnN0IEtV cmwgJnVybCApOwotKyAgICBUcmFja0ZvclVybFdvcmtlciggY29uc3QgUVN0cmluZyAmdXJsICk7 Ci0gICAgIH5UcmFja0ZvclVybFdvcmtlcigpOwotIAotLSAgICB2aXJ0dWFsIHZvaWQgcnVuICgp ID0gMDsKLSsgICAgdmlydHVhbCB2b2lkIHJ1bigpID0gMDsKLSBzaWduYWxzOgotLSAgICB2b2lk IGZpbmlzaGVkTG9va3VwICggY29uc3QgTWV0YTo6VHJhY2tQdHIgICZ0cmFjayApOwotKyAgICB2 b2lkIGZpbmlzaGVkTG9va3VwKCBjb25zdCBNZXRhOjpUcmFja1B0ciAmdHJhY2sgKTsKLSAKLSBw cm90ZWN0ZWQ6Ci0tICAgIEtVcmwgbVVybDsKLS0gICAgTWV0YTo6VHJhY2tQdHIgbVRyYWNrOwot KyAgICBLVXJsIG1fdXJsOwotKyAgICBNZXRhOjpUcmFja1B0ciBtX3RyYWNrOwotIAotIHByaXZh dGUgc2xvdHM6Ci0gICAgIHZvaWQgY29tcGxldGVKb2IoKTsKLWRpZmYgLS1naXQgYS9zcmMvY29y ZS9jb2xsZWN0aW9ucy9zdXBwb3J0L1RyYWNrRm9yVXJsV29ya2VyLmNwcCBiL3NyYy9jb3JlL2Nv bGxlY3Rpb25zL3N1cHBvcnQvVHJhY2tGb3JVcmxXb3JrZXIuY3BwCi1pbmRleCA3ZThmMjg5Li4y OGQ5MmJiIDEwMDY0NAotLS0tIGEvc3JjL2NvcmUvY29sbGVjdGlvbnMvc3VwcG9ydC9UcmFja0Zv clVybFdvcmtlci5jcHAKLSsrKyBiL3NyYy9jb3JlL2NvbGxlY3Rpb25zL3N1cHBvcnQvVHJhY2tG b3JVcmxXb3JrZXIuY3BwCi1AQCAtMTYsMTQgKzE2LDE4IEBACi0gCi0gI2luY2x1ZGUgIlRyYWNr Rm9yVXJsV29ya2VyLmgiCi0gCi0tQW1hcm9rOjpUcmFja0ZvclVybFdvcmtlcjo6VHJhY2tGb3JV cmxXb3JrZXIgKCBjb25zdCBLVXJsICZ1cmwgKSA6IFRocmVhZFdlYXZlcjo6Sm9iKCksIG1Vcmwg KCB1cmwgKQotK0FtYXJvazo6VHJhY2tGb3JVcmxXb3JrZXI6OlRyYWNrRm9yVXJsV29ya2VyKCBj b25zdCBLVXJsICZ1cmwgKQotKyAgICA6IFRocmVhZFdlYXZlcjo6Sm9iKCkKLSsgICAgLCBtX3Vy bCggdXJsICkKLSB7Ci0tICAgIGNvbm5lY3QgKCB0aGlzLCBTSUdOQUwgKCBkb25lICggVGhyZWFk V2VhdmVyOjpKb2IqICkgKSwgU0xPVCAoIGNvbXBsZXRlSm9iKCkgKSApOwotKyAgICBjb25uZWN0 KCB0aGlzLCBTSUdOQUwoZG9uZSggVGhyZWFkV2VhdmVyOjpKb2IgKiApKSwgU0xPVCggY29tcGxl dGVKb2IoKSkgKTsKLSB9Ci0gCi0tQW1hcm9rOjpUcmFja0ZvclVybFdvcmtlcjo6VHJhY2tGb3JV cmxXb3JrZXIoIGNvbnN0IFFTdHJpbmcgJnVybCApIDogVGhyZWFkV2VhdmVyOjpKb2IoKSwgbVVy bCAoIEtVcmwgKCB1cmwgKSApCi0rQW1hcm9rOjpUcmFja0ZvclVybFdvcmtlcjo6VHJhY2tGb3JV cmxXb3JrZXIoIGNvbnN0IFFTdHJpbmcgJnVybCApCi0rICAgIDogVGhyZWFkV2VhdmVyOjpKb2Io KQotKyAgICAsIG1fdXJsKCBLVXJsKCB1cmwgKSApCi0gewotLSAgICBjb25uZWN0ICggdGhpcywg U0lHTkFMICggZG9uZSAoIFRocmVhZFdlYXZlcjo6Sm9iKiApICksIFNMT1QgKCBjb21wbGV0ZUpv YigpICkgKTsKLSsgICAgY29ubmVjdCggdGhpcywgU0lHTkFMKGRvbmUoIFRocmVhZFdlYXZlcjo6 Sm9iICogKSksIFNMT1QoIGNvbXBsZXRlSm9iKCkpICk7Ci0gfQotIAotIEFtYXJvazo6VHJhY2tG b3JVcmxXb3JrZXI6On5UcmFja0ZvclVybFdvcmtlcigpCi1AQCAtMzIsNiArMzYsNiBAQCBBbWFy b2s6OlRyYWNrRm9yVXJsV29ya2VyOjp+VHJhY2tGb3JVcmxXb3JrZXIoKQotIHZvaWQKLSBBbWFy b2s6OlRyYWNrRm9yVXJsV29ya2VyOjpjb21wbGV0ZUpvYigpCi0gewotLSAgICBlbWl0ICggZmlu aXNoZWRMb29rdXAgKCBtVHJhY2sgKSApOwotKyAgICBlbWl0KCBmaW5pc2hlZExvb2t1cCggbV90 cmFjayApICk7Ci0gICAgIGRlbGV0ZUxhdGVyKCk7Ci0gfQotZGlmZiAtLWdpdCBhL3NyYy9zZXJ2 aWNlcy9hbXBhY2hlL0FtcGFjaGVTZXJ2aWNlQ29sbGVjdGlvbi5oIGIvc3JjL3NlcnZpY2VzL2Ft cGFjaGUvQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uLmgKLWluZGV4IGE0OGM4ZjIuLmNjNDk3NzUg MTAwNjQ0Ci0tLS0gYS9zcmMvc2VydmljZXMvYW1wYWNoZS9BbXBhY2hlU2VydmljZUNvbGxlY3Rp b24uaAotKysrIGIvc3JjL3NlcnZpY2VzL2FtcGFjaGUvQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9u LmgKLUBAIC0yNSwxNCArMjUsMTYgQEAgY2xhc3MgQW1wYWNoZVRyYWNrRm9yVXJsV29ya2VyIDog cHVibGljIEFtYXJvazo6VHJhY2tGb3JVcmxXb3JrZXIKLSB7Ci0gICAgIFFfT0JKRUNUCi0gICAg IHB1YmxpYzoKLS0gICAgICAgIEFtcGFjaGVUcmFja0ZvclVybFdvcmtlciggY29uc3QgS1VybCAm dXJsLCBNZXRhUHJveHk6OlRyYWNrUHRyIHRyYWNrLCBjb25zdCBRU3RyaW5nICZzZXJ2ZXIsIGNv bnN0IFFTdHJpbmcgJnNlc3Npb25JZCwgU2VydmljZUJhc2UqIHNlcnZpY2UpOwotKyAgICAgICAg QW1wYWNoZVRyYWNrRm9yVXJsV29ya2VyKCBjb25zdCBLVXJsICZ1cmwsIE1ldGFQcm94eTo6VHJh Y2tQdHIgdHJhY2ssCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFT dHJpbmcgJnNlcnZlciwgY29uc3QgUVN0cmluZyAmc2Vzc2lvbklkLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlQmFzZSAqc2VydmljZSk7Ci0gICAgICAgICB+QW1w YWNoZVRyYWNrRm9yVXJsV29ya2VyKCk7Ci0tICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuICgpOwot KyAgICAgICAgdmlydHVhbCB2b2lkIHJ1bigpOwotICAgICAgICAgdm9pZCBwYXJzZVRyYWNrKCBj b25zdCBRU3RyaW5nICZ4bWwgKTsKLSAgICAgc2lnbmFsczoKLSAgICAgICAgIHZvaWQgYXV0aGVu dGljYXRpb25OZWVkZWQoKTsKLSAgICAgcHJpdmF0ZToKLS0gICAgICAgIE1ldGFQcm94eTo6VHJh Y2tQdHIgbVByb3h5OwotKyAgICAgICAgTWV0YVByb3h5OjpUcmFja1B0ciBtX3Byb3h5OwotICAg ICAgICAgaW50IG1fdXJsVHJhY2tJZDsKLSAgICAgICAgIGludCBtX3VybEFsYnVtSWQ7Ci0gICAg ICAgICBpbnQgbV91cmxBcnRpc3RJZDsKLUBAIC00NCw3ICs0Niw3IEBAIGNsYXNzIEFtcGFjaGVU cmFja0ZvclVybFdvcmtlciA6IHB1YmxpYyBBbWFyb2s6OlRyYWNrRm9yVXJsV29ya2VyCi0gICAg ICAgICBRU3RyaW5nIG1fc2VydmVyOwotICAgICAgICAgUVN0cmluZyBtX3Nlc3Npb25JZDsKLSAK LS0gICAgICAgIFNlcnZpY2VCYXNlKiBtX3NlcnZpY2U7Ci0rICAgICAgICBTZXJ2aWNlQmFzZSAq bV9zZXJ2aWNlOwotIH07Ci0gCi0gbmFtZXNwYWNlIENvbGxlY3Rpb25zIHsKLUBAIC01OSwxMSAr NjEsMTIgQEAgY2xhc3MgQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uIDogcHVibGljIFNlcnZpY2VD b2xsZWN0aW9uCi0gICAgIFFfT0JKRUNUCi0gCi0gcHVibGljOgotLSAgICBBbXBhY2hlU2Vydmlj ZUNvbGxlY3Rpb24oIFNlcnZpY2VCYXNlICogc2VydmljZSwgY29uc3QgUVN0cmluZyAmc2VydmVy LCBjb25zdCBRU3RyaW5nICZzZXNzaW9uSWQgKTsKLSsgICAgQW1wYWNoZVNlcnZpY2VDb2xsZWN0 aW9uKCBTZXJ2aWNlQmFzZSAqc2VydmljZSwgY29uc3QgUVN0cmluZyAmc2VydmVyLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJnNlc3Npb25JZCApOwotIAot ICAgICB2aXJ0dWFsIH5BbXBhY2hlU2VydmljZUNvbGxlY3Rpb24oKTsKLSAKLS0gICAgdmlydHVh bCBRdWVyeU1ha2VyKiBxdWVyeU1ha2VyKCk7Ci0rICAgIHZpcnR1YWwgUXVlcnlNYWtlciAqcXVl cnlNYWtlcigpOwotIAotICAgICB2aXJ0dWFsIFFTdHJpbmcgY29sbGVjdGlvbklkKCkgY29uc3Q7 Ci0gICAgIHZpcnR1YWwgUVN0cmluZyBwcmV0dHlOYW1lKCkgY29uc3Q7Ci1AQCAtNzYsMTYgKzc5 LDEzIEBAIHNpZ25hbHM6Ci0gCi0gcHVibGljIHNsb3RzOgotICAgICB2b2lkIHNsb3RBdXRoZW50 aWNhdGlvbk5lZWRlZCgpOwotLSAgICB2b2lkIHNsb3RMb29rdXBDb21wbGV0ZSggY29uc3QgTWV0 YTo6VHJhY2tQdHImICk7Ci0rICAgIHZvaWQgc2xvdExvb2t1cENvbXBsZXRlKCBjb25zdCBNZXRh OjpUcmFja1B0ciAmICk7Ci0gCi0gcHJpdmF0ZToKLS0gICAgLyp2b2lkIHBhcnNlQWxidW0oIGNv bnN0IFFTdHJpbmcgJnhtbCApOwotLSAgICB2b2lkIHBhcnNlQXJ0aXN0KCBjb25zdCBRU3RyaW5n ICZ4bWwgKTsqLwotLQotICAgICBRU3RyaW5nIG1fc2VydmVyOwotICAgICBRU3RyaW5nIG1fc2Vz c2lvbklkOwotIAotLSAgICBBbXBhY2hlVHJhY2tGb3JVcmxXb3JrZXIgKiBtX3RyYWNrRm9yVXJs V29ya2VyOwotKyAgICBBbXBhY2hlVHJhY2tGb3JVcmxXb3JrZXIgKm1fdHJhY2tGb3JVcmxXb3Jr ZXI7Ci0gfTsKLSAKLSB9IC8vbmFtZXNwYWNlIENvbGxlY3Rpb25zCi0tLSAKLTEuNy41LjQKLQot ZGlmZiAtLWdpdCBhL3NyYy9zZXJ2aWNlcy9hbXBhY2hlL0FtcGFjaGVTZXJ2aWNlQ29sbGVjdGlv bi5jcHAgYi9zcmMvc2VydmljZXMvYW1wYWNoZS9BbXBhY2hlU2VydmljZUNvbGxlY3Rpb24uY3Bw Ci1pbmRleCBiNjg0ZTM0Li5jM2I1MTE1IDEwMDY0NAotLS0tIGEvc3JjL3NlcnZpY2VzL2FtcGFj aGUvQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uLmNwcAotKysrIGIvc3JjL3NlcnZpY2VzL2FtcGFj aGUvQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uLmNwcAotQEAgLTI3LDcgKzI3LDkgQEAKLSAKLSB1 c2luZyBuYW1lc3BhY2UgQ29sbGVjdGlvbnM7Ci0gCi0tQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9u OjpBbXBhY2hlU2VydmljZUNvbGxlY3Rpb24oIFNlcnZpY2VCYXNlICogc2VydmljZSwgY29uc3Qg UVN0cmluZyAmc2VydmVyLCBjb25zdCBRU3RyaW5nICZzZXNzaW9uSWQgKQotK0FtcGFjaGVTZXJ2 aWNlQ29sbGVjdGlvbjo6QW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uKCBTZXJ2aWNlQmFzZSAqc2Vy dmljZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgUVN0cmluZyAmc2VydmVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nICZzZXNzaW9uSWQgKQotICAgICA6 IFNlcnZpY2VDb2xsZWN0aW9uKCBzZXJ2aWNlLCAiQW1wYWNoZUNvbGxlY3Rpb24iLCAiQW1wYWNo ZUNvbGxlY3Rpb24iICkKLSAgICAgLCBtX3NlcnZlciggc2VydmVyICkKLSAgICAgLCBtX3Nlc3Np b25JZCggc2Vzc2lvbklkICkKLUBAIC01OCw3ICs2MCw3IEBAIEFtcGFjaGVTZXJ2aWNlQ29sbGVj dGlvbjo6cHJldHR5TmFtZSgpIGNvbnN0Ci0gfQotIAotIGJvb2wKLS1BbXBhY2hlU2VydmljZUNv bGxlY3Rpb246OnBvc3NpYmx5Q29udGFpbnNUcmFjayhjb25zdCBLVXJsICYgdXJsKSBjb25zdAot K0FtcGFjaGVTZXJ2aWNlQ29sbGVjdGlvbjo6cG9zc2libHlDb250YWluc1RyYWNrKCBjb25zdCBL VXJsICZ1cmwgKSBjb25zdAotIHsKLSAgICAgcmV0dXJuIHVybC51cmwoKS5jb250YWlucyggbV9z ZXJ2ZXIgKTsKLSB9Ci1AQCAtNzAsNzcgKzcyLDgyIEBAIEFtcGFjaGVTZXJ2aWNlQ29sbGVjdGlv bjo6c2xvdEF1dGhlbnRpY2F0aW9uTmVlZGVkKCkKLSB9Ci0gCi0gTWV0YTo6VHJhY2tQdHIKLS1B bXBhY2hlU2VydmljZUNvbGxlY3Rpb246OnRyYWNrRm9yVXJsKCBjb25zdCBLVXJsICYgdXJsICkK LStBbXBhY2hlU2VydmljZUNvbGxlY3Rpb246OnRyYWNrRm9yVXJsKCBjb25zdCBLVXJsICZ1cmwg KQotIHsKLS0gICAgTWV0YVByb3h5OjpUcmFjayogcHRyYWNrID0gbmV3IE1ldGFQcm94eTo6VHJh Y2soIHVybC51cmwoKSwgdHJ1ZSApOwotLSAgICBNZXRhUHJveHk6OlRyYWNrUHRyIHRyYWNrcHRy KHB0cmFjayk7Ci0tICAgIEFtcGFjaGVUcmFja0ZvclVybFdvcmtlciAqIHdvcmtlciA9ICBuZXcg QW1wYWNoZVRyYWNrRm9yVXJsV29ya2VyKHVybCwgdHJhY2twdHIsIG1fc2VydmVyLCBtX3Nlc3Np b25JZCwgc2VydmljZSgpICk7Ci0tLy8gICAgIGNvbm5lY3QoIHdvcmtlciwgU0lHTkFMKCBmaW5p c2hlZExvb2t1cCAoIGNvbnN0IE1ldGE6OlRyYWNrUHRyJiApICksIHRoaXMsCi0tLy8gICAgICAg ICAgICAgIFNMT1QoIHNsb3RMb29rdXBDb21wbGV0ZSggY29uc3QgTWV0YTo6VHJhY2tQdHImICkg KSApOwotLSAgICBjb25uZWN0KCB3b3JrZXIsIFNJR05BTCggYXV0aGVudGljYXRpb25OZWVkZWQo KSApLCB0aGlzLAotLSAgICAgICAgICAgICBTTE9UKCBzbG90QXV0aGVudGljYXRpb25OZWVkZWQo KSApICk7Ci0rICAgIE1ldGFQcm94eTo6VHJhY2sgKnB0cmFjayA9IG5ldyBNZXRhUHJveHk6OlRy YWNrKCB1cmwudXJsKCksIHRydWUgKTsKLSsgICAgTWV0YVByb3h5OjpUcmFja1B0ciB0cmFja3B0 ciggcHRyYWNrICk7Ci0rICAgIEFtcGFjaGVUcmFja0ZvclVybFdvcmtlciAqd29ya2VyID0gbmV3 IEFtcGFjaGVUcmFja0ZvclVybFdvcmtlciggdXJsLCB0cmFja3B0ciwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt X3NlcnZlciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtX3Nlc3Npb25JZCwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNl KCkgKTsKLSsgICAgY29ubmVjdCggd29ya2VyLCBTSUdOQUwoYXV0aGVudGljYXRpb25OZWVkZWQo KSksIFNMT1Qoc2xvdEF1dGhlbnRpY2F0aW9uTmVlZGVkKCkpICk7Ci0gICAgIFRocmVhZFdlYXZl cjo6V2VhdmVyOjppbnN0YW5jZSgpLT5lbnF1ZXVlKCB3b3JrZXIgKTsKLSAKLSAgICAgcmV0dXJu IE1ldGE6OlRyYWNrUHRyOjpzdGF0aWNDYXN0KCB0cmFja3B0ciApOwotIH0KLSsKLSB2b2lkIEFt cGFjaGVTZXJ2aWNlQ29sbGVjdGlvbjo6c2xvdExvb2t1cENvbXBsZXRlKCBjb25zdCBNZXRhOjpU cmFja1B0ciYgKQotIHsKLSB9Ci0gCi0gdm9pZCBBbXBhY2hlVHJhY2tGb3JVcmxXb3JrZXI6OnBh cnNlVHJhY2soIGNvbnN0IFFTdHJpbmcgJnhtbCApCi0gewotLS8vICAgICBERUJVR19CTE9DSwot LQotLS8vICAgICAgZGVidWcoKSA8PCAiUmVjZWl2ZWQgdHJhY2sgcmVzcG9uc2U6ICIgPDwgeG1s OwotLQotLSAgICAgLy9zbyBsZXRzIGZpZ3VyZSBvdXQgd2hhdCB3ZSBnb3QgaGVyZToKLSsgICAg Ly9zbyBsZXRzIGZpZ3VyZSBvdXQgd2hhdCB3ZSBnb3QgaGVyZToKLSAgICAgUURvbURvY3VtZW50 IGRvYyggInJlcGx5IiApOwotICAgICBkb2Muc2V0Q29udGVudCggeG1sICk7Ci0tICAgIFFEb21F bGVtZW50IHJvb3QgPSBkb2MuZmlyc3RDaGlsZEVsZW1lbnQoInJvb3QiKTsKLS0gICAgUURvbUVs ZW1lbnQgc29uZyA9IHJvb3QuZmlyc3RDaGlsZEVsZW1lbnQoInNvbmciKTsKLSsgICAgUURvbUVs ZW1lbnQgcm9vdCA9IGRvYy5maXJzdENoaWxkRWxlbWVudCggInJvb3QiICk7Ci0rICAgIFFEb21F bGVtZW50IHNvbmcgPSByb290LmZpcnN0Q2hpbGRFbGVtZW50KCAic29uZyIgKTsKLSAKLS0gICAg bV91cmxUcmFja0lkID0gc29uZy5hdHRyaWJ1dGUoICJpZCIsICIwIikudG9JbnQoKTsKLSsgICAg bV91cmxUcmFja0lkID0gc29uZy5hdHRyaWJ1dGUoICJpZCIsICIwIiApLnRvSW50KCk7Ci0gCi0t ICAgIFFEb21FbGVtZW50IGVsZW1lbnQgPSBzb25nLmZpcnN0Q2hpbGRFbGVtZW50KCJ0aXRsZSIp OwotKyAgICBRRG9tRWxlbWVudCBlbGVtZW50ID0gc29uZy5maXJzdENoaWxkRWxlbWVudCggInRp dGxlIiApOwotIAotICAgICBRU3RyaW5nIHRpdGxlID0gZWxlbWVudC50ZXh0KCk7Ci0gICAgIGlm ICggdGl0bGUuaXNFbXB0eSgpICkgdGl0bGUgPSAiVW5rbm93biI7Ci0gCi0tICAgIGVsZW1lbnQg PSBzb25nLmZpcnN0Q2hpbGRFbGVtZW50KCJ1cmwiKTsKLSsgICAgZWxlbWVudCA9IHNvbmcuZmly c3RDaGlsZEVsZW1lbnQoICJ1cmwiICk7Ci0gCi0gICAgIG1fdXJsVHJhY2sgPSBuZXcgTWV0YTo6 QW1wYWNoZVRyYWNrKCB0aXRsZSwgbV9zZXJ2aWNlICk7Ci0gICAgIE1ldGE6OlRyYWNrUHRyIHRy YWNrUHRyKCBtX3VybFRyYWNrICk7Ci0gCi0tICAgIC8vZGVidWcoKSA8PCAiQWRkaW5nIHRyYWNr OiAiIDw8ICB0aXRsZTsKLSAgICAgbV91cmxUcmFjay0+c2V0VWlkVXJsKCBlbGVtZW50LnRleHQo KSApOwotICAgICBtX3VybFRyYWNrLT5zZXRJZCggbV91cmxUcmFja0lkICk7Ci0gCi0tICAgIGVs ZW1lbnQgPSBzb25nLmZpcnN0Q2hpbGRFbGVtZW50KCJ0aW1lIik7Ci0rICAgIGVsZW1lbnQgPSBz b25nLmZpcnN0Q2hpbGRFbGVtZW50KCAidGltZSIgKTsKLSAgICAgbV91cmxUcmFjay0+c2V0TGVu Z3RoKCBlbGVtZW50LnRleHQoKS50b0ludCgpICogMTAwMCApOwotIAotLSAgICBlbGVtZW50ID0g c29uZy5maXJzdENoaWxkRWxlbWVudCgidHJhY2siKTsKLSsgICAgZWxlbWVudCA9IHNvbmcuZmly c3RDaGlsZEVsZW1lbnQoICJ0cmFjayIgKTsKLSAgICAgbV91cmxUcmFjay0+c2V0VHJhY2tOdW1i ZXIoIGVsZW1lbnQudGV4dCgpLnRvSW50KCkgKTsKLSAKLS0gICAgUURvbUVsZW1lbnQgYWxidW1F bGVtZW50ID0gc29uZy5maXJzdENoaWxkRWxlbWVudCgiYWxidW0iKTsKLS0gICAgLy9tX3VybEFs YnVtSWQgPSBhbGJ1bUVsZW1lbnQuYXR0cmlidXRlKCAiaWQiLCAiMCIpLnRvSW50KCk7Ci0rICAg IFFEb21FbGVtZW50IGFsYnVtRWxlbWVudCA9IHNvbmcuZmlyc3RDaGlsZEVsZW1lbnQoICJhbGJ1 bSIgKTsKLSsgICAgbV91cmxBbGJ1bUlkID0gYWxidW1FbGVtZW50LmF0dHJpYnV0ZSggImlkIiwg IjAiICkudG9JbnQoKTsKLSAKLS0gICAgTWV0YTo6QW1wYWNoZUFsYnVtICogYWxidW0gPSBuZXcg TWV0YTo6QW1wYWNoZUFsYnVtKCBhbGJ1bUVsZW1lbnQudGV4dCgpICk7Ci0rICAgIE1ldGE6OkFt cGFjaGVBbGJ1bSAqYWxidW0gPSBuZXcgTWV0YTo6QW1wYWNoZUFsYnVtKCBhbGJ1bUVsZW1lbnQu dGV4dCgpICk7Ci0gCi0tICAgIFFEb21FbGVtZW50IGFydEVsZW1lbnQgPSBzb25nLmZpcnN0Q2hp bGRFbGVtZW50KCJhcnQiKTsKLSsgICAgUURvbUVsZW1lbnQgYXJ0RWxlbWVudCA9IHNvbmcuZmly c3RDaGlsZEVsZW1lbnQoICJhcnQiICk7Ci0gICAgIGFsYnVtLT5zZXRDb3ZlclVybCggYXJ0RWxl bWVudC50ZXh0KCkgKTsKLSAKLSAgICAgYWxidW0tPmFkZFRyYWNrKCB0cmFja1B0ciApOwotICAg ICBtX3VybFRyYWNrLT5zZXRBbGJ1bVB0ciggTWV0YTo6QWxidW1QdHIoIGFsYnVtICkgKTsKLSAK LS0gICAgUURvbUVsZW1lbnQgYXJ0aXN0RWxlbWVudCA9IHNvbmcuZmlyc3RDaGlsZEVsZW1lbnQo ImFydGlzdCIpOwotLSAgICBNZXRhOjpTZXJ2aWNlQXJ0aXN0ICogYXJ0aXN0ID0gbmV3IE1ldGE6 OlNlcnZpY2VBcnRpc3QoIGFydGlzdEVsZW1lbnQudGV4dCgpICk7Ci0rICAgIFFEb21FbGVtZW50 IGFydGlzdEVsZW1lbnQgPSBzb25nLmZpcnN0Q2hpbGRFbGVtZW50KCAiYXJ0aXN0IiApOwotKyAg ICBNZXRhOjpTZXJ2aWNlQXJ0aXN0ICphcnRpc3QgPSBuZXcgTWV0YTo6U2VydmljZUFydGlzdCgg YXJ0aXN0RWxlbWVudC50ZXh0KCkgKTsKLSAKLSAgICAgTWV0YTo6QXJ0aXN0UHRyIGFydGlzdFB0 ciggYXJ0aXN0ICk7Ci0gICAgIG1fdXJsVHJhY2stPnNldEFydGlzdCggYXJ0aXN0UHRyICk7Ci0g ICAgIGFsYnVtLT5zZXRBbGJ1bUFydGlzdCggYXJ0aXN0UHRyICk7Ci0gfQotIAotLUFtcGFjaGVU cmFja0ZvclVybFdvcmtlcjo6QW1wYWNoZVRyYWNrRm9yVXJsV29ya2VyKGNvbnN0IEtVcmwgJnVy bCwgTWV0YVByb3h5OjpUcmFja1B0ciB0cmFjaywgY29uc3QgUVN0cmluZyAmc2VydmVyLCBjb25z dCBRU3RyaW5nICZzZXNzaW9uSWQsIFNlcnZpY2VCYXNlKiBzZXJ2aWNlKSA6IEFtYXJvazo6VHJh Y2tGb3JVcmxXb3JrZXIodXJsKSwgbVByb3h5KHRyYWNrKSwgbV9zZXJ2ZXIoc2VydmVyKSwgbV9z ZXNzaW9uSWQoc2Vzc2lvbklkKSwgbV9zZXJ2aWNlKHNlcnZpY2UpCi0rQW1wYWNoZVRyYWNrRm9y VXJsV29ya2VyOjpBbXBhY2hlVHJhY2tGb3JVcmxXb3JrZXIoIGNvbnN0IEtVcmwgJnVybCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0YVBy b3h5OjpUcmFja1B0ciB0cmFjaywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmc2VydmVyLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nICZzZXNz aW9uSWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNlcnZpY2VCYXNlICpzZXJ2aWNlICkKLSsgICAgOiBBbWFyb2s6OlRyYWNrRm9yVXJsV29y a2VyKCB1cmwgKQotKyAgICAsIG1fcHJveHkoIHRyYWNrICkKLSsgICAgLCBtX3NlcnZlciggc2Vy dmVyICkKLSsgICAgLCBtX3Nlc3Npb25JZCggc2Vzc2lvbklkICkKLSsgICAgLCBtX3NlcnZpY2Uo IHNlcnZpY2UgKQotIHsKLSB9Ci0gCi1AQCAtMTUwLDggKzE1Nyw2IEBAIEFtcGFjaGVUcmFja0Zv clVybFdvcmtlcjo6fkFtcGFjaGVUcmFja0ZvclVybFdvcmtlcigpCi0gdm9pZAotIEFtcGFjaGVU cmFja0ZvclVybFdvcmtlcjo6cnVuKCkKLSB7Ci0tICAgIC8vIERFQlVHX0JMT0NLOwotLQotICAg ICBtX3VybFRyYWNrID0gMDsKLSAgICAgbV91cmxBbGJ1bSA9IDA7Ci0gICAgIG1fdXJsQXJ0aXN0 ID0gMDsKLUBAIC0xNjIsOSArMTY3LDkgQEAgQW1wYWNoZVRyYWNrRm9yVXJsV29ya2VyOjpydW4o KQotIAotICAgICAvL3NlbmQgdXJsX3RvX3NvbmcgdG8gQW1wYWNoZQotIAotLSAgICBRU3RyaW5n IHJlcXVlc3RVcmwgPSBRU3RyaW5nKCAiJTEvc2VydmVyL3htbC5zZXJ2ZXIucGhwP2FjdGlvbj11 cmxfdG9fc29uZyZhdXRoPSUyJnVybD0lMyIpCi0tICAgIC4gYXJnKCAgbV9zZXJ2ZXIsICBtX3Nl c3Npb25JZCwgIFFVcmw6OnRvUGVyY2VudEVuY29kaW5nKCBtVXJsLnVybCgpICkgKTsKLS0gICAg Ly8gICAgIGRlYnVnKCkgPDwgInJlcXVlc3QgdXJsOiAiIDw8IHJlcXVlc3RVcmw7Ci0rICAgIFFT dHJpbmcgcmVxdWVzdFVybCA9Ci0rICAgICAgICAgICAgUVN0cmluZyggIiUxL3NlcnZlci94bWwu c2VydmVyLnBocD9hY3Rpb249dXJsX3RvX3NvbmcmYXV0aD0lMiZ1cmw9JTMiICkKLSsgICAgICAg ICAgICAgICAgICAgIC5hcmcoIG1fc2VydmVyLCBtX3Nlc3Npb25JZCwgUVVybDo6dG9QZXJjZW50 RW5jb2RpbmcoIG1fdXJsLnVybCgpICkgKTsKLSAKLSAgICAgUU5ldHdvcmtSZXF1ZXN0IHJlcSgg cmVxdWVzdFVybCApOwotICAgICBRTmV0d29ya1JlcGx5ICpyZXBseSA9IFRoZTo6bmV0d29ya0Fj Y2Vzc01hbmFnZXIoKS0+Z2V0KCByZXEgKTsKLUBAIC0xNzgsNyArMTgzLDcgQEAgQW1wYWNoZVRy YWNrRm9yVXJsV29ya2VyOjpydW4oKQotICAgICAgICAgfQotICAgICB9Ci0gICAgIHBhcnNlVHJh Y2soIHJlcGx5LT5yZWFkQWxsKCkgKTsKLS0gICAgbVRyYWNrID0gTWV0YTo6VHJhY2tQdHIoIG1f dXJsVHJhY2sgKTsKLS0gICAgbVByb3h5LT51cGRhdGVUcmFjayggbVRyYWNrICk7Ci0rICAgIG1f dHJhY2sgPSBNZXRhOjpUcmFja1B0ciggbV91cmxUcmFjayApOwotKyAgICBtX3Byb3h5LT51cGRh dGVUcmFjayggbV90cmFjayApOwotICAgICByZXBseS0+ZGVsZXRlTGF0ZXIoKTsKLSB9CgpkaWZm IC0tZ2l0IGEvYW1hcm9rLTIuNS4wLXByb3h5X2xvYWRpbmcucGF0Y2ggYi9hbWFyb2stMi41LjAt cHJveHlfbG9hZGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42 N2EyZjMxCi0tLSAvZGV2L251bGwKKysrIGIvYW1hcm9rLTIuNS4wLXByb3h5X2xvYWRpbmcucGF0 Y2gKQEAgLTAsMCArMSwxMTY3IEBACitkaWZmIC0tZ2l0IGEvc3JjL0NNYWtlTGlzdHMudHh0IGIv c3JjL0NNYWtlTGlzdHMudHh0CitpbmRleCA2ZTU5MGU4Li45NTZiM2RhIDEwMDY0NAorLS0tIGEv c3JjL0NNYWtlTGlzdHMudHh0CisrKysgYi9zcmMvQ01ha2VMaXN0cy50eHQKK0BAIC0yODQsNiAr Mjg0LDcgQEAgc2V0KGxpYm1ldGFpbXBsX1NSQ1MKKyAgICAgY29yZS1pbXBsL21ldGEvbXVsdGkv TXVsdGlUcmFjay5jcHAKKyAgICAgY29yZS1pbXBsL21ldGEvY3VlL0N1ZUZpbGVTdXBwb3J0LmNw cAorICAgICBjb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHkuY3BwCisrICAgIGNvcmUtaW1w bC9tZXRhL3Byb3h5L01ldGFQcm94eVdvcmtlci5jcHAKKyAgICAgY29yZS1pbXBsL21ldGEvc3Ry ZWFtL1N0cmVhbS5jcHAKKyAgICAgY29yZS1pbXBsL3BsYXlsaXN0cy90eXBlcy9maWxlL1BsYXls aXN0RmlsZS5jcHAKKyAgICAgY29yZS1pbXBsL3N0YXRpc3RpY3MvcHJvdmlkZXJzL3VybC9QZXJt YW5lbnRVcmxTdGF0aXN0aWNzUHJvdmlkZXIuY3BwCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUtaW1w bC9jb2xsZWN0aW9ucy9zdXBwb3J0L0NvbGxlY3Rpb25NYW5hZ2VyLmNwcCBiL3NyYy9jb3JlLWlt cGwvY29sbGVjdGlvbnMvc3VwcG9ydC9Db2xsZWN0aW9uTWFuYWdlci5jcHAKK2luZGV4IDM3ZmUw M2EuLjkwODViNWEgMTAwNjQ0CistLS0gYS9zcmMvY29yZS1pbXBsL2NvbGxlY3Rpb25zL3N1cHBv cnQvQ29sbGVjdGlvbk1hbmFnZXIuY3BwCisrKysgYi9zcmMvY29yZS1pbXBsL2NvbGxlY3Rpb25z L3N1cHBvcnQvQ29sbGVjdGlvbk1hbmFnZXIuY3BwCitAQCAtNDYzLDYgKzQ2Myw3IEBAIENvbGxl Y3Rpb25NYW5hZ2VyOjp0cmFja0ZvclVybCggY29uc3QgS1VybCAmdXJsICkKKyAgICAgICAgIH0K KyAgICAgfQorIAorKyAgICAvL1RPRE86IGNyZWF0ZSBzcGVjaWZpYyBUcmFja1Byb3ZpZGVycyBm b3IgdGhlc2U6CisgICAgIGlmKCB1cmwucHJvdG9jb2woKSA9PSBRTGF0aW4xU3RyaW5nKCJodHRw IikgfHwgdXJsLnByb3RvY29sKCkgPT0gUUxhdGluMVN0cmluZygibW1zIikgfHwKKyAgICAgICAg IHVybC5wcm90b2NvbCgpID09IFFMYXRpbjFTdHJpbmcoInNtYiIpICkKKyAgICAgICAgIHJldHVy biBNZXRhOjpUcmFja1B0ciggbmV3IE1ldGFTdHJlYW06OlRyYWNrKCB1cmwgKSApOworZGlmZiAt LWdpdCBhL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHkuaCBiL3NyYy9jb3JlLWlt cGwvbWV0YS9wcm94eS9NZXRhUHJveHkuaAoraW5kZXggZDgzMjliZS4uMDYwMjIzZiAxMDA2NDQK Ky0tLSBhL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHkuaAorKysrIGIvc3JjL2Nv cmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eS5oCitAQCAtMTcsNiArMTcsOCBAQAorICNpZm5k ZWYgQU1BUk9LX01FVEFQUk9YWV9ICisgI2RlZmluZSBBTUFST0tfTUVUQVBST1hZX0gKKyAKKysj aW5jbHVkZSAiTWV0YVByb3h5V29ya2VyLmgiCisrCisgI2luY2x1ZGUgImNvcmUvbWV0YS9NZXRh LmgiCisgI2luY2x1ZGUgImNvcmUvY2FwYWJpbGl0aWVzL0NhcGFiaWxpdHkuaCIKKyAKK0BAIC04 Miw2ICs4NCw3IEBAIG5hbWVzcGFjZSBNZXRhUHJveHkKKyAgICAgICAgICAgICB2aXJ0dWFsIHZv aWQgc2V0RGlzY051bWJlciggaW50IGRpc2NOdW1iZXIgKTsKKyAKKyAgICAgICAgICAgICB2aXJ0 dWFsIHFpbnQ2NCBsZW5ndGgoKSBjb25zdDsKKysgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0 TGVuZ3RoKCBxaW50NjQgbGVuZ3RoICk7CisgICAgICAgICAgICAgdmlydHVhbCBpbnQgZmlsZXNp emUoKSBjb25zdDsKKyAgICAgICAgICAgICB2aXJ0dWFsIGludCBzYW1wbGVSYXRlKCkgY29uc3Q7 CisgICAgICAgICAgICAgdmlydHVhbCBpbnQgYml0cmF0ZSgpIGNvbnN0OworQEAgLTExMCwxMSAr MTEzLDEyIEBAIG5hbWVzcGFjZSBNZXRhUHJveHkKKyAJCSAqIGFsbG93cyBzdWJjbGFzc2VzIHRv IGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0cmFja3Byb3ZpZGVyIHdoaWNoIHdpbGwgb25seSBjaGVj ayB0aGUgVHJhY2tQcm92aWRlcgorIAkJICogcGFzc2VkIHRvIGxvb2t1cFRyYWNrKFRyYWNrUHJv dmlkZXIqKSBmb3IgdGhlIHJlYWwgdHJhY2suCisgCQkgKi8KKy0JCVRyYWNrKCBjb25zdCBLVXJs ICZ1cmwsIGJvb2wgYXdhaXRMb29rdXBOb3RpZmljYXRpb24pOworKyAgICAgICAgVHJhY2soIGNv bnN0IEtVcmwgJnVybCwgYm9vbCBhd2FpdExvb2t1cE5vdGlmaWNhdGlvbiApOworKworIAkJLyoq CisgCQkgKiBNZXRhUHJveHkgd2lsbCBjaGVjayB0aGUgZ2l2ZW4gdHJhY2twcm92aWRlciBpZiBp dCBjYW4gcHJvdmlkZSB0aGUgdHJhY2sgZm9yIHRoZSBwcm94eSdzIHVybC4KKyAJCSAqLworLQkJ dm9pZCBsb29rdXBUcmFjayhDb2xsZWN0aW9uczo6VHJhY2tQcm92aWRlciAqcHJvdmlkZXIpOwor KyAgICAgICAgdm9pZCBsb29rdXBUcmFjayggQ29sbGVjdGlvbnM6OlRyYWNrUHJvdmlkZXIgKnBy b3ZpZGVyICk7CisgCisgICAgICAgICAvKioKKyAgICAgICAgICAqIE1ldGFQcm94eSB3aWxsIHVw ZGF0ZSB0aGUgcHJveHkgd2l0aCB0aGUgdHJhY2suCitAQCAtMTIzLDcgKzEyNyw3IEBAIG5hbWVz cGFjZSBNZXRhUHJveHkKKyAKKyAgICAgICAgIHByaXZhdGU6CisgCQkJdm9pZCBpbml0KCBjb25z dCBLVXJsICZ1cmwsIGJvb2wgYXdhaXRMb29rdXBOb3RpZmljYXRpb24gKTsKKy0gICAgICAgICAg ICBQcml2YXRlICogY29uc3QgZDsKKysgICAgICAgICAgICBQcml2YXRlICpjb25zdCBkOworICAg ICB9OworIAorIH0KK2RpZmYgLS1naXQgYS9zcmMvY29yZS1pbXBsL21ldGEvcHJveHkvTWV0YVBy b3h5LmNwcCBiL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHkuY3BwCitpbmRleCBk MTU3N2EyLi42YTI3ZjBlIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01l dGFQcm94eS5jcHAKKysrKyBiL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHkuY3Bw CitAQCAtMTcsNiArMTcsNyBAQAorICNpbmNsdWRlICJjb3JlLWltcGwvbWV0YS9wcm94eS9NZXRh UHJveHkuaCIKKyAjaW5jbHVkZSAiY29yZS1pbXBsL21ldGEvcHJveHkvTWV0YVByb3h5X3AuaCIK KyAjaW5jbHVkZSAiY29yZS1pbXBsL21ldGEvcHJveHkvTWV0YVByb3h5X3AubW9jIgorKyNpbmNs dWRlICJjb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHlXb3JrZXIuaCIKKyAKKyAjaW5jbHVk ZSAiY29yZS9jYXBhYmlsaXRpZXMvRWRpdENhcGFiaWxpdHkuaCIKKyAKK0BAIC0yNyw2ICsyOCw3 IEBACisgI2luY2x1ZGUgPFFUaW1lcj4KKyAKKyAjaW5jbHVkZSA8S1NoYXJlZFB0cj4KKysjaW5j bHVkZSA8dGhyZWFkd2VhdmVyL1RocmVhZFdlYXZlci5oPgorIAorIHVzaW5nIG5hbWVzcGFjZSBN ZXRhUHJveHk7CisgCitAQCAtODMsMTggKzg1LDIwIEBAIE1ldGFQcm94eTo6VHJhY2s6OmluaXQo IGNvbnN0IEtVcmwgJnVybCwgYm9vbCBhd2FpdExvb2t1cE5vdGlmaWNhdGlvbiApCisgCWQtPnVy bCA9IHVybDsKKyAgICAgZC0+cHJveHkgPSB0aGlzOworICAgICBkLT5jYWNoZWRMZW5ndGggPSAw OworLQorLQlpZiggIWF3YWl0TG9va3VwTm90aWZpY2F0aW9uICkKKy0gICAgeworLSAgICAgICAg UU9iamVjdDo6Y29ubmVjdCggQ29sbGVjdGlvbk1hbmFnZXI6Omluc3RhbmNlKCksIFNJR05BTCgg dHJhY2tQcm92aWRlckFkZGVkKCBDb2xsZWN0aW9uczo6VHJhY2tQcm92aWRlciogKSApLCBkLCBT TE9UKCBzbG90TmV3VHJhY2tQcm92aWRlciggQ29sbGVjdGlvbnM6OlRyYWNrUHJvdmlkZXIqICkg KSApOworLSAgICAgICAgUU9iamVjdDo6Y29ubmVjdCggQ29sbGVjdGlvbk1hbmFnZXI6Omluc3Rh bmNlKCksIFNJR05BTCggY29sbGVjdGlvbkFkZGVkKCBDb2xsZWN0aW9uczo6Q29sbGVjdGlvbiog KSApLCBkLCBTTE9UKCBzbG90TmV3Q29sbGVjdGlvbiggQ29sbGVjdGlvbnM6OkNvbGxlY3Rpb24q ICkgKSApOworLSAgICB9CistCisgICAgIGQtPmFsYnVtUHRyID0gTWV0YTo6QWxidW1QdHIoIG5l dyBQcm94eUFsYnVtKCBkICkgKTsKKyAgICAgZC0+YXJ0aXN0UHRyID0gTWV0YTo6QXJ0aXN0UHRy KCBuZXcgUHJveHlBcnRpc3QoIGQgKSApOworICAgICBkLT5nZW5yZVB0ciA9IE1ldGE6OkdlbnJl UHRyKCBuZXcgUHJveHlHZW5yZSggZCApICk7CisgICAgIGQtPmNvbXBvc2VyUHRyID0gTWV0YTo6 Q29tcG9zZXJQdHIoIG5ldyBQcm94eUNvbXBvc2VyKCBkICkgKTsKKyAgICAgZC0+eWVhclB0ciA9 IE1ldGE6OlllYXJQdHIoIG5ldyBQcm94eVllYXIoIGQgKSApOworKworKyAgICBpZiggIWF3YWl0 TG9va3VwTm90aWZpY2F0aW9uICkKKysgICAgeworKyAgICAgICAgV29ya2VyICp3b3JrZXIgPSBu ZXcgV29ya2VyKCBkLT51cmwgKTsKKysgICAgICAgIFFPYmplY3Q6OmNvbm5lY3QoIHdvcmtlciwg U0lHTkFMKGZpbmlzaGVkTG9va3VwKCBjb25zdCBNZXRhOjpUcmFja1B0ciAmICkpLAorKyAgICAg ICAgICAgICAgICBkLCBTTE9UKHNsb3RVcGRhdGVUcmFjayhNZXRhOjpUcmFja1B0cikpICk7Cisr CisrICAgICAgICBUaHJlYWRXZWF2ZXI6OldlYXZlcjo6aW5zdGFuY2UoKS0+ZW5xdWV1ZSggd29y a2VyICk7CisrICAgIH0KKyB9CisgCisgTWV0YVByb3h5OjpUcmFjazo6flRyYWNrKCkKK0BAIC0z NDUsNiArMzQ5LDEyIEBAIE1ldGFQcm94eTo6VHJhY2s6Omxlbmd0aCgpIGNvbnN0CisgICAgIHJl dHVybiBkLT5jYWNoZWRMZW5ndGg7CisgfQorIAorK3ZvaWQKKytNZXRhUHJveHk6OlRyYWNrOjpz ZXRMZW5ndGgoIHFpbnQ2NCBsZW5ndGggKQorK3sKKysgICAgZC0+Y2FjaGVkTGVuZ3RoID0gbGVu Z3RoOworK30KKysKKyBpbnQKKyBNZXRhUHJveHk6OlRyYWNrOjpmaWxlc2l6ZSgpIGNvbnN0Cisg eworQEAgLTQyNCw3ICs0MzQsNyBAQCBNZXRhUHJveHk6OlRyYWNrOjppbkNvbGxlY3Rpb24oKSBj b25zdAorICAgICByZXR1cm4gZmFsc2U7CisgfQorIAorLUNvbGxlY3Rpb25zOjpDb2xsZWN0aW9u KgorK0NvbGxlY3Rpb25zOjpDb2xsZWN0aW9uICoKKyBNZXRhUHJveHk6OlRyYWNrOjpjb2xsZWN0 aW9uKCkgY29uc3QKKyB7CisgICAgIGlmKCBkLT5yZWFsVHJhY2sgKQorQEAgLTQ1MCw3ICs0NjAs MTEgQEAgTWV0YVByb3h5OjpUcmFjazo6dW5zdWJzY3JpYmUoIE1ldGE6Ok9ic2VydmVyICpvYnNl cnZlciApCisgdm9pZAorIE1ldGFQcm94eTo6VHJhY2s6Omxvb2t1cFRyYWNrKCBDb2xsZWN0aW9u czo6VHJhY2tQcm92aWRlciAqcHJvdmlkZXIgKQorIHsKKy0JZC0+c2xvdE5ld1RyYWNrUHJvdmlk ZXIoIHByb3ZpZGVyICk7CisrICAgIGlmKCBwcm92aWRlci0+cG9zc2libHlDb250YWluc1RyYWNr KCBkLT51cmwgKSApCisrICAgIHsKKysgICAgICAgIE1ldGE6OlRyYWNrUHRyIHRyYWNrID0gcHJv dmlkZXItPnRyYWNrRm9yVXJsKCBkLT51cmwgKTsKKysgICAgICAgIGQtPnNsb3RVcGRhdGVUcmFj ayggdHJhY2sgKTsKKysgICAgfQorIH0KKyAKKyB2b2lkCitAQCAtNDcwLDcgKzQ4NCw3IEBAIE1l dGFQcm94eTo6VHJhY2s6Omhhc0NhcGFiaWxpdHlJbnRlcmZhY2UoIENhcGFiaWxpdGllczo6Q2Fw YWJpbGl0eTo6VHlwZSB0eXBlICkKKyAgICAgcmV0dXJuIGZhbHNlOworIH0KKyAKKy1DYXBhYmls aXRpZXM6OkNhcGFiaWxpdHkqCisrQ2FwYWJpbGl0aWVzOjpDYXBhYmlsaXR5ICoKKyBNZXRhUHJv eHk6OlRyYWNrOjpjcmVhdGVDYXBhYmlsaXR5SW50ZXJmYWNlKCBDYXBhYmlsaXRpZXM6OkNhcGFi aWxpdHk6OlR5cGUgdHlwZSApCisgeworICAgICBpZiggZC0+cmVhbFRyYWNrICkKK0BAIC00ODQs NyArNDk4LDcgQEAgTWV0YVByb3h5OjpUcmFjazo6Y3JlYXRlQ2FwYWJpbGl0eUludGVyZmFjZSgg Q2FwYWJpbGl0aWVzOjpDYXBhYmlsaXR5OjpUeXBlIHR5cGUKKyBib29sCisgTWV0YVByb3h5OjpU cmFjazo6b3BlcmF0b3I9PSggY29uc3QgTWV0YTo6VHJhY2sgJnRyYWNrICkgY29uc3QKKyB7Cist ICAgIGNvbnN0IE1ldGFQcm94eTo6VHJhY2sgKnByb3h5ID0gZHluYW1pY19jYXN0PGNvbnN0IE1l dGFQcm94eTo6VHJhY2sqPiggJnRyYWNrICk7CisrICAgIGNvbnN0IE1ldGFQcm94eTo6VHJhY2sg KnByb3h5ID0gZHluYW1pY19jYXN0PGNvbnN0IE1ldGFQcm94eTo6VHJhY2sgKj4oICZ0cmFjayAp OworICAgICBpZiggcHJveHkgJiYgZC0+cmVhbFRyYWNrICkKKyAgICAgICAgIHJldHVybiBkLT5y ZWFsVHJhY2sgPT0gcHJveHktPmQtPnJlYWxUcmFjazsKKyAgICAgZWxzZSBpZiggcHJveHkgKQor ZGlmZiAtLWdpdCBhL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHlXb3JrZXIuaCBi L3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHlXb3JrZXIuaAorbmV3IGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjU1N2YyOWQKKy0tLSAvZGV2L251bGwKKysrKyBiL3Ny Yy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHlXb3JrZXIuaAorQEAgLTAsMCArMSw0MiBA QAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrICogQ29weXJpZ2h0IChjKSAy MDEyIEJhcnQgQ2VybmVlbHMgPGJhcnQuY2VybmVlbHNAa2RlLm9yZz4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5IGl0IHVuZGVyICAgICAgICAqCisrICogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgICAg ICAgICoKKysgKiBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciAgICAgICAgICAgKgorKyAqIHZlcnNpb24uICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysg KiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZICAgICAgKgorKyAqIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgICAgICAqCisrICogUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICoKKysgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKgorKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGggICAgICAgICAq CisrICogdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKysKKysjaWZuZGVmIE1FVEFQUk9YWV9NRVRBUFJPWFlXT1JLRVJfSAor KyNkZWZpbmUgTUVUQVBST1hZX01FVEFQUk9YWVdPUktFUl9ICisrCisrI2luY2x1ZGUgPGNvcmUv Y29sbGVjdGlvbnMvc3VwcG9ydC9UcmFja0ZvclVybFdvcmtlci5oPgorKyNpbmNsdWRlIDxjb3Jl L2NvbGxlY3Rpb25zL0NvbGxlY3Rpb24uaD4KKysKKytuYW1lc3BhY2UgTWV0YVByb3h5IHsKKysK KytjbGFzcyBXb3JrZXIgOiBwdWJsaWMgQW1hcm9rOjpUcmFja0ZvclVybFdvcmtlcgorK3sKKysg ICAgUV9PQkpFQ1QKKysgICAgcHVibGljOgorKyAgICAgICAgZXhwbGljaXQgV29ya2VyKCBjb25z dCBLVXJsICZ1cmwgKTsKKysKKysgICAgICAgIC8vVHJhY2tGb3JVcmxXb3JrZXIgdmlydHVhbCBt ZXRob2RzCisrICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuKCk7CisrCisrICAgIHByaXZhdGUgc2xv dHM6CisrICAgICAgICB2b2lkIHNsb3ROZXdUcmFja1Byb3ZpZGVyKCBDb2xsZWN0aW9uczo6VHJh Y2tQcm92aWRlciAqbmV3VHJhY2tQcm92aWRlciApOworKyAgICAgICAgdm9pZCBzbG90TmV3Q29s bGVjdGlvbiggQ29sbGVjdGlvbnM6OkNvbGxlY3Rpb24gKm5ld0NvbGxlY3Rpb24gKTsKKysKKyt9 OworKworK30gLy8gbmFtZXNwYWNlIE1ldGFQcm94eQorKworKyNlbmRpZiAvLyBNRVRBUFJPWFlf TUVUQVBST1hZV09SS0VSX0gKK2RpZmYgLS1naXQgYS9zcmMvY29yZS1pbXBsL21ldGEvcHJveHkv TWV0YVByb3h5V29ya2VyLmNwcCBiL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHlX b3JrZXIuY3BwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMGNkZTI4MAor LS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eVdv cmtlci5jcHAKK0BAIC0wLDAgKzEsODIgQEAKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorKyAqIENvcHlyaWdodCAoYykgMjAxMiBCYXJ0IENlcm5lZWxzIDxiYXJ0LmNlcm5lZWxz QGtkZS5vcmc+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICoKKysgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciAgICAgICAgKgorKyAq IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlICAgICAgICAqCisrICogRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgICAg ICAgICAgICoKKysgKiB2ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqCisrICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSAgICAgICoK KysgKiBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBICAgICAgKgorKyAqIFBBUlRJQ1VMQVIgUFVSUE9T RS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAg ICAgICAgICAgICAqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhbG9uZyB3aXRoICAgICAgICAgKgorKyAqIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICAgICAgICAgICAgICAgICAgICAgICAg ICAqCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2luY2x1ZGUgIk1l dGFQcm94eVdvcmtlci5oIgorKworKyNpbmNsdWRlICJjb3JlLWltcGwvY29sbGVjdGlvbnMvc3Vw cG9ydC9Db2xsZWN0aW9uTWFuYWdlci5oIgorKworK25hbWVzcGFjZSBNZXRhUHJveHkgeworKwor K1dvcmtlcjo6V29ya2VyKCBjb25zdCBLVXJsICZ1cmwgKQorKyAgICA6IEFtYXJvazo6VHJhY2tG b3JVcmxXb3JrZXIoIHVybCApCisreworKworK30KKysKKyt2b2lkCisrV29ya2VyOjpydW4oKQor K3sKKysgICAgTWV0YTo6VHJhY2tQdHIgdHJhY2sgPSBDb2xsZWN0aW9uTWFuYWdlcjo6aW5zdGFu Y2UoKS0+dHJhY2tGb3JVcmwoIG1fdXJsICk7CisrCisrICAgIC8vbm8gVHJhY2tQcm92aWRlciBo YXMgYSB0cmFjayBmb3IgdXMgeWV0LCBxdWVyeSBuZXcgb25lcyB0aGF0IGFyZSBhZGRlZC4KKysg ICAgaWYoIHRyYWNrLmlzTnVsbCgpICkKKysgICAgeworKyAgICAgICAgLy9UT0RPOiBzaG91bGQg b25seSBoYXZlIHRvIGNvbm5lY3RvIHRvIFRyYWNrUHJvdmlkZXIgc2lnbmFscy4KKysgICAgICAg IC8vRWFjaCBDb2xsZWN0aW9uIGNvbnRhaW5zIGEgVHJhY2tQcm92aWRlcgorKyAgICAgICAgY29u bmVjdCggQ29sbGVjdGlvbk1hbmFnZXI6Omluc3RhbmNlKCksCisrICAgICAgICAgICAgICAgICBT SUdOQUwodHJhY2tQcm92aWRlckFkZGVkKCBDb2xsZWN0aW9uczo6VHJhY2tQcm92aWRlciAqICkp LAorKyAgICAgICAgICAgICAgICAgU0xPVChzbG90TmV3VHJhY2tQcm92aWRlciggQ29sbGVjdGlv bnM6OlRyYWNrUHJvdmlkZXIgKiApKSApOworKyAgICAgICAgY29ubmVjdCggQ29sbGVjdGlvbk1h bmFnZXI6Omluc3RhbmNlKCksCisrICAgICAgICAgICAgICAgICBTSUdOQUwoY29sbGVjdGlvbkFk ZGVkKCBDb2xsZWN0aW9uczo6Q29sbGVjdGlvbiAqICkpLAorKyAgICAgICAgICAgICAgICAgU0xP VChzbG90TmV3Q29sbGVjdGlvbiggQ29sbGVjdGlvbnM6OkNvbGxlY3Rpb24gKiApKSApOworKwor KyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICAgIGVtaXQoIGZpbmlzaGVkTG9va3VwKCB0 cmFjayApICk7CisrfQorKworK3ZvaWQKKytXb3JrZXI6OnNsb3ROZXdUcmFja1Byb3ZpZGVyKCBD b2xsZWN0aW9uczo6VHJhY2tQcm92aWRlciAqbmV3VHJhY2tQcm92aWRlciApCisreworKyAgICBp ZiggIW5ld1RyYWNrUHJvdmlkZXIgKQorKyAgICB7CisrICAgICAgICByZXR1cm47CisrICAgIH0K KysKKysgICAgaWYoIG5ld1RyYWNrUHJvdmlkZXItPnBvc3NpYmx5Q29udGFpbnNUcmFjayggbV91 cmwgKSApCisrICAgIHsKKysgICAgICAgIE1ldGE6OlRyYWNrUHRyIHRyYWNrID0gbmV3VHJhY2tQ cm92aWRlci0+dHJhY2tGb3JVcmwoIG1fdXJsICk7CisrICAgICAgICBlbWl0KCBmaW5pc2hlZExv b2t1cCggdHJhY2sgKSApOworKyAgICB9CisrfQorKworK3ZvaWQKKytXb3JrZXI6OnNsb3ROZXdD b2xsZWN0aW9uKCBDb2xsZWN0aW9uczo6Q29sbGVjdGlvbiAqbmV3Q29sbGVjdGlvbiApCisrewor KyAgICBpZiggIW5ld0NvbGxlY3Rpb24gKQorKyAgICB7CisrICAgICAgICByZXR1cm47CisrICAg IH0KKysKKysgICAgaWYoIG5ld0NvbGxlY3Rpb24tPnBvc3NpYmx5Q29udGFpbnNUcmFjayggbV91 cmwgKSApCisrICAgIHsKKysgICAgICAgIE1ldGE6OlRyYWNrUHRyIHRyYWNrID0gbmV3Q29sbGVj dGlvbi0+dHJhY2tGb3JVcmwoIG1fdXJsICk7CisrICAgICAgICBlbWl0KCBmaW5pc2hlZExvb2t1 cCggdHJhY2sgKSApOworKyAgICB9CisrfQorKworK30gLy8gbmFtZXNwYWNlIE1ldGFQcm94eQor ZGlmZiAtLWdpdCBhL3NyYy9jb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHlfcC5oIGIvc3Jj L2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eV9wLmgKK2luZGV4IDc5MjY3NWQuLjM2MGJl MjEgMTAwNjQ0CistLS0gYS9zcmMvY29yZS1pbXBsL21ldGEvcHJveHkvTWV0YVByb3h5X3AuaAor KysrIGIvc3JjL2NvcmUtaW1wbC9tZXRhL3Byb3h5L01ldGFQcm94eV9wLmgKK0BAIC00Myw3ICs0 Myw3IEBAIGNsYXNzIE1ldGFQcm94eTo6VHJhY2s6OlByaXZhdGUgOiBwdWJsaWMgUU9iamVjdCwg cHVibGljIE1ldGE6Ok9ic2VydmVyCisgCisgICAgICAgICBNZXRhOjpUcmFja1B0ciByZWFsVHJh Y2s7CisgCistICAgICAgICBRTGlzdDxNZXRhOjpPYnNlcnZlcio+IG9ic2VydmVyczsKKysgICAg ICAgIFFMaXN0PE1ldGE6Ok9ic2VydmVyICo+IG9ic2VydmVyczsKKyAKKyAgICAgICAgIFFTdHJp bmcgY2FjaGVkQXJ0aXN0OworICAgICAgICAgUVN0cmluZyBjYWNoZWRBbGJ1bTsKK0BAIC04Miwz NCArODIsNiBAQCBjbGFzcyBNZXRhUHJveHk6OlRyYWNrOjpQcml2YXRlIDogcHVibGljIFFPYmpl Y3QsIHB1YmxpYyBNZXRhOjpPYnNlcnZlcgorICAgICAgICAgfQorIAorICAgICBwdWJsaWMgc2xv dHM6CistICAgICAgICB2b2lkIHNsb3ROZXdUcmFja1Byb3ZpZGVyKCBDb2xsZWN0aW9uczo6VHJh Y2tQcm92aWRlciAqbmV3VHJhY2tQcm92aWRlciApCistICAgICAgICB7CistICAgICAgICAgICAg aWYgKCAhbmV3VHJhY2tQcm92aWRlciApCistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAg ICByZXR1cm47CistICAgICAgICAgICAgfQorLQorLSAgICAgICAgICAgIGlmKCBuZXdUcmFja1By b3ZpZGVyLT5wb3NzaWJseUNvbnRhaW5zVHJhY2soIHVybCApICkKKy0gICAgICAgICAgICB7Cist ICAgICAgICAgICAgICAgIE1ldGE6OlRyYWNrUHRyIHRyYWNrID0gbmV3VHJhY2tQcm92aWRlci0+ dHJhY2tGb3JVcmwoIHVybCApOworLSAgICAgICAgICAgICAgICBzbG90VXBkYXRlVHJhY2soIHRy YWNrICk7CistICAgICAgICAgICAgfQorLSAgICAgICAgfQorLQorLSAgICAgICAgdm9pZCBzbG90 TmV3Q29sbGVjdGlvbiggQ29sbGVjdGlvbnM6OkNvbGxlY3Rpb24gKm5ld0NvbGxlY3Rpb24gKQor LSAgICAgICAgeworLSAgICAgICAgICAgIGlmICggIW5ld0NvbGxlY3Rpb24gKQorLSAgICAgICAg ICAgIHsKKy0gICAgICAgICAgICAgICAgcmV0dXJuOworLSAgICAgICAgICAgIH0KKy0KKy0gICAg ICAgICAgICBpZiggbmV3Q29sbGVjdGlvbi0+cG9zc2libHlDb250YWluc1RyYWNrKCB1cmwgKSAp CistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBNZXRhOjpUcmFja1B0ciB0cmFjayA9 IG5ld0NvbGxlY3Rpb24tPnRyYWNrRm9yVXJsKCB1cmwgKTsKKy0gICAgICAgICAgICAgICAgc2xv dFVwZGF0ZVRyYWNrKCB0cmFjayApOworLSAgICAgICAgICAgIH0KKy0gICAgICAgIH0KKy0KKyAg ICAgICAgIHZvaWQgc2xvdFVwZGF0ZVRyYWNrKCBNZXRhOjpUcmFja1B0ciB0cmFjayApCisgICAg ICAgICB7CisgICAgICAgICAgICAgaWYoIHRyYWNrICkKK0BAIC0xMTcsOCArODksNiBAQCBjbGFz cyBNZXRhUHJveHk6OlRyYWNrOjpQcml2YXRlIDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBNZXRh OjpPYnNlcnZlcgorICAgICAgICAgICAgICAgICBzdWJzY3JpYmVUbyggdHJhY2sgKTsKKyAgICAg ICAgICAgICAgICAgcmVhbFRyYWNrID0gdHJhY2s7CisgICAgICAgICAgICAgICAgIG5vdGlmeU9i c2VydmVycygpOworLSAgICAgICAgICAgICAgICBkaXNjb25uZWN0KCBDb2xsZWN0aW9uTWFuYWdl cjo6aW5zdGFuY2UoKSwgU0lHTkFMKCB0cmFja1Byb3ZpZGVyQWRkZWQoIENvbGxlY3Rpb25zOjpU cmFja1Byb3ZpZGVyKiApICksIHRoaXMsIFNMT1QoIHNsb3ROZXdUcmFja1Byb3ZpZGVyKCBDb2xs ZWN0aW9uczo6VHJhY2tQcm92aWRlciogKSApICk7CistICAgICAgICAgICAgICAgIGRpc2Nvbm5l Y3QoIENvbGxlY3Rpb25NYW5hZ2VyOjppbnN0YW5jZSgpLCBTSUdOQUwoIGNvbGxlY3Rpb25BZGRl ZCggQ29sbGVjdGlvbnM6OkNvbGxlY3Rpb24qICkgKSwgdGhpcywgU0xPVCggc2xvdE5ld0NvbGxl Y3Rpb24oIENvbGxlY3Rpb25zOjpDb2xsZWN0aW9uKiApICkgKTsKKyAgICAgICAgICAgICB9Cisg ICAgICAgICB9CisgfTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS1pbXBsL3BsYXlsaXN0cy90eXBl cy9maWxlL20zdS9NM1VQbGF5bGlzdC5jcHAgYi9zcmMvY29yZS1pbXBsL3BsYXlsaXN0cy90eXBl cy9maWxlL20zdS9NM1VQbGF5bGlzdC5jcHAKK2luZGV4IGM2NGNiOTcuLjk4OWU4ZDcgMTAwNjQ0 CistLS0gYS9zcmMvY29yZS1pbXBsL3BsYXlsaXN0cy90eXBlcy9maWxlL20zdS9NM1VQbGF5bGlz dC5jcHAKKysrKyBiL3NyYy9jb3JlLWltcGwvcGxheWxpc3RzL3R5cGVzL2ZpbGUvbTN1L00zVVBs YXlsaXN0LmNwcAorQEAgLTIxLDYgKzIxLDcgQEAKKyAjaW5jbHVkZSAiY29yZS9zdXBwb3J0L0Ft YXJvay5oIgorICNpbmNsdWRlICJjb3JlL3N1cHBvcnQvRGVidWcuaCIKKyAjaW5jbHVkZSAiY29y ZS1pbXBsL2NvbGxlY3Rpb25zL3N1cHBvcnQvQ29sbGVjdGlvbk1hbmFnZXIuaCIKKysjaW5jbHVk ZSAiY29yZS1pbXBsL21ldGEvcHJveHkvTWV0YVByb3h5LmgiCisgI2luY2x1ZGUgImNvcmUtaW1w bC9wbGF5bGlzdHMvdHlwZXMvZmlsZS9QbGF5bGlzdEZpbGVTdXBwb3J0LmgiCisgI2luY2x1ZGUg InBsYXlsaXN0bWFuYWdlci9maWxlL1BsYXlsaXN0RmlsZVByb3ZpZGVyLmgiCisgI2luY2x1ZGUg IlBsYXlsaXN0TWFuYWdlci5oIgorQEAgLTE1MCwyMCArMTUxLDI1IEBAIGJvb2wKKyBNM1VQbGF5 bGlzdDo6bG9hZE0zdSggUVRleHRTdHJlYW0gJnN0cmVhbSApCisgeworICAgICBjb25zdCBRU3Ry aW5nIGRpcmVjdG9yeSA9IG1fdXJsLmRpcmVjdG9yeSgpOworLSAgICBib29sIGhhc1RyYWNrcyA9 IGZhbHNlOworICAgICBtX3RyYWNrc0xvYWRlZCA9IGZhbHNlOworIAorKyAgICBpbnQgbGVuZ3Ro ID0gLTE7CisrICAgIFFTdHJpbmcgZXh0aW5mVGl0bGU7CisgICAgIGRvCisgICAgIHsKKyAgICAg ICAgIFFTdHJpbmcgbGluZSA9IHN0cmVhbS5yZWFkTGluZSgpOworICAgICAgICAgaWYoIGxpbmUu c3RhcnRzV2l0aCggIiNFWFRJTkYiICkgKQorICAgICAgICAgeworLSAgICAgICAgICAgIC8vY29u c3QgUVN0cmluZyBleHRpbmYgPSBsaW5lLnNlY3Rpb24oICc6JywgMSApOworLSAgICAgICAgICAg IC8vY29uc3QgaW50IGxlbmd0aCA9IGV4dGluZi5zZWN0aW9uKCAnLCcsIDAsIDAgKS50b0ludCgp OworKyAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgZXh0aW5mID0gbGluZS5zZWN0aW9uKCAnOics IDEgKTsKKysgICAgICAgICAgICBib29sIG9rOworKyAgICAgICAgICAgIGxlbmd0aCA9IGV4dGlu Zi5zZWN0aW9uKCAnLCcsIDAsIDAgKS50b0ludCggJm9rICk7CisrICAgICAgICAgICAgaWYoICFv ayApCisrICAgICAgICAgICAgICAgIGxlbmd0aCA9IC0xOworKyAgICAgICAgICAgIGV4dGluZlRp dGxlID0gZXh0aW5mLnNlY3Rpb24oICcsJywgMSApOworICAgICAgICAgfQorICAgICAgICAgZWxz ZSBpZiggIWxpbmUuc3RhcnRzV2l0aCggJyMnICkgJiYgIWxpbmUuaXNFbXB0eSgpICkKKyAgICAg ICAgIHsKKy0gICAgICAgICAgICBNZXRhOjpUcmFja1B0ciB0cmFja1B0cjsKKysgICAgICAgICAg ICBNZXRhUHJveHk6OlRyYWNrICpwcm94eVRyYWNrOworICAgICAgICAgICAgIGxpbmUgPSBsaW5l LnJlcGxhY2UoICJcXCIsICIvIiApOworIAorICAgICAgICAgICAgIC8vIEtVcmw6OmlzUmVsYXRp dmVVcmwoKSBleHBlY3RzIGFic29sdXRlIFVSTHMgdG8gc3RhcnQgd2l0aCBhIHByb3RvY29sLCBz byBwcmVwZW5kIGl0IGlmIG1pc3NpbmcKK0BAIC0xODAsMjIgKzE4NiwzMCBAQCBNM1VQbGF5bGlz dDo6bG9hZE0zdSggUVRleHRTdHJlYW0gJnN0cmVhbSApCisgICAgICAgICAgICAgICAgIGt1cmwu YWRkUGF0aCggbGluZSApOyAvLyBhZGRzIGRpcmVjdG9yeSBzZXBhcmF0b3IgaWYgcmVxdWlyZWQK KyAgICAgICAgICAgICAgICAga3VybC5jbGVhblBhdGgoKTsKKyAKKy0gICAgICAgICAgICAgICAg dHJhY2tQdHIgPSBDb2xsZWN0aW9uTWFuYWdlcjo6aW5zdGFuY2UoKS0+dHJhY2tGb3JVcmwoIGt1 cmwgKTsKKysgICAgICAgICAgICAgICAgdXJsID0ga3VybC51cmwoKTsKKyAgICAgICAgICAgICB9 CistICAgICAgICAgICAgZWxzZQorKworKyAgICAgICAgICAgIHByb3h5VHJhY2sgPSBuZXcgTWV0 YVByb3h5OjpUcmFjayggS1VybCggdXJsICkgKTsKKysgICAgICAgICAgICBRU3RyaW5nIGFydGlz dCA9IGV4dGluZlRpdGxlLnNlY3Rpb24oICIgLSAiLCAwLCAwICk7CisrICAgICAgICAgICAgUVN0 cmluZyB0aXRsZSA9IGV4dGluZlRpdGxlLnNlY3Rpb24oICIgLSAiLCAxLCAxICk7CisrICAgICAg ICAgICAgLy9pZiB0aXRsZSBhbmQgYXJ0aXN0IGFyZSBzYXZlZCBzdWNoIGFzIGluIE0zVVBsYXls aXN0OjpzYXZlKCkKKysgICAgICAgICAgICBpZiggIXRpdGxlLmlzRW1wdHkoKSAmJiAhYXJ0aXN0 LmlzRW1wdHkoKSApCisgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICB0cmFja1B0ciA9 IENvbGxlY3Rpb25NYW5hZ2VyOjppbnN0YW5jZSgpLT50cmFja0ZvclVybCggS1VybCggbGluZSAp ICk7CisrICAgICAgICAgICAgICAgIHByb3h5VHJhY2stPnNldE5hbWUoIHRpdGxlICk7CisrICAg ICAgICAgICAgICAgIHByb3h5VHJhY2stPnNldEFydGlzdCggYXJ0aXN0ICk7CisgICAgICAgICAg ICAgfQorLQorLSAgICAgICAgICAgIGlmKCB0cmFja1B0ciApCisrICAgICAgICAgICAgZWxzZQor ICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgbV90cmFja3MuYXBwZW5kKCB0cmFja1B0 ciApOworLSAgICAgICAgICAgICAgICBoYXNUcmFja3MgPSB0cnVlOworLSAgICAgICAgICAgICAg ICBtX3RyYWNrc0xvYWRlZCA9IHRydWU7CisrICAgICAgICAgICAgICAgIHByb3h5VHJhY2stPnNl dE5hbWUoIGV4dGluZlRpdGxlICk7CisgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIHByb3h5 VHJhY2stPnNldExlbmd0aCggbGVuZ3RoICk7CisrICAgICAgICAgICAgbV90cmFja3MgPDwgTWV0 YTo6VHJhY2tQdHIoIHByb3h5VHJhY2sgKTsKKysgICAgICAgICAgICBtX3RyYWNrc0xvYWRlZCA9 IHRydWU7CisgICAgICAgICB9CisgICAgIH0gd2hpbGUoICFzdHJlYW0uYXRFbmQoKSApOworLSAg ICByZXR1cm4gaGFzVHJhY2tzOworKworKyAgICAvL1RPRE86IHJldHVybiBmYWxzZSBpZiBzdHJl YW0gaXMgbm90IHJlYWRhYmxlLCBlbXB0eSBvciBoYXMgZXJyb3JzCisrICAgIHJldHVybiB0cnVl OworIH0KKyAKKyBib29sCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUtaW1wbC9wbGF5bGlzdHMvdHlw ZXMvZmlsZS9wbHMvUExTUGxheWxpc3QuY3BwIGIvc3JjL2NvcmUtaW1wbC9wbGF5bGlzdHMvdHlw ZXMvZmlsZS9wbHMvUExTUGxheWxpc3QuY3BwCitpbmRleCA2N2VkNjhlLi4zODY3MzRhIDEwMDY0 NAorLS0tIGEvc3JjL2NvcmUtaW1wbC9wbGF5bGlzdHMvdHlwZXMvZmlsZS9wbHMvUExTUGxheWxp c3QuY3BwCisrKysgYi9zcmMvY29yZS1pbXBsL3BsYXlsaXN0cy90eXBlcy9maWxlL3Bscy9QTFNQ bGF5bGlzdC5jcHAKK0BAIC0yMSw2ICsyMSw3IEBACisgI2luY2x1ZGUgImNvcmUvY2FwYWJpbGl0 aWVzL0VkaXRDYXBhYmlsaXR5LmgiCisgI2luY2x1ZGUgImNvcmUvbWV0YS9NZXRhLmgiCisgI2lu Y2x1ZGUgIlBsYXlsaXN0TWFuYWdlci5oIgorKyNpbmNsdWRlICJjb3JlLWltcGwvbWV0YS9wcm94 eS9NZXRhUHJveHkuaCIKKyAjaW5jbHVkZSAiY29yZS1pbXBsL3BsYXlsaXN0cy90eXBlcy9maWxl L1BsYXlsaXN0RmlsZVN1cHBvcnQuaCIKKyAKKyAjaW5jbHVkZSA8S01pbWVUeXBlPgorQEAgLTcy LDcgKzczLDcgQEAgUExTUGxheWxpc3Q6OnRyYWNrQ291bnQoKSBjb25zdAorICAgICBpZiggbV90 cmFja3NMb2FkZWQgKQorICAgICAgICAgcmV0dXJuIG1fdHJhY2tzLmNvdW50KCk7CisgCistICAg IC8vVE9ETzogY291bnQgdGhlIG51bWJlciBvZiBsaW5lcyBzdGFydGluZyB3aXRoICMKKysgICAg Ly9UT0RPOiByZWFkIE51bWJlck9mRW50cmllcyBmcm9tIGZvb3RlcgorICAgICByZXR1cm4gLTE7 CisgfQorIAorQEAgLTE0NiwxMSArMTQ3LDkgQEAgUExTUGxheWxpc3Q6OnJlbW92ZVRyYWNrKCBp bnQgcG9zaXRpb24gKQorIH0KKyAKKyBib29sCistUExTUGxheWxpc3Q6OmxvYWRQbHMoIFFUZXh0 U3RyZWFtICZzdHJlYW0gKQorK1BMU1BsYXlsaXN0Ojpsb2FkUGxzKCBRVGV4dFN0cmVhbSAmdGV4 dFN0cmVhbSApCisgeworLSAgICBERUJVR19CTE9DSworLQorLSAgICBNZXRhOjpUcmFja1B0ciBj dXJyZW50VHJhY2s7CisrICAgIE1ldGFQcm94eTo6VHJhY2sgKnByb3h5VHJhY2s7CisgCisgICAg IC8vIENvdW50ZWQgbnVtYmVyIG9mICJGaWxlIz0iIGxpbmVzLgorICAgICB1bnNpZ25lZCBpbnQg ZW50cnlDbnQgPSAwOworQEAgLTE3MiwyNyArMTcxLDMyIEBAIFBMU1BsYXlsaXN0Ojpsb2FkUGxz KCBRVGV4dFN0cmVhbSAmc3RyZWFtICkKKyAgICAgKiBSZWFkIHRoZSBsaW5lcyBpbnRvIGEgYnVm ZmVyOyBDbGVhbnVwIHRoZSBsaW5lIHN0cmluZ3M7CisgICAgICogQ291bnQgdGhlIGVudHJpZXMg bWFudWFsbHkgYW5kIHJlYWQgIk51bWJlck9mRW50cmllcyIuCisgICAgICovCistICAgIHdoaWxl ICghc3RyZWFtLmF0RW5kKCkpIHsKKy0gICAgICAgIHRtcCA9IHN0cmVhbS5yZWFkTGluZSgpOwor KyAgICB3aGlsZSggIXRleHRTdHJlYW0uYXRFbmQoKSApCisrICAgIHsKKysgICAgICAgIHRtcCA9 IHRleHRTdHJlYW0ucmVhZExpbmUoKTsKKyAgICAgICAgIHRtcCA9IHRtcC50cmltbWVkKCk7Cist ICAgICAgICBpZiAodG1wLmlzRW1wdHkoKSkKKysgICAgICAgIGlmKCB0bXAuaXNFbXB0eSgpICkK KyAgICAgICAgICAgICBjb250aW51ZTsKKy0gICAgICAgIGxpbmVzLmFwcGVuZCh0bXApOworKyAg ICAgICAgbGluZXMuYXBwZW5kKCB0bXAgKTsKKyAKKy0gICAgICAgIGlmICh0bXAuY29udGFpbnMo cmVnRXhwX0ZpbGUpKSB7CisrICAgICAgICBpZiggdG1wLmNvbnRhaW5zKCByZWdFeHBfRmlsZSAp ICkKKysgICAgICAgIHsKKyAgICAgICAgICAgICBlbnRyeUNudCsrOworICAgICAgICAgICAgIGNv bnRpbnVlOworICAgICAgICAgfQorLSAgICAgICAgaWYgKHRtcCA9PSBzZWN0aW9uX3BsYXlsaXN0 KSB7CisrICAgICAgICBpZiggdG1wID09IHNlY3Rpb25fcGxheWxpc3QgKQorKyAgICAgICAgewor ICAgICAgICAgICAgIGhhdmVQbGF5bGlzdFNlY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgIGNv bnRpbnVlOworICAgICAgICAgfQorLSAgICAgICAgaWYgKHRtcC5jb250YWlucyhyZWdFeHBfTnVt YmVyT2ZFbnRyaWVzKSkgeworLSAgICAgICAgICAgIG51bWJlck9mRW50cmllcyA9IHRtcC5zZWN0 aW9uKCc9JywgLTEpLnRyaW1tZWQoKS50b1VJbnQoKTsKKysgICAgICAgIGlmKCB0bXAuY29udGFp bnMoIHJlZ0V4cF9OdW1iZXJPZkVudHJpZXMgKSApCisrICAgICAgICB7CisrICAgICAgICAgICAg bnVtYmVyT2ZFbnRyaWVzID0gdG1wLnNlY3Rpb24oICc9JywgLTEgKS50cmltbWVkKCkudG9VSW50 KCk7CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgaWYg KG51bWJlck9mRW50cmllcyAhPSBlbnRyeUNudCkgeworKyAgICBpZiggbnVtYmVyT2ZFbnRyaWVz ICE9IGVudHJ5Q250ICkKKysgICAgeworICAgICAgICAgd2FybmluZygpIDw8ICIucGxzIHBsYXls aXN0OiBJbnZhbGlkIFwiTnVtYmVyT2ZFbnRyaWVzXCIgdmFsdWUuICAiCisgICAgICAgICAgICAg ICAgIDw8ICJOdW1iZXJPZkVudHJpZXM9IiA8PCBudW1iZXJPZkVudHJpZXMgPDwgIiAgY291bnRl ZD0iCisgICAgICAgICAgICAgICAgIDw8IGVudHJ5Q250IDw8IGVuZGw7CitAQCAtMjAyLDcgKzIw Niw3IEBAIFBMU1BsYXlsaXN0Ojpsb2FkUGxzKCBRVGV4dFN0cmVhbSAmc3RyZWFtICkKKyAgICAg ICAgICovCisgICAgICAgICBudW1iZXJPZkVudHJpZXMgPSBlbnRyeUNudDsKKyAgICAgfQorLSAg ICBpZiAoIW51bWJlck9mRW50cmllcykKKysgICAgaWYoIG51bWJlck9mRW50cmllcyA9PSAwICkK KyAgICAgICAgIHJldHVybiB0cnVlOworIAorICAgICB1bnNpZ25lZCBpbnQgaW5kZXg7CitAQCAt MjEzLDY3ICsyMTcsNjkgQEAgUExTUGxheWxpc3Q6OmxvYWRQbHMoIFFUZXh0U3RyZWFtICZzdHJl YW0gKQorICAgICAqIGFuZCBwYXJzZSB0aGUgcGxheWxpc3QgZGF0YS4KKyAgICAgKi8KKyAgICAg UVN0cmluZ0xpc3Q6OmNvbnN0X2l0ZXJhdG9yIGkgPSBsaW5lcy5jb25zdEJlZ2luKCksIGVuZCA9 IGxpbmVzLmNvbnN0RW5kKCk7CistICAgIGZvciAoIDsgaSAhPSBlbmQ7ICsraSkgeworLSAgICAg ICAgaWYgKCFpblBsYXlsaXN0U2VjdGlvbiAmJiBoYXZlUGxheWxpc3RTZWN0aW9uKSB7CisrICAg IGZvciggOyBpICE9IGVuZDsgKytpICkKKysgICAgeworKyAgICAgICAgaWYoICFpblBsYXlsaXN0 U2VjdGlvbiAmJiBoYXZlUGxheWxpc3RTZWN0aW9uICkKKysgICAgICAgIHsKKyAgICAgICAgICAg ICAvKiBUaGUgcGxheWxpc3QgYmVnaW5zIHdpdGggdGhlICJbcGxheWxpc3RdIiB0YWcuCisgICAg ICAgICAgICAgKiBTa2lwIGV2ZXJ5dGhpbmcgYmVmb3JlIHRoaXMuCisgICAgICAgICAgICAgKi8K Ky0gICAgICAgICAgICBpZiAoKCppKSA9PSBzZWN0aW9uX3BsYXlsaXN0KQorKyAgICAgICAgICAg IGlmKCAoKmkpID09IHNlY3Rpb25fcGxheWxpc3QgKQorICAgICAgICAgICAgICAgICBpblBsYXls aXN0U2VjdGlvbiA9IHRydWU7CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9Cist ICAgICAgICBpZiAoKCppKS5jb250YWlucyhyZWdFeHBfRmlsZSkpIHsKKysgICAgICAgIGlmKCAo KmkpLmNvbnRhaW5zKCByZWdFeHBfRmlsZSApICkKKysgICAgICAgIHsKKyAgICAgICAgICAgICAv LyBIYXZlIGEgIkZpbGUjPVhZWiIgbGluZS4KKy0gICAgICAgICAgICBpbmRleCA9IGxvYWRQbHNf ZXh0cmFjdEluZGV4KCppKTsKKy0gICAgICAgICAgICBpZiAoaW5kZXggPiBudW1iZXJPZkVudHJp ZXMgfHwgaW5kZXggPT0gMCkKKysgICAgICAgICAgICBpbmRleCA9IGxvYWRQbHNfZXh0cmFjdElu ZGV4KCAqaSApOworKyAgICAgICAgICAgIGlmKCBpbmRleCA+IG51bWJlck9mRW50cmllcyB8fCBp bmRleCA9PSAwICkKKyAgICAgICAgICAgICAgICAgY29udGludWU7CistICAgICAgICAgICAgdG1w ID0gKCppKS5zZWN0aW9uKCc9JywgMSkudHJpbW1lZCgpOworLSAgICAgICAgICAgIGN1cnJlbnRU cmFjayA9IENvbGxlY3Rpb25NYW5hZ2VyOjppbnN0YW5jZSgpLT50cmFja0ZvclVybCggdG1wICk7 CistICAgICAgICAgICAgaWYoIGN1cnJlbnRUcmFjay5pc051bGwoKSApCisrICAgICAgICAgICAg dG1wID0gKCppKS5zZWN0aW9uKCAnPScsIDEgKS50cmltbWVkKCk7CisrICAgICAgICAgICAgS1Vy bCB1cmwoIHRtcCApOworKyAgICAgICAgICAgIGlmKCB1cmwuaXNSZWxhdGl2ZSgpICkKKyAgICAg ICAgICAgICB7CistICAgICAgICAgICAgICAgIGRlYnVnKCkgPDwgInRyYWNrIGNvdWxkIG5vdCBi ZSBsb2FkZWQ6ICIgPDwgdG1wOworLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAg ICAgICAgICAgdXJsID0gbV91cmw7CisrICAgICAgICAgICAgICAgIHVybC5hZGRQYXRoKCB0bXAg KTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgbV90cmFja3MuYXBwZW5kKCBjdXJyZW50 VHJhY2sgKTsKKysgICAgICAgICAgICBwcm94eVRyYWNrID0gbmV3IE1ldGFQcm94eTo6VHJhY2so IHVybCApOworKyAgICAgICAgICAgIG1fdHJhY2tzIDw8IE1ldGE6OlRyYWNrUHRyKCBwcm94eVRy YWNrICk7CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9CistICAgICAgICBpZiAo KCppKS5jb250YWlucyhyZWdFeHBfVGl0bGUpKSB7CisrICAgICAgICBpZiggKCppKS5jb250YWlu cyhyZWdFeHBfVGl0bGUpICkKKysgICAgICAgIHsKKyAgICAgICAgICAgICAvLyBIYXZlIGEgIlRp dGxlIz1YWVoiIGxpbmUuCisgICAgICAgICAgICAgaW5kZXggPSBsb2FkUGxzX2V4dHJhY3RJbmRl eCgqaSk7CistICAgICAgICAgICAgaWYgKGluZGV4ID4gbnVtYmVyT2ZFbnRyaWVzIHx8IGluZGV4 ID09IDApCisrICAgICAgICAgICAgaWYoIGluZGV4ID4gbnVtYmVyT2ZFbnRyaWVzIHx8IGluZGV4 ID09IDAgKQorICAgICAgICAgICAgICAgICBjb250aW51ZTsKKy0gICAgICAgICAgICB0bXAgPSAo KmkpLnNlY3Rpb24oJz0nLCAxKS50cmltbWVkKCk7CistCistICAgICAgICAgICAgaWYgKCBjdXJy ZW50VHJhY2suZGF0YSgpICE9IDAgJiYgY3VycmVudFRyYWNrLT5pczxDYXBhYmlsaXRpZXM6OkVk aXRDYXBhYmlsaXR5PigpICkKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIENhcGFi aWxpdGllczo6RWRpdENhcGFiaWxpdHkgKmVjID0gY3VycmVudFRyYWNrLT5jcmVhdGU8Q2FwYWJp bGl0aWVzOjpFZGl0Q2FwYWJpbGl0eT4oKTsKKy0gICAgICAgICAgICAgICAgaWYoIGVjICkKKy0g ICAgICAgICAgICAgICAgICAgIGVjLT5zZXRUaXRsZSggdG1wICk7CistICAgICAgICAgICAgICAg IGRlbGV0ZSBlYzsKKy0gICAgICAgICAgICB9CisrICAgICAgICAgICAgdG1wID0gKCppKS5zZWN0 aW9uKCAnPScsIDEgKS50cmltbWVkKCk7CisrICAgICAgICAgICAgcHJveHlUcmFjay0+c2V0TmFt ZSggdG1wICk7CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9CistICAgICAgICBp ZiAoKCppKS5jb250YWlucyhyZWdFeHBfTGVuZ3RoKSkgeworKyAgICAgICAgaWYoICgqaSkuY29u dGFpbnMoIHJlZ0V4cF9MZW5ndGggKSApCisrICAgICAgICB7CisgICAgICAgICAgICAgLy8gSGF2 ZSBhICJMZW5ndGgjPVhZWiIgbGluZS4KKyAgICAgICAgICAgICBpbmRleCA9IGxvYWRQbHNfZXh0 cmFjdEluZGV4KCppKTsKKy0gICAgICAgICAgICBpZiAoaW5kZXggPiBudW1iZXJPZkVudHJpZXMg fHwgaW5kZXggPT0gMCkKKysgICAgICAgICAgICBpZiggaW5kZXggPiBudW1iZXJPZkVudHJpZXMg fHwgaW5kZXggPT0gMCApCisgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworLSAgICAgICAgICAg IHRtcCA9ICgqaSkuc2VjdGlvbignPScsIDEpLnRyaW1tZWQoKTsKKy0gICAgICAgICAgICAvL3Ry YWNrcy5hcHBlbmQoIEtVcmwodG1wKSApOworLS8vICAgICAgICAgICAgIFFfQVNTRVJUKG9rKTsK KysgICAgICAgICAgICB0bXAgPSAoKmkpLnNlY3Rpb24oICc9JywgMSApLnRyaW1tZWQoKTsKKysg ICAgICAgICAgICBib29sIG9rID0gZmFsc2U7CisrICAgICAgICAgICAgaW50IHNlY29uZHMgPSB0 bXAudG9JbnQoICZvayApOworKyAgICAgICAgICAgIGlmKCBvayApCisrICAgICAgICAgICAgICAg IHByb3h5VHJhY2stPnNldExlbmd0aCggc2Vjb25kcyAqIDEwMDAgKTsgLy9sZW5ndGggaXMgaW4g bWlsbGlzZWNvbmRzCisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9CistICAgICAg ICBpZiAoKCppKS5jb250YWlucyhyZWdFeHBfTnVtYmVyT2ZFbnRyaWVzKSkgeworKyAgICAgICAg aWYoICgqaSkuY29udGFpbnMoIHJlZ0V4cF9OdW1iZXJPZkVudHJpZXMgKSApCisrICAgICAgICB7 CisgICAgICAgICAgICAgLy8gSGF2ZSB0aGUgIk51bWJlck9mRW50cmllcz0jIiBsaW5lLgorICAg ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgfQorLSAgICAgICAgaWYgKCgqaSkuY29udGFp bnMocmVnRXhwX1ZlcnNpb24pKSB7CisrICAgICAgICBpZiggKCppKS5jb250YWlucyggcmVnRXhw X1ZlcnNpb24gKSApCisrICAgICAgICB7CisgICAgICAgICAgICAgLy8gSGF2ZSB0aGUgIlZlcnNp b249IyIgbGluZS4KKy0gICAgICAgICAgICB0bXAgPSAoKmkpLnNlY3Rpb24oJz0nLCAxKS50cmlt bWVkKCk7CisrICAgICAgICAgICAgdG1wID0gKCppKS5zZWN0aW9uKCAnPScsIDEgKS50cmltbWVk KCk7CisgICAgICAgICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IFZlcnNpb249MgorLSAgICAgICAg ICAgIGlmICh0bXAudG9VSW50KCZvaykgIT0gMikKKysgICAgICAgICAgICBpZiAodG1wLnRvVUlu dCggJm9rICkgIT0gMikKKyAgICAgICAgICAgICAgICAgd2FybmluZygpIDw8ICIucGxzIHBsYXls aXN0OiBVbnN1cHBvcnRlZCB2ZXJzaW9uLiIgPDwgZW5kbDsKKy0vLyAgICAgICAgICAgICBRX0FT U0VSVChvayk7CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9CisgICAgICAgICB3 YXJuaW5nKCkgPDwgIi5wbHMgcGxheWxpc3Q6IFVucmVjb2duaXplZCBsaW5lOiBcIiIgPDwgKmkg PDwgIlwiIiA8PCBlbmRsOworQEAgLTMwMCwxNCArMzA2LDMxIEBAIFBMU1BsYXlsaXN0OjpzYXZl KCBjb25zdCBLVXJsICZsb2NhdGlvbiwgYm9vbCByZWxhdGl2ZSApCisgICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgIH0KKyAKKysgICAgLy9Gb3JtYXQ6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3Jn L3dpa2kvUExTXyhmaWxlX2Zvcm1hdCkKKyAgICAgUVRleHRTdHJlYW0gc3RyZWFtKCAmZmlsZSAp OworKyAgICAvL2hlYWRlcgorICAgICBzdHJlYW0gPDwgIltQbGF5bGlzdF1cbiI7CistICAgIHN0 cmVhbSA8PCAiTnVtYmVyT2ZFbnRyaWVzPSIgPDwgbV90cmFja3MuY291bnQoKSA8PCBlbmRsOwor KworKyAgICAvL2JvZHkKKyAgICAgaW50IGkgPSAxOyAvL1BMUyBzdGFydHMgYXQgRmlsZTE9Cisg ICAgIGZvcmVhY2goIE1ldGE6OlRyYWNrUHRyIHRyYWNrLCBtX3RyYWNrcyApCisgICAgIHsKKy0g ICAgICAgIHN0cmVhbSA8PCAiRmlsZSIgPDwgaSA8PCAiPSI7CistICAgICAgICBzdHJlYW0gPDwg S1VybCggdHJhY2stPnBsYXlhYmxlVXJsKCkgKS5wYXRoKCk7CisrICAgICAgICBLVXJsIHBsYXlh YmxlVXJsKCB0cmFjay0+cGxheWFibGVVcmwoKSApOworKyAgICAgICAgUVN0cmluZyBmaWxlID0g cGxheWFibGVVcmwudXJsKCk7CisrCisrICAgICAgICBpZiggcGxheWFibGVVcmwuaXNMb2NhbEZp bGUoKSApCisrICAgICAgICB7CisrICAgICAgICAgICAgaWYoIHJlbGF0aXZlICkKKysgICAgICAg ICAgICB7CisrICAgICAgICAgICAgICAgIGZpbGUgPSBLVXJsOjpyZWxhdGl2ZVBhdGgoIHNhdmVQ YXRoLnRvTG9jYWxGaWxlKCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBsYXlhYmxlVXJsLnRvTG9jYWxGaWxlKCkgKTsKKysgICAgICAgICAgICB9CisrICAg ICAgICAgICAgZWxzZQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgZmlsZSA9IHBs YXlhYmxlVXJsLnRvTG9jYWxGaWxlKCk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAg ICAgICAgc3RyZWFtIDw8ICJGaWxlIiA8PCBpIDw8ICI9IiA8PCBmaWxlOworICAgICAgICAgc3Ry ZWFtIDw8ICJcblRpdGxlIiA8PCBpIDw8ICI9IjsKKyAgICAgICAgIHN0cmVhbSA8PCB0cmFjay0+ bmFtZSgpOworICAgICAgICAgc3RyZWFtIDw8ICJcbkxlbmd0aCIgPDwgaSA8PCAiPSI7CitAQCAt MzE2LDYgKzMzOSw4IEBAIFBMU1BsYXlsaXN0OjpzYXZlKCBjb25zdCBLVXJsICZsb2NhdGlvbiwg Ym9vbCByZWxhdGl2ZSApCisgICAgICAgICBpKys7CisgICAgIH0KKyAKKysgICAgLy9mb290ZXIK KysgICAgc3RyZWFtIDw8ICJOdW1iZXJPZkVudHJpZXM9IiA8PCBtX3RyYWNrcy5jb3VudCgpIDw8 IGVuZGw7CisgICAgIHN0cmVhbSA8PCAiVmVyc2lvbj0yXG4iOworICAgICBmaWxlLmNsb3NlKCk7 CisgICAgIHJldHVybiB0cnVlOworQEAgLTMzMCw5ICszNTUsOSBAQCBQTFNQbGF5bGlzdDo6bG9h ZFBsc19leHRyYWN0SW5kZXgoIGNvbnN0IFFTdHJpbmcgJnN0ciApIGNvbnN0CisgICAgICovCisg ICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICAgdW5zaWduZWQgaW50IHJldDsKKy0gICAgUVN0cmlu ZyB0bXAoc3RyLnNlY3Rpb24oJz0nLCAwLCAwKSk7CistICAgIHRtcC5yZW1vdmUoUVJlZ0V4cCgi XlxcRCoiKSk7CistICAgIHJldCA9IHRtcC50cmltbWVkKCkudG9VSW50KCZvayk7CisrICAgIFFT dHJpbmcgdG1wKCBzdHIuc2VjdGlvbiggJz0nLCAwLCAwICkgKTsKKysgICAgdG1wLnJlbW92ZSgg UVJlZ0V4cCggIl5cXEQqIiApICk7CisrICAgIHJldCA9IHRtcC50cmltbWVkKCkudG9VSW50KCAm b2sgKTsKKyAgICAgUV9BU1NFUlQob2spOworICAgICByZXR1cm4gcmV0OworIH0KK2RpZmYgLS1n aXQgYS9zcmMvY29yZS1pbXBsL3BsYXlsaXN0cy90eXBlcy9maWxlL3hzcGYvWFNQRlBsYXlsaXN0 LmNwcCBiL3NyYy9jb3JlLWltcGwvcGxheWxpc3RzL3R5cGVzL2ZpbGUveHNwZi9YU1BGUGxheWxp c3QuY3BwCitpbmRleCA0Y2I0OWZiLi4wMWNmMWU2IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUtaW1w bC9wbGF5bGlzdHMvdHlwZXMvZmlsZS94c3BmL1hTUEZQbGF5bGlzdC5jcHAKKysrKyBiL3NyYy9j b3JlLWltcGwvcGxheWxpc3RzL3R5cGVzL2ZpbGUveHNwZi9YU1BGUGxheWxpc3QuY3BwCitAQCAt MjMzLDggKzIzMyw3IEBAIFhTUEZQbGF5bGlzdDo6dHJhY2tDb3VudCgpIGNvbnN0CisgTWV0YTo6 VHJhY2tMaXN0CisgWFNQRlBsYXlsaXN0Ojp0cmFja3MoKQorIHsKKy0gICAgLy9JZiB5b3UgZG8g bm90IGxvYWQgYmVmb3JlLCBtX3RyYWNrcworLSAgICAvL2NhbiBiZSBlbXB0eSBiZWZvcmUgdXNh Z2UuCisrICAgIC8vSWYgeW91IGRvIG5vdCBsb2FkLCBtX3RyYWNrcyBjYW4gYmUgZW1wdHkgYmVm b3JlIHVzYWdlLgorICAgICB0cmlnZ2VyVHJhY2tMb2FkKCk7CisgCisgICAgIHJldHVybiBtX3Ry YWNrczsKK0BAIC0yNTEsNzYgKzI1MCwxNCBAQCBYU1BGUGxheWxpc3Q6OnRyaWdnZXJUcmFja0xv YWQoKQorIAorICAgICBmb3JlYWNoKCBjb25zdCBYU1BGVHJhY2sgJnRyYWNrLCB4c3BmVHJhY2tz ICkKKyAgICAgeworLSAgICAgICAgTWV0YTo6VHJhY2tQdHIgdHJhY2tQdHI7CistICAgICAgICBp ZiggIXRyYWNrLmlkZW50aWZpZXIuaXNFbXB0eSgpICkKKy0gICAgICAgICAgICB0cmFja1B0ciA9 IENvbGxlY3Rpb25NYW5hZ2VyOjppbnN0YW5jZSgpLT50cmFja0ZvclVybCggdHJhY2suaWRlbnRp ZmllciApOworLSAgICAgICAgZWxzZQorLSAgICAgICAgICAgIHRyYWNrUHRyID0gQ29sbGVjdGlv bk1hbmFnZXI6Omluc3RhbmNlKCktPnRyYWNrRm9yVXJsKCB0cmFjay5sb2NhdGlvbiApOworLSAg ICAgICAgaWYoIHRyYWNrUHRyICkKKy0gICAgICAgIHsKKy0gICAgICAgICAgICAvKioKKy0gICAg ICAgICAgICAgKiBOT1RFOiBJZiB0aGlzIGlzIGEgTWV0YVByb3h5OjpUcmFjaywgaXQgcHJvYmFi bHkgaXNuJ3QgcGxheWFibGUgeWV0LAorLSAgICAgICAgICAgICAqICAgICAgIGJ1dCB0aGF0J3Mg b2theS4gSG93ZXZlciwgaXQncyBub3QgYSBnb29kIGlkZWEgdG8gZ2V0IGFub3RoZXIKKy0gICAg ICAgICAgICAgKiAgICAgICBvbmUgZnJvbSB0aGUgc2FtZSBwcm92aWRlciwgc2luY2UgdGhlIHBy b3h5IHByb2JhYmx5IG1lYW5zIHRoYXQKKy0gICAgICAgICAgICAgKiAgICAgICBtYWtpbmcgb25l IGludm9sdmVzIHF1aXRlIGEgYml0IG9mIHdvcmsuCistICAgICAgICAgICAgICogICAgICAgICAt IEFuZHkgQ29kZXIgPGFuZHJldy5jb2RlckBnbWFpbC5jb20+CistICAgICAgICAgICAgICovCist ICAgICAgICAgICAgaWYoICF0cmFja1B0ci0+aXNQbGF5YWJsZSgpICYmICggdHlwZWlkKCAqIHRy YWNrUHRyLmRhdGEoKSApICE9IHR5cGVpZCggTWV0YVByb3h5OjpUcmFjayApICkgKQorLSAgICAg ICAgICAgICAgICB0cmFja1B0ciA9IENvbGxlY3Rpb25NYW5hZ2VyOjppbnN0YW5jZSgpLT50cmFj a0ZvclVybCggdHJhY2suaWRlbnRpZmllciApOworLSAgICAgICAgfQorLQorLSAgICAgICAgaWYo IHRyYWNrUHRyICkKKy0gICAgICAgIHsKKy0gICAgICAgICAgICBpZiggdHlwZWlkKCAqIHRyYWNr UHRyLmRhdGEoKSApID09IHR5cGVpZCggTWV0YVN0cmVhbTo6VHJhY2sgKSApCistICAgICAgICAg ICAgeworLSAgICAgICAgICAgICAgICBNZXRhU3RyZWFtOjpUcmFjayAqIHN0cmVhbVRyYWNrID0g ZHluYW1pY19jYXN0PE1ldGFTdHJlYW06OlRyYWNrICo+ICggdHJhY2tQdHIuZGF0YSgpICk7Cist ICAgICAgICAgICAgICAgIGlmICggc3RyZWFtVHJhY2sgKQorLSAgICAgICAgICAgICAgICB7Cist ICAgICAgICAgICAgICAgICAgICBzdHJlYW1UcmFjay0+c2V0VGl0bGUoIHRyYWNrLnRpdGxlICk7 CistICAgICAgICAgICAgICAgICAgICBzdHJlYW1UcmFjay0+c2V0QWxidW0oIHRyYWNrLmFsYnVt ICk7CistICAgICAgICAgICAgICAgICAgICBzdHJlYW1UcmFjay0+c2V0QXJ0aXN0KCB0cmFjay5j cmVhdG9yICk7CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICB9CistICAgICAgICAg ICAgZWxzZSBpZiggdHlwZWlkKCAqIHRyYWNrUHRyLmRhdGEoKSApID09IHR5cGVpZCggTWV0YTo6 VGltZWNvZGVUcmFjayApICkKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIE1ldGE6 OlRpbWVjb2RlVHJhY2sgKiB0aW1lY29kZVRyYWNrID0KKy0gICAgICAgICAgICAgICAgICAgICAg ICBkeW5hbWljX2Nhc3Q8TWV0YTo6VGltZWNvZGVUcmFjayAqPiggdHJhY2tQdHIuZGF0YSgpICk7 CistICAgICAgICAgICAgICAgIGlmKCB0aW1lY29kZVRyYWNrICkKKy0gICAgICAgICAgICAgICAg eworLSAgICAgICAgICAgICAgICAgICAgdGltZWNvZGVUcmFjay0+YmVnaW5NZXRhRGF0YVVwZGF0 ZSgpOworLSAgICAgICAgICAgICAgICAgICAgdGltZWNvZGVUcmFjay0+c2V0VGl0bGUoIHRyYWNr LnRpdGxlICk7CistICAgICAgICAgICAgICAgICAgICB0aW1lY29kZVRyYWNrLT5zZXRBbGJ1bSgg dHJhY2suYWxidW0gKTsKKy0gICAgICAgICAgICAgICAgICAgIHRpbWVjb2RlVHJhY2stPnNldEFy dGlzdCggdHJhY2suY3JlYXRvciApOworLSAgICAgICAgICAgICAgICAgICAgdGltZWNvZGVUcmFj ay0+ZW5kTWV0YURhdGFVcGRhdGUoKTsKKy0gICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAg IH0KKy0KKy0gICAgICAgICAgICBtX3RyYWNrcyA8PCB0cmFja1B0cjsKKy0gICAgICAgIH0KKy0K Ky0KKy0gICAgICAgIC8vIHdoeSBkbyB3ZSBuZWVkIHRoaXM/IHNxbHBsYXlsaXN0IGlzIG5vdCBk b2luZyB0aGlzCistICAgICAgICAvLyB3ZSBkb24ndCB3YW50IChwcm9iYWJseSkgdW5wbGF5YWJs ZSB0cmFja3MKKy0gICAgICAgIC8vIGFuZCBpdCBjYXVzZXMgcHJvYmxlbXMgZm9yIG1lIChEYW5p ZWxXKSBhcyBsb25nCistICAgICAgICAvLyBhbWFyb2sgbm90IHJlc3BlY3RzIFRyYWNrOjppc1Bs YXlhYmxlKCkKKy0gICAgICAgIC8qZWxzZSB7CistCistICAgICAgICAgICAgTWV0YVByb3h5OjpU cmFjayAqcHJveHlUcmFjayA9IG5ldyBNZXRhUHJveHk6OlRyYWNrKCB0cmFjay5sb2NhdGlvbiAp OworLSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgLy9GaWxsIGluIHZhbHVlcyBmcm9t IHhzcGYuLgorLSAgICAgICAgICAgICAgICBRVmFyaWFudE1hcCBtYXA7CistICAgICAgICAgICAg ICAgIG1hcC5pbnNlcnQoIE1ldGE6OkZpZWxkOjpUSVRMRSwgdHJhY2sudGl0bGUgKTsKKy0gICAg ICAgICAgICAgICAgbWFwLmluc2VydCggTWV0YTo6RmllbGQ6OkFMQlVNLCB0cmFjay5hbGJ1bSAp OworLSAgICAgICAgICAgICAgICBtYXAuaW5zZXJ0KCBNZXRhOjpGaWVsZDo6QVJUSVNULCB0cmFj ay5jcmVhdG9yICk7CistICAgICAgICAgICAgICAgIG1hcC5pbnNlcnQoIE1ldGE6OkZpZWxkOjpM RU5HVEgsIHRyYWNrLmR1cmF0aW9uICk7CistICAgICAgICAgICAgICAgIG1hcC5pbnNlcnQoIE1l dGE6OkZpZWxkOjpUUkFDS05VTUJFUiwgdHJhY2sudHJhY2tOdW0gKTsKKy0gICAgICAgICAgICAg ICAgbWFwLmluc2VydCggTWV0YTo6RmllbGQ6OlVSTCwgdHJhY2subG9jYXRpb24gKTsKKy0gICAg ICAgICAgICAgICAgTWV0YTo6RmllbGQ6OnVwZGF0ZVRyYWNrKCBwcm94eVRyYWNrLCBtYXAgKTsK Ky0gICAgICAgICAgICB9CistICAgICAgICAgICAgbV90cmFja3MgPDwgTWV0YTo6VHJhY2tQdHIo IHByb3h5VHJhY2sgKTsKKy0gICAgLy8gICAgICAgICBtX3RyYWNrcyA8PCBDb2xsZWN0aW9uTWFu YWdlcjo6aW5zdGFuY2UoKS0+dHJhY2tGb3JVcmwoIHRyYWNrLmxvY2F0aW9uICk7CistICAgICAg ICB9Ki8KKy0KKysgICAgICAgTWV0YVByb3h5OjpUcmFjayAqcHJveHlUcmFjayA9IG5ldyBNZXRh UHJveHk6OlRyYWNrKCB0cmFjay5sb2NhdGlvbiApOworKyAgICAgICAvL0ZpbGwgaW4gdmFsdWVz IGZyb20geHNwZi4uCisrICAgICAgIHByb3h5VHJhY2stPnNldE5hbWUoIHRyYWNrLnRpdGxlICk7 CisrICAgICAgIHByb3h5VHJhY2stPnNldEFsYnVtKCB0cmFjay5hbGJ1bSApOworKyAgICAgICBw cm94eVRyYWNrLT5zZXRBcnRpc3QoIHRyYWNrLmNyZWF0b3IgKTsKKysgICAgICAgcHJveHlUcmFj ay0+c2V0TGVuZ3RoKCB0cmFjay5kdXJhdGlvbiApOworKyAgICAgICBwcm94eVRyYWNrLT5zZXRU cmFja051bWJlciggdHJhY2sudHJhY2tOdW0gKTsKKysgICAgICAgbV90cmFja3MgPDwgTWV0YTo6 VHJhY2tQdHIoIHByb3h5VHJhY2sgKTsKKyAgICAgfQorIAorICAgICBtX3RyYWNrc0xvYWRlZCA9 IHRydWU7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvY29sbGVjdGlvbnMvc3VwcG9ydC9UcmFja0Zv clVybFdvcmtlci5oIGIvc3JjL2NvcmUvY29sbGVjdGlvbnMvc3VwcG9ydC9UcmFja0ZvclVybFdv cmtlci5oCitpbmRleCA2NGQyM2JkLi4xNmQ3NjRlIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvY29s bGVjdGlvbnMvc3VwcG9ydC9UcmFja0ZvclVybFdvcmtlci5oCisrKysgYi9zcmMvY29yZS9jb2xs ZWN0aW9ucy9zdXBwb3J0L1RyYWNrRm9yVXJsV29ya2VyLmgKK0BAIC0zNSwxNyArMzUsMTcgQEAg Y2xhc3MgQU1BUk9LX0NPUkVfRVhQT1JUIFRyYWNrRm9yVXJsV29ya2VyIDogcHVibGljIFRocmVh ZFdlYXZlcjo6Sm9iCisgeworICAgICBRX09CSkVDVAorIHB1YmxpYzoKKy0gICAgVHJhY2tGb3JV cmxXb3JrZXIgKCBjb25zdCBLVXJsICZ1cmwgKTsKKy0gICAgVHJhY2tGb3JVcmxXb3JrZXIgKCBj b25zdCBRU3RyaW5nICZ1cmwgKTsKKysgICAgVHJhY2tGb3JVcmxXb3JrZXIoIGNvbnN0IEtVcmwg JnVybCApOworKyAgICBUcmFja0ZvclVybFdvcmtlciggY29uc3QgUVN0cmluZyAmdXJsICk7Cisg ICAgIH5UcmFja0ZvclVybFdvcmtlcigpOworIAorLSAgICB2aXJ0dWFsIHZvaWQgcnVuICgpID0g MDsKKysgICAgdmlydHVhbCB2b2lkIHJ1bigpID0gMDsKKyBzaWduYWxzOgorLSAgICB2b2lkIGZp bmlzaGVkTG9va3VwICggY29uc3QgTWV0YTo6VHJhY2tQdHIgICZ0cmFjayApOworKyAgICB2b2lk IGZpbmlzaGVkTG9va3VwKCBjb25zdCBNZXRhOjpUcmFja1B0ciAmdHJhY2sgKTsKKyAKKyBwcm90 ZWN0ZWQ6CistICAgIEtVcmwgbVVybDsKKy0gICAgTWV0YTo6VHJhY2tQdHIgbVRyYWNrOworKyAg ICBLVXJsIG1fdXJsOworKyAgICBNZXRhOjpUcmFja1B0ciBtX3RyYWNrOworIAorIHByaXZhdGUg c2xvdHM6CisgICAgIHZvaWQgY29tcGxldGVKb2IoKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9j b2xsZWN0aW9ucy9zdXBwb3J0L1RyYWNrRm9yVXJsV29ya2VyLmNwcCBiL3NyYy9jb3JlL2NvbGxl Y3Rpb25zL3N1cHBvcnQvVHJhY2tGb3JVcmxXb3JrZXIuY3BwCitpbmRleCA3ZThmMjg5Li4yOGQ5 MmJiIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvY29sbGVjdGlvbnMvc3VwcG9ydC9UcmFja0ZvclVy bFdvcmtlci5jcHAKKysrKyBiL3NyYy9jb3JlL2NvbGxlY3Rpb25zL3N1cHBvcnQvVHJhY2tGb3JV cmxXb3JrZXIuY3BwCitAQCAtMTYsMTQgKzE2LDE4IEBACisgCisgI2luY2x1ZGUgIlRyYWNrRm9y VXJsV29ya2VyLmgiCisgCistQW1hcm9rOjpUcmFja0ZvclVybFdvcmtlcjo6VHJhY2tGb3JVcmxX b3JrZXIgKCBjb25zdCBLVXJsICZ1cmwgKSA6IFRocmVhZFdlYXZlcjo6Sm9iKCksIG1VcmwgKCB1 cmwgKQorK0FtYXJvazo6VHJhY2tGb3JVcmxXb3JrZXI6OlRyYWNrRm9yVXJsV29ya2VyKCBjb25z dCBLVXJsICZ1cmwgKQorKyAgICA6IFRocmVhZFdlYXZlcjo6Sm9iKCkKKysgICAgLCBtX3VybCgg dXJsICkKKyB7CistICAgIGNvbm5lY3QgKCB0aGlzLCBTSUdOQUwgKCBkb25lICggVGhyZWFkV2Vh dmVyOjpKb2IqICkgKSwgU0xPVCAoIGNvbXBsZXRlSm9iKCkgKSApOworKyAgICBjb25uZWN0KCB0 aGlzLCBTSUdOQUwoZG9uZSggVGhyZWFkV2VhdmVyOjpKb2IgKiApKSwgU0xPVCggY29tcGxldGVK b2IoKSkgKTsKKyB9CisgCistQW1hcm9rOjpUcmFja0ZvclVybFdvcmtlcjo6VHJhY2tGb3JVcmxX b3JrZXIoIGNvbnN0IFFTdHJpbmcgJnVybCApIDogVGhyZWFkV2VhdmVyOjpKb2IoKSwgbVVybCAo IEtVcmwgKCB1cmwgKSApCisrQW1hcm9rOjpUcmFja0ZvclVybFdvcmtlcjo6VHJhY2tGb3JVcmxX b3JrZXIoIGNvbnN0IFFTdHJpbmcgJnVybCApCisrICAgIDogVGhyZWFkV2VhdmVyOjpKb2IoKQor KyAgICAsIG1fdXJsKCBLVXJsKCB1cmwgKSApCisgeworLSAgICBjb25uZWN0ICggdGhpcywgU0lH TkFMICggZG9uZSAoIFRocmVhZFdlYXZlcjo6Sm9iKiApICksIFNMT1QgKCBjb21wbGV0ZUpvYigp ICkgKTsKKysgICAgY29ubmVjdCggdGhpcywgU0lHTkFMKGRvbmUoIFRocmVhZFdlYXZlcjo6Sm9i ICogKSksIFNMT1QoIGNvbXBsZXRlSm9iKCkpICk7CisgfQorIAorIEFtYXJvazo6VHJhY2tGb3JV cmxXb3JrZXI6On5UcmFja0ZvclVybFdvcmtlcigpCitAQCAtMzIsNiArMzYsNiBAQCBBbWFyb2s6 OlRyYWNrRm9yVXJsV29ya2VyOjp+VHJhY2tGb3JVcmxXb3JrZXIoKQorIHZvaWQKKyBBbWFyb2s6 OlRyYWNrRm9yVXJsV29ya2VyOjpjb21wbGV0ZUpvYigpCisgeworLSAgICBlbWl0ICggZmluaXNo ZWRMb29rdXAgKCBtVHJhY2sgKSApOworKyAgICBlbWl0KCBmaW5pc2hlZExvb2t1cCggbV90cmFj ayApICk7CisgICAgIGRlbGV0ZUxhdGVyKCk7CisgfQorZGlmZiAtLWdpdCBhL3NyYy9wbGF5bGlz dG1hbmFnZXIvc3FsL1NxbFBsYXlsaXN0LmNwcCBiL3NyYy9wbGF5bGlzdG1hbmFnZXIvc3FsL1Nx bFBsYXlsaXN0LmNwcAoraW5kZXggMzlhZDc1OS4uM2EyMmRhNCAxMDA2NDQKKy0tLSBhL3NyYy9w bGF5bGlzdG1hbmFnZXIvc3FsL1NxbFBsYXlsaXN0LmNwcAorKysrIGIvc3JjL3BsYXlsaXN0bWFu YWdlci9zcWwvU3FsUGxheWxpc3QuY3BwCitAQCAtMTYsMTAgKzE2LDExIEBACisgCisgI2luY2x1 ZGUgIlNxbFBsYXlsaXN0LmgiCisgCistI2luY2x1ZGUgImNvcmUtaW1wbC9jb2xsZWN0aW9ucy9z dXBwb3J0L0NvbGxlY3Rpb25NYW5hZ2VyLmgiCisrI2luY2x1ZGUgImNvcmUvY29sbGVjdGlvbnMv c3VwcG9ydC9TcWxTdG9yYWdlLmgiCisgI2luY2x1ZGUgImNvcmUvc3VwcG9ydC9EZWJ1Zy5oIgor KyNpbmNsdWRlICJjb3JlLWltcGwvY29sbGVjdGlvbnMvc3VwcG9ydC9Db2xsZWN0aW9uTWFuYWdl ci5oIgorKyNpbmNsdWRlICJjb3JlLWltcGwvbWV0YS9wcm94eS9NZXRhUHJveHkuaCIKKyAjaW5j bHVkZSAiY29yZS1pbXBsL21ldGEvc3RyZWFtL1N0cmVhbS5oIgorLSNpbmNsdWRlICJjb3JlL2Nv bGxlY3Rpb25zL3N1cHBvcnQvU3FsU3RvcmFnZS5oIgorICNpbmNsdWRlICJjb3JlLWltcGwvbWV0 YS90aW1lY29kZS9UaW1lY29kZU1ldGEuaCIKKyAjaW5jbHVkZSAicGxheWxpc3RtYW5hZ2VyL1Bs YXlsaXN0TWFuYWdlci5oIgorICNpbmNsdWRlICJwbGF5bGlzdG1hbmFnZXIvc3FsL1NxbFBsYXls aXN0R3JvdXAuaCIKK0BAIC0yNzgsNiArMjc5LDkgQEAgU3FsUGxheWxpc3Q6OnJlbW92ZVRyYWNr KCBpbnQgcG9zaXRpb24gKQorIHZvaWQKKyBTcWxQbGF5bGlzdDo6bWV0YWRhdGFDaGFuZ2VkKCBN ZXRhOjpUcmFja1B0ciB0cmFjayApCisgeworKyAgICAvL1RPRE86IGRvIHdlIHJlYWxseSBuZWVk IHRvIG9ic2VydmUgdHJhY2sgY2hhbmdlcz8gTWV0YWRhdGEgd2lsbCBiZSBwcm9wZXJseSBzYXZl ZAorKyAgICAvL29uIGV4aXQgYW5kIHByb3h5IHRyYWNrcyBhcmUgbG9hZGVkIHdpdGggdWlkVXJs LiBTbyBhdCB3b3JzZSB0aGUgc2F2ZSBtZXRhZGF0YSBpbgorKyAgICAvL3BsYXlsaXN0X3RyYWNr cyB3aWxsIGJlIG91dGRhdGVkIHVudGlsIHJlYWwgdHJhY2sgaXMgbG9hZGVkLgorICAgICBpZigg IW1fdHJhY2tzTG9hZGVkICkKKyAgICAgICAgIGxvYWRUcmFja3MoKTsKKyAKK0BAIC0zMDgsNDMg KzMxMiwxNSBAQCBTcWxQbGF5bGlzdDo6bG9hZFRyYWNrcygpCisgICAgICAgICBRU3RyaW5nTGlz dCByb3cgPSByZXN1bHQubWlkKCBpKjcsIDcgKTsKKyAgICAgICAgIEtVcmwgdXJsID0gS1VybCgg cm93WzJdICk7CisgCistICAgICAgICBNZXRhOjpUcmFja1B0ciB0cmFja1B0ciA9IENvbGxlY3Rp b25NYW5hZ2VyOjppbnN0YW5jZSgpLT50cmFja0ZvclVybCggdXJsICk7CisrICAgICAgICBNZXRh UHJveHk6OlRyYWNrICpwcm94eVRyYWNrID0gbmV3IE1ldGFQcm94eTo6VHJhY2soIHVybCApOwor IAorLSAgICAgICAgaWYoIHRyYWNrUHRyICkKKy0gICAgICAgIHsKKy0gICAgICAgICAgICBpZigg dHlwZWlkKCAqIHRyYWNrUHRyLmRhdGEoKSApID09IHR5cGVpZCggTWV0YVN0cmVhbTo6VHJhY2sg KSApCistICAgICAgICAgICAgeworLQorLSAgICAgICAgICAgICAgICBkZWJ1ZygpIDw8ICJnb3Qg c3RyZWFtIGZyb20gdHJhY2tGb3JVcmwsIHNldHRpbmcgYWxidW0gdG8gIiA8PCByb3dbNF07Cist CistICAgICAgICAgICAgICAgIE1ldGFTdHJlYW06OlRyYWNrICogc3RyZWFtVHJhY2sgPQorLSAg ICAgICAgICAgICAgICAgICAgICAgIGR5bmFtaWNfY2FzdDxNZXRhU3RyZWFtOjpUcmFjayAqPiAo IHRyYWNrUHRyLmRhdGEoKSApOworLSAgICAgICAgICAgICAgICAKKy0gICAgICAgICAgICAgICAg aWYoIHN0cmVhbVRyYWNrICkKKy0gICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAg ICAgc3RyZWFtVHJhY2stPnNldFRpdGxlKCByb3dbM10gKTsKKy0gICAgICAgICAgICAgICAgICAg IHN0cmVhbVRyYWNrLT5zZXRBbGJ1bSggcm93WzRdICk7CistICAgICAgICAgICAgICAgICAgICBz dHJlYW1UcmFjay0+c2V0QXJ0aXN0KCByb3dbNV0gKTsKKy0gICAgICAgICAgICAgICAgfQorLSAg ICAgICAgICAgIH0KKy0gICAgICAgICAgICBlbHNlIGlmKCB0eXBlaWQoICogdHJhY2tQdHIuZGF0 YSgpICkgPT0gdHlwZWlkKCBNZXRhOjpUaW1lY29kZVRyYWNrICkgKQorLSAgICAgICAgICAgIHsK Ky0gICAgICAgICAgICAgICAgTWV0YTo6VGltZWNvZGVUcmFjayAqIHRpbWVjb2RlVHJhY2sgPQor LSAgICAgICAgICAgICAgICAgICAgICAgIGR5bmFtaWNfY2FzdDxNZXRhOjpUaW1lY29kZVRyYWNr ICo+ICggdHJhY2tQdHIuZGF0YSgpICk7CistCistICAgICAgICAgICAgICAgIGlmKCB0aW1lY29k ZVRyYWNrICkKKy0gICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgdGltZWNv ZGVUcmFjay0+YmVnaW5NZXRhRGF0YVVwZGF0ZSgpOworLSAgICAgICAgICAgICAgICAgICAgdGlt ZWNvZGVUcmFjay0+c2V0VGl0bGUoIHJvd1szXSApOworLSAgICAgICAgICAgICAgICAgICAgdGlt ZWNvZGVUcmFjay0+c2V0QWxidW0oIHJvd1s0XSApOworLSAgICAgICAgICAgICAgICAgICAgdGlt ZWNvZGVUcmFjay0+c2V0QXJ0aXN0KCByb3dbNV0gKTsKKy0gICAgICAgICAgICAgICAgICAgIHRp bWVjb2RlVHJhY2stPmVuZE1ldGFEYXRhVXBkYXRlKCk7CistICAgICAgICAgICAgICAgIH0KKy0g ICAgICAgICAgICB9CistCistICAgICAgICAgICAgc3Vic2NyaWJlVG8oIHRyYWNrUHRyICk7Cist ICAgICAgICAgICAgbV90cmFja3MgPDwgdHJhY2tQdHI7CistICAgICAgICB9CisrICAgICAgICBw cm94eVRyYWNrLT5zZXROYW1lKCByb3dbM10gKTsKKysgICAgICAgIHByb3h5VHJhY2stPnNldEFs YnVtKCByb3dbNF0gKTsKKysgICAgICAgIHByb3h5VHJhY2stPnNldEFydGlzdCggcm93WzVdICk7 CisrICAgICAgICBNZXRhOjpUcmFja1B0ciB0cmFja1B0ciA9IE1ldGE6OlRyYWNrUHRyKCBwcm94 eVRyYWNrICk7CisrICAgICAgICAvL3N1YnNjcmliZWQgdG8gZm9yY2UgYSBzYXZlIHRvIGRiIG9u IGFueSBjaGFuZ2UgKHN1Y2ggYXMgQUZUIGZpbGUgbW92ZSkKKysgICAgICAgIHN1YnNjcmliZVRv KCB0cmFja1B0ciApOworKyAgICAgICAgbV90cmFja3MgPDwgdHJhY2tQdHI7CisgICAgIH0KKyAK KyAgICAgbV90cmFja3NMb2FkZWQgPSB0cnVlOworZGlmZiAtLWdpdCBhL3NyYy9zZXJ2aWNlcy9h bXBhY2hlL0FtcGFjaGVTZXJ2aWNlQ29sbGVjdGlvbi5oIGIvc3JjL3NlcnZpY2VzL2FtcGFjaGUv QW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uLmgKK2luZGV4IGE0OGM4ZjIuLmNjNDk3NzUgMTAwNjQ0 CistLS0gYS9zcmMvc2VydmljZXMvYW1wYWNoZS9BbXBhY2hlU2VydmljZUNvbGxlY3Rpb24uaAor KysrIGIvc3JjL3NlcnZpY2VzL2FtcGFjaGUvQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uLmgKK0BA IC0yNSwxNCArMjUsMTYgQEAgY2xhc3MgQW1wYWNoZVRyYWNrRm9yVXJsV29ya2VyIDogcHVibGlj IEFtYXJvazo6VHJhY2tGb3JVcmxXb3JrZXIKKyB7CisgICAgIFFfT0JKRUNUCisgICAgIHB1Ymxp YzoKKy0gICAgICAgIEFtcGFjaGVUcmFja0ZvclVybFdvcmtlciggY29uc3QgS1VybCAmdXJsLCBN ZXRhUHJveHk6OlRyYWNrUHRyIHRyYWNrLCBjb25zdCBRU3RyaW5nICZzZXJ2ZXIsIGNvbnN0IFFT dHJpbmcgJnNlc3Npb25JZCwgU2VydmljZUJhc2UqIHNlcnZpY2UpOworKyAgICAgICAgQW1wYWNo ZVRyYWNrRm9yVXJsV29ya2VyKCBjb25zdCBLVXJsICZ1cmwsIE1ldGFQcm94eTo6VHJhY2tQdHIg dHJhY2ssCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcg JnNlcnZlciwgY29uc3QgUVN0cmluZyAmc2Vzc2lvbklkLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTZXJ2aWNlQmFzZSAqc2VydmljZSk7CisgICAgICAgICB+QW1wYWNoZVRy YWNrRm9yVXJsV29ya2VyKCk7CistICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuICgpOworKyAgICAg ICAgdmlydHVhbCB2b2lkIHJ1bigpOworICAgICAgICAgdm9pZCBwYXJzZVRyYWNrKCBjb25zdCBR U3RyaW5nICZ4bWwgKTsKKyAgICAgc2lnbmFsczoKKyAgICAgICAgIHZvaWQgYXV0aGVudGljYXRp b25OZWVkZWQoKTsKKyAgICAgcHJpdmF0ZToKKy0gICAgICAgIE1ldGFQcm94eTo6VHJhY2tQdHIg bVByb3h5OworKyAgICAgICAgTWV0YVByb3h5OjpUcmFja1B0ciBtX3Byb3h5OworICAgICAgICAg aW50IG1fdXJsVHJhY2tJZDsKKyAgICAgICAgIGludCBtX3VybEFsYnVtSWQ7CisgICAgICAgICBp bnQgbV91cmxBcnRpc3RJZDsKK0BAIC00NCw3ICs0Niw3IEBAIGNsYXNzIEFtcGFjaGVUcmFja0Zv clVybFdvcmtlciA6IHB1YmxpYyBBbWFyb2s6OlRyYWNrRm9yVXJsV29ya2VyCisgICAgICAgICBR U3RyaW5nIG1fc2VydmVyOworICAgICAgICAgUVN0cmluZyBtX3Nlc3Npb25JZDsKKyAKKy0gICAg ICAgIFNlcnZpY2VCYXNlKiBtX3NlcnZpY2U7CisrICAgICAgICBTZXJ2aWNlQmFzZSAqbV9zZXJ2 aWNlOworIH07CisgCisgbmFtZXNwYWNlIENvbGxlY3Rpb25zIHsKK0BAIC01OSwxMSArNjEsMTIg QEAgY2xhc3MgQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uIDogcHVibGljIFNlcnZpY2VDb2xsZWN0 aW9uCisgICAgIFFfT0JKRUNUCisgCisgcHVibGljOgorLSAgICBBbXBhY2hlU2VydmljZUNvbGxl Y3Rpb24oIFNlcnZpY2VCYXNlICogc2VydmljZSwgY29uc3QgUVN0cmluZyAmc2VydmVyLCBjb25z dCBRU3RyaW5nICZzZXNzaW9uSWQgKTsKKysgICAgQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uKCBT ZXJ2aWNlQmFzZSAqc2VydmljZSwgY29uc3QgUVN0cmluZyAmc2VydmVyLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJnNlc3Npb25JZCApOworIAorICAgICB2 aXJ0dWFsIH5BbXBhY2hlU2VydmljZUNvbGxlY3Rpb24oKTsKKyAKKy0gICAgdmlydHVhbCBRdWVy eU1ha2VyKiBxdWVyeU1ha2VyKCk7CisrICAgIHZpcnR1YWwgUXVlcnlNYWtlciAqcXVlcnlNYWtl cigpOworIAorICAgICB2aXJ0dWFsIFFTdHJpbmcgY29sbGVjdGlvbklkKCkgY29uc3Q7CisgICAg IHZpcnR1YWwgUVN0cmluZyBwcmV0dHlOYW1lKCkgY29uc3Q7CitAQCAtNzYsMTYgKzc5LDEzIEBA IHNpZ25hbHM6CisgCisgcHVibGljIHNsb3RzOgorICAgICB2b2lkIHNsb3RBdXRoZW50aWNhdGlv bk5lZWRlZCgpOworLSAgICB2b2lkIHNsb3RMb29rdXBDb21wbGV0ZSggY29uc3QgTWV0YTo6VHJh Y2tQdHImICk7CisrICAgIHZvaWQgc2xvdExvb2t1cENvbXBsZXRlKCBjb25zdCBNZXRhOjpUcmFj a1B0ciAmICk7CisgCisgcHJpdmF0ZToKKy0gICAgLyp2b2lkIHBhcnNlQWxidW0oIGNvbnN0IFFT dHJpbmcgJnhtbCApOworLSAgICB2b2lkIHBhcnNlQXJ0aXN0KCBjb25zdCBRU3RyaW5nICZ4bWwg KTsqLworLQorICAgICBRU3RyaW5nIG1fc2VydmVyOworICAgICBRU3RyaW5nIG1fc2Vzc2lvbklk OworIAorLSAgICBBbXBhY2hlVHJhY2tGb3JVcmxXb3JrZXIgKiBtX3RyYWNrRm9yVXJsV29ya2Vy OworKyAgICBBbXBhY2hlVHJhY2tGb3JVcmxXb3JrZXIgKm1fdHJhY2tGb3JVcmxXb3JrZXI7Cisg fTsKKyAKKyB9IC8vbmFtZXNwYWNlIENvbGxlY3Rpb25zCitkaWZmIC0tZ2l0IGEvc3JjL3NlcnZp Y2VzL2FtcGFjaGUvQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uLmNwcCBiL3NyYy9zZXJ2aWNlcy9h bXBhY2hlL0FtcGFjaGVTZXJ2aWNlQ29sbGVjdGlvbi5jcHAKK2luZGV4IGI2ODRlMzQuLmMzYjUx MTUgMTAwNjQ0CistLS0gYS9zcmMvc2VydmljZXMvYW1wYWNoZS9BbXBhY2hlU2VydmljZUNvbGxl Y3Rpb24uY3BwCisrKysgYi9zcmMvc2VydmljZXMvYW1wYWNoZS9BbXBhY2hlU2VydmljZUNvbGxl Y3Rpb24uY3BwCitAQCAtMjcsNyArMjcsOSBAQAorIAorIHVzaW5nIG5hbWVzcGFjZSBDb2xsZWN0 aW9uczsKKyAKKy1BbXBhY2hlU2VydmljZUNvbGxlY3Rpb246OkFtcGFjaGVTZXJ2aWNlQ29sbGVj dGlvbiggU2VydmljZUJhc2UgKiBzZXJ2aWNlLCBjb25zdCBRU3RyaW5nICZzZXJ2ZXIsIGNvbnN0 IFFTdHJpbmcgJnNlc3Npb25JZCApCisrQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uOjpBbXBhY2hl U2VydmljZUNvbGxlY3Rpb24oIFNlcnZpY2VCYXNlICpzZXJ2aWNlLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nICZzZXJ2 ZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IFFTdHJpbmcgJnNlc3Npb25JZCApCisgICAgIDogU2VydmljZUNvbGxlY3Rpb24oIHNl cnZpY2UsICJBbXBhY2hlQ29sbGVjdGlvbiIsICJBbXBhY2hlQ29sbGVjdGlvbiIgKQorICAgICAs IG1fc2VydmVyKCBzZXJ2ZXIgKQorICAgICAsIG1fc2Vzc2lvbklkKCBzZXNzaW9uSWQgKQorQEAg LTU4LDcgKzYwLDcgQEAgQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uOjpwcmV0dHlOYW1lKCkgY29u c3QKKyB9CisgCisgYm9vbAorLUFtcGFjaGVTZXJ2aWNlQ29sbGVjdGlvbjo6cG9zc2libHlDb250 YWluc1RyYWNrKGNvbnN0IEtVcmwgJiB1cmwpIGNvbnN0CisrQW1wYWNoZVNlcnZpY2VDb2xsZWN0 aW9uOjpwb3NzaWJseUNvbnRhaW5zVHJhY2soIGNvbnN0IEtVcmwgJnVybCApIGNvbnN0Cisgewor ICAgICByZXR1cm4gdXJsLnVybCgpLmNvbnRhaW5zKCBtX3NlcnZlciApOworIH0KK0BAIC03MCw3 NyArNzIsODIgQEAgQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9uOjpzbG90QXV0aGVudGljYXRpb25O ZWVkZWQoKQorIH0KKyAKKyBNZXRhOjpUcmFja1B0cgorLUFtcGFjaGVTZXJ2aWNlQ29sbGVjdGlv bjo6dHJhY2tGb3JVcmwoIGNvbnN0IEtVcmwgJiB1cmwgKQorK0FtcGFjaGVTZXJ2aWNlQ29sbGVj dGlvbjo6dHJhY2tGb3JVcmwoIGNvbnN0IEtVcmwgJnVybCApCisgeworLSAgICBNZXRhUHJveHk6 OlRyYWNrKiBwdHJhY2sgPSBuZXcgTWV0YVByb3h5OjpUcmFjayggdXJsLnVybCgpLCB0cnVlICk7 CistICAgIE1ldGFQcm94eTo6VHJhY2tQdHIgdHJhY2twdHIocHRyYWNrKTsKKy0gICAgQW1wYWNo ZVRyYWNrRm9yVXJsV29ya2VyICogd29ya2VyID0gIG5ldyBBbXBhY2hlVHJhY2tGb3JVcmxXb3Jr ZXIodXJsLCB0cmFja3B0ciwgbV9zZXJ2ZXIsIG1fc2Vzc2lvbklkLCBzZXJ2aWNlKCkgKTsKKy0v LyAgICAgY29ubmVjdCggd29ya2VyLCBTSUdOQUwoIGZpbmlzaGVkTG9va3VwICggY29uc3QgTWV0 YTo6VHJhY2tQdHImICkgKSwgdGhpcywKKy0vLyAgICAgICAgICAgICAgU0xPVCggc2xvdExvb2t1 cENvbXBsZXRlKCBjb25zdCBNZXRhOjpUcmFja1B0ciYgKSApICk7CistICAgIGNvbm5lY3QoIHdv cmtlciwgU0lHTkFMKCBhdXRoZW50aWNhdGlvbk5lZWRlZCgpICksIHRoaXMsCistICAgICAgICAg ICAgIFNMT1QoIHNsb3RBdXRoZW50aWNhdGlvbk5lZWRlZCgpICkgKTsKKysgICAgTWV0YVByb3h5 OjpUcmFjayAqcHRyYWNrID0gbmV3IE1ldGFQcm94eTo6VHJhY2soIHVybC51cmwoKSwgdHJ1ZSAp OworKyAgICBNZXRhUHJveHk6OlRyYWNrUHRyIHRyYWNrcHRyKCBwdHJhY2sgKTsKKysgICAgQW1w YWNoZVRyYWNrRm9yVXJsV29ya2VyICp3b3JrZXIgPSBuZXcgQW1wYWNoZVRyYWNrRm9yVXJsV29y a2VyKCB1cmwsIHRyYWNrcHRyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2VydmVyLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1fc2Vzc2lvbklkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UoKSApOworKyAgICBjb25uZWN0KCB3 b3JrZXIsIFNJR05BTChhdXRoZW50aWNhdGlvbk5lZWRlZCgpKSwgU0xPVChzbG90QXV0aGVudGlj YXRpb25OZWVkZWQoKSkgKTsKKyAgICAgVGhyZWFkV2VhdmVyOjpXZWF2ZXI6Omluc3RhbmNlKCkt PmVucXVldWUoIHdvcmtlciApOworIAorICAgICByZXR1cm4gTWV0YTo6VHJhY2tQdHI6OnN0YXRp Y0Nhc3QoIHRyYWNrcHRyICk7CisgfQorKworIHZvaWQgQW1wYWNoZVNlcnZpY2VDb2xsZWN0aW9u OjpzbG90TG9va3VwQ29tcGxldGUoIGNvbnN0IE1ldGE6OlRyYWNrUHRyJiApCisgeworIH0KKyAK KyB2b2lkIEFtcGFjaGVUcmFja0ZvclVybFdvcmtlcjo6cGFyc2VUcmFjayggY29uc3QgUVN0cmlu ZyAmeG1sICkKKyB7CistLy8gICAgIERFQlVHX0JMT0NLCistCistLy8gICAgICBkZWJ1ZygpIDw8 ICJSZWNlaXZlZCB0cmFjayByZXNwb25zZTogIiA8PCB4bWw7CistCistICAgICAvL3NvIGxldHMg ZmlndXJlIG91dCB3aGF0IHdlIGdvdCBoZXJlOgorKyAgICAvL3NvIGxldHMgZmlndXJlIG91dCB3 aGF0IHdlIGdvdCBoZXJlOgorICAgICBRRG9tRG9jdW1lbnQgZG9jKCAicmVwbHkiICk7CisgICAg IGRvYy5zZXRDb250ZW50KCB4bWwgKTsKKy0gICAgUURvbUVsZW1lbnQgcm9vdCA9IGRvYy5maXJz dENoaWxkRWxlbWVudCgicm9vdCIpOworLSAgICBRRG9tRWxlbWVudCBzb25nID0gcm9vdC5maXJz dENoaWxkRWxlbWVudCgic29uZyIpOworKyAgICBRRG9tRWxlbWVudCByb290ID0gZG9jLmZpcnN0 Q2hpbGRFbGVtZW50KCAicm9vdCIgKTsKKysgICAgUURvbUVsZW1lbnQgc29uZyA9IHJvb3QuZmly c3RDaGlsZEVsZW1lbnQoICJzb25nIiApOworIAorLSAgICBtX3VybFRyYWNrSWQgPSBzb25nLmF0 dHJpYnV0ZSggImlkIiwgIjAiKS50b0ludCgpOworKyAgICBtX3VybFRyYWNrSWQgPSBzb25nLmF0 dHJpYnV0ZSggImlkIiwgIjAiICkudG9JbnQoKTsKKyAKKy0gICAgUURvbUVsZW1lbnQgZWxlbWVu dCA9IHNvbmcuZmlyc3RDaGlsZEVsZW1lbnQoInRpdGxlIik7CisrICAgIFFEb21FbGVtZW50IGVs ZW1lbnQgPSBzb25nLmZpcnN0Q2hpbGRFbGVtZW50KCAidGl0bGUiICk7CisgCisgICAgIFFTdHJp bmcgdGl0bGUgPSBlbGVtZW50LnRleHQoKTsKKyAgICAgaWYgKCB0aXRsZS5pc0VtcHR5KCkgKSB0 aXRsZSA9ICJVbmtub3duIjsKKyAKKy0gICAgZWxlbWVudCA9IHNvbmcuZmlyc3RDaGlsZEVsZW1l bnQoInVybCIpOworKyAgICBlbGVtZW50ID0gc29uZy5maXJzdENoaWxkRWxlbWVudCggInVybCIg KTsKKyAKKyAgICAgbV91cmxUcmFjayA9IG5ldyBNZXRhOjpBbXBhY2hlVHJhY2soIHRpdGxlLCBt X3NlcnZpY2UgKTsKKyAgICAgTWV0YTo6VHJhY2tQdHIgdHJhY2tQdHIoIG1fdXJsVHJhY2sgKTsK KyAKKy0gICAgLy9kZWJ1ZygpIDw8ICJBZGRpbmcgdHJhY2s6ICIgPDwgIHRpdGxlOworICAgICBt X3VybFRyYWNrLT5zZXRVaWRVcmwoIGVsZW1lbnQudGV4dCgpICk7CisgICAgIG1fdXJsVHJhY2st PnNldElkKCBtX3VybFRyYWNrSWQgKTsKKyAKKy0gICAgZWxlbWVudCA9IHNvbmcuZmlyc3RDaGls ZEVsZW1lbnQoInRpbWUiKTsKKysgICAgZWxlbWVudCA9IHNvbmcuZmlyc3RDaGlsZEVsZW1lbnQo ICJ0aW1lIiApOworICAgICBtX3VybFRyYWNrLT5zZXRMZW5ndGgoIGVsZW1lbnQudGV4dCgpLnRv SW50KCkgKiAxMDAwICk7CisgCistICAgIGVsZW1lbnQgPSBzb25nLmZpcnN0Q2hpbGRFbGVtZW50 KCJ0cmFjayIpOworKyAgICBlbGVtZW50ID0gc29uZy5maXJzdENoaWxkRWxlbWVudCggInRyYWNr IiApOworICAgICBtX3VybFRyYWNrLT5zZXRUcmFja051bWJlciggZWxlbWVudC50ZXh0KCkudG9J bnQoKSApOworIAorLSAgICBRRG9tRWxlbWVudCBhbGJ1bUVsZW1lbnQgPSBzb25nLmZpcnN0Q2hp bGRFbGVtZW50KCJhbGJ1bSIpOworLSAgICAvL21fdXJsQWxidW1JZCA9IGFsYnVtRWxlbWVudC5h dHRyaWJ1dGUoICJpZCIsICIwIikudG9JbnQoKTsKKysgICAgUURvbUVsZW1lbnQgYWxidW1FbGVt ZW50ID0gc29uZy5maXJzdENoaWxkRWxlbWVudCggImFsYnVtIiApOworKyAgICBtX3VybEFsYnVt SWQgPSBhbGJ1bUVsZW1lbnQuYXR0cmlidXRlKCAiaWQiLCAiMCIgKS50b0ludCgpOworIAorLSAg ICBNZXRhOjpBbXBhY2hlQWxidW0gKiBhbGJ1bSA9IG5ldyBNZXRhOjpBbXBhY2hlQWxidW0oIGFs YnVtRWxlbWVudC50ZXh0KCkgKTsKKysgICAgTWV0YTo6QW1wYWNoZUFsYnVtICphbGJ1bSA9IG5l dyBNZXRhOjpBbXBhY2hlQWxidW0oIGFsYnVtRWxlbWVudC50ZXh0KCkgKTsKKyAKKy0gICAgUURv bUVsZW1lbnQgYXJ0RWxlbWVudCA9IHNvbmcuZmlyc3RDaGlsZEVsZW1lbnQoImFydCIpOworKyAg ICBRRG9tRWxlbWVudCBhcnRFbGVtZW50ID0gc29uZy5maXJzdENoaWxkRWxlbWVudCggImFydCIg KTsKKyAgICAgYWxidW0tPnNldENvdmVyVXJsKCBhcnRFbGVtZW50LnRleHQoKSApOworIAorICAg ICBhbGJ1bS0+YWRkVHJhY2soIHRyYWNrUHRyICk7CisgICAgIG1fdXJsVHJhY2stPnNldEFsYnVt UHRyKCBNZXRhOjpBbGJ1bVB0ciggYWxidW0gKSApOworIAorLSAgICBRRG9tRWxlbWVudCBhcnRp c3RFbGVtZW50ID0gc29uZy5maXJzdENoaWxkRWxlbWVudCgiYXJ0aXN0Iik7CistICAgIE1ldGE6 OlNlcnZpY2VBcnRpc3QgKiBhcnRpc3QgPSBuZXcgTWV0YTo6U2VydmljZUFydGlzdCggYXJ0aXN0 RWxlbWVudC50ZXh0KCkgKTsKKysgICAgUURvbUVsZW1lbnQgYXJ0aXN0RWxlbWVudCA9IHNvbmcu Zmlyc3RDaGlsZEVsZW1lbnQoICJhcnRpc3QiICk7CisrICAgIE1ldGE6OlNlcnZpY2VBcnRpc3Qg KmFydGlzdCA9IG5ldyBNZXRhOjpTZXJ2aWNlQXJ0aXN0KCBhcnRpc3RFbGVtZW50LnRleHQoKSAp OworIAorICAgICBNZXRhOjpBcnRpc3RQdHIgYXJ0aXN0UHRyKCBhcnRpc3QgKTsKKyAgICAgbV91 cmxUcmFjay0+c2V0QXJ0aXN0KCBhcnRpc3RQdHIgKTsKKyAgICAgYWxidW0tPnNldEFsYnVtQXJ0 aXN0KCBhcnRpc3RQdHIgKTsKKyB9CisgCistQW1wYWNoZVRyYWNrRm9yVXJsV29ya2VyOjpBbXBh Y2hlVHJhY2tGb3JVcmxXb3JrZXIoY29uc3QgS1VybCAmdXJsLCBNZXRhUHJveHk6OlRyYWNrUHRy IHRyYWNrLCBjb25zdCBRU3RyaW5nICZzZXJ2ZXIsIGNvbnN0IFFTdHJpbmcgJnNlc3Npb25JZCwg U2VydmljZUJhc2UqIHNlcnZpY2UpIDogQW1hcm9rOjpUcmFja0ZvclVybFdvcmtlcih1cmwpLCBt UHJveHkodHJhY2spLCBtX3NlcnZlcihzZXJ2ZXIpLCBtX3Nlc3Npb25JZChzZXNzaW9uSWQpLCBt X3NlcnZpY2Uoc2VydmljZSkKKytBbXBhY2hlVHJhY2tGb3JVcmxXb3JrZXI6OkFtcGFjaGVUcmFj a0ZvclVybFdvcmtlciggY29uc3QgS1VybCAmdXJsLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRhUHJveHk6OlRyYWNrUHRyIHRyYWNrLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBRU3RyaW5nICZzZXJ2ZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IFFTdHJpbmcgJnNlc3Npb25JZCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VydmljZUJhc2UgKnNlcnZp Y2UgKQorKyAgICA6IEFtYXJvazo6VHJhY2tGb3JVcmxXb3JrZXIoIHVybCApCisrICAgICwgbV9w cm94eSggdHJhY2sgKQorKyAgICAsIG1fc2VydmVyKCBzZXJ2ZXIgKQorKyAgICAsIG1fc2Vzc2lv bklkKCBzZXNzaW9uSWQgKQorKyAgICAsIG1fc2VydmljZSggc2VydmljZSApCisgeworIH0KKyAK K0BAIC0xNTAsOCArMTU3LDYgQEAgQW1wYWNoZVRyYWNrRm9yVXJsV29ya2VyOjp+QW1wYWNoZVRy YWNrRm9yVXJsV29ya2VyKCkKKyB2b2lkCisgQW1wYWNoZVRyYWNrRm9yVXJsV29ya2VyOjpydW4o KQorIHsKKy0gICAgLy8gREVCVUdfQkxPQ0s7CistCisgICAgIG1fdXJsVHJhY2sgPSAwOworICAg ICBtX3VybEFsYnVtID0gMDsKKyAgICAgbV91cmxBcnRpc3QgPSAwOworQEAgLTE2Miw5ICsxNjcs OSBAQCBBbXBhY2hlVHJhY2tGb3JVcmxXb3JrZXI6OnJ1bigpCisgCisgICAgIC8vc2VuZCB1cmxf dG9fc29uZyB0byBBbXBhY2hlCisgCistICAgIFFTdHJpbmcgcmVxdWVzdFVybCA9IFFTdHJpbmco ICIlMS9zZXJ2ZXIveG1sLnNlcnZlci5waHA/YWN0aW9uPXVybF90b19zb25nJmF1dGg9JTImdXJs PSUzIikKKy0gICAgLiBhcmcoICBtX3NlcnZlciwgIG1fc2Vzc2lvbklkLCAgUVVybDo6dG9QZXJj ZW50RW5jb2RpbmcoIG1VcmwudXJsKCkgKSApOworLSAgICAvLyAgICAgZGVidWcoKSA8PCAicmVx dWVzdCB1cmw6ICIgPDwgcmVxdWVzdFVybDsKKysgICAgUVN0cmluZyByZXF1ZXN0VXJsID0KKysg ICAgICAgICAgICBRU3RyaW5nKCAiJTEvc2VydmVyL3htbC5zZXJ2ZXIucGhwP2FjdGlvbj11cmxf dG9fc29uZyZhdXRoPSUyJnVybD0lMyIgKQorKyAgICAgICAgICAgICAgICAgICAgLmFyZyggbV9z ZXJ2ZXIsIG1fc2Vzc2lvbklkLCBRVXJsOjp0b1BlcmNlbnRFbmNvZGluZyggbV91cmwudXJsKCkg KSApOworIAorICAgICBRTmV0d29ya1JlcXVlc3QgcmVxKCByZXF1ZXN0VXJsICk7CisgICAgIFFO ZXR3b3JrUmVwbHkgKnJlcGx5ID0gVGhlOjpuZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5nZXQoIHJl cSApOworQEAgLTE3OCw3ICsxODMsNyBAQCBBbXBhY2hlVHJhY2tGb3JVcmxXb3JrZXI6OnJ1bigp CisgICAgICAgICB9CisgICAgIH0KKyAgICAgcGFyc2VUcmFjayggcmVwbHktPnJlYWRBbGwoKSAp OworLSAgICBtVHJhY2sgPSBNZXRhOjpUcmFja1B0ciggbV91cmxUcmFjayApOworLSAgICBtUHJv eHktPnVwZGF0ZVRyYWNrKCBtVHJhY2sgKTsKKysgICAgbV90cmFjayA9IE1ldGE6OlRyYWNrUHRy KCBtX3VybFRyYWNrICk7CisrICAgIG1fcHJveHktPnVwZGF0ZVRyYWNrKCBtX3RyYWNrICk7Cisg ICAgIHJlcGx5LT5kZWxldGVMYXRlcigpOworIH0KCmRpZmYgLS1naXQgYS9hbWFyb2suc3BlYyBi L2FtYXJvay5zcGVjCmluZGV4IDRiZGYxNmUuLjE4ZjlhM2YgMTAwNjQ0Ci0tLSBhL2FtYXJvay5z cGVjCisrKyBiL2FtYXJvay5zcGVjCkBAIC0yLDcgKzIsNyBAQAogTmFtZTogICAgYW1hcm9rCiBT dW1tYXJ5OiBNZWRpYSBwbGF5ZXIKIFZlcnNpb246IDIuNS4wCi1SZWxlYXNlOiA4JXs/ZGlzdH0K K1JlbGVhc2U6IDklez9kaXN0fQogCiAjIEtERSBlLlYuIG1heSBkZXRlcm1pbmUgdGhhdCBmdXR1 cmUgR1BMIHZlcnNpb25zIGFyZSBhY2NlcHRlZAogTGljZW5zZTogR1BMdjIgb3IgR1BMdjMKQEAg LTIxLDcgKzIxLDcgQEAgUGF0Y2gwOiAgYW1hcm9rLTIuNS4wLW9ubGluZWRvYy5wYXRjaAogUGF0 Y2gxMDA6IGFtYXJvay0yLjUuMC1rZGU0OF9jb250ZXh0X3ZpZXcucGF0Y2ggCiAjIExvYWQgYWxs IHRyYWNrcyBmcm9tIFhTUEYgdXNpbmcgTWV0YVByb3h5LgogIyBodHRwczovL2J1Z3Mua2RlLm9y Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjk1MTk5Ci1QYXRjaDEwMTogMDAwMS1Mb2FkLWFsbC10cmFja3Mt ZnJvbS1YU1BGLXVzaW5nLU1ldGFQcm94eS5wYXRjaAorUGF0Y2gxMDE6IGFtYXJvay0yLjUuMC1w cm94eV9sb2FkaW5nLnBhdGNoIAogCiBCdWlsZFJlcXVpcmVzOiBjdXJsLWRldmVsCiBCdWlsZFJl cXVpcmVzOiBkZXNrdG9wLWZpbGUtdXRpbHMKQEAgLTkzLDcgKzkzLDcgQEAgQnVpbGRBcmNoOiBu b2FyY2gKICVwYXRjaDAgLXAxIC1iIC5vbmxpbmVkb2MKICNwYXRjaDUwIC1wMSAtYiAucXRzY3Jp cHRfbm90X3JlcXVpcmVkCiAlcGF0Y2gxMDAgLXAxIC1iIC5rZGU0OF9jb250ZXh0X3ZpZXcKLSVw YXRjaDEwMSAtcDEgLWIgLmxvYWRhbGxfeHNwZgorJXBhdGNoMTAxIC1wMSAtYiAucHJveHlfbG9h ZGluZwogCiAKICVidWlsZApAQCAtMTgzLDYgKzE4Myw5IEBAIGZpCiAKIAogJWNoYW5nZWxvZwor KiBXZWQgTWFyIDIxIDIwMTIgUmV4IERpZXRlciA8cmRpZXRlckBmZWRvcmFwcm9qZWN0Lm9yZz4g Mi41LjAtOQorLSBuZXcgaXRlcmF0aW9uIG9mIHByb3h5X2xvYWRpbmcgcGF0Y2ggKGtkZSMyOTUx OTkpCisKICogVHVlIE1hciAxMyAyMDEyIFJleCBEaWV0ZXIgPHJkaWV0ZXJAZmVkb3JhcHJvamVj dC5vcmc+IDIuNS4wLTgKIC0gTG9hZCBhbGwgWFNQRiB0cmFja3MgKGtkZSMyOTUxOTkpCiAK