From: mathew murphy Date: 2010-11-30T08:26:02+09:00 Subject: [ruby-core:33472] [Ruby 1.9-Feature#4100] Improve Net::HTTP documentation --mimepart_4cf4368a200a8_2c1fb9f00821816 Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Issue #4100 has been updated by mathew murphy. File net-http-2010.patch added I submitted some improvements to the net/http documentation back in 2005.= Most of them were ignored, including several additional examples. Since = the state of the documentation is currently being discussed on the web, I= decided to go back and find my patch, and manually re-apply the changes = that are still relevant, then regenerate a new patch against the current = 1.9 Ruby HEAD. Attached is the result. Hopefully there's not too much overlap with Eric = Hodel's improvements, which I confess I didn't look at, and hopefully we = can get the documentation improved more significantly this time around. The most controversial part of my changes might be the apparent deletion = of the exception/error class hierarchy from the overview; I did that beca= use the class hierarchy is available elsewhere. I replaced the copy in th= e overview with an example of how to actually check errors, and a link to= the full list. I also added the warning in the relevant place about userinfo in URLs not= being standard as per HTTP spec, noting that it's supported for historic= al reasons. Obviously, if the appropriate maintainer is going to support = it going forward anyway, you can remove that note... ---------------------------------------- http://redmine.ruby-lang.org/issues/show/4100 ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4cf4368a200a8_2c1fb9f00821816 Content-Type: text/x-patch; name=net-http-2010.patch Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=net-http-2010.patch SW5kZXg6IGh0dHAucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gaHR0 cC5yYgkocmV2aXNpb24gMjk5NzgpCisrKyBodHRwLnJiCSh3b3JraW5nIGNv cHkpCkBAIC05NywxMyArOTcsMTggQEAKICAgIyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7J3EnID0+ICdydWJ5JywgJ21heCcgPT4gJzUwJ30p CiAgICMgICAgIHB1dHMgcmVzLmJvZHkKICAgIwotICAjICAgICAjMjogUE9T VCB3aXRoIGJhc2ljIGF1dGhlbnRpY2F0aW9uCisgICMgICAgICMyOiBQT1NU IHdpdGggYmFzaWMgYXV0aGVudGljYXRpb24gc3VwcGxpZWQgaW4gdGhlIFVS TAorICAjCisgICMgICAgIChOb3RlIHRoYXQgdGhpcyBpcyBub3QgYSBsZWdh bCBVUkwgYXMgcGVyIFJGQyAxNzM4IHNlY3Rpb24gMy4zLCBidXQgCisgICMg ICAgIGlzIHN1cHBvcnRlZCBieSBwb3N0X2Zvcm0gZm9yIGhpc3RvcmljYWwg cmVhc29ucy4pCisgICMKICAgIyAgICAgcmVzID0gTmV0OjpIVFRQLnBvc3Rf Zm9ybShVUkkucGFyc2UoJ2h0dHA6Ly9qYWNrOnBhc3NAd3d3LmV4YW1wbGUu Y29tL3RvZG8uY2dpJyksCiAgICMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHsnZnJvbScgPT4gJzIwMDUtMDEtMDEnLAogICAj ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rv JyA9PiAnMjAwNS0wMy0zMSd9KQogICAjICAgICBwdXRzIHJlcy5ib2R5CiAg ICMKLSAgIyAgICAgIzM6IERldGFpbGVkIGNvbnRyb2wKKyAgIyAgICAgIzM6 IERldGFpbGVkIGNvbnRyb2wgb2YgUE9TVCB3aXRoIGF1dGhlbnRpY2F0aW9u CisgICMKICAgIyAgICAgdXJpID0gVVJJLnBhcnNlKCdodHRwOi8vd3d3LmV4 YW1wbGUuY29tL3RvZG8uY2dpJykKICAgIyAgICAgcmVxID0gTmV0OjpIVFRQ OjpQb3N0Lm5ldyh1cmkucGF0aCkKICAgIyAgICAgcmVxLmJhc2ljX2F1dGgg J2phY2snLCAncGFzcycKQEAgLTEyMyw4ICsxMjgsOSBAQAogICAjCiAgICMg PT09IEFjY2Vzc2luZyB2aWEgUHJveHkKICAgIwotICAjIE5ldDo6SFRUUDo6 UHJveHkgaGFzIHRoZSBzYW1lIG1ldGhvZHMgYXMgTmV0OjpIVFRQIGJ1dCBp dHMgaW5zdGFuY2VzIGFsd2F5cwotICAjIGNvbm5lY3QgdmlhIHRoZSBwcm94 eSwgaW5zdGVhZCBvZiBnaXZlbiBob3N0LgorICAjIE5ldDo6SFRUUC5Qcm94 eSBpcyBhbiBodHRwIHByb3h5IGNsYXNzLiBJdCBoYXMgdGhlIHNhbWUKKyAg IyBtZXRob2RzIGFzIE5ldDo6SFRUUCwgYnV0IGl0cyBpbnN0YW5jZXMgYWx3 YXlzIGNvbm5lY3QgdmlhIGEgcHJveHksCisgICMgaW5zdGVhZCBvZiBkaXJl Y3RseSB0byB0aGUgZ2l2ZW4gaG9zdC4KICAgIwogICAjICAgICByZXF1aXJl ICduZXQvaHR0cCcKICAgIwpAQCAtMTM2LDE1ICsxNDIsMTkgQEAKICAgIyAg ICAgICAgICAgICA6CiAgICMgICAgIH0KICAgIwotICAjIFNpbmNlIE5ldDo6 SFRUUDo6UHJveHkgcmV0dXJucyBOZXQ6OkhUVFAgaXRzZWxmIHdoZW4gcHJv eHlfYWRkciBpcyBuaWwsCi0gICMgdGhlcmUncyBubyBuZWVkIHRvIGNoYW5n ZSBjb2RlIGlmIHRoZXJlJ3MgYSBwcm94eSBvciBub3QuCisgICMgVGhlIHRv cC1sZXZlbCBOZXQ6OkhUVFAgY2xhc3MgY3JlYXRlcyBvYmplY3RzIHdoaWNo IHJlcHJlc2VudAorICAjIEhUVFAgc2Vzc2lvbnMuCiAgICMKLSAgIyBUaGVy ZSBhcmUgdHdvIGFkZGl0aW9uYWwgcGFyYW1ldGVycyBpbiBOZXQ6OkhUVFA6 OlByb3h5IHdoaWNoIHlvdSBjYW4gdXNlIHRvCi0gICMgc3BlY2lmeSBhIHBy b3h5IHVzZXJuYW1lIGFuZCBwYXNzd29yZDoKKyAgIyBTaW5jZSBOZXQ6OkhU VFAuUHJveHkgcmV0dXJucyBOZXQ6OkhUVFAgaXRzZWxmIHdoZW4gK3Byb3h5 X2FkZHIrIGlzIG5pbCwKKyAgIyB0aGVyZSdzIG5vIG5lZWQgdG8gY2hhbmdl IHlvdXIgY29kZSBkZXBlbmRpbmcgb24gd2hldGhlciB0aGVyZSdzIGEgcHJv eHkgCisgICMgb3Igbm90LgorICAjIAorICAjIFRoZXJlIGFyZSB0d28gYWRk aXRpb25hbCBwYXJhbWV0ZXJzIGluIE5ldDo6SFRUUC5Qcm94eSB3aGljaCBh bGxvdyB5b3UgdG8KKyAgIyBzcGVjaWZ5IGEgdXNlciBuYW1lIGFuZCBwYXNz d29yZCBmb3IgdGhlIHByb3h5OgogICAjCiAgICMgICAgIE5ldDo6SFRUUDo6 UHJveHkocHJveHlfYWRkciwgcHJveHlfcG9ydCwgcHJveHlfdXNlciA9IG5p bCwgcHJveHlfcGFzcyA9IG5pbCkKICAgIwotICAjIFlvdSBtYXkgdXNlIHRo ZW0gdG8gd29yayB3aXRoIGF1dGhvcml6YXRpb24tZW5hYmxlZCBwcm94aWVz OgorICAjIFlvdSBjYW4gdXNlIHRoZW0gdG8gd29yayB3aXRoIGF1dGhvcml6 YXRpb24tZW5hYmxlZCBwcm94aWVzOgogICAjCiAgICMgICAgIHJlcXVpcmUg J25ldC9odHRwJwogICAjICAgICByZXF1aXJlICd1cmknCkBAIC0xNjAsNyAr MTcwLDcgQEAKICAgIyAgICAgfQogICAjCiAgICMgTm90ZSB0aGF0IG5ldC9o dHRwIGRvZXMgbm90IHVzZSB0aGUgSFRUUF9QUk9YWSBlbnZpcm9ubWVudCB2 YXJpYWJsZS4KLSAgIyBJZiB5b3Ugd2FudCB0byB1c2UgYSBwcm94eSwgeW91 IG11c3Qgc2V0IGl0IGV4cGxpY2l0bHkuCisgICMgSWYgeW91IHdhbnQgdG8g dXNlIGEgcHJveHksIHlvdSBtdXN0IGRvIHNvIGV4cGxpY2l0bHkuCiAgICMK ICAgIyA9PT0gRm9sbG93aW5nIFJlZGlyZWN0aW9uCiAgICMKQEAgLTE4Myw5 ICsxOTMsNTEgQEAKICAgIyAgICAgcHJpbnQgZmV0Y2goJ2h0dHA6Ly93d3cu cnVieS1sYW5nLm9yZycpCiAgICMKICAgIyBOZXQ6OkhUVFBTdWNjZXNzIGFu ZCBOZXQ6OkhUVFBSZWRpcmVjdGlvbiBhcmUgSFRUUFJlc3BvbnNlIHN1YmNs YXNzZXMuCi0gICMgQWxsIEhUVFBSZXNwb25zZSBvYmplY3RzIGJlbG9uZyB0 byB0aGVpciBvd24gcmVzcG9uc2UgY2xhc3Mgd2hpY2gKLSAgIyBpbmRpY2F0 ZXMgdGhlIEhUVFAgcmVzdWx0IHN0YXR1cy4KKyAgIyBBbGwgSFRUUFJlc3Bv bnNlIG9iamVjdHMgYmVsb25nIHRvIHRoZWlyIG93biByZXNwb25zZSBjbGFz cywgd2hpY2gKKyAgIyBpbmRpY2F0ZXMgdGhlIEhUVFAgcmVzdWx0IHN0YXR1 cy4gRm9yIGRldGFpbHMgb2YgdGhlIHJlc3BvbnNlIGNsYXNzZXMsCisgICMg c2VlIHRoZSBzZWN0aW9uICJIVFRQIFJlc3BvbnNlIENsYXNzZXMiLgogICAj CisgICMgPT09IEZ1bGwgZXhhbXBsZSB3aXRoIHJldHJ5aW5nIGFuZCBlcnJv ciByZXBvcnRpbmcKKyAgIworICAjICAgICByZXF1aXJlICd1cmknCisgICMg ICAgIHJlcXVpcmUgJ25ldC9odHRwJworICAjICAgICAKKyAgIyAgICAgdXJs ID0gImh0dHA6Ly93d3cuZXhhbXBsZS5jb20vIgorICAjICAgICAKKyAgIyAg ICAgIyBCcmVhayBhcGFydCB0aGUgVVJMCisgICMgICAgIHVyaSA9IFVSSS5w YXJzZSh1cmwpCisgICMgICAgICMgUmVhc3NlbWJsZSB0aGUgcGF0aCBmb3Ig dGhlIEhUVFAgcmVxdWVzdAorICAjICAgICBpZiB1cmkucXVlcnkKKyAgIyAg ICAgICBwYXRoID0gdXJpLnBhdGggKyAnPycgKyB1cmkucXVlcnkKKyAgIyAg ICAgZWxzZQorICAjICAgICAgIHBhdGggPSB1cmkucGF0aAorICAjICAgICBl bmQKKyAgIyAgICAgCisgICMgICAgICMgQ3JlYXRlIGEgcmVxdWVzdCBvYmpl Y3QKKyAgIyAgICAgcmVxdWVzdCA9IE5ldDo6SFRUUDo6R2V0Lm5ldyhwYXRo KQorICAjICAgICAKKyAgIyAgICAgIyBQcmVwYXJlIGFuIEhUVFAgY29ubmVj dGlvbiBvYmplY3QKKyAgIyAgICAgaHR0cCA9IE5ldDo6SFRUUC5uZXcodXJp Lmhvc3QsIHVyaS5wb3J0KQorICAjICAgICAKKyAgIyAgICAgIyBPcGVuIHRo ZSBjb25uZWN0aW9uIGFuZCBpc3N1ZSB0aGUgcmVxdWVzdCwgcmV0cnlpbmcg dXAgdG8gMyB0aW1lcyBpZiB0aGVyZQorICAjICAgICAjIGlzIGEgdGltZW91 dAorICAjICAgICBhdHRlbXB0cyA9IDEKKyAgIyAgICAgYmVnaW4KKyAgIyAg ICAgICByZXNwb25zZSA9IGh0dHAucmVxdWVzdChyZXF1ZXN0KQorICAjICAg ICByZXNjdWUgRXhjZXB0aW9uID0+IGUKKyAgIyAgICAgICBwdXRzIGUKKyAg IyAgICAgICBwdXRzICJbUmV0cnlpbmddIgorICAjICAgICAgIGF0dGVtcHRz ICs9IDEKKyAgIyAgICAgICByZXRyeSBpZiBhdHRlbXB0cyA8PSAzCisgICMg ICAgIGVuZAorICAjICAgICAKKyAgIyAgICAgIyBSZXBvcnQgdGhlIHJlc3Vs dAorICAjICAgICBpZiByZXNwb25zZS5raW5kX29mPyBOZXQ6OkhUVFBTdWNj ZXNzCisgICMgICAgICAgcHV0cyByZXNwb25zZS5ib2R5CisgICMgICAgIGVs c2UKKyAgIyAgICAgICByYWlzZSAiRXJyb3IgZmV0Y2hpbmcgI3t1cmx9OiAj e3Jlc3BvbnNlLmNvZGV9ICN7cmVzcG9uc2UubWVzc2FnZX0iCisgICMgICAg IGVuZAorICAjCiAgICMgPT09IEhUVFAgUmVxdWVzdCBDbGFzc2VzCiAgICMK ICAgIyBIZXJlIGlzIEhUVFAgcmVxdWVzdCBjbGFzcyBoaWVyYXJjaHkuCkBA IC0yMDgsNTcgKzI2MCwyNyBAQAogICAjCiAgICMgPT09IEhUVFAgUmVzcG9u c2UgQ2xhc3NlcwogICAjCi0gICMgSGVyZSBpcyBIVFRQIHJlc3BvbnNlIGNs YXNzIGhpZXJhcmNoeS4KLSAgIyBBbGwgY2xhc3NlcyBhcmUgZGVmaW5lZCBp biBOZXQgbW9kdWxlLgorICAjIFRoZSByZXF1ZXN0KCkgbWV0aG9kIHJldHVy bnMgYSByZXNwb25zZSBvZiBhIHNwZWNpZmljIGNsYXNzLCBkZXBlbmRpbmcK KyAgIyBvbiB0aGUgcmVzdWx0IG9mIHRoZSBIVFRQIHJlcXVlc3QuCiAgICMK LSAgIyAgIEhUVFBSZXNwb25zZQotICAjICAgICAgIEhUVFBVbmtub3duUmVz cG9uc2UKLSAgIyAgICAgICBIVFRQSW5mb3JtYXRpb24gICAgICAgICAgICAg ICAgICAgICMgMXh4Ci0gICMgICAgICAgICAgIEhUVFBDb250aW51ZSAgICAg ICAgICAgICAgICAgICAgICAgIyAxMDAKLSAgIyAgICAgICAgICAgSFRUUFN3 aXRjaFByb3RvY29sICAgICAgICAgICAgICAgICAjIDEwMQotICAjICAgICAg IEhUVFBTdWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgIyAyeHgKLSAg IyAgICAgICAgICAgSFRUUE9LICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAjIDIwMAotICAjICAgICAgICAgICBIVFRQQ3JlYXRlZCAgICAgICAgICAg ICAgICAgICAgICAgICMgMjAxCi0gICMgICAgICAgICAgIEhUVFBBY2NlcHRl ZCAgICAgICAgICAgICAgICAgICAgICAgIyAyMDIKLSAgIyAgICAgICAgICAg SFRUUE5vbkF1dGhvcml0YXRpdmVJbmZvcm1hdGlvbiAgICAjIDIwMwotICAj ICAgICAgICAgICBIVFRQTm9Db250ZW50ICAgICAgICAgICAgICAgICAgICAg ICMgMjA0Ci0gICMgICAgICAgICAgIEhUVFBSZXNldENvbnRlbnQgICAgICAg ICAgICAgICAgICAgIyAyMDUKLSAgIyAgICAgICAgICAgSFRUUFBhcnRpYWxD b250ZW50ICAgICAgICAgICAgICAgICAjIDIwNgotICAjICAgICAgIEhUVFBS ZWRpcmVjdGlvbiAgICAgICAgICAgICAgICAgICAgIyAzeHgKLSAgIyAgICAg ICAgICAgSFRUUE11bHRpcGxlQ2hvaWNlICAgICAgICAgICAgICAgICAjIDMw MAotICAjICAgICAgICAgICBIVFRQTW92ZWRQZXJtYW5lbnRseSAgICAgICAg ICAgICAgICMgMzAxCi0gICMgICAgICAgICAgIEhUVFBGb3VuZCAgICAgICAg ICAgICAgICAgICAgICAgICAgIyAzMDIKLSAgIyAgICAgICAgICAgSFRUUFNl ZU90aGVyICAgICAgICAgICAgICAgICAgICAgICAjIDMwMwotICAjICAgICAg ICAgICBIVFRQTm90TW9kaWZpZWQgICAgICAgICAgICAgICAgICAgICMgMzA0 Ci0gICMgICAgICAgICAgIEhUVFBVc2VQcm94eSAgICAgICAgICAgICAgICAg ICAgICAgIyAzMDUKLSAgIyAgICAgICAgICAgSFRUUFRlbXBvcmFyeVJlZGly ZWN0ICAgICAgICAgICAgICAjIDMwNwotICAjICAgICAgIEhUVFBDbGllbnRF cnJvciAgICAgICAgICAgICAgICAgICAgIyA0eHgKLSAgIyAgICAgICAgICAg SFRUUEJhZFJlcXVlc3QgICAgICAgICAgICAgICAgICAgICAjIDQwMAotICAj ICAgICAgICAgICBIVFRQVW5hdXRob3JpemVkICAgICAgICAgICAgICAgICAg ICMgNDAxCi0gICMgICAgICAgICAgIEhUVFBQYXltZW50UmVxdWlyZWQgICAg ICAgICAgICAgICAgIyA0MDIKLSAgIyAgICAgICAgICAgSFRUUEZvcmJpZGRl biAgICAgICAgICAgICAgICAgICAgICAjIDQwMwotICAjICAgICAgICAgICBI VFRQTm90Rm91bmQgICAgICAgICAgICAgICAgICAgICAgICMgNDA0Ci0gICMg ICAgICAgICAgIEhUVFBNZXRob2ROb3RBbGxvd2VkICAgICAgICAgICAgICAg IyA0MDUKLSAgIyAgICAgICAgICAgSFRUUE5vdEFjY2VwdGFibGUgICAgICAg ICAgICAgICAgICAjIDQwNgotICAjICAgICAgICAgICBIVFRQUHJveHlBdXRo ZW50aWNhdGlvblJlcXVpcmVkICAgICMgNDA3Ci0gICMgICAgICAgICAgIEhU VFBSZXF1ZXN0VGltZU91dCAgICAgICAgICAgICAgICAgIyA0MDgKLSAgIyAg ICAgICAgICAgSFRUUENvbmZsaWN0ICAgICAgICAgICAgICAgICAgICAgICAj IDQwOQotICAjICAgICAgICAgICBIVFRQR29uZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICMgNDEwCi0gICMgICAgICAgICAgIEhUVFBMZW5ndGhSZXF1 aXJlZCAgICAgICAgICAgICAgICAgIyA0MTEKLSAgIyAgICAgICAgICAgSFRU UFByZWNvbmRpdGlvbkZhaWxlZCAgICAgICAgICAgICAjIDQxMgotICAjICAg ICAgICAgICBIVFRQUmVxdWVzdEVudGl0eVRvb0xhcmdlICAgICAgICAgICMg NDEzCi0gICMgICAgICAgICAgIEhUVFBSZXF1ZXN0VVJJVG9vTG9uZyAgICAg ICAgICAgICAgIyA0MTQKLSAgIyAgICAgICAgICAgSFRUUFVuc3VwcG9ydGVk TWVkaWFUeXBlICAgICAgICAgICAjIDQxNQotICAjICAgICAgICAgICBIVFRQ UmVxdWVzdGVkUmFuZ2VOb3RTYXRpc2ZpYWJsZSAgICMgNDE2Ci0gICMgICAg ICAgICAgIEhUVFBFeHBlY3RhdGlvbkZhaWxlZCAgICAgICAgICAgICAgIyA0 MTcKLSAgIyAgICAgICBIVFRQU2VydmVyRXJyb3IgICAgICAgICAgICAgICAg ICAgICMgNXh4Ci0gICMgICAgICAgICAgIEhUVFBJbnRlcm5hbFNlcnZlckVy cm9yICAgICAgICAgICAgIyA1MDAKLSAgIyAgICAgICAgICAgSFRUUE5vdElt cGxlbWVudGVkICAgICAgICAgICAgICAgICAjIDUwMQotICAjICAgICAgICAg ICBIVFRQQmFkR2F0ZXdheSAgICAgICAgICAgICAgICAgICAgICMgNTAyCi0g ICMgICAgICAgICAgIEhUVFBTZXJ2aWNlVW5hdmFpbGFibGUgICAgICAgICAg ICAgIyA1MDMKLSAgIyAgICAgICAgICAgSFRUUEdhdGV3YXlUaW1lT3V0ICAg ICAgICAgICAgICAgICAjIDUwNAotICAjICAgICAgICAgICBIVFRQVmVyc2lv bk5vdFN1cHBvcnRlZCAgICAgICAgICAgICMgNTA1CisgICMgVG8gY2hlY2sg dGhlIHJlc3VsdCwgeW91IGNhbiB1c2UgdGhlIGtpbmRfb2Y/IG1ldGhvZC4g RXhhbXBsZToKICAgIworICAjICAgICByZXNwb25zZSA9IGh0dHAucmVxdWVz dChyZXEpCisgICMgICAgIGNhc2UKKyAgIyAgICAgICB3aGVuIHJlc3BvbnNl LmtpbmRfb2Y/IE5ldDo6SFRUUFN1Y2Nlc3MKKyAgIyAgICAgICAgICMgU3Vj Y2VlZGVkCisgICMgICAgICAgd2hlbiByZXNwb25zZS5raW5kX29mPyBOZXQ6 OkhUVFBSZWRpcmVjdGlvbgorICAjICAgICAgICAgIyBQYWdlIGhhcyBtb3Zl ZCwgaGFuZGxlIHJlZGlyZWN0CisgICMgICAgICAgd2hlbiByZXNwb25zZS5r aW5kX29mPyBOZXQ6OkhUVFBTZXJ2ZXJFcnJvcgorICAjICAgICAgICAgIyBT aXRlIGlzIGJyb2tlbgorICAjICAgICBlbmQKKyAgIworICAjIFNlZSBOZXQ6 OkhUVFBSZXNwb25zZSBmb3IgdGhlIGNvbXBsZXRlIGhpZXJhcmNoeSBvZiBy ZXNwb25zZSBjbGFzc2VzLgorICAjCisgICMgVGhlIEhUVFBSZXNwb25zZSBj bGFzc2VzIGFsbCBwcm92aWRlICtjb2RlKyBhbmQgK21lc3NhZ2UrIGFjY2Vz c29ycyB0byAKKyAgIyBvYnRhaW4gdGhlIDMtZGlnaXQgSFRUUCByZXN1bHQg Y29kZSBhbmQgdGhlIEhUVFAgcmVzdWx0IG1lc3NhZ2Ugc2VudCBieSAKKyAg IyB0aGUgc2VydmVyLgorICAjCiAgICMgPT0gU3dpdGNoaW5nIE5ldDo6SFRU UCB2ZXJzaW9ucwogICAjCiAgICMgWW91IGNhbiB1c2UgbmV0L2h0dHAucmIg MS4xIGZlYXR1cmVzIChidW5kbGVkIHdpdGggUnVieSAxLjYpCkBAIC0yOTQs NyArMzE2LDggQEAKICAgICAjIFR1cm5zIG9uIG5ldC9odHRwIDEuMiAocnVi eSAxLjgpIGZlYXR1cmVzLgogICAgICMgRGVmYXVsdHMgdG8gT04gaW4gcnVi eSAxLjguCiAgICAgIwotICAgICMgSSBzdHJvbmdseSByZWNvbW1lbmQgdG8g Y2FsbCB0aGlzIG1ldGhvZCBhbHdheXMuCisgICAgIyBJdCBpcyBzdHJvbmds eSByZWNvbW1lbmQgdGhhdCB5b3UgY2FsbCB0aGlzIG1ldGhvZCBhbHdheXMs IHVubGVzcworICAgICMgeW91IGhhdmUgYSBzcGVjaWZpYyByZWFzb24gZm9y IG5lZWRpbmcgb25seSBIVFRQIDEuMS4KICAgICAjCiAgICAgIyAgIHJlcXVp cmUgJ25ldC9odHRwJwogICAgICMgICBOZXQ6OkhUVFAudmVyc2lvbl8xXzIK QEAgLTMwOSwxMyArMzMyLDEzIEBACiAgICAgICBAbmV3aW1wbCA9IGZhbHNl CiAgICAgZW5kCiAKLSAgICAjIHRydWUgaWYgbmV0L2h0dHAgaXMgaW4gdmVy c2lvbiAxLjIgbW9kZS4KKyAgICAjIFJldHVybnMgdHJ1ZSBpZiBuZXQvaHR0 cCBpcyBpbiB2ZXJzaW9uIDEuMiBtb2RlLgogICAgICMgRGVmYXVsdHMgdG8g dHJ1ZS4KICAgICBkZWYgSFRUUC52ZXJzaW9uXzFfMj8KICAgICAgIEBuZXdp bXBsCiAgICAgZW5kCiAKLSAgICAjIHRydWUgaWYgbmV0L2h0dHAgaXMgaW4g dmVyc2lvbiAxLjEgY29tcGF0aWJsZSBtb2RlLgorISAgICMgUmV0dXJucyB0 cnVlIGlmIG5ldC9odHRwIGlzIGluIHZlcnNpb24gMS4xIGNvbXBhdGlibGUg bW9kZS4KICAgICAjIERlZmF1bHRzIHRvIHRydWUuCiAgICAgZGVmIEhUVFAu dmVyc2lvbl8xXzE/CiAgICAgICBub3QgQG5ld2ltcGwKQEAgLTMzMSw5ICsz NTQsOSBAQAogICAgICMKIAogICAgICMKLSAgICAjIEdldCBib2R5IGZyb20g dGFyZ2V0IGFuZCBvdXRwdXQgaXQgdG8gKyRzdGRvdXQrLiAgVGhlCi0gICAg IyB0YXJnZXQgY2FuIGVpdGhlciBiZSBzcGVjaWZpZWQgYXMgKCt1cmkrKSwg b3IgYXMKLSAgICAjICgraG9zdCssICtwYXRoKywgK3BvcnQrID0gODApOyBz bzoKKyAgICAjIEdldHMgdGhlIGJvZHkgdGV4dCBmcm9tIHRoZSB0YXJnZXQg YW5kIG91dHB1dHMgaXQgdG8gJHN0ZG91dC4gIFRoZQorICAgICMgdGFyZ2V0 IGNhbiBlaXRoZXIgYmUgc3BlY2lmaWVkIGFzIGEgVVJJIG9iamVjdCwgb3Ig YXMKKyAgICAjIChob3N0LCBwYXRoLCBwb3J0ID0gODApOyBzbzogCiAgICAg IwogICAgICMgICAgTmV0OjpIVFRQLmdldF9wcmludCBVUkkucGFyc2UoJ2h0 dHA6Ly93d3cuZXhhbXBsZS5jb20vaW5kZXguaHRtbCcpCiAgICAgIwpAQCAt MzUwLDcgKzM3Myw3IEBACiAgICAgICBuaWwKICAgICBlbmQKIAotICAgICMg U2VuZCBhIEdFVCByZXF1ZXN0IHRvIHRoZSB0YXJnZXQgYW5kIHJldHVybiB0 aGUgcmVzcG9uc2UKKyAgICAjIFNlbmRzIGEgR0VUIHJlcXVlc3QgdG8gdGhl IHRhcmdldCBhbmQgcmV0dXJucyB0aGUgSFRUUCByZXNwb25zZQogICAgICMg YXMgYSBzdHJpbmcuICBUaGUgdGFyZ2V0IGNhbiBlaXRoZXIgYmUgc3BlY2lm aWVkIGFzCiAgICAgIyAoK3VyaSspLCBvciBhcyAoK2hvc3QrLCArcGF0aCss ICtwb3J0KyA9IDgwKTsgc286CiAgICAgIwpAQCAtMzY0LDcgKzM4Nyw3IEBA CiAgICAgICBnZXRfcmVzcG9uc2UodXJpX29yX2hvc3QsIHBhdGgsIHBvcnQp LmJvZHkKICAgICBlbmQKIAotICAgICMgU2VuZCBhIEdFVCByZXF1ZXN0IHRv IHRoZSB0YXJnZXQgYW5kIHJldHVybiB0aGUgcmVzcG9uc2UKKyAgICAjIFNl bmRzIGEgR0VUIHJlcXVlc3QgdG8gdGhlIHRhcmdldCBhbmQgcmV0dXJucyB0 aGUgSFRUUCByZXNwb25zZQogICAgICMgYXMgYSBOZXQ6OkhUVFBSZXNwb25z ZSBvYmplY3QuICBUaGUgdGFyZ2V0IGNhbiBlaXRoZXIgYmUgc3BlY2lmaWVk IGFzCiAgICAgIyAoK3VyaSspLCBvciBhcyAoK2hvc3QrLCArcGF0aCssICtw b3J0KyA9IDgwKTsgc286CiAgICAgIwpAQCAtMzkwLDEyICs0MTMsMTMgQEAK ICAgICAgIGVuZAogICAgIGVuZAogCi0gICAgIyBQb3N0cyBIVE1MIGZvcm0g ZGF0YSB0byB0aGUgK1VSTCsuCi0gICAgIyBGb3JtIGRhdGEgbXVzdCBiZSBy ZXByZXNlbnRlZCBhcyBhIEhhc2ggb2YgU3RyaW5nIHRvIFN0cmluZywgZS5n OgorICAgICMgUG9zdHMgSFRNTCBmb3JtIGRhdGEgdG8gdGhlIHNwZWNpZmll ZCBVUkkgb2JqZWN0LgorICAgICMgVGhlIGZvcm0gZGF0YSBtdXN0IGJlIHBy b3ZpZGVkIGFzIGEgSGFzaCBtYXBwaW5nIGZyb20gU3RyaW5nIHRvIFN0cmlu Zy4KKyAgICAjIEV4YW1wbGU6CiAgICAgIwogICAgICMgICB7ICJjbWQiID0+ ICJzZWFyY2giLCAicSIgPT4gInJ1YnkiLCAibWF4IiA9PiAiNTAiIH0KICAg ICAjCi0gICAgIyBUaGlzIG1ldGhvZCBhbHNvIGRvZXMgQmFzaWMgQXV0aGVu dGljYXRpb24gaWZmICtVUkwrLnVzZXIgZXhpc3RzLgorICAgICMgVGhpcyBt ZXRob2QgYWxzbyBkb2VzIEJhc2ljIEF1dGhlbnRpY2F0aW9uIGlmZiArVVJJ Ky51c2VyIGV4aXN0cy4KICAgICAjCiAgICAgIyBFeGFtcGxlOgogICAgICMK QEAgLTQ0MSw4ICs0NjUsOCBAQAogICAgICMgICBIVFRQLnN0YXJ0KGFkZHJl c3MsIHBvcnQsIHBfYWRkciwgcF9wb3J0LCBwX3VzZXIsIHBfcGFzcywgJmJs b2NrKQogICAgICMgICBIVFRQLnN0YXJ0KGFkZHJlc3MsIHBvcnQ9bmlsLCBw X2FkZHI9bmlsLCBwX3BvcnQ9bmlsLCBwX3VzZXI9bmlsLCBwX3Bhc3M9bmls LCBvcHQsICZibG9jaykKICAgICAjCi0gICAgIyBjcmVhdGVzIGEgbmV3IE5l dDo6SFRUUCBvYmplY3QgYW5kIG9wZW5zIGl0cyBUQ1AgY29ubmVjdGlvbiBh bmQKLSAgICAjIEhUVFAgc2Vzc2lvbi4KKyAgICAjIENyZWF0ZXMgYSBuZXcg TmV0OjpIVFRQIG9iamVjdCwgdGhlbiBhZGRpdGlvbmFsbHkgb3BlbnMgdGhl IFRDUAorICAgICMgY29ubmVjdGlvbiBhbmQgSFRUUCBzZXNzaW9uLgogICAg ICMKICAgICAjIEFyZ21lbnRzIGFyZSBmb2xsb3dpbmc6CiAgICAgIyBfYWRk cmVzc18gOjogaG9zdG5hbWUgb3IgSVAgYWRkcmVzcyBvZiB0aGUgc2VydmVy CkBAIC00NjUsNyArNDg5LDggQEAKICAgICAjIGJsb2NrIGZpbmlzaGVzLiAg SW4gdGhpcyBjYXNlLCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoaXMgbWV0aG9k CiAgICAgIyBpcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBibG9jay4gIElm IG5vIGJsb2NrIGlzIGdpdmVuLCB0aGUKICAgICAjIHJldHVybiB2YWx1ZSBv ZiB0aGlzIG1ldGhvZCBpcyB0aGUgbmV3bHkgY3JlYXRlZCBOZXQ6OkhUVFAg b2JqZWN0Ci0gICAgIyBpdHNlbGYsIGFuZCB0aGUgY2FsbGVyIGlzIHJlc3Bv bnNpYmxlIGZvciBjbG9zaW5nIGl0IHVwb24gY29tcGxldGlvbi4KKyAgICAj IGl0c2VsZiwgYW5kIHRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGNs b3NpbmcgaXQgdXBvbiBjb21wbGV0aW9uCisgICAgIyB1c2luZyB0aGUgZmlu aXNoKCkgbWV0aG9kLgogICAgIGRlZiBIVFRQLnN0YXJ0KGFkZHJlc3MsICph cmcsICZibG9jaykgIyA6eWllbGQ6ICtodHRwKwogICAgICAgYXJnLnBvcCBp ZiBvcHQgPSBIYXNoLnRyeV9jb252ZXJ0KGFyZ1stMV0pCiAgICAgICBwb3J0 LCBwX2FkZHIsIHBfcG9ydCwgcF91c2VyLCBwX3Bhc3MgPSAqYXJnCkBAIC00 ODgsOSArNTEzLDEwIEBACiAgICAgICBhbGlhcyBuZXdvYmogbmV3CiAgICAg ZW5kCiAKLSAgICAjIENyZWF0ZXMgYSBuZXcgTmV0OjpIVFRQIG9iamVjdC4K LSAgICAjIElmICtwcm94eV9hZGRyKyBpcyBnaXZlbiwgY3JlYXRlcyBhbiBO ZXQ6OkhUVFAgb2JqZWN0IHdpdGggcHJveHkgc3VwcG9ydC4KLSAgICAjIFRo aXMgbWV0aG9kIGRvZXMgbm90IG9wZW4gdGhlIFRDUCBjb25uZWN0aW9uLgor ICAgICMgQ3JlYXRlcyBhIG5ldyBOZXQ6OkhUVFAgb2JqZWN0IHdpdGhvdXQg b3BlbmluZyBhIFRDUCBjb25uZWN0aW9uIG9yCisgICAgIyBIVFRQIHNlc3Np b24uCisgICAgIyBUaGUgK2FkZHJlc3MrIHNob3VsZCBiZSBhIEROUyBob3N0 bmFtZSBvciBJUCBhZGRyZXNzLgorICAgICMgSWYgK3BfYWRkcisgaXMgZ2l2 ZW4sIGNyZWF0ZXMgYSBOZXQ6OkhUVFAgb2JqZWN0IHdpdGggcHJveHkgc3Vw cG9ydC4KICAgICBkZWYgSFRUUC5uZXcoYWRkcmVzcywgcG9ydCA9IG5pbCwg cF9hZGRyID0gbmlsLCBwX3BvcnQgPSBuaWwsIHBfdXNlciA9IG5pbCwgcF9w YXNzID0gbmlsKQogICAgICAgaCA9IFByb3h5KHBfYWRkciwgcF9wb3J0LCBw X3VzZXIsIHBfcGFzcykubmV3b2JqKGFkZHJlc3MsIHBvcnQpCiAgICAgICBo Lmluc3RhbmNlX2V2YWwgewpAQCAtNDk5LDggKzUyNSw5IEBACiAgICAgICBo CiAgICAgZW5kCiAKLSAgICAjIENyZWF0ZXMgYSBuZXcgTmV0OjpIVFRQIG9i amVjdCBmb3IgdGhlIHNwZWNpZmllZCArYWRkcmVzcysuCi0gICAgIyBUaGlz IG1ldGhvZCBkb2VzIG5vdCBvcGVuIHRoZSBUQ1AgY29ubmVjdGlvbi4KKyAg ICAjIENyZWF0ZXMgYSBuZXcgTmV0OjpIVFRQIG9iamVjdCBmb3IgdGhlIHNw ZWNpZmllZCBzZXJ2ZXIgYWRkcmVzcywKKyAgICAjIHdpdGhvdXQgb3Blbmlu ZyB0aGUgVENQIGNvbm5lY3Rpb24gb3IgaW5pdGlhbGl6aW5nIHRoZSBIVFRQ IHNlc3Npb24uCisgICAgIyBUaGUgK2FkZHJlc3MrIHNob3VsZCBiZSBhIERO UyBob3N0bmFtZSBvciBJUCBhZGRyZXNzLgogICAgIGRlZiBpbml0aWFsaXpl KGFkZHJlc3MsIHBvcnQgPSBuaWwpCiAgICAgICBAYWRkcmVzcyA9IGFkZHJl c3MKICAgICAgIEBwb3J0ICAgID0gKHBvcnQgfHwgSFRUUC5kZWZhdWx0X3Bv cnQpCkBAIC01MjgsMTAgKzU1NSwxMCBAQAogICAgICAgIiM8I3tzZWxmLmNs YXNzfSAje0BhZGRyZXNzfToje0Bwb3J0fSBvcGVuPSN7c3RhcnRlZD99PiIK ICAgICBlbmQKIAotICAgICMgKldBUk5JTkcqIFRoaXMgbWV0aG9kIGNhdXNl cyBzZXJpb3VzIHNlY3VyaXR5IGhvbGUuCisgICAgIyAqV0FSTklORyogVGhp cyBtZXRob2Qgb3BlbnMgYSBzZXJpb3VzIHNlY3VyaXR5IGhvbGUuCiAgICAg IyBOZXZlciB1c2UgdGhpcyBtZXRob2QgaW4gcHJvZHVjdGlvbiBjb2RlLgog ICAgICMKLSAgICAjIFNldCBhbiBvdXRwdXQgc3RyZWFtIGZvciBkZWJ1Z2dp bmcuCisgICAgIyBTZXRzIGFuIG91dHB1dCBzdHJlYW0gZm9yIGRlYnVnZ2lu Zy4KICAgICAjCiAgICAgIyAgIGh0dHAgPSBOZXQ6OkhUVFAubmV3CiAgICAg IyAgIGh0dHAuc2V0X2RlYnVnX291dHB1dCAkc3RkZXJyCkBAIC01NDIsMTkg KzU2OSwxOSBAQAogICAgICAgQGRlYnVnX291dHB1dCA9IG91dHB1dAogICAg IGVuZAogCi0gICAgIyBUaGUgaG9zdCBuYW1lIHRvIGNvbm5lY3QgdG8uCisg ICAgIyBUaGUgRE5TIGhvc3QgbmFtZSBvciBJUCBhZGRyZXNzIHRvIGNvbm5l Y3QgdG8uCiAgICAgYXR0cl9yZWFkZXIgOmFkZHJlc3MKIAogICAgICMgVGhl IHBvcnQgbnVtYmVyIHRvIGNvbm5lY3QgdG8uCiAgICAgYXR0cl9yZWFkZXIg OnBvcnQKIAotICAgICMgU2Vjb25kcyB0byB3YWl0IHVudGlsIGNvbm5lY3Rp b24gaXMgb3BlbmVkLgorICAgICMgTnVtYmVyIG9mIHNlY29uZHMgdG8gd2Fp dCBmb3IgdGhlIGNvbm5lY3Rpb24gdG8gb3Blbi4KICAgICAjIElmIHRoZSBI VFRQIG9iamVjdCBjYW5ub3Qgb3BlbiBhIGNvbm5lY3Rpb24gaW4gdGhpcyBt YW55IHNlY29uZHMsCiAgICAgIyBpdCByYWlzZXMgYSBUaW1lb3V0RXJyb3Ig ZXhjZXB0aW9uLgogICAgIGF0dHJfYWNjZXNzb3IgOm9wZW5fdGltZW91dAog Ci0gICAgIyBTZWNvbmRzIHRvIHdhaXQgdW50aWwgcmVhZGluZyBvbmUgYmxv Y2sgKGJ5IG9uZSByZWFkKDIpIGNhbGwpLgotICAgICMgSWYgdGhlIEhUVFAg b2JqZWN0IGNhbm5vdCBvcGVuIGEgY29ubmVjdGlvbiBpbiB0aGlzIG1hbnkg c2Vjb25kcywKKyAgICAjIE51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgZm9y IG9uZSBibG9jayB0byBiZSByZWFkICh2aWEgb25lIHJlYWQoMikKKyAgICAj IGNhbGwpLiBJZiB0aGUgSFRUUCBvYmplY3QgY2Fubm90IHJlYWQgZGF0YSBp biB0aGlzIG1hbnkgc2Vjb25kcywKICAgICAjIGl0IHJhaXNlcyBhIFRpbWVv dXRFcnJvciBleGNlcHRpb24uCiAgICAgYXR0cl9yZWFkZXIgOnJlYWRfdGlt ZW91dAogCkBAIC01NjQsNyArNTkxLDcgQEAKICAgICAgIEByZWFkX3RpbWVv dXQgPSBzZWMKICAgICBlbmQKIAotICAgICMgcmV0dXJucyB0cnVlIGlmIHRo ZSBIVFRQIHNlc3Npb24gaXMgc3RhcnRlZC4KKyAgICAjIFJldHVybnMgdHJ1 ZSBpZiB0aGUgSFRUUCBzZXNzaW9uIGhhcyBiZWVuIHN0YXJ0ZWQuCiAgICAg ZGVmIHN0YXJ0ZWQ/CiAgICAgICBAc3RhcnRlZAogICAgIGVuZApAQCAtNTcz LDcgKzYwMCw3IEBACiAKICAgICBhdHRyX2FjY2Vzc29yIDpjbG9zZV9vbl9l bXB0eV9yZXNwb25zZQogCi0gICAgIyByZXR1cm5zIHRydWUgaWYgdXNlIFNT TC9UTFMgd2l0aCBIVFRQLgorICAgICMgUmV0dXJucyB0cnVlIGlmIFNTTC9U TFMgaXMgYmVpbmcgdXNlZCB3aXRoIEhUVFAuCiAgICAgZGVmIHVzZV9zc2w/ CiAgICAgICBAdXNlX3NzbAogICAgIGVuZApAQCAtNjA0LDE1ICs2MzEsMTUg QEAKICAgICAgIEBzb2NrZXQuaW8ucGVlcl9jZXJ0CiAgICAgZW5kCiAKLSAg ICAjIE9wZW5zIFRDUCBjb25uZWN0aW9uIGFuZCBIVFRQIHNlc3Npb24uCisg ICAgIyBPcGVucyBhIFRDUCBjb25uZWN0aW9uIGFuZCBIVFRQIHNlc3Npb24u CisgICAgIyAKKyAgICAjIFdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkIHdp dGggYSBibG9jaywgaXQgcGFzc2VzIHRoZSBOZXQ6OkhUVFAgCisgICAgIyBv YmplY3QgdG8gdGhlIGJsb2NrLCBhbmQgY2xvc2VzIHRoZSBUQ1AgY29ubmVj dGlvbiBhbmQgSFRUUCBzZXNzaW9uCisgICAgIyBhZnRlciB0aGUgYmxvY2sg aGFzIGJlZW4gZXhlY3V0ZWQuCiAgICAgIwotICAgICMgV2hlbiB0aGlzIG1l dGhvZCBpcyBjYWxsZWQgd2l0aCBibG9jaywgZ2l2ZXMgYSBIVFRQIG9iamVj dAotICAgICMgdG8gdGhlIGJsb2NrIGFuZCBjbG9zZXMgdGhlIFRDUCBjb25u ZWN0aW9uIC8gSFRUUCBzZXNzaW9uCi0gICAgIyBhZnRlciB0aGUgYmxvY2sg ZXhlY3V0ZWQuCisgICAgIyBXaGVuIGNhbGxlZCB3aXRoIGEgYmxvY2ssIGl0 IHJldHVybnMgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUKKyAgICAjIGJsb2Nr OyBvdGhlcndpc2UsIGl0IHJldHVybnMgc2VsZi4KICAgICAjCi0gICAgIyBX aGVuIGNhbGxlZCB3aXRoIGEgYmxvY2ssIHJldHVybnMgdGhlIHJldHVybiB2 YWx1ZSBvZiB0aGUKLSAgICAjIGJsb2NrOyBvdGhlcndpc2UsIHJldHVybnMg c2VsZi4KLSAgICAjCiAgICAgZGVmIHN0YXJ0ICAjIDp5aWVsZDogaHR0cAog ICAgICAgcmFpc2UgSU9FcnJvciwgJ0hUVFAgc2Vzc2lvbiBhbHJlYWR5IG9w ZW5lZCcgaWYgQHN0YXJ0ZWQKICAgICAgIGlmIGJsb2NrX2dpdmVuPwpAQCAt NjgxLDggKzcwOCw4IEBACiAgICAgZW5kCiAgICAgcHJpdmF0ZSA6b25fY29u bmVjdAogCi0gICAgIyBGaW5pc2hlcyBIVFRQIHNlc3Npb24gYW5kIGNsb3Nl cyBUQ1AgY29ubmVjdGlvbi4KLSAgICAjIFJhaXNlcyBJT0Vycm9yIGlmIG5v dCBzdGFydGVkLgorICAgICMgRmluaXNoZXMgdGhlIEhUVFAgc2Vzc2lvbiBh bmQgY2xvc2VzIHRoZSBUQ1AgY29ubmVjdGlvbi4KKyAgICAjIFJhaXNlcyBJ T0Vycm9yIGlmIHRoZSBzZXNzaW9uIGhhcyBub3QgYmVlbiBzdGFydGVkLgog ICAgIGRlZiBmaW5pc2gKICAgICAgIHJhaXNlIElPRXJyb3IsICdIVFRQIHNl c3Npb24gbm90IHlldCBzdGFydGVkJyB1bmxlc3Mgc3RhcnRlZD8KICAgICAg IGRvX2ZpbmlzaApAQCAtNzA4LDEzICs3MzUsMTggQEAKICAgICBAcHJveHlf dXNlciA9IG5pbAogICAgIEBwcm94eV9wYXNzID0gbmlsCiAKLSAgICAjIENy ZWF0ZXMgYW4gSFRUUCBwcm94eSBjbGFzcy4KLSAgICAjIEFyZ3VtZW50cyBh cmUgYWRkcmVzcy9wb3J0IG9mIHByb3h5IGhvc3QgYW5kIHVzZXJuYW1lL3Bh c3N3b3JkCi0gICAgIyBpZiBhdXRob3JpemF0aW9uIG9uIHByb3h5IHNlcnZl ciBpcyByZXF1aXJlZC4KLSAgICAjIFlvdSBjYW4gcmVwbGFjZSB0aGUgSFRU UCBjbGFzcyB3aXRoIGNyZWF0ZWQgcHJveHkgY2xhc3MuCisgICAgIyBDcmVh dGVzIGFuIEhUVFAgcHJveHkgY2xhc3Mgd2hpY2ggYmVoYXZlcyBsaWtlIE5l dDo6SFRUUCwgYnV0CisgICAgIyBwZXJmb3JtcyBhbGwgYWNjZXNzIHZpYSB0 aGUgc3BlY2lmaWVkIHByb3h5LgogICAgICMKLSAgICAjIElmIEFERFJFU1Mg aXMgbmlsLCB0aGlzIG1ldGhvZCByZXR1cm5zIHNlbGYgKE5ldDo6SFRUUCku CisgICAgIyBUaGUgYXJndW1lbnRzIGFyZSB0aGUgRE5TIG5hbWUgb3IgSVAg YWRkcmVzcyBvZiB0aGUgcHJveHkgaG9zdCwKKyAgICAjIHRoZSBwb3J0IHRv IHVzZSB0byBhY2Nlc3MgdGhlIHByb3h5LCBhbmQgYSB1c2VybmFtZSBhbmQg cGFzc3dvcmQKKyAgICAjIGlmIGF1dGhvcml6YXRpb24gaXMgcmVxdWlyZWQg dG8gdXNlIHRoZSBwcm94eS4KICAgICAjCisgICAgIyBZb3UgY2FuIHJlcGxh Y2UgYW55IHVzZSBvZiB0aGUgTmV0OjpIVFRQIGNsYXNzIHdpdGggdXNlIG9m IHRoZQorICAgICMgcHJveHkgY2xhc3MgY3JlYXRlZC4KKyAgICAjIAorICAg ICMgSWYgK3BfYWRkcisgaXMgbmlsLCB0aGlzIG1ldGhvZCByZXR1cm5zIHNl bGYgKGEgTmV0OjpIVFRQIG9iamVjdCkuCisgICAgIwogICAgICMgICAgICMg RXhhbXBsZQogICAgICMgICAgIHByb3h5X2NsYXNzID0gTmV0OjpIVFRQOjpQ cm94eSgncHJveHkuZXhhbXBsZS5jb20nLCA4MDgwKQogICAgICMgICAgICAg ICAgICAgICAgICAgICA6CkBAIC04NDYsOSArODc4LDkgQEAKICAgICAjCiAg ICAgIyBJbiB2ZXJzaW9uIDEuMSwgdGhpcyBtZXRob2QgbWlnaHQgcmFpc2Ug YW4gZXhjZXB0aW9uIGZvcgogICAgICMgM3h4IChyZWRpcmVjdCkuIEluIHRo aXMgY2FzZSB5b3UgY2FuIGdldCBhIEhUVFBSZXNwb25zZSBvYmplY3QKLSAg ICAjIGJ5ICJhbkV4Y2VwdGlvbi5yZXNwb25zZSIuCisgICAgIyBmcm9tICJh bkV4Y2VwdGlvbi5yZXNwb25zZSIuCiAgICAgIwotICAgICMgSW4gdmVyc2lv biAxLjIsIHRoaXMgbWV0aG9kIG5ldmVyIHJhaXNlcyBleGNlcHRpb24uCisg ICAgIyBJbiB2ZXJzaW9uIDEuMiwgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2Vz IGFuIGV4Y2VwdGlvbi4KICAgICAjCiAgICAgIyAgICAgIyB2ZXJzaW9uIDEu MSAoYnVuZGxlZCB3aXRoIFJ1YnkgMS42KQogICAgICMgICAgIHJlc3BvbnNl LCBib2R5ID0gaHR0cC5nZXQoJy9pbmRleC5odG1sJykKQEAgLTkwNyw3ICs5 MzksOCBAQAogICAgICMKICAgICAjIEluIHZlcnNpb24gMS4xLCB0aGlzIG1l dGhvZCBtaWdodCByYWlzZSBhbiBleGNlcHRpb24gZm9yCiAgICAgIyAzeHgg KHJlZGlyZWN0KS4gT24gdGhlIGNhc2UgeW91IGNhbiBnZXQgYSBIVFRQUmVz cG9uc2Ugb2JqZWN0Ci0gICAgIyBieSAiYW5FeGNlcHRpb24ucmVzcG9uc2Ui LgorICAgICMgYXMgImFuRXhjZXB0aW9uLnJlc3BvbnNlIi4KKyAgICAjCiAg ICAgIyBJbiB2ZXJzaW9uIDEuMiwgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2Vz IGFuIGV4Y2VwdGlvbi4KICAgICAjCiAgICAgIyAgICAgcmVzcG9uc2UgPSBu aWwKQEAgLTkzMCw3ICs5NjMsNyBAQAogICAgICMgSW4gdmVyc2lvbiAxLjIg KHJ1YnkgMS44KSwgdGhpcyBtZXRob2QgcmV0dXJucyBhIE5ldDo6SFRUUFJl c3BvbnNlIG9iamVjdC4KICAgICAjCiAgICAgIyBJZiBjYWxsZWQgd2l0aCBh IGJsb2NrLCB5aWVsZHMgZWFjaCBmcmFnbWVudCBvZiB0aGUKLSAgICAjIGVu dGl0eSBib2R5IGluIHR1cm4gYXMgYSBzdHJpbmcgYXMgaXQgYXJlIHJlYWQg ZnJvbQorICAgICMgZW50aXR5IGJvZHkgaW4gdHVybiBhcyBhIHN0cmluZyBh cyBpdCBpcyByZWFkIGZyb20KICAgICAjIHRoZSBzb2NrZXQuICBOb3RlIHRo YXQgaW4gdGhpcyBjYXNlLCB0aGUgcmV0dXJuZWQgcmVzcG9uc2UKICAgICAj IG9iamVjdCB3aWxsICpub3QqIGNvbnRhaW4gYSAobWVhbmluZ2Z1bCkgYm9k eS4KICAgICAjCkBAIC0xMDM1LDEyICsxMDY4LDEyIEBACiAgICAgICByZXF1 ZXN0KFRyYWNlLm5ldyhwYXRoLCBpbml0aGVhZGVyKSkKICAgICBlbmQKIAot ICAgICMgU2VuZHMgYSBHRVQgcmVxdWVzdCB0byB0aGUgK3BhdGgrIGFuZCBn ZXRzIGEgcmVzcG9uc2UsCi0gICAgIyBhcyBhbiBIVFRQUmVzcG9uc2Ugb2Jq ZWN0LgorICAgICMgU2VuZHMgYSBHRVQgcmVxdWVzdCB0byB0aGUgK3BhdGgr LgorICAgICMgUmV0dXJucyB0aGUgcmVzcG9uc2UgYXMgYSBOZXQ6OkhUVFBS ZXNwb25zZSBvYmplY3QuCiAgICAgIwotICAgICMgV2hlbiBjYWxsZWQgd2l0 aCBhIGJsb2NrLCB5aWVsZHMgYW4gSFRUUFJlc3BvbnNlIG9iamVjdC4KLSAg ICAjIFRoZSBib2R5IG9mIHRoaXMgcmVzcG9uc2Ugd2lsbCBub3QgaGF2ZSBi ZWVuIHJlYWQgeWV0OwotICAgICMgdGhlIGNhbGxlciBjYW4gcHJvY2VzcyBp dCB1c2luZyBIVFRQUmVzcG9uc2UjcmVhZF9ib2R5LAorICAgICMgV2hlbiBj YWxsZWQgd2l0aCBhIGJsb2NrLCBwYXNzZXMgYW4gSFRUUFJlc3BvbnNlIG9i amVjdCB0byB0aGUgYmxvY2suCisgICAgIyBUaGUgYm9keSBvZiB0aGUgcmVz cG9uc2Ugd2lsbCBub3QgaGF2ZSBiZWVuIHJlYWQgeWV0OworICAgICMgdGhl IGJsb2NrIGNhbiBwcm9jZXNzIGl0IHVzaW5nIEhUVFBSZXNwb25zZSNyZWFk X2JvZHksCiAgICAgIyBpZiBkZXNpcmVkLgogICAgICMKICAgICAjIFJldHVy bnMgdGhlIHJlc3BvbnNlLgpAQCAtMTA0OCwxMSArMTA4MSwxMSBAQAogICAg ICMgVGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIE5ldDo6KiBleGNlcHRpb25z LgogICAgICMKICAgICAjICAgICByZXNwb25zZSA9IGh0dHAucmVxdWVzdF9n ZXQoJy9pbmRleC5odG1sJykKLSAgICAjICAgICAjIFRoZSBlbnRpdHkgYm9k eSBpcyBhbHJlYWR5IHJlYWQgaGVyZS4KKyAgICAjICAgICAjIFRoZSBlbnRp dHkgYm9keSBpcyBhbHJlYWR5IHJlYWQgaW4gdGhpcyBjYXNlLgogICAgICMg ICAgIHAgcmVzcG9uc2VbJ2NvbnRlbnQtdHlwZSddCiAgICAgIyAgICAgcHV0 cyByZXNwb25zZS5ib2R5CiAgICAgIwotICAgICMgICAgICMgdXNpbmcgYmxv Y2sKKyAgICAjICAgICAjIFVzaW5nIGEgYmxvY2sKICAgICAjICAgICBodHRw LnJlcXVlc3RfZ2V0KCcvaW5kZXguaHRtbCcpIHt8cmVzcG9uc2V8CiAgICAg IyAgICAgICBwIHJlc3BvbnNlWydjb250ZW50LXR5cGUnXQogICAgICMgICAg ICAgcmVzcG9uc2UucmVhZF9ib2R5IGRvIHxzdHJ8ICAgIyByZWFkIGJvZHkg bm93CkBAIC0xMDY0LDggKzEwOTcsOCBAQAogICAgICAgcmVxdWVzdChHZXQu bmV3KHBhdGgsIGluaXRoZWFkZXIpLCAmYmxvY2spCiAgICAgZW5kCiAKLSAg ICAjIFNlbmRzIGEgSEVBRCByZXF1ZXN0IHRvIHRoZSArcGF0aCsgYW5kIGdl dHMgYSByZXNwb25zZSwKLSAgICAjIGFzIGFuIEhUVFBSZXNwb25zZSBvYmpl Y3QuCisgICAgIyBTZW5kcyBhIEhFQUQgcmVxdWVzdCB0byB0aGUgK3BhdGgr IGFuZCByZXR1cm5zIHRoZSByZXNwb25zZQorICAgICMgYXMgYSBOZXQ6OkhU VFBSZXNwb25zZSBvYmplY3QuCiAgICAgIwogICAgICMgUmV0dXJucyB0aGUg cmVzcG9uc2UuCiAgICAgIwpAQCAtMTA3OCwxMyArMTExMSwxMyBAQAogICAg ICAgcmVxdWVzdChIZWFkLm5ldyhwYXRoLCBpbml0aGVhZGVyKSwgJmJsb2Nr KQogICAgIGVuZAogCi0gICAgIyBTZW5kcyBhIFBPU1QgcmVxdWVzdCB0byB0 aGUgK3BhdGgrIGFuZCBnZXRzIGEgcmVzcG9uc2UsCi0gICAgIyBhcyBhbiBI VFRQUmVzcG9uc2Ugb2JqZWN0LgorICAgICMgU2VuZHMgYSBQT1NUIHJlcXVl c3QgdG8gdGhlICtwYXRoKy4KICAgICAjCi0gICAgIyBXaGVuIGNhbGxlZCB3 aXRoIGEgYmxvY2ssIHlpZWxkcyBhbiBIVFRQUmVzcG9uc2Ugb2JqZWN0Lgot ICAgICMgVGhlIGJvZHkgb2YgdGhpcyByZXNwb25zZSB3aWxsIG5vdCBoYXZl IGJlZW4gcmVhZCB5ZXQ7Ci0gICAgIyB0aGUgY2FsbGVyIGNhbiBwcm9jZXNz IGl0IHVzaW5nIEhUVFBSZXNwb25zZSNyZWFkX2JvZHksCi0gICAgIyBpZiBk ZXNpcmVkLgorICAgICMgUmV0dXJucyB0aGUgcmVzcG9uc2UgYXMgYSBOZXQ6 OkhUVFBSZXNwb25zZSBvYmplY3QuCisgICAgIyAKKyAgICAjIFdoZW4gY2Fs bGVkIHdpdGggYSBibG9jaywgdGhlIGJsb2NrIGlzIHBhc3NlZCBhbiBIVFRQ UmVzcG9uc2UgCisgICAgIyBvYmplY3QuICBUaGUgYm9keSBvZiB0aGF0IHJl c3BvbnNlIHdpbGwgbm90IGhhdmUgYmVlbiByZWFkIHlldDsKKyAgICAjIHRo ZSBibG9jayBjYW4gcHJvY2VzcyBpdCB1c2luZyBIVFRQUmVzcG9uc2UjcmVh ZF9ib2R5LCBpZiBkZXNpcmVkLgogICAgICMKICAgICAjIFJldHVybnMgdGhl IHJlc3BvbnNlLgogICAgICMKQEAgLTEwOTMsNyArMTEyNiw3IEBACiAgICAg IyAgICAgIyBleGFtcGxlCiAgICAgIyAgICAgcmVzcG9uc2UgPSBodHRwLnJl cXVlc3RfcG9zdCgnL2NnaS1iaW4vbmljZS5yYicsICdkYXRhZGF0YWRhdGEu Li4nKQogICAgICMgICAgIHAgcmVzcG9uc2Uuc3RhdHVzCi0gICAgIyAgICAg cHV0cyByZXNwb25zZS5ib2R5ICAgICAgICAgICMgYm9keSBpcyBhbHJlYWR5 IHJlYWQKKyAgICAjICAgICBwdXRzIHJlc3BvbnNlLmJvZHkgICAgICAgICAg IyBib2R5IGlzIGFscmVhZHkgcmVhZCBpbiB0aGlzIGNhc2UKICAgICAjCiAg ICAgIyAgICAgIyB1c2luZyBibG9jawogICAgICMgICAgIGh0dHAucmVxdWVz dF9wb3N0KCcvY2dpLWJpbi9uaWNlLnJiJywgJ2RhdGFkYXRhZGF0YS4uLicp IHt8cmVzcG9uc2V8CkBAIC0xMTE5LDkgKzExNTIsOSBAQAogCiAKICAgICAj IFNlbmRzIGFuIEhUVFAgcmVxdWVzdCB0byB0aGUgSFRUUCBzZXJ2ZXIuCi0g ICAgIyBUaGlzIG1ldGhvZCBhbHNvIHNlbmRzIERBVEEgc3RyaW5nIGlmIERB VEEgaXMgZ2l2ZW4uCisgICAgIyBBbHNvIHNlbmRzIGEgREFUQSBzdHJpbmcg aWYgK2RhdGErIGlzIGdpdmVuLgogICAgICMKLSAgICAjIFJldHVybnMgYSBI VFRQUmVzcG9uc2Ugb2JqZWN0LgorICAgICMgUmV0dXJucyBhIE5ldDo6SFRU UFJlc3BvbnNlIG9iamVjdC4KICAgICAjCiAgICAgIyBUaGlzIG1ldGhvZCBu ZXZlciByYWlzZXMgTmV0OjoqIGV4Y2VwdGlvbnMuCiAgICAgIwpAQCAtMTEz MywxNyArMTE2NiwxOSBAQAogICAgICAgcmVxdWVzdCByLCBkYXRhCiAgICAg ZW5kCiAKLSAgICAjIFNlbmRzIGFuIEhUVFBSZXF1ZXN0IG9iamVjdCBSRVFV RVNUIHRvIHRoZSBIVFRQIHNlcnZlci4KLSAgICAjIFRoaXMgbWV0aG9kIGFs c28gc2VuZHMgREFUQSBzdHJpbmcgaWYgUkVRVUVTVCBpcyBhIHBvc3QvcHV0 IHJlcXVlc3QuCi0gICAgIyBHaXZpbmcgREFUQSBmb3IgZ2V0L2hlYWQgcmVx dWVzdCBjYXVzZXMgQXJndW1lbnRFcnJvci4KKyAgICAjIFNlbmRzIGFuIEhU VFBSZXF1ZXN0IG9iamVjdCArcmVxKyB0byB0aGUgSFRUUCBzZXJ2ZXIuCiAg ICAgIwotICAgICMgV2hlbiBjYWxsZWQgd2l0aCBhIGJsb2NrLCB5aWVsZHMg YW4gSFRUUFJlc3BvbnNlIG9iamVjdC4KLSAgICAjIFRoZSBib2R5IG9mIHRo aXMgcmVzcG9uc2Ugd2lsbCBub3QgaGF2ZSBiZWVuIHJlYWQgeWV0OwotICAg ICMgdGhlIGNhbGxlciBjYW4gcHJvY2VzcyBpdCB1c2luZyBIVFRQUmVzcG9u c2UjcmVhZF9ib2R5LAorICAgICMgSWYgK3JlcSsgaXMgYSBOZXQ6OkhUVFA6 OlBvc3Qgb3IgTmV0OjpIVFRQOjpQdXQgcmVxdWVzdCBjb250YWluaW5nIAor ICAgICMgZGF0YSwgdGhlIGRhdGEgaXMgYWxzbyBzZW50LiBQcm92aWRpbmcg ZGF0YSBmb3IgYSBOZXQ6OkhUVFA6OkhlYWQgb3IKKyAgICAjIE5ldDo6SFRU UDo6R2V0IHJlcXVlc3QgcmVzdWx0cyBpbiBhbiBBcmd1bWVudEVycm9yLgor ICAgICMgCisgICAgIyBSZXR1cm5zIGFuIEhUVFBSZXNwb25zZSBvYmplY3Qu CisgICAgIyAKKyAgICAjIFdoZW4gY2FsbGVkIHdpdGggYSBibG9jaywgcGFz c2VzIGFuIEhUVFBSZXNwb25zZSBvYmplY3QgdG8gdGhlIGJsb2NrLgorICAg ICMgVGhlIGJvZHkgb2YgdGhlIHJlc3BvbnNlIHdpbGwgbm90IGhhdmUgYmVl biByZWFkIHlldDsKKyAgICAjIHRoZSBibG9jayBjYW4gcHJvY2VzcyBpdCB1 c2luZyBIVFRQUmVzcG9uc2UjcmVhZF9ib2R5LAogICAgICMgaWYgZGVzaXJl ZC4KLSAgICAjCi0gICAgIyBSZXR1cm5zIGEgSFRUUFJlc3BvbnNlIG9iamVj dC4KLSAgICAjCisgICAgIyAKICAgICAjIFRoaXMgbWV0aG9kIG5ldmVyIHJh aXNlcyBOZXQ6OiogZXhjZXB0aW9ucy4KICAgICAjCiAgICAgZGVmIHJlcXVl c3QocmVxLCBib2R5ID0gbmlsLCAmYmxvY2spICAjIDp5aWVsZDogK3Jlc3Bv bnNlKwpAQCAtMTI4NCwxNCArMTMxOSwxNSBAQAogICBIVFRQU2Vzc2lvbiA9 IEhUVFAKIAogCisgICMgVGhlIEhUVFBIZWFkZXIgbW9kdWxlIGRlZmluZXMg bWV0aG9kcyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZworICAjIEhUVFAgaGVh ZGVycy4KICAgIwotICAjIEhlYWRlciBtb2R1bGUuCisgICMgSXQgaXMgdXNl ZCBhcyBhIG1peGluIGJ5IG90aGVyIGNsYXNzZXMsIHRvIHByb3ZpZGUgaGFz aC1saWtlCisgICMgYWNjZXNzIHRvIEhUVFAgaGVhZGVyIHZhbHVlcy4gVW5s aWtlIHJhdyBoYXNoIGFjY2VzcywgSFRUUEhlYWRlcgorICAjIHByb3ZpZGVz IGFjY2VzcyB2aWEgY2FzZS1pbnNlbnNpdGl2ZSBrZXlzLiBJdCBhbHNvIHBy b3ZpZGVzIAorICAjIG1ldGhvZHMgZm9yIGFjY2Vzc2luZyBjb21tb25seS11 c2VkIEhUVFAgaGVhZGVyIHZhbHVlcyBpbiBtb3JlCisgICMgY29udmVuaWVu dCBmb3JtYXRzLgogICAjCi0gICMgUHJvdmlkZXMgYWNjZXNzIHRvIEBoZWFk ZXIgaW4gdGhlIG1peGVkLWludG8gY2xhc3MgYXMgYSBoYXNoLWxpa2UKLSAg IyBvYmplY3QsIGV4Y2VwdCB3aXRoIGNhc2UtaW5zZW5zaXRpdmUga2V5cy4g IEFsc28gcHJvdmlkZXMKLSAgIyBtZXRob2RzIGZvciBhY2Nlc3NpbmcgY29t bW9ubHktdXNlZCBoZWFkZXIgdmFsdWVzIGluIGEgbW9yZQotICAjIGNvbnZl bmllbnQgZm9ybWF0LgotICAjCiAgIG1vZHVsZSBIVFRQSGVhZGVyCiAKICAg ICBkZWYgaW5pdGlhbGl6ZV9odHRwX2hlYWRlcihpbml0aGVhZGVyKQpAQCAt MTMyNiw3ICsxMzYyLDcgQEAKICAgICBlbmQKIAogICAgICMgW1J1YnkgMS44 LjNdCi0gICAgIyBBZGRzIGhlYWRlciBmaWVsZCBpbnN0ZWFkIG9mIHJlcGxh Y2UuCisgICAgIyBBZGRzIGEgdmFsdWUgdG8gYSBuYW1lZCBoZWFkZXIgZmll bGQsIGluc3RlYWQgb2YgcmVwbGFjaW5nIGl0cyB2YWx1ZS4KICAgICAjIFNl Y29uZCBhcmd1bWVudCArdmFsKyBtdXN0IGJlIGEgU3RyaW5nLgogICAgICMg U2VlIGFsc28gI1tdPSwgI1tdIGFuZCAjZ2V0X2ZpZWxkcy4KICAgICAjCkBA IC0xMzY2LDE0ICsxNDAyLDIwIEBACiAKICAgICAjIFJldHVybnMgdGhlIGhl YWRlciBmaWVsZCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjYXNlLWluc2Vuc2l0 aXZlIGtleS4KICAgICAjIFJldHVybnMgdGhlIGRlZmF1bHQgdmFsdWUgK2Fy Z3MrLCBvciB0aGUgcmVzdWx0IG9mIHRoZSBibG9jaywgb3IKLSAgICAjIHJh aXNlcyBhbiBJbmRleEVycnJvciBpZiB0aGVyZSdzIG5vIGhlYWRlciBmaWVs ZCBuYW1lZCAra2V5KworICAgICMgcmFpc2VzIGFuIEluZGV4RXJyb3IgaWYg dGhlcmUncyBubyBoZWFkZXIgZmllbGQgbmFtZWQgK2tleSsKICAgICAjIFNl ZSBIYXNoI2ZldGNoCiAgICAgZGVmIGZldGNoKGtleSwgKmFyZ3MsICZibG9j aykgICAjOnlpZWxkOiAra2V5KwogICAgICAgYSA9IEBoZWFkZXIuZmV0Y2go a2V5LmRvd25jYXNlLCAqYXJncywgJmJsb2NrKQogICAgICAgYS5raW5kX29m PyhBcnJheSkgPyBhLmpvaW4oJywgJykgOiBhCiAgICAgZW5kCiAKLSAgICAj IEl0ZXJhdGVzIGZvciBlYWNoIGhlYWRlciBuYW1lcyBhbmQgdmFsdWVzLgor ICAgICMgSXRlcmF0ZXMgdGhyb3VnaCB0aGUgaGVhZGVyIG5hbWVzIGFuZCB2 YWx1ZXMsIHBhc3NpbmcgaW4gdGhlIG5hbWUKKyAgICAjIGFuZCB2YWx1ZSB0 byB0aGUgY29kZSBibG9jayBzdXBwbGllZC4KKyAgICAjCisgICAgIyBFeGFt cGxlOgorICAgICMKKyAgICAjICAgICByZXNwb25zZS5oZWFkZXIuZWFjaF9o ZWFkZXIge3xrZXksdmFsdWV8IHB1dHMgIiN7a2V5fSA9ICN7dmFsdWV9IiB9 CisgICAgIwogICAgIGRlZiBlYWNoX2hlYWRlciAgICM6eWllbGQ6ICtrZXkr LCArdmFsdWUrCiAgICAgICBibG9ja19naXZlbj8gb3IgcmV0dXJuIGVudW1f Zm9yKF9fbWV0aG9kX18pCiAgICAgICBAaGVhZGVyLmVhY2ggZG8gfGssdmF8 CkBAIC0xMzgzLDcgKzE0MjUsOCBAQAogCiAgICAgYWxpYXMgZWFjaCBlYWNo X2hlYWRlcgogCi0gICAgIyBJdGVyYXRlcyBmb3IgZWFjaCBoZWFkZXIgbmFt ZXMuCisgICAgIyBJdGVyYXRlcyB0aHJvdWdoIHRoZSBoZWFkZXIgbmFtZXMg aW4gdGhlIGhlYWRlciwgcGFzc2luZworICAgICMgZWFjaCBoZWFkZXIgbmFt ZSB0byB0aGUgY29kZSBibG9jay4KICAgICBkZWYgZWFjaF9uYW1lKCZibG9j aykgICAjOnlpZWxkOiAra2V5KwogICAgICAgYmxvY2tfZ2l2ZW4/IG9yIHJl dHVybiBlbnVtX2ZvcihfX21ldGhvZF9fKQogICAgICAgQGhlYWRlci5lYWNo X2tleSgmYmxvY2spCkBAIC0xMzkxLDcgKzE0MzQsMTIgQEAKIAogICAgIGFs aWFzIGVhY2hfa2V5IGVhY2hfbmFtZQogCi0gICAgIyBJdGVyYXRlcyBmb3Ig ZWFjaCBjYXBpdGFsaXplZCBoZWFkZXIgbmFtZXMuCisgICAgIyBJdGVyYXRl cyB0aHJvdWdoIHRoZSBoZWFkZXIgbmFtZXMgaW4gdGhlIGhlYWRlciwgcGFz c2luZyAKKyAgICAjIGNhcGl0YWxpemVkIGhlYWRlciBuYW1lcyB0byB0aGUg Y29kZSBibG9jay4KKyAgICAjCisgICAgIyBOb3RlIHRoYXQgaGVhZGVyIG5h bWVzIGFyZSBjYXBpdGFsaXplZCBzeXN0ZW1hdGljYWxseTsgCisgICAgIyBj YXBpdGFsaXphdGlvbiBtYXkgbm90IG1hdGNoIHRoYXQgdXNlZCBieSB0aGUg cmVtb3RlIEhUVFAgCisgICAgIyBzZXJ2ZXIgaW4gaXRzIHJlc3BvbnNlLgog ICAgIGRlZiBlYWNoX2NhcGl0YWxpemVkX25hbWUgICM6eWllbGQ6ICtrZXkr CiAgICAgICBibG9ja19naXZlbj8gb3IgcmV0dXJuIGVudW1fZm9yKF9fbWV0 aG9kX18pCiAgICAgICBAaGVhZGVyLmVhY2hfa2V5IGRvIHxrfApAQCAtMTM5 OSw3ICsxNDQ3LDggQEAKICAgICAgIGVuZAogICAgIGVuZAogCi0gICAgIyBJ dGVyYXRlcyBmb3IgZWFjaCBoZWFkZXIgdmFsdWVzLgorICAgICMgSXRlcmF0 ZXMgdGhyb3VnaCBoZWFkZXIgdmFsdWVzLCBwYXNzaW5nIGVhY2ggdmFsdWUg dG8gdGhlCisgICAgIyBjb2RlIGJsb2NrLgogICAgIGRlZiBlYWNoX3ZhbHVl ICAgIzp5aWVsZDogK3ZhbHVlKwogICAgICAgYmxvY2tfZ2l2ZW4/IG9yIHJl dHVybiBlbnVtX2ZvcihfX21ldGhvZF9fKQogICAgICAgQGhlYWRlci5lYWNo X3ZhbHVlIGRvIHx2YXwKQEAgLTE0MDcsNyArMTQ1Niw3IEBACiAgICAgICBl bmQKICAgICBlbmQKIAotICAgICMgUmVtb3ZlcyBhIGhlYWRlciBmaWVsZC4K KyAgICAjIFJlbW92ZXMgYSBoZWFkZXIgZmllbGQsIHNwZWNpZmllZCBieSBj YXNlLWluc2Vuc2l0aXZlIGtleS4KICAgICBkZWYgZGVsZXRlKGtleSkKICAg ICAgIEBoZWFkZXIuZGVsZXRlKGtleS5kb3duY2FzZSkKICAgICBlbmQKQEAg LTE0MTcsMTIgKzE0NjYsMjAgQEAKICAgICAgIEBoZWFkZXIua2V5PyhrZXku ZG93bmNhc2UpCiAgICAgZW5kCiAKLSAgICAjIFJldHVybnMgYSBIYXNoIGNv bnNpc3Qgb2YgaGVhZGVyIG5hbWVzIGFuZCB2YWx1ZXMuCisgICAgIyBSZXR1 cm5zIGEgSGFzaCBjb25zaXN0aW5nIG9mIGhlYWRlciBuYW1lcyBhbmQgdmFs dWVzLgorICAgICMgZS5nLgorICAgICMgeyJjYWNoZS1jb250cm9sIiA9PiAi cHJpdmF0ZSIsCisgICAgIyAgImNvbnRlbnQtdHlwZSIgPT4gInRleHQvaHRt bCIsCisgICAgIyAgImRhdGUiID0+ICJXZWQsIDIyIEp1biAyMDA1IDIyOjEx OjUwIEdNVCJ9CiAgICAgZGVmIHRvX2hhc2gKICAgICAgIEBoZWFkZXIuZHVw CiAgICAgZW5kCiAKICAgICAjIEFzIGZvciAjZWFjaF9oZWFkZXIsIGV4Y2Vw dCB0aGUga2V5cyBhcmUgcHJvdmlkZWQgaW4gY2FwaXRhbGl6ZWQgZm9ybS4K KyAgICAjCisgICAgIyBOb3RlIHRoYXQgaGVhZGVyIG5hbWVzIGFyZSBjYXBp dGFsaXplZCBzeXN0ZW1hdGljYWxseTsgCisgICAgIyBjYXBpdGFsaXphdGlv biBtYXkgbm90IG1hdGNoIHRoYXQgdXNlZCBieSB0aGUgcmVtb3RlIEhUVFAg CisgICAgIyBzZXJ2ZXIgaW4gaXRzIHJlc3BvbnNlLgogICAgIGRlZiBlYWNo X2NhcGl0YWxpemVkCiAgICAgICBibG9ja19naXZlbj8gb3IgcmV0dXJuIGVu dW1fZm9yKF9fbWV0aG9kX18pCiAgICAgICBAaGVhZGVyLmVhY2ggZG8gfGss dnwKQEAgLTE0MzcsOCArMTQ5NCw4IEBACiAgICAgZW5kCiAgICAgcHJpdmF0 ZSA6Y2FwaXRhbGl6ZQogCi0gICAgIyBSZXR1cm5zIGFuIEFycmF5IG9mIFJh bmdlIG9iamVjdHMgd2hpY2ggcmVwcmVzZW50cyBSYW5nZTogaGVhZGVyIGZp ZWxkLAotICAgICMgb3IgK25pbCsgaWYgdGhlcmUgaXMgbm8gc3VjaCBoZWFk ZXIuCisgICAgIyBSZXR1cm5zIGFuIEFycmF5IG9mIFJhbmdlIG9iamVjdHMg d2hpY2ggcmVwcmVzZW50IHRoZSBSYW5nZTogCisgICAgIyBIVFRQIGhlYWRl ciBmaWVsZCwgb3IgK25pbCsgaWYgdGhlcmUgaXMgbm8gc3VjaCBoZWFkZXIu CiAgICAgZGVmIHJhbmdlCiAgICAgICByZXR1cm4gbmlsIHVubGVzcyBAaGVh ZGVyWydyYW5nZSddCiAgICAgICBzZWxmWydSYW5nZSddLnNwbGl0KC8sLyku bWFwIHt8c3BlY3wKQEAgLTE0NTUsOCArMTUxMiwxMCBAQAogICAgICAgfQog ICAgIGVuZAogCi0gICAgIyBTZXQgUmFuZ2U6IGhlYWRlciBmcm9tIFJhbmdl IChhcmcgcikgb3IgYmVnaW5uaW5nIGluZGV4IGFuZAotICAgICMgbGVuZ3Ro IGZyb20gaXQgKGFyZyBpZHgmbGVuKS4KKyAgICAjIFNldHMgdGhlIEhUVFAg UmFuZ2U6IGhlYWRlci4KKyAgICAjIEFjY2VwdHMgZWl0aGVyIGEgUmFuZ2Ug b2JqZWN0IGFzIGEgc2luZ2xlIGFyZ3VtZW50LAorICAgICMgb3IgYSBiZWdp bm5pbmcgaW5kZXggYW5kIGEgbGVuZ3RoIGZyb20gdGhhdCBpbmRleC4KKyAg ICAjIEV4YW1wbGU6CiAgICAgIwogICAgICMgICByZXEucmFuZ2UgPSAoMC4u MTAyMykKICAgICAjICAgcmVxLnNldF9yYW5nZSAwLCAxMDIzCkBAIC0xNDky LDggKzE1NTEsOCBAQAogCiAgICAgYWxpYXMgcmFuZ2U9IHNldF9yYW5nZQog Ci0gICAgIyBSZXR1cm5zIGFuIEludGVnZXIgb2JqZWN0IHdoaWNoIHJlcHJl c2VudHMgdGhlIENvbnRlbnQtTGVuZ3RoOiBoZWFkZXIgZmllbGQKLSAgICAj IG9yICtuaWwrIGlmIHRoYXQgZmllbGQgaXMgbm90IHByb3ZpZGVkLgorICAg ICMgUmV0dXJucyBhbiBJbnRlZ2VyIG9iamVjdCB3aGljaCByZXByZXNlbnRz IHRoZSBIVFRQIENvbnRlbnQtTGVuZ3RoOgorICAgICMgaGVhZGVyIGZpZWxk LCBvciArbmlsKyBpZiB0aGF0IGZpZWxkIHdhcyBub3QgcHJvdmlkZWQuCiAg ICAgZGVmIGNvbnRlbnRfbGVuZ3RoCiAgICAgICByZXR1cm4gbmlsIHVubGVz cyBrZXk/KCdDb250ZW50LUxlbmd0aCcpCiAgICAgICBsZW4gPSBzZWxmWydD b250ZW50LUxlbmd0aCddLnNsaWNlKC9cZCsvKSBvcgpAQCAtMTUxOSw4ICsx NTc4LDkgQEAKICAgICAgICgvKD86XEF8W15cLVx3XSljaHVua2VkKD8hW1wt XHddKS9pID1+IGZpZWxkKSA/IHRydWUgOiBmYWxzZQogICAgIGVuZAogCi0g ICAgIyBSZXR1cm5zIGEgUmFuZ2Ugb2JqZWN0IHdoaWNoIHJlcHJlc2VudHMg Q29udGVudC1SYW5nZTogaGVhZGVyIGZpZWxkLgotICAgICMgVGhpcyBpbmRp Y2F0ZXMsIGZvciBhIHBhcnRpYWwgZW50aXR5IGJvZHksIHdoZXJlIHRoaXMg ZnJhZ21lbnQKKyAgICAjIFJldHVybnMgYSBSYW5nZSBvYmplY3Qgd2hpY2gg cmVwcmVzZW50cyB0aGUgdmFsdWUgb2YgdGhlIENvbnRlbnQtUmFuZ2U6Cisg ICAgIyBoZWFkZXIgZmllbGQuCisgICAgIyBGb3IgYSBwYXJ0aWFsIGVudGl0 eSBib2R5LCB0aGlzIGluZGljYXRlcyB3aGVyZSB0aGlzIGZyYWdtZW50CiAg ICAgIyBmaXRzIGluc2lkZSB0aGUgZnVsbCBlbnRpdHkgYm9keSwgYXMgcmFu Z2Ugb2YgYnl0ZSBvZmZzZXRzLgogICAgIGRlZiBjb250ZW50X3JhbmdlCiAg ICAgICByZXR1cm4gbmlsIHVubGVzcyBAaGVhZGVyWydjb250ZW50LXJhbmdl J10KQEAgLTE1NjIsOCArMTYyMiw5IEBACiAgICAgICBzdWIuc3RyaXAKICAg ICBlbmQKIAotICAgICMgUmV0dXJucyBjb250ZW50IHR5cGUgcGFyYW1ldGVy cyBhcyBhIEhhc2ggYXMgbGlrZQotICAgICMgeyJjaGFyc2V0IiA9PiAiaXNv LTIwMjItanAifS4KKyAgICAjIEFueSBwYXJhbWV0ZXJzIHNwZWNpZmllZCBm b3IgdGhlIGNvbnRlbnQgdHlwZSwgcmV0dXJuZWQgYXMgYSBIYXNoLgorICAg ICMgRm9yIGV4YW1wbGUsIGEgaGVhZGVyIG9mIENvbnRlbnQtVHlwZTogdGV4 dC9odG1sOyBjaGFyc2V0PUVVQy1KUAorICAgICMgd291bGQgcmVzdWx0IGlu IHR5cGVfcGFyYW1zIHJldHVybmluZyB7J2NoYXJzZXQnID0+ICdFVUMtSlAn fQogICAgIGRlZiB0eXBlX3BhcmFtcwogICAgICAgcmVzdWx0ID0ge30KICAg ICAgIGxpc3QgPSBzZWxmWydDb250ZW50LVR5cGUnXS50b19zLnNwbGl0KCc7 JykKQEAgLTE1NzUsOCArMTYzNiwxMCBAQAogICAgICAgcmVzdWx0CiAgICAg ZW5kCiAKLSAgICAjIFNldCBDb250ZW50LVR5cGU6IGhlYWRlciBmaWVsZCBi eSArdHlwZSsgYW5kICtwYXJhbXMrLgotICAgICMgK3R5cGUrIG11c3QgYmUg YSBTdHJpbmcsICtwYXJhbXMrIG11c3QgYmUgYSBIYXNoLgorICAgICMgU2V0 cyB0aGUgY29udGVudCB0eXBlIGluIGFuIEhUVFAgaGVhZGVyLgorICAgICMg VGhlICt0eXBlKyBzaG91bGQgYmUgYSBmdWxsIEhUVFAgY29udGVudCB0eXBl LCBlLmcuICJ0ZXh0L2h0bWwiLgorICAgICMgVGhlICtwYXJhbXMrIGFyZSBh biBvcHRpb25hbCBIYXNoIG9mIHBhcmFtZXRlcnMgdG8gYWRkIGFmdGVyIHRo ZQorICAgICMgY29udGVudCB0eXBlLCBlLmcuIHsnY2hhcnNldCcgPT4gJ2lz by04ODU5LTEnfQogICAgIGRlZiBzZXRfY29udGVudF90eXBlKHR5cGUsIHBh cmFtcyA9IHt9KQogICAgICAgQGhlYWRlclsnY29udGVudC10eXBlJ10gPSBb dHlwZSArIHBhcmFtcy5tYXB7fGssdnwiOyAje2t9PSN7dn0ifS5qb2luKCcn KV0KICAgICBlbmQKQEAgLTE1ODcsOCArMTY1MCw4IEBACiAgICAgIyArcGFy YW1zKyBzaG91bGQgYmUgYSBIYXNoIGNvbnRhaW5pbmcgSFRNTCBmb3JtIGRh dGEuCiAgICAgIyBPcHRpb25hbCBhcmd1bWVudCArc2VwKyBtZWFucyBkYXRh IHJlY29yZCBzZXBhcmF0b3IuCiAgICAgIwotICAgICMgVGhpcyBtZXRob2Qg YWxzbyBzZXQgQ29udGVudC1UeXBlOiBoZWFkZXIgZmllbGQgdG8KLSAgICAj IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZC4KKyAgICAjIFZh bHVlcyBhcmUgVVJMIGVuY29kZWQgYXMgbmVjZXNzYXJ5IGFuZCB0aGUgY29u dGVudC10eXBlIGlzIHNldCB0byAKKyAgICAjIGFwcGxpY2F0aW9uL3gtd3d3 LWZvcm0tdXJsZW5jb2RlZAogICAgICMKICAgICAjIEV4YW1wbGU6CiAgICAg IyAgICBodHRwLmZvcm1fZGF0YSA9IHsicSIgPT4gInJ1YnkiLCAibGFuZyIg PT4gImVuIn0KQEAgLTE2NDgsMTIgKzE3MTEsMTEgQEAKICAgZW5kCiAKIAor ICAjIEhUVFBHZW5lcmljUmVxdWVzdCBpcyB0aGUgcGFyZW50IG9mIHRoZSBI VFRQUmVxdWVzdCBjbGFzcy4KKyAgIyBEbyBub3QgdXNlIHRoaXMgZGlyZWN0 bHk7IHVzZSBhIHN1YmNsYXNzIG9mIEhUVFBSZXF1ZXN0LgogICAjCi0gICMg UGFyZW50IG9mIEhUVFBSZXF1ZXN0IGNsYXNzLiAgRG8gbm90IHVzZSB0aGlz IGRpcmVjdGx5OyB1c2UKLSAgIyBhIHN1YmNsYXNzIG9mIEhUVFBSZXF1ZXN0 LgorICAjIE1peGVzIGluIHRoZSBIVFRQSGVhZGVyIG1vZHVsZSB0byBwcm92 aWRlIGVhc2llciBhY2Nlc3MgdG8gSFRUUCBoZWFkZXJzLgogICAjCi0gICMg TWl4ZXMgaW4gdGhlIEhUVFBIZWFkZXIgbW9kdWxlLgotICAjCiAgIGNsYXNz IEhUVFBHZW5lcmljUmVxdWVzdAogCiAgICAgaW5jbHVkZSBIVFRQSGVhZGVy CkBAIC0xNzc1LDggKzE4MzcsMTAgQEAKIAogCiAgICMKLSAgIyBIVFRQIHJl cXVlc3QgY2xhc3MuIFRoaXMgY2xhc3Mgd3JhcHMgcmVxdWVzdCBoZWFkZXIg YW5kIGVudGl0eSBwYXRoLgotICAjIFlvdSAqbXVzdCogdXNlIGl0cyBzdWJj bGFzcywgTmV0OjpIVFRQOjpHZXQsIFBvc3QsIEhlYWQuCisgICMgSFRUUCBy ZXF1ZXN0IGNsYXNzLiAKKyAgIyBUaGlzIGNsYXNzIHdyYXBzIHRvZ2V0aGVy IHRoZSByZXF1ZXN0IGhlYWRlciBhbmQgdGhlIHJlcXVlc3QgcGF0aC4KKyAg IyBZb3UgY2Fubm90IHVzZSB0aGlzIGNsYXNzIGRpcmVjdGx5LiBJbnN0ZWFk LCB5b3Ugc2hvdWxkIHVzZSBvbmUgb2YgaXRzCisgICMgc3ViY2xhc3Nlczog TmV0OjpIVFRQOjpHZXQsIE5ldDo6SFRUUDo6UG9zdCwgTmV0OjpIVFRQOjpI ZWFkLgogICAjCiAgIGNsYXNzIEhUVFBSZXF1ZXN0IDwgSFRUUEdlbmVyaWNS ZXF1ZXN0CiAKQEAgLTE3OTUsNDIgKzE4NTksNTQgQEAKICAgICAjIEhUVFAv MS4xIG1ldGhvZHMgLS0tIFJGQzI2MTYKICAgICAjCiAKKyAgICAjIFNlZSBO ZXQ6OkhUVFBHZW5lcmljUmVxdWVzdCBmb3IgYXR0cmlidXRlcyBhbmQgbWV0 aG9kcy4KKyAgICAjIFNlZSBOZXQ6OkhUVFAgZm9yIHVzYWdlIGV4YW1wbGVz LgogICAgIGNsYXNzIEdldCA8IEhUVFBSZXF1ZXN0CiAgICAgICBNRVRIT0Qg PSAnR0VUJwogICAgICAgUkVRVUVTVF9IQVNfQk9EWSAgPSBmYWxzZQogICAg ICAgUkVTUE9OU0VfSEFTX0JPRFkgPSB0cnVlCiAgICAgZW5kCiAKKyAgICAj IFNlZSBOZXQ6OkhUVFBHZW5lcmljUmVxdWVzdCBmb3IgYXR0cmlidXRlcyBh bmQgbWV0aG9kcy4KKyAgICAjIFNlZSBOZXQ6OkhUVFAgZm9yIHVzYWdlIGV4 YW1wbGVzLgogICAgIGNsYXNzIEhlYWQgPCBIVFRQUmVxdWVzdAogICAgICAg TUVUSE9EID0gJ0hFQUQnCiAgICAgICBSRVFVRVNUX0hBU19CT0RZID0gZmFs c2UKICAgICAgIFJFU1BPTlNFX0hBU19CT0RZID0gZmFsc2UKICAgICBlbmQK IAorICAgICMgU2VlIE5ldDo6SFRUUEdlbmVyaWNSZXF1ZXN0IGZvciBhdHRy aWJ1dGVzIGFuZCBtZXRob2RzLgorICAgICMgU2VlIE5ldDo6SFRUUCBmb3Ig dXNhZ2UgZXhhbXBsZXMuCiAgICAgY2xhc3MgUG9zdCA8IEhUVFBSZXF1ZXN0 CiAgICAgICBNRVRIT0QgPSAnUE9TVCcKICAgICAgIFJFUVVFU1RfSEFTX0JP RFkgPSB0cnVlCiAgICAgICBSRVNQT05TRV9IQVNfQk9EWSA9IHRydWUKICAg ICBlbmQKIAorICAgICMgU2VlIE5ldDo6SFRUUEdlbmVyaWNSZXF1ZXN0IGZv ciBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzLgorICAgICMgU2VlIE5ldDo6SFRU UCBmb3IgdXNhZ2UgZXhhbXBsZXMuCiAgICAgY2xhc3MgUHV0IDwgSFRUUFJl cXVlc3QKICAgICAgIE1FVEhPRCA9ICdQVVQnCiAgICAgICBSRVFVRVNUX0hB U19CT0RZID0gdHJ1ZQogICAgICAgUkVTUE9OU0VfSEFTX0JPRFkgPSB0cnVl CiAgICAgZW5kCiAKKyAgICAjIFNlZSBOZXQ6OkhUVFBHZW5lcmljUmVxdWVz dCBmb3IgYXR0cmlidXRlcyBhbmQgbWV0aG9kcy4KKyAgICAjIFNlZSBOZXQ6 OkhUVFAgZm9yIHVzYWdlIGV4YW1wbGVzLgogICAgIGNsYXNzIERlbGV0ZSA8 IEhUVFBSZXF1ZXN0CiAgICAgICBNRVRIT0QgPSAnREVMRVRFJwogICAgICAg UkVRVUVTVF9IQVNfQk9EWSA9IGZhbHNlCiAgICAgICBSRVNQT05TRV9IQVNf Qk9EWSA9IHRydWUKICAgICBlbmQKIAorICAgICMgU2VlIE5ldDo6SFRUUEdl bmVyaWNSZXF1ZXN0IGZvciBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzLgogICAg IGNsYXNzIE9wdGlvbnMgPCBIVFRQUmVxdWVzdAogICAgICAgTUVUSE9EID0g J09QVElPTlMnCiAgICAgICBSRVFVRVNUX0hBU19CT0RZID0gZmFsc2UKICAg ICAgIFJFU1BPTlNFX0hBU19CT0RZID0gZmFsc2UKICAgICBlbmQKIAorICAg ICMgU2VlIE5ldDo6SFRUUEdlbmVyaWNSZXF1ZXN0IGZvciBhdHRyaWJ1dGVz IGFuZCBtZXRob2RzLgogICAgIGNsYXNzIFRyYWNlIDwgSFRUUFJlcXVlc3QK ICAgICAgIE1FVEhPRCA9ICdUUkFDRScKICAgICAgIFJFUVVFU1RfSEFTX0JP RFkgPSBmYWxzZQpAQCAtMTg0MCw3ICsxOTE2LDggQEAKICAgICAjCiAgICAg IyBQQVRDSCBtZXRob2QgLS0tIFJGQzU3ODkKICAgICAjCi0KKyAKKyAgICAj IFNlZSBOZXQ6OkhUVFBHZW5lcmljUmVxdWVzdCBmb3IgYXR0cmlidXRlcyBh bmQgbWV0aG9kcy4KICAgICBjbGFzcyBQYXRjaCA8IEhUVFBSZXF1ZXN0CiAg ICAgICBNRVRIT0QgPSAnUEFUQ0gnCiAgICAgICBSRVFVRVNUX0hBU19CT0RZ ID0gdHJ1ZQpAQCAtMTg1MSw0MiArMTkyOCw0OSBAQAogICAgICMgV2ViREFW IG1ldGhvZHMgLS0tIFJGQzI1MTgKICAgICAjCiAKKyAgICAjIFNlZSBOZXQ6 OkhUVFBHZW5lcmljUmVxdWVzdCBmb3IgYXR0cmlidXRlcyBhbmQgbWV0aG9k cy4KICAgICBjbGFzcyBQcm9wZmluZCA8IEhUVFBSZXF1ZXN0CiAgICAgICBN RVRIT0QgPSAnUFJPUEZJTkQnCiAgICAgICBSRVFVRVNUX0hBU19CT0RZID0g dHJ1ZQogICAgICAgUkVTUE9OU0VfSEFTX0JPRFkgPSB0cnVlCiAgICAgZW5k CiAKKyAgICAjIFNlZSBOZXQ6OkhUVFBHZW5lcmljUmVxdWVzdCBmb3IgYXR0 cmlidXRlcyBhbmQgbWV0aG9kcy4KICAgICBjbGFzcyBQcm9wcGF0Y2ggPCBI VFRQUmVxdWVzdAogICAgICAgTUVUSE9EID0gJ1BST1BQQVRDSCcKICAgICAg IFJFUVVFU1RfSEFTX0JPRFkgPSB0cnVlCiAgICAgICBSRVNQT05TRV9IQVNf Qk9EWSA9IHRydWUKICAgICBlbmQKIAorICAgICMgU2VlIE5ldDo6SFRUUEdl bmVyaWNSZXF1ZXN0IGZvciBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzLgogICAg IGNsYXNzIE1rY29sIDwgSFRUUFJlcXVlc3QKICAgICAgIE1FVEhPRCA9ICdN S0NPTCcKICAgICAgIFJFUVVFU1RfSEFTX0JPRFkgPSB0cnVlCiAgICAgICBS RVNQT05TRV9IQVNfQk9EWSA9IHRydWUKICAgICBlbmQKIAorICAgICMgU2Vl IE5ldDo6SFRUUEdlbmVyaWNSZXF1ZXN0IGZvciBhdHRyaWJ1dGVzIGFuZCBt ZXRob2RzLgogICAgIGNsYXNzIENvcHkgPCBIVFRQUmVxdWVzdAogICAgICAg TUVUSE9EID0gJ0NPUFknCiAgICAgICBSRVFVRVNUX0hBU19CT0RZID0gZmFs c2UKICAgICAgIFJFU1BPTlNFX0hBU19CT0RZID0gdHJ1ZQogICAgIGVuZAog CisgICAgIyBTZWUgTmV0OjpIVFRQR2VuZXJpY1JlcXVlc3QgZm9yIGF0dHJp YnV0ZXMgYW5kIG1ldGhvZHMuCiAgICAgY2xhc3MgTW92ZSA8IEhUVFBSZXF1 ZXN0CiAgICAgICBNRVRIT0QgPSAnTU9WRScKICAgICAgIFJFUVVFU1RfSEFT X0JPRFkgPSBmYWxzZQogICAgICAgUkVTUE9OU0VfSEFTX0JPRFkgPSB0cnVl CiAgICAgZW5kCiAKKyAgICAjIFNlZSBOZXQ6OkhUVFBHZW5lcmljUmVxdWVz dCBmb3IgYXR0cmlidXRlcyBhbmQgbWV0aG9kcy4KICAgICBjbGFzcyBMb2Nr IDwgSFRUUFJlcXVlc3QKICAgICAgIE1FVEhPRCA9ICdMT0NLJwogICAgICAg UkVRVUVTVF9IQVNfQk9EWSA9IHRydWUKICAgICAgIFJFU1BPTlNFX0hBU19C T0RZID0gdHJ1ZQogICAgIGVuZAogCisgICAgIyBTZWUgTmV0OjpIVFRQR2Vu ZXJpY1JlcXVlc3QgZm9yIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMuCiAgICAg Y2xhc3MgVW5sb2NrIDwgSFRUUFJlcXVlc3QKICAgICAgIE1FVEhPRCA9ICdV TkxPQ0snCiAgICAgICBSRVFVRVNUX0hBU19CT0RZID0gdHJ1ZQpAQCAtMTkw MCw3ICsxOTg0LDggQEAKICAgIyMjCiAKICAgIyBIVFRQIGV4Y2VwdGlvbiBj bGFzcy4KLSAgIyBZb3UgbXVzdCB1c2UgaXRzIHN1YmNsYXNzZXMuCisgICMg WW91IGNhbm5vdCB1c2UgSFRUUEV4Y2VwdGlvbnMgZGlyZWN0bHk7IGluc3Rl YWQsIHlvdSBtdXN0IHVzZSAKKyAgIyBpdHMgc3ViY2xhc3Nlcy4KICAgbW9k dWxlIEhUVFBFeGNlcHRpb25zCiAgICAgZGVmIGluaXRpYWxpemUobXNnLCBy ZXMpICAgIzpub2RvYzoKICAgICAgIHN1cGVyIG1zZwpAQCAtMTkyNCwxMSAr MjAwOSwxNyBAQAogICBlbmQKIAogCi0gICMgSFRUUCByZXNwb25zZSBjbGFz cy4gVGhpcyBjbGFzcyB3cmFwcyByZXNwb25zZSBoZWFkZXIgYW5kIGVudGl0 eS4KLSAgIyBNaXhlcyBpbiB0aGUgSFRUUEhlYWRlciBtb2R1bGUsIHdoaWNo IHByb3ZpZGVzIGFjY2VzcyB0byByZXNwb25zZQotICAjIGhlYWRlciB2YWx1 ZXMgYm90aCB2aWEgaGFzaC1saWtlIG1ldGhvZHMgYW5kIGluZGl2aWR1YWwg cmVhZGVycy4KKyAgIyBIVFRQIHJlc3BvbnNlIGNsYXNzLiAKKyAgIworICAj IFRoaXMgY2xhc3Mgd3JhcHMgdG9nZXRoZXIgdGhlIHJlc3BvbnNlIGhlYWRl ciBhbmQgdGhlIHJlc3BvbnNlIGJvZHkgKHRoZQorICAjIGVudGl0eSByZXF1 ZXN0ZWQpLgorICAjCisgICMgSXQgbWl4ZXMgaW4gdGhlIEhUVFBIZWFkZXIg bW9kdWxlLCB3aGljaCBwcm92aWRlcyBhY2Nlc3MgdG8gcmVzcG9uc2UKKyAg IyBoZWFkZXIgdmFsdWVzIGJvdGggdmlhIGhhc2gtbGlrZSBtZXRob2RzIGFu ZCB2aWEgaW5kaXZpZHVhbCByZWFkZXJzLgorICAjCiAgICMgTm90ZSB0aGF0 IGVhY2ggcG9zc2libGUgSFRUUCByZXNwb25zZSBjb2RlIGRlZmluZXMgaXRz IG93bgogICAjIEhUVFBSZXNwb25zZSBzdWJjbGFzcy4gIFRoZXNlIGFyZSBs aXN0ZWQgYmVsb3cuCisgICMKICAgIyBBbGwgY2xhc3NlcyBhcmUKICAgIyBk ZWZpbmVkIHVuZGVyIHRoZSBOZXQgbW9kdWxlLiBJbmRlbnRhdGlvbiBpbmRp Y2F0ZXMgaW5oZXJpdGFuY2UuCiAgICMKQEAgLTIyNzIsMTIgKzIzNjMsMTIg QEAKICAgICAjIFRoZSBIVFRQIHZlcnNpb24gc3VwcG9ydGVkIGJ5IHRoZSBz ZXJ2ZXIuCiAgICAgYXR0cl9yZWFkZXIgOmh0dHBfdmVyc2lvbgogCi0gICAg IyBIVFRQIHJlc3VsdCBjb2RlIHN0cmluZy4gRm9yIGV4YW1wbGUsICczMDIn LiAgWW91IGNhbiBhbHNvCi0gICAgIyBkZXRlcm1pbmUgdGhlIHJlc3BvbnNl IHR5cGUgYnkgd2hpY2ggcmVzcG9uc2Ugc3ViY2xhc3MgdGhlCi0gICAgIyBy ZXNwb25zZSBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YuCisgICAgIyBUaGUg SFRUUCByZXN1bHQgY29kZSBzdHJpbmcuIEZvciBleGFtcGxlLCAnMzAyJy4g IFlvdSBjYW4gYWxzbworICAgICMgZGV0ZXJtaW5lIHRoZSByZXNwb25zZSB0 eXBlIGJ5IGV4YW1pbmluZyB3aGljaCByZXNwb25zZSBzdWJjbGFzcyAKKyAg ICAjIHRoZSByZXNwb25zZSBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YuCiAg ICAgYXR0cl9yZWFkZXIgOmNvZGUKIAotICAgICMgSFRUUCByZXN1bHQgbWVz c2FnZS4gRm9yIGV4YW1wbGUsICdOb3QgRm91bmQnLgorICAgICMgVGhlIEhU VFAgcmVzdWx0IG1lc3NhZ2Ugc2VudCBieSB0aGUgc2VydmVyLiBGb3IgZXhh bXBsZSwgJ05vdCBGb3VuZCcuCiAgICAgYXR0cl9yZWFkZXIgOm1lc3NhZ2UK ICAgICBhbGlhcyBtc2cgbWVzc2FnZSAgICMgOm5vZG9jOiBvYnNvbGV0ZQog CkBAIC0yMzE1LDcgKzI0MDYsNyBAQAogICAgICAgc2VsZi5jbGFzczo6RVhD RVBUSU9OX1RZUEUKICAgICBlbmQKIAotICAgICMgUmFpc2VzIEhUVFAgZXJy b3IgaWYgdGhlIHJlc3BvbnNlIGlzIG5vdCAyeHguCisgICAgIyBSYWlzZXMg YW4gSFRUUCBlcnJvciBpZiB0aGUgcmVzcG9uc2UgaXMgbm90IDJ4eCAoc3Vj Y2VzcykuCiAgICAgZGVmIHZhbHVlCiAgICAgICBlcnJvciEgdW5sZXNzIHNl bGYua2luZF9vZj8oSFRUUFN1Y2Nlc3MpCiAgICAgZW5kCkBAIC0yMzU0LDEy ICsyNDQ1LDE0IEBACiAgICAgICBlbmQKICAgICBlbmQKIAotICAgICMgR2V0 cyBlbnRpdHkgYm9keS4gIElmIHRoZSBibG9jayBnaXZlbiwgeWllbGRzIGl0 IHRvICtibG9jaysuCi0gICAgIyBUaGUgYm9keSBpcyBwcm92aWRlZCBpbiBm cmFnbWVudHMsIGFzIGl0IGlzIHJlYWQgaW4gZnJvbSB0aGUgc29ja2V0Lgor ICAgICMgR2V0cyB0aGUgZW50aXR5IGJvZHkgcmV0dXJuZWQgYnkgdGhlIHJl bW90ZSBIVFRQIHNlcnZlci4KICAgICAjCi0gICAgIyBDYWxsaW5nIHRoaXMg bWV0aG9kIGEgc2Vjb25kIG9yIHN1YnNlcXVlbnQgdGltZSB3aWxsIHJldHVy biB0aGUKLSAgICAjIGFscmVhZHkgcmVhZCBzdHJpbmcuCisgICAgIyBJZiBh IGJsb2NrIGlzIGdpdmVuLCB0aGUgYm9keSBpcyBwYXNzZWQgdG8gdGhlIGJs b2NrLCBhbmQgCisgICAgIyB0aGUgYm9keSBpcyBwcm92aWRlZCBpbiBmcmFn bWVudHMsIGFzIGl0IGlzIHJlYWQgaW4gZnJvbSB0aGUgc29ja2V0LgogICAg ICMKKyAgICAjIENhbGxpbmcgdGhpcyBtZXRob2QgYSBzZWNvbmQgb3Igc3Vi c2VxdWVudCB0aW1lIGZvciB0aGUgc2FtZQorICAgICMgSFRUUFJlc3BvbnNl IG9iamVjdCB3aWxsIHJldHVybiB0aGUgdmFsdWUgYWxyZWFkeSByZWFkLgor ICAgICMKICAgICAjICAgaHR0cC5yZXF1ZXN0X2dldCgnL2luZGV4Lmh0bWwn KSB7fHJlc3wKICAgICAjICAgICBwdXRzIHJlcy5yZWFkX2JvZHkKICAgICAj ICAgfQpAQCAtMjM5NCwxMCArMjQ4NywxMCBAQAogICAgICAgQGJvZHkKICAg ICBlbmQKIAotICAgICMgUmV0dXJucyB0aGUgZW50aXR5IGJvZHkuCisgICAg IyBSZXR1cm5zIHRoZSBmdWxsIGVudGl0eSBib2R5LgogICAgICMKICAgICAj IENhbGxpbmcgdGhpcyBtZXRob2QgYSBzZWNvbmQgb3Igc3Vic2VxdWVudCB0 aW1lIHdpbGwgcmV0dXJuIHRoZQotICAgICMgYWxyZWFkeSByZWFkIHN0cmlu Zy4KKyAgICAjIHN0cmluZyBhbHJlYWR5IHJlYWQuCiAgICAgIwogICAgICMg ICBodHRwLnJlcXVlc3RfZ2V0KCcvaW5kZXguaHRtbCcpIHt8cmVzfAogICAg ICMgICAgIHB1dHMgcmVzLmJvZHkK --mimepart_4cf4368a200a8_2c1fb9f00821816--