From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 20973 invoked from network); 8 Nov 2023 15:12:53 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 8 Nov 2023 15:12:53 -0000 Content-Type: multipart/mixed; boundary="===============5088758641748342348==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_ffmpeg6_split?= To: ml@inbox.vuxu.org From: zlice Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Wed, 08 Nov 2023 16:12:52 +0100 List-Id: Message-ID: <20231108151252.eJPXcwX1_R1RmJh4BRdfzMMOHdGsjwyzsVwoXO7RFjA@z> GitHub notification mails are now in MIME to allow UTF8. --===============5088758641748342348== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgemxpY2UgYWdhaW5zdCBtYXN0ZXIg b24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL3psaWNl L3ZvaWQtcGFja2FnZXMgZmZtcGVnNi1zcGxpdApodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51 eC92b2lkLXBhY2thZ2VzL3B1bGwvNDM3NjEKCmZmbXBlZzYgc3BsaXQKW2NpIHNraXBdDQoNCg0K IyMjIyBUZXN0aW5nIHRoZSBjaGFuZ2VzDQoNCi0gSSB0ZXN0ZWQgdGhlIGNoYW5nZXMgaW4gdGhp cyBQUjogKipZRVMqKg0KDQptYWluIHRlc3RpbmcgaGFzIGJlZW4gdmFhcGkgaW4gRmlyZWZveCBO aWdodGx5IGFuZCBlbmMvZGVjIGluIFNob3RjdXQgb24gSW50ZWwgQTc3MA0KDQojIyMjIE5ldyBw YWNrYWdlDQoNCi0gVGhpcyBuZXcgcGFja2FnZSBjb25mb3JtcyB0byB0aGUgW3BhY2thZ2UgcmVx dWlyZW1lbnRzXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Js b2IvbWFzdGVyL0NPTlRSSUJVVElORy5tZCNwYWNrYWdlLXJlcXVpcmVtZW50cyk6ICoqWUVTKioN Cg0KIyMjIyBMb2NhbCBidWlsZCB0ZXN0aW5nDQoNCi0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkg Zm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsICoqeDg2XzY0KioNCg0KIyMjIyBEaXNjdXNzaW9u DQoNCkNvbnRpbnVhdGlvbiBvZiBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBh Y2thZ2VzL3B1bGwvMzYzMTUNCg0KYGxpYmF2cmVzYW1wbGVgIGlzIGRlcHJlY2F0ZWQsIGJ1dCBt YXJrZWQgYXMgYSBkZXBlbmRlbmN5IHdoZW4gdHJ5aW5nIHRvIGJ1aWxkIG90aGVyIHBhY2thZ2Vz IGFuZCBpbnN0YWxsIGBmZm1wZWdgKDYpLiBJIHRoaW5rIHRoZSByaWdodCB3YXkgdG8gaGFuZGxl IHRoaXMgaXMgbWFrZSBhIG1ldGEgcGFja2FnZSBhbmQgdGhlIGFkZCB0byByZW1vdmFscz8NCg0K DQojIyMjIyBDb21taXQgbmFtaW5nIC8gbWlzYw0KDQp+fkNvbW1pdHMgYXJlICdkaXJ0eScgcmln aHQgbm93LCBydW5uaW5nIHdpdGggW2dzdHJlYW1lciAxLjIyLjEgdXBkYXRlc10oaHR0cHM6Ly9n aXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQyODYxKSBhbmQgW0ludGVs IE9wZW5DTF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxs LzQzMDg0KS4gVGhpcyB3aWxsIGFsc28gbWFrZSBbaW50ZWwgcGFja2FnZXMgcHJdKGh0dHBzOi8v Z2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC80MTEzMikgb2Jzb2xldGUu fn4gKHNlZSBSZXF1aXJlbWVudHMgYmVsb3cpDQoNCk1haW50YWluZXIgZm9yIHByZXZpb3VzIGZm bXBlZyg0KSB3YXMgb3JwaGFuZWQsIEkgY2FuIHB1dCBteSBuYW1lIGluIHRoZXJlIGlmIHRoYXQg bWF0dGVycywgdGhvdWdoIEkgZG9uJ3QgZXhhY3RseSBzZWUgbXlzZWxmIGtlZXBpbmcgdXAgb24g ZmZtcGVnLg0KDQpUaGlzIHVwZGF0ZXMgUVQ1IHdoaWNoIGxvb2tzIGxpa2UgaXQgaXMgdXN1YWxs eSBob3N0ZWQgYnkgSm9obm55LiBOb3Qgc3VyZSBpZiB0aGVyZSdzIGFueSByZWFzb24gdG8gc3Rh eSB0aGVyZSBvciB0aGVzZSBzb3VyY2VzIGFyZSBmaW5lLg0KDQojIyMjIyBTVElMTCBGRk1QRUc0 DQoNClRoZXNlIGFyZSBhIG1peCBvZiBlbXVsYXRvcnMsIGdhbWVzIGFuZC9vciBvbGRlciBwYWNr YWdlcy4NCg0KLSBhdHRyYWN0IChtdWx0aXBsZSBwYXRjaGVzIGluIG1hc3RlcikNCi0gYXVkYWNp dHkgKGh0dHBzOi8vZ2l0aHViLmNvbS9hdWRhY2l0eS9hdWRhY2l0eS9pc3N1ZXMvMjMwNSBhbmQg aHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9wb3J0bWVkaWEvd2lraS9wb3J0c21mLyBpcyAnYmV0 YScpDQotIGNjZXh0cmFjdG9yIChtYXN0ZXIgcGF0Y2hlcz8gbm8gcmVsZWFzZSkNCi0gdmljZQ0K LSBrb2RpDQotIG1sdCAob25seSBkZXAgbGVmdCBpcyBmbG93YmxhZGUpDQotIH5+c3luZmlnICht bHQpfn4gKHdvcmsgd2l0aCBtbHQ3LCBidW1wIHN5bmZpZ3N0dWRpbykNCi0gdHZoZWFkZW5kDQot IHNzcg0KLSB+fnNwZWstYWx0ZXJuYXRpdmV+fiAocmVwbGFjZSB3aXRoIHNwZWsteCkNCi0gcHBz c3BwDQotIG9saXZlDQotIG1vYw0KLSBtZWRpYXN0cmVhbWVyDQotIGxpYmV4dHJhY3Rvcg0KLSBp ZGpjDQotIGhlZGdld2Fycw0KLSB+fmZmbXBlZ3RodW1ibmFpbGVyfn4gKHBhdGNoZXMgZm9yIG1v dmllZGVjb2Rlci54eHggZmlsZXMpDQotIH5+ZmZtcGVndGh1bWJzfn4gKGxhdGVzdCBjb21waWxl cykNCi0gZGVhZGJlZWYNCi0gb214cGxheWVyDQotIHF0YXYgKGZvcmsgaGFzIGZmbXBlZyA1IHBh dGNoIC0gaHR0cHM6Ly9naXRodWIuY29tL2NtZ3VvL1F0QVYpDQotIGB2bGNgICh2bGM0IHdpbGwg c3VwcG9ydCBmZm1wZWc1LCB0aGVyZSdzIGEgcGF0Y2ggdG8gYnVpbGQgMy54IHdpdGggZmZtcGVn NSBidXQgaXQgd2lsbCBsYWNrIHZhYXBpKQ0KLSBgb3NnYCAoT3BlblNjZW5lR3JhcGggcGx1cyBg eGluZS1saWJgKQ0KDQoNCiMjIyMjIEhBVkUgTk9UIEJVSUxUIFlFVA0KDQotIG9teHBsYXllciAo cnBpIG9ubHk/IGZmbXBlZzQpDQotIGtvZGkgKGJpZywgYnV0IGZmbXBlZzQpDQoNCg0KIyMjIyMg VVBEQVRFRCAoZm9yIGZmbXBlZzYpDQoNCi0gfn5ibGVuZGVyOiB1cGRhdGUgdG8gMy41LjF+fiB+ fndpbGwgYmUgcmV2YnVtcCB3aXRofn4gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9p ZC1wYWNrYWdlcy9wdWxsLzQzOTkyDQotIHVucGFwZXI6IHVwZGF0ZSB0byA3LjAuMC4NCi0gZ3V2 Y3ZpZXc6IHVwZGF0ZSB0byAyLjAuOC4NCi0gcXQ1OiB1cGRhdGUgdG8gNS4xNS44DQotIHF0NS13 ZWJlbmdpbmU6IHVwZGF0ZSB0byA1LjE4LjEzDQotIHNoaWJva2VuMjogcmV2YnVtcCBmb3IgcXQ1 LjE1LjggKHBhdGNoKQ0KLSBweXRob24zLXB5c2lkZTI6IHVwZGF0ZSB0byA1LjE1LjggKHBhdGNo KQ0KLSBOZXcgcGFja2FnZTogc3BleC14IHJlcGxhY2VzIHNwZWstYWx0ZXJuYXRpdmUgZm9yIGZm bXBlZy02LjANCg0KDQojIyMjIyBSZXF1aXJlbWVudHMNCg0KLSB+fltnc3RyZWFtZXIgMS4yMi4y XShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDI4NjEp fn4gLSBhIGZldyBwYWNrYWdlcyB1c2UgZmZtcGVnLWRldmVsIGFuZCByZXF1aXJlIGEgcmV2YnVt cA0KDQotIFtJbnRlbCBQYWNrYWdlc10oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9p ZC1wYWNrYWdlcy9wdWxsLzQxMTMyKSAtIGZmbXBlZzQgdXNlcyBkaWZmZXJlbnQgbGlicmFyaWVz IHRoYW4gNiAobGlibWZ4IC8gSW50ZWwtTWVkaWFTREsgdnMgb25seSBvbmVWUEwgdGhhdCBJbnRl bCBpcyBtb3ZpbmcgdG8pLCBib3RoIGFyZSBpbmNsdWRlZCBoZXJlDQoNCi0gfn5bc2hvdGN1dCAy My4wNS4xNF0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxs LzQ0MjYwKX5+DQoNCi0gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdl cy9wdWxsLzQ0NzgxIHdpbGwgcmVtb3ZlIGZyb20gdGhpcyBQUgoKQSBwYXRjaCBmaWxlIGZyb20g aHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzQzNzYxLnBh dGNoIGlzIGF0dGFjaGVk --===============5088758641748342348== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-ffmpeg6-split-43761.patch" RnJvbSA1YmFjNjlhMzdlZDNlYWM2ZDZiMDc2ZTc5N2YyODE0NzRiYmUxNWI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4s IDE1IE9jdCAyMDIzIDIxOjE2OjU2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDEvMTE1XSBmZm1w ZWc6IHVwZGF0ZSB0byA2LjAuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDI2ICsrKysrLS0tCiBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoICAgICAgICAgICAgfCA2MCAtLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy9h cm12NXRlbC1mbG9hdGluZy1wb2ludC5wYXRjaCAgICAgfCAxOCAtLS0tLS0KIC4uLmgtbGliYXZj b2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZiB8IDQwIC0tLS0tLS0tLS0tLS0KIC4u Li93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1idWcucGF0Y2ggICB8IDI4IC0tLS0tLS0t LQogc3JjcGtncy9mZm1wZWcvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgMzggKysr KysrLS0tLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDE3MyBkZWxldGlv bnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVjLnBh dGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy9hcm12NXRlbC1m bG9hdGluZy1wb2ludC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3Bh dGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZgogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJl YWRlb24tdmFhcGktYnVnLnBhdGNoCgpkaWZmIC0tZ2l0IGEvY29tbW9uL3NobGlicyBiL2NvbW1v bi9zaGxpYnMKaW5kZXggN2M3MmM2OGEzMmZlNS4uODhlMmZiMGFhNDk1NSAxMDA2NDQKLS0tIGEv Y29tbW9uL3NobGlicworKysgYi9jb21tb24vc2hsaWJzCkBAIC0zODUsMTUgKzM4NSwyMyBAQCBs aWJpZDN0YWcuc28uMCBsaWJpZDN0YWctMC4xNS4xYl8xCiBsaWJnaWYuc28uNyBnaWZsaWItNS4x LjBfMQogbGliSW1saWIyLnNvLjEgaW1saWIyLTEuNC4yXzEKIGxpYm1wM2xhbWUuc28uMCBsYW1l LTMuOTguMl8xCi1saWJhdmRldmljZS5zby41OCBsaWJhdmRldmljZS00LjBfMQotbGliYXZmb3Jt YXQuc28uNTggbGliYXZmb3JtYXQtNC4wXzEKLWxpYnN3c2NhbGUuc28uNSBsaWJzd3NjYWxlLTQu MF8xCi1saWJzd3Jlc2FtcGxlLnNvLjMgbGlic3dyZXNhbXBsZS00LjBfMQotbGliYXZyZXNhbXBs ZS5zby40IGxpYmF2cmVzYW1wbGUtNC4wXzEKLWxpYnBvc3Rwcm9jLnNvLjU1IGxpYnBvc3Rwcm9j LTQuMF8xCi1saWJhdmNvZGVjLnNvLjU4IGxpYmF2Y29kZWMtNC4wXzEKLWxpYmF2dXRpbC5zby41 NiBsaWJhdnV0aWwtNC4wXzEKLWxpYmF2ZmlsdGVyLnNvLjcgbGliYXZmaWx0ZXItNC4wXzEKK2xp YmF2ZGV2aWNlLnNvLjYwIGxpYmF2ZGV2aWNlLTYuMF8xCitsaWJhdmZvcm1hdC5zby42MCBsaWJh dmZvcm1hdC02LjBfMQorbGlic3dzY2FsZS5zby43IGxpYnN3c2NhbGUtNi4wXzEKK2xpYnN3cmVz YW1wbGUuc28uNCBsaWJzd3Jlc2FtcGxlLTYuMF8xCitsaWJwb3N0cHJvYy5zby41NyBsaWJwb3N0 cHJvYy02LjBfMQorbGliYXZjb2RlYy5zby42MCBsaWJhdmNvZGVjLTYuMF8xCitsaWJhdnV0aWwu c28uNTggbGliYXZ1dGlsLTYuMF8xCitsaWJhdmZpbHRlci5zby45IGxpYmF2ZmlsdGVyLTYuMF8x CitsaWJhdmRldmljZS5zby41OCBsaWJhdmRldmljZTQtNC4wXzEKK2xpYmF2Zm9ybWF0LnNvLjU4 IGxpYmF2Zm9ybWF0NC00LjBfMQorbGlic3dzY2FsZS5zby41IGxpYnN3c2NhbGU0LTQuMF8xCits aWJzd3Jlc2FtcGxlLnNvLjMgbGlic3dyZXNhbXBsZTQtNC4wXzEKK2xpYmF2cmVzYW1wbGUuc28u NCBsaWJhdnJlc2FtcGxlNC00LjBfMQorbGlicG9zdHByb2Muc28uNTUgbGlicG9zdHByb2M0LTQu MF8xCitsaWJhdmNvZGVjLnNvLjU4IGxpYmF2Y29kZWM0LTQuMF8xCitsaWJhdnV0aWwuc28uNTYg bGliYXZ1dGlsNC00LjBfMQorbGliYXZmaWx0ZXIuc28uNyBsaWJhdmZpbHRlcjQtNC4wXzEKIGxp YlNETC0xLjIuc28uMCBTREwtMS4yLjE0XzEKIGxpYlNETF9pbWFnZS0xLjIuc28uMCBTRExfaW1h Z2UtMS4yLjEwXzEKIGxpYngyNjQuc28uMTU3IHgyNjQtMjAxOTA1MDcuMjI0NV8xCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVjLnBhdGNoIGIvc3JjcGtncy9mZm1wZWcv ZmlsZXMvYWx0aXZlYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM1NzIw MDQ2MzMyMC4uMDAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9maWxlcy9hbHRpdmVj LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotcmV2ZXJ0IHNvbWUgYWx0aXZl YyBzcGVjaWZpYyBjaGFuZ2Ugb24gYWxsIHBwYyogZXhjZXB0IHBwYzY0bGUqCi0KLXE2NjogIldl IHNob3VsZCBhbHNvIHRocm93IGluIGEgcmV2ZXJ0IG9mIEZGbXBlZy9GRm1wZWdAM2E1NTdjNSBi dXQgb25seQotY29uZGl0aW9uYWxseSwgZm9yIHBwYyogYnV0IG5vdCBwcGM2NGxlKiAodGhlIG5l dyBjb2RlIGlzIHZhbGlkIGZvcgotUE9XRVI4IFZTWCB3aGljaCBMRSB0YXJnZXRzIGFzIGEgYmFz ZWxpbmUgYnV0IG5vdCBCRSkiCi0KLQotVGhpcyByZXZlcnRzIGNvbW1pdCAzYTU1N2M1ZDg4Yjdi MTViNTk1NGJhMjc0M2ZlYmIwNTU1NDliNTM2LgotLS0tCi0gbGlic3dzY2FsZS9wcGMveXV2MnJn Yl9hbHRpdmVjLmMgfCAyNCArKysrKysrKysrKysrKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdl ZCwgMjAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYnN3 c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jIGIvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9hbHRp dmVjLmMKLWluZGV4IDUzNjU0NTI5M2QuLmMxZTI4NTJhZGIgMTAwNjQ0Ci0tLS0gYS9saWJzd3Nj YWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYwotKysrIGIvbGlic3dzY2FsZS9wcGMveXV2MnJnYl9h bHRpdmVjLmMKLUBAIC0zMDUsNiArMzA1LDkgQEAgc3RhdGljIGludCBhbHRpdmVjXyAjIyBuYW1l KFN3c0NvbnRleHQgKmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwgICAgICAgICAgXAotICAg ICB2ZWN0b3Igc2lnbmVkIHNob3J0IFIxLCBHMSwgQjE7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgUiwgRywgQjsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotKyAgICBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqeTFpdlAsICp5 Mml2UCwgKnVpdlAsICp2aXZQOyAgICAgICAgICAgICAgICAgIFwKLSsgICAgdmVjdG9yIHVuc2ln bmVkIGNoYXIgYWxpZ25fcGVybTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0 IGxDWSAgICAgICA9IGMtPkNZOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBsT1kgICAgICAgPSBjLT5PWTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHZlY3RvciBzaWduZWQgc2hvcnQgbENSViAg ICAgID0gYy0+Q1JWOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTMz NSwxMyArMzM4LDI2IEBAIHN0YXRpYyBpbnQgYWx0aXZlY18gIyMgbmFtZShTd3NDb250ZXh0ICpj LCBjb25zdCB1bnNpZ25lZCBjaGFyICoqaW4sICAgICAgICAgIFwKLSAgICAgICAgIHZlY19kc3Rz dChvdXRlLCAoMHgwMjAwMDAwMiB8ICgoKHcgKiAzICsgMzIpIC8gMzIpIDw8IDE2KSksIDEpOyAg ICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgZm9yIChqID0gMDsgaiA8 IHcgLyAxNjsgaisrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LS0gICAgICAgICAgICB5MCA9IHZlY194bCgwLCB5MWkpOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgeTFpdlAgPSAoY29uc3QgdmVj dG9yIHVuc2lnbmVkIGNoYXIgKikgeTFpOyAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAg ICAgICAgIHkyaXZQID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyICopIHkyaTsgICAgICAg ICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB1aXZQICA9IChjb25zdCB2ZWN0b3IgdW5z aWduZWQgY2hhciAqKSB1aTsgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAg dml2UCAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgdmk7ICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICBhbGlnbl9w ZXJtID0gdmVjX2x2c2woMCwgeTFpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCi0rICAgICAgICAgICAgeTAgPSAodmVjdG9yIHVuc2lnbmVkIGNoYXIpICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgIHZlY19w ZXJtKHkxaXZQWzBdLCB5MWl2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAgICAgeTEgPSB2ZWNfeGwoMCwgeTJpKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAg ICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB5MmkpOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICB5MSA9ICh2ZWN0b3IgdW5zaWduZWQgY2hhcikg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAg ICAgICAgdmVjX3Blcm0oeTJpdlBbMF0sIHkyaXZQWzFdLCBhbGlnbl9wZXJtKTsgICAgICAgICAg ICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICB1ID0gKHZlY3Rv ciBzaWduZWQgY2hhcikgdmVjX3hsKDAsIHVpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHVpKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgIHUgPSAodmVjdG9yIHNpZ25l ZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAg ICAgICAgICAgICAgICAgIHZlY19wZXJtKHVpdlBbMF0sIHVpdlBbMV0sIGFsaWduX3Blcm0pOyAg ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgICAgICAg IHYgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdmkpOyAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSsgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgdmkpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgdiA9ICh2 ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotKyAgICAgICAgICAgICAgICAgICAgdmVjX3Blcm0odml2UFswXSwgdml2UFsxXSwgYWxp Z25fcGVybSk7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgICAgICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgdmVjX3N1Yih1LCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0tIAotMi4y Ny4wCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0ZWwtZmxvYXRp bmctcG9pbnQucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5n LXBvaW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTU1MTc4Yzc0ZjBm Li4wMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvYXJtdjV0ZWwtZmxv YXRpbmctcG9pbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0tLS0gYS9s aWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTAtMjYgMjE6MDM6MDMuMDAwMDAwMDAwICsw MjAwCi0rKysgYi9saWJhdmZpbHRlci92Zl9kcmF3dGV4dC5jCTIwMTctMTEtMjEgMTE6MDY6NDku NjAyMjg0NDIyICswMTAwCi1AQCAtMzksNiArMzksMTUgQEAKLSAjZW5kaWYKLSAjaW5jbHVkZSA8 ZmVudi5oPgotIAotKyNpZiAoRkVfQUxMX0VYQ0VQVCA9PSAwKQotKy8qIEUuZy4gQVJNIHNvZnQg ZmxvYXQgZG9lcyBub3QgZGVmaW5lIHRoZXNlICovCi0rI2RlZmluZSBGRV9JTlZBTElEICAgIDAK LSsjZGVmaW5lIEZFX0RJVkJZWkVSTyAgMAotKyNkZWZpbmUgRkVfT1ZFUkZMT1cgICAwCi0rI2Rl ZmluZSBGRV9VTkRFUkZMT1cgIDAKLSsjZGVmaW5lIEZFX0lORVhBQ1QgICAgMAotKyNlbmRpZgot KwotICNpZiBDT05GSUdfTElCRk9OVENPTkZJRwotICNpbmNsdWRlIDxmb250Y29uZmlnL2ZvbnRj b25maWcuaD4KLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnL3BhdGNoZXMvcGF0 Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlmZiBiL3NyY3BrZ3MvZmZt cGVnL3BhdGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlm ZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE5NDhmN2E4YTJkZi4uMDAwMDAwMDAw MDAwMAotLS0gYS9zcmNwa2dzL2ZmbXBlZy9wYXRjaGVzL3BhdGNoLWxpYmF2Y29kZWMtbGlic3Z0 YXYxLXRlbl9iaXRfZm9ybWF0LmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0j PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgRnJvbSAwMzFmMTU2 MWNkMjg2NTk2Y2RiMzc0ZGEzMmY4YWE4MTZjZTNiMTM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQotIyBGcm9tOiBDaHJpc3RvcGhlciBEZWdhd2EgPGNocmlzdG9waGVyLmRlZ2F3YUBpbnRlbC5j b20+Ci0jIERhdGU6IFRodSwgMjAgT2N0IDIwMjIgMjI6NTU6MjcgLTA1MDAKLSMgU3ViamVjdDog W1BBVENIXSBhdmNvZGVjL2xpYnN2dGF2MTogcmVtb3ZlIGNvbXByZXNzZWRfdGVuX2JpdF9mb3Jt YXQgYW5kIHNpbXBsaWZ5IGFsbG9jX2J1ZmZlcgotIwotIyBjb21wcmVzc2VkX3Rlbl9iaXRfZm9y bWF0IGhhcyBiZWVuIGRlcHJlY2F0ZWQgdXBzdHJlYW0gYW5kIGhhcyBubyBlZmZlY3QKLSMgYW5k IGNhbiBiZSByZW1vdmVkLiBQbHVzLCB0ZWNobmljYWxseSBpdCB3YXMgbmV2ZXIgdXNlZCBpbiB0 aGUgZmlyc3QgcGxhY2UKLSMgc2luY2UgaXQgd291bGQgcmVxdWlyZSB0aGUgYXBwIChmZm1wZWcp IHRvIHNldCBpdCBhbmQgZG8gYWRkaXRpb25hbAotIyBwcm9jZXNzaW5nIG9mIHRoZSBpbnB1dCBm cmFtZXMuCi0jCi0jIEFsc28gc2ltcGxpZnkgYWxsb2NfYnVmZmVyIGJ5IHJlbW92aW5nIGNhbGN1 bGF0aW9ucyByZWxhdGluZyB0byB0aGUgbm9uLWV4aXN0YW50IHByb2Nlc3NpbmcuCi0jCi0jIFNp Z25lZC1vZmYtYnk6IENocmlzdG9waGVyIERlZ2F3YSA8Y2hyaXN0b3BoZXIuZGVnYXdhQGludGVs LmNvbT4KLSM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEv bGliYXZjb2RlYy9saWJzdnRhdjEuYwotKysrIGIvbGliYXZjb2RlYy9saWJzdnRhdjEuYwotQEAg LTEyNCwxNiArMTI0LDEyIEBAIHN0YXRpYyBpbnQgc3Z0X3ByaW50X2Vycm9yKHZvaWQgKmxvZ19j dHgsIEViRXJyb3JUeXBlIGVyciwKLSAKLSBzdGF0aWMgaW50IGFsbG9jX2J1ZmZlcihFYlN2dEF2 MUVuY0NvbmZpZ3VyYXRpb24gKmNvbmZpZywgU3Z0Q29udGV4dCAqc3Z0X2VuYykKLSB7Ci0tICAg IGNvbnN0IGludCAgICBwYWNrX21vZGVfMTBiaXQgPQotLSAgICAgICAgKGNvbmZpZy0+ZW5jb2Rl cl9iaXRfZGVwdGggPiA4KSAmJiAoY29uZmlnLT5jb21wcmVzc2VkX3Rlbl9iaXRfZm9ybWF0ID09 IDApID8gMSA6IDA7Ci0tICAgIGNvbnN0IHNpemVfdCBsdW1hX3NpemVfOGJpdCAgPQotLSAgICAg ICAgY29uZmlnLT5zb3VyY2Vfd2lkdGggKiBjb25maWctPnNvdXJjZV9oZWlnaHQgKiAoMSA8PCBw YWNrX21vZGVfMTBiaXQpOwotLSAgICBjb25zdCBzaXplX3QgbHVtYV9zaXplXzEwYml0ID0KLS0g ICAgICAgIChjb25maWctPmVuY29kZXJfYml0X2RlcHRoID4gOCAmJiBwYWNrX21vZGVfMTBiaXQg PT0gMCkgPyBsdW1hX3NpemVfOGJpdCA6IDA7Ci0rICAgIGNvbnN0IHNpemVfdCBsdW1hX3NpemUg PSBjb25maWctPnNvdXJjZV93aWR0aCAqIGNvbmZpZy0+c291cmNlX2hlaWdodCAqCi0rICAgICAg ICAoY29uZmlnLT5lbmNvZGVyX2JpdF9kZXB0aCA+IDggPyAyIDogMSk7Ci0gCi0gICAgIEViU3Z0 SU9Gb3JtYXQgKmluX2RhdGE7Ci0gCi0tICAgIHN2dF9lbmMtPnJhd19zaXplID0gKGx1bWFfc2l6 ZV84Yml0ICsgbHVtYV9zaXplXzEwYml0KSAqIDMgLyAyOwotKyAgICBzdnRfZW5jLT5yYXdfc2l6 ZSA9IGx1bWFfc2l6ZSAqIDMgLyAyOwotIAotICAgICAvLyBhbGxvY2F0ZSBidWZmZXIgZm9yIGlu IGFuZCBvdXQKLSAgICAgc3Z0X2VuYy0+aW5fYnVmICAgICAgICAgICA9IGF2X21hbGxvY3ooc2l6 ZW9mKCpzdnRfZW5jLT5pbl9idWYpKTsKLS0tIAotR2l0TGFiCi0KZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZmZtcGVnL3BhdGNoZXMvd29ya2Fyb3VuZC1tZXNhLXJlYWRlb24tdmFhcGktYnVnLnBhdGNo IGIvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFwaS1i dWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwZTNmNjhhNDE1YjguLjAw MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9mZm1wZWcvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2Et cmVhZGVvbi12YWFwaS1idWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1G cm9tIDgxMWQyOTA4NDQyMDZmYzczZGMzOWMzZTViNjdkNWQ4OTViYWVkZjggTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCi1Gcm9tOiBSYWluZXIgSG9jaGVja2VyIDxmZXJuZXRtZW50YUBvbmxpbmUu ZGU+Ci1EYXRlOiBTYXQsIDI2IEphbiAyMDE5IDE5OjQ4OjM1ICswMTAwCi1TdWJqZWN0OiBbUEFU Q0hdIGF2Y29kZWMvdmFhcGlfaDI2NDogc2tpcCBkZWNvZGUgaWYgcGljIGhhcyBubyBzbGljZXMK LQotVGhpcyBmaXhlcyAvIHdvcmthcm91bmRzIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcv c2hvd19idWcuY2dpP2lkPTEwNTM2OC4KLUl0IHdhcyBoaXQgZnJlcXVlbnRseSB3aGVuIHdhdGNo aW5nIGgyNjQgY2hhbm5lbHMgcmVjZWl2ZWQgdmlhIERWQi1YLgotQ29ycmVzcG9uZGluZyBrb2Rp IGJ1ZzogaHR0cHM6Ly9naXRodWIuY29tL3hibWMveGJtYy9pc3N1ZXMvMTU3MDQKLS0tLQotIGxp YmF2Y29kZWMvdmFhcGlfaDI2NC5jIHwgNSArKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2Vy dGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jIGIvbGliYXZj b2RlYy92YWFwaV9oMjY0LmMKLWluZGV4IDU4NTQ1ODdhMjU1Li5mMTJmZGM0NTdhNCAxMDA2NDQK LS0tLSBhL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jCi0rKysgYi9saWJhdmNvZGVjL3ZhYXBpX2gy NjQuYwotQEAgLTMxNyw2ICszMTcsMTEgQEAgc3RhdGljIGludCB2YWFwaV9oMjY0X2VuZF9mcmFt ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgpCi0gICAgIEgyNjRTbGljZUNvbnRleHQgKnNsID0gJmgt PnNsaWNlX2N0eFswXTsKLSAgICAgaW50IHJldDsKLSAKLSsgICAgaWYgKHBpYy0+bmJfc2xpY2Vz ID09IDApIHsKLSsgICAgICAgIHJldCA9IEFWRVJST1JfSU5WQUxJRERBVEE7Ci0rICAgICAgICBn b3RvIGZpbmlzaDsKLSsgICAgfQotKwotICAgICByZXQgPSBmZl92YWFwaV9kZWNvZGVfaXNzdWUo YXZjdHgsIHBpYyk7Ci0gICAgIGlmIChyZXQgPCAwKQotICAgICAgICAgZ290byBmaW5pc2g7CmRp ZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZy90ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtcGVnL3RlbXBs YXRlCmluZGV4IDNlM2FiMmZiODkzMWMuLmMxZjliN2VmZTQwZTMgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvZmZtcGVnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZmZtcGVnL3RlbXBsYXRlCkBAIC0xLDE1 ICsxLDE1IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWcnCiAjIGF1ZGFjaXR5IGFsc28g bmVlZHMgdG8gYmUgYnVtcGVkIHdoZW4gYSBuZXcgZmZtcGVnIHZlcnNpb24gYnVtcHMgbGliYXZm b3JtYXQncyBzb25hbWUhCiBwa2duYW1lPWZmbXBlZwotdmVyc2lvbj00LjQuNAotcmV2aXNpb249 NAordmVyc2lvbj02LjAKK3JldmlzaW9uPTEKIHNob3J0X2Rlc2M9IkRlY29kaW5nLCBlbmNvZGlu ZyBhbmQgc3RyZWFtaW5nIHNvZnR3YXJlIgogbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2 b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0 cHM6Ly93d3cuZmZtcGVnLm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNv bnRlbnQuY29tL0ZGbXBlZy9GRm1wZWcvbWFzdGVyL0NoYW5nZWxvZyIKIGRpc3RmaWxlcz0iaHR0 cHM6Ly93d3cuZmZtcGVnLm9yZy9yZWxlYXNlcy9mZm1wZWctJHt2ZXJzaW9ufS50YXIueHoiCi1j aGVja3N1bT1lODBiMzgwZDU5NWM4MDkwNjBmNjZmOTZhNWQ4NDk1MTFlZjRhNzZhMjZiNzZlYWNm NTc3OGI5NGMzNTcwMzA5CitjaGVja3N1bT01N2JlODdjMjJkOWI0OWMxMTJiNmQyNGJjNjdkNDI1 MDg2NjBlNmI3MThiM2RiODljNDRlNDdlMjg5MTM3MDgyCiAKIGhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyBwZXJsIgogbWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5 cGUtZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGliWGZpeGVzLWRldmVsCkBAIC0yNiwxMiArMjYsMTMg QEAgbWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgYWxz YS1saWItZGV2ZWwgbGliWGZpeGVzLWRldmUKICAkKHZvcHRfaWYgd2VicCBsaWJ3ZWJwLWRldmVs KSAkKHZvcHRfaWYgc29mYSBsaWJteXNvZmEtZGV2ZWwpCiAgJCh2b3B0X2lmIGRybSBsaWJkcm0t ZGV2ZWwpICQodm9wdF9pZiBzdnRhdjEgbGlic3Z0LWF2MS1kZXZlbCkKICAkKHZvcHRfaWYgc3J0 IHNydC1kZXZlbCkgJCh2b3B0X2lmIHJpc3QgbGlicmlzdC1kZXZlbCkKLSAkKHZvcHRfaWYgdnVs a2FuICd2dWxrYW4tbG9hZGVyIFZ1bGthbi1IZWFkZXJzJykKKyAkKHZvcHRfaWYgdnVsa2FuICd2 dWxrYW4tbG9hZGVyIFZ1bGthbi1IZWFkZXJzIFZ1bGthbi1Ub29scyBWdWxrYW4tVmFsaWRhdGlv bkxheWVycycpCisgJCh2b3B0X2lmIG9uZXZwbCAnb25ldnBsIG9uZXZwbC1kZXZlbCcpCiAgJCh2 b3B0X2lmIG52ZW5jIG52LWNvZGVjLWhlYWRlcnMpICQodm9wdF9pZiBudmRlYyBudi1jb2RlYy1o ZWFkZXJzKSIKIGRlcGVuZHM9ImZmcGxheT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKIAogYnVp bGRfb3B0aW9ucz0ieDI2NSB2NGwyIHZhYXBpIHZkcGF1IHZweCBmZGtfYWFjIGFvbSBudmVuYyBz bmRpbyBwdWxzZWF1ZGlvCi0gZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEg c3J0IHJpc3QgbnZkZWMiCisgZGF2MWQgemltZyB3ZWJwIHNvZmEgdnVsa2FuIGRybSBzdnRhdjEg c3J0IHJpc3QgbnZkZWMgb25ldnBsIgogYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJ4MjY1IHY0bDIg dnB4IGFvbSBzbmRpbyBwdWxzZWF1ZGlvIGRhdjFkIHdlYnAgdnVsa2FuIGRybSBzcnQgcmlzdCIK IGRlc2Nfb3B0aW9uX3NydD0iRW5hYmxlIHN1cHBvcnQgZm9yIFNSVCAoU2VjdXJlLCBSZWxpYWJs ZSwgVHJhbnNwb3J0KSIKIGRlc2Nfb3B0aW9uX3Jpc3Q9IkVuYWJsZSBzdXBwb3J0IGZvciBSSVNU IChSZWxpYWJsZSBJbnRlcm5ldCBTdHJlYW0gVHJhbnNwb3J0KSIKQEAgLTM5LDkgKzQwLDEzIEBA IGRlc2Nfb3B0aW9uX3NvZmE9IkVuYWJsZSBzdXBwb3J0IGZvciBBRVMgU09GQSIKIGRlc2Nfb3B0 aW9uX3dlYnA9IkVuYWJsZSBzdXBwb3J0IGZvciBXZWJQIgogCiBjYXNlICIkWEJQU19UQVJHRVRf TUFDSElORSIgaW4KLQlpNjg2Knx4ODZfNjQqKQotCQlob3N0bWFrZWRlcGVuZHMrPSIgbmFzbSIK KwlpNjg2KikKIAkJYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5jIG52 ZGVjIgorCQlob3N0bWFrZWRlcGVuZHMrPSIgbmFzbSIKKwkJOzsKKwl4ODZfNjQqKQorCQlob3N0 bWFrZWRlcGVuZHMrPSIgbmFzbSIKKwkJYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZk cGF1IG52ZW5jIG52ZGVjIG9uZXZwbCIKIAkJOzsKIAlwcGM2NCopIGJ1aWxkX29wdGlvbnNfZGVm YXVsdCs9IiB2YWFwaSB2ZHBhdSI7OwogCW1pcHMqKSBDRkxBR1M9Ii1tbmFuPWxlZ2FjeSI7OwpA QCAtMTE1LDE4ICsxMjAsMTkgQEAgZG9fY29uZmlndXJlKCkgewogCQkkKHZvcHRfZW5hYmxlIHgy NjUgbGlieDI2NSkgXAogCQkkKHZvcHRfZW5hYmxlIHY0bDIgbGlidjRsMikgXAogCQkkKHZvcHRf ZW5hYmxlIGFvbSBsaWJhb20pICQodm9wdF9lbmFibGUgdmFhcGkpICQodm9wdF9lbmFibGUgdmRw YXUpIFwKLQkJLS1lbmFibGUtbGliYnMyYiAtLWVuYWJsZS1hdnJlc2FtcGxlIC0tZW5hYmxlLWxp YnZpZHN0YWIgXAorCQktLWVuYWJsZS1saWJiczJiIC0tZW5hYmxlLWxpYnZpZHN0YWIgXAogCQkk KHZvcHRfZW5hYmxlIGRhdjFkIGxpYmRhdjFkKSBcCiAJCSQodm9wdF9lbmFibGUgemltZyBsaWJ6 aW1nKSBcCiAJCSQodm9wdF9lbmFibGUgd2VicCBsaWJ3ZWJwKSBcCiAJCSQodm9wdF9lbmFibGUg c29mYSBsaWJteXNvZmEpIFwKIAkJJCh2b3B0X2VuYWJsZSB2dWxrYW4pIFwKKwkJJCh2b3B0X2Vu YWJsZSBvbmV2cGwgbGlidnBsKSBcCiAJCSQodm9wdF9lbmFibGUgZHJtIGxpYmRybSkgXAogCQkk KHZvcHRfZW5hYmxlIHN2dGF2MSBsaWJzdnRhdjEpIFwKIAkJJCh2b3B0X2VuYWJsZSBzcnQgbGli c3J0KSBcCiAJCSQodm9wdF9lbmFibGUgcmlzdCBsaWJyaXN0KSBcCi0JCSQodm9wdF9pZiBudmVu YyAnLS1lbmFibGUtbnZlbmMnKSBcCi0JCSQodm9wdF9pZiBudmRlYyAnLS1lbmFibGUtbnZkZWMn KQorCQkkKHZvcHRfZW5hYmxlIG52ZW5jIG52ZW5jKSBcCisJCSQodm9wdF9lbmFibGUgbnZkZWMg bnZkZWMpCiB9CiAKIGRvX2J1aWxkKCkgewpAQCAtMTUzLDEwICsxNTksOCBAQCBsaWJhdmRldmlj ZV9wYWNrYWdlKCkgewogfQogCiBsaWJhdnJlc2FtcGxlX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVz Yz0iRkZtcGVnIGF1ZGlvIHJlc2FtcGxpbmcgbGlicmFyeSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJ dm1vdmUgInVzci9saWIvbGliYXZyZXNhbXBsZS5zby4qIgotCX0KKwlzaG9ydF9kZXNjPSJQYWNr YWdlIGRlcHJlY2F0ZWQsIHJlbW92YWwgbmVlZGVkIgorCWJ1aWxkX3N0eWxlPW1ldGEKIH0KIAog bGliYXZmb3JtYXRfcGFja2FnZSgpIHsKQEAgLTIxMCwxNSArMjE0LDEzIEBAIGZmbXBlZy1kZXZl bF9wYWNrYWdlKCkgewogCQlsaWJhdmZpbHRlcj49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQogCQls aWJwb3N0cHJvYz49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQogCQlsaWJzd3NjYWxlPj0ke3ZlcnNp b259XyR7cmV2aXNpb259Ci0JCWxpYnN3cmVzYW1wbGU+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0K LQkJbGliYXZyZXNhbXBsZT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwkJbGlic3dyZXNhbXBs ZT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKIAlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQg ZmlsZXMiCi0KKwljb25mbGljdHM9ImZmbXBlZzQtZGV2ZWwiCiAJaWYgWyAiJFhCUFNfVEFSR0VU X01BQ0hJTkUiID0gImk2ODYiIF07IHRoZW4KIAkJIyAvdXNyL2Jpbi9zdHJpcDogZXJyb3I6IHRo ZSBpbnB1dCBmaWxlICcvZGVzdGRpci8vZmZtcGVnLWRldmVsLTQuNC40L3Vzci9saWIvbGliYXZm aWx0ZXIuYSh2Zl9hdGFkZW5vaXNlLm8pJyBoYXMgbm8gc2VjdGlvbnMKIAkJbm9zdHJpcF9maWxl cz0iL3Vzci9saWIvbGliYXZmaWx0ZXIuYSIKIAlmaQotCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZt b3ZlIHVzci9pbmNsdWRlCiAJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCgpGcm9tIDE1M2FlOTg4 NDgyZTk3MzFlYmRlOWU1MWQzODI4YWI4OGY0ZGNjMDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1biwgMTUgT2N0IDIwMjMg MjE6MTc6MjYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwMi8xMTVdIGJhcmVzaXA6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlIGIvc3JjcGtncy9iYXJlc2lwL3RlbXBsYXRlCmluZGV4 IDUxMjA0NWUzMDZkYmUuLjEyYzg5NTRlZjdiOWIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvYmFyZXNp cC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2JhcmVzaXAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdiYXJlc2lwJwogcGtnbmFtZT1iYXJlc2lwCiB2ZXJzaW9u PTMuNi4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1h a2VkZXBlbmRzPSJwa2ctY29uZmlnIGdsaWItZGV2ZWwiCiBtYWtlZGVwZW5kcz0ibGliZ3NtLWRl dmVsIGxpYnBuZy1kZXZlbCBvcGVuc3NsLWRldmVsIGxpYnNuZGZpbGUtZGV2ZWwKCkZyb20gNmZi YTU2MzNkYTBkZDM3OTQ2Y2U1YzY3ZWE1NjRlZWI3YTYxYWZkNiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAxNSBPY3Qg MjAyMyAyMToxODoxNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDAzLzExNV0gb3BlbnNob3Q6IHJl dmJ1bXAgZm9yIGZmbXBlZzYuMAoKLS0tCiBzcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9vcGVuc2hvdC90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3BlbnNob3QvdGVtcGxh dGUKaW5kZXggOGY0Nzg1MWVlZjM1NC4uYWZmYjY1MmE5ZDUwMCAxMDA2NDQKLS0tIGEvc3JjcGtn cy9vcGVuc2hvdC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW5zaG90L3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbnNob3QnCiBwa2duYW1lPW9wZW5z aG90CiB2ZXJzaW9uPTMuMC4wCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1w eXRob24zLW1vZHVsZQogaG9zdG1ha2VkZXBlbmRzPSJweXRob24zIHB5dGhvbjMtc2V0dXB0b29s cyIKIG1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgcHl0aG9uMy1QeVF0NSIKCkZyb20gZTNlMjI0 MjkyY2E3NTEyYjAwNzc0MWJhMGE0OGU5ZTUwNzAxYzhiZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAxNSBPY3QgMjAy MyAyMToxODozNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDA0LzExNV0gc3VtbzogcmV2YnVtcCBm b3IgZmZtcGVnNi4wCgotLS0KIHNyY3BrZ3Mvc3Vtby90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3Mvc3Vtby90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZQppbmRleCBhM2ZlMTM0YWE1 YWNjLi5hNzMwYWZhOWZhZmE5IDEwMDY0NAotLS0gYS9zcmNwa2dzL3N1bW8vdGVtcGxhdGUKKysr IGIvc3JjcGtncy9zdW1vL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnc3VtbycKIHBrZ25hbWU9c3VtbwogdmVyc2lvbj0xLjEyLjAKLXJldmlzaW9uPTYKK3Jl dmlzaW9uPTcKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImxpYmdkYWwtdG9v bHMgcGtnLWNvbmZpZyBzd2lnIHB5dGhvbjMtc2V0dXB0b29scyIKIG1ha2VkZXBlbmRzPSJweXRo b24zLWRldmVsIGZmbXBlZy1kZXZlbCBmb3gtZGV2ZWwgZ2wycHMtZGV2ZWwgbGliZ2RhbC1kZXZl bAoKRnJvbSBjYTkxNTdiMTk1NjBiOWM4MWVhYzA4MzVjNzgzZDg0Y2NiMzJmYjBmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDE5OjU2OjIyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDUvMTE1XSBO ZXcgcGFja2FnZTogZmZtcGVnNC00LjQuNC4KCi0tLQogc3JjcGtncy9mZm1wZWc0LWRldmVsICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvZmZtcGVnNC9maWxlcy9hbHRp dmVjLnBhdGNoICAgICAgICAgICB8ICA2MCArKysrKwogLi4uL3BhdGNoZXMvYXJtdjV0ZWwtZmxv YXRpbmctcG9pbnQucGF0Y2ggICAgIHwgIDE4ICsrCiAuLi5oLWxpYmF2Y29kZWMtbGlic3Z0YXYx LXRlbl9iaXRfZm9ybWF0LmRpZmYgfCAgNDAgKysrCiAuLi4vd29ya2Fyb3VuZC1tZXNhLXJlYWRl b24tdmFhcGktYnVnLnBhdGNoICAgfCAgMjggKysKIHNyY3BrZ3MvZmZtcGVnNC90ZW1wbGF0ZSAg ICAgICAgICAgICAgICAgICAgICB8IDI0MCArKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvbGli YXZjb2RlYzQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2 ZGV2aWNlNCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJhdmZp bHRlcjQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGliYXZmb3Jt YXQ0ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYmF2cmVzYW1w bGU0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJhdnV0aWw0ICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGlicG9zdHByb2M0ICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYnN3cmVzYW1wbGU0ICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9saWJzd3NjYWxlNCAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIDE1IGZpbGVzIGNoYW5nZWQsIDM5NiBpbnNlcnRp b25zKCspCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9mZm1wZWc0LWRldmVsCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy9hcm12NXRlbC1mbG9hdGluZy1wb2lu dC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3BhdGNo LWxpYmF2Y29kZWMtbGlic3Z0YXYxLXRlbl9iaXRfZm9ybWF0LmRpZmYKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12YWFw aS1idWcucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2ZmbXBlZzQvdGVtcGxhdGUK IGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYmF2Y29kZWM0CiBjcmVhdGUgbW9kZSAxMjAw MDAgc3JjcGtncy9saWJhdmRldmljZTQKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNwa2dzL2xpYmF2 ZmlsdGVyNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGliYXZmb3JtYXQ0CiBjcmVhdGUg bW9kZSAxMjAwMDAgc3JjcGtncy9saWJhdnJlc2FtcGxlNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNy Y3BrZ3MvbGliYXZ1dGlsNAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGlicG9zdHByb2M0 CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJzd3Jlc2FtcGxlNAogY3JlYXRlIG1vZGUg MTIwMDAwIHNyY3BrZ3MvbGlic3dzY2FsZTQKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQt ZGV2ZWwgYi9zcmNwa2dzL2ZmbXBlZzQtZGV2ZWwKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXgg MDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mv ZmZtcGVnNC1kZXZlbApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2gg Yi9zcmNwa2dzL2ZmbXBlZzQvZmlsZXMvYWx0aXZlYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAwLi45YzU3MjAwNDYzMzIwCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9mZm1wZWc0L2ZpbGVzL2FsdGl2ZWMucGF0Y2gKQEAgLTAsMCArMSw2MCBAQAorcmV2 ZXJ0IHNvbWUgYWx0aXZlYyBzcGVjaWZpYyBjaGFuZ2Ugb24gYWxsIHBwYyogZXhjZXB0IHBwYzY0 bGUqCisKK3E2NjogIldlIHNob3VsZCBhbHNvIHRocm93IGluIGEgcmV2ZXJ0IG9mIEZGbXBlZy9G Rm1wZWdAM2E1NTdjNSBidXQgb25seQorY29uZGl0aW9uYWxseSwgZm9yIHBwYyogYnV0IG5vdCBw cGM2NGxlKiAodGhlIG5ldyBjb2RlIGlzIHZhbGlkIGZvcgorUE9XRVI4IFZTWCB3aGljaCBMRSB0 YXJnZXRzIGFzIGEgYmFzZWxpbmUgYnV0IG5vdCBCRSkiCisKKworVGhpcyByZXZlcnRzIGNvbW1p dCAzYTU1N2M1ZDg4YjdiMTViNTk1NGJhMjc0M2ZlYmIwNTU1NDliNTM2LgorLS0tCisgbGlic3dz Y2FsZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMgfCAyNCArKysrKysrKysrKysrKysrKysrKy0tLS0K KyAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlm ZiAtLWdpdCBhL2xpYnN3c2NhbGUvcHBjL3l1djJyZ2JfYWx0aXZlYy5jIGIvbGlic3dzY2FsZS9w cGMveXV2MnJnYl9hbHRpdmVjLmMKK2luZGV4IDUzNjU0NTI5M2QuLmMxZTI4NTJhZGIgMTAwNjQ0 CistLS0gYS9saWJzd3NjYWxlL3BwYy95dXYycmdiX2FsdGl2ZWMuYworKysrIGIvbGlic3dzY2Fs ZS9wcGMveXV2MnJnYl9hbHRpdmVjLmMKK0BAIC0zMDUsNiArMzA1LDkgQEAgc3RhdGljIGludCBh bHRpdmVjXyAjIyBuYW1lKFN3c0NvbnRleHQgKmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKippbiwg ICAgICAgICAgXAorICAgICB2ZWN0b3Igc2lnbmVkIHNob3J0IFIxLCBHMSwgQjE7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgdmVjdG9yIHVuc2lnbmVk IGNoYXIgUiwgRywgQjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBjb25zdCB2ZWN0b3IgdW5zaWduZWQg Y2hhciAqeTFpdlAsICp5Mml2UCwgKnVpdlAsICp2aXZQOyAgICAgICAgICAgICAgICAgIFwKKysg ICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgYWxpZ25fcGVybTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICB2ZWN0 b3Igc2lnbmVkIHNob3J0IGxDWSAgICAgICA9IGMtPkNZOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKyAgICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBsT1kgICAgICAgPSBjLT5P WTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIHZlY3RvciBzaWdu ZWQgc2hvcnQgbENSViAgICAgID0gYy0+Q1JWOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorQEAgLTMzNSwxMyArMzM4LDI2IEBAIHN0YXRpYyBpbnQgYWx0aXZlY18gIyMgbmFt ZShTd3NDb250ZXh0ICpjLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqaW4sICAgICAgICAgIFwKKyAg ICAgICAgIHZlY19kc3RzdChvdXRlLCAoMHgwMjAwMDAwMiB8ICgoKHcgKiAzICsgMzIpIC8gMzIp IDw8IDE2KSksIDEpOyAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg Zm9yIChqID0gMDsgaiA8IHcgLyAxNjsgaisrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKy0gICAgICAgICAgICB5MCA9IHZlY194bCgwLCB5MWkpOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgeTFp dlAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgeTFpOyAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgICAgIHkyaXZQID0gKGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFy ICopIHkyaTsgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB1aXZQICA9IChj b25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciAqKSB1aTsgICAgICAgICAgICAgICAgICAgICAgICBc CisrICAgICAgICAgICAgdml2UCAgPSAoY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgKikgdmk7 ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAg ICAgICAgICBhbGlnbl9wZXJtID0gdmVjX2x2c2woMCwgeTFpKTsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgeTAgPSAodmVjdG9yIHVuc2lnbmVkIGNo YXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAg ICAgICAgICAgIHZlY19wZXJtKHkxaXZQWzBdLCB5MWl2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAg ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgeTEgPSB2 ZWNfeGwoMCwgeTJpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorKyAgICAgICAgICAgIGFsaWduX3Blcm0gPSB2ZWNfbHZzbCgwLCB5MmkpOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICB5MSA9ICh2ZWN0b3Ig dW5zaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisr ICAgICAgICAgICAgICAgICAgICAgdmVjX3Blcm0oeTJpdlBbMF0sIHkyaXZQWzFdLCBhbGlnbl9w ZXJtKTsgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICAgICAg ICAgICB1ID0gKHZlY3RvciBzaWduZWQgY2hhcikgdmVjX3hsKDAsIHVpKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgYWxpZ25fcGVybSA9IHZlY19sdnNsKDAsIHVp KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgIHUg PSAodmVjdG9yIHNpZ25lZCBjaGFyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgIHZlY19wZXJtKHVpdlBbMF0sIHVpdlBbMV0s IGFsaWduX3Blcm0pOyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorLSAgICAgICAgICAgIHYgPSAodmVjdG9yIHNpZ25lZCBjaGFyKSB2ZWNfeGwoMCwgdmkpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICBhbGlnbl9wZXJtID0gdmVj X2x2c2woMCwgdmkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg ICAgICAgICAgdiA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgdmVjX3Blcm0odml2UFsw XSwgdml2UFsxXSwgYWxpZ25fcGVybSk7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisgICAgICAgICAgICAgdSA9ICh2ZWN0b3Igc2lnbmVkIGNoYXIpICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAg ICAgdmVjX3N1Yih1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKy0tIAorMi4yNy4wCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVz L2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoIGIvc3JjcGtncy9mZm1wZWc0L3BhdGNoZXMv YXJtdjV0ZWwtZmxvYXRpbmctcG9pbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwMC4uOWE1NTE3OGM3NGYwZgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mv ZmZtcGVnNC9wYXRjaGVzL2FybXY1dGVsLWZsb2F0aW5nLXBvaW50LnBhdGNoCkBAIC0wLDAgKzEs MTggQEAKKy0tLSBhL2xpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMJMjAxNy0xMC0yNiAyMTowMzow My4wMDAwMDAwMDAgKzAyMDAKKysrKyBiL2xpYmF2ZmlsdGVyL3ZmX2RyYXd0ZXh0LmMJMjAxNy0x MS0yMSAxMTowNjo0OS42MDIyODQ0MjIgKzAxMDAKK0BAIC0zOSw2ICszOSwxNSBAQAorICNlbmRp ZgorICNpbmNsdWRlIDxmZW52Lmg+CisgCisrI2lmIChGRV9BTExfRVhDRVBUID09IDApCisrLyog RS5nLiBBUk0gc29mdCBmbG9hdCBkb2VzIG5vdCBkZWZpbmUgdGhlc2UgKi8KKysjZGVmaW5lIEZF X0lOVkFMSUQgICAgMAorKyNkZWZpbmUgRkVfRElWQllaRVJPICAwCisrI2RlZmluZSBGRV9PVkVS RkxPVyAgIDAKKysjZGVmaW5lIEZFX1VOREVSRkxPVyAgMAorKyNkZWZpbmUgRkVfSU5FWEFDVCAg ICAwCisrI2VuZGlmCisrCisgI2lmIENPTkZJR19MSUJGT05UQ09ORklHCisgI2luY2x1ZGUgPGZv bnRjb25maWcvZm9udGNvbmZpZy5oPgorICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1w ZWc0L3BhdGNoZXMvcGF0Y2gtbGliYXZjb2RlYy1saWJzdnRhdjEtdGVuX2JpdF9mb3JtYXQuZGlm ZiBiL3NyY3BrZ3MvZmZtcGVnNC9wYXRjaGVzL3BhdGNoLWxpYmF2Y29kZWMtbGlic3Z0YXYxLXRl bl9iaXRfZm9ybWF0LmRpZmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw MC4uYWE5NDhmN2E4YTJkZgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC9wYXRj aGVzL3BhdGNoLWxpYmF2Y29kZWMtbGlic3Z0YXYxLXRlbl9iaXRfZm9ybWF0LmRpZmYKQEAgLTAs MCArMSw0MCBAQAorIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cisj IEZyb20gMDMxZjE1NjFjZDI4NjU5NmNkYjM3NGRhMzJmOGFhODE2Y2UzYjEzNSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKKyMgRnJvbTogQ2hyaXN0b3BoZXIgRGVnYXdhIDxjaHJpc3RvcGhlci5k ZWdhd2FAaW50ZWwuY29tPgorIyBEYXRlOiBUaHUsIDIwIE9jdCAyMDIyIDIyOjU1OjI3IC0wNTAw CisjIFN1YmplY3Q6IFtQQVRDSF0gYXZjb2RlYy9saWJzdnRhdjE6IHJlbW92ZSBjb21wcmVzc2Vk X3Rlbl9iaXRfZm9ybWF0IGFuZCBzaW1wbGlmeSBhbGxvY19idWZmZXIKKyMKKyMgY29tcHJlc3Nl ZF90ZW5fYml0X2Zvcm1hdCBoYXMgYmVlbiBkZXByZWNhdGVkIHVwc3RyZWFtIGFuZCBoYXMgbm8g ZWZmZWN0CisjIGFuZCBjYW4gYmUgcmVtb3ZlZC4gUGx1cywgdGVjaG5pY2FsbHkgaXQgd2FzIG5l dmVyIHVzZWQgaW4gdGhlIGZpcnN0IHBsYWNlCisjIHNpbmNlIGl0IHdvdWxkIHJlcXVpcmUgdGhl IGFwcCAoZmZtcGVnKSB0byBzZXQgaXQgYW5kIGRvIGFkZGl0aW9uYWwKKyMgcHJvY2Vzc2luZyBv ZiB0aGUgaW5wdXQgZnJhbWVzLgorIworIyBBbHNvIHNpbXBsaWZ5IGFsbG9jX2J1ZmZlciBieSBy ZW1vdmluZyBjYWxjdWxhdGlvbnMgcmVsYXRpbmcgdG8gdGhlIG5vbi1leGlzdGFudCBwcm9jZXNz aW5nLgorIworIyBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBEZWdhd2EgPGNocmlzdG9waGVy LmRlZ2F3YUBpbnRlbC5jb20+CisjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBhL2xpYmF2Y29kZWMvbGlic3Z0YXYxLmMKKysrKyBiL2xpYmF2Y29kZWMvbGli c3Z0YXYxLmMKK0BAIC0xMjQsMTYgKzEyNCwxMiBAQCBzdGF0aWMgaW50IHN2dF9wcmludF9lcnJv cih2b2lkICpsb2dfY3R4LCBFYkVycm9yVHlwZSBlcnIsCisgCisgc3RhdGljIGludCBhbGxvY19i dWZmZXIoRWJTdnRBdjFFbmNDb25maWd1cmF0aW9uICpjb25maWcsIFN2dENvbnRleHQgKnN2dF9l bmMpCisgeworLSAgICBjb25zdCBpbnQgICAgcGFja19tb2RlXzEwYml0ID0KKy0gICAgICAgIChj b25maWctPmVuY29kZXJfYml0X2RlcHRoID4gOCkgJiYgKGNvbmZpZy0+Y29tcHJlc3NlZF90ZW5f Yml0X2Zvcm1hdCA9PSAwKSA/IDEgOiAwOworLSAgICBjb25zdCBzaXplX3QgbHVtYV9zaXplXzhi aXQgID0KKy0gICAgICAgIGNvbmZpZy0+c291cmNlX3dpZHRoICogY29uZmlnLT5zb3VyY2VfaGVp Z2h0ICogKDEgPDwgcGFja19tb2RlXzEwYml0KTsKKy0gICAgY29uc3Qgc2l6ZV90IGx1bWFfc2l6 ZV8xMGJpdCA9CistICAgICAgICAoY29uZmlnLT5lbmNvZGVyX2JpdF9kZXB0aCA+IDggJiYgcGFj a19tb2RlXzEwYml0ID09IDApID8gbHVtYV9zaXplXzhiaXQgOiAwOworKyAgICBjb25zdCBzaXpl X3QgbHVtYV9zaXplID0gY29uZmlnLT5zb3VyY2Vfd2lkdGggKiBjb25maWctPnNvdXJjZV9oZWln aHQgKgorKyAgICAgICAgKGNvbmZpZy0+ZW5jb2Rlcl9iaXRfZGVwdGggPiA4ID8gMiA6IDEpOwor IAorICAgICBFYlN2dElPRm9ybWF0ICppbl9kYXRhOworIAorLSAgICBzdnRfZW5jLT5yYXdfc2l6 ZSA9IChsdW1hX3NpemVfOGJpdCArIGx1bWFfc2l6ZV8xMGJpdCkgKiAzIC8gMjsKKysgICAgc3Z0 X2VuYy0+cmF3X3NpemUgPSBsdW1hX3NpemUgKiAzIC8gMjsKKyAKKyAgICAgLy8gYWxsb2NhdGUg YnVmZmVyIGZvciBpbiBhbmQgb3V0CisgICAgIHN2dF9lbmMtPmluX2J1ZiAgICAgICAgICAgPSBh dl9tYWxsb2N6KHNpemVvZigqc3Z0X2VuYy0+aW5fYnVmKSk7CistLSAKK0dpdExhYgorCmRpZmYg LS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2EtcmVhZGVvbi12 YWFwaS1idWcucGF0Y2ggYi9zcmNwa2dzL2ZmbXBlZzQvcGF0Y2hlcy93b3JrYXJvdW5kLW1lc2Et cmVhZGVvbi12YWFwaS1idWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwMC4uMDBlM2Y2OGE0MTViOAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVn NC9wYXRjaGVzL3dvcmthcm91bmQtbWVzYS1yZWFkZW9uLXZhYXBpLWJ1Zy5wYXRjaApAQCAtMCww ICsxLDI4IEBACitGcm9tIDgxMWQyOTA4NDQyMDZmYzczZGMzOWMzZTViNjdkNWQ4OTViYWVkZjgg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSYWluZXIgSG9jaGVja2VyIDxmZXJuZXRt ZW50YUBvbmxpbmUuZGU+CitEYXRlOiBTYXQsIDI2IEphbiAyMDE5IDE5OjQ4OjM1ICswMTAwCitT dWJqZWN0OiBbUEFUQ0hdIGF2Y29kZWMvdmFhcGlfaDI2NDogc2tpcCBkZWNvZGUgaWYgcGljIGhh cyBubyBzbGljZXMKKworVGhpcyBmaXhlcyAvIHdvcmthcm91bmRzIGh0dHBzOi8vYnVncy5mcmVl ZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTM2OC4KK0l0IHdhcyBoaXQgZnJlcXVlbnRs eSB3aGVuIHdhdGNoaW5nIGgyNjQgY2hhbm5lbHMgcmVjZWl2ZWQgdmlhIERWQi1YLgorQ29ycmVz cG9uZGluZyBrb2RpIGJ1ZzogaHR0cHM6Ly9naXRodWIuY29tL3hibWMveGJtYy9pc3N1ZXMvMTU3 MDQKKy0tLQorIGxpYmF2Y29kZWMvdmFhcGlfaDI2NC5jIHwgNSArKysrKworIDEgZmlsZSBjaGFu Z2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmFhcGlfaDI2 NC5jIGIvbGliYXZjb2RlYy92YWFwaV9oMjY0LmMKK2luZGV4IDU4NTQ1ODdhMjU1Li5mMTJmZGM0 NTdhNCAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvdmFhcGlfaDI2NC5jCisrKysgYi9saWJhdmNv ZGVjL3ZhYXBpX2gyNjQuYworQEAgLTMxNyw2ICszMTcsMTEgQEAgc3RhdGljIGludCB2YWFwaV9o MjY0X2VuZF9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgpCisgICAgIEgyNjRTbGljZUNvbnRl eHQgKnNsID0gJmgtPnNsaWNlX2N0eFswXTsKKyAgICAgaW50IHJldDsKKyAKKysgICAgaWYgKHBp Yy0+bmJfc2xpY2VzID09IDApIHsKKysgICAgICAgIHJldCA9IEFWRVJST1JfSU5WQUxJRERBVEE7 CisrICAgICAgICBnb3RvIGZpbmlzaDsKKysgICAgfQorKworICAgICByZXQgPSBmZl92YWFwaV9k ZWNvZGVfaXNzdWUoYXZjdHgsIHBpYyk7CisgICAgIGlmIChyZXQgPCAwKQorICAgICAgICAgZ290 byBmaW5pc2g7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZzQvdGVtcGxhdGUgYi9zcmNwa2dz L2ZmbXBlZzQvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw MC4uZjJjODUxNjkzZDM2NwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZmZtcGVnNC90ZW1w bGF0ZQpAQCAtMCwwICsxLDI0MCBAQAorIyBUZW1wbGF0ZSBmaWxlIGZvciAnZmZtcGVnNCcKKyMg YXVkYWNpdHkgYWxzbyBuZWVkcyB0byBiZSBidW1wZWQgd2hlbiBhIG5ldyBmZm1wZWcgdmVyc2lv biBidW1wcyBsaWJhdmZvcm1hdCdzIHNvbmFtZSEKK3BrZ25hbWU9ZmZtcGVnNAordmVyc2lvbj00 LjQuNAorcmV2aXNpb249MQorc2hvcnRfZGVzYz0iRGVjb2RpbmcsIGVuY29kaW5nIGFuZCBzdHJl YW1pbmcgc29mdHdhcmUgLSBmZm1wZWc0IGxpYnJhcmllcyBvbmx5IgorbWFpbnRhaW5lcj0iT3Jw aGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKK2xpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIi Citob21lcGFnZT0iaHR0cHM6Ly93d3cuZmZtcGVnLm9yZyIKK2NoYW5nZWxvZz0iaHR0cHM6Ly9y YXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0ZGbXBlZy9GRm1wZWcvbWFzdGVyL0NoYW5nZWxvZyIK K2Rpc3RmaWxlcz0iaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy9yZWxlYXNlcy9mZm1wZWctJHt2ZXJz aW9ufS50YXIueHoiCitjaGVja3N1bT1lODBiMzgwZDU5NWM4MDkwNjBmNjZmOTZhNWQ4NDk1MTFl ZjRhNzZhMjZiNzZlYWNmNTc3OGI5NGMzNTcwMzA5CisKK2hvc3RtYWtlZGVwZW5kcz0icGtnLWNv bmZpZyBwZXJsIgorbWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgYnppcDItZGV2ZWwgZnJlZXR5cGUt ZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGliWGZpeGVzLWRldmVsCisgbGliWGV4dC1kZXZlbCBsaWJY dk1DLWRldmVsIGxpYnhjYi1kZXZlbCBsYW1lLWRldmVsIGxpYnRoZW9yYS1kZXZlbAorIGxpYnZv cmJpcy1kZXZlbCB4MjY0LWRldmVsIHh2aWRjb3JlLWRldmVsIGphY2stZGV2ZWwgU0RMMi1kZXZl bAorIGxpYmNkaW8tcGFyYW5vaWEtZGV2ZWwgbGlicnRtcC1kZXZlbCBsaWJtb2RwbHVnLWRldmVs IGdudXRscy1kZXZlbAorIHNwZWV4LWRldmVsIGNlbHQtZGV2ZWwgaGFyZmJ1enotZGV2ZWwgbGli YXNzLWRldmVsIG9wdXMtZGV2ZWwgb2NsLWljZC1kZXZlbAorIGxpYmJzMmItZGV2ZWwgbGlidmlk c3RhYi1kZXZlbCB2bWFmLWRldmVsICQodm9wdF9pZiBwdWxzZWF1ZGlvIHB1bHNlYXVkaW8tZGV2 ZWwpCisgJCh2b3B0X2lmIHZhYXBpIGxpYnZhLWRldmVsKSAkKHZvcHRfaWYgdmRwYXUgbGlidmRw YXUtZGV2ZWwpCisgJCh2b3B0X2lmIHgyNjUgeDI2NS1kZXZlbCkgJCh2b3B0X2lmIHY0bDIgdjRs LXV0aWxzLWRldmVsKQorICQodm9wdF9pZiBmZGtfYWFjIGZkay1hYWMtZGV2ZWwpICQodm9wdF9p ZiB2cHggbGlidnB4LWRldmVsKQorICQodm9wdF9pZiBhb20gbGliYW9tLWRldmVsKSAkKHZvcHRf aWYgc25kaW8gc25kaW8tZGV2ZWwpCisgJCh2b3B0X2lmIGRhdjFkIGxpYmRhdjFkLWRldmVsKSAk KHZvcHRfaWYgemltZyB6aW1nLWRldmVsKQorICQodm9wdF9pZiB3ZWJwIGxpYndlYnAtZGV2ZWwp ICQodm9wdF9pZiBzb2ZhIGxpYm15c29mYS1kZXZlbCkKKyAkKHZvcHRfaWYgZHJtIGxpYmRybS1k ZXZlbCkgJCh2b3B0X2lmIHN2dGF2MSBsaWJzdnQtYXYxLWRldmVsKQorICQodm9wdF9pZiBzcnQg c3J0LWRldmVsKSAkKHZvcHRfaWYgcmlzdCBsaWJyaXN0LWRldmVsKQorICQodm9wdF9pZiB2dWxr YW4gJ3Z1bGthbi1sb2FkZXIgVnVsa2FuLUhlYWRlcnMnKQorICQodm9wdF9pZiBtZnggJ2xpYm1m eCBsaWJtZngtZGV2ZWwnKQorICQodm9wdF9pZiBudmVuYyBudi1jb2RlYy1oZWFkZXJzKSAkKHZv cHRfaWYgbnZkZWMgbnYtY29kZWMtaGVhZGVycykiCisKK2J1aWxkX29wdGlvbnM9IngyNjUgdjRs MiB2YWFwaSB2ZHBhdSB2cHggZmRrX2FhYyBhb20gbnZlbmMgc25kaW8gcHVsc2VhdWRpbworIGRh djFkIHppbWcgd2VicCBzb2ZhIHZ1bGthbiBkcm0gc3Z0YXYxIHNydCByaXN0IG52ZGVjIG1meCIK K2J1aWxkX29wdGlvbnNfZGVmYXVsdD0ieDI2NSB2NGwyIHZweCBhb20gc25kaW8gcHVsc2VhdWRp byBkYXYxZCB3ZWJwIHZ1bGthbiBkcm0gc3J0IHJpc3QiCisKK2Rlc2Nfb3B0aW9uX3NydD0iRW5h YmxlIHN1cHBvcnQgZm9yIFNSVCAoU2VjdXJlLCBSZWxpYWJsZSwgVHJhbnNwb3J0KSIKK2Rlc2Nf b3B0aW9uX3Jpc3Q9IkVuYWJsZSBzdXBwb3J0IGZvciBSSVNUIChSZWxpYWJsZSBJbnRlcm5ldCBT dHJlYW0gVHJhbnNwb3J0KSIKK2Rlc2Nfb3B0aW9uX3NvZmE9IkVuYWJsZSBzdXBwb3J0IGZvciBB RVMgU09GQSIKK2Rlc2Nfb3B0aW9uX3dlYnA9IkVuYWJsZSBzdXBwb3J0IGZvciBXZWJQIgorCitj YXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwlpNjg2KikKKwkJCWhvc3RtYWtlZGVwZW5k cys9IiBuYXNtIgorCQkJYnVpbGRfb3B0aW9uc19kZWZhdWx0Kz0iIHZhYXBpIHZkcGF1IG52ZW5j IG52ZGVjIgorCQkJOzsKKwl4ODZfNjQqKQorCQkJaG9zdG1ha2VkZXBlbmRzKz0iIG5hc20iCisJ CQlidWlsZF9vcHRpb25zX2RlZmF1bHQrPSIgdmFhcGkgdmRwYXUgbWZ4IG52ZW5jIG52ZGVjIgor CQkJOzsKKwlwcGM2NCopIGJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiB2YWFwaSB2ZHBhdSI7Owor CW1pcHMqKSBDRkxBR1M9Ii1tbmFuPWxlZ2FjeSI7OworZXNhYworCitpZiBbICIkWEJQU19UQVJH RVRfV09SRFNJWkUiICE9ICIzMiIgXTsgdGhlbgorCWJ1aWxkX29wdGlvbnNfZGVmYXVsdCs9IiBz dnRhdjEiCitmaQorCitpZiBbICIkWEJQU19UQVJHRVRfTk9fQVRPTUlDOCIgXTsgdGhlbgorCW1h a2VkZXBlbmRzKz0iIGxpYmF0b21pYy1kZXZlbCIKK2ZpCisKK19hcHBseV9wYXRjaCgpIHsKKwls b2NhbCBhcmdzPSIkMSIgcG5hbWU9IiQoYmFzZW5hbWUgJDIpIgorCisJaWYgWyAhIC1mICIuJHtw bmFtZX1fZG9uZSIgXTsgdGhlbgorCQlwYXRjaCAtTiAkYXJncyAtaSAkMgorCQl0b3VjaCAuJHtw bmFtZX1fZG9uZQorCWZpCit9CisKK3Bvc3RfcGF0Y2goKSB7CisJY2FzZSAiJFhCUFNfVEFSR0VU X01BQ0hJTkUiIGluCisJCXBwYzY0bGUqKSA7OworCQlwcGMqKSBfYXBwbHlfcGF0Y2ggLXAxICR7 RklMRVNESVJ9L2FsdGl2ZWMucGF0Y2ggOzsKKwllc2FjCisKKwl2c2VkIC1pIGxpYmF2ZmlsdGVy L3ZmX2xpYnZtYWYuYyAtZSAncyEvdXNyL2xvY2FsL3NoYXJlL21vZGVsL1wodm1hZl92MC42LjFc KS5wa2whL3Vzci9zaGFyZS92bWFmL1wxLmpzb24hJworfQorCitkb19jb25maWd1cmUoKSB7CisJ IyBGaXggZ2NjIG9uIHg4Nl82NC1tdXNsIG9ubHkKKwlpZiBbICIkWEJQU19UQVJHRVRfTUFDSElO RSIgPSAieDg2XzY0LW11c2wiIF07IHRoZW4KKwkJdnNlZCAtaSBjb25maWd1cmUgLWUgInM7X2Nm bGFnc19zcGVlZD0nLU8zJztfY2ZsYWdzX3NwZWVkPSctTzInOyIKKwlmaQorCisJaWYgWyAiJENS T1NTX0JVSUxEIiBdOyB0aGVuCisJCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCQkJ YXJtKikgX2FyY2g9ImFybSI7OworCQkJYWFyY2g2NCopIF9hcmNoPSJhYXJjaDY0Ijs7CisJCQlt aXBzKikgX2FyY2g9Im1pcHMiOzsKKwkJCXBwYzY0KikgX2FyY2g9InBwYzY0Ijs7CisJCQlwcGMq KSBfYXJjaD0icHBjIjs7CisJCQkqKSBfYXJjaD0iJHtYQlBTX1RBUkdFVF9NQUNISU5FJSUtbXVz bH0iOzsKKwkJZXNhYworCisJCV9hcmdzKz0iIC0tZW5hYmxlLWNyb3NzLWNvbXBpbGUKKwkJCS0t c3lzcm9vdD0kWEJQU19DUk9TU19CQVNFCisJCQktLWNyb3NzLXByZWZpeD0ke1hCUFNfQ1JPU1Nf VFJJUExFVH0tCisJCQktLXRhcmdldC1vcz1saW51eCAtLWFyY2g9JHtfYXJjaH0iCisJZmkKKwor CWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCQlwcGN8cHBjLW11c2wpIF9hcmdzKz0i IC0tZGlzYWJsZS1hbHRpdmVjIjs7CisJZXNhYworCisJaWYgWyAiJFhCUFNfVEFSR0VUX05PX0FU T01JQzgiIF07IHRoZW4KKwkJX2FyZ3MrPSIgLS1leHRyYS1saWJzPS1sYXRvbWljIgorCWZpCisK KwkuL2NvbmZpZ3VyZSAtLXByZWZpeD0vdXNyIC0tZGlzYWJsZS1kZWJ1ZyAtLWVuYWJsZS1ncGwg LS1lbmFibGUtZ251dGxzIFwKKwkJLS1kaXNhYmxlLXN0cmlwcGluZyBcCisJCS0tZW5hYmxlLWxp YmNkaW8gLS1lbmFibGUtdmVyc2lvbjMgLS1lbmFibGUtcnVudGltZS1jcHVkZXRlY3QgXAorCQkt LWVuYWJsZS1saWJtcDNsYW1lIC0tZW5hYmxlLWxpYnZvcmJpcyAtLWVuYWJsZS1saWJ4dmlkIFwK KwkJLS1lbmFibGUtbGlieDI2NCAkKHZvcHRfZW5hYmxlIHZweCBsaWJ2cHgpIC0tZW5hYmxlLWxp YnRoZW9yYSBcCisJCS0tZW5hYmxlLXNoYXJlZCAtLWVuYWJsZS1zdGF0aWMgLS1lbmFibGUtbGli eGNiIFwKKwkJJCh2b3B0X2VuYWJsZSBwdWxzZWF1ZGlvIGxpYnB1bHNlKSAtLWVuYWJsZS1saWJm cmVldHlwZSAtLWVuYWJsZS1saWJtb2RwbHVnIFwKKwkJLS1lbmFibGUtbGlic3BlZXggLS1lbmFi bGUtbGliY2VsdCAtLWVuYWJsZS1saWJhc3MgXAorCQktLWVuYWJsZS1saWJvcHVzIC0tZW5hYmxl LWxpYnJ0bXAgLS1lbmFibGUtbGliamFjayBcCisJCSQodm9wdF9pZiBmZGtfYWFjICctLWVuYWJs ZS1ub25mcmVlIC0tZW5hYmxlLWxpYmZkay1hYWMnKSBcCisJCS0tZGlzYWJsZS1saWJvcGVuY29y ZV9hbXJuYiAtLWRpc2FibGUtbGlib3BlbmNvcmVfYW1yd2IgXAorCQktLWRpc2FibGUtbGlib3Bl bmpwZWcgXAorCQktLWVuYWJsZS1wb3N0cHJvYyAtLWVuYWJsZS1vcGVuY2wgJHtfYXJnc30gLS1l bmFibGUtbGlidm1hZiAke19hcmdzfSBcCisJCSQodm9wdF9lbmFibGUgeDI2NSBsaWJ4MjY1KSBc CisJCSQodm9wdF9lbmFibGUgdjRsMiBsaWJ2NGwyKSBcCisJCSQodm9wdF9lbmFibGUgYW9tIGxp YmFvbSkgJCh2b3B0X2VuYWJsZSB2YWFwaSkgJCh2b3B0X2VuYWJsZSB2ZHBhdSkgXAorCQktLWVu YWJsZS1saWJiczJiIC0tZW5hYmxlLWF2cmVzYW1wbGUgLS1lbmFibGUtbGlidmlkc3RhYiBcCisJ CSQodm9wdF9lbmFibGUgZGF2MWQgbGliZGF2MWQpIFwKKwkJJCh2b3B0X2VuYWJsZSB6aW1nIGxp YnppbWcpIFwKKwkJJCh2b3B0X2VuYWJsZSB3ZWJwIGxpYndlYnApIFwKKwkJJCh2b3B0X2VuYWJs ZSBzb2ZhIGxpYm15c29mYSkgXAorCQkkKHZvcHRfZW5hYmxlIHZ1bGthbikgXAorCQkkKHZvcHRf ZW5hYmxlIGRybSBsaWJkcm0pIFwKKwkJJCh2b3B0X2VuYWJsZSBzdnRhdjEgbGlic3Z0YXYxKSBc CisJCSQodm9wdF9lbmFibGUgc3J0IGxpYnNydCkgXAorCQkkKHZvcHRfZW5hYmxlIHJpc3QgbGli cmlzdCkgXAorCQkkKHZvcHRfZW5hYmxlIG1meCBsaWJtZngpIFwKKwkJJCh2b3B0X2lmIG52ZW5j ICctLWVuYWJsZS1udmVuYycpIFwKKwkJJCh2b3B0X2lmIG52ZGVjICctLWVuYWJsZS1udmRlYycp Cit9CisKK2RvX2J1aWxkKCkgeworCW1ha2UgJHttYWtlam9ic30KKwltYWtlIGRvYy9mZnttcGVn LHBsYXl9LjEKK30KKworZG9faW5zdGFsbCgpIHsKKwltYWtlIERFU1RESVI9JHtERVNURElSfSBp bnN0YWxsIGluc3RhbGwtbWFuCisJcm0gLXJmICR7REVTVERJUn0vdXNyL2JpbgorfQorCitsaWJh dmNvZGVjNF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyBjb2RlYyBsaWJyYXJ5Igor CXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJhdmNvZGVjLnNvLioiCisJfQor fQorCitsaWJhdmRldmljZTRfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjPSJGRm1wZWcgZGV2aWNl IGhhbmRsaW5nIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xp YmF2ZGV2aWNlLnNvLioiCisJfQorfQorCitsaWJhdnJlc2FtcGxlNF9wYWNrYWdlKCkgeworCXNo b3J0X2Rlc2M9IkZGbXBlZyBhdWRpbyByZXNhbXBsaW5nIGxpYnJhcnkiCisJcGtnX2luc3RhbGwo KSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2cmVzYW1wbGUuc28uKiIKKwl9Cit9CisKK2xpYmF2 Zm9ybWF0NF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyBmaWxlIGZvcm1hdCBsaWJy YXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9saWJhdmZvcm1hdC5zby4q IgorCX0KK30KKworbGliYXZ1dGlsNF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBlZyB1 dGlsaXR5IGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmF2 dXRpbC5zby4qIgorCX0KK30KKworbGliYXZmaWx0ZXI0X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVz Yz0iRkZtcGVnIGF1ZGlvL3ZpZGVvIGZpbHRlciBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgewor CQl2bW92ZSAidXNyL2xpYi9saWJhdmZpbHRlci5zby4qIgorCX0KK30KKworbGlicG9zdHByb2M0 X3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYz0iRkZtcGVnIHZpZGVvIHBvc3Rwcm9jZXNzaW5nIGxp YnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYnBvc3Rwcm9jLnNv LioiCisJfQorfQorCitsaWJzd3NjYWxlNF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2M9IkZGbXBl ZyB2aWRlbyBzY2FsaW5nIGxpYnJhcnkiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3Iv bGliL2xpYnN3c2NhbGUuc28uKiIKKwl9Cit9CisKK2xpYnN3cmVzYW1wbGU0X3BhY2thZ2UoKSB7 CisJc2hvcnRfZGVzYz0iRkZtcGVnIHZpZGVvIHJlc2FtcGxpbmcgbGlicmFyeSIKKwlwa2dfaW5z dGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGlic3dyZXNhbXBsZS5zby4qIgorCX0KK30KKwor ZmZtcGVnNC1kZXZlbF9wYWNrYWdlKCkgeworCWRlcGVuZHM9IgorCQlsaWJhdmNvZGVjND49JHt2 ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJhdmRldmljZTQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lv bn0KKwkJbGliYXZmb3JtYXQ0Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259CisJCWxpYmF2dXRpbDQ+ PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0KKwkJbGliYXZmaWx0ZXI0Pj0ke3ZlcnNpb259XyR7cmV2 aXNpb259CisJCWxpYnBvc3Rwcm9jND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJzd3Nj YWxlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufQorCQlsaWJzd3Jlc2FtcGxlND49JHt2ZXJzaW9u fV8ke3JldmlzaW9ufQorCQlsaWJhdnJlc2FtcGxlND49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIK KwlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJY29uZmxpY3RzPSJmZm1wZWct ZGV2ZWwiCisJaWYgWyAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiID0gImk2ODYiIF07IHRoZW4KKwkJ IyAvdXNyL2Jpbi9zdHJpcDogZXJyb3I6IHRoZSBpbnB1dCBmaWxlICcvZGVzdGRpci8vZmZtcGVn LWRldmVsLTQuNC40L3Vzci9saWIvbGliYXZmaWx0ZXIuYSh2Zl9hdGFkZW5vaXNlLm8pJyBoYXMg bm8gc2VjdGlvbnMKKwkJbm9zdHJpcF9maWxlcz0iL3Vzci9saWIvbGliYXZmaWx0ZXIuYSIKKwlm aQorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZQorCQl2bW92ZSB1c3IvbGli L3BrZ2NvbmZpZworCQl2bW92ZSAidXNyL2xpYi8qLmEiCisJCXZtb3ZlICJ1c3IvbGliLyouc28i CisJCXZtb3ZlIHVzci9zaGFyZS9mZm1wZWcvZXhhbXBsZXMKKwkJdm1vdmUgdXNyL3NoYXJlL21h bi9tYW4zCisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdmNvZGVjNCBiL3NyY3BrZ3Mv bGliYXZjb2RlYzQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3 ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZjb2RlYzQKQEAgLTAs MCArMSBAQAorZmZtcGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbGliYXZkZXZpY2U0IGIvc3JjcGtncy9saWJhdmRldmljZTQKbmV3IGZpbGUgbW9k ZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvbGliYXZkZXZpY2U0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2ZmlsdGVyNCBi L3NyY3BrZ3MvbGliYXZmaWx0ZXI0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAwMDAw MDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYmF2Zmls dGVyNApAQCAtMCwwICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvc3JjcGtncy9saWJhdmZvcm1hdDQgYi9zcmNwa2dzL2xpYmF2Zm9ybWF0NApu ZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJhdmZvcm1hdDQKQEAgLTAsMCArMSBAQAorZmZt cGVnNApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGli YXZyZXNhbXBsZTQgYi9zcmNwa2dzL2xpYmF2cmVzYW1wbGU0Cm5ldyBmaWxlIG1vZGUgMTIwMDAw CmluZGV4IDAwMDAwMDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL2xpYmF2cmVzYW1wbGU0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmF2dXRpbDQgYi9zcmNwa2dz L2xpYmF2dXRpbDQKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwMC4uODg3 ZjM1NGU3YzZiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGliYXZ1dGlsNApAQCAtMCww ICsxIEBACitmZm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9saWJwb3N0cHJvYzQgYi9zcmNwa2dzL2xpYnBvc3Rwcm9jNApuZXcgZmlsZSBtb2Rl IDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJlCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9saWJwb3N0cHJvYzQKQEAgLTAsMCArMSBAQAorZmZtcGVnNApcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlic3dyZXNhbXBsZTQg Yi9zcmNwa2dzL2xpYnN3cmVzYW1wbGU0Cm5ldyBmaWxlIG1vZGUgMTIwMDAwCmluZGV4IDAwMDAw MDAwMDAwMDAuLjg4N2YzNTRlN2M2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xpYnN3 cmVzYW1wbGU0CkBAIC0wLDAgKzEgQEAKK2ZmbXBlZzQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYnN3c2NhbGU0IGIvc3JjcGtncy9saWJzd3NjYWxl NApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44ODdmMzU0ZTdjNmJl Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJzd3NjYWxlNApAQCAtMCwwICsxIEBACitm Zm1wZWc0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKRnJvbSA0YjMyNWI0NTE4ZDExNzRk Y2I1OWViMzA5YTNkODY4MDhjMTAxZWM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDE5OjU5OjA0 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMDYvMTE1XSBvcGVuY3Y6IHVwZGF0ZSB0byA0LjcuMC4K Ci0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgfCAxMDQgKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtncy9vcGVuY3YvdGVtcGxhdGUgfCAgIDggKystLQog MiBmaWxlcyBjaGFuZ2VkLCA1NiBpbnNlcnRpb25zKCspLCA1NiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29tbW9uL3NobGlicwppbmRleCA4OGUyZmIwYWE0OTU1 Li5mZWNhYzZlZWQyMDgzIDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9z aGxpYnMKQEAgLTIwODUsNTggKzIwODUsNTggQEAgbGliY2Fwc3RvbmUuc28uNSBjYXBzdG9uZS01 LjAuMV8xCiBsaWJoYXZlZ2Uuc28uMiBsaWJoYXZlZ2VkLTEuOS4xMV8xCiBsaWJuaWguc28uMSBs aWJuaWgtMS4wLjNfMQogbGlibmloLWRidXMuc28uMSBsaWJuaWgtMS4wLjNfMQotbGlib3BlbmN2 X3F1YWxpdHkuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfcmVnLnNvLjQwNiBs aWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3N1cmZhY2VfbWF0Y2hpbmcuc28uNDA2IGxpYm9w ZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfeHBob3RvLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQot bGlib3BlbmN2X2ZyZWV0eXBlLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Z1 enp5LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2hmcy5zby40MDYgbGlib3Bl bmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9pbWdfaGFzaC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl9saW5lX2Rlc2NyaXB0b3Iuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJv cGVuY3Zfc2FsaWVuY3kuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3RydWN0 dXJlZF9saWdodC5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9hcnVjby5zby40 MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9iZ3NlZ20uc28uNDA2IGxpYm9wZW5jdi00 LjYuMF8xCi1saWJvcGVuY3ZfYmlvaW5zcGlyZWQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1s aWJvcGVuY3ZfY2NhbGliLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ZhY2Uu c28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdHJhY2tpbmcuc28uNDA2IGxpYm9w ZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfeGZlYXR1cmVzMmQuc28uNDA2IGxpYm9wZW5jdi00LjYu MF8xCi1saWJvcGVuY3Zfb3B0Zmxvdy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5j dl94aW1ncHJvYy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9wbG90LnNvLjQw NiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3RleHQuc28uNDA2IGxpYm9wZW5jdi00LjYu MF8xCi1saWJvcGVuY3ZfbWwuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfb2Jq ZGV0ZWN0LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2Rubi5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9zaGFwZS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEK LWxpYm9wZW5jdl9zdGl0Y2hpbmcuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zf cGhvdG8uc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdmlkZW8uc28uNDA2IGxp Ym9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfY2FsaWIzZC5zby40MDYgbGlib3BlbmN2LTQuNi4w XzEKLWxpYm9wZW5jdl9mZWF0dXJlczJkLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3Bl bmN2X2ZsYW5uLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2hpZ2hndWkuc28u NDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfdmlkZW9pby5zby40MDYgbGlib3BlbmN2 LTQuNi4wXzEKLWxpYm9wZW5jdl9pbWdjb2RlY3Muc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1s aWJvcGVuY3ZfaW1ncHJvYy5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9jb3Jl LnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3N1cGVycmVzLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3ZpZGVvc3RhYi5zby40MDYgbGlib3BlbmN2LTQuNi4w XzEKLWxpYm9wZW5jdl9nYXBpLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3hv YmpkZXRlY3Quc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZGF0YXNldHMuc28u NDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfZG5uX29iamRldGVjdC5zby40MDYgbGli b3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9kbm5fc3VwZXJyZXMuc28uNDA2IGxpYm9wZW5jdi00 LjYuMF8xCi1saWJvcGVuY3ZfZHBtLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2 X3BoYXNlX3Vud3JhcHBpbmcuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCi1saWJvcGVuY3Zfc3Rl cmVvLnNvLjQwNiBsaWJvcGVuY3YtNC42LjBfMQotbGlib3BlbmN2X3JhcGlkLnNvLjQwNiBsaWJv cGVuY3YtNC42LjBfMQotbGlib3BlbmN2X2ludGVuc2l0eV90cmFuc2Zvcm0uc28uNDA2IGxpYm9w ZW5jdi00LjYuMF8xCi1saWJvcGVuY3ZfYWxwaGFtYXQuc28uNDA2IGxpYm9wZW5jdi00LjYuMF8x Ci1saWJvcGVuY3ZfYmFyY29kZS5zby40MDYgbGlib3BlbmN2LTQuNi4wXzEKLWxpYm9wZW5jdl9t Y2Muc28uNDA2IGxpYm9wZW5jdi00LjYuMF8xCitsaWJvcGVuY3ZfcXVhbGl0eS5zby40MDcgbGli b3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9yZWcuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCits aWJvcGVuY3Zfc3VyZmFjZV9tYXRjaGluZy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9w ZW5jdl94cGhvdG8uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZnJlZXR5cGUu c28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZnV6enkuc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3ZfaGZzLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3Bl bmN2X2ltZ19oYXNoLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2xpbmVfZGVz Y3JpcHRvci5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zYWxpZW5jeS5zby40 MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zdHJ1Y3R1cmVkX2xpZ2h0LnNvLjQwNyBs aWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2FydWNvLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBf MQorbGlib3BlbmN2X2Jnc2VnbS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9i aW9pbnNwaXJlZC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9jY2FsaWIuc28u NDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZmFjZS5zby40MDcgbGlib3BlbmN2LTQu Ny4wXzEKK2xpYm9wZW5jdl90cmFja2luZy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9w ZW5jdl94ZmVhdHVyZXMyZC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9vcHRm bG93LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3hpbWdwcm9jLnNvLjQwNyBs aWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3Bsb3Quc28uNDA3IGxpYm9wZW5jdi00LjcuMF8x CitsaWJvcGVuY3ZfdGV4dC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9tbC5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9vYmpkZXRlY3Quc28uNDA3IGxpYm9w ZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZG5uLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X3NoYXBlLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X3N0aXRjaGlu Zy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9waG90by5zby40MDcgbGlib3Bl bmN2LTQuNy4wXzEKK2xpYm9wZW5jdl92aWRlby5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xp Ym9wZW5jdl9jYWxpYjNkLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2ZlYXR1 cmVzMmQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfZmxhbm4uc28uNDA3IGxp Ym9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfaGlnaGd1aS5zby40MDcgbGlib3BlbmN2LTQuNy4w XzEKK2xpYm9wZW5jdl92aWRlb2lvLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2 X2ltZ2NvZGVjcy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9pbWdwcm9jLnNv LjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2NvcmUuc28uNDA3IGxpYm9wZW5jdi00 LjcuMF8xCitsaWJvcGVuY3Zfc3VwZXJyZXMuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3ZfdmlkZW9zdGFiLnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X2dhcGku c28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfeG9iamRldGVjdC5zby40MDcgbGli b3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9kYXRhc2V0cy5zby40MDcgbGlib3BlbmN2LTQuNy4w XzEKK2xpYm9wZW5jdl9kbm5fb2JqZGV0ZWN0LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGli b3BlbmN2X2Rubl9zdXBlcnJlcy5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9k cG0uc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJvcGVuY3ZfcGhhc2VfdW53cmFwcGluZy5z by40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9zdGVyZW8uc28uNDA3IGxpYm9wZW5j di00LjcuMF8xCitsaWJvcGVuY3ZfcmFwaWQuc28uNDA3IGxpYm9wZW5jdi00LjcuMF8xCitsaWJv cGVuY3ZfaW50ZW5zaXR5X3RyYW5zZm9ybS5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9w ZW5jdl9hbHBoYW1hdC5zby40MDcgbGlib3BlbmN2LTQuNy4wXzEKK2xpYm9wZW5jdl9iYXJjb2Rl LnNvLjQwNyBsaWJvcGVuY3YtNC43LjBfMQorbGlib3BlbmN2X21jYy5zby40MDcgbGlib3BlbmN2 LTQuNy4wXzEKIGxpYnVuaWNvbmYuc28uNC42IHd2c3RyZWFtcy00LjYuMV8yMAogbGlid3ZiYXNl LnNvLjQuNiB3dnN0cmVhbXMtNC42LjFfMjAKIGxpYnd2dXRpbHMuc28uNC42IHd2c3RyZWFtcy00 LjYuMV8yMApkaWZmIC0tZ2l0IGEvc3JjcGtncy9vcGVuY3YvdGVtcGxhdGUgYi9zcmNwa2dzL29w ZW5jdi90ZW1wbGF0ZQppbmRleCBhZWE0YmZjM2EyNjVjLi5jZTk0ZGU5NDI0ZDE4IDEwMDY0NAot LS0gYS9zcmNwa2dzL29wZW5jdi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW5jdi90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ29wZW5jdicKIHBrZ25hbWU9 b3BlbmN2Ci12ZXJzaW9uPTQuNi4wCi1yZXZpc2lvbj02Cit2ZXJzaW9uPTQuNy4wCityZXZpc2lv bj0xCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRfd3Jrc3JjPSR7cGtnbmFtZX0tJHt2ZXJzaW9u fQogYnVpbGRfc3R5bGU9Y21ha2UKQEAgLTI0LDggKzI0LDggQEAgaG9tZXBhZ2U9Imh0dHBzOi8v b3BlbmN2Lm9yZyIKIGNoYW5nZWxvZz0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5jdi9vcGVuY3Yv d2lraS9DaGFuZ2VMb2ciCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuY3Yvb3Bl bmN2L2FyY2hpdmUvJHt2ZXJzaW9ufS50YXIuZ3oKICBodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2 L29wZW5jdl9jb250cmliL2FyY2hpdmUvJHt2ZXJzaW9ufS50YXIuZ3o+Y29udHJpYi50YXIuZ3oi Ci1jaGVja3N1bT0iMWVjMWNiYTY1ZjlmMjBmZTVhNDFmZGExNTg2ZTAxYzcwZWEwYzlhNmQ3YjY3 YzllMTNlZGYwY2ZlMjIzOTI3NwotIDE3NzdkNWZkMmI1OTAyOWNmNTM3ZTVmZDZmOGFhNjhkNzA3 MDc1ODIyZjkwYmRlNjgzZmNkZTA4NmY4NWY3YTciCitjaGVja3N1bT0iOGRmMDA3OWNkYmUxNzk3 NDhhMThkNDQ3MzFhZjYyYTI0NWE0NWViZjUwODUyMjNkYzAzMTMzOTU0YzY2Mjk3MworIDQyZGY4 NDBjZjkwNTVlNTlkMGUyMmMyNDljZmIxOWYwNDc0M2UxYmRhZDExM2QzMWIxNTczZDM5MzRkNjI1 ODQiCiBwYXRjaF9hcmdzPSItTnAxIC1kICR7YnVpbGRfd3Jrc3JjfSIKICMgdGVzdHMgaGFuZyBp bmRlbmZpbml0ZWx5LCBldmVuIHdpdGggdGVzdCBkYXRhIGluY2x1ZGVkCiBtYWtlX2NoZWNrPW5v CgpGcm9tIDJjZmM2ZDE2M2YzODUwMDM4MmVmYjkwMTY0YWZmNDcwMDk0MDVjOTUgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMTk6NTk6NDUgLTA0MDAKU3ViamVjdDogW1BBVENIIDAwNy8xMTVdIGFj dGlvbmE6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL2FjdGlvbmEvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2FjdGlvbmEvdGVtcGxhdGUgYi9zcmNwa2dzL2FjdGlv bmEvdGVtcGxhdGUKaW5kZXggY2Y1ZjBiN2EyYWU2MS4uMGQ4OTkzMTFlNmRmNyAxMDA2NDQKLS0t IGEvc3JjcGtncy9hY3Rpb25hL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvYWN0aW9uYS90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2FjdGlvbmEnCiBwa2duYW1l PWFjdGlvbmEKIHZlcnNpb249My4xMC4xCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9z dHlsZT1xbWFrZQogY29uZmlndXJlX2FyZ3M9IlBLR0NPTkZJR19PUEVOQ1Y9b3BlbmN2NCIKIGhv c3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtcGx1Z2luLW15c3FsIHF0NS1xbWFrZSBxdDUt aG9zdC10b29scyIKCkZyb20gNTgwYjRiMjNlMDNhY2MxNTRhZjE2MGIwNGJjODhlYzVjM2E5ZWNm NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAxOTo1OTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDA4LzExNV0gcWltZ3Y6IHJldmJ1bXAgZm9yIG9wZW5jdi00LjcuMAoKLS0tCiBzcmNwa2dzL3Fp bWd2L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRl bGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZSBiL3NyY3BrZ3Mv cWltZ3YvdGVtcGxhdGUKaW5kZXggN2ViMzBkYjMzOTkyYy4uZGQzNDFkZmUxYmZjZSAxMDA2NDQK LS0tIGEvc3JjcGtncy9xaW1ndi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3FpbWd2L3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncWltZ3YnCiBwa2duYW1lPXFp bWd2CiB2ZXJzaW9uPTEuMC4yCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1j bWFrZQogY29uZmlndXJlX2FyZ3M9IiQodm9wdF9pZiB2aWRlbyAtRFZJREVPX1NVUFBPUlQ9T04g LURWSURFT19TVVBQT1JUPU9GRikKICAkKHZvcHRfaWYgc2NhbGUgLURPUEVOQ1ZfU1VQUE9SVD1P TiAtRE9QRU5DVl9TVVBQT1JUPU9GRikKCkZyb20gOWUyMThlZjE2YWU4NTJkMWZiODRmMWEzYjRj OTE2OWQ0YzhlOWE3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNl NTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAxOTo1OTo0NiAtMDQwMApTdWJq ZWN0OiBbUEFUQ0ggMDA5LzExNV0gcmV0cm9zaGFyZTogcmV2YnVtcCBmb3Igb3BlbmN2LTQuNy4w CgotLS0KIHNyY3BrZ3MvcmV0cm9zaGFyZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcmV0 cm9zaGFyZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcmV0cm9zaGFyZS90ZW1wbGF0ZQppbmRleCBiYjE3 NTY5Mjc3YTdmLi40OWUyYzFjYmU4YTUzIDEwMDY0NAotLS0gYS9zcmNwa2dzL3JldHJvc2hhcmUv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9yZXRyb3NoYXJlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncmV0cm9zaGFyZScKIHBrZ25hbWU9cmV0cm9zaGFyZQog dmVyc2lvbj0wLjYuNgotcmV2aXNpb249MworcmV2aXNpb249NAogYnVpbGRfc3R5bGU9cW1ha2UK ICNYWFggYnJvYWRjYXN0IGZlYXR1cmUgcmVxdWlyZXMgYW4gYW5jaWVudCB1ZHAtZGlzY292ZXJ5 LWNwcCB3aGljaCBlaXRoZXIgbmVlZHMKICMgdG8gYmUgZmV0Y2hlZCtwYXRjaGVkIChGVEJGUykg aGVyZSBvciBwYWNrYWdlZCA6LwoKRnJvbSBmYjY0NmQ3MzNmNjJkYjhlNTEwNmUyZTY5MjI1ZjZi YWVkODJmMmE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDE5OjU5OjQ2IC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwMTAvMTE1XSB3YWlmdTJ4LWNvbnZlcnRlci1jcHA6IHJldmJ1bXAgZm9yIG9wZW5j di00LjcuMAoKLS0tCiBzcmNwa2dzL3dhaWZ1MngtY29udmVydGVyLWNwcC90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3Mvd2FpZnUyeC1jb252ZXJ0ZXItY3BwL3RlbXBsYXRlIGIvc3JjcGtncy93 YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKaW5kZXggMzYxYjhhMjNiOTQ5Ny4uYzVhYzE3 ZWI1NGVhNCAxMDA2NDQKLS0tIGEvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxh dGUKKysrIGIvc3JjcGtncy93YWlmdTJ4LWNvbnZlcnRlci1jcHAvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd3YWlmdTJ4LWNvbnZlcnRlci1jcHAnCiBwa2du YW1lPXdhaWZ1MngtY29udmVydGVyLWNwcAogdmVyc2lvbj01LjIuNAotcmV2aXNpb249MgorcmV2 aXNpb249MwogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRElOU1RBTExfTU9E RUxTPU9OIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSA1ZjljYzBhMDEyZTVh Yjg2ZGQ4MDk3Njk3N2U4NThhYmU2ZDQzZmZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAw OjM4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTEvMTE1XSB2bGM6IHJldmJ1bXAgZm9yIGZmbXBl ZzQtNC40LjMKCi0tLQogc3JjcGtncy92bGMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Zs Yy90ZW1wbGF0ZSBiL3NyY3BrZ3MvdmxjL3RlbXBsYXRlCmluZGV4IGJlNTc5Y2UzOGZlMzcuLjM5 NzQyODk5NDc0MDEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdmxjL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvdmxjL3RlbXBsYXRlCkBAIC0yNSw3ICsyNSw3IEBAIGxpYjMyZGlzYWJsZWQ9eWVzCiBob3N0 bWFrZWRlcGVuZHM9ImF1dG9tYWtlIGxpYnRvb2wgcGtnLWNvbmZpZyBmbGV4IGdldHRleHQgbGli Z2NyeXB0LWRldmVsCiAgbGl2ZTU1NS1kZXZlbCBnZXR0ZXh0LWRldmVsICQodm9wdF9pZiBsdWEg bHVhNTIpICQodm9wdF9pZiBjaHJvbWVjYXN0IHByb3RvYnVmKSIKIG1ha2VkZXBlbmRzPSIKLSBh dmFoaS1saWJzLWRldmVsIGRidXMtZ2xpYi1kZXZlbCBmYWFkMi1kZXZlbCBmZm1wZWctZGV2ZWwg ZnJlZWZvbnQtdHRmCisgYXZhaGktbGlicy1kZXZlbCBkYnVzLWdsaWItZGV2ZWwgZmFhZDItZGV2 ZWwgZmZtcGVnNC1kZXZlbCBmcmVlZm9udC10dGYKICBnbnV0bHMtZGV2ZWwgamFjay1kZXZlbCBs aWJhNTItZGV2ZWwgbGliYXNzLWRldmVsIGxpYmJsdXJheS1kZXZlbAogIGxpYmNkaW8tZGV2ZWwg bGliZGNhLWRldmVsIGxpYmR2YnBzaS1kZXZlbCBsaWJkdmRuYXYtZGV2ZWwgbGlibWFkLWRldmVs CiAgbGlibWF0cm9za2EtZGV2ZWwgbGlibW9kcGx1Zy1kZXZlbCBsaWJtcGNkZWMtZGV2ZWwgbGli bXBlZzItZGV2ZWwKCkZyb20gN2FiNDdlM2UwMThkNDUwM2FiMDkxNzhiNDRkNmJiZTQzZTg2ZWE2 NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMDo1NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDEyLzExNV0gb3NnOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3Mvb3Nn L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vc2cvdGVtcGxhdGUgYi9zcmNwa2dzL29zZy90 ZW1wbGF0ZQppbmRleCBhOWViYmQyODc5MzNiLi43NTU3OTNmN2UxMWJmIDEwMDY0NAotLS0gYS9z cmNwa2dzL29zZy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29zZy90ZW1wbGF0ZQpAQCAtOCw3ICs4 LDcgQEAgYnVpbGRfaGVscGVyPSJxZW11IgogY29uZmlndXJlX2FyZ3M9Ii1ETElCX1BPU1RGSVg9 IgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHhyYW5kciIKIG1ha2VkZXBlbmRzPSJNZXNh TGliLWRldmVsIGd0a2dsZXh0LWRldmVsIGxpYmN1cmwtZGV2ZWwgZ2lmbGliLWRldmVsIGxpYnJz dmctZGV2ZWwKLSBqYXNwZXItZGV2ZWwgdGlmZi1kZXZlbCBsaWJnZGFsLWRldmVsIGxpYmd0YS1k ZXZlbCBmZm1wZWctZGV2ZWwgeGluZS1saWItZGV2ZWwKKyBqYXNwZXItZGV2ZWwgdGlmZi1kZXZl bCBsaWJnZGFsLWRldmVsIGxpYmd0YS1kZXZlbCBmZm1wZWc0LWRldmVsIHhpbmUtbGliLWRldmVs CiAgU0RMMi1kZXZlbCBnc3QtcGx1Z2lucy1iYXNlMS1kZXZlbAogICQodm9wdF9pZiBvcGVuZXhy IGxpYm9wZW5leHItZGV2ZWwpCiAgJCh2b3B0X2lmIHBvcHBsZXIgcG9wcGxlci1nbGliLWRldmVs KQoKRnJvbSA0MmNhZmZhNDIwNTQyNDM2M2FiYTIzN2U1YWI2ZDA5NGExYmZjNjU5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBX ZWQsIDIyIE1hciAyMDIzIDIwOjAxOjEzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTMvMTE1XSB4 aW5lLWxpYjogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL3hpbmUtbGli L3RlbXBsYXRlIHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy94aW5lLWxpYi90ZW1wbGF0ZSBiL3Ny Y3BrZ3MveGluZS1saWIvdGVtcGxhdGUKaW5kZXggZjcxM2VmZjQ5YjA3Yy4uZWQ2MTk0YzE3ZDEx ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy94aW5lLWxpYi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3hp bmUtbGliL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAneGlu ZS1saWInCiBwa2duYW1lPXhpbmUtbGliCi12ZXJzaW9uPTEuMi4xMgordmVyc2lvbj0xLjIuMTMK IHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIt LWRpc2FibGUtdmNkIC0tZGlzYWJsZS1nbm9tZXZmcyAtLXdpdGhvdXQtZXNvdW5kIC0tZGlzYWJs ZS1keHIzCkBAIC04LDcgKzgsNyBAQCBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLXZjZCAtLWRp c2FibGUtZ25vbWV2ZnMgLS13aXRob3V0LWVzb3VuZCAtLWRpc2FibGUtZHhyMwogaG9zdG1ha2Vk ZXBlbmRzPSJhdXRvbWFrZSBnZXR0ZXh0LWRldmVsIGxpYnRvb2wgcGtnLWNvbmZpZyBwZXJsIgog bWFrZWRlcGVuZHM9IgogIHpsaWItZGV2ZWwgYWxzYS1saWItZGV2ZWwgbGlieGNiLWRldmVsIGxp YlNNLWRldmVsIGxpYlhleHQtZGV2ZWwgbGliWHYtZGV2ZWwKLSBsaWJYdk1DLWRldmVsIGxpYmE1 Mi1kZXZlbCBsaWJtYWQtZGV2ZWwgZmZtcGVnLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKKyBsaWJY dk1DLWRldmVsIGxpYmE1Mi1kZXZlbCBsaWJtYWQtZGV2ZWwgZmZtcGVnNC1kZXZlbCBwdWxzZWF1 ZGlvLWRldmVsCiAgamFjay1kZXZlbCBzYW1iYS1kZXZlbCBsaWJmbGFjLWRldmVsIGxpYm1vZHBs dWctZGV2ZWwgbGlibXBjZGVjLWRldmVsCiAgc3BlZXgtZGV2ZWwgbGlidGhlb3JhLWRldmVsIGxp YnZvcmJpcy1kZXZlbCBsaWJkY2EtZGV2ZWwgZmFhZDItZGV2ZWwKICBsaWJjZGlvLWRldmVsIGxp YmJsdXJheS1kZXZlbCBhYWxpYi1kZXZlbCBsaWJjYWNhLWRldmVsIGxpYlhpbmVyYW1hLWRldmVs CkBAIC0xOSw3ICsxOSw3IEBAIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIsIExHUEwtMi4wLW9y LWxhdGVyIgogaG9tZXBhZ2U9Imh0dHA6Ly93d3cueGluZS1wcm9qZWN0Lm9yZyIKIGNoYW5nZWxv Zz0iaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMveGluZS9maWxlcy94aW5lLWxpYi8k e3ZlcnNpb259L1JFQURNRS50eHQvdmlldyIKIGRpc3RmaWxlcz0iJHtTT1VSQ0VGT1JHRV9TSVRF fS94aW5lLyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIueHoiCi1jaGVja3N1bT1kNjA2MjcwNDY4 ZTE1NDBjMmE4OWMwZDdmNWZkZjExZTE3ZWNjMGMyNjk4Y2MwYmNiMTA2NWZmMjZhYmVlMDk4Citj aGVja3N1bT01ZjEwZDZkNzE4YTRhNTFjMTdlZDFiMzJiMDMxZDRmOWI4MGIwNjFlODI3NjUzNWIy YmUzMWU1YWM0Yjc1ZTZmCiAKIGNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgogCWk2ODYt bXVzbCkKCkZyb20gNTllYzc4NjUwNzhkN2UxN2EyMWYzYmQ1N2NiNDY3NGI0ZTlkYWJjZiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE0LzEx NV0gUU1QbGF5MjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL1FNUGxheTIv dGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL1FNUGxheTIvdGVtcGxhdGUgYi9zcmNwa2dzL1FN UGxheTIvdGVtcGxhdGUKaW5kZXggZGRlMjljYmE2ZDhjMy4uNDZjODBmNjRhMTM0OSAxMDA2NDQK LS0tIGEvc3JjcGtncy9RTVBsYXkyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvUU1QbGF5Mi90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ1FNUGxheTInCiBwa2du YW1lPVFNUGxheTIKIHZlcnNpb249MjMuMTAuMjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1 aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcXQ1LXFtYWtlIHF0 NS1ob3N0LXRvb2xzIgogbWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZy1kZXZlbCBs aWJhc3MtZGV2ZWwgbGliY2Rpby1kZXZlbCBsaWJnbWUtZGV2ZWwKCkZyb20gZmE3OGY5NzAxMTQ4 Y2I4MWQyNWM3NjRkZGM0ZGYxNTFkMDg0N2VmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE1LzExNV0gYWxzYS1wbHVnaW5zOiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvYWxzYS1wbHVnaW5zL3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9hbHNhLXBsdWdpbnMvdGVtcGxhdGUgYi9zcmNwa2dzL2Fsc2EtcGx1Z2lu cy90ZW1wbGF0ZQppbmRleCAwYmZhNmQ5ZmQyNjQzLi5hNTcwOGE3ZDgyYThmIDEwMDY0NAotLS0g YS9zcmNwa2dzL2Fsc2EtcGx1Z2lucy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2Fsc2EtcGx1Z2lu cy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Fsc2EtcGx1 Z2lucycKIHBrZ25hbWU9YWxzYS1wbHVnaW5zCiB2ZXJzaW9uPTEuMi43LjEKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSIt LWRpc2FibGUtbWFlbW8tcGx1Z2luIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJv bSA1MmU2ZDY0MjIxZGNhODA0NzNiNzljNDEyZDNjODE0MmVkZDJhNzRkIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTYvMTE1XSBhcmNhbjog cmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2FyY2FuL3RlbXBsYXRlIHwgMiAr LQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9hcmNhbi90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXJjYW4vdGVtcGxhdGUKaW5k ZXggZWZkMGFmZTEwNTc2ZC4uYjkxZTY5MDBkNDJhMSAxMDA2NDQKLS0tIGEvc3JjcGtncy9hcmNh bi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2FyY2FuL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAog IyAhISBrZWVwIHN5bmNlZCB3aXRoOiBhY2ZnZnMgYWNsaXAgYWxvYWRpbWFnZQogcGtnbmFtZT1h cmNhbgogdmVyc2lvbj0wLjYuMi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBjcmVhdGVfd3Jr c3JjPXllcwogYnVpbGRfd3Jrc3JjPWFyY2FuL3NyYwogYnVpbGRfc3R5bGU9Y21ha2UKCkZyb20g MDE0NzcwNjNhN2YyNzAwYmUxMjhkOGNmMDk4OGU2OGEwY2VjMjc2ZCBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBN YXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDE3LzExNV0gYXR0cmFjdDog cmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUg fCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdHRyYWN0L3RlbXBsYXRlIGIvc3JjcGtncy9hdHRyYWN0 L3RlbXBsYXRlCmluZGV4IDI2MTQ0ZTkzMWEzYzcuLmU3NjBiZjBkMThhZWMgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvYXR0cmFjdC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2F0dHJhY3QvdGVtcGxhdGUK QEAgLTEsMTIgKzEsMTIgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2F0dHJhY3QnCiBwa2duYW1l PWF0dHJhY3QKIHZlcnNpb249Mi42LjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0 eWxlPWdudS1tYWtlZmlsZQogbWFrZV9idWlsZF9hcmdzPSJWRVJCT1NFPTEiCiBtYWtlX3VzZV9l bnY9eWVzCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0iU0ZNTC1k ZXZlbCBmZm1wZWctZGV2ZWwgZm9udGNvbmZpZy1kZXZlbCBnbHUtZGV2ZWwgbGliYXJjaGl2ZS1k ZXZlbAorbWFrZWRlcGVuZHM9IlNGTUwtZGV2ZWwgZmZtcGVnNC1kZXZlbCBmb250Y29uZmlnLWRl dmVsIGdsdS1kZXZlbCBsaWJhcmNoaXZlLWRldmVsCiAgbGliY3VybC1kZXZlbCBsaWJqcGVnLXR1 cmJvLWRldmVsIHhpbmUtbGliIHJhcGlkanNvbiBsaWJYcmFuZHItZGV2ZWwiCiBkZXBlbmRzPSJn aXQiCiBzaG9ydF9kZXNjPSJBdHRyYWN0LU1vZGUgaXMgYSBncmFwaGljYWwgZnJvbnRlbmQgZm9y IGVtdWxhdG9ycyIKCkZyb20gZGFkYmJkNGUxYjdmYTA5YmNjMzY5MmNlMzVkMDM1OTdlMzE4Y2Qz ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNv bT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFUQ0gg MDE4LzExNV0gYXViaW86IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9hdWJp by9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCiBz cmNwa2dzL2F1YmlvL3RlbXBsYXRlICAgICAgICAgICAgICB8ICAyICstCiAyIGZpbGVzIGNoYW5n ZWQsIDI2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2F1YmlvL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv YXViaW8vcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9hdWJpby9wYXRjaGVzL2ZmbXBl ZzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uYWFjZTQx YTZlNmQ5YQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvYXViaW8vcGF0Y2hlcy9mZm1wZWc1 LnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb20gOGEwNTQyMGU1ZGQ4YzdiOGIyNDQ3ZjgyZGM5 MTk3NjU4NzY1MTFiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBhdWwgQnJvc3Np ZXIgPHBpZW1AcGllbS5vcmc+CitEYXRlOiBUdWUsIDI1IEphbiAyMDIyIDE4OjMwOjI3ICswMTAw CitTdWJqZWN0OiBbUEFUQ0hdIFtzb3VyY2VfYXZjb2RlY10gZGVmaW5lIEZGX0FQSV9MQVZGX0FW Q1RYIGZvciBsaWJhdmNvZGVjID4KKyA1OSwgdGh4IEBiZXJvbGludXggKGNsb3NlcyBnaC0zNTMp CisKKy0tLQorIHNyYy9pby9zb3VyY2VfYXZjb2RlYy5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5n ZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2lvL3NvdXJjZV9hdmNvZGVj LmMgYi9zcmMvaW8vc291cmNlX2F2Y29kZWMuYworaW5kZXggZTBhZTkzYjUuLjE0MjFiZDlhIDEw MDY0NAorLS0tIGEvc3JjL2lvL3NvdXJjZV9hdmNvZGVjLmMKKysrKyBiL3NyYy9pby9zb3VyY2Vf YXZjb2RlYy5jCitAQCAtNjgsNiArNjgsMTAgQEAKKyAjZGVmaW5lIEFVQklPX0FWQ09ERUNfTUFY X0JVRkZFUl9TSVpFIEFWX0lOUFVUX0JVRkZFUl9NSU5fU0laRQorICNlbmRpZgorIAorKyNpZiBM SUJBVkNPREVDX1ZFUlNJT05fTUFKT1IgPj0gNTkKKysjZGVmaW5lIEZGX0FQSV9MQVZGX0FWQ1RY IDEKKysjZW5kaWYKKysKKyBzdHJ1Y3QgX2F1YmlvX3NvdXJjZV9hdmNvZGVjX3QgeworICAgdWlu dF90IGhvcF9zaXplOworICAgdWludF90IHNhbXBsZXJhdGU7CmRpZmYgLS1naXQgYS9zcmNwa2dz L2F1YmlvL3RlbXBsYXRlIGIvc3JjcGtncy9hdWJpby90ZW1wbGF0ZQppbmRleCBhZDFjNGIyNTY5 OTE3Li43ZDg3NWNjMDI1NDFhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2F1YmlvL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvYXViaW8vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdhdWJpbycKIHBrZ25hbWU9YXViaW8KIHZlcnNpb249MC40LjkKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPXdhZjMKICMgWFhYIGxhc2gsIHB1cmUgYW5kIHN3aWcg c3VwcG9ydC4KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyB0eHQybWFuIgoKRnJvbSBhZjVj NDI2ZDBkODRlMWFmNGZkNWY3MWE3Y2E2M2RmMTYwNmRlYzNmIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMTkvMTE1XSBhdWRhY2lvdXMtcGx1 Z2luczogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4vYXVkYWNpb3VzLXBsdWdpbnMv cGF0Y2hlcy9mZm1wZWc1LnBhdGNoICAgfCA0MyArKysrKysrKysrKysrKysrKysrCiBzcmNwa2dz L2F1ZGFjaW91cy1wbHVnaW5zL3RlbXBsYXRlICAgICAgICAgICAgfCAgMiArLQogMiBmaWxlcyBj aGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBi L3NyY3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjRlNWUzNDA5OWQ3MWMKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnNS5wYXRj aApAQCAtMCwwICsxLDQzIEBACitjb21taXQgMjk4YWEzNzFjNTZjMmY1MmMyNWEzM2Q5YmRlYzQ5 MThiMTFjZWJkYworQXV0aG9yOiB0aWJlcXVhZG9yaWFuIDx0aWJlcXVhZG9yaWFuQHBvc3Rlby5k ZT4KK0RhdGU6ICAgU2F0IE1hciAxOSAxODo0MDoxMiAyMDIyICswMTAwCisKKyAgICBhdWRhY2lv dXMtcGx1Z2luczogcmVidWlsZCBhZ2FpbnN0IGZmbXBlZy01LjAKKworZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvYXVkYWNpb3VzLXBsdWdpbnMvcGF0Y2hlcy9mZm1wZWctNS4wLnBhdGNoIGIvc3JjcGtn cy9hdWRhY2lvdXMtcGx1Z2lucy9wYXRjaGVzL2ZmbXBlZy01LjAucGF0Y2gKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi42MTdjMTEyMTViCistLS0gL2Rldi9udWxsCisr KysgYi9zcmNwa2dzL2F1ZGFjaW91cy1wbHVnaW5zL3BhdGNoZXMvZmZtcGVnLTUuMC5wYXRjaAor QEAgLTAsMCArMSwzMSBAQAorK0Zyb20gZjYwYmViNDAwZWViMWU0Nzc4YmJmZDczOGJjNGE0Y2Nl ZjNkZTUzOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKKytGcm9tOiBKb2huIExpbmRncmVuIDxq b2huQGpsaW5kZ3Jlbi5uZXQ+CisrRGF0ZTogU2F0LCA1IE1hciAyMDIyIDEyOjA1OjM0IC0wNTAw CisrU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBGRm1wZWcgNS4wCisrCisrLS0tCisr IHNyYy9mZmF1ZGlvL2ZmYXVkaW8tY29yZS5jYyB8IDQgKystLQorKyAxIGZpbGUgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorKworK2RpZmYgLS1naXQgYS9zcmMvZmZh dWRpby9mZmF1ZGlvLWNvcmUuY2MgYi9zcmMvZmZhdWRpby9mZmF1ZGlvLWNvcmUuY2MKKytpbmRl eCAxNmRjNjNlM2EuLmEyYjk1ZmQ2YyAxMDA2NDQKKystLS0gYS9zcmMvZmZhdWRpby9mZmF1ZGlv LWNvcmUuY2MKKysrKysgYi9zcmMvZmZhdWRpby9mZmF1ZGlvLWNvcmUuY2MKKytAQCAtMjc0LDcg KzI3NCw3IEBAIHN0YXRpYyBBVklucHV0Rm9ybWF0ICogZ2V0X2Zvcm1hdF9ieV9jb250ZW50IChj b25zdCBjaGFyICogbmFtZSwgVkZTRmlsZSAmIGZpbGUpCisrICAgICAgICAgQVZQcm9iZURhdGEg ZCA9IHtuYW1lLCBidWYsIGZpbGxlZH07CisrICAgICAgICAgc2NvcmUgPSB0YXJnZXQ7CisrIAor Ky0gICAgICAgIGYgPSBhdl9wcm9iZV9pbnB1dF9mb3JtYXQyICgmIGQsIHRydWUsICYgc2NvcmUp OworKysgICAgICAgIGYgPSAoQVZJbnB1dEZvcm1hdCAqKSBhdl9wcm9iZV9pbnB1dF9mb3JtYXQy ICgmIGQsIHRydWUsICYgc2NvcmUpOworKyAgICAgICAgIGlmIChmKQorKyAgICAgICAgICAgICBi cmVhazsKKysgCisrQEAgLTM0Nyw3ICszNDcsNyBAQCBzdGF0aWMgYm9vbCBmaW5kX2NvZGVjIChB VkZvcm1hdENvbnRleHQgKiBjLCBDb2RlY0luZm8gKiBjaW5mbykKKysgI2VuZGlmCisrICAgICAg ICAgaWYgKHN0cmVhbSAmJiBzdHJlYW0tPmNvZGVjcGFyICYmIHN0cmVhbS0+Y29kZWNwYXItPmNv ZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX0FVRElPKQorKyAgICAgICAgIHsKKystICAgICAgICAg ICAgQVZDb2RlYyAqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIgKHN0cmVhbS0+Y29kZWNw YXItPmNvZGVjX2lkKTsKKysrICAgICAgICAgICAgQVZDb2RlYyAqIGNvZGVjID0gKEFWQ29kZWMg KikgYXZjb2RlY19maW5kX2RlY29kZXIgKHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysg CisrICAgICAgICAgICAgIGlmIChjb2RlYykKKysgICAgICAgICAgICAgewpkaWZmIC0tZ2l0IGEv c3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXVkYWNpb3VzLXBs dWdpbnMvdGVtcGxhdGUKaW5kZXggODhjYmMxNjcxZmM2YS4uYmVlYmZhZTU5ZWQ0NCAxMDA2NDQK LS0tIGEvc3JjcGtncy9hdWRhY2lvdXMtcGx1Z2lucy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2F1 ZGFjaW91cy1wbHVnaW5zL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogI0tlZXAgaW4gc3luYyB3 aXRoIGF1ZGFjaW91cyEKIHBrZ25hbWU9YXVkYWNpb3VzLXBsdWdpbnMKIHZlcnNpb249NC4zLjEK LXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJn cz0iJCh2b3B0X2Jvb2wgZ3RrMyBndGspICQodm9wdF9ib29sIGd0azMpCiAgJCh2b3B0X2Jvb2wg cXQpICQodm9wdF9ib29sIHF0IHF0NikiCgpGcm9tIDBhNGMxMGVlOTVjMGQyMWQ3ODIzMjg2YmY4 MjA4N2U1ZTMyZmRiZjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDUgLTA0MDAKU3Vi amVjdDogW1BBVENIIDAyMC8xMTVdIGF1ZGFjaXR5OiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4z CgotLS0KIHNyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2Vk LCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9h dWRhY2l0eS90ZW1wbGF0ZSBiL3NyY3BrZ3MvYXVkYWNpdHkvdGVtcGxhdGUKaW5kZXggNzMzMTRl NjIzMmJkNi4uZGYyNmRiMWMxNTg3MyAxMDA2NDQKLS0tIGEvc3JjcGtncy9hdWRhY2l0eS90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL2F1ZGFjaXR5L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnYXVkYWNpdHknCiBwa2duYW1lPWF1ZGFjaXR5CiB2ZXJzaW9uPTMu My4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogYnVpbGRfaGVs cGVyPSJjbWFrZS13eFdpZGdldHMtZ3RrMyBxZW11IgogY29uZmlndXJlX2FyZ3M9Ii1EYXVkYWNp dHlfdXNlX2ZmbXBlZz1sb2FkZWQgLURhdWRhY2l0eV9saWJfcHJlZmVyZW5jZT1zeXN0ZW0KQEAg LTEwLDcgKzEwLDcgQEAgY29uZmlndXJlX2FyZ3M9Ii1EYXVkYWNpdHlfdXNlX2ZmbXBlZz1sb2Fk ZWQgLURhdWRhY2l0eV9saWJfcHJlZmVyZW5jZT1zeXN0ZW0KICAtRGF1ZGFjaXR5X2hhc192c3Qz PW5vIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIGdldHRleHQgcHl0aG9uMyIKIG1ha2Vk ZXBlbmRzPSJ3eFdpZGdldHMtZ3RrMy1kZXZlbCBndGsrMy1kZXZlbCBleHBhdC1kZXZlbCBsYW1l LWRldmVsCi0gbGlic294ci1kZXZlbCBwb3J0YXVkaW8tZGV2ZWwgc3FsaXRlLWRldmVsIGxpYmN1 cmwtZGV2ZWwgZmZtcGVnLWRldmVsCisgbGlic294ci1kZXZlbCBwb3J0YXVkaW8tZGV2ZWwgc3Fs aXRlLWRldmVsIGxpYmN1cmwtZGV2ZWwgZmZtcGVnNC1kZXZlbAogIGxpYmlkM3RhZy1kZXZlbCBs aWJtYWQtZGV2ZWwgdmFtcC1wbHVnaW4tc2RrLWRldmVsIGxpYm9nZy1kZXZlbAogIGxpYnZvcmJp cy1kZXZlbCBsaWJmbGFjLWRldmVsIGxpbHYtZGV2ZWwgbHYyIHNlcmQtZGV2ZWwgc29yZC1kZXZl bAogIHNyYXRvbS1kZXZlbCBzdWlsLWRldmVsIHBvcnRtaWRpLWRldmVsIHNvdW5kdG91Y2gtZGV2 ZWwgdHdvbGFtZS1kZXZlbAoKRnJvbSA1ODQyY2M2YWY4NmYyZmVmNTVmZTIxM2Q0NzhhNzYwNGM1 MjkxZTZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCAwMjEvMTE1XSBhdmlkZW11eDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNw a2dzL2F2aWRlbXV4L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0 ZSBiL3NyY3BrZ3MvYXZpZGVtdXgvdGVtcGxhdGUKaW5kZXggMjUzYTAyNDNlMjI1OS4uNTU3Mjg1 OTgyZDJiOCAxMDA2NDQKLS0tIGEvc3JjcGtncy9hdmlkZW11eC90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2F2aWRlbXV4L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnYXZpZGVtdXgnCiBwa2duYW1lPWF2aWRlbXV4CiB2ZXJzaW9uPTIuOC4wCi1yZXZpc2lvbj0y CityZXZpc2lvbj0zCiAjIENhbid0IGJlIGNvbXBpbGVkIGZvciBhYXJjaDY0LCBhcm0qIG9yIG1p cHMqCiBhcmNocz0ieDg2XzY0KiBpNjg2KiIKIGhvc3RtYWtlZGVwZW5kcz0iY21ha2UgcGtnLWNv bmZpZyBxdDUtaG9zdC10b29scyBxdDUtZGV2ZWwgdGFyIHlhc20iCgpGcm9tIGMzYmI1NDcwNjMy ZTY0MjgwYTU1Njg2MGUwN2JhYzcyYTFhZGFhOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6 MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyMi8xMTVdIGJsZW5kZXI6IHJldmJ1bXAgZm9y IGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9ibGVuZGVyL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZp bGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvYmxlbmRlci90ZW1wbGF0ZSBiL3NyY3BrZ3MvYmxlbmRlci90ZW1wbGF0ZQppbmRl eCAwNWZkYmY4Zjc0N2UyLi4wOTNkNmQyMDA0ZTk1IDEwMDY0NAotLS0gYS9zcmNwa2dzL2JsZW5k ZXIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9ibGVuZGVyL3RlbXBsYXRlCkBAIC05LDggKzksOCBA QCBjb25maWd1cmVfYXJncz0iLURXSVRIX0lOU1RBTExfUE9SVEFCTEU9T0ZGIC1EV0lUSF9QWVRI T05fSU5TVEFMTD1PRkYKICAtRFdJVEhfSkFDSz1PTiAtRFdJVEhfQ09ERUNfRkZNUEVHPU9OIC1E V0lUSF9DT0RFQ19TTkRGSUxFPU9OIC1EV0lUSF9PUEVOTVA9T04KICAtRFdJVEhfRkZUVzM9T04g LURXSVRIX01PRF9PQ0VBTlNJTT1PTiAtRFdJVEhfQ1lDTEVTX0VNQlJFRT1PRkYgLURXSVRIX09Q RU5DT0xPUklPPU9OCiAgLURXSVRIX0lNQUdFX09QRU5FWFI9T04gLURXSVRIX0lNQUdFX09QRU5K UEVHPU9OIC1EV0lUSF9PUEVOU1VCRElWPU9OCi0gLURXSVRIX09QRU5DT0xMQURBPU9OIC1EV0lU SF9TWVNURU1fR0xFVz1PTiAtRFdJVEhfT1BFTlZEQj1PTiAtRFdJVEhfQUxFTUJJQz1PTgotIC1E V0lUSF9HSE9TVF9YMTE9T04gLURXSVRIX0dIT1NUX1dBWUxBTkQ9T04gLURXSVRIX0dIT1NUX0xJ QkRFQ09SPU9OCisgLURXSVRIX09QRU5DT0xMQURBPU9OIC1EV0lUSF9PUEVOVkRCPU9OIC1EV0lU SF9BTEVNQklDPU9OCisgLURXSVRIX0dIT1NUX1gxMT1PTiAtRFdJVEhfR0hPU1RfV0FZTEFORD1P TiAtRFdJVEhfR0hPU1RfV0FZTEFORF9MSUJERUNPUj1PTgogIC1EV0lUSF9CVUlMRElORk89T0ZG IC1EUFlUSE9OX1ZFUlNJT049JHtweTNfdmVyfSAtRFBZVEhPTl9MSUJQQVRIPS91c3IvbGliCiAg LURQWVRIT05fTElCUkFSWT1weXRob24ke3B5M192ZXJ9JHtweTNfYWJpdmVyfSAtRFBZVEhPTl9J TkNMVURFX0RJUlM9LyR7cHkzX2luY30KICAtRFdJVEhfU1lTVEVNX0xaTz1PTiAtRFdJVEhfU1lT VEVNX0VJR0VOMz1PTiAtRFdJVEhfU1lTVEVNX0ZSRUVUWVBFPU9OIgoKRnJvbSAwNGQ2MDZiZTVh ZjljMTY5NGNhMDQ5YjUyMTU2ZGU2MmViMDYwZDlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjMvMTE1XSBjYW50YXRhOiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvY2FudGF0YS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvY2FudGF0YS90ZW1wbGF0ZSBiL3NyY3BrZ3MvY2FudGF0YS90ZW1wbGF0ZQppbmRleCA0 YjQxN2Q4MGQ1YzJkLi44YTkwYWFhNGMwN2EyIDEwMDY0NAotLS0gYS9zcmNwa2dzL2NhbnRhdGEv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9jYW50YXRhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnY2FudGF0YScKIHBrZ25hbWU9Y2FudGF0YQogdmVyc2lvbj0y LjUuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGhvc3RtYWtl ZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMgcXQ1LXRvb2xzIgog bWFrZWRlcGVuZHM9InF0NS1kZXZlbCBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXN2Zy1kZXZlbCBxdDUt eG1scGF0dGVybnMtZGV2ZWwKCkZyb20gZTYyZWExZjU0ZTk1MmYzYzcyZGRmN2VhNzcwMzBkNDhl OTk4YzQ3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBb UEFUQ0ggMDI0LzExNV0gY2NleHRyYWN0b3I6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0t LQogc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nj ZXh0cmFjdG9yL3RlbXBsYXRlIGIvc3JjcGtncy9jY2V4dHJhY3Rvci90ZW1wbGF0ZQppbmRleCA5 YWJjZDgyODUyYjI3Li42ZWNjYWQ1ODg1YWY5IDEwMDY0NAotLS0gYS9zcmNwa2dzL2NjZXh0cmFj dG9yL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY2NleHRyYWN0b3IvdGVtcGxhdGUKQEAgLTEsMTIg KzEsMTIgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2NjZXh0cmFjdG9yJwogcGtnbmFtZT1jY2V4 dHJhY3RvcgogdmVyc2lvbj0wLjkzCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF93cmtz cmM9ImxpbnV4IgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0t ZW5hYmxlLW9jciAtLWVuYWJsZS1oYXJkc3VieCIKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2Ug cGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJsZXB0b25pY2EtZGV2ZWwgdGVzc2VyYWN0LW9jci1k ZXZlbCBmZm1wZWctZGV2ZWwiCittYWtlZGVwZW5kcz0ibGVwdG9uaWNhLWRldmVsIHRlc3NlcmFj dC1vY3ItZGV2ZWwgZmZtcGVnNC1kZXZlbCIKIHNob3J0X2Rlc2M9IkV4dHJhY3Qgc3VidGl0bGVz IGZyb20gdmlkZW8gc3RyZWFtcyIKIG1haW50YWluZXI9Im5ld2JsdWVtb29uIDxibGF1bW9sY2hA bWFpbGJveC5vcmc+IgogbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKCkZyb20gMjViNzc0NzY4 Mjk0OWVmY2I1MGI3YTMyMmYxMTFhODM5MTY3YmFiZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDI1LzExNV0gY2hyb21hcHJpbnQ6IHJldmJ1 bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9jaHJvbWFwcmludC9wYXRjaGVzL2ZmbXBl ZzUucGF0Y2ggfCA1NjkgKysrKysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9jaHJvbWFwcmlu dC90ZW1wbGF0ZSAgICAgICAgICAgICAgfCAgIDIgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNTcwIGlu c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2No cm9tYXByaW50L3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hy b21hcHJpbnQvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9jaHJvbWFwcmludC9wYXRj aGVzL2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw MC4uYTlmZDMwN2EyM2M4YQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvY2hyb21hcHJpbnQv cGF0Y2hlcy9mZm1wZWc1LnBhdGNoCkBAIC0wLDAgKzEsNTY5IEBACitGcm9tIDhjY2FkNjkzNzE3 N2IxYjkyZTQwYWI4ZjQ0NDdlYTI3YmFjMDA5YTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiA9P1VURi04P3E/THVrPUMzPUExPUM1PUExPTIwTGFsaW5zaz1DMz1CRD89IDxsYWxpbnNr eUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDQgTm92IDIwMjIgMjE6NDc6MzggKzAxMDAKK1N1Ympl Y3Q6IFtQQVRDSF0gVXNlIEZGbXBlZyA1LnggKCMxMjApCisKKyogVXNlIEZGbXBlZyA1LjEuMiBm b3IgQ0kgYnVpbGRzCisKKyogQnVpbGQgb24gVWJ1bnR1IDIwLjA0CisKKyogVXBncmFkZSBjb2Rl IHRvIEZGbXBlZyA1LnggQVBJcworCisqIE9ubHkgc2V0IEZGbXBlZyBpbmNsdWRlIGRpcnMgaWYg YnVpbGRpbmcgdG9vbHMKKworKiBObyBsb25nZXIgbmVlZGVkCisKKyogVXNlIHVidW50dSAyMC4w NAorLS0tCisgLmdpdGh1Yi93b3JrZmxvd3MvYnVpbGQueW1sICAgICAgICAgICAgICAgICAgIHwg ICA2ICstCisgQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IDE2IC0tCisgcGFja2FnZS9idWlsZC5zaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICA0ICstCisgc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3IuaCAgICAgICAgICAgIHwg ICAyIC0KKyBzcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9hdnJlc2FtcGxlLmggfCAg NzIgLS0tLS0tLQorIHNyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUu aCB8ICAxOCArLQorIHNyYy9hdWRpby9mZm1wZWdfYXVkaW9fcmVhZGVyLmggICAgICAgICAgICAg ICB8IDE5NyArKysrKysrKystLS0tLS0tLS0KKyB0ZXN0cy9DTWFrZUxpc3RzLnR4dCAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDYgKworIDggZmlsZXMgY2hhbmdlZCwgMTIyIGluc2VydGlv bnMoKyksIDE5OSBkZWxldGlvbnMoLSkKKyBkZWxldGUgbW9kZSAxMDA2NDQgc3JjL2F1ZGlvL2Zm bXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5oCisKK2RpZmYgLS1naXQgYS9DTWFrZUxp c3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCBmOGQ2YTMyLi40ZGEyNDA1IDEwMDY0NAor LS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtODQsOSArODQs NiBAQCBmaW5kX3BhY2thZ2UoRkZtcGVnKQorIGlmKEZGTVBFR19MSUJSQVJJRVMpCisgCWNtYWtl X3B1c2hfY2hlY2tfc3RhdGUoUkVTRVQpCisgCXNldChDTUFLRV9SRVFVSVJFRF9MSUJSQVJJRVMg JHtGRk1QRUdfTElCUkFSSUVTfSAke0NNQUtFX1RIUkVBRF9MSUJTX0lOSVR9IC1sbSkKKy0JY2hl Y2tfZnVuY3Rpb25fZXhpc3RzKGF2X3BhY2tldF91bnJlZiBIQVZFX0FWX1BBQ0tFVF9VTlJFRikK Ky0JY2hlY2tfZnVuY3Rpb25fZXhpc3RzKGF2X2ZyYW1lX2FsbG9jIEhBVkVfQVZfRlJBTUVfQUxM T0MpCistCWNoZWNrX2Z1bmN0aW9uX2V4aXN0cyhhdl9mcmFtZV9mcmVlIEhBVkVfQVZfRlJBTUVf RlJFRSkKKyAJY21ha2VfcG9wX2NoZWNrX3N0YXRlKCkKKyBlbmRpZigpCisKK0BAIC0xNjMsMTQg KzE2MCwxMSBAQCBtZXNzYWdlKFNUQVRVUyAiVXNpbmcgJHtGRlRfTElCfSBmb3IgRkZUIGNhbGN1 bGF0aW9ucyIpCisgaWYoTk9UIEFVRElPX1BST0NFU1NPUl9MSUIpCisgCWlmKEZGTVBFR19MSUJT V1JFU0FNUExFX0ZPVU5EKQorIAkJc2V0KEFVRElPX1BST0NFU1NPUl9MSUIgInN3cmVzYW1wbGUi KQorLQllbHNlaWYoRkZNUEVHX0xJQkFWUkVTQU1QTEVfRk9VTkQpCistCQlzZXQoQVVESU9fUFJP Q0VTU09SX0xJQiAiYXZyZXNhbXBsZSIpCisgCWVuZGlmKCkKKyBlbmRpZigpCisKKyBpZihBVURJ T19QUk9DRVNTT1JfTElCIFNUUkVRVUFMICJzd3Jlc2FtcGxlIikKKyAJaWYoRkZNUEVHX0xJQlNX UkVTQU1QTEVfRk9VTkQpCistCQlzZXQoVVNFX0FWUkVTQU1QTEUgT0ZGKQorIAkJc2V0KFVTRV9T V1JFU0FNUExFIE9OKQorIAkJc2V0KEFVRElPX1BST0NFU1NPUl9MSUJSQVJJRVMgJHtGRk1QRUdf TElCU1dSRVNBTVBMRV9MSUJSQVJJRVN9KQorIAkJc2V0KEFVRElPX1BST0NFU1NPUl9JTkNMVURF X0RJUlMgJHtGRk1QRUdfTElCU1dSRVNBTVBMRV9JTkNMVURFX0RJUlN9KQorQEAgLTE3OCwxNiAr MTcyLDYgQEAgaWYoQVVESU9fUFJPQ0VTU09SX0xJQiBTVFJFUVVBTCAic3dyZXNhbXBsZSIpCisg CQltZXNzYWdlKEZBVEFMX0VSUk9SICJTZWxlY3RlZCAke0FVRElPX1BST0NFU1NPUl9MSUJ9IGZv ciBhdWRpbyBwcm9jZXNzaW5nLCBidXQgdGhlIGxpYnJhcnkgaXMgbm90IGZvdW5kIikKKyAJZW5k aWYoKQorIAltZXNzYWdlKFNUQVRVUyAiVXNpbmcgJHtBVURJT19QUk9DRVNTT1JfTElCfSBmb3Ig YXVkaW8gY29udmVyc2lvbiIpCistZWxzZWlmKEFVRElPX1BST0NFU1NPUl9MSUIgU1RSRVFVQUwg ImF2cmVzYW1wbGUiKQorLQlpZihGRk1QRUdfTElCQVZSRVNBTVBMRV9GT1VORCkKKy0JCXNldChV U0VfQVZSRVNBTVBMRSBPTikKKy0JCXNldChVU0VfU1dSRVNBTVBMRSBPRkYpCistCQlzZXQoQVVE SU9fUFJPQ0VTU09SX0xJQlJBUklFUyAke0ZGTVBFR19MSUJBVlJFU0FNUExFX0xJQlJBUklFU30p CistCQlzZXQoQVVESU9fUFJPQ0VTU09SX0lOQ0xVREVfRElSUyAke0ZGTVBFR19MSUJBVlJFU0FN UExFX0lOQ0xVREVfRElSU30pCistCWVsc2UoKQorLQkJbWVzc2FnZShGQVRBTF9FUlJPUiAiU2Vs ZWN0ZWQgJHtBVURJT19QUk9DRVNTT1JfTElCfSBmb3IgYXVkaW8gcHJvY2Vzc2luZywgYnV0IHRo ZSBsaWJyYXJ5IGlzIG5vdCBmb3VuZCIpCistCWVuZGlmKCkKKy0JbWVzc2FnZShTVEFUVVMgIlVz aW5nICR7QVVESU9fUFJPQ0VTU09SX0xJQn0gZm9yIGF1ZGlvIGNvbnZlcnNpb24iKQorIGVsc2Uo KQorIAltZXNzYWdlKFNUQVRVUyAiQnVpbGRpbmcgd2l0aG91dCBhdWRpbyBjb252ZXJzaW9uIHN1 cHBvcnQsIHBsZWFzZSBpbnN0YWxsIEZGbXBlZyB3aXRoIGxpYnN3cmVzYW1wbGUiKQorIGVuZGlm KCkKK2RpZmYgLS1naXQgYS9wYWNrYWdlL2J1aWxkLnNoIGIvcGFja2FnZS9idWlsZC5zaAoraW5k ZXggZGE2MzFhZS4uYjQxZDM2ZSAxMDA3NTUKKy0tLSBhL3BhY2thZ2UvYnVpbGQuc2gKKysrKyBi L3BhY2thZ2UvYnVpbGQuc2gKK0BAIC03LDggKzcsOCBAQCBzZXQgLWV1eAorCisgQkFTRV9ESVI9 JChjZCAkKGRpcm5hbWUgJDApLy4uICYmIHB3ZCkKKworLUZGTVBFR19WRVJTSU9OPTQuNC4xCist RkZNUEVHX0JVSUxEX1RBRz12NC40LjEtMQorK0ZGTVBFR19WRVJTSU9OPTUuMS4yCisrRkZNUEVH X0JVSUxEX1RBRz12JHtGRk1QRUdfVkVSU0lPTn0tMQorCisgVE1QX0JVSUxEX0RJUj0kQkFTRV9E SVIvJChta3RlbXAgLWQgYnVpbGQuWFhYWFhYWFgpCisgdHJhcCAncm0gLXJmICRUTVBfQlVJTERf RElSJyBFWElUCitkaWZmIC0tZ2l0IGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3Iu aCBiL3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yLmgKK2luZGV4IDc2MjhmYzcuLjM5 ZjRmNmQgMTAwNjQ0CistLS0gYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oCisr KysgYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvci5oCitAQCAtMTAsOCArMTAsNiBA QAorCisgI2lmIGRlZmluZWQoVVNFX1NXUkVTQU1QTEUpCisgI2luY2x1ZGUgImF1ZGlvL2ZmbXBl Z19hdWRpb19wcm9jZXNzb3Jfc3dyZXNhbXBsZS5oIgorLSNlbGlmIGRlZmluZWQoVVNFX0FWUkVT QU1QTEUpCistI2luY2x1ZGUgImF1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBs ZS5oIgorICNlbHNlCisgI2Vycm9yICJubyBhdWRpbyBwcm9jZXNzaW5nIGxpYnJhcnkiCisgI2Vu ZGlmCitkaWZmIC0tZ2l0IGEvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNh bXBsZS5oIGIvc3JjL2F1ZGlvL2ZmbXBlZ19hdWRpb19wcm9jZXNzb3JfYXZyZXNhbXBsZS5oCitk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IGJkODVmOTIuLjAwMDAwMDAKKy0tLSBhL3Ny Yy9hdWRpby9mZm1wZWdfYXVkaW9fcHJvY2Vzc29yX2F2cmVzYW1wbGUuaAorKysrIC9kZXYvbnVs bAorQEAgLTEsNzIgKzAsMCBAQAorLS8vIENvcHlyaWdodCAoQykgMjAxNiAgTHVrYXMgTGFsaW5z a3kKKy0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UsIHNlZSB0aGUgTElDRU5T RSBmaWxlIGZvciBkZXRhaWxzLgorLQorLSNpZm5kZWYgQ0hST01BUFJJTlRfQVVESU9fRkZNUEVH X0FVRElPX1BST0NFU1NPUl9BVlJFU0FNUExFX0hfCistI2RlZmluZSBDSFJPTUFQUklOVF9BVURJ T19GRk1QRUdfQVVESU9fUFJPQ0VTU09SX0FWUkVTQU1QTEVfSF8KKy0KKy1leHRlcm4gIkMiIHsK Ky0jaW5jbHVkZSA8bGliYXZyZXNhbXBsZS9hdnJlc2FtcGxlLmg+CistfQorLQorLW5hbWVzcGFj ZSBjaHJvbWFwcmludCB7CistCistY2xhc3MgRkZtcGVnQXVkaW9Qcm9jZXNzb3IgeworLXB1Ymxp YzoKKy0JRkZtcGVnQXVkaW9Qcm9jZXNzb3IoKSB7CistCQltX3Jlc2FtcGxlX2N0eCA9IGF2cmVz YW1wbGVfYWxsb2NfY29udGV4dCgpOworLQl9CistCistCX5GRm1wZWdBdWRpb1Byb2Nlc3Nvcigp IHsKKy0JCWF2cmVzYW1wbGVfZnJlZSgmbV9yZXNhbXBsZV9jdHgpOworLQl9CistCistCXZvaWQg U2V0Q29tcGF0aWJsZU1vZGUoKSB7CistCQlhdl9vcHRfc2V0X2ludChtX3Jlc2FtcGxlX2N0eCwg ImZpbHRlcl9zaXplIiwgMTYsIDApOworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgs ICJwaGFzZV9zaGlmdCIsIDgsIDApOworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgs ICJsaW5lYXJfaW50ZXJwIiwgMSwgMCk7CistCQlhdl9vcHRfc2V0X2RvdWJsZShtX3Jlc2FtcGxl X2N0eCwgImN1dG9mZiIsIDAuOCwgMCk7CistCX0KKy0KKy0Jdm9pZCBTZXRJbnB1dENoYW5uZWxM YXlvdXQoaW50NjRfdCBjaGFubmVsX2xheW91dCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNh bXBsZV9jdHgsICJpbl9jaGFubmVsX2xheW91dCIsIGNoYW5uZWxfbGF5b3V0LCAwKTsKKy0JfQor LQorLQl2b2lkIFNldElucHV0U2FtcGxlRm9ybWF0KEFWU2FtcGxlRm9ybWF0IHNhbXBsZV9mb3Jt YXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVfY3R4LCAiaW5fc2FtcGxlX2ZtdCIs IHNhbXBsZV9mb3JtYXQsIDApOworLQl9CistCistCXZvaWQgU2V0SW5wdXRTYW1wbGVSYXRlKGlu dCBzYW1wbGVfcmF0ZSkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJpbl9z YW1wbGVfcmF0ZSIsIHNhbXBsZV9yYXRlLCAwKTsKKy0JfQorLQorLQl2b2lkIFNldE91dHB1dENo YW5uZWxMYXlvdXQoaW50NjRfdCBjaGFubmVsX2xheW91dCkgeworLQkJYXZfb3B0X3NldF9pbnQo bV9yZXNhbXBsZV9jdHgsICJvdXRfY2hhbm5lbF9sYXlvdXQiLCBjaGFubmVsX2xheW91dCwgMCk7 CistCX0KKy0KKy0Jdm9pZCBTZXRPdXRwdXRTYW1wbGVGb3JtYXQoQVZTYW1wbGVGb3JtYXQgc2Ft cGxlX2Zvcm1hdCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9yZXNhbXBsZV9jdHgsICJvdXRfc2Ft cGxlX2ZtdCIsIHNhbXBsZV9mb3JtYXQsIDApOworLQl9CistCistCXZvaWQgU2V0T3V0cHV0U2Ft cGxlUmF0ZShpbnQgc2FtcGxlX3JhdGUpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fcmVzYW1wbGVf Y3R4LCAib3V0X3NhbXBsZV9mbXQiLCBzYW1wbGVfcmF0ZSwgMCk7CistCX0KKy0KKy0JaW50IElu aXQoKSB7CistCQlyZXR1cm4gYXZyZXNhbXBsZV9vcGVuKG1fcmVzYW1wbGVfY3R4KTsKKy0JfQor LQorLQlpbnQgQ29udmVydCh1aW50OF90ICoqb3V0LCBpbnQgb3V0X2NvdW50LCBjb25zdCB1aW50 OF90ICoqaW4sIGludCBpbl9jb3VudCkgeworLQkJcmV0dXJuIGF2cmVzYW1wbGVfY29udmVydCht X3Jlc2FtcGxlX2N0eCwgb3V0LCAwLCBvdXRfY291bnQsICh1aW50OF90ICoqKSBpbiwgMCwgaW5f Y291bnQpOworLQl9CistCistCWludCBGbHVzaCh1aW50OF90ICoqb3V0LCBpbnQgb3V0X2NvdW50 KSB7CistCQlyZXR1cm4gYXZyZXNhbXBsZV9yZWFkKG1fcmVzYW1wbGVfY3R4LCBvdXQsIG91dF9j b3VudCk7CistCX0KKy0KKy1wcml2YXRlOgorLQlBVkF1ZGlvUmVzYW1wbGVDb250ZXh0ICptX3Jl c2FtcGxlX2N0eCA9IG51bGxwdHI7CistfTsKKy0KKy19OyAvLyBuYW1lc3BhY2UgY2hyb21hcHJp bnQKKy0KKy0jZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nl c3Nvcl9zd3Jlc2FtcGxlLmggYi9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jl c2FtcGxlLmgKK2luZGV4IGI4NjI2NmIuLmIxZDRiZWEgMTAwNjQ0CistLS0gYS9zcmMvYXVkaW8v ZmZtcGVnX2F1ZGlvX3Byb2Nlc3Nvcl9zd3Jlc2FtcGxlLmgKKysrKyBiL3NyYy9hdWRpby9mZm1w ZWdfYXVkaW9fcHJvY2Vzc29yX3N3cmVzYW1wbGUuaAorQEAgLTI4LDMwICsyOCwyOCBAQCBwdWJs aWM6CisgCQlhdl9vcHRfc2V0X2RvdWJsZShtX3N3cl9jdHgsICJjdXRvZmYiLCAwLjgsIDApOwor IAl9CisKKy0Jdm9pZCBTZXRJbnB1dENoYW5uZWxMYXlvdXQoaW50NjRfdCBjaGFubmVsX2xheW91 dCkgeworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaWNsIiwgY2hhbm5lbF9sYXlvdXQs IDApOworLQkJYXZfb3B0X3NldF9pbnQobV9zd3JfY3R4LCAiaWNoIiwgYXZfZ2V0X2NoYW5uZWxf bGF5b3V0X25iX2NoYW5uZWxzKGNoYW5uZWxfbGF5b3V0KSwgMCk7CisrCXZvaWQgU2V0SW5wdXRD aGFubmVsTGF5b3V0KEFWQ2hhbm5lbExheW91dCAqY2hhbm5lbF9sYXlvdXQpIHsKKysJCWF2X29w dF9zZXRfaW50KG1fc3dyX2N0eCwgImluX2NoYW5uZWxfbGF5b3V0IiwgY2hhbm5lbF9sYXlvdXQt PnUubWFzaywgMCk7CisgCX0KKworIAl2b2lkIFNldElucHV0U2FtcGxlRm9ybWF0KEFWU2FtcGxl Rm9ybWF0IHNhbXBsZV9mb3JtYXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgImlz ZiIsIHNhbXBsZV9mb3JtYXQsIDApOworKwkJYXZfb3B0X3NldF9zYW1wbGVfZm10KG1fc3dyX2N0 eCwgImluX3NhbXBsZV9mbXQiLCBzYW1wbGVfZm9ybWF0LCAwKTsKKyAJfQorCisgCXZvaWQgU2V0 SW5wdXRTYW1wbGVSYXRlKGludCBzYW1wbGVfcmF0ZSkgeworLQkJYXZfb3B0X3NldF9pbnQobV9z d3JfY3R4LCAiaXNyIiwgc2FtcGxlX3JhdGUsIDApOworKwkJYXZfb3B0X3NldF9pbnQobV9zd3Jf Y3R4LCAiaW5fc2FtcGxlX3JhdGUiLCBzYW1wbGVfcmF0ZSwgMCk7CisgCX0KKworLQl2b2lkIFNl dE91dHB1dENoYW5uZWxMYXlvdXQoaW50NjRfdCBjaGFubmVsX2xheW91dCkgeworLQkJYXZfb3B0 X3NldF9pbnQobV9zd3JfY3R4LCAib2NsIiwgY2hhbm5lbF9sYXlvdXQsIDApOworLQkJYXZfb3B0 X3NldF9pbnQobV9zd3JfY3R4LCAib2NoIiwgYXZfZ2V0X2NoYW5uZWxfbGF5b3V0X25iX2NoYW5u ZWxzKGNoYW5uZWxfbGF5b3V0KSwgMCk7CisrCXZvaWQgU2V0T3V0cHV0Q2hhbm5lbExheW91dChB VkNoYW5uZWxMYXlvdXQgKmNoYW5uZWxfbGF5b3V0KSB7CisrCQlhdl9vcHRfc2V0X2ludChtX3N3 cl9jdHgsICJvdXRfY2hhbm5lbF9sYXlvdXQiLCBjaGFubmVsX2xheW91dC0+dS5tYXNrLCAwKTsK KyAJfQorCisgCXZvaWQgU2V0T3V0cHV0U2FtcGxlRm9ybWF0KEFWU2FtcGxlRm9ybWF0IHNhbXBs ZV9mb3JtYXQpIHsKKy0JCWF2X29wdF9zZXRfaW50KG1fc3dyX2N0eCwgIm9zZiIsIHNhbXBsZV9m b3JtYXQsIDApOworKwkJYXZfb3B0X3NldF9zYW1wbGVfZm10KG1fc3dyX2N0eCwgIm91dF9zYW1w bGVfZm10Iiwgc2FtcGxlX2Zvcm1hdCwgMCk7CisgCX0KKworIAl2b2lkIFNldE91dHB1dFNhbXBs ZVJhdGUoaW50IHNhbXBsZV9yYXRlKSB7CistCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJv c3IiLCBzYW1wbGVfcmF0ZSwgMCk7CisrCQlhdl9vcHRfc2V0X2ludChtX3N3cl9jdHgsICJvdXRf c2FtcGxlX3JhdGUiLCBzYW1wbGVfcmF0ZSwgMCk7CisgCX0KKworIAlpbnQgSW5pdCgpIHsKK2Rp ZmYgLS1naXQgYS9zcmMvYXVkaW8vZmZtcGVnX2F1ZGlvX3JlYWRlci5oIGIvc3JjL2F1ZGlvL2Zm bXBlZ19hdWRpb19yZWFkZXIuaAoraW5kZXggNTU1MDE2NC4uMWM2YjM0NiAxMDA2NDQKKy0tLSBh L3NyYy9hdWRpby9mZm1wZWdfYXVkaW9fcmVhZGVyLmgKKysrKyBiL3NyYy9hdWRpby9mZm1wZWdf YXVkaW9fcmVhZGVyLmgKK0BAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKKyAJYm9vbCBSZWFkKGNv bnN0IGludDE2X3QgKipkYXRhLCBzaXplX3QgKnNpemUpOworCisgCWJvb2wgSXNPcGVuKCkgY29u c3QgeyByZXR1cm4gbV9vcGVuZWQ7IH0KKy0JYm9vbCBJc0ZpbmlzaGVkKCkgY29uc3QgeyByZXR1 cm4gbV9maW5pc2hlZCAmJiAhbV9nb3RfZnJhbWU7IH0KKysJYm9vbCBJc0ZpbmlzaGVkKCkgY29u c3QgeyByZXR1cm4gIW1faGFzX21vcmVfcGFja2V0cyAmJiAhbV9oYXNfbW9yZV9mcmFtZXM7IH0K KworIAlzdGQ6OnN0cmluZyBHZXRFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0KKyAJ aW50IEdldEVycm9yQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JfY29kZTsgfQorQEAgLTc0 LDIwICs3NCwxOSBAQCBwcml2YXRlOgorIAl1aW50OF90ICptX2NvbnZlcnRfYnVmZmVyWzFdID0g eyBudWxscHRyIH07CisgCWludCBtX2NvbnZlcnRfYnVmZmVyX25iX3NhbXBsZXMgPSAwOworCist CUFWSW5wdXRGb3JtYXQgKm1faW5wdXRfZm10ID0gbnVsbHB0cjsKKysJY29uc3QgQVZJbnB1dEZv cm1hdCAqbV9pbnB1dF9mbXQgPSBudWxscHRyOworIAlBVkRpY3Rpb25hcnkgKm1faW5wdXRfb3B0 cyA9IG51bGxwdHI7CisKKyAJQVZGb3JtYXRDb250ZXh0ICptX2Zvcm1hdF9jdHggPSBudWxscHRy OworIAlBVkNvZGVjQ29udGV4dCAqbV9jb2RlY19jdHggPSBudWxscHRyOworLQlBVkZyYW1lICpt X2ZyYW1lID0gbnVsbHB0cjsKKyAJaW50IG1fc3RyZWFtX2luZGV4ID0gLTE7CisgCXN0ZDo6c3Ry aW5nIG1fZXJyb3I7CisgCWludCBtX2Vycm9yX2NvZGUgPSAwOworLQlib29sIG1fZmluaXNoZWQg PSBmYWxzZTsKKyAJYm9vbCBtX29wZW5lZCA9IGZhbHNlOworLQlpbnQgbV9nb3RfZnJhbWUgPSAw OworLQlBVlBhY2tldCBtX3BhY2tldDsKKy0JQVZQYWNrZXQgbV9wYWNrZXQwOworKwlib29sIG1f aGFzX21vcmVfcGFja2V0cyA9IHRydWU7CisrCWJvb2wgbV9oYXNfbW9yZV9mcmFtZXMgPSB0cnVl OworKwlBVlBhY2tldCAqbV9wYWNrZXQgPSBudWxscHRyOworKwlBVkZyYW1lICptX2ZyYW1lID0g bnVsbHB0cjsKKworIAlpbnQgbV9vdXRwdXRfc2FtcGxlX3JhdGUgPSAwOworIAlpbnQgbV9vdXRw dXRfY2hhbm5lbHMgPSAwOworQEAgLTk4LDE5ICs5NywxMiBAQCBwcml2YXRlOgorCisgaW5saW5l IEZGbXBlZ0F1ZGlvUmVhZGVyOjpGRm1wZWdBdWRpb1JlYWRlcigpIHsKKyAJYXZfbG9nX3NldF9s ZXZlbChBVl9MT0dfUVVJRVQpOworLQorLQlhdl9pbml0X3BhY2tldCgmbV9wYWNrZXQpOworLQlt X3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0JbV9wYWNrZXQuc2l6ZSA9IDA7CistCistCW1fcGFj a2V0MCA9IG1fcGFja2V0OworIH0KKworIGlubGluZSBGRm1wZWdBdWRpb1JlYWRlcjo6fkZGbXBl Z0F1ZGlvUmVhZGVyKCkgeworIAlDbG9zZSgpOworIAlhdl9kaWN0X2ZyZWUoJm1faW5wdXRfb3B0 cyk7CisgCWF2X2ZyZWVwKCZtX2NvbnZlcnRfYnVmZmVyWzBdKTsKKy0JYXZfcGFja2V0X3VucmVm KCZtX3BhY2tldDApOworIH0KKworIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpTZXRJ bnB1dEZvcm1hdChjb25zdCBjaGFyICpuYW1lKSB7CitAQCAtMTM1LDExICsxMjcsMTAgQEAgaW5s aW5lIGJvb2wgRkZtcGVnQXVkaW9SZWFkZXI6Ok9wZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmZpbGVf bmFtZSkgeworCisgCUNsb3NlKCk7CisKKy0gICAgYXZfaW5pdF9wYWNrZXQoJm1fcGFja2V0KTsK Ky0JbV9wYWNrZXQuZGF0YSA9IG51bGxwdHI7CistCW1fcGFja2V0LnNpemUgPSAwOworLQorLQlt X3BhY2tldDAgPSBtX3BhY2tldDsKKysJbV9wYWNrZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKysJ aWYgKCFtX3BhY2tldCkgeworKwkJcmV0dXJuIGZhbHNlOworKwl9CisKKyAJcmV0ID0gYXZmb3Jt YXRfb3Blbl9pbnB1dCgmbV9mb3JtYXRfY3R4LCBmaWxlX25hbWUuY19zdHIoKSwgbV9pbnB1dF9m bXQsICZtX2lucHV0X29wdHMpOworIAlpZiAocmV0IDwgMCkgeworQEAgLTE1MywyNiArMTQ0LDMx IEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0ZDo6c3RyaW5n ICZmaWxlX25hbWUpIHsKKyAJCXJldHVybiBmYWxzZTsKKyAJfQorCistCUFWQ29kZWMgKmNvZGVj OworKwljb25zdCBBVkNvZGVjICpjb2RlYzsKKyAJcmV0ID0gYXZfZmluZF9iZXN0X3N0cmVhbSht X2Zvcm1hdF9jdHgsIEFWTUVESUFfVFlQRV9BVURJTywgLTEsIC0xLCAmY29kZWMsIDApOworIAlp ZiAocmV0IDwgMCkgeworIAkJU2V0RXJyb3IoIkNvdWxkIG5vdCBmaW5kIGFueSBhdWRpbyBzdHJl YW0gaW4gdGhlIGZpbGUiLCByZXQpOworIAkJcmV0dXJuIGZhbHNlOworIAl9CisgCW1fc3RyZWFt X2luZGV4ID0gcmV0OworKwlhdXRvIHN0cmVhbSA9IG1fZm9ybWF0X2N0eC0+c3RyZWFtc1ttX3N0 cmVhbV9pbmRleF07CisKKy0JbV9jb2RlY19jdHggPSBtX2Zvcm1hdF9jdHgtPnN0cmVhbXNbbV9z dHJlYW1faW5kZXhdLT5jb2RlYzsKKysJbV9jb2RlY19jdHggPSBhdmNvZGVjX2FsbG9jX2NvbnRl eHQzKGNvZGVjKTsKKyAJbV9jb2RlY19jdHgtPnJlcXVlc3Rfc2FtcGxlX2ZtdCA9IEFWX1NBTVBM RV9GTVRfUzE2OworCisrCXJldCA9IGF2Y29kZWNfcGFyYW1ldGVyc190b19jb250ZXh0KG1fY29k ZWNfY3R4LCBzdHJlYW0tPmNvZGVjcGFyKTsKKysJaWYgKHJldCA8IDApIHsKKysJCVNldEVycm9y KCJDb3VsZCBub3QgY29weSB0aGUgc3RyZWFtIHBhcmFtZXRlcnMiLCByZXQpOworKwkJcmV0dXJu IGZhbHNlOworKwl9CisrCisgCXJldCA9IGF2Y29kZWNfb3BlbjIobV9jb2RlY19jdHgsIGNvZGVj LCBudWxscHRyKTsKKyAJaWYgKHJldCA8IDApIHsKKyAJCVNldEVycm9yKCJDb3VsZCBub3Qgb3Bl biB0aGUgY29kZWMiLCByZXQpOworIAkJcmV0dXJuIGZhbHNlOworIAl9CisKKy0JaWYgKCFtX2Nv ZGVjX2N0eC0+Y2hhbm5lbF9sYXlvdXQpIHsKKy0JCW1fY29kZWNfY3R4LT5jaGFubmVsX2xheW91 dCA9IGF2X2dldF9kZWZhdWx0X2NoYW5uZWxfbGF5b3V0KG1fY29kZWNfY3R4LT5jaGFubmVscyk7 CistCX0KKysJYXZfZHVtcF9mb3JtYXQobV9mb3JtYXRfY3R4LCAwLCAiZm9vIiwgMCk7CisKKyAJ bV9mcmFtZSA9IGF2X2ZyYW1lX2FsbG9jKCk7CisgCWlmICghbV9mcmFtZSkgeworQEAgLTE4Mywx OSArMTc5LDIzIEBAIGlubGluZSBib29sIEZGbXBlZ0F1ZGlvUmVhZGVyOjpPcGVuKGNvbnN0IHN0 ZDo6c3RyaW5nICZmaWxlX25hbWUpIHsKKyAJCW1fb3V0cHV0X3NhbXBsZV9yYXRlID0gbV9jb2Rl Y19jdHgtPnNhbXBsZV9yYXRlOworIAl9CisKKy0JaWYgKCFtX291dHB1dF9jaGFubmVscykgewor LQkJbV9vdXRwdXRfY2hhbm5lbHMgPSBtX2NvZGVjX2N0eC0+Y2hhbm5lbHM7CisrCUFWQ2hhbm5l bExheW91dCBvdXRwdXRfY2hhbm5lbF9sYXlvdXQ7CisrCWlmIChtX291dHB1dF9jaGFubmVscykg eworKwkJYXZfY2hhbm5lbF9sYXlvdXRfZGVmYXVsdCgmb3V0cHV0X2NoYW5uZWxfbGF5b3V0LCBt X291dHB1dF9jaGFubmVscyk7CisrCX0gZWxzZSB7CisrCQltX291dHB1dF9jaGFubmVscyA9IG1f Y29kZWNfY3R4LT5jaF9sYXlvdXQubmJfY2hhbm5lbHM7CisrCQlhdl9jaGFubmVsX2xheW91dF9k ZWZhdWx0KCZvdXRwdXRfY2hhbm5lbF9sYXlvdXQsIG1fb3V0cHV0X2NoYW5uZWxzKTsKKyAJfQor CistCWlmIChtX2NvZGVjX2N0eC0+c2FtcGxlX2ZtdCAhPSBBVl9TQU1QTEVfRk1UX1MxNiB8fCBt X2NvZGVjX2N0eC0+Y2hhbm5lbHMgIT0gbV9vdXRwdXRfY2hhbm5lbHMgfHwgbV9jb2RlY19jdHgt PnNhbXBsZV9yYXRlICE9IG1fb3V0cHV0X3NhbXBsZV9yYXRlKSB7CisrCWlmIChtX2NvZGVjX2N0 eC0+c2FtcGxlX2ZtdCAhPSBBVl9TQU1QTEVfRk1UX1MxNiB8fCBtX2NvZGVjX2N0eC0+Y2hfbGF5 b3V0Lm5iX2NoYW5uZWxzICE9IG1fb3V0cHV0X2NoYW5uZWxzIHx8IG1fY29kZWNfY3R4LT5zYW1w bGVfcmF0ZSAhPSBtX291dHB1dF9zYW1wbGVfcmF0ZSkgeworIAkJbV9jb252ZXJ0ZXIucmVzZXQo bmV3IEZGbXBlZ0F1ZGlvUHJvY2Vzc29yKCkpOworIAkJbV9jb252ZXJ0ZXItPlNldENvbXBhdGli bGVNb2RlKCk7CisgCQltX2NvbnZlcnRlci0+U2V0SW5wdXRTYW1wbGVGb3JtYXQobV9jb2RlY19j dHgtPnNhbXBsZV9mbXQpOworIAkJbV9jb252ZXJ0ZXItPlNldElucHV0U2FtcGxlUmF0ZShtX2Nv ZGVjX2N0eC0+c2FtcGxlX3JhdGUpOworLQkJbV9jb252ZXJ0ZXItPlNldElucHV0Q2hhbm5lbExh eW91dChtX2NvZGVjX2N0eC0+Y2hhbm5lbF9sYXlvdXQpOworKwkJbV9jb252ZXJ0ZXItPlNldElu cHV0Q2hhbm5lbExheW91dCgmKG1fY29kZWNfY3R4LT5jaF9sYXlvdXQpKTsKKyAJCW1fY29udmVy dGVyLT5TZXRPdXRwdXRTYW1wbGVGb3JtYXQoQVZfU0FNUExFX0ZNVF9TMTYpOworIAkJbV9jb252 ZXJ0ZXItPlNldE91dHB1dFNhbXBsZVJhdGUobV9vdXRwdXRfc2FtcGxlX3JhdGUpOworLQkJbV9j b252ZXJ0ZXItPlNldE91dHB1dENoYW5uZWxMYXlvdXQoYXZfZ2V0X2RlZmF1bHRfY2hhbm5lbF9s YXlvdXQobV9vdXRwdXRfY2hhbm5lbHMpKTsKKysJCW1fY29udmVydGVyLT5TZXRPdXRwdXRDaGFu bmVsTGF5b3V0KCZvdXRwdXRfY2hhbm5lbF9sYXlvdXQpOworIAkJYXV0byByZXQgPSBtX2NvbnZl cnRlci0+SW5pdCgpOworIAkJaWYgKHJldCAhPSAwKSB7CisgCQkJU2V0RXJyb3IoIkNvdWxkIG5v dCBjcmVhdGUgYW4gYXVkaW8gY29udmVydGVyIGluc3RhbmNlIiwgcmV0KTsKK0BAIC0yMDMsMTAg KzIwMywxMSBAQCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihjb25zdCBzdGQ6 OnN0cmluZyAmZmlsZV9uYW1lKSB7CisgCQl9CisgCX0KKworKwlhdl9jaGFubmVsX2xheW91dF91 bmluaXQoJm91dHB1dF9jaGFubmVsX2xheW91dCk7CisrCisgCW1fb3BlbmVkID0gdHJ1ZTsKKy0J bV9maW5pc2hlZCA9IGZhbHNlOworLQltX2dvdF9mcmFtZSA9IDA7CistCW1fbmJfcGFja2V0cyA9 IDA7CisrCW1faGFzX21vcmVfcGFja2V0cyA9IHRydWU7CisrCW1faGFzX21vcmVfZnJhbWVzID0g dHJ1ZTsKKyAJbV9kZWNvZGVfZXJyb3IgPSAwOworCisgCXJldHVybiB0cnVlOworQEAgLTIxNCw2 ICsyMTUsNyBAQCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6T3Blbihjb25zdCBzdGQ6 OnN0cmluZyAmZmlsZV9uYW1lKSB7CisKKyBpbmxpbmUgdm9pZCBGRm1wZWdBdWRpb1JlYWRlcjo6 Q2xvc2UoKSB7CisgCWF2X2ZyYW1lX2ZyZWUoJm1fZnJhbWUpOworKwlhdl9wYWNrZXRfZnJlZSgm bV9wYWNrZXQpOworCisgCW1fc3RyZWFtX2luZGV4ID0gLTE7CisKK0BAIC0yNTIsOTEgKzI1NCw5 OCBAQCBpbmxpbmUgYm9vbCBGRm1wZWdBdWRpb1JlYWRlcjo6UmVhZChjb25zdCBpbnQxNl90ICoq ZGF0YSwgc2l6ZV90ICpzaXplKSB7CisgCQlyZXR1cm4gZmFsc2U7CisgCX0KKworKwkqZGF0YSA9 IG51bGxwdHI7CisrCSpzaXplID0gMDsKKysKKyAJaW50IHJldDsKKysJYm9vbCBuZWVkc19wYWNr ZXQgPSBmYWxzZTsKKyAJd2hpbGUgKHRydWUpIHsKKy0JCXdoaWxlIChtX3BhY2tldC5zaXplIDw9 IDApIHsKKy0JCQlhdl9wYWNrZXRfdW5yZWYoJm1fcGFja2V0MCk7CistCQkJYXZfaW5pdF9wYWNr ZXQoJm1fcGFja2V0KTsKKy0JCQltX3BhY2tldC5kYXRhID0gbnVsbHB0cjsKKy0JCQltX3BhY2tl dC5zaXplID0gMDsKKy0JCQlyZXQgPSBhdl9yZWFkX2ZyYW1lKG1fZm9ybWF0X2N0eCwgJm1fcGFj a2V0KTsKKysJCXdoaWxlIChuZWVkc19wYWNrZXQgJiYgbV9wYWNrZXQtPnNpemUgPT0gMCkgewor KwkJCXJldCA9IGF2X3JlYWRfZnJhbWUobV9mb3JtYXRfY3R4LCBtX3BhY2tldCk7CisgCQkJaWYg KHJldCA8IDApIHsKKyAJCQkJaWYgKHJldCA9PSBBVkVSUk9SX0VPRikgeworLQkJCQkJbV9maW5p c2hlZCA9IHRydWU7CisrCQkJCQluZWVkc19wYWNrZXQgPSBmYWxzZTsKKysJCQkJCW1faGFzX21v cmVfcGFja2V0cyA9IGZhbHNlOworIAkJCQkJYnJlYWs7CistCQkJCX0gZWxzZSB7CisrCQkJCX0K KysJCQkJU2V0RXJyb3IoIkVycm9yIHJlYWRpbmcgZnJvbSB0aGUgYXVkaW8gc291cmNlIiwgcmV0 KTsKKysJCQkJcmV0dXJuIGZhbHNlOworKwkJCX0KKysJCQlpZiAobV9wYWNrZXQtPnN0cmVhbV9p bmRleCA9PSBtX3N0cmVhbV9pbmRleCkgeworKwkJCQluZWVkc19wYWNrZXQgPSBmYWxzZTsKKysJ CQl9IGVsc2UgeworKwkJCQlhdl9wYWNrZXRfdW5yZWYobV9wYWNrZXQpOworKwkJCX0KKysJCX0K KysKKysJCWlmIChtX3BhY2tldC0+c2l6ZSAhPSAwKSB7CisrCQkJcmV0ID0gYXZjb2RlY19zZW5k X3BhY2tldChtX2NvZGVjX2N0eCwgbV9wYWNrZXQpOworKwkJCWlmIChyZXQgPCAwKSB7CisrCQkJ CWlmIChyZXQgIT0gQVZFUlJPUihFQUdBSU4pKSB7CisgCQkJCQlTZXRFcnJvcigiRXJyb3IgcmVh ZGluZyBmcm9tIHRoZSBhdWRpbyBzb3VyY2UiLCByZXQpOworIAkJCQkJcmV0dXJuIGZhbHNlOwor IAkJCQl9CistCQkJfQorLQkJCW1fcGFja2V0MCA9IG1fcGFja2V0OworLQkJCWlmIChtX3BhY2tl dC5zdHJlYW1faW5kZXggIT0gbV9zdHJlYW1faW5kZXgpIHsKKy0JCQkJbV9wYWNrZXQuZGF0YSA9 IG51bGxwdHI7CistCQkJCW1fcGFja2V0LnNpemUgPSAwOworIAkJCX0gZWxzZSB7CistCQkJCW1f bmJfcGFja2V0cysrOworKwkJCQlhdl9wYWNrZXRfdW5yZWYobV9wYWNrZXQpOworIAkJCX0KKyAJ CX0KKworLQkJcmV0ID0gYXZjb2RlY19kZWNvZGVfYXVkaW80KG1fY29kZWNfY3R4LCBtX2ZyYW1l LCAmbV9nb3RfZnJhbWUsICZtX3BhY2tldCk7CisrCQlyZXQgPSBhdmNvZGVjX3JlY2VpdmVfZnJh bWUobV9jb2RlY19jdHgsIG1fZnJhbWUpOworIAkJaWYgKHJldCA8IDApIHsKKy0JCQlpZiAobV9k ZWNvZGVfZXJyb3IpIHsKKy0JCQkJU2V0RXJyb3IoIkVycm9yIGRlY29kaW5nIGF1ZGlvIGZyYW1l IiwgbV9kZWNvZGVfZXJyb3IpOworLQkJCQlyZXR1cm4gZmFsc2U7CisrCQkJaWYgKHJldCA9PSBB VkVSUk9SX0VPRikgeworKwkJCQltX2hhc19tb3JlX2ZyYW1lcyA9IGZhbHNlOworKwkJCX0gZWxz ZSBpZiAocmV0ID09IEFWRVJST1IoRUFHQUlOKSkgeworKwkJCQlpZiAobV9oYXNfbW9yZV9wYWNr ZXRzKSB7CisrCQkJCQluZWVkc19wYWNrZXQgPSB0cnVlOworKwkJCQkJY29udGludWU7CisrCQkJ CX0gZWxzZSB7CisrCQkJCQltX2hhc19tb3JlX2ZyYW1lcyA9IGZhbHNlOworKwkJCQl9CisgCQkJ fQorLQkJCW1fZGVjb2RlX2Vycm9yID0gcmV0OworLQkJCW1fcGFja2V0LmRhdGEgPSBudWxscHRy OworLQkJCW1fcGFja2V0LnNpemUgPSAwOworLQkJCWNvbnRpbnVlOworKwkJCVNldEVycm9yKCJF cnJvciBkZWNvZGluZyB0aGUgYXVkaW8gc291cmNlIiwgcmV0KTsKKysJCQlyZXR1cm4gZmFsc2U7 CisgCQl9CisKKy0JCWJyZWFrOworLQl9CistCistCW1fZGVjb2RlX2Vycm9yID0gMDsKKy0KKy0J Y29uc3QgaW50IGRlY29kZWQgPSBzdGQ6Om1pbihyZXQsIG1fcGFja2V0LnNpemUpOworLQltX3Bh Y2tldC5kYXRhICs9IGRlY29kZWQ7CistCW1fcGFja2V0LnNpemUgLT0gZGVjb2RlZDsKKy0KKy0J aWYgKG1fZ290X2ZyYW1lKSB7CistCQlpZiAobV9jb252ZXJ0ZXIpIHsKKy0JCQlpZiAobV9mcmFt ZS0+bmJfc2FtcGxlcyA+IG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcykgeworLQkJCQlpbnQg bGluc2l6ZTsKKy0JCQkJYXZfZnJlZXAoJm1fY29udmVydF9idWZmZXJbMF0pOworLQkJCQltX2Nv bnZlcnRfYnVmZmVyX25iX3NhbXBsZXMgPSBzdGQ6Om1heCgxMDI0ICogOCwgbV9mcmFtZS0+bmJf c2FtcGxlcyk7CistCQkJCXJldCA9IGF2X3NhbXBsZXNfYWxsb2MobV9jb252ZXJ0X2J1ZmZlciwg JmxpbnNpemUsIG1fY29kZWNfY3R4LT5jaGFubmVscywgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1w bGVzLCBBVl9TQU1QTEVfRk1UX1MxNiwgMSk7CistCQkJCWlmIChyZXQgPCAwKSB7CistCQkJCQlT ZXRFcnJvcigiQ291bGRuJ3QgYWxsb2NhdGUgYXVkaW8gY29udmVydGVyIGJ1ZmZlciIsIHJldCk7 CisrCQlpZiAobV9mcmFtZS0+bmJfc2FtcGxlcyA+IDApIHsKKysJCQlpZiAobV9jb252ZXJ0ZXIp IHsKKysJCQkJaWYgKG1fZnJhbWUtPm5iX3NhbXBsZXMgPiBtX2NvbnZlcnRfYnVmZmVyX25iX3Nh bXBsZXMpIHsKKysJCQkJCWludCBsaW5zaXplOworKwkJCQkJYXZfZnJlZXAoJm1fY29udmVydF9i dWZmZXJbMF0pOworKwkJCQkJbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzID0gc3RkOjptYXgo MTAyNCAqIDgsIG1fZnJhbWUtPm5iX3NhbXBsZXMpOworKwkJCQkJcmV0ID0gYXZfc2FtcGxlc19h bGxvYyhtX2NvbnZlcnRfYnVmZmVyLCAmbGluc2l6ZSwgbV9jb2RlY19jdHgtPmNoX2xheW91dC5u Yl9jaGFubmVscywgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzLCBBVl9TQU1QTEVfRk1UX1Mx NiwgMSk7CisrCQkJCQlpZiAocmV0IDwgMCkgeworKwkJCQkJCVNldEVycm9yKCJDb3VsZG4ndCBh bGxvY2F0ZSBhdWRpbyBjb252ZXJ0ZXIgYnVmZmVyIiwgcmV0KTsKKysJCQkJCQlyZXR1cm4gZmFs c2U7CisrCQkJCQl9CisrCQkJCX0KKysJCQkJYXV0byBuYl9zYW1wbGVzID0gbV9jb252ZXJ0ZXIt PkNvbnZlcnQobV9jb252ZXJ0X2J1ZmZlciwgbV9jb252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzLCAo Y29uc3QgdWludDhfdCAqKikgbV9mcmFtZS0+ZGF0YSwgbV9mcmFtZS0+bmJfc2FtcGxlcyk7Cisr CQkJCWlmIChuYl9zYW1wbGVzIDwgMCkgeworKwkJCQkJU2V0RXJyb3IoIkNvdWxkbid0IGNvbnZl cnQgYXVkaW8iLCByZXQpOworIAkJCQkJcmV0dXJuIGZhbHNlOworIAkJCQl9CistCQkJfQorLQkJ CWF1dG8gbmJfc2FtcGxlcyA9IG1fY29udmVydGVyLT5Db252ZXJ0KG1fY29udmVydF9idWZmZXIs IG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcywgKGNvbnN0IHVpbnQ4X3QgKiopIG1fZnJhbWUt PmRhdGEsIG1fZnJhbWUtPm5iX3NhbXBsZXMpOworLQkJCWlmIChuYl9zYW1wbGVzIDwgMCkgewor LQkJCQlTZXRFcnJvcigiQ291bGRuJ3QgY29udmVydCBhdWRpbyIsIHJldCk7CistCQkJCXJldHVy biBmYWxzZTsKKy0JCQl9CistCQkJKmRhdGEgPSAoY29uc3QgaW50MTZfdCAqKSBtX2NvbnZlcnRf YnVmZmVyWzBdOworLQkJCSpzaXplID0gbmJfc2FtcGxlczsKKy0JCX0gZWxzZSB7CistCQkJKmRh dGEgPSAoY29uc3QgaW50MTZfdCAqKSBtX2ZyYW1lLT5kYXRhWzBdOworLQkJCSpzaXplID0gbV9m cmFtZS0+bmJfc2FtcGxlczsKKy0JCX0KKy0JfSBlbHNlIHsKKy0JCWlmIChtX2ZpbmlzaGVkICYm IG1fY29udmVydGVyKSB7CistCQkJYXV0byBuYl9zYW1wbGVzID0gbV9jb252ZXJ0ZXItPkZsdXNo KG1fY29udmVydF9idWZmZXIsIG1fY29udmVydF9idWZmZXJfbmJfc2FtcGxlcyk7CistCQkJaWYg KG5iX3NhbXBsZXMgPCAwKSB7CistCQkJCVNldEVycm9yKCJDb3VsZG4ndCBjb252ZXJ0IGF1ZGlv IiwgcmV0KTsKKy0JCQkJcmV0dXJuIGZhbHNlOworLQkJCX0gZWxzZSBpZiAobmJfc2FtcGxlcyA+ IDApIHsKKy0JCQkJbV9nb3RfZnJhbWUgPSAxOworIAkJCQkqZGF0YSA9IChjb25zdCBpbnQxNl90 ICopIG1fY29udmVydF9idWZmZXJbMF07CisgCQkJCSpzaXplID0gbmJfc2FtcGxlczsKKysJCQl9 IGVsc2UgeworKwkJCQkqZGF0YSA9IChjb25zdCBpbnQxNl90ICopIG1fZnJhbWUtPmRhdGFbMF07 CisrCQkJCSpzaXplID0gbV9mcmFtZS0+bmJfc2FtcGxlczsKKysJCQl9CisrCQl9IGVsc2Ugewor KwkJCWlmIChtX2NvbnZlcnRlcikgeworKwkJCQlpZiAoSXNGaW5pc2hlZCgpKSB7CisrCQkJCQlh dXRvIG5iX3NhbXBsZXMgPSBtX2NvbnZlcnRlci0+Rmx1c2gobV9jb252ZXJ0X2J1ZmZlciwgbV9j b252ZXJ0X2J1ZmZlcl9uYl9zYW1wbGVzKTsKKysJCQkJCWlmIChuYl9zYW1wbGVzIDwgMCkgewor KwkJCQkJCVNldEVycm9yKCJDb3VsZG4ndCBjb252ZXJ0IGF1ZGlvIiwgcmV0KTsKKysJCQkJCQly ZXR1cm4gZmFsc2U7CisrCQkJCQl9IGVsc2UgaWYgKG5iX3NhbXBsZXMgPiAwKSB7CisrCQkJCQkJ KmRhdGEgPSAoY29uc3QgaW50MTZfdCAqKSBtX2NvbnZlcnRfYnVmZmVyWzBdOworKwkJCQkJCSpz aXplID0gbmJfc2FtcGxlczsKKysJCQkJCX0KKysJCQkJfQorIAkJCX0KKyAJCX0KKy0JfQorCist CXJldHVybiB0cnVlOworKwkJcmV0dXJuIHRydWU7CisrCX0KKyB9CisKKyBpbmxpbmUgdm9pZCBG Rm1wZWdBdWRpb1JlYWRlcjo6U2V0RXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSwgaW50IGVycm51 bSkgeworZGlmZiAtLWdpdCBhL3Rlc3RzL0NNYWtlTGlzdHMudHh0IGIvdGVzdHMvQ01ha2VMaXN0 cy50eHQKK2luZGV4IGEyYjUxN2IuLjEyM2U2NDMgMTAwNjQ0CistLS0gYS90ZXN0cy9DTWFrZUxp c3RzLnR4dAorKysrIGIvdGVzdHMvQ01ha2VMaXN0cy50eHQKK0BAIC0zOCw2ICszOCwxMiBAQCBz ZXQoU1JDUworCisgaWYoQlVJTERfVE9PTFMpCisgCXNldChTUkNTICR7U1JDU30gLi4vc3JjL2F1 ZGlvL2ZmbXBlZ19hdWRpb19yZWFkZXJfdGVzdC5jcHApCisrICAgIGluY2x1ZGVfZGlyZWN0b3Jp ZXMoCisrICAgICAgICAke0ZGTVBFR19MSUJBVkZPUk1BVF9JTkNMVURFX0RJUlN9CisrICAgICAg ICAke0ZGTVBFR19MSUJBVkNPREVDX0lOQ0xVREVfRElSU30KKysgICAgICAgICR7RkZNUEVHX0xJ QkFWVVRJTF9JTkNMVURFX0RJUlN9CisrICAgICAgICAke0FVRElPX1BST0NFU1NPUl9JTkNMVURF X0RJUlN9CisrICAgICkKKyAJbGlua19saWJyYXJpZXMoZnBjYWxjX2xpYnMpCisgZW5kaWYoKQor CistLSAKKzIuMzguMQorCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxh dGUgYi9zcmNwa2dzL2Nocm9tYXByaW50L3RlbXBsYXRlCmluZGV4IDdlZjc4Mzg5NDlmM2EuLjFm N2JiYzcwYTIyYzggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2hyb21hcHJpbnQvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9jaHJvbWFwcmludC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxh dGUgZmlsZSBmb3IgJ2Nocm9tYXByaW50JwogcGtnbmFtZT1jaHJvbWFwcmludAogdmVyc2lvbj0x LjUuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3Vy ZV9hcmdzPSItREJVSUxEX1RPT0xTPU9OIgogbWFrZV9jaGVja190YXJnZXQ9ImNoZWNrIgoKRnJv bSBhNjk4ODc4MTdiYTA2NWE4YjQ0ODJlODZjYTJmNThjNDhkYzU0MTNiIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMjYvMTE1XSBjaHJvbWl1 bTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS0xMTkt ZmZtcGVnLTQuNC5wYXRjaCAgICAgfCAyMCAtLS0tLS0tLQogc3JjcGtncy9jaHJvbWl1bS9wYXRj aGVzL2ZmbXBlZzUucGF0Y2ggICAgICAgIHwgNDcgKysrKysrKysrKysrKysrKysrKwogc3JjcGtn cy9jaHJvbWl1bS90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIDMgZmlsZXMg Y2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAx MDA2NDQgc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2Nocm9taXVtLTExOS1mZm1wZWctNC40LnBh dGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUu cGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvY2hyb21pdW0tMTE5 LWZmbXBlZy00LjQucGF0Y2ggYi9zcmNwa2dzL2Nocm9taXVtL3BhdGNoZXMvY2hyb21pdW0tMTE5 LWZmbXBlZy00LjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0ZDA0YjE2 NmJhMzcuLjAwMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2Nocm9t aXVtLTExOS1mZm1wZWctNC40LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAot LS0tIGEvbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYy5vcmlnCi0rKysgYi9tZWRpYS9m aWx0ZXJzL2ZmbXBlZ19kZW11eGVyLmNjCi1AQCAtMzkwLDcgKzM5MCw3IEBACi0gCi0gICBzY29w ZWRfcmVmcHRyPERlY29kZXJCdWZmZXI+IGJ1ZmZlcjsKLSAKLS0gICAgc2l6ZV90IHNpZGVfZGF0 YV9zaXplID0gMDsKLSsgICAgaW50IHNpZGVfZGF0YV9zaXplID0gMDsKLSAgICAgdWludDhfdCog c2lkZV9kYXRhID0gYXZfcGFja2V0X2dldF9zaWRlX2RhdGEoCi0gICAgICAgICBwYWNrZXQuZ2V0 KCksIEFWX1BLVF9EQVRBX01BVFJPU0tBX0JMT0NLQURESVRJT05BTCwgJnNpZGVfZGF0YV9zaXpl KTsKLSAKLUBAIC00NTMsNyArNDUzLDcgQEAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwYWNrZXQtPnNpemUgLSBkYXRhX29mZnNldCk7Ci0gICAgIH0KLSAKLS0gICAg c2l6ZV90IHNraXBfc2FtcGxlc19zaXplID0gMDsKLSsgICAgaW50IHNraXBfc2FtcGxlc19zaXpl ID0gMDsKLSAgICAgY29uc3QgdWludDMyX3QqIHNraXBfc2FtcGxlc19wdHIgPQotICAgICAgICAg cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGF2X3BhY2tldF9nZXRfc2lkZV9kYXRh KAotICAgICAgICAgICAgIHBhY2tldC5nZXQoKSwgQVZfUEtUX0RBVEFfU0tJUF9TQU1QTEVTLCAm c2tpcF9zYW1wbGVzX3NpemUpKTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hl cy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9jaHJvbWl1bS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMjRlMmRhMzhlMzRjYQot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvY2hyb21pdW0vcGF0Y2hlcy9mZm1wZWc1LnBhdGNo CkBAIC0wLDAgKzEsNDcgQEAKKy0tLSBhL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2RlbXV4ZXIuY2MJ MjAyMy0wMS0yMyAxNzozMzo1Ny4zNjYyMTM4MDUgKzAyMDAKKysrKyBiL21lZGlhL2ZpbHRlcnMv ZmZtcGVnX2RlbXV4ZXIuY2MJMjAyMy0wMS0yMyAxNzo0MzowOS4yODM0MzY5ODMgKzAyMDAKK0BA IC05MiwyNCArOTIsMTIgQEAKKyAKKyBzdGF0aWMgYmFzZTo6VGltZURlbHRhIEV4dHJhY3RTdGFy dFRpbWUoQVZTdHJlYW0qIHN0cmVhbSkgeworICAgLy8gVGhlIGRlZmF1bHQgc3RhcnQgdGltZSBp cyB6ZXJvLgorLSAgYmFzZTo6VGltZURlbHRhIHN0YXJ0X3RpbWU7CisrICBiYXNlOjpUaW1lRGVs dGEgc3RhcnRfdGltZSA9IGtOb1RpbWVzdGFtcDsKKyAKKyAgIC8vIEZpcnN0IHRyeSB0byB1c2Ug IHRoZSB8c3RhcnRfdGltZXwgdmFsdWUgYXMgaXMuCistICBpZiAoc3RyZWFtLT5zdGFydF90aW1l ICE9IGtOb0ZGbXBlZ1RpbWVzdGFtcCkKKysgIGlmIChzdHJlYW0tPnN0YXJ0X3RpbWUgIT0ga05v RkZtcGVnVGltZXN0YW1wKSAvLyBBVl9OT1BUU19WQUxVRQorICAgICBzdGFydF90aW1lID0gQ29u dmVydEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgc3RyZWFtLT5zdGFydF90aW1lKTsK KyAKKy0gIC8vIE5leHQgdHJ5IHRvIHVzZSB0aGUgZmlyc3QgRFRTIHZhbHVlLCBmb3IgY29kZWNz IHdoZXJlIHdlIGtub3cgUFRTID09IERUUworLSAgLy8gKGV4Y2x1ZGVzIGFsbCBIMjZ4IGNvZGVj cykuIFRoZSBzdGFydCB0aW1lIG11c3QgYmUgcmV0dXJuZWQgaW4gUFRTLgorLSAgaWYgKGF2X3N0 cmVhbV9nZXRfZmlyc3RfZHRzKHN0cmVhbSkgIT0ga05vRkZtcGVnVGltZXN0YW1wICYmCistICAg ICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNfSURfSEVWQyAmJgorLSAg ICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVDX0lEX0gyNjQgJiYKKy0g ICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19JRF9NUEVHNCkgewor LSAgICBjb25zdCBiYXNlOjpUaW1lRGVsdGEgZmlyc3RfcHRzID0KKy0gICAgICAgIENvbnZlcnRG cm9tVGltZUJhc2Uoc3RyZWFtLT50aW1lX2Jhc2UsIGF2X3N0cmVhbV9nZXRfZmlyc3RfZHRzKHN0 cmVhbSkpOworLSAgICBpZiAoZmlyc3RfcHRzIDwgc3RhcnRfdGltZSkKKy0gICAgICBzdGFydF90 aW1lID0gZmlyc3RfcHRzOworLSAgfQorLQorICAgcmV0dXJuIHN0YXJ0X3RpbWU7CisgfQorIAor QEAgLTE1OTcsNyArMTU4NSw3IEBACisgICBmb3IgKGNvbnN0IGF1dG8mIHN0cmVhbSA6IHN0cmVh bXNfKSB7CisgICAgIGlmICghc3RyZWFtIHx8IHN0cmVhbS0+SXNFbmFibGVkKCkgIT0gZW5hYmxl ZCkKKyAgICAgICBjb250aW51ZTsKKy0gICAgaWYgKGF2X3N0cmVhbV9nZXRfZmlyc3RfZHRzKHN0 cmVhbS0+YXZfc3RyZWFtKCkpID09IGtJbnZhbGlkUFRTTWFya2VyKQorKyAgICBpZiAoc3RyZWFt LT5hdl9zdHJlYW0oKS0+c3RhcnRfdGltZSA9PSBBVl9OT1BUU19WQUxVRSkKKyAgICAgICBjb250 aW51ZTsKKyAgICAgaWYgKCFsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0gfHwKKyAgICAgICAgIHN0 cmVhbS0+c3RhcnRfdGltZSgpIDwgbG93ZXN0X3N0YXJ0X3RpbWVfc3RyZWFtLT5zdGFydF90aW1l KCkpIHsKK0BAIC0xNjE4LDcgKzE2MDYsNyBAQAorICAgICBpZiAoc3RyZWFtLT50eXBlKCkgIT0g RGVtdXhlclN0cmVhbTo6VklERU8pCisgICAgICAgY29udGludWU7CisgCistICAgIGlmIChhdl9z dHJlYW1fZ2V0X2ZpcnN0X2R0cyhzdHJlYW0tPmF2X3N0cmVhbSgpKSA9PSBrSW52YWxpZFBUU01h cmtlcikKKysgICAgaWYgKHN0cmVhbS0+YXZfc3RyZWFtKCktPnN0YXJ0X3RpbWUgPT0gQVZfTk9Q VFNfVkFMVUUpCisgICAgICAgY29udGludWU7CisgCisgICAgIGlmICghc3RyZWFtLT5Jc0VuYWJs ZWQoKSkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUgYi9zcmNwa2dzL2No cm9taXVtL3RlbXBsYXRlCmluZGV4IGM0Yjc2NDg2NTcwZTIuLmRmZjk0NTk5YjUzZDkgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9jaHJvbWl1bS90 ZW1wbGF0ZQpAQCAtMiw3ICsyLDcgQEAKIHBrZ25hbWU9Y2hyb21pdW0KICMgU2VlIGh0dHBzOi8v Y2hyb21pdW1kYXNoLmFwcHNwb3QuY29tL3JlbGVhc2VzP3BsYXRmb3JtPUxpbnV4IGZvciB0aGUg bGF0ZXN0IHZlcnNpb24KIHZlcnNpb249MTE5LjAuNjA0NS4xMDUKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGFyY2hzPSJpNjg2KiB4ODZfNjQqIGFhcmNoNjQqIGFybXY3bCoiCiBob3N0bWFrZWRl cGVuZHM9IgogICQodm9wdF9pZiBjbGFuZyAiY2xhbmcgbGxkIGxsdm0xNSIpCgpGcm9tIDNkYTcx ZjVmODU2ZWQ5Y2Q0ODY3YmM0YTY2YTY4OGEzYjgwZWNhNWIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIw MjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyNy8xMTVdIGNtdXM6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCB8 IDEyICsrKysrKysrKysrKwogc3JjcGtncy9jbXVzL3RlbXBsYXRlICAgICAgICAgICAgICB8ICAy ICstCiAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2NtdXMvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9jbXVzL3BhdGNoZXMvZmZtcGVnNi5wYXRjaCBiL3NyY3BrZ3MvY211 cy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwMC4uZmZhOTVhYjgxMTEwMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvY211cy9w YXRjaGVzL2ZmbXBlZzYucGF0Y2gKQEAgLTAsMCArMSwxMiBAQAorLS0tIGEvaXAvZmZtcGVnLmMK KysrKyBiL2lwL2ZmbXBlZy5jCitAQCAtMjAyLDkgKzIwMiw2IEBAIHN0YXRpYyBpbnQgZmZtcGVn X29wZW4oc3RydWN0IGlucHV0X3BsdWdpbl9kYXRhICppcF9kYXRhKQorIAkJCWJyZWFrOworIAkJ fQorIAorLQkJaWYgKGNvZGVjLT5jYXBhYmlsaXRpZXMgJiBBVl9DT0RFQ19DQVBfVFJVTkNBVEVE KQorLQkJCWNjLT5mbGFncyB8PSBBVl9DT0RFQ19GTEFHX1RSVU5DQVRFRDsKKy0KKyAJCWlmIChh dmNvZGVjX29wZW4yKGNjLCBjb2RlYywgTlVMTCkgPCAwKSB7CisgCQkJZF9wcmludCgiY291bGQg bm90IG9wZW4gY29kZWM6ICVkLCAlc1xuIiwgY2MtPmNvZGVjX2lkLCBhdmNvZGVjX2dldF9uYW1l KGNjLT5jb2RlY19pZCkpOworIAkJCWVyciA9IC1JUF9FUlJPUl9VTlNVUFBPUlRFRF9GSUxFX1RZ UEU7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2NtdXMvdGVtcGxhdGUgYi9zcmNwa2dzL2NtdXMvdGVt cGxhdGUKaW5kZXggZGM4YTVlNWQ0MzRjZC4uZjY2NDA3NjE3MDk2MCAxMDA2NDQKLS0tIGEvc3Jj cGtncy9jbXVzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY211cy90ZW1wbGF0ZQpAQCAtMSw3ICsx LDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2NtdXMnCiBwa2duYW1lPWNtdXMKIHZlcnNpb249 Mi4xMC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jb25maWd1cmUKIGNv bmZpZ3VyZV9hcmdzPSJwcmVmaXg9L3VzciBMRD0kQ0MiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1j b25maWciCgpGcm9tIDdlY2M0NTc3MzQ1YjVlNmM4OThiMzA3NGUzZGUwZDk2NWYxYWE5YTEgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0MDAKU3ViamVjdDogW1BBVENIIDAyOC8x MTVdIGN5YW5yaXA6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9jeWFucmlw L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jeWFucmlwL3RlbXBsYXRlIGIvc3JjcGtncy9j eWFucmlwL3RlbXBsYXRlCmluZGV4IDk3OTZlMzQ2MTYwMWEuLjVkYjMwZTAyMGQxN2UgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvY3lhbnJpcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2N5YW5yaXAvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjeWFucmlwJwogcGtn bmFtZT1jeWFucmlwCiB2ZXJzaW9uPTAuOS4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWls ZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgogbWFrZWRlcGVuZHM9 ImZmbXBlZy1kZXZlbCBsaWJjZGlvLWRldmVsIGxpYmNkaW8tcGFyYW5vaWEtZGV2ZWwgbGliY3Vy bC1kZXZlbCBsaWJtdXNpY2JyYWluejUtZGV2ZWwiCgpGcm9tIGUwMjVmZDliM2UxODczMzY0NjVl YTBmNzkzYWEwYmRjNzcxODhkODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDYgLTA0 MDAKU3ViamVjdDogW1BBVENIIDAyOS8xMTVdIGRlYWRiZWVmOiByZXZidW1wIGZvciBmZm1wZWc0 LTQuNC4zCgotLS0KIHNyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9kZWFkYmVlZi90ZW1wbGF0ZSBiL3NyY3BrZ3MvZGVhZGJlZWYvdGVtcGxhdGUKaW5kZXgg YjY2NGJiMWI5YmQ5Zi4uMTY1YjNjN2I5Y2FkOCAxMDA2NDQKLS0tIGEvc3JjcGtncy9kZWFkYmVl Zi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2RlYWRiZWVmL3RlbXBsYXRlCkBAIC0xLDE0ICsxLDE0 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdkZWFkYmVlZicKIHBrZ25hbWU9ZGVhZGJlZWYKIHZl cnNpb249MS44LjgKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGNyZWF0ZV93cmtzcmM9eWVzCiBi dWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLW9zcyAt LWRpc2FibGUtbGZtIC0tZGlzYWJsZS1ub3RpZnkgLS1kaXNhYmxlLWd0azIiCiBob3N0bWFrZWRl cGVuZHM9ImF1dG9tYWtlIGxpYnRvb2wgZ2V0dGV4dCBnZXR0ZXh0LWRldmVsIGludGx0b29sIHBr Zy1jb25maWcKICB5YXNtIGNsYW5nIGdsaWItZGV2ZWwiCiBtYWtlZGVwZW5kcz0iCi0gYWxzYS1s aWItZGV2ZWwgZGJ1cy1kZXZlbCBmYWFkMi1kZXZlbCBmZm1wZWctZGV2ZWwgZ3RrKzMtZGV2ZWwg aW1saWIyLWRldmVsCisgYWxzYS1saWItZGV2ZWwgZGJ1cy1kZXZlbCBmYWFkMi1kZXZlbCBmZm1w ZWc0LWRldmVsIGd0ayszLWRldmVsIGltbGliMi1kZXZlbAogIGphbnNzb24tZGV2ZWwgbGliY2Rk Yi1kZXZlbCBsaWJjZGlvLWRldmVsIGxpYmN1cmwtZGV2ZWwgbGliZmxhYy1kZXZlbAogIGxpYm1h ZC1kZXZlbCBsaWJwbmctZGV2ZWwgbGlic2FtcGxlcmF0ZS1kZXZlbCBsaWJzbmRmaWxlLWRldmVs IGxpYnZvcmJpcy1kZXZlbAogIGxpYnppcC1kZXZlbCBtcGcxMjMtZGV2ZWwgb3B1c2ZpbGUtZGV2 ZWwgcHVsc2VhdWRpby1kZXZlbCB3YXZwYWNrLWRldmVsIgoKRnJvbSBkNTQ0Mjc1YWE4MjY5MTk3 OTM0NjBmNzQyMGM0MDA1NDBhM2UxMDJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzAvMTE1XSBkb2xwaGluLWVtdTogcmV2YnVtcCBmb3Ig ZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9kb2xwaGluLWVtdS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZG9scGhpbi1lbXUvdGVtcGxh dGUKaW5kZXggYjRjOGI2NDM2OGE0Yi4uMDcwOTkzYWFjMzFkMiAxMDA2NDQKLS0tIGEvc3JjcGtn cy9kb2xwaGluLWVtdS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2RvbHBoaW4tZW11L3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZG9scGhpbi1lbXUnCiBwa2du YW1lPWRvbHBoaW4tZW11CiB2ZXJzaW9uPTUuMC4xOTM2OAotcmV2aXNpb249MQorcmV2aXNpb249 MgogX2RvbHBoaW5fY29tbWl0PWRhZGJlYjRiYWU3ZTdmYTIzYWYyYjQ2ZTBhZGQ0MTQzMDk0ZGMx MDcKIF9tZ2JhX2NvbW1pdD00NGUwNzRhMTVlOTY1MTQ4MWY3ZjY1MmFjMDA2YTdjOWQ1OGNiZWI5 CiBfZ29vZ2xldGVzdF9jb21taXQ9YmUwM2QwMGY1ZjBjYzNhOTk3ZDFhMzY4YmVlOGExZmU5MzY1 MWY0OAoKRnJvbSAwNWJhNTRjYjE2ZGExN2MyZmMxYjAwM2E4NGJmNDVmYzA0OTU5NmJhIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ2IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzEvMTE1 XSBkcm9pZGNhbS1vYnMtcGx1Z2luOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3Br Z3MvZHJvaWRjYW0tb2JzLXBsdWdpbi90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZHJvaWRj YW0tb2JzLXBsdWdpbi90ZW1wbGF0ZSBiL3NyY3BrZ3MvZHJvaWRjYW0tb2JzLXBsdWdpbi90ZW1w bGF0ZQppbmRleCBmYzljOWJmNmI5ZDU0Li5mYjA0ODA3NTRkZjRkIDEwMDY0NAotLS0gYS9zcmNw a2dzL2Ryb2lkY2FtLW9icy1wbHVnaW4vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kcm9pZGNhbS1v YnMtcGx1Z2luL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn ZHJvaWRjYW0tb2JzLXBsdWdpbicKIHBrZ25hbWU9ZHJvaWRjYW0tb2JzLXBsdWdpbgogdmVyc2lv bj0yLjAuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxl CiBtYWtlX3VzZV9lbnY9eWVzCiBtYWtlX2J1aWxkX2FyZ3M9IkFMTE9XX1NUQVRJQz1ubyIKCkZy b20gNWU2OGI2MDcwYTkxZjlmZDYxNWNjYzBjYzMwY2I0YmVhZDdhM2IyZSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0NiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDMyLzExNV0gZHJvaWRj YW06IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUgYi9zcmNwa2dzL2Ryb2lkY2Ft L3RlbXBsYXRlCmluZGV4IDFjM2YxYjhiMWZjNjcuLjMyYTkyMjBiNzlhNGQgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvZHJvaWRjYW0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9kcm9pZGNhbS90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2Ryb2lkY2FtJwogcGtnbmFt ZT1kcm9pZGNhbQogdmVyc2lvbj0xLjguMgotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRf c3R5bGU9Z251LW1ha2VmaWxlCiBtYWtlX2J1aWxkX2FyZ3M9IlVTQk1VWEQ9LWx1c2JtdXhkLTIu MCBKUEVHPS1sdHVyYm9qcGVnIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSA2 NmRkOTM5NjU1MTMxM2Y2OWZlZTBiNmIzNzc4YTVjOGQ0ODhiYmYxIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1h ciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzMvMTE1XSBmZm1wZWd0aHVt Ym5haWxlcjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiAuLi4vZmZtcGVndGh1bWJuYWls ZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoICAgfCAyMDIgKysrKysrKysrKysrKysrKysrCiBzcmNw a2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3RlbXBsYXRlICAgICAgICAgICAgfCAgIDYgKy0KIDIgZmls ZXMgY2hhbmdlZCwgMjA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gK CmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMvZmZtcGVnNi5w YXRjaCBiL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjM2M2ZmMzVhMjg0MTkKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3BhdGNoZXMvZmZtcGVn Ni5wYXRjaApAQCAtMCwwICsxLDIwMiBAQAorLS0tIGEvbGliZmZtcGVndGh1bWJuYWlsZXIvbW92 aWVkZWNvZGVyLmNwcAkyMDE3LTExLTIxIDE0OjA2OjU3LjAwMDAwMDAwMCAtMDUwMAorKysrIGIv bGliZmZtcGVndGh1bWJuYWlsZXIvbW92aWVkZWNvZGVyLmNwcAkyMDIzLTA1LTA1IDEzOjE0OjQ3 Ljk0NjU2MDY2OCAtMDQwMAorQEAgLTQxLDExICs0MSw2IEBACisgbmFtZXNwYWNlIGZmbXBlZ3Ro dW1ibmFpbGVyCisgeworIAorLXN0cnVjdCBTaWxlbmNlTG9nTGV2ZWwKKy17CistICAgIFNpbGVu Y2VMb2dMZXZlbCgpIHsgYXZfbG9nX3NldF9sZXZlbChBVl9MT0dfUVVJRVQpOyB9CistfTsKKy0K KyBNb3ZpZURlY29kZXI6Ok1vdmllRGVjb2RlcihBVkZvcm1hdENvbnRleHQqIHBhdkNvbnRleHQp CisgOiBtX1ZpZGVvU3RyZWFtKC0xKQorICwgbV9wRm9ybWF0Q29udGV4dChwYXZDb250ZXh0KQor QEAgLTcwLDggKzY1LDYgQEAKKyAKKyB2b2lkIE1vdmllRGVjb2Rlcjo6aW5pdGlhbGl6ZShjb25z dCBzdHJpbmcmIGZpbGVuYW1lLCBib29sIHByZWZlckVtYmVkZGVkTWV0YWRhdGEpCisgeworLSAg ICBhdl9yZWdpc3Rlcl9hbGwoKTsKKy0gICAgYXZjb2RlY19yZWdpc3Rlcl9hbGwoKTsKKyAgICAg YXZmb3JtYXRfbmV0d29ya19pbml0KCk7CisgCisgICAgIHN0cmluZyBpbnB1dEZpbGUgPSBmaWxl bmFtZSA9PSAiLSIgPyAicGlwZToiIDogZmlsZW5hbWU7CitAQCAtOTcsOCArOTAsNyBAQAorIHsK KyAgICAgaWYgKG1fcFZpZGVvQ29kZWNDb250ZXh0KQorICAgICB7CistICAgICAgICBhdmNvZGVj X2Nsb3NlKG1fcFZpZGVvQ29kZWNDb250ZXh0KTsKKy0gICAgICAgIG1fcFZpZGVvQ29kZWNDb250 ZXh0ID0gbnVsbHB0cjsKKysgICAgICAgIGF2Y29kZWNfZnJlZV9jb250ZXh0KCZtX3BWaWRlb0Nv ZGVjQ29udGV4dCk7CisgICAgIH0KKyAKKyAgICAgaWYgKCghbV9Gb3JtYXRDb250ZXh0V2FzR2l2 ZW4pICYmIG1fcEZvcm1hdENvbnRleHQpCitAQCAtMTUyLDEwICsxNDQsMTAgQEAKKyAgICAgZm9y ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBtX3BGb3JtYXRDb250ZXh0LT5uYl9zdHJlYW1zOyAr K2kpCisgICAgIHsKKyAgICAgICAgIEFWU3RyZWFtICpzdHJlYW0gPSBtX3BGb3JtYXRDb250ZXh0 LT5zdHJlYW1zW2ldOworLSAgICAgICAgYXV0byBjdHggPSBtX3BGb3JtYXRDb250ZXh0LT5zdHJl YW1zW2ldLT5jb2RlYzsKKy0gICAgICAgIGlmIChjdHgtPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9U WVBFX1ZJREVPKQorKyAgICAgICAgYXV0byBwYXIgPSBtX3BGb3JtYXRDb250ZXh0LT5zdHJlYW1z W2ldLT5jb2RlY3BhcjsKKysgICAgICAgIGlmIChwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9U WVBFX1ZJREVPKQorICAgICAgICAgeworLSAgICAgICAgICAgIGlmICghcHJlZmVyRW1iZWRkZWRN ZXRhZGF0YSB8fCAhaXNTdGlsbEltYWdlQ29kZWMoY3R4LT5jb2RlY19pZCkpCisrICAgICAgICAg ICAgaWYgKCFwcmVmZXJFbWJlZGRlZE1ldGFkYXRhIHx8ICFpc1N0aWxsSW1hZ2VDb2RlYyhwYXIt PmNvZGVjX2lkKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHZpZGVvU3RyZWFt cy5wdXNoX2JhY2soaSk7CisgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworQEAgLTIwMyw4ICsx OTUsNyBAQAorICAgICB9CisgCisgICAgIG1fcFZpZGVvU3RyZWFtID0gbV9wRm9ybWF0Q29udGV4 dC0+c3RyZWFtc1ttX1ZpZGVvU3RyZWFtXTsKKy0gICAgbV9wVmlkZW9Db2RlY0NvbnRleHQgPSBt X3BWaWRlb1N0cmVhbS0+Y29kZWM7CistICAgIG1fcFZpZGVvQ29kZWMgPSBhdmNvZGVjX2ZpbmRf ZGVjb2RlcihtX3BWaWRlb0NvZGVjQ29udGV4dC0+Y29kZWNfaWQpOworKyAgICBtX3BWaWRlb0Nv ZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIobV9wVmlkZW9TdHJlYW0tPmNvZGVjcGFyLT5jb2Rl Y19pZCk7CisgCisgICAgIGlmIChtX3BWaWRlb0NvZGVjID09IG51bGxwdHIpCisgICAgIHsKK0BA IC0yMTQsNiArMjA1LDIwIEBACisgICAgICAgICB0aHJvdyBsb2dpY19lcnJvcigiVmlkZW8gQ29k ZWMgbm90IGZvdW5kIik7CisgICAgIH0KKyAKKysgICAgbV9wVmlkZW9Db2RlY0NvbnRleHQgPSBh dmNvZGVjX2FsbG9jX2NvbnRleHQzKG1fcFZpZGVvQ29kZWMpOworKworKyAgICBpZiAobV9wVmlk ZW9Db2RlY0NvbnRleHQgPT0gbnVsbHB0cikKKysgICAgeworKyAgICAgICAgZGVzdHJveSgpOwor KyAgICAgICAgdGhyb3cgbG9naWNfZXJyb3IoIkNvdWxkIG5vdCBhbGxvY2F0ZSB2aWRlbyBjb2Rl YyBjb250ZXh0Iik7CisrICAgIH0KKysKKysgICAgaWYgKGF2Y29kZWNfcGFyYW1ldGVyc190b19j b250ZXh0KG1fcFZpZGVvQ29kZWNDb250ZXh0LCBtX3BWaWRlb1N0cmVhbS0+Y29kZWNwYXIpIDwg MCkKKysgICAgeworKyAgICAgICAgZGVzdHJveSgpOworKyAgICAgICAgdGhyb3cgbG9naWNfZXJy b3IoIkNvdWxkIG5vdCBjb25maWd1cmUgdmlkZW8gY29kZWMgY29udGV4dCIpOworKyAgICB9Cisr CisgICAgIG1fcFZpZGVvQ29kZWNDb250ZXh0LT53b3JrYXJvdW5kX2J1Z3MgPSAxOworIAorICAg ICBpZiAoYXZjb2RlY19vcGVuMihtX3BWaWRlb0NvZGVjQ29udGV4dCwgbV9wVmlkZW9Db2RlYywg bnVsbHB0cikgPCAwKQorQEAgLTM4NiwxMyArMzkxLDYgQEAKKyAKKyB2b2lkIE1vdmllRGVjb2Rl cjo6aW5pdGlhbGl6ZUZpbHRlckdyYXBoKGNvbnN0IEFWUmF0aW9uYWwmIHRpbWVCYXNlLCBjb25z dCBzdGQ6OnN0cmluZyYgc2l6ZSwgYm9vbCBtYWludGFpbkFzcGVjdFJhdGlvKQorIHsKKy0gICAg c3RhdGljIGNvbnN0IEFWUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXRzW10gPSB7IEFWX1BJWF9GTVRf UkdCMjQsIEFWX1BJWF9GTVRfTk9ORSB9OworLQorLSAgICBhdXRvIGRlbCA9IFtdIChBVkJ1ZmZl clNpbmtQYXJhbXMqIHApIHsgYXZfZnJlZXAocCk7IH07CistICAgIHN0ZDo6dW5pcXVlX3B0cjxB VkJ1ZmZlclNpbmtQYXJhbXMsIGRlY2x0eXBlKGRlbCk+IGJ1ZmZlcnNpbmtQYXJhbXMoYXZfYnVm ZmVyc2lua19wYXJhbXNfYWxsb2MoKSwgZGVsKTsKKy0KKy0gICAgYXZmaWx0ZXJfcmVnaXN0ZXJf YWxsKCk7CistCisgICAgIG1fcEZpbHRlckdyYXBoID0gYXZmaWx0ZXJfZ3JhcGhfYWxsb2MoKTsK KyAgICAgYXNzZXJ0KG1fcEZpbHRlckdyYXBoKTsKKyAKK0BAIC00MDQsMTAgKzQwMiw4IEBACisg CisgICAgIGNoZWNrUmMoYXZmaWx0ZXJfZ3JhcGhfY3JlYXRlX2ZpbHRlcigmbV9wRmlsdGVyU291 cmNlLCBhdmZpbHRlcl9nZXRfYnlfbmFtZSgiYnVmZmVyIiksICJ0aHVtYl9idWZmZXIiLCBzcy5z dHIoKS5jX3N0cigpLCBudWxscHRyLCBtX3BGaWx0ZXJHcmFwaCksCisgICAgICAgICAgICAgIkZh aWxlZCB0byBjcmVhdGUgZmlsdGVyIHNvdXJjZSIpOworLSAgICBidWZmZXJzaW5rUGFyYW1zLT5w aXhlbF9mbXRzID0gcGl4ZWxGb3JtYXRzOworLSAgICBjaGVja1JjKGF2ZmlsdGVyX2dyYXBoX2Ny ZWF0ZV9maWx0ZXIoJm1fcEZpbHRlclNpbmssIGF2ZmlsdGVyX2dldF9ieV9uYW1lKCJidWZmZXJz aW5rIiksICJ0aHVtYl9idWZmZXJzaW5rIiwgbnVsbHB0ciwgYnVmZmVyc2lua1BhcmFtcy5nZXQo KSwgbV9wRmlsdGVyR3JhcGgpLAorKyAgICBjaGVja1JjKGF2ZmlsdGVyX2dyYXBoX2NyZWF0ZV9m aWx0ZXIoJm1fcEZpbHRlclNpbmssIGF2ZmlsdGVyX2dldF9ieV9uYW1lKCJidWZmZXJzaW5rIiks ICJ0aHVtYl9idWZmZXJzaW5rIiwgbnVsbHB0ciwgbnVsbHB0ciwgbV9wRmlsdGVyR3JhcGgpLAor ICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIGZpbHRlciBzaW5rIik7CistICAgIGJ1ZmZl cnNpbmtQYXJhbXMucmVsZWFzZSgpOworIAorICAgICBBVkZpbHRlckNvbnRleHQqIHlhZGlmRmls dGVyID0gbnVsbHB0cjsKKyAgICAgaWYgKG1fcEZyYW1lLT5pbnRlcmxhY2VkX2ZyYW1lICE9IDAp CitAQCAtNTAwLDE1ICs0OTYsMTUgQEAKKyAgICAgfQorIAorICAgICBjaGVja1JjKGF2X3NlZWtf ZnJhbWUobV9wRm9ybWF0Q29udGV4dCwgLTEsIHRpbWVzdGFtcCwgMCksICJTZWVraW5nIGluIHZp ZGVvIGZhaWxlZCIpOworLSAgICBhdmNvZGVjX2ZsdXNoX2J1ZmZlcnMobV9wRm9ybWF0Q29udGV4 dC0+c3RyZWFtc1ttX1ZpZGVvU3RyZWFtXS0+Y29kZWMpOworKyAgICBhdmNvZGVjX2ZsdXNoX2J1 ZmZlcnMobV9wVmlkZW9Db2RlY0NvbnRleHQpOworIAorICAgICBpbnQga2V5RnJhbWVBdHRlbXB0 cyA9IDA7CistICAgIGJvb2wgZ290RnJhbWUgPSAwOworKyAgICBib29sIGdvdEZyYW1lOworIAor ICAgICBkbworICAgICB7CisgICAgICAgICBpbnQgY291bnQgPSAwOworLSAgICAgICAgZ290RnJh bWUgPSAwOworKyAgICAgICAgZ290RnJhbWUgPSBmYWxzZTsKKyAKKyAgICAgICAgIHdoaWxlICgh Z290RnJhbWUgJiYgY291bnQgPCAyMCkKKyAgICAgICAgIHsKK0BAIC01NTIsMTcgKzU0OCwzMyBA QAorICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CisgCistICAgIGF2X2ZyYW1lX3VucmVm KG1fcEZyYW1lKTsKKy0KKy0gICAgaW50IGZyYW1lRmluaXNoZWQ7CisrICAgIGludCByYyA9IGF2 Y29kZWNfc2VuZF9wYWNrZXQobV9wVmlkZW9Db2RlY0NvbnRleHQsIG1fcFBhY2tldCk7CisrICAg IGlmKHJjID09IEFWRVJST1IoRUFHQUlOKSkKKysgICAgeworKyAgICAgICAgcmMgPSAwOworKyAg ICB9CisgCistICAgIGludCBieXRlc0RlY29kZWQgPSBhdmNvZGVjX2RlY29kZV92aWRlbzIobV9w VmlkZW9Db2RlY0NvbnRleHQsIG1fcEZyYW1lLCAmZnJhbWVGaW5pc2hlZCwgbV9wUGFja2V0KTsK Ky0gICAgaWYgKGJ5dGVzRGVjb2RlZCA8IDApCisrICAgIGlmKHJjID09IEFWRVJST1JfRU9GKQor KyAgICB7CisrICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0KKysgICAgZWxzZSBpZihyYyA8 IDApCisgICAgIHsKKy0gICAgICAgIHRocm93IGxvZ2ljX2Vycm9yKCJGYWlsZWQgdG8gZGVjb2Rl IHZpZGVvIGZyYW1lOiBieXRlc0RlY29kZWQgPCAwIik7CisrICAgICAgICB0aHJvdyBsb2dpY19l cnJvcigiRmFpbGVkIHRvIGRlY29kZSB2aWRlbyBmcmFtZTogYXZjb2RlY19zZW5kX3BhY2tldCgp IDwgMCIpOworICAgICB9CisgCistICAgIHJldHVybiBmcmFtZUZpbmlzaGVkID4gMDsKKysgICAg cmMgPSBhdmNvZGVjX3JlY2VpdmVfZnJhbWUobV9wVmlkZW9Db2RlY0NvbnRleHQsIG1fcEZyYW1l KTsKKysgICAgc3dpdGNoKHJjKQorKyAgICB7CisrICAgICAgICBjYXNlIDA6CisrICAgICAgICAg ICAgcmV0dXJuIHRydWU7CisrCisrICAgICAgICBjYXNlIEFWRVJST1IoRUFHQUlOKToKKysgICAg ICAgICAgICByZXR1cm4gZmFsc2U7CisrCisrICAgICAgICBkZWZhdWx0OgorKyAgICAgICAgICAg IHRocm93IGxvZ2ljX2Vycm9yKCJGYWlsZWQgdG8gZGVjb2RlIHZpZGVvIGZyYW1lOiBhdmNvZGVj X3JlY2VpdmVfZnJhbWUoKSA8IDAiKTsKKysgICAgfQorIH0KKyAKKyBib29sIE1vdmllRGVjb2Rl cjo6Z2V0VmlkZW9QYWNrZXQoKQorQEAgLTU3MCw4ICs1ODIsNiBAQAorICAgICBib29sIGZyYW1l c0F2YWlsYWJsZSA9IHRydWU7CisgICAgIGJvb2wgZnJhbWVEZWNvZGVkID0gZmFsc2U7CisgCist ICAgIGludCBhdHRlbXB0cyA9IDA7CistCisgICAgIGlmIChtX3BQYWNrZXQpCisgICAgIHsKKyAg ICAgICAgIGF2X3BhY2tldF91bnJlZihtX3BQYWNrZXQpOworQEAgLTU4MCw2ICs1OTAsNyBAQAor IAorICAgICBtX3BQYWNrZXQgPSBuZXcgQVZQYWNrZXQoKTsKKyAKKysKKyAgICAgd2hpbGUgKGZy YW1lc0F2YWlsYWJsZSAmJiAhZnJhbWVEZWNvZGVkKQorICAgICB7CisgICAgICAgICBmcmFtZXNB dmFpbGFibGUgPSBhdl9yZWFkX2ZyYW1lKG1fcEZvcm1hdENvbnRleHQsIG1fcFBhY2tldCkgPj0g MDsKK0BAIC02NDQsNyArNjU1LDcgQEAKKyAKKyBpbnQzMl90IE1vdmllRGVjb2Rlcjo6Z2V0U3Ry ZWFtUm90YXRpb24oKQorIHsKKy0gICAgaW50MzJfdCogbWF0cml4ID0gcmVpbnRlcnByZXRfY2Fz dDxpbnQzMl90Kj4oYXZfc3RyZWFtX2dldF9zaWRlX2RhdGEobV9wVmlkZW9TdHJlYW0sIEFWX1BL VF9EQVRBX0RJU1BMQVlNQVRSSVgsIG51bGxwdHIpKTsKKysgICAgYXV0byBtYXRyaXggPSByZWlu dGVycHJldF9jYXN0PGludDMyX3QqPihhdl9zdHJlYW1fZ2V0X3NpZGVfZGF0YShtX3BWaWRlb1N0 cmVhbSwgQVZfUEtUX0RBVEFfRElTUExBWU1BVFJJWCwgbnVsbHB0cikpOworICAgICBpZiAobWF0 cml4KQorICAgICB7CisgICAgICAgICBhdXRvIGFuZ2xlID0gbHJvdW5kKGF2X2Rpc3BsYXlfcm90 YXRpb25fZ2V0KG1hdHJpeCkpOworCistLS0gYS9saWJmZm1wZWd0aHVtYm5haWxlci9tb3ZpZWRl Y29kZXIuaAkyMDE3LTExLTEyIDA0OjIzOjM4LjAwMDAwMDAwMCAtMDUwMAorKysrIGIvbGliZmZt cGVndGh1bWJuYWlsZXIvbW92aWVkZWNvZGVyLmgJMjAyMy0wNS0wNSAxMzoyNjowNy4wOTU1Mjk5 MTEgLTA0MDAKK0BAIC03OCw3ICs3OCw3IEBACisgICAgIGludCAgICAgICAgICAgICAgICAgICAg IG1fVmlkZW9TdHJlYW07DQorICAgICBBVkZvcm1hdENvbnRleHQqICAgICAgICBtX3BGb3JtYXRD b250ZXh0Ow0KKyAgICAgQVZDb2RlY0NvbnRleHQqICAgICAgICAgbV9wVmlkZW9Db2RlY0NvbnRl eHQ7DQorLSAgICBBVkNvZGVjKiAgICAgICAgICAgICAgICBtX3BWaWRlb0NvZGVjOw0KKysgICAg Y29uc3QgQVZDb2RlYyogICAgICAgICAgbV9wVmlkZW9Db2RlYzsNCisgICAgIEFWRmlsdGVyR3Jh cGgqICAgICAgICAgIG1fcEZpbHRlckdyYXBoOw0KKyAgICAgQVZGaWx0ZXJDb250ZXh0KiAgICAg ICAgbV9wRmlsdGVyU291cmNlOw0KKyAgICAgQVZGaWx0ZXJDb250ZXh0KiAgICAgICAgbV9wRmls dGVyU2luazsNCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3RlbXBsYXRl IGIvc3JjcGtncy9mZm1wZWd0aHVtYm5haWxlci90ZW1wbGF0ZQppbmRleCAwMzllZWE3NjIyYjM5 Li4zNWQ1NDYwMThkMTJhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZmbXBlZ3RodW1ibmFpbGVyL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvZmZtcGVndGh1bWJuYWlsZXIvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdmZm1wZWd0aHVtYm5haWxlcicKIHBrZ25hbWU9 ZmZtcGVndGh1bWJuYWlsZXIKIHZlcnNpb249Mi4yLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtlZGVw ZW5kcz0ibGlicG5nLWRldmVsIGxpYmpwZWctdHVyYm8tZGV2ZWwgZmZtcGVnLWRldmVsIgpAQCAt OSw4ICs5LDggQEAgZGVwZW5kcz0iZmZtcGVnIgogc2hvcnRfZGVzYz0iTGlnaHR3ZWlnaHQgdmlk ZW8gdGh1bWJuYWlsZXIiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5v cmc+IgogbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKLWhvbWVwYWdlPSJodHRwczovL2dpdGh1 Yi5jb20vZGlya3ZkYi8ke3BrZ25hbWV9IgotZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9yZWxlYXNl cy9kb3dubG9hZC8ke3ZlcnNpb259LyR7cGtnbmFtZX0tJHt2ZXJzaW9ufS50YXIuYnoyIgoraG9t ZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9kaXJrdmRiIgorZGlzdGZpbGVzPSIke2hvbWVwYWdl fS8ke3BrZ25hbWV9L3JlbGVhc2VzL2Rvd25sb2FkLyR7dmVyc2lvbn0vJHtwa2duYW1lfS0ke3Zl cnNpb259LnRhci5iejIiCiBjaGVja3N1bT0xY2IyNDA1OWMzODIyM2Y2NTdiMzAwYzg0ZGQ4MDQ5 MWI3MDQwZDRiNjk0NzFjNGZlYTY5YmU4NjJiYzk5YjViCiAKIHBvc3RfaW5zdGFsbCgpIHsKCkZy b20gOThhYzE0ZmZlMTQwYjFjMGRhMDk4Mzc4MjI5MzQ5ZWM4MGIzNjZhMiBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAy MiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDM0LzExNV0gZmZtcGVn dGh1bWJzOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZmZtcGVndGh1bWJz L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1wZWd0aHVtYnMvdGVtcGxhdGUgYi9zcmNw a2dzL2ZmbXBlZ3RodW1icy90ZW1wbGF0ZQppbmRleCA1ZjBiOTQxNGRhZGFmLi4xMWI4ODE5MzUy OGY0IDEwMDY0NAotLS0gYS9zcmNwa2dzL2ZmbXBlZ3RodW1icy90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2ZmbXBlZ3RodW1icy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmls ZSBmb3IgJ2ZmbXBlZ3RodW1icycKIHBrZ25hbWU9ZmZtcGVndGh1bWJzCiB2ZXJzaW9uPTIyLjEy LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRl cGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMga2NvcmVhZGRvbnMga2NvbmZpZy1kZXZlbAogIHBr Zy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIGdldHRleHQiCgpGcm9tIDhkNjk4NTE3 NWY0MDkzYTNlNGIyZWEzZGNlZDc0ODUxM2JiNzVkODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NDcgLTA0MDAKU3ViamVjdDogW1BBVENIIDAzNS8xMTVdIGZmbXMyOiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIHwg NDI0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvZmZtczIvdGVtcGxhdGUg ICAgICAgICAgICAgIHwgICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDQyNSBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mZm1zMi9wYXRjaGVz L2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVn NS5wYXRjaCBiL3NyY3BrZ3MvZmZtczIvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjE0NzlmYWJjYWZjYjQKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2ZmbXMyL3BhdGNoZXMvZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDQy NCBAQAorRnJvbSA0NTY3MzE0OWU5YTJmNTU4Njg1NWFkNDcyZTMwNTkwODRlYWEzNmIxIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVyZWsgQnVpdGVuaHVpcyA8ZGVyZWsuYnVpdGVu aHVpc0BnbWFpbC5jb20+CitEYXRlOiBUdWUsIDQgTWF5IDIwMjEgMTQ6NDE6MjEgKzAxMDAKK1N1 YmplY3Q6IFtQQVRDSF0gVXNlIGF1dG8gZm9yIEFWQ29kZWMKKworVGhlIGdlbml1c2VzIG92ZXIg YXQgRkZtcGVnIGRlY2lkZWQgdG8gY29uc3RpZnkgdGhpcyBBUEksIHNvIG9sZAordmVyc2lvbnMg b2YgdGhlIGxpYnJhcnkgd2lsbCByZXR1cm4gQVZDb2RlYyAqLCB3aGlsZSBuZXcgdmVyc2lvbnMK K29mIHRoZSBsaWJhcnkgd2lsbCByZXR1cm4gY29uc3QgQVZDb2RlYyAqLCB3aGljaCwgaW4gQysr LCBhcmUgbm90CitPSyB0byBjb252ZXJ0IGJldHdlZW4uCisKK1JhdGhlciB0aGFuIHVzZSBzb21l IG1hY3JvIGhlbGwgaW4gZmZtc2NvbXBhdC5oLCB3ZSBjYW4gd29yayBhcm91bmQKK3RoaXMgYnkg dXNpbmcgYXV0by4KKworR3Jvc3MuCisKK1NpZ25lZC1vZmYtYnk6IERlcmVrIEJ1aXRlbmh1aXMg PGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgorLS0tCisgc3JjL2NvcmUvYXVkaW9zb3VyY2Uu Y3BwIHwgMiArLQorIHNyYy9jb3JlL2luZGV4aW5nLmNwcCAgICB8IDYgKysrLS0tCisgc3JjL2Nv cmUvdmlkZW9zb3VyY2UuY3BwIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25z KCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvYXVkaW9zb3VyY2Uu Y3BwIGIvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwCitpbmRleCBlNGNlOTdjLi5hYzA5NjY2IDEw MDY0NAorLS0tIGEvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwCisrKysgYi9zcmMvY29yZS9hdWRp b3NvdXJjZS5jcHAKK0BAIC00NjksNyArNDY5LDcgQEAgdm9pZCBGRk1TX0F1ZGlvU291cmNlOjpP cGVuRmlsZSgpIHsKKyAKKyAgICAgTEFWRk9wZW5GaWxlKFNvdXJjZUZpbGUuY19zdHIoKSwgRm9y bWF0Q29udGV4dCwgVHJhY2tOdW1iZXIpOworIAorLSAgICBBVkNvZGVjICpDb2RlYyA9IGF2Y29k ZWNfZmluZF9kZWNvZGVyKEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tOdW1iZXJdLT5jb2Rl Y3Bhci0+Y29kZWNfaWQpOworKyAgICBhdXRvICpDb2RlYyA9IGF2Y29kZWNfZmluZF9kZWNvZGVy KEZvcm1hdENvbnRleHQtPnN0cmVhbXNbVHJhY2tOdW1iZXJdLT5jb2RlY3Bhci0+Y29kZWNfaWQp OworICAgICBpZiAoQ29kZWMgPT0gbnVsbHB0cikKKyAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0 aW9uKEZGTVNfRVJST1JfREVDT0RJTkcsIEZGTVNfRVJST1JfQ09ERUMsCisgICAgICAgICAgICAg IkF1ZGlvIGNvZGVjIG5vdCBmb3VuZCIpOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2luZGV4aW5n LmNwcCBiL3NyYy9jb3JlL2luZGV4aW5nLmNwcAoraW5kZXggZTU0N2M1YS4uNTlmYjRlOCAxMDA2 NDQKKy0tLSBhL3NyYy9jb3JlL2luZGV4aW5nLmNwcAorKysrIGIvc3JjL2NvcmUvaW5kZXhpbmcu Y3BwCitAQCAtMzg0LDcgKzM4NCw3IEBAIEZGTVNfVHJhY2tUeXBlIEZGTVNfSW5kZXhlcjo6R2V0 VHJhY2tUeXBlKGludCBUcmFjaykgeworIH0KKyAKKyBjb25zdCBjaGFyICpGRk1TX0luZGV4ZXI6 OkdldFRyYWNrQ29kZWMoaW50IFRyYWNrKSB7CistICAgIEFWQ29kZWMgKmNvZGVjID0gYXZjb2Rl Y19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja10tPmNvZGVjcGFyLT5j b2RlY19pZCk7CisrICAgIGF1dG8gKmNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0 Q29udGV4dC0+c3RyZWFtc1tUcmFja10tPmNvZGVjcGFyLT5jb2RlY19pZCk7CisgICAgIHJldHVy biBjb2RlYyA/IGNvZGVjLT5uYW1lIDogbnVsbHB0cjsKKyB9CisgCitAQCAtNDAyLDcgKzQwMiw3 IEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsKKyAgICAgICAgICAg ICBVc2VEVFMpOworIAorICAgICAgICAgaWYgKEluZGV4TWFzay5jb3VudChpKSAmJiBGb3JtYXRD b250ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVf VklERU8pIHsKKy0gICAgICAgICAgICBBVkNvZGVjICpWaWRlb0NvZGVjID0gYXZjb2RlY19maW5k X2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsK KysgICAgICAgICAgICBhdXRvICpWaWRlb0NvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9y bWF0Q29udGV4dC0+c3RyZWFtc1tpXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgICAgICAg ICBpZiAoIVZpZGVvQ29kZWMpIHsKKyAgICAgICAgICAgICAgICAgRm9ybWF0Q29udGV4dC0+c3Ry ZWFtc1tpXS0+ZGlzY2FyZCA9IEFWRElTQ0FSRF9BTEw7CisgICAgICAgICAgICAgICAgIEluZGV4 TWFzay5lcmFzZShpKTsKK0BAIC00MzMsNyArNDMzLDcgQEAgRkZNU19JbmRleCAqRkZNU19JbmRl eGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgICAgICAgICBJbmRleE1hc2suaW5zZXJ0KGkp OworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0gZWxzZSBpZiAoSW5kZXhNYXNrLmNvdW50KGkp ICYmIEZvcm1hdENvbnRleHQtPnN0cmVhbXNbaV0tPmNvZGVjcGFyLT5jb2RlY190eXBlID09IEFW TUVESUFfVFlQRV9BVURJTykgeworLSAgICAgICAgICAgIEFWQ29kZWMgKkF1ZGlvQ29kZWMgPSBh dmNvZGVjX2ZpbmRfZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+ Y29kZWNfaWQpOworKyAgICAgICAgICAgIGF1dG8gKkF1ZGlvQ29kZWMgPSBhdmNvZGVjX2ZpbmRf ZGVjb2RlcihGb3JtYXRDb250ZXh0LT5zdHJlYW1zW2ldLT5jb2RlY3Bhci0+Y29kZWNfaWQpOwor ICAgICAgICAgICAgIGlmIChBdWRpb0NvZGVjID09IG51bGxwdHIpCisgICAgICAgICAgICAgICAg IHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfQ09ERUMsIEZGTVNfRVJST1JfVU5TVVBQ T1JURUQsCisgICAgICAgICAgICAgICAgICAgICAiQXVkaW8gY29kZWMgbm90IGZvdW5kIik7Citk aWZmIC0tZ2l0IGEvc3JjL2NvcmUvdmlkZW9zb3VyY2UuY3BwIGIvc3JjL2NvcmUvdmlkZW9zb3Vy Y2UuY3BwCitpbmRleCBiODg5OTcwLi44OTU2YzIyIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvdmlk ZW9zb3VyY2UuY3BwCisrKysgYi9zcmMvY29yZS92aWRlb3NvdXJjZS5jcHAKK0BAIC0xNzEsNyAr MTcxLDcgQEAgRkZNU19WaWRlb1NvdXJjZTo6RkZNU19WaWRlb1NvdXJjZShjb25zdCBjaGFyICpT b3VyY2VGaWxlLCBGRk1TX0luZGV4ICZJbmRleCwgaW4KKyAKKyAgICAgICAgIExBVkZPcGVuRmls ZShTb3VyY2VGaWxlLCBGb3JtYXRDb250ZXh0LCBWaWRlb1RyYWNrKTsKKyAKKy0gICAgICAgIEFW Q29kZWMgKkNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFt c1tWaWRlb1RyYWNrXS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKysgICAgICAgIGF1dG8gKkNvZGVj ID0gYXZjb2RlY19maW5kX2RlY29kZXIoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tWaWRlb1RyYWNr XS0+Y29kZWNwYXItPmNvZGVjX2lkKTsKKyAgICAgICAgIGlmIChDb2RlYyA9PSBudWxscHRyKQor ICAgICAgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfREVDT0RJTkcsIEZG TVNfRVJST1JfQ09ERUMsCisgICAgICAgICAgICAgICAgICJWaWRlbyBjb2RlYyBub3QgZm91bmQi KTsKKy0tIAorMi40MC4wCisKK0Zyb20gOTZjYmYzOGVhOTM4MTgyOWExMzE0ZjQzMmEyYzYwNDk1 ZGNlZmFhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlcmVrIEJ1aXRlbmh1aXMg PGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgorRGF0ZTogVHVlLCA0IE1heSAyMDIxIDE0OjEy OjQxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGFsbDogVXBkYXRlIEFWUGFja2V0IEFQSSB1c2Fn ZQorCitBVlBhY2tldHMgbXVzdCBhbGwgYmUgb24gdGhlIGhlYXAgbm93LCBzaW5jZSBpdCBpcyBu byBsb25nZXIKK3BhcnQgb2YgdGhlIGxpYmF2KiBBQkkuCisKK1NpZ25lZC1vZmYtYnk6IERlcmVr IEJ1aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgorLS0tCisgc3JjL2NvcmUv YXVkaW9zb3VyY2UuY3BwIHwgMTYgKysrKysrLS0tLQorIHNyYy9jb3JlL2luZGV4aW5nLmNwcCAg ICB8IDYzICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KKyBzcmMvY29y ZS9pbmRleGluZy5oICAgICAgfCAgNCArLS0KKyBzcmMvY29yZS91dGlscy5jcHAgICAgICAgfCAg NiAtLS0tCisgc3JjL2NvcmUvdXRpbHMuaCAgICAgICAgIHwgIDEgLQorIHNyYy9jb3JlL3ZpZGVv c291cmNlLmNwcCB8IDMwICsrKysrKysrKystLS0tLS0tLS0KKyA2IGZpbGVzIGNoYW5nZWQsIDY0 IGluc2VydGlvbnMoKyksIDU2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUv YXVkaW9zb3VyY2UuY3BwIGIvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwCitpbmRleCAzN2NmOWFl Li5lNGNlOTdjIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvYXVkaW9zb3VyY2UuY3BwCisrKysgYi9z cmMvY29yZS9hdWRpb3NvdXJjZS5jcHAKK0BAIC0yODUsMTAgKzI4NSwxNSBAQCBGRk1TX0F1ZGlv U291cmNlOjpBdWRpb0Jsb2NrICpGRk1TX0F1ZGlvU291cmNlOjpDYWNoZUJsb2NrKENhY2hlSXRl cmF0b3IgJnBvcykgeworIGludCBGRk1TX0F1ZGlvU291cmNlOjpEZWNvZGVOZXh0QmxvY2soQ2Fj aGVJdGVyYXRvciAqcG9zKSB7CisgICAgIEN1cnJlbnRGcmFtZSA9ICZGcmFtZXNbUGFja2V0TnVt YmVyXTsKKyAKKy0gICAgQVZQYWNrZXQgUGFja2V0OworLSAgICBpZiAoIVJlYWRQYWNrZXQoJlBh Y2tldCkpCisrICAgIEFWUGFja2V0ICpQYWNrZXQgPSBhdl9wYWNrZXRfYWxsb2MoKTsKKysgICAg aWYgKCFQYWNrZXQpCisrICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX1BB UlNFUiwgRkZNU19FUlJPUl9BTExPQ0FUSU9OX0ZBSUxFRCwKKysgICAgICAgICAgICAiQ291bGQg bm90IGFsbG9jYXRlIHBhY2tldC4iKTsKKysgICAgaWYgKCFSZWFkUGFja2V0KFBhY2tldCkpIHsK KysgICAgICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworICAgICAgICAgdGhyb3cgRkZNU19F eGNlcHRpb24oRkZNU19FUlJPUl9QQVJTRVIsIEZGTVNfRVJST1JfVU5LTk9XTiwKKyAgICAgICAg ICAgICAiUmVhZFBhY2tldCB1bmV4cGVjdGVkbHkgZmFpbGVkIHRvIHJlYWQgYSBwYWNrZXQiKTsK KysgICAgfQorIAorICAgICAvLyBSZWFkUGFja2V0IG1heSBoYXZlIGNoYW5nZWQgdGhlIHBhY2tl dCBudW1iZXIKKyAgICAgQ3VycmVudEZyYW1lID0gJkZyYW1lc1tQYWNrZXROdW1iZXJdOworQEAg LTI5Nyw4ICszMDIsOSBAQCBpbnQgRkZNU19BdWRpb1NvdXJjZTo6RGVjb2RlTmV4dEJsb2NrKENh Y2hlSXRlcmF0b3IgKnBvcykgeworICAgICBpbnQgTnVtYmVyT2ZTYW1wbGVzID0gMDsKKyAgICAg QXVkaW9CbG9jayAqQ2FjaGVkQmxvY2sgPSBudWxscHRyOworICAgICAKKy0gICAgaW50IFJldCA9 IGF2Y29kZWNfc2VuZF9wYWNrZXQoQ29kZWNDb250ZXh0LCAmUGFja2V0KTsKKy0gICAgYXZfcGFj a2V0X3VucmVmKCZQYWNrZXQpOworKyAgICBpbnQgUmV0ID0gYXZjb2RlY19zZW5kX3BhY2tldChD b2RlY0NvbnRleHQsIFBhY2tldCk7CisrICAgIGF2X3BhY2tldF91bnJlZihQYWNrZXQpOworKyAg ICBhdl9wYWNrZXRfZnJlZSgmUGFja2V0KTsKKyAKKyAgICAgYXZfZnJhbWVfdW5yZWYoRGVjb2Rl RnJhbWUpOworICAgICBSZXQgPSBhdmNvZGVjX3JlY2VpdmVfZnJhbWUoQ29kZWNDb250ZXh0LCBE ZWNvZGVGcmFtZSk7CitAQCAtNTEzLDggKzUxOSw2IEBAIHZvaWQgRkZNU19BdWRpb1NvdXJjZTo6 U2VlaygpIHsKKyB9CisgCisgYm9vbCBGRk1TX0F1ZGlvU291cmNlOjpSZWFkUGFja2V0KEFWUGFj a2V0ICpQYWNrZXQpIHsKKy0gICAgSW5pdE51bGxQYWNrZXQoKlBhY2tldCk7CistCisgICAgIHdo aWxlIChhdl9yZWFkX2ZyYW1lKEZvcm1hdENvbnRleHQsIFBhY2tldCkgPj0gMCkgeworICAgICAg ICAgaWYgKFBhY2tldC0+c3RyZWFtX2luZGV4ID09IFRyYWNrTnVtYmVyKSB7CisgICAgICAgICAg ICAgLy8gUmVxdWlyZWQgYmVjYXVzZSBub3QgYWxsIGF1ZGlvIHBhY2tldHMsIGVzcGVjaWFsbHkg aW4gb2dnLCBoYXZlIGEgcHRzLiBVc2UgdGhlIHByZXZpb3VzIHZhbGlkIHBhY2tldCdzIHB0cyBp bnN0ZWFkLgorZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2luZGV4aW5nLmNwcCBiL3NyYy9jb3JlL2lu ZGV4aW5nLmNwcAoraW5kZXggMjNmYjk1Yi4uZTU0N2M1YSAxMDA2NDQKKy0tLSBhL3NyYy9jb3Jl L2luZGV4aW5nLmNwcAorKysrIGIvc3JjL2NvcmUvaW5kZXhpbmcuY3BwCitAQCAtMzIwLDcgKzMy MCw3IEBAIHZvaWQgRkZNU19JbmRleGVyOjpDaGVja0F1ZGlvUHJvcGVydGllcyhpbnQgVHJhY2ss IEFWQ29kZWNDb250ZXh0ICpDb250ZXh0KSB7CisgICAgIH0KKyB9CisgCistdm9pZCBGRk1TX0lu ZGV4ZXI6OlBhcnNlVmlkZW9QYWNrZXQoU2hhcmVkQVZDb250ZXh0ICZWaWRlb0NvbnRleHQsIEFW UGFja2V0ICZwa3QsIGludCAqUmVwZWF0UGljdCwKKyt2b2lkIEZGTVNfSW5kZXhlcjo6UGFyc2VW aWRlb1BhY2tldChTaGFyZWRBVkNvbnRleHQgJlZpZGVvQ29udGV4dCwgQVZQYWNrZXQgKnBrdCwg aW50ICpSZXBlYXRQaWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCAqRnJhbWVUeXBlLCBib29sICpJbnZpc2libGUsIGVudW0gQVZQaWN0dXJlU3RydWN0dXJlICpM YXN0UGljU3RydWN0KSB7CisgICAgIGlmIChWaWRlb0NvbnRleHQuUGFyc2VyKSB7CisgICAgICAg ICB1aW50OF90ICpPQjsKK0BAIC0zMzAsOCArMzMwLDggQEAgdm9pZCBGRk1TX0luZGV4ZXI6OlBh cnNlVmlkZW9QYWNrZXQoU2hhcmVkQVZDb250ZXh0ICZWaWRlb0NvbnRleHQsIEFWUGFja2V0ICZw a3QKKyAgICAgICAgIGF2X3BhcnNlcl9wYXJzZTIoVmlkZW9Db250ZXh0LlBhcnNlciwKKyAgICAg ICAgICAgICBWaWRlb0NvbnRleHQuQ29kZWNDb250ZXh0LAorICAgICAgICAgICAgICZPQiwgJk9C U2l6ZSwKKy0gICAgICAgICAgICBwa3QuZGF0YSwgcGt0LnNpemUsCistICAgICAgICAgICAgcGt0 LnB0cywgcGt0LmR0cywgcGt0LnBvcyk7CisrICAgICAgICAgICAgcGt0LT5kYXRhLCBwa3QtPnNp emUsCisrICAgICAgICAgICAgcGt0LT5wdHMsIHBrdC0+ZHRzLCBwa3QtPnBvcyk7CisgCisgICAg ICAgICAvLyBILjI2NCAoUEFGRikgYW5kIEhFVkMgbWF5IGhhdmUgb25lIGZpZWxkIHBlciBwYWNr ZXQsIHNvIHdlIG5lZWQgdG8gdHJhY2sKKyAgICAgICAgIC8vIHdoZW4gd2UgaGF2ZSBhIGZ1bGwg b3IgaGFsZiBmcmFtZSBhdmFpbGFibGUsIGFuZCBtYXJrIG9uZSBvZiB0aGVtIGFzCitAQCAtMzUx LDE1ICszNTEsMTUgQEAgdm9pZCBGRk1TX0luZGV4ZXI6OlBhcnNlVmlkZW9QYWNrZXQoU2hhcmVk QVZDb250ZXh0ICZWaWRlb0NvbnRleHQsIEFWUGFja2V0ICZwa3QKKyAKKyAgICAgICAgICpSZXBl YXRQaWN0ID0gVmlkZW9Db250ZXh0LlBhcnNlci0+cmVwZWF0X3BpY3Q7CisgICAgICAgICAqRnJh bWVUeXBlID0gVmlkZW9Db250ZXh0LlBhcnNlci0+cGljdF90eXBlOworLSAgICAgICAgKkludmlz aWJsZSA9IChJbmNvbXBsZXRlRnJhbWUgfHwgVmlkZW9Db250ZXh0LlBhcnNlci0+cmVwZWF0X3Bp Y3QgPCAwIHx8IChwa3QuZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKSk7CisrICAgICAgICAq SW52aXNpYmxlID0gKEluY29tcGxldGVGcmFtZSB8fCBWaWRlb0NvbnRleHQuUGFyc2VyLT5yZXBl YXRfcGljdCA8IDAgfHwgKHBrdC0+ZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKSk7CisgICAg IH0gZWxzZSB7CistICAgICAgICAqSW52aXNpYmxlID0gISEocGt0LmZsYWdzICYgQVZfUEtUX0ZM QUdfRElTQ0FSRCk7CisrICAgICAgICAqSW52aXNpYmxlID0gISEocGt0LT5mbGFncyAmIEFWX1BL VF9GTEFHX0RJU0NBUkQpOworICAgICB9CisgCisgICAgIGlmIChWaWRlb0NvbnRleHQuQ29kZWND b250ZXh0LT5jb2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDgpCistICAgICAgICBQYXJzZVZQOChw a3QuZGF0YVswXSwgSW52aXNpYmxlLCBGcmFtZVR5cGUpOworKyAgICAgICAgUGFyc2VWUDgocGt0 LT5kYXRhWzBdLCBJbnZpc2libGUsIEZyYW1lVHlwZSk7CisgICAgIGVsc2UgaWYgKFZpZGVvQ29u dGV4dC5Db2RlY0NvbnRleHQtPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOSkKKy0gICAgICAg IFBhcnNlVlA5KHBrdC5kYXRhWzBdLCBJbnZpc2libGUsIEZyYW1lVHlwZSk7CisrICAgICAgICBQ YXJzZVZQOShwa3QtPmRhdGFbMF0sIEludmlzaWJsZSwgRnJhbWVUeXBlKTsKKyB9CisgCisgdm9p ZCBGRk1TX0luZGV4ZXI6OkZyZWUoKSB7CitAQCAtNDU4LDMyICs0NTgsMzYgQEAgRkZNU19JbmRl eCAqRkZNU19JbmRleGVyOjpEb0luZGV4aW5nKCkgeworICAgICAgICAgfQorICAgICB9CisgCist ICAgIEFWUGFja2V0IFBhY2tldDsKKy0gICAgSW5pdE51bGxQYWNrZXQoUGFja2V0KTsKKysgICAg QVZQYWNrZXQgKlBhY2tldCA9IGF2X3BhY2tldF9hbGxvYygpOworKyAgICBpZiAoIVBhY2tldCkK KysgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfQ09ERUMsIEZGTVNfRVJS T1JfQUxMT0NBVElPTl9GQUlMRUQsCisrICAgICAgICAgICAgIkNvdWxkIG5vdCBhbGxvY2F0ZSBw YWNrZXQuIik7CisgICAgIHN0ZDo6dmVjdG9yPGludDY0X3Q+IExhc3RWYWxpZFRTKEZvcm1hdENv bnRleHQtPm5iX3N0cmVhbXMsIEFWX05PUFRTX1ZBTFVFKTsKKyAKKyAgICAgaW50NjRfdCBmaWxl c2l6ZSA9IGF2aW9fc2l6ZShGb3JtYXRDb250ZXh0LT5wYik7CisgICAgIGVudW0gQVZQaWN0dXJl U3RydWN0dXJlIExhc3RQaWNTdHJ1Y3QgPSBBVl9QSUNUVVJFX1NUUlVDVFVSRV9VTktOT1dOOwor LSAgICB3aGlsZSAoYXZfcmVhZF9mcmFtZShGb3JtYXRDb250ZXh0LCAmUGFja2V0KSA+PSAwKSB7 CisrICAgIHdoaWxlIChhdl9yZWFkX2ZyYW1lKEZvcm1hdENvbnRleHQsIFBhY2tldCkgPj0gMCkg eworICAgICAgICAgLy8gVXBkYXRlIHByb2dyZXNzCisgICAgICAgICAvLyBGb3JtYXRDb250ZXh0 LT5wYiBjYW4gYXBwYXJlbnRseSBiZSBOVUxMIHdoZW4gb3BlbmluZyBpbWFnZXMuCisgICAgICAg ICBpZiAoSUMgJiYgRm9ybWF0Q29udGV4dC0+cGIpIHsKKy0gICAgICAgICAgICBpZiAoKCpJQyko Rm9ybWF0Q29udGV4dC0+cGItPnBvcywgZmlsZXNpemUsIElDUHJpdmF0ZSkpCisrICAgICAgICAg ICAgaWYgKCgqSUMpKEZvcm1hdENvbnRleHQtPnBiLT5wb3MsIGZpbGVzaXplLCBJQ1ByaXZhdGUp KSB7CisrICAgICAgICAgICAgICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworICAgICAgICAg ICAgICAgICB0aHJvdyBGRk1TX0V4Y2VwdGlvbihGRk1TX0VSUk9SX0NBTkNFTExFRCwgRkZNU19F UlJPUl9VU0VSLAorICAgICAgICAgICAgICAgICAgICAgIkNhbmNlbGxlZCBieSB1c2VyIik7Cisr ICAgICAgICAgICAgfQorICAgICAgICAgfQorLSAgICAgICAgaWYgKCFJbmRleE1hc2suY291bnQo UGFja2V0LnN0cmVhbV9pbmRleCkpIHsKKy0gICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYoJlBh Y2tldCk7CisrICAgICAgICBpZiAoIUluZGV4TWFzay5jb3VudChQYWNrZXQtPnN0cmVhbV9pbmRl eCkpIHsKKysgICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKyAgICAgICAgICAg ICBjb250aW51ZTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGludCBUcmFjayA9IFBhY2tldC5z dHJlYW1faW5kZXg7CisrICAgICAgICBpbnQgVHJhY2sgPSBQYWNrZXQtPnN0cmVhbV9pbmRleDsK KyAgICAgICAgIEZGTVNfVHJhY2sgJlRyYWNrSW5mbyA9ICgqVHJhY2tJbmRpY2VzKVtUcmFja107 CistICAgICAgICBib29sIEtleUZyYW1lID0gISEoUGFja2V0LmZsYWdzICYgQVZfUEtUX0ZMQUdf S0VZKTsKKysgICAgICAgIGJvb2wgS2V5RnJhbWUgPSAhIShQYWNrZXQtPmZsYWdzICYgQVZfUEtU X0ZMQUdfS0VZKTsKKyAgICAgICAgIFJlYWRUUyhQYWNrZXQsIExhc3RWYWxpZFRTW1RyYWNrXSwg KCpUcmFja0luZGljZXMpW1RyYWNrXS5Vc2VEVFMpOworIAorICAgICAgICAgaWYgKEZvcm1hdENv bnRleHQtPnN0cmVhbXNbVHJhY2tdLT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZ UEVfVklERU8pIHsKKy0gICAgICAgICAgICBpbnQ2NF90IFBUUyA9IFRyYWNrSW5mby5Vc2VEVFMg PyBQYWNrZXQuZHRzIDogUGFja2V0LnB0czsKKysgICAgICAgICAgICBpbnQ2NF90IFBUUyA9IFRy YWNrSW5mby5Vc2VEVFMgPyBQYWNrZXQtPmR0cyA6IFBhY2tldC0+cHRzOworICAgICAgICAgICAg IGlmIChQVFMgPT0gQVZfTk9QVFNfVkFMVUUpIHsKKyAgICAgICAgICAgICAgICAgLy8gVlB4IGFs dC1yZWZzIGFyZSBvdXRwdXQgYXMgcGFja2V0cyB3aGljaCBsYWNrIHRpbWVzdG1wcyBvciBkdXJh dGlvbnMsIHNpbmNlCisgICAgICAgICAgICAgICAgIC8vIHRoZXkgYXJlIGludmlzaWJsZS4gQ3Vy cmVudGx5LCB0aGUgdGltZXN0YW1wIG1hbmdsaW5nIGNvZGUgaW4gbGliYXZmb3JtYXQKK0BAIC00 OTUsOSArNDk5LDExIEBAIEZGTVNfSW5kZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsK KyAgICAgICAgICAgICAgICAgLy8gRkZNUzIgY3VycmVudGx5IHNvcnRzIHBhY2tldHMgYnkgUFRT LCB3aGljaCB3aWxsIGJyZWFrIGRlY29kaW5nLCBvdGhlcndpc2UuCisgICAgICAgICAgICAgICAg IGJvb2wgSGFzQWx0UmVmcyA9IChGb3JtYXRDb250ZXh0LT5zdHJlYW1zW1RyYWNrXS0+Y29kZWNw YXItPmNvZGVjX2lkID09IEFWX0NPREVDX0lEX1ZQOCB8fAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja10tPmNvZGVjcGFyLT5j b2RlY19pZCA9PSBBVl9DT0RFQ19JRF9WUDkpOworLSAgICAgICAgICAgICAgICBpZiAoUGFja2V0 LmR1cmF0aW9uID09IDAgJiYgIUhhc0FsdFJlZnMpCisrICAgICAgICAgICAgICAgIGlmIChQYWNr ZXQtPmR1cmF0aW9uID09IDAgJiYgIUhhc0FsdFJlZnMpIHsKKysgICAgICAgICAgICAgICAgICAg IGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRkZN U19FeGNlcHRpb24oRkZNU19FUlJPUl9JTkRFWElORywgRkZNU19FUlJPUl9QQVJTRVIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgcGFja2V0IHB0cywgZHRzLCBhbmQgZHVyYXRp b24iKTsKKysgICAgICAgICAgICAgICAgfQorIAorICAgICAgICAgICAgICAgICBpZiAoVHJhY2tJ bmZvLmVtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgICBQVFMgPSAwOworQEAgLTUxMyw3ICs1 MTksNyBAQCBGRk1TX0luZGV4ICpGRk1TX0luZGV4ZXI6OkRvSW5kZXhpbmcoKSB7CisgICAgICAg ICAgICAgUGFyc2VWaWRlb1BhY2tldChBVkNvbnRleHRzW1RyYWNrXSwgUGFja2V0LCAmUmVwZWF0 UGljdCwgJkZyYW1lVHlwZSwgJkludmlzaWJsZSwgJkxhc3RQaWNTdHJ1Y3QpOworIAorICAgICAg ICAgICAgIFRyYWNrSW5mby5BZGRWaWRlb0ZyYW1lKFBUUywgUmVwZWF0UGljdCwgS2V5RnJhbWUs CistICAgICAgICAgICAgICAgIEZyYW1lVHlwZSwgUGFja2V0LnBvcywgSW52aXNpYmxlKTsKKysg ICAgICAgICAgICAgICAgRnJhbWVUeXBlLCBQYWNrZXQtPnBvcywgSW52aXNpYmxlKTsKKyAgICAg ICAgIH0gZWxzZSBpZiAoRm9ybWF0Q29udGV4dC0+c3RyZWFtc1tUcmFja10tPmNvZGVjcGFyLT5j b2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTykgeworICAgICAgICAgICAgIC8vIEZvciB2 aWRlbyBzZWVraW5nIHRpbWVzdGFtcHMgYXJlIHVzZWQgb25seSBpZiBhbGwgcGFja2V0cyBoYXZl CisgICAgICAgICAgICAgLy8gdGltZXN0YW1wcywgd2hpbGUgZm9yIGF1ZGlvIHRoZXkncmUgdXNl ZCBpZiBhbnkgaGF2ZSB0aW1lc3RhbXBzLAorQEAgLTUyMiwyOCArNTI4LDI5IEBAIEZGTVNfSW5k ZXggKkZGTVNfSW5kZXhlcjo6RG9JbmRleGluZygpIHsKKyAgICAgICAgICAgICAgICAgVHJhY2tJ bmZvLkhhc1RTID0gdHJ1ZTsKKyAKKyAgICAgICAgICAgICBpbnQ2NF90IFN0YXJ0U2FtcGxlID0g QVZDb250ZXh0c1tUcmFja10uQ3VycmVudFNhbXBsZTsKKy0gICAgICAgICAgICB1aW50MzJfdCBT YW1wbGVDb3VudCA9IEluZGV4QXVkaW9QYWNrZXQoVHJhY2ssICZQYWNrZXQsIEFWQ29udGV4dHNb VHJhY2tdLCAqVHJhY2tJbmRpY2VzKTsKKysgICAgICAgICAgICB1aW50MzJfdCBTYW1wbGVDb3Vu dCA9IEluZGV4QXVkaW9QYWNrZXQoVHJhY2ssIFBhY2tldCwgQVZDb250ZXh0c1tUcmFja10sICpU cmFja0luZGljZXMpOworICAgICAgICAgICAgIFRyYWNrSW5mby5TYW1wbGVSYXRlID0gQVZDb250 ZXh0c1tUcmFja10uQ29kZWNDb250ZXh0LT5zYW1wbGVfcmF0ZTsKKyAKKyAgICAgICAgICAgICBU cmFja0luZm8uQWRkQXVkaW9GcmFtZShMYXN0VmFsaWRUU1tUcmFja10sCistICAgICAgICAgICAg ICAgIFN0YXJ0U2FtcGxlLCBTYW1wbGVDb3VudCwgS2V5RnJhbWUsIFBhY2tldC5wb3MsIFBhY2tl dC5mbGFncyAmIEFWX1BLVF9GTEFHX0RJU0NBUkQpOworKyAgICAgICAgICAgICAgICBTdGFydFNh bXBsZSwgU2FtcGxlQ291bnQsIEtleUZyYW1lLCBQYWNrZXQtPnBvcywgUGFja2V0LT5mbGFncyAm IEFWX1BLVF9GTEFHX0RJU0NBUkQpOworICAgICAgICAgfQorIAorLSAgICAgICAgaWYgKCEoUGFj a2V0LmZsYWdzICYgQVZfUEtUX0ZMQUdfRElTQ0FSRCkpCistICAgICAgICAgICAgVHJhY2tJbmZv Lkxhc3REdXJhdGlvbiA9IFBhY2tldC5kdXJhdGlvbjsKKysgICAgICAgIGlmICghKFBhY2tldC0+ ZmxhZ3MgJiBBVl9QS1RfRkxBR19ESVNDQVJEKSkKKysgICAgICAgICAgICBUcmFja0luZm8uTGFz dER1cmF0aW9uID0gUGFja2V0LT5kdXJhdGlvbjsKKyAKKy0gICAgICAgIGF2X3BhY2tldF91bnJl ZigmUGFja2V0KTsKKysgICAgICAgIGF2X3BhY2tldF91bnJlZihQYWNrZXQpOworICAgICB9Cisr ICAgIGF2X3BhY2tldF9mcmVlKCZQYWNrZXQpOworIAorICAgICBUcmFja0luZGljZXMtPkZpbmFs aXplKEFWQ29udGV4dHMsIEZvcm1hdENvbnRleHQtPmlmb3JtYXQtPm5hbWUpOworICAgICByZXR1 cm4gVHJhY2tJbmRpY2VzLnJlbGVhc2UoKTsKKyB9CisgCistdm9pZCBGRk1TX0luZGV4ZXI6OlJl YWRUUyhjb25zdCBBVlBhY2tldCAmUGFja2V0LCBpbnQ2NF90ICZUUywgYm9vbCAmVXNlRFRTKSB7 CistICAgIGlmICghVXNlRFRTICYmIFBhY2tldC5wdHMgIT0gQVZfTk9QVFNfVkFMVUUpCistICAg ICAgICBUUyA9IFBhY2tldC5wdHM7Cisrdm9pZCBGRk1TX0luZGV4ZXI6OlJlYWRUUyhjb25zdCBB VlBhY2tldCAqUGFja2V0LCBpbnQ2NF90ICZUUywgYm9vbCAmVXNlRFRTKSB7CisrICAgIGlmICgh VXNlRFRTICYmIFBhY2tldC0+cHRzICE9IEFWX05PUFRTX1ZBTFVFKQorKyAgICAgICAgVFMgPSBQ YWNrZXQtPnB0czsKKyAgICAgaWYgKFRTID09IEFWX05PUFRTX1ZBTFVFKQorICAgICAgICAgVXNl RFRTID0gdHJ1ZTsKKy0gICAgaWYgKFVzZURUUyAmJiBQYWNrZXQuZHRzICE9IEFWX05PUFRTX1ZB TFVFKQorLSAgICAgICAgVFMgPSBQYWNrZXQuZHRzOworKyAgICBpZiAoVXNlRFRTICYmIFBhY2tl dC0+ZHRzICE9IEFWX05PUFRTX1ZBTFVFKQorKyAgICAgICAgVFMgPSBQYWNrZXQtPmR0czsKKyB9 CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvaW5kZXhpbmcuaCBiL3NyYy9jb3JlL2luZGV4aW5nLmgK K2luZGV4IDNjZmMzYzMuLjVjMDY4NjggMTAwNjQ0CistLS0gYS9zcmMvY29yZS9pbmRleGluZy5o CisrKysgYi9zcmMvY29yZS9pbmRleGluZy5oCitAQCAtODAsMTAgKzgwLDEwIEBAIHByaXZhdGU6 CisgICAgIGludDY0X3QgRmlsZXNpemU7CisgICAgIHVpbnQ4X3QgRGlnZXN0WzIwXTsKKyAKKy0g ICAgdm9pZCBSZWFkVFMoY29uc3QgQVZQYWNrZXQgJlBhY2tldCwgaW50NjRfdCAmVFMsIGJvb2wg JlVzZURUUyk7CisrICAgIHZvaWQgUmVhZFRTKGNvbnN0IEFWUGFja2V0ICpQYWNrZXQsIGludDY0 X3QgJlRTLCBib29sICZVc2VEVFMpOworICAgICB2b2lkIENoZWNrQXVkaW9Qcm9wZXJ0aWVzKGlu dCBUcmFjaywgQVZDb2RlY0NvbnRleHQgKkNvbnRleHQpOworICAgICB1aW50MzJfdCBJbmRleEF1 ZGlvUGFja2V0KGludCBUcmFjaywgQVZQYWNrZXQgKlBhY2tldCwgU2hhcmVkQVZDb250ZXh0ICZD b250ZXh0LCBGRk1TX0luZGV4ICZUcmFja0luZGljZXMpOworLSAgICB2b2lkIFBhcnNlVmlkZW9Q YWNrZXQoU2hhcmVkQVZDb250ZXh0ICZWaWRlb0NvbnRleHQsIEFWUGFja2V0ICZwa3QsIGludCAq UmVwZWF0UGljdCwgaW50ICpGcmFtZVR5cGUsIGJvb2wgKkludmlzaWJsZSwgZW51bSBBVlBpY3R1 cmVTdHJ1Y3R1cmUgKkxhc3RQaWNTdHJ1Y3QpOworKyAgICB2b2lkIFBhcnNlVmlkZW9QYWNrZXQo U2hhcmVkQVZDb250ZXh0ICZWaWRlb0NvbnRleHQsIEFWUGFja2V0ICpwa3QsIGludCAqUmVwZWF0 UGljdCwgaW50ICpGcmFtZVR5cGUsIGJvb2wgKkludmlzaWJsZSwgZW51bSBBVlBpY3R1cmVTdHJ1 Y3R1cmUgKkxhc3RQaWNTdHJ1Y3QpOworICAgICB2b2lkIEZyZWUoKTsKKyBwdWJsaWM6CisgICAg IEZGTVNfSW5kZXhlcihjb25zdCBjaGFyICpGaWxlbmFtZSk7CitkaWZmIC0tZ2l0IGEvc3JjL2Nv cmUvdXRpbHMuY3BwIGIvc3JjL2NvcmUvdXRpbHMuY3BwCitpbmRleCBjZTY3NTMzLi44YTJlOTk3 IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvdXRpbHMuY3BwCisrKysgYi9zcmMvY29yZS91dGlscy5j cHAKK0BAIC02MiwxMiArNjIsNiBAQCB2b2lkIENsZWFyRXJyb3JJbmZvKEZGTVNfRXJyb3JJbmZv ICpFcnJvckluZm8pIHsKKyAgICAgfQorIH0KKyAKKy12b2lkIEluaXROdWxsUGFja2V0KEFWUGFj a2V0ICZwa3QpIHsKKy0gICAgYXZfaW5pdF9wYWNrZXQoJnBrdCk7CistICAgIHBrdC5kYXRhID0g bnVsbHB0cjsKKy0gICAgcGt0LnNpemUgPSAwOworLX0KKy0KKyB2b2lkIEZpbGxBUChGRk1TX0F1 ZGlvUHJvcGVydGllcyAmQVAsIEFWQ29kZWNDb250ZXh0ICpDVFgsIEZGTVNfVHJhY2sgJkZyYW1l cykgeworICAgICBBUC5TYW1wbGVGb3JtYXQgPSBzdGF0aWNfY2FzdDxGRk1TX1NhbXBsZUZvcm1h dD4oYXZfZ2V0X3BhY2tlZF9zYW1wbGVfZm10KENUWC0+c2FtcGxlX2ZtdCkpOworICAgICBBUC5C aXRzUGVyU2FtcGxlID0gYXZfZ2V0X2J5dGVzX3Blcl9zYW1wbGUoQ1RYLT5zYW1wbGVfZm10KSAq IDg7CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvdXRpbHMuaCBiL3NyYy9jb3JlL3V0aWxzLmgKK2lu ZGV4IDk4MTlkYzcuLjAwM2FiNzkgMTAwNjQ0CistLS0gYS9zcmMvY29yZS91dGlscy5oCisrKysg Yi9zcmMvY29yZS91dGlscy5oCitAQCAtNTgsNyArNTgsNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8VD4g bWFrZV91bmlxdWUoQXJncyYmLi4uIGFyZ3MpIHsKKyB9CisgCisgdm9pZCBDbGVhckVycm9ySW5m byhGRk1TX0Vycm9ySW5mbyAqRXJyb3JJbmZvKTsKKy12b2lkIEluaXROdWxsUGFja2V0KEFWUGFj a2V0ICZwa3QpOworIHZvaWQgRmlsbEFQKEZGTVNfQXVkaW9Qcm9wZXJ0aWVzICZBUCwgQVZDb2Rl Y0NvbnRleHQgKkNUWCwgRkZNU19UcmFjayAmRnJhbWVzKTsKKyAKKyB2b2lkIExBVkZPcGVuRmls ZShjb25zdCBjaGFyICpTb3VyY2VGaWxlLCBBVkZvcm1hdENvbnRleHQgKiZGb3JtYXRDb250ZXh0 LCBpbnQgVHJhY2spOworZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcCBiL3Ny Yy9jb3JlL3ZpZGVvc291cmNlLmNwcAoraW5kZXggMDZiZDE2MS4uYjg4OTk3MCAxMDA2NDQKKy0t LSBhL3NyYy9jb3JlL3ZpZGVvc291cmNlLmNwcAorKysrIGIvc3JjL2NvcmUvdmlkZW9zb3VyY2Uu Y3BwCitAQCAtNjczLDMwICs2NzMsMzQgQEAgdm9pZCBGRk1TX1ZpZGVvU291cmNlOjpEZWNvZGVO ZXh0RnJhbWUoaW50NjRfdCAmQVN0YXJ0VGltZSwgaW50NjRfdCAmUG9zKSB7CisgICAgIGlmIChI YXNQZW5kaW5nRGVsYXllZEZyYW1lcygpKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBBVlBh Y2tldCBQYWNrZXQ7CistICAgIEluaXROdWxsUGFja2V0KFBhY2tldCk7CistCistICAgIHdoaWxl IChSZWFkRnJhbWUoJlBhY2tldCkgPj0gMCkgeworLSAgICAgICAgaWYgKFBhY2tldC5zdHJlYW1f aW5kZXggIT0gVmlkZW9UcmFjaykgeworLSAgICAgICAgICAgIGF2X3BhY2tldF91bnJlZigmUGFj a2V0KTsKKysgICAgQVZQYWNrZXQgKlBhY2tldCA9IGF2X3BhY2tldF9hbGxvYygpOworKyAgICBp ZiAoIVBhY2tldCkKKysgICAgICAgIHRocm93IEZGTVNfRXhjZXB0aW9uKEZGTVNfRVJST1JfREVD T0RJTkcsIEZGTVNfRVJST1JfQUxMT0NBVElPTl9GQUlMRUQsCisrICAgICAgICAgICAgIkNvdWxk IG5vdCBhbGxvY2F0ZSBwYWNrZXQuIik7CisrCisrICAgIHdoaWxlIChSZWFkRnJhbWUoUGFja2V0 KSA+PSAwKSB7CisrICAgICAgICBpZiAoUGFja2V0LT5zdHJlYW1faW5kZXggIT0gVmlkZW9UcmFj aykgeworKyAgICAgICAgICAgIGF2X3BhY2tldF91bnJlZihQYWNrZXQpOworICAgICAgICAgICAg IGNvbnRpbnVlOworICAgICAgICAgfQorIAorICAgICAgICAgaWYgKEFTdGFydFRpbWUgPCAwKQor LSAgICAgICAgICAgIEFTdGFydFRpbWUgPSBGcmFtZXMuVXNlRFRTID8gUGFja2V0LmR0cyA6IFBh Y2tldC5wdHM7CisrICAgICAgICAgICAgQVN0YXJ0VGltZSA9IEZyYW1lcy5Vc2VEVFMgPyBQYWNr ZXQtPmR0cyA6IFBhY2tldC0+cHRzOworIAorICAgICAgICAgaWYgKFBvcyA8IDApCistICAgICAg ICAgICAgUG9zID0gUGFja2V0LnBvczsKKysgICAgICAgICAgICBQb3MgPSBQYWNrZXQtPnBvczsK KyAKKy0gICAgICAgIGJvb2wgRnJhbWVGaW5pc2hlZCA9IERlY29kZVBhY2tldCgmUGFja2V0KTsK Ky0gICAgICAgIGF2X3BhY2tldF91bnJlZigmUGFja2V0KTsKKy0gICAgICAgIGlmIChGcmFtZUZp bmlzaGVkKQorKyAgICAgICAgYm9vbCBGcmFtZUZpbmlzaGVkID0gRGVjb2RlUGFja2V0KFBhY2tl dCk7CisrICAgICAgICBhdl9wYWNrZXRfdW5yZWYoUGFja2V0KTsKKysgICAgICAgIGlmIChGcmFt ZUZpbmlzaGVkKSB7CisrICAgICAgICAgICAgYXZfcGFja2V0X2ZyZWUoJlBhY2tldCk7CisgICAg ICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIC8vIEZsdXNoIGZp bmFsIGZyYW1lcworLSAgICBJbml0TnVsbFBhY2tldChQYWNrZXQpOworLSAgICBEZWNvZGVQYWNr ZXQoJlBhY2tldCk7CisrICAgIERlY29kZVBhY2tldChQYWNrZXQpOworKyAgICBhdl9wYWNrZXRf ZnJlZSgmUGFja2V0KTsKKyB9CisgCisgYm9vbCBGRk1TX1ZpZGVvU291cmNlOjpTZWVrVG8oaW50 IG4sIGludCBTZWVrT2Zmc2V0KSB7CistLSAKKzIuNDAuMAorCitGcm9tIGJmOWUwM2U5ZTA4NTM0 YzAyNGU1YTc0NGE2NDM3YzRhYWMxNjAyMDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9t OiBEZXJlayBCdWl0ZW5odWlzIDxkZXJlay5idWl0ZW5odWlzQGdtYWlsLmNvbT4KK0RhdGU6IFR1 ZSwgNCBNYXkgMjAyMSAxNDoyMDo0NyArMDEwMAorU3ViamVjdDogW1BBVENIIDIvM10gY29uZmln dXJlOiBSZW1vdmUgZGVwcmVjYXRlZCBBUEkgdXNlCisKK1NpZ25lZC1vZmYtYnk6IERlcmVrIEJ1 aXRlbmh1aXMgPGRlcmVrLmJ1aXRlbmh1aXNAZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFj IHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYjM1 ZWY4MGJjLi5kMTk3MTRkMGYgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZp Z3VyZS5hYworQEAgLTEwMiwxMCArMTAyLDEwIEBAIENGTEFHUz0iJF9DRkxBR1MgJEZGTVBFR19D RkxBR1MiCisKKyBBQ19ERUZVTihbVEVTVF9GRk1QRUddLAorICAgICAgICAgIFtBQ19MSU5LX0lG RUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCistICAgICAgICAgICAgI2luY2x1ZGUgPGxpYmF2Y29k ZWMvYXZjb2RlYy5oPgorKyAgICAgICAgICAgICNpbmNsdWRlIDxsaWJhdmZvcm1hdC9hdmZvcm1h dC5oPgorICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJzd3NjYWxlL3N3c2NhbGUuaD4KKyAgICAg ICAgICAgICBdXSxbWworLSAgICAgICAgICAgICAgICBhdmNvZGVjX3JlZ2lzdGVyX2FsbCgpOwor KyAgICAgICAgICAgICAgICBhdmZvcm1hdF9uZXR3b3JrX2luaXQoKTsKKyAgICAgICAgICAgICAg ICAgc3dzY2FsZV92ZXJzaW9uKCk7CisgICAgICAgICAgICAgXV0pXSwgW2V2YWwgJDE9eWVzXSwg W2V2YWwgJDE9bm9dKQorICAgICAgICAgXSkKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mZm1zMi90 ZW1wbGF0ZSBiL3NyY3BrZ3MvZmZtczIvdGVtcGxhdGUKaW5kZXggMzY1ZjY0ZDEwY2JhYi4uMTY0 MWVjZjQzYmU1YiAxMDA2NDQKLS0tIGEvc3JjcGtncy9mZm1zMi90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2ZmbXMyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn ZmZtczInCiBwa2duYW1lPWZmbXMyCiB2ZXJzaW9uPTIuNDAKLXJldmlzaW9uPTEKK3JldmlzaW9u PTIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWVuYWJsZS1z aGFyZWQgLS1kaXNhYmxlLXN0YXRpYyIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBhdXRv Y29uZiBhdXRvbWFrZSBsaWJ0b29sIgoKRnJvbSA5YjNiNjBkZTM0Y2FiZDExODdjYzI1YTBkNjY2 ODM4YjRiNmY0YzVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwMzYvMTE1XSBmcmVlcmRwOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0K IC4uLi9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlhYS5wYXRjaCAgICB8IDQyICsrKysr KysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA0MiBpbnNlcnRpb25zKCspCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjcGtncy9mcmVlcmRwL3BhdGNoZXMvZmZtcGVnNl9hYTJjYjlhYS5wYXRj aAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZnJlZXJkcC9wYXRjaGVzL2ZmbXBlZzZfYWEyY2I5YWEu cGF0Y2ggYi9zcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFhLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLmE0MzI0ZGEzYTg4MjIKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZyZWVyZHAvcGF0Y2hlcy9mZm1wZWc2X2FhMmNiOWFh LnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gYWEyY2I5YWE1ZmY1NTYyNDMzNTk4YmExNjhh NDY2ZTA3NTJiY2EwZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGFrYWxsYWJldGgg PGFrYWxsYWJldGhAcG9zdGVvLm5ldD4KK0RhdGU6IFR1ZSwgMTQgRmViIDIwMjMgMDc6NDg6NTQg KzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4ZWQgIzg2ODY6IFVwZGF0ZSBoMjY0IHRvIHVzZSBu ZXcgRkZNUEVHIEFQSQorCistLS0KKyBjaGFubmVscy90c21mL2NsaWVudC9mZm1wZWcvdHNtZl9m Zm1wZWcuYyB8IDIgKysKKyBsaWJmcmVlcmRwL2NvZGVjL2gyNjRfZmZtcGVnLmMgICAgICAgICAg ICB8IDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0 IGEvY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZtcGVnLmMgYi9jaGFubmVscy90 c21mL2NsaWVudC9mZm1wZWcvdHNtZl9mZm1wZWcuYworaW5kZXggMzM5NDYyZDg2NWYuLmJlZWE4 MGI3YTFlIDEwMDY0NAorLS0tIGEvY2hhbm5lbHMvdHNtZi9jbGllbnQvZmZtcGVnL3RzbWZfZmZt cGVnLmMKKysrKyBiL2NoYW5uZWxzL3RzbWYvY2xpZW50L2ZmbXBlZy90c21mX2ZmbXBlZy5jCitA QCAtMjM5LDggKzIzOSwxMCBAQCBzdGF0aWMgQk9PTCB0c21mX2ZmbXBlZ19pbml0X3N0cmVhbShJ VFNNRkRlY29kZXIqIGRlY29kZXIsIGNvbnN0IFRTX0FNX01FRElBX1RZUAorIAkJfQorIAl9Cisg CisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lOVCg1OSwgMTgsIDEw MCkKKyAJaWYgKG1kZWNvZGVyLT5jb2RlYy0+Y2FwYWJpbGl0aWVzICYgQVZfQ09ERUNfQ0FQX1RS VU5DQVRFRCkKKyAJCW1kZWNvZGVyLT5jb2RlY19jb250ZXh0LT5mbGFncyB8PSBBVl9DT0RFQ19G TEFHX1RSVU5DQVRFRDsKKysjZW5kaWYKKyAKKyAJcmV0dXJuIFRSVUU7CisgfQorZGlmZiAtLWdp dCBhL2xpYmZyZWVyZHAvY29kZWMvaDI2NF9mZm1wZWcuYyBiL2xpYmZyZWVyZHAvY29kZWMvaDI2 NF9mZm1wZWcuYworaW5kZXggOGEyM2RiMjQ3M2MuLjg5NmEzMzMwMTliIDEwMDY0NAorLS0tIGEv bGliZnJlZXJkcC9jb2RlYy9oMjY0X2ZmbXBlZy5jCisrKysgYi9saWJmcmVlcmRwL2NvZGVjL2gy NjRfZmZtcGVnLmMKK0BAIC02MTUsMTAgKzYxNSwxMiBAQCBzdGF0aWMgQk9PTCBsaWJhdmNvZGVj X2luaXQoSDI2NF9DT05URVhUKiBoMjY0KQorIAkJCWdvdG8gRVhDRVBUSU9OOworIAkJfQorIAor KyNpZiBMSUJBVkNPREVDX1ZFUlNJT05fSU5UIDwgQVZfVkVSU0lPTl9JTlQoNTksIDE4LCAxMDAp CisgCQlpZiAoc3lzLT5jb2RlY0RlY29kZXItPmNhcGFiaWxpdGllcyAmIEFWX0NPREVDX0NBUF9U UlVOQ0FURUQpCisgCQl7CisgCQkJc3lzLT5jb2RlY0RlY29kZXJDb250ZXh0LT5mbGFncyB8PSBB Vl9DT0RFQ19GTEFHX1RSVU5DQVRFRDsKKyAJCX0KKysjZW5kaWYKKyAKKyAjaWZkZWYgV0lUSF9W QUFQSQorIAoKRnJvbSBiOGJkYmMwNzMyMjRkMGYzZWU4YThhNjc2MzEyYWEwMDgzZDg1MmUwIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzcv MTE1XSBnZXJiZXJhOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ2VyYmVy YS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZ2VyYmVyYS90ZW1wbGF0ZSBiL3NyY3BrZ3Mv Z2VyYmVyYS90ZW1wbGF0ZQppbmRleCBhZTE0ZjM1Yzc2N2MwLi4yZGMwYWMwY2UwM2I1IDEwMDY0 NAotLS0gYS9zcmNwa2dzL2dlcmJlcmEvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9nZXJiZXJhL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ2VyYmVyYScKIHBr Z25hbWU9Z2VyYmVyYQogdmVyc2lvbj0xLjEyLjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1 aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURXSVRIX1NZU1RFTUQ9MCAtRFdJVEhf QVZDT0RFQz0xIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgoKRnJvbSA2Y2YxMTRkOTkw NTE4OTI4Y2JlMjk0NTYzZGI2MWFmNDVhMjRkMDcxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzgvMTE1XSBnb2xkZW5kaWN0OiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ29sZGVuZGljdC90ZW1wbGF0ZSB8IDQgKyst LQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2dvbGRlbmRpY3QvdGVtcGxhdGUgYi9zcmNwa2dzL2dvbGRlbmRpY3Qv dGVtcGxhdGUKaW5kZXggZjRhMDU3NTlmNjkzZC4uOTdmNDQzNDdiMDNhNiAxMDA2NDQKLS0tIGEv c3JjcGtncy9nb2xkZW5kaWN0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ29sZGVuZGljdC90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dvbGRlbmRpY3QnCiBw a2duYW1lPWdvbGRlbmRpY3QKIHZlcnNpb249MS41LjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IGJ1aWxkX3N0eWxlPXFtYWtlCiBjb25maWd1cmVfYXJncz0iQ09ORklHKz16aW1fc3VwcG9ydCBn b2xkZW5kaWN0LnBybyIKIGhvc3RtYWtlZGVwZW5kcz0icXQ1LXFtYWtlIHBrZy1jb25maWcgcXQ1 LWhvc3QtdG9vbHMiCkBAIC0xMCw3ICsxMCw3IEBAIG1ha2VkZXBlbmRzPSJ0aWZmLWRldmVsIHF0 NS1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwgemxpYi1kZXZlbAogIHF0NS13ZWJraXQtZGV2ZWwgbHpv LWRldmVsIGJ6aXAyLWRldmVsIGxpYmFvLWRldmVsIHF0NS1zdmctZGV2ZWwKICBsaWJlYi1kZXZl bCBxdDUteDExZXh0cmFzLWRldmVsIGZmbXBlZy1kZXZlbCBsaWJsem1hLWRldmVsCiAgcXQ1LW11 bHRpbWVkaWEtZGV2ZWwiCi1zaG9ydF9kZXNjPSJBIGZlYXR1cmUtcmljaCBkaWN0aW9uYXJ5IGxv b2t1cCBwcm9ncmFtIgorc2hvcnRfZGVzYz0iRmVhdHVyZS1yaWNoIGRpY3Rpb25hcnkgbG9va3Vw IHByb2dyYW0iCiBtYWludGFpbmVyPSJKb2huIDxtZUBqb2hubnluYXRvci5kZXY+IgogbGljZW5z ZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwOi8vZ29sZGVuZGljdC5vcmcvIgoK RnJvbSBiZTdkZmI3NGE5ZTk0YzBiOTdiZjZkNzI1MTVlODVkMjI1NzNkNWFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQs IDIyIE1hciAyMDIzIDIwOjAxOjQ3IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMzkvMTE1XSBnc3Qt bGliYXY6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9nc3QtbGliYXYvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dzdC1saWJhdi90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0 LWxpYmF2L3RlbXBsYXRlCmluZGV4IDM3NDg1ZjZmNmE5ZTguLmY2MTBlOTY2ZjIzY2QgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvZ3N0LWxpYmF2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZ3N0LWxpYmF2 L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3N0LWxpYmF2 JwogcGtnbmFtZT1nc3QtbGliYXYKIHZlcnNpb249MS4yMi41Ci1yZXZpc2lvbj0xCityZXZpc2lv bj0yCiBidWlsZF9zdHlsZT1tZXNvbgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIHlhc20i CiBtYWtlZGVwZW5kcz0ib3JjLWRldmVsIGdzdC1wbHVnaW5zLWJhc2UxLWRldmVsIGZmbXBlZy1k ZXZlbCIKCkZyb20gYzRjNDcwMjliNDk4YzA0ZjExMjUzZGJhMDAyMTUwY2I3YzE5ODFjNSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQwLzEx NV0gZ3N0LXJ0c3Atc2VydmVyOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mv Z3N0LXJ0c3Atc2VydmVyL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nc3QtcnRzcC1zZXJ2 ZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZQppbmRleCBmMjY2 ZjQ3NzdiM2VhLi4wMTE0NDRlYjI2NzM5IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1ydHNwLXNl cnZlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dzdC1ydHNwLXNlcnZlci90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2dzdC1ydHNwLXNlcnZlcicKIHBrZ25h bWU9Z3N0LXJ0c3Atc2VydmVyCiB2ZXJzaW9uPTEuMjIuNQotcmV2aXNpb249MQorcmV2aXNpb249 MgogYnVpbGRfc3R5bGU9bWVzb24KIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBweXRob24z IgogbWFrZWRlcGVuZHM9ImdsaWItZGV2ZWwgZ3N0LXBsdWdpbnMtYmFkMS1kZXZlbCBnb2JqZWN0 LWludHJvc3BlY3Rpb24KCkZyb20gZWIzYTk3ZjJhN2RjZjUxNTI5MzFiMjZkM2ZiZjRlNzY5OTdh OGNjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWls LmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0NyAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDQxLzExNV0gZ3V2Y3ZpZXc6IHVwZGF0ZSB0byAyLjAuOC4KCi0tLQogc3JjcGtncy9ndXZj dmlldy9wYXRjaGVzL2ZpeC1pbmNsdWRlLnBhdGNoIHwgMTAgKysrKysrKysrKwogc3JjcGtncy9n dXZjdmlldy90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgIHwgIDUgKystLS0KIDIgZmlsZXMgY2hh bmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL2d1dmN2aWV3L3BhdGNoZXMvZml4LWluY2x1ZGUucGF0Y2gKCmRpZmYgLS1naXQg YS9zcmNwa2dzL2d1dmN2aWV3L3BhdGNoZXMvZml4LWluY2x1ZGUucGF0Y2ggYi9zcmNwa2dzL2d1 dmN2aWV3L3BhdGNoZXMvZml4LWluY2x1ZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwMC4uNTAzYzJhZjNiNzhjMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvZ3V2Y3ZpZXcvcGF0Y2hlcy9maXgtaW5jbHVkZS5wYXRjaApAQCAtMCwwICsxLDEwIEBACist LS0gYS9ndXZjdmlldy9ndXZjdmlldy5jCisrKysgYi9ndXZjdmlldy9ndXZjdmlldy5jCitAQCAt MjgsNiArMjgsNyBAQAorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICNpbmNsdWRlIDxzeXMvcmVz b3VyY2UuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8bG9jYWxlLmg+CisgCisg I2luY2x1ZGUgImd2aWV3LmgiCisgI2luY2x1ZGUgImd2aWV3djRsMmNvcmUuaCIKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZ3V2Y3ZpZXcvdGVtcGxhdGUgYi9zcmNwa2dzL2d1dmN2aWV3L3RlbXBsYXRl CmluZGV4IDM0NWNmNjAwNmYyNDYuLjg2YTdmZDYxOTYxMmMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv Z3V2Y3ZpZXcvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9ndXZjdmlldy90ZW1wbGF0ZQpAQCAtMSw4 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2d1dmN2aWV3JwogcGtnbmFtZT1ndXZjdmll dwotdmVyc2lvbj0yLjAuNwordmVyc2lvbj0yLjAuOAogcmV2aXNpb249MQotY3JlYXRlX3dya3Ny Yz15ZXMKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLWRpc2Fi bGUtc3RhdGljIC0tZGlzYWJsZS1kZWJpYW4tbWVudSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNv bmZpZyBpbnRsdG9vbCBhdXRvY29uZiBhdXRvbWFrZSBsaWJ0b29sIGdsaWItZGV2ZWwiCkBAIC0x NCw3ICsxMyw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4i CiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHA6Ly9ndXZjdmlldy5z b3VyY2Vmb3JnZS5uZXQvIgogZGlzdGZpbGVzPSIke1NPVVJDRUZPUkdFX1NJVEV9LyR7cGtnbmFt ZX0vJHtwa2duYW1lfS1zcmMtJHt2ZXJzaW9ufS50YXIuYnoyIgotY2hlY2tzdW09ZjQ3ZDUxZmJk MDZlNDRlZWFhMWE4MmY0YTE1M2M5Mjc1MjdjOTBkOTQ1MTQxOTdhNzBiMjk1NjAyOGNjOGFkNAor Y2hlY2tzdW09YTIxZjRlNDQ4Mjg2NjY2Y2YyN2JhZmVmNTI5MGNjOTUzYTBhMTc5NmI3NTJlNWJi ZTUyMTI2NmRjMTIzMGM4MQogCiBwb3N0X3BhdGNoKCkgewogCXNlZCAnMzFhI2luY2x1ZGUgPGxv Y2FsZS5oPicgLWkgIGd1dmN2aWV3L2d1dmN2aWV3LmMKCkZyb20gNmE2YzhmNTNiZmQ2NTc2MjNl NDYzNGYyOTAwNDI5ZGQ5NmE1N2I2MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxp Y2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo0OCAt MDQwMApTdWJqZWN0OiBbUEFUQ0ggMDQyLzExNV0gaGFuZGJyYWtlOiB1cGRhdGUgdG8gMS42LjEK Ci0tLQogLi4uL3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1saW5rLWZsYWcucGF0Y2ggICAgfCAx MSArKysrKystLS0tLQogLi4uL2hhbmRicmFrZS9wYXRjaGVzL2xpYmhiLXZwbC1pbmNsdWRlLnBh dGNoICAgfCAxNSArKysrKysrKysrKysrKysKIHNyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlICAg ICAgICAgICAgICAgICAgICAgIHwgMTcgKysrKysrKysrKy0tLS0tLS0KIDMgZmlsZXMgY2hhbmdl ZCwgMzEgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12cGwtaW5jbHVkZS5wYXRjaAoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1saW5rLWZs YWcucGF0Y2ggYi9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2ZpeC1taXNzaW5nLXgyNjUtbGlu ay1mbGFnLnBhdGNoCmluZGV4IDI2ZGIwMzg2N2EwYzguLmQ2YmIyZWRhNjI3YTMgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvaGFuZGJyYWtlL3BhdGNoZXMvZml4LW1pc3NpbmcteDI2NS1saW5rLWZsYWcu cGF0Y2gKKysrIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9maXgtbWlzc2luZy14MjY1LWxp bmstZmxhZy5wYXRjaApAQCAtMSwxNCArMSwxNSBAQAogLS0tIGEvZ3RrL2NvbmZpZ3VyZS5hYwog KysrIGIvZ3RrL2NvbmZpZ3VyZS5hYwogQEAgLTIwMyw3ICsyMDMsNyBAQAotIAorCiAgQU1fQ09O RElUSU9OQUwoW01JTkdXXSwgW3Rlc3QgIngkbWluZ3dfZmxhZyIgPSAieHllcyJdKQotIAotLUhC X0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZmb3JtYXQgLWxhdmZpbHRlciAtbGF2Y29k ZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUgLWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2 ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlzZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRo ZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxiejIgLWxibHVyYXkgLWxhc3MgLWxmb250 Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3NvbiAtbG9wdXMgLWxzcGVleCAtbHR1cmJv anBlZyAtbGx6bWEgLWx6aW1nIgotK0hCX0xJQlM9IiRIQl9MSUJTIC1saGFuZGJyYWtlIC1sYXZm b3JtYXQgLWxhdmZpbHRlciAtbGF2Y29kZWMgLWxhdnV0aWwgLWxkYXYxZCAtbHN3cmVzYW1wbGUg LWxwb3N0cHJvYyAtbGR2ZG5hdiAtbGR2ZHJlYWQgLWxtcDNsYW1lIC1sdm9yYmlzIC1sdm9yYmlz ZW5jIC1sb2dnIC1sc3dzY2FsZSAtbHRoZW9yYWVuYyAtbHRoZW9yYWRlYyAtbHZweCAtbHogLWxi ejIgLWxibHVyYXkgLWxhc3MgLWxmb250Y29uZmlnIC1sZnJlZXR5cGUgLWx4bWwyIC1samFuc3Nv biAtbG9wdXMgLWxzcGVleCAtbHR1cmJvanBlZyAtbGx6bWEgLWx6aW1nIC1sZGwiCisKKy1IQl9M SUJTPSIkSEJfTElCUyAtbGhhbmRicmFrZSAtbGF2Zm9ybWF0IC1sYXZmaWx0ZXIgLWxhdmNvZGVj IC1sYXZ1dGlsIC1sZGF2MWQgLWxzd3Jlc2FtcGxlIC1scG9zdHByb2MgLWxkdmRuYXYgLWxkdmRy ZWFkIC1sbXAzbGFtZSAtbHZvcmJpcyAtbHZvcmJpc2VuYyAtbG9nZyAtbHN3c2NhbGUgLWx0aGVv cmFlbmMgLWx0aGVvcmFkZWMgLWx2cHggLWx6IC1sYnoyIC1sYmx1cmF5IC1sYXNzIC1sZm9udGNv bmZpZyAtbGZyZWV0eXBlIC1seG1sMiAtbGphbnNzb24gLWxvcHVzIC1sc3BlZXggLWx0dXJib2pw ZWcgLWxsem1hIC1semltZyAtbFN2dEF2MUVuYyIKKytIQl9MSUJTPSIkSEJfTElCUyAtbGhhbmRi cmFrZSAtbGF2Zm9ybWF0IC1sYXZmaWx0ZXIgLWxhdmNvZGVjIC1sYXZ1dGlsIC1sZGF2MWQgLWxz d3Jlc2FtcGxlIC1scG9zdHByb2MgLWxkdmRuYXYgLWxkdmRyZWFkIC1sbXAzbGFtZSAtbHZvcmJp cyAtbHZvcmJpc2VuYyAtbG9nZyAtbHN3c2NhbGUgLWx0aGVvcmFlbmMgLWx0aGVvcmFkZWMgLWx2 cHggLWx6IC1sYnoyIC1sYmx1cmF5IC1sYXNzIC1sZm9udGNvbmZpZyAtbGZyZWV0eXBlIC1seG1s MiAtbGphbnNzb24gLWxvcHVzIC1sc3BlZXggLWx0dXJib2pwZWcgLWxsem1hIC1semltZyAtbFN2 dEF2MUVuYyAtbGRsIgogIEhCX0NQUEZMQUdTPSIkSEJfQ1BQRkxBR1MgJEhCSU5DIgotIAorCiAg UEtHX0NIRUNLX01PRFVMRVMoW3gyNjRdLCBbeDI2NF0sIHN5c194MjY0PXllcywgc3lzX3gyNjQ9 bm8pCisKIC0tLSBhL3Rlc3QvbW9kdWxlLmRlZnMKICsrKyBiL3Rlc3QvbW9kdWxlLmRlZnMKIEBA IC02OSw2ICs2OSw5IEBACmRpZmYgLS1naXQgYS9zcmNwa2dzL2hhbmRicmFrZS9wYXRjaGVzL2xp YmhiLXZwbC1pbmNsdWRlLnBhdGNoIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0Y2hlcy9saWJoYi12 cGwtaW5jbHVkZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw Li4yOThmOWY0YWIyOGYyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9oYW5kYnJha2UvcGF0 Y2hlcy9saWJoYi12cGwtaW5jbHVkZS5wYXRjaApAQCAtMCwwICsxLDE1IEBACistLS0gYS9saWJo Yi9tb2R1bGUuZGVmcwkyMDIzLTAxLTIyIDExOjM2OjQ5LjAwMDAwMDAwMCAtMDUwMAorKysrIGIv bGliaGIvbW9kdWxlLmRlZnMJMjAyMy0wNC0wMyAyMjozNzo1Mi4zOTU0NjcwMTAgLTA0MDAKK0BA IC00NiwxMSArNDYsNyBAQAorIExJQkhCLkdDQy5JICs9ICQoTElCSEIuYnVpbGQvKSAkKENPTlRS SUIuYnVpbGQvKWluY2x1ZGUKKyAKKyBpZmVxICgxLCQoRkVBVFVSRS5xc3YpKQorLSAgICBpZmVx ICgkKEhPU1Quc3lzdGVtKSxmcmVlYnNkKSkKKy0gICAgICAgIExJQkhCLkdDQy5JICs9ICQoTE9D QUxCQVNFKS9pbmNsdWRlL3ZwbAorLSAgICBlbHNlCistICAgICAgICBMSUJIQi5HQ0MuSSArPSAk KENPTlRSSUIuYnVpbGQvKWluY2x1ZGUvdnBsCistICAgIGVuZGlmCisrICAgIExJQkhCLkdDQy5J ICs9IC91c3IvaW5jbHVkZS92cGwKKyBlbmRpZgorIAorIGlmbmVxICgsJChmaWx0ZXIgJChIT1NU LnN5c3RlbSksZnJlZWJzZCBuZXRic2Qgb3BlbmJzZCkpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2hh bmRicmFrZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlCmluZGV4IGNhNWU0 NTcxZTQ5YzMuLmMzMmNiMWJmYTMxZjQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaGFuZGJyYWtlL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvaGFuZGJyYWtlL3RlbXBsYXRlCkBAIC0xLDEwICsxLDEwIEBA CiAjIFRlbXBsYXRlIGZpbGUgZm9yICdoYW5kYnJha2UnCiBwa2duYW1lPWhhbmRicmFrZQotdmVy c2lvbj0xLjUuMQordmVyc2lvbj0xLjYuMQogcmV2aXNpb249MQogYnVpbGRfc3R5bGU9Z251LWNv bmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZm9yY2UgLS1kaXNhYmxlLWd0ay11cGRhdGUtY2hl Y2tzIC0tZGlzYWJsZS1kZi1mZXRjaCAtLWhhcmRlbgotICQodm9wdF9lbmFibGUgZmRrX2FhYyBm ZGstYWFjKSAkKHZvcHRfZW5hYmxlIG52ZW5jKSIKKyAkKHZvcHRfZW5hYmxlIGZka19hYWMgZmRr LWFhYykgJCh2b3B0X2VuYWJsZSBudmVuYykgJCh2b3B0X2VuYWJsZSBxc3YpIgogbWFrZV9idWls ZF9hcmdzPSItQyAke1hCUFNfVFJJUExFVH0iCiBtYWtlX2luc3RhbGxfYXJncz0iLUMgJHtYQlBT X1RSSVBMRVR9IgogaG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBjbWFrZSBnZXR0ZXh0LWRldmVs IGdsaWItZGV2ZWwgaW50bHRvb2wgbGlidG9vbCBtNCBtZXNvbiBuYXNtIHBrZy1jb25maWcgcHl0 aG9uMyIKQEAgLTEyLDggKzEyLDExIEBAIG1ha2VkZXBlbmRzPSJiemlwMi1kZXZlbCBmZm1wZWct ZGV2ZWwgZ3N0LXBsdWdpbnMtYmFzZTEtZGV2ZWwgZ3RrKzMtZGV2ZWwKICBqYW5zc29uLWRldmVs IGxhbWUtZGV2ZWwgbGliYXNzLWRldmVsIGxpYmJsdXJheS1kZXZlbCBsaWJkYXYxZC1kZXZlbAog IGxpYmR2ZG5hdi1kZXZlbCBsaWJkdmRyZWFkLWRldmVsIGxpYmd1ZGV2LWRldmVsIGxpYm51bWEt ZGV2ZWwKICBsaWJzYW1wbGVyYXRlLWRldmVsIGxpYnRoZW9yYS1kZXZlbCBsaWJ2b3JiaXMtZGV2 ZWwgbGlidnB4LWRldmVsIGxpYnhtbDItZGV2ZWwKLSBvcHVzLWRldmVsIHNwZWV4LWRldmVsIHgy NjQtZGV2ZWwgeDI2NS1kZXZlbCB6aW1nLWRldmVsCisgb3B1cy1kZXZlbCBzcGVleC1kZXZlbCB4 MjY0LWRldmVsIHgyNjUtZGV2ZWwgemltZy1kZXZlbCBsaWJzdnQtYXYxLWRldmVsCiAgJCh2b3B0 X2lmIGZka19hYWMgZmRrLWFhYy1kZXZlbCkKKyAkKHZvcHRfaWYgcXN2IGxpYnZhLWRldmVsKQor ICQodm9wdF9pZiBxc3YgbGliZHJtLWRldmVsKQorICQodm9wdF9pZiBxc3Ygb25ldnBsLWRldmVs KQogICQodm9wdF9pZiBudmVuYyBudi1jb2RlYy1oZWFkZXJzKSIKIGRlcGVuZHM9ImRlc2t0b3At ZmlsZS11dGlscyBnc3QtcGx1Z2lucy1nb29kMSBoaWNvbG9yLWljb24tdGhlbWUiCiBzaG9ydF9k ZXNjPSJNdWx0aXRocmVhZGVkIHZpZGVvIHRyYW5zY29kZXIiCkBAIC0yMSwxNSArMjQsMTUgQEAg bWFpbnRhaW5lcj0iRW5ubyBCb2xhbmQgPGdvdHRveEB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9 IkdQTC0yLjAtb25seSIKIGhvbWVwYWdlPSJodHRwczovL2hhbmRicmFrZS5mci8iCiBkaXN0Zmls ZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9IYW5kQnJha2UvSGFuZEJyYWtlL3JlbGVhc2VzL2Rvd25s b2FkLyR7dmVyc2lvbn0vSGFuZEJyYWtlLSR7dmVyc2lvbn0tc291cmNlLnRhci5iejIiCi1jaGVj a3N1bT0zOTk5ZmUwNmQ1MzA5YzgxOTc5OWE3M2E5NjhhOGVjMzg0MGU3ODQwYzJiNjRhZjhmNWNk YjdmZDhjOTQzMGYwCitjaGVja3N1bT05NGNjZmUwM2RiOTE3YTkxNjUwMDAwYzUxMGY3ZmQ1M2Y4 NDRkYTE5ZjE5YWQ0YjRiZTFiOGY2YmMzMWE4ZDRjCiBub2Nyb3NzPXllcwogCi1idWlsZF9vcHRp b25zPSJmZGtfYWFjIG52ZW5jIgorYnVpbGRfb3B0aW9ucz0iZmRrX2FhYyBudmVuYyBxc3YiCiAK IGNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgogCXg4Nl82NCp8aTY4NiopCiAJCUNGTEFH Uz0iLW1zc2UiCi0JCWJ1aWxkX29wdGlvbnNfZGVmYXVsdD0ibnZlbmMiCisJCWJ1aWxkX29wdGlv bnNfZGVmYXVsdD0ibnZlbmMgcXN2IgogCQk7OwogZXNhYwogCkBAIC0zNyw3ICs0MCw3IEBAIHBy ZV9jb25maWd1cmUoKSB7CiAJIyB1c2Ugc3lzdGVtIGxpYnJhcmllcywgZG9uJ3QgZG93bmxvYWQg dGhlbQogCXJtIC1yZiBjb250cmliLwogCWZvciBtb2R1bGUgaW4gZmRrLWFhYyBmZm1wZWcgbGli Ymx1cmF5IGxpYmRhdjFkIGxpYmR2ZG5hdiBsaWJkdmRyZWFkIG52ZW5jIFwKLQkJeDI2NSB6aW1n OyBkbworCQl4MjY1IHppbWcgc3Z0LWF2MSBsaWJ2cGw7IGRvCiAJICAgIHZzZWQgLWkgIi9NT0RV TEVTICs9IGNvbnRyaWJcLyR7bW9kdWxlfS9kIiBtYWtlL2luY2x1ZGUvbWFpbi5kZWZzCiAJZG9u ZQogfQoKRnJvbSAwYzg3MzE4MTA1NDNhMTFmMmU0YjAxYWQ1ZWM1NjUxZTA4Y2QyMTY5IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDMvMTE1 XSBoZWRnZXdhcnM6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9oZWRn ZXdhcnMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9oZWRnZXdhcnMvdGVtcGxhdGUg Yi9zcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0ZQppbmRleCAxNWExZGY2ZDg4NjFkLi5kMWI3Mjkw YmZkYzE5IDEwMDY0NAotLS0gYS9zcmNwa2dzL2hlZGdld2Fycy90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL2hlZGdld2Fycy90ZW1wbGF0ZQpAQCAtMSwxMyArMSwxMyBAQAogIyBUZW1wbGF0ZSBmaWxl IGZvciAnaGVkZ2V3YXJzJwogcGtnbmFtZT1oZWRnZXdhcnMKIHZlcnNpb249MS4wLjIKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURO T1NFUlZFUj0xIC1EREFUQV9JTlNUQUxMX0RJUj0vdXNyL3NoYXJlLyR7cGtnbmFtZX0KICAtRFBI WVNGU19TWVNURU09MSAtRE1JTklNQUxfRkxBR1M9MSIKIG1ha2VfY21kPW1ha2UKIGhvc3RtYWtl ZGVwZW5kcz0ibHVhNTEgcGtnLWNvbmZpZyBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMiCi1tYWtl ZGVwZW5kcz0iZmZtcGVnLWRldmVsIGx1YTUxLWRldmVsIHBoeXNmcy1kZXZlbCBxdDUtdG9vbHMt ZGV2ZWwgU0RMMl9pbWFnZS1kZXZlbAorbWFrZWRlcGVuZHM9ImZmbXBlZzQtZGV2ZWwgbHVhNTEt ZGV2ZWwgcGh5c2ZzLWRldmVsIHF0NS10b29scy1kZXZlbCBTREwyX2ltYWdlLWRldmVsCiAgU0RM Ml9taXhlci1kZXZlbCBTREwyX25ldC1kZXZlbCBTREwyX3R0Zi1kZXZlbCIKIGRlcGVuZHM9Imxp YmZyZWVnbHV0Igogc2hvcnRfZGVzYz0iRnVubnkgdHVybi1iYXNlZCBhcnRpbGxlcnkgZ2FtZSwg ZmVhdHVyaW5nIGZpZ2h0aW5nIEhlZGdlaG9ncyEiCgpGcm9tIGQzOTEzMmQ0NThiZDVhZjU4ZmY2 ZjEyMmQ5NDkyNzA5Y2I3MTM3MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0 MDAKU3ViamVjdDogW1BBVENIIDA0NC8xMTVdIGlkamM6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40 LjMKCi0tLQogc3JjcGtncy9pZGpjL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pZGpjL3Rl bXBsYXRlIGIvc3JjcGtncy9pZGpjL3RlbXBsYXRlCmluZGV4IGIyMDVlNzQ3NDVmZTEuLjM2YTc1 YmFmNTk3YzUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvaWRqYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2lkamMvdGVtcGxhdGUKQEAgLTUsNyArNSw3IEBAIHJldmlzaW9uPTQKIGJ1aWxkX3N0eWxlPWdu dS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBnaXQgcHl0aG9uMyBhdXRv bWFrZSBnZXR0ZXh0LWRldmVsIGxpYnRvb2wiCiBtYWtlZGVwZW5kcz0ibGlidm9yYmlzLWRldmVs IGxpYm9nZy1kZXZlbCBqYWNrLWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwKLSBsaWJmbGFjLWRl dmVsIGxpYnNuZGZpbGUtZGV2ZWwgbXBnMTIzLWRldmVsIGZmbXBlZy1kZXZlbCBzcGVleC1kZXZl bAorIGxpYmZsYWMtZGV2ZWwgbGlic25kZmlsZS1kZXZlbCBtcGcxMjMtZGV2ZWwgZmZtcGVnNC1k ZXZlbCBzcGVleC1kZXZlbAogIGdsaWItZGV2ZWwgcGl4bWFuLWRldmVsIGxhbWUtZGV2ZWwgcHl0 aG9uMy1nb2JqZWN0LWRldmVsIGxpYnNob3V0LWlkamMtZGV2ZWwKICBvcHVzLWRldmVsIHR3b2xh bWUtZGV2ZWwgcHl0aG9uMy1tdXRhZ2VuIHB5dGhvbjMtZGV2ZWwiCiBkZXBlbmRzPSJweXRob24z LWdvYmplY3QgcHl0aG9uMy1tdXRhZ2VuIGRlc2t0b3AtZmlsZS11dGlscyBzaGFyZWQtbWltZS1p bmZvIHB5dGhvbjMtZGJ1cyBqYWNrIgoKRnJvbSA0M2ZkZjRiOTg3ZWFmZjdlOTIxN2M0M2ZkNGNi OTU5OTNmNWZkZTgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwNDUvMTE1XSBrZmlsZW1ldGFkYXRhNTogcmV2YnVtcCBmb3IgZmZtcGVnLTYu MAoKLS0tCiBzcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0ZSBiL3NyY3BrZ3Mva2ZpbGVtZXRhZGF0YTUvdGVtcGxh dGUKaW5kZXggMDBmN2E5OGNmNjM5OS4uZTI5NGFlNWFmOTQ3YyAxMDA2NDQKLS0tIGEvc3JjcGtn cy9rZmlsZW1ldGFkYXRhNS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2tmaWxlbWV0YWRhdGE1L3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna2ZpbGVtZXRhZGF0 YTUnCiBwa2duYW1lPWtmaWxlbWV0YWRhdGE1CiB2ZXJzaW9uPTUuMTExLjAKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9Imtjb3JlYWRk b25zIGV4dHJhLWNtYWtlLW1vZHVsZXMgcGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBxdDUtcW1h a2UKICBnZXR0ZXh0IGtjb3JlYWRkb25zIHB5dGhvbjMiCgpGcm9tIDlkM2UzYjMzNWU2NWZmZGMz ZDc4ZDMxOTk4MDA5YWIzMGI1YjRjODcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHps aWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDgg LTA0MDAKU3ViamVjdDogW1BBVENIIDA0Ni8xMTVdIGtpZDM6IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy9raWQzL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDE3ICsrKysrKysr KysrKysrKysrCiBzcmNwa2dzL2tpZDMvdGVtcGxhdGUgICAgICAgICAgICAgIHwgIDIgKy0KIDIg ZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3Mva2lkMy9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKCmRpZmYgLS1naXQg YS9zcmNwa2dzL2tpZDMvcGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9raWQzL3BhdGNo ZXMvZmZtcGVnNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw Li4xMzVmYzUwZTA3YzliCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9raWQzL3BhdGNoZXMv ZmZtcGVnNS5wYXRjaApAQCAtMCwwICsxLDE3IEBACisjIGh0dHBzOi8vYXVyLmFyY2hsaW51eC5v cmcvY2dpdC9hdXIuZ2l0L2RpZmYvZmZtcGVnNS5wYXRjaD9oPWtpZDMtY2xpJmlkPTEyNDEwYTc0 OTA2NjEyZTdlZmMwZWM4ZmJjZTczOWI0YTBmZWY3ZTcKK2RpZmYgLS1naXQgYS9zcmMvcGx1Z2lu cy9hY291c3RpZGltcG9ydC9mZm1wZWdmaW5nZXJwcmludGRlY29kZXIuY3BwIGIvc3JjL3BsdWdp bnMvYWNvdXN0aWRpbXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAoraW5kZXggZTE1 NmQ0MjQuLmUxMmI5YWJkIDEwMDY0NAorLS0tIGEvc3JjL3BsdWdpbnMvYWNvdXN0aWRpbXBvcnQv ZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAorKysrIGIvc3JjL3BsdWdpbnMvYWNvdXN0aWRp bXBvcnQvZmZtcGVnZmluZ2VycHJpbnRkZWNvZGVyLmNwcAorQEAgLTIzMiw3ICsyMzIsMTEgQEAg cHJpdmF0ZToKKyAgIGZyaWVuZCBjbGFzcyBGb3JtYXQ7CisgICBmcmllbmQgY2xhc3MgQ29udmVy dGVyOworICAgQVZDb2RlY0NvbnRleHQqIG1fcHRyOworKyNpZiBMSUJBVkNPREVDX1ZFUlNJT05f SU5UIDwgQVZfVkVSU0lPTl9JTlQoNTksIDAsIDApCisgICBBVkNvZGVjKiBtX2ltcGw7CisrI2Vs c2UKKysgIGNvbnN0IEFWQ29kZWMqIG1faW1wbDsKKysjZW5kaWYKKyAgIEFWRnJhbWUqIG1fZnJh bWU7CisgICBib29sIG1fb3BlbmVkOworIH07CmRpZmYgLS1naXQgYS9zcmNwa2dzL2tpZDMvdGVt cGxhdGUgYi9zcmNwa2dzL2tpZDMvdGVtcGxhdGUKaW5kZXggNDU2MjA2ZDkwZTE2YS4uZjMyZjlk ZWNiMGU3ZiAxMDA2NDQKLS0tIGEvc3JjcGtncy9raWQzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv a2lkMy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2tpZDMn CiBwa2duYW1lPWtpZDMKIHZlcnNpb249My45LjEKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1 aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURXSVRIX0FQUFM9J0NMSTskKHZvcHRf aWYgS0RFIEtERSBRdCknCiAgLURXSVRIX0RPQ0JPT0tESVI9L3Vzci9zaGFyZS94c2wvZG9jYm9v ayAtRFdJVEhfRkxBQz0kKHZvcHRfaWYgZmxhYyBPTiBPRkYpCgpGcm9tIDViMzI2NTNmYTMwNGY1 ODE1MjAxNDg0NDYyZDc2MjcyNTUxYzBhNGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6 NDggLTA0MDAKU3ViamVjdDogW1BBVENIIDA0Ny8xMTVdIGtvZGk6IHJldmJ1bXAgZm9yIGZmbXBl ZzQtNC40LjMKCi0tLQogc3JjcGtncy9rb2RpL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9r b2RpL3RlbXBsYXRlIGIvc3JjcGtncy9rb2RpL3RlbXBsYXRlCmluZGV4IDhlZjZiYzg1ZWQzYjQu Ljc4OGEwYWM5NzhhZjggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva29kaS90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL2tvZGkvdGVtcGxhdGUKQEAgLTU0LDcgKzU0LDcgQEAgbWFrZWRlcGVuZHM9IgogIGxp Ym1hZC1kZXZlbCBmb250Y29uZmlnLWRldmVsIGxpYlhpbmVyYW1hLWRldmVsIGxpYnNhbXBsZXJh dGUtZGV2ZWwgbGlibW1zLWRldmVsCiAgZW5jYS1kZXZlbCBib29zdC1kZXZlbCBsaWJjdXJsLWRl dmVsIGxpYnZhLWRldmVsIGxpYnZkcGF1LWRldmVsIGxpYmFzcy1kZXZlbAogIGxpYmJsdWV0b290 aC1kZXZlbCB5YWpsLWRldmVsIGxpYnBsaXN0LWRldmVsIGxpYnJ0bXAtZGV2ZWwgdGlueXhtbC1k ZXZlbAotIHRhZ2xpYi1kZXZlbCBsaWJjYXAtZGV2ZWwgbGFtZS1kZXZlbCBsaWJibHVyYXktZGV2 ZWwgbGlibmZzLWRldmVsIGZmbXBlZy1kZXZlbAorIHRhZ2xpYi1kZXZlbCBsaWJjYXAtZGV2ZWwg bGFtZS1kZXZlbCBsaWJibHVyYXktZGV2ZWwgbGlibmZzLWRldmVsIGZmbXBlZzQtZGV2ZWwKICBn aWZsaWItZGV2ZWwgbGlieHNsdC1kZXZlbCBnbnV0bHMtZGV2ZWwgbGlic3NoLWRldmVsIGxpYm1p Y3JvaHR0cGQtZGV2ZWwKICBsaWJjZWMtZGV2ZWwgZGNhZGVjLWRldmVsIGZsYXRidWZmZXJzLWRl dmVsIGZtdC1kZXZlbCBsY21zMi1kZXZlbAogIGxpYmZzdHJjbXAtZGV2ZWwgcmFwaWRqc29uIGxp YmNkaW8tcGFyYW5vaWEgc3BkbG9nIGxpYndheWxhbmRwcC1kZXZlbAoKRnJvbSAxZWE4YmE1ODg1 YTU5NjQwZmFkOTQ2YzdiNWM1NmIzMWIxOWIwMjc2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNDgvMTE1XSBrcGlwZXdpcmU6IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9rcGlwZXdpcmUvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL2twaXBld2lyZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRl CmluZGV4IGIyZDNkODBjMWRkMWEuLjk4MWM3Yjg4OTBkZWQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mv a3BpcGV3aXJlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva3BpcGV3aXJlL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAna3BpcGV3aXJlJwogcGtnbmFtZT1rcGlw ZXdpcmUKIHZlcnNpb249NS4yNy45Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHls ZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJleHRyYS1jbWFrZS1tb2R1bGVzIHBsYXNtYS13YXls YW5kLXByb3RvY29scyBnZXR0ZXh0CiAgcXQ1LXFtYWtlIHF0NS1ob3N0LXRvb2xzIHBrZy1jb25m aWcgd2F5bGFuZC1kZXZlbCBrY29yZWFkZG9ucwoKRnJvbSAwYzgxZWRhM2ZkMjZmZDQ5ODA5MmEy ZGNlOTExNTI0NjlkNDE3OTdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAwNDkvMTE1XSBsaWJleHRyYWN0b3I6IHJldmJ1bXAgZm9yIGZmbXBl ZzQtNC40LjMKCi0tLQogc3JjcGtncy9saWJleHRyYWN0b3IvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xpYmV4dHJhY3Rvci90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGliZXh0cmFjdG9yL3RlbXBs YXRlCmluZGV4IGRkZDQ3OTBmOTNlODguLjFmYjljYTU2YTk2YWUgMTAwNjQ0Ci0tLSBhL3NyY3Br Z3MvbGliZXh0cmFjdG9yL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGliZXh0cmFjdG9yL3RlbXBs YXRlCkBAIC03LDcgKzcsNyBAQCBjb25maWd1cmVfYXJncz0iLS1kaXNhYmxlLXN0YXRpYyIKIGhv c3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJ6bGliLWRldmVsIGJ6aXAy LWRldmVsIGV4aXYyLWRldmVsIHRpZmYtZGV2ZWwgbGlicG5nLWRldmVsCiAgbGlianBlZy10dXJi by1kZXZlbCBsaWJ2b3JiaXMtZGV2ZWwgbGliZmxhYy1kZXZlbCBnaWZsaWItZGV2ZWwgbGlibXBl ZzItZGV2ZWwKLSBmZm1wZWctZGV2ZWwgZ3RrKzMtZGV2ZWwgbGlibHRkbC1kZXZlbCBsaWJhcmNo aXZlLWRldmVsIGZpbGUtZGV2ZWwgbGliZ3NmLWRldmVsIgorIGZmbXBlZzQtZGV2ZWwgZ3RrKzMt ZGV2ZWwgbGlibHRkbC1kZXZlbCBsaWJhcmNoaXZlLWRldmVsIGZpbGUtZGV2ZWwgbGliZ3NmLWRl dmVsIgogc2hvcnRfZGVzYz0iTGlicmFyeSB1c2VkIHRvIGV4dHJhY3QgbWV0YSBkYXRhIGZyb20g ZmlsZXMiCiBtYWludGFpbmVyPSJNYXJ0aW4gUmllc2UgPGdyYXVlaGFhcmVAZ214LmRlPiIKIGxp Y2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCgpGcm9tIGUzMzhhYzQ4ZjY0OWQyYjM3OTAzZDVkMTQ0 Yjk1MTlmMjhkYzhlYmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGlj ZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDggLTA0MDAKU3Vi amVjdDogW1BBVENIIDA1MC8xMTVdIGxpYm9wZW5hbDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoK LS0tCiBzcmNwa2dzL2xpYm9wZW5hbC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlib3Bl bmFsL3RlbXBsYXRlIGIvc3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUKaW5kZXggNzcyMThmOWU1 MzlkZi4uM2Y0OWVkNzVhMWZkYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9saWJvcGVuYWwvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9saWJvcGVuYWwvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdsaWJvcGVuYWwnCiBwa2duYW1lPWxpYm9wZW5hbAogdmVyc2lvbj0x LjIyLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1 cmVfYXJncz0iLURBTFNPRlRfRVhBTVBMRVM9T0ZGIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29u ZmlnIgoKRnJvbSA0Y2JkZjNiODgzMGE2YzYzMGJjZmY3Y2NjZTI3M2VmOWUwMjk4NDRhIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRl OiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTEvMTE1 XSBsb3VkZ2FpbjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2xvdWRnYWlu L3BhdGNoZXMvZmZtcGVnNS5wYXRjaCB8IDExICsrKysrKysrKysrCiBzcmNwa2dzL2xvdWRnYWlu L3RlbXBsYXRlICAgICAgICAgICAgICB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xvdWRn YWluL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbG91ZGdhaW4v cGF0Y2hlcy9mZm1wZWc1LnBhdGNoIGIvc3JjcGtncy9sb3VkZ2Fpbi9wYXRjaGVzL2ZmbXBlZzUu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uMTZkNDUxMGVl OThmYQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbG91ZGdhaW4vcGF0Y2hlcy9mZm1wZWc1 LnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKKy0tLSBhL3NyYy9zY2FuLmMJMjAxOS0wOS0wNiAxMToz MToxOS4wMDAwMDAwMDAgLTA0MDAKKysrKyBiL3NyYy9zY2FuLmMJMjAyMy0wMy0yMyAxMToxNTo0 MC44Njc5Njg1MjEgLTA0MDAKK0BAIC02OSw4ICs2OSw2IEBACisgCSAqIEl0IGlzIG5vdyB1c2Vs ZXNzCisgCSAqIGh0dHBzOi8vZ2l0aHViLmNvbS9GRm1wZWcvRkZtcGVnL2Jsb2IvNzBkMjUyNjhj MjFjYmVlNWYwODMwNGRhOTViZTFmNjQ3YzYzMGMxNS9kb2MvQVBJY2hhbmdlcyNMODYKKyAJICov CistICBpZiAoYXZmb3JtYXRfdmVyc2lvbigpIDwgQVZfVkVSU0lPTl9JTlQoNTgsOSwxMDApKQor LSAgICBhdl9yZWdpc3Rlcl9hbGwoKTsKKyAKKyAJYXZfbG9nX3NldF9jYWxsYmFjayhzY2FuX2F2 X2xvZyk7CisgCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlIGIvc3JjcGtn cy9sb3VkZ2Fpbi90ZW1wbGF0ZQppbmRleCBkYTRmMmQ1NmU5NGMzLi40ZDZiZjI5ZWZiNGZkIDEw MDY0NAotLS0gYS9zcmNwa2dzL2xvdWRnYWluL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbG91ZGdh aW4vdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsb3VkZ2Fp bicKIHBrZ25hbWU9bG91ZGdhaW4KIHZlcnNpb249MC42LjgKLXJldmlzaW9uPTIKK3JldmlzaW9u PTMKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWciCiBtYWtl ZGVwZW5kcz0ibGliZWJ1cjEyOC1kZXZlbCB0YWdsaWItZGV2ZWwgZmZtcGVnLWRldmVsIgoKRnJv bSA3MzI5YjQzYWVkZjNlNDI4ZGJiNWI3MTI1NGE5OWY4NzcwMTA0ZDAzIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTIvMTE1XSBtZWRpYXN0 cmVhbWVyOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvbWVkaWFzdHJl YW1lci90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZSBi L3NyY3BrZ3MvbWVkaWFzdHJlYW1lci90ZW1wbGF0ZQppbmRleCAxMzNmY2U5OTQ1YjNhLi4wZTBm ZGIwZTFhMDE0IDEwMDY0NAotLS0gYS9zcmNwa2dzL21lZGlhc3RyZWFtZXIvdGVtcGxhdGUKKysr IGIvc3JjcGtncy9tZWRpYXN0cmVhbWVyL3RlbXBsYXRlCkBAIC01LDcgKzUsNyBAQCByZXZpc2lv bj0xCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1ERU5BQkxFX1NUUklDVD0w IC1ERU5BQkxFX1VOSVRfVEVTVFM9MCIKIGhvc3RtYWtlZGVwZW5kcz0icHl0aG9uMyIKLW1ha2Vk ZXBlbmRzPSJienJ0cC1kZXZlbCBmZm1wZWctZGV2ZWwgZ2xldy1kZXZlbCBsaWJYdi1kZXZlbCBs aWJzcnRwLWRldmVsCittYWtlZGVwZW5kcz0iYnpydHAtZGV2ZWwgZmZtcGVnNC1kZXZlbCBnbGV3 LWRldmVsIGxpYlh2LWRldmVsIGxpYnNydHAtZGV2ZWwKICBsaWJ1cG5wLWRldmVsIGxpYnZweC1k ZXZlbCBtYmVkdGxzLWRldmVsIG9wdXMtZGV2ZWwgb3J0cC1kZXZlbCBwdWxzZWF1ZGlvLWRldmVs CiAgbGlidGhlb3JhLWRldmVsIHNwZWV4LWRldmVsIHY0bC11dGlscy1kZXZlbCBiY2c3MjktZGV2 ZWwgYmNtYXRyb3NrYTItZGV2ZWwgbGliZ3NtLWRldmVsCiAgenhpbmctY3BwLWRldmVsIgoKRnJv bSAzNGY1ZjQ1ODMyYzVkMWZjMGVkYWJiM2U3NjJkMTNmNjAyZmQ0MDM2IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIy IE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTMvMTE1XSBtZ2JhOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvbWdiYS90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbWdiYS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWdiYS90ZW1wbGF0ZQppbmRleCA1 NTEzZTNmZDE2ZjNmLi5mNWM4N2E0ODkzMDAyIDEwMDY0NAotLS0gYS9zcmNwa2dzL21nYmEvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9tZ2JhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1w bGF0ZSBmaWxlIGZvciAnbWdiYScKIHBrZ25hbWU9bWdiYQogdmVyc2lvbj0wLjEwLjIKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9InBr Zy1jb25maWcgcXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIGRlc2t0b3AtZmlsZS11dGlscyIKIG1h a2VkZXBlbmRzPSJTREwyLWRldmVsIGZmbXBlZy1kZXZlbCBsaWJlZGl0LWRldmVsIGxpYmVwb3h5 LWRldmVsIGxpYm1hZ2ljay1kZXZlbAoKRnJvbSBiNmVmNThjNjFiNGVhOTBjNDk0MzEzMTljMWI4 ZTBjODA5MjNhMDAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1 NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ4IC0wNDAwClN1Ympl Y3Q6IFtQQVRDSCAwNTQvMTE1XSBtaW5pZGxuYTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9taW5pZGxuYS90 ZW1wbGF0ZSBiL3NyY3BrZ3MvbWluaWRsbmEvdGVtcGxhdGUKaW5kZXggZDU1MWU0OWVkNDY1My4u NWZhOTI5ZjNhMGMxMiAxMDA2NDQKLS0tIGEvc3JjcGtncy9taW5pZGxuYS90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL21pbmlkbG5hL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnbWluaWRsbmEnCiBwa2duYW1lPW1pbmlkbG5hCiB2ZXJzaW9uPTEuMy4zCi1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBjb25maWd1cmVf YXJncz0iCiAgLS1zYmluZGlyPS91c3IvYmluCgpGcm9tIDVkNDdlMzI3ODU4YTU1MDlmYzU2OGE0 ZmNmOTlkYjBlMTZjNzc2NGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6 bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAK U3ViamVjdDogW1BBVENIIDA1NS8xMTVdIG1sdDogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoK LS0tCiBzcmNwa2dzL21sdC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWx0L3RlbXBsYXRl IGIvc3JjcGtncy9tbHQvdGVtcGxhdGUKaW5kZXggZjE0ZGQ4NWQxYzlkYy4uZjBiM2FmMTkzZGIy YyAxMDA2NDQKLS0tIGEvc3JjcGtncy9tbHQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tbHQvdGVt cGxhdGUKQEAgLTgsNyArOCw3IEBAIGNvbmZpZ3VyZV9hcmdzPSItLXByZWZpeD0vdXNyIC0tbGli ZGlyPS91c3IvbGliJFhCUFNfVEFSR0VUX1dPUkRTSVpFCiAgLS1zd2lnLWxhbmd1YWdlcz1weXRo b24iCiBob3N0bWFrZWRlcGVuZHM9ImRveHlnZW4gcGtnLWNvbmZpZyBsYWRzcGEtc2RrIHN3aWcg cHl0aG9uMyB3aGljaCIKICMgWFhYOiBtb3ZpdCB2aWQuc3RhYgotbWFrZWRlcGVuZHM9ImFsc2Et bGliLWRldmVsIGZmbXBlZy1kZXZlbCBndGsrLWRldmVsIGphY2stZGV2ZWwgbGFkc3BhLXNkawor bWFrZWRlcGVuZHM9ImFsc2EtbGliLWRldmVsIGZmbXBlZzQtZGV2ZWwgZ3RrKy1kZXZlbCBqYWNr LWRldmVsIGxhZHNwYS1zZGsKICBsaWJleGlmLWRldmVsIGxpYnNhbXBsZXJhdGUtZGV2ZWwgbGli eG1sMi1kZXZlbCBzb3gtZGV2ZWwgU0RMX2ltYWdlLWRldmVsCiAgZmZ0dy1kZXZlbCBmcmVpMHIt cGx1Z2lucyBweXRob24zLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwgbW92aXQtZGV2ZWwKICBsaWJ2 aWRzdGFiLWRldmVsIgoKRnJvbSBlNDlkMThhMzBmODVmY2Q1ZDc5N2Y0ODMwZTIxNDBlNmJkYWZi NjA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwNTYvMTE1XSBtb2M6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy9t b2MvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9tb2MvdGVtcGxhdGUgYi9zcmNwa2dz L21vYy90ZW1wbGF0ZQppbmRleCA1YWVkNWQzNjU1OGQzLi5kOGRlODE2MDI2YjY0IDEwMDY0NAot LS0gYS9zcmNwa2dzL21vYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21vYy90ZW1wbGF0ZQpAQCAt MSwxMCArMSwxMCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbW9jJwogcGtnbmFtZT1tb2MKIHZl cnNpb249Mi41LjIKLXJldmlzaW9uPTYKK3JldmlzaW9uPTcKIGJ1aWxkX3N0eWxlPWdudS1jb25m aWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKLW1ha2VkZXBlbmRzPSJkYi1kZXZl bCBuY3Vyc2VzLWRldmVsIGxpYmN1cmwtZGV2ZWwgcG9wdC1kZXZlbCBmZm1wZWctZGV2ZWwKK21h a2VkZXBlbmRzPSJkYi1kZXZlbCBuY3Vyc2VzLWRldmVsIGxpYmN1cmwtZGV2ZWwgcG9wdC1kZXZl bCBmZm1wZWc0LWRldmVsCiAgamFjay1kZXZlbCBhbHNhLWxpYi1kZXZlbCBsaWJsdGRsLWRldmVs IGxpYmZsYWMtZGV2ZWwgbGlidm9yYmlzLWRldmVsCiAgbGlibWFkLWRldmVsIGxpYm1wY2RlYy1k ZXZlbCBsaWJtb2RwbHVnLWRldmVsIGxpYmlkM3RhZy1kZXZlbCBmYWFkMi1kZXZlbAogIHRhZ2xp Yi1kZXZlbCBsaWJzbmRmaWxlLWRldmVsIHdhdnBhY2stZGV2ZWwgc3BlZXgtZGV2ZWwgbGlic2Ft cGxlcmF0ZS1kZXZlbAoKRnJvbSAyN2JkNmY4YWY3OTdlMmZiNzI4OWI1MDA2NzQyYmZhYzliYWE2 OGNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwNTcvMTE1XSBtb3Rpb246IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9t b3Rpb24vdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21vdGlvbi90ZW1wbGF0ZSBiL3NyY3Br Z3MvbW90aW9uL3RlbXBsYXRlCmluZGV4IDNjZjNjMzAzNWM1YjcuLjdkY2ExMmQ4NTFlMzMgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3MvbW90aW9uL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbW90aW9uL3Rl bXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbW90aW9uJwogcGtn bmFtZT1tb3Rpb24KIHZlcnNpb249NC41LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxk X3N0eWxlPWdudS1jb25maWd1cmUKIGhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgcGtnLWNvbmZp ZyBnZXR0ZXh0LWRldmVsIHRhciIKIG1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbGlibWljcm9o dHRwZC1kZXZlbCB2NGwtdXRpbHMtZGV2ZWwgZ2V0dGV4dC1kZXZlbCIKCkZyb20gZjYwZGVjZWEz MzFmZGVjOGZlMTVmYmQ4NWUwNmE5OGQyNDQyNzA5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK RnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAy MDowMTo0OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDU4LzExNV0gbm90Y3Vyc2VzOiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvbm90Y3Vyc2VzL3RlbXBsYXRlIHwgMiArLQog MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9ub3RjdXJzZXMvdGVtcGxhdGUgYi9zcmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0 ZQppbmRleCA2ZGQ4YTA5MTMxOWY3Li4zMTEwYzMwYzlhZmYyIDEwMDY0NAotLS0gYS9zcmNwa2dz L25vdGN1cnNlcy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL25vdGN1cnNlcy90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ25vdGN1cnNlcycKIHBrZ25hbWU9bm90 Y3Vyc2VzCiB2ZXJzaW9uPTMuMC45Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHls ZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EVVNFX1NUQVRJQz1PTiAkKHZvcHRfYm9vbCBtYW4g VVNFX1BBTkRPQykiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgJCh2b3B0X2lmIG1hbiBw YW5kb2MpIgoKRnJvbSBjYWU4ZTJkNjAzMGMwM2Y0OGIwYTYxNjA5YzQzNjNiYmU0NmE4MWFhIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpE YXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjQ5IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNTkv MTE1XSBvbGl2ZTogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dzL29saXZl L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUgYi9zcmNwa2dz L29saXZlL3RlbXBsYXRlCmluZGV4IDEyYTQ2OTM2Yzk5MDAuLjVjMjkxN2I5YzUxMjQgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3Mvb2xpdmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vbGl2ZS90ZW1wbGF0 ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb2xpdmUnCiBwa2duYW1l PW9saXZlCiB2ZXJzaW9uPTAuMS4yCi1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHls ZT1xbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMgcGtnLWNv bmZpZyIKLW1ha2VkZXBlbmRzPSJxdDUtZGV2ZWwgcXQ1LW11bHRpbWVkaWEtZGV2ZWwgcXQ1LXN2 Zy1kZXZlbCBmZm1wZWctZGV2ZWwgZnJlaTByLXBsdWdpbnMiCittYWtlZGVwZW5kcz0icXQ1LWRl dmVsIHF0NS1tdWx0aW1lZGlhLWRldmVsIHF0NS1zdmctZGV2ZWwgZmZtcGVnNC1kZXZlbCBmcmVp MHItcGx1Z2lucyIKIHNob3J0X2Rlc2M9Ik5vbi1saW5lYXIgdmlkZW8gZWRpdG9yIgogbWFpbnRh aW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0zLjAt b3ItbGF0ZXIiCgpGcm9tIGEyYTc0MjgyNjE2OWZlMzcwNTA2OGJhMjViMjhhYTg3YjNlN2VkNjIg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NDkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2 MC8xMTVdIG9teHBsYXllcjogcmV2YnVtcCBmb3IgZmZtcGVnNC00LjQuMwoKLS0tCiBzcmNwa2dz L29teHBsYXllci90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29teHBsYXllci90ZW1w bGF0ZSBiL3NyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlCmluZGV4IDlhNjY2OTBjODNlYmIuLmEy MWI4Nzg4NzgwMzcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlCisrKyBi L3NyY3BrZ3Mvb214cGxheWVyL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnb214cGxheWVyJwogcGtnbmFtZT1vbXhwbGF5ZXIKIHZlcnNpb249MjAxOTAxMDIK LXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIHNob3J0X2Rlc2M9IkNvbW1hbmRsaW5lIE9NWCBwbGF5 ZXIgZm9yIHRoZSBSYXNwYmVycnkgUGkiCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZv aWRsaW51eC5vcmc+IgogbGljZW5zZT0iR1BMLTIuMC1vci1sYXRlciIKQEAgLTE1LDcgKzE1LDcg QEAgY2hlY2tzdW09YWYyZDk0NTBmODk0Nzg0MmVhOGM0MDFmZTlmNzFlZWM0NDQwMTNlYmJkZWUy OWYyYWM4MjhjOWM0OTNjMTMyOQogYXJjaHM9ImFybXY2bCogYXJtdjdsKiIKIGJ1aWxkX3N0eWxl PWdudS1tYWtlZmlsZQogaG9zdG1ha2VkZXBlbmRzPSJydWJ5LXJvbm4gcGtnLWNvbmZpZyIKLW1h a2VkZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBycGktdXNlcmxhbmQtZGV2ZWwgcGNyZS1kZXZlbCBi b29zdC1kZXZlbCBmcmVldHlwZS1kZXZlbCBmZm1wZWctZGV2ZWwgZGJ1cy1kZXZlbCIKK21ha2Vk ZXBlbmRzPSJhbHNhLWxpYi1kZXZlbCBycGktdXNlcmxhbmQtZGV2ZWwgcGNyZS1kZXZlbCBib29z dC1kZXZlbCBmcmVldHlwZS1kZXZlbCBmZm1wZWc0LWRldmVsIGRidXMtZGV2ZWwiCiBkZXBlbmRz PSJmcmVlZm9udC10dGYiCiAKIGRvX2J1aWxkKCkgewoKRnJvbSBmZGNhZjU0ZmVjZDM5YWNiZWY0 ZDhkZTdlMTVkZmEzODBkMDZmNjdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0w NDAwClN1YmplY3Q6IFtQQVRDSCAwNjEvMTE1XSBvcGVudG9vbno6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9vcGVudG9vbnovdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L29wZW50b29uei90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3BlbnRvb256L3RlbXBsYXRlCmluZGV4IGVl OWY3NjAzZjU1ZmQuLjNlODE4MzRjYTBlZGQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3BlbnRvb256 L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3BlbnRvb256L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbnRvb256JwogcGtnbmFtZT1vcGVudG9vbnoKIHZl cnNpb249MS42LjAKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3dya3NyYz0idG9vbnov c291cmNlcyIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBtYWtlX2NtZD1tYWtlCgpGcm9tIGMwMTlhNjBj MDBmMGE5YjQwOTRiOTlhYTllZmFjYWNkZmNmOWM0N2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMg MjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2Mi8xMTVdIHBpYW5vYmFyOiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcGlhbm9iYXIvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL3BpYW5vYmFyL3RlbXBsYXRlIGIvc3JjcGtncy9waWFub2Jhci90ZW1wbGF0ZQpp bmRleCBlM2ZlYmI4MjFhNDUxLi4xZTNkYzFiZjkzMDhlIDEwMDY0NAotLS0gYS9zcmNwa2dzL3Bp YW5vYmFyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcGlhbm9iYXIvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdwaWFub2JhcicKIHBrZ25hbWU9cGlhbm9iYXIK IHZlcnNpb249MjAyMi4wNC4wMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 Z251LW1ha2VmaWxlCiBtYWtlX2J1aWxkX2FyZ3M9IlY9MSIKIGhvc3RtYWtlZGVwZW5kcz0icGtn LWNvbmZpZyIKCkZyb20gMzE1Njg5YmFhYjcyZGY5Y2YwMDhhMTM4MWNkZTIyOTA4ZGEyMGE4OCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4K RGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDYz LzExNV0gcHBzc3BwOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNyY3BrZ3MvcHBz c3BwL3RlbXBsYXRlIHwgNyArKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCsp LCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHBzc3BwL3RlbXBsYXRlIGIv c3JjcGtncy9wcHNzcHAvdGVtcGxhdGUKaW5kZXggMmMwZGVkNDk2ZWI5OC4uMTI5NGVmM2FlNjY5 YyAxMDA2NDQKLS0tIGEvc3JjcGtncy9wcHNzcHAvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9wcHNz cHAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdwcHNzcHAn CiBwa2duYW1lPXBwc3NwcAogdmVyc2lvbj0xLjE2LjYKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IF9nbHNsYW5nX2NvbW1pdD1iMzRmNjE5ZTFjODU4MTBkY2IzYzU3ODEwN2QyZTQ4YmE0ZWUyYjM3 CiBfU1BJUlZfQ3Jvc3NfY29tbWl0PTQyMTJlZWY2N2VkMGNhMDQ4Y2I3MjZhNjc2NzE4NTUwNGU3 Njk1ZTUKIF9hcm1pcHNfY29tbWl0PTdiZDFlYzkzZDQ1ODY5ODViYTFlZjQyMGI0M2I1ZTYyMGY2 ODY5NWUKQEAgLTE1LDcgKzE1LDcgQEAgY29uZmlndXJlX2FyZ3M9Ii1ESEVBRExFU1M9MSAtRFVT RV9TWVNURU1fRkZNUEVHPTEgLURVTklUVEVTVD1PTgogIC1EVVNJTkdfUVRfVUk9JCh2b3B0X2lm IHF0IE9OIE9GRikgLURVU0VfU1lTVEVNX1pTVEQ9T04KICAtREFSTUlQU19VU0VfU1REX0ZJTEVT WVNURU09T04iCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcHl0aG9uMyAkKHZvcHRfaWYg cXQgcXQ1LWhvc3QtdG9vbHMpIgotbWFrZWRlcGVuZHM9InpsaWItZGV2ZWwgZ2xldy1kZXZlbCBm Zm1wZWctZGV2ZWwgbGliemlwLWRldmVsCittYWtlZGVwZW5kcz0iemxpYi1kZXZlbCBnbGV3LWRl dmVsIGZmbXBlZzQtZGV2ZWwgbGliemlwLWRldmVsCiAgc25hcHB5LWRldmVsIHJhcGlkanNvbiBs aWJwbmctZGV2ZWwgbGlienN0ZC1kZXZlbAogICQodm9wdF9pZiBzZGwyICdTREwyX3R0Zi1kZXZl bCBTREwyLWRldmVsJykgJCh2b3B0X2lmIHdheWxhbmQgd2F5bGFuZC1kZXZlbCkKICAkKHZvcHRf aWYgcXQgJ3F0NS1kZXZlbCBxdDUtbXVsdGltZWRpYS1kZXZlbCcpIgpAQCAtNzIsNyArNzIsNyBA QCBwb3N0X2V4dHJhY3QoKSB7CiAgICAgICAgIG12ICR7d3Jrc3JjfS9yY2hlZXZvcy0ke19yY2hl ZXZvc19jb21taXR9ICR7d3Jrc3JjfS9leHQvcmNoZWV2b3MKIH0KIAotcG9zdF9wYXRjaCgpewor cG9zdF9wYXRjaCgpIHsKIAkjIGRpc2FibGUgZ2l0IHZlcnNpb25pbmcKIAl2c2VkIC1lICdzfGZp bmRfcGFja2FnZShHaXQpfCMgJnwnIC1pIGdpdC12ZXJzaW9uLmNtYWtlCiB9CkBAIC04NSw3ICs4 NSw2IEBAIHBvc3RfY29uZmlndXJlKCkgewogfQogCiBkb19pbnN0YWxsKCkgewotCXZsaWNlbnNl IExJQ0VOU0UuVFhUCiAJdmluc3RhbGwgaWNvbnMvaWNvbi5zdmcgNjQ0IHVzci9zaGFyZS9waXht YXBzIHBwc3NwcC5zdmcKIAl2aW5zdGFsbCBRdC9QUFNTUFAuZGVza3RvcCA2NDQgdXNyL3NoYXJl L2FwcGxpY2F0aW9ucwogCXZiaW4gYnVpbGQvUFBTU1BQSGVhZGxlc3MgcHBzc3BwLWhlYWRsZXNz CgpGcm9tIDJkMjIwM2JiNWI3NWU5MjhjODAwMDZkZTIxZDIxNGY2MDY1NTI2OGQgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA2NC8xMTVdIHBx aXY6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9wcWl2L3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9wcWl2L3RlbXBsYXRlIGIvc3JjcGtncy9wcWl2L3RlbXBsYXRlCmlu ZGV4IDU0MmZjMjdhMmQzMmEuLjkzMDhkOTQ5YjZhMWMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHFp di90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3BxaXYvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAj IFRlbXBsYXRlIGZpbGUgZm9yICdwcWl2JwogcGtnbmFtZT1wcWl2CiB2ZXJzaW9uPTIuMTIKLXJl dmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWdudS1tYWtlZmlsZQogaG9zdG1ha2Vk ZXBlbmRzPSJwa2ctY29uZmlnIgogbWFrZWRlcGVuZHM9ImdsaWItZGV2ZWwgZ3RrKzMtZGV2ZWwg JCh2b3B0X2lmIGZmbXBlZyBmZm1wZWctZGV2ZWwpCgpGcm9tIDEyZDQ4NTUxM2RhODE0MmU1NmJm ZTdiNmUwN2VhYTkxYWEyNTcwYjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTAgLTA0 MDAKU3ViamVjdDogW1BBVENIIDA2NS8xMTVdIHFtbXA6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9xbW1wL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xbW1wL3RlbXBs YXRlIGIvc3JjcGtncy9xbW1wL3RlbXBsYXRlCmluZGV4IDI2YzY2MWVkMTZiZWEuLmExNTBkNzQ0 MWM3YTYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcW1tcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Ft bXAvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxbW1wJwog cGtnbmFtZT1xbW1wCiB2ZXJzaW9uPTEuNi4xCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWls ZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EVVNFX0hBTDpCT09MPUZBTFNFIC1EUU1N UF9ERUZBVUxUX1VJOlNUUklORz1zaW1wbGUiCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcg cXQ1LWhvc3QtdG9vbHMgcXQ1LXFtYWtlIgoKRnJvbSA4ZTlkMzQzMjEzNTNhOGRlYjIyNjViOGFi N2YxYjgzNWFlYmE3MDQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUwIC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwNjYvMTE1XSBxdDUtd2ViZW5naW5lOiB1cGRhdGUgdG8gNS4xNS4xMwoK LS0tCiAuLi4vY2hyb21pdW0tbWVkaWEtZmlsdGVycy1jcHAxNC5wYXRjaCAgICAgICAgfCAgMTEg KysKIHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2ggICB8IDE3OSAr KysrKysrKysrKysrKysrKysKIHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZSAgICAgICAg ICAgICAgICB8ICAxMCArLQogMyBmaWxlcyBjaGFuZ2VkLCAxOTUgaW5zZXJ0aW9ucygrKSwgNSBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0 Y2hlcy9jaHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNwcDE0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5wYXRjaAoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2Nocm9taXVtLW1lZGlhLWZpbHRlcnMt Y3BwMTQucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9jaHJvbWl1bS1tZWRp YS1maWx0ZXJzLWNwcDE0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMDAuLjA0YWRjNTQwZjJjYmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJl bmdpbmUvcGF0Y2hlcy9jaHJvbWl1bS1tZWRpYS1maWx0ZXJzLWNwcDE0LnBhdGNoCkBAIC0wLDAg KzEsMTEgQEAKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL0JVSUxE LmduCTIwMjMtMDItMjcgMTM6MzI6NTkuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFy dHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9CVUlMRC5nbgkyMDIzLTA0LTAyIDE3OjIxOjM5LjIw NDA2NjM4NCAtMDQwMAorQEAgLTk2LDYgKzk2LDggQEAKKyAgICAgIi8vdWkvZ2Z4L2dlb21ldHJ5 Omdlb21ldHJ5IiwKKyAgIF0KKyAKKysgIGNmbGFnc19jYyA9IFsgIi1zdGQ9YysrMTQiIF0KKysK KyAgIGxpYnMgPSBbXQorIAorICAgaWYgKHByb3ByaWV0YXJ5X2NvZGVjcykgewpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvZmZtcGVnNS5wYXRjaCBiL3NyY3BrZ3Mv cXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwMC4uYWM1NWUxNjM0NDIzYQotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL2ZmbXBlZzUucGF0Y2gKQEAgLTAsMCArMSwxNzkg QEAKKy0tLSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19kZW11 eGVyLmNjCTIwMjMtMDQtMDIgMTY6NTA6NTcuNzMyNTQ3NDQ2IC0wNDAwCisrKysgYi9zcmMvM3Jk cGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfZGVtdXhlci5jYwkyMDIzLTA0LTAy IDE2OjUwOjA5LjQ4NjQ3ODk5NSAtMDQwMAorQEAgLTU3LDYgKzU3LDggQEAKKyAKKyBuYW1lc3Bh Y2UgeworIAorK2NvbnN0ZXhwciBpbnQ2NF90IGtSZWxhdGl2ZVRzQmFzZSA9IHN0YXRpY19jYXN0 PGludDY0X3Q+KDB4N2ZmZWZmZmZmZmZmZmZmZik7CisrCisgdm9pZCBTZXRBVlN0cmVhbURpc2Nh cmQoQVZTdHJlYW0qIHN0cmVhbSwgQVZEaXNjYXJkIGRpc2NhcmQpIHsKKyAgIERDSEVDSyhzdHJl YW0pOworICAgc3RyZWFtLT5kaXNjYXJkID0gZGlzY2FyZDsKK0BAIC05MCwyNCArOTIsMTIgQEAK KyAKKyBzdGF0aWMgYmFzZTo6VGltZURlbHRhIEV4dHJhY3RTdGFydFRpbWUoQVZTdHJlYW0qIHN0 cmVhbSkgeworICAgLy8gVGhlIGRlZmF1bHQgc3RhcnQgdGltZSBpcyB6ZXJvLgorLSAgYmFzZTo6 VGltZURlbHRhIHN0YXJ0X3RpbWU7CisrICBiYXNlOjpUaW1lRGVsdGEgc3RhcnRfdGltZSA9IGtO b1RpbWVzdGFtcDsKKyAKKyAgIC8vIEZpcnN0IHRyeSB0byB1c2UgIHRoZSB8c3RhcnRfdGltZXwg dmFsdWUgYXMgaXMuCisgICBpZiAoc3RyZWFtLT5zdGFydF90aW1lICE9IGtOb0ZGbXBlZ1RpbWVz dGFtcCkKKyAgICAgc3RhcnRfdGltZSA9IENvbnZlcnRGcm9tVGltZUJhc2Uoc3RyZWFtLT50aW1l X2Jhc2UsIHN0cmVhbS0+c3RhcnRfdGltZSk7CisgCistICAvLyBOZXh0IHRyeSB0byB1c2UgdGhl IGZpcnN0IERUUyB2YWx1ZSwgZm9yIGNvZGVjcyB3aGVyZSB3ZSBrbm93IFBUUyA9PSBEVFMKKy0g IC8vIChleGNsdWRlcyBhbGwgSDI2eCBjb2RlY3MpLiBUaGUgc3RhcnQgdGltZSBtdXN0IGJlIHJl dHVybmVkIGluIFBUUy4KKy0gIGlmIChzdHJlYW0tPmZpcnN0X2R0cyAhPSBrTm9GRm1wZWdUaW1l c3RhbXAgJiYKKy0gICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCAhPSBBVl9DT0RFQ19J RF9IRVZDICYmCistICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgIT0gQVZfQ09ERUNf SURfSDI2NCAmJgorLSAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkICE9IEFWX0NPREVD X0lEX01QRUc0KSB7CistICAgIGNvbnN0IGJhc2U6OlRpbWVEZWx0YSBmaXJzdF9wdHMgPQorLSAg ICAgICAgQ29udmVydEZyb21UaW1lQmFzZShzdHJlYW0tPnRpbWVfYmFzZSwgc3RyZWFtLT5maXJz dF9kdHMpOworLSAgICBpZiAoZmlyc3RfcHRzIDwgc3RhcnRfdGltZSkKKy0gICAgICBzdGFydF90 aW1lID0gZmlyc3RfcHRzOworLSAgfQorLQorICAgcmV0dXJuIHN0YXJ0X3RpbWU7CisgfQorIAor QEAgLTQwOCwxMSArMzk4LDExIEBACisgICBzY29wZWRfcmVmcHRyPERlY29kZXJCdWZmZXI+IGJ1 ZmZlcjsKKyAKKyAgIGlmICh0eXBlKCkgPT0gRGVtdXhlclN0cmVhbTo6VEVYVCkgeworLSAgICBp bnQgaWRfc2l6ZSA9IDA7CisrICAgIHNpemVfdCBpZF9zaXplID0gMDsKKyAgICAgdWludDhfdCog aWRfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAgICAgcGFja2V0LmdldCgp LCBBVl9QS1RfREFUQV9XRUJWVFRfSURFTlRJRklFUiwgJmlkX3NpemUpOworIAorLSAgICBpbnQg c2V0dGluZ3Nfc2l6ZSA9IDA7CisrICAgIHNpemVfdCBzZXR0aW5nc19zaXplID0gMDsKKyAgICAg dWludDhfdCogc2V0dGluZ3NfZGF0YSA9IGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAg ICAgcGFja2V0LmdldCgpLCBBVl9QS1RfREFUQV9XRUJWVFRfU0VUVElOR1MsICZzZXR0aW5nc19z aXplKTsKKyAKK0BAIC00MjQsNyArNDE0LDcgQEAKKyAgICAgYnVmZmVyID0gRGVjb2RlckJ1ZmZl cjo6Q29weUZyb20ocGFja2V0LT5kYXRhLCBwYWNrZXQtPnNpemUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNpZGVfZGF0YS5kYXRhKCksIHNpZGVfZGF0YS5zaXplKCkp OworICAgfSBlbHNlIHsKKy0gICAgaW50IHNpZGVfZGF0YV9zaXplID0gMDsKKysgICAgc2l6ZV90 IHNpZGVfZGF0YV9zaXplID0gMDsKKyAgICAgdWludDhfdCogc2lkZV9kYXRhID0gYXZfcGFja2V0 X2dldF9zaWRlX2RhdGEoCisgICAgICAgICBwYWNrZXQuZ2V0KCksIEFWX1BLVF9EQVRBX01BVFJP U0tBX0JMT0NLQURESVRJT05BTCwgJnNpZGVfZGF0YV9zaXplKTsKKyAKK0BAIC00ODUsNyArNDc1 LDcgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXQtPnNp emUgLSBkYXRhX29mZnNldCk7CisgICAgIH0KKyAKKy0gICAgaW50IHNraXBfc2FtcGxlc19zaXpl ID0gMDsKKysgICAgc2l6ZV90IHNraXBfc2FtcGxlc19zaXplID0gMDsKKyAgICAgY29uc3QgdWlu dDMyX3QqIHNraXBfc2FtcGxlc19wdHIgPQorICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25z dCB1aW50MzJfdCo+KGF2X3BhY2tldF9nZXRfc2lkZV9kYXRhKAorICAgICAgICAgICAgIHBhY2tl dC5nZXQoKSwgQVZfUEtUX0RBVEFfU0tJUF9TQU1QTEVTLCAmc2tpcF9zYW1wbGVzX3NpemUpKTsK K0BAIC0xNTg3LDYgKzE1NzcsOCBAQAorICAgZm9yIChjb25zdCBhdXRvJiBzdHJlYW0gOiBzdHJl YW1zXykgeworICAgICBpZiAoIXN0cmVhbSB8fCBzdHJlYW0tPklzRW5hYmxlZCgpICE9IGVuYWJs ZWQpCisgICAgICAgY29udGludWU7CisrICAgIGlmIChzdHJlYW0tPmF2X3N0cmVhbSgpLT5zdGFy dF90aW1lID09IEFWX05PUFRTX1ZBTFVFKQorKyAgICAgIGNvbnRpbnVlOworICAgICBpZiAoIWxv d2VzdF9zdGFydF90aW1lX3N0cmVhbSB8fAorICAgICAgICAgc3RyZWFtLT5zdGFydF90aW1lKCkg PCBsb3dlc3Rfc3RhcnRfdGltZV9zdHJlYW0tPnN0YXJ0X3RpbWUoKSkgeworICAgICAgIGxvd2Vz dF9zdGFydF90aW1lX3N0cmVhbSA9IHN0cmVhbS5nZXQoKTsKK0BAIC0xNjA0LDYgKzE1OTYsOCBA QAorICAgICBpZiAoc3RyZWFtICYmIHN0cmVhbS0+dHlwZSgpID09IERlbXV4ZXJTdHJlYW06OlZJ REVPICYmCisgICAgICAgICBzdHJlYW0tPklzRW5hYmxlZCgpKSB7CisgICAgICAgdmlkZW9fc3Ry ZWFtID0gc3RyZWFtLmdldCgpOworKyAgICAgIGlmIChzdHJlYW0tPmF2X3N0cmVhbSgpLT5zdGFy dF90aW1lID09IEFWX05PUFRTX1ZBTFVFKQorKyAgICAgICAgY29udGludWU7CisgICAgICAgaWYg KHZpZGVvX3N0cmVhbS0+c3RhcnRfdGltZSgpIDw9IHNlZWtfdGltZSkgeworICAgICAgICAgcmV0 dXJuIHZpZGVvX3N0cmVhbTsKKyAgICAgICB9CitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1 LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9u LmggcXR3ZWJlbmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmZtcGVn L2ZmbXBlZ19jb21tb24uaAorLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZmbXBl Zy9mZm1wZWdfY29tbW9uLmgJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysr KyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9mZm1wZWcvZmZtcGVnX2NvbW1vbi5oCTIw MjItMDctMTEgMjI6MTI6NDcuOTE3MTkyNzg4IC0wNTAwCitAQCAtMjksNiArMjksNyBAQCBleHRl cm4gIkMiIHsKKyAjaW5jbHVkZSA8bGliYXZmb3JtYXQvYXZmb3JtYXQuaD4KKyAjaW5jbHVkZSA8 bGliYXZmb3JtYXQvYXZpby5oPgorICNpbmNsdWRlIDxsaWJhdnV0aWwvYXZ1dGlsLmg+CisrI2lu Y2x1ZGUgPGxpYmF2dXRpbC9jaGFubmVsX2xheW91dC5oPgorICNpbmNsdWRlIDxsaWJhdnV0aWwv aW1ndXRpbHMuaD4KKyAjaW5jbHVkZSA8bGliYXZ1dGlsL2xvZy5oPgorICNpbmNsdWRlIDxsaWJh dnV0aWwvbWFzdGVyaW5nX2Rpc3BsYXlfbWV0YWRhdGEuaD4KK2RpZmYgLU5hdXJwIHF0d2ViZW5n aW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9hdWRp b19maWxlX3JlYWRlci5jYyBxdHdlYmVuZ2luZS01LjE1LjEwL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9tZWRpYS9maWx0ZXJzL2F1ZGlvX2ZpbGVfcmVhZGVyLmNjCistLS0gYS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vbWVkaWEvZmlsdGVycy9hdWRpb19maWxlX3JlYWRlci5jYwkyMDIyLTA1LTIzIDA2 OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlh L2ZpbHRlcnMvYXVkaW9fZmlsZV9yZWFkZXIuY2MJMjAyMi0wNy0xMSAyMjoxMjo0Ny45MTcxOTI3 ODggLTA1MDAKK0BAIC04NSw3ICs4NSw3IEBAIGJvb2wgQXVkaW9GaWxlUmVhZGVyOjpPcGVuRGVt dXhlcigpIHsKKyB9CisgCisgYm9vbCBBdWRpb0ZpbGVSZWFkZXI6Ok9wZW5EZWNvZGVyKCkgewor LSAgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+ Y29kZWNfaWQpOworKyAgY29uc3QgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rl cihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQpOworICAgaWYgKGNvZGVjKSB7CisgICAgIC8vIE1Q MyBkZWNvZGVzIHRvIFMxNlAgd2hpY2ggd2UgZG9uJ3Qgc3VwcG9ydCwgdGVsbCBpdCB0byB1c2Ug UzE2IGluc3RlYWQuCisgICAgIGlmIChjb2RlY19jb250ZXh0Xy0+c2FtcGxlX2ZtdCA9PSBBVl9T QU1QTEVfRk1UX1MxNlApCitkaWZmIC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX2F1ZGlvX2RlY29kZXIuY2Mg cXR3ZWJlbmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9m Zm1wZWdfYXVkaW9fZGVjb2Rlci5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlh L2ZpbHRlcnMvZmZtcGVnX2F1ZGlvX2RlY29kZXIuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAw MDAwMDAgLTA1MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2Zm bXBlZ19hdWRpb19kZWNvZGVyLmNjCTIwMjItMDctMTEgMjI6MTI6NDcuOTE3MTkyNzg4IC0wNTAw CitAQCAtMzI5LDcgKzMyOSw3IEBAIGJvb2wgRkZtcGVnQXVkaW9EZWNvZGVyOjpDb25maWd1cmVE ZWNvZGUKKyAgICAgfQorICAgfQorIAorLSAgQVZDb2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRf ZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQpOworKyAgY29uc3QgQVZDb2RlYyogY29k ZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2Rlcihjb2RlY19jb250ZXh0Xy0+Y29kZWNfaWQpOworICAg aWYgKCFjb2RlYyB8fAorICAgICAgIGF2Y29kZWNfb3BlbjIoY29kZWNfY29udGV4dF8uZ2V0KCks IGNvZGVjLCAmY29kZWNfb3B0aW9ucykgPCAwKSB7CisgICAgIERMT0coRVJST1IpIDw8ICJDb3Vs ZCBub3QgaW5pdGlhbGl6ZSBhdWRpbyBkZWNvZGVyOiAiCitkaWZmIC1OYXVycCBxdHdlYmVuZ2lu ZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVn X2dsdWUuY2MgcXR3ZWJlbmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEv ZmlsdGVycy9mZm1wZWdfZ2x1ZS5jYworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlh L2ZpbHRlcnMvZmZtcGVnX2dsdWUuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1 MDAKKysrKyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ19nbHVl LmNjCTIwMjItMDctMTEgMjI6MTI6NDcuOTE4MTkyNzc5IC0wNTAwCitAQCAtNTksNyArNTksNiBA QCBzdGF0aWMgaW50NjRfdCBBVklPU2Vla09wZXJhdGlvbih2b2lkKiBvCisgfQorIAorIHZvaWQg RkZtcGVnR2x1ZTo6SW5pdGlhbGl6ZUZGbXBlZygpIHsKKy0gIGF2X3JlZ2lzdGVyX2FsbCgpOwor IH0KKyAKKyBzdGF0aWMgdm9pZCBMb2dDb250YWluZXIoYm9vbCBpc19sb2NhbF9maWxlLAorQEAg LTk1LDkgKzk0LDYgQEAgRkZtcGVnR2x1ZTo6RkZtcGVnR2x1ZShGRm1wZWdVUkxQcm90b2NvbAor ICAgLy8gRW5hYmxlIGZhc3QsIGJ1dCBpbmFjY3VyYXRlIHNlZWtzIGZvciBNUDMuCisgICBmb3Jt YXRfY29udGV4dF8tPmZsYWdzIHw9IEFWRk1UX0ZMQUdfRkFTVF9TRUVLOworIAorLSAgLy8gRW5z dXJlcyB3ZSBjYW4gcmVhZCBvdXQgdmFyaW91cyBtZXRhZGF0YSBiaXRzIGxpa2UgdnA4IGFscGhh LgorLSAgZm9ybWF0X2NvbnRleHRfLT5mbGFncyB8PSBBVkZNVF9GTEFHX0tFRVBfU0lERV9EQVRB OworLQorICAgLy8gRW5zdXJlcyBmb3JtYXQgcGFyc2luZyBlcnJvcnMgd2lsbCBiYWlsIG91dC4g RnJvbSBhbiBhdWRpdCBvbiAxMS8yMDE3LCBhbGwKKyAgIC8vIGluc3RhbmNlcyB3ZXJlIHJlYWwg ZmFpbHVyZXMuIFNvbHZlcyBidWdzIGxpa2UgaHR0cDovL2NyYnVnLmNvbS83MTA3OTEuCisgICBm b3JtYXRfY29udGV4dF8tPmVycm9yX3JlY29nbml0aW9uIHw9IEFWX0VGX0VYUExPREU7CitkaWZm IC1OYXVycCBxdHdlYmVuZ2luZS01LjE1LjEwLm9yaWcvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21l ZGlhL2ZpbHRlcnMvZmZtcGVnX3ZpZGVvX2RlY29kZXIuY2MgcXR3ZWJlbmdpbmUtNS4xNS4xMC9z cmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9mZm1wZWdfdmlkZW9fZGVjb2Rlci5j YworLS0tIGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvZmZtcGVnX3ZpZGVv X2RlY29kZXIuY2MJMjAyMi0wNS0yMyAwNjozODo0MC4wMDAwMDAwMDAgLTA1MDAKKysrKyBiL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL2ZmbXBlZ192aWRlb19kZWNvZGVyLmNj CTIwMjItMDctMTEgMjI6MTI6NDcuOTE4MTkyNzc5IC0wNTAwCitAQCAtMzkxLDcgKzM5MSw3IEBA IGJvb2wgRkZtcGVnVmlkZW9EZWNvZGVyOjpDb25maWd1cmVEZWNvZGUKKyAgIGlmIChkZWNvZGVf bmFsdXNfKQorICAgICBjb2RlY19jb250ZXh0Xy0+ZmxhZ3MyIHw9IEFWX0NPREVDX0ZMQUcyX0NI VU5LUzsKKyAKKy0gIEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoY29kZWNf Y29udGV4dF8tPmNvZGVjX2lkKTsKKysgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19m aW5kX2RlY29kZXIoY29kZWNfY29udGV4dF8tPmNvZGVjX2lkKTsKKyAgIGlmICghY29kZWMgfHwg YXZjb2RlY19vcGVuMihjb2RlY19jb250ZXh0Xy5nZXQoKSwgY29kZWMsIE5VTEwpIDwgMCkgewor ICAgICBSZWxlYXNlRkZtcGVnUmVzb3VyY2VzKCk7CisgICAgIHJldHVybiBmYWxzZTsKK2RpZmYg LU5hdXJwIHF0d2ViZW5naW5lLTUuMTUuMTAub3JpZy9zcmMvM3JkcGFydHkvY2hyb21pdW0vbWVk aWEvZmlsdGVycy9tZWRpYV9maWxlX2NoZWNrZXIuY2MgcXR3ZWJlbmdpbmUtNS4xNS4xMC9zcmMv M3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZmlsdGVycy9tZWRpYV9maWxlX2NoZWNrZXIuY2MKKy0t LSBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9maWx0ZXJzL21lZGlhX2ZpbGVfY2hlY2tl ci5jYwkyMDIyLTA1LTIzIDA2OjM4OjQwLjAwMDAwMDAwMCAtMDUwMAorKysrIGIvc3JjLzNyZHBh cnR5L2Nocm9taXVtL21lZGlhL2ZpbHRlcnMvbWVkaWFfZmlsZV9jaGVja2VyLmNjCTIwMjItMDct MTEgMjI6MTI6NDcuOTE4MTkyNzc5IC0wNTAwCitAQCAtNjgsNyArNjgsNyBAQCBib29sIE1lZGlh RmlsZUNoZWNrZXI6OlN0YXJ0KGJhc2U6OlRpbWVECisgICAgICAgYXV0byBjb250ZXh0ID0gQVZT dHJlYW1Ub0FWQ29kZWNDb250ZXh0KGZvcm1hdF9jb250ZXh0LT5zdHJlYW1zW2ldKTsKKyAgICAg ICBpZiAoIWNvbnRleHQpCisgICAgICAgICBjb250aW51ZTsKKy0gICAgICBBVkNvZGVjKiBjb2Rl YyA9IGF2Y29kZWNfZmluZF9kZWNvZGVyKGNwLT5jb2RlY19pZCk7CisrICAgICAgY29uc3QgQVZD b2RlYyogY29kZWMgPSBhdmNvZGVjX2ZpbmRfZGVjb2RlcihjcC0+Y29kZWNfaWQpOworICAgICAg IGlmIChjb2RlYyAmJiBhdmNvZGVjX29wZW4yKGNvbnRleHQuZ2V0KCksIGNvZGVjLCBudWxscHRy KSA+PSAwKSB7CisgICAgICAgICBhdXRvIGxvb3AgPSBzdGQ6Om1ha2VfdW5pcXVlPEZGbXBlZ0Rl Y29kaW5nTG9vcD4oY29udGV4dC5nZXQoKSk7CisgICAgICAgICBzdHJlYW1fY29udGV4dHNbaV0g PSB7c3RkOjptb3ZlKGNvbnRleHQpLCBzdGQ6Om1vdmUobG9vcCl9OworZGlmZiAtTmF1cnAgcXR3 ZWJlbmdpbmUtNS4xNS4xMC5vcmlnL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93 ZWJydGMvbW9kdWxlcy92aWRlb19jb2RpbmcvY29kZWNzL2gyNjQvaDI2NF9kZWNvZGVyX2ltcGwu Y2MgcXR3ZWJlbmdpbmUtNS4xNS4xMC9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv d2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZGVjb2Rlcl9pbXBs LmNjCistLS0gYS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVs ZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRfZGVjb2Rlcl9pbXBsLmNjCTIwMjItMDUt MjMgMDY6Mzg6NDAuMDAwMDAwMDAwIC0wNTAwCisrKysgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvdmlkZW9fY29kaW5nL2NvZGVjcy9oMjY0L2gyNjRf ZGVjb2Rlcl9pbXBsLmNjCTIwMjItMDctMTEgMjI6MTI6NDcuOTE4MTkyNzc5IC0wNTAwCitAQCAt MjAzLDcgKzIwMyw3IEBAIGludDMyX3QgSDI2NERlY29kZXJJbXBsOjpJbml0RGVjb2RlKGNvbnMK KyAgIC8vIGEgcG9pbnRlciB8dGhpc3wuCisgICBhdl9jb250ZXh0Xy0+b3BhcXVlID0gdGhpczsK KyAKKy0gIEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29kZXIoYXZfY29udGV4dF8t PmNvZGVjX2lkKTsKKysgIGNvbnN0IEFWQ29kZWMqIGNvZGVjID0gYXZjb2RlY19maW5kX2RlY29k ZXIoYXZfY29udGV4dF8tPmNvZGVjX2lkKTsKKyAgIGlmICghY29kZWMpIHsKKyAgICAgLy8gVGhp cyBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgRkZtcGVnIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCBv ciBpdCBoYXMgbm90CisgICAgIC8vIGJlZW4gY29tcGlsZWQvaW5pdGlhbGl6ZWQgd2l0aCB0aGUg Y29ycmVjdCBzZXQgb2YgY29kZWNzLgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5l L3RlbXBsYXRlIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlCmluZGV4IDg0ZGU1YjEy ZWNkZGEuLmI4OWZlNGMxYWQ1MGEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUKQEAgLTEsOSArMSw5 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUtd2ViZW5naW5lJwogcGtnbmFtZT1xdDUtd2Vi ZW5naW5lCi12ZXJzaW9uPTUuMTUuMTEKLXJldmlzaW9uPTUKK3ZlcnNpb249NS4xNS4xMworcmV2 aXNpb249MQogX3ZlcnNpb249IiR7dmVyc2lvbn0tbHRzIgotX2Nocm9taXVtX2NvbW1pdD1iZTM0 OWVhZjYyZTc3OTU1NzkxZDdiZjI5Zjg5M2YxZThhMzdkYWY0CitfY2hyb21pdW1fY29tbWl0PWU0 OGRmNzgwM2M3Yzk4YjBiMjQ3MWM5NDA1N2QzMmU0NGEzMDFhZDUKIGFyY2hzPSJ4ODZfNjQqIGk2 ODYqIGFybXZbNjddKiBwcGM2NCogYWFyY2g2NCoiCiBjcmVhdGVfd3Jrc3JjPXllcwogYnVpbGRf c3R5bGU9cW1ha2UKQEAgLTMyLDggKzMyLDggQEAgbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciwg TEdQTC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9xdC5pby8iCiBkaXN0ZmlsZXM9 Imh0dHBzOi8vZ2l0aHViLmNvbS9xdC9xdHdlYmVuZ2luZS9hcmNoaXZlL3Yke192ZXJzaW9ufS50 YXIuZ3oKICBodHRwczovL2dpdGh1Yi5jb20vcXQvcXR3ZWJlbmdpbmUtY2hyb21pdW0vYXJjaGl2 ZS8ke19jaHJvbWl1bV9jb21taXR9LnRhci5neiIKLWNoZWNrc3VtPSJhYTc0NjYzNTZjNDUwYzVm NTg3MGY5NzliOTNjZDdlN2U2MmRhMTE2NWMzMjhmZmNhYjFhOTkyOGRiMThhZDY3Ci0gNmY0N2Vk OGFiOGNjMDYyNDExZjZmMjA2ZGE2MzUzYmM4MjYzZDZlZDZkNjI5MGM2ODlhMDVjMDFkOTFmNjQ2 YiIKK2NoZWNrc3VtPSI0YjU5ODM4ZWQ3NWVmNzg4YjU5ZTFlNDEyNTM1YTBlNDJkZDlkMzExNjYx ZmRlYWRiMTkxYjU4MWJhODE1YzYzCisgYTkxNjg2NTYyYjFkNGU4YjIyMGUwYmJjYmFiNWZlYjY0 NjMwZTJkZTk3NGIzNWFjMDM0YmYzODhhZjc3MWE2YyIKIAogbm9fZ2VuZXJpY19wa2djb25maWdf bGluaz15ZXMKIGJ1aWxkX29wdGlvbnM9InNuZGlvIHBpcGV3aXJlIgoKRnJvbSAyZDgzNTMwMzE1 N2Q2MzI3ZmU2NWE1NGJlZDdkYTk1MGI2NDNiY2ZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIw OjAxOjUxIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwNjcvMTE1XSBxdDU6IHVwZGF0ZSB0byA1LjE1 LjgKCi0tLQogLi4uZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoIHwg MTI5MTMgKysrKysrKysrKysrKysrKwogc3JjcGtncy9xdDUvdGVtcGxhdGUgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgMTMgKy0KIDIgZmlsZXMgY2hhbmdlZCwgMTI5MTkgaW5zZXJ0aW9u cygrKSwgNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRj aGVzL3F0LWV2ZXJ5d2hlcmUtb3BlbnNvdXJjZS1zcmMtNS4xNS44LWtmNS0xLnBhdGNoCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy9xdC1ldmVyeXdoZXJlLW9wZW5zb3VyY2Utc3Jj LTUuMTUuOC1rZjUtMS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1v cGVuc291cmNlLXNyYy01LjE1Ljgta2Y1LTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwMC4uOTY2Yzk4YmNkM2JiMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvcXQ1L3BhdGNoZXMvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNlLXNyYy01LjE1Ljgta2Y1LTEu cGF0Y2gKQEAgLTAsMCArMSwxMjkxMyBAQAorU3VibWl0dGVkIEJ5OiAgICAgICAgICAgIFBpZXJy ZSBMYWJhc3RpZSA8cGllcnJlX2RvdF9sYWJhc3RpZV9hdF9uZXVmX2RvdF9mcj4KK0RhdGU6ICAg ICAgICAgICAgICAgICAgICAyMDIzLTAxLTA1CitJbml0aWFsIFBhY2thZ2UgVmVyc2lvbjogNS4x NS44CitVcHN0cmVhbSBTdGF0dXM6ICAgICAgICAgQXBwbGllZCAoYWNjb3JkaW5nIHRvIEtERSkK K09yaWdpbjogICAgICAgICAgICAgICAgICBLREUgcGF0Y2ggc2V0CitEZXNjcmlwdGlvbjogICAg ICAgICAgICAgUGF0Y2ggc2V0IG1haW50YWluZWQgYnkgdGhlIEtERSBmb2xrcworc2VlIGh0dHBz Oi8vZG90LmtkZS5vcmcvMjAyMS8wNC8wNi9hbm5vdW5jaW5nLWtkZXMtcXQtNS1wYXRjaC1jb2xs ZWN0aW9uCitQYXRjaCBnZW5lcmF0ZWQgdXNpbmcgdGhlIHByb2NlZHVyZSBpbgoraHR0cHM6Ly93 aWtpLmxpbnV4ZnJvbXNjcmF0Y2gub3JnL2JsZnMvdGlja2V0LzE3NDc2I2NvbW1lbnQ6MworCitT dWJtb2R1bGUgcXRiYXNlIDRlZTRmYzE4Li45Y2Y1ODZkNjoKK2RpZmYgLS1naXQgYS9xdGJhc2Uv bWtzcGVjcy9jb21tb24vYW5kcm9pZC9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9j b21tb24vYW5kcm9pZC9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IGY3NWJjNDA5M2IuLjJiZDU5NDEw ZDQgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9jb21tb24vYW5kcm9pZC9xcGxhdGZvcm1k ZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2NvbW1vbi9hbmRyb2lkL3FwbGF0Zm9ybWRlZnMu aAorQEAgLTE0NCwxMSArMTQ0LDcgQEAKKyAjZGVmaW5lIFFUX1NJR05BTF9BUkdTICAgICAgICAg IGludAorICNkZWZpbmUgUVRfU0lHTkFMX0lHTk9SRSAgICAgICAgU0lHX0lHTgorIAorLSNpZiBk ZWZpbmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+PSAyKQorICNkZWZpbmUgUVRfU09DS0xF Tl9UICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAg ICAgICAgICAgIGludAorLSNlbmRpZgorIAorICNpZiBkZWZpbmVkKF9YT1BFTl9TT1VSQ0UpICYm IChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJTlRGICAgICAgICAgICAg IDo6c25wcmludGYKK2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9mZWF0dXJlcy9tYWMvc2Rr Lm1rIGIvcXRiYXNlL21rc3BlY3MvZmVhdHVyZXMvbWFjL3Nkay5taworaW5kZXggZjMwYjU4MzBi NC4uYTMyY2VhY2I2YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9z ZGsubWsKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2ZlYXR1cmVzL21hYy9zZGsubWsKK0BAIC0xLDYg KzEsNiBAQAorIAorIGlmZXEgKCQoUVRfTUFDX1NES19OT19WRVJTSU9OX0NIRUNLKSwpCistICAg IENIRUNLX1NES19DT01NQU5EID0gL3Vzci9iaW4veGNydW4gLS1zZGsgJChFWFBPUlRfUU1BS0Vf TUFDX1NESykgLXNob3ctc2RrLXZlcnNpb24gMj4mMQorKyAgICBDSEVDS19TREtfQ09NTUFORCA9 IC91c3IvYmluL3hjcnVuIC0tc2RrICQoRVhQT1JUX1FNQUtFX01BQ19TREspIC1zaG93LXNkay12 ZXJzaW9uIDI+L2Rldi9udWxsCisgICAgIENVUlJFTlRfTUFDX1NES19WRVJTSU9OIDo9ICQoc2hl bGwgREVWRUxPUEVSX0RJUj0kKEVYUE9SVF9RTUFLRV9YQ09ERV9ERVZFTE9QRVJfUEFUSCkgJChD SEVDS19TREtfQ09NTUFORCkpCisgICAgIGlmbmVxICgkKENVUlJFTlRfTUFDX1NES19WRVJTSU9O KSwkKEVYUE9SVF9RTUFLRV9NQUNfU0RLX1ZFUlNJT04pKQorICAgICAgICAgIyBXZSBkb24ndCB3 YW50IHRvIGNvbXBsYWluIGFib3V0IG91dCBvZiBkYXRlIFNESyB1bmxlc3MgdGhlIHRhcmdldCBu ZWVkcyB0byBiZSByZW1hZGUuCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvbGludXgtY2xh bmcvcXBsYXRmb3JtZGVmcy5oIGIvcXRiYXNlL21rc3BlY3MvbGludXgtY2xhbmcvcXBsYXRmb3Jt ZGVmcy5oCitpbmRleCBhODE4ZDk3M2YwLi5jMWFiNzJmYmM2IDEwMDY0NAorLS0tIGEvcXRiYXNl L21rc3BlY3MvbGludXgtY2xhbmcvcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVj cy9saW51eC1jbGFuZy9xcGxhdGZvcm1kZWZzLmgKK0BAIC03OSwxNCArNzksNiBAQAorICNkZWZp bmUgUVRfVVNFX1hPUEVOX0xGU19FWFRFTlNJT05TCisgI2luY2x1ZGUgIi4uL2NvbW1vbi9wb3Np eC9xcGxhdGZvcm1kZWZzLmgiCisgCistI3VuZGVmIFFUX1NPQ0tMRU5fVAorLQorLSNpZiBkZWZp bmVkKF9fR0xJQkNfXykgJiYgKF9fR0xJQkNfXyA+PSAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9U ICAgICAgICAgICAgc29ja2xlbl90CistI2Vsc2UKKy0jZGVmaW5lIFFUX1NPQ0tMRU5fVCAgICAg ICAgICAgIGludAorLSNlbmRpZgorLQorICNpZiBkZWZpbmVkKF9YT1BFTl9TT1VSQ0UpICYmIChf WE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5lIFFUX1NOUFJJTlRGICAgICAgICAgICAgIDo6 c25wcmludGYKKyAjZGVmaW5lIFFUX1ZTTlBSSU5URiAgICAgICAgICAgIDo6dnNucHJpbnRmCitk aWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvbGludXgtZysrL3FwbGF0Zm9ybWRlZnMuaCBiL3F0 YmFzZS9ta3NwZWNzL2xpbnV4LWcrKy9xcGxhdGZvcm1kZWZzLmgKK2luZGV4IDEzNTIzZjA3MDIu LjRkMjc1MGQ5ZWMgMTAwNjQ0CistLS0gYS9xdGJhc2UvbWtzcGVjcy9saW51eC1nKysvcXBsYXRm b3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtzcGVjcy9saW51eC1nKysvcXBsYXRmb3JtZGVmcy5o CitAQCAtNzksMTQgKzc5LDYgQEAKKyAjZGVmaW5lIFFUX1VTRV9YT1BFTl9MRlNfRVhURU5TSU9O UworICNpbmNsdWRlICIuLi9jb21tb24vcG9zaXgvcXBsYXRmb3JtZGVmcy5oIgorIAorLSN1bmRl ZiBRVF9TT0NLTEVOX1QKKy0KKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmIChfX0dMSUJDX18g PCAyKQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAgaW50CistI2Vsc2UKKy0jZGVm aW5lIFFUX1NPQ0tMRU5fVCAgICAgICAgICAgIHNvY2tsZW5fdAorLSNlbmRpZgorLQorICNpZiBk ZWZpbmVkKF9YT1BFTl9TT1VSQ0UpICYmIChfWE9QRU5fU09VUkNFID49IDUwMCkKKyAjZGVmaW5l IFFUX1NOUFJJTlRGICAgICAgICAgICAgIDo6c25wcmludGYKKyAjZGVmaW5lIFFUX1ZTTlBSSU5U RiAgICAgICAgICAgIDo6dnNucHJpbnRmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL21rc3BlY3MvbGlu dXgtbGx2bS9xcGxhdGZvcm1kZWZzLmggYi9xdGJhc2UvbWtzcGVjcy9saW51eC1sbHZtL3FwbGF0 Zm9ybWRlZnMuaAoraW5kZXggZGM3NTBhYjFlZi4uZDNjYzM5YjQ3ZiAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9ta3NwZWNzL2xpbnV4LWxsdm0vcXBsYXRmb3JtZGVmcy5oCisrKysgYi9xdGJhc2UvbWtz cGVjcy9saW51eC1sbHZtL3FwbGF0Zm9ybWRlZnMuaAorQEAgLTgwLDE0ICs4MCw2IEBACisgI2Rl ZmluZSBRVF9VU0VfWE9QRU5fTEZTX0VYVEVOU0lPTlMKKyAjaW5jbHVkZSAiLi4vY29tbW9uL3Bv c2l4L3FwbGF0Zm9ybWRlZnMuaCIKKyAKKy0jdW5kZWYgUVRfU09DS0xFTl9UCistCistI2lmIGRl ZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fID49IDIpCistI2RlZmluZSBRVF9TT0NLTEVO X1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAg ICAgICAgICAgaW50CistI2VuZGlmCistCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYg KF9YT1BFTl9TT1VSQ0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAgICAg OjpzbnByaW50ZgorICNkZWZpbmUgUVRfVlNOUFJJTlRGICAgICAgICAgICAgOjp2c25wcmludGYK K2RpZmYgLS1naXQgYS9xdGJhc2UvbWtzcGVjcy9saW51eC1sc2ItZysrL3FwbGF0Zm9ybWRlZnMu aCBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxzYi1nKysvcXBsYXRmb3JtZGVmcy5oCitpbmRleCA0 YzRlNTNkYTJhLi44M2JhZmZiM2UzIDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvbGludXgt bHNiLWcrKy9xcGxhdGZvcm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2xpbnV4LWxzYi1n KysvcXBsYXRmb3JtZGVmcy5oCitAQCAtODUsMTYgKzg1LDkgQEAKKyAjaW5jbHVkZSAiLi4vY29t bW9uL3Bvc2l4L3FwbGF0Zm9ybWRlZnMuaCIKKyAKKyAjdW5kZWYgUVRfT1BFTl9MQVJHRUZJTEUK Ky0jdW5kZWYgUVRfU09DS0xFTl9UCisgCisgI2RlZmluZSBRVF9PUEVOX0xBUkdFRklMRSAgICAg ICAwCisgCistI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAoX19HTElCQ19fID49IDIpCistI2Rl ZmluZSBRVF9TT0NLTEVOX1QgICAgICAgICAgICBzb2NrbGVuX3QKKy0jZWxzZQorLSNkZWZpbmUg UVRfU09DS0xFTl9UICAgICAgICAgICAgaW50CistI2VuZGlmCistCisgI2lmbmRlZiBTSU9DR0lG QlJEQUREUgorICMgIGRlZmluZSBTSU9DR0lGQlJEQUREUiAweDg5MTkKKyAjZW5kaWYKK2RpZmYg LS1naXQgYS9xdGJhc2UvbWtzcGVjcy9seW54b3MtZysrL3FwbGF0Zm9ybWRlZnMuaCBiL3F0YmFz ZS9ta3NwZWNzL2x5bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5oCitpbmRleCA0MzM5ZWEyYjIzLi42 MDA3YWYwMDU1IDEwMDY0NAorLS0tIGEvcXRiYXNlL21rc3BlY3MvbHlueG9zLWcrKy9xcGxhdGZv cm1kZWZzLmgKKysrKyBiL3F0YmFzZS9ta3NwZWNzL2x5bnhvcy1nKysvcXBsYXRmb3JtZGVmcy5o CitAQCAtNzIsMTQgKzcyLDYgQEAKKyAKKyAjaW5jbHVkZSAiLi4vY29tbW9uL3Bvc2l4L3FwbGF0 Zm9ybWRlZnMuaCIKKyAKKy0jdW5kZWYgUVRfU09DS0xFTl9UCistCistI2lmIGRlZmluZWQoX19H TElCQ19fKSAmJiAoX19HTElCQ19fID49IDIpCistI2RlZmluZSBRVF9TT0NLTEVOX1QgICAgICAg ICAgICBzb2NrbGVuX3QKKy0jZWxzZQorLSNkZWZpbmUgUVRfU09DS0xFTl9UICAgICAgICAgICAg aW50CistI2VuZGlmCistCisgI2lmIGRlZmluZWQoX1hPUEVOX1NPVVJDRSkgJiYgKF9YT1BFTl9T T1VSQ0UgPj0gNTAwKQorICNkZWZpbmUgUVRfU05QUklOVEYgICAgICAgICAgICAgOjpzbnByaW50 ZgorICNkZWZpbmUgUVRfVlNOUFJJTlRGICAgICAgICAgICAgOjp2c25wcmludGYKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjLzNyZHBhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9IYW5kbGVBbGxvY2F0 b3IuY3BwIGIvcXRiYXNlL3NyYy8zcmRwYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvSGFuZGxlQWxs b2NhdG9yLmNwcAoraW5kZXggYzNjMTg0MjU4Zi4uMzJhZjNmOGYyOSAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvM3JkcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvci5jcHAK KysrKyBiL3F0YmFzZS9zcmMvM3JkcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9j YXRvci5jcHAKK0BAIC0xMCw2ICsxMCw3IEBACisgI2luY2x1ZGUgImxpYkFOR0xFL0hhbmRsZUFs bG9jYXRvci5oIgorIAorICNpbmNsdWRlIDxhbGdvcml0aG0+CisrI2luY2x1ZGUgPGxpbWl0cz4K KyAKKyAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy8zcmRwYXJ0eS9mb3JrZmQvZm9ya2ZkX2xpbnV4LmMgYi9xdGJhc2Uvc3JjLzNyZHBhcnR5L2Zv cmtmZC9mb3JrZmRfbGludXguYworaW5kZXggZmZlMGU5YTVlMi4uYjFmNTQwOGQxMSAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvM3JkcGFydHkvZm9ya2ZkL2ZvcmtmZF9saW51eC5jCisrKysgYi9x dGJhc2Uvc3JjLzNyZHBhcnR5L2ZvcmtmZC9mb3JrZmRfbGludXguYworQEAgLTgyLDcgKzgyLDgg QEAgc3RhdGljIGludCBzeXNfY2xvbmUodW5zaWduZWQgbG9uZyBjbG9uZWZsYWdzLCBpbnQgKnB0 aWQpCisgICAgIHJldHVybiBzeXNjYWxsKF9fTlJfY2xvbmUsIGNsb25lZmxhZ3MsIGNoaWxkX3N0 YWNrLCBzdGFja19zaXplLCBwdGlkLCBuZXd0bHMsIGN0aWQpOworICNlbGlmIGRlZmluZWQoX19h cmNfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZp bmVkKF9fbWlwc19fKSB8fCBcCisgICAgIGRlZmluZWQoX19uZHMzMl9fKSB8fCBkZWZpbmVkKF9f aHBwYV9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9faTM4Nl9fKSB8fCBc CistICAgIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3h0ZW5zYV9fKSB8fCBkZWZp bmVkKF9fYWxwaGFfXykgfHwgZGVmaW5lZChfX3Jpc2N2KQorKyAgICBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IGRlZmluZWQoX194dGVuc2FfXykgfHwgZGVmaW5lZChfX2FscGhhX18pIHx8IGRlZmlu ZWQoX19yaXNjdikgfHwgXAorKyAgICBkZWZpbmVkKF9fbG9vbmdhcmNoX18pCisgICAgIC8qIGN0 aWQgYW5kIG5ld3RscyBhcmUgaW52ZXJ0ZWQgb24gQ09ORklHX0NMT05FX0JBQ0tXQVJEUyBhcmNo aXRlY3R1cmVzLAorICAgICAgKiBidXQgc2luY2UgYm90aCB2YWx1ZXMgYXJlIDAsIHRoZXJlJ3Mg bm8gaGFybS4gKi8KKyAgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9jbG9uZSwgY2xvbmVmbGFncywg Y2hpbGRfc3RhY2ssIHB0aWQsIGN0aWQsIG5ld3Rscyk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Ny Yy9hbmRyb2lkL2phci9zcmMvb3JnL3F0cHJvamVjdC9xdDUvYW5kcm9pZC9RdE5hdGl2ZS5qYXZh IGIvcXRiYXNlL3NyYy9hbmRyb2lkL2phci9zcmMvb3JnL3F0cHJvamVjdC9xdDUvYW5kcm9pZC9R dE5hdGl2ZS5qYXZhCitpbmRleCA1NzkyYjViMmY1Li4yZjc0NzUwZmNmIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9hbmRyb2lkL2phci9zcmMvb3JnL3F0cHJvamVjdC9xdDUvYW5kcm9pZC9RdE5h dGl2ZS5qYXZhCisrKysgYi9xdGJhc2Uvc3JjL2FuZHJvaWQvamFyL3NyYy9vcmcvcXRwcm9qZWN0 L3F0NS9hbmRyb2lkL1F0TmF0aXZlLmphdmEKK0BAIC0xMTYsNiArMTE2LDcgQEAgcHVibGljIGNs YXNzIFF0TmF0aXZlCisgICAgIHB1YmxpYyBzdGF0aWMgUXRUaHJlYWQgbV9xdFRocmVhZCA9IG5l dyBRdFRocmVhZCgpOworICAgICBwcml2YXRlIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgVXJpPiBt X2NhY2hlZFVyaXMgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFVyaT4oKTsKKyAgICAgcHJpdmF0ZSBz dGF0aWMgQXJyYXlMaXN0PFN0cmluZz4gbV9rbm93bkRpcnMgPSBuZXcgQXJyYXlMaXN0PFN0cmlu Zz4oKTsKKysgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE5vUGVybWlzc2lvbkVycm9y TWVzc2FnZSA9ICJObyBwZXJtaXNzaW9ucyB0byBvcGVuIFVyaSI7CisgCisgICAgIHByaXZhdGUg c3RhdGljIGZpbmFsIFJ1bm5hYmxlIHJ1blBlbmRpbmdDcHBSdW5uYWJsZXNSdW5uYWJsZSA9IG5l dyBSdW5uYWJsZSgpIHsKKyAgICAgICAgIEBPdmVycmlkZQorQEAgLTE5MywxMSArMTk0LDEwIEBA IHB1YmxpYyBjbGFzcyBRdE5hdGl2ZQorICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJV cmk7CisgICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgIC8vIEFuZHJvaWQgNiBhbmQgZWFy bGllciBjb3VsZCBzdGlsbCBtYW5hZ2UgdG8gb3BlbiB0aGUgZmlsZSBzbyB3ZSBjYW4gcmV0dXJu IHRoZQorLSAgICAgICAgICAgIC8vIHBhcnNlZCB1cmkgaGVyZQorLSAgICAgICAgICAgIGlmIChC dWlsZC5WRVJTSU9OLlNES19JTlQgPCAyNCkKKy0gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNl ZFVyaTsKKy0gICAgICAgICAgICByZXR1cm4gbnVsbDsKKysgICAgICAgICAgICAvLyBpZiB3ZSBv bmx5IGhhdmUgdHJhbnNpZW50IHBlcm1pc3Npb25zIG9uIHVyaSBhbGwgdGhlIGFib3ZlIHdpbGwg ZmFpbCwKKysgICAgICAgICAgICAvLyBidXQgd2Ugd2lsbCBiZSBhYmxlIHRvIHJlYWQgdGhlIGZp bGUgYW55d2F5LCBzbyBjb250aW51ZSB3aXRoIHVyaSBoZXJlIGFueXdheQorKyAgICAgICAgICAg IC8vIGFuZCBjaGVjayBmb3IgU2VjdXJpdHlFeGNlcHRpb25zIGxhdGVyCisrICAgICAgICAgICAg cmV0dXJuIHBhcnNlZFVyaTsKKyAgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUp IHsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICAgICAgIHJldHVy biBudWxsOworQEAgLTI0NCw3ICsyNDQsNyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAg ICAgIGludCBlcnJvciA9IC0xOworIAorICAgICAgICAgaWYgKHVyaSA9PSBudWxsKSB7CistICAg ICAgICAgICAgTG9nLmUoUXRUQUcsICJvcGVuRmRGb3JDb250ZW50VXJsKCk6IE5vIHBlcm1pc3Np b25zIHRvIG9wZW4gVXJpIik7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJvcGVuRmRGb3JD b250ZW50VXJsKCk6ICIgKyBOb1Blcm1pc3Npb25FcnJvck1lc3NhZ2UpOworICAgICAgICAgICAg IHJldHVybiBlcnJvcjsKKyAgICAgICAgIH0KKyAKK0BAIC0yNTQsMTIgKzI1NCwxMyBAQCBwdWJs aWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgICAgICByZXR1cm4gZmREZXNjLmRldGFjaEZkKCk7 CisgICAgICAgICB9IGNhdGNoIChGaWxlTm90Rm91bmRFeGNlcHRpb24gZSkgeworICAgICAgICAg ICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CistICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAg ICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAg ICBMb2cuZShRdFRBRywgIm9wZW5GZEZvckNvbnRlbnRVcmwoKTogSW52YWxpZCBVcmkiKTsKKyAg ICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBlcnJv cjsKKysgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKysgICAgICAgICAg ICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgIH0KKysg ICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgfQorIAorICAgICBwdWJsaWMgc3RhdGljIGxvbmcg Z2V0U2l6ZShDb250ZXh0IGNvbnRleHQsIFN0cmluZyBjb250ZW50VXJsKQorQEAgLTI3MCw3ICsy NzEsNyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgICAgICB1cmkgPSBnZXRVcmlX aXRoVmFsaWRQZXJtaXNzaW9uKGNvbnRleHQsIGNvbnRlbnRVcmwsICJyIik7CisgCisgICAgICAg ICBpZiAodXJpID09IG51bGwpIHsKKy0gICAgICAgICAgICBMb2cuZShRdFRBRywgImdldFNpemUo KTogTm8gcGVybWlzc2lvbnMgdG8gb3BlbiBVcmkiKTsKKysgICAgICAgICAgICBMb2cuZShRdFRB RywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICByZXR1cm4gc2l6ZTsK KyAgICAgICAgIH0gZWxzZSBpZiAoIW1fY2FjaGVkVXJpcy5jb250YWluc0tleShjb250ZW50VXJs KSkgeworICAgICAgICAgICAgIG1fY2FjaGVkVXJpcy5wdXQoY29udGVudFVybCwgdXJpKTsKK0BA IC0yODgsMTIgKzI4OSwxMyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAgICAgIH0gY2F0 Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgTG9nLmUoUXRU QUcsICJnZXRTaXplKCk6IEludmFsaWQgVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNr VHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgICAgIH0gIGNhdGNoIChV bnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgTG9nLmUoUXRU QUcsICJnZXRTaXplKCk6IFVuc3VwcG9ydGVkIG9wZXJhdGlvbiBmb3IgZ2l2ZW4gVXJpIik7Cisg ICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gc2l6 ZTsKKysgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIGUpIHsKKysgICAgICAgICAg ICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgIH0KKysg ICAgICAgIHJldHVybiBzaXplOworICAgICB9CisgCisgICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVh biBjaGVja0ZpbGVFeGlzdHMoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgY29udGVudFVybCkKK0BA IC0zMDMsNyArMzA1LDcgQEAgcHVibGljIGNsYXNzIFF0TmF0aXZlCisgICAgICAgICBpZiAodXJp ID09IG51bGwpCisgICAgICAgICAgICAgdXJpID0gZ2V0VXJpV2l0aFZhbGlkUGVybWlzc2lvbihj b250ZXh0LCBjb250ZW50VXJsLCAiciIpOworICAgICAgICAgaWYgKHVyaSA9PSBudWxsKSB7Cist ICAgICAgICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0ZpbGVFeGlzdHMoKTogTm8gcGVybWlzc2lv bnMgdG8gb3BlbiBVcmkiKTsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9u RXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICByZXR1cm4gZXhpc3RzOworICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICBpZiAoIW1fY2FjaGVkVXJpcy5jb250YWluc0tleShjb250ZW50 VXJsKSkKK0BAIC0zMjEsMTIgKzMyMywxMyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAgICAg ICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAg TG9nLmUoUXRUQUcsICJjaGVja0ZpbGVFeGlzdHMoKTogSW52YWxpZCBVcmkiKTsKKyAgICAgICAg ICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworLSAgICAgICAgICAgIHJldHVybiBleGlzdHM7Cisg ICAgICAgICB9IGNhdGNoIChVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiBlKSB7CisgICAg ICAgICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0ZpbGVFeGlzdHMoKTogVW5zdXBwb3J0ZWQgb3Bl cmF0aW9uIGZvciBnaXZlbiBVcmkiKTsKKyAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgp OworLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5 RXhjZXB0aW9uIGUpIHsKKysgICAgICAgICAgICBMb2cuZShRdFRBRywgTm9QZXJtaXNzaW9uRXJy b3JNZXNzYWdlKTsKKyAgICAgICAgIH0KKysgICAgICAgIHJldHVybiBleGlzdHM7CisgICAgIH0K KyAKKyAgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGNoZWNrSWZXcml0YWJsZShDb250ZXh0IGNv bnRleHQsIFN0cmluZyBjb250ZW50VXJsKQorQEAgLTM0NCw3ICszNDcsNyBAQCBwdWJsaWMgY2xh c3MgUXROYXRpdmUKKyAgICAgICAgICAgICB1cmkgPSBnZXRVcmlXaXRoVmFsaWRQZXJtaXNzaW9u KGNvbnRleHQsIGNvbnRlbnRVcmwsICJyIik7CisgICAgICAgICB9CisgICAgICAgICBpZiAodXJp ID09IG51bGwpIHsKKy0gICAgICAgICAgICBMb2cuZShRdFRBRywgImlzRGlyKCk6IE5vIHBlcm1p c3Npb25zIHRvIG9wZW4gVXJpIik7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlz c2lvbkVycm9yTWVzc2FnZSk7CisgICAgICAgICAgICAgcmV0dXJuIGlzRGlyOworICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgICBpZiAoIW1fY2FjaGVkVXJpcy5jb250YWluc0tleShjb250 ZW50VXJsKSkKK0BAIC0zNzQsMTIgKzM3NywxMyBAQCBwdWJsaWMgY2xhc3MgUXROYXRpdmUKKyAg ICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAg ICAgTG9nLmUoUXRUQUcsICJjaGVja0lmRGlyKCk6IEludmFsaWQgVXJpIik7CisgICAgICAgICAg ICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg ICAgICB9IGNhdGNoIChVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiBlKSB7CisgICAgICAg ICAgICAgTG9nLmUoUXRUQUcsICJjaGVja0lmRGlyKCk6IFVuc3VwcG9ydGVkIG9wZXJhdGlvbiBm b3IgZ2l2ZW4gVXJpIik7CisgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKy0gICAg ICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICB9IGNhdGNoIChTZWN1cml0eUV4Y2VwdGlv biBlKSB7CisrICAgICAgICAgICAgTG9nLmUoUXRUQUcsIE5vUGVybWlzc2lvbkVycm9yTWVzc2Fn ZSk7CisgICAgICAgICB9CisrICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgIH0KKyAgICAgcHVi bGljIHN0YXRpYyBTdHJpbmdbXSBsaXN0Q29udGVudHNGcm9tVHJlZVVyaShDb250ZXh0IGNvbnRl eHQsIFN0cmluZyBjb250ZW50VXJsKQorICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9j b25jdXJyZW50L3F0Y29uY3VycmVudHJlZHVjZWtlcm5lbC5oIGIvcXRiYXNlL3NyYy9jb25jdXJy ZW50L3F0Y29uY3VycmVudHJlZHVjZWtlcm5lbC5oCitpbmRleCA4ZjlhOTM4OTUyLi5hOThkZWRl ZjJlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHJlZHVj ZWtlcm5lbC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50cmVkdWNl a2VybmVsLmgKK0BAIC0yMTIsMTEgKzIxMiwxMyBAQCBwdWJsaWM6CisgCisgICAgIGlubGluZSBi b29sIHNob3VsZFRocm90dGxlKCkKKyAgICAgeworKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPFFN dXRleD4gbG9ja2VyKG11dGV4KTsKKyAgICAgICAgIHJldHVybiAocmVzdWx0c01hcFNpemUgPiAo UmVkdWNlUXVldWVUaHJvdHRsZUxpbWl0ICogdGhyZWFkQ291bnQpKTsKKyAgICAgfQorIAorICAg ICBpbmxpbmUgYm9vbCBzaG91bGRTdGFydFRocmVhZCgpCisgICAgIHsKKysgICAgICAgIHN0ZDo6 bG9ja19ndWFyZDxRTXV0ZXg+IGxvY2tlcihtdXRleCk7CisgICAgICAgICByZXR1cm4gKHJlc3Vs dHNNYXBTaXplIDw9IChSZWR1Y2VRdWV1ZVN0YXJ0TGltaXQgKiB0aHJlYWRDb3VudCkpOworICAg ICB9CisgfTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50 dGhyZWFkZW5naW5lLmNwcCBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJl YWRlbmdpbmUuY3BwCitpbmRleCBlYTZjZTNhYzQyLi43ZjkxYTJiYTY4IDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9jb25jdXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKKysrKyBi L3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuY3BwCitAQCAt MTc2LDYgKzE3NiwzOSBAQCB2b2lkIFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0U2luZ2xlVGhyZWFk ZWQoKQorICAgICBmaW5pc2goKTsKKyB9CisgCisrdm9pZCBUaHJlYWRFbmdpbmVCYXNlOjpzdGFy dEJsb2NraW5nKCkKKyt7CisrICAgIHN0YXJ0KCk7CisrICAgIGJhcnJpZXIuYWNxdWlyZSgpOwor KyAgICBzdGFydFRocmVhZHMoKTsKKysKKysgICAgYm9vbCB0aHJvdHRsZWQgPSBmYWxzZTsKKysj aWZuZGVmIFFUX05PX0VYQ0VQVElPTlMKKysgICAgdHJ5IHsKKysjZW5kaWYKKysgICAgICAgIHdo aWxlICh0aHJlYWRGdW5jdGlvbigpID09IFRocm90dGxlVGhyZWFkKSB7CisrICAgICAgICAgICAg aWYgKHRocmVhZFRocm90dGxlRXhpdCgpKSB7CisrICAgICAgICAgICAgICAgIHRocm90dGxlZCA9 IHRydWU7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAg IH0KKysjaWZuZGVmIFFUX05PX0VYQ0VQVElPTlMKKysgICAgfSBjYXRjaCAoUUV4Y2VwdGlvbiAm ZSkgeworKyAgICAgICAgaGFuZGxlRXhjZXB0aW9uKGUpOworKyAgICB9IGNhdGNoICguLi4pIHsK KysgICAgICAgIGhhbmRsZUV4Y2VwdGlvbihRVW5oYW5kbGVkRXhjZXB0aW9uKCkpOworKyAgICB9 CisrI2VuZGlmCisrCisrICAgIGlmICh0aHJvdHRsZWQgPT0gZmFsc2UpIHsKKysgICAgICAgIGJh cnJpZXIucmVsZWFzZSgpOworKyAgICB9CisrCisrICAgIGJhcnJpZXIud2FpdCgpOworKyAgICBm aW5pc2goKTsKKysgICAgZXhjZXB0aW9uU3RvcmUudGhyb3dQb3NzaWJsZUV4Y2VwdGlvbigpOwor K30KKysKKyB2b2lkIFRocmVhZEVuZ2luZUJhc2U6OnN0YXJ0VGhyZWFkKCkKKyB7CisgICAgIHN0 YXJ0VGhyZWFkSW50ZXJuYWwoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQv cXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmggYi9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25j dXJyZW50dGhyZWFkZW5naW5lLmgKK2luZGV4IDdjMzBjZWJkYmMuLmE0Yzg1NDhjYzQgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lLmgK KysrKyBiL3F0YmFzZS9zcmMvY29uY3VycmVudC9xdGNvbmN1cnJlbnR0aHJlYWRlbmdpbmUuaAor QEAgLTkxLDYgKzkxLDcgQEAgcHVibGljOgorICAgICBUaHJlYWRFbmdpbmVCYXNlKCk7CisgICAg IHZpcnR1YWwgflRocmVhZEVuZ2luZUJhc2UoKTsKKyAgICAgdm9pZCBzdGFydFNpbmdsZVRocmVh ZGVkKCk7CisrICAgIHZvaWQgc3RhcnRCbG9ja2luZygpOworICAgICB2b2lkIHN0YXJ0VGhyZWFk KCk7CisgICAgIGJvb2wgaXNDYW5jZWxlZCgpOworICAgICB2b2lkIHdhaXRGb3JSZXN1bWUoKTsK K0BAIC0xNDMsNiArMTQ0LDE1IEBAIHB1YmxpYzoKKyAgICAgICAgIHJldHVybiByZXN1bHQoKTsK KyAgICAgfQorIAorKyAgICAvLyBSdW5zIHRoZSB1c2VyIGFsZ29yaXRobSB1c2luZyBtdWx0aXBs ZSB0aHJlYWRzLgorKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGJsb2NrcyB1bnRpbCB0aGUgYWxnb3Jp dGhtIGlzIGZpbmlzaGVkLAorKyAgICAvLyBhbmQgdGhlbiByZXR1cm5zIHRoZSByZXN1bHQuCisr ICAgIFQgKnN0YXJ0QmxvY2tpbmcoKQorKyAgICB7CisrICAgICAgICBUaHJlYWRFbmdpbmVCYXNl OjpzdGFydEJsb2NraW5nKCk7CisrICAgICAgICByZXR1cm4gcmVzdWx0KCk7CisrICAgIH0KKysK KyAgICAgLy8gUnVucyB0aGUgdXNlciBhbGdvcml0aG0gdXNpbmcgbXVsdGlwbGUgdGhyZWFkcy4K KyAgICAgLy8gRG9lcyBub3QgYmxvY2ssIHJldHVybnMgYSBmdXR1cmUuCisgICAgIFFGdXR1cmU8 VD4gc3RhcnRBc3luY2hyb25vdXNseSgpCitAQCAtMjIzLDYgKzIzMywxMyBAQCBjbGFzcyBUaHJl YWRFbmdpbmVTdGFydGVyIDogcHVibGljIFRocmVhZEVuZ2luZVN0YXJ0ZXJCYXNlPFQ+CisgcHVi bGljOgorICAgICBUaHJlYWRFbmdpbmVTdGFydGVyKFR5cGVkVGhyZWFkRW5naW5lICplbmcpCisg ICAgICAgICA6IEJhc2UoZW5nKSB7IH0KKysKKysgICAgVCBzdGFydEJsb2NraW5nKCkKKysgICAg eworKyAgICAgICAgVCB0ID0gKnRoaXMtPnRocmVhZEVuZ2luZS0+c3RhcnRCbG9ja2luZygpOwor KyAgICAgICAgZGVsZXRlIHRoaXMtPnRocmVhZEVuZ2luZTsKKysgICAgICAgIHJldHVybiB0Owor KyAgICB9CisgfTsKKyAKKyAvLyBGdWxsIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uIHdoZXJlIFQg aXMgdm9pZC4KK0BAIC0yMzIsNiArMjQ5LDEyIEBAIGNsYXNzIFRocmVhZEVuZ2luZVN0YXJ0ZXI8 dm9pZD4gOiBwdWJsaWMgVGhyZWFkRW5naW5lU3RhcnRlckJhc2U8dm9pZD4KKyBwdWJsaWM6Cisg ICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXIoVGhyZWFkRW5naW5lPHZvaWQ+ICpfdGhyZWFkRW5naW5l KQorICAgICAgICAgOiBUaHJlYWRFbmdpbmVTdGFydGVyQmFzZTx2b2lkPihfdGhyZWFkRW5naW5l KSB7fQorKworKyAgICB2b2lkIHN0YXJ0QmxvY2tpbmcoKQorKyAgICB7CisrICAgICAgICB0aGlz LT50aHJlYWRFbmdpbmUtPnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIGRlbGV0ZSB0aGlzLT50 aHJlYWRFbmdpbmU7CisrICAgIH0KKyB9OworIAorIC8vISBbcXRjb25jdXJyZW50dGhyZWFkZW5n aW5lLTFdCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL2FuaW1hdGlvbi9xdmFyaWFu dGFuaW1hdGlvbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0aW9uL3F2YXJpYW50YW5p bWF0aW9uLmNwcAoraW5kZXggOThiMDJmMDIwMi4uZWFjMTUyNDEwNyAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvY29yZWxpYi9hbmltYXRpb24vcXZhcmlhbnRhbmltYXRpb24uY3BwCisrKysgYi9x dGJhc2Uvc3JjL2NvcmVsaWIvYW5pbWF0aW9uL3F2YXJpYW50YW5pbWF0aW9uLmNwcAorQEAgLTI3 Niw3ICsyNzYsOSBAQCB2b2lkIFFWYXJpYW50QW5pbWF0aW9uUHJpdmF0ZTo6c2V0Q3VycmVudFZh bHVlRm9yUHJvZ3Jlc3MoY29uc3QgcXJlYWwgcHJvZ3Jlc3MpCisgCisgICAgIGNvbnN0IHFyZWFs IHN0YXJ0UHJvZ3Jlc3MgPSBjdXJyZW50SW50ZXJ2YWwuc3RhcnQuZmlyc3Q7CisgICAgIGNvbnN0 IHFyZWFsIGVuZFByb2dyZXNzID0gY3VycmVudEludGVydmFsLmVuZC5maXJzdDsKKy0gICAgY29u c3QgcXJlYWwgbG9jYWxQcm9ncmVzcyA9IChwcm9ncmVzcyAtIHN0YXJ0UHJvZ3Jlc3MpIC8gKGVu ZFByb2dyZXNzIC0gc3RhcnRQcm9ncmVzcyk7CisrICAgIGNvbnN0IHFyZWFsIGxvY2FsUHJvZ3Jl c3MgPQorKyAgICAgICAgICAgIHFJc051bGwocHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNzKSA/IDAu MCAvLyBhdm9pZCAwLzAgYmVsb3cKKysgICAgICAgICAgICAvKiBlbHNlICovICAgICAgICAgICAg ICAgICAgICAgICAgOiAocHJvZ3Jlc3MgLSBzdGFydFByb2dyZXNzKSAvIChlbmRQcm9ncmVzcyAt IHN0YXJ0UHJvZ3Jlc3MpOworIAorICAgICBRVmFyaWFudCByZXQgPSBxLT5pbnRlcnBvbGF0ZWQo Y3VycmVudEludGVydmFsLnN0YXJ0LnNlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN1cnJlbnRJbnRlcnZhbC5lbmQuc2Vjb25kLAorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvY29yZWxpYi9nbG9iYWwvcW5hbWVzcGFjZS5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL2ds b2JhbC9xbmFtZXNwYWNlLmgKK2luZGV4IGFkNDE1MGIzMTcuLmJmMTliMTYyN2IgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FuYW1lc3BhY2UuaAorKysrIGIvcXRiYXNl L3NyYy9jb3JlbGliL2dsb2JhbC9xbmFtZXNwYWNlLmgKK0BAIC0xODY0LDcgKzE4NjQsNyBAQCBw dWJsaWM6CisgICAgIFFUX1FfRU5VTShUaW1lclR5cGUpCisgICAgIFFUX1FfRU5VTShTY3JvbGxQ aGFzZSkKKyAgICAgUVRfUV9FTlVNKE1vdXNlRXZlbnRTb3VyY2UpCistICAgIFFUX1FfRkxBRyhN b3VzZUV2ZW50RmxhZykKKysgICAgUVRfUV9GTEFHKE1vdXNlRXZlbnRGbGFncykKKyAgICAgUVRf UV9FTlVNKENoZWNrc3VtVHlwZSkKKyAgICAgUVRfUV9FTlVNKEhpZ2hEcGlTY2FsZUZhY3RvclJv dW5kaW5nUG9saWN5KQorICAgICBRVF9RX0VOVU0oVGFiRm9jdXNCZWhhdmlvcikKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvZ2xvYmFsL3FyYW5kb20uY3BwIGIvcXRiYXNlL3NyYy9j b3JlbGliL2dsb2JhbC9xcmFuZG9tLmNwcAoraW5kZXggMTA2NzJjMWY5Mi4uMjVmODdjN2U2YSAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAKKysrKyBi L3F0YmFzZS9zcmMvY29yZWxpYi9nbG9iYWwvcXJhbmRvbS5jcHAKK0BAIC0zODMsNyArMzgzLDYg QEAgc3RydWN0IFFSYW5kb21HZW5lcmF0b3I6OlN5c3RlbUFuZEdsb2JhbEdlbmVyYXRvcnMKKyAK KyAgICAgICAgIGNvbnN0ZXhwciBTeXN0ZW1BbmRHbG9iYWxHZW5lcmF0b3JzIGcgPSB7fTsKKyAg ICAgICAgIFFfVU5VU0VEKGcpOworLSAgICAgICAgUV9TVEFUSUNfQVNTRVJUKHN0ZDo6aXNfbGl0 ZXJhbF90eXBlPFN5c3RlbUFuZEdsb2JhbEdlbmVyYXRvcnM+Ojp2YWx1ZSk7CisgI2VuZGlmCisg ICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWJ1ZmZlci5jcHAg Yi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWJ1ZmZlci5jcHAKK2luZGV4IDU5NWZjZDI3MjQuLjAz MmMwZGRkNGIgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWJ1ZmZlci5jcHAK KysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xYnVmZmVyLmNwcAorQEAgLTQxLDYgKzQxLDgg QEAKKyAjaW5jbHVkZSA8UXRDb3JlL3FtZXRhb2JqZWN0Lmg+CisgI2luY2x1ZGUgInByaXZhdGUv cWlvZGV2aWNlX3AuaCIKKyAKKysjaW5jbHVkZSA8bGltaXRzPgorKworIFFUX0JFR0lOX05BTUVT UEFDRQorIAorIC8qKiBRQnVmZmVyUHJpdmF0ZSAqKi8KK0BAIC0zNjYsNyArMzY4LDkgQEAgcWlu dDY0IFFCdWZmZXI6OnNpemUoKSBjb25zdAorIGJvb2wgUUJ1ZmZlcjo6c2VlayhxaW50NjQgcG9z KQorIHsKKyAgICAgUV9EKFFCdWZmZXIpOworLSAgICBpZiAocG9zID4gZC0+YnVmLT5zaXplKCkg JiYgaXNXcml0YWJsZSgpKSB7CisrICAgIGNvbnN0IGF1dG8gb2xkQnVmU2l6ZSA9IGQtPmJ1Zi0+ c2l6ZSgpOworKyAgICBjb25zdGV4cHIgcWludDY0IE1heFNlZWtQb3MgPSAoc3RkOjpudW1lcmlj X2xpbWl0czxkZWNsdHlwZShvbGRCdWZTaXplKT46Om1heCkoKTsKKysgICAgaWYgKHBvcyA8PSBN YXhTZWVrUG9zICYmIHBvcyA+IG9sZEJ1ZlNpemUgJiYgaXNXcml0YWJsZSgpKSB7CisgICAgICAg ICBpZiAoc2VlayhkLT5idWYtPnNpemUoKSkpIHsKKyAgICAgICAgICAgICBjb25zdCBxaW50NjQg Z2FwU2l6ZSA9IHBvcyAtIGQtPmJ1Zi0+c2l6ZSgpOworICAgICAgICAgICAgIGlmICh3cml0ZShR Qnl0ZUFycmF5KGdhcFNpemUsIDApKSAhPSBnYXBTaXplKSB7CitAQCAtMzc3LDcgKzM4MSw3IEBA IGJvb2wgUUJ1ZmZlcjo6c2VlayhxaW50NjQgcG9zKQorICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKKyAgICAgICAgIH0KKyAgICAgfSBlbHNlIGlmIChwb3MgPiBkLT5idWYtPnNpemUoKSB8fCBw b3MgPCAwKSB7CistICAgICAgICBxV2FybmluZygiUUJ1ZmZlcjo6c2VlazogSW52YWxpZCBwb3M6 ICVkIiwgaW50KHBvcykpOworKyAgICAgICAgcVdhcm5pbmcoIlFCdWZmZXI6OnNlZWs6IEludmFs aWQgcG9zOiAlbGxkIiwgcG9zKTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorICAg ICByZXR1cm4gUUlPRGV2aWNlOjpzZWVrKHBvcyk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9j b3JlbGliL2lvL3FmaWxlc3lzdGVtZW5naW5lX3dpbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv aW8vcWZpbGVzeXN0ZW1lbmdpbmVfd2luLmNwcAoraW5kZXggODFkM2E3MTk4Ni4uYzg2ZWQxZjli MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbWVuZ2luZV93 aW4uY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW1lbmdpbmVfd2lu LmNwcAorQEAgLTY2NCwxNCArNjY0LDE0IEBAIFFGaWxlU3lzdGVtRW50cnkgUUZpbGVTeXN0ZW1F bmdpbmU6OmFic29sdXRlTmFtZShjb25zdCBRRmlsZVN5c3RlbUVudHJ5ICZlbnRyeSkKKyAgICAg cmV0dXJuIFFGaWxlU3lzdGVtRW50cnkocmV0LCBRRmlsZVN5c3RlbUVudHJ5OjpGcm9tSW50ZXJu YWxQYXRoKCkpOworIH0KKyAKKy0jaWYgZGVmaW5lZChRX0NDX01JTkdXKSAmJiBXSU5WRVIgPCAw eDA2MDIgLy8gIFdpbmRvd3MgOCBvbndhcmRzCisrI2lmIGRlZmluZWQoUV9DQ19NSU5HVykgJiYg V0lOVkVSIDwgMHgwNjAyICYmIF9XSU4zMl9XSU5OVCA8IF9XSU4zMl9XSU5OVF9XSU44IC8vICBX aW5kb3dzIDggb253YXJkcworIAorIHR5cGVkZWYgc3RydWN0IF9GSUxFX0lEX0lORk8geworICAg ICBVTE9OR0xPTkcgVm9sdW1lU2VyaWFsTnVtYmVyOworICAgICBGSUxFX0lEXzEyOCBGaWxlSWQ7 CisgfSBGSUxFX0lEX0lORk8sICpQRklMRV9JRF9JTkZPOworIAorLSNlbmRpZiAvLyBpZiBkZWZp bmVkIChRX0NDX01JTkdXKSAmJiBXSU5WRVIgPCAweDA2MDIKKysjZW5kaWYgLy8gaWYgZGVmaW5l ZChRX0NDX01JTkdXKSAmJiBXSU5WRVIgPCAweDA2MDIgJiYgX1dJTjMyX1dJTk5UIDwgX1dJTjMy X1dJTk5UX1dJTjgKKyAKKyAvLyBGaWxlIElEIGZvciBXaW5kb3dzIHVwIHRvIHZlcnNpb24gNyBh bmQgRkFUMzIgZHJpdmVzCisgc3RhdGljIGlubGluZSBRQnl0ZUFycmF5IGZpbGVJZChIQU5ETEUg aGFuZGxlKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xZmlsZXN5c3RlbXdh dGNoZXJfaW5vdGlmeS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWZpbGVzeXN0ZW13YXRj aGVyX2lub3RpZnkuY3BwCitpbmRleCA5NGQ5ZDA2YmNiLi4yN2UwYjEzYjBiIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90aWZ5LmNwcAor KysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2lvL3FmaWxlc3lzdGVtd2F0Y2hlcl9pbm90aWZ5LmNw cAorQEAgLTM2Niw3ICszNjYsOSBAQCB2b2lkIFFJbm90aWZ5RmlsZVN5c3RlbVdhdGNoZXJFbmdp bmU6OnJlYWRGcm9tSW5vdGlmeSgpCisgICAgIC8vIHFEZWJ1ZygiUUlub3RpZnlGaWxlU3lzdGVt V2F0Y2hlckVuZ2luZTo6cmVhZEZyb21Jbm90aWZ5Iik7CisgCisgICAgIGludCBidWZmU2l6ZSA9 IDA7CistICAgIGlvY3RsKGlub3RpZnlGZCwgRklPTlJFQUQsIChjaGFyICopICZidWZmU2l6ZSk7 CisrICAgIGlmIChpb2N0bChpbm90aWZ5RmQsIEZJT05SRUFELCAoY2hhciAqKSAmYnVmZlNpemUp ID09IC0xIHx8IGJ1ZmZTaXplID09IDApCisrICAgICAgICByZXR1cm47CisrCisgICAgIFFWYXJM ZW5ndGhBcnJheTxjaGFyLCA0MDk2PiBidWZmZXIoYnVmZlNpemUpOworICAgICBidWZmU2l6ZSA9 IHJlYWQoaW5vdGlmeUZkLCBidWZmZXIuZGF0YSgpLCBidWZmU2l6ZSk7CisgICAgIGNoYXIgKmF0 ID0gYnVmZmVyLmRhdGEoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWxv Y2tmaWxlX3dpbi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaW8vcWxvY2tmaWxlX3dpbi5jcHAK K2luZGV4IDI3N2Y4ZDQyMzAuLjM4ZWNlZjU1NTAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2Nv cmVsaWIvaW8vcWxvY2tmaWxlX3dpbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9x bG9ja2ZpbGVfd2luLmNwcAorQEAgLTQ4LDYgKzQ4LDggQEAKKyAjaW5jbHVkZSAiUXRDb3JlL3Fk ZWJ1Zy5oIgorICNpbmNsdWRlICJRdENvcmUvcXRocmVhZC5oIgorIAorKyNpbmNsdWRlICJwcml2 YXRlL3FzeXN0ZW1saWJyYXJ5X3AuaCIKKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBzdGF0 aWMgaW5saW5lIGJvb2wgZmlsZUV4aXN0cyhjb25zdCB3Y2hhcl90ICpmaWxlTmFtZSkKK0BAIC0x NTAsNyArMTUyLDcgQEAgUVN0cmluZyBRTG9ja0ZpbGVQcml2YXRlOjpwcm9jZXNzTmFtZUJ5UGlk KHFpbnQ2NCBwaWQpCisgI2lmICFkZWZpbmVkKFFfT1NfV0lOUlQpCisgICAgIHR5cGVkZWYgRFdP UkQgKFdJTkFQSSAqR2V0TW9kdWxlRmlsZU5hbWVFeEZ1bmMpKEhBTkRMRSwgSE1PRFVMRSwgTFBU U1RSLCBEV09SRCk7CisgCistICAgIEhNT0RVTEUgaFBzYXBpID0gTG9hZExpYnJhcnlBKCJwc2Fw aSIpOworKyAgICBITU9EVUxFIGhQc2FwaSA9IFFTeXN0ZW1MaWJyYXJ5Ojpsb2FkKEwicHNhcGki KTsKKyAgICAgaWYgKCFoUHNhcGkpCisgICAgICAgICByZXR1cm4gUVN0cmluZygpOworICAgICBH ZXRNb2R1bGVGaWxlTmFtZUV4RnVuYyBxR2V0TW9kdWxlRmlsZU5hbWVFeCA9IHJlaW50ZXJwcmV0 X2Nhc3Q8R2V0TW9kdWxlRmlsZU5hbWVFeEZ1bmM+KAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Y29yZWxpYi9pby9xcHJvY2Vzc191bml4LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi9pby9xcHJv Y2Vzc191bml4LmNwcAoraW5kZXggNTAzOTBlNTdmNS4uMTVjOGYzMDc0NSAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvY29yZWxpYi9pby9xcHJvY2Vzc191bml4LmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9jb3JlbGliL2lvL3Fwcm9jZXNzX3VuaXguY3BwCitAQCAtMSw3ICsxLDcgQEAKKyAvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorICoqCisgKiogQ29weXJpZ2h0IChDKSAyMDE2IFRoZSBRdCBDb21wYW55 IEx0ZC4KKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24uCisrKiogQ29w eXJpZ2h0IChDKSAyMDIyIEludGVsIENvcnBvcmF0aW9uLgorICoqIENvbnRhY3Q6IGh0dHBzOi8v d3d3LnF0LmlvL2xpY2Vuc2luZy8KKyAqKgorICoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBR dENvcmUgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTQyMiwxNCArNDIyLDE1IEBAIHZv aWQgUVByb2Nlc3NQcml2YXRlOjpzdGFydFByb2Nlc3MoKQorICAgICAvLyBBZGQgdGhlIHByb2dy YW0gbmFtZSB0byB0aGUgYXJndW1lbnQgbGlzdC4KKyAgICAgYXJndlswXSA9IG51bGxwdHI7Cisg ICAgIGlmICghcHJvZ3JhbS5jb250YWlucyhRTGF0aW4xQ2hhcignLycpKSkgeworKyAgICAgICAg Ly8gZmluZEV4ZWN1dGFibGUoKSByZXR1cm5zIGl0cyBhcmd1bWVudCBpZiBpdCdzIGFuIGFic29s dXRlIHBhdGgsCisrICAgICAgICAvLyBvdGhlcndpc2UgaXQgc2VhcmNoZXMgJFBBVEg7IHJldHVy bnMgZW1wdHkgaWYgbm90IGZvdW5kICh3ZSBoYW5kbGUKKysgICAgICAgIC8vIHRoYXQgY2FzZSBt dWNoIGxhdGVyKQorICAgICAgICAgY29uc3QgUVN0cmluZyAmZXhlRmlsZVBhdGggPSBRU3RhbmRh cmRQYXRoczo6ZmluZEV4ZWN1dGFibGUocHJvZ3JhbSk7CistICAgICAgICBpZiAoIWV4ZUZpbGVQ YXRoLmlzRW1wdHkoKSkgeworLSAgICAgICAgICAgIGNvbnN0IFFCeXRlQXJyYXkgJnRtcCA9IFFG aWxlOjplbmNvZGVOYW1lKGV4ZUZpbGVQYXRoKTsKKy0gICAgICAgICAgICBhcmd2WzBdID0gOjpz dHJkdXAodG1wLmNvbnN0RGF0YSgpKTsKKy0gICAgICAgIH0KKy0gICAgfQorLSAgICBpZiAoIWFy Z3ZbMF0pCisrICAgICAgICBjb25zdCBRQnl0ZUFycmF5ICZ0bXAgPSBRRmlsZTo6ZW5jb2RlTmFt ZShleGVGaWxlUGF0aCk7CisrICAgICAgICBhcmd2WzBdID0gOjpzdHJkdXAodG1wLmNvbnN0RGF0 YSgpKTsKKysgICAgfSBlbHNlIHsKKyAgICAgICAgIGFyZ3ZbMF0gPSA6OnN0cmR1cChlbmNvZGVk UHJvZ3JhbU5hbWUuY29uc3REYXRhKCkpOworKyAgICB9CisgCisgICAgIC8vIEFkZCBldmVyeSBh cmd1bWVudCB0byB0aGUgbGlzdAorICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50cy5j b3VudCgpOyArK2kpCitAQCAtOTgzLDE1ICs5ODQsMTYgQEAgYm9vbCBRUHJvY2Vzc1ByaXZhdGU6 OnN0YXJ0RGV0YWNoZWQocWludDY0ICpwaWQpCisgICAgICAgICAgICAgICAgIGVudnAgPSBfcV9k dXBFbnZpcm9ubWVudChlbnZpcm9ubWVudC5kLmNvbnN0RGF0YSgpLT52YXJzLCAmZW52Yyk7Cisg ICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgIFFCeXRlQXJyYXkgdG1wOworICAgICAgICAg ICAgIGlmICghcHJvZ3JhbS5jb250YWlucyhRTGF0aW4xQ2hhcignLycpKSkgeworKyAgICAgICAg ICAgICAgICAvLyBmaW5kRXhlY3V0YWJsZSgpIHJldHVybnMgaXRzIGFyZ3VtZW50IGlmIGl0J3Mg YW4gYWJzb2x1dGUgcGF0aCwKKysgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGl0IHNlYXJj aGVzICRQQVRIOyByZXR1cm5zIGVtcHR5IGlmIG5vdCBmb3VuZCAod2UgaGFuZGxlCisrICAgICAg ICAgICAgICAgIC8vIHRoYXQgY2FzZSBtdWNoIGxhdGVyKQorICAgICAgICAgICAgICAgICBjb25z dCBRU3RyaW5nICZleGVGaWxlUGF0aCA9IFFTdGFuZGFyZFBhdGhzOjpmaW5kRXhlY3V0YWJsZShw cm9ncmFtKTsKKy0gICAgICAgICAgICAgICAgaWYgKCFleGVGaWxlUGF0aC5pc0VtcHR5KCkpCist ICAgICAgICAgICAgICAgICAgICB0bXAgPSBRRmlsZTo6ZW5jb2RlTmFtZShleGVGaWxlUGF0aCk7 CisrICAgICAgICAgICAgICAgIGNvbnN0IFFCeXRlQXJyYXkgJnRtcCA9IFFGaWxlOjplbmNvZGVO YW1lKGV4ZUZpbGVQYXRoKTsKKysgICAgICAgICAgICAgICAgYXJndlswXSA9IDo6c3RyZHVwKHRt cC5jb25zdERhdGEoKSk7CisrICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAg YXJndlswXSA9IDo6c3RyZHVwKFFGaWxlOjplbmNvZGVOYW1lKHByb2dyYW0pKTsKKyAgICAgICAg ICAgICB9CistICAgICAgICAgICAgaWYgKHRtcC5pc0VtcHR5KCkpCistICAgICAgICAgICAgICAg IHRtcCA9IFFGaWxlOjplbmNvZGVOYW1lKHByb2dyYW0pOworLSAgICAgICAgICAgIGFyZ3ZbMF0g PSB0bXAuZGF0YSgpOworIAorICAgICAgICAgICAgIGlmIChlbnZwKQorICAgICAgICAgICAgICAg ICBxdF9zYWZlX2V4ZWN2ZShhcmd2WzBdLCBhcmd2LCBlbnZwKTsKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2NvcmVsaWIvaXRlbW1vZGVscy9xYWJzdHJhY3RpdGVtbW9kZWwuY3BwIGIvcXRiYXNl L3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcWFic3RyYWN0aXRlbW1vZGVsLmNwcAoraW5kZXggM2E3 OWM1MDJhZi4uOTk3YTYzNGU3NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVt bW9kZWxzL3FhYnN0cmFjdGl0ZW1tb2RlbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9p dGVtbW9kZWxzL3FhYnN0cmFjdGl0ZW1tb2RlbC5jcHAKK0BAIC0zMTk2LDkgKzMxOTYsOCBAQCBi b29sIFFBYnN0cmFjdEl0ZW1Nb2RlbDo6YmVnaW5Nb3ZlQ29sdW1ucyhjb25zdCBRTW9kZWxJbmRl eCAmc291cmNlUGFyZW50LCBpbnQgcworICAgICBkZXN0aW5hdGlvbkNoYW5nZS5uZWVkc0FkanVz dCA9IGRlc3RpbmF0aW9uUGFyZW50LmlzVmFsaWQoKSAmJiBkZXN0aW5hdGlvblBhcmVudC5yb3co KSA+PSBzb3VyY2VMYXN0ICYmIGRlc3RpbmF0aW9uUGFyZW50LnBhcmVudCgpID09IHNvdXJjZVBh cmVudDsKKyAgICAgZC0+Y2hhbmdlcy5wdXNoKGRlc3RpbmF0aW9uQ2hhbmdlKTsKKyAKKy0gICAg ZC0+aXRlbXNBYm91dFRvQmVNb3ZlZChzb3VyY2VQYXJlbnQsIHNvdXJjZUZpcnN0LCBzb3VyY2VM YXN0LCBkZXN0aW5hdGlvblBhcmVudCwgZGVzdGluYXRpb25DaGlsZCwgUXQ6Okhvcml6b250YWwp OworLQorICAgICBlbWl0IGNvbHVtbnNBYm91dFRvQmVNb3ZlZChzb3VyY2VQYXJlbnQsIHNvdXJj ZUZpcnN0LCBzb3VyY2VMYXN0LCBkZXN0aW5hdGlvblBhcmVudCwgZGVzdGluYXRpb25DaGlsZCwg UVByaXZhdGVTaWduYWwoKSk7CisrICAgIGQtPml0ZW1zQWJvdXRUb0JlTW92ZWQoc291cmNlUGFy ZW50LCBzb3VyY2VGaXJzdCwgc291cmNlTGFzdCwgZGVzdGluYXRpb25QYXJlbnQsIGRlc3RpbmF0 aW9uQ2hpbGQsIFF0OjpIb3Jpem9udGFsKTsKKyAgICAgcmV0dXJuIHRydWU7CisgfQorIAorQEAg LTMyMzEsNyArMzIzMCw2IEBAIHZvaWQgUUFic3RyYWN0SXRlbU1vZGVsOjplbmRNb3ZlQ29sdW1u cygpCisgICAgICAgYWRqdXN0ZWRTb3VyY2UgPSBjcmVhdGVJbmRleChhZGp1c3RlZFNvdXJjZS5y b3coKSwgYWRqdXN0ZWRTb3VyY2UuY29sdW1uKCkgKyBudW1Nb3ZlZCwgYWRqdXN0ZWRTb3VyY2Uu aW50ZXJuYWxQb2ludGVyKCkpOworIAorICAgICBkLT5pdGVtc01vdmVkKGFkanVzdGVkU291cmNl LCByZW1vdmVDaGFuZ2UuZmlyc3QsIHJlbW92ZUNoYW5nZS5sYXN0LCBhZGp1c3RlZERlc3RpbmF0 aW9uLCBpbnNlcnRDaGFuZ2UuZmlyc3QsIFF0OjpIb3Jpem9udGFsKTsKKy0KKyAgICAgZW1pdCBj b2x1bW5zTW92ZWQoYWRqdXN0ZWRTb3VyY2UsIHJlbW92ZUNoYW5nZS5maXJzdCwgcmVtb3ZlQ2hh bmdlLmxhc3QsIGFkanVzdGVkRGVzdGluYXRpb24sIGluc2VydENoYW5nZS5maXJzdCwgUVByaXZh dGVTaWduYWwoKSk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9pdGVt bW9kZWxzL3Fzb3J0ZmlsdGVycHJveHltb2RlbC5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvaXRl bW1vZGVscy9xc29ydGZpbHRlcnByb3h5bW9kZWwuY3BwCitpbmRleCBkYzYzNzlkOWZiLi5jNWUy ODdlZTg0IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMvcXNvcnRm aWx0ZXJwcm94eW1vZGVsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2l0ZW1tb2RlbHMv cXNvcnRmaWx0ZXJwcm94eW1vZGVsLmNwcAorQEAgLTkzOSw4ICs5MzksOSBAQCB2b2lkIFFTb3J0 RmlsdGVyUHJveHlNb2RlbFByaXZhdGU6Omluc2VydF9zb3VyY2VfaXRlbXMoCisgICAgICAgICAg ICAgICAgIHEtPmJlZ2luSW5zZXJ0Q29sdW1ucyhwcm94eV9wYXJlbnQsIHByb3h5X3N0YXJ0LCBw cm94eV9lbmQpOworICAgICAgICAgfQorIAorLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBz b3VyY2VfaXRlbXMuc2l6ZSgpOyArK2kpCistICAgICAgICAgICAgcHJveHlfdG9fc291cmNlLmlu c2VydChwcm94eV9zdGFydCArIGksIHNvdXJjZV9pdGVtcy5hdChpKSk7CisrICAgICAgICAvLyBU T0RPOiB1c2UgdGhlIHJhbmdlIFFMaXN0OjppbnNlcnQoKSBvdmVybG9hZCBvbmNlIGl0IGlzIGlt cGxlbWVudGVkIChRVEJVRy01ODYzMykuCisrICAgICAgICBwcm94eV90b19zb3VyY2UuaW5zZXJ0 KHByb3h5X3N0YXJ0LCBzb3VyY2VfaXRlbXMuc2l6ZSgpLCAwKTsKKysgICAgICAgIHN0ZDo6Y29w eShzb3VyY2VfaXRlbXMuY2JlZ2luKCksIHNvdXJjZV9pdGVtcy5jZW5kKCksIHByb3h5X3RvX3Nv dXJjZS5iZWdpbigpICsgcHJveHlfc3RhcnQpOworIAorICAgICAgICAgYnVpbGRfc291cmNlX3Rv X3Byb3h5X21hcHBpbmcocHJveHlfdG9fc291cmNlLCBzb3VyY2VfdG9fcHJveHkpOworIAorQEAg LTMxMjMsOCArMzEyNCw5IEBAIGJvb2wgUVNvcnRGaWx0ZXJQcm94eU1vZGVsOjpmaWx0ZXJBY2Nl cHRzUm93KGludCBzb3VyY2Vfcm93LCBjb25zdCBRTW9kZWxJbmRleCAmCisgCisgICAgIGlmIChk LT5maWx0ZXJfZGF0YS5pc0VtcHR5KCkpCisgICAgICAgICByZXR1cm4gdHJ1ZTsKKysKKysgICAg aW50IGNvbHVtbl9jb3VudCA9IGQtPm1vZGVsLT5jb2x1bW5Db3VudChzb3VyY2VfcGFyZW50KTsK KyAgICAgaWYgKGQtPmZpbHRlcl9jb2x1bW4gPT0gLTEpIHsKKy0gICAgICAgIGludCBjb2x1bW5f Y291bnQgPSBkLT5tb2RlbC0+Y29sdW1uQ291bnQoc291cmNlX3BhcmVudCk7CisgICAgICAgICBm b3IgKGludCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBjb2x1bW5fY291bnQ7ICsrY29sdW1uKSB7Cisg ICAgICAgICAgICAgUU1vZGVsSW5kZXggc291cmNlX2luZGV4ID0gZC0+bW9kZWwtPmluZGV4KHNv dXJjZV9yb3csIGNvbHVtbiwgc291cmNlX3BhcmVudCk7CisgICAgICAgICAgICAgUVN0cmluZyBr ZXkgPSBkLT5tb2RlbC0+ZGF0YShzb3VyY2VfaW5kZXgsIGQtPmZpbHRlcl9yb2xlKS50b1N0cmlu ZygpOworQEAgLTMxMzMsOSArMzEzNSwxMCBAQCBib29sIFFTb3J0RmlsdGVyUHJveHlNb2RlbDo6 ZmlsdGVyQWNjZXB0c1JvdyhpbnQgc291cmNlX3JvdywgY29uc3QgUU1vZGVsSW5kZXggJgorICAg ICAgICAgfQorICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CistICAgIFFNb2RlbEluZGV4 IHNvdXJjZV9pbmRleCA9IGQtPm1vZGVsLT5pbmRleChzb3VyY2Vfcm93LCBkLT5maWx0ZXJfY29s dW1uLCBzb3VyY2VfcGFyZW50KTsKKy0gICAgaWYgKCFzb3VyY2VfaW5kZXguaXNWYWxpZCgpKSAv LyB0aGUgY29sdW1uIG1heSBub3QgZXhpc3QKKysKKysgICAgaWYgKGQtPmZpbHRlcl9jb2x1bW4g Pj0gY29sdW1uX2NvdW50KSAvLyB0aGUgY29sdW1uIG1heSBub3QgZXhpc3QKKyAgICAgICAgIHJl dHVybiB0cnVlOworKyAgICBRTW9kZWxJbmRleCBzb3VyY2VfaW5kZXggPSBkLT5tb2RlbC0+aW5k ZXgoc291cmNlX3JvdywgZC0+ZmlsdGVyX2NvbHVtbiwgc291cmNlX3BhcmVudCk7CisgICAgIFFT dHJpbmcga2V5ID0gZC0+bW9kZWwtPmRhdGEoc291cmNlX2luZGV4LCBkLT5maWx0ZXJfcm9sZSku dG9TdHJpbmcoKTsKKyAgICAgcmV0dXJuIGQtPmZpbHRlcl9kYXRhLmhhc01hdGNoKGtleSk7Cisg fQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcWNvcmVhcHBsaWNhdGlv bi5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fjb3JlYXBwbGljYXRpb24uY3BwCitp bmRleCBjYTI4NjRkZjgzLi4xMzJiMmVhZTUyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3Jl bGliL2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGli L2tlcm5lbC9xY29yZWFwcGxpY2F0aW9uLmNwcAorQEAgLTExNTcsNyArMTE1Nyw3IEBAIHN0YXRp YyBib29sIGRvTm90aWZ5KFFPYmplY3QgKnJlY2VpdmVyLCBRRXZlbnQgKmV2ZW50KQorIGJvb2wg UUNvcmVBcHBsaWNhdGlvblByaXZhdGU6OnNlbmRUaHJvdWdoQXBwbGljYXRpb25FdmVudEZpbHRl cnMoUU9iamVjdCAqcmVjZWl2ZXIsIFFFdmVudCAqZXZlbnQpCisgeworICAgICAvLyBXZSBjYW4n dCBhY2Nlc3MgdGhlIGFwcGxpY2F0aW9uIGV2ZW50IGZpbHRlcnMgb3V0c2lkZSBvZiB0aGUgbWFp biB0aHJlYWQgKHJhY2UgY29uZGl0aW9ucykKKy0gICAgUV9BU1NFUlQocmVjZWl2ZXItPmRfZnVu YygpLT50aHJlYWREYXRhLmxvYWRSZWxheGVkKCktPnRocmVhZC5sb2FkQWNxdWlyZSgpID09IG1h aW5UaHJlYWQoKSk7CisrICAgIFFfQVNTRVJUKHJlY2VpdmVyLT5kX2Z1bmMoKS0+dGhyZWFkRGF0 YS5sb2FkQWNxdWlyZSgpLT50aHJlYWQubG9hZFJlbGF4ZWQoKSA9PSBtYWluVGhyZWFkKCkpOwor IAorICAgICBpZiAoZXh0cmFEYXRhKSB7CisgICAgICAgICAvLyBhcHBsaWNhdGlvbiBldmVudCBm aWx0ZXJzIGFyZSBvbmx5IGNhbGxlZCBmb3Igb2JqZWN0cyBpbiB0aGUgR1VJIHRocmVhZAorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVjdC5jcHAgYi9xdGJhc2Uv c3JjL2NvcmVsaWIva2VybmVsL3FvYmplY3QuY3BwCitpbmRleCAxZWI3OTEzOGQ5Li4zNmNkNzgw ZWUxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0LmNwcAor KysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0LmNwcAorQEAgLTEwMTAsNyAr MTAxMCw3IEBAIFFPYmplY3Q6On5RT2JqZWN0KCkKKyAgICAgICAgIGVtaXQgZGVzdHJveWVkKHRo aXMpOworICAgICB9CisgCistICAgIGlmIChkLT5kZWNsYXJhdGl2ZURhdGEpIHsKKysgICAgaWYg KCFkLT5pc0RlbGV0aW5nQ2hpbGRyZW4gJiYgZC0+ZGVjbGFyYXRpdmVEYXRhKSB7CisgICAgICAg ICBpZiAoc3RhdGljX2Nhc3Q8UUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhSW1wbCo+KGQtPmRlY2xh cmF0aXZlRGF0YSktPm93bmVkQnlRbWwxKSB7CisgICAgICAgICAgICAgaWYgKFFBYnN0cmFjdERl Y2xhcmF0aXZlRGF0YTo6ZGVzdHJveWVkX3FtbDEpCisgICAgICAgICAgICAgICAgIFFBYnN0cmFj dERlY2xhcmF0aXZlRGF0YTo6ZGVzdHJveWVkX3FtbDEoZC0+ZGVjbGFyYXRpdmVEYXRhLCB0aGlz KTsKK0BAIC0xNTgwLDcgKzE1ODAsNyBAQCB2b2lkIFFPYmplY3Q6Om1vdmVUb1RocmVhZChRVGhy ZWFkICp0YXJnZXRUaHJlYWQpCisgCisgICAgIFFUaHJlYWREYXRhICpjdXJyZW50RGF0YSA9IFFU aHJlYWREYXRhOjpjdXJyZW50KCk7CisgICAgIFFUaHJlYWREYXRhICp0YXJnZXREYXRhID0gdGFy Z2V0VGhyZWFkID8gUVRocmVhZERhdGE6OmdldDIodGFyZ2V0VGhyZWFkKSA6IG51bGxwdHI7Cist ICAgIFFUaHJlYWREYXRhICp0aGlzVGhyZWFkRGF0YSA9IGQtPnRocmVhZERhdGEubG9hZFJlbGF4 ZWQoKTsKKysgICAgUVRocmVhZERhdGEgKnRoaXNUaHJlYWREYXRhID0gZC0+dGhyZWFkRGF0YS5s b2FkQWNxdWlyZSgpOworICAgICBpZiAoIXRoaXNUaHJlYWREYXRhLT50aHJlYWQubG9hZEFjcXVp cmUoKSAmJiBjdXJyZW50RGF0YSA9PSB0YXJnZXREYXRhKSB7CisgICAgICAgICAvLyBvbmUgZXhj ZXB0aW9uIHRvIHRoZSBydWxlOiB3ZSBhbGxvdyBtb3Zpbmcgb2JqZWN0cyB3aXRoIG5vIHRocmVh ZCBhZmZpbml0eSB0byB0aGUgY3VycmVudCB0aHJlYWQKKyAgICAgICAgIGN1cnJlbnREYXRhID0g ZC0+dGhyZWFkRGF0YTsKK0BAIC0yNjIwLDcgKzI2MjAsNyBAQCBpbnQgUU9iamVjdDo6cmVjZWl2 ZXJzKGNvbnN0IGNoYXIgKnNpZ25hbCkgY29uc3QKKyAgICAgICAgIGlmICghZC0+aXNTaWduYWxD b25uZWN0ZWQoc2lnbmFsX2luZGV4KSkKKyAgICAgICAgICAgICByZXR1cm4gcmVjZWl2ZXJzOwor IAorLSAgICAgICAgaWYgKGQtPmRlY2xhcmF0aXZlRGF0YSAmJiBRQWJzdHJhY3REZWNsYXJhdGl2 ZURhdGE6OnJlY2VpdmVycykgeworKyAgICAgICAgaWYgKCFkLT5pc0RlbGV0aW5nQ2hpbGRyZW4g JiYgZC0+ZGVjbGFyYXRpdmVEYXRhICYmIFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6cmVjZWl2 ZXJzKSB7CisgICAgICAgICAgICAgcmVjZWl2ZXJzICs9IFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0 YTo6cmVjZWl2ZXJzKGQtPmRlY2xhcmF0aXZlRGF0YSwgdGhpcywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsX2luZGV4 KTsKKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3Fv YmplY3RfcC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL2tlcm5lbC9xb2JqZWN0X3AuaAoraW5kZXgg MGI4MjdhNTJjYS4uMTNmZmI4ODk5OSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9r ZXJuZWwvcW9iamVjdF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcW9iamVj dF9wLmgKK0BAIC00NDQsNyArNDQ0LDcgQEAgaW5saW5lIHZvaWQgUU9iamVjdFByaXZhdGU6OmNo ZWNrRm9ySW5jb21wYXRpYmxlTGlicmFyeVZlcnNpb24oaW50IHZlcnNpb24pIGNvbnMKKyAKKyBp bmxpbmUgYm9vbCBRT2JqZWN0UHJpdmF0ZTo6aXNEZWNsYXJhdGl2ZVNpZ25hbENvbm5lY3RlZCh1 aW50IHNpZ25hbF9pbmRleCkgY29uc3QKKyB7CistICAgIHJldHVybiBkZWNsYXJhdGl2ZURhdGEg JiYgUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjppc1NpZ25hbENvbm5lY3RlZAorKyAgICByZXR1 cm4gIWlzRGVsZXRpbmdDaGlsZHJlbiAmJiBkZWNsYXJhdGl2ZURhdGEgJiYgUUFic3RyYWN0RGVj bGFyYXRpdmVEYXRhOjppc1NpZ25hbENvbm5lY3RlZAorICAgICAgICAgICAgICYmIFFBYnN0cmFj dERlY2xhcmF0aXZlRGF0YTo6aXNTaWduYWxDb25uZWN0ZWQoZGVjbGFyYXRpdmVEYXRhLCBxX2Z1 bmMoKSwgc2lnbmFsX2luZGV4KTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3Jl bGliL2tlcm5lbC9xdHJhbnNsYXRvci5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIva2VybmVsL3F0 cmFuc2xhdG9yLmNwcAoraW5kZXggMjgxMmZmYjdlYS4uYmMwMTc3YzVlYyAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvY29yZWxpYi9rZXJuZWwvcXRyYW5zbGF0b3IuY3BwCisrKysgYi9xdGJhc2Uv c3JjL2NvcmVsaWIva2VybmVsL3F0cmFuc2xhdG9yLmNwcAorQEAgLTkwMiw3ICs5MDIsNyBAQCBz dGF0aWMgUVN0cmluZyBnZXRNZXNzYWdlKGNvbnN0IHVjaGFyICptLCBjb25zdCB1Y2hhciAqZW5k LCBjb25zdCBjaGFyICpjb250ZXh0LAorICAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICAg Y2FzZSBUYWdfVHJhbnNsYXRpb246IHsKKyAgICAgICAgICAgICBpbnQgbGVuID0gcmVhZDMyKG0p OworLSAgICAgICAgICAgIGlmIChsZW4gJSAxKQorKyAgICAgICAgICAgIGlmIChsZW4gJiAxKQor ICAgICAgICAgICAgICAgICByZXR1cm4gUVN0cmluZygpOworICAgICAgICAgICAgIG0gKz0gNDsK KyAgICAgICAgICAgICBpZiAoIW51bWVydXMtLSkgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Y29yZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIv bWltZXR5cGVzL3FtaW1lZGF0YWJhc2UuY3BwCitpbmRleCA5ZGUyMmNlZjMzLi5mZjg2OGEzMjY4 IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNl LmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlLmNw cAorQEAgLTM4OSwyMCArMzg5LDIzIEBAIFFNaW1lVHlwZSBRTWltZURhdGFiYXNlUHJpdmF0ZTo6 bWltZVR5cGVGb3JGaWxlTmFtZUFuZERhdGEoY29uc3QgUVN0cmluZyAmZmlsZU5hCisgICAgICAg ICAvLyBEaXNhbWJpZ3VhdGUgY29uZmxpY3RpbmcgZXh0ZW5zaW9ucyAoaWYgbWFnaWMgbWF0Y2hp bmcgZm91bmQgc29tZXRoaW5nKQorICAgICAgICAgaWYgKGNhbmRpZGF0ZUJ5RGF0YS5pc1ZhbGlk KCkgJiYgbWFnaWNBY2N1cmFjeSA+IDApIHsKKyAgICAgICAgICAgICBjb25zdCBRU3RyaW5nIHNu aWZmZWRNaW1lID0gY2FuZGlkYXRlQnlEYXRhLm5hbWUoKTsKKy0gICAgICAgICAgICAvLyBJZiB0 aGUgc25pZmZlZE1pbWUgbWF0Y2hlcyBhIGdsb2IgbWF0Y2gsIHVzZSBpdAorKyAgICAgICAgICAg IC8vIElmIHRoZSBzbmlmZmVkTWltZSBtYXRjaGVzIGEgaGlnaGVzdC13ZWlnaHQgZ2xvYiBtYXRj aCwgdXNlIGl0CisgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZXNCeU5hbWUubV9tYXRjaGluZ01p bWVUeXBlcy5jb250YWlucyhzbmlmZmVkTWltZSkpIHsKKyAgICAgICAgICAgICAgICAgKmFjY3Vy YWN5UHRyID0gMTAwOworICAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlQnlEYXRhOwor ICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBmb3IgKGNvbnN0IFFTdHJpbmcgJm0gOiBxQXND b25zdChjYW5kaWRhdGVzQnlOYW1lLm1fbWF0Y2hpbmdNaW1lVHlwZXMpKSB7CisrICAgICAgICAg ICAgZm9yIChjb25zdCBRU3RyaW5nICZtIDogcUFzQ29uc3QoY2FuZGlkYXRlc0J5TmFtZS5tX2Fs bE1hdGNoaW5nTWltZVR5cGVzKSkgeworICAgICAgICAgICAgICAgICBpZiAoaW5oZXJpdHMobSwg c25pZmZlZE1pbWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIG1hZ2ljICsg cGF0dGVybiBwb2ludGluZyB0byB0aGlzLCBzbyBpdCdzIGEgcHJldHR5IGdvb2QgbWF0Y2gKKyAg ICAgICAgICAgICAgICAgICAgICphY2N1cmFjeVB0ciA9IDEwMDsKKyAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBtaW1lVHlwZUZvck5hbWUobSk7CisgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICB9CistICAgICAgICAgICAgKmFjY3VyYWN5UHRyID0gbWFnaWNBY2N1cmFjeTsKKy0g ICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlQnlEYXRhOworKyAgICAgICAgICAgIGlmIChjYW5k aWRhdGVzQnlOYW1lLm1fYWxsTWF0Y2hpbmdNaW1lVHlwZXMuaXNFbXB0eSgpKSB7CisrICAgICAg ICAgICAgICAgIC8vIE5vIGdsb2IsIHVzZSBtYWdpYworKyAgICAgICAgICAgICAgICAqYWNjdXJh Y3lQdHIgPSBtYWdpY0FjY3VyYWN5OworKyAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRl QnlEYXRhOworKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQorIAorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMvcW1pbWVnbG9icGF0dGVybi5jcHAgYi9x dGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZ2xvYnBhdHRlcm4uY3BwCitpbmRleCBh ODExMTJkMjI3Li5mYThmNGM1NDVkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL21p bWV0eXBlcy9xbWltZWdsb2JwYXR0ZXJuLmNwcAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL21p bWV0eXBlcy9xbWltZWdsb2JwYXR0ZXJuLmNwcAorQEAgLTgzLDcgKzgzLDEwIEBAIHZvaWQgUU1p bWVHbG9iTWF0Y2hSZXN1bHQ6OmFkZE1hdGNoKGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlLCBpbnQg d2VpZ2h0LCBjb25zdCBRCisgICAgIH0KKyAgICAgaWYgKCFtX21hdGNoaW5nTWltZVR5cGVzLmNv bnRhaW5zKG1pbWVUeXBlKSkgeworICAgICAgICAgbV9tYXRjaGluZ01pbWVUeXBlcy5hcHBlbmQo bWltZVR5cGUpOworLSAgICAgICAgbV9hbGxNYXRjaGluZ01pbWVUeXBlcy5hcHBlbmQobWltZVR5 cGUpOworKyAgICAgICAgaWYgKHJlcGxhY2UpCisrICAgICAgICAgICAgbV9hbGxNYXRjaGluZ01p bWVUeXBlcy5wcmVwZW5kKG1pbWVUeXBlKTsgLy8gaGlnaGVzdC13ZWlnaHQgZmlyc3QKKysgICAg ICAgIGVsc2UKKysgICAgICAgICAgICBtX2FsbE1hdGNoaW5nTWltZVR5cGVzLmFwcGVuZChtaW1l VHlwZSk7CisgICAgICAgICBtX2tub3duU3VmZml4TGVuZ3RoID0ga25vd25TdWZmaXhMZW5ndGg7 CisgICAgIH0KKyB9CitAQCAtOTQsNyArOTcsNyBAQCBRTWltZUdsb2JQYXR0ZXJuOjpQYXR0ZXJu VHlwZSBRTWltZUdsb2JQYXR0ZXJuOjpkZXRlY3RQYXR0ZXJuVHlwZShjb25zdCBRU3RyaW5nCisg ICAgIGlmICghcGF0dGVybkxlbmd0aCkKKyAgICAgICAgIHJldHVybiBPdGhlclBhdHRlcm47Cisg CistICAgIGNvbnN0IGJvb2wgc3RhckNvdW50ID0gcGF0dGVybi5jb3VudChRTGF0aW4xQ2hhcign KicpKSA9PSAxOworKyAgICBjb25zdCBpbnQgc3RhckNvdW50ID0gcGF0dGVybi5jb3VudChRTGF0 aW4xQ2hhcignKicpKTsKKyAgICAgY29uc3QgYm9vbCBoYXNTcXVhcmVCcmFja2V0ID0gcGF0dGVy bi5pbmRleE9mKFFMYXRpbjFDaGFyKCdbJykpICE9IC0xOworICAgICBjb25zdCBib29sIGhhc1F1 ZXN0aW9uTWFyayA9IHBhdHRlcm4uaW5kZXhPZihRTGF0aW4xQ2hhcignPycpKSAhPSAtMTsKKyAK K0BAIC0xMDYsMTAgKzEwOSwxMCBAQCBRTWltZUdsb2JQYXR0ZXJuOjpQYXR0ZXJuVHlwZSBRTWlt ZUdsb2JQYXR0ZXJuOjpkZXRlY3RQYXR0ZXJuVHlwZShjb25zdCBRU3RyaW5nCisgICAgICAgICAg ICAgLy8gUGF0dGVybnMgbGlrZSAiUkVBRE1FKiIgKHdlbGwgdGhpcyBpcyBjdXJyZW50bHkgdGhl IG9ubHkgb25lIGxpa2UgdGhhdC4uLikKKyAgICAgICAgICAgICBpZiAocGF0dGVybi5hdChwYXR0 ZXJuTGVuZ3RoIC0gMSkgPT0gUUxhdGluMUNoYXIoJyonKSkKKyAgICAgICAgICAgICAgICAgcmV0 dXJuIFByZWZpeFBhdHRlcm47CistICAgICAgICB9CistICAgICAgICAvLyBOYW1lcyB3aXRob3V0 IGFueSB3aWxkY2FyZHMgbGlrZSAiUkVBRE1FIgorLSAgICAgICAgaWYgKHN0YXJDb3VudCA9PSAw KQorKyAgICAgICAgfSBlbHNlIGlmIChzdGFyQ291bnQgPT0gMCkgeworKyAgICAgICAgICAgIC8v IE5hbWVzIHdpdGhvdXQgYW55IHdpbGRjYXJkcyBsaWtlICJSRUFETUUiCisgICAgICAgICAgICAg cmV0dXJuIExpdGVyYWxQYXR0ZXJuOworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIGlmIChw YXR0ZXJuID09IFFMYXRpbjFTdHJpbmcoIlswLTldWzAtOV1bMC05XS52ZHIiKSkKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lcHJvdmlkZXIuY3BwIGIvcXRi YXNlL3NyYy9jb3JlbGliL21pbWV0eXBlcy9xbWltZXByb3ZpZGVyLmNwcAoraW5kZXggMjU4ZGRk ZjhjYi4uNDY0MmQwZjJkMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlw ZXMvcW1pbWVwcm92aWRlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9taW1ldHlwZXMv cW1pbWVwcm92aWRlci5jcHAKK0BAIC0yNDQsMTUgKzI0NCwxOCBAQCB2b2lkIFFNaW1lQmluYXJ5 UHJvdmlkZXI6OmFkZEZpbGVOYW1lTWF0Y2hlcyhjb25zdCBRU3RyaW5nICZmaWxlTmFtZSwgUU1p bWVHbG9iTQorICAgICBjb25zdCBRU3RyaW5nIGxvd2VyRmlsZU5hbWUgPSBmaWxlTmFtZS50b0xv d2VyKCk7CisgICAgIC8vIENoZWNrIGxpdGVyYWxzIChlLmcuICJNYWtlZmlsZSIpCisgICAgIG1h dGNoR2xvYkxpc3QocmVzdWx0LCBtX2NhY2hlRmlsZSwgbV9jYWNoZUZpbGUtPmdldFVpbnQzMihQ b3NMaXRlcmFsTGlzdE9mZnNldCksIGZpbGVOYW1lKTsKKy0gICAgLy8gQ2hlY2sgY29tcGxleCBn bG9icyAoZS5nLiAiY2FsbGdyaW5kLm91dFswLTldKiIpCistICAgIG1hdGNoR2xvYkxpc3QocmVz dWx0LCBtX2NhY2hlRmlsZSwgbV9jYWNoZUZpbGUtPmdldFVpbnQzMihQb3NHbG9iTGlzdE9mZnNl dCksIGZpbGVOYW1lKTsKKyAgICAgLy8gQ2hlY2sgdGhlIHZlcnkgY29tbW9uICoudHh0IGNhc2Vz IHdpdGggdGhlIHN1ZmZpeCB0cmVlCistICAgIGNvbnN0IGludCByZXZlcnNlU3VmZml4VHJlZU9m ZnNldCA9IG1fY2FjaGVGaWxlLT5nZXRVaW50MzIoUG9zUmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQp OworLSAgICBjb25zdCBpbnQgbnVtUm9vdHMgPSBtX2NhY2hlRmlsZS0+Z2V0VWludDMyKHJldmVy c2VTdWZmaXhUcmVlT2Zmc2V0KTsKKy0gICAgY29uc3QgaW50IGZpcnN0Um9vdE9mZnNldCA9IG1f Y2FjaGVGaWxlLT5nZXRVaW50MzIocmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQgKyA0KTsKKy0gICAg bWF0Y2hTdWZmaXhUcmVlKHJlc3VsdCwgbV9jYWNoZUZpbGUsIG51bVJvb3RzLCBmaXJzdFJvb3RP ZmZzZXQsIGxvd2VyRmlsZU5hbWUsIGxvd2VyRmlsZU5hbWUubGVuZ3RoKCkgLSAxLCBmYWxzZSk7 CisrICAgIGlmIChyZXN1bHQubV9tYXRjaGluZ01pbWVUeXBlcy5pc0VtcHR5KCkpIHsKKysgICAg ICAgIGNvbnN0IGludCByZXZlcnNlU3VmZml4VHJlZU9mZnNldCA9IG1fY2FjaGVGaWxlLT5nZXRV aW50MzIoUG9zUmV2ZXJzZVN1ZmZpeFRyZWVPZmZzZXQpOworKyAgICAgICAgY29uc3QgaW50IG51 bVJvb3RzID0gbV9jYWNoZUZpbGUtPmdldFVpbnQzMihyZXZlcnNlU3VmZml4VHJlZU9mZnNldCk7 CisrICAgICAgICBjb25zdCBpbnQgZmlyc3RSb290T2Zmc2V0ID0gbV9jYWNoZUZpbGUtPmdldFVp bnQzMihyZXZlcnNlU3VmZml4VHJlZU9mZnNldCArIDQpOworKyAgICAgICAgbWF0Y2hTdWZmaXhU cmVlKHJlc3VsdCwgbV9jYWNoZUZpbGUsIG51bVJvb3RzLCBmaXJzdFJvb3RPZmZzZXQsIGxvd2Vy RmlsZU5hbWUsIGxvd2VyRmlsZU5hbWUubGVuZ3RoKCkgLSAxLCBmYWxzZSk7CisrICAgICAgICBp ZiAocmVzdWx0Lm1fbWF0Y2hpbmdNaW1lVHlwZXMuaXNFbXB0eSgpKQorKyAgICAgICAgICAgIG1h dGNoU3VmZml4VHJlZShyZXN1bHQsIG1fY2FjaGVGaWxlLCBudW1Sb290cywgZmlyc3RSb290T2Zm c2V0LCBmaWxlTmFtZSwgZmlsZU5hbWUubGVuZ3RoKCkgLSAxLCB0cnVlKTsKKysgICAgfQorKyAg ICAvLyBDaGVjayBjb21wbGV4IGdsb2JzIChlLmcuICJjYWxsZ3JpbmQub3V0WzAtOV0qIiBvciAi UkVBRE1FKiIpCisgICAgIGlmIChyZXN1bHQubV9tYXRjaGluZ01pbWVUeXBlcy5pc0VtcHR5KCkp CistICAgICAgICBtYXRjaFN1ZmZpeFRyZWUocmVzdWx0LCBtX2NhY2hlRmlsZSwgbnVtUm9vdHMs IGZpcnN0Um9vdE9mZnNldCwgZmlsZU5hbWUsIGZpbGVOYW1lLmxlbmd0aCgpIC0gMSwgdHJ1ZSk7 CisrICAgICAgICBtYXRjaEdsb2JMaXN0KHJlc3VsdCwgbV9jYWNoZUZpbGUsIG1fY2FjaGVGaWxl LT5nZXRVaW50MzIoUG9zR2xvYkxpc3RPZmZzZXQpLCBmaWxlTmFtZSk7CisgfQorIAorIHZvaWQg UU1pbWVCaW5hcnlQcm92aWRlcjo6bWF0Y2hHbG9iTGlzdChRTWltZUdsb2JNYXRjaFJlc3VsdCAm cmVzdWx0LCBDYWNoZUZpbGUgKmNhY2hlRmlsZSwgaW50IG9mZiwgY29uc3QgUVN0cmluZyAmZmls ZU5hbWUpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcWpz b25wYXJzZXIuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcWpzb25wYXJz ZXIuY3BwCitpbmRleCAxN2U2ZjExMWFiLi4yZTQwYjZjOGZiIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9jb3JlbGliL3NlcmlhbGl6YXRpb24vcWpzb25wYXJzZXIuY3BwCisrKysgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xanNvbnBhcnNlci5jcHAKK0BAIC0zNzksMTAgKzM3 OSwzMCBAQCBlcnJvcjoKKyAgICAgcmV0dXJuIFFDYm9yVmFsdWUoKTsKKyB9CisgCisrLy8gV2Ug bmVlZCB0byByZXRhaW4gdGhlIF9sYXN0XyB2YWx1ZSBmb3IgYW55IGR1cGxpY2F0ZSBrZXlzIGFu ZCB3ZSBuZWVkIHRvIGRlcmVmIGNvbnRhaW5lcnMuCisrLy8gVGhlcmVmb3JlIHRoZSBtYW51YWwg aW1wbGVtZW50YXRpb24gb2Ygc3RkOjp1bmlxdWUoKS4KKyt0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVy YXRvciwgdHlwZW5hbWUgQ29tcGFyZSwgdHlwZW5hbWUgQXNzaWduPgorK3N0YXRpYyBJdGVyYXRv ciBjdXN0b21Bc3NpZ25pbmdVbmlxdWVMYXN0KEl0ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0 LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBhcmUgY29t cGFyZSwgQXNzaWduIGFzc2lnbikKKyt7CisrICAgIGZpcnN0ID0gc3RkOjphZGphY2VudF9maW5k KGZpcnN0LCBsYXN0LCBjb21wYXJlKTsKKysgICAgaWYgKGZpcnN0ID09IGxhc3QpCisrICAgICAg ICByZXR1cm4gbGFzdDsKKysKKysgICAgSXRlcmF0b3IgcmVzdWx0ID0gZmlyc3Q7CisrICAgIHdo aWxlICgrK2ZpcnN0ICE9IGxhc3QpIHsKKysgICAgICAgIGlmICghY29tcGFyZSgqcmVzdWx0LCAq Zmlyc3QpKQorKyAgICAgICAgICAgICsrcmVzdWx0OworKyAgICAgICAgaWYgKHJlc3VsdCAhPSBm aXJzdCkKKysgICAgICAgICAgICBhc3NpZ24oKnJlc3VsdCwgKmZpcnN0KTsKKysgICAgfQorKwor KyAgICByZXR1cm4gKytyZXN1bHQ7CisrfQorKworIHN0YXRpYyB2b2lkIHNvcnRDb250YWluZXIo UUNib3JDb250YWluZXJQcml2YXRlICpjb250YWluZXIpCisgeworICAgICB1c2luZyBGb3J3YXJk ID0gUUpzb25Qcml2YXRlOjpLZXlJdGVyYXRvcjsKKy0gICAgdXNpbmcgUmV2ZXJzZSA9IHN0ZDo6 cmV2ZXJzZV9pdGVyYXRvcjxGb3J3YXJkPjsKKyAgICAgdXNpbmcgVmFsdWUgPSBGb3J3YXJkOjp2 YWx1ZV90eXBlOworIAorICAgICBhdXRvIGNvbXBhcmUgPSBbY29udGFpbmVyXShjb25zdCBWYWx1 ZSAmYSwgY29uc3QgVmFsdWUgJmIpCitAQCAtNDIwLDE3ICs0NDAsMzEgQEAgc3RhdGljIHZvaWQg c29ydENvbnRhaW5lcihRQ2JvckNvbnRhaW5lclByaXZhdGUgKmNvbnRhaW5lcikKKyAgICAgICAg IH0KKyAgICAgfTsKKyAKKy0gICAgc3RkOjpzb3J0KEZvcndhcmQoY29udGFpbmVyLT5lbGVtZW50 cy5iZWdpbigpKSwgRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmVuZCgpKSwKKy0gICAgICAg ICAgICAgIFsmY29tcGFyZV0oY29uc3QgVmFsdWUgJmEsIGNvbnN0IFZhbHVlICZiKSB7IHJldHVy biBjb21wYXJlKGEsIGIpIDwgMDsgfSk7CisrICAgIC8vIFRoZSBlbGVtZW50cycgY29udGFpbmVy cyBhcmUgb3duZWQgYnkgdGhlIG91dGVyIGNvbnRhaW5lciwgbm90IGJ5IHRoZSBlbGVtZW50cyB0 aGVtc2VsdmVzLgorKyAgICBhdXRvIG1vdmUgPSBbXShGb3J3YXJkOjpyZWZlcmVuY2UgdGFyZ2V0 LCBGb3J3YXJkOjpyZWZlcmVuY2Ugc291cmNlKQorKyAgICB7CisrICAgICAgICBRdENib3I6OkVs ZW1lbnQgJnRhcmdldFZhbHVlID0gdGFyZ2V0LnZhbHVlKCk7CisrCisrICAgICAgICAvLyBJZiB0 aGUgdGFyZ2V0IGhhcyBhIGNvbnRhaW5lciwgZGVyZWYgaXQgYmVmb3JlIG92ZXJ3cml0aW5nLCBz byB0aGF0IHdlIGRvbid0IGxlYWsuCisrICAgICAgICBpZiAodGFyZ2V0VmFsdWUuZmxhZ3MgJiBR dENib3I6OkVsZW1lbnQ6OklzQ29udGFpbmVyKQorKyAgICAgICAgICAgIHRhcmdldFZhbHVlLmNv bnRhaW5lci0+ZGVyZWYoKTsKKysKKysgICAgICAgIC8vIERvIG5vdCBtb3ZlLCBzbyB0aGF0IHdl IGNhbiBjbGVhciB0aGUgdmFsdWUgYWZ0ZXJ3YXJkcy4KKysgICAgICAgIHRhcmdldCA9IHNvdXJj ZTsKKysKKysgICAgICAgIC8vIENsZWFyIHRoZSBzb3VyY2UgdmFsdWUsIHNvIHRoYXQgd2UgZG9u J3Qgc3RvcmUgdGhlIHNhbWUgY29udGFpbmVyIHR3aWNlLgorKyAgICAgICAgc291cmNlLnZhbHVl KCkgPSBRdENib3I6OkVsZW1lbnQoKTsKKysgICAgfTsKKysKKysgICAgc3RkOjpzdGFibGVfc29y dCgKKysgICAgICAgICAgICAgICAgRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmJlZ2luKCkp LCBGb3J3YXJkKGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpLAorKyAgICAgICAgICAgICAgICBb JmNvbXBhcmVdKGNvbnN0IFZhbHVlICZhLCBjb25zdCBWYWx1ZSAmYikgeyByZXR1cm4gY29tcGFy ZShhLCBiKSA8IDA7IH0pOworIAorLSAgICAvLyBXZSBuZWVkIHRvIHJldGFpbiB0aGUgX2xhc3Rf IHZhbHVlIGZvciBhbnkgZHVwbGljYXRlIGtleXMuIFRoZXJlZm9yZSB0aGUgcmV2ZXJzZSBkYW5j ZSBoZXJlLgorLSAgICBhdXRvIGl0ID0gc3RkOjp1bmlxdWUoUmV2ZXJzZShjb250YWluZXItPmVs ZW1lbnRzLmVuZCgpKSwgUmV2ZXJzZShjb250YWluZXItPmVsZW1lbnRzLmJlZ2luKCkpLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgWyZjb21wYXJlXShjb25zdCBWYWx1ZSAmYSwgY29uc3Qg VmFsdWUgJmIpIHsKKy0gICAgICAgIHJldHVybiBjb21wYXJlKGEsIGIpID09IDA7CistICAgIH0p LmJhc2UoKS5lbGVtZW50c0l0ZXJhdG9yKCk7CisrICAgIEZvcndhcmQgcmVzdWx0ID0gY3VzdG9t QXNzaWduaW5nVW5pcXVlTGFzdCgKKysgICAgICAgICAgICAgICAgRm9yd2FyZChjb250YWluZXIt PmVsZW1lbnRzLmJlZ2luKCkpLCAgRm9yd2FyZChjb250YWluZXItPmVsZW1lbnRzLmVuZCgpKSwK KysgICAgICAgICAgICAgICAgWyZjb21wYXJlXShjb25zdCBWYWx1ZSAmYSwgY29uc3QgVmFsdWUg JmIpIHsgcmV0dXJuIGNvbXBhcmUoYSwgYikgPT0gMDsgfSwgbW92ZSk7CisgCistICAgIC8vIFRo ZSBlcmFzZSBmcm9tIGJlZ2lubmluZyBpcyBleHBlbnNpdmUgYnV0IGhvcGVmdWxseSByYXJlLgor LSAgICBjb250YWluZXItPmVsZW1lbnRzLmVyYXNlKGNvbnRhaW5lci0+ZWxlbWVudHMuYmVnaW4o KSwgaXQpOworKyAgICBjb250YWluZXItPmVsZW1lbnRzLmVyYXNlKHJlc3VsdC5lbGVtZW50c0l0 ZXJhdG9yKCksIGNvbnRhaW5lci0+ZWxlbWVudHMuZW5kKCkpOworIH0KKyAKKyAKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9xeG1sc3RyZWFtLmNwcCBiL3F0 YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxpemF0aW9uL3F4bWxzdHJlYW0uY3BwCitpbmRleCBiMmY4 NDY1NDRkLi43Y2Q0NTdiYTNhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3Nlcmlh bGl6YXRpb24vcXhtbHN0cmVhbS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi9zZXJpYWxp emF0aW9uL3F4bWxzdHJlYW0uY3BwCitAQCAtOTgwLDcgKzk4MCw3IEBAIGlubGluZSB1aW50IFFY bWxTdHJlYW1SZWFkZXJQcml2YXRlOjpwZWVrQ2hhcigpCisgYm9vbCBRWG1sU3RyZWFtUmVhZGVy UHJpdmF0ZTo6c2NhblVudGlsKGNvbnN0IGNoYXIgKnN0ciwgc2hvcnQgdG9rZW5Ub0luamVjdCkK KyB7CisgICAgIGludCBwb3MgPSB0ZXh0QnVmZmVyLnNpemUoKTsKKy0gICAgaW50IG9sZExpbmVO dW1iZXIgPSBsaW5lTnVtYmVyOworKyAgICBjb25zdCBhdXRvIG9sZExpbmVOdW1iZXIgPSBsaW5l TnVtYmVyOworIAorICAgICB1aW50IGM7CisgICAgIHdoaWxlICgoYyA9IGdldENoYXIoKSkgIT0g U3RyZWFtRU9GKSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0cmlu Zy5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNwcAoraW5kZXggM2U4OGFi NDg1OS4uOGRlZWFlNDdiYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3Fz dHJpbmcuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGV4dC9xc3RyaW5nLmNwcAorQEAg LTEyMzEyLDcgKzEyMzEyLDcgQEAgc3RhdGljIHFzaXpldHlwZSBxTGFzdEluZGV4T2YoSGF5c3Rh Y2sgaGF5c3RhY2swLCBxc2l6ZXR5cGUgZnJvbSwKKyAgICAgY29uc3QgYXV0byBuZWVkbGUgPSBu ZWVkbGUwLmRhdGEoKTsKKyAgICAgY29uc3QgYXV0byAqZW5kID0gaGF5c3RhY2s7CisgICAgIGhh eXN0YWNrICs9IGZyb207CistICAgIGNvbnN0IHN0ZDo6c2l6ZV90IHNsX21pbnVzXzEgPSBzbCAt IDE7CisrICAgIGNvbnN0IHN0ZDo6c2l6ZV90IHNsX21pbnVzXzEgPSBzbCA/IHNsIC0gMSA6IDA7 CisgICAgIGNvbnN0IGF1dG8gKm4gPSBuZWVkbGUgKyBzbF9taW51c18xOworICAgICBjb25zdCBh dXRvICpoID0gaGF5c3RhY2sgKyBzbF9taW51c18xOworICAgICBzdGQ6OnNpemVfdCBoYXNoTmVl ZGxlID0gMCwgaGFzaEhheXN0YWNrID0gMDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVs aWIvdGV4dC9xc3RyaW5naXRlcmF0b3JfcC5oIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RleHQvcXN0 cmluZ2l0ZXJhdG9yX3AuaAoraW5kZXggMjE5NTg5YjZlNC4uMWQwYzY2Y2M3OCAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRvcl9wLmgKKysrKyBiL3F0 YmFzZS9zcmMvY29yZWxpYi90ZXh0L3FzdHJpbmdpdGVyYXRvcl9wLmgKK0BAIC02MSw2ICs2MSw4 IEBAIGNsYXNzIFFTdHJpbmdJdGVyYXRvcgorIHsKKyAgICAgUVN0cmluZzo6Y29uc3RfaXRlcmF0 b3IgaSwgcG9zLCBlOworICAgICBRX1NUQVRJQ19BU1NFUlQoKHN0ZDo6aXNfc2FtZTxRU3RyaW5n Ojpjb25zdF9pdGVyYXRvciwgY29uc3QgUUNoYXIgKj46OnZhbHVlKSk7CisrICAgIHN0YXRpYyBi b29sIGxlc3MoY29uc3QgUUNoYXIgKmxocywgY29uc3QgUUNoYXIgKnJocykgbm9leGNlcHQKKysg ICAgeyByZXR1cm4gc3RkOjpsZXNzPFFTdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPnt9KGxocywgcmhz KTsgfQorIHB1YmxpYzoKKyAgICAgZXhwbGljaXQgUVN0cmluZ0l0ZXJhdG9yKFFTdHJpbmdWaWV3 IHN0cmluZywgcXNpemV0eXBlIGlkeCA9IDApCisgICAgICAgICA6IGkoc3RyaW5nLmJlZ2luKCkp LAorQEAgLTk1LDcgKzk3LDggQEAgcHVibGljOgorIAorICAgICBpbmxpbmUgdm9pZCBzZXRQb3Np dGlvbihRU3RyaW5nOjpjb25zdF9pdGVyYXRvciBwb3NpdGlvbikKKyAgICAgeworLSAgICAgICAg UV9BU1NFUlRfWChpIDw9IHBvc2l0aW9uICYmIHBvc2l0aW9uIDw9IGUsIFFfRlVOQ19JTkZPLCAi cG9zaXRpb24gb3V0IG9mIGJvdW5kcyIpOworKyAgICAgICAgUV9BU1NFUlRfWCghbGVzcyhwb3Np dGlvbiwgaSkgJiYgIWxlc3MoZSwgcG9zaXRpb24pLAorKyAgICAgICAgICAgICAgICAgICBRX0ZV TkNfSU5GTywgInBvc2l0aW9uIG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAgIHBvcyA9IHBvc2l0 aW9uOworICAgICB9CisgCitAQCAtMTAzLDcgKzEwNiw3IEBAIHB1YmxpYzoKKyAKKyAgICAgaW5s aW5lIGJvb2wgaGFzTmV4dCgpIGNvbnN0CisgICAgIHsKKy0gICAgICAgIHJldHVybiBwb3MgPCBl OworKyAgICAgICAgcmV0dXJuIGxlc3MocG9zLCBlKTsKKyAgICAgfQorIAorICAgICBpbmxpbmUg dm9pZCBhZHZhbmNlKCkKK0BAIC0xMjAsMTYgKzEyMywyMCBAQCBwdWJsaWM6CisgICAgIHsKKyAg ICAgICAgIFFfQVNTRVJUX1goaGFzTmV4dCgpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhhc24n dCBhIG5leHQgaXRlbSIpOworIAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFkoKHBvcysrKS0+aXNI aWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkoKHBvcysrKS0+aXNIaWdo U3Vycm9nYXRlKCkpKSB7CisrICAgICAgICAgICAgUV9BU1NFUlQoaGFzTmV4dCgpICYmIHBvcy0+ aXNMb3dTdXJyb2dhdGUoKSk7CisgICAgICAgICAgICAgKytwb3M7CisrICAgICAgICB9CisgICAg IH0KKyAKKyAgICAgaW5saW5lIHVpbnQgcGVla05leHRVbmNoZWNrZWQoKSBjb25zdAorICAgICB7 CisgICAgICAgICBRX0FTU0VSVF9YKGhhc05leHQoKSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBo YXNuJ3QgYSBuZXh0IGl0ZW0iKTsKKyAKKy0gICAgICAgIGlmIChRX1VOTElLRUxZKHBvcy0+aXNI aWdoU3Vycm9nYXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkocG9zLT5pc0hpZ2hTdXJy b2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FTU0VSVChsZXNzKHBvcyArIDEsIGUpICYmIHBv c1sxXS5pc0xvd1N1cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJv Z2F0ZVRvVWNzNChwb3NbMF0sIHBvc1sxXSk7CisrICAgICAgICB9CisgCisgICAgICAgICByZXR1 cm4gcG9zLT51bmljb2RlKCk7CisgICAgIH0KK0BAIC0xNTUsOCArMTYyLDEwIEBAIHB1YmxpYzoK KyAgICAgICAgIFFfQVNTRVJUX1goaGFzTmV4dCgpLCBRX0ZVTkNfSU5GTywgIml0ZXJhdG9yIGhh c24ndCBhIG5leHQgaXRlbSIpOworIAorICAgICAgICAgY29uc3QgUUNoYXIgY3VyID0gKnBvcysr OworLSAgICAgICAgaWYgKFFfVU5MSUtFTFkoY3VyLmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKysgICAg ICAgIGlmIChRX1VOTElLRUxZKGN1ci5pc0hpZ2hTdXJyb2dhdGUoKSkpIHsKKysgICAgICAgICAg ICBRX0FTU0VSVChoYXNOZXh0KCkgJiYgcG9zLT5pc0xvd1N1cnJvZ2F0ZSgpKTsKKyAgICAgICAg ICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNChjdXIsICpwb3MrKyk7CisrICAgICAg ICB9CisgICAgICAgICByZXR1cm4gY3VyLnVuaWNvZGUoKTsKKyAgICAgfQorIAorQEAgLTE2Niw3 ICsxNzUsNyBAQCBwdWJsaWM6CisgCisgICAgICAgICBjb25zdCBRQ2hhciB1YyA9ICpwb3MrKzsK KyAgICAgICAgIGlmIChRX1VOTElLRUxZKHVjLmlzU3Vycm9nYXRlKCkpKSB7CistICAgICAgICAg ICAgaWYgKFFfTElLRUxZKHVjLmlzSGlnaFN1cnJvZ2F0ZSgpICYmIHBvcyA8IGUgJiYgcG9zLT5p c0xvd1N1cnJvZ2F0ZSgpKSkKKysgICAgICAgICAgICBpZiAoUV9MSUtFTFkodWMuaXNIaWdoU3Vy cm9nYXRlKCkgJiYgaGFzTmV4dCgpICYmIHBvcy0+aXNMb3dTdXJyb2dhdGUoKSkpCisgICAgICAg ICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vycm9nYXRlVG9VY3M0KHVjLCAqcG9zKyspOworICAg ICAgICAgICAgIHJldHVybiBpbnZhbGlkQXM7CisgICAgICAgICB9CitAQCAtMTc4LDcgKzE4Nyw3 IEBAIHB1YmxpYzoKKyAKKyAgICAgaW5saW5lIGJvb2wgaGFzUHJldmlvdXMoKSBjb25zdAorICAg ICB7CistICAgICAgICByZXR1cm4gcG9zID4gaTsKKysgICAgICAgIHJldHVybiBsZXNzKGksIHBv cyk7CisgICAgIH0KKyAKKyAgICAgaW5saW5lIHZvaWQgcmVjZWRlKCkKK0BAIC0xOTYsMTYgKzIw NSwyMCBAQCBwdWJsaWM6CisgICAgIHsKKyAgICAgICAgIFFfQVNTRVJUX1goaGFzUHJldmlvdXMo KSwgUV9GVU5DX0lORk8sICJpdGVyYXRvciBoYXNuJ3QgYSBwcmV2aW91cyBpdGVtIik7CisgCist ICAgICAgICBpZiAoUV9VTkxJS0VMWSgoLS1wb3MpLT5pc0xvd1N1cnJvZ2F0ZSgpKSkKKysgICAg ICAgIGlmIChRX1VOTElLRUxZKCgtLXBvcyktPmlzTG93U3Vycm9nYXRlKCkpKSB7CisrICAgICAg ICAgICAgUV9BU1NFUlQoaGFzUHJldmlvdXMoKSAmJiBwb3NbLTFdLmlzSGlnaFN1cnJvZ2F0ZSgp KTsKKyAgICAgICAgICAgICAtLXBvczsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICBpbmxp bmUgdWludCBwZWVrUHJldmlvdXNVbmNoZWNrZWQoKSBjb25zdAorICAgICB7CisgICAgICAgICBR X0FTU0VSVF9YKGhhc1ByZXZpb3VzKCksIFFfRlVOQ19JTkZPLCAiaXRlcmF0b3IgaGFzbid0IGEg cHJldmlvdXMgaXRlbSIpOworIAorLSAgICAgICAgaWYgKFFfVU5MSUtFTFkocG9zWy0xXS5pc0xv d1N1cnJvZ2F0ZSgpKSkKKysgICAgICAgIGlmIChRX1VOTElLRUxZKHBvc1stMV0uaXNMb3dTdXJy b2dhdGUoKSkpIHsKKysgICAgICAgICAgICBRX0FTU0VSVChsZXNzKGkgKyAxLCBwb3MpICYmIHBv c1stMl0uaXNIaWdoU3Vycm9nYXRlKCkpOworICAgICAgICAgICAgIHJldHVybiBRQ2hhcjo6c3Vy cm9nYXRlVG9VY3M0KHBvc1stMl0sIHBvc1stMV0pOworKyAgICAgICAgfQorICAgICAgICAgcmV0 dXJuIHBvc1stMV0udW5pY29kZSgpOworICAgICB9CisgCitAQCAtMjMwLDggKzI0MywxMCBAQCBw dWJsaWM6CisgICAgICAgICBRX0FTU0VSVF9YKGhhc1ByZXZpb3VzKCksIFFfRlVOQ19JTkZPLCAi aXRlcmF0b3IgaGFzbid0IGEgcHJldmlvdXMgaXRlbSIpOworIAorICAgICAgICAgY29uc3QgUUNo YXIgY3VyID0gKi0tcG9zOworLSAgICAgICAgaWYgKFFfVU5MSUtFTFkoY3VyLmlzTG93U3Vycm9n YXRlKCkpKQorKyAgICAgICAgaWYgKFFfVU5MSUtFTFkoY3VyLmlzTG93U3Vycm9nYXRlKCkpKSB7 CisrICAgICAgICAgICAgUV9BU1NFUlQoaGFzUHJldmlvdXMoKSAmJiBwb3NbLTFdLmlzSGlnaFN1 cnJvZ2F0ZSgpKTsKKyAgICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1cnJvZ2F0ZVRvVWNzNCgq LS1wb3MsIGN1cik7CisrICAgICAgICB9CisgICAgICAgICByZXR1cm4gY3VyLnVuaWNvZGUoKTsK KyAgICAgfQorIAorQEAgLTI0MSw3ICsyNTYsNyBAQCBwdWJsaWM6CisgCisgICAgICAgICBjb25z dCBRQ2hhciB1YyA9ICotLXBvczsKKyAgICAgICAgIGlmIChRX1VOTElLRUxZKHVjLmlzU3Vycm9n YXRlKCkpKSB7CistICAgICAgICAgICAgaWYgKFFfTElLRUxZKHVjLmlzTG93U3Vycm9nYXRlKCkg JiYgcG9zID4gaSAmJiBwb3NbLTFdLmlzSGlnaFN1cnJvZ2F0ZSgpKSkKKysgICAgICAgICAgICBp ZiAoUV9MSUtFTFkodWMuaXNMb3dTdXJyb2dhdGUoKSAmJiBoYXNQcmV2aW91cygpICYmIHBvc1st MV0uaXNIaWdoU3Vycm9nYXRlKCkpKQorICAgICAgICAgICAgICAgICByZXR1cm4gUUNoYXI6OnN1 cnJvZ2F0ZVRvVWNzNCgqLS1wb3MsIHVjKTsKKyAgICAgICAgICAgICByZXR1cm4gaW52YWxpZEFz OworICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcWZ1 dGV4X3AuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcWZ1dGV4X3AuaAoraW5kZXggZjI4 N2I3NTJkNy4uZTI5NDUzNzc4NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJl YWQvcWZ1dGV4X3AuaAorKysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xZnV0ZXhfcC5o CitAQCAtNTIsNiArNTIsNyBAQAorIC8vCisgCisgI2luY2x1ZGUgPHFnbG9iYWwuaD4KKysjaW5j bHVkZSA8UXRDb3JlL3F0c2FuX2ltcGwuaD4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKK0BA IC0xMDYsMTYgKzEwNywxMyBAQCBuYW1lc3BhY2UgUXRMaW51eEZ1dGV4IHsKKyAgICAgaW5saW5l IGludCBfcV9mdXRleChpbnQgKmFkZHIsIGludCBvcCwgaW50IHZhbCwgcXVpbnRwdHIgdmFsMiA9 IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICphZGRyMiA9IG51bGxwdHIsIGludCB2 YWwzID0gMCkgbm9leGNlcHQKKyAgICAgeworLSAgICAgICAgLy8gQSBmdXRleCBjYWxsIGVuc3Vy ZXMgdG90YWwgb3JkZXJpbmcgb24gdGhlIGZ1dGV4IHdvcmRzCistICAgICAgICAvLyAoaW4gZWl0 aGVyIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiB0aGUgY2FsbCkuIEluc3RydWN0IFRTQU4gYWNjb3Jk aW5nbHksCistICAgICAgICAvLyBhcyBUU0FOIGRvZXMgbm90IHVuZGVyc3RhbmQgdGhlIGZ1dGV4 KDIpIHN5c2NhbGwuCistICAgICAgICBfcV90c2FuX3JlbGVhc2UoYWRkciwgYWRkcjIpOworKyAg ICAgICAgUXRUc2FuOjpmdXRleFJlbGVhc2UoYWRkciwgYWRkcjIpOworIAorICAgICAgICAgLy8g d2UgdXNlIF9fTlJfZnV0ZXggYmVjYXVzZSBzb21lIGxpYmNzIChsaWtlIEFuZHJvaWQncyBiaW9u aWMpIGRvbid0CisgICAgICAgICAvLyBwcm92aWRlIFNZU19mdXRleCBldGMuCisgICAgICAgICBp bnQgcmVzdWx0ID0gc3lzY2FsbChfX05SX2Z1dGV4LCBhZGRyLCBvcCB8IEZVVEVYX1BSSVZBVEVf RkxBRywgdmFsLCB2YWwyLCBhZGRyMiwgdmFsMyk7CisgCistICAgICAgICBfcV90c2FuX2FjcXVp cmUoYWRkciwgYWRkcjIpOworKyAgICAgICAgUXRUc2FuOjpmdXRleEFjcXVpcmUoYWRkciwgYWRk cjIpOworIAorICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90 aHJlYWQvcW11dGV4LmNwcAoraW5kZXggMzEwZDFjYjE0Zi4uNzA5NzEyMmQ4ZSAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9jb3JlbGliL3RocmVhZC9xbXV0ZXguY3BwCitAQCAtMTUyLDYgKzE1Miw3IEBAIHB1YmxpYzoK KyAKKyAvKiEKKyAgICAgXGVudW0gUU11dGV4OjpSZWN1cnNpb25Nb2RlCisrICAgIFxvYnNvbGV0 ZSBVc2UgUVJlY3Vyc2l2ZU11dGV4IHRvIGNyZWF0ZSBhIHJlY3Vyc2l2ZSBtdXRleC4KKyAKKyAg ICAgXHZhbHVlIFJlY3Vyc2l2ZSAgSW4gdGhpcyBtb2RlLCBhIHRocmVhZCBjYW4gbG9jayB0aGUg c2FtZSBtdXRleAorICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSB0aW1lcyBhbmQgdGhl IG11dGV4IHdvbid0IGJlIHVubG9ja2VkCitAQCAtMTczLDYgKzE3NCw3IEBAIHB1YmxpYzoKKyAK KyAvKiEKKyAgICAgQ29uc3RydWN0cyBhIG5ldyBtdXRleC4gVGhlIG11dGV4IGlzIGNyZWF0ZWQg aW4gYW4gdW5sb2NrZWQgc3RhdGUuCisrICAgIFxvYnNvbGV0ZSBVc2UgUVJlY3Vyc2l2ZU11dGV4 IHRvIGNyZWF0ZSBhIHJlY3Vyc2l2ZSBtdXRleC4KKyAKKyAgICAgSWYgXGEgbW9kZSBpcyBRTXV0 ZXg6OlJlY3Vyc2l2ZSwgYSB0aHJlYWQgY2FuIGxvY2sgdGhlIHNhbWUgbXV0ZXgKKyAgICAgbXVs dGlwbGUgdGltZXMgYW5kIHRoZSBtdXRleCB3b24ndCBiZSB1bmxvY2tlZCB1bnRpbCBhCitAQCAt MTk3LDcgKzE5OSw3IEBAIFFNdXRleDo6UU11dGV4KFJlY3Vyc2lvbk1vZGUgbW9kZSkKKyBRTXV0 ZXg6On5RTXV0ZXgoKQorIHsKKyAgICAgUU11dGV4RGF0YSAqZCA9IGRfcHRyLmxvYWRSZWxheGVk KCk7CistICAgIGlmIChpc1JlY3Vyc2l2ZSgpKSB7CisrICAgIGlmIChRQmFzaWNNdXRleDo6aXNS ZWN1cnNpdmUoKSkgeworICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PFFSZWN1cnNpdmVNdXRl eFByaXZhdGUgKj4oZCk7CisgICAgIH0gZWxzZSBpZiAoZCkgeworICNpZm5kZWYgUVRfTElOVVhf RlVURVgKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3FtdXRleC5oIGIv cXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xbXV0ZXguaAoraW5kZXggNzNjOWUwMDY2My4uMWJh ZTU3M2EwMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmgK KysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcW11dGV4LmgKK0BAIC00Miw2ICs0Miw3 IEBACisgCisgI2luY2x1ZGUgPFF0Q29yZS9xZ2xvYmFsLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9x YXRvbWljLmg+CisrI2luY2x1ZGUgPFF0Q29yZS9xdHNhbl9pbXBsLmg+CisgI2luY2x1ZGUgPG5l dz4KKyAKKyAjaWYgX19oYXNfaW5jbHVkZSg8Y2hyb25vPikKK0BAIC03NywxOSArNzgsMzcgQEAg cHVibGljOgorIAorICAgICAvLyBCYXNpY0xvY2thYmxlIGNvbmNlcHQKKyAgICAgaW5saW5lIHZv aWQgbG9jaygpIFFUX01VVEVYX0xPQ0tfTk9FWENFUFQgeworKyAgICAgICAgUXRUc2FuOjptdXRl eFByZUxvY2sodGhpcywgMHUpOworKworICAgICAgICAgaWYgKCFmYXN0VHJ5TG9jaygpKQorICAg ICAgICAgICAgIGxvY2tJbnRlcm5hbCgpOworKworKyAgICAgICAgUXRUc2FuOjptdXRleFBvc3RM b2NrKHRoaXMsIDB1LCAwKTsKKyAgICAgfQorIAorICAgICAvLyBCYXNpY0xvY2thYmxlIGNvbmNl cHQKKyAgICAgaW5saW5lIHZvaWQgdW5sb2NrKCkgbm9leGNlcHQgeworICAgICAgICAgUV9BU1NF UlQoZF9wdHIubG9hZFJlbGF4ZWQoKSk7IC8vbXV0ZXggbXVzdCBiZSBsb2NrZWQKKysKKysgICAg ICAgIFF0VHNhbjo6bXV0ZXhQcmVVbmxvY2sodGhpcywgMHUpOworKworICAgICAgICAgaWYgKCFm YXN0VHJ5VW5sb2NrKCkpCisgICAgICAgICAgICAgdW5sb2NrSW50ZXJuYWwoKTsKKysKKysgICAg ICAgIFF0VHNhbjo6bXV0ZXhQb3N0VW5sb2NrKHRoaXMsIDB1KTsKKyAgICAgfQorIAorICAgICBi b29sIHRyeUxvY2soKSBub2V4Y2VwdCB7CistICAgICAgICByZXR1cm4gZmFzdFRyeUxvY2soKTsK KysgICAgICAgIHVuc2lnbmVkIHRzYW5GbGFncyA9IFF0VHNhbjo6VHJ5TG9jazsKKysgICAgICAg IFF0VHNhbjo6bXV0ZXhQcmVMb2NrKHRoaXMsIHRzYW5GbGFncyk7CisrCisrICAgICAgICBjb25z dCBib29sIHN1Y2Nlc3MgPSBmYXN0VHJ5TG9jaygpOworKworKyAgICAgICAgaWYgKCFzdWNjZXNz KQorKyAgICAgICAgICAgIHRzYW5GbGFncyB8PSBRdFRzYW46OlRyeUxvY2tGYWlsZWQ7CisrICAg ICAgICBRdFRzYW46Om11dGV4UG9zdExvY2sodGhpcywgdHNhbkZsYWdzLCAwKTsKKysKKysgICAg ICAgIHJldHVybiBzdWNjZXNzOworICAgICB9CisgCisgICAgIC8vIExvY2thYmxlIGNvbmNlcHQK K0BAIC0xMzQsOCArMTUzLDE2IEBAIHB1YmxpYzoKKyAjZWxzZQorICAgICBRTXV0ZXgoKSB7IGRf cHRyLnN0b3JlUmVsYXhlZChudWxscHRyKTsgfQorICNlbmRpZgorKyNpZiBRVF9ERVBSRUNBVEVE X1NJTkNFKDUsMTUpCisgICAgIGVudW0gUmVjdXJzaW9uTW9kZSB7IE5vblJlY3Vyc2l2ZSwgUmVj dXJzaXZlIH07CisrICAgIFFUX0RFUFJFQ0FURURfVkVSU0lPTl9YKDUsIDE1LCAiVXNlIFFSZWN1 cnNpdmVNdXRleCBpbnN0ZWFkIG9mIGEgcmVjdXJzaXZlIFFNdXRleCIpCisgICAgIGV4cGxpY2l0 IFFNdXRleChSZWN1cnNpb25Nb2RlIG1vZGUpOworKworKyAgICBRVF9ERVBSRUNBVEVEX1ZFUlNJ T05fWCg1LCAxNSwgIlVzZSBRUmVjdXJzaXZlTXV0ZXggaW5zdGVhZCBvZiBhIHJlY3Vyc2l2ZSBR TXV0ZXgiKQorKyAgICBib29sIGlzUmVjdXJzaXZlKCkgY29uc3Qgbm9leGNlcHQKKysgICAgeyBy ZXR1cm4gUUJhc2ljTXV0ZXg6OmlzUmVjdXJzaXZlKCk7IH0KKysjZW5kaWYKKysKKyAgICAgflFN dXRleCgpOworIAorICAgICAvLyBCYXNpY0xvY2thYmxlIGNvbmNlcHQKK0BAIC0xNjYsOSArMTkz LDYgQEAgcHVibGljOgorICAgICB9CisgI2VuZGlmCisgCistICAgIGJvb2wgaXNSZWN1cnNpdmUo KSBjb25zdCBub2V4Y2VwdAorLSAgICB7IHJldHVybiBRQmFzaWNNdXRleDo6aXNSZWN1cnNpdmUo KTsgfQorLQorIHByaXZhdGU6CisgICAgIFFfRElTQUJMRV9DT1BZKFFNdXRleCkKKyAgICAgZnJp ZW5kIGNsYXNzIFFNdXRleExvY2tlcjsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIv dGhyZWFkL3FyZWFkd3JpdGVsb2NrLmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXJl YWR3cml0ZWxvY2suY3BwCitpbmRleCA4YzI4NTA3ZDVhLi45ZGQ4NTAzMTE2IDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xcmVhZHdyaXRlbG9jay5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXJlYWR3cml0ZWxvY2suY3BwCitAQCAtMTU1LDcgKzE1 NSw3IEBAIFFSZWFkV3JpdGVMb2NrOjpRUmVhZFdyaXRlTG9jayhSZWN1cnNpb25Nb2RlIHJlY3Vy c2lvbk1vZGUpCisgKi8KKyBRUmVhZFdyaXRlTG9jazo6flFSZWFkV3JpdGVMb2NrKCkKKyB7Cist ICAgIGF1dG8gZCA9IGRfcHRyLmxvYWRSZWxheGVkKCk7CisrICAgIGF1dG8gZCA9IGRfcHRyLmxv YWRBY3F1aXJlKCk7CisgICAgIGlmIChpc1VuY29udGVuZGVkTG9ja2VkKGQpKSB7CisgICAgICAg ICBxV2FybmluZygiUVJlYWRXcml0ZUxvY2s6IGRlc3Ryb3lpbmcgbG9ja2VkIFFSZWFkV3JpdGVM b2NrIik7CisgICAgICAgICByZXR1cm47CitAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgUVJlYWRX cml0ZUxvY2s6OnVubG9jaygpCisgLyohIFxpbnRlcm5hbCAgSGVscGVyIGZvciBRV2FpdENvbmRp dGlvbjo6d2FpdCAqLworIFFSZWFkV3JpdGVMb2NrOjpTdGF0ZUZvcldhaXRDb25kaXRpb24gUVJl YWRXcml0ZUxvY2s6OnN0YXRlRm9yV2FpdENvbmRpdGlvbigpIGNvbnN0CisgeworLSAgICBRUmVh ZFdyaXRlTG9ja1ByaXZhdGUgKmQgPSBkX3B0ci5sb2FkUmVsYXhlZCgpOworKyAgICBRUmVhZFdy aXRlTG9ja1ByaXZhdGUgKmQgPSBkX3B0ci5sb2FkQWNxdWlyZSgpOworICAgICBzd2l0Y2ggKHF1 aW50cHRyKGQpICYgU3RhdGVNYXNrKSB7CisgICAgIGNhc2UgU3RhdGVMb2NrZWRGb3JSZWFkOiBy ZXR1cm4gTG9ja2VkRm9yUmVhZDsKKyAgICAgY2FzZSBTdGF0ZUxvY2tlZEZvcldyaXRlOiByZXR1 cm4gTG9ja2VkRm9yV3JpdGU7CitAQCAtNDUzLDYgKzQ1Myw3IEBAIFFSZWFkV3JpdGVMb2NrOjpT dGF0ZUZvcldhaXRDb25kaXRpb24gUVJlYWRXcml0ZUxvY2s6OnN0YXRlRm9yV2FpdENvbmRpdGlv bigpIGNvCisgCisgICAgIGlmICghZCkKKyAgICAgICAgIHJldHVybiBVbmxvY2tlZDsKKysgICAg Y29uc3QgYXV0byBsb2NrID0gcXRfc2NvcGVkX2xvY2soZC0+bXV0ZXgpOworICAgICBpZiAoZC0+ d3JpdGVyQ291bnQgPiAxKQorICAgICAgICAgcmV0dXJuIFJlY3Vyc2l2ZWx5TG9ja2VkOworICAg ICBlbHNlIGlmIChkLT53cml0ZXJDb3VudCA9PSAxKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv Y29yZWxpYi90aHJlYWQvcXNlbWFwaG9yZS5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFk L3FzZW1hcGhvcmUuY3BwCitpbmRleCAxZDAxZmMxYjI4Li4zZWNkZWUzNzQ3IDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xc2VtYXBob3JlLmNwcAorKysrIGIvcXRiYXNl L3NyYy9jb3JlbGliL3RocmVhZC9xc2VtYXBob3JlLmNwcAorQEAgLTM1NCw3ICszNTQsMTIgQEAg dm9pZCBRU2VtYXBob3JlOjpyZWxlYXNlKGludCBuKQorICAgICAgICAgcXVpbnRwdHIgbm4gPSB1 bnNpZ25lZChuKTsKKyAgICAgICAgIGlmIChmdXRleEhhc1dhaXRlckNvdW50KQorICAgICAgICAg ICAgIG5uIHw9IHF1aW50NjQobm4pIDw8IDMyOyAgICAvLyB0b2tlbiBjb3VudCByZXBsaWNhdGVk IGluIGhpZ2ggd29yZAorLSAgICAgICAgcXVpbnRwdHIgcHJldlZhbHVlID0gdS5mZXRjaEFuZEFk ZFJlbGVhc2Uobm4pOworKyAgICAgICAgcXVpbnRwdHIgcHJldlZhbHVlID0gdS5sb2FkUmVsYXhl ZCgpOworKyAgICAgICAgcXVpbnRwdHIgbmV3VmFsdWU7CisrICAgICAgICBkbyB7IC8vIGxvb3Ag anVzdCB0byBlbnN1cmUgdGhlIG9wZXJhdGlvbnMgYXJlIGRvbmUgYXRvbWljYWxseQorKyAgICAg ICAgICAgIG5ld1ZhbHVlID0gcHJldlZhbHVlICsgbm47CisrICAgICAgICAgICAgbmV3VmFsdWUg Jj0gKGZ1dGV4TmVlZHNXYWtlQWxsQml0IC0gMSk7CisrICAgICAgICB9IHdoaWxlICghdS50ZXN0 QW5kU2V0UmVsZWFzZShwcmV2VmFsdWUsIG5ld1ZhbHVlLCBwcmV2VmFsdWUpKTsKKyAgICAgICAg IGlmIChmdXRleE5lZWRzV2FrZShwcmV2VmFsdWUpKSB7CisgI2lmZGVmIEZVVEVYX09QCisgICAg ICAgICAgICAgaWYgKGZ1dGV4SGFzV2FpdGVyQ291bnQpIHsKK0BAIC0zNzYsNyArMzgxLDYgQEAg dm9pZCBRU2VtYXBob3JlOjpyZWxlYXNlKGludCBuKQorICAgICAgICAgICAgICAgICBxdWludDMy IG9wYXJnID0gMDsKKyAgICAgICAgICAgICAgICAgcXVpbnQzMiBjbXAgPSBGVVRFWF9PUF9DTVBf TkU7CisgICAgICAgICAgICAgICAgIHF1aW50MzIgY21wYXJnID0gMDsKKy0gICAgICAgICAgICAg ICAgdS5mZXRjaEFuZEFuZFJlbGVhc2UoZnV0ZXhOZWVkc1dha2VBbGxCaXQgLSAxKTsKKyAgICAg ICAgICAgICAgICAgZnV0ZXhXYWtlT3AoKmZ1dGV4TG93MzIoJnUpLCBuLCBJTlRfTUFYLCAqZnV0 ZXhIaWdoMzIoJnUpLCBGVVRFWF9PUChvcCwgb3BhcmcsIGNtcCwgY21wYXJnKSk7CisgICAgICAg ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICB9CitAQCAtMzg4LDcgKzM5Miw2IEBAIHZv aWQgUVNlbWFwaG9yZTo6cmVsZWFzZShpbnQgbikKKyAgICAgICAgICAgICAvLyAgICBpdHMgYWNx dWlzaXRpb24gYW55d2F5LCBzbyBpdCBoYXMgdG8gd2FpdDsKKyAgICAgICAgICAgICAvLyAyKSBp dCBkaWQgbm90IHNlZSB0aGUgbmV3IGNvdW50ZXIgdmFsdWUsIGluIHdoaWNoIGNhc2UgaXRzCisg ICAgICAgICAgICAgLy8gICAgZnV0ZXhXYWl0IHdpbGwgZmFpbC4KKy0gICAgICAgICAgICB1LmZl dGNoQW5kQW5kUmVsZWFzZShmdXRleE5lZWRzV2FrZUFsbEJpdCAtIDEpOworICAgICAgICAgICAg IGlmIChmdXRleEhhc1dhaXRlckNvdW50KSB7CisgICAgICAgICAgICAgICAgIGZ1dGV4V2FrZUFs bCgqZnV0ZXhMb3czMigmdSkpOworICAgICAgICAgICAgICAgICBmdXRleFdha2VBbGwoKmZ1dGV4 SGlnaDMyKCZ1KSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhy ZWFkX3AuaCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF9wLmgKK2luZGV4IGIy ZDE2MjhlNmUuLmYzMmY2ZjA0NjAgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhy ZWFkL3F0aHJlYWRfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRf cC5oCitAQCAtMTc0LDcgKzE3NCw3IEBAIHB1YmxpYzoKKyAgICAgaW50IHJldHVybkNvZGU7Cisg CisgICAgIHVpbnQgc3RhY2tTaXplOworLSAgICBRVGhyZWFkOjpQcmlvcml0eSBwcmlvcml0eTsK KysgICAgc3RkOjp1bmRlcmx5aW5nX3R5cGU8UVRocmVhZDo6UHJpb3JpdHk+Ojp0eXBlIHByaW9y aXR5OworIAorICAgICBzdGF0aWMgUVRocmVhZCAqdGhyZWFkRm9ySWQoaW50IGlkKTsKKyAKK0BA IC0yMTMsNiArMjEzLDEzIEBAIHB1YmxpYzoKKyAgICAgICAgICAgICBRQ29yZUFwcGxpY2F0aW9u OjppbnN0YW5jZSgpLT5wb3N0RXZlbnQocV9wdHIsIG5ldyBRRXZlbnQoUUV2ZW50OjpRdWl0KSk7 CisgICAgICAgICB9CisgICAgIH0KKysKKysjaWZuZGVmIFFfT1NfSU5URUdSSVRZCisrcHJpdmF0 ZToKKysgICAgLy8gVXNlZCBpbiBRVGhyZWFkKFByaXZhdGUpOjpzdGFydCB0byBhdm9pZCByYWN5 IGFjY2VzcyB0byBRT2JqZWN0OjpvYmplY3ROYW1lLAorKyAgICAvLyB1bnNldCBhZnRlcndhcmRz LiBPbiBJTlRFR1JJVFkgd2Ugc2V0IHRoZSB0aHJlYWQgbmFtZSBiZWZvcmUgc3RhcnRpbmcgaXQu CisrICAgIFFTdHJpbmcgb2JqZWN0TmFtZTsKKysjZW5kaWYKKyB9OworIAorICNlbHNlIC8vIFFU X0NPTkZJRyh0aHJlYWQpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9x dGhyZWFkX3VuaXguY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3VuaXgu Y3BwCitpbmRleCA1NmE4ZTBhMDM4Li42MTAxMTdhNjQwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9jb3JlbGliL3RocmVhZC9xdGhyZWFkX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvdGhyZWFkL3F0aHJlYWRfdW5peC5jcHAKK0BAIC0xNjksOCArMTY5LDcgQEAgc3RhdGljIHZv aWQgc2V0X3RocmVhZF9kYXRhKFFUaHJlYWREYXRhICpkYXRhKQorIAorIHN0YXRpYyB2b2lkIGNs ZWFyX3RocmVhZF9kYXRhKCkKKyB7CistICAgIGN1cnJlbnRUaHJlYWREYXRhID0gbnVsbHB0cjsK Ky0gICAgcHRocmVhZF9zZXRzcGVjaWZpYyhjdXJyZW50X3RocmVhZF9kYXRhX2tleSwgbnVsbHB0 cik7CisrICAgIHNldF90aHJlYWRfZGF0YShudWxscHRyKTsKKyB9CisgCisgdGVtcGxhdGUgPHR5 cGVuYW1lIFQ+CitAQCAtMjk2LDcgKzI5NSw3IEBAIHZvaWQgKlFUaHJlYWRQcml2YXRlOjpzdGFy dCh2b2lkICphcmcpCisgICAgICAgICAgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmdGhyLT5kX2Z1 bmMoKS0+bXV0ZXgpOworIAorICAgICAgICAgICAgIC8vIGRvIHdlIG5lZWQgdG8gcmVzZXQgdGhl IHRocmVhZCBwcmlvcml0eT8KKy0gICAgICAgICAgICBpZiAoaW50KHRoci0+ZF9mdW5jKCktPnBy aW9yaXR5KSAmIFRocmVhZFByaW9yaXR5UmVzZXRGbGFnKSB7CisrICAgICAgICAgICAgaWYgKHRo ci0+ZF9mdW5jKCktPnByaW9yaXR5ICYgVGhyZWFkUHJpb3JpdHlSZXNldEZsYWcpIHsKKyAgICAg ICAgICAgICAgICAgdGhyLT5kX2Z1bmMoKS0+c2V0UHJpb3JpdHkoUVRocmVhZDo6UHJpb3JpdHko dGhyLT5kX2Z1bmMoKS0+cHJpb3JpdHkgJiB+VGhyZWFkUHJpb3JpdHlSZXNldEZsYWcpKTsKKyAg ICAgICAgICAgICB9CisgCitAQCAtMzE2LDEwICszMTUsMTAgQEAgdm9pZCAqUVRocmVhZFByaXZh dGU6OnN0YXJ0KHZvaWQgKmFyZykKKyAgICAgICAgICAgICAvLyBTZXRzIHRoZSBuYW1lIG9mIHRo ZSBjdXJyZW50IHRocmVhZC4gV2UgY2FuIG9ubHkgZG8gdGhpcworICAgICAgICAgICAgIC8vIHdo ZW4gdGhlIHRocmVhZCBpcyBzdGFydGluZywgYXMgd2UgZG9uJ3QgaGF2ZSBhIGNyb3NzCisgICAg ICAgICAgICAgLy8gcGxhdGZvcm0gd2F5IG9mIHNldHRpbmcgdGhlIG5hbWUgb2YgYW4gYXJiaXRy YXJ5IHRocmVhZC4KKy0gICAgICAgICAgICBpZiAoUV9MSUtFTFkodGhyLT5vYmplY3ROYW1lKCku aXNFbXB0eSgpKSkKKysgICAgICAgICAgICBpZiAoUV9MSUtFTFkodGhyLT5kX2Z1bmMoKS0+b2Jq ZWN0TmFtZS5pc0VtcHR5KCkpKQorICAgICAgICAgICAgICAgICBzZXRDdXJyZW50VGhyZWFkTmFt ZSh0aHItPm1ldGFPYmplY3QoKS0+Y2xhc3NOYW1lKCkpOworICAgICAgICAgICAgIGVsc2UKKy0g ICAgICAgICAgICAgICAgc2V0Q3VycmVudFRocmVhZE5hbWUodGhyLT5vYmplY3ROYW1lKCkudG9M b2NhbDhCaXQoKSk7CisrICAgICAgICAgICAgICAgIHNldEN1cnJlbnRUaHJlYWROYW1lKHN0ZDo6 ZXhjaGFuZ2UodGhyLT5kX2Z1bmMoKS0+b2JqZWN0TmFtZSwge30pLnRvTG9jYWw4Qml0KCkpOwor ICAgICAgICAgfQorICNlbmRpZgorIAorQEAgLTY3MSw3ICs2NzAsNyBAQCB2b2lkIFFUaHJlYWQ6 OnN0YXJ0KFByaW9yaXR5IHByaW9yaXR5KQorICAgICAgICAgICAgICAgICAvLyBjb3VsZCBub3Qg c2V0IHNjaGVkdWxpbmcgaGludHMsIGZhbGxiYWNrIHRvIGluaGVyaXRpbmcgdGhlbQorICAgICAg ICAgICAgICAgICAvLyB3ZSdsbCB0cnkgYWdhaW4gZnJvbSBpbnNpZGUgdGhlIHRocmVhZAorICAg ICAgICAgICAgICAgICBwdGhyZWFkX2F0dHJfc2V0aW5oZXJpdHNjaGVkKCZhdHRyLCBQVEhSRUFE X0lOSEVSSVRfU0NIRUQpOworLSAgICAgICAgICAgICAgICBkLT5wcmlvcml0eSA9IFByaW9yaXR5 KHByaW9yaXR5IHwgVGhyZWFkUHJpb3JpdHlSZXNldEZsYWcpOworKyAgICAgICAgICAgICAgICBk LT5wcmlvcml0eSA9IHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlPFFUaHJlYWQ6OlBy aW9yaXR5Pjo6dHlwZT4ocHJpb3JpdHkpIHwgVGhyZWFkUHJpb3JpdHlSZXNldEZsYWc7CisgICAg ICAgICAgICAgfQorICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorQEAgLTcwMiw3ICs3 MDEsMTAgQEAgdm9pZCBRVGhyZWFkOjpzdGFydChQcmlvcml0eSBwcmlvcml0eSkKKyAgICAgICAg IHB0aHJlYWRfYXR0cl9zZXR0aHJlYWRuYW1lKCZhdHRyLCBtZXRhT2JqZWN0KCktPmNsYXNzTmFt ZSgpKTsKKyAgICAgZWxzZQorICAgICAgICAgcHRocmVhZF9hdHRyX3NldHRocmVhZG5hbWUoJmF0 dHIsIG9iamVjdE5hbWUoKS50b0xvY2FsOEJpdCgpKTsKKysjZWxzZQorKyAgICBkLT5vYmplY3RO YW1lID0gb2JqZWN0TmFtZSgpOworICNlbmRpZgorKworICAgICBwdGhyZWFkX3QgdGhyZWFkSWQ7 CisgICAgIGludCBjb2RlID0gcHRocmVhZF9jcmVhdGUoJnRocmVhZElkLCAmYXR0ciwgUVRocmVh ZFByaXZhdGU6OnN0YXJ0LCB0aGlzKTsKKyAgICAgaWYgKGNvZGUgPT0gRVBFUk0pIHsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0aHJlYWRfd2luLmNwcCBiL3F0YmFz ZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF93aW4uY3BwCitpbmRleCBiYzcwZTMxNzhhLi40 ZTc2OTcyNDk4IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RocmVhZC9xdGhyZWFk X3dpbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRocmVhZF93aW4uY3Bw CitAQCAtMzk0LDEwICszOTQsOSBAQCB1bnNpZ25lZCBpbnQgX19zdGRjYWxsIFFUX0VOU1VSRV9T VEFDS19BTElHTkVEX0ZPUl9TU0UgUVRocmVhZFByaXZhdGU6OnN0YXJ0KHZvaQorIAorICNpZiAh ZGVmaW5lZChRVF9OT19ERUJVRykgJiYgZGVmaW5lZChRX0NDX01TVkMpICYmICFkZWZpbmVkKFFf T1NfV0lOUlQpCisgICAgIC8vIHNldHMgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLgor LSAgICBRQnl0ZUFycmF5IG9iamVjdE5hbWUgPSB0aHItPm9iamVjdE5hbWUoKS50b0xvY2FsOEJp dCgpOworLSAgICBxdF9zZXRfdGhyZWFkX25hbWUoSEFORExFKC0xKSwKKy0gICAgICAgICAgICAg ICAgICAgICAgIG9iamVjdE5hbWUuaXNFbXB0eSgpID8KKy0gICAgICAgICAgICAgICAgICAgICAg IHRoci0+bWV0YU9iamVjdCgpLT5jbGFzc05hbWUoKSA6IG9iamVjdE5hbWUuY29uc3REYXRhKCkp OworKyAgICBxdF9zZXRfdGhyZWFkX25hbWUoSEFORExFKC0xKSwgdGhyLT5kX2Z1bmMoKS0+b2Jq ZWN0TmFtZS5pc0VtcHR5KCkKKysgICAgICAgICAgICAgICAgICAgICAgICA/IHRoci0+bWV0YU9i amVjdCgpLT5jbGFzc05hbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgIDogc3RkOjpleGNo YW5nZSh0aHItPmRfZnVuYygpLT5vYmplY3ROYW1lLCB7fSkudG9Mb2NhbDhCaXQoKS5jb25zdERh dGEoKSk7CisgI2VuZGlmCisgCisgICAgIGVtaXQgdGhyLT5zdGFydGVkKFFUaHJlYWQ6OlFQcml2 YXRlU2lnbmFsKCkpOworQEAgLTUwMyw2ICs1MDIsNyBAQCB2b2lkIFFUaHJlYWQ6OnN0YXJ0KFBy aW9yaXR5IHByaW9yaXR5KQorICAgICBpZiAoZC0+cnVubmluZykKKyAgICAgICAgIHJldHVybjsK KyAKKysgICAgZC0+b2JqZWN0TmFtZSA9IG9iamVjdE5hbWUoKTsKKyAgICAgZC0+cnVubmluZyA9 IHRydWU7CisgICAgIGQtPmZpbmlzaGVkID0gZmFsc2U7CisgICAgIGQtPmV4aXRlZCA9IGZhbHNl OworQEAgLTU0OCw3ICs1NDgsNyBAQCB2b2lkIFFUaHJlYWQ6OnN0YXJ0KFByaW9yaXR5IHByaW9y aXR5KQorIAorICAgICBpbnQgcHJpbzsKKyAgICAgZC0+cHJpb3JpdHkgPSBwcmlvcml0eTsKKy0g ICAgc3dpdGNoIChkLT5wcmlvcml0eSkgeworKyAgICBzd2l0Y2ggKHByaW9yaXR5KSB7CisgICAg IGNhc2UgSWRsZVByaW9yaXR5OgorICAgICAgICAgcHJpbyA9IFRIUkVBRF9QUklPUklUWV9JRExF OworICAgICAgICAgYnJlYWs7CitAQCAtNjg2LDcgKzY4Niw3IEBAIHZvaWQgUVRocmVhZFByaXZh dGU6OnNldFByaW9yaXR5KFFUaHJlYWQ6OlByaW9yaXR5IHRocmVhZFByaW9yaXR5KQorIAorICAg ICBpbnQgcHJpbzsKKyAgICAgcHJpb3JpdHkgPSB0aHJlYWRQcmlvcml0eTsKKy0gICAgc3dpdGNo IChwcmlvcml0eSkgeworKyAgICBzd2l0Y2ggKHRocmVhZFByaW9yaXR5KSB7CisgICAgIGNhc2Ug UVRocmVhZDo6SWRsZVByaW9yaXR5OgorICAgICAgICAgcHJpbyA9IFRIUkVBRF9QUklPUklUWV9J RExFOworICAgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Ro cmVhZC9xdHNhbl9pbXBsLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F0c2FuX2ltcGwu aAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjU4MGE3MzhiOTEKKy0t LSAvZGV2L251bGwKKysrKyBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQvcXRzYW5faW1wbC5o CitAQCAtMCwwICsxLDExNSBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5 cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24uCisrKiogQ29weXJpZ2h0IChDKSAyMDIy IEtsYXLDpGx2ZGFsZW5zIERhdGFrb25zdWx0IEFCLCBhIEtEQUIgR3JvdXAgY29tcGFueSwgaW5m b0BrZGFiLmNvbSwgYXV0aG9yIEdpdXNlcHBlIEQnQW5nZWxvIDxnaXVzZXBwZS5kYW5nZWxvQGtk YWIuY29tPgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vuc2luZy8KKysqKgor KyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdENvcmUgbW9kdWxlIG9mIHRoZSBRdCBUb29s a2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBDb21tZXJjaWFsIExp Y2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxp Y2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21t ZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdhcmUg b3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVk IGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBh bnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93 d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1 c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorKyoq CisrKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJu YXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlcgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0 aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQorKyoqIHBhY2thZ2luZyBvZiB0 aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bworKyoq IGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBy ZXF1aXJlbWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy9sZ3BsLTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNh Z2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9y IChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiogUHVibGljIGxpY2Vuc2UgdmVy c2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQorKyoq IFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VO U0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBv ZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZworKyoqIGluZm9ybWF0aW9u IHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdp bGwKKysqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1s IGFuZAorKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgorKyoq CisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysj aWZuZGVmIFFUU0FOX0lNUExfSAorKyNkZWZpbmUgUVRTQU5fSU1QTF9ICisrCisrI2luY2x1ZGUg PFF0Q29yZS9xZ2xvYmFsLmg+CisrCisrI2lmIChfX2hhc19mZWF0dXJlKHRocmVhZF9zYW5pdGl6 ZXIpIHx8IGRlZmluZWQoX19TQU5JVElaRV9USFJFQURfXykpICYmIF9faGFzX2luY2x1ZGUoPHNh bml0aXplci90c2FuX2ludGVyZmFjZS5oPikKKysjICBkZWZpbmUgUVRfQlVJTERJTkdfVU5ERVJf VFNBTgorKyMgIGluY2x1ZGUgPHNhbml0aXplci90c2FuX2ludGVyZmFjZS5oPgorKyNlbmRpZgor KworK1FUX0JFR0lOX05BTUVTUEFDRQorKworK25hbWVzcGFjZSBRdFRzYW4geworKyNpZmRlZiBR VF9CVUlMRElOR19VTkRFUl9UU0FOCisraW5saW5lIHZvaWQgZnV0ZXhBY3F1aXJlKHZvaWQgKmFk ZHIsIHZvaWQgKmFkZHIyID0gbnVsbHB0cikKKyt7CisrICAgIC8vIEEgZnV0ZXggY2FsbCBlbnN1 cmVzIHRvdGFsIG9yZGVyaW5nIG9uIHRoZSBmdXRleCB3b3JkcworKyAgICAvLyAoaW4gZWl0aGVy IHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiB0aGUgY2FsbCkuIEluc3RydWN0IFRTQU4gYWNjb3JkaW5n bHksCisrICAgIC8vIGFzIFRTQU4gZG9lcyBub3QgdW5kZXJzdGFuZCB0aGUgZnV0ZXgoMikgc3lz Y2FsbCAob3IgZXF1aXZhbGVudCkuCisrICAgIDo6X190c2FuX2FjcXVpcmUoYWRkcik7CisrICAg IGlmIChhZGRyMikKKysgICAgICAgIDo6X190c2FuX2FjcXVpcmUoYWRkcjIpOworK30KKysKKytp bmxpbmUgdm9pZCBmdXRleFJlbGVhc2Uodm9pZCAqYWRkciwgdm9pZCAqYWRkcjIgPSBudWxscHRy KQorK3sKKysgICAgaWYgKGFkZHIyKQorKyAgICAgICAgOjpfX3RzYW5fcmVsZWFzZShhZGRyMik7 CisrICAgIDo6X190c2FuX3JlbGVhc2UoYWRkcik7CisrfQorKworK2lubGluZSB2b2lkIG11dGV4 UHJlTG9jayh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncykKKyt7CisrICAgIDo6X190c2FuX211 dGV4X3ByZV9sb2NrKGFkZHIsIGZsYWdzKTsKKyt9CisrCisraW5saW5lIHZvaWQgbXV0ZXhQb3N0 TG9jayh2b2lkICphZGRyLCB1bnNpZ25lZCBmbGFncywgaW50IHJlY3Vyc2lvbikKKyt7CisrICAg IDo6X190c2FuX211dGV4X3Bvc3RfbG9jayhhZGRyLCBmbGFncywgcmVjdXJzaW9uKTsKKyt9Cisr CisraW5saW5lIHZvaWQgbXV0ZXhQcmVVbmxvY2sodm9pZCAqYWRkciwgdW5zaWduZWQgZmxhZ3Mp CisreworKyAgICA6Ol9fdHNhbl9tdXRleF9wcmVfdW5sb2NrKGFkZHIsIGZsYWdzKTsKKyt9Cisr CisraW5saW5lIHZvaWQgbXV0ZXhQb3N0VW5sb2NrKHZvaWQgKmFkZHIsIHVuc2lnbmVkIGZsYWdz KQorK3sKKysgICAgOjpfX3RzYW5fbXV0ZXhfcG9zdF91bmxvY2soYWRkciwgZmxhZ3MpOworK30K KysKKytlbnVtIDogdW5zaWduZWQgeworKyAgICBNdXRleFdyaXRlUmVlbnRyYW50ID0gOjpfX3Rz YW5fbXV0ZXhfd3JpdGVfcmVlbnRyYW50LAorKyAgICBUcnlMb2NrID0gOjpfX3RzYW5fbXV0ZXhf dHJ5X2xvY2ssCisrICAgIFRyeUxvY2tGYWlsZWQgPSA6Ol9fdHNhbl9tdXRleF90cnlfbG9ja19m YWlsZWQsCisrfTsKKysjZWxzZQorK2lubGluZSB2b2lkIGZ1dGV4QWNxdWlyZSh2b2lkICosIHZv aWQgKiA9IG51bGxwdHIpIHt9CisraW5saW5lIHZvaWQgZnV0ZXhSZWxlYXNlKHZvaWQgKiwgdm9p ZCAqID0gbnVsbHB0cikge30KKysKKytlbnVtIDogdW5zaWduZWQgeworKyAgICBNdXRleFdyaXRl UmVlbnRyYW50LAorKyAgICBUcnlMb2NrLAorKyAgICBUcnlMb2NrRmFpbGVkLAorK307CisraW5s aW5lIHZvaWQgbXV0ZXhQcmVMb2NrKHZvaWQgKiwgdW5zaWduZWQpIHt9CisraW5saW5lIHZvaWQg bXV0ZXhQb3N0TG9jayh2b2lkICosIHVuc2lnbmVkLCBpbnQpIHt9CisraW5saW5lIHZvaWQgbXV0 ZXhQcmVVbmxvY2sodm9pZCAqLCB1bnNpZ25lZCkge30KKytpbmxpbmUgdm9pZCBtdXRleFBvc3RV bmxvY2sodm9pZCAqLCB1bnNpZ25lZCkge30KKysjZW5kaWYgLy8gUVRfQlVJTERJTkdfVU5ERVJf VFNBTgorK30gLy8gbmFtZXNwYWNlIFF0VHNhbgorKworK1FUX0VORF9OQU1FU1BBQ0UKKysKKysj ZW5kaWYgLy8gUVRTQU5fSU1QTF9ICitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Ro cmVhZC9xd2FpdGNvbmRpdGlvbl91bml4LmNwcCBiL3F0YmFzZS9zcmMvY29yZWxpYi90aHJlYWQv cXdhaXRjb25kaXRpb25fdW5peC5jcHAKK2luZGV4IDg4YjA1OGY0MTAuLjBmMWRhNGRjOWIgMTAw NjQ0CistLS0gYS9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXgu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGhyZWFkL3F3YWl0Y29uZGl0aW9uX3VuaXgu Y3BwCitAQCAtMjEzLDcgKzIxMyw3IEBAIGJvb2wgUVdhaXRDb25kaXRpb246OndhaXQoUU11dGV4 ICptdXRleCwgUURlYWRsaW5lVGltZXIgZGVhZGxpbmUpCisgeworICAgICBpZiAoISBtdXRleCkK KyAgICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgaWYgKG11dGV4LT5pc1JlY3Vyc2l2ZSgpKSB7 CisrICAgIGlmIChzdGF0aWNfY2FzdDxRQmFzaWNNdXRleCAqPihtdXRleCktPmlzUmVjdXJzaXZl KCkpIHsKKyAgICAgICAgIHFXYXJuaW5nKCJRV2FpdENvbmRpdGlvbjogY2Fubm90IHdhaXQgb24g cmVjdXJzaXZlIG11dGV4ZXMiKTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgfQorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3FkYXRldGltZS5jcHAgYi9xdGJhc2Uv c3JjL2NvcmVsaWIvdGltZS9xZGF0ZXRpbWUuY3BwCitpbmRleCBlYzEyNTY5ZTNmLi4yYzBiMDk4 MDc5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcWRhdGV0aW1lLmNwcAor KysrIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcWRhdGV0aW1lLmNwcAorQEAgLTQzLDYgKzQz LDcgQEAKKyAjaWYgUVRfQ09ORklHKGRhdGV0aW1lcGFyc2VyKQorICNpbmNsdWRlICJwcml2YXRl L3FkYXRldGltZXBhcnNlcl9wLmgiCisgI2VuZGlmCisrI2luY2x1ZGUgPHByaXZhdGUvcW51bWVy aWNfcC5oPgorIAorICNpbmNsdWRlICJxZGF0YXN0cmVhbS5oIgorICNpbmNsdWRlICJxc2V0Lmgi CitAQCAtMTQyOSw5ICsxNDMwLDExIEBAIFFEYXRlIFFEYXRlOjphZGREYXlzKHFpbnQ2NCBuZGF5 cykgY29uc3QKKyAgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICAgcmV0dXJuIFFEYXRlKCk7Cisg CistICAgIC8vIER1ZSB0byBsaW1pdHMgb24gbWluSmQoKSBhbmQgbWF4SmQoKSB3ZSBrbm93IHRo YXQgYW55IG92ZXJmbG93CistICAgIC8vIHdpbGwgYmUgaW52YWxpZCBhbmQgY2F1Z2h0IGJ5IGZy b21KdWxpYW5EYXkoKS4KKy0gICAgcmV0dXJuIGZyb21KdWxpYW5EYXkoamQgKyBuZGF5cyk7Cisr ICAgIHFpbnQ2NCByOworKyAgICBpZiAoUV9VTkxJS0VMWShhZGRfb3ZlcmZsb3coamQsIG5kYXlz LCAmcikpKQorKyAgICAgICAgcmV0dXJuIFFEYXRlKCk7CisrICAgIGVsc2UKKysgICAgICAgIHJl dHVybiBmcm9tSnVsaWFuRGF5KHIpOworIH0KKyAKKyAvKiEKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmUuY3BwIGIvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUv cXRpbWV6b25lLmNwcAoraW5kZXggMDMwOWU0M2U1Mi4uM2Q0NTE2OTZhMSAxMDA2NDQKKy0tLSBh L3F0YmFzZS9zcmMvY29yZWxpYi90aW1lL3F0aW1lem9uZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Y29yZWxpYi90aW1lL3F0aW1lem9uZS5jcHAKK0BAIC0xLDYgKzEsNiBAQAorIC8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisgKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIwMTMgSm9obiBMYXl0IDxqbGF5dEBr ZGUub3JnPgorKyoqIENvcHlyaWdodCAoQykgMjAyMCBKb2huIExheXQgPGpsYXl0QGtkZS5vcmc+ CisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiogVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0Q29yZSBtb2R1bGUgb2YgdGhlIFF0IFRvb2xraXQuCitA QCAtOTc1LDkgKzk3NSwxNSBAQCBRTGlzdDxRQnl0ZUFycmF5PiBRVGltZVpvbmU6OndpbmRvd3NJ ZFRvSWFuYUlkcyhjb25zdCBRQnl0ZUFycmF5ICZ3aW5kb3dzSWQsCisgfQorIAorICNpZm5kZWYg UVRfTk9fREFUQVNUUkVBTQorKy8vIEludmFsaWQsIGFzIGFuIElBTkEgSUQ6IHRvbyBsb25nLCBz dGFydHMgd2l0aCAtIGFuZCBoYXMgb3RoZXIgaW52YWxpZCBjaGFyYWN0ZXJzIGluIGl0Cisrc3Rh dGljIGlubGluZSBRU3RyaW5nIGludmFsaWRJZCgpIHsgcmV0dXJuIFFTdHJpbmdMaXRlcmFsKCIt Tm8gVGltZSBab25lIFNwZWNpZmllZCEiKTsgfQorKworIFFEYXRhU3RyZWFtICZvcGVyYXRvcjw8 KFFEYXRhU3RyZWFtICZkcywgY29uc3QgUVRpbWVab25lICZ0eikKKyB7CistICAgIHR6LmQtPnNl cmlhbGl6ZShkcyk7CisrICAgIGlmICh0ei5pc1ZhbGlkKCkpCisrICAgICAgICB0ei5kLT5zZXJp YWxpemUoZHMpOworKyAgICBlbHNlCisrICAgICAgICBkcyA8PCBpbnZhbGlkSWQoKTsKKyAgICAg cmV0dXJuIGRzOworIH0KKyAKK0BAIC05ODUsNyArOTkxLDkgQEAgUURhdGFTdHJlYW0gJm9wZXJh dG9yPj4oUURhdGFTdHJlYW0gJmRzLCBRVGltZVpvbmUgJnR6KQorIHsKKyAgICAgUVN0cmluZyBp YW5hSWQ7CisgICAgIGRzID4+IGlhbmFJZDsKKy0gICAgaWYgKGlhbmFJZCA9PSBRTGF0aW4xU3Ry aW5nKCJPZmZzZXRGcm9tVXRjIikpIHsKKysgICAgaWYgKGlhbmFJZCA9PSBpbnZhbGlkSWQoKSkg eworKyAgICAgICAgdHogPSBRVGltZVpvbmUoKTsKKysgICAgfSBlbHNlIGlmIChpYW5hSWQgPT0g UUxhdGluMVN0cmluZygiT2Zmc2V0RnJvbVV0YyIpKSB7CisgICAgICAgICBpbnQgdXRjT2Zmc2V0 OworICAgICAgICAgUVN0cmluZyBuYW1lOworICAgICAgICAgUVN0cmluZyBhYmJyZXZpYXRpb247 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3RpbWUvcXRpbWV6b25lcHJpdmF0ZV90 ei5jcHAgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdGltZS9xdGltZXpvbmVwcml2YXRlX3R6LmNwcAor aW5kZXggYjE2MTFkN2RkYi4uYTdhNmE3MmNjZiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29y ZWxpYi90aW1lL3F0aW1lem9uZXByaXZhdGVfdHouY3BwCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVs aWIvdGltZS9xdGltZXpvbmVwcml2YXRlX3R6LmNwcAorQEAgLTQyLDYgKzQyLDcgQEAKKyAjaW5j bHVkZSAicXRpbWV6b25lLmgiCisgI2luY2x1ZGUgInF0aW1lem9uZXByaXZhdGVfcC5oIgorICNp bmNsdWRlICJwcml2YXRlL3Fsb2NhbGVfdG9vbHNfcC5oIgorKyNpbmNsdWRlICJwcml2YXRlL3Fs b2NraW5nX3AuaCIKKyAKKyAjaW5jbHVkZSA8UXRDb3JlL1FEYXRhU3RyZWFtPgorICNpbmNsdWRl IDxRdENvcmUvUURhdGVUaW1lPgorQEAgLTYyLDYgKzYzLDEwIEBACisgCisgUVRfQkVHSU5fTkFN RVNQQUNFCisgCisrI2lmIFFUX0NPTkZJRyhpY3UpCisrc3RhdGljIFFCYXNpY011dGV4IHNfaWN1 X211dGV4OworKyNlbmRpZgorKworIC8qCisgICAgIFByaXZhdGUKKyAKK0BAIC02NzAsNiArNjc1 LDkgQEAgUVR6VGltZVpvbmVQcml2YXRlOjp+UVR6VGltZVpvbmVQcml2YXRlKCkKKyAKKyBRVHpU aW1lWm9uZVByaXZhdGUgKlFUelRpbWVab25lUHJpdmF0ZTo6Y2xvbmUoKSBjb25zdAorIHsKKysj aWYgUVRfQ09ORklHKGljdSkKKysgICAgY29uc3QgYXV0byBsb2NrID0gcXRfc2NvcGVkX2xvY2so c19pY3VfbXV0ZXgpOworKyNlbmRpZgorICAgICByZXR1cm4gbmV3IFFUelRpbWVab25lUHJpdmF0 ZSgqdGhpcyk7CisgfQorIAorQEAgLTkxMywxMiArOTIxLDE0IEBAIFFTdHJpbmcgUVR6VGltZVpv bmVQcml2YXRlOjpkaXNwbGF5TmFtZShxaW50NjQgYXRNU2Vjc1NpbmNlRXBvY2gsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFMb2NhbGUgJmxvY2FsZSkg Y29uc3QKKyB7CisgI2lmIFFUX0NPTkZJRyhpY3UpCisrICAgIGF1dG8gbG9jayA9IHF0X3VuaXF1 ZV9sb2NrKHNfaWN1X211dGV4KTsKKyAgICAgaWYgKCFtX2ljdSkKKyAgICAgICAgIG1faWN1ID0g bmV3IFFJY3VUaW1lWm9uZVByaXZhdGUobV9pZCk7CisgICAgIC8vIFRPRE8gc21hbGwgcmlzayBt YXkgbm90IG1hdGNoIGlmIHRyYW4gdGltZXMgZGlmZmVyIGR1ZSB0byBvdXRkYXRlZCBmaWxlcwor ICAgICAvLyBUT0RPIFNvbWUgdmFsaWQgVFogbmFtZXMgYXJlIG5vdCB2YWxpZCBJQ1UgbmFtZXMs IHVzZSB0cmFuc2xhdGlvbiB0YWJsZT8KKyAgICAgaWYgKG1faWN1LT5pc1ZhbGlkKCkpCisgICAg ICAgICByZXR1cm4gbV9pY3UtPmRpc3BsYXlOYW1lKGF0TVNlY3NTaW5jZUVwb2NoLCBuYW1lVHlw ZSwgbG9jYWxlKTsKKysgICAgbG9jay51bmxvY2soKTsKKyAjZWxzZQorICAgICBRX1VOVVNFRChu YW1lVHlwZSkKKyAgICAgUV9VTlVTRUQobG9jYWxlKQorQEAgLTkzMiwxMiArOTQyLDE0IEBAIFFT dHJpbmcgUVR6VGltZVpvbmVQcml2YXRlOjpkaXNwbGF5TmFtZShRVGltZVpvbmU6OlRpbWVUeXBl IHRpbWVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBRTG9jYWxlICZsb2NhbGUpIGNvbnN0CisgeworICNpZiBRVF9DT05GSUcoaWN1KQorKyAgICBh dXRvIGxvY2sgPSBxdF91bmlxdWVfbG9jayhzX2ljdV9tdXRleCk7CisgICAgIGlmICghbV9pY3Up CisgICAgICAgICBtX2ljdSA9IG5ldyBRSWN1VGltZVpvbmVQcml2YXRlKG1faWQpOworICAgICAv LyBUT0RPIHNtYWxsIHJpc2sgbWF5IG5vdCBtYXRjaCBpZiB0cmFuIHRpbWVzIGRpZmZlciBkdWUg dG8gb3V0ZGF0ZWQgZmlsZXMKKyAgICAgLy8gVE9ETyBTb21lIHZhbGlkIFRaIG5hbWVzIGFyZSBu b3QgdmFsaWQgSUNVIG5hbWVzLCB1c2UgdHJhbnNsYXRpb24gdGFibGU/CisgICAgIGlmIChtX2lj dS0+aXNWYWxpZCgpKQorICAgICAgICAgcmV0dXJuIG1faWN1LT5kaXNwbGF5TmFtZSh0aW1lVHlw ZSwgbmFtZVR5cGUsIGxvY2FsZSk7CisrICAgIGxvY2sudW5sb2NrKCk7CisgI2Vsc2UKKyAgICAg UV9VTlVTRUQodGltZVR5cGUpCisgICAgIFFfVU5VU0VEKG5hbWVUeXBlKQorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvY29yZWxpYi90b29scy9xYXJyYXlkYXRhLmggYi9xdGJhc2Uvc3JjL2NvcmVs aWIvdG9vbHMvcWFycmF5ZGF0YS5oCitpbmRleCBkY2Q5NTkyNGMxLi5kMDE3MzllN2U2IDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FhcnJheWRhdGEuaAorKysrIGIvcXRi YXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FhcnJheWRhdGEuaAorQEAgLTQyLDYgKzQyLDcgQEAKKyAK KyAjaW5jbHVkZSA8UXRDb3JlL3FyZWZjb3VudC5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKysj aW5jbHVkZSA8Y3N0ZGludD4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKK0BAIC01OCwxNCAr NTksMTQgQEAgc3RydWN0IFFfQ09SRV9FWFBPUlQgUUFycmF5RGF0YQorICAgICB7CisgICAgICAg ICBRX0FTU0VSVChzaXplID09IDAKKyAgICAgICAgICAgICAgICAgfHwgb2Zmc2V0IDwgMCB8fCBz aXplX3Qob2Zmc2V0KSA+PSBzaXplb2YoUUFycmF5RGF0YSkpOworLSAgICAgICAgcmV0dXJuIHJl aW50ZXJwcmV0X2Nhc3Q8Y2hhciAqPih0aGlzKSArIG9mZnNldDsKKysgICAgICAgIHJldHVybiBy ZWludGVycHJldF9jYXN0PHZvaWQgKj4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlz KSArIG9mZnNldCk7CisgICAgIH0KKyAKKyAgICAgY29uc3Qgdm9pZCAqZGF0YSgpIGNvbnN0Cisg ICAgIHsKKyAgICAgICAgIFFfQVNTRVJUKHNpemUgPT0gMAorICAgICAgICAgICAgICAgICB8fCBv ZmZzZXQgPCAwIHx8IHNpemVfdChvZmZzZXQpID49IHNpemVvZihRQXJyYXlEYXRhKSk7CistICAg ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KHRoaXMpICsgb2Zmc2V0 OworKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPiAocmVpbnRlcnByZXRf Y2FzdDx1aW50cHRyX3Q+KHRoaXMpICsgb2Zmc2V0KTsKKyAgICAgfQorIAorICAgICAvLyBUaGlz IHJlZmVycyB0byBhcnJheSBkYXRhIG11dGFiaWxpdHksIG5vdCAiaGVhZGVyIGRhdGEiIHJlcHJl c2VudGVkIGJ5CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rvb2xzL3FmcmVlbGlz dF9wLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0X3AuaAoraW5kZXggNWJh MjNiMzQ0Yi4uOTk3NDEwMjEzNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvY29yZWxpYi90b29s cy9xZnJlZWxpc3RfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcWZyZWVsaXN0 X3AuaAorQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBRRnJlZUxpc3QKKyAgICAgICAgICAgICAg ICAgcmV0dXJuIGk7CisgICAgICAgICAgICAgeCAtPSBzaXplOworICAgICAgICAgfQorLSAgICAg ICAgUV9BU1NFUlQoZmFsc2UpOworKyAgICAgICAgUV9VTlJFQUNIQUJMRSgpOworICAgICAgICAg cmV0dXJuIC0xOworICAgICB9CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9jb3JlbGliL3Rv b2xzL3F2ZXJzaW9ubnVtYmVyLmggYi9xdGJhc2Uvc3JjL2NvcmVsaWIvdG9vbHMvcXZlcnNpb25u dW1iZXIuaAoraW5kZXggZDQzYjg2YmE1MS4uMjg0M2YyYjA0MyAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvY29yZWxpYi90b29scy9xdmVyc2lvbm51bWJlci5oCisrKysgYi9xdGJhc2Uvc3JjL2Nv cmVsaWIvdG9vbHMvcXZlcnNpb25udW1iZXIuaAorQEAgLTI3MywxMCArMjczLDEwIEBAIHB1Ymxp YzoKKyAKKyAgICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBRU3RyaW5nIHRvU3Ry aW5nKCkgY29uc3Q7CisgI2lmIFFUX1NUUklOR1ZJRVdfTEVWRUwgPCAyCistICAgIFFfUkVRVUlS RURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgc3RhdGljIFFfREVDTF9QVVJFX0ZVTkNUSU9OIFFWZXJz aW9uTnVtYmVyIGZyb21TdHJpbmcoY29uc3QgUVN0cmluZyAmc3RyaW5nLCBpbnQgKnN1ZmZpeElu ZGV4ID0gbnVsbHB0cik7CisrICAgIFFfUkVRVUlSRURfUkVTVUxUIFFfQ09SRV9FWFBPUlQgc3Rh dGljIFFWZXJzaW9uTnVtYmVyIGZyb21TdHJpbmcoY29uc3QgUVN0cmluZyAmc3RyaW5nLCBpbnQg KnN1ZmZpeEluZGV4ID0gbnVsbHB0cik7CisgI2VuZGlmCistICAgIFFfUkVRVUlSRURfUkVTVUxU IFFfQ09SRV9FWFBPUlQgc3RhdGljIFFfREVDTF9QVVJFX0ZVTkNUSU9OIFFWZXJzaW9uTnVtYmVy IGZyb21TdHJpbmcoUUxhdGluMVN0cmluZyBzdHJpbmcsIGludCAqc3VmZml4SW5kZXggPSBudWxs cHRyKTsKKy0gICAgUV9SRVFVSVJFRF9SRVNVTFQgUV9DT1JFX0VYUE9SVCBzdGF0aWMgUV9ERUNM X1BVUkVfRlVOQ1RJT04gUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhRU3RyaW5nVmlldyBzdHJp bmcsIGludCAqc3VmZml4SW5kZXggPSBudWxscHRyKTsKKysgICAgUV9SRVFVSVJFRF9SRVNVTFQg UV9DT1JFX0VYUE9SVCBzdGF0aWMgUVZlcnNpb25OdW1iZXIgZnJvbVN0cmluZyhRTGF0aW4xU3Ry aW5nIHN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworKyAgICBRX1JFUVVJUkVE X1JFU1VMVCBRX0NPUkVfRVhQT1JUIHN0YXRpYyBRVmVyc2lvbk51bWJlciBmcm9tU3RyaW5nKFFT dHJpbmdWaWV3IHN0cmluZywgaW50ICpzdWZmaXhJbmRleCA9IG51bGxwdHIpOworIAorIHByaXZh dGU6CisgI2lmbmRlZiBRVF9OT19EQVRBU1RSRUFNCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9k YnVzL3FkYnVzaW50ZWdyYXRvci5jcHAgYi9xdGJhc2Uvc3JjL2RidXMvcWRidXNpbnRlZ3JhdG9y LmNwcAoraW5kZXggNWI2NmNlOTcxYi4uMjhhM2IwZmZlYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvZGJ1cy9xZGJ1c2ludGVncmF0b3IuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2RidXMvcWRidXNp bnRlZ3JhdG9yLmNwcAorQEAgLTExMzUsNyArMTEzNSwxMyBAQCB2b2lkIFFEQnVzQ29ubmVjdGlv blByaXZhdGU6OmNsb3NlQ29ubmVjdGlvbigpCisgICAgICAgICB9CisgICAgIH0KKyAKKy0gICAg cURlbGV0ZUFsbChwZW5kaW5nQ2FsbHMpOworKyAgICBmb3IgKGF1dG8gaXQgPSBwZW5kaW5nQ2Fs bHMuYmVnaW4oKTsgaXQgIT0gcGVuZGluZ0NhbGxzLmVuZCgpOyArK2l0KSB7CisrICAgICAgICBh dXRvIGNhbGwgPSAqaXQ7CisrICAgICAgICBpZiAoIWNhbGwtPnJlZi5kZXJlZigpKSB7CisrICAg ICAgICAgICAgZGVsZXRlIGNhbGw7CisrICAgICAgICB9CisrICAgIH0KKysgICAgcGVuZGluZ0Nh bGxzLmNsZWFyKCk7CisgCisgICAgIC8vIERpc2Nvbm5lY3QgYWxsIHNpZ25hbHMgZnJvbSBzaWdu YWwgaG9va3MgYW5kIGZyb20gdGhlIG9iamVjdCB0cmVlIHRvCisgICAgIC8vIGF2b2lkIFFPYmpl Y3Q6OmRlc3Ryb3llZCBiZWluZyBzZW50IHRvIGRidXMgZGFlbW9uIHRocmVhZCB3aGljaCBoYXMK K0BAIC0yNTg0LDYgKzI1OTAsMTEgQEAgUURCdXNDb25uZWN0aW9uUHJpdmF0ZTo6ZmluZE1ldGFP YmplY3QoY29uc3QgUVN0cmluZyAmc2VydmljZSwgY29uc3QgUVN0cmluZyAmcGEKKyAgICAgICAg IGlmIChtbykKKyAgICAgICAgICAgICByZXR1cm4gbW87CisgICAgIH0KKysgICAgaWYgKHBhdGgu aXNFbXB0eSgpKSB7CisrICAgICAgICBlcnJvciA9IFFEQnVzRXJyb3IoUURCdXNFcnJvcjo6SW52 YWxpZE9iamVjdFBhdGgsIFFMYXRpbjFTdHJpbmcoIk9iamVjdCBwYXRoIGNhbm5vdCBiZSBlbXB0 eSIpKTsKKysgICAgICAgIGxhc3RFcnJvciA9IGVycm9yOworKyAgICAgICAgcmV0dXJuIG51bGxw dHI7CisrICAgIH0KKyAKKyAgICAgLy8gaW50cm9zcGVjdCB0aGUgdGFyZ2V0IG9iamVjdAorICAg ICBRREJ1c01lc3NhZ2UgbXNnID0gUURCdXNNZXNzYWdlOjpjcmVhdGVNZXRob2RDYWxsKHNlcnZp Y2UsIHBhdGgsCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9kYnVzL3FkYnVzbWV0YW9iamVjdC5j cHAgYi9xdGJhc2Uvc3JjL2RidXMvcWRidXNtZXRhb2JqZWN0LmNwcAoraW5kZXggNTI2NTU2OGY0 Mi4uN2U5ZjBmMWFjYyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZGJ1cy9xZGJ1c21ldGFvYmpl Y3QuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2RidXMvcWRidXNtZXRhb2JqZWN0LmNwcAorQEAgLTIx MCw2ICsyMTAsOSBAQCBRREJ1c01ldGFPYmplY3RHZW5lcmF0b3I6OmZpbmRUeXBlKGNvbnN0IFFC eXRlQXJyYXkgJnNpZ25hdHVyZSwKKyAgICAgICAgIH0gZWxzZSBpZiAoc2lnbmF0dXJlID09ICJh e3NzfSIpIHsKKyAgICAgICAgICAgICByZXN1bHQubmFtZSA9ICJRTWFwPFFTdHJpbmcsUVN0cmlu Zz4iOworICAgICAgICAgICAgIHR5cGUgPSBxTWV0YVR5cGVJZDxRTWFwPFFTdHJpbmcsIFFTdHJp bmc+ID4oKTsKKysgICAgICAgIH0gZWxzZSBpZiAoc2lnbmF0dXJlID09ICJhYXkiKSB7CisrICAg ICAgICAgICAgcmVzdWx0Lm5hbWUgPSAiUUJ5dGVBcnJheUxpc3QiOworKyAgICAgICAgICAgIHR5 cGUgPSBxTWV0YVR5cGVJZDxRQnl0ZUFycmF5TGlzdD4oKTsKKyAgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICAgcmVzdWx0Lm5hbWUgPSAie0QtQnVzIHR5cGUgXCIiICsgc2lnbmF0dXJlICsg IlwifSI7CisgICAgICAgICAgICAgdHlwZSA9IHJlZ2lzdGVyQ29tcGxleERCdXNUeXBlKHJlc3Vs dC5uYW1lKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9hY2Nlc3NpYmxlL3FhY2Nlc3Np YmxlLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUvcWFjY2Vzc2libGUuY3BwCitpbmRl eCBkNzA1YmZjY2I1Li4wY2FmM2M4MDhjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvYWNj ZXNzaWJsZS9xYWNjZXNzaWJsZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2FjY2Vzc2libGUv cWFjY2Vzc2libGUuY3BwCitAQCAtNTQsNiArNTQsNyBAQAorICNpbmNsdWRlIDxRdENvcmUvcWRl YnVnLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xbG9nZ2luZ2NhdGVnb3J5Lmg+CisgI2luY2x1ZGUg PFF0Q29yZS9xbWV0YW9iamVjdC5oPgorKyNpbmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9xbWV0YW9i amVjdF9wLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xaGFzaC5oPgorICNpbmNsdWRlIDxwcml2YXRl L3FmYWN0b3J5bG9hZGVyX3AuaD4KKyAKK0BAIC02ODEsNiArNjgyLDI1IEBAIFFBY2Nlc3NpYmxl SW50ZXJmYWNlICpRQWNjZXNzaWJsZTo6cXVlcnlBY2Nlc3NpYmxlSW50ZXJmYWNlKFFPYmplY3Qg Km9iamVjdCkKKyAgICAgLy8gQ3JlYXRlIGEgUUFjY2Vzc2libGVJbnRlcmZhY2UgZm9yIHRoZSBv YmplY3QgY2xhc3MuIFN0YXJ0IGJ5IHRoZSBtb3N0CisgICAgIC8vIGRlcml2ZWQgY2xhc3MgYW5k IHdhbGsgdXAgdGhlIGNsYXNzIGhpZXJhcmNoeS4KKyAgICAgY29uc3QgUU1ldGFPYmplY3QgKm1v ID0gb2JqZWN0LT5tZXRhT2JqZWN0KCk7CisrICAgIGNvbnN0IGF1dG8gKm9iamVjdFByaXYgPSBR T2JqZWN0UHJpdmF0ZTo6Z2V0KG9iamVjdCk7CisrICAgIC8qCisrICAgICBXZSBkbyBub3Qgd2Fu dCB0byBjYWNoZSBlYWNoIGFuZCBldmVyeSBRTUwgbWV0YW9iamVjdCAoQnV0dG9uX1FNTFRZUEVf MTI0LAorKyAgICAgQnV0dG9uX1FNTFRZUEVfMTI1LCBldGMuKS4gVGhvc2UgZHluYW1pYyBtZXRh b2JqZWN0cyBzaG91bGRuJ3QgaGF2ZSBhbgorKyAgICAgYWNjZXNzaWJsZSBpbnRlcmZhY2UgaW4g YW55IGNhc2UuIEluc3RlYWQsIHdlIHN0YXJ0IHRoZSB3aG9sZSBjaGVja2luZworKyAgICAgd2l0 aCB0aGUgZmlyc3Qgbm9uLWR5bmFtaWMgbWV0YS1vYmplY3QuIFRvIGF2b2lkIHBvdGVudGlhbCBy ZWdyZXNzaW9ucworKyAgICAgaW4gb3RoZXIgYXJlYXMgb2YgUXQgdGhhdCBhbHNvIHVzZSBkeW5h bWljIG1ldGFvYmplY3RzLCB3ZSBvbmx5IGRvIHRoaXMKKysgICAgIGZvciBvYmplY3RzIHRoYXQg YXJlIFFNTC1yZWxhdGVkIChhcHByb3hpbWF0ZWQgYnkgY2hlY2tpbmcgd2hldGhlciB0aGV5Cisr ICAgICBoYXZlIGRkYXRhIHNldCkuCisrICAgICovCisrICAgIGNvbnN0IGJvb2wgcW1sUmVsYXRl ZCA9ICFvYmplY3RQcml2LT5pc0RlbGV0aW5nQ2hpbGRyZW4gJiYKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgb2JqZWN0UHJpdi0+ZGVjbGFyYXRpdmVEYXRhOworKyAgICB3aGlsZSAocW1s UmVsYXRlZCAmJiBtbykgeworKyAgICAgICAgYXV0byBtb3AgPSBRTWV0YU9iamVjdFByaXZhdGU6 OmdldChtbyk7CisrICAgICAgICBpZiAoIW1vcCB8fCAhKG1vcC0+ZmxhZ3MgJiBEeW5hbWljTWV0 YU9iamVjdCkpCisrICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICBtbyA9IG1vLT5zdXBl ckNsYXNzKCk7CisrICAgIH07CisgICAgIHdoaWxlIChtbykgeworICAgICAgICAgY29uc3QgUVN0 cmluZyBjbiA9IFFMYXRpbjFTdHJpbmcobW8tPmNsYXNzTmFtZSgpKTsKKyAKK0BAIC02OTYsMTQg KzcxNiwxNSBAQCBRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGU6OnF1ZXJ5QWNjZXNz aWJsZUludGVyZmFjZShRT2JqZWN0ICpvYmplY3QpCisgICAgICAgICAvLyBGaW5kIGEgUUFjY2Vz c2libGVQbHVnaW4gKGZhY3RvcnkpIGZvciB0aGUgY2xhc3MgbmFtZS4gSWYgdGhlcmUncworICAg ICAgICAgLy8gbm8gZW50cnkgaW4gdGhlIGNhY2hlIHRyeSB0byBjcmVhdGUgaXQgdXNpbmcgdGhl IHBsdWdpbiBsb2FkZXIuCisgICAgICAgICBpZiAoIXFBY2Nlc3NpYmxlUGx1Z2lucygpLT5jb250 YWlucyhjbikpIHsKKysgICAgICAgICAgICBRQWNjZXNzaWJsZVBsdWdpbiAqZmFjdG9yeSA9IG51 bGxwdHI7IC8vIDAgbWVhbnMgIm5vIHBsdWdpbiBmb3VuZCIuIFRoaXMgaXMgY2FjaGVkIGFzIHdl bGwuCisgICAgICAgICAgICAgY29uc3QgaW50IGluZGV4ID0gbG9hZGVyKCktPmluZGV4T2YoY24p OworLSAgICAgICAgICAgIGlmIChpbmRleCAhPSAtMSkgeworLSAgICAgICAgICAgICAgICBRQWNj ZXNzaWJsZVBsdWdpbiAqZmFjdG9yeSA9IHFvYmplY3RfY2FzdDxRQWNjZXNzaWJsZVBsdWdpbiAq Pihsb2FkZXIoKS0+aW5zdGFuY2UoaW5kZXgpKTsKKy0gICAgICAgICAgICAgICAgcUFjY2Vzc2li bGVQbHVnaW5zKCktPmluc2VydChjbiwgZmFjdG9yeSk7CistICAgICAgICAgICAgfQorKyAgICAg ICAgICAgIGlmIChpbmRleCAhPSAtMSkKKysgICAgICAgICAgICAgICAgZmFjdG9yeSA9IHFvYmpl Y3RfY2FzdDxRQWNjZXNzaWJsZVBsdWdpbiAqPihsb2FkZXIoKS0+aW5zdGFuY2UoaW5kZXgpKTsK KysgICAgICAgICAgICBxQWNjZXNzaWJsZVBsdWdpbnMoKS0+aW5zZXJ0KGNuLCBmYWN0b3J5KTsK KyAgICAgICAgIH0KKyAKKyAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIGNhY2hlIHNob3Vs ZCBjb250YWluIGEgdmFsaWQgZmFjdG9yeSBwb2ludGVyIG9yIDA6CisrICAgICAgICBRX0FTU0VS VChxQWNjZXNzaWJsZVBsdWdpbnMoKS0+Y29udGFpbnMoY24pKTsKKyAgICAgICAgIFFBY2Nlc3Np YmxlUGx1Z2luICpmYWN0b3J5ID0gcUFjY2Vzc2libGVQbHVnaW5zKCktPnZhbHVlKGNuKTsKKyAg ICAgICAgIGlmIChmYWN0b3J5KSB7CisgICAgICAgICAgICAgUUFjY2Vzc2libGVJbnRlcmZhY2Ug KnJlc3VsdCA9IGZhY3RvcnktPmNyZWF0ZShjbiwgb2JqZWN0KTsKK2RpZmYgLS1naXQgYS9xdGJh c2Uvc3JjL2d1aS9jb25maWd1cmUuanNvbiBiL3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3VyZS5qc29u CitpbmRleCAxZjA4Nzk1YzU3Li4xMmM5NTc0MmQyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9n dWkvY29uZmlndXJlLmpzb24KKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2NvbmZpZ3VyZS5qc29uCitA QCAtODM0LDcgKzgzNCw4IEBACisgICAgICAgICAgICAgICAgICAgICAiLy8gZW1iZWRkZWQgZGV2 aWNlcywgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggWC4gRUdMIHN1 cHBvcnQiLAorICAgICAgICAgICAgICAgICAgICAgIi8vIGhhcyB0byBiZSBkaXNhYmxlZCBpbiBw bHVnaW5zIGxpa2UgeGNiIGluIHRoaXMgY2FzZSBzaW5jZSB0aGUgbmF0aXZlIGRpc3BsYXksIiwK KyAgICAgICAgICAgICAgICAgICAgICIvLyB3aW5kb3cgYW5kIHBpeG1hcCB0eXBlcyB3aWxsIGJl IGRpZmZlcmVudCB0aGFuIHdoYXQgYW4gWC1iYXNlZCBwbGF0Zm9ybSIsCistICAgICAgICAgICAg ICAgICAgICAiLy8gcGx1Z2luIHdvdWxkIGV4cGVjdC4iCisrICAgICAgICAgICAgICAgICAgICAi Ly8gcGx1Z2luIHdvdWxkIGV4cGVjdC4iLAorKyAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUg VVNFX1gxMSIKKyAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgImluY2x1ZGUi OiBbICJFR0wvZWdsLmgiLCAiWDExL1hsaWIuaCIgXSwKKyAgICAgICAgICAgICAgICAgIm1haW4i OiBbCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWJtcGhhbmRsZXIuY3BwIGIv cXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWJtcGhhbmRsZXIuY3BwCitpbmRleCA5NmYxZThjYjFkLi4w ZTczYmJiZGIwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWJtcGhhbmRsZXIu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xYm1waGFuZGxlci5jcHAKK0BAIC0xNTAs MTYgKzE1MCw0MiBAQCBzdGF0aWMgUURhdGFTdHJlYW0gJm9wZXJhdG9yPDwoUURhdGFTdHJlYW0g JnMsIGNvbnN0IEJNUF9JTkZPSERSICZiaSkKKyAgICAgcmV0dXJuIHM7CisgfQorIAorLXN0YXRp YyBpbnQgY2FsY19zaGlmdCh1aW50IG1hc2spCisrc3RhdGljIHVpbnQgY2FsY19zaGlmdCh1aW50 IG1hc2spCisgeworLSAgICBpbnQgcmVzdWx0ID0gMDsKKy0gICAgd2hpbGUgKG1hc2sgJiYgISht YXNrICYgMSkpIHsKKysgICAgdWludCByZXN1bHQgPSAwOworKyAgICB3aGlsZSAoKG1hc2sgPj0g MHgxMDApIHx8ICghKG1hc2sgJiAxKSAmJiBtYXNrKSkgeworICAgICAgICAgcmVzdWx0Kys7Cisg ICAgICAgICBtYXNrID4+PSAxOworICAgICB9CisgICAgIHJldHVybiByZXN1bHQ7CisgfQorIAor K3N0YXRpYyB1aW50IGNhbGNfc2NhbGUodWludCBsb3dfbWFzaykKKyt7CisrICAgIHVpbnQgcmVz dWx0ID0gODsKKysgICAgd2hpbGUgKGxvd19tYXNrICYmIHJlc3VsdCkgeworKyAgICAgICAgcmVz dWx0LS07CisrICAgICAgICBsb3dfbWFzayA+Pj0gMTsKKysgICAgfQorKyAgICByZXR1cm4gcmVz dWx0OworK30KKysKKytzdGF0aWMgaW5saW5lIHVpbnQgYXBwbHlfc2NhbGUodWludCB2YWx1ZSwg dWludCBzY2FsZSkKKyt7CisrICAgIGlmICghKHNjYWxlICYgMHgwNykpIC8vIHJldHVybiBpbW1l ZGlhdGVseSBpZiBzY2FsZSA9PSA4IG9yIDAKKysgICAgICAgIHJldHVybiB2YWx1ZTsKKysKKysg ICAgdWludCBmaWxsZWQgPSA4IC0gc2NhbGU7CisrICAgIHVpbnQgcmVzdWx0ID0gdmFsdWUgPDwg c2NhbGU7CisrCisrICAgIGRvIHsKKysgICAgICAgIHJlc3VsdCB8PSByZXN1bHQgPj4gZmlsbGVk OworKyAgICAgICAgZmlsbGVkIDw8PSAxOworKyAgICB9IHdoaWxlIChmaWxsZWQgPCA4KTsKKysK KysgICAgcmV0dXJuIHJlc3VsdDsKKyt9CisrCisgc3RhdGljIGJvb2wgcmVhZF9kaWJfZmlsZWhl YWRlcihRRGF0YVN0cmVhbSAmcywgQk1QX0ZJTEVIRFIgJmJmKQorIHsKKyAgICAgLy8gcmVhZCBC TVAgZmlsZSBoZWFkZXIKK0BAIC0yMjIsMTQgKzI0OCwxNCBAQCBzdGF0aWMgYm9vbCByZWFkX2Rp Yl9ib2R5KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBfSU5GT0hEUiAmYmksIHFpbnQ2NCBvZmZz ZXQsCisgICAgIHVpbnQgZ3JlZW5fbWFzayA9IDA7CisgICAgIHVpbnQgYmx1ZV9tYXNrID0gMDsK KyAgICAgdWludCBhbHBoYV9tYXNrID0gMDsKKy0gICAgaW50IHJlZF9zaGlmdCA9IDA7CistICAg IGludCBncmVlbl9zaGlmdCA9IDA7CistICAgIGludCBibHVlX3NoaWZ0ID0gMDsKKy0gICAgaW50 IGFscGhhX3NoaWZ0ID0gMDsKKy0gICAgaW50IHJlZF9zY2FsZSA9IDA7CistICAgIGludCBncmVl bl9zY2FsZSA9IDA7CistICAgIGludCBibHVlX3NjYWxlID0gMDsKKy0gICAgaW50IGFscGhhX3Nj YWxlID0gMDsKKysgICAgdWludCByZWRfc2hpZnQgPSAwOworKyAgICB1aW50IGdyZWVuX3NoaWZ0 ID0gMDsKKysgICAgdWludCBibHVlX3NoaWZ0ID0gMDsKKysgICAgdWludCBhbHBoYV9zaGlmdCA9 IDA7CisrICAgIHVpbnQgcmVkX3NjYWxlID0gMDsKKysgICAgdWludCBncmVlbl9zY2FsZSA9IDA7 CisrICAgIHVpbnQgYmx1ZV9zY2FsZSA9IDA7CisrICAgIHVpbnQgYWxwaGFfc2NhbGUgPSAwOwor IAorICAgICBpZiAoIWQtPmlzU2VxdWVudGlhbCgpKQorICAgICAgICAgZC0+c2VlayhzdGFydHBv cyArIEJNUF9GSUxFSERSX1NJWkUgKyBiaS5iaVNpemUpOyAvLyBnb3RvIHN0YXJ0IG9mIGNvbG9y bWFwIG9yIG1hc2tzCitAQCAtMzA4LDE5ICszMzQsMTkgQEAgc3RhdGljIGJvb2wgcmVhZF9kaWJf Ym9keShRRGF0YVN0cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0 LAorICAgICAgICAgcmVkX3NoaWZ0ID0gY2FsY19zaGlmdChyZWRfbWFzayk7CisgICAgICAgICBp ZiAoKChyZWRfbWFzayA+PiByZWRfc2hpZnQpICsgMSkgPT0gMCkKKyAgICAgICAgICAgICByZXR1 cm4gZmFsc2U7CistICAgICAgICByZWRfc2NhbGUgPSAyNTYgLyAoKHJlZF9tYXNrID4+IHJlZF9z aGlmdCkgKyAxKTsKKysgICAgICAgIHJlZF9zY2FsZSA9IGNhbGNfc2NhbGUocmVkX21hc2sgPj4g cmVkX3NoaWZ0KTsKKyAgICAgICAgIGdyZWVuX3NoaWZ0ID0gY2FsY19zaGlmdChncmVlbl9tYXNr KTsKKyAgICAgICAgIGlmICgoKGdyZWVuX21hc2sgPj4gZ3JlZW5fc2hpZnQpICsgMSkgPT0gMCkK KyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CistICAgICAgICBncmVlbl9zY2FsZSA9IDI1NiAv ICgoZ3JlZW5fbWFzayA+PiBncmVlbl9zaGlmdCkgKyAxKTsKKysgICAgICAgIGdyZWVuX3NjYWxl ID0gY2FsY19zY2FsZShncmVlbl9tYXNrID4+IGdyZWVuX3NoaWZ0KTsKKyAgICAgICAgIGJsdWVf c2hpZnQgPSBjYWxjX3NoaWZ0KGJsdWVfbWFzayk7CisgICAgICAgICBpZiAoKChibHVlX21hc2sg Pj4gYmx1ZV9zaGlmdCkgKyAxKSA9PSAwKQorICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKy0g ICAgICAgIGJsdWVfc2NhbGUgPSAyNTYgLyAoKGJsdWVfbWFzayA+PiBibHVlX3NoaWZ0KSArIDEp OworKyAgICAgICAgYmx1ZV9zY2FsZSA9IGNhbGNfc2NhbGUoYmx1ZV9tYXNrID4+IGJsdWVfc2hp ZnQpOworICAgICAgICAgYWxwaGFfc2hpZnQgPSBjYWxjX3NoaWZ0KGFscGhhX21hc2spOworICAg ICAgICAgaWYgKCgoYWxwaGFfbWFzayA+PiBhbHBoYV9zaGlmdCkgKyAxKSA9PSAwKQorICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKKy0gICAgICAgIGFscGhhX3NjYWxlID0gMjU2IC8gKChhbHBo YV9tYXNrID4+IGFscGhhX3NoaWZ0KSArIDEpOworKyAgICAgICAgYWxwaGFfc2NhbGUgPSBjYWxj X3NjYWxlKGFscGhhX21hc2sgPj4gYWxwaGFfc2hpZnQpOworICAgICB9IGVsc2UgaWYgKGNvbXAg PT0gQk1QX1JHQiAmJiAobmJpdHMgPT0gMjQgfHwgbmJpdHMgPT0gMzIpKSB7CisgICAgICAgICBi bHVlX21hc2sgPSAweDAwMDAwMGZmOworICAgICAgICAgZ3JlZW5fbWFzayA9IDB4MDAwMGZmMDA7 CitAQCAtMzI4LDE3ICszNTQsMTUgQEAgc3RhdGljIGJvb2wgcmVhZF9kaWJfYm9keShRRGF0YVN0 cmVhbSAmcywgY29uc3QgQk1QX0lORk9IRFIgJmJpLCBxaW50NjQgb2Zmc2V0LAorICAgICAgICAg Ymx1ZV9zaGlmdCA9IDA7CisgICAgICAgICBncmVlbl9zaGlmdCA9IDg7CisgICAgICAgICByZWRf c2hpZnQgPSAxNjsKKy0gICAgICAgIGJsdWVfc2NhbGUgPSBncmVlbl9zY2FsZSA9IHJlZF9zY2Fs ZSA9IDE7CisrICAgICAgICBibHVlX3NjYWxlID0gZ3JlZW5fc2NhbGUgPSByZWRfc2NhbGUgPSAw OworICAgICB9IGVsc2UgaWYgKGNvbXAgPT0gQk1QX1JHQiAmJiBuYml0cyA9PSAxNikgeworICAg ICAgICAgYmx1ZV9tYXNrID0gMHgwMDFmOworICAgICAgICAgZ3JlZW5fbWFzayA9IDB4MDNlMDsK KyAgICAgICAgIHJlZF9tYXNrID0gMHg3YzAwOworICAgICAgICAgYmx1ZV9zaGlmdCA9IDA7Cist ICAgICAgICBncmVlbl9zaGlmdCA9IDI7CistICAgICAgICByZWRfc2hpZnQgPSA3OworLSAgICAg ICAgcmVkX3NjYWxlID0gMTsKKy0gICAgICAgIGdyZWVuX3NjYWxlID0gMTsKKy0gICAgICAgIGJs dWVfc2NhbGUgPSA4OworKyAgICAgICAgZ3JlZW5fc2hpZnQgPSA1OworKyAgICAgICAgcmVkX3No aWZ0ID0gMTA7CisrICAgICAgICBibHVlX3NjYWxlID0gZ3JlZW5fc2NhbGUgPSByZWRfc2NhbGUg PSAzOworICAgICB9CisgCisgI2lmIDAKK0BAIC01NDQsMTAgKzU2OCwxMCBAQCBzdGF0aWMgYm9v bCByZWFkX2RpYl9ib2R5KFFEYXRhU3RyZWFtICZzLCBjb25zdCBCTVBfSU5GT0hEUiAmYmksIHFp bnQ2NCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICBjIHw9ICoodWNoYXIqKShiKzIpPDwx NjsKKyAgICAgICAgICAgICAgICAgaWYgKG5iaXRzID4gMjQpCisgICAgICAgICAgICAgICAgICAg ICBjIHw9ICoodWNoYXIqKShiKzMpPDwyNDsKKy0gICAgICAgICAgICAgICAgKnArKyA9IHFSZ2Jh KCgoYyAmIHJlZF9tYXNrKSA+PiByZWRfc2hpZnQpICogcmVkX3NjYWxlLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGMgJiBncmVlbl9tYXNrKSA+PiBncmVlbl9z aGlmdCkgKiBncmVlbl9zY2FsZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKChjICYgYmx1ZV9tYXNrKSA+PiBibHVlX3NoaWZ0KSAqIGJsdWVfc2NhbGUsCistICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcCA/ICgoYyAmIGFscGhh X21hc2spID4+IGFscGhhX3NoaWZ0KSAqIGFscGhhX3NjYWxlIDogMHhmZik7CisrICAgICAgICAg ICAgICAgICpwKysgPSBxUmdiYShhcHBseV9zY2FsZSgoYyAmIHJlZF9tYXNrKSA+PiByZWRfc2hp ZnQsIHJlZF9zY2FsZSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBseV9zY2Fs ZSgoYyAmIGdyZWVuX21hc2spID4+IGdyZWVuX3NoaWZ0LCBncmVlbl9zY2FsZSksCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhcHBseV9zY2FsZSgoYyAmIGJsdWVfbWFzaykgPj4gYmx1 ZV9zaGlmdCwgYmx1ZV9zY2FsZSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFu c3AgPyBhcHBseV9zY2FsZSgoYyAmIGFscGhhX21hc2spID4+IGFscGhhX3NoaWZ0LCBhbHBoYV9z Y2FsZSkgOiAweGZmKTsKKyAgICAgICAgICAgICAgICAgYiArPSBuYml0cy84OworICAgICAgICAg ICAgIH0KKyAgICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9pbWFnZS9xaW1h Z2UuY3BwIGIvcXRiYXNlL3NyYy9ndWkvaW1hZ2UvcWltYWdlLmNwcAoraW5kZXggNzE1MmFjMTYw Ny4uMGRmNzcyNTY0YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FpbWFnZS5j cHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2ltYWdlL3FpbWFnZS5jcHAKK0BAIC00Njk0LDYgKzQ2 OTQsOCBAQCBRSW1hZ2UgUUltYWdlOjpzbW9vdGhTY2FsZWQoaW50IHcsIGludCBoKSBjb25zdCB7 Cisgc3RhdGljIFFJbWFnZSByb3RhdGVkOTAoY29uc3QgUUltYWdlICZpbWFnZSkKKyB7CisgICAg IFFJbWFnZSBvdXQoaW1hZ2UuaGVpZ2h0KCksIGltYWdlLndpZHRoKCksIGltYWdlLmZvcm1hdCgp KTsKKysgICAgaWYgKG91dC5pc051bGwoKSkKKysgICAgICAgIHJldHVybiBvdXQ7CisgICAgIGNv cHlNZXRhZGF0YSgmb3V0LCBpbWFnZSk7CisgICAgIGlmIChpbWFnZS5jb2xvckNvdW50KCkgPiAw KQorICAgICAgICAgb3V0LnNldENvbG9yVGFibGUoaW1hZ2UuY29sb3JUYWJsZSgpKTsKK0BAIC00 NzIyLDYgKzQ3MjQsOCBAQCBzdGF0aWMgUUltYWdlIHJvdGF0ZWQxODAoY29uc3QgUUltYWdlICZp bWFnZSkKKyAgICAgICAgIHJldHVybiBpbWFnZS5taXJyb3JlZCh0cnVlLCB0cnVlKTsKKyAKKyAg ICAgUUltYWdlIG91dChpbWFnZS53aWR0aCgpLCBpbWFnZS5oZWlnaHQoKSwgaW1hZ2UuZm9ybWF0 KCkpOworKyAgICBpZiAob3V0LmlzTnVsbCgpKQorKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICAg Y29weU1ldGFkYXRhKCZvdXQsIGltYWdlKTsKKyAgICAgaWYgKGltYWdlLmNvbG9yQ291bnQoKSA+ IDApCisgICAgICAgICBvdXQuc2V0Q29sb3JUYWJsZShpbWFnZS5jb2xvclRhYmxlKCkpOworQEAg LTQ3MzQsNiArNDczOCw4IEBAIHN0YXRpYyBRSW1hZ2Ugcm90YXRlZDE4MChjb25zdCBRSW1hZ2Ug JmltYWdlKQorIHN0YXRpYyBRSW1hZ2Ugcm90YXRlZDI3MChjb25zdCBRSW1hZ2UgJmltYWdlKQor IHsKKyAgICAgUUltYWdlIG91dChpbWFnZS5oZWlnaHQoKSwgaW1hZ2Uud2lkdGgoKSwgaW1hZ2Uu Zm9ybWF0KCkpOworKyAgICBpZiAob3V0LmlzTnVsbCgpKQorKyAgICAgICAgcmV0dXJuIG91dDsK KyAgICAgY29weU1ldGFkYXRhKCZvdXQsIGltYWdlKTsKKyAgICAgaWYgKGltYWdlLmNvbG9yQ291 bnQoKSA+IDApCisgICAgICAgICBvdXQuc2V0Q29sb3JUYWJsZShpbWFnZS5jb2xvclRhYmxlKCkp OworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xY3Vyc29yLmNwcCBiL3F0YmFz ZS9zcmMvZ3VpL2tlcm5lbC9xY3Vyc29yLmNwcAoraW5kZXggZDZjY2FmZjhlZC4uNDU1MDg4MjQx YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xY3Vyc29yLmNwcAorKysrIGIv cXRiYXNlL3NyYy9ndWkva2VybmVsL3FjdXJzb3IuY3BwCitAQCAtMjUxLDcgKzI1MSw4IEBAIHZv aWQgUUN1cnNvcjo6c2V0UG9zKFFTY3JlZW4gKnNjcmVlbiwgaW50IHgsIGludCB5KQorIHsKKyAg ICAgaWYgKHNjcmVlbikgeworICAgICAgICAgaWYgKFFQbGF0Zm9ybUN1cnNvciAqY3Vyc29yID0g c2NyZWVuLT5oYW5kbGUoKS0+Y3Vyc29yKCkpIHsKKy0gICAgICAgICAgICBjb25zdCBRUG9pbnQg ZGV2aWNlUG9zID0gUUhpZ2hEcGk6OnRvTmF0aXZlUGl4ZWxzKFFQb2ludCh4LCB5KSwgc2NyZWVu KTsKKysgICAgICAgICAgICBjb25zdCBRUG9pbnQgcG9zKHgsIHkpOworKyAgICAgICAgICAgIGNv bnN0IFFQb2ludCBkZXZpY2VQb3MgPSBRSGlnaERwaTo6dG9OYXRpdmVQaXhlbHMocG9zLCBzY3Jl ZW4tPnZpcnR1YWxTaWJsaW5nQXQocG9zKSk7CisgICAgICAgICAgICAgLy8gTmVlZCB0byBjaGVj aywgc2luY2Ugc29tZSBYIHNlcnZlcnMgZ2VuZXJhdGUgbnVsbCBtb3VzZSBtb3ZlCisgICAgICAg ICAgICAgLy8gZXZlbnRzLCBjYXVzaW5nIGxvb3BpbmcgaW4gYXBwbGljYXRpb25zIHdoaWNoIGNh bGwgc2V0UG9zKCkgb24KKyAgICAgICAgICAgICAvLyBldmVyeSBtb3VzZSBtb3ZlIGV2ZW50Lgor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xaGlnaGRwaXNjYWxpbmcuY3BwIGIv cXRiYXNlL3NyYy9ndWkva2VybmVsL3FoaWdoZHBpc2NhbGluZy5jcHAKK2luZGV4IDliYmYyNzcz YTkuLjNhYzRhNGQ4YjYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWhpZ2hk cGlzY2FsaW5nLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FoaWdoZHBpc2NhbGlu Zy5jcHAKK0BAIC01ODAsOSArNTgwLDggQEAgdm9pZCBRSGlnaERwaVNjYWxpbmc6OnNldFNjcmVl bkZhY3RvcihRU2NyZWVuICpzY3JlZW4sIHFyZWFsIGZhY3RvcikKKyAgICAgZWxzZQorICAgICAg ICAgcU5hbWVkU2NyZWVuU2NhbGVGYWN0b3JzKCktPmluc2VydChuYW1lLCBmYWN0b3IpOworIAor LSAgICAvLyBoYWNrIHRvIGZvcmNlIHJlLWV2YWx1YXRpb24gb2Ygc2NyZWVuIGdlb21ldHJ5Cisg ICAgIGlmIChzY3JlZW4tPmhhbmRsZSgpKQorLSAgICAgICAgc2NyZWVuLT5kX2Z1bmMoKS0+c2V0 UGxhdGZvcm1TY3JlZW4oc2NyZWVuLT5oYW5kbGUoKSk7IC8vIHVwZGF0ZXMgZ2VvbWV0cmllcyBi YXNlZCBvbiBzY2FsZSBmYWN0b3IKKysgICAgICAgIHNjcmVlbi0+ZF9mdW5jKCktPnVwZGF0ZUxv Z2ljYWxEcGkoKTsKKyB9CisgCisgUVBvaW50IFFIaWdoRHBpU2NhbGluZzo6bWFwUG9zaXRpb25U b05hdGl2ZShjb25zdCBRUG9pbnQgJnBvcywgY29uc3QgUVBsYXRmb3JtU2NyZWVuICpwbGF0Zm9y bVNjcmVlbikKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcWtleXNlcXVlbmNl LmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2UuY3BwCitpbmRleCBhNzVi OGVmOTIwLi40ZjJkMjk0NzM5IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3Fr ZXlzZXF1ZW5jZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xa2V5c2VxdWVuY2Uu Y3BwCitAQCAtNzAxLDYgKzcwMSwxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsKKyAgICAgeyBR dDo6S2V5X1RvdWNocGFkVG9nZ2xlLCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJU b3VjaHBhZCBUb2dnbGUiKSB9LAorICAgICB7IFF0OjpLZXlfVG91Y2hwYWRPbiwgIFFUX1RSQU5T TEFURV9OT09QKCJRU2hvcnRjdXQiLCAiVG91Y2hwYWQgT24iKSB9LAorICAgICB7IFF0OjpLZXlf VG91Y2hwYWRPZmYsICBRVF9UUkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIlRvdWNocGFkIE9m ZiIpIH0sCisrICAgIHsgUXQ6OktleV9TaGlmdCwgIFFUX1RSQU5TTEFURV9OT09QKCJRU2hvcnRj dXQiLCAiU2hpZnQiKSB9LAorKyAgICB7IFF0OjpLZXlfQ29udHJvbCwgIFFUX1RSQU5TTEFURV9O T09QKCJRU2hvcnRjdXQiLCAiQ29udHJvbCIpIH0sCisrICAgIHsgUXQ6OktleV9BbHQsICBRVF9U UkFOU0xBVEVfTk9PUCgiUVNob3J0Y3V0IiwgIkFsdCIpIH0sCisrICAgIHsgUXQ6OktleV9NZXRh LCAgUVRfVFJBTlNMQVRFX05PT1AoIlFTaG9ydGN1dCIsICJNZXRhIikgfSwKKyAKKyB9OworIHN0 YXRpYyBRX0NPTlNURVhQUiBpbnQgbnVtS2V5TmFtZXMgPSBzaXplb2Yga2V5bmFtZSAvIHNpemVv ZiAqa2V5bmFtZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3Jt c2VydmljZXMuY3BwIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmNw cAoraW5kZXggZmRjNmE2YzRhYS4uYWM0N2Y5OGM1ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Z3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL2tl cm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5jcHAKK0BAIC01NSw2ICs1NSwxOSBAQCBRVF9CRUdJTl9O QU1FU1BBQ0UKKyAgICAgXGJyaWVmIFRoZSBRUGxhdGZvcm1TZXJ2aWNlcyBwcm92aWRlcyB0aGUg YmFja2VuZCBmb3IgZGVza3RvcC1yZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCisgKi8KKyAKKysvKiEK KysgICAgXGVudW0gUVBsYXRmb3JtU2VydmljZXM6OkNhcGFiaWxpdHkKKysKKysgICAgQ2FwYWJp bGl0aWVzIGFyZSB1c2VkIHRvIGRldGVybWluZSBhIHNwZWNpZmljIHBsYXRmb3JtIHNlcnZpY2Un cyBhdmFpbGFiaWxpdHkuCisrCisrICAgIFx2YWx1ZSBDb2xvclBpY2tpbmdGcm9tU2NyZWVuIFRo ZSBwbGF0Zm9ybSBuYXRpdmVseSBzdXBwb3J0cyBjb2xvciBwaWNraW5nIGZyb20gc2NyZWVuLgor KyAgICBUaGlzIGNhcGFiaWxpdHkgaW5kaWNhdGVzIHRoYXQgdGhlIHBsYXRmb3JtIHN1cHBvcnRz ICJvcGFxdWUiIGNvbG9yIHBpY2tpbmcsIHdoZXJlIHRoZQorKyAgICBwbGF0Zm9ybSBpbXBsZW1l bnRzIGEgY29tcGxldGUgdXNlciBleHBlcmllbmNlIGZvciBjb2xvciBwaWNraW5nIGFuZCBvdXRw dXRzIGEgY29sb3IuCisrICAgIFRoaXMgaXMgaW4gY29udHJhc3QgdG8gdGhlIGFwcGxpY2F0aW9u IGltcGxlbWVudGluZyB0aGUgY29sb3IgcGlja2luZyB1c2VyIGV4cGVyaWVuY2UKKysgICAgKHRh a2luZyBjYXJlIG9mIHNob3dpbmcgYSBjcm9zcyBoYWlyLCBpbnN0cnVjdGluZyB0aGUgcGxhdGZv cm0gaW50ZWdyYXRpb24gdG8gb2J0YWluCisrICAgIHRoZSBjb2xvciBhdCBhIGdpdmVuIHBpeGVs LCBldGMuKS4gVGhlIHJlbGF0ZWQgc2VydmljZSBmdW5jdGlvbiBpcyBwaWNrQ29sb3IoKS4KKysg Ki8KKysKKyBRUGxhdGZvcm1TZXJ2aWNlczo6UVBsYXRmb3JtU2VydmljZXMoKQorIHsgfQorIAor QEAgLTg1LDUgKzk4LDE2IEBAIFFCeXRlQXJyYXkgUVBsYXRmb3JtU2VydmljZXM6OmRlc2t0b3BF bnZpcm9ubWVudCgpIGNvbnN0CisgICAgIHJldHVybiBRQnl0ZUFycmF5KCJVTktOT1dOIik7Cisg fQorIAorK1FQbGF0Zm9ybVNlcnZpY2VDb2xvclBpY2tlciAqUVBsYXRmb3JtU2VydmljZXM6OmNv bG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCkKKyt7CisrICAgIFFfVU5VU0VEKHBhcmVudCk7Cisr ICAgIHJldHVybiBudWxscHRyOworK30KKysKKytib29sIFFQbGF0Zm9ybVNlcnZpY2VzOjpoYXND YXBhYmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkgY29uc3QKKyt7CisrICAgIFFfVU5VU0VE KGNhcGFiaWxpdHkpCisrICAgIHJldHVybiBmYWxzZTsKKyt9CisgCisgUVRfRU5EX05BTUVTUEFD RQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm1zZXJ2aWNlcy5o IGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNlcnZpY2VzLmgKK2luZGV4IDVkZTk2 Y2ZhN2QuLmE4YjJhNGNlNzEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBs YXRmb3Jtc2VydmljZXMuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXNl cnZpY2VzLmgKK0BAIC01MCwxNiArNTAsMzIgQEAKKyAvLworIAorICNpbmNsdWRlIDxRdEd1aS9x dGd1aWdsb2JhbC5oPgorKyNpbmNsdWRlIDxRdENvcmUvcW9iamVjdC5oPgorIAorIFFUX0JFR0lO X05BTUVTUEFDRQorIAorIGNsYXNzIFFVcmw7CisrY2xhc3MgUVdpbmRvdzsKKysKKytjbGFzcyBR X0dVSV9FWFBPUlQgUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyIDogcHVibGljIFFPYmplY3QK Kyt7CisrICAgIFFfT0JKRUNUCisrcHVibGljOgorKyAgICB1c2luZyBRT2JqZWN0OjpRT2JqZWN0 OworKyAgICB2aXJ0dWFsIHZvaWQgcGlja0NvbG9yKCkgPSAwOworK1FfU0lHTkFMUzoKKysgICAg dm9pZCBjb2xvclBpY2tlZChjb25zdCBRQ29sb3IgJmNvbG9yKTsKKyt9OworIAorIGNsYXNzIFFf R1VJX0VYUE9SVCBRUGxhdGZvcm1TZXJ2aWNlcworIHsKKyBwdWJsaWM6CisgICAgIFFfRElTQUJM RV9DT1BZX01PVkUoUVBsYXRmb3JtU2VydmljZXMpCisgCisrICAgIGVudW0gQ2FwYWJpbGl0eSB7 CisrICAgICAgICBDb2xvclBpY2tpbmcsCisrICAgIH07CisrCisgICAgIFFQbGF0Zm9ybVNlcnZp Y2VzKCk7CisgICAgIHZpcnR1YWwgflFQbGF0Zm9ybVNlcnZpY2VzKCkgeyB9CisgCitAQCAtNjcs NiArODMsMTAgQEAgcHVibGljOgorICAgICB2aXJ0dWFsIGJvb2wgb3BlbkRvY3VtZW50KGNvbnN0 IFFVcmwgJnVybCk7CisgCisgICAgIHZpcnR1YWwgUUJ5dGVBcnJheSBkZXNrdG9wRW52aXJvbm1l bnQoKSBjb25zdDsKKysKKysgICAgdmlydHVhbCBib29sIGhhc0NhcGFiaWxpdHkoQ2FwYWJpbGl0 eSBjYXBhYmlsaXR5KSBjb25zdDsKKysKKysgICAgdmlydHVhbCBRUGxhdGZvcm1TZXJ2aWNlQ29s b3JQaWNrZXIgKmNvbG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCA9IG51bGxwdHIpOworIH07Cisg CisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9x cGxhdGZvcm10aGVtZS5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUu Y3BwCitpbmRleCA3MTUyMWMwMzM5Li4yMzI1ODczMjQ1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2Vy bmVsL3FwbGF0Zm9ybXRoZW1lLmNwcAorQEAgLTE2Myw2ICsxNjMsOCBAQCBRVF9CRUdJTl9OQU1F U1BBQ0UKKyAKKyAgICAgXHZhbHVlIFNob3dTaG9ydGN1dHNJbkNvbnRleHRNZW51cyAoYm9vbCkg V2hldGhlciB0byBkaXNwbGF5IHNob3J0Y3V0IGtleSBzZXF1ZW5jZXMgaW4gY29udGV4dCBtZW51 cy4KKyAKKysgICAgXHZhbHVlIEJ1dHRvblByZXNzS2V5cyAoUUxpc3Q8UXQ6OktleT4pIEEgbGlz dCBvZiBrZXlzIHRoYXQgY2FuIGJlIHVzZWQgdG8gcHJlc3MgYnV0dG9ucyB2aWEga2V5Ym9hcmQg aW5wdXQuCisrCisgICAgIFxzYSB0aGVtZUhpbnQoKSwgUVN0eWxlOjpwaXhlbE1ldHJpYygpCisg Ki8KKyAKK0BAIC01NjMsNiArNTY1LDggQEAgUVZhcmlhbnQgUVBsYXRmb3JtVGhlbWU6OmRlZmF1 bHRUaGVtZUhpbnQoVGhlbWVIaW50IGhpbnQpCisgICAgICAgICB9CisgICAgIGNhc2UgTW91c2VR dWlja1NlbGVjdGlvblRocmVzaG9sZDoKKyAgICAgICAgIHJldHVybiBRVmFyaWFudCgxMCk7Cisr ICAgIGNhc2UgQnV0dG9uUHJlc3NLZXlzOgorKyAgICAgICAgcmV0dXJuIFFWYXJpYW50Ojpmcm9t VmFsdWUoUUxpc3Q8UXQ6OktleT4oeyBRdDo6S2V5X1NwYWNlLCBRdDo6S2V5X1NlbGVjdCB9KSk7 CisgICAgIH0KKyAgICAgcmV0dXJuIFFWYXJpYW50KCk7CisgfQorZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvZ3VpL2tlcm5lbC9xcGxhdGZvcm10aGVtZS5oIGIvcXRiYXNlL3NyYy9ndWkva2VybmVs L3FwbGF0Zm9ybXRoZW1lLmgKK2luZGV4IDMxODVmYzQ1NDEuLjdlNmM5ZDU3NDAgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXBsYXRmb3JtdGhlbWUuaAorKysrIGIvcXRiYXNl L3NyYy9ndWkva2VybmVsL3FwbGF0Zm9ybXRoZW1lLmgKK0BAIC0xMjAsNyArMTIwLDggQEAgcHVi bGljOgorICAgICAgICAgVG91Y2hEb3VibGVUYXBEaXN0YW5jZSwKKyAgICAgICAgIFNob3dTaG9y dGN1dHNJbkNvbnRleHRNZW51cywKKyAgICAgICAgIEljb25GYWxsYmFja1NlYXJjaFBhdGhzLAor LSAgICAgICAgTW91c2VRdWlja1NlbGVjdGlvblRocmVzaG9sZAorKyAgICAgICAgTW91c2VRdWlj a1NlbGVjdGlvblRocmVzaG9sZCwKKysgICAgICAgIEJ1dHRvblByZXNzS2V5cworICAgICB9Owor IAorICAgICBlbnVtIERpYWxvZ1R5cGUgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL2tl cm5lbC9xc2NyZWVuLmNwcCBiL3F0YmFzZS9zcmMvZ3VpL2tlcm5lbC9xc2NyZWVuLmNwcAoraW5k ZXggOGUwZWIzNTExNi4uNWQxNzJhNThkZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL2tl cm5lbC9xc2NyZWVuLmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW4uY3Bw CitAQCAtNzcsNiArNzcsMTIgQEAgUVNjcmVlbjo6UVNjcmVlbihRUGxhdGZvcm1TY3JlZW4gKnNj cmVlbikKKyAgICAgZC0+c2V0UGxhdGZvcm1TY3JlZW4oc2NyZWVuKTsKKyB9CisgCisrdm9pZCBR U2NyZWVuUHJpdmF0ZTo6dXBkYXRlTG9naWNhbERwaSgpCisreworKyAgICBsb2dpY2FsRHBpID0g UVBsYXRmb3JtU2NyZWVuOjpvdmVycmlkZURwaShwbGF0Zm9ybVNjcmVlbi0+bG9naWNhbERwaSgp KTsKKysgICAgdXBkYXRlR2VvbWV0cmllc1dpdGhTaWduYWxzKCk7IC8vIHVwZGF0ZXMgZ2VvbWV0 cmllcyBiYXNlZCBvbiBzY2FsZSBmYWN0b3IKKyt9CisrCisgdm9pZCBRU2NyZWVuUHJpdmF0ZTo6 dXBkYXRlR2VvbWV0cmllc1dpdGhTaWduYWxzKCkKKyB7CisgICAgIGNvbnN0IFFSZWN0IG9sZEdl b21ldHJ5ID0gZ2VvbWV0cnk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3Fz Y3JlZW5fcC5oIGIvcXRiYXNlL3NyYy9ndWkva2VybmVsL3FzY3JlZW5fcC5oCitpbmRleCA3ZGE1 NDJjMjVlLi5lNTBmYzMxOTBiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkva2VybmVsL3Fz Y3JlZW5fcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9rZXJuZWwvcXNjcmVlbl9wLmgKK0BAIC03 MCw2ICs3MCw3IEBAIHB1YmxpYzoKKyAgICAgICAgIGdlb21ldHJ5ID0gcGxhdGZvcm1TY3JlZW4t PmRldmljZUluZGVwZW5kZW50R2VvbWV0cnkoKTsKKyAgICAgICAgIGF2YWlsYWJsZUdlb21ldHJ5 ID0gUUhpZ2hEcGk6OmZyb21OYXRpdmUocGxhdGZvcm1TY3JlZW4tPmF2YWlsYWJsZUdlb21ldHJ5 KCksIFFIaWdoRHBpU2NhbGluZzo6ZmFjdG9yKHBsYXRmb3JtU2NyZWVuKSwgZ2VvbWV0cnkudG9w TGVmdCgpKTsKKyAgICAgfQorKyAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxEcGkoKTsKKyAKKyAgICAg dm9pZCB1cGRhdGVQcmltYXJ5T3JpZW50YXRpb24oKTsKKyAgICAgdm9pZCB1cGRhdGVHZW9tZXRy aWVzV2l0aFNpZ25hbHMoKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9x YmxlbmRmdW5jdGlvbnNfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcWJsZW5kZnVuY3Rp b25zX3AuaAoraW5kZXggMDgwZGE5OGVjNC4uNjk5N2Q2MmIzYyAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvZ3VpL3BhaW50aW5nL3FibGVuZGZ1bmN0aW9uc19wLmgKKysrKyBiL3F0YmFzZS9zcmMv Z3VpL3BhaW50aW5nL3FibGVuZGZ1bmN0aW9uc19wLmgKK0BAIC0yNDYsMjUgKzI0NiwzMiBAQCB2 b2lkIHF0X3RyYW5zZm9ybV9pbWFnZV9yYXN0ZXJpemUoRGVzdFQgKmRlc3RQaXhlbHMsIGludCBk YnBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZHVkeCwgaW50IGR2 ZHgsIGludCBkdWR5LCBpbnQgZHZkeSwgaW50IHUwLCBpbnQgdjAsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEJsZW5kZXIgYmxlbmRlcikKKyB7CistICAgIGludCBmcm9tWSA9 IHFNYXgocVJvdW5kKHRvcFkpLCBjbGlwLnRvcCgpKTsKKy0gICAgaW50IHRvWSA9IHFNaW4ocVJv dW5kKGJvdHRvbVkpLCBjbGlwLnRvcCgpICsgY2xpcC5oZWlnaHQoKSk7CisrICAgIHFpbnQ2NCBm cm9tWSA9IHFNYXgocVJvdW5kKHRvcFkpLCBjbGlwLnRvcCgpKTsKKysgICAgcWludDY0IHRvWSA9 IHFNaW4ocVJvdW5kKGJvdHRvbVkpLCBjbGlwLnRvcCgpICsgY2xpcC5oZWlnaHQoKSk7CisgICAg IGlmIChmcm9tWSA+PSB0b1kpCisgICAgICAgICByZXR1cm47CisgCisgICAgIHFyZWFsIGxlZnRT bG9wZSA9IChib3R0b21MZWZ0LnggLSB0b3BMZWZ0LngpIC8gKGJvdHRvbUxlZnQueSAtIHRvcExl ZnQueSk7CisgICAgIHFyZWFsIHJpZ2h0U2xvcGUgPSAoYm90dG9tUmlnaHQueCAtIHRvcFJpZ2h0 LngpIC8gKGJvdHRvbVJpZ2h0LnkgLSB0b3BSaWdodC55KTsKKy0gICAgaW50IGR4X2wgPSBpbnQo bGVmdFNsb3BlICogMHgxMDAwMCk7CistICAgIGludCBkeF9yID0gaW50KHJpZ2h0U2xvcGUgKiAw eDEwMDAwKTsKKy0gICAgaW50IHhfbCA9IGludCgodG9wTGVmdC54ICsgKHFyZWFsKDAuNSkgKyBm cm9tWSAtIHRvcExlZnQueSkgKiBsZWZ0U2xvcGUgKyBxcmVhbCgwLjUpKSAqIDB4MTAwMDApOwor LSAgICBpbnQgeF9yID0gaW50KCh0b3BSaWdodC54ICsgKHFyZWFsKDAuNSkgKyBmcm9tWSAtIHRv cFJpZ2h0LnkpICogcmlnaHRTbG9wZSArIHFyZWFsKDAuNSkpICogMHgxMDAwMCk7CistCistICAg IGludCBmcm9tWCwgdG9YLCB4MSwgeDIsIHUsIHYsIGksIGlpOworKyAgICBxaW50NjQgZHhfbCA9 IHFpbnQ2NChsZWZ0U2xvcGUgKiAweDEwMDAwKTsKKysgICAgcWludDY0IGR4X3IgPSBxaW50NjQo cmlnaHRTbG9wZSAqIDB4MTAwMDApOworKyAgICBxaW50NjQgeF9sID0gcWludDY0KCh0b3BMZWZ0 LnggKyAocXJlYWwoMC41KSArIGZyb21ZIC0gdG9wTGVmdC55KSAqIGxlZnRTbG9wZSArIHFyZWFs KDAuNSkpICogMHgxMDAwMCk7CisrICAgIHFpbnQ2NCB4X3IgPSBxaW50NjQoKHRvcFJpZ2h0Lngg KyAocXJlYWwoMC41KSArIGZyb21ZIC0gdG9wUmlnaHQueSkgKiByaWdodFNsb3BlICsgcXJlYWwo MC41KSkgKiAweDEwMDAwKTsKKysKKysgICAgcWludDY0IHNvdXJjZVJlY3RUb3AgPSBxaW50NjQo c291cmNlUmVjdC50b3AoKSk7CisrICAgIHFpbnQ2NCBzb3VyY2VSZWN0TGVmdCA9IHFpbnQ2NChz b3VyY2VSZWN0LmxlZnQoKSk7CisrICAgIHFpbnQ2NCBzb3VyY2VSZWN0V2lkdGggPSBxaW50NjQo c291cmNlUmVjdC53aWR0aCgpKTsKKysgICAgcWludDY0IHNvdXJjZVJlY3RIZWlnaHQgPSBxaW50 NjQoc291cmNlUmVjdC5oZWlnaHQoKSk7CisrICAgIHFpbnQ2NCBjbGlwTGVmdCA9IHFpbnQ2NChj bGlwLmxlZnQoKSk7CisrICAgIHFpbnQ2NCBjbGlwV2lkdGggPSBxaW50NjQoY2xpcC53aWR0aCgp KTsKKysKKysgICAgcWludDY0IGZyb21YLCB0b1gsIHgxLCB4MiwgdSwgdiwgaSwgaWk7CisgICAg IERlc3RUICpsaW5lOworLSAgICBmb3IgKGludCB5ID0gZnJvbVk7IHkgPCB0b1k7ICsreSkgewor KyAgICBmb3IgKHFpbnQ2NCB5ID0gZnJvbVk7IHkgPCB0b1k7ICsreSkgeworICAgICAgICAgbGlu ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGVzdFQgKj4ocmVpbnRlcnByZXRfY2FzdDx1Y2hhciAqPihk ZXN0UGl4ZWxzKSArIHkgKiBkYnBsKTsKKyAKKy0gICAgICAgIGZyb21YID0gcU1heCh4X2wgPj4g MTYsIGNsaXAubGVmdCgpKTsKKy0gICAgICAgIHRvWCA9IHFNaW4oeF9yID4+IDE2LCBjbGlwLmxl ZnQoKSArIGNsaXAud2lkdGgoKSk7CisrICAgICAgICBmcm9tWCA9IHFNYXgoeF9sID4+IDE2LCBj bGlwTGVmdCk7CisrICAgICAgICB0b1ggPSBxTWluKHhfciA+PiAxNiwgY2xpcExlZnQgKyBjbGlw V2lkdGgpOworICAgICAgICAgaWYgKGZyb21YIDwgdG9YKSB7CisgICAgICAgICAgICAgLy8gQmVj YXVzZSBvZiByb3VuZGluZywgd2UgY2FuIGdldCBzb3VyY2UgY29vcmRpbmF0ZXMgb3V0c2lkZSB0 aGUgc291cmNlIGltYWdlLgorICAgICAgICAgICAgIC8vIENsYW1wIHRoZXNlIGNvb3JkaW5hdGVz IHRvIHRoZSBzb3VyY2UgcmVjdCB0byBhdm9pZCBzZWdtZW50YXRpb24gZmF1bHQgYW5kCitAQCAt Mjc1LDEwICsyODIsMTAgQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1hZ2VfcmFzdGVyaXplKERlc3RU ICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAgICAgICB1ID0geDEgKiBkdWR4ICsgeSAq IGR1ZHkgKyB1MDsKKyAgICAgICAgICAgICB2ID0geDEgKiBkdmR4ICsgeSAqIGR2ZHkgKyB2MDsK KyAgICAgICAgICAgICBmb3IgKDsgeDEgPCB0b1g7ICsreDEpIHsKKy0gICAgICAgICAgICAgICAg aW50IHV1ID0gdSA+PiAxNjsKKy0gICAgICAgICAgICAgICAgaW50IHZ2ID0gdiA+PiAxNjsKKy0g ICAgICAgICAgICAgICAgaWYgKHV1ID49IHNvdXJjZVJlY3QubGVmdCgpICYmIHV1IDwgc291cmNl UmVjdC5sZWZ0KCkgKyBzb3VyY2VSZWN0LndpZHRoKCkKKy0gICAgICAgICAgICAgICAgICAgICYm IHZ2ID49IHNvdXJjZVJlY3QudG9wKCkgJiYgdnYgPCBzb3VyY2VSZWN0LnRvcCgpICsgc291cmNl UmVjdC5oZWlnaHQoKSkgeworKyAgICAgICAgICAgICAgICBxaW50NjQgdXUgPSB1ID4+IDE2Owor KyAgICAgICAgICAgICAgICBxaW50NjQgdnYgPSB2ID4+IDE2OworKyAgICAgICAgICAgICAgICBp ZiAodXUgPj0gc291cmNlUmVjdExlZnQgJiYgdXUgPCBzb3VyY2VSZWN0TGVmdCArIHNvdXJjZVJl Y3RXaWR0aAorKyAgICAgICAgICAgICAgICAgICAgJiYgdnYgPj0gc291cmNlUmVjdFRvcCAmJiB2 diA8IHNvdXJjZVJlY3RUb3AgKyBzb3VyY2VSZWN0SGVpZ2h0KSB7CisgICAgICAgICAgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB1ICs9IGR1 ZHg7CitAQCAtMjkwLDEwICsyOTcsMTAgQEAgdm9pZCBxdF90cmFuc2Zvcm1faW1hZ2VfcmFzdGVy aXplKERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAgICAgICAgICB1ID0gKHgyIC0g MSkgKiBkdWR4ICsgeSAqIGR1ZHkgKyB1MDsKKyAgICAgICAgICAgICB2ID0gKHgyIC0gMSkgKiBk dmR4ICsgeSAqIGR2ZHkgKyB2MDsKKyAgICAgICAgICAgICBmb3IgKDsgeDIgPiB4MTsgLS14Mikg eworLSAgICAgICAgICAgICAgICBpbnQgdXUgPSB1ID4+IDE2OworLSAgICAgICAgICAgICAgICBp bnQgdnYgPSB2ID4+IDE2OworLSAgICAgICAgICAgICAgICBpZiAodXUgPj0gc291cmNlUmVjdC5s ZWZ0KCkgJiYgdXUgPCBzb3VyY2VSZWN0LmxlZnQoKSArIHNvdXJjZVJlY3Qud2lkdGgoKQorLSAg ICAgICAgICAgICAgICAgICAgJiYgdnYgPj0gc291cmNlUmVjdC50b3AoKSAmJiB2diA8IHNvdXJj ZVJlY3QudG9wKCkgKyBzb3VyY2VSZWN0LmhlaWdodCgpKSB7CisrICAgICAgICAgICAgICAgIHFp bnQ2NCB1dSA9IHUgPj4gMTY7CisrICAgICAgICAgICAgICAgIHFpbnQ2NCB2diA9IHYgPj4gMTY7 CisrICAgICAgICAgICAgICAgIGlmICh1dSA+PSBzb3VyY2VSZWN0TGVmdCAmJiB1dSA8IHNvdXJj ZVJlY3RMZWZ0ICsgc291cmNlUmVjdFdpZHRoCisrICAgICAgICAgICAgICAgICAgICAmJiB2diA+ PSBzb3VyY2VSZWN0VG9wICYmIHZ2IDwgc291cmNlUmVjdFRvcCArIHNvdXJjZVJlY3RIZWlnaHQp IHsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgIHUgLT0gZHVkeDsKK0BAIC0zMDgsOCArMzE1LDggQEAgdm9pZCBxdF90cmFu c2Zvcm1faW1hZ2VfcmFzdGVyaXplKERlc3RUICpkZXN0UGl4ZWxzLCBpbnQgZGJwbCwKKyAgICAg ICAgICAgICAvLyBCZWdpbm5pbmcgb2YgdGhlIHNjYW4gbGluZSwgd2l0aCBwZXItcGl4ZWwgY2hl Y2tzLgorICAgICAgICAgICAgIGkgPSB4MSAtIGZyb21YOworICAgICAgICAgICAgIHdoaWxlIChp KSB7CistICAgICAgICAgICAgICAgIGludCB1dSA9IHFCb3VuZChzb3VyY2VSZWN0LmxlZnQoKSwg dSA+PiAxNiwgc291cmNlUmVjdC5sZWZ0KCkgKyBzb3VyY2VSZWN0LndpZHRoKCkgLSAxKTsKKy0g ICAgICAgICAgICAgICAgaW50IHZ2ID0gcUJvdW5kKHNvdXJjZVJlY3QudG9wKCksIHYgPj4gMTYs IHNvdXJjZVJlY3QudG9wKCkgKyBzb3VyY2VSZWN0LmhlaWdodCgpIC0gMSk7CisrICAgICAgICAg ICAgICAgIHFpbnQ2NCB1dSA9IHFCb3VuZChzb3VyY2VSZWN0TGVmdCwgdSA+PiAxNiwgc291cmNl UmVjdExlZnQgKyBzb3VyY2VSZWN0V2lkdGggLSAxKTsKKysgICAgICAgICAgICAgICAgcWludDY0 IHZ2ID0gcUJvdW5kKHNvdXJjZVJlY3RUb3AsIHYgPj4gMTYsIHNvdXJjZVJlY3RUb3AgKyBzb3Vy Y2VSZWN0SGVpZ2h0IC0gMSk7CisgICAgICAgICAgICAgICAgIGJsZW5kZXIud3JpdGUobGluZSwg cmVpbnRlcnByZXRfY2FzdDxjb25zdCBTcmNUICo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWNo YXIgKj4oc3JjUGl4ZWxzKSArIHZ2ICogc2JwbClbdXVdKTsKKyAgICAgICAgICAgICAgICAgdSAr PSBkdWR4OworICAgICAgICAgICAgICAgICB2ICs9IGR2ZHg7CitAQCAtMzQ4LDggKzM1NSw4IEBA IHZvaWQgcXRfdHJhbnNmb3JtX2ltYWdlX3Jhc3Rlcml6ZShEZXN0VCAqZGVzdFBpeGVscywgaW50 IGRicGwsCisgICAgICAgICAgICAgLy8gRW5kIG9mIHRoZSBzY2FuIGxpbmUsIHdpdGggcGVyLXBp eGVsIGNoZWNrcy4KKyAgICAgICAgICAgICBpID0gdG9YIC0geDI7CisgICAgICAgICAgICAgd2hp bGUgKGkpIHsKKy0gICAgICAgICAgICAgICAgaW50IHV1ID0gcUJvdW5kKHNvdXJjZVJlY3QubGVm dCgpLCB1ID4+IDE2LCBzb3VyY2VSZWN0LmxlZnQoKSArIHNvdXJjZVJlY3Qud2lkdGgoKSAtIDEp OworLSAgICAgICAgICAgICAgICBpbnQgdnYgPSBxQm91bmQoc291cmNlUmVjdC50b3AoKSwgdiA+ PiAxNiwgc291cmNlUmVjdC50b3AoKSArIHNvdXJjZVJlY3QuaGVpZ2h0KCkgLSAxKTsKKysgICAg ICAgICAgICAgICAgcWludDY0IHV1ID0gcUJvdW5kKHNvdXJjZVJlY3RMZWZ0LCB1ID4+IDE2LCBz b3VyY2VSZWN0TGVmdCArIHNvdXJjZVJlY3RXaWR0aCAtIDEpOworKyAgICAgICAgICAgICAgICBx aW50NjQgdnYgPSBxQm91bmQoc291cmNlUmVjdFRvcCwgdiA+PiAxNiwgc291cmNlUmVjdFRvcCAr IHNvdXJjZVJlY3RIZWlnaHQgLSAxKTsKKyAgICAgICAgICAgICAgICAgYmxlbmRlci53cml0ZShs aW5lLCByZWludGVycHJldF9jYXN0PGNvbnN0IFNyY1QgKj4ocmVpbnRlcnByZXRfY2FzdDxjb25z dCB1Y2hhciAqPihzcmNQaXhlbHMpICsgdnYgKiBzYnBsKVt1dV0pOworICAgICAgICAgICAgICAg ICB1ICs9IGR1ZHg7CisgICAgICAgICAgICAgICAgIHYgKz0gZHZkeDsKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL2d1aS9wYWludGluZy9xY29sb3J0cmNsdXRfcC5oIGIvcXRiYXNlL3NyYy9ndWkv cGFpbnRpbmcvcWNvbG9ydHJjbHV0X3AuaAoraW5kZXggNzZhNmE2MDgwMy4uMjRmZDUyMmU2YyAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fjb2xvcnRyY2x1dF9wLmgKKysr KyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3Fjb2xvcnRyY2x1dF9wLmgKK0BAIC0xMTgsNiAr MTE4LDcgQEAgcHVibGljOgorICAgICAgICAgcmV0dXJuIFFSZ2JhNjQ6OmZyb21SZ2JhNjQociwg ZywgYiwgcUFscGhhKHJnYjMyKSAqIDI1Nyk7CisgI2VuZGlmCisgICAgIH0KKysgICAgUVJnYmE2 NCB0b0xpbmVhcjY0KFFSZ2JhNjQpIGNvbnN0ID0gZGVsZXRlOworIAorICAgICBRUmdiIHRvTGlu ZWFyKFFSZ2IgcmdiMzIpIGNvbnN0CisgICAgIHsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1 aS9wYWludGluZy9xZHJhd2hlbHBlci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xZHJh d2hlbHBlci5jcHAKK2luZGV4IGE2MTc5MzUwOGEuLjViYTJkMjc3YjcgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL2d1aS9wYWludGluZy9xZHJhd2hlbHBlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMv Z3VpL3BhaW50aW5nL3FkcmF3aGVscGVyLmNwcAorQEAgLTYwOTEsNyArNjA5MSw3IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBhbHBoYXJnYmJsZW5kX2FyZ2IzMihxdWludDMyICpkc3QsIHVpbnQgY292 ZXJhZ2UsIGNvbnN0IFFSZ2JhCisgc3RhdGljIGlubGluZSB2b2lkIHJnYkJsZW5kUGl4ZWwoUVJn YmE2NCAmZHN0LCBpbnQgY292ZXJhZ2UsIFFSZ2JhNjQgc2xpbmVhciwgY29uc3QgUUNvbG9yVHJj THV0ICpjb2xvclByb2ZpbGUpCisgeworICAgICAvLyBEbyBhIGdhbW1hY29ycmVjdGVkIFJHQiBh bHBoYWJsZW5kLi4uCistICAgIGNvbnN0IFFSZ2JhNjQgZGxpbmVhciA9IGNvbG9yUHJvZmlsZSA/ IGNvbG9yUHJvZmlsZS0+dG9MaW5lYXI2NChkc3QpIDogZHN0OworKyAgICBjb25zdCBRUmdiYTY0 IGRsaW5lYXIgPSBjb2xvclByb2ZpbGUgPyBjb2xvclByb2ZpbGUtPnRvTGluZWFyKGRzdCkgOiBk c3Q7CisgCisgICAgIFFSZ2JhNjQgYmxlbmQgPSByZ2JCbGVuZChkbGluZWFyLCBzbGluZWFyLCBj b3ZlcmFnZSk7CisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50 ZW5naW5lX3Jhc3Rlci5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVf cmFzdGVyLmNwcAoraW5kZXggMjgzOTIzZGU1Mi4uZjA4ZWI5Y2JlZSAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVuZ2luZV9yYXN0ZXIuY3BwCisrKysgYi9xdGJh c2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyLmNwcAorQEAgLTU2MCwzMSAr NTYwLDYgQEAgdm9pZCBRUmFzdGVyUGFpbnRFbmdpbmU6OnVwZGF0ZU1hdHJpeChjb25zdCBRVHJh bnNmb3JtICZtYXRyaXgpCisgICAgIFFSYXN0ZXJQYWludEVuZ2luZVN0YXRlICpzID0gc3RhdGUo KTsKKyAgICAgLy8gRkFMQ09OOiBnZXQgcmlkIG9mIHRoaXMgbGluZSwgc2VlIGRyYXdJbWFnZSBj YWxsIGJlbG93LgorICAgICBzLT5tYXRyaXggPSBtYXRyaXg7CistICAgIFFUcmFuc2Zvcm06OlRy YW5zZm9ybWF0aW9uVHlwZSB0eG9wID0gcy0+bWF0cml4LnR5cGUoKTsKKy0KKy0gICAgc3dpdGNo ICh0eG9wKSB7CistCistICAgIGNhc2UgUVRyYW5zZm9ybTo6VHhOb25lOgorLSAgICAgICAgcy0+ ZmxhZ3MuaW50X3hmb3JtID0gdHJ1ZTsKKy0gICAgICAgIGJyZWFrOworLQorLSAgICBjYXNlIFFU cmFuc2Zvcm06OlR4VHJhbnNsYXRlOgorLSAgICAgICAgcy0+ZmxhZ3MuaW50X3hmb3JtID0gcXJl YWwoaW50KHMtPm1hdHJpeC5keCgpKSkgPT0gcy0+bWF0cml4LmR4KCkKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgJiYgcXJlYWwoaW50KHMtPm1hdHJpeC5keSgpKSkgPT0gcy0+bWF0cml4 LmR5KCk7CistICAgICAgICBicmVhazsKKy0KKy0gICAgY2FzZSBRVHJhbnNmb3JtOjpUeFNjYWxl OgorLSAgICAgICAgcy0+ZmxhZ3MuaW50X3hmb3JtID0gcXJlYWwoaW50KHMtPm1hdHJpeC5keCgp KSkgPT0gcy0+bWF0cml4LmR4KCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcXJl YWwoaW50KHMtPm1hdHJpeC5keSgpKSkgPT0gcy0+bWF0cml4LmR5KCkKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgJiYgcXJlYWwoaW50KHMtPm1hdHJpeC5tMTEoKSkpID09IHMtPm1hdHJp eC5tMTEoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBxcmVhbChpbnQocy0+bWF0 cml4Lm0yMigpKSkgPT0gcy0+bWF0cml4Lm0yMigpOworLSAgICAgICAgYnJlYWs7CistCistICAg IGRlZmF1bHQ6IC8vIHNoZWFyIC8gcGVyc3BlY3RpdmUuLi4KKy0gICAgICAgIHMtPmZsYWdzLmlu dF94Zm9ybSA9IGZhbHNlOworLSAgICAgICAgYnJlYWs7CistICAgIH0KKy0KKyAgICAgcy0+Zmxh Z3MudHhfbm9zaGVhciA9IHF0X3NjYWxlRm9yVHJhbnNmb3JtKHMtPm1hdHJpeCwgJnMtPnR4c2Nh bGUpOworIAorICAgICBlbnN1cmVPdXRsaW5lTWFwcGVyKCk7CitAQCAtNjE3LDcgKzU5Miw2IEBA IFFSYXN0ZXJQYWludEVuZ2luZVN0YXRlOjpRUmFzdGVyUGFpbnRFbmdpbmVTdGF0ZSgpCisgICAg IGZsYWdzLmJpbGluZWFyID0gZmFsc2U7CisgICAgIGZsYWdzLmxlZ2FjeV9yb3VuZGluZyA9IGZh bHNlOworICAgICBmbGFncy5mYXN0X3RleHQgPSB0cnVlOworLSAgICBmbGFncy5pbnRfeGZvcm0g PSB0cnVlOworICAgICBmbGFncy50eF9ub3NoZWFyID0gdHJ1ZTsKKyAgICAgZmxhZ3MuZmFzdF9p bWFnZXMgPSB0cnVlOworIAorQEAgLTE3OTMsNyArMTc2Nyw3IEBAIHZvaWQgUVJhc3RlclBhaW50 RW5naW5lOjpmaWxsKGNvbnN0IFFWZWN0b3JQYXRoICZwYXRoLCBjb25zdCBRQnJ1c2ggJmJydXNo KQorICAgICBRUmVjdEYgY3BSZWN0ID0gcGF0aC5jb250cm9sUG9pbnRSZWN0KCk7CisgICAgIGNv bnN0IFFSZWN0RiBwYXRoRGV2aWNlUmVjdCA9IHMtPm1hdHJpeC5tYXBSZWN0KGNwUmVjdCk7Cisg ICAgIC8vIFNraXAgcGF0aHMgdGhhdCBieSBjb25zZXJ2YXRpdmUgZXN0aW1hdGVzIGFyZSBjb21w bGV0ZWx5IG91dHNpZGUgdGhlIHBhaW50IGRldmljZS4KKy0gICAgaWYgKCFwYXRoRGV2aWNlUmVj dC5pbnRlcnNlY3RzKFFSZWN0RihkLT5kZXZpY2VSZWN0KSkpCisrICAgIGlmICghcGF0aERldmlj ZVJlY3QuaW50ZXJzZWN0cyhRUmVjdEYoZC0+ZGV2aWNlUmVjdCkpIHx8ICFwYXRoRGV2aWNlUmVj dC5pc1ZhbGlkKCkpCisgICAgICAgICByZXR1cm47CisgCisgICAgIFByb2Nlc3NTcGFucyBibGVu ZCA9IGQtPmdldEJydXNoRnVuYyhwYXRoRGV2aWNlUmVjdCwgJnMtPmJydXNoRGF0YSk7CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZW5naW5lX3Jhc3Rlcl9wLmgg Yi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xcGFpbnRlbmdpbmVfcmFzdGVyX3AuaAoraW5kZXgg MDg5YWFkYzNmNy4uYmY3MzYzZDVhYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50 aW5nL3FwYWludGVuZ2luZV9yYXN0ZXJfcC5oCisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGlu Zy9xcGFpbnRlbmdpbmVfcmFzdGVyX3AuaAorQEAgLTExMSw3ICsxMTEsNiBAQCBwdWJsaWM6Cisg ICAgICAgICB1aW50IGJpbGluZWFyIDogMTsKKyAgICAgICAgIHVpbnQgbGVnYWN5X3JvdW5kaW5n IDogMTsKKyAgICAgICAgIHVpbnQgZmFzdF90ZXh0IDogMTsKKy0gICAgICAgIHVpbnQgaW50X3hm b3JtIDogMTsKKyAgICAgICAgIHVpbnQgdHhfbm9zaGVhciA6IDE7CisgICAgICAgICB1aW50IGZh c3RfaW1hZ2VzIDogMTsKKyAgICAgfTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWlu dGluZy9xcGFpbnRlcnBhdGguY3BwIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhaW50ZXJw YXRoLmNwcAoraW5kZXggZjk1NDRhMzI0MS4uZDgwZmFmZWFmMSAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvZ3VpL3BhaW50aW5nL3FwYWludGVycGF0aC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3Vp L3BhaW50aW5nL3FwYWludGVycGF0aC5jcHAKK0BAIC0xMjUzLDcgKzEyNTMsNyBAQCB2b2lkIFFQ YWludGVyUGF0aDo6YWRkVGV4dChjb25zdCBRUG9pbnRGICZwb2ludCwgY29uc3QgUUZvbnQgJmYs IGNvbnN0IFFTdHJpbmcgJgorIAorICAgICAgICAgaWYgKHNpLmFuYWx5c2lzLmZsYWdzIDwgUVNj cmlwdEFuYWx5c2lzOjpUYWJPck9iamVjdCkgeworICAgICAgICAgICAgIFFHbHlwaExheW91dCBn bHlwaHMgPSBlbmctPnNoYXBlZEdseXBocygmc2kpOworLSAgICAgICAgICAgIFFGb250RW5naW5l ICpmZSA9IGYuZC0+ZW5naW5lRm9yU2NyaXB0KHNpLmFuYWx5c2lzLnNjcmlwdCk7CisrICAgICAg ICAgICAgUUZvbnRFbmdpbmUgKmZlID0gZW5nLT5mb250RW5naW5lKHNpKTsKKyAgICAgICAgICAg ICBRX0FTU0VSVChmZSk7CisgICAgICAgICAgICAgZmUtPmFkZE91dGxpbmVUb1BhdGgoeCwgeSwg Z2x5cGhzLCB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpLmFuYWx5 c2lzLmJpZGlMZXZlbCAlIDIKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9x cGF0aGNsaXBwZXJfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBhdGhjbGlwcGVyX3Au aAoraW5kZXggOTQ0NGE4N2I3MS4uMThmNjRjNWU4YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv Z3VpL3BhaW50aW5nL3FwYXRoY2xpcHBlcl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3BhaW50 aW5nL3FwYXRoY2xpcHBlcl9wLmgKK0BAIC0xNTYsNyArMTU2LDcgQEAgcHVibGljOgorICAgICBp bnQgdmVydGV4KERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0OworIAorIHByaXZhdGU6CistICAg IGludCBtX25leHRbMl1bMl07CisrICAgIGludCBtX25leHRbMl1bMl0gPSB7IHsgLTEsIC0xIH0s IHsgLTEsIC0xIH0gfTsKKyB9OworIAorIGNsYXNzIFFQYXRoU2VnbWVudHMKK0BAIC0yOTYsMTAg KzI5Niw2IEBAIGlubGluZSBRUGF0aEVkZ2U6OlFQYXRoRWRnZShpbnQgYSwgaW50IGIpCisgICAg ICwgYW5nbGUoMCkKKyAgICAgLCBpbnZBbmdsZSgwKQorIHsKKy0gICAgbV9uZXh0WzBdWzBdID0g LTE7CistICAgIG1fbmV4dFsxXVswXSA9IC0xOworLSAgICBtX25leHRbMF1bMF0gPSAtMTsKKy0g ICAgbV9uZXh0WzFdWzBdID0gLTE7CisgfQorIAorIGlubGluZSBpbnQgUVBhdGhFZGdlOjpuZXh0 KFRyYXZlcnNhbCB0cmF2ZXJzYWwsIERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CitkaWZmIC0t Z2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXBkZi5jcHAgYi9xdGJhc2Uvc3JjL2d1aS9w YWludGluZy9xcGRmLmNwcAoraW5kZXggMzA2Njc0NGYxYi4uMmM4ZDNjM2I1MyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3FwZGYuY3BwCisrKysgYi9xdGJhc2Uvc3JjL2d1 aS9wYWludGluZy9xcGRmLmNwcAorQEAgLTI3NjAsNiArMjc2MCw4IEBAIGludCBRUGRmRW5naW5l UHJpdmF0ZTo6YWRkQnJ1c2hQYXR0ZXJuKGNvbnN0IFFUcmFuc2Zvcm0gJm0sIGJvb2wgKnNwZWNp ZnlDb2xvciwKKyAgICAgICAgIHJldHVybiBncmFkaWVudEJydXNoKGJydXNoLCBtYXRyaXgsIGdT dGF0ZU9iamVjdCk7CisgICAgIH0KKyAKKysgICAgbWF0cml4ID0gYnJ1c2gudHJhbnNmb3JtKCkg KiBtYXRyaXg7CisrCisgICAgIGlmICgoIWJydXNoLmlzT3BhcXVlKCkgJiYgYnJ1c2guc3R5bGUo KSA8IFF0OjpMaW5lYXJHcmFkaWVudFBhdHRlcm4pIHx8IG9wYWNpdHkgIT0gMS4wKQorICAgICAg ICAgKmdTdGF0ZU9iamVjdCA9IGFkZENvbnN0YW50QWxwaGFPYmplY3QocVJvdW5kKGJydXNoLmNv bG9yKCkuYWxwaGEoKSAqIG9wYWNpdHkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcVJvdW5kKHBlbi5jb2xvcigpLmFscGhhKCkgKiBvcGFjaXR5KSk7 CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXN0cm9rZXIuY3BwIGIvcXRi YXNlL3NyYy9ndWkvcGFpbnRpbmcvcXN0cm9rZXIuY3BwCitpbmRleCBjYjVkMzk1ZTgwLi4zYjYz NTdhODkzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXN0cm9rZXIuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL2d1aS9wYWludGluZy9xc3Ryb2tlci5jcHAKK0BAIC0xMTgyLDYg KzExODIsNyBAQCB2b2lkIFFEYXNoU3Ryb2tlcjo6cHJvY2Vzc0N1cnJlbnRTdWJwYXRoKCkKKyAg ICAgICAgIC8vIENoZWNrIGlmIHRoZSBlbnRpcmUgbGluZSBzaG91bGQgYmUgY2xpcHBlZCBhd2F5 IG9yIHNpbXBsaWZpZWQKKyAgICAgICAgIGJvb2wgY2xpcEl0ID0gY2xpcHBpbmcgJiYgIWxpbmVJ bnRlcnNlY3RzUmVjdChwcmV2LCBlLCBjbGlwX3RsLCBjbGlwX2JyKTsKKyAgICAgICAgIGJvb2wg c2tpcERhc2hpbmcgPSBlbGVuICogaW52U3VtTGVuZ3RoID4gcmVwZXRpdGlvbkxpbWl0KCk7Cisr ICAgICAgICBpbnQgbWF4RGFzaGVzID0gZGFzaENvdW50OworICAgICAgICAgaWYgKHNraXBEYXNo aW5nIHx8IGNsaXBJdCkgeworICAgICAgICAgICAgIC8vIEN1dCBhd2F5IGZ1bGwgZGFzaCBzZXF1 ZW5jZXMuCisgICAgICAgICAgICAgZWxlbiAtPSBzdGQ6OmZsb29yKGVsZW4gKiBpbnZTdW1MZW5n dGgpICogc3VtTGVuZ3RoOworQEAgLTExOTYsNyArMTE5Nyw3IEBAIHZvaWQgUURhc2hTdHJva2Vy Ojpwcm9jZXNzQ3VycmVudFN1YnBhdGgoKQorICAgICAgICAgICAgICAgICAgICAgcG9zID0gZXN0 b3A7IC8vIG1vdmUgcG9zIHRvIG5leHQgcGF0aCBlbGVtZW50CisgICAgICAgICAgICAgICAgICAg ICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gRGFzaCBpcyBvbiB0 aGlzIGxpbmUKKy0gICAgICAgICAgICAgICAgICAgIHBvcyA9IGRwb3MgKyBlc3RhcnQ7CisrICAg ICAgICAgICAgICAgICAgICBwb3MgPSAtLW1heERhc2hlcyA+IDAgPyBkcG9zICsgZXN0YXJ0IDog ZXN0b3A7CisgICAgICAgICAgICAgICAgICAgICBkb25lID0gcG9zID49IGVzdG9wOworICAgICAg ICAgICAgICAgICAgICAgaWYgKCsraWRhc2ggPj0gZGFzaENvdW50KQorICAgICAgICAgICAgICAg ICAgICAgICAgIGlkYXNoID0gMDsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9wYWludGlu Zy9xdF9hdHRyaWJ1dGlvbi5qc29uIGIvcXRiYXNlL3NyYy9ndWkvcGFpbnRpbmcvcXRfYXR0cmli dXRpb24uanNvbgoraW5kZXggN2IxNmU4YzIxMS4uMGU4N2QzMGFhMiAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvZ3VpL3BhaW50aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24KKysrKyBiL3F0YmFzZS9z cmMvZ3VpL3BhaW50aW5nL3F0X2F0dHJpYnV0aW9uLmpzb24KK0BAIC0xMCw3ICsxMCw3IEBACisg ICAgICAgICAiSG9tZXBhZ2UiOiAiaHR0cDovL3d3dy5mcmVldHlwZS5vcmciLAorICAgICAgICAg IkxpY2Vuc2UiOiAiRnJlZXR5cGUgUHJvamVjdCBMaWNlbnNlIG9yIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIHYyLjAgb25seSIsCisgICAgICAgICAiTGljZW5zZUlkIjogIkZUTCBvciBHUEwt Mi4wIiwKKy0gICAgICAgICJMaWNlbnNlRmlsZSI6ICIuLi8uLi8zcmRwYXJ0eS9mcmVldHlwZS9k b2NzL0xJQ0VOU0UuVFhUIiwKKysgICAgICAgICJMaWNlbnNlRmlsZSI6ICIuLi8uLi8zcmRwYXJ0 eS9mcmVldHlwZS9MSUNFTlNFLlRYVCIsCisgICAgICAgICAiQ29weXJpZ2h0IjogIkNvcHlyaWdo dCAyMDAwLTIwMTYgYnkgRGF2aWQgVHVybmVyLCBSb2JlcnQgV2lsaGVsbSwgYW5kIFdlcm5lciBM ZW1iZXJnLiIKKyAgICAgfSwKKyAgICAgeworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvZ3VpL3Jo aS9xc2hhZGVyX3BfcC5oIGIvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9wLmgKK2luZGV4 IGVjOWQyNTk3MWYuLjRhNWE3YTZkNTEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL2d1aS9yaGkv cXNoYWRlcl9wX3AuaAorKysrIGIvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJfcF9wLmgKK0BA IC02OCwxMyArNjgsMTMgQEAgc3RydWN0IFFfR1VJX0VYUE9SVCBRU2hhZGVyUHJpdmF0ZQorICAg ICB7CisgICAgIH0KKyAKKy0gICAgUVNoYWRlclByaXZhdGUoY29uc3QgUVNoYWRlclByaXZhdGUg Km90aGVyKQorKyAgICBRU2hhZGVyUHJpdmF0ZShjb25zdCBRU2hhZGVyUHJpdmF0ZSAmb3RoZXIp CisgICAgICAgICA6IHJlZigxKSwKKy0gICAgICAgICAgcXNiVmVyc2lvbihvdGhlci0+cXNiVmVy c2lvbiksCistICAgICAgICAgIHN0YWdlKG90aGVyLT5zdGFnZSksCistICAgICAgICAgIGRlc2Mo b3RoZXItPmRlc2MpLAorLSAgICAgICAgICBzaGFkZXJzKG90aGVyLT5zaGFkZXJzKSwKKy0gICAg ICAgICAgYmluZGluZ3Mob3RoZXItPmJpbmRpbmdzKQorKyAgICAgICAgICBxc2JWZXJzaW9uKG90 aGVyLnFzYlZlcnNpb24pLAorKyAgICAgICAgICBzdGFnZShvdGhlci5zdGFnZSksCisrICAgICAg ICAgIGRlc2Mob3RoZXIuZGVzYyksCisrICAgICAgICAgIHNoYWRlcnMob3RoZXIuc2hhZGVycyks CisrICAgICAgICAgIGJpbmRpbmdzKG90aGVyLmJpbmRpbmdzKQorICAgICB7CisgICAgIH0KKyAK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS9yaGkvcXNoYWRlcmRlc2NyaXB0aW9uX3BfcC5o IGIvcXRiYXNlL3NyYy9ndWkvcmhpL3FzaGFkZXJkZXNjcmlwdGlvbl9wX3AuaAoraW5kZXggZWMy YjBiNmI0Yy4uM2RhMzNhOGEyYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hh ZGVyZGVzY3JpcHRpb25fcF9wLmgKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3JoaS9xc2hhZGVyZGVz Y3JpcHRpb25fcF9wLmgKK0BAIC02MywxNiArNjMsMTYgQEAgc3RydWN0IFFfR1VJX0VYUE9SVCBR U2hhZGVyRGVzY3JpcHRpb25Qcml2YXRlCisgICAgICAgICBsb2NhbFNpemVbMF0gPSBsb2NhbFNp emVbMV0gPSBsb2NhbFNpemVbMl0gPSAwOworICAgICB9CisgCistICAgIFFTaGFkZXJEZXNjcmlw dGlvblByaXZhdGUoY29uc3QgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0ZSAqb3RoZXIpCisrICAg IFFTaGFkZXJEZXNjcmlwdGlvblByaXZhdGUoY29uc3QgUVNoYWRlckRlc2NyaXB0aW9uUHJpdmF0 ZSAmb3RoZXIpCisgICAgICAgICA6IHJlZigxKSwKKy0gICAgICAgICAgaW5WYXJzKG90aGVyLT5p blZhcnMpLAorLSAgICAgICAgICBvdXRWYXJzKG90aGVyLT5vdXRWYXJzKSwKKy0gICAgICAgICAg dW5pZm9ybUJsb2NrcyhvdGhlci0+dW5pZm9ybUJsb2NrcyksCistICAgICAgICAgIHB1c2hDb25z dGFudEJsb2NrcyhvdGhlci0+cHVzaENvbnN0YW50QmxvY2tzKSwKKy0gICAgICAgICAgc3RvcmFn ZUJsb2NrcyhvdGhlci0+c3RvcmFnZUJsb2NrcyksCistICAgICAgICAgIGNvbWJpbmVkSW1hZ2VT YW1wbGVycyhvdGhlci0+Y29tYmluZWRJbWFnZVNhbXBsZXJzKSwKKy0gICAgICAgICAgc3RvcmFn ZUltYWdlcyhvdGhlci0+c3RvcmFnZUltYWdlcyksCistICAgICAgICAgIGxvY2FsU2l6ZShvdGhl ci0+bG9jYWxTaXplKQorKyAgICAgICAgICBpblZhcnMob3RoZXIuaW5WYXJzKSwKKysgICAgICAg ICAgb3V0VmFycyhvdGhlci5vdXRWYXJzKSwKKysgICAgICAgICAgdW5pZm9ybUJsb2NrcyhvdGhl ci51bmlmb3JtQmxvY2tzKSwKKysgICAgICAgICAgcHVzaENvbnN0YW50QmxvY2tzKG90aGVyLnB1 c2hDb25zdGFudEJsb2NrcyksCisrICAgICAgICAgIHN0b3JhZ2VCbG9ja3Mob3RoZXIuc3RvcmFn ZUJsb2NrcyksCisrICAgICAgICAgIGNvbWJpbmVkSW1hZ2VTYW1wbGVycyhvdGhlci5jb21iaW5l ZEltYWdlU2FtcGxlcnMpLAorKyAgICAgICAgICBzdG9yYWdlSW1hZ2VzKG90aGVyLnN0b3JhZ2VJ bWFnZXMpLAorKyAgICAgICAgICBsb2NhbFNpemUob3RoZXIubG9jYWxTaXplKQorICAgICB7Cisg ICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2Uu Y3BwIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xZm9udGRhdGFiYXNlLmNwcAoraW5kZXggYTY1N2E4 YzUxNi4uNGZjMDEwMDk1OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcWZvbnRk YXRhYmFzZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS5jcHAK K0BAIC05ODMsNyArOTgzLDcgQEAgUUZvbnRFbmdpbmUgKmxvYWRTaW5nbGVFbmdpbmUoaW50IHNj cmlwdCwKKyAgICAgICAgIGlmIChzdHlsZS0+a2V5LnN0cmV0Y2ggIT0gMCAmJiByZXF1ZXN0LnN0 cmV0Y2ggIT0gMAorICAgICAgICAgICAgICYmIChyZXF1ZXN0LnN0eWxlTmFtZS5pc0VtcHR5KCkg fHwgcmVxdWVzdC5zdHlsZU5hbWUgIT0gc3R5bGUtPnN0eWxlTmFtZSkpIHsKKyAgICAgICAgICAg ICBkZWYuc3RyZXRjaCA9IChyZXF1ZXN0LnN0cmV0Y2ggKiAxMDAgKyBzdHlsZS0+a2V5LnN0cmV0 Y2ggLyAyKSAvIHN0eWxlLT5rZXkuc3RyZXRjaDsKKy0gICAgICAgIH0gZWxzZSB7CisrICAgICAg ICB9IGVsc2UgaWYgKHJlcXVlc3Quc3RyZXRjaCA9PSBRRm9udDo6QW55U3RyZXRjaCkgeworICAg ICAgICAgICAgIGRlZi5zdHJldGNoID0gMTAwOworICAgICAgICAgfQorIAorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRkb2N1bWVudGxheW91dC5jcHAgYi9xdGJhc2Uvc3Jj L2d1aS90ZXh0L3F0ZXh0ZG9jdW1lbnRsYXlvdXQuY3BwCitpbmRleCBmM2U2ZWEyMTAwLi43MjI2 N2U5MzgwIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGRvY3VtZW50bGF5 b3V0LmNwcAorKysrIGIvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGRvY3VtZW50bGF5b3V0LmNw cAorQEAgLTIxMjMsNyArMjEyMyw3IEBAIHZvaWQgUVRleHREb2N1bWVudExheW91dFByaXZhdGU6 OmRyYXdMaXN0SXRlbShjb25zdCBRUG9pbnRGICZvZmZzZXQsIFFQYWludGVyICpwCisgeworICAg ICBRX1EoY29uc3QgUVRleHREb2N1bWVudExheW91dCk7CisgICAgIGNvbnN0IFFUZXh0QmxvY2tG b3JtYXQgYmxvY2tGb3JtYXQgPSBibC5ibG9ja0Zvcm1hdCgpOworLSAgICBjb25zdCBRVGV4dENo YXJGb3JtYXQgY2hhckZvcm1hdCA9IFFUZXh0Q3Vyc29yKGJsKS5jaGFyRm9ybWF0KCk7CisrICAg IGNvbnN0IFFUZXh0Q2hhckZvcm1hdCBjaGFyRm9ybWF0ID0gYmwuY2hhckZvcm1hdCgpOworICAg ICBRRm9udCBmb250KGNoYXJGb3JtYXQuZm9udCgpKTsKKyAgICAgaWYgKHEtPnBhaW50RGV2aWNl KCkpCisgICAgICAgICBmb250ID0gUUZvbnQoZm9udCwgcS0+cGFpbnREZXZpY2UoKSk7CitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdGV4dC9xdGV4dGVuZ2luZS5jcHAgYi9xdGJhc2Uvc3Jj L2d1aS90ZXh0L3F0ZXh0ZW5naW5lLmNwcAoraW5kZXggY2U0YWJhYzQ3Mi4uYTZjNjZlNWQyZCAx MDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3RleHQvcXRleHRlbmdpbmUuY3BwCisrKysgYi9x dGJhc2Uvc3JjL2d1aS90ZXh0L3F0ZXh0ZW5naW5lLmNwcAorQEAgLTEsNiArMSw2IEBACisgLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKyAqKgorLSoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29t cGFueSBMdGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKyAq KiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgUXRHdWkgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTE1 NjUsNiArMTU2NSwxMiBAQCB2b2lkIFFUZXh0RW5naW5lOjpzaGFwZVRleHQoaW50IGl0ZW0pIGNv bnN0CisgICAgICAgICAvLyBPdmVyd3JpdGUgd2l0aCAwIHRva2VuIHRvIGluZGljYXRlIGZhaWx1 cmUKKyAgICAgICAgIFFHbHlwaExheW91dCBnID0gYXZhaWxhYmxlR2x5cGhzKCZzaSk7CisgICAg ICAgICBnLmdseXBoc1swXSA9IDA7CisrICAgICAgICBnLmF0dHJpYnV0ZXNbMF0uY2x1c3RlclN0 YXJ0ID0gdHJ1ZTsKKysKKysgICAgICAgIHVzaG9ydCAqbG9nX2NsdXN0ZXJzID0gbG9nQ2x1c3Rl cnMoJnNpKTsKKysgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaXRlbUxlbmd0aDsgKytpKQor KyAgICAgICAgICAgIGxvZ19jbHVzdGVyc1tpXSA9IDA7CisrCisgICAgICAgICByZXR1cm47Cisg ICAgIH0KKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL2d1aS91dGlsL3FkZXNrdG9wc2Vydmlj ZXMuY3BwIGIvcXRiYXNlL3NyYy9ndWkvdXRpbC9xZGVza3RvcHNlcnZpY2VzLmNwcAoraW5kZXgg ZmJiNjNhOTQwOC4uNGQ1ZmFmYWFhNyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3V0aWwv cWRlc2t0b3BzZXJ2aWNlcy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcWRlc2t0b3Bz ZXJ2aWNlcy5jcHAKK0BAIC01NCw2ICs1NCw4IEBACisgI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1p bnRlZ3JhdGlvbi5oPgorICNpbmNsdWRlIDxxZGlyLmg+CisgCisrI2luY2x1ZGUgPFF0Q29yZS9w cml2YXRlL3Fsb2NraW5nX3AuaD4KKysKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBjbGFzcyBR T3BlblVybEhhbmRsZXJSZWdpc3RyeSA6IHB1YmxpYyBRT2JqZWN0CitAQCAtODEsNiArODMsNyBA QCBRX0dMT0JBTF9TVEFUSUMoUU9wZW5VcmxIYW5kbGVyUmVnaXN0cnksIGhhbmRsZXJSZWdpc3Ry eSkKKyAKKyB2b2lkIFFPcGVuVXJsSGFuZGxlclJlZ2lzdHJ5OjpoYW5kbGVyRGVzdHJveWVkKFFP YmplY3QgKmhhbmRsZXIpCisgeworKyAgICBjb25zdCBhdXRvIGxvY2sgPSBxdF9zY29wZWRfbG9j ayhtdXRleCk7CisgICAgIEhhbmRsZXJIYXNoOjpJdGVyYXRvciBpdCA9IGhhbmRsZXJzLmJlZ2lu KCk7CisgICAgIHdoaWxlIChpdCAhPSBoYW5kbGVycy5lbmQoKSkgeworICAgICAgICAgaWYgKGl0 LT5yZWNlaXZlciA9PSBoYW5kbGVyKSB7CitAQCAtMjk0LDcgKzI5Nyw4IEBAIHZvaWQgUURlc2t0 b3BTZXJ2aWNlczo6c2V0VXJsSGFuZGxlcihjb25zdCBRU3RyaW5nICZzY2hlbWUsIFFPYmplY3Qg KnJlY2VpdmVyLCBjCisgICAgIGgubmFtZSA9IG1ldGhvZDsKKyAgICAgcmVnaXN0cnktPmhhbmRs ZXJzLmluc2VydChzY2hlbWUudG9Mb3dlcigpLCBoKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChy ZWNlaXZlciwgU0lHTkFMKGRlc3Ryb3llZChRT2JqZWN0KikpLAorLSAgICAgICAgICAgICAgICAg ICAgIHJlZ2lzdHJ5LCBTTE9UKGhhbmRsZXJEZXN0cm95ZWQoUU9iamVjdCopKSk7CisrICAgICAg ICAgICAgICAgICAgICAgcmVnaXN0cnksIFNMT1QoaGFuZGxlckRlc3Ryb3llZChRT2JqZWN0Kikp LAorKyAgICAgICAgICAgICAgICAgICAgIFF0OjpEaXJlY3RDb25uZWN0aW9uKTsKKyB9CisgCisg LyohCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9ndWkvdXRpbC9xcGttaGFuZGxlci5jcHAgYi9x dGJhc2Uvc3JjL2d1aS91dGlsL3Fwa21oYW5kbGVyLmNwcAoraW5kZXggZTBjM2I3NWVmZS4uMzQx NGY5ZDhiYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvZ3VpL3V0aWwvcXBrbWhhbmRsZXIuY3Bw CisrKysgYi9xdGJhc2Uvc3JjL2d1aS91dGlsL3Fwa21oYW5kbGVyLmNwcAorQEAgLTU3LDcgKzU3 LDcgQEAgc3RydWN0IFBrbVR5cGUKKyAgICAgcXVpbnQzMiBieXRlc1BlckJsb2NrOworIH07Cisg Cistc3RhdGljIFBrbVR5cGUgdHlwZU1hcFs1XSA9IHsKKytzdGF0aWMgY29uc3RleHByIFBrbVR5 cGUgdHlwZU1hcFs1XSA9IHsKKyAgICAgeyAweDhENjQsICA4IH0sICAgLy8gR0xfRVRDMV9SR0I4 X09FUworICAgICB7IDB4OTI3NCwgIDggfSwgICAvLyBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMgor ICAgICB7IDAsIDAgfSwgICAgICAgICAvLyB1bnVzZWQgKG9ic29sZXRlKQorZGlmZiAtLWdpdCBh L3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWZpbGVpbXBsLmNwcCBiL3F0 YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWZpbGVpbXBsLmNwcAoraW5kZXgg YjZiZTkzMTQ3YS4uNmU2OWI0YzRkMyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9h Y2Nlc3MvcW5ldHdvcmtyZXBseWZpbGVpbXBsLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3Jr L2FjY2Vzcy9xbmV0d29ya3JlcGx5ZmlsZWltcGwuY3BwCitAQCAtODksOSArODksMTAgQEAgUU5l dHdvcmtSZXBseUZpbGVJbXBsOjpRTmV0d29ya1JlcGx5RmlsZUltcGwoUU5ldHdvcmtBY2Nlc3NN YW5hZ2VyICptYW5hZ2VyLCBjb24KKyAgICAgICAgIC8vIHdlIGhhbmRsZSBvbmx5IGxvY2FsIGZp bGVzCisgICAgICAgICBRU3RyaW5nIG1zZyA9IFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgi UU5ldHdvcmtBY2Nlc3NGaWxlQmFja2VuZCIsICJSZXF1ZXN0IGZvciBvcGVuaW5nIG5vbi1sb2Nh bCBmaWxlICUxIikuYXJnKHVybC50b1N0cmluZygpKTsKKyAgICAgICAgIHNldEVycm9yKFFOZXR3 b3JrUmVwbHk6OlByb3RvY29sSW52YWxpZE9wZXJhdGlvbkVycm9yLCBtc2cpOworKyAgICAgICAg c2V0RmluaXNoZWQodHJ1ZSk7IC8vIFdlJ3JlIGZpbmlzaGVkLCB3aWxsIGVtaXQgZmluaXNoZWQo KSBhZnRlciBjdG9yIGlzIGRvbmUuCisgICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9k KHRoaXMsICJlcnJvck9jY3VycmVkIiwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24sCisgICAgICAgICAg ICAgUV9BUkcoUU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yLCBRTmV0d29ya1JlcGx5OjpQcm90 b2NvbEludmFsaWRPcGVyYXRpb25FcnJvcikpOworLSAgICAgICAgZmlsZU9wZW5GaW5pc2hlZChm YWxzZSk7CisrICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMsIFt0aGlzXSgp eyBmaWxlT3BlbkZpbmlzaGVkKGZhbHNlKTsgfSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworICAg ICAgICAgcmV0dXJuOworICAgICB9CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9u ZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5aW1wbC5jcHAgYi9xdGJhc2Uvc3JjL25ldHdvcmsv YWNjZXNzL3FuZXR3b3JrcmVwbHlpbXBsLmNwcAoraW5kZXggYmNkZjZlZTJmMS4uM2I2ZGViODJi ZCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseWlt cGwuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHlpbXBs LmNwcAorQEAgLTY4MCw3ICs2ODAsNyBAQCB2b2lkIFFOZXR3b3JrUmVwbHlJbXBsUHJpdmF0ZTo6 YXBwZW5kRG93bnN0cmVhbURhdGEoUUlPRGV2aWNlICpkYXRhKQorICAgICAvLyByZWFkIHVudGls IEVPRiBmcm9tIGRhdGEKKyAgICAgaWYgKFFfVU5MSUtFTFkoY29weURldmljZSkpIHsKKyAgICAg ICAgIHFDcml0aWNhbCgiUU5ldHdvcmtSZXBseUltcGw6IGNvcHkgZnJvbSBRSU9EZXZpY2UgYWxy ZWFkeSBpbiBwcm9ncmVzcyAtLSAiCistICAgICAgICAgICAgICAgICAgImJhY2tlbmQgcHJvYmx5 IG5lZWRzIHRvIGJlIGZpeGVkIik7CisrICAgICAgICAgICAgICAgICAgImJhY2tlbmQgcHJvYmFi bHkgbmVlZHMgdG8gYmUgZml4ZWQiKTsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAorZGlm ZiAtLWdpdCBhL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWF1dGhlbnRpY2F0b3IuY3BwIGIv cXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xYXV0aGVudGljYXRvci5jcHAKK2luZGV4IGQ5ZmU3 YmM0N2IuLmNjZDA0YjI5NGEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVs L3FhdXRoZW50aWNhdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL2tlcm5lbC9xYXV0 aGVudGljYXRvci5jcHAKK0BAIC01MCw2ICs1MCw3IEBACisgI2luY2x1ZGUgPHFzdHJpbmcuaD4K KyAjaW5jbHVkZSA8cWRhdGV0aW1lLmg+CisgI2luY2x1ZGUgPHFyYW5kb20uaD4KKysjaW5jbHVk ZSAicHJpdmF0ZS9xc3lzdGVtbGlicmFyeV9wLmgiCisgCisgI2lmZGVmIFFfT1NfV0lOCisgI2lu Y2x1ZGUgPHFtdXRleC5oPgorQEAgLTE1NjMsNyArMTU2NCw3IEBAIHN0YXRpYyBib29sIHFfU1NQ SV9saWJyYXJ5X2xvYWQoKQorIAorICAgICAvLyBJbml0aWFsaXplIHNlY3VyaXR5IGludGVyZmFj ZQorICAgICBpZiAocFNlY3VyaXR5RnVuY3Rpb25UYWJsZSA9PSBudWxscHRyKSB7CistICAgICAg ICBzZWN1cml0eURMTEhhbmRsZSA9IExvYWRMaWJyYXJ5KEwic2VjdXIzMi5kbGwiKTsKKysgICAg ICAgIHNlY3VyaXR5RExMSGFuZGxlID0gUVN5c3RlbUxpYnJhcnk6OmxvYWQoTCJzZWN1cjMyIik7 CisgICAgICAgICBpZiAoc2VjdXJpdHlETExIYW5kbGUgIT0gbnVsbHB0cikgeworICAgICAgICAg ICAgIElOSVRfU0VDVVJJVFlfSU5URVJGQUNFIHBJbml0U2VjdXJpdHlJbnRlcmZhY2UgPQorICAg ICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PElOSVRfU0VDVVJJVFlfSU5URVJGQUNFPigK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsva2VybmVsL3Fob3N0aW5mb191bml4LmNw cCBiL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwvcWhvc3RpbmZvX3VuaXguY3BwCitpbmRleCA5 YjBhMmVlNjY5Li43MzY3OWM5ZWYxIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL2tl cm5lbC9xaG9zdGluZm9fdW5peC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9rZXJuZWwv cWhvc3RpbmZvX3VuaXguY3BwCitAQCAtMTIyLDcgKzEyMiw2IEBAIHN0YXRpYyBRRnVuY3Rpb25Q b2ludGVyIHJlc29sdmVTeW1ib2woUUxpYnJhcnkgJmxpYiwgY29uc3QgY2hhciAqc3ltKQorIAor IExpYlJlc29sdjo6TGliUmVzb2x2KCkKKyB7CistICAgIFFMaWJyYXJ5IGxpYjsKKyAjaWZkZWYg TElCUkVTT0xWX1NPCisgICAgIGxpYi5zZXRGaWxlTmFtZShRU3RyaW5nTGl0ZXJhbChMSUJSRVNP TFZfU08pKTsKKyAgICAgaWYgKCFsaWIubG9hZCgpKQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv bmV0d29yay9zb2NrZXQvcXNvY2tzNXNvY2tldGVuZ2luZS5jcHAgYi9xdGJhc2Uvc3JjL25ldHdv cmsvc29ja2V0L3Fzb2NrczVzb2NrZXRlbmdpbmUuY3BwCitpbmRleCAzYTA0NmZkMTE2Li45N2Zh ZGNhMGIzIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tldC9xc29ja3M1c29j a2V0ZW5naW5lLmNwcAorKysrIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NvY2tldC9xc29ja3M1c29j a2V0ZW5naW5lLmNwcAorQEAgLTEyOTYsNyArMTI5Niw3IEBAIHZvaWQgUVNvY2tzNVNvY2tldEVu Z2luZVByaXZhdGU6Ol9xX3VkcFNvY2tldFJlYWROb3RpZmljYXRpb24oKQorICAgICAgICAgaW50 IHBvcyA9IDA7CisgICAgICAgICBjb25zdCBjaGFyICpidWYgPSBpbkJ1Zi5jb25zdERhdGEoKTsK KyAgICAgICAgIGlmIChpbkJ1Zi5zaXplKCkgPCA0KSB7CistICAgICAgICAgICAgUVNPQ0tTNV9E X0RFQlVHIDw8ICJidWd1cyB1ZHAgZGF0YSwgZGlzY2FyZGluZyI7CisrICAgICAgICAgICAgUVNP Q0tTNV9EX0RFQlVHIDw8ICJib2d1cyB1ZHAgZGF0YSwgZGlzY2FyZGluZyI7CisgICAgICAgICAg ICAgcmV0dXJuOworICAgICAgICAgfQorICAgICAgICAgUVNvY2tzNVJldml2ZWREYXRhZ3JhbSBk YXRhZ3JhbTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xjb250ZXh0 X29wZW5zc2wuY3BwIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsY29udGV4dF9vcGVuc3Ns LmNwcAoraW5kZXggYzlmMjAyZjU3My4uYzk5MmRhOWQ4ZSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9z cmMvbmV0d29yay9zc2wvcXNzbGNvbnRleHRfb3BlbnNzbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMv bmV0d29yay9zc2wvcXNzbGNvbnRleHRfb3BlbnNzbC5jcHAKK0BAIC00MDksNyArNDA5LDcgQEAg aW5pdF9jb250ZXh0OgorICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUVNzbDo6RHRsc1YxXzBP ckxhdGVyOgorICAgICAgICAgbWluVmVyc2lvbiA9IERUTFMxX1ZFUlNJT047CistICAgICAgICBt YXhWZXJzaW9uID0gRFRMU19NQVhfVkVSU0lPTjsKKysgICAgICAgIG1heFZlcnNpb24gPSAwOwor ICAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgUVNzbDo6RHRsc1YxXzI6CisgICAgICAgICBtaW5W ZXJzaW9uID0gRFRMUzFfMl9WRVJTSU9OOworQEAgLTQxNyw3ICs0MTcsNyBAQCBpbml0X2NvbnRl eHQ6CisgICAgICAgICBicmVhazsKKyAgICAgY2FzZSBRU3NsOjpEdGxzVjFfMk9yTGF0ZXI6Cisg ICAgICAgICBtaW5WZXJzaW9uID0gRFRMUzFfMl9WRVJTSU9OOworLSAgICAgICAgbWF4VmVyc2lv biA9IERUTFNfTUFYX1ZFUlNJT047CisrICAgICAgICBtYXhWZXJzaW9uID0gMDsKKyAgICAgICAg IGJyZWFrOworICAgICBjYXNlIFFTc2w6OlRsc1YxXzNPckxhdGVyOgorICNpZmRlZiBUTFMxXzNf VkVSU0lPTgorQEAgLTQ1NSw3ICs0NTUsNyBAQCBpbml0X2NvbnRleHQ6CisgICAgIH0KKyAKKyAg ICAgLy8gRW5hYmxlIGJ1ZyB3b3JrYXJvdW5kcy4KKy0gICAgbG9uZyBvcHRpb25zID0gUVNzbFNv Y2tldEJhY2tlbmRQcml2YXRlOjpzZXR1cE9wZW5Tc2xPcHRpb25zKGNvbmZpZ3VyYXRpb24ucHJv dG9jb2woKSwgY29uZmlndXJhdGlvbi5kLT5zc2xPcHRpb25zKTsKKysgICAgcXNzbG9wdGlvbnMg b3B0aW9ucyA9IFFTc2xTb2NrZXRCYWNrZW5kUHJpdmF0ZTo6c2V0dXBPcGVuU3NsT3B0aW9ucyhj b25maWd1cmF0aW9uLnByb3RvY29sKCksIGNvbmZpZ3VyYXRpb24uZC0+c3NsT3B0aW9ucyk7Cisg ICAgIHFfU1NMX0NUWF9zZXRfb3B0aW9ucyhzc2xDb250ZXh0LT5jdHgsIG9wdGlvbnMpOworIAor ICAgICAvLyBUZWxsIE9wZW5TU0wgdG8gcmVsZWFzZSBtZW1vcnkgZWFybHkKK2RpZmYgLS1naXQg YS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xkaWZmaWVoZWxsbWFucGFyYW1ldGVyc19vcGVu c3NsLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGRpZmZpZWhlbGxtYW5wYXJhbWV0 ZXJzX29wZW5zc2wuY3BwCitpbmRleCBhYWY4NzQxMTMwLi5iNTg5MzUzNzJjIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3NsZGlmZmllaGVsbG1hbnBhcmFtZXRlcnNfb3Bl bnNzbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbGRpZmZpZWhlbGxtYW5w YXJhbWV0ZXJzX29wZW5zc2wuY3BwCitAQCAtNTksNTcgKzU5LDYgQEAKKyAKKyBRVF9CRUdJTl9O QU1FU1BBQ0UKKyAKKy0jaWZkZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorLQorLXN0YXRp YyBpbnQgcV9ESF9jaGVjayhESCAqZGgsIGludCAqc3RhdHVzKQorLXsKKy0gICAgLy8gREhfY2hl Y2sgd2FzIGZpcnN0IGRlcHJlY2F0ZWQgaW4gT3BlblNTTCAzLjAuMCwgYXMgbG93LWxldmVsCist ICAgIC8vIEFQSTsgdGhlIEVWUF9QS0VZIGZhbWlseSBvZiBmdW5jdGlvbnMgd2FzIGFkdmlzZWQg YXMgYW4gYWx0ZXJuYXRpdmUuCistICAgIC8vIEFzIG9mIG5vdyBFVlBfUEtFWV9wYXJhbXNfY2hl Y2sgZW5kcyB1cCBjYWxsaW5nIC4uLiBESF9jaGVjaywKKy0gICAgLy8gd2hpY2ggaXMgZ29vZCBl bm91Z2guCistCistICAgIFFfQVNTRVJUKGRoKTsKKy0gICAgUV9BU1NFUlQoc3RhdHVzKTsKKy0K Ky0gICAgRVZQX1BLRVkgKmtleSA9IHFfRVZQX1BLRVlfbmV3KCk7CistICAgIGlmICgha2V5KSB7 CistICAgICAgICBxQ1dhcm5pbmcobGNTc2wsICJFVlBfUEtFWV9uZXcgZmFpbGVkIik7CistICAg ICAgICBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OmxvZ0FuZENsZWFyRXJyb3JRdWV1ZSgpOwor LSAgICAgICAgcmV0dXJuIDA7CistICAgIH0KKy0gICAgY29uc3QgYXV0byBrZXlEZWxldGVyID0g cVNjb3BlR3VhcmQoW2tleV0oKXsKKy0gICAgICAgIHFfRVZQX1BLRVlfZnJlZShrZXkpOworLSAg ICB9KTsKKy0gICAgaWYgKCFxX0VWUF9QS0VZX3NldDFfREgoa2V5LCBkaCkpIHsKKy0gICAgICAg IHFDV2FybmluZyhsY1NzbCwgIkVWUF9QS0VZX3NldDFfREggZmFpbGVkIik7CistICAgICAgICBR U3NsU29ja2V0QmFja2VuZFByaXZhdGU6OmxvZ0FuZENsZWFyRXJyb3JRdWV1ZSgpOworLSAgICAg ICAgcmV0dXJuIDA7CistICAgIH0KKy0KKy0gICAgRVZQX1BLRVlfQ1RYICprZXlDdHggPSBxX0VW UF9QS0VZX0NUWF9uZXcoa2V5LCBudWxscHRyKTsKKy0gICAgaWYgKCFrZXlDdHgpIHsKKy0gICAg ICAgIHFDV2FybmluZyhsY1NzbCwgIkVWUF9QS0VZX0NUWF9uZXcgZmFpbGVkIik7CistICAgICAg ICBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OmxvZ0FuZENsZWFyRXJyb3JRdWV1ZSgpOworLSAg ICAgICAgcmV0dXJuIDA7CistICAgIH0KKy0gICAgY29uc3QgYXV0byBjdHhEZWxldGVyID0gcVNj b3BlR3VhcmQoW2tleUN0eF17CistICAgICAgICBxX0VWUF9QS0VZX0NUWF9mcmVlKGtleUN0eCk7 CistICAgIH0pOworLQorLSAgICBjb25zdCBpbnQgcmVzdWx0ID0gcV9FVlBfUEtFWV9wYXJhbV9j aGVjayhrZXlDdHgpOworLSAgICBRU3NsU29ja2V0QmFja2VuZFByaXZhdGU6OmxvZ0FuZENsZWFy RXJyb3JRdWV1ZSgpOworLSAgICAvLyBOb3RlOiB1bmxpa2UgREhfY2hlY2ssIHdlIGNhbm5vdCBv YnRhaW4gdGhlICdzdGF0dXMnLAorLSAgICAvLyBpZiB0aGUgJ3Jlc3VsdCcgaXMgMCAoYWN0dWFs bHkgdGhlIHJlc3VsdCBpcyAxIG9ubHkKKy0gICAgLy8gaWYgdGhpcyAnc3RhdHVzJyB3YXMgMCku IFdlIGNvdWxkIHByb2JhYmx5IGNoZWNrIHRoZQorLSAgICAvLyBlcnJvcnMgZnJvbSB0aGUgZXJy b3IgcXVldWUsIGJ1dCBpdCdzIG5vdCBuZWVkZWQgYW55d2F5CistICAgIC8vIC0gc2VlIHRoZSAn aXNTYWZlREgnIGJlbG93LCBob3cgaXQgcmV0dXJucyBpbW1lZGlhdGVseQorLSAgICAvLyBvbiAw LgorLSAgICBRX1VOVVNFRChzdGF0dXMpCistCistICAgIHJldHVybiByZXN1bHQ7CistfQorLSNl bmRpZiAvLyBPUEVOU1NMX05PX0RFUFJFQ0FURURfM18wCistCisgc3RhdGljIGJvb2wgaXNTYWZl REgoREggKmRoKQorIHsKKyAgICAgaW50IHN0YXR1cyA9IDA7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2wuY3BwIGIvcXRiYXNlL3NyYy9uZXR3 b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2wuY3BwCitpbmRleCAzN2ZhZDJhNjhmLi44ZjY4NThj ODY3IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5z c2wuY3BwCisrKysgYi9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbC5j cHAKK0BAIC01NTAsOSArNTUwLDkgQEAgc3RhdGljIHZvaWQgcV9sb2FkQ2lwaGVyc0ZvckNvbm5l Y3Rpb24oU1NMICpjb25uZWN0aW9uLCBRTGlzdDxRU3NsQ2lwaGVyPiAmY2lwaGUKKyAvLyBEZWZp bmVkIGluIHFzc2xzb2NrZXQuY3BwCisgdm9pZCBxX3NldERlZmF1bHREdGxzQ2lwaGVycyhjb25z dCBRTGlzdDxRU3NsQ2lwaGVyPiAmY2lwaGVycyk7CisgCistbG9uZyBRU3NsU29ja2V0QmFja2Vu ZFByaXZhdGU6OnNldHVwT3BlblNzbE9wdGlvbnMoUVNzbDo6U3NsUHJvdG9jb2wgcHJvdG9jb2ws IFFTc2w6OlNzbE9wdGlvbnMgc3NsT3B0aW9ucykKKytxc3Nsb3B0aW9ucyBRU3NsU29ja2V0QmFj a2VuZFByaXZhdGU6OnNldHVwT3BlblNzbE9wdGlvbnMoUVNzbDo6U3NsUHJvdG9jb2wgcHJvdG9j b2wsIFFTc2w6OlNzbE9wdGlvbnMgc3NsT3B0aW9ucykKKyB7CistICAgIGxvbmcgb3B0aW9uczsK KysgICAgcXNzbG9wdGlvbnMgb3B0aW9uczsKKyAgICAgaWYgKHByb3RvY29sID09IFFTc2w6OlRs c1YxU3NsVjMpCisgICAgICAgICBvcHRpb25zID0gU1NMX09QX0FMTHxTU0xfT1BfTk9fU1NMdjJ8 U1NMX09QX05PX1NTTHYzOworICAgICBlbHNlIGlmIChwcm90b2NvbCA9PSBRU3NsOjpTZWN1cmVQ cm90b2NvbHMpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0 X29wZW5zc2xfcC5oIGIvcXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xf cC5oCitpbmRleCA0MTAzZGUyM2U4Li41NTQ3NTg5MjU2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Ny Yy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfcC5oCisrKysgYi9xdGJhc2Uvc3JjL25l dHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9wLmgKK0BAIC0xMDcsNiArMTA3LDEyIEBACisg CisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisrI2lmIGRlZmluZWQoT1BFTlNTTF9WRVJTSU9OX01B Sk9SKSAmJiBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworK3R5cGVkZWYgdWludDY0X3QgcXNz bG9wdGlvbnM7CisrI2Vsc2UKKyt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcXNzbG9wdGlvbnM7Cisr I2VuZGlmCisrCisgc3RydWN0IFFTc2xFcnJvckVudHJ5IHsKKyAgICAgaW50IGNvZGU7CisgICAg IGludCBkZXB0aDsKK0BAIC0xNzEsNyArMTc3LDcgQEAgcHVibGljOgorICAgICBRVmVjdG9yPFFT c2xFcnJvcj4gb2NzcEVycm9yczsKKyAgICAgUUJ5dGVBcnJheSBvY3NwUmVzcG9uc2VEZXI7Cisg CistICAgIFFfQVVUT1RFU1RfRVhQT1JUIHN0YXRpYyBsb25nIHNldHVwT3BlblNzbE9wdGlvbnMo UVNzbDo6U3NsUHJvdG9jb2wgcHJvdG9jb2wsIFFTc2w6OlNzbE9wdGlvbnMgc3NsT3B0aW9ucyk7 CisrICAgIFFfQVVUT1RFU1RfRVhQT1JUIHN0YXRpYyBxc3Nsb3B0aW9ucyBzZXR1cE9wZW5Tc2xP cHRpb25zKFFTc2w6OlNzbFByb3RvY29sIHByb3RvY29sLCBRU3NsOjpTc2xPcHRpb25zIHNzbE9w dGlvbnMpOworICAgICBzdGF0aWMgUVNzbENpcGhlciBRU3NsQ2lwaGVyX2Zyb21fU1NMX0NJUEhF Uihjb25zdCBTU0xfQ0lQSEVSICpjaXBoZXIpOworICAgICBzdGF0aWMgUUxpc3Q8UVNzbENlcnRp ZmljYXRlPiBTVEFDS09GWDUwOV90b19RU3NsQ2VydGlmaWNhdGVzKFNUQUNLX09GKFg1MDkpICp4 NTA5KTsKKyAgICAgc3RhdGljIFFMaXN0PFFTc2xFcnJvcj4gdmVyaWZ5KGNvbnN0IFFMaXN0PFFT c2xDZXJ0aWZpY2F0ZT4gJmNlcnRpZmljYXRlQ2hhaW4sIGNvbnN0IFFTdHJpbmcgJmhvc3ROYW1l KTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNz bF9zeW1ib2xzLmNwcCBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3Ns X3N5bWJvbHMuY3BwCitpbmRleCBlNTNmYjI3OWYwLi40NTljY2QwYjE5IDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9scy5jcHAKKysr KyBiL3F0YmFzZS9zcmMvbmV0d29yay9zc2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHMuY3Bw CitAQCAtMTQ4LDcgKzE0OCw2IEBAIERFRklORUZVTkMoaW50LCBFVlBfUEtFWV91cF9yZWYsIEVW UF9QS0VZICphLCBhLCByZXR1cm4gMCwgcmV0dXJuKQorIERFRklORUZVTkMyKEVWUF9QS0VZX0NU WCAqLCBFVlBfUEtFWV9DVFhfbmV3LCBFVlBfUEtFWSAqcGtleSwgcGtleSwgRU5HSU5FICplLCBl LCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZVTkMoaW50LCBFVlBfUEtFWV9wYXJh bV9jaGVjaywgRVZQX1BLRVlfQ1RYICpjdHgsIGN0eCwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJ TkVGVU5DKHZvaWQsIEVWUF9QS0VZX0NUWF9mcmVlLCBFVlBfUEtFWV9DVFggKmN0eCwgY3R4LCBy ZXR1cm4sIHJldHVybikKKy1ERUZJTkVGVU5DKGludCwgRVZQX1BLRVlfYmFzZV9pZCwgRVZQX1BL RVkgKmEsIGEsIHJldHVybiBOSURfdW5kZWYsIHJldHVybikKKyBERUZJTkVGVU5DKGludCwgUlNB X2JpdHMsIFJTQSAqYSwgYSwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5DKGludCwgRFNB X2JpdHMsIERTQSAqYSwgYSwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5DKGludCwgT1BF TlNTTF9za19udW0sIE9QRU5TU0xfU1RBQ0sgKmEsIGEsIHJldHVybiAtMSwgcmV0dXJuKQorQEAg LTE1OCw3ICsxNTcsNyBAQCBERUZJTkVGVU5DMih2b2lkLCBPUEVOU1NMX3NrX3B1c2gsIE9QRU5T U0xfU1RBQ0sgKmEsIGEsIHZvaWQgKmIsIGIsIHJldHVybiwgRFVNTQorIERFRklORUZVTkModm9p ZCwgT1BFTlNTTF9za19mcmVlLCBPUEVOU1NMX1NUQUNLICphLCBhLCByZXR1cm4sIERVTU1ZQVJH KQorIERFRklORUZVTkMyKHZvaWQgKiwgT1BFTlNTTF9za192YWx1ZSwgT1BFTlNTTF9TVEFDSyAq YSwgYSwgaW50IGIsIGIsIHJldHVybiBudWxscHRyLCByZXR1cm4pCisgREVGSU5FRlVOQyhpbnQs IFNTTF9zZXNzaW9uX3JldXNlZCwgU1NMICphLCBhLCByZXR1cm4gMCwgcmV0dXJuKQorLURFRklO RUZVTkMyKHVuc2lnbmVkIGxvbmcsIFNTTF9DVFhfc2V0X29wdGlvbnMsIFNTTF9DVFggKmN0eCwg Y3R4LCB1bnNpZ25lZCBsb25nIG9wLCBvcCwgcmV0dXJuIDAsIHJldHVybikKKytERUZJTkVGVU5D Mihxc3Nsb3B0aW9ucywgU1NMX0NUWF9zZXRfb3B0aW9ucywgU1NMX0NUWCAqY3R4LCBjdHgsIHFz c2xvcHRpb25zIG9wLCBvcCwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5DKGludCwgU1NM X0NUWF9nZXRfc2VjdXJpdHlfbGV2ZWwsIGNvbnN0IFNTTF9DVFggKmN0eCwgY3R4LCByZXR1cm4g LTEsIHJldHVybikKKyBERUZJTkVGVU5DMih2b2lkLCBTU0xfQ1RYX3NldF9zZWN1cml0eV9sZXZl bCwgU1NMX0NUWCAqY3R4LCBjdHgsIGludCBsZXZlbCwgbGV2ZWwsIHJldHVybiwgcmV0dXJuKQor ICNpZmRlZiBUTFMxXzNfVkVSU0lPTgorQEAgLTM3MSw3ICszNzAsMTUgQEAgREVGSU5FRlVOQyhj b25zdCBTU0xfQ0lQSEVSICosIFNTTF9nZXRfY3VycmVudF9jaXBoZXIsIFNTTCAqYSwgYSwgcmV0 dXJuIG51bGxwdHIKKyBERUZJTkVGVU5DKGludCwgU1NMX3ZlcnNpb24sIGNvbnN0IFNTTCAqYSwg YSwgcmV0dXJuIDAsIHJldHVybikKKyBERUZJTkVGVU5DMihpbnQsIFNTTF9nZXRfZXJyb3IsIFNT TCAqYSwgYSwgaW50IGIsIGIsIHJldHVybiAtMSwgcmV0dXJuKQorIERFRklORUZVTkMoU1RBQ0tf T0YoWDUwOSkgKiwgU1NMX2dldF9wZWVyX2NlcnRfY2hhaW4sIFNTTCAqYSwgYSwgcmV0dXJuIG51 bGxwdHIsIHJldHVybikKKysKKysjaWYgZGVmaW5lZChPUEVOU1NMX1ZFUlNJT05fTUFKT1IpICYm IE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrREVGSU5FRlVOQyhYNTA5ICosIFNTTF9nZXQx X3BlZXJfY2VydGlmaWNhdGUsIFNTTCAqYSwgYSwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKytE RUZJTkVGVU5DKGludCwgRVZQX1BLRVlfZ2V0X2Jhc2VfaWQsIGNvbnN0IEVWUF9QS0VZICpwa2V5 LCBwa2V5LCByZXR1cm4gLTEsIHJldHVybikKKysjZWxzZQorIERFRklORUZVTkMoWDUwOSAqLCBT U0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUsIFNTTCAqYSwgYSwgcmV0dXJuIG51bGxwdHIsIHJldHVy bikKKytERUZJTkVGVU5DKGludCwgRVZQX1BLRVlfYmFzZV9pZCwgRVZQX1BLRVkgKmEsIGEsIHJl dHVybiBOSURfdW5kZWYsIHJldHVybikKKysjZW5kaWYgLy8gT1BFTlNTTF9WRVJTSU9OX01BSk9S ID49IDMKKysKKyBERUZJTkVGVU5DKGxvbmcsIFNTTF9nZXRfdmVyaWZ5X3Jlc3VsdCwgY29uc3Qg U1NMICphLCBhLCByZXR1cm4gLTEsIHJldHVybikKKyBERUZJTkVGVU5DKFNTTCAqLCBTU0xfbmV3 LCBTU0xfQ1RYICphLCBhLCByZXR1cm4gbnVsbHB0ciwgcmV0dXJuKQorIERFRklORUZVTkMoU1NM X0NUWCAqLCBTU0xfZ2V0X1NTTF9DVFgsIFNTTCAqYSwgYSwgcmV0dXJuIG51bGxwdHIsIHJldHVy bikKK0BAIC00OTIsOSArNDk5LDcgQEAgREVGSU5FRlVOQyhESCAqLCBESF9uZXcsIERVTU1ZQVJH LCBEVU1NWUFSRywgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJTkVGVU5DKHZvaWQsIERI X2ZyZWUsIERIICpkaCwgZGgsIHJldHVybiwgRFVNTVlBUkcpCisgREVGSU5FRlVOQzMoREggKiwg ZDJpX0RIcGFyYW1zLCBESCoqYSwgYSwgY29uc3QgdW5zaWduZWQgY2hhciAqKnBwLCBwcCwgbG9u ZyBsZW5ndGgsIGxlbmd0aCwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyBERUZJTkVGVU5DMihp bnQsIGkyZF9ESHBhcmFtcywgREggKmEsIGEsIHVuc2lnbmVkIGNoYXIgKipwLCBwLCByZXR1cm4g LTEsIHJldHVybikKKy0jaWZuZGVmIE9QRU5TU0xfTk9fREVQUkVDQVRFRF8zXzAKKyBERUZJTkVG VU5DMihpbnQsIERIX2NoZWNrLCBESCAqZGgsIGRoLCBpbnQgKmNvZGVzLCBjb2RlcywgcmV0dXJu IDAsIHJldHVybikKKy0jZW5kaWYgLy8gT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorIERFRklO RUZVTkMzKEJJR05VTSAqLCBCTl9iaW4yYm4sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnMsIHMsIGlu dCBsZW4sIGxlbiwgQklHTlVNICpyZXQsIHJldCwgcmV0dXJuIG51bGxwdHIsIHJldHVybikKKyAK KyAjaWZuZGVmIE9QRU5TU0xfTk9fRUMKK0BAIC04NjgsNyArODczLDYgQEAgYm9vbCBxX3Jlc29s dmVPcGVuU3NsU3ltYm9scygpCisgICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX0NUWF9uZXcpCisg ICAgIFJFU09MVkVGVU5DKEVWUF9QS0VZX3BhcmFtX2NoZWNrKQorICAgICBSRVNPTFZFRlVOQyhF VlBfUEtFWV9DVFhfZnJlZSkKKy0gICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfYmFzZV9pZCkKKyAg ICAgUkVTT0xWRUZVTkMoUlNBX2JpdHMpCisgICAgIFJFU09MVkVGVU5DKE9QRU5TU0xfc2tfbmV3 X251bGwpCisgICAgIFJFU09MVkVGVU5DKE9QRU5TU0xfc2tfcHVzaCkKK0BAIC0xMTA3LDcgKzEx MTEsMTUgQEAgYm9vbCBxX3Jlc29sdmVPcGVuU3NsU3ltYm9scygpCisgICAgIFJFU09MVkVGVU5D KFNTTF92ZXJzaW9uKQorICAgICBSRVNPTFZFRlVOQyhTU0xfZ2V0X2Vycm9yKQorICAgICBSRVNP TFZFRlVOQyhTU0xfZ2V0X3BlZXJfY2VydF9jaGFpbikKKysKKysjaWYgZGVmaW5lZChPUEVOU1NM X1ZFUlNJT05fTUFKT1IpICYmIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrICAgIFJFU09M VkVGVU5DKFNTTF9nZXQxX3BlZXJfY2VydGlmaWNhdGUpCisrICAgIFJFU09MVkVGVU5DKEVWUF9Q S0VZX2dldF9iYXNlX2lkKQorKyNlbHNlCisgICAgIFJFU09MVkVGVU5DKFNTTF9nZXRfcGVlcl9j ZXJ0aWZpY2F0ZSkKKysgICAgUkVTT0xWRUZVTkMoRVZQX1BLRVlfYmFzZV9pZCkKKysjZW5kaWYg Ly8gT1BFTlNTTF9WRVJTSU9OX01BSk9SID49IDMKKysKKyAgICAgUkVTT0xWRUZVTkMoU1NMX2dl dF92ZXJpZnlfcmVzdWx0KQorICAgICBSRVNPTFZFRlVOQyhTU0xfbmV3KQorICAgICBSRVNPTFZF RlVOQyhTU0xfZ2V0X1NTTF9DVFgpCitAQCAtMTIwNiw5ICsxMjE4LDcgQEAgYm9vbCBxX3Jlc29s dmVPcGVuU3NsU3ltYm9scygpCisgICAgIFJFU09MVkVGVU5DKERIX2ZyZWUpCisgICAgIFJFU09M VkVGVU5DKGQyaV9ESHBhcmFtcykKKyAgICAgUkVTT0xWRUZVTkMoaTJkX0RIcGFyYW1zKQorLSNp Zm5kZWYgT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorICAgICBSRVNPTFZFRlVOQyhESF9jaGVj aykKKy0jZW5kaWYgLy8gT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorICAgICBSRVNPTFZFRlVO QyhCTl9iaW4yYm4pCisgCisgI2lmbmRlZiBPUEVOU1NMX05PX0VDCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0X29wZW5zc2xfc3ltYm9sc19wLmggYi9xdGJh c2Uvc3JjL25ldHdvcmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzX3AuaAoraW5kZXgg OTVlODg5N2EzYi4uMjdhZWZmYTE4YSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvbmV0d29yay9z c2wvcXNzbHNvY2tldF9vcGVuc3NsX3N5bWJvbHNfcC5oCisrKysgYi9xdGJhc2Uvc3JjL25ldHdv cmsvc3NsL3Fzc2xzb2NrZXRfb3BlbnNzbF9zeW1ib2xzX3AuaAorQEAgLTIzNyw3ICsyMzcsNiBA QCBRX0FVVE9URVNUX0VYUE9SVCBpbnQgcV9FVlBfUEtFWV91cF9yZWYoRVZQX1BLRVkgKmEpOwor IEVWUF9QS0VZX0NUWCAqcV9FVlBfUEtFWV9DVFhfbmV3KEVWUF9QS0VZICpwa2V5LCBFTkdJTkUg KmUpOworIHZvaWQgcV9FVlBfUEtFWV9DVFhfZnJlZShFVlBfUEtFWV9DVFggKmN0eCk7CisgaW50 IHFfRVZQX1BLRVlfcGFyYW1fY2hlY2soRVZQX1BLRVlfQ1RYICpjdHgpOworLWludCBxX0VWUF9Q S0VZX2Jhc2VfaWQoRVZQX1BLRVkgKmEpOworIGludCBxX1JTQV9iaXRzKFJTQSAqYSk7CisgUV9B VVRPVEVTVF9FWFBPUlQgaW50IHFfT1BFTlNTTF9za19udW0oT1BFTlNTTF9TVEFDSyAqYSk7Cisg UV9BVVRPVEVTVF9FWFBPUlQgdm9pZCBxX09QRU5TU0xfc2tfcG9wX2ZyZWUoT1BFTlNTTF9TVEFD SyAqYSwgdm9pZCAoKmIpKHZvaWQgKikpOworQEAgLTI0Niw3ICsyNDUsNyBAQCBRX0FVVE9URVNU X0VYUE9SVCB2b2lkIHFfT1BFTlNTTF9za19wdXNoKE9QRU5TU0xfU1RBQ0sgKnN0LCB2b2lkICpk YXRhKTsKKyBRX0FVVE9URVNUX0VYUE9SVCB2b2lkIHFfT1BFTlNTTF9za19mcmVlKE9QRU5TU0xf U1RBQ0sgKmEpOworIFFfQVVUT1RFU1RfRVhQT1JUIHZvaWQgKiBxX09QRU5TU0xfc2tfdmFsdWUo T1BFTlNTTF9TVEFDSyAqYSwgaW50IGIpOworIGludCBxX1NTTF9zZXNzaW9uX3JldXNlZChTU0wg KmEpOworLXVuc2lnbmVkIGxvbmcgcV9TU0xfQ1RYX3NldF9vcHRpb25zKFNTTF9DVFggKmN0eCwg dW5zaWduZWQgbG9uZyBvcCk7CisrcXNzbG9wdGlvbnMgcV9TU0xfQ1RYX3NldF9vcHRpb25zKFNT TF9DVFggKmN0eCwgcXNzbG9wdGlvbnMgb3ApOworIGludCBxX09QRU5TU0xfaW5pdF9zc2wodWlu dDY0X3Qgb3B0cywgY29uc3QgT1BFTlNTTF9JTklUX1NFVFRJTkdTICpzZXR0aW5ncyk7Cisgc2l6 ZV90IHFfU1NMX2dldF9jbGllbnRfcmFuZG9tKFNTTCAqYSwgdW5zaWduZWQgY2hhciAqb3V0LCBz aXplX3Qgb3V0bGVuKTsKKyBzaXplX3QgcV9TU0xfU0VTU0lPTl9nZXRfbWFzdGVyX2tleShjb25z dCBTU0xfU0VTU0lPTiAqc2Vzc2lvbiwgdW5zaWduZWQgY2hhciAqb3V0LCBzaXplX3Qgb3V0bGVu KTsKK0BAIC01MTAsNyArNTA5LDYgQEAgY29uc3QgU1NMX0NJUEhFUiAqcV9TU0xfZ2V0X2N1cnJl bnRfY2lwaGVyKFNTTCAqYSk7CisgaW50IHFfU1NMX3ZlcnNpb24oY29uc3QgU1NMICphKTsKKyBp bnQgcV9TU0xfZ2V0X2Vycm9yKFNTTCAqYSwgaW50IGIpOworIFNUQUNLX09GKFg1MDkpICpxX1NT TF9nZXRfcGVlcl9jZXJ0X2NoYWluKFNTTCAqYSk7CistWDUwOSAqcV9TU0xfZ2V0X3BlZXJfY2Vy dGlmaWNhdGUoU1NMICphKTsKKyBsb25nIHFfU1NMX2dldF92ZXJpZnlfcmVzdWx0KGNvbnN0IFNT TCAqYSk7CisgU1NMICpxX1NTTF9uZXcoU1NMX0NUWCAqYSk7CisgU1NMX0NUWCAqcV9TU0xfZ2V0 X1NTTF9DVFgoU1NMICphKTsKK0BAIC01ODIsMTAgKzU4MCw3IEBAIERIICpxX0RIX25ldygpOwor IHZvaWQgcV9ESF9mcmVlKERIICpkaCk7CisgREggKnFfZDJpX0RIcGFyYW1zKERIICoqYSwgY29u c3QgdW5zaWduZWQgY2hhciAqKnBwLCBsb25nIGxlbmd0aCk7CisgaW50IHFfaTJkX0RIcGFyYW1z KERIICphLCB1bnNpZ25lZCBjaGFyICoqcCk7CistCistI2lmbmRlZiBPUEVOU1NMX05PX0RFUFJF Q0FURURfM18wCisgaW50IHFfREhfY2hlY2soREggKmRoLCBpbnQgKmNvZGVzKTsKKy0jZW5kaWYg Ly8gT1BFTlNTTF9OT19ERVBSRUNBVEVEXzNfMAorIAorIEJJR05VTSAqcV9CTl9iaW4yYm4oY29u c3QgdW5zaWduZWQgY2hhciAqcywgaW50IGxlbiwgQklHTlVNICpyZXQpOworICNkZWZpbmUgcV9T U0xfQ1RYX3NldF90bXBfZGgoY3R4LCBkaCkgcV9TU0xfQ1RYX2N0cmwoKGN0eCksIFNTTF9DVFJM X1NFVF9UTVBfREgsIDAsIChjaGFyICopZGgpCitAQCAtNzU0LDYgKzc0OSwxNyBAQCB2b2lkIHFf Q1JZUFRPX2ZyZWUodm9pZCAqc3RyLCBjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSk7CisgaW50 IHFfU1NMX0NUWF9nZXRfc2VjdXJpdHlfbGV2ZWwoY29uc3QgU1NMX0NUWCAqY3R4KTsKKyB2b2lk IHFfU1NMX0NUWF9zZXRfc2VjdXJpdHlfbGV2ZWwoU1NMX0NUWCAqY3R4LCBpbnQgbGV2ZWwpOwor IAorKy8vIEhlcmUgd2UgaGF2ZSB0aGUgb25lcyB0aGF0IG1ha2UgZGlmZmVyZW5jZSBiZXR3ZWVu IE9wZW5TU0wgcHJlL3Bvc3QgdjM6CisrI2lmIGRlZmluZWQoT1BFTlNTTF9WRVJTSU9OX01BSk9S KSAmJiBPUEVOU1NMX1ZFUlNJT05fTUFKT1IgPj0gMworK1g1MDkgKnFfU1NMX2dldDFfcGVlcl9j ZXJ0aWZpY2F0ZShTU0wgKmEpOworKyNkZWZpbmUgcV9TU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGUg cV9TU0xfZ2V0MV9wZWVyX2NlcnRpZmljYXRlCisraW50IHFfRVZQX1BLRVlfZ2V0X2Jhc2VfaWQo Y29uc3QgRVZQX1BLRVkgKnBrZXkpOworKyNkZWZpbmUgcV9FVlBfUEtFWV9iYXNlX2lkIHFfRVZQ X1BLRVlfZ2V0X2Jhc2VfaWQKKysjZWxzZQorK1g1MDkgKnFfU1NMX2dldF9wZWVyX2NlcnRpZmlj YXRlKFNTTCAqYSk7CisraW50IHFfRVZQX1BLRVlfYmFzZV9pZChFVlBfUEtFWSAqYSk7CisrI2Vu ZGlmIC8vIE9QRU5TU0xfVkVSU0lPTl9NQUpPUiA+PSAzCisrCisgUVRfRU5EX05BTUVTUEFDRQor IAorICNlbmRpZgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2VnbGNv bnZlbmllbmNlL3F0X2VnbF9wLmggYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9lZ2xjb252 ZW5pZW5jZS9xdF9lZ2xfcC5oCitpbmRleCBiZjM3ZDA3ZmQ4Li5kYmQ0MmZiNzk5IDEwMDY0NAor LS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVuY2UvcXRfZWdsX3Au aAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZWdsY29udmVuaWVuY2UvcXRfZWds X3AuaAorQEAgLTYxLDcgKzYxLDExIEBACisgIyBpZiAhZGVmaW5lZChRX09TX0lOVEVHUklUWSkK KyAjICBkZWZpbmUgV0lOX0lOVEVSRkFDRV9DVVNUT00gICAvLyBOVgorICMgZW5kaWYgLy8gUV9P U19JTlRFR1JJVFkKKy0jZW5kaWYgIC8vIFFUX0VHTF9OT19YMTEKKysjZWxzZSAvLyBRVF9FR0xf Tk9fWDExCisrLy8gSWYgb25lIGhhcyBhbiBlZ2xwbGF0Zm9ybS5oIHdpdGggaHR0cHM6Ly9naXRo dWIuY29tL0tocm9ub3NHcm91cC9FR0wtUmVnaXN0cnkvcHVsbC8xMzAKKysvLyB0aGF0IG5lZWRz IFVTRV9YMTEgdG8gYmUgZGVmaW5lZC4KKysjIGRlZmluZSBVU0VfWDExCisrI2VuZGlmCisgCisg I2lmZGVmIFFUX0VHTF9XQVlMQU5ECisgIyBkZWZpbmUgV0FZTEFORCAvLyBOVgorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ZvbnRkYXRhYmFzZXMvZm9udGNvbmZpZy9x Zm9udGNvbmZpZ2RhdGFiYXNlLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ZvbnRk YXRhYmFzZXMvZm9udGNvbmZpZy9xZm9udGNvbmZpZ2RhdGFiYXNlLmNwcAoraW5kZXggMTU5YjQ5 MGNlMC4uMDBhYTgwY2Q1OCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L2ZvbnRkYXRhYmFzZXMvZm9udGNvbmZpZy9xZm9udGNvbmZpZ2RhdGFiYXNlLmNwcAorKysrIGIv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvZm9udGRhdGFiYXNlcy9mb250Y29uZmlnL3Fmb250 Y29uZmlnZGF0YWJhc2UuY3BwCitAQCAtNTY3LDYgKzU2Nyw4IEBAIHZvaWQgUUZvbnRjb25maWdE YXRhYmFzZTo6cG9wdWxhdGVGb250RGF0YWJhc2UoKQorICAgICAgICAgZm9udHMgPSBGY0ZvbnRM aXN0KG51bGxwdHIsIHBhdHRlcm4sIG9zKTsKKyAgICAgICAgIEZjT2JqZWN0U2V0RGVzdHJveShv cyk7CisgICAgICAgICBGY1BhdHRlcm5EZXN0cm95KHBhdHRlcm4pOworKyAgICAgICAgaWYgKCFm b250cykKKysgICAgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKKyAgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBmb250cy0+bmZvbnQ7IGkrKykKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRm b3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbi5jcHAgYi9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbi5jcHAKK2luZGV4IGI3MTNj MTk0NDcuLjdjYjlhOGM3OWEgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9y dC9pbnB1dC94a2Jjb21tb24vcXhrYmNvbW1vbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZv cm1zdXBwb3J0L2lucHV0L3hrYmNvbW1vbi9xeGtiY29tbW9uLmNwcAorQEAgLTk1LDYgKzk1LDcg QEAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBhdXRvIEtleVRibCA9IHFNYWtlQXJyYXkoCisgICAg ICAgICBYa2IyUXQ8WEtCX0tFWV9DbGVhciwgICAgICAgICAgICAgICAgICAgUXQ6OktleV9EZWxl dGU+LAorICAgICAgICAgWGtiMlF0PFhLQl9LRVlfUGF1c2UsICAgICAgICAgICAgICAgICAgIFF0 OjpLZXlfUGF1c2U+LAorICAgICAgICAgWGtiMlF0PFhLQl9LRVlfUHJpbnQsICAgICAgICAgICAg ICAgICAgIFF0OjpLZXlfUHJpbnQ+LAorKyAgICAgICAgWGtiMlF0PFhLQl9LRVlfU3lzX1JlcSwg ICAgICAgICAgICAgICAgIFF0OjpLZXlfU3lzUmVxPiwKKyAgICAgICAgIFhrYjJRdDwweDEwMDVG RjYwLCAgICAgICAgICAgICAgICAgICAgICBRdDo6S2V5X1N5c1JlcT4sICAgICAgICAgLy8gaGFy ZGNvZGVkIFN1biBTeXNSZXEKKyAgICAgICAgIFhrYjJRdDwweDEwMDdmZjAwLCAgICAgICAgICAg ICAgICAgICAgICBRdDo6S2V5X1N5c1JlcT4sICAgICAgICAgLy8gaGFyZGNvZGVkIFgzODYgU3lz UmVxCisgCitAQCAtNDcxLDcgKzQ3Miw3IEBAIFFWZWN0b3I8eGtiX2tleXN5bV90PiBRWGtiQ29t bW9uOjp0b0tleXN5bShRS2V5RXZlbnQgKmV2ZW50KQorICAgICB9IGVsc2UgaWYgKGV2ZW50LT5t b2RpZmllcnMoKSAmIFF0OjpLZXlwYWRNb2RpZmllcikgeworICAgICAgICAgaWYgKHF0S2V5ID49 IFF0OjpLZXlfMCAmJiBxdEtleSA8PSBRdDo6S2V5XzkpCisgICAgICAgICAgICAga2V5c3ltcy5h cHBlbmQoWEtCX0tFWV9LUF8wICsgKHF0S2V5IC0gUXQ6OktleV8wKSk7CistICAgIH0gZWxzZSBp ZiAoaXNMYXRpbihxdEtleSkgJiYgZXZlbnQtPnRleHQoKS5pc1VwcGVyKCkpIHsKKysgICAgfSBl bHNlIGlmIChpc0xhdGluMShxdEtleSkgJiYgZXZlbnQtPnRleHQoKS5pc1VwcGVyKCkpIHsKKyAg ICAgICAgIGtleXN5bXMuYXBwZW5kKHF0S2V5KTsKKyAgICAgfQorIAorQEAgLTUyMyw3ICs1MjQs NyBAQCBpbnQgUVhrYkNvbW1vbjo6a2V5c3ltVG9RdEtleSh4a2Jfa2V5c3ltX3Qga2V5c3ltLCBR dDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kaWZpZQorICAgICAgICAgLy8gV2l0aCBzdGFuZGFyZCBz aG9ydGN1dHMgd2Ugc2hvdWxkIHByZWZlciBhIGxhdGluIGNoYXJhY3RlciwgdGhpcyBpcworICAg ICAgICAgLy8gZm9yIGNoZWNrcyBsaWtlICJzb21lIHFrZXlldmVudCA9PSBRS2V5U2VxdWVuY2U6 OkNvcHkiIHRvIHdvcmsgZXZlbgorICAgICAgICAgLy8gd2hlbiB1c2luZyBmb3IgZXhhbXBsZSAn cnVzc2lhbicga2V5Ym9hcmQgbGF5b3V0LgorLSAgICAgICAgaWYgKCFRWGtiQ29tbW9uOjppc0xh dGluKGtleXN5bSkpIHsKKysgICAgICAgIGlmICghUVhrYkNvbW1vbjo6aXNMYXRpbjEoa2V5c3lt KSkgeworICAgICAgICAgICAgIHhrYl9rZXlzeW1fdCBsYXRpbktleXN5bSA9IFFYa2JDb21tb246 Omxvb2t1cExhdGluS2V5c3ltKHN0YXRlLCBjb2RlKTsKKyAgICAgICAgICAgICBpZiAobGF0aW5L ZXlzeW0gIT0gWEtCX0tFWV9Ob1N5bWJvbCkKKyAgICAgICAgICAgICAgICAga2V5c3ltID0gbGF0 aW5LZXlzeW07CitAQCAtNTQ2LDcgKzU0Nyw3IEBAIHN0YXRpYyBpbnQga2V5c3ltVG9RdEtleV9p bnRlcm5hbCh4a2Jfa2V5c3ltX3Qga2V5c3ltLCBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgbW9kCisg ICAgIH0gZWxzZSBpZiAoa2V5c3ltID49IFhLQl9LRVlfS1BfMCAmJiBrZXlzeW0gPD0gWEtCX0tF WV9LUF85KSB7CisgICAgICAgICAvLyBudW1lcmljIGtleXBhZCBrZXlzCisgICAgICAgICBxdEtl eSA9IFF0OjpLZXlfMCArIChrZXlzeW0gLSBYS0JfS0VZX0tQXzApOworLSAgICB9IGVsc2UgaWYg KFFYa2JDb21tb246OmlzTGF0aW4oa2V5c3ltKSkgeworKyAgICB9IGVsc2UgaWYgKFFYa2JDb21t b246OmlzTGF0aW4xKGtleXN5bSkpIHsKKyAgICAgICAgIHF0S2V5ID0gUVhrYkNvbW1vbjo6cXhr YmNvbW1vbl94a2Jfa2V5c3ltX3RvX3VwcGVyKGtleXN5bSk7CisgICAgIH0gZWxzZSB7CisgICAg ICAgICAvLyBjaGVjayBpZiB3ZSBoYXZlIGEgZGlyZWN0IG1hcHBpbmcKK0BAIC02NzgsNyArNjc5 LDcgQEAgUUxpc3Q8aW50PiBRWGtiQ29tbW9uOjpwb3NzaWJsZUtleXMoeGtiX3N0YXRlICpzdGF0 ZSwgY29uc3QgUUtleUV2ZW50ICpldmVudCwKKyAgICAgICAgIFF0OjpLZXlib2FyZE1vZGlmaWVy cyBuZWVkZWRNb2RzID0gTW9kc1RibFtpXTsKKyAgICAgICAgIGlmICgobW9kaWZpZXJzICYgbmVl ZGVkTW9kcykgPT0gbmVlZGVkTW9kcykgeworICAgICAgICAgICAgIGlmIChpID09IDgpIHsKKy0g ICAgICAgICAgICAgICAgaWYgKGlzTGF0aW4oYmFzZVF0S2V5KSkKKysgICAgICAgICAgICAgICAg aWYgKGlzTGF0aW4xKGJhc2VRdEtleSkpCisgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK KyAgICAgICAgICAgICAgICAgLy8gYWRkIGEgbGF0aW4ga2V5IGFzIGEgZmFsbCBiYWNrIGtleQor ICAgICAgICAgICAgICAgICBzeW0gPSBsb29rdXBMYXRpbktleXN5bShzdGF0ZSwga2V5Y29kZSk7 CitAQCAtNzMzLDcgKzczNCw3IEBAIHZvaWQgUVhrYkNvbW1vbjo6dmVyaWZ5SGFzTGF0aW5MYXlv dXQoeGtiX2tleW1hcCAqa2V5bWFwKQorICAgICBmb3IgKHhrYl9sYXlvdXRfaW5kZXhfdCBsYXlv dXQgPSAwOyBsYXlvdXQgPCBsYXlvdXRDb3VudDsgKytsYXlvdXQpIHsKKyAgICAgICAgIGZvciAo eGtiX2tleWNvZGVfdCBjb2RlID0gbWluS2V5Y29kZTsgY29kZSA8IG1heEtleWNvZGU7ICsrY29k ZSkgeworICAgICAgICAgICAgIHhrYl9rZXltYXBfa2V5X2dldF9zeW1zX2J5X2xldmVsKGtleW1h cCwgY29kZSwgbGF5b3V0LCAwLCAma2V5c3ltcyk7CistICAgICAgICAgICAgaWYgKGtleXN5bXMg JiYgaXNMYXRpbihrZXlzeW1zWzBdKSkKKysgICAgICAgICAgICBpZiAoa2V5c3ltcyAmJiBpc0xh dGluMShrZXlzeW1zWzBdKSkKKyAgICAgICAgICAgICAgICAgbnJMYXRpbktleXMrKzsKKyAgICAg ICAgICAgICBpZiAobnJMYXRpbktleXMgPiAxMCkgLy8gYXJiaXRyYXJpbHkgY2hvc2VuIHRocmVz aG9sZAorICAgICAgICAgICAgICAgICByZXR1cm47CitAQCAtNzY2LDcgKzc2Nyw3IEBAIHhrYl9r ZXlzeW1fdCBRWGtiQ29tbW9uOjpsb29rdXBMYXRpbktleXN5bSh4a2Jfc3RhdGUgKnN0YXRlLCB4 a2Jfa2V5Y29kZV90IGtleWNvCisgICAgICAgICB4a2JfbGV2ZWxfaW5kZXhfdCBsZXZlbCA9IHhr Yl9zdGF0ZV9rZXlfZ2V0X2xldmVsKHN0YXRlLCBrZXljb2RlLCBsYXlvdXQpOworICAgICAgICAg aWYgKHhrYl9rZXltYXBfa2V5X2dldF9zeW1zX2J5X2xldmVsKGtleW1hcCwga2V5Y29kZSwgbGF5 b3V0LCBsZXZlbCwgJnN5bXMpICE9IDEpCisgICAgICAgICAgICAgY29udGludWU7CistICAgICAg ICBpZiAoaXNMYXRpbihzeW1zWzBdKSkgeworKyAgICAgICAgaWYgKGlzTGF0aW4xKHN5bXNbMF0p KSB7CisgICAgICAgICAgICAgc3ltID0gc3ltc1swXTsKKyAgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94 a2Jjb21tb24vcXhrYmNvbW1vbl9wLmggYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1 dC94a2Jjb21tb24vcXhrYmNvbW1vbl9wLmgKK2luZGV4IDU2MWVhZTAzZGIuLjgzODliZDhmNWEg MTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9pbnB1dC94a2Jjb21tb24v cXhrYmNvbW1vbl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2lucHV0L3hr YmNvbW1vbi9xeGtiY29tbW9uX3AuaAorQEAgLTk0LDggKzk0LDggQEAgcHVibGljOgorICAgICBz dGF0aWMgdm9pZCB2ZXJpZnlIYXNMYXRpbkxheW91dCh4a2Jfa2V5bWFwICprZXltYXApOworICAg ICBzdGF0aWMgeGtiX2tleXN5bV90IGxvb2t1cExhdGluS2V5c3ltKHhrYl9zdGF0ZSAqc3RhdGUs IHhrYl9rZXljb2RlX3Qga2V5Y29kZSk7CisgCistICAgIHN0YXRpYyBib29sIGlzTGF0aW4oeGti X2tleXN5bV90IHN5bSkgeworLSAgICAgICAgcmV0dXJuICgoc3ltID49ICdhJyAmJiBzeW0gPD0g J3onKSB8fCAoc3ltID49ICdBJyAmJiBzeW0gPD0gJ1onKSk7CisrICAgIHN0YXRpYyBib29sIGlz TGF0aW4xKHhrYl9rZXlzeW1fdCBzeW0pIHsKKysgICAgICAgIHJldHVybiBzeW0gPD0gMHhmZjsK KyAgICAgfQorICAgICBzdGF0aWMgYm9vbCBpc0tleXBhZCh4a2Jfa2V5c3ltX3Qgc3ltKSB7Cisg ICAgICAgICByZXR1cm4gc3ltID49IFhLQl9LRVlfS1BfU3BhY2UgJiYgc3ltIDw9IFhLQl9LRVlf S1BfOTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9rbXNjb252ZW5p ZW5jZS9xa21zZGV2aWNlLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ttc2NvbnZl bmllbmNlL3FrbXNkZXZpY2UuY3BwCitpbmRleCA4Y2Q3ZjliMzY4Li40MDZmODQ2NjNmIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQva21zY29udmVuaWVuY2UvcWttc2Rl dmljZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2ttc2NvbnZlbmllbmNl L3FrbXNkZXZpY2UuY3BwCitAQCAtMzE4LDcgKzMxOCw3IEBAIFFQbGF0Zm9ybVNjcmVlbiAqUUtt c0RldmljZTo6Y3JlYXRlU2NyZWVuRm9yQ29ubmVjdG9yKGRybU1vZGVSZXNQdHIgcmVzb3VyY2Vz LAorIAorICAgICBpZiAoY3VycmVudCA8IDAgJiYgY3J0Y19tb2RlLmNsb2NrICE9IDApIHsKKyAg ICAgICAgIG1vZGVzIDw8IGNydGNfbW9kZTsKKy0gICAgICAgIGN1cnJlbnQgPSBtb2RlLnNpemUo KSAtIDE7CisrICAgICAgICBjdXJyZW50ID0gbW9kZXMuc2l6ZSgpIC0gMTsKKyAgICAgfQorIAor ICAgICBpZiAoY29uZmlndXJhdGlvbiA9PSBPdXRwdXRDb25maWdDdXJyZW50KQorZGlmZiAtLWdp dCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9hdHNwaWFk YXB0b3IuY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5 L2F0c3BpYWRhcHRvci5jcHAKK2luZGV4IDkxNTNmZDIwYmIuLjI1NWVhNWUzM2UgMTAwNjQ0Cist LS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvYXRzcGlh ZGFwdG9yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3Np YmlsaXR5L2F0c3BpYWRhcHRvci5jcHAKK0BAIC0xOTQsNiArMTk0LDkgQEAgUVN0cmluZyBBdFNw aUFkYXB0b3I6OmludHJvc3BlY3QoY29uc3QgUVN0cmluZyAmcGF0aCkgY29uc3QKKyAgICAgICAg ICAgICAgICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPVwib3V0XCIgdHlwZT1cIihzbylcIi8+XG4i CisgICAgICAgICAgICAgICAgICIgICAgICA8YW5ub3RhdGlvbiB2YWx1ZT1cIlFTcGlPYmplY3RS ZWZlcmVuY2VcIiBuYW1lPVwib3JnLnF0cHJvamVjdC5RdERCdXMuUXRUeXBlTmFtZS5PdXQwXCIv PlxuIgorICAgICAgICAgICAgICAgICAiICAgIDwvbWV0aG9kPlxuIgorKyAgICAgICAgICAgICAg ICAiICAgIDxtZXRob2QgbmFtZT1cIkdldEFjY2Vzc2libGVJZFwiPlxuIgorKyAgICAgICAgICAg ICAgICAiICAgICAgPGFyZyBkaXJlY3Rpb249XCJvdXRcIiB0eXBlPVwic1wiLz5cbiIKKysgICAg ICAgICAgICAgICAgIiAgICA8L21ldGhvZD5cbiIKKyAgICAgICAgICAgICAgICAgIiAgPC9pbnRl cmZhY2U+XG4iCisgICAgICAgICAgICAgICAgICk7CisgCitAQCAtOTEzLDggKzkxNiwxNyBAQCB2 b2lkIEF0U3BpQWRhcHRvcjo6bm90aWZ5KFFBY2Nlc3NpYmxlRXZlbnQgKmV2ZW50KQorICAgICB9 CisgICAgIGNhc2UgUUFjY2Vzc2libGU6Ok5hbWVDaGFuZ2VkOiB7CisgICAgICAgICBpZiAoc2Vu ZE9iamVjdCB8fCBzZW5kT2JqZWN0X3Byb3BlcnR5X2NoYW5nZSB8fCBzZW5kT2JqZWN0X3Byb3Bl cnR5X2NoYW5nZV9hY2Nlc3NpYmxlX25hbWUpIHsKKy0gICAgICAgICAgICBRU3RyaW5nIHBhdGgg PSBwYXRoRm9ySW50ZXJmYWNlKGV2ZW50LT5hY2Nlc3NpYmxlSW50ZXJmYWNlKCkpOworLSAgICAg ICAgICAgIFFWYXJpYW50TGlzdCBhcmdzID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoUUxhdGlu MVN0cmluZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsIHZhcmlhbnRGb3JQYXRoKHBhdGgpKTsK KysgICAgICAgICAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UgPSBldmVudC0+YWNjZXNz aWJsZUludGVyZmFjZSgpOworKyAgICAgICAgICAgIGlmICghaWZhY2UpIHsKKysgICAgICAgICAg ICAgICAgcUNEZWJ1ZyhsY0FjY2Vzc2liaWxpdHlBdHNwaSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAiTmFtZUNoYW5nZWQgZXZlbnQgZnJvbSBpbnZhbGlkIGFjY2Vzc2libGUuIik7CisrICAg ICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgUVN0 cmluZyBwYXRoID0gcGF0aEZvckludGVyZmFjZShpZmFjZSk7CisrICAgICAgICAgICAgUVZhcmlh bnRMaXN0IGFyZ3MgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cygKKysgICAgICAgICAgICAgICAg UUxhdGluMVN0cmluZygiYWNjZXNzaWJsZS1uYW1lIiksIDAsIDAsCisrICAgICAgICAgICAgICAg IFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50KGlmYWNlLT50ZXh0KFFBY2Nlc3NpYmxl OjpOYW1lKSkpKTsKKyAgICAgICAgICAgICBzZW5kREJ1c1NpZ25hbChwYXRoLCBRTGF0aW4xU3Ry aW5nKEFUU1BJX0RCVVNfSU5URVJGQUNFX0VWRU5UX09CSkVDVCksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUUxhdGluMVN0cmluZygiUHJvcGVydHlDaGFuZ2UiKSwgYXJncyk7CisgICAg ICAgICB9CitAQCAtOTIyLDggKzkzNCwxNyBAQCB2b2lkIEF0U3BpQWRhcHRvcjo6bm90aWZ5KFFB Y2Nlc3NpYmxlRXZlbnQgKmV2ZW50KQorICAgICB9CisgICAgIGNhc2UgUUFjY2Vzc2libGU6OkRl c2NyaXB0aW9uQ2hhbmdlZDogeworICAgICAgICAgaWYgKHNlbmRPYmplY3QgfHwgc2VuZE9iamVj dF9wcm9wZXJ0eV9jaGFuZ2UgfHwgc2VuZE9iamVjdF9wcm9wZXJ0eV9jaGFuZ2VfYWNjZXNzaWJs ZV9kZXNjcmlwdGlvbikgeworLSAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRl cmZhY2UoZXZlbnQtPmFjY2Vzc2libGVJbnRlcmZhY2UoKSk7CistICAgICAgICAgICAgUVZhcmlh bnRMaXN0IGFyZ3MgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cyhRTGF0aW4xU3RyaW5nKCJhY2Nl c3NpYmxlLWRlc2NyaXB0aW9uIiksIDAsIDAsIHZhcmlhbnRGb3JQYXRoKHBhdGgpKTsKKysgICAg ICAgICAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UgPSBldmVudC0+YWNjZXNzaWJsZUlu dGVyZmFjZSgpOworKyAgICAgICAgICAgIGlmICghaWZhY2UpIHsKKysgICAgICAgICAgICAgICAg cUNEZWJ1ZyhsY0FjY2Vzc2liaWxpdHlBdHNwaSwKKysgICAgICAgICAgICAgICAgICAgICAgICAi RGVzY3JpcHRpb25DaGFuZ2VkIGV2ZW50IGZyb20gaW52YWxpZCBhY2Nlc3NpYmxlLiIpOworKyAg ICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIFFT dHJpbmcgcGF0aCA9IHBhdGhGb3JJbnRlcmZhY2UoaWZhY2UpOworKyAgICAgICAgICAgIFFWYXJp YW50TGlzdCBhcmdzID0gcGFja0RCdXNTaWduYWxBcmd1bWVudHMoCisrICAgICAgICAgICAgICAg IFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtZGVzY3JpcHRpb24iKSwgMCwgMCwKKysgICAgICAg ICAgICAgICAgUVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoaWZhY2UtPnRleHQoUUFj Y2Vzc2libGU6OkRlc2NyaXB0aW9uKSkpKTsKKyAgICAgICAgICAgICBzZW5kREJ1c1NpZ25hbChw YXRoLCBRTGF0aW4xU3RyaW5nKEFUU1BJX0RCVVNfSU5URVJGQUNFX0VWRU5UX09CSkVDVCksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmluZygiUHJvcGVydHlDaGFuZ2Ui KSwgYXJncyk7CisgICAgICAgICB9CitAQCAtMTAzOCw3ICsxMDU5LDkgQEAgdm9pZCBBdFNwaUFk YXB0b3I6Om5vdGlmeShRQWNjZXNzaWJsZUV2ZW50ICpldmVudCkKKyAgICAgICAgICAgICAgICAg Ly8gQ29tYm8gQm94IHdpdGggQVQtU1BJIGxpa2VzIHRvIGJlIHNwZWNpYWwKKyAgICAgICAgICAg ICAgICAgLy8gSXQgcmVxdWlyZXMgYSBuYW1lLWNoYW5nZSB0byB1cGRhdGUgY2FjaGVzIGFuZCB0 aGVuIHNlbGVjdGlvbi1jaGFuZ2VkCisgICAgICAgICAgICAgICAgIFFTdHJpbmcgcGF0aCA9IHBh dGhGb3JJbnRlcmZhY2UoaWZhY2UpOworLSAgICAgICAgICAgICAgICBRVmFyaWFudExpc3QgYXJn czEgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cyhRTGF0aW4xU3RyaW5nKCJhY2Nlc3NpYmxlLW5h bWUiKSwgMCwgMCwgdmFyaWFudEZvclBhdGgocGF0aCkpOworKyAgICAgICAgICAgICAgICBRVmFy aWFudExpc3QgYXJnczEgPSBwYWNrREJ1c1NpZ25hbEFyZ3VtZW50cygKKysgICAgICAgICAgICAg ICAgICAgIFFMYXRpbjFTdHJpbmcoImFjY2Vzc2libGUtbmFtZSIpLCAwLCAwLAorKyAgICAgICAg ICAgICAgICAgICAgUVZhcmlhbnQ6OmZyb21WYWx1ZShRREJ1c1ZhcmlhbnQoaWZhY2UtPnRleHQo UUFjY2Vzc2libGU6Ok5hbWUpKSkpOworICAgICAgICAgICAgICAgICBzZW5kREJ1c1NpZ25hbChw YXRoLCBRTGF0aW4xU3RyaW5nKEFUU1BJX0RCVVNfSU5URVJGQUNFX0VWRU5UX09CSkVDVCksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIlByb3BlcnR5Q2hh bmdlIiksIGFyZ3MxKTsKKyAgICAgICAgICAgICAgICAgUVZhcmlhbnRMaXN0IGFyZ3MyID0gcGFj a0RCdXNTaWduYWxBcmd1bWVudHMoUVN0cmluZygpLCAwLCAwLCBRVmFyaWFudDo6ZnJvbVZhbHVl KFFEQnVzVmFyaWFudChRVmFyaWFudCgwKSkpKTsKK0BAIC0xMzU4LDYgKzEzODEsMjYgQEAgdm9p ZCBBdFNwaUFkYXB0b3I6OnJlZ2lzdGVyQXBwbGljYXRpb24oKQorICAgICBkZWxldGUgcmVnaXN0 cnk7CisgfQorIAorK25hbWVzcGFjZSB7CisrUVN0cmluZyBhY2Nlc3NpYmxlSWRGb3JBY2Nlc3Np YmxlKFFBY2Nlc3NpYmxlSW50ZXJmYWNlICphY2Nlc3NpYmxlKQorK3sKKysgICAgUVN0cmluZyBy ZXN1bHQ7CisrICAgIHdoaWxlIChhY2Nlc3NpYmxlKSB7CisrICAgICAgICBpZiAoIXJlc3VsdC5p c0VtcHR5KCkpCisrICAgICAgICAgICAgcmVzdWx0LnByZXBlbmQoUUxhdGluMUNoYXIoJy4nKSk7 CisrICAgICAgICBpZiAoYXV0byBvYmogPSBhY2Nlc3NpYmxlLT5vYmplY3QoKSkgeworKyAgICAg ICAgICAgIGNvbnN0IFFTdHJpbmcgbmFtZSA9IG9iai0+b2JqZWN0TmFtZSgpOworKyAgICAgICAg ICAgIGlmICghbmFtZS5pc0VtcHR5KCkpCisrICAgICAgICAgICAgICAgIHJlc3VsdC5wcmVwZW5k KG5hbWUpOworKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICAgICAgcmVzdWx0LnByZXBl bmQoUVN0cmluZzo6ZnJvbVV0Zjgob2JqLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpKSk7Cisr ICAgICAgICB9CisrICAgICAgICBhY2Nlc3NpYmxlID0gYWNjZXNzaWJsZS0+cGFyZW50KCk7Cisr ICAgIH0KKysgICAgcmV0dXJuIHJlc3VsdDsKKyt9CisrfSAvLyBuYW1lc3BhY2UKKysKKyAvLyBB Y2Nlc3NpYmxlCisgYm9vbCBBdFNwaUFkYXB0b3I6OmFjY2Vzc2libGVJbnRlcmZhY2UoUUFjY2Vz c2libGVJbnRlcmZhY2UgKmludGVyZmFjZSwgY29uc3QgUVN0cmluZyAmZnVuY3Rpb24sIGNvbnN0 IFFEQnVzTWVzc2FnZSAmbWVzc2FnZSwgY29uc3QgUURCdXNDb25uZWN0aW9uICZjb25uZWN0aW9u KQorIHsKK0BAIC0xNDQxLDYgKzE0ODQsOSBAQCBib29sIEF0U3BpQWRhcHRvcjo6YWNjZXNzaWJs ZUludGVyZmFjZShRQWNjZXNzaWJsZUludGVyZmFjZSAqaW50ZXJmYWNlLCBjb25zdCBRUworICAg ICAgICAgICAgIGNoaWxkcmVuIDw8IHJlZjsKKyAgICAgICAgIH0KKyAgICAgICAgIGNvbm5lY3Rp b24uc2VuZChtZXNzYWdlLmNyZWF0ZVJlcGx5KFFWYXJpYW50Ojpmcm9tVmFsdWUoY2hpbGRyZW4p KSk7CisrICAgIH0gZWxzZSBpZiAoZnVuY3Rpb24gPT0gUUxhdGluMVN0cmluZygiR2V0QWNjZXNz aWJsZUlkIikpIHsKKysgICAgICAgIHNlbmRSZXBseShjb25uZWN0aW9uLCBtZXNzYWdlLAorKyAg ICAgICAgICAgICAgICAgIFFWYXJpYW50Ojpmcm9tVmFsdWUoUURCdXNWYXJpYW50KGFjY2Vzc2li bGVJZEZvckFjY2Vzc2libGUoaW50ZXJmYWNlKSkpKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAg IHFDRGVidWcobGNBY2Nlc3NpYmlsaXR5QXRzcGkpIDw8ICJXQVJOSU5HOiBBdFNwaUFkYXB0b3I6 OmFjY2Vzc2libGVJbnRlcmZhY2UgZG9lcyBub3QgaW1wbGVtZW50ICIgPDwgZnVuY3Rpb24gPDwg bWVzc2FnZS5wYXRoKCk7CisgICAgICAgICByZXR1cm4gZmFsc2U7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvbGludXhhY2Nlc3NpYmlsaXR5L2RidXNjb25uZWN0aW9u LmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L2xpbnV4YWNjZXNzaWJpbGl0eS9kYnVz Y29ubmVjdGlvbi5jcHAKK2luZGV4IDQ1ZGRjOGU0OTYuLmNjNzM0YWJjNjMgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2liaWxpdHkvZGJ1c2Nvbm5l Y3Rpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9saW51eGFjY2Vzc2li aWxpdHkvZGJ1c2Nvbm5lY3Rpb24uY3BwCitAQCAtNjksNiArNjksMjEgQEAgUVRfQkVHSU5fTkFN RVNQQUNFCisgREJ1c0Nvbm5lY3Rpb246OkRCdXNDb25uZWN0aW9uKFFPYmplY3QgKnBhcmVudCkK KyAgICAgOiBRT2JqZWN0KHBhcmVudCksIG1fYTExeUNvbm5lY3Rpb24oUVN0cmluZygpKSwgbV9l bmFibGVkKGZhbHNlKQorIHsKKysgICAgLy8gSWYgdGhlIGJ1cyBpcyBleHBsaWNpdGx5IHNldCB2 aWEgZW52IHZhciBpdCBvdmVycmlkZXMgZXZlcnl0aGluZyBlbHNlLgorKyAgICBRQnl0ZUFycmF5 IGFkZHJlc3NFbnYgPSBxZ2V0ZW52KCJBVF9TUElfQlVTX0FERFJFU1MiKTsKKysgICAgaWYgKCFh ZGRyZXNzRW52LmlzRW1wdHkoKSkgeworKyAgICAgICAgLy8gT25seSBjb25uZWN0IG9uIG5leHQg bG9vcCBydW4sIGNvbm5lY3Rpb25zIHRvIG91ciBlbmFibGVkIHNpZ25hbCBhcmUKKysgICAgICAg IC8vIG9ubHkgZXN0YWJsaXNoZWQgYWZ0ZXIgdGhlIGN0b3IgcmV0dXJucy4KKysgICAgICAgIFFN ZXRhT2JqZWN0OjppbnZva2VNZXRob2QoCisrICAgICAgICAgICAgICAgIHRoaXMsCisrICAgICAg ICAgICAgICAgIFt0aGlzLCBhZGRyZXNzRW52XSB7CisrICAgICAgICAgICAgICAgICAgICBtX2Vu YWJsZWQgPSB0cnVlOworKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdEExMXlCdXMoUVN0cmlu Zzo6ZnJvbUxvY2FsOEJpdChhZGRyZXNzRW52KSk7CisrICAgICAgICAgICAgICAgIH0sCisrICAg ICAgICAgICAgICAgIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKysgICAgICAgIHJldHVybjsKKysg ICAgfQorKworICAgICAvLyBTdGFydCBtb25pdG9yaW5nIGlmICJvcmcuYTExeS5CdXMiIGlzIHJl Z2lzdGVyZWQgYXMgREJ1cyBzZXJ2aWNlLgorICAgICBRREJ1c0Nvbm5lY3Rpb24gYyA9IFFEQnVz Q29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpOworICAgICBpZiAoIWMuaXNDb25uZWN0ZWQoKSkgewor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3NlcnZpY2VzL2dlbmVyaWN1 bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNwcCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNwcAoraW5kZXggMWEz Y2FiMjc1ZC4uMmFiZTAzOTEyNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBw b3J0L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzLmNwcAorKysrIGIv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvc2VydmljZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1 bml4c2VydmljZXMuY3BwCitAQCAtNTEsNiArNTEsOSBAQAorICNpbmNsdWRlIDxRdENvcmUvUVN0 YW5kYXJkUGF0aHM+CisgI2luY2x1ZGUgPFF0Q29yZS9RVXJsPgorIAorKyNpbmNsdWRlIDxRdEd1 aS9RR3VpQXBwbGljYXRpb24+CisrI2luY2x1ZGUgPFF0R3VpL1FXaW5kb3c+CisrCisgI2lmIFFU X0NPTkZJRyhkYnVzKQorIC8vIFRoZXNlIFF0Q29yZSBpbmNsdWRlcyBhcmUgbmVlZGVkIGZvciB4 ZGctZGVza3RvcC1wb3J0YWwgc3VwcG9ydAorICNpbmNsdWRlIDxRdENvcmUvcHJpdmF0ZS9xY29y ZV91bml4X3AuaD4KK0BAIC01OCw2ICs2MSw4IEBACisgI2luY2x1ZGUgPFF0Q29yZS9RRmlsZUlu Zm8+CisgI2luY2x1ZGUgPFF0Q29yZS9RVXJsUXVlcnk+CisgCisrI2luY2x1ZGUgPFF0R3VpL1FD b2xvcj4KKysKKyAjaW5jbHVkZSA8UXREQnVzL1FEQnVzQ29ubmVjdGlvbj4KKyAjaW5jbHVkZSA8 UXREQnVzL1FEQnVzTWVzc2FnZT4KKyAjaW5jbHVkZSA8UXREQnVzL1FEQnVzUGVuZGluZ0NhbGw+ CitAQCAtMTQyLDYgKzE0Nyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkZXRlY3RXZWJCcm93c2Vy KGNvbnN0IFFCeXRlQXJyYXkgJmRlc2t0b3AsCisgICAgIH0KKyAKKyAgICAgaWYgKGRlc2t0b3Ag PT0gUUJ5dGVBcnJheSgiS0RFIikpIHsKKysgICAgICAgIGlmIChjaGVja0V4ZWN1dGFibGUoUVN0 cmluZ0xpdGVyYWwoImtkZS1vcGVuNSIpLCBicm93c2VyKSkKKysgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKKyAgICAgICAgIC8vIEtvbnF1ZXJvciBsYXVuY2hlcgorICAgICAgICAgaWYgKGNoZWNr RXhlY3V0YWJsZShRU3RyaW5nTGl0ZXJhbCgia2ZtY2xpZW50IiksIGJyb3dzZXIpKSB7CisgICAg ICAgICAgICAgYnJvd3Nlci0+YXBwZW5kKFFMYXRpbjFTdHJpbmcoIiBleGVjIikpOworQEAgLTI5 Niw4ICszMDMsMTM1IEBAIHN0YXRpYyBpbmxpbmUgUURCdXNNZXNzYWdlIHhkZ0Rlc2t0b3BQb3J0 YWxTZW5kRW1haWwoY29uc3QgUVVybCAmdXJsKQorIAorICAgICByZXR1cm4gUURCdXNDb25uZWN0 aW9uOjpzZXNzaW9uQnVzKCkuY2FsbChtZXNzYWdlKTsKKyB9CisrCisrbmFtZXNwYWNlIHsKKytz dHJ1Y3QgWERHRGVza3RvcENvbG9yCisreworKyAgICBkb3VibGUgciA9IDA7CisrICAgIGRvdWJs ZSBnID0gMDsKKysgICAgZG91YmxlIGIgPSAwOworKworKyAgICBRQ29sb3IgdG9RQ29sb3IoKSBj b25zdAorKyAgICB7CisrICAgICAgICBjb25zdGV4cHIgYXV0byByZ2JNYXggPSAyNTU7CisrICAg ICAgICByZXR1cm4geyBzdGF0aWNfY2FzdDxpbnQ+KHIgKiByZ2JNYXgpLCBzdGF0aWNfY2FzdDxp bnQ+KGcgKiByZ2JNYXgpLAorKyAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihiICog cmdiTWF4KSB9OworKyAgICB9CisrfTsKKysKKytjb25zdCBRREJ1c0FyZ3VtZW50ICZvcGVyYXRv cj4+KGNvbnN0IFFEQnVzQXJndW1lbnQgJmFyZ3VtZW50LCBYREdEZXNrdG9wQ29sb3IgJm15U3Ry dWN0KQorK3sKKysgICAgYXJndW1lbnQuYmVnaW5TdHJ1Y3R1cmUoKTsKKysgICAgYXJndW1lbnQg Pj4gbXlTdHJ1Y3QuciA+PiBteVN0cnVjdC5nID4+IG15U3RydWN0LmI7CisrICAgIGFyZ3VtZW50 LmVuZFN0cnVjdHVyZSgpOworKyAgICByZXR1cm4gYXJndW1lbnQ7CisrfQorKworK2NsYXNzIFhk Z0Rlc2t0b3BQb3J0YWxDb2xvclBpY2tlciA6IHB1YmxpYyBRUGxhdGZvcm1TZXJ2aWNlQ29sb3JQ aWNrZXIKKyt7CisrICAgIFFfT0JKRUNUCisrcHVibGljOgorKyAgICBYZGdEZXNrdG9wUG9ydGFs Q29sb3JQaWNrZXIoY29uc3QgUVN0cmluZyAmcGFyZW50V2luZG93SWQsIFFXaW5kb3cgKnBhcmVu dCkKKysgICAgICAgIDogUVBsYXRmb3JtU2VydmljZUNvbG9yUGlja2VyKHBhcmVudCksIG1fcGFy ZW50V2luZG93SWQocGFyZW50V2luZG93SWQpCisrICAgIHsKKysgICAgfQorKworKyAgICB2b2lk IHBpY2tDb2xvcigpIG92ZXJyaWRlCisrICAgIHsKKysgICAgICAgIC8vIERCdXMgc2lnbmF0dXJl OgorKyAgICAgICAgLy8gUGlja0NvbG9yIChJTiAgIHMgICAgICBwYXJlbnRfd2luZG93LAorKyAg ICAgICAgLy8gICAgICAgICAgICBJTiAgIGF7c3Z9ICBvcHRpb25zCisrICAgICAgICAvLyAgICAg ICAgICAgIE9VVCAgbyAgICAgIGhhbmRsZSkKKysgICAgICAgIC8vIE9wdGlvbnM6CisrICAgICAg ICAvLyBoYW5kbGVfdG9rZW4gKHMpIC0gIEEgc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIGFzIHRo ZSBsYXN0IGVsZW1lbnQgb2YgdGhlIEBoYW5kbGUuCisrCisrICAgICAgICBRREJ1c01lc3NhZ2Ug bWVzc2FnZSA9IFFEQnVzTWVzc2FnZTo6Y3JlYXRlTWV0aG9kQ2FsbCgKKysgICAgICAgICAgICAg ICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuRGVza3RvcCIpLCBRU3Ry aW5nTGl0ZXJhbCgiL29yZy9mcmVlZGVza3RvcC9wb3J0YWwvZGVza3RvcCIpLAorKyAgICAgICAg ICAgICAgICBRU3RyaW5nTGl0ZXJhbCgib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5TY3JlZW5zaG90 IiksIFFTdHJpbmdMaXRlcmFsKCJQaWNrQ29sb3IiKSk7CisrICAgICAgICBtZXNzYWdlIDw8IG1f cGFyZW50V2luZG93SWQgPDwgUVZhcmlhbnRNYXAoKTsKKysKKysgICAgICAgIFFEQnVzUGVuZGlu Z0NhbGwgcGVuZGluZ0NhbGwgPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5hc3luY0Nh bGwobWVzc2FnZSk7CisrICAgICAgICBhdXRvIHdhdGNoZXIgPSBuZXcgUURCdXNQZW5kaW5nQ2Fs bFdhdGNoZXIocGVuZGluZ0NhbGwsIHRoaXMpOworKyAgICAgICAgY29ubmVjdCh3YXRjaGVyLCAm UURCdXNQZW5kaW5nQ2FsbFdhdGNoZXI6OmZpbmlzaGVkLCB0aGlzLAorKyAgICAgICAgICAgICAg ICBbdGhpc10oUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXIgKndhdGNoZXIpIHsKKysgICAgICAgICAg ICAgICAgICAgIHdhdGNoZXItPmRlbGV0ZUxhdGVyKCk7CisrICAgICAgICAgICAgICAgICAgICBR REJ1c1BlbmRpbmdSZXBseTxRREJ1c09iamVjdFBhdGg+IHJlcGx5ID0gKndhdGNoZXI7CisrICAg ICAgICAgICAgICAgICAgICBpZiAocmVwbHkuaXNFcnJvcigpKSB7CisrICAgICAgICAgICAgICAg ICAgICAgICAgcVdhcm5pbmcoIkRCdXMgY2FsbCB0byBwaWNrIGNvbG9yIGZhaWxlZDogJXMiLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFQcmludGFibGUocmVwbHkuZXJyb3Io KS5tZXNzYWdlKCkpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBRX0VNSVQgY29sb3JQaWNr ZWQoe30pOworKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAg ICAgICAgICBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5jb25uZWN0KAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5w b3J0YWwuRGVza3RvcCIpLCByZXBseS52YWx1ZSgpLnBhdGgoKSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJlZWRlc2t0b3AucG9ydGFsLlJl cXVlc3QiKSwgUVN0cmluZ0xpdGVyYWwoIlJlc3BvbnNlIiksIHRoaXMsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTTE9UKGdvdENvbG9yUmVzcG9uc2UodWludCxRVmFyaWFudE1hcCkp CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KKysg ICAgICAgICAgICAgICAgICAgICAgICApOworKyAgICAgICAgICAgICAgICAgICAgfQorKyAgICAg ICAgICAgICAgICB9KTsKKysgICAgfQorKworK3ByaXZhdGUgUV9TTE9UUzoKKysgICAgdm9pZCBn b3RDb2xvclJlc3BvbnNlKHVpbnQgcmVzdWx0LCBjb25zdCBRVmFyaWFudE1hcCAmbWFwKQorKyAg ICB7CisrICAgICAgICBpZiAocmVzdWx0ICE9IDApCisrICAgICAgICAgICAgcmV0dXJuOworKyAg ICAgICAgWERHRGVza3RvcENvbG9yIGNvbG9ye307CisrICAgICAgICBtYXAudmFsdWUoUVN0cmlu Z0xpdGVyYWwoImNvbG9yIikpLnZhbHVlPFFEQnVzQXJndW1lbnQ+KCkgPj4gY29sb3I7CisrICAg ICAgICBRX0VNSVQgY29sb3JQaWNrZWQoY29sb3IudG9RQ29sb3IoKSk7CisrICAgICAgICBkZWxl dGVMYXRlcigpOworKyAgICB9CisrCisrcHJpdmF0ZToKKysgICAgY29uc3QgUVN0cmluZyBtX3Bh cmVudFdpbmRvd0lkOworK307CisrfSAvLyBuYW1lc3BhY2UKKysKKyAjZW5kaWYgLy8gUVRfQ09O RklHKGRidXMpCisgCisrUUdlbmVyaWNVbml4U2VydmljZXM6OlFHZW5lcmljVW5peFNlcnZpY2Vz KCkKKyt7CisrI2lmIFFUX0NPTkZJRyhkYnVzKQorKyAgICBpZiAocUVudmlyb25tZW50VmFyaWFi bGVJbnRWYWx1ZSgiUVRfTk9fWERHX0RFU0tUT1BfUE9SVEFMIikgPiAwKSB7CisrICAgICAgICBy ZXR1cm47CisrICAgIH0KKysgICAgUURCdXNNZXNzYWdlIG1lc3NhZ2UgPSBRREJ1c01lc3NhZ2U6 OmNyZWF0ZU1ldGhvZENhbGwoCisrICAgICAgICAgICAgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVl ZGVza3RvcC5wb3J0YWwuRGVza3RvcCIpLCBRU3RyaW5nTGl0ZXJhbCgiL29yZy9mcmVlZGVza3Rv cC9wb3J0YWwvZGVza3RvcCIpLAorKyAgICAgICAgICAgIFFTdHJpbmdMaXRlcmFsKCJvcmcuZnJl ZWRlc2t0b3AuREJ1cy5Qcm9wZXJ0aWVzIiksIFFTdHJpbmdMaXRlcmFsKCJHZXQiKSk7CisrICAg IG1lc3NhZ2UgPDwgUVN0cmluZ0xpdGVyYWwoIm9yZy5mcmVlZGVza3RvcC5wb3J0YWwuU2NyZWVu c2hvdCIpCisrICAgICAgICAgICAgPDwgUVN0cmluZ0xpdGVyYWwoInZlcnNpb24iKTsKKysKKysg ICAgUURCdXNQZW5kaW5nQ2FsbCBwZW5kaW5nQ2FsbCA9IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lv bkJ1cygpLmFzeW5jQ2FsbChtZXNzYWdlKTsKKysgICAgYXV0byB3YXRjaGVyID0gbmV3IFFEQnVz UGVuZGluZ0NhbGxXYXRjaGVyKHBlbmRpbmdDYWxsKTsKKysgICAgUU9iamVjdDo6Y29ubmVjdCh3 YXRjaGVyLCAmUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXI6OmZpbmlzaGVkLCB3YXRjaGVyLAorKyAg ICAgICAgICAgICAgICAgICAgIFt0aGlzXShRREJ1c1BlbmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hl cikgeworKyAgICAgICAgICAgICAgICAgICAgICAgICB3YXRjaGVyLT5kZWxldGVMYXRlcigpOwor KyAgICAgICAgICAgICAgICAgICAgICAgICBRREJ1c1BlbmRpbmdSZXBseTxRVmFyaWFudD4gcmVw bHkgPSAqd2F0Y2hlcjsKKysgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXBseS5pc0Vy cm9yKCkgJiYgcmVwbHkudmFsdWUoKS50b1VJbnQoKSA+PSAyKQorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbV9oYXNTY3JlZW5zaG90UG9ydGFsV2l0aENvbG9yUGlja2luZyA9IHRydWU7 CisrICAgICAgICAgICAgICAgICAgICAgfSk7CisrCisrI2VuZGlmCisrfQorKworK1FQbGF0Zm9y bVNlcnZpY2VDb2xvclBpY2tlciAqUUdlbmVyaWNVbml4U2VydmljZXM6OmNvbG9yUGlja2VyKFFX aW5kb3cgKnBhcmVudCkKKyt7CisrI2lmIFFUX0NPTkZJRyhkYnVzKQorKyAgICAvLyBNYWtlIGRv dWJsZSBzdXJlIHRoYXQgd2UgYXJlIGluIGEgd2F5bGFuZCBlbnZpcm9ubWVudC4gSW4gcGFydGlj dWxhciBjaGVjaworKyAgICAvLyBXQVlMQU5EX0RJU1BMQVkgc28gYWxzbyBYV2F5bGFuZCBhcHBz IGJlbmVmaXQgZnJvbSBwb3J0YWwtYmFzZWQgY29sb3IgcGlja2luZy4KKysgICAgLy8gT3V0c2lk ZSB3YXlsYW5kIHdlJ2xsIHJhdGhlciByZWx5IG9uIG90aGVyIG1lYW5zIHRoYW4gdGhlIFhERyBk ZXNrdG9wIHBvcnRhbC4KKysgICAgaWYgKCFxRW52aXJvbm1lbnRWYXJpYWJsZUlzRW1wdHkoIldB WUxBTkRfRElTUExBWSIpCisrICAgICAgICB8fCBRR3VpQXBwbGljYXRpb246OnBsYXRmb3JtTmFt ZSgpLnN0YXJ0c1dpdGgoUUxhdGluMVN0cmluZygid2F5bGFuZCIpKSkgeworKyAgICAgICAgcmV0 dXJuIG5ldyBYZGdEZXNrdG9wUG9ydGFsQ29sb3JQaWNrZXIocG9ydGFsV2luZG93SWRlbnRpZmll cihwYXJlbnQpLCBwYXJlbnQpOworKyAgICB9CisrICAgIHJldHVybiBudWxscHRyOworKyNlbHNl CisrICAgIFFfVU5VU0VEKHBhcmVudCk7CisrICAgIHJldHVybiBudWxscHRyOworKyNlbmRpZgor K30KKysKKyBRQnl0ZUFycmF5IFFHZW5lcmljVW5peFNlcnZpY2VzOjpkZXNrdG9wRW52aXJvbm1l bnQoKSBjb25zdAorIHsKKyAgICAgc3RhdGljIGNvbnN0IFFCeXRlQXJyYXkgcmVzdWx0ID0gZGV0 ZWN0RGVza3RvcEVudmlyb25tZW50KCk7CitAQCAtMzUyLDYgKzQ4Niw4IEBAIGJvb2wgUUdlbmVy aWNVbml4U2VydmljZXM6Om9wZW5Eb2N1bWVudChjb25zdCBRVXJsICZ1cmwpCisgfQorIAorICNl bHNlCisrUUdlbmVyaWNVbml4U2VydmljZXM6OlFHZW5lcmljVW5peFNlcnZpY2VzKCkgPSBkZWZh dWx0OworKworIFFCeXRlQXJyYXkgUUdlbmVyaWNVbml4U2VydmljZXM6OmRlc2t0b3BFbnZpcm9u bWVudCgpIGNvbnN0CisgeworICAgICByZXR1cm4gUUJ5dGVBcnJheUxpdGVyYWwoIlVOS05PV04i KTsKK0BAIC0zNzEsNiArNTA3LDMwIEBAIGJvb2wgUUdlbmVyaWNVbml4U2VydmljZXM6Om9wZW5E b2N1bWVudChjb25zdCBRVXJsICZ1cmwpCisgICAgIHJldHVybiBmYWxzZTsKKyB9CisgCisrUVBs YXRmb3JtU2VydmljZUNvbG9yUGlja2VyICpRR2VuZXJpY1VuaXhTZXJ2aWNlczo6Y29sb3JQaWNr ZXIoUVdpbmRvdyAqcGFyZW50KQorK3sKKysgICAgUV9VTlVTRUQocGFyZW50KTsKKysgICAgcmV0 dXJuIG51bGxwdHI7CisrfQorKworICNlbmRpZiAvLyBRVF9OT19NVUxUSVBST0NFU1MKKyAKKytR U3RyaW5nIFFHZW5lcmljVW5peFNlcnZpY2VzOjpwb3J0YWxXaW5kb3dJZGVudGlmaWVyKFFXaW5k b3cgKndpbmRvdykKKyt7CisrICAgIGlmIChRR3VpQXBwbGljYXRpb246OnBsYXRmb3JtTmFtZSgp ID09IFFMYXRpbjFTdHJpbmcoInhjYiIpKQorKyAgICAgICAgcmV0dXJuIFFTdHJpbmdMaXRlcmFs KCJ4MTE6IikgKyBRU3RyaW5nOjpudW1iZXIod2luZG93LT53aW5JZCgpLCAxNik7CisrICAgIHJl dHVybiBRU3RyaW5nKCk7CisrfQorKworK2Jvb2wgUUdlbmVyaWNVbml4U2VydmljZXM6Omhhc0Nh cGFiaWxpdHkoQ2FwYWJpbGl0eSBjYXBhYmlsaXR5KSBjb25zdAorK3sKKysgICAgc3dpdGNoIChj YXBhYmlsaXR5KSB7CisrICAgIGNhc2UgQ2FwYWJpbGl0eTo6Q29sb3JQaWNraW5nOgorKyAgICAg ICAgcmV0dXJuIG1faGFzU2NyZWVuc2hvdFBvcnRhbFdpdGhDb2xvclBpY2tpbmc7CisrICAgIH0K KysgICAgcmV0dXJuIGZhbHNlOworK30KKysKKyBRVF9FTkRfTkFNRVNQQUNFCisrCisrI2luY2x1 ZGUgInFnZW5lcmljdW5peHNlcnZpY2VzLm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3Bs YXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2VuZXJpY3VuaXhzZXJ2aWNlc19w LmggYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9xZ2Vu ZXJpY3VuaXhzZXJ2aWNlc19wLmgKK2luZGV4IDhhYzNkZTZmMDMuLjMwOTI0ZTY0YmQgMTAwNjQ0 CistLS0gYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC9zZXJ2aWNlcy9nZW5lcmljdW5peC9x Z2VuZXJpY3VuaXhzZXJ2aWNlc19wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0 L3NlcnZpY2VzL2dlbmVyaWN1bml4L3FnZW5lcmljdW5peHNlcnZpY2VzX3AuaAorQEAgLTU5LDE2 ICs1OSwyMSBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyBjbGFzcyBRR2VuZXJpY1VuaXhTZXJ2aWNl cyA6IHB1YmxpYyBRUGxhdGZvcm1TZXJ2aWNlcworIHsKKyBwdWJsaWM6CistICAgIFFHZW5lcmlj VW5peFNlcnZpY2VzKCkge30KKysgICAgUUdlbmVyaWNVbml4U2VydmljZXMoKTsKKyAKKyAgICAg UUJ5dGVBcnJheSBkZXNrdG9wRW52aXJvbm1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAKKysgICAg Ym9vbCBoYXNDYXBhYmlsaXR5KENhcGFiaWxpdHkgY2FwYWJpbGl0eSkgY29uc3Qgb3ZlcnJpZGU7 CisgICAgIGJvb2wgb3BlblVybChjb25zdCBRVXJsICZ1cmwpIG92ZXJyaWRlOworICAgICBib29s IG9wZW5Eb2N1bWVudChjb25zdCBRVXJsICZ1cmwpIG92ZXJyaWRlOworKyAgICBRUGxhdGZvcm1T ZXJ2aWNlQ29sb3JQaWNrZXIgKmNvbG9yUGlja2VyKFFXaW5kb3cgKnBhcmVudCA9IG51bGxwdHIp IG92ZXJyaWRlOworKworKyAgICB2aXJ0dWFsIFFTdHJpbmcgcG9ydGFsV2luZG93SWRlbnRpZmll cihRV2luZG93ICp3aW5kb3cpOworIAorIHByaXZhdGU6CisgICAgIFFTdHJpbmcgbV93ZWJCcm93 c2VyOworICAgICBRU3RyaW5nIG1fZG9jdW1lbnRMYXVuY2hlcjsKKysgICAgYm9vbCBtX2hhc1Nj cmVlbnNob3RQb3J0YWxXaXRoQ29sb3JQaWNraW5nID0gZmFsc2U7CisgfTsKKyAKKyBRVF9FTkRf TkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVz L2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNvbm5lY3Rpb24uY3BwIGIvcXRiYXNlL3Ny Yy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3FkYnVzbWVudWNv bm5lY3Rpb24uY3BwCitpbmRleCAwOTQ3MGJjY2M2Li5jYzdjN2Q0ZDhhIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXNtZW51L3Fk YnVzbWVudWNvbm5lY3Rpb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90 aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbi5jcHAKK0BAIC02 OSw2ICs2OSw3IEBAIGNvbnN0IFFTdHJpbmcgTWVudUJhclBhdGggPSBRTGF0aW4xU3RyaW5nKCIv TWVudUJhciIpOworICovCisgUURCdXNNZW51Q29ubmVjdGlvbjo6UURCdXNNZW51Q29ubmVjdGlv bihRT2JqZWN0ICpwYXJlbnQsIGNvbnN0IFFTdHJpbmcgJnNlcnZpY2VOYW1lKQorICAgICA6IFFP YmplY3QocGFyZW50KQorKyAgICAsIG1fc2VydmljZU5hbWUoc2VydmljZU5hbWUpCisgICAgICwg bV9jb25uZWN0aW9uKHNlcnZpY2VOYW1lLmlzTnVsbCgpID8gUURCdXNDb25uZWN0aW9uOjpzZXNz aW9uQnVzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBRREJ1 c0Nvbm5lY3Rpb246OmNvbm5lY3RUb0J1cyhRREJ1c0Nvbm5lY3Rpb246OlNlc3Npb25CdXMsIHNl cnZpY2VOYW1lKSkKKyAgICAgLCBtX2RidXNXYXRjaGVyKG5ldyBRREJ1c1NlcnZpY2VXYXRjaGVy KFN0YXR1c05vdGlmaWVyV2F0Y2hlclNlcnZpY2UsIG1fY29ubmVjdGlvbiwgUURCdXNTZXJ2aWNl V2F0Y2hlcjo6V2F0Y2hGb3JSZWdpc3RyYXRpb24sIHRoaXMpKQorQEAgLTgzLDYgKzg0LDEyIEBA IFFEQnVzTWVudUNvbm5lY3Rpb246OlFEQnVzTWVudUNvbm5lY3Rpb24oUU9iamVjdCAqcGFyZW50 LCBjb25zdCBRU3RyaW5nICZzZXJ2aWNlCisgI2VuZGlmCisgfQorIAorK1FEQnVzTWVudUNvbm5l Y3Rpb246On5RREJ1c01lbnVDb25uZWN0aW9uKCkKKyt7CisrICBpZiAoIW1fc2VydmljZU5hbWUu aXNFbXB0eSgpICYmIG1fY29ubmVjdGlvbi5pc0Nvbm5lY3RlZCgpKQorKyAgICAgIFFEQnVzQ29u bmVjdGlvbjo6ZGlzY29ubmVjdEZyb21CdXMobV9zZXJ2aWNlTmFtZSk7CisrfQorKworIHZvaWQg UURCdXNNZW51Q29ubmVjdGlvbjo6ZGJ1c0Vycm9yKGNvbnN0IFFEQnVzRXJyb3IgJmVycm9yKQor IHsKKyAgICAgcVdhcm5pbmcoKSA8PCAiUURCdXNUcmF5SWNvbiBlbmNvdW50ZXJlZCBhIEQtQnVz IGVycm9yOiIgPDwgZXJyb3I7CitAQCAtMTA1LDEzICsxMTIsNyBAQCB2b2lkIFFEQnVzTWVudUNv bm5lY3Rpb246OnVucmVnaXN0ZXJUcmF5SWNvbk1lbnUoUURCdXNUcmF5SWNvbiAqaXRlbSkKKyAK KyBib29sIFFEQnVzTWVudUNvbm5lY3Rpb246OnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNv biAqaXRlbSkKKyB7CistICAgIGJvb2wgc3VjY2VzcyA9IGNvbm5lY3Rpb24oKS5yZWdpc3RlclNl cnZpY2UoaXRlbS0+aW5zdGFuY2VJZCgpKTsKKy0gICAgaWYgKCFzdWNjZXNzKSB7CistICAgICAg ICBxV2FybmluZygpIDw8ICJmYWlsZWQgdG8gcmVnaXN0ZXIgc2VydmljZSIgPDwgaXRlbS0+aW5z dGFuY2VJZCgpOworLSAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICB9CistCistICAgIHN1Y2Nl c3MgPSBjb25uZWN0aW9uKCkucmVnaXN0ZXJPYmplY3QoU3RhdHVzTm90aWZpZXJJdGVtUGF0aCwg aXRlbSk7CisrICAgIGJvb2wgc3VjY2VzcyA9IGNvbm5lY3Rpb24oKS5yZWdpc3Rlck9iamVjdChT dGF0dXNOb3RpZmllckl0ZW1QYXRoLCBpdGVtKTsKKyAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAg ICAgICB1bnJlZ2lzdGVyVHJheUljb24oaXRlbSk7CisgICAgICAgICBxV2FybmluZygpIDw8ICJm YWlsZWQgdG8gcmVnaXN0ZXIiIDw8IGl0ZW0tPmluc3RhbmNlSWQoKSA8PCBTdGF0dXNOb3RpZmll ckl0ZW1QYXRoOworQEAgLTEyNiwyMSArMTI3LDE4IEBAIGJvb2wgUURCdXNNZW51Q29ubmVjdGlv bjo6cmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29uICppdGVtKQorIAorIGJvb2wgUURCdXNN ZW51Q29ubmVjdGlvbjo6cmVnaXN0ZXJUcmF5SWNvbldpdGhXYXRjaGVyKFFEQnVzVHJheUljb24g Kml0ZW0pCisgeworKyAgICBRX1VOVVNFRChpdGVtKTsKKyAgICAgUURCdXNNZXNzYWdlIHJlZ2lz dGVyTWV0aG9kID0gUURCdXNNZXNzYWdlOjpjcmVhdGVNZXRob2RDYWxsKAorICAgICAgICAgICAg ICAgICBTdGF0dXNOb3RpZmllcldhdGNoZXJTZXJ2aWNlLCBTdGF0dXNOb3RpZmllcldhdGNoZXJQ YXRoLCBTdGF0dXNOb3RpZmllcldhdGNoZXJTZXJ2aWNlLAorICAgICAgICAgICAgICAgICBRTGF0 aW4xU3RyaW5nKCJSZWdpc3RlclN0YXR1c05vdGlmaWVySXRlbSIpKTsKKy0gICAgcmVnaXN0ZXJN ZXRob2Quc2V0QXJndW1lbnRzKFFWYXJpYW50TGlzdCgpIDw8IGl0ZW0tPmluc3RhbmNlSWQoKSk7 CisrICAgIHJlZ2lzdGVyTWV0aG9kLnNldEFyZ3VtZW50cyhRVmFyaWFudExpc3QoKSA8PCBtX2Nv bm5lY3Rpb24uYmFzZVNlcnZpY2UoKSk7CisgICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uY2FsbFdp dGhDYWxsYmFjayhyZWdpc3Rlck1ldGhvZCwgdGhpcywgU0lHTkFMKHRyYXlJY29uUmVnaXN0ZXJl ZCgpKSwgU0xPVChkYnVzRXJyb3IoUURCdXNFcnJvcikpKTsKKyB9CisgCistYm9vbCBRREJ1c01l bnVDb25uZWN0aW9uOjp1bnJlZ2lzdGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSkKKyt2 b2lkIFFEQnVzTWVudUNvbm5lY3Rpb246OnVucmVnaXN0ZXJUcmF5SWNvbihRREJ1c1RyYXlJY29u ICppdGVtKQorIHsKKyAgICAgdW5yZWdpc3RlclRyYXlJY29uTWVudShpdGVtKTsKKyAgICAgY29u bmVjdGlvbigpLnVucmVnaXN0ZXJPYmplY3QoU3RhdHVzTm90aWZpZXJJdGVtUGF0aCk7CistICAg IGJvb2wgc3VjY2VzcyA9IGNvbm5lY3Rpb24oKS51bnJlZ2lzdGVyU2VydmljZShpdGVtLT5pbnN0 YW5jZUlkKCkpOworLSAgICBpZiAoIXN1Y2Nlc3MpCistICAgICAgICBxV2FybmluZygpIDw8ICJm YWlsZWQgdG8gdW5yZWdpc3RlciBzZXJ2aWNlIiA8PCBpdGVtLT5pbnN0YW5jZUlkKCk7CistICAg IHJldHVybiBzdWNjZXNzOworIH0KKyAjZW5kaWYgLy8gUVRfTk9fU1lTVEVNVFJBWUlDT04KKyAK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3Vu aXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbl9wLmggYi9xdGJhc2Uvc3JjL3BsYXRmb3Jt c3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29ubmVjdGlvbl9w LmgKK2luZGV4IGY0ODQ3OTVmYmIuLjk3YmRmYWJiODUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c21lbnUvcWRidXNtZW51Y29u bmVjdGlvbl9wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5l cmljdW5peC9kYnVzbWVudS9xZGJ1c21lbnVjb25uZWN0aW9uX3AuaAorQEAgLTcwLDYgKzcwLDcg QEAgY2xhc3MgUURCdXNNZW51Q29ubmVjdGlvbiA6IHB1YmxpYyBRT2JqZWN0CisgCisgcHVibGlj OgorICAgICBRREJ1c01lbnVDb25uZWN0aW9uKFFPYmplY3QgKnBhcmVudCA9IG51bGxwdHIsIGNv bnN0IFFTdHJpbmcgJnNlcnZpY2VOYW1lID0gUVN0cmluZygpKTsKKysgICAgflFEQnVzTWVudUNv bm5lY3Rpb24oKTsKKyAgICAgUURCdXNDb25uZWN0aW9uIGNvbm5lY3Rpb24oKSBjb25zdCB7IHJl dHVybiBtX2Nvbm5lY3Rpb247IH0KKyAgICAgUURCdXNTZXJ2aWNlV2F0Y2hlciAqZGJ1c1dhdGNo ZXIoKSBjb25zdCB7IHJldHVybiBtX2RidXNXYXRjaGVyOyB9CisgICAgIGJvb2wgaXNTdGF0dXNO b3RpZmllckhvc3RSZWdpc3RlcmVkKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNOb3RpZmllckhv c3RSZWdpc3RlcmVkOyB9CitAQCAtNzgsNyArNzksNyBAQCBwdWJsaWM6CisgICAgIHZvaWQgdW5y ZWdpc3RlclRyYXlJY29uTWVudShRREJ1c1RyYXlJY29uICppdGVtKTsKKyAgICAgYm9vbCByZWdp c3RlclRyYXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pOworICAgICBib29sIHJlZ2lzdGVyVHJh eUljb25XaXRoV2F0Y2hlcihRREJ1c1RyYXlJY29uICppdGVtKTsKKy0gICAgYm9vbCB1bnJlZ2lz dGVyVHJheUljb24oUURCdXNUcmF5SWNvbiAqaXRlbSk7CisrICAgIHZvaWQgdW5yZWdpc3RlclRy YXlJY29uKFFEQnVzVHJheUljb24gKml0ZW0pOworICNlbmRpZiAvLyBRVF9OT19TWVNURU1UUkFZ SUNPTgorIAorIFFfU0lHTkFMUzoKK0BAIC05MCw2ICs5MSw3IEBAIHByaXZhdGUgUV9TTE9UUzoK KyAgICAgdm9pZCBkYnVzRXJyb3IoY29uc3QgUURCdXNFcnJvciAmZXJyb3IpOworIAorIHByaXZh dGU6CisrICAgIFFTdHJpbmcgbV9zZXJ2aWNlTmFtZTsKKyAgICAgUURCdXNDb25uZWN0aW9uIG1f Y29ubmVjdGlvbjsKKyAgICAgUURCdXNTZXJ2aWNlV2F0Y2hlciAqbV9kYnVzV2F0Y2hlcjsKKyAg ICAgYm9vbCBtX3N0YXR1c05vdGlmaWVySG9zdFJlZ2lzdGVyZWQ7CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L2RidXN0cmF5L3FkYnVz dHJheWljb24uY3BwIGIvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1 bml4L2RidXN0cmF5L3FkYnVzdHJheWljb24uY3BwCitpbmRleCBiZWRlNzA5NzVhLi43NmJmZWM1 ZTVhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVy aWN1bml4L2RidXN0cmF5L3FkYnVzdHJheWljb24uY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsYXRm b3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvZGJ1c3RyYXkvcWRidXN0cmF5aWNvbi5jcHAK K0BAIC03MSw4ICs3MSwxMiBAQCBRX0xPR0dJTkdfQ0FURUdPUlkocUxjVHJheSwgInF0LnFwYS50 cmF5IikKKyBzdGF0aWMgUVN0cmluZyBpY29uVGVtcFBhdGgoKQorIHsKKyAgICAgUVN0cmluZyB0 ZW1wUGF0aCA9IFFTdGFuZGFyZFBhdGhzOjp3cml0YWJsZUxvY2F0aW9uKFFTdGFuZGFyZFBhdGhz OjpSdW50aW1lTG9jYXRpb24pOworLSAgICBpZiAoIXRlbXBQYXRoLmlzRW1wdHkoKSkKKysgICAg aWYgKCF0ZW1wUGF0aC5pc0VtcHR5KCkpIHsKKysgICAgICAgIFFTdHJpbmcgZmxhdHBha0lkID0g cUVudmlyb25tZW50VmFyaWFibGUoIkZMQVRQQUtfSUQiKTsKKysgICAgICAgIGlmICghZmxhdHBh a0lkLmlzRW1wdHkoKSAmJiBRRmlsZUluZm86OmV4aXN0cyhRTGF0aW4xU3RyaW5nKCIvLmZsYXRw YWstaW5mbyIpKSkKKysgICAgICAgICAgICB0ZW1wUGF0aCArPSBRTGF0aW4xU3RyaW5nKCIvYXBw LyIpICsgZmxhdHBha0lkOworICAgICAgICAgcmV0dXJuIHRlbXBQYXRoOworKyAgICB9CisgCisg ICAgIHRlbXBQYXRoID0gUVN0YW5kYXJkUGF0aHM6OndyaXRhYmxlTG9jYXRpb24oUVN0YW5kYXJk UGF0aHM6OkdlbmVyaWNDYWNoZUxvY2F0aW9uKTsKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3BsYXRmb3Jtc3VwcG9ydC90aGVtZXMvZ2VuZXJpY3VuaXgvcWdlbmVyaWN1bml4dGhlbWVzLmNw cCBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9nZW5lcmljdW5peC9xZ2VuZXJp Y3VuaXh0aGVtZXMuY3BwCitpbmRleCBjYjFiMzlkYjY0Li42ZTAxYWYwNTJjIDEwMDY0NAorLS0t IGEvcXRiYXNlL3NyYy9wbGF0Zm9ybXN1cHBvcnQvdGhlbWVzL2dlbmVyaWN1bml4L3FnZW5lcmlj dW5peHRoZW1lcy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGxhdGZvcm1zdXBwb3J0L3RoZW1lcy9n ZW5lcmljdW5peC9xZ2VuZXJpY3VuaXh0aGVtZXMuY3BwCitAQCAtNzU1LDYgKzc1NSw5IEBAIFFW YXJpYW50IFFHbm9tZVRoZW1lOjp0aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OlRoZW1lSGludCBo aW50KSBjb25zdAorICAgICAgICAgcmV0dXJuIFFWYXJpYW50KFFDaGFyKDB4MjAyMikpOworICAg ICBjYXNlIFFQbGF0Zm9ybVRoZW1lOjpVaUVmZmVjdHM6CisgICAgICAgICByZXR1cm4gUVZhcmlh bnQoaW50KEhvdmVyRWZmZWN0KSk7CisrICAgIGNhc2UgUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblBy ZXNzS2V5czoKKysgICAgICAgIHJldHVybiBRVmFyaWFudDo6ZnJvbVZhbHVlKAorKyAgICAgICAg ICAgICAgICBRTGlzdDxRdDo6S2V5Pih7IFF0OjpLZXlfU3BhY2UsIFF0OjpLZXlfUmV0dXJuLCBR dDo6S2V5X0VudGVyLCBRdDo6S2V5X1NlbGVjdCB9KSk7CisgICAgIGRlZmF1bHQ6CisgICAgICAg ICBicmVhazsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXMvZWdsZnMvYXBpL3FlZ2xmc2N1cnNvci5jcHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm1zL2VnbGZzL2FwaS9xZWdsZnNjdXJzb3IuY3BwCitpbmRleCA5OGUwNTE5NWVlLi4xZTkyZjQz ZGVjIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9hcGkv cWVnbGZzY3Vyc29yLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xm cy9hcGkvcWVnbGZzY3Vyc29yLmNwcAorQEAgLTM0Myw4ICszNDMsNyBAQCB2b2lkIFFFZ2xGU0N1 cnNvcjo6cGFpbnRPblNjcmVlbigpCisgICAgIC8vIHNjcmVlbnMgYXJlIHNpYmxpbmdzIG9mIGVh Y2ggb3RoZXIuIFdoZW4gbm90IGVuYWJsZWQsIHRoZSBzaWJsaW5nIGxpc3QKKyAgICAgLy8gb25s eSBjb250YWlucyBtX3NjcmVlbiBpdHNlbGYuCisgICAgIGZvciAoUVBsYXRmb3JtU2NyZWVuICpz Y3JlZW4gOiBtX3NjcmVlbi0+dmlydHVhbFNpYmxpbmdzKCkpIHsKKy0gICAgICAgIGlmIChzY3Jl ZW4tPmdlb21ldHJ5KCkuY29udGFpbnMoY3IudG9wTGVmdCgpLnRvUG9pbnQoKSArIG1fY3Vyc29y LmhvdFNwb3QpCistICAgICAgICAgICAgJiYgUU9wZW5HTENvbnRleHQ6OmN1cnJlbnRDb250ZXh0 KCktPnNjcmVlbigpID09IHNjcmVlbi0+c2NyZWVuKCkpCisrICAgICAgICBpZiAoc2NyZWVuLT5n ZW9tZXRyeSgpLmNvbnRhaW5zKGNyLnRvcExlZnQoKS50b1BvaW50KCkgKyBtX2N1cnNvci5ob3RT cG90KSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBjci50cmFuc2xhdGUoLXNjcmVlbi0+Z2Vv bWV0cnkoKS50b3BMZWZ0KCkpOworICAgICAgICAgICAgIGNvbnN0IFFTaXplIHNjcmVlblNpemUg PSBzY3JlZW4tPmdlb21ldHJ5KCkuc2l6ZSgpOworQEAgLTQ2OCwxMSArNDY3LDEyIEBAIHZvaWQg UUVnbEZTQ3Vyc29yOjpkcmF3KGNvbnN0IFFSZWN0RiAmcikKKyB7CisgICAgIFN0YXRlU2F2ZXIg c3RhdGVTYXZlcjsKKyAKKy0gICAgUUVnbEZTQ3Vyc29yRGF0YSAmZ2Z4ID0gc3RhdGljX2Nhc3Q8 UUVnbEZTQ29udGV4dCo+KFFPcGVuR0xDb250ZXh0OjpjdXJyZW50Q29udGV4dCgpLT5oYW5kbGUo KSktPmN1cnNvckRhdGE7CistICAgIGlmICghZ2Z4LnByb2dyYW0pIHsKKy0gICAgICAgIC8vIG9u ZSB0aW1lIGluaXRpYWxpemF0aW9uCisrICAgIC8vIG9uZSB0aW1lIGluaXRpYWxpemF0aW9uCisr ICAgIGlmICghUU9wZW5HTEZ1bmN0aW9uczo6ZF9wdHIpCisgICAgICAgICBpbml0aWFsaXplT3Bl bkdMRnVuY3Rpb25zKCk7CisgCisrICAgIFFFZ2xGU0N1cnNvckRhdGEgJmdmeCA9IHN0YXRpY19j YXN0PFFFZ2xGU0NvbnRleHQqPihRT3BlbkdMQ29udGV4dDo6Y3VycmVudENvbnRleHQoKS0+aGFu ZGxlKCkpLT5jdXJzb3JEYXRhOworKyAgICBpZiAoIWdmeC5wcm9ncmFtKSB7CisgICAgICAgICBj cmVhdGVTaGFkZXJQcm9ncmFtcygpOworIAorICAgICAgICAgaWYgKCFnZnguYXRsYXNUZXh0dXJl KSB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9lZ2xmcy9kZXZp Y2VpbnRlZ3JhdGlvbi9lZ2xmc19rbXNfc3VwcG9ydC9xZWdsZnNrbXNldmVudHJlYWRlci5jcHAg Yi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2RldmljZWludGVncmF0aW9uL2Vn bGZzX2ttc19zdXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVhZGVyLmNwcAoraW5kZXggNjQ1YTBhZTJl OS4uM2UwZTQwNmYxYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv ZWdsZnMvZGV2aWNlaW50ZWdyYXRpb24vZWdsZnNfa21zX3N1cHBvcnQvcWVnbGZza21zZXZlbnRy ZWFkZXIuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL2VnbGZzL2Rldmlj ZWludGVncmF0aW9uL2VnbGZzX2ttc19zdXBwb3J0L3FlZ2xmc2ttc2V2ZW50cmVhZGVyLmNwcAor QEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIFFFZ2xGU0ttc0V2ZW50UmVhZGVyOjpjcmVhdGUoUUVn bEZTS21zRGV2aWNlICpkZXZpY2UpCisgCisgICAgIG1fZGV2aWNlID0gZGV2aWNlOworIAorLSAg ICBxQ0RlYnVnKHFMY0VnbGZzS21zRGVidWcsICJJbml0YWxpemluZyBldmVudCByZWFkZXIgZm9y IGRldmljZSAlcCBmZCAlZCIsCisrICAgIHFDRGVidWcocUxjRWdsZnNLbXNEZWJ1ZywgIkluaXRp YWxpemluZyBldmVudCByZWFkZXIgZm9yIGRldmljZSAlcCBmZCAlZCIsCisgICAgICAgICAgICAg bV9kZXZpY2UsIG1fZGV2aWNlLT5mZCgpKTsKKyAKKyAgICAgbV90aHJlYWQgPSBuZXcgUUVnbEZT S21zRXZlbnRSZWFkZXJUaHJlYWQobV9kZXZpY2UtPmZkKCkpOworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5j cHAgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50 ZWdyYXRpb24uY3BwCitpbmRleCAxNDFmYjY4YTIzLi5kNDI5NGQ0MjVhIDEwMDY0NAorLS0tIGEv cXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0 aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9m ZnNjcmVlbmludGVncmF0aW9uLmNwcAorQEAgLTEyMiwxMSArMTIyLDEzIEBAIFFPZmZzY3JlZW5J bnRlZ3JhdGlvbjo6UU9mZnNjcmVlbkludGVncmF0aW9uKCkKKyAjZW5kaWYKKyAgICAgbV9zZXJ2 aWNlcy5yZXNldChuZXcgUVBsYXRmb3JtU2VydmljZXMpOworIAorLSAgICBRV2luZG93U3lzdGVt SW50ZXJmYWNlOjpoYW5kbGVTY3JlZW5BZGRlZChuZXcgUU9mZnNjcmVlblNjcmVlbik7CisrICAg IG1fc2NyZWVuID0gbmV3IFFPZmZzY3JlZW5TY3JlZW47CisrICAgIFFXaW5kb3dTeXN0ZW1JbnRl cmZhY2U6OmhhbmRsZVNjcmVlbkFkZGVkKG1fc2NyZWVuKTsKKyB9CisgCisgUU9mZnNjcmVlbklu dGVncmF0aW9uOjp+UU9mZnNjcmVlbkludGVncmF0aW9uKCkKKyB7CisrICAgIFFXaW5kb3dTeXN0 ZW1JbnRlcmZhY2U6OmhhbmRsZVNjcmVlblJlbW92ZWQobV9zY3JlZW4pOworIH0KKyAKKyB2b2lk IFFPZmZzY3JlZW5JbnRlZ3JhdGlvbjo6aW5pdGlhbGl6ZSgpCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy9vZmZzY3JlZW4vcW9mZnNjcmVlbmludGVncmF0aW9uLmgg Yi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVuaW50ZWdy YXRpb24uaAoraW5kZXggMGVhOTBmNmMyZi4uZmUwMGZkZTA3YyAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvb2Zmc2NyZWVuL3FvZmZzY3JlZW5pbnRlZ3JhdGlvbi5o CisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL29mZnNjcmVlbi9xb2Zmc2NyZWVu aW50ZWdyYXRpb24uaAorQEAgLTg0LDYgKzg0LDcgQEAgcHJvdGVjdGVkOgorICNlbmRpZgorICAg ICBRU2NvcGVkUG9pbnRlcjxRUGxhdGZvcm1JbnB1dENvbnRleHQ+IG1faW5wdXRDb250ZXh0Owor ICAgICBRU2NvcGVkUG9pbnRlcjxRUGxhdGZvcm1TZXJ2aWNlcz4gbV9zZXJ2aWNlczsKKysgICAg UVBsYXRmb3JtU2NyZWVuICptX3NjcmVlbjsKKyAgICAgbXV0YWJsZSBRU2NvcGVkUG9pbnRlcjxR UGxhdGZvcm1OYXRpdmVJbnRlcmZhY2U+IG1fbmF0aXZlSW50ZXJmYWNlOworIH07CisgCitkaWZm IC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzZ2xj b250ZXh0LmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93 c2dsY29udGV4dC5jcHAKK2luZGV4IDZmYTVhOGEyYjMuLjFmNDlmMGFlZmQgMTAwNjQ0CistLS0g YS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NnbGNvbnRleHQu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3Nn bGNvbnRleHQuY3BwCitAQCAtNDgsNiArNDgsNyBAQAorICNpbmNsdWRlIDxxcGEvcXBsYXRmb3Jt bmF0aXZlaW50ZXJmYWNlLmg+CisgI2luY2x1ZGUgPFF0UGxhdGZvcm1IZWFkZXJzL3F3Z2xuYXRp dmVjb250ZXh0Lmg+CisgCisrI2luY2x1ZGUgPHByaXZhdGUvcXN5c3RlbWxpYnJhcnlfcC5oPgor ICNpbmNsdWRlIDxhbGdvcml0aG0+CisgCisgI2luY2x1ZGUgPHdpbmdkaS5oPgorQEAgLTE2Miwx OSArMTYzLDI1IEBAIFFGdW5jdGlvblBvaW50ZXIgUVdpbmRvd3NPcGVuZ2wzMkRMTDo6cmVzb2x2 ZShjb25zdCBjaGFyICpuYW1lKQorIAorIGJvb2wgUVdpbmRvd3NPcGVuZ2wzMkRMTDo6aW5pdChi b29sIHNvZnR3YXJlUmVuZGVyaW5nKQorIHsKKy0gICAgY29uc3QgUUJ5dGVBcnJheSBvcGVuZ2wz MiA9IFFCeXRlQXJyYXlMaXRlcmFsKCJvcGVuZ2wzMi5kbGwiKTsKKy0gICAgY29uc3QgUUJ5dGVB cnJheSBzd29wZW5nbCA9IFFCeXRlQXJyYXlMaXRlcmFsKCJvcGVuZ2wzMnN3LmRsbCIpOworKyAg ICBjb25zdCBRQnl0ZUFycmF5IG9wZW5nbDMyID0gUUJ5dGVBcnJheUxpdGVyYWwoIm9wZW5nbDMy Iik7CisrICAgIGNvbnN0IFFCeXRlQXJyYXkgc3dvcGVuZ2wgPSBRQnl0ZUFycmF5TGl0ZXJhbCgi b3BlbmdsMzJzdyIpOworKyAgICBib29sIHVzZVN5c3RlbUxpYiA9IGZhbHNlOworIAorICAgICBR Qnl0ZUFycmF5IG9wZW5nbERsbCA9IHFnZXRlbnYoIlFUX09QRU5HTF9ETEwiKTsKKy0gICAgaWYg KG9wZW5nbERsbC5pc0VtcHR5KCkpCisrICAgIGlmIChvcGVuZ2xEbGwuaXNFbXB0eSgpKSB7Cisg ICAgICAgICBvcGVuZ2xEbGwgPSBzb2Z0d2FyZVJlbmRlcmluZyA/IHN3b3BlbmdsIDogb3Blbmds MzI7CisrICAgICAgICB1c2VTeXN0ZW1MaWIgPSAhc29mdHdhcmVSZW5kZXJpbmc7CisrICAgIH0K KyAKKyAgICAgb3BlbmdsRGxsID0gb3BlbmdsRGxsLnRvTG93ZXIoKTsKKyAgICAgbV9ub25PcGVu Z2wzMiA9IG9wZW5nbERsbCAhPSBvcGVuZ2wzMjsKKyAKKyAgICAgcUNEZWJ1ZyhsY1FwYUdsKSA8 PCAiUXQ6IFVzaW5nIFdHTCBhbmQgT3BlbkdMIGZyb20iIDw8IG9wZW5nbERsbDsKKyAKKy0gICAg bV9saWIgPSA6OkxvYWRMaWJyYXJ5QShvcGVuZ2xEbGwuY29uc3REYXRhKCkpOworKyAgICBpZiAo dXNlU3lzdGVtTGliKQorKyAgICAgICAgbV9saWIgPSBRU3lzdGVtTGlicmFyeTo6bG9hZCgod2No YXJfdCopKFFTdHJpbmc6OmZyb21MYXRpbjEob3BlbmdsRGxsKS51dGYxNigpKSk7CisrICAgIGVs c2UKKysgICAgICAgIG1fbGliID0gTG9hZExpYnJhcnlBKG9wZW5nbERsbC5jb25zdERhdGEoKSk7 CisgICAgIGlmICghbV9saWIpIHsKKyAgICAgICAgIHFFcnJub1dhcm5pbmcoOjpHZXRMYXN0RXJy b3IoKSwgIkZhaWxlZCB0byBsb2FkICVzIiwgb3BlbmdsRGxsLmNvbnN0RGF0YSgpKTsKKyAgICAg ICAgIHJldHVybiBmYWxzZTsKK0BAIC0xODQsNyArMTkxLDcgQEAgYm9vbCBRV2luZG93c09wZW5n bDMyRExMOjppbml0KGJvb2wgc29mdHdhcmVSZW5kZXJpbmcpCisgICAgICAgICAvLyBMb2FkIG9w ZW5nbDMyLmRsbCBhbHdheXMuIEdESSBmdW5jdGlvbnMgbGlrZSBDaG9vc2VQaXhlbEZvcm1hdCBk bworICAgICAgICAgLy8gR2V0TW9kdWxlSGFuZGxlIGZvciBvcGVuZ2wzMi5kbGwgYW5kIGJlaGF2 ZSBkaWZmZXJlbnRseSAoYW5kIGNhbGwgYmFjayBpbnRvCisgICAgICAgICAvLyBvcGVuZ2wzMikg d2hlbiB0aGUgbW9kdWxlIGlzIHByZXNlbnQuIFRoaXMgaXMgZmluZSBmb3IgZHVtbXkgY29udGV4 dHMgYW5kIHdpbmRvd3MuCistICAgICAgICA6OkxvYWRMaWJyYXJ5QSgib3BlbmdsMzIuZGxsIik7 CisrICAgICAgICBRU3lzdGVtTGlicmFyeTo6bG9hZChMIm9wZW5nbDMyIik7CisgICAgIH0KKyAK KyAgICAgd2dsQ3JlYXRlQ29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SEdMUkMgKFdJTkFQSSAq KShIREMpPihyZXNvbHZlKCJ3Z2xDcmVhdGVDb250ZXh0IikpOworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMvd2luZG93cy9xd2luZG93c29wZW5nbHRlc3Rlci5jcHAg Yi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3dpbmRvd3MvcXdpbmRvd3NvcGVuZ2x0ZXN0 ZXIuY3BwCitpbmRleCBkN2QxODZlODA0Li45ZWI0MDExYmYyIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzb3BlbmdsdGVzdGVyLmNwcAor KysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy93aW5kb3dzL3F3aW5kb3dzb3Blbmds dGVzdGVyLmNwcAorQEAgLTQ5LDYgKzQ5LDcgQEAKKyAjaW5jbHVkZSA8UXRDb3JlL3FzdGFuZGFy ZHBhdGhzLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xbGlicmFyeWluZm8uaD4KKyAjaW5jbHVkZSA8 UXRDb3JlL3FoYXNoLmg+CisrI2luY2x1ZGUgPHByaXZhdGUvcXN5c3RlbWxpYnJhcnlfcC5oPgor IAorICNpZm5kZWYgUVRfTk9fT1BFTkdMCisgI2luY2x1ZGUgPHByaXZhdGUvcW9wZW5nbF9wLmg+ CitAQCAtMzk2LDcgKzM5Nyw3IEBAIGJvb2wgUVdpbmRvd3NPcGVuR0xUZXN0ZXI6OnRlc3REZXNr dG9wR0woKQorIAorICAgICAvLyBUZXN0ICMxOiBMb2FkIG9wZW5nbDMyLmRsbCBhbmQgdHJ5IHRv IHJlc29sdmUgYW4gT3BlbkdMIDIgZnVuY3Rpb24uCisgICAgIC8vIFRoaXMgd2lsbCB0eXBpY2Fs bHkgZmFpbCBvbiBzeXN0ZW1zIHRoYXQgZG8gbm90IGhhdmUgYSByZWFsIE9wZW5HTCBkcml2ZXIu CistICAgIGxpYiA9IExvYWRMaWJyYXJ5QSgib3BlbmdsMzIuZGxsIik7CisrICAgIGxpYiA9IFFT eXN0ZW1MaWJyYXJ5Ojpsb2FkKEwib3BlbmdsMzIiKTsKKyAgICAgaWYgKGxpYikgeworICAgICAg ICAgQ3JlYXRlQ29udGV4dCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q3JlYXRlQ29udGV4dFR5cGU+KAor ICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UUZ1bmN0aW9uUG9pbnRlcj4oOjpHZXRQcm9j QWRkcmVzcyhsaWIsICJ3Z2xDcmVhdGVDb250ZXh0IikpKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9uYXRpdmVwYWludGluZy9xdGVzc2VsbGF0b3IuY3Bw IGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvbmF0aXZlcGFpbnRpbmcvcXRlc3Nl bGxhdG9yLmNwcAoraW5kZXggMWFmYTAwY2ZjOS4uMTE4YWY2Y2U3MyAxMDA2NDQKKy0tLSBhL3F0 YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL25hdGl2ZXBhaW50aW5nL3F0ZXNzZWxsYXRv ci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL25hdGl2ZXBhaW50 aW5nL3F0ZXNzZWxsYXRvci5jcHAKK0BAIC00MSw2ICs0MSw3IEBACisgCisgI2luY2x1ZGUgPFFS ZWN0PgorICNpbmNsdWRlIDxRTGlzdD4KKysjaW5jbHVkZSA8UU1hcD4KKyAjaW5jbHVkZSA8UURl YnVnPgorIAorICNpbmNsdWRlIDxxbWF0aC5oPgorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2Jjb25uZWN0aW9uLmNwcCBiL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMveGNiL3F4Y2Jjb25uZWN0aW9uLmNwcAoraW5kZXggOWUyYTM3YTZhMS4uZTZl MTc1YTExOCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4 Y2Jjb25uZWN0aW9uLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2Iv cXhjYmNvbm5lY3Rpb24uY3BwCitAQCAtNDg4LDEyICs0ODgsMTIgQEAgdm9pZCBRWGNiQ29ubmVj dGlvbjo6cHJpbnRYY2JFcnJvcihjb25zdCBjaGFyICptZXNzYWdlLCB4Y2JfZ2VuZXJpY19lcnJv cl90ICplcnIKKyAgICAgdWludCBjbGFtcGVkX2Vycm9yX2NvZGUgPSBxTWluPHVpbnQ+KGVycm9y LT5lcnJvcl9jb2RlLCAoc2l6ZW9mKHhjYl9lcnJvcnMpIC8gc2l6ZW9mKHhjYl9lcnJvcnNbMF0p KSAtIDEpOworICAgICB1aW50IGNsYW1wZWRfbWFqb3JfY29kZSA9IHFNaW48dWludD4oZXJyb3It Pm1ham9yX2NvZGUsIChzaXplb2YoeGNiX3Byb3RvY29sX3JlcXVlc3RfY29kZXMpIC8gc2l6ZW9m KHhjYl9wcm90b2NvbF9yZXF1ZXN0X2NvZGVzWzBdKSkgLSAxKTsKKyAKKy0gICAgcUNXYXJuaW5n KGxjUXBhWGNiLCAiJXM6ICVkICglcyksIHNlcXVlbmNlOiAlZCwgcmVzb3VyY2UgaWQ6ICVkLCBt YWpvciBjb2RlOiAlZCAoJXMpLCBtaW5vciBjb2RlOiAlZCIsCistICAgICAgICAgICAgIG1lc3Nh Z2UsCistICAgICAgICAgICAgIGludChlcnJvci0+ZXJyb3JfY29kZSksIHhjYl9lcnJvcnNbY2xh bXBlZF9lcnJvcl9jb2RlXSwKKy0gICAgICAgICAgICAgaW50KGVycm9yLT5zZXF1ZW5jZSksIGlu dChlcnJvci0+cmVzb3VyY2VfaWQpLAorLSAgICAgICAgICAgICBpbnQoZXJyb3ItPm1ham9yX2Nv ZGUpLCB4Y2JfcHJvdG9jb2xfcmVxdWVzdF9jb2Rlc1tjbGFtcGVkX21ham9yX2NvZGVdLAorLSAg ICAgICAgICAgICBpbnQoZXJyb3ItPm1pbm9yX2NvZGUpKTsKKysgICAgcUNEZWJ1ZyhsY1FwYVhj YiwgIiVzOiAlZCAoJXMpLCBzZXF1ZW5jZTogJWQsIHJlc291cmNlIGlkOiAlZCwgbWFqb3IgY29k ZTogJWQgKCVzKSwgbWlub3IgY29kZTogJWQiLAorKyAgICAgICAgICAgIG1lc3NhZ2UsCisrICAg ICAgICAgICAgaW50KGVycm9yLT5lcnJvcl9jb2RlKSwgeGNiX2Vycm9yc1tjbGFtcGVkX2Vycm9y X2NvZGVdLAorKyAgICAgICAgICAgIGludChlcnJvci0+c2VxdWVuY2UpLCBpbnQoZXJyb3ItPnJl c291cmNlX2lkKSwKKysgICAgICAgICAgICBpbnQoZXJyb3ItPm1ham9yX2NvZGUpLCB4Y2JfcHJv dG9jb2xfcmVxdWVzdF9jb2Rlc1tjbGFtcGVkX21ham9yX2NvZGVdLAorKyAgICAgICAgICAgIGlu dChlcnJvci0+bWlub3JfY29kZSkpOworIH0KKyAKKyBzdGF0aWMgUXQ6Ok1vdXNlQnV0dG9ucyB0 cmFuc2xhdGVNb3VzZUJ1dHRvbnMoaW50IHMpCitAQCAtNzAyLDYgKzcwMiw4IEBAIHZvaWQgUVhj YkNvbm5lY3Rpb246OmhhbmRsZVhjYkV2ZW50KHhjYl9nZW5lcmljX2V2ZW50X3QgKmV2ZW50KQor ICAgICAgICAgICAgIFFYY2JWaXJ0dWFsRGVza3RvcCAqdmlydHVhbERlc2t0b3AgPSB2aXJ0dWFs RGVza3RvcEZvclJvb3RXaW5kb3cocHJvcGVydHlOb3RpZnktPndpbmRvdyk7CisgICAgICAgICAg ICAgaWYgKHZpcnR1YWxEZXNrdG9wKQorICAgICAgICAgICAgICAgICB2aXJ0dWFsRGVza3RvcC0+ dXBkYXRlV29ya0FyZWEoKTsKKysgICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlOb3RpZnktPmF0 b20gPT0gYXRvbShRWGNiQXRvbTo6X05FVF9TVVBQT1JURUQpKSB7CisrICAgICAgICAgICAgbV93 bVN1cHBvcnQtPnVwZGF0ZU5ldFdNQXRvbXMoKTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICAgSEFORExFX1BMQVRGT1JNX1dJTkRPV19FVkVOVCh4Y2JfcHJvcGVydHlfbm90aWZ5X2V2 ZW50X3QsIHdpbmRvdywgaGFuZGxlUHJvcGVydHlOb3RpZnlFdmVudCk7CisgICAgICAgICB9CitA QCAtNzUwLDcgKzc1Miw3IEBAIHZvaWQgUVhjYkNvbm5lY3Rpb246OmhhbmRsZVhjYkV2ZW50KHhj Yl9nZW5lcmljX2V2ZW50X3QgKmV2ZW50KQorICAgICAgICAgICAgICAgICBjYXNlIFhDQl9YS0Jf TkVXX0tFWUJPQVJEX05PVElGWTogeworICAgICAgICAgICAgICAgICAgICAgeGNiX3hrYl9uZXdf a2V5Ym9hcmRfbm90aWZ5X2V2ZW50X3QgKmV2ID0gJnhrYl9ldmVudC0+bmV3X2tleWJvYXJkX25v dGlmeTsKKyAgICAgICAgICAgICAgICAgICAgIGlmIChldi0+Y2hhbmdlZCAmIFhDQl9YS0JfTktO X0RFVEFJTF9LRVlDT0RFUykKKy0gICAgICAgICAgICAgICAgICAgICAgICBtX2tleWJvYXJkLT51 cGRhdGVLZXltYXAoZXYpOworKyAgICAgICAgICAgICAgICAgICAgICAgIG1fa2V5Ym9hcmQtPnVw ZGF0ZUtleW1hcCgpOworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgZGVmYXVsdDoKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNiaW50ZWdyYXRpb24uY3BwIGIvcXRiYXNlL3NyYy9w bHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmludGVncmF0aW9uLmNwcAoraW5kZXggNzY4NjljZWQ2 MC4uMDJkMmVlYmI1NiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMv eGNiL3F4Y2JpbnRlZ3JhdGlvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9y bXMveGNiL3F4Y2JpbnRlZ3JhdGlvbi5jcHAKK0BAIC0yNzQsOCArMjc0LDcgQEAgUVBsYXRmb3Jt V2luZG93ICpRWGNiSW50ZWdyYXRpb246OmNyZWF0ZUZvcmVpZ25XaW5kb3coUVdpbmRvdyAqd2lu ZG93LCBXSWQgbmF0aXYKKyAjaWZuZGVmIFFUX05PX09QRU5HTAorIFFQbGF0Zm9ybU9wZW5HTENv bnRleHQgKlFYY2JJbnRlZ3JhdGlvbjo6Y3JlYXRlUGxhdGZvcm1PcGVuR0xDb250ZXh0KFFPcGVu R0xDb250ZXh0ICpjb250ZXh0KSBjb25zdAorIHsKKy0gICAgUVhjYlNjcmVlbiAqc2NyZWVuID0g c3RhdGljX2Nhc3Q8UVhjYlNjcmVlbiAqPihjb250ZXh0LT5zY3JlZW4oKS0+aGFuZGxlKCkpOwor LSAgICBRWGNiR2xJbnRlZ3JhdGlvbiAqZ2xJbnRlZ3JhdGlvbiA9IHNjcmVlbi0+Y29ubmVjdGlv bigpLT5nbEludGVncmF0aW9uKCk7CisrICAgIFFYY2JHbEludGVncmF0aW9uICpnbEludGVncmF0 aW9uID0gZGVmYXVsdENvbm5lY3Rpb24oKS0+Z2xJbnRlZ3JhdGlvbigpOworICAgICBpZiAoIWds SW50ZWdyYXRpb24pIHsKKyAgICAgICAgIHFXYXJuaW5nKCJRWGNiSW50ZWdyYXRpb246IENhbm5v dCBjcmVhdGUgcGxhdGZvcm0gT3BlbkdMIGNvbnRleHQsIG5laXRoZXIgR0xYIG5vciBFR0wgYXJl IGVuYWJsZWQiKTsKKyAgICAgICAgIHJldHVybiBudWxscHRyOworZGlmZiAtLWdpdCBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNiL3F4Y2JrZXlib2FyZC5jcHAgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuY3BwCitpbmRleCBlZmVjZDdlMmQx Li5lODI4NjM4MWEyIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94 Y2IvcXhjYmtleWJvYXJkLmNwcAorKysrIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94 Y2IvcXhjYmtleWJvYXJkLmNwcAorQEAgLTM2NSwxNyArMzY1LDYgQEAgdm9pZCBRWGNiS2V5Ym9h cmQ6OnVwZGF0ZUtleW1hcCh4Y2JfbWFwcGluZ19ub3RpZnlfZXZlbnRfdCAqZXZlbnQpCisgICAg IHVwZGF0ZUtleW1hcCgpOworIH0KKyAKKy12b2lkIFFYY2JLZXlib2FyZDo6dXBkYXRlS2V5bWFw KHhjYl94a2JfbmV3X2tleWJvYXJkX25vdGlmeV9ldmVudF90ICpldmVudCkKKy17CistICAgIGlm ICghZXZlbnQpCistICAgICAgICByZXR1cm47CistCistICAgIGlmIChldmVudC0+ZGV2aWNlSUQg IT0gZXZlbnQtPm9sZERldmljZUlEKQorLSAgICAgICAgbV9jb25maWcgPSBmYWxzZTsKKy0KKy0g ICAgdXBkYXRlS2V5bWFwKCk7CistfQorLQorIHZvaWQgUVhjYktleWJvYXJkOjp1cGRhdGVLZXlt YXAoKQorIHsKKyAgICAgS2V5c3ltTW9kaWZpZXJNYXAga2V5c3ltTW9kczsKK0BAIC0zODMsNiAr MzcyLDggQEAgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1hcCgpCisgICAgICAgICBrZXlz eW1Nb2RzID0ga2V5c3ltc1RvTW9kaWZpZXJzKCk7CisgICAgIHVwZGF0ZU1vZGlmaWVycyhrZXlz eW1Nb2RzKTsKKyAKKysgICAgbV9jb25maWcgPSB0cnVlOworKworICAgICBpZiAoIW1feGtiQ29u dGV4dCkgeworICAgICAgICAgbV94a2JDb250ZXh0LnJlc2V0KHhrYl9jb250ZXh0X25ldyhYS0Jf Q09OVEVYVF9OT19ERUZBVUxUX0lOQ0xVREVTKSk7CisgICAgICAgICBpZiAoIW1feGtiQ29udGV4 dCkgeworQEAgLTM5OCwxMyArMzg5LDggQEAgdm9pZCBRWGNiS2V5Ym9hcmQ6OnVwZGF0ZUtleW1h cCgpCisgICAgIGlmIChjb25uZWN0aW9uKCktPmhhc1hLQigpKSB7CisgICAgICAgICBtX3hrYktl eW1hcC5yZXNldCh4a2JfeDExX2tleW1hcF9uZXdfZnJvbV9kZXZpY2UobV94a2JDb250ZXh0Lmdl dCgpLCB4Y2JfY29ubmVjdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmVfZGV2aWNlX2lkLCBYS0JfS0VZTUFQX0NPTVBJ TEVfTk9fRkxBR1MpKTsKKy0gICAgICAgIGlmIChtX3hrYktleW1hcCkgeworLSAgICAgICAgICAg IGlmIChtX2NvbmZpZykKKy0gICAgICAgICAgICAgICAgbV94a2JTdGF0ZS5yZXNldCh4a2Jfc3Rh dGVfbmV3KG1feGtiS2V5bWFwLmdldCgpKSk7CistICAgICAgICAgICAgZWxzZQorLSAgICAgICAg ICAgICAgICBtX3hrYlN0YXRlLnJlc2V0KHhrYl94MTFfc3RhdGVfbmV3X2Zyb21fZGV2aWNlKG1f eGtiS2V5bWFwLmdldCgpLCB4Y2JfY29ubmVjdGlvbigpLCBjb3JlX2RldmljZV9pZCkpOworLQor LSAgICAgICAgfQorKyAgICAgICAgaWYgKG1feGtiS2V5bWFwKQorKyAgICAgICAgICAgIG1feGti U3RhdGUucmVzZXQoeGtiX3gxMV9zdGF0ZV9uZXdfZnJvbV9kZXZpY2UobV94a2JLZXltYXAuZ2V0 KCksIHhjYl9jb25uZWN0aW9uKCksIGNvcmVfZGV2aWNlX2lkKSk7CisgICAgIH0gZWxzZSB7Cisg ICAgICAgICBtX3hrYktleW1hcC5yZXNldChrZXltYXBGcm9tQ29yZShrZXlzeW1Nb2RzKSk7Cisg ICAgICAgICBpZiAobV94a2JLZXltYXApCitAQCAtNDI1LDggKzQxMSw2IEBAIHZvaWQgUVhjYktl eWJvYXJkOjp1cGRhdGVLZXltYXAoKQorICAgICB1cGRhdGVYS0JNb2RzKCk7CisgCisgICAgIFFY a2JDb21tb246OnZlcmlmeUhhc0xhdGluTGF5b3V0KG1feGtiS2V5bWFwLmdldCgpKTsKKy0KKy0g ICAgbV9jb25maWcgPSB0cnVlOworIH0KKyAKKyBRTGlzdDxpbnQ+IFFYY2JLZXlib2FyZDo6cG9z c2libGVLZXlzKGNvbnN0IFFLZXlFdmVudCAqZXZlbnQpIGNvbnN0CitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYmtleWJvYXJkLmggYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNia2V5Ym9hcmQuaAoraW5kZXggYjY1MmM4NWZlMy4u MGVlMDhhZWZmMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNi L3F4Y2JrZXlib2FyZC5oCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9x eGNia2V5Ym9hcmQuaAorQEAgLTY5LDcgKzY5LDYgQEAgcHVibGljOgorIAorICAgICBRdDo6S2V5 Ym9hcmRNb2RpZmllcnMgdHJhbnNsYXRlTW9kaWZpZXJzKGludCBzKSBjb25zdDsKKyAgICAgdm9p ZCB1cGRhdGVLZXltYXAoeGNiX21hcHBpbmdfbm90aWZ5X2V2ZW50X3QgKmV2ZW50KTsKKy0gICAg dm9pZCB1cGRhdGVLZXltYXAoeGNiX3hrYl9uZXdfa2V5Ym9hcmRfbm90aWZ5X2V2ZW50X3QgKmV2 ZW50KTsKKyAgICAgdm9pZCB1cGRhdGVLZXltYXAoKTsKKyAgICAgUUxpc3Q8aW50PiBwb3NzaWJs ZUtleXMoY29uc3QgUUtleUV2ZW50ICpldmVudCkgY29uc3Q7CisgCitkaWZmIC0tZ2l0IGEvcXRi YXNlL3NyYy9wbHVnaW5zL3BsYXRmb3Jtcy94Y2IvcXhjYndpbmRvdy5jcHAgYi9xdGJhc2Uvc3Jj L3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmNwcAoraW5kZXggZmZkYTdiNmE1Ny4u ODYzZTk2MWY0YyAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXMveGNi L3F4Y2J3aW5kb3cuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9x eGNid2luZG93LmNwcAorQEAgLTU2NCwxMSArNTY0LDYgQEAgdm9pZCBRWGNiV2luZG93OjpzZXRH ZW9tZXRyeShjb25zdCBRUmVjdCAmcmVjdCkKKyB7CisgICAgIFFQbGF0Zm9ybVdpbmRvdzo6c2V0 R2VvbWV0cnkocmVjdCk7CisgCistICAgIGlmIChzaG91bGREZWZlclRhc2soVGFzazo6U2V0R2Vv bWV0cnkpKSB7CistICAgICAgICBtX2RlZmVycmVkR2VvbWV0cnkgPSByZWN0OworLSAgICAgICAg cmV0dXJuOworLSAgICB9CistCisgICAgIHByb3BhZ2F0ZVNpemVIaW50cygpOworIAorICAgICBR WGNiU2NyZWVuICpjdXJyZW50U2NyZWVuID0geGNiU2NyZWVuKCk7CitAQCAtNjkzLDkgKzY4OCw2 IEBAIHZvaWQgUVhjYldpbmRvdzo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCisgCisgdm9pZCBR WGNiV2luZG93OjpzaG93KCkKKyB7CistICAgIGlmIChzaG91bGREZWZlclRhc2soVGFzazo6TWFw KSkKKy0gICAgICAgIHJldHVybjsKKy0KKyAgICAgaWYgKHdpbmRvdygpLT5pc1RvcExldmVsKCkp IHsKKyAKKyAgICAgICAgIC8vIHVwZGF0ZSBXTV9OT1JNQUxfSElOVFMKK0BAIC03MDYsNyArNjk4 LDcgQEAgdm9pZCBRWGNiV2luZG93OjpzaG93KCkKKyAgICAgICAgIGlmIChpc1RyYW5zaWVudCh3 aW5kb3coKSkpIHsKKyAgICAgICAgICAgICBjb25zdCBRV2luZG93ICp0cCA9IHdpbmRvdygpLT50 cmFuc2llbnRQYXJlbnQoKTsKKyAgICAgICAgICAgICBpZiAodHAgJiYgdHAtPmhhbmRsZSgpKQor LSAgICAgICAgICAgICAgICB0cmFuc2llbnRYY2JQYXJlbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBR WGNiV2luZG93ICo+KHRwLT5oYW5kbGUoKSktPndpbklkKCk7CisrICAgICAgICAgICAgICAgIHRy YW5zaWVudFhjYlBhcmVudCA9IHRwLT5oYW5kbGUoKS0+d2luSWQoKTsKKyAgICAgICAgICAgICAv LyBEZWZhdWx0IHRvIGNsaWVudCBsZWFkZXIgaWYgdGhlcmUgaXMgbm8gdHJhbnNpZW50IHBhcmVu dCwgZWxzZSBtb2RhbCBkaWFsb2dzIGNhbgorICAgICAgICAgICAgIC8vIGJlIGhpZGRlbiBieSB0 aGVpciBwYXJlbnRzLgorICAgICAgICAgICAgIGlmICghdHJhbnNpZW50WGNiUGFyZW50KQorQEAg LTc0NiwxMCArNzM4LDYgQEAgdm9pZCBRWGNiV2luZG93OjpzaG93KCkKKyAKKyB2b2lkIFFYY2JX aW5kb3c6OmhpZGUoKQorIHsKKy0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpVbm1hcCkp CistICAgICAgICByZXR1cm47CistCistICAgIG1fd21TdGF0ZVZhbGlkID0gZmFsc2U7CisgICAg IHhjYl91bm1hcF93aW5kb3coeGNiX2Nvbm5lY3Rpb24oKSwgbV93aW5kb3cpOworIAorICAgICAv LyBzZW5kIHN5bnRoZXRpYyBVbm1hcE5vdGlmeSBldmVudCBhY2NvcmRpbmcgdG8gaWNjY20gNC4x LjQKK0BAIC05MDksOSArODk3LDYgQEAgUVhjYldpbmRvdzo6TmV0V21TdGF0ZXMgUVhjYldpbmRv dzo6bmV0V21TdGF0ZXMoKQorIAorIHZvaWQgUVhjYldpbmRvdzo6c2V0V2luZG93RmxhZ3MoUXQ6 OldpbmRvd0ZsYWdzIGZsYWdzKQorIHsKKy0gICAgaWYgKHNob3VsZERlZmVyVGFzayhUYXNrOjpT ZXRXaW5kb3dGbGFncykpCistICAgICAgICByZXR1cm47CistCisgICAgIFF0OjpXaW5kb3dUeXBl IHR5cGUgPSBzdGF0aWNfY2FzdDxRdDo6V2luZG93VHlwZT4oaW50KGZsYWdzICYgUXQ6OldpbmRv d1R5cGVfTWFzaykpOworIAorICAgICBpZiAodHlwZSA9PSBRdDo6VG9vbFRpcCkKK0BAIC05NDEs OCArOTI2LDYgQEAgdm9pZCBRWGNiV2luZG93OjpzZXRXaW5kb3dGbGFncyhRdDo6V2luZG93Rmxh Z3MgZmxhZ3MpCisgCisgICAgIHNldFRyYW5zcGFyZW50Rm9yTW91c2VFdmVudHMoZmxhZ3MgJiBR dDo6V2luZG93VHJhbnNwYXJlbnRGb3JJbnB1dCk7CisgICAgIHVwZGF0ZURvZXNOb3RBY2NlcHRG b2N1cyhmbGFncyAmIFF0OjpXaW5kb3dEb2VzTm90QWNjZXB0Rm9jdXMpOworLQorLSAgICBtX2lz V21NYW5hZ2VkV2luZG93ID0gIShmbGFncyAmIFF0OjpYMTFCeXBhc3NXaW5kb3dNYW5hZ2VySGlu dCk7CisgfQorIAorIHZvaWQgUVhjYldpbmRvdzo6c2V0TW90aWZXbUhpbnRzKFF0OjpXaW5kb3dG bGFncyBmbGFncykKK0BAIC0xMTQyLDkgKzExMjUsNiBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldFdp bmRvd1N0YXRlKFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGUpCisgICAgIGlmIChzdGF0ZSA9PSBtX3dp bmRvd1N0YXRlKQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBpZiAoc2hvdWxkRGVmZXJUYXNr KFRhc2s6OlNldFdpbmRvd1N0YXRlKSkKKy0gICAgICAgIHJldHVybjsKKy0KKyAgICAgLy8gdW5z ZXQgb2xkIHN0YXRlCisgICAgIGlmIChtX3dpbmRvd1N0YXRlICYgUXQ6OldpbmRvd01pbmltaXpl ZCkKKyAgICAgICAgIHhjYl9tYXBfd2luZG93KHhjYl9jb25uZWN0aW9uKCksIG1fd2luZG93KTsK K0BAIC0xMzUwLDYgKzEzMzAsMTIgQEAgdm9pZCBRWGNiV2luZG93OjpzZXRXaW5kb3dJY29uKGNv bnN0IFFJY29uICZpY29uKQorICAgICB9CisgCisgICAgIGlmICghaWNvbl9kYXRhLmlzRW1wdHko KSkgeworKyAgICAgICAgLy8gSWdub3JlIGljb24gZXhjZWVkaW5nIG1heGltdW0geGNiIHJlcXVl c3QgbGVuZ3RoCisrICAgICAgICBpZiAoaWNvbl9kYXRhLnNpemUoKSA+IHhjYl9nZXRfbWF4aW11 bV9yZXF1ZXN0X2xlbmd0aCh4Y2JfY29ubmVjdGlvbigpKSkgeworKyAgICAgICAgICAgIHFXYXJu aW5nKCJJZ25vcmluZyB3aW5kb3cgaWNvbjogU2l6ZSAlbGx1IGV4Y2VlZHMgbWF4aW11bSB4Y2Ig cmVxdWVzdCBsZW5ndGggJXUuIiwKKysgICAgICAgICAgICAgICAgICAgICBpY29uX2RhdGEuc2l6 ZSgpLCB4Y2JfZ2V0X21heGltdW1fcmVxdWVzdF9sZW5ndGgoeGNiX2Nvbm5lY3Rpb24oKSkpOwor KyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKyAgICAgICAgIHhjYl9jaGFuZ2VfcHJv cGVydHkoeGNiX2Nvbm5lY3Rpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWENC X1BST1BfTU9ERV9SRVBMQUNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3dpbmRv dywKK0BAIC0xNjM5LDcgKzE2MjUsNyBAQCB2b2lkIFFYY2JXaW5kb3c6OnNldFdtV2luZG93VHlw ZShRWGNiV2luZG93RnVuY3Rpb25zOjpXbVdpbmRvd1R5cGVzIHR5cGVzLCBRdDo6VworICAgICAg ICAgYnJlYWs7CisgICAgIH0KKyAKKy0gICAgaWYgKChmbGFncyAmIFF0OjpGcmFtZWxlc3NXaW5k b3dIaW50KSAmJiAhKHR5cGUgJiBRWGNiV2luZG93RnVuY3Rpb25zOjpLZGVPdmVycmlkZSkpIHsK KysgICAgaWYgKChmbGFncyAmIFF0OjpGcmFtZWxlc3NXaW5kb3dIaW50KSAmJiAhKHR5cGVzICYg UVhjYldpbmRvd0Z1bmN0aW9uczo6S2RlT3ZlcnJpZGUpKSB7CisgICAgICAgICAvLyBvdmVycmlk ZSBuZXR3bSB0eXBlIC0gcXVpY2sgYW5kIGVhc3kgZm9yIEtERSBub2JvcmRlcgorICAgICAgICAg YXRvbXMuYXBwZW5kKGF0b20oUVhjYkF0b206Ol9LREVfTkVUX1dNX1dJTkRPV19UWVBFX09WRVJS SURFKSk7CisgICAgIH0KK0BAIC0xODk0LDEwICsxODgwLDYgQEAgdm9pZCBRWGNiV2luZG93Ojpo YW5kbGVVbm1hcE5vdGlmeUV2ZW50KGNvbnN0IHhjYl91bm1hcF9ub3RpZnlfZXZlbnRfdCAqZXZl bnQpCisgICAgIGlmIChldmVudC0+d2luZG93ID09IG1fd2luZG93KSB7CisgICAgICAgICBtX21h cHBlZCA9IGZhbHNlOworICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlRXhw b3NlRXZlbnQod2luZG93KCksIFFSZWdpb24oKSk7CistICAgICAgICBpZiAoIW1faXNXbU1hbmFn ZWRXaW5kb3cgfHwgcGFyZW50KCkpIHsKKy0gICAgICAgICAgICBtX3dtU3RhdGVWYWxpZCA9IHRy dWU7CistICAgICAgICAgICAgaGFuZGxlRGVmZXJyZWRUYXNrcygpOworLSAgICAgICAgfQorICAg ICB9CisgfQorIAorQEAgLTIyMTIsOTggKzIxOTQsMzAgQEAgdm9pZCBRWGNiV2luZG93OjpoYW5k bGVMZWF2ZU5vdGlmeUV2ZW50KGNvbnN0IHhjYl9sZWF2ZV9ub3RpZnlfZXZlbnRfdCAqZXZlbnQp CisgICAgIGhhbmRsZUxlYXZlTm90aWZ5RXZlbnQoZXZlbnQtPnJvb3RfeCwgZXZlbnQtPnJvb3Rf eSwgZXZlbnQtPm1vZGUsIGV2ZW50LT5kZXRhaWwsIGV2ZW50LT50aW1lKTsKKyB9CisgCistYm9v bCBRWGNiV2luZG93OjpzaG91bGREZWZlclRhc2soVGFzayB0YXNrKQorLXsKKy0gICAgaWYgKG1f d21TdGF0ZVZhbGlkKQorLSAgICAgICAgcmV0dXJuIGZhbHNlOworLQorLSAgICBtX2RlZmVycmVk VGFza3MuYXBwZW5kKHRhc2spOworLSAgICByZXR1cm4gdHJ1ZTsKKy19CistCistdm9pZCBRWGNi V2luZG93OjpoYW5kbGVEZWZlcnJlZFRhc2tzKCkKKy17CistICAgIFFfQVNTRVJUKG1fd21TdGF0 ZVZhbGlkID09IHRydWUpOworLSAgICBpZiAobV9kZWZlcnJlZFRhc2tzLmlzRW1wdHkoKSkKKy0g ICAgICAgIHJldHVybjsKKy0KKy0gICAgYm9vbCBtYXAgPSBmYWxzZTsKKy0gICAgYm9vbCB1bm1h cCA9IGZhbHNlOworLQorLSAgICBRVmVjdG9yPFRhc2s+IHRhc2tzOworLSAgICBmb3IgKGF1dG8g dGFza0l0ID0gbV9kZWZlcnJlZFRhc2tzLnJiZWdpbigpOyB0YXNrSXQgIT0gbV9kZWZlcnJlZFRh c2tzLnJlbmQoKTsgKyt0YXNrSXQpIHsKKy0gICAgICAgIGlmICghdGFza3MuY29udGFpbnMoKnRh c2tJdCkpCistICAgICAgICAgICAgdGFza3MucHJlcGVuZCgqdGFza0l0KTsKKy0gICAgfQorLQor LSAgICBmb3IgKFRhc2sgdGFzayA6IHRhc2tzKSB7CistICAgICAgICBzd2l0Y2ggKHRhc2spIHsK Ky0gICAgICAgIGNhc2UgVGFzazo6TWFwOgorLSAgICAgICAgICAgIG1hcCA9IHRydWU7CistICAg ICAgICAgICAgdW5tYXAgPSBmYWxzZTsKKy0gICAgICAgICAgICBicmVhazsKKy0gICAgICAgIGNh c2UgVGFzazo6VW5tYXA6CistICAgICAgICAgICAgdW5tYXAgPSB0cnVlOworLSAgICAgICAgICAg IG1hcCA9IGZhbHNlOworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgY2FzZSBUYXNrOjpT ZXRHZW9tZXRyeToKKy0gICAgICAgICAgICBzZXRHZW9tZXRyeShtX2RlZmVycmVkR2VvbWV0cnkp OworLSAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgY2FzZSBUYXNrOjpTZXRXaW5kb3dGbGFn czoKKy0gICAgICAgICAgICBzZXRXaW5kb3dGbGFncyh3aW5kb3coKS0+ZmxhZ3MoKSk7CistICAg ICAgICAgICAgYnJlYWs7CistICAgICAgICBjYXNlIFRhc2s6OlNldFdpbmRvd1N0YXRlOgorLSAg ICAgICAgICAgIHNldFdpbmRvd1N0YXRlKHdpbmRvdygpLT53aW5kb3dTdGF0ZSgpKTsKKy0gICAg ICAgICAgICBicmVhazsKKy0gICAgICAgIH0KKy0gICAgfQorLSAgICBtX2RlZmVycmVkVGFza3Mu Y2xlYXIoKTsKKy0KKy0gICAgaWYgKG1hcCkgeworLSAgICAgICAgUV9BU1NFUlQodW5tYXAgPT0g ZmFsc2UpOworLSAgICAgICAgc2hvdygpOworLSAgICB9CistICAgIGlmICh1bm1hcCkgeworLSAg ICAgICAgUV9BU1NFUlQobWFwID09IGZhbHNlKTsKKy0gICAgICAgIGhpZGUoKTsKKy0gICAgfQor LX0KKy0KKyB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZVByb3BlcnR5Tm90aWZ5RXZlbnQoY29uc3Qg eGNiX3Byb3BlcnR5X25vdGlmeV9ldmVudF90ICpldmVudCkKKyB7CisgICAgIGNvbm5lY3Rpb24o KS0+c2V0VGltZShldmVudC0+dGltZSk7CisgCistICAgIGNvbnN0IGJvb2wgd21TdGF0ZUNoYW5n ZWQgPSBldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSk7CistICAgIGNvbnN0 IGJvb2wgbmV0V21TdGF0ZUNoYW5nZWQgPSBldmVudC0+YXRvbSA9PSBhdG9tKFFYY2JBdG9tOjpf TkVUX1dNX1NUQVRFKTsKKy0gICAgaWYgKG5ldFdtU3RhdGVDaGFuZ2VkIHx8IHdtU3RhdGVDaGFu Z2VkKSB7CistICAgICAgICBpZiAod21TdGF0ZUNoYW5nZWQgJiYgIW1fd21TdGF0ZVZhbGlkICYm IG1faXNXbU1hbmFnZWRXaW5kb3cpIHsKKy0gICAgICAgICAgICAvLyBJQ0NDTSA0LjEuNAorLSAg ICAgICAgICAgIC8vIENsaWVudHMgdGhhdCB3YW50IHRvIHJlLXVzZSBhIGNsaWVudCB3aW5kb3cg KGUuZy4gYnkgbWFwcGluZyBpdCBhZ2FpbikKKy0gICAgICAgICAgICAvLyBhZnRlciB3aXRoZHJh d2luZyBpdCBtdXN0IHdhaXQgZm9yIHRoZSB3aXRoZHJhd2FsIHRvIGJlIGNvbXBsZXRlIGJlZm9y ZQorLSAgICAgICAgICAgIC8vIHByb2NlZWRpbmcuIFRoZSBwcmVmZXJyZWQgbWV0aG9kIGZvciBk b2luZyB0aGlzIGlzIGZvciBjbGllbnRzIHRvIHdhaXQgZm9yCistICAgICAgICAgICAgLy8gYSB3 aW5kb3cgbWFuYWdlciB0byB1cGRhdGUgb3IgcmVtb3ZlIHRoZSBXTV9TVEFURSBwcm9wZXJ0eS4K Ky0gICAgICAgICAgICBtX3dtU3RhdGVWYWxpZCA9IHRydWU7CistICAgICAgICAgICAgaGFuZGxl RGVmZXJyZWRUYXNrcygpOworLSAgICAgICAgfQorLSAgICAgICAgaWYgKGV2ZW50LT5zdGF0ZSA9 PSBYQ0JfUFJPUEVSVFlfREVMRVRFKQorKyAgICBjb25zdCBib29sIHByb3BlcnR5RGVsZXRlZCA9 IGV2ZW50LT5zdGF0ZSA9PSBYQ0JfUFJPUEVSVFlfREVMRVRFOworKworKyAgICBpZiAoZXZlbnQt PmF0b20gPT0gYXRvbShRWGNiQXRvbTo6X05FVF9XTV9TVEFURSkgfHwgZXZlbnQtPmF0b20gPT0g YXRvbShRWGNiQXRvbTo6V01fU1RBVEUpKSB7CisrICAgICAgICBpZiAocHJvcGVydHlEZWxldGVk KQorICAgICAgICAgICAgIHJldHVybjsKKyAKKy0gICAgICAgIGlmICh3bVN0YXRlQ2hhbmdlZCkg eworKyAgICAgICAgUXQ6OldpbmRvd1N0YXRlcyBuZXdTdGF0ZSA9IFF0OjpXaW5kb3dOb1N0YXRl OworKworKyAgICAgICAgaWYgKGV2ZW50LT5hdG9tID09IGF0b20oUVhjYkF0b206OldNX1NUQVRF KSkgeyAvLyBXTV9TVEFURTogUXVpY2sgY2hlY2sgZm9yICdNaW5pbWl6ZScuCisgICAgICAgICAg ICAgYXV0byByZXBseSA9IFFfWENCX1JFUExZKHhjYl9nZXRfcHJvcGVydHksIHhjYl9jb25uZWN0 aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIG1fd2luZG93 LCBhdG9tKFFYY2JBdG9tOjpXTV9TVEFURSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFhDQl9BVE9NX0FOWSwgMCwgMTAyNCk7CisgICAgICAgICAgICAgaWYgKHJlcGx5 ICYmIHJlcGx5LT5mb3JtYXQgPT0gMzIgJiYgcmVwbHktPnR5cGUgPT0gYXRvbShRWGNiQXRvbTo6 V01fU1RBVEUpKSB7CistICAgICAgICAgICAgICAgIGF1dG8gZGF0YSA9IHN0YXRpY19jYXN0PGNv bnN0IHF1aW50MzIgKj4oeGNiX2dldF9wcm9wZXJ0eV92YWx1ZShyZXBseS5nZXQoKSkpOworLSAg ICAgICAgICAgICAgICBpZiAocmVwbHktPmxlbmd0aCAhPSAwKSB7CistICAgICAgICAgICAgICAg ICAgICBjb25zdCBib29sIGNoYW5nZWRUb1dpdGhkcmF3biA9IGRhdGFbMF0gPT0gWENCX0lDQ0NN X1dNX1NUQVRFX1dJVEhEUkFXTjsKKy0gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgY2hh bmdlZFRvSWNvbmljID0gZGF0YVswXSA9PSBYQ0JfSUNDQ01fV01fU1RBVEVfSUNPTklDOworLSAg ICAgICAgICAgICAgICAgICAgbV9taW5pbWl6ZWQgPSBjaGFuZ2VkVG9JY29uaWMgfHwgKGNoYW5n ZWRUb1dpdGhkcmF3biAmJiBtX21pbmltaXplZCk7CistICAgICAgICAgICAgICAgIH0KKysgICAg ICAgICAgICAgICAgY29uc3QgcXVpbnQzMiAqZGF0YSA9IChjb25zdCBxdWludDMyICopeGNiX2dl dF9wcm9wZXJ0eV92YWx1ZShyZXBseS5nZXQoKSk7CisrICAgICAgICAgICAgICAgIGlmIChyZXBs eS0+bGVuZ3RoICE9IDApCisrICAgICAgICAgICAgICAgICAgICBtX21pbmltaXplZCA9IChkYXRh WzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9JQ09OSUMKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHx8IChkYXRhWzBdID09IFhDQl9JQ0NDTV9XTV9TVEFURV9XSVRIRFJBV04g JiYgbV9taW5pbWl6ZWQpKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgCistICAgICAg ICAvLyBfTkVUX1dNX1NUQVRFIGhhbmRsaW5nCistICAgICAgICBRdDo6V2luZG93U3RhdGVzIG5l d1N0YXRlID0gUXQ6OldpbmRvd05vU3RhdGU7CisgICAgICAgICBjb25zdCBOZXRXbVN0YXRlcyBz dGF0ZXMgPSBuZXRXbVN0YXRlcygpOworICAgICAgICAgLy8gX05FVF9XTV9TVEFURV9ISURERU4g c2hvdWxkIGJlIHNldCBieSB0aGUgV2luZG93IE1hbmFnZXIgdG8gaW5kaWNhdGUgdGhhdCBhIHdp bmRvdyB3b3VsZAorICAgICAgICAgLy8gbm90IGJlIHZpc2libGUgb24gdGhlIHNjcmVlbiBpZiBp dHMgZGVza3RvcC92aWV3cG9ydCB3ZXJlIGFjdGl2ZSBhbmQgaXRzIGNvb3JkaW5hdGVzIHdlcmUK K0BAIC0yMzI1LDYgKzIyMzksNyBAQCB2b2lkIFFYY2JXaW5kb3c6OmhhbmRsZVByb3BlcnR5Tm90 aWZ5RXZlbnQoY29uc3QgeGNiX3Byb3BlcnR5X25vdGlmeV9ldmVudF90ICpldgorICAgICAgICAg ICAgIGlmICgobV93aW5kb3dTdGF0ZSAmIFF0OjpXaW5kb3dNaW5pbWl6ZWQpICYmIGNvbm5lY3Rp b24oKS0+bW91c2VHcmFiYmVyKCkgPT0gdGhpcykKKyAgICAgICAgICAgICAgICAgY29ubmVjdGlv bigpLT5zZXRNb3VzZUdyYWJiZXIobnVsbHB0cik7CisgICAgICAgICB9CisrICAgICAgICByZXR1 cm47CisgICAgIH0gZWxzZSBpZiAoZXZlbnQtPmF0b20gPT0gYXRvbShRWGNiQXRvbTo6X05FVF9G UkFNRV9FWFRFTlRTKSkgeworICAgICAgICAgbV9kaXJ0eUZyYW1lTWFyZ2lucyA9IHRydWU7Cisg ICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNi d2luZG93LmggYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmgK K2luZGV4IDU1YWY5Mjc5YjEuLjZmNWMxZjVlZDkgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3Bs dWdpbnMvcGxhdGZvcm1zL3hjYi9xeGNid2luZG93LmgKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lu cy9wbGF0Zm9ybXMveGNiL3F4Y2J3aW5kb3cuaAorQEAgLTc0LDE0ICs3NCw2IEBAIHB1YmxpYzoK KyAKKyAgICAgUV9ERUNMQVJFX0ZMQUdTKE5ldFdtU3RhdGVzLCBOZXRXbVN0YXRlKQorIAorLSAg ICBlbnVtIFRhc2sgeworLSAgICAgICAgTWFwLAorLSAgICAgICAgVW5tYXAsCistICAgICAgICBT ZXRHZW9tZXRyeSwKKy0gICAgICAgIFNldFdpbmRvd0ZsYWdzLAorLSAgICAgICAgU2V0V2luZG93 U3RhdGUKKy0gICAgfTsKKy0KKyAgICAgUVhjYldpbmRvdyhRV2luZG93ICp3aW5kb3cpOworICAg ICB+UVhjYldpbmRvdygpOworIAorQEAgLTE1MSw5ICsxNDMsNiBAQCBwdWJsaWM6CisgCisgICAg IFFYY2JXaW5kb3cgKnRvV2luZG93KCkgb3ZlcnJpZGU7CisgCistICAgIGJvb2wgc2hvdWxkRGVm ZXJUYXNrKFRhc2sgdGFzayk7CistICAgIHZvaWQgaGFuZGxlRGVmZXJyZWRUYXNrcygpOworLQor ICAgICB2b2lkIGhhbmRsZU1vdXNlRXZlbnQoeGNiX3RpbWVzdGFtcF90IHRpbWUsIGNvbnN0IFFQ b2ludCAmbG9jYWwsIGNvbnN0IFFQb2ludCAmZ2xvYmFsLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZGlmaWVycywgUUV2ZW50OjpUeXBlIHR5cGUs IFF0OjpNb3VzZUV2ZW50U291cmNlIHNvdXJjZSk7CisgCitAQCAtMjkyLDExICsyODEsNiBAQCBw cm90ZWN0ZWQ6CisgICAgIGludCBtX3N3YXBJbnRlcnZhbCA9IC0xOworIAorICAgICBxcmVhbCBt X3NpemVIaW50c1NjYWxlRmFjdG9yID0gMS4wOworLQorLSAgICBib29sIG1fd21TdGF0ZVZhbGlk ID0gdHJ1ZTsKKy0gICAgUVZlY3RvcjxUYXNrPiBtX2RlZmVycmVkVGFza3M7CistICAgIGJvb2wg bV9pc1dtTWFuYWdlZFdpbmRvdyA9IHRydWU7CistICAgIFFSZWN0IG1fZGVmZXJyZWRHZW9tZXRy eTsKKyB9OworIAorIGNsYXNzIFFYY2JGb3JlaWduV2luZG93IDogcHVibGljIFFYY2JXaW5kb3cK K2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMvZ3RrMy9xZ3Rr M21lbnUuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL2d0azMvcWd0azNt ZW51LmNwcAoraW5kZXggZDlkMTE3ZmFlYi4uNjQwYjQ5ZGFhMCAxMDA2NDQKKy0tLSBhL3F0YmFz ZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5jcHAKKysrKyBiL3F0 YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy9ndGszL3FndGszbWVudS5jcHAKK0BAIC04 NSw2ICs4NSw3IEBAIFFHdGszTWVudUl0ZW06OlFHdGszTWVudUl0ZW0oKQorICAgICAgIG1fY2hl Y2thYmxlKGZhbHNlKSwKKyAgICAgICBtX2NoZWNrZWQoZmFsc2UpLAorICAgICAgIG1fZW5hYmxl ZCh0cnVlKSwKKysgICAgICBtX2V4Y2x1c2l2ZShmYWxzZSksCisgICAgICAgbV91bmRlcmxpbmUo ZmFsc2UpLAorICAgICAgIG1faW52YWxpZCh0cnVlKSwKKyAgICAgICBtX21lbnUobnVsbHB0ciks CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0 b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nLmNwcCBiL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmls ZWRpYWxvZy5jcHAKK2luZGV4IDAwNDhiYmMxZTYuLjM5NmU3ZjZkMWMgMTAwNjQ0CistLS0gYS9x dGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVz a3RvcHBvcnRhbGZpbGVkaWFsb2cuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZv cm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2cuY3Bw CitAQCAtMTAyLDE1ICsxMDIsMTIgQEAgY29uc3QgUURCdXNBcmd1bWVudCAmb3BlcmF0b3IgPj4o Y29uc3QgUURCdXNBcmd1bWVudCAmYXJnLCBRWGRnRGVza3RvcFBvcnRhbEZpbGUKKyBjbGFzcyBR WGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2YXRlCisgeworIHB1YmxpYzoKKy0gICAgUVhk Z0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZShRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVy ICpuYXRpdmVGaWxlRGlhbG9nKQorKyAgICBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2dQcml2 YXRlKFFQbGF0Zm9ybUZpbGVEaWFsb2dIZWxwZXIgKm5hdGl2ZUZpbGVEaWFsb2csIHVpbnQgZmls ZUNob29zZXJQb3J0YWxWZXJzaW9uKQorICAgICAgICAgOiBuYXRpdmVGaWxlRGlhbG9nKG5hdGl2 ZUZpbGVEaWFsb2cpCisrICAgICAgICAsIGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbihmaWxlQ2hv b3NlclBvcnRhbFZlcnNpb24pCisgICAgIHsgfQorIAorLSAgICBXSWQgd2luSWQgPSAwOworLSAg ICBib29sIGRpcmVjdG9yeU1vZGUgPSBmYWxzZTsKKy0gICAgYm9vbCBtb2RhbCA9IGZhbHNlOwor LSAgICBib29sIG11bHRpcGxlRmlsZXMgPSBmYWxzZTsKKy0gICAgYm9vbCBzYXZlRmlsZSA9IGZh bHNlOworKyAgICBRRXZlbnRMb29wIGxvb3A7CisgICAgIFFTdHJpbmcgYWNjZXB0TGFiZWw7Cisg ICAgIFFTdHJpbmcgZGlyZWN0b3J5OworICAgICBRU3RyaW5nIHRpdGxlOworQEAgLTEyMSwxOSAr MTE4LDI3IEBAIHB1YmxpYzoKKyAgICAgUVN0cmluZyBzZWxlY3RlZE1pbWVUeXBlRmlsdGVyOwor ICAgICBRU3RyaW5nIHNlbGVjdGVkTmFtZUZpbHRlcjsKKyAgICAgUVN0cmluZ0xpc3Qgc2VsZWN0 ZWRGaWxlczsKKy0gICAgUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxv ZyA9IG51bGxwdHI7CisrICAgIHN0ZDo6dW5pcXVlX3B0cjxRUGxhdGZvcm1GaWxlRGlhbG9nSGVs cGVyPiBuYXRpdmVGaWxlRGlhbG9nOworKyAgICB1aW50IGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lv biA9IDA7CisrICAgIGJvb2wgZmFpbGVkVG9PcGVuID0gZmFsc2U7CisrICAgIGJvb2wgZGlyZWN0 b3J5TW9kZSA9IGZhbHNlOworKyAgICBib29sIG11bHRpcGxlRmlsZXMgPSBmYWxzZTsKKysgICAg Ym9vbCBzYXZlRmlsZSA9IGZhbHNlOworIH07CisgCistUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlh bG9nOjpRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBl ciAqbmF0aXZlRmlsZURpYWxvZykKKytRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OlFYZGdE ZXNrdG9wUG9ydGFsRmlsZURpYWxvZyhRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyICpuYXRpdmVG aWxlRGlhbG9nLCB1aW50IGZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbikKKyAgICAgOiBRUGxhdGZv cm1GaWxlRGlhbG9nSGVscGVyKCkKKy0gICAgLCBkX3B0cihuZXcgUVhkZ0Rlc2t0b3BQb3J0YWxG aWxlRGlhbG9nUHJpdmF0ZShuYXRpdmVGaWxlRGlhbG9nKSkKKysgICAgLCBkX3B0cihuZXcgUVhk Z0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZShuYXRpdmVGaWxlRGlhbG9nLCBmaWxlQ2hv b3NlclBvcnRhbFZlcnNpb24pKQorIHsKKyAgICAgUV9EKFFYZGdEZXNrdG9wUG9ydGFsRmlsZURp YWxvZyk7CisgCisgICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nKSB7CistICAgICAgICBjb25u ZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2csIFNJR05BTChhY2NlcHQoKSksIHRoaXMsIFNJR05BTChh Y2NlcHQoKSkpOworLSAgICAgICAgY29ubmVjdChkLT5uYXRpdmVGaWxlRGlhbG9nLCBTSUdOQUwo cmVqZWN0KCkpLCB0aGlzLCBTSUdOQUwocmVqZWN0KCkpKTsKKysgICAgICAgIGNvbm5lY3QoZC0+ bmF0aXZlRmlsZURpYWxvZy5nZXQoKSwgU0lHTkFMKGFjY2VwdCgpKSwgdGhpcywgU0lHTkFMKGFj Y2VwdCgpKSk7CisrICAgICAgICBjb25uZWN0KGQtPm5hdGl2ZUZpbGVEaWFsb2cuZ2V0KCksIFNJ R05BTChyZWplY3QoKSksIHRoaXMsIFNJR05BTChyZWplY3QoKSkpOworICAgICB9CisrCisrICAg IGQtPmxvb3AuY29ubmVjdCh0aGlzLCBTSUdOQUwoYWNjZXB0KCkpLCBTTE9UKHF1aXQoKSkpOwor KyAgICBkLT5sb29wLmNvbm5lY3QodGhpcywgU0lHTkFMKHJlamVjdCgpKSwgU0xPVChxdWl0KCkp KTsKKyB9CisgCisgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjp+UVhkZ0Rlc2t0b3BQb3J0 YWxGaWxlRGlhbG9nKCkKK0BAIC0xNzcsNyArMTgyLDcgQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRh bEZpbGVEaWFsb2c6OmluaXRpYWxpemVEaWFsb2coKQorICAgICBzZXREaXJlY3Rvcnkob3B0aW9u cygpLT5pbml0aWFsRGlyZWN0b3J5KCkpOworIH0KKyAKKy12b2lkIFFYZGdEZXNrdG9wUG9ydGFs RmlsZURpYWxvZzo6b3BlblBvcnRhbCgpCisrdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFs b2c6Om9wZW5Qb3J0YWwoUXQ6OldpbmRvd0ZsYWdzIHdpbmRvd0ZsYWdzLCBRdDo6V2luZG93TW9k YWxpdHkgd2luZG93TW9kYWxpdHksIFFXaW5kb3cgKnBhcmVudCkKKyB7CisgICAgIFFfRChRWGRn RGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOworIAorQEAgLTE4NSwxMyArMTkwLDEzIEBAIHZvaWQg UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpvcGVuUG9ydGFsKCkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUxhdGluMVN0cmlu ZygiL29yZy9mcmVlZGVza3RvcC9wb3J0YWwvZGVza3RvcCIpLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTGF0aW4xU3RyaW5nKCJv cmcuZnJlZWRlc2t0b3AucG9ydGFsLkZpbGVDaG9vc2VyIiksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPnNhdmVGaWxlID8gUUxh dGluMVN0cmluZygiU2F2ZUZpbGUiKSA6IFFMYXRpbjFTdHJpbmcoIk9wZW5GaWxlIikpOworLSAg ICBRU3RyaW5nIHBhcmVudFdpbmRvd0lkID0gUUxhdGluMVN0cmluZygieDExOiIpICsgUVN0cmlu Zzo6bnVtYmVyKGQtPndpbklkLCAxNik7CisrICAgIFFTdHJpbmcgcGFyZW50V2luZG93SWQgPSBR TGF0aW4xU3RyaW5nKCJ4MTE6IikgKyBRU3RyaW5nOjpudW1iZXIocGFyZW50ID8gcGFyZW50LT53 aW5JZCgpIDogMCwgMTYpOworIAorICAgICBRVmFyaWFudE1hcCBvcHRpb25zOworICAgICBpZiAo IWQtPmFjY2VwdExhYmVsLmlzRW1wdHkoKSkKKyAgICAgICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRp bjFTdHJpbmcoImFjY2VwdF9sYWJlbCIpLCBkLT5hY2NlcHRMYWJlbCk7CisgCistICAgIG9wdGlv bnMuaW5zZXJ0KFFMYXRpbjFTdHJpbmcoIm1vZGFsIiksIGQtPm1vZGFsKTsKKysgICAgb3B0aW9u cy5pbnNlcnQoUUxhdGluMVN0cmluZygibW9kYWwiKSwgd2luZG93TW9kYWxpdHkgIT0gUXQ6Ok5v bk1vZGFsKTsKKyAgICAgb3B0aW9ucy5pbnNlcnQoUUxhdGluMVN0cmluZygibXVsdGlwbGUiKSwg ZC0+bXVsdGlwbGVGaWxlcyk7CisgICAgIG9wdGlvbnMuaW5zZXJ0KFFMYXRpbjFTdHJpbmcoImRp cmVjdG9yeSIpLCBkLT5kaXJlY3RvcnlNb2RlKTsKKyAKK0BAIC0yOTAsMTAgKzI5NSwxOCBAQCB2 b2lkIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6b3BlblBvcnRhbCgpCisgCisgICAgIFFE QnVzUGVuZGluZ0NhbGwgcGVuZGluZ0NhbGwgPSBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMo KS5hc3luY0NhbGwobWVzc2FnZSk7CisgICAgIFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyICp3YXRj aGVyID0gbmV3IFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyKHBlbmRpbmdDYWxsKTsKKy0gICAgY29u bmVjdCh3YXRjaGVyLCAmUURCdXNQZW5kaW5nQ2FsbFdhdGNoZXI6OmZpbmlzaGVkLCB0aGlzLCBb dGhpc10gKFFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyICp3YXRjaGVyKSB7CisrICAgIGNvbm5lY3Qo d2F0Y2hlciwgJlFEQnVzUGVuZGluZ0NhbGxXYXRjaGVyOjpmaW5pc2hlZCwgdGhpcywgWz1dIChR REJ1c1BlbmRpbmdDYWxsV2F0Y2hlciAqd2F0Y2hlcikgeworICAgICAgICAgUURCdXNQZW5kaW5n UmVwbHk8UURCdXNPYmplY3RQYXRoPiByZXBseSA9ICp3YXRjaGVyOworLSAgICAgICAgaWYgKHJl cGx5LmlzRXJyb3IoKSkgeworLSAgICAgICAgICAgIFFfRU1JVCByZWplY3QoKTsKKysgICAgICAg IC8vIEFueSBlcnJvciBtZWFucyB0aGUgZGlhbG9nIGlzIG5vdCBzaG93biBhbmQgd2UgbmVlZCB0 byBmYWxsYmFjaworKyAgICAgICAgZC0+ZmFpbGVkVG9PcGVuID0gcmVwbHkuaXNFcnJvcigpOwor KyAgICAgICAgaWYgKGQtPmZhaWxlZFRvT3BlbikgeworKyAgICAgICAgICAgIGlmIChkLT5uYXRp dmVGaWxlRGlhbG9nKSB7CisrICAgICAgICAgICAgICAgIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPnNo b3cod2luZG93RmxhZ3MsIHdpbmRvd01vZGFsaXR5LCBwYXJlbnQpOworKyAgICAgICAgICAgICAg ICBpZiAoZC0+bG9vcC5pc1J1bm5pbmcoKSkKKysgICAgICAgICAgICAgICAgICAgIGQtPm5hdGl2 ZUZpbGVEaWFsb2ctPmV4ZWMoKTsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAg ICAgICBRX0VNSVQgcmVqZWN0KCk7CisrICAgICAgICAgICAgfQorICAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgICBRREJ1c0Nvbm5lY3Rpb246OnNlc3Npb25CdXMoKS5jb25uZWN0KG51bGxw dHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXBseS52YWx1ZSgpLnBhdGgoKSwKK0BAIC0zMDIsNiArMzE1LDcgQEAgdm9pZCBRWGRnRGVza3Rv cFBvcnRhbEZpbGVEaWFsb2c6Om9wZW5Qb3J0YWwoKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNMT1QoZ290UmVzcG9uc2UodWludCxRVmFyaWFu dE1hcCkpKTsKKyAgICAgICAgIH0KKysgICAgICAgIHdhdGNoZXItPmRlbGV0ZUxhdGVyKCk7Cisg ICAgIH0pOworIH0KKyAKK0BAIC0zMjYsNyArMzQwLDcgQEAgUVVybCBRWGRnRGVza3RvcFBvcnRh bEZpbGVEaWFsb2c6OmRpcmVjdG9yeSgpIGNvbnN0CisgeworICAgICBRX0QoY29uc3QgUVhkZ0Rl c2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKyAKKy0gICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cg JiYgKG9wdGlvbnMoKS0+ZmlsZU1vZGUoKSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9y eSB8fCBvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3Rv cnlPbmx5KSkKKysgICAgaWYgKGQtPm5hdGl2ZUZpbGVEaWFsb2cgJiYgdXNlTmF0aXZlRmlsZURp YWxvZygpKQorICAgICAgICAgcmV0dXJuIGQtPm5hdGl2ZUZpbGVEaWFsb2ctPmRpcmVjdG9yeSgp OworIAorICAgICByZXR1cm4gZC0+ZGlyZWN0b3J5OworQEAgLTM0OCw3ICszNjIsNyBAQCBRTGlz dDxRVXJsPiBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OnNlbGVjdGVkRmlsZXMoKSBjb25z dAorIHsKKyAgICAgUV9EKGNvbnN0IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZyk7CisgCist ICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0g UUZpbGVEaWFsb2dPcHRpb25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxlTW9kZSgpID09 IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkpCisrICAgIGlmIChkLT5uYXRpdmVG aWxlRGlhbG9nICYmIHVzZU5hdGl2ZUZpbGVEaWFsb2coKSkKKyAgICAgICAgIHJldHVybiBkLT5u YXRpdmVGaWxlRGlhbG9nLT5zZWxlY3RlZEZpbGVzKCk7CisgCisgICAgIFFMaXN0PFFVcmw+IGZp bGVzOworQEAgLTQwMywxNiArNDE3LDEzIEBAIHZvaWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlh bG9nOjpleGVjKCkKKyB7CisgICAgIFFfRChRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpOwor IAorLSAgICBpZiAoZC0+bmF0aXZlRmlsZURpYWxvZyAmJiAob3B0aW9ucygpLT5maWxlTW9kZSgp ID09IFFGaWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5IHx8IG9wdGlvbnMoKS0+ZmlsZU1vZGUo KSA9PSBRRmlsZURpYWxvZ09wdGlvbnM6OkRpcmVjdG9yeU9ubHkpKSB7CisrICAgIGlmIChkLT5u YXRpdmVGaWxlRGlhbG9nICYmIHVzZU5hdGl2ZUZpbGVEaWFsb2coKSkgeworICAgICAgICAgZC0+ bmF0aXZlRmlsZURpYWxvZy0+ZXhlYygpOworICAgICAgICAgcmV0dXJuOworICAgICB9CisgCisg ICAgIC8vIEhBQ0sgd2UgaGF2ZSB0byBhdm9pZCByZXR1cm5pbmcgdW50aWwgd2UgZW1pdCB0aGF0 IHRoZSBkaWFsb2cgd2FzIGFjY2VwdGVkIG9yIHJlamVjdGVkCistICAgIFFFdmVudExvb3AgbG9v cDsKKy0gICAgbG9vcC5jb25uZWN0KHRoaXMsIFNJR05BTChhY2NlcHQoKSksIFNMT1QocXVpdCgp KSk7CistICAgIGxvb3AuY29ubmVjdCh0aGlzLCBTSUdOQUwocmVqZWN0KCkpLCBTTE9UKHF1aXQo KSkpOworLSAgICBsb29wLmV4ZWMoKTsKKysgICAgZC0+bG9vcC5leGVjKCk7CisgfQorIAorIHZv aWQgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nOjpoaWRlKCkKK0BAIC00MjksMTMgKzQ0MCwx MCBAQCBib29sIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6c2hvdyhRdDo6V2luZG93Rmxh Z3Mgd2luZG93RmxhZ3MsIFF0OjpXaW5kb3dNbworIAorICAgICBpbml0aWFsaXplRGlhbG9nKCk7 CisgCistICAgIGQtPm1vZGFsID0gd2luZG93TW9kYWxpdHkgIT0gUXQ6Ok5vbk1vZGFsOworLSAg ICBkLT53aW5JZCA9IHBhcmVudCA/IHBhcmVudC0+d2luSWQoKSA6IDA7CistCistICAgIGlmIChk LT5uYXRpdmVGaWxlRGlhbG9nICYmIChvcHRpb25zKCktPmZpbGVNb2RlKCkgPT0gUUZpbGVEaWFs b2dPcHRpb25zOjpEaXJlY3RvcnkgfHwgb3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlh bG9nT3B0aW9uczo6RGlyZWN0b3J5T25seSkpCisrICAgIGlmIChkLT5uYXRpdmVGaWxlRGlhbG9n ICYmIHVzZU5hdGl2ZUZpbGVEaWFsb2coT3BlbkZhbGxiYWNrKSkKKyAgICAgICAgIHJldHVybiBk LT5uYXRpdmVGaWxlRGlhbG9nLT5zaG93KHdpbmRvd0ZsYWdzLCB3aW5kb3dNb2RhbGl0eSwgcGFy ZW50KTsKKyAKKy0gICAgb3BlblBvcnRhbCgpOworKyAgICBvcGVuUG9ydGFsKHdpbmRvd0ZsYWdz LCB3aW5kb3dNb2RhbGl0eSwgcGFyZW50KTsKKyAKKyAgICAgcmV0dXJuIHRydWU7CisgfQorQEAg LTQ2NSw0ICs0NzMsMjEgQEAgdm9pZCBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OmdvdFJl c3BvbnNlKHVpbnQgcmVzcG9uc2UsIGNvbnN0IFFWYXJpYW50TWFwICYKKyAgICAgfQorIH0KKyAK Kytib29sIFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzo6dXNlTmF0aXZlRmlsZURpYWxvZyhR WGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2c6OkZhbGxiYWNrVHlwZSBmYWxsYmFja1R5cGUpIGNv bnN0CisreworKyAgICBRX0QoY29uc3QgUVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nKTsKKysK KysgICAgaWYgKGQtPmZhaWxlZFRvT3BlbiAmJiBmYWxsYmFja1R5cGUgIT0gT3BlbkZhbGxiYWNr KQorKyAgICAgICAgcmV0dXJuIHRydWU7CisrCisrICAgIGlmIChkLT5maWxlQ2hvb3NlclBvcnRh bFZlcnNpb24gPCAzKSB7CisrICAgICAgICBpZiAob3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFG aWxlRGlhbG9nT3B0aW9uczo6RGlyZWN0b3J5KQorKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor KyAgICAgICAgZWxzZSBpZiAob3B0aW9ucygpLT5maWxlTW9kZSgpID09IFFGaWxlRGlhbG9nT3B0 aW9uczo6RGlyZWN0b3J5T25seSkKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgfQor KworKyAgICByZXR1cm4gZmFsc2U7CisrfQorKworIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRnZGVza3RvcHBvcnRhbC9x eGRnZGVza3RvcHBvcnRhbGZpbGVkaWFsb2dfcC5oIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3BsYXRm b3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bwb3J0YWxmaWxlZGlhbG9nX3Au aAoraW5kZXggNGY0ZGU5NmVjZi4uNjVlMjJhNWNmMiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv cGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFs ZmlsZWRpYWxvZ19wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94 ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsZmlsZWRpYWxvZ19wLmgKK0BAIC01MSw2 ICs1MSwxMSBAQCBjbGFzcyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cgOiBwdWJsaWMgUVBs YXRmb3JtRmlsZURpYWxvZ0hlbHBlcgorICAgICBRX09CSkVDVAorICAgICBRX0RFQ0xBUkVfUFJJ VkFURShRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2cpCisgcHVibGljOgorKyAgICBlbnVtIEZh bGxiYWNrVHlwZSB7CisrICAgICAgICBHZW5lcmljRmFsbGJhY2ssCisrICAgICAgICBPcGVuRmFs bGJhY2sKKysgICAgfTsKKysKKyAgICAgZW51bSBDb25kaXRpb25UeXBlIDogdWludCB7CisgICAg ICAgICBHbG9iYWxQYXR0ZXJuID0gMCwKKyAgICAgICAgIE1pbWVUeXBlID0gMQorQEAgLTY5LDcg Kzc0LDcgQEAgcHVibGljOgorICAgICB9OworICAgICB0eXBlZGVmIFFWZWN0b3I8RmlsdGVyPiBG aWx0ZXJMaXN0OworIAorLSAgICBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coUVBsYXRmb3Jt RmlsZURpYWxvZ0hlbHBlciAqbmF0aXZlRmlsZURpYWxvZyA9IG51bGxwdHIpOworKyAgICBRWGRn RGVza3RvcFBvcnRhbEZpbGVEaWFsb2coUVBsYXRmb3JtRmlsZURpYWxvZ0hlbHBlciAqbmF0aXZl RmlsZURpYWxvZyA9IG51bGxwdHIsIHVpbnQgZmlsZUNob29zZXJQb3J0YWxWZXJzaW9uID0gMCk7 CisgICAgIH5RWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coKTsKKyAKKyAgICAgYm9vbCBkZWZh dWx0TmFtZUZpbHRlckRpc2FibGVzKCkgY29uc3Qgb3ZlcnJpZGU7CitAQCAtOTIsNyArOTcsOCBA QCBwcml2YXRlIFFfU0xPVFM6CisgCisgcHJpdmF0ZToKKyAgICAgdm9pZCBpbml0aWFsaXplRGlh bG9nKCk7CistICAgIHZvaWQgb3BlblBvcnRhbCgpOworKyAgICB2b2lkIG9wZW5Qb3J0YWwoUXQ6 OldpbmRvd0ZsYWdzIHdpbmRvd0ZsYWdzLCBRdDo6V2luZG93TW9kYWxpdHkgd2luZG93TW9kYWxp dHksIFFXaW5kb3cgKnBhcmVudCk7CisrICAgIGJvb2wgdXNlTmF0aXZlRmlsZURpYWxvZyhGYWxs YmFja1R5cGUgZmFsbGJhY2tUeXBlID0gR2VuZXJpY0ZhbGxiYWNrKSBjb25zdDsKKyAKKyAgICAg UVNjb3BlZFBvaW50ZXI8UVhkZ0Rlc2t0b3BQb3J0YWxGaWxlRGlhbG9nUHJpdmF0ZT4gZF9wdHI7 CisgfTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcGxhdGZvcm10aGVtZXMveGRn ZGVza3RvcHBvcnRhbC9xeGRnZGVza3RvcHBvcnRhbHRoZW1lLmNwcCBiL3F0YmFzZS9zcmMvcGx1 Z2lucy9wbGF0Zm9ybXRoZW1lcy94ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsdGhl bWUuY3BwCitpbmRleCBmYjMyNGFmYmQ4Li5iODA5NTAzMTIyIDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy9wbHVnaW5zL3BsYXRmb3JtdGhlbWVzL3hkZ2Rlc2t0b3Bwb3J0YWwvcXhkZ2Rlc2t0b3Bw b3J0YWx0aGVtZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wbGF0Zm9ybXRoZW1lcy94 ZGdkZXNrdG9wcG9ydGFsL3F4ZGdkZXNrdG9wcG9ydGFsdGhlbWUuY3BwCitAQCAtMTExLDYgKzEx MSw3IEBAIFFYZGdEZXNrdG9wUG9ydGFsVGhlbWU6OlFYZGdEZXNrdG9wUG9ydGFsVGhlbWUoKQor ICAgICAgICAgaWYgKHJlcGx5LmlzVmFsaWQoKSkgeworICAgICAgICAgICAgIGQtPmZpbGVDaG9v c2VyUG9ydGFsVmVyc2lvbiA9IHJlcGx5LnZhbHVlKCkudG9VSW50KCk7CisgICAgICAgICB9Cisr ICAgICAgICB3YXRjaGVyLT5kZWxldGVMYXRlcigpOworICAgICB9KTsKKyB9CisgCitAQCAtMTUy LDExICsxNTMsMTIgQEAgUVBsYXRmb3JtRGlhbG9nSGVscGVyKiBRWGRnRGVza3RvcFBvcnRhbFRo ZW1lOjpjcmVhdGVQbGF0Zm9ybURpYWxvZ0hlbHBlcihEaWFsb2cKKyB7CisgICAgIFFfRChjb25z dCBRWGRnRGVza3RvcFBvcnRhbFRoZW1lKTsKKyAKKy0gICAgaWYgKHR5cGUgPT0gRmlsZURpYWxv ZykgeworKyAgICBpZiAodHlwZSA9PSBGaWxlRGlhbG9nICYmIGQtPmZpbGVDaG9vc2VyUG9ydGFs VmVyc2lvbikgeworICAgICAgICAgLy8gT2xkZXIgdmVyc2lvbnMgb2YgRmlsZUNob29zZXIgcG9y dGFsIGRvbid0IHN1cHBvcnQgb3BlbmluZyBkaXJlY3RvcmllcywgdGhlcmVmb3JlIHdlIGZhbGxi YWNrCisgICAgICAgICAvLyB0byBuYXRpdmUgZmlsZSBkaWFsb2cgb3BlbmVkIGluc2lkZSB0aGUg c2FuZGJveCB0byBvcGVuIGEgZGlyZWN0b3J5LgorLSAgICAgICAgaWYgKGQtPmZpbGVDaG9vc2Vy UG9ydGFsVmVyc2lvbiA8IDMgJiYgZC0+YmFzZVRoZW1lLT51c2VQbGF0Zm9ybU5hdGl2ZURpYWxv Zyh0eXBlKSkKKy0gICAgICAgICAgICByZXR1cm4gbmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURp YWxvZyhzdGF0aWNfY2FzdDxRUGxhdGZvcm1GaWxlRGlhbG9nSGVscGVyKj4oZC0+YmFzZVRoZW1l LT5jcmVhdGVQbGF0Zm9ybURpYWxvZ0hlbHBlcih0eXBlKSkpOworKyAgICAgICAgaWYgKGQtPmJh c2VUaGVtZS0+dXNlUGxhdGZvcm1OYXRpdmVEaWFsb2codHlwZSkpCisrICAgICAgICAgICAgcmV0 dXJuIG5ldyBRWGRnRGVza3RvcFBvcnRhbEZpbGVEaWFsb2coc3RhdGljX2Nhc3Q8UVBsYXRmb3Jt RmlsZURpYWxvZ0hlbHBlcio+KGQtPmJhc2VUaGVtZS0+Y3JlYXRlUGxhdGZvcm1EaWFsb2dIZWxw ZXIodHlwZSkpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGQtPmZpbGVDaG9vc2VyUG9ydGFsVmVyc2lvbik7CisgCisgICAgICAgICByZXR1cm4g bmV3IFFYZGdEZXNrdG9wUG9ydGFsRmlsZURpYWxvZzsKKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0 YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lLmNwcCBi L3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lLmNw cAoraW5kZXggNDNkNWUxMTlhZC4uMWY5Y2JjNDU2NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv cGx1Z2lucy9wcmludHN1cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lLmNwcAorKysrIGIvcXRi YXNlL3NyYy9wbHVnaW5zL3ByaW50c3VwcG9ydC9jdXBzL3FjdXBzcHJpbnRlbmdpbmUuY3BwCitA QCAtODksOCArODksMTAgQEAgdm9pZCBRQ3Vwc1ByaW50RW5naW5lOjpzZXRQcm9wZXJ0eShQcmlu dEVuZ2luZVByb3BlcnR5S2V5IGtleSwgY29uc3QgUVZhcmlhbnQgJnYKKyAgICAgICAgIGJyZWFr OworICAgICBjYXNlIFBQS19EdXBsZXg6IHsKKyAgICAgICAgIFFQcmludDo6RHVwbGV4TW9kZSBt b2RlID0gUVByaW50OjpEdXBsZXhNb2RlKHZhbHVlLnRvSW50KCkpOworLSAgICAgICAgaWYgKG1v ZGUgIT0gZC0+ZHVwbGV4ICYmIGQtPm1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkRHVwbGV4TW9kZXMo KS5jb250YWlucyhtb2RlKSkKKysgICAgICAgIGlmIChkLT5tX3ByaW50RGV2aWNlLnN1cHBvcnRl ZER1cGxleE1vZGVzKCkuY29udGFpbnMobW9kZSkpIHsKKyAgICAgICAgICAgICBkLT5kdXBsZXgg PSBtb2RlOworKyAgICAgICAgICAgIGQtPmR1cGxleFJlcXVlc3RlZEV4cGxpY2l0bHkgPSB0cnVl OworKyAgICAgICAgfQorICAgICAgICAgYnJlYWs7CisgICAgIH0KKyAgICAgY2FzZSBQUEtfUHJp bnRlck5hbWU6CitAQCAtMjc3LDkgKzI3OSwxMiBAQCB2b2lkIFFDdXBzUHJpbnRFbmdpbmVQcml2 YXRlOjpjaGFuZ2VQcmludGVyKGNvbnN0IFFTdHJpbmcgJm5ld1ByaW50ZXIpCisgICAgIG1fcHJp bnREZXZpY2Uuc3dhcChwcmludERldmljZSk7CisgICAgIHByaW50ZXJOYW1lID0gbV9wcmludERl dmljZS5pZCgpOworIAorLSAgICAvLyBDaGVjayBpZiBuZXcgcHJpbnRlciBzdXBwb3J0cyBjdXJy ZW50IHNldHRpbmdzLCBvdGhlcndpc2UgdXMgZGVmYXVsdHMKKy0gICAgaWYgKGR1cGxleCAhPSBR UHJpbnQ6OkR1cGxleEF1dG8gJiYgIW1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkRHVwbGV4TW9kZXMo KS5jb250YWlucyhkdXBsZXgpKQorKyAgICAvLyBpbiBjYXNlIGEgZHVwbGV4IHZhbHVlIHdhcyBl eHBsaWNpdGx5IHNldCwgY2hlY2sgaWYgbmV3IHByaW50ZXIgc3VwcG9ydHMgY3VycmVudCB2YWx1 ZSwKKysgICAgLy8gb3RoZXJ3aXNlIHVzZSBkZXZpY2UgZGVmYXVsdAorKyAgICBpZiAoIWR1cGxl eFJlcXVlc3RlZEV4cGxpY2l0bHkgfHwgIW1fcHJpbnREZXZpY2Uuc3VwcG9ydGVkRHVwbGV4TW9k ZXMoKS5jb250YWlucyhkdXBsZXgpKSB7CisgICAgICAgICBkdXBsZXggPSBtX3ByaW50RGV2aWNl LmRlZmF1bHREdXBsZXhNb2RlKCk7CisrICAgICAgICBkdXBsZXhSZXF1ZXN0ZWRFeHBsaWNpdGx5 ID0gZmFsc2U7CisrICAgIH0KKyAgICAgUVByaW50OjpDb2xvck1vZGUgY29sb3JNb2RlID0gZ3Jh eXNjYWxlID8gUVByaW50OjpHcmF5U2NhbGUgOiBRUHJpbnQ6OkNvbG9yOworICAgICBpZiAoIW1f cHJpbnREZXZpY2Uuc3VwcG9ydGVkQ29sb3JNb2RlcygpLmNvbnRhaW5zKGNvbG9yTW9kZSkpCisg ICAgICAgICBncmF5c2NhbGUgPSBtX3ByaW50RGV2aWNlLmRlZmF1bHRDb2xvck1vZGUoKSA9PSBR UHJpbnQ6OkdyYXlTY2FsZTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRz dXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZV9wLmggYi9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJp bnRzdXBwb3J0L2N1cHMvcWN1cHNwcmludGVuZ2luZV9wLmgKK2luZGV4IGMwMjFiMGM2NDMuLjhm ODFmZTQ3OGQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3BsdWdpbnMvcHJpbnRzdXBwb3J0L2N1 cHMvcWN1cHNwcmludGVuZ2luZV9wLmgKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lucy9wcmludHN1 cHBvcnQvY3Vwcy9xY3Vwc3ByaW50ZW5naW5lX3AuaAorQEAgLTEwMCw2ICsxMDAsNyBAQCBwcml2 YXRlOgorICAgICBRU3RyaW5nTGlzdCBjdXBzT3B0aW9uczsKKyAgICAgUVN0cmluZyBjdXBzVGVt cEZpbGU7CisgICAgIFFQcmludDo6RHVwbGV4TW9kZSBkdXBsZXg7CisrICAgIGJvb2wgZHVwbGV4 UmVxdWVzdGVkRXhwbGljaXRseSA9IGZhbHNlOworIH07CisgCisgUVRfRU5EX05BTUVTUEFDRQor ZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL2liYXNlL3FzcWxfaWJh c2UuY3BwIGIvcXRiYXNlL3NyYy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJhc2UvcXNxbF9pYmFzZS5j cHAKK2luZGV4IDY3ZTcxNTRmYTYuLjQwODc2MTUyZTUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3BsdWdpbnMvc3FsZHJpdmVycy9pYmFzZS9xc3FsX2liYXNlLmNwcAorKysrIGIvcXRiYXNlL3Ny Yy9wbHVnaW5zL3NxbGRyaXZlcnMvaWJhc2UvcXNxbF9pYmFzZS5jcHAKK0BAIC04MTcsNyArODE3 LDcgQEAgYm9vbCBRSUJhc2VSZXN1bHRQcml2YXRlOjp3cml0ZUFycmF5KGludCBjb2x1bW4sIGNv bnN0IFFMaXN0PFFWYXJpYW50PiAmbGlzdCkKKyAgICAgYmEucmVzaXplKGludChidWZMZW4pKTsK KyAKKyAgICAgaWYgKGxpc3Quc2l6ZSgpID4gYXJyYXlTaXplKSB7CistICAgICAgICBlcnJvciA9 IFFMYXRpbjFTdHJpbmcoIkFycmF5IHNpemUgbWlzc21hdGNoOiBzaXplIG9mICUxIGlzICUyLCBz aXplIG9mIHByb3ZpZGVkIGxpc3QgaXMgJTMiKTsKKysgICAgICAgIGVycm9yID0gUUxhdGluMVN0 cmluZygiQXJyYXkgc2l6ZSBtaXNtYXRjaDogc2l6ZSBvZiAlMSBpcyAlMiwgc2l6ZSBvZiBwcm92 aWRlZCBsaXN0IGlzICUzIik7CisgICAgICAgICBlcnJvciA9IGVycm9yLmFyZyhRTGF0aW4xU3Ry aW5nKHNxbG5hbWUpKS5hcmcoYXJyYXlTaXplKS5hcmcobGlzdC5zaXplKCkpOworICAgICAgICAg cS0+c2V0TGFzdEVycm9yKFFTcWxFcnJvcihlcnJvciwgUUxhdGluMVN0cmluZygiIiksIFFTcWxF cnJvcjo6U3RhdGVtZW50RXJyb3IpKTsKKyAgICAgICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3BsdWdpbnMvc3FsZHJpdmVycy9teXNxbC9xc3FsX215c3FsLmNwcCBi L3F0YmFzZS9zcmMvcGx1Z2lucy9zcWxkcml2ZXJzL215c3FsL3FzcWxfbXlzcWwuY3BwCitpbmRl eCA3Y2EwNTVlZWEyLi42YmM5ZDQ2NzU1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy9wbHVnaW5z L3NxbGRyaXZlcnMvbXlzcWwvcXNxbF9teXNxbC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcGx1Z2lu cy9zcWxkcml2ZXJzL215c3FsL3FzcWxfbXlzcWwuY3BwCitAQCAtMjIzLDcgKzIyMyw3IEBAIHB1 YmxpYzoKKyAgICAgc3RydWN0IFFNeUZpZWxkCisgICAgIHsKKyAgICAgICAgIGNoYXIgKm91dEZp ZWxkID0gbnVsbHB0cjsKKy0gICAgICAgIE1ZU1FMX0ZJRUxEICpteUZpZWxkID0gbnVsbHB0cjsK KysgICAgICAgIGNvbnN0IE1ZU1FMX0ZJRUxEICpteUZpZWxkID0gbnVsbHB0cjsKKyAgICAgICAg IFFNZXRhVHlwZTo6VHlwZSB0eXBlID0gUU1ldGFUeXBlOjpVbmtub3duVHlwZTsKKyAgICAgICAg IG15X2Jvb2wgbnVsbEluZGljYXRvciA9IGZhbHNlOworICAgICAgICAgdWxvbmcgYnVmTGVuZ3Ro ID0gMHVsOworQEAgLTM2MSw3ICszNjEsNyBAQCBzdGF0aWMgYm9vbCBxSXNJbnRlZ2VyKGludCB0 KQorIHZvaWQgUU1ZU1FMUmVzdWx0UHJpdmF0ZTo6YmluZEJsb2JzKCkKKyB7CisgICAgIGludCBp OworLSAgICBNWVNRTF9GSUVMRCAqZmllbGRJbmZvOworKyAgICBjb25zdCBNWVNRTF9GSUVMRCAq ZmllbGRJbmZvOworICAgICBNWVNRTF9CSU5EICpiaW5kOworIAorICAgICBmb3IoaSA9IDA7IGkg PCBmaWVsZHMuY291bnQoKTsgKytpKSB7CitAQCAtMzc5LDcgKzM3OSw2IEBAIHZvaWQgUU1ZU1FM UmVzdWx0UHJpdmF0ZTo6YmluZEJsb2JzKCkKKyBib29sIFFNWVNRTFJlc3VsdFByaXZhdGU6OmJp bmRJblZhbHVlcygpCisgeworICAgICBNWVNRTF9CSU5EICpiaW5kOworLSAgICBjaGFyICpmaWVs ZDsKKyAgICAgaW50IGkgPSAwOworIAorICAgICBpZiAoIW1ldGEpCitAQCAtMzkyLDM1ICszOTEs MzQgQEAgYm9vbCBRTVlTUUxSZXN1bHRQcml2YXRlOjpiaW5kSW5WYWx1ZXMoKQorICAgICBpbkJp bmRzID0gbmV3IE1ZU1FMX0JJTkRbZmllbGRzLnNpemUoKV07CisgICAgIG1lbXNldChpbkJpbmRz LCAwLCBmaWVsZHMuc2l6ZSgpICogc2l6ZW9mKE1ZU1FMX0JJTkQpKTsKKyAKKy0gICAgTVlTUUxf RklFTEQgKmZpZWxkSW5mbzsKKysgICAgY29uc3QgTVlTUUxfRklFTEQgKmZpZWxkSW5mbzsKKyAK KyAgICAgd2hpbGUoKGZpZWxkSW5mbyA9IG15c3FsX2ZldGNoX2ZpZWxkKG1ldGEpKSkgeworKyAg ICAgICAgYmluZCA9ICZpbkJpbmRzW2ldOworKworICAgICAgICAgUU15RmllbGQgJmYgPSBmaWVs ZHNbaV07CisgICAgICAgICBmLm15RmllbGQgPSBmaWVsZEluZm87CistCisrICAgICAgICBiaW5k LT5idWZmZXJfbGVuZ3RoID0gZi5idWZMZW5ndGggPSBmaWVsZEluZm8tPmxlbmd0aCArIDE7Cisr ICAgICAgICBiaW5kLT5idWZmZXJfdHlwZSA9IGZpZWxkSW5mby0+dHlwZTsKKyAgICAgICAgIGYu dHlwZSA9IHFEZWNvZGVNWVNRTFR5cGUoZmllbGRJbmZvLT50eXBlLCBmaWVsZEluZm8tPmZsYWdz KTsKKyAgICAgICAgIGlmIChxSXNCbG9iKGZpZWxkSW5mby0+dHlwZSkpIHsKKyAgICAgICAgICAg ICAvLyB0aGUgc2l6ZSBvZiBhIGJsb2ItZmllbGQgaXMgYXZhaWxhYmxlIGFzIHNvb24gYXMgd2Ug Y2FsbAorICAgICAgICAgICAgIC8vIG15c3FsX3N0bXRfc3RvcmVfcmVzdWx0KCkKKyAgICAgICAg ICAgICAvLyBhZnRlciBteXNxbF9zdG10X2V4ZWMoKSBpbiBRTVlTUUxSZXN1bHQ6OmV4ZWMoKQor LSAgICAgICAgICAgIGZpZWxkSW5mby0+bGVuZ3RoID0gMDsKKysgICAgICAgICAgICBiaW5kLT5i dWZmZXJfbGVuZ3RoID0gZi5idWZMZW5ndGggPSAwOworICAgICAgICAgICAgIGhhc0Jsb2JzID0g dHJ1ZTsKKyAgICAgICAgIH0gZWxzZSBpZiAocUlzSW50ZWdlcihmLnR5cGUpKSB7CistICAgICAg ICAgICAgZmllbGRJbmZvLT5sZW5ndGggPSA4OworKyAgICAgICAgICAgIGJpbmQtPmJ1ZmZlcl9s ZW5ndGggPSBmLmJ1Zkxlbmd0aCA9IDg7CisgICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAg IGZpZWxkSW5mby0+dHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworKyAgICAgICAgICAgIGJpbmQt PmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TVFJJTkc7CisgICAgICAgICB9CistICAgICAgICBi aW5kID0gJmluQmluZHNbaV07CistICAgICAgICBmaWVsZCA9IG5ldyBjaGFyW2ZpZWxkSW5mby0+ bGVuZ3RoICsgMV07CistICAgICAgICBtZW1zZXQoZmllbGQsIDAsIGZpZWxkSW5mby0+bGVuZ3Ro ICsgMSk7CisgCistICAgICAgICBiaW5kLT5idWZmZXJfdHlwZSA9IGZpZWxkSW5mby0+dHlwZTsK Ky0gICAgICAgIGJpbmQtPmJ1ZmZlciA9IGZpZWxkOworLSAgICAgICAgYmluZC0+YnVmZmVyX2xl bmd0aCA9IGYuYnVmTGVuZ3RoID0gZmllbGRJbmZvLT5sZW5ndGggKyAxOworICAgICAgICAgYmlu ZC0+aXNfbnVsbCA9ICZmLm51bGxJbmRpY2F0b3I7CisgICAgICAgICBiaW5kLT5sZW5ndGggPSAm Zi5idWZMZW5ndGg7CisgICAgICAgICBiaW5kLT5pc191bnNpZ25lZCA9IGZpZWxkSW5mby0+Zmxh Z3MgJiBVTlNJR05FRF9GTEFHID8gMSA6IDA7CistICAgICAgICBmLm91dEZpZWxkPWZpZWxkOwor KworKyAgICAgICAgY2hhciAqZmllbGQgPSBuZXcgY2hhcltiaW5kLT5idWZmZXJfbGVuZ3RoICsg MV17fTsKKysgICAgICAgIGJpbmQtPmJ1ZmZlciA9IGYub3V0RmllbGQgPSBmaWVsZDsKKyAKKyAg ICAgICAgICsraTsKKyAgICAgfQorQEAgLTEzNjksMjAgKzEzNjcsMjAgQEAgYm9vbCBRTVlTUUxE cml2ZXI6Om9wZW4oY29uc3QgUVN0cmluZyYgZGIsCisgICAgIH0KKyAKKyAjaWYgTVlTUUxfVkVS U0lPTl9JRCA+PSA1MDAwNworLSAgICBpZiAobXlzcWxfZ2V0X2NsaWVudF92ZXJzaW9uKCkgPj0g NTA1MDMgJiYgbXlzcWxfZ2V0X3NlcnZlcl92ZXJzaW9uKGQtPm15c3FsKSA+PSA1MDUwMykgewor LSAgICAgICAgLy8gZm9yY2UgdGhlIGNvbW11bmljYXRpb24gdG8gYmUgdXRmOG1iNCAob25seSB1 dGY4bWI0IHN1cHBvcnRzIDQtYnl0ZSBjaGFyYWN0ZXJzKQorLSAgICAgICAgbXlzcWxfc2V0X2No YXJhY3Rlcl9zZXQoZC0+bXlzcWwsICJ1dGY4bWI0Iik7CisrICAgIC8vIGZvcmNlIHRoZSBjb21t dW5pY2F0aW9uIHRvIGJlIHV0ZjhtYjQgKG9ubHkgdXRmOG1iNCBzdXBwb3J0cyA0LWJ5dGUgY2hh cmFjdGVycykKKysgICAgaWYgKG15c3FsX3NldF9jaGFyYWN0ZXJfc2V0KGQtPm15c3FsLCAidXRm OG1iNCIpKSB7CisrICAgICAgICAvLyB0aGlzIGZhaWxlZCwgdHJ5IGZvcmNpbmcgaXQgdG8gdXRm IChCTVAgb25seSkKKysgICAgICAgIGlmIChteXNxbF9zZXRfY2hhcmFjdGVyX3NldChkLT5teXNx bCwgInV0ZjgiKSkKKysgICAgICAgICAgICBxV2FybmluZygpIDw8ICJNeVNRTDogVW5hYmxlIHRv IHNldCB0aGUgY2xpZW50IGNoYXJhY3RlciBzZXQgdG8gdXRmOC4iOworICNpZiBRVF9DT05GSUco dGV4dGNvZGVjKQorLSAgICAgICAgZC0+dGMgPSBRVGV4dENvZGVjOjpjb2RlY0Zvck5hbWUoIlVU Ri04Iik7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgZC0+dGMgPSBjb2RlYyhkLT5teXNx bCk7CisgI2VuZGlmCistICAgIH0gZWxzZQorLSAgICB7CistICAgICAgICAvLyBmb3JjZSB0aGUg Y29tbXVuaWNhdGlvbiB0byBiZSB1dGY4CistICAgICAgICBteXNxbF9zZXRfY2hhcmFjdGVyX3Nl dChkLT5teXNxbCwgInV0ZjgiKTsKKysgICAgfQorICNpZiBRVF9DT05GSUcodGV4dGNvZGVjKQor LSAgICAgICAgZC0+dGMgPSBjb2RlYyhkLT5teXNxbCk7CisrICAgIGVsc2UKKysgICAgICAgIGQt PnRjID0gUVRleHRDb2RlYzo6Y29kZWNGb3JOYW1lKCJVVEYtOCIpOworICNlbmRpZgorLSAgICB9 CisgI2VuZGlmICAvLyBNWVNRTF9WRVJTSU9OX0lEID49IDUwMDA3CisgCisgICAgIGQtPnByZXBh cmVkUXVlcnlzRW5hYmxlZCA9IGNoZWNrUHJlcGFyZWRRdWVyaWVzKGQtPm15c3FsKTsKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludC0yNC5w bmcgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludGVyLTI0LnBu Zworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvaW1hZ2VzL3ByaW50LTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlh bG9ncy9pbWFnZXMvcHJpbnRlci0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50 c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludC0zMi5wbmcgYi9xdGJhc2Uvc3JjL3ByaW50c3Vw cG9ydC9kaWFsb2dzL2ltYWdlcy9wcmludGVyLTMyLnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAl CityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ByaW50LTMyLnBu ZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvcHJpbnRlci0zMi5w bmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92 aWV3LXBhZ2Utc2lkZWQtMjQucG5nIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9p bWFnZXMvdmlldy1wYWdlcy1mYWNpbmctMjQucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3Jl bmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLXNpZGVk LTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1w YWdlcy1mYWNpbmctMjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLXNpZGVkLTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTMyLnBuZworc2ltaWxhcml0 eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2Vz L3ZpZXctcGFnZS1zaWRlZC0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL3ZpZXctcGFnZXMtZmFjaW5nLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0yNC5wbmcgYi9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLW92ZXJ2aWV3 LTI0LnBuZworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0yNC5wbmcKK3JlbmFtZSB0byBzcmMv cHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtb3ZlcnZpZXctMjQucG5nCitk aWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1w YWdlLW11bHRpLTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2Vz L3ZpZXctcGFnZXMtb3ZlcnZpZXctMzIucG5nCitzaW1pbGFyaXR5IGluZGV4IDEwMCUKK3JlbmFt ZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdlLW11bHRpLTMy LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvdmlldy1wYWdl cy1vdmVydmlldy0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTI0LnBuZyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTI0LnBuZworc2ltaWxhcml0eSBp bmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3Zp ZXctcGFnZS1vbmUtMjQucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2lt YWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2Utb25lLTMyLnBuZyBiL3F0YmFzZS9z cmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTMyLnBuZwor c2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvaW1hZ2VzL3ZpZXctcGFnZS1vbmUtMzIucG5nCityZW5hbWUgdG8gc3JjL3ByaW50c3VwcG9y dC9kaWFsb2dzL2ltYWdlcy92aWV3LXBhZ2VzLXNpbmdsZS0zMi5wbmcKK2RpZmYgLS1naXQgYS9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0yNC5wbmcgYi9x dGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC1wYWdlLTI0LnBu Zworc2ltaWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvaW1hZ2VzL2ZpdC1wYWdlLTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQv ZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtcGFnZS0yNC5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtcGFnZS0zMi5wbmcgYi9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy96b29tLWZpdC1wYWdlLTMyLnBuZworc2lt aWxhcml0eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3Mv aW1hZ2VzL2ZpdC1wYWdlLTMyLnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9n cy9pbWFnZXMvem9vbS1maXQtcGFnZS0zMi5wbmcKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL2ltYWdlcy9maXQtd2lkdGgtMjQucG5nIGIvcXRiYXNlL3NyYy9w cmludHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvem9vbS1maXQtd2lkdGgtMjQucG5nCitzaW1pbGFy aXR5IGluZGV4IDEwMCUKK3JlbmFtZSBmcm9tIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9pbWFn ZXMvZml0LXdpZHRoLTI0LnBuZworcmVuYW1lIHRvIHNyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9p bWFnZXMvem9vbS1maXQtd2lkdGgtMjQucG5nCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9wcmlu dHN1cHBvcnQvZGlhbG9ncy9pbWFnZXMvZml0LXdpZHRoLTMyLnBuZyBiL3F0YmFzZS9zcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2VzL3pvb20tZml0LXdpZHRoLTMyLnBuZworc2ltaWxhcml0 eSBpbmRleCAxMDAlCityZW5hbWUgZnJvbSBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1hZ2Vz L2ZpdC13aWR0aC0zMi5wbmcKK3JlbmFtZSB0byBzcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvaW1h Z2VzL3pvb20tZml0LXdpZHRoLTMyLnBuZworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRz dXBwb3J0L2RpYWxvZ3MvcXBhZ2VzZXR1cGRpYWxvZ191bml4LmNwcCBiL3F0YmFzZS9zcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvcXBhZ2VzZXR1cGRpYWxvZ191bml4LmNwcAoraW5kZXggNzhlNWI4 ZDFlZi4uMmEyODUxNjcxOSAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2Rp YWxvZ3MvcXBhZ2VzZXR1cGRpYWxvZ191bml4LmNwcAorKysrIGIvcXRiYXNlL3NyYy9wcmludHN1 cHBvcnQvZGlhbG9ncy9xcGFnZXNldHVwZGlhbG9nX3VuaXguY3BwCitAQCAtNTMyLDYgKzUzMiw3 IEBAIHZvaWQgUVBhZ2VTZXR1cFdpZGdldDo6dXBkYXRlV2lkZ2V0KCkKKyB2b2lkIFFQYWdlU2V0 dXBXaWRnZXQ6OnNldHVwUHJpbnRlcigpIGNvbnN0CisgeworICAgICBtX3ByaW50ZXItPnNldFBh Z2VMYXlvdXQobV9wYWdlTGF5b3V0KTsKKysgICAgbV9wcmludGVyLT5zZXRQYWdlT3JpZW50YXRp b24obV9wYWdlTGF5b3V0Lm9yaWVudGF0aW9uKCkpOworICNpZiBRVF9DT05GSUcoY3VwcykKKyAg ICAgUUNVUFNTdXBwb3J0OjpQYWdlc1BlclNoZWV0IHBhZ2VzUGVyU2hlZXQgPSBxdmFyaWFudF9j YXN0PFFDVVBTU3VwcG9ydDo6UGFnZXNQZXJTaGVldD4obV91aS5wYWdlc1BlclNoZWV0Q29tYm8t PmN1cnJlbnREYXRhKCkKKyApOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0 L2RpYWxvZ3MvcXByaW50ZGlhbG9nLnFyYyBiL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvcXByaW50ZGlhbG9nLnFyYworaW5kZXggNWE1NzliYWE1NS4uMTBiOGUxZDM0MSAxMDA2NDQK Ky0tLSBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50ZGlhbG9nLnFyYwor KysrIGIvcXRiYXNlL3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2cucXJjCitA QCAtMSw5ICsxLDkgQEAKKyA8IURPQ1RZUEUgUkNDPjxSQ0MgdmVyc2lvbj0iMS4wIj4KKyA8cXJl c291cmNlIHByZWZpeD0iL3F0LXByb2plY3Qub3JnL2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxv ZyI+CistPGZpbGU+aW1hZ2VzL2ZpdC1wYWdlLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMv Zml0LXBhZ2UtMzIucG5nPC9maWxlPgorLTxmaWxlPmltYWdlcy9maXQtd2lkdGgtMjQucG5nPC9m aWxlPgorLTxmaWxlPmltYWdlcy9maXQtd2lkdGgtMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdl cy96b29tLWZpdC1wYWdlLTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvem9vbS1maXQtcGFn ZS0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3pvb20tZml0LXdpZHRoLTI0LnBuZzwvZmls ZT4KKys8ZmlsZT5pbWFnZXMvem9vbS1maXQtd2lkdGgtMzIucG5nPC9maWxlPgorIDxmaWxlPmlt YWdlcy9nby1maXJzdC0yNC5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL2dvLWZpcnN0LTMyLnBu ZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvZ28tbGFzdC0yNC5wbmc8L2ZpbGU+CitAQCAtMTgsMTQg KzE4LDE0IEBACisgPGZpbGU+aW1hZ2VzL2xheW91dC1wb3J0cmFpdC0zMi5wbmc8L2ZpbGU+Cisg PGZpbGU+aW1hZ2VzL3BhZ2Utc2V0dXAtMjQucG5nPC9maWxlPgorIDxmaWxlPmltYWdlcy9wYWdl LXNldHVwLTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvcHJpbnQtMjQucG5nPC9maWxlPgor LTxmaWxlPmltYWdlcy9wcmludC0zMi5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFn ZS1tdWx0aS0yNC5wbmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1tdWx0aS0zMi5w bmc8L2ZpbGU+CistPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZS1vbmUtMjQucG5nPC9maWxlPgorLTxm aWxlPmltYWdlcy92aWV3LXBhZ2Utb25lLTMyLnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmll dy1wYWdlLXNpZGVkLTI0LnBuZzwvZmlsZT4KKy08ZmlsZT5pbWFnZXMvdmlldy1wYWdlLXNpZGVk LTMyLnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvcHJpbnRlci0yNC5wbmc8L2ZpbGU+CisrPGZp bGU+aW1hZ2VzL3ByaW50ZXItMzIucG5nPC9maWxlPgorKzxmaWxlPmltYWdlcy92aWV3LXBhZ2Vz LW92ZXJ2aWV3LTI0LnBuZzwvZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1vdmVydmll dy0zMi5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2VzL3ZpZXctcGFnZXMtc2luZ2xlLTI0LnBuZzwv ZmlsZT4KKys8ZmlsZT5pbWFnZXMvdmlldy1wYWdlcy1zaW5nbGUtMzIucG5nPC9maWxlPgorKzxm aWxlPmltYWdlcy92aWV3LXBhZ2VzLWZhY2luZy0yNC5wbmc8L2ZpbGU+CisrPGZpbGU+aW1hZ2Vz L3ZpZXctcGFnZXMtZmFjaW5nLTMyLnBuZzwvZmlsZT4KKyA8ZmlsZT5pbWFnZXMvem9vbS1pbi0y NC5wbmc8L2ZpbGU+CisgPGZpbGU+aW1hZ2VzL3pvb20taW4tMzIucG5nPC9maWxlPgorIDxmaWxl PmltYWdlcy96b29tLW91dC0yNC5wbmc8L2ZpbGU+CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy9w cmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRkaWFsb2dfdW5peC5jcHAgYi9xdGJhc2Uvc3JjL3By aW50c3VwcG9ydC9kaWFsb2dzL3FwcmludGRpYWxvZ191bml4LmNwcAoraW5kZXggYzViODQ1ZjRl Yy4uNWE1YmExZDBhOCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcHJpbnRzdXBwb3J0L2RpYWxv Z3MvcXByaW50ZGlhbG9nX3VuaXguY3BwCisrKysgYi9xdGJhc2Uvc3JjL3ByaW50c3VwcG9ydC9k aWFsb2dzL3FwcmludGRpYWxvZ191bml4LmNwcAorQEAgLTcwMiwxMyArNzAyLDE0IEBAIHZvaWQg UVByaW50RGlhbG9nUHJpdmF0ZTo6c2VsZWN0UHJpbnRlcihjb25zdCBRUHJpbnRlcjo6T3V0cHV0 Rm9ybWF0IG91dHB1dEZvcm1hCisgICAgICAgICBlbHNlCisgICAgICAgICAgICAgb3B0aW9ucy5n cmF5c2NhbGUtPnNldENoZWNrZWQodHJ1ZSk7CisgCistICAgICAgICAvLyBrZWVwIGR1cGxleCB2 YWx1ZSBleHBsaWNpdGx5IHNldCBieSB1c2VyLCBpZiBhbnksIGFuZCBzZWxlY3RlZCBwcmludGVy IHN1cHBvcnRzIGl0OworLSAgICAgICAgLy8gdXNlIGRldmljZSBkZWZhdWx0IG90aGVyd2lzZQor KyAgICAgICAgLy8gZHVwbGV4IHByaW9yaXRpZXMgdG8gYmUgYXMgZm9sbG93czoKKysgICAgICAg IC8vIDEpIGEgdXNlci1zZWxlY3RlZCBkdXBsZXggdmFsdWUgaW4gdGhlIGRpYWxvZyBoYXMgaGln aGVzdCBwcm9yaXR5CisrICAgICAgICAvLyAyKSBkdXBsZXggdmFsdWUgc2V0IGluIHRoZSBRUHJp bnRlcgorICAgICAgICAgUVByaW50OjpEdXBsZXhNb2RlIGR1cGxleDsKKyAgICAgICAgIGlmIChl eHBsaWNpdER1cGxleE1vZGUgIT0gUVByaW50OjpEdXBsZXhBdXRvICYmIHN1cHBvcnRlZER1cGxl eE1vZGUuY29udGFpbnMoZXhwbGljaXREdXBsZXhNb2RlKSkKKyAgICAgICAgICAgICBkdXBsZXgg PSBleHBsaWNpdER1cGxleE1vZGU7CisgICAgICAgICBlbHNlCistICAgICAgICAgICAgZHVwbGV4 ID0gdG9wLT5kLT5tX2N1cnJlbnRQcmludERldmljZS5kZWZhdWx0RHVwbGV4TW9kZSgpOworKyAg ICAgICAgICAgIGR1cGxleCA9IHN0YXRpY19jYXN0PFFQcmludDo6RHVwbGV4TW9kZT4ocC0+ZHVw bGV4KCkpOworICAgICAgICAgc3dpdGNoIChkdXBsZXgpIHsKKyAgICAgICAgIGNhc2UgUVByaW50 OjpEdXBsZXhOb25lOgorICAgICAgICAgICAgIG9wdGlvbnMubm9EdXBsZXgtPnNldENoZWNrZWQo dHJ1ZSk7IGJyZWFrOworQEAgLTEyNDIsMTAgKzEyNDMsMTAgQEAgdm9pZCBRVW5peFByaW50V2lk Z2V0UHJpdmF0ZTo6X3FfcHJpbnRlckNoYW5nZWQoaW50IGluZGV4KQorICAgICAgICAgICAgIFFT dHJpbmcgZmlsZW5hbWUgPSB3aWRnZXQuZmlsZW5hbWUtPnRleHQoKTsKKyAgICAgICAgICAgICB3 aWRnZXQuZmlsZW5hbWUtPnNldFRleHQoZmlsZW5hbWUpOworICAgICAgICAgICAgIHdpZGdldC5s T3V0cHV0LT5zZXRFbmFibGVkKHRydWUpOworLSAgICAgICAgICAgIGlmIChvcHRpb25zUGFuZSkK Ky0gICAgICAgICAgICAgICAgb3B0aW9uc1BhbmUtPnNlbGVjdFByaW50ZXIoUVByaW50ZXI6OlBk ZkZvcm1hdCk7CisgICAgICAgICAgICAgcHJpbnRlci0+c2V0T3V0cHV0Rm9ybWF0KFFQcmludGVy OjpQZGZGb3JtYXQpOworICAgICAgICAgICAgIG1fY3VycmVudFByaW50RGV2aWNlID0gUVByaW50 RGV2aWNlKCk7CisrICAgICAgICAgICAgaWYgKG9wdGlvbnNQYW5lKQorKyAgICAgICAgICAgICAg ICBvcHRpb25zUGFuZS0+c2VsZWN0UHJpbnRlcihRUHJpbnRlcjo6UGRmRm9ybWF0KTsKKyAgICAg ICAgICAgICByZXR1cm47CisgICAgICAgICB9CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3ByaW50c3VwcG9ydC9kaWFsb2dzL3FwcmludHByZXZpZXdkaWFsb2cuY3BwIGIvcXRiYXNl L3NyYy9wcmludHN1cHBvcnQvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nLmNwcAoraW5kZXgg Mzk1NzVkNWY1Ny4uMjNiN2U4OTUzOCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvcHJpbnRzdXBw b3J0L2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxvZy5jcHAKKysrKyBiL3F0YmFzZS9zcmMvcHJp bnRzdXBwb3J0L2RpYWxvZ3MvcXByaW50cHJldmlld2RpYWxvZy5jcHAKK0BAIC0zNTIsNyArMzUy LDcgQEAgdm9pZCBRUHJpbnRQcmV2aWV3RGlhbG9nUHJpdmF0ZTo6aW5pdChRUHJpbnRlciAqX3By aW50ZXIpCisgc3RhdGljIGlubGluZSB2b2lkIHF0X3NldHVwQWN0aW9uSWNvbihRQWN0aW9uICph Y3Rpb24sIFFMYXRpbjFTdHJpbmcgbmFtZSkKKyB7CisgICAgIFFMYXRpbjFTdHJpbmcgaW1hZ2VQ cmVmaXgoIjovcXQtcHJvamVjdC5vcmcvZGlhbG9ncy9xcHJpbnRwcmV2aWV3ZGlhbG9nL2ltYWdl cy8iKTsKKy0gICAgUUljb24gaWNvbjsKKysgICAgUUljb24gaWNvbiA9IFFJY29uOjpmcm9tVGhl bWUobmFtZSk7CisgICAgIGljb24uYWRkRmlsZShpbWFnZVByZWZpeCArIG5hbWUgKyBRTGF0aW4x U3RyaW5nKCItMjQucG5nIiksIFFTaXplKDI0LCAyNCkpOworICAgICBpY29uLmFkZEZpbGUoaW1h Z2VQcmVmaXggKyBuYW1lICsgUUxhdGluMVN0cmluZygiLTMyLnBuZyIpLCBRU2l6ZSgzMiwgMzIp KTsKKyAgICAgYWN0aW9uLT5zZXRJY29uKGljb24pOworQEAgLTM4Myw4ICszODMsOCBAQCB2b2lk IFFQcmludFByZXZpZXdEaWFsb2dQcml2YXRlOjpzZXR1cEFjdGlvbnMoKQorICAgICBmaXRQYWdl QWN0aW9uLT5zZXRPYmplY3ROYW1lKFFMYXRpbjFTdHJpbmcoImZpdFBhZ2VBY3Rpb24iKSk7Cisg ICAgIGZpdFdpZHRoQWN0aW9uLT5zZXRDaGVja2FibGUodHJ1ZSk7CisgICAgIGZpdFBhZ2VBY3Rp b24tPnNldENoZWNrYWJsZSh0cnVlKTsKKy0gICAgcXRfc2V0dXBBY3Rpb25JY29uKGZpdFdpZHRo QWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJmaXQtd2lkdGgiKSk7CistICAgIHF0X3NldHVwQWN0aW9u SWNvbihmaXRQYWdlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJmaXQtcGFnZSIpKTsKKysgICAgcXRf c2V0dXBBY3Rpb25JY29uKGZpdFdpZHRoQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ6b29tLWZpdC13 aWR0aCIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29uKGZpdFBhZ2VBY3Rpb24sIFFMYXRpbjFT dHJpbmcoInpvb20tZml0LXBhZ2UiKSk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QoZml0R3JvdXAs IFNJR05BTCh0cmlnZ2VyZWQoUUFjdGlvbiopKSwgcSwgU0xPVChfcV9maXQoUUFjdGlvbiopKSk7 CisgCisgICAgIC8vIFpvb20KK0BAIC00MTAsOSArNDEwLDkgQEAgdm9pZCBRUHJpbnRQcmV2aWV3 RGlhbG9nUHJpdmF0ZTo6c2V0dXBBY3Rpb25zKCkKKyAgICAgc2luZ2xlTW9kZUFjdGlvbiA9IG1v ZGVHcm91cC0+YWRkQWN0aW9uKFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJl dmlld0RpYWxvZyIsICJTaG93IHNpbmdsZSBwYWdlIikpOworICAgICBmYWNpbmdNb2RlQWN0aW9u ID0gbW9kZUdyb3VwLT5hZGRBY3Rpb24oUUNvcmVBcHBsaWNhdGlvbjo6dHJhbnNsYXRlKCJRUHJp bnRQcmV2aWV3RGlhbG9nIiwgIlNob3cgZmFjaW5nIHBhZ2VzIikpOworICAgICBvdmVydmlld01v ZGVBY3Rpb24gPSBtb2RlR3JvdXAtPmFkZEFjdGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xh dGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAiU2hvdyBvdmVydmlldyBvZiBhbGwgcGFnZXMiKSk7 CistICAgIHF0X3NldHVwQWN0aW9uSWNvbihzaW5nbGVNb2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5n KCJ2aWV3LXBhZ2Utb25lIikpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24oZmFjaW5nTW9kZUFj dGlvbiwgUUxhdGluMVN0cmluZygidmlldy1wYWdlLXNpZGVkIikpOworLSAgICBxdF9zZXR1cEFj dGlvbkljb24ob3ZlcnZpZXdNb2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2aWV3LXBhZ2UtbXVs dGkiKSk7CisrICAgIHF0X3NldHVwQWN0aW9uSWNvbihzaW5nbGVNb2RlQWN0aW9uLCBRTGF0aW4x U3RyaW5nKCJ2aWV3LXBhZ2VzLXNpbmdsZSIpKTsKKysgICAgcXRfc2V0dXBBY3Rpb25JY29uKGZh Y2luZ01vZGVBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInZpZXctcGFnZXMtZmFjaW5nIikpOworKyAg ICBxdF9zZXR1cEFjdGlvbkljb24ob3ZlcnZpZXdNb2RlQWN0aW9uLCBRTGF0aW4xU3RyaW5nKCJ2 aWV3LXBhZ2VzLW92ZXJ2aWV3IikpOworICAgICBzaW5nbGVNb2RlQWN0aW9uLT5zZXRPYmplY3RO YW1lKFFMYXRpbjFTdHJpbmcoInNpbmdsZU1vZGVBY3Rpb24iKSk7CisgICAgIGZhY2luZ01vZGVB Y3Rpb24tPnNldE9iamVjdE5hbWUoUUxhdGluMVN0cmluZygiZmFjaW5nTW9kZUFjdGlvbiIpKTsK KyAgICAgb3ZlcnZpZXdNb2RlQWN0aW9uLT5zZXRPYmplY3ROYW1lKFFMYXRpbjFTdHJpbmcoIm92 ZXJ2aWV3TW9kZUFjdGlvbiIpKTsKK0BAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBRUHJpbnRQcmV2 aWV3RGlhbG9nUHJpdmF0ZTo6c2V0dXBBY3Rpb25zKCkKKyAgICAgcHJpbnRlckdyb3VwID0gbmV3 IFFBY3Rpb25Hcm91cChxKTsKKyAgICAgcHJpbnRBY3Rpb24gPSBwcmludGVyR3JvdXAtPmFkZEFj dGlvbihRQ29yZUFwcGxpY2F0aW9uOjp0cmFuc2xhdGUoIlFQcmludFByZXZpZXdEaWFsb2ciLCAi UHJpbnQiKSk7CisgICAgIHBhZ2VTZXR1cEFjdGlvbiA9IHByaW50ZXJHcm91cC0+YWRkQWN0aW9u KFFDb3JlQXBwbGljYXRpb246OnRyYW5zbGF0ZSgiUVByaW50UHJldmlld0RpYWxvZyIsICJQYWdl IHNldHVwIikpOworLSAgICBxdF9zZXR1cEFjdGlvbkljb24ocHJpbnRBY3Rpb24sIFFMYXRpbjFT dHJpbmcoInByaW50IikpOworKyAgICBxdF9zZXR1cEFjdGlvbkljb24ocHJpbnRBY3Rpb24sIFFM YXRpbjFTdHJpbmcoInByaW50ZXIiKSk7CisgICAgIHF0X3NldHVwQWN0aW9uSWNvbihwYWdlU2V0 dXBBY3Rpb24sIFFMYXRpbjFTdHJpbmcoInBhZ2Utc2V0dXAiKSk7CisgICAgIFFPYmplY3Q6OmNv bm5lY3QocHJpbnRBY3Rpb24sIFNJR05BTCh0cmlnZ2VyZWQoYm9vbCkpLCBxLCBTTE9UKF9xX3By aW50KCkpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChwYWdlU2V0dXBBY3Rpb24sIFNJR05BTCh0 cmlnZ2VyZWQoYm9vbCkpLCBxLCBTTE9UKF9xX3BhZ2VTZXR1cCgpKSk7CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy9zcWwva2VybmVsL3FzcWxxdWVyeS5jcHAgYi9xdGJhc2Uvc3JjL3NxbC9rZXJu ZWwvcXNxbHF1ZXJ5LmNwcAoraW5kZXggMzJjNjE2NmM3OS4uNjBhZmVmMTBjMyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvc3FsL2tlcm5lbC9xc3FscXVlcnkuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3NxbC9rZXJuZWwvcXNxbHF1ZXJ5LmNwcAorQEAgLTEsNiArMSw2IEBACisgLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKyAqKgorLSoqIENvcHlyaWdodCAoQykgMjAxNiBUaGUgUXQgQ29tcGFueSBMdGQu CisrKiogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBRdCBDb21wYW55IEx0ZC4KKyAqKiBDb250YWN0 OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisgKioKKyAqKiBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgUXRTcWwgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0LgorQEAgLTM3Nyw2ICszNzcs MTAgQEAgYm9vbCBRU3FsUXVlcnk6OmV4ZWMoY29uc3QgUVN0cmluZyYgcXVlcnkpCisgICAgIFFF bGFwc2VkVGltZXIgdDsKKyAgICAgdC5zdGFydCgpOworICNlbmRpZgorKyAgICBpZiAoIWRyaXZl cigpKSB7CisrICAgICAgICBxV2FybmluZygiUVNxbFF1ZXJ5OjpleGVjOiBjYWxsZWQgYmVmb3Jl IGRyaXZlciBoYXMgYmVlbiBzZXQgdXAiKTsKKysgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAg fQorICAgICBpZiAoZC0+cmVmLmxvYWRSZWxheGVkKCkgIT0gMSkgeworICAgICAgICAgYm9vbCBm byA9IGlzRm9yd2FyZE9ubHkoKTsKKyAgICAgICAgICp0aGlzID0gUVNxbFF1ZXJ5KGRyaXZlcigp LT5jcmVhdGVSZXN1bHQoKSk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy90ZXN0bGliL3FhYnN0 cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFic3RyYWN0aXRl bW1vZGVsdGVzdGVyLmNwcAoraW5kZXggOGVmYjljNTNkNC4uY2UwNjJmNjZkNyAxMDA2NDQKKy0t LSBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIuY3BwCisrKysg Yi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcAorQEAgLTQ1 NCw3ICs0NTQsNyBAQCB2b2lkIFFBYnN0cmFjdEl0ZW1Nb2RlbFRlc3RlclByaXZhdGU6OnBhcmVu dCgpCisgCisgICAgIC8vIENvbW1vbiBlcnJvciB0ZXN0ICMyLCBtYWtlIHN1cmUgdGhhdCBhIHNl Y29uZCBsZXZlbCBpbmRleCBoYXMgYSBwYXJlbnQKKyAgICAgLy8gdGhhdCBpcyB0aGUgZmlyc3Qg bGV2ZWwgaW5kZXguCistICAgIGlmIChtb2RlbC0+cm93Q291bnQodG9wSW5kZXgpID4gMCkgewor KyAgICBpZiAobW9kZWwtPnJvd0NvdW50KHRvcEluZGV4KSA+IDAgJiYgbW9kZWwtPmNvbHVtbkNv dW50KHRvcEluZGV4KSA+IDApIHsKKyAgICAgICAgIFFNb2RlbEluZGV4IGNoaWxkSW5kZXggPSBt b2RlbC0+aW5kZXgoMCwgMCwgdG9wSW5kZXgpOworICAgICAgICAgTU9ERUxURVNURVJfVkVSSUZZ KGNoaWxkSW5kZXguaXNWYWxpZCgpKTsKKyAgICAgICAgIE1PREVMVEVTVEVSX0NPTVBBUkUobW9k ZWwtPnBhcmVudChjaGlsZEluZGV4KSwgdG9wSW5kZXgpOworZGlmZiAtLWdpdCBhL3F0YmFzZS9z cmMvdGVzdGxpYi9xYXNjaWlrZXkuY3BwIGIvcXRiYXNlL3NyYy90ZXN0bGliL3Fhc2NpaWtleS5j cHAKK2luZGV4IDlhMzA4ZGEyYmMuLjkzNDk4YjI1NmYgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3Jj L3Rlc3RsaWIvcWFzY2lpa2V5LmNwcAorKysrIGIvcXRiYXNlL3NyYy90ZXN0bGliL3Fhc2NpaWtl eS5jcHAKK0BAIC00OTgsNiArNDk4LDExIEBAIGNoYXIgUVRlc3Q6OmtleVRvQXNjaWkoUXQ6Oktl eSBrZXkpCisgICAgIGNhc2UgUXQ6OktleV9MYXVuY2hFIDogcmV0dXJuIDA7IC8vID0gMHgxMGIw LAorICAgICBjYXNlIFF0OjpLZXlfTGF1bmNoRiA6IHJldHVybiAwOyAvLyA9IDB4MTBiMSwKKyAK KysgICAgLy8gS2V5cGFkIG5hdmlnYXRpb24ga2V5cworKyAgICBjYXNlIFF0OjpLZXlfU2VsZWN0 IDogcmV0dXJuIDA7IC8vID0gMHgwMTAxMDAwMAorKyAgICBjYXNlIFF0OjpLZXlfWWVzIDogcmV0 dXJuIDA7IC8vID0gMHgwMTAxMDAwMQorKyAgICBjYXNlIFF0OjpLZXlfTm8gOiByZXR1cm4gMDsg Ly8gPSAweDAxMDEwMDAyCisrCisgICAgIGRlZmF1bHQ6IFFURVNUX0FTU0VSVChmYWxzZSk7IHJl dHVybiAwOworICAgICB9CisgfQorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvdGVzdGxpYi9xdGVz dHJlc3VsdC5jcHAgYi9xdGJhc2Uvc3JjL3Rlc3RsaWIvcXRlc3RyZXN1bHQuY3BwCitpbmRleCA4 ODAyOGFhYzZlLi4yZTg5OTMwNzc2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy90ZXN0bGliL3F0 ZXN0cmVzdWx0LmNwcAorKysrIGIvcXRiYXNlL3NyYy90ZXN0bGliL3F0ZXN0cmVzdWx0LmNwcAor QEAgLTI1MSw3ICsyNTEsOCBAQCBib29sIFFUZXN0UmVzdWx0Ojp2ZXJpZnkoYm9vbCBzdGF0ZW1l bnQsIGNvbnN0IGNoYXIgKnN0YXRlbWVudFN0ciwKKyB7CisgICAgIFFURVNUX0FTU0VSVChzdGF0 ZW1lbnRTdHIpOworIAorLSAgICBjaGFyIG1zZ1sxMDI0XSA9IHsnXDAnfTsKKysgICAgY2hhciBt c2dbMTAyNF07CisrICAgIG1zZ1swXSA9ICdcMCc7CisgCisgICAgIGlmIChRVGVzdExvZzo6dmVy Ym9zZUxldmVsKCkgPj0gMikgeworICAgICAgICAgcXNucHJpbnRmKG1zZywgMTAyNCwgIlFWRVJJ RlkoJXMpIiwgc3RhdGVtZW50U3RyKTsKK0BAIC0zMDksNyArMzEwLDggQEAgc3RhdGljIGJvb2wg Y29tcGFyZUhlbHBlcihib29sIHN1Y2Nlc3MsIGNvbnN0IGNoYXIgKmZhaWx1cmVNc2csCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBib29sIGhhc1ZhbHVlcyA9IHRydWUpCisgeworICAgICBj b25zdCBzaXplX3QgbWF4TXNnTGVuID0gMTAyNDsKKy0gICAgY2hhciBtc2dbbWF4TXNnTGVuXSA9 IHsnXDAnfTsKKysgICAgY2hhciBtc2dbbWF4TXNnTGVuXTsKKysgICAgbXNnWzBdID0gJ1wwJzsK KyAKKyAgICAgUVRFU1RfQVNTRVJUKGV4cGVjdGVkKTsKKyAgICAgUVRFU1RfQVNTRVJUKGFjdHVh bCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2RpYWxvZ3MvcWNvbG9yZGlhbG9n LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9kaWFsb2dzL3Fjb2xvcmRpYWxvZy5jcHAKK2luZGV4 IDQyNDc3MzEyNzUuLmNiMzI1YmU4NWMgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMv ZGlhbG9ncy9xY29sb3JkaWFsb2cuY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvZGlhbG9n cy9xY29sb3JkaWFsb2cuY3BwCitAQCAtNzgsNyArNzgsMTAgQEAKKyAjaW5jbHVkZSAicXdpbmRv dy5oIgorIAorICNpbmNsdWRlICJwcml2YXRlL3FkaWFsb2dfcC5oIgorKyNpbmNsdWRlICJwcml2 YXRlL3FndWlhcHBsaWNhdGlvbl9wLmgiCisgCisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm1zZXJ2 aWNlcy5oPgorKyNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtaW50ZWdyYXRpb24uaD4KKyAjaW5jbHVk ZSA8YWxnb3JpdGhtPgorIAorIFFUX0JFR0lOX05BTUVTUEFDRQorQEAgLTE2MTEsNiArMTYxNCwy MCBAQCB2b2lkIFFDb2xvckRpYWxvZ1ByaXZhdGU6Ol9xX25ld1N0YW5kYXJkKGludCByLCBpbnQg YykKKyB2b2lkIFFDb2xvckRpYWxvZ1ByaXZhdGU6Ol9xX3BpY2tTY3JlZW5Db2xvcigpCisgewor ICAgICBRX1EoUUNvbG9yRGlhbG9nKTsKKysKKysgICAgYXV0byAqcGxhdGZvcm1TZXJ2aWNlcyA9 IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+c2VydmljZXMo KTsKKysgICAgaWYgKHBsYXRmb3JtU2VydmljZXMtPmhhc0NhcGFiaWxpdHkoUVBsYXRmb3JtU2Vy dmljZXM6OkNhcGFiaWxpdHk6OkNvbG9yUGlja2luZykpIHsKKysgICAgICAgIGlmIChhdXRvICpj b2xvclBpY2tlciA9IHBsYXRmb3JtU2VydmljZXMtPmNvbG9yUGlja2VyKHEtPndpbmRvd0hhbmRs ZSgpKSkgeworKyAgICAgICAgICAgIHEtPmNvbm5lY3QoY29sb3JQaWNrZXIsICZRUGxhdGZvcm1T ZXJ2aWNlQ29sb3JQaWNrZXI6OmNvbG9yUGlja2VkLCBxLAorKyAgICAgICAgICAgICAgICAgICAg ICAgW3EsIGNvbG9yUGlja2VyXShjb25zdCBRQ29sb3IgJmNvbG9yKSB7CisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29sb3JQaWNrZXItPmRlbGV0ZUxhdGVyKCk7CisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgcS0+c2V0Q3VycmVudENvbG9yKGNvbG9yKTsKKysgICAgICAgICAgICAg ICAgICAgICAgIH0pOworKyAgICAgICAgICAgIGNvbG9yUGlja2VyLT5waWNrQ29sb3IoKTsKKysg ICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisrICAgIH0KKysKKyAgICAgaWYgKCFjb2xv clBpY2tpbmdFdmVudEZpbHRlcikKKyAgICAgICAgIGNvbG9yUGlja2luZ0V2ZW50RmlsdGVyID0g bmV3IFFDb2xvclBpY2tpbmdFdmVudEZpbHRlcih0aGlzLCBxKTsKKyAgICAgcS0+aW5zdGFsbEV2 ZW50RmlsdGVyKGNvbG9yUGlja2luZ0V2ZW50RmlsdGVyKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3dpZGdldHMvaXRlbXZpZXdzL3FhYnN0cmFjdGl0ZW1kZWxlZ2F0ZS5jcHAgYi9xdGJhc2Uv c3JjL3dpZGdldHMvaXRlbXZpZXdzL3FhYnN0cmFjdGl0ZW1kZWxlZ2F0ZS5jcHAKK2luZGV4IGUx MjA4MTdlZGMuLjhlYTM2YjU0MjcgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMvaXRl bXZpZXdzL3FhYnN0cmFjdGl0ZW1kZWxlZ2F0ZS5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0 cy9pdGVtdmlld3MvcWFic3RyYWN0aXRlbWRlbGVnYXRlLmNwcAorQEAgLTQwMCwxMiArNDAwLDcg QEAgYm9vbCBRQWJzdHJhY3RJdGVtRGVsZWdhdGU6OmhlbHBFdmVudChRSGVscEV2ZW50ICpldmVu dCwKKyAgICAgICAgIGNvbnN0IFFTdHJpbmcgdG9vbHRpcCA9IGluZGV4LmlzVmFsaWQoKSA/Cisg ICAgICAgICAgICAgICBkLT50ZXh0Rm9yUm9sZShRdDo6VG9vbFRpcFJvbGUsIGluZGV4LmRhdGEo UXQ6OlRvb2xUaXBSb2xlKSwgb3B0aW9uLmxvY2FsZSwgcHJlY2lzaW9uKSA6CisgICAgICAgICAg ICAgICBRU3RyaW5nKCk7CistICAgICAgICBRUmVjdCByZWN0OworLSAgICAgICAgaWYgKGluZGV4 LmlzVmFsaWQoKSkgeworLSAgICAgICAgICAgIGNvbnN0IFFSZWN0IHIgPSB2aWV3LT52aXN1YWxS ZWN0KGluZGV4KTsKKy0gICAgICAgICAgICByZWN0ID0gUVJlY3Qodmlldy0+bWFwVG9HbG9iYWwo ci50b3BMZWZ0KCkpLCByLnNpemUoKSk7CistICAgICAgICB9CistICAgICAgICBRVG9vbFRpcDo6 c2hvd1RleHQoaGUtPmdsb2JhbFBvcygpLCB0b29sdGlwLCB2aWV3LCByZWN0KTsKKysgICAgICAg IFFUb29sVGlwOjpzaG93VGV4dChoZS0+Z2xvYmFsUG9zKCksIHRvb2x0aXAsIHZpZXctPnZpZXdw b3J0KCksIG9wdGlvbi5yZWN0KTsKKyAgICAgICAgIGV2ZW50LT5zZXRBY2NlcHRlZCghdG9vbHRp cC5pc0VtcHR5KCkpOworICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CitkaWZmIC0tZ2l0IGEv cXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xbGlzdHZpZXcuY3BwIGIvcXRiYXNlL3NyYy93 aWRnZXRzL2l0ZW12aWV3cy9xbGlzdHZpZXcuY3BwCitpbmRleCAyYjM0NDc2NjQyLi5lZWJmYWEw MzBlIDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12aWV3cy9xbGlzdHZpZXcu Y3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3FsaXN0dmlldy5jcHAKK0BA IC0zMzg2LDYgKzMzODYsNyBAQCB2b2lkIFFJY29uTW9kZVZpZXdCYXNlOjp1cGRhdGVDb250ZW50 c1NpemUoKQorICovCisgdm9pZCBRTGlzdFZpZXc6OmN1cnJlbnRDaGFuZ2VkKGNvbnN0IFFNb2Rl bEluZGV4ICZjdXJyZW50LCBjb25zdCBRTW9kZWxJbmRleCAmcHJldmlvdXMpCisgeworKyAgICBR QWJzdHJhY3RJdGVtVmlldzo6Y3VycmVudENoYW5nZWQoY3VycmVudCwgcHJldmlvdXMpOworICNp Zm5kZWYgUVRfTk9fQUNDRVNTSUJJTElUWQorICAgICBpZiAoUUFjY2Vzc2libGU6OmlzQWN0aXZl KCkpIHsKKyAgICAgICAgIGlmIChjdXJyZW50LmlzVmFsaWQoKSkgeworQEAgLTMzOTYsNyArMzM5 Nyw2IEBAIHZvaWQgUUxpc3RWaWV3OjpjdXJyZW50Q2hhbmdlZChjb25zdCBRTW9kZWxJbmRleCAm Y3VycmVudCwgY29uc3QgUU1vZGVsSW5kZXggJnByCisgICAgICAgICB9CisgICAgIH0KKyAjZW5k aWYKKy0gICAgUUFic3RyYWN0SXRlbVZpZXc6OmN1cnJlbnRDaGFuZ2VkKGN1cnJlbnQsIHByZXZp b3VzKTsKKyB9CisgCisgLyohCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2l0ZW12 aWV3cy9xdGFibGV2aWV3LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9pdGVtdmlld3MvcXRhYmxl dmlldy5jcHAKK2luZGV4IDkzNGFjNTgxYjIuLmY3OWJiMjQyNDkgMTAwNjQ0CistLS0gYS9xdGJh c2Uvc3JjL3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcuY3BwCisrKysgYi9xdGJhc2Uvc3Jj L3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcuY3BwCitAQCAtMTAxMyw2ICsxMDEzLDcgQEAg dm9pZCBRVGFibGVWaWV3UHJpdmF0ZTo6ZHJhd0NlbGwoUVBhaW50ZXIgKnBhaW50ZXIsIGNvbnN0 IFFTdHlsZU9wdGlvblZpZXdJdGVtICYKKyBpbnQgUVRhYmxlVmlld1ByaXZhdGU6OndpZHRoSGlu dEZvckluZGV4KGNvbnN0IFFNb2RlbEluZGV4ICZpbmRleCwgaW50IGhpbnQsIGNvbnN0IFFTdHls ZU9wdGlvblZpZXdJdGVtICZvcHRpb24pIGNvbnN0CisgeworICAgICBRX1EoY29uc3QgUVRhYmxl Vmlldyk7CisrICAgIGNvbnN0IGludCBvbGRIaW50ID0gaGludDsKKyAgICAgUVdpZGdldCAqZWRp dG9yID0gZWRpdG9yRm9ySW5kZXgoaW5kZXgpLndpZGdldC5kYXRhKCk7CisgICAgIGlmIChlZGl0 b3IgJiYgcGVyc2lzdGVudC5jb250YWlucyhlZGl0b3IpKSB7CisgICAgICAgICBoaW50ID0gcU1h eChoaW50LCBlZGl0b3ItPnNpemVIaW50KCkud2lkdGgoKSk7CitAQCAtMTAyMSw2ICsxMDIyLDE3 IEBAIGludCBRVGFibGVWaWV3UHJpdmF0ZTo6d2lkdGhIaW50Rm9ySW5kZXgoY29uc3QgUU1vZGVs SW5kZXggJmluZGV4LCBpbnQgaGludCwgY29uCisgICAgICAgICBoaW50ID0gcUJvdW5kKG1pbiwg aGludCwgbWF4KTsKKyAgICAgfQorICAgICBoaW50ID0gcU1heChoaW50LCBxLT5pdGVtRGVsZWdh dGUoaW5kZXgpLT5zaXplSGludChvcHRpb24sIGluZGV4KS53aWR0aCgpKTsKKysKKysgICAgaWYg KGhhc1NwYW5zKCkpIHsKKysgICAgICAgIGF1dG8gc3BhbiA9IHNwYW5zLnNwYW5BdChpbmRleC5j b2x1bW4oKSwgaW5kZXgucm93KCkpOworKyAgICAgICAgaWYgKHNwYW4gJiYgc3Bhbi0+bV9sZWZ0 ID09IGluZGV4LmNvbHVtbigpICYmIHNwYW4tPm1fdG9wID09IGluZGV4LnJvdygpKSB7CisrICAg ICAgICAgICAgLy8gc3BhbnMgYXJlIHNjcmV3ZWQgdXAgd2hlbiBzZWN0aW9ucyBhcmUgbW92ZWQK KysgICAgICAgICAgICBjb25zdCBhdXRvIGxlZnQgPSBsb2dpY2FsQ29sdW1uKHNwYW4tPm1fbGVm dCk7CisrICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gc3Bhbi0+d2lkdGgoKTsgKytp KQorKyAgICAgICAgICAgICAgIGhpbnQgLT0gcS0+Y29sdW1uV2lkdGgodmlzdWFsQ29sdW1uKGxl ZnQgKyBpKSk7CisrICAgICAgICB9CisrICAgICAgICBoaW50ID0gc3RkOjptYXgoaGludCwgb2xk SGludCk7CisrICAgIH0KKyAgICAgcmV0dXJuIGhpbnQ7CisgfQorIAorQEAgLTEwNTMsNiArMTA2 NSwxMSBAQCBpbnQgUVRhYmxlVmlld1ByaXZhdGU6OmhlaWdodEhpbnRGb3JJbmRleChjb25zdCBR TW9kZWxJbmRleCAmaW5kZXgsIGludCBoaW50LCBRUworICAgICAgICAgb3B0aW9uLnJlY3Quc2V0 SGVpZ2h0KGhlaWdodCk7CisgICAgICAgICBvcHRpb24ucmVjdC5zZXRYKHEtPmNvbHVtblZpZXdw b3J0UG9zaXRpb24oaW5kZXguY29sdW1uKCkpKTsKKyAgICAgICAgIG9wdGlvbi5yZWN0LnNldFdp ZHRoKHEtPmNvbHVtbldpZHRoKGluZGV4LmNvbHVtbigpKSk7CisrICAgICAgICBpZiAoaGFzU3Bh bnMoKSkgeworKyAgICAgICAgICAgIGF1dG8gc3BhbiA9IHNwYW5zLnNwYW5BdChpbmRleC5jb2x1 bW4oKSwgaW5kZXgucm93KCkpOworKyAgICAgICAgICAgIGlmIChzcGFuICYmIHNwYW4tPm1fbGVm dCA9PSBpbmRleC5jb2x1bW4oKSAmJiBzcGFuLT5tX3RvcCA9PSBpbmRleC5yb3coKSkKKysgICAg ICAgICAgICAgICAgb3B0aW9uLnJlY3Quc2V0V2lkdGgoc3RkOjptYXgob3B0aW9uLnJlY3Qud2lk dGgoKSwgdmlzdWFsU3BhblJlY3QoKnNwYW4pLndpZHRoKCkpKTsKKysgICAgICAgIH0KKyAgICAg ICAgIC8vIDFweCBsZXNzIHNwYWNlIHdoZW4gZ3JpZCBpcyBzaG93biAoc2VlIGRyYXdDZWxsKQor ICAgICAgICAgaWYgKHNob3dHcmlkKQorICAgICAgICAgICAgIG9wdGlvbi5yZWN0LnNldFdpZHRo KG9wdGlvbi5yZWN0LndpZHRoKCkgLSAxKTsKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdl dHMva2VybmVsL3FhY3Rpb24uaCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcWFjdGlvbi5o CitpbmRleCAyNThhMWVhMGEwLi43MzdjMWU4Mjg1IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93 aWRnZXRzL2tlcm5lbC9xYWN0aW9uLmgKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwv cWFjdGlvbi5oCitAQCAtODEsNyArODEsNyBAQCBjbGFzcyBRX1dJREdFVFNfRVhQT1JUIFFBY3Rp b24gOiBwdWJsaWMgUU9iamVjdAorICAgICBRX1BST1BFUlRZKE1lbnVSb2xlIG1lbnVSb2xlIFJF QUQgbWVudVJvbGUgV1JJVEUgc2V0TWVudVJvbGUgTk9USUZZIGNoYW5nZWQpCisgICAgIFFfUFJP UEVSVFkoYm9vbCBpY29uVmlzaWJsZUluTWVudSBSRUFEIGlzSWNvblZpc2libGVJbk1lbnUgV1JJ VEUgc2V0SWNvblZpc2libGVJbk1lbnUgTk9USUZZIGNoYW5nZWQpCisgICAgIFFfUFJPUEVSVFko Ym9vbCBzaG9ydGN1dFZpc2libGVJbkNvbnRleHRNZW51IFJFQUQgaXNTaG9ydGN1dFZpc2libGVJ bkNvbnRleHRNZW51IFdSSVRFIHNldFNob3J0Y3V0VmlzaWJsZUluQ29udGV4dE1lbnUgTk9USUZZ IGNoYW5nZWQpCistICAgIFFfUFJPUEVSVFkoUHJpb3JpdHkgcHJpb3JpdHkgUkVBRCBwcmlvcml0 eSBXUklURSBzZXRQcmlvcml0eSkKKysgICAgUV9QUk9QRVJUWShQcmlvcml0eSBwcmlvcml0eSBS RUFEIHByaW9yaXR5IFdSSVRFIHNldFByaW9yaXR5IE5PVElGWSBjaGFuZ2VkKQorIAorIHB1Ymxp YzoKKyAgICAgLy8gbm90ZSB0aGlzIGlzIGNvcGllZCBpbnRvIHFwbGF0Zm9ybW1lbnUuaCwgd2hp Y2ggbXVzdCBzdGF5IGluIHN5bmMKK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMva2Vy bmVsL3F3aWRnZXQuY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9xd2lkZ2V0LmNwcAor aW5kZXggOWViYTFlMDAxZS4uMjZmNmQyN2UxOCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lk Z2V0cy9rZXJuZWwvcXdpZGdldC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwv cXdpZGdldC5jcHAKK0BAIC01Mjk2LDcgKzUyOTYsNyBAQCB2b2lkIFFXaWRnZXRQcml2YXRlOjpk cmF3V2lkZ2V0KFFQYWludERldmljZSAqcGRldiwgY29uc3QgUVJlZ2lvbiAmcmduLCBjb25zdCBR UAorICAgICAgICAgUVdpZGdldEVmZmVjdFNvdXJjZVByaXZhdGUgKnNvdXJjZWQgPSBzdGF0aWNf Y2FzdDxRV2lkZ2V0RWZmZWN0U291cmNlUHJpdmF0ZSAqPgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzb3VyY2UtPmRfZnVuYygpKTsK KyAgICAgICAgIGlmICghc291cmNlZC0+Y29udGV4dCkgeworLSAgICAgICAgICAgIGNvbnN0IFFS ZWdpb24gZWZmZWN0UmduKHJnbi5ib3VuZGluZ1JlY3QoKSk7CisrICAgICAgICAgICAgY29uc3Qg UVJlZ2lvbiBlZmZlY3RSZ24oKGZsYWdzICYgVXNlRWZmZWN0UmVnaW9uQm91bmRzKSA/IHJnbi5i b3VuZGluZ1JlY3QoKSA6IHJnbik7CisgICAgICAgICAgICAgUVdpZGdldFBhaW50Q29udGV4dCBj b250ZXh0KHBkZXYsIGVmZmVjdFJnbiwgb2Zmc2V0LCBmbGFncywgc2hhcmVkUGFpbnRlciwgcmVw YWludE1hbmFnZXIpOworICAgICAgICAgICAgIHNvdXJjZWQtPmNvbnRleHQgPSAmY29udGV4dDsK KyAgICAgICAgICAgICBpZiAoIXNoYXJlZFBhaW50ZXIpIHsKK0BAIC01MzI4LDYgKzUzMjgsNyBA QCB2b2lkIFFXaWRnZXRQcml2YXRlOjpkcmF3V2lkZ2V0KFFQYWludERldmljZSAqcGRldiwgY29u c3QgUVJlZ2lvbiAmcmduLCBjb25zdCBRUAorICAgICAgICAgfQorICAgICB9CisgI2VuZGlmIC8v IFFUX0NPTkZJRyhncmFwaGljc2VmZmVjdCkKKysgICAgZmxhZ3MgPSBmbGFncyAmIH5Vc2VFZmZl Y3RSZWdpb25Cb3VuZHM7CisgCisgICAgIGNvbnN0IGJvb2wgYWxzb09uU2NyZWVuID0gZmxhZ3Mg JiBEcmF3UGFpbnRPblNjcmVlbjsKKyAgICAgY29uc3QgYm9vbCByZWN1cnNpdmUgPSBmbGFncyAm IERyYXdSZWN1cnNpdmU7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL2tlcm5lbC9x d2lkZ2V0X3AuaCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwvcXdpZGdldF9wLmgKK2luZGV4 IGVlZjZiOGZhMmMuLmM0MzJmNGI1ZDUgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMv a2VybmVsL3F3aWRnZXRfcC5oCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3aWRn ZXRfcC5oCitAQCAtMjI5LDcgKzIyOSw4IEBAIHB1YmxpYzoKKyAgICAgICAgIERvbnRTdWJ0cmFj dE9wYXF1ZUNoaWxkcmVuID0gMHgxMCwKKyAgICAgICAgIERvbnREcmF3T3BhcXVlQ2hpbGRyZW4g PSAweDIwLAorICAgICAgICAgRG9udERyYXdOYXRpdmVDaGlsZHJlbiA9IDB4NDAsCistICAgICAg ICBEb250U2V0Q29tcG9zaXRpb25Nb2RlID0gMHg4MAorKyAgICAgICAgRG9udFNldENvbXBvc2l0 aW9uTW9kZSA9IDB4ODAsCisrICAgICAgICBVc2VFZmZlY3RSZWdpb25Cb3VuZHMgPSAweDEwMAor ICAgICB9OworICAgICBRX0RFQ0xBUkVfRkxBR1MoRHJhd1dpZGdldEZsYWdzLCBEcmF3V2lkZ2V0 RmxhZykKKyAgICAgUV9GTEFHKERyYXdXaWRnZXRGbGFncykKK2RpZmYgLS1naXQgYS9xdGJhc2Uv c3JjL3dpZGdldHMva2VybmVsL3F3aWRnZXRyZXBhaW50bWFuYWdlci5jcHAgYi9xdGJhc2Uvc3Jj L3dpZGdldHMva2VybmVsL3F3aWRnZXRyZXBhaW50bWFuYWdlci5jcHAKK2luZGV4IDAyODgwYjM0 ZGEuLjBkNDRlMTMyNmQgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMva2VybmVsL3F3 aWRnZXRyZXBhaW50bWFuYWdlci5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9rZXJuZWwv cXdpZGdldHJlcGFpbnRtYW5hZ2VyLmNwcAorQEAgLTEwMTgsNyArMTAxOCw4IEBAIHZvaWQgUVdp ZGdldFJlcGFpbnRNYW5hZ2VyOjpwYWludEFuZEZsdXNoKCkKKyAKKyAgICAgLy8gUGFpbnQgdGhl IHJlc3Qgd2l0aCBjb21wb3NpdGlvbi4KKyAgICAgaWYgKHJlcGFpbnRBbGxXaWRnZXRzIHx8ICFk aXJ0eUNvcHkuaXNFbXB0eSgpKSB7CistICAgICAgICBRV2lkZ2V0UHJpdmF0ZTo6RHJhd1dpZGdl dEZsYWdzIGZsYWdzID0gUVdpZGdldFByaXZhdGU6OkRyYXdBc1Jvb3QgfCBRV2lkZ2V0UHJpdmF0 ZTo6RHJhd1JlY3Vyc2l2ZTsKKysgICAgICAgIFFXaWRnZXRQcml2YXRlOjpEcmF3V2lkZ2V0Rmxh Z3MgZmxhZ3MgPSBRV2lkZ2V0UHJpdmF0ZTo6RHJhd0FzUm9vdCB8IFFXaWRnZXRQcml2YXRlOjpE cmF3UmVjdXJzaXZlCisrICAgICAgICAgICAgICAgIHwgUVdpZGdldFByaXZhdGU6OlVzZUVmZmVj dFJlZ2lvbkJvdW5kczsKKyAgICAgICAgIHRsdy0+ZF9mdW5jKCktPmRyYXdXaWRnZXQoc3RvcmUt PnBhaW50RGV2aWNlKCksIGRpcnR5Q29weSwgUVBvaW50KCksIGZsYWdzLCBudWxscHRyLCB0aGlz KTsKKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy9zdHlsZXMvcWZ1 c2lvbnN0eWxlLmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy9zdHlsZXMvcWZ1c2lvbnN0eWxlLmNw cAoraW5kZXggZjQzNDVkOTdjNC4uOTYyOTEyYzgzOCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMv d2lkZ2V0cy9zdHlsZXMvcWZ1c2lvbnN0eWxlLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRnZXRz L3N0eWxlcy9xZnVzaW9uc3R5bGUuY3BwCitAQCAtMTc3MiwxNCArMTc3Miw2IEBAIHZvaWQgUUZ1 c2lvblN0eWxlOjpkcmF3Q29udHJvbChDb250cm9sRWxlbWVudCBlbGVtZW50LCBjb25zdCBRU3R5 bGVPcHRpb24gKm9wdGlvCisgICAgICAgICAgICAgcHJveHkoKS0+ZHJhd0NvbnRyb2woQ0VfUHVz aEJ1dHRvbkxhYmVsLCAmc3Vib3B0LCBwYWludGVyLCB3aWRnZXQpOworICAgICAgICAgfQorICAg ICAgICAgYnJlYWs7CistICAgIGNhc2UgQ0VfUHVzaEJ1dHRvbkxhYmVsOgorLSAgICAgICAgaWYg KGNvbnN0IFFTdHlsZU9wdGlvbkJ1dHRvbiAqYnV0dG9uID0gcXN0eWxlb3B0aW9uX2Nhc3Q8Y29u c3QgUVN0eWxlT3B0aW9uQnV0dG9uICo+KG9wdGlvbikpIHsKKy0gICAgICAgICAgICBRU3R5bGVP cHRpb25CdXR0b24gYigqYnV0dG9uKTsKKy0gICAgICAgICAgICAvLyBubyBQTV9CdXR0b25TaGlm dEhvcml6b250YWwgYW5kIFBNX0J1dHRvblNoaWZ0VmVydGljYWwgZm9yIGZ1c2lvbiBzdHlsZQor LSAgICAgICAgICAgIGIuc3RhdGUgJj0gfihTdGF0ZV9PbiB8IFN0YXRlX1N1bmtlbik7CistICAg ICAgICAgICAgUUNvbW1vblN0eWxlOjpkcmF3Q29udHJvbChlbGVtZW50LCAmYiwgcGFpbnRlciwg d2lkZ2V0KTsKKy0gICAgICAgIH0KKy0gICAgICAgIGJyZWFrOworICAgICBjYXNlIENFX01lbnVC YXJFbXB0eUFyZWE6CisgICAgICAgICBwYWludGVyLT5zYXZlKCk7CisgICAgIHsKK2RpZmYgLS1n aXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvdXRpbC9xY29tcGxldGVyLmNwcCBiL3F0YmFzZS9zcmMv d2lkZ2V0cy91dGlsL3Fjb21wbGV0ZXIuY3BwCitpbmRleCAxOGIyNDA2M2Q4Li5lZjcyMDdhOGEz IDEwMDY0NAorLS0tIGEvcXRiYXNlL3NyYy93aWRnZXRzL3V0aWwvcWNvbXBsZXRlci5jcHAKKysr KyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy91dGlsL3Fjb21wbGV0ZXIuY3BwCitAQCAtMTEyMCw2ICsx MTIwLDggQEAgdm9pZCBRQ29tcGxldGVyOjpzZXRNb2RlbChRQWJzdHJhY3RJdGVtTW9kZWwgKm1v ZGVsKQorIHsKKyAgICAgUV9EKFFDb21wbGV0ZXIpOworICAgICBRQWJzdHJhY3RJdGVtTW9kZWwg Km9sZE1vZGVsID0gZC0+cHJveHktPnNvdXJjZU1vZGVsKCk7CisrICAgIGlmIChvbGRNb2RlbCA9 PSBtb2RlbCkKKysgICAgICAgIHJldHVybjsKKyAjaWYgUVRfQ09ORklHKGZpbGVzeXN0ZW1tb2Rl bCkKKyAgICAgaWYgKHFvYmplY3RfY2FzdDxjb25zdCBRRmlsZVN5c3RlbU1vZGVsICo+KG9sZE1v ZGVsKSkKKyAgICAgICAgIHNldENvbXBsZXRpb25Sb2xlKFF0OjpFZGl0Um9sZSk7IC8vIFFUQlVH LTU0NjQyLCBjbGVhciBGaWxlTmFtZVJvbGUgc2V0IGJ5IFFGaWxlU3lzdGVtTW9kZWwKK2RpZmYg LS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3RidXR0b24uY3BwIGIv cXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWFic3RyYWN0YnV0dG9uLmNwcAoraW5kZXggYTEy OGIyMzk1MC4uZGM0MGJmNjJmYiAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRn ZXRzL3FhYnN0cmFjdGJ1dHRvbi5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRz L3FhYnN0cmFjdGJ1dHRvbi5jcHAKK0BAIC01Niw2ICs1Niw3IEBACisgI2lmbmRlZiBRVF9OT19B Q0NFU1NJQklMSVRZCisgI2luY2x1ZGUgInFhY2Nlc3NpYmxlLmgiCisgI2VuZGlmCisrI2luY2x1 ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorIAorICNpbmNsdWRlIDxhbGdvcml0aG0+CisgCitA QCAtMTA3NiwxOSArMTA3NywxOSBAQCB2b2lkIFFBYnN0cmFjdEJ1dHRvbjo6a2V5UHJlc3NFdmVu dChRS2V5RXZlbnQgKmUpCisgeworICAgICBRX0QoUUFic3RyYWN0QnV0dG9uKTsKKyAgICAgYm9v bCBuZXh0ID0gdHJ1ZTsKKy0gICAgc3dpdGNoIChlLT5rZXkoKSkgeworLSAgICBjYXNlIFF0OjpL ZXlfRW50ZXI6CistICAgIGNhc2UgUXQ6OktleV9SZXR1cm46CistICAgICAgICBlLT5pZ25vcmUo KTsKKy0gICAgICAgIGJyZWFrOworLSAgICBjYXNlIFF0OjpLZXlfU2VsZWN0OgorLSAgICBjYXNl IFF0OjpLZXlfU3BhY2U6CistICAgICAgICBpZiAoIWUtPmlzQXV0b1JlcGVhdCgpKSB7CistICAg ICAgICAgICAgc2V0RG93bih0cnVlKTsKKy0gICAgICAgICAgICByZXBhaW50KCk7CistICAgICAg ICAgICAgZC0+ZW1pdFByZXNzZWQoKTsKKy0gICAgICAgIH0KKy0gICAgICAgIGJyZWFrOworKwor KyAgICBjb25zdCBhdXRvIGtleSA9IHN0YXRpY19jYXN0PFF0OjpLZXk+KGUtPmtleSgpKTsKKysg ICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpw bGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7 CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoa2V5KSAmJiAhZS0+aXNBdXRvUmVw ZWF0KCkpIHsKKysgICAgICAgIHNldERvd24odHJ1ZSk7CisrICAgICAgICByZXBhaW50KCk7Cisr ICAgICAgICBkLT5lbWl0UHJlc3NlZCgpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisr ICAgIHN3aXRjaCAoa2V5KSB7CisgICAgIGNhc2UgUXQ6OktleV9VcDoKKyAgICAgICAgIG5leHQg PSBmYWxzZTsKKyAgICAgICAgIFFfRkFMTFRIUk9VR0goKTsKK0BAIC0xMTUzLDE1ICsxMTU0LDE1 IEBAIHZvaWQgUUFic3RyYWN0QnV0dG9uOjprZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50ICplKQor ICAgICBpZiAoIWUtPmlzQXV0b1JlcGVhdCgpKQorICAgICAgICAgZC0+cmVwZWF0VGltZXIuc3Rv cCgpOworIAorLSAgICBzd2l0Y2ggKGUtPmtleSgpKSB7CistICAgIGNhc2UgUXQ6OktleV9TZWxl Y3Q6CistICAgIGNhc2UgUXQ6OktleV9TcGFjZToKKy0gICAgICAgIGlmICghZS0+aXNBdXRvUmVw ZWF0KCkgJiYgZC0+ZG93bikKKy0gICAgICAgICAgICBkLT5jbGljaygpOworLSAgICAgICAgYnJl YWs7CistICAgIGRlZmF1bHQ6CistICAgICAgICBlLT5pZ25vcmUoKTsKKysgICAgY29uc3QgYXV0 byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1l KCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50 KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlmIChi dXR0b25QcmVzc0tleXMuY29udGFpbnMoc3RhdGljX2Nhc3Q8UXQ6OktleT4oZS0+a2V5KCkpKSAm JiAhZS0+aXNBdXRvUmVwZWF0KCkgJiYgZC0+ZG93bikgeworKyAgICAgICAgZC0+Y2xpY2soKTsK KysgICAgICAgIHJldHVybjsKKyAgICAgfQorKworKyAgICBlLT5pZ25vcmUoKTsKKyB9CisgCisg LyohXHJlaW1wCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWNvbWJv Ym94LmNwcCBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC5jcHAKK2luZGV4 IDdhNDk2YzI3ZTAuLjBhM2Q5NjY0N2IgMTAwNjQ0CistLS0gYS9xdGJhc2Uvc3JjL3dpZGdldHMv d2lkZ2V0cy9xY29tYm9ib3guY3BwCisrKysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9x Y29tYm9ib3guY3BwCitAQCAtMzM1Miw3ICszMzUyLDIzIEBAIHZvaWQgUUNvbWJvQm94OjprZXlQ cmVzc0V2ZW50KFFLZXlFdmVudCAqZSkKKyAKKyAgICAgTW92ZSBtb3ZlID0gTm9Nb3ZlOworICAg ICBpbnQgbmV3SW5kZXggPSBjdXJyZW50SW5kZXgoKTsKKy0gICAgc3dpdGNoIChlLT5rZXkoKSkg eworKworKyAgICBib29sIHByZXNzTGlrZUJ1dHRvbiA9ICFkLT5saW5lRWRpdDsKKysjaWZkZWYg UVRfS0VZUEFEX05BVklHQVRJT04KKysgICAgcHJlc3NMaWtlQnV0dG9uIHw9IFFBcHBsaWNhdGlv blByaXZhdGU6OmtleXBhZE5hdmlnYXRpb25FbmFibGVkKCkgJiYgIWhhc0VkaXRGb2N1cygpOwor KyNlbmRpZgorKyAgICBhdXRvIGtleSA9IHN0YXRpY19jYXN0PFF0OjpLZXk+KGUtPmtleSgpKTsK KysgICAgaWYgKHByZXNzTGlrZUJ1dHRvbikgeworKyAgICAgICAgY29uc3QgYXV0byBidXR0b25Q cmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxh dGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgICAgIGlm IChidXR0b25QcmVzc0tleXMuY29udGFpbnMoa2V5KSkgeworKyAgICAgICAgICAgIHNob3dQb3B1 cCgpOworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICBz d2l0Y2ggKGtleSkgeworICAgICBjYXNlIFF0OjpLZXlfVXA6CisgICAgICAgICBpZiAoZS0+bW9k aWZpZXJzKCkgJiBRdDo6Q29udHJvbE1vZGlmaWVyKQorICAgICAgICAgICAgIGJyZWFrOyAvLyBw YXNzIHRvIGxpbmUgZWRpdCBmb3IgYXV0byBjb21wbGV0aW9uCitAQCAtMzM5NCwyNiArMzQxMCwx MSBAQCB2b2lkIFFDb21ib0JveDo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQgKmUpCisgICAgICAg ICAgICAgcmV0dXJuOworICAgICAgICAgfQorICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgUXQ6 OktleV9TcGFjZToKKy0gICAgICAgIGlmICghZC0+bGluZUVkaXQpIHsKKy0gICAgICAgICAgICBz aG93UG9wdXAoKTsKKy0gICAgICAgICAgICByZXR1cm47CistICAgICAgICB9CistICAgICAgICBi cmVhazsKKy0gICAgY2FzZSBRdDo6S2V5X0VudGVyOgorLSAgICBjYXNlIFF0OjpLZXlfUmV0dXJu OgorICAgICBjYXNlIFF0OjpLZXlfRXNjYXBlOgorICAgICAgICAgaWYgKCFkLT5saW5lRWRpdCkK KyAgICAgICAgICAgICBlLT5pZ25vcmUoKTsKKyAgICAgICAgIGJyZWFrOworICNpZmRlZiBRVF9L RVlQQURfTkFWSUdBVElPTgorLSAgICBjYXNlIFF0OjpLZXlfU2VsZWN0OgorLSAgICAgICAgaWYg KFFBcHBsaWNhdGlvblByaXZhdGU6OmtleXBhZE5hdmlnYXRpb25FbmFibGVkKCkKKy0gICAgICAg ICAgICAgICAgJiYgKCFoYXNFZGl0Rm9jdXMoKSB8fCAhZC0+bGluZUVkaXQpKSB7CistICAgICAg ICAgICAgc2hvd1BvcHVwKCk7CistICAgICAgICAgICAgcmV0dXJuOworLSAgICAgICAgfQorLSAg ICAgICAgYnJlYWs7CisgICAgIGNhc2UgUXQ6OktleV9MZWZ0OgorICAgICBjYXNlIFF0OjpLZXlf UmlnaHQ6CisgICAgICAgICBpZiAoUUFwcGxpY2F0aW9uUHJpdmF0ZTo6a2V5cGFkTmF2aWdhdGlv bkVuYWJsZWQoKSAmJiAhaGFzRWRpdEZvY3VzKCkpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3NyYy93 aWRnZXRzL3dpZGdldHMvcWRhdGV0aW1lZWRpdF9wLmggYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lk Z2V0cy9xZGF0ZXRpbWVlZGl0X3AuaAoraW5kZXggZDM2YjZmOGY5YS4uZTBkZjViNTE1OCAxMDA2 NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3FkYXRldGltZWVkaXRfcC5oCisr KysgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZGF0ZXRpbWVlZGl0X3AuaAorQEAgLTEs NiArMSw2IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKgorLSoqIENvcHlyaWdodCAoQykg MjAxOCBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBD b21wYW55IEx0ZC4KKyAqKiBDb250YWN0OiBodHRwczovL3d3dy5xdC5pby9saWNlbnNpbmcvCisg KioKKyAqKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgUXRXaWRnZXRzIG1vZHVsZSBvZiB0aGUg UXQgVG9vbGtpdC4KK2RpZmYgLS1naXQgYS9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xZ3Jv dXBib3guY3BwIGIvcXRiYXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94LmNwcAoraW5k ZXggMDJhMGJlZDMyNS4uM2YzZWNjYzM3MCAxMDA2NDQKKy0tLSBhL3F0YmFzZS9zcmMvd2lkZ2V0 cy93aWRnZXRzL3Fncm91cGJveC5jcHAKKysrKyBiL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRz L3Fncm91cGJveC5jcHAKK0BAIC01NCw2ICs1NCw4IEBACisgI2luY2x1ZGUgInFhY2Nlc3NpYmxl LmgiCisgI2VuZGlmCisgI2luY2x1ZGUgPHByaXZhdGUvcXdpZGdldF9wLmg+CisrI2luY2x1ZGUg PHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRo ZW1lLmg+CisgCisgI2luY2x1ZGUgInFkZWJ1Zy5oIgorIAorQEAgLTM2MCw3ICszNjIsMTAgQEAg Ym9vbCBRR3JvdXBCb3g6OmV2ZW50KFFFdmVudCAqZSkKKyAgICAgICAgIHJldHVybiB0cnVlOwor ICAgICBjYXNlIFFFdmVudDo6S2V5UHJlc3M6IHsKKyAgICAgICAgIFFLZXlFdmVudCAqayA9IHN0 YXRpY19jYXN0PFFLZXlFdmVudCo+KGUpOworLSAgICAgICAgaWYgKCFrLT5pc0F1dG9SZXBlYXQo KSAmJiAoay0+a2V5KCkgPT0gUXQ6OktleV9TZWxlY3QgfHwgay0+a2V5KCkgPT0gUXQ6OktleV9T cGFjZSkpIHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxp Y2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblBy ZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu dmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoIWstPmlzQXV0b1JlcGVhdCgp ICYmIGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhzdGF0aWNfY2FzdDxRdDo6S2V5PihrLT5rZXko KSkpKSB7CisgICAgICAgICAgICAgZC0+cHJlc3NlZENvbnRyb2wgPSBRU3R5bGU6OlNDX0dyb3Vw Qm94Q2hlY2tCb3g7CisgICAgICAgICAgICAgdXBkYXRlKHN0eWxlKCktPnN1YkNvbnRyb2xSZWN0 KFFTdHlsZTo6Q0NfR3JvdXBCb3gsICZib3gsIFFTdHlsZTo6U0NfR3JvdXBCb3hDaGVja0JveCwg dGhpcykpOworICAgICAgICAgICAgIHJldHVybiB0cnVlOworQEAgLTM2OSw3ICszNzQsMTAgQEAg Ym9vbCBRR3JvdXBCb3g6OmV2ZW50KFFFdmVudCAqZSkKKyAgICAgfQorICAgICBjYXNlIFFFdmVu dDo6S2V5UmVsZWFzZTogeworICAgICAgICAgUUtleUV2ZW50ICprID0gc3RhdGljX2Nhc3Q8UUtl eUV2ZW50Kj4oZSk7CistICAgICAgICBpZiAoIWstPmlzQXV0b1JlcGVhdCgpICYmIChrLT5rZXko KSA9PSBRdDo6S2V5X1NlbGVjdCB8fCBrLT5rZXkoKSA9PSBRdDo6S2V5X1NwYWNlKSkgeworKyAg ICAgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRl OjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxR dDo6S2V5Pj4oKTsKKysgICAgICAgIGlmICghay0+aXNBdXRvUmVwZWF0KCkgJiYgYnV0dG9uUHJl c3NLZXlzLmNvbnRhaW5zKHN0YXRpY19jYXN0PFF0OjpLZXk+KGstPmtleSgpKSkpIHsKKyAgICAg ICAgICAgICBib29sIHRvZ2dsZSA9IChkLT5wcmVzc2VkQ29udHJvbCA9PSBRU3R5bGU6OlNDX0dy b3VwQm94TGFiZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBkLT5wcmVzc2VkQ29u dHJvbCA9PSBRU3R5bGU6OlNDX0dyb3VwQm94Q2hlY2tCb3gpOworICAgICAgICAgICAgIGQtPnBy ZXNzZWRDb250cm9sID0gUVN0eWxlOjpTQ19Ob25lOworZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMv d2lkZ2V0cy93aWRnZXRzL3FsYWJlbC5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9x bGFiZWwuY3BwCitpbmRleCAzMGZmODBjYmIwLi5jZjI2MDVjMTdjIDEwMDY0NAorLS0tIGEvcXRi YXNlL3NyYy93aWRnZXRzL3dpZGdldHMvcWxhYmVsLmNwcAorKysrIGIvcXRiYXNlL3NyYy93aWRn ZXRzL3dpZGdldHMvcWxhYmVsLmNwcAorQEAgLTQyMSw5ICs0MjEsNiBAQCB2b2lkIFFMYWJlbDo6 c2V0UGl4bWFwKGNvbnN0IFFQaXhtYXAgJnBpeG1hcCkKKyAgICAgICAgIGQtPnBpeG1hcCA9IG5l dyBRUGl4bWFwKHBpeG1hcCk7CisgICAgIH0KKyAKKy0gICAgaWYgKGQtPnBpeG1hcC0+ZGVwdGgo KSA9PSAxICYmICFkLT5waXhtYXAtPm1hc2soKSkKKy0gICAgICAgIGQtPnBpeG1hcC0+c2V0TWFz aygqKChRQml0bWFwICopZC0+cGl4bWFwKSk7CistCisgICAgIGQtPnVwZGF0ZUxhYmVsKCk7Cisg fQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS9zcmMvd2lkZ2V0cy93aWRnZXRzL3F0b29sYmFyYXJl YWxheW91dC5jcHAgYi9xdGJhc2Uvc3JjL3dpZGdldHMvd2lkZ2V0cy9xdG9vbGJhcmFyZWFsYXlv dXQuY3BwCitpbmRleCA0OTNjMDk0Y2MxLi5kNWY0YjU5MDE3IDEwMDY0NAorLS0tIGEvcXRiYXNl L3NyYy93aWRnZXRzL3dpZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNwcAorKysrIGIvcXRiYXNl L3NyYy93aWRnZXRzL3dpZGdldHMvcXRvb2xiYXJhcmVhbGF5b3V0LmNwcAorQEAgLTEzNjcsNyAr MTM2Nyw3IEBAIGJvb2wgUVRvb2xCYXJBcmVhTGF5b3V0OjpyZXN0b3JlU3RhdGUoUURhdGFTdHJl YW0gJnN0cmVhbSwgY29uc3QgUUxpc3Q8UVRvb2xCYXIqCisgICAgICAgICAgICAgICAgIGl0ZW0u d2lkZ2V0SXRlbSA9IG5ldyBRV2lkZ2V0SXRlbVYyKHRvb2xCYXIpOworICAgICAgICAgICAgICAg ICB0b29sQmFyLT5zZXRPcmllbnRhdGlvbihmbG9hdGluZyA/ICgoc2hvd24gJiAyKSA/IFF0OjpW ZXJ0aWNhbCA6IFF0OjpIb3Jpem9udGFsKSA6IGRvY2subyk7CisgICAgICAgICAgICAgICAgIHRv b2xCYXItPnNldFZpc2libGUoc2hvd24gJiAxKTsKKy0gICAgICAgICAgICAgICAgdG9vbEJhci0+ ZF9mdW5jKCktPnNldFdpbmRvd1N0YXRlKGZsb2F0aW5nLCB0cnVlLCByZWN0KTsKKysgICAgICAg ICAgICAgICAgdG9vbEJhci0+ZF9mdW5jKCktPnNldFdpbmRvd1N0YXRlKGZsb2F0aW5nLCBmYWxz ZSwgcmVjdCk7CisgCisgICAgICAgICAgICAgICAgIGl0ZW0ucHJlZmVycmVkU2l6ZSA9IGl0ZW0u c2l6ZTsKKyAgICAgICAgICAgICAgICAgbGluZS50b29sQmFySXRlbXMuYXBwZW5kKGl0ZW0pOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50aXRl cmF0ZWtlcm5lbC90c3RfcXRjb25jdXJyZW50aXRlcmF0ZWtlcm5lbC5jcHAgYi9xdGJhc2UvdGVz dHMvYXV0by9jb25jdXJyZW50L3F0Y29uY3VycmVudGl0ZXJhdGVrZXJuZWwvdHN0X3F0Y29uY3Vy cmVudGl0ZXJhdGVrZXJuZWwuY3BwCitpbmRleCAyMTJjMGEyZTEzLi4zYzc3YjFiYTBiIDEwMDY0 NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnRpdGVyYXRl a2VybmVsL3RzdF9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsLmNwcAorKysrIGIvcXRiYXNlL3Rl c3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnRpdGVyYXRla2VybmVsL3RzdF9xdGNvbmN1 cnJlbnRpdGVyYXRla2VybmVsLmNwcAorQEAgLTEyNiw4ICsxMjYsNyBAQCBwdWJsaWM6CisgCisg dm9pZCB0c3RfUXRDb25jdXJyZW50SXRlcmF0ZUtlcm5lbDo6aW5zdGFudGlhdGUoKQorIHsKKy0g ICAgYXV0byBmdXR1cmUgPSBzdGFydFRocmVhZEVuZ2luZShuZXcgUHJpbnRGb3IoMCwgNDApKS5z dGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgIGZ1dHVyZS53YWl0Rm9yRmluaXNoZWQoKTsKKysg ICAgc3RhcnRUaHJlYWRFbmdpbmUobmV3IFByaW50Rm9yKDAsIDQwKSkuc3RhcnRCbG9ja2luZygp OworICAgICBRQ09NUEFSRShpdGVyYXRpb25zLmxvYWRSZWxheGVkKCksIDQwKTsKKyB9CisgCitA QCAtMTY2LDEwICsxNjUsOCBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRlS2VybmVsOjpz dHJlc3N0ZXN0KCkKKyAgICAgY29uc3QgaW50IHRpbWVzID0gNTA7CisgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgdGltZXM7ICsraSkgeworICAgICAgICAgY291bnRlci5zdG9yZVJlbGF4ZWQoMCk7 CistICAgICAgICAvLyBUaHJlYWRFbmdpbmUgd2lsbCBkZWxldGUgZiB3aGVuIGl0IGZpbmlzaGVz CistICAgICAgICBhdXRvIGYgPSBuZXcgQ291bnRGb3IoMCwgaXRlcmF0aW9ucyk7CistICAgICAg ICBhdXRvIGZ1dHVyZSA9IGYtPnN0YXJ0QXN5bmNocm9ub3VzbHkoKTsKKy0gICAgICAgIGZ1dHVy ZS53YWl0Rm9yRmluaXNoZWQoKTsKKysgICAgICAgIENvdW50Rm9yIGYoMCwgaXRlcmF0aW9ucyk7 CisrICAgICAgICBmLnN0YXJ0QmxvY2tpbmcoKTsKKyAgICAgICAgIFFDT01QQVJFKGNvdW50ZXIu bG9hZFJlbGF4ZWQoKSwgaXRlcmF0aW9ucyk7CisgICAgIH0KKyB9CitAQCAtMTc3LDExICsxNzQs OCBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRlS2VybmVsOjpzdHJlc3N0ZXN0KCkKKyB2 b2lkIHRzdF9RdENvbmN1cnJlbnRJdGVyYXRlS2VybmVsOjpub0l0ZXJhdGlvbnMoKQorIHsKKyAg ICAgY29uc3QgaW50IHRpbWVzID0gMjAwMDA7CistICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGlt ZXM7ICsraSkgeworLSAgICAgICAgYXV0byBmdXR1cmUgPSBzdGFydFRocmVhZEVuZ2luZShuZXcg SXRlcmF0ZUtlcm5lbDxUZXN0SXRlcmF0b3IsIHZvaWQ+KDAsIDApKQorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgICAgICBmdXR1cmUu d2FpdEZvckZpbmlzaGVkKCk7CistICAgIH0KKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aW1l czsgKytpKQorKyAgICAgICAgc3RhcnRUaHJlYWRFbmdpbmUobmV3IEl0ZXJhdGVLZXJuZWw8VGVz dEl0ZXJhdG9yLCB2b2lkPigwLCAwKSkuc3RhcnRCbG9ja2luZygpOworIH0KKyAKKyBRTXV0ZXgg dGhyZWFkc011dGV4OworQEAgLTIzNiwxMCArMjMwLDggQEAgdm9pZCB0c3RfUXRDb25jdXJyZW50 SXRlcmF0ZUtlcm5lbDo6dGhyb3R0bGluZygpCisgCisgICAgIHRocmVhZHMuY2xlYXIoKTsKKyAK Ky0gICAgLy8gVGhyZWFkRW5naW5lIHdpbGwgZGVsZXRlIGYgd2hlbiBpdCBmaW5pc2hlcworLSAg ICBhdXRvIGYgPSBuZXcgVGhyb3R0bGVGb3IoMCwgdG90YWxJdGVyYXRpb25zKTsKKy0gICAgYXV0 byBmdXR1cmUgPSBmLT5zdGFydEFzeW5jaHJvbm91c2x5KCk7CistICAgIGZ1dHVyZS53YWl0Rm9y RmluaXNoZWQoKTsKKysgICAgVGhyb3R0bGVGb3IgZigwLCB0b3RhbEl0ZXJhdGlvbnMpOworKyAg ICBmLnN0YXJ0QmxvY2tpbmcoKTsKKyAKKyAgICAgUUNPTVBBUkUoaXRlcmF0aW9ucy5sb2FkUmVs YXhlZCgpLCB0b3RhbEl0ZXJhdGlvbnMpOworIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9h dXRvL2NvbmN1cnJlbnQvcXRjb25jdXJyZW50dGhyZWFkZW5naW5lL3RzdF9xdGNvbmN1cnJlbnR0 aHJlYWRlbmdpbmUuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJl bnR0aHJlYWRlbmdpbmUvdHN0X3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKK2luZGV4IGFj N2JlN2FjZGQuLjgxYmM2NGM4ZDkgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb25j dXJyZW50L3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS90c3RfcXRjb25jdXJyZW50dGhyZWFkZW5n aW5lLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29uY3VycmVudC9xdGNvbmN1cnJlbnR0 aHJlYWRlbmdpbmUvdHN0X3F0Y29uY3VycmVudHRocmVhZGVuZ2luZS5jcHAKK0BAIC02NSw5ICs2 NSwxNiBAQCBwdWJsaWM6CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpy dW5EaXJlY3RseSgpCisgeworLSAgICBQcmludFVzZXIgKmVuZ2luZSA9IG5ldyBQcmludFVzZXIo KTsKKy0gICAgUUZ1dHVyZTx2b2lkPiBmID0gZW5naW5lLT5zdGFydEFzeW5jaHJvbm91c2x5KCk7 CistICAgIGYud2FpdEZvckZpbmlzaGVkKCk7CisrICAgIHsKKysgICAgICAgIFByaW50VXNlciBl bmdpbmU7CisrICAgICAgICBlbmdpbmUuc3RhcnRTaW5nbGVUaHJlYWRlZCgpOworKyAgICAgICAg ZW5naW5lLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgfQorKyAgICB7CisrICAgICAgICBQcmludFVz ZXIgKmVuZ2luZSA9IG5ldyBQcmludFVzZXIoKTsKKysgICAgICAgIFFGdXR1cmU8dm9pZD4gZiA9 IGVuZ2luZS0+c3RhcnRBc3luY2hyb25vdXNseSgpOworKyAgICAgICAgZi53YWl0Rm9yRmluaXNo ZWQoKTsKKysgICAgfQorIH0KKyAKKyBjbGFzcyBTdHJpbmdSZXN1bHRVc2VyIDogcHVibGljIFRo cmVhZEVuZ2luZTxRU3RyaW5nPgorQEAgLTk5LDEwICsxMDYsOCBAQCBwdWJsaWM6CisgCisgdm9p ZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpyZXN1bHQoKQorIHsKKy0gICAgLy8gVGhy ZWFkRW5naW5lIHdpbGwgZGVsZXRlICdlbmdpbmUnIHdoZW4gaXQgZmluaXNoZXMKKy0gICAgYXV0 byBlbmdpbmUgPSBuZXcgU3RyaW5nUmVzdWx0VXNlcigpOworLSAgICBhdXRvIGZ1dHVyZSA9IGVu Z2luZS0+c3RhcnRBc3luY2hyb25vdXNseSgpOworLSAgICBRQ09NUEFSRShmdXR1cmUucmVzdWx0 KCksIFFTdHJpbmcoIkZvbyIpKTsKKysgICAgU3RyaW5nUmVzdWx0VXNlciBlbmdpbmU7CisrICAg IFFDT01QQVJFKCplbmdpbmUuc3RhcnRCbG9ja2luZygpLCBRU3RyaW5nKCJGb28iKSk7CisgfQor IAorIGNsYXNzIFZvaWRSZXN1bHRVc2VyIDogcHVibGljIFRocmVhZEVuZ2luZTx2b2lkPgorQEAg LTEyOCw5ICsxMzMsMTcgQEAgcHVibGljOgorIAorIHZvaWQgdHN0X1F0Q29uY3VycmVudFRocmVh ZEVuZ2luZTo6cnVuVGhyb3VnaFN0YXJ0ZXIoKQorIHsKKy0gICAgVGhyZWFkRW5naW5lU3RhcnRl cjxRU3RyaW5nPiBzdGFydGVyID0gc3RhcnRUaHJlYWRFbmdpbmUobmV3IFN0cmluZ1Jlc3VsdFVz ZXIoKSk7CistICAgIFFGdXR1cmU8UVN0cmluZz4gZiA9IHN0YXJ0ZXIuc3RhcnRBc3luY2hyb25v dXNseSgpOworLSAgICBRQ09NUEFSRShmLnJlc3VsdCgpLCBRU3RyaW5nKCJGb28iKSk7CisrICAg IHsKKysgICAgICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXI8UVN0cmluZz4gc3RhcnRlciA9IHN0YXJ0 VGhyZWFkRW5naW5lKG5ldyBTdHJpbmdSZXN1bHRVc2VyKCkpOworKyAgICAgICAgUUZ1dHVyZTxR U3RyaW5nPiAgZiA9IHN0YXJ0ZXIuc3RhcnRBc3luY2hyb25vdXNseSgpOworKyAgICAgICAgUUNP TVBBUkUoZi5yZXN1bHQoKSwgUVN0cmluZygiRm9vIikpOworKyAgICB9CisrCisrICAgIHsKKysg ICAgICAgIFRocmVhZEVuZ2luZVN0YXJ0ZXI8UVN0cmluZz4gc3RhcnRlciA9IHN0YXJ0VGhyZWFk RW5naW5lKG5ldyBTdHJpbmdSZXN1bHRVc2VyKCkpOworKyAgICAgICAgUVN0cmluZyBzdHIgPSBz dGFydGVyLnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIFFDT01QQVJFKHN0ciwgUVN0cmluZygi Rm9vIikpOworKyAgICB9CisgfQorIAorIGNsYXNzIENhbmNlbFVzZXIgOiBwdWJsaWMgVGhyZWFk RW5naW5lPHZvaWQ+CitAQCAtMjEzLDYgKzIyNiwxMiBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRU aHJlYWRFbmdpbmU6OnRocm90dGxlKCkKKyAgICAgICAgIGYud2FpdEZvckZpbmlzaGVkKCk7Cisg ICAgICAgICBRQ09NUEFSRShjb3VudC5sb2FkUmVsYXhlZCgpLCAwKTsKKyAgICAgfQorKworKyAg ICBmb3IgKGludCBpID0gMDsgaSA8IHJlcGVhdHM7ICsraSkgeworKyAgICAgICAgVGhyb3R0bGVB bHdheXNVc2VyIHQ7CisrICAgICAgICB0LnN0YXJ0QmxvY2tpbmcoKTsKKysgICAgICAgIFFDT01Q QVJFKGNvdW50LmxvYWRSZWxheGVkKCksIDApOworKyAgICB9CisgfQorIAorIFFTZXQ8UVRocmVh ZCAqPiB0aHJlYWRzOworQEAgLTI0OSwxNyArMjY4LDM1IEBAIHZvaWQgdHN0X1F0Q29uY3VycmVu dFRocmVhZEVuZ2luZTo6dGhyZWFkQ291bnQoKQorIHsKKyAgICAgY29uc3QgaW50IHJlcGVhdHMg PSAxMDsKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXRzOyArK2kpIHsKKysgICAgICAg IFRocmVhZENvdW50VXNlciB0OworKyAgICAgICAgdC5zdGFydEJsb2NraW5nKCk7CisrICAgICAg ICBpbnQgY291bnQgPSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBpbnQgY291bnRfZXhwZWN0 ZWQgPSBRVGhyZWFkUG9vbDo6Z2xvYmFsSW5zdGFuY2UoKS0+bWF4VGhyZWFkQ291bnQoKSArIDE7 IC8vICsxIGZvciB0aGUgbWFpbiB0aHJlYWQuCisrICAgICAgICBpZiAoY291bnQgIT0gY291bnRf ZXhwZWN0ZWQpCisrICAgICAgICAgICAgUUVYUEVDVF9GQUlMKCIiLCAiUVRCVUctMjMzMzMiLCBB Ym9ydCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudCwgY291bnRfZXhwZWN0ZWQpOworKworICAg ICAgICAgKG5ldyBUaHJlYWRDb3VudFVzZXIoKSktPnN0YXJ0QXN5bmNocm9ub3VzbHkoKS53YWl0 Rm9yRmluaXNoZWQoKTsKKy0gICAgICAgIGNvbnN0IGF1dG8gY291bnQgPSB0aHJlYWRzLmNvdW50 KCk7CistICAgICAgICBjb25zdCBhdXRvIG1heFRocmVhZENvdW50ID0gUVRocmVhZFBvb2w6Omds b2JhbEluc3RhbmNlKCktPm1heFRocmVhZENvdW50KCk7CistICAgICAgICBRVkVSSUZZKGNvdW50 IDw9IG1heFRocmVhZENvdW50KTsKKy0gICAgICAgIFFWRVJJRlkoIXRocmVhZHMuY29udGFpbnMo UVRocmVhZDo6Y3VycmVudFRocmVhZCgpKSk7CisrICAgICAgICBjb3VudCA9IHRocmVhZHMuY291 bnQoKTsKKysgICAgICAgIGNvdW50X2V4cGVjdGVkID0gUVRocmVhZFBvb2w6Omdsb2JhbEluc3Rh bmNlKCktPm1heFRocmVhZENvdW50KCk7CisrICAgICAgICBpZiAoY291bnQgIT0gY291bnRfZXhw ZWN0ZWQpCisrICAgICAgICAgICAgUUVYUEVDVF9GQUlMKCIiLCAiUVRCVUctMjMzMzMiLCBBYm9y dCk7CisrICAgICAgICBRQ09NUEFSRShjb3VudCwgY291bnRfZXhwZWN0ZWQpOworICAgICB9Cisg CisgICAgIC8vIFNldCB0aGUgZmluaXNoIGZsYWcgaW1tZWRpYXRlbHksIHRoaXMgc2hvdWxkIGdp dmUgdXMgb25lIHRocmVhZCBvbmx5LgorICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlcGVhdHM7 ICsraSkgeworKyAgICAgICAgVGhyZWFkQ291bnRVc2VyIHQodHJ1ZSAvKmZpbmlzaEltbWVkaWF0 ZWx5Ki8pOworKyAgICAgICAgdC5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICBpbnQgY291bnQg PSB0aHJlYWRzLmNvdW50KCk7CisrICAgICAgICBpZiAoY291bnQgIT0gMSkKKysgICAgICAgICAg ICBRRVhQRUNUX0ZBSUwoIiIsICJRVEJVRy0yMzMzMyIsIEFib3J0KTsKKysgICAgICAgIFFDT01Q QVJFKGNvdW50LCAxKTsKKysKKyAgICAgICAgIChuZXcgVGhyZWFkQ291bnRVc2VyKHRydWUgLypm aW5pc2hJbW1lZGlhdGVseSovKSktPnN0YXJ0QXN5bmNocm9ub3VzbHkoKS53YWl0Rm9yRmluaXNo ZWQoKTsKKy0gICAgICAgIGNvbnN0IGF1dG8gY291bnQgPSB0aHJlYWRzLmNvdW50KCk7CisrICAg ICAgICBjb3VudCA9IHRocmVhZHMuY291bnQoKTsKKysgICAgICAgIGlmIChjb3VudCAhPSAxKQor KyAgICAgICAgICAgIFFFWFBFQ1RfRkFJTCgiIiwgIlFUQlVHLTIzMzMzIiwgQWJvcnQpOworICAg ICAgICAgUUNPTVBBUkUoY291bnQsIDEpOworICAgICAgICAgUVZFUklGWSghdGhyZWFkcy5jb250 YWlucyhRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkpKTsKKyAgICAgfQorQEAgLTQwMCw2ICs0Mzcs NyBAQCBwdWJsaWM6CisgCisgdm9pZCB0c3RfUXRDb25jdXJyZW50VGhyZWFkRW5naW5lOjpleGNl cHRpb25zKCkKKyB7CisrICAgIC8vIEFzeW5jaHJvbm91cyBtb2RlOgorICAgICB7CisgICAgICAg ICBib29sIGNhdWdodCA9IGZhbHNlOworICAgICAgICAgdHJ5ICB7CitAQCAtNDEyLDYgKzQ1MCwz MiBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OmV4Y2VwdGlvbnMoKQorICAg ICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7CisgICAgIH0K KyAKKysgICAgLy8gQmxvY2tpbmcgbW9kZToKKysgICAgLy8gdGVzdCB0aHJvd2luZyB0aGUgZXhj ZXB0aW9uIGZyb20gYSB3b3JrZXIgdGhyZWFkLgorKyAgICB7CisrICAgICAgICBib29sIGNhdWdo dCA9IGZhbHNlOworKyAgICAgICAgdHJ5ICB7CisrICAgICAgICAgICAgUXRDb25jdXJyZW50RXhj ZXB0aW9uVGhyb3dlciBlKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSk7CisrICAgICAgICAgICAg ZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICB9IGNhdGNoIChjb25zdCBRRXhjZXB0aW9uICYp IHsKKysgICAgICAgICAgICBjYXVnaHQgPSB0cnVlOworKyAgICAgICAgfQorKyAgICAgICAgUVZF UklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9uIik7CisrICAgIH0KKysKKysgICAg Ly8gdGVzdCB0aHJvd2luZyB0aGUgZXhjZXB0aW9uIGZyb20gdGhlIG1haW4gdGhyZWFkIChkaWZm ZXJlbnQgY29kZSBwYXRoKQorKyAgICB7CisrICAgICAgICBib29sIGNhdWdodCA9IGZhbHNlOwor KyAgICAgICAgdHJ5ICB7CisrICAgICAgICAgICAgUXRDb25jdXJyZW50RXhjZXB0aW9uVGhyb3dl ciBlKDApOworKyAgICAgICAgICAgIGUuc3RhcnRCbG9ja2luZygpOworKyAgICAgICAgfSBjYXRj aCAoY29uc3QgUUV4Y2VwdGlvbiAmKSB7CisrICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKysg ICAgICAgIH0KKysgICAgICAgIFFWRVJJRlkyKGNhdWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlv biIpOworKyAgICB9CisrCisrICAgIC8vIEFzeW5jaHJvbm91cyBtb2RlOgorICAgICB7CisgICAg ICAgICBib29sIGNhdWdodCA9IGZhbHNlOworICAgICAgICAgdHJ5ICB7CitAQCAtNDIzLDYgKzQ4 NywzMSBAQCB2b2lkIHRzdF9RdENvbmN1cnJlbnRUaHJlYWRFbmdpbmU6OmV4Y2VwdGlvbnMoKQor ICAgICAgICAgfQorICAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0 aW9uIik7CisgICAgIH0KKysKKysgICAgLy8gQmxvY2tpbmcgbW9kZToKKysgICAgLy8gdGVzdCB0 aHJvd2luZyB0aGUgZXhjZXB0aW9uIGZyb20gYSB3b3JrZXIgdGhyZWFkLgorKyAgICB7CisrICAg ICAgICBib29sIGNhdWdodCA9IGZhbHNlOworKyAgICAgICAgdHJ5ICB7CisrICAgICAgICAgICAg VW5yZWxhdGVkRXhjZXB0aW9uVGhyb3dlciBlKFFUaHJlYWQ6OmN1cnJlbnRUaHJlYWQoKSk7Cisr ICAgICAgICAgICAgZS5zdGFydEJsb2NraW5nKCk7CisrICAgICAgICB9IGNhdGNoIChjb25zdCBR VW5oYW5kbGVkRXhjZXB0aW9uICYpIHsKKysgICAgICAgICAgICBjYXVnaHQgPSB0cnVlOworKyAg ICAgICAgfQorKyAgICAgICAgUVZFUklGWTIoY2F1Z2h0LCAiZGlkIG5vdCBnZXQgZXhjZXB0aW9u Iik7CisrICAgIH0KKysKKysgICAgLy8gdGVzdCB0aHJvd2luZyB0aGUgZXhjZXB0aW9uIGZyb20g dGhlIG1haW4gdGhyZWFkIChkaWZmZXJlbnQgY29kZSBwYXRoKQorKyAgICB7CisrICAgICAgICBi b29sIGNhdWdodCA9IGZhbHNlOworKyAgICAgICAgdHJ5ICB7CisrICAgICAgICAgICAgVW5yZWxh dGVkRXhjZXB0aW9uVGhyb3dlciBlKDApOworKyAgICAgICAgICAgIGUuc3RhcnRCbG9ja2luZygp OworKyAgICAgICAgfSBjYXRjaCAoY29uc3QgUVVuaGFuZGxlZEV4Y2VwdGlvbiAmKSB7CisrICAg ICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKysgICAgICAgIH0KKysgICAgICAgIFFWRVJJRlkyKGNh dWdodCwgImRpZCBub3QgZ2V0IGV4Y2VwdGlvbiIpOworKyAgICB9CisgfQorIAorICNlbmRpZgor ZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWJ1ZmZlci90c3RfcWJ1 ZmZlci5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3FidWZmZXIvdHN0X3FidWZm ZXIuY3BwCitpbmRleCA0OTY4NzQyMTEwLi5mNGMzZmI3MTFkIDEwMDY0NAorLS0tIGEvcXRiYXNl L3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNwcAorKysrIGIvcXRi YXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xYnVmZmVyL3RzdF9xYnVmZmVyLmNwcAorQEAgLTQy LDYgKzQyLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB3cml0ZUJsb2NrX2RhdGEoKTsK KyAgICAgdm9pZCB3cml0ZUJsb2NrKCk7CisgICAgIHZvaWQgc2VlaygpOworKyAgICB2b2lkIGlu dmFsaWRTZWVrcygpOworICAgICB2b2lkIHNlZWtUZXN0X2RhdGEoKTsKKyAgICAgdm9pZCBzZWVr VGVzdCgpOworICAgICB2b2lkIHJlYWRfcmF3ZGF0YSgpOworQEAgLTI4Niw2ICsyODcsMjkgQEAg dm9pZCB0c3RfUUJ1ZmZlcjo6c2VlaygpCisgICAgIFFDT01QQVJFKGJ1ZmZlci5zaXplKCksIHBv cyk7CisgfQorIAorK3ZvaWQgdHN0X1FCdWZmZXI6OmludmFsaWRTZWVrcygpCisreworKyAgICBp ZiBjb25zdGV4cHIgKHNpemVvZihxc2l6ZXR5cGUpID09IHNpemVvZihxaW50NjQpKSB7CisrICAg ICAgICAvLyBzaXplb2YocXNpemV0eXBlKSA9PSBzaXplb2YocWludDY0KSwgc28gKzEgd291bGQg b3ZlcmZsb3cKKysgICAgICAgIFFTS0lQKCJUaGlzIGlzIGEgMzItYml0LW9ubHkgdGVzdC4iKTsK KysgICAgfSBlbHNlIHsKKysgICAgICAgIFFCdWZmZXIgYnVmZmVyOworKyAgICAgICAgYnVmZmVy Lm9wZW4oUUlPRGV2aWNlOjpXcml0ZU9ubHkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLmJ1 ZmZlcigpLnNpemUoKSwgcXNpemV0eXBlKDApKTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZlci5w b3MoKSwgcWludDY0KDApKTsKKysgICAgICAgIGNvbnN0ZXhwciBxaW50NjQgTWF4UUJ5dGVBcnJh eUNhcGFjaXR5ID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8cXNpemV0eXBlPjo6bWF4KSgpOworKyAg ICAgICAgLy8gdGhpcyBzaG91bGQgZmFpbCBmYXN0LCBub3QgYWZ0ZXIgdHJ5aW5nIHRvIGFsbG9j YXRlIG5lYXJseSAyIEdpQiBvZiBkYXRhLAorKyAgICAgICAgLy8gcG90ZW50aWFsbHkgY3Jhc2hp bmcgaW4gdGhlIHByb2Nlc3M6CisrICAgICAgICBRVkVSSUZZKCFidWZmZXIuc2VlaygyICogTWF4 UUJ5dGVBcnJheUNhcGFjaXR5IC0gMSkpOworKyAgICAgICAgUUNPTVBBUkUoYnVmZmVyLmJ1ZmZl cigpLnNpemUoKSwgcXNpemV0eXBlKDApKTsKKysgICAgICAgIFFDT01QQVJFKGJ1ZmZlci5wb3Mo KSwgcWludDY0KDApKTsKKysgICAgICAgIC8vIGRpdHRvOgorKyAgICAgICAgUVZFUklGWSghYnVm ZmVyLnNlZWsoTWF4UUJ5dGVBcnJheUNhcGFjaXR5ICsgMSkpOworKyAgICAgICAgUUNPTVBBUkUo YnVmZmVyLmJ1ZmZlcigpLnNpemUoKSwgcXNpemV0eXBlKDApKTsKKysgICAgICAgIFFDT01QQVJF KGJ1ZmZlci5wb3MoKSwgcWludDY0KDApKTsKKysgICAgfQorK30KKysKKyB2b2lkIHRzdF9RQnVm ZmVyOjpzZWVrVGVzdF9kYXRhKCkKKyB7CisgICAgIHdyaXRlQmxvY2tfZGF0YSgpOworZGlmZiAt LWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcWlvZGV2aWNlL3RzdF9xaW9kZXZp Y2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xaW9kZXZpY2UvdHN0X3Fpb2Rl dmljZS5jcHAKK2luZGV4IGRhNTMyNzU5NGMuLjRhMDRlMGY3YzYgMTAwNjQ0CistLS0gYS9xdGJh c2UvdGVzdHMvYXV0by9jb3JlbGliL2lvL3Fpb2RldmljZS90c3RfcWlvZGV2aWNlLmNwcAorKysr IGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xaW9kZXZpY2UvdHN0X3Fpb2RldmljZS5j cHAKK0BAIC01NjEsNyArNTYxLDggQEAgcHJvdGVjdGVkOgorICAgICBxaW50NjQgcmVhZERhdGEo Y2hhciAqZGF0YSwgcWludDY0IG1heFNpemUpIG92ZXJyaWRlCisgICAgIHsKKyAgICAgICAgIG1h eFNpemUgPSBxTWluKG1heFNpemUsIHFpbnQ2NChidWYtPnNpemUoKSAtIG9mZnNldCkpOworLSAg ICAgICAgbWVtY3B5KGRhdGEsIGJ1Zi0+Y29uc3REYXRhKCkgKyBvZmZzZXQsIG1heFNpemUpOwor KyAgICAgICAgaWYgKG1heFNpemUgPiAwKQorKyAgICAgICAgICAgIG1lbWNweShkYXRhLCBidWYt PmNvbnN0RGF0YSgpICsgb2Zmc2V0LCBtYXhTaXplKTsKKyAgICAgICAgIG9mZnNldCArPSBtYXhT aXplOworICAgICAgICAgcmV0dXJuIG1heFNpemU7CisgICAgIH0KK0BAIC02MDQsMTMgKzYwNSwx NSBAQCBwcm90ZWN0ZWQ6CisgICAgIHFpbnQ2NCByZWFkRGF0YShjaGFyICpkYXRhLCBxaW50NjQg bWF4U2l6ZSkgb3ZlcnJpZGUKKyAgICAgeworICAgICAgICAgbWF4U2l6ZSA9IHFNaW4obWF4U2l6 ZSwgcWludDY0KGJ1Zi5zaXplKCkgLSBwb3MoKSkpOworLSAgICAgICAgbWVtY3B5KGRhdGEsIGJ1 Zi5jb25zdERhdGEoKSArIHBvcygpLCBtYXhTaXplKTsKKysgICAgICAgIGlmIChtYXhTaXplID4g MCkKKysgICAgICAgICAgICBtZW1jcHkoZGF0YSwgYnVmLmNvbnN0RGF0YSgpICsgcG9zKCksIG1h eFNpemUpOworICAgICAgICAgcmV0dXJuIG1heFNpemU7CisgICAgIH0KKyAgICAgcWludDY0IHdy aXRlRGF0YShjb25zdCBjaGFyICpkYXRhLCBxaW50NjQgbWF4U2l6ZSkgb3ZlcnJpZGUKKyAgICAg eworICAgICAgICAgbWF4U2l6ZSA9IHFNaW4obWF4U2l6ZSwgcWludDY0KGJ1Zi5zaXplKCkgLSBw b3MoKSkpOworLSAgICAgICAgbWVtY3B5KGJ1Zi5kYXRhKCkgKyBwb3MoKSwgZGF0YSwgbWF4U2l6 ZSk7CisrICAgICAgICBpZiAobWF4U2l6ZSA+IDApCisrICAgICAgICAgICAgbWVtY3B5KGJ1Zi5k YXRhKCkgKyBwb3MoKSwgZGF0YSwgbWF4U2l6ZSk7CisgICAgICAgICByZXR1cm4gbWF4U2l6ZTsK KyAgICAgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcXBy b2Nlc3MvdHN0X3Fwcm9jZXNzLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcXBy b2Nlc3MvdHN0X3Fwcm9jZXNzLmNwcAoraW5kZXggZGI2MGJlYWQ2NC4uZjM0NWE0NDQxNCAxMDA2 NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaW8vcXByb2Nlc3MvdHN0X3Fwcm9j ZXNzLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pby9xcHJvY2Vzcy90c3Rf cXByb2Nlc3MuY3BwCitAQCAtMSw3ICsxLDggQEAKKyAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoq CisgKiogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBRdCBDb21wYW55IEx0ZC4KKy0qKiBDb3B5cmln aHQgKEMpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24uCisrKiogQ29weXJpZ2h0IChDKSAyMDIwIFRo ZSBRdCBDb21wYW55IEx0ZC4KKysqKiBDb3B5cmlnaHQgKEMpIDIwMjIgSW50ZWwgQ29ycG9yYXRp b24uCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoqCisgKiog VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRlc3Qgc3VpdGUgb2YgdGhlIFF0IFRvb2xraXQuCitA QCAtMTUwLDYgKzE1MSw4IEBAIHByaXZhdGUgc2xvdHM6CisgICAgIHZvaWQgc3RhcnRTdG9wU3Rh cnRTdG9wQnVmZmVycygpOworICAgICB2b2lkIHByb2Nlc3NFdmVudHNJbkFSZWFkeVJlYWRTbG90 X2RhdGEoKTsKKyAgICAgdm9pZCBwcm9jZXNzRXZlbnRzSW5BUmVhZHlSZWFkU2xvdCgpOworKyAg ICB2b2lkIHN0YXJ0RnJvbUN1cnJlbnRXb3JraW5nRGlyX2RhdGEoKTsKKysgICAgdm9pZCBzdGFy dEZyb21DdXJyZW50V29ya2luZ0RpcigpOworIAorICAgICAvLyBrZWVwIHRoZXNlIGF0IHRoZSBl bmQsIHNpbmNlIHRoZXkgdXNlIGxvdHMgb2YgcHJvY2Vzc2VzIGFuZCBzb21ldGltZXMKKyAgICAg Ly8gY2F1c2VkIG9ic2N1cmUgZmFpbHVyZXMgdG8gb2NjdXIgaW4gdGVzdHMgdGhhdCBmb2xsb3dl ZCB0aGVtIChlc3AuIG9uIHRoZSBNYWMpCitAQCAtMjczMSw1ICsyNzM0LDk0IEBAIHZvaWQgdHN0 X1FQcm9jZXNzOjpmaW5pc2hQcm9jZXNzQmVmb3JlUmVhZGluZ0RvbmVfZGVwcmVjYXRlZCgpCisg CisgI2VuZGlmCisgCisrZW51bSBjbGFzcyBDaGRpck1vZGUgeworKyAgICBOb25lID0gMCwKKysg ICAgSW5QYXJlbnQsCisrICAgIEluQ2hpbGQKKyt9OworK1FfREVDTEFSRV9NRVRBVFlQRShDaGRp ck1vZGUpCisrCisrdm9pZCB0c3RfUVByb2Nlc3M6OnN0YXJ0RnJvbUN1cnJlbnRXb3JraW5nRGly X2RhdGEoKQorK3sKKysgICAgcVJlZ2lzdGVyTWV0YVR5cGU8Q2hkaXJNb2RlPigpOworKyAgICBR VGVzdDo6YWRkQ29sdW1uPFFTdHJpbmc+KCJwcm9ncmFtUHJlZml4Iik7CisrICAgIFFUZXN0Ojph ZGRDb2x1bW48Q2hkaXJNb2RlPigiY2hkaXJNb2RlIik7CisrICAgIFFUZXN0OjphZGRDb2x1bW48 Ym9vbD4oInN1Y2Nlc3MiKTsKKysKKysgICAgY29uc3RleHByIGJvb2wgSXNXaW5kb3dzID0gdHJ1 ZQorKyNpZmRlZiBRX09TX1VOSVgKKysgICAgICAgICAgICAmJiBmYWxzZQorKyNlbmRpZgorKyAg ICAgICAgICAgIDsKKysKKysgICAgLy8gYmFzZWxpbmU6IHRyeWluZyB0byBleGVjdXRlIHRoZSBk aXJlY3RvcnksIHRoaXMgY2FuJ3QgcG9zc2libHkgc3VjY2VlZCEKKysgICAgUVRlc3Q6Om5ld1Jv dygicGxhaW4tc2FtZS1jd2QiKSA8PCBRU3RyaW5nKCkgPDwgQ2hkaXJNb2RlOjpOb25lIDw8IGZh bHNlOworKworKyAgICAvLyBjcm9zcy1wbGF0Zm9ybSBiZWhhdmlvcjogbmVpdGhlciBPUyBzZWFy Y2hlcyB0aGUgc2V0V29ya2luZ0RpcmVjdG9yeSgpCisrICAgIC8vIGRpciB3aXRob3V0ICIuLyIK KysgICAgUVRlc3Q6Om5ld1JvdygicGxhaW4tY2hpbGQtY2hkaXIiKSA8PCBRU3RyaW5nKCkgPDwg Q2hkaXJNb2RlOjpJbkNoaWxkIDw8IGZhbHNlOworKworKyAgICAvLyBjcm9zcy1wbGF0Zm9ybSBi ZWhhdmlvcjogYm90aCBPU2VzIHNlYXJjaCB0aGUgcGFyZW50J3MgQ1dEIHdpdGggIi4vIgorKyAg ICBRVGVzdDo6bmV3Um93KCJwcmVmaXhlZC1wYXJlbnQtY2hkaXIiKSA8PCAiLi8iIDw8IENoZGly TW9kZTo6SW5QYXJlbnQgPDwgdHJ1ZTsKKysKKysgICAgLy8gb3Bwb3NpdGUgYmVoYXZpb3JzOiBX aW5kb3dzIHNlYXJjaGVzIHRoZSBwYXJlbnQncyBDV0QgYW5kIFVuaXggc2VhcmNoZXMKKysgICAg Ly8gdGhlIGNoaWxkJ3Mgd2l0aCAiLi8iCisrICAgIFFUZXN0OjpuZXdSb3coInByZWZpeGVkLWNo aWxkLWNoZGlyIikgPDwgIi4vIiA8PCBDaGRpck1vZGU6OkluQ2hpbGQgPDwgIUlzV2luZG93czsK KysKKysgICAgLy8gV2luZG93cyBzZWFyY2hlcyB0aGUgcGFyZW50J3MgQ1dEIHdpdGhvdXQgIi4v IgorKyAgICBRVGVzdDo6bmV3Um93KCJwbGFpbi1wYXJlbnQtY2hkaXIiKSA8PCBRU3RyaW5nKCkg PDwgQ2hkaXJNb2RlOjpJblBhcmVudCA8PCBJc1dpbmRvd3M7CisrfQorKworK3ZvaWQgdHN0X1FQ cm9jZXNzOjpzdGFydEZyb21DdXJyZW50V29ya2luZ0RpcigpCisreworKyAgICBRRkVUQ0goUVN0 cmluZywgcHJvZ3JhbVByZWZpeCk7CisrICAgIFFGRVRDSChDaGRpck1vZGUsIGNoZGlyTW9kZSk7 CisrICAgIFFGRVRDSChib29sLCBzdWNjZXNzKTsKKysKKysgICAgUVByb2Nlc3MgcHJvY2VzczsK KysgICAgcVJlZ2lzdGVyTWV0YVR5cGU8UVByb2Nlc3M6OlByb2Nlc3NFcnJvcj4oKTsKKysgICAg UVNpZ25hbFNweSBlcnJvclNweSgmcHJvY2VzcywgJlFQcm9jZXNzOjplcnJvck9jY3VycmVkKTsK KysgICAgUVZFUklGWShlcnJvclNweS5pc1ZhbGlkKCkpOworKworKyAgICAvLyBib3RoIHRoZSBk aXIgbmFtZSBhbmQgdGhlIGV4ZWN1dGFibGUgbmFtZQorKyAgICBjb25zdCBRU3RyaW5nIHRhcmdl dCA9IFFTdHJpbmdMaXRlcmFsKCJ0ZXN0UHJvY2Vzc05vcm1hbCIpOworKyAgICBwcm9jZXNzLnNl dFByb2dyYW0ocHJvZ3JhbVByZWZpeCArIHRhcmdldCk7CisrCisrI2lmZGVmIFFfT1NfVU5JWAor KyAgICAvLyBSZXNldCBQQVRILCB0byBiZSBzdXJlIGl0IGRvZXNuJ3QgY29udGFpbiAuIG9yIHRo ZSBlbXB0eSBwYXRoLgorKyAgICAvLyBXZSBjYW4ndCBkbyB0aGlzIG9uIFdpbmRvd3MgYmVjYXVz ZSBETExzIGFyZSBzZWFyY2hlZCBpbiBQQVRICisrICAgIC8vIGFuZCBXaW5kb3dzIGFsd2F5cyBz ZWFyY2hlcyAiLiIgYW55d2F5LgorKyAgICBhdXRvIHJlc3RvcmVFbnYgPSBxU2NvcGVHdWFyZChb b2xkID0gcWdldGVudigiUEFUSCIpXSB7CisrICAgICAgICBxcHV0ZW52KCJQQVRIIiwgb2xkKTsK KysgICAgfSk7CisrICAgIHFwdXRlbnYoIlBBVEgiLCAiLyIpOworKyNlbmRpZgorKworKyAgICBz d2l0Y2ggKGNoZGlyTW9kZSkgeworKyAgICBjYXNlIENoZGlyTW9kZTo6SW5QYXJlbnQ6IHsKKysg ICAgICAgIGF1dG8gcmVzdG9yZUN3ZCA9IHFTY29wZUd1YXJkKFtvbGQgPSBRRGlyOjpjdXJyZW50 UGF0aCgpXSB7CisrICAgICAgICAgICAgUURpcjo6c2V0Q3VycmVudChvbGQpOworKyAgICAgICAg fSk7CisrICAgICAgICBRVkVSSUZZKFFEaXI6OnNldEN1cnJlbnQodGFyZ2V0KSk7CisrICAgICAg ICBwcm9jZXNzLnN0YXJ0KCk7CisrICAgICAgICBicmVhazsKKysgICAgfQorKyAgICBjYXNlIENo ZGlyTW9kZTo6SW5DaGlsZDoKKysgICAgICAgIHByb2Nlc3Muc2V0V29ya2luZ0RpcmVjdG9yeSh0 YXJnZXQpOworKyAgICAgICAgUV9GQUxMVEhST1VHSCgpOworKyAgICBjYXNlIENoZGlyTW9kZTo6 Tm9uZToKKysgICAgICAgIHByb2Nlc3Muc3RhcnQoKTsKKysgICAgICAgIGJyZWFrOworKyAgICB9 CisrCisrICAgIFFDT01QQVJFKHByb2Nlc3Mud2FpdEZvclN0YXJ0ZWQoKSwgc3VjY2Vzcyk7Cisr ICAgIFFDT01QQVJFKGVycm9yU3B5LmNvdW50KCksIGludCghc3VjY2VzcykpOworKyAgICBpZiAo c3VjY2VzcykgeworKyAgICAgICAgUVZFUklGWShwcm9jZXNzLndhaXRGb3JGaW5pc2hlZCgpKTsK KysgICAgfSBlbHNlIHsKKysgICAgICAgIFFDT01QQVJFKHByb2Nlc3MuZXJyb3IoKSwgUVByb2Nl c3M6OkZhaWxlZFRvU3RhcnQpOworKyAgICB9CisrfQorKworIFFURVNUX01BSU4odHN0X1FQcm9j ZXNzKQorICNpbmNsdWRlICJ0c3RfcXByb2Nlc3MubW9jIgorZGlmZiAtLWdpdCBhL3F0YmFzZS90 ZXN0cy9hdXRvL2NvcmVsaWIvaXRlbW1vZGVscy9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVs L3RzdF9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRv L2NvcmVsaWIvaXRlbW1vZGVscy9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsL3RzdF9xY29u Y2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsLmNwcAoraW5kZXggZTFlYTdhNDU1Mi4uOTA5NzJjYWE1 NyAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvaXRlbW1vZGVscy9xY29u Y2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVsL3RzdF9xY29uY2F0ZW5hdGV0YWJsZXNwcm94eW1vZGVs LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9pdGVtbW9kZWxzL3Fjb25jYXRl bmF0ZXRhYmxlc3Byb3h5bW9kZWwvdHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwuY3Bw CitAQCAtMTE3LDYgKzExNyw3IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAgICAgdm9pZCBzaG91bGRQ cm9wYWdhdGVEcm9wQWZ0ZXJMYXN0Um93X2RhdGEoKTsKKyAgICAgdm9pZCBzaG91bGRQcm9wYWdh dGVEcm9wQWZ0ZXJMYXN0Um93KCk7CisgICAgIHZvaWQgcXRidWc5MTc4OCgpOworKyAgICB2b2lk IHF0YnVnOTE4NzgoKTsKKyAKKyBwcml2YXRlOgorICAgICBRU3RhbmRhcmRJdGVtTW9kZWwgbW9k OworQEAgLTg0Myw2ICs4NDQsMjIgQEAgdm9pZCB0c3RfUUNvbmNhdGVuYXRlVGFibGVzUHJveHlN b2RlbDo6cXRidWc5MTc4OCgpCisgICAgIFFDT01QQVJFKHByb3h5Q29uY2F0LmNvbHVtbkNvdW50 KCksIDApOworIH0KKyAKKyt2b2lkIHRzdF9RQ29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsOjpx dGJ1ZzkxODc4KCkKKyt7CisrICAgIFFTdGFuZGFyZEl0ZW1Nb2RlbCBtOworKyAgICBtLnNldFJv d0NvdW50KDQpOworKyAgICBtLnNldENvbHVtbkNvdW50KDQpOworKworKyAgICBRQ29uY2F0ZW5h dGVUYWJsZXNQcm94eU1vZGVsIHBtOworKyAgICBRU29ydEZpbHRlclByb3h5TW9kZWwgcHJveHlG aWx0ZXI7CisrICAgIHByb3h5RmlsdGVyLnNldFNvdXJjZU1vZGVsKCZwbSk7CisrICAgIHByb3h5 RmlsdGVyLnNldEZpbHRlckZpeGVkU3RyaW5nKCJzb21ldGhpbmciKTsKKysgICAgcG0uYWRkU291 cmNlTW9kZWwoJm0pOyAgLy8gVGhpcyBzaG91bGQgbm90IGFzc2VydAorKworKyAgICBRQ09NUEFS RShwbS5jb2x1bW5Db3VudCgpLCA0KTsKKysgICAgUUNPTVBBUkUocG0ucm93Q291bnQoKSwgNCk7 CisrfQorKworIFFURVNUX0dVSUxFU1NfTUFJTih0c3RfUUNvbmNhdGVuYXRlVGFibGVzUHJveHlN b2RlbCkKKyAKKyAjaW5jbHVkZSAidHN0X3Fjb25jYXRlbmF0ZXRhYmxlc3Byb3h5bW9kZWwubW9j IgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIva2VybmVsL3FvYmplY3Qv dHN0X3FvYmplY3QuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9rZXJuZWwvcW9iamVj dC90c3RfcW9iamVjdC5jcHAKK2luZGV4IDliZDY2YzA4MzUuLmVkNGEwYmFlNWQgMTAwNjQ0Cist LS0gYS9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL2tlcm5lbC9xb2JqZWN0L3RzdF9xb2JqZWN0 LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi9rZXJuZWwvcW9iamVjdC90c3Rf cW9iamVjdC5jcHAKK0BAIC0xNTgsNiArMTU4LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9p ZCBudWxsUmVjZWl2ZXIoKTsKKyAgICAgdm9pZCBmdW5jdG9yUmVmZXJlbmNlc0Nvbm5lY3Rpb24o KTsKKyAgICAgdm9pZCBkaXNjb25uZWN0RGlzY29ubmVjdHMoKTsKKysgICAgdm9pZCBkZWNsYXJh dGl2ZURhdGEoKTsKKyB9OworIAorIHN0cnVjdCBRT2JqZWN0Q3JlYXRlZE9uU2h1dGRvd24KK0BA IC03Njc5LDUgKzc2ODAsODEgQEAgdm9pZCB0c3RfUU9iamVjdDo6ZGlzY29ubmVjdERpc2Nvbm5l Y3RzKCkKKyBRX1NUQVRJQ19BU1NFUlQoUXRQcml2YXRlOjpIYXNRX09CSkVDVF9NYWNybzx0c3Rf UU9iamVjdD46OlZhbHVlKTsKKyBRX1NUQVRJQ19BU1NFUlQoIVF0UHJpdmF0ZTo6SGFzUV9PQkpF Q1RfTWFjcm88U2libGluZ0RlbGV0ZXI+OjpWYWx1ZSk7CisgCisrI2lmZGVmIFFUX0JVSUxEX0lO VEVSTkFMCisrLyoKKysgICAgU2luY2UgUU9iamVjdFByaXZhdGUgc3RvcmVzIHRoZSBkZWNsYXJh dGl2ZURhdGEgcG9pbnRlciBpbiBhIHVuaW9uIHdpdGggdGhlIHBvaW50ZXIKKysgICAgdG8gdGhl IGN1cnJlbnRseSBkZXN0cm95ZWQgY2hpbGQsIGNhbGxzIHRvIHRoZSBRdERlY2xhcmF0aXZlIGhh bmRsZXJzIG5lZWQgdG8gYmUKKysgICAgY29ycmVjdGx5IGd1YXJkZWQuIFFUQlVHLTEwNTI4Ngor KyovCisrbmFtZXNwYWNlIFF0RGVjbGFyYXRpdmUgeworK3N0YXRpYyBRQWJzdHJhY3REZWNsYXJh dGl2ZURhdGEgKnRoZURhdGE7CisrCisrc3RhdGljIHZvaWQgZGVzdHJveWVkKFFBYnN0cmFjdERl Y2xhcmF0aXZlRGF0YSAqZGF0YSwgUU9iamVjdCAqKQorK3sKKysgICAgUUNPTVBBUkUoZGF0YSwg dGhlRGF0YSk7CisrfQorK3N0YXRpYyB2b2lkIHNpZ25hbEVtaXR0ZWQoUUFic3RyYWN0RGVjbGFy YXRpdmVEYXRhICpkYXRhLCBRT2JqZWN0ICosIGludCwgdm9pZCAqKikKKyt7CisrICAgIFFDT01Q QVJFKGRhdGEsIHRoZURhdGEpOworK30KKysvLyB3ZSBjYW4ndCB1c2UgUUNPTVBBUkUgaW4gdGhl IG5leHQgdHdvIGZ1bmN0aW9ucywgYXMgdGhleSBkb24ndCByZXR1cm4gdm9pZAorK3N0YXRpYyBp bnQgcmVjZWl2ZXJzKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YSAqZGF0YSwgY29uc3QgUU9iamVj dCAqLCBpbnQpCisreworKyAgICBRVGVzdDo6cUNvbXBhcmUoZGF0YSwgdGhlRGF0YSwgImRhdGEi LCAidGhlRGF0YSIsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisrICAgIHJldHVybiAwOworK30KKytz dGF0aWMgYm9vbCBpc1NpZ25hbENvbm5lY3RlZChRQWJzdHJhY3REZWNsYXJhdGl2ZURhdGEgKmRh dGEsIGNvbnN0IFFPYmplY3QgKiwgaW50KQorK3sKKysgICAgUVRlc3Q6OnFDb21wYXJlKGRhdGEs IHRoZURhdGEsICJkYXRhIiwgInRoZURhdGEiLCBfX0ZJTEVfXywgX19MSU5FX18pOworKyAgICBy ZXR1cm4gdHJ1ZTsKKyt9CisrCisrY2xhc3MgT2JqZWN0IDogcHVibGljIFFPYmplY3QKKyt7Cisr ICAgIFFfT0JKRUNUCisrcHVibGljOgorKyAgICB1c2luZyBRT2JqZWN0OjpRT2JqZWN0OworKyAg ICB+T2JqZWN0KCkKKysgICAgeworKyAgICAgICAgaWYgKE9iamVjdCAqcCA9IHN0YXRpY19jYXN0 PE9iamVjdCAqPihwYXJlbnQoKSkpCisrICAgICAgICAgICAgcC0+ZW1pdFNpZ25hbCgpOworKyAg ICB9CisrCisrICAgIHZvaWQgZW1pdFNpZ25hbCgpCisrICAgIHsKKysgICAgICAgIGVtaXQgdGhl U2lnbmFsKCk7CisrICAgIH0KKysKKytzaWduYWxzOgorKyAgICB2b2lkIHRoZVNpZ25hbCgpOwor K307CisrCisrfQorKyNlbmRpZgorKworK3ZvaWQgdHN0X1FPYmplY3Q6OmRlY2xhcmF0aXZlRGF0 YSgpCisreworKyNpZmRlZiBRVF9CVUlMRF9JTlRFUk5BTAorKyAgICBRU2NvcGVkVmFsdWVSb2xs YmFjayBkZXN0cm95ZWQoUUFic3RyYWN0RGVjbGFyYXRpdmVEYXRhOjpkZXN0cm95ZWQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdERlY2xhcmF0aXZlOjpkZXN0cm95ZWQp OworKyAgICBRU2NvcGVkVmFsdWVSb2xsYmFjayBzaWduYWxFbWl0dGVkKFFBYnN0cmFjdERlY2xh cmF0aXZlRGF0YTo6c2lnbmFsRW1pdHRlZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRdERlY2xhcmF0aXZlOjpzaWduYWxFbWl0dGVkKTsKKysgICAgUVNjb3BlZFZh bHVlUm9sbGJhY2sgcmVjZWl2ZXJzKFFBYnN0cmFjdERlY2xhcmF0aXZlRGF0YTo6cmVjZWl2ZXJz LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXREZWNsYXJhdGl2ZTo6cmVj ZWl2ZXJzKTsKKysgICAgUVNjb3BlZFZhbHVlUm9sbGJhY2sgaXNTaWduYWxDb25uZWN0ZWQoUUFi c3RyYWN0RGVjbGFyYXRpdmVEYXRhOjppc1NpZ25hbENvbm5lY3RlZCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXREZWNsYXJhdGl2ZTo6aXNTaWduYWxDb25u ZWN0ZWQpOworKworKyAgICBRdERlY2xhcmF0aXZlOjpPYmplY3QgcDsKKysgICAgUU9iamVjdFBy aXZhdGUgKnByaXYgPSBRT2JqZWN0UHJpdmF0ZTo6Z2V0KCZwKTsKKysgICAgcHJpdi0+ZGVjbGFy YXRpdmVEYXRhID0gUXREZWNsYXJhdGl2ZTo6dGhlRGF0YSA9IG5ldyBRQWJzdHJhY3REZWNsYXJh dGl2ZURhdGE7CisrCisrICAgIGNvbm5lY3QoJnAsICZRdERlY2xhcmF0aXZlOjpPYmplY3Q6OnRo ZVNpZ25hbCwgJnAsIFtdeworKyAgICB9KTsKKysKKysgICAgUXREZWNsYXJhdGl2ZTo6T2JqZWN0 ICpjaGlsZCA9IG5ldyBRdERlY2xhcmF0aXZlOjpPYmplY3Q7CisrICAgIGNoaWxkLT5zZXRQYXJl bnQoJnApOworKyNlbmRpZgorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RT2JqZWN0KQorICNpbmNs dWRlICJ0c3RfcW9iamVjdC5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29y ZWxpYi9taW1ldHlwZXMvcW1pbWVkYXRhYmFzZS90c3RfcW1pbWVkYXRhYmFzZS5jcHAgYi9xdGJh c2UvdGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBlcy9xbWltZWRhdGFiYXNlL3RzdF9xbWltZWRh dGFiYXNlLmNwcAoraW5kZXggMGVhNDIyZWNiYy4uMWEzMjU2NTM0YiAxMDA2NDQKKy0tLSBhL3F0 YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UvdHN0X3FtaW1l ZGF0YWJhc2UuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL21pbWV0eXBlcy9x bWltZWRhdGFiYXNlL3RzdF9xbWltZWRhdGFiYXNlLmNwcAorQEAgLTcwLDE1ICs3MCwxNSBAQCBz dGF0aWMgaW5saW5lIFFTdHJpbmcgdGVzdFN1aXRlV2FybmluZygpCisgCisgICAgIFFTdHJpbmcg cmVzdWx0OworICAgICBRVGV4dFN0cmVhbSBzdHIoJnJlc3VsdCk7CistICAgIHN0ciA8PCAiXG5D YW5ub3QgZmluZCB0aGUgc2hhcmVkLW1pbWUtaW5mbyB0ZXN0IHN1aXRlXG5zdGFydGluZyBmcm9t OiAiCisrICAgIHN0ciA8PCAiXG5DYW5ub3QgZmluZCB0aGUgc2hhcmVkLW1pbWUtaW5mbyB0ZXN0 IHN1aXRlXG5pbiB0aGUgcGFyZW50IG9mOiAiCisgICAgICAgICA8PCBRRGlyOjp0b05hdGl2ZVNl cGFyYXRvcnMoUURpcjo6Y3VycmVudFBhdGgoKSkgPDwgIlxuIgorICAgICAgICAgICAgImNkICIg PDwgUURpcjo6dG9OYXRpdmVTZXBhcmF0b3JzKFFTdHJpbmdMaXRlcmFsKCJ0ZXN0cy9hdXRvL2Nv cmVsaWIvbWltZXR5cGVzL3FtaW1lZGF0YWJhc2UiKSkgPDwgIlxuIgorLSAgICAgICAgICAgIndn ZXQgaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL3hkZy9zaGFyZWQtbWltZS1pbmZvL3NuYXBz aG90L1JlbGVhc2UtMS0xMC56aXBcbiIKKy0gICAgICAgICAgICJ1bnppcCBSZWxlYXNlLTEtMTAu emlwXG4iOworKyAgICAgICAgICAgIndnZXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3Jn L3hkZy9zaGFyZWQtbWltZS1pbmZvLy0vYXJjaGl2ZS8yLjEvc2hhcmVkLW1pbWUtaW5mby0yLjEu emlwXG4iCisrICAgICAgICAgICAidW56aXAgc2hhcmVkLW1pbWUtaW5mby0yLjEuemlwXG4iOwor ICNpZmRlZiBRX09TX1dJTgorLSAgICBzdHIgPDwgIm1rZGlyIHRlc3RmaWxlc1xueGNvcHkgL3Mg UmVsZWFzZS0xLTEwIHMtbS1pXG4iOworKyAgICBzdHIgPDwgIm1rZGlyIHRlc3RmaWxlc1xueGNv cHkgL3Mgc2hhcmVkLW1pbWUtaW5mby0yLjEgcy1tLWlcbiI7CisgI2Vsc2UKKy0gICAgc3RyIDw8 ICJsbiAtcyBSZWxlYXNlLTEtMTAgcy1tLWlcbiI7CisrICAgIHN0ciA8PCAibG4gLXMgc2hhcmVk LW1pbWUtaW5mby0yLjEgcy1tLWlcbiI7CisgI2VuZGlmCisgICAgIHJldHVybiByZXN1bHQ7Cisg fQorQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIHRzdF9RTWltZURhdGFiYXNlOjppbml0VGVzdENh c2UoKQorICAgICBRVkVSSUZZMihjb3B5UmVzb3VyY2VGaWxlKHhtbEZpbGVOYW1lLCB4bWxUYXJn ZXRGaWxlTmFtZSwgJmVycm9yTWVzc2FnZSksIHFQcmludGFibGUoZXJyb3JNZXNzYWdlKSk7Cisg I2VuZGlmCisgCistICAgIG1fdGVzdFN1aXRlID0gUUZJTkRURVNUREFUQSgicy1tLWkvdGVzdHMi KTsKKysgICAgbV90ZXN0U3VpdGUgPSBRRklORFRFU1REQVRBKCJzLW0taS90ZXN0cy9taW1lLWRl dGVjdGlvbiIpOworICAgICBpZiAobV90ZXN0U3VpdGUuaXNFbXB0eSgpKQorICAgICAgICAgcVdh cm5pbmcoIiVzIiwgcVByaW50YWJsZSh0ZXN0U3VpdGVXYXJuaW5nKCkpKTsKKyAKK0BAIC02MTEs NyArNjExLDcgQEAgdm9pZCB0c3RfUU1pbWVEYXRhYmFzZTo6YWxsTWltZVR5cGVzKCkKKyAgICAg UVZFUklGWSghbHN0LmlzRW1wdHkoKSk7CisgCisgICAgIC8vIEhhcmRjb2RpbmcgdGhpcyBpcyB0 aGUgb25seSB3YXkgdG8gY2hlY2sgYm90aCBwcm92aWRlcnMgZmluZCB0aGUgc2FtZSBudW1iZXIg b2YgbWltZXR5cGVzLgorLSAgICBRQ09NUEFSRShsc3QuY291bnQoKSwgNzc5KTsKKysgICAgUUNP TVBBUkUobHN0LmNvdW50KCksIDgxMSk7CisgCisgICAgIGZvcmVhY2ggKGNvbnN0IFFNaW1lVHlw ZSAmbWltZSwgbHN0KSB7CisgICAgICAgICBjb25zdCBRU3RyaW5nIG5hbWUgPSBtaW1lLm5hbWUo KTsKK0BAIC02MzEsMTAgKzYzMSw5IEBAIHZvaWQgdHN0X1FNaW1lRGF0YWJhc2U6OnN1ZmZpeGVz X2RhdGEoKQorIAorICAgICBRVGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIGEgc2luZ2xlIHBh dHRlcm4iKSA8PCAiYXBwbGljYXRpb24vcGRmIiA8PCAiKi5wZGYiIDw8ICJwZGYiOworICAgICBR VGVzdDo6bmV3Um93KCJtaW1ldHlwZSB3aXRoIG11bHRpcGxlIHBhdHRlcm5zIikgPDwgImFwcGxp Y2F0aW9uL3gta3ByZXNlbnRlciIgPDwgIioua3ByOyoua3B0IiA8PCAia3ByIjsKKy0gICAgUVRl c3Q6Om5ld1JvdygianBlZyIpIDw8ICJpbWFnZS9qcGVnIiA8PCAiKi5qcGU7Ki5qcGc7Ki5qcGVn IiA8PCAianBlZyI7CistICAgIC8vaWYgKEtNaW1lVHlwZTo6c2hhcmVkTWltZUluZm9WZXJzaW9u KCkgPiBLREVfTUFLRV9WRVJTSU9OKDAsIDYwLCAwKSkgeworLSAgICAgICAgUVRlc3Q6Om5ld1Jv dygibWltZXR5cGUgd2l0aCBtYW55IHBhdHRlcm5zIikgPDwgImFwcGxpY2F0aW9uL3ZuZC53b3Jk cGVyZmVjdCIgPDwgIioud3A7Ki53cDQ7Ki53cDU7Ki53cDY7Ki53cGQ7Ki53cHAiIDw8ICJ3cCI7 CistICAgIC8vfQorKyAgICAvLyBUaGUgcHJlZmVycmVkIHN1ZmZpeCBmb3IgaW1hZ2UvanBlZyBp cyAqLmpwZywgYXMgcGVyIGh0dHBzOi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY3 MzcKKysgICAgUVRlc3Q6Om5ld1JvdygianBlZyIpIDw8ICJpbWFnZS9qcGVnIiA8PCAiKi5qcGU7 Ki5qcGc7Ki5qcGVnIiA8PCAianBnIjsKKysgICAgUVRlc3Q6Om5ld1JvdygibWltZXR5cGUgd2l0 aCBtYW55IHBhdHRlcm5zIikgPDwgImFwcGxpY2F0aW9uL3ZuZC53b3JkcGVyZmVjdCIgPDwgIiou d3A7Ki53cDQ7Ki53cDU7Ki53cDY7Ki53cGQ7Ki53cHAiIDw8ICJ3cCI7CisgICAgIFFUZXN0Ojpu ZXdSb3coIm9hc2lzIHRleHQgbWltZXR5cGUiKSA8PCAiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9w ZW5kb2N1bWVudC50ZXh0IiA8PCAiKi5vZHQiIDw8ICJvZHQiOworICAgICBRVGVzdDo6bmV3Um93 KCJvYXNpcyBwcmVzZW50YXRpb24gbWltZXR5cGUiKSA8PCAiYXBwbGljYXRpb24vdm5kLm9hc2lz Lm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24iIDw8ICIqLm9kcCIgPDwgIm9kcCI7CisgICAgIFFU ZXN0OjpuZXdSb3coIm1pbWV0eXBlIHdpdGggbXVsdGlwbGUgcGF0dGVybnMiKSA8PCAidGV4dC9w bGFpbiIgPDwgIiouYXNjOyoudHh0OyosdiIgPDwgInR4dCI7CitkaWZmIC0tZ2l0IGEvcXRiYXNl L3Rlc3RzL2F1dG8vY29yZWxpYi9zZXJpYWxpemF0aW9uL2pzb24vdHN0X3F0anNvbi5jcHAgYi9x dGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3NlcmlhbGl6YXRpb24vanNvbi90c3RfcXRqc29uLmNw cAoraW5kZXggM2U1OGRkMDNjYy4uYzhmODJlZjVkNSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0 cy9hdXRvL2NvcmVsaWIvc2VyaWFsaXphdGlvbi9qc29uL3RzdF9xdGpzb24uY3BwCisrKysgYi9x dGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3NlcmlhbGl6YXRpb24vanNvbi90c3RfcXRqc29uLmNw cAorQEAgLTE3Niw2ICsxNzYsOCBAQCBwcml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgZnJvbVRv VmFyaWFudENvbnZlcnNpb25zX2RhdGEoKTsKKyAgICAgdm9pZCBmcm9tVG9WYXJpYW50Q29udmVy c2lvbnMoKTsKKyAKKysgICAgdm9pZCBub0xlYWtPbk5hbWVDbGFzaCgpOworKworIHByaXZhdGU6 CisgICAgIFFTdHJpbmcgdGVzdERhdGFEaXI7CisgfTsKK0BAIC0zNjg1LDUgKzM2ODcsMjMgQEAg dm9pZCB0c3RfUXRKc29uOjpmcm9tVG9WYXJpYW50Q29udmVyc2lvbnMoKQorICAgICB9CisgfQor IAorK3ZvaWQgdHN0X1F0SnNvbjo6bm9MZWFrT25OYW1lQ2xhc2goKQorK3sKKysgICAgUUpzb25E b2N1bWVudCBkb2MgPSBRSnNvbkRvY3VtZW50Ojpmcm9tSnNvbigie1wiXCI6e1wiXCI6MH0sXCJc IjowfSIpOworKyAgICBRVkVSSUZZKCFkb2MuaXNOdWxsKCkpOworKyAgICBjb25zdCBRSnNvbk9i amVjdCBvYmogPSBkb2Mub2JqZWN0KCk7CisrCisrICAgIC8vIFJlbW92ZWQgdGhlIGR1cGxpY2F0 ZSBrZXkuCisrICAgIFFDT01QQVJFKG9iai5sZW5ndGgoKSwgMSk7CisrCisrICAgIC8vIFJldGFp bmVkIHRoZSBsYXN0IG9mIHRoZSBkdXBsaWNhdGVzLgorKyAgICBjb25zdCBRSnNvblZhbHVlIHZh bCA9IG9iai5iZWdpbigpLnZhbHVlKCk7CisrICAgIFFWRVJJRlkodmFsLmlzRG91YmxlKCkpOwor KyAgICBRQ09NUEFSRSh2YWwudG9Eb3VibGUoKSwgMC4wKTsKKysKKysgICAgLy8gSXQgc2hvdWxk IG5vdCBsZWFrLgorKyAgICAvLyBJbiBwYXJ0aWN1bGFyIGl0IHNob3VsZCBub3QgZm9yZ2V0IHRv IGRlcmVmIHRoZSBjb250YWluZXIgZm9yIHRoZSBpbm5lciBvYmplY3QuCisrfQorKworIFFURVNU X01BSU4odHN0X1F0SnNvbikKKyAjaW5jbHVkZSAidHN0X3F0anNvbi5tb2MiCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3Rlc3RzL2F1dG8vY29yZWxpYi90aW1lL3F0aW1lem9uZS90c3RfcXRpbWV6b25l LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL2NvcmVsaWIvdGltZS9xdGltZXpvbmUvdHN0X3F0aW1l em9uZS5jcHAKK2luZGV4IGE1OWI1OGQ1N2YuLjI0MWMzZTg0YWMgMTAwNjQ0CistLS0gYS9xdGJh c2UvdGVzdHMvYXV0by9jb3JlbGliL3RpbWUvcXRpbWV6b25lL3RzdF9xdGltZXpvbmUuY3BwCisr KysgYi9xdGJhc2UvdGVzdHMvYXV0by9jb3JlbGliL3RpbWUvcXRpbWV6b25lL3RzdF9xdGltZXpv bmUuY3BwCitAQCAtNjMsNiArNjMsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGlzVmFs aWRJZF9kYXRhKCk7CisgICAgIHZvaWQgaXNWYWxpZElkKCk7CisgICAgIHZvaWQgbWFsZm9ybWVk KCk7CisrICAgIHZvaWQgc2VyaWFsaXplKCk7CisgICAgIC8vIEJhY2tlbmQgdGVzdHMKKyAgICAg dm9pZCB1dGNUZXN0KCk7CisgICAgIHZvaWQgaWN1VGVzdCgpOworQEAgLTk0Nyw2ICs5NDgsMzMg QEAgdm9pZCB0c3RfUVRpbWVab25lOjptYWxmb3JtZWQoKQorICAgICAgICAgYmFyZi5vZmZzZXRG cm9tVXRjKG5vdyk7CisgfQorIAorK3ZvaWQgdHN0X1FUaW1lWm9uZTo6c2VyaWFsaXplKCkKKyt7 CisrICAgIGludCBwYXJ0cyA9IDA7CisrI2lmbmRlZiBRVF9OT19ERUJVR19TVFJFQU0KKysgICAg cURlYnVnKCkgPDwgUVRpbWVab25lKCk7IC8vIHRvIHZlcmlmeSBubyBjcmFzaAorKyAgICBwYXJ0 cysrOworKyNlbmRpZgorKyNpZm5kZWYgUVRfTk9fREFUQVNUUkVBTQorKyAgICBRQnl0ZUFycmF5 IGJsb2I7CisrICAgIHsKKysgICAgICAgIFFEYXRhU3RyZWFtIHN0cmVhbSgmYmxvYiwgUUlPRGV2 aWNlOjpXcml0ZU9ubHkpOworKyAgICAgICAgc3RyZWFtIDw8IFFUaW1lWm9uZSgiRXVyb3BlL09z bG8iKSA8PCBRVGltZVpvbmUoNDIwKSA8PCBRVGltZVpvbmUoKSA8PCBxaW50NjQoLTEpOworKyAg ICB9CisrICAgIFFEYXRhU3RyZWFtIHN0cmVhbSgmYmxvYiwgUUlPRGV2aWNlOjpSZWFkT25seSk7 CisrICAgIFFUaW1lWm9uZSBpbnZhbGlkLCBvZmZzZXQsIG9zbG87CisrICAgIHFpbnQ2NCBtaW51 c29uZTsKKysgICAgc3RyZWFtID4+IG9zbG8gPj4gb2Zmc2V0ID4+IGludmFsaWQgPj4gbWludXNv bmU7CisrICAgIFFDT01QQVJFKG9zbG8sIFFUaW1lWm9uZSgiRXVyb3BlL09zbG8iKSk7CisrICAg IFFDT01QQVJFKG9mZnNldCwgUVRpbWVab25lKDQyMCkpOworKyAgICBRVkVSSUZZKCFpbnZhbGlk LmlzVmFsaWQoKSk7CisrICAgIFFDT01QQVJFKG1pbnVzb25lLCBxaW50NjQoLTEpKTsKKysgICAg cGFydHMrKzsKKysjZW5kaWYKKysgICAgaWYgKCFwYXJ0cykKKysgICAgICAgIFFTS0lQKCJObyBz ZXJpYWxpemF0aW9uIGVuYWJsZWQiKTsKKyt9CisrCisgdm9pZCB0c3RfUVRpbWVab25lOjp1dGNU ZXN0KCkKKyB7CisgI2lmZGVmIFFUX0JVSUxEX0lOVEVSTkFMCitkaWZmIC0tZ2l0IGEvcXRiYXNl L3Rlc3RzL2F1dG8vZGJ1cy9xZGJ1c2ludGVyZmFjZS90c3RfcWRidXNpbnRlcmZhY2UuY3BwIGIv cXRiYXNlL3Rlc3RzL2F1dG8vZGJ1cy9xZGJ1c2ludGVyZmFjZS90c3RfcWRidXNpbnRlcmZhY2Uu Y3BwCitpbmRleCAwNTQ4MGM2ZGQyLi43MGY0Yzc1NzU2IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rl c3RzL2F1dG8vZGJ1cy9xZGJ1c2ludGVyZmFjZS90c3RfcWRidXNpbnRlcmZhY2UuY3BwCisrKysg Yi9xdGJhc2UvdGVzdHMvYXV0by9kYnVzL3FkYnVzaW50ZXJmYWNlL3RzdF9xZGJ1c2ludGVyZmFj ZS5jcHAKK0BAIC0zMjQsNiArMzI0LDEzIEBAIHZvaWQgdHN0X1FEQnVzSW50ZXJmYWNlOjpub3RW YWxpZCgpCisgCisgICAgIFFWRVJJRlkoIWludGVyZmFjZS5pc1ZhbGlkKCkpOworICAgICBRVkVS SUZZKCFRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKCZpbnRlcmZhY2UsICJMaXN0TmFtZXMiLCBR dDo6RGlyZWN0Q29ubmVjdGlvbikpOworKworKyAgICAvLyBXaXRoIGEgY29ubmVjdGlvbiwgYnV0 IGVtcHR5L251bGwgc2VydmljZSBhbmQgcGF0aCBzcGVjaWZpZWQKKysgICAgUURCdXNDb25uZWN0 aW9uIGNvbiA9IFFEQnVzQ29ubmVjdGlvbjo6c2Vzc2lvbkJ1cygpOworKyAgICBRVkVSSUZZKGNv bi5pc0Nvbm5lY3RlZCgpKTsKKysgICAgUURCdXNJbnRlcmZhY2UgaWZhY2Uoe30sIHt9LCB7fSwg Y29uKTsKKysgICAgUVZFUklGWSghaWZhY2UuaXNWYWxpZCgpKTsKKysgICAgUVZFUklGWSghUU1l dGFPYmplY3Q6Omludm9rZU1ldGhvZCgmaW50ZXJmYWNlLCAiTGlzdE5hbWVzIiwgUXQ6OkRpcmVj dENvbm5lY3Rpb24pKTsKKyB9CisgCisgdm9pZCB0c3RfUURCdXNJbnRlcmZhY2U6Om5vdFZhbGlk RGVyaXZlZCgpCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL2tlcm5lbC9xa2V5 c2VxdWVuY2UvdHN0X3FrZXlzZXF1ZW5jZS5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by9ndWkva2Vy bmVsL3FrZXlzZXF1ZW5jZS90c3RfcWtleXNlcXVlbmNlLmNwcAoraW5kZXggODc0NDY4Yzk1NC4u MDRjZWI0YWI2NSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL2d1aS9rZXJuZWwvcWtl eXNlcXVlbmNlL3RzdF9xa2V5c2VxdWVuY2UuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9n dWkva2VybmVsL3FrZXlzZXF1ZW5jZS90c3RfcWtleXNlcXVlbmNlLmNwcAorQEAgLTUwNyw2ICs1 MDcsMTAgQEAgdm9pZCB0c3RfUUtleVNlcXVlbmNlOjp0b1N0cmluZ0Zyb21LZXljb2RlX2RhdGEo KQorICAgICBRVGVzdDo6bmV3Um93KCJDdHJsK0FsdCtOdW0rRGVsIikgPDwgUUtleVNlcXVlbmNl KFF0OjpDb250cm9sTW9kaWZpZXIgfCBRdDo6QWx0TW9kaWZpZXIgfCBRdDo6S2V5cGFkTW9kaWZp ZXIgfCBRdDo6S2V5X0RlbGV0ZSkgPDwgIkN0cmwrQWx0K051bStEZWwiOworICAgICBRVGVzdDo6 bmV3Um93KCJDdHJsK0lucyIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6Q29udHJvbE1vZGlmaWVyIHwg UXQ6OktleV9JbnNlcnQpIDw8ICJDdHJsK0lucyI7CisgICAgIFFUZXN0OjpuZXdSb3coIkN0cmwr TnVtK0lucygxKSIpIDw8IFFLZXlTZXF1ZW5jZShRdDo6S2V5X0luc2VydCB8IFF0OjpLZXlwYWRN b2RpZmllciB8IFF0OjpDb250cm9sTW9kaWZpZXIpIDw8ICJDdHJsK051bStJbnMiOworKyAgICBR VGVzdDo6bmV3Um93KCJDdHJsIikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfQ29udHJvbCkgPDwg IkNvbnRyb2wiOworKyAgICBRVGVzdDo6bmV3Um93KCJBbHQiKSA8PCBRS2V5U2VxdWVuY2UoUXQ6 OktleV9BbHQpIDw8ICJBbHQiOworKyAgICBRVGVzdDo6bmV3Um93KCJTaGlmdCIpIDw8IFFLZXlT ZXF1ZW5jZShRdDo6S2V5X1NoaWZ0KSA8PCAiU2hpZnQiOworKyAgICBRVGVzdDo6bmV3Um93KCJN ZXRhIikgPDwgUUtleVNlcXVlbmNlKFF0OjpLZXlfTWV0YSkgPDwgIk1ldGEiOworIH0KKyAKKyB2 b2lkIHRzdF9RS2V5U2VxdWVuY2U6OnRvU3RyaW5nRnJvbUtleWNvZGUoKQorZGlmZiAtLWdpdCBh L3F0YmFzZS90ZXN0cy9hdXRvL2d1aS90ZXh0L3Fmb250ZGF0YWJhc2UvdHN0X3Fmb250ZGF0YWJh c2UuY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS90c3RfcWZv bnRkYXRhYmFzZS5jcHAKK2luZGV4IDE1ZTBlY2FkYWEuLmI0ZWNhNzQyODMgMTAwNjQ0CistLS0g YS9xdGJhc2UvdGVzdHMvYXV0by9ndWkvdGV4dC9xZm9udGRhdGFiYXNlL3RzdF9xZm9udGRhdGFi YXNlLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vZ3VpL3RleHQvcWZvbnRkYXRhYmFzZS90 c3RfcWZvbnRkYXRhYmFzZS5jcHAKK0BAIC04MSw2ICs4MSw4IEBAIHByaXZhdGUgc2xvdHM6Cisg ICAgIHZvaWQgcmVnaXN0ZXJPcGVuVHlwZVByZWZlcnJlZE5hbWVzU3lzdGVtKCk7CisgICAgIHZv aWQgcmVnaXN0ZXJPcGVuVHlwZVByZWZlcnJlZE5hbWVzQXBwbGljYXRpb24oKTsKKyAKKysgICAg dm9pZCBzdHJldGNoUmVzcGVjdGVkKCk7CisrCisgcHJpdmF0ZToKKyAgICAgUVN0cmluZyBtX2xl ZEZvbnQ7CisgICAgIFFTdHJpbmcgbV90ZXN0Rm9udDsKK0BAIC0zNTUsNiArMzU3LDI4IEBAIHN0 YXRpYyBRU3RyaW5nIHRlc3RTdHJpbmcoKQorICAgICByZXR1cm4gUVN0cmluZ0xpdGVyYWwoImZv byBiYXIiKTsKKyB9CisgCisrdm9pZCB0c3RfUUZvbnREYXRhYmFzZTo6c3RyZXRjaFJlc3BlY3Rl ZCgpCisreworKyAgICBpbnQgaXRhbGljSWQgPSBRRm9udERhdGFiYXNlOjphZGRBcHBsaWNhdGlv bkZvbnQobV90ZXN0Rm9udEl0YWxpYyk7CisrICAgIFFWRVJJRlkoaXRhbGljSWQgIT0gLTEpOwor KworKyAgICBRVkVSSUZZKCFRRm9udERhdGFiYXNlOjphcHBsaWNhdGlvbkZvbnRGYW1pbGllcyhp dGFsaWNJZCkuaXNFbXB0eSgpKTsKKysKKysgICAgUVN0cmluZyBpdGFsaWNGb250TmFtZSA9IFFG b250RGF0YWJhc2U6OmFwcGxpY2F0aW9uRm9udEZhbWlsaWVzKGl0YWxpY0lkKS5maXJzdCgpOwor KworKyAgICBRRm9udCBpdGFsaWNGb250ID0gUUZvbnREYXRhYmFzZSgpLmZvbnQoaXRhbGljRm9u dE5hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3Ry aW5nOjpmcm9tTGF0aW4xKCJJdGFsaWMiKSwgMTQpOworKyAgICBRVkVSSUZZKGl0YWxpY0ZvbnQu aXRhbGljKCkpOworKworKyAgICBRRm9udCBpdGFsaWNTdHJldGNoZWRGb250ID0gaXRhbGljRm9u dDsKKysgICAgaXRhbGljU3RyZXRjaGVkRm9udC5zZXRTdHJldGNoKCA0MDAgKTsKKysKKysgICAg UVZFUklGWShRRm9udE1ldHJpY3NGKGl0YWxpY0ZvbnQpLmhvcml6b250YWxBZHZhbmNlKFFTdHJp bmdMaXRlcmFsKCJmb29iYXIiKSkgPAorKyAgICAgICAgICAgIFFGb250TWV0cmljc0YoaXRhbGlj U3RyZXRjaGVkRm9udCkuaG9yaXpvbnRhbEFkdmFuY2UoUVN0cmluZ0xpdGVyYWwoImZvb2JhciIp KSk7CisrCisrICAgIFFGb250RGF0YWJhc2U6OnJlbW92ZUFwcGxpY2F0aW9uRm9udChpdGFsaWNJ ZCk7CisrfQorKworIHZvaWQgdHN0X1FGb250RGF0YWJhc2U6OmNvbmRlbnNlZEZvbnRXaWR0aE5v Rm9udE1lcmdpbmcoKQorIHsKKyAgICAgaW50IHJlZ3VsYXJGb250SWQgPSBRRm9udERhdGFiYXNl OjphZGRBcHBsaWNhdGlvbkZvbnQobV90ZXN0Rm9udCk7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rl c3RzL2F1dG8vbmV0d29yay9hY2Nlc3MvcW5ldHdvcmtyZXBseS90c3RfcW5ldHdvcmtyZXBseS5j cHAgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL2FjY2Vzcy9xbmV0d29ya3JlcGx5L3RzdF9x bmV0d29ya3JlcGx5LmNwcAoraW5kZXggM2Q0YTA5NGM0My4uYjQyM2UxMWE5OSAxMDA2NDQKKy0t LSBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvYWNjZXNzL3FuZXR3b3JrcmVwbHkvdHN0X3Fu ZXR3b3JrcmVwbHkuY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9uZXR3b3JrL2FjY2Vzcy9x bmV0d29ya3JlcGx5L3RzdF9xbmV0d29ya3JlcGx5LmNwcAorQEAgLTI4MSw2ICsyODEsNyBAQCBw cml2YXRlIFFfU0xPVFM6CisgICAgIHZvaWQgaW9HZXRGcm9tRmlsZVNwZWNpYWwoKTsKKyAgICAg dm9pZCBpb0dldEZyb21GaWxlX2RhdGEoKTsKKyAgICAgdm9pZCBpb0dldEZyb21GaWxlKCk7Cisr ICAgIHZvaWQgaW9HZXRGcm9tRmlsZVVybCgpOworICAgICB2b2lkIGlvR2V0RnJvbUZ0cF9kYXRh KCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRnRwKCk7CisgICAgIHZvaWQgaW9HZXRGcm9tRnRwV2l0 aFJldXNlKCk7CitAQCAtMzMwMCw2ICszMzAxLDE4IEBAIHZvaWQgdHN0X1FOZXR3b3JrUmVwbHk6 OmlvR2V0RnJvbUZpbGUoKQorICAgICBRQ09NUEFSRShyZWFkZXIuZGF0YSwgZGF0YSk7CisgfQor IAorK3ZvaWQgdHN0X1FOZXR3b3JrUmVwbHk6OmlvR2V0RnJvbUZpbGVVcmwoKQorK3sKKysgICAg Ly8gVGhpcyBpbW1lZGlhdGVseSBmYWlscyBvbiBub24td2luZG93cyBwbGF0Zm9ybXM6CisrICAg IFFOZXR3b3JrUmVxdWVzdCByZXF1ZXN0KFFVcmwoImZpbGU6Ly91bmMtc2VydmVyL3NvbWUvcGF0 aCIpKTsKKysgICAgUU5ldHdvcmtSZXBseVB0ciByZXBseShtYW5hZ2VyLmdldChyZXF1ZXN0KSk7 CisrICAgIFFTaWduYWxTcHkgZmluaXNoZWRTcHkocmVwbHkuZ2V0KCksICZRTmV0d29ya1JlcGx5 OjpmaW5pc2hlZCk7CisrICAgIC8vIFFUQlVHLTEwNTYxODogVGhpcyB3b3VsZCwgb24gbm9uLVdp bmRvd3MgcGxhdGZvcm1zLCBuZXZlciBoYXBwZW4gYmVjYXVzZSB0aGUgc2lnbmFsCisrICAgIC8v IHdhcyBlbWl0dGVkIGJlZm9yZSB0aGUgY29uc3RydWN0b3IgZmluaXNoZWQsIGxlYXZpbmcgbm8g Y2hhbmNlIGF0IGFsbCB0byBjb25uZWN0IHRvIHRoZQorKyAgICAvLyBzaWduYWwKKysgICAgUVZF UklGWShmaW5pc2hlZFNweS53YWl0KCkpOworK30KKysKKyB2b2lkIHRzdF9RTmV0d29ya1JlcGx5 Ojppb0dldEZyb21GdHBfZGF0YSgpCisgeworICAgICBRVGVzdDo6YWRkQ29sdW1uPFFTdHJpbmc+ KCJmaWxlTmFtZSIpOworZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3Ns L3Fzc2xzb2NrZXQvY2VydHMvZmx1a2UuY2VydCBiL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsv c3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2UuY2VydAoraW5kZXggMDY5ZmE2YjM0MS4uNGNjNGQ5 YTVlYSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsvc3NsL3Fzc2xzb2Nr ZXQvY2VydHMvZmx1a2UuY2VydAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vbmV0d29yay9zc2wv cXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5jZXJ0CitAQCAtMSw3NSArMSwzNCBAQAorLUNlcnRpZmlj YXRlOgorLSAgICBEYXRhOgorLSAgICAgICAgVmVyc2lvbjogMyAoMHgyKQorLSAgICAgICAgU2Vy aWFsIE51bWJlcjogMCAoMHgwKQorLSAgICAgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMVdp dGhSU0FFbmNyeXB0aW9uCistICAgICAgICBJc3N1ZXI6IEM9Tk8sIFNUPU9zbG8sIEw9TnlkYWxl biwgTz1Ob2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcyksIE9VPURl dmVsb3BtZW50LCBDTj1mbHVrZS50cm9sbC5uby9lbWFpbEFkZHJlc3M9YWhhbnNzZW5AdHJvbGx0 ZWNoLmNvbQorLSAgICAgICAgVmFsaWRpdHkKKy0gICAgICAgICAgICBOb3QgQmVmb3JlOiBEZWMg IDQgMDE6MTA6MzIgMjAwNyBHTVQKKy0gICAgICAgICAgICBOb3QgQWZ0ZXIgOiBBcHIgMjEgMDE6 MTA6MzIgMjAzNSBHTVQKKy0gICAgICAgIFN1YmplY3Q6IEM9Tk8sIFNUPU9zbG8sIE89Tm9raWEg Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLCBPVT1EZXZlbG9wbWVudCwg Q049Zmx1a2UudHJvbGwubm8KKy0gICAgICAgIFN1YmplY3QgUHVibGljIEtleSBJbmZvOgorLSAg ICAgICAgICAgIFB1YmxpYyBLZXkgQWxnb3JpdGhtOiByc2FFbmNyeXB0aW9uCistICAgICAgICAg ICAgUlNBIFB1YmxpYyBLZXk6ICgxMDI0IGJpdCkKKy0gICAgICAgICAgICAgICAgTW9kdWx1cyAo MTAyNCBiaXQpOgorLSAgICAgICAgICAgICAgICAgICAgMDA6YTc6Yzg6YTA6NGE6YzQ6MTk6MDU6 MWI6NjY6YmE6MzI6ZTI6ZDI6ZjE6CistICAgICAgICAgICAgICAgICAgICAxYzo2ZjoxNzo4Mjpl NDozOToyZTowMTo1MTo5MDpkYjowNDozNDozMjoxMToKKy0gICAgICAgICAgICAgICAgICAgIDIx OmMyOjBkOjZmOjU5OmQ4OjUzOjkwOjU0OjNmOjgzOjhmOmE5OmQzOmIzOgorLSAgICAgICAgICAg ICAgICAgICAgZDU6ZWU6MWE6OWI6ODA6YWU6YzM6MjU6Yzk6NWU6YTU6YWY6NGI6NjA6MDU6Cist ICAgICAgICAgICAgICAgICAgICBhYTphMDpkMTo5MTowMToxZjpjYTowNDo4MzplMzo1ODoxYzo5 OTozMjo0NToKKy0gICAgICAgICAgICAgICAgICAgIDg0OjcwOjcyOjU4OjAzOjk4OjRhOjYzOjhi OjQxOmY1OjA4OjQ5OmQyOjkxOgorLSAgICAgICAgICAgICAgICAgICAgMDI6NjA6NmI6ZTQ6NjQ6 ZmU6ZGQ6YTA6YWE6NzQ6MDg6ZTk6MzQ6NGM6OTE6CistICAgICAgICAgICAgICAgICAgICA1Zjox MjozZDozNzo0ZDo1NDoyYzphZDo3Zjo1Yjo5ODo2MDozNjowMjo4YzoKKy0gICAgICAgICAgICAg ICAgICAgIDNiOmY2OjQ1OmYzOjI3OjZhOjliOjk0OjlkCistICAgICAgICAgICAgICAgIEV4cG9u ZW50OiA2NTUzNyAoMHgxMDAwMSkKKy0gICAgICAgIFg1MDl2MyBleHRlbnNpb25zOgorLSAgICAg ICAgICAgIFg1MDl2MyBCYXNpYyBDb25zdHJhaW50czogCistICAgICAgICAgICAgICAgIENBOkZB TFNFCistICAgICAgICAgICAgTmV0c2NhcGUgQ29tbWVudDogCistICAgICAgICAgICAgICAgIE9w ZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlCistICAgICAgICAgICAgWDUwOXYzIFN1YmplY3Qg S2V5IElkZW50aWZpZXI6IAorLSAgICAgICAgICAgICAgICAyMTo4NTowNDozRDoyMzowMTo2NjpF NTpGNzo5RjoxQTo4NDoyNDo4QTpBRjowQTo3OTpGNDpFNTpBQworLSAgICAgICAgICAgIFg1MDl2 MyBBdXRob3JpdHkgS2V5IElkZW50aWZpZXI6IAorLSAgICAgICAgICAgICAgICBEaXJOYW1lOi9D PU5PL1NUPU9zbG8vTD1OeWRhbGVuL089Tm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz aWRpYXJ5KC1pZXMpL09VPURldmVsb3BtZW50L0NOPWZsdWtlLnRyb2xsLm5vL2VtYWlsQWRkcmVz cz1haGFuc3NlbkB0cm9sbHRlY2guY29tCistICAgICAgICAgICAgICAgIHNlcmlhbDo4RTpBODpC NDpFODo5MTpCNzo1NDoyRQorLQorLSAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJT QUVuY3J5cHRpb24KKy0gICAgICAgIDZkOjU3OjVmOmQxOjA1OjQzOmYwOjYyOjA1OmVjOjJhOjcx OmE1OmRjOjE5OjA4OmYyOmM0OgorLSAgICAgICAgYTY6YmQ6YmI6MjU6ZDk6Y2E6ODk6MDE6MGU6 ZTQ6Y2Y6MWY6YzE6OGM6Yzg6MjQ6MTg6MzU6CistICAgICAgICA1Mzo1OTo3YjpjMDo0MzpiNDoz MjplNjo5ODpiMjphNjplZjoxNTowNTowYjo0ODo1ZjplMToKKy0gICAgICAgIGEwOjBjOjk3OmE5 OmExOjc3OmQ4OjM1OjE4OjMwOmJjOmE5OjhmOmQzOmI3OjU0OmM3OmYxOgorLSAgICAgICAgYTk6 OWU6NWQ6ZTY6MTk6YmY6ZjY6M2M6NWI6MmI6ZDg6ZTQ6M2U6NjI6MTg6ODg6OGI6ZDM6CistICAg ICAgICAyNDplMTo0MDo5YjowYzplNjoyOToxNjo2MjphYjplYTowNToyNDo3MDozNjphYTo1NTo5 MzoKKy0gICAgICAgIGVmOjAyOjgxOjFiOjIzOjEwOmEyOjA0OmViOjU2Ojk1Ojc1OmZjOmY4Ojk0 OmIxOjVkOjQyOgorLSAgICAgICAgYzU6M2Y6MzY6NDQ6ODU6NWQ6M2E6MmU6OTA6NDY6OGE6YTI6 Yjk6NmY6ODc6YWU6MGM6MTU6CistICAgICAgICA0MDoxOTozMTo5MDpmYzozYjoyNTpiYjphZTpm MTo2NjoxMzowZDo4NTo5MDpkOTo0OTozNDoKKy0gICAgICAgIDhmOmYyOjVkOmY5OjdhOmRiOjRk OjVkOjI3OmY2Ojc2OjlkOjM1OjhjOjA2OmE2OjRjOmEzOgorLSAgICAgICAgYjE6YjI6YjY6NmY6 MWQ6ZDc6YTM6MDA6ZmQ6NzI6ZWI6OWU6ZWE6NDQ6YTE6YWY6MjE6MzQ6CistICAgICAgICA3ZDpj Nzo0MjplMjo0OTo5MToxOTo4YjpjMDphZDpiYTo4Mjo4MDphODo3MTo3MDpmNDozNToKKy0gICAg ICAgIDMxOjkxOjYzOjg0OjIwOjk1OmU5OjYwOmFmOjY0OjhiOmNjOmZmOjNkOjhhOjc2Ojc0OjNk OgorLSAgICAgICAgYzg6NTU6NmQ6ZTQ6OGU6YzM6MmI6MWM6ZTg6NDI6MTg6YWU6OWY6ZTY6NmI6 OWM6MzQ6MDY6CistICAgICAgICBlYzo2YTpmMjpjMworIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUt LS0tLQorLU1JSUVFekNDQXZ1Z0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRVUZBRENCbkRFTE1B a0dBMVVFQmhNQ1RrOHgKKy1EVEFMQmdOVkJBZ1RCRTl6Ykc4eEVEQU9CZ05WQkFjVEIwNTVaR0Zz Wlc0eEZqQVVCZ05WQkFvVERWUnliMnhzCistZEdWamFDQkJVMEV4RkRBU0JnTlZCQXNUQzBSbGRt VnNiM0J0Wlc1ME1SY3dGUVlEVlFRREV3NW1iSFZyWlM1MAorLWNtOXNiQzV1YnpFbE1DTUdDU3FH U0liM0RRRUpBUllXWVdoaGJuTnpaVzVBZEhKdmJHeDBaV05vTG1OdmJUQWUKKy1GdzB3TnpFeU1E UXdNVEV3TXpKYUZ3MHpOVEEwTWpFd01URXdNekphTUdNeEN6QUpCZ05WQkFZVEFrNVBNUTB3Cist Q3dZRFZRUUlFd1JQYzJ4dk1SWXdGQVlEVlFRS0V3MVVjbTlzYkhSbFkyZ2dRVk5CTVJRd0VnWURW UVFMRXd0RQorLVpYWmxiRzl3YldWdWRERVhNQlVHQTFVRUF4TU9abXgxYTJVdWRISnZiR3d1Ym04 d2daOHdEUVlKS29aSWh2Y04KKy1BUUVCQlFBRGdZMEFNSUdKQW9HQkFLZklvRXJFR1FVYlpyb3k0 dEx4SEc4WGd1UTVMZ0ZSa05zRU5ESVJJY0lOCistYjFuWVU1QlVQNE9QcWRPejFlNGFtNEN1d3lY SlhxV3ZTMkFGcXFEUmtRRWZ5Z1NENDFnY21USkZoSEJ5V0FPWQorLVNtT0xRZlVJU2RLUkFtQnI1 R1QrM2FDcWRBanBORXlSWHhJOU4wMVVMSzEvVzVoZ05nS01PL1pGOHlkcW01U2QKKy1BZ01CQUFH amdnRWFNSUlCRmpBSkJnTlZIUk1FQWpBQU1Dd0dDV0NHU0FHRytFSUJEUVFmRmgxUGNHVnVVMU5N CistSUVkbGJtVnlZWFJsWkNCRFpYSjBhV1pwWTJGMFpUQWRCZ05WSFE0RUZnUVVJWVVFUFNNQlp1 WDNueHFFSklxdgorLUNubjA1YXd3Z2JzR0ExVWRJd1NCc3pDQnNLR0JvcVNCbnpDQm5ERUxNQWtH QTFVRUJoTUNUazh4RFRBTEJnTlYKKy1CQWdUQkU5emJHOHhFREFPQmdOVkJBY1RCMDU1WkdGc1pX NHhGakFVQmdOVkJBb1REVlJ5YjJ4c2RHVmphQ0JCCistVTBFeEZEQVNCZ05WQkFzVEMwUmxkbVZz YjNCdFpXNTBNUmN3RlFZRFZRUURFdzVtYkhWclpTNTBjbTlzYkM1dQorLWJ6RWxNQ01HQ1NxR1NJ YjNEUUVKQVJZV1lXaGhibk56Wlc1QWRISnZiR3gwWldOb0xtTnZiWUlKQUk2b3RPaVIKKy10MVF1 TUEwR0NTcUdTSWIzRFFFQkJRVUFBNElCQVFCdFYxL1JCVVB3WWdYc0tuR2wzQmtJOHNTbXZic2wy Y3FKCistQVE3a3p4L0JqTWdrR0RWVFdYdkFRN1F5NXBpeXB1OFZCUXRJWCtHZ0RKZXBvWGZZTlJn d3ZLbVAwN2RVeC9HcAorLW5sM21HYi8yUEZzcjJPUStZaGlJaTlNazRVQ2JET1lwRm1LcjZnVWtj RGFxVlpQdkFvRWJJeENpQk90V2xYWDgKKy0rSlN4WFVMRlB6WkVoVjA2THBCR2lxSzViNGV1REJW QUdUR1EvRHNsdTY3eFpoTU5oWkRaU1RTUDhsMzVldHROCistWFNmMmRwMDFqQWFtVEtPeHNyWnZI ZGVqQVAxeTY1N3FSS0d2SVRSOXgwTGlTWkVaaThDdHVvS0FxSEZ3OURVeAorLWtXT0VJSlhwWUs5 a2k4ei9QWXAyZEQzSVZXM2tqc01ySE9oQ0dLNmY1bXVjTkFic2F2TEQKKytNSUlGNnpDQ0E5T2dB d0lCQWdJVWZvOWFtSnRKR1dxV0U2ZitTa0FPODV6a0dyNHdEUVlKS29aSWh2Y05BUUVMCisrQlFB d2dZTXhDekFKQmdOVkJBWVRBazVQTVEwd0N3WURWUVFJREFSUGMyeHZNUTB3Q3dZRFZRUUhEQVJQ YzJ4dgorK01SY3dGUVlEVlFRS0RBNVVhR1VnVVhRZ1EyOXRjR0Z1ZVRFTU1Bb0dBMVVFQ3d3RFVp WkVNUkl3RUFZRFZRUUQKKytEQWxJTWlCVVpYTjBaWEl4R3pBWkJna3Foa2lHOXcwQkNRRVdERzFw Ym1sdGFVQnhkQzVwYnpBZ0Z3MHlNREV3CisrTWpZeE1qQXhNekZhR0E4eU1USXdNVEF3TWpFeU1E RXpNVm93Z1lNeEN6QUpCZ05WQkFZVEFrNVBNUTB3Q3dZRAorK1ZRUUlEQVJQYzJ4dk1RMHdDd1lE VlFRSERBUlBjMnh2TVJjd0ZRWURWUVFLREE1VWFHVWdVWFFnUTI5dGNHRnUKKytlVEVNTUFvR0Ex VUVDd3dEVWlaRU1SSXdFQVlEVlFRRERBbElNaUJVWlhOMFpYSXhHekFaQmdrcWhraUc5dzBCCisr Q1FFV0RHMXBibWx0YVVCeGRDNXBiekNDQWlJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dJUEFEQ0NB Z29DZ2dJQgorK0FPaVVwNStFNGJsb3VLSDdxK3JWTlI4Tm9ZWDJYa0JXK3ErcnB5MXp1NXNzUlN6 YnF4QWpEeDlka2h0N1FsbmYKKytWbERUMDBKdnBPV2RldVBvbjU5MTVlZFFSc1k0VW5sNm1LSDI5 cmEzT3RVYTEveUNKWHNHVkpUS0NqN2s0QnhiCisrNW1aemIvZlRsWm50TUxkVElCTWZVYnc2MkZL aXIxV2pLSWNKOWZDb0c4SmFHZUtWTzRSaDVwMGV6ZDRVVVVJZAorK3IxQlhsNU5xZHF5MnZUTXNF RG5qT3NEM2Vna3Y4STJTS040TzZuL0Mzd1dZcE1PV1laa0dvWmlLejdySnMvaS8KKytlejdic1Y3 Smx3ZHpUbGhwSnprY09TVkZCUDZKbEVPeFROTnhaMXd0S3k3UHRaR21zU1NBVHEyZTYrYnczOEFl CisrT3AwWG56enFjR2p0RERvZkJtVDdPRnpaV2pTOVZaUzYrRE9PZTJRSFdsZTFuQ0hjSHlINGt1 NklSbHNyOXhrUgorK05BSWxPZm52SEh4cUpVZW5vZWFaNG9RRGpDQktTMUtYeWdKTy90TDdCTFRR Vm4veEsxRW1QdktObmp6V2s0dFIKKytQbmliVWhoczU2MzVxcE9VL1lQcUZCaDFKalZydVpic1dj REFoUmNldzB1eE9OWE9hOUUrNGx0dFE5eVNZYTFBCisrTHZXcUp1QVg3Z3UyQnNCTUx5cWZtODEx WW5BN0NJRk15TytIbHFta0xGZnY1TC94SVJBWFI3bDI2WUdPMFZ3WAorK0NHak1mejROVlBNTWtl NG5CN3FhOU5rcFhRQlFLTW1zM1F6ZDVKVzBIeTlSdWo1TzhHUGNGWm1WMHR3amQxdUoKKytQRC9j QWprV0xhWGpkTnNKMTZRV2MybmdoUVJTNkhZcUtSWDZqK0NYT3h1cEFnTUJBQUdqVXpCUk1CMEdB MVVkCisrRGdRV0JCUlNDT1U1OGo5Tkpaa01hbXQ2MjNxeUNyaE4zVEFmQmdOVkhTTUVHREFXZ0JS U0NPVTU4ajlOSlprTQorK2FtdDYyM3F5Q3JoTjNUQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BMEdD U3FHU0liM0RRRUJDd1VBQTRJQ0FRQ3EKKytxNGp4c1dlTkR2NU5xMTRoSnRGOUhCK1pMNjR6Y1p0 UmpKUDFZZ05zMFFwcEtJQ21qUE9MMm5JTUdtSS9qS3JzCisrMGVHQUwvOVhYTlZIUHhtMU9QT25j dmltTU1tVTZlbVpmcE1kRXRUZktQNDMrUGc5SGdLUmpMb1FwNDA2dkdlUQorKzhraS9tYkJockl0 VlBnRW0zdHUyQUZBMDJYVFlpK1l4Q0k5a1JaTEdrTTNGYmd0T3VUTFBsMFo5eStraVBjOUYKKyt1 Q1NDMDNhbkJFcXYrdkRTSTgrd09EeW1RL0lKM0p5ejFseElSRGZwNHFBZWtteTBqVTJjOTFWT0hI RW1PbXFxCisra3F5Z0dGUmR3YmU5OW05eVA2M3I2cTBiNUszWDJVbko2Ym5zMGhtVHdUaFl3cFZQ WExVOGpkYVRkZGJNdWtOMgorKy9FZjk2VHN3OG5XT0VPUE15U0hPVElQZ3d5WlJwMjZiMGtBOUVt aEx3T1A0MDFTeFhWUUNtU1JtdHdOYWdtdGcKKytqSkttWm9ZQk4rLy9ENDVpYks4ejZRMG9PbTlQ K1doZi91VVhlaGNSeEJ4eVYzeHo3azB3S0dRYkhqL2Rkd2N5CisrSVVvSU40bHJBbGliK2xLMTcw a1RLTjM1MlBEbXJwbzJnbUl6UEVzZnVyS0FJTVNlbERsNkgra2loMTZCdFo4eQorK056NmZoOVNv cXJnM09TQXdhcmU4cHhWN2s1MWNyQk1vUExONzhLb1JWOE1GQ0s0SzdGZGRxNHJSSVNxNmhpWHEK KytyMW5zam9FUHVLTTlodXBybVpWWmU5dDVZY0RhMkkrd2IzSWlFM3V3cFpiQWRhTER5UTVuNkYv cXBzaUlrWlhuCisrZ3RjRjdvcXBHNW9ZcndDY1o1M3kvZXpVZ1VnN1BsU3oyWHdBR3ZRdGdnPT0K KyAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1 dG8vbmV0d29yay9zc2wvcXNzbHNvY2tldC9jZXJ0cy9mbHVrZS5rZXkgYi9xdGJhc2UvdGVzdHMv YXV0by9uZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmtleQoraW5kZXggOWQxNjY0 ZDYwOS4uMzM3Y2U1NDFhNiAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL25ldHdvcmsv c3NsL3Fzc2xzb2NrZXQvY2VydHMvZmx1a2Uua2V5CisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by9u ZXR3b3JrL3NzbC9xc3Nsc29ja2V0L2NlcnRzL2ZsdWtlLmtleQorQEAgLTEsMTUgKzEsNTIgQEAK Ky0tLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tCistTUlJQ1hBSUJBQUtCZ1FDbnlLQkt4 QmtGRzJhNk11TFM4Unh2RjRMa09TNEJVWkRiQkRReUVTSENEVzlaMkZPUQorLVZEK0RqNm5UczlY dUdwdUFyc01seVY2bHIwdGdCYXFnMFpFQkg4b0VnK05ZSEpreVJZUndjbGdEbUVwamkwSDEKKy1D RW5Ta1FKZ2ErUmsvdDJncW5RSTZUUk1rVjhTUFRkTlZDeXRmMXVZWURZQ2pEdjJSZk1uYXB1VW5R SURBUUFCCistQW9HQU5GekxrYW5UZVNHTkZNMHV0dEJpcEZUOUY0YTAwZHFIejZKbk83elhBVDI2 STVyOHNVMXBxUUJiNnVMegorLS8rUXo1WndrOFJVQVFjc01SZ0pldHVQUVViMEpaakY2RHV2MjRo TmF6cVhCQ3U3QVp6VWVuamFmd21LQy84cmkKKy1LcFgzZlR3cXpmemkvL0ZLR2diWFE4MHl5a1NT bGlETDNrbi9kckFUeHNMQ2dRRUNRUURYaEVGV0xKMHZWWjFzCistMUVrZiszTklURStEUjE2WCtM UTRXNnZ5RUhBalRiYU5XdGNUS2RBV0xBMmw2TjRXQUFQWVNpNmF3bSt6TXh4NAorLVZvbVZUc2pk QWtFQXgweitlN25hdExlRmNycnE4cGJVK3dhNlNBUDFWZmhRV0tpdHhMMWU3dS9RTzkwTkNweEUK Ky1vUVlLek1rbW1wT09GalF3RU1BeTFkdkZNYm00TEhsZXdRSkFDL2tzREJhVWNRSEhxamt0Q3Ry VWI4clZqQXlXCistQThsc2Nja2VCMmZFWXlHNUo2ZEpWYVk0Q2xOT09zNXlNRFMyQWZrMUY2SC94 S3Z0US81Q3pJbkEvUUpBVER1YgorLUsrQlBVOGpPOXErZ3B1SWkzVklaZHVwc3NWR21DZ09iVkNI TGFrRzR1TzA0eTlJeVBoVjlsQTl0QUx0b0lmNGMKKy1WSXZ2NWZXR1hCclo0OGtaQVFKQkFKbVZD ZHpReGQ5TFpJNXZ4aWpVQ2o1RUk0ZSt4NURScVZVdnlQOEtDWnJDCistQWlOeW9EUDg1VCtoQlph U1hLM2FZR3BWd2VseWozYnZvMUdyVE53TldMdz0KKy0tLS0tLUVORCBSU0EgUFJJVkFURSBLRVkt LS0tLQorKy0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQorK01JSUpRZ0lCQURBTkJna3Foa2lH OXcwQkFRRUZBQVNDQ1N3d2dna29BZ0VBQW9JQ0FRRG9sS2VmaE9HNWFMaWgKKysrNnZxMVRVZkRh R0Y5bDVBVnZxdnE2Y3RjN3ViTEVVczI2c1FJdzhmWFpJYmUwSlozMVpRMDlOQ2I2VGxuWHJqCisr NkorZmRlWG5VRWJHT0ZKNWVwaWg5dmEydHpyVkd0ZjhnaVY3QmxTVXlnbys1T0FjVytabWMyLzMw NVdaN1RDMworK1V5QVRIMUc4T3RoU29xOVZveWlIQ2ZYd3FCdkNXaG5pbFR1RVllYWRIczNlRkZG Q0hhOVFWNWVUYW5hc3RyMHoKKytMQkE1NHpyQTkzb0pML0NOa2lqZUR1cC93dDhGbUtURGxtR1pC cUdZaXMrNnliUDR2M3MrMjdGZXlaY0hjMDVZCisrYVNjNUhEa2xSUVQraVpSRHNVelRjV2RjTFNz dXo3V1JwckVrZ0U2dG51dm04Ti9BSGpxZEY1ODg2bkJvN1F3NgorK0h3WmsremhjMlZvMHZWV1V1 dmd6am50a0IxcFh0WndoM0I4aCtKTHVpRVpiSy9jWkVUUUNKVG41N3h4OGFpVkgKKytwNkhtbWVL RUE0d2dTa3RTbDhvQ1R2N1Mrd1MwMEZaLzhTdFJKajd5alo0ODFwT0xVVDU0bTFJWWJPZXQrYXFU CisrbFAyRDZoUVlkU1kxYTdtVzdGbkF3SVVYSHNOTHNUalZ6bXZSUHVKYmJVUGNrbUd0UUM3MXFp YmdGKzRMdGdiQQorK1RDOHFuNXZOZFdKd093aUJUTWp2aDVhcHBDeFg3K1MvOFNFUUYwZTVkdW1C anRGY0Z3aG96SDgrRFZUekRKSHUKKytKd2U2bXZUWktWMEFVQ2pKck4wTTNlU1Z0Qjh2VWJvK1R2 QmozQldabGRMY0kzZGJpVHcvM0FJNUZpMmw0M1RiCisrQ2Rla0ZuTnA0SVVFVXVoMktpa1Yrby9n bHpzYnFRSURBUUFCQW9JQ0FGdzFxNnRyNUk0OHZZN0RGK3JYc3VMbgorKzVaVVdFMUlRNmZ6QjRs cjcybkp2LzlFRUduTWdZenQ5UHBNVXNENnZkQ3BCZ1MyQzArNlJIQXJGekp0TkErUk0KKytpSExJ RzdLNzcwMnZleXIveEJ4L013aVNsTWVNdi9YcGtGeFZJNkU2c2tNR0cyczNBTVh4S3ZKVHk1Q3BS eCtJCisrZVFGeUxHK1lhMVgybGdKZXMvcSsvQ3BBSGtPakNPcGNMeVNRQzVOWjc0cTczNFY3blNk bW4rWnMzdFlFaCtPLworK2VpdXdUUC9qNWIzOFRlNXZWVHFEeFRjaUpQbWxqbVhMQ3dhME4xMDBs V2xiY3B2dzhxYnFpVEkySm0zWENiVUUKKytBekhqVzl2bXJGM2NSUzFmWHhLRkdTaHczU1JxbGti eGpmZVdvaThxRFBVQlM0bThMT3I4cUc5V281TmZvbjB6CisrekxQNGJjaTN6SER2VmNhYVpycnNV QnMveVpiZytEZ2thMURtWDdla21lY2NyMnlUZEtERmdQdXBZVXl4VmJUbAorK2E5WkxKeXNqRkQ3 cmdCdjFaY2xIb25McDZWYm0rWm9UcXZ0ZW80aWtBeTZMOVJ0QldKMjNYRUszNFBrUC8rYzUKKysy dldaYU9ybmpTZUJIYkZjZThjZEpTeHFXcFArZVNDSTVJOVhiRHJZRklzUS9ncUtndHpES3kyaWhK Mlk4U1RMCisreU80aHlGUEZqeGMrR2c0L1AyUHBtVDVDWTJ0eTQ0TTBCV3MrSkdXOTZDSlBycnBs ZjJsbVFVUUpqNUxaWTY2WAorK1ovNEM5TDdaWXRLWiticzVTdlU0NnlXdWdBdlFaWDIyWG05eExY V3lWWFJkeDNiaiszTTNmRG5GOWRpL3pkYmgKKytDZ0x4N29XUE5yWGM3RkNham5uOUFvSUJBUUQ1 Rk1Zd1JwdzlOV1Q5V0R4UXd4K2NTSTRJY2JkODhCeVRXNjNTCisrTHplUndaQTBKOS9TZndPK2FC UnVwemM5R2tHWENpWmNHTXczQUdzQ3RpZzh5Rmx3OEU1S256TjdLbGZ0RE1uTQorKzlOVXh4emxS OFZ3S3lMblpmRzdzRFRsMDU3WmxVdWpucWhtdC9GOEY3ZEl5N0ZWTzFkRS84bm5nQStGWVRDT0cK KytVWmRHand5QkRsRE0wSkpkVVdHWTN4c2x1dGNwQ0RONW16U1RLank5ZHJNdkltQXNoUmF3eFJG NldCcG43dnIyCisrbkM2dmNpcWZ4MU16eDF2eWswSm0waWxheWREZExNQURqdC9pTDROa3IwQkVz NGsrVXpRaUtEd3A4Z3U3YWJRMQorK2VCZnhkOUlhcjRodFFhMkkxRXdsNlAwMUcvcStaWXdnSGhK OVJWbjRBeFFYZWZJTEFvSUJBUUR2Q291T1JkUVgKKytDOHdzeXA3TXdYbEYvM05RZU5ONS8rQjJt aGJ4ckJPZjdQbU1DWExua1JXY2p3SnR6eXBXRnFKMHNxYWkvMiswCisrYnFiTWNqWDVtYVQ4c3RU MnNobDN6WGUvRWp0MmUzVEJZcGMxdHl1c2VzOEtiNUJNVThodTZ0VGQzRzJDTVhwRAorK2RUNkRW ZW1KWkNUdHdqOWFCTkl4U2l6dmxnTW9sSm5DcHpoUG5sZkhTSTZFK2czbS9MVFRvM0h3YmpNU3cv VXEKKytpcmdqT3BJMndTQkI2TFpQU2dqdmZjWVBSeVdVazE2TDRBNXVTWDBjQURub3ZERkxhNS9o MHdKdk4vT29DU1FnCisrckxDWEc1RTE4RXlMNVdjNThCQ1kxWnZ4bWpHM2xRdGdQeFl1Mkp3YzM2 Ui95L0pLbHhXNXN1RVI1Wk5wYmJENAorK3VPeVR0MlZ4TVEyYkFvSUJBUUM1K016UkZxZG8vQWpm TDVZNUpyYmZWVHpYQ1REYTA5eENHZDE2WlU2MFFUV04KKysrNGVkL3IrbzFzVUtxVWNSRkIyTXpF TS8yRFFCalFwWkIvQ2JFV3ZXYTFYSldYeHlwWGJvd3ZlWlUrUXFPbm1OCisrdVF2ajhXTHlBM28r UE5GOWU5UXZhdXdDckhwbjhWcHhidFBXdWFZb0tuVUZyZUZaWlF4SGhQR3hSQklTMkpPWgorK2VE clQ4WmFXbmtDa2gxQVpwNXNtUTcxTE9wclNsbUtyZzRqZDFHakNWTXhRUjVONUtYYnR5djBPVENa L1VGcUsKKysyYVJCc01QeUpna2FCQ2hrWlBMUmNLd2MrL3dsUVJ4MWZIUWIxNEROVEFwTXhvWEZP N2VPd3FtT2twQXQ5aXlsCisrU0JJd29TMFVVSTVhYjg4K2JCbVhOdktjdUZkTnVRNG5vd1RKVW45 cEFvSUJBRE1Oa0lMQlhTdlM1RGVJeXVPMgorK1NwMXRrb1pVVis1TmZQWTNzTURLM0tJaWJhVy8r dCtFT0JabzRMN3RLUUNiOHZSemwyMW1tc2Z4ZmdSYVBEYmoKKyszcjN0djlnMGI0WUx4eEJ5NTJw RnNjai9zb1hSYWkxN1NTN1Vad0EyUUsrWHpnRFliRGNMTkM2bUlzVFFHNEd4CisrZHNXazMvenMz S3VVU1FhZWhtd3JXSytmSVVLMzhjMXBMSzh2N0xveHJMa3F4bEh3WjA0UnRoSHc4S1R0aEg3WAor K1BubDFKMExGOENTZU95ZldMU3VQVWZrVDBHRXpwdG5OSHBFYmFIZlFNNlI2ZWFHaFZKUEY2QVpt ZTR5NllZZ2cKKyttMmloaFN0MW4wWFZFV3BIWVdqeEZ5M21LMm16NzV1bkZDNExNK05FWTJwMnp1 VVFvQ3c3TmpuWTNRWXJmQ254CisrclJNQ2dnRUFYZVhzTVNMRmpqeXVvTDdpS2JBeG81MkhEL1Aw ZkJveTU4THlSY3dmTlZyMGx2WWFuNHBZRXgrbworK0tpakloOUsxNlBxWFpYS01BOXYwMDNCK3Vs bUY4Yko3U2RkQ1o1Tkd2bkZoVVREZTREZFRLZ3AyUnV3UTNCc2MKKyszc2tQSURiaFZFVHlPTEN0 eXMzNFVTSHJxOFUvMERsR1kzZUxSZnh3OUduYkt4U0JHYS9LRXUvcVFMUE5VbzUwCisrN3hIWkRn N0dLZUMza3FOSmVxS005cmtwMFZ6SUdrRW5hRDkxMjdMZU5EbUVSRGZmdHhKekZvQy9USHZVQkxm VQorKzZTdXMyWll3UkU4VkZ2S0MzMFE0NXQvYzU0WDNJdWhZdkF1aUN1VG15ZkU0cnV5enlPd0t6 aFVrZWVMcTFBUFgKKytnMHZlRmJ5ZnpsSjBxOHF6RC9pZmZxcUlhMlpTbVE9PQorKy0tLS0tRU5E IFBSSVZBVEUgS0VZLS0tLS0KK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by9vdGhlci9x YWNjZXNzaWJpbGl0eWxpbnV4L3RzdF9xYWNjZXNzaWJpbGl0eWxpbnV4LmNwcCBiL3F0YmFzZS90 ZXN0cy9hdXRvL290aGVyL3FhY2Nlc3NpYmlsaXR5bGludXgvdHN0X3FhY2Nlc3NpYmlsaXR5bGlu dXguY3BwCitpbmRleCA3YmEzNzE1ZTEzLi43NTJhYTEyMmY2IDEwMDY0NAorLS0tIGEvcXRiYXNl L3Rlc3RzL2F1dG8vb3RoZXIvcWFjY2Vzc2liaWxpdHlsaW51eC90c3RfcWFjY2Vzc2liaWxpdHls aW51eC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL290aGVyL3FhY2Nlc3NpYmlsaXR5bGlu dXgvdHN0X3FhY2Nlc3NpYmlsaXR5bGludXguY3BwCitAQCAtMTc5LDYgKzE3OSw3IEBAIHZvaWQg dHN0X1FBY2Nlc3NpYmlsaXR5TGludXg6OmluaXRUZXN0Q2FzZSgpCisgICAgIFFWRVJJRlkoIWFk ZHJlc3MuaXNFbXB0eSgpKTsKKyAKKyAgICAgbV93aW5kb3cgPSBuZXcgQWNjZXNzaWJsZVRlc3RX aW5kb3coKTsKKysgICAgbV93aW5kb3ctPnNldE9iamVjdE5hbWUoIm1haW5XaW5kb3ciX0wxKTsK KyAgICAgbV93aW5kb3ctPnNob3coKTsKKyAKKyAgICAgUVZFUklGWShRVGVzdDo6cVdhaXRGb3JX aW5kb3dFeHBvc2VkKG1fd2luZG93KSk7CitAQCAtMjM2LDggKzIzNywxMSBAQCBib29sIGhhc1N0 YXRlKFFEQnVzSW50ZXJmYWNlICppbnRlcmZhY2UsIEF0c3BpU3RhdGVUeXBlIHN0YXRlKQorIHZv aWQgdHN0X1FBY2Nlc3NpYmlsaXR5TGludXg6OnRlc3RMYWJlbCgpCisgeworICAgICBRTGFiZWwg KmwgPSBuZXcgUUxhYmVsKG1fd2luZG93KTsKKysgICAgbC0+c2V0T2JqZWN0TmFtZSgidGhlT2Jq ZWN0TmFtZSJfTDEpOworICAgICBsLT5zZXRUZXh0KCJIZWxsbyBBMTF5Iik7CisgICAgIG1fd2lu ZG93LT5hZGRXaWRnZXQobCk7CisrICAgIGF1dG8gYTExeUVtcHR5ID0gbmV3IFFMYWJlbChtX3dp bmRvdyk7CisrICAgIG1fd2luZG93LT5hZGRXaWRnZXQobCk7CisgCisgICAgIC8vIEFwcGxpY2F0 aW9uCisgICAgIFFDT01QQVJFKGdldFBhcmVudChtYWluV2luZG93KSwgUUxhdGluMVN0cmluZyhB VFNQSV9EQlVTX1BBVEhfUk9PVCkpOworQEAgLTI0OSw2ICsyNTMsOCBAQCB2b2lkIHRzdF9RQWNj ZXNzaWJpbGl0eUxpbnV4Ojp0ZXN0TGFiZWwoKQorICAgICBRQ09NUEFSRShnZXRDaGlsZHJlbihs YWJlbEludGVyZmFjZSkuY291bnQoKSwgMCk7CisgICAgIFFDT01QQVJFKGxhYmVsSW50ZXJmYWNl LT5jYWxsKFFEQnVzOjpCbG9jaywgIkdldFJvbGVOYW1lIikuYXJndW1lbnRzKCkuZmlyc3QoKS50 b1N0cmluZygpLCBRTGF0aW4xU3RyaW5nKCJsYWJlbCIpKTsKKyAgICAgUUNPTVBBUkUobGFiZWxJ bnRlcmZhY2UtPmNhbGwoUURCdXM6OkJsb2NrLCAiR2V0Um9sZSIpLmFyZ3VtZW50cygpLmZpcnN0 KCkudG9VSW50KCksIDI5dSk7CisrICAgIFFDT01QQVJFKGxhYmVsSW50ZXJmYWNlLT5jYWxsKFFE QnVzOjpCbG9jaywgIkdldEFjY2Vzc2libGVJZCIpLmFyZ3VtZW50cygpLmZpcnN0KCkudG9TdHJp bmcoKSwKKysgICAgICAgICAgICAgUUxhdGluMVN0cmluZygibWFpbldpbmRvdy50aGVPYmplY3RO YW1lIikpOworICAgICBRQ09NUEFSRShnZXRQYXJlbnQobGFiZWxJbnRlcmZhY2UpLCBtYWluV2lu ZG93LT5wYXRoKCkpOworICAgICBRVkVSSUZZKCFoYXNTdGF0ZShsYWJlbEludGVyZmFjZSwgQVRT UElfU1RBVEVfRURJVEFCTEUpKTsKKyAgICAgUVZFUklGWShoYXNTdGF0ZShsYWJlbEludGVyZmFj ZSwgQVRTUElfU1RBVEVfUkVBRF9PTkxZKSk7CitAQCAtMjU2LDcgKzI2MiwxMiBAQCB2b2lkIHRz dF9RQWNjZXNzaWJpbGl0eUxpbnV4Ojp0ZXN0TGFiZWwoKQorICAgICBsLT5zZXRUZXh0KCJOZXcg dGV4dCIpOworICAgICBRQ09NUEFSRShsYWJlbEludGVyZmFjZS0+cHJvcGVydHkoIk5hbWUiKS50 b1N0cmluZygpLCBsLT50ZXh0KCkpOworIAorKyAgICBhdXRvICphMTF5RW1wdHlJbnRlcmZhY2Ug PSBnZXRJbnRlcmZhY2UoY2hpbGRyZW4uYXQoMSksICJvcmcuYTExeS5hdHNwaS5BY2Nlc3NpYmxl Iik7CisrICAgIFFDT01QQVJFKGExMXlFbXB0eUludGVyZmFjZS0+Y2FsbChRREJ1czo6QmxvY2ss ICJHZXRBY2Nlc3NpYmxlSWQiKS5hcmd1bWVudHMoKS5maXJzdCgpLnRvU3RyaW5nKCksCisrICAg ICAgICAgICAgIFFMYXRpbjFTdHJpbmcoIm1haW5XaW5kb3cuUUxhYmVsIikpOworKworICAgICBt X3dpbmRvdy0+Y2xlYXJDaGlsZHJlbigpOworKyAgICBkZWxldGUgYTExeUVtcHR5SW50ZXJmYWNl OworICAgICBkZWxldGUgbGFiZWxJbnRlcmZhY2U7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0YmFz ZS90ZXN0cy9hdXRvL3NxbC9rZXJuZWwvcXNxbHF1ZXJ5L3RzdF9xc3FscXVlcnkuY3BwIGIvcXRi YXNlL3Rlc3RzL2F1dG8vc3FsL2tlcm5lbC9xc3FscXVlcnkvdHN0X3FzcWxxdWVyeS5jcHAKK2lu ZGV4IDc2ZGY2MWM4OTIuLjZkNmQ2NWI3OTEgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0 by9zcWwva2VybmVsL3FzcWxxdWVyeS90c3RfcXNxbHF1ZXJ5LmNwcAorKysrIGIvcXRiYXNlL3Rl c3RzL2F1dG8vc3FsL2tlcm5lbC9xc3FscXVlcnkvdHN0X3FzcWxxdWVyeS5jcHAKK0BAIC0xLDYg KzEsNiBAQAorIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioKKy0qKiBDb3B5cmlnaHQgKEMpIDIw MTYgVGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgUXQgQ29t cGFueSBMdGQuCisgKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworICoq CisgKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRlc3Qgc3VpdGUgb2YgdGhlIFF0IFRvb2xr aXQuCitAQCAtNjgsNiArNjgsOCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHF1ZXJ5X2V4 ZWMoKTsKKyAgICAgdm9pZCBleGVjRXJyb3JSZWNvdmVyeV9kYXRhKCkgeyBnZW5lcmljX2RhdGEo KTsgfQorICAgICB2b2lkIGV4ZWNFcnJvclJlY292ZXJ5KCk7CisrICAgIHZvaWQgcHJlbWF0dXJl RXhlY19kYXRhKCkgeyBnZW5lcmljX2RhdGEoKTsgfQorKyAgICB2b2lkIHByZW1hdHVyZUV4ZWMo KTsKKyAgICAgdm9pZCBmaXJzdF9kYXRhKCkgeyBnZW5lcmljX2RhdGEoKTsgfQorICAgICB2b2lk IGZpcnN0KCk7CisgICAgIHZvaWQgbmV4dF9kYXRhKCkgeyBnZW5lcmljX2RhdGEoKTsgfQorQEAg LTI3NzAsNiArMjc3MiwzNSBAQCB2b2lkIHRzdF9RU3FsUXVlcnk6OmV4ZWNFcnJvclJlY292ZXJ5 KCkKKyAgICAgUVZFUklGWV9TUUwoIHEsIGV4ZWMoKSApOworIH0KKyAKKyt2b2lkIHRzdF9RU3Fs UXVlcnk6OnByZW1hdHVyZUV4ZWMoKQorK3sKKysgICAgUUZFVENIKFFTdHJpbmcsIGRiTmFtZSk7 CisrICAgIC8vIFdlIG9ubHkgd2FudCB0aGUgZW5naW5lIG5hbWUsIGZvciBhZGREYXRhYmFzZSgp OgorKyAgICBpbnQgY3V0ID0gZGJOYW1lLmluZGV4T2YoUUNoYXIoJ0AnKSk7CisrICAgIGlmIChj dXQgPCAwKQorKyAgICAgICAgUVNLSVAoIkZhaWxlZCB0byBwYXJzZSBkYXRhYmFzZSB0eXBlIG91 dCBvZiBuYW1lIik7CisrICAgIGRiTmFtZS50cnVuY2F0ZShjdXQpOworKyAgICBjdXQgPSBkYk5h bWUuaW5kZXhPZihRQ2hhcignXycpKTsKKysgICAgaWYgKGN1dCA+PSAwKQorKyAgICAgICAgZGJO YW1lID0gZGJOYW1lLm1pZChjdXQgKyAxKTsKKysKKysgICAgYXV0byBkYiA9IFFTcWxEYXRhYmFz ZTo6YWRkRGF0YWJhc2UoZGJOYW1lKTsKKysgICAgUVNxbFF1ZXJ5IHEoZGIpOworKworKyAgICBR VGVzdDo6aWdub3JlTWVzc2FnZShRdFdhcm5pbmdNc2csCisrICAgICAgICAgICAgICAgICAgICAg ICAgICJRU3FsRGF0YWJhc2VQcml2YXRlOjpyZW1vdmVEYXRhYmFzZTogY29ubmVjdGlvbiAiCisr ICAgICAgICAgICAgICAgICAgICAgICAgICIncXRfc3FsX2RlZmF1bHRfY29ubmVjdGlvbicgaXMg c3RpbGwgaW4gdXNlLCBhbGwgIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAicXVlcmllcyB3 aWxsIGNlYXNlIHRvIHdvcmsuIik7CisrICAgIFFUZXN0OjppZ25vcmVNZXNzYWdlKFF0V2Fybmlu Z01zZywKKysgICAgICAgICAgICAgICAgICAgICAgICAgIlFTcWxEYXRhYmFzZVByaXZhdGU6OmFk ZERhdGFiYXNlOiBkdXBsaWNhdGUgY29ubmVjdGlvbiBuYW1lICIKKysgICAgICAgICAgICAgICAg ICAgICAgICAgIidxdF9zcWxfZGVmYXVsdF9jb25uZWN0aW9uJywgb2xkIGNvbm5lY3Rpb24gcmVt b3ZlZC4iKTsKKysgICAgYXV0byBvdGhlckRiID0gUVNxbERhdGFiYXNlOjphZGREYXRhYmFzZShk Yk5hbWUpOworKworKyAgICBRVGVzdDo6aWdub3JlTWVzc2FnZShRdFdhcm5pbmdNc2csICJRU3Fs UXVlcnk6OmV4ZWM6IGNhbGxlZCBiZWZvcmUgZHJpdmVyIGhhcyBiZWVuIHNldCB1cCIpOworKyAg ICAvLyBRVEJVRy0xMDAwMzc6IHNob3VsZG4ndCBjcmFzaCAhCisrICAgIFFWRVJJRlkoIXEuZXhl Yygic2VsZWN0IHN0dWZmIGZyb20gVGhlVm9pZCIpKTsKKyt9CisrCisgdm9pZCB0c3RfUVNxbFF1 ZXJ5OjpsYXN0SW5zZXJ0SWQoKQorIHsKKyAgICAgUUZFVENIKCBRU3RyaW5nLCBkYk5hbWUgKTsK K2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by90ZXN0bGliL3FhYnN0cmFjdGl0ZW1tb2Rl bHRlc3Rlci90c3RfcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyLmNwcCBiL3F0YmFzZS90ZXN0cy9h dXRvL3Rlc3RsaWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyL3RzdF9xYWJzdHJhY3RpdGVtbW9k ZWx0ZXN0ZXIuY3BwCitpbmRleCA0YWEzZjhkNjBiLi5kMjA1MGE2MWFhIDEwMDY0NAorLS0tIGEv cXRiYXNlL3Rlc3RzL2F1dG8vdGVzdGxpYi9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIvdHN0X3Fh YnN0cmFjdGl0ZW1tb2RlbHRlc3Rlci5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rlc3Rs aWIvcWFic3RyYWN0aXRlbW1vZGVsdGVzdGVyL3RzdF9xYWJzdHJhY3RpdGVtbW9kZWx0ZXN0ZXIu Y3BwCitAQCAtMTE1LDYgKzExNSwxMCBAQCB2b2lkIHRzdF9RQWJzdHJhY3RJdGVtTW9kZWxUZXN0 ZXI6OnN0YW5kYXJkSXRlbU1vZGVsWmVyb0NvbHVtbnMoKQorICAgICAvLyBRVEJVRy05Mjg4Ngor ICAgICBtb2RlbC5pbnNlcnRSb3dzKDAsIDUpOworICAgICBtb2RlbC5yZW1vdmVSb3dzKDEsIDIp OworKworKyAgICBjb25zdCBRTW9kZWxJbmRleCBwYXJlbnRJbmRleCA9IG1vZGVsLmluZGV4KDAs IDApOworKyAgICBtb2RlbC5pbnNlcnRSb3dzKDAsIDUsIHBhcmVudEluZGV4KTsKKysgICAgbW9k ZWwucmVtb3ZlUm93cygxLCAyLCBwYXJlbnRJbmRleCk7CisgfQorIAorIHZvaWQgdHN0X1FBYnN0 cmFjdEl0ZW1Nb2RlbFRlc3Rlcjo6dGVzdEluc2VydFRocm91Z2hQcm94eSgpCitkaWZmIC0tZ2l0 IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL2FsbG1vY3NfYmFzZWxpbmVfaW4uanNvbiBi L3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy9hbGxtb2NzX2Jhc2VsaW5lX2luLmpzb24KK2lu ZGV4IDEyYTRhMjJhMTkuLmNlNTE4ZTc4ZmIgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0 by90b29scy9tb2MvYWxsbW9jc19iYXNlbGluZV9pbi5qc29uCisrKysgYi9xdGJhc2UvdGVzdHMv YXV0by90b29scy9tb2MvYWxsbW9jc19iYXNlbGluZV9pbi5qc29uCitAQCAtNjY4LDUwICs2Njgs NiBAQAorICAgICAgICAgImlucHV0RmlsZSI6ICJ0YXNrMTkyNTUyLmgiLAorICAgICAgICAgIm91 dHB1dFJldmlzaW9uIjogNjcKKyAgICAgfSwKKy0gICAgeworLSAgICAgICAgImNsYXNzZXMiOiBb CistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAiY2xhc3NOYW1lIjogIklubGluZVNs b3RzV2l0aFRocm93RGVjbGFyYXRpb24iLAorLSAgICAgICAgICAgICAgICAib2JqZWN0IjogdHJ1 ZSwKKy0gICAgICAgICAgICAgICAgInF1YWxpZmllZENsYXNzTmFtZSI6ICJJbmxpbmVTbG90c1dp dGhUaHJvd0RlY2xhcmF0aW9uIiwKKy0gICAgICAgICAgICAgICAgInNsb3RzIjogWworLSAgICAg ICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVi bGljIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJhIiwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAicmV0dXJuVHlwZSI6ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAg fSwKKy0gICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNj ZXNzIjogInB1YmxpYyIsCistICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiYiIsCist ICAgICAgICAgICAgICAgICAgICAgICAgInJldHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAg ICAgICAgICAgIH0sCistICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAg ICAgICAgImFjY2VzcyI6ICJwdWJsaWMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJuYW1l IjogImMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5UeXBlIjogInZvaWQiCist ICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAg ICAgICAgICAgICAgICAgICJhY2Nlc3MiOiAicHVibGljIiwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAibmFtZSI6ICJkIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuVHlwZSI6 ICJ2b2lkIgorLSAgICAgICAgICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAgICAgICAgIHsK Ky0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1YmxpYyIsCistICAgICAgICAg ICAgICAgICAgICAgICAgIm5hbWUiOiAiZSIsCistICAgICAgICAgICAgICAgICAgICAgICAgInJl dHVyblR5cGUiOiAidm9pZCIKKy0gICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICAgICAgInN1cGVyQ2xhc3NlcyI6IFsKKy0gICAgICAgICAgICAg ICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzIjogInB1YmxpYyIsCist ICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiUU9iamVjdCIKKy0gICAgICAgICAgICAg ICAgICAgIH0KKy0gICAgICAgICAgICAgICAgXQorLSAgICAgICAgICAgIH0KKy0gICAgICAgIF0s CistICAgICAgICAiaW5wdXRGaWxlIjogInRhc2sxODk5OTYuaCIsCistICAgICAgICAib3V0cHV0 UmV2aXNpb24iOiA2NworLSAgICB9LAorICAgICB7CisgICAgICAgICAiY2xhc3NlcyI6IFsKKyAg ICAgICAgICAgICB7CitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL21v Yy5wcm8gYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvbW9jLnBybworaW5kZXggYzMyNGIz YThjZC4uNGFjZWI3OGRjMCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21v Yy9tb2MucHJvCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvbW9jLnBybworQEAg LTE1LDcgKzE1LDcgQEAgY3Jvc3NfY29tcGlsZTogREVGSU5FUyArPSBNT0NfQ1JPU1NfQ09NUElM RUQKKyBIRUFERVJTICs9IHVzaW5nLW5hbWVzcGFjZXMuaCBuby1rZXl3b3Jkcy5oIHRhc2s4Nzg4 My5oIGMtY29tbWVudHMuaCBiYWNrc2xhc2gtbmV3bGluZXMuaCBvbGRzdHlsZS1jYXN0cy5oIFwK KyAgICAgICAgICAgIHNsb3RzLXdpdGgtdm9pZC10ZW1wbGF0ZS5oIHFpbnZva2FibGUuaCBuYW1l c3BhY2VkLWZsYWdzLmggdHJpZ3JhcGhzLmggXAorICAgICAgICAgICAgZXNjYXBlcy1pbi1zdHJp bmctbGl0ZXJhbHMuaCBjc3R5bGUtZW51bXMuaCBxcHJpdmF0ZXNsb3RzLmggZ2FkZ2V0d2l0aG5v ZW51bXMuaCBcCistICAgICAgICAgICBkaXItaW4taW5jbHVkZS1wYXRoLmggc2luZ2xlX2Z1bmN0 aW9uX2tleXdvcmQuaCB0YXNrMTkyNTUyLmggdGFzazE4OTk5Ni5oIFwKKysgICAgICAgICAgIGRp ci1pbi1pbmNsdWRlLXBhdGguaCBzaW5nbGVfZnVuY3Rpb25fa2V5d29yZC5oIHRhc2sxOTI1NTIu aCBcCisgICAgICAgICAgICB0YXNrMjM0OTA5LmggdGFzazI0MDM2OC5oIHB1cmUtdmlydHVhbC1z aWduYWxzLmggY3h4MTEtZW51bXMuaCBcCisgICAgICAgICAgICBjeHgxMS1maW5hbC1jbGFzc2Vz LmggXAorICAgICAgICAgICAgY3h4MTEtZXhwbGljaXQtb3ZlcnJpZGUtY29udHJvbC5oIFwKK2Rp ZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by90b29scy9tb2MvdGFzazE4OTk5Ni5oIGIvcXRi YXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9jL3Rhc2sxODk5OTYuaAorZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCBmOTRhMDUxYjNhLi4wMDAwMDAwMDAwCistLS0gYS9xdGJhc2UvdGVzdHMv YXV0by90b29scy9tb2MvdGFzazE4OTk5Ni5oCisrKysgL2Rldi9udWxsCitAQCAtMSw0NyArMCww IEBACistLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKy0qKgorLSoqIENvcHlyaWdodCAoQykgMjAxNiBU aGUgUXQgQ29tcGFueSBMdGQuCistKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5z aW5nLworLSoqCistKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRlc3Qgc3VpdGUgb2YgdGhl IFF0IFRvb2xraXQuCistKioKKy0qKiAkUVRfQkVHSU5fTElDRU5TRTpHUEwtRVhDRVBUJAorLSoq IENvbW1lcmNpYWwgTGljZW5zZSBVc2FnZQorLSoqIExpY2Vuc2VlcyBob2xkaW5nIHZhbGlkIGNv bW1lcmNpYWwgUXQgbGljZW5zZXMgbWF5IHVzZSB0aGlzIGZpbGUgaW4KKy0qKiBhY2NvcmRhbmNl IHdpdGggdGhlIGNvbW1lcmNpYWwgbGljZW5zZSBhZ3JlZW1lbnQgcHJvdmlkZWQgd2l0aCB0aGUK Ky0qKiBTb2Z0d2FyZSBvciwgYWx0ZXJuYXRpdmVseSwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSB0 ZXJtcyBjb250YWluZWQgaW4KKy0qKiBhIHdyaXR0ZW4gYWdyZWVtZW50IGJldHdlZW4geW91IGFu ZCBUaGUgUXQgQ29tcGFueS4gRm9yIGxpY2Vuc2luZyB0ZXJtcworLSoqIGFuZCBjb25kaXRpb25z IHNlZSBodHRwczovL3d3dy5xdC5pby90ZXJtcy1jb25kaXRpb25zLiBGb3IgZnVydGhlcgorLSoq IGluZm9ybWF0aW9uIHVzZSB0aGUgY29udGFjdCBmb3JtIGF0IGh0dHBzOi8vd3d3LnF0LmlvL2Nv bnRhY3QtdXMuCistKioKKy0qKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2FnZQorLSoq IEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVQorLSoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorLSoqIEZvdW5kYXRpb24gd2l0aCBleGNlcHRpb25zIGFz IGFwcGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkdQTDMtRVhDRVBUCistKiogaW5jbHVkZWQg aW4gdGhlIHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2lu ZworLSoqIGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgcmVxdWlyZW1lbnRzIHdpbGwKKy0qKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvZ3BsLTMuMC5odG1sLgorLSoqCistKiogJFFUX0VORF9MSUNFTlNFJAorLSoqCistKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KKy0vLyBpbmxpbmUgZnVuY3Rpb25zIGNhbiBoYXZlIHRocm93IGRl Y2xhcmF0aW9ucworLQorLSNpZm5kZWYgVEFTSzE4OTk5Nl9ICistI2RlZmluZSBUQVNLMTg5OTk2 X0gKKy0KKy0jaW5jbHVkZSA8UU9iamVjdD4KKy0KKy1jbGFzcyBJbmxpbmVTbG90c1dpdGhUaHJv d0RlY2xhcmF0aW9uIDogcHVibGljIFFPYmplY3QKKy17CistICAgIFFfT0JKRUNUCistCistcHVi bGljIHNsb3RzOgorLSAgICB2b2lkIGEoKSB0aHJvdygpIHsgfQorLSAgICB2b2lkIGIoKSBjb25z dCB0aHJvdygpIHsgfQorLSAgICB2b2lkIGMoKSB0aHJvdygpOworLSAgICB2b2lkIGQoKSB0aHJv dyhpbnQpIHsgfQorLSAgICB2b2lkIGUoKSBjb25zdCB0aHJvdyhpbnQsZG91YmxlKSB7IH0KKy19 OworLQorLSNlbmRpZgorZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90 c3RfbW9jLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3Rvb2xzL21vYy90c3RfbW9jLmNwcAoraW5k ZXggYzcxNmFlYWQyMS4uMTVkZDllNDFlNSAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRv L3Rvb2xzL21vYy90c3RfbW9jLmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vdG9vbHMvbW9j L3RzdF9tb2MuY3BwCitAQCAtNjMxLDcgKzYzMSw2IEBAIHB1YmxpYzoKKyBwcml2YXRlIHNsb3Rz OgorICAgICB2b2lkIGluaXRUZXN0Q2FzZSgpOworIAorLSAgICB2b2lkIHNsb3RXaXRoRXhjZXB0 aW9uKCkgdGhyb3coTXlTdHJ1Y3QpOworICAgICB2b2lkIGRvbnRTdHJpcE5hbWVzcGFjZXMoKTsK KyAgICAgdm9pZCBvbGRTdHlsZUNhc3RzKCk7CisgICAgIHZvaWQgd2Fybk9uRXh0cmFTaWduYWxT bG90UXVhbGlmaWFjdGlvbigpOworQEAgLTY3Myw3ICs2NzIsNiBAQCBwcml2YXRlIHNsb3RzOgor ICAgICB2b2lkIHRlbXBsYXRlR3RHdCgpOworICAgICB2b2lkIHFwcml2YXRlc2xvdHMoKTsKKyAg ICAgdm9pZCBxcHJpdmF0ZXByb3BlcnRpZXMoKTsKKy0gICAgdm9pZCBpbmxpbmVTbG90c1dpdGhU aHJvd0RlY2xhcmF0aW9uKCk7CisgICAgIHZvaWQgd2Fybk9uUHJvcGVydHlXaXRob3V0UkVBRCgp OworICAgICB2b2lkIGNvbnN0cnVjdG9ycygpOworICAgICB2b2lkIHR5cGVuYW1lV2l0aFVuc2ln bmVkKCk7CitAQCAtNzg0LDEyICs3ODIsNiBAQCB2b2lkIHRzdF9Nb2M6OmluaXRUZXN0Q2FzZSgp CisgI2VuZGlmCisgfQorIAorLXZvaWQgdHN0X01vYzo6c2xvdFdpdGhFeGNlcHRpb24oKSB0aHJv dyhNeVN0cnVjdCkKKy17CistICAgIC8vIGJlIGhhcHB5CistICAgIFFWRVJJRlkodHJ1ZSk7Cist fQorLQorIHZvaWQgdHN0X01vYzo6ZG9udFN0cmlwTmFtZXNwYWNlcygpCisgeworICAgICBTZW5k ZXIgc2VuZGVyOworQEAgLTgyNCw3ICs4MTYsNyBAQCB2b2lkIHRzdF9Nb2M6Om9sZFN0eWxlQ2Fz dHMoKQorIAorICAgICBRU3RyaW5nTGlzdCBhcmdzOworICAgICBhcmdzIDw8ICItYyIgPDwgIi14 IiA8PCAiYysrIiA8PCAiLVdvbGQtc3R5bGUtY2FzdCIgPDwgIi1JIiA8PCAiLiIKKy0gICAgICAg ICA8PCAiLUkiIDw8IHF0SW5jbHVkZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQ SUMiIDw8ICItc3RkPWMrKzExIiA8PCAiLSI7CisrICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1 ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxeiIg PDwgIi0iOworICAgICBwcm9jLnN0YXJ0KCJnY2MiLCBhcmdzKTsKKyAgICAgUVZFUklGWShwcm9j LndhaXRGb3JTdGFydGVkKCkpOworICAgICBwcm9jLndyaXRlKG1vY091dCk7CitAQCAtODk0LDcg Kzg4Niw3IEBAIHZvaWQgdHN0X01vYzo6aW5wdXRGaWxlTmFtZVdpdGhEb3RzQnV0Tm9FeHRlbnNp b24oKQorIAorICAgICBRU3RyaW5nTGlzdCBhcmdzOworICAgICBhcmdzIDw8ICItYyIgPDwgIi14 IiA8PCAiYysrIiA8PCAiLUkiIDw8ICIuLiIKKy0gICAgICAgICA8PCAiLUkiIDw8IHF0SW5jbHVk ZVBhdGggPDwgIi1vIiA8PCAiL2Rldi9udWxsIiA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzExIiA8 PCAiLSI7CisrICAgICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9k ZXYvbnVsbCIgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxeiIgPDwgIi0iOworICAgICBwcm9jLnN0 YXJ0KCJnY2MiLCBhcmdzKTsKKyAgICAgUVZFUklGWShwcm9jLndhaXRGb3JTdGFydGVkKCkpOwor ICAgICBwcm9jLndyaXRlKG1vY091dCk7CitAQCAtMTE3NCw3ICsxMTY2LDcgQEAgdm9pZCB0c3Rf TW9jOjppZ25vcmVPcHRpb25DbGFzaGVzKCkKKyAgICAgUVN0cmluZ0xpc3QgZ2NjQXJnczsKKyAg ICAgZ2NjQXJncyA8PCAiLWMiIDw8ICIteCIgPDwgImMrKyIgPDwgIi1JIiA8PCAiLi4iCisgICAg ICAgICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItSSIgPDwgaW5jbHVkZURpciA8PCAi LW8iIDw8ICIvZGV2L251bGwiCistICAgICAgICAgPDwgIi1mUElDIiA8PCAiLXN0ZD1jKysxMSIg PDwgICItIjsKKysgICAgICAgICA8PCAiLWZQSUMiIDw8ICItc3RkPWMrKzF6IiA8PCAgIi0iOwor ICAgICBwcm9jLnN0YXJ0KCJnY2MiLCBnY2NBcmdzKTsKKyAgICAgUVZFUklGWShwcm9jLndhaXRG b3JTdGFydGVkKCkpOworICAgICBwcm9jLndyaXRlKG1vY091dCk7CitAQCAtMTU5MywyMSArMTU4 NSw2IEBAIHZvaWQgdHN0X01vYzo6cXByaXZhdGVwcm9wZXJ0aWVzKCkKKyAKKyB9CisgCistI2lu Y2x1ZGUgInRhc2sxODk5OTYuaCIKKy0KKy12b2lkIElubGluZVNsb3RzV2l0aFRocm93RGVjbGFy YXRpb246OmMoKSB0aHJvdygpIHt9CistCistdm9pZCB0c3RfTW9jOjppbmxpbmVTbG90c1dpdGhU aHJvd0RlY2xhcmF0aW9uKCkKKy17CistICAgIElubGluZVNsb3RzV2l0aFRocm93RGVjbGFyYXRp b24gdHN0OworLSAgICBjb25zdCBRTWV0YU9iamVjdCAqbW9iaiA9IHRzdC5tZXRhT2JqZWN0KCk7 CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNsb3QoImEoKSIpICE9IC0xKTsKKy0gICAgUVZF UklGWShtb2JqLT5pbmRleE9mU2xvdCgiYigpIikgIT0gLTEpOworLSAgICBRVkVSSUZZKG1vYmot PmluZGV4T2ZTbG90KCJjKCkiKSAhPSAtMSk7CistICAgIFFWRVJJRlkobW9iai0+aW5kZXhPZlNs b3QoImQoKSIpICE9IC0xKTsKKy0gICAgUVZFUklGWShtb2JqLT5pbmRleE9mU2xvdCgiZSgpIikg IT0gLTEpOworLX0KKy0KKyB2b2lkIHRzdF9Nb2M6Ondhcm5PblByb3BlcnR5V2l0aG91dFJFQUQo KQorIHsKKyAjaWZkZWYgTU9DX0NST1NTX0NPTVBJTEVECitAQCAtMTg2OSw3ICsxODQ2LDcgQEAg dm9pZCB0c3RfTW9jOjpub3RpZnlFcnJvcigpCisgCisgICAgIFFTdHJpbmdMaXN0IGFyZ3M7Cisg ICAgIGFyZ3MgPDwgIi1jIiA8PCAiLXgiIDw8ICJjKysiIDw8ICItSSIgPDwgIi4iCistICAgICAg ICAgPDwgIi1JIiA8PCBxdEluY2x1ZGVQYXRoIDw8ICItbyIgPDwgIi9kZXYvbnVsbCIgPDwgIi1m UElDIiA8PCAiLXN0ZD1jKysxMSIgPDwgIi0iOworKyAgICAgICAgIDw8ICItSSIgPDwgcXRJbmNs dWRlUGF0aCA8PCAiLW8iIDw8ICIvZGV2L251bGwiIDw8ICItZlBJQyIgPDwgIi1zdGQ9YysrMXoi IDw8ICItIjsKKyAgICAgcHJvYy5zdGFydCgiZ2NjIiwgYXJncyk7CisgICAgIFFWRVJJRlkocHJv Yy53YWl0Rm9yU3RhcnRlZCgpKTsKKyAgICAgcHJvYy53cml0ZShtb2NPdXQpOworZGlmZiAtLWdp dCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvaXRlbXZpZXdzL3FoZWFkZXJ2aWV3L3RzdF9x aGVhZGVydmlldy5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xaGVh ZGVydmlldy90c3RfcWhlYWRlcnZpZXcuY3BwCitpbmRleCBjMzU1ZWU5NjY1Li44OGMwOWRlOGUw IDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy9pdGVtdmlld3MvcWhlYWRl cnZpZXcvdHN0X3FoZWFkZXJ2aWV3LmNwcAorKysrIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0 cy9pdGVtdmlld3MvcWhlYWRlcnZpZXcvdHN0X3FoZWFkZXJ2aWV3LmNwcAorQEAgLTI1MSw2ICsy NTEsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHRlc3RSZXNldENhY2hlZFNpemVIaW50 KCk7CisgICAgIHZvaWQgc3RhdHVzVGlwcygpOworICAgICB2b2lkIHRlc3RSZW1vdmluZ0NvbHVt bnNWaWFMYXlvdXRDaGFuZ2VkKCk7CisrICAgIHZvaWQgdGVzdE1vZGVsTW92aW5nQ29sdW1ucygp OworIAorIHByb3RlY3RlZDoKKyAgICAgdm9pZCBzZXR1cFRlc3REYXRhKGJvb2wgdXNlX3Jlc2V0 X21vZGVsID0gZmFsc2UpOworQEAgLTM2MCw2ICszNjEsMTIgQEAgcHVibGljOgorICAgICAgICAg ZW5kUmVtb3ZlQ29sdW1ucygpOworICAgICB9CisgCisrICAgIHZvaWQgbW92ZUNvbHVtbihpbnQg ZnJvbSwgaW50IHRvKQorKyAgICB7CisrICAgICAgICBiZWdpbk1vdmVDb2x1bW5zKFFNb2RlbElu ZGV4KCksIGZyb20sIGZyb20sIFFNb2RlbEluZGV4KCksIHRvKTsKKysgICAgICAgIGVuZE1vdmVD b2x1bW5zKCk7CisrICAgIH0KKysKKyAgICAgdm9pZCBjbGVhbnVwKCkKKyAgICAgeworICAgICAg ICAgZW1pdCBsYXlvdXRBYm91dFRvQmVDaGFuZ2VkKCk7CitAQCAtMzYyNyw1ICszNjM0LDE4IEBA IHZvaWQgdHN0X1FIZWFkZXJWaWV3Ojp0ZXN0UmVtb3ZpbmdDb2x1bW5zVmlhTGF5b3V0Q2hhbmdl ZCgpCisgICAgIC8vIFRoZSBtYWluIHBvaW50IG9mIHRoaXMgdGVzdCBpcyB0aGF0IHRoZSBzZWN0 aW9uLXNpemUgcmVzdG9yaW5nIGNvZGUgZGlkbid0IGdvIG91dCBvZiBib3VuZHMuCisgfQorIAor K3ZvaWQgdHN0X1FIZWFkZXJWaWV3Ojp0ZXN0TW9kZWxNb3ZpbmdDb2x1bW5zKCkKKyt7CisrICAg IFF0VGVzdE1vZGVsIG1vZGVsKDEwLCAxMCk7CisrICAgIFFIZWFkZXJWaWV3IGh2KFF0OjpIb3Jp em9udGFsKTsKKysgICAgaHYuc2V0TW9kZWwoJm1vZGVsKTsKKysgICAgaHYucmVzaXplU2VjdGlv bnMoUUhlYWRlclZpZXc6OlJlc2l6ZVRvQ29udGVudHMpOworKyAgICBodi5zaG93KCk7CisrCisr ICAgIFFQZXJzaXN0ZW50TW9kZWxJbmRleCBpbmRleDMgPSBtb2RlbC5pbmRleCgwLCAzKTsKKysg ICAgbW9kZWwubW92ZUNvbHVtbigzLCAxKTsKKysgICAgUUNPTVBBUkUoaW5kZXgzLmNvbHVtbigp LCAxKTsKKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUUhlYWRlclZpZXcpCisgI2luY2x1ZGUgInRz dF9xaGVhZGVydmlldy5tb2MiCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0 cy9pdGVtdmlld3MvcXRhYmxldmlldy90c3RfcXRhYmxldmlldy5jcHAgYi9xdGJhc2UvdGVzdHMv YXV0by93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3L3RzdF9xdGFibGV2aWV3LmNwcAoraW5k ZXggNzYxMzU3YjI1Mi4uMDZiYjcwNjA3NCAxMDA2NDQKKy0tLSBhL3F0YmFzZS90ZXN0cy9hdXRv L3dpZGdldHMvaXRlbXZpZXdzL3F0YWJsZXZpZXcvdHN0X3F0YWJsZXZpZXcuY3BwCisrKysgYi9x dGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2l0ZW12aWV3cy9xdGFibGV2aWV3L3RzdF9xdGFibGV2 aWV3LmNwcAorQEAgLTM5Nyw2ICszOTcsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIGNo ZWNrSGVhZGVyTWluU2l6ZSgpOworIAorICAgICB2b2lkIHJlc2l6ZVRvQ29udGVudHMoKTsKKysg ICAgdm9pZCByZXNpemVUb0NvbnRlbnRzU3BhbnMoKTsKKyAKKyAgICAgdm9pZCB0YWJGb2N1cygp OworICAgICB2b2lkIGJpZ01vZGVsKCk7CitAQCAtMzcyMSw2ICszNzIyLDcwIEBAIHZvaWQgdHN0 X1FUYWJsZVZpZXc6OnJlc2l6ZVRvQ29udGVudHMoKQorIAorIH0KKyAKKysKKytjbGFzcyBTcGFu TW9kZWwgOiBwdWJsaWMgUUFic3RyYWN0VGFibGVNb2RlbAorK3sKKytwdWJsaWM6CisrICAgIFNw YW5Nb2RlbChib29sIHNlY3Rpb25zTW92ZWQpCisrICAgICAgICA6IF9zZWN0aW9uc01vdmVkKHNl Y3Rpb25zTW92ZWQpCisrICAgIHt9CisrICAgIGludCBjb2x1bW5Db3VudChjb25zdCBRTW9kZWxJ bmRleCAmID0ge30pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDI7IH0KKysgICAgaW50IHJvd0Nv dW50KGNvbnN0IFFNb2RlbEluZGV4ICYgPSB7fSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMTsg fQorKyAgICBRVmFyaWFudCBkYXRhKGNvbnN0IFFNb2RlbEluZGV4ICZpZHgsIGludCByb2xlID0g UXQ6OkRpc3BsYXlSb2xlKSBjb25zdCBvdmVycmlkZQorKyAgICB7CisrICAgICAgICBpZiAocm9s ZSAhPSBRdDo6RGlzcGxheVJvbGUpCisrICAgICAgICAgICAgcmV0dXJuIFFWYXJpYW50KCk7Cisr ICAgICAgICBjb25zdCBpbnQgY29sID0gX3NlY3Rpb25zTW92ZWQgPyAxIC0gaWR4LmNvbHVtbigp IDogaWR4LmNvbHVtbigpOworKyAgICAgICAgaWYgKGNvbCA9PSAwKQorKyAgICAgICAgICAgIHJl dHVybiAiTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2Npbmcg ZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9y ZSBtYWduYSBhbGlxdWEuIjsKKysgICAgICAgIHJldHVybiBRVmFyaWFudCgpOworKyAgICB9Cisr cHJpdmF0ZToKKysgICAgYm9vbCBfc2VjdGlvbnNNb3ZlZDsKKyt9OworKworKworK3ZvaWQgdHN0 X1FUYWJsZVZpZXc6OnJlc2l6ZVRvQ29udGVudHNTcGFucygpCisreworKyAgICBTcGFuTW9kZWwg bW9kZWwxKGZhbHNlKTsKKysgICAgU3Bhbk1vZGVsIG1vZGVsMih0cnVlKTsKKysgICAgUVRhYmxl VmlldyB2aWV3MSwgdmlldzIsIHZpZXczOworKyAgICB2aWV3MS5zZXRNb2RlbCgmbW9kZWwxKTsK KysgICAgdmlldzIuc2V0TW9kZWwoJm1vZGVsMik7CisrICAgIHZpZXcyLmhvcml6b250YWxIZWFk ZXIoKS0+bW92ZVNlY3Rpb24oMCwgMSk7CisrICAgIHZpZXczLnNldE1vZGVsKCZtb2RlbDEpOwor KworKyAgICB2aWV3MS5zZXRTcGFuKDAsIDAsIDEsIDIpOworKyAgICB2aWV3Mi5zZXRTcGFuKDAs IDEsIDEsIDIpOworKyAgICB2aWV3MS5zaG93KCk7CisrICAgIHZpZXcyLnNob3coKTsKKysgICAg dmlldzMuc2hvdygpOworKyAgICBRVkVSSUZZKFFUZXN0OjpxV2FpdEZvcldpbmRvd0V4cG9zZWQo JnZpZXcxKSk7CisrICAgIFFWRVJJRlkoUVRlc3Q6OnFXYWl0Rm9yV2luZG93RXhwb3NlZCgmdmll dzIpKTsKKysgICAgUVZFUklGWShRVGVzdDo6cVdhaXRGb3JXaW5kb3dFeHBvc2VkKCZ2aWV3Mykp OworKyAgICB2aWV3MS5zZXRDb2x1bW5XaWR0aCgwLCAxMDApOworKyAgICB2aWV3MS5zZXRDb2x1 bW5XaWR0aCgxLCAxMDApOworKyAgICB2aWV3Mi5zZXRDb2x1bW5XaWR0aCgwLCAxMDApOworKyAg ICB2aWV3Mi5zZXRDb2x1bW5XaWR0aCgxLCAxMDApOworKyAgICB2aWV3My5zZXRDb2x1bW5XaWR0 aCgwLCAyMDApOworKworKyAgICB2aWV3MS5yZXNpemVSb3dUb0NvbnRlbnRzKDApOworKyAgICB2 aWV3Mi5yZXNpemVSb3dUb0NvbnRlbnRzKDApOworKyAgICB2aWV3My5yZXNpemVSb3dUb0NvbnRl bnRzKDApOworKyAgICBRQ09NUEFSRSh2aWV3MS5yb3dIZWlnaHQoMCksIHZpZXczLnJvd0hlaWdo dCgwKSk7CisrICAgIFFDT01QQVJFKHZpZXcyLnJvd0hlaWdodCgwKSwgdmlldzMucm93SGVpZ2h0 KDApKTsKKysKKysgICAgdmlldzMucmVzaXplQ29sdW1uVG9Db250ZW50cygwKTsKKysgICAgdmll dzMucmVzaXplUm93VG9Db250ZW50cygwKTsKKysgICAgLy8gaGVpZ2h0IHNob3VsZCBiZSBvbmx5 IDEgdGV4dCBsaW5lIGZvciBlYXN5IHRlc3RpbmcKKysgICAgdmlldzEuc2V0Um93SGVpZ2h0KDAs IHZpZXczLnZlcnRpY2FsSGVhZGVyKCktPnNlY3Rpb25TaXplKDApKTsKKysgICAgdmlldzIuc2V0 Um93SGVpZ2h0KDAsIHZpZXczLnZlcnRpY2FsSGVhZGVyKCktPnNlY3Rpb25TaXplKDApKTsKKysg ICAgdmlldzEucmVzaXplQ29sdW1uVG9Db250ZW50cygwKTsKKysgICAgdmlldzIucmVzaXplQ29s dW1uVG9Db250ZW50cygxKTsKKysgICAgUUNPTVBBUkUodmlldzEuY29sdW1uV2lkdGgoMCksIHZp ZXczLmNvbHVtbldpZHRoKDApIC0gdmlldzEuY29sdW1uV2lkdGgoMSkpOworKyAgICBRQ09NUEFS RSh2aWV3Mi5jb2x1bW5XaWR0aCgwKSwgdmlldzMuY29sdW1uV2lkdGgoMCkgLSB2aWV3Mi5jb2x1 bW5XaWR0aCgxKSk7CisrfQorKworIFFUX0JFR0lOX05BTUVTUEFDRQorIGV4dGVybiBib29sIFFf V0lER0VUU19FWFBPUlQgcXRfdGFiX2FsbF93aWRnZXRzKCk7IC8vIHFhcHBsaWNhdGlvbi5jcHAK KyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0 cy9rZXJuZWwvcWFwcGxpY2F0aW9uL3RzdF9xYXBwbGljYXRpb24uY3BwIGIvcXRiYXNlL3Rlc3Rz L2F1dG8vd2lkZ2V0cy9rZXJuZWwvcWFwcGxpY2F0aW9uL3RzdF9xYXBwbGljYXRpb24uY3BwCitp bmRleCBhM2I4ZWY3OGQ4Li40OTU1Y2ViZDVkIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1 dG8vd2lkZ2V0cy9rZXJuZWwvcWFwcGxpY2F0aW9uL3RzdF9xYXBwbGljYXRpb24uY3BwCisrKysg Yi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL2tlcm5lbC9xYXBwbGljYXRpb24vdHN0X3FhcHBs aWNhdGlvbi5jcHAKK0BAIC0xNDk4LDcgKzE0OTgsNyBAQCB2b2lkIHRzdF9RQXBwbGljYXRpb246 OmRlc2t0b3BTZXR0aW5nc0F3YXJlKCkKKyAgICAgZW52aXJvbm1lbnQgKz0gUUxhdGluMVN0cmlu ZygiUVRfTUFDX0RJU0FCTEVfRk9SRUdST1VORF9BUFBMSUNBVElPTl9UUkFOU0ZPUk09MSIpOwor ICAgICB0ZXN0UHJvY2Vzcy5zZXRFbnZpcm9ubWVudChlbnZpcm9ubWVudCk7CisgI2VuZGlmCist ICAgIHRlc3RQcm9jZXNzLnN0YXJ0KCJkZXNrdG9wc2V0dGluZ3Nhd2FyZV9oZWxwZXIiKTsKKysg ICAgdGVzdFByb2Nlc3Muc3RhcnQoIi4vZGVza3RvcHNldHRpbmdzYXdhcmVfaGVscGVyIik7Cisg ICAgIFFWRVJJRlkyKHRlc3RQcm9jZXNzLndhaXRGb3JTdGFydGVkKCksCisgICAgICAgICAgICAg IHFQcmludGFibGUoUVN0cmluZzo6ZnJvbUxhdGluMSgiQ2Fubm90IHN0YXJ0ICdkZXNrdG9wc2V0 dGluZ3Nhd2FyZV9oZWxwZXInOiAlMSIpLmFyZyh0ZXN0UHJvY2Vzcy5lcnJvclN0cmluZygpKSkp OworICAgICBRVkVSSUZZKHRlc3RQcm9jZXNzLndhaXRGb3JGaW5pc2hlZCgxMDAwMCkpOworQEAg LTI0NTIsNyArMjQ1Miw3IEBAIHZvaWQgdHN0X1FBcHBsaWNhdGlvbjo6cXRidWdfMTI2NzMoKQor ICNpZiBRVF9DT05GSUcocHJvY2VzcykKKyAgICAgUVByb2Nlc3MgdGVzdFByb2Nlc3M7CisgICAg IFFTdHJpbmdMaXN0IGFyZ3VtZW50czsKKy0gICAgdGVzdFByb2Nlc3Muc3RhcnQoIm1vZGFsX2hl bHBlciIsIGFyZ3VtZW50cyk7CisrICAgIHRlc3RQcm9jZXNzLnN0YXJ0KCIuL21vZGFsX2hlbHBl ciIsIGFyZ3VtZW50cyk7CisgICAgIFFWRVJJRlkyKHRlc3RQcm9jZXNzLndhaXRGb3JTdGFydGVk KCksCisgICAgICAgICAgICAgIHFQcmludGFibGUoUVN0cmluZzo6ZnJvbUxhdGluMSgiQ2Fubm90 IHN0YXJ0ICdtb2RhbF9oZWxwZXInOiAlMSIpLmFyZyh0ZXN0UHJvY2Vzcy5lcnJvclN0cmluZygp KSkpOworICAgICBRVkVSSUZZKHRlc3RQcm9jZXNzLndhaXRGb3JGaW5pc2hlZCgyMDAwMCkpOwor ZGlmZiAtLWdpdCBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xYWJzdHJhY3Ri dXR0b24vdHN0X3FhYnN0cmFjdGJ1dHRvbi5jcHAgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRz L3dpZGdldHMvcWFic3RyYWN0YnV0dG9uL3RzdF9xYWJzdHJhY3RidXR0b24uY3BwCitpbmRleCBl YjEwOGE0MGRlLi5kY2E1NTI4YzFiIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lk Z2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi90c3RfcWFic3RyYWN0YnV0dG9uLmNwcAorKysr IGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FhYnN0cmFjdGJ1dHRvbi90c3Rf cWFic3RyYWN0YnV0dG9uLmNwcAorQEAgLTQxLDYgKzQxLDcgQEAKKyAKKyAjaW5jbHVkZSA8cHJp dmF0ZS9xZ3VpYXBwbGljYXRpb25fcC5oPgorICNpbmNsdWRlIDxxcGEvcXBsYXRmb3JtaW50ZWdy YXRpb24uaD4KKysjaW5jbHVkZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisgCisgY2xhc3MgdHN0 X1FBYnN0cmFjdEJ1dHRvbiA6IHB1YmxpYyBRT2JqZWN0CisgeworQEAgLTc2LDYgKzc3LDggQEAg cHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBrZXlOYXZpZ2F0aW9uKCk7CisgI2VuZGlmCisgCisr ICAgIHZvaWQgYnV0dG9uUHJlc3NLZXlzKCk7CisrCisgcHJvdGVjdGVkIHNsb3RzOgorICAgICB2 b2lkIG9uQ2xpY2tlZCgpOworICAgICB2b2lkIG9uVG9nZ2xlZCggYm9vbCBvbiApOworQEAgLTI2 OSw3ICsyNzIsMTMgQEAgdm9pZCB0c3RfUUFic3RyYWN0QnV0dG9uOjpzZXRBdXRvUmVwZWF0KCkK KyAgICAgICAgIFFDT01QQVJFKHByZXNzX2NvdW50LCBjbGlja19jb3VudCk7CisgICAgICAgICBR VkVSSUZZKGNsaWNrX2NvdW50ID4gMSk7CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSA0Ogor KyAgICBjYXNlIDQ6IHsKKysgICAgICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1 aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1 dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgICAgICBpZiAoYnV0dG9uUHJlc3NL ZXlzLmNvbnRhaW5zKFF0OjpLZXlfRW50ZXIpKSB7CisrICAgICAgICAgICAgUVNLSVAoInBsYXRm b3JtIHRoZW1lIGhhcyBLZXlfRW50ZXIgaW4gQnV0dG9uUHJlc3NLZXlzIik7CisrICAgICAgICB9 CisgICAgICAgICAvLyBjaGVjayB0aGF0IHByZXNzaW5nIEVOVEVSIGhhcyBubyBlZmZlY3Qgd2hl biBhdXRvcmVwZWF0IGlzIGZhbHNlCisgICAgICAgICB0ZXN0V2lkZ2V0LT5zZXREb3duKCBmYWxz ZSApOworICAgICAgICAgdGVzdFdpZGdldC0+c2V0QXV0b1JlcGVhdCggZmFsc2UgKTsKK0BAIC0y ODYsNyArMjk1LDE0IEBAIHZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRvbjo6c2V0QXV0b1JlcGVhdCgp CisgCisgICAgICAgICBRVkVSSUZZKCBjbGlja19jb3VudCA9PSAwICk7CisgICAgICAgICBicmVh azsKKy0gICAgY2FzZSA1OgorKyAgICB9CisrICAgIGNhc2UgNTogeworKyAgICAgICAgY29uc3Qg YXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRo ZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRo ZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsK KysgICAgICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9FbnRlcikpIHsK KysgICAgICAgICAgICBRU0tJUCgicGxhdGZvcm0gdGhlbWUgaGFzIEtleV9FbnRlciBpbiBCdXR0 b25QcmVzc0tleXMiKTsKKysgICAgICAgIH0KKyAgICAgICAgIC8vIGNoZWNrIHRoYXQgcHJlc3Np bmcgRU5URVIgaGFzIG5vIGVmZmVjdCB3aGVuIGF1dG9yZXBlYXQgaXMgdHJ1ZQorICAgICAgICAg dGVzdFdpZGdldC0+c2V0RG93biggZmFsc2UgKTsKKyAgICAgICAgIHRlc3RXaWRnZXQtPnNldEF1 dG9SZXBlYXQoIHRydWUgKTsKK0BAIC0zMDQsNiArMzIwLDcgQEAgdm9pZCB0c3RfUUFic3RyYWN0 QnV0dG9uOjpzZXRBdXRvUmVwZWF0KCkKKyAKKyAgICAgICAgIFFWRVJJRlkoIGNsaWNrX2NvdW50 ID09IDAgKTsKKyAgICAgICAgIGJyZWFrOworKyAgICB9CisgICAgIGNhc2UgNjoKKyAgICAgICAg IC8vIHZlcmlmeSBhdXRvcmVwZWF0IGlzIG9mZiBieSBkZWZhdWx0LgorICAgICAgICAgTXlCdXR0 b24gdG1wKCAwKTsKK0BAIC02NTEsNSArNjY4LDE2IEBAIHZvaWQgdHN0X1FBYnN0cmFjdEJ1dHRv bjo6a2V5TmF2aWdhdGlvbigpCisgfQorICNlbmRpZgorIAorK3ZvaWQgdHN0X1FBYnN0cmFjdEJ1 dHRvbjo6YnV0dG9uUHJlc3NLZXlzKCkKKyt7CisrICAgIGNvbnN0IGF1dG8gYnV0dG9uUHJlc3NL ZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZvcm1UaGVtZSgpCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRoZW1lSGludChRUGxhdGZvcm1UaGVt ZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAgICBmb3IgKGludCBpID0gMDsgaSA8 IGJ1dHRvblByZXNzS2V5cy5sZW5ndGgoKTsgKytpKSB7CisrICAgICAgICBRVGVzdDo6a2V5Q2xp Y2sodGVzdFdpZGdldCwgYnV0dG9uUHJlc3NLZXlzW2ldKTsKKysgICAgICAgIFFDT01QQVJFKGNs aWNrX2NvdW50LCBpICsgMSk7CisrICAgIH0KKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUUFic3Ry YWN0QnV0dG9uKQorICNpbmNsdWRlICJ0c3RfcWFic3RyYWN0YnV0dG9uLm1vYyIKK2RpZmYgLS1n aXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbWJvYm94L3RzdF9xY29t Ym9ib3guY3BwIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3Fjb21ib2JveC90 c3RfcWNvbWJvYm94LmNwcAoraW5kZXggMzI0MzcwNTBmNS4uNDZiNWFmNmQ2MyAxMDA2NDQKKy0t LSBhL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9ib3gvdHN0X3Fjb21i b2JveC5jcHAKKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tYm9i b3gvdHN0X3Fjb21ib2JveC5jcHAKK0BAIC0xNjgsNiArMTY4LDcgQEAgcHJpdmF0ZSBzbG90czoK KyAgICAgdm9pZCBjaGVja01lbnVJdGVtUG9zV2hlblN0eWxlU2hlZXRJc1NldCgpOworICAgICB2 b2lkIGNoZWNrRW1iZWRkZWRMaW5lRWRpdFdoZW5TdHlsZVNoZWV0SXNTZXQoKTsKKyAgICAgdm9p ZCBwcm9wYWdhdGVTdHlsZUNoYW5nZXMoKTsKKysgICAgdm9pZCBidXR0b25QcmVzc0tleXMoKTsK KyAKKyBwcml2YXRlOgorICAgICBQbGF0Zm9ybUlucHV0Q29udGV4dCBtX3BsYXRmb3JtSW5wdXRD b250ZXh0OworQEAgLTE2ODIsNiArMTY4MywxNiBAQCB2b2lkIHRzdF9RQ29tYm9Cb3g6OnNldE1v ZGVsKCkKKyAgICAgUUNPTVBBUkUoYm94LnJvb3RNb2RlbEluZGV4KCksIHJvb3RNb2RlbEluZGV4 KTsKKyAgICAgYm94LnNldE1vZGVsKGJveC5tb2RlbCgpKTsKKyAgICAgUUNPTVBBUkUoYm94LnJv b3RNb2RlbEluZGV4KCksIHJvb3RNb2RlbEluZGV4KTsKKysKKysgICAgLy8gY2hlY2sgdGhhdCBz ZXR0aW5nIHRoZSBzYW1lIG1vZGVsIGFzIHRoZSBjb21wbGV0ZXIncyBkb2Vzbid0IGNyYXNoCisr ICAgIFFDb21wbGV0ZXIgKmNvbXBsZXRlciA9IG5ldyBRQ29tcGxldGVyKCZib3gpOworKyAgICBi b3guc2V0RWRpdGFibGUodHJ1ZSk7CisrICAgIGJveC5zZXRDb21wbGV0ZXIoY29tcGxldGVyKTsK KysgICAgYXV0byAqbGlzdE1vZGVsID0gbmV3IFFTdHJpbmdMaXN0TW9kZWwoeyAib25lIiwgInR3 byIgfSwgY29tcGxldGVyKTsKKysgICAgY29tcGxldGVyLT5zZXRNb2RlbChsaXN0TW9kZWwpOwor KyAgICBRQ09NUEFSRShsaXN0TW9kZWwtPnJvd0NvdW50KCksIDIpOyAvLyBtYWtlIHN1cmUgaXQg d2Fzbid0IGRlbGV0ZWQKKysgICAgYm94LnNldE1vZGVsKGxpc3RNb2RlbCk7CisrICAgIFFDT01Q QVJFKGxpc3RNb2RlbC0+cm93Q291bnQoKSwgMik7IC8vIG1ha2Ugc3VyZSBpdCB3YXNuJ3QgZGVs ZXRlZAorIH0KKyAKKyB2b2lkIHRzdF9RQ29tYm9Cb3g6OnNldEN1c3RvbU1vZGVsQW5kVmlldygp CitAQCAtMzYzMiw1ICszNjQzLDI0IEBAIHZvaWQgdHN0X1FDb21ib0JveDo6cHJvcGFnYXRlU3R5 bGVDaGFuZ2VzKCkKKyAgICAgUVZFUklGWShmcmFtZVN0eWxlLmlucXVpcmVkKTsKKyB9CisgCisr dm9pZCB0c3RfUUNvbWJvQm94OjpidXR0b25QcmVzc0tleXMoKQorK3sKKysgICAgUUNvbWJvQm94 IGNvbWJvQm94OworKyAgICBjb21ib0JveC5zZXRFZGl0YWJsZShmYWxzZSk7CisrICAgIGNvbWJv Qm94LmFkZEl0ZW0oUVN0cmluZzo6bnVtYmVyKDEpKTsKKysgICAgY29tYm9Cb3guYWRkSXRlbShR U3RyaW5nOjpudW1iZXIoMikpOworKyAgICBjb25zdCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFH dWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtVGhlbWUoKQorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVtZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRv blByZXNzS2V5cykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC52 YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBidXR0b25Q cmVzc0tleXMubGVuZ3RoKCk7ICsraSkgeworKyAgICAgICAgUVRlc3Q6OmtleUNsaWNrKCZjb21i b0JveCwgYnV0dG9uUHJlc3NLZXlzW2ldKTsKKysgICAgICAgIC8vIE9uIHNvbWUgcGxhdGZvcm1z LCBhIHdpbmRvdyB3aWxsIG5vdCBiZSBpbW1lZGlhdGVseSB2aXNpYmxlLAorKyAgICAgICAgLy8g YnV0IHRha2Ugc29tZSBldmVudC1sb29wIGl0ZXJhdGlvbnMgdG8gY29tcGxldGUuCisrICAgICAg ICAvLyBVc2luZyBRVFJZX1ZFUklGWSB0byBkZWFsIHdpdGggdGhhdC4KKysgICAgICAgIFFUUllf VkVSSUZZKGNvbWJvQm94LnZpZXcoKS0+aXNWaXNpYmxlKCkpOworKyAgICAgICAgY29tYm9Cb3gu aGlkZVBvcHVwKCk7CisrICAgIH0KKyt9CisrCisgUVRFU1RfTUFJTih0c3RfUUNvbWJvQm94KQor ICNpbmNsdWRlICJ0c3RfcWNvbWJvYm94Lm1vYyIKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMv YXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3Fjb21tYW5kbGlua2J1dHRv bi5wcm8gYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0 dG9uL3Fjb21tYW5kbGlua2J1dHRvbi5wcm8KK2luZGV4IGJlM2NmY2QxMDQuLmMyMjhmZGZjY2Eg MTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRs aW5rYnV0dG9uL3Fjb21tYW5kbGlua2J1dHRvbi5wcm8KKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRv L3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vcWNvbW1hbmRsaW5rYnV0dG9uLnBy bworQEAgLTEsNiArMSw2IEBACisgQ09ORklHICs9IHRlc3RjYXNlCisgVEFSR0VUID0gdHN0X3Fj b21tYW5kbGlua2J1dHRvbgorLVFUICs9IHdpZGdldHMgdGVzdGxpYgorK1FUICs9IHdpZGdldHMg dGVzdGxpYiBndWktcHJpdmF0ZQorIFNPVVJDRVMgICs9IHRzdF9xY29tbWFuZGxpbmtidXR0b24u Y3BwCisgCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRz L3Fjb21tYW5kbGlua2J1dHRvbi90c3RfcWNvbW1hbmRsaW5rYnV0dG9uLmNwcCBiL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xY29tbWFuZGxpbmtidXR0b24vdHN0X3Fjb21tYW5k bGlua2J1dHRvbi5jcHAKK2luZGV4IDAwNDRkMzNjNjYuLjRjZjA2Mjk2ZTQgMTAwNjQ0CistLS0g YS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3Rz dF9xY29tbWFuZGxpbmtidXR0b24uY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRz L3dpZGdldHMvcWNvbW1hbmRsaW5rYnV0dG9uL3RzdF9xY29tbWFuZGxpbmtidXR0b24uY3BwCitA QCAtNDAsNiArNDAsOSBAQAorICNpbmNsdWRlIDxRR3JpZExheW91dD4KKyAjaW5jbHVkZSA8UVBh aW50ZXI+CisgCisrI2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKysjaW5j bHVkZSA8cXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisrCisgY2xhc3MgdHN0X1FDb21tYW5kTGlua0J1 dHRvbiA6IHB1YmxpYyBRT2JqZWN0CisgeworICAgICBRX09CSkVDVAorQEAgLTIyMyw2ICsyMjYs MTMgQEAgdm9pZCB0c3RfUUNvbW1hbmRMaW5rQnV0dG9uOjpzZXRBdXRvUmVwZWF0KCkKKyAgICAg Ly8gY2hlY2sgdGhhdCBwcmVzc2luZyBFTlRFUiBoYXMgbm8gZWZmZWN0CisgICAgIHJlc2V0Q291 bnRlcnMoKTsKKyAgICAgdGVzdFdpZGdldC0+c2V0RG93biggZmFsc2UgKTsKKysgICAgLy8gU2tp cCBhZnRlciByZXNldCBpZiBCdXR0b25QcmVzc0tleXMgaGFzIEtleV9FbnRlcgorKyAgICBjb25z dCBhdXRvIGJ1dHRvblByZXNzS2V5cyA9IFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3Jt VGhlbWUoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT50aGVt ZUhpbnQoUVBsYXRmb3JtVGhlbWU6OkJ1dHRvblByZXNzS2V5cykKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZTxRTGlzdDxRdDo6S2V5Pj4oKTsKKysgICAg aWYgKGJ1dHRvblByZXNzS2V5cy5jb250YWlucyhRdDo6S2V5X0VudGVyKSkgeworKyAgICAgICAg cmV0dXJuOworKyAgICB9CisgICAgIHRlc3RXaWRnZXQtPnNldEF1dG9SZXBlYXQoIGZhbHNlICk7 CisgICAgIFFUZXN0OjprZXlQcmVzcyggdGVzdFdpZGdldCwgUXQ6OktleV9FbnRlciApOworIAor QEAgLTI1NSw2ICsyNjUsMTQgQEAgdm9pZCB0c3RfUUNvbW1hbmRMaW5rQnV0dG9uOjpwcmVzc2Vk KCkKKyAgICAgUUNPTVBBUkUoIHByZXNzX2NvdW50LCAodWludCkxICk7CisgICAgIFFDT01QQVJF KCByZWxlYXNlX2NvdW50LCAodWludCkxICk7CisgCisrICAgIC8vIFNraXAgaWYgQnV0dG9uUHJl c3NLZXlzIGhhcyBLZXlfRW50ZXIKKysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBR R3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0 b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu dmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFp bnMoUXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKworICAgICBR VGVzdDo6a2V5UHJlc3MoIHRlc3RXaWRnZXQsUXQ6OktleV9FbnRlciApOworICAgICBRQ09NUEFS RSggcHJlc3NfY291bnQsICh1aW50KTEgKTsKKyAgICAgUUNPTVBBUkUoIHJlbGVhc2VfY291bnQs ICh1aW50KTEgKTsKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdl dHMvcWdyb3VwYm94L3Fncm91cGJveC5wcm8gYi9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dp ZGdldHMvcWdyb3VwYm94L3Fncm91cGJveC5wcm8KK2luZGV4IDRhNWU3NmZmNjUuLmEyMzVmYTFm YWMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcWdyb3Vw Ym94L3Fncm91cGJveC5wcm8KKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0 cy9xZ3JvdXBib3gvcWdyb3VwYm94LnBybworQEAgLTEsNiArMSw2IEBACisgQ09ORklHICs9IHRl c3RjYXNlCisgVEFSR0VUID0gdHN0X3Fncm91cGJveAorLVFUICs9IHdpZGdldHMgdGVzdGxpYgor K1FUICs9IHdpZGdldHMgdGVzdGxpYiBndWktcHJpdmF0ZQorIFNPVVJDRVMgICs9IHRzdF9xZ3Jv dXBib3guY3BwCisgCisgCitkaWZmIC0tZ2l0IGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93 aWRnZXRzL3Fncm91cGJveC90c3RfcWdyb3VwYm94LmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dp ZGdldHMvd2lkZ2V0cy9xZ3JvdXBib3gvdHN0X3Fncm91cGJveC5jcHAKK2luZGV4IDRmYjVkMjYy Y2EuLmQ4ZDc1NjJiNzMgMTAwNjQ0CistLS0gYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dp ZGdldHMvcWdyb3VwYm94L3RzdF9xZ3JvdXBib3guY3BwCisrKysgYi9xdGJhc2UvdGVzdHMvYXV0 by93aWRnZXRzL3dpZGdldHMvcWdyb3VwYm94L3RzdF9xZ3JvdXBib3guY3BwCitAQCAtMzUsNiAr MzUsOSBAQAorICNpbmNsdWRlIDxRUmFkaW9CdXR0b24+CisgI2luY2x1ZGUgPFFEaWFsb2c+Cisg CisrI2luY2x1ZGUgPHByaXZhdGUvcWd1aWFwcGxpY2F0aW9uX3AuaD4KKysjaW5jbHVkZSA8cXBh L3FwbGF0Zm9ybXRoZW1lLmg+CisrCisgI2luY2x1ZGUgInFncm91cGJveC5oIgorIAorIGNsYXNz IHRzdF9RR3JvdXBCb3ggOiBwdWJsaWMgUU9iamVjdAorQEAgLTY5LDYgKzcyLDcgQEAgcHJpdmF0 ZSBzbG90czoKKyAgICAgdm9pZCBwcm9wYWdhdGVGb2N1cygpOworICAgICB2b2lkIHRhc2tfUVRC VUdfMTkxNzBfaWdub3JlTW91c2VSZWxlYXNlRXZlbnQoKTsKKyAgICAgdm9pZCB0YXNrX1FUQlVH XzE1NTE5X3Byb3BhZ2F0ZU1vdXNlRXZlbnRzKCk7CisrICAgIHZvaWQgYnV0dG9uUHJlc3NLZXlz KCk7CisgCisgcHJpdmF0ZToKKyAgICAgYm9vbCBjaGVja2VkOworQEAgLTYxMCw2ICs2MTQsMjAg QEAgdm9pZCB0c3RfUUdyb3VwQm94Ojp0YXNrX1FUQlVHXzE1NTE5X3Byb3BhZ2F0ZU1vdXNlRXZl bnRzKCkKKyAgICAgUUNPTVBBUkUocGFyZW50Lm1vdXNlTW92ZWQsIHRydWUpOworIH0KKyAKKyt2 b2lkIHRzdF9RR3JvdXBCb3g6OmJ1dHRvblByZXNzS2V5cygpCisreworKyAgICBRR3JvdXBCb3gg Z3JvdXBCb3g7CisrICAgIGdyb3VwQm94LnNldENoZWNrYWJsZSh0cnVlKTsKKysgICAgUVNpZ25h bFNweSBjbGlja2VkU3B5KCZncm91cEJveCwgJlFHcm91cEJveDo6Y2xpY2tlZCk7CisrICAgIGNv bnN0IGF1dG8gYnV0dG9uUHJlc3NLZXlzID0gUUd1aUFwcGxpY2F0aW9uUHJpdmF0ZTo6cGxhdGZv cm1UaGVtZSgpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnRo ZW1lSGludChRUGxhdGZvcm1UaGVtZTo6QnV0dG9uUHJlc3NLZXlzKQorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbHVlPFFMaXN0PFF0OjpLZXk+PigpOworKyAg ICBmb3IgKGludCBpID0gMDsgaSA8IGJ1dHRvblByZXNzS2V5cy5sZW5ndGgoKTsgKytpKSB7Cisr ICAgICAgICBRVGVzdDo6a2V5Q2xpY2soJmdyb3VwQm94LCBidXR0b25QcmVzc0tleXNbaV0pOwor KyAgICAgICAgUUNPTVBBUkUoY2xpY2tlZFNweS5sZW5ndGgoKSwgaSArIDEpOworKyAgICB9Cisr fQorKworIHZvaWQgdHN0X1FHcm91cEJveDo6c2VuZE1vdXNlTW92ZUV2ZW50KFFXaWRnZXQgKndp ZGdldCwgY29uc3QgUVBvaW50ICZsb2NhbFBvcykKKyB7CisgICAgIC8vIFNlbmQgYSBNb3VzZU1v dmUgZXZlbnQgd2l0aG91dCBhY3R1YWxseSBtb3ZpbmcgdGhlIHBvaW50ZXIKK2RpZmYgLS1naXQg YS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdldHMvcXB1c2hidXR0b24vcXB1c2hidXR0 b24ucHJvIGIvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0cy93aWRnZXRzL3FwdXNoYnV0dG9uL3Fw dXNoYnV0dG9uLnBybworaW5kZXggMzUzYWQwNmNhMi4uZTU1ZjYxNDhmMiAxMDA2NDQKKy0tLSBh L3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi9xcHVzaGJ1dHRv bi5wcm8KKysrKyBiL3F0YmFzZS90ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRv bi9xcHVzaGJ1dHRvbi5wcm8KK0BAIC0xLDYgKzEsNiBAQAorIENPTkZJRyArPSB0ZXN0Y2FzZQor IFRBUkdFVCA9IHRzdF9xcHVzaGJ1dHRvbgorLVFUICs9IHdpZGdldHMgdGVzdGxpYgorK1FUICs9 IHdpZGdldHMgdGVzdGxpYiBndWktcHJpdmF0ZQorIFNPVVJDRVMgICs9IHRzdF9xcHVzaGJ1dHRv bi5jcHAKKyAKKyAKK2RpZmYgLS1naXQgYS9xdGJhc2UvdGVzdHMvYXV0by93aWRnZXRzL3dpZGdl dHMvcXB1c2hidXR0b24vdHN0X3FwdXNoYnV0dG9uLmNwcCBiL3F0YmFzZS90ZXN0cy9hdXRvL3dp ZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi90c3RfcXB1c2hidXR0b24uY3BwCitpbmRleCBlODE4 NTE0YTc5Li40MDQzZTkzMjZhIDEwMDY0NAorLS0tIGEvcXRiYXNlL3Rlc3RzL2F1dG8vd2lkZ2V0 cy93aWRnZXRzL3FwdXNoYnV0dG9uL3RzdF9xcHVzaGJ1dHRvbi5jcHAKKysrKyBiL3F0YmFzZS90 ZXN0cy9hdXRvL3dpZGdldHMvd2lkZ2V0cy9xcHVzaGJ1dHRvbi90c3RfcXB1c2hidXR0b24uY3Bw CitAQCAtNDEsNiArNDEsOSBAQAorICNpbmNsdWRlIDxRU3R5bGVGYWN0b3J5PgorICNpbmNsdWRl IDxRVGFiV2lkZ2V0PgorIAorKyNpbmNsdWRlIDxwcml2YXRlL3FndWlhcHBsaWNhdGlvbl9wLmg+ CisrI2luY2x1ZGUgPHFwYS9xcGxhdGZvcm10aGVtZS5oPgorKworIGNsYXNzIHRzdF9RUHVzaEJ1 dHRvbiA6IHB1YmxpYyBRT2JqZWN0CisgeworIFFfT0JKRUNUCitAQCAtMjEyLDYgKzIxNSwxMyBA QCB2b2lkIHRzdF9RUHVzaEJ1dHRvbjo6YXV0b1JlcGVhdCgpCisgICAgIC8vIGNoZWNrIHRoYXQg cHJlc3NpbmcgRU5URVIgaGFzIG5vIGVmZmVjdAorICAgICByZXNldENvdW50ZXJzKCk7CisgICAg IHRlc3RXaWRnZXQtPnNldERvd24oIGZhbHNlICk7CisrICAgIC8vIFNraXAgYWZ0ZXIgcmVzZXQg aWYgQnV0dG9uUHJlc3NLZXlzIGhhcyBLZXlfRW50ZXIKKysgICAgY29uc3QgYXV0byBidXR0b25Q cmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybVRoZW1lKCkKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9y bVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+KCk7CisrICAgIGlmIChidXR0b25QcmVz c0tleXMuY29udGFpbnMoUXQ6OktleV9FbnRlcikpIHsKKysgICAgICAgIHJldHVybjsKKysgICAg fQorICAgICB0ZXN0V2lkZ2V0LT5zZXRBdXRvUmVwZWF0KCBmYWxzZSApOworICAgICBRVGVzdDo6 a2V5UHJlc3MoIHRlc3RXaWRnZXQsIFF0OjpLZXlfRW50ZXIgKTsKKyAKK0BAIC0yNDcsNiArMjU3 LDE0IEBAIHZvaWQgdHN0X1FQdXNoQnV0dG9uOjpwcmVzc2VkKCkKKyAgICAgUUNPTVBBUkUoIHBy ZXNzX2NvdW50LCAodWludCkxICk7CisgICAgIFFDT01QQVJFKCByZWxlYXNlX2NvdW50LCAodWlu dCkxICk7CisgCisrICAgIC8vIFNraXAgaWYgQnV0dG9uUHJlc3NLZXlzIGhhcyBLZXlfRW50ZXIK KysgICAgY29uc3QgYXV0byBidXR0b25QcmVzc0tleXMgPSBRR3VpQXBwbGljYXRpb25Qcml2YXRl OjpwbGF0Zm9ybVRoZW1lKCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+dGhlbWVIaW50KFFQbGF0Zm9ybVRoZW1lOjpCdXR0b25QcmVzc0tleXMpCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWU8UUxpc3Q8UXQ6OktleT4+ KCk7CisrICAgIGlmIChidXR0b25QcmVzc0tleXMuY29udGFpbnMoUXQ6OktleV9FbnRlcikpIHsK KysgICAgICAgIHJldHVybjsKKysgICAgfQorKworICAgICBRVGVzdDo6a2V5UHJlc3MoIHRlc3RX aWRnZXQsUXQ6OktleV9FbnRlciApOworICAgICBRQ09NUEFSRSggcHJlc3NfY291bnQsICh1aW50 KTEgKTsKKyAgICAgUUNPTVBBUkUoIHJlbGVhc2VfY291bnQsICh1aW50KTEgKTsKK2RpZmYgLS1n aXQgYS9xdGJhc2UvdGVzdHMvbWFudWFsL3JoaS9jdWJlbWFwX3JlbmRlci9idWlsZHNoYWRlci5i YXQgYi9xdGJhc2UvdGVzdHMvbWFudWFsL3JoaS9jdWJlbWFwX3JlbmRlci9idWlsZHNoYWRlci5i YXQKK29sZCBtb2RlIDEwMDc1NQorbmV3IG1vZGUgMTAwNjQ0CitTdWJtb2R1bGUgcXRjb25uZWN0 aXZpdHkgZTk1N2Q0ODEuLjA1NjI5NGMwOgorZGlmZiAtLWdpdCBhL3F0Y29ubmVjdGl2aXR5L3Ny Yy9ibHVldG9vdGgvYmx1ZXovaGNpbWFuYWdlci5jcHAgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1 ZXRvb3RoL2JsdWV6L2hjaW1hbmFnZXIuY3BwCitpbmRleCBlMjYzNWZhZS4uYThiOGUzYjkgMTAw NjQ0CistLS0gYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL2JsdWV6L2hjaW1hbmFnZXIu Y3BwCisrKysgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL2JsdWV6L2hjaW1hbmFnZXIu Y3BwCitAQCAtNTYzLDkgKzU2MywxMSBAQCB2b2lkIEhjaU1hbmFnZXI6OmhhbmRsZUhjaUFjbFBh Y2tldChjb25zdCBxdWludDggKmRhdGEsIGludCBzaXplKQorIAorIHZvaWQgSGNpTWFuYWdlcjo6 aGFuZGxlTGVNZXRhRXZlbnQoY29uc3QgcXVpbnQ4ICpkYXRhKQorIHsKKy0gICAgLy8gU3BlYyB2 NC4yLCBWb2wgMiwgcGFydCBFLCA3LjcuNjVmZgorKyAgICAvLyBTcGVjIHY1LjMsIFZvbCA0LCBw YXJ0IEUsIDcuNy42NS4qCisgICAgIHN3aXRjaCAoKmRhdGEpIHsKKy0gICAgY2FzZSAweDE6IHsK KysgICAgY2FzZSAweDE6IC8vIEhDSV9MRV9Db25uZWN0aW9uX0NvbXBsZXRlCisrICAgIGNhc2Ug MHhBOiAvLyBIQ0lfTEVfRW5oYW5jZWRfQ29ubmVjdGlvbl9Db21wbGV0ZQorKyAgICB7CisgICAg ICAgICBjb25zdCBxdWludDE2IGhhbmRsZSA9IGJ0X2dldF9sZTE2KGRhdGEgKyAyKTsKKyAgICAg ICAgIGVtaXQgY29ubmVjdGlvbkNvbXBsZXRlKGhhbmRsZSk7CisgICAgICAgICBicmVhazsKK2Rp ZmYgLS1naXQgYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzZXJ2aWNl ZGlzY292ZXJ5YWdlbnRfYmx1ZXouY3BwIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9x Ymx1ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50X2JsdWV6LmNwcAoraW5kZXggNmE5MzE0M2Iu LjRhMThjZmM3IDEwMDY0NAorLS0tIGEvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1 ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50X2JsdWV6LmNwcAorKysrIGIvcXRjb25uZWN0aXZp dHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Roc2VydmljZWRpc2NvdmVyeWFnZW50X2JsdWV6LmNw cAorQEAgLTMyMCw3ICszMjAsMTAgQEAgdm9pZCBRQmx1ZXRvb3RoU2VydmljZURpc2NvdmVyeUFn ZW50UHJpdmF0ZTo6X3FfZmluaXNoU2RwU2NhbihRQmx1ZXRvb3RoU2VydmljZUQKKyAgICAgICAg ICAgICBmb3IgKGNvbnN0IFFCbHVldG9vdGhVdWlkICZpZCA6IHNlcnZpY2VDbGFzc1V1aWRzKSB7 CisgICAgICAgICAgICAgICAgIGlmIChpZC5taW5pbXVtU2l6ZSgpID09IDE2KSB7CisgICAgICAg ICAgICAgICAgICAgICBzZXJ2aWNlSW5mby5zZXRTZXJ2aWNlVXVpZChpZCk7CistICAgICAgICAg ICAgICAgICAgICBzZXJ2aWNlSW5mby5zZXRTZXJ2aWNlTmFtZShRQmx1ZXRvb3RoU2VydmljZURp c2NvdmVyeUFnZW50Ojp0cigiQ3VzdG9tIFNlcnZpY2UiKSk7CisrICAgICAgICAgICAgICAgICAg ICBpZiAoc2VydmljZUluZm8uc2VydmljZU5hbWUoKS5pc0VtcHR5KCkpIHsKKysgICAgICAgICAg ICAgICAgICAgICAgICBzZXJ2aWNlSW5mby5zZXRTZXJ2aWNlTmFtZSgKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRQmx1ZXRvb3RoU2VydmljZURpc2NvdmVyeUFnZW50Ojp0 cigiQ3VzdG9tIFNlcnZpY2UiKSk7CisrICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgICAgICBRQmx1ZXRvb3RoU2VydmljZUluZm86OlNlcXVlbmNlIG1vZFNlcSA9CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VJbmZvLmF0dHJpYnV0ZShRQmx1ZXRvb3Ro U2VydmljZUluZm86OlNlcnZpY2VDbGFzc0lkcykudmFsdWU8UUJsdWV0b290aFNlcnZpY2VJbmZv OjpTZXF1ZW5jZT4oKTsKKyAgICAgICAgICAgICAgICAgICAgIG1vZFNlcS5yZW1vdmVPbmUoUVZh cmlhbnQ6OmZyb21WYWx1ZShpZCkpOworQEAgLTMzNCw4ICszMzcsMTAgQEAgdm9pZCBRQmx1ZXRv b3RoU2VydmljZURpc2NvdmVyeUFnZW50UHJpdmF0ZTo6X3FfZmluaXNoU2RwU2NhbihRQmx1ZXRv b3RoU2VydmljZUQKKyAgICAgICAgICAgICAgICAgcUNEZWJ1ZyhRVF9CVF9CTFVFWikgPDwgIkRp c2NvdmVyZWQgc2VydmljZXMiIDw8IGRpc2NvdmVyZWREZXZpY2VzLmF0KDApLmFkZHJlc3MoKS50 b1N0cmluZygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHNlcnZp Y2VJbmZvLnNlcnZpY2VOYW1lKCkgPDwgc2VydmljZUluZm8uc2VydmljZVV1aWQoKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiPj4+IiA8PCBzZXJ2aWNlSW5mby5z ZXJ2aWNlQ2xhc3NVdWlkcygpOworLQorLSAgICAgICAgICAgICAgICBlbWl0IHEtPnNlcnZpY2VE aXNjb3ZlcmVkKHNlcnZpY2VJbmZvKTsKKysgICAgICAgICAgICAgICAgLy8gVXNlIHF1ZXVlZCBj b25uZWN0aW9uIHRvIGFsbG93IHVzIGZpbmlzaCB0aGUgc2VydmljZSBsb29waW5nOyB0aGUgYXBw bGljYXRpb24KKysgICAgICAgICAgICAgICAgLy8gbWlnaHQgY2FsbCBzdG9wKCkgd2hlbiBpdCBo YXMgZGV0ZWN0ZWQgdGhlIHNlcnZpY2Utb2YtaW50ZXJlc3QuCisrICAgICAgICAgICAgICAgIFFN ZXRhT2JqZWN0OjppbnZva2VNZXRob2QocSwgInNlcnZpY2VEaXNjb3ZlcmVkIiwgUXQ6OlF1ZXVl ZENvbm5lY3Rpb24sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UV9BUkcoUUJsdWV0b290aFNlcnZpY2VJbmZvLCBzZXJ2aWNlSW5mbykpOworICAgICAgICAgICAg IH0KKyAgICAgICAgIH0KKyAgICAgfQorZGlmZiAtLWdpdCBhL3F0Y29ubmVjdGl2aXR5L3NyYy9i bHVldG9vdGgvcWJsdWV0b290aHNvY2tldC5jcHAgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRv b3RoL3FibHVldG9vdGhzb2NrZXQuY3BwCitpbmRleCBlNGQ4NTQ0Ny4uYWFkZDQ3NTUgMTAwNjQ0 CistLS0gYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXQuY3Bw CisrKysgYi9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXQuY3Bw CitAQCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQgUUJsdWV0b290aFNvY2tldDo6c2V0U29ja2V0U3Rh dGUoUUJsdWV0b290aFNvY2tldDo6U29ja2V0U3RhdGUgc3RhdGUpCisgYm9vbCBRQmx1ZXRvb3Ro U29ja2V0OjpjYW5SZWFkTGluZSgpIGNvbnN0CisgeworICAgICBRX0QoY29uc3QgUUJsdWV0b290 aFNvY2tldEJhc2UpOworLSAgICByZXR1cm4gZC0+Y2FuUmVhZExpbmUoKTsKKysgICAgcmV0dXJu IGQtPmNhblJlYWRMaW5lKCkgfHwgUUlPRGV2aWNlOjpjYW5SZWFkTGluZSgpOworIH0KKyAKKyAv KiEKK2RpZmYgLS1naXQgYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhz b2NrZXRfYmx1ZXpkYnVzLmNwcCBiL3F0Y29ubmVjdGl2aXR5L3NyYy9ibHVldG9vdGgvcWJsdWV0 b290aHNvY2tldF9ibHVlemRidXMuY3BwCitpbmRleCAwODRhYTk1OC4uZDZhYTE3YTcgMTAwNjQ0 CistLS0gYS9xdGNvbm5lY3Rpdml0eS9zcmMvYmx1ZXRvb3RoL3FibHVldG9vdGhzb2NrZXRfYmx1 ZXpkYnVzLmNwcAorKysrIGIvcXRjb25uZWN0aXZpdHkvc3JjL2JsdWV0b290aC9xYmx1ZXRvb3Ro c29ja2V0X2JsdWV6ZGJ1cy5jcHAKK0BAIC0yODQsNiArMjg0LDEwIEBAIHZvaWQgUUJsdWV0b290 aFNvY2tldFByaXZhdGVCbHVlekRCdXM6OmNvbm5lY3RUb1NlcnZpY2UoCisgICAgICAgICByZXR1 cm47CisgICAgIH0KKyAKKysgICAgaWYgKHNlcnZpY2Uuc29ja2V0UHJvdG9jb2woKSAhPSBRQmx1 ZXRvb3RoU2VydmljZUluZm86OlByb3RvY29sOjpVbmtub3duUHJvdG9jb2wpCisrICAgICAgICBz b2NrZXRUeXBlID0gc2VydmljZS5zb2NrZXRQcm90b2NvbCgpOworKyAgICBxQ0RlYnVnKFFUX0JU X0JMVUVaKSA8PCAiU29ja2V0IHByb3RvY29sIHVzZWQ6IiA8PCBzb2NrZXRUeXBlOworKworICAg ICBjb25uZWN0VG9TZXJ2aWNlKHNlcnZpY2UuZGV2aWNlKCkuYWRkcmVzcygpLCB0YXJnZXRTZXJ2 aWNlLCBvcGVuTW9kZSk7CisgfQorIAorZGlmZiAtLWdpdCBhL3F0Y29ubmVjdGl2aXR5L3Rlc3Rz L2F1dG8vcWJsdWV0b290aHNvY2tldC90c3RfcWJsdWV0b290aHNvY2tldC5jcHAgYi9xdGNvbm5l Y3Rpdml0eS90ZXN0cy9hdXRvL3FibHVldG9vdGhzb2NrZXQvdHN0X3FibHVldG9vdGhzb2NrZXQu Y3BwCitpbmRleCAwNWJjMWEwZi4uYTdiNWVmMWYgMTAwNjQ0CistLS0gYS9xdGNvbm5lY3Rpdml0 eS90ZXN0cy9hdXRvL3FibHVldG9vdGhzb2NrZXQvdHN0X3FibHVldG9vdGhzb2NrZXQuY3BwCisr KysgYi9xdGNvbm5lY3Rpdml0eS90ZXN0cy9hdXRvL3FibHVldG9vdGhzb2NrZXQvdHN0X3FibHVl dG9vdGhzb2NrZXQuY3BwCitAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgdHN0X1FCbHVldG9vdGhT b2NrZXQ6OmluaXRUZXN0Q2FzZSgpCisgICAgIHFEZWJ1ZygpIDw8ICJTdGFydGluZyBkaXNjb3Zl cnkiOworIAorICAgICBzZGEtPnNldFV1aWRGaWx0ZXIoUUJsdWV0b290aFV1aWQoUVN0cmluZyhU RVNUX1NFUlZJQ0VfVVVJRCkpKTsKKy0gICAgc2RhLT5zdGFydChRQmx1ZXRvb3RoU2VydmljZURp c2NvdmVyeUFnZW50OjpNaW5pbWFsRGlzY292ZXJ5KTsKKysgICAgc2RhLT5zdGFydChRQmx1ZXRv b3RoU2VydmljZURpc2NvdmVyeUFnZW50OjpGdWxsRGlzY292ZXJ5KTsKKyAKKyAgICAgZm9yIChp bnQgY29ubmVjdFRpbWUgPSBNYXhDb25uZWN0VGltZTsgIWRvbmVfZGlzY292ZXJ5ICYmIGNvbm5l Y3RUaW1lID4gMDsgY29ubmVjdFRpbWUgLT0gMTAwMCkKKyAgICAgICAgIFFUZXN0OjpxV2FpdCgx MDAwKTsKK1N1Ym1vZHVsZSBxdGRlY2xhcmF0aXZlIGY1NzAxZjBkLi44ZGVmZTdiZjoKK2RpZmYg LS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvY29tbW9uL3FxbWxqc2ZpeGVkcG9vbGFycmF5 X3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9jb21tb24vcXFtbGpzZml4ZWRwb29sYXJyYXlf cC5oCitpbmRleCBiNjViOTk0ZDZjLi4xNWE4Y2Q2ODc4IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJh dGl2ZS9zcmMvcW1sL2NvbW1vbi9xcW1sanNmaXhlZHBvb2xhcnJheV9wLmgKKysrKyBiL3F0ZGVj bGFyYXRpdmUvc3JjL3FtbC9jb21tb24vcXFtbGpzZml4ZWRwb29sYXJyYXlfcC5oCitAQCAtODYs NyArODYsNyBAQCBwdWJsaWM6CisgICAgICAgICBpZiAoUVR5cGVJbmZvPFQ+Ojppc0NvbXBsZXgp IHsKKyAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAg ICAgICAgICAgIG5ldyAoZGF0YSArIGkpIFQodmVjdG9yLmF0KGkpKTsKKy0gICAgICAgIH0gZWxz ZSB7CisrICAgICAgICB9IGVsc2UgaWYgKGNvdW50KSB7CisgICAgICAgICAgICAgbWVtY3B5KGRh dGEsIHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPih2ZWN0b3IuY29uc3REYXRhKCkpLCBjb3VudCAq IHNpemVvZihUKSk7CisgICAgICAgICB9CisgICAgIH0KK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0 aXZlL3NyYy9xbWwvanNydW50aW1lL3F2NHFvYmplY3R3cmFwcGVyLmNwcCBiL3F0ZGVjbGFyYXRp dmUvc3JjL3FtbC9qc3J1bnRpbWUvcXY0cW9iamVjdHdyYXBwZXIuY3BwCitpbmRleCBlNTdjZGQ4 Mjc4Li45NDYxMzU5OGFmIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL2pzcnVu dGltZS9xdjRxb2JqZWN0d3JhcHBlci5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9q c3J1bnRpbWUvcXY0cW9iamVjdHdyYXBwZXIuY3BwCitAQCAtMTE0NSw4ICsxMTQ1LDcgQEAgdm9p ZCBIZWFwOjpRT2JqZWN0V3JhcHBlcjo6bWFya09iamVjdHMoSGVhcDo6QmFzZSAqdGhhdCwgUVY0 OjpNYXJrU3RhY2sgKm1hcmtTdGEKKyB2b2lkIFFPYmplY3RXcmFwcGVyOjpkZXN0cm95T2JqZWN0 KGJvb2wgbGFzdENhbGwpCisgeworICAgICBIZWFwOjpRT2JqZWN0V3JhcHBlciAqaCA9IGQoKTsK Ky0gICAgaWYgKCFoLT5pbnRlcm5hbENsYXNzKQorLSAgICAgICAgcmV0dXJuOyAvLyBkZXN0cm95 T2JqZWN0IGFscmVhZHkgZ290IGNhbGxlZAorKyAgICBRX0FTU0VSVChoLT5pbnRlcm5hbENsYXNz KTsKKyAKKyAgICAgaWYgKGgtPm9iamVjdCgpKSB7CisgICAgICAgICBRUW1sRGF0YSAqZGRhdGEg PSBRUW1sRGF0YTo6Z2V0KGgtPm9iamVjdCgpLCBmYWxzZSk7CitAQCAtMTE3Niw3ICsxMTc1LDcg QEAgdm9pZCBRT2JqZWN0V3JhcHBlcjo6ZGVzdHJveU9iamVjdChib29sIGxhc3RDYWxsKQorICAg ICAgICAgfQorICAgICB9CisgCistICAgIGgtPn5EYXRhKCk7CisrICAgIGgtPmRlc3Ryb3koKTsK KyB9CisgCisgCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sL21lbW9yeS9xdjRt bS5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1tLmNwcAoraW5kZXggMDZj YWYwNGU1YS4uZGExNDlhNjdjNCAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbC9t ZW1vcnkvcXY0bW0uY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWwvbWVtb3J5L3F2NG1t LmNwcAorQEAgLTk4MSw3ICs5ODEsNyBAQCB2b2lkIE1lbW9yeU1hbmFnZXI6OnN3ZWVwKGJvb2wg bGFzdFN3ZWVwLCBDbGFzc0Rlc3Ryb3lTdGF0c0NhbGxiYWNrIGNsYXNzQ291bnRQdAorIAorICAg ICBpZiAoTXVsdGlwbHlXcmFwcGVkUU9iamVjdE1hcCAqbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMg PSBlbmdpbmUtPm1fbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMpIHsKKyAgICAgICAgIGZvciAoTXVs dGlwbHlXcmFwcGVkUU9iamVjdE1hcDo6SXRlcmF0b3IgaXQgPSBtdWx0aXBseVdyYXBwZWRRT2Jq ZWN0cy0+YmVnaW4oKTsgaXQgIT0gbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMtPmVuZCgpOykgewor LSAgICAgICAgICAgIGlmICghaXQudmFsdWUoKS5pc051bGxPclVuZGVmaW5lZCgpKQorKyAgICAg ICAgICAgIGlmIChpdC52YWx1ZSgpLmlzTnVsbE9yVW5kZWZpbmVkKCkpCisgICAgICAgICAgICAg ICAgIGl0ID0gbXVsdGlwbHlXcmFwcGVkUU9iamVjdHMtPmVyYXNlKGl0KTsKKyAgICAgICAgICAg ICBlbHNlCisgICAgICAgICAgICAgICAgICsraXQ7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2 ZS9zcmMvcW1sbW9kZWxzL3FxbWxkZWxlZ2F0ZW1vZGVsLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3Jj L3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKK2luZGV4IDIwNzlhOGVkMDQuLmE1Nzdj YjIzNTEgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVn YXRlbW9kZWwuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2RlbHMvcXFtbGRlbGVn YXRlbW9kZWwuY3BwCitAQCAtMzg5LDYgKzM4OSwxMiBAQCB2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVs UHJpdmF0ZTo6Y29ubmVjdFRvQWJzdHJhY3RJdGVtTW9kZWwoKQorICAgICAgICAgICAgICAgICAg ICAgICBxLCAgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3Ffcm93c1JlbW92ZWQoUU1vZGVsSW5k ZXgsaW50LGludCkpKTsKKyAgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJhY3RJdGVt TW9kZWwsIFNJR05BTChyb3dzQWJvdXRUb0JlUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSks CisgICAgICAgICAgICAgICAgICAgICAgIHEsICBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9y b3dzQWJvdXRUb0JlUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworKyAgICBxbWxvYmpl Y3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lHTkFMKGNvbHVtbnNJbnNlcnRl ZChRTW9kZWxJbmRleCxpbnQsaW50KSksCisrICAgICAgICAgICAgICAgICAgICAgIHEsIFFRbWxE ZWxlZ2F0ZU1vZGVsLCBTTE9UKF9xX2NvbHVtbnNJbnNlcnRlZChRTW9kZWxJbmRleCxpbnQsaW50 KSkpOworKyAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwgU0lH TkFMKGNvbHVtbnNSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSwKKysgICAgICAgICAgICAg ICAgICAgICAgcSwgUVFtbERlbGVnYXRlTW9kZWwsIFNMT1QoX3FfY29sdW1uc1JlbW92ZWQoUU1v ZGVsSW5kZXgsaW50LGludCkpKTsKKysgICAgcW1sb2JqZWN0X2Nvbm5lY3QoYWltLCBRQWJzdHJh Y3RJdGVtTW9kZWwsIFNJR05BTChjb2x1bW5zTW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9k ZWxJbmRleCxpbnQpKSwKKysgICAgICAgICAgICAgICAgICAgICAgcSwgUVFtbERlbGVnYXRlTW9k ZWwsIFNMT1QoX3FfY29sdW1uc01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgs aW50KSkpOworICAgICBxbWxvYmplY3RfY29ubmVjdChhaW0sIFFBYnN0cmFjdEl0ZW1Nb2RlbCwg U0lHTkFMKGRhdGFDaGFuZ2VkKFFNb2RlbEluZGV4LFFNb2RlbEluZGV4LFFWZWN0b3I8aW50Pikp LAorICAgICAgICAgICAgICAgICAgICAgICBxLCBRUW1sRGVsZWdhdGVNb2RlbCwgU0xPVChfcV9k YXRhQ2hhbmdlZChRTW9kZWxJbmRleCxRTW9kZWxJbmRleCxRVmVjdG9yPGludD4pKSk7CisgICAg IHFtbG9iamVjdF9jb25uZWN0KGFpbSwgUUFic3RyYWN0SXRlbU1vZGVsLCBTSUdOQUwocm93c01v dmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSksCitAQCAtNDEzLDYgKzQx OSwxMiBAQCB2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsUHJpdmF0ZTo6ZGlzY29ubmVjdEZyb21BYnN0 cmFjdEl0ZW1Nb2RlbCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgcSwgU0xPVChfcV9yb3dz QWJvdXRUb0JlUmVtb3ZlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOworICAgICBRT2JqZWN0Ojpk aXNjb25uZWN0KGFpbSwgU0lHTkFMKHJvd3NSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICBxLCBTTE9UKF9xX3Jvd3NSZW1vdmVkKFFNb2RlbElu ZGV4LGludCxpbnQpKSk7CisrICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwoY29s dW1uc0luc2VydGVkKFFNb2RlbEluZGV4LGludCxpbnQpKSwgcSwKKysgICAgICAgICAgICAgICAg ICAgICAgICBTTE9UKF9xX2NvbHVtbnNJbnNlcnRlZChRTW9kZWxJbmRleCxpbnQsaW50KSkpOwor KyAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGFpbSwgU0lHTkFMKGNvbHVtbnNSZW1vdmVkKFFNb2Rl bEluZGV4LGludCxpbnQpKSwgcSwKKysgICAgICAgICAgICAgICAgICAgICAgICBTTE9UKF9xX2Nv bHVtbnNSZW1vdmVkKFFNb2RlbEluZGV4LGludCxpbnQpKSk7CisrICAgIFFPYmplY3Q6OmRpc2Nv bm5lY3QoYWltLCBTSUdOQUwoY29sdW1uc01vdmVkKFFNb2RlbEluZGV4LGludCxpbnQsUU1vZGVs SW5kZXgsaW50KSksIHEsCisrICAgICAgICAgICAgICAgICAgICAgICAgU0xPVChfcV9jb2x1bW5z TW92ZWQoUU1vZGVsSW5kZXgsaW50LGludCxRTW9kZWxJbmRleCxpbnQpKSk7CisgICAgIFFPYmpl Y3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwoZGF0YUNoYW5nZWQoUU1vZGVsSW5kZXgsUU1vZGVs SW5kZXgsUVZlY3RvcjxpbnQ+KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgcSwgU0xPVChf cV9kYXRhQ2hhbmdlZChRTW9kZWxJbmRleCxRTW9kZWxJbmRleCxRVmVjdG9yPGludD4pKSk7Cisg ICAgIFFPYmplY3Q6OmRpc2Nvbm5lY3QoYWltLCBTSUdOQUwocm93c01vdmVkKFFNb2RlbEluZGV4 LGludCxpbnQsUU1vZGVsSW5kZXgsaW50KSksCitAQCAtMTk3Myw2ICsxOTg1LDM4IEBAIHZvaWQg UVFtbERlbGVnYXRlTW9kZWw6Ol9xX3Jvd3NNb3ZlZCgKKyAgICAgfQorIH0KKyAKKyt2b2lkIFFR bWxEZWxlZ2F0ZU1vZGVsOjpfcV9jb2x1bW5zSW5zZXJ0ZWQoY29uc3QgUU1vZGVsSW5kZXggJnBh cmVudCwgaW50IGJlZ2luLCBpbnQgZW5kKQorK3sKKysgICAgUV9EKFFRbWxEZWxlZ2F0ZU1vZGVs KTsKKysgICAgUV9VTlVTRUQoZW5kKTsKKysgICAgaWYgKHBhcmVudCA9PSBkLT5tX2FkYXB0b3JN b2RlbC5yb290SW5kZXggJiYgYmVnaW4gPT0gMCkgeworKyAgICAgICAgLy8gbWFyayBhbGwgaXRl bXMgYXMgY2hhbmdlZAorKyAgICAgICAgX3FfaXRlbXNDaGFuZ2VkKDAsIGQtPm1fY291bnQsIFFW ZWN0b3I8aW50PigpKTsKKysgICAgfQorK30KKysKKyt2b2lkIFFRbWxEZWxlZ2F0ZU1vZGVsOjpf cV9jb2x1bW5zUmVtb3ZlZChjb25zdCBRTW9kZWxJbmRleCAmcGFyZW50LCBpbnQgYmVnaW4sIGlu dCBlbmQpCisreworKyAgICBRX0QoUVFtbERlbGVnYXRlTW9kZWwpOworKyAgICBRX1VOVVNFRChl bmQpOworKyAgICBpZiAocGFyZW50ID09IGQtPm1fYWRhcHRvck1vZGVsLnJvb3RJbmRleCAmJiBi ZWdpbiA9PSAwKSB7CisrICAgICAgICAvLyBtYXJrIGFsbCBpdGVtcyBhcyBjaGFuZ2VkCisrICAg ICAgICBfcV9pdGVtc0NoYW5nZWQoMCwgZC0+bV9jb3VudCwgUVZlY3RvcjxpbnQ+KCkpOworKyAg ICB9CisrfQorKworK3ZvaWQgUVFtbERlbGVnYXRlTW9kZWw6Ol9xX2NvbHVtbnNNb3ZlZChjb25z dCBRTW9kZWxJbmRleCAmcGFyZW50LCBpbnQgc3RhcnQsIGludCBlbmQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFNb2RlbEluZGV4ICZkZXN0aW5hdGlv biwgaW50IGNvbHVtbikKKyt7CisrICAgIFFfRChRUW1sRGVsZWdhdGVNb2RlbCk7CisrICAgIFFf VU5VU0VEKGVuZCk7CisrICAgIGlmICgocGFyZW50ID09IGQtPm1fYWRhcHRvck1vZGVsLnJvb3RJ bmRleCAmJiBzdGFydCA9PSAwKQorKyAgICAgICAgfHwgKGRlc3RpbmF0aW9uID09IGQtPm1fYWRh cHRvck1vZGVsLnJvb3RJbmRleCAmJiBjb2x1bW4gPT0gMCkpIHsKKysgICAgICAgIC8vIG1hcmsg YWxsIGl0ZW1zIGFzIGNoYW5nZWQKKysgICAgICAgIF9xX2l0ZW1zQ2hhbmdlZCgwLCBkLT5tX2Nv dW50LCBRVmVjdG9yPGludD4oKSk7CisrICAgIH0KKyt9CisrCisgdm9pZCBRUW1sRGVsZWdhdGVN b2RlbDo6X3FfZGF0YUNoYW5nZWQoY29uc3QgUU1vZGVsSW5kZXggJmJlZ2luLCBjb25zdCBRTW9k ZWxJbmRleCAmZW5kLCBjb25zdCBRVmVjdG9yPGludD4gJnJvbGVzKQorIHsKKyAgICAgUV9EKFFR bWxEZWxlZ2F0ZU1vZGVsKTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xbWxtb2Rl bHMvcXFtbGRlbGVnYXRlbW9kZWxfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcW1sbW9kZWxzL3Fx bWxkZWxlZ2F0ZW1vZGVsX3AuaAoraW5kZXggOGFhYjRiYWRjYS4uZDE0MGJmYmFhZiAxMDA2NDQK Ky0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbF9wLmgK KysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3FtbG1vZGVscy9xcW1sZGVsZWdhdGVtb2RlbF9wLmgK K0BAIC0xNTIsNiArMTUyLDkgQEAgcHJpdmF0ZSBRX1NMT1RTOgorICAgICB2b2lkIF9xX2l0ZW1z TW92ZWQoaW50IGZyb20sIGludCB0bywgaW50IGNvdW50KTsKKyAgICAgdm9pZCBfcV9tb2RlbFJl c2V0KCk7CisgICAgIHZvaWQgX3Ffcm93c0luc2VydGVkKGNvbnN0IFFNb2RlbEluZGV4ICYsaW50 LGludCk7CisrICAgIHZvaWQgX3FfY29sdW1uc0luc2VydGVkKGNvbnN0IFFNb2RlbEluZGV4ICYs IGludCwgaW50KTsKKysgICAgdm9pZCBfcV9jb2x1bW5zUmVtb3ZlZChjb25zdCBRTW9kZWxJbmRl eCAmLCBpbnQsIGludCk7CisrICAgIHZvaWQgX3FfY29sdW1uc01vdmVkKGNvbnN0IFFNb2RlbElu ZGV4ICYsIGludCwgaW50LCBjb25zdCBRTW9kZWxJbmRleCAmLCBpbnQpOworICAgICB2b2lkIF9x X3Jvd3NBYm91dFRvQmVSZW1vdmVkKGNvbnN0IFFNb2RlbEluZGV4ICZwYXJlbnQsIGludCBiZWdp biwgaW50IGVuZCk7CisgICAgIHZvaWQgX3Ffcm93c1JlbW92ZWQoY29uc3QgUU1vZGVsSW5kZXgg JixpbnQsaW50KTsKKyAgICAgdm9pZCBfcV9yb3dzTW92ZWQoY29uc3QgUU1vZGVsSW5kZXggJiwg aW50LCBpbnQsIGNvbnN0IFFNb2RlbEluZGV4ICYsIGludCk7CitkaWZmIC0tZ2l0IGEvcXRkZWNs YXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9xYWNjZXNzaWJsZXF1aWNraXRlbS5jcHAgYi9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2tpdGVtLmNw cAoraW5kZXggODU3MTlmZGM4MC4uNzhlMmFiMzAyYyAxMDA2NDQKKy0tLSBhL3F0ZGVjbGFyYXRp dmUvc3JjL3F1aWNrL2FjY2Vzc2libGUvcWFjY2Vzc2libGVxdWlja2l0ZW0uY3BwCisrKysgYi9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3NpYmxlL3FhY2Nlc3NpYmxlcXVpY2tpdGVtLmNw cAorQEAgLTQ2LDYgKzQ2LDcgQEAKKyAjaW5jbHVkZSAiUXRRdWljay9wcml2YXRlL3FxdWlja3Rl eHRpbnB1dF9wLmgiCisgI2luY2x1ZGUgIlF0UXVpY2svcHJpdmF0ZS9xcXVpY2thY2Nlc3NpYmxl YXR0YWNoZWRfcC5oIgorICNpbmNsdWRlICJRdFF1aWNrL3FxdWlja3RleHRkb2N1bWVudC5oIgor KyNpbmNsdWRlICJRdFF1aWNrL3FxdWlja3JlbmRlcmNvbnRyb2wuaCIKKyBRVF9CRUdJTl9OQU1F U1BBQ0UKKyAKKyAjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCitAQCAtNTcsNyArNTgsMTkg QEAgUUFjY2Vzc2libGVRdWlja0l0ZW06OlFBY2Nlc3NpYmxlUXVpY2tJdGVtKFFRdWlja0l0ZW0g Kml0ZW0pCisgCisgUVdpbmRvdyAqUUFjY2Vzc2libGVRdWlja0l0ZW06OndpbmRvdygpIGNvbnN0 CisgeworLSAgICByZXR1cm4gaXRlbSgpLT53aW5kb3coKTsKKysgICAgUVF1aWNrV2luZG93ICp3 aW5kb3cgPSBpdGVtKCktPndpbmRvdygpOworKworKyAgICAvLyBGb3IgUVF1aWNrV2lkZ2V0IHRo ZSBhYm92ZSB3aW5kb3cgd2lsbCBiZSB0aGUgb2Zmc2NyZWVuIFFRdWlja1dpbmRvdywKKysgICAg Ly8gd2hpY2ggaXMgbm90IGEgcGFydCBvZiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLiBEZXRlY3Qg dGhpcyBjYXNlIGFuZAorKyAgICAvLyByZXR1cm4gdGhlIHdpbmRvdyBmb3IgdGhlIFFRdWlja1dp ZGdldCBpbnN0ZWFkLgorKyAgICBpZiAod2luZG93ICYmICF3aW5kb3ctPmhhbmRsZSgpKSB7Cisr ICAgICAgICBpZiAoUVF1aWNrUmVuZGVyQ29udHJvbCAqcmVuZGVyQ29udHJvbCA9IFFRdWlja1dp bmRvd1ByaXZhdGU6OmdldCh3aW5kb3cpLT5yZW5kZXJDb250cm9sKSB7CisrICAgICAgICAgICAg aWYgKFFXaW5kb3cgKnJlbmRlcldpbmRvdyA9IHJlbmRlckNvbnRyb2wtPnJlbmRlcldpbmRvdyhu dWxscHRyKSkKKysgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcldpbmRvdzsKKysgICAgICAg IH0KKysgICAgfQorKworKyAgICByZXR1cm4gd2luZG93OworIH0KKyAKKyBpbnQgUUFjY2Vzc2li bGVRdWlja0l0ZW06OmNoaWxkQ291bnQoKSBjb25zdAorQEAgLTExMywxOSArMTI2LDE1IEBAIFFB Y2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrSXRlbTo6Y2hpbGRBdChpbnQgeCwg aW50IHkpIGNvbnN0CisgUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxlUXVpY2tJdGVt OjpwYXJlbnQoKSBjb25zdAorIHsKKyAgICAgUVF1aWNrSXRlbSAqcGFyZW50ID0gaXRlbSgpLT5w YXJlbnRJdGVtKCk7CistICAgIFFRdWlja1dpbmRvdyAqd2luZG93ID0gaXRlbSgpLT53aW5kb3co KTsKKy0gICAgUVF1aWNrSXRlbSAqY2kgPSB3aW5kb3cgPyB3aW5kb3ctPmNvbnRlbnRJdGVtKCkg OiBudWxscHRyOworKyAgICBRUXVpY2tXaW5kb3cgKml0ZW1XaW5kb3cgPSBpdGVtKCktPndpbmRv dygpOworKyAgICBRUXVpY2tJdGVtICpjaSA9IGl0ZW1XaW5kb3cgPyBpdGVtV2luZG93LT5jb250 ZW50SXRlbSgpIDogbnVsbHB0cjsKKyAgICAgd2hpbGUgKHBhcmVudCAmJiAhUVF1aWNrSXRlbVBy aXZhdGU6OmdldChwYXJlbnQpLT5pc0FjY2Vzc2libGUgJiYgcGFyZW50ICE9IGNpKQorICAgICAg ICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRJdGVtKCk7CisgCisgICAgIGlmIChwYXJlbnQpIHsK KyAgICAgICAgIGlmIChwYXJlbnQgPT0gY2kpIHsKKy0gICAgICAgICAgICAvLyBKdW1wIG91dCB0 byB0aGUgc2NlbmUgd2lkZ2V0IGlmIHRoZSBwYXJlbnQgaXMgdGhlIHJvb3QgaXRlbS4KKy0gICAg ICAgICAgICAvLyBUaGVyZSBhcmUgdHdvIHJvb3QgaXRlbXMsIFFRdWlja1dpbmRvdzo6cm9vdEl0 ZW0gYW5kCistICAgICAgICAgICAgLy8gUVF1aWNrVmlldzo6ZGVjbGFyYXRpdmVSb290LiBUaGUg Zm9ybWVyIGlzIHRoZSB0cnVlIHJvb3QgaXRlbSwKKy0gICAgICAgICAgICAvLyBidXQgaXMgbm90 IGEgcGFydCBvZiB0aGUgYWNjZXNzaWJpbGl0eSB0cmVlLiBDaGVjayBpZiB3ZSBoaXQKKy0gICAg ICAgICAgICAvLyBpdCBoZXJlIGFuZCByZXR1cm4gYW4gaW50ZXJmYWNlIGZvciB0aGUgc2NlbmUg aW5zdGVhZC4KKy0gICAgICAgICAgICByZXR1cm4gUUFjY2Vzc2libGU6OnF1ZXJ5QWNjZXNzaWJs ZUludGVyZmFjZSh3aW5kb3cpOworKyAgICAgICAgICAgIC8vIEp1bXAgb3V0IHRvIHRoZSB3aW5k b3cgaWYgdGhlIHBhcmVudCBpcyB0aGUgcm9vdCBpdGVtCisrICAgICAgICAgICAgcmV0dXJuIFFB Y2Nlc3NpYmxlOjpxdWVyeUFjY2Vzc2libGVJbnRlcmZhY2Uod2luZG93KCkpOworICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgICB3aGlsZSAocGFyZW50ICYmICFwYXJlbnQtPmRfZnVuYygp LT5pc0FjY2Vzc2libGUpCisgICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50 SXRlbSgpOworQEAgLTE4OCw3ICsxOTcsNyBAQCBRQWNjZXNzaWJsZTo6U3RhdGUgUUFjY2Vzc2li bGVRdWlja0l0ZW06OnN0YXRlKCkgY29uc3QKKyAgICAgUVJlY3Qgdmlld1JlY3RfID0gdmlld1Jl Y3QoKTsKKyAgICAgUVJlY3QgaXRlbVJlY3QgPSByZWN0KCk7CisgCistICAgIGlmICh2aWV3UmVj dF8uaXNOdWxsKCkgfHwgaXRlbVJlY3QuaXNOdWxsKCkgfHwgIWl0ZW0oKS0+d2luZG93KCkgfHwg IWl0ZW0oKS0+d2luZG93KCktPmlzVmlzaWJsZSgpIHx8IWl0ZW0oKS0+aXNWaXNpYmxlKCkgfHwg cUZ1enp5SXNOdWxsKGl0ZW0oKS0+b3BhY2l0eSgpKSkKKysgICAgaWYgKHZpZXdSZWN0Xy5pc051 bGwoKSB8fCBpdGVtUmVjdC5pc051bGwoKSB8fCAhd2luZG93KCkgfHwgIXdpbmRvdygpLT5pc1Zp c2libGUoKSB8fCFpdGVtKCktPmlzVmlzaWJsZSgpIHx8IHFGdXp6eUlzTnVsbChpdGVtKCktPm9w YWNpdHkoKSkpCisgICAgICAgICBzdGF0ZS5pbnZpc2libGUgPSB0cnVlOworICAgICBpZiAoIXZp ZXdSZWN0Xy5pbnRlcnNlY3RzKGl0ZW1SZWN0KSkKKyAgICAgICAgIHN0YXRlLm9mZnNjcmVlbiA9 IHRydWU7CitAQCAtMjAxLDYgKzIxMCwxMCBAQCBRQWNjZXNzaWJsZTo6U3RhdGUgUUFjY2Vzc2li bGVRdWlja0l0ZW06OnN0YXRlKCkgY29uc3QKKyAgICAgaWYgKHJvbGUoKSA9PSBRQWNjZXNzaWJs ZTo6RWRpdGFibGVUZXh0KQorICAgICAgICAgaWYgKGF1dG8gdGkgPSBxb2JqZWN0X2Nhc3Q8UVF1 aWNrVGV4dElucHV0ICo+KGl0ZW0oKSkpCisgICAgICAgICAgICAgc3RhdGUucGFzc3dvcmRFZGl0 ID0gdGktPmVjaG9Nb2RlKCkgIT0gUVF1aWNrVGV4dElucHV0OjpOb3JtYWw7CisrICAgIGlmICgh aXRlbSgpLT5pc0VuYWJsZWQoKSkgeworKyAgICAgICAgc3RhdGUuZm9jdXNhYmxlID0gZmFsc2U7 CisrICAgICAgICBzdGF0ZS5kaXNhYmxlZCA9IHRydWU7CisrICAgIH0KKyAgICAgcmV0dXJuIHN0 YXRlOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9hY2Nlc3Np YmxlL3FhY2Nlc3NpYmxlcXVpY2t2aWV3X3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2Fj Y2Vzc2libGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5oCitpbmRleCAzOWZmY2FmMzljLi44YmFh MDEzMzBjIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svYWNjZXNzaWJsZS9x YWNjZXNzaWJsZXF1aWNrdmlld19wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2Fj Y2Vzc2libGUvcWFjY2Vzc2libGVxdWlja3ZpZXdfcC5oCitAQCAtNTgsNyArNTgsNyBAQCBRVF9C RUdJTl9OQU1FU1BBQ0UKKyAKKyAjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisgCistY2xh c3MgUUFjY2Vzc2libGVRdWlja1dpbmRvdyA6IHB1YmxpYyBRQWNjZXNzaWJsZU9iamVjdAorK2Ns YXNzIFFfUVVJQ0tfRVhQT1JUIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3cgOiBwdWJsaWMgUUFjY2Vz c2libGVPYmplY3QKKyB7CisgcHVibGljOgorICAgICBRQWNjZXNzaWJsZVF1aWNrV2luZG93KFFR dWlja1dpbmRvdyAqb2JqZWN0KTsKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj ay9pdGVtcy9xcXVpY2tkcmFnLmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3Fx dWlja2RyYWcuY3BwCitpbmRleCA4MzIxZmNmZWVkLi4zODMwNzhiM2I5IDEwMDY0NAorLS0tIGEv cXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrZHJhZy5jcHAKKysrKyBiL3F0ZGVj bGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2RyYWcuY3BwCitAQCAtNDgxLDcgKzQ4MSw5 IEBAIHZvaWQgUVF1aWNrRHJhZ0F0dGFjaGVkOjpzZXRLZXlzKGNvbnN0IFFTdHJpbmdMaXN0ICZr ZXlzKQorICAgICBccW1sYXR0YWNoZWRwcm9wZXJ0eSBzdHJpbmdsaXN0IFF0UXVpY2s6OkRyYWc6 Om1pbWVEYXRhCisgICAgIFxzaW5jZSA1LjIKKyAKKy0gICAgVGhpcyBwcm9wZXJ0eSBob2xkcyBh IG1hcCBvZiBtaW1lRGF0YSB0aGF0IGlzIHVzZWQgZHVyaW5nIHN0YXJ0RHJhZy4KKysgICAgVGhp cyBwcm9wZXJ0eSBob2xkcyBhIG1hcCBmcm9tIG1pbWUgdHlwZSB0byBkYXRhIHRoYXQgaXMgdXNl ZCBkdXJpbmcgc3RhcnREcmFnLgorKyAgICBUaGUgbWltZSBkYXRhIG5lZWRzIHRvIGJlIGEgXGMg c3RyaW5nLCBvciBhbiBcYyBBcnJheUJ1ZmZlciB3aXRoIHRoZSBkYXRhIGVuY29kZWQKKysgICAg YWNjb3JkaW5nIHRvIHRoZSBtaW1lIHR5cGUuCisgKi8KKyAKKyBRVmFyaWFudE1hcCBRUXVpY2tE cmFnQXR0YWNoZWQ6Om1pbWVEYXRhKCkgY29uc3QKK0BAIC03NjYsOCArNzY4LDEyIEBAIFF0OjpE cm9wQWN0aW9uIFFRdWlja0RyYWdBdHRhY2hlZFByaXZhdGU6OnN0YXJ0RHJhZyhRdDo6RHJvcEFj dGlvbnMgc3VwcG9ydGVkQWN0CisgICAgIFFEcmFnICpkcmFnID0gbmV3IFFEcmFnKHNvdXJjZSA/ IHNvdXJjZSA6IHEpOworICAgICBRTWltZURhdGEgKm1pbWVEYXRhID0gbmV3IFFNaW1lRGF0YSgp OworIAorLSAgICBmb3IgKGF1dG8gaXQgPSBleHRlcm5hbE1pbWVEYXRhLmNiZWdpbigpLCBlbmQg PSBleHRlcm5hbE1pbWVEYXRhLmNlbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorLSAgICAgICAgbWlt ZURhdGEtPnNldERhdGEoaXQua2V5KCksIGl0LnZhbHVlKCkudG9TdHJpbmcoKS50b1V0ZjgoKSk7 CisrICAgIGZvciAoYXV0byBpdCA9IGV4dGVybmFsTWltZURhdGEuY2JlZ2luKCksIGVuZCA9IGV4 dGVybmFsTWltZURhdGEuY2VuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKysgICAgICAgIGlmIChz dGF0aWNfY2FzdDxRTWV0YVR5cGU6OlR5cGU+KGl0LnZhbHVlKCkudHlwZSgpKSA9PSBRTWV0YVR5 cGU6OlFCeXRlQXJyYXkpCisrICAgICAgICAgICAgbWltZURhdGEtPnNldERhdGEoaXQua2V5KCks IGl0LnZhbHVlKCkudG9CeXRlQXJyYXkoKSk7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAg bWltZURhdGEtPnNldERhdGEoaXQua2V5KCksIGl0LnZhbHVlKCkudG9TdHJpbmcoKS50b1V0Zjgo KSk7CisrICAgIH0KKyAKKyAgICAgZHJhZy0+c2V0TWltZURhdGEobWltZURhdGEpOworICAgICBp ZiAocGl4bWFwTG9hZGVyLmlzUmVhZHkoKSkgeworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW0uY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2sv aXRlbXMvcXF1aWNraXRlbS5jcHAKK2luZGV4IDc1ZjE0NTc4MTYuLmRlYzBhZTE5YWUgMTAwNjQ0 CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtLmNwcAorKysr IGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbS5jcHAKK0BAIC01OSw2 ICs1OSw3IEBACisgI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3FudW1lcmljX3AuaD4KKyAjaW5j bHVkZSA8UXRHdWkvcXBhL3FwbGF0Zm9ybXRoZW1lLmg+CisgI2luY2x1ZGUgPFF0Q29yZS9xbG9n Z2luZ2NhdGVnb3J5Lmg+CisrI2luY2x1ZGUgPFF0Q29yZS9wcml2YXRlL3FkdXBsaWNhdGV0cmFj a2VyX3AuaD4KKyAKKyAjaW5jbHVkZSA8cHJpdmF0ZS9xcW1sZ2xvYmFsX3AuaD4KKyAjaW5jbHVk ZSA8cHJpdmF0ZS9xcW1sZW5naW5lX3AuaD4KK0BAIC0yMzI2LDYgKzIzMjcsNyBAQCBRUXVpY2tJ dGVtOjpRUXVpY2tJdGVtKFFRdWlja0l0ZW1Qcml2YXRlICZkZCwgUVF1aWNrSXRlbSAqcGFyZW50 KQorIFFRdWlja0l0ZW06On5RUXVpY2tJdGVtKCkKKyB7CisgICAgIFFfRChRUXVpY2tJdGVtKTsK KysgICAgZC0+aW5EZXN0cnVjdG9yID0gdHJ1ZTsKKyAKKyAgICAgaWYgKGQtPndpbmRvd1JlZkNv dW50ID4gMSkKKyAgICAgICAgIGQtPndpbmRvd1JlZkNvdW50ID0gMTsgLy8gTWFrZSBzdXJlIHdp bmRvdyBpcyBzZXQgdG8gbnVsbCBpbiBuZXh0IGNhbGwgdG8gZGVyZWZXaW5kb3coKS4KK0BAIC0y NTI2LDYgKzI1MjgsNyBAQCBRUXVpY2tJdGVtKiBRUXVpY2tJdGVtUHJpdmF0ZTo6bmV4dFByZXZJ dGVtSW5UYWJGb2N1c0NoYWluKFFRdWlja0l0ZW0gKml0ZW0sIGJvbworICAgICBRUXVpY2tJdGVt ICpjdXJyZW50ID0gaXRlbTsKKyAgICAgcUNEZWJ1ZyhEQkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVt UHJpdmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluOiBzdGFydEl0ZW06IiA8PCBzdGFy dEl0ZW07CisgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5l eHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbjogZmlyc3RGcm9tSXRlbToiIDw8IGZpcnN0RnJvbUl0 ZW07CisrICAgIFFEdXBsaWNhdGVUcmFja2VyPFFRdWlja0l0ZW0gKj4gY3ljbGVEZXRlY3RvcjsK KyAgICAgZG8geworICAgICAgICAgcUNEZWJ1ZyhEQkdfRk9DVVMpIDw8ICJRUXVpY2tJdGVtUHJp dmF0ZTo6bmV4dFByZXZJdGVtSW5UYWJGb2N1c0NoYWluOiBjdXJyZW50OiIgPDwgY3VycmVudDsK KyAgICAgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6Om5leHRQ cmV2SXRlbUluVGFiRm9jdXNDaGFpbjogZnJvbToiIDw8IGZyb207CitAQCAtMjU5Miw3ICsyNTk1 LDEwIEBAIFFRdWlja0l0ZW0qIFFRdWlja0l0ZW1Qcml2YXRlOjpuZXh0UHJldkl0ZW1JblRhYkZv Y3VzQ2hhaW4oUVF1aWNrSXRlbSAqaXRlbSwgYm9vCisgICAgICAgICAvLyB0cmF2ZXJzZWQgYWxs IG9mIHRoZSBjaGFpbiAoYnkgY29tcGFyZSB0aGUgW2N1cnJlbnRdIGl0ZW0gd2l0aCBbc3RhcnRJ dGVtXSkKKyAgICAgICAgIC8vIFNpbmNlIHRoZSBbc3RhcnRJdGVtXSBtaWdodCBiZSBwcm9tb3Rl ZCB0byBpdHMgcGFyZW50IGlmIGl0IGlzIGludmlzaWJsZSwKKyAgICAgICAgIC8vIHdlIHN0aWxs IGhhdmUgdG8gY2hlY2sgW2N1cnJlbnRdIGl0ZW0gd2l0aCBvcmlnaW5hbCBzdGFydCBpdGVtCist ICAgICAgICBpZiAoKGN1cnJlbnQgPT0gc3RhcnRJdGVtIHx8IGN1cnJlbnQgPT0gb3JpZ2luYWxT dGFydEl0ZW0pICYmIGZyb20gPT0gZmlyc3RGcm9tSXRlbSkgeworKyAgICAgICAgLy8gV2UgbWln aHQgYWxzbyBydW4gaW50byBhIGN5Y2xlIGJlZm9yZSB3ZSByZWFjaCBmaXJzdEZyb21JdGVtIGFn YWluCisrICAgICAgICAvLyBidXQgbm90ZSB0aGF0IHdlIGhhdmUgdG8gaWdub3JlIGN1cnJlbnQg aWYgd2UgYXJlIG1lYW50IHRvIHNraXAgaXQKKysgICAgICAgIGlmICgoKGN1cnJlbnQgPT0gc3Rh cnRJdGVtIHx8IGN1cnJlbnQgPT0gb3JpZ2luYWxTdGFydEl0ZW0pICYmIGZyb20gPT0gZmlyc3RG cm9tSXRlbSkgfHwKKysgICAgICAgICAgICAgICAgKCFza2lwICYmIGN5Y2xlRGV0ZWN0b3IuaGFz U2VlbihjdXJyZW50KSkpIHsKKyAgICAgICAgICAgICAvLyB3cmFwcGVkIGFyb3VuZCwgYXZvaWQg ZW5kbGVzcyBsb29wcworICAgICAgICAgICAgIGlmIChpdGVtID09IGNvbnRlbnRJdGVtKSB7Cisg ICAgICAgICAgICAgICAgIHFDRGVidWcoREJHX0ZPQ1VTKSA8PCAiUVF1aWNrSXRlbVByaXZhdGU6 Om5leHRQcmV2SXRlbUluVGFiRm9jdXNDaGFpbjogbG9vcGVkLCByZXR1cm4gY29udGVudEl0ZW0i OworQEAgLTI2ODksOSArMjY5NSw4IEBAIHZvaWQgUVF1aWNrSXRlbTo6c2V0UGFyZW50SXRlbShR UXVpY2tJdGVtICpwYXJlbnRJdGVtKQorIAorICAgICAgICAgY29uc3QgYm9vbCB3YXNWaXNpYmxl ID0gaXNWaXNpYmxlKCk7CisgICAgICAgICBvcC0+cmVtb3ZlQ2hpbGQodGhpcyk7CistICAgICAg ICBpZiAod2FzVmlzaWJsZSkgeworKyAgICAgICAgaWYgKHdhc1Zpc2libGUgJiYgIW9wLT5pbkRl c3RydWN0b3IpCisgICAgICAgICAgICAgZW1pdCBvbGRQYXJlbnRJdGVtLT52aXNpYmxlQ2hpbGRy ZW5DaGFuZ2VkKCk7CistICAgICAgICB9CisgICAgIH0gZWxzZSBpZiAoZC0+d2luZG93KSB7Cisg ICAgICAgICBRUXVpY2tXaW5kb3dQcml2YXRlOjpnZXQoZC0+d2luZG93KS0+cGFyZW50bGVzc0l0 ZW1zLnJlbW92ZSh0aGlzKTsKKyAgICAgfQorQEAgLTI3NjgsOCArMjc3Myw5IEBAIHZvaWQgUVF1 aWNrSXRlbTo6c2V0UGFyZW50SXRlbShRUXVpY2tJdGVtICpwYXJlbnRJdGVtKQorIAorICAgICBk LT5pdGVtQ2hhbmdlKEl0ZW1QYXJlbnRIYXNDaGFuZ2VkLCBkLT5wYXJlbnRJdGVtKTsKKyAKKy0g ICAgZW1pdCBwYXJlbnRDaGFuZ2VkKGQtPnBhcmVudEl0ZW0pOworLSAgICBpZiAoaXNWaXNpYmxl KCkgJiYgZC0+cGFyZW50SXRlbSkKKysgICAgaWYgKCFkLT5pbkRlc3RydWN0b3IpCisrICAgICAg ICBlbWl0IHBhcmVudENoYW5nZWQoZC0+cGFyZW50SXRlbSk7CisrICAgIGlmIChpc1Zpc2libGUo KSAmJiBkLT5wYXJlbnRJdGVtICYmICFRUXVpY2tJdGVtUHJpdmF0ZTo6Z2V0KGQtPnBhcmVudEl0 ZW0pLT5pbkRlc3RydWN0b3IpCisgICAgICAgICBlbWl0IGQtPnBhcmVudEl0ZW0tPnZpc2libGVD aGlsZHJlbkNoYW5nZWQoKTsKKyB9CisgCitAQCAtMjk2NSw3ICsyOTcxLDggQEAgdm9pZCBRUXVp Y2tJdGVtUHJpdmF0ZTo6cmVtb3ZlQ2hpbGQoUVF1aWNrSXRlbSAqY2hpbGQpCisgCisgICAgIGl0 ZW1DaGFuZ2UoUVF1aWNrSXRlbTo6SXRlbUNoaWxkUmVtb3ZlZENoYW5nZSwgY2hpbGQpOworIAor LSAgICBlbWl0IHEtPmNoaWxkcmVuQ2hhbmdlZCgpOworKyAgICBpZiAoIWluRGVzdHJ1Y3RvcikK KysgICAgICAgIGVtaXQgcS0+Y2hpbGRyZW5DaGFuZ2VkKCk7CisgfQorIAorIHZvaWQgUVF1aWNr SXRlbVByaXZhdGU6OnJlZldpbmRvdyhRUXVpY2tXaW5kb3cgKmMpCitAQCAtMzE5NCw2ICszMjAx LDcgQEAgUVF1aWNrSXRlbVByaXZhdGU6OlFRdWlja0l0ZW1Qcml2YXRlKCkKKyAgICAgLCB0b3Vj aEVuYWJsZWQoZmFsc2UpCisgI2VuZGlmCisgICAgICwgaGFzQ3Vyc29ySGFuZGxlcihmYWxzZSkK KysgICAgLCBpbkRlc3RydWN0b3IoZmFsc2UpCisgICAgICwgZGlydHlBdHRyaWJ1dGVzKDApCisg ICAgICwgbmV4dERpcnR5SXRlbShudWxscHRyKQorICAgICAsIHByZXZEaXJ0eUl0ZW0obnVsbHB0 cikKK0BAIC01MTIwLDYgKzUxMjgsMTMgQEAgdm9pZCBRUXVpY2tJdGVtOjpjb21wb25lbnRDb21w bGV0ZSgpCisgICAgICAgICBkLT5hZGRUb0RpcnR5TGlzdCgpOworICAgICAgICAgUVF1aWNrV2lu ZG93UHJpdmF0ZTo6Z2V0KGQtPndpbmRvdyktPmRpcnR5SXRlbSh0aGlzKTsKKyAgICAgfQorKwor KyNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKysgICAgaWYgKGQtPmlzQWNjZXNzaWJsZSAm JiBkLT5lZmZlY3RpdmVWaXNpYmxlKSB7CisrICAgICAgICBRQWNjZXNzaWJsZUV2ZW50IGV2KHRo aXMsIFFBY2Nlc3NpYmxlOjpPYmplY3RTaG93KTsKKysgICAgICAgIFFBY2Nlc3NpYmxlOjp1cGRh dGVBY2Nlc3NpYmlsaXR5KCZldik7CisrICAgIH0KKysjZW5kaWYKKyB9CisgCisgUVF1aWNrU3Rh dGVHcm91cCAqUVF1aWNrSXRlbVByaXZhdGU6Ol9zdGF0ZXMoKQorQEAgLTYxMDYsOSArNjEyMSwx MSBAQCBib29sIFFRdWlja0l0ZW1Qcml2YXRlOjpzZXRFZmZlY3RpdmVWaXNpYmxlUmVjdXIoYm9v bCBuZXdFZmZlY3RpdmVWaXNpYmxlKQorICAgICAgICAgUUFjY2Vzc2libGU6OnVwZGF0ZUFjY2Vz c2liaWxpdHkoJmV2KTsKKyAgICAgfQorICNlbmRpZgorLSAgICBlbWl0IHEtPnZpc2libGVDaGFu Z2VkKCk7CistICAgIGlmIChjaGlsZFZpc2liaWxpdHlDaGFuZ2VkKQorLSAgICAgICAgZW1pdCBx LT52aXNpYmxlQ2hpbGRyZW5DaGFuZ2VkKCk7CisrICAgIGlmICghaW5EZXN0cnVjdG9yKSB7Cisr ICAgICAgICBlbWl0IHEtPnZpc2libGVDaGFuZ2VkKCk7CisrICAgICAgICBpZiAoY2hpbGRWaXNp YmlsaXR5Q2hhbmdlZCkKKysgICAgICAgICAgICBlbWl0IHEtPnZpc2libGVDaGlsZHJlbkNoYW5n ZWQoKTsKKysgICAgfQorIAorICAgICByZXR1cm4gdHJ1ZTsgICAgLy8gZWZmZWN0aXZlIHZpc2li aWxpdHkgRElEIGNoYW5nZQorIH0KK0BAIC02MTU3LDYgKzYxNzQsMTUgQEAgdm9pZCBRUXVpY2tJ dGVtUHJpdmF0ZTo6c2V0RWZmZWN0aXZlRW5hYmxlUmVjdXIoUVF1aWNrSXRlbSAqc2NvcGUsIGJv b2wgbmV3RWZmZWMKKyAgICAgfQorIAorICAgICBpdGVtQ2hhbmdlKFFRdWlja0l0ZW06Okl0ZW1F bmFibGVkSGFzQ2hhbmdlZCwgZWZmZWN0aXZlRW5hYmxlKTsKKysjaWYgUVRfQ09ORklHKGFjY2Vz c2liaWxpdHkpCisrICAgIGlmIChpc0FjY2Vzc2libGUpIHsKKysgICAgICAgIFFBY2Nlc3NpYmxl OjpTdGF0ZSBjaGFuZ2VkU3RhdGU7CisrICAgICAgICBjaGFuZ2VkU3RhdGUuZGlzYWJsZWQgPSB0 cnVlOworKyAgICAgICAgY2hhbmdlZFN0YXRlLmZvY3VzYWJsZSA9IHRydWU7CisrICAgICAgICBR QWNjZXNzaWJsZVN0YXRlQ2hhbmdlRXZlbnQgZXYocSwgY2hhbmdlZFN0YXRlKTsKKysgICAgICAg IFFBY2Nlc3NpYmxlOjp1cGRhdGVBY2Nlc3NpYmlsaXR5KCZldik7CisrICAgIH0KKysjZW5kaWYK KyAgICAgZW1pdCBxLT5lbmFibGVkQ2hhbmdlZCgpOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdGRl Y2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtX3AuaCBiL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW1fcC5oCitpbmRleCA4NDFkOTFiYjQwLi5hZGU4ZmI2 MWYyIDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRl bV9wLmgKKysrKyBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja2l0ZW1fcC5o CitAQCAtNDcyLDYgKzQ3Miw3IEBAIHB1YmxpYzoKKyAgICAgYm9vbCByZXBsYXlpbmdQcmVzc0V2 ZW50OjE7CisgICAgIGJvb2wgdG91Y2hFbmFibGVkOjE7CisgICAgIGJvb2wgaGFzQ3Vyc29ySGFu ZGxlcjoxOworKyAgICBxdWludDMyIGluRGVzdHJ1Y3RvcjoxOyAvLyBoYXMgZW50ZXJlZCB+UVF1 aWNrSXRlbQorIAorICAgICBlbnVtIERpcnR5VHlwZSB7CisgICAgICAgICBUcmFuc2Zvcm1Pcmln aW4gICAgICAgICA9IDB4MDAwMDAwMDEsCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2svaXRlbXMvcXF1aWNraXRlbXZpZXcuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2sv aXRlbXMvcXF1aWNraXRlbXZpZXcuY3BwCitpbmRleCAwMTBhMDE1MmUxLi5mOGFkMTY4YTE3IDEw MDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNraXRlbXZpZXcu Y3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2tpdGVtdmlldy5j cHAKK0BAIC0xNzg1LDcgKzE3ODUsNyBAQCB2b2lkIFFRdWlja0l0ZW1WaWV3UHJpdmF0ZTo6cmVm aWxsKHFyZWFsIGZyb20sIHFyZWFsIHRvKQorIAorICAgICBkbyB7CisgICAgICAgICBidWZmZXJQ YXVzZS5zdG9wKCk7CistICAgICAgICBpZiAoY3VycmVudENoYW5nZXMuaGFzUGVuZGluZ0NoYW5n ZXMoKSB8fCBidWZmZXJlZENoYW5nZXMuaGFzUGVuZGluZ0NoYW5nZXMoKSkgeworKyAgICAgICAg aWYgKGN1cnJlbnRDaGFuZ2VzLmhhc1BlbmRpbmdDaGFuZ2VzKCkgfHwgYnVmZmVyZWRDaGFuZ2Vz Lmhhc1BlbmRpbmdDaGFuZ2VzKCkgfHwgY3VycmVudENoYW5nZXMuYWN0aXZlKSB7CisgICAgICAg ICAgICAgY3VycmVudENoYW5nZXMucmVzZXQoKTsKKyAgICAgICAgICAgICBidWZmZXJlZENoYW5n ZXMucmVzZXQoKTsKKyAgICAgICAgICAgICByZWxlYXNlVmlzaWJsZUl0ZW1zKHJldXNhYmxlRmxh Zyk7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrbW91 c2VhcmVhX3BfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrbW91c2Vh cmVhX3BfcC5oCitpbmRleCBmYmEzODNlMjY4Li4wZDYzNjE4NjIyIDEwMDY0NAorLS0tIGEvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrbW91c2VhcmVhX3BfcC5oCisrKysgYi9x dGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2ttb3VzZWFyZWFfcF9wLmgKK0BAIC02 MSw3ICs2MSw2IEBAIFFUX0JFR0lOX05BTUVTUEFDRQorIAorIGNsYXNzIFFRdWlja01vdXNlRXZl bnQ7CisgY2xhc3MgUVF1aWNrTW91c2VBcmVhOworLWNsYXNzIFFRdWlja1BvaW50ZXJNYXNrOwor IGNsYXNzIFFRdWlja01vdXNlQXJlYVByaXZhdGUgOiBwdWJsaWMgUVF1aWNrSXRlbVByaXZhdGUK KyB7CisgICAgIFFfREVDTEFSRV9QVUJMSUMoUVF1aWNrTW91c2VBcmVhKQorQEAgLTEwMCw3ICs5 OSw2IEBAIHB1YmxpYzoKKyAjaWYgUVRfQ09ORklHKHF1aWNrX2RyYWdhbmRkcm9wKQorICAgICBR UXVpY2tEcmFnICpkcmFnOworICNlbmRpZgorLSAgICBRUG9pbnRlcjxRUXVpY2tQb2ludGVyTWFz az4gbWFzazsKKyAgICAgUVBvaW50RiBzdGFydFNjZW5lOworICAgICBRUG9pbnRGIHRhcmdldFN0 YXJ0UG9zOworICAgICBRUG9pbnRGIGxhc3RQb3M7CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2 ZS9zcmMvcXVpY2svaXRlbXMvcXF1aWNrdGV4dC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj ay9pdGVtcy9xcXVpY2t0ZXh0LmNwcAoraW5kZXggNjIzMDE4NjkzMy4uZTgyM2NhMTA5NSAxMDA2 NDQKKy0tLSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL2l0ZW1zL3FxdWlja3RleHQuY3BwCisr KysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWljay9pdGVtcy9xcXVpY2t0ZXh0LmNwcAorQEAgLTIx NjgsNyArMjE2OCw3IEBAIHZvaWQgUVF1aWNrVGV4dDo6cmVzZXRNYXhpbXVtTGluZUNvdW50KCkK KyAgICAgPGltZyBzcmM9IiIgYWxpZ249InRvcCxtaWRkbGUsYm90dG9tIiB3aWR0aD0iIiBoZWln aHQ9IiI+IC0gaW5saW5lIGltYWdlcworICAgICA8b2wgdHlwZT0iIj4sIDx1bCB0eXBlPSIiPiBh bmQgPGxpPiAtIG9yZGVyZWQgYW5kIHVub3JkZXJlZCBsaXN0cworICAgICA8cHJlPjwvcHJlPiAt IHByZWZvcm1hdHRlZAorLSAgICAmZ3Q7ICZsdDsgJmFtcDsKKysgICAgJmd0OyAmbHQ7ICZhbXA7 ICZxdW90OyAmbmJzcDsgJmFwb3M7CisgICAgIFxlbmRjb2RlCisgCisgICAgIFxjIFRleHQuU3R5 bGVkVGV4dCBwYXJzZXIgaXMgc3RyaWN0LCByZXF1aXJpbmcgdGFncyB0byBiZSBjb3JyZWN0bHkg bmVzdGVkLgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3NjZW5lZ3JhcGgv cXNncmhpZGlzdGFuY2VmaWVsZGdseXBoY2FjaGUuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVp Y2svc2NlbmVncmFwaC9xc2dyaGlkaXN0YW5jZWZpZWxkZ2x5cGhjYWNoZS5jcHAKK2luZGV4IGVi NGRiMGY4NWUuLjIzMjVhMjY2NWIgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlj ay9zY2VuZWdyYXBoL3FzZ3JoaWRpc3RhbmNlZmllbGRnbHlwaGNhY2hlLmNwcAorKysrIGIvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2svc2NlbmVncmFwaC9xc2dyaGlkaXN0YW5jZWZpZWxkZ2x5cGhj YWNoZS5jcHAKK0BAIC00NDYsNyArNDQ2LDcgQEAgYm9vbCBRU0dSaGlEaXN0YW5jZUZpZWxkR2x5 cGhDYWNoZTo6bG9hZFByZWdlbmVyYXRlZENhY2hlKGNvbnN0IFFSYXdGb250ICZmb250KQorIAor ICAgICAgICAgY29uc3QgY2hhciAqdGV4dHVyZVJlY29yZCA9IGFsbG9jYXRvckRhdGE7CisgICAg ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRleHR1cmVDb3VudDsgKytpLCB0ZXh0dXJlUmVjb3Jk ICs9IFF0ZGY6OlRleHR1cmVSZWNvcmRTaXplKSB7CistICAgICAgICAgICAgaWYgKHRleHR1cmVS ZWNvcmQgKyBRdGRmOjpUZXh0dXJlUmVjb3JkU2l6ZSA+IHF0ZGZUYWJsZUVuZCkgeworKyAgICAg ICAgICAgIGlmIChxdGRmVGFibGVFbmQgLSB0ZXh0dXJlUmVjb3JkIDwgUXRkZjo6VGV4dHVyZVJl Y29yZFNpemUpIHsKKyAgICAgICAgICAgICAgICAgcVdhcm5pbmcoInF0ZGYgdGFibGUgdG9vIHNt YWxsIGluIGZvbnQgJyVzJy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBxUHJpbnRhYmxl KGZvbnQuZmFtaWx5TmFtZSgpKSk7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKK0BA IC00NjIsNyArNDYyLDcgQEAgYm9vbCBRU0dSaGlEaXN0YW5jZUZpZWxkR2x5cGhDYWNoZTo6bG9h ZFByZWdlbmVyYXRlZENhY2hlKGNvbnN0IFFSYXdGb250ICZmb250KQorIAorICAgICAgICAgY29u c3QgY2hhciAqZ2x5cGhSZWNvcmQgPSB0ZXh0dXJlUmVjb3JkOworICAgICAgICAgZm9yIChxdWlu dDMyIGkgPSAwOyBpIDwgZ2x5cGhDb3VudDsgKytpLCBnbHlwaFJlY29yZCArPSBRdGRmOjpHbHlw aFJlY29yZFNpemUpIHsKKy0gICAgICAgICAgICBpZiAoZ2x5cGhSZWNvcmQgKyBRdGRmOjpHbHlw aFJlY29yZFNpemUgPiBxdGRmVGFibGVFbmQpIHsKKysgICAgICAgICAgICBpZiAocXRkZlRhYmxl RW5kIC0gZ2x5cGhSZWNvcmQgPCBRdGRmOjogR2x5cGhSZWNvcmRTaXplKSB7CisgICAgICAgICAg ICAgICAgIHFXYXJuaW5nKCJxdGRmIHRhYmxlIHRvbyBzbWFsbCBpbiBmb250ICclcycuIiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgcVByaW50YWJsZShmb250LmZhbWlseU5hbWUoKSkpOwor ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CitAQCAtNTEyLDggKzUxMiw4IEBAIGJvb2wg UVNHUmhpRGlzdGFuY2VGaWVsZEdseXBoQ2FjaGU6OmxvYWRQcmVnZW5lcmF0ZWRDYWNoZShjb25z dCBRUmF3Rm9udCAmZm9udCkKKyAKKyAgICAgICAgICAgICBpbnQgd2lkdGggPSB0ZXhJbmZvLT5h bGxvY2F0ZWRBcmVhLndpZHRoKCk7CisgICAgICAgICAgICAgaW50IGhlaWdodCA9IHRleEluZm8t PmFsbG9jYXRlZEFyZWEuaGVpZ2h0KCk7CistICAgICAgICAgICAgcWludDY0IHNpemUgPSB3aWR0 aCAqIGhlaWdodDsKKy0gICAgICAgICAgICBpZiAocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy ICo+KHRleHR1cmVEYXRhICsgc2l6ZSkgPiBxdGRmVGFibGVFbmQpIHsKKysgICAgICAgICAgICBx aW50NjQgc2l6ZSA9IHFpbnQ2NCh3aWR0aCkgKiBoZWlnaHQ7CisrICAgICAgICAgICAgaWYgKHF0 ZGZUYWJsZUVuZCAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPih0ZXh0dXJlRGF0YSkg PCBzaXplKSB7CisgICAgICAgICAgICAgICAgIHFXYXJuaW5nKCJxdGRmIHRhYmxlIHRvbyBzbWFs bCBpbiBmb250ICclcycuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcVByaW50YWJsZShm b250LmZhbWlseU5hbWUoKSkpOworICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CitkaWZm IC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2svdXRpbC9xcXVpY2tzdHlsZWR0ZXh0LmNw cCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrL3V0aWwvcXF1aWNrc3R5bGVkdGV4dC5jcHAKK2lu ZGV4IGQ1MzFmYzkyMDUuLmEyNWFmOTA0MTQgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWljay91dGlsL3FxdWlja3N0eWxlZHRleHQuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWljay91dGlsL3FxdWlja3N0eWxlZHRleHQuY3BwCitAQCAtNTY0LDYgKzU2NCw4IEBAIHZv aWQgUVF1aWNrU3R5bGVkVGV4dFByaXZhdGU6OnBhcnNlRW50aXR5KGNvbnN0IFFDaGFyIComY2gs IGNvbnN0IFFTdHJpbmcgJnRleHRJCisgICAgICAgICAgICAgICAgIHRleHRPdXQgKz0gUUNoYXIo NjApOworICAgICAgICAgICAgIGVsc2UgaWYgKGVudGl0eSA9PSBRTGF0aW4xU3RyaW5nKCJhbXAi KSkKKyAgICAgICAgICAgICAgICAgdGV4dE91dCArPSBRQ2hhcigzOCk7CisrICAgICAgICAgICAg ZWxzZSBpZiAoZW50aXR5ID09IFFMYXRpbjFTdHJpbmcoImFwb3MiKSkKKysgICAgICAgICAgICAg ICAgdGV4dE91dCArPSBRQ2hhcigzOSk7CisgICAgICAgICAgICAgZWxzZSBpZiAoZW50aXR5ID09 IFFMYXRpbjFTdHJpbmcoInF1b3QiKSkKKyAgICAgICAgICAgICAgICAgdGV4dE91dCArPSBRQ2hh cigzNCk7CisgICAgICAgICAgICAgZWxzZSBpZiAoZW50aXR5ID09IFFMYXRpbjFTdHJpbmcoIm5i c3AiKSkKK2RpZmYgLS1naXQgYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vz c2libGVxdWlja3dpZGdldC5jcHAgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFj Y2Vzc2libGVxdWlja3dpZGdldC5jcHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwMDAwLi44YTFjOTAxODgwCistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3Ny Yy9xdWlja3dpZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldC5jcHAKK0BAIC0wLDAgKzEsMTEw IEBACisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBU aGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5z aW5nLworKyoqCisrKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0UXVpY2sgbW9kdWxlIG9m IHRoZSBRdCBUb29sa2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBD b21tZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21t ZXJjaWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3 aXRoIHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisr KiogU29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVy bXMgY29udGFpbmVkIGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQg VGhlIFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBz ZWUgaHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBp bmZvcm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250 YWN0LXVzLgorKyoqCisrKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdl CisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIExlc3NlcgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAz IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFw cGVhcmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQorKyoqIHBh Y2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1h dGlvbiB0bworKyoqIGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IHZlcnNpb24gMyByZXF1aXJlbWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZl cnNpb24gMi4wIG9yIChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiogUHVibGlj IGxpY2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBL REUgRnJlZQorKyoqIFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRo ZSBmaWxlIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQgaW4gdGhl IHBhY2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZworKyoq IGluZm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVx dWlyZW1lbnRzIHdpbGwKKysqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Z3BsLTIuMC5odG1sIGFuZAorKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMu MC5odG1sLgorKyoqCisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KKysKKysjaW5jbHVkZSAicWFjY2Vzc2libGVxdWlja3dpZGdldF9wLmgiCisrCisrI2lu Y2x1ZGUgInFxdWlja3dpZGdldF9wLmgiCisrCisrUVRfQkVHSU5fTkFNRVNQQUNFCisrCisrI2lm IFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKworK1FBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6OlFB Y2Nlc3NpYmxlUXVpY2tXaWRnZXQoUVF1aWNrV2lkZ2V0KiB3aWRnZXQpCisrOiBRQWNjZXNzaWJs ZVdpZGdldCh3aWRnZXQpCisrLCBtX2FjY2Vzc2libGVXaW5kb3coUVF1aWNrV2lkZ2V0UHJpdmF0 ZTo6Z2V0KHdpZGdldCktPm9mZnNjcmVlbldpbmRvdykKKyt7CisrICAgIC8vIE5PVEU6IG1fYWNj ZXNzaWJsZVdpbmRvdyBpcyBhIFFBY2Nlc3NpYmxlUXVpY2tXaW5kb3csIGFuZCBub3QgYQorKyAg ICAvLyBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93IChkZWZpbmVkIGJlbG93 KS4gVGhpcyBtZWFucworKyAgICAvLyBpdCB3aWxsIHJldHVybiB0aGUgUXVpY2sgaXRlbSBjaGls ZCBpbnRlcmZhY2VzLCB3aGljaCBpcyB3aGF0J3MgbmVlZGVkIGhlcmUKKysgICAgLy8gKHVubGlr ZSBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93LCB3aGljaCB3aWxsIHJlcG9y dCAwIGNoaWxkcmVuKS4KKyt9CisrCisrUUFjY2Vzc2libGVJbnRlcmZhY2UgKlFBY2Nlc3NpYmxl UXVpY2tXaWRnZXQ6OmNoaWxkKGludCBpbmRleCkgY29uc3QKKyt7CisrICAgIHJldHVybiBtX2Fj Y2Vzc2libGVXaW5kb3cuY2hpbGQoaW5kZXgpOworK30KKysKKytpbnQgUUFjY2Vzc2libGVRdWlj a1dpZGdldDo6Y2hpbGRDb3VudCgpIGNvbnN0CisreworKyAgICByZXR1cm4gbV9hY2Nlc3NpYmxl V2luZG93LmNoaWxkQ291bnQoKTsKKyt9CisrCisraW50IFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXQ6 OmluZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZhY2UpIGNvbnN0Cisr eworKyAgICByZXR1cm4gbV9hY2Nlc3NpYmxlV2luZG93LmluZGV4T2ZDaGlsZChpZmFjZSk7Cisr fQorKworK1FBY2Nlc3NpYmxlSW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0OjpjaGls ZEF0KGludCB4LCBpbnQgeSkgY29uc3QKKyt7CisrICAgIHJldHVybiBtX2FjY2Vzc2libGVXaW5k b3cuY2hpbGRBdCh4LCB5KTsKKyt9CisrCisrUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVl bldpbmRvdzo6UUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyhRUXVpY2tXaW5k b3cgKndpbmRvdykKKys6UUFjY2Vzc2libGVRdWlja1dpbmRvdyh3aW5kb3cpCisreworKworK30K KysKKytRQWNjZXNzaWJsZUludGVyZmFjZSAqUUFjY2Vzc2libGVRdWlja1dpZGdldE9mZnNjcmVl bldpbmRvdzo6Y2hpbGQoaW50IGluZGV4KSBjb25zdAorK3sKKysgICAgUV9VTlVTRUQoaW5kZXgp OworKyAgICByZXR1cm4gbnVsbHB0cjsKKyt9CisrCisraW50IFFBY2Nlc3NpYmxlUXVpY2tXaWRn ZXRPZmZzY3JlZW5XaW5kb3c6OmNoaWxkQ291bnQoKSBjb25zdAorK3sKKysgICAgcmV0dXJuIDA7 CisrfQorKworK2ludCBRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjppbmRl eE9mQ2hpbGQoY29uc3QgUUFjY2Vzc2libGVJbnRlcmZhY2UgKmlmYWNlKSBjb25zdAorK3sKKysg ICAgUV9VTlVTRUQoaWZhY2UpOworKyAgICByZXR1cm4gLTE7CisrfQorKworK1FBY2Nlc3NpYmxl SW50ZXJmYWNlICpRQWNjZXNzaWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpRQWNjZXNz aWJsZVF1aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93OjpjaGlsZEF0KGludCB4LCBpbnQgeSkgY29u c3QKKyt7CisrICAgIFFfVU5VU0VEKHgpOworKyAgICBRX1VOVVNFRCh5KTsKKysgICAgcmV0dXJu IG51bGxwdHI7CisrfQorKworKyNlbmRpZiAvLyBhY2Nlc3NpYmlsaXR5CisrCisrUVRfRU5EX05B TUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNj ZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9x YWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAwMDAuLjdjMmFiOTMwZTAKKy0tLSAvZGV2L251bGwKKysrKyBiL3F0ZGVjbGFyYXRpdmUv c3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaAorQEAgLTAsMCArMSw5 NSBAQAorKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqCisrKioKKysqKiBDb3B5cmlnaHQgKEMpIDIwMjEg VGhlIFF0IENvbXBhbnkgTHRkLgorKyoqIENvbnRhY3Q6IGh0dHBzOi8vd3d3LnF0LmlvL2xpY2Vu c2luZy8KKysqKgorKyoqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBRdFF1aWNrIG1vZHVsZSBv ZiB0aGUgUXQgVG9vbGtpdC4KKysqKgorKyoqICRRVF9CRUdJTl9MSUNFTlNFOkxHUEwkCisrKiog Q29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29t bWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ug d2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQor KyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRl cm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5k IFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRpdGlvbnMg c2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCisrKiog aW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29u dGFjdC11cy4KKysqKgorKyoqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBVc2Fn ZQorKyoqIEFsdGVybmF0aXZlbHksIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBMZXNzZXIKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24g MyBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKKysqKiBGb3VuZGF0aW9uIGFuZCBh cHBlYXJpbmcgaW4gdGhlIGZpbGUgTElDRU5TRS5MR1BMMyBpbmNsdWRlZCBpbiB0aGUKKysqKiBw YWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcgaW5mb3Jt YXRpb24gdG8KKysqKiBlbnN1cmUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSB2ZXJzaW9uIDMgcmVxdWlyZW1lbnRzCisrKiogd2lsbCBiZSBtZXQ6IGh0dHBzOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbC4KKysqKgorKyoqIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2Vk IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCisrKiogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2 ZXJzaW9uIDIuMCBvciAoYXQgeW91ciBvcHRpb24pIHRoZSBHTlUgR2VuZXJhbAorKyoqIFB1Ymxp YyBsaWNlbnNlIHZlcnNpb24gMyBvciBhbnkgbGF0ZXIgdmVyc2lvbiBhcHByb3ZlZCBieSB0aGUg S0RFIEZyZWUKKysqKiBRdCBGb3VuZGF0aW9uLiBUaGUgbGljZW5zZXMgYXJlIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0 aGUgZmlsZSBMSUNFTlNFLkdQTDIgYW5kIExJQ0VOU0UuR1BMMworKyoqIGluY2x1ZGVkIGluIHRo ZSBwYWNrYWdpbmcgb2YgdGhpcyBmaWxlLiBQbGVhc2UgcmV2aWV3IHRoZSBmb2xsb3dpbmcKKysq KiBpbmZvcm1hdGlvbiB0byBlbnN1cmUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJl cXVpcmVtZW50cyB3aWxsCisrKiogYmUgbWV0OiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz L2dwbC0yLjAuaHRtbCBhbmQKKysqKiBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0z LjAuaHRtbC4KKysqKgorKyoqICRRVF9FTkRfTElDRU5TRSQKKysqKgorKyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiovCisrCisrI2lmbmRlZiBRQUNDRVNTSUJMRVFVSUNLV0lER0VUX0gKKysjZGVmaW5lIFFB Q0NFU1NJQkxFUVVJQ0tXSURHRVRfSAorKworKy8vCisrLy8gIFcgQSBSIE4gSSBOIEcKKysvLyAg LS0tLS0tLS0tLS0tLQorKy8vCisrLy8gVGhpcyBmaWxlIGlzIG5vdCBwYXJ0IG9mIHRoZSBRdCBB UEkuICBJdCBleGlzdHMgcHVyZWx5IGFzIGFuCisrLy8gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAg VGhpcyBoZWFkZXIgZmlsZSBtYXkgY2hhbmdlIGZyb20gdmVyc2lvbiB0bworKy8vIHZlcnNpb24g d2l0aG91dCBub3RpY2UsIG9yIGV2ZW4gYmUgcmVtb3ZlZC4KKysvLworKy8vIFdlIG1lYW4gaXQu CisrLy8KKysKKysjaW5jbHVkZSAicXF1aWNrd2lkZ2V0LmgiCisrI2luY2x1ZGUgPFF0V2lkZ2V0 cy9xYWNjZXNzaWJsZXdpZGdldC5oPgorKworKyNpbmNsdWRlIDxwcml2YXRlL3FhY2Nlc3NpYmxl cXVpY2t2aWV3X3AuaD4KKysKKytRVF9CRUdJTl9OQU1FU1BBQ0UKKysKKysjaWYgUVRfQ09ORklH KGFjY2Vzc2liaWxpdHkpCisrCisrLy8gVGhlc2UgY2xhc3NlcyBpbXBsZW1lbnQgdGhlIFFRdWlj a1dpZ2V0IGFjY2Vzc2liaWxpdHkgc3dpdGNoYXJvbywKKysvLyB3aGVyZSB0aGUgY2hpbGQgaXRl bXMgb2YgdGhlIFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdyBhcmUgcmVwb3J0ZWQKKysvLyBh cyBjaGlsZCBhY2Nlc3NpYmxlIGludGVyZmFjZXMgb2YgdGhlIFFBY2Nlc3NpYmxlUXVpY2tXaWRn ZXQuCisrY2xhc3MgUUFjY2Vzc2libGVRdWlja1dpZGdldDogcHVibGljIFFBY2Nlc3NpYmxlV2lk Z2V0CisreworK3B1YmxpYzoKKysgICAgUUFjY2Vzc2libGVRdWlja1dpZGdldChRUXVpY2tXaWRn ZXQqIHdpZGdldCk7CisrCisrICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGlsZChpbnQgaW5k ZXgpIGNvbnN0IG92ZXJyaWRlOworKyAgICBpbnQgY2hpbGRDb3VudCgpIGNvbnN0IG92ZXJyaWRl OworKyAgICBpbnQgaW5kZXhPZkNoaWxkKGNvbnN0IFFBY2Nlc3NpYmxlSW50ZXJmYWNlICppZmFj ZSkgY29uc3Qgb3ZlcnJpZGU7CisrICAgIFFBY2Nlc3NpYmxlSW50ZXJmYWNlICpjaGlsZEF0KGlu dCB4LCBpbnQgeSkgY29uc3Qgb3ZlcnJpZGU7CisrCisrcHJpdmF0ZToKKysgICAgUUFjY2Vzc2li bGVRdWlja1dpbmRvdyBtX2FjY2Vzc2libGVXaW5kb3c7CisrICAgIFFfRElTQUJMRV9DT1BZKFFB Y2Nlc3NpYmxlUXVpY2tXaWRnZXQpCisrfTsKKysKKytjbGFzcyBRQWNjZXNzaWJsZVF1aWNrV2lk Z2V0T2Zmc2NyZWVuV2luZG93OiBwdWJsaWMgUUFjY2Vzc2libGVRdWlja1dpbmRvdworK3sKKytw dWJsaWM6CisrICAgIFFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3coUVF1aWNr V2luZG93ICp3aW5kb3cpOworKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqY2hpbGQoaW50IGlu ZGV4KSBjb25zdCBvdmVycmlkZTsKKysgICAgaW50IGNoaWxkQ291bnQoKSBjb25zdCBvdmVycmlk ZTsKKysgICAgaW50IGluZGV4T2ZDaGlsZChjb25zdCBRQWNjZXNzaWJsZUludGVyZmFjZSAqaWZh Y2UpIGNvbnN0IG92ZXJyaWRlOworKyAgICBRQWNjZXNzaWJsZUludGVyZmFjZSAqY2hpbGRBdChp bnQgeCwgaW50IHkpIGNvbnN0IG92ZXJyaWRlOworK307CisrCisrI2VuZGlmIC8vIGFjY2Vzc2li aWxpdHkKKysKKytRVF9FTkRfTkFNRVNQQUNFCisrCisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5 LmNwcCBiL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lk Z2V0ZmFjdG9yeS5jcHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43 YmE4OGExNzY5CistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dp ZGdldHMvcWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnkuY3BwCitAQCAtMCwwICsxLDYwIEBA CisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUg UXQgQ29tcGFueSBMdGQuCisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5n LworKyoqCisrKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0UXVpY2sgbW9kdWxlIG9mIHRo ZSBRdCBUb29sa2l0LgorKyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBDb21t ZXJjaWFsIExpY2Vuc2UgVXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJj aWFsIFF0IGxpY2Vuc2VzIG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRo IHRoZSBjb21tZXJjaWFsIGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiog U29mdHdhcmUgb3IsIGFsdGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMg Y29udGFpbmVkIGluCisrKiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhl IFF0IENvbXBhbnkuIEZvciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUg aHR0cHM6Ly93d3cucXQuaW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZv cm1hdGlvbiB1c2UgdGhlIGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0 LXVzLgorKyoqCisrKiogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisr KiogQWx0ZXJuYXRpdmVseSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIExlc3NlcgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVh cmluZyBpbiB0aGUgZmlsZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQorKyoqIHBhY2th Z2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlv biB0bworKyoqIGVuc3VyZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZl cnNpb24gMyByZXF1aXJlbWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy9sZ3BsLTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgVXNhZ2UKKysqKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNp b24gMi4wIG9yIChhdCB5b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiogUHVibGljIGxp Y2Vuc2UgdmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUg RnJlZQorKyoqIFF0IEZvdW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBm aWxlIExJQ0VOU0UuR1BMMiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQgaW4gdGhlIHBh Y2thZ2luZyBvZiB0aGlzIGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZworKyoqIGlu Zm9ybWF0aW9uIHRvIGVuc3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWly ZW1lbnRzIHdpbGwKKysqKiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3Bs LTIuMC5odG1sIGFuZAorKyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5o dG1sLgorKyoqCisrKiogJFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKysKKysjaW5jbHVkZSAicWFjY2Vzc2libGVxdWlja3dpZGdldGZhY3RvcnlfcC5oIgorKyNp bmNsdWRlICJxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0X3AuaCIKKysKKytRVF9CRUdJTl9OQU1FU1BB Q0UKKysKKysjaWYgUVRfQ09ORklHKGFjY2Vzc2liaWxpdHkpCisrCisrUUFjY2Vzc2libGVJbnRl cmZhY2UgKnFBY2Nlc3NpYmxlUXVpY2tXaWRnZXRGYWN0b3J5KGNvbnN0IFFTdHJpbmcgJmNsYXNz bmFtZSwgUU9iamVjdCAqb2JqZWN0KQorK3sKKysgICAgaWYgKGNsYXNzbmFtZSA9PSBRTGF0aW4x U3RyaW5nKCJRUXVpY2tXaWRnZXQiKSkgeworKyAgICAgICAgcmV0dXJuIG5ldyBRQWNjZXNzaWJs ZVF1aWNrV2lkZ2V0KHFvYmplY3RfY2FzdDxRUXVpY2tXaWRnZXQgKj4ob2JqZWN0KSk7CisrICAg IH0gZWxzZSBpZiAoY2xhc3NuYW1lID09IFFMYXRpbjFTdHJpbmcoIlFRdWlja1dpZGdldE9mZnNj cmVlbldpbmRvdyIpKSB7CisrICAgICAgICByZXR1cm4gbmV3IFFBY2Nlc3NpYmxlUXVpY2tXaWRn ZXRPZmZzY3JlZW5XaW5kb3cocW9iamVjdF9jYXN0PFFRdWlja1dpbmRvdyAqPihvYmplY3QpKTsK KysgICAgfQorKyAgICByZXR1cm4gMDsKKyt9CisrCisrI2VuZGlmIC8vIGFjY2Vzc2liaWxpdHkK KysKKytRVF9FTkRfTkFNRVNQQUNFCisrCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMv cXVpY2t3aWRnZXRzL3FhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5X3AuaCBiL3F0ZGVjbGFy YXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi44YzYzYjA5ZjgxCistLS0g L2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcWFjY2Vzc2li bGVxdWlja3dpZGdldGZhY3RvcnlfcC5oCitAQCAtMCwwICsxLDY2IEBACisrLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykgMjAyMSBUaGUgUXQgQ29tcGFueSBMdGQu CisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8vbGljZW5zaW5nLworKyoqCisrKiogVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIFF0UXVpY2sgbW9kdWxlIG9mIHRoZSBRdCBUb29sa2l0Lgor KyoqCisrKiogJFFUX0JFR0lOX0xJQ0VOU0U6TEdQTCQKKysqKiBDb21tZXJjaWFsIExpY2Vuc2Ug VXNhZ2UKKysqKiBMaWNlbnNlZXMgaG9sZGluZyB2YWxpZCBjb21tZXJjaWFsIFF0IGxpY2Vuc2Vz IG1heSB1c2UgdGhpcyBmaWxlIGluCisrKiogYWNjb3JkYW5jZSB3aXRoIHRoZSBjb21tZXJjaWFs IGxpY2Vuc2UgYWdyZWVtZW50IHByb3ZpZGVkIHdpdGggdGhlCisrKiogU29mdHdhcmUgb3IsIGFs dGVybmF0aXZlbHksIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgdGVybXMgY29udGFpbmVkIGluCisr KiogYSB3cml0dGVuIGFncmVlbWVudCBiZXR3ZWVuIHlvdSBhbmQgVGhlIFF0IENvbXBhbnkuIEZv ciBsaWNlbnNpbmcgdGVybXMKKysqKiBhbmQgY29uZGl0aW9ucyBzZWUgaHR0cHM6Ly93d3cucXQu aW8vdGVybXMtY29uZGl0aW9ucy4gRm9yIGZ1cnRoZXIKKysqKiBpbmZvcm1hdGlvbiB1c2UgdGhl IGNvbnRhY3QgZm9ybSBhdCBodHRwczovL3d3dy5xdC5pby9jb250YWN0LXVzLgorKyoqCisrKiog R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVs eSwgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl cgorKyoqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZQorKyoqIEZvdW5kYXRpb24gYW5kIGFwcGVhcmluZyBpbiB0aGUgZmls ZSBMSUNFTlNFLkxHUEwzIGluY2x1ZGVkIGluIHRoZQorKyoqIHBhY2thZ2luZyBvZiB0aGlzIGZp bGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiB0bworKyoqIGVuc3Vy ZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyByZXF1aXJl bWVudHMKKysqKiB3aWxsIGJlIG1ldDogaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9sZ3Bs LTMuMC5odG1sLgorKyoqCisrKiogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVXNhZ2UKKysq KiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUKKysqKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4wIG9yIChhdCB5 b3VyIG9wdGlvbikgdGhlIEdOVSBHZW5lcmFsCisrKiogUHVibGljIGxpY2Vuc2UgdmVyc2lvbiAz IG9yIGFueSBsYXRlciB2ZXJzaW9uIGFwcHJvdmVkIGJ5IHRoZSBLREUgRnJlZQorKyoqIFF0IEZv dW5kYXRpb24uIFRoZSBsaWNlbnNlcyBhcmUgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlCisrKiogRm91bmRhdGlvbiBhbmQgYXBwZWFyaW5nIGluIHRoZSBmaWxlIExJQ0VOU0UuR1BM MiBhbmQgTElDRU5TRS5HUEwzCisrKiogaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2luZyBvZiB0aGlz IGZpbGUuIFBsZWFzZSByZXZpZXcgdGhlIGZvbGxvd2luZworKyoqIGluZm9ybWF0aW9uIHRvIGVu c3VyZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgcmVxdWlyZW1lbnRzIHdpbGwKKysq KiBiZSBtZXQ6IGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sIGFuZAor KyoqIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC5odG1sLgorKyoqCisrKiog JFFUX0VORF9MSUNFTlNFJAorKyoqCisrKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjaW5jbHVk ZSA8UXRHdWkvcWFjY2Vzc2libGUuaD4KKysKKysjaWZuZGVmIFFBQ0NFU1NJQkxFUVVJQ0tXSURH RVRGQUNUT1JZX0gKKysjZGVmaW5lIFFBQ0NFU1NJQkxFUVVJQ0tXSURHRVRGQUNUT1JZX0gKKysK KysvLworKy8vICBXIEEgUiBOIEkgTiBHCisrLy8gIC0tLS0tLS0tLS0tLS0KKysvLworKy8vIFRo aXMgZmlsZSBpcyBub3QgcGFydCBvZiB0aGUgUXQgQVBJLiAgSXQgZXhpc3RzIHB1cmVseSBhcyBh bgorKy8vIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFRoaXMgaGVhZGVyIGZpbGUgbWF5IGNoYW5n ZSBmcm9tIHZlcnNpb24gdG8KKysvLyB2ZXJzaW9uIHdpdGhvdXQgbm90aWNlLCBvciBldmVuIGJl IHJlbW92ZWQuCisrLy8KKysvLyBXZSBtZWFuIGl0LgorKy8vCisrCisrUVRfQkVHSU5fTkFNRVNQ QUNFCisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5KQorKworK1FBY2Nlc3NpYmxlSW50 ZXJmYWNlICpxQWNjZXNzaWJsZVF1aWNrV2lkZ2V0RmFjdG9yeShjb25zdCBRU3RyaW5nICZjbGFz c25hbWUsIFFPYmplY3QgKm9iamVjdCk7CisrCisrI2VuZGlmCisrCisrUVRfRU5EX05BTUVTUEFD RQorKworKyNlbmRpZgorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0 cy9xcXVpY2t3aWRnZXQuY3BwIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlj a3dpZGdldC5jcHAKK2luZGV4IDM5NzgwZjhkZTMuLjljOTdiNDM1MTggMTAwNjQ0CistLS0gYS9x dGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0LmNwcAorKysrIGIvcXRk ZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldC5jcHAKK0BAIC0zOSw2ICsz OSw3IEBACisgCisgI2luY2x1ZGUgInFxdWlja3dpZGdldC5oIgorICNpbmNsdWRlICJxcXVpY2t3 aWRnZXRfcC5oIgorKyNpbmNsdWRlICJxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0ZmFjdG9yeV9wLmgi CisgCisgI2luY2x1ZGUgInByaXZhdGUvcXF1aWNrd2luZG93X3AuaCIKKyAjaW5jbHVkZSAicHJp dmF0ZS9xcXVpY2tpdGVtX3AuaCIKK0BAIC03NSw5ICs3NiwxNiBAQAorIAorIFFUX0JFR0lOX05B TUVTUEFDRQorIAorK1FRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvdzo6UVF1aWNrV2lkZ2V0T2Zm c2NyZWVuV2luZG93KFFRdWlja1dpbmRvd1ByaXZhdGUgJmRkLCBRUXVpY2tSZW5kZXJDb250cm9s ICpjb250cm9sKQorKzpRUXVpY2tXaW5kb3coZGQsIGNvbnRyb2wpCisreworKyAgICBzZXRUaXRs ZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJPZmZzY3JlZW4iKSk7CisrICAgIHNldE9iamVjdE5hbWUo UVN0cmluZzo6ZnJvbUxhdGluMSgiUVF1aWNrT2ZmU2NyZWVuV2luZG93IikpOworK30KKysKKyAv LyBvdmVycmlkZSBzZXRWaXNibGUgdG8gcHJldmVudCBhY2NpZGVudGFsIG9mZnNjcmVlbiB3aW5k b3cgYmVpbmcgY3JlYXRlZAorIC8vIGJ5IGJhc2UgY2xhc3MuCistY2xhc3MgUVF1aWNrT2ZmY3Jl ZW5XaW5kb3dQcml2YXRlOiBwdWJsaWMgUVF1aWNrV2luZG93UHJpdmF0ZSB7CisrY2xhc3MgUVF1 aWNrV2lkZ2V0T2Zmc2NyZWVuV2luZG93UHJpdmF0ZTogcHVibGljIFFRdWlja1dpbmRvd1ByaXZh dGUgeworIHB1YmxpYzoKKyAgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkgb3ZlcnJp ZGUgeworICAgICAgICAgUV9RKFFXaW5kb3cpOworQEAgLTEwNSw5ICsxMTMsOCBAQCB2b2lkIFFR dWlja1dpZGdldFByaXZhdGU6OmluaXQoUVFtbEVuZ2luZSogZSkKKyAgICAgUV9RKFFRdWlja1dp ZGdldCk7CisgCisgICAgIHJlbmRlckNvbnRyb2wgPSBuZXcgUVF1aWNrV2lkZ2V0UmVuZGVyQ29u dHJvbChxKTsKKy0gICAgb2Zmc2NyZWVuV2luZG93ID0gbmV3IFFRdWlja1dpbmRvdygqbmV3IFFR dWlja09mZmNyZWVuV2luZG93UHJpdmF0ZSgpLHJlbmRlckNvbnRyb2wpOworLSAgICBvZmZzY3Jl ZW5XaW5kb3ctPnNldFRpdGxlKFFTdHJpbmc6OmZyb21MYXRpbjEoIk9mZnNjcmVlbiIpKTsKKy0g ICAgb2Zmc2NyZWVuV2luZG93LT5zZXRPYmplY3ROYW1lKFFTdHJpbmc6OmZyb21MYXRpbjEoIlFR dWlja09mZlNjcmVlbldpbmRvdyIpKTsKKysgICAgb2Zmc2NyZWVuV2luZG93ID0gbmV3IFFRdWlj a1dpZGdldE9mZnNjcmVlbldpbmRvdygqbmV3IFFRdWlja1dpZGdldE9mZnNjcmVlbldpbmRvd1By aXZhdGUoKSwgcmVuZGVyQ29udHJvbCk7CisrICAgIG9mZnNjcmVlbldpbmRvdy0+c2V0U2NyZWVu KHEtPnNjcmVlbigpKTsKKyAgICAgLy8gRG8gbm90IGNhbGwgY3JlYXRlKCkgb24gb2Zmc2NyZWVu V2luZG93LgorIAorICAgICAvLyBDaGVjayBpZiB0aGUgU29mdHdhcmUgQWRhcHRhdGlvbiBpcyBi ZWluZyB1c2VkCitAQCAtMTM4LDYgKzE0NSwxMCBAQCB2b2lkIFFRdWlja1dpZGdldFByaXZhdGU6 OmluaXQoUVFtbEVuZ2luZSogZSkKKyAgICAgUVdpZGdldDo6Y29ubmVjdChvZmZzY3JlZW5XaW5k b3csICZRUXVpY2tXaW5kb3c6OmZvY3VzT2JqZWN0Q2hhbmdlZCwgcSwgJlFRdWlja1dpZGdldDo6 cHJvcGFnYXRlRm9jdXNPYmplY3RDaGFuZ2VkKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChyZW5k ZXJDb250cm9sLCBTSUdOQUwocmVuZGVyUmVxdWVzdGVkKCkpLCBxLCBTTE9UKHRyaWdnZXJVcGRh dGUoKSkpOworICAgICBRT2JqZWN0Ojpjb25uZWN0KHJlbmRlckNvbnRyb2wsIFNJR05BTChzY2Vu ZUNoYW5nZWQoKSksIHEsIFNMT1QodHJpZ2dlclVwZGF0ZSgpKSk7CisrCisrI2lmIFFUX0NPTkZJ RyhhY2Nlc3NpYmlsaXR5KQorKyAgICBRQWNjZXNzaWJsZTo6aW5zdGFsbEZhY3RvcnkoJnFBY2Nl c3NpYmxlUXVpY2tXaWRnZXRGYWN0b3J5KTsKKysjZW5kaWYKKyB9CisgCisgdm9pZCBRUXVpY2tX aWRnZXRQcml2YXRlOjplbnN1cmVFbmdpbmUoKSBjb25zdAorQEAgLTkwMSw5ICs5MTIsNyBAQCB2 b2lkIFFRdWlja1dpZGdldFByaXZhdGU6OmNyZWF0ZUNvbnRleHQoKQorIAorICAgICAgICAgY29u dGV4dCA9IG5ldyBRT3BlbkdMQ29udGV4dDsKKyAgICAgICAgIGNvbnRleHQtPnNldEZvcm1hdChv ZmZzY3JlZW5XaW5kb3ctPnJlcXVlc3RlZEZvcm1hdCgpKTsKKy0gICAgICAgIGNvbnN0IFFXaW5k b3cgKndpbiA9IHEtPndpbmRvdygpLT53aW5kb3dIYW5kbGUoKTsKKy0gICAgICAgIGlmICh3aW4g JiYgd2luLT5zY3JlZW4oKSkKKy0gICAgICAgICAgICBjb250ZXh0LT5zZXRTY3JlZW4od2luLT5z Y3JlZW4oKSk7CisrICAgICAgICBjb250ZXh0LT5zZXRTY3JlZW4ocS0+c2NyZWVuKCkpOworICAg ICAgICAgUU9wZW5HTENvbnRleHQgKnNoYXJlQ29udGV4dCA9IHF0X2dsX2dsb2JhbF9zaGFyZV9j b250ZXh0KCk7CisgICAgICAgICBpZiAoIXNoYXJlQ29udGV4dCkKKyAgICAgICAgICAgICBzaGFy ZUNvbnRleHQgPSBRV2lkZ2V0UHJpdmF0ZTo6Z2V0KHEtPndpbmRvdygpKS0+c2hhcmVDb250ZXh0 KCk7CitAQCAtMTUyMCwxOSArMTUyOSwxNiBAQCBib29sIFFRdWlja1dpZGdldDo6ZXZlbnQoUUV2 ZW50ICplKQorICAgICAgICAgZC0+aGFuZGxlV2luZG93Q2hhbmdlKCk7CisgICAgICAgICBicmVh azsKKyAKKy0gICAgY2FzZSBRRXZlbnQ6OlNjcmVlbkNoYW5nZUludGVybmFsOgorLSAgICAgICAg aWYgKFFXaW5kb3cgKndpbmRvdyA9IHRoaXMtPndpbmRvdygpLT53aW5kb3dIYW5kbGUoKSkgewor LSAgICAgICAgICAgIFFTY3JlZW4gKm5ld1NjcmVlbiA9IHdpbmRvdy0+c2NyZWVuKCk7CistCist ICAgICAgICAgICAgaWYgKGQtPm9mZnNjcmVlbldpbmRvdykKKy0gICAgICAgICAgICAgICAgZC0+ b2Zmc2NyZWVuV2luZG93LT5zZXRTY3JlZW4obmV3U2NyZWVuKTsKKy0gICAgICAgICAgICBpZiAo ZC0+b2Zmc2NyZWVuU3VyZmFjZSkKKy0gICAgICAgICAgICAgICAgZC0+b2Zmc2NyZWVuU3VyZmFj ZS0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisrICAgIGNhc2UgUUV2ZW50OjpTY3JlZW5DaGFuZ2VJ bnRlcm5hbDogeworKyAgICAgICAgUVNjcmVlbiAqbmV3U2NyZWVuID0gc2NyZWVuKCk7CisrICAg ICAgICBpZiAoZC0+b2Zmc2NyZWVuV2luZG93KQorKyAgICAgICAgICAgIGQtPm9mZnNjcmVlbldp bmRvdy0+c2V0U2NyZWVuKG5ld1NjcmVlbik7CisrICAgICAgICBpZiAoZC0+b2Zmc2NyZWVuU3Vy ZmFjZSkKKysgICAgICAgICAgICBkLT5vZmZzY3JlZW5TdXJmYWNlLT5zZXRTY3JlZW4obmV3U2Ny ZWVuKTsKKyAjaWYgUVRfQ09ORklHKG9wZW5nbCkKKy0gICAgICAgICAgICBpZiAoZC0+Y29udGV4 dCkKKy0gICAgICAgICAgICAgICAgZC0+Y29udGV4dC0+c2V0U2NyZWVuKG5ld1NjcmVlbik7Cisr ICAgICAgICBpZiAoZC0+Y29udGV4dCkKKysgICAgICAgICAgICBkLT5jb250ZXh0LT5zZXRTY3Jl ZW4obmV3U2NyZWVuKTsKKyAjZW5kaWYKKy0gICAgICAgIH0KKyAKKyAgICAgICAgIGlmIChkLT51 c2VTb2Z0d2FyZVJlbmRlcmVyCisgI2lmIFFUX0NPTkZJRyhvcGVuZ2wpCitAQCAtMTU0NSw3ICsx NTUxLDcgQEAgYm9vbCBRUXVpY2tXaWRnZXQ6OmV2ZW50KFFFdmVudCAqZSkKKyAgICAgICAgICAg ICBkLT5yZW5kZXIodHJ1ZSk7CisgICAgICAgICB9CisgICAgICAgICBicmVhazsKKy0KKysgICAg fQorICAgICBjYXNlIFFFdmVudDo6U2hvdzoKKyAgICAgY2FzZSBRRXZlbnQ6Ok1vdmU6CisgICAg ICAgICBkLT51cGRhdGVQb3NpdGlvbigpOworZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvc3Jj L3F1aWNrd2lkZ2V0cy9xcXVpY2t3aWRnZXRfcC5oIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3 aWRnZXRzL3FxdWlja3dpZGdldF9wLmgKK2luZGV4IDg4MWY3ZjkyMjAuLjFhOTQ2YmNjNzEgMTAw NjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXF1aWNrd2lkZ2V0X3Au aAorKysrIGIvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3aWRnZXRzL3FxdWlja3dpZGdldF9wLmgK K0BAIC0xNDgsNiArMTQ4LDE0IEBAIHB1YmxpYzoKKyAgICAgYm9vbCBmb3JjZUZ1bGxVcGRhdGU7 CisgfTsKKyAKKytjbGFzcyBRUXVpY2tXaWRnZXRPZmZzY3JlZW5XaW5kb3c6IHB1YmxpYyBRUXVp Y2tXaW5kb3cKKyt7CisrICAgIFFfT0JKRUNUCisrCisrcHVibGljOgorKyAgICBRUXVpY2tXaWRn ZXRPZmZzY3JlZW5XaW5kb3coUVF1aWNrV2luZG93UHJpdmF0ZSAmZGQsIFFRdWlja1JlbmRlckNv bnRyb2wgKmNvbnRyb2wpOworK307CisrCisgUVRfRU5EX05BTUVTUEFDRQorIAorICNlbmRpZiAv LyBRUXVpY2tXaWRnZXRfUF9ICitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS9zcmMvcXVpY2t3 aWRnZXRzL3F1aWNrd2lkZ2V0cy5wcm8gYi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMv cXVpY2t3aWRnZXRzLnBybworaW5kZXggMjQzOGU1NzdhZS4uODVkMTU2YjhhMyAxMDA2NDQKKy0t LSBhL3F0ZGVjbGFyYXRpdmUvc3JjL3F1aWNrd2lkZ2V0cy9xdWlja3dpZGdldHMucHJvCisrKysg Yi9xdGRlY2xhcmF0aXZlL3NyYy9xdWlja3dpZGdldHMvcXVpY2t3aWRnZXRzLnBybworQEAgLTcs OSArNywxMyBAQCBERUZJTkVTICAgKz0gUVRfTk9fVVJMX0NBU1RfRlJPTV9TVFJJTkcgUVRfTk9f SU5URUdFUl9FVkVOVF9DT09SRElOQVRFUyBRVF9OT19GTworIEhFQURFUlMgKz0gXAorICAgICBx cXVpY2t3aWRnZXQuaCBcCisgICAgIHFxdWlja3dpZGdldF9wLmggXAorLSAgICBxdHF1aWNrd2lk Z2V0c2dsb2JhbC5oCisrICAgIHF0cXVpY2t3aWRnZXRzZ2xvYmFsLmggXAorKyAgICBxYWNjZXNz aWJsZXF1aWNrd2lkZ2V0X3AuaCBcCisrICAgIHFhY2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5 X3AuaAorIAorIFNPVVJDRVMgKz0gXAorLSAgICBxcXVpY2t3aWRnZXQuY3BwCisrICAgIHFxdWlj a3dpZGdldC5jcHAgXAorKyAgICBxYWNjZXNzaWJsZXF1aWNrd2lkZ2V0LmNwcCBcCisrICAgIHFh Y2Nlc3NpYmxlcXVpY2t3aWRnZXRmYWN0b3J5LmNwcAorIAorIGxvYWQocXRfbW9kdWxlKQorZGlm ZiAtLWdpdCBhL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcWpzZW5naW5lL3RzdF9xanNl bmdpbmUuY3BwIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xanNlbmdpbmUvdHN0X3Fq c2VuZ2luZS5jcHAKK2luZGV4IDNiN2Q3NGRmNjMuLmI3NWJmODIwZDUgMTAwNjQ0CistLS0gYS9x dGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fqc2VuZ2luZS90c3RfcWpzZW5naW5lLmNwcAor KysrIGIvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xanNlbmdpbmUvdHN0X3Fqc2VuZ2lu ZS5jcHAKK0BAIC0xMDIsNiArMTAyLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCB2YWx1 ZUNvbnZlcnNpb25fUmVndWxhckV4cHJlc3Npb24oKTsKKyAgICAgdm9pZCBjYXN0V2l0aE11bHRp cGxlSW5oZXJpdGFuY2UoKTsKKyAgICAgdm9pZCBjb2xsZWN0R2FyYmFnZSgpOworKyAgICB2b2lk IGNvbGxlY3RHYXJiYWdlTmVzdGVkV3JhcHBlcnNUd29FbmdpbmVzKCk7CisgICAgIHZvaWQgZ2NX aXRoTmVzdGVkRGF0YVN0cnVjdHVyZSgpOworICAgICB2b2lkIHN0YWNrdHJhY2UoKTsKKyAgICAg dm9pZCBudW1iZXJQYXJzaW5nX2RhdGEoKTsKK0BAIC0xODA5LDYgKzE4MTAsNDQgQEAgdm9pZCB0 c3RfUUpTRW5naW5lOjpjb2xsZWN0R2FyYmFnZSgpCisgICAgIFFWRVJJRlkocHRyLmlzTnVsbCgp KTsKKyB9CisgCisrY2xhc3MgVGVzdE9iamVjdENvbnRhaW5lciA6IHB1YmxpYyBRT2JqZWN0Cisr eworKyAgICBRX09CSkVDVAorKyAgICBRX1BST1BFUlRZKFFPYmplY3QgKmR1bW15IE1FTUJFUiBt X2R1bW15IENPTlNUQU5UKQorKworK3B1YmxpYzoKKysgICAgVGVzdE9iamVjdENvbnRhaW5lcigp IDogbV9kdW1teShuZXcgUU9iamVjdCh0aGlzKSkge30KKysKKytwcml2YXRlOgorKyAgICBRT2Jq ZWN0ICptX2R1bW15OworK307CisrCisrdm9pZCB0c3RfUUpTRW5naW5lOjpjb2xsZWN0R2FyYmFn ZU5lc3RlZFdyYXBwZXJzVHdvRW5naW5lcygpCisreworKyAgICBRSlNFbmdpbmUgZW5naW5lMTsK KysgICAgUUpTRW5naW5lIGVuZ2luZTI7CisrCisrICAgIFRlc3RPYmplY3RDb250YWluZXIgY29u dGFpbmVyOworKyAgICBRUW1sRW5naW5lOjpzZXRPYmplY3RPd25lcnNoaXAoJmNvbnRhaW5lciwg UVFtbEVuZ2luZTo6Q3BwT3duZXJzaGlwKTsKKysKKysgICAgZW5naW5lMS5nbG9iYWxPYmplY3Qo KS5zZXRQcm9wZXJ0eSgiZm9vYmFyIiwgZW5naW5lMS5uZXdRT2JqZWN0KCZjb250YWluZXIpKTsK KysgICAgZW5naW5lMi5nbG9iYWxPYmplY3QoKS5zZXRQcm9wZXJ0eSgiZm9vYmFyIiwgZW5naW5l Mi5uZXdRT2JqZWN0KCZjb250YWluZXIpKTsKKysKKysgICAgZW5naW5lMS5ldmFsdWF0ZSgiZm9v YmFyLmR1bW15LmJheiA9IDQyIik7CisrICAgIGVuZ2luZTIuZXZhbHVhdGUoImZvb2Jhci5kdW1t eS5iYXogPSA0MyIpOworKworKyAgICBRQ09NUEFSRShlbmdpbmUxLmV2YWx1YXRlKCJmb29iYXIu ZHVtbXkuYmF6IikudG9JbnQoKSwgNDIpOworKyAgICBRQ09NUEFSRShlbmdpbmUyLmV2YWx1YXRl KCJmb29iYXIuZHVtbXkuYmF6IikudG9JbnQoKSwgNDMpOworKworKyAgICBlbmdpbmUxLmNvbGxl Y3RHYXJiYWdlKCk7CisrICAgIGVuZ2luZTIuY29sbGVjdEdhcmJhZ2UoKTsKKysKKysgICAgLy8g VGhlIEdDIHNob3VsZCBub3QgY29sbGVjdCBkdW1teSBvYmplY3Qgd3JhcHBlcnMgbmVpdGhlciBp biBlbmdpbmUxIG5vciBlbmdpbmUyLCB3ZQorKyAgICAvLyB2ZXJpZnkgdGhhdCBieSBjaGVja2lu ZyB3aGV0aGVyIHRoZSBiYXogcHJvcGVydHkgc3RpbGwgaGFzIGl0cyBwcmV2aW91cyB2YWx1ZS4K KysgICAgUUNPTVBBUkUoZW5naW5lMS5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJheiIpLnRvSW50 KCksIDQyKTsKKysgICAgUUNPTVBBUkUoZW5naW5lMi5ldmFsdWF0ZSgiZm9vYmFyLmR1bW15LmJh eiIpLnRvSW50KCksIDQzKTsKKyt9CisrCisgdm9pZCB0c3RfUUpTRW5naW5lOjpnY1dpdGhOZXN0 ZWREYXRhU3RydWN0dXJlKCkKKyB7CisgICAgIC8vIFRoZSBHQyBtdXN0IGJlIGFibGUgdG8gdHJh dmVyc2UgZGVlcGx5IG5lc3RlZCBvYmplY3RzLCBvdGhlcndpc2UgdGhpcworZGlmZiAtLWdpdCBh L3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvZGF0YS9yZWRy YXdVcG9uQ29sdW1uQ2hhbmdlLnFtbCBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFt bGRlbGVnYXRlbW9kZWwvZGF0YS9yZWRyYXdVcG9uQ29sdW1uQ2hhbmdlLnFtbAorbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjIwNjEzM2JiMzkKKy0tLSAvZGV2L251bGwK KysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXFtbGRlbGVnYXRlbW9kZWwvZGF0 YS9yZWRyYXdVcG9uQ29sdW1uQ2hhbmdlLnFtbAorQEAgLTAsMCArMSwxMSBAQAorK2ltcG9ydCBR dFF1aWNrIDIuOAorKworK0xpc3RWaWV3IHsKKysgICAgaWQ6IHJvb3QKKysgICAgd2lkdGg6IDIw MAorKyAgICBoZWlnaHQ6IDIwMAorKworKyAgICBkZWxlZ2F0ZTogVGV4dCB7CisrICAgICAgICB0 ZXh0OiBkaXNwbGF5CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0 cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC90c3RfcXFtbGRlbGVnYXRlbW9kZWwuY3BwIGIv cXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC90c3RfcXFtbGRl bGVnYXRlbW9kZWwuY3BwCitpbmRleCAzNWYxZTJjOTRkLi4xNzIyNDQ3ODMwIDEwMDY0NAorLS0t IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3FtbC9xcW1sZGVsZWdhdGVtb2RlbC90c3RfcXFt bGRlbGVnYXRlbW9kZWwuY3BwCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3Fx bWxkZWxlZ2F0ZW1vZGVsL3RzdF9xcW1sZGVsZWdhdGVtb2RlbC5jcHAKK0BAIC0yNyw2ICsyNyw4 IEBACisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAKKyAjaW5jbHVkZSA8UXRUZXN0L3F0ZXN0Lmg+ CisrI2luY2x1ZGUgPFF0Q29yZS9RQ29uY2F0ZW5hdGVUYWJsZXNQcm94eU1vZGVsPgorKyNpbmNs dWRlIDxRdEd1aS9RU3RhbmRhcmRJdGVtTW9kZWw+CisgI2luY2x1ZGUgPFF0UW1sL3FxbWxjb21w b25lbnQuaD4KKyAjaW5jbHVkZSA8UXRRbWxNb2RlbHMvcHJpdmF0ZS9xcW1sZGVsZWdhdGVtb2Rl bF9wLmg+CisgI2luY2x1ZGUgPFF0UXVpY2svcXF1aWNrdmlldy5oPgorQEAgLTQ3LDYgKzQ5LDcg QEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBmaWx0ZXJPbkdyb3VwX3JlbW92ZVdoZW5Db21w bGV0ZWQoKTsKKyAgICAgdm9pZCBxdGJ1Z184NjAxNygpOworICAgICB2b2lkIGNvbnRleHRBY2Nl c3NlZEJ5SGFuZGxlcigpOworKyAgICB2b2lkIHJlZHJhd1Vwb25Db2x1bW5DaGFuZ2UoKTsKKyB9 OworIAorIGNsYXNzIEFic3RyYWN0SXRlbU1vZGVsIDogcHVibGljIFFBYnN0cmFjdEl0ZW1Nb2Rl bAorQEAgLTE4Niw2ICsxODksMzAgQEAgdm9pZCB0c3RfUVFtbERlbGVnYXRlTW9kZWw6OmNvbnRl eHRBY2Nlc3NlZEJ5SGFuZGxlcigpCisgICAgIFFWRVJJRlkocm9vdC0+cHJvcGVydHkoIndvcmtz IikudG9Cb29sKCkpOworIH0KKyAKKyt2b2lkIHRzdF9RUW1sRGVsZWdhdGVNb2RlbDo6cmVkcmF3 VXBvbkNvbHVtbkNoYW5nZSgpCisreworKyAgICBRU3RhbmRhcmRJdGVtTW9kZWwgbTE7CisrICAg IG0xLmFwcGVuZFJvdyh7CisrICAgICAgICAgICAgbmV3IFFTdGFuZGFyZEl0ZW0oIkJhbmFuYSIp LAorKyAgICAgICAgICAgIG5ldyBRU3RhbmRhcmRJdGVtKCJDb2NvbnV0IiksCisrICAgIH0pOwor KworKyAgICBRUXVpY2tWaWV3IHZpZXcodGVzdEZpbGVVcmwoInJlZHJhd1Vwb25Db2x1bW5DaGFu Z2UucW1sIikpOworKyAgICBRQ09NUEFSRSh2aWV3LnN0YXR1cygpLCBRUXVpY2tWaWV3OjpSZWFk eSk7CisrICAgIHZpZXcuc2hvdygpOworKyAgICBRUXVpY2tJdGVtICpyb290ID0gdmlldy5yb290 T2JqZWN0KCk7CisrICAgIHJvb3QtPnNldFByb3BlcnR5KCJtb2RlbCIsIFFWYXJpYW50Ojpmcm9t VmFsdWU8UU9iamVjdCAqPigmbTEpKTsKKysKKysgICAgUU9iamVjdCAqaXRlbSA9IHJvb3QtPnBy b3BlcnR5KCJjdXJyZW50SXRlbSIpLnZhbHVlPFFPYmplY3QgKj4oKTsKKysgICAgUVZFUklGWShp dGVtKTsKKysgICAgUUNPTVBBUkUoaXRlbS0+cHJvcGVydHkoInRleHQiKS50b1N0cmluZygpLCAi QmFuYW5hIik7CisrCisrICAgIFFWRVJJRlkocm9vdCk7CisrICAgIG0xLnJlbW92ZUNvbHVtbigw KTsKKysKKysgICAgUUNPTVBBUkUoaXRlbS0+cHJvcGVydHkoInRleHQiKS50b1N0cmluZygpLCAi Q29jb251dCIpOworK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RUW1sRGVsZWdhdGVNb2RlbCkKKyAK KyAjaW5jbHVkZSAidHN0X3FxbWxkZWxlZ2F0ZW1vZGVsLm1vYyIKK2RpZmYgLS1naXQgYS9xdGRl Y2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3F2NG1tL3RzdF9xdjRtbS5jcHAgYi9xdGRlY2xhcmF0 aXZlL3Rlc3RzL2F1dG8vcW1sL3F2NG1tL3RzdF9xdjRtbS5jcHAKK2luZGV4IDVkNjM1YWE2M2Iu LjgyNGZkODllNWIgMTAwNjQ0CistLS0gYS9xdGRlY2xhcmF0aXZlL3Rlc3RzL2F1dG8vcW1sL3F2 NG1tL3RzdF9xdjRtbS5jcHAKKysrKyBiL3F0ZGVjbGFyYXRpdmUvdGVzdHMvYXV0by9xbWwvcXY0 bW0vdHN0X3F2NG1tLmNwcAorQEAgLTc2LDEwICs3NiwxMCBAQCB2b2lkIHRzdF9xdjRtbTo6bXVs dGlXcmFwcGVkUU9iamVjdHMoKQorICAgICAgICAgUUNPTVBBUkUoZW5naW5lMS5tZW1vcnlNYW5h Z2VyLT5tX3BlbmRpbmdGcmVlZE9iamVjdFdyYXBwZXJWYWx1ZS5zaXplKCksIDEpOworICAgICAg ICAgUUNPTVBBUkUoZW5naW5lMi5tZW1vcnlNYW5hZ2VyLT5tX3BlbmRpbmdGcmVlZE9iamVjdFdy YXBwZXJWYWx1ZS5zaXplKCksIDApOworIAorLSAgICAgICAgLy8gTW92ZXMgdGhlIGFkZGl0aW9u YWwgV2Vha1ZhbHVlIGZyb20gbV9tdWx0aXBseVdyYXBwZWRRT2JqZWN0cyB0bworLSAgICAgICAg Ly8gbV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuIEl0J3Mgc3RpbGwgYWxpdmUgYWZ0 ZXIgYWxsLgorKyAgICAgICAgLy8gVGhlIGFkZGl0aW9uYWwgV2Vha1ZhbHVlIGZyb20gbV9tdWx0 aXBseVdyYXBwZWRRT2JqZWN0cyBoYXNuJ3QgYmVlbiBtb3ZlZAorKyAgICAgICAgLy8gdG8gbV9w ZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUgeWV0LiBJdCdzIHN0aWxsIGFsaXZlIGFmdGVy IGFsbC4KKyAgICAgICAgIGVuZ2luZTEubWVtb3J5TWFuYWdlci0+cnVuR0MoKTsKKy0gICAgICAg IFFDT01QQVJFKGVuZ2luZTEubWVtb3J5TWFuYWdlci0+bV9wZW5kaW5nRnJlZWRPYmplY3RXcmFw cGVyVmFsdWUuc2l6ZSgpLCAyKTsKKysgICAgICAgIFFDT01QQVJFKGVuZ2luZTEubWVtb3J5TWFu YWdlci0+bV9wZW5kaW5nRnJlZWRPYmplY3RXcmFwcGVyVmFsdWUuc2l6ZSgpLCAxKTsKKyAKKyAg ICAgICAgIC8vIGVuZ2luZTIgZG9lc24ndCBvd24gdGhlIG9iamVjdCBhcyBlbmdpbmUxIHdhcyB0 aGUgZmlyc3QgdG8gd3JhcCBpdCBhYm92ZS4KKyAgICAgICAgIC8vIFRoZXJlZm9yZSwgbm8gZWZm ZWN0IGhlcmUuCitkaWZmIC0tZ2l0IGEvcXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3Fx dWlja2l0ZW0yL2RhdGEvYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AzLnFtbCBiL3F0ZGVj bGFyYXRpdmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi9kYXRhL2FjdGl2ZUZvY3VzT25U YWJfaW5maW5pdGVMb29wMy5xbWwKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw MDAwLi44ODllNDgwZjNiCistLS0gL2Rldi9udWxsCisrKysgYi9xdGRlY2xhcmF0aXZlL3Rlc3Rz L2F1dG8vcXVpY2svcXF1aWNraXRlbTIvZGF0YS9hY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9v cDMucW1sCitAQCAtMCwwICsxLDEzIEBACisraW1wb3J0IFF0UXVpY2sgMi42CisrCisrSXRlbSB7 CisrICAgIHZpc2libGU6IHRydWUKKysgICAgSXRlbSB7CisrICAgICAgICB2aXNpYmxlOiBmYWxz ZQorKyAgICAgICAgSXRlbSB7CisrICAgICAgICAgICAgb2JqZWN0TmFtZTogImhpZGRlbkNoaWxk IgorKyAgICAgICAgICAgIGFjdGl2ZUZvY3VzT25UYWI6IHRydWUKKysgICAgICAgICAgICBmb2N1 czogdHJ1ZQorKyAgICAgICAgfQorKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL3F0ZGVjbGFyYXRp dmUvdGVzdHMvYXV0by9xdWljay9xcXVpY2tpdGVtMi90c3RfcXF1aWNraXRlbS5jcHAgYi9xdGRl Y2xhcmF0aXZlL3Rlc3RzL2F1dG8vcXVpY2svcXF1aWNraXRlbTIvdHN0X3FxdWlja2l0ZW0uY3Bw CitpbmRleCBjOGYyNTFkYmUxLi5jOGVmMzZlZTY4IDEwMDY0NAorLS0tIGEvcXRkZWNsYXJhdGl2 ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL3RzdF9xcXVpY2tpdGVtLmNwcAorKysrIGIv cXRkZWNsYXJhdGl2ZS90ZXN0cy9hdXRvL3F1aWNrL3FxdWlja2l0ZW0yL3RzdF9xcXVpY2tpdGVt LmNwcAorQEAgLTY3LDYgKzY3LDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBhY3RpdmVG b2N1c09uVGFiMTAoKTsKKyAgICAgdm9pZCBhY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcF9k YXRhKCk7CisgICAgIHZvaWQgYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AoKTsKKysgICAg dm9pZCBhY3RpdmVGb2N1c09uVGFiX2luZmluaXRlTG9vcENvbnRyb2xzKCk7CisgCisgICAgIHZv aWQgbmV4dEl0ZW1JbkZvY3VzQ2hhaW4oKTsKKyAgICAgdm9pZCBuZXh0SXRlbUluRm9jdXNDaGFp bjIoKTsKK0BAIC0xMDU3LDYgKzEwNTgsMTcgQEAgdm9pZCB0c3RfUVF1aWNrSXRlbTo6YWN0aXZl Rm9jdXNPblRhYl9pbmZpbml0ZUxvb3AoKQorICAgICBRQ09NUEFSRShpdGVtLCB3aW5kb3ctPnJv b3RPYmplY3QoKSk7CisgfQorIAorKworK3ZvaWQgdHN0X1FRdWlja0l0ZW06OmFjdGl2ZUZvY3Vz T25UYWJfaW5maW5pdGVMb29wQ29udHJvbHMoKQorK3sKKysgICAgYXV0byBzb3VyY2UgPSB0ZXN0 RmlsZVVybCgiYWN0aXZlRm9jdXNPblRhYl9pbmZpbml0ZUxvb3AzLnFtbCIpOworKyAgICBRU2Nv cGVkUG9pbnRlcjxRUXVpY2tWaWV3PndpbmRvdyhuZXcgUVF1aWNrVmlldygpKTsKKysgICAgd2lu ZG93LT5zZXRTb3VyY2Uoc291cmNlKTsKKysgICAgd2luZG93LT5zaG93KCk7CisrICAgIFFWRVJJ Rlkod2luZG93LT5lcnJvcnMoKS5pc0VtcHR5KCkpOworKyAgICBRVGVzdDo6a2V5Q2xpY2sod2lu ZG93LmdldCgpLCBRdDo6S2V5X1RhYik7IC8vIHNob3VsZCBub3QgaGFuZworK30KKysKKyB2b2lk IHRzdF9RUXVpY2tJdGVtOjpuZXh0SXRlbUluRm9jdXNDaGFpbigpCisgeworICAgICBpZiAoIXF0 X3RhYl9hbGxfd2lkZ2V0cygpKQorU3VibW9kdWxlIHF0ZG9jIGMwYzdiZjA3Li4uNzlkNmVmNjk6 CitTdWJtb2R1bGUgcXRpbWFnZWZvcm1hdHMgMmRjZjI4OTkuLmFiZTQ0YzBmOgorZGlmZiAtLWdp dCBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9pY25zL3FpY25zaGFu ZGxlci5jcHAgYi9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvaWNucy9x aWNuc2hhbmRsZXIuY3BwCitpbmRleCBkZGU3ODNjLi4xYmY5MDc0IDEwMDY0NAorLS0tIGEvcXRp bWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2ljbnMvcWljbnNoYW5kbGVyLmNw cAorKysrIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2ljbnMvcWlj bnNoYW5kbGVyLmNwcAorQEAgLTQ2Miw4ICs0NjIsMTIgQEAgc3RhdGljIGJvb2wgcGFyc2VJY29u RW50cnlJbmZvKElDTlNFbnRyeSAmaWNvbikKKyAgICAgaWYgKGlzSWNvbkNvbXByZXNzZWQoaWNv bikpCisgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgLy8gSWNvbiBkZXB0aDoKKy0gICAgaWYg KCFkZXB0aC5pc0VtcHR5KCkpCistICAgICAgICBpY29uLmRlcHRoID0gSUNOU0VudHJ5OjpEZXB0 aChkZXB0aC50b1VJbnQoKSk7CisrICAgIGlmICghZGVwdGguaXNFbXB0eSgpKSB7CisrICAgICAg ICBjb25zdCB1aW50IGRlcHRoVUludCA9IGRlcHRoLnRvVUludCgpOworKyAgICAgICAgaWYgKGRl cHRoVUludCA+IDMyKQorKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgICAgIGljb24u ZGVwdGggPSBJQ05TRW50cnk6OkRlcHRoKGRlcHRoVUludCk7CisrICAgIH0KKyAgICAgLy8gVHJ5 IG1vbm8gaWYgZGVwdGggbm90IGZvdW5kCisgICAgIGlmIChpY29uLmRlcHRoID09IElDTlNFbnRy eTo6RGVwdGhVbmtub3duKQorICAgICAgICAgaWNvbi5kZXB0aCA9IElDTlNFbnRyeTo6RGVwdGhN b25vOworQEAgLTUxNSw2ICs1MTksOSBAQCBzdGF0aWMgYm9vbCBwYXJzZUljb25FbnRyeUluZm8o SUNOU0VudHJ5ICZpY29uKQorICAgICAgICAgfQorICAgICAgICAgaWNvbi5oZWlnaHQgPSBpY29u LndpZHRoOworICAgICB9CisrICAgIC8vIFNhbml0eSBjaGVjaworKyAgICBpZiAoaWNvbi53aWR0 aCA9PSAwIHx8IGljb24ud2lkdGggPiA0MDk2KQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg ICByZXR1cm4gdHJ1ZTsKKyB9CisgCitAQCAtNjg1LDcgKzY5Miw3IEBAIGJvb2wgUUlDTlNIYW5k bGVyOjpjYW5SZWFkKCkgY29uc3QKKyBib29sIFFJQ05TSGFuZGxlcjo6cmVhZChRSW1hZ2UgKm91 dEltYWdlKQorIHsKKyAgICAgUUltYWdlIGltZzsKKy0gICAgaWYgKCFlbnN1cmVTY2FubmVkKCkp IHsKKysgICAgaWYgKCFlbnN1cmVTY2FubmVkKCkgfHwgbV9jdXJyZW50SWNvbkluZGV4ID49IG1f aWNvbnMuc2l6ZSgpKSB7CisgICAgICAgICBxV2FybmluZygiUUlDTlNIYW5kbGVyOjpyZWFkKCk6 IFRoZSBkZXZpY2Ugd2Fzbid0IHBhcnNlZCBwcm9wZXJseSEiKTsKKyAgICAgICAgIHJldHVybiBm YWxzZTsKKyAgICAgfQorQEAgLTg5Miw3ICs4OTksNyBAQCBib29sIFFJQ05TSGFuZGxlcjo6c2Nh bkRldmljZSgpCisgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworIAorICAgICAgICAgY29uc3Qg cWludDY0IGJsb2NrRGF0YU9mZnNldCA9IGRldmljZSgpLT5wb3MoKTsKKy0gICAgICAgIGlmICgh aXNCbG9ja0hlYWRlclZhbGlkKGJsb2NrSGVhZGVyKSkgeworKyAgICAgICAgaWYgKCFpc0Jsb2Nr SGVhZGVyVmFsaWQoYmxvY2tIZWFkZXIsIElDTlNCbG9ja0hlYWRlclNpemUgKyBmaWxlbGVuZ3Ro IC0gYmxvY2tEYXRhT2Zmc2V0KSkgeworICAgICAgICAgICAgIHFXYXJuaW5nKCJRSUNOU0hhbmRs ZXI6OnNjYW5EZXZpY2UoKTogRmFpbGVkLCBiYWQgaGVhZGVyIGF0IHBvcyAlcy4gT1NUeXBlIFwi JXNcIiwgbGVuZ3RoICV1IiwKKyAgICAgICAgICAgICAgICAgICAgICBRQnl0ZUFycmF5OjpudW1i ZXIoYmxvY2tEYXRhT2Zmc2V0KS5jb25zdERhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICBu YW1lRnJvbU9TVHlwZShibG9ja0hlYWRlci5vc3R5cGUpLmNvbnN0RGF0YSgpLCBibG9ja0hlYWRl ci5sZW5ndGgpOworQEAgLTkyNywxMSArOTM0LDE0IEBAIGJvb2wgUUlDTlNIYW5kbGVyOjpzY2Fu RGV2aWNlKCkKKyAgICAgICAgIGNhc2UgSUNOU0Jsb2NrSGVhZGVyOjpUeXBlT2RycDoKKyAgICAg ICAgICAgICAvLyBJY25zIGNvbnRhaW5lciBzZWVtcyB0byBoYXZlIGFuIGVtYmVkZGVkIGljb24g dmFyaWFudCBjb250YWluZXIKKyAgICAgICAgICAgICAvLyBMZXQncyBzdGFydCBhIHNjYW4gZm9y IGVudHJpZXMKKy0gICAgICAgICAgICB3aGlsZSAoZGV2aWNlKCktPnBvcygpIDwgbmV4dEJsb2Nr T2Zmc2V0KSB7CisrICAgICAgICAgICAgd2hpbGUgKCFzdHJlYW0uYXRFbmQoKSAmJiBkZXZpY2Uo KS0+cG9zKCkgPCBuZXh0QmxvY2tPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgSUNOU0Jsb2Nr SGVhZGVyIGljb247CisgICAgICAgICAgICAgICAgIHN0cmVhbSA+PiBpY29uOworKyAgICAgICAg ICAgICAgICBpZiAoc3RyZWFtLnN0YXR1cygpICE9IFFEYXRhU3RyZWFtOjpPaykKKysgICAgICAg ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9y IGluY29ycmVjdCB2YXJpYW50IGVudHJ5IGhlYWRlciBhbmQgc3RvcCBzY2FuCistICAgICAgICAg ICAgICAgIGlmICghaXNCbG9ja0hlYWRlclZhbGlkKGljb24sIGJsb2NrRGF0YUxlbmd0aCkpCisr ICAgICAgICAgICAgICAgIHF1aW50NjQgcmVtYWluaW5nID0gYmxvY2tEYXRhTGVuZ3RoIC0gKGRl dmljZSgpLT5wb3MoKSAtIGJsb2NrRGF0YU9mZnNldCk7CisrICAgICAgICAgICAgICAgIGlmICgh aXNCbG9ja0hlYWRlclZhbGlkKGljb24sIElDTlNCbG9ja0hlYWRlclNpemUgKyByZW1haW5pbmcp KQorICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIGlmICghYWRk RW50cnkoaWNvbiwgZGV2aWNlKCktPnBvcygpLCBibG9ja0hlYWRlci5vc3R5cGUpKQorICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTEwMDMsNyArMTAxMyw3IEBAIGJvb2wg UUlDTlNIYW5kbGVyOjpzY2FuRGV2aWNlKCkKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg IH0KKyAgICAgfQorLSAgICByZXR1cm4gdHJ1ZTsKKysgICAgcmV0dXJuIChtX2ljb25zLnNpemUo KSA+IDApOworIH0KKyAKKyBjb25zdCBJQ05TRW50cnkgJlFJQ05TSGFuZGxlcjo6Z2V0SWNvbk1h c2soY29uc3QgSUNOU0VudHJ5ICZpY29uKSBjb25zdAorZGlmZiAtLWdpdCBhL3F0aW1hZ2Vmb3Jt YXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9qcDIvcWpwMmhhbmRsZXIuY3BwIGIvcXRpbWFn ZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2pwMi9xanAyaGFuZGxlci5jcHAKK2lu ZGV4IDUwODIwMjMuLmNiMzQzNzQgMTAwNjQ0CistLS0gYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1 Z2lucy9pbWFnZWZvcm1hdHMvanAyL3FqcDJoYW5kbGVyLmNwcAorKysrIGIvcXRpbWFnZWZvcm1h dHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL2pwMi9xanAyaGFuZGxlci5jcHAKK0BAIC00Myw2 ICs0Myw3IEBACisgI2luY2x1ZGUgInFpbWFnZS5oIgorICNpbmNsdWRlICJxdmFyaWFudC5oIgor ICNpbmNsdWRlICJxY29sb3IuaCIKKysjaW5jbHVkZSAicWltYWdlcmVhZGVyLmgiCisgCisgI2lu Y2x1ZGUgPGphc3Blci9qYXNwZXIuaD4KKyAjaW5jbHVkZSA8bWF0aC5oPiAvLyBmb3IgcG93CitA QCAtMzMzLDE2ICszMzQsNDYgQEAgcHJpdmF0ZToKKyBKcGVnMjAwMEphc3BlclJlYWRlcjo6SnBl ZzIwMDBKYXNwZXJSZWFkZXIoUUlPRGV2aWNlICppb2QsIFN1YkZvcm1hdCBmb3JtYXQpCisgICAg IDogamFzcGVyT2sodHJ1ZSksIGlvRGV2aWNlKGlvZCksIGZvcm1hdChmb3JtYXQpLCBoYXNBbHBo YShmYWxzZSkKKyB7CisrI2lmIEpBU19WRVJTSU9OX01BSk9SIDwgMworICAgICBpZiAoamFzX2lu aXQoKSkgeworICAgICAgICAgamFzcGVyT2sgPSBmYWxzZTsKKyAgICAgICAgIHFEZWJ1ZygiSmFz cGVyIExpYnJhcnkgaW5pdGlhbGl6YXRpb24gZmFpbGVkIik7CisgICAgIH0KKysjZWxzZQorKyAg ICBqYXNfY29uZl9jbGVhcigpOworKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0so NiwgMCwgMCkKKysgICAgamFzX2NvbmZfc2V0X21heF9tZW1fdXNhZ2UoUUltYWdlUmVhZGVyOjph bGxvY2F0aW9uTGltaXQoKSAqIDEwMjQgKiAxMDI0KTsKKysjZWxzZQorKyAgICAvLyAxMjhNQiBz ZWVtcyB0byBiZSBlbm91Z2guCisrICAgIGphc19jb25mX3NldF9tYXhfbWVtX3VzYWdlKDEyOCAq IDEwMjQgKiAxMDI0KTsKKysjZW5kaWYKKysgICAgaWYgKGphc19pbml0X2xpYnJhcnkoKSkgewor KyAgICAgICAgamFzcGVyT2sgPSBmYWxzZTsKKysgICAgICAgIHFEZWJ1ZygiSmFzcGVyIGxpYnJh cnkgaW5pdGlhbGl6YXRpb24gZmFpbGVkIik7CisrICAgIH0KKysgICAgaWYgKGphc19pbml0X3Ro cmVhZCgpKSB7CisrICAgICAgICBqYXNfY2xlYW51cF9saWJyYXJ5KCk7CisrICAgICAgICBqYXNw ZXJPayA9IGZhbHNlOworKyAgICAgICAgcURlYnVnKCJKYXNwZXIgdGhyZWFkIGluaXRpYWxpemF0 aW9uIGZhaWxlZCIpOworKyAgICB9CisrI2VuZGlmCisgfQorIAorIEpwZWcyMDAwSmFzcGVyUmVh ZGVyOjp+SnBlZzIwMDBKYXNwZXJSZWFkZXIoKQorIHsKKysjaWYgSkFTX1ZFUlNJT05fTUFKT1Ig PCAzCisgICAgIGlmIChqYXNwZXJPaykKKyAgICAgICAgIGphc19jbGVhbnVwKCk7CisrI2Vsc2UK KysgICAgaWYgKGphc3Blck9rKSB7CisrICAgICAgICBpZiAoamFzX2NsZWFudXBfdGhyZWFkKCkp IHsKKysgICAgICAgICAgICBxRGVidWcoIkphc3BlciB0aHJlYWQgY2xlYW51cCBmYWlsZWQiKTsK KysgICAgICAgIH0KKysgICAgICAgIGlmIChqYXNfY2xlYW51cF9saWJyYXJ5KCkpIHsKKysgICAg ICAgICAgICBxRGVidWcoIkphc3BlciBsaWJyYXJ5IGNsZWFudXAgZmFpbGVkIik7CisrICAgICAg ICB9CisrICAgIH0KKysjZW5kaWYKKyB9CisgCisgLyohIFxpbnRlcm5hbAorQEAgLTg1Nyw3ICs4 ODgsNyBAQCBib29sIEpwZWcyMDAwSmFzcGVyUmVhZGVyOjp3cml0ZShjb25zdCBRSW1hZ2UgJmlt YWdlLCBpbnQgcXVhbGl0eSkKKyAgICAgfQorIAorICAgICAvLyBPcGVuIGFuIGVtcHR5IGphc3Bl ciBzdHJlYW0gdGhhdCBncm93cyBhdXRvbWF0aWNhbGx5CistICAgIGphc19zdHJlYW1fdCAqIG1l bW9yeV9zdHJlYW0gPSBqYXNfc3RyZWFtX21lbW9wZW4oMCwgLTEpOworKyAgICBqYXNfc3RyZWFt X3QgKiBtZW1vcnlfc3RyZWFtID0gamFzX3N0cmVhbV9tZW1vcGVuKDAsIDApOworIAorICAgICAv LyBKYXNwZXIgd2FudHMgYSBub24tY29uc3Qgc3RyaW5nLgorICAgICBjaGFyICpzdHIgPSBxc3Ry ZHVwKGphc3BlckZvcm1hdFN0cmluZy50b0xhdGluMSgpLmNvbnN0RGF0YSgpKTsKK2RpZmYgLS1n aXQgYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvdGlmZi9xdGlmZmhh bmRsZXIuY3BwIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3JtYXRzL3RpZmYv cXRpZmZoYW5kbGVyLmNwcAoraW5kZXggMTM4Njc1MC4uYWM4OTU2YyAxMDA2NDQKKy0tLSBhL3F0 aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy90aWZmL3F0aWZmaGFuZGxlci5j cHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy90aWZmL3F0 aWZmaGFuZGxlci5jcHAKK0BAIC0zNjEsNiArMzYxLDggQEAgYm9vbCBRVGlmZkhhbmRsZXI6OnJl YWQoUUltYWdlICppbWFnZSkKKyAgICAgfQorIAorICAgICBUSUZGICpjb25zdCB0aWZmID0gZC0+ dGlmZjsKKysgICAgaWYgKFRJRkZJc1RpbGVkKHRpZmYpICYmIFRJRkZUaWxlU2l6ZTY0KHRpZmYp ID4gdWludDY0X3QoaW1hZ2UtPnNpemVJbkJ5dGVzKCkpKSAvLyBDb3JydXB0IGltYWdlCisrICAg ICAgICByZXR1cm4gZmFsc2U7CisgICAgIGNvbnN0IHF1aW50MzIgd2lkdGggPSBkLT5zaXplLndp ZHRoKCk7CisgICAgIGNvbnN0IHF1aW50MzIgaGVpZ2h0ID0gZC0+c2l6ZS5oZWlnaHQoKTsKKyAK K2RpZmYgLS1naXQgYS9xdGltYWdlZm9ybWF0cy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvd2Vi cC9xd2VicGhhbmRsZXIuY3BwIGIvcXRpbWFnZWZvcm1hdHMvc3JjL3BsdWdpbnMvaW1hZ2Vmb3Jt YXRzL3dlYnAvcXdlYnBoYW5kbGVyLmNwcAoraW5kZXggODJkMzhjYi4uZDAyZWIwNSAxMDA2NDQK Ky0tLSBhL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy93ZWJwL3F3ZWJw aGFuZGxlci5jcHAKKysrKyBiL3F0aW1hZ2Vmb3JtYXRzL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0 cy93ZWJwL3F3ZWJwaGFuZGxlci5jcHAKK0BAIC00NSw2ICs0NSw3IEBACisgI2luY2x1ZGUgPHFk ZWJ1Zy5oPgorICNpbmNsdWRlIDxxcGFpbnRlci5oPgorICNpbmNsdWRlIDxxdmFyaWFudC5oPgor KyNpbmNsdWRlIDxRdEVuZGlhbj4KKyAKKyBzdGF0aWMgY29uc3QgaW50IHJpZmZIZWFkZXJTaXpl ID0gMTI7IC8vIFJJRkZfSEVBREVSX1NJWkUgZnJvbSB3ZWJwL2Zvcm1hdF9jb25zdGFudHMuaAor IAorQEAgLTEwMiwyMSArMTAzLDIzIEBAIGJvb2wgUVdlYnBIYW5kbGVyOjplbnN1cmVTY2FubmVk KCkgY29uc3QKKyAKKyAgICAgbV9zY2FuU3RhdGUgPSBTY2FuRXJyb3I7CisgCistICAgIGlmIChk ZXZpY2UoKS0+aXNTZXF1ZW50aWFsKCkpIHsKKy0gICAgICAgIHFXYXJuaW5nKCkgPDwgIlNlcXVl bnRpYWwgZGV2aWNlcyBhcmUgbm90IHN1cHBvcnRlZCI7CisrICAgIFFXZWJwSGFuZGxlciAqdGhh dCA9IGNvbnN0X2Nhc3Q8UVdlYnBIYW5kbGVyICo+KHRoaXMpOworKyAgICBjb25zdCBpbnQgaGVh ZGVyQnl0ZXNOZWVkZWQgPSBzaXplb2YoV2ViUEJpdHN0cmVhbUZlYXR1cmVzKTsKKysgICAgUUJ5 dGVBcnJheSBoZWFkZXIgPSBkZXZpY2UoKS0+cGVlayhoZWFkZXJCeXRlc05lZWRlZCk7CisrICAg IGlmIChoZWFkZXIuc2l6ZSgpIDwgaGVhZGVyQnl0ZXNOZWVkZWQpCisgICAgICAgICByZXR1cm4g ZmFsc2U7CistICAgIH0KKyAKKy0gICAgcWludDY0IG9sZFBvcyA9IGRldmljZSgpLT5wb3MoKTsK Ky0gICAgZGV2aWNlKCktPnNlZWsoMCk7CistCistICAgIFFXZWJwSGFuZGxlciAqdGhhdCA9IGNv bnN0X2Nhc3Q8UVdlYnBIYW5kbGVyICo+KHRoaXMpOworLSAgICBRQnl0ZUFycmF5IGhlYWRlciA9 IGRldmljZSgpLT5wZWVrKHNpemVvZihXZWJQQml0c3RyZWFtRmVhdHVyZXMpKTsKKysgICAgLy8g V2UgZG8gbm8gcmFuZG9tIGFjY2VzcyBkdXJpbmcgZGVjb2RpbmcsIGp1c3QgYSByZWFkQWxsKCkg b2YgdGhlIHdob2xlIGltYWdlIGZpbGUuIFNvIGlmCisrICAgIC8vIGlmIGl0IGlzIGFsbCBhdmFp bGFibGUgYWxyZWFkeSwgd2UgY2FuIGFjY2VwdCBhIHNlcXVlbnRpYWwgZGV2aWNlLiBUaGUgcmlm ZiBoZWFkZXIgY29udGFpbnMKKysgICAgLy8gdGhlIGZpbGUgc2l6ZSBtaW51cyA4IGJ5dGVzIGhl YWRlcgorKyAgICBxaW50NjQgYnl0ZVNpemUgPSBxRnJvbUxpdHRsZUVuZGlhbjxxdWludDMyPiho ZWFkZXIuY29uc3REYXRhKCkgKyA0KTsKKysgICAgaWYgKGRldmljZSgpLT5pc1NlcXVlbnRpYWwo KSAmJiBkZXZpY2UoKS0+Ynl0ZXNBdmFpbGFibGUoKSA8IGJ5dGVTaXplICsgOCkgeworKyAgICAg ICAgcVdhcm5pbmcoKSA8PCAiUVdlYnBIYW5kbGVyOiBJbnN1ZmZpY2llbnQgZGF0YSBhdmFpbGFi bGUgaW4gc2VxdWVudGlhbCBkZXZpY2UiOworKyAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICB9 CisgICAgIGlmIChXZWJQR2V0RmVhdHVyZXMoKGNvbnN0IHVpbnQ4X3QqKWhlYWRlci5jb25zdERh dGEoKSwgaGVhZGVyLnNpemUoKSwgJih0aGF0LT5tX2ZlYXR1cmVzKSkgPT0gVlA4X1NUQVRVU19P SykgeworICAgICAgICAgaWYgKG1fZmVhdHVyZXMuaGFzX2FuaW1hdGlvbikgeworICAgICAgICAg ICAgIC8vIEZvciBhbmltYXRpb24sIHdlIGhhdmUgdG8gcmVhZCBhbmQgc2NhbiB3aG9sZSBmaWxl IHRvIGRldGVybWluZSBsb29wIGNvdW50IGFuZCBpbWFnZXMgY291bnQKKy0gICAgICAgICAgICBk ZXZpY2UoKS0+c2VlayhvbGRQb3MpOworLQorICAgICAgICAgICAgIGlmICh0aGF0LT5lbnN1cmVE ZW11eGVyKCkpIHsKKyAgICAgICAgICAgICAgICAgdGhhdC0+bV9sb29wID0gV2ViUERlbXV4R2V0 SShtX2RlbXV4ZXIsIFdFQlBfRkZfTE9PUF9DT1VOVCk7CisgICAgICAgICAgICAgICAgIHRoYXQt Pm1fZnJhbWVDb3VudCA9IFdlYlBEZW11eEdldEkobV9kZW11eGVyLCBXRUJQX0ZGX0ZSQU1FX0NP VU5UKTsKK0BAIC0xMjYsMTcgKzEyOSwxMyBAQCBib29sIFFXZWJwSGFuZGxlcjo6ZW5zdXJlU2Nh bm5lZCgpIGNvbnN0CisgICAgICAgICAgICAgICAgIGlmICh0aGF0LT5tX2ZlYXR1cmVzLmhhc19h bHBoYSkKKyAgICAgICAgICAgICAgICAgICAgIHRoYXQtPm1fY29tcG9zaXRlZC0+ZmlsbChRdDo6 dHJhbnNwYXJlbnQpOworIAorLSAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3QgcmVzZXQgZGV2 aWNlIHBvc2l0aW9uIHNpbmNlIHdlIGhhdmUgcmVhZCBpbiBhbGwgZGF0YQorICAgICAgICAgICAg ICAgICBtX3NjYW5TdGF0ZSA9IFNjYW5TdWNjZXNzOworLSAgICAgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIG1f c2NhblN0YXRlID0gU2NhblN1Y2Nlc3M7CisgICAgICAgICB9CisgICAgIH0KKyAKKy0gICAgZGV2 aWNlKCktPnNlZWsob2xkUG9zKTsKKy0KKyAgICAgcmV0dXJuIG1fc2NhblN0YXRlID09IFNjYW5T dWNjZXNzOworIH0KKyAKK0BAIC0xNTksNyArMTU4LDcgQEAgYm9vbCBRV2VicEhhbmRsZXI6OmVu c3VyZURlbXV4ZXIoKQorIAorIGJvb2wgUVdlYnBIYW5kbGVyOjpyZWFkKFFJbWFnZSAqaW1hZ2Up CisgeworLSAgICBpZiAoIWVuc3VyZVNjYW5uZWQoKSB8fCBkZXZpY2UoKS0+aXNTZXF1ZW50aWFs KCkgfHwgIWVuc3VyZURlbXV4ZXIoKSkKKysgICAgaWYgKCFlbnN1cmVTY2FubmVkKCkgfHwgIWVu c3VyZURlbXV4ZXIoKSkKKyAgICAgICAgIHJldHVybiBmYWxzZTsKKyAKKyAgICAgUVJlY3QgcHJl dkZyYW1lUmVjdDsKK1N1Ym1vZHVsZSBxdGxvY2F0aW9uIDk4YTVjNTExLi5mOTkxZTI4YzoKK2Rp ZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9jb25maWd1cmUuanNvbiBiL3F0bG9j YXRpb24vc3JjL2xvY2F0aW9uL2NvbmZpZ3VyZS5qc29uCitpbmRleCA2ZDAxYTlhMy4uZDFlNjIz YTEgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9sb2NhdGlvbi9jb25maWd1cmUuanNvbgor KysrIGIvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vY29uZmlndXJlLmpzb24KK0BAIC05LDcgKzks NyBAQAorICAgICAgICAgICAgICJsYWJlbCI6ICJRdC5sYWJzLmxvY2F0aW9uIGV4cGVyaW1lbnRh bCBRTUwgcGx1Z2luIiwKKyAgICAgICAgICAgICAicHVycG9zZSI6ICJQcm92aWRlcyBleHBlcmlt ZW50YWwgUXRMb2NhdGlvbiBRTUwgdHlwZXMiLAorICAgICAgICAgICAgICJzZWN0aW9uIjogIkxv Y2F0aW9uIiwKKy0gICAgICAgICAgICAiY29uZGl0aW9uIjogImNvbmZpZy5vcGVuZ2wiLAorKyAg ICAgICAgICAgICJjb25kaXRpb24iOiAiZmVhdHVyZXMub3BlbmdsIiwKKyAgICAgICAgICAgICAi b3V0cHV0IjogWyAicHJpdmF0ZUZlYXR1cmUiIF0KKyAgICAgICAgIH0sCisgICAgICAgICAiZ2Vv c2VydmljZXNfb3NtIjogeworZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL2xvY2F0aW9uL2xh YnMvcXNnL3FnZW9tYXBvYmplY3Rxc2dzdXBwb3J0LmNwcCBiL3F0bG9jYXRpb24vc3JjL2xvY2F0 aW9uL2xhYnMvcXNnL3FnZW9tYXBvYmplY3Rxc2dzdXBwb3J0LmNwcAoraW5kZXggYTk3ODU3M2Qu LjExZTE0NjZmIDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvbG9jYXRpb24vbGFicy9xc2cv cWdlb21hcG9iamVjdHFzZ3N1cHBvcnQuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9sb2NhdGlv bi9sYWJzL3FzZy9xZ2VvbWFwb2JqZWN0cXNnc3VwcG9ydC5jcHAKK0BAIC0xNTgsNyArMTU4LDcg QEAgdm9pZCBRR2VvTWFwT2JqZWN0UVNHU3VwcG9ydDo6dXBkYXRlTWFwT2JqZWN0cyhRU0dOb2Rl ICpyb290LCBRUXVpY2tXaW5kb3cgKndpbmQKKyAgICAgaWYgKCFyb290KQorICAgICAgICAgcmV0 dXJuOworIAorLSAgICBpZiAobV9tYXBPYmplY3RzUm9vdE5vZGUgJiYgbV9tYXBPYmplY3RzUm9v dE5vZGUtPnBhcmVudCgpKQorKyAgICBpZiAobV9tYXBPYmplY3RzUm9vdE5vZGUgJiYgIW1fbWFw T2JqZWN0c1Jvb3ROb2RlLT5wYXJlbnQoKSkKKyAgICAgICAgIHJvb3QtPmFwcGVuZENoaWxkTm9k ZShtX21hcE9iamVjdHNSb290Tm9kZS5nZXQoKSk7CisgCisgICAgIGlmICghbV9tYXBPYmplY3Rz Um9vdE5vZGUpIHsKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZp Y2VzL2VzcmkvZ2VvY29kaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3Jj L3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9jb2RpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3Bw CitpbmRleCA1YTQwNDY3ZS4uZDEyM2M2YTggMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9w bHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvY29kaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAor KysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb2NvZGluZ21h bmFnZXJlbmdpbmVfZXNyaS5jcHAKK0BAIC01OSw4ICs1OSwxMCBAQCBRVF9CRUdJTl9OQU1FU1BB Q0UKKyBzdGF0aWMgY29uc3QgUVN0cmluZyBrUHJlZml4RXNyaShRU3RyaW5nTGl0ZXJhbCgiZXNy aS4iKSk7Cisgc3RhdGljIGNvbnN0IFFTdHJpbmcga1BhcmFtVXNlckFnZW50KGtQcmVmaXhFc3Jp ICsgUVN0cmluZ0xpdGVyYWwoInVzZXJhZ2VudCIpKTsKKyAKKy1zdGF0aWMgY29uc3QgUVN0cmlu ZyBrVXJsR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgiaHR0cDovL2dlb2NvZGUuYXJjZ2lzLmNvbS9h cmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyL2ZpbmRBZGRyZXNzQ2FuZGlk YXRlcyIpKTsKKy1zdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsUmV2ZXJzZUdlb2NvZGUoUVN0cmlu Z0xpdGVyYWwoImh0dHA6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMv V29ybGQvR2VvY29kZVNlcnZlci9yZXZlcnNlR2VvY29kZSIpKTsKKytzdGF0aWMgY29uc3QgUVN0 cmluZyBrVXJsR2VvY29kZShRU3RyaW5nTGl0ZXJhbCgiaHR0cHM6Ly9nZW9jb2RlLmFyY2dpcy5j b20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJXb3JsZC9HZW9jb2RlU2VydmVyL2ZpbmRBZGRyZXNzQ2FuZGlk YXRlcyIpKTsKKytzdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsUmV2ZXJzZUdlb2NvZGUoUVN0cmlu Z0xpdGVyYWwoCisrICAgICAgICAiaHR0cHM6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jl c3Qvc2VydmljZXMvV29ybGQvR2VvY29kZVNlcnZlci9yZXZlcnNlR2VvY29kZSIpKTsKKyAKKyBz dGF0aWMgUVN0cmluZyBhZGRyZXNzVG9RdWVyeShjb25zdCBRR2VvQWRkcmVzcyAmYWRkcmVzcykK KyB7CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3Jp L2dlb3JvdXRlanNvbnBhcnNlcl9lc3JpLmNwcCBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vv c2VydmljZXMvZXNyaS9nZW9yb3V0ZWpzb25wYXJzZXJfZXNyaS5jcHAKK2luZGV4IDE3NDkyZDk0 Li45NmMxMmIxYiAxMDA2NDQKKy0tLSBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2Vydmlj ZXMvZXNyaS9nZW9yb3V0ZWpzb25wYXJzZXJfZXNyaS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3Jj L3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZWpzb25wYXJzZXJfZXNyaS5jcHAKK0BA IC00Niw3ICs0Niw4IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCistLy8gSlNPTiByZWZl cmVuY2U6IGh0dHA6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFw aS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVjdXRpb24vMDJyMzAwMDAwMDM2 MDAwMDAwLworKy8vIEpTT04gcmVmZXJlbmNlOgorKy8vIGh0dHBzOi8vcmVzb3VyY2VzLmFyY2dp cy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dpdGhfc3luY2hy b25vdXNfZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKyAKKyBzdGF0aWMgY29uc3QgUVN0 cmluZyBrRXJyb3JNZXNzYWdlKFFTdHJpbmdMaXRlcmFsKCJFcnJvciAlMTogJTIuIikpOworIHN0 YXRpYyBjb25zdCBRU3RyaW5nIGtFcnJvckpzb24oUVN0cmluZ0xpdGVyYWwoIkVycm9yOiBpbnZh bGlkZSBKU09OIGRvY3VtZW50LiIpKTsKK2RpZmYgLS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVn aW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVyZXBseV9lc3JpLmNwcCBiL3F0bG9jYXRpb24v c3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0ZXJlcGx5X2VzcmkuY3BwCitpbmRl eCA4Y2FkZmIyOS4uOTJiNmJiMTMgMTAwNjQ0CistLS0gYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5z L2dlb3NlcnZpY2VzL2VzcmkvZ2Vvcm91dGVyZXBseV9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlv bi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRlcmVwbHlfZXNyaS5jcHAKK0BA IC00NCw3ICs0NCw4IEBACisgCisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCistLy8gSlNPTiByZWZl cmVuY2U6IGh0dHA6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFw aS8jL1JvdXRlX3NlcnZpY2Vfd2l0aF9zeW5jaHJvbm91c19leGVjdXRpb24vMDJyMzAwMDAwMDM2 MDAwMDAwLworKy8vIEpTT04gcmVmZXJlbmNlOgorKy8vIGh0dHBzOi8vcmVzb3VyY2VzLmFyY2dp cy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvIy9Sb3V0ZV9zZXJ2aWNlX3dpdGhfc3luY2hy b25vdXNfZXhlY3V0aW9uLzAycjMwMDAwMDAzNjAwMDAwMC8KKyAKKyBHZW9Sb3V0ZVJlcGx5RXNy aTo6R2VvUm91dGVSZXBseUVzcmkoUU5ldHdvcmtSZXBseSAqcmVwbHksIGNvbnN0IFFHZW9Sb3V0 ZVJlcXVlc3QgJnJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFPYmplY3QgKnBhcmVudCkgOgorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMv Z2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0aW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNwcCBiL3F0bG9j YXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW9yb3V0aW5nbWFuYWdlcmVuZ2lu ZV9lc3JpLmNwcAoraW5kZXggMGU2YmMyYzcuLmVkNjEzZjRiIDEwMDY0NAorLS0tIGEvcXRsb2Nh dGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3JvdXRpbmdtYW5hZ2VyZW5naW5l X2VzcmkuY3BwCisrKysgYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2Vzcmkv Z2Vvcm91dGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAKK0BAIC00OCw3ICs0OCw4IEBAIHN0YXRp YyBjb25zdCBRU3RyaW5nIGtQcmVmaXhFc3JpKFFTdHJpbmdMaXRlcmFsKCJlc3JpLiIpKTsKKyBz dGF0aWMgY29uc3QgUVN0cmluZyBrUGFyYW1Vc2VyQWdlbnQoa1ByZWZpeEVzcmkgKyBRU3RyaW5n TGl0ZXJhbCgidXNlcmFnZW50IikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtQYXJhbVRva2Vu KGtQcmVmaXhFc3JpICsgUVN0cmluZ0xpdGVyYWwoInRva2VuIikpOworIAorLXN0YXRpYyBjb25z dCBRU3RyaW5nIGtVcmxSb3V0aW5nKFFTdHJpbmdMaXRlcmFsKCJodHRwOi8vcm91dGUuYXJjZ2lz LmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9Sb3V0ZS9OQVNlcnZlci9Sb3V0ZV9Xb3Js ZC9zb2x2ZSIpKTsKKytzdGF0aWMgY29uc3QgUVN0cmluZyBrVXJsUm91dGluZyhRU3RyaW5nTGl0 ZXJhbCgKKysgICAgICAgICJodHRwczovL3JvdXRlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2Vy dmljZXMvV29ybGQvUm91dGUvTkFTZXJ2ZXIvUm91dGVfV29ybGQvc29sdmUiKSk7CisgCisgR2Vv Um91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjpHZW9Sb3V0aW5nTWFuYWdlckVuZ2luZUVzcmkoY29u c3QgUVZhcmlhbnRNYXAgJnBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUdlb1NlcnZpY2VQcm92aWRlcjo6RXJyb3Ig KmVycm9yLAorQEAgLTcwLDcgKzcxLDggQEAgR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjp+ R2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpKCkKKyB7CisgfQorIAorLS8vIFJFU1QgcmVmZXJl bmNlOiBodHRwOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkv aW5kZXguaHRtbCMvLzAycjMwMDAwMDAzNjAwMDAwMAorKy8vIFJFU1QgcmVmZXJlbmNlOgorKy8v IGh0dHBzOi8vcmVzb3VyY2VzLmFyY2dpcy5jb20vZW4vaGVscC9hcmNnaXMtcmVzdC1hcGkvaW5k ZXguaHRtbCMvLzAycjMwMDAwMDAzNjAwMDAwMAorIAorIFFHZW9Sb3V0ZVJlcGx5ICpHZW9Sb3V0 aW5nTWFuYWdlckVuZ2luZUVzcmk6OmNhbGN1bGF0ZVJvdXRlKGNvbnN0IFFHZW9Sb3V0ZVJlcXVl c3QgJnJlcXVlc3QpCisgeworQEAgLTEyNSw3ICsxMjcsNyBAQCB2b2lkIEdlb1JvdXRpbmdNYW5h Z2VyRW5naW5lRXNyaTo6cmVwbHlFcnJvcihRR2VvUm91dGVSZXBseTo6RXJyb3IgZXJyb3JDb2Rl LCBjbworIFFTdHJpbmcgR2VvUm91dGluZ01hbmFnZXJFbmdpbmVFc3JpOjpwcmVmZXJlZERpcmVj dGlvbkxhbmdhZ2UoKQorIHsKKyAgICAgLy8gbGlzdCBvZiBzdXBwb3J0ZWQgbGFuZ2FnZXMgaXMg ZGVmaW5lZCBpbjoKKy0gICAgLy8gaHR0cDovL3Jlc291cmNlcy5hcmNnaXMuY29tL2VuL2hlbHAv YXJjZ2lzLXJlc3QtYXBpL2luZGV4Lmh0bWwjLy8wMnIzMDAwMDAwMzYwMDAwMDAKKysgICAgLy8g aHR0cHM6Ly9yZXNvdXJjZXMuYXJjZ2lzLmNvbS9lbi9oZWxwL2FyY2dpcy1yZXN0LWFwaS9pbmRl eC5odG1sIy8vMDJyMzAwMDAwMDM2MDAwMDAwCisgICAgIGNvbnN0IFFTdHJpbmdMaXN0IHN1cHBv cnRlZExhbmd1YWdlcyA9IHsKKyAgICAgICAgICJhciIsIC8vIEdlbmVyYXRlIGRpcmVjdGlvbnMg aW4gQXJhYmljCisgICAgICAgICAiY3MiLCAvLyBHZW5lcmF0ZSBkaXJlY3Rpb25zIGluIEN6ZWNo CitkaWZmIC0tZ2l0IGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dl b3RpbGVkbWFwcGluZ21hbmFnZXJlbmdpbmVfZXNyaS5jcHAgYi9xdGxvY2F0aW9uL3NyYy9wbHVn aW5zL2dlb3NlcnZpY2VzL2VzcmkvZ2VvdGlsZWRtYXBwaW5nbWFuYWdlcmVuZ2luZV9lc3JpLmNw cAoraW5kZXggNWQxNTgzNWQuLjI0MTQ4Zjk1IDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMv cGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL2dlb3RpbGVkbWFwcGluZ21hbmFnZXJlbmdpbmVfZXNy aS5jcHAKKysrKyBiL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vvc2VydmljZXMvZXNyaS9nZW90 aWxlZG1hcHBpbmdtYW5hZ2VyZW5naW5lX2VzcmkuY3BwCitAQCAtMjMwLDcgKzIzMCw4IEBAIFFH ZW9NYXAgKkdlb1RpbGVkTWFwcGluZ01hbmFnZXJFbmdpbmVFc3JpOjpjcmVhdGVNYXAoKQorIC8v ICR7eX0gPSBZCisgLy8gJHt0b2tlbn0gPSBUb2tlbgorIAorLS8vIHRlbXBsYXRlID0gJ2h0dHA6 Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1Rv cG9fTWFwL01hcFNlcnZlci90aWxlL3t7en19L3t7eX19L3t7eH19LnBuZycKKysvLyB0ZW1wbGF0 ZSA9CisrLy8gJ2h0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9z ZXJ2aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBTZXJ2ZXIvdGlsZS97e3p9fS97e3l9fS97e3h9fS5w bmcnCisgCisgYm9vbCBHZW9UaWxlZE1hcHBpbmdNYW5hZ2VyRW5naW5lRXNyaTo6aW5pdGlhbGl6 ZU1hcFNvdXJjZXMoUUdlb1NlcnZpY2VQcm92aWRlcjo6RXJyb3IgKmVycm9yLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJp bmcgKmVycm9yU3RyaW5nLAorZGlmZiAtLWdpdCBhL3F0bG9jYXRpb24vc3JjL3BsdWdpbnMvZ2Vv c2VydmljZXMvZXNyaS9tYXBzLmpzb24gYi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZp Y2VzL2VzcmkvbWFwcy5qc29uCitpbmRleCA4MTY3YWU3ZC4uODYyZTA4N2QgMTAwNjQ0CistLS0g YS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvbWFwcy5qc29uCisrKysg Yi9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvbWFwcy5qc29uCitAQCAt Niw4ICs2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQXJjR0lTIE9ubGluZSBX b3JsZCBTdHJlZXQgTWFwIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwKKyAgICAgICAg ICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2aWNl cy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1N0cmVldF9NYXAv TWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJl Zj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTNiOTMzMzc5ODNlOTQz NmY4ZGI5NTBlMzhhODYyOWFmJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAgICAg InVybCI6ICJodHRwczovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2Vy dmljZXMvV29ybGRfU3RyZWV0X01hcC9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmln aHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRl bS5odG1sP2lkPTNiOTMzMzc5ODNlOTQzNmY4ZGI5NTBlMzhhODYyOWFmJz5Fc3JpPC9hPiBjb250 cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTE2LDggKzE2LDggQEAK KyAgICAgICAgICAgICAiIjogIkFyY0dJUyBPbmxpbmUgV29ybGQgSW1hZ2VyeSIsCisgICAgICAg ICAgICAgIm1vYmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAg ICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jl c3Qvc2VydmljZXMvV29ybGRfSW1hZ2VyeS9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5 cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9p dGVtLmh0bWw/aWQ9MTBkZjIyNzlmOTY4NGU0YTlmNmE3ZjA4ZmViYWMyYTknPkVzcmk8L2E+IGNv bnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29u bGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfSW1hZ2VyeS9NYXBTZXJ2ZXIiLAor KyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3 dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPTEwZGYyMjc5Zjk2ODRlNGE5ZjZhN2YwOGZl YmFjMmE5Jz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAg eworQEAgLTI2LDggKzI2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQXJjR0lT IE9ubGluZSBXb3JsZCBUZXJyYWluIEJhc2UiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxz ZSwKKyAgICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0 dHA6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9U ZXJyYWluX0Jhc2UvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICIm Y29weTsgPGEgaHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWM2 MWFkOGFiMDE3ZDQ5ZTFhODJmNTgwZWUxMjk4OTMxJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisr ICAgICAgICAgICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJ Uy9yZXN0L3NlcnZpY2VzL1dvcmxkX1RlcnJhaW5fQmFzZS9NYXBTZXJ2ZXIiLAorKyAgICAgICAg ICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMu Y29tL2hvbWUvaXRlbS5odG1sP2lkPWM2MWFkOGFiMDE3ZDQ5ZTFhODJmNTgwZWUxMjk4OTMxJz5F c3JpPC9hPiBjb250cmlidXRvcnMiCisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTM2 LDggKzM2LDggQEAKKyAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQXJjR0lTIE9ubGluZSBX b3JsZCBUb3BvZ3JhcGh5IiwKKyAgICAgICAgICAgICAibW9iaWxlIjogdHJ1ZSwKKyAgICAgICAg ICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9zZXJ2ZXIu YXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9Ub3BvX01hcC9NYXBT ZXJ2ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdo dHRwOi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MzBlNWZlMzE0OWMzNGRmMWJh OTIyZTZmNWJiZjgwOGYnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJs IjogImh0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMv V29ybGRfVG9wb19NYXAvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6 ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9p ZD0zMGU1ZmUzMTQ5YzM0ZGYxYmE5MjJlNmY1YmJmODA4Zic+RXNyaTwvYT4gY29udHJpYnV0b3Jz IgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC00Niw4ICs0Niw4IEBACisgICAgICAg ICAgICAgImRlc2NyaXB0aW9uIjogIlRoaXMgbWFwIHByZXNlbnRzIGxhbmQgY292ZXIgYW5kIGRl dGFpbGVkIHRvcG9ncmFwaGljIG1hcHMgZm9yIHRoZSBVbml0ZWQgU3RhdGVzLiIsCisgICAgICAg ICAgICAgIm1vYmlsZSI6IHRydWUsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAg ICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMv cmVzdC9zZXJ2aWNlcy9VU0FfVG9wb19NYXBzL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNv cHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21l L2l0ZW0uaHRtbD9pZD05OWNkNWZiZDk4OTM0MDI4ODAyYjRmNzk3YzRiMTczMic+RXNyaTwvYT4g Y29udHJpYnV0b3JzIgorKyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNn aXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1VTQV9Ub3BvX01hcHMvTWFwU2VydmVy IiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6 Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD05OWNkNWZiZDk4OTM0MDI4ODAyYjRm Nzk3YzRiMTczMic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAg ICAgIHsKK0BAIC01Niw4ICs1Niw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk5h dGlvbmFsIEdlb2dyYXBoaWMgV29ybGQgTWFwIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFs c2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJo dHRwOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9OYXRH ZW9fV29ybGRfTWFwL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAi JmNvcHk7IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1i OWIxYjQyMjE5ODk0NGZiYmQ1MjUwYjMyNDE2OTFiNic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgor KyAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0Fy Y0dJUy9yZXN0L3NlcnZpY2VzL05hdEdlb19Xb3JsZF9NYXAvTWFwU2VydmVyIiwKKysgICAgICAg ICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lz LmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1iOWIxYjQyMjE5ODk0NGZiYmQ1MjUwYjMyNDE2OTFiNic+ RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC02 Niw4ICs2Niw4IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoZW1hdGljIGNvbnRl bnQgcHJvdmlkaW5nIGEgbmV1dHJhbCBiYWNrZ3JvdW5kIHdpdGggbWluaW1hbCBjb2xvcnMiLAor ICAgICAgICAgICAgICJtb2JpbGUiOiB0cnVlLAorICAgICAgICAgICAgICJuaWdodCI6IGZhbHNl LAorLSAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL3NlcnZpY2VzLmFyY2dpc29ubGluZS5jb20v QXJjR0lTL3Jlc3Qvc2VydmljZXMvQ2FudmFzL1dvcmxkX0xpZ2h0X0dyYXlfQmFzZS9NYXBTZXJ2 ZXIiLAorLSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRw Oi8vd3d3LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9ZWQ3MTJjYjFkYjNlNGJhZTllODUz MjkwNDBmYjlhNDknPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjog Imh0dHBzOi8vc2VydmljZXMuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9D YW52YXMvV29ybGRfTGlnaHRfR3JheV9CYXNlL01hcFNlcnZlciIsCisrICAgICAgICAgICAgImNv cHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20vaG9t ZS9pdGVtLmh0bWw/aWQ9ZWQ3MTJjYjFkYjNlNGJhZTllODUzMjkwNDBmYjlhNDknPkVzcmk8L2E+ IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtNzYsOCArNzYs OCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJOYXR1cmFsIEVhcnRoIHBoeXNpY2Fs IG1hcCBmb3IgdGhlIHdvcmxkIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAg ICAgICAgICAgIm5pZ2h0IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2Vy dmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfUGh5c2ljYWxf TWFwL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxh IGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1jNGVjNzIyYTFj ZDM0Y2YwYTIzOTA0YWFkZjg5MjNhMCc+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAgICAg ICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9z ZXJ2aWNlcy9Xb3JsZF9QaHlzaWNhbF9NYXAvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29w eXJpZ2h0VGV4dCI6ICImY29weTsgPGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21l L2l0ZW0uaHRtbD9pZD1jNGVjNzIyYTFjZDM0Y2YwYTIzOTA0YWFkZjg5MjNhMCc+RXNyaTwvYT4g Y29udHJpYnV0b3JzIgorICAgICAgICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC04Niw4ICs4Niw4 IEBACisgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBvcnRyYXlzIHN1cmZhY2UgZWxldmF0 aW9uIGFzIHNoYWRlZCByZWxpZWYiLAorICAgICAgICAgICAgICJtb2JpbGUiOiBmYWxzZSwKKyAg ICAgICAgICAgICAibmlnaHQiOiBmYWxzZSwKKy0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9z ZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9TaGFkZWRf UmVsaWVmL01hcFNlcnZlciIsCistICAgICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7 IDxhIGhyZWY9J2h0dHA6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD05YzUzNzBk MGI1NGY0ZGUxYjQ4YTM3OTJkNzM3N2ZmMic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorKyAgICAg ICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVz dC9zZXJ2aWNlcy9Xb3JsZF9TaGFkZWRfUmVsaWVmL01hcFNlcnZlciIsCisrICAgICAgICAgICAg ImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFyY2dpcy5jb20v aG9tZS9pdGVtLmh0bWw/aWQ9OWM1MzcwZDBiNTRmNGRlMWI0OGEzNzkyZDczNzdmZjInPkVzcmk8 L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0sCisgCisgICAgICAgICB7CitAQCAtOTYsOCAr OTYsOCBAQAorICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIG1hcCBpcyBkZXNpZ25l ZCB0byBiZSB1c2VkIGFzIGEgYmFzZW1hcCBieSBtYXJpbmUgR0lTIHByb2Zlc3Npb25hbHMgYW5k IGFzIGEgcmVmZXJlbmNlIG1hcCBieSBhbnlvbmUgaW50ZXJlc3RlZCBpbiBvY2VhbiBkYXRhIiwK KyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogZmFs c2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20v YXJjZ2lzL3Jlc3Qvc2VydmljZXMvT2NlYW4vV29ybGRfT2NlYW5fQmFzZS9NYXBTZXJ2ZXIiLAor LSAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3 LmFyY2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9MWUxMjZlNzUyMGY5NDY2YzljYTI4YjhmMjhi NWU1MDAnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBz Oi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvT2NlYW4vV29y bGRfT2NlYW5fQmFzZS9NYXBTZXJ2ZXIiLAorKyAgICAgICAgICAgICJjb3B5cmlnaHRUZXh0Ijog IiZjb3B5OyA8YSBocmVmPSdodHRwczovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lk PTFlMTI2ZTc1MjBmOTQ2NmM5Y2EyOGI4ZjI4YjVlNTAwJz5Fc3JpPC9hPiBjb250cmlidXRvcnMi CisgICAgICAgICB9LAorIAorICAgICAgICAgeworQEAgLTEwNiw4ICsxMDYsOCBAQAorICAgICAg ICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGVtYXRpYyBjb250ZW50IHByb3ZpZGluZyBhIG5ldXRy YWwgYmFja2dyb3VuZCB3aXRoIG1pbmltYWwgY29sb3JzIiwKKyAgICAgICAgICAgICAibW9iaWxl IjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0IjogdHJ1ZSwKKy0gICAgICAgICAgICAidXJs IjogImh0dHA6Ly9zZXJ2aWNlcy5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2Vz L0NhbnZhcy9Xb3JsZF9EYXJrX0dyYXlfQmFzZS9NYXBTZXJ2ZXIiLAorLSAgICAgICAgICAgICJj b3B5cmlnaHRUZXh0IjogIiZjb3B5OyA8YSBocmVmPSdodHRwOi8vd3d3LmFyY2dpcy5jb20vaG9t ZS9pdGVtLmh0bWw/aWQ9YTI4NGE5Yjk5YjM0NDZhMzkxMGQ0MTQ0YTUwOTkwZjYnPkVzcmk8L2E+ IGNvbnRyaWJ1dG9ycyIKKysgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc2VydmljZXMuYXJj Z2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9DYW52YXMvV29ybGRfRGFya19HcmF5 X0Jhc2UvTWFwU2VydmVyIiwKKysgICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsg PGEgaHJlZj0naHR0cHM6Ly93d3cuYXJjZ2lzLmNvbS9ob21lL2l0ZW0uaHRtbD9pZD1hMjg0YTli OTliMzQ0NmEzOTEwZDQxNDRhNTA5OTBmNic+RXNyaTwvYT4gY29udHJpYnV0b3JzIgorICAgICAg ICAgfSwKKyAKKyAgICAgICAgIHsKK0BAIC0xMTYsOCArMTE2LDggQEAKKyAgICAgICAgICAgICAi ZGVzY3JpcHRpb24iOiAiRGVMb3JtZeKAmXMgdG9wb2dyYXBoaWMgYmFzZW1hcCBpcyBhIHNlYW1s ZXNzIGdsb2JhbCBkYXRhIHNldCB0aGF0IHBvcnRyYXlzIHRyYW5zcG9ydGF0aW9uLCBoeWRyb2dy YXBoeSwganVyaXNkaWN0aW9uIGJvdW5kYXJpZXMsIGFuZCBtYWpvciBnZW9ncmFwaGljIGZlYXR1 cmVzIiwKKyAgICAgICAgICAgICAibW9iaWxlIjogZmFsc2UsCisgICAgICAgICAgICAgIm5pZ2h0 IjogZmFsc2UsCistICAgICAgICAgICAgInVybCI6ICJodHRwOi8vc2VydmVyLmFyY2dpc29ubGlu ZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvU3BlY2lhbHR5L0RlTG9ybWVfV29ybGRfQmFzZV9N YXAvTWFwU2VydmVyIiwKKy0gICAgICAgICAgICAiY29weXJpZ2h0VGV4dCI6ICImY29weTsgPGEg aHJlZj0naHR0cDovL3d3dy5hcmNnaXMuY29tL2hvbWUvaXRlbS5odG1sP2lkPWIxNjVjM2RmNDUz ZTRiZTZiNWFjNGZkYjI0MWVmZmJlJz5Fc3JpPC9hPiBjb250cmlidXRvcnMiCisrICAgICAgICAg ICAgInVybCI6ICJodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3Nl cnZpY2VzL1NwZWNpYWx0eS9EZUxvcm1lX1dvcmxkX0Jhc2VfTWFwL01hcFNlcnZlciIsCisrICAg ICAgICAgICAgImNvcHlyaWdodFRleHQiOiAiJmNvcHk7IDxhIGhyZWY9J2h0dHBzOi8vd3d3LmFy Y2dpcy5jb20vaG9tZS9pdGVtLmh0bWw/aWQ9YjE2NWMzZGY0NTNlNGJlNmI1YWM0ZmRiMjQxZWZm YmUnPkVzcmk8L2E+IGNvbnRyaWJ1dG9ycyIKKyAgICAgICAgIH0KKyAgICAgXQorIH0KK2RpZmYg LS1naXQgYS9xdGxvY2F0aW9uL3NyYy9wbHVnaW5zL2dlb3NlcnZpY2VzL2VzcmkvcGxhY2VtYW5h Z2VyZW5naW5lX2VzcmkuY3BwIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9l c3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAoraW5kZXggMzg1OGRkZjUuLmFmNjZmMjhl IDEwMDY0NAorLS0tIGEvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9nZW9zZXJ2aWNlcy9lc3JpL3Bs YWNlbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorKysrIGIvcXRsb2NhdGlvbi9zcmMvcGx1Z2lucy9n ZW9zZXJ2aWNlcy9lc3JpL3BsYWNlbWFuYWdlcmVuZ2luZV9lc3JpLmNwcAorQEAgLTYzLDggKzYz LDEwIEBAIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtDb3VudHJpZXNLZXkoUVN0cmluZ0xpdGVyYWwo ImRldGFpbGVkQ291bnRyaWVzIikpOworIHN0YXRpYyBjb25zdCBRU3RyaW5nIGtMb2NhbGl6ZWRO YW1lc0tleShRU3RyaW5nTGl0ZXJhbCgibG9jYWxpemVkTmFtZXMiKSk7Cisgc3RhdGljIGNvbnN0 IFFTdHJpbmcga01heExvY2F0aW9uc0tleShRU3RyaW5nTGl0ZXJhbCgibWF4TG9jYXRpb25zIikp OworIAorLXN0YXRpYyBjb25zdCBRVXJsIGtVcmxHZW9jb2RlU2VydmVyKCJodHRwOi8vZ2VvY29k ZS5hcmNnaXMuY29tL2FyY2dpcy9yZXN0L3NlcnZpY2VzL1dvcmxkL0dlb2NvZGVTZXJ2ZXI/Zj1w anNvbiIpOworLXN0YXRpYyBjb25zdCBRVXJsIGtVcmxGaW5kQWRkcmVzc0NhbmRpZGF0ZXMoImh0 dHA6Ly9nZW9jb2RlLmFyY2dpcy5jb20vYXJjZ2lzL3Jlc3Qvc2VydmljZXMvV29ybGQvR2VvY29k ZVNlcnZlci9maW5kQWRkcmVzc0NhbmRpZGF0ZXMiKTsKKytzdGF0aWMgY29uc3QgUVVybCBrVXJs R2VvY29kZVNlcnZlcigKKysgICAgICAgICJodHRwczovL2dlb2NvZGUuYXJjZ2lzLmNvbS9hcmNn aXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC9HZW9jb2RlU2VydmVyP2Y9cGpzb24iKTsKKytzdGF0aWMg Y29uc3QgUVVybCBrVXJsRmluZEFkZHJlc3NDYW5kaWRhdGVzKCJodHRwczovL2dlb2NvZGUuYXJj Z2lzLmNvbS9hcmNnaXMvcmVzdC9zZXJ2aWNlcy9Xb3JsZC8iCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiR2VvY29kZVNlcnZlci9maW5kQWRkcmVzc0NhbmRp ZGF0ZXMiKTsKKyAKKyBQbGFjZU1hbmFnZXJFbmdpbmVFc3JpOjpQbGFjZU1hbmFnZXJFbmdpbmVF c3JpKGNvbnN0IFFWYXJpYW50TWFwICZwYXJhbWV0ZXJzLCBRR2VvU2VydmljZVByb3ZpZGVyOjpF cnJvciAqZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRU3RyaW5nICplcnJvclN0cmluZykgOgorU3VibW9kdWxlIHF0bXVsdGltZWRpYSBmMDM0 NDA3OS4uMGQ3Y2MzM2E6CitkaWZmIC0tZ2l0IGEvcXRtdWx0aW1lZGlhL3NyYy9wbHVnaW5zL3B1 bHNlYXVkaW8vcWF1ZGlvaW5wdXRfcHVsc2UuY3BwIGIvcXRtdWx0aW1lZGlhL3NyYy9wbHVnaW5z L3B1bHNlYXVkaW8vcWF1ZGlvaW5wdXRfcHVsc2UuY3BwCitpbmRleCAyYjUzMjUxMzIuLmI2OGI0 YWYxYiAxMDA2NDQKKy0tLSBhL3F0bXVsdGltZWRpYS9zcmMvcGx1Z2lucy9wdWxzZWF1ZGlvL3Fh dWRpb2lucHV0X3B1bHNlLmNwcAorKysrIGIvcXRtdWx0aW1lZGlhL3NyYy9wbHVnaW5zL3B1bHNl YXVkaW8vcWF1ZGlvaW5wdXRfcHVsc2UuY3BwCitAQCAtNDAyLDYgKzQwMiw4IEBAIGludCBRUHVs c2VBdWRpb0lucHV0OjpieXRlc1JlYWR5KCkgY29uc3QKKyAKKyBxaW50NjQgUVB1bHNlQXVkaW9J bnB1dDo6cmVhZChjaGFyICpkYXRhLCBxaW50NjQgbGVuKQorIHsKKysgICAgUV9BU1NFUlQoZGF0 YSAhPSBudWxscHRyIHx8IGxlbiA9PSAwKTsKKysKKyAgICAgbV9ieXRlc0F2YWlsYWJsZSA9IGNo ZWNrQnl0ZXNSZWFkeSgpOworIAorICAgICBzZXRFcnJvcihRQXVkaW86Ok5vRXJyb3IpOworQEAg LTQxMSw3ICs0MTMsOCBAQCBxaW50NjQgUVB1bHNlQXVkaW9JbnB1dDo6cmVhZChjaGFyICpkYXRh LCBxaW50NjQgbGVuKQorIAorICAgICBpZiAoIW1fcHVsbE1vZGUgJiYgIW1fdGVtcEJ1ZmZlci5p c0VtcHR5KCkpIHsKKyAgICAgICAgIHJlYWRCeXRlcyA9IHFNaW4oc3RhdGljX2Nhc3Q8aW50Pihs ZW4pLCBtX3RlbXBCdWZmZXIuc2l6ZSgpKTsKKy0gICAgICAgIG1lbWNweShkYXRhLCBtX3RlbXBC dWZmZXIuY29uc3REYXRhKCksIHJlYWRCeXRlcyk7CisrICAgICAgICBpZiAocmVhZEJ5dGVzKQor KyAgICAgICAgICAgIG1lbWNweShkYXRhLCBtX3RlbXBCdWZmZXIuY29uc3REYXRhKCksIHJlYWRC eXRlcyk7CisgICAgICAgICBtX3RvdGFsVGltZVZhbHVlICs9IHJlYWRCeXRlczsKKyAKKyAgICAg ICAgIGlmIChyZWFkQnl0ZXMgPCBtX3RlbXBCdWZmZXIuc2l6ZSgpKSB7CitAQCAtNTAyLDkgKzUw NSwxMCBAQCBxaW50NjQgUVB1bHNlQXVkaW9JbnB1dDo6cmVhZChjaGFyICpkYXRhLCBxaW50NjQg bGVuKQorIAorIHZvaWQgUVB1bHNlQXVkaW9JbnB1dDo6YXBwbHlWb2x1bWUoY29uc3Qgdm9pZCAq c3JjLCB2b2lkICpkZXN0LCBpbnQgbGVuKQorIHsKKysgICAgUV9BU1NFUlQoKHNyYyAmJiBkZXN0 KSB8fCBsZW4gPT0gMCk7CisgICAgIGlmIChtX3ZvbHVtZSA8IDEuZikKKyAgICAgICAgIFFBdWRp b0hlbHBlckludGVybmFsOjpxTXVsdGlwbHlTYW1wbGVzKG1fdm9sdW1lLCBtX2Zvcm1hdCwgc3Jj LCBkZXN0LCBsZW4pOworLSAgICBlbHNlCisrICAgIGVsc2UgaWYgKGxlbikKKyAgICAgICAgIG1l bWNweShkZXN0LCBzcmMsIGxlbik7CisgfQorIAorU3VibW9kdWxlIHF0cGltIDAyZWZlZjVlLi4u ZjlhOGYwZmMgKGNvbW1pdHMgbm90IHByZXNlbnQpCitTdWJtb2R1bGUgcXRxdWljazNkIGI4NWNm NjIyLi40N2RlZmM4YjoKK2RpZmYgLS1naXQgYS9xdHF1aWNrM2Qvc3JjL3BsdWdpbnMvYXNzZXRp bXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8gYi9xdHF1aWNrM2Qvc3JjL3BsdWdpbnMvYXNzZXRp bXBvcnRlcnMvYXNzaW1wL2Fzc2ltcC5wcm8KK2luZGV4IGNhNWM0OTllLi4xNzRhMDc1YiAxMDA2 NDQKKy0tLSBhL3F0cXVpY2szZC9zcmMvcGx1Z2lucy9hc3NldGltcG9ydGVycy9hc3NpbXAvYXNz aW1wLnBybworKysrIGIvcXRxdWljazNkL3NyYy9wbHVnaW5zL2Fzc2V0aW1wb3J0ZXJzL2Fzc2lt cC9hc3NpbXAucHJvCitAQCAtMTAsNyArMTAsNyBAQCBRVF9GT1JfQ09ORklHICs9IGFzc2V0aW1w b3J0ZXJzLXByaXZhdGUKKyBpbmNsdWRlKCQkT1VUX1BXRC8uLi9xdGFzc2V0aW1wb3J0ZXJzLWNv bmZpZy5wcmkpCisgCisgcXRDb25maWcoc3lzdGVtLWFzc2ltcCk6IWlmKGNyb3NzX2NvbXBpbGU6 aG9zdF9idWlsZCkgeworLSAgICBRTUFLRV9VU0VfUFJJVkFURSArPSBhc3NpbXAKKysgICAgUU1B S0VfVVNFX1BSSVZBVEUgKz0gcXVpY2szZC1hc3NpbXAKKyB9IGVsc2UgeworICAgICBpbmNsdWRl KC4uLy4uLy4uLzNyZHBhcnR5L2Fzc2ltcC9hc3NpbXAucHJpKQorIH0KK1N1Ym1vZHVsZSBxdHF1 aWNrY29udHJvbHMyIDNhNjU3ZGMwLi41NmNlODIzMzoKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29u dHJvbHMyL3NyYy9pbXBvcnRzL3BsYXRmb3JtL3dpZGdldHMvcXdpZGdldHBsYXRmb3JtbWVudS5j cHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9pbXBvcnRzL3BsYXRmb3JtL3dpZGdldHMvcXdpZGdl dHBsYXRmb3JtbWVudS5jcHAKK2luZGV4IGU1ZmU3MzRmNy4uZTM2OTIyNzc1IDEwMDY0NAorLS0t IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvaW1wb3J0cy9wbGF0Zm9ybS93aWRnZXRzL3F3aWRnZXRw bGF0Zm9ybW1lbnUuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9pbXBvcnRzL3BsYXRm b3JtL3dpZGdldHMvcXdpZGdldHBsYXRmb3JtbWVudS5jcHAKK0BAIC0zOCw2ICszOCw3IEBACisg I2luY2x1ZGUgInF3aWRnZXRwbGF0Zm9ybW1lbnVpdGVtX3AuaCIKKyAKKyAjaW5jbHVkZSA8UXRH dWkvcXdpbmRvdy5oPgorKyNpbmNsdWRlIDxRdEd1aS9wcml2YXRlL3FoaWdoZHBpc2NhbGluZ19w Lmg+CisgI2luY2x1ZGUgPFF0V2lkZ2V0cy9xbWVudS5oPgorICNpbmNsdWRlIDxRdFdpZGdldHMv cWFjdGlvbi5oPgorIAorQEAgLTE0NSw3ICsxNDYsNyBAQCB2b2lkIFFXaWRnZXRQbGF0Zm9ybU1l bnU6OnNob3dQb3B1cChjb25zdCBRV2luZG93ICp3aW5kb3csIGNvbnN0IFFSZWN0ICZ0YXJnZXRS ZQorIAorICAgICBRUG9pbnQgdGFyZ2V0UG9zID0gdGFyZ2V0UmVjdC5ib3R0b21MZWZ0KCk7Cisg ICAgIGlmICh3aW5kb3cpCistICAgICAgICB0YXJnZXRQb3MgPSB3aW5kb3ctPm1hcFRvR2xvYmFs KHRhcmdldFBvcyk7CisrICAgICAgICB0YXJnZXRQb3MgPSB3aW5kb3ctPm1hcFRvR2xvYmFsKFFI aWdoRHBpOjpmcm9tTmF0aXZlTG9jYWxQb3NpdGlvbih0YXJnZXRQb3MsIHdpbmRvdykpOworIAor ICAgICBjb25zdCBRV2lkZ2V0UGxhdGZvcm1NZW51SXRlbSAqd2lkZ2V0SXRlbSA9IHFvYmplY3Rf Y2FzdDxjb25zdCBRV2lkZ2V0UGxhdGZvcm1NZW51SXRlbSAqPihpdGVtKTsKKyAgICAgbV9tZW51 LT5wb3B1cCh0YXJnZXRQb3MsIHdpZGdldEl0ZW0gPyB3aWRnZXRJdGVtLT5hY3Rpb24oKSA6IG51 bGxwdHIpOworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVz Mi9xcXVpY2thYnN0cmFjdGJ1dHRvbi5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3Rl bXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b24uY3BwCitpbmRleCA5NTBlNGUwOTkuLmI4MWZi ZWEwYiAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9x cXVpY2thYnN0cmFjdGJ1dHRvbi5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNr dGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbi5jcHAKK0BAIC0zODcsNiArMzg3LDE3IEBA IHZvaWQgUVF1aWNrQWJzdHJhY3RCdXR0b25Qcml2YXRlOjppdGVtSW1wbGljaXRIZWlnaHRDaGFu Z2VkKFFRdWlja0l0ZW0gKml0ZW0pCisgICAgICAgICBlbWl0IHEtPmltcGxpY2l0SW5kaWNhdG9y SGVpZ2h0Q2hhbmdlZCgpOworIH0KKyAKKyt2b2lkIFFRdWlja0Fic3RyYWN0QnV0dG9uUHJpdmF0 ZTo6aXRlbURlc3Ryb3llZChRUXVpY2tJdGVtICppdGVtKQorK3sKKysgICAgUV9RKFFRdWlja0Fi c3RyYWN0QnV0dG9uKTsKKysgICAgUVF1aWNrQ29udHJvbFByaXZhdGU6Oml0ZW1EZXN0cm95ZWQo aXRlbSk7CisrICAgIGlmIChpdGVtID09IGluZGljYXRvcikgeworKyAgICAgICAgaW5kaWNhdG9y ID0gbnVsbHB0cjsKKysgICAgICAgIGVtaXQgcS0+aW1wbGljaXRJbmRpY2F0b3JXaWR0aENoYW5n ZWQoKTsKKysgICAgICAgIGVtaXQgcS0+aW1wbGljaXRJbmRpY2F0b3JIZWlnaHRDaGFuZ2VkKCk7 CisrICAgIH0KKyt9CisrCisgUVF1aWNrQWJzdHJhY3RCdXR0b24gKlFRdWlja0Fic3RyYWN0QnV0 dG9uUHJpdmF0ZTo6ZmluZENoZWNrZWRCdXR0b24oKSBjb25zdAorIHsKKyAgICAgUV9RKGNvbnN0 IFFRdWlja0Fic3RyYWN0QnV0dG9uKTsKK0BAIC0xMTc2LDYgKzExODcsMTIgQEAgUUFjY2Vzc2li bGU6OlJvbGUgUVF1aWNrQWJzdHJhY3RCdXR0b246OmFjY2Vzc2libGVSb2xlKCkgY29uc3QKKyAg ICAgfQorICAgICByZXR1cm4gUUFjY2Vzc2libGU6OkJ1dHRvbjsKKyB9CisrCisrdm9pZCBRUXVp Y2tBYnN0cmFjdEJ1dHRvbjo6YWNjZXNzaWJsZVByZXNzQWN0aW9uKCkKKyt7CisrICAgIFFfRChR UXVpY2tBYnN0cmFjdEJ1dHRvbik7CisrICAgIGQtPnRyaWdnZXIoKTsKKyt9CisgI2VuZGlmCisg CisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1 aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wLmggYi9xdHF1aWNrY29udHJvbHMy L3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcC5oCitpbmRleCAwZmE0 ODk4MGUuLmFiNjYyMjBkMCAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNr dGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wLmgKKysrKyBiL3F0cXVpY2tjb250cm9s czIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thYnN0cmFjdGJ1dHRvbl9wLmgKK0BAIC0yMDks NiArMjA5LDcgQEAgcHJvdGVjdGVkOgorICNpZiBRVF9DT05GSUcoYWNjZXNzaWJpbGl0eSkKKyAg ICAgdm9pZCBhY2Nlc3NpYmlsaXR5QWN0aXZlQ2hhbmdlZChib29sIGFjdGl2ZSkgb3ZlcnJpZGU7 CisgICAgIFFBY2Nlc3NpYmxlOjpSb2xlIGFjY2Vzc2libGVSb2xlKCkgY29uc3Qgb3ZlcnJpZGU7 CisrICAgIFFfSU5WT0tBQkxFIHZvaWQgYWNjZXNzaWJsZVByZXNzQWN0aW9uKCk7CisgI2VuZGlm CisgCisgcHJpdmF0ZToKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3Rl bXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcF9wLmggYi9xdHF1aWNrY29udHJvbHMyL3Ny Yy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcF9wLmgKK2luZGV4IDkyOTFj MWE4Ny4uYjcyOTcyMGYyIDEwMDY0NAorLS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0 ZW1wbGF0ZXMyL3FxdWlja2Fic3RyYWN0YnV0dG9uX3BfcC5oCisrKysgYi9xdHF1aWNrY29udHJv bHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrYWJzdHJhY3RidXR0b25fcF9wLmgKK0BAIC0x MDksNiArMTA5LDcgQEAgcHVibGljOgorIAorICAgICB2b2lkIGl0ZW1JbXBsaWNpdFdpZHRoQ2hh bmdlZChRUXVpY2tJdGVtICppdGVtKSBvdmVycmlkZTsKKyAgICAgdm9pZCBpdGVtSW1wbGljaXRI ZWlnaHRDaGFuZ2VkKFFRdWlja0l0ZW0gKml0ZW0pIG92ZXJyaWRlOworKyAgICB2b2lkIGl0ZW1E ZXN0cm95ZWQoUVF1aWNrSXRlbSAqaXRlbSkgb3ZlcnJpZGU7CisgCisgICAgIC8vIGNvcGllZCBm cm9tIHFhYnN0cmFjdGJ1dHRvbi5jcHAKKyAgICAgc3RhdGljIGNvbnN0IGludCBBVVRPX1JFUEVB VF9ERUxBWSA9IDMwMDsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3Rl bXBsYXRlczIvcXF1aWNrYWN0aW9uLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVt cGxhdGVzMi9xcXVpY2thY3Rpb24uY3BwCitpbmRleCAyMDQxZTc3NDEuLjg2MTBjZGZhZSAxMDA2 NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2thY3Rp b24uY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNr YWN0aW9uLmNwcAorQEAgLTE0NSw3ICsxNDUsNyBAQCBpbnQgUVF1aWNrQWN0aW9uUHJpdmF0ZTo6 U2hvcnRjdXRFbnRyeTo6c2hvcnRjdXRJZCgpIGNvbnN0CisgCisgdm9pZCBRUXVpY2tBY3Rpb25Q cml2YXRlOjpTaG9ydGN1dEVudHJ5OjpncmFiKGNvbnN0IFFLZXlTZXF1ZW5jZSAmc2hvcnRjdXQs IGJvb2wgZW5hYmxlZCkKKyB7CistICAgIGlmIChzaG9ydGN1dC5pc0VtcHR5KCkpCisrICAgIGlm IChzaG9ydGN1dC5pc0VtcHR5KCkgfHwgbV9zaG9ydGN1dElkKQorICAgICAgICAgcmV0dXJuOwor IAorICAgICBRdDo6U2hvcnRjdXRDb250ZXh0IGNvbnRleHQgPSBRdDo6V2luZG93U2hvcnRjdXQ7 IC8vIFRPRE8KK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRl czIvcXF1aWNrY29udGFpbmVyLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxh dGVzMi9xcXVpY2tjb250YWluZXIuY3BwCitpbmRleCBmMzhjMmIwOWMuLjZlZWQyYTAyNCAxMDA2 NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250 YWluZXIuY3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1 aWNrY29udGFpbmVyLmNwcAorQEAgLTIyNSw2ICsyMjUsNyBAQCB2b2lkIFFRdWlja0NvbnRhaW5l clByaXZhdGU6OmNsZWFudXAoKQorICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGNvbnRlbnRNb2Rl bCwgJlFRbWxPYmplY3RNb2RlbDo6Y291bnRDaGFuZ2VkLCBxLCAmUVF1aWNrQ29udGFpbmVyOjpj b3VudENoYW5nZWQpOworICAgICBRT2JqZWN0OjpkaXNjb25uZWN0KGNvbnRlbnRNb2RlbCwgJlFR bWxPYmplY3RNb2RlbDo6Y2hpbGRyZW5DaGFuZ2VkLCBxLCAmUVF1aWNrQ29udGFpbmVyOjpjb250 ZW50Q2hpbGRyZW5DaGFuZ2VkKTsKKyAgICAgZGVsZXRlIGNvbnRlbnRNb2RlbDsKKysgICAgY29u dGVudE1vZGVsID0gbnVsbHB0cjsKKyB9CisgCisgUVF1aWNrSXRlbSAqUVF1aWNrQ29udGFpbmVy UHJpdmF0ZTo6aXRlbUF0KGludCBpbmRleCkgY29uc3QKK0BAIC00MzYsNyArNDM3LDcgQEAgdm9p ZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjpjb250ZW50Q2hpbGRyZW5fY2xlYXIoUVFtbExpc3RQ cm9wZXJ0eTxRUXVpY2tJdGVtPgorIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6dXBkYXRl Q29udGVudFdpZHRoKCkKKyB7CisgICAgIFFfUShRUXVpY2tDb250YWluZXIpOworLSAgICBpZiAo aGFzQ29udGVudFdpZHRoIHx8IHFGdXp6eUNvbXBhcmUoY29udGVudFdpZHRoLCBpbXBsaWNpdENv bnRlbnRXaWR0aCkpCisrICAgIGlmIChoYXNDb250ZW50V2lkdGggfHwgcUZ1enp5Q29tcGFyZShj b250ZW50V2lkdGgsIGltcGxpY2l0Q29udGVudFdpZHRoKSB8fCAhY29udGVudE1vZGVsKQorICAg ICAgICAgcmV0dXJuOworIAorICAgICBjb250ZW50V2lkdGggPSBpbXBsaWNpdENvbnRlbnRXaWR0 aDsKK0BAIC00NDYsNyArNDQ3LDcgQEAgdm9pZCBRUXVpY2tDb250YWluZXJQcml2YXRlOjp1cGRh dGVDb250ZW50V2lkdGgoKQorIHZvaWQgUVF1aWNrQ29udGFpbmVyUHJpdmF0ZTo6dXBkYXRlQ29u dGVudEhlaWdodCgpCisgeworICAgICBRX1EoUVF1aWNrQ29udGFpbmVyKTsKKy0gICAgaWYgKGhh c0NvbnRlbnRIZWlnaHQgfHwgcUZ1enp5Q29tcGFyZShjb250ZW50SGVpZ2h0LCBpbXBsaWNpdENv bnRlbnRIZWlnaHQpKQorKyAgICBpZiAoaGFzQ29udGVudEhlaWdodCB8fCBxRnV6enlDb21wYXJl KGNvbnRlbnRIZWlnaHQsIGltcGxpY2l0Q29udGVudEhlaWdodCkgfHwgIWNvbnRlbnRNb2RlbCkK KyAgICAgICAgIHJldHVybjsKKyAKKyAgICAgY29udGVudEhlaWdodCA9IGltcGxpY2l0Q29udGVu dEhlaWdodDsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRl czIvcXF1aWNrY29udHJvbC5jcHAgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRl czIvcXF1aWNrY29udHJvbC5jcHAKK2luZGV4IGJiYmQwZTYyMi4uMWY0YjQ3MzQzIDEwMDY0NAor LS0tIGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2NvbnRyb2wu Y3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrY29u dHJvbC5jcHAKK0BAIC04NDUsNiArODQ1LDEzIEBAIHZvaWQgUVF1aWNrQ29udHJvbFByaXZhdGU6 OmV4ZWN1dGVCYWNrZ3JvdW5kKGJvb2wgY29tcGxldGUpCisgICAgICAgICBxdWlja0NvbXBsZXRl RGVmZXJyZWQocSwgYmFja2dyb3VuZE5hbWUoKSwgYmFja2dyb3VuZCk7CisgfQorIAorKy8qCisr ICAgIFxpbnRlcm5hbAorKworKyAgICBIaWRlcyBhbiBpdGVtIHRoYXQgd2FzIHJlcGxhY2VkIGJ5 IGEgbmV3ZXIgb25lLCByYXRoZXIgdGhhbgorKyAgICBkZWxldGluZyBpdCwgYXMgdGhlIGl0ZW0g aXMgdHlwaWNhbGx5IGNyZWF0ZWQgaW4gUU1MIGFuZCBoZW5jZQorKyAgICB3ZSBkb24ndCBvd24g aXQuCisrKi8KKyB2b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjpoaWRlT2xkSXRlbShRUXVpY2tJ dGVtICppdGVtKQorIHsKKyAgICAgaWYgKCFpdGVtKQorQEAgLTg2Myw2ICs4NzAsMjkgQEAgdm9p ZCBRUXVpY2tDb250cm9sUHJpdmF0ZTo6aGlkZU9sZEl0ZW0oUVF1aWNrSXRlbSAqaXRlbSkKKyAj ZW5kaWYKKyB9CisgCisrLyoKKysgICAgXGludGVybmFsCisrCisrICAgIE5hbWVkICJ1bmhpZGUi IGJlY2F1c2UgaXQncyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhbiBpdGVtCisrICAgIHRoYXQgd2Fz IHByZXZpb3VzbHkgaGlkZGVuIGJ5IFxsIGhpZGVPbGRJdGVtKCkgd2FudHMgdG8gYmUKKysgICAg c2hvd24gYnkgYSBjb250cm9sIGFnYWluLCBzdWNoIGFzIGEgU2Nyb2xsQmFyIGluIFNjcm9sbFZp ZXcuCisrKi8KKyt2b2lkIFFRdWlja0NvbnRyb2xQcml2YXRlOjp1bmhpZGVPbGRJdGVtKFFRdWlj a0NvbnRyb2wgKmNvbnRyb2wsIFFRdWlja0l0ZW0gKml0ZW0pCisreworKyAgICBRX0FTU0VSVChp dGVtKTsKKysgICAgcUNEZWJ1ZyhsY0l0ZW1NYW5hZ2VtZW50KSA8PCAidW5oaWRpbmcgb2xkIGl0 ZW0iIDw8IGl0ZW07CisrCisrICAgIGl0ZW0tPnNldFZpc2libGUodHJ1ZSk7CisrICAgIGl0ZW0t PnNldFBhcmVudEl0ZW0oY29udHJvbCk7CisrCisrI2lmIFFUX0NPTkZJRyhhY2Nlc3NpYmlsaXR5 KQorKyAgICAvLyBBZGQgdGhlIGl0ZW0gYmFjayBpbiB0byB0aGUgYWNjZXNzaWJpbGl0eSB0cmVl LgorKyAgICBRUXVpY2tBY2Nlc3NpYmxlQXR0YWNoZWQgKmFjY2Vzc2libGUgPSBhY2Nlc3NpYmxl QXR0YWNoZWQoaXRlbSk7CisrICAgIGlmIChhY2Nlc3NpYmxlKQorKyAgICAgICAgYWNjZXNzaWJs ZS0+c2V0SWdub3JlZChmYWxzZSk7CisrI2VuZGlmCisrfQorKworIHZvaWQgUVF1aWNrQ29udHJv bFByaXZhdGU6OnVwZGF0ZUJhc2VsaW5lT2Zmc2V0KCkKKyB7CisgICAgIFFfUShRUXVpY2tDb250 cm9sKTsKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIv cXF1aWNrY29udHJvbF9wX3AuaCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVz Mi9xcXVpY2tjb250cm9sX3BfcC5oCitpbmRleCA4ZTk3OTA3OWUuLmE2ZTYyNGM5MSAxMDA2NDQK Ky0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tjb250cm9s X3BfcC5oCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNr Y29udHJvbF9wX3AuaAorQEAgLTE3Myw2ICsxNzMsNyBAQCBwdWJsaWM6CisgICAgIHZpcnR1YWwg dm9pZCBleGVjdXRlQmFja2dyb3VuZChib29sIGNvbXBsZXRlID0gZmFsc2UpOworIAorICAgICBz dGF0aWMgdm9pZCBoaWRlT2xkSXRlbShRUXVpY2tJdGVtICppdGVtKTsKKysgICAgc3RhdGljIHZv aWQgdW5oaWRlT2xkSXRlbShRUXVpY2tDb250cm9sICpjb250cm9sLCBRUXVpY2tJdGVtICppdGVt KTsKKyAKKyAgICAgdm9pZCB1cGRhdGVCYXNlbGluZU9mZnNldCgpOworIAorZGlmZiAtLWdpdCBh L3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tkaWFsb2didXR0b25i b3guY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2RpYWxv Z2J1dHRvbmJveC5jcHAKK2luZGV4IGU2ZGIxNGViNS4uNjE5N2QxNTQ3IDEwMDY0NAorLS0tIGEv cXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja2RpYWxvZ2J1dHRvbmJv eC5jcHAKKysrKyBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tk aWFsb2didXR0b25ib3guY3BwCitAQCAtMjM3LDcgKzIzNyw3IEBAIHN0YXRpYyBRUmVjdEYgYWxp Z25lZFJlY3QoUXQ6OkxheW91dERpcmVjdGlvbiBkaXJlY3Rpb24sIFF0OjpBbGlnbm1lbnQgYWxp Z25tZW50Cisgdm9pZCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjpyZXNpemVDb250ZW50 KCkKKyB7CisgICAgIFFfUShRUXVpY2tEaWFsb2dCdXR0b25Cb3gpOworLSAgICBpZiAoIWNvbnRl bnRJdGVtKQorKyAgICBpZiAoIWNvbnRlbnRJdGVtIHx8ICFjb250ZW50TW9kZWwpCisgICAgICAg ICByZXR1cm47CisgCisgICAgIFFSZWN0RiBnZW9tZXRyeSA9IHEtPmJvdW5kaW5nUmVjdCgpLmFk anVzdGVkKHEtPmxlZnRQYWRkaW5nKCksIHEtPnRvcFBhZGRpbmcoKSwgLXEtPnJpZ2h0UGFkZGlu ZygpLCAtcS0+Ym90dG9tUGFkZGluZygpKTsKK0BAIC0zMjIsNiArMzIyLDkgQEAgdm9pZCBRUXVp Y2tEaWFsb2dCdXR0b25Cb3hQcml2YXRlOjp1cGRhdGVMYXlvdXQoKQorIHFyZWFsIFFRdWlja0Rp YWxvZ0J1dHRvbkJveFByaXZhdGU6OmdldENvbnRlbnRXaWR0aCgpIGNvbnN0CisgeworICAgICBR X1EoY29uc3QgUVF1aWNrRGlhbG9nQnV0dG9uQm94KTsKKysgICAgaWYgKCFjb250ZW50TW9kZWwp CisrICAgICAgICByZXR1cm4gMDsKKysKKyAgICAgY29uc3QgaW50IGNvdW50ID0gY29udGVudE1v ZGVsLT5jb3VudCgpOworICAgICBjb25zdCBxcmVhbCB0b3RhbFNwYWNpbmcgPSBxTWF4KDAsIGNv dW50IC0gMSkgKiBzcGFjaW5nOworICAgICBxcmVhbCB0b3RhbFdpZHRoID0gdG90YWxTcGFjaW5n OworQEAgLTM0MSw2ICszNDQsOSBAQCBxcmVhbCBRUXVpY2tEaWFsb2dCdXR0b25Cb3hQcml2YXRl OjpnZXRDb250ZW50V2lkdGgoKSBjb25zdAorIHFyZWFsIFFRdWlja0RpYWxvZ0J1dHRvbkJveFBy aXZhdGU6OmdldENvbnRlbnRIZWlnaHQoKSBjb25zdAorIHsKKyAgICAgUV9RKGNvbnN0IFFRdWlj a0RpYWxvZ0J1dHRvbkJveCk7CisrICAgIGlmICghY29udGVudE1vZGVsKQorKyAgICAgICAgcmV0 dXJuIDA7CisrCisgICAgIGNvbnN0IGludCBjb3VudCA9IGNvbnRlbnRNb2RlbC0+Y291bnQoKTsK KyAgICAgcXJlYWwgbWF4SGVpZ2h0ID0gMDsKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3Vu dDsgKytpKSB7CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0 ZXMyL3FxdWlja292ZXJsYXkuY3BwIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0 ZXMyL3FxdWlja292ZXJsYXkuY3BwCitpbmRleCA5MWJkNTkxODQuLjBjZTUxOGY4NCAxMDA2NDQK Ky0tLSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tvdmVybGF5 LmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi9zcmMvcXVpY2t0ZW1wbGF0ZXMyL3FxdWlja292 ZXJsYXkuY3BwCitAQCAtMzk5LDggKzM5OSwxMSBAQCB2b2lkIFFRdWlja092ZXJsYXk6Oml0ZW1D aGFuZ2UoSXRlbUNoYW5nZSBjaGFuZ2UsIGNvbnN0IEl0ZW1DaGFuZ2VEYXRhICZkYXRhKQorICAg ICBRX0QoUVF1aWNrT3ZlcmxheSk7CisgICAgIFFRdWlja0l0ZW06Oml0ZW1DaGFuZ2UoY2hhbmdl LCBkYXRhKTsKKyAKKy0gICAgaWYgKGNoYW5nZSA9PSBJdGVtQ2hpbGRBZGRlZENoYW5nZSB8fCBj aGFuZ2UgPT0gSXRlbUNoaWxkUmVtb3ZlZENoYW5nZSkKKysgICAgaWYgKGNoYW5nZSA9PSBJdGVt Q2hpbGRBZGRlZENoYW5nZSB8fCBjaGFuZ2UgPT0gSXRlbUNoaWxkUmVtb3ZlZENoYW5nZSkgewor ICAgICAgICAgc2V0VmlzaWJsZSghZC0+YWxsRHJhd2Vycy5pc0VtcHR5KCkgfHwgIWNoaWxkSXRl bXMoKS5pc0VtcHR5KCkpOworKyAgICAgICAgaWYgKGRhdGEuaXRlbS0+cGFyZW50KCkgPT0gZC0+ bW91c2VHcmFiYmVyUG9wdXApCisrICAgICAgICAgICAgZC0+c2V0TW91c2VHcmFiYmVyUG9wdXAo bnVsbHB0cik7CisrICAgIH0KKyB9CisgCisgdm9pZCBRUXVpY2tPdmVybGF5OjpnZW9tZXRyeUNo YW5nZWQoY29uc3QgUVJlY3RGICZuZXdHZW9tZXRyeSwgY29uc3QgUVJlY3RGICZvbGRHZW9tZXRy eSkKK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1 aWNrc2Nyb2xsYmFyLmNwcCBiL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9x cXVpY2tzY3JvbGxiYXIuY3BwCitpbmRleCA0ZTJmNTA5ZGIuLjFjNGIzMDhjZCAxMDA2NDQKKy0t LSBhL3F0cXVpY2tjb250cm9sczIvc3JjL3F1aWNrdGVtcGxhdGVzMi9xcXVpY2tzY3JvbGxiYXIu Y3BwCisrKysgYi9xdHF1aWNrY29udHJvbHMyL3NyYy9xdWlja3RlbXBsYXRlczIvcXF1aWNrc2Ny b2xsYmFyLmNwcAorQEAgLTc5Nyw2ICs3OTcsMTQgQEAgdm9pZCBRUXVpY2tTY3JvbGxCYXJBdHRh Y2hlZFByaXZhdGU6OmluaXRIb3Jpem9udGFsKCkKKyAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQg PT0gZmxpY2thYmxlLT5wYXJlbnRJdGVtKCkpCisgICAgICAgICBob3Jpem9udGFsLT5zdGFja0Fm dGVyKGZsaWNrYWJsZSk7CisgCisrICAgIC8vIElmIGEgc2Nyb2xsIGJhciB3YXMgcHJldmlvdXNs eSBoaWRkZW4gKGR1ZSB0byBlLmcuIHNldHRpbmcgYSBuZXcgY29udGVudEl0ZW0KKysgICAgLy8g b24gYSBTY3JvbGxWaWV3KSwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB3ZSB1bi1oaWRlIGl0 LgorKyAgICAvLyBXZSBkb24ndCBib3RoZXIgY2hlY2tpbmcgaWYgdGhlIGl0ZW0gaXMgYWN0dWFs bHkgdGhlIG9sZCBvbmUsIGJlY2F1c2UKKysgICAgLy8gaWYgaXQncyBub3QsIGFsbCBvZiB0aGUg dGhpbmdzIHRoZSBmdW5jdGlvbiBkb2VzIChzZXR0aW5nIHBhcmVudCwgdmlzaWJpbGl0eSwgZXRj LikKKysgICAgLy8gc2hvdWxkIGJlIG5vLW9wcyBhbnl3YXkuCisrICAgIGlmIChhdXRvIGNvbnRy b2wgPSBxb2JqZWN0X2Nhc3Q8UVF1aWNrQ29udHJvbCo+KHFfcHRyLT5wYXJlbnQoKSkpCisrICAg ICAgICBRUXVpY2tDb250cm9sUHJpdmF0ZTo6dW5oaWRlT2xkSXRlbShjb250cm9sLCBob3Jpem9u dGFsKTsKKysKKyAgICAgbGF5b3V0SG9yaXpvbnRhbCgpOworICAgICBob3Jpem9udGFsLT5zZXRT aXplKGFyZWEtPnByb3BlcnR5KCJ3aWR0aFJhdGlvIikudG9SZWFsKCkpOworICAgICBob3Jpem9u dGFsLT5zZXRQb3NpdGlvbihhcmVhLT5wcm9wZXJ0eSgieFBvc2l0aW9uIikudG9SZWFsKCkpOwor QEAgLTgxOCw2ICs4MjYsOSBAQCB2b2lkIFFRdWlja1Njcm9sbEJhckF0dGFjaGVkUHJpdmF0ZTo6 aW5pdFZlcnRpY2FsKCkKKyAgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQgPT0gZmxpY2thYmxlLT5w YXJlbnRJdGVtKCkpCisgICAgICAgICB2ZXJ0aWNhbC0+c3RhY2tBZnRlcihmbGlja2FibGUpOwor IAorKyAgICBpZiAoYXV0byBjb250cm9sID0gcW9iamVjdF9jYXN0PFFRdWlja0NvbnRyb2wqPihx X3B0ci0+cGFyZW50KCkpKQorKyAgICAgICAgUVF1aWNrQ29udHJvbFByaXZhdGU6OnVuaGlkZU9s ZEl0ZW0oY29udHJvbCwgdmVydGljYWwpOworKworICAgICBsYXlvdXRWZXJ0aWNhbCgpOworICAg ICB2ZXJ0aWNhbC0+c2V0U2l6ZShhcmVhLT5wcm9wZXJ0eSgiaGVpZ2h0UmF0aW8iKS50b1JlYWwo KSk7CisgICAgIHZlcnRpY2FsLT5zZXRQb3NpdGlvbihhcmVhLT5wcm9wZXJ0eSgieVBvc2l0aW9u IikudG9SZWFsKCkpOworZGlmZiAtLWdpdCBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMvYXV0by9j b250cm9scy9kYXRhL3RzdF9zY3JvbGx2aWV3LnFtbCBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMv YXV0by9jb250cm9scy9kYXRhL3RzdF9zY3JvbGx2aWV3LnFtbAoraW5kZXggMGU4YjA4MzUyLi5j ZDQ5MzExODQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vY29udHJv bHMvZGF0YS90c3Rfc2Nyb2xsdmlldy5xbWwKKysrKyBiL3F0cXVpY2tjb250cm9sczIvdGVzdHMv YXV0by9jb250cm9scy9kYXRhL3RzdF9zY3JvbGx2aWV3LnFtbAorQEAgLTU3Niw0ICs1NzYsNTEg QEAgVGVzdENhc2UgeworICAgICAgICAgdmVyaWZ5KG5ld0hvcml6b250YWxTY3JvbGxCYXIudmlz aWJsZSkKKyAgICAgICAgIHZlcmlmeSghb2xkSG9yaXpvbnRhbFNjcm9sbEJhci52aXNpYmxlKQor ICAgICB9CisrCisrICAgIENvbXBvbmVudCB7CisrICAgICAgICBpZDogYmluZGluZ1RvQ29udGVu dEl0ZW1BbmRTdGFuZGFsb25lRmxpY2thYmxlCisrCisrICAgICAgICBJdGVtIHsKKysgICAgICAg ICAgICB3aWR0aDogMjAwCisrICAgICAgICAgICAgaGVpZ2h0OiAyMDAKKysKKysgICAgICAgICAg ICBwcm9wZXJ0eSBhbGlhcyBzY3JvbGxWaWV3OiBzY3JvbGxWaWV3CisrCisrICAgICAgICAgICAg U2Nyb2xsVmlldyB7CisrICAgICAgICAgICAgICAgIGlkOiBzY3JvbGxWaWV3CisrICAgICAgICAg ICAgICAgIGFuY2hvcnMuZmlsbDogcGFyZW50CisrICAgICAgICAgICAgICAgIGNvbnRlbnRJdGVt OiBsaXN0VmlldworKworKyAgICAgICAgICAgICAgICBwcm9wZXJ0eSBJdGVtIHNvbWVCaW5kaW5n OiBjb250ZW50SXRlbQorKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBMaXN0VmlldyB7Cisr ICAgICAgICAgICAgICAgIGlkOiBsaXN0VmlldworKyAgICAgICAgICAgICAgICBtb2RlbDogMTAK KysgICAgICAgICAgICAgICAgZGVsZWdhdGU6IEl0ZW1EZWxlZ2F0ZSB7CisrICAgICAgICAgICAg ICAgICAgICB0ZXh0OiBtb2RlbERhdGEKKysgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBsaXN0 Vmlldy53aWR0aAorKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKyAgICAgICAg fQorKyAgICB9CisrCisrICAgIC8vIFRlc3RzIHRoYXQgc2Nyb2xsIGJhcnMgc2hvdyB1cCBmb3Ig YSBTY3JvbGxWaWV3IHdoZXJlCisrICAgIC8vIC0gaXRzIGNvbnRlbnRJdGVtIGlzIGRlY2xhcmVk IGFzIGEgc3RhbmRhbG9uZSwgc2VwYXJhdGUgaXRlbQorKyAgICAvLyAtIHRoZXJlIGlzIGEgYmlu ZGluZyB0byBjb250ZW50SXRlbSAod2hpY2ggY2F1c2VzIGEgZGVmYXVsdCBGbGlja2FibGUgdG8g YmUgY3JlYXRlZCkKKysgICAgZnVuY3Rpb24gdGVzdF9iaW5kaW5nVG9Db250ZW50SXRlbUFuZFN0 YW5kYWxvbmVGbGlja2FibGUoKSB7CisrICAgICAgICBsZXQgcm9vdCA9IGNyZWF0ZVRlbXBvcmFy eU9iamVjdChiaW5kaW5nVG9Db250ZW50SXRlbUFuZFN0YW5kYWxvbmVGbGlja2FibGUsIHRlc3RD YXNlKQorKyAgICAgICAgdmVyaWZ5KHJvb3QpCisrCisrICAgICAgICBsZXQgY29udHJvbCA9IHJv b3Quc2Nyb2xsVmlldworKyAgICAgICAgbGV0IHZlcnRpY2FsU2Nyb2xsQmFyID0gY29udHJvbC5T Y3JvbGxCYXIudmVydGljYWwKKysgICAgICAgIGxldCBob3Jpem9udGFsU2Nyb2xsQmFyID0gY29u dHJvbC5TY3JvbGxCYXIuaG9yaXpvbnRhbAorKyAgICAgICAgY29tcGFyZSh2ZXJ0aWNhbFNjcm9s bEJhci5wYXJlbnQsIGNvbnRyb2wpCisrICAgICAgICBjb21wYXJlKGhvcml6b250YWxTY3JvbGxC YXIucGFyZW50LCBjb250cm9sKQorKyAgICAgICAgdmVyaWZ5KHZlcnRpY2FsU2Nyb2xsQmFyLnZp c2libGUpCisrICAgICAgICB2ZXJpZnkoaG9yaXpvbnRhbFNjcm9sbEJhci52aXNpYmxlKQorKwor KyAgICAgICAgbW91c2VEcmFnKHZlcnRpY2FsU2Nyb2xsQmFyLCB2ZXJ0aWNhbFNjcm9sbEJhci53 aWR0aCAvIDIsIHZlcnRpY2FsU2Nyb2xsQmFyLmhlaWdodCAvIDIsIDAsIDUwKQorKyAgICAgICAg dmVyaWZ5KHZlcnRpY2FsU2Nyb2xsQmFyLmFjdGl2ZSkKKysgICAgICAgIHZlcmlmeShob3Jpem9u dGFsU2Nyb2xsQmFyLmFjdGl2ZSkKKysgICAgfQorIH0KK2RpZmYgLS1naXQgYS9xdHF1aWNrY29u dHJvbHMyL3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc3dpdGNoLnFtbCBiL3F0cXVpY2tj b250cm9sczIvdGVzdHMvYXV0by9jb250cm9scy9kYXRhL3RzdF9zd2l0Y2gucW1sCitpbmRleCBi M2ZhYjQxY2EuLjEwYjZiYWEwMiAxMDA2NDQKKy0tLSBhL3F0cXVpY2tjb250cm9sczIvdGVzdHMv YXV0by9jb250cm9scy9kYXRhL3RzdF9zd2l0Y2gucW1sCisrKysgYi9xdHF1aWNrY29udHJvbHMy L3Rlc3RzL2F1dG8vY29udHJvbHMvZGF0YS90c3Rfc3dpdGNoLnFtbAorQEAgLTYwOCw0ICs2MDgs MjcgQEAgVGVzdENhc2UgeworICAgICAgICAgbW91c2VDbGljayhjb250cm9sLmluZGljYXRvcikK KyAgICAgICAgIHZlcmlmeShjb250cm9sLmFjdGl2ZUZvY3VzKQorICAgICB9CisrCisrICAgIENv bXBvbmVudCB7CisrICAgICAgICBpZDogZGVsZXRpb25PcmRlcjEKKysgICAgICAgIEl0ZW0gewor KyAgICAgICAgICAgIEltYWdlIHsgaWQ6IGlubmVySW1hZ2UgfQorKyAgICAgICAgICAgIFN3aXRj aCB7IGluZGljYXRvcjogaW5uZXJJbWFnZSB9CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAg Q29tcG9uZW50IHsKKysgICAgICAgIGlkOiBkZWxldGlvbk9yZGVyMgorKyAgICAgICAgSXRlbSB7 CisrICAgICAgICAgICAgU3dpdGNoIHsgaW5kaWNhdG9yOiBpbm5lckltYWdlIH0KKysgICAgICAg ICAgICBJbWFnZSB7IGlkOiBpbm5lckltYWdlIH0KKysgICAgICAgIH0KKysgICAgfQorKworKyAg ICBmdW5jdGlvbiB0ZXN0X2RlbGV0aW9uT3JkZXIoKSB7CisrICAgICAgICB2YXIgY29udHJvbDEg PSBjcmVhdGVUZW1wb3JhcnlPYmplY3QoZGVsZXRpb25PcmRlcjEsIHRlc3RDYXNlKQorKyAgICAg ICAgdmVyaWZ5KGNvbnRyb2wxKQorKyAgICAgICAgdmFyIGNvbnRyb2wyID0gY3JlYXRlVGVtcG9y YXJ5T2JqZWN0KGRlbGV0aW9uT3JkZXIyLCB0ZXN0Q2FzZSkKKysgICAgICAgIHZlcmlmeShjb250 cm9sMikKKysgICAgfQorIH0KK2RpZmYgLS1naXQgYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1 dG8vcXF1aWNrcG9wdXAvZGF0YS9yZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlvbi5xbWwgYi9xdHF1 aWNrY29udHJvbHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvZGF0YS9yZWxlYXNlQWZ0ZXJFeGl0 VHJhbnNpdGlvbi5xbWwKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAuLjll NDU5OGI5ZgorLS0tIC9kZXYvbnVsbAorKysrIGIvcXRxdWlja2NvbnRyb2xzMi90ZXN0cy9hdXRv L3FxdWlja3BvcHVwL2RhdGEvcmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24ucW1sCitAQCAtMCww ICsxLDc4IEBACisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysqKgorKyoqIENvcHlyaWdodCAoQykg MjAyMSBUaGUgUXQgQ29tcGFueSBMdGQuCisrKiogQ29udGFjdDogaHR0cHM6Ly93d3cucXQuaW8v bGljZW5zaW5nLworKyoqCisrKiogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHRlc3Qgc3VpdGUg b2YgdGhlIFF0IFRvb2xraXQuCisrKioKKysqKiAkUVRfQkVHSU5fTElDRU5TRTpCU0QkCisrKiog Q29tbWVyY2lhbCBMaWNlbnNlIFVzYWdlCisrKiogTGljZW5zZWVzIGhvbGRpbmcgdmFsaWQgY29t bWVyY2lhbCBRdCBsaWNlbnNlcyBtYXkgdXNlIHRoaXMgZmlsZSBpbgorKyoqIGFjY29yZGFuY2Ug d2l0aCB0aGUgY29tbWVyY2lhbCBsaWNlbnNlIGFncmVlbWVudCBwcm92aWRlZCB3aXRoIHRoZQor KyoqIFNvZnR3YXJlIG9yLCBhbHRlcm5hdGl2ZWx5LCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIHRl cm1zIGNvbnRhaW5lZCBpbgorKyoqIGEgd3JpdHRlbiBhZ3JlZW1lbnQgYmV0d2VlbiB5b3UgYW5k IFRoZSBRdCBDb21wYW55LiBGb3IgbGljZW5zaW5nIHRlcm1zCisrKiogYW5kIGNvbmRpdGlvbnMg c2VlIGh0dHBzOi8vd3d3LnF0LmlvL3Rlcm1zLWNvbmRpdGlvbnMuIEZvciBmdXJ0aGVyCisrKiog aW5mb3JtYXRpb24gdXNlIHRoZSBjb250YWN0IGZvcm0gYXQgaHR0cHM6Ly93d3cucXQuaW8vY29u dGFjdC11cy4KKysqKgorKyoqIEJTRCBMaWNlbnNlIFVzYWdlCisrKiogQWx0ZXJuYXRpdmVseSwg eW91IG1heSB1c2UgdGhpcyBmaWxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQlNEIGxpY2Vuc2UK KysqKiBhcyBmb2xsb3dzOgorKyoqCisrKiogIlJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291 cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKyoqIG1vZGlmaWNhdGlvbiwg YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK KysqKiBtZXQ6CisrKiogICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisrKiogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysqKiAgICogUmVkaXN0cmli dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK KysqKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyIGluCisrKiogICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysqKiAgICAgZGlzdHJpYnV0aW9uLgorKyoqICAg KiBOZWl0aGVyIHRoZSBuYW1lIG9mIFRoZSBRdCBDb21wYW55IEx0ZCBub3IgdGhlIG5hbWVzIG9m IGl0cworKyoqICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t b3RlIHByb2R1Y3RzIGRlcml2ZWQKKysqKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorKyoqCisrKioKKysqKiBUSElTIFNP RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU T1JTCisrKiogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ TkNMVURJTkcsIEJVVCBOT1QKKysqKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKysqKiBBIFBBUlRJQ1VMQVIgUFVS UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorKyoq IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU LCBJTkNJREVOVEFMLAorKyoqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKysqKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKysqKiBEQVRBLCBP UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP TiBBTlkKKysqKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ Q1QgTElBQklMSVRZLCBPUiBUT1JUCisrKiogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisrKiogT0YgVEhJUyBTT0ZU V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4i CisrKioKKysqKiAkUVRfRU5EX0xJQ0VOU0UkCisrKioKKysqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor KworK2ltcG9ydCBRdFF1aWNrIDIuMTUKKytpbXBvcnQgUXRRdWljay5Db250cm9scyAyLjE1Cisr CisrQXBwbGljYXRpb25XaW5kb3cgeworKyAgICBpZDogd2luZG93CisrICAgIHdpZHRoOiA0MDAK KysgICAgaGVpZ2h0OiA0MDAKKysgICAgdGl0bGU6ICJyZWxlYXNlQWZ0ZXJFeGl0VHJhbnNpdGlv biIKKysKKysgICAgcHJvcGVydHkgYWxpYXMgcG9wdXA6IHBvcHVwCisrICAgIHByb3BlcnR5IGFs aWFzIG1vZGFsUG9wdXA6IG1vZGFsUG9wdXAKKysKKysgICAgUG9wdXAgeworKyAgICAgICAgaWQ6 IHBvcHVwCisrICAgICAgICB5OiBwYXJlbnQuaGVpZ2h0IC0gaGVpZ2h0CisrICAgICAgICB3aWR0 aDogNTAKKysgICAgICAgIGhlaWdodDogNTAKKysgICAgfQorKworKyAgICBQb3B1cCB7CisrICAg ICAgICBpZDogbW9kYWxQb3B1cAorKyAgICAgICAgbW9kYWw6IHRydWUKKysgICAgICAgIHk6IHBh cmVudC5oZWlnaHQgLSBoZWlnaHQKKysgICAgICAgIHdpZHRoOiA1MAorKyAgICAgICAgaGVpZ2h0 OiA1MAorKyAgICAgICAgZXhpdDogIFRyYW5zaXRpb24geyBQYXVzZUFuaW1hdGlvbiB7IGR1cmF0 aW9uOiAxMDAgfSB9CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0IGEvcXRxdWlja2NvbnRyb2xzMi90 ZXN0cy9hdXRvL3FxdWlja3BvcHVwL3RzdF9xcXVpY2twb3B1cC5jcHAgYi9xdHF1aWNrY29udHJv bHMyL3Rlc3RzL2F1dG8vcXF1aWNrcG9wdXAvdHN0X3FxdWlja3BvcHVwLmNwcAoraW5kZXggNTQ5 NTJkMTI4Li4zZDUwZTJkZDQgMTAwNjQ0CistLS0gYS9xdHF1aWNrY29udHJvbHMyL3Rlc3RzL2F1 dG8vcXF1aWNrcG9wdXAvdHN0X3FxdWlja3BvcHVwLmNwcAorKysrIGIvcXRxdWlja2NvbnRyb2xz Mi90ZXN0cy9hdXRvL3FxdWlja3BvcHVwL3RzdF9xcXVpY2twb3B1cC5jcHAKK0BAIC0xMDAsNiAr MTAwLDcgQEAgcHJpdmF0ZSBzbG90czoKKyAgICAgdm9pZCBpbnZpc2libGVUb29sVGlwT3Blbigp OworICAgICB2b2lkIGNlbnRlckluT3ZlcmxheVdpdGhpblN0YWNrVmlld0l0ZW0oKTsKKyAgICAg dm9pZCBkZXN0cm95RHVyaW5nRXhpdFRyYW5zaXRpb24oKTsKKysgICAgdm9pZCByZWxlYXNlQWZ0 ZXJFeGl0VHJhbnNpdGlvbigpOworIH07CisgCisgdm9pZCB0c3RfUVF1aWNrUG9wdXA6OmluaXRU ZXN0Q2FzZSgpCitAQCAtMTU3NSw2ICsxNTc2LDM0IEBAIHZvaWQgdHN0X1FRdWlja1BvcHVwOjpk ZXN0cm95RHVyaW5nRXhpdFRyYW5zaXRpb24oKQorICAgICBRVkVSSUZZKCFidXR0b24tPmlzRG93 bigpKTsKKyB9CisgCisrdm9pZCB0c3RfUVF1aWNrUG9wdXA6OnJlbGVhc2VBZnRlckV4aXRUcmFu c2l0aW9uKCkKKyt7CisrICAgIFFRdWlja0FwcGxpY2F0aW9uSGVscGVyIGhlbHBlcih0aGlzLCAi cmVsZWFzZUFmdGVyRXhpdFRyYW5zaXRpb24ucW1sIik7CisrICAgIFFWRVJJRlkyKGhlbHBlci5y ZWFkeSwgaGVscGVyLmZhaWx1cmVNZXNzYWdlKCkpOworKworKyAgICBRUXVpY2tXaW5kb3cgKndp bmRvdyA9IGhlbHBlci53aW5kb3c7CisrICAgIHdpbmRvdy0+c2hvdygpOworKyAgICBRVkVSSUZZ KFFUZXN0OjpxV2FpdEZvcldpbmRvd0FjdGl2ZSh3aW5kb3cpKTsKKysKKysgICAgUVF1aWNrT3Zl cmxheSAqb3ZlcmxheSA9IFFRdWlja092ZXJsYXk6Om92ZXJsYXkod2luZG93KTsKKysgICAgUVF1 aWNrUG9wdXAgKm1vZGFsUG9wdXAgPSB3aW5kb3ctPnByb3BlcnR5KCJtb2RhbFBvcHVwIikudmFs dWU8UVF1aWNrUG9wdXAgKj4oKTsKKysgICAgUVF1aWNrUG9wdXAgKnBvcHVwID0gd2luZG93LT5w cm9wZXJ0eSgicG9wdXAiKS52YWx1ZTxRUXVpY2tQb3B1cCAqPigpOworKworKyAgICBtb2RhbFBv cHVwLT5vcGVuKCk7CisrICAgIFFUUllfVkVSSUZZKG1vZGFsUG9wdXAtPmlzT3BlbmVkKCkpOwor KworKyAgICBRVGVzdDo6bW91c2VQcmVzcyh3aW5kb3csIFF0OjpMZWZ0QnV0dG9uLCBRdDo6Tm9N b2RpZmllciwgUVBvaW50KDEsIDEpKTsKKysgICAgLy8gd2FpdCB1bnRpbCB0aGUgdHJhbnNpdGlv biBpcyBmaW5pc2hlZCBhbmQgdGhlIG92ZXJsYXkgaGlkZXMgaXRzZWxmCisrICAgIFFUUllfVkVS SUZZKCFvdmVybGF5LT5pc1Zpc2libGUoKSk7CisrICAgIFFUZXN0Ojptb3VzZVJlbGVhc2Uod2lu ZG93LCBRdDo6TGVmdEJ1dHRvbiwgUXQ6Ok5vTW9kaWZpZXIsIFFQb2ludCgxLCAxKSk7CisrCisr ICAgIHBvcHVwLT5vcGVuKCk7CisrICAgIFFUUllfVkVSSUZZKHBvcHVwLT5pc09wZW5lZCgpKTsK KysgICAgUVRlc3Q6Om1vdXNlQ2xpY2sod2luZG93LCBRdDo6TGVmdEJ1dHRvbiwgUXQ6Ok5vTW9k aWZpZXIsIFFQb2ludCgxLCAxKSk7CisrICAgIFFUUllfVkVSSUZZKCFwb3B1cC0+aXNPcGVuZWQo KSk7CisrfQorKworKworIFFURVNUX1FVSUNLQ09OVFJPTFNfTUFJTih0c3RfUVF1aWNrUG9wdXAp CisgCisgI2luY2x1ZGUgInRzdF9xcXVpY2twb3B1cC5tb2MiCitTdWJtb2R1bGUgcXRzY3JpcHQg NWJlOTVmOTYuLi40ZDhlNGJkMiAoY29tbWl0cyBub3QgcHJlc2VudCkKK1N1Ym1vZHVsZSBxdHNw ZWVjaCAxN2ZjOWZkZS4uMjU1ODQ1ZTI6CitkaWZmIC0tZ2l0IGEvcXRzcGVlY2gvc3JjL3BsdWdp bnMvdHRzL3NwZWVjaGRpc3BhdGNoZXIvcXRleHR0b3NwZWVjaF9zcGVlY2hkLmNwcCBiL3F0c3Bl ZWNoL3NyYy9wbHVnaW5zL3R0cy9zcGVlY2hkaXNwYXRjaGVyL3F0ZXh0dG9zcGVlY2hfc3BlZWNo ZC5jcHAKK2luZGV4IDZlYjc0YjguLmJjYzdkZDEgMTAwNjQ0CistLS0gYS9xdHNwZWVjaC9zcmMv cGx1Z2lucy90dHMvc3BlZWNoZGlzcGF0Y2hlci9xdGV4dHRvc3BlZWNoX3NwZWVjaGQuY3BwCisr KysgYi9xdHNwZWVjaC9zcmMvcGx1Z2lucy90dHMvc3BlZWNoZGlzcGF0Y2hlci9xdGV4dHRvc3Bl ZWNoX3NwZWVjaGQuY3BwCitAQCAtMzU3LDcgKzM1Nyw5IEBAIFFWZWN0b3I8UUxvY2FsZT4gUVRl eHRUb1NwZWVjaEVuZ2luZVNwZWVjaGQ6OmF2YWlsYWJsZUxvY2FsZXMoKSBjb25zdAorIAorIFFW ZWN0b3I8UVZvaWNlPiBRVGV4dFRvU3BlZWNoRW5naW5lU3BlZWNoZDo6YXZhaWxhYmxlVm9pY2Vz KCkgY29uc3QKKyB7CistICAgIHJldHVybiBtX3ZvaWNlcy52YWx1ZXMobV9jdXJyZW50TG9jYWxl Lm5hbWUoKSkudG9WZWN0b3IoKTsKKysgICAgUUxpc3Q8UVZvaWNlPiByZXN1bHRMaXN0ID0gbV92 b2ljZXMudmFsdWVzKG1fY3VycmVudExvY2FsZS5uYW1lKCkpOworKyAgICBzdGQ6OnJldmVyc2Uo cmVzdWx0TGlzdC5iZWdpbigpLCByZXN1bHRMaXN0LmVuZCgpKTsKKysgICAgcmV0dXJuIHJlc3Vs dExpc3QudG9WZWN0b3IoKTsKKyB9CisgCisgLy8gV2UgaGF2ZSBubyB3YXkgb2Yga25vd2luZyBv dXIgb3duIGNsaWVudF9pZCBzaW5jZSBzcGVlY2gtZGlzcGF0Y2hlciBzZWVtcyB0byBiZSBpbmNv bXBsZXRlCitTdWJtb2R1bGUgcXRzdmcgMGMwNTc4MGUuLmE3YTBmMjQ5OgorZGlmZiAtLWdpdCBh L3F0c3ZnL3NyYy9wbHVnaW5zL2ltYWdlZm9ybWF0cy9zdmcvcXN2Z2lvaGFuZGxlci5jcHAgYi9x dHN2Zy9zcmMvcGx1Z2lucy9pbWFnZWZvcm1hdHMvc3ZnL3Fzdmdpb2hhbmRsZXIuY3BwCitpbmRl eCA1NjFlNzdlLi4xMmUwNTc0IDEwMDY0NAorLS0tIGEvcXRzdmcvc3JjL3BsdWdpbnMvaW1hZ2Vm b3JtYXRzL3N2Zy9xc3ZnaW9oYW5kbGVyLmNwcAorKysrIGIvcXRzdmcvc3JjL3BsdWdpbnMvaW1h Z2Vmb3JtYXRzL3N2Zy9xc3ZnaW9oYW5kbGVyLmNwcAorQEAgLTE5MSw2ICsxOTEsOCBAQCBib29s IFFTdmdJT0hhbmRsZXI6OnJlYWQoUUltYWdlICppbWFnZSkKKyAgICAgICAgICAgICB9CisgICAg ICAgICB9CisgICAgICAgICBpZiAoIWZpbmFsU2l6ZS5pc0VtcHR5KCkpIHsKKysgICAgICAgICAg ICBpZiAocU1heChmaW5hbFNpemUud2lkdGgoKSwgZmluYWxTaXplLmhlaWdodCgpKSA+IDB4ZmZm ZikKKysgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBBc3N1bWUgY29ycnVwdGVkIGZp bGUKKyAgICAgICAgICAgICBpbWFnZS0+ZmlsbChkLT5iYWNrQ29sb3IucmdiYSgpKTsKKyAgICAg ICAgICAgICBRUGFpbnRlciBwKGltYWdlKTsKKyAgICAgICAgICAgICBkLT5yLnJlbmRlcigmcCwg Ym91bmRzKTsKK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvc3ZnL3FzdmdoYW5kbGVyLmNwcCBiL3F0 c3ZnL3NyYy9zdmcvcXN2Z2hhbmRsZXIuY3BwCitpbmRleCBhNWY4NzdmLi44ZGRhNTYzIDEwMDY0 NAorLS0tIGEvcXRzdmcvc3JjL3N2Zy9xc3ZnaGFuZGxlci5jcHAKKysrKyBiL3F0c3ZnL3NyYy9z dmcvcXN2Z2hhbmRsZXIuY3BwCitAQCAtMTM5Myw5ICsxMzkzLDEwIEBAIHN0YXRpYyB2b2lkIHBh cnNlRm9udChRU3ZnTm9kZSAqbm9kZSwKKyAgICAgICAgIGNhc2UgRm9udFNpemVOb25lOgorICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgY2FzZSBGb250U2l6ZVZhbHVlOiB7CistICAgICAg ICAgICAgUVN2Z0hhbmRsZXI6Okxlbmd0aFR5cGUgZHVtbXk7IC8vIHNob3VsZCBhbHdheXMgYmUg cGl4ZWwgc2l6ZQorLSAgICAgICAgICAgIGZvbnRTdHlsZS0+c2V0U2l6ZShxTWluKHBhcnNlTGVu Z3RoKGF0dHJpYnV0ZXMuZm9udFNpemUsIGR1bW15LCBoYW5kbGVyKSwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBxcmVhbCgweGZmZmYpKSk7CisrICAgICAgICAgICAgUVN2 Z0hhbmRsZXI6Okxlbmd0aFR5cGUgdHlwZTsKKysgICAgICAgICAgICBxcmVhbCBmcyA9IHBhcnNl TGVuZ3RoKGF0dHJpYnV0ZXMuZm9udFNpemUsIHR5cGUsIGhhbmRsZXIpOworKyAgICAgICAgICAg IGZzID0gY29udmVydFRvUGl4ZWxzKGZzLCB0cnVlLCB0eXBlKTsKKysgICAgICAgICAgICBmb250 U3R5bGUtPnNldFNpemUocU1pbihmcywgcXJlYWwoMHhmZmZmKSkpOworICAgICAgICAgfQorICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgZGVmYXVsdDoKK0BAIC0yNTEzLDYgKzI1MTQsOCBA QCBzdGF0aWMgYm9vbCBwYXJzZUFuaW1hdGVUcmFuc2Zvcm1Ob2RlKFFTdmdOb2RlICpwYXJlbnQs CisgICAgICAgICAgICAgKytzOworICAgICAgICAgfQorICAgICB9CisrICAgIGlmICh2YWxzLmNv dW50KCkgJSAzICE9IDApCisrICAgICAgICByZXR1cm4gZmFsc2U7CisgCisgICAgIGJvb2wgb2sg PSB0cnVlOworICAgICBpbnQgYmVnaW4gPSBwYXJzZUNsb2NrVmFsdWUoYmVnaW5TdHIsICZvayk7 CitAQCAtMjU3Niw2ICsyNTc5LDggQEAgc3RhdGljIFFTdmdOb2RlICpjcmVhdGVDaXJjbGVOb2Rl KFFTdmdOb2RlICpwYXJlbnQsCisgICAgIHFyZWFsIG5jeCA9IHRvRG91YmxlKGN4KTsKKyAgICAg cXJlYWwgbmN5ID0gdG9Eb3VibGUoY3kpOworICAgICBxcmVhbCBuciAgPSB0b0RvdWJsZShyKTsK KysgICAgaWYgKG5yIDwgMC4wKQorKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgCisgICAgIFFS ZWN0RiByZWN0KG5jeC1uciwgbmN5LW5yLCBucioyLCBucioyKTsKKyAgICAgUVN2Z05vZGUgKmNp cmNsZSA9IG5ldyBRU3ZnQ2lyY2xlKHBhcmVudCwgcmVjdCk7CitAQCAtMzA0NiwxNSArMzA1MSwx NiBAQCBzdGF0aWMgUVN2Z1N0eWxlUHJvcGVydHkgKmNyZWF0ZVJhZGlhbEdyYWRpZW50Tm9kZShR U3ZnTm9kZSAqbm9kZSwKKyAKKyAgICAgcXJlYWwgbmN4ID0gMC41OworICAgICBxcmVhbCBuY3kg PSAwLjU7CistICAgIHFyZWFsIG5yICA9IDAuNTsKKyAgICAgaWYgKCFjeC5pc0VtcHR5KCkpCisg ICAgICAgICBuY3ggPSB0b0RvdWJsZShjeCk7CisgICAgIGlmICghY3kuaXNFbXB0eSgpKQorICAg ICAgICAgbmN5ID0gdG9Eb3VibGUoY3kpOworKworKyAgICBxcmVhbCBuciA9IDAuMDsKKyAgICAg aWYgKCFyLmlzRW1wdHkoKSkKKyAgICAgICAgIG5yID0gdG9Eb3VibGUocik7CistICAgIGlmIChu ciA8IDAuNSkKKy0gICAgICAgIG5yID0gMC41OworKyAgICBpZiAobnIgPD0gMC4wKQorKyAgICAg ICAgcmV0dXJuIG51bGxwdHI7CisgCisgICAgIHFyZWFsIG5meCA9IG5jeDsKKyAgICAgaWYgKCFm eC5pc0VtcHR5KCkpCitAQCAtMzM1MCw3ICszMzU2LDkgQEAgc3RhdGljIFFTdmdOb2RlICpjcmVh dGVUZXh0Tm9kZShRU3ZnTm9kZSAqcGFyZW50LAorICAgICAvLyMjIyBlZGl0YWJsZSBhbmQgcm90 YXRlIG5vdCBoYW5kbGVkCisgICAgIFFTdmdIYW5kbGVyOjpMZW5ndGhUeXBlIHR5cGU7CisgICAg IHFyZWFsIG54ID0gcGFyc2VMZW5ndGgoeCwgdHlwZSwgaGFuZGxlcik7CisrICAgIG54ID0gY29u dmVydFRvUGl4ZWxzKG54LCB0cnVlLCB0eXBlKTsKKyAgICAgcXJlYWwgbnkgPSBwYXJzZUxlbmd0 aCh5LCB0eXBlLCBoYW5kbGVyKTsKKysgICAgbnkgPSBjb252ZXJ0VG9QaXhlbHMobnksIHRydWUs IHR5cGUpOworIAorICAgICBRU3ZnTm9kZSAqdGV4dCA9IG5ldyBRU3ZnVGV4dChwYXJlbnQsIFFQ b2ludEYobngsIG55KSk7CisgICAgIHJldHVybiB0ZXh0OworQEAgLTM2OTEsOSArMzY5OSw3IEBA IHZvaWQgUVN2Z0hhbmRsZXI6OnBhcnNlKCkKKyAgICAgICAgIGNhc2UgUVhtbFN0cmVhbVJlYWRl cjo6RW5kRWxlbWVudDoKKyAgICAgICAgICAgICBlbmRFbGVtZW50KHhtbC0+bmFtZSgpKTsKKyAg ICAgICAgICAgICArK3JlbWFpbmluZ1VuZmluaXNoZWRFbGVtZW50czsKKy0gICAgICAgICAgICAv LyBpZiB3ZSBhcmUgdXNpbmcgc29tZWJvZHkgZWxzZSdzIHF4bWxzdHJlYW1yZWFkZXIKKy0gICAg ICAgICAgICAvLyB3ZSBzaG91bGQgbm90IHJlYWQgdW50aWwgdGhlIGVuZCBvZiB0aGUgc3RyZWFt CistICAgICAgICAgICAgZG9uZSA9ICFtX293bnNSZWFkZXIgJiYgKHhtbC0+bmFtZSgpID09IFFM YXRpbjFTdHJpbmcoInN2ZyIpKTsKKysgICAgICAgICAgICBkb25lID0gKHhtbC0+bmFtZSgpID09 IFFMYXRpbjFTdHJpbmcoInN2ZyIpKTsKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGNh c2UgUVhtbFN0cmVhbVJlYWRlcjo6Q2hhcmFjdGVyczoKKyAgICAgICAgICAgICBjaGFyYWN0ZXJz KHhtbC0+dGV4dCgpKTsKK2RpZmYgLS1naXQgYS9xdHN2Zy9zcmMvc3ZnL3FzdmdzdHJ1Y3R1cmUu Y3BwIGIvcXRzdmcvc3JjL3N2Zy9xc3Znc3RydWN0dXJlLmNwcAoraW5kZXggYjg5NjA4Yi4uODlj OWU0ZSAxMDA2NDQKKy0tLSBhL3F0c3ZnL3NyYy9zdmcvcXN2Z3N0cnVjdHVyZS5jcHAKKysrKyBi L3F0c3ZnL3NyYy9zdmcvcXN2Z3N0cnVjdHVyZS5jcHAKK0BAIC0yNTUsOSArMjU1LDEzIEBAIGlu bGluZSBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZFN2Z0ZlYXR1cmUoY29uc3QgUVN0cmluZyAmc3Ry KQorICAgICB9OworIAorICAgICBpZiAoc3RyLmxlbmd0aCgpIDw9IE1BWF9XT1JEX0xFTkdUSCAm JiBzdHIubGVuZ3RoKCkgPj0gTUlOX1dPUkRfTEVOR1RIKSB7CisrICAgICAgICBjb25zdCBjaGFy MTZfdCB1bmljb2RlNDQgPSBzdHIuYXQoNDQpLnVuaWNvZGUoKTsKKysgICAgICAgIGNvbnN0IGNo YXIxNl90IHVuaWNvZGU0NSA9IHN0ci5hdCg0NSkudW5pY29kZSgpOworKyAgICAgICAgaWYgKHVu aWNvZGU0NCA+PSBzaXplb2YoYXNzb192YWx1ZXMpIHx8IHVuaWNvZGU0NSA+PSBzaXplb2YoYXNz b192YWx1ZXMpKQorKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIGNvbnN0IGlu dCBrZXkgPSBzdHIubGVuZ3RoKCkKKy0gICAgICAgICAgICAgICAgICAgICAgICArIGFzc29fdmFs dWVzW3N0ci5hdCg0NSkudW5pY29kZSgpXQorLSAgICAgICAgICAgICAgICAgICAgICAgICsgYXNz b192YWx1ZXNbc3RyLmF0KDQ0KS51bmljb2RlKCldOworKyAgICAgICAgICAgICAgICAgICAgICAg ICsgYXNzb192YWx1ZXNbdW5pY29kZTQ1XQorKyAgICAgICAgICAgICAgICAgICAgICAgICsgYXNz b192YWx1ZXNbdW5pY29kZTQ0XTsKKyAgICAgICAgIGlmIChrZXkgPD0gTUFYX0hBU0hfVkFMVUUg JiYga2V5ID49IDApCisgICAgICAgICAgICAgcmV0dXJuIHN0ciA9PSBRTGF0aW4xU3RyaW5nKHdv cmRsaXN0W2tleV0pOworICAgICB9CitkaWZmIC0tZ2l0IGEvcXRzdmcvc3JjL3N2Zy9xc3ZndGlu eWRvY3VtZW50LmNwcCBiL3F0c3ZnL3NyYy9zdmcvcXN2Z3Rpbnlkb2N1bWVudC5jcHAKK2luZGV4 IDYzZDA3OTcuLjE5ZTcxNTQgMTAwNjQ0CistLS0gYS9xdHN2Zy9zcmMvc3ZnL3Fzdmd0aW55ZG9j dW1lbnQuY3BwCisrKysgYi9xdHN2Zy9zcmMvc3ZnL3Fzdmd0aW55ZG9jdW1lbnQuY3BwCitAQCAt NDMzLDggKzQzMywxNiBAQCB2b2lkIFFTdmdUaW55RG9jdW1lbnQ6OmRyYXcoUVBhaW50ZXIgKnAs IFFTdmdFeHRyYVN0YXRlcyAmKQorICAgICBkcmF3KHApOworIH0KKyAKKytzdGF0aWMgYm9vbCBp c1ZhbGlkTWF0cml4KGNvbnN0IFFUcmFuc2Zvcm0gJnRyYW5zZm9ybSkKKyt7CisrICAgIHFyZWFs IGRldGVybWluYW50ID0gdHJhbnNmb3JtLmRldGVybWluYW50KCk7CisrICAgIHJldHVybiBxSXNG aW5pdGUoZGV0ZXJtaW5hbnQpOworK30KKysKKyB2b2lkIFFTdmdUaW55RG9jdW1lbnQ6Om1hcFNv dXJjZVRvVGFyZ2V0KFFQYWludGVyICpwLCBjb25zdCBRUmVjdEYgJnRhcmdldFJlY3QsIGNvbnN0 IFFSZWN0RiAmc291cmNlUmVjdCkKKyB7CisrICAgIFFUcmFuc2Zvcm0gb2xkVHJhbnNmb3JtID0g cC0+d29ybGRUcmFuc2Zvcm0oKTsKKysKKyAgICAgUVJlY3RGIHRhcmdldCA9IHRhcmdldFJlY3Q7 CisgICAgIGlmICh0YXJnZXQuaXNFbXB0eSgpKSB7CisgICAgICAgICBRUGFpbnREZXZpY2UgKmRl diA9IHAtPmRldmljZSgpOworQEAgLTQ4Nyw2ICs0OTUsOSBAQCB2b2lkIFFTdmdUaW55RG9jdW1l bnQ6Om1hcFNvdXJjZVRvVGFyZ2V0KFFQYWludGVyICpwLCBjb25zdCBRUmVjdEYgJnRhcmdldFJl Y3QsCisgICAgICAgICB9CisgI2VuZGlmCisgICAgIH0KKysKKysgICAgaWYgKCFpc1ZhbGlkTWF0 cml4KHAtPndvcmxkVHJhbnNmb3JtKCkpKQorKyAgICAgICAgcC0+c2V0V29ybGRUcmFuc2Zvcm0o b2xkVHJhbnNmb3JtKTsKKyB9CisgCisgUVJlY3RGIFFTdmdUaW55RG9jdW1lbnQ6OmJvdW5kc09u RWxlbWVudChjb25zdCBRU3RyaW5nICZpZCkgY29uc3QKK2RpZmYgLS1naXQgYS9xdHN2Zy90ZXN0 cy9hdXRvL3FzdmdyZW5kZXJlci90c3RfcXN2Z3JlbmRlcmVyLmNwcCBiL3F0c3ZnL3Rlc3RzL2F1 dG8vcXN2Z3JlbmRlcmVyL3RzdF9xc3ZncmVuZGVyZXIuY3BwCitpbmRleCAzNmM3NmVjLi5kYjcx ZTAyIDEwMDY0NAorLS0tIGEvcXRzdmcvdGVzdHMvYXV0by9xc3ZncmVuZGVyZXIvdHN0X3Fzdmdy ZW5kZXJlci5jcHAKKysrKyBiL3F0c3ZnL3Rlc3RzL2F1dG8vcXN2Z3JlbmRlcmVyL3RzdF9xc3Zn cmVuZGVyZXIuY3BwCitAQCAtODYsNiArODYsOCBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lk IG9zc19mdXp6XzIzNzMxKCk7CisgICAgIHZvaWQgb3NzX2Z1enpfMjQxMzEoKTsKKyAgICAgdm9p ZCBvc3NfZnV6el8yNDczOCgpOworKyAgICB2b2lkIGlsbGVnYWxBbmltYXRlVHJhbnNmb3JtX2Rh dGEoKTsKKysgICAgdm9pZCBpbGxlZ2FsQW5pbWF0ZVRyYW5zZm9ybSgpOworIAorICNpZm5kZWYg UVRfTk9fQ09NUFJFU1MKKyAgICAgdm9pZCB0ZXN0R3pMb2FkaW5nKCk7CitAQCAtMTY0Niw1ICsx NjQ4LDIyIEBAIHZvaWQgdHN0X1FTdmdSZW5kZXJlcjo6b3NzX2Z1enpfMjQ3MzgoKQorICAgICBR U3ZnUmVuZGVyZXIoKS5sb2FkKFFCeXRlQXJyYXkoIjxzdmc+PHBhdGggZD1cImEgMiAxZS0yMTIu Li4uLlwiPiIpKTsKKyB9CisgCisrdm9pZCB0c3RfUVN2Z1JlbmRlcmVyOjppbGxlZ2FsQW5pbWF0 ZVRyYW5zZm9ybV9kYXRhKCkKKyt7CisrICAgIFFUZXN0OjphZGRDb2x1bW48UUJ5dGVBcnJheT4o InN2ZyIpOworKworKyAgICBRVGVzdDo6bmV3Um93KCJjYXNlMSIpIDw8IFFCeXRlQXJyYXkoIjxz dmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT1cInJvdGF0ZVwiIGJlZ2luPVwiMVwiIGR1cj1cIjJc IiB2YWx1ZXM9XCI4LDAsNSwwXCI+Iik7CisrICAgIFFUZXN0OjpuZXdSb3coImNhc2UyIikgPDwg UUJ5dGVBcnJheSgiPHN2Zz48YW5pbWF0ZVRyYW5zZm9ybSB0eXBlPVwicm90YXRlXCIgYmVnaW49 XCIxXCIgZHVyPVwiMlwiIHZhbHVlcz1cIjEsMlwiPiIpOworKyAgICBRVGVzdDo6bmV3Um93KCJj YXNlMyIpIDw8IFFCeXRlQXJyYXkoIjxzdmc+PGFuaW1hdGVUcmFuc2Zvcm0gdHlwZT1cInJvdGF0 ZVwiIGJlZ2luPVwiMVwiIGR1cj1cIjJcIiBmcm9tPVwiLi4gNSAyXCIgdG89XCJmXCI+Iik7Cisr ICAgIFFUZXN0OjpuZXdSb3coImNhc2U0IikgPDwgUUJ5dGVBcnJheSgiPHN2Zz48YW5pbWF0ZVRy YW5zZm9ybSB0eXBlPVwic2NhbGVcIiBiZWdpbj1cIjFcIiBkdXI9XCIyXCIgYnk9XCItLSwuLlwi PiIpOworK30KKysKKyt2b2lkIHRzdF9RU3ZnUmVuZGVyZXI6OmlsbGVnYWxBbmltYXRlVHJhbnNm b3JtKCkKKyt7CisrICAgIFFGRVRDSChRQnl0ZUFycmF5LCBzdmcpOworKyAgICBRU3ZnUmVuZGVy ZXIgcmVuZGVyZXI7CisrICAgIFFWRVJJRlkoIXJlbmRlcmVyLmxvYWQoc3ZnKSk7IC8vIGFsc28g c2hvdWxkbid0IGFzc2VydAorK30KKysKKyBRVEVTVF9NQUlOKHRzdF9RU3ZnUmVuZGVyZXIpCisg I2luY2x1ZGUgInRzdF9xc3ZncmVuZGVyZXIubW9jIgorU3VibW9kdWxlIHF0dG9vbHMgNjkxNGY3 YzguLjA5MGU1MjZlOgorZGlmZiAtLWdpdCBhL3F0dG9vbHMvc3JjL2Fzc2lzdGFudC9xaGVscGdl bmVyYXRvci9oZWxwZ2VuZXJhdG9yLmNwcCBiL3F0dG9vbHMvc3JjL2Fzc2lzdGFudC9xaGVscGdl bmVyYXRvci9oZWxwZ2VuZXJhdG9yLmNwcAoraW5kZXggZmVhYjFlMmQ1Li5jYmZiODI1MDcgMTAw NjQ0CistLS0gYS9xdHRvb2xzL3NyYy9hc3Npc3RhbnQvcWhlbHBnZW5lcmF0b3IvaGVscGdlbmVy YXRvci5jcHAKKysrKyBiL3F0dG9vbHMvc3JjL2Fzc2lzdGFudC9xaGVscGdlbmVyYXRvci9oZWxw Z2VuZXJhdG9yLmNwcAorQEAgLTQ0NSw3ICs0NDUsOSBAQCBib29sIEhlbHBHZW5lcmF0b3JQcml2 YXRlOjppbnNlcnRGaWxlcyhjb25zdCBRU3RyaW5nTGlzdCAmZmlsZXMsIGNvbnN0IFFTdHJpbmcg JgorICAgICBpZiAoZmlsdGVyU2V0SWQgPCAwKQorICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg ICArK2ZpbHRlclNldElkOworLSAgICBmb3IgKGludCBhdHRJZCA6IHFBc0NvbnN0KGZpbHRlckF0 dHMpKSB7CisrICAgIFFMaXN0PGludD4gYXR0VmFsdWVzID0gZmlsdGVyQXR0cy52YWx1ZXMoKTsK KysgICAgc3RkOjpzb3J0KGF0dFZhbHVlcy5iZWdpbigpLCBhdHRWYWx1ZXMuZW5kKCkpOworKyAg ICBmb3IgKGludCBhdHRJZCA6IHFBc0NvbnN0KGF0dFZhbHVlcykpIHsKKyAgICAgICAgIG1fcXVl cnktPnByZXBhcmUoUUxhdGluMVN0cmluZygiSU5TRVJUIElOVE8gRmlsZUF0dHJpYnV0ZVNldFRh YmxlICIKKyAgICAgICAgICAgICAiVkFMVUVTKD8sID8pIikpOworICAgICAgICAgbV9xdWVyeS0+ YmluZFZhbHVlKDAsIGZpbHRlclNldElkKTsKK1N1Ym1vZHVsZSBxdHdheWxhbmQgZGZiMDEyOWMu LjI5MDRlMWIzOgorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2NvbmZpZ3VyZS5q c29uIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvY29uZmlndXJlLmpzb24KK2luZGV4IDJmNDI0NTgw Li4yOTIyMjM1NyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L2NvbmZpZ3VyZS5q c29uCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9jb25maWd1cmUuanNvbgorQEAgLTE0OSw4 ICsxNDksNyBAQAorICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZiIKKyAgICAgICAgICAgICAg ICAgXQorICAgICAgICAgICAgIH0sCistICAgICAgICAgICAgImxpYnMiOiAiLWxkcm0iLAorLSAg ICAgICAgICAgICJ1c2UiOiAiZWdsIgorKyAgICAgICAgICAgICJ1c2UiOiAiZHJtIGVnbCIKKyAg ICAgICAgIH0sCisgICAgICAgICAidnVsa2FuLXNlcnZlci1idWZmZXIiOiB7CisgICAgICAgICAg ICAgImxhYmVsIjogIlZ1bGthbiBCdWZmZXIgU2hhcmluZyIsCitAQCAtMTY4LDcgKzE2Nyw4IEBA CisgICAgICAgICAgICAgICAgICAgICAiZXhwb3J0QWxsb2NJbmZvLmhhbmRsZVR5cGVzID0gVktf RVhURVJOQUxfTUVNT1JZX0hBTkRMRV9UWVBFX09QQVFVRV9GRF9CSVRfS0hSOyIsCisgICAgICAg ICAgICAgICAgICAgICAicmV0dXJuIDA7IgorICAgICAgICAgICAgICAgICBdCistICAgICAgICAg ICAgfQorKyAgICAgICAgICAgIH0sCisrICAgICAgICAgICAgInVzZSI6ICJ3YXlsYW5kLWNsaWVu dCIKKyAgICAgICAgIH0sCisgICAgICAgICAiZWdsXzFfNS13YXlsYW5kIjogeworICAgICAgICAg ICAgICJsYWJlbCI6ICJFR0wgMS41IHdpdGggV2F5bGFuZCBQbGF0Zm9ybSIsCitAQCAtMTgzLDcg KzE4Myw3IEBACisgICAgICAgICAgICAgICAgICAgICAiZWdsR2V0UGxhdGZvcm1EaXNwbGF5KEVH TF9QTEFURk9STV9XQVlMQU5EX0VYVCwgKHN0cnVjdCB3bF9kaXNwbGF5ICopKG51bGxwdHIpLCBu dWxscHRyKTsiCisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICB9LAorLSAgICAgICAg ICAgICJ1c2UiOiAiZWdsIgorKyAgICAgICAgICAgICJ1c2UiOiAiZWdsIHdheWxhbmQtY2xpZW50 IgorICAgICAgICAgfQorICAgICB9LAorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xp ZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5jcHAgYi9xdHdheWxhbmQvc3JjL2Ns aWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRleHRlbnNpb24uY3BwCitpbmRleCAxMjViMWUxOS4u ZWRjY2ZlNjMgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxh bmRjbGllbnRleHRlbnNpb24uY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwv cXdheWxhbmRjbGllbnRleHRlbnNpb24uY3BwCitAQCAtNzQsNyArNzQsMTAgQEAgdm9pZCBRV2F5 bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGU6OmhhbmRsZVJlZ2lzdHJ5R2xvYmFsKHZvaWQgKmRh dGEsIDo6d2xfcmVnaXMKKyB2b2lkIFFXYXlsYW5kQ2xpZW50RXh0ZW5zaW9uOjphZGRSZWdpc3Ry eUxpc3RlbmVyKCkKKyB7CisgICAgIFFfRChRV2F5bGFuZENsaWVudEV4dGVuc2lvbik7CistICAg IGQtPndheWxhbmRJbnRlZ3JhdGlvbi0+ZGlzcGxheSgpLT5hZGRSZWdpc3RyeUxpc3RlbmVyKCZR V2F5bGFuZENsaWVudEV4dGVuc2lvblByaXZhdGU6OmhhbmRsZVJlZ2lzdHJ5R2xvYmFsLCB0aGlz KTsKKysgICAgaWYgKCFkLT5yZWdpc3RlcmVkKSB7CisrICAgICAgICBkLT53YXlsYW5kSW50ZWdy YXRpb24tPmRpc3BsYXkoKS0+YWRkUmVnaXN0cnlMaXN0ZW5lcigmUVdheWxhbmRDbGllbnRFeHRl bnNpb25Qcml2YXRlOjpoYW5kbGVSZWdpc3RyeUdsb2JhbCwgdGhpcyk7CisrICAgICAgICBkLT5y ZWdpc3RlcmVkID0gdHJ1ZTsKKysgICAgfQorIH0KKyAKKyBRV2F5bGFuZENsaWVudEV4dGVuc2lv bjo6UVdheWxhbmRDbGllbnRFeHRlbnNpb24oY29uc3QgaW50IHZlcikKK0BAIC04OCw2ICs5MSwx MyBAQCBRV2F5bGFuZENsaWVudEV4dGVuc2lvbjo6UVdheWxhbmRDbGllbnRFeHRlbnNpb24oY29u c3QgaW50IHZlcikKKyAgICAgUU1ldGFPYmplY3Q6Omludm9rZU1ldGhvZCh0aGlzLCAiYWRkUmVn aXN0cnlMaXN0ZW5lciIsIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyB9CisgCisrUVdheWxhbmRD bGllbnRFeHRlbnNpb246On5RV2F5bGFuZENsaWVudEV4dGVuc2lvbigpCisreworKyAgICBRX0Qo UVdheWxhbmRDbGllbnRFeHRlbnNpb24pOworKyAgICBpZiAoZC0+cmVnaXN0ZXJlZCAmJiAhUUNv cmVBcHBsaWNhdGlvbjo6Y2xvc2luZ0Rvd24oKSkKKysgICAgICAgIGQtPndheWxhbmRJbnRlZ3Jh dGlvbi0+ZGlzcGxheSgpLT5yZW1vdmVMaXN0ZW5lcigmUVdheWxhbmRDbGllbnRFeHRlbnNpb25Q cml2YXRlOjpoYW5kbGVSZWdpc3RyeUdsb2JhbCwgdGhpcyk7CisrfQorKworIFF0V2F5bGFuZENs aWVudDo6UVdheWxhbmRJbnRlZ3JhdGlvbiAqUVdheWxhbmRDbGllbnRFeHRlbnNpb246OmludGVn cmF0aW9uKCkgY29uc3QKKyB7CisgICAgIFFfRChjb25zdCBRV2F5bGFuZENsaWVudEV4dGVuc2lv bik7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xp ZW50ZXh0ZW5zaW9uLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGll bnRleHRlbnNpb24uaAoraW5kZXggOTgyNzJlNTcuLjViZDI4Mzk4IDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uLmgKKysrKyBi L3F0d2F5bGFuZC9zcmMvY2xpZW50L2dsb2JhbC9xd2F5bGFuZGNsaWVudGV4dGVuc2lvbi5oCitA QCAtNjMsNiArNjMsNyBAQCBjbGFzcyBRX1dBWUxBTkRfQ0xJRU5UX0VYUE9SVCBRV2F5bGFuZENs aWVudEV4dGVuc2lvbiA6IHB1YmxpYyBRT2JqZWN0CisgICAgIFFfUFJPUEVSVFkoYm9vbCBhY3Rp dmUgUkVBRCBpc0FjdGl2ZSBOT1RJRlkgYWN0aXZlQ2hhbmdlZCkKKyBwdWJsaWM6CisgICAgIFFX YXlsYW5kQ2xpZW50RXh0ZW5zaW9uKGNvbnN0IGludCB2ZXJzaW9uKTsKKysgICAgflFXYXlsYW5k Q2xpZW50RXh0ZW5zaW9uKCk7CisgCisgICAgIFF0V2F5bGFuZENsaWVudDo6UVdheWxhbmRJbnRl Z3JhdGlvbiAqaW50ZWdyYXRpb24oKSBjb25zdDsKKyAgICAgaW50IHZlcnNpb24oKSBjb25zdDsK K2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9nbG9iYWwvcXdheWxhbmRjbGllbnRl eHRlbnNpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50 ZXh0ZW5zaW9uX3AuaAoraW5kZXggNjljYzQ2YTAuLjkwOTFlZmJlIDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uX3AuaAorKysr IGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvZ2xvYmFsL3F3YXlsYW5kY2xpZW50ZXh0ZW5zaW9uX3Au aAorQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgorICAgICBRdFdheWxhbmRDbGllbnQ6OlFXYXls YW5kSW50ZWdyYXRpb24gKndheWxhbmRJbnRlZ3JhdGlvbiA9IG51bGxwdHI7CisgICAgIGludCB2 ZXJzaW9uID0gLTE7CisgICAgIGJvb2wgYWN0aXZlID0gZmFsc2U7CisrICAgIGJvb2wgcmVnaXN0 ZXJlZCA9IGZhbHNlOworIH07CisgCisgY2xhc3MgUV9XQVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdh eWxhbmRDbGllbnRFeHRlbnNpb25UZW1wbGF0ZVByaXZhdGUgOiBwdWJsaWMgUVdheWxhbmRDbGll bnRFeHRlbnNpb25Qcml2YXRlCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkYXRhZGV2aWNlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRl dmljZS5jcHAKK2luZGV4IDdlMmUzMzA4Li5lM2U2MGVkNSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kZGF0YWRldmljZS5jcHAKK0BAIC03Miw2ICs3Miw4IEBAIFFXYXlsYW5k RGF0YURldmljZTo6UVdheWxhbmREYXRhRGV2aWNlKFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIg Km1hbmFnZXIsIFFXYXlsCisgCisgUVdheWxhbmREYXRhRGV2aWNlOjp+UVdheWxhbmREYXRhRGV2 aWNlKCkKKyB7CisrICAgIGlmICh3bF9kYXRhX2RldmljZV9nZXRfdmVyc2lvbihvYmplY3QoKSkg Pj0gV0xfREFUQV9ERVZJQ0VfUkVMRUFTRV9TSU5DRV9WRVJTSU9OKQorKyAgICAgICAgcmVsZWFz ZSgpOworIH0KKyAKKyBRV2F5bGFuZERhdGFPZmZlciAqUVdheWxhbmREYXRhRGV2aWNlOjpzZWxl Y3Rpb25PZmZlcigpIGNvbnN0CitAQCAtMTEwLDcgKzExMiw3IEBAIFFXYXlsYW5kRGF0YU9mZmVy ICpRV2F5bGFuZERhdGFEZXZpY2U6OmRyYWdPZmZlcigpIGNvbnN0CisgICAgIHJldHVybiBtX2Ry YWdPZmZlci5kYXRhKCk7CisgfQorIAorLWJvb2wgUVdheWxhbmREYXRhRGV2aWNlOjpzdGFydERy YWcoUU1pbWVEYXRhICptaW1lRGF0YSwgUVdheWxhbmRXaW5kb3cgKmljb24pCisrYm9vbCBRV2F5 bGFuZERhdGFEZXZpY2U6OnN0YXJ0RHJhZyhRTWltZURhdGEgKm1pbWVEYXRhLCBRdDo6RHJvcEFj dGlvbnMgc3VwcG9ydGVkQWN0aW9ucywgUVdheWxhbmRXaW5kb3cgKmljb24pCisgeworICAgICBh dXRvICpzZWF0ID0gbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKTsKKyAgICAgYXV0byAq b3JpZ2luID0gc2VhdC0+cG9pbnRlckZvY3VzKCk7CitAQCAtMTIzLDcgKzEyNSwyOCBAQCBib29s IFFXYXlsYW5kRGF0YURldmljZTo6c3RhcnREcmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFFXYXls YW5kV2luZG93ICppY29uKQorICAgICB9CisgCisgICAgIG1fZHJhZ1NvdXJjZS5yZXNldChuZXcg UVdheWxhbmREYXRhU291cmNlKG1fZGlzcGxheS0+ZG5kU2VsZWN0aW9uSGFuZGxlcigpLCBtaW1l RGF0YSkpOworKworKyAgICBpZiAod2xfZGF0YV9kZXZpY2VfZ2V0X3ZlcnNpb24ob2JqZWN0KCkp ID49IDMpCisrICAgICAgICBtX2RyYWdTb3VyY2UtPnNldF9hY3Rpb25zKGRyb3BBY3Rpb25zVG9X bChzdXBwb3J0ZWRBY3Rpb25zKSk7CisrCisgICAgIGNvbm5lY3QobV9kcmFnU291cmNlLmRhdGEo KSwgJlFXYXlsYW5kRGF0YVNvdXJjZTo6Y2FuY2VsbGVkLCB0aGlzLCAmUVdheWxhbmREYXRhRGV2 aWNlOjpkcmFnU291cmNlQ2FuY2VsbGVkKTsKKysgICAgY29ubmVjdChtX2RyYWdTb3VyY2UuZGF0 YSgpLCAmUVdheWxhbmREYXRhU291cmNlOjpkbmRSZXNwb25zZVVwZGF0ZWQsIHRoaXMsIFt0aGlz XShib29sIGFjY2VwdGVkLCBRdDo6RHJvcEFjdGlvbiBhY3Rpb24pIHsKKysgICAgICAgICAgICBh dXRvIGRyYWcgPSBzdGF0aWNfY2FzdDxRV2F5bGFuZERyYWcgKj4oUUd1aUFwcGxpY2F0aW9uUHJp dmF0ZTo6cGxhdGZvcm1JbnRlZ3JhdGlvbigpLT5kcmFnKCkpOworKyAgICAgICAgICAgIC8vIGlu IG9sZCB2ZXJzaW9ucyBkcm9wIGFjdGlvbiBpcyBub3Qgc2V0LCBzbyB3ZSBndWVzcworKyAgICAg ICAgICAgIGlmICh3bF9kYXRhX3NvdXJjZV9nZXRfdmVyc2lvbihtX2RyYWdTb3VyY2UtPm9iamVj dCgpKSA8IDMpIHsKKysgICAgICAgICAgICAgICAgZHJhZy0+c2V0UmVzcG9uc2UoYWNjZXB0ZWQp OworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIFFQbGF0Zm9ybURyb3BR dFJlc3BvbnNlIHJlc3BvbnNlKGFjY2VwdGVkLCBhY3Rpb24pOworKyAgICAgICAgICAgICAgICBk cmFnLT5zZXRSZXNwb25zZShyZXNwb25zZSk7CisrICAgICAgICAgICAgfQorKyAgICB9KTsKKysg ICAgY29ubmVjdChtX2RyYWdTb3VyY2UuZGF0YSgpLCAmUVdheWxhbmREYXRhU291cmNlOjpkbmRE cm9wcGVkLCB0aGlzLCBbXShib29sIGFjY2VwdGVkLCBRdDo6RHJvcEFjdGlvbiBhY3Rpb24pIHsK KysgICAgICAgIFFQbGF0Zm9ybURyb3BRdFJlc3BvbnNlIHJlc3BvbnNlKGFjY2VwdGVkLCBhY3Rp b24pOworKyAgICAgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlv blByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+c2V0RHJvcFJlc3BvbnNl KHJlc3BvbnNlKTsKKysgICAgfSk7CisrICAgIGNvbm5lY3QobV9kcmFnU291cmNlLmRhdGEoKSwg JlFXYXlsYW5kRGF0YVNvdXJjZTo6ZmluaXNoZWQsIHRoaXMsIFtdKCkgeworKyAgICAgICAgc3Rh dGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlBcHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3Jt SW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+ZmluaXNoRHJhZygpOworKyAgICB9KTsKKyAKKyAgICAg c3RhcnRfZHJhZyhtX2RyYWdTb3VyY2UtPm9iamVjdCgpLCBvcmlnaW4tPndsU3VyZmFjZSgpLCBp Y29uLT53bFN1cmZhY2UoKSwgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+c2VyaWFs KCkpOworICAgICByZXR1cm4gdHJ1ZTsKK0BAIC0xNTIsNyArMTc1LDcgQEAgdm9pZCBRV2F5bGFu ZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNlX2Ryb3AoKQorICAgICAgICAgc3VwcG9ydGVkQWN0aW9u cyA9IGRyYWctPnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNlIGlmIChtX2RyYWdPZmZl cikgeworICAgICAgICAgZHJhZ0RhdGEgPSBtX2RyYWdPZmZlci0+bWltZURhdGEoKTsKKy0gICAg ICAgIHN1cHBvcnRlZEFjdGlvbnMgPSBRdDo6Q29weUFjdGlvbiB8IFF0OjpNb3ZlQWN0aW9uIHwg UXQ6OkxpbmtBY3Rpb247CisrICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gbV9kcmFnT2ZmZXIt PnN1cHBvcnRlZEFjdGlvbnMoKTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICAgIHJldHVybjsKKyAg ICAgfQorQEAgLTE2Miw3ICsxODUsMTEgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFf ZGV2aWNlX2Ryb3AoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUd1aUFwcGxpY2F0aW9uOjprZXlib2Fy ZE1vZGlmaWVycygpKTsKKyAKKyAgICAgaWYgKGRyYWcpIHsKKy0gICAgICAgIHN0YXRpY19jYXN0 PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0 aW9uKCktPmRyYWcoKSktPmZpbmlzaERyYWcocmVzcG9uc2UpOworKyAgICAgICAgYXV0byBkcmFn ID0gIHN0YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpw bGF0Zm9ybUludGVncmF0aW9uKCktPmRyYWcoKSk7CisrICAgICAgICBkcmFnLT5zZXREcm9wUmVz cG9uc2UocmVzcG9uc2UpOworKyAgICAgICAgZHJhZy0+ZmluaXNoRHJhZygpOworKyAgICB9IGVs c2UgaWYgKG1fZHJhZ09mZmVyKSB7CisrICAgICAgICBtX2RyYWdPZmZlci0+ZmluaXNoKCk7Cisg ICAgIH0KKyB9CisgCitAQCAtMTg2LDcgKzIxMyw3IEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNl OjpkYXRhX2RldmljZV9lbnRlcih1aW50MzJfdCBzZXJpYWwsIHdsX3N1cmZhY2UgKnN1cmZhY2Us CisgICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gZHJhZy0+c3VwcG9ydGVkQWN0aW9ucygpOwor ICAgICB9IGVsc2UgaWYgKG1fZHJhZ09mZmVyKSB7CisgICAgICAgICBkcmFnRGF0YSA9IG1fZHJh Z09mZmVyLT5taW1lRGF0YSgpOworLSAgICAgICAgc3VwcG9ydGVkQWN0aW9ucyA9IFF0OjpDb3B5 QWN0aW9uIHwgUXQ6Ok1vdmVBY3Rpb24gfCBRdDo6TGlua0FjdGlvbjsKKysgICAgICAgIHN1cHBv cnRlZEFjdGlvbnMgPSBtX2RyYWdPZmZlci0+c3VwcG9ydGVkQWN0aW9ucygpOworICAgICB9Cisg CisgICAgIGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlICZyZXNwb25zZSA9IFFXaW5kb3dT eXN0ZW1JbnRlcmZhY2U6OmhhbmRsZURyYWcobV9kcmFnV2luZG93LCBkcmFnRGF0YSwgbV9kcmFn UG9pbnQsIHN1cHBvcnRlZEFjdGlvbnMsCitAQCAtMTk3LDExICsyMjQsNyBAQCB2b2lkIFFXYXls YW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfZW50ZXIodWludDMyX3Qgc2VyaWFsLCB3bF9zdXJm YWNlICpzdXJmYWNlLAorICAgICAgICAgc3RhdGljX2Nhc3Q8UVdheWxhbmREcmFnICo+KFFHdWlB cHBsaWNhdGlvblByaXZhdGU6OnBsYXRmb3JtSW50ZWdyYXRpb24oKS0+ZHJhZygpKS0+c2V0UmVz cG9uc2UocmVzcG9uc2UpOworICAgICB9CisgCistICAgIGlmIChyZXNwb25zZS5pc0FjY2VwdGVk KCkpIHsKKy0gICAgICAgIHdsX2RhdGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVyLT5vYmplY3Qo KSwgbV9lbnRlclNlcmlhbCwgbV9kcmFnT2ZmZXItPmZpcnN0Rm9ybWF0KCkudG9VdGY4KCkuY29u c3REYXRhKCkpOworLSAgICB9IGVsc2UgeworLSAgICAgICAgd2xfZGF0YV9vZmZlcl9hY2NlcHQo bV9kcmFnT2ZmZXItPm9iamVjdCgpLCBtX2VudGVyU2VyaWFsLCBudWxscHRyKTsKKy0gICAgfQor KyAgICBzZW5kUmVzcG9uc2Uoc3VwcG9ydGVkQWN0aW9ucywgcmVzcG9uc2UpOworIH0KKyAKKyB2 b2lkIFFXYXlsYW5kRGF0YURldmljZTo6ZGF0YV9kZXZpY2VfbGVhdmUoKQorQEAgLTIzNSwxMCAr MjU4LDEwIEBAIHZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkYXRhX2RldmljZV9tb3Rpb24odWlu dDMyX3QgdGltZSwgd2xfZml4ZWRfdCB4LCB3bF9maXhlCisgICAgICAgICBzdXBwb3J0ZWRBY3Rp b25zID0gZHJhZy0+c3VwcG9ydGVkQWN0aW9ucygpOworICAgICB9IGVsc2UgeworICAgICAgICAg ZHJhZ0RhdGEgPSBtX2RyYWdPZmZlci0+bWltZURhdGEoKTsKKy0gICAgICAgIHN1cHBvcnRlZEFj dGlvbnMgPSBRdDo6Q29weUFjdGlvbiB8IFF0OjpNb3ZlQWN0aW9uIHwgUXQ6OkxpbmtBY3Rpb247 CisrICAgICAgICBzdXBwb3J0ZWRBY3Rpb25zID0gbV9kcmFnT2ZmZXItPnN1cHBvcnRlZEFjdGlv bnMoKTsKKyAgICAgfQorIAorLSAgICBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSByZXNwb25zZSA9 IFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZURyYWcobV9kcmFnV2luZG93LCBkcmFnRGF0 YSwgbV9kcmFnUG9pbnQsIHN1cHBvcnRlZEFjdGlvbnMsCisrICAgIGNvbnN0IFFQbGF0Zm9ybURy YWdRdFJlc3BvbnNlIHJlc3BvbnNlID0gUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlRHJh ZyhtX2RyYWdXaW5kb3csIGRyYWdEYXRhLCBtX2RyYWdQb2ludCwgc3VwcG9ydGVkQWN0aW9ucywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFHdWlBcHBsaWNhdGlvbjo6bW91c2VCdXR0b25zKCksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRR3VpQXBwbGljYXRpb246OmtleWJvYXJkTW9kaWZpZXJzKCkpOworIAor QEAgLTI0NiwxMSArMjY5LDcgQEAgdm9pZCBRV2F5bGFuZERhdGFEZXZpY2U6OmRhdGFfZGV2aWNl X21vdGlvbih1aW50MzJfdCB0aW1lLCB3bF9maXhlZF90IHgsIHdsX2ZpeGUKKyAgICAgICAgIHN0 YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9y bUludGVncmF0aW9uKCktPmRyYWcoKSktPnNldFJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICAgfQor IAorLSAgICBpZiAocmVzcG9uc2UuaXNBY2NlcHRlZCgpKSB7CistICAgICAgICB3bF9kYXRhX29m ZmVyX2FjY2VwdChtX2RyYWdPZmZlci0+b2JqZWN0KCksIG1fZW50ZXJTZXJpYWwsIG1fZHJhZ09m ZmVyLT5maXJzdEZvcm1hdCgpLnRvVXRmOCgpLmNvbnN0RGF0YSgpKTsKKy0gICAgfSBlbHNlIHsK Ky0gICAgICAgIHdsX2RhdGFfb2ZmZXJfYWNjZXB0KG1fZHJhZ09mZmVyLT5vYmplY3QoKSwgbV9l bnRlclNlcmlhbCwgbnVsbHB0cik7CistICAgIH0KKysgICAgc2VuZFJlc3BvbnNlKHN1cHBvcnRl ZEFjdGlvbnMsIHJlc3BvbnNlKTsKKyB9CisgI2VuZGlmIC8vIFFUX0NPTkZJRyhkcmFnYW5kZHJv cCkKKyAKK0BAIC0yNzcsMTQgKzI5NiwxMCBAQCB2b2lkIFFXYXlsYW5kRGF0YURldmljZTo6c2Vs ZWN0aW9uU291cmNlQ2FuY2VsbGVkKCkKKyAjaWYgUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorIHZv aWQgUVdheWxhbmREYXRhRGV2aWNlOjpkcmFnU291cmNlQ2FuY2VsbGVkKCkKKyB7CisrICAgIHN0 YXRpY19jYXN0PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9y bUludGVncmF0aW9uKCktPmRyYWcoKSktPmZpbmlzaERyYWcoKTsKKyAgICAgbV9kcmFnU291cmNl LnJlc2V0KCk7CisgfQorIAorLXZvaWQgUVdheWxhbmREYXRhRGV2aWNlOjpkcmFnU291cmNlVGFy Z2V0Q2hhbmdlZChjb25zdCBRU3RyaW5nICZtaW1lVHlwZSkKKy17CistICAgIHN0YXRpY19jYXN0 PFFXYXlsYW5kRHJhZyAqPihRR3VpQXBwbGljYXRpb25Qcml2YXRlOjpwbGF0Zm9ybUludGVncmF0 aW9uKCktPmRyYWcoKSktPnVwZGF0ZVRhcmdldChtaW1lVHlwZSk7CistfQorLQorIFFQb2ludCBR V2F5bGFuZERhdGFEZXZpY2U6OmNhbGN1bGF0ZURyYWdQb3NpdGlvbihpbnQgeCwgaW50IHksIFFX aW5kb3cgKnduZCkgY29uc3QKKyB7CisgICAgIFFQb2ludCBwbnQod2xfZml4ZWRfdG9faW50KHgp LCB3bF9maXhlZF90b19pbnQoeSkpOworQEAgLTI5Nyw2ICszMTIsMzMgQEAgUVBvaW50IFFXYXls YW5kRGF0YURldmljZTo6Y2FsY3VsYXRlRHJhZ1Bvc2l0aW9uKGludCB4LCBpbnQgeSwgUVdpbmRv dyAqd25kKSBjb24KKyAgICAgfQorICAgICByZXR1cm4gcG50OworIH0KKysKKyt2b2lkIFFXYXls YW5kRGF0YURldmljZTo6c2VuZFJlc3BvbnNlKFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rp b25zLCBjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25zZSAmcmVzcG9uc2UpCisreworKyAgICBp ZiAocmVzcG9uc2UuaXNBY2NlcHRlZCgpKSB7CisrICAgICAgICBpZiAod2xfZGF0YV9kZXZpY2Vf Z2V0X3ZlcnNpb24ob2JqZWN0KCkpID49IDMpCisrICAgICAgICAgICAgbV9kcmFnT2ZmZXItPnNl dF9hY3Rpb25zKGRyb3BBY3Rpb25zVG9XbChzdXBwb3J0ZWRBY3Rpb25zKSwgZHJvcEFjdGlvbnNU b1dsKHJlc3BvbnNlLmFjY2VwdGVkQWN0aW9uKCkpKTsKKysKKysgICAgICAgIG1fZHJhZ09mZmVy LT5hY2NlcHQobV9lbnRlclNlcmlhbCwgbV9kcmFnT2ZmZXItPmZpcnN0Rm9ybWF0KCkpOworKyAg ICB9IGVsc2UgeworKyAgICAgICAgbV9kcmFnT2ZmZXItPmFjY2VwdChtX2VudGVyU2VyaWFsLCBR U3RyaW5nKCkpOworKyAgICB9CisrfQorKworK2ludCBRV2F5bGFuZERhdGFEZXZpY2U6OmRyb3BB Y3Rpb25zVG9XbChRdDo6RHJvcEFjdGlvbnMgYWN0aW9ucykKKyt7CisrCisrICAgIGludCB3bEFj dGlvbnMgPSBXTF9EQVRBX0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fTk9ORTsKKysgICAgaWYg KGFjdGlvbnMgJiBRdDo6Q29weUFjdGlvbikKKysgICAgICAgIHdsQWN0aW9ucyB8PSBXTF9EQVRB X0RFVklDRV9NQU5BR0VSX0RORF9BQ1RJT05fQ09QWTsKKysgICAgaWYgKGFjdGlvbnMgJiAoUXQ6 Ok1vdmVBY3Rpb24gfCBRdDo6VGFyZ2V0TW92ZUFjdGlvbikpCisrICAgICAgICB3bEFjdGlvbnMg fD0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX01PVkU7CisrCisrICAgIC8vIHdh eWxhbmQgZG9lcyBub3Qgc3VwcG9ydCBMaW5rQWN0aW9uIGF0IHRoZSB0aW1lIG9mIHdyaXRpbmcK KysgICAgcmV0dXJuIHdsQWN0aW9uczsKKyt9CisrCisrCisgI2VuZGlmIC8vIFFUX0NPTkZJRyhk cmFnYW5kZHJvcCkKKyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkYXRhZGV2aWNlX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRl dmljZV9wLmgKK2luZGV4IDE2YzNhZDI4Li44MDFkY2MyYyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZV9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kZGF0YWRldmljZV9wLmgKK0BAIC02NCw2ICs2NCw3IEBAIFFUX1JFUVVJ UkVfQ09ORklHKHdheWxhbmRfZGF0YWRldmljZSk7CisgUVRfQkVHSU5fTkFNRVNQQUNFCisgCisg Y2xhc3MgUU1pbWVEYXRhOworK2NsYXNzIFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlOworIGNsYXNz IFFXaW5kb3c7CisgCisgbmFtZXNwYWNlIFF0V2F5bGFuZENsaWVudCB7CitAQCAtODksNyArOTAs NyBAQCBwdWJsaWM6CisgCisgI2lmIFFUX0NPTkZJRyhkcmFnYW5kZHJvcCkKKyAgICAgUVdheWxh bmREYXRhT2ZmZXIgKmRyYWdPZmZlcigpIGNvbnN0OworLSAgICBib29sIHN0YXJ0RHJhZyhRTWlt ZURhdGEgKm1pbWVEYXRhLCBRV2F5bGFuZFdpbmRvdyAqaWNvbik7CisrICAgIGJvb2wgc3RhcnRE cmFnKFFNaW1lRGF0YSAqbWltZURhdGEsIFF0OjpEcm9wQWN0aW9ucyBzdXBwb3J0ZWRBY3Rpb25z LCBRV2F5bGFuZFdpbmRvdyAqaWNvbik7CisgICAgIHZvaWQgY2FuY2VsRHJhZygpOworICNlbmRp ZgorIAorQEAgLTEwOSwxMyArMTEwLDE2IEBAIHByaXZhdGUgUV9TTE9UUzoKKyAKKyAjaWYgUVRf Q09ORklHKGRyYWdhbmRkcm9wKQorICAgICB2b2lkIGRyYWdTb3VyY2VDYW5jZWxsZWQoKTsKKy0g ICAgdm9pZCBkcmFnU291cmNlVGFyZ2V0Q2hhbmdlZChjb25zdCBRU3RyaW5nICZtaW1lVHlwZSk7 CisgI2VuZGlmCisgCisgcHJpdmF0ZToKKyAjaWYgUVRfQ09ORklHKGRyYWdhbmRkcm9wKQorICAg ICBRUG9pbnQgY2FsY3VsYXRlRHJhZ1Bvc2l0aW9uKGludCB4LCBpbnQgeSwgUVdpbmRvdyAqd25k KSBjb25zdDsKKyAjZW5kaWYKKysgICAgdm9pZCBzZW5kUmVzcG9uc2UoUXQ6OkRyb3BBY3Rpb25z IHN1cHBvcnRlZEFjdGlvbnMsIGNvbnN0IFFQbGF0Zm9ybURyYWdRdFJlc3BvbnNlICZyZXNwb25z ZSk7CisrCisrICAgIHN0YXRpYyBpbnQgZHJvcEFjdGlvbnNUb1dsKFF0OjpEcm9wQWN0aW9ucyBk cm9wQWN0aW9ucyk7CisrCisgCisgICAgIFFXYXlsYW5kRGlzcGxheSAqbV9kaXNwbGF5ID0gbnVs bHB0cjsKKyAgICAgUVdheWxhbmRJbnB1dERldmljZSAqbV9pbnB1dERldmljZSA9IG51bGxwdHI7 CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFu YWdlci5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2Vy LmNwcAoraW5kZXggMzVkNjczMDcuLjZkYzRmNzdmIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlci5jcHAKKysrKyBiL3F0d2F5bGFuZC9z cmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1hbmFnZXIuY3BwCitAQCAtNTAsOCArNTAsOCBA QCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBuYW1lc3BhY2UgUXRXYXlsYW5kQ2xpZW50IHsKKyAK Ky1RV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyOjpRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKFFX YXlsYW5kRGlzcGxheSAqZGlzcGxheSwgdWludDMyX3QgaWQpCistICAgIDogd2xfZGF0YV9kZXZp Y2VfbWFuYWdlcihkaXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgMSkKKytRV2F5bGFuZERhdGFE ZXZpY2VNYW5hZ2VyOjpRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2VyKFFXYXlsYW5kRGlzcGxheSAq ZGlzcGxheSwgaW50IHZlcnNpb24sIHVpbnQzMl90IGlkKQorKyAgICA6IHdsX2RhdGFfZGV2aWNl X21hbmFnZXIoZGlzcGxheS0+d2xfcmVnaXN0cnkoKSwgaWQsIHFNaW4odmVyc2lvbiwgMykpCisg ICAgICwgbV9kaXNwbGF5KGRpc3BsYXkpCisgeworICAgICAvLyBDcmVhdGUgdHJhbnNmZXIgZGV2 aWNlcyBmb3IgYWxsIGlucHV0IGRldmljZXMuCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9j bGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFuYWdlcl9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRhdGFkZXZpY2VtYW5hZ2VyX3AuaAoraW5kZXggYmQwNWMwZmIuLjUxMGQ5YmU0 IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhZGV2aWNlbWFu YWdlcl9wLmgKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YWRldmljZW1h bmFnZXJfcC5oCitAQCAtNjgsNyArNjgsNyBAQCBjbGFzcyBRV2F5bGFuZElucHV0RGV2aWNlOwor IGNsYXNzIFFfV0FZTEFORF9DTElFTlRfRVhQT1JUIFFXYXlsYW5kRGF0YURldmljZU1hbmFnZXIg OiBwdWJsaWMgUXRXYXlsYW5kOjp3bF9kYXRhX2RldmljZV9tYW5hZ2VyCisgeworIHB1YmxpYzoK Ky0gICAgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcihRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXks IHVpbnQzMl90IGlkKTsKKysgICAgUVdheWxhbmREYXRhRGV2aWNlTWFuYWdlcihRV2F5bGFuZERp c3BsYXkgKmRpc3BsYXksIGludCB2ZXJzaW9uLCB1aW50MzJfdCBpZCk7CisgICAgIH5RV2F5bGFu ZERhdGFEZXZpY2VNYW5hZ2VyKCkgb3ZlcnJpZGU7CisgCisgICAgIFFXYXlsYW5kRGF0YURldmlj ZSAqZ2V0RGF0YURldmljZShRV2F5bGFuZElucHV0RGV2aWNlICppbnB1dERldmljZSk7CitkaWZm IC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXIuY3BwIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXIuY3BwCitpbmRleCAyMjk3ZThhMS4u ZmUwZWE4YzkgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFv ZmZlci5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyLmNw cAorQEAgLTgyLDYgKzgyLDE1IEBAIFFNaW1lRGF0YSAqUVdheWxhbmREYXRhT2ZmZXI6Om1pbWVE YXRhKCkKKyAgICAgcmV0dXJuIG1fbWltZURhdGEuZGF0YSgpOworIH0KKyAKKytRdDo6RHJvcEFj dGlvbnMgUVdheWxhbmREYXRhT2ZmZXI6OnN1cHBvcnRlZEFjdGlvbnMoKSBjb25zdAorK3sKKysg ICAgaWYgKHdsX2RhdGFfb2ZmZXJfZ2V0X3ZlcnNpb24oY29uc3RfY2FzdDw6OndsX2RhdGFfb2Zm ZXIqPihvYmplY3QoKSkpIDwgMykgeworKyAgICAgICAgcmV0dXJuIFF0OjpNb3ZlQWN0aW9uIHwg UXQ6OkNvcHlBY3Rpb247CisrICAgIH0KKysKKysgICAgcmV0dXJuIG1fc3VwcG9ydGVkQWN0aW9u czsKKyt9CisrCisgdm9pZCBRV2F5bGFuZERhdGFPZmZlcjo6c3RhcnRSZWNlaXZpbmcoY29uc3Qg UVN0cmluZyAmbWltZVR5cGUsIGludCBmZCkKKyB7CisgICAgIHJlY2VpdmUobWltZVR5cGUsIGZk KTsKK0BAIC05Myw2ICsxMDIsMjIgQEAgdm9pZCBRV2F5bGFuZERhdGFPZmZlcjo6ZGF0YV9vZmZl cl9vZmZlcihjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUpCisgICAgIG1fbWltZURhdGEtPmFwcGVu ZEZvcm1hdChtaW1lX3R5cGUpOworIH0KKyAKKyt2b2lkIFFXYXlsYW5kRGF0YU9mZmVyOjpkYXRh X29mZmVyX2FjdGlvbih1aW50MzJfdCBkbmRfYWN0aW9uKQorK3sKKysgICAgUV9VTlVTRUQoZG5k X2FjdGlvbik7CisrICAgIC8vIFRoaXMgaXMgdGhlIGNvbXBvc2l0b3IgdGVsbGluZyB0aGUgZHJh ZyB0YXJnZXQgd2hhdCBhY3Rpb24gaXQgc2hvdWxkIHBlcmZvcm0KKysgICAgLy8gSXQgZG9lcyBu b3QgbWFwIG5pY2VseSBpbnRvIFF0IGZpbmFsIGRyb3Agc2VtYW50aWNzLCBvdGhlciB0aGFuIHBy ZXRlbmRpbmcgdGhlcmUgaXMgb25seSBvbmUgc3VwcG9ydGVkIGFjdGlvbj8KKyt9CisrCisrdm9p ZCBRV2F5bGFuZERhdGFPZmZlcjo6ZGF0YV9vZmZlcl9zb3VyY2VfYWN0aW9ucyh1aW50MzJfdCBz b3VyY2VfYWN0aW9ucykKKyt7CisrICAgIG1fc3VwcG9ydGVkQWN0aW9ucyA9IFF0OjpEcm9wQWN0 aW9ucygpOworKyAgICBpZiAoc291cmNlX2FjdGlvbnMgJiBXTF9EQVRBX0RFVklDRV9NQU5BR0VS X0RORF9BQ1RJT05fTU9WRSkKKysgICAgICAgIG1fc3VwcG9ydGVkQWN0aW9ucyB8PSBRdDo6TW92 ZUFjdGlvbjsKKysgICAgaWYgKHNvdXJjZV9hY3Rpb25zICYgV0xfREFUQV9ERVZJQ0VfTUFOQUdF Ul9ETkRfQUNUSU9OX0NPUFkpCisrICAgICAgICBtX3N1cHBvcnRlZEFjdGlvbnMgfD0gUXQ6OkNv cHlBY3Rpb247CisrfQorKworIFFXYXlsYW5kTWltZURhdGE6OlFXYXlsYW5kTWltZURhdGEoUVdh eWxhbmRBYnN0cmFjdERhdGFPZmZlciAqZGF0YU9mZmVyKQorICAgICA6IG1fZGF0YU9mZmVyKGRh dGFPZmZlcikKKyB7CitAQCAtMTYzLDE3ICsxODgsMTggQEAgUVZhcmlhbnQgUVdheWxhbmRNaW1l RGF0YTo6cmV0cmlldmVEYXRhX3N5cyhjb25zdCBRU3RyaW5nICZtaW1lVHlwZSwgUVZhcmlhbnQ6 OlQKKyAKKyBpbnQgUVdheWxhbmRNaW1lRGF0YTo6cmVhZERhdGEoaW50IGZkLCBRQnl0ZUFycmF5 ICZkYXRhKSBjb25zdAorIHsKKy0gICAgZmRfc2V0IHJlYWRzZXQ7CistICAgIEZEX1pFUk8oJnJl YWRzZXQpOworLSAgICBGRF9TRVQoZmQsICZyZWFkc2V0KTsKKy0gICAgc3RydWN0IHRpbWV2YWwg dGltZW91dDsKKysgICAgc3RydWN0IHBvbGxmZCByZWFkc2V0OworKyAgICByZWFkc2V0LmZkID0g ZmQ7CisrICAgIHJlYWRzZXQuZXZlbnRzID0gUE9MTElOOworKyAgICBzdHJ1Y3QgdGltZXNwZWMg dGltZW91dDsKKyAgICAgdGltZW91dC50dl9zZWMgPSAxOworLSAgICB0aW1lb3V0LnR2X3VzZWMg PSAwOworKyAgICB0aW1lb3V0LnR2X25zZWMgPSAwOworKworIAorICAgICBRX0ZPUkVWRVIgewor LSAgICAgICAgaW50IHJlYWR5ID0gc2VsZWN0KEZEX1NFVFNJWkUsICZyZWFkc2V0LCBudWxscHRy LCBudWxscHRyLCAmdGltZW91dCk7CisrICAgICAgICBpbnQgcmVhZHkgPSBxdF9zYWZlX3BvbGwo JnJlYWRzZXQsIDEsICZ0aW1lb3V0KTsKKyAgICAgICAgIGlmIChyZWFkeSA8IDApIHsKKy0gICAg ICAgICAgICBxV2FybmluZygpIDw8ICJRV2F5bGFuZERhdGFPZmZlcjogc2VsZWN0KCkgZmFpbGVk IjsKKysgICAgICAgICAgICBxV2FybmluZygpIDw8ICJRV2F5bGFuZERhdGFPZmZlcjogcXRfc2Fm ZV9wb2xsKCkgZmFpbGVkIjsKKyAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICB9IGVs c2UgaWYgKHJlYWR5ID09IDApIHsKKyAgICAgICAgICAgICBxV2FybmluZygiUVdheWxhbmREYXRh T2ZmZXI6IHRpbWVvdXQgcmVhZGluZyBmcm9tIHBpcGUiKTsKK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFvZmZlcl9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9xd2F5bGFuZGRhdGFvZmZlcl9wLmgKK2luZGV4IDljZjE0ODNjLi42ZjY2NzM5OCAxMDA2NDQK Ky0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YW9mZmVyX3AuaAorKysrIGIv cXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhb2ZmZXJfcC5oCitAQCAtODIsNiArODIs NyBAQCBwdWJsaWM6CisgICAgIGV4cGxpY2l0IFFXYXlsYW5kRGF0YU9mZmVyKFFXYXlsYW5kRGlz cGxheSAqZGlzcGxheSwgc3RydWN0IDo6d2xfZGF0YV9vZmZlciAqb2ZmZXIpOworICAgICB+UVdh eWxhbmREYXRhT2ZmZXIoKSBvdmVycmlkZTsKKyAgICAgUU1pbWVEYXRhICptaW1lRGF0YSgpIG92 ZXJyaWRlOworKyAgICBRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkQWN0aW9ucygpIGNvbnN0Owor IAorICAgICBRU3RyaW5nIGZpcnN0Rm9ybWF0KCkgY29uc3Q7CisgCitAQCAtODksMTAgKzkwLDEz IEBAIHB1YmxpYzoKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgZGF0YV9vZmZlcl9vZmZlcihj b25zdCBRU3RyaW5nICZtaW1lX3R5cGUpIG92ZXJyaWRlOworKyAgICB2b2lkIGRhdGFfb2ZmZXJf c291cmNlX2FjdGlvbnModWludDMyX3Qgc291cmNlX2FjdGlvbnMpIG92ZXJyaWRlOworKyAgICB2 b2lkIGRhdGFfb2ZmZXJfYWN0aW9uKHVpbnQzMl90IGRuZF9hY3Rpb24pIG92ZXJyaWRlOworIAor IHByaXZhdGU6CisgICAgIFFXYXlsYW5kRGlzcGxheSAqbV9kaXNwbGF5ID0gbnVsbHB0cjsKKyAg ICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRNaW1lRGF0YT4gbV9taW1lRGF0YTsKKysgICAgUXQ6 OkRyb3BBY3Rpb25zIG1fc3VwcG9ydGVkQWN0aW9uczsKKyB9OworIAorIAorZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGF0YXNvdXJjZS5jcHAgYi9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2UuY3BwCitpbmRleCBmNDUxMjJmYi4uNTU5OWNi ZDQgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2Uu Y3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2UuY3BwCitA QCAtMTAxLDcgKzEwMSwzMiBAQCB2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0YV9zb3VyY2Vf c2VuZChjb25zdCBRU3RyaW5nICZtaW1lX3R5cGUsIGludDMyX3QgZmQpCisgCisgdm9pZCBRV2F5 bGFuZERhdGFTb3VyY2U6OmRhdGFfc291cmNlX3RhcmdldChjb25zdCBRU3RyaW5nICZtaW1lX3R5 cGUpCisgeworLSAgICBRX0VNSVQgdGFyZ2V0Q2hhbmdlZChtaW1lX3R5cGUpOworKyAgICBtX2Fj Y2VwdGVkID0gIW1pbWVfdHlwZS5pc0VtcHR5KCk7CisrICAgIFFfRU1JVCBkbmRSZXNwb25zZVVw ZGF0ZWQobV9hY2NlcHRlZCwgbV9kcm9wQWN0aW9uKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZERh dGFTb3VyY2U6OmRhdGFfc291cmNlX2FjdGlvbih1aW50MzJfdCBhY3Rpb24pCisreworKyAgICBR dDo6RHJvcEFjdGlvbiBxdEFjdGlvbiA9IFF0OjpJZ25vcmVBY3Rpb247CisrCisrICAgIGlmIChh Y3Rpb24gPT0gV0xfREFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX01PVkUpCisrICAgICAg ICBxdEFjdGlvbiA9IFF0OjpNb3ZlQWN0aW9uOworKyAgICBlbHNlIGlmIChhY3Rpb24gPT0gV0xf REFUQV9ERVZJQ0VfTUFOQUdFUl9ETkRfQUNUSU9OX0NPUFkpCisrICAgICAgICBxdEFjdGlvbiA9 IFF0OjpDb3B5QWN0aW9uOworKworKyAgICBtX2Ryb3BBY3Rpb24gPSBxdEFjdGlvbjsKKysgICAg UV9FTUlUIGRuZFJlc3BvbnNlVXBkYXRlZChtX2FjY2VwdGVkLCBtX2Ryb3BBY3Rpb24pOworK30K KysKKyt2b2lkIFFXYXlsYW5kRGF0YVNvdXJjZTo6ZGF0YV9zb3VyY2VfZG5kX2ZpbmlzaGVkKCkK Kyt7CisrICAgIFFfRU1JVCBmaW5pc2hlZCgpOworK30KKysKKyt2b2lkIFFXYXlsYW5kRGF0YVNv dXJjZTo6ZGF0YV9zb3VyY2VfZG5kX2Ryb3BfcGVyZm9ybWVkKCkKKyt7CisrCisrICAgIFFfRU1J VCBkbmREcm9wcGVkKG1fYWNjZXB0ZWQsIG1fZHJvcEFjdGlvbik7CisgfQorIAorIH0KK2RpZmYg LS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRhdGFzb3VyY2VfcC5oIGIvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNlX3AuaAoraW5kZXggMjVhZmZmNzku Ljk2ZjA3YmMzIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRh c291cmNlX3AuaAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkYXRhc291cmNl X3AuaAorQEAgLTc3LDE3ICs3NywyNSBAQCBwdWJsaWM6CisgICAgIFFNaW1lRGF0YSAqbWltZURh dGEoKSBjb25zdDsKKyAKKyBRX1NJR05BTFM6CistICAgIHZvaWQgdGFyZ2V0Q2hhbmdlZChjb25z dCBRU3RyaW5nICZtaW1lX3R5cGUpOworICAgICB2b2lkIGNhbmNlbGxlZCgpOworKyAgICB2b2lk IGZpbmlzaGVkKCk7CisrCisrICAgIHZvaWQgZG5kUmVzcG9uc2VVcGRhdGVkKGJvb2wgYWNjZXB0 ZWQsIFF0OjpEcm9wQWN0aW9uIGFjdGlvbik7CisrICAgIHZvaWQgZG5kRHJvcHBlZChib29sIGFj Y2VwdGVkLCBRdDo6RHJvcEFjdGlvbiBhY3Rpb24pOworIAorIHByb3RlY3RlZDoKKyAgICAgdm9p ZCBkYXRhX3NvdXJjZV9jYW5jZWxsZWQoKSBvdmVycmlkZTsKKyAgICAgdm9pZCBkYXRhX3NvdXJj ZV9zZW5kKGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSwgaW50MzJfdCBmZCkgb3ZlcnJpZGU7Cisg ICAgIHZvaWQgZGF0YV9zb3VyY2VfdGFyZ2V0KGNvbnN0IFFTdHJpbmcgJm1pbWVfdHlwZSkgb3Zl cnJpZGU7CisrICAgIHZvaWQgZGF0YV9zb3VyY2VfZG5kX2Ryb3BfcGVyZm9ybWVkKCkgb3ZlcnJp ZGU7CisrICAgIHZvaWQgZGF0YV9zb3VyY2VfZG5kX2ZpbmlzaGVkKCkgb3ZlcnJpZGU7CisrICAg IHZvaWQgZGF0YV9zb3VyY2VfYWN0aW9uKHVpbnQzMl90IGFjdGlvbikgb3ZlcnJpZGU7CisgCisg cHJpdmF0ZToKKyAgICAgUVdheWxhbmREaXNwbGF5ICptX2Rpc3BsYXkgPSBudWxscHRyOworICAg ICBRTWltZURhdGEgKm1fbWltZV9kYXRhID0gbnVsbHB0cjsKKysgICAgYm9vbCBtX2FjY2VwdGVk ID0gZmFsc2U7CisrICAgIFF0OjpEcm9wQWN0aW9uIG1fZHJvcEFjdGlvbiA9IFF0OjpJZ25vcmVB Y3Rpb247CisgfTsKKyAKKyB9CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdh eWxhbmRkaXNwbGF5LmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheS5j cHAKK2luZGV4IGYxMGMxZjc5Li5jMDFlMjM4YiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMv Y2xpZW50L3F3YXlsYW5kZGlzcGxheS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kZGlzcGxheS5jcHAKK0BAIC04NSwxMCArODUsMjAzIEBACisgCisgI2luY2x1ZGUgPGVy cm5vLmg+CisgCisrI2luY2x1ZGUgPHR1cGxlPiAvLyBmb3Igc3RkOjp0aWUKKysKKytzdGF0aWMg dm9pZCBjaGVja1dheWxhbmRFcnJvcihzdHJ1Y3Qgd2xfZGlzcGxheSAqZGlzcGxheSkKKyt7Cisr ICAgIGludCBlY29kZSA9IHdsX2Rpc3BsYXlfZ2V0X2Vycm9yKGRpc3BsYXkpOworKyAgICBpZiAo KGVjb2RlID09IEVQSVBFIHx8IGVjb2RlID09IEVDT05OUkVTRVQpKSB7CisrICAgICAgICAvLyBz cGVjaWFsIGNhc2UgdGhpcyB0byBwcm92aWRlIGEgbmljZXIgZXJyb3IKKysgICAgICAgIHFXYXJu aW5nKCJUaGUgV2F5bGFuZCBjb25uZWN0aW9uIGJyb2tlLiBEaWQgdGhlIFdheWxhbmQgY29tcG9z aXRvciBkaWU/Iik7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBxV2FybmluZygiVGhlIFdheWxh bmQgY29ubmVjdGlvbiBleHBlcmllbmNlZCBhIGZhdGFsIGVycm9yOiAlcyIsIHN0cmVycm9yKGVj b2RlKSk7CisrICAgIH0KKysgICAgX2V4aXQoMSk7CisrfQorKworIFFUX0JFR0lOX05BTUVTUEFD RQorIAorIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQgeworIAorK2NsYXNzIEV2ZW50VGhyZWFk IDogcHVibGljIFFUaHJlYWQKKyt7CisrICAgIFFfT0JKRUNUCisrcHVibGljOgorKyAgICBlbnVt IE9wZXJhdGluZ01vZGUgeworKyAgICAgICAgRW1pdFRvRGlzcGF0Y2gsIC8vIEVtaXQgdGhlIHNp Z25hbCwgYWxsb3cgZGlzcGF0Y2hpbmcgaW4gYSBkaWZmZXJudCB0aHJlYWQuCisrICAgICAgICBT ZWxmRGlzcGF0Y2gsIC8vIERpc3BhdGNoIHRoZSBldmVudHMgaW5zaWRlIHRoaXMgdGhyZWFkLgor KyAgICB9OworKworKyAgICBFdmVudFRocmVhZChzdHJ1Y3Qgd2xfZGlzcGxheSAqIHdsLCBzdHJ1 Y3Qgd2xfZXZlbnRfcXVldWUgKiBldl9xdWV1ZSwKKysgICAgICAgICAgICAgICAgT3BlcmF0aW5n TW9kZSBtb2RlKQorKyAgICAgICAgOiBtX2ZkKHdsX2Rpc3BsYXlfZ2V0X2ZkKHdsKSkKKysgICAg ICAgICwgbV9waXBlZmR7IC0xLCAtMSB9CisrICAgICAgICAsIG1fd2xkaXNwbGF5KHdsKQorKyAg ICAgICAgLCBtX3dsZXZxdWV1ZShldl9xdWV1ZSkKKysgICAgICAgICwgbV9tb2RlKG1vZGUpCisr ICAgICAgICAsIG1fcmVhZGluZyh0cnVlKQorKyAgICAgICAgLCBtX3F1aXR0aW5nKGZhbHNlKQor KyAgICB7CisrICAgICAgICBzZXRPYmplY3ROYW1lKFFTdHJpbmdMaXRlcmFsKCJXYXlsYW5kRXZl bnRUaHJlYWQiKSk7CisrICAgIH0KKysKKysgICAgdm9pZCByZWFkQW5kRGlzcGF0Y2hFdmVudHMo KQorKyAgICB7CisrICAgICAgICAvKgorKyAgICAgICAgICogRGlzcGF0Y2ggcGVuZGluZyBldmVu dHMgYW5kIGZsdXNoIHRoZSByZXF1ZXN0cyBhdCBsZWFzdCBvbmNlLiBJZiB0aGUgZXZlbnQgdGhy ZWFkCisrICAgICAgICAgKiBpcyBub3QgcmVhZGluZywgdHJ5IHRvIGNhbGwgX3ByZXBhcmVfcmVh ZCgpIHRvIGFsbG93IHRoZSBldmVudCB0aHJlYWQgdG8gcG9sbCgpLgorKyAgICAgICAgICogSWYg dGhhdCBmYWlscywgcmUtdHJ5IGRpc3BhdGNoICYgZmx1c2ggYWdhaW4gdW50aWwgX3ByZXBhcmVf cmVhZCgpIGlzIHN1Y2Nlc3NmdWwuCisrICAgICAgICAgKgorKyAgICAgICAgICogVGhpcyBhbGxv dyBhbnkgY2FsbCB0byByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKSB0byBzdGFydCBldmVudCB0aHJl YWQncyBwb2xsaW5nLAorKyAgICAgICAgICogbm90IG9ubHkgdGhlIG9uZSBpc3N1ZWQgZnJvbSBl dmVudCB0aHJlYWQncyB3YWl0Rm9yUmVhZGluZygpLCB3aGljaCBtZWFucyBmdW5jdGlvbnMKKysg ICAgICAgICAqIGNhbGxlZCBmcm9tIGRpc3BhdGNoX3BlbmRpbmcoKSBjYW4gc2FmZWx5IHNwaW4g YW4gZXZlbnQgbG9vcC4KKysgICAgICAgICAqLworKyAgICAgICAgZm9yICg7OykgeworKyAgICAg ICAgICAgIGlmIChkaXNwYXRjaFF1ZXVlUGVuZGluZygpIDwgMCkgeworKyAgICAgICAgICAgICAg ICBjaGVja1dheWxhbmRFcnJvcihtX3dsZGlzcGxheSk7CisrICAgICAgICAgICAgICAgIHJldHVy bjsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgd2xfZGlzcGxheV9mbHVzaChtX3ds ZGlzcGxheSk7CisrCisrICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBjaGVjayBpZiBldmVudCB0 aHJlYWQgaXMgcmVhZGluZyBldmVyeSB0aW1lIHdlIGRpc3BhdGNoCisrICAgICAgICAgICAgLy8g c29tZXRoaW5nLCBhcyB0aGF0IG1heSByZWN1cnNpdmVseSBjYWxsIHRoaXMgZnVuY3Rpb24uCisr ICAgICAgICAgICAgaWYgKG1fcmVhZGluZy5sb2FkQWNxdWlyZSgpKQorKyAgICAgICAgICAgICAg ICBicmVhazsKKysKKysgICAgICAgICAgICBpZiAocHJlcGFyZVJlYWRRdWV1ZSgpID09IDApIHsK KysgICAgICAgICAgICAgICAgUU11dGV4TG9ja2VyIGwoJm1fbXV0ZXgpOworKyAgICAgICAgICAg ICAgICBtX3JlYWRpbmcuc3RvcmVSZWxlYXNlKHRydWUpOworKyAgICAgICAgICAgICAgICBtX2Nv bmQud2FrZU9uZSgpOworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9Cisr ICAgICAgICB9CisrICAgIH0KKysKKysgICAgdm9pZCBzdG9wKCkKKysgICAgeworKyAgICAgICAg Ly8gV2UgaGF2ZSB0byBib3RoIHdyaXRlIHRvIHRoZSBwaXBlIGFuZCBzZXQgdGhlIGZsYWcsIGFz IHRoZSB0aHJlYWQgbWF5IGJlCisrICAgICAgICAvLyBlaXRoZXIgaW4gdGhlIHBvbGwoKSBvciB3 YWl0aW5nIGZvciBfcHJlcGFyZV9yZWFkKCkuCisrICAgICAgICBpZiAobV9waXBlZmRbMV0gIT0g LTEgJiYgd3JpdGUobV9waXBlZmRbMV0sICJcMCIsIDEpID09IC0xKQorKyAgICAgICAgICAgIHFX YXJuaW5nKCJGYWlsZWQgdG8gd3JpdGUgdG8gdGhlIHBpcGU6ICVzLiIsIHN0cmVycm9yKGVycm5v KSk7CisrCisrICAgICAgICB7CisrICAgICAgICAgICAgUU11dGV4TG9ja2VyIGwoJm1fbXV0ZXgp OworKyAgICAgICAgICAgIG1fcXVpdHRpbmcgPSB0cnVlOworKyAgICAgICAgICAgIG1fY29uZC53 YWtlT25lKCk7CisrICAgICAgICB9CisrCisrICAgICAgICB3YWl0KCk7CisrICAgIH0KKysKKytR X1NJR05BTFM6CisrICAgIHZvaWQgbmVlZFJlYWRBbmREaXNwYXRjaCgpOworKworK3Byb3RlY3Rl ZDoKKysgICAgdm9pZCBydW4oKSBvdmVycmlkZQorKyAgICB7CisrICAgICAgICAvLyB3ZSB1c2Ug dGhpcyBwaXBlIHRvIG1ha2UgdGhlIGxvb3AgZXhpdCBvdGhlcndpc2UgaWYgd2Ugc2ltcGx5IHVz ZWQgYSBmbGFnIG9uIHRoZSBsb29wIGNvbmRpdGlvbiwgaWYgc3RvcCgpIGdldHMKKysgICAgICAg IC8vIGNhbGxlZCB3aGlsZSBwb2xsKCkgaXMgYmxvY2tpbmcgdGhlIHRocmVhZCB3aWxsIG5ldmVy IHF1aXQgc2luY2UgdGhlcmUgYXJlIG5vIHdheWxhbmQgbWVzc2FnZXMgY29taW5nIGFueW1vcmUu CisrICAgICAgICBzdHJ1Y3QgUGlwZQorKyAgICAgICAgeworKyAgICAgICAgICAgIFBpcGUoaW50 ICpmZHMpCisrICAgICAgICAgICAgICAgIDogZmRzKGZkcykKKysgICAgICAgICAgICB7CisrICAg ICAgICAgICAgICAgIGlmIChxdF9zYWZlX3BpcGUoZmRzKSAhPSAwKQorKyAgICAgICAgICAgICAg ICAgICAgcVdhcm5pbmcoIlBpcGUgY3JlYXRpb24gZmFpbGVkLiBRdWl0dGluZyBtYXkgaGFuZy4i KTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgflBpcGUoKQorKyAgICAgICAgICAgIHsK KysgICAgICAgICAgICAgICAgaWYgKGZkc1swXSAhPSAtMSkgeworKyAgICAgICAgICAgICAgICAg ICAgY2xvc2UoZmRzWzBdKTsKKysgICAgICAgICAgICAgICAgICAgIGNsb3NlKGZkc1sxXSk7Cisr ICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgaW50ICpm ZHM7CisrICAgICAgICB9IHBpcGUobV9waXBlZmQpOworKworKyAgICAgICAgLy8gTWFrZSB0aGUg bWFpbiB0aHJlYWQgY2FsbCB3bF9wcmVwYXJlX3JlYWQoKSwgZGlzcGF0Y2ggdGhlIHBlbmRpbmcg bWVzc2FnZXMgYW5kIGZsdXNoIHRoZQorKyAgICAgICAgLy8gb3V0Ym91bmQgb25lcy4gV2FpdCB1 bnRpbCBpdCdzIGRvbmUgYmVmb3JlIHByb2NlZWRpbmcsIHVubGVzcyB3ZSdyZSB0b2xkIHRvIHF1 aXQuCisrICAgICAgICB3aGlsZSAod2FpdEZvclJlYWRpbmcoKSkgeworKyAgICAgICAgICAgIHBv bGxmZCBmZHNbMl0gPSB7IHsgbV9mZCwgUE9MTElOLCAwIH0sIHsgbV9waXBlZmRbMF0sIFBPTExJ TiwgMCB9IH07CisrICAgICAgICAgICAgcG9sbChmZHMsIDIsIC0xKTsKKysKKysgICAgICAgICAg ICBpZiAoZmRzWzFdLnJldmVudHMgJiBQT0xMSU4pIHsKKysgICAgICAgICAgICAgICAgLy8gd2Ug ZG9uJ3QgcmVhbGx5IGNhcmUgdG8gcmVhZCB0aGUgYnl0ZSB0aGF0IHdhcyB3cml0dGVuIGhlcmUg c2luY2Ugd2UncmUgY2xvc2luZyBkb3duCisrICAgICAgICAgICAgICAgIHdsX2Rpc3BsYXlfY2Fu Y2VsX3JlYWQobV93bGRpc3BsYXkpOworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAg ICAgICB9CisrCisrICAgICAgICAgICAgaWYgKGZkc1swXS5yZXZlbnRzICYgUE9MTElOKQorKyAg ICAgICAgICAgICAgICB3bF9kaXNwbGF5X3JlYWRfZXZlbnRzKG1fd2xkaXNwbGF5KTsKKysgICAg ICAgICAgICAgICAgLy8gVGhlIHBvbGxsIHdhcyBzdWNjZXNmdWxsIGFuZCB0aGUgZXZlbnQgdGhy ZWFkIGRpZCB0aGUgd2xfZGlzcGxheV9yZWFkX2V2ZW50cygpLiBPbiB0aGUgbmV4dCBpdGVyYXRp b24gb2YgdGhlIGxvb3AKKysgICAgICAgICAgICAgICAgLy8gdGhlIGV2ZW50IHNlbnQgdG8gdGhl IG1haW4gdGhyZWFkIHdpbGwgY2F1c2UgaXQgdG8gZGlzcGF0Y2ggdGhlIG1lc3NhZ2VzIGp1c3Qg cmVhZCwgdW5sZXNzIHRoZSBsb29wIGV4aXRzIGluIHdoaWNoCisrICAgICAgICAgICAgICAgIC8v IGNhc2Ugd2UgZG9uJ3QgY2FyZSBhbnltb3JlIGFib3V0IHRoZW0uCisrICAgICAgICAgICAgZWxz ZQorKyAgICAgICAgICAgICAgICB3bF9kaXNwbGF5X2NhbmNlbF9yZWFkKG1fd2xkaXNwbGF5KTsK KysgICAgICAgIH0KKysgICAgfQorKworK3ByaXZhdGU6CisrICAgIGJvb2wgd2FpdEZvclJlYWRp bmcoKQorKyAgICB7CisrICAgICAgICBRX0FTU0VSVChRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCkg PT0gdGhpcyk7CisrCisrICAgICAgICBtX3JlYWRpbmcuc3RvcmVSZWxlYXNlKGZhbHNlKTsKKysK KysgICAgICAgIGlmIChtX21vZGUgPT0gU2VsZkRpc3BhdGNoKSB7CisrICAgICAgICAgICAgcmVh ZEFuZERpc3BhdGNoRXZlbnRzKCk7CisrICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgIFFf RU1JVCBuZWVkUmVhZEFuZERpc3BhdGNoKCk7CisrCisrICAgICAgICAgICAgUU11dGV4TG9ja2Vy IGxvY2soJm1fbXV0ZXgpOworKyAgICAgICAgICAgIC8vIG1fcmVhZGluZyBtaWdodCBiZSBzZXQg ZnJvbSBvdXIgZW1pdCBvciBzb21lIG90aGVyIGludm9jYXRpb24gb2YKKysgICAgICAgICAgICAv LyByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKS4KKysgICAgICAgICAgICB3aGlsZSAoIW1fcmVhZGlu Zy5sb2FkUmVsYXhlZCgpICYmICFtX3F1aXR0aW5nKQorKyAgICAgICAgICAgICAgICBtX2NvbmQu d2FpdCgmbV9tdXRleCk7CisrICAgICAgICB9CisrCisrICAgICAgICByZXR1cm4gIW1fcXVpdHRp bmc7CisrICAgIH0KKysKKysgICAgaW50IGRpc3BhdGNoUXVldWVQZW5kaW5nKCkKKysgICAgewor KyAgICAgICAgaWYgKG1fd2xldnF1ZXVlKQorKyAgICAgICAgICAgIHJldHVybiB3bF9kaXNwbGF5 X2Rpc3BhdGNoX3F1ZXVlX3BlbmRpbmcobV93bGRpc3BsYXksIG1fd2xldnF1ZXVlKTsKKysgICAg ICAgIGVsc2UKKysgICAgICAgICAgICByZXR1cm4gd2xfZGlzcGxheV9kaXNwYXRjaF9wZW5kaW5n KG1fd2xkaXNwbGF5KTsKKysgICAgfQorKworKyAgICBpbnQgcHJlcGFyZVJlYWRRdWV1ZSgpCisr ICAgIHsKKysgICAgICAgIGlmIChtX3dsZXZxdWV1ZSkKKysgICAgICAgICAgICByZXR1cm4gd2xf ZGlzcGxheV9wcmVwYXJlX3JlYWRfcXVldWUobV93bGRpc3BsYXksIG1fd2xldnF1ZXVlKTsKKysg ICAgICAgIGVsc2UKKysgICAgICAgICAgICByZXR1cm4gd2xfZGlzcGxheV9wcmVwYXJlX3JlYWQo bV93bGRpc3BsYXkpOworKyAgICB9CisrCisrICAgIGludCBtX2ZkOworKyAgICBpbnQgbV9waXBl ZmRbMl07CisrICAgIHdsX2Rpc3BsYXkgKm1fd2xkaXNwbGF5OworKyAgICB3bF9ldmVudF9xdWV1 ZSAqbV93bGV2cXVldWU7CisrICAgIE9wZXJhdGluZ01vZGUgbV9tb2RlOworKworKyAgICAvKiBD b25jdXJyZW5jeSBub3RlIHdoZW4gb3BlcmF0aW5nIGluIEVtaXRUb0Rpc3BhdGNoIG1vZGU6Cisr ICAgICAqIG1fcmVhZGluZyBpcyBzZXQgdG8gZmFsc2UgaW5zaWRlIGV2ZW50IHRocmVhZCdzIHdh aXRGb3JSZWFkaW5nKCksIGFuZCBpcworKyAgICAgKiBzZXQgdG8gdHJ1ZSBpbnNpZGUgbWFpbiB0 aHJlYWQncyByZWFkQW5kRGlzcGF0Y2hFdmVudHMoKS4KKysgICAgICogVGhlIGxvY2sgaXMgbm90 IHRha2VuIHdoZW4gc2V0dGluZyBtX3JlYWRpbmcgdG8gZmFsc2UsIGFzIHRoZSBtYWluIHRocmVh ZAorKyAgICAgKiBpcyBub3QgYWN0aXZlbHkgd2FpdGluZyBmb3IgaXQgdG8gdHVybiBmYWxzZS4g SG93ZXZlciwgdGhlIGxvY2sgaXMgdGFrZW4KKysgICAgICogaW5zaWRlIHJlYWRBbmREaXNwYXRj aEV2ZW50cygpIGJlZm9yZSBzZXR0aW5nIG1fcmVhZGluZyB0byB0cnVlLAorKyAgICAgKiBhcyB0 aGUgZXZlbnQgdGhyZWFkIGlzIGFjdGl2ZWx5IHdhaXRpbmcgZm9yIGl0IHVuZGVyIHRoZSB3YWl0 IGNvbmRpdGlvbi4KKysgICAgICovCisrCisrICAgIFFBdG9taWNJbnRlZ2VyPGJvb2w+IG1fcmVh ZGluZzsKKysgICAgYm9vbCBtX3F1aXR0aW5nOworKyAgICBRTXV0ZXggbV9tdXRleDsKKysgICAg UVdhaXRDb25kaXRpb24gbV9jb25kOworK307CisrCisgUV9MT0dHSU5HX0NBVEVHT1JZKGxjUXBh V2F5bGFuZCwgInF0LnFwYS53YXlsYW5kIik7IC8vIGZvciBnZW5lcmFsICh1bmNhdGVnb3JpemVk KSBXYXlsYW5kIHBsYXRmb3JtIGxvZ2dpbmcKKyAKKyBzdHJ1Y3Qgd2xfc3VyZmFjZSAqUVdheWxh bmREaXNwbGF5OjpjcmVhdGVTdXJmYWNlKHZvaWQgKmhhbmRsZSkKK0BAIC0xNTgsMTcgKzM1MSwx NiBAQCBRV2F5bGFuZERpc3BsYXk6OlFXYXlsYW5kRGlzcGxheShRV2F5bGFuZEludGVncmF0aW9u ICp3YXlsYW5kSW50ZWdyYXRpb24pCisgICAgIGlmICghbVhrYkNvbnRleHQpCisgICAgICAgICBx Q1dhcm5pbmcobGNRcGFXYXlsYW5kLCAiZmFpbGVkIHRvIGNyZWF0ZSB4a2IgY29udGV4dCIpOwor ICNlbmRpZgorLQorLSAgICBmb3JjZVJvdW5kVHJpcCgpOworLQorLSAgICBpZiAoIW1XYWl0aW5n U2NyZWVucy5pc0VtcHR5KCkpIHsKKy0gICAgICAgIC8vIEdpdmUgd2xfb3V0cHV0LmRvbmUgYW5k IHp4ZGdfb3V0cHV0X3YxLmRvbmUgZXZlbnRzIGEgY2hhbmNlIHRvIGFycml2ZQorLSAgICAgICAg Zm9yY2VSb3VuZFRyaXAoKTsKKy0gICAgfQorIH0KKyAKKyBRV2F5bGFuZERpc3BsYXk6On5RV2F5 bGFuZERpc3BsYXkodm9pZCkKKyB7CisrICAgIGlmIChtX2V2ZW50VGhyZWFkKQorKyAgICAgICAg bV9ldmVudFRocmVhZC0+c3RvcCgpOworKworKyAgICBpZiAobV9mcmFtZUV2ZW50UXVldWVUaHJl YWQpCisrICAgICAgICBtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZC0+c3RvcCgpOworKworICAgICBp ZiAobVN5bmNDYWxsYmFjaykKKyAgICAgICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3kobVN5bmNDYWxs YmFjayk7CisgCitAQCAtMTg3LDYgKzM3OSwyMSBAQCBRV2F5bGFuZERpc3BsYXk6On5RV2F5bGFu ZERpc3BsYXkodm9pZCkKKyAjZW5kaWYKKyAgICAgaWYgKG1EaXNwbGF5KQorICAgICAgICAgd2xf ZGlzcGxheV9kaXNjb25uZWN0KG1EaXNwbGF5KTsKKysKKysgICAgaWYgKG1fZnJhbWVFdmVudFF1 ZXVlKQorKyAgICAgICAgd2xfZXZlbnRfcXVldWVfZGVzdHJveShtX2ZyYW1lRXZlbnRRdWV1ZSk7 CisrfQorKworKy8vIFN0ZXBzIHdoaWNoIGlzIGNhbGxlZCBqdXN0IGFmdGVyIGNvbnN0cnVjdG9y LiBUaGlzIHNlcGFyYXRlcyByZWdpc3RyeV9nbG9iYWwoKSBvdXQgb2YgdGhlIGNvbnN0cnVjdG9y CisrLy8gc28gdGhhdCBmYWN0b3J5IGZ1bmN0aW9ucyBpbiBpbnRlZ3JhdGlvbiBjYW4gYmUgb3Zl cnJpZGRlbi4KKyt2b2lkIFFXYXlsYW5kRGlzcGxheTo6aW5pdGlhbGl6ZSgpCisreworKyAgICBm b3JjZVJvdW5kVHJpcCgpOworKworKyAgICBpZiAoIW1XYWl0aW5nU2NyZWVucy5pc0VtcHR5KCkp IHsKKysgICAgICAgIC8vIEdpdmUgd2xfb3V0cHV0LmRvbmUgYW5kIHp4ZGdfb3V0cHV0X3YxLmRv bmUgZXZlbnRzIGEgY2hhbmNlIHRvIGFycml2ZQorKyAgICAgICAgZm9yY2VSb3VuZFRyaXAoKTsK KysgICAgfQorIH0KKyAKKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6ZW5zdXJlU2NyZWVuKCkKK0BA IC0yMDMsOTggKzQxMCwzNyBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6ZW5zdXJlU2NyZWVuKCkK KyAKKyB2b2lkIFFXYXlsYW5kRGlzcGxheTo6Y2hlY2tFcnJvcigpIGNvbnN0CisgeworLSAgICBp bnQgZWNvZGUgPSB3bF9kaXNwbGF5X2dldF9lcnJvcihtRGlzcGxheSk7CistICAgIGlmICgoZWNv ZGUgPT0gRVBJUEUgfHwgZWNvZGUgPT0gRUNPTk5SRVNFVCkpIHsKKy0gICAgICAgIC8vIHNwZWNp YWwgY2FzZSB0aGlzIHRvIHByb3ZpZGUgYSBuaWNlciBlcnJvcgorLSAgICAgICAgcVdhcm5pbmco IlRoZSBXYXlsYW5kIGNvbm5lY3Rpb24gYnJva2UuIERpZCB0aGUgV2F5bGFuZCBjb21wb3NpdG9y IGRpZT8iKTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIHFXYXJuaW5nKCJUaGUgV2F5bGFuZCBj b25uZWN0aW9uIGV4cGVyaWVuY2VkIGEgZmF0YWwgZXJyb3I6ICVzIiwgc3RyZXJyb3IoZWNvZGUp KTsKKy0gICAgfQorLSAgICBfZXhpdCgxKTsKKysgICAgY2hlY2tXYXlsYW5kRXJyb3IobURpc3Bs YXkpOworIH0KKyAKKysvLyBDYWxsZWQgaW4gbWFpbiB0aHJlYWQsIGVpdGhlciBmcm9tIHF1ZXVl ZCBzaWduYWwgb3IgZGlyZWN0bHkuCisgdm9pZCBRV2F5bGFuZERpc3BsYXk6OmZsdXNoUmVxdWVz dHMoKQorIHsKKy0gICAgaWYgKHdsX2Rpc3BsYXlfcHJlcGFyZV9yZWFkKG1EaXNwbGF5KSA9PSAw KSB7CistICAgICAgICB3bF9kaXNwbGF5X3JlYWRfZXZlbnRzKG1EaXNwbGF5KTsKKy0gICAgfQor LQorLSAgICBpZiAod2xfZGlzcGxheV9kaXNwYXRjaF9wZW5kaW5nKG1EaXNwbGF5KSA8IDApCist ICAgICAgICBjaGVja0Vycm9yKCk7CistCistICAgIHsKKy0gICAgICAgIFFSZWFkTG9ja2VyIGxv Y2tlcigmbV9mcmFtZVF1ZXVlTG9jayk7CistICAgICAgICBmb3IgKGNvbnN0IEZyYW1lUXVldWUg JnEgOiBtRXh0ZXJuYWxRdWV1ZXMpIHsKKy0gICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9ja2Vy KHEubXV0ZXgpOworLSAgICAgICAgICAgIHdoaWxlICh3bF9kaXNwbGF5X3ByZXBhcmVfcmVhZF9x dWV1ZShtRGlzcGxheSwgcS5xdWV1ZSkgIT0gMCkKKy0gICAgICAgICAgICAgICAgd2xfZGlzcGxh eV9kaXNwYXRjaF9xdWV1ZV9wZW5kaW5nKG1EaXNwbGF5LCBxLnF1ZXVlKTsKKy0gICAgICAgICAg ICB3bF9kaXNwbGF5X3JlYWRfZXZlbnRzKG1EaXNwbGF5KTsKKy0gICAgICAgICAgICB3bF9kaXNw bGF5X2Rpc3BhdGNoX3F1ZXVlX3BlbmRpbmcobURpc3BsYXksIHEucXVldWUpOworLSAgICAgICAg fQorLSAgICB9CistCistICAgIHdsX2Rpc3BsYXlfZmx1c2gobURpc3BsYXkpOworLX0KKy0KKy12 b2lkIFFXYXlsYW5kRGlzcGxheTo6YmxvY2tpbmdSZWFkRXZlbnRzKCkKKy17CistICAgIGlmICh3 bF9kaXNwbGF5X2Rpc3BhdGNoKG1EaXNwbGF5KSA8IDApCistICAgICAgICBjaGVja0Vycm9yKCk7 CistfQorLQorLXZvaWQgUVdheWxhbmREaXNwbGF5OjpkZXN0cm95RnJhbWVRdWV1ZShjb25zdCBR V2F5bGFuZERpc3BsYXk6OkZyYW1lUXVldWUgJnEpCisteworLSAgICBRV3JpdGVMb2NrZXIgbG9j a2VyKCZtX2ZyYW1lUXVldWVMb2NrKTsKKy0gICAgYXV0byBpdCA9IHN0ZDo6ZmluZF9pZihtRXh0 ZXJuYWxRdWV1ZXMuYmVnaW4oKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBtRXh0ZXJu YWxRdWV1ZXMuZW5kKCksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgWyZxXSAoY29uc3Qg UVdheWxhbmREaXNwbGF5OjpGcmFtZVF1ZXVlICZvdGhlcil7IHJldHVybiBvdGhlci5xdWV1ZSA9 PSBxLnF1ZXVlOyB9KTsKKy0gICAgUV9BU1NFUlQoaXQgIT0gbUV4dGVybmFsUXVldWVzLmVuZCgp KTsKKy0gICAgbUV4dGVybmFsUXVldWVzLmVyYXNlKGl0KTsKKy0gICAgaWYgKHEucXVldWUgIT0g bnVsbHB0cikKKy0gICAgICAgIHdsX2V2ZW50X3F1ZXVlX2Rlc3Ryb3kocS5xdWV1ZSk7CistICAg IGRlbGV0ZSBxLm11dGV4OworKyAgICBtX2V2ZW50VGhyZWFkLT5yZWFkQW5kRGlzcGF0Y2hFdmVu dHMoKTsKKyB9CisgCistUVdheWxhbmREaXNwbGF5OjpGcmFtZVF1ZXVlIFFXYXlsYW5kRGlzcGxh eTo6Y3JlYXRlRnJhbWVRdWV1ZSgpCisrLy8gV2UgaGF2ZSB0byB3YWl0IHVudGlsIHdlIGhhdmUg YW4gZXZlbnREaXNwYXRjaGVyIGJlZm9yZSBjcmVhdGluZyB0aGUgZXZlbnRUaHJlYWQsCisrLy8g b3RoZXJ3aXNlIGZvcmNlUm91bmRUcmlwKCkgbWF5IGJsb2NrIGluc2lkZSBfZXZlbnRzX3JlYWQo KSBiZWNhdXNlIGV2ZW50VGhyZWFkIGlzCisrLy8gcG9sbGluZy4KKyt2b2lkIFFXYXlsYW5kRGlz cGxheTo6aW5pdEV2ZW50VGhyZWFkKCkKKyB7CistICAgIFFXcml0ZUxvY2tlciBsb2NrZXIoJm1f ZnJhbWVRdWV1ZUxvY2spOworLSAgICBGcmFtZVF1ZXVlIHF7Y3JlYXRlRXZlbnRRdWV1ZSgpfTsK Ky0gICAgbUV4dGVybmFsUXVldWVzLmFwcGVuZChxKTsKKy0gICAgcmV0dXJuIHE7CistfQorKyAg ICBtX2V2ZW50VGhyZWFkLnJlc2V0KAorKyAgICAgICAgICAgIG5ldyBFdmVudFRocmVhZChtRGlz cGxheSwgLyogZGVmYXVsdCBxdWV1ZSAqLyBudWxscHRyLCBFdmVudFRocmVhZDo6RW1pdFRvRGlz cGF0Y2gpKTsKKysgICAgY29ubmVjdChtX2V2ZW50VGhyZWFkLmdldCgpLCAmRXZlbnRUaHJlYWQ6 Om5lZWRSZWFkQW5kRGlzcGF0Y2gsIHRoaXMsCisrICAgICAgICAgICAgJlFXYXlsYW5kRGlzcGxh eTo6Zmx1c2hSZXF1ZXN0cywgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworKyAgICBtX2V2ZW50VGhy ZWFkLT5zdGFydCgpOworIAorLXdsX2V2ZW50X3F1ZXVlICpRV2F5bGFuZERpc3BsYXk6OmNyZWF0 ZUV2ZW50UXVldWUoKQorLXsKKy0gICAgcmV0dXJuIHdsX2Rpc3BsYXlfY3JlYXRlX3F1ZXVlKG1E aXNwbGF5KTsKKysgICAgLy8gd2xfZGlzcGxheV9kaXNjb25uZWN0KCkgZnJlZSB0aGlzLgorKyAg ICBtX2ZyYW1lRXZlbnRRdWV1ZSA9IHdsX2Rpc3BsYXlfY3JlYXRlX3F1ZXVlKG1EaXNwbGF5KTsK KysgICAgbV9mcmFtZUV2ZW50UXVldWVUaHJlYWQucmVzZXQoCisrICAgICAgICAgICAgbmV3IEV2 ZW50VGhyZWFkKG1EaXNwbGF5LCBtX2ZyYW1lRXZlbnRRdWV1ZSwgRXZlbnRUaHJlYWQ6OlNlbGZE aXNwYXRjaCkpOworKyAgICBtX2ZyYW1lRXZlbnRRdWV1ZVRocmVhZC0+c3RhcnQoKTsKKyB9Cisg Cistdm9pZCBRV2F5bGFuZERpc3BsYXk6OmRpc3BhdGNoUXVldWVXaGlsZSh3bF9ldmVudF9xdWV1 ZSAqcXVldWUsIHN0ZDo6ZnVuY3Rpb248Ym9vbCAoKT4gY29uZGl0aW9uLCBpbnQgdGltZW91dCkK Kyt2b2lkIFFXYXlsYW5kRGlzcGxheTo6YmxvY2tpbmdSZWFkRXZlbnRzKCkKKyB7CistICAgIGlm ICghY29uZGl0aW9uKCkpCistICAgICAgICByZXR1cm47CistCistICAgIFFFbGFwc2VkVGltZXIg dGltZXI7CistICAgIHRpbWVyLnN0YXJ0KCk7CistICAgIHN0cnVjdCBwb2xsZmQgcEZkID0gcXRf bWFrZV9wb2xsZmQod2xfZGlzcGxheV9nZXRfZmQobURpc3BsYXkpLCBQT0xMSU4pOworLSAgICB3 aGlsZSAodGltZW91dCA9PSAtMSB8fCB0aW1lci5lbGFwc2VkKCkgPCB0aW1lb3V0KSB7CistICAg ICAgICB3aGlsZSAod2xfZGlzcGxheV9wcmVwYXJlX3JlYWRfcXVldWUobURpc3BsYXksIHF1ZXVl KSAhPSAwKQorLSAgICAgICAgICAgIHdsX2Rpc3BsYXlfZGlzcGF0Y2hfcXVldWVfcGVuZGluZyht RGlzcGxheSwgcXVldWUpOworLQorLSAgICAgICAgd2xfZGlzcGxheV9mbHVzaChtRGlzcGxheSk7 CistCistICAgICAgICBjb25zdCBpbnQgcmVtYWluaW5nID0gcU1heCh0aW1lb3V0IC0gdGltZXIu ZWxhcHNlZCgpLCAwbGwpOworLSAgICAgICAgY29uc3QgaW50IHBvbGxUaW1lb3V0ID0gdGltZW91 dCA9PSAtMSA/IC0xIDogcmVtYWluaW5nOworLSAgICAgICAgaWYgKHF0X3BvbGxfbXNlY3MoJnBG ZCwgMSwgcG9sbFRpbWVvdXQpID4gMCkKKy0gICAgICAgICAgICB3bF9kaXNwbGF5X3JlYWRfZXZl bnRzKG1EaXNwbGF5KTsKKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAgICB3bF9kaXNwbGF5X2Nh bmNlbF9yZWFkKG1EaXNwbGF5KTsKKy0KKy0gICAgICAgIGlmICh3bF9kaXNwbGF5X2Rpc3BhdGNo X3F1ZXVlX3BlbmRpbmcobURpc3BsYXksIHF1ZXVlKSA8IDApCistICAgICAgICAgICAgY2hlY2tF cnJvcigpOworLQorLSAgICAgICAgaWYgKCFjb25kaXRpb24oKSkKKy0gICAgICAgICAgICBicmVh azsKKy0gICAgfQorKyAgICBpZiAod2xfZGlzcGxheV9kaXNwYXRjaChtRGlzcGxheSkgPCAwKQor KyAgICAgICAgY2hlY2tXYXlsYW5kRXJyb3IobURpc3BsYXkpOworIH0KKyAKKyBRV2F5bGFuZFNj cmVlbiAqUVdheWxhbmREaXNwbGF5OjpzY3JlZW5Gb3JPdXRwdXQoc3RydWN0IHdsX291dHB1dCAq b3V0cHV0KSBjb25zdAorQEAgLTM0NSw3ICs0OTEsNyBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6 cmVnaXN0cnlfZ2xvYmFsKHVpbnQzMl90IGlkLCBjb25zdCBRU3RyaW5nICZpbnRlcmZhY2UsIHVp bgorICAgICBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ3bF9vdXRwdXQiKSkgewor ICAgICAgICAgbVdhaXRpbmdTY3JlZW5zIDw8IG5ldyBRV2F5bGFuZFNjcmVlbih0aGlzLCB2ZXJz aW9uLCBpZCk7CisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNlID09IFFTdHJpbmdMaXRlcmFsKCJ3 bF9jb21wb3NpdG9yIikpIHsKKy0gICAgICAgIG1Db21wb3NpdG9yVmVyc2lvbiA9IHFNaW4oKGlu dCl2ZXJzaW9uLCAzKTsKKysgICAgICAgIG1Db21wb3NpdG9yVmVyc2lvbiA9IHFNaW4oKGludCl2 ZXJzaW9uLCA0KTsKKyAgICAgICAgIG1Db21wb3NpdG9yLmluaXQocmVnaXN0cnksIGlkLCBtQ29t cG9zaXRvclZlcnNpb24pOworICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0 ZXJhbCgid2xfc2htIikpIHsKKyAgICAgICAgIG1TaG0ucmVzZXQobmV3IFFXYXlsYW5kU2htKHRo aXMsIHZlcnNpb24sIGlkKSk7CitAQCAtMzU0LDcgKzUwMCw3IEBAIHZvaWQgUVdheWxhbmREaXNw bGF5OjpyZWdpc3RyeV9nbG9iYWwodWludDMyX3QgaWQsIGNvbnN0IFFTdHJpbmcgJmludGVyZmFj ZSwgdWluCisgICAgICAgICBtSW5wdXREZXZpY2VzLmFwcGVuZChpbnB1dERldmljZSk7CisgI2lm IFFUX0NPTkZJRyh3YXlsYW5kX2RhdGFkZXZpY2UpCisgICAgIH0gZWxzZSBpZiAoaW50ZXJmYWNl ID09IFFTdHJpbmdMaXRlcmFsKCJ3bF9kYXRhX2RldmljZV9tYW5hZ2VyIikpIHsKKy0gICAgICAg IG1EbmRTZWxlY3Rpb25IYW5kbGVyLnJlc2V0KG5ldyBRV2F5bGFuZERhdGFEZXZpY2VNYW5hZ2Vy KHRoaXMsIGlkKSk7CisrICAgICAgICBtRG5kU2VsZWN0aW9uSGFuZGxlci5yZXNldChuZXcgUVdh eWxhbmREYXRhRGV2aWNlTWFuYWdlcih0aGlzLCB2ZXJzaW9uLCBpZCkpOworICNlbmRpZgorICAg ICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3RyaW5nTGl0ZXJhbCgicXRfc3VyZmFjZV9leHRl bnNpb24iKSkgeworICAgICAgICAgbVdpbmRvd0V4dGVuc2lvbi5yZXNldChuZXcgUXRXYXlsYW5k OjpxdF9zdXJmYWNlX2V4dGVuc2lvbihyZWdpc3RyeSwgaWQsIDEpKTsKK0BAIC0zNjksNiArNTE1 LDggQEAgdm9pZCBRV2F5bGFuZERpc3BsYXk6OnJlZ2lzdHJ5X2dsb2JhbCh1aW50MzJfdCBpZCwg Y29uc3QgUVN0cmluZyAmaW50ZXJmYWNlLCB1aW4KKyAjaWYgUVRfQ09ORklHKHdheWxhbmRfY2xp ZW50X3ByaW1hcnlfc2VsZWN0aW9uKQorICAgICB9IGVsc2UgaWYgKGludGVyZmFjZSA9PSBRU3Ry aW5nTGl0ZXJhbCgiendwX3ByaW1hcnlfc2VsZWN0aW9uX2RldmljZV9tYW5hZ2VyX3YxIikpIHsK KyAgICAgICAgIG1QcmltYXJ5U2VsZWN0aW9uTWFuYWdlci5yZXNldChuZXcgUVdheWxhbmRQcmlt YXJ5U2VsZWN0aW9uRGV2aWNlTWFuYWdlclYxKHRoaXMsIGlkLCAxKSk7CisrICAgICAgICBmb3Ig KFFXYXlsYW5kSW5wdXREZXZpY2UgKmlucHV0RGV2aWNlIDogcUFzQ29uc3QobUlucHV0RGV2aWNl cykpCisrICAgICAgICAgICAgaW5wdXREZXZpY2UtPnNldFByaW1hcnlTZWxlY3Rpb25EZXZpY2Uo bVByaW1hcnlTZWxlY3Rpb25NYW5hZ2VyLT5jcmVhdGVEZXZpY2UoaW5wdXREZXZpY2UpKTsKKyAj ZW5kaWYKKyAgICAgfSBlbHNlIGlmIChpbnRlcmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoInp3cF90 ZXh0X2lucHV0X21hbmFnZXJfdjIiKSAmJiAhbUNsaWVudFNpZGVJbnB1dENvbnRleHRSZXF1ZXN0 ZWQpIHsKKyAgICAgICAgIG1UZXh0SW5wdXRNYW5hZ2VyLnJlc2V0KG5ldyBRdFdheWxhbmQ6Onp3 cF90ZXh0X2lucHV0X21hbmFnZXJfdjIocmVnaXN0cnksIGlkLCAxKSk7CitAQCAtNDI3LDYgKzU3 NSwxMyBAQCB2b2lkIFFXYXlsYW5kRGlzcGxheTo6cmVnaXN0cnlfZ2xvYmFsX3JlbW92ZSh1aW50 MzJfdCBpZCkKKyAgICAgICAgICAgICAgICAgICAgIGlucHV0RGV2aWNlLT5zZXRUZXh0SW5wdXQo bnVsbHB0cik7CisgICAgICAgICAgICAgICAgIG1XYXlsYW5kSW50ZWdyYXRpb24tPnJlY29uZmln dXJlSW5wdXRDb250ZXh0KCk7CisgICAgICAgICAgICAgfQorKyNpZiBRVF9DT05GSUcod2F5bGFu ZF9jbGllbnRfcHJpbWFyeV9zZWxlY3Rpb24pCisrICAgICAgICAgICAgaWYgKGdsb2JhbC5pbnRl cmZhY2UgPT0gUVN0cmluZ0xpdGVyYWwoInp3cF9wcmltYXJ5X3NlbGVjdGlvbl9kZXZpY2VfbWFu YWdlcl92MSIpKSB7CisrICAgICAgICAgICAgICAgIG1QcmltYXJ5U2VsZWN0aW9uTWFuYWdlci5y ZXNldCgpOworKyAgICAgICAgICAgICAgICBmb3IgKFFXYXlsYW5kSW5wdXREZXZpY2UgKmlucHV0 RGV2aWNlIDogcUFzQ29uc3QobUlucHV0RGV2aWNlcykpCisrICAgICAgICAgICAgICAgICAgICBp bnB1dERldmljZS0+c2V0UHJpbWFyeVNlbGVjdGlvbkRldmljZShudWxscHRyKTsKKysgICAgICAg ICAgICB9CisrI2VuZGlmCisgICAgICAgICAgICAgbUdsb2JhbHMucmVtb3ZlQXQoaSk7CisgICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CitAQCAtNDUyLDkgKzYwNywxMCBAQCB2b2lkIFFX YXlsYW5kRGlzcGxheTo6YWRkUmVnaXN0cnlMaXN0ZW5lcihSZWdpc3RyeUxpc3RlbmVyIGxpc3Rl bmVyLCB2b2lkICpkYXRhKQorIAorIHZvaWQgUVdheWxhbmREaXNwbGF5OjpyZW1vdmVMaXN0ZW5l cihSZWdpc3RyeUxpc3RlbmVyIGxpc3RlbmVyLCB2b2lkICpkYXRhKQorIHsKKy0gICAgc3RkOjpy ZW1vdmVfaWYobVJlZ2lzdHJ5TGlzdGVuZXJzLmJlZ2luKCksIG1SZWdpc3RyeUxpc3RlbmVycy5l bmQoKSwgWz1dKExpc3RlbmVyIGwpeworKyAgICBhdXRvIGl0ZXIgPSBzdGQ6OnJlbW92ZV9pZiht UmVnaXN0cnlMaXN0ZW5lcnMuYmVnaW4oKSwgbVJlZ2lzdHJ5TGlzdGVuZXJzLmVuZCgpLCBbPV0o TGlzdGVuZXIgbCl7CisgICAgICAgICByZXR1cm4gKGwubGlzdGVuZXIgPT0gbGlzdGVuZXIgJiYg bC5kYXRhID09IGRhdGEpOworICAgICB9KTsKKysgICAgbVJlZ2lzdHJ5TGlzdGVuZXJzLmVyYXNl KGl0ZXIsIG1SZWdpc3RyeUxpc3RlbmVycy5lbmQoKSk7CisgfQorIAorIHVpbnQzMl90IFFXYXls YW5kRGlzcGxheTo6Y3VycmVudFRpbWVNaWxsaXNlYygpCitAQCAtNDY3LDUwICs2MjMsOSBAQCB1 aW50MzJfdCBRV2F5bGFuZERpc3BsYXk6OmN1cnJlbnRUaW1lTWlsbGlzZWMoKQorICAgICByZXR1 cm4gMDsKKyB9CisgCistc3RhdGljIHZvaWQKKy1zeW5jX2NhbGxiYWNrKHZvaWQgKmRhdGEsIHN0 cnVjdCB3bF9jYWxsYmFjayAqY2FsbGJhY2ssIHVpbnQzMl90IHNlcmlhbCkKKy17CistICAgIFFf VU5VU0VEKHNlcmlhbCkKKy0gICAgYm9vbCAqZG9uZSA9IHN0YXRpY19jYXN0PGJvb2wgKj4oZGF0 YSk7CistCistICAgICpkb25lID0gdHJ1ZTsKKy0KKy0gICAgLy8gSWYgdGhlIHdsX2NhbGxiYWNr IGRvbmUgZXZlbnQgaXMgcmVjZWl2ZWQgYWZ0ZXIgdGhlIGNvbmRpdGlvbiBjaGVjayBpbiB0aGUg d2hpbGUgbG9vcCBpbgorLSAgICAvLyBmb3JjZVJvdW5kVHJpcCgpLCBidXQgYmVmb3JlIHRoZSBj YWxsIHRvIHByb2Nlc3NFdmVudHMsIHRoZSBjYWxsIHRvIHByb2Nlc3NFdmVudHMgbWF5IGJsb2Nr CistICAgIC8vIGZvcmV2ZXIgaWYgbm8gbW9yZSBldmVudHMgYXJlIHBvc3RlZCAoZXZlbnRob3Vn aCB0aGUgY2FsbGJhY2sgaXMgaGFuZGxlZCBpbiByZXNwb25zZSB0byB0aGUKKy0gICAgLy8gYWJv dXRUb0Jsb2NrIHNpZ25hbCkuIEhlbmNlLCB3ZSB3YWtlIHVwIHRoZSBldmVudCBkaXNwYXRjaGVy IHNvIGZvcmNlUm91bmRUcmlwIG1heSByZXR1cm4uCistICAgIC8vIChRVEJVRy02NDY5NikKKy0g ICAgaWYgKGF1dG8gKmRpc3BhdGNoZXIgPSBRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCktPmV2ZW50 RGlzcGF0Y2hlcigpKQorLSAgICAgICAgZGlzcGF0Y2hlci0+d2FrZVVwKCk7CistCistICAgIHds X2NhbGxiYWNrX2Rlc3Ryb3koY2FsbGJhY2spOworLX0KKy0KKy1zdGF0aWMgY29uc3Qgc3RydWN0 IHdsX2NhbGxiYWNrX2xpc3RlbmVyIHN5bmNfbGlzdGVuZXIgPSB7CistICAgIHN5bmNfY2FsbGJh Y2sKKy19OworLQorIHZvaWQgUVdheWxhbmREaXNwbGF5Ojpmb3JjZVJvdW5kVHJpcCgpCisgewor LSAgICAvLyB3bF9kaXNwbGF5X3JvdW5kdHJpcCgpIHdvcmtzIG9uIHRoZSBtYWluIHF1ZXVlIG9u bHksCistICAgIC8vIGJ1dCB3ZSB1c2UgYSBzZXBhcmF0ZSBvbmUsIHNvIGJhc2ljYWxseSByZWlt cGxlbWVudCBpdCBoZXJlCistICAgIGludCByZXQgPSAwOworLSAgICBib29sIGRvbmUgPSBmYWxz ZTsKKy0gICAgd2xfY2FsbGJhY2sgKmNhbGxiYWNrID0gd2xfZGlzcGxheV9zeW5jKG1EaXNwbGF5 KTsKKy0gICAgd2xfY2FsbGJhY2tfYWRkX2xpc3RlbmVyKGNhbGxiYWNrLCAmc3luY19saXN0ZW5l ciwgJmRvbmUpOworLSAgICBmbHVzaFJlcXVlc3RzKCk7CistICAgIGlmIChRVGhyZWFkOjpjdXJy ZW50VGhyZWFkKCktPmV2ZW50RGlzcGF0Y2hlcigpKSB7CistICAgICAgICB3aGlsZSAoIWRvbmUg JiYgcmV0ID49IDApIHsKKy0gICAgICAgICAgICBRVGhyZWFkOjpjdXJyZW50VGhyZWFkKCktPmV2 ZW50RGlzcGF0Y2hlcigpLT5wcm9jZXNzRXZlbnRzKFFFdmVudExvb3A6OldhaXRGb3JNb3JlRXZl bnRzKTsKKy0gICAgICAgICAgICByZXQgPSB3bF9kaXNwbGF5X2Rpc3BhdGNoX3BlbmRpbmcobURp c3BsYXkpOworLSAgICAgICAgfQorLSAgICB9IGVsc2UgeworLSAgICAgICAgd2hpbGUgKCFkb25l ICYmIHJldCA+PSAwKQorLSAgICAgICAgICAgIHJldCA9IHdsX2Rpc3BsYXlfZGlzcGF0Y2gobURp c3BsYXkpOworLSAgICB9CistCistICAgIGlmIChyZXQgPT0gLTEgJiYgIWRvbmUpCistICAgICAg ICB3bF9jYWxsYmFja19kZXN0cm95KGNhbGxiYWNrKTsKKysgICAgIHdsX2Rpc3BsYXlfcm91bmR0 cmlwKG1EaXNwbGF5KTsKKyB9CisgCisgYm9vbCBRV2F5bGFuZERpc3BsYXk6OnN1cHBvcnRzV2lu ZG93RGVjb3JhdGlvbigpIGNvbnN0CitAQCAtNTc0LDE0ICs2ODksMTAgQEAgdm9pZCBRV2F5bGFu ZERpc3BsYXk6OmhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kSW5wdXREZXZpY2Ug KmlucHV0RGV2aWMKKyAgICAgaWYgKG1MYXN0S2V5Ym9hcmRGb2N1cyA9PSBrZXlib2FyZEZvY3Vz KQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBpZiAobVdheWxhbmRJbnRlZ3JhdGlvbi0+bVNo ZWxsSW50ZWdyYXRpb24pIHsKKy0gICAgICAgIG1XYXlsYW5kSW50ZWdyYXRpb24tPm1TaGVsbElu dGVncmF0aW9uLT5oYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChrZXlib2FyZEZvY3VzLCBtTGFz dEtleWJvYXJkRm9jdXMpOworLSAgICB9IGVsc2UgeworLSAgICAgICAgaWYgKGtleWJvYXJkRm9j dXMpCistICAgICAgICAgICAgaGFuZGxlV2luZG93QWN0aXZhdGVkKGtleWJvYXJkRm9jdXMpOwor LSAgICAgICAgaWYgKG1MYXN0S2V5Ym9hcmRGb2N1cykKKy0gICAgICAgICAgICBoYW5kbGVXaW5k b3dEZWFjdGl2YXRlZChtTGFzdEtleWJvYXJkRm9jdXMpOworLSAgICB9CisrICAgIGlmIChrZXli b2FyZEZvY3VzKQorKyAgICAgICAgaGFuZGxlV2luZG93QWN0aXZhdGVkKGtleWJvYXJkRm9jdXMp OworKyAgICBpZiAobUxhc3RLZXlib2FyZEZvY3VzKQorKyAgICAgICAgaGFuZGxlV2luZG93RGVh Y3RpdmF0ZWQobUxhc3RLZXlib2FyZEZvY3VzKTsKKyAKKyAgICAgbUxhc3RLZXlib2FyZEZvY3Vz ID0ga2V5Ym9hcmRGb2N1czsKKyB9CitAQCAtNjAwLDYgKzcxMSwxOSBAQCB2b2lkIFFXYXlsYW5k RGlzcGxheTo6aGFuZGxlV2F5bGFuZFN5bmMoKQorICAgICBRV2luZG93ICphY3RpdmVXaW5kb3cg PSBtQWN0aXZlV2luZG93cy5lbXB0eSgpID8gbnVsbHB0ciA6IG1BY3RpdmVXaW5kb3dzLmxhc3Qo KS0+d2luZG93KCk7CisgICAgIGlmIChhY3RpdmVXaW5kb3cgIT0gUUd1aUFwcGxpY2F0aW9uOjpm b2N1c1dpbmRvdygpKQorICAgICAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlV2lu ZG93QWN0aXZhdGVkKGFjdGl2ZVdpbmRvdyk7CisrCisrICAgIGlmICghYWN0aXZlV2luZG93KSB7 CisrICAgICAgICBpZiAobGFzdElucHV0RGV2aWNlKCkpIHsKKysjaWYgUVRfQ09ORklHKGNsaXBi b2FyZCkKKysgICAgICAgICAgICBpZiAoYXV0byAqZGF0YURldmljZSA9IGxhc3RJbnB1dERldmlj ZSgpLT5kYXRhRGV2aWNlKCkpCisrICAgICAgICAgICAgICAgIGRhdGFEZXZpY2UtPmludmFsaWRh dGVTZWxlY3Rpb25PZmZlcigpOworKyNlbmRpZgorKyNpZiBRVF9DT05GSUcod2F5bGFuZF9jbGll bnRfcHJpbWFyeV9zZWxlY3Rpb24pCisrICAgICAgICAgICAgaWYgKGF1dG8gKmRldmljZSA9IGxh c3RJbnB1dERldmljZSgpLT5wcmltYXJ5U2VsZWN0aW9uRGV2aWNlKCkpCisrICAgICAgICAgICAg ICAgIGRldmljZS0+aW52YWxpZGF0ZVNlbGVjdGlvbk9mZmVyKCk7CisrI2VuZGlmCisrICAgICAg ICB9CisrICAgIH0KKyB9CisgCisgY29uc3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIgUVdheWxhbmRE aXNwbGF5OjpzeW5jQ2FsbGJhY2tMaXN0ZW5lciA9IHsKK0BAIC02MjYsNiArNzUwLDEzIEBAIFFX YXlsYW5kSW5wdXREZXZpY2UgKlFXYXlsYW5kRGlzcGxheTo6ZGVmYXVsdElucHV0RGV2aWNlKCkg Y29uc3QKKyAgICAgcmV0dXJuIG1JbnB1dERldmljZXMuaXNFbXB0eSgpID8gMCA6IG1JbnB1dERl dmljZXMuZmlyc3QoKTsKKyB9CisgCisrYm9vbCBRV2F5bGFuZERpc3BsYXk6OmlzS2V5Ym9hcmRB dmFpbGFibGUoKSBjb25zdAorK3sKKysgICAgcmV0dXJuIHN0ZDo6YW55X29mKAorKyAgICAgICAg ICAgIG1JbnB1dERldmljZXMuY29uc3RCZWdpbigpLCBtSW5wdXREZXZpY2VzLmNvbnN0RW5kKCks CisrICAgICAgICAgICAgW3RoaXNdKGNvbnN0IFFXYXlsYW5kSW5wdXREZXZpY2UgKmRldmljZSkg eyByZXR1cm4gZGV2aWNlLT5rZXlib2FyZCgpICE9IG51bGxwdHI7IH0pOworK30KKysKKyAjaWYg UVRfQ09ORklHKGN1cnNvcikKKyAKKyBRV2F5bGFuZEN1cnNvciAqUVdheWxhbmREaXNwbGF5Ojp3 YXlsYW5kQ3Vyc29yKCkKK0BAIC02NTIsNCArNzgzLDYgQEAgUVdheWxhbmRDdXJzb3JUaGVtZSAq UVdheWxhbmREaXNwbGF5Ojpsb2FkQ3Vyc29yVGhlbWUoY29uc3QgUVN0cmluZyAmbmFtZSwgaW50 IHAKKyAKKyB9IC8vIG5hbWVzcGFjZSBRdFdheWxhbmRDbGllbnQKKyAKKysjaW5jbHVkZSAicXdh eWxhbmRkaXNwbGF5Lm1vYyIKKysKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3 YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkaXNwbGF5X3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kZGlzcGxheV9wLmgKK2luZGV4IDNiMDkyYmM4Li40MmJjNjYxZCAxMDA2NDQK Ky0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheV9wLmgKKysrKyBiL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZGlzcGxheV9wLmgKK0BAIC0xMDksNiArMTA5LDcg QEAgY2xhc3MgUVdheWxhbmRTdXJmYWNlOworIGNsYXNzIFFXYXlsYW5kU2hlbGxJbnRlZ3JhdGlv bjsKKyBjbGFzcyBRV2F5bGFuZEN1cnNvcjsKKyBjbGFzcyBRV2F5bGFuZEN1cnNvclRoZW1lOwor K2NsYXNzIEV2ZW50VGhyZWFkOworIAorIHR5cGVkZWYgdm9pZCAoKlJlZ2lzdHJ5TGlzdGVuZXIp KHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHds X3JlZ2lzdHJ5ICpyZWdpc3RyeSwKK0BAIC0xMjAsMTUgKzEyMSwxMSBAQCBjbGFzcyBRX1dBWUxB TkRfQ0xJRU5UX0VYUE9SVCBRV2F5bGFuZERpc3BsYXkgOiBwdWJsaWMgUU9iamVjdCwgcHVibGlj IFF0V2F5bGFuZAorICAgICBRX09CSkVDVAorIAorIHB1YmxpYzoKKy0gICAgc3RydWN0IEZyYW1l UXVldWUgeworLSAgICAgICAgRnJhbWVRdWV1ZSh3bF9ldmVudF9xdWV1ZSAqcSA9IG51bGxwdHIp IDogcXVldWUocSksIG11dGV4KG5ldyBRTXV0ZXgpIHt9CistICAgICAgICB3bF9ldmVudF9xdWV1 ZSAqcXVldWU7CistICAgICAgICBRTXV0ZXggKm11dGV4OworLSAgICB9OworLQorICAgICBRV2F5 bGFuZERpc3BsYXkoUVdheWxhbmRJbnRlZ3JhdGlvbiAqd2F5bGFuZEludGVncmF0aW9uKTsKKyAg ICAgflFXYXlsYW5kRGlzcGxheSh2b2lkKSBvdmVycmlkZTsKKyAKKysgICAgdm9pZCBpbml0aWFs aXplKCk7CisrCisgI2lmIFFUX0NPTkZJRyh4a2Jjb21tb24pCisgICAgIHN0cnVjdCB4a2JfY29u dGV4dCAqeGtiQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1Ya2JDb250ZXh0LmdldCgpOyB9Cisg I2VuZGlmCitAQCAtMjEwLDExICsyMDcsMTEgQEAgcHVibGljOgorICAgICB2b2lkIGhhbmRsZUtl eWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kSW5wdXREZXZpY2UgKmlucHV0RGV2aWNlKTsKKyAg ICAgdm9pZCBoYW5kbGVXaW5kb3dEZXN0cm95ZWQoUVdheWxhbmRXaW5kb3cgKndpbmRvdyk7Cisg CistICAgIHdsX2V2ZW50X3F1ZXVlICpjcmVhdGVFdmVudFF1ZXVlKCk7CistICAgIEZyYW1lUXVl dWUgY3JlYXRlRnJhbWVRdWV1ZSgpOworLSAgICB2b2lkIGRlc3Ryb3lGcmFtZVF1ZXVlKGNvbnN0 IEZyYW1lUXVldWUgJnEpOworLSAgICB2b2lkIGRpc3BhdGNoUXVldWVXaGlsZSh3bF9ldmVudF9x dWV1ZSAqcXVldWUsIHN0ZDo6ZnVuY3Rpb248Ym9vbCgpPiBjb25kaXRpb24sIGludCB0aW1lb3V0 ID0gLTEpOworKyAgICB3bF9ldmVudF9xdWV1ZSAqZnJhbWVFdmVudFF1ZXVlKCkgeyByZXR1cm4g bV9mcmFtZUV2ZW50UXVldWU7IH07CisrCisrICAgIGJvb2wgaXNLZXlib2FyZEF2YWlsYWJsZSgp IGNvbnN0OworIAorKyAgICB2b2lkIGluaXRFdmVudFRocmVhZCgpOworIHB1YmxpYyBzbG90czoK KyAgICAgdm9pZCBibG9ja2luZ1JlYWRFdmVudHMoKTsKKyAgICAgdm9pZCBmbHVzaFJlcXVlc3Rz KCk7CitAQCAtMjM3LDYgKzIzNCw5IEBAIHByaXZhdGU6CisgICAgIH07CisgCisgICAgIHN0cnVj dCB3bF9kaXNwbGF5ICptRGlzcGxheSA9IG51bGxwdHI7CisrICAgIFFTY29wZWRQb2ludGVyPEV2 ZW50VGhyZWFkPiBtX2V2ZW50VGhyZWFkOworKyAgICB3bF9ldmVudF9xdWV1ZSAqbV9mcmFtZUV2 ZW50UXVldWUgPSBudWxscHRyOworKyAgICBRU2NvcGVkUG9pbnRlcjxFdmVudFRocmVhZD4gbV9m cmFtZUV2ZW50UXVldWVUaHJlYWQ7CisgICAgIFF0V2F5bGFuZDo6d2xfY29tcG9zaXRvciBtQ29t cG9zaXRvcjsKKyAgICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRTaG0+IG1TaG07CisgICAgIFFM aXN0PFFXYXlsYW5kU2NyZWVuICo+IG1XYWl0aW5nU2NyZWVuczsKK0BAIC0yNzMsMTEgKzI3Myw5 IEBAIHByaXZhdGU6CisgICAgIFFXYXlsYW5kSW5wdXREZXZpY2UgKm1MYXN0SW5wdXREZXZpY2Ug PSBudWxscHRyOworICAgICBRUG9pbnRlcjxRV2F5bGFuZFdpbmRvdz4gbUxhc3RJbnB1dFdpbmRv dzsKKyAgICAgUVBvaW50ZXI8UVdheWxhbmRXaW5kb3c+IG1MYXN0S2V5Ym9hcmRGb2N1czsKKy0g ICAgUVZlY3RvcjxRV2F5bGFuZFdpbmRvdyAqPiBtQWN0aXZlV2luZG93czsKKy0gICAgUVZlY3Rv cjxGcmFtZVF1ZXVlPiBtRXh0ZXJuYWxRdWV1ZXM7CisrICAgIFFMaXN0PFFXYXlsYW5kV2luZG93 ICo+IG1BY3RpdmVXaW5kb3dzOworICAgICBzdHJ1Y3Qgd2xfY2FsbGJhY2sgKm1TeW5jQ2FsbGJh Y2sgPSBudWxscHRyOworICAgICBzdGF0aWMgY29uc3Qgd2xfY2FsbGJhY2tfbGlzdGVuZXIgc3lu Y0NhbGxiYWNrTGlzdGVuZXI7CistICAgIFFSZWFkV3JpdGVMb2NrIG1fZnJhbWVRdWV1ZUxvY2s7 CisgCisgICAgIGJvb2wgbUNsaWVudFNpZGVJbnB1dENvbnRleHRSZXF1ZXN0ZWQgPSAhUVBsYXRm b3JtSW5wdXRDb250ZXh0RmFjdG9yeTo6cmVxdWVzdGVkKCkuaXNOdWxsKCk7CisgCitkaWZmIC0t Z2l0IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmQuY3BwIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRkbmQuY3BwCitpbmRleCA2NTM1YWExNi4uN2M1M2Y1ZmEgMTAwNjQ0 CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZC5jcHAKKysrKyBiL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kLmNwcAorQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBR V2F5bGFuZERyYWc6OnN0YXJ0RHJhZygpCisgeworICAgICBRQmFzaWNEcmFnOjpzdGFydERyYWco KTsKKyAgICAgUVdheWxhbmRXaW5kb3cgKmljb24gPSBzdGF0aWNfY2FzdDxRV2F5bGFuZFdpbmRv dyAqPihzaGFwZWRQaXhtYXBXaW5kb3coKS0+aGFuZGxlKCkpOworLSAgICBpZiAobV9kaXNwbGF5 LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+ZGF0YURldmljZSgpLT5zdGFydERyYWcoZHJhZygpLT5t aW1lRGF0YSgpLCBpY29uKSkgeworKyAgICBpZiAobV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZp Y2UoKS0+ZGF0YURldmljZSgpLT5zdGFydERyYWcoZHJhZygpLT5taW1lRGF0YSgpLCBkcmFnKCkt PnN1cHBvcnRlZEFjdGlvbnMoKSwgaWNvbikpIHsKKyAgICAgICAgIGljb24tPmFkZEF0dGFjaE9m ZnNldCgtZHJhZygpLT5ob3RTcG90KCkpOworICAgICB9IGVsc2UgeworICAgICAgICAgLy8gQ2Fu Y2VsbGluZyBpbW1lZGlhdGVseSBkb2VzIG5vdCB3b3JrLCBzaW5jZSB0aGUgZXZlbnQgbG9vcCBm b3IgUURyYWc6OmV4ZWMgaXMgc3RhcnRlZAorQEAgLTgwLDYgKzgwLDkgQEAgdm9pZCBRV2F5bGFu ZERyYWc6OmNhbmNlbCgpCisgICAgIFFCYXNpY0RyYWc6OmNhbmNlbCgpOworIAorICAgICBtX2Rp c3BsYXktPmN1cnJlbnRJbnB1dERldmljZSgpLT5kYXRhRGV2aWNlKCktPmNhbmNlbERyYWcoKTsK KysKKysgICAgaWYgKGRyYWcoKSkKKysgICAgICAgIGRyYWcoKS0+ZGVsZXRlTGF0ZXIoKTsKKyB9 CisgCisgdm9pZCBRV2F5bGFuZERyYWc6Om1vdmUoY29uc3QgUVBvaW50ICZnbG9iYWxQb3MsIFF0 OjpNb3VzZUJ1dHRvbnMgYiwgUXQ6OktleWJvYXJkTW9kaWZpZXJzIG1vZHMpCitAQCAtMTAzLDMz ICsxMDYsNDEgQEAgdm9pZCBRV2F5bGFuZERyYWc6OmVuZERyYWcoKQorICAgICBtX2Rpc3BsYXkt PmN1cnJlbnRJbnB1dERldmljZSgpLT5oYW5kbGVFbmREcmFnKCk7CisgfQorIAorLXZvaWQgUVdh eWxhbmREcmFnOjp1cGRhdGVUYXJnZXQoY29uc3QgUVN0cmluZyAmbWltZVR5cGUpCisrdm9pZCBR V2F5bGFuZERyYWc6OnNldFJlc3BvbnNlKGJvb2wgYWNjZXB0ZWQpCisgeworLSAgICBzZXRDYW5E cm9wKCFtaW1lVHlwZS5pc0VtcHR5KCkpOworLQorLSAgICBpZiAoY2FuRHJvcCgpKSB7CistICAg ICAgICB1cGRhdGVDdXJzb3IoZGVmYXVsdEFjdGlvbihkcmFnKCktPnN1cHBvcnRlZEFjdGlvbnMo KSwgbV9kaXNwbGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+bW9kaWZpZXJzKCkpKTsKKy0gICAg fSBlbHNlIHsKKy0gICAgICAgIHVwZGF0ZUN1cnNvcihRdDo6SWdub3JlQWN0aW9uKTsKKy0gICAg fQorKyAgICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIGZvciBvbGQgRGF0YURldmljZXMgd2hlcmUg dGhlIGRyYWcgYWN0aW9uIGlzIG5vdCBjb21tdW5pY2F0ZWQKKysgICAgUXQ6OkRyb3BBY3Rpb24g YWN0aW9uID0gZGVmYXVsdEFjdGlvbihkcmFnKCktPnN1cHBvcnRlZEFjdGlvbnMoKSwgbV9kaXNw bGF5LT5jdXJyZW50SW5wdXREZXZpY2UoKS0+bW9kaWZpZXJzKCkpOworKyAgICBzZXRSZXNwb25z ZShRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZShhY2NlcHRlZCwgYWN0aW9uKSk7CisgfQorIAorLXZv aWQgUVdheWxhbmREcmFnOjpzZXRSZXNwb25zZShjb25zdCBRUGxhdGZvcm1EcmFnUXRSZXNwb25z ZSAmcmVzcG9uc2UpCisrdm9pZCBRV2F5bGFuZERyYWc6OnNldFJlc3BvbnNlKGNvbnN0IFFQbGF0 Zm9ybURyb3BRdFJlc3BvbnNlICZyZXNwb25zZSkKKyB7CisgICAgIHNldENhbkRyb3AocmVzcG9u c2UuaXNBY2NlcHRlZCgpKTsKKyAKKyAgICAgaWYgKGNhbkRyb3AoKSkgeworLSAgICAgICAgdXBk YXRlQ3Vyc29yKGRlZmF1bHRBY3Rpb24oZHJhZygpLT5zdXBwb3J0ZWRBY3Rpb25zKCksIG1fZGlz cGxheS0+Y3VycmVudElucHV0RGV2aWNlKCktPm1vZGlmaWVycygpKSk7CisrICAgICAgICB1cGRh dGVDdXJzb3IocmVzcG9uc2UuYWNjZXB0ZWRBY3Rpb24oKSk7CisgICAgIH0gZWxzZSB7CisgICAg ICAgICB1cGRhdGVDdXJzb3IoUXQ6Oklnbm9yZUFjdGlvbik7CisgICAgIH0KKyB9CisgCistdm9p ZCBRV2F5bGFuZERyYWc6OmZpbmlzaERyYWcoY29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2Ug JnJlc3BvbnNlKQorK3ZvaWQgUVdheWxhbmREcmFnOjpzZXREcm9wUmVzcG9uc2UoY29uc3QgUVBs YXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKQorIHsKKyAgICAgc2V0RXhlY3V0ZWREcm9w QWN0aW9uKHJlc3BvbnNlLmFjY2VwdGVkQWN0aW9uKCkpOworK30KKysKKyt2b2lkIFFXYXlsYW5k RHJhZzo6ZmluaXNoRHJhZygpCisreworICAgICBRS2V5RXZlbnQgZXZlbnQoUUV2ZW50OjpLZXlQ cmVzcywgUXQ6OktleV9Fc2NhcGUsIFF0OjpOb01vZGlmaWVyKTsKKyAgICAgZXZlbnRGaWx0ZXIo c2hhcGVkUGl4bWFwV2luZG93KCksICZldmVudCk7CisrCisrICAgIGlmIChkcmFnKCkpCisrICAg ICAgICBkcmFnKCktPmRlbGV0ZUxhdGVyKCk7CisrfQorKworK2Jvb2wgUVdheWxhbmREcmFnOjpv d25zRHJhZ09iamVjdCgpIGNvbnN0CisreworKyAgICByZXR1cm4gdHJ1ZTsKKyB9CisgCisgfQor ZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kX3AuaCBiL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kZG5kX3AuaAoraW5kZXggNDc0ZmUyYWIuLjQ2ZjYyOWFj IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRkbmRfcC5oCisrKysg Yi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGRuZF9wLmgKK0BAIC03MSw5ICs3MSwxMCBA QCBwdWJsaWM6CisgICAgIFFXYXlsYW5kRHJhZyhRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpOwor ICAgICB+UVdheWxhbmREcmFnKCkgb3ZlcnJpZGU7CisgCistICAgIHZvaWQgdXBkYXRlVGFyZ2V0 KGNvbnN0IFFTdHJpbmcgJm1pbWVUeXBlKTsKKy0gICAgdm9pZCBzZXRSZXNwb25zZShjb25zdCBR UGxhdGZvcm1EcmFnUXRSZXNwb25zZSAmcmVzcG9uc2UpOworLSAgICB2b2lkIGZpbmlzaERyYWco Y29uc3QgUVBsYXRmb3JtRHJvcFF0UmVzcG9uc2UgJnJlc3BvbnNlKTsKKysgICAgdm9pZCBzZXRS ZXNwb25zZShib29sIGFjY2VwdGVkKTsKKysgICAgdm9pZCBzZXRSZXNwb25zZShjb25zdCBRUGxh dGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpOworKyAgICB2b2lkIHNldERyb3BSZXNwb25z ZShjb25zdCBRUGxhdGZvcm1Ecm9wUXRSZXNwb25zZSAmcmVzcG9uc2UpOworKyAgICB2b2lkIGZp bmlzaERyYWcoKTsKKyAKKyBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgc3RhcnREcmFnKCkgb3ZlcnJp ZGU7CitAQCAtODIsNiArODMsNyBAQCBwcm90ZWN0ZWQ6CisgICAgIHZvaWQgZHJvcChjb25zdCBR UG9pbnQgJmdsb2JhbFBvcywgUXQ6Ok1vdXNlQnV0dG9ucyBiLCBRdDo6S2V5Ym9hcmRNb2RpZmll cnMgbW9kcykgb3ZlcnJpZGU7CisgICAgIHZvaWQgZW5kRHJhZygpIG92ZXJyaWRlOworIAorKyAg ICBib29sIG93bnNEcmFnT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAg ICAgUVdheWxhbmREaXNwbGF5ICptX2Rpc3BsYXkgPSBudWxscHRyOworZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW5wdXRkZXZpY2UuY3BwIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRpbnB1dGRldmljZS5jcHAKK2luZGV4IDYxM2ZlODYyLi40YjkwZGU4 NCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW5wdXRkZXZpY2Uu Y3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGlucHV0ZGV2aWNlLmNwcAor QEAgLTY4NSw2ICs2ODUsMTEgQEAgcHVibGljOgorIAorIHZvaWQgUVdheWxhbmRJbnB1dERldmlj ZTo6UG9pbnRlcjo6cG9pbnRlcl9sZWF2ZSh1aW50MzJfdCB0aW1lLCBzdHJ1Y3Qgd2xfc3VyZmFj ZSAqc3VyZmFjZSkKKyB7CisrICAgIGludmFsaWRhdGVGb2N1cygpOworKyAgICBtQnV0dG9ucyA9 IFF0OjpOb0J1dHRvbjsKKysKKysgICAgbVBhcmVudC0+bVRpbWUgPSB0aW1lOworKworICAgICAv LyBUaGUgZXZlbnQgbWF5IGFycml2ZSBhZnRlciBkZXN0cm95aW5nIHRoZSB3aW5kb3csIGluZGlj YXRlZCBieQorICAgICAvLyBhIG51bGwgc3VyZmFjZS4KKyAgICAgaWYgKCFzdXJmYWNlKQorQEAg LTY5NiwxMSArNzAxLDYgQEAgdm9pZCBRV2F5bGFuZElucHV0RGV2aWNlOjpQb2ludGVyOjpwb2lu dGVyX2xlYXZlKHVpbnQzMl90IHRpbWUsIHN0cnVjdCB3bF9zdXJmYWMKKyAKKyAgICAgaWYgKCFR V2F5bGFuZFdpbmRvdzo6bW91c2VHcmFiKCkpCisgICAgICAgICBzZXRGcmFtZUV2ZW50KG5ldyBM ZWF2ZUV2ZW50KHdpbmRvdywgbVN1cmZhY2VQb3MsIG1HbG9iYWxQb3MpKTsKKy0KKy0gICAgaW52 YWxpZGF0ZUZvY3VzKCk7CistICAgIG1CdXR0b25zID0gUXQ6Ok5vQnV0dG9uOworLQorLSAgICBt UGFyZW50LT5tVGltZSA9IHRpbWU7CisgfQorIAorIGNsYXNzIE1vdGlvbkV2ZW50IDogcHVibGlj IFFXYXlsYW5kUG9pbnRlckV2ZW50CitAQCAtMTMwMCwxNCArMTMwMCw2IEBAIHZvaWQgUVdheWxh bmRJbnB1dERldmljZTo6S2V5Ym9hcmQ6OmhhbmRsZUZvY3VzRGVzdHJveWVkKCkKKyB2b2lkIFFX YXlsYW5kSW5wdXREZXZpY2U6OktleWJvYXJkOjpoYW5kbGVGb2N1c0xvc3QoKQorIHsKKyAgICAg bUZvY3VzID0gbnVsbHB0cjsKKy0jaWYgUVRfQ09ORklHKGNsaXBib2FyZCkKKy0gICAgaWYgKGF1 dG8gKmRhdGFEZXZpY2UgPSBtUGFyZW50LT5kYXRhRGV2aWNlKCkpCistICAgICAgICBkYXRhRGV2 aWNlLT5pbnZhbGlkYXRlU2VsZWN0aW9uT2ZmZXIoKTsKKy0jZW5kaWYKKy0jaWYgUVRfQ09ORklH KHdheWxhbmRfY2xpZW50X3ByaW1hcnlfc2VsZWN0aW9uKQorLSAgICBpZiAoYXV0byAqZGV2aWNl ID0gbVBhcmVudC0+cHJpbWFyeVNlbGVjdGlvbkRldmljZSgpKQorLSAgICAgICAgZGV2aWNlLT5p bnZhbGlkYXRlU2VsZWN0aW9uT2ZmZXIoKTsKKy0jZW5kaWYKKyAgICAgbVBhcmVudC0+bVFEaXNw bGF5LT5oYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChtUGFyZW50KTsKKyAgICAgbVJlcGVhdFRp bWVyLnN0b3AoKTsKKyB9CitAQCAtMTM5Niw2ICsxMzg4LDcgQEAgdm9pZCBRV2F5bGFuZElucHV0 RGV2aWNlOjpUb3VjaDo6dG91Y2hfY2FuY2VsKCkKKyAgICAgaWYgKHRvdWNoRXh0KQorICAgICAg ICAgdG91Y2hFeHQtPnRvdWNoQ2FuY2VsZWQoKTsKKyAKKysgICAgbUZvY3VzID0gbnVsbHB0cjsK KyAgICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlVG91Y2hDYW5jZWxFdmVudChudWxs cHRyLCBtUGFyZW50LT5tVG91Y2hEZXZpY2UpOworIH0KKyAKK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xp ZW50L3F3YXlsYW5kaW50ZWdyYXRpb24uY3BwCitpbmRleCBjNTNjY2I3OC4uNTQ4NjE2MDAgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uLmNwcAor KysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbi5jcHAKK0BAIC0x MjUsNiArMTI1LDkgQEAgUVdheWxhbmRJbnRlZ3JhdGlvbjo6UVdheWxhbmRJbnRlZ3JhdGlvbigp CisgI2VuZGlmCisgCisgICAgIHJlY29uZmlndXJlSW5wdXRDb250ZXh0KCk7CisrCisrICAgIFFX YXlsYW5kV2luZG93OjpmaXhlZFRvcGxldmVsUG9zaXRpb25zID0KKysgICAgICAgICAgICAhcUVu dmlyb25tZW50VmFyaWFibGVJc1NldCgiUVRfV0FZTEFORF9ESVNBQkxFX0ZJWEVEX1BPU0lUSU9O UyIpOworIH0KKyAKKyBRV2F5bGFuZEludGVncmF0aW9uOjp+UVdheWxhbmRJbnRlZ3JhdGlvbigp CitAQCAtMTkyLDE0ICsxOTUsMTggQEAgUUFic3RyYWN0RXZlbnREaXNwYXRjaGVyICpRV2F5bGFu ZEludGVncmF0aW9uOjpjcmVhdGVFdmVudERpc3BhdGNoZXIoKSBjb25zdAorIAorIHZvaWQgUVdh eWxhbmRJbnRlZ3JhdGlvbjo6aW5pdGlhbGl6ZSgpCisgeworKyAgICBtRGlzcGxheS0+aW5pdEV2 ZW50VGhyZWFkKCk7CisrCisrICAgIC8vIENhbGwgYWZ0ZXIgZXZlbnREaXNwYXRjaGVyIGlzIGZ1 bGx5IGNvbm5lY3RlZCwgZm9yIFFXYXlsYW5kRGlzcGxheTo6Zm9yY2VSb3VuZFRyaXAoKQorKyAg ICBtRGlzcGxheS0+aW5pdGlhbGl6ZSgpOworKworKyAgICAvLyBCdXQgdGhlIGFib3V0VG9CbG9j aygpIGFuZCBhd2FrZSgpIHNob3VsZCBiZSBjb25uZWN0ZWQgYWZ0ZXIgaW5pdGlhbGl6ZVBsYXRm b3JtKCkuCisrICAgIC8vIE90aGVyd2lzZSB0aGUgY29ubmVjdGVkIGZsdXNoUmVxdWVzdHMoKSBt YXkgY29uc3VtZXMgdXAgYWxsIGV2ZW50cyBiZWZvcmUgcHJvY2Vzc0V2ZW50cyBzdGFydHMgdG8g d2FpdCwKKysgICAgLy8gc28gdGhhdCBwcm9jZXNzRXZlbnRzKFFFdmVudExvb3A6OldhaXRGb3JN b3JlRXZlbnRzKSBtYXkgYmUgYmxvY2tlZCBpbiB0aGUgZm9yY2VSb3VuZFRyaXAoKS4KKyAgICAg UUFic3RyYWN0RXZlbnREaXNwYXRjaGVyICpkaXNwYXRjaGVyID0gUUd1aUFwcGxpY2F0aW9uUHJp dmF0ZTo6ZXZlbnREaXNwYXRjaGVyOworICAgICBRT2JqZWN0Ojpjb25uZWN0KGRpc3BhdGNoZXIs IFNJR05BTChhYm91dFRvQmxvY2soKSksIG1EaXNwbGF5LmRhdGEoKSwgU0xPVChmbHVzaFJlcXVl c3RzKCkpKTsKKyAgICAgUU9iamVjdDo6Y29ubmVjdChkaXNwYXRjaGVyLCBTSUdOQUwoYXdha2Uo KSksIG1EaXNwbGF5LmRhdGEoKSwgU0xPVChmbHVzaFJlcXVlc3RzKCkpKTsKKyAKKy0gICAgaW50 IGZkID0gd2xfZGlzcGxheV9nZXRfZmQobURpc3BsYXktPndsX2Rpc3BsYXkoKSk7CistICAgIFFT b2NrZXROb3RpZmllciAqc24gPSBuZXcgUVNvY2tldE5vdGlmaWVyKGZkLCBRU29ja2V0Tm90aWZp ZXI6OlJlYWQsIG1EaXNwbGF5LmRhdGEoKSk7CistICAgIFFPYmplY3Q6OmNvbm5lY3Qoc24sIFNJ R05BTChhY3RpdmF0ZWQoUVNvY2tldERlc2NyaXB0b3IpKSwgbURpc3BsYXkuZGF0YSgpLCBTTE9U KGZsdXNoUmVxdWVzdHMoKSkpOworLQorICAgICAvLyBRdCBkb2VzIG5vdCBzdXBwb3J0IHJ1bm5p bmcgd2l0aCBubyBzY3JlZW5zCisgICAgIG1EaXNwbGF5LT5lbnN1cmVTY3JlZW4oKTsKKyB9CitA QCAtMjYyLDYgKzI2OSwxNCBAQCBRV2F5bGFuZERpc3BsYXkgKlFXYXlsYW5kSW50ZWdyYXRpb246 OmRpc3BsYXkoKSBjb25zdAorICAgICByZXR1cm4gbURpc3BsYXkuZGF0YSgpOworIH0KKyAKKytR dDo6S2V5Ym9hcmRNb2RpZmllcnMgUVdheWxhbmRJbnRlZ3JhdGlvbjo6cXVlcnlLZXlib2FyZE1v ZGlmaWVycygpIGNvbnN0CisreworKyAgICBpZiAoYXV0byAqc2VhdCA9IG1EaXNwbGF5LT5jdXJy ZW50SW5wdXREZXZpY2UoKSkgeworKyAgICAgICAgcmV0dXJuIHNlYXQtPm1vZGlmaWVycygpOwor KyAgICB9CisrICAgIHJldHVybiBRdDo6Tm9Nb2RpZmllcjsKKyt9CisrCisgUUxpc3Q8aW50PiBR V2F5bGFuZEludGVncmF0aW9uOjpwb3NzaWJsZUtleXMoY29uc3QgUUtleUV2ZW50ICpldmVudCkg Y29uc3QKKyB7CisgICAgIGlmIChhdXRvICpzZWF0ID0gbURpc3BsYXktPmN1cnJlbnRJbnB1dERl dmljZSgpKQorQEAgLTQ3OSw3ICs0OTQsNyBAQCB2b2lkIFFXYXlsYW5kSW50ZWdyYXRpb246OnJl Y29uZmlndXJlSW5wdXRDb250ZXh0KCkKKyAgICAgfQorICNlbmRpZgorIAorLSAgICBxQ0RlYnVn KGxjUXBhV2F5bGFuZCkgPDwgInVzaW5nIGlucHV0IG1ldGhvZDoiIDw8IGlucHV0Q29udGV4dCgp LT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpOworKyAgICBxQ0RlYnVnKGxjUXBhV2F5bGFuZCkg PDwgInVzaW5nIGlucHV0IG1ldGhvZDoiIDw8IChpbnB1dENvbnRleHQoKSA/IGlucHV0Q29udGV4 dCgpLT5tZXRhT2JqZWN0KCktPmNsYXNzTmFtZSgpIDogIjxub25lPiIpOworIH0KKyAKKyBRV2F5 bGFuZFNoZWxsSW50ZWdyYXRpb24gKlFXYXlsYW5kSW50ZWdyYXRpb246OmNyZWF0ZVNoZWxsSW50 ZWdyYXRpb24oY29uc3QgUVN0cmluZyAmaW50ZWdyYXRpb25OYW1lKQorZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb25fcC5oIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRpbnRlZ3JhdGlvbl9wLmgKK2luZGV4IGZmNzBhZTI1Li43M2I4MDY1 OCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kaW50ZWdyYXRpb25f cC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZGludGVncmF0aW9uX3AuaAor QEAgLTEwNyw2ICsxMDcsOCBAQCBwdWJsaWM6CisgCisgICAgIFFXYXlsYW5kRGlzcGxheSAqZGlz cGxheSgpIGNvbnN0OworIAorKyAgICBRdDo6S2V5Ym9hcmRNb2RpZmllcnMgcXVlcnlLZXlib2Fy ZE1vZGlmaWVycygpIGNvbnN0IG92ZXJyaWRlOworKworICAgICBRTGlzdDxpbnQ+IHBvc3NpYmxl S2V5cyhjb25zdCBRS2V5RXZlbnQgKmV2ZW50KSBjb25zdCBvdmVycmlkZTsKKyAKKyAgICAgUVN0 cmluZ0xpc3QgdGhlbWVOYW1lcygpIGNvbnN0IG92ZXJyaWRlOworZGlmZiAtLWdpdCBhL3F0d2F5 bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVjdGlvbnYxLmNwcCBiL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kcHJpbWFyeXNlbGVjdGlvbnYxLmNwcAoraW5kZXggODMyZjk2 NzguLmVhNTA4NzcxIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRw cmltYXJ5c2VsZWN0aW9udjEuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFu ZHByaW1hcnlzZWxlY3Rpb252MS5jcHAKK0BAIC01NCwxMSArNTQsNiBAQCBRV2F5bGFuZFByaW1h cnlTZWxlY3Rpb25EZXZpY2VNYW5hZ2VyVjE6OlFXYXlsYW5kUHJpbWFyeVNlbGVjdGlvbkRldmlj ZU1hbmFnZXJWMQorICAgICA6IHp3cF9wcmltYXJ5X3NlbGVjdGlvbl9kZXZpY2VfbWFuYWdlcl92 MShkaXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJzaW9uLCB1aW50KDEpKSkKKyAg ICAgLCBtX2Rpc3BsYXkoZGlzcGxheSkKKyB7CistICAgIC8vIENyZWF0ZSBkZXZpY2VzIGZvciBh bGwgc2VhdHMuCistICAgIC8vIFRoaXMgb25seSB3b3JrcyBpZiB3ZSBnZXQgdGhlIGdsb2JhbCBi ZWZvcmUgYWxsIGRldmljZXMKKy0gICAgY29uc3QgYXV0byBzZWF0cyA9IG1fZGlzcGxheS0+aW5w dXREZXZpY2VzKCk7CistICAgIGZvciAoYXV0byAqc2VhdCA6IHNlYXRzKQorLSAgICAgICAgc2Vh dC0+c2V0UHJpbWFyeVNlbGVjdGlvbkRldmljZShjcmVhdGVEZXZpY2Uoc2VhdCkpOworIH0KKyAK KyBRV2F5bGFuZFByaW1hcnlTZWxlY3Rpb25EZXZpY2VWMSAqUVdheWxhbmRQcmltYXJ5U2VsZWN0 aW9uRGV2aWNlTWFuYWdlclYxOjpjcmVhdGVEZXZpY2UoUVdheWxhbmRJbnB1dERldmljZSAqc2Vh dCkKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbi5jcHAg Yi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbi5jcHAKK2luZGV4IDZjYjMzN2Rl Li41NTM3ZGFmZCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2Ny ZWVuLmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzY3JlZW4uY3BwCitA QCAtNjAsNyArNjAsNyBAQCBRV2F5bGFuZFhkZ091dHB1dE1hbmFnZXJWMTo6UVdheWxhbmRYZGdP dXRwdXRNYW5hZ2VyVjEoUVdheWxhbmREaXNwbGF5KiBkaXNwbGF5LAorIH0KKyAKKyBRV2F5bGFu ZFNjcmVlbjo6UVdheWxhbmRTY3JlZW4oUVdheWxhbmREaXNwbGF5ICp3YXlsYW5kRGlzcGxheSwg aW50IHZlcnNpb24sIHVpbnQzMl90IGlkKQorLSAgICA6IFF0V2F5bGFuZDo6d2xfb3V0cHV0KHdh eWxhbmREaXNwbGF5LT53bF9yZWdpc3RyeSgpLCBpZCwgcU1pbih2ZXJzaW9uLCAyKSkKKysgICAg OiBRdFdheWxhbmQ6OndsX291dHB1dCh3YXlsYW5kRGlzcGxheS0+d2xfcmVnaXN0cnkoKSwgaWQs IHFNaW4odmVyc2lvbiwgMykpCisgICAgICwgbV9vdXRwdXRJZChpZCkKKyAgICAgLCBtV2F5bGFu ZERpc3BsYXkod2F5bGFuZERpc3BsYXkpCisgICAgICwgbU91dHB1dE5hbWUoUVN0cmluZ0xpdGVy YWwoIlNjcmVlbiUxIikuYXJnKGlkKSkKK0BAIC03Miw3ICs3Miw3IEBAIFFXYXlsYW5kU2NyZWVu OjpRV2F5bGFuZFNjcmVlbihRV2F5bGFuZERpc3BsYXkgKndheWxhbmREaXNwbGF5LCBpbnQgdmVy c2lvbiwgdWluCisgICAgICAgICBxQ1dhcm5pbmcobGNRcGFXYXlsYW5kKSA8PCAid2xfb3V0cHV0 IGRvbmUgZXZlbnQgbm90IHN1cHBvcnRlZCBieSBjb21wb3NpdG9yLCIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDw8ICJRU2NyZWVuIG1heSBub3Qgd29yayBjb3JyZWN0bHkiOwor ICAgICAgICAgbVdheWxhbmREaXNwbGF5LT5mb3JjZVJvdW5kVHJpcCgpOyAvLyBHaXZlIHRoZSBj b21wb3NpdG9yIGEgY2hhbmNlIHRvIHNlbmQgZ2VvbWV0cnkgZXRjLgorLSAgICAgICAgbU91dHB1 dERvbmUgPSB0cnVlOyAvLyBGYWtlIHRoZSBkb25lIGV2ZW50CisrICAgICAgICBtUHJvY2Vzc2Vk RXZlbnRzIHw9IE91dHB1dERvbmVFdmVudDsgLy8gRmFrZSB0aGUgZG9uZSBldmVudAorICAgICAg ICAgbWF5YmVJbml0aWFsaXplKCk7CisgICAgIH0KKyB9CitAQCAtODEsMTYgKzgxLDI5IEBAIFFX YXlsYW5kU2NyZWVuOjp+UVdheWxhbmRTY3JlZW4oKQorIHsKKyAgICAgaWYgKHp4ZGdfb3V0cHV0 X3YxOjppc0luaXRpYWxpemVkKCkpCisgICAgICAgICB6eGRnX291dHB1dF92MTo6ZGVzdHJveSgp OworKyAgICBpZiAod2xfb3V0cHV0Ojppc0luaXRpYWxpemVkKCkgJiYgd2xfb3V0cHV0X2dldF92 ZXJzaW9uKHdsX291dHB1dDo6b2JqZWN0KCkpID49IFdMX09VVFBVVF9SRUxFQVNFX1NJTkNFX1ZF UlNJT04pCisrICAgICAgICB3bF9vdXRwdXQ6OnJlbGVhc2UoKTsKKyt9CisrCisrdWludCBRV2F5 bGFuZFNjcmVlbjo6cmVxdWlyZWRFdmVudHMoKSBjb25zdAorK3sKKysgICAgdWludCByZXQgPSBP dXRwdXREb25lRXZlbnQ7CisrCisrICAgIGlmIChtV2F5bGFuZERpc3BsYXktPnhkZ091dHB1dE1h bmFnZXIoKSkgeworKyAgICAgICAgcmV0IHw9IFhkZ091dHB1dE5hbWVFdmVudDsKKysKKysgICAg ICAgIGlmIChtV2F5bGFuZERpc3BsYXktPnhkZ091dHB1dE1hbmFnZXIoKS0+dmVyc2lvbigpIDwg MykKKysgICAgICAgICAgICByZXQgfD0gWGRnT3V0cHV0RG9uZUV2ZW50OworKyAgICB9CisrICAg IHJldHVybiByZXQ7CisgfQorIAorIHZvaWQgUVdheWxhbmRTY3JlZW46Om1heWJlSW5pdGlhbGl6 ZSgpCisgeworICAgICBRX0FTU0VSVCghbUluaXRpYWxpemVkKTsKKyAKKy0gICAgaWYgKCFtT3V0 cHV0RG9uZSkKKy0gICAgICAgIHJldHVybjsKKy0KKy0gICAgaWYgKG1XYXlsYW5kRGlzcGxheS0+ eGRnT3V0cHV0TWFuYWdlcigpICYmICFtWGRnT3V0cHV0RG9uZSkKKysgICAgY29uc3QgdWludCBy ZXF1aXJlZEV2ZW50cyA9IHRoaXMtPnJlcXVpcmVkRXZlbnRzKCk7CisrICAgIGlmICgobVByb2Nl c3NlZEV2ZW50cyAmIHJlcXVpcmVkRXZlbnRzKSAhPSByZXF1aXJlZEV2ZW50cykKKyAgICAgICAg IHJldHVybjsKKyAKKyAgICAgbUluaXRpYWxpemVkID0gdHJ1ZTsKK0BAIC0yNzYsOSArMjg5LDgg QEAgdm9pZCBRV2F5bGFuZFNjcmVlbjo6b3V0cHV0X3NjYWxlKGludDMyX3QgZmFjdG9yKQorIAor IHZvaWQgUVdheWxhbmRTY3JlZW46Om91dHB1dF9kb25lKCkKKyB7CistICAgIG1PdXRwdXREb25l ID0gdHJ1ZTsKKy0gICAgaWYgKHp4ZGdfb3V0cHV0X3YxOjppc0luaXRpYWxpemVkKCkgJiYgbVdh eWxhbmREaXNwbGF5LT54ZGdPdXRwdXRNYW5hZ2VyKCktPnZlcnNpb24oKSA+PSAzKQorLSAgICAg ICAgbVhkZ091dHB1dERvbmUgPSB0cnVlOworKyAgICBtUHJvY2Vzc2VkRXZlbnRzIHw9IE91dHB1 dERvbmVFdmVudDsKKysKKyAgICAgaWYgKG1Jbml0aWFsaXplZCkgeworICAgICAgICAgdXBkYXRl T3V0cHV0UHJvcGVydGllcygpOworICAgICAgICAgaWYgKHp4ZGdfb3V0cHV0X3YxOjppc0luaXRp YWxpemVkKCkpCitAQCAtMzM5LDcgKzM1MSw3IEBAIHZvaWQgUVdheWxhbmRTY3JlZW46Onp4ZGdf b3V0cHV0X3YxX2RvbmUoKQorICAgICBpZiAoUV9VTkxJS0VMWShtV2F5bGFuZERpc3BsYXktPnhk Z091dHB1dE1hbmFnZXIoKS0+dmVyc2lvbigpID49IDMpKQorICAgICAgICAgcVdhcm5pbmcobGNR cGFXYXlsYW5kKSA8PCAienhkZ19vdXRwdXRfdjEuZG9uZSByZWNlaXZlZCBvbiB2ZXJzaW9uIDMg b3IgbmV3ZXIsIHRoaXMgaXMgbW9zdCBsaWtlbHkgYSBidWcgaW4gdGhlIGNvbXBvc2l0b3IiOwor IAorLSAgICBtWGRnT3V0cHV0RG9uZSA9IHRydWU7CisrICAgIG1Qcm9jZXNzZWRFdmVudHMgfD0g WGRnT3V0cHV0RG9uZUV2ZW50OworICAgICBpZiAobUluaXRpYWxpemVkKQorICAgICAgICAgdXBk YXRlWGRnT3V0cHV0UHJvcGVydGllcygpOworICAgICBlbHNlCitAQCAtMzQ4LDcgKzM2MCwxMSBA QCB2b2lkIFFXYXlsYW5kU2NyZWVuOjp6eGRnX291dHB1dF92MV9kb25lKCkKKyAKKyB2b2lkIFFX YXlsYW5kU2NyZWVuOjp6eGRnX291dHB1dF92MV9uYW1lKGNvbnN0IFFTdHJpbmcgJm5hbWUpCisg eworKyAgICBpZiAoUV9VTkxJS0VMWShtSW5pdGlhbGl6ZWQpKQorKyAgICAgICAgcVdhcm5pbmco bGNRcGFXYXlsYW5kKSA8PCAienhkZ19vdXRwdXRfdjEubmFtZSByZWNlaXZlZCBhZnRlciBvdXRw dXQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQsIHRoaXMgaXMgbW9zdCBsaWtlbHkgYSBidWcgaW4gdGhl IGNvbXBvc2l0b3IiOworKworICAgICBtT3V0cHV0TmFtZSA9IG5hbWU7CisrICAgIG1Qcm9jZXNz ZWRFdmVudHMgfD0gWGRnT3V0cHV0TmFtZUV2ZW50OworIH0KKyAKKyB2b2lkIFFXYXlsYW5kU2Ny ZWVuOjp1cGRhdGVYZGdPdXRwdXRQcm9wZXJ0aWVzKCkKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQv c3JjL2NsaWVudC9xd2F5bGFuZHNjcmVlbl9wLmggYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5 bGFuZHNjcmVlbl9wLmgKK2luZGV4IGRmMWM5NGYyLi4wNTBjZmRjMCAxMDA2NDQKKy0tLSBhL3F0 d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kc2NyZWVuX3AuaAorKysrIGIvcXR3YXlsYW5kL3Ny Yy9jbGllbnQvcXdheWxhbmRzY3JlZW5fcC5oCitAQCAtMTE2LDYgKzExNiwxMyBAQCBwdWJsaWM6 CisgICAgIHN0YXRpYyBRV2F5bGFuZFNjcmVlbiAqZnJvbVdsT3V0cHV0KDo6d2xfb3V0cHV0ICpv dXRwdXQpOworIAorIHByaXZhdGU6CisrICAgIGVudW0gRXZlbnQgOiB1aW50IHsKKysgICAgICAg IFhkZ091dHB1dERvbmVFdmVudCA9IDB4MSwKKysgICAgICAgIE91dHB1dERvbmVFdmVudCA9IDB4 MiwKKysgICAgICAgIFhkZ091dHB1dE5hbWVFdmVudCA9IDB4NCwKKysgICAgfTsKKysgICAgdWlu dCByZXF1aXJlZEV2ZW50cygpIGNvbnN0OworKworICAgICB2b2lkIG91dHB1dF9tb2RlKHVpbnQz Ml90IGZsYWdzLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCByZWZyZXNoKSBvdmVycmlkZTsK KyAgICAgdm9pZCBvdXRwdXRfZ2VvbWV0cnkoaW50MzJfdCB4LCBpbnQzMl90IHksCisgICAgICAg ICAgICAgICAgICAgICAgICAgIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LAorQEAgLTE0 OCw4ICsxNTUsNyBAQCBwcml2YXRlOgorICAgICBRU2l6ZSBtUGh5c2ljYWxTaXplOworICAgICBR U3RyaW5nIG1PdXRwdXROYW1lOworICAgICBRdDo6U2NyZWVuT3JpZW50YXRpb24gbV9vcmllbnRh dGlvbiA9IFF0OjpQcmltYXJ5T3JpZW50YXRpb247CistICAgIGJvb2wgbU91dHB1dERvbmUgPSBm YWxzZTsKKy0gICAgYm9vbCBtWGRnT3V0cHV0RG9uZSA9IGZhbHNlOworKyAgICB1aW50IG1Qcm9j ZXNzZWRFdmVudHMgPSAwOworICAgICBib29sIG1Jbml0aWFsaXplZCA9IGZhbHNlOworIAorICNp ZiBRVF9DT05GSUcoY3Vyc29yKQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3 YXlsYW5kc2htYmFja2luZ3N0b3JlLmNwcCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5k c2htYmFja2luZ3N0b3JlLmNwcAoraW5kZXggZGM3ZmY2NzAuLjQxY2ZmZGY3IDEwMDY0NAorLS0t IGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmRzaG1iYWNraW5nc3RvcmUuY3BwCisrKysg Yi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHNobWJhY2tpbmdzdG9yZS5jcHAKK0BAIC01 Miw2ICs1Miw3IEBACisgCisgI2luY2x1ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRlL3dheWxh bmQtd2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaD4KKyAKKysjaW5jbHVkZSA8ZmNudGwuaD4KKyAj aW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisgCitAQCAtNjEsNiAr NjIsOSBAQAorICMgIGlmbmRlZiBNRkRfQ0xPRVhFQworICMgICAgZGVmaW5lIE1GRF9DTE9FWEVD ICAgICAweDAwMDFVCisgIyAgZW5kaWYKKysjICBpZm5kZWYgTUZEX0FMTE9XX1NFQUxJTkcKKysj ICAgIGRlZmluZSBNRkRfQUxMT1dfU0VBTElORyAweDAwMDJVCisrIyAgZW5kaWYKKyAjZW5kaWYK KyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UKK0BAIC03NCw4ICs3OCwxMCBAQCBRV2F5bGFuZFNobUJ1 ZmZlcjo6UVdheWxhbmRTaG1CdWZmZXIoUVdheWxhbmREaXNwbGF5ICpkaXNwbGF5LAorICAgICBp bnQgYWxsb2MgPSBzdHJpZGUgKiBzaXplLmhlaWdodCgpOworICAgICBpbnQgZmQgPSAtMTsKKyAK Ky0jaWZkZWYgU1lTX21lbWZkX2NyZWF0ZQorLSAgICBmZCA9IHN5c2NhbGwoU1lTX21lbWZkX2Ny ZWF0ZSwgIndheWxhbmQtc2htIiwgTUZEX0NMT0VYRUMpOworKyNpZiBkZWZpbmVkKFNZU19tZW1m ZF9jcmVhdGUpICYmIGRlZmluZWQoRl9TRUFMX1NFQUwpCisrICAgIGZkID0gc3lzY2FsbChTWVNf bWVtZmRfY3JlYXRlLCAid2F5bGFuZC1zaG0iLCBNRkRfQ0xPRVhFQyB8IE1GRF9BTExPV19TRUFM SU5HKTsKKysgICAgaWYgKGZkID49IDApCisrICAgICAgICBmY250bChmZCwgRl9BRERfU0VBTFMs IEZfU0VBTF9TSFJJTksgfCBGX1NFQUxfU0VBTCk7CisgI2VuZGlmCisgCisgICAgIFFTY29wZWRQ b2ludGVyPFFGaWxlPiBmaWxlUG9pbnRlcjsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2Ns aWVudC9xd2F5bGFuZHdpbmRvdy5jcHAgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdp bmRvdy5jcHAKK2luZGV4IGNiODI4NTdhLi5mYjJjNTlkYyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFu ZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9jbGll bnQvcXdheWxhbmR3aW5kb3cuY3BwCitAQCAtNzYsNyArNzYsNiBAQCBRV2F5bGFuZFdpbmRvdyAq UVdheWxhbmRXaW5kb3c6Om1Nb3VzZUdyYWIgPSBudWxscHRyOworIFFXYXlsYW5kV2luZG93OjpR V2F5bGFuZFdpbmRvdyhRV2luZG93ICp3aW5kb3csIFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSkK KyAgICAgOiBRUGxhdGZvcm1XaW5kb3cod2luZG93KQorICAgICAsIG1EaXNwbGF5KGRpc3BsYXkp CistICAgICwgbUZyYW1lUXVldWUobURpc3BsYXktPmNyZWF0ZUZyYW1lUXVldWUoKSkKKyAgICAg LCBtUmVzaXplQWZ0ZXJTd2FwKHFFbnZpcm9ubWVudFZhcmlhYmxlSXNTZXQoIlFUX1dBWUxBTkRf UkVTSVpFX0FGVEVSX1NXQVAiKSkKKyB7CisgICAgIHsKK0BAIC05NSw5ICs5NCw2IEBAIFFXYXls YW5kV2luZG93OjpRV2F5bGFuZFdpbmRvdyhRV2luZG93ICp3aW5kb3csIFFXYXlsYW5kRGlzcGxh eSAqZGlzcGxheSkKKyAKKyBRV2F5bGFuZFdpbmRvdzo6flFXYXlsYW5kV2luZG93KCkKKyB7Cist ICAgIG1EaXNwbGF5LT5kZXN0cm95RnJhbWVRdWV1ZShtRnJhbWVRdWV1ZSk7CistICAgIG1EaXNw bGF5LT5oYW5kbGVXaW5kb3dEZXN0cm95ZWQodGhpcyk7CistCisgICAgIGRlbGV0ZSBtV2luZG93 RGVjb3JhdGlvbjsKKyAKKyAgICAgaWYgKG1TdXJmYWNlKQorQEAgLTI0Myw2ICsyMzksNyBAQCBi b29sIFFXYXlsYW5kV2luZG93OjpzaG91bGRDcmVhdGVTdWJTdXJmYWNlKCkgY29uc3QKKyAKKyB2 b2lkIFFXYXlsYW5kV2luZG93OjpyZXNldCgpCisgeworKyAgICBjbG9zZUNoaWxkUG9wdXBzKCk7 CisgICAgIGRlbGV0ZSBtU2hlbGxTdXJmYWNlOworICAgICBtU2hlbGxTdXJmYWNlID0gbnVsbHB0 cjsKKyAgICAgZGVsZXRlIG1TdWJTdXJmYWNlV2luZG93OworQEAgLTI1NSwxNyArMjUyLDIyIEBA IHZvaWQgUVdheWxhbmRXaW5kb3c6OnJlc2V0KCkKKyAgICAgICAgIG1TdXJmYWNlLnJlc2V0KCk7 CisgICAgIH0KKyAKKy0gICAgaWYgKG1GcmFtZUNhbGxiYWNrKSB7CistICAgICAgICB3bF9jYWxs YmFja19kZXN0cm95KG1GcmFtZUNhbGxiYWNrKTsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNrID0g bnVsbHB0cjsKKy0gICAgfQorKyAgICB7CisrICAgICAgICBRTXV0ZXhMb2NrZXIgbG9jaygmbUZy YW1lU3luY011dGV4KTsKKysgICAgICAgIGlmIChtRnJhbWVDYWxsYmFjaykgeworKyAgICAgICAg ICAgIHdsX2NhbGxiYWNrX2Rlc3Ryb3kobUZyYW1lQ2FsbGJhY2spOworKyAgICAgICAgICAgIG1G cmFtZUNhbGxiYWNrID0gbnVsbHB0cjsKKysgICAgICAgIH0KKyAKKy0gICAgbUZyYW1lQ2FsbGJh Y2tFbGFwc2VkVGltZXIuaW52YWxpZGF0ZSgpOworLSAgICBtV2FpdGluZ0ZvckZyYW1lQ2FsbGJh Y2sgPSBmYWxzZTsKKysgICAgICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmludmFsaWRh dGUoKTsKKysgICAgICAgIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNlOworKyAgICB9 CisgICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSBmYWxzZTsKKyAKKyAgICAgbU1hc2sgPSBR UmVnaW9uKCk7CisgICAgIG1RdWV1ZWRCdWZmZXIgPSBudWxscHRyOworKworKyAgICBtRGlzcGxh eS0+aGFuZGxlV2luZG93RGVzdHJveWVkKHRoaXMpOworIH0KKyAKKyBRV2F5bGFuZFdpbmRvdyAq UVdheWxhbmRXaW5kb3c6OmZyb21XbFN1cmZhY2UoOjp3bF9zdXJmYWNlICpzdXJmYWNlKQorQEAg LTM1MSwxOSArMzUzLDI1IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNldEdlb21ldHJ5X2hlbHBl cihjb25zdCBRUmVjdCAmcmVjdCkKKyAgICAgfQorIH0KKyAKKy12b2lkIFFXYXlsYW5kV2luZG93 OjpzZXRHZW9tZXRyeShjb25zdCBRUmVjdCAmcmVjdCkKKyt2b2lkIFFXYXlsYW5kV2luZG93Ojpz ZXRHZW9tZXRyeShjb25zdCBRUmVjdCAmcikKKyB7CisrICAgIGF1dG8gcmVjdCA9IHI7CisrICAg IGlmIChmaXhlZFRvcGxldmVsUG9zaXRpb25zICYmICFRUGxhdGZvcm1XaW5kb3c6OnBhcmVudCgp ICYmIHdpbmRvdygpLT50eXBlKCkgIT0gUXQ6OlBvcHVwCisrICAgICAgICAmJiB3aW5kb3coKS0+ dHlwZSgpICE9IFF0OjpUb29sVGlwKSB7CisrICAgICAgICByZWN0Lm1vdmVUbyhzY3JlZW4oKS0+ Z2VvbWV0cnkoKS50b3BMZWZ0KCkpOworKyAgICB9CisgICAgIHNldEdlb21ldHJ5X2hlbHBlcihy ZWN0KTsKKyAKKyAgICAgaWYgKHdpbmRvdygpLT5pc1Zpc2libGUoKSAmJiByZWN0LmlzVmFsaWQo KSkgeworICAgICAgICAgaWYgKG1XaW5kb3dEZWNvcmF0aW9uKQorICAgICAgICAgICAgIG1XaW5k b3dEZWNvcmF0aW9uLT51cGRhdGUoKTsKKyAKKy0gICAgICAgIGlmIChtUmVzaXplQWZ0ZXJTd2Fw ICYmIHdpbmRvd1R5cGUoKSA9PSBFZ2wgJiYgbVNlbnRJbml0aWFsUmVzaXplKQorKyAgICAgICAg aWYgKG1SZXNpemVBZnRlclN3YXAgJiYgd2luZG93VHlwZSgpID09IEVnbCAmJiBtU2VudEluaXRp YWxSZXNpemUpIHsKKysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9jaygmbVJlc2l6ZUxvY2sp OworICAgICAgICAgICAgIG1SZXNpemVEaXJ0eSA9IHRydWU7CistICAgICAgICBlbHNlCisrICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRs ZUdlb21ldHJ5Q2hhbmdlKHdpbmRvdygpLCBnZW9tZXRyeSgpKTsKKy0KKysgICAgICAgIH0KKyAg ICAgICAgIG1TZW50SW5pdGlhbFJlc2l6ZSA9IHRydWU7CisgICAgIH0KKyAgICAgUVJlY3QgZXhw b3NlR2VvbWV0cnkoUVBvaW50KCksIGdlb21ldHJ5KCkuc2l6ZSgpKTsKK0BAIC0zNzQsNyArMzgy LDcgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0R2VvbWV0cnkoY29uc3QgUVJlY3QgJnJlY3Qp CisgICAgICAgICBtU2hlbGxTdXJmYWNlLT5zZXRXaW5kb3dHZW9tZXRyeSh3aW5kb3dDb250ZW50 R2VvbWV0cnkoKSk7CisgCisgICAgIGlmIChpc09wYXF1ZSgpICYmIG1NYXNrLmlzRW1wdHkoKSkK Ky0gICAgICAgIHNldE9wYXF1ZUFyZWEocmVjdCk7CisrICAgICAgICBzZXRPcGFxdWVBcmVhKFFS ZWN0KFFQb2ludCgwLCAwKSwgcmVjdC5zaXplKCkpKTsKKyB9CisgCisgdm9pZCBRV2F5bGFuZFdp bmRvdzo6cmVzaXplRnJvbUFwcGx5Q29uZmlndXJlKGNvbnN0IFFTaXplICZzaXplV2l0aE1hcmdp bnMsIGNvbnN0IFFQb2ludCAmb2Zmc2V0KQorQEAgLTM5OSwyMSArNDA3LDYgQEAgdm9pZCBRV2F5 bGFuZFdpbmRvdzo6c2VuZEV4cG9zZUV2ZW50KGNvbnN0IFFSZWN0ICZyZWN0KQorICAgICBtTGFz dEV4cG9zZUdlb21ldHJ5ID0gcmVjdDsKKyB9CisgCistCistc3RhdGljIFFWZWN0b3I8UVBvaW50 ZXI8UVdheWxhbmRXaW5kb3c+PiBhY3RpdmVQb3B1cHM7CistCistdm9pZCBRV2F5bGFuZFdpbmRv dzo6Y2xvc2VQb3B1cHMoUVdheWxhbmRXaW5kb3cgKnBhcmVudCkKKy17CistICAgIHdoaWxlICgh YWN0aXZlUG9wdXBzLmlzRW1wdHkoKSkgeworLSAgICAgICAgYXV0byBwb3B1cCA9IGFjdGl2ZVBv cHVwcy50YWtlTGFzdCgpOworLSAgICAgICAgaWYgKHBvcHVwLmlzTnVsbCgpKQorLSAgICAgICAg ICAgIGNvbnRpbnVlOworLSAgICAgICAgaWYgKHBvcHVwLmRhdGEoKSA9PSBwYXJlbnQpCistICAg ICAgICAgICAgcmV0dXJuOworLSAgICAgICAgcG9wdXAtPnJlc2V0KCk7CistICAgIH0KKy19Cist CisgUVBsYXRmb3JtU2NyZWVuICpRV2F5bGFuZFdpbmRvdzo6Y2FsY3VsYXRlU2NyZWVuRnJvbVN1 cmZhY2VFdmVudHMoKSBjb25zdAorIHsKKyAgICAgUVJlYWRMb2NrZXIgbG9jaygmbVN1cmZhY2VM b2NrKTsKK0BAIC00MzMsMTAgKzQyNiw3IEBAIHZvaWQgUVdheWxhbmRXaW5kb3c6OnNldFZpc2li bGUoYm9vbCB2aXNpYmxlKQorICAgICBsYXN0VmlzaWJsZSA9IHZpc2libGU7CisgCisgICAgIGlm ICh2aXNpYmxlKSB7CistICAgICAgICBpZiAod2luZG93KCktPnR5cGUoKSA9PSBRdDo6UG9wdXAg fHwgd2luZG93KCktPnR5cGUoKSA9PSBRdDo6VG9vbFRpcCkKKy0gICAgICAgICAgICBhY3RpdmVQ b3B1cHMgPDwgdGhpczsKKyAgICAgICAgIGluaXRXaW5kb3coKTsKKy0gICAgICAgIG1EaXNwbGF5 LT5mbHVzaFJlcXVlc3RzKCk7CisgCisgICAgICAgICBzZXRHZW9tZXRyeSh3aW5kb3dHZW9tZXRy eSgpKTsKKyAgICAgICAgIC8vIERvbid0IGZsdXNoIHRoZSBldmVudHMgaGVyZSwgb3IgZWxzZSB0 aGUgbmV3bHkgdmlzaWJsZSB3aW5kb3cgbWF5IHN0YXJ0IGRyYXdpbmcsIGJ1dCBzaW5jZQorQEAg LTQ0NCw3ICs0MzQsNiBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpzZXRWaXNpYmxlKGJvb2wgdmlz aWJsZSkKKyAgICAgICAgIC8vIFFXYXlsYW5kU2htQmFja2luZ1N0b3JlOjpiZWdpblBhaW50KCku CisgICAgIH0gZWxzZSB7CisgICAgICAgICBzZW5kRXhwb3NlRXZlbnQoUVJlY3QoKSk7CistICAg ICAgICBjbG9zZVBvcHVwcyh0aGlzKTsKKyAgICAgICAgIHJlc2V0KCk7CisgICAgIH0KKyB9CitA QCAtNTU2LDEyICs1NDUsMTIgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2VuZFJlY3Vyc2l2ZUV4 cG9zZUV2ZW50KCkKKyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjphdHRhY2goUVdheWxhbmRCdWZm ZXIgKmJ1ZmZlciwgaW50IHgsIGludCB5KQorIHsKKy0gICAgUV9BU1NFUlQoIWJ1ZmZlci0+Y29t bWl0dGVkKCkpOworICAgICBRUmVhZExvY2tlciBsb2NrZXIoJm1TdXJmYWNlTG9jayk7CisgICAg IGlmIChtU3VyZmFjZSA9PSBudWxscHRyKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBpZiAo YnVmZmVyKSB7CisrICAgICAgICBRX0FTU0VSVCghYnVmZmVyLT5jb21taXR0ZWQoKSk7CisgICAg ICAgICBoYW5kbGVVcGRhdGUoKTsKKyAgICAgICAgIGJ1ZmZlci0+c2V0QnVzeSgpOworIAorQEAg LTU4Myw3ICs1NzIsMTEgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6ZGFtYWdlKGNvbnN0IFFSZWN0 ICZyZWN0KQorICAgICBpZiAobVN1cmZhY2UgPT0gbnVsbHB0cikKKyAgICAgICAgIHJldHVybjsK KyAKKy0gICAgbVN1cmZhY2UtPmRhbWFnZShyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgo KSwgcmVjdC5oZWlnaHQoKSk7CisrICAgIGNvbnN0IGludCBzID0gc2NhbGUoKTsKKysgICAgaWYg KG1EaXNwbGF5LT5jb21wb3NpdG9yVmVyc2lvbigpID49IDQpCisrICAgICAgICBtU3VyZmFjZS0+ ZGFtYWdlX2J1ZmZlcihzICogcmVjdC54KCksIHMgKiByZWN0LnkoKSwgcyAqIHJlY3Qud2lkdGgo KSwgcyAqIHJlY3QuaGVpZ2h0KCkpOworKyAgICBlbHNlCisrICAgICAgICBtU3VyZmFjZS0+ZGFt YWdlKHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKyB9 CisgCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6c2FmZUNvbW1pdChRV2F5bGFuZEJ1ZmZlciAqYnVm ZmVyLCBjb25zdCBRUmVnaW9uICZkYW1hZ2UpCitAQCAtNjE5LDggKzYxMiwxNCBAQCB2b2lkIFFX YXlsYW5kV2luZG93Ojpjb21taXQoUVdheWxhbmRCdWZmZXIgKmJ1ZmZlciwgY29uc3QgUVJlZ2lv biAmZGFtYWdlKQorICAgICAgICAgcmV0dXJuOworIAorICAgICBhdHRhY2hPZmZzZXQoYnVmZmVy KTsKKy0gICAgZm9yIChjb25zdCBRUmVjdCAmcmVjdDogZGFtYWdlKQorLSAgICAgICAgbVN1cmZh Y2UtPmRhbWFnZShyZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQo KSk7CisrICAgIGlmIChtRGlzcGxheS0+Y29tcG9zaXRvclZlcnNpb24oKSA+PSA0KSB7CisrICAg ICAgICBjb25zdCBpbnQgcyA9IHNjYWxlKCk7CisrICAgICAgICBmb3IgKGNvbnN0IFFSZWN0ICZy ZWN0OiBkYW1hZ2UpCisrICAgICAgICAgICAgbVN1cmZhY2UtPmRhbWFnZV9idWZmZXIocyAqIHJl Y3QueCgpLCBzICogcmVjdC55KCksIHMgKiByZWN0LndpZHRoKCksIHMgKiByZWN0LmhlaWdodCgp KTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIGZvciAoY29uc3QgUVJlY3QgJnJlY3Q6IGRhbWFn ZSkKKysgICAgICAgICAgICBtU3VyZmFjZS0+ZGFtYWdlKHJlY3QueCgpLCByZWN0LnkoKSwgcmVj dC53aWR0aCgpLCByZWN0LmhlaWdodCgpKTsKKysgICAgfQorICAgICBRX0FTU0VSVCghYnVmZmVy LT5jb21taXR0ZWQoKSk7CisgICAgIGJ1ZmZlci0+c2V0Q29tbWl0dGVkKCk7CisgICAgIG1TdXJm YWNlLT5jb21taXQoKTsKK0BAIC02MzUsNDIgKzYzNCw1MyBAQCB2b2lkIFFXYXlsYW5kV2luZG93 Ojpjb21taXQoKQorIAorIGNvbnN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIFFXYXlsYW5kV2luZG93 OjpjYWxsYmFja0xpc3RlbmVyID0geworICAgICBbXSh2b2lkICpkYXRhLCB3bF9jYWxsYmFjayAq Y2FsbGJhY2ssIHVpbnQzMl90IHRpbWUpIHsKKy0gICAgICAgIFFfVU5VU0VEKGNhbGxiYWNrKTsK KyAgICAgICAgIFFfVU5VU0VEKHRpbWUpOworICAgICAgICAgYXV0byAqd2luZG93ID0gc3RhdGlj X2Nhc3Q8UVdheWxhbmRXaW5kb3cqPihkYXRhKTsKKy0gICAgICAgIHdpbmRvdy0+aGFuZGxlRnJh bWVDYWxsYmFjaygpOworKyAgICAgICAgd2luZG93LT5oYW5kbGVGcmFtZUNhbGxiYWNrKGNhbGxi YWNrKTsKKyAgICAgfQorIH07CisgCistdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlRnJhbWVD YWxsYmFjaygpCisrdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlRnJhbWVDYWxsYmFjayh3bF9j YWxsYmFjayogY2FsbGJhY2spCisgeworKyAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVT eW5jTXV0ZXgpOworKyAgICBpZiAoIW1GcmFtZUNhbGxiYWNrKSB7CisrICAgICAgICAvLyBUaGlz IG1lYW5zIHRoZSBjYWxsYmFjayBpcyBhbHJlYWR5IHVuc2V0IGJ5IFFXYXlsYW5kV2luZG93Ojpy ZXNldC4KKysgICAgICAgIC8vIFRoZSB3bF9jYWxsYmFjayBvYmplY3Qgd2lsbCBiZSBkZXN0cm95 ZWQgdGhlcmUgdG9vLgorKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrICAgIFFfQVNTRVJUKGNh bGxiYWNrID09IG1GcmFtZUNhbGxiYWNrKTsKKysgICAgd2xfY2FsbGJhY2tfZGVzdHJveShjYWxs YmFjayk7CisrICAgIG1GcmFtZUNhbGxiYWNrID0gbnVsbHB0cjsKKysKKyAgICAgbVdhaXRpbmdG b3JGcmFtZUNhbGxiYWNrID0gZmFsc2U7CisgICAgIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVy LmludmFsaWRhdGUoKTsKKyAKKyAgICAgLy8gVGhlIHJlc3QgY2FuIHdhaXQgdW50aWwgd2UgY2Fu IHJ1biBpdCBvbiB0aGUgY29ycmVjdCB0aHJlYWQKKy0gICAgaWYgKCFtV2FpdGluZ0ZvclVwZGF0 ZURlbGl2ZXJ5KSB7CistICAgICAgICBhdXRvIGRvSGFuZGxlRXhwb3NlID0gW3RoaXNdKCkgewor LSAgICAgICAgICAgIGJvb2wgd2FzRXhwb3NlZCA9IGlzRXhwb3NlZCgpOworLSAgICAgICAgICAg IG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSBmYWxzZTsKKy0gICAgICAgICAgICBpZiAoIXdhc0V4 cG9zZWQgJiYgaXNFeHBvc2VkKCkpIC8vIERpZCBzZXR0aW5nIG1GcmFtZUNhbGxiYWNrVGltZWRP dXQgbWFrZSB0aGUgd2luZG93IGV4cG9zZWQ/CistICAgICAgICAgICAgICAgIHNlbmRFeHBvc2VF dmVudChRUmVjdChRUG9pbnQoKSwgZ2VvbWV0cnkoKS5zaXplKCkpKTsKKy0gICAgICAgICAgICBp ZiAod2FzRXhwb3NlZCAmJiBoYXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpKQorLSAgICAgICAgICAg ICAgICBkZWxpdmVyVXBkYXRlUmVxdWVzdCgpOworLQorLSAgICAgICAgICAgIG1XYWl0aW5nRm9y VXBkYXRlRGVsaXZlcnkgPSBmYWxzZTsKKy0gICAgICAgIH07CisrICAgIGF1dG8gZG9IYW5kbGVF eHBvc2UgPSBbdGhpc10oKSB7CisrICAgICAgICBtV2FpdGluZ0ZvclVwZGF0ZURlbGl2ZXJ5LnN0 b3JlUmVsZWFzZShmYWxzZSk7CisrICAgICAgICBib29sIHdhc0V4cG9zZWQgPSBpc0V4cG9zZWQo KTsKKysgICAgICAgIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSBmYWxzZTsKKysgICAgICAgIGlm ICghd2FzRXhwb3NlZCAmJiBpc0V4cG9zZWQoKSkgLy8gRGlkIHNldHRpbmcgbUZyYW1lQ2FsbGJh Y2tUaW1lZE91dCBtYWtlIHRoZSB3aW5kb3cgZXhwb3NlZD8KKysgICAgICAgICAgICBzZW5kRXhw b3NlRXZlbnQoUVJlY3QoUVBvaW50KCksIGdlb21ldHJ5KCkuc2l6ZSgpKSk7CisrICAgICAgICBp ZiAod2FzRXhwb3NlZCAmJiBoYXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpKQorKyAgICAgICAgICAg IGRlbGl2ZXJVcGRhdGVSZXF1ZXN0KCk7CisrICAgIH07CisgCisrICAgIGlmIChtV2FpdGluZ0Zv clVwZGF0ZURlbGl2ZXJ5LnRlc3RBbmRTZXRBY3F1aXJlKGZhbHNlLCB0cnVlKSkgeworICAgICAg ICAgLy8gUXVldWVkIGNvbm5lY3Rpb24sIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCBjYWxsIGhhbmRs ZVVwZGF0ZSgpIGZyb20gaW5zaWRlIHdhaXRGb3JGcmFtZVN5bmMoKQorICAgICAgICAgLy8gaW4g dGhlIHNpbmdsZS10aHJlYWRlZCBjYXNlLgorLSAgICAgICAgbVdhaXRpbmdGb3JVcGRhdGVEZWxp dmVyeSA9IHRydWU7CisgICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMsIGRv SGFuZGxlRXhwb3NlLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgICAgIH0KKysKKysgICAgbUZy YW1lU3luY1dhaXQubm90aWZ5X2FsbCgpOworIH0KKyAKKyBib29sIFFXYXlsYW5kV2luZG93Ojp3 YWl0Rm9yRnJhbWVTeW5jKGludCB0aW1lb3V0KQorIHsKKy0gICAgUU11dGV4TG9ja2VyIGxvY2tl cihtRnJhbWVRdWV1ZS5tdXRleCk7CistICAgIG1EaXNwbGF5LT5kaXNwYXRjaFF1ZXVlV2hpbGUo bUZyYW1lUXVldWUucXVldWUsIFsmXSgpIHsgcmV0dXJuIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFj azsgfSwgdGltZW91dCk7CisrICAgIFFNdXRleExvY2tlciBsb2NrZXIoJm1GcmFtZVN5bmNNdXRl eCk7CisrCisrICAgIFFEZWFkbGluZVRpbWVyIGRlYWRsaW5lKHRpbWVvdXQpOworKyAgICB3aGls ZSAobVdhaXRpbmdGb3JGcmFtZUNhbGxiYWNrICYmIG1GcmFtZVN5bmNXYWl0LndhaXQoJm1GcmFt ZVN5bmNNdXRleCwgZGVhZGxpbmUpKSB7IH0KKyAKKyAgICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVD YWxsYmFjaykgeworICAgICAgICAgcUNEZWJ1ZyhsY1dheWxhbmRCYWNraW5nc3RvcmUpIDw8ICJE aWRuJ3QgcmVjZWl2ZSBmcmFtZSBjYWxsYmFjayBpbiB0aW1lLCB3aW5kb3cgc2hvdWxkIG5vdyBi ZSBpbmV4cG9zZWQiOworQEAgLTg2OCw2ICs4NzgsMTcgQEAgYm9vbCBRV2F5bGFuZFdpbmRvdzo6 Y3JlYXRlRGVjb3JhdGlvbigpCisgICAgICAgICAgICAgc3Vic3VyZi0+c2V0X3Bvc2l0aW9uKHBv cy54KCkgKyBtLmxlZnQoKSwgcG9zLnkoKSArIG0udG9wKCkpOworICAgICAgICAgfQorICAgICAg ICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KFFQb2ludCgpLCBnZW9tZXRyeSgpLnNpemUoKSkpOwor KworKyAgICAgICAgLy8gVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSB3aGVyZSB0aGUgYnVmZmVyIGlz IHJlY3JlYXRlZCwgYnV0IHNpbmNlCisrICAgICAgICAvLyB0aGUgY29udGVudCByZWN0IHJlbWFp bnMgdGhlIHNhbWUsIHRoZSB3aWRnZXRzIHJlbWFpbiB0aGUgc2FtZQorKyAgICAgICAgLy8gc2l6 ZSBhbmQgYXJlIG5vdCByZWRyYXduLCBsZWF2aW5nIHRoZSBuZXcgYnVmZmVyIGVtcHR5LiBBcyBh IHNpbXBsZQorKyAgICAgICAgLy8gd29yay1hcm91bmQsIHdlIHRyaWdnZXIgYSBmdWxsIGV4dHJh IHVwZGF0ZSB3aGVuZXZlciB0aGUgY2xpZW50LXNpZGUKKysgICAgICAgIC8vIHdpbmRvdyBkZWNv cmF0aW9ucyBhcmUgdG9nZ2xlZCB3aGlsZSB0aGUgd2luZG93IGlzIHNob3dpbmcuCisrICAgICAg ICAvLyBOb3RlOiBjcmVhdGVEZWNvcmF0aW9uKCkgaXMgc29tZXRpbWVzIGNhbGxlZCBmcm9tIHRo ZSByZW5kZXIgdGhyZWFkCisrICAgICAgICAvLyBvZiBRdCBRdWljay4gVGhpcyBpcyBlc3NlbnRp YWxseSB3cm9uZyBhbmQgY291bGQgcG90ZW50aWFsbHkgY2F1c2UgcHJvYmxlbXMsCisrICAgICAg ICAvLyBidXQgdW50aWwgdGhlIHVuZGVybHlpbmcgaXNzdWUgaGFzIGJlZW4gZml4ZWQsIHdlIGhh dmUgdG8gdXNlIGludm9rZU1ldGhvZCgpCisrICAgICAgICAvLyBoZXJlIHRvIGF2b2lkIGFzc2Vy dHMuCisrICAgICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHdpbmRvdygpLCAmUVdpbmRv dzo6cmVxdWVzdFVwZGF0ZSk7CisgICAgIH0KKyAKKyAgICAgcmV0dXJuIG1XaW5kb3dEZWNvcmF0 aW9uOworQEAgLTEwMjMsNiArMTA0NCwxMyBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVT Y3JlZW5zQ2hhbmdlZCgpCisgCisgICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZVdp bmRvd1NjcmVlbkNoYW5nZWQod2luZG93KCksIG5ld1NjcmVlbi0+UVBsYXRmb3JtU2NyZWVuOjpz Y3JlZW4oKSk7CisgICAgIG1MYXN0UmVwb3J0ZWRTY3JlZW4gPSBuZXdTY3JlZW47CisrICAgIGlm IChmaXhlZFRvcGxldmVsUG9zaXRpb25zICYmICFRUGxhdGZvcm1XaW5kb3c6OnBhcmVudCgpICYm IHdpbmRvdygpLT50eXBlKCkgIT0gUXQ6OlBvcHVwCisrICAgICAgICAmJiB3aW5kb3coKS0+dHlw ZSgpICE9IFF0OjpUb29sVGlwCisrICAgICAgICAmJiBnZW9tZXRyeSgpLnRvcExlZnQoKSAhPSBu ZXdTY3JlZW4tPmdlb21ldHJ5KCkudG9wTGVmdCgpKSB7CisrICAgICAgICBhdXRvIGdlb21ldHJ5 ID0gdGhpcy0+Z2VvbWV0cnkoKTsKKysgICAgICAgIGdlb21ldHJ5Lm1vdmVUbyhuZXdTY3JlZW4t Pmdlb21ldHJ5KCkudG9wTGVmdCgpKTsKKysgICAgICAgIHNldEdlb21ldHJ5KGdlb21ldHJ5KTsK KysgICAgfQorIAorICAgICBpbnQgc2NhbGUgPSBuZXdTY3JlZW4tPmlzUGxhY2Vob2xkZXIoKSA/ IDEgOiBzdGF0aWNfY2FzdDxRV2F5bGFuZFNjcmVlbiAqPihuZXdTY3JlZW4pLT5zY2FsZSgpOwor ICAgICBpZiAoc2NhbGUgIT0gbVNjYWxlKSB7CitAQCAtMTA5NCwxMCArMTEyMiwxOCBAQCBib29s IFFXYXlsYW5kV2luZG93OjpzZXRNb3VzZUdyYWJFbmFibGVkKGJvb2wgZ3JhYikKKyAgICAgcmV0 dXJuIHRydWU7CisgfQorIAorK1F0OjpXaW5kb3dTdGF0ZXMgUVdheWxhbmRXaW5kb3c6OndpbmRv d1N0YXRlcygpIGNvbnN0CisreworKyAgICByZXR1cm4gbUxhc3RSZXBvcnRlZFdpbmRvd1N0YXRl czsKKyt9CisrCisgdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlV2luZG93U3RhdGVzQ2hhbmdl ZChRdDo6V2luZG93U3RhdGVzIHN0YXRlcykKKyB7CisgICAgIGNyZWF0ZURlY29yYXRpb24oKTsK Ky0gICAgUVdpbmRvd1N5c3RlbUludGVyZmFjZTo6aGFuZGxlV2luZG93U3RhdGVDaGFuZ2VkKHdp bmRvdygpLCBzdGF0ZXMsIG1MYXN0UmVwb3J0ZWRXaW5kb3dTdGF0ZXMpOworKyAgICBRdDo6V2lu ZG93U3RhdGVzIHN0YXRlc1dpdGhvdXRBY3RpdmUgPSBzdGF0ZXMgJiB+UXQ6OldpbmRvd0FjdGl2 ZTsKKysgICAgUXQ6OldpbmRvd1N0YXRlcyBsYXN0U3RhdGVzV2l0aG91dEFjdGl2ZSA9IG1MYXN0 UmVwb3J0ZWRXaW5kb3dTdGF0ZXMgJiB+UXQ6OldpbmRvd0FjdGl2ZTsKKysgICAgUVdpbmRvd1N5 c3RlbUludGVyZmFjZTo6aGFuZGxlV2luZG93U3RhdGVDaGFuZ2VkKHdpbmRvdygpLCBzdGF0ZXNX aXRob3V0QWN0aXZlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGFzdFN0YXRlc1dpdGhvdXRBY3RpdmUpOworICAgICBtTGFzdFJlcG9ydGVk V2luZG93U3RhdGVzID0gc3RhdGVzOworIH0KKyAKK0BAIC0xMTM5LDE5ICsxMTc1LDI0IEBAIHZv aWQgUVdheWxhbmRXaW5kb3c6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQgKmV2ZW50KQorICAgICBp ZiAoZXZlbnQtPnRpbWVySWQoKSAhPSBtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklk KQorICAgICAgICAgcmV0dXJuOworIAorLSAgICBib29sIGNhbGxiYWNrVGltZXJFeHBpcmVkID0g bUZyYW1lQ2FsbGJhY2tFbGFwc2VkVGltZXIuaGFzRXhwaXJlZChtRnJhbWVDYWxsYmFja1RpbWVv dXQpOworLSAgICBpZiAoIW1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFsaWQoKSB8fCBj YWxsYmFja1RpbWVyRXhwaXJlZCApIHsKKy0gICAgICAgIGtpbGxUaW1lcihtRnJhbWVDYWxsYmFj a0NoZWNrSW50ZXJ2YWxUaW1lcklkKTsKKy0gICAgICAgIG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRl cnZhbFRpbWVySWQgPSAtMTsKKy0gICAgfQorLSAgICBpZiAobUZyYW1lQ2FsbGJhY2tFbGFwc2Vk VGltZXIuaXNWYWxpZCgpICYmIGNhbGxiYWNrVGltZXJFeHBpcmVkKSB7CistICAgICAgICBtRnJh bWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7CisrICAgIHsKKysgICAgICAgIFFN dXRleExvY2tlciBsb2NrKCZtRnJhbWVTeW5jTXV0ZXgpOworIAorLSAgICAgICAgcUNEZWJ1Zyhs Y1dheWxhbmRCYWNraW5nc3RvcmUpIDw8ICJEaWRuJ3QgcmVjZWl2ZSBmcmFtZSBjYWxsYmFjayBp biB0aW1lLCB3aW5kb3cgc2hvdWxkIG5vdyBiZSBpbmV4cG9zZWQiOworLSAgICAgICAgbUZyYW1l Q2FsbGJhY2tUaW1lZE91dCA9IHRydWU7CistICAgICAgICBtV2FpdGluZ0ZvclVwZGF0ZSA9IGZh bHNlOworLSAgICAgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KCkpOworKyAgICAgICAgYm9vbCBj YWxsYmFja1RpbWVyRXhwaXJlZCA9IG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmhhc0V4cGly ZWQobUZyYW1lQ2FsbGJhY2tUaW1lb3V0KTsKKysgICAgICAgIGlmICghbUZyYW1lQ2FsbGJhY2tF bGFwc2VkVGltZXIuaXNWYWxpZCgpIHx8IGNhbGxiYWNrVGltZXJFeHBpcmVkICkgeworKyAgICAg ICAgICAgIGtpbGxUaW1lcihtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkKTsKKysg ICAgICAgICAgICBtRnJhbWVDYWxsYmFja0NoZWNrSW50ZXJ2YWxUaW1lcklkID0gLTE7CisrICAg ICAgICB9CisrICAgICAgICBpZiAoIW1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyLmlzVmFsaWQo KSB8fCAhY2FsbGJhY2tUaW1lckV4cGlyZWQpIHsKKysgICAgICAgICAgICByZXR1cm47CisrICAg ICAgICB9CisrICAgICAgICBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1lci5pbnZhbGlkYXRlKCk7 CisgICAgIH0KKysKKysgICAgcUNEZWJ1ZyhsY1dheWxhbmRCYWNraW5nc3RvcmUpIDw8ICJEaWRu J3QgcmVjZWl2ZSBmcmFtZSBjYWxsYmFjayBpbiB0aW1lLCB3aW5kb3cgc2hvdWxkIG5vdyBiZSBp bmV4cG9zZWQiOworKyAgICBtRnJhbWVDYWxsYmFja1RpbWVkT3V0ID0gdHJ1ZTsKKysgICAgbVdh aXRpbmdGb3JVcGRhdGUgPSBmYWxzZTsKKysgICAgc2VuZEV4cG9zZUV2ZW50KFFSZWN0KCkpOwor IH0KKyAKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXF1ZXN0VXBkYXRlKCkKK0BAIC0xMTYwLDgg KzEyMDEsMTEgQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6cmVxdWVzdFVwZGF0ZSgpCisgICAgIFFf QVNTRVJUKGhhc1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkpOyAvLyBzaG91bGQgYmUgc2V0IGJ5IFFQ QQorIAorICAgICAvLyBJZiB3ZSBoYXZlIGEgZnJhbWUgY2FsbGJhY2sgYWxsIGlzIGdvb2QgYW5k IHdpbGwgYmUgdGFrZW4gY2FyZSBvZiB0aGVyZQorLSAgICBpZiAobVdhaXRpbmdGb3JGcmFtZUNh bGxiYWNrKQorLSAgICAgICAgcmV0dXJuOworKyAgICB7CisrICAgICAgICBRTXV0ZXhMb2NrZXIg bG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKyAgICAgICAgaWYgKG1XYWl0aW5nRm9yRnJhbWVD YWxsYmFjaykKKysgICAgICAgICAgICByZXR1cm47CisrICAgIH0KKyAKKyAgICAgLy8gSWYgd2Un dmUgYWxyZWFkeSBjYWxsZWQgZGVsaXZlclVwZGF0ZVJlcXVlc3QoKSwgYnV0IGhhdmVuJ3Qgc2Vl biBhbnkgYXR0YWNoK2NvbW1pdC9zd2FwIHlldAorICAgICAvLyBUaGlzIGlzIGEgc29tZXdoYXQg cmVkdW5kYW50IGJlaGF2aW9yIGFuZCBtaWdodCBpbmRpY2F0ZSBhIGJ1ZyBpbiB0aGUgY2FsbGlu ZyBjb2RlLCBzbyBsb2cKK0BAIC0xMTc0LDcgKzEyMTgsMTIgQEAgdm9pZCBRV2F5bGFuZFdpbmRv dzo6cmVxdWVzdFVwZGF0ZSgpCisgICAgIC8vIHNvIHVzZSBpbnZva2VNZXRob2QgdG8gZGVsYXkg dGhlIGRlbGl2ZXJ5IGEgYml0LgorICAgICBRTWV0YU9iamVjdDo6aW52b2tlTWV0aG9kKHRoaXMs IFt0aGlzXSB7CisgICAgICAgICAvLyBUaGluZ3MgbWlnaHQgaGF2ZSBjaGFuZ2VkIGluIHRoZSBt ZWFudGltZQorLSAgICAgICAgaWYgKGhhc1BlbmRpbmdVcGRhdGVSZXF1ZXN0KCkgJiYgIW1XYWl0 aW5nRm9yRnJhbWVDYWxsYmFjaykKKysgICAgICAgIHsKKysgICAgICAgICAgICBRTXV0ZXhMb2Nr ZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOworKyAgICAgICAgICAgIGlmIChtV2FpdGluZ0Zv ckZyYW1lQ2FsbGJhY2spCisrICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysg ICAgICAgIGlmIChoYXNQZW5kaW5nVXBkYXRlUmVxdWVzdCgpKQorICAgICAgICAgICAgIGRlbGl2 ZXJVcGRhdGVSZXF1ZXN0KCk7CisgICAgIH0sIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyB9CitA QCAtMTE4NSwxOSArMTIzNCwxOCBAQCB2b2lkIFFXYXlsYW5kV2luZG93OjpyZXF1ZXN0VXBkYXRl KCkKKyB2b2lkIFFXYXlsYW5kV2luZG93OjpoYW5kbGVVcGRhdGUoKQorIHsKKyAgICAgcUNEZWJ1 ZyhsY1dheWxhbmRCYWNraW5nc3RvcmUpIDw8ICJoYW5kbGVVcGRhdGUiIDw8IFFUaHJlYWQ6OmN1 cnJlbnRUaHJlYWQoKTsKKysKKyAgICAgLy8gVE9ETzogU2hvdWxkIHN5bmMgc3Vic3VyZmFjZXMg YXZvaWQgcmVxdWVzdGluZyBmcmFtZSBjYWxsYmFja3M/CisgICAgIFFSZWFkTG9ja2VyIGxvY2so Jm1TdXJmYWNlTG9jayk7CisgICAgIGlmICghbVN1cmZhY2UpCisgICAgICAgICByZXR1cm47Cisg CistICAgIGlmIChtRnJhbWVDYWxsYmFjaykgeworLSAgICAgICAgd2xfY2FsbGJhY2tfZGVzdHJv eShtRnJhbWVDYWxsYmFjayk7CistICAgICAgICBtRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7Cist ICAgIH0KKysgICAgUU11dGV4TG9ja2VyIGxvY2tlcigmbUZyYW1lU3luY011dGV4KTsKKysgICAg aWYgKG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjaykKKysgICAgICAgIHJldHVybjsKKyAKKy0gICAg UU11dGV4TG9ja2VyIGxvY2tlcihtRnJhbWVRdWV1ZS5tdXRleCk7CisgICAgIHN0cnVjdCA6Onds X3N1cmZhY2UgKndyYXBwZWRTdXJmYWNlID0gcmVpbnRlcnByZXRfY2FzdDxzdHJ1Y3QgOjp3bF9z dXJmYWNlICo+KHdsX3Byb3h5X2NyZWF0ZV93cmFwcGVyKG1TdXJmYWNlLT5vYmplY3QoKSkpOwor LSAgICB3bF9wcm94eV9zZXRfcXVldWUocmVpbnRlcnByZXRfY2FzdDx3bF9wcm94eSAqPih3cmFw cGVkU3VyZmFjZSksIG1GcmFtZVF1ZXVlLnF1ZXVlKTsKKysgICAgd2xfcHJveHlfc2V0X3F1ZXVl KHJlaW50ZXJwcmV0X2Nhc3Q8d2xfcHJveHkgKj4od3JhcHBlZFN1cmZhY2UpLCBtRGlzcGxheS0+ ZnJhbWVFdmVudFF1ZXVlKCkpOworICAgICBtRnJhbWVDYWxsYmFjayA9IHdsX3N1cmZhY2VfZnJh bWUod3JhcHBlZFN1cmZhY2UpOworICAgICB3bF9wcm94eV93cmFwcGVyX2Rlc3Ryb3kod3JhcHBl ZFN1cmZhY2UpOworICAgICB3bF9jYWxsYmFja19hZGRfbGlzdGVuZXIobUZyYW1lQ2FsbGJhY2ss ICZRV2F5bGFuZFdpbmRvdzo6Y2FsbGJhY2tMaXN0ZW5lciwgdGhpcyk7CitAQCAtMTIwNyw2ICsx MjU1LDggQEAgdm9pZCBRV2F5bGFuZFdpbmRvdzo6aGFuZGxlVXBkYXRlKCkKKyAgICAgLy8gU3Rh cnQgYSB0aW1lciBmb3IgaGFuZGxpbmcgdGhlIGNhc2Ugd2hlbiB0aGUgY29tcG9zaXRvciBzdG9w cyBzZW5kaW5nIGZyYW1lIGNhbGxiYWNrcy4KKyAgICAgaWYgKG1GcmFtZUNhbGxiYWNrVGltZW91 dCA+IDApIHsKKyAgICAgICAgIFFNZXRhT2JqZWN0OjppbnZva2VNZXRob2QodGhpcywgW3RoaXNd IHsKKysgICAgICAgICAgICBRTXV0ZXhMb2NrZXIgbG9ja2VyKCZtRnJhbWVTeW5jTXV0ZXgpOwor KworICAgICAgICAgICAgIGlmIChtV2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2spIHsKKyAgICAgICAg ICAgICAgICAgaWYgKG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRpbWVySWQgPCAwKQorICAg ICAgICAgICAgICAgICAgICAgbUZyYW1lQ2FsbGJhY2tDaGVja0ludGVydmFsVGltZXJJZCA9IHN0 YXJ0VGltZXIobUZyYW1lQ2FsbGJhY2tUaW1lb3V0KTsKK0BAIC0xMjY3LDYgKzEzMTcsMjAgQEAg dm9pZCBRV2F5bGFuZFdpbmRvdzo6c2V0T3BhcXVlQXJlYShjb25zdCBRUmVnaW9uICZvcGFxdWVB cmVhKQorICAgICB3bF9yZWdpb25fZGVzdHJveShyZWdpb24pOworIH0KKyAKKyt2b2lkIFFXYXls YW5kV2luZG93OjphZGRDaGlsZFBvcHVwKFFXYXlsYW5kV2luZG93ICpzdXJmYWNlKSB7CisrICAg IG1DaGlsZFBvcHVwcy5hcHBlbmQoc3VyZmFjZSk7CisrfQorKworK3ZvaWQgUVdheWxhbmRXaW5k b3c6OnJlbW92ZUNoaWxkUG9wdXAoUVdheWxhbmRXaW5kb3cgKnN1cmZhY2UpIHsKKysgICAgbUNo aWxkUG9wdXBzLnJlbW92ZUFsbChzdXJmYWNlKTsKKyt9CisrCisrdm9pZCBRV2F5bGFuZFdpbmRv dzo6Y2xvc2VDaGlsZFBvcHVwcygpIHsKKysgICAgd2hpbGUgKCFtQ2hpbGRQb3B1cHMuaXNFbXB0 eSgpKSB7CisrICAgICAgICBhdXRvIHBvcHVwID0gbUNoaWxkUG9wdXBzLnRha2VMYXN0KCk7Cisr ICAgICAgICBwb3B1cC0+cmVzZXQoKTsKKysgICAgfQorK30KKyB9CisgCisgUVRfRU5EX05BTUVT UEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93X3Au aCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3F3YXlsYW5kd2luZG93X3AuaAoraW5kZXggMDEzMzdj ZmYuLjJmMjE5ZDhjIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvcXdheWxhbmR3 aW5kb3dfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVudC9xd2F5bGFuZHdpbmRvd19wLmgK K0BAIC05OCw2ICs5OCw5IEBAIHB1YmxpYzoKKyAgICAgUVdheWxhbmRXaW5kb3coUVdpbmRvdyAq d2luZG93LCBRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpOworICAgICB+UVdheWxhbmRXaW5kb3co KSBvdmVycmlkZTsKKyAKKysgICAgLy8gS2VlcCBUb3BsZXZlbHMgcG9zaXRpb24gb24gdGhlIHRv cCBsZWZ0IGNvcm5lciBvZiB0aGVpciBzY3JlZW4KKysgICAgc3RhdGljIGlubGluZSBib29sIGZp eGVkVG9wbGV2ZWxQb3NpdGlvbnMgPSB0cnVlOworKworICAgICB2aXJ0dWFsIFdpbmRvd1R5cGUg d2luZG93VHlwZSgpIGNvbnN0ID0gMDsKKyAgICAgdmlydHVhbCB2b2lkIGVuc3VyZVNpemUoKTsK KyAgICAgV0lkIHdpbklkKCkgY29uc3Qgb3ZlcnJpZGU7CitAQCAtMTQ4LDYgKzE1MSw3IEBAIHB1 YmxpYzoKKyAgICAgdm9pZCBzZXRXaW5kb3dTdGF0ZShRdDo6V2luZG93U3RhdGVzIHN0YXRlcykg b3ZlcnJpZGU7CisgICAgIHZvaWQgc2V0V2luZG93RmxhZ3MoUXQ6OldpbmRvd0ZsYWdzIGZsYWdz KSBvdmVycmlkZTsKKyAgICAgdm9pZCBoYW5kbGVXaW5kb3dTdGF0ZXNDaGFuZ2VkKFF0OjpXaW5k b3dTdGF0ZXMgc3RhdGVzKTsKKysgICAgUXQ6OldpbmRvd1N0YXRlcyB3aW5kb3dTdGF0ZXMoKSBj b25zdDsKKyAKKyAgICAgdm9pZCByYWlzZSgpIG92ZXJyaWRlOworICAgICB2b2lkIGxvd2VyKCkg b3ZlcnJpZGU7CitAQCAtMjA2LDYgKzIxMCwxMCBAQCBwdWJsaWM6CisgICAgIHZvaWQgaGFuZGxl VXBkYXRlKCk7CisgICAgIHZvaWQgZGVsaXZlclVwZGF0ZVJlcXVlc3QoKSBvdmVycmlkZTsKKyAK KysgICAgdm9pZCBhZGRDaGlsZFBvcHVwKFFXYXlsYW5kV2luZG93KiBjaGlsZCk7CisrICAgIHZv aWQgcmVtb3ZlQ2hpbGRQb3B1cChRV2F5bGFuZFdpbmRvdyogY2hpbGQpOworKyAgICB2b2lkIGNs b3NlQ2hpbGRQb3B1cHMoKTsKKysKKyBwdWJsaWMgc2xvdHM6CisgICAgIHZvaWQgYXBwbHlDb25m aWd1cmUoKTsKKyAKK0BAIC0yMTUsNyArMjIzLDExIEBAIHNpZ25hbHM6CisgCisgcHJvdGVjdGVk OgorICAgICBRV2F5bGFuZERpc3BsYXkgKm1EaXNwbGF5ID0gbnVsbHB0cjsKKysKKysgICAgLy8g bVN1cmZhY2UgY2FuIGJlIHdyaXR0ZW4gYnkgdGhlIG1haW4gdGhyZWFkLiBPdGhlciB0aHJlYWRz IHNob3VsZCBjbGFpbSBhIHJlYWQgbG9jayBmb3IgYWNjZXNzCisrICAgIG11dGFibGUgUVJlYWRX cml0ZUxvY2sgbVN1cmZhY2VMb2NrOworICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5bGFuZFN1cmZh Y2U+IG1TdXJmYWNlOworKworICAgICBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqbVNoZWxsU3VyZmFj ZSA9IG51bGxwdHI7CisgICAgIFFXYXlsYW5kU3ViU3VyZmFjZSAqbVN1YlN1cmZhY2VXaW5kb3cg PSBudWxscHRyOworICAgICBRVmVjdG9yPFFXYXlsYW5kU3ViU3VyZmFjZSAqPiBtQ2hpbGRyZW47 CitAQCAtMjI1LDEzICsyMzcsMTQgQEAgcHJvdGVjdGVkOgorICAgICBRdDo6TW91c2VCdXR0b25z IG1Nb3VzZVByZXNzZWRJbkNvbnRlbnRBcmVhID0gUXQ6Ok5vQnV0dG9uOworIAorICAgICBXSWQg bVdpbmRvd0lkOworLSAgICBib29sIG1XYWl0aW5nRm9yRnJhbWVDYWxsYmFjayA9IGZhbHNlOwor ICAgICBib29sIG1GcmFtZUNhbGxiYWNrVGltZWRPdXQgPSBmYWxzZTsgLy8gV2hldGhlciB0aGUg ZnJhbWUgY2FsbGJhY2sgaGFzIHRpbWVkIG91dAorLSAgICBib29sIG1XYWl0aW5nRm9yVXBkYXRl RGVsaXZlcnkgPSBmYWxzZTsKKyAgICAgaW50IG1GcmFtZUNhbGxiYWNrQ2hlY2tJbnRlcnZhbFRp bWVySWQgPSAtMTsKKy0gICAgUUVsYXBzZWRUaW1lciBtRnJhbWVDYWxsYmFja0VsYXBzZWRUaW1l cjsKKy0gICAgc3RydWN0IDo6d2xfY2FsbGJhY2sgKm1GcmFtZUNhbGxiYWNrID0gbnVsbHB0cjsK Ky0gICAgUVdheWxhbmREaXNwbGF5OjpGcmFtZVF1ZXVlIG1GcmFtZVF1ZXVlOworKyAgICBRQXRv bWljSW50IG1XYWl0aW5nRm9yVXBkYXRlRGVsaXZlcnkgPSBmYWxzZTsKKysKKysgICAgYm9vbCBt V2FpdGluZ0ZvckZyYW1lQ2FsbGJhY2sgPSBmYWxzZTsgLy8gUHJvdGVjdGVkIGJ5IG1GcmFtZVN5 bmNNdXRleAorKyAgICBRRWxhcHNlZFRpbWVyIG1GcmFtZUNhbGxiYWNrRWxhcHNlZFRpbWVyOyAv LyBQcm90ZWN0ZWQgYnkgbUZyYW1lU3luY011dGV4CisrICAgIHN0cnVjdCA6OndsX2NhbGxiYWNr ICptRnJhbWVDYWxsYmFjayA9IG51bGxwdHI7IC8vIFByb3RlY3RlZCBieSBtRnJhbWVTeW5jTXV0 ZXgKKysgICAgUU11dGV4IG1GcmFtZVN5bmNNdXRleDsKKyAgICAgUVdhaXRDb25kaXRpb24gbUZy YW1lU3luY1dhaXQ7CisgCisgICAgIC8vIFRydWUgd2hlbiB3ZSBoYXZlIGNhbGxlZCBkZWxpdmVy UmVxdWVzdFVwZGF0ZSwgYnV0IHRoZSBjbGllbnQgaGFzIG5vdCB5ZXQgYXR0YWNoZWQgYSBuZXcg YnVmZmVyCitAQCAtMjYxLDYgKzI3NCw4IEBAIHByb3RlY3RlZDoKKyAgICAgUVdheWxhbmRCdWZm ZXIgKm1RdWV1ZWRCdWZmZXIgPSBudWxscHRyOworICAgICBRUmVnaW9uIG1RdWV1ZWRCdWZmZXJE YW1hZ2U7CisgCisrICAgIFFMaXN0PFFQb2ludGVyPFFXYXlsYW5kV2luZG93Pj4gbUNoaWxkUG9w dXBzOworKworIHByaXZhdGU6CisgICAgIHZvaWQgc2V0R2VvbWV0cnlfaGVscGVyKGNvbnN0IFFS ZWN0ICZyZWN0KTsKKyAgICAgdm9pZCBpbml0V2luZG93KCk7CitAQCAtMjgzLDEyICsyOTgsMTAg QEAgcHJpdmF0ZToKKyAgICAgUVJlY3QgbUxhc3RFeHBvc2VHZW9tZXRyeTsKKyAKKyAgICAgc3Rh dGljIGNvbnN0IHdsX2NhbGxiYWNrX2xpc3RlbmVyIGNhbGxiYWNrTGlzdGVuZXI7CistICAgIHZv aWQgaGFuZGxlRnJhbWVDYWxsYmFjaygpOworKyAgICB2b2lkIGhhbmRsZUZyYW1lQ2FsbGJhY2so c3RydWN0IDo6d2xfY2FsbGJhY2sqIGNhbGxiYWNrKTsKKyAKKyAgICAgc3RhdGljIFFXYXlsYW5k V2luZG93ICptTW91c2VHcmFiOworIAorLSAgICBtdXRhYmxlIFFSZWFkV3JpdGVMb2NrIG1TdXJm YWNlTG9jazsKKy0KKyAgICAgZnJpZW5kIGNsYXNzIFFXYXlsYW5kU3ViU3VyZmFjZTsKKyB9Owor IAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvY2xpZW50L3NoZWxsaW50ZWdyYXRpb24vcXdh eWxhbmRzaGVsbGludGVncmF0aW9uX3AuaCBiL3F0d2F5bGFuZC9zcmMvY2xpZW50L3NoZWxsaW50 ZWdyYXRpb24vcXdheWxhbmRzaGVsbGludGVncmF0aW9uX3AuaAoraW5kZXggY2NhZDAwNDguLjRj YzliM2I4IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9jbGllbnQvc2hlbGxpbnRlZ3JhdGlv bi9xd2F5bGFuZHNoZWxsaW50ZWdyYXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL2NsaWVu dC9zaGVsbGludGVncmF0aW9uL3F3YXlsYW5kc2hlbGxpbnRlZ3JhdGlvbl9wLmgKK0BAIC03Mywx MSArNzMsMTAgQEAgcHVibGljOgorICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgIH0KKyAgICAg dmlydHVhbCBRV2F5bGFuZFNoZWxsU3VyZmFjZSAqY3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5k V2luZG93ICp3aW5kb3cpID0gMDsKKysgICAgLy8ga2VwdCBmb3IgYmluYXJ5IGNvbXBhdCB3aXRo IGxheWVyLXNoZWxsLXF0CisgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hh bmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykg eworLSAgICAgICAgaWYgKG5ld0ZvY3VzKQorLSAgICAgICAgICAgIG1fZGlzcGxheS0+aGFuZGxl V2luZG93QWN0aXZhdGVkKG5ld0ZvY3VzKTsKKy0gICAgICAgIGlmIChvbGRGb2N1cykKKy0gICAg ICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG9sZEZvY3VzKTsKKysg ICAgICAgIFFfVU5VU0VEKG5ld0ZvY3VzKTsKKysgICAgICAgIFFfVU5VU0VEKG9sZEZvY3VzKTsK KyAgICAgfQorICAgICB2aXJ0dWFsIHZvaWQgKm5hdGl2ZVJlc291cmNlRm9yV2luZG93KGNvbnN0 IFFCeXRlQXJyYXkgJnJlc291cmNlLCBRV2luZG93ICp3aW5kb3cpIHsKKyAgICAgICAgIFFfVU5V U0VEKHJlc291cmNlKTsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL2NvbXBvc2l0b3IvY29u ZmlndXJlLmpzb24gYi9xdHdheWxhbmQvc3JjL2NvbXBvc2l0b3IvY29uZmlndXJlLmpzb24KK2lu ZGV4IGJjZmQ1MjE1Li5kYTk1ZDA3YiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvY29tcG9z aXRvci9jb25maWd1cmUuanNvbgorKysrIGIvcXR3YXlsYW5kL3NyYy9jb21wb3NpdG9yL2NvbmZp Z3VyZS5qc29uCitAQCAtNyw2ICs3LDMxIEBACisgICAgICJ0ZXN0RGlyIjogIi4uLy4uL2NvbmZp Zy50ZXN0cyIsCisgCisgICAgICJsaWJyYXJpZXMiOiB7CisrICAgICAgICAid2F5bGFuZC1jbGll bnQiOiB7CisrICAgICAgICAgICAgImxhYmVsIjogIldheWxhbmQgY2xpZW50IGxpYnJhcnkiLAor KyAgICAgICAgICAgICJoZWFkZXJzIjogIndheWxhbmQtdmVyc2lvbi5oIiwKKysgICAgICAgICAg ICAidGVzdCI6IHsKKysgICAgICAgICAgICAgICAgIm1haW4iOiBbCisrICAgICAgICAgICAgICAg ICAgICAiI2lmIFdBWUxBTkRfVkVSU0lPTl9NQUpPUiA8IDEiLAorKyAgICAgICAgICAgICAgICAg ICAgIiMgZXJyb3IgV2F5bGFuZCAxLjguMCBvciBoaWdoZXIgcmVxdWlyZWQiLAorKyAgICAgICAg ICAgICAgICAgICAgIiNlbmRpZiIsCisrICAgICAgICAgICAgICAgICAgICAiI2lmIFdBWUxBTkRf VkVSU0lPTl9NQUpPUiA9PSAxIiwKKysgICAgICAgICAgICAgICAgICAgICIjIGlmIFdBWUxBTkRf VkVSU0lPTl9NSU5PUiA8IDgiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgIGVycm9yIFdheWxh bmQgMS44LjAgb3IgaGlnaGVyIHJlcXVpcmVkIiwKKysgICAgICAgICAgICAgICAgICAgICIjIGVu ZGlmIiwKKysgICAgICAgICAgICAgICAgICAgICIjIGlmIFdBWUxBTkRfVkVSU0lPTl9NSU5PUiA9 PSA4IiwKKysgICAgICAgICAgICAgICAgICAgICIjICBpZiBXQVlMQU5EX1ZFUlNJT05fTUlDUk8g PCAwIiwKKysgICAgICAgICAgICAgICAgICAgICIjICAgZXJyb3IgV2F5bGFuZCAxLjguMCBvciBo aWdoZXIgcmVxdWlyZWQiLAorKyAgICAgICAgICAgICAgICAgICAgIiMgIGVuZGlmIiwKKysgICAg ICAgICAgICAgICAgICAgICIjIGVuZGlmIiwKKysgICAgICAgICAgICAgICAgICAgICIjZW5kaWYi CisrICAgICAgICAgICAgICAgICBdCisrICAgICAgICAgICAgfSwKKysgICAgICAgICAgICAic291 cmNlcyI6IFsKKysgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJwa2dDb25maWciLCAiYXJncyI6 ICJ3YXlsYW5kLWNsaWVudCIgfSwKKysgICAgICAgICAgICAgICAgIi1sd2F5bGFuZC1jbGllbnQi CisrICAgICAgICAgICAgXQorKyAgICAgICAgfSwKKyAgICAgICAgICJ3YXlsYW5kLXNlcnZlciI6 IHsKKyAgICAgICAgICAgICAibGFiZWwiOiAid2F5bGFuZC1zZXJ2ZXIiLAorICAgICAgICAgICAg ICJoZWFkZXJzIjogIndheWxhbmQtdmVyc2lvbi5oIiwKK0BAIC0xNTEsOCArMTc2LDcgQEAKKyAg ICAgICAgICAgICAgICAgICAgICIjZW5kaWYiCisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg ICAgICB9LAorLSAgICAgICAgICAgICJsaWJzIjogIi1sZHJtIiwKKy0gICAgICAgICAgICAidXNl IjogImVnbCIKKysgICAgICAgICAgICAidXNlIjogImRybSBlZ2wiCisgICAgICAgICB9LAorICAg ICAgICAgImRtYWJ1Zi1jbGllbnQtYnVmZmVyIjogeworICAgICAgICAgICAgICJsYWJlbCI6ICJM aW51eCBDbGllbnQgZG1hLWJ1ZiBCdWZmZXIgU2hhcmluZyIsCitAQCAtMTc2LDggKzIwMCw3IEBA CisgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIDA7IgorICAgICAgICAgICAgICAgICBdCisg ICAgICAgICAgICAgfSwKKy0gICAgICAgICAgICAibGlicyI6ICItbGRybSIsCistICAgICAgICAg ICAgInVzZSI6ICJlZ2wiCisrICAgICAgICAgICAgInVzZSI6ICJkcm0gZWdsIgorICAgICAgICAg fSwKKyAgICAgICAgICJ2dWxrYW4tc2VydmVyLWJ1ZmZlciI6IHsKKyAgICAgICAgICAgICAibGFi ZWwiOiAiVnVsa2FuIEJ1ZmZlciBTaGFyaW5nIiwKK0BAIC0xOTUsNyArMjE4LDggQEAKKyAgICAg ICAgICAgICAgICAgICAgICJleHBvcnRBbGxvY0luZm8uaGFuZGxlVHlwZXMgPSBWS19FWFRFUk5B TF9NRU1PUllfSEFORExFX1RZUEVfT1BBUVVFX0ZEX0JJVF9LSFI7IiwKKyAgICAgICAgICAgICAg ICAgICAgICJyZXR1cm4gMDsiCisgICAgICAgICAgICAgICAgIF0KKy0gICAgICAgICAgICB9Cisr ICAgICAgICAgICAgfSwKKysgICAgICAgICAgICAidXNlIjogIndheWxhbmQtY2xpZW50IgorICAg ICAgICAgfQorICAgICB9LAorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVp bnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuY3BwIGIvcXR3 YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFu ZGVnbHdpbmRvdy5jcHAKK2luZGV4IDc4ODlmNTc1Li42NDE0MDY3MiAxMDA2NDQKKy0tLSBhL3F0 d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxh bmRlZ2x3aW5kb3cuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24v Y2xpZW50L3dheWxhbmQtZWdsL3F3YXlsYW5kZWdsd2luZG93LmNwcAorQEAgLTQwLDYgKzQwLDcg QEAKKyAjaW5jbHVkZSAicXdheWxhbmRlZ2x3aW5kb3cuaCIKKyAKKyAjaW5jbHVkZSA8UXRXYXls YW5kQ2xpZW50L3ByaXZhdGUvcXdheWxhbmRzY3JlZW5fcC5oPgorKyNpbmNsdWRlIDxRdFdheWxh bmRDbGllbnQvcHJpdmF0ZS9xd2F5bGFuZHN1cmZhY2VfcC5oPgorICNpbmNsdWRlICJxd2F5bGFu ZGdsY29udGV4dC5oIgorIAorICNpbmNsdWRlIDxRdEVnbFN1cHBvcnQvcHJpdmF0ZS9xZWdsY29u dmVuaWVuY2VfcC5oPgorQEAgLTEyNCw2ICsxMjUsNyBAQCB2b2lkIFFXYXlsYW5kRWdsV2luZG93 Ojp1cGRhdGVTdXJmYWNlKGJvb2wgY3JlYXRlKQorICAgICAgICAgfQorICAgICAgICAgbU9mZnNl dCA9IFFQb2ludCgpOworICAgICB9IGVsc2UgeworKyAgICAgICAgUVJlYWRMb2NrZXIgbG9ja2Vy KCZtU3VyZmFjZUxvY2spOworICAgICAgICAgaWYgKG1fd2F5bGFuZEVnbFdpbmRvdykgeworICAg ICAgICAgICAgIGludCBjdXJyZW50X3dpZHRoLCBjdXJyZW50X2hlaWdodDsKKyAgICAgICAgICAg ICBzdGF0aWMgYm9vbCBkaXNhYmxlUmVzaXplQ2hlY2sgPSBxZ2V0ZW52KCJRVF9XQVlMQU5EX0RJ U0FCTEVfUkVTSVpFQ0hFQ0siKS50b0ludCgpOworQEAgLTEzMSwxNCArMTMzLDE2IEBAIHZvaWQg UVdheWxhbmRFZ2xXaW5kb3c6OnVwZGF0ZVN1cmZhY2UoYm9vbCBjcmVhdGUpCisgICAgICAgICAg ICAgaWYgKCFkaXNhYmxlUmVzaXplQ2hlY2spIHsKKyAgICAgICAgICAgICAgICAgd2xfZWdsX3dp bmRvd19nZXRfYXR0YWNoZWRfc2l6ZShtX3dheWxhbmRFZ2xXaW5kb3csICZjdXJyZW50X3dpZHRo LCAmY3VycmVudF9oZWlnaHQpOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBpZiAoZGlz YWJsZVJlc2l6ZUNoZWNrIHx8IChjdXJyZW50X3dpZHRoICE9IHNpemVXaXRoTWFyZ2lucy53aWR0 aCgpIHx8IGN1cnJlbnRfaGVpZ2h0ICE9IHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSkpIHsKKysg ICAgICAgICAgICBpZiAoZGlzYWJsZVJlc2l6ZUNoZWNrIHx8IChjdXJyZW50X3dpZHRoICE9IHNp emVXaXRoTWFyZ2lucy53aWR0aCgpIHx8IGN1cnJlbnRfaGVpZ2h0ICE9IHNpemVXaXRoTWFyZ2lu cy5oZWlnaHQoKSkgfHwgbV9yZXF1ZXN0ZWRTaXplICE9IHNpemVXaXRoTWFyZ2lucykgeworICAg ICAgICAgICAgICAgICB3bF9lZ2xfd2luZG93X3Jlc2l6ZShtX3dheWxhbmRFZ2xXaW5kb3csIHNp emVXaXRoTWFyZ2lucy53aWR0aCgpLCBzaXplV2l0aE1hcmdpbnMuaGVpZ2h0KCksIG1PZmZzZXQu eCgpLCBtT2Zmc2V0LnkoKSk7CisrICAgICAgICAgICAgICAgIG1fcmVxdWVzdGVkU2l6ZSA9IHNp emVXaXRoTWFyZ2luczsKKyAgICAgICAgICAgICAgICAgbU9mZnNldCA9IFFQb2ludCgpOworIAor ICAgICAgICAgICAgICAgICBtX3Jlc2l6ZSA9IHRydWU7CisgICAgICAgICAgICAgfQorLSAgICAg ICAgfSBlbHNlIGlmIChjcmVhdGUgJiYgd2xTdXJmYWNlKCkpIHsKKy0gICAgICAgICAgICBtX3dh eWxhbmRFZ2xXaW5kb3cgPSB3bF9lZ2xfd2luZG93X2NyZWF0ZSh3bFN1cmZhY2UoKSwgc2l6ZVdp dGhNYXJnaW5zLndpZHRoKCksIHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSk7CisrICAgICAgICB9 IGVsc2UgaWYgKGNyZWF0ZSAmJiBtU3VyZmFjZSkgeworKyAgICAgICAgICAgIG1fd2F5bGFuZEVn bFdpbmRvdyA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKG1TdXJmYWNlLT5vYmplY3QoKSwgc2l6ZVdp dGhNYXJnaW5zLndpZHRoKCksIHNpemVXaXRoTWFyZ2lucy5oZWlnaHQoKSk7CisrICAgICAgICAg ICAgbV9yZXF1ZXN0ZWRTaXplID0gc2l6ZVdpdGhNYXJnaW5zOworICAgICAgICAgfQorIAorICAg ICAgICAgaWYgKCFtX2VnbFN1cmZhY2UgJiYgbV93YXlsYW5kRWdsV2luZG93ICYmIGNyZWF0ZSkg eworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jbGllbnQv d2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuaCBiL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVp bnRlZ3JhdGlvbi9jbGllbnQvd2F5bGFuZC1lZ2wvcXdheWxhbmRlZ2x3aW5kb3cuaAoraW5kZXgg NWIxZjRkNTYuLjAwNzlkZmVmIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9oYXJkd2FyZWlu dGVncmF0aW9uL2NsaWVudC93YXlsYW5kLWVnbC9xd2F5bGFuZGVnbHdpbmRvdy5oCisrKysgYi9x dHdheWxhbmQvc3JjL2hhcmR3YXJlaW50ZWdyYXRpb24vY2xpZW50L3dheWxhbmQtZWdsL3F3YXls YW5kZWdsd2luZG93LmgKK0BAIC04OCw2ICs4OCw3IEBAIHByaXZhdGU6CisgICAgIG11dGFibGUg UU9wZW5HTEZyYW1lYnVmZmVyT2JqZWN0ICptX2NvbnRlbnRGQk8gPSBudWxscHRyOworIAorICAg ICBRU3VyZmFjZUZvcm1hdCBtX2Zvcm1hdDsKKysgICAgUVNpemUgbV9yZXF1ZXN0ZWRTaXplOwor IH07CisgCisgfQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlv bi9jb21wb3NpdG9yL2xpbnV4LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1Zi5oIGIvcXR3 YXlsYW5kL3NyYy9oYXJkd2FyZWludGVncmF0aW9uL2NvbXBvc2l0b3IvbGludXgtZG1hYnVmLXVu c3RhYmxlLXYxL2xpbnV4ZG1hYnVmLmgKK2luZGV4IDU2YTcxMGMzLi5jNmE4YjZjNiAxMDA2NDQK Ky0tLSBhL3F0d2F5bGFuZC9zcmMvaGFyZHdhcmVpbnRlZ3JhdGlvbi9jb21wb3NpdG9yL2xpbnV4 LWRtYWJ1Zi11bnN0YWJsZS12MS9saW51eGRtYWJ1Zi5oCisrKysgYi9xdHdheWxhbmQvc3JjL2hh cmR3YXJlaW50ZWdyYXRpb24vY29tcG9zaXRvci9saW51eC1kbWFidWYtdW5zdGFibGUtdjEvbGlu dXhkbWFidWYuaAorQEAgLTQxLDYgKzQxLDggQEAKKyAjaW5jbHVkZSA8UXRDb3JlL1FUZXh0U3Ry ZWFtPgorICNpbmNsdWRlIDxRdEd1aS9RT3BlbkdMVGV4dHVyZT4KKyAKKysjaW5jbHVkZSA8YXJy YXk+CisrCisgI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyAjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgor IAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9kZWNvcmF0aW9ucy9icmFkaWVu dC9tYWluLmNwcCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9kZWNvcmF0aW9ucy9icmFkaWVudC9t YWluLmNwcAoraW5kZXggZTc1ZmRhM2MuLmZhODg1MTQzIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5k L3NyYy9wbHVnaW5zL2RlY29yYXRpb25zL2JyYWRpZW50L21haW4uY3BwCisrKysgYi9xdHdheWxh bmQvc3JjL3BsdWdpbnMvZGVjb3JhdGlvbnMvYnJhZGllbnQvbWFpbi5jcHAKK0BAIC0xNjQsMTMg KzE2NCwxMCBAQCB2b2lkIFFXYXlsYW5kQnJhZGllbnREZWNvcmF0aW9uOjpwYWludChRUGFpbnRE ZXZpY2UgKmRldmljZSkKKyAgICAgLy8gV2luZG93IGljb24KKyAgICAgUUljb24gaWNvbiA9IHdh eWxhbmRXaW5kb3coKS0+d2luZG93SWNvbigpOworICAgICBpZiAoIWljb24uaXNOdWxsKCkpIHsK Ky0gICAgICAgIFFQaXhtYXAgcGl4bWFwID0gaWNvbi5waXhtYXAoUVNpemUoMTI4LCAxMjgpKTsK Ky0gICAgICAgIFFQaXhtYXAgc2NhbGVkID0gcGl4bWFwLnNjYWxlZCgyMiwgMjIsIFF0OjpJZ25v cmVBc3BlY3RSYXRpbywgUXQ6OlNtb290aFRyYW5zZm9ybWF0aW9uKTsKKy0KKyAgICAgICAgIFFS ZWN0RiBpY29uUmVjdCgwLCAwLCAyMiwgMjIpOworLSAgICAgICAgcC5kcmF3UGl4bWFwKGljb25S ZWN0LmFkanVzdGVkKG1hcmdpbnMoKS5sZWZ0KCkgKyBCVVRUT05fU1BBQ0lORywgNCwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5zKCkubGVmdCgpICsgQlVU VE9OX1NQQUNJTkcsIDQpLAorLSAgICAgICAgICAgICAgICAgICAgIHNjYWxlZCwgaWNvblJlY3Qp OworKyAgICAgICAgaWNvblJlY3QuYWRqdXN0KG1hcmdpbnMoKS5sZWZ0KCkgKyBCVVRUT05fU1BB Q0lORywgNCwKKysgICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5zKCkubGVmdCgpICsgQlVU VE9OX1NQQUNJTkcsIDQpLAorKyAgICAgICAgaWNvbi5wYWludCgmcCwgaWNvblJlY3QudG9SZWN0 KCkpOworICAgICB9CisgCisgICAgIC8vIFdpbmRvdyB0aXRsZQorZGlmZiAtLWdpdCBhL3F0d2F5 bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhk Z3BvcHVwdjUuY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRn LXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NS5jcHAKK2luZGV4IDg1ZDI1ZTNjLi42MGJkZDQ5 MSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hk Zy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjUuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1LmNw cAorQEAgLTQ3LDE4ICs0NywyMSBAQCBRVF9CRUdJTl9OQU1FU1BBQ0UKKyAKKyBuYW1lc3BhY2Ug UXRXYXlsYW5kQ2xpZW50IHsKKyAKKy1RV2F5bGFuZFhkZ1BvcHVwVjU6OlFXYXlsYW5kWGRnUG9w dXBWNShzdHJ1Y3QgOjp4ZGdfcG9wdXBfdjUgKnBvcHVwLCBRV2F5bGFuZFdpbmRvdyAqd2luZG93 KQorK1FXYXlsYW5kWGRnUG9wdXBWNTo6UVdheWxhbmRYZGdQb3B1cFY1KHN0cnVjdCA6OnhkZ19w b3B1cF92NSAqcG9wdXAsIFFXYXlsYW5kV2luZG93KiBwYXJlbnQsIFFXYXlsYW5kV2luZG93ICp3 aW5kb3cpCisgICAgIDogUVdheWxhbmRTaGVsbFN1cmZhY2Uod2luZG93KQorICAgICAsIFF0V2F5 bGFuZDo6eGRnX3BvcHVwX3Y1KHBvcHVwKQorKyAgICAsIG1fcGFyZW50KHBhcmVudCkKKyAgICAg LCBtX3dpbmRvdyh3aW5kb3cpCisgeworICAgICBpZiAod2luZG93LT5kaXNwbGF5KCktPndpbmRv d0V4dGVuc2lvbigpKQorICAgICAgICAgbV9leHRlbmRlZFdpbmRvdyA9IG5ldyBRV2F5bGFuZEV4 dGVuZGVkU3VyZmFjZSh3aW5kb3cpOworKyAgICBtX3BhcmVudC0+YWRkQ2hpbGRQb3B1cChtX3dp bmRvdyk7CisgfQorIAorIFFXYXlsYW5kWGRnUG9wdXBWNTo6flFXYXlsYW5kWGRnUG9wdXBWNSgp CisgeworICAgICB4ZGdfcG9wdXBfZGVzdHJveShvYmplY3QoKSk7CisrICAgIG1fcGFyZW50LT5y ZW1vdmVDaGlsZFBvcHVwKG1fd2luZG93KTsKKyAgICAgZGVsZXRlIG1fZXh0ZW5kZWRXaW5kb3c7 CisgfQorIAorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjVfcC5oIGIvcXR3YXlsYW5kL3NyYy9w bHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRncG9wdXB2NV9w LmgKK2luZGV4IDc0OTRmNmE2Li5kODVmMTMwYiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMv cGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3BvcHVwdjVf cC5oCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwtdjUvcXdheWxhbmR4ZGdwb3B1cHY1X3AuaAorQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgUV9X QVlMQU5EX0NMSUVOVF9FWFBPUlQgUVdheWxhbmRYZGdQb3B1cFY1IDogcHVibGljIFFXYXlsYW5k U2hlbGxTdXJmYWNlCisgeworICAgICBRX09CSkVDVAorIHB1YmxpYzoKKy0gICAgUVdheWxhbmRY ZGdQb3B1cFY1KHN0cnVjdCA6OnhkZ19wb3B1cF92NSAqcG9wdXAsIFFXYXlsYW5kV2luZG93ICp3 aW5kb3cpOworKyAgICBRV2F5bGFuZFhkZ1BvcHVwVjUoc3RydWN0IDo6eGRnX3BvcHVwX3Y1ICpw b3B1cCwgUVdheWxhbmRXaW5kb3cqIHBhcmVudCwgUVdheWxhbmRXaW5kb3cgKndpbmRvdyk7Cisg ICAgIH5RV2F5bGFuZFhkZ1BvcHVwVjUoKSBvdmVycmlkZTsKKyAKKyBwcm90ZWN0ZWQ6CitAQCAt NzgsNiArNzgsNyBAQCBwcm90ZWN0ZWQ6CisgCisgcHJpdmF0ZToKKyAgICAgUVdheWxhbmRFeHRl bmRlZFN1cmZhY2UgKm1fZXh0ZW5kZWRXaW5kb3cgPSBudWxscHRyOworKyAgICBRV2F5bGFuZFdp bmRvdyAqbV9wYXJlbnQgPSBudWxscHRyOworICAgICBRV2F5bGFuZFdpbmRvdyAqbV93aW5kb3cg PSBudWxscHRyOworIH07CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5keGRnc2hlbGx2NS5jcHAgYi9xdHdh eWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4 ZGdzaGVsbHY1LmNwcAoraW5kZXggN2UyNDJjNGEuLmRlZjg0NTJhIDEwMDY0NAorLS0tIGEvcXR3 YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY1L3F3YXlsYW5k eGRnc2hlbGx2NS5jcHAKKysrKyBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjUuY3BwCitAQCAtODQsNyArODQsNyBA QCBRV2F5bGFuZFhkZ1BvcHVwVjUgKlFXYXlsYW5kWGRnU2hlbGxWNTo6Y3JlYXRlWGRnUG9wdXAo UVdheWxhbmRXaW5kb3cgKndpbmRvdywgUQorICAgICBpbnQgeCA9IHBvc2l0aW9uLngoKSArIHBh cmVudFdpbmRvdy0+ZnJhbWVNYXJnaW5zKCkubGVmdCgpOworICAgICBpbnQgeSA9IHBvc2l0aW9u LnkoKSArIHBhcmVudFdpbmRvdy0+ZnJhbWVNYXJnaW5zKCkudG9wKCk7CisgCistICAgIGF1dG8g cG9wdXAgPSBuZXcgUVdheWxhbmRYZGdQb3B1cFY1KGdldF94ZGdfcG9wdXAod2luZG93LT53bFN1 cmZhY2UoKSwgcGFyZW50U3VyZmFjZSwgc2VhdCwgbV9wb3B1cFNlcmlhbCwgeCwgeSksIHdpbmRv dyk7CisrICAgIGF1dG8gcG9wdXAgPSBuZXcgUVdheWxhbmRYZGdQb3B1cFY1KGdldF94ZGdfcG9w dXAod2luZG93LT53bFN1cmZhY2UoKSwgcGFyZW50U3VyZmFjZSwgc2VhdCwgbV9wb3B1cFNlcmlh bCwgeCwgeSksIHBhcmVudFdpbmRvdywgd2luZG93KTsKKyAgICAgbV9wb3B1cHMuYXBwZW5kKHdp bmRvdyk7CisgICAgIFFPYmplY3Q6OmNvbm5lY3QocG9wdXAsICZRV2F5bGFuZFhkZ1BvcHVwVjU6 OmRlc3Ryb3llZCwgW3RoaXMsIHdpbmRvd10oKXsKKyAgICAgICAgIG1fcG9wdXBzLnJlbW92ZU9u ZSh3aW5kb3cpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVn cmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhkZ3NoZWxsdjVpbnRlZ3JhdGlvbi5jcHAgYi9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxh bmR4ZGdzaGVsbHY1aW50ZWdyYXRpb24uY3BwCitpbmRleCA0ZTI1OTQ5Zi4uY2ZjNjA5MzkgMTAw NjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hl bGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb24uY3BwCisrKysgYi9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVs bHY1aW50ZWdyYXRpb24uY3BwCitAQCAtODUsMTMgKzg1LDYgQEAgUVdheWxhbmRTaGVsbFN1cmZh Y2UgKlFXYXlsYW5kWGRnU2hlbGxWNUludGVncmF0aW9uOjpjcmVhdGVTaGVsbFN1cmZhY2UoUVdh eWxhbmQKKyAgICAgcmV0dXJuIG1feGRnU2hlbGwtPmNyZWF0ZVhkZ1N1cmZhY2Uod2luZG93KTsK KyB9CisgCistdm9pZCBRV2F5bGFuZFhkZ1NoZWxsVjVJbnRlZ3JhdGlvbjo6aGFuZGxlS2V5Ym9h cmRGb2N1c0NoYW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAq b2xkRm9jdXMpIHsKKy0gICAgaWYgKG5ld0ZvY3VzICYmIHFvYmplY3RfY2FzdDxRV2F5bGFuZFhk Z1BvcHVwVjUgKj4obmV3Rm9jdXMtPnNoZWxsU3VyZmFjZSgpKSkKKy0gICAgICAgIG1fZGlzcGxh eS0+aGFuZGxlV2luZG93QWN0aXZhdGVkKG5ld0ZvY3VzKTsKKy0gICAgaWYgKG9sZEZvY3VzICYm IHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1BvcHVwVjUgKj4ob2xkRm9jdXMtPnNoZWxsU3VyZmFj ZSgpKSkKKy0gICAgICAgIG1fZGlzcGxheS0+aGFuZGxlV2luZG93RGVhY3RpdmF0ZWQob2xkRm9j dXMpOworLX0KKy0KKyB9CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5 bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12NS9xd2F5bGFuZHhk Z3NoZWxsdjVpbnRlZ3JhdGlvbl9wLmggYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRl Z3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb25fcC5oCitp bmRleCBjZTZiZGI5ZS4uYWVkODg2NzAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdy YXRpb25fcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94 ZGctc2hlbGwtdjUvcXdheWxhbmR4ZGdzaGVsbHY1aW50ZWdyYXRpb25fcC5oCitAQCAtNjcsNyAr NjcsNiBAQCBwdWJsaWM6CisgICAgIFFXYXlsYW5kWGRnU2hlbGxWNUludGVncmF0aW9uKCkge30K KyAgICAgYm9vbCBpbml0aWFsaXplKFFXYXlsYW5kRGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7 CisgICAgIFFXYXlsYW5kU2hlbGxTdXJmYWNlICpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmRX aW5kb3cgKndpbmRvdykgb3ZlcnJpZGU7CistICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRGb2N1c0No YW5nZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMp IG92ZXJyaWRlOworIAorIHByaXZhdGU6CisgICAgIFFTY29wZWRQb2ludGVyPFFXYXlsYW5kWGRn U2hlbGxWNT4gbV94ZGdTaGVsbDsKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMv c2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2LmNwcCBiL3F0 d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC12Ni9xd2F5bGFu ZHhkZ3NoZWxsdjYuY3BwCitpbmRleCA4YzM3MTY2MS4uMTUxYzc4ZTMgMTAwNjQ0CistLS0gYS9x dHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxh bmR4ZGdzaGVsbHY2LmNwcAorKysrIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2Ni5jcHAKK0BAIC0xNzQsNiArMTc0 LDcgQEAgUVdheWxhbmRYZGdTdXJmYWNlVjY6OlBvcHVwOjpQb3B1cChRV2F5bGFuZFhkZ1N1cmZh Y2VWNiAqeGRnU3VyZmFjZSwgUVdheWxhbmRYZGcKKyAgICAgLCBtX3hkZ1N1cmZhY2UoeGRnU3Vy ZmFjZSkKKyAgICAgLCBtX3BhcmVudChwYXJlbnQpCisgeworKyAgICBtX3BhcmVudC0+d2luZG93 KCktPmFkZENoaWxkUG9wdXAobV94ZGdTdXJmYWNlLT53aW5kb3coKSk7CisgfQorIAorIFFXYXls YW5kWGRnU3VyZmFjZVY2OjpQb3B1cDo6flBvcHVwKCkKK0BAIC0xODEsNiArMTgyLDggQEAgUVdh eWxhbmRYZGdTdXJmYWNlVjY6OlBvcHVwOjp+UG9wdXAoKQorICAgICBpZiAoaXNJbml0aWFsaXpl ZCgpKQorICAgICAgICAgZGVzdHJveSgpOworIAorKyAgICBtX3BhcmVudC0+d2luZG93KCktPnJl bW92ZUNoaWxkUG9wdXAobV94ZGdTdXJmYWNlLT53aW5kb3coKSk7CisrCisgICAgIGlmIChtX2dy YWJiaW5nKSB7CisgICAgICAgICBhdXRvICpzaGVsbCA9IG1feGRnU3VyZmFjZS0+bV9zaGVsbDsK KyAgICAgICAgIFFfQVNTRVJUKHNoZWxsLT5tX3RvcG1vc3RHcmFiYmluZ1BvcHVwID09IHRoaXMp OworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hk Zy1zaGVsbC12Ni9xd2F5bGFuZHhkZ3NoZWxsdjZpbnRlZ3JhdGlvbi5jcHAgYi9xdHdheWxhbmQv c3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVs bHY2aW50ZWdyYXRpb24uY3BwCitpbmRleCAwMzE2NDMxNi4uZThkYThiYTEgMTAwNjQ0CistLS0g YS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdh eWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRpb24uY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3BsdWdp bnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdy YXRpb24uY3BwCitAQCAtNjgsMjAgKzY4LDYgQEAgUVdheWxhbmRTaGVsbFN1cmZhY2UgKlFXYXls YW5kWGRnU2hlbGxWNkludGVncmF0aW9uOjpjcmVhdGVTaGVsbFN1cmZhY2UoUVdheWxhbmQKKyAg ICAgcmV0dXJuIG1feGRnU2hlbGwtPmdldFhkZ1N1cmZhY2Uod2luZG93KTsKKyB9CisgCistdm9p ZCBRV2F5bGFuZFhkZ1NoZWxsVjZJbnRlZ3JhdGlvbjo6aGFuZGxlS2V5Ym9hcmRGb2N1c0NoYW5n ZWQoUVdheWxhbmRXaW5kb3cgKm5ld0ZvY3VzLCBRV2F5bGFuZFdpbmRvdyAqb2xkRm9jdXMpCist eworLSAgICBpZiAobmV3Rm9jdXMpIHsKKy0gICAgICAgIGF1dG8gKnhkZ1N1cmZhY2UgPSBxb2Jq ZWN0X2Nhc3Q8UVdheWxhbmRYZGdTdXJmYWNlVjYgKj4obmV3Rm9jdXMtPnNoZWxsU3VyZmFjZSgp KTsKKy0gICAgICAgIGlmICh4ZGdTdXJmYWNlICYmICF4ZGdTdXJmYWNlLT5oYW5kbGVzQWN0aXZl U3RhdGUoKSkKKy0gICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0FjdGl2YXRlZChu ZXdGb2N1cyk7CistICAgIH0KKy0gICAgaWYgKG9sZEZvY3VzICYmIHFvYmplY3RfY2FzdDxRV2F5 bGFuZFhkZ1N1cmZhY2VWNiAqPihvbGRGb2N1cy0+c2hlbGxTdXJmYWNlKCkpKSB7CistICAgICAg ICBhdXRvICp4ZGdTdXJmYWNlID0gcW9iamVjdF9jYXN0PFFXYXlsYW5kWGRnU3VyZmFjZVY2ICo+ KG9sZEZvY3VzLT5zaGVsbFN1cmZhY2UoKSk7CistICAgICAgICBpZiAoeGRnU3VyZmFjZSAmJiAh eGRnU3VyZmFjZS0+aGFuZGxlc0FjdGl2ZVN0YXRlKCkpCistICAgICAgICAgICAgbV9kaXNwbGF5 LT5oYW5kbGVXaW5kb3dEZWFjdGl2YXRlZChvbGRGb2N1cyk7CistICAgIH0KKy19CistCisgfQor IAorIFFUX0VORF9OQU1FU1BBQ0UKK2RpZmYgLS1naXQgYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMv c2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwtdjYvcXdheWxhbmR4ZGdzaGVsbHY2aW50ZWdyYXRp b25fcC5oIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxs LXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uX3AuaAoraW5kZXggMjYxZjhjYmIuLmMx YmNkNWM2IDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsLXY2L3F3YXlsYW5keGRnc2hlbGx2NmludGVncmF0aW9uX3AuaAorKysrIGIv cXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsLXY2L3F3YXls YW5keGRnc2hlbGx2NmludGVncmF0aW9uX3AuaAorQEAgLTY1LDcgKzY1LDYgQEAgcHVibGljOgor ICAgICBRV2F5bGFuZFhkZ1NoZWxsVjZJbnRlZ3JhdGlvbigpIHt9CisgICAgIGJvb2wgaW5pdGlh bGl6ZShRV2F5bGFuZERpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOworICAgICBRV2F5bGFuZFNo ZWxsU3VyZmFjZSAqY3JlYXRlU2hlbGxTdXJmYWNlKFFXYXlsYW5kV2luZG93ICp3aW5kb3cpIG92 ZXJyaWRlOworLSAgICB2b2lkIGhhbmRsZUtleWJvYXJkRm9jdXNDaGFuZ2VkKFFXYXlsYW5kV2lu ZG93ICpuZXdGb2N1cywgUVdheWxhbmRXaW5kb3cgKm9sZEZvY3VzKSBvdmVycmlkZTsKKyAKKyBw cml2YXRlOgorICAgICBRU2NvcGVkUG9pbnRlcjxRV2F5bGFuZFhkZ1NoZWxsVjY+IG1feGRnU2hl bGw7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24v eGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGwuY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3No ZWxsaW50ZWdyYXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGwuY3BwCitpbmRleCBmM2Uz YzMzMC4uZmE2ZDU4MDggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxp bnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbC5jcHAKKysrKyBiL3F0d2F5bGFu ZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxs LmNwcAorQEAgLTY3LDExICs2Nyw2IEBAIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2ZWw6OlRv cGxldmVsKFFXYXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSkKKyAKKyBRV2F5bGFuZFhkZ1N1 cmZhY2U6OlRvcGxldmVsOjp+VG9wbGV2ZWwoKQorIHsKKy0gICAgaWYgKG1fYXBwbGllZC5zdGF0 ZXMgJiBRdDo6V2luZG93QWN0aXZlKSB7CistICAgICAgICBRV2F5bGFuZFdpbmRvdyAqd2luZG93 ID0gbV94ZGdTdXJmYWNlLT53aW5kb3coKTsKKy0gICAgICAgIHdpbmRvdy0+ZGlzcGxheSgpLT5o YW5kbGVXaW5kb3dEZWFjdGl2YXRlZCh3aW5kb3cpOworLSAgICB9CistCisgICAgIC8vIFRoZSBw cm90b2NvbCBzcGVjIHJlcXVpcmVzIHRoYXQgdGhlIGRlY29yYXRpb24gb2JqZWN0IGlzIGRlbGV0 ZWQgYmVmb3JlIHhkZ190b3BsZXZlbC4KKyAgICAgZGVsZXRlIG1fZGVjb3JhdGlvbjsKKyAgICAg bV9kZWNvcmF0aW9uID0gbnVsbHB0cjsKK0BAIC04NSwxNiArODAsMTUgQEAgdm9pZCBRV2F5bGFu ZFhkZ1N1cmZhY2U6OlRvcGxldmVsOjphcHBseUNvbmZpZ3VyZSgpCisgICAgIGlmICghKG1fYXBw bGllZC5zdGF0ZXMgJiAoUXQ6OldpbmRvd01heGltaXplZHxRdDo6V2luZG93RnVsbFNjcmVlbikp KQorICAgICAgICAgbV9ub3JtYWxTaXplID0gbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+d2luZG93 RnJhbWVHZW9tZXRyeSgpLnNpemUoKTsKKyAKKy0gICAgaWYgKChtX3BlbmRpbmcuc3RhdGVzICYg UXQ6OldpbmRvd0FjdGl2ZSkgJiYgIShtX2FwcGxpZWQuc3RhdGVzICYgUXQ6OldpbmRvd0FjdGl2 ZSkpCisrICAgIGlmICgobV9wZW5kaW5nLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpICYmICEo bV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpCisrICAgICAgICAmJiAhbV94ZGdT dXJmYWNlLT5tX3dpbmRvdy0+ZGlzcGxheSgpLT5pc0tleWJvYXJkQXZhaWxhYmxlKCkpCisgICAg ICAgICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5kaXNwbGF5KCktPmhhbmRsZVdpbmRvd0FjdGl2 YXRlZChtX3hkZ1N1cmZhY2UtPm1fd2luZG93KTsKKyAKKy0gICAgaWYgKCEobV9wZW5kaW5nLnN0 YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpICYmIChtX2FwcGxpZWQuc3RhdGVzICYgUXQ6OldpbmRv d0FjdGl2ZSkpCisrICAgIGlmICghKG1fcGVuZGluZy5zdGF0ZXMgJiBRdDo6V2luZG93QWN0aXZl KSAmJiAobV9hcHBsaWVkLnN0YXRlcyAmIFF0OjpXaW5kb3dBY3RpdmUpCisrICAgICAgICAmJiAh bV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+ZGlzcGxheSgpLT5pc0tleWJvYXJkQXZhaWxhYmxlKCkp CisgICAgICAgICBtX3hkZ1N1cmZhY2UtPm1fd2luZG93LT5kaXNwbGF5KCktPmhhbmRsZVdpbmRv d0RlYWN0aXZhdGVkKG1feGRnU3VyZmFjZS0+bV93aW5kb3cpOworIAorLSAgICAvLyBUT0RPOiBu b25lIG9mIHRoZSBvdGhlciBwbHVnaW5zIHNlbmQgV2luZG93QWN0aXZlIGVpdGhlciwgYnV0IGlz IGl0IG9uIHB1cnBvc2U/CistICAgIFF0OjpXaW5kb3dTdGF0ZXMgc3RhdGVzV2l0aG91dEFjdGl2 ZSA9IG1fcGVuZGluZy5zdGF0ZXMgJiB+UXQ6OldpbmRvd0FjdGl2ZTsKKy0KKy0gICAgbV94ZGdT dXJmYWNlLT5tX3dpbmRvdy0+aGFuZGxlV2luZG93U3RhdGVzQ2hhbmdlZChzdGF0ZXNXaXRob3V0 QWN0aXZlKTsKKysgICAgbV94ZGdTdXJmYWNlLT5tX3dpbmRvdy0+aGFuZGxlV2luZG93U3RhdGVz Q2hhbmdlZChtX3BlbmRpbmcuc3RhdGVzKTsKKyAKKyAgICAgaWYgKG1fcGVuZGluZy5zaXplLmlz RW1wdHkoKSkgeworICAgICAgICAgLy8gQW4gZW1wdHkgc2l6ZSBpbiB0aGUgY29uZmlndXJlIG1l YW5zIGl0J3MgdXAgdG8gdGhlIGNsaWVudCB0byBjaG9vc2UgdGhlIHNpemUKK0BAIC0xMDUsOCAr OTksNiBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2ZWw6OmFwcGx5Q29uZmlndXJl KCkKKyAgICAgICAgIG1feGRnU3VyZmFjZS0+bV93aW5kb3ctPnJlc2l6ZUZyb21BcHBseUNvbmZp Z3VyZShtX3BlbmRpbmcuc2l6ZSk7CisgICAgIH0KKyAKKy0gICAgbV94ZGdTdXJmYWNlLT5zZXRT aXplSGludHMoKTsKKy0KKyAgICAgbV9hcHBsaWVkID0gbV9wZW5kaW5nOworICAgICBxQ0RlYnVn KGxjUXBhV2F5bGFuZCkgPDwgIkFwcGxpZWQgcGVuZGluZyB4ZGdfdG9wbGV2ZWwgY29uZmlndXJl IGV2ZW50OiIgPDwgbV9hcHBsaWVkLnNpemUgPDwgbV9hcHBsaWVkLnN0YXRlczsKKyB9CitAQCAt MjAzLDEyICsxOTUsMTcgQEAgUXRXYXlsYW5kOjp4ZGdfdG9wbGV2ZWw6OnJlc2l6ZV9lZGdlIFFX YXlsYW5kWGRnU3VyZmFjZTo6VG9wbGV2ZWw6OmNvbnZlcnRUb1Jlc2kKKyAgICAgICAgICAgICAg ICAgfCAoKGVkZ2VzICYgUXQ6OlJpZ2h0RWRnZSkgPyByZXNpemVfZWRnZV9yaWdodCA6IDApKTsK KyB9CisgCistUVdheWxhbmRYZGdTdXJmYWNlOjpQb3B1cDo6UG9wdXAoUVdheWxhbmRYZGdTdXJm YWNlICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFhkZ1N1cmZhY2UgKnBhcmVudCwKKytRV2F5bGFuZFhk Z1N1cmZhY2U6OlBvcHVwOjpQb3B1cChRV2F5bGFuZFhkZ1N1cmZhY2UgKnhkZ1N1cmZhY2UsIFFX YXlsYW5kV2luZG93ICpwYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UXRXYXlsYW5kOjp4ZGdfcG9zaXRpb25lciAqcG9zaXRpb25lcikKKy0gICAgOiB4ZGdfcG9wdXAo eGRnU3VyZmFjZS0+Z2V0X3BvcHVwKHBhcmVudC0+b2JqZWN0KCksIHBvc2l0aW9uZXItPm9iamVj dCgpKSkKKy0gICAgLCBtX3hkZ1N1cmZhY2UoeGRnU3VyZmFjZSkKKysgICAgOiBtX3hkZ1N1cmZh Y2UoeGRnU3VyZmFjZSkKKysgICAgLCBtX3BhcmVudFhkZ1N1cmZhY2UocW9iamVjdF9jYXN0PFFX YXlsYW5kWGRnU3VyZmFjZSAqPihwYXJlbnQtPnNoZWxsU3VyZmFjZSgpKSkKKyAgICAgLCBtX3Bh cmVudChwYXJlbnQpCisgeworKworKyAgICBpbml0KHhkZ1N1cmZhY2UtPmdldF9wb3B1cChtX3Bh cmVudFhkZ1N1cmZhY2UgPyBtX3BhcmVudFhkZ1N1cmZhY2UtPm9iamVjdCgpIDogbnVsbHB0ciwg cG9zaXRpb25lci0+b2JqZWN0KCkpKTsKKysgICAgaWYgKG1fcGFyZW50KSB7CisrICAgICAgICBt X3BhcmVudC0+YWRkQ2hpbGRQb3B1cChtX3hkZ1N1cmZhY2UtPndpbmRvdygpKTsKKysgICAgfQor IH0KKyAKKyBRV2F5bGFuZFhkZ1N1cmZhY2U6OlBvcHVwOjp+UG9wdXAoKQorQEAgLTIxNiwxMCAr MjEzLDI0IEBAIFFXYXlsYW5kWGRnU3VyZmFjZTo6UG9wdXA6On5Qb3B1cCgpCisgICAgIGlmIChp c0luaXRpYWxpemVkKCkpCisgICAgICAgICBkZXN0cm95KCk7CisgCisrICAgIGlmIChtX3BhcmVu dCkgeworKyAgICAgICAgbV9wYXJlbnQtPnJlbW92ZUNoaWxkUG9wdXAobV94ZGdTdXJmYWNlLT53 aW5kb3coKSk7CisrICAgIH0KKysKKyAgICAgaWYgKG1fZ3JhYmJpbmcpIHsKKyAgICAgICAgIGF1 dG8gKnNoZWxsID0gbV94ZGdTdXJmYWNlLT5tX3NoZWxsOworICAgICAgICAgUV9BU1NFUlQoc2hl bGwtPm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPT0gdGhpcyk7CistICAgICAgICBzaGVsbC0+bV90 b3Btb3N0R3JhYmJpbmdQb3B1cCA9IG1fcGFyZW50LT5tX3BvcHVwOworKyAgICAgICAgc2hlbGwt Pm1fdG9wbW9zdEdyYWJiaW5nUG9wdXAgPSBtX3BhcmVudFhkZ1N1cmZhY2UgPyBtX3BhcmVudFhk Z1N1cmZhY2UtPm1fcG9wdXAgOiBudWxscHRyOworKyAgICAgICAgbV9ncmFiYmluZyA9IGZhbHNl OworKworKyAgICAgICAgLy8gU3ludGhlc2l6ZSBRdCBlbnRlci9sZWF2ZSBldmVudHMgZm9yIHBv cHVwCisrICAgICAgICBRV2luZG93ICpsZWF2ZSA9IG51bGxwdHI7CisrICAgICAgICBpZiAobV94 ZGdTdXJmYWNlICYmIG1feGRnU3VyZmFjZS0+d2luZG93KCkpCisrICAgICAgICAgICAgbGVhdmUg PSBtX3hkZ1N1cmZhY2UtPndpbmRvdygpLT53aW5kb3coKTsKKysgICAgICAgIFFXaW5kb3dTeXN0 ZW1JbnRlcmZhY2U6OmhhbmRsZUxlYXZlRXZlbnQobGVhdmUpOworKworKyAgICAgICAgaWYgKFFX aW5kb3cgKmVudGVyID0gUUd1aUFwcGxpY2F0aW9uOjp0b3BMZXZlbEF0KFFDdXJzb3I6OnBvcygp KSkKKysgICAgICAgICAgICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVFbnRlckV2ZW50 KGVudGVyLCBlbnRlci0+bWFwRnJvbUdsb2JhbChRQ3Vyc29yOjpwb3MoKSksIFFDdXJzb3I6OnBv cygpKTsKKyAgICAgfQorIH0KKyAKK0BAIC0yNTcsNiArMjY4LDcgQEAgUVdheWxhbmRYZGdTdXJm YWNlOjpRV2F5bGFuZFhkZ1N1cmZhY2UoUVdheWxhbmRYZGdTaGVsbCAqc2hlbGwsIDo6eGRnX3N1 cmZhY2UgKnMKKyAgICAgICAgICAgICAgICAgbV90b3BsZXZlbC0+c2V0X3BhcmVudChwYXJlbnRY ZGdTdXJmYWNlLT5tX3RvcGxldmVsLT5vYmplY3QoKSk7CisgICAgICAgICB9CisgICAgIH0KKysg ICAgc2V0U2l6ZUhpbnRzKCk7CisgfQorIAorIFFXYXlsYW5kWGRnU3VyZmFjZTo6flFXYXlsYW5k WGRnU3VyZmFjZSgpCitAQCAtNDAwLDggKzQxMiw2IEBAIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNl OjpzZXRQb3B1cChRV2F5bGFuZFdpbmRvdyAqcGFyZW50KQorIHsKKyAgICAgUV9BU1NFUlQoIW1f dG9wbGV2ZWwgJiYgIW1fcG9wdXApOworIAorLSAgICBhdXRvIHBhcmVudFhkZ1N1cmZhY2UgPSBz dGF0aWNfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4ocGFyZW50LT5zaGVsbFN1cmZhY2UoKSk7 CistCisgICAgIGF1dG8gcG9zaXRpb25lciA9IG5ldyBRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVy KG1fc2hlbGwtPmNyZWF0ZV9wb3NpdGlvbmVyKCkpOworICAgICAvLyBzZXRfcG9wdXAgZXhwZWN0 cyBhIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBwYXJlbnQKKyAgICAgUVBvaW50IHRyYW5zaWVu dFBvcyA9IG1fd2luZG93LT5nZW9tZXRyeSgpLnRvcExlZnQoKTsgLy8gdGhpcyBpcyBhYnNvbHV0 ZQorQEAgLTQxNCw4ICs0MjQsOSBAQCB2b2lkIFFXYXlsYW5kWGRnU3VyZmFjZTo6c2V0UG9wdXAo UVdheWxhbmRXaW5kb3cgKnBhcmVudCkKKyAgICAgcG9zaXRpb25lci0+c2V0X2FuY2hvcihRdFdh eWxhbmQ6OnhkZ19wb3NpdGlvbmVyOjphbmNob3JfdG9wX2xlZnQpOworICAgICBwb3NpdGlvbmVy LT5zZXRfZ3Jhdml0eShRdFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyOjpncmF2aXR5X2JvdHRvbV9y aWdodCk7CisgICAgIHBvc2l0aW9uZXItPnNldF9zaXplKG1fd2luZG93LT5nZW9tZXRyeSgpLndp ZHRoKCksIG1fd2luZG93LT5nZW9tZXRyeSgpLmhlaWdodCgpKTsKKy0gICAgbV9wb3B1cCA9IG5l dyBQb3B1cCh0aGlzLCBwYXJlbnRYZGdTdXJmYWNlLCBwb3NpdGlvbmVyKTsKKysgICAgbV9wb3B1 cCA9IG5ldyBQb3B1cCh0aGlzLCBwYXJlbnQsIHBvc2l0aW9uZXIpOworICAgICBwb3NpdGlvbmVy LT5kZXN0cm95KCk7CisrCisgICAgIGRlbGV0ZSBwb3NpdGlvbmVyOworIH0KKyAKK0BAIC00Mzcs NiArNDQ4LDIzIEBAIHZvaWQgUVdheWxhbmRYZGdTdXJmYWNlOjpzZXRHcmFiUG9wdXAoUVdheWxh bmRXaW5kb3cgKnBhcmVudCwgUVdheWxhbmRJbnB1dERldmljCisgICAgIH0KKyAgICAgc2V0UG9w dXAocGFyZW50KTsKKyAgICAgbV9wb3B1cC0+Z3JhYihkZXZpY2UsIHNlcmlhbCk7CisrCisrICAg IC8vIFN5bnRoZXNpemUgUXQgZW50ZXIvbGVhdmUgZXZlbnRzIGZvciBwb3B1cAorKyAgICBpZiAo IXBhcmVudCkKKysgICAgICAgIHJldHVybjsKKysgICAgUVdpbmRvdyAqY3VycmVudCA9IFFHdWlB cHBsaWNhdGlvbjo6dG9wTGV2ZWxBdChRQ3Vyc29yOjpwb3MoKSk7CisrICAgIFFXaW5kb3cgKmxl YXZlID0gcGFyZW50LT53aW5kb3coKTsKKysgICAgaWYgKGN1cnJlbnQgIT0gbGVhdmUpCisrICAg ICAgICByZXR1cm47CisrCisrICAgIFFXaW5kb3dTeXN0ZW1JbnRlcmZhY2U6OmhhbmRsZUxlYXZl RXZlbnQobGVhdmUpOworKworKyAgICBRV2luZG93ICplbnRlciA9IG51bGxwdHI7CisrICAgIGlm IChtX3BvcHVwICYmIG1fcG9wdXAtPm1feGRnU3VyZmFjZSAmJiBtX3BvcHVwLT5tX3hkZ1N1cmZh Y2UtPndpbmRvdygpKQorKyAgICAgICAgZW50ZXIgPSBtX3BvcHVwLT5tX3hkZ1N1cmZhY2UtPndp bmRvdygpLT53aW5kb3coKTsKKysKKysgICAgaWYgKGVudGVyKQorKyAgICAgICAgUVdpbmRvd1N5 c3RlbUludGVyZmFjZTo6aGFuZGxlRW50ZXJFdmVudChlbnRlciwgZW50ZXItPm1hcEZyb21HbG9i YWwoUUN1cnNvcjo6cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSk7CisgfQorIAorIHZvaWQgUVdheWxh bmRYZGdTdXJmYWNlOjp4ZGdfc3VyZmFjZV9jb25maWd1cmUodWludDMyX3Qgc2VyaWFsKQorZGlm ZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVs bC9xd2F5bGFuZHhkZ3NoZWxsX3AuaCBiL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVn cmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsX3AuaAoraW5kZXggOTY3ODUyMDUuLjRi NTE4ZjBhIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRp b24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxfcC5oCisrKysgYi9xdHdheWxhbmQvc3JjL3Bs dWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdzaGVsbF9wLmgKK0BA IC0xMzEsMTQgKzEzMSwxNSBAQCBwcml2YXRlOgorIAorICAgICBjbGFzcyBQb3B1cCA6IHB1Ymxp YyBRdFdheWxhbmQ6OnhkZ19wb3B1cCB7CisgICAgIHB1YmxpYzoKKy0gICAgICAgIFBvcHVwKFFX YXlsYW5kWGRnU3VyZmFjZSAqeGRnU3VyZmFjZSwgUVdheWxhbmRYZGdTdXJmYWNlICpwYXJlbnQs IFF0V2F5bGFuZDo6eGRnX3Bvc2l0aW9uZXIgKnBvc2l0aW9uZXIpOworKyAgICAgICAgUG9wdXAo UVdheWxhbmRYZGdTdXJmYWNlICp4ZGdTdXJmYWNlLCBRV2F5bGFuZFdpbmRvdyAqcGFyZW50LCBR dFdheWxhbmQ6OnhkZ19wb3NpdGlvbmVyICpwb3NpdGlvbmVyKTsKKyAgICAgICAgIH5Qb3B1cCgp IG92ZXJyaWRlOworIAorICAgICAgICAgdm9pZCBncmFiKFFXYXlsYW5kSW5wdXREZXZpY2UgKnNl YXQsIHVpbnQgc2VyaWFsKTsKKyAgICAgICAgIHZvaWQgeGRnX3BvcHVwX3BvcHVwX2RvbmUoKSBv dmVycmlkZTsKKyAKKyAgICAgICAgIFFXYXlsYW5kWGRnU3VyZmFjZSAqbV94ZGdTdXJmYWNlID0g bnVsbHB0cjsKKy0gICAgICAgIFFXYXlsYW5kWGRnU3VyZmFjZSAqbV9wYXJlbnQgPSBudWxscHRy OworKyAgICAgICAgUVdheWxhbmRYZGdTdXJmYWNlICptX3BhcmVudFhkZ1N1cmZhY2UgPSBudWxs cHRyOworKyAgICAgICAgUVdheWxhbmRXaW5kb3cgKm1fcGFyZW50ID0gbnVsbHB0cjsKKyAgICAg ICAgIGJvb2wgbV9ncmFiYmluZyA9IGZhbHNlOworICAgICB9OworIAorZGlmZiAtLWdpdCBhL3F0 d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhk Z3NoZWxsaW50ZWdyYXRpb24uY3BwIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdy YXRpb24veGRnLXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbi5jcHAKK2luZGV4IDg3 NjlkOTcxLi5kYTBkZDZhNyAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVs bGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb24uY3BwCisr KysgYi9xdHdheWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdh eWxhbmR4ZGdzaGVsbGludGVncmF0aW9uLmNwcAorQEAgLTY5LDIwICs2OSw2IEBAIFFXYXlsYW5k U2hlbGxTdXJmYWNlICpRV2F5bGFuZFhkZ1NoZWxsSW50ZWdyYXRpb246OmNyZWF0ZVNoZWxsU3Vy ZmFjZShRV2F5bGFuZFdpCisgICAgIHJldHVybiBtX3hkZ1NoZWxsLT5nZXRYZGdTdXJmYWNlKHdp bmRvdyk7CisgfQorIAorLXZvaWQgUVdheWxhbmRYZGdTaGVsbEludGVncmF0aW9uOjpoYW5kbGVL ZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9jdXMsIFFXYXlsYW5kV2lu ZG93ICpvbGRGb2N1cykKKy17CistICAgIGlmIChuZXdGb2N1cykgeworLSAgICAgICAgYXV0byAq eGRnU3VyZmFjZSA9IHFvYmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4obmV3Rm9jdXMt PnNoZWxsU3VyZmFjZSgpKTsKKy0gICAgICAgIGlmICh4ZGdTdXJmYWNlICYmICF4ZGdTdXJmYWNl LT5oYW5kbGVzQWN0aXZlU3RhdGUoKSkKKy0gICAgICAgICAgICBtX2Rpc3BsYXktPmhhbmRsZVdp bmRvd0FjdGl2YXRlZChuZXdGb2N1cyk7CistICAgIH0KKy0gICAgaWYgKG9sZEZvY3VzICYmIHFv YmplY3RfY2FzdDxRV2F5bGFuZFhkZ1N1cmZhY2UgKj4ob2xkRm9jdXMtPnNoZWxsU3VyZmFjZSgp KSkgeworLSAgICAgICAgYXV0byAqeGRnU3VyZmFjZSA9IHFvYmplY3RfY2FzdDxRV2F5bGFuZFhk Z1N1cmZhY2UgKj4ob2xkRm9jdXMtPnNoZWxsU3VyZmFjZSgpKTsKKy0gICAgICAgIGlmICh4ZGdT dXJmYWNlICYmICF4ZGdTdXJmYWNlLT5oYW5kbGVzQWN0aXZlU3RhdGUoKSkKKy0gICAgICAgICAg ICBtX2Rpc3BsYXktPmhhbmRsZVdpbmRvd0RlYWN0aXZhdGVkKG9sZEZvY3VzKTsKKy0gICAgfQor LX0KKy0KKyB9CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC9z cmMvcGx1Z2lucy9zaGVsbGludGVncmF0aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50 ZWdyYXRpb25fcC5oIGIvcXR3YXlsYW5kL3NyYy9wbHVnaW5zL3NoZWxsaW50ZWdyYXRpb24veGRn LXNoZWxsL3F3YXlsYW5keGRnc2hlbGxpbnRlZ3JhdGlvbl9wLmgKK2luZGV4IGI2Y2FhNmM5Li4y ZjkyOWY5OCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC9zcmMvcGx1Z2lucy9zaGVsbGludGVncmF0 aW9uL3hkZy1zaGVsbC9xd2F5bGFuZHhkZ3NoZWxsaW50ZWdyYXRpb25fcC5oCisrKysgYi9xdHdh eWxhbmQvc3JjL3BsdWdpbnMvc2hlbGxpbnRlZ3JhdGlvbi94ZGctc2hlbGwvcXdheWxhbmR4ZGdz aGVsbGludGVncmF0aW9uX3AuaAorQEAgLTY1LDcgKzY1LDYgQEAgcHVibGljOgorICAgICBRV2F5 bGFuZFhkZ1NoZWxsSW50ZWdyYXRpb24oKSB7fQorICAgICBib29sIGluaXRpYWxpemUoUVdheWxh bmREaXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKKyAgICAgUVdheWxhbmRTaGVsbFN1cmZhY2Ug KmNyZWF0ZVNoZWxsU3VyZmFjZShRV2F5bGFuZFdpbmRvdyAqd2luZG93KSBvdmVycmlkZTsKKy0g ICAgdm9pZCBoYW5kbGVLZXlib2FyZEZvY3VzQ2hhbmdlZChRV2F5bGFuZFdpbmRvdyAqbmV3Rm9j dXMsIFFXYXlsYW5kV2luZG93ICpvbGRGb2N1cykgb3ZlcnJpZGU7CisgCisgcHJpdmF0ZToKKyAg ICAgUVNjb3BlZFBvaW50ZXI8UVdheWxhbmRYZGdTaGVsbD4gbV94ZGdTaGVsbDsKK2RpZmYgLS1n aXQgYS9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZGlucHV0bWV0aG9kZXZlbnRidWlsZGVy LmNwcCBiL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kaW5wdXRtZXRob2RldmVudGJ1aWxk ZXIuY3BwCitpbmRleCA1MjZkMGVmNC4uZjUwY2NmMzAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQv c3JjL3NoYXJlZC9xd2F5bGFuZGlucHV0bWV0aG9kZXZlbnRidWlsZGVyLmNwcAorKysrIGIvcXR3 YXlsYW5kL3NyYy9zaGFyZWQvcXdheWxhbmRpbnB1dG1ldGhvZGV2ZW50YnVpbGRlci5jcHAKK0BA IC0zOSw3ICszOSwxMCBAQAorIAorICNpbmNsdWRlICJxd2F5bGFuZGlucHV0bWV0aG9kZXZlbnRi dWlsZGVyX3AuaCIKKyAKKysjaW5jbHVkZSA8UUJydXNoPgorKyNpbmNsdWRlIDxRR3VpQXBwbGlj YXRpb24+CisgI2luY2x1ZGUgPFFJbnB1dE1ldGhvZD4KKysjaW5jbHVkZSA8UVBhbGV0dGU+Cisg I2luY2x1ZGUgPFFUZXh0Q2hhckZvcm1hdD4KKyAKKyAjaWZkZWYgUVRfQlVJTERfV0FZTEFORENP TVBPU0lUT1JfTElCCitAQCAtODEsMzIgKzg0LDM4IEBAIHZvaWQgUVdheWxhbmRJbnB1dE1ldGhv ZEV2ZW50QnVpbGRlcjo6YWRkUHJlZWRpdFN0eWxpbmcodWludDMyX3QgaW5kZXgsIHVpbnQzMl90 CisgICAgIFFUZXh0Q2hhckZvcm1hdCBmb3JtYXQ7CisgCisgICAgIHN3aXRjaCAoc3R5bGUpIHsK Ky0gICAgY2FzZSAwOgorLSAgICBjYXNlIDE6CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJf UFJFRURJVF9TVFlMRV9OT05FOgorKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgWldQX1RFWFRf SU5QVVRfVjJfUFJFRURJVF9TVFlMRV9ERUZBVUxUOgorKyAgICBjYXNlIFpXUF9URVhUX0lOUFVU X1YyX1BSRUVESVRfU1RZTEVfVU5ERVJMSU5FOgorICAgICAgICAgZm9ybWF0LnNldEZvbnRVbmRl cmxpbmUodHJ1ZSk7CisgICAgICAgICBmb3JtYXQuc2V0VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFy Rm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUpOworICAgICAgICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVu ZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9y bWF0LCBpbmRleCwgbGVuZ3RoLCBmb3JtYXQpKTsKKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNl IDI6CistICAgIGNhc2UgMzoKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NU WUxFX0FDVElWRToKKysgICAgY2FzZSBaV1BfVEVYVF9JTlBVVF9WMl9QUkVFRElUX1NUWUxFX0lO QUNUSVZFOgorICAgICAgICAgZm9ybWF0LnNldEZvbnRXZWlnaHQoUUZvbnQ6OkJvbGQpOworICAg ICAgICAgZm9ybWF0LnNldEZvbnRVbmRlcmxpbmUodHJ1ZSk7CisgICAgICAgICBmb3JtYXQuc2V0 VW5kZXJsaW5lU3R5bGUoUVRleHRDaGFyRm9ybWF0OjpTaW5nbGVVbmRlcmxpbmUpOworICAgICAg ICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRob2RFdmVudDo6QXR0cmlidXRlKFFJ bnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVuZ3RoLCBmb3JtYXQpKTsKKyAg ICAgICAgIGJyZWFrOworLSAgICBjYXNlIDQ6CistICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVy bGluZSh0cnVlKTsKKy0gICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVTdHlsZShRVGV4dENoYXJG b3JtYXQ6OlNpbmdsZVVuZGVybGluZSk7CistICAgICAgICBtX3ByZWVkaXRTdHlsZXMuYXBwZW5k KFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0TWV0aG9kRXZlbnQ6OlRleHRGb3Jt YXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkpOworKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1Yy X1BSRUVESVRfU1RZTEVfSElHSExJR0hUOgorKyAgICBjYXNlIFpXUF9URVhUX0lOUFVUX1YyX1BS RUVESVRfU1RZTEVfU0VMRUNUSU9OOgorKyAgICAgICAgeworKyAgICAgICAgICAgIGZvcm1hdC5z ZXRGb250VW5kZXJsaW5lKHRydWUpOworKyAgICAgICAgICAgIGZvcm1hdC5zZXRVbmRlcmxpbmVT dHlsZShRVGV4dENoYXJGb3JtYXQ6OlNpbmdsZVVuZGVybGluZSk7CisrICAgICAgICAgICAgUVBh bGV0dGUgcGFsZXR0ZSA9IHFBcHAtPnBhbGV0dGUoKTsKKysgICAgICAgICAgICBmb3JtYXQuc2V0 QmFja2dyb3VuZChRQnJ1c2gocGFsZXR0ZS5jb2xvcihRUGFsZXR0ZTo6QWN0aXZlLCBRUGFsZXR0 ZTo6SGlnaGxpZ2h0KSkpOworKyAgICAgICAgICAgIGZvcm1hdC5zZXRGb3JlZ3JvdW5kKFFCcnVz aChwYWxldHRlLmNvbG9yKFFQYWxldHRlOjpBY3RpdmUsIFFQYWxldHRlOjpIaWdobGlnaHRlZFRl eHQpKSk7CisrICAgICAgICAgICAgbV9wcmVlZGl0U3R5bGVzLmFwcGVuZChRSW5wdXRNZXRob2RF dmVudDo6QXR0cmlidXRlKFFJbnB1dE1ldGhvZEV2ZW50OjpUZXh0Rm9ybWF0LCBpbmRleCwgbGVu Z3RoLCBmb3JtYXQpKTsKKysgICAgICAgIH0KKyAgICAgICAgIGJyZWFrOworLSAgICBjYXNlIDU6 CisrICAgIGNhc2UgWldQX1RFWFRfSU5QVVRfVjJfUFJFRURJVF9TVFlMRV9JTkNPUlJFQ1Q6Cisg ICAgICAgICBmb3JtYXQuc2V0Rm9udFVuZGVybGluZSh0cnVlKTsKKyAgICAgICAgIGZvcm1hdC5z ZXRVbmRlcmxpbmVTdHlsZShRVGV4dENoYXJGb3JtYXQ6OldhdmVVbmRlcmxpbmUpOworICAgICAg ICAgZm9ybWF0LnNldFVuZGVybGluZUNvbG9yKFFDb2xvcihRdDo6cmVkKSk7CisgICAgICAgICBt X3ByZWVkaXRTdHlsZXMuYXBwZW5kKFFJbnB1dE1ldGhvZEV2ZW50OjpBdHRyaWJ1dGUoUUlucHV0 TWV0aG9kRXZlbnQ6OlRleHRGb3JtYXQsIGluZGV4LCBsZW5ndGgsIGZvcm1hdCkpOworICAgICAg ICAgYnJlYWs7CistLy8gICAgY2FzZSBRdFdheWxhbmQ6OndsX3RleHRfaW5wdXQ6OnByZWVkaXRf c3R5bGVfc2VsZWN0aW9uOgorLS8vICAgIGNhc2UgUXRXYXlsYW5kOjp3bF90ZXh0X2lucHV0Ojpw cmVlZGl0X3N0eWxlX25vbmU6CisgICAgIGRlZmF1bHQ6CisgICAgICAgICBicmVhazsKKyAgICAg fQorQEAgLTE1Myw3ICsxNjIsNyBAQCBRSW5wdXRNZXRob2RFdmVudCBRV2F5bGFuZElucHV0TWV0 aG9kRXZlbnRCdWlsZGVyOjpidWlsZFByZWVkaXQoY29uc3QgUVN0cmluZyAmdAorIAorICAgICBp ZiAobV9wcmVlZGl0Q3Vyc29yIDwgMCkgeworICAgICAgICAgYXR0cmlidXRlcy5hcHBlbmQoUUlu cHV0TWV0aG9kRXZlbnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6Q3Vyc29yLCAwLCAw LCBRVmFyaWFudCgpKSk7CistICAgIH0gZWxzZSBpZiAobV9wcmVlZGl0Q3Vyc29yID4gMCkgewor KyAgICB9IGVsc2UgeworICAgICAgICAgYXR0cmlidXRlcy5hcHBlbmQoUUlucHV0TWV0aG9kRXZl bnQ6OkF0dHJpYnV0ZShRSW5wdXRNZXRob2RFdmVudDo6Q3Vyc29yLCBpbmRleEZyb21XYXlsYW5k KHRleHQsIG1fcHJlZWRpdEN1cnNvciksIDEsIFFWYXJpYW50KCkpKTsKKyAgICAgfQorIAorZGlm ZiAtLWdpdCBhL3F0d2F5bGFuZC9zcmMvc2hhcmVkL3F3YXlsYW5kbWltZWhlbHBlci5jcHAgYi9x dHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZG1pbWVoZWxwZXIuY3BwCitpbmRleCBhNWZkZDM0 ZC4uZTJmZTE5MjggMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZG1p bWVoZWxwZXIuY3BwCisrKysgYi9xdHdheWxhbmQvc3JjL3NoYXJlZC9xd2F5bGFuZG1pbWVoZWxw ZXIuY3BwCitAQCAtNjAsNyArNjAsNyBAQCBRQnl0ZUFycmF5IFFXYXlsYW5kTWltZUhlbHBlcjo6 Z2V0Qnl0ZUFycmF5KFFNaW1lRGF0YSAqbWltZURhdGEsIGNvbnN0IFFTdHJpbmcgJgorICAgICAg ICAgICAgIGJ1Zi5vcGVuKFFJT0RldmljZTo6UmVhZFdyaXRlKTsKKyAgICAgICAgICAgICBRQnl0 ZUFycmF5IGZtdCA9ICJCTVAiOworICAgICAgICAgICAgIGlmIChtaW1lVHlwZS5zdGFydHNXaXRo KFFMYXRpbjFTdHJpbmcoImltYWdlLyIpKSkgeworLSAgICAgICAgICAgICAgICBRQnl0ZUFycmF5 IGltZ0ZtdCA9IG1pbWVUeXBlLm1pZCg2KS50b1VwcGVyKCkudG9MYXRpbjEoKTsKKysgICAgICAg ICAgICAgICAgUUJ5dGVBcnJheSBpbWdGbXQgPSBtaW1lVHlwZS5taWQoNikudG9Mb3dlcigpLnRv TGF0aW4xKCk7CisgICAgICAgICAgICAgICAgIGlmIChRSW1hZ2VXcml0ZXI6OnN1cHBvcnRlZElt YWdlRm9ybWF0cygpLmNvbnRhaW5zKGltZ0ZtdCkpCisgICAgICAgICAgICAgICAgICAgICBmbXQg PSBpbWdGbXQ7CisgICAgICAgICAgICAgfQorQEAgLTc0LDcgKzc0LDcgQEAgUUJ5dGVBcnJheSBR V2F5bGFuZE1pbWVIZWxwZXI6OmdldEJ5dGVBcnJheShRTWltZURhdGEgKm1pbWVEYXRhLCBjb25z dCBRU3RyaW5nICYKKyAgICAgICAgIFFMaXN0PFFVcmw+IHVybHMgPSBtaW1lRGF0YS0+dXJscygp OworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB1cmxzLmNvdW50KCk7ICsraSkgeworICAg ICAgICAgICAgIGNvbnRlbnQuYXBwZW5kKHVybHMuYXQoaSkudG9FbmNvZGVkKCkpOworLSAgICAg ICAgICAgIGNvbnRlbnQuYXBwZW5kKCdcbicpOworKyAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5k KCJcclxuIik7CisgICAgICAgICB9CisgICAgIH0gZWxzZSB7CisgICAgICAgICBjb250ZW50ID0g bWltZURhdGEtPmRhdGEobWltZVR5cGUpOworZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9h dXRvL2NsaWVudC9kYXRhZGV2aWNldjEvdHN0X2RhdGFkZXZpY2V2MS5jcHAgYi9xdHdheWxhbmQv dGVzdHMvYXV0by9jbGllbnQvZGF0YWRldmljZXYxL3RzdF9kYXRhZGV2aWNldjEuY3BwCitpbmRl eCAxNTY4YjNiOS4uMDY3NDEwZDAgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9j bGllbnQvZGF0YWRldmljZXYxL3RzdF9kYXRhZGV2aWNldjEuY3BwCisrKysgYi9xdHdheWxhbmQv dGVzdHMvYXV0by9jbGllbnQvZGF0YWRldmljZXYxL3RzdF9kYXRhZGV2aWNldjEuY3BwCitAQCAt MzUsNyArMzUsNyBAQAorIAorIHVzaW5nIG5hbWVzcGFjZSBNb2NrQ29tcG9zaXRvcjsKKyAKKy1j b25zdGV4cHIgaW50IGRhdGFEZXZpY2VWZXJzaW9uID0gMTsKKytjb25zdGV4cHIgaW50IGRhdGFE ZXZpY2VWZXJzaW9uID0gMzsKKyAKKyBjbGFzcyBEYXRhRGV2aWNlQ29tcG9zaXRvciA6IHB1Ymxp YyBEZWZhdWx0Q29tcG9zaXRvciB7CisgcHVibGljOgorZGlmZiAtLWdpdCBhL3F0d2F5bGFuZC90 ZXN0cy9hdXRvL2NsaWVudC9zZWF0djUvdHN0X3NlYXR2NS5jcHAgYi9xdHdheWxhbmQvdGVzdHMv YXV0by9jbGllbnQvc2VhdHY1L3RzdF9zZWF0djUuY3BwCitpbmRleCA5MzEyYzJlNS4uMmVhMzgy ZjEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2VhdHY1L3RzdF9z ZWF0djUuY3BwCisrKysgYi9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2VhdHY1L3RzdF9z ZWF0djUuY3BwCitAQCAtNzMsNiArNzMsNyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIG11 bHRpVG91Y2goKTsKKyAgICAgdm9pZCBtdWx0aVRvdWNoVXBBbmRNb3Rpb25GcmFtZSgpOworICAg ICB2b2lkIHRhcEFuZE1vdmVJblNhbWVGcmFtZSgpOworKyAgICB2b2lkIGNhbmNlbFRvdWNoKCk7 CisgfTsKKyAKKyB2b2lkIHRzdF9zZWF0djU6OmJpbmRzVG9TZWF0KCkKK0BAIC02NDYsNSArNjQ3 LDM0IEBAIHZvaWQgdHN0X3NlYXR2NTo6dGFwQW5kTW92ZUluU2FtZUZyYW1lKCkKKyAgICAgUVRS WV9DT01QQVJFKHdpbmRvdy5tX2V2ZW50cy5sYXN0KCkudG91Y2hQb2ludHMuZmlyc3QoKS5zdGF0 ZSgpLCBRdDo6VG91Y2hQb2ludFN0YXRlOjpUb3VjaFBvaW50UmVsZWFzZWQpOworIH0KKyAKKyt2 b2lkIHRzdF9zZWF0djU6OmNhbmNlbFRvdWNoKCkKKyt7CisrICAgIFRvdWNoV2luZG93IHdpbmRv dzsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdTdXJmYWNlKCkgJiYgeGRnU3VyZmFj ZSgpLT5tX2NvbW1pdHRlZENvbmZpZ3VyZVNlcmlhbCk7CisrCisrICAgIGV4ZWMoWz1dIHsKKysg ICAgICAgIGF1dG8gKnQgPSB0b3VjaCgpOworKyAgICAgICAgYXV0byAqYyA9IGNsaWVudCgpOwor KyAgICAgICAgdC0+c2VuZERvd24oeGRnVG9wbGV2ZWwoKS0+c3VyZmFjZSgpLCB7MzIsIDMyfSwg MSk7CisrICAgICAgICB0LT5zZW5kRnJhbWUoYyk7CisrICAgICAgICB0LT5zZW5kQ2FuY2VsKGMp OworKyAgICAgICAgdC0+c2VuZEZyYW1lKGMpOworKyAgICB9KTsKKysKKysgICAgUVRSWV9WRVJJ RlkoIXdpbmRvdy5tX2V2ZW50cy5lbXB0eSgpKTsKKysgICAgeworKyAgICAgICAgYXV0byBlID0g d2luZG93Lm1fZXZlbnRzLnRha2VGaXJzdCgpOworKyAgICAgICAgUUNPTVBBUkUoZS50eXBlLCBR RXZlbnQ6OlRvdWNoQmVnaW4pOworKyAgICAgICAgUUNPTVBBUkUoZS50b3VjaFBvaW50U3RhdGVz LCBRdDo6VG91Y2hQb2ludFByZXNzZWQpOworKyAgICAgICAgUUNPTVBBUkUoZS50b3VjaFBvaW50 cy5sZW5ndGgoKSwgMSk7CisrICAgICAgICBRQ09NUEFSRShlLnRvdWNoUG9pbnRzLmZpcnN0KCku cG9zKCksIFFQb2ludEYoMzItd2luZG93LmZyYW1lTWFyZ2lucygpLmxlZnQoKSwgMzItd2luZG93 LmZyYW1lTWFyZ2lucygpLnRvcCgpKSk7CisrICAgIH0KKysgICAgeworKyAgICAgICAgYXV0byBl ID0gd2luZG93Lm1fZXZlbnRzLnRha2VGaXJzdCgpOworKyAgICAgICAgUUNPTVBBUkUoZS50eXBl LCBRRXZlbnQ6OlRvdWNoQ2FuY2VsKTsKKysgICAgICAgIFFDT01QQVJFKGUudG91Y2hQb2ludHMu bGVuZ3RoKCksIDApOworKyAgICB9CisrfQorKworIFFDT01QT1NJVE9SX1RFU1RfTUFJTih0c3Rf c2VhdHY1KQorICNpbmNsdWRlICJ0c3Rfc2VhdHY1Lm1vYyIKK2RpZmYgLS1naXQgYS9xdHdheWxh bmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkL2NvcmVjb21wb3NpdG9yLmNwcCBiL3F0d2F5bGFu ZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZWNvbXBvc2l0b3IuY3BwCitpbmRleCA1YzZj ODNiYS4uZmE5Yjc2NjIgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQv c2hhcmVkL2NvcmVjb21wb3NpdG9yLmNwcAorKysrIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xp ZW50L3NoYXJlZC9jb3JlY29tcG9zaXRvci5jcHAKK0BAIC0yNyw2ICsyNyw3IEBACisgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKyAKKyAjaW5jbHVkZSAiY29yZWNvbXBvc2l0b3IuaCIKKysjaW5jbHVk ZSA8dGhyZWFkPgorIAorIG5hbWVzcGFjZSBNb2NrQ29tcG9zaXRvciB7CisgCitkaWZmIC0tZ2l0 IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuY3BwIGIv cXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuY3BwCitpbmRl eCAwZDk4ODUyMS4uZDFhMmU3Y2IgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9j bGllbnQvc2hhcmVkL2NvcmVwcm90b2NvbC5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRv L2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmNwcAorQEAgLTQ1MSw2ICs0NTEsMTMgQEAgdm9p ZCBUb3VjaDo6c2VuZEZyYW1lKHdsX2NsaWVudCAqY2xpZW50KQorICAgICAgICAgc2VuZF9mcmFt ZShyLT5oYW5kbGUpOworIH0KKyAKKyt2b2lkIFRvdWNoOjpzZW5kQ2FuY2VsKHdsX2NsaWVudCAq Y2xpZW50KQorK3sKKysgICAgY29uc3QgYXV0byB0b3VjaFJlc291cmNlcyA9IHJlc291cmNlTWFw KCkudmFsdWVzKGNsaWVudCk7CisrICAgIGZvciAoYXV0byAqciA6IHRvdWNoUmVzb3VyY2VzKQor KyAgICAgICAgc2VuZF9jYW5jZWwoci0+aGFuZGxlKTsKKyt9CisrCisgdWludCBLZXlib2FyZDo6 c2VuZEVudGVyKFN1cmZhY2UgKnN1cmZhY2UpCisgeworICAgICBhdXRvIHNlcmlhbCA9IG1fc2Vh dC0+bV9jb21wb3NpdG9yLT5uZXh0U2VyaWFsKCk7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rl c3RzL2F1dG8vY2xpZW50L3NoYXJlZC9jb3JlcHJvdG9jb2wuaCBiL3F0d2F5bGFuZC90ZXN0cy9h dXRvL2NsaWVudC9zaGFyZWQvY29yZXByb3RvY29sLmgKK2luZGV4IGExYWYxMzdhLi4yMTBkOGRk YiAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXBy b3RvY29sLmgKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWQvY29yZXBy b3RvY29sLmgKK0BAIC0xNTgsNyArMTU4LDcgQEAgY2xhc3MgV2xDb21wb3NpdG9yIDogcHVibGlj IEdsb2JhbCwgcHVibGljIFF0V2F5bGFuZFNlcnZlcjo6d2xfY29tcG9zaXRvcgorIHsKKyAgICAg UV9PQkpFQ1QKKyBwdWJsaWM6CistICAgIGV4cGxpY2l0IFdsQ29tcG9zaXRvcihDb3JlQ29tcG9z aXRvciAqY29tcG9zaXRvciwgaW50IHZlcnNpb24gPSAzKQorKyAgICBleHBsaWNpdCBXbENvbXBv c2l0b3IoQ29yZUNvbXBvc2l0b3IgKmNvbXBvc2l0b3IsIGludCB2ZXJzaW9uID0gNCkKKyAgICAg ICAgIDogUXRXYXlsYW5kU2VydmVyOjp3bF9jb21wb3NpdG9yKGNvbXBvc2l0b3ItPm1fZGlzcGxh eSwgdmVyc2lvbikKKyAgICAgICAgICwgbV9jb21wb3NpdG9yKGNvbXBvc2l0b3IpCisgICAgIHt9 CitAQCAtMzY0LDYgKzM2NCw3IEBAIHB1YmxpYzoKKyAgICAgdWludCBzZW5kVXAod2xfY2xpZW50 ICpjbGllbnQsIGludCBpZCk7CisgICAgIHZvaWQgc2VuZE1vdGlvbih3bF9jbGllbnQgKmNsaWVu dCwgY29uc3QgUVBvaW50RiAmcG9zaXRpb24sIGludCBpZCk7CisgICAgIHZvaWQgc2VuZEZyYW1l KHdsX2NsaWVudCAqY2xpZW50KTsKKysgICAgdm9pZCBzZW5kQ2FuY2VsKHdsX2NsaWVudCAqY2xp ZW50KTsKKyAKKyAgICAgU2VhdCAqbV9zZWF0ID0gbnVsbHB0cjsKKyB9OworZGlmZiAtLWdpdCBh L3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tjb21wb3NpdG9yLmNw cCBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tjb21wb3NpdG9y LmNwcAoraW5kZXggYTQxNWNiZjUuLmIxZDNkMDdkIDEwMDY0NAorLS0tIGEvcXR3YXlsYW5kL3Rl c3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja2NvbXBvc2l0b3IuY3BwCisrKysgYi9xdHdh eWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29sZC9tb2NrY29tcG9zaXRvci5jcHAKK0BA IC0zNDIsNyArMzQyLDcgQEAgQ29tcG9zaXRvcjo6Q29tcG9zaXRvcihNb2NrQ29tcG9zaXRvciAq bW9ja0NvbXBvc2l0b3IpCisgICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgIH0KKyAK Ky0gICAgd2xfZ2xvYmFsX2NyZWF0ZShtX2Rpc3BsYXksICZ3bF9jb21wb3NpdG9yX2ludGVyZmFj ZSwgMSwgdGhpcywgYmluZENvbXBvc2l0b3IpOworKyAgICB3bF9nbG9iYWxfY3JlYXRlKG1fZGlz cGxheSwgJndsX2NvbXBvc2l0b3JfaW50ZXJmYWNlLCA0LCB0aGlzLCBiaW5kQ29tcG9zaXRvcik7 CisgCisgICAgIG1fZGF0YV9kZXZpY2VfbWFuYWdlci5yZXNldChuZXcgRGF0YURldmljZU1hbmFn ZXIodGhpcywgbV9kaXNwbGF5KSk7CisgCitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1 dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1 dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuY3BwCitpbmRleCBlOWRmNWY5MC4uYzMy NDZlNGEgMTAwNjQ0CistLS0gYS9xdHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc2hhcmVkX29s ZC9tb2Nrc3VyZmFjZS5jcHAKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFy ZWRfb2xkL21vY2tzdXJmYWNlLmNwcAorQEAgLTEyNSw2ICsxMjUsMTYgQEAgdm9pZCBTdXJmYWNl OjpzdXJmYWNlX2RhbWFnZShSZXNvdXJjZSAqcmVzb3VyY2UsCisgICAgIFFfVU5VU0VEKGhlaWdo dCk7CisgfQorIAorK3ZvaWQgU3VyZmFjZTo6c3VyZmFjZV9kYW1hZ2VfYnVmZmVyKFJlc291cmNl ICpyZXNvdXJjZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90 IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQpCisreworKyAgICBR X1VOVVNFRChyZXNvdXJjZSk7CisrICAgIFFfVU5VU0VEKHgpOworKyAgICBRX1VOVVNFRCh5KTsK KysgICAgUV9VTlVTRUQod2lkdGgpOworKyAgICBRX1VOVVNFRChoZWlnaHQpOworK30KKysKKyB2 b2lkIFN1cmZhY2U6OnN1cmZhY2VfZnJhbWUoUmVzb3VyY2UgKnJlc291cmNlLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBjYWxsYmFjaykKKyB7CitkaWZmIC0tZ2l0IGEv cXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3NoYXJlZF9vbGQvbW9ja3N1cmZhY2UuaCBiL3F0 d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmgKK2luZGV4 IDk0OWRjMjNkLi5kMTc2ODM3ZSAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2Ns aWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmgKKysrKyBiL3F0d2F5bGFuZC90ZXN0cy9hdXRv L2NsaWVudC9zaGFyZWRfb2xkL21vY2tzdXJmYWNlLmgKK0BAIC02NSw2ICs2NSw4IEBAIHByb3Rl Y3RlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd2xfcmVzb3VyY2UgKmJ1ZmZl ciwgaW50IHgsIGludCB5KSBvdmVycmlkZTsKKyAgICAgdm9pZCBzdXJmYWNlX2RhbWFnZShSZXNv dXJjZSAqcmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB4LCBpbnQz Ml90IHksIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KSBvdmVycmlkZTsKKysgICAgdm9p ZCBzdXJmYWNlX2RhbWFnZV9idWZmZXIoUmVzb3VyY2UgKnJlc291cmNlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHgsIGludDMyX3QgeSwgaW50MzJfdCB3aWR0aCwg aW50MzJfdCBoZWlnaHQpIG92ZXJyaWRlOworICAgICB2b2lkIHN1cmZhY2VfZnJhbWUoUmVzb3Vy Y2UgKnJlc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgY2FsbGJhY2sp IG92ZXJyaWRlOworICAgICB2b2lkIHN1cmZhY2VfY29tbWl0KFJlc291cmNlICpyZXNvdXJjZSkg b3ZlcnJpZGU7CitkaWZmIC0tZ2l0IGEvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3N1cmZh Y2UvdHN0X3N1cmZhY2UuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3N1cmZhY2Uv dHN0X3N1cmZhY2UuY3BwCitpbmRleCA5NWU0ZTYwOS4uNjBjNjcyY2UgMTAwNjQ0CistLS0gYS9x dHdheWxhbmQvdGVzdHMvYXV0by9jbGllbnQvc3VyZmFjZS90c3Rfc3VyZmFjZS5jcHAKKysrKyBi L3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC9zdXJmYWNlL3RzdF9zdXJmYWNlLmNwcAorQEAg LTEyOSw2ICsxMjksMTAgQEAgdm9pZCB0c3Rfc3VyZmFjZTo6d2FpdEZvckZyYW1lQ2FsbGJhY2tH bCgpCisgICAgIC8vIE1ha2Ugc3VyZSB3ZSBmb2xsb3cgZnJhbWUgY2FsbGJhY2tzIGZvciBzb21l IGZyYW1lcworICAgICBmb3IgKGludCBpID0gMDsgaSA8IDU7ICsraSkgeworICAgICAgICAgeGRn UGluZ0FuZFdhaXRGb3JQb25nKCk7IC8vIE1ha2Ugc3VyZSB0aGluZ3MgaGF2ZSBoYXBwZW5lZCBv biB0aGUgY2xpZW50CisrICAgICAgICBpZiAoIXFFbnZpcm9ubWVudFZhcmlhYmxlSW50VmFsdWUo IlFUX1dBWUxBTkRfRElTQUJMRV9XSU5ET1dERUNPUkFUSU9OIikgJiYgaSA9PSAwKSB7CisrICAg ICAgICAgICAgUUNPTVBBUkUoYnVmZmVyU3B5LmNvdW50KCksIDEpOworKyAgICAgICAgICAgIGJ1 ZmZlclNweS5yZW1vdmVGaXJzdCgpOworKyAgICAgICAgfQorICAgICAgICAgZXhlYyhbJl0gewor ICAgICAgICAgICAgIFFWRVJJRlkoYnVmZmVyU3B5LmVtcHR5KCkpOyAvLyBNYWtlIHN1cmUgbm8g ZXh0cmEgYnVmZmVycyBoYXZlIGFycml2ZWQKKyAgICAgICAgICAgICBRVkVSSUZZKCF4ZGdUb3Bs ZXZlbCgpLT5zdXJmYWNlKCktPm1fd2FpdGluZ0ZyYW1lQ2FsbGJhY2tzLmVtcHR5KCkpOworZGlm ZiAtLWdpdCBhL3F0d2F5bGFuZC90ZXN0cy9hdXRvL2NsaWVudC94ZGdzaGVsbC90c3RfeGRnc2hl bGwuY3BwIGIvcXR3YXlsYW5kL3Rlc3RzL2F1dG8vY2xpZW50L3hkZ3NoZWxsL3RzdF94ZGdzaGVs bC5jcHAKK2luZGV4IDIyNzdiYmI4Li43NDc4NzViNCAxMDA2NDQKKy0tLSBhL3F0d2F5bGFuZC90 ZXN0cy9hdXRvL2NsaWVudC94ZGdzaGVsbC90c3RfeGRnc2hlbGwuY3BwCisrKysgYi9xdHdheWxh bmQvdGVzdHMvYXV0by9jbGllbnQveGRnc2hlbGwvdHN0X3hkZ3NoZWxsLmNwcAorQEAgLTMxLDYg KzMxLDcgQEAKKyAjaW5jbHVkZSA8UXRHdWkvUU9wZW5HTFdpbmRvdz4KKyAjaW5jbHVkZSA8UXRH dWkvcXBhL3FwbGF0Zm9ybW5hdGl2ZWludGVyZmFjZS5oPgorICNpbmNsdWRlIDxRdFdheWxhbmRD bGllbnQvcHJpdmF0ZS93YXlsYW5kLXdheWxhbmQtY2xpZW50LXByb3RvY29sLmg+CisrI2luY2x1 ZGUgPFF0V2F5bGFuZENsaWVudC9wcml2YXRlL3F3YXlsYW5kd2luZG93X3AuaD4KKyAKKyB1c2lu ZyBuYW1lc3BhY2UgTW9ja0NvbXBvc2l0b3I7CisgCitAQCAtNDUsNiArNDYsNyBAQCBwcml2YXRl IHNsb3RzOgorICAgICB2b2lkIGNvbmZpZ3VyZVN0YXRlcygpOworICAgICB2b2lkIHBvcHVwKCk7 CisgICAgIHZvaWQgdG9vbHRpcE9uUG9wdXAoKTsKKysgICAgdm9pZCB0b29sdGlwQW5kU2libGlu Z1BvcHVwKCk7CisgICAgIHZvaWQgc3dpdGNoUG9wdXBzKCk7CisgICAgIHZvaWQgaGlkZVBvcHVw UGFyZW50KCk7CisgICAgIHZvaWQgcG9uZ3MoKTsKK0BAIC0xMzgsNiArMTQwLDcgQEAgdm9pZCB0 c3RfeGRnc2hlbGw6OmNvbmZpZ3VyZVNpemUoKQorIAorIHZvaWQgdHN0X3hkZ3NoZWxsOjpjb25m aWd1cmVTdGF0ZXMoKQorIHsKKysgICAgUVZFUklGWShxcHV0ZW52KCJRVF9XQVlMQU5EX0ZSQU1F X0NBTExCQUNLX1RJTUVPVVQiLCAiMCIpKTsKKyAgICAgUVJhc3RlcldpbmRvdyB3aW5kb3c7Cisg ICAgIHdpbmRvdy5yZXNpemUoNjQsIDQ4KTsKKyAgICAgd2luZG93LnNob3coKTsKK0BAIC0xNTQs OSArMTU3LDEyIEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjpjb25maWd1cmVTdGF0ZXMoKQorICAgICAv LyBUb3BsZXZlbCB3aW5kb3dzIGRvbid0IGtub3cgdGhlaXIgcG9zaXRpb24gb24geGRnLXNoZWxs CisgLy8gICAgUUNPTVBBUkUod2luZG93LmZyYW1lR2VvbWV0cnkoKS50b3BMZWZ0KCksIFFQb2lu dCgpKTsgLy8gVE9ETzogdGhpcyBkb2Vzbid0IGN1cnJlbnRseSB3b3JrIHdoZW4gd2luZG93IGRl Y29yYXRpb25zIGFyZSBlbmFibGVkCisgCistLy8gICAgUUVYUEVDVF9GQUlMKCIiLCAiY29uZmln dXJlIGhhcyBhbHJlYWR5IGJlZW4gYWNrZWQsIHdlIHNob3VsZG4ndCBoYXZlIHRvIHdhaXQgZm9y IGlzQWN0aXZlIiwgQ29udGludWUpOworLS8vICAgIFFWRVJJRlkod2luZG93LmlzQWN0aXZlKCkp OworLSAgICBRVFJZX1ZFUklGWSh3aW5kb3cuaXNBY3RpdmUoKSk7IC8vIEp1c3QgbWFrZSBzdXJl IGl0IGV2ZW50dWFsbHkgZ2V0J3Mgc2V0IGNvcnJlY3RseQorKyAgICAvLyB3aW5kb3cud2luZG93 c3RhdGUoKSBpcyBkcml2ZW4gYnkga2V5Ym9hcmQgZm9jdXMsIGhvd2V2ZXIgZm9yIGRlY29yYXRp b25zIHdlIHdhbnQgdG8gZm9sbG93CisrICAgIC8vIFhER1NoZWxsIHRoaXMgaXMgaW50ZXJuYWwg dG8gUXRXYXlsYW5kIHNvIGl0IGlzIHF1ZXJpZWQgZGlyZWN0bHkKKysgICAgYXV0byB3YXlsYW5k V2luZG93ID0gc3RhdGljX2Nhc3Q8UXRXYXlsYW5kQ2xpZW50OjpRV2F5bGFuZFdpbmRvdyAqPih3 aW5kb3cuaGFuZGxlKCkpOworKyAgICBRX0FTU0VSVCh3YXlsYW5kV2luZG93KTsKKysgICAgUVRS WV9WRVJJRlkod2F5bGFuZFdpbmRvdy0+d2luZG93U3RhdGVzKCkudGVzdEZsYWcoCisrICAgICAg ICAgICAgUXQ6OldpbmRvd0FjdGl2ZSkpOyAvLyBKdXN0IG1ha2Ugc3VyZSBpdCBldmVudHVhbGx5 IGdldCdzIHNldCBjb3JyZWN0bHkKKyAKKyAgICAgY29uc3QgUVNpemUgc2NyZWVuU2l6ZSg2NDAs IDQ4MCk7CisgICAgIGNvbnN0IHVpbnQgbWF4aW1pemVkU2VyaWFsID0gZXhlYyhbPV0geworQEAg LTE4Niw2ICsxOTIsNyBAQCB2b2lkIHRzdF94ZGdzaGVsbDo6Y29uZmlndXJlU3RhdGVzKCkKKyAg ICAgUUNPTVBBUkUod2luZG93LndpbmRvd1N0YXRlcygpLCBRdDo6V2luZG93Tm9TdGF0ZSk7Cisg ICAgIFFDT01QQVJFKHdpbmRvdy5mcmFtZUdlb21ldHJ5KCkuc2l6ZSgpLCB3aW5kb3dlZFNpemUp OworIC8vICAgIFFDT01QQVJFKHdpbmRvdy5mcmFtZUdlb21ldHJ5KCkudG9wTGVmdCgpLCBRUG9p bnQoKSk7IC8vIFRPRE86IHRoaXMgZG9lc24ndCBjdXJyZW50bHkgd29yayB3aGVuIHdpbmRvdyBk ZWNvcmF0aW9ucyBhcmUgZW5hYmxlZAorKyAgICBRVkVSSUZZKHF1bnNldGVudigiUVRfV0FZTEFO RF9GUkFNRV9DQUxMQkFDS19USU1FT1VUIikpOworIH0KKyAKKyB2b2lkIHRzdF94ZGdzaGVsbDo6 cG9wdXAoKQorQEAgLTM0MCw2ICszNDcsOTIgQEAgdm9pZCB0c3RfeGRnc2hlbGw6OnRvb2x0aXBP blBvcHVwKCkKKyAgICAgUUNPTVBPU0lUT1JfVFJZX0NPTVBBUkUoeGRnUG9wdXAoMCksIG51bGxw dHIpOworIH0KKyAKKyt2b2lkIHRzdF94ZGdzaGVsbDo6dG9vbHRpcEFuZFNpYmxpbmdQb3B1cCgp CisreworKyAgICBjbGFzcyBUb29sVGlwIDogcHVibGljIFFSYXN0ZXJXaW5kb3cgeworKyAgICBw dWJsaWM6CisrICAgICAgICBleHBsaWNpdCBUb29sVGlwKFFXaW5kb3cgKnBhcmVudCkgeworKyAg ICAgICAgICAgIHNldFRyYW5zaWVudFBhcmVudChwYXJlbnQpOworKyAgICAgICAgICAgIHNldEZs YWdzKFF0OjpUb29sVGlwKTsKKysgICAgICAgICAgICByZXNpemUoMTAwLCAxMDApOworKyAgICAg ICAgICAgIHNob3coKTsKKysgICAgICAgIH0KKysgICAgICAgIHZvaWQgbW91c2VQcmVzc0V2ZW50 KFFNb3VzZUV2ZW50ICpldmVudCkgb3ZlcnJpZGUgeworKyAgICAgICAgICAgIFFSYXN0ZXJXaW5k b3c6Om1vdXNlUHJlc3NFdmVudChldmVudCk7CisrICAgICAgICAgICAgbV9wb3B1cCA9IG5ldyBR UmFzdGVyV2luZG93OworKyAgICAgICAgICAgIG1fcG9wdXAtPnNldFRyYW5zaWVudFBhcmVudCh0 cmFuc2llbnRQYXJlbnQoKSk7CisrICAgICAgICAgICAgbV9wb3B1cC0+c2V0RmxhZ3MoUXQ6OlBv cHVwKTsKKysgICAgICAgICAgICBtX3BvcHVwLT5yZXNpemUoMTAwLCAxMDApOworKyAgICAgICAg ICAgIG1fcG9wdXAtPnNob3coKTsKKysgICAgICAgIH0KKysKKysgICAgICAgIFFSYXN0ZXJXaW5k b3cgKm1fcG9wdXAgPSBudWxscHRyOworKyAgICB9OworKworKyAgICBjbGFzcyBXaW5kb3cgOiBw dWJsaWMgUVJhc3RlcldpbmRvdyB7CisrICAgIHB1YmxpYzoKKysgICAgICAgIHZvaWQgbW91c2VQ cmVzc0V2ZW50KFFNb3VzZUV2ZW50ICpldmVudCkgb3ZlcnJpZGUgeworKyAgICAgICAgICAgIFFS YXN0ZXJXaW5kb3c6Om1vdXNlUHJlc3NFdmVudChldmVudCk7CisrICAgICAgICAgICAgbV90b29s dGlwID0gbmV3IFRvb2xUaXAodGhpcyk7CisrICAgICAgICB9CisrICAgICAgICBUb29sVGlwICpt X3Rvb2x0aXAgPSBudWxscHRyOworKyAgICB9OworKworKyAgICBXaW5kb3cgd2luZG93OworKyAg ICB3aW5kb3cucmVzaXplKDIwMCwgMjAwKTsKKysgICAgd2luZG93LnNob3coKTsKKysKKysgICAg UUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdUb3BsZXZlbCgpKTsKKysgICAgZXhlYyhbPV0geyB4 ZGdUb3BsZXZlbCgpLT5zZW5kQ29tcGxldGVDb25maWd1cmUoKTsgfSk7CisrICAgIFFDT01QT1NJ VE9SX1RSWV9WRVJJRlkoeGRnVG9wbGV2ZWwoKS0+bV94ZGdTdXJmYWNlLT5tX2NvbW1pdHRlZENv bmZpZ3VyZVNlcmlhbCk7CisrCisrICAgIGV4ZWMoWz1dIHsKKysgICAgICAgIGF1dG8gKnN1cmZh Y2UgPSB4ZGdUb3BsZXZlbCgpLT5zdXJmYWNlKCk7CisrICAgICAgICBhdXRvICpwID0gcG9pbnRl cigpOworKyAgICAgICAgYXV0byAqYyA9IGNsaWVudCgpOworKyAgICAgICAgcC0+c2VuZEVudGVy KHN1cmZhY2UsIHsxMDAsIDEwMH0pOworKyAgICAgICAgcC0+c2VuZEZyYW1lKGMpOworKyAgICAg ICAgcC0+c2VuZEJ1dHRvbihjbGllbnQoKSwgQlROX0xFRlQsIFBvaW50ZXI6OmJ1dHRvbl9zdGF0 ZV9wcmVzc2VkKTsKKysgICAgICAgIHAtPnNlbmRCdXR0b24oY2xpZW50KCksIEJUTl9MRUZULCBQ b2ludGVyOjpidXR0b25fc3RhdGVfcmVsZWFzZWQpOworKyAgICAgICAgcC0+c2VuZEZyYW1lKGMp OworKyAgICAgICAgcC0+c2VuZExlYXZlKHN1cmZhY2UpOworKyAgICAgICAgcC0+c2VuZEZyYW1l KGMpOworKyAgICB9KTsKKysKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdQb3B1cCgp KTsKKysgICAgZXhlYyhbPV0geyB4ZGdQb3B1cCgpLT5zZW5kQ29tcGxldGVDb25maWd1cmUoUVJl Y3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7IH0pOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZ KHhkZ1BvcHVwKCktPm1feGRnU3VyZmFjZS0+bV9jb21taXR0ZWRDb25maWd1cmVTZXJpYWwpOwor KyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKCF4ZGdQb3B1cCgpLT5tX2dyYWJiZWQpOworKwor KyAgICBleGVjKFs9XSB7CisrICAgICAgICBhdXRvICpzdXJmYWNlID0geGRnUG9wdXAoKS0+c3Vy ZmFjZSgpOworKyAgICAgICAgYXV0byAqcCA9IHBvaW50ZXIoKTsKKysgICAgICAgIGF1dG8gKmMg PSBjbGllbnQoKTsKKysgICAgICAgIHAtPnNlbmRFbnRlcihzdXJmYWNlLCB7MTAwLCAxMDB9KTsK KysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgICAgIHAtPnNlbmRCdXR0b24oY2xpZW50 KCksIEJUTl9MRUZULCBQb2ludGVyOjpidXR0b25fc3RhdGVfcHJlc3NlZCk7CisrICAgICAgICBw LT5zZW5kQnV0dG9uKGNsaWVudCgpLCBCVE5fTEVGVCwgUG9pbnRlcjo6YnV0dG9uX3N0YXRlX3Jl bGVhc2VkKTsKKysgICAgICAgIHAtPnNlbmRGcmFtZShjKTsKKysgICAgfSk7CisrCisrICAgIFFD T01QT1NJVE9SX1RSWV9WRVJJRlkoeGRnUG9wdXAoMSkpOworKyAgICBleGVjKFs9XSB7IHhkZ1Bv cHVwKDEpLT5zZW5kQ29tcGxldGVDb25maWd1cmUoUVJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7 IH0pOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDEpLT5tX3hkZ1N1cmZh Y2UtPm1fY29tbWl0dGVkQ29uZmlndXJlU2VyaWFsKTsKKysgICAgUUNPTVBPU0lUT1JfVFJZX1ZF UklGWSh4ZGdQb3B1cCgxKS0+bV9ncmFiYmVkKTsKKysKKysgICAgLy8gQ2xvc2UgdGhlIG1pZGRs ZSB0b29sdGlwIChpdCBzaG91bGQgbm90IGNsb3NlIHRoZSBzaWJsaW5nIHBvcHVwKQorKyAgICB3 aW5kb3cubV90b29sdGlwLT5jbG9zZSgpOworKworKyAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFS RSh4ZGdQb3B1cCgxKSwgbnVsbHB0cik7CisrICAgIC8vIFZlcmlmeSB0aGUgcmVtYWluaW5nIHhk ZyBzdXJmYWNlIGlzIGEgZ3JhYiBwb3B1cC4uCisrICAgIFFDT01QT1NJVE9SX1RSWV9WRVJJRlko eGRnUG9wdXAoMCkpOworKyAgICBRQ09NUE9TSVRPUl9UUllfVkVSSUZZKHhkZ1BvcHVwKDApLT5t X2dyYWJiZWQpOworKworKyAgICB3aW5kb3cubV90b29sdGlwLT5tX3BvcHVwLT5jbG9zZSgpOwor KyAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdQb3B1cCgxKSwgbnVsbHB0cik7CisrICAg IFFDT01QT1NJVE9SX1RSWV9DT01QQVJFKHhkZ1BvcHVwKDApLCBudWxscHRyKTsKKyt9CisrCisg Ly8gUVRCVUctNjU2ODAKKyB2b2lkIHRzdF94ZGdzaGVsbDo6c3dpdGNoUG9wdXBzKCkKKyB7CitA QCAtNTA1LDcgKzU5OCw3IEBAIHZvaWQgdHN0X3hkZ3NoZWxsOjptaW5NYXhTaXplKCkKKyAgICAg d2luZG93LnNob3coKTsKKyAgICAgUUNPTVBPU0lUT1JfVFJZX1ZFUklGWSh4ZGdUb3BsZXZlbCgp KTsKKyAKKy0gICAgZXhlYyhbPV0geyB4ZGdUb3BsZXZlbCgpLT5zZW5kQ29tcGxldGVDb25maWd1 cmUoKTsgfSk7CisrICAgIC8vIHdlIGRvbid0IHJvdW5kdHJpcCB3aXRoIG91ciBjb25maWd1cmF0 aW9uIHRoZSBpbml0aWFsIGNvbW1pdCBzaG91bGQgYmUgY29ycmVjdAorIAorICAgICBRQ09NUE9T SVRPUl9UUllfQ09NUEFSRSh4ZGdUb3BsZXZlbCgpLT5tX2NvbW1pdHRlZC5taW5TaXplLCBRU2l6 ZSgxMDAsIDEwMCkpOworICAgICBRQ09NUE9TSVRPUl9UUllfQ09NUEFSRSh4ZGdUb3BsZXZlbCgp LT5tX2NvbW1pdHRlZC5tYXhTaXplLCBRU2l6ZSgxMDAwLCAxMDAwKSk7CitTdWJtb2R1bGUgcXR3 ZWJjaGFubmVsIDYxODQyMmVlLi5mODk0OTY1NToKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwv c3JjL3dlYmNoYW5uZWwvcW1ldGFvYmplY3RwdWJsaXNoZXIuY3BwIGIvcXR3ZWJjaGFubmVsL3Ny Yy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyLmNwcAoraW5kZXggNTM2ZWI1Yy4uODk4 ZDc2OSAxMDA2NDQKKy0tLSBhL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVj dHB1Ymxpc2hlci5jcHAKKysrKyBiL3F0d2ViY2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9i amVjdHB1Ymxpc2hlci5jcHAKK0BAIC0xODYsOCArMTg2LDYgQEAgUV9ERUNMQVJFX1RZUEVJTkZP KE92ZXJsb2FkUmVzb2x1dGlvbkNhbmRpZGF0ZSwgUV9NT1ZBQkxFX1RZUEUpOworIFFNZXRhT2Jq ZWN0UHVibGlzaGVyOjpRTWV0YU9iamVjdFB1Ymxpc2hlcihRV2ViQ2hhbm5lbCAqd2ViQ2hhbm5l bCkKKyAgICAgOiBRT2JqZWN0KHdlYkNoYW5uZWwpCisgICAgICwgd2ViQ2hhbm5lbCh3ZWJDaGFu bmVsKQorLSAgICAsIHNpZ25hbEhhbmRsZXIodGhpcykKKy0gICAgLCBjbGllbnRJc0lkbGUoZmFs c2UpCisgICAgICwgYmxvY2tVcGRhdGVzKGZhbHNlKQorICAgICAsIHByb3BlcnR5VXBkYXRlc0lu aXRpYWxpemVkKGZhbHNlKQorIHsKK0BAIC0zMDEsMTcgKzI5OSwxNyBAQCBRSnNvbk9iamVjdCBR TWV0YU9iamVjdFB1Ymxpc2hlcjo6Y2xhc3NJbmZvRm9yT2JqZWN0KGNvbnN0IFFPYmplY3QgKm9i amVjdCwgUVdlYgorICAgICByZXR1cm4gZGF0YTsKKyB9CisgCistdm9pZCBRTWV0YU9iamVjdFB1 Ymxpc2hlcjo6c2V0Q2xpZW50SXNJZGxlKGJvb2wgaXNJZGxlKQorK3ZvaWQgUU1ldGFPYmplY3RQ dWJsaXNoZXI6OnNldENsaWVudElzSWRsZShib29sIGlzSWRsZSwgUVdlYkNoYW5uZWxBYnN0cmFj dFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorIHsKKy0gICAgaWYgKGNsaWVudElzSWRsZSA9PSBpc0lk bGUpIHsKKy0gICAgICAgIHJldHVybjsKKy0gICAgfQorLSAgICBjbGllbnRJc0lkbGUgPSBpc0lk bGU7CistICAgIGlmICghaXNJZGxlICYmIHRpbWVyLmlzQWN0aXZlKCkpIHsKKy0gICAgICAgIHRp bWVyLnN0b3AoKTsKKy0gICAgfSBlbHNlIGlmIChpc0lkbGUgJiYgIXRpbWVyLmlzQWN0aXZlKCkp IHsKKy0gICAgICAgIHRpbWVyLnN0YXJ0KFBST1BFUlRZX1VQREFURV9JTlRFUlZBTCwgdGhpcyk7 CistICAgIH0KKysgICAgdHJhbnNwb3J0U3RhdGVbdHJhbnNwb3J0XS5jbGllbnRJc0lkbGUgPSBp c0lkbGU7CisrICAgIGlmIChpc0lkbGUpCisrICAgICAgICBzZW5kRW5xdWV1ZWRQcm9wZXJ0eVVw ZGF0ZXModHJhbnNwb3J0KTsKKyt9CisrCisrYm9vbCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aXND bGllbnRJZGxlKFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCkKKyt7Cisr ICAgIGF1dG8gZm91bmQgPSB0cmFuc3BvcnRTdGF0ZS5maW5kKHRyYW5zcG9ydCk7CisrICAgIHJl dHVybiBmb3VuZCAhPSB0cmFuc3BvcnRTdGF0ZS5lbmQoKSAmJiBmb3VuZC52YWx1ZSgpLmNsaWVu dElzSWRsZTsKKyB9CisgCisgUUpzb25PYmplY3QgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmluaXRp YWxpemVDbGllbnQoUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorQEAg LTMzMyw2ICszMzEsNyBAQCBRSnNvbk9iamVjdCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6aW5pdGlh bGl6ZUNsaWVudChRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0CisgCisgdm9pZCBRTWV0YU9i amVjdFB1Ymxpc2hlcjo6aW5pdGlhbGl6ZVByb3BlcnR5VXBkYXRlcyhjb25zdCBRT2JqZWN0ICpj b25zdCBvYmplY3QsIGNvbnN0IFFKc29uT2JqZWN0ICZvYmplY3RJbmZvKQorIHsKKysgICAgYXV0 byAqc2lnbmFsSGFuZGxlciA9IHNpZ25hbEhhbmRsZXJGb3Iob2JqZWN0KTsKKyAgICAgZm9yZWFj aCAoY29uc3QgUUpzb25WYWx1ZSAmcHJvcGVydHlJbmZvVmFyLCBvYmplY3RJbmZvW0tFWV9QUk9Q RVJUSUVTXS50b0FycmF5KCkpIHsKKyAgICAgICAgIGNvbnN0IFFKc29uQXJyYXkgJnByb3BlcnR5 SW5mbyA9IHByb3BlcnR5SW5mb1Zhci50b0FycmF5KCk7CisgICAgICAgICBpZiAocHJvcGVydHlJ bmZvLnNpemUoKSA8IDIpIHsKK0BAIC0zNTMsMTkgKzM1MiwxOSBAQCB2b2lkIFFNZXRhT2JqZWN0 UHVibGlzaGVyOjppbml0aWFsaXplUHJvcGVydHlVcGRhdGVzKGNvbnN0IFFPYmplY3QgKmNvbnN0 IG9iamVjdAorIAorICAgICAgICAgLy8gT25seSBjb25uZWN0IGZvciBhIHByb3BlcnR5IHVwZGF0 ZSBvbmNlCisgICAgICAgICBpZiAoY29ubmVjdGVkUHJvcGVydGllcy5pc0VtcHR5KCkpIHsKKy0g ICAgICAgICAgICBzaWduYWxIYW5kbGVyLmNvbm5lY3RUbyhvYmplY3QsIHNpZ25hbEluZGV4KTsK KysgICAgICAgICAgICBzaWduYWxIYW5kbGVyLT5jb25uZWN0VG8ob2JqZWN0LCBzaWduYWxJbmRl eCk7CisgICAgICAgICB9CisgCisgICAgICAgICBjb25uZWN0ZWRQcm9wZXJ0aWVzLmluc2VydChw cm9wZXJ0eUluZGV4KTsKKyAgICAgfQorIAorICAgICAvLyBhbHNvIGFsd2F5cyBjb25uZWN0IHRv IGRlc3Ryb3llZCBzaWduYWwKKy0gICAgc2lnbmFsSGFuZGxlci5jb25uZWN0VG8ob2JqZWN0LCBz X2Rlc3Ryb3llZFNpZ25hbEluZGV4KTsKKysgICAgc2lnbmFsSGFuZGxlci0+Y29ubmVjdFRvKG9i amVjdCwgc19kZXN0cm95ZWRTaWduYWxJbmRleCk7CisgfQorIAorIHZvaWQgUU1ldGFPYmplY3RQ dWJsaXNoZXI6OnNlbmRQZW5kaW5nUHJvcGVydHlVcGRhdGVzKCkKKyB7CistICAgIGlmIChibG9j a1VwZGF0ZXMgfHwgIWNsaWVudElzSWRsZSB8fCBwZW5kaW5nUHJvcGVydHlVcGRhdGVzLmlzRW1w dHkoKSkgeworKyAgICBpZiAoYmxvY2tVcGRhdGVzKSB7CisgICAgICAgICByZXR1cm47CisgICAg IH0KKyAKK0BAIC00MTUsMTggKzQxNCwxOSBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpz ZW5kUGVuZGluZ1Byb3BlcnR5VXBkYXRlcygpCisgCisgICAgIC8vIGRhdGEgZG9lcyBub3QgY29u dGFpbiBzcGVjaWZpYyB1cGRhdGVzCisgICAgIGlmICghZGF0YS5pc0VtcHR5KCkpIHsKKy0gICAg ICAgIHNldENsaWVudElzSWRsZShmYWxzZSk7CistCisgICAgICAgICBtZXNzYWdlW0tFWV9EQVRB XSA9IGRhdGE7CistICAgICAgICBicm9hZGNhc3RNZXNzYWdlKG1lc3NhZ2UpOworKyAgICAgICAg ZW5xdWV1ZUJyb2FkY2FzdE1lc3NhZ2UobWVzc2FnZSk7CisgICAgIH0KKyAKKyAgICAgLy8gc2Vu ZCBldmVyeSBwcm9wZXJ0eSB1cGRhdGUgd2hpY2ggaXMgbm90IHN1cHBvc2VkIHRvIGJlIGJyb2Fk Y2FzdGVkCisgICAgIGNvbnN0IFFIYXNoPFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQqLCBR SnNvbkFycmF5Pjo6Y29uc3RfaXRlcmF0b3Igc3VlbmQgPSBzcGVjaWZpY1VwZGF0ZXMuY29uc3RF bmQoKTsKKyAgICAgZm9yIChRSGFzaDxRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0KiwgUUpz b25BcnJheT46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc3BlY2lmaWNVcGRhdGVzLmNvbnN0QmVnaW4o KTsgaXQgIT0gc3VlbmQ7ICsraXQpIHsKKyAgICAgICAgIG1lc3NhZ2VbS0VZX0RBVEFdID0gaXQu dmFsdWUoKTsKKy0gICAgICAgIGl0LmtleSgpLT5zZW5kTWVzc2FnZShtZXNzYWdlKTsKKysgICAg ICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2UsIGl0LmtleSgpKTsKKyAgICAgfQorKworKyAgICBm b3IgKGF1dG8gc3RhdGUgPSB0cmFuc3BvcnRTdGF0ZS5iZWdpbigpOyBzdGF0ZSAhPSB0cmFuc3Bv cnRTdGF0ZS5lbmQoKTsgKytzdGF0ZSkKKysgICAgICAgIHNlbmRFbnF1ZXVlZFByb3BlcnR5VXBk YXRlcyhzdGF0ZS5rZXkoKSk7CisgfQorIAorIFFWYXJpYW50IFFNZXRhT2JqZWN0UHVibGlzaGVy OjppbnZva2VNZXRob2QoUU9iamVjdCAqY29uc3Qgb2JqZWN0LCBjb25zdCBRTWV0YU1ldGhvZCAm bWV0aG9kLAorQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpz aWduYWxFbWl0dGVkKGNvbnN0IFFPYmplY3QgKm9iamVjdCwgY29uc3QgaW50IHNpZ25hbAorICAg ICAgICAgfQorICAgICB9IGVsc2UgeworICAgICAgICAgcGVuZGluZ1Byb3BlcnR5VXBkYXRlc1tv YmplY3RdW3NpZ25hbEluZGV4XSA9IGFyZ3VtZW50czsKKy0gICAgICAgIGlmIChjbGllbnRJc0lk bGUgJiYgIWJsb2NrVXBkYXRlcyAmJiAhdGltZXIuaXNBY3RpdmUoKSkgeworKyAgICAgICAgaWYg KCFibG9ja1VwZGF0ZXMgJiYgIXRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgICB0aW1l ci5zdGFydChQUk9QRVJUWV9VUERBVEVfSU5URVJWQUwsIHRoaXMpOworICAgICAgICAgfQorICAg ICB9CitAQCAtNTkwLDcgKzU5MCw3IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6Om9iamVj dERlc3Ryb3llZChjb25zdCBRT2JqZWN0ICpvYmplY3QpCisgICAgIC8vIG9ubHkgcmVtb3ZlIGZy b20gaGFuZGxlciB3aGVuIHdlIGluaXRpYWxpemVkIHRoZSBwcm9wZXJ0eSB1cGRhdGVzCisgICAg IC8vIGNmOiBodHRwczovL2J1Z3JlcG9ydHMucXQuaW8vYnJvd3NlL1FUQlVHLTYwMjUwCisgICAg IGlmIChwcm9wZXJ0eVVwZGF0ZXNJbml0aWFsaXplZCkgeworLSAgICAgICAgc2lnbmFsSGFuZGxl ci5yZW1vdmUob2JqZWN0KTsKKysgICAgICAgIHNpZ25hbEhhbmRsZXJGb3Iob2JqZWN0KS0+cmVt b3ZlKG9iamVjdCk7CisgICAgICAgICBzaWduYWxUb1Byb3BlcnR5TWFwLnJlbW92ZShvYmplY3Qp OworICAgICB9CisgICAgIHBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMucmVtb3ZlKG9iamVjdCk7CitA QCAtODUyLDYgKzg1Miw1MiBAQCB2b2lkIFFNZXRhT2JqZWN0UHVibGlzaGVyOjpicm9hZGNhc3RN ZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdlKSBjb25zdAorICAgICB9CisgfQorIAor K3ZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmVucXVldWVCcm9hZGNhc3RNZXNzYWdlKGNvbnN0 IFFKc29uT2JqZWN0ICZtZXNzYWdlKQorK3sKKysgICAgaWYgKHdlYkNoYW5uZWwtPmRfZnVuYygp LT50cmFuc3BvcnRzLmlzRW1wdHkoKSkgeworKyAgICAgICAgcVdhcm5pbmcoIlFXZWJDaGFubmVs IGlzIG5vdCBjb25uZWN0ZWQgdG8gYW55IHRyYW5zcG9ydHMsIGNhbm5vdCBzZW5kIG1lc3NhZ2U6 ICVzIiwKKysgICAgICAgICAgICAgICAgIFFKc29uRG9jdW1lbnQobWVzc2FnZSkudG9Kc29uKCku Y29uc3REYXRhKCkpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICAgIGZvciAoYXV0 byAqdHJhbnNwb3J0IDogd2ViQ2hhbm5lbC0+ZF9mdW5jKCktPnRyYW5zcG9ydHMpIHsKKysgICAg ICAgIGF1dG8gJnN0YXRlID0gdHJhbnNwb3J0U3RhdGVbdHJhbnNwb3J0XTsKKysgICAgICAgIHN0 YXRlLnF1ZXVlZE1lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKTsKKysgICAgfQorK30KKysKKyt2b2lk IFFNZXRhT2JqZWN0UHVibGlzaGVyOjplbnF1ZXVlTWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAm bWVzc2FnZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRV2Vi Q2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpCisreworKyAgICBhdXRvICZzdGF0 ZSA9IHRyYW5zcG9ydFN0YXRlW3RyYW5zcG9ydF07CisrICAgIHN0YXRlLnF1ZXVlZE1lc3NhZ2Vz LmFwcGVuZChtZXNzYWdlKTsKKyt9CisrCisrdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2Vu ZEVucXVldWVkUHJvcGVydHlVcGRhdGVzKFFXZWJDaGFubmVsQWJzdHJhY3RUcmFuc3BvcnQgKnRy YW5zcG9ydCkKKyt7CisrICAgIGF1dG8gZm91bmQgPSB0cmFuc3BvcnRTdGF0ZS5maW5kKHRyYW5z cG9ydCk7CisrICAgIGlmIChmb3VuZCAhPSB0cmFuc3BvcnRTdGF0ZS5lbmQoKSAmJiBmb3VuZC52 YWx1ZSgpLmNsaWVudElzSWRsZQorKyAgICAgICAgJiYgIWZvdW5kLnZhbHVlKCkucXVldWVkTWVz c2FnZXMuaXNFbXB0eSgpKSB7CisrCisrICAgICAgICAvLyBJZiB0aGUgY2xpZW50IGlzIGNvbm5l Y3RlZCB3aXRoIGFuIGluLXByb2Nlc3MgdHJhbnNwb3J0LCBpdCBjYW4KKysgICAgICAgIC8vIGhh cHBlbiB0aGF0IGEgbWVzc2FnZSB0cmlnZ2VycyBhIHN1YnNlcXVlbnQgcHJvcGVydHkgY2hhbmdl LiBJbgorKyAgICAgICAgLy8gdGhhdCBjYXNlLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSBx dWV1ZWQgbWVzc2FnZXMgaGF2ZSBhbHJlYWR5CisrICAgICAgICAvLyBiZWVuIGNsZWFyZWQ7IG90 aGVyd2lzZSB0aGUgcmVjdXJzaXZlIGNhbGwgd2lsbCBzZW5kIGV2ZXJ5dGhpZyBhZ2Fpbi4KKysg ICAgICAgIC8vIENhc2UgaW4gcG9pbnQ6IFRoZSBxbWx3ZWJjaGFubmVsIHRlc3RzIGZhaWwgaWYg d2UgZG9uJ3QgY2xlYXIgdGhlCisrICAgICAgICAvLyBxdWV1ZWQgbWVzc2FnZXMgYmVmb3JlIHNl bmRpbmcgdGhlbSBvdXQuCisrICAgICAgICAvLyBGb3IgdGhhdCBzYW1lIHJlYXNvbiBzZXQgdGhl IGNsaWVudCB0byAiYnVzeSIgKGFrYSBub24taWRsZSkganVzdAorKyAgICAgICAgLy8gcmlnaHQg YmVmb3JlIHNlbmRpbmcgb3V0IHRoZSBtZXNzYWdlczsgb3RoZXJ3aXNlIGEgcG90ZW50aWFsCisr ICAgICAgICAvLyAiSWRsZSIgdHlwZSBtZXNzYWdlIHdpbGwgbm90IGNvcnJlY3RseSByZXN0b3Jl IHRoZSBJZGxlIHN0YXRlLgorKyAgICAgICAgY29uc3QgYXV0byBtZXNzYWdlcyA9IHN0ZDo6bW92 ZShmb3VuZC52YWx1ZSgpLnF1ZXVlZE1lc3NhZ2VzKTsKKysgICAgICAgIFFfQVNTRVJUKGZvdW5k LnZhbHVlKCkucXVldWVkTWVzc2FnZXMuaXNFbXB0eSgpKTsKKysgICAgICAgIGZvdW5kLnZhbHVl KCkuY2xpZW50SXNJZGxlID0gZmFsc2U7CisrCisrICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJm1l c3NhZ2UgOiBtZXNzYWdlcykgeworKyAgICAgICAgICAgIHRyYW5zcG9ydC0+c2VuZE1lc3NhZ2Uo bWVzc2FnZSk7CisrICAgICAgICB9CisrICAgIH0KKyt9CisrCisgdm9pZCBRTWV0YU9iamVjdFB1 Ymxpc2hlcjo6aGFuZGxlTWVzc2FnZShjb25zdCBRSnNvbk9iamVjdCAmbWVzc2FnZSwgUVdlYkNo YW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNwb3J0KQorIHsKKyAgICAgaWYgKCF3ZWJDaGFu bmVsLT5kX2Z1bmMoKS0+dHJhbnNwb3J0cy5jb250YWlucyh0cmFuc3BvcnQpKSB7CitAQCAtODY2 LDcgKzkxMiw3IEBAIHZvaWQgUU1ldGFPYmplY3RQdWJsaXNoZXI6OmhhbmRsZU1lc3NhZ2UoY29u c3QgUUpzb25PYmplY3QgJm1lc3NhZ2UsIFFXZWJDaGFubmVsCisgCisgICAgIGNvbnN0IE1lc3Nh Z2VUeXBlIHR5cGUgPSB0b1R5cGUobWVzc2FnZS52YWx1ZShLRVlfVFlQRSkpOworICAgICBpZiAo dHlwZSA9PSBUeXBlSWRsZSkgeworLSAgICAgICAgc2V0Q2xpZW50SXNJZGxlKHRydWUpOworKyAg ICAgICAgc2V0Q2xpZW50SXNJZGxlKHRydWUsIHRyYW5zcG9ydCk7CisgICAgIH0gZWxzZSBpZiAo dHlwZSA9PSBUeXBlSW5pdCkgeworICAgICAgICAgaWYgKCFtZXNzYWdlLmNvbnRhaW5zKEtFWV9J RCkpIHsKKyAgICAgICAgICAgICBxV2FybmluZygiSlNPTiBtZXNzYWdlIG9iamVjdCBpcyBtaXNz aW5nIHRoZSBpZCBwcm9wZXJ0eTogJXMiLAorQEAgLTkxMyw5ICs5NTksOSBAQCB2b2lkIFFNZXRh T2JqZWN0UHVibGlzaGVyOjpoYW5kbGVNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdl LCBRV2ViQ2hhbm5lbAorICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgdHJh bnNwb3J0LT5zZW5kTWVzc2FnZShjcmVhdGVSZXNwb25zZShtZXNzYWdlLnZhbHVlKEtFWV9JRCks IHdyYXBSZXN1bHQocmVzdWx0LCB0cmFuc3BvcnQpKSk7CisgICAgICAgICB9IGVsc2UgaWYgKHR5 cGUgPT0gVHlwZUNvbm5lY3RUb1NpZ25hbCkgeworLSAgICAgICAgICAgIHNpZ25hbEhhbmRsZXIu Y29ubmVjdFRvKG9iamVjdCwgbWVzc2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0ludCgtMSkpOwor KyAgICAgICAgICAgIHNpZ25hbEhhbmRsZXJGb3Iob2JqZWN0KS0+Y29ubmVjdFRvKG9iamVjdCwg bWVzc2FnZS52YWx1ZShLRVlfU0lHTkFMKS50b0ludCgtMSkpOworICAgICAgICAgfSBlbHNlIGlm ICh0eXBlID09IFR5cGVEaXNjb25uZWN0RnJvbVNpZ25hbCkgeworLSAgICAgICAgICAgIHNpZ25h bEhhbmRsZXIuZGlzY29ubmVjdEZyb20ob2JqZWN0LCBtZXNzYWdlLnZhbHVlKEtFWV9TSUdOQUwp LnRvSW50KC0xKSk7CisrICAgICAgICAgICAgc2lnbmFsSGFuZGxlckZvcihvYmplY3QpLT5kaXNj b25uZWN0RnJvbShvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1NJR05BTCkudG9JbnQoLTEpKTsK KyAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBUeXBlU2V0UHJvcGVydHkpIHsKKyAgICAgICAg ICAgICBzZXRQcm9wZXJ0eShvYmplY3QsIG1lc3NhZ2UudmFsdWUoS0VZX1BST1BFUlRZKS50b0lu dCgtMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZS52YWx1ZShLRVlfVkFMVUUp KTsKK0BAIC05MzEsNiArOTc3LDcgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6c2V0Qmxv Y2tVcGRhdGVzKGJvb2wgYmxvY2spCisgICAgIGJsb2NrVXBkYXRlcyA9IGJsb2NrOworIAorICAg ICBpZiAoIWJsb2NrVXBkYXRlcykgeworKyAgICAgICAgdGltZXIuc3RhcnQoUFJPUEVSVFlfVVBE QVRFX0lOVEVSVkFMLCB0aGlzKTsKKyAgICAgICAgIHNlbmRQZW5kaW5nUHJvcGVydHlVcGRhdGVz KCk7CisgICAgIH0gZWxzZSBpZiAodGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICAgdGltZXIu c3RvcCgpOworQEAgLTk0OCw0ICs5OTUsMTUgQEAgdm9pZCBRTWV0YU9iamVjdFB1Ymxpc2hlcjo6 dGltZXJFdmVudChRVGltZXJFdmVudCAqZXZlbnQpCisgICAgIH0KKyB9CisgCisrU2lnbmFsSGFu ZGxlcjxRTWV0YU9iamVjdFB1Ymxpc2hlcj4gKlFNZXRhT2JqZWN0UHVibGlzaGVyOjpzaWduYWxI YW5kbGVyRm9yKGNvbnN0IFFPYmplY3QgKm9iamVjdCkKKyt7CisrICAgIGF1dG8gdGhyZWFkID0g b2JqZWN0LT50aHJlYWQoKTsKKysgICAgYXV0byBpdCA9IHNpZ25hbEhhbmRsZXJzLmZpbmQodGhy ZWFkKTsKKysgICAgaWYgKGl0ID09IHNpZ25hbEhhbmRsZXJzLmVuZCgpKSB7CisrICAgICAgICBp dCA9IHNpZ25hbEhhbmRsZXJzLmVtcGxhY2UodGhyZWFkLCB0aGlzKS5maXJzdDsKKysgICAgICAg IGl0LT5zZWNvbmQubW92ZVRvVGhyZWFkKHRocmVhZCk7CisrICAgIH0KKysgICAgcmV0dXJuICZp dC0+c2Vjb25kOworK30KKysKKyBRVF9FTkRfTkFNRVNQQUNFCitkaWZmIC0tZ2l0IGEvcXR3ZWJj aGFubmVsL3NyYy93ZWJjaGFubmVsL3FtZXRhb2JqZWN0cHVibGlzaGVyX3AuaCBiL3F0d2ViY2hh bm5lbC9zcmMvd2ViY2hhbm5lbC9xbWV0YW9iamVjdHB1Ymxpc2hlcl9wLmgKK2luZGV4IGJiZDk4 NzUuLjQ3MTNlZjEgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvcW1l dGFvYmplY3RwdWJsaXNoZXJfcC5oCisrKysgYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwv cW1ldGFvYmplY3RwdWJsaXNoZXJfcC5oCitAQCAtNTksNiArNTksOSBAQAorICNpbmNsdWRlIDxR QmFzaWNUaW1lcj4KKyAjaW5jbHVkZSA8UVBvaW50ZXI+CisgI2luY2x1ZGUgPFFKc29uT2JqZWN0 PgorKyNpbmNsdWRlIDxRUXVldWU+CisrCisrI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CisgCisg I2luY2x1ZGUgInF3ZWJjaGFubmVsZ2xvYmFsLmgiCisgCitAQCAtMTA5LDE3ICsxMTIsMzYgQEAg cHVibGljOgorICAgICAgKi8KKyAgICAgdm9pZCBicm9hZGNhc3RNZXNzYWdlKGNvbnN0IFFKc29u T2JqZWN0ICZtZXNzYWdlKSBjb25zdDsKKyAKKysgICAgLyoqCisrICAgICAqIEVucXVldWUgdGhl IGdpdmVuIEBwIG1lc3NhZ2UgdG8gYWxsIGtub3duIHRyYW5zcG9ydHMuCisrICAgICAqLworKyAg ICB2b2lkIGVucXVldWVCcm9hZGNhc3RNZXNzYWdlKGNvbnN0IFFKc29uT2JqZWN0ICZtZXNzYWdl KTsKKysKKysgICAgLyoqCisrICAgICAqIEVucXVldWUgdGhlIGdpdmVuIEBwIG1lc3NhZ2UgdG8g QHAgdHJhbnNwb3J0LgorKyAgICAgKi8KKysgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShjb25zdCBR SnNvbk9iamVjdCAmbWVzc2FnZSwgUVdlYkNoYW5uZWxBYnN0cmFjdFRyYW5zcG9ydCAqdHJhbnNw b3J0KTsKKysKKysgICAgLyoqCisrICAgICAqIElmIGNsaWVudCBmb3IgZ2l2ZW4gQHAgdHJhbnNw b3J0IGlzIGlkbGUsIHNlbmQgcXVldWVkIG1lc3NhZ2VkIHRvIEBwIHRyYW5zcG9ydCBhbmQgdGhl biBtYXJrCisrICAgICAqIHRoZSBjbGllbnQgYXMgbm90IGlkbGUuCisrICAgICAqLworKyAgICB2 b2lkIHNlbmRFbnF1ZXVlZFByb3BlcnR5VXBkYXRlcyhRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNw b3J0ICp0cmFuc3BvcnQpOworKworICAgICAvKioKKyAgICAgICogU2VyaWFsaXplIHRoZSBRTWV0 YU9iamVjdCBvZiBAcCBvYmplY3QgYW5kIHJldHVybiBpdCBpbiBKU09OIGZvcm0uCisgICAgICAq LworICAgICBRSnNvbk9iamVjdCBjbGFzc0luZm9Gb3JPYmplY3QoY29uc3QgUU9iamVjdCAqb2Jq ZWN0LCBRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNwb3J0ICp0cmFuc3BvcnQpOworIAorICAgICAv KioKKy0gICAgICogU2V0IHRoZSBjbGllbnQgdG8gaWRsZSBvciBidXN5LCBiYXNlZCBvbiB0aGUg dmFsdWUgb2YgQHAgaXNJZGxlLgorLSAgICAgKgorLSAgICAgKiBXaGVuIHRoZSB2YWx1ZSBjaGFu Z2VkLCBzdGFydC9zdG9wIHRoZSBwcm9wZXJ0eSB1cGRhdGUgdGltZXIgYWNjb3JkaW5nbHkuCisr ICAgICAqIFNldCB0aGUgY2xpZW50IHRvIGlkbGUgb3IgYnVzeSBmb3IgYSBzaW5nbGUgQHAgdHJh bnNwb3J0LCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgQHAgaXNJZGxlLgorKyAgICAgKi8KKysgICAg dm9pZCBzZXRDbGllbnRJc0lkbGUoYm9vbCBpc0lkbGUsIFFXZWJDaGFubmVsQWJzdHJhY3RUcmFu c3BvcnQgKnRyYW5zcG9ydCk7CisrCisrICAgIC8qKgorKyAgICAgKiBDaGVjayB0aGF0IGNsaWVu dCBpcyBpZGxlIGZvciBAcCB0cmFuc3BvcnQuCisgICAgICAqLworLSAgICB2b2lkIHNldENsaWVu dElzSWRsZShib29sIGlzSWRsZSk7CisrICAgIGJvb2wgaXNDbGllbnRJZGxlKFFXZWJDaGFubmVs QWJzdHJhY3RUcmFuc3BvcnQgKnRyYW5zcG9ydCk7CisgCisgICAgIC8qKgorICAgICAgKiBJbml0 aWFsaXplIGNsaWVudHMgYnkgc2VuZGluZyB0aGVtIHRoZSBjbGFzcyBpbmZvcm1hdGlvbiBvZiB0 aGUgcmVnaXN0ZXJlZCBvYmplY3RzLgorQEAgLTI3MiwxMCArMjk0LDE4IEBAIHByaXZhdGU6Cisg ICAgIGZyaWVuZCBjbGFzcyBUZXN0V2ViQ2hhbm5lbDsKKyAKKyAgICAgUVdlYkNoYW5uZWwgKndl YkNoYW5uZWw7CistICAgIFNpZ25hbEhhbmRsZXI8UU1ldGFPYmplY3RQdWJsaXNoZXI+IHNpZ25h bEhhbmRsZXI7CisrICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxjb25zdCBRVGhyZWFkKiwgU2lnbmFs SGFuZGxlcjxRTWV0YU9iamVjdFB1Ymxpc2hlcj4+IHNpZ25hbEhhbmRsZXJzOworKyAgICBTaWdu YWxIYW5kbGVyPFFNZXRhT2JqZWN0UHVibGlzaGVyPiAqc2lnbmFsSGFuZGxlckZvcihjb25zdCBR T2JqZWN0ICpvYmplY3QpOworIAorLSAgICAvLyB0cnVlIHdoZW4gdGhlIGNsaWVudCBpcyBpZGxl LCBmYWxzZSBvdGhlcndpc2UKKy0gICAgYm9vbCBjbGllbnRJc0lkbGU7CisrICAgIHN0cnVjdCBU cmFuc3BvcnRTdGF0ZQorKyAgICB7CisrICAgICAgICBUcmFuc3BvcnRTdGF0ZSgpIDogY2xpZW50 SXNJZGxlKGZhbHNlKSB7IH0KKysgICAgICAgIC8vIHRydWUgd2hlbiB0aGUgY2xpZW50IGlzIGlk bGUsIGZhbHNlIG90aGVyd2lzZQorKyAgICAgICAgYm9vbCBjbGllbnRJc0lkbGU7CisrICAgICAg ICAvLyBtZXNzYWdlcyB0byBzZW5kCisrICAgICAgICBRUXVldWU8UUpzb25PYmplY3Q+IHF1ZXVl ZE1lc3NhZ2VzOworKyAgICB9OworKyAgICBRSGFzaDxRV2ViQ2hhbm5lbEFic3RyYWN0VHJhbnNw b3J0ICosIFRyYW5zcG9ydFN0YXRlPiB0cmFuc3BvcnRTdGF0ZTsKKyAKKyAgICAgLy8gdHJ1ZSB3 aGVuIG5vIHByb3BlcnR5IHVwZGF0ZXMgc2hvdWxkIGJlIHNlbnQsIGZhbHNlIG90aGVyd2lzZQor ICAgICBib29sIGJsb2NrVXBkYXRlczsKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvc3JjL3dl YmNoYW5uZWwvc2lnbmFsaGFuZGxlcl9wLmggYi9xdHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwv c2lnbmFsaGFuZGxlcl9wLmgKK2luZGV4IDI3YWZhZGIuLmQ3NzM3M2MgMTAwNjQ0CistLS0gYS9x dHdlYmNoYW5uZWwvc3JjL3dlYmNoYW5uZWwvc2lnbmFsaGFuZGxlcl9wLmgKKysrKyBiL3F0d2Vi Y2hhbm5lbC9zcmMvd2ViY2hhbm5lbC9zaWduYWxoYW5kbGVyX3AuaAorQEAgLTU2LDYgKzU2LDcg QEAKKyAjaW5jbHVkZSA8UVZlY3Rvcj4KKyAjaW5jbHVkZSA8UU1ldGFNZXRob2Q+CisgI2luY2x1 ZGUgPFFEZWJ1Zz4KKysjaW5jbHVkZSA8UVRocmVhZD4KKyAKKyBRVF9CRUdJTl9OQU1FU1BBQ0UK KyAKK0BAIC03MSw2ICs3Miw3IEBAIHN0YXRpYyBjb25zdCBpbnQgc19kZXN0cm95ZWRTaWduYWxJ bmRleCA9IFFPYmplY3Q6OnN0YXRpY01ldGFPYmplY3QuaW5kZXhPZk1ldGhvCisgdGVtcGxhdGU8 Y2xhc3MgUmVjZWl2ZXI+CisgY2xhc3MgU2lnbmFsSGFuZGxlciA6IHB1YmxpYyBRT2JqZWN0Cisg eworKyAgICBRX0RJU0FCTEVfQ09QWShTaWduYWxIYW5kbGVyKQorIHB1YmxpYzoKKyAgICAgU2ln bmFsSGFuZGxlcihSZWNlaXZlciAqcmVjZWl2ZXIsIFFPYmplY3QgKnBhcmVudCA9IDApOworIAor QEAgLTI2OCw2ICsyNzAsNyBAQCBpbnQgU2lnbmFsSGFuZGxlcjxSZWNlaXZlcj46OnF0X21ldGFj YWxsKFFNZXRhT2JqZWN0OjpDYWxsIGNhbGwsIGludCBtZXRob2RJZCwgdgorICAgICBpZiAoY2Fs bCA9PSBRTWV0YU9iamVjdDo6SW52b2tlTWV0YU1ldGhvZCkgeworICAgICAgICAgY29uc3QgUU9i amVjdCAqb2JqZWN0ID0gc2VuZGVyKCk7CisgICAgICAgICBRX0FTU0VSVChvYmplY3QpOworKyAg ICAgICAgUV9BU1NFUlQoUVRocmVhZDo6Y3VycmVudFRocmVhZCgpID09IG9iamVjdC0+dGhyZWFk KCkpOworICAgICAgICAgUV9BU1NFUlQoc2VuZGVyU2lnbmFsSW5kZXgoKSA9PSBtZXRob2RJZCk7 CisgICAgICAgICBRX0FTU0VSVChtX2Nvbm5lY3Rpb25zQ291bnRlci5jb250YWlucyhvYmplY3Qp KTsKKyAgICAgICAgIFFfQVNTRVJUKG1fY29ubmVjdGlvbnNDb3VudGVyLnZhbHVlKG9iamVjdCku Y29udGFpbnMobWV0aG9kSWQpKTsKK2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0 by9xbWwvdGVzdHdlYmNoYW5uZWwuY3BwIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vcW1sL3Rl c3R3ZWJjaGFubmVsLmNwcAoraW5kZXggOTg5MTY4Ny4uM2NhODFjMiAxMDA2NDQKKy0tLSBhL3F0 d2ViY2hhbm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5lbC5jcHAKKysrKyBiL3F0d2Vi Y2hhbm5lbC90ZXN0cy9hdXRvL3FtbC90ZXN0d2ViY2hhbm5lbC5jcHAKK0BAIC00Niw3ICs0Niwx MSBAQCBUZXN0V2ViQ2hhbm5lbDo6flRlc3RXZWJDaGFubmVsKCkKKyAKKyBib29sIFRlc3RXZWJD aGFubmVsOjpjbGllbnRJc0lkbGUoKSBjb25zdAorIHsKKy0gICAgcmV0dXJuIFFXZWJDaGFubmVs OjpkX2Z1bmMoKS0+cHVibGlzaGVyLT5jbGllbnRJc0lkbGU7CisrICAgIGZvciAoYXV0byAqdHJh bnNwb3J0IDogUVdlYkNoYW5uZWw6OmRfZnVuYygpLT50cmFuc3BvcnRzKSB7CisrICAgICAgICBp ZiAoUVdlYkNoYW5uZWw6OmRfZnVuYygpLT5wdWJsaXNoZXItPmlzQ2xpZW50SWRsZSh0cmFuc3Bv cnQpKQorKyAgICAgICAgICAgIHJldHVybiB0cnVlOworKyAgICB9CisrICAgIHJldHVybiBmYWxz ZTsKKyB9CisgCisgUVRfRU5EX05BTUVTUEFDRQorZGlmZiAtLWdpdCBhL3F0d2ViY2hhbm5lbC90 ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuY3BwIGIvcXR3ZWJjaGFubmVsL3Rl c3RzL2F1dG8vd2ViY2hhbm5lbC90c3Rfd2ViY2hhbm5lbC5jcHAKK2luZGV4IDE4MWRhOWUuLjM3 Zjk4OWEgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3Rz dF93ZWJjaGFubmVsLmNwcAorKysrIGIvcXR3ZWJjaGFubmVsL3Rlc3RzL2F1dG8vd2ViY2hhbm5l bC90c3Rfd2ViY2hhbm5lbC5jcHAKK0BAIC03ODUsNyArNzg1LDcgQEAgdm9pZCBUZXN0V2ViQ2hh bm5lbDo6dGVzdFRyYW5zcG9ydFdyYXBPYmplY3RQcm9wZXJ0aWVzKCkKKyAgICAgRHVtbXlUcmFu c3BvcnQgKmR1bW15VHJhbnNwb3J0ID0gbmV3IER1bW15VHJhbnNwb3J0KHRoaXMpOworICAgICBj aGFubmVsLmNvbm5lY3RUbyhkdW1teVRyYW5zcG9ydCk7CisgICAgIGNoYW5uZWwuZF9mdW5jKCkt PnB1Ymxpc2hlci0+aW5pdGlhbGl6ZUNsaWVudChkdW1teVRyYW5zcG9ydCk7CistICAgIGNoYW5u ZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+c2V0Q2xpZW50SXNJZGxlKHRydWUpOworKyAgICBjaGFu bmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnNldENsaWVudElzSWRsZSh0cnVlLCBkdW1teVRyYW5z cG9ydCk7CisgCisgICAgIFFDT01QQVJFKGNoYW5uZWwuZF9mdW5jKCktPnB1Ymxpc2hlci0+dHJh bnNwb3J0ZWRXcmFwcGVkT2JqZWN0cy5zaXplKCksIDApOworIAorQEAgLTk0Myw4ICs5NDMsNiBA QCB2b2lkIFRlc3RXZWJDaGFubmVsOjp0ZXN0SW5maW5pdGVSZWN1cnNpb24oKQorIAorIHZvaWQg VGVzdFdlYkNoYW5uZWw6OnRlc3RBc3luY09iamVjdCgpCisgeworLSAgICBRU0tJUCgiVGhpcyB0 ZXN0IGlzIGJyb2tlbi4gU2VlIFFUQlVHLTgwNzI5Iik7CistCisgICAgIFFXZWJDaGFubmVsIGNo YW5uZWw7CisgICAgIGNoYW5uZWwuY29ubmVjdFRvKG1fZHVtbXlUcmFuc3BvcnQpOworIAorQEAg LTk5MCw2ICs5ODgsNTAgQEAgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6dGVzdEFzeW5jT2JqZWN0KCkK KyAgICAgdGhyZWFkLndhaXQoKTsKKyB9CisgCisrdm9pZCBUZXN0V2ViQ2hhbm5lbDo6dGVzdFBy b3BlcnR5TXVsdGlwbGVUcmFuc3BvcnRzKCkKKyt7CisrICAgIER1bW15VHJhbnNwb3J0IHRyYW5z cG9ydDE7CisrICAgIER1bW15VHJhbnNwb3J0IHRyYW5zcG9ydDI7CisrCisrICAgIFFXZWJDaGFu bmVsIGNoYW5uZWw7CisrICAgIFFNZXRhT2JqZWN0UHVibGlzaGVyICpwdWJsaXNoZXIgPSBjaGFu bmVsLmRfZnVuYygpLT5wdWJsaXNoZXI7CisrCisrICAgIFRlc3RPYmplY3QgdGVzdE9iajsKKysg ICAgdGVzdE9iai5zZXRPYmplY3ROYW1lKCJ0ZXN0T2JqZWN0Iik7CisrICAgIGNoYW5uZWwucmVn aXN0ZXJPYmplY3QodGVzdE9iai5vYmplY3ROYW1lKCksICZ0ZXN0T2JqKTsKKysgICAgY2hhbm5l bC5jb25uZWN0VG8oJnRyYW5zcG9ydDEpOworKyAgICBjaGFubmVsLmNvbm5lY3RUbygmdHJhbnNw b3J0Mik7CisrCisrICAgIHRlc3RPYmouc2V0UHJvcCgiSGVsbG8iKTsKKysKKysgICAgcHVibGlz aGVyLT5pbml0aWFsaXplQ2xpZW50KCZ0cmFuc3BvcnQxKTsKKysgICAgcHVibGlzaGVyLT5pbml0 aWFsaXplQ2xpZW50KCZ0cmFuc3BvcnQyKTsKKysgICAgcHVibGlzaGVyLT5zZXRDbGllbnRJc0lk bGUodHJ1ZSwgJnRyYW5zcG9ydDEpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50 SWRsZSgmdHJhbnNwb3J0MSksIHRydWUpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xp ZW50SWRsZSgmdHJhbnNwb3J0MiksIGZhbHNlKTsKKysgICAgUVZFUklGWSh0cmFuc3BvcnQxLm1l c3NhZ2VzU2VudCgpLmlzRW1wdHkoKSk7CisrICAgIFFWRVJJRlkodHJhbnNwb3J0Mi5tZXNzYWdl c1NlbnQoKS5pc0VtcHR5KCkpOworKworKyAgICB0ZXN0T2JqLnNldFByb3AoIldvcmxkIik7Cisr ICAgIFFUUllfQ09NUEFSRV9XSVRIX1RJTUVPVVQodHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5z aXplKCksIDF1LCAyMDAwKTsKKysgICAgUUNPTVBBUkUodHJhbnNwb3J0Mi5tZXNzYWdlc1NlbnQo KS5zaXplKCksIDB1KTsKKysgICAgcHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgJnRy YW5zcG9ydDIpOworKyAgICBRVFJZX0NPTVBBUkVfV0lUSF9USU1FT1VUKHRyYW5zcG9ydDIubWVz c2FnZXNTZW50KCkuc2l6ZSgpLCAxdSwgMjAwMCk7CisrICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+ aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQxKSwgZmFsc2UpOworKyAgICBRQ09NUEFSRShwdWJsaXNo ZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNwb3J0MiksIGZhbHNlKTsKKysKKysgICAgdGVzdE9iai5z ZXRQcm9wKCIhISEiKTsKKysgICAgcHVibGlzaGVyLT5zZXRDbGllbnRJc0lkbGUodHJ1ZSwgJnRy YW5zcG9ydDIpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJhbnNw b3J0MiksIHRydWUpOworKyAgICBRQ09NUEFSRShwdWJsaXNoZXItPmlzQ2xpZW50SWRsZSgmdHJh bnNwb3J0MSksIGZhbHNlKTsKKysgICAgUVRSWV9DT01QQVJFX1dJVEhfVElNRU9VVCh0cmFuc3Bv cnQyLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMnUsIDIwMDApOworKyAgICBRQ09NUEFSRSh0cmFu c3BvcnQxLm1lc3NhZ2VzU2VudCgpLnNpemUoKSwgMXUpOworKyAgICBwdWJsaXNoZXItPnNldENs aWVudElzSWRsZSh0cnVlLCAmdHJhbnNwb3J0MSk7CisrICAgIFFUUllfQ09NUEFSRV9XSVRIX1RJ TUVPVVQodHJhbnNwb3J0MS5tZXNzYWdlc1NlbnQoKS5zaXplKCksIDJ1LCAyMDAwKTsKKysgICAg UUNPTVBBUkUocHVibGlzaGVyLT5pc0NsaWVudElkbGUoJnRyYW5zcG9ydDEpLCBmYWxzZSk7Cisr ICAgIFFDT01QQVJFKHB1Ymxpc2hlci0+aXNDbGllbnRJZGxlKCZ0cmFuc3BvcnQyKSwgZmFsc2Up OworK30KKysKKyBjbGFzcyBGdW5jdGlvbldyYXBwZXIgOiBwdWJsaWMgUU9iamVjdAorIHsKKyAg ICAgUV9PQkpFQ1QKK0BAIC0xMDgyLDcgKzExMjQsNyBAQCB2b2lkIFRlc3RXZWJDaGFubmVsOjpi ZW5jaEluaXRpYWxpemVDbGllbnRzKCkKKyAKKyAgICAgICAgIHB1Ymxpc2hlci0+cHJvcGVydHlV cGRhdGVzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKKyAgICAgICAgIHB1Ymxpc2hlci0+c2lnbmFsVG9Q cm9wZXJ0eU1hcC5jbGVhcigpOworLSAgICAgICAgcHVibGlzaGVyLT5zaWduYWxIYW5kbGVyLmNs ZWFyKCk7CisrICAgICAgICBwdWJsaXNoZXItPnNpZ25hbEhhbmRsZXJzLmNsZWFyKCk7CisgICAg IH0KKyB9CisgCitAQCAtMTEwNyw3ICsxMTQ5LDcgQEAgdm9pZCBUZXN0V2ViQ2hhbm5lbDo6YmVu Y2hQcm9wZXJ0eVVwZGF0ZXMoKQorICAgICAgICAgICAgIG9iai0+Y2hhbmdlKCk7CisgICAgICAg ICB9CisgCistICAgICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPmNsaWVudElzSWRs ZSA9IHRydWU7CisrICAgICAgICBjaGFubmVsLmRfZnVuYygpLT5wdWJsaXNoZXItPnNldENsaWVu dElzSWRsZSh0cnVlLCBtX2R1bW15VHJhbnNwb3J0KTsKKyAgICAgICAgIGNoYW5uZWwuZF9mdW5j KCktPnB1Ymxpc2hlci0+c2VuZFBlbmRpbmdQcm9wZXJ0eVVwZGF0ZXMoKTsKKyAgICAgfQorIH0K K2RpZmYgLS1naXQgYS9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJj aGFubmVsLmggYi9xdHdlYmNoYW5uZWwvdGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFu bmVsLmgKK2luZGV4IGVhZTIxZjQuLmRkNGU2OTAgMTAwNjQ0CistLS0gYS9xdHdlYmNoYW5uZWwv dGVzdHMvYXV0by93ZWJjaGFubmVsL3RzdF93ZWJjaGFubmVsLmgKKysrKyBiL3F0d2ViY2hhbm5l bC90ZXN0cy9hdXRvL3dlYmNoYW5uZWwvdHN0X3dlYmNoYW5uZWwuaAorQEAgLTM0OCw2ICszNDgs NyBAQCBwcml2YXRlIHNsb3RzOgorICAgICB2b2lkIHRlc3RKc29uVG9WYXJpYW50KCk7CisgICAg IHZvaWQgdGVzdEluZmluaXRlUmVjdXJzaW9uKCk7CisgICAgIHZvaWQgdGVzdEFzeW5jT2JqZWN0 KCk7CisrICAgIHZvaWQgdGVzdFByb3BlcnR5TXVsdGlwbGVUcmFuc3BvcnRzKCk7CisgICAgIHZv aWQgdGVzdERlbGV0aW9uRHVyaW5nTWV0aG9kSW52b2NhdGlvbl9kYXRhKCk7CisgICAgIHZvaWQg dGVzdERlbGV0aW9uRHVyaW5nTWV0aG9kSW52b2NhdGlvbigpOworIAorU3VibW9kdWxlIHF0d2Vi ZW5naW5lIGYzMjgwNTRkLi4uMzhlMGRmNmMgKGNvbW1pdHMgbm90IHByZXNlbnQpCitTdWJtb2R1 bGUgcXR3ZWJzb2NrZXRzIDY1ODUwOTU0Li42M2ZiOGRhMToKK2RpZmYgLS1naXQgYS9xdHdlYnNv Y2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldGRhdGFwcm9jZXNzb3IuY3BwIGIvcXR3ZWJz b2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRkYXRhcHJvY2Vzc29yLmNwcAoraW5kZXgg MmFmZmRkNS4uOTVmMTE5NCAxMDA2NDQKKy0tLSBhL3F0d2Vic29ja2V0cy9zcmMvd2Vic29ja2V0 cy9xd2Vic29ja2V0ZGF0YXByb2Nlc3Nvci5jcHAKKysrKyBiL3F0d2Vic29ja2V0cy9zcmMvd2Vi c29ja2V0cy9xd2Vic29ja2V0ZGF0YXByb2Nlc3Nvci5jcHAKK0BAIC0yNzMsNiArMjczLDcgQEAg dm9pZCBRV2ViU29ja2V0RGF0YVByb2Nlc3Nvcjo6Y2xlYXIoKQorICAgICBpZiAoIW1fcENvbnZl cnRlclN0YXRlKQorICAgICAgICAgbV9wQ29udmVydGVyU3RhdGUgPSBuZXcgUVRleHRDb2RlYzo6 Q29udmVydGVyU3RhdGUoUVRleHRDb2RlYzo6Q29udmVydEludmFsaWRUb051bGwgfAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVRl eHRDb2RlYzo6SWdub3JlSGVhZGVyKTsKKysgICAgZnJhbWUuY2xlYXIoKTsKKyB9CisgCisgLyoh CitkaWZmIC0tZ2l0IGEvcXR3ZWJzb2NrZXRzL3NyYy93ZWJzb2NrZXRzL3F3ZWJzb2NrZXRwcm90 b2NvbC5jcHAgYi9xdHdlYnNvY2tldHMvc3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldHByb3RvY29s LmNwcAoraW5kZXggZGY4N2E5My4uZDA0NjVmMSAxMDA2NDQKKy0tLSBhL3F0d2Vic29ja2V0cy9z cmMvd2Vic29ja2V0cy9xd2Vic29ja2V0cHJvdG9jb2wuY3BwCisrKysgYi9xdHdlYnNvY2tldHMv c3JjL3dlYnNvY2tldHMvcXdlYnNvY2tldHByb3RvY29sLmNwcAorQEAgLTIxMCw3ICsyMTAsNyBA QCB2b2lkIFFXZWJTb2NrZXRQcm90b2NvbDo6bWFzayhjaGFyICpwYXlsb2FkLCBxdWludDY0IHNp emUsIHF1aW50MzIgbWFza2luZ0tleSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVp bnQ4KChtYXNraW5nS2V5ICYgMHgwMDAwRkYwMHUpID4+IDgpLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBxdWludDgoKG1hc2tpbmdLZXkgJiAweDAwMDAwMEZGdSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICB9OworLSAgICBpbnQgaSA9IDA7CisrICAgIHF1aW50NjQgaSA9IDA7 CisgICAgIHdoaWxlIChzaXplLS0gPiAwKQorICAgICAgICAgKnBheWxvYWQrKyBePSBtYXNrW2kr KyAlIDRdOworIH0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlIGIvc3JjcGtncy9x dDUvdGVtcGxhdGUKaW5kZXggYjY2MTJkZmZlYjFiOS4uYTBkMzAzNmFmNzlhNCAxMDA2NDQKLS0t IGEvc3JjcGtncy9xdDUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9xdDUvdGVtcGxhdGUKQEAgLTIs MTEgKzIsMTEgQEAKICMKICMgcmV2YnVtcCBsaWJxdHhkZyBhZnRlciBidW1waW5nIHBhdGNoIHZl cnNpb24KIHBrZ25hbWU9cXQ1Ci12ZXJzaW9uPTUuMTUuNysyMDIyMTExOQordmVyc2lvbj01LjE1 LjgKK3JldmlzaW9uPTEKK2J1aWxkX3N0eWxlPW1ldGEKICMgY29tbWl0IGY4YzlmYjMwNGJjM2U1 M2IzYWEwN2Y5NjJjZDc0ZTkxNjBkZWNjY2MKICMgYmFzZSByZXBvOiBodHRwczovL2ludmVudC5r ZGUub3JnL3F0L3F0L3F0NQotcmV2aXNpb249NwotYnVpbGRfc3R5bGU9bWV0YQogaG9zdG1ha2Vk ZXBlbmRzPSJjbWFrZSBjbGFuZyBmbGV4IHBlcmwgZ2xpYi1kZXZlbCBwa2ctY29uZmlnCiAgcHl0 aG9uMyByZTJjIHJ1Ynkgd2hpY2giCiBtYWtlZGVwZW5kcz0iU0RMMi1kZXZlbCBWdWxrYW4tSGVh ZGVycyBhbHNhLWxpYi1kZXZlbCBkb3VibGUtY29udmVyc2lvbi1kZXZlbApAQCAtMjksOSArMjks OSBAQCBob21lcGFnZT0iaHR0cHM6Ly9xdC5pby8iCiAjIHRhcmJhbGwgaXMgZ2VuZXJhdGVkIHdp dGggYGdpdCBhcmNoaXZlLWFsbCBxdDUtJHZlcnNpb24udGFyLmd6YAogIyB0byBrZWVwIHRoZSBz aXplIHNtYWxsZXIgcXR3ZWJlbmdpbmUsIHF0d2VidmlldywgcXRkb2NnYWxsZXJ5LCBxdGFjdGl2 ZXF0IGFuZCBxdHBpbQogIyBjYW4gYmUgbWFya2VkIHdpdGggdGhlIGV4cG9ydC1pZ25vcmUgYXR0 cmlidXRlCi1kaXN0ZmlsZXM9Imh0dHBzOi8vdm9pZC5qb2hubnluYXRvci5kZXYvZGlzdGZpbGVz L3F0NS0ke3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPTlkNTdhZjQ3MWM3ODAyOWEzNjIyNzZi N2M5OTEwOGVhMDA5ZjUxMWJiOWJhNmZmNmNiODg0ZjZkZGQyNTVlOWYKLXB5dGhvbl92ZXJzaW9u PTMKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9kb3dubG9hZC5xdC5pby9hcmNoaXZlL3F0LzUuMTUvJHt2 ZXJzaW9ufS9zaW5nbGUvcXQtZXZlcnl3aGVyZS1vcGVuc291cmNlLXNyYy0ke3ZlcnNpb259LnRh ci54eiIKK2NoZWNrc3VtPTc3NmE5MzAyYzMzNjY3MWY5NDA2YTUzYmQzMGI4ZTM2ZjgyNTc0MmIy ZWM0NGE1N2MwODIxN2JmZjBmYTg2YjkKK3B5dGhvbl92ZXJzaW9uPTIgI3VudmVyaWZpZWQKIHJl cGxhY2VzPSJxdDUtZG9jPDUuNi4wIHF0NS1xdWljazE8NS42LjAgcXQ1LXF1aWNrMS1kZXZlbDw1 LjYuMCBxdDUtd2Via2l0PDUuNi4wIHF0NS13ZWJraXQtZGV2ZWw8NS42LjAKICBxdDUtZW5naW5p bzw1LjcuMSBxdDUtZW5naW5pby1kZXZlbDw1LjcuMSBxdDUtcGx1Z2luLWd0azw1LjcuMSBxdDUt Y2FudmFzM2Q8NS4xMy4wIgogbGliMzJtb2RlPWZ1bGwKQEAgLTI0Niw3ICsyNDYsNiBAQCBkb19j b25maWd1cmUoKSB7CiAJIyBvcHRzKz0iIC12IgogCW9wdHMrPSIgLXNraXAgcXR3ZWJlbmdpbmUi CiAJb3B0cys9IiAtc2tpcCBxdHdlYnZpZXciCi0Jb3B0cys9IiAtc2tpcCBxdGRvY2dhbGxlcnki CiAJb3B0cys9IiAtc2tpcCBxdHBpbSIKIAlvcHRzKz0iIC1za2lwIHF0c3lzdGVtcyIKIAlvcHRz Kz0iIC1za2lwIHF0c3BlZWNoIgoKRnJvbSBhNmJlZTVhYjJkZTI4NzIwNzc5M2U4MjdkNjcyNjIz MWUyZDNlMGZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUxIC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwNjgvMTE1XSBxdGF2OiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4zCgotLS0KIHNy Y3BrZ3MvcXRhdi90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0YXYvdGVtcGxhdGUg Yi9zcmNwa2dzL3F0YXYvdGVtcGxhdGUKaW5kZXggMzRjMzBiMmMwYzc4Zi4uMmQwMGFkMTA0MzU1 ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdGF2L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXRhdi90 ZW1wbGF0ZQpAQCAtMSwxMCArMSwxMCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXRhdicKIHBr Z25hbWU9cXRhdgogdmVyc2lvbj0xLjEzLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxk X3N0eWxlPXFtYWtlCiBob3N0bWFrZWRlcGVuZHM9InF0NS1xbWFrZSBxdDUtaG9zdC10b29scyIK LW1ha2VkZXBlbmRzPSJmZm1wZWctZGV2ZWwgbGliYXNzLWRldmVsIGxpYm9wZW5hbC1kZXZlbAor bWFrZWRlcGVuZHM9ImZmbXBlZzQtZGV2ZWwgbGliYXNzLWRldmVsIGxpYm9wZW5hbC1kZXZlbAog IGxpYnZhLWdseC1kZXZlbCBsaWJYdi1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCiAgcXQ1LWRlY2xh cmF0aXZlLWRldmVsIHF0NS1zdmctZGV2ZWwKICBxdDUtcXVpY2tjb250cm9scyIKCkZyb20gN2Jk NDZkZGY5NDc1NDJmODhjN2FjOTQ5NWNmZjY0ZTcwODQwMGQwMCBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIg MjAyMyAyMDowMTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDY5LzExNV0gcXRveDogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3F0b3gvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL3F0b3gvdGVtcGxhdGUgYi9zcmNwa2dzL3F0b3gvdGVtcGxhdGUKaW5kZXggMzljNjQz ZmVjZGI1YS4uYmI3MGU3ZjUxMjQwYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdG94L3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvcXRveC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUg ZmlsZSBmb3IgJ3F0b3gnCiBwa2duYW1lPXF0b3gKIHZlcnNpb249MS4xNy42Ci1yZXZpc2lvbj0y CityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EVVBEQVRF X0NIRUNLPU9GRgogIC1ER0lUX0RFU0NSSUJFPSR7dmVyc2lvbn0KCkZyb20gMGM4MzJjNzc2YzY3 MmFjOWEyNjQzYzUwNzliMjBjM2QzZTU3ZmNmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDow MTo1MSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDcwLzExNV0gcmV0cm9hcmNoOiByZXZidW1wIGZv ciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvcmV0cm9hcmNoL3RlbXBsYXRlIHwgMiArLQogMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9yZXRyb2FyY2gvdGVtcGxhdGUgYi9zcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZQpp bmRleCA4N2U2MjFkNDljZTY1Li44OTVjNGQ3MzkzODBjIDEwMDY0NAotLS0gYS9zcmNwa2dzL3Jl dHJvYXJjaC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3JldHJvYXJjaC90ZW1wbGF0ZQpAQCAtMSw3 ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3JldHJvYXJjaCcKIHBrZ25hbWU9cmV0cm9h cmNoCiB2ZXJzaW9uPTEuMTYuMC4zCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHls ZT1jb25maWd1cmUKIGNvbmZpZ3VyZV9hcmdzPSItLXByZWZpeD0vdXNyIC0tc3lzY29uZmRpcj0v ZXRjIC0tZW5hYmxlLW5ldHdvcmtpbmcKICAtLWVuYWJsZS11ZGV2IC0tZGlzYWJsZS1idWlsdGlu ZmxhYyAtLWRpc2FibGUtYnVpbHRpbmdsc2xhbmcKCkZyb20gZmM2ZmZmZDdmOTdiZjA0MzMxYzFi ODIyMDgzODZlOTViMzU4ODZmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDcxLzExNV0gc2NyY3B5OiByZXZidW1wIGZvciBmZm1wZWctNi4w CgotLS0KIHNyY3BrZ3Mvc2NyY3B5L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zY3JjcHkv dGVtcGxhdGUgYi9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZQppbmRleCBhYzE4YmMwMzQxOGNlLi5m MzlhN2Y2NzhhYjM1IDEwMDY0NAotLS0gYS9zcmNwa2dzL3NjcmNweS90ZW1wbGF0ZQorKysgYi9z cmNwa2dzL3NjcmNweS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBm b3IgJ3NjcmNweScKIHBrZ25hbWU9c2NyY3B5CiB2ZXJzaW9uPTIuMS4xCi1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1EY29tcGlsZV9z ZXJ2ZXI9ZmFsc2UKICAtRHByZWJ1aWx0X3NlcnZlcj0vdXNyL3NoYXJlL3NjcmNweS9zY3JjcHkt c2VydmVyLXYke3ZlcnNpb259IgoKRnJvbSA0YjE1YjhhNjdmMjU3Zjg0NWEzN2I4MGJhOGUxZTA3 ZjFmMTlmODAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBUdWUsIDE3IE9jdCAyMDIzIDA4OjU0OjExIC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwNzIvMTE1XSBOZXcgcGFja2FnZTogc3BleC14IHJlcGxhY2VzIHNwZWstYWx0ZXJu YXRpdmUgZm9yCiBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZSAgICAg ICAgICAgICAgICAgICAgICB8ICAxICsKIHNyY3BrZ3Mve3NwZWstYWx0ZXJuYXRpdmUgPT4gc3Bl ay14fS90ZW1wbGF0ZSB8IDIyICsrKysrKysrKysrKy0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwg MTUgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEyMDAwMCBzcmNw a2dzL3NwZWstYWx0ZXJuYXRpdmUKIHJlbmFtZSBzcmNwa2dzL3tzcGVrLWFsdGVybmF0aXZlID0+ IHNwZWsteH0vdGVtcGxhdGUgKDUyJSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NwZWstYWx0ZXJu YXRpdmUgYi9zcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUKbmV3IGZpbGUgbW9kZSAxMjAwMDAKaW5k ZXggMDAwMDAwMDAwMDAwMC4uNzY2NDgyMzZkYTcwMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3Mvc3Blay1hbHRlcm5hdGl2ZQpAQCAtMCwwICsxIEBACitzcGVrLXgKXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUvdGVtcGxh dGUgYi9zcmNwa2dzL3NwZWsteC90ZW1wbGF0ZQpzaW1pbGFyaXR5IGluZGV4IDUyJQpyZW5hbWUg ZnJvbSBzcmNwa2dzL3NwZWstYWx0ZXJuYXRpdmUvdGVtcGxhdGUKcmVuYW1lIHRvIHNyY3BrZ3Mv c3Blay14L3RlbXBsYXRlCmluZGV4IGQ3YjU1Yzc3NmIxZDQuLjNkZWQ2YzJjMzIzZTQgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3Mvc3Blay1hbHRlcm5hdGl2ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Nw ZWsteC90ZW1wbGF0ZQpAQCAtMSwxOCArMSwxOCBAQAotIyBUZW1wbGF0ZSBmaWxlIGZvciAnc3Bl ay1hbHRlcm5hdGl2ZScKLXBrZ25hbWU9c3Blay1hbHRlcm5hdGl2ZQotdmVyc2lvbj0wLjguMi4z Ci1yZXZpc2lvbj0yCisjIFRlbXBsYXRlIGZpbGUgZm9yICdzcGVrLXgnCitwa2duYW1lPXNwZWst eAordmVyc2lvbj0wLjkuMworcmV2aXNpb249MQogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQog aG9zdG1ha2VkZXBlbmRzPSJhdXRvbWFrZSBnZXR0ZXh0LWRldmVsIGludGx0b29sIGxpYnRvb2wg cGtnLWNvbmZpZwogIHd4V2lkZ2V0cy1jb21tb24gd3hXaWRnZXRzLWd0azMtZGV2ZWwiCiBtYWtl ZGVwZW5kcz0iZmZtcGVnLWRldmVsIHd4V2lkZ2V0cy1ndGszLWRldmVsIgogZGVwZW5kcz0iZmZt cGVnIgogc2hvcnRfZGVzYz0iQWNvdXN0aWMgc3BlY3RydW0gYW5hbHlzZXIiCi1tYWludGFpbmVy PSJLYXJ0aWsgU2luZ2ggPGthcnRpay55bndhQGdtYWlsLmNvbT4iCittYWludGFpbmVyPSJ6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIiCi1ob21l cGFnZT0iaHR0cHM6Ly9naXRodWIuY29tL3dpdGhtb3J0ZW4vc3Blay1hbHRlcm5hdGl2ZSIKLWRp c3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL3dpdGhtb3J0ZW4vc3Blay1hbHRlcm5hdGl2ZS9h cmNoaXZlLyR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09IjAwN2JhNGI4NGEzMTBiMDc4ZTM3 OGFhODRjOGU4MDc4M2RiNTgyMTQzN2E3NTdhNDg4YzNlY2VjMzc3ZTZiMmEiCitob21lcGFnZT0i aHR0cHM6Ly9naXRodWIuY29tL01pa2VXYW5nMDAwMDAwL3NwZWsteCIKK2Rpc3RmaWxlcz0iaHR0 cHM6Ly9naXRodWIuY29tL01pa2VXYW5nMDAwMDAwL3NwZWsteC9hcmNoaXZlL3Yke3ZlcnNpb259 LnRhci5neiIKK2NoZWNrc3VtPSI3ZjRiMTA5OTAzMzMzY2RkMzEwYWIyYjkxNzZmMGRjNDlhNTY1 ODkxMzc2ZTI4MWEyMzNkMzQyY2VkZjkwZWY3IgogCiBDWFhGTEFHUz0iLURfTEFSR0VGSUxFX1NP VVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IgogCkBAIC0yMiwzICsyMiw5IEBAIGV4cG9ydCBX WF9DT05GSUdfTkFNRT0id3gtY29uZmlnLWd0azMiCiBwcmVfY29uZmlndXJlKCkgewogCU5PQ09O RklHVVJFPTEgLi9hdXRvZ2VuLnNoCiB9CisKK3NwZWstYWx0ZXJuYXRpdmVfcGFja2FnZSgpIHsK KwlkZXBlbmRzPSJzcGVrLXgiCisJc2hvcnRfZGVzYys9IiAtIHRyYW5zaXRpb25hbCBkdW1teSBw YWNrYWdlIgorCWJ1aWxkX3N0eWxlPW1ldGEKK30KCkZyb20gN2M4MjY5Nzc3MmE0YjA4ODBmNWM2 YWEzMDI3ODEzOWNkZTgxOWMxOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCAyMiBNYXIgMjAyMyAyMDowMTo1MSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggMDczLzExNV0gc3NyOiByZXZidW1wIGZvciBmZm1wZWc0LTQuNC4z CgotLS0KIHNyY3BrZ3Mvc3NyL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3NyL3Rl bXBsYXRlIGIvc3JjcGtncy9zc3IvdGVtcGxhdGUKaW5kZXggYjA1NWI5ZWMwNzc0YS4uMzQ0OGNh MTEwZWIwYyAxMDA2NDQKLS0tIGEvc3JjcGtncy9zc3IvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9z c3IvdGVtcGxhdGUKQEAgLTEsMTEgKzEsMTEgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3NzcicK IHBrZ25hbWU9c3NyCiB2ZXJzaW9uPTAuNC40Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWls ZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EV0lUSF9RVDU9T04iCiBob3N0bWFrZWRl cGVuZHM9InBrZy1jb25maWciCi1tYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZtcGVnLWRl dmVsIGdsdS1kZXZlbCBqYWNrLWRldmVsIHB1bHNlYXVkaW8tZGV2ZWwKK21ha2VkZXBlbmRzPSJh bHNhLWxpYi1kZXZlbCBmZm1wZWc0LWRldmVsIGdsdS1kZXZlbCBqYWNrLWRldmVsIHB1bHNlYXVk aW8tZGV2ZWwKICBxdDUtdG9vbHMtZGV2ZWwgcXQ1LXgxMWV4dHJhcy1kZXZlbCBsaWJYaW5lcmFt YS1kZXZlbCB2NGwtdXRpbHMtZGV2ZWwiCiBkZXBlbmRzPSJkZXNrdG9wLWZpbGUtdXRpbHMgaGlj b2xvci1pY29uLXRoZW1lIgogc2hvcnRfZGVzYz0iU2ltcGxlIFNjcmVlbiBSZWNvcmRlciBmb3Ig cHJvZ3JhbXMgYW5kIGdhbWVzIgoKRnJvbSAyNzk3ZDUxMzhiMDE4ZTYxY2VkZWE3NjFhZDIzMmI3 MWYxYmNhZGUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVA Z21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6 IFtQQVRDSCAwNzQvMTE1XSBzeW5maWc6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAgYW5kIG1sdDcK Ci0tLQogc3JjcGtncy9zeW5maWcvcGF0Y2hlcy9mZm1wZWc2LnBhdGNoIHwgNzEgKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogc3JjcGtncy9zeW5maWcvdGVtcGxhdGUgICAgICAgICAgICAg IHwgIDQgKy0KIDIgZmlsZXMgY2hhbmdlZCwgNzMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3N5bmZpZy9wYXRjaGVzL2ZmbXBlZzYucGF0 Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3N5bmZpZy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2ggYi9z cmNwa2dzL3N5bmZpZy9wYXRjaGVzL2ZmbXBlZzYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwMC4uMTA3ODBiNDI3ODJmNAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3Mvc3luZmlnL3BhdGNoZXMvZmZtcGVnNi5wYXRjaApAQCAtMCwwICsxLDcxIEBACistLS0g YS9zcmMvbW9kdWxlcy9tb2RfbGliYXZjb2RlYy90cmd0X2F2LmNwcAkyMDIyLTEwLTI1IDA5OjE0 OjEyLjAwMDAwMDAwMCAtMDQwMAorKysrIGIvc3JjL21vZHVsZXMvbW9kX2xpYmF2Y29kZWMvdHJn dF9hdi5jcHAJMjAyMy0wNS0wNSAyMTozNDoxNy44OTkxOTQ1NTkgLTA0MDAKK0BAIC0zOCw2ICs0 MSw3IEBACisgZXh0ZXJuICJDIgorIHsKKyAjaWZkZWYgSEFWRV9MSUJBVkZPUk1BVF9BVkZPUk1B VF9ICisrIwlpbmNsdWRlIDxsaWJhdmNvZGVjL2F2Y29kZWMuaD4KKyAjCWluY2x1ZGUgPGxpYmF2 Zm9ybWF0L2F2Zm9ybWF0Lmg+CisgI2VsaWYgZGVmaW5lZChIQVZFX0FWRk9STUFUX0gpCisgIwlp bmNsdWRlIDxhdmZvcm1hdC5oPgorQEAgLTE1NSwxMSArMTU2LDExIEBACisgICAgIH0KKyAKKyAJ Ym9vbCBvcGVuX3ZpZGVvX3N0cmVhbSgpIHsKKy0JCWlmIChhdmNvZGVjX29wZW4yKHZpZGVvX2Nv bnRleHQsIE5VTEwsIE5VTEwpIDwgMCkgeworKwkJaWYgKGF2Y29kZWNfb3BlbjIodmlkZW9fY29u dGV4dCwgbnVsbHB0ciwgbnVsbHB0cikgPCAwKSB7CisgCQkJc3luZmlnOjplcnJvcigiVGFyZ2V0 X0xpYkFWQ29kZWM6IGNvdWxkIG5vdCBvcGVuIHZpZGVvIGNvZGVjIik7CisgCQkJLy8gc2VlbXMg dGhlIGNhbGxpbmcgb2YgYXZjb2RlY19mcmVlX2NvbnRleHQgYWZ0ZXIgZXJyb3Igd2lsbCBjYXVz ZSBjcmFzaAorIAkJCS8vIHNvIGp1c3QgZm9yZ2V0IGFib3V0IHRoaXMgY29udGV4dAorLQkJCXZp ZGVvX2NvbnRleHQgPSBOVUxMOworKwkJCXZpZGVvX2NvbnRleHQgPSBudWxscHRyOworIAkJCWNs b3NlKCk7CisgCQkJcmV0dXJuIGZhbHNlOworICAgICAgICAgfQorQEAgLTIzNCwxNSArMjM1LDIx IEBACisgCQljbG9zZSgpOworIAorIAkJaWYgKCFhdl9yZWdpc3RlcmVkKSB7CisrI2lmIExJQkFW Q09ERUNfVkVSU0lPTl9NQUpPUiA8IDU4IC8vIEZGTVBFRyA8IDQuMAorIAkJCWF2X3JlZ2lzdGVy X2FsbCgpOworKyNlbmRpZgorIAkJCWF2X3JlZ2lzdGVyZWQgPSB0cnVlOworIAkJfQorIAorIAkJ Ly8gZ3Vlc3MgZm9ybWF0CistCQlBVk91dHB1dEZvcm1hdCAqZm9ybWF0ID0gYXZfZ3Vlc3NfZm9y bWF0KE5VTEwsIGZpbGVuYW1lLmNfc3RyKCksIE5VTEwpOworKyNpZiBMSUJBVkNPREVDX1ZFUlNJ T05fTUFKT1IgPCA1OSAvLyBGRk1QRUcgPCA1LjAKKysJCUFWT3V0cHV0Rm9ybWF0KiBmb3JtYXQg PSBhdl9ndWVzc19mb3JtYXQobnVsbHB0ciwgZmlsZW5hbWUuY19zdHIoKSwgbnVsbHB0cik7Cisr I2Vsc2UKKysJCWNvbnN0IEFWT3V0cHV0Rm9ybWF0KiBmb3JtYXQgPSBhdl9ndWVzc19mb3JtYXQo bnVsbHB0ciwgZmlsZW5hbWUuY19zdHIoKSwgbnVsbHB0cik7CisrI2VuZGlmCisgCQlpZiAoIWZv cm1hdCkgeworIAkJCXN5bmZpZzo6d2FybmluZygiVGFyZ2V0X0xpYkFWQ29kZWM6IHVuYWJsZSB0 byBndWVzcyB0aGUgb3V0cHV0IGZvcm1hdCwgZGVmYXVsdGluZyB0byBNUEVHIik7CistCQkJZm9y bWF0ID0gYXZfZ3Vlc3NfZm9ybWF0KCJtcGVnIiwgTlVMTCwgTlVMTCk7CisrCQkJZm9ybWF0ID0g YXZfZ3Vlc3NfZm9ybWF0KCJtcGVnIiwgbnVsbHB0ciwgbnVsbHB0cik7CisgCQl9CisgCQlpZiAo IWZvcm1hdCkgeworIAkJCXN5bmZpZzo6ZXJyb3IoIlRhcmdldF9MaWJBVkNvZGVjOiB1bmFibGUg dG8gZmluZCAnbXBlZycgb3V0cHV0IGZvcm1hdCIpOworQEAgLTI1NCw2ICsyNjEsNyBAQAorIAkJ Y29udGV4dCA9IGF2Zm9ybWF0X2FsbG9jX2NvbnRleHQoKTsKKyAJCWFzc2VydChjb250ZXh0KTsK KyAJCWNvbnRleHQtPm9mb3JtYXQgPSBmb3JtYXQ7CisrI2lmIExJQkFWQ09ERUNfVkVSU0lPTl9N QUpPUiA8IDU4IC8vIEZGTVBFRyA8IDQuMAorIAkJaWYgKGZpbGVuYW1lLnNpemUoKSArIDEgPiBz aXplb2YoY29udGV4dC0+ZmlsZW5hbWUpKSB7CisgCQkJc3luZmlnOjplcnJvcigKKyAJCQkJIlRh cmdldF9MaWJBVkNvZGVjOiBmaWxlbmFtZSB0b28gbG9uZywgbWF4IGxlbmd0aCBpcyAlZCwgZmls ZW5hbWUgaXMgJyVzJyIsCitAQCAtMjYzLDYgKzI3MSwxNCBAQAorIAkJCXJldHVybiBmYWxzZTsK KyAJCX0KKyAJCW1lbWNweShjb250ZXh0LT5maWxlbmFtZSwgZmlsZW5hbWUuY19zdHIoKSwgZmls ZW5hbWUuc2l6ZSgpICsgMSk7CisrI2Vsc2UKKysJCWNvbnRleHQtPnVybCA9IGF2X3N0cm5kdXAo ZmlsZW5hbWUuY19zdHIoKSwgZmlsZW5hbWUuc2l6ZSgpKTsKKysJCWlmICghY29udGV4dC0+dXJs KSB7CisrCQkJc3luZmlnOjplcnJvcigiVGFyZ2V0X0xpYkFWQ29kZWM6IGNhbm5vdCBhbGxvY2F0 ZSBzcGFjZSBmb3IgZmlsZW5hbWUiKTsKKysJCQljbG9zZSgpOworKwkJCXJldHVybiBmYWxzZTsK KysJCX0KKysjZW5kaWYKKyAKKyAJCXBhY2tldCA9IGF2X3BhY2tldF9hbGxvYygpOworIAkJYXNz ZXJ0KHBhY2tldCk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3N5bmZpZy90ZW1wbGF0ZSBiL3NyY3Br Z3Mvc3luZmlnL3RlbXBsYXRlCmluZGV4IGQ0ZDNlMzQxYTIwYmYuLjcwM2NmZDdlYmFjODQgMTAw NjQ0Ci0tLSBhL3NyY3BrZ3Mvc3luZmlnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3luZmlnL3Rl bXBsYXRlCkBAIC02LDcgKzYsNyBAQCByZXZpc2lvbj00CiBidWlsZF9zdHlsZT1nbnUtY29uZmln dXJlCiBjb25maWd1cmVfYXJncz0iLS13aXRoLWJvb3N0LWxpYmRpcj0ke1hCUFNfQ1JPU1NfQkFT RX0vdXNyL2xpYiIKIGhvc3RtYWtlZGVwZW5kcz0iYm9vc3QtYnVpbGQgSW1hZ2VNYWdpY2sgcGtn LWNvbmZpZyBpbnRsdG9vbCIKLW1ha2VkZXBlbmRzPSJFVEwgZ2V0dGV4dC1kZXZlbCBsaWJ4bWwr Ky1kZXZlbCBtbHQtZGV2ZWwgbGlibWFnaWNrLWRldmVsCittYWtlZGVwZW5kcz0iRVRMIGdldHRl eHQtZGV2ZWwgbGlieG1sKystZGV2ZWwgbWx0Ny1kZXZlbCBsaWJtYWdpY2stZGV2ZWwKICBsaWJt bmctZGV2ZWwgYm9vc3QtYnVpbGQgYm9vc3QtZGV2ZWwgbGlib3BlbmV4ci1kZXZlbCBmZm1wZWct ZGV2ZWwiCiBkZXBlbmRzPSJJbWFnZU1hZ2ljayIKIHNob3J0X2Rlc2M9IkNMSSAyRCB2ZWN0b3Ig YW5kIHRpbWVsaW5lLWJhc2VkIGFuaW1hdGlvbiBzb2Z0d2FyZSIKQEAgLTIwLDcgKzIwLDcgQEAg Q1hYRkxBR1M9Ii1zdGQ9YysrMTEgLURIQVZFX0xPQ0FMRV9IPTEiCiAKIHN5bmZpZy1kZXZlbF9w YWNrYWdlKCkgewogCWRlcGVuZHM9IiR7c291cmNlcGtnfT49JHt2ZXJzaW9ufV8ke3JldmlzaW9u fQotCSBsaWJvcGVuZXhyLWRldmVsIGxpYnhtbCsrLWRldmVsIG1sdC1kZXZlbCIKKwkgbGlib3Bl bmV4ci1kZXZlbCBsaWJ4bWwrKy1kZXZlbCBtbHQ3LWRldmVsIgogCXNob3J0X2Rlc2MrPSIgLSBk ZXZlbG9wbWVudCBmaWxlcyIKIAlwa2dfaW5zdGFsbCgpIHsKIAkJdm1vdmUgdXNyL2Jpbi9zeW5m aWctY29uZmlnCgpGcm9tIGIwMGU3MWJlYTQ1YWNhNjFjYTQ1NDhhY2I1ZDFmNjI1ZDc2ZWQ4YzIg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3 NS8xMTVdIHRpbWc6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy90aW1nL3Rl bXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90aW1nL3RlbXBsYXRlIGIvc3JjcGtncy90aW1nL3Rl bXBsYXRlCmluZGV4IDJhMmFiNzYzZDJmZGQuLjhmYjQzMjc1MzVlZjkgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvdGltZy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3RpbWcvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0aW1nJwogcGtnbmFtZT10aW1nCiB2ZXJzaW9u PTEuNC41Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmln dXJlX2FyZ3M9Ii1EV0lUSF9PUEVOU0xJREVfU1VQUE9SVD1vZmYgLVduby1kZXYiCiBob3N0bWFr ZWRlcGVuZHM9InBrZy1jb25maWcgZ2l0IgoKRnJvbSA4OTRlNjRmNzI0NjIzYTQyYmUxNzcwZmE3 ZTJkYTlmNzEzOThhZmMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwNzYvMTE1XSB0dmhlYWRlbmQ6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40 LjMKCi0tLQogc3JjcGtncy90dmhlYWRlbmQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3R2 aGVhZGVuZC90ZW1wbGF0ZSBiL3NyY3BrZ3MvdHZoZWFkZW5kL3RlbXBsYXRlCmluZGV4IDlhZWE3 ZGU0ZWM3MDUuLjAxMmQzMWM0ODc5ZmYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdHZoZWFkZW5kL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvdHZoZWFkZW5kL3RlbXBsYXRlCkBAIC04LDcgKzgsNyBAQCBj b25maWd1cmVfYXJncz0iLS1lbmFibGUtZHZic2NhbiAtLWRpc2FibGUtZmZtcGVnX3N0YXRpYwog LS1kaXNhYmxlLWxpYngyNjVfc3RhdGljIC0tZGlzYWJsZS1saWJ2cHhfc3RhdGljIC0tZGlzYWJs ZS1saWJ0aGVvcmFfc3RhdGljCiAtLWRpc2FibGUtbGlidm9yYmlzX3N0YXRpYyAtLWRpc2FibGUt bGliZmRrYWFjX3N0YXRpYyIKIGhvc3RtYWtlZGVwZW5kcz0iZ2V0dGV4dCBwa2ctY29uZmlnIHB5 dGhvbjMgZ2l0IHdoaWNoIgotbWFrZWRlcGVuZHM9ImF2YWhpLWxpYnMtZGV2ZWwgb3BlbnNzbC1k ZXZlbCB6bGliLWRldmVsIGxpYmN1cmwtZGV2ZWwgZmZtcGVnLWRldmVsIgorbWFrZWRlcGVuZHM9 ImF2YWhpLWxpYnMtZGV2ZWwgb3BlbnNzbC1kZXZlbCB6bGliLWRldmVsIGxpYmN1cmwtZGV2ZWwg ZmZtcGVnNC1kZXZlbCIKIHNob3J0X2Rlc2M9IlRWIHN0cmVhbWluZyBzZXJ2ZXIiCiBtYWludGFp bmVyPSJsZW1taSA8bGVtbWlAbmVyZDJuZXJkLm9yZz4iCiBsaWNlbnNlPSJHUEwtMy4wLW9ubHki CgpGcm9tIDdmNWZmMDZiMThlOWUxM2E5OTMyODg4YTMyYzI2ZGEzMGRmMjkzMDYgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3Ny8xMTVdIHVu cGFwZXI6IHVwZGF0ZSB0byA3LjAuMC4KCi0tLQogc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlIHwg MTYgKysrKysrKystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3VucGFwZXIvdGVtcGxhdGUgYi9zcmNw a2dzL3VucGFwZXIvdGVtcGxhdGUKaW5kZXggMzhlZDQ3YTU4NDAxNi4uMWZmOTEwZTcyMmFmYyAx MDA2NDQKLS0tIGEvc3JjcGtncy91bnBhcGVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdW5wYXBl ci90ZW1wbGF0ZQpAQCAtMSwxMyArMSwxMyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndW5wYXBl cicKIHBrZ25hbWU9dW5wYXBlcgotdmVyc2lvbj02LjEKLXJldmlzaW9uPTMKLWJ1aWxkX3N0eWxl PWdudS1jb25maWd1cmUKK3ZlcnNpb249Ny4wLjAKK3JldmlzaW9uPTEKK2J1aWxkX3N0eWxlPW1l c29uCitob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcgbWVzb24gbGlieHNsdCIKK21ha2VkZXBl bmRzPSJmZm1wZWctZGV2ZWwgcHl0aG9uMy1TcGhpbngiCitzaG9ydF9kZXNjPSJQb3N0LXByb2Nl c3NpbmcgdG9vbCBmb3Igc2Nhbm5lZCBzaGVldHMgb2YgcGFwZXIiCiBtYWludGFpbmVyPSJPcnBo YW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgotaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmln IGxpYnhzbHQiCi1tYWtlZGVwZW5kcz0iZmZtcGVnLWRldmVsIgotbGljZW5zZT0iR1BMLTIiCits aWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vd3d3LmZsYW1lZXll cy5ldS9wcm9qZWN0cy91bnBhcGVyIgotc2hvcnRfZGVzYz0iQSBwb3N0LXByb2Nlc3NpbmcgdG9v bCBmb3Igc2Nhbm5lZCBzaGVldHMgb2YgcGFwZXIiCiBkaXN0ZmlsZXM9Imh0dHBzOi8vd3d3LmZs YW1lZXllcy5ldS9maWxlcy8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09 MjM3Yzg0ZjVkYTU0NGIzZjc3MDk4MjdmOWYxMmMzN2MzNDZjZGYwMjliMTEyOGZiNDYzM2Y5YmFm YTVjYjkzMAorY2hlY2tzdW09MjU3NWZiYmYyNmMyMjcxOWQxY2I4ODJiNTk2MDJjOTkwMGM3Zjc0 NzExOGFjMTMwODgzZjYzNDE5YmU0NmE4MAoKRnJvbSA5OTk0ZWMwMzJkNjcwZDZjYjcxZTAwZGIy YjNiMTU5ZWUxMWE4Njk2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAyMDIzIDIwOjAxOjUyIC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwNzgvMTE1XSB2YmEtbTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL3ZiYS1tL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy92YmEtbS90ZW1wbGF0 ZSBiL3NyY3BrZ3MvdmJhLW0vdGVtcGxhdGUKaW5kZXggOWM3MWNlZmUzZjhkZC4uMjIyM2QyOTdj MzFmNSAxMDA2NDQKLS0tIGEvc3JjcGtncy92YmEtbS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Zi YS1tL3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogcGtnbmFtZT12YmEtbQogcmV2ZXJ0cz0xMjky XzIKIHZlcnNpb249Mi4xLjcKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNt YWtlCiBjb25maWd1cmVfYXJncz0iLURFTkFCTEVfR1RLPVRSVUUgLURFTkFCTEVfRkZNUEVHPVRS VUUgLURFTkFCTEVfTElOSz1UUlVFIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIgogaG9zdG1h a2VkZXBlbmRzPSJnZXR0ZXh0IHBrZy1jb25maWcgdW56aXAgemlwIHlhc20gd3hXaWRnZXRzLWd0 azMtZGV2ZWwiCgpGcm9tIGRjMGQ3NjBmNDdiYzZkNDYxZTE1NzUzMTAzNmE5OGNiMTM4MjJiNDUg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA3 OS8xMTVdIHZpY2U6IHJldmJ1bXAgZm9yIGZmbXBlZzQtNC40LjMKCi0tLQogc3JjcGtncy92aWNl L3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdmljZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mv dmljZS90ZW1wbGF0ZQppbmRleCBmZTlkMzNhODExOTQ3Li40YmVhYjJjNWY5ZWJkIDEwMDY0NAot LS0gYS9zcmNwa2dzL3ZpY2UvdGVtcGxhdGUKKysrIGIvc3JjcGtncy92aWNlL3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndmljZScKIHBrZ25hbWU9dmljZQog dmVyc2lvbj0zLjcuMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Z251LWNv bmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9IgogCSQodm9wdF9lbmFibGUgc2RsMiBzZGx1aTIpCkBA IC0yNiw3ICsyNiw3IEBAIG1ha2VkZXBlbmRzPSIKIAkkKHZvcHRfaWYgZ3RrMyBndGsrMy1kZXZl bCkKIAkkKHZvcHRfaWYgZ3RrMyBwdWxzZWF1ZGlvLWRldmVsKQogCSQodm9wdF9pZiBndGszIHBh bmdvLWRldmVsKQotCSQodm9wdF9pZiBmZm1wZWcgZmZtcGVnLWRldmVsKSIKKwkkKHZvcHRfaWYg ZmZtcGVnIGZmbXBlZzQtZGV2ZWwpIgogc2hvcnRfZGVzYz0iRW11bGF0b3IgZm9yIEM2NCwgQzEy OCwgQ0JNLUlJLCBQRVQsIFZJQzIwLCBQbHVzNCBhbmQgQzE2IgogbWFpbnRhaW5lcj0iT3JwaGFu ZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIiCgpG cm9tIGE5YzliZGZjYzkxYmJhYWNkNDFmMjM2OTNmYWM4M2M5MGRlZDM5MTYgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwg MjIgTWFyIDIwMjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4MC8xMTVdIHdheXBp cGU6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy93YXlwaXBlL3RlbXBsYXRl IHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpk aWZmIC0tZ2l0IGEvc3JjcGtncy93YXlwaXBlL3RlbXBsYXRlIGIvc3JjcGtncy93YXlwaXBlL3Rl bXBsYXRlCmluZGV4IDZkYTg4YjIxYmYyYTEuLjRkYTgwNTg0MDBiNTggMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3Mvd2F5cGlwZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3dheXBpcGUvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd3YXlwaXBlJwogcGtnbmFtZT13YXlw aXBlCiB2ZXJzaW9uPTAuOC42Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1t ZXNvbgogIyBsdG8gaXMgb2ZmIGJlY2F1c2UgaXQgY2F1c2VzIGxpbmtpbmcgZXJyb3JzIGluIGFy bXY2bCBhbmQgYXJtdjdsIChkdWUgdG8gTkVPTikKIGNvbmZpZ3VyZV9hcmdzPSItRHdlcnJvcj1m YWxzZSAtRHdpdGhfZG1hYnVmPWVuYWJsZWQgLUR3aXRoX2x6ND1lbmFibGVkCgpGcm9tIGFiYjZm NmZhYmE3MmVkY2I4ZWE0NjhjYmJjNDVjZjRhMWI1NGZjZmIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMjIgTWFyIDIw MjMgMjA6MDE6NTIgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4MS8xMTVdIHdmLXJlY29yZGVyOiBy ZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvd2YtcmVjb3JkZXIvdGVtcGxhdGUg fCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBsYXRlIGIvc3JjcGtncy93Zi1yZWNv cmRlci90ZW1wbGF0ZQppbmRleCBjZGY4ZDI2ZGNiOGUxLi4wOGY5ODZiMDMxMDA2IDEwMDY0NAot LS0gYS9zcmNwa2dzL3dmLXJlY29yZGVyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvd2YtcmVjb3Jk ZXIvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd3Zi1yZWNv cmRlcicKIHBrZ25hbWU9d2YtcmVjb3JkZXIKIHZlcnNpb249MC40LjEKLXJldmlzaW9uPTEKK3Jl dmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcg c2Nkb2Mgd2F5bGFuZC1kZXZlbCIKIG1ha2VkZXBlbmRzPSJ3YXlsYW5kLXByb3RvY29scyB3YXls YW5kLWRldmVsIGZmbXBlZy1kZXZlbCBsaWJnYm0tZGV2ZWwgeDI2NC1kZXZlbAoKRnJvbSA3NjIx ZmRjOGU5YmZmMGUxMjQ2NWNmZThjYjlkYWMyOTlmYjRiYTNhIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDIyIE1hciAy MDIzIDIwOjAxOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODIvMTE1XSB4cHJhOiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MveHByYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MveHByYS90ZW1wbGF0ZSBiL3NyY3BrZ3MveHByYS90ZW1wbGF0ZQppbmRleCAzOTQ3MThi NTZmNjg2Li4zNGZiZmY5YjJmMWFlIDEwMDY0NAotLS0gYS9zcmNwa2dzL3hwcmEvdGVtcGxhdGUK KysrIGIvc3JjcGtncy94cHJhL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAneHByYScKIHBrZ25hbWU9eHByYQogdmVyc2lvbj01LjAuMwotcmV2aXNpb249MQor cmV2aXNpb249MgogYnVpbGRfc3R5bGU9cHl0aG9uMy1tb2R1bGUKIG1ha2VfYnVpbGRfYXJncz0i LS13aXRob3V0LWN1ZGFfa2VybmVscyAtLXdpdGhvdXQtY3VkYV9yZWJ1aWxkIgogbWFrZV9pbnN0 YWxsX2FyZ3M9IiQodm9wdF93aXRoIGRvY3MpICR7bWFrZV9idWlsZF9hcmdzfSIKCkZyb20gYzcz OGI3ZTk3NmM3MzZhNWE4N2UyNDZhNjRlYjVhNmJhNTI2Yzg1MyBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCAzMSBNYXIg MjAyMyAwOTowNzo0MCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDgzLzExNV0gbnYtY29kZWMtaGVh ZGVyczogdXBkYXRlIHRvIDEyLjAuMTYuMAoKLS0tCiBzcmNwa2dzL252LWNvZGVjLWhlYWRlcnMv dGVtcGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRl IGIvc3JjcGtncy9udi1jb2RlYy1oZWFkZXJzL3RlbXBsYXRlCmluZGV4IDNkNDIyYTYxZTQ4OTEu LjI1MWUwNTdmODI2ZmIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbnYtY29kZWMtaGVhZGVycy90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL252LWNvZGVjLWhlYWRlcnMvdGVtcGxhdGUKQEAgLTEsNiArMSw2 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdudi1jb2RlYy1oZWFkZXJzJwogcGtnbmFtZT1udi1j b2RlYy1oZWFkZXJzCi12ZXJzaW9uPTExLjEuNS4xCit2ZXJzaW9uPTEyLjAuMTYuMAogcmV2aXNp b249MQogYnVpbGRfc3R5bGU9Z251LW1ha2VmaWxlCiBzaG9ydF9kZXNjPSJGRm1wZWcgdmVyc2lv biBvZiBoZWFkZXJzIHJlcXVpcmVkIHRvIGludGVyZmFjZSB3aXRoIE52aWRpYXMgY29kZWMgQVBJ cyIKQEAgLTgsNyArOCw3IEBAIG1haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4 Lm9yZz4iCiBsaWNlbnNlPSJNSVQiCiBob21lcGFnZT0iaHR0cDovL2dpdC52aWRlb2xhbi5vcmcv P3A9ZmZtcGVnL252LWNvZGVjLWhlYWRlcnMuZ2l0IgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1 Yi5jb20vRkZtcGVnL252LWNvZGVjLWhlYWRlcnMvYXJjaGl2ZS9uJHt2ZXJzaW9ufS50YXIuZ3oi Ci1jaGVja3N1bT1kMDk1ZmJkNTZhYTkzNzcyNDcxYTMyM2JlMGViZTY1NTA0YTBmNDNmMDZjNzZh MzBiNmQyNWRhNzdiMDZhZTljCitjaGVja3N1bT0yYTE1MzNiNjVmNTVmOWRhNTI5NTZmYWYwNjI3 ZWQzYjc0ODY4YWMwYzdmMjY5OTkwZWRkMjEzNjkxMTNiNDhmCiAKIHBvc3RfaW5zdGFsbCgpIHsK IAlzZWQgLW4gJzQsMjVwJyBpbmNsdWRlL2ZmbnZjb2RlYy9udkVuY29kZUFQSS5oID4gTElDRU5T RQoKRnJvbSAwZTg4MzAxYjQ3YWY5YTQ4YzBjOWM5NWUxZGFjY2JmYWE2N2JmN2Y3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBG cmksIDMxIE1hciAyMDIzIDA5OjA4OjQwIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODQvMTE1XSBv cGVuaW1hZ2VkZW5vaXNlOiByZXZidW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3Mvb3Bl bmltYWdlZGVub2lzZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3BlbmltYWdlZGVub2lz ZS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3BlbmltYWdlZGVub2lzZS90ZW1wbGF0ZQppbmRleCBiNzky ODEzZGJhN2MyLi4xMDlkZWIxNzFjM2Y3IDEwMDY0NAotLS0gYS9zcmNwa2dzL29wZW5pbWFnZWRl bm9pc2UvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9vcGVuaW1hZ2VkZW5vaXNlL3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbmltYWdlZGVub2lzZScKIHBr Z25hbWU9b3BlbmltYWdlZGVub2lzZQogdmVyc2lvbj0xLjQuMwotcmV2aXNpb249MQorcmV2aXNp b249MgogYXJjaHM9Ing4Nl82NCoiCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRz PSJpc3BjIHB5dGhvbjMiCgpGcm9tIDUyMGQ4M2UxNzVhZGRlYWVlNmM5ODYyOTMyMzY3YWFhYTUw YWEwMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IE1vbiwgMyBBcHIgMjAyMyAyMzozMTo0NSAtMDQwMApTdWJqZWN0OiBbUEFU Q0ggMDg1LzExNV0gc2hvdGN1dDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L3Nob3RjdXQvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUgYi9z cmNwa2dzL3Nob3RjdXQvdGVtcGxhdGUKaW5kZXggMzMxNDFmYmQ4NjJkNy4uZjQ2Y2I1M2I2YmZi OSAxMDA2NDQKLS0tIGEvc3JjcGtncy9zaG90Y3V0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc2hv dGN1dC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Nob3Rj dXQnCiBwa2duYW1lPXNob3RjdXQKIHZlcnNpb249MjMuMDkuMjkKLXJldmlzaW9uPTEKK3Jldmlz aW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURTSE9UQ1VUX1ZFUlNJ T049JHt2ZXJzaW9ufSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDYtdG9vbHMtZGV2 ZWwiCgpGcm9tIGI3OTNjZGE5YWRlZGM4NDBhZWVhNWI2MGY5ZDQxNWY1NDc2OWVmMzkgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6 IE1vbiwgMyBBcHIgMjAyMyAyMzozMzozMCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg2LzExNV0g c2hpYm9rZW4yOiByZXZidW1wIGZvciBxdDUtNS4xNS44CgotLS0KIHNyY3BrZ3Mvc2hpYm9rZW4y L3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2ggfCAxICsKIHNyY3BrZ3Mv c2hpYm9rZW4yL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICst CiAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRl IG1vZGUgMTIwMDAwIHNyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVy eS1ieXBhc3MucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL2lt cG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBhdGNoIGIvc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hl cy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEyMDAwMApp bmRleCAwMDAwMDAwMDAwMDAwLi5lZmNmMzI0OWJkODg1Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9zaGlib2tlbjIvcGF0Y2hlcy9pbXBvcnRsaWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaApA QCAtMCwwICsxIEBACisuLi8uLi9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRsaWItbWFj aGluZXJ5LWJ5cGFzcy5wYXRjaApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp dCBhL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlIGIvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxh dGUKaW5kZXggODgzZDZhMDg0ZDg2OC4uZjNjMDZlYzI0NWExZiAxMDA2NDQKLS0tIGEvc3JjcGtn cy9zaGlib2tlbjIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdzaGlib2tlbjInCiBwa2duYW1lPXNo aWJva2VuMgogdmVyc2lvbj01LjE1LjEwCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBfcGtnbmFt ZT0icHlzaWRlLXNldHVwLW9wZW5zb3VyY2Utc3JjLSR7dmVyc2lvbn0iCiBidWlsZF93cmtzcmM9 InNvdXJjZXMvc2hpYm9rZW4yIgogYnVpbGRfc3R5bGU9Y21ha2UKCkZyb20gZDgyOTA4OWM2NWZl NmUwMjA4NzA5ZTIxYjY2ZTQzMDg3NDM4MWQ0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAzIEFwciAyMDIzIDIzOjMz OjUzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwODcvMTE1XSBweXRob24zLXB5c2lkZTI6IHJldmJ1 bXAgZm9yIHF0NS01LjE1LjgKCi0tLQogLi4uL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1i eXBhc3MucGF0Y2ggICAgICB8IDE1ICsrKysrKysrKysrKysrKwogc3JjcGtncy9weXRob24zLXB5 c2lkZTIvdGVtcGxhdGUgICAgICAgICAgICAgICAgICB8ICAyICstCiAyIGZpbGVzIGNoYW5nZWQs IDE2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL3B5dGhvbjMtcHlzaWRlMi9wYXRjaGVzL2ltcG9ydGxpYi1tYWNoaW5lcnktYnlwYXNzLnBh dGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy9pbXBvcnRs aWItbWFjaGluZXJ5LWJ5cGFzcy5wYXRjaCBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3BhdGNo ZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwMC4uNjRjNDI5NTg0Nzc2YgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMvaW1wb3J0bGliLW1hY2hpbmVyeS1ieXBhc3Mu cGF0Y2gKQEAgLTAsMCArMSwxNSBAQAorVXNpbmcgdGhpcyBwcmV2ZW50cyBhbiBlcnJvciBhcm91 bmQgbGluZSAyMjAgYmVsb3cgaXQuCisiQXR0cmlidXRlRXJyb3I6IG1vZHVsZSAnaW1wb3J0bGli JyBoYXMgbm8gYXR0cmlidXRlICdtYWNoaW5lcnknIgorVGhlIG9sZCBiYWNrdXAgbG9naWMgaXMg aW4gcGxhY2UgYW5kIGNvbXBpbGVzIHdpdGhvdXQgaXNzdWVzLgorLS0tIGEvc291cmNlcy9zaGli b2tlbjIvbGlic2hpYm9rZW4vZW1iZWQvc2lnbmF0dXJlX2Jvb3RzdHJhcC5weQkyMDIzLTA0LTAy IDIzOjA5OjM0LjY4ODkxMjQwMiAtMDQwMAorKysrIGIvc291cmNlcy9zaGlib2tlbjIvbGlic2hp Ym9rZW4vZW1iZWQvc2lnbmF0dXJlX2Jvb3RzdHJhcC5weQkyMDIzLTA0LTAyIDIzOjEwOjAzLjM5 NTUyOTU4MiAtMDQwMAorQEAgLTE3MCw5ICsxNzAsNiBAQAorCisgICAgICMgJ3ppcHN0cmluZ19z ZXF1ZW5jZScgY29tZXMgZnJvbSBzaWduYXR1cmUuY3BwCisgICAgIHppcGJ5dGVzID0gYmFzZTY0 LmI2NGRlY29kZSgnJy5qb2luKHppcHN0cmluZ19zZXF1ZW5jZSkpCistICAgIGlmIHN5cy52ZXJz aW9uX2luZm9bMF0gPj0gMzoKKy0gICAgICAgIHZ6aXAgPSB6aXBmaWxlLlppcEZpbGUoaW8uQnl0 ZXNJTyh6aXBieXRlcykpCistICAgICAgICByZXR1cm4gc3lzLm1ldGFfcGF0aCwgRW1iZWRkYWJs ZVppcEltcG9ydGVyKHZ6aXApCisKKyAgICAgIyBPbGQgdmVyc2lvbiBmb3IgUHl0aG9uIDIuNywg b25seS4KKyAgICAgaW1wb3J0IG9zCmRpZmYgLS1naXQgYS9zcmNwa2dzL3B5dGhvbjMtcHlzaWRl Mi90ZW1wbGF0ZSBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3RlbXBsYXRlCmluZGV4IDI0OWVm YTkwOTg4NDIuLjUyNjI2NDM2Y2U3NWYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHl0aG9uMy1weXNp ZGUyL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHl0aG9uMy1weXNpZGUyJwogcGtnbmFt ZT1weXRob24zLXB5c2lkZTIKIHZlcnNpb249NS4xNS4xMAotcmV2aXNpb249MQorcmV2aXNpb249 MgogX3BrZ25hbWU9InB5c2lkZS1zZXR1cC1vcGVuc291cmNlLXNyYy0ke3ZlcnNpb259IgogYnVp bGRfd3Jrc3JjPSJzb3VyY2VzL3B5c2lkZTIiCiBidWlsZF9zdHlsZT1jbWFrZQoKRnJvbSA2MjU1 Nzg2NTMwMTg1ZWIwOTJiYzUxYjhiOWQxZWM0MmU2YWQzYjgzIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQgQXByIDIw MjMgMTE6MTQ6MzUgLTA0MDAKU3ViamVjdDogW1BBVENIIDA4OC8xMTVdIGtvbnF1ZXJvcjogcmV2 YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZSB8IDQg KystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2tvbnF1ZXJvci90ZW1wbGF0ZSBiL3NyY3BrZ3Mva29ucXVlcm9y L3RlbXBsYXRlCmluZGV4IGFiZmE1OWU2YjdkZWQuLjNjYzI5YzEyZGMxZGIgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3Mva29ucXVlcm9yL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mva29ucXVlcm9yL3RlbXBs YXRlCkBAIC0xLDExICsxLDExIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdrb25xdWVyb3InCiBw a2duYW1lPWtvbnF1ZXJvcgogdmVyc2lvbj0yMy4wOC4yCi1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EREVTS1RPUFRPSlNPTl9FWEVD VVRBQkxFPS91c3IvYmluL2Rlc2t0b3B0b2pzb24iCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNt YWtlLW1vZHVsZXMgcHl0aG9uMyBxdDUtaG9zdC10b29scyBxdDUtcW1ha2Uga2RvY3Rvb2xzCi1r Y29yZWFkZG9ucyBrY29uZmlnIGdldHRleHQiCisga2NvcmVhZGRvbnMga2NvbmZpZyBnZXR0ZXh0 IgogbWFrZWRlcGVuZHM9InF0NS1kZXZlbCBxdDUtd2ViZW5naW5lLWRldmVsIHF0NS1kZWNsYXJh dGl2ZS1kZXZlbAogIHF0NS13ZWJjaGFubmVsLWRldmVsIHF0NS1sb2NhdGlvbi1kZXZlbCBrY211 dGlscy1kZXZlbCBrZGVsaWJzNHN1cHBvcnQtZGV2ZWwKICBrYXJjaGl2ZS1kZXZlbCBraHRtbC1k ZXZlbCBrZGVzdS1kZXZlbCBrYWN0aXZpdGllczUtZGV2ZWwiCgpGcm9tIDBkZTBhNTA3OThjNmJh YzRmNGYxMTdiMGE1Y2FlMjY3MjJmMWY1MzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNCBBcHIgMjAyMyAxMToxNDo1 OCAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDg5LzExNV0gcXQ1LXNwZWVjaDogcmV2YnVtcCBmb3Ig cXQ1LTUuMTUuOAoKLS0tCiBzcmNwa2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUgfCAyICstCiAxIGZp bGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9z cmNwa2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS1zcGVlY2gvdGVtcGxhdGUK aW5kZXggM2VjZDEwZDUwNjUwYy4uMmQ3ZDRkNGQyNDUzNSAxMDA2NDQKLS0tIGEvc3JjcGtncy9x dDUtc3BlZWNoL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1LXNwZWVjaC90ZW1wbGF0ZQpAQCAt MSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0NS1zcGVlY2gnCiBwa2duYW1lPXF0 NS1zcGVlY2gKIHZlcnNpb249NS4xNS43Ci1yZXZpc2lvbj0yCityZXZpc2lvbj0zCiBfY29tbWl0 PWQzMmY0YTQ3OWQzOGExMWY1NDc1OTgwMDRiOTc1ZjQzNTY0MjRhMTYKIGJ1aWxkX3N0eWxlPXFt YWtlCiBjb25maWd1cmVfYXJncz0iLS0gLWZsaXRlIC1mbGl0ZS1hbHNhIC1zcGVlY2hkIgoKRnJv bSA5NzlmMDBlYTQ0ZmVkMjY3YmY5ZDgyNDkzYzJiNzE0YTk5NTU1MWU1IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBUdWUsIDQg QXByIDIwMjMgMTg6Mzg6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5MC8xMTVdIHF0NS1zdHls ZXBsdWdpbnM6IHJldmJ1bXAgZm9yIHF0NS01LjE1LjgKCi0tLQogc3JjcGtncy9xdDUtc3R5bGVw bHVnaW5zL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBs YXRlIGIvc3JjcGtncy9xdDUtc3R5bGVwbHVnaW5zL3RlbXBsYXRlCmluZGV4IDk2ZWQ5N2QxMmNk MjQuLjMwZDkzNjYwYTJhNGUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXN0eWxlcGx1Z2lucy90 ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS1zdHlsZXBsdWdpbnMvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUtc3R5bGVwbHVnaW5zJwogcGtnbmFtZT1x dDUtc3R5bGVwbHVnaW5zCiB2ZXJzaW9uPTUuMC4wCi1yZXZpc2lvbj0yMAorcmV2aXNpb249MjEK IF9naXRyZXY9MzM1ZGJlY2UxMDNlMmNiZjZjN2NmODE5YWI2NjcyYzI5NTZiMTdiMwogYnVpbGRf c3R5bGU9cW1ha2UKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBxdDUtaG9zdC10b29scyBx dDUtcW1ha2UiCgpGcm9tIDI4YWZiNTcyZjgyMTk1YTdhZjc4Nzg0MWZkNzk2NGE5ZmJiZDQ2ZjMg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+ CkRhdGU6IFN1biwgNyBNYXkgMjAyMyAyMDoxNTowMyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDkx LzExNV0gcXQ2LXdlYmVuZ2luZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L3F0Ni13ZWJlbmdpbmUvdGVtcGxhdGUgfCAxICsKIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZSBiL3NyY3Br Z3MvcXQ2LXdlYmVuZ2luZS90ZW1wbGF0ZQppbmRleCA5OGNkYzY4MDQ4MWIzLi5mMzNhNzFiZDJh MGRjIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0Ni13ZWJlbmdpbmUvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9xdDYtd2ViZW5naW5lL3RlbXBsYXRlCkBAIC0xNTgsNiArMTU4LDcgQEAgcHJlX2luc3Rh bGwoKSB7CiB9CiAKIHBvc3RfaW5zdGFsbCgpIHsKKwl2bGljZW5zZSBMSUNFTlNFUy9CU0QtMy1D bGF1c2UudHh0CiAJbG9jYWwgX2ZpbGUKIAlmaW5kICIke0RFU1RESVJ9Ii91c3IvbGliL3F0Ni9l eGFtcGxlcyBcCiAJCS1wYXRoICcqL2xpYi9xdDYvKiovbGliL3F0Ni8qJyAtdHlwZSBmIHwKCkZy b20gMmIxZDFiY2YxNzJmNzIwMmI0MzI4MmRhMTExMWQ2ZmY1YzEzZTZkMCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCAy MSBNYXkgMjAyMyAxMjo0NDoxMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDkyLzExNV0gZWxlY3Ry b24yNDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL2VsZWN0cm9uMjQvdGVt cGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMjQvdGVtcGxhdGUgYi9zcmNwa2dzL2Vs ZWN0cm9uMjQvdGVtcGxhdGUKaW5kZXggNTllMDc4YTdiNDdjYi4uYTljODY1YzE5Yzk4OSAxMDA2 NDQKLS0tIGEvc3JjcGtncy9lbGVjdHJvbjI0L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZWxlY3Ry b24yNC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2VsZWN0 cm9uMjQnCiBwa2duYW1lPWVsZWN0cm9uMjQKIHZlcnNpb249MjQuMy4wCi1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBfbm9kZXZlcj0xOC4xNC4wCiBfY2hyb21pdW12ZXI9MTEyLjAuNTYxNS4xNjUK IGFyY2hzPSJ4ODZfNjQqIGFhcmNoNjQqIgoKRnJvbSBiZTEzYjllZjE5MjVlNzdlMzI0NDk5Nzkx ODQ3MTM1YTgzOWY4NTg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxp Y2U1NTVAZ21haWwuY29tPgpEYXRlOiBTYXQsIDMgSnVuIDIwMjMgMDg6MjA6MjIgLTA0MDAKU3Vi amVjdDogW1BBVENIIDA5My8xMTVdIGd0azQ6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQog c3JjcGtncy9ndGs0L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9u KCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9ndGs0L3RlbXBsYXRlIGIv c3JjcGtncy9ndGs0L3RlbXBsYXRlCmluZGV4IDZhNGUyMDM1N2E4NmYuLmVjMGMxM2QyY2M1YjAg MTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ3RrNC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2d0azQvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdndGs0JwogcGtnbmFt ZT1ndGs0CiB2ZXJzaW9uPTQuMTIuMwotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5 bGU9bWVzb24KIGJ1aWxkX2hlbHBlcj0iZ2lyIgogY29uZmlndXJlX2FyZ3M9Ii1EbWFuLXBhZ2Vz PXRydWUgLURkb2N1bWVudGF0aW9uPXRydWUgLURidWlsZC10ZXN0cz1mYWxzZQoKRnJvbSAwMmE4 YWYzODU3MjdkMjRjMjg2OGVhMjUxMmRlODU3OTg5NzlhNzcwIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDQgSnVuIDIw MjMgMTE6MjU6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5NC8xMTVdIGVsZWN0cm9uMTk6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9lbGVjdHJvbjE5L3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjE5L3RlbXBsYXRlIGIvc3JjcGtncy9lbGVjdHJvbjE5 L3RlbXBsYXRlCmluZGV4IDRiNDBkZTIwYTNmZTIuLmIxOGJjNzkyYzgyMjEgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvZWxlY3Ryb24xOS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTkvdGVt cGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdlbGVjdHJvbjE5Jwog cGtnbmFtZT1lbGVjdHJvbjE5CiB2ZXJzaW9uPTE5LjAuOAotcmV2aXNpb249MworcmV2aXNpb249 NAogX25vZGV2ZXI9MTYuMTQuMgogX2Nocm9taXVtdmVyPTEwMi4wLjUwMDUuMTI1CiBhcmNocz0i eDg2XzY0KiBhYXJjaDY0KiBwcGM2NGxlKiIKCkZyb20gNGVmMDM1NzFiNWMwNzU2NzYzZWI3OGM4 YjkzMmQ5YzJkODk2OWQzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHps aWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU3VuLCA0IEp1biAyMDIzIDExOjI4OjI2IC0wNDAwClN1 YmplY3Q6IFtQQVRDSCAwOTUvMTE1XSBzaXJpbDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0t CiBzcmNwa2dzL3NpcmlsL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9zaXJpbC90ZW1wbGF0 ZSBiL3NyY3BrZ3Mvc2lyaWwvdGVtcGxhdGUKaW5kZXggODQzMzJmNzlkMDYwZC4uNjI3NTBkZDI0 NzU0OCAxMDA2NDQKLS0tIGEvc3JjcGtncy9zaXJpbC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3Np cmlsL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc2lyaWwn CiBwa2duYW1lPXNpcmlsCiB2ZXJzaW9uPTAuOS4xMgotcmV2aXNpb249MTAKK3JldmlzaW9uPTEx CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCiBob3N0bWFrZWRlcGVuZHM9InBrZy1jb25maWcg aW50bHRvb2wgYXV0b2NvbmYgYXV0b21ha2UgZ2V0dGV4dC1kZXZlbCIKIG1ha2VkZXBlbmRzPSJm ZnR3LWRldmVsIGxpYmNvbmZpZy1kZXZlbCBsaWJvcGVuY3YtZGV2ZWwgbGliZmZtczItZGV2ZWwK CkZyb20gODAzNTU0ODc1ZTJlZjZlN2JjN2NhNzQ0NmY5NDhmODE2NTQ1NDk3MCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogU2F0 LCAxMCBKdW4gMjAyMyAwMDo1NzowOSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk2LzExNV0gcXQ2 LW11bHRpbWVkaWE6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9xdDYtbXVs dGltZWRpYS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxh dGUgYi9zcmNwa2dzL3F0Ni1tdWx0aW1lZGlhL3RlbXBsYXRlCmluZGV4IGFiMTEyMDA2YjE3ZTQu LjY3YTU3N2UxMzAwZmUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ2LW11bHRpbWVkaWEvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9xdDYtbXVsdGltZWRpYS90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAK ICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3F0Ni1tdWx0aW1lZGlhJwogcGtnbmFtZT1xdDYtbXVsdGlt ZWRpYQogdmVyc2lvbj02LjYuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRFFUX0ZFQVRVUkVfZ3N0cmVhbWVyPU9OIgogaG9zdG1h a2VkZXBlbmRzPSJwZXJsIHF0Ni1kZWNsYXJhdGl2ZS1ob3N0LXRvb2xzIHBrZy1jb25maWcgcXQ2 LXNoYWRlcnRvb2xzIgoKRnJvbSA2NGM0M2NjZGIxODE1OTA3MWNkMmQxYmQzMTFiMTkxZDMxNmNm ZmI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBUaHUsIDIyIEp1biAyMDIzIDEwOjI1OjAyIC0wNDAwClN1YmplY3Q6IFtQQVRD SCAwOTcvMTE1XSBrZGVubGl2ZTogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dz L2tkZW5saXZlL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9rZGVubGl2ZS90ZW1wbGF0ZSBi L3NyY3BrZ3Mva2RlbmxpdmUvdGVtcGxhdGUKaW5kZXggZWM1ZmU3NTg2MDk0OC4uZTY5ZWNmZjMx ZjI3MiAxMDA2NDQKLS0tIGEvc3JjcGtncy9rZGVubGl2ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dz L2tkZW5saXZlL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn a2RlbmxpdmUnCiBwa2duYW1lPWtkZW5saXZlCiB2ZXJzaW9uPTIzLjA4LjIKLXJldmlzaW9uPTEK K3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9IgogIGV4dHJh LWNtYWtlLW1vZHVsZXMga2NvbmZpZyBrY29yZWFkZG9ucyBrZG9jdG9vbHMgcGtnLWNvbmZpZyBw eXRob24zCgpGcm9tIDJlMGRlYTczNTQ4OThkZjk0NTJjMmIwYTIwZTdjYWRhYjFkZWJkYTAgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRh dGU6IFR1ZSwgNCBKdWwgMjAyMyAxMToxNzozNyAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMDk4LzEx NV0gREVMRVRFOiBpbnRlbF9wYWNrYWdlcwoKLS0tCiBjb21tb24vc2hsaWJzICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjcGtncy9pbnRlbC1nbW1saWIvdGVtcGxh dGUgICAgICAgICAgICAgICAgIHwgICAyICstCiAuLi5tbW9uLUVuYWJsZS1NTUMtaW4tZnJlZS1r ZXJuZWwtYnVpbGQucGF0Y2ggfCAxMjUgKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2ludGVs LW1lZGlhLWRyaXZlci90ZW1wbGF0ZSAgICAgICAgICAgfCAgIDYgKy0KIHNyY3BrZ3MvaW50ZWwt bWVkaWEtc2RrL3BhdGNoZXMvbXVzbC5wYXRjaCAgICB8ICAxNCArKwogc3JjcGtncy9pbnRlbC1t ZWRpYS1zZGsvdGVtcGxhdGUgICAgICAgICAgICAgIHwgIDM3ICsrKysrKwogc3JjcGtncy9pbnRl bC1tZWRpYS1zZGsvdXBkYXRlICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3MvbGlibWZ4 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL2xpYm1meC1k ZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjcGtncy9vbmV2cGwtZGV2 ZWwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyY3BrZ3Mvb25ldnBsLWludGVs LWdwdS1kZXZlbCAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmNwa2dzL29uZXZwbC1pbnRlbC1n cHUvdGVtcGxhdGUgICAgICAgICAgICAgfCAgMjcgKysrKwogc3JjcGtncy9vbmV2cGwvdGVtcGxh dGUgICAgICAgICAgICAgICAgICAgICAgIHwgIDM0ICsrKysrCiAxMyBmaWxlcyBjaGFuZ2VkLCAy NDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL2ludGVsLW1lZGlhLWRyaXZlci9wYXRjaGVzLzAwMDEtTWVkaWEtQ29tbW9uLUVuYWJsZS1N TUMtaW4tZnJlZS1rZXJuZWwtYnVpbGQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2ludGVsLW1lZGlhLXNkay9wYXRjaGVzL211c2wucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2ludGVsLW1lZGlhLXNkay90ZW1wbGF0ZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvaW50ZWwtbWVkaWEtc2RrL3VwZGF0ZQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGli bWZ4CiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJtZngtZGV2ZWwKIGNyZWF0ZSBtb2Rl IDEyMDAwMCBzcmNwa2dzL29uZXZwbC1kZXZlbAogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3Mv b25ldnBsLWludGVsLWdwdS1kZXZlbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mvb25ldnBs LWludGVsLWdwdS90ZW1wbGF0ZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mvb25ldnBsL3Rl bXBsYXRlCgpkaWZmIC0tZ2l0IGEvY29tbW9uL3NobGlicyBiL2NvbW1vbi9zaGxpYnMKaW5kZXgg ZmVjYWM2ZWVkMjA4My4uNDRkMDZkMDZjNzZlMSAxMDA2NDQKLS0tIGEvY29tbW9uL3NobGlicwor KysgYi9jb21tb24vc2hsaWJzCkBAIC00MjUzLDYgKzQyNTMsOCBAQCBsaWJnc29hcHNzbCsrLTIu OC4xMjQuc28gZ3NvYXAtMi44LjEyNF8xCiBsaWJqeGwuc28uMC44IGxpYmp4bC0wLjguMl8xCiBs aWJqeGxfZGVjLnNvLjAuOCBsaWJqeGwtMC44LjJfMQogbGlianhsX3RocmVhZHMuc28uMC44IGxp Ymp4bC0wLjguMl8xCitsaWJtZnguc28uMSBsaWJtZngtMjIuNi40XzEKK2xpYnZwbC5zby4yIG9u ZXZwbC0yMDIzLjEuMl8xCiBsaWJ0ZXh0LWVuZ2luZS0wLjEuc28uMCB0ZXh0LWVuZ2luZS0wLjEu MV8xCiBsaWJ2bWFmLnNvLjEgdm1hZi0yLjMuMV8xCiBsaWJsYzMuc28uMSBsaWJsYzMtMS4wLjNf MQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRlbC1nbW1saWIvdGVtcGxhdGUgYi9zcmNwa2dzL2lu dGVsLWdtbWxpYi90ZW1wbGF0ZQppbmRleCBiOWRmNjQyZjYzMjBmLi4zZDY0YmU3NDE1Mjk4IDEw MDY0NAotLS0gYS9zcmNwa2dzL2ludGVsLWdtbWxpYi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2lu dGVsLWdtbWxpYi90ZW1wbGF0ZQpAQCAtMTQsNyArMTQsNyBAQCBidWlsZF9zdHlsZT1jbWFrZQog IyBjb21waWxlcnMgZmxhZyBpbiB1c2UuCiBjb25maWd1cmVfYXJncz0iLVduby1kZXYiCiBzaG9y dF9kZXNjPSJJbnRlbCBHcmFwaGljcyBNZW1vcnkgTWFuYWdlbWVudCBMaWJyYXJ5IgotbWFpbnRh aW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKK21haW50YWluZXI9IlN0ZWZh bm8gUmFnbmkgPHN0M3I0Z0Bwcm90b25tYWlsLmNvbT4iCiBsaWNlbnNlPSJNSVQiCiBob21lcGFn ZT0iaHR0cHM6Ly9naXRodWIuY29tL2ludGVsL2dtbWxpYiIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9n aXRodWIuY29tL2ludGVsL2dtbWxpYi9hcmNoaXZlL2ludGVsLWdtbWxpYi0ke3ZlcnNpb259LnRh ci5neiIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVyL3BhdGNoZXMvMDAw MS1NZWRpYS1Db21tb24tRW5hYmxlLU1NQy1pbi1mcmVlLWtlcm5lbC1idWlsZC5wYXRjaCBiL3Ny Y3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVyL3BhdGNoZXMvMDAwMS1NZWRpYS1Db21tb24tRW5hYmxl LU1NQy1pbi1mcmVlLWtlcm5lbC1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAwLi41MjVmYjY4ODcyMmM4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9pbnRlbC1tZWRpYS1kcml2ZXIvcGF0Y2hlcy8wMDAxLU1lZGlhLUNvbW1vbi1FbmFibGUtTU1D LWluLWZyZWUta2VybmVsLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsMTI1IEBACitGcm9tIGU2OGZl YWI3ZGIwMzY4MzhkOTUyMWJhM2I5ZjAwNzE3YzM3YzAyNGMgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCitGcm9tOiBKYXlZYW5nIDxqYXkueWFuZ0BpbnRlbC5jb20+CitEYXRlOiBUdWUsIDIxIE1h ciAyMDIzIDE3OjE3OjU1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIFtNZWRpYSBDb21tb25dIEVu YWJsZSBNTUMgaW4gZnJlZSBrZXJuZWwgYnVpbGQKKworQWRkIG1tYyBidWlsZCBkZWZpbml0aW9u IGluIGZyZWUga2VybmVsIGJ1aWxkCistLS0KKyBtZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9j b2RlYy9oYWwvbWVkaWFfc3Jjcy5jbWFrZSAgICAgICAgICB8IDIgKy0KKyBtZWRpYV9kcml2ZXIv Y21ha2UvbGludXgvbWVkaWFfZmVhdHVyZV9mbGFnc19saW51eC5jbWFrZSAgICAgICB8IDMgKy0t CisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfYnh0L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNw cCAgICAgICAgfCAyICstCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfY2ZsL21lZGlhX2ludGVy ZmFjZXNfZzlfY2ZsLmNwcCAgICAgICAgfCAyICstCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlf Z2xrL21lZGlhX2ludGVyZmFjZXNfZzlfZ2xrLmNwcCAgICAgICAgfCAyICstCisgLi4uL21lZGlh X2ludGVyZmFjZXNfbTlfa2JsL21lZGlhX2ludGVyZmFjZXNfZzlfa2JsLmNwcCAgICAgICAgfCAy ICstCisgLi4uL21lZGlhX2ludGVyZmFjZXNfbTlfc2tsL21lZGlhX2ludGVyZmFjZXNfZzlfc2ts LmNwcCAgICAgICAgfCAyICstCisgNyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDgg ZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9j b2RlYy9oYWwvbWVkaWFfc3Jjcy5jbWFrZSBiL21lZGlhX2RyaXZlci9hZ25vc3RpYy9nZW45L2Nv ZGVjL2hhbC9tZWRpYV9zcmNzLmNtYWtlCitpbmRleCA4YmIzNmJhZmUuLjc4OTAyYTIyZCAxMDA2 NDQKKy0tLSBhL21lZGlhX2RyaXZlci9hZ25vc3RpYy9nZW45L2NvZGVjL2hhbC9tZWRpYV9zcmNz LmNtYWtlCisrKysgYi9tZWRpYV9kcml2ZXIvYWdub3N0aWMvZ2VuOS9jb2RlYy9oYWwvbWVkaWFf c3Jjcy5jbWFrZQorQEAgLTI3LDcgKzI3LDcgQEAgc2V0KFRNUF8xX0hFQURFUlNfCisgICAgICR7 Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vY29kZWNoYWxfaHdfZzlfWC5oCisgKQorIAorLWlmKCR7 TU1DX1N1cHBvcnRlZH0gU1RSRVFVQUwgInllcyIpCisraWYoJHtNTUNfU3VwcG9ydGVkfSBTVFJF UVVBTCAieWVzIiBBTkQgRU5BQkxFX05PTkZSRUVfS0VSTkVMUyBBTkQgRU5BQkxFX0tFUk5FTFMp CisgICAgIHNldChUTVBfMV9TT1VSQ0VTXworICAgICAgICAgJHtUTVBfMV9TT1VSQ0VTX30KKyAg ICAgICAgICR7Q01BS0VfQ1VSUkVOVF9MSVNUX0RJUn0vY29kZWNoYWxfbWVtZGVjb21wX2c5LmNw cAorZGlmZiAtLWdpdCBhL21lZGlhX2RyaXZlci9jbWFrZS9saW51eC9tZWRpYV9mZWF0dXJlX2Zs YWdzX2xpbnV4LmNtYWtlIGIvbWVkaWFfZHJpdmVyL2NtYWtlL2xpbnV4L21lZGlhX2ZlYXR1cmVf ZmxhZ3NfbGludXguY21ha2UKK2luZGV4IGRlMGNhODUzZi4uODEyMWVhNjBjIDEwMDY0NAorLS0t IGEvbWVkaWFfZHJpdmVyL2NtYWtlL2xpbnV4L21lZGlhX2ZlYXR1cmVfZmxhZ3NfbGludXguY21h a2UKKysrKyBiL21lZGlhX2RyaXZlci9jbWFrZS9saW51eC9tZWRpYV9mZWF0dXJlX2ZsYWdzX2xp bnV4LmNtYWtlCitAQCAtMzUsNyArMzUsNiBAQCBpZihOT1QgRU5BQkxFX0tFUk5FTFMgT1IgTk9U IEVOQUJMRV9OT05GUkVFX0tFUk5FTFMpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoSEVWQ19F bmNvZGVfVk1FX1N1cHBvcnRlZCAibm8iKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKE1QRUcy X0VuY29kZV9WTUVfU3VwcG9ydGVkICJubyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoQ01S VF9IRVZDX0VOQ19GRUlfU3VwcG9ydGVkICJubyIpCistICAgIGJzX3NldF9pZl91bmRlZmluZWQo TU1DX1N1cHBvcnRlZCAibm8iKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKFZDMV9EZWNvZGVf U3VwcG9ydGVkICJubyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoRGVjb2RlX1Byb2Nlc3Np bmdfU3VwcG9ydGVkICJubyIpCisgICAgIGJzX3NldF9pZl91bmRlZmluZWQoS2VybmVsX0F1dG9f RGVub2lzZV9TdXBwb3J0ZWQgIm5vIikKK0BAIC00Niw3ICs0NSw2IEBAIGVsc2UoKQorICAgICBi c19zZXRfaWZfdW5kZWZpbmVkKEhFVkNfRW5jb2RlX1ZNRV9TdXBwb3J0ZWQgIiR7RW5jb2RlX1ZN RV9TdXBwb3J0ZWR9IikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5lZChNUEVHMl9FbmNvZGVfVk1F X1N1cHBvcnRlZCAiJHtFbmNvZGVfVk1FX1N1cHBvcnRlZH0iKQorICAgICBic19zZXRfaWZfdW5k ZWZpbmVkKENNUlRfSEVWQ19FTkNfRkVJX1N1cHBvcnRlZCAieWVzIikKKy0gICAgYnNfc2V0X2lm X3VuZGVmaW5lZChNTUNfU3VwcG9ydGVkICJ5ZXMiKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVk KFZDMV9EZWNvZGVfU3VwcG9ydGVkICJ5ZXMiKQorICAgICBic19zZXRfaWZfdW5kZWZpbmVkKERl Y29kZV9Qcm9jZXNzaW5nX1N1cHBvcnRlZCAieWVzIikKKyAgICAgYnNfc2V0X2lmX3VuZGVmaW5l ZChLZXJuZWxfQXV0b19EZW5vaXNlX1N1cHBvcnRlZCAieWVzIikKK0BAIC02NCw2ICs2Miw3IEBA IGJzX3NldF9pZl91bmRlZmluZWQoVlA5X0RlY29kZV9TdXBwb3J0ZWQgInllcyIpCisgYnNfc2V0 X2lmX3VuZGVmaW5lZChWUF9TRkNfU3VwcG9ydGVkICJ5ZXMiKQorIGJzX3NldF9pZl91bmRlZmlu ZWQoQ29tbW9uX0VuY29kZV9TdXBwb3J0ZWQgInllcyIpCisgYnNfc2V0X2lmX3VuZGVmaW5lZChN ZWRpYV9TY2FsYWJpbGl0eV9TdXBwb3J0ZWQgInllcyIpCisrYnNfc2V0X2lmX3VuZGVmaW5lZChN TUNfU3VwcG9ydGVkICJ5ZXMiKQorIAorICMgZmVhdHVyZXMgY29udHJvbGxlZCBieSBnbG9iYWwg ZmxhZyBFbmNvZGVfVkRFbmNfU3VwcG9ydGVkCisgYnNfc2V0X2lmX3VuZGVmaW5lZChBVkNfRW5j b2RlX1ZERW5jX1N1cHBvcnRlZCAiJHtFbmNvZGVfVkRFbmNfU3VwcG9ydGVkfSIpCitkaWZmIC0t Z2l0IGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2J4 dC9tZWRpYV9pbnRlcmZhY2VzX2c5X2J4dC5jcHAgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJm YWNlL21lZGlhX2ludGVyZmFjZXNfbTlfYnh0L21lZGlhX2ludGVyZmFjZXNfZzlfYnh0LmNwcAor aW5kZXggM2YzMDZlZTJhLi44ZTRjMGY1MzIgMTAwNjQ0CistLS0gYS9tZWRpYV9kcml2ZXIvbWVk aWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfYnh0L21lZGlhX2ludGVyZmFjZXNfZzlf Ynh0LmNwcAorKysrIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZh Y2VzX205X2J4dC9tZWRpYV9pbnRlcmZhY2VzX2c5X2J4dC5jcHAKK0BAIC0xMzUsNyArMTM1LDcg QEAgTU9TX1NUQVRVUyBNaHdJbnRlcmZhY2VzRzlCeHQ6OkluaXRpYWxpemUoCisgCisgICAgIHJl dHVybiBNT1NfU1RBVFVTX1NVQ0NFU1M7CisgfQorLSNpZmRlZiBfTU1DX1NVUFBPUlRFRAorKyNp ZiBkZWZpbmVkKF9NTUNfU1VQUE9SVEVEKSAmJiBkZWZpbmVkKEVOQUJMRV9LRVJORUxTKSAmJiAh ZGVmaW5lZChfRlVMTF9PUEVOX1NPVVJDRSkKKyBzdGF0aWMgYm9vbCBieHRSZWdpc3RlcmVkTW1k ID0KKyAgICAgTWVkaWFGYWN0b3J5PHVpbnQzMl90LCBNbWREZXZpY2U+OjoKKyAgICAgUmVnaXN0 ZXI8TW1kRGV2aWNlRzlCeHQ+KCh1aW50MzJfdClJR0ZYX0JST1hUT04pOworZGlmZiAtLWdpdCBh L21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9jZmwvbWVk aWFfaW50ZXJmYWNlc19nOV9jZmwuY3BwIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9t ZWRpYV9pbnRlcmZhY2VzX205X2NmbC9tZWRpYV9pbnRlcmZhY2VzX2c5X2NmbC5jcHAKK2luZGV4 IGI4ZmExZWVjMC4uODRlMGZhZDFkIDEwMDY0NAorLS0tIGEvbWVkaWFfZHJpdmVyL21lZGlhX2lu dGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2NmbC9tZWRpYV9pbnRlcmZhY2VzX2c5X2NmbC5j cHAKKysrKyBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19t OV9jZmwvbWVkaWFfaW50ZXJmYWNlc19nOV9jZmwuY3BwCitAQCAtNDQsNyArNDQsNyBAQCBzdGF0 aWMgYm9vbCBjZmxSZWdpc3RlcmVkTWh3ID0KKyAgICAgTWVkaWFGYWN0b3J5PHVpbnQzMl90LCBN aHdJbnRlcmZhY2VzPjo6CisgICAgIFJlZ2lzdGVyPE1od0ludGVyZmFjZXNHOUtibD4oKHVpbnQz Ml90KUlHRlhfQ09GRkVFTEFLRSk7CisgCistI2lmZGVmIF9NTUNfU1VQUE9SVEVECisrI2lmIGRl ZmluZWQoX01NQ19TVVBQT1JURUQpICYmIGRlZmluZWQoRU5BQkxFX0tFUk5FTFMpICYmICFkZWZp bmVkKF9GVUxMX09QRU5fU09VUkNFKQorIHN0YXRpYyBib29sIGNmbFJlZ2lzdGVyZWRNbWQgPQor ICAgICBNZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1tZERldmljZT46OgorICAgICBSZWdpc3RlcjxN bWREZXZpY2VHOUtibD4oKHVpbnQzMl90KUlHRlhfQ09GRkVFTEFLRSk7CitkaWZmIC0tZ2l0IGEv bWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205X2dsay9tZWRp YV9pbnRlcmZhY2VzX2c5X2dsay5jcHAgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21l ZGlhX2ludGVyZmFjZXNfbTlfZ2xrL21lZGlhX2ludGVyZmFjZXNfZzlfZ2xrLmNwcAoraW5kZXgg ZGU4MWU2MDkxLi4yNjM4Y2IzYTYgMTAwNjQ0CistLS0gYS9tZWRpYV9kcml2ZXIvbWVkaWFfaW50 ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfZ2xrL21lZGlhX2ludGVyZmFjZXNfZzlfZ2xrLmNw cAorKysrIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9pbnRlcmZhY2VzX205 X2dsay9tZWRpYV9pbnRlcmZhY2VzX2c5X2dsay5jcHAKK0BAIC02NSw3ICs2NSw3IEBAIHN0YXRp YyBib29sIGdsa1JlZ2lzdGVyZWRNaHcgPQorICAgICBNZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1o d0ludGVyZmFjZXM+OjoKKyAgICAgUmVnaXN0ZXI8TWh3SW50ZXJmYWNlc0c5S2JsPigodWludDMy X3QpSUdGWF9HRU1JTklMQUtFKTsKKyAKKy0jaWZkZWYgX01NQ19TVVBQT1JURUQKKysjaWYgZGVm aW5lZChfTU1DX1NVUFBPUlRFRCkgJiYgZGVmaW5lZChFTkFCTEVfS0VSTkVMUykgJiYgIWRlZmlu ZWQoX0ZVTExfT1BFTl9TT1VSQ0UpCisgc3RhdGljIGJvb2wgZ2xrUmVnaXN0ZXJlZE1tZCA9Cisg ICAgIE1lZGlhRmFjdG9yeTx1aW50MzJfdCwgTW1kRGV2aWNlPjo6CisgICAgIFJlZ2lzdGVyPE1t ZERldmljZUc5S2JsPigodWludDMyX3QpSUdGWF9HRU1JTklMQUtFKTsKK2RpZmYgLS1naXQgYS9t ZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlfa2JsL21lZGlh X2ludGVyZmFjZXNfZzlfa2JsLmNwcCBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVk aWFfaW50ZXJmYWNlc19tOV9rYmwvbWVkaWFfaW50ZXJmYWNlc19nOV9rYmwuY3BwCitpbmRleCA5 OWQ3ODYxODUuLjRlOWM2ZTdmMSAxMDA2NDQKKy0tLSBhL21lZGlhX2RyaXZlci9tZWRpYV9pbnRl cmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9rYmwvbWVkaWFfaW50ZXJmYWNlc19nOV9rYmwuY3Bw CisrKysgYi9tZWRpYV9kcml2ZXIvbWVkaWFfaW50ZXJmYWNlL21lZGlhX2ludGVyZmFjZXNfbTlf a2JsL21lZGlhX2ludGVyZmFjZXNfZzlfa2JsLmNwcAorQEAgLTEzMSw3ICsxMzEsNyBAQCBNT1Nf U1RBVFVTIE1od0ludGVyZmFjZXNHOUtibDo6SW5pdGlhbGl6ZSgKKyAKKyAgICAgcmV0dXJuIE1P U19TVEFUVVNfU1VDQ0VTUzsKKyB9CistI2lmZGVmIF9NTUNfU1VQUE9SVEVECisrI2lmIGRlZmlu ZWQoX01NQ19TVVBQT1JURUQpICYmIGRlZmluZWQoRU5BQkxFX0tFUk5FTFMpICYmICFkZWZpbmVk KF9GVUxMX09QRU5fU09VUkNFKQorIHN0YXRpYyBib29sIGtibFJlZ2lzdGVyZWRNbWQgPQorICAg ICBNZWRpYUZhY3Rvcnk8dWludDMyX3QsIE1tZERldmljZT46OgorICAgICBSZWdpc3RlcjxNbWRE ZXZpY2VHOUtibD4oKHVpbnQzMl90KUlHRlhfS0FCWUxBS0UpOworZGlmZiAtLWdpdCBhL21lZGlh X2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9za2wvbWVkaWFfaW50 ZXJmYWNlc19nOV9za2wuY3BwIGIvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFjZS9tZWRpYV9p bnRlcmZhY2VzX205X3NrbC9tZWRpYV9pbnRlcmZhY2VzX2c5X3NrbC5jcHAKK2luZGV4IGUyNTIw ZWRmNy4uNGIwMDEyYzY0IDEwMDY0NAorLS0tIGEvbWVkaWFfZHJpdmVyL21lZGlhX2ludGVyZmFj ZS9tZWRpYV9pbnRlcmZhY2VzX205X3NrbC9tZWRpYV9pbnRlcmZhY2VzX2c5X3NrbC5jcHAKKysr KyBiL21lZGlhX2RyaXZlci9tZWRpYV9pbnRlcmZhY2UvbWVkaWFfaW50ZXJmYWNlc19tOV9za2wv bWVkaWFfaW50ZXJmYWNlc19nOV9za2wuY3BwCitAQCAtMTM5LDcgKzEzOSw3IEBAIE1PU19TVEFU VVMgTWh3SW50ZXJmYWNlc0c5U2tsOjpJbml0aWFsaXplKAorIAorICAgICByZXR1cm4gTU9TX1NU QVRVU19TVUNDRVNTOworIH0KKy0jaWZkZWYgX01NQ19TVVBQT1JURUQKKysjaWYgZGVmaW5lZChf TU1DX1NVUFBPUlRFRCkgJiYgZGVmaW5lZChFTkFCTEVfS0VSTkVMUykgJiYgIWRlZmluZWQoX0ZV TExfT1BFTl9TT1VSQ0UpCisgc3RhdGljIGJvb2wgc2tsUmVnaXN0ZXJlZE1tZCA9CisgICAgIE1l ZGlhRmFjdG9yeTx1aW50MzJfdCwgTW1kRGV2aWNlPjo6CisgICAgIFJlZ2lzdGVyPE1tZERldmlj ZUc5U2tsPigodWludDMyX3QpSUdGWF9TS1lMQUtFKTsKKy0tIAorMi40MC4wCisKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvaW50ZWwtbWVkaWEtZHJpdmVyL3RlbXBsYXRlIGIvc3JjcGtncy9pbnRlbC1t ZWRpYS1kcml2ZXIvdGVtcGxhdGUKaW5kZXggMDZiN2MxOWEwYmEwNy4uMTczNWI5MGM2NWNlNSAx MDA2NDQKLS0tIGEvc3JjcGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9pbnRlbC1tZWRpYS1kcml2ZXIvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdpbnRlbC1tZWRpYS1kcml2ZXInCiBwa2duYW1lPWludGVsLW1lZGlhLWRy aXZlcgotdmVyc2lvbj0yMy4zLjUKK3ZlcnNpb249MjIuNi40CiByZXZpc2lvbj0xCiBhcmNocz0i eDg2XzY0KiIKIGJ1aWxkX3N0eWxlPWNtYWtlCkBAIC04LDExICs4LDExIEBAIGNvbmZpZ3VyZV9h cmdzPSItV25vLWRldiAtREVOQUJMRV9OT05GUkVFX0tFUk5FTFM9JCh2b3B0X2lmIG5vbmZyZWUg T04gT0ZGKSIKIGhvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJsaWJ2 YS1kZXZlbCBsaWJYMTEtZGV2ZWwgaW50ZWwtZ21tbGliLWRldmVsIGxpYnBjaWFjY2Vzcy1kZXZl bCIKIHNob3J0X2Rlc2M9IkludGVsIE1lZGlhIERyaXZlciBmb3IgVkFBUEkgKEJyb2Fkd2VsbCsp IgotbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKK21haW50YWlu ZXI9IlN0ZWZhbm8gUmFnbmkgPHN0M3I0Z0Bwcm90b25tYWlsLmNvbT4iCiBsaWNlbnNlPSJNSVQs IEJTRC0zLUNsYXVzZSIKIGhvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEt ZHJpdmVyIgogZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVy L2FyY2hpdmUvaW50ZWwtbWVkaWEtJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT02N2ZkMTU2 NTRiYjNjNTk2ZmViOGM4NWU4MTIyMWRlNTYzMmUxMWY1OTg0MjFjMzVhZGM0NDUzZDcyN2YwMTMw CitjaGVja3N1bT0wYzA0YjlkNzRiOTJkZTQxZmQ0MDliNjI5MTNjZTRhZmQ3OTkyMzZjMGI2YmMx OTgzYTQ5Njk5MDc2NGU1ZDkwCiAKIGJ1aWxkX29wdGlvbnM9Im5vbmZyZWUiCiBkZXNjX29wdGlv bl9ub25mcmVlPSJFbmFibGUgbm9uZnJlZSBrZXJuZWxzIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9p bnRlbC1tZWRpYS1zZGsvcGF0Y2hlcy9tdXNsLnBhdGNoIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1z ZGsvcGF0Y2hlcy9tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMDAuLjRhZTcwOTI0Yjc0NGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ludGVsLW1l ZGlhLXNkay9wYXRjaGVzL211c2wucGF0Y2gKQEAgLTAsMCArMSwxNCBAQAorLS0tIGEvdG9vbHMv dHJhY2VyL3RyYWNlci90cmFjZXJfbGludXguY3BwCTIwMjItMTEtMTggMDM6MDI6NTkuMDAwMDAw MDAwIC0wNTAwCisrKysgYi90b29scy90cmFjZXIvdHJhY2VyL3RyYWNlcl9saW51eC5jcHAJMjAy Mi0xMi0xOCAwMTo0NDo1MS4zNDE1NDI1NzIgLTA1MDAKK0BAIC0zMiw2ICszMiwxMSBAQAorICNp bmNsdWRlIDxkbGZjbi5oPgorICNpbmNsdWRlICJ0cmFjZXIuaCIKKworKyNpZm5kZWYgUlRMRF9E RUVQQklORAorKy8vIG11c2wgbmVpdGhlciBkZWZpbmVzIG5vciBjYW4gdXNlIFJUTERfREVFUEJJ TkQKKysjZGVmaW5lIFJUTERfREVFUEJJTkQgMAorKyNlbmRpZgorKworICNpZiBkZWZpbmVkKF9f aTM4Nl9fKQorICAgICAjZGVmaW5lIExJQk1GWEhXICJsaWJtZnhodzMyLnNvLjEiCisgI2VsaWYg ZGVmaW5lZChfX3g4Nl82NF9fKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsv dGVtcGxhdGUgYi9zcmNwa2dzL2ludGVsLW1lZGlhLXNkay90ZW1wbGF0ZQpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi43YWVhYjUxODAyZjhlCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdGVtcGxhdGUKQEAgLTAsMCArMSwzNyBAQAor IyBUZW1wbGF0ZSBmaWxlIGZvciAnaW50ZWwtbWVkaWEtc2RrJworcGtnbmFtZT1pbnRlbC1tZWRp YS1zZGsKK3ZlcnNpb249MjIuNi40CityZXZpc2lvbj0xCithcmNocz0ieDg2XzY0KiIKK2J1aWxk X3N0eWxlPWNtYWtlCitjb25maWd1cmVfYXJncz0iLVduby1kZXYgLURCVUlMRF9TQU1QTEVTPU9G RiAtREJVSUxEX1RFU1RTPU9OIgoraG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmlnIgorbWFrZWRl cGVuZHM9ImxpYnZhLWRldmVsIGxpYmRybS1kZXZlbCBpbnRlbC1nbW1saWItZGV2ZWwiCitzaG9y dF9kZXNjPSJJbnRlbCBNZWRpYSBTREsiCittYWludGFpbmVyPSJTdGVmYW5vIFJhZ25pIDxzdDNy NGdAcHJvdG9ubWFpbC5jb20+IgorbGljZW5zZT0iTUlULCBCU0QtMy1DbGF1c2UiCitob21lcGFn ZT0iaHR0cHM6Ly9naXRodWIuY29tL0ludGVsLU1lZGlhLVNESy9NZWRpYVNESyIKK2Rpc3RmaWxl cz0iaHR0cHM6Ly9naXRodWIuY29tL0ludGVsLU1lZGlhLVNESy9NZWRpYVNESy9hcmNoaXZlL3Jl ZnMvdGFncy9pbnRlbC1tZWRpYXNkay0ke3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPTE5N2Fj ZDA1NmY4MWU5ZmYxYzI3MDY4ZDUwZThjODRjMjAxNGQ5NGM3YWMxN2NhZDY5ZDVjMmQ2MWU0NDVm ZDMKKworcG9zdF9pbnN0YWxsKCkgeworCXZsaWNlbnNlIExJQ0VOU0UKK30KKworbGlibWZ4X3Bh Y2thZ2UoKSB7CisJZGVwZW5kcz0iJHttYWtlZGVwZW5kc30gJHtzb3VyY2Vwa2d9LSR7dmVyc2lv bn1fJHtyZXZpc2lvbn0iCisJc2hvcnRfZGVzYz0iSW50ZWwgTWVkaWFTREsgbWZ4IGxpYiIKKwlw a2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2xpYi9tZngKKwkJdm1vdmUgInVzci9saWIvbGli bWZ4Ki5zbyoiCisJfQorfQorCitsaWJtZngtZGV2ZWxfcGFja2FnZSgpIHsKKwlkZXBlbmRzPSIk e21ha2VkZXBlbmRzfSAke3NvdXJjZXBrZ30tJHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlzaG9y dF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3Zl IHVzci9pbmNsdWRlCisJCXZtb3ZlIHVzci9saWIvcGtnY29uZmlnCisJfQorfQpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9pbnRlbC1tZWRpYS1zZGsvdXBkYXRlIGIvc3JjcGtncy9pbnRlbC1tZWRpYS1z ZGsvdXBkYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAuLjQzNGEy YmM2N2Y3YTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ludGVsLW1lZGlhLXNkay91cGRh dGUKQEAgLTAsMCArMSBAQAorcGtnbmFtZT1pbnRlbC1tZWRpYQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9saWJtZnggYi9zcmNwa2dzL2xpYm1meApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAw MDAwMDAwMDAwLi44ZmZjNzA5OWMyMjcyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJt ZngKQEAgLTAsMCArMSBAQAoraW50ZWwtbWVkaWEtc2RrClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJtZngtZGV2ZWwgYi9zcmNwa2dzL2xpYm1meC1k ZXZlbApuZXcgZmlsZSBtb2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi44ZmZjNzA5OWMy MjcyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJtZngtZGV2ZWwKQEAgLTAsMCArMSBA QAoraW50ZWwtbWVkaWEtc2RrClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9vbmV2cGwtZGV2ZWwgYi9zcmNwa2dzL29uZXZwbC1kZXZlbApuZXcgZmlsZSBt b2RlIDEyMDAwMAppbmRleCAwMDAwMDAwMDAwMDAwLi5lMjMwNjUwMGI0ODcxCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9vbmV2cGwtZGV2ZWwKQEAgLTAsMCArMSBAQAorb25ldnBsClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9vbmV2cGwtaW50ZWwt Z3B1LWRldmVsIGIvc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1LWRldmVsCm5ldyBmaWxlIG1vZGUg MTIwMDAwCmluZGV4IDAwMDAwMDAwMDAwMDAuLjQ3OTIwY2VlY2Y5MTkKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL29uZXZwbC1pbnRlbC1ncHUtZGV2ZWwKQEAgLTAsMCArMSBAQAorb25ldnBs LWludGVsLWdwdQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3Br Z3Mvb25ldnBsLWludGVsLWdwdS90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb25ldnBsLWludGVsLWdwdS90 ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5mMTRhY2I3 MjhhNTRkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9vbmV2cGwtaW50ZWwtZ3B1L3RlbXBs YXRlCkBAIC0wLDAgKzEsMjcgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ29uZXZwbC1pbnRlbC1n cHUnCitwa2duYW1lPW9uZXZwbC1pbnRlbC1ncHUKK3ZlcnNpb249MjIuNi40CityZXZpc2lvbj0x CithcmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0eWxlPWNtYWtlCitjb25maWd1cmVfYXJncz0iLVdu by1kZXYgLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UiCitob3N0bWFrZWRlcGVuZHM9ImNtYWtl IHBrZy1jb25maWciCittYWtlZGVwZW5kcz0ibGliZHJtLWRldmVsIGxpYnZhLWRldmVsIG9uZXZw bC1kZXZlbCIKK3Nob3J0X2Rlc2M9IlJ1bnRpbWUgaW1wbGVtZW50YXRpb24gb2Ygb25lVlBMIEFQ SSBmb3IgSW50ZWwgR2VuIEdQVXMiCittYWludGFpbmVyPSJ6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPiIKK2xpY2Vuc2U9Ik1JVCIKK2hvbWVwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vb25lYXBp LXNyYy9vbmVWUEwtaW50ZWwtZ3B1IgorY2hhbmdlbG9nPSJodHRwczovL2dpdGh1Yi5jb20vb25l YXBpLXNyYy9vbmVWUEwtaW50ZWwtZ3B1L2Jsb2IvbWFpbi9DSEFOR0VMT0cubWQiCitkaXN0Zmls ZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9vbmVhcGktc3JjL29uZVZQTC1pbnRlbC1ncHUvYXJjaGl2 ZS9yZWZzL3RhZ3MvaW50ZWwtb25ldnBsLSR7dmVyc2lvbn0udGFyLmd6IgorY2hlY2tzdW09NzRi MDk3OWRjYjJhZjFiN2M2OGVkYjhjYmNiMDJkNTM5ZGU1MTEwOTBiMTJmYWM1MDY1MmNiYWNkNzA3 YzRlNgorCitwb3N0X2luc3RhbGwoKSB7CisJdmxpY2Vuc2UgTElDRU5TRQorfQorCitvbmV2cGwt aW50ZWwtZ3B1LWRldmVsX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50 IGZpbGVzIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCX0K K30KZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb25ldnBsL3RlbXBsYXRlIGIvc3JjcGtncy9vbmV2cGwv dGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMC4uODVjN2My ZGE4NWNlOQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mvb25ldnBsL3RlbXBsYXRlCkBAIC0w LDAgKzEsMzQgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ29uZXZwbCcKK3BrZ25hbWU9b25ldnBs Cit2ZXJzaW9uPTIwMjMuMS4yCityZXZpc2lvbj0xCithcmNocz0ieDg2XzY0KiIKK2J1aWxkX3N0 eWxlPWNtYWtlCitjb25maWd1cmVfYXJncz0iCisJLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2Ug LVduby1kZXYKKwktREJVSUxEX1BZVEhPTl9CSU5ESU5HOkJPT0w9J09GRicKKwktREJVSUxEX0VY QU1QTEVTOkJPT0w9J09GRicKKwktREJVSUxEX1RFU1RTOkJPT0w9J09OJworCS1ESU5TVEFMTF9F WEFNUExFX0NPREU6Qk9PTD0nT0ZGJyIKK2hvc3RtYWtlZGVwZW5kcz0iY21ha2UgbGliWDExIHB5 dGhvbiB3YXlsYW5kLXByb3RvY29scyBwa2ctY29uZmlnIgorbWFrZWRlcGVuZHM9ImxpYnZhLWRl dmVsIGxpYlgxMS1kZXZlbCB3YXlsYW5kLWRldmVsIgorc2hvcnRfZGVzYz0iSW50ZWwgb25lQVBJ IFZpZGVvIFByb2Nlc3NpbmcgbGlicmFyeSIKK21haW50YWluZXI9InpsaWNlIDx6bGljZTU1NUBn bWFpbC5jb20+IgorbGljZW5zZT0iTUlUIgoraG9tZXBhZ2U9Imh0dHBzOi8vd3d3LmludGVsLmNv bS9jb250ZW50L3d3dy91cy9lbi9kZXZlbG9wZXIvdG9vbHMvb25lYXBpL29uZXZwbC5odG1sIgor ZGlzdGZpbGVzPSJodHRwczovL2dpdGh1Yi5jb20vb25lYXBpLXNyYy9vbmVWUEwvYXJjaGl2ZS92 JHt2ZXJzaW9ufS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLmd6IgorY2hlY2tzdW09YjIyNjFj Y2ExNzRjZTE4MTVmM2Q0N2M2NDc5MjFhYjE3ZjY4MjY3YzY5YzFlMjQ0NGZmMjdhYWI3ZDE5OWNi YgorCitwb3N0X2luc3RhbGwoKSB7CisJdmxpY2Vuc2UgTElDRU5TRQorfQorCitvbmV2cGwtZGV2 ZWxfcGFja2FnZSgpIHsKKwlkZXBlbmRzPSIke21ha2VkZXBlbmRzfSAke3NvdXJjZXBrZ30tJHt2 ZXJzaW9ufV8ke3JldmlzaW9ufSIKKwlzaG9ydF9kZXNjKz0iIC0gZGV2ZWxvcG1lbnQgZmlsZXMi CisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9pbmNsdWRlCisJCXZtb3ZlIHVzci9saWIv cGtnY29uZmlnCisJCXZtb3ZlICJ1c3IvbGliLyouc28iCisJfQorfQoKRnJvbSA5ODRlZDczOTM4 ODI4NDZmYWViNzk4ZTA5NTViY2FjYTc1MmZmOWUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTYXQsIDggSnVsIDIwMjMgMjA6 MjA6NTkgLTA0MDAKU3ViamVjdDogW1BBVENIIDA5OS8xMTVdIHRyYWNrZXItbWluZXJzOiByZXZi dW1wIGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvdHJhY2tlci1taW5lcnMvdGVtcGxhdGUg fCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3RyYWNrZXItbWluZXJzL3RlbXBsYXRlIGIvc3JjcGtncy90cmFj a2VyLW1pbmVycy90ZW1wbGF0ZQppbmRleCAwYjk3ZjQ3NDg5ZjgxLi5mMTk2ZDJiZjllNGE0IDEw MDY0NAotLS0gYS9zcmNwa2dzL3RyYWNrZXItbWluZXJzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mv dHJhY2tlci1taW5lcnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICd0cmFja2VyLW1pbmVycycKIHBrZ25hbWU9dHJhY2tlci1taW5lcnMKIHZlcnNpb249My42 LjEKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9oZWxw ZXI9cWVtdQogIyBtaXNzaW5nIGxpYmdyc3MgZm9yIG1pbmVyX3JzcwoKRnJvbSBkMjgxMWYxZjA3 MDE5ZDNjNzJkMjNjNTE4OTViNDAwYjViNWRjMmI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTYXQsIDggSnVsIDIwMjMgMjA6 MjE6MjEgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwMC8xMTVdIG1wZDogcmV2YnVtcCBmb3IgZmZt cGVnLTYuMAoKLS0tCiBzcmNwa2dzL21wZC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbXBk L3RlbXBsYXRlIGIvc3JjcGtncy9tcGQvdGVtcGxhdGUKaW5kZXggYWJiZWI0MjNhMTAwMi4uMWJj YTJlODc3YTM4MCAxMDA2NDQKLS0tIGEvc3JjcGtncy9tcGQvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9tcGQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtcGQn CiBwa2duYW1lPW1wZAogdmVyc2lvbj0wLjIzLjE0Ci1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBi dWlsZF9zdHlsZT1tZXNvbgogY29uZmlndXJlX2FyZ3M9Ii1Eb3B1cz1lbmFibGVkIC1EbWlrbW9k PWVuYWJsZWQgLURuZWlnaGJvcj10cnVlCiAgLURzb3VuZGNsb3VkPWVuYWJsZWQgLURwaXBlPXRy dWUgLUR0d29sYW1lPWVuYWJsZWQgLURiemlwMj1lbmFibGVkCgpGcm9tIGE2N2VlN2I3OWZlNWM4 MzRiZDgwOTk4OTRmYWM1MGYwZGQ5NGE0MzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTcgSnVsIDIwMjMgMTU6Mzc6 NDQgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwMS8xMTVdIG1peHh4OiByZXZidW1wIGZvciBmZm1w ZWctNi4wCgotLS0KIHNyY3BrZ3MvbWl4eHgvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21p eHh4L3RlbXBsYXRlIGIvc3JjcGtncy9taXh4eC90ZW1wbGF0ZQppbmRleCAyMzgwMDY3NmJmZDA5 Li42OTIxOTk2ZTRlNzdiIDEwMDY0NAotLS0gYS9zcmNwa2dzL21peHh4L3RlbXBsYXRlCisrKyBi L3NyY3BrZ3MvbWl4eHgvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdtaXh4eCcKIHBrZ25hbWU9bWl4eHgKIHZlcnNpb249Mi4zLjMKLXJldmlzaW9uPTUKK3Jl dmlzaW9uPTYKIGJ1aWxkX3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURDTUFLRV9CVUlM RF9UWVBFPVJlbGVhc2UiCiBob3N0bWFrZWRlcGVuZHM9ImV4dHJhLWNtYWtlLW1vZHVsZXMgcGtn LWNvbmZpZyBwcm90b2J1ZiBxdDUtaG9zdC10b29scyBxdDUtcW1ha2UiCgpGcm9tIDU3MzU5Zjc3 NTE2NmU4MGYyZmYyZWI1YTQ2ZjJhZGRhODJiNzgzNGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMg MDk6MDk6MzYgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwMi8xMTVdIG11c2lrY3ViZTogcmV2YnVt cCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL211c2lrY3ViZS90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbXVzaWtjdWJlL3RlbXBsYXRlIGIvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxh dGUKaW5kZXggMWY3OGFkYTE0NTFiNi4uZDllNjE4NmU2Njk3YiAxMDA2NDQKLS0tIGEvc3JjcGtn cy9tdXNpa2N1YmUvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tdXNpa2N1YmUvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtdXNpa2N1YmUnCiBwa2duYW1lPW11 c2lrY3ViZQogdmVyc2lvbj0zLjAuMAotcmV2aXNpb249MgorcmV2aXNpb249MwogYnVpbGRfc3R5 bGU9Y21ha2UKIG1ha2VfY21kPW1ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRE5PX05DVVJTRVNXPTEi CgpGcm9tIGNkNmJkNTUwY2EwMmI4NTc3YzNlNjNiYjNlNDEwOTA2OTY1NTlkZmIgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMzAgQXVnIDIwMjMgMDk6MTA6MDIgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwMy8xMTVdIHRn X293dDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL3RnX293dC90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGdfb3d0L3RlbXBsYXRlIGIvc3JjcGtncy90Z19vd3QvdGVt cGxhdGUKaW5kZXggNTBiYzgzMTBiODg1OS4uYzkzMjYyZDVjNWRlNiAxMDA2NDQKLS0tIGEvc3Jj cGtncy90Z19vd3QvdGVtcGxhdGUKKysrIGIvc3JjcGtncy90Z19vd3QvdGVtcGxhdGUKQEAgLTEs NyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0Z19vd3QnCiBwa2duYW1lPXRnX293dAog dmVyc2lvbj0wLjAuMC4yMDIzMDkyMQotcmV2aXNpb249MQorcmV2aXNpb249MgogX2NvbW1pdD0z YmIzZDc1NzY4MWU2Y2M1MTM1YWVjNjUyOWE3NTNkYzNkY2RjZmI5CiBfbGlieXV2X2NvbW1pdD0w NDgyMWQxZTdkNjA4NDU1MjVlOGRiNTVjN2JjZDQxZWY1YmU5NDA2CiBfYWJzZWlsX2NvbW1pdD04 YzBiOTRlNzkzYTY2NDk1ZTBiMWYzNGE1ZWIyNmJkN2RjNjcyZGIwCgpGcm9tIDMwNzg5N2I5MzMw NmM2ZmI4MmQzOTJjYWQ0YTk0NzllMzZkMDVmOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6 MTA6NDQgLTA0MDAKU3ViamVjdDogW1BBVENIIDEwNC8xMTVdIHRlbGVncmFtLWRlc2t0b3A6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBs YXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlIGIvc3JjcGtn cy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlCmluZGV4IDliZDk0Y2UzNzgxZmYuLmQzM2ZjNjJi MTBlMzggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3RlbGVncmFtLWRlc2t0b3AvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICd0ZWxlZ3JhbS1kZXNrdG9wJwogcGtnbmFtZT10ZWxlZ3JhbS1kZXNr dG9wCiB2ZXJzaW9uPTQuMTEuMgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 Y21ha2UKIGJ1aWxkX2hlbHBlcj0icWVtdSBnaXIiCiBjb25maWd1cmVfYXJncz0iLURUREVTS1RP UF9BUElfSUQ9MjA5MjM1CgpGcm9tIDMyM2EwNTRlNTRiMGU0OGMyZjhkYzg4ODIwYTUxZDk4ZmVm ZWExMmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFp bC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6MTE6MTMgLTA0MDAKU3ViamVjdDogW1BB VENIIDEwNS8xMTVdIG1wdjogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL21w di90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbXB2L3RlbXBsYXRlIGIvc3JjcGtncy9tcHYv dGVtcGxhdGUKaW5kZXggOTMzYzIyYmFlMmVkMi4uMzAxYTc3YWQyMjk3MSAxMDA2NDQKLS0tIGEv c3JjcGtncy9tcHYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tcHYvdGVtcGxhdGUKQEAgLTEsNyAr MSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtcHYnCiBwa2duYW1lPW1wdgogdmVyc2lvbj0w LjM2LjAKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1 cmVfYXJncz0iLURjZGRhPWVuYWJsZWQgLURkdmJpbj1lbmFibGVkIC1EZHZkbmF2PWVuYWJsZWQK ICAtRGxpYm1wdj10cnVlIC1EY3BsdWdpbnM9ZW5hYmxlZAoKRnJvbSBmOWQyMWMwZTQ1OGRjNGE2 YzAwYTRjYWE4ODZmODZkMmY0OWVhZjhlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDMwIEF1ZyAyMDIzIDA5OjExOjQ1 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDYvMTE1XSBnc3QtcGx1Z2lucy1iYWQxOiByZXZidW1w IGZvciBmZm1wZWctNi4wCgotLS0KIHNyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZSB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZ3N0LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZSBiL3NyY3BrZ3MvZ3N0 LXBsdWdpbnMtYmFkMS90ZW1wbGF0ZQppbmRleCAyYmYyZjRiMDY0MmZlLi4wZmFmY2I2NTU1Mzk1 IDEwMDY0NAotLS0gYS9zcmNwa2dzL2dzdC1wbHVnaW5zLWJhZDEvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9nc3QtcGx1Z2lucy1iYWQxL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0 ZSBmaWxlIGZvciAnZ3N0LXBsdWdpbnMtYmFkMScKIHBrZ25hbWU9Z3N0LXBsdWdpbnMtYmFkMQog dmVyc2lvbj0xLjIyLjUKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX2hlbHBlcj0iZ2ly IgogYnVpbGRfc3R5bGU9bWVzb24KIGNvbmZpZ3VyZV9hcmdzPSItRHBhY2thZ2Utb3JpZ2luPWh0 dHBzOi8vdm9pZGxpbnV4Lm9yZyAtRGRvYz1kaXNhYmxlZAoKRnJvbSBmZTJkY2NjZGU5ZWM0NWNi MGQyMDM0ZWRkYmU3ZWM0MWUxODQ1OGY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6 bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDMwIEF1ZyAyMDIzIDA5OjEyOjA5 IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDcvMTE1XSBvcGVubXc6IHJldmJ1bXAgZm9yIGZmbXBl Zy02LjAKCi0tLQogc3JjcGtncy9vcGVubXcvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL29w ZW5tdy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCmluZGV4IDBhYmY1ZmY3Y2Ri ZWMuLmI1NzE4MGYxYTQ0NDYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCisr KyBiL3NyY3BrZ3Mvb3Blbm13L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnb3Blbm13JwogcGtnbmFtZT1vcGVubXcKIHZlcnNpb249MC40OC4wCi1yZXZpc2lv bj0yCityZXZpc2lvbj0zCiBidWlsZF9zdHlsZT1jbWFrZQogX3JlY2FzdF9jb21taXQ9ZTc1YWRm ODZmOTFlYjMwODIyMjAwODVlNDJkZGE2MjY3OWY5YTNlYQogX2J1bGxldF90YWc9My4xNwoKRnJv bSA1MjE3OTRjOGZkODA0MmUyZDRhMGFlYmY2ZjQ2YTNlNDkxOTY4NzMwIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDMw IEF1ZyAyMDIzIDA5OjE0OjUzIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxMDgvMTE1XSBsbXM6IHJl dmJ1bXAgZm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9sbXMvdGVtcGxhdGUgfCAyICstCiAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmNwa2dzL2xtcy90ZW1wbGF0ZSBiL3NyY3BrZ3MvbG1zL3RlbXBsYXRlCmluZGV4IGUzNThm NzU5MDJhOTguLjNiMjFjNDU4ZGU1MTkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbG1zL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvbG1zL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnbG1zJwogcGtnbmFtZT1sbXMKIHZlcnNpb249My40Mi4xCi1yZXZpc2lvbj0xCity ZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJwa2ctY29uZmln IgogbWFrZWRlcGVuZHM9Ind0LWRldmVsIGZmbXBlZy1kZXZlbCBib29zdC1kZXZlbCBsaWJjb25m aWcrKy1kZXZlbCB0YWdsaWItZGV2ZWwgcGFtLWRldmVsIGxpYmdyYXBoaWNzbWFnaWNrLWRldmVs IGd0ZXN0LWRldmVsIGxpYmFyY2hpdmUtZGV2ZWwiCgpGcm9tIGU3OTFkZjRmYTc2YmNkMTRhMDM3 YTkyOTNkNDI5MWMwZjMzOGUwNWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNl IDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFdlZCwgMzAgQXVnIDIwMjMgMDk6MTg6MTggLTA0 MDAKU3ViamVjdDogW1BBVENIIDEwOS8xMTVdIGZyZWVjYWQ6IHJldmJ1bXAgZm9yIGZmbXBlZy02 LjAKCi0tLQogc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9mcmVl Y2FkL3RlbXBsYXRlIGIvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlCmluZGV4IGMxMzU3MDFlMzhi OWEuLjcwNTQ5OWU5OTcyYTYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZnJlZWNhZC90ZW1wbGF0ZQor KysgYi9zcmNwa2dzL2ZyZWVjYWQvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdmcmVlY2FkJwogcGtnbmFtZT1mcmVlY2FkCiB2ZXJzaW9uPTAuMjAuMgotcmV2 aXNpb249NworcmV2aXNpb249OAogYnVpbGRfd3Jrc3JjPSJGcmVlQ0FELSR7dmVyc2lvbn0iCiBi dWlsZF9zdHlsZT1jbWFrZQogcHljb21waWxlX2RpcnM9InVzci9saWIvJHtwa2duYW1lfS9Nb2Qi CgpGcm9tIDE5OGM5OWZmN2Q4YWMxZDVkYzQxZjU4MzQ0Y2U1YjUzZjg1Nzc0YzcgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IHpsaWNlIDx6bGljZTU1NUBnbWFpbC5jb20+CkRhdGU6IFN1 biwgMTUgT2N0IDIwMjMgMjE6NDA6MzkgLTA0MDAKU3ViamVjdDogW1BBVENIIDExMC8xMTVdIG9i czogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNwa2dzL29icy90ZW1wbGF0ZSB8IDIg Ky0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3Mvb2JzL3RlbXBsYXRlIGIvc3JjcGtncy9vYnMvdGVtcGxhdGUKaW5kZXgg YjQzYjEwZWY5MzVlOS4uNWQxZDVlODg3NDA5ZSAxMDA2NDQKLS0tIGEvc3JjcGtncy9vYnMvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9vYnMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdvYnMnCiBwa2duYW1lPW9icwogdmVyc2lvbj0yOS4xLjMKLXJldmlzaW9u PTIKK3JldmlzaW9uPTMKIGFyY2hzPSJpNjg2KiB4ODZfNjQqIHBwYzY0bGUqIGFhcmNoNjQqIgog YnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSItRE9CU19WRVJTSU9OX09WRVJSSURF PSR7dmVyc2lvbn0gLURFTkFCTEVfSkFDSz1PTgoKRnJvbSBiZmJjMjczYWVjNDczYzM3YmNmMmZl NmY4NjUxNGU1ZTc4MDE4MTg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8 emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBTdW4sIDE1IE9jdCAyMDIzIDIxOjQ2OjQ3IC0wNDAw ClN1YmplY3Q6IFtQQVRDSCAxMTEvMTE1XSBtbHQ3OiByZXZidW1wIGZvciBmZm1wZWctNi4wCgot LS0KIHNyY3BrZ3MvbWx0Ny90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbWx0Ny90ZW1wbGF0 ZSBiL3NyY3BrZ3MvbWx0Ny90ZW1wbGF0ZQppbmRleCA2YWEzOTE4YjBjMzY2Li45OGYzMDJhZDNh NTE2IDEwMDY0NAotLS0gYS9zcmNwa2dzL21sdDcvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9tbHQ3 L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbWx0NycKIHBr Z25hbWU9bWx0NwogdmVyc2lvbj03LjIwLjAKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxk X3N0eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iLURTV0lHX1BZVEhPTj1PTiAtRE1PRF9RVDY9 T04iCiBob3N0bWFrZWRlcGVuZHM9ImRveHlnZW4gcGtnLWNvbmZpZyBsYWRzcGEtc2RrIHN3aWcg cHl0aG9uMyB3aGljaAoKRnJvbSAzNGFjNjJiNTc4NjhkNDQ4ZDEwNWIxYWJkZmVlNmQ4ZDdmNGJh Y2VhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGljZSA8emxpY2U1NTVAZ21haWwu Y29tPgpEYXRlOiBTdW4sIDE1IE9jdCAyMDIzIDIxOjQ3OjE4IC0wNDAwClN1YmplY3Q6IFtQQVRD SCAxMTIvMTE1XSBsaWJvcGVuc2hvdDogcmV2YnVtcCBmb3IgZmZtcGVnLTYuMAoKLS0tCiBzcmNw a2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJvcGVuc2hvdC90 ZW1wbGF0ZSBiL3NyY3BrZ3MvbGlib3BlbnNob3QvdGVtcGxhdGUKaW5kZXggOGU1N2M1ZjU5MjE2 OS4uN2E4ZjQ1MjBlNzg5MiAxMDA2NDQKLS0tIGEvc3JjcGtncy9saWJvcGVuc2hvdC90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL2xpYm9wZW5zaG90L3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnbGlib3BlbnNob3QnCiBwa2duYW1lPWxpYm9wZW5zaG90CiB2ZXJz aW9uPTAuMy4wCi1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBidWlsZF9zdHlsZT1jbWFrZQogIyBC dWlsZHMgZmFpbCB3aXRoIFJ1YnktMi40LjEKIGNvbmZpZ3VyZV9hcmdzPSItREVOQUJMRV9SVUJZ PU9GRiAtRFVTRV9TWVNURU1fSlNPTkNQUD1PTiIKCkZyb20gNTNhYzhmYzI2ODY0MzRkN2U3YjNi NjE1OGI1MTYxNTMwMzk4NzQyMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogemxpY2Ug PHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCA4IE5vdiAyMDIzIDEwOjEwOjMwIC0wNTAw ClN1YmplY3Q6IFtQQVRDSCAxMTMvMTE1XSBvcGVuaW1hZ2VpbzogcmV2YnVtcCBmb3IgZmZtcGVn LTYuMAoKLS0tCiBzcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9vcGVuaW1hZ2Vpby90ZW1wbGF0ZSBiL3NyY3BrZ3Mvb3BlbmltYWdlaW8vdGVtcGxhdGUKaW5k ZXggM2NlM2Y5ZTQ5ZDM1MC4uMjdkMjEzMWJjMGE2MSAxMDA2NDQKLS0tIGEvc3JjcGtncy9vcGVu aW1hZ2Vpby90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL29wZW5pbWFnZWlvL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnb3BlbmltYWdlaW8nCiBwa2duYW1lPW9w ZW5pbWFnZWlvCiB2ZXJzaW9uPTIuNC45LjAKLXJldmlzaW9uPTcKK3JldmlzaW9uPTgKIGJ1aWxk X3N0eWxlPWNtYWtlCiBidWlsZF9oZWxwZXI9cWVtdQogY29uZmlndXJlX2FyZ3M9Ii1EVVNFX1FU PTAgLURVU0VfUFlUSE9OPTAgLURPSUlPX0JVSUxEX1RFU1RTPTAKCkZyb20gMzhmMzJhNjBkN2E5 MmQ4OTA2YWY5NWQzZTUxN2E1MmQxYzJiNjI4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJv bTogemxpY2UgPHpsaWNlNTU1QGdtYWlsLmNvbT4KRGF0ZTogV2VkLCA4IE5vdiAyMDIzIDEwOjEx OjU3IC0wNTAwClN1YmplY3Q6IFtQQVRDSCAxMTQvMTE1XSBzeW5maWdzdHVkaW86IHJldmJ1bXAg Zm9yIGZmbXBlZy02LjAKCi0tLQogc3JjcGtncy9zeW5maWdzdHVkaW8vdGVtcGxhdGUgfCAyICst CiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3N5bmZpZ3N0dWRpby90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc3luZmlnc3R1ZGlv L3RlbXBsYXRlCmluZGV4IDA5ZTQ0MmRhOWE2ODAuLjJiYzAxN2NlZGNhNmIgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3Mvc3luZmlnc3R1ZGlvL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3luZmlnc3R1ZGlv L3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogIyBTaG91bGQgYmUga2VwdCBpbiBzeW5jIHdpdGgg J3N5bmZpZycgYW5kICdFVEwnCiBwa2duYW1lPXN5bmZpZ3N0dWRpbwogdmVyc2lvbj0xLjQuNAot cmV2aXNpb249NAorcmV2aXNpb249NQogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmln dXJlX2FyZ3M9Ii0tZGlzYWJsZS11cGRhdGUtbWltZWRiIgogaG9zdG1ha2VkZXBlbmRzPSJwa2ct Y29uZmlnIGludGx0b29sIGdldHRleHQgc3luZmlnIgoKRnJvbSAzYmE4ODE4Y2YxNmY3NTJhYzhh ODAwZWM1ZmU2Y2M0YjAyOTRhODExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB6bGlj ZSA8emxpY2U1NTVAZ21haWwuY29tPgpEYXRlOiBXZWQsIDggTm92IDIwMjMgMTA6MTI6MzIgLTA1 MDAKU3ViamVjdDogW1BBVENIIDExNS8xMTVdIGdtaWM6IHJldmJ1bXAgZm9yIGZmbXBlZy02LjAK Ci0tLQogc3JjcGtncy9nbWljL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9nbWljL3RlbXBs YXRlIGIvc3JjcGtncy9nbWljL3RlbXBsYXRlCmluZGV4IDgwODk1M2U5YjU0M2MuLmQ4NTQ4MDhm ODZhYTQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ21pYy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dt aWMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnbWljJwog cGtnbmFtZT1nbWljCiB2ZXJzaW9uPTMuMS42Ci1yZXZpc2lvbj01CityZXZpc2lvbj02CiBfemFy dF9oYXNoPTM0ZWJmNmNjZTBiYWZiOThhYmU1N2NlYzgzYzRhMDJjZDFhYmVjYTAKIGNyZWF0ZV93 cmtzcmM9eWVzCiBidWlsZF93cmtzcmM9InNyYyIK --===============5088758641748342348==--