From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Viktor Ashirov To: git-commits@fedoraproject.org Subject: [rpms/389-ds-base] f43: Bump version to 3.1.5 Date: Mon, 07 Sep 2026 17:29:54 GMT Message-ID: <178880219437.1.7508900179045386620.rpms-389-ds-base-666059dd015b@fedoraproject.org> List-ID: X-Git-Repo: rpms/389-ds-base X-Git-Branch: f43 X-Git-Rev: 666059dd015bd4bc0c65066c014b700a2bd05e52 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvMzg5LWRzLWJhc2UK QnJhbmNoIDogZjQzCkNvbW1pdCA6IDY2NjA1OWRkMDE1YmQ0YmMwYzY1MDY2YzAxNGI3MDBhMmJk MDVlNTIKQXV0aG9yIDogVmlrdG9yIEFzaGlyb3YgPHZhc2hpcm92QHJlZGhhdC5jb20+CkRhdGUg ICA6IDIwMjYtMDktMDdUMTY6MTE6NTIrMDI6MDAKU3RhdHMgIDogKzI3OS8tMTAxMTUgaW4gMzQg ZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zLzM4OS1k cy1iYXNlL2MvNjY2MDU5ZGQwMTViZDRiYzBjNjUwNjZjMDE0YjcwMGEyYmQwNWU1Mj9icmFuY2g9 ZjQzCgpMb2c6CkJ1bXAgdmVyc2lvbiB0byAzLjEuNQoKLS0tCmRpZmYgLS1naXQgYS8wMDAxLUlz c3VlLTcxNTAtQ29tcHJlc3NlZC1hY2Nlc3MtbG9nLXJvdGF0aW9ucy1za2lwcGVkLWEucGF0Y2gg Yi8wMDAxLUlzc3VlLTcxNTAtQ29tcHJlc3NlZC1hY2Nlc3MtbG9nLXJvdGF0aW9ucy1za2lwcGVk LWEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NTk4ODUuLjAwMDAwMDAK LS0tIGEvMDAwMS1Jc3N1ZS03MTUwLUNvbXByZXNzZWQtYWNjZXNzLWxvZy1yb3RhdGlvbnMtc2tp cHBlZC1hLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTUxICswLDAgQEAKLUZyb20gMDQ1ZmUx YTY4OTliN2U0NTg4YmU3MTAxZTgxYmI3ODk5NWE3MTNiMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IFNpbW9uIFBpY2h1Z2luIDxzcGljaHVnaUByZWRoYXQuY29tPgotRGF0ZTogVHVl LCAxNiBEZWMgMjAyNSAxNTo0ODozNSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBJc3N1ZSA3MTUw IC0gQ29tcHJlc3NlZCBhY2Nlc3MgbG9nIHJvdGF0aW9ucyBza2lwcGVkLAotIGFjY2Vzc2xvZy1s aXN0IG91dCBvZiBzeW5jICgjNzE1MSkKLQotRGVzY3JpcHRpb246IEFjY2VwdCBgLmd6YC1zdWZm aXhlZCByb3RhdGVkIGxvZyBmaWxlbmFtZXMgd2hlbgotcmVidWlsZGluZyByb3RhdGlvbiBpbmZv IGFuZCBjaGVja2luZyBwcmV2aW91cyBsb2dzLCBwcmV2ZW50aW5nCi1jb21wcmVzc2VkIHJvdGF0 aW9ucyBmcm9tIGJlaW5nIGRyb3BwZWQgZnJvbSB0aGUgaW50ZXJuYWwgbGlzdC4KLQotQWRkIHJl Z3Jlc3Npb24gdGVzdHMgdG8gc3RyZXNzIGxvZyByb3RhdGlvbiB3aXRoIGNvbXByZXNzaW9uLAot dmVyaWZ5IGBuc3NsYXBkLWFjY2Vzc2xvZy1saXN0YCBzdGF5cyBpbiBzeW5jLCBhbmQgZ3VhcmQg YWdhaW5zdAotY3Jhc2hlcyB3aGVuIGZsdXNoaW5nIGJ1ZmZlcmVkIGxvZ3MgZHVyaW5nIHJvdGF0 aW9uLgotTWlub3IgZG9jIGZpeCBpbiB0ZXN0LgotCi1GaXhlczogaHR0cHM6Ly9naXRodWIuY29t LzM4OWRzLzM4OS1kcy1iYXNlL2lzc3Vlcy83MTUwCi0KLVJldmlld2VkIGJ5OiBAcHJvZ2llcjM4 OSAoVGhhbmtzISkKLS0tLQotIC4uLi9zdWl0ZXMvbG9nZ2luZy9sb2dfZmx1c2hfcm90YXRpb25f dGVzdC5weSB8IDM0MSArKysrKysrKysrKysrKysrKy0KLSBsZGFwL3NlcnZlcnMvc2xhcGQvbG9n LmMgICAgICAgICAgICAgICAgICAgICAgfCAgOTkgKysrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQw MiBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2RpcnNydnRl c3RzL3Rlc3RzL3N1aXRlcy9sb2dnaW5nL2xvZ19mbHVzaF9yb3RhdGlvbl90ZXN0LnB5IGIvZGly c3J2dGVzdHMvdGVzdHMvc3VpdGVzL2xvZ2dpbmcvbG9nX2ZsdXNoX3JvdGF0aW9uX3Rlc3QucHkK LWluZGV4IGIzM2E2MjJlMS4uODY0YmE5YzVkIDEwMDY0NAotLS0tIGEvZGlyc3J2dGVzdHMvdGVz dHMvc3VpdGVzL2xvZ2dpbmcvbG9nX2ZsdXNoX3JvdGF0aW9uX3Rlc3QucHkKLSsrKyBiL2RpcnNy dnRlc3RzL3Rlc3RzL3N1aXRlcy9sb2dnaW5nL2xvZ19mbHVzaF9yb3RhdGlvbl90ZXN0LnB5Ci1A QCAtNiw2ICs2LDcgQEAKLSAjIFNlZSBMSUNFTlNFIGZvciBkZXRhaWxzLgotICMgLS0tIEVORCBD T1BZUklHSFQgQkxPQ0sgLS0tCi0gIwotK2ltcG9ydCBnbG9iCi0gaW1wb3J0IG9zCi0gaW1wb3J0 IGxvZ2dpbmcKLSBpbXBvcnQgdGltZQotQEAgLTEzLDE0ICsxNCwzNTEgQEAgaW1wb3J0IHB5dGVz dAotIGZyb20gbGliMzg5Ll9jb25zdGFudHMgaW1wb3J0IERFRkFVTFRfU1VGRklYLCBQV19ETQot IGZyb20gbGliMzg5LnRhc2tzIGltcG9ydCBJbXBvcnRUYXNrCi0gZnJvbSBsaWIzODkuaWRtLnVz ZXIgaW1wb3J0IFVzZXJBY2NvdW50cwotK2Zyb20gbGliMzg5LmlkbS5kb21haW4gaW1wb3J0IERv bWFpbgotK2Zyb20gbGliMzg5LmlkbS5kaXJlY3RvcnltYW5hZ2VyIGltcG9ydCBEaXJlY3RvcnlN YW5hZ2VyCi0gZnJvbSBsaWIzODkudG9wb2xvZ2llcyBpbXBvcnQgdG9wb2xvZ3lfc3QgYXMgdG9w bwotIAotIAotIGxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQotIAotIAotK2RlZiBy ZW1vdmVfcm90YXRlZF9hY2Nlc3NfbG9ncyhpbnN0KToKLSsgICAgIiIiCi0rICAgIFJlbW92ZSBh bGwgcm90YXRlZCBhY2Nlc3MgbG9nIGZpbGVzIHRvIHN0YXJ0IGZyZXNoIGZvciBlYWNoIHRlc3Qu Ci0rICAgIFRoaXMgcHJldmVudHMgbG9nIGZpbGVzIGZyb20gcHJldmlvdXMgdGVzdHMgYWZmZWN0 aW5nIGN1cnJlbnQgdGVzdCByZXN1bHRzLgotKyAgICAiIiIKLSsgICAgbG9nX2RpciA9IGluc3Qu Z2V0X2xvZ19kaXIoKQotKyAgICBwYXR0ZXJucyA9IFsKLSsgICAgICAgIGYne2xvZ19kaXJ9L2Fj Y2Vzcy4yKicsICAgICAgIyBVbmNvbXByZXNzZWQgcm90YXRlZCBsb2dzCi0rICAgICAgICBmJ3ts b2dfZGlyfS9hY2Nlc3MuKi5neicsICAgICMgQ29tcHJlc3NlZCByb3RhdGVkIGxvZ3MKLSsgICAg XQotKyAgICBmb3IgcGF0dGVybiBpbiBwYXR0ZXJuczoKLSsgICAgICAgIGZvciBsb2dfZmlsZSBp biBnbG9iLmdsb2IocGF0dGVybik6Ci0rICAgICAgICAgICAgdHJ5OgotKyAgICAgICAgICAgICAg ICBvcy5yZW1vdmUobG9nX2ZpbGUpCi0rICAgICAgICAgICAgICAgIGxvZy5pbmZvKGYiUmVtb3Zl ZCBvbGQgbG9nIGZpbGU6IHtsb2dfZmlsZX0iKQotKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9y IGFzIGU6Ci0rICAgICAgICAgICAgICAgIGxvZy53YXJuaW5nKGYiQ291bGQgbm90IHJlbW92ZSB7 bG9nX2ZpbGV9OiB7ZX0iKQotKwotKwotK2RlZiByZXNldF9hY2Nlc3NfbG9nX2NvbmZpZyhpbnN0 KToKLSsgICAgIiIiCi0rICAgIFJlc2V0IGFjY2VzcyBsb2cgY29uZmlndXJhdGlvbiB0byBkZWZh dWx0IHZhbHVlcy4KLSsgICAgIiIiCi0rICAgIGluc3QuY29uZmlnLnNldCgnbnNzbGFwZC1hY2Nl c3Nsb2ctY29tcHJlc3MnLCAnb2ZmJykKLSsgICAgaW5zdC5jb25maWcuc2V0KCduc3NsYXBkLWFj Y2Vzc2xvZy1tYXhsb2dzaXplJywgJzEwMCcpCi0rICAgIGluc3QuY29uZmlnLnNldCgnbnNzbGFw ZC1hY2Nlc3Nsb2ctbWF4bG9nc3BlcmRpcicsICcxMCcpCi0rICAgIGluc3QuY29uZmlnLnNldCgn bnNzbGFwZC1hY2Nlc3Nsb2ctbG9ncm90YXRpb25zeW5jLWVuYWJsZWQnLCAnb2ZmJykKLSsgICAg aW5zdC5jb25maWcuc2V0KCduc3NsYXBkLWFjY2Vzc2xvZy1sb2didWZmZXJpbmcnLCAnb24nKQot KyAgICBpbnN0LmNvbmZpZy5zZXQoJ25zc2xhcGQtYWNjZXNzbG9nLWxvZ2V4cGlyYXRpb250aW1l JywgJy0xJykKLSsgICAgaW5zdC5jb25maWcuc2V0KCduc3NsYXBkLWFjY2Vzc2xvZy1sb2dtaW5m cmVlZGlza3NwYWNlJywgJzUnKQotKwotKwotK2RlZiBnZW5lcmF0ZV9oZWF2eV9sb2FkKGluc3Qs IHN1ZmZpeCwgaXRlcmF0aW9ucz01MCk6Ci0rICAgICIiIgotKyAgICBHZW5lcmF0ZSBoZWF2eSBM REFQIGxvYWQgdG8gZmlsbCBhY2Nlc3MgbG9nIHF1aWNrbHkuCi0rICAgIFBlcmZvcm1zIG11bHRp cGxlIG9wZXJhdGlvbnM6IHNlYXJjaGVzLCBtb2RpZmllcywgYmluZHMgdG8gcG9wdWxhdGUgbG9n cy4KLSsgICAgIiIiCi0rICAgIGZvciBpIGluIHJhbmdlKGl0ZXJhdGlvbnMpOgotKyAgICAgICAg c3VmZml4LnJlcGxhY2UoJ2Rlc2NyaXB0aW9uJywgZidpdGVyYXRpb25fe2l9JykKLSsgICAgICAg IHN1ZmZpeC5nZXRfYXR0cl92YWwoJ2Rlc2NyaXB0aW9uJykKLSsKLSsKLStkZWYgY291bnRfYWNj ZXNzX2xvZ3MobG9nX2RpciwgY29tcHJlc3NlZF9vbmx5PUZhbHNlKToKLSsgICAgIiIiCi0rICAg IENvdW50IGFjY2VzcyBsb2cgZmlsZXMgaW4gdGhlIGxvZyBkaXJlY3RvcnkuCi0rICAgIFJldHVy bnMgY291bnQgb2Ygcm90YXRlZCBhY2Nlc3MgbG9ncyAobm90IGluY2x1ZGluZyB0aGUgYWN0aXZl ICdhY2Nlc3MnIGZpbGUpLgotKyAgICAiIiIKLSsgICAgaWYgY29tcHJlc3NlZF9vbmx5OgotKyAg ICAgICAgcGF0dGVybiA9IGYne2xvZ19kaXJ9L2FjY2Vzcy4qLmd6JwotKyAgICBlbHNlOgotKyAg ICAgICAgcGF0dGVybiA9IGYne2xvZ19kaXJ9L2FjY2Vzcy4yKicKLSsgICAgbG9nX2ZpbGVzID0g Z2xvYi5nbG9iKHBhdHRlcm4pCi0rICAgIHJldHVybiBsZW4obG9nX2ZpbGVzKQotKwotKwotK2Rl ZiB0ZXN0X2xvZ19waWxldXBfd2l0aF9jb21wcmVzc2lvbih0b3BvKToKLSsgICAgIiIiVGVzdCB0 aGF0IGxvZyByb3RhdGlvbiBwcm9wZXJseSBkZWxldGVzIG9sZCBsb2dzIHdoZW4gY29tcHJlc3Np b24gaXMgZW5hYmxlZC4KLSsKLSsgICAgOmlkOiBmYTFiZmNlOC1iNmQzLTQ1MjAtYTBhOC1iZWFk MTRmYTU4MzgKLSsgICAgOnNldHVwOiBTdGFuZGFsb25lIEluc3RhbmNlCi0rICAgIDpzdGVwczoK LSsgICAgICAgIDEuIENsZWFuIHVwIGV4aXN0aW5nIHJvdGF0ZWQgbG9ncyBhbmQgcmVzZXQgY29u ZmlndXJhdGlvbgotKyAgICAgICAgMi4gRW5hYmxlIGFjY2VzcyBsb2cgY29tcHJlc3Npb24KLSsg ICAgICAgIDMuIFNldCBzdHJpY3QgbG9nIGxpbWl0cyAoc21hbGwgbWF4bG9nc3BlcmRpcikKLSsg ICAgICAgIDQuIERpc2FibGUgbG9nIGV4cGlyYXRpb24gdG8gdGVzdCBjb3VudC1iYXNlZCBkZWxl dGlvbgotKyAgICAgICAgNS4gR2VuZXJhdGUgaGVhdnkgbG9hZCB0byBjcmVhdGUgbWFueSBsb2cg cm90YXRpb25zCi0rICAgICAgICA2LiBWZXJpZnkgbG9nIGNvdW50IGRvZXMgbm90IGV4Y2VlZCBt YXhsb2dzcGVyZGlyIGxpbWl0Ci0rICAgIDpleHBlY3RlZHJlc3VsdHM6Ci0rICAgICAgICAxLiBT dWNjZXNzCi0rICAgICAgICAyLiBTdWNjZXNzCi0rICAgICAgICAzLiBTdWNjZXNzCi0rICAgICAg ICA0LiBTdWNjZXNzCi0rICAgICAgICA1LiBTdWNjZXNzCi0rICAgICAgICA2LiBMb2cgY291bnQg c2hvdWxkIGJlIGF0IG9yIGJlbG93IG1heGxvZ3NwZXJkaXIgKyBzbWFsbCBidWZmZXIKLSsgICAg IiIiCi0rCi0rICAgIGluc3QgPSB0b3BvLnN0YW5kYWxvbmUKLSsgICAgc3VmZml4ID0gRG9tYWlu KGluc3QsIERFRkFVTFRfU1VGRklYKQotKyAgICBsb2dfZGlyID0gaW5zdC5nZXRfbG9nX2Rpcigp Ci0rCi0rICAgICMgQ2xlYW4gdXAgYmVmb3JlIHRlc3QKLSsgICAgcmVtb3ZlX3JvdGF0ZWRfYWNj ZXNzX2xvZ3MoaW5zdCkKLSsgICAgcmVzZXRfYWNjZXNzX2xvZ19jb25maWcoaW5zdCkKLSsgICAg aW5zdC5yZXN0YXJ0KCkKLSsKLSsgICAgbWF4X2xvZ3MgPSA1Ci0rICAgIGluc3QuY29uZmlnLnNl dCgnbnNzbGFwZC1hY2Nlc3Nsb2ctY29tcHJlc3MnLCAnb24nKQotKyAgICBpbnN0LmNvbmZpZy5z ZXQoJ25zc2xhcGQtYWNjZXNzbG9nLW1heGxvZ3NwZXJkaXInLCBzdHIobWF4X2xvZ3MpKQotKyAg ICBpbnN0LmNvbmZpZy5zZXQoJ25zc2xhcGQtYWNjZXNzbG9nLW1heGxvZ3NpemUnLCAnMScpICAj IDFNQiB0byB0cmlnZ2VyIHJvdGF0aW9uCi0rICAgIGluc3QuY29uZmlnLnNldCgnbnNzbGFwZC1h Y2Nlc3Nsb2ctbG9ncm90YXRpb25zeW5jLWVuYWJsZWQnLCAnb2ZmJykKLSsgICAgaW5zdC5jb25m aWcuc2V0KCduc3NsYXBkLWFjY2Vzc2xvZy1sb2didWZmZXJpbmcnLCAnb2ZmJykKLSsKLSsgICAg aW5zdC5jb25maWcuc2V0KCduc3NsYXBkLWFjY2Vzc2xvZy1sb2dleHBpcmF0aW9udGltZScsICct MScpCi0rCi0rICAgIGluc3QuY29uZmlnLnNldCgnbnNzbGFwZC1hY2Nlc3Nsb2ctbG9nbWluZnJl ZWRpc2tzcGFjZScsICc1JykKLSsKLSsgICAgaW5zdC5yZXN0YXJ0KCkKLSsgICAgdGltZS5zbGVl cCgyKQotKwotKyAgICB0YXJnZXRfbG9ncyA9IG1heF9sb2dzICogMwotKyAgICBmb3IgaSBpbiBy YW5nZSh0YXJnZXRfbG9ncyk6Ci0rICAgICAgICBsb2cuaW5mbyhmIkdlbmVyYXRpbmcgbG9hZCBm b3IgbG9nIHJvdGF0aW9uIHtpKzF9L3t0YXJnZXRfbG9nc30iKQotKyAgICAgICAgZ2VuZXJhdGVf aGVhdnlfbG9hZChpbnN0LCBzdWZmaXgsIGl0ZXJhdGlvbnM9MTUwKQotKyAgICAgICAgdGltZS5z bGVlcCgxKSAgIyBXYWl0IGZvciByb3RhdGlvbgotKwotKyAgICB0aW1lLnNsZWVwKDMpCi0rCi0r ICAgIGxvZ3Nfb25fZGlzayA9IGNvdW50X2FjY2Vzc19sb2dzKGxvZ19kaXIpCi0rICAgIGxvZy5p bmZvKGYiQ29uZmlndXJlZCBtYXhsb2dzcGVyZGlyOiB7bWF4X2xvZ3N9IikKLSsgICAgbG9nLmlu Zm8oZiJBY3R1YWwgcm90YXRlZCBsb2dzIG9uIGRpc2s6IHtsb2dzX29uX2Rpc2t9IikKLSsKLSsg ICAgYWxsX2FjY2Vzc19sb2dzID0gZ2xvYi5nbG9iKGYne2xvZ19kaXJ9L2FjY2VzcyonKQotKyAg ICBsb2cuaW5mbyhmIkFsbCBhY2Nlc3MgbG9nIGZpbGVzOiB7YWxsX2FjY2Vzc19sb2dzfSIpCi0r Ci0rICAgIG1heF9hbGxvd2VkID0gbWF4X2xvZ3MgKyAyCi0rICAgIGFzc2VydCBsb2dzX29uX2Rp c2sgPD0gbWF4X2FsbG93ZWQsICgKLSsgICAgICAgIGYiTG9nIHJvdGF0aW9uIGZhaWxlZCB0byBk ZWxldGUgb2xkIGZpbGVzISAiCi0rICAgICAgICBmIkV4cGVjdGVkIGF0IG1vc3Qge21heF9hbGxv d2VkfSByb3RhdGVkIGxvZ3MgKG1heGxvZ3NwZXJkaXI9e21heF9sb2dzfSArIDIgYnVmZmVyKSwg IgotKyAgICAgICAgZiJidXQgZm91bmQge2xvZ3Nfb25fZGlza30uIFRoZSBzZXJ2ZXIgaGFzIGxv c3QgdHJhY2sgb2YgdGhlIGZpbGUgbGlzdC4iCi0rICAgICkKLSsKLSsKLStAcHl0ZXN0Lm1hcmsu cGFyYW1ldHJpemUoImNvbXByZXNzX2VuYWJsZWQiLCBbIm9uIiwgIm9mZiJdKQotK2RlZiB0ZXN0 X2FjY2Vzc2xvZ19saXN0X21pc21hdGNoKHRvcG8sIGNvbXByZXNzX2VuYWJsZWQpOgotKyAgICAi IiJUZXN0IHRoYXQgbnNzbGFwZC1hY2Nlc3Nsb2ctbGlzdCBzdGF5cyBzeW5jaHJvbml6ZWQgd2l0 aCBhY3R1YWwgbG9nIGZpbGVzLgotKwotKyAgICA6aWQ6IDBhOGE0NmE2LWNhZTctNDNiZC04YjY0 LTVlMzQ4MTQ4MGNkMwotKyAgICA6cGFyYW1ldHJpemVkOiB5ZXMKLSsgICAgOnNldHVwOiBTdGFu ZGFsb25lIEluc3RhbmNlCi0rICAgIDpzdGVwczoKLSsgICAgICAgIDEuIENsZWFuIHVwIGV4aXN0 aW5nIHJvdGF0ZWQgbG9ncyBhbmQgcmVzZXQgY29uZmlndXJhdGlvbgotKyAgICAgICAgMi4gQ29u ZmlndXJlIGxvZyByb3RhdGlvbiB3aXRoIGNvbXByZXNzaW9uIGVuYWJsZWQvZGlzYWJsZWQKLSsg ICAgICAgIDMuIEdlbmVyYXRlIGFjdGl2aXR5IHRvIHRyaWdnZXIgbXVsdGlwbGUgcm90YXRpb25z Ci0rICAgICAgICA0LiBHZXQgdGhlIG5zc2xhcGQtYWNjZXNzbG9nLWxpc3QgYXR0cmlidXRlCi0r ICAgICAgICA1LiBDb21wYXJlIHdpdGggYWN0dWFsIGZpbGVzIG9uIGRpc2sKLSsgICAgICAgIDYu IFZlcmlmeSB0aGV5IG1hdGNoIChhY2NvdW50aW5nIGZvciAuZ3ogZXh0ZW5zaW9uIHdoZW4gZW5h YmxlZCkKLSsgICAgOmV4cGVjdGVkcmVzdWx0czoKLSsgICAgICAgIDEuIFN1Y2Nlc3MKLSsgICAg ICAgIDIuIFN1Y2Nlc3MKLSsgICAgICAgIDMuIFN1Y2Nlc3MKLSsgICAgICAgIDQuIFN1Y2Nlc3MK LSsgICAgICAgIDUuIFN1Y2Nlc3MKLSsgICAgICAgIDYuIFRoZSBsaXN0IGF0dHJpYnV0ZSBzaG91 bGQgbWF0Y2ggYWN0dWFsIGZpbGVzIG9uIGRpc2sKLSsgICAgIiIiCi0rCi0rICAgIGluc3QgPSB0 b3BvLnN0YW5kYWxvbmUKLSsgICAgc3VmZml4ID0gRG9tYWluKGluc3QsIERFRkFVTFRfU1VGRklY KQotKyAgICBsb2dfZGlyID0gaW5zdC5nZXRfbG9nX2RpcigpCi0rICAgIGNvbXByZXNzaW9uX29u ID0gY29tcHJlc3NfZW5hYmxlZCA9PSAib24iCi0rCi0rICAgICMgQ2xlYW4gdXAgYmVmb3JlIHRl c3QKLSsgICAgcmVtb3ZlX3JvdGF0ZWRfYWNjZXNzX2xvZ3MoaW5zdCkKLSsgICAgcmVzZXRfYWNj ZXNzX2xvZ19jb25maWcoaW5zdCkKLSsgICAgaW5zdC5yZXN0YXJ0KCkKLSsKLSsgICAgaW5zdC5j b25maWcuc2V0KCduc3NsYXBkLWFjY2Vzc2xvZy1jb21wcmVzcycsIGNvbXByZXNzX2VuYWJsZWQp Ci0rICAgIGluc3QuY29uZmlnLnNldCgnbnNzbGFwZC1hY2Nlc3Nsb2ctbWF4bG9nc2l6ZScsICcx JykKLSsgICAgaW5zdC5jb25maWcuc2V0KCduc3NsYXBkLWFjY2Vzc2xvZy1tYXhsb2dzcGVyZGly JywgJzEwJykKLSsgICAgaW5zdC5jb25maWcuc2V0KCduc3NsYXBkLWFjY2Vzc2xvZy1sb2dyb3Rh dGlvbnN5bmMtZW5hYmxlZCcsICdvZmYnKQotKyAgICBpbnN0LmNvbmZpZy5zZXQoJ25zc2xhcGQt YWNjZXNzbG9nLWxvZ2J1ZmZlcmluZycsICdvZmYnKQotKyAgICBpbnN0LmNvbmZpZy5zZXQoJ25z c2xhcGQtYWNjZXNzbG9nLWxvZ2V4cGlyYXRpb250aW1lJywgJy0xJykKLSsKLSsgICAgaW5zdC5y ZXN0YXJ0KCkKLSsgICAgdGltZS5zbGVlcCgyKQotKwotKyAgICBmb3IgaSBpbiByYW5nZSgxNSk6 Ci0rICAgICAgICBzdWZmaXhfbm90ZSA9ICIobm8gY29tcHJlc3Npb24pIiBpZiBub3QgY29tcHJl c3Npb25fb24gZWxzZSAiIgotKyAgICAgICAgbG9nLmluZm8oZiJHZW5lcmF0aW5nIGxvYWQgZm9y IHJvdGF0aW9uIHtpKzF9LzE1IHtzdWZmaXhfbm90ZX0iKQotKyAgICAgICAgZ2VuZXJhdGVfaGVh dnlfbG9hZChpbnN0LCBzdWZmaXgsIGl0ZXJhdGlvbnM9MTUwKQotKyAgICAgICAgdGltZS5zbGVl cCgxKQotKwotKyAgICB0aW1lLnNsZWVwKDMpCi0rCi0rICAgIGFjY2Vzc2xvZ19saXN0ID0gaW5z dC5jb25maWcuZ2V0X2F0dHJfdmFsc191dGY4KCduc3NsYXBkLWFjY2Vzc2xvZy1saXN0JykKLSsg ICAgbG9nLmluZm8oZiJuc3NsYXBkLWFjY2Vzc2xvZy1saXN0IGVudHJpZXMgKGNvbXByZXNzPXtj b21wcmVzc19lbmFibGVkfSk6IHtsZW4oYWNjZXNzbG9nX2xpc3QpfSIpCi0rICAgIGxvZy5pbmZv KGYibnNzbGFwZC1hY2Nlc3Nsb2ctbGlzdCAoY29tcHJlc3M9e2NvbXByZXNzX2VuYWJsZWR9KTog e2FjY2Vzc2xvZ19saXN0fSIpCi0rCi0rICAgIGRpc2tfZmlsZXMgPSBnbG9iLmdsb2IoZid7bG9n X2Rpcn0vYWNjZXNzLjIqJykKLSsgICAgbG9nLmluZm8oZiJBY3R1YWwgZmlsZXMgb24gZGlzayAo Y29tcHJlc3M9e2NvbXByZXNzX2VuYWJsZWR9KToge2xlbihkaXNrX2ZpbGVzKX0iKQotKyAgICBs b2cuaW5mbyhmIkRpc2sgZmlsZXMgKGNvbXByZXNzPXtjb21wcmVzc19lbmFibGVkfSk6IHtkaXNr X2ZpbGVzfSIpCi0rCi0rICAgIGRpc2tfZmlsZXNfZm9yX2NvbXBhcmUgPSBzZXQoKQotKyAgICBm b3IgZnBhdGggaW4gZGlza19maWxlczoKLSsgICAgICAgIGlmIGNvbXByZXNzaW9uX29uIGFuZCBm cGF0aC5lbmRzd2l0aCgnLmd6Jyk6Ci0rICAgICAgICAgICAgZGlza19maWxlc19mb3JfY29tcGFy ZS5hZGQoZnBhdGhbOi0zXSkKLSsgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgZGlza19maWxl c19mb3JfY29tcGFyZS5hZGQoZnBhdGgpCi0rCi0rICAgIGxpc3RfZmlsZXNfc2V0ID0gc2V0KGFj Y2Vzc2xvZ19saXN0KQotKyAgICBtaXNzaW5nX2Zyb21fZGlzayA9IGxpc3RfZmlsZXNfc2V0IC0g ZGlza19maWxlc19mb3JfY29tcGFyZQotKyAgICBleHRyYV9vbl9kaXNrID0gZGlza19maWxlc19m b3JfY29tcGFyZSAtIGxpc3RfZmlsZXNfc2V0Ci0rCi0rICAgIGlmIG1pc3NpbmdfZnJvbV9kaXNr OgotKyAgICAgICAgbG9nLmVycm9yKAotKyAgICAgICAgICAgIGYiW2NvbXByZXNzPXtjb21wcmVz c19lbmFibGVkfV0gRmlsZXMgaW4gbGlzdCBidXQgTk9UIG9uIGRpc2s6IHttaXNzaW5nX2Zyb21f ZGlza30iCi0rICAgICAgICApCi0rICAgIGlmIGV4dHJhX29uX2Rpc2s6Ci0rICAgICAgICBsb2cu d2FybmluZygKLSsgICAgICAgICAgICBmIltjb21wcmVzcz17Y29tcHJlc3NfZW5hYmxlZH1dIEZp bGVzIG9uIGRpc2sgYnV0IE5PVCBpbiBsaXN0OiB7ZXh0cmFfb25fZGlza30iCi0rICAgICAgICAp Ci0rCi0rICAgIGFzc2VydCBub3QgbWlzc2luZ19mcm9tX2Rpc2ssICgKLSsgICAgICAgIGYibnNz bGFwZC1hY2Nlc3Nsb2ctbGlzdCBtaXNtYXRjaCAoY29tcHJlc3M9e2NvbXByZXNzX2VuYWJsZWR9 KSEgIgotKyAgICAgICAgZiJGaWxlcyBsaXN0ZWQgYnV0IG1pc3NpbmcgZnJvbSBkaXNrOiB7bWlz c2luZ19mcm9tX2Rpc2t9LiAiCi0rICAgICAgICBmIlRoaXMgaW5kaWNhdGVzIHRoZSBzZXJ2ZXIn cyBpbnRlcm5hbCBsaXN0IGlzIG91dCBvZiBzeW5jIHdpdGggYWN0dWFsIGZpbGVzLiIKLSsgICAg KQotKwotKyAgICBpZiBsZW4oZXh0cmFfb25fZGlzaykgPiAyOgotKyAgICAgICAgbG9nLndhcm5p bmcoCi0rICAgICAgICAgICAgZiJQb3RlbnRpYWwgbG9nIHRyYWNraW5nIGlzc3VlIChjb21wcmVz cz17Y29tcHJlc3NfZW5hYmxlZH0pOiAiCi0rICAgICAgICAgICAgZiJ7bGVuKGV4dHJhX29uX2Rp c2spfSBmaWxlcyBvbiBkaXNrIGFyZSBub3QgdHJhY2tlZCBpbiB0aGUgYWNjZXNzbG9nLWxpc3Q6 ICIKLSsgICAgICAgICAgICBmIntleHRyYV9vbl9kaXNrfSIKLSsgICAgICAgICkKLSsKLSsKLStk ZWYgdGVzdF9hY2Nlc3Nsb2dfbGlzdF9taXhlZF9jb21wcmVzc2lvbih0b3BvKToKLSsgICAgIiIi VGVzdCB0aGF0IG5zc2xhcGQtYWNjZXNzbG9nLWxpc3QgY29ycmVjdGx5IHRyYWNrcyBib3RoIGNv bXByZXNzZWQgYW5kIHVuY29tcHJlc3NlZCBsb2dzLgotKwotKyAgICA6aWQ6IDExYjA4OGNkLTIz YmUtNDA3ZC1hZDE2LTRjZTJlMTJkYTA5ZQotKyAgICA6c2V0dXA6IFN0YW5kYWxvbmUgSW5zdGFu Y2UKLSsgICAgOnN0ZXBzOgotKyAgICAgICAgMS4gQ2xlYW4gdXAgZXhpc3Rpbmcgcm90YXRlZCBs b2dzIGFuZCByZXNldCBjb25maWd1cmF0aW9uCi0rICAgICAgICAyLiBDcmVhdGUgcm90YXRlZCBs b2dzIHdpdGggY29tcHJlc3Npb24gT0ZGCi0rICAgICAgICAzLiBFbmFibGUgY29tcHJlc3Npb24g YW5kIGNyZWF0ZSBtb3JlIHJvdGF0ZWQgbG9ncwotKyAgICAgICAgNC4gR2V0IHRoZSBuc3NsYXBk LWFjY2Vzc2xvZy1saXN0IGF0dHJpYnV0ZQotKyAgICAgICAgNS4gQ29tcGFyZSB3aXRoIGFjdHVh bCBmaWxlcyBvbiBkaXNrCi0rICAgICAgICA2LiBWZXJpZnkgYWxsIGZpbGVzIGFyZSBjb3JyZWN0 bHkgdHJhY2tlZCAodW5jb21wcmVzc2VkIGFuZCBjb21wcmVzc2VkKQotKyAgICA6ZXhwZWN0ZWRy ZXN1bHRzOgotKyAgICAgICAgMS4gU3VjY2VzcwotKyAgICAgICAgMi4gU3VjY2VzcyAtIHVuY29t cHJlc3NlZCByb3RhdGVkIGxvZ3MgY3JlYXRlZAotKyAgICAgICAgMy4gU3VjY2VzcyAtIGNvbXBy ZXNzZWQgcm90YXRlZCBsb2dzIGNyZWF0ZWQKLSsgICAgICAgIDQuIFN1Y2Nlc3MKLSsgICAgICAg IDUuIFN1Y2Nlc3MKLSsgICAgICAgIDYuIFRoZSBsaXN0IHNob3VsZCBjb250YWluIGJhc2UgZmls ZW5hbWVzICh3aXRob3V0IC5neikgdGhhdAotKyAgICAgICAgICAgY29ycmVzcG9uZCB0byBmaWxl cyBvbiBkaXNrIChlaXRoZXIgYXMtaXMgb3Igd2l0aCAuZ3ogc3VmZml4KQotKyAgICAiIiIKLSsK LSsgICAgaW5zdCA9IHRvcG8uc3RhbmRhbG9uZQotKyAgICBzdWZmaXggPSBEb21haW4oaW5zdCwg REVGQVVMVF9TVUZGSVgpCi0rICAgIGxvZ19kaXIgPSBpbnN0LmdldF9sb2dfZGlyKCkKLSsKLSsg ICAgIyBDbGVhbiB1cCBiZWZvcmUgdGVzdAotKyAgICByZW1vdmVfcm90YXRlZF9hY2Nlc3NfbG9n cyhpbnN0KQotKyAgICByZXNldF9hY2Nlc3NfbG9nX2NvbmZpZyhpbnN0KQotKyAgICBpbnN0LnJl c3RhcnQoKQotKwotKyAgICBpbnN0LmNvbmZpZy5zZXQoJ25zc2xhcGQtYWNjZXNzbG9nLWNvbXBy ZXNzJywgJ29mZicpCi0rICAgIGluc3QuY29uZmlnLnNldCgnbnNzbGFwZC1hY2Nlc3Nsb2ctbWF4 bG9nc2l6ZScsICcxJykKLSsgICAgaW5zdC5jb25maWcuc2V0KCduc3NsYXBkLWFjY2Vzc2xvZy1t YXhsb2dzcGVyZGlyJywgJzIwJykKLSsgICAgaW5zdC5jb25maWcuc2V0KCduc3NsYXBkLWFjY2Vz c2xvZy1sb2dyb3RhdGlvbnN5bmMtZW5hYmxlZCcsICdvZmYnKQotKyAgICBpbnN0LmNvbmZpZy5z ZXQoJ25zc2xhcGQtYWNjZXNzbG9nLWxvZ2J1ZmZlcmluZycsICdvZmYnKQotKyAgICBpbnN0LmNv bmZpZy5zZXQoJ25zc2xhcGQtYWNjZXNzbG9nLWxvZ2V4cGlyYXRpb250aW1lJywgJy0xJykKLSsK LSsgICAgaW5zdC5yZXN0YXJ0KCkKLSsgICAgdGltZS5zbGVlcCgyKQotKwotKyAgICBmb3IgaSBp biByYW5nZSgxNSk6Ci0rICAgICAgICBsb2cuaW5mbyhmIkdlbmVyYXRpbmcgbG9hZCBmb3IgdW5j b21wcmVzc2VkIHJvdGF0aW9uIHtpKzF9LzE1IikKLSsgICAgICAgIGdlbmVyYXRlX2hlYXZ5X2xv YWQoaW5zdCwgc3VmZml4LCBpdGVyYXRpb25zPTE1MCkKLSsgICAgICAgIHRpbWUuc2xlZXAoMSkK LSsKLSsgICAgdGltZS5zbGVlcCgyKQotKwotKyAgICAjIENoZWNrIHdoYXQgd2UgaGF2ZSBzbyBm YXIKLSsgICAgdW5jb21wcmVzc2VkX2ZpbGVzID0gZ2xvYi5nbG9iKGYne2xvZ19kaXJ9L2FjY2Vz cy4yKicpCi0rICAgIGxvZy5pbmZvKGYiRmlsZXMgb24gZGlzayBhZnRlciB1bmNvbXByZXNzZWQg cGhhc2U6IHt1bmNvbXByZXNzZWRfZmlsZXN9IikKLSsKLSsgICAgaW5zdC5jb25maWcuc2V0KCdu c3NsYXBkLWFjY2Vzc2xvZy1jb21wcmVzcycsICdvbicpCi0rICAgIGluc3QucmVzdGFydCgpCi0r ICAgIHRpbWUuc2xlZXAoMikKLSsKLSsgICAgZm9yIGkgaW4gcmFuZ2UoMTUpOgotKyAgICAgICAg bG9nLmluZm8oZiJHZW5lcmF0aW5nIGxvYWQgZm9yIGNvbXByZXNzZWQgcm90YXRpb24ge2krMX0v MTUiKQotKyAgICAgICAgZ2VuZXJhdGVfaGVhdnlfbG9hZChpbnN0LCBzdWZmaXgsIGl0ZXJhdGlv bnM9MTUwKQotKyAgICAgICAgdGltZS5zbGVlcCgxKQotKwotKyAgICB0aW1lLnNsZWVwKDMpCi0r Ci0rICAgIGFjY2Vzc2xvZ19saXN0ID0gaW5zdC5jb25maWcuZ2V0X2F0dHJfdmFsc191dGY4KCdu c3NsYXBkLWFjY2Vzc2xvZy1saXN0JykKLSsKLSsgICAgZGlza19maWxlcyA9IGdsb2IuZ2xvYihm J3tsb2dfZGlyfS9hY2Nlc3MuMionKQotKwotKyAgICBsb2cuaW5mbyhmIm5zc2xhcGQtYWNjZXNz bG9nLWxpc3QgZW50cmllczoge2xlbihhY2Nlc3Nsb2dfbGlzdCl9IikKLSsgICAgbG9nLmluZm8o ZiJuc3NsYXBkLWFjY2Vzc2xvZy1saXN0OiB7c29ydGVkKGFjY2Vzc2xvZ19saXN0KX0iKQotKyAg ICBsb2cuaW5mbyhmIkFjdHVhbCBmaWxlcyBvbiBkaXNrOiB7bGVuKGRpc2tfZmlsZXMpfSIpCi0r ICAgIGxvZy5pbmZvKGYiRGlzayBmaWxlczoge3NvcnRlZChkaXNrX2ZpbGVzKX0iKQotKwotKyAg ICBjb21wcmVzc2VkX29uX2Rpc2sgPSBbZiBmb3IgZiBpbiBkaXNrX2ZpbGVzIGlmIGYuZW5kc3dp dGgoJy5neicpXQotKyAgICB1bmNvbXByZXNzZWRfb25fZGlzayA9IFtmIGZvciBmIGluIGRpc2tf ZmlsZXMgaWYgbm90IGYuZW5kc3dpdGgoJy5neicpXQotKyAgICBsb2cuaW5mbyhmIkNvbXByZXNz ZWQgZmlsZXMgb24gZGlzazoge2NvbXByZXNzZWRfb25fZGlza30iKQotKyAgICBsb2cuaW5mbyhm IlVuY29tcHJlc3NlZCBmaWxlcyBvbiBkaXNrOiB7dW5jb21wcmVzc2VkX29uX2Rpc2t9IikKLSsK LSsgICAgbGlzdF9maWxlc19zZXQgPSBzZXQoYWNjZXNzbG9nX2xpc3QpCi0rCi0rICAgIGRpc2tf ZmlsZXNfYmFzZSA9IHNldCgpCi0rICAgIGZvciBmcGF0aCBpbiBkaXNrX2ZpbGVzOgotKyAgICAg ICAgaWYgZnBhdGguZW5kc3dpdGgoJy5neicpOgotKyAgICAgICAgICAgIGRpc2tfZmlsZXNfYmFz ZS5hZGQoZnBhdGhbOi0zXSkgICMgU3RyaXAgLmd6Ci0rICAgICAgICBlbHNlOgotKyAgICAgICAg ICAgIGRpc2tfZmlsZXNfYmFzZS5hZGQoZnBhdGgpCi0rCi0rICAgIG1pc3NpbmdfZnJvbV9kaXNr ID0gbGlzdF9maWxlc19zZXQgLSBkaXNrX2ZpbGVzX2Jhc2UKLSsKLSsgICAgZXh0cmFfb25fZGlz ayA9IGRpc2tfZmlsZXNfYmFzZSAtIGxpc3RfZmlsZXNfc2V0Ci0rCi0rICAgIGlmIG1pc3Npbmdf ZnJvbV9kaXNrOgotKyAgICAgICAgbG9nLmVycm9yKGYiRmlsZXMgaW4gbGlzdCBidXQgTk9UIG9u IGRpc2s6IHttaXNzaW5nX2Zyb21fZGlza30iKQotKyAgICBpZiBleHRyYV9vbl9kaXNrOgotKyAg ICAgICAgbG9nLndhcm5pbmcoZiJGaWxlcyBvbiBkaXNrIGJ1dCBOT1QgaW4gbGlzdDoge2V4dHJh X29uX2Rpc2t9IikKLSsKLSsgICAgYXNzZXJ0IG5vdCBtaXNzaW5nX2Zyb21fZGlzaywgKAotKyAg ICAgICAgZiJuc3NsYXBkLWFjY2Vzc2xvZy1saXN0IGNvbnRhaW5zIHN0YWxlIGVudHJpZXMhICIK LSsgICAgICAgIGYiRmlsZXMgaW4gbGlzdCBidXQgbm90IG9uIGRpc2sgKGFzIGJhc2Ugb3IgLmd6 KToge21pc3NpbmdfZnJvbV9kaXNrfSIKLSsgICAgKQotKwotKyAgICBmb3IgbGlzdF9maWxlIGlu IGFjY2Vzc2xvZ19saXN0OgotKyAgICAgICAgZXhpc3RzX3VuY29tcHJlc3NlZCA9IG9zLnBhdGgu ZXhpc3RzKGxpc3RfZmlsZSkKLSsgICAgICAgIGV4aXN0c19jb21wcmVzc2VkID0gb3MucGF0aC5l eGlzdHMobGlzdF9maWxlICsgJy5neicpCi0rICAgICAgICBhc3NlcnQgZXhpc3RzX3VuY29tcHJl c3NlZCBvciBleGlzdHNfY29tcHJlc3NlZCwgKAotKyAgICAgICAgICAgIGYiRmlsZSBpbiBhY2Nl c3Nsb2ctbGlzdCBkb2VzIG5vdCBleGlzdCBvbiBkaXNrOiB7bGlzdF9maWxlfSAiCi0rICAgICAg ICAgICAgZiIoY2hlY2tlZCBib3RoIHtsaXN0X2ZpbGV9IGFuZCB7bGlzdF9maWxlfS5neikiCi0r ICAgICAgICApCi0rICAgICAgICBpZiBleGlzdHNfY29tcHJlc3NlZCBhbmQgbm90IGV4aXN0c191 bmNvbXByZXNzZWQ6Ci0rICAgICAgICAgICAgbG9nLmluZm8oZiIgIHtsaXN0X2ZpbGV9IC0+IGV4 aXN0cyBhcyAuZ3ogKGNvbXByZXNzZWQpIikKLSsgICAgICAgIGVsaWYgZXhpc3RzX3VuY29tcHJl c3NlZDoKLSsgICAgICAgICAgICBsb2cuaW5mbyhmIiAge2xpc3RfZmlsZX0gLT4gZXhpc3RzICh1 bmNvbXByZXNzZWQpIikKLSsKLSsgICAgaWYgbGVuKGV4dHJhX29uX2Rpc2spID4gMToKLSsgICAg ICAgIGxvZy53YXJuaW5nKAotKyAgICAgICAgICAgIGYiU29tZSBmaWxlcyBvbiBkaXNrIGFyZSBu b3QgdHJhY2tlZCBpbiBhY2Nlc3Nsb2ctbGlzdDoge2V4dHJhX29uX2Rpc2t9IgotKyAgICAgICAg KQotKwotKyAgICBsb2cuaW5mbygiTWl4ZWQgY29tcHJlc3Npb24gdGVzdCBjb21wbGV0ZWQgc3Vj Y2Vzc2Z1bGx5IikKLSsKLSsKLSBkZWYgdGVzdF9sb2dfZmx1c2hfYW5kX3JvdGF0aW9uX2NyYXNo KHRvcG8pOgotLSAgICAiIiJNYWtlIHN1cmUgc2VydmVyIGRvZXMgbm90IGNyYXNoIHdoZW5pbmcg Zmx1c2hpbmcgYSBidWZmZXIgYW5kIHJvdGF0aW5nCi0rICAgICIiIk1ha2Ugc3VyZSBzZXJ2ZXIg ZG9lcyBub3QgY3Jhc2ggd2hlbiBmbHVzaGluZyBhIGJ1ZmZlciBhbmQgcm90YXRpbmcKLSAgICAg dGhlIGxvZyBhdCB0aGUgc2FtZSB0aW1lCi0gCi0gICAgIDppZDogZDRiMGFmMmYtNDhiMi00NWY1 LWFlOGItZjA2ZjY5MmMzMTMzCi1AQCAtMzYsNiArMzc0LDcgQEAgZGVmIHRlc3RfbG9nX2ZsdXNo X2FuZF9yb3RhdGlvbl9jcmFzaCh0b3BvKToKLSAgICAgICAgIDMuIFN1Y2Nlc3MKLSAgICAgICAg IDQuIFN1Y2Nlc3MKLSAgICAgIiIiCi0rICAgICMgTk9URTogVGhpcyB0ZXN0IGlzIHBsYWNlZCBs YXN0IGFzIGl0IG1heSBhZmZlY3QgdGhlIHN1ZmZpeCBzdGF0ZS4KLSAKLSAgICAgaW5zdCA9IHRv cG8uc3RhbmRhbG9uZQotIAotZGlmZiAtLWdpdCBhL2xkYXAvc2VydmVycy9zbGFwZC9sb2cuYyBi L2xkYXAvc2VydmVycy9zbGFwZC9sb2cuYwotaW5kZXggMjdiYjRiYzE1Li5lYTc0NGFjMWUgMTAw NjQ0Ci0tLS0gYS9sZGFwL3NlcnZlcnMvc2xhcGQvbG9nLmMKLSsrKyBiL2xkYXAvc2VydmVycy9z bGFwZC9sb2cuYwotQEAgLTEzNyw2ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCB2c2xhcGRfbG9nX2Vt ZXJnZW5jeV9lcnJvcihMT0dGRCBmcCwgY29uc3QgY2hhciAqbXNnLCBpbnQgbG9ja2VkKTsKLSBz dGF0aWMgaW50IGdldF9zeXNsb2dfbG9nbGV2ZWwoaW50IGxvZ2xldmVsKTsKLSBzdGF0aWMgdm9p ZCBsb2dfZXh0ZXJuYWxfbGlic19kZWJ1Z19vcGVubGRhcF9wcmludChjaGFyICpidWZmZXIpOwot IHN0YXRpYyBpbnQgbG9nX19maXhfcm90YXRpb25pbmZvZihjaGFyICpwYXRobmFtZSk7Ci0rc3Rh dGljIGludCBsb2dfX3ZhbGlkYXRlX3JvdGF0ZWRfbG9nbmFtZShjb25zdCBjaGFyICp0aW1lc3Rh bXBfc3RyLCBQUkJvb2wgKmlzX2NvbXByZXNzZWQpOwotIAotIHN0YXRpYyBpbnQKLSBnZXRfc3lz bG9nX2xvZ2xldmVsKGludCBsb2dsZXZlbCkKLUBAIC0zNzUsNyArMzc2LDcgQEAgZ19sb2dfaW5p dCgpCi0gICAgIGxvZ2luZm8ubG9nX3NlY3VyaXR5X2ZkZXMgPSBOVUxMOwotICAgICBsb2dpbmZv LmxvZ19zZWN1cml0eV9maWxlID0gTlVMTDsKLSAgICAgbG9naW5mby5sb2dfc2VjdXJpdHlpbmZv X2ZpbGUgPSBOVUxMOwotLSAgICBsb2dpbmZvLmxvZ19udW1vZl9hY2Nlc3NfbG9ncyA9IDE7Ci0r ICAgIGxvZ2luZm8ubG9nX251bW9mX3NlY3VyaXR5X2xvZ3MgPSAxOwotICAgICBsb2dpbmZvLmxv Z19zZWN1cml0eV9sb2djaGFpbiA9IE5VTEw7Ci0gICAgIGxvZ2luZm8ubG9nX3NlY3VyaXR5X2J1 ZmZlciA9IGxvZ19jcmVhdGVfYnVmZmVyKExPR19CVUZGRVJfTUFYU0laRSk7Ci0gICAgIGxvZ2lu Zm8ubG9nX3NlY3VyaXR5X2NvbXByZXNzID0gY2ZnLT5zZWN1cml0eWxvZ19jb21wcmVzczsKLUBA IC0zNDIyLDcgKzM0MjMsNyBAQCBsb2dfX29wZW5fYWNjZXNzbG9nZmlsZShpbnQgbG9nZmlsZV9z dGF0ZSwgaW50IGxvY2tlZCkKLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0gZWxz ZSBpZiAobG9naW5mby5sb2dfYWNjZXNzX2NvbXByZXNzKSB7Ci0gICAgICAgICAgICAgICAgIGlm IChjb21wcmVzc19sb2dfZmlsZShuZXdmaWxlLCBsb2dpbmZvLmxvZ19hY2Nlc3NfbW9kZSkgIT0g MCkgewotLSAgICAgICAgICAgICAgICAgICAgc2xhcGlfbG9nX2VycihTTEFQSV9MT0dfRVJSLCAi bG9nX19vcGVuX2F1ZGl0ZmFpbGxvZ2ZpbGUiLAotKyAgICAgICAgICAgICAgICAgICAgc2xhcGlf bG9nX2VycihTTEFQSV9MT0dfRVJSLCAibG9nX19vcGVuX2FjY2Vzc2xvZ2ZpbGUiLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGNvbXByZXNzIHJvdGF0ZWQgYWNjZXNz IGxvZyAoJXMpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdmaWxlKTsKLSAg ICAgICAgICAgICAgICAgfSBlbHNlIHsKLUBAIC00ODI1LDYgKzQ4MjYsNTAgQEAgbG9nX19kZWxl dGVfcm90YXRlZF9sb2dzKCkKLSAgICAgbG9naW5mby5sb2dfZXJyb3JfbG9nY2hhaW4gPSBOVUxM OwotIH0KLSAKLSsvKgotKyAqIGxvZ19fdmFsaWRhdGVfcm90YXRlZF9sb2duYW1lCi0rICoKLSsg KiBWYWxpZGF0ZXMgdGhhdCBhIGxvZyBmaWxlbmFtZSB0aW1lc3RhbXAgc3VmZml4IG1hdGNoZXMg dGhlIGV4cGVjdGVkIGZvcm1hdDoKLSsgKiBZWVlZTU1ERC1ISE1NU1MgKDE1IGNoYXJzKSBvciBZ WVlZTU1ERC1ISE1NU1MuZ3ogKDE4IGNoYXJzKSBmb3IgY29tcHJlc3NlZCBmaWxlcy4KLSsgKiBV c2VzIHJlZ2V4IHBhdHRlcm46IF5bMC05XXs4fS1bMC05XXs2fShcLmd6KT8kCi0rICoKLSsgKiBc cGFyYW0gdGltZXN0YW1wX3N0ciBUaGUgdGltZXN0YW1wIHBvcnRpb24gb2YgdGhlIGxvZyBmaWxl bmFtZSAoYWZ0ZXIgdGhlIGZpcnN0ICcuJykKLSsgKiBccGFyYW0gaXNfY29tcHJlc3NlZCBPdXRw dXQgcGFyYW1ldGVyIHNldCB0byBQUl9UUlVFIGlmIHRoZSBmaWxlIGhhcyAuZ3ogc3VmZml4Ci0r ICogXHJldHVybiAxIGlmIHZhbGlkLCAwIGlmIGludmFsaWQKLSsgKi8KLStzdGF0aWMgaW50Ci0r bG9nX192YWxpZGF0ZV9yb3RhdGVkX2xvZ25hbWUoY29uc3QgY2hhciAqdGltZXN0YW1wX3N0ciwg UFJCb29sICppc19jb21wcmVzc2VkKQotK3sKLSsgICAgU2xhcGlfUmVnZXggKnJlID0gTlVMTDsK LSsgICAgY2hhciAqcmVfZXJyb3IgPSBOVUxMOwotKyAgICBpbnQgcmMgPSAwOwotKwotKyAgICAv KiBNYXRjaCBZWVlZTU1ERC1ISE1NU1Mgd2l0aCBvcHRpb25hbCAuZ3ogc3VmZml4ICovCi0rICAg IHN0YXRpYyBjb25zdCBjaGFyICpwYXR0ZXJuID0gIl5bMC05XXs4fS1bMC05XXs2fShcXC5neik/ JCI7Ci0rCi0rICAgICppc19jb21wcmVzc2VkID0gUFJfRkFMU0U7Ci0rCi0rICAgIHJlID0gc2xh cGlfcmVfY29tcChwYXR0ZXJuLCAmcmVfZXJyb3IpOwotKyAgICBpZiAocmUgPT0gTlVMTCkgewot KyAgICAgICAgc2xhcGlfbG9nX2VycihTTEFQSV9MT0dfRVJSLCAibG9nX192YWxpZGF0ZV9yb3Rh dGVkX2xvZ25hbWUiLAotKyAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNvbXBpbGUg cmVnZXg6ICVzXG4iLCByZV9lcnJvciA/IHJlX2Vycm9yIDogInVua25vd24gZXJyb3IiKTsKLSsg ICAgICAgIHNsYXBpX2NoX2ZyZWVfc3RyaW5nKCZyZV9lcnJvcik7Ci0rICAgICAgICByZXR1cm4g MDsKLSsgICAgfQotKwotKyAgICByYyA9IHNsYXBpX3JlX2V4ZWNfbnQocmUsIHRpbWVzdGFtcF9z dHIpOwotKyAgICBpZiAocmMgPT0gMSkgewotKyAgICAgICAgLyogQ2hlY2sgaWYgY29tcHJlc3Nl ZCBieSBsb29raW5nIGZvciAuZ3ogc3VmZml4ICovCi0rICAgICAgICBzaXplX3QgbGVuID0gc3Ry bGVuKHRpbWVzdGFtcF9zdHIpOwotKyAgICAgICAgaWYgKGxlbiA+PSAzICYmIHN0cmNtcCh0aW1l c3RhbXBfc3RyICsgbGVuIC0gMywgIi5neiIpID09IDApIHsKLSsgICAgICAgICAgICAqaXNfY29t cHJlc3NlZCA9IFBSX1RSVUU7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgICAgc2xhcGlfcmVf ZnJlZShyZSk7Ci0rICAgIHJldHVybiByYyA9PSAxID8gMSA6IDA7Ci0rfQotKwotICNkZWZpbmUg RVJST1JTTE9HIDEKLSAjZGVmaW5lIEFDQ0VTU0xPRyAyCi0gI2RlZmluZSBBVURJVExPRyAzCi1A QCAtNDkwNywzMSArNDk1MiwxOSBAQCBsb2dfX2ZpeF9yb3RhdGlvbmluZm9mKGNoYXIgKnBhdGhu YW1lKQotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJuY21wKGxv Z190eXBlLCBkaXJlbnQtPm5hbWUsIHN0cmxlbihsb2dfdHlwZSkpICYmCi0gICAgICAgICAgICAg ICAgICAgIChwID0gc3RyY2hyKGRpcmVudC0+bmFtZSwgJy4nKSkgIT0gTlVMTCAmJgotLSAgICAg ICAgICAgICAgICAgICBOVUxMICE9IHN0cmNocihwLCAnLScpKSAvKiBlLmcuLCBlcnJvcnMuMjAw NTExMjMtMTY1MTM1ICovCi0rICAgICAgICAgICAgICAgICAgIE5VTEwgIT0gc3RyY2hyKHAsICct JykpIC8qIGUuZy4sIGVycm9ycy4yMDA1MTEyMy0xNjUxMzUgb3IgZXJyb3JzLjIwMDUxMTIzLTE2 NTEzNS5neiAqLwotICAgICAgICAgewotICAgICAgICAgICAgIHN0cnVjdCBsb2dmaWxlaW5mbyAq bG9ncDsKLS0gICAgICAgICAgICBjaGFyICpxOwotLSAgICAgICAgICAgIGludCBpZ25vcmVpdCA9 IDA7Ci0tCi0tICAgICAgICAgICAgZm9yIChxID0gKytwOyBxICYmICpxOyBxKyspIHsKLS0gICAg ICAgICAgICAgICAgaWYgKCpxICE9ICctJyAmJgotLSAgICAgICAgICAgICAgICAgICAgKnEgIT0g Jy4nICYmIC8qIC5neiAqLwotLSAgICAgICAgICAgICAgICAgICAgKnEgIT0gJ2cnICYmCi0tICAg ICAgICAgICAgICAgICAgICAqcSAhPSAneicgJiYKLS0gICAgICAgICAgICAgICAgICAgICFpc2Rp Z2l0KCpxKSkKLS0gICAgICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICAgICAgaWdub3Jl aXQgPSAxOwotLSAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgfQotLSAgICAgICAgICAg IGlmIChpZ25vcmVpdCB8fCAocSAtIHAgIT0gMTUpKSB7Ci0rICAgICAgICAgICAgUFJCb29sIGlz X2NvbXByZXNzZWQgPSBQUl9GQUxTRTsKLSsKLSsgICAgICAgICAgICAvKiBTa2lwIHRoZSAnLicg dG8gZ2V0IHRoZSB0aW1lc3RhbXAgcG9ydGlvbiAqLwotKyAgICAgICAgICAgIHArKzsKLSsgICAg ICAgICAgICBpZiAoIWxvZ19fdmFsaWRhdGVfcm90YXRlZF9sb2duYW1lKHAsICZpc19jb21wcmVz c2VkKSkgewotICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICAgbG9ncCA9IChzdHJ1Y3QgbG9nZmlsZWluZm8gKilzbGFwaV9jaF9tYWxsb2Moc2l6 ZW9mKHN0cnVjdCBsb2dmaWxlaW5mbykpOwotICAgICAgICAgICAgIGxvZ3AtPmxfY3RpbWUgPSBs b2dfcmV2ZXJzZV9jb252ZXJ0X3RpbWUocCk7Ci0tICAgICAgICAgICAgbG9ncC0+bF9jb21wcmVz c2VkID0gUFJfRkFMU0U7Ci0tICAgICAgICAgICAgaWYgKHN0cmNtcChwICsgc3RybGVuKHApIC0g MywgIi5neiIpID09IDApIHsKLS0gICAgICAgICAgICAgICAgbG9ncC0+bF9jb21wcmVzc2VkID0g UFJfVFJVRTsKLS0gICAgICAgICAgICB9Ci0rICAgICAgICAgICAgbG9ncC0+bF9jb21wcmVzc2Vk ID0gaXNfY29tcHJlc3NlZDsKLSAgICAgICAgICAgICBQUl9zbnByaW50Zihyb3RhdGVkX2xvZywg cm90YXRlZF9sb2dfbGVuLCAiJXMvJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ3Nk aXIsIGRpcmVudC0+bmFtZSk7Ci0gCi1AQCAtNTA5OCwyMyArNTEzMSwxNSBAQCBsb2dfX2NoZWNr X3ByZXZsb2dzKEZJTEUgKmZwLCBjaGFyICpwYXRobmFtZSkKLSAgICAgZm9yIChkaXJlbnQgPSBQ Ul9SZWFkRGlyKGRpcnB0ciwgZGlyZmxhZ3MpOyBkaXJlbnQ7Ci0gICAgICAgICAgZGlyZW50ID0g UFJfUmVhZERpcihkaXJwdHIsIGRpcmZsYWdzKSkgewotICAgICAgICAgaWYgKDAgPT0gc3RybmNt cChsb2dfdHlwZSwgZGlyZW50LT5uYW1lLCBzdHJsZW4obG9nX3R5cGUpKSAmJgotLSAgICAgICAg ICAgIChwID0gc3RycmNocihkaXJlbnQtPm5hbWUsICcuJykpICE9IE5VTEwgJiYKLS0gICAgICAg ICAgICBOVUxMICE9IHN0cmNocihwLCAnLScpKSB7IC8qIGUuZy4sIGVycm9ycy4yMDA1MTEyMy0x NjUxMzUgKi8KLS0gICAgICAgICAgICBjaGFyICpxOwotLSAgICAgICAgICAgIGludCBpZ25vcmVp dCA9IDA7Ci0tCi0tICAgICAgICAgICAgZm9yIChxID0gKytwOyBxICYmICpxOyBxKyspIHsKLS0g ICAgICAgICAgICAgICAgaWYgKCpxICE9ICctJyAmJgotLSAgICAgICAgICAgICAgICAgICAgKnEg IT0gJy4nICYmIC8qIC5neiAqLwotLSAgICAgICAgICAgICAgICAgICAgKnEgIT0gJ2cnICYmCi0t ICAgICAgICAgICAgICAgICAgICAqcSAhPSAneicgJiYKLS0gICAgICAgICAgICAgICAgICAgICFp c2RpZ2l0KCpxKSkKLS0gICAgICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICAgICAgaWdu b3JlaXQgPSAxOwotLSAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgfQotLSAgICAgICAg ICAgIGlmIChpZ25vcmVpdCB8fCAocSAtIHAgIT0gMTUpKQotKyAgICAgICAgICAgIChwID0gc3Ry Y2hyKGRpcmVudC0+bmFtZSwgJy4nKSkgIT0gTlVMTCAmJgotKyAgICAgICAgICAgIE5VTEwgIT0g c3RyY2hyKHAsICctJykpIHsgLyogZS5nLiwgZXJyb3JzLjIwMDUxMTIzLTE2NTEzNSBvciBlcnJv cnMuMjAwNTExMjMtMTY1MTM1Lmd6ICovCi0rICAgICAgICAgICAgUFJCb29sIGlzX2NvbXByZXNz ZWQgPSBQUl9GQUxTRTsKLSsKLSsgICAgICAgICAgICAvKiBTa2lwIHRoZSAnLicgdG8gZ2V0IHRo ZSB0aW1lc3RhbXAgcG9ydGlvbiAqLwotKyAgICAgICAgICAgIHArKzsKLSsgICAgICAgICAgICBp ZiAoIWxvZ19fdmFsaWRhdGVfcm90YXRlZF9sb2duYW1lKHAsICZpc19jb21wcmVzc2VkKSkgewot ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAg ICAgZnNlZWsoZnAsIDAsIFNFRUtfU0VUKTsKLSAgICAgICAgICAgICBidWZbQlVGU0laIC0gMV0g PSAnXDAnOwotLS0gCi0yLjUyLjAKLQoKZGlmZiAtLWdpdCBhLzAwMDItU3luYy1saWIzODktdmVy c2lvbi10by0zLjEuNC03MTYxLnBhdGNoIGIvMDAwMi1TeW5jLWxpYjM4OS12ZXJzaW9uLXRvLTMu MS40LTcxNjEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ZDdjOTQuLjAw MDAwMDAKLS0tIGEvMDAwMi1TeW5jLWxpYjM4OS12ZXJzaW9uLXRvLTMuMS40LTcxNjEucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDNiMTMzYTVlZDZmYTg5OTM5YTU2 OWZlNjEzMGIzMjU3MjZmNGU1MGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdGFu aXNsYXYgTGV2aW4gPHNsZXZAYWx0bGludXgub3JnPgotRGF0ZTogRnJpLCAxOSBEZWMgMjAyNSAx NDo1Mjo0OCArMDMwMAotU3ViamVjdDogW1BBVENIXSBTeW5jIGxpYjM4OSB2ZXJzaW9uIHRvIDMu MS40ICgjNzE2MSkKLQotUHJlcGFyZWQgd2l0aDoKLSQgcHl0aG9uMyB2YWxpZGF0ZV92ZXJzaW9u LnB5IC0tdXBkYXRlCi1FUlJPUjogVmVyc2lvbiBtaXNtYXRjaCBkZXRlY3RlZCEKLU1haW4gcHJv amVjdCB2ZXJzaW9uOiAzLjEuNAotbGliMzg5IHZlcnNpb246ICAgICAgIDMuMS4zCi1TVUNDRVNT OiBVcGRhdGVkIGxpYjM4OSB2ZXJzaW9uIHRvIDMuMS40IGluIHB5cHJvamVjdC50b21sCi0KLUZp eGVzOiBodHRwczovL2dpdGh1Yi5jb20vMzg5ZHMvMzg5LWRzLWJhc2UvaXNzdWVzLzcxNjAKLQot UmV2aWV3ZWQgYnk6ICBAcHJvZ2llciAoVGhhbmtzISkKLQotU2lnbmVkLW9mZi1ieTogU3Rhbmlz bGF2IExldmluIDxzbGV2QGFsdGxpbnV4Lm9yZz4KLS0tLQotIHNyYy9saWIzODkvcHlwcm9qZWN0 LnRvbWwgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbGliMzg5L3B5cHJvamVjdC50b21sIGIvc3JjL2xpYjM4 OS9weXByb2plY3QudG9tbAotaW5kZXggMWNkODQwNzEzLi44NWMwYzUxNDEgMTAwNjQ0Ci0tLS0g YS9zcmMvbGliMzg5L3B5cHJvamVjdC50b21sCi0rKysgYi9zcmMvbGliMzg5L3B5cHJvamVjdC50 b21sCi1AQCAtMTYsNyArMTYsNyBAQCBidWlsZC1iYWNrZW5kID0gInNldHVwdG9vbHMuYnVpbGRf bWV0YSIKLSAKLSBbcHJvamVjdF0KLSBuYW1lID0gImxpYjM4OSIKLS12ZXJzaW9uID0gIjMuMS4z IiAgIyBTaG91bGQgbWF0Y2ggdGhlIG1haW4gMzg5LWRzLWJhc2UgdmVyc2lvbgotK3ZlcnNpb24g PSAiMy4xLjQiICAjIFNob3VsZCBtYXRjaCB0aGUgbWFpbiAzODktZHMtYmFzZSB2ZXJzaW9uCi0g ZGVzY3JpcHRpb24gPSAiQSBsaWJyYXJ5IGZvciBhY2Nlc3NpbmcsIHRlc3RpbmcsIGFuZCBjb25m aWd1cmluZyB0aGUgMzg5IERpcmVjdG9yeSBTZXJ2ZXIiCi0gcmVhZG1lID0gIlJFQURNRS5tZCIK LSBsaWNlbnNlID0ge3RleHQgPSAiR1BMLTMuMC1vci1sYXRlciJ9Ci0tLSAKLTIuNTIuMAotCgpk aWZmIC0tZ2l0IGEvMDAwMy1Jc3N1ZS03MTY2LWRiX2NvbmZpZ19zZXQtYXNzZXJ0cy1iZWNhdXNl LW9mLWR5bmFtaWMtLnBhdGNoIGIvMDAwMy1Jc3N1ZS03MTY2LWRiX2NvbmZpZ19zZXQtYXNzZXJ0 cy1iZWNhdXNlLW9mLWR5bmFtaWMtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBjZjU3MWJhLi4wMDAwMDAwCi0tLSBhLzAwMDMtSXNzdWUtNzE2Ni1kYl9jb25maWdfc2V0LWFz c2VydHMtYmVjYXVzZS1vZi1keW5hbWljLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICsw LDAgQEAKLUZyb20gOWFkYWViYTg0OGE1YjBmYmU1ZDNhNjE0ODczNmY2YzJhZTk0MGMzNSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHByb2dpZXIzODkgPHByb2dpZXJAcmVkaGF0LmNv bT4KLURhdGU6IE1vbiwgNSBKYW4gMjAyNiAxNDozODozOCArMDEwMAotU3ViamVjdDogW1BBVENI XSBJc3N1ZSA3MTY2IC0gZGJfY29uZmlnX3NldCBhc3NlcnRzIGJlY2F1c2Ugb2YgZHluYW1pYyBs aXN0Ci0gKCM3MTY3KQotCi1Bdm9pZCBhc3NlcnRpb24gaW4gZGJfY29uZmlnX3NldCB3aGVuIGFy Z3MgZG9lcyBub3QgY29udGFpbnMgZHluYW1pYyBsaXN0IGF0dHJpYnV0ZXMKLQotSXNzdWU6ICM3 MTY2Ci0KLVJldmlld2VkIGJ5OiBAdGJvcmRheiAoVGhhbmtzISkKLQotKGNoZXJyeSBwaWNrZWQg ZnJvbSBjb21taXQgNWYxNTIyMzI4MDAwMjgwM2E5MzIxODdjMjJiMTBiZWFlYWE3NGJjMikKLS0t LQotIHNyYy9saWIzODkvbGliMzg5L2NsaV9jb25mL2JhY2tlbmQucHkgfCAyICstCi0gMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9z cmMvbGliMzg5L2xpYjM4OS9jbGlfY29uZi9iYWNrZW5kLnB5IGIvc3JjL2xpYjM4OS9saWIzODkv Y2xpX2NvbmYvYmFja2VuZC5weQotaW5kZXggNjc3YjM3ZmNiLi5kMGVjNGJkOWUgMTAwNjQ0Ci0t LS0gYS9zcmMvbGliMzg5L2xpYjM4OS9jbGlfY29uZi9iYWNrZW5kLnB5Ci0rKysgYi9zcmMvbGli Mzg5L2xpYjM4OS9jbGlfY29uZi9iYWNrZW5kLnB5Ci1AQCAtNTQ0LDcgKzU0NCw3IEBAIGRlZiBk Yl9jb25maWdfc2V0KGluc3QsIGJhc2VkbiwgbG9nLCBhcmdzKToKLSAgICAgZGlkX3NvbWV0aGlu ZyA9IEZhbHNlCi0gICAgIHJlcGxhY2VfbGlzdCA9IFtdCi0gCi0tICAgIGlmIGFyZ3MuZW5hYmxl X2R5bmFtaWNfbGlzdHMgYW5kIGFyZ3MuZGlzYWJsZV9keW5hbWljX2xpc3RzOgotKyAgICBpZiBn ZXRhdHRyKGFyZ3MsJ2VuYWJsZV9keW5hbWljX2xpc3RzJywgTm9uZSkgYW5kIGdldGF0dHIoYXJn cywgJ2Rpc2FibGVfZHluYW1pY19saXN0cycsIE5vbmUpOgotICAgICAgICAgcmFpc2UgVmFsdWVF cnJvcigiWW91IGNhbiBub3QgZW5hYmxlIGFuZCBkaXNhYmxlIGR5bmFtaWMgbGlzdHMgYXQgdGhl IHNhbWUgdGltZSIpCi0gCi0gICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBsaXN0KGF0dHJzLml0ZW1z KCkpOgotLS0gCi0yLjUyLjAKLQoKZGlmZiAtLWdpdCBhLzAwMDQtSXNzdWUtNzE2MC1BZGQtbGli Mzg5LXZlcnNpb24tc3luYy1jaGVjay10by1jb25maWd1ci5wYXRjaCBiLzAwMDQtSXNzdWUtNzE2 MC1BZGQtbGliMzg5LXZlcnNpb24tc3luYy1jaGVjay10by1jb25maWd1ci5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM2N2Q2YS4uMDAwMDAwMAotLS0gYS8wMDA0LUlzc3Vl LTcxNjAtQWRkLWxpYjM4OS12ZXJzaW9uLXN5bmMtY2hlY2stdG8tY29uZmlndXIucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIDc2OTNkNTMzNWM0OThkZTFkYmI3ODMw NDJjYzRhY2VjMDEzOGU0NGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTaW1vbiBQ aWNodWdpbiA8c3BpY2h1Z2lAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgNSBKYW4gMjAyNiAxODoz Mjo1MiAtMDgwMAotU3ViamVjdDogW1BBVENIXSBJc3N1ZSA3MTYwIC0gQWRkIGxpYjM4OSB2ZXJz aW9uIHN5bmMgY2hlY2sgdG8gY29uZmlndXJlCi0gKCM3MTY1KQotCi1EZXNjcmlwdGlvbjogQWRk IHZlcnNpb24gdmFsaWRhdGlvbiBkdXJpbmcgY29uZmlndXJlIHRoYXQgZW5zdXJlcwotbGliMzg5 IHZlcnNpb24gaW4gcHlwcm9qZWN0LnRvbWwgbWF0Y2hlcyB0aGUgbWFpbiBwcm9qZWN0IHZlcnNp b24KLWluIFZFUlNJT04uc2guIENvbmZpZ3VyZSBmYWlscyB3aXRoIGNsZWFyIGVycm9yIG1lc3Nh Z2UgYW5kIGZpeAotaW5zdHJ1Y3Rpb25zIHdoZW4gdmVyc2lvbnMgbWlzbWF0Y2gsIHByZXZlbnRp bmcgaW5jb25zaXN0ZW50IHJlbGVhc2VzLgotCi1GaXhlczogaHR0cHM6Ly9naXRodWIuY29tLzM4 OWRzLzM4OS1kcy1iYXNlL2lzc3Vlcy83MTYwCi0KLVJldmlld2VkIGJ5OiBAcHJvZ2llcjM4OSAo VGhhbmtzISkKLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysr KysKLSAxIGZpbGUgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29u ZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBlOTRmNzI2NDcuLjdmZDA2MWE4YyAxMDA2 NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNyw2ICs3LDMx IEBAIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCi0gIyBpbmNsdWRlIHRoZSB2ZXJzaW9u IGluZm9ybWF0aW9uCi0gLiAkc3JjZGlyL1ZFUlNJT04uc2gKLSBBQ19NU0dfTk9USUNFKFRoaXMg aXMgY29uZmlndXJlIGZvciAkUEFDS0FHRV9UQVJOQU1FICRQQUNLQUdFX1ZFUlNJT04pCi0rCi0r IyBWYWxpZGF0ZSBsaWIzODkgdmVyc2lvbiBtYXRjaGVzIG1haW4gcHJvamVjdCB2ZXJzaW9uCi0r QUNfTVNHX0NIRUNLSU5HKFtsaWIzODkgdmVyc2lvbiBzeW5jXSkKLStsaWIzODlfcHlwcm9qZWN0 PSIkc3JjZGlyL3NyYy9saWIzODkvcHlwcm9qZWN0LnRvbWwiCi0raWYgdGVzdCAtZiAiJGxpYjM4 OV9weXByb2plY3QiOyB0aGVuCi0rICAgIGxpYjM4OV92ZXJzaW9uPSQoZ3JlcCAtRSAnXnZlcnNp b25ccyo9JyAiJGxpYjM4OV9weXByb2plY3QiIHwgc2VkICdzLy4qIlwoLipcKSIuKi9cMS8nKQot KyAgICBpZiB0ZXN0ICJ4JGxpYjM4OV92ZXJzaW9uIiAhPSAieCRSUE1fVkVSU0lPTiI7IHRoZW4K LSsgICAgICAgIEFDX01TR19SRVNVTFQoW01JU01BVENIXSkKLSsgICAgICAgIEFDX01TR19FUlJP UihbCi0rbGliMzg5IHZlcnNpb24gbWlzbWF0Y2ggZGV0ZWN0ZWQhCi0rICBNYWluIHByb2plY3Qg dmVyc2lvbiAoVkVSU0lPTi5zaCk6ICRSUE1fVkVSU0lPTgotKyAgbGliMzg5IHZlcnNpb24gKHB5 cHJvamVjdC50b21sKTogICAkbGliMzg5X3ZlcnNpb24KLSsKLStUbyBmaXggdGhpcywgcnVuOgot KyAgY2QgJHNyY2Rpci9zcmMvbGliMzg5ICYmIHB5dGhvbjMgdmFsaWRhdGVfdmVyc2lvbi5weSAt LXVwZGF0ZQotKwotK2xpYjM4OSB2ZXJzaW9uIE1VU1QgbWF0Y2ggdGhlIG1haW4gcHJvamVjdCB2 ZXJzaW9uIGJlZm9yZSByZWxlYXNlLgotK10pCi0rICAgIGVsc2UKLSsgICAgICAgIEFDX01TR19S RVNVTFQoW29rICgkbGliMzg5X3ZlcnNpb24pXSkKLSsgICAgZmkKLStlbHNlCi0rICAgIEFDX01T R19SRVNVTFQoW01JU1NJTkddKQotKyAgICBBQ19NU0dfRVJST1IoW2xpYjM4OSBweXByb2plY3Qu dG9tbCBub3QgZm91bmQgYXQgJGxpYjM4OV9weXByb2plY3QgLSBzb3VyY2UgdHJlZSBpcyBpbmNv bXBsZXRlXSkKLStmaQotIEFNX0lOSVRfQVVUT01BS0UoWzEuOSBmb3JlaWduIHN1YmRpci1vYmpl Y3RzIGRpc3QtYnppcDIgbm8tZGlzdC1nemlwIG5vLWRlZmluZSB0YXItcGF4XSkKLSBBQ19TVUJT VChbUlBNX1ZFUlNJT05dKQotIEFDX1NVQlNUKFtSUE1fUkVMRUFTRV0pCi0tLSAKLTIuNTIuMAot CgpkaWZmIC0tZ2l0IGEvMDAwNS1Jc3N1ZS03MDk2LUR1cmluZy1yZXBsaWNhdGlvbi1vbmxpbmUt dG90YWwtaW5pdC10aGUtLnBhdGNoIGIvMDAwNS1Jc3N1ZS03MDk2LUR1cmluZy1yZXBsaWNhdGlv bi1vbmxpbmUtdG90YWwtaW5pdC10aGUtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBmZGRjYTk4Li4wMDAwMDAwCi0tLSBhLzAwMDUtSXNzdWUtNzA5Ni1EdXJpbmctcmVwbGlj YXRpb24tb25saW5lLXRvdGFsLWluaXQtdGhlLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMx OCArMCwwIEBACi1Gcm9tIDVkZTk4Y2RjMTBiZDMzM2QwNjk1YzAwZDU3ZTEzN2Q2OTlmOTBmMWMg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiB0Ym9yZGF6IDx0Ym9yZGF6QHJlZGhhdC5j b20+Ci1EYXRlOiBXZWQsIDcgSmFuIDIwMjYgMTE6MjE6MTIgKzAxMDAKLVN1YmplY3Q6IFtQQVRD SF0gSXNzdWUgNzA5NiAtIER1cmluZyByZXBsaWNhdGlvbiBvbmxpbmUgdG90YWwgaW5pdCB0aGUK LSBmdW5jdGlvbiBpZGxfaWRfaXNfaW5faWRsaXN0IGlzIG5vdCBzY2FsaW5nIHdpdGggbGFyZ2Ug ZGF0YWJhc2UgKCM3MTQ1KQotCi1CdWcgZGVzY3JpcHRpb246Ci0JRHVyaW5nIGEgb25saW5lIHRv dGFsIGluaXRpYWxpemF0aW9uLCB0aGUgc3VwcGxpZXIgc29ydHMKLQl0aGUgY2FuZGlkYXRlIGxp c3Qgb2YgZW50cmllcyBzbyB0aGF0IHRoZSBwYXJlbnRzIGFyZSBzZW50IGJlZm9yZQotCWNoaWxk cmVuIGVudHJpZXMuCi0JV2l0aCBsYXJnZSBEQiB0aGUgSUQgYXJyYXkgdXNlZCBmb3IgdGhlIHNv cnRpbmcgaXMgbm90Ci0Jc2NhbGluZy4gSXQgdGFrZXMgc28gbG9uZyB0byBidWlsZCB0aGUgY2Fu ZGlkYXRlIGxpc3QgdGhhdAotCXRoZSBjb25uZWN0aW9uIGdldHMgY2xvc2VkCi0KLUZpeCBkZXNj cmlwdGlvbjoKLSAgICAgICAgSW5zdGVhZCBvZiB1c2luZyBhbiBJRCBhcnJheSwgdXNlcyBhIGxp c3Qgb2YgSUQgcmFuZ2VzCi0KLWZpeGVzOiAjNzA5NgotCi1SZXZpZXdlZCBieTogTWFyayBSZXlu b2xkcywgUGllcnJlIFJvZ2llciAoVGhhbmtzICEhKQotLS0tCi0gbGRhcC9zZXJ2ZXJzL3NsYXBk L2JhY2stbGRibS9iYWNrLWxkYm0uaCAgICAgIHwgIDEyICsrCi0gbGRhcC9zZXJ2ZXJzL3NsYXBk L2JhY2stbGRibS9pZGxfY29tbW9uLmMgICAgIHwgMTYzICsrKysrKysrKysrKysrKysrKwotIGxk YXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vaWRsX25ldy5jICAgICAgICB8ICAzMCArKy0tCi0g Li4uL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL3Byb3RvLWJhY2stbGRibS5oIHwgICAzICsKLSA0 IGZpbGVzIGNoYW5nZWQsIDE4OSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKLQotZGlm ZiAtLWdpdCBhL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vYmFjay1sZGJtLmggYi9sZGFw L3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2JhY2stbGRibS5oCi1pbmRleCAxYmMzNjcyMGQuLmIx ODdjMjZiYyAxMDA2NDQKLS0tLSBhL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vYmFjay1s ZGJtLmgKLSsrKyBiL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vYmFjay1sZGJtLmgKLUBA IC0yODIsNiArMjgyLDE4IEBAIHR5cGVkZWYgc3RydWN0IF9pZGxpc3Rfc2V0Ci0gI2RlZmluZSBJ TkRJUkVDVF9CTE9DSyhpZGwpICgoaWRsKS0+Yl9uaWRzID09IElOREJMT0NLKQotICNkZWZpbmUg SURMX05JRFMoaWRsKSAgICAgICAoaWRsID8gKGlkbCktPmJfbmlkcyA6IChOSURTKTApCi0gCi0r LyoKLSsgKiB1c2VkIGJ5IHRoZSBzdXBwbGllciBkdXJpbmcgb25saW5lIHRvdGFsIGluaXQKLSsg KiBpdCBzdG9yZXMgdGhlIHJhbmdlcyBvZiBJRCB0aGF0IGFyZSBhbHJlYWR5IHByZXNlbnQKLSsg KiBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgKCdwYXJlbnRpZD49MScpCi0rICovCi0rdHlwZWRlZiBz dHJ1Y3QgSWRSYW5nZSB7Ci0rICAgIElEIGZpcnN0OwotKyAgICBJRCBsYXN0OwotKyAgICBzdHJ1 Y3QgSWRSYW5nZSAqbmV4dDsKLSt9IElkUmFuZ2VfdDsKLSsKLSsKLSB0eXBlZGVmIHNpemVfdCBp ZGxfaXRlcmF0b3I7Ci0gCi0gLyogc21hbGwgaGFzaHRhYmxlIGltcGxlbWVudGF0aW9uIHVzZWQg aW4gdGhlIGVudHJ5IGNhY2hlIC0tIHRoZSB0YWJsZQotZGlmZiAtLWdpdCBhL2xkYXAvc2VydmVy cy9zbGFwZC9iYWNrLWxkYm0vaWRsX2NvbW1vbi5jIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2st bGRibS9pZGxfY29tbW9uLmMKLWluZGV4IGZjYjBlY2U0Yi4uZmRjOWI0ZTY3IDEwMDY0NAotLS0t IGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9pZGxfY29tbW9uLmMKLSsrKyBiL2xkYXAv c2VydmVycy9zbGFwZC9iYWNrLWxkYm0vaWRsX2NvbW1vbi5jCi1AQCAtMTcyLDYgKzE3MiwxNjkg QEAgaWRsX21pbihJRExpc3QgKmEsIElETGlzdCAqYikKLSAgICAgcmV0dXJuIChhLT5iX25pZHMg PiBiLT5iX25pZHMgPyBiIDogYSk7Ci0gfQotIAotKy8qCi0rICogVGhpcyBpcyBhIGZhc3RlciB2 ZXJzaW9uIG9mIGlkbF9pZF9pc19pbl9pZGxpc3QuCi0rICogaWRsX2lkX2lzX2luX2lkbGlzdCB1 c2VzIGFuIGFycmF5IG9mIElEIHNvIGxvb2t1cCBpcyBleHBlbnNpdmUKLSsgKiBpZGxfaWRfaXNf aW5faWRsaXN0X3JhbmdlcyB1c2VzIGEgbGlzdCBvZiByYW5nZXMgb2YgSUQgbG9va3VwIGlzIGZh c3RlcgotKyAqIHJldHVybnMKLSsgKiAgIDE6ICdpZCcgaXMgcHJlc2VudCBpbiBpZHJhbmdlX2xp c3QKLSsgKiAgIDA6ICdpZCcgaXMgbm90IHByZXNlbnQgaW4gaWRyYW5nZV9saXN0Ci0rICovCi0r aW50Ci0raWRsX2lkX2lzX2luX2lkbGlzdF9yYW5nZXMoSURMaXN0ICppZGwsIElkUmFuZ2VfdCAq aWRyYW5nZV9saXN0LCBJRCBpZCkKLSt7Ci0rICAgIElkUmFuZ2VfdCAqcmFuZ2UgPSBpZHJhbmdl X2xpc3Q7Ci0rICAgIGludCBmb3VuZCA9IDA7Ci0rCi0rICAgIGlmIChOVUxMID09IGlkbCB8fCBO T0lEID09IGlkKSB7Ci0rICAgICAgICByZXR1cm4gMDsgLyogbm90IGluIHRoZSBsaXN0ICovCi0r ICAgIH0KLSsgICAgaWYgKEFMTElEUyhpZGwpKSB7Ci0rICAgICAgICByZXR1cm4gMTsgLyogaW4g dGhlIGxpc3QgKi8KLSsgICAgfQotKwotKyAgICBmb3IoO3JhbmdlOyByYW5nZSA9IHJhbmdlLT5u ZXh0KSB7Ci0rICAgICAgICBpZiAoaWQgPiByYW5nZS0+bGFzdCkgewotKyAgICAgICAgICAgIC8q IGNoZWNrIGlmIGl0IGJlbG9uZ3MgdG8gdGhlIG5leHQgcmFuZ2UgKi8KLSsgICAgICAgICAgICBj b250aW51ZTsKLSsgICAgICAgIH0KLSsgICAgICAgIGlmIChpZCA+PSByYW5nZS0+Zmlyc3QpIHsK LSsgICAgICAgICAgICAvKiBJdCBiZWxvbmdzIHRvIHRoYXQgcmFuZ2UgW2ZpcnN0Li5sYXN0IF0g Ki8KLSsgICAgICAgICAgICBmb3VuZCA9IDE7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAg ICB9IGVsc2UgewotKyAgICAgICAgICAgIC8qIHRoaXMgcmFuZ2UgaXMgYWZ0ZXIgaWQgKi8KLSsg ICAgICAgICAgICBicmVhazsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgICByZXR1cm4gZm91bmQ7 Ci0rfQotKwotKy8qIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBkdXJpbmcgdGhlIG9ubGluZSB0b3Rh bCBpbml0aWFsaXNhdGlvbgotKyAqIChzZWUgbmV4dCBmdW5jdGlvbikKLSsgKiBJdCBmcmVlcyBh bGwgcmFuZ2VzIG9mIElEIGluIHRoZSBsaXN0Ci0rICovCi0rdm9pZCBpZHJhbmdlX2ZyZWUoSWRS YW5nZV90ICoqaGVhZCkKLSt7Ci0rICAgIElkUmFuZ2VfdCAqY3VyciwgKnNhdjsKLSsKLSsgICAg aWYgKChoZWFkID09IE5VTEwpIHx8ICgqaGVhZCA9PSBOVUxMKSkgewotKyAgICAgICAgcmV0dXJu OwotKyAgICB9Ci0rICAgIGN1cnIgPSAqaGVhZDsKLSsgICAgc2F2ID0gTlVMTDsKLSsgICAgZm9y ICg7IGN1cnI7KSB7Ci0rICAgICAgICBzYXYgPSBjdXJyOwotKyAgICAgICAgY3VyciA9IGN1cnIt Pm5leHQ7Ci0rICAgICAgICBzbGFwaV9jaF9mcmVlKCh2b2lkICopICZzYXYpOwotKyAgICB9Ci0r ICAgIGlmIChzYXYpIHsKLSsgICAgICAgIHNsYXBpX2NoX2ZyZWUoKHZvaWQgKikgJnNhdik7Ci0r ICAgIH0KLSsgICAgKmhlYWQgPSBOVUxMOwotK30KLSsKLSsvKiBUaGlzIGZ1bmN0aW9uIGlzIHVz ZWQgZHVyaW5nIHRoZSBvbmxpbmUgdG90YWwgaW5pdGlhbGlzYXRpb24KLSsgKiBCZWNhdXNlIGEg TU9EUkROIGNhbiBtb3ZlIGVudHJpZXMgdW5kZXIgYSBwYXJlbnQgdGhhdAotKyAqIGhhcyBhIGhp Z2hlciBJRCB3ZSBuZWVkIHRvIHNvcnQgdGhlIElETGlzdCBzbyB0aGF0IHBhcmVudHMKLSsgKiBh cmUgc2VudCwgdG8gdGhlIGNvbnN1bWVyLCBiZWZvcmUgdGhlIGNoaWxkcmVuIGFyZSBzZW50Lgot KyAqIFRoZSBzb3J0aW5nIHdpdGggYSBzaW1wbGUgSURsaXN0IGRvZXMgbm90IHNjYWxlIGluc3Rl YWQKLSsgKiBhIGxpc3Qgb2YgSURzIHJhbmdlcyBpcyBtdWNoIGZhc3Rlci4KLSsgKiBJbiB0aGF0 IGxpc3Qgd2Ugb25seSBBREQvbG9va3VwIElELgotKyAqLwotK0lkUmFuZ2VfdCAqaWRyYW5nZV9h ZGRfaWQoSWRSYW5nZV90ICoqaGVhZCwgSUQgaWQpCi0rewotKyAgICBpZiAoaGVhZCA9PSBOVUxM KSB7Ci0rICAgICAgICBzbGFwaV9sb2dfZXJyKFNMQVBJX0xPR19FUlIsICJpZHJhbmdlX2FkZF9p ZCIsCi0rICAgICAgICAgICAgICAgICAgICAgICJDYW4gbm90IGFkZCBJRCAlZCBpbiBub24gZGVm aW5lZCBsaXN0XG4iLCBpZCk7Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotKyAg ICBpZiAoKmhlYWQgPT0gTlVMTCkgewotKyAgICAgICAgLyogVGhpcyBpcyB0aGUgZmlyc3QgcmFu Z2UgKi8KLSsgICAgICAgIElkUmFuZ2VfdCAqbmV3X3JhbmdlID0gKElkUmFuZ2VfdCAqKXNsYXBp X2NoX21hbGxvYyhzaXplb2YoSWRSYW5nZV90KSk7Ci0rICAgICAgICBuZXdfcmFuZ2UtPmZpcnN0 ID0gaWQ7Ci0rICAgICAgICBuZXdfcmFuZ2UtPmxhc3QgPSBpZDsKLSsgICAgICAgIG5ld19yYW5n ZS0+bmV4dCA9IE5VTEw7Ci0rICAgICAgICAqaGVhZCA9IG5ld19yYW5nZTsKLSsgICAgICAgIHJl dHVybiAqaGVhZDsKLSsgICAgfQotKwotKyAgICBJZFJhbmdlX3QgKmN1cnIgPSAqaGVhZCwgKnBy ZXYgPSBOVUxMOwotKwotKyAgICAvKiBGaXJzdCwgZmluZCBpZiBpZCBhbHJlYWR5IGZhbGxzIHdp dGhpbiBhbnkgZXhpc3RpbmcgcmFuZ2UsIG9yIGl0IGlzIGFkamFjZW50IHRvIGFueSAqLwotKyAg ICB3aGlsZSAoY3VycikgewotKyAgICAgICAgaWYgKGlkID49IGN1cnItPmZpcnN0ICYmIGlkIDw9 IGN1cnItPmxhc3QpIHsKLSsgICAgICAgICAgICAvKiBpbnNpZGUgYSByYW5nZSwgbm90aGluZyB0 byBkbyAqLwotKyAgICAgICAgICAgIHJldHVybiBjdXJyOwotKyAgICAgICAgfQotKwotKyAgICAg ICAgaWYgKGlkID09IGN1cnItPmxhc3QgKyAxKSB7Ci0rICAgICAgICAgICAgLyogRXh0ZW5kIHRo aXMgcmFuZ2UgdXB3YXJkcyAqLwotKyAgICAgICAgICAgIGN1cnItPmxhc3QgPSBpZDsKLSsKLSsg ICAgICAgICAgICAvKiBDaGVjayBmb3IgcG9zc2libGUgbWVyZ2Ugd2l0aCBuZXh0IHJhbmdlICov Ci0rICAgICAgICAgICAgSWRSYW5nZV90ICpuZXh0ID0gY3Vyci0+bmV4dDsKLSsgICAgICAgICAg ICBpZiAobmV4dCAmJiBjdXJyLT5sYXN0ICsgMSA+PSBuZXh0LT5maXJzdCkgewotKyAgICAgICAg ICAgICAgICBzbGFwaV9sb2dfZXJyKFNMQVBJX0xPR19SRVBMLCAiaWRyYW5nZV9hZGRfaWQiLAot KyAgICAgICAgICAgICAgICAgICAgICAgICIoaWQ9JWQpIG1lcmdlIGN1cnJlbnQgIHdpdGggbmV4 dCByYW5nZSBbJWQuLiVkXVxuIiwgaWQsIGN1cnItPmZpcnN0LCBjdXJyLT5sYXN0KTsKLSsgICAg ICAgICAgICAgICAgY3Vyci0+bGFzdCA9IChuZXh0LT5sYXN0ID4gY3Vyci0+bGFzdCkgPyBuZXh0 LT5sYXN0IDogY3Vyci0+bGFzdDsKLSsgICAgICAgICAgICAgICAgY3Vyci0+bmV4dCA9IG5leHQt Pm5leHQ7Ci0rICAgICAgICAgICAgICAgIHNsYXBpX2NoX2ZyZWUoKHZvaWQqKSAmbmV4dCk7Ci0r ICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgc2xhcGlfbG9nX2VycihTTEFQ SV9MT0dfUkVQTCwgImlkcmFuZ2VfYWRkX2lkIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiKGlkPSVkKSBleHRlbmQgZm9yd2FyZCBjdXJyZW50IHJhbmdlIFslZC4uJWRdXG4iLCBp ZCwgY3Vyci0+Zmlyc3QsIGN1cnItPmxhc3QpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAg ICByZXR1cm4gY3VycjsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIGlmIChpZCArIDEgPT0gY3Vy ci0+Zmlyc3QpIHsKLSsgICAgICAgICAgICAvKiBFeHRlbmQgdGhpcyByYW5nZSBkb3dud2FyZHMg Ki8KLSsgICAgICAgICAgICBjdXJyLT5maXJzdCA9IGlkOwotKwotKyAgICAgICAgICAgIC8qIENo ZWNrIGZvciBwb3NzaWJsZSBtZXJnZSB3aXRoIHByZXZpb3VzIHJhbmdlICovCi0rICAgICAgICAg ICAgaWYgKHByZXYgJiYgcHJldi0+bGFzdCArIDEgPj0gY3Vyci0+Zmlyc3QpIHsKLSsgICAgICAg ICAgICAgICAgcHJldi0+bGFzdCA9IGN1cnItPmxhc3Q7Ci0rICAgICAgICAgICAgICAgIHByZXYt Pm5leHQgPSBjdXJyLT5uZXh0OwotKyAgICAgICAgICAgICAgICBzbGFwaV9jaF9mcmVlKCh2b2lk ICopICZjdXJyKTsKLSsgICAgICAgICAgICAgICAgc2xhcGlfbG9nX2VycihTTEFQSV9MT0dfUkVQ TCwgImlkcmFuZ2VfYWRkX2lkIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKGlk PSVkKSBtZXJnZSBjdXJyZW50IHdpdGggcHJldmlvdXMgcmFuZ2UgWyVkLi4lZF1cbiIsIGlkLCBw cmV2LT5maXJzdCwgcHJldi0+bGFzdCk7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBwcmV2Owot KyAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgIHNsYXBpX2xvZ19lcnIoU0xB UElfTE9HX1JFUEwsICJpZHJhbmdlX2FkZF9pZCIsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIihpZD0lZCkgZXh0ZW5kIGJhY2t3YXJkIGN1cnJlbnQgcmFuZ2UgWyVkLi4lZF1cbiIs IGlkLCBjdXJyLT5maXJzdCwgY3Vyci0+bGFzdCk7Ci0rICAgICAgICAgICAgICAgIHJldHVybiBj dXJyOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsKLSsgICAgICAgIC8qIElmIGlkIGlz IGJlZm9yZSB0aGUgY3VycmVudCByYW5nZSwgYnJlYWsgc28gd2UgY2FuIGluc2VydCBiZWZvcmUg Ki8KLSsgICAgICAgIGlmIChpZCA8IGN1cnItPmZpcnN0KSB7Ci0rICAgICAgICAgICAgYnJlYWs7 Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBwcmV2ID0gY3VycjsKLSsgICAgICAgIGN1cnIgPSBj dXJyLT5uZXh0OwotKyAgICB9Ci0rICAgIC8qIE5lZWQgdG8gaW5zZXJ0IGEgbmV3IHN0YW5kYWxv bmUgSWRSYW5nZSAqLwotKyAgICBJZFJhbmdlX3QgKm5ld19yYW5nZSA9IChJZFJhbmdlX3QgKilz bGFwaV9jaF9tYWxsb2Moc2l6ZW9mKElkUmFuZ2VfdCkpOwotKyAgICBuZXdfcmFuZ2UtPmZpcnN0 ID0gaWQ7Ci0rICAgIG5ld19yYW5nZS0+bGFzdCA9IGlkOwotKyAgICBuZXdfcmFuZ2UtPm5leHQg PSBjdXJyOwotKwotKyAgICBpZiAocHJldikgewotKyAgICAgICAgc2xhcGlfbG9nX2VycihTTEFQ SV9MT0dfUkVQTCwgImlkcmFuZ2VfYWRkX2lkIiwKLSsgICAgICAgICAgICAgICAgICAgICAgIihp ZD0lZCkgYWRkIG5ldyByYW5nZSBbJWQuLiVkXVxuIiwgaWQsIG5ld19yYW5nZS0+Zmlyc3QsIG5l d19yYW5nZS0+bGFzdCk7Ci0rICAgICAgICBwcmV2LT5uZXh0ID0gbmV3X3JhbmdlOwotKyAgICB9 IGVsc2UgewotKyAgICAgICAgLyogSW5zZXJ0IGF0IGhlYWQgKi8KLSsgICAgICAgIHNsYXBpX2xv Z19lcnIoU0xBUElfTE9HX1JFUEwsICJpZHJhbmdlX2FkZF9pZCIsCi0rICAgICAgICAgICAgICAg ICAgICAgICIoaWQ9JWQpIGhlYWQgcmFuZ2UgWyVkLi4lZF1cbiIsIGlkLCBuZXdfcmFuZ2UtPmZp cnN0LCBuZXdfcmFuZ2UtPmxhc3QpOwotKyAgICAgICAgKmhlYWQgPSBuZXdfcmFuZ2U7Ci0rICAg IH0KLSsgICAgcmV0dXJuICpoZWFkOwotK30KLSsKLSsKLSBpbnQKLSBpZGxfaWRfaXNfaW5faWRs aXN0KElETGlzdCAqaWRsLCBJRCBpZCkKLSB7Ci1kaWZmIC0tZ2l0IGEvbGRhcC9zZXJ2ZXJzL3Ns YXBkL2JhY2stbGRibS9pZGxfbmV3LmMgYi9sZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2lk bF9uZXcuYwotaW5kZXggNWZiY2FmZjJlLi4yZDk3ODM1M2YgMTAwNjQ0Ci0tLS0gYS9sZGFwL3Nl cnZlcnMvc2xhcGQvYmFjay1sZGJtL2lkbF9uZXcuYwotKysrIGIvbGRhcC9zZXJ2ZXJzL3NsYXBk L2JhY2stbGRibS9pZGxfbmV3LmMKLUBAIC00MTcsNyArNDE3LDYgQEAgaWRsX25ld19yYW5nZV9m ZXRjaCgKLSB7Ci0gICAgIGludCByZXQgPSAwOwotICAgICBpbnQgcmV0MiA9IDA7Ci0tICAgIGlu dCBpZGxfcmMgPSAwOwotICAgICBkYmlfY3Vyc29yX3QgY3Vyc29yID0gezB9OwotICAgICBJRExp c3QgKmlkbCA9IE5VTEw7Ci0gICAgIGRiaV92YWxfdCBjdXJfa2V5ID0gezB9OwotQEAgLTQzNiw2 ICs0MzUsNyBAQCBpZGxfbmV3X3JhbmdlX2ZldGNoKAotICAgICBzaXplX3QgbGVmdG92ZXJsZW4g PSAzMjsKLSAgICAgc2l6ZV90IGxlZnRvdmVyY250ID0gMDsKLSAgICAgY2hhciAqaW5kZXhfaWQg PSBnZXRfaW5kZXhfbmFtZShiZSwgZGIsIGFpKTsKLSsgICAgSWRSYW5nZV90ICppZHJhbmdlX2xp c3QgPSBOVUxMOwotIAotIAotICAgICBpZiAoTlVMTCA9PSBmbGFnX2VycikgewotQEAgLTU3OCwx MCArNTc4LDEyIEBAIGlkbF9uZXdfcmFuZ2VfZmV0Y2goCi0gICAgICAgICAgICAgICAgICAgICAg KiBmb3VuZCBlbnRyeSBpcyB0aGUgb25lIGZyb20gdGhlIHN1ZmZpeAotICAgICAgICAgICAgICAg ICAgICAgICovCi0gICAgICAgICAgICAgICAgICAgICBzdWZmaXggPSBrZXk7Ci0tICAgICAgICAg ICAgICAgICAgICBpZGxfcmMgPSBpZGxfYXBwZW5kX2V4dGVuZCgmaWRsLCBpZCk7Ci0tICAgICAg ICAgICAgICAgIH0gZWxzZSBpZiAoKGtleSA9PSBzdWZmaXgpIHx8IGlkbF9pZF9pc19pbl9pZGxp c3QoaWRsLCBrZXkpKSB7Ci0rICAgICAgICAgICAgICAgICAgICBpZGxfYXBwZW5kX2V4dGVuZCgm aWRsLCBpZCk7Ci0rICAgICAgICAgICAgICAgICAgICBpZHJhbmdlX2FkZF9pZCgmaWRyYW5nZV9s aXN0LCBpZCk7Ci0rICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKGtleSA9PSBzdWZmaXgpIHx8 IGlkbF9pZF9pc19pbl9pZGxpc3RfcmFuZ2VzKGlkbCwgaWRyYW5nZV9saXN0LCBrZXkpKSB7Ci0g ICAgICAgICAgICAgICAgICAgICAvKiB0aGUgcGFyZW50IGlzIHRoZSBzdWZmaXggb3IgYWxyZWFk eSBpbiBpZGwuICovCi0tICAgICAgICAgICAgICAgICAgICBpZGxfcmMgPSBpZGxfYXBwZW5kX2V4 dGVuZCgmaWRsLCBpZCk7Ci0rICAgICAgICAgICAgICAgICAgICBpZGxfYXBwZW5kX2V4dGVuZCgm aWRsLCBpZCk7Ci0rICAgICAgICAgICAgICAgICAgICBpZHJhbmdlX2FkZF9pZCgmaWRyYW5nZV9s aXN0LCBpZCk7Ci0gICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAg ICAvKiBPdGhlcndpc2UsIGtlZXAgdGhlIHtrZXksaWR9IGluIGxlZnRvdmVyIGFycmF5ICovCi0g ICAgICAgICAgICAgICAgICAgICBpZiAoIWxlZnRvdmVyKSB7Ci1AQCAtNTk2LDEzICs1OTgsNyBA QCBpZGxfbmV3X3JhbmdlX2ZldGNoKAotICAgICAgICAgICAgICAgICAgICAgbGVmdG92ZXJjbnQr KzsKLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAg ICAgICAgIGlkbF9yYyA9IGlkbF9hcHBlbmRfZXh0ZW5kKCZpZGwsIGlkKTsKLS0gICAgICAgICAg ICB9Ci0tICAgICAgICAgICAgaWYgKGlkbF9yYykgewotLSAgICAgICAgICAgICAgICBzbGFwaV9s b2dfZXJyKFNMQVBJX0xPR19FUlIsICJpZGxfbmV3X3JhbmdlX2ZldGNoIiwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGV4dGVuZCBpZCBsaXN0IChlcnI9JWQpXG4i LCBpZGxfcmMpOwotLSAgICAgICAgICAgICAgICBpZGxfZnJlZSgmaWRsKTsKLS0gICAgICAgICAg ICAgICAgZ290byBlcnJvcjsKLSsgICAgICAgICAgICAgICAgaWRsX2FwcGVuZF9leHRlbmQoJmlk bCwgaWQpOwotICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICBjb3VudCsrOwotQEAgLTY5 NSwyMSArNjkxLDE3IEBAIGVycm9yOgotIAotICAgICAgICAgd2hpbGUocmVtYWluaW5nID4gMCkg ewotICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVmdG92ZXJjbnQ7IGkrKykg ewotLSAgICAgICAgICAgICAgICBpZiAobGVmdG92ZXJbaV0ua2V5ID4gMCAmJiBpZGxfaWRfaXNf aW5faWRsaXN0KGlkbCwgbGVmdG92ZXJbaV0ua2V5KSAhPSAwKSB7Ci0rICAgICAgICAgICAgICAg IGlmIChsZWZ0b3ZlcltpXS5rZXkgPiAwICYmIGlkbF9pZF9pc19pbl9pZGxpc3RfcmFuZ2VzKGlk bCwgaWRyYW5nZV9saXN0LCBsZWZ0b3ZlcltpXS5rZXkpICE9IDApIHsKLSAgICAgICAgICAgICAg ICAgICAgIC8qIGlmIHRoZSBsZWZ0b3ZlciBrZXkgaGFzIGl0cyBwYXJlbnQgaW4gdGhlIGlkbCAq LwotLSAgICAgICAgICAgICAgICAgICAgaWRsX3JjID0gaWRsX2FwcGVuZF9leHRlbmQoJmlkbCwg bGVmdG92ZXJbaV0uaWQpOwotLSAgICAgICAgICAgICAgICAgICAgaWYgKGlkbF9yYykgewotLSAg ICAgICAgICAgICAgICAgICAgICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX0VSUiwgImlkbF9u ZXdfcmFuZ2VfZmV0Y2giLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IlVuYWJsZSB0byBleHRlbmQgaWQgbGlzdCAoZXJyPSVkKVxuIiwgaWRsX3JjKTsKLS0gICAgICAg ICAgICAgICAgICAgICAgICBpZGxfZnJlZSgmaWRsKTsKLS0gICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gTlVMTDsKLS0gICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAg ICAgIGlkbF9hcHBlbmRfZXh0ZW5kKCZpZGwsIGxlZnRvdmVyW2ldLmlkKTsKLSsgICAgICAgICAg ICAgICAgICAgIGlkcmFuZ2VfYWRkX2lkKCZpZHJhbmdlX2xpc3QsIGxlZnRvdmVyW2ldLmlkKTsK LSAgICAgICAgICAgICAgICAgICAgIGxlZnRvdmVyW2ldLmtleSA9IDA7Ci0gICAgICAgICAgICAg ICAgICAgICByZW1haW5pbmctLTsKLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0K LSAgICAgICAgIH0KLSAgICAgICAgIHNsYXBpX2NoX2ZyZWUoKHZvaWQgKiopJmxlZnRvdmVyKTsK LSsgICAgICAgIGlkcmFuZ2VfZnJlZSgmaWRyYW5nZV9saXN0KTsKLSAgICAgfQotICAgICBzbGFw aV9sb2dfZXJyKFNMQVBJX0xPR19GSUxURVIsICJpZGxfbmV3X3JhbmdlX2ZldGNoIiwKLSAgICAg ICAgICAgICAgICAgICAiRm91bmQgJWQgY2FuZGlkYXRlczsgZXJyb3IgY29kZSBpczogJWRcbiIs Ci1kaWZmIC0tZ2l0IGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9wcm90by1iYWNrLWxk Ym0uaCBiL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vcHJvdG8tYmFjay1sZGJtLmgKLWlu ZGV4IDkxZDYxMDk4YS4uMzBhN2FhMTFmIDEwMDY0NAotLS0tIGEvbGRhcC9zZXJ2ZXJzL3NsYXBk L2JhY2stbGRibS9wcm90by1iYWNrLWxkYm0uaAotKysrIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL2Jh Y2stbGRibS9wcm90by1iYWNrLWxkYm0uaAotQEAgLTIxNyw2ICsyMTcsOSBAQCBJRCBpZGxfZmly c3RpZChJRExpc3QgKmlkbCk7Ci0gSUQgaWRsX25leHRpZChJRExpc3QgKmlkbCwgSUQgaWQpOwot IGludCBpZGxfaW5pdF9wcml2YXRlKGJhY2tlbmQgKmJlLCBzdHJ1Y3QgYXR0cmluZm8gKmEpOwot IGludCBpZGxfcmVsZWFzZV9wcml2YXRlKHN0cnVjdCBhdHRyaW5mbyAqYSk7Ci0rSWRSYW5nZV90 ICppZHJhbmdlX2FkZF9pZChJZFJhbmdlX3QgKipoZWFkLCBJRCBpZCk7Ci0rdm9pZCBpZHJhbmdl X2ZyZWUoSWRSYW5nZV90ICoqaGVhZCk7Ci0raW50IGlkbF9pZF9pc19pbl9pZGxpc3RfcmFuZ2Vz KElETGlzdCAqaWRsLCBJZFJhbmdlX3QgKmlkcmFuZ2VfbGlzdCwgSUQgaWQpOwotIGludCBpZGxf aWRfaXNfaW5faWRsaXN0KElETGlzdCAqaWRsLCBJRCBpZCk7Ci0gCi0gaWRsX2l0ZXJhdG9yIGlk bF9pdGVyYXRvcl9pbml0KGNvbnN0IElETGlzdCAqaWRsKTsKLS0tIAotMi41Mi4wCi0KCmRpZmYg LS1naXQgYS8wMDA2LUlzc3VlLVJldmlzZS1wYWdlZC1yZXN1bHQtc2VhcmNoLWxvY2tpbmcucGF0 Y2ggYi8wMDA2LUlzc3VlLVJldmlzZS1wYWdlZC1yZXN1bHQtc2VhcmNoLWxvY2tpbmcucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwZTdkZDUuLjAwMDAwMDAKLS0tIGEvMDAw Ni1Jc3N1ZS1SZXZpc2UtcGFnZWQtcmVzdWx0LXNlYXJjaC1sb2NraW5nLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsNzY1ICswLDAgQEAKLUZyb20gNmYzYmY1YTQ4ZDUwNDY0Njc1MWJlOWU5MTI5 MzQ4N2VlYzk3MmVkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmsgUmV5bm9s ZHMgPG1yZXlub2xkc0ByZWRoYXQuY29tPgotRGF0ZTogV2VkLCA3IEphbiAyMDI2IDE2OjU1OjI3 IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIElzc3VlIC0gUmV2aXNlIHBhZ2VkIHJlc3VsdCBzZWFy Y2ggbG9ja2luZwotCi1EZXNjcmlwdGlvbjoKLQotTW92ZSB0byBhIHNpbmdsZSBsb2NrIGFwcHJv YWNoIHZlcnNlcyBoYXZpbmcgdHdvIGxvY2tzLiBUaGlzIHdpbGwgaW1wYWN0Ci1jb25jdXJyZW5j eSB3aGVuIG11bHRpcGxlIGFzeW5jIHBhZ2VkIHJlc3VsdCBzZWFyY2hlcyBhcmUgZG9uZSBvbiB0 aGUgc2FtZQotY29ubmVjdGlvbiwgYnV0IGl0IHNpbXBsaWZpZXMgdGhlIGNvZGUgYW5kIGF2b2lk cyByYWNlIGNvbmRpdGlvbnMgYW5kCi1kZWFkbG9ja3MuCi0KLVJlbGF0ZXM6IGh0dHBzOi8vZ2l0 aHViLmNvbS8zODlkcy8zODktZHMtYmFzZS9pc3N1ZXMvNzExOAotCi1SZXZpZXdlZCBieTogcHJv Z2llciAmIHRib3JkYXogKFRoYW5rcyEhKQotLS0tCi0gbGRhcC9zZXJ2ZXJzL3NsYXBkL2FiYW5k b24uYyAgICAgIHwgICAyICstCi0gbGRhcC9zZXJ2ZXJzL3NsYXBkL29wc2hhcmVkLmMgICAgIHwg IDYwICsrKystLS0tCi0gbGRhcC9zZXJ2ZXJzL3NsYXBkL3BhZ2VkcmVzdWx0cy5jIHwgMjI4ICsr KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQotIGxkYXAvc2VydmVycy9zbGFwZC9wcm90by1z bGFwLmggICB8ICAyNiArKy0tCi0gbGRhcC9zZXJ2ZXJzL3NsYXBkL3NsYXAuaCAgICAgICAgIHwg ICA1ICstCi0gNSBmaWxlcyBjaGFuZ2VkLCAxODcgaW5zZXJ0aW9ucygrKSwgMTM0IGRlbGV0aW9u cygtKQotCi1kaWZmIC0tZ2l0IGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2FiYW5kb24uYyBiL2xkYXAv c2VydmVycy9zbGFwZC9hYmFuZG9uLmMKLWluZGV4IDYwMjRmY2QzMS4uMWY0N2M1MzFjIDEwMDY0 NAotLS0tIGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2FiYW5kb24uYwotKysrIGIvbGRhcC9zZXJ2ZXJz L3NsYXBkL2FiYW5kb24uYwotQEAgLTE3OSw3ICsxNzksNyBAQCBkb19hYmFuZG9uKFNsYXBpX1BC bG9jayAqcGIpCi0gICAgIGxvZ3BiLnR2X3NlYyA9IC0xOwotICAgICBsb2dwYi50dl9uc2VjID0g LTE7Ci0gCi0tICAgIGlmICgwID09IHBhZ2VkcmVzdWx0c19mcmVlX29uZV9tc2dpZChwYl9jb25u LCBpZCwgcGFnZXJlc3VsdF9sb2NrX2dldF9hZGRyKHBiX2Nvbm4pKSkgewotKyAgICBpZiAoMCA9 PSBwYWdlZHJlc3VsdHNfZnJlZV9vbmVfbXNnaWQocGJfY29ubiwgaWQsIFBSX05PVF9MT0NLRUQp KSB7Ci0gICAgICAgICBpZiAobG9nX2Zvcm1hdCAhPSBMT0dfRk9STUFUX0RFRkFVTFQpIHsKLSAg ICAgICAgICAgICAvKiBKU09OIGxvZ2dpbmcgKi8KLSAgICAgICAgICAgICBsb2dwYi50YXJnZXRf b3AgPSAiU2ltcGxlIFBhZ2VkIFJlc3VsdHMiOwotZGlmZiAtLWdpdCBhL2xkYXAvc2VydmVycy9z bGFwZC9vcHNoYXJlZC5jIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL29wc2hhcmVkLmMKLWluZGV4IGE1 Y2RkZmQyMy4uYmY4MDBmN2RjIDEwMDY0NAotLS0tIGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL29wc2hh cmVkLmMKLSsrKyBiL2xkYXAvc2VydmVycy9zbGFwZC9vcHNoYXJlZC5jCi1AQCAtNTcyLDggKzU3 Miw4IEBAIG9wX3NoYXJlZF9zZWFyY2goU2xhcGlfUEJsb2NrICpwYiwgaW50IHNlbmRfcmVzdWx0 KQotICAgICAgICAgICAgICAgICAgICAgICAgIGJlID0gYmVfbGlzdFtpbmRleF07Ci0gICAgICAg ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICAgICAgcHJf c2VhcmNoX3Jlc3VsdCA9IHBhZ2VkcmVzdWx0c19nZXRfc2VhcmNoX3Jlc3VsdChwYl9jb25uLCBv cGVyYXRpb24sIDAgLypub3QgbG9ja2VkKi8sIHByX2lkeCk7Ci0tICAgICAgICAgICAgICAgIGVz dGltYXRlID0gcGFnZWRyZXN1bHRzX2dldF9zZWFyY2hfcmVzdWx0X3NldF9zaXplX2VzdGltYXRl KHBiX2Nvbm4sIG9wZXJhdGlvbiwgcHJfaWR4KTsKLSsgICAgICAgICAgICAgICAgcHJfc2VhcmNo X3Jlc3VsdCA9IHBhZ2VkcmVzdWx0c19nZXRfc2VhcmNoX3Jlc3VsdChwYl9jb25uLCBvcGVyYXRp b24sIFBSX05PVF9MT0NLRUQsIHByX2lkeCk7Ci0rICAgICAgICAgICAgICAgIGVzdGltYXRlID0g cGFnZWRyZXN1bHRzX2dldF9zZWFyY2hfcmVzdWx0X3NldF9zaXplX2VzdGltYXRlKHBiX2Nvbm4s IG9wZXJhdGlvbiwgUFJfTk9UX0xPQ0tFRCwgcHJfaWR4KTsKLSAgICAgICAgICAgICAgICAgLyog U2V0IG9wZXJhdGlvbiBub3RlIGZsYWdzIGFzIHJlcXVpcmVkLiAqLwotICAgICAgICAgICAgICAg ICBpZiAocGFnZWRyZXN1bHRzX2dldF91bmluZGV4ZWQocGJfY29ubiwgb3BlcmF0aW9uLCBwcl9p ZHgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICBzbGFwaV9wYmxvY2tfc2V0X2ZsYWdfb3BlcmF0 aW9uX25vdGVzKHBiLCBTTEFQSV9PUF9OT1RFX1VOSU5ERVhFRCk7Ci1AQCAtNjE5LDE0ICs2MTks NyBAQCBvcF9zaGFyZWRfc2VhcmNoKFNsYXBpX1BCbG9jayAqcGIsIGludCBzZW5kX3Jlc3VsdCkK LSAgICAgICAgICAgICBpbnQzMl90IHRsaW1pdDsKLSAgICAgICAgICAgICBzbGFwaV9wYmxvY2tf Z2V0KHBiLCBTTEFQSV9TRUFSQ0hfVElNRUxJTUlULCAmdGxpbWl0KTsKLSAgICAgICAgICAgICBw YWdlZHJlc3VsdHNfc2V0X3RpbWVsaW1pdChwYl9jb25uLCBvcGVyYXRpb24sICh0aW1lX3QpdGxp bWl0LCBwcl9pZHgpOwotLSAgICAgICAgICAgIC8qIFdoZW4gdXNpbmcgdGhpcyBtdXRleCBpbiBj b25qdW5jdGlvbiB3aXRoIHRoZSBtYWluIHBhZ2VkCi0tICAgICAgICAgICAgICogcmVzdWx0IGxv Y2ssIHlvdSBtdXN0IGRvIHNvIGluIHRoaXMgb3JkZXI6Ci0tICAgICAgICAgICAgICoKLS0gICAg ICAgICAgICAgKiAtLT4gcGFnZWRyZXN1bHRzX2xvY2soKQotLSAgICAgICAgICAgICAqICAgIC0t PiBwYWdlZHJlc3VsdHNfbXV0ZXgKLS0gICAgICAgICAgICAgKiAgICA8LS0gcGFnZWRyZXN1bHRz X211dGV4Ci0tICAgICAgICAgICAgICogPC0tIHBhZ2VkcmVzdWx0c191bmxvY2soKQotLSAgICAg ICAgICAgICAqLwotKyAgICAgICAgICAgIC8qIElNUE9SVEFOVDogTmV2ZXIgYWNxdWlyZSBwYWdl ZHJlc3VsdHNfbXV0ZXggd2hlbiBob2xkaW5nIGNfbXV0ZXguICovCi0gICAgICAgICAgICAgcGFn ZWRyZXN1bHRzX211dGV4ID0gcGFnZXJlc3VsdF9sb2NrX2dldF9hZGRyKHBiX2Nvbm4pOwotICAg ICAgICAgfQotIAotQEAgLTc0MywxNyArNzM2LDE1IEBAIG9wX3NoYXJlZF9zZWFyY2goU2xhcGlf UEJsb2NrICpwYiwgaW50IHNlbmRfcmVzdWx0KQotICAgICAgICAgaWYgKG9wX2lzX3BhZ2VkcmVz dWx0cyhvcGVyYXRpb24pICYmIHByX3NlYXJjaF9yZXN1bHQpIHsKLSAgICAgICAgICAgICB2b2lk ICpzciA9IE5VTEw7Ci0gICAgICAgICAgICAgLyogUEFHRUQgUkVTVUxUUyBhbmQgYWxyZWFkeSBo YXZlIHRoZSBzZWFyY2ggcmVzdWx0cyBmcm9tIHRoZSBwcmV2IG9wICovCi0tICAgICAgICAgICAg cGFnZWRyZXN1bHRzX2xvY2socGJfY29ubiwgcHJfaWR4KTsKLSAgICAgICAgICAgICAvKgotICAg ICAgICAgICAgICAqIEluIGFzeW5jIHBhZ2VkIHJlc3VsdCBjYXNlLCB0aGUgc2VhcmNoIHJlc3Vs dCBtaWdodCBiZSByZWxlYXNlZAotICAgICAgICAgICAgICAqIGJ5IG90aGVyIHRoZWFkcy4gIFdl IG5lZWQgdG8gZG91YmxlIGNoZWNrIGl0IGluIHRoZSBsb2NrZWQgcmVnaW9uLgotICAgICAgICAg ICAgICAqLwotICAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jayhwYWdlZHJlc3VsdHNfbXV0 ZXgpOwotLSAgICAgICAgICAgIHByX3NlYXJjaF9yZXN1bHQgPSBwYWdlZHJlc3VsdHNfZ2V0X3Nl YXJjaF9yZXN1bHQocGJfY29ubiwgb3BlcmF0aW9uLCAxIC8qbG9ja2VkKi8sIHByX2lkeCk7Ci0r ICAgICAgICAgICAgcHJfc2VhcmNoX3Jlc3VsdCA9IHBhZ2VkcmVzdWx0c19nZXRfc2VhcmNoX3Jl c3VsdChwYl9jb25uLCBvcGVyYXRpb24sIFBSX0xPQ0tFRCwgcHJfaWR4KTsKLSAgICAgICAgICAg ICBpZiAocHJfc2VhcmNoX3Jlc3VsdCkgewotLSAgICAgICAgICAgICAgICBpZiAocGFnZWRyZXN1 bHRzX2lzX2FiYW5kb25lZF9vcl9ub3RhdmFpbGFibGUocGJfY29ubiwgMSAvKmxvY2tlZCovLCBw cl9pZHgpKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChwYWdlZHJlc3VsdHNfaXNfYWJhbmRvbmVk X29yX25vdGF2YWlsYWJsZShwYl9jb25uLCBQUl9MT0NLRUQsIHByX2lkeCkpIHsKLSAgICAgICAg ICAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKHBhZ2VkcmVzdWx0c19tdXRleCk7Ci0t ICAgICAgICAgICAgICAgICAgICBwYWdlZHJlc3VsdHNfdW5sb2NrKHBiX2Nvbm4sIHByX2lkeCk7 Ci0gICAgICAgICAgICAgICAgICAgICAvKiBQcmV2aW91cyBvcGVyYXRpb24gd2FzIGFiYW5kb25l ZCBhbmQgdGhlIHNpbXBsZXBhZ2VkIG9iamVjdCBpcyBub3QgaW4gdXNlLiAqLwotICAgICAgICAg ICAgICAgICAgICAgc2VuZF9sZGFwX3Jlc3VsdChwYiwgMCwgTlVMTCwgIlNpbXBsZSBQYWdlZCBS ZXN1bHRzIFNlYXJjaCBhYmFuZG9uZWQiLCAwLCBOVUxMKTsKLSAgICAgICAgICAgICAgICAgICAg IHJjID0gTERBUF9TVUNDRVNTOwotQEAgLTc2NCwxNCArNzU1LDEzIEBAIG9wX3NoYXJlZF9zZWFy Y2goU2xhcGlfUEJsb2NrICpwYiwgaW50IHNlbmRfcmVzdWx0KQotIAotICAgICAgICAgICAgICAg ICAgICAgLyogc2VhcmNoIHJlc3VsdCBjb3VsZCBiZSByZXNldCBpbiB0aGUgYmFja2VuZC9kc2Ug Ki8KLSAgICAgICAgICAgICAgICAgICAgIHNsYXBpX3BibG9ja19nZXQocGIsIFNMQVBJX1NFQVJD SF9SRVNVTFRfU0VULCAmc3IpOwotLSAgICAgICAgICAgICAgICAgICAgcGFnZWRyZXN1bHRzX3Nl dF9zZWFyY2hfcmVzdWx0KHBiX2Nvbm4sIG9wZXJhdGlvbiwgc3IsIDEgLypsb2NrZWQqLywgcHJf aWR4KTsKLSsgICAgICAgICAgICAgICAgICAgIHBhZ2VkcmVzdWx0c19zZXRfc2VhcmNoX3Jlc3Vs dChwYl9jb25uLCBvcGVyYXRpb24sIHNyLCBQUl9MT0NLRUQsIHByX2lkeCk7Ci0gICAgICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICBwcl9zdGF0 ID0gUEFHRURSRVNVTFRTX1NFQVJDSF9FTkQ7Ci0gICAgICAgICAgICAgICAgIHJjID0gTERBUF9T VUNDRVNTOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9j ayhwYWdlZHJlc3VsdHNfbXV0ZXgpOwotLSAgICAgICAgICAgIHBhZ2VkcmVzdWx0c191bmxvY2so cGJfY29ubiwgcHJfaWR4KTsKLSAKLSAgICAgICAgICAgICBpZiAoKFBBR0VEUkVTVUxUU19TRUFS Q0hfRU5EID09IHByX3N0YXQpIHx8ICgwID09IHBuZW50cmllcykpIHsKLSAgICAgICAgICAgICAg ICAgLyogbm8gbW9yZSBlbnRyaWVzIHRvIHNlbmQgaW4gdGhlIGJhY2tlbmQgKi8KLUBAIC03ODks MjIgKzc3OSwyMiBAQCBvcF9zaGFyZWRfc2VhcmNoKFNsYXBpX1BCbG9jayAqcGIsIGludCBzZW5k X3Jlc3VsdCkKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgcGFnZWRyZXN1bHRzX3NldF9y ZXNwb25zZV9jb250cm9sKHBiLCAwLCBlc3RpbWF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY3Vycl9zZWFyY2hfY291bnQsIHByX2lkeCk7Ci0tICAg ICAgICAgICAgaWYgKHBhZ2VkcmVzdWx0c19nZXRfd2l0aF9zb3J0KHBiX2Nvbm4sIG9wZXJhdGlv biwgcHJfaWR4KSkgewotKyAgICAgICAgICAgIGlmIChwYWdlZHJlc3VsdHNfZ2V0X3dpdGhfc29y dChwYl9jb25uLCBvcGVyYXRpb24sIFBSX05PVF9MT0NLRUQsIHByX2lkeCkpIHsKLSAgICAgICAg ICAgICAgICAgc29ydF9tYWtlX3NvcnRfcmVzcG9uc2VfY29udHJvbChwYiwgQ09OTl9HRVRfU09S VF9SRVNVTFRfQ09ERSwgTlVMTCk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIHBhZ2Vk cmVzdWx0c19zZXRfc2VhcmNoX3Jlc3VsdF9zZXRfc2l6ZV9lc3RpbWF0ZShwYl9jb25uLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvcGVyYXRpb24sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVzdGltYXRlLCBwcl9pZHgpOwotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlc3RpbWF0ZSwgUFJf Tk9UX0xPQ0tFRCwgcHJfaWR4KTsKLSAgICAgICAgICAgICBpZiAoUEFHRURSRVNVTFRTX1NFQVJD SF9FTkQgPT0gcHJfc3RhdCkgewotLSAgICAgICAgICAgICAgICBwYWdlZHJlc3VsdHNfbG9jayhw Yl9jb25uLCBwcl9pZHgpOwotKyAgICAgICAgICAgICAgICBwdGhyZWFkX211dGV4X2xvY2socGFn ZWRyZXN1bHRzX211dGV4KTsKLSAgICAgICAgICAgICAgICAgc2xhcGlfcGJsb2NrX3NldChwYiwg U0xBUElfU0VBUkNIX1JFU1VMVF9TRVQsIE5VTEwpOwotLSAgICAgICAgICAgICAgICBpZiAoIXBh Z2VkcmVzdWx0c19pc19hYmFuZG9uZWRfb3Jfbm90YXZhaWxhYmxlKHBiX2Nvbm4sIDAgLypub3Qg bG9ja2VkKi8sIHByX2lkeCkpIHsKLS0gICAgICAgICAgICAgICAgICAgIHBhZ2VkcmVzdWx0c19m cmVlX29uZShwYl9jb25uLCBvcGVyYXRpb24sIHByX2lkeCk7Ci0rICAgICAgICAgICAgICAgIGlm ICghcGFnZWRyZXN1bHRzX2lzX2FiYW5kb25lZF9vcl9ub3RhdmFpbGFibGUocGJfY29ubiwgUFJf TE9DS0VELCBwcl9pZHgpKSB7Ci0rICAgICAgICAgICAgICAgICAgICBwYWdlZHJlc3VsdHNfZnJl ZV9vbmUocGJfY29ubiwgb3BlcmF0aW9uLCBQUl9MT0NLRUQsIHByX2lkeCk7Ci0gICAgICAgICAg ICAgICAgIH0KLS0gICAgICAgICAgICAgICAgcGFnZWRyZXN1bHRzX3VubG9jayhwYl9jb25uLCBw cl9pZHgpOwotKyAgICAgICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jayhwYWdlZHJlc3Vs dHNfbXV0ZXgpOwotICAgICAgICAgICAgICAgICBpZiAobmV4dF9iZSkgewotICAgICAgICAgICAg ICAgICAgICAgLyogbm8gbW9yZSBlbnRyaWVzLCBidXQgYXQgbGVhc3QgYW5vdGhlciBiYWNrZW5k ICovCi0tICAgICAgICAgICAgICAgICAgICBpZiAocGFnZWRyZXN1bHRzX3NldF9jdXJyZW50X2Jl KHBiX2Nvbm4sIG5leHRfYmUsIHByX2lkeCwgMCkgPCAwKSB7Ci0rICAgICAgICAgICAgICAgICAg ICBpZiAocGFnZWRyZXN1bHRzX3NldF9jdXJyZW50X2JlKHBiX2Nvbm4sIG5leHRfYmUsIHByX2lk eCwgUFJfTk9UX0xPQ0tFRCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZ290byBm cmVlX2FuZF9yZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg IH0KLUBAIC05MTUsNyArOTA1LDcgQEAgb3Bfc2hhcmVkX3NlYXJjaChTbGFwaV9QQmxvY2sgKnBi LCBpbnQgc2VuZF9yZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgcGFnZWRyZXN1bHRzX3NldF9zZWFy Y2hfcmVzdWx0KHBiX2Nvbm4sIG9wZXJhdGlvbiwgTlVMTCwgMSwgcHJfaWR4KTsKLS0gICAgICAg ICAgICAgICAgICAgIHJjID0gcGFnZWRyZXN1bHRzX3NldF9jdXJyZW50X2JlKHBiX2Nvbm4sIE5V TEwsIHByX2lkeCwgMSk7Ci0rICAgICAgICAgICAgICAgICAgICByYyA9IHBhZ2VkcmVzdWx0c19z ZXRfY3VycmVudF9iZShwYl9jb25uLCBOVUxMLCBwcl9pZHgsIFBSX0xPQ0tFRCk7Ci0gICAgICAg ICAgICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jayhwYWdlZHJlc3VsdHNfbXV0ZXgpOwot ICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCi0gICAgICAgICAgICAgICAgIH0KLUBAIC05NTQs NyArOTQ0LDcgQEAgb3Bfc2hhcmVkX3NlYXJjaChTbGFwaV9QQmxvY2sgKnBiLCBpbnQgc2VuZF9y ZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKHBhZ2Vk cmVzdWx0c19tdXRleCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcGFnZWRyZXN1bHRzX3Nl dF9zZWFyY2hfcmVzdWx0KHBiX2Nvbm4sIG9wZXJhdGlvbiwgTlVMTCwgMSwgcHJfaWR4KTsKLSAg ICAgICAgICAgICAgICAgICAgICAgICBiZS0+YmVfc2VhcmNoX3Jlc3VsdHNfcmVsZWFzZSgmc3Ip OwotLSAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gcGFnZWRyZXN1bHRzX3NldF9jdXJyZW50 X2JlKHBiX2Nvbm4sIG5leHRfYmUsIHByX2lkeCwgMSk7Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgcmMgPSBwYWdlZHJlc3VsdHNfc2V0X2N1cnJlbnRfYmUocGJfY29ubiwgbmV4dF9iZSwgcHJf aWR4LCBQUl9MT0NLRUQpOwotICAgICAgICAgICAgICAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhf dW5sb2NrKHBhZ2VkcmVzdWx0c19tdXRleCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcHJf c3RhdCA9IFBBR0VEUkVTVUxUU19TRUFSQ0hfRU5EOyAvKiBtYWtlIHN1cmUgc3RhdCBpcyBTRUFS Q0hfRU5EICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE5VTEwgPT0gbmV4dF9iZSkg ewotQEAgLTk2NywyMyArOTU3LDIzIEBAIG9wX3NoYXJlZF9zZWFyY2goU2xhcGlfUEJsb2NrICpw YiwgaW50IHNlbmRfcmVzdWx0KQotICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgICAgICAgICAgICAgICBjdXJyX3NlYXJjaF9jb3VudCA9IHBuZW50cmllczsKLSAgICAg ICAgICAgICAgICAgICAgICAgICBzbGFwaV9wYmxvY2tfZ2V0KHBiLCBTTEFQSV9TRUFSQ0hfUkVT VUxUX1NFVF9TSVpFX0VTVElNQVRFLCAmZXN0aW1hdGUpOwotLSAgICAgICAgICAgICAgICAgICAg ICAgIHBhZ2VkcmVzdWx0c19sb2NrKHBiX2Nvbm4sIHByX2lkeCk7Ci0tICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKChwYWdlZHJlc3VsdHNfc2V0X2N1cnJlbnRfYmUocGJfY29ubiwgYmUsIHBy X2lkeCwgMCkgPCAwKSB8fAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZWRyZXN1 bHRzX3NldF9zZWFyY2hfcmVzdWx0KHBiX2Nvbm4sIG9wZXJhdGlvbiwgc3IsIDAsIHByX2lkeCkg PCAwKSB8fAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZWRyZXN1bHRzX3NldF9z ZWFyY2hfcmVzdWx0X2NvdW50KHBiX2Nvbm4sIG9wZXJhdGlvbiwgY3Vycl9zZWFyY2hfY291bnQs IHByX2lkeCkgPCAwKSB8fAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZWRyZXN1 bHRzX3NldF9zZWFyY2hfcmVzdWx0X3NldF9zaXplX2VzdGltYXRlKHBiX2Nvbm4sIG9wZXJhdGlv biwgZXN0aW1hdGUsIHByX2lkeCkgPCAwKSB8fAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAocGFnZWRyZXN1bHRzX3NldF93aXRoX3NvcnQocGJfY29ubiwgb3BlcmF0aW9uLCB3aXRoX3Nv cnQsIHByX2lkeCkgPCAwKSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlZHJl c3VsdHNfdW5sb2NrKHBiX2Nvbm4sIHByX2lkeCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAg cHRocmVhZF9tdXRleF9sb2NrKHBhZ2VkcmVzdWx0c19tdXRleCk7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKChwYWdlZHJlc3VsdHNfc2V0X2N1cnJlbnRfYmUocGJfY29ubiwgYmUsIHBy X2lkeCwgUFJfTE9DS0VEKSA8IDApIHx8Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIChw YWdlZHJlc3VsdHNfc2V0X3NlYXJjaF9yZXN1bHQocGJfY29ubiwgb3BlcmF0aW9uLCBzciwgUFJf TE9DS0VELCBwcl9pZHgpIDwgMCkgfHwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBh Z2VkcmVzdWx0c19zZXRfc2VhcmNoX3Jlc3VsdF9jb3VudChwYl9jb25uLCBvcGVyYXRpb24sIGN1 cnJfc2VhcmNoX2NvdW50LCBQUl9MT0NLRUQsIHByX2lkeCkgPCAwKSB8fAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAocGFnZWRyZXN1bHRzX3NldF9zZWFyY2hfcmVzdWx0X3NldF9zaXpl X2VzdGltYXRlKHBiX2Nvbm4sIG9wZXJhdGlvbiwgZXN0aW1hdGUsIFBSX0xPQ0tFRCwgcHJfaWR4 KSA8IDApIHx8Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlZHJlc3VsdHNfc2V0 X3dpdGhfc29ydChwYl9jb25uLCBvcGVyYXRpb24sIHdpdGhfc29ydCwgUFJfTE9DS0VELCBwcl9p ZHgpIDwgMCkpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRocmVhZF9tdXRleF91 bmxvY2socGFnZWRyZXN1bHRzX211dGV4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2FjaGVfcmV0dXJuX3RhcmdldF9lbnRyeShwYiwgYmUsIG9wZXJhdGlvbik7Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdvdG8gZnJlZV9hbmRfcmV0dXJuOwotICAgICAgICAgICAgICAg ICAgICAgICAgIH0KLS0gICAgICAgICAgICAgICAgICAgICAgICBwYWdlZHJlc3VsdHNfdW5sb2Nr KHBiX2Nvbm4sIHByX2lkeCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcHRocmVhZF9tdXRl eF91bmxvY2socGFnZWRyZXN1bHRzX211dGV4KTsKLSAgICAgICAgICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgICAgICAgICAgIHNsYXBpX3BibG9ja19zZXQocGIsIFNMQVBJX1NFQVJDSF9SRVNV TFRfU0VULCBOVUxMKTsKLSAgICAgICAgICAgICAgICAgICAgIG5leHRfYmUgPSBOVUxMOyAvKiB0 byBicmVhayB0aGUgbG9vcCAqLwotICAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhdGlvbi0+ b19zdGF0dXMgJiBTTEFQSV9PUF9TVEFUVVNfQUJBTkRPTkVEKSB7Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgLyogSXQgdHVybmVkIG91dCB0aGlzIHNlYXJjaCB3YXMgYWJhbmRvbmVkLiAqLwot LSAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VkcmVzdWx0c19mcmVlX29uZV9tc2dpZChwYl9j b25uLCBvcGVyYXRpb24tPm9fbXNnaWQsIHBhZ2VkcmVzdWx0c19tdXRleCk7Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgcGFnZWRyZXN1bHRzX2ZyZWVfb25lX21zZ2lkKHBiX2Nvbm4sIG9wZXJh dGlvbi0+b19tc2dpZCwgUFJfTk9UX0xPQ0tFRCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg LyogcGFnZWQtcmVzdWx0cy1yZXF1ZXN0IHdhcyBhYmFuZG9uZWQ7IG1ha2luZyBhbiBlbXB0eSBj b29raWUuICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGFnZWRyZXN1bHRzX3NldF9yZXNw b25zZV9jb250cm9sKHBiLCAwLCBlc3RpbWF0ZSwgLTEsIHByX2lkeCk7Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgc2VuZF9sZGFwX3Jlc3VsdChwYiwgMCwgTlVMTCwgIlNpbXBsZSBQYWdlZCBS ZXN1bHRzIFNlYXJjaCBhYmFuZG9uZWQiLCAwLCBOVUxMKTsKLUBAIC05OTMsNyArOTgzLDcgQEAg b3Bfc2hhcmVkX3NlYXJjaChTbGFwaV9QQmxvY2sgKnBiLCBpbnQgc2VuZF9yZXN1bHQpCi0gICAg ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICBwYWdlZHJlc3VsdHNfc2V0 X3Jlc3BvbnNlX2NvbnRyb2wocGIsIDAsIGVzdGltYXRlLCBjdXJyX3NlYXJjaF9jb3VudCwgcHJf aWR4KTsKLSAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyX3NlYXJjaF9jb3VudCA9PSAtMSkg ewotLSAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VkcmVzdWx0c19mcmVlX29uZShwYl9jb25u LCBvcGVyYXRpb24sIHByX2lkeCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcGFnZWRyZXN1 bHRzX2ZyZWVfb25lKHBiX2Nvbm4sIG9wZXJhdGlvbiwgUFJfTk9UX0xPQ0tFRCwgcHJfaWR4KTsK LSAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgfQotIAotZGlmZiAtLWdp dCBhL2xkYXAvc2VydmVycy9zbGFwZC9wYWdlZHJlc3VsdHMuYyBiL2xkYXAvc2VydmVycy9zbGFw ZC9wYWdlZHJlc3VsdHMuYwotaW5kZXggOTQxYWI5N2UzLi4wZDZjNGExYWEgMTAwNjQ0Ci0tLS0g YS9sZGFwL3NlcnZlcnMvc2xhcGQvcGFnZWRyZXN1bHRzLmMKLSsrKyBiL2xkYXAvc2VydmVycy9z bGFwZC9wYWdlZHJlc3VsdHMuYwotQEAgLTM0LDkgKzM0LDkgQEAgcGFnZXJlc3VsdF9sb2NrX2Ns ZWFudXAoKQotICAgICBzbGFwaV9jaF9mcmVlKCh2b2lkKiopJmxvY2tfaGFzaCk7Ci0gfQotIAot LS8qIEJld2FyZSB0byB0aGUgbG9jayBvcmRlciB3aXRoIGNfbXV0ZXg6Ci0tICogY19tdXRleCBp cyBzb21ldGltZSBsb2NrZWQgd2hpbGUgaG9sZGluZyBwYWdlcmVzdWx0X2xvY2sKLS0gKiA9PT4g RG8gbm90IGxvY2sgcGFnZXJlc3VsdF9sb2NrIHdoZW4gaG9saW5nIGNfbXV0ZXgKLSsvKiBMb2Nr IG9yZGVyaW5nIGNvbnN0cmFpbnQgd2l0aCBjX211dGV4OgotKyAqIGNfbXV0ZXggaXMgc29tZXRp bWVzIGxvY2tlZCB3aGlsZSBob2xkaW5nIHBhZ2VyZXN1bHRfbG9jay4KLSsgKiBUaGVyZWZvcmU6 IERPIE5PVCBhY3F1aXJlIHBhZ2VyZXN1bHRfbG9jayB3aGVuIGhvbGRpbmcgY19tdXRleC4KLSAg Ki8KLSBwdGhyZWFkX211dGV4X3QgKgotIHBhZ2VyZXN1bHRfbG9ja19nZXRfYWRkcihDb25uZWN0 aW9uICpjb25uKQotQEAgLTQ0LDcgKzQ0LDExIEBAIHBhZ2VyZXN1bHRfbG9ja19nZXRfYWRkcihD b25uZWN0aW9uICpjb25uKQotICAgICByZXR1cm4gJmxvY2tfaGFzaFsoKChzaXplX3QpY29ubikv c2l6ZW9mIChDb25uZWN0aW9uKSklTE9DS19IQVNIX1NJWkVdOwotIH0KLSAKLS0vKiBoZWxwZXIg ZnVuY3Rpb24gdG8gY2xlYW4gdXAgb25lIHBycCBzbG90ICovCi0rLyogaGVscGVyIGZ1bmN0aW9u IHRvIGNsZWFuIHVwIG9uZSBwcnAgc2xvdAotKyAqCi0rICogTk9URTogVGhpcyBmdW5jdGlvbiBt dXN0IGJlIGNhbGxlZCB3aGlsZSBob2xkaW5nIHRoZSBwYWdlcmVzdWx0X2xvY2sKLSsgKiAodmlh IHBhZ2VyZXN1bHRfbG9ja19nZXRfYWRkcihjb25uKSkgdG8gZW5zdXJlIHRocmVhZC1zYWZlIGNs ZWFudXAuCi0rICovCi0gc3RhdGljIHZvaWQKLSBfcHJfY2xlYW51cF9vbmVfc2xvdChQYWdlZFJl c3VsdHMgKnBycCkKLSB7Ci1AQCAtNTYsNyArNjAsNyBAQCBfcHJfY2xlYW51cF9vbmVfc2xvdChQ YWdlZFJlc3VsdHMgKnBycCkKLSAgICAgICAgIHBycC0+cHJfY3VycmVudF9iZS0+YmVfc2VhcmNo X3Jlc3VsdHNfcmVsZWFzZSgmKHBycC0+cHJfc2VhcmNoX3Jlc3VsdF9zZXQpKTsKLSAgICAgfQot IAotLSAgICAvKiBjbGVhbiB1cCB0aGUgc2xvdCBleGNlcHQgdGhlIG11dGV4ICovCi0rICAgIC8q IGNsZWFuIHVwIHRoZSBzbG90ICovCi0gICAgIHBycC0+cHJfY3VycmVudF9iZSA9IE5VTEw7Ci0g ICAgIHBycC0+cHJfc2VhcmNoX3Jlc3VsdF9zZXQgPSBOVUxMOwotICAgICBwcnAtPnByX3NlYXJj aF9yZXN1bHRfY291bnQgPSAwOwotQEAgLTEzNiw2ICsxNDAsOCBAQCBwYWdlZHJlc3VsdHNfcGFy c2VfY29udHJvbF92YWx1ZShTbGFwaV9QQmxvY2sgKnBiLAotICAgICAgICAgcmV0dXJuIExEQVBf VU5XSUxMSU5HX1RPX1BFUkZPUk07Ci0gICAgIH0KLSAKLSsgICAgLyogQWNxdWlyZSBoYXNoLWJh c2VkIGxvY2sgZm9yIHBhZ2VkIHJlc3VsdHMgbGlzdCBhY2Nlc3MKLSsgICAgICogSU1QT1JUQU5U OiBOZXZlciBhY3F1aXJlIHRoaXMgbG9jayB3aGVuIGhvbGRpbmcgY19tdXRleCAqLwotICAgICBw dGhyZWFkX211dGV4X2xvY2socGFnZXJlc3VsdF9sb2NrX2dldF9hZGRyKGNvbm4pKTsKLSAgICAg LyogdGhlIGJlciBlbmNvZGluZyBpcyBubyBsb25nZXIgbmVlZGVkICovCi0gICAgIGJlcl9mcmVl KGJlciwgMSk7Ci1AQCAtMTg0LDEwICsxOTAsNiBAQCBwYWdlZHJlc3VsdHNfcGFyc2VfY29udHJv bF92YWx1ZShTbGFwaV9QQmxvY2sgKnBiLAotICAgICAgICAgICAgIGdvdG8gYmFpbDsKLSAgICAg ICAgIH0KLSAKLS0gICAgICAgIGlmICgoKmluZGV4ID4gLTEpICYmICgqaW5kZXggPCBjb25uLT5j X3BhZ2VkcmVzdWx0cy5wcmxfbWF4bGVuKSAmJgotLSAgICAgICAgICAgICFjb25uLT5jX3BhZ2Vk cmVzdWx0cy5wcmxfbGlzdFsqaW5kZXhdLnByX211dGV4KSB7Ci0tICAgICAgICAgICAgY29ubi0+ Y19wYWdlZHJlc3VsdHMucHJsX2xpc3RbKmluZGV4XS5wcl9tdXRleCA9IFBSX05ld0xvY2soKTsK LS0gICAgICAgIH0KLSAgICAgICAgIGNvbm4tPmNfcGFnZWRyZXN1bHRzLnBybF9jb3VudCsrOwot ICAgICB9IGVsc2UgewotICAgICAgICAgLyogUmVwZWF0ZWQgcGFnZWQgcmVzdWx0cyByZXF1ZXN0 LgotQEAgLTMyNyw4ICszMjksMTQgQEAgYmFpbG91dDoKLSAgICAgICAgICAgICAgICAgICAiPD0g aWR4PSVkXG4iLCBpbmRleCk7Ci0gfQotIAotKy8qCi0rICogRnJlZSBvbmUgcGFnZWQgcmVzdWx0 IGVudHJ5IGJ5IGluZGV4LgotKyAqCi0rICogTG9ja2luZzogSWYgbG9ja2VkPTAsIGFjcXVpcmVz IHBhZ2VyZXN1bHRfbG9jay4gSWYgbG9ja2VkPTEsIGFzc3VtZXMKLSsgKiBjYWxsZXIgYWxyZWFk eSBob2xkcyBwYWdlcmVzdWx0X2xvY2suIE5ldmVyIGNhbGwgd2hlbiBob2xkaW5nIGNfbXV0ZXgu Ci0rICovCi0gaW50Ci0tcGFnZWRyZXN1bHRzX2ZyZWVfb25lKENvbm5lY3Rpb24gKmNvbm4sIE9w ZXJhdGlvbiAqb3AsIGludCBpbmRleCkKLStwYWdlZHJlc3VsdHNfZnJlZV9vbmUoQ29ubmVjdGlv biAqY29ubiwgT3BlcmF0aW9uICpvcCwgYm9vbCBsb2NrZWQsIGludCBpbmRleCkKLSB7Ci0gICAg IGludCByYyA9IC0xOwotIAotQEAgLTMzOCw3ICszNDYsOSBAQCBwYWdlZHJlc3VsdHNfZnJlZV9v bmUoQ29ubmVjdGlvbiAqY29ubiwgT3BlcmF0aW9uICpvcCwgaW50IGluZGV4KQotICAgICBzbGFw aV9sb2dfZXJyKFNMQVBJX0xPR19UUkFDRSwgInBhZ2VkcmVzdWx0c19mcmVlX29uZSIsCi0gICAg ICAgICAgICAgICAgICAgIj0+IGlkeD0lZFxuIiwgaW5kZXgpOwotICAgICBpZiAoY29ubiAmJiAo aW5kZXggPiAtMSkpIHsKLS0gICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jayhwYWdlcmVzdWx0X2xv Y2tfZ2V0X2FkZHIoY29ubikpOwotKyAgICAgICAgaWYgKCFsb2NrZWQpIHsKLSsgICAgICAgICAg ICBwdGhyZWFkX211dGV4X2xvY2socGFnZXJlc3VsdF9sb2NrX2dldF9hZGRyKGNvbm4pKTsKLSsg ICAgICAgIH0KLSAgICAgICAgIGlmIChjb25uLT5jX3BhZ2VkcmVzdWx0cy5wcmxfY291bnQgPD0g MCkgewotICAgICAgICAgICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX1RSQUNFLCAicGFnZWRy ZXN1bHRzX2ZyZWVfb25lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25uPSUiIFBS SXU2NCAiIHBhZ2VkIHJlcXVlc3RzIGxpc3QgY291bnQgaXMgJWRcbiIsCi1AQCAtMzQ5LDcgKzM1 OSw5IEBAIHBhZ2VkcmVzdWx0c19mcmVlX29uZShDb25uZWN0aW9uICpjb25uLCBPcGVyYXRpb24g Km9wLCBpbnQgaW5kZXgpCi0gICAgICAgICAgICAgY29ubi0+Y19wYWdlZHJlc3VsdHMucHJsX2Nv dW50LS07Ci0gICAgICAgICAgICAgcmMgPSAwOwotICAgICAgICAgfQotLSAgICAgICAgcHRocmVh ZF9tdXRleF91bmxvY2socGFnZXJlc3VsdF9sb2NrX2dldF9hZGRyKGNvbm4pKTsKLSsgICAgICAg IGlmICghbG9ja2VkKSB7Ci0rICAgICAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2socGFnZXJl c3VsdF9sb2NrX2dldF9hZGRyKGNvbm4pKTsKLSsgICAgICAgIH0KLSAgICAgfQotIAotICAgICBz bGFwaV9sb2dfZXJyKFNMQVBJX0xPR19UUkFDRSwgInBhZ2VkcmVzdWx0c19mcmVlX29uZSIsICI8 PSAlZFxuIiwgcmMpOwotQEAgLTM1NywyMSArMzY5LDI4IEBAIHBhZ2VkcmVzdWx0c19mcmVlX29u ZShDb25uZWN0aW9uICpjb25uLCBPcGVyYXRpb24gKm9wLCBpbnQgaW5kZXgpCi0gfQotIAotIC8q Ci0tICogVXNlZCBmb3IgYWJhbmRvbmluZyAtIHBhZ2VyZXN1bHRfbG9ja19nZXRfYWRkcihjb25u KSBpcyBhbHJlYWR5IGxvY2tlZCBpbiBkb19hYmFuZG9uZS4KLSsgKiBGcmVlIG9uZSBwYWdlZCBy ZXN1bHQgZW50cnkgYnkgbWVzc2FnZSBJRC4KLSsgKgotKyAqIExvY2tpbmc6IElmIGxvY2tlZD0w LCBhY3F1aXJlcyBwYWdlcmVzdWx0X2xvY2suIElmIGxvY2tlZD0xLCBhc3N1bWVzCi0rICogY2Fs bGVyIGFscmVhZHkgaG9sZHMgcGFnZXJlc3VsdF9sb2NrLiBOZXZlciBjYWxsIHdoZW4gaG9sZGlu ZyBjX211dGV4LgotICAqLwotIGludAotLXBhZ2VkcmVzdWx0c19mcmVlX29uZV9tc2dpZChDb25u ZWN0aW9uICpjb25uLCBiZXJfaW50X3QgbXNnaWQsIHB0aHJlYWRfbXV0ZXhfdCAqbXV0ZXgpCi0r cGFnZWRyZXN1bHRzX2ZyZWVfb25lX21zZ2lkKENvbm5lY3Rpb24gKmNvbm4sIGJlcl9pbnRfdCBt c2dpZCwgYm9vbCBsb2NrZWQpCi0gewotICAgICBpbnQgcmMgPSAtMTsKLSAgICAgaW50IGk7Ci0r ICAgIHB0aHJlYWRfbXV0ZXhfdCAqbG9jayA9IE5VTEw7Ci0gCi0gICAgIGlmIChjb25uICYmICht c2dpZCA+IC0xKSkgewotICAgICAgICAgaWYgKGNvbm4tPmNfcGFnZWRyZXN1bHRzLnBybF9tYXhs ZW4gPD0gMCkgewotICAgICAgICAgICAgIDsgLyogTm90IGEgcGFnZWQgcmVzdWx0LiAqLwotICAg ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICBzbGFwaV9sb2dfZXJyKFNMQVBJX0xPR19UUkFD RSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICJwYWdlZHJlc3VsdHNfZnJlZV9vbmVfbXNn aWRfbm9sb2NrIiwgIj0+IG1zZ2lkPSVkXG4iLCBtc2dpZCk7Ci0tICAgICAgICAgICAgcHRocmVh ZF9tdXRleF9sb2NrKG11dGV4KTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWdlZHJl c3VsdHNfZnJlZV9vbmVfbXNnaWQiLCAiPT4gbXNnaWQ9JWRcbiIsIG1zZ2lkKTsKLSsgICAgICAg ICAgICBsb2NrID0gcGFnZXJlc3VsdF9sb2NrX2dldF9hZGRyKGNvbm4pOwotKyAgICAgICAgICAg IGlmICghbG9ja2VkKSB7Ci0rICAgICAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jayhsb2Nr KTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbm4tPmNf cGFnZWRyZXN1bHRzLnBybF9tYXhsZW47IGkrKykgewotICAgICAgICAgICAgICAgICBpZiAoY29u bi0+Y19wYWdlZHJlc3VsdHMucHJsX2xpc3RbaV0ucHJfbXNnaWQgPT0gbXNnaWQpIHsKLSAgICAg ICAgICAgICAgICAgICAgIFBhZ2VkUmVzdWx0cyAqcHJwID0gY29ubi0+Y19wYWdlZHJlc3VsdHMu cHJsX2xpc3QgKyBpOwotQEAgLTM5MCw5ICs0MDksMTEgQEAgcGFnZWRyZXN1bHRzX2ZyZWVfb25l X21zZ2lkKENvbm5lY3Rpb24gKmNvbm4sIGJlcl9pbnRfdCBtc2dpZCwgcHRocmVhZF9tdXRleF90 ICoKLSAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICAgfQotLSAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKG11dGV4KTsKLSsg ICAgICAgICAgICBpZiAoIWxvY2tlZCkgewotKyAgICAgICAgICAgICAgICBwdGhyZWFkX211dGV4 X3VubG9jayhsb2NrKTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgc2xhcGlfbG9nX2Vy cihTTEFQSV9MT0dfVFJBQ0UsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAicGFnZWRyZXN1 bHRzX2ZyZWVfb25lX21zZ2lkX25vbG9jayIsICI8PSAlZFxuIiwgcmMpOwotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgInBhZ2VkcmVzdWx0c19mcmVlX29uZV9tc2dpZCIsICI8PSAlZFxuIiwg cmMpOwotICAgICAgICAgfQotICAgICB9Ci0gCi1AQCAtNDE4LDI5ICs0MzksNDMgQEAgcGFnZWRy ZXN1bHRzX2dldF9jdXJyZW50X2JlKENvbm5lY3Rpb24gKmNvbm4sIGludCBpbmRleCkKLSAgICAg cmV0dXJuIGJlOwotIH0KLSAKLSsvKgotKyAqIFNldCBjdXJyZW50IGJhY2tlbmQgZm9yIGEgcGFn ZWQgcmVzdWx0IGVudHJ5LgotKyAqCi0rICogTG9ja2luZzogSWYgbG9ja2VkPWZhbHNlLCBhY3F1 aXJlcyBwYWdlcmVzdWx0X2xvY2suIElmIGxvY2tlZD10cnVlLCBhc3N1bWVzCi0rICogY2FsbGVy IGFscmVhZHkgaG9sZHMgcGFnZXJlc3VsdF9sb2NrLiBOZXZlciBjYWxsIHdoZW4gaG9sZGluZyBj X211dGV4LgotKyAqLwotIGludAotLXBhZ2VkcmVzdWx0c19zZXRfY3VycmVudF9iZShDb25uZWN0 aW9uICpjb25uLCBTbGFwaV9CYWNrZW5kICpiZSwgaW50IGluZGV4LCBpbnQgbm9sb2NrKQotK3Bh Z2VkcmVzdWx0c19zZXRfY3VycmVudF9iZShDb25uZWN0aW9uICpjb25uLCBTbGFwaV9CYWNrZW5k ICpiZSwgaW50IGluZGV4LCBib29sIGxvY2tlZCkKLSB7Ci0gICAgIGludCByYyA9IC0xOwotICAg ICBzbGFwaV9sb2dfZXJyKFNMQVBJX0xPR19UUkFDRSwKLSAgICAgICAgICAgICAgICAgICAicGFn ZWRyZXN1bHRzX3NldF9jdXJyZW50X2JlIiwgIj0+IGlkeD0lZFxuIiwgaW5kZXgpOwotICAgICBp ZiAoY29ubiAmJiAoaW5kZXggPiAtMSkpIHsKLS0gICAgICAgIGlmICghbm9sb2NrKQotKyAgICAg ICAgaWYgKCFsb2NrZWQpIHsKLSAgICAgICAgICAgICBwdGhyZWFkX211dGV4X2xvY2socGFnZXJl c3VsdF9sb2NrX2dldF9hZGRyKGNvbm4pKTsKLSsgICAgICAgIH0KLSAgICAgICAgIGlmIChpbmRl eCA8IGNvbm4tPmNfcGFnZWRyZXN1bHRzLnBybF9tYXhsZW4pIHsKLSAgICAgICAgICAgICBjb25u LT5jX3BhZ2VkcmVzdWx0cy5wcmxfbGlzdFtpbmRleF0ucHJfY3VycmVudF9iZSA9IGJlOwotICAg ICAgICAgfQotICAgICAgICAgcmMgPSAwOwotLSAgICAgICAgaWYgKCFub2xvY2spCi0rICAgICAg ICBpZiAoIWxvY2tlZCkgewotICAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKHBhZ2Vy ZXN1bHRfbG9ja19nZXRfYWRkcihjb25uKSk7Ci0rICAgICAgICB9Ci0gICAgIH0KLSAgICAgc2xh cGlfbG9nX2VycihTTEFQSV9MT0dfVFJBQ0UsCi0gICAgICAgICAgICAgICAgICAgInBhZ2VkcmVz dWx0c19zZXRfY3VycmVudF9iZSIsICI8PSAlZFxuIiwgcmMpOwotICAgICByZXR1cm4gcmM7Ci0g fQotIAotKy8qCi0rICogR2V0IHNlYXJjaCByZXN1bHQgc2V0IGZvciBhIHBhZ2VkIHJlc3VsdCBl bnRyeS4KLSsgKgotKyAqIExvY2tpbmc6IElmIGxvY2tlZD0wLCBhY3F1aXJlcyBwYWdlcmVzdWx0 X2xvY2suIElmIGxvY2tlZD0xLCBhc3N1bWVzCi0rICogY2FsbGVyIGFscmVhZHkgaG9sZHMgcGFn ZXJlc3VsdF9sb2NrLiBOZXZlciBjYWxsIHdoZW4gaG9sZGluZyBjX211dGV4LgotKyAqLwotIHZv aWQgKgotLXBhZ2VkcmVzdWx0c19nZXRfc2VhcmNoX3Jlc3VsdChDb25uZWN0aW9uICpjb25uLCBP cGVyYXRpb24gKm9wLCBpbnQgbG9ja2VkLCBpbnQgaW5kZXgpCi0rcGFnZWRyZXN1bHRzX2dldF9z ZWFyY2hfcmVzdWx0KENvbm5lY3Rpb24gKmNvbm4sIE9wZXJhdGlvbiAqb3AsIGJvb2wgbG9ja2Vk LCBpbnQgaW5kZXgpCi0gewotICAgICB2b2lkICpzciA9IE5VTEw7Ci0gICAgIGlmICghb3BfaXNf cGFnZWRyZXN1bHRzKG9wKSkgewotQEAgLTQ2NSw4ICs1MDAsMTQgQEAgcGFnZWRyZXN1bHRzX2dl dF9zZWFyY2hfcmVzdWx0KENvbm5lY3Rpb24gKmNvbm4sIE9wZXJhdGlvbiAqb3AsIGludCBsb2Nr ZWQsIGludAotICAgICByZXR1cm4gc3I7Ci0gfQotIAotKy8qCi0rICogU2V0IHNlYXJjaCByZXN1 bHQgc2V0IGZvciBhIHBhZ2VkIHJlc3VsdCBlbnRyeS4KLSsgKgotKyAqIExvY2tpbmc6IElmIGxv Y2tlZD0wLCBhY3F1aXJlcyBwYWdlcmVzdWx0X2xvY2suIElmIGxvY2tlZD0xLCBhc3N1bWVzCi0r ICogY2FsbGVyIGFscmVhZHkgaG9sZHMgcGFnZXJlc3VsdF9sb2NrLiBOZXZlciBjYWxsIHdoZW4g aG9sZGluZyBjX211dGV4LgotKyAqLwotIGludAotLXBhZ2VkcmVzdWx0c19zZXRfc2VhcmNoX3Jl c3VsdChDb25uZWN0aW9uICpjb25uLCBPcGVyYXRpb24gKm9wLCB2b2lkICpzciwgaW50IGxvY2tl ZCwgaW50IGluZGV4KQotK3BhZ2VkcmVzdWx0c19zZXRfc2VhcmNoX3Jlc3VsdChDb25uZWN0aW9u ICpjb25uLCBPcGVyYXRpb24gKm9wLCB2b2lkICpzciwgYm9vbCBsb2NrZWQsIGludCBpbmRleCkK LSB7Ci0gICAgIGludCByYyA9IC0xOwotICAgICBpZiAoIW9wX2lzX3BhZ2VkcmVzdWx0cyhvcCkp IHsKLUBAIC00OTQsOCArNTM1LDE0IEBAIHBhZ2VkcmVzdWx0c19zZXRfc2VhcmNoX3Jlc3VsdChD b25uZWN0aW9uICpjb25uLCBPcGVyYXRpb24gKm9wLCB2b2lkICpzciwgaW50IGxvCi0gICAgIHJl dHVybiByYzsKLSB9Ci0gCi0rLyoKLSsgKiBHZXQgc2VhcmNoIHJlc3VsdCBjb3VudCBmb3IgYSBw YWdlZCByZXN1bHQgZW50cnkuCi0rICoKLSsgKiBMb2NraW5nOiBJZiBsb2NrZWQ9MCwgYWNxdWly ZXMgcGFnZXJlc3VsdF9sb2NrLiBJZiBsb2NrZWQ9MSwgYXNzdW1lcwotKyAqIGNhbGxlciBhbHJl YWR5IGhvbGRzIHBhZ2VyZXN1bHRfbG9jay4gTmV2ZXIgY2FsbCB3aGVuIGhvbGRpbmcgY19tdXRl eC4KLSsgKi8KLSBpbnQKLS1wYWdlZHJlc3VsdHNfZ2V0X3NlYXJjaF9yZXN1bHRfY291bnQoQ29u bmVjdGlvbiAqY29ubiwgT3BlcmF0aW9uICpvcCwgaW50IGluZGV4KQotK3BhZ2VkcmVzdWx0c19n ZXRfc2VhcmNoX3Jlc3VsdF9jb3VudChDb25uZWN0aW9uICpjb25uLCBPcGVyYXRpb24gKm9wLCBi b29sIGxvY2tlZCwgaW50IGluZGV4KQotIHsKLSAgICAgaW50IGNvdW50ID0gMDsKLSAgICAgaWYg KCFvcF9pc19wYWdlZHJlc3VsdHMob3ApKSB7Ci1AQCAtNTA0LDE5ICs1NTEsMjkgQEAgcGFnZWRy ZXN1bHRzX2dldF9zZWFyY2hfcmVzdWx0X2NvdW50KENvbm5lY3Rpb24gKmNvbm4sIE9wZXJhdGlv biAqb3AsIGludCBpbmRleCkKLSAgICAgc2xhcGlfbG9nX2VycihTTEFQSV9MT0dfVFJBQ0UsCi0g ICAgICAgICAgICAgICAgICAgInBhZ2VkcmVzdWx0c19nZXRfc2VhcmNoX3Jlc3VsdF9jb3VudCIs ICI9PiBpZHg9JWRcbiIsIGluZGV4KTsKLSAgICAgaWYgKGNvbm4gJiYgKGluZGV4ID4gLTEpKSB7 Ci0tICAgICAgICBwdGhyZWFkX211dGV4X2xvY2socGFnZXJlc3VsdF9sb2NrX2dldF9hZGRyKGNv bm4pKTsKLSsgICAgICAgIGlmICghbG9ja2VkKSB7Ci0rICAgICAgICAgICAgcHRocmVhZF9tdXRl eF9sb2NrKHBhZ2VyZXN1bHRfbG9ja19nZXRfYWRkcihjb25uKSk7Ci0rICAgICAgICB9Ci0gICAg ICAgICBpZiAoaW5kZXggPCBjb25uLT5jX3BhZ2VkcmVzdWx0cy5wcmxfbWF4bGVuKSB7Ci0gICAg ICAgICAgICAgY291bnQgPSBjb25uLT5jX3BhZ2VkcmVzdWx0cy5wcmxfbGlzdFtpbmRleF0ucHJf c2VhcmNoX3Jlc3VsdF9jb3VudDsKLSAgICAgICAgIH0KLS0gICAgICAgIHB0aHJlYWRfbXV0ZXhf dW5sb2NrKHBhZ2VyZXN1bHRfbG9ja19nZXRfYWRkcihjb25uKSk7Ci0rICAgICAgICBpZiAoIWxv Y2tlZCkgewotKyAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKHBhZ2VyZXN1bHRfbG9j a19nZXRfYWRkcihjb25uKSk7Ci0rICAgICAgICB9Ci0gICAgIH0KLSAgICAgc2xhcGlfbG9nX2Vy cihTTEFQSV9MT0dfVFJBQ0UsCi0gICAgICAgICAgICAgICAgICAgInBhZ2VkcmVzdWx0c19nZXRf c2VhcmNoX3Jlc3VsdF9jb3VudCIsICI8PSAlZFxuIiwgY291bnQpOwotICAgICByZXR1cm4gY291 bnQ7Ci0gfQotIAotKy8qCi0rICogU2V0IHNlYXJjaCByZXN1bHQgY291bnQgZm9yIGEgcGFnZWQg cmVzdWx0IGVudHJ5LgotKyAqCi0rICogTG9ja2luZzogSWYgbG9ja2VkPTAsIGFjcXVpcmVzIHBh Z2VyZXN1bHRfbG9jay4gSWYgbG9ja2VkPTEsIGFzc3VtZXMKLSsgKiBjYWxsZXIgYWxyZWFkeSBo b2xkcyBwYWdlcmVzdWx0X2xvY2suIE5ldmVyIGNhbGwgd2hlbiBob2xkaW5nIGNfbXV0ZXguCi0r ICovCi0gaW50Ci0tcGFnZWRyZXN1bHRzX3NldF9zZWFyY2hfcmVzdWx0X2NvdW50KENvbm5lY3Rp b24gKmNvbm4sIE9wZXJhdGlvbiAqb3AsIGludCBjb3VudCwgaW50IGluZGV4KQotK3BhZ2VkcmVz dWx0c19zZXRfc2VhcmNoX3Jlc3VsdF9jb3VudChDb25uZWN0aW9uICpjb25uLCBPcGVyYXRpb24g Km9wLCBpbnQgY291bnQsIGJvb2wgbG9ja2VkLCBpbnQgaW5kZXgpCi0gewotICAgICBpbnQgcmMg PSAtMTsKLSAgICAgaWYgKCFvcF9pc19wYWdlZHJlc3VsdHMob3ApKSB7Ci1AQCAtNTI1LDExICs1 ODIsMTUgQEAgcGFnZWRyZXN1bHRzX3NldF9zZWFyY2hfcmVzdWx0X2NvdW50KENvbm5lY3Rpb24g KmNvbm4sIE9wZXJhdGlvbiAqb3AsIGludCBjb3VudCwKLSAgICAgc2xhcGlfbG9nX2VycihTTEFQ SV9MT0dfVFJBQ0UsCi0gICAgICAgICAgICAgICAgICAgInBhZ2VkcmVzdWx0c19zZXRfc2VhcmNo X3Jlc3VsdF9jb3VudCIsICI9PiBpZHg9JWRcbiIsIGluZGV4KTsKLSAgICAgaWYgKGNvbm4gJiYg KGluZGV4ID4gLTEpKSB7Ci0tICAgICAgICBwdGhyZWFkX211dGV4X2xvY2socGFnZXJlc3VsdF9s b2NrX2dldF9hZGRyKGNvbm4pKTsKLSsgICAgICAgIGlmICghbG9ja2VkKSB7Ci0rICAgICAgICAg ICAgcHRocmVhZF9tdXRleF9sb2NrKHBhZ2VyZXN1bHRfbG9ja19nZXRfYWRkcihjb25uKSk7Ci0r ICAgICAgICB9Ci0gICAgICAgICBpZiAoaW5kZXggPCBjb25uLT5jX3BhZ2VkcmVzdWx0cy5wcmxf bWF4bGVuKSB7Ci0gICAgICAgICAgICAgY29ubi0+Y19wYWdlZHJlc3VsdHMucHJsX2xpc3RbaW5k ZXhdLnByX3NlYXJjaF9yZXN1bHRfY291bnQgPSBjb3VudDsKLSAgICAgICAgIH0KLS0gICAgICAg IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKHBhZ2VyZXN1bHRfbG9ja19nZXRfYWRkcihjb25uKSk7Ci0r ICAgICAgICBpZiAoIWxvY2tlZCkgewotKyAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2Nr KHBhZ2VyZXN1bHRfbG9ja19nZXRfYWRkcihjb25uKSk7Ci0rICAgICAgICB9Ci0gICAgICAgICBy YyA9IDA7Ci0gICAgIH0KLSAgICAgc2xhcGlfbG9nX2VycihTTEFQSV9MT0dfVFJBQ0UsCi1AQCAt NTM3LDkgKzU5OCwxNiBAQCBwYWdlZHJlc3VsdHNfc2V0X3NlYXJjaF9yZXN1bHRfY291bnQoQ29u bmVjdGlvbiAqY29ubiwgT3BlcmF0aW9uICpvcCwgaW50IGNvdW50LAotICAgICByZXR1cm4gcmM7 Ci0gfQotIAotKy8qCi0rICogR2V0IHNlYXJjaCByZXN1bHQgc2V0IHNpemUgZXN0aW1hdGUgZm9y IGEgcGFnZWQgcmVzdWx0IGVudHJ5LgotKyAqCi0rICogTG9ja2luZzogSWYgbG9ja2VkPTAsIGFj cXVpcmVzIHBhZ2VyZXN1bHRfbG9jay4gSWYgbG9ja2VkPTEsIGFzc3VtZXMKLSsgKiBjYWxsZXIg YWxyZWFkeSBob2xkcyBwYWdlcmVzdWx0X2xvY2suIE5ldmVyIGNhbGwgd2hlbiBob2xkaW5nIGNf bXV0ZXguCi0rICovCi0gaW50Ci0gcGFnZWRyZXN1bHRzX2dldF9zZWFyY2hfcmVzdWx0X3NldF9z aXplX2VzdGltYXRlKENvbm5lY3Rpb24gKmNvbm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdGlvbiAqb3AsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbG9ja2VkLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXgpCi0gewot ICAgICBpbnQgY291bnQgPSAwOwotQEAgLTU1MCwxMSArNjE4LDE1IEBAIHBhZ2VkcmVzdWx0c19n ZXRfc2VhcmNoX3Jlc3VsdF9zZXRfc2l6ZV9lc3RpbWF0ZShDb25uZWN0aW9uICpjb25uLAotICAg ICAgICAgICAgICAgICAgICJwYWdlZHJlc3VsdHNfZ2V0X3NlYXJjaF9yZXN1bHRfc2V0X3NpemVf ZXN0aW1hdGUiLAotICAgICAgICAgICAgICAgICAgICI9PiBpZHg9JWRcbiIsIGluZGV4KTsKLSAg ICAgaWYgKGNvbm4gJiYgKGluZGV4ID4gLTEpKSB7Ci0tICAgICAgICBwdGhyZWFkX211dGV4X2xv Y2socGFnZXJlc3VsdF9sb2NrX2dldF9hZGRyKGNvbm4pKTsKLSsgICAgICAgIGlmICghbG9ja2Vk KSB7Ci0rICAgICAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKHBhZ2VyZXN1bHRfbG9ja19nZXRf YWRkcihjb25uKSk7Ci0rICAgICAgICB9Ci0gICAgICAgICBpZiAoaW5kZXggPCBjb25uLT5jX3Bh Z2VkcmVzdWx0cy5wcmxfbWF4bGVuKSB7Ci0gICAgICAgICAgICAgY291bnQgPSBjb25uLT5jX3Bh Z2VkcmVzdWx0cy5wcmxfbGlzdFtpbmRleF0ucHJfc2VhcmNoX3Jlc3VsdF9zZXRfc2l6ZV9lc3Rp bWF0ZTsKLSAgICAgICAgIH0KLS0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKHBhZ2VyZXN1 bHRfbG9ja19nZXRfYWRkcihjb25uKSk7Ci0rICAgICAgICBpZiAoIWxvY2tlZCkgewotKyAgICAg ICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKHBhZ2VyZXN1bHRfbG9ja19nZXRfYWRkcihjb25u KSk7Ci0rICAgICAgICB9Ci0gICAgIH0KLSAgICAgc2xhcGlfbG9nX2VycihTTEFQSV9MT0dfVFJB Q0UsCi0gICAgICAgICAgICAgICAgICAgInBhZ2VkcmVzdWx0c19nZXRfc2VhcmNoX3Jlc3VsdF9z ZXRfc2l6ZV9lc3RpbWF0ZSIsICI8PSAlZFxuIiwKLUBAIC01NjIsMTAgKzYzNCwxNyBAQCBwYWdl ZHJlc3VsdHNfZ2V0X3NlYXJjaF9yZXN1bHRfc2V0X3NpemVfZXN0aW1hdGUoQ29ubmVjdGlvbiAq Y29ubiwKLSAgICAgcmV0dXJuIGNvdW50OwotIH0KLSAKLSsvKgotKyAqIFNldCBzZWFyY2ggcmVz dWx0IHNldCBzaXplIGVzdGltYXRlIGZvciBhIHBhZ2VkIHJlc3VsdCBlbnRyeS4KLSsgKgotKyAq IExvY2tpbmc6IElmIGxvY2tlZD0wLCBhY3F1aXJlcyBwYWdlcmVzdWx0X2xvY2suIElmIGxvY2tl ZD0xLCBhc3N1bWVzCi0rICogY2FsbGVyIGFscmVhZHkgaG9sZHMgcGFnZXJlc3VsdF9sb2NrLiBO ZXZlciBjYWxsIHdoZW4gaG9sZGluZyBjX211dGV4LgotKyAqLwotIGludAotIHBhZ2VkcmVzdWx0 c19zZXRfc2VhcmNoX3Jlc3VsdF9zZXRfc2l6ZV9lc3RpbWF0ZShDb25uZWN0aW9uICpjb25uLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVyYXRp b24gKm9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgY291bnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJvb2wgbG9ja2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgaW5kZXgpCi0gewotICAgICBpbnQgcmMgPSAtMTsKLUBAIC01NzYs MTEgKzY1NSwxNSBAQCBwYWdlZHJlc3VsdHNfc2V0X3NlYXJjaF9yZXN1bHRfc2V0X3NpemVfZXN0 aW1hdGUoQ29ubmVjdGlvbiAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAicGFnZWRyZXN1bHRz X3NldF9zZWFyY2hfcmVzdWx0X3NldF9zaXplX2VzdGltYXRlIiwKLSAgICAgICAgICAgICAgICAg ICAiPT4gaWR4PSVkXG4iLCBpbmRleCk7Ci0gICAgIGlmIChjb25uICYmIChpbmRleCA+IC0xKSkg ewotLSAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKHBhZ2VyZXN1bHRfbG9ja19nZXRfYWRkcihj b25uKSk7Ci0rICAgICAgICBpZiAoIWxvY2tlZCkgewotKyAgICAgICAgICAgIHB0aHJlYWRfbXV0 ZXhfbG9jayhwYWdlcmVzdWx0X2xvY2tfZ2V0X2FkZHIoY29ubikpOwotKyAgICAgICAgfQotICAg ICAgICAgaWYgKGluZGV4IDwgY29ubi0+Y19wYWdlZHJlc3VsdHMucHJsX21heGxlbikgewotICAg ICAgICAgICAgIGNvbm4tPmNfcGFnZWRyZXN1bHRzLnBybF9saXN0W2luZGV4XS5wcl9zZWFyY2hf cmVzdWx0X3NldF9zaXplX2VzdGltYXRlID0gY291bnQ7Ci0gICAgICAgICB9Ci0tICAgICAgICBw dGhyZWFkX211dGV4X3VubG9jayhwYWdlcmVzdWx0X2xvY2tfZ2V0X2FkZHIoY29ubikpOwotKyAg ICAgICAgaWYgKCFsb2NrZWQpIHsKLSsgICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jayhw YWdlcmVzdWx0X2xvY2tfZ2V0X2FkZHIoY29ubikpOwotKyAgICAgICAgfQotICAgICAgICAgcmMg PSAwOwotICAgICB9Ci0gICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX1RSQUNFLAotQEAgLTU4 OSw4ICs2NzIsMTQgQEAgcGFnZWRyZXN1bHRzX3NldF9zZWFyY2hfcmVzdWx0X3NldF9zaXplX2Vz dGltYXRlKENvbm5lY3Rpb24gKmNvbm4sCi0gICAgIHJldHVybiByYzsKLSB9Ci0gCi0rLyoKLSsg KiBHZXQgd2l0aF9zb3J0IGZsYWcgZm9yIGEgcGFnZWQgcmVzdWx0IGVudHJ5LgotKyAqCi0rICog TG9ja2luZzogSWYgbG9ja2VkPTAsIGFjcXVpcmVzIHBhZ2VyZXN1bHRfbG9jay4gSWYgbG9ja2Vk PTEsIGFzc3VtZXMKLSsgKiBjYWxsZXIgYWxyZWFkeSBob2xkcyBwYWdlcmVzdWx0X2xvY2suIE5l dmVyIGNhbGwgd2hlbiBob2xkaW5nIGNfbXV0ZXguCi0rICovCi0gaW50Ci0tcGFnZWRyZXN1bHRz X2dldF93aXRoX3NvcnQoQ29ubmVjdGlvbiAqY29ubiwgT3BlcmF0aW9uICpvcCwgaW50IGluZGV4 KQotK3BhZ2VkcmVzdWx0c19nZXRfd2l0aF9zb3J0KENvbm5lY3Rpb24gKmNvbm4sIE9wZXJhdGlv biAqb3AsIGJvb2wgbG9ja2VkLCBpbnQgaW5kZXgpCi0gewotICAgICBpbnQgZmxhZ3MgPSAwOwot ICAgICBpZiAoIW9wX2lzX3BhZ2VkcmVzdWx0cyhvcCkpIHsKLUBAIC01OTksMTkgKzY4OCwyOSBA QCBwYWdlZHJlc3VsdHNfZ2V0X3dpdGhfc29ydChDb25uZWN0aW9uICpjb25uLCBPcGVyYXRpb24g Km9wLCBpbnQgaW5kZXgpCi0gICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX1RSQUNFLAotICAg ICAgICAgICAgICAgICAgICJwYWdlZHJlc3VsdHNfZ2V0X3dpdGhfc29ydCIsICI9PiBpZHg9JWRc biIsIGluZGV4KTsKLSAgICAgaWYgKGNvbm4gJiYgKGluZGV4ID4gLTEpKSB7Ci0tICAgICAgICBw dGhyZWFkX211dGV4X2xvY2socGFnZXJlc3VsdF9sb2NrX2dldF9hZGRyKGNvbm4pKTsKLSsgICAg ICAgIGlmICghbG9ja2VkKSB7Ci0rICAgICAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKHBhZ2Vy ZXN1bHRfbG9ja19nZXRfYWRkcihjb25uKSk7Ci0rICAgICAgICB9Ci0gICAgICAgICBpZiAoaW5k ZXggPCBjb25uLT5jX3BhZ2VkcmVzdWx0cy5wcmxfbWF4bGVuKSB7Ci0gICAgICAgICAgICAgZmxh Z3MgPSBjb25uLT5jX3BhZ2VkcmVzdWx0cy5wcmxfbGlzdFtpbmRleF0ucHJfZmxhZ3MgJiBDT05O X0ZMQUdfUEFHRURSRVNVTFRTX1dJVEhfU09SVDsKLSAgICAgICAgIH0KLS0gICAgICAgIHB0aHJl YWRfbXV0ZXhfdW5sb2NrKHBhZ2VyZXN1bHRfbG9ja19nZXRfYWRkcihjb25uKSk7Ci0rICAgICAg ICBpZiAoIWxvY2tlZCkgewotKyAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKHBhZ2Vy ZXN1bHRfbG9ja19nZXRfYWRkcihjb25uKSk7Ci0rICAgICAgICB9Ci0gICAgIH0KLSAgICAgc2xh cGlfbG9nX2VycihTTEFQSV9MT0dfVFJBQ0UsCi0gICAgICAgICAgICAgICAgICAgInBhZ2VkcmVz dWx0c19nZXRfd2l0aF9zb3J0IiwgIjw9ICVkXG4iLCBmbGFncyk7Ci0gICAgIHJldHVybiBmbGFn czsKLSB9Ci0gCi0rLyoKLSsgKiBTZXQgd2l0aF9zb3J0IGZsYWcgZm9yIGEgcGFnZWQgcmVzdWx0 IGVudHJ5LgotKyAqCi0rICogTG9ja2luZzogSWYgbG9ja2VkPTAsIGFjcXVpcmVzIHBhZ2VyZXN1 bHRfbG9jay4gSWYgbG9ja2VkPTEsIGFzc3VtZXMKLSsgKiBjYWxsZXIgYWxyZWFkeSBob2xkcyBw YWdlcmVzdWx0X2xvY2suIE5ldmVyIGNhbGwgd2hlbiBob2xkaW5nIGNfbXV0ZXguCi0rICovCi0g aW50Ci0tcGFnZWRyZXN1bHRzX3NldF93aXRoX3NvcnQoQ29ubmVjdGlvbiAqY29ubiwgT3BlcmF0 aW9uICpvcCwgaW50IGZsYWdzLCBpbnQgaW5kZXgpCi0rcGFnZWRyZXN1bHRzX3NldF93aXRoX3Nv cnQoQ29ubmVjdGlvbiAqY29ubiwgT3BlcmF0aW9uICpvcCwgaW50IGZsYWdzLCBib29sIGxvY2tl ZCwgaW50IGluZGV4KQotIHsKLSAgICAgaW50IHJjID0gLTE7Ci0gICAgIGlmICghb3BfaXNfcGFn ZWRyZXN1bHRzKG9wKSkgewotQEAgLTYyMCwxNCArNzE5LDE4IEBAIHBhZ2VkcmVzdWx0c19zZXRf d2l0aF9zb3J0KENvbm5lY3Rpb24gKmNvbm4sIE9wZXJhdGlvbiAqb3AsIGludCBmbGFncywgaW50 IGluZGV4Ci0gICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX1RSQUNFLAotICAgICAgICAgICAg ICAgICAgICJwYWdlZHJlc3VsdHNfc2V0X3dpdGhfc29ydCIsICI9PiBpZHg9JWRcbiIsIGluZGV4 KTsKLSAgICAgaWYgKGNvbm4gJiYgKGluZGV4ID4gLTEpKSB7Ci0tICAgICAgICBwdGhyZWFkX211 dGV4X2xvY2socGFnZXJlc3VsdF9sb2NrX2dldF9hZGRyKGNvbm4pKTsKLSsgICAgICAgIGlmICgh bG9ja2VkKSB7Ci0rICAgICAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKHBhZ2VyZXN1bHRfbG9j a19nZXRfYWRkcihjb25uKSk7Ci0rICAgICAgICB9Ci0gICAgICAgICBpZiAoaW5kZXggPCBjb25u LT5jX3BhZ2VkcmVzdWx0cy5wcmxfbWF4bGVuKSB7Ci0gICAgICAgICAgICAgaWYgKGZsYWdzICYg T1BfRkxBR19TRVJWRVJfU0lERV9TT1JUSU5HKSB7Ci0gICAgICAgICAgICAgICAgIGNvbm4tPmNf cGFnZWRyZXN1bHRzLnBybF9saXN0W2luZGV4XS5wcl9mbGFncyB8PQotICAgICAgICAgICAgICAg ICAgICAgQ09OTl9GTEFHX1BBR0VEUkVTVUxUU19XSVRIX1NPUlQ7Ci0gICAgICAgICAgICAgfQot ICAgICAgICAgfQotLSAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2socGFnZXJlc3VsdF9sb2Nr X2dldF9hZGRyKGNvbm4pKTsKLSsgICAgICAgIGlmICghbG9ja2VkKSB7Ci0rICAgICAgICAgICAg cHRocmVhZF9tdXRleF91bmxvY2socGFnZXJlc3VsdF9sb2NrX2dldF9hZGRyKGNvbm4pKTsKLSsg ICAgICAgIH0KLSAgICAgICAgIHJjID0gMDsKLSAgICAgfQotICAgICBzbGFwaV9sb2dfZXJyKFNM QVBJX0xPR19UUkFDRSwgInBhZ2VkcmVzdWx0c19zZXRfd2l0aF9zb3J0IiwgIjw9ICVkXG4iLCBy Yyk7Ci1AQCAtODAyLDEwICs5MDUsNiBAQCBwYWdlZHJlc3VsdHNfY2xlYW51cChDb25uZWN0aW9u ICpjb25uLCBpbnQgbmVlZGxvY2spCi0gICAgICAgICAgICAgcmMgPSAxOwotICAgICAgICAgfQot ICAgICAgICAgcHJwLT5wcl9jdXJyZW50X2JlID0gTlVMTDsKLS0gICAgICAgIGlmIChwcnAtPnBy X211dGV4KSB7Ci0tICAgICAgICAgICAgUFJfRGVzdHJveUxvY2socHJwLT5wcl9tdXRleCk7Ci0t ICAgICAgICAgICAgcHJwLT5wcl9tdXRleCA9IE5VTEw7Ci0tICAgICAgICB9Ci0gICAgICAgICBt ZW1zZXQocHJwLCAnXDAnLCBzaXplb2YoUGFnZWRSZXN1bHRzKSk7Ci0gICAgIH0KLSAgICAgY29u bi0+Y19wYWdlZHJlc3VsdHMucHJsX2NvdW50ID0gMDsKLUBAIC04NDAsMTAgKzkzOSw2IEBAIHBh Z2VkcmVzdWx0c19jbGVhbnVwX2FsbChDb25uZWN0aW9uICpjb25uLCBpbnQgbmVlZGxvY2spCi0g ICAgICAgICAgICAgICAgIGkgPCBjb25uLT5jX3BhZ2VkcmVzdWx0cy5wcmxfbWF4bGVuOwotICAg ICAgICAgIGkrKykgewotICAgICAgICAgcHJwID0gY29ubi0+Y19wYWdlZHJlc3VsdHMucHJsX2xp c3QgKyBpOwotLSAgICAgICAgaWYgKHBycC0+cHJfbXV0ZXgpIHsKLS0gICAgICAgICAgICBQUl9E ZXN0cm95TG9jayhwcnAtPnByX211dGV4KTsKLS0gICAgICAgICAgICBwcnAtPnByX211dGV4ID0g TlVMTDsKLS0gICAgICAgIH0KLSAgICAgICAgIGlmIChwcnAtPnByX2N1cnJlbnRfYmUgJiYgcHJw LT5wcl9zZWFyY2hfcmVzdWx0X3NldCAmJgotICAgICAgICAgICAgIHBycC0+cHJfY3VycmVudF9i ZS0+YmVfc2VhcmNoX3Jlc3VsdHNfcmVsZWFzZSkgewotICAgICAgICAgICAgIHBycC0+cHJfY3Vy cmVudF9iZS0+YmVfc2VhcmNoX3Jlc3VsdHNfcmVsZWFzZSgmKHBycC0+cHJfc2VhcmNoX3Jlc3Vs dF9zZXQpKTsKLUBAIC0xMDEwLDQzICsxMTA1LDggQEAgb3Bfc2V0X3BhZ2VkcmVzdWx0cyhPcGVy YXRpb24gKm9wKQotICAgICBvcC0+b19mbGFncyB8PSBPUF9GTEFHX1BBR0VEX1JFU1VMVFM7Ci0g fQotIAotLS8qCi0tICogcGFnZWRyZXN1bHRzX2xvY2svdW5sb2NrIC0tIGludHJvZHVjZWQgdG8g cHJvdGVjdCBzZWFyY2ggcmVzdWx0cyBmb3IgdGhlCi0tICogYXN5bmNocm9ub3VzIHNlYXJjaGVz LiBEbyBub3QgY2FsbCB0aGVzZSBmdW5jdGlvbnMgd2hpbGUgdGhlIFBSIGNvbm4gbG9jawotLSAq IGlzIGhlbGQgKGUuZy4gcGFnZXJlc3VsdF9sb2NrX2dldF9hZGRyKGNvbm4pKQotLSAqLwotLXZv aWQKLS1wYWdlZHJlc3VsdHNfbG9jayhDb25uZWN0aW9uICpjb25uLCBpbnQgaW5kZXgpCi0tewot LSAgICBQYWdlZFJlc3VsdHMgKnBycDsKLS0gICAgaWYgKCFjb25uIHx8IChpbmRleCA8IDApIHx8 IChpbmRleCA+PSBjb25uLT5jX3BhZ2VkcmVzdWx0cy5wcmxfbWF4bGVuKSkgewotLSAgICAgICAg cmV0dXJuOwotLSAgICB9Ci0tICAgIHB0aHJlYWRfbXV0ZXhfbG9jayhwYWdlcmVzdWx0X2xvY2tf Z2V0X2FkZHIoY29ubikpOwotLSAgICBwcnAgPSBjb25uLT5jX3BhZ2VkcmVzdWx0cy5wcmxfbGlz dCArIGluZGV4OwotLSAgICBpZiAocHJwLT5wcl9tdXRleCkgewotLSAgICAgICAgUFJfTG9jayhw cnAtPnByX211dGV4KTsKLS0gICAgfQotLSAgICBwdGhyZWFkX211dGV4X3VubG9jayhwYWdlcmVz dWx0X2xvY2tfZ2V0X2FkZHIoY29ubikpOwotLX0KLS0KLS12b2lkCi0tcGFnZWRyZXN1bHRzX3Vu bG9jayhDb25uZWN0aW9uICpjb25uLCBpbnQgaW5kZXgpCi0tewotLSAgICBQYWdlZFJlc3VsdHMg KnBycDsKLS0gICAgaWYgKCFjb25uIHx8IChpbmRleCA8IDApIHx8IChpbmRleCA+PSBjb25uLT5j X3BhZ2VkcmVzdWx0cy5wcmxfbWF4bGVuKSkgewotLSAgICAgICAgcmV0dXJuOwotLSAgICB9Ci0t ICAgIHB0aHJlYWRfbXV0ZXhfbG9jayhwYWdlcmVzdWx0X2xvY2tfZ2V0X2FkZHIoY29ubikpOwot LSAgICBwcnAgPSBjb25uLT5jX3BhZ2VkcmVzdWx0cy5wcmxfbGlzdCArIGluZGV4OwotLSAgICBp ZiAocHJwLT5wcl9tdXRleCkgewotLSAgICAgICAgUFJfVW5sb2NrKHBycC0+cHJfbXV0ZXgpOwot LSAgICB9Ci0tICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKHBhZ2VyZXN1bHRfbG9ja19nZXRfYWRk cihjb25uKSk7Ci0tfQotLQotIGludAotLXBhZ2VkcmVzdWx0c19pc19hYmFuZG9uZWRfb3Jfbm90 YXZhaWxhYmxlKENvbm5lY3Rpb24gKmNvbm4sIGludCBsb2NrZWQsIGludCBpbmRleCkKLStwYWdl ZHJlc3VsdHNfaXNfYWJhbmRvbmVkX29yX25vdGF2YWlsYWJsZShDb25uZWN0aW9uICpjb25uLCBi b29sIGxvY2tlZCwgaW50IGluZGV4KQotIHsKLSAgICAgUGFnZWRSZXN1bHRzICpwcnA7Ci0gICAg IGludDMyX3QgcmVzdWx0OwotQEAgLTEwNjYsNyArMTEyNiw3IEBAIHBhZ2VkcmVzdWx0c19pc19h YmFuZG9uZWRfb3Jfbm90YXZhaWxhYmxlKENvbm5lY3Rpb24gKmNvbm4sIGludCBsb2NrZWQsIGlu dCBpbmRlCi0gfQotIAotIGludAotLXBhZ2VkcmVzdWx0c19zZXRfc2VhcmNoX3Jlc3VsdF9wYihT bGFwaV9QQmxvY2sgKnBiLCB2b2lkICpzciwgaW50IGxvY2tlZCkKLStwYWdlZHJlc3VsdHNfc2V0 X3NlYXJjaF9yZXN1bHRfcGIoU2xhcGlfUEJsb2NrICpwYiwgdm9pZCAqc3IsIGJvb2wgbG9ja2Vk KQotIHsKLSAgICAgaW50IHJjID0gLTE7Ci0gICAgIENvbm5lY3Rpb24gKmNvbm4gPSBOVUxMOwot ZGlmZiAtLWdpdCBhL2xkYXAvc2VydmVycy9zbGFwZC9wcm90by1zbGFwLmggYi9sZGFwL3NlcnZl cnMvc2xhcGQvcHJvdG8tc2xhcC5oCi1pbmRleCA2YWY2NTgzYTUuLjg0NDU2NzBkMiAxMDA2NDQK LS0tLSBhL2xkYXAvc2VydmVycy9zbGFwZC9wcm90by1zbGFwLmgKLSsrKyBiL2xkYXAvc2VydmVy cy9zbGFwZC9wcm90by1zbGFwLmgKLUBAIC0xNjExLDIwICsxNjExLDIyIEBAIHB0aHJlYWRfbXV0 ZXhfdCAqcGFnZXJlc3VsdF9sb2NrX2dldF9hZGRyKENvbm5lY3Rpb24gKmNvbm4pOwotIGludCBw YWdlZHJlc3VsdHNfcGFyc2VfY29udHJvbF92YWx1ZShTbGFwaV9QQmxvY2sgKnBiLCBzdHJ1Y3Qg YmVydmFsICpwc2J2cCwgYmVyX2ludF90ICpwYWdlc2l6ZSwgaW50ICppbmRleCwgU2xhcGlfQmFj a2VuZCAqYmUpOwotIHZvaWQgcGFnZWRyZXN1bHRzX3NldF9yZXNwb25zZV9jb250cm9sKFNsYXBp X1BCbG9jayAqcGIsIGludCBpc2NyaXRpY2FsLCBiZXJfaW50X3QgZXN0aW1hdGUsIGludCBjdXJy X3NlYXJjaF9jb3VudCwgaW50IGluZGV4KTsKLSBTbGFwaV9CYWNrZW5kICpwYWdlZHJlc3VsdHNf Z2V0X2N1cnJlbnRfYmUoQ29ubmVjdGlvbiAqY29ubiwgaW50IGluZGV4KTsKLS1pbnQgcGFnZWRy ZXN1bHRzX3NldF9jdXJyZW50X2JlKENvbm5lY3Rpb24gKmNvbm4sIFNsYXBpX0JhY2tlbmQgKmJl LCBpbnQgaW5kZXgsIGludCBub2xvY2spOwotLXZvaWQgKnBhZ2VkcmVzdWx0c19nZXRfc2VhcmNo X3Jlc3VsdChDb25uZWN0aW9uICpjb25uLCBPcGVyYXRpb24gKm9wLCBpbnQgbG9ja2VkLCBpbnQg aW5kZXgpOwotLWludCBwYWdlZHJlc3VsdHNfc2V0X3NlYXJjaF9yZXN1bHQoQ29ubmVjdGlvbiAq Y29ubiwgT3BlcmF0aW9uICpvcCwgdm9pZCAqc3IsIGludCBsb2NrZWQsIGludCBpbmRleCk7Ci0t aW50IHBhZ2VkcmVzdWx0c19nZXRfc2VhcmNoX3Jlc3VsdF9jb3VudChDb25uZWN0aW9uICpjb25u LCBPcGVyYXRpb24gKm9wLCBpbnQgaW5kZXgpOwotLWludCBwYWdlZHJlc3VsdHNfc2V0X3NlYXJj aF9yZXN1bHRfY291bnQoQ29ubmVjdGlvbiAqY29ubiwgT3BlcmF0aW9uICpvcCwgaW50IGNudCwg aW50IGluZGV4KTsKLStpbnQgcGFnZWRyZXN1bHRzX3NldF9jdXJyZW50X2JlKENvbm5lY3Rpb24g KmNvbm4sIFNsYXBpX0JhY2tlbmQgKmJlLCBpbnQgaW5kZXgsIGJvb2wgbG9ja2VkKTsKLSt2b2lk ICpwYWdlZHJlc3VsdHNfZ2V0X3NlYXJjaF9yZXN1bHQoQ29ubmVjdGlvbiAqY29ubiwgT3BlcmF0 aW9uICpvcCwgYm9vbCBsb2NrZWQsIGludCBpbmRleCk7Ci0raW50IHBhZ2VkcmVzdWx0c19zZXRf c2VhcmNoX3Jlc3VsdChDb25uZWN0aW9uICpjb25uLCBPcGVyYXRpb24gKm9wLCB2b2lkICpzciwg Ym9vbCBsb2NrZWQsIGludCBpbmRleCk7Ci0raW50IHBhZ2VkcmVzdWx0c19nZXRfc2VhcmNoX3Jl c3VsdF9jb3VudChDb25uZWN0aW9uICpjb25uLCBPcGVyYXRpb24gKm9wLCBib29sIGxvY2tlZCwg aW50IGluZGV4KTsKLStpbnQgcGFnZWRyZXN1bHRzX3NldF9zZWFyY2hfcmVzdWx0X2NvdW50KENv bm5lY3Rpb24gKmNvbm4sIE9wZXJhdGlvbiAqb3AsIGludCBjbnQsIGJvb2wgbG9ja2VkLCBpbnQg aW5kZXgpOwotIGludCBwYWdlZHJlc3VsdHNfZ2V0X3NlYXJjaF9yZXN1bHRfc2V0X3NpemVfZXN0 aW1hdGUoQ29ubmVjdGlvbiAqY29ubiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdGlvbiAqb3AsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxvY2tlZCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCk7 Ci0gaW50IHBhZ2VkcmVzdWx0c19zZXRfc2VhcmNoX3Jlc3VsdF9zZXRfc2l6ZV9lc3RpbWF0ZShD b25uZWN0aW9uICpjb25uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3BlcmF0aW9uICpvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjbnQsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxvY2tlZCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCk7 Ci0taW50IHBhZ2VkcmVzdWx0c19nZXRfd2l0aF9zb3J0KENvbm5lY3Rpb24gKmNvbm4sIE9wZXJh dGlvbiAqb3AsIGludCBpbmRleCk7Ci0taW50IHBhZ2VkcmVzdWx0c19zZXRfd2l0aF9zb3J0KENv bm5lY3Rpb24gKmNvbm4sIE9wZXJhdGlvbiAqb3AsIGludCBmbGFncywgaW50IGluZGV4KTsKLStp bnQgcGFnZWRyZXN1bHRzX2dldF93aXRoX3NvcnQoQ29ubmVjdGlvbiAqY29ubiwgT3BlcmF0aW9u ICpvcCwgYm9vbCBsb2NrZWQsIGludCBpbmRleCk7Ci0raW50IHBhZ2VkcmVzdWx0c19zZXRfd2l0 aF9zb3J0KENvbm5lY3Rpb24gKmNvbm4sIE9wZXJhdGlvbiAqb3AsIGludCBmbGFncywgYm9vbCBs b2NrZWQsIGludCBpbmRleCk7Ci0gaW50IHBhZ2VkcmVzdWx0c19nZXRfdW5pbmRleGVkKENvbm5l Y3Rpb24gKmNvbm4sIE9wZXJhdGlvbiAqb3AsIGludCBpbmRleCk7Ci0gaW50IHBhZ2VkcmVzdWx0 c19zZXRfdW5pbmRleGVkKENvbm5lY3Rpb24gKmNvbm4sIE9wZXJhdGlvbiAqb3AsIGludCBpbmRl eCk7Ci0gaW50IHBhZ2VkcmVzdWx0c19nZXRfc29ydF9yZXN1bHRfY29kZShDb25uZWN0aW9uICpj b25uLCBPcGVyYXRpb24gKm9wLCBpbnQgaW5kZXgpOwotQEAgLTE2MzYsMTUgKzE2MzgsMTMgQEAg aW50IHBhZ2VkcmVzdWx0c19jbGVhbnVwKENvbm5lY3Rpb24gKmNvbm4sIGludCBuZWVkbG9jayk7 Ci0gaW50IHBhZ2VkcmVzdWx0c19pc190aW1lZG91dF9ub2xvY2soQ29ubmVjdGlvbiAqY29ubik7 Ci0gaW50IHBhZ2VkcmVzdWx0c19yZXNldF90aW1lZG91dF9ub2xvY2soQ29ubmVjdGlvbiAqY29u bik7Ci0gaW50IHBhZ2VkcmVzdWx0c19pbl91c2Vfbm9sb2NrKENvbm5lY3Rpb24gKmNvbm4pOwot LWludCBwYWdlZHJlc3VsdHNfZnJlZV9vbmUoQ29ubmVjdGlvbiAqY29ubiwgT3BlcmF0aW9uICpv cCwgaW50IGluZGV4KTsKLS1pbnQgcGFnZWRyZXN1bHRzX2ZyZWVfb25lX21zZ2lkKENvbm5lY3Rp b24gKmNvbm4sIGJlcl9pbnRfdCBtc2dpZCwgcHRocmVhZF9tdXRleF90ICptdXRleCk7Ci0raW50 IHBhZ2VkcmVzdWx0c19mcmVlX29uZShDb25uZWN0aW9uICpjb25uLCBPcGVyYXRpb24gKm9wLCBi b29sIGxvY2tlZCwgaW50IGluZGV4KTsKLStpbnQgcGFnZWRyZXN1bHRzX2ZyZWVfb25lX21zZ2lk KENvbm5lY3Rpb24gKmNvbm4sIGJlcl9pbnRfdCBtc2dpZCwgYm9vbCBsb2NrZWQpOwotIGludCBv cF9pc19wYWdlZHJlc3VsdHMoT3BlcmF0aW9uICpvcCk7Ci0gaW50IHBhZ2VkcmVzdWx0c19jbGVh bnVwX2FsbChDb25uZWN0aW9uICpjb25uLCBpbnQgbmVlZGxvY2spOwotIHZvaWQgb3Bfc2V0X3Bh Z2VkcmVzdWx0cyhPcGVyYXRpb24gKm9wKTsKLS12b2lkIHBhZ2VkcmVzdWx0c19sb2NrKENvbm5l Y3Rpb24gKmNvbm4sIGludCBpbmRleCk7Ci0tdm9pZCBwYWdlZHJlc3VsdHNfdW5sb2NrKENvbm5l Y3Rpb24gKmNvbm4sIGludCBpbmRleCk7Ci0taW50IHBhZ2VkcmVzdWx0c19pc19hYmFuZG9uZWRf b3Jfbm90YXZhaWxhYmxlKENvbm5lY3Rpb24gKmNvbm4sIGludCBsb2NrZWQsIGludCBpbmRleCk7 Ci0taW50IHBhZ2VkcmVzdWx0c19zZXRfc2VhcmNoX3Jlc3VsdF9wYihTbGFwaV9QQmxvY2sgKnBi LCB2b2lkICpzciwgaW50IGxvY2tlZCk7Ci0raW50IHBhZ2VkcmVzdWx0c19pc19hYmFuZG9uZWRf b3Jfbm90YXZhaWxhYmxlKENvbm5lY3Rpb24gKmNvbm4sIGJvb2wgbG9ja2VkLCBpbnQgaW5kZXgp OwotK2ludCBwYWdlZHJlc3VsdHNfc2V0X3NlYXJjaF9yZXN1bHRfcGIoU2xhcGlfUEJsb2NrICpw Yiwgdm9pZCAqc3IsIGJvb2wgbG9ja2VkKTsKLSAKLSAvKgotICAqIHNvcnQuYwotZGlmZiAtLWdp dCBhL2xkYXAvc2VydmVycy9zbGFwZC9zbGFwLmggYi9sZGFwL3NlcnZlcnMvc2xhcGQvc2xhcC5o Ci1pbmRleCA0OWNmYjQyMTAuLmFiYjBkMmU0NyAxMDA2NDQKLS0tLSBhL2xkYXAvc2VydmVycy9z bGFwZC9zbGFwLmgKLSsrKyBiL2xkYXAvc2VydmVycy9zbGFwZC9zbGFwLmgKLUBAIC04OSw2ICs4 OSwxMCBAQCBzdGF0aWMgY2hhciBwdG9rUEJFWzM0XSA9ICJJbnRlcm5hbCAoU29mdHdhcmUpIFRv a2VuICAgICAgICAiOwotICNpbmNsdWRlIDxzdGRib29sLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4g LyogRm9yIHRpbWVzcGVjIGRlZmluaXRpb25zICovCi0gCi0rLyogTWFjcm9zIGZvciBwYWdlZCBy ZXN1bHRzIGxvY2sgcGFyYW1ldGVyICovCi0rI2RlZmluZSBQUl9MT0NLRUQgdHJ1ZQotKyNkZWZp bmUgUFJfTk9UX0xPQ0tFRCBmYWxzZQotKwotIC8qIFByb3ZpZGVzIG91ciBpbnQgdHlwZXMgYW5k IHBsYXRmb3JtIHNwZWNpZmljIHJlcXVpcmVtZW50cy4gKi8KLSAjaW5jbHVkZSA8c2xhcGlfcGFs Lmg+Ci0gCi1AQCAtMTY2OSw3ICsxNjczLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgX3BhZ2VkX3Jlc3Vs dHMKLSAgICAgc3RydWN0IHRpbWVzcGVjIHByX3RpbWVsaW1pdF9ocjsgICAgICAgIC8qIGV4cGly eSB0aW1lIG9mIHRoaXMgcmVxdWVzdCByZWwgdG8gY2xvY2sgbW9ub3RvbmljICovCi0gICAgIGlu dCBwcl9mbGFnczsKLSAgICAgYmVyX2ludF90IHByX21zZ2lkOyAvKiBtc2dpZCBvZiB0aGUgcmVx dWVzdDsgdG8gYWJhbmRvbiAqLwotLSAgICBQUkxvY2sgKnByX211dGV4OyAgIC8qIHByb3RlY3Qg ZWFjaCBjb25uIHN0cnVjdHVyZSAgICAqLwotIH0gUGFnZWRSZXN1bHRzOwotIAotIC8qIGFycmF5 IG9mIHNpbXBsZSBwYWdlZCBzdHJ1Y3R1cmUgc3Rhc2hlZCBpbiBjb25uZWN0aW9uICovCi0tLSAK LTIuNTIuMAotCgpkaWZmIC0tZ2l0IGEvMDAwNy1Jc3N1ZS03MTA4LUZpeC1zaHV0ZG93bi1jcmFz aC1pbi1lbnRyeS1jYWNoZS1kZXN0cnVjLnBhdGNoIGIvMDAwNy1Jc3N1ZS03MTA4LUZpeC1zaHV0 ZG93bi1jcmFzaC1pbi1lbnRyeS1jYWNoZS1kZXN0cnVjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAzOTM1ZTk1Li4wMDAwMDAwCi0tLSBhLzAwMDctSXNzdWUtNzEwOC1GaXgt c2h1dGRvd24tY3Jhc2gtaW4tZW50cnktY2FjaGUtZGVzdHJ1Yy5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDE4MyArMCwwIEBACi1Gcm9tIGNkZTk5OWVkZjcyNDZkOWRjZWM0YTEzOTUwZTJjMDg5 NTE2NWExNmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTaW1vbiBQaWNodWdpbiA8 c3BpY2h1Z2lAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgOCBKYW4gMjAyNiAxMDowMjozOSAtMDgw MAotU3ViamVjdDogW1BBVENIXSBJc3N1ZSA3MTA4IC0gRml4IHNodXRkb3duIGNyYXNoIGluIGVu dHJ5IGNhY2hlIGRlc3RydWN0aW9uCi0gKCM3MTYzKQotCi1EZXNjcmlwdGlvbjogVGhlIGVudHJ5 IGNhY2hlIGNvdWxkIGV4cGVyaWVuY2UgTFJVIGxpc3QgY29ycnVwdGlvbiB3aGVuCi11c2luZyBw aW5uZWQgZW50cmllcywgbGVhZGluZyB0byBjcmFzaGVzIGR1cmluZyBjYWNoZSBmbHVzaCBvcGVy YXRpb25zLgotCi1JbiBlbnRyeWNhY2hlX2FkZF9pbnQoKSwgd2hlbiByZXR1cm5pbmcgYW4gZXhp c3RpbmcgY2FjaGVkIGVudHJ5LCB0aGUKLWNvZGUgY2hlY2tlZCB0aGUgd3JvbmcgZW50cnkncyBz dGF0ZSBiZWZvcmUgY2FsbGluZyBscnVfZGVsZXRlKCkuIEl0Ci1jaGVja2VkIHRoZSBuZXcgZW50 cnkgJ2UnIGJ1dCBvcGVyYXRlZCBvbiB0aGUgZXhpc3RpbmcgZW50cnkgJ215X2FsdCcsCi1jYXVz aW5nIGxydV9kZWxldGUoKSB0byBiZSBjYWxsZWQgb24gZW50cmllcyBub3QgaW4gdGhlIExSVSBs aXN0LiBUaGlzCi1pcyBmaXhlZCBieSBjaGVja2luZyBteV9hbHQncyByZWZjbnQgYW5kIHBpbm5l ZCBzdGF0ZSBpbnN0ZWFkLgotCi1JbiBmbHVzaF9oYXNoKCksIHBpbm5lZF9yZW1vdmUoKSBhbmQg bHJ1X2RlbGV0ZSgpIHdlcmUgYm90aCBjYWxsZWQgb24KLXBpbm5lZCBlbnRyaWVzLiBTaW5jZSBw aW5uZWQgZW50cmllcyBhcmUgaW4gdGhlIHBpbm5lZCBsaXN0LCBjYWxsaW5nCi1scnVfZGVsZXRl KCkgYWZ0ZXJ3YXJkcyBjb3JydXB0ZWQgdGhlIGxpc3QuIFRoaXMgaXMgZml4ZWQgYnkgY2FsbGlu ZwotZWl0aGVyIHBpbm5lZF9yZW1vdmUoKSBvciBscnVfZGVsZXRlKCkgYmFzZWQgb24gdGhlIGVu dHJ5J3Mgc3RhdGUuCi0KLUEgTlVMTCBjaGVjayBpcyBhZGRlZCBpbiBlbnRyeWNhY2hlX2ZsdXNo KCkgYW5kIGRuY2FjaGVfZmx1c2goKSB0bwotZ3JhY2VmdWxseSBoYW5kbGUgY29ycnVwdGVkIExS VSBsaXN0cyBhbmQgcHJldmVudCBjcmFzaGVzIHdoZW4KLXRyYXZlcnNpbmcgYmFja3dhcmRzIHRo cm91Z2ggdGhlIGxpc3QgZW5jb3VudGVycyBhbiB1bmV4cGVjdGVkIE5VTEwuCi0KLUVudHJ5IHBv aW50ZXJzIGFyZSBub3cgYWx3YXlzIGNsZWFyZWQgYWZ0ZXIgbHJ1X2RlbGV0ZSgpIHJlbW92YWwg dG8KLXByZXZlbnQgc3RhbGUgcG9pbnRlciBpc3N1ZXMgaW4gbm9uLWRlYnVnIGJ1aWxkcy4KLQot Rml4ZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS8zODlkcy8zODktZHMtYmFzZS9pc3N1ZXMvNzEwOAot Ci1SZXZpZXdlZCBieTogQHByb2dpZXIzODksIEB2YXNoaXJvdiAoVGhhbmtzISEpCi0tLS0KLSBs ZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2NhY2hlLmMgfCA0OCArKysrKysrKysrKysrKysr KysrKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDUgZGVsZXRp b25zKC0pCi0KLWRpZmYgLS1naXQgYS9sZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2NhY2hl LmMgYi9sZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2NhY2hlLmMKLWluZGV4IDJlNDEyNjEz NC4uYTg3ZjMwNjg3IDEwMDY0NAotLS0tIGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9j YWNoZS5jCi0rKysgYi9sZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2NhY2hlLmMKLUBAIC00 NTgsMTEgKzQ1OCwxMyBAQCBzdGF0aWMgdm9pZAotIGxydV9kZWxldGUoc3RydWN0IGNhY2hlICpj YWNoZSwgdm9pZCAqcHRyKQotIHsKLSAgICAgc3RydWN0IGJhY2tjb21tb24gKmU7Ci0rCi0gICAg IGlmIChOVUxMID09IHB0cikgewotICAgICAgICAgTE9HKCI9PiBscnVfZGVsZXRlXG48PSBscnVf ZGVsZXRlIChudWxsIGVudHJ5KVxuIik7Ci0gICAgICAgICByZXR1cm47Ci0gICAgIH0KLSAgICAg ZSA9IChzdHJ1Y3QgYmFja2NvbW1vbiAqKXB0cjsKLSsKLSAjaWZkZWYgTERBUF9DQUNIRV9ERUJV R19MUlUKLSAgICAgcGlubmVkX3ZlcmlmeShjYWNoZSwgX19MSU5FX18pOwotICAgICBscnVfdmVy aWZ5KGNhY2hlLCBlLCAxKTsKLUBAIC00NzUsOCArNDc3LDkgQEAgbHJ1X2RlbGV0ZShzdHJ1Y3Qg Y2FjaGUgKmNhY2hlLCB2b2lkICpwdHIpCi0gICAgICAgICBlLT5lcF9scnVuZXh0LT5lcF9scnVw cmV2ID0gZS0+ZXBfbHJ1cHJldjsKLSAgICAgZWxzZQotICAgICAgICAgY2FjaGUtPmNfbHJ1dGFp bCA9IGUtPmVwX2xydXByZXY7Ci0tI2lmZGVmIExEQVBfQ0FDSEVfREVCVUdfTFJVCi0rICAgIC8q IEFsd2F5cyBjbGVhciBwb2ludGVycyBhZnRlciByZW1vdmFsIHRvIHByZXZlbnQgc3RhbGUgcG9p bnRlciBpc3N1ZXMgKi8KLSAgICAgZS0+ZXBfbHJ1bmV4dCA9IGUtPmVwX2xydXByZXYgPSBOVUxM OwotKyNpZmRlZiBMREFQX0NBQ0hFX0RFQlVHX0xSVQotICAgICBscnVfdmVyaWZ5KGNhY2hlLCBl LCAwKTsKLSAjZW5kaWYKLSB9Ci1AQCAtNjMzLDkgKzYzNiwxNCBAQCBmbHVzaF9oYXNoKHN0cnVj dCBjYWNoZSAqY2FjaGUsIHN0cnVjdCB0aW1lc3BlYyAqc3RhcnRfdGltZSwgaW50MzJfdCB0eXBl KQotICAgICAgICAgICAgICAgICBpZiAoZW50cnktPmVwX3JlZmNudCA9PSAwKSB7Ci0gICAgICAg ICAgICAgICAgICAgICBlbnRyeS0+ZXBfcmVmY250Kys7Ci0gICAgICAgICAgICAgICAgICAgICBp ZiAoZW50cnktPmVwX3N0YXRlICYgRU5UUllfU1RBVEVfUElOTkVEKSB7Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgLyogRW50cnkgaXMgaW4gcGlubmVkIGxpc3QsIG5vdCBMUlUgLSByZW1vdmUg ZnJvbSBwaW5uZWQgb25seS4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgKiBwaW5uZWRfcmVt b3ZlIGNsZWFycyBscnUgcG9pbnRlcnMgYW5kIHdvbid0IGFkZCB0byBMUlUgc2luY2UgcmVmY250 ID4gMC4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAg ICAgICBwaW5uZWRfcmVtb3ZlKGNhY2hlLCBsYXN0ZSk7Ci0rICAgICAgICAgICAgICAgICAgICB9 IGVsc2UgewotKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVudHJ5IGlzIGluIExSVSBsaXN0 IC0gcmVtb3ZlIGZyb20gTFJVICovCi0rICAgICAgICAgICAgICAgICAgICAgICAgbHJ1X2RlbGV0 ZShjYWNoZSwgbGFzdGUpOwotICAgICAgICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgICAg ICAgICAgbHJ1X2RlbGV0ZShjYWNoZSwgbGFzdGUpOwotICAgICAgICAgICAgICAgICAgICAgaWYg KHR5cGUgPT0gRU5UUllfQ0FDSEUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeWNh Y2hlX3JlbW92ZV9pbnQoY2FjaGUsIGxhc3RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBl bnRyeWNhY2hlX3JldHVybihjYWNoZSwgKHN0cnVjdCBiYWNrZW50cnkgKiopJmxhc3RlLCBQUl9U UlVFKTsKLUBAIC02NzksOSArNjg3LDE0IEBAIGZsdXNoX2hhc2goc3RydWN0IGNhY2hlICpjYWNo ZSwgc3RydWN0IHRpbWVzcGVjICpzdGFydF90aW1lLCBpbnQzMl90IHR5cGUpCi0gICAgICAgICAg ICAgICAgICAgICBpZiAoZW50cnktPmVwX3JlZmNudCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgZW50cnktPmVwX3JlZmNudCsrOwotICAgICAgICAgICAgICAgICAgICAgICAgIGlm IChlbnRyeS0+ZXBfc3RhdGUgJiBFTlRSWV9TVEFURV9QSU5ORUQpIHsKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLyogRW50cnkgaXMgaW4gcGlubmVkIGxpc3QsIG5vdCBMUlUgLSByZW1v dmUgZnJvbSBwaW5uZWQgb25seS4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcGlu bmVkX3JlbW92ZSBjbGVhcnMgbHJ1IHBvaW50ZXJzIGFuZCB3b24ndCBhZGQgdG8gTFJVIHNpbmNl IHJlZmNudCA+IDAuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwaW5uZWRfcmVtb3ZlKGNhY2hlLCBsYXN0ZSk7Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogRW50cnkgaXMgaW4gTFJVIGxpc3QgLSByZW1vdmUgZnJvbSBMUlUgKi8KLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbHJ1X2RlbGV0ZShjYWNoZSwgbGFzdGUpOwotICAgICAgICAgICAg ICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICAgICAgICAgICAgICBscnVfZGVsZXRlKGNhY2hl LCBsYXN0ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZW50cnljYWNoZV9yZW1vdmVfaW50 KGNhY2hlLCBsYXN0ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZW50cnljYWNoZV9yZXR1 cm4oY2FjaGUsIChzdHJ1Y3QgYmFja2VudHJ5ICoqKSZsYXN0ZSwgUFJfVFJVRSk7Ci0gICAgICAg ICAgICAgICAgICAgICB9IGVsc2UgewotQEAgLTc3Miw2ICs3ODUsMTEgQEAgZW50cnljYWNoZV9m bHVzaChzdHJ1Y3QgY2FjaGUgKmNhY2hlKQotICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg ICBlID0gQkFDS19MUlVfUFJFVihlLCBzdHJ1Y3QgYmFja2VudHJ5ICopOwotICAgICAgICAgfQot KyAgICAgICAgaWYgKGUgPT0gTlVMTCkgewotKyAgICAgICAgICAgIHNsYXBpX2xvZ19lcnIoU0xB UElfTE9HX1dBUk5JTkcsICJlbnRyeWNhY2hlX2ZsdXNoIiwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICJVbmV4cGVjdGVkIE5VTEwgZW50cnkgd2hpbGUgZmx1c2hpbmcgY2FjaGUgLSBMUlUg bGlzdCBtYXkgYmUgY29ycnVwdGVkXG4iKTsKLSsgICAgICAgICAgICBicmVhazsKLSsgICAgICAg IH0KLSAgICAgICAgIEFTU0VSVChlLT5lcF9yZWZjbnQgPT0gMCk7Ci0gICAgICAgICBlLT5lcF9y ZWZjbnQrKzsKLSAgICAgICAgIGlmIChlbnRyeWNhY2hlX3JlbW92ZV9pbnQoY2FjaGUsIGUpIDwg MCkgewotQEAgLTExNjAsNiArMTE3OCw3IEBAIHBpbm5lZF9yZW1vdmUoc3RydWN0IGNhY2hlICpj YWNoZSwgdm9pZCAqcHRyKQotIHsKLSAgICAgc3RydWN0IGJhY2tlbnRyeSAqZSA9IChzdHJ1Y3Qg YmFja2VudHJ5ICopcHRyOwotICAgICBBU1NFUlQoZS0+ZXBfc3RhdGUgJiBFTlRSWV9TVEFURV9Q SU5ORUQpOwotKwotICAgICBjYWNoZS0+Y19waW5uZWRfY3R4LT5ucGlubmVkLS07Ci0gICAgIGNh Y2hlLT5jX3Bpbm5lZF9jdHgtPnNpemUgLT0gZS0+ZXBfc2l6ZTsKLSAgICAgZS0+ZXBfc3RhdGUg Jj0gfkVOVFJZX1NUQVRFX1BJTk5FRDsKLUBAIC0xMTcyLDEzICsxMTkxLDIzIEBAIHBpbm5lZF9y ZW1vdmUoc3RydWN0IGNhY2hlICpjYWNoZSwgdm9pZCAqcHRyKQotICAgICAgICAgICAgIGNhY2hl LT5jX3Bpbm5lZF9jdHgtPmhlYWQgPSBjYWNoZS0+Y19waW5uZWRfY3R4LT50YWlsID0gTlVMTDsK LSAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgY2FjaGUtPmNfcGlubmVkX2N0eC0+aGVh ZCA9IEJBQ0tfTFJVX05FWFQoZSwgc3RydWN0IGJhY2tlbnRyeSAqKTsKLSsgICAgICAgICAgICAv KiBVcGRhdGUgbmV3IGhlYWQncyBwcmV2IHBvaW50ZXIgdG8gTlVMTCAqLwotKyAgICAgICAgICAg IGlmIChjYWNoZS0+Y19waW5uZWRfY3R4LT5oZWFkKSB7Ci0rICAgICAgICAgICAgICAgIGNhY2hl LT5jX3Bpbm5lZF9jdHgtPmhlYWQtPmVwX2xydXByZXYgPSBOVUxMOwotKyAgICAgICAgICAgIH0K LSAgICAgICAgIH0KLSAgICAgfSBlbHNlIGlmIChjYWNoZS0+Y19waW5uZWRfY3R4LT50YWlsID09 IGUpIHsKLSAgICAgICAgIGNhY2hlLT5jX3Bpbm5lZF9jdHgtPnRhaWwgPSBCQUNLX0xSVV9QUkVW KGUsIHN0cnVjdCBiYWNrZW50cnkgKik7Ci0rICAgICAgICAvKiBVcGRhdGUgbmV3IHRhaWwncyBu ZXh0IHBvaW50ZXIgdG8gTlVMTCAqLwotKyAgICAgICAgaWYgKGNhY2hlLT5jX3Bpbm5lZF9jdHgt PnRhaWwpIHsKLSsgICAgICAgICAgICBjYWNoZS0+Y19waW5uZWRfY3R4LT50YWlsLT5lcF9scnVu ZXh0ID0gTlVMTDsKLSsgICAgICAgIH0KLSAgICAgfSBlbHNlIHsKLSsgICAgICAgIC8qIE1pZGRs ZSBvZiBsaXN0OiB1cGRhdGUgYm90aCBuZWlnaGJvcnMgdG8gcG9pbnQgdG8gZWFjaCBvdGhlciAq LwotICAgICAgICAgQkFDS19MUlVfUFJFVihlLCBzdHJ1Y3QgYmFja2VudHJ5ICopLT5lcF9scnVu ZXh0ID0gQkFDS19MUlVfTkVYVChlLCBzdHJ1Y3QgYmFja2NvbW1vbiAqKTsKLSAgICAgICAgIEJB Q0tfTFJVX05FWFQoZSwgc3RydWN0IGJhY2tlbnRyeSAqKS0+ZXBfbHJ1cHJldiA9IEJBQ0tfTFJV X1BSRVYoZSwgc3RydWN0IGJhY2tjb21tb24gKik7Ci0gICAgIH0KLSsgICAgLyogQ2xlYXIgdGhl IHJlbW92ZWQgZW50cnkncyBwb2ludGVycyAqLwotICAgICBlLT5lcF9scnVuZXh0ID0gZS0+ZXBf bHJ1cHJldiA9IE5VTEw7Ci0gICAgIGlmIChlLT5lcF9yZWZjbnQgPT0gMCkgewotICAgICAgICAg bHJ1X2FkZChjYWNoZSwgcHRyKTsKLUBAIC0xMjQ1LDYgKzEyNzQsNyBAQCBwaW5uZWRfYWRkKHN0 cnVjdCBjYWNoZSAqY2FjaGUsIHZvaWQgKnB0cikKLSAgICAgICAgICAgICByZXR1cm4gZmFsc2U7 Ci0gICAgIH0KLSAgICAgLyogTm93IGl0IGlzIHRpbWUgdG8gaW5zZXJ0IHRoZSBlbnRyeSBpbiB0 aGUgcGlubmVkIGxpc3QgKi8KLSsKLSAgICAgY2FjaGUtPmNfcGlubmVkX2N0eC0+bnBpbm5lZCsr OwotICAgICBjYWNoZS0+Y19waW5uZWRfY3R4LT5zaXplICs9IGUtPmVwX3NpemU7Ci0gICAgIGUt PmVwX3N0YXRlIHw9IEVOVFJZX1NUQVRFX1BJTk5FRDsKLUBAIC0xNzU0LDcgKzE3ODQsNyBAQCBl bnRyeWNhY2hlX2FkZF9pbnQoc3RydWN0IGNhY2hlICpjYWNoZSwgc3RydWN0IGJhY2tlbnRyeSAq ZSwgaW50IHN0YXRlLCBzdHJ1Y3QgYgotICAgICAgICAgICAgICAgICAgKiAzKSBlcF9zdGF0ZTog MCAmJiBzdGF0ZTogMAotICAgICAgICAgICAgICAgICAgKiAgICA9PT4gaW5jcmVhc2UgdGhlIHJl ZmNudAotICAgICAgICAgICAgICAgICAgKi8KLS0gICAgICAgICAgICAgICAgaWYgKGUtPmVwX3Jl ZmNudCA9PSAwKQotKyAgICAgICAgICAgICAgICBpZiAoZS0+ZXBfcmVmY250ID09IDAgJiYgKGUt PmVwX3N0YXRlICYgRU5UUllfU1RBVEVfUElOTkVEKSA9PSAwKQotICAgICAgICAgICAgICAgICAg ICAgbHJ1X2RlbGV0ZShjYWNoZSwgKHZvaWQgKillKTsKLSAgICAgICAgICAgICAgICAgZS0+ZXBf cmVmY250Kys7Ci0gICAgICAgICAgICAgICAgIGUtPmVwX3N0YXRlICY9IH5FTlRSWV9TVEFURV9V TkFWQUlMQUJMRTsKLUBAIC0xNzgxLDcgKzE4MTEsNyBAQCBlbnRyeWNhY2hlX2FkZF9pbnQoc3Ry dWN0IGNhY2hlICpjYWNoZSwgc3RydWN0IGJhY2tlbnRyeSAqZSwgaW50IHN0YXRlLCBzdHJ1Y3Qg YgotICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgIGlmIChhbHQpIHsKLSAg ICAgICAgICAgICAgICAgICAgICphbHQgPSBteV9hbHQ7Ci0tICAgICAgICAgICAgICAgICAgICBp ZiAoZS0+ZXBfcmVmY250ID09IDAgJiYgKGUtPmVwX3N0YXRlICYgRU5UUllfU1RBVEVfUElOTkVE KSA9PSAwKQotKyAgICAgICAgICAgICAgICAgICAgaWYgKG15X2FsdC0+ZXBfcmVmY250ID09IDAg JiYgKG15X2FsdC0+ZXBfc3RhdGUgJiBFTlRSWV9TVEFURV9QSU5ORUQpID09IDApCi0gICAgICAg ICAgICAgICAgICAgICAgICAgbHJ1X2RlbGV0ZShjYWNoZSwgKHZvaWQgKikqYWx0KTsKLSAgICAg ICAgICAgICAgICAgICAgICgqYWx0KS0+ZXBfcmVmY250Kys7Ci0gICAgICAgICAgICAgICAgICAg ICBMT0coInRoZSBlbnRyeSAlcyBhbHJlYWR5IGV4aXN0cy4gIHJldHVybmluZyBleGlzdGluZyBl bnRyeSAlcyAoc3RhdGU6IDB4JXgpXG4iLAotQEAgLTIzNzksNiArMjQwOSwxNCBAQCBkbmNhY2hl X2ZsdXNoKHN0cnVjdCBjYWNoZSAqY2FjaGUpCi0gICAgICAgICB9IGVsc2UgewotICAgICAgICAg ICAgIGRuID0gQkFDS19MUlVfUFJFVihkbiwgc3RydWN0IGJhY2tkbiAqKTsKLSAgICAgICAgIH0K LSsgICAgICAgIGlmIChkbiA9PSBOVUxMKSB7Ci0rICAgICAgICAgICAgLyogU2FmZXR5IGNoZWNr OiB3ZSBzaG91bGQgbm9ybWFsbHkgZXhpdCB2aWEgdGhlIENBQ0hFX0xSVV9IRUFEIGNoZWNrLgot KyAgICAgICAgICAgICAqIElmIHdlIGdldCBoZXJlLCBjX2xydWhlYWQgbWF5IGJlIE5VTEwgb3Ig dGhlIExSVSBsaXN0IGlzIGNvcnJ1cHRlZC4KLSsgICAgICAgICAgICAgKi8KLSsgICAgICAgICAg ICBzbGFwaV9sb2dfZXJyKFNMQVBJX0xPR19XQVJOSU5HLCAiZG5jYWNoZV9mbHVzaCIsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAiVW5leHBlY3RlZCBOVUxMIGVudHJ5IHdoaWxlIGZsdXNo aW5nIGNhY2hlIC0gTFJVIGxpc3QgbWF5IGJlIGNvcnJ1cHRlZFxuIik7Ci0rICAgICAgICAgICAg YnJlYWs7Ci0rICAgICAgICB9Ci0gICAgICAgICBBU1NFUlQoZG4tPmVwX3JlZmNudCA9PSAwKTsK LSAgICAgICAgIGRuLT5lcF9yZWZjbnQrKzsKLSAgICAgICAgIGlmIChkbmNhY2hlX3JlbW92ZV9p bnQoY2FjaGUsIGRuKSA8IDApIHsKLS0tIAotMi41Mi4wCi0KCmRpZmYgLS1naXQgYS8wMDA4LUlz c3VlLTcxNzItSW5kZXgtb3JkZXJpbmctbWlzbWF0Y2gtYWZ0ZXItdXBncmFkZS03MTcucGF0Y2gg Yi8wMDA4LUlzc3VlLTcxNzItSW5kZXgtb3JkZXJpbmctbWlzbWF0Y2gtYWZ0ZXItdXBncmFkZS03 MTcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzOGM2YzMuLjAwMDAwMDAK LS0tIGEvMDAwOC1Jc3N1ZS03MTcyLUluZGV4LW9yZGVyaW5nLW1pc21hdGNoLWFmdGVyLXVwZ3Jh ZGUtNzE3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjE1ICswLDAgQEAKLUZyb20gMDYyYWE2 ZWFiMTJkMDBhZGZmYTRlNDZkNTg3MjJmNmMwZTVlZWFjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IFZpa3RvciBBc2hpcm92IDx2YXNoaXJvdkByZWRoYXQuY29tPgotRGF0ZTogRnJp LCA5IEphbiAyMDI2IDExOjM5OjUwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIElzc3VlIDcxNzIg LSBJbmRleCBvcmRlcmluZyBtaXNtYXRjaCBhZnRlciB1cGdyYWRlICgjNzE3MykKLQotQnVnIERl c2NyaXB0aW9uOgotQ29tbWl0IGRhZjczMWY1NTA3MWQ0NWVhZjQwM2E1MmI2M2QzNWY0ZTY5OWZm MjggaW50cm9kdWNlZCBhIHJlZ3Jlc3Npb24uCi1BZnRlciB1cGdyYWRpbmcgdG8gYSB2ZXJzaW9u IHRoYXQgYWRkcyBgaW50ZWdlck9yZGVyaW5nTWF0Y2hgIG1hdGNoaW5nCi1ydWxlIHRvIGBwYXJl bnRpZGAgYW5kIGBhbmNlc3RvcmlkYCBpbmRleGVzLCBzZWFyY2hlcyBtYXkgcmV0dXJuIGVtcHR5 Ci1vciBpbmNvcnJlY3QgcmVzdWx0cy4KLQotVGhpcyBoYXBwZW5zIGJlY2F1c2UgdGhlIGV4aXN0 aW5nIGluZGV4IGRhdGEgd2FzIGNyZWF0ZWQgd2l0aAotbGV4aWNvZ3JhcGhpYyBvcmRlcmluZywg YnV0IHRoZSBuZXcgY29tcGFyZSBmdW5jdGlvbiBleHBlY3RzIGludGVnZXIKLW9yZGVyaW5nLiBJ bmRleCBsb29rdXBzIGZhaWwgYmVjYXVzZSB0aGUgY29tcGFyZSBmdW5jdGlvbiBkb2Vzbid0IG1h dGNoCi10aGUgZGF0YSBvcmRlcmluZy4KLVRoZSByb290IGNhdXNlIGlzIHRoYXQgYGxkYm1faW5z dGFuY2VfY3JlYXRlX2RlZmF1bHRfaW5kZXhlcygpYCBjYWxscwotYGF0dHJfaW5kZXhfY29uZmln KClgIHVuY29uZGl0aW9uYWxseSBmb3IgYHBhcmVudGlkYCBhbmQgYGFuY2VzdG9yaWRgCi1pbmRl eGVzLCB3aGljaCB0cmlnZ2VycyBgYWluZm9fZHVwKClgIHRvIG92ZXJ3cml0ZSBgYWlfa2V5X2Nt cF9mbmAgb24KLWV4aXN0aW5nIGluZGV4ZXMuIFRoaXMgYnJlYWtzIGluZGV4ZXMgdGhhdCB3ZXJl IGNyZWF0ZWQgd2l0aG91dCB0aGUKLWBpbnRlZ2VyT3JkZXJpbmdNYXRjaGAgbWF0Y2hpbmcgcnVs ZS4KLQotRml4IERlc2NyaXB0aW9uOgotKiBDYWxsIGBhdHRyX2luZGV4X2NvbmZpZygpYCBmb3Ig YHBhcmVudGlkYCBhbmQgYGFuY2VzdG9yaWRgIGluZGV4ZXMKLW9ubHkgaWYgaW5kZXggY29uZmln IGRvZXNuJ3QgZXhpc3QuCi0KLSogQWRkIGB1cGdyYWRlX2NoZWNrX2lkX2luZGV4X21hdGNoaW5n X3J1bGUoKWAgdGhhdCBsb2dzIGFuIGVycm9yIG9uCi1zZXJ2ZXIgc3RhcnR1cCBpZiBgcGFyZW50 aWRgIG9yIGBhbmNlc3RvcmlkYCBpbmRleGVzIGFyZSBtaXNzaW5nIHRoZQotaW50ZWdlck9yZGVy aW5nTWF0Y2ggbWF0Y2hpbmcgcnVsZSwgYWR2aXNpbmcgYWRtaW5pc3RyYXRvcnMgdG8gcmVpbmRl eC4KLQotRml4ZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS8zODlkcy8zODktZHMtYmFzZS9pc3N1ZXMv NzE3MgotCi1SZXZpZXdlZCBieTogQHRib3JkYXosIEBwcm9naWVyMzg5LCBAZHJvaWRlY2sgKFRo YW5rcyEpCi0tLS0KLSBsZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2luc3RhbmNlLmMgfCAg MjUgKysrKy0tCi0gbGRhcC9zZXJ2ZXJzL3NsYXBkL3VwZ3JhZGUuYyAgICAgICAgICAgIHwgMTA3 ICsrKysrKysrKysrKysrKysrKysrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgMTIzIGluc2VydGlv bnMoKyksIDkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9sZGFwL3NlcnZlcnMvc2xhcGQv YmFjay1sZGJtL2luc3RhbmNlLmMgYi9sZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2luc3Rh bmNlLmMKLWluZGV4IGNiMDAyYzM3OS4uNzFiZjBmNmZhIDEwMDY0NAotLS0tIGEvbGRhcC9zZXJ2 ZXJzL3NsYXBkL2JhY2stbGRibS9pbnN0YW5jZS5jCi0rKysgYi9sZGFwL3NlcnZlcnMvc2xhcGQv YmFjay1sZGJtL2luc3RhbmNlLmMKLUBAIC0xOTAsNiArMTkwLDcgQEAgbGRibV9pbnN0YW5jZV9j cmVhdGVfZGVmYXVsdF9pbmRleGVzKGJhY2tlbmQgKmJlKQotICAgICBjaGFyICphbmNlc3Rvcmlk X2luZGV4ZXNfbGltaXQgPSBOVUxMOwotICAgICBjaGFyICpwYXJlbnRpZF9pbmRleGVzX2xpbWl0 ID0gTlVMTDsKLSAgICAgc3RydWN0IGF0dHJpbmZvICphaSA9IE5VTEw7Ci0rICAgIHN0cnVjdCBh dHRyaW5mbyAqaW5kZXhfYWxyZWFkeV9jb25maWd1cmVkID0gTlVMTDsKLSAgICAgc3RydWN0IGlu ZGV4X2lkbGlzdHNpemVpbmZvICppdGVyOwotICAgICBpbnQgY29va2llOwotICAgICBpbnQgbGlt aXQ7Ci1AQCAtMjQ4LDEwICsyNDksMTQgQEAgbGRibV9pbnN0YW5jZV9jcmVhdGVfZGVmYXVsdF9p bmRleGVzKGJhY2tlbmQgKmJlKQotICAgICBsZGJtX2luc3RhbmNlX2NvbmZpZ19hZGRfaW5kZXhf ZW50cnkoaW5zdCwgZSwgZmxhZ3MpOwotICAgICBzbGFwaV9lbnRyeV9mcmVlKGUpOwotIAotLSAg ICBlID0gbGRibV9pbnN0YW5jZV9pbml0X2NvbmZpZ19lbnRyeShMREJNX1BBUkVOVElEX1NUUiwg ImVxIiwgMCwgMCwgMCwgImludGVnZXJPcmRlcmluZ01hdGNoIiwgcGFyZW50aWRfaW5kZXhlc19s aW1pdCk7Ci0tICAgIGxkYm1faW5zdGFuY2VfY29uZmlnX2FkZF9pbmRleF9lbnRyeShpbnN0LCBl LCBmbGFncyk7Ci0tICAgIGF0dHJfaW5kZXhfY29uZmlnKGJlLCAibGRibSBpbmRleCBpbml0Iiwg MCwgZSwgMSwgMCwgTlVMTCk7Ci0tICAgIHNsYXBpX2VudHJ5X2ZyZWUoZSk7Ci0rICAgIGFpbmZv X2dldChiZSwgKGNoYXIgKilMREJNX1BBUkVOVElEX1NUUiwgJmFpKTsKLSsgICAgaW5kZXhfYWxy ZWFkeV9jb25maWd1cmVkID0gYWk7Ci0rICAgIGlmICghaW5kZXhfYWxyZWFkeV9jb25maWd1cmVk KSB7Ci0rICAgICAgICBlID0gbGRibV9pbnN0YW5jZV9pbml0X2NvbmZpZ19lbnRyeShMREJNX1BB UkVOVElEX1NUUiwgImVxIiwgMCwgMCwgMCwgImludGVnZXJPcmRlcmluZ01hdGNoIiwgcGFyZW50 aWRfaW5kZXhlc19saW1pdCk7Ci0rICAgICAgICBsZGJtX2luc3RhbmNlX2NvbmZpZ19hZGRfaW5k ZXhfZW50cnkoaW5zdCwgZSwgZmxhZ3MpOwotKyAgICAgICAgYXR0cl9pbmRleF9jb25maWcoYmUs ICJsZGJtIGluZGV4IGluaXQiLCAwLCBlLCAxLCAwLCBOVUxMKTsKLSsgICAgICAgIHNsYXBpX2Vu dHJ5X2ZyZWUoZSk7Ci0rICAgIH0KLSAKLSAgICAgZSA9IGxkYm1faW5zdGFuY2VfaW5pdF9jb25m aWdfZW50cnkoIm9iamVjdGNsYXNzIiwgImVxIiwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgIGxkYm1f aW5zdGFuY2VfY29uZmlnX2FkZF9pbmRleF9lbnRyeShpbnN0LCBlLCBmbGFncyk7Ci1AQCAtMjg4 LDEwICsyOTMsMTQgQEAgbGRibV9pbnN0YW5jZV9jcmVhdGVfZGVmYXVsdF9pbmRleGVzKGJhY2tl bmQgKmJlKQotICAgICAgKiBhbmNlc3RvcmlkIGlzIHNwZWNpYWwsIHRoZXJlIGlzIGFjdHVhbGx5 IG5vIHN1Y2ggYXR0ciB0eXBlCi0gICAgICAqIGJ1dCB3ZSBzdGlsbCB3YW50IHRvIHVzZSB0aGUg YXR0ciBpbmRleCBmaWxlIEFQSXMuCi0gICAgICAqLwotLSAgICBlID0gbGRibV9pbnN0YW5jZV9p bml0X2NvbmZpZ19lbnRyeShMREJNX0FOQ0VTVE9SSURfU1RSLCAiZXEiLCAwLCAwLCAwLCAiaW50 ZWdlck9yZGVyaW5nTWF0Y2giLCBhbmNlc3RvcmlkX2luZGV4ZXNfbGltaXQpOwotLSAgICBsZGJt X2luc3RhbmNlX2NvbmZpZ19hZGRfaW5kZXhfZW50cnkoaW5zdCwgZSwgZmxhZ3MpOwotLSAgICBh dHRyX2luZGV4X2NvbmZpZyhiZSwgImxkYm0gaW5kZXggaW5pdCIsIDAsIGUsIDEsIDAsIE5VTEwp OwotLSAgICBzbGFwaV9lbnRyeV9mcmVlKGUpOwotKyAgICBhaW5mb19nZXQoYmUsIChjaGFyICop TERCTV9BTkNFU1RPUklEX1NUUiwgJmFpKTsKLSsgICAgaW5kZXhfYWxyZWFkeV9jb25maWd1cmVk ID0gYWk7Ci0rICAgIGlmICghaW5kZXhfYWxyZWFkeV9jb25maWd1cmVkKSB7Ci0rICAgICAgICBl ID0gbGRibV9pbnN0YW5jZV9pbml0X2NvbmZpZ19lbnRyeShMREJNX0FOQ0VTVE9SSURfU1RSLCAi ZXEiLCAwLCAwLCAwLCAiaW50ZWdlck9yZGVyaW5nTWF0Y2giLCBhbmNlc3RvcmlkX2luZGV4ZXNf bGltaXQpOwotKyAgICAgICAgbGRibV9pbnN0YW5jZV9jb25maWdfYWRkX2luZGV4X2VudHJ5KGlu c3QsIGUsIGZsYWdzKTsKLSsgICAgICAgIGF0dHJfaW5kZXhfY29uZmlnKGJlLCAibGRibSBpbmRl eCBpbml0IiwgMCwgZSwgMSwgMCwgTlVMTCk7Ci0rICAgICAgICBzbGFwaV9lbnRyeV9mcmVlKGUp OwotKyAgICB9Ci0gCi0gICAgIHNsYXBpX2NoX2ZyZWVfc3RyaW5nKCZhbmNlc3RvcmlkX2luZGV4 ZXNfbGltaXQpOwotICAgICBzbGFwaV9jaF9mcmVlX3N0cmluZygmcGFyZW50aWRfaW5kZXhlc19s aW1pdCk7Ci1kaWZmIC0tZ2l0IGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL3VwZ3JhZGUuYyBiL2xkYXAv c2VydmVycy9zbGFwZC91cGdyYWRlLmMKLWluZGV4IDg1ODM5MjU2NC4uYjAyZTM3ZWQ2IDEwMDY0 NAotLS0tIGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL3VwZ3JhZGUuYwotKysrIGIvbGRhcC9zZXJ2ZXJz L3NsYXBkL3VwZ3JhZGUuYwotQEAgLTMzMCw2ICszMzAsMTA3IEBAIHVwZ3JhZGVfcmVtb3ZlX3N1 YnRyZWVfcmVuYW1lKHZvaWQpCi0gICAgIHJldHVybiBVUEdSQURFX1NVQ0NFU1M7Ci0gfQotIAot Ky8qCi0rICogQ2hlY2sgaWYgcGFyZW50aWQvYW5jZXN0b3JpZCBpbmRleGVzIGFyZSBtaXNzaW5n IHRoZSBpbnRlZ2VyT3JkZXJpbmdNYXRjaAotKyAqIG1hdGNoaW5nIHJ1bGUuCi0rICoKLSsgKiBU aGlzIGZ1bmN0aW9uIGxvZ3MgYSB3YXJuaW5nIGlmIHdlIGRldGVjdCB0aGlzIGNvbmRpdGlvbiwg YWR2aXNpbmcKLSsgKiB0aGUgYWRtaW5pc3RyYXRvciB0byByZWluZGV4IHRoZSBhZmZlY3RlZCBh dHRyaWJ1dGVzLgotKyAqLwotK3N0YXRpYyB1cGdyYWRlX3N0YXR1cwotK3VwZ3JhZGVfY2hlY2tf aWRfaW5kZXhfbWF0Y2hpbmdfcnVsZSh2b2lkKQotK3sKLSsgICAgc3RydWN0IHNsYXBpX3BibG9j ayAqcGIgPSBzbGFwaV9wYmxvY2tfbmV3KCk7Ci0rICAgIFNsYXBpX0VudHJ5ICoqYmFja2VuZHMg PSBOVUxMOwotKyAgICBjb25zdCBjaGFyICpiZV9iYXNlX2RuID0gImNuPWxkYm0gZGF0YWJhc2Us Y249cGx1Z2lucyxjbj1jb25maWciOwotKyAgICBjb25zdCBjaGFyICpiZV9maWx0ZXIgPSAiKG9i amVjdGNsYXNzPW5zQmFja2VuZEluc3RhbmNlKSI7Ci0rICAgIGNvbnN0IGNoYXIgKmF0dHJzX3Rv X2NoZWNrW10gPSB7InBhcmVudGlkIiwgImFuY2VzdG9yaWQiLCBOVUxMfTsKLSsgICAgdXBncmFk ZV9zdGF0dXMgdXJlc3VsdCA9IFVQR1JBREVfU1VDQ0VTUzsKLSsKLSsgICAgLyogU2VhcmNoIGZv ciBhbGwgYmFja2VuZCBpbnN0YW5jZXMgKi8KLSsgICAgc2xhcGlfc2VhcmNoX2ludGVybmFsX3Nl dF9wYigKLSsgICAgICAgICAgICBwYiwgYmVfYmFzZV9kbiwKLSsgICAgICAgICAgICBMREFQX1ND T1BFX09ORUxFVkVMLAotKyAgICAgICAgICAgIGJlX2ZpbHRlciwgTlVMTCwgMCwgTlVMTCwgTlVM TCwKLSsgICAgICAgICAgICBwbHVnaW5fZ2V0X2RlZmF1bHRfY29tcG9uZW50X2lkKCksIDApOwot KyAgICBzbGFwaV9zZWFyY2hfaW50ZXJuYWxfcGIocGIpOwotKyAgICBzbGFwaV9wYmxvY2tfZ2V0 KHBiLCBTTEFQSV9QTFVHSU5fSU5UT1BfU0VBUkNIX0VOVFJJRVMsICZiYWNrZW5kcyk7Ci0rCi0r ICAgIGlmIChiYWNrZW5kcykgewotKyAgICAgICAgZm9yIChzaXplX3QgYmVfaWR4ID0gMDsgYmFj a2VuZHNbYmVfaWR4XSAhPSBOVUxMOyBiZV9pZHgrKykgewotKyAgICAgICAgICAgIGNvbnN0IGNo YXIgKmJlX25hbWUgPSBzbGFwaV9lbnRyeV9hdHRyX2dldF9yZWYoYmFja2VuZHNbYmVfaWR4XSwg ImNuIik7Ci0rICAgICAgICAgICAgaWYgKCFiZV9uYW1lKSB7Ci0rICAgICAgICAgICAgICAgIGNv bnRpbnVlOwotKyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICAvKiBDaGVjayBlYWNoIGF0 dHJpYnV0ZSB0aGF0IHNob3VsZCBoYXZlIGludGVnZXJPcmRlcmluZ01hdGNoICovCi0rICAgICAg ICAgICAgZm9yIChzaXplX3QgYXR0cl9pZHggPSAwOyBhdHRyc190b19jaGVja1thdHRyX2lkeF0g IT0gTlVMTDsgYXR0cl9pZHgrKykgewotKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICphdHRy X25hbWUgPSBhdHRyc190b19jaGVja1thdHRyX2lkeF07Ci0rICAgICAgICAgICAgICAgIHN0cnVj dCBzbGFwaV9wYmxvY2sgKmlkeF9wYiA9IHNsYXBpX3BibG9ja19uZXcoKTsKLSsgICAgICAgICAg ICAgICAgU2xhcGlfRW50cnkgKippZHhfZW50cmllcyA9IE5VTEw7Ci0rICAgICAgICAgICAgICAg IGNoYXIgKmlkeF9kbiA9IHNsYXBpX2NyZWF0ZV9kbl9zdHJpbmcoImNuPSVzLGNuPWluZGV4LGNu PSVzLCVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYXR0cl9uYW1lLCBiZV9uYW1lLCBiZV9iYXNlX2RuKTsKLSsgICAgICAgICAgICAg ICAgY2hhciAqaWR4X2ZpbHRlciA9ICIob2JqZWN0Y2xhc3M9bnNJbmRleCkiOwotKyAgICAgICAg ICAgICAgICBQUkJvb2wgaGFzX21hdGNoaW5nX3J1bGUgPSBQUl9GQUxTRTsKLSsKLSsgICAgICAg ICAgICAgICAgaWYgKCFpZHhfZG4pIHsKLSsgICAgICAgICAgICAgICAgICAgIHNsYXBpX3BibG9j a19kZXN0cm95KGlkeF9wYik7Ci0rICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAg ICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgICAgICBzbGFwaV9zZWFyY2hfaW50ZXJuYWxf c2V0X3BiKAotKyAgICAgICAgICAgICAgICAgICAgICAgIGlkeF9wYiwgaWR4X2RuLAotKyAgICAg ICAgICAgICAgICAgICAgICAgIExEQVBfU0NPUEVfQkFTRSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICBpZHhfZmlsdGVyLCBOVUxMLCAwLCBOVUxMLCBOVUxMLAotKyAgICAgICAgICAgICAgICAg ICAgICAgIHBsdWdpbl9nZXRfZGVmYXVsdF9jb21wb25lbnRfaWQoKSwgMCk7Ci0rICAgICAgICAg ICAgICAgIHNsYXBpX3NlYXJjaF9pbnRlcm5hbF9wYihpZHhfcGIpOwotKyAgICAgICAgICAgICAg ICBzbGFwaV9wYmxvY2tfZ2V0KGlkeF9wYiwgU0xBUElfUExVR0lOX0lOVE9QX1NFQVJDSF9FTlRS SUVTLCAmaWR4X2VudHJpZXMpOwotKwotKyAgICAgICAgICAgICAgICBpZiAoaWR4X2VudHJpZXMg JiYgaWR4X2VudHJpZXNbMF0pIHsKLSsgICAgICAgICAgICAgICAgICAgIC8qIEluZGV4IGV4aXN0 cywgY2hlY2sgaWYgaXQgaGFzIGludGVnZXJPcmRlcmluZ01hdGNoICovCi0rICAgICAgICAgICAg ICAgICAgICBTbGFwaV9BdHRyICptcl9hdHRyID0gTlVMTDsKLSsgICAgICAgICAgICAgICAgICAg IGlmIChzbGFwaV9lbnRyeV9hdHRyX2ZpbmQoaWR4X2VudHJpZXNbMF0sICJuc01hdGNoaW5nUnVs ZSIsICZtcl9hdHRyKSA9PSAwKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgU2xhcGlfVmFs dWUgKnN2YWwgPSBOVUxMOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBpZHg7Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgZm9yIChpZHggPSBzbGFwaV9hdHRyX2ZpcnN0X3ZhbHVlKG1y X2F0dHIsICZzdmFsKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkeCAhPSAtMTsK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkeCA9IHNsYXBpX2F0dHJfbmV4dF92YWx1 ZShtcl9hdHRyLCBpZHgsICZzdmFsKSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgYmVydmFsICpidmFsID0gc2xhcGlfdmFsdWVfZ2V0X2JlcnZhbChzdmFsKTsK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ2YWwgJiYgYnZhbC0+YnZfdmFsICYm Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjYXNlY21wKGJ2YWwtPmJ2X3Zh bCwgImludGVnZXJPcmRlcmluZ01hdGNoIikgPT0gMCkgewotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaGFzX21hdGNoaW5nX3J1bGUgPSBQUl9UUlVFOwotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K LSsgICAgICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgICAgICB9Ci0rCi0r ICAgICAgICAgICAgICAgICAgICBpZiAoIWhhc19tYXRjaGluZ19ydWxlKSB7Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgLyogSW5kZXggZXhpc3RzIGJ1dCBkb2Vzbid0IGhhdmUgaW50ZWdlck9y ZGVyaW5nTWF0Y2gsIGxvZyBhIHdhcm5pbmcgKi8KLSsgICAgICAgICAgICAgICAgICAgICAgICBz bGFwaV9sb2dfZXJyKFNMQVBJX0xPR19FUlIsICJ1cGdyYWRlX2NoZWNrX2lkX2luZGV4X21hdGNo aW5nX3J1bGUiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluZGV4ICclcycg aW4gYmFja2VuZCAnJXMnIGlzIG1pc3NpbmcgJ25zTWF0Y2hpbmdSdWxlOiBpbnRlZ2VyT3JkZXJp bmdNYXRjaCcuICIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbmNvcnJlY3Rs eSBjb25maWd1cmVkIHN5c3RlbSBpbmRleGVzIGNhbiBsZWFkIHRvIHBvb3Igc2VhcmNoIHBlcmZv cm1hbmNlLCByZXBsaWNhdGlvbiBpc3N1ZXMsIGFuZCBvdGhlciBvcGVyYXRpb25hbCBwcm9ibGVt cy4gIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRvIGZpeCB0aGlzLCBhZGQg dGhlIG1hdGNoaW5nIHJ1bGUgYW5kIHJlaW5kZXg6ICIKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJkc2NvbmYgPGluc3RhbmNlPiBiYWNrZW5kIGluZGV4IHNldCAtLWFkZC1tciBp bnRlZ2VyT3JkZXJpbmdNYXRjaCAtLWF0dHIgJXMgJXMgJiYgIgotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImRzY29uZiA8aW5zdGFuY2U+IGJhY2tlbmQgaW5kZXggcmVpbmRleCAt LWF0dHIgJXMgJXMuICIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXQVJOSU5H OiBSZWluZGV4aW5nIGNhbiBiZSByZXNvdXJjZS1pbnRlbnNpdmUgYW5kIG1heSBpbXBhY3Qgc2Vy dmVyIHBlcmZvcm1hbmNlIG9uIGEgbGl2ZSBzeXN0ZW0uICIKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJDb25zaWRlciBzY2hlZHVsaW5nIHJlaW5kZXhpbmcgZHVyaW5nIG1haW50 ZW5hbmNlIHdpbmRvd3Mgb3IgcGVyaW9kcyBvZiBsb3cgYWN0aXZpdHkuXG4iLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYXR0cl9uYW1lLCBiZV9uYW1lLCBhdHRyX25hbWUsIGJl X25hbWUsIGF0dHJfbmFtZSwgYmVfbmFtZSk7Ci0rICAgICAgICAgICAgICAgICAgICB9Ci0rICAg ICAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICAgICAgc2xhcGlfY2hfZnJlZV9zdHJpbmco JmlkeF9kbik7Ci0rICAgICAgICAgICAgICAgIHNsYXBpX2ZyZWVfc2VhcmNoX3Jlc3VsdHNfaW50 ZXJuYWwoaWR4X3BiKTsKLSsgICAgICAgICAgICAgICAgc2xhcGlfcGJsb2NrX2Rlc3Ryb3koaWR4 X3BiKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgICAgc2xhcGlf ZnJlZV9zZWFyY2hfcmVzdWx0c19pbnRlcm5hbChwYik7Ci0rICAgIHNsYXBpX3BibG9ja19kZXN0 cm95KHBiKTsKLSsKLSsgICAgcmV0dXJuIHVyZXN1bHQ7Ci0rfQotKwotIC8qCi0gICogVXBncmFk ZSB0aGUgYmFzZSBjb25maWcgb2YgdGhlIFBBTSBQVEEgcGx1Z2luLgotICAqCi1AQCAtNTQ3LDcg KzY0OCwxMSBAQCB1cGdyYWRlX3NlcnZlcih2b2lkKQotICAgICBpZiAodXBncmFkZV9wYW1fcHRh X2RlZmF1bHRfY29uZmlnKCkgIT0gVVBHUkFERV9TVUNDRVNTKSB7Ci0gICAgICAgICByZXR1cm4g VVBHUkFERV9GQUlMVVJFOwotICAgICB9Ci0tICAgIAotKwotKyAgICBpZiAodXBncmFkZV9jaGVj a19pZF9pbmRleF9tYXRjaGluZ19ydWxlKCkgIT0gVVBHUkFERV9TVUNDRVNTKSB7Ci0rICAgICAg ICByZXR1cm4gVVBHUkFERV9GQUlMVVJFOwotKyAgICB9Ci0rCi0gICAgIHJldHVybiBVUEdSQURF X1NVQ0NFU1M7Ci0gfQotIAotLS0gCi0yLjUyLjAKLQoKZGlmZiAtLWdpdCBhLzAwMDktSXNzdWUt NzE3Mi0ybmQtSW5kZXgtb3JkZXJpbmctbWlzbWF0Y2gtYWZ0ZXItdXBncmFkZS5wYXRjaCBiLzAw MDktSXNzdWUtNzE3Mi0ybmQtSW5kZXgtb3JkZXJpbmctbWlzbWF0Y2gtYWZ0ZXItdXBncmFkZS5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQyZmIyNy4uMDAwMDAwMAotLS0g YS8wMDA5LUlzc3VlLTcxNzItMm5kLUluZGV4LW9yZGVyaW5nLW1pc21hdGNoLWFmdGVyLXVwZ3Jh ZGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1Gcm9tIDZiY2U4ZjZlOGM5 ODUyODljNGFjMWE0ZjA1MWMyOTEyODNjMGExZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBWaWt0b3IgQXNoaXJvdiA8dmFzaGlyb3ZAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMTIg SmFuIDIwMjYgMTA6NTg6MDIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCA5LzldIElzc3VlIDcxNzIg LSAoMm5kKSBJbmRleCBvcmRlcmluZyBtaXNtYXRjaCBhZnRlciB1cGdyYWRlCi0gKCM3MTgwKQot Ci1Db21taXQgNzQyYzEyZTAyNDdhYjY0ZTg3ZGEwMDBhNGRlMmYzZTVjOTkwNDRhYiBpbnRyb2R1 Y2VkIGEgcmVncmVzc2lvbgotd2hlcmUgdGhlIGNoZWNrIHRvIHNraXAgY3JlYXRpbmcgcGFyZW50 aWQvYW5jZXN0b3JpZCBpbmRleGVzIGlmIHRoZXkKLWFscmVhZHkgZXhpc3Qgd2FzIGluY29ycmVj dC4KLVRoZSBgYWluZm9fZ2V0KClgIGZ1bmN0aW9uIGZhbGxzIGJhY2sgdG8gcmV0dXJuaW5nCi1M REJNX1BTRVVET19BVFRSX0RFRkFVTFQgYXR0cmluZm8gd2hlbiB0aGUgcmVxdWVzdGVkIGF0dHJp YnV0ZSBpcyBub3QKLWZvdW5kLgotU2luY2UgTERCTV9QU0VVRE9fQVRUUl9ERUZBVUxUIGlzIGNy ZWF0ZWQgYmVmb3JlIHRoZSBhbmNlc3RvcmlkIGNoZWNrLAotYGFpbmZvX2dldCgpYCByZXR1cm5z IExEQk1fUFNFVURPX0FUVFJfREVGQVVMVCBpbnN0ZWFkIG9mIE5VTEwsIGNhdXNpbmcKLXRoZSBh bmNlc3RvcmlkIGluZGV4IGNyZWF0aW9uIHRvIGJlIHNraXBwZWQgZW50aXJlbHkuCi0KLVdoZW4g b3BlcmF0aW9ucyBsYXRlciB0cnkgdG8gdXNlIHRoZSBhbmNlc3RvcmlkIGluZGV4LCB0aGV5IGZh bGwgYmFjayB0bwotTERCTV9QU0VVRE9fQVRUUl9ERUZBVUxULCBhbmQgYXR0ZW1wdGluZyB0byBv cGVuIHRoZSAuZGVmYXVsdCBkYmkKLW1pZC10cmFuc2FjdGlvbiBmYWlscyB3aXRoIE1EQl9OT1RG T1VORCAoLTMwNzk4KS4KLQotRml4IERlc2NyaXB0aW9uOgotSW5zdGVhZCBvZiBqdXN0IGNoZWNr aW5nIGlmIGBhaW5mb19nZXQoKWAgcmV0dXJucyBub24tTlVMTCwgdmVyaWZ5IHRoYXQKLXRoZSBy ZXR1cm5lZCBhdHRyaW5mbyBpcyBhY3R1YWxseSBmb3IgdGhlIHJlcXVlc3RlZCBhdHRyaWJ1dGUu Ci0KLUZpeGVzOiBodHRwczovL2dpdGh1Yi5jb20vMzg5ZHMvMzg5LWRzLWJhc2UvaXNzdWVzLzcx NzIKLQotUmV2aWV3ZWQgYnk6IEB0Ym9yZGF6IChUaGFua3MhKQotLS0tCi0gbGRhcC9zZXJ2ZXJz L3NsYXBkL2JhY2stbGRibS9pbnN0YW5jZS5jIHwgOCArKysrKy0tLQotIDEgZmlsZSBjaGFuZ2Vk LCA1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9sZGFwL3Nl cnZlcnMvc2xhcGQvYmFjay1sZGJtL2luc3RhbmNlLmMgYi9sZGFwL3NlcnZlcnMvc2xhcGQvYmFj ay1sZGJtL2luc3RhbmNlLmMKLWluZGV4IDcxYmYwZjZmYS4uMmE2ZThjYmI4IDEwMDY0NAotLS0t IGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9pbnN0YW5jZS5jCi0rKysgYi9sZGFwL3Nl cnZlcnMvc2xhcGQvYmFjay1sZGJtL2luc3RhbmNlLmMKLUBAIC0xOTAsNyArMTkwLDcgQEAgbGRi bV9pbnN0YW5jZV9jcmVhdGVfZGVmYXVsdF9pbmRleGVzKGJhY2tlbmQgKmJlKQotICAgICBjaGFy ICphbmNlc3RvcmlkX2luZGV4ZXNfbGltaXQgPSBOVUxMOwotICAgICBjaGFyICpwYXJlbnRpZF9p bmRleGVzX2xpbWl0ID0gTlVMTDsKLSAgICAgc3RydWN0IGF0dHJpbmZvICphaSA9IE5VTEw7Ci0t ICAgIHN0cnVjdCBhdHRyaW5mbyAqaW5kZXhfYWxyZWFkeV9jb25maWd1cmVkID0gTlVMTDsKLSsg ICAgaW50IGluZGV4X2FscmVhZHlfY29uZmlndXJlZCA9IDA7Ci0gICAgIHN0cnVjdCBpbmRleF9p ZGxpc3RzaXplaW5mbyAqaXRlcjsKLSAgICAgaW50IGNvb2tpZTsKLSAgICAgaW50IGxpbWl0Owot QEAgLTI1MCw3ICsyNTAsOCBAQCBsZGJtX2luc3RhbmNlX2NyZWF0ZV9kZWZhdWx0X2luZGV4ZXMo YmFja2VuZCAqYmUpCi0gICAgIHNsYXBpX2VudHJ5X2ZyZWUoZSk7Ci0gCi0gICAgIGFpbmZvX2dl dChiZSwgKGNoYXIgKilMREJNX1BBUkVOVElEX1NUUiwgJmFpKTsKLS0gICAgaW5kZXhfYWxyZWFk eV9jb25maWd1cmVkID0gYWk7Ci0rICAgIC8qIENoZWNrIGlmIHRoZSBhdHRyaW5mbyBpcyBhY3R1 YWxseSBmb3IgcGFyZW50aWQsIG5vdCBhIGZhbGxiYWNrIHRvIC5kZWZhdWx0ICovCi0rICAgIGlu ZGV4X2FscmVhZHlfY29uZmlndXJlZCA9IChhaSAhPSBOVUxMICYmIHN0cmNtcChhaS0+YWlfdHlw ZSwgTERCTV9QQVJFTlRJRF9TVFIpID09IDApOwotICAgICBpZiAoIWluZGV4X2FscmVhZHlfY29u ZmlndXJlZCkgewotICAgICAgICAgZSA9IGxkYm1faW5zdGFuY2VfaW5pdF9jb25maWdfZW50cnko TERCTV9QQVJFTlRJRF9TVFIsICJlcSIsIDAsIDAsIDAsICJpbnRlZ2VyT3JkZXJpbmdNYXRjaCIs IHBhcmVudGlkX2luZGV4ZXNfbGltaXQpOwotICAgICAgICAgbGRibV9pbnN0YW5jZV9jb25maWdf YWRkX2luZGV4X2VudHJ5KGluc3QsIGUsIGZsYWdzKTsKLUBAIC0yOTQsNyArMjk1LDggQEAgbGRi bV9pbnN0YW5jZV9jcmVhdGVfZGVmYXVsdF9pbmRleGVzKGJhY2tlbmQgKmJlKQotICAgICAgKiBi dXQgd2Ugc3RpbGwgd2FudCB0byB1c2UgdGhlIGF0dHIgaW5kZXggZmlsZSBBUElzLgotICAgICAg Ki8KLSAgICAgYWluZm9fZ2V0KGJlLCAoY2hhciAqKUxEQk1fQU5DRVNUT1JJRF9TVFIsICZhaSk7 Ci0tICAgIGluZGV4X2FscmVhZHlfY29uZmlndXJlZCA9IGFpOwotKyAgICAvKiBDaGVjayBpZiB0 aGUgYXR0cmluZm8gaXMgYWN0dWFsbHkgZm9yIGFuY2VzdG9yaWQsIG5vdCBhIGZhbGxiYWNrIHRv IC5kZWZhdWx0ICovCi0rICAgIGluZGV4X2FscmVhZHlfY29uZmlndXJlZCA9IChhaSAhPSBOVUxM ICYmIHN0cmNtcChhaS0+YWlfdHlwZSwgTERCTV9BTkNFU1RPUklEX1NUUikgPT0gMCk7Ci0gICAg IGlmICghaW5kZXhfYWxyZWFkeV9jb25maWd1cmVkKSB7Ci0gICAgICAgICBlID0gbGRibV9pbnN0 YW5jZV9pbml0X2NvbmZpZ19lbnRyeShMREJNX0FOQ0VTVE9SSURfU1RSLCAiZXEiLCAwLCAwLCAw LCAiaW50ZWdlck9yZGVyaW5nTWF0Y2giLCBhbmNlc3RvcmlkX2luZGV4ZXNfbGltaXQpOwotICAg ICAgICAgbGRibV9pbnN0YW5jZV9jb25maWdfYWRkX2luZGV4X2VudHJ5KGluc3QsIGUsIGZsYWdz KTsKLS0tIAotMi41Mi4wCi0KCmRpZmYgLS1naXQgYS8wMDEwLUJ1bXAtbG9kYXNoLWZyb20tNC4x Ny4yMS10by00LjE3LjIzLWluLXNyYy1jb2NrcGl0LTMucGF0Y2ggYi8wMDEwLUJ1bXAtbG9kYXNo LWZyb20tNC4xNy4yMS10by00LjE3LjIzLWluLXNyYy1jb2NrcGl0LTMucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5MGFhNWQuLjAwMDAwMDAKLS0tIGEvMDAxMC1CdW1wLWxv ZGFzaC1mcm9tLTQuMTcuMjEtdG8tNC4xNy4yMy1pbi1zcmMtY29ja3BpdC0zLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSBhNmQxODgwNmI1YjY1YWJhNWMwZTBiNjg2 NjE5ZGU3ODJlNDIwZDY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogImRlcGVuZGFi b3RbYm90XSIgPDQ5Njk5MzMzK2RlcGVuZGFib3RbYm90XUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5j b20+Ci1EYXRlOiBXZWQsIDIxIEphbiAyMDI2IDE5OjU4OjQ2IC0wODAwCi1TdWJqZWN0OiBbUEFU Q0hdIEJ1bXAgbG9kYXNoIGZyb20gNC4xNy4yMSB0byA0LjE3LjIzIGluCi0gL3NyYy9jb2NrcGl0 LzM4OS1jb25zb2xlICgjNzIwMykKLQotQnVtcHMgW2xvZGFzaF0oaHR0cHM6Ly9naXRodWIuY29t L2xvZGFzaC9sb2Rhc2gpIGZyb20gNC4xNy4yMSB0byA0LjE3LjIzLgotLSBbUmVsZWFzZSBub3Rl c10oaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvcmVsZWFzZXMpCi0tIFtDb21taXRz XShodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9jb21wYXJlLzQuMTcuMjEuLi40LjE3 LjIzKQotCi0tLS0KLXVwZGF0ZWQtZGVwZW5kZW5jaWVzOgotLSBkZXBlbmRlbmN5LW5hbWU6IGxv ZGFzaAotICBkZXBlbmRlbmN5LXZlcnNpb246IDQuMTcuMjMKLSAgZGVwZW5kZW5jeS10eXBlOiBp bmRpcmVjdAotLi4uCi0KLVNpZ25lZC1vZmYtYnk6IGRlcGVuZGFib3RbYm90XSA8c3VwcG9ydEBn aXRodWIuY29tPgotQ28tYXV0aG9yZWQtYnk6IGRlcGVuZGFib3RbYm90XSA8NDk2OTkzMzMrZGVw ZW5kYWJvdFtib3RdQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLS0tLQotIHNyYy9jb2NrcGl0 LzM4OS1jb25zb2xlL3BhY2thZ2UtbG9jay5qc29uIHwgMTIgKysrKysrLS0tLS0tCi0gMSBmaWxl IGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBh L3NyYy9jb2NrcGl0LzM4OS1jb25zb2xlL3BhY2thZ2UtbG9jay5qc29uIGIvc3JjL2NvY2twaXQv Mzg5LWNvbnNvbGUvcGFja2FnZS1sb2NrLmpzb24KLWluZGV4IDBhYTViYmJiOS4uMjNmYWVmNjJm IDEwMDY0NAotLS0tIGEvc3JjL2NvY2twaXQvMzg5LWNvbnNvbGUvcGFja2FnZS1sb2NrLmpzb24K LSsrKyBiL3NyYy9jb2NrcGl0LzM4OS1jb25zb2xlL3BhY2thZ2UtbG9jay5qc29uCi1AQCAtNDgz Myw5ICs0ODMzLDkgQEAKLSAgICAgICB9Ci0gICAgIH0sCi0gICAgICJub2RlX21vZHVsZXMvbG9k YXNoIjogewotLSAgICAgICJ2ZXJzaW9uIjogIjQuMTcuMjEiLAotLSAgICAgICJyZXNvbHZlZCI6 ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2gvLS9sb2Rhc2gtNC4xNy4yMS50Z3oi LAotLSAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLXYya0RFZTU3bGVjVHVsYURJdU5UUHkzUnk0 Z0xHSjZaMU8zdkUxa3JnWFpOcnNRK0xGVEdIVnhWamNYUHMxN0xoYlpWR2VkQUp2OFhaMXR2ajVG dlNnPT0iCi0rICAgICAgInZlcnNpb24iOiAiNC4xNy4yMyIsCi0rICAgICAgInJlc29sdmVkIjog Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC8tL2xvZGFzaC00LjE3LjIzLnRneiIs Ci0rICAgICAgImludGVncml0eSI6ICJzaGE1MTItTGdWVE1wUXRJb3BDaTc5U0plRGlQMFRmV2k1 Q05FYy9ML2FSZFRoM3lJdm1aWFRuaGVXcEtqU1pobnZNbDhpWGJDMXRGZzlnZEhIRE1Mb1Y3Q25H K3c9PSIKLSAgICAgfSwKLSAgICAgIm5vZGVfbW9kdWxlcy9sb2Rhc2gubWVyZ2UiOiB7Ci0gICAg ICAgInZlcnNpb24iOiAiNC42LjIiLAotQEAgLTExMDg3LDkgKzExMDg3LDkgQEAKLSAgICAgICB9 Ci0gICAgIH0sCi0gICAgICJsb2Rhc2giOiB7Ci0tICAgICAgInZlcnNpb24iOiAiNC4xNy4yMSIs Ci0tICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC8t L2xvZGFzaC00LjE3LjIxLnRneiIsCi0tICAgICAgImludGVncml0eSI6ICJzaGE1MTItdjJrREVl NTdsZWNUdWxhREl1TlRQeTNSeTRnTEdKNloxTzN2RTFrcmdYWk5yc1ErTEZUR0hWeFZqY1hQczE3 TGhiWlZHZWRBSnY4WFoxdHZqNUZ2U2c9PSIKLSsgICAgICAidmVyc2lvbiI6ICI0LjE3LjIzIiwK LSsgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9kYXNoLy0v bG9kYXNoLTQuMTcuMjMudGd6IiwKLSsgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1MZ1ZUTXBR dElvcENpNzlTSmVEaVAwVGZXaTVDTkVjL0wvYVJkVGgzeUl2bVpYVG5oZVdwS2pTWmhudk1sOGlY YkMxdEZnOWdkSEhETUxvVjdDbkcrdz09IgotICAgICB9LAotICAgICAibG9kYXNoLm1lcmdlIjog ewotICAgICAgICJ2ZXJzaW9uIjogIjQuNi4yIiwKLS0tIAotMi41Mi4wCi0KCmRpZmYgLS1naXQg YS8wMDExLUlzc3VlLTcxODktRFNCTEUwMDA3LWdlbmVyYXRlcy1pbmNvcnJlY3QtcmVtZWRpYXRp b24ucGF0Y2ggYi8wMDExLUlzc3VlLTcxODktRFNCTEUwMDA3LWdlbmVyYXRlcy1pbmNvcnJlY3Qt cmVtZWRpYXRpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0ZDAxY2Mu LjAwMDAwMDAKLS0tIGEvMDAxMS1Jc3N1ZS03MTg5LURTQkxFMDAwNy1nZW5lcmF0ZXMtaW5jb3Jy ZWN0LXJlbWVkaWF0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjM1ICswLDAgQEAKLUZy b20gZjRhODk5YTdiNzc2NDA1OWRhNTZiZTI4MzVkMGIzZTkzYjRhODRiNCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IFZpa3RvciBBc2hpcm92IDx2YXNoaXJvdkByZWRoYXQuY29tPgot RGF0ZTogVHVlLCAyMCBKYW4gMjAyNiAwOTo1Mjo0NyArMDEwMAotU3ViamVjdDogW1BBVENIXSBJ c3N1ZSA3MTg5IC0gRFNCTEUwMDA3IGdlbmVyYXRlcyBpbmNvcnJlY3QgcmVtZWRpYXRpb24KLSBj b21tYW5kcyBmb3Igc2NhbiBsaW1pdHMKLQotQnVnIERlc2NyaXB0aW9uOgotCi1UaGUgZ2VuZXJh dGVkIGRzY29uZiBjb21tYW5kcyBmb3IgZml4aW5nIG1pc3Npbmcgc3lzdGVtIGluZGV4ZXMgaGFk IHR3byBpc3N1ZXM6Ci0KLTEuIFRoZSAtLWFkZC1zY2FubGltaXQgdmFsdWUgd2FzIG5vdCBxdW90 ZWQsIGNhdXNpbmcgdGhlIHNoZWxsIHRvIGludGVycHJldAotICAgImxpbWl0PTUwMDAgdHlwZT1l cSBmbGFncz1BTkQiIGFzIG11bHRpcGxlIGFyZ3VtZW50cyBpbnN0ZWFkIG9mIGEgc2luZ2xlCi0g ICB2YWx1ZSwgcmVzdWx0aW5nIGluICJ1bnJlY29nbml6ZWQgYXJndW1lbnRzOiB0eXBlPWVxIGZs YWdzPUFORCIgZXJyb3IuCi0KLTIuIFdoZW4gYm90aCBtYXRjaGluZyBydWxlIGFuZCBzY2FubGlt aXQgd2VyZSBtaXNzaW5nLCB0d28gc2VwYXJhdGUgY29tbWFuZHMKLSAgIHdlcmUgZ2VuZXJhdGVk IHdoZXJlIHRoZSBzZWNvbmQgd291bGQgZmFpbCBiZWNhdXNlIHRoZSBtYXRjaGluZyBydWxlIHdh cwotICAgYWxyZWFkeSBhZGRlZCBieSB0aGUgZmlyc3QgY29tbWFuZC4KLQotRml4IERlc2NyaXB0 aW9uOgotCi0xLiBRdW90ZSB0aGUgc2NhbmxpbWl0IHZhbHVlIGluIGFsbCByZW1lZGlhdGlvbiBj b21tYW5kcwotCi0yLiBDb21iaW5lIG1hdGNoaW5nIHJ1bGUgYW5kIHNjYW5saW1pdCBmaXhlcyBp bnRvIGEgc2luZ2xlIGNvbW1hbmQgd2hlbgotICAgYm90aCBhcmUgbWlzc2luZyBmb3IgdGhlIHNh bWUgaW5kZXggaW5zdGVhZCBvZiBleHBlY3RlZF9zY2FubGltaXQpCi0KLUZpeGVzOiBodHRwczov L2dpdGh1Yi5jb20vMzg5ZHMvMzg5LWRzLWJhc2UvaXNzdWVzLzcxODkKLQotUmV2aWV3ZWQgYnk6 IEBwcm9naWVyMzg5LCBAZHJvaWRlY2sgKFRoYW5rcyEpCi0tLS0KLSAuLi4vaGVhbHRoY2hlY2sv aGVhbHRoX3N5c3RlbV9pbmRleGVzX3Rlc3QucHkgfCAxMjYgKysrKysrKysrKysrKysrKysrCi0g c3JjL2xpYjM4OS9saWIzODkvYmFja2VuZC5weSAgICAgICAgICAgICAgICAgIHwgIDM5ICsrKy0t LQotIDIgZmlsZXMgY2hhbmdlZCwgMTQ3IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQot Ci1kaWZmIC0tZ2l0IGEvZGlyc3J2dGVzdHMvdGVzdHMvc3VpdGVzL2hlYWx0aGNoZWNrL2hlYWx0 aF9zeXN0ZW1faW5kZXhlc190ZXN0LnB5IGIvZGlyc3J2dGVzdHMvdGVzdHMvc3VpdGVzL2hlYWx0 aGNoZWNrL2hlYWx0aF9zeXN0ZW1faW5kZXhlc190ZXN0LnB5Ci1pbmRleCBhOTc3YjcxZDEuLjQ4 NmZhZDQ0YiAxMDA2NDQKLS0tLSBhL2RpcnNydnRlc3RzL3Rlc3RzL3N1aXRlcy9oZWFsdGhjaGVj ay9oZWFsdGhfc3lzdGVtX2luZGV4ZXNfdGVzdC5weQotKysrIGIvZGlyc3J2dGVzdHMvdGVzdHMv c3VpdGVzL2hlYWx0aGNoZWNrL2hlYWx0aF9zeXN0ZW1faW5kZXhlc190ZXN0LnB5Ci1AQCAtNDA4 LDYgKzQwOCwxMzIgQEAgZGVmIHRlc3RfcmV0cm9jbF9wbHVnaW5fbWlzc2luZ19tYXRjaGluZ19y dWxlKHRvcG9sb2d5X3N0LCByZXRyb2NsX3BsdWdpbl9lbmFibGUKLSAgICAgcnVuX2hlYWx0aGNo ZWNrX2FuZF9mbHVzaF9sb2codG9wb2xvZ3lfc3QsIHN0YW5kYWxvbmUsIGpzb249VHJ1ZSwgc2Vh cmNoZWRfY29kZT1KU09OX09VVFBVVCkKLSAKLSAKLStkZWYgdGVzdF9taXNzaW5nX3NjYW5saW1p dCh0b3BvbG9neV9zdCwgbG9nX2J1ZmZlcmluZ19lbmFibGVkKToKLSsgICAgIiIiQ2hlY2sgaWYg aGVhbHRoY2hlY2sgcmV0dXJucyBEU0JMRTAwMDcgY29kZSB3aGVuIHBhcmVudElkIGluZGV4IGlz IG1pc3Npbmcgc2NhbmxpbWl0Ci0rCi0rICAgIDppZDogNDBlMWJmNmEtMjM5Ny00NTliLWJkZjMt Zjc4N2NhMTE4Yjg2Ci0rICAgIDpzZXR1cDogU3RhbmRhbG9uZSBpbnN0YW5jZQotKyAgICA6c3Rl cHM6Ci0rICAgICAgICAxLiBDcmVhdGUgRFMgaW5zdGFuY2UKLSsgICAgICAgIDIuIFJlbW92ZSBu c0luZGV4SURMaXN0U2NhbkxpbWl0IGZyb20gcGFyZW50SWQgaW5kZXgKLSsgICAgICAgIDMuIFVz ZSBoZWFsdGhjaGVjayB3aXRob3V0IC0tanNvbiBvcHRpb24KLSsgICAgICAgIDQuIFVzZSBoZWFs dGhjaGVjayB3aXRoIC0tanNvbiBvcHRpb24KLSsgICAgICAgIDUuIFZlcmlmeSB0aGUgcmVtZWRp YXRpb24gY29tbWFuZCBoYXMgcHJvcGVybHkgcXVvdGVkIHNjYW5saW1pdAotKyAgICAgICAgNi4g UmUtYWRkIHRoZSBzY2FubGltaXQKLSsgICAgICAgIDcuIFVzZSBoZWFsdGhjaGVjayB3aXRob3V0 IC0tanNvbiBvcHRpb24KLSsgICAgICAgIDguIFVzZSBoZWFsdGhjaGVjayB3aXRoIC0tanNvbiBv cHRpb24KLSsgICAgOmV4cGVjdGVkcmVzdWx0czoKLSsgICAgICAgIDEuIFN1Y2Nlc3MKLSsgICAg ICAgIDIuIFN1Y2Nlc3MKLSsgICAgICAgIDMuIGhlYWx0aGNoZWNrIHJlcG9ydHMgRFNCTEUwMDA3 IGNvZGUgYW5kIHJlbGF0ZWQgZGV0YWlscwotKyAgICAgICAgNC4gaGVhbHRoY2hlY2sgcmVwb3J0 cyBEU0JMRTAwMDcgY29kZSBhbmQgcmVsYXRlZCBkZXRhaWxzCi0rICAgICAgICA1LiBUaGUgc2Nh bmxpbWl0IHZhbHVlIGlzIHF1b3RlZCBpbiB0aGUgcmVtZWRpYXRpb24gY29tbWFuZAotKyAgICAg ICAgNi4gU3VjY2VzcwotKyAgICAgICAgNy4gaGVhbHRoY2hlY2sgcmVwb3J0cyBubyBpc3N1ZXMg Zm91bmQKLSsgICAgICAgIDguIGhlYWx0aGNoZWNrIHJlcG9ydHMgbm8gaXNzdWVzIGZvdW5kCi0r ICAgICIiIgotKwotKyAgICBSRVRfQ09ERSA9ICJEU0JMRTAwMDciCi0rICAgIFBBUkVOVElEX0RO ID0gImNuPXBhcmVudGlkLGNuPWluZGV4LGNuPXVzZXJyb290LGNuPWxkYm0gZGF0YWJhc2UsY249 cGx1Z2lucyxjbj1jb25maWciCi0rICAgIFNDQU5MSU1JVF9WQUxVRSA9ICJsaW1pdD01MDAwIHR5 cGU9ZXEgZmxhZ3M9QU5EIgotKwotKyAgICBzdGFuZGFsb25lID0gdG9wb2xvZ3lfc3Quc3RhbmRh bG9uZQotKwotKyAgICBsb2cuaW5mbygiUmVtb3ZlIG5zSW5kZXhJRExpc3RTY2FuTGltaXQgZnJv bSBwYXJlbnRJZCBpbmRleCIpCi0rICAgIHBhcmVudGlkX2luZGV4ID0gSW5kZXgoc3RhbmRhbG9u ZSwgUEFSRU5USURfRE4pCi0rICAgIHBhcmVudGlkX2luZGV4LnJlbW92ZSgibnNJbmRleElETGlz dFNjYW5MaW1pdCIsIFNDQU5MSU1JVF9WQUxVRSkKLSsKLSsgICAgcnVuX2hlYWx0aGNoZWNrX2Fu ZF9mbHVzaF9sb2codG9wb2xvZ3lfc3QsIHN0YW5kYWxvbmUsIGpzb249RmFsc2UsIHNlYXJjaGVk X2NvZGU9UkVUX0NPREUpCi0rCi0rICAgICMgVmVyaWZ5IHRoZSByZW1lZGlhdGlvbiBjb21tYW5k IGhhcyBwcm9wZXJseSBxdW90ZWQgc2NhbmxpbWl0Ci0rICAgIGFyZ3MgPSBGYWtlQXJncygpCi0r ICAgIGFyZ3MuaW5zdGFuY2UgPSBzdGFuZGFsb25lLnNlcnZlcmlkCi0rICAgIGFyZ3MudmVyYm9z ZSA9IHN0YW5kYWxvbmUudmVyYm9zZQotKyAgICBhcmdzLmxpc3RfZXJyb3JzID0gRmFsc2UKLSsg ICAgYXJncy5saXN0X2NoZWNrcyA9IEZhbHNlCi0rICAgIGFyZ3MuZXhjbHVkZV9jaGVjayA9IFtd Ci0rICAgIGFyZ3MuY2hlY2sgPSBbImJhY2tlbmRzIl0KLSsgICAgYXJncy5kcnlfcnVuID0gRmFs c2UKLSsgICAgYXJncy5qc29uID0gRmFsc2UKLSsgICAgaGVhbHRoX2NoZWNrX3J1bihzdGFuZGFs b25lLCB0b3BvbG9neV9zdC5sb2djYXAubG9nLCBhcmdzKQotKyAgICAjIENoZWNrIHRoYXQgdGhl IHNjYW5saW1pdCBpcyBxdW90ZWQgaW4gdGhlIG91dHB1dAotKyAgICBhc3NlcnQgdG9wb2xvZ3lf c3QubG9nY2FwLmNvbnRhaW5zKCctLWFkZC1zY2FubGltaXQgImxpbWl0PTUwMDAgdHlwZT1lcSBm bGFncz1BTkQiJykKLSsgICAgbG9nLmluZm8oIlZlcmlmaWVkIHNjYW5saW1pdCBpcyBwcm9wZXJs eSBxdW90ZWQgaW4gcmVtZWRpYXRpb24gY29tbWFuZCIpCi0rICAgIHRvcG9sb2d5X3N0LmxvZ2Nh cC5mbHVzaCgpCi0rCi0rICAgIHJ1bl9oZWFsdGhjaGVja19hbmRfZmx1c2hfbG9nKHRvcG9sb2d5 X3N0LCBzdGFuZGFsb25lLCBqc29uPVRydWUsIHNlYXJjaGVkX2NvZGU9UkVUX0NPREUpCi0rCi0r ICAgIGxvZy5pbmZvKCJSZS1hZGQgdGhlIG5zSW5kZXhJRExpc3RTY2FuTGltaXQiKQotKyAgICBw YXJlbnRpZF9pbmRleCA9IEluZGV4KHN0YW5kYWxvbmUsIFBBUkVOVElEX0ROKQotKyAgICBwYXJl bnRpZF9pbmRleC5hZGQoIm5zSW5kZXhJRExpc3RTY2FuTGltaXQiLCBTQ0FOTElNSVRfVkFMVUUp Ci0rCi0rICAgIHJ1bl9oZWFsdGhjaGVja19hbmRfZmx1c2hfbG9nKHRvcG9sb2d5X3N0LCBzdGFu ZGFsb25lLCBqc29uPUZhbHNlLCBzZWFyY2hlZF9jb2RlPUNNRF9PVVRQVVQpCi0rICAgIHJ1bl9o ZWFsdGhjaGVja19hbmRfZmx1c2hfbG9nKHRvcG9sb2d5X3N0LCBzdGFuZGFsb25lLCBqc29uPVRy dWUsIHNlYXJjaGVkX2NvZGU9SlNPTl9PVVRQVVQpCi0rCi0rCi0rZGVmIHRlc3RfbWlzc2luZ19t YXRjaGluZ19ydWxlX2FuZF9zY2FubGltaXQodG9wb2xvZ3lfc3QsIGxvZ19idWZmZXJpbmdfZW5h YmxlZCk6Ci0rICAgICIiIkNoZWNrIGlmIGhlYWx0aGNoZWNrIGdlbmVyYXRlcyBhIHNpbmdsZSBj b21iaW5lZCBjb21tYW5kIHdoZW4gYm90aCBtYXRjaGluZyBydWxlIGFuZCBzY2FubGltaXQgYXJl IG1pc3NpbmcKLSsKLSsgICAgOmlkOiBhZjgyMTRhZC01ZTRjLTQyMmEtOGY3NC0zZTk5MjI3NTUx ZGYKLSsgICAgOnNldHVwOiBTdGFuZGFsb25lIGluc3RhbmNlCi0rICAgIDpzdGVwczoKLSsgICAg ICAgIDEuIENyZWF0ZSBEUyBpbnN0YW5jZQotKyAgICAgICAgMi4gUmVtb3ZlIGJvdGggaW50ZWdl ck9yZGVyaW5nTWF0Y2ggYW5kIG5zSW5kZXhJRExpc3RTY2FuTGltaXQgZnJvbSBwYXJlbnRJZCBp bmRleAotKyAgICAgICAgMy4gVXNlIGhlYWx0aGNoZWNrIGFuZCB2ZXJpZnkgYSBzaW5nbGUgY29t YmluZWQgY29tbWFuZCBpcyBnZW5lcmF0ZWQKLSsgICAgICAgIDQuIFJlLWFkZCB0aGUgbWF0Y2hp bmcgcnVsZSBhbmQgc2NhbmxpbWl0Ci0rICAgICAgICA1LiBVc2UgaGVhbHRoY2hlY2sgd2l0aG91 dCAtLWpzb24gb3B0aW9uCi0rICAgICAgICA2LiBVc2UgaGVhbHRoY2hlY2sgd2l0aCAtLWpzb24g b3B0aW9uCi0rICAgIDpleHBlY3RlZHJlc3VsdHM6Ci0rICAgICAgICAxLiBTdWNjZXNzCi0rICAg ICAgICAyLiBTdWNjZXNzCi0rICAgICAgICAzLiBoZWFsdGhjaGVjayByZXBvcnRzIERTQkxFMDAw NyBhbmQgZ2VuZXJhdGVzIGEgc2luZ2xlIGNvbW1hbmQgd2l0aCBib3RoIC0tYWRkLW1yIGFuZCAt LWFkZC1zY2FubGltaXQKLSsgICAgICAgIDQuIFN1Y2Nlc3MKLSsgICAgICAgIDUuIGhlYWx0aGNo ZWNrIHJlcG9ydHMgbm8gaXNzdWVzIGZvdW5kCi0rICAgICAgICA2LiBoZWFsdGhjaGVjayByZXBv cnRzIG5vIGlzc3VlcyBmb3VuZAotKyAgICAiIiIKLSsKLSsgICAgUkVUX0NPREUgPSAiRFNCTEUw MDA3IgotKyAgICBQQVJFTlRJRF9ETiA9ICJjbj1wYXJlbnRpZCxjbj1pbmRleCxjbj11c2Vycm9v dCxjbj1sZGJtIGRhdGFiYXNlLGNuPXBsdWdpbnMsY249Y29uZmlnIgotKyAgICBTQ0FOTElNSVRf VkFMVUUgPSAibGltaXQ9NTAwMCB0eXBlPWVxIGZsYWdzPUFORCIKLSsKLSsgICAgc3RhbmRhbG9u ZSA9IHRvcG9sb2d5X3N0LnN0YW5kYWxvbmUKLSsKLSsgICAgbG9nLmluZm8oIlJlbW92ZSBib3Ro IGludGVnZXJPcmRlcmluZ01hdGNoIGFuZCBuc0luZGV4SURMaXN0U2NhbkxpbWl0IGZyb20gcGFy ZW50SWQgaW5kZXgiKQotKyAgICBwYXJlbnRpZF9pbmRleCA9IEluZGV4KHN0YW5kYWxvbmUsIFBB UkVOVElEX0ROKQotKyAgICBwYXJlbnRpZF9pbmRleC5yZW1vdmUoIm5zTWF0Y2hpbmdSdWxlIiwg ImludGVnZXJPcmRlcmluZ01hdGNoIikKLSsgICAgcGFyZW50aWRfaW5kZXgucmVtb3ZlKCJuc0lu ZGV4SURMaXN0U2NhbkxpbWl0IiwgU0NBTkxJTUlUX1ZBTFVFKQotKwotKyAgICAjIFJ1biBoZWFs dGhjaGVjayBhbmQgdmVyaWZ5IGNvbWJpbmVkIGNvbW1hbmQKLSsgICAgYXJncyA9IEZha2VBcmdz KCkKLSsgICAgYXJncy5pbnN0YW5jZSA9IHN0YW5kYWxvbmUuc2VydmVyaWQKLSsgICAgYXJncy52 ZXJib3NlID0gc3RhbmRhbG9uZS52ZXJib3NlCi0rICAgIGFyZ3MubGlzdF9lcnJvcnMgPSBGYWxz ZQotKyAgICBhcmdzLmxpc3RfY2hlY2tzID0gRmFsc2UKLSsgICAgYXJncy5leGNsdWRlX2NoZWNr ID0gW10KLSsgICAgYXJncy5jaGVjayA9IFsiYmFja2VuZHMiXQotKyAgICBhcmdzLmRyeV9ydW4g PSBGYWxzZQotKyAgICBhcmdzLmpzb24gPSBGYWxzZQotKyAgICBoZWFsdGhfY2hlY2tfcnVuKHN0 YW5kYWxvbmUsIHRvcG9sb2d5X3N0LmxvZ2NhcC5sb2csIGFyZ3MpCi0rCi0rICAgICMgVmVyaWZ5 IERTQkxFMDAwNyBpcyByZXBvcnRlZAotKyAgICBhc3NlcnQgdG9wb2xvZ3lfc3QubG9nY2FwLmNv bnRhaW5zKFJFVF9DT0RFKQotKyAgICBsb2cuaW5mbygiaGVhbHRoY2hlY2sgcmV0dXJuZWQgY29k ZTogJXMiICUgUkVUX0NPREUpCi0rCi0rICAgICMgVmVyaWZ5IGEgc2luZ2xlIGNvbWJpbmVkIGNv bW1hbmQgaXMgZ2VuZXJhdGVkIHdpdGggYm90aCAtLWFkZC1tciBhbmQgLS1hZGQtc2NhbmxpbWl0 Ci0rICAgIGFzc2VydCB0b3BvbG9neV9zdC5sb2djYXAuY29udGFpbnMoJy0tYWRkLW1yIGludGVn ZXJPcmRlcmluZ01hdGNoIC0tYWRkLXNjYW5saW1pdCAibGltaXQ9NTAwMCB0eXBlPWVxIGZsYWdz PUFORCInKQotKyAgICBsb2cuaW5mbygiVmVyaWZpZWQgY29tYmluZWQgY29tbWFuZCB3aXRoIGJv dGggLS1hZGQtbXIgYW5kIC0tYWRkLXNjYW5saW1pdCIpCi0rCi0rICAgIHRvcG9sb2d5X3N0Lmxv Z2NhcC5mbHVzaCgpCi0rCi0rICAgIGxvZy5pbmZvKCJSZS1hZGQgdGhlIGludGVnZXJPcmRlcmlu Z01hdGNoIG1hdGNoaW5nIHJ1bGUgYW5kIHNjYW5saW1pdCIpCi0rICAgIHBhcmVudGlkX2luZGV4 ID0gSW5kZXgoc3RhbmRhbG9uZSwgUEFSRU5USURfRE4pCi0rICAgIHBhcmVudGlkX2luZGV4LmFk ZCgibnNNYXRjaGluZ1J1bGUiLCAiaW50ZWdlck9yZGVyaW5nTWF0Y2giKQotKyAgICBwYXJlbnRp ZF9pbmRleC5hZGQoIm5zSW5kZXhJRExpc3RTY2FuTGltaXQiLCBTQ0FOTElNSVRfVkFMVUUpCi0r Ci0rICAgIHJ1bl9oZWFsdGhjaGVja19hbmRfZmx1c2hfbG9nKHRvcG9sb2d5X3N0LCBzdGFuZGFs b25lLCBqc29uPUZhbHNlLCBzZWFyY2hlZF9jb2RlPUNNRF9PVVRQVVQpCi0rICAgIHJ1bl9oZWFs dGhjaGVja19hbmRfZmx1c2hfbG9nKHRvcG9sb2d5X3N0LCBzdGFuZGFsb25lLCBqc29uPVRydWUs IHNlYXJjaGVkX2NvZGU9SlNPTl9PVVRQVVQpCi0rCi0rCi0gZGVmIHRlc3RfbXVsdGlwbGVfbWlz c2luZ19pbmRleGVzKHRvcG9sb2d5X3N0LCBsb2dfYnVmZmVyaW5nX2VuYWJsZWQpOgotICAgICAi IiJDaGVjayBpZiBoZWFsdGhjaGVjayByZXR1cm5zIERTQkxFMDAwNyBjb2RlIHdoZW4gbXVsdGlw bGUgc3lzdGVtIGluZGV4ZXMgYXJlIG1pc3NpbmcKLSAKLWRpZmYgLS1naXQgYS9zcmMvbGliMzg5 L2xpYjM4OS9iYWNrZW5kLnB5IGIvc3JjL2xpYjM4OS9saWIzODkvYmFja2VuZC5weQotaW5kZXgg ZmJhOTU5ODdiLi5kYjQ2NGI0M2EgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliMzg5L2xpYjM4OS9iYWNr ZW5kLnB5Ci0rKysgYi9zcmMvbGliMzg5L2xpYjM4OS9iYWNrZW5kLnB5Ci1AQCAtNjc4LDcgKzY3 OCw3IEBAIGNsYXNzIEJhY2tlbmQoRFNMZGFwT2JqZWN0KToKLSAgICAgICAgICAgICAgICAgICAg IGlmIGV4cGVjdGVkX2NvbmZpZy5nZXQoJ21hdGNoaW5nX3J1bGUnKToKLSAgICAgICAgICAgICAg ICAgICAgICAgICBjbWQgKz0gZiIgLS1tYXRjaGluZy1ydWxlIHtleHBlY3RlZF9jb25maWdbJ21h dGNoaW5nX3J1bGUnXX0iCi0gICAgICAgICAgICAgICAgICAgICBpZiBleHBlY3RlZF9jb25maWcu Z2V0KCdzY2FubGltaXQnKToKLS0gICAgICAgICAgICAgICAgICAgICAgICBjbWQgKz0gZiIgLS1h ZGQtc2NhbmxpbWl0IHtleHBlY3RlZF9jb25maWdbJ3NjYW5saW1pdCddfSIKLSsgICAgICAgICAg ICAgICAgICAgICAgICBjbWQgKz0gZiIgLS1hZGQtc2NhbmxpbWl0IFwie2V4cGVjdGVkX2NvbmZp Z1snc2NhbmxpbWl0J119XCIiCi0gICAgICAgICAgICAgICAgICAgICByZW1lZGlhdGlvbl9jb21t YW5kcy5hcHBlbmQoY21kKQotICAgICAgICAgICAgICAgICAgICAgcmVpbmRleF9hdHRycy5hZGQo YXR0cl9uYW1lKSAgIyBOZXcgaW5kZXggbmVlZHMgcmVpbmRleGluZwotICAgICAgICAgICAgICAg ICBlbHNlOgotQEAgLTcwMCwyOCArNzAwLDMxIEBAIGNsYXNzIEJhY2tlbmQoRFNMZGFwT2JqZWN0 KToKLSAgICAgICAgICAgICAgICAgICAgICAgICByZW1lZGlhdGlvbl9jb21tYW5kcy5hcHBlbmQo Y21kKQotICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW5kZXhfYXR0cnMuYWRkKGF0dHJfbmFt ZSkKLSAKLS0gICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgbWF0Y2hpbmcgcnVsZXMKLSsgICAg ICAgICAgICAgICAgICAgICMgQ2hlY2sgbWF0Y2hpbmcgcnVsZXMgYW5kIHNjYW5saW1pdCB0b2dl dGhlciB0byBnZW5lcmF0ZSBhIHNpbmdsZSBjb21iaW5lZCBjb21tYW5kCi0gICAgICAgICAgICAg ICAgICAgICBleHBlY3RlZF9tciA9IGV4cGVjdGVkX2NvbmZpZy5nZXQoJ21hdGNoaW5nX3J1bGUn KQotKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc2NhbmxpbWl0ID0gZXhwZWN0ZWRfY29u ZmlnLmdldCgnc2NhbmxpbWl0JykKLSsKLSsgICAgICAgICAgICAgICAgICAgIG1pc3NpbmdfbXIg PSBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgaWYgZXhwZWN0ZWRfbXI6Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgYWN0dWFsX21yc19sb3dlciA9IFttci5sb3dlcigpIGZvciBtciBpbiBh Y3R1YWxfbXJzXQotICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGV4cGVjdGVkX21yLmxvd2Vy KCkgbm90IGluIGFjdHVhbF9tcnNfbG93ZXI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRpc2NyZXBhbmNpZXMuYXBwZW5kKGYiSW5kZXgge2F0dHJfbmFtZX0gbWlzc2luZyBtYXRjaGlu ZyBydWxlOiB7ZXhwZWN0ZWRfbXJ9IikKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBB ZGQgdGhlIG1pc3NpbmcgbWF0Y2hpbmcgcnVsZQotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjbWQgPSBmImRzY29uZiBZT1VSX0lOU1RBTkNFIGJhY2tlbmQgaW5kZXggc2V0IHtiZW5hbWV9 IC0tYXR0ciB7YXR0cl9uYW1lfSAtLWFkZC1tciB7ZXhwZWN0ZWRfbXJ9IgotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZW1lZGlhdGlvbl9jb21tYW5kcy5hcHBlbmQoY21kKQotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZWluZGV4X2F0dHJzLmFkZChhdHRyX25hbWUpCi0tCi0t ICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGZpbmUgZ3JhaW4gZGVmaW5pdGlvbnMgZm9yIHBh cmVudGlkIE9OTFkKLS0gICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3NjYW5saW1pdCA9IGV4 cGVjdGVkX2NvbmZpZy5nZXQoJ3NjYW5saW1pdCcpCi0tICAgICAgICAgICAgICAgICAgICBpZiAo YXR0cl9uYW1lLmxvd2VyKCkgPT0gInBhcmVudGlkIikgYW5kIGV4cGVjdGVkX3NjYW5saW1pdCBh bmQgKGxlbihhY3R1YWxfc2NhbmxpbWl0KSA9PSAwKToKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGlzY3JlcGFuY2llcy5hcHBlbmQoZiJJbmRleCB7YXR0cl9uYW1lfSBtaXNzaW5nIGZp bmUgZ3JhaW4gZGVmaW5pdGlvbiBvZiBJRHMgbGltaXQ6IHtleHBlY3RlZF9tcn0iKQotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIEFkZCB0aGUgbWlzc2luZyBzY2FubGltaXQKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXhwZWN0ZWRfbXI6Ci0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjbWQgPSBmImRzY29uZiBZT1VSX0lOU1RBTkNFIGJhY2tlbmQgaW5k ZXggc2V0IHtiZW5hbWV9IC0tYXR0ciB7YXR0cl9uYW1lfSAtLWFkZC1tciB7ZXhwZWN0ZWRfbXJ9 IC0tYWRkLXNjYW5saW1pdCB7ZXhwZWN0ZWRfc2NhbmxpbWl0fSIKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgZWxzZToKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZCA9 IGYiZHNjb25mIFlPVVJfSU5TVEFOQ0UgYmFja2VuZCBpbmRleCBzZXQge2JlbmFtZX0gLS1hdHRy IHthdHRyX25hbWV9IC0tYWRkLXNjYW5saW1pdCB7ZXhwZWN0ZWRfc2NhbmxpbWl0fSIKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVtZWRpYXRpb25fY29tbWFuZHMuYXBwZW5kKGNtZCkK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbmRleF9hdHRycy5hZGQoYXR0cl9uYW1l KQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNzaW5nX21yID0gVHJ1ZQotKwotKyAg ICAgICAgICAgICAgICAgICAgbWlzc2luZ19zY2FubGltaXQgPSBGYWxzZQotKyAgICAgICAgICAg ICAgICAgICAgaWYgZXhwZWN0ZWRfc2NhbmxpbWl0IGFuZCAobGVuKGFjdHVhbF9zY2FubGltaXQp ID09IDApOgotKyAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NyZXBhbmNpZXMuYXBwZW5kKGYi SW5kZXgge2F0dHJfbmFtZX0gbWlzc2luZyBmaW5lIGdyYWluIGRlZmluaXRpb24gb2YgSURzIGxp bWl0OiB7ZXhwZWN0ZWRfc2NhbmxpbWl0fSIpCi0rICAgICAgICAgICAgICAgICAgICAgICAgbWlz c2luZ19zY2FubGltaXQgPSBUcnVlCi0rCi0rICAgICAgICAgICAgICAgICAgICAjIEdlbmVyYXRl IGEgc2luZ2xlIGNvbWJpbmVkIGNvbW1hbmQgZm9yIGFsbCBtaXNzaW5nIGl0ZW1zCi0rICAgICAg ICAgICAgICAgICAgICBpZiBtaXNzaW5nX21yIG9yIG1pc3Npbmdfc2NhbmxpbWl0OgotKyAgICAg ICAgICAgICAgICAgICAgICAgIGNtZCA9IGYiZHNjb25mIFlPVVJfSU5TVEFOQ0UgYmFja2VuZCBp bmRleCBzZXQge2JlbmFtZX0gLS1hdHRyIHthdHRyX25hbWV9IgotKyAgICAgICAgICAgICAgICAg ICAgICAgIGlmIG1pc3NpbmdfbXI6Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZCAr PSBmIiAtLWFkZC1tciB7ZXhwZWN0ZWRfbXJ9IgotKyAgICAgICAgICAgICAgICAgICAgICAgIGlm IG1pc3Npbmdfc2NhbmxpbWl0OgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWQgKz0g ZiIgLS1hZGQtc2NhbmxpbWl0IFwie2V4cGVjdGVkX3NjYW5saW1pdH1cIiIKLSsgICAgICAgICAg ICAgICAgICAgICAgICByZW1lZGlhdGlvbl9jb21tYW5kcy5hcHBlbmQoY21kKQotKyAgICAgICAg ICAgICAgICAgICAgICAgIHJlaW5kZXhfYXR0cnMuYWRkKGF0dHJfbmFtZSkKLSAKLSAgICAgICAg ICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgIHNlbGYuX2xvZy5k ZWJ1ZyhmIl9saW50X3N5c3RlbV9pbmRleGVzIC0gRXJyb3IgY2hlY2tpbmcgaW5kZXgge2F0dHJf bmFtZX06IHtlfSIpCi0tLSAKLTIuNTIuMAotCgpkaWZmIC0tZ2l0IGEvMDAxMi1Jc3N1ZS03MTk4 LVdlYi1jb25zb2xlLWRvZXNuLXQtc2hvdy1zdWItc3VmZml4LXdoZW4tLnBhdGNoIGIvMDAxMi1J c3N1ZS03MTk4LVdlYi1jb25zb2xlLWRvZXNuLXQtc2hvdy1zdWItc3VmZml4LXdoZW4tLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDQzMzczLi4wMDAwMDAwCi0tLSBhLzAw MTItSXNzdWUtNzE5OC1XZWItY29uc29sZS1kb2Vzbi10LXNob3ctc3ViLXN1ZmZpeC13aGVuLS5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxNyArMCwwIEBACi1Gcm9tIDhkODdhOWRiYTMzMGU4 YTU4NGJjYzlkYzk3MTAwOTliY2Y3MjAzMzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBTaW1vbiBQaWNodWdpbiA8c3BpY2h1Z2lAcmVkaGF0LmNvbT4KLURhdGU6IEZyaSwgMjMgSmFu IDIwMjYgMTc6MzU6NDUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gSXNzdWUgNzE5OCAtIFdlYiBj b25zb2xlIGRvZXNuJ3Qgc2hvdyBzdWItc3VmZml4IHdoZW4KLSBwYXJlbnQtc3VmZml4IHBvaW50 cyB0byBhbiBlbnRyeSAoIzcyMDIpCi0KLURlc2NyaXB0aW9uOiBUaGUgd2ViIGNvbnNvbGUgZG9l c24ndCBzaG93IHN1Yi1zdWZmaXhlcyB3aGVuIHRoZQotbnNzbGFwZC1wYXJlbnQtc3VmZml4IGF0 dHJpYnV0ZSBwb2ludHMgdG8gYW4gZW50cnkgcmF0aGVyIHRoYW4gYSBiYWNrZW5kCi1zdWZmaXgu Ci1Gb3IgZXhhbXBsZSwgY3JlYXRpbmcgYSBzdWItc3VmZml4IG91PWZvbyxvdT1wZW9wbGUsZGM9 ZXhhbXBsZSxkYz1jb20KLXdpdGggcGFyZW50LXN1ZmZpeCBvdT1wZW9wbGUsZGM9ZXhhbXBsZSxk Yz1jb20gKHdoZXJlIG91PXBlb3BsZSBpcyBqdXN0IGFuCi1lbnRyeSwgbm90IGEgc3VmZml4KSB3 b3VsZCBub3QgYXBwZWFyIGluIHRoZSB3ZWIgY29uc29sZSB0cmVlLgotCi1GaXg6IEluIGJhY2tl bmRfYnVpbGRfdHJlZSgpIGFuZCBnZXRfc3ViX3N1ZmZpeGVzKCksIHRoZSBjb2RlIG9ubHkgbWF0 Y2hlZAotd2hlbiBuc3NsYXBkLXBhcmVudC1zdWZmaXggZXhhY3RseSBlcXVhbGVkIGFuIGV4aXN0 aW5nIGJhY2tlbmQgc3VmZml4LgotTm93IGl0IGFsc28gY2hlY2tzIGlmIHRoZSBwYXJlbnQtc3Vm Zml4IGlzIGFuIGVudHJ5IHVuZGVyIHRoZSBjdXJyZW50Ci1zdWZmaXggKGVuZHMgd2l0aCAsc3Vm Zml4KSBhbmQgaXMgbm90IGl0c2VsZiBhIGJhY2tlbmQgc3VmZml4LiBUaGlzCi1jb3JyZWN0bHkg YXR0YWNoZXMgc3ViLXN1ZmZpeGVzIHRvIHRoZWlyIGNvbnRhaW5pbmcgc3VmZml4IHdoZW4gdGhl Ci1wYXJlbnQtc3VmZml4IHBvaW50cyB0byBhbiBpbnRlcm1lZGlhdGUgZW50cnkuCi0KLUZpeGVz OiBodHRwczovL2dpdGh1Yi5jb20vMzg5ZHMvMzg5LWRzLWJhc2UvaXNzdWVzLzcxOTgKLQotUmV2 aWV3ZWQgYnk6IEBwcm9naWVyMzg5IChUaGFua3MhKQotLS0tCi0gLi4uL3N1aXRlcy9saWIzODkv c3Vic3VmZml4X3RyZWVfdGVzdC5weSAgICAgIHwgMzEzICsrKysrKysrKysrKysrKysrKwotIHNy Yy9saWIzODkvbGliMzg5L2JhY2tlbmQucHkgICAgICAgICAgICAgICAgICB8ICA0NyArKy0KLSBz cmMvbGliMzg5L2xpYjM4OS9jbGlfY29uZi9iYWNrZW5kLnB5ICAgICAgICAgfCAgMzQgKy0KLSAz IGZpbGVzIGNoYW5nZWQsIDM3MCBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKLSBjcmVh dGUgbW9kZSAxMDA2NDQgZGlyc3J2dGVzdHMvdGVzdHMvc3VpdGVzL2xpYjM4OS9zdWJzdWZmaXhf dHJlZV90ZXN0LnB5Ci0KLWRpZmYgLS1naXQgYS9kaXJzcnZ0ZXN0cy90ZXN0cy9zdWl0ZXMvbGli Mzg5L3N1YnN1ZmZpeF90cmVlX3Rlc3QucHkgYi9kaXJzcnZ0ZXN0cy90ZXN0cy9zdWl0ZXMvbGli Mzg5L3N1YnN1ZmZpeF90cmVlX3Rlc3QucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAw MDAwMDAwMDAuLmZhMTBiYTUzMAotLS0tIC9kZXYvbnVsbAotKysrIGIvZGlyc3J2dGVzdHMvdGVz dHMvc3VpdGVzL2xpYjM4OS9zdWJzdWZmaXhfdHJlZV90ZXN0LnB5Ci1AQCAtMCwwICsxLDMxMyBA QAotKyMgLS0tIEJFR0lOIENPUFlSSUdIVCBCTE9DSyAtLS0KLSsjIENvcHlyaWdodCAoQykgMjAy NiBSZWQgSGF0LCBJbmMuCi0rIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyMKLSsjIExpY2Vuc2U6 IEdQTCAodmVyc2lvbiAzIG9yIGFueSBsYXRlciB2ZXJzaW9uKS4KLSsjIFNlZSBMSUNFTlNFIGZv ciBkZXRhaWxzLgotKyMgLS0tIEVORCBDT1BZUklHSFQgQkxPQ0sgLS0tCi0rIwotK2ltcG9ydCBs b2dnaW5nCi0raW1wb3J0IG9zCi0raW1wb3J0IHB5dGVzdAotK2Zyb20gbGliMzg5LnRvcG9sb2dp ZXMgaW1wb3J0IHRvcG9sb2d5X3N0IGFzIHRvcG8KLStmcm9tIGxpYjM4OS5iYWNrZW5kIGltcG9y dCBCYWNrZW5kcwotK2Zyb20gbGliMzg5LmlkbS5vcmdhbml6YXRpb25hbHVuaXQgaW1wb3J0IE9y Z2FuaXphdGlvbmFsVW5pdHMKLStmcm9tIGxpYjM4OS5fY29uc3RhbnRzIGltcG9ydCBERUZBVUxU X1NVRkZJWAotKwotK3B5dGVzdG1hcmsgPSBweXRlc3QubWFyay50aWVyMQotKwotK2xvZ2dpbmcu Z2V0TG9nZ2VyKF9fbmFtZV9fKS5zZXRMZXZlbChsb2dnaW5nLklORk8pCi0rbG9nID0gbG9nZ2lu Zy5nZXRMb2dnZXIoX19uYW1lX18pCi0rCi0rCi0rQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJmdW5j dGlvbiIpCi0rZGVmIHNldHVwX3N1YnN1ZmZpeF93aXRoX2VudHJ5X3BhcmVudCh0b3BvLCByZXF1 ZXN0KToKLSsgICAgIiIiU2V0dXAgYSBzdWItc3VmZml4IHdob3NlIHBhcmVudC1zdWZmaXggcG9p bnRzIHRvIGFuIGVudHJ5LCBub3QgYSBzdWZmaXguIiIiCi0rICAgIGluc3QgPSB0b3BvLnN0YW5k YWxvbmUKLSsKLSsgICAgIyBDcmVhdGUgb3U9cGVvcGxlIGVudHJ5IHVuZGVyIHRoZSByb290IHN1 ZmZpeAotKyAgICBsb2cuaW5mbygiQ3JlYXRpbmcgb3U9cGVvcGxlLGRjPWV4YW1wbGUsZGM9Y29t IGVudHJ5IikKLSsgICAgb3VzID0gT3JnYW5pemF0aW9uYWxVbml0cyhpbnN0LCBERUZBVUxUX1NV RkZJWCkKLSsgICAgb3VfcGVvcGxlID0gb3VzLmdldCgncGVvcGxlJykKLSsKLSsgICAgIyBDcmVh dGUgc3ViLXN1ZmZpeCB3aXRoIHBhcmVudC1zdWZmaXggcG9pbnRpbmcgdG8gdGhlIGVudHJ5Ci0r ICAgIGxvZy5pbmZvKCJDcmVhdGluZyBzdWItc3VmZml4IG91PWZvbyxvdT1wZW9wbGUsZGM9ZXhh bXBsZSxkYz1jb20iKQotKyAgICBiYWNrZW5kcyA9IEJhY2tlbmRzKGluc3QpCi0rICAgIHN1YnN1 ZmZpeF9kbiA9ICdvdT1mb28sb3U9cGVvcGxlLGRjPWV4YW1wbGUsZGM9Y29tJwotKyAgICBwYXJl bnRfc3VmZml4X2RuID0gJ291PXBlb3BsZSxkYz1leGFtcGxlLGRjPWNvbScKLSsKLSsgICAgZm9v X2JhY2tlbmQgPSBiYWNrZW5kcy5jcmVhdGUocHJvcGVydGllcz17Ci0rICAgICAgICAnY24nOiAn Zm9vJywKLSsgICAgICAgICduc3NsYXBkLXN1ZmZpeCc6IHN1YnN1ZmZpeF9kbiwKLSsgICAgICAg ICdwYXJlbnQnOiBwYXJlbnRfc3VmZml4X2RuLAotKyAgICB9KQotKwotKyAgICAjIENyZWF0ZSB0 aGUgc3VmZml4IGVudHJ5Ci0rICAgIGZvb19vdXMgPSBPcmdhbml6YXRpb25hbFVuaXRzKGluc3Qs IHBhcmVudF9zdWZmaXhfZG4pCi0rICAgIGZvb19vdSA9IGZvb19vdXMuY3JlYXRlKHByb3BlcnRp ZXM9eydvdSc6ICdmb28nfSkKLSsKLSsgICAgZGVmIGNsZWFudXAoKToKLSsgICAgICAgIGxvZy5p bmZvKCJDbGVhbmluZyB1cCB0ZXN0IGJhY2tlbmRzIGFuZCBlbnRyaWVzIikKLSsgICAgICAgIHRy eToKLSsgICAgICAgICAgICBmb29fb3UuZGVsZXRlKCkKLSsgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKLSsgICAgICAgICAgICBsb2cud2FybmluZyhmIkZhaWxlZCB0byBkZWxldGUgZm9v X291OiB7ZX0iKQotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIGZvb19iYWNrZW5kLmRlbGV0 ZSgpCi0rICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0rICAgICAgICAgICAgbG9nLndh cm5pbmcoZiJGYWlsZWQgdG8gZGVsZXRlIGZvb19iYWNrZW5kOiB7ZX0iKQotKwotKyAgICByZXF1 ZXN0LmFkZGZpbmFsaXplcihjbGVhbnVwKQotKwotKyAgICByZXR1cm4gewotKyAgICAgICAgJ2lu c3RhbmNlJzogaW5zdCwKLSsgICAgICAgICdiYWNrZW5kcyc6IGJhY2tlbmRzLAotKyAgICAgICAg J2Zvb19iYWNrZW5kJzogZm9vX2JhY2tlbmQsCi0rICAgICAgICAnb3VfcGVvcGxlJzogb3VfcGVv cGxlLAotKyAgICAgICAgJ3N1YnN1ZmZpeF9kbic6IHN1YnN1ZmZpeF9kbiwKLSsgICAgICAgICdw YXJlbnRfc3VmZml4X2RuJzogcGFyZW50X3N1ZmZpeF9kbiwKLSsgICAgfQotKwotKwotK2RlZiB0 ZXN0X3N1YnN1ZmZpeF93aXRoX2VudHJ5X3BhcmVudF9pbl90cmVlKHRvcG8sIHNldHVwX3N1YnN1 ZmZpeF93aXRoX2VudHJ5X3BhcmVudCk6Ci0rICAgICIiIlRlc3QgdGhhdCBhIHN1Yi1zdWZmaXgg d2l0aCBwYXJlbnQgcG9pbnRpbmcgdG8gYW4gZW50cnkgaXMgdmlzaWJsZSBpbiB0aGUgdHJlZS4K LSsKLSsgICAgOmlkOiAyNTZmMzZmNS03NmFkLTQwNDMtYWQ4ZC0xZjllMmFmYzRlMWQKLSsgICAg OnNldHVwOiBTdGFuZGFsb25lIGluc3RhbmNlIHdpdGggc3ViLXN1ZmZpeCB3aG9zZSBwYXJlbnQg aXMgYW4gZW50cnkKLSsgICAgOnN0ZXBzOgotKyAgICAgICAgMS4gVmVyaWZ5IHRoZSBzdWItc3Vm Zml4IGJhY2tlbmQgZXhpc3RzCi0rICAgICAgICAyLiBHZXQgc3ViLXN1ZmZpeGVzIG9mIHRoZSBy b290IGJhY2tlbmQKLSsgICAgICAgIDMuIFZlcmlmeSB0aGUgc3ViLXN1ZmZpeCBhcHBlYXJzIGlu IHRoZSBsaXN0Ci0rICAgIDpleHBlY3RlZHJlc3VsdHM6Ci0rICAgICAgICAxLiBCYWNrZW5kIHNo b3VsZCBleGlzdAotKyAgICAgICAgMi4gU3ViLXN1ZmZpeGVzIHNob3VsZCBiZSByZXRyaWV2YWJs ZQotKyAgICAgICAgMy4gU3ViLXN1ZmZpeCBzaG91bGQgYmUgdmlzaWJsZSAodGhpcyBpcyB3aGVy ZSB0aGUgYnVnIG1hbmlmZXN0ZWQpCi0rICAgICIiIgotKyAgICBiYWNrZW5kcyA9IHNldHVwX3N1 YnN1ZmZpeF93aXRoX2VudHJ5X3BhcmVudFsnYmFja2VuZHMnXQotKyAgICBmb29fYmFja2VuZCA9 IHNldHVwX3N1YnN1ZmZpeF93aXRoX2VudHJ5X3BhcmVudFsnZm9vX2JhY2tlbmQnXQotKyAgICBz dWJzdWZmaXhfZG4gPSBzZXR1cF9zdWJzdWZmaXhfd2l0aF9lbnRyeV9wYXJlbnRbJ3N1YnN1ZmZp eF9kbiddCi0rCi0rICAgICMgU3RlcCAxOiBWZXJpZnkgdGhlIHN1Yi1zdWZmaXggYmFja2VuZCBl eGlzdHMKLSsgICAgYXNzZXJ0IGZvb19iYWNrZW5kLmV4aXN0cygpLCAiVGhlIGZvbyBiYWNrZW5k IHNob3VsZCBleGlzdCIKLSsKLSsgICAgIyBTdGVwIDI6IEdldCBzdWItc3VmZml4ZXMgb2YgdGhl IHJvb3QgYmFja2VuZAotKyAgICByb290X2JhY2tlbmQgPSBiYWNrZW5kcy5nZXQoREVGQVVMVF9T VUZGSVgpCi0rICAgIHN1Yl9zdWZmaXhlcyA9IHJvb3RfYmFja2VuZC5nZXRfc3ViX3N1ZmZpeGVz KCkKLSsgICAgbG9nLmluZm8oZiJTdWItc3VmZml4ZXMgZm91bmQ6IHtbcy5nZXRfYXR0cl92YWxf dXRmOCgnbnNzbGFwZC1zdWZmaXgnKSBmb3IgcyBpbiBzdWJfc3VmZml4ZXNdfSIpCi0rCi0rICAg ICMgU3RlcCAzOiBWZXJpZnkgc3ViLXN1ZmZpeCBpcyBpbiB0aGUgbGlzdAotKyAgICBzdWJfc3Vm Zml4X2ZvdW5kID0gYW55KAotKyAgICAgICAgcy5nZXRfYXR0cl92YWxfdXRmOF9sKCduc3NsYXBk LXN1ZmZpeCcpID09IHN1YnN1ZmZpeF9kbi5sb3dlcigpCi0rICAgICAgICBmb3IgcyBpbiBzdWJf c3VmZml4ZXMKLSsgICAgKQotKwotKyAgICBhc3NlcnQgc3ViX3N1ZmZpeF9mb3VuZCwgKAotKyAg ICAgICAgZiJTdWItc3VmZml4IHtzdWJzdWZmaXhfZG59IHNob3VsZCBiZSB2aXNpYmxlIGluIGdl dF9zdWJfc3VmZml4ZXMoKS4gIgotKyAgICAgICAgIlRoZSBwYXJlbnQtc3VmZml4IHBvaW50cyB0 byBhbiBlbnRyeSwgbm90IGEgYmFja2VuZCBzdWZmaXguIgotKyAgICApCi0rCi0rCi0rZGVmIHRl c3Rfc3Vic3VmZml4X2luX2JhY2tlbmRfbGlzdCh0b3BvLCBzZXR1cF9zdWJzdWZmaXhfd2l0aF9l bnRyeV9wYXJlbnQpOgotKyAgICAiIiJUZXN0IHRoYXQgdGhlIHN1Yi1zdWZmaXggYXBwZWFycyBp biB0aGUgYmFja2VuZCBsaXN0LgotKwotKyAgICA6aWQ6IDBjY2M0OWFmLTkxYmItNGU4Zi1iMGUx LTFiZDBiNzVjMDQxYgotKyAgICA6c2V0dXA6IFN0YW5kYWxvbmUgaW5zdGFuY2Ugd2l0aCBzdWIt c3VmZml4IGNvbmZpZ3VyYXRpb24KLSsgICAgOnN0ZXBzOgotKyAgICAgICAgMS4gR2V0IGFsbCBi YWNrZW5kcwotKyAgICAgICAgMi4gVmVyaWZ5IGJvdGggcm9vdCBzdWZmaXggYW5kIHN1Yi1zdWZm aXggYXJlIHByZXNlbnQKLSsgICAgOmV4cGVjdGVkcmVzdWx0czoKLSsgICAgICAgIDEuIFNob3Vs ZCByZXRyaWV2ZSBhbGwgYmFja2VuZHMKLSsgICAgICAgIDIuIEJvdGggc3VmZml4ZXMgc2hvdWxk IGJlIGxpc3RlZAotKyAgICAiIiIKLSsgICAgYmFja2VuZHMgPSBzZXR1cF9zdWJzdWZmaXhfd2l0 aF9lbnRyeV9wYXJlbnRbJ2JhY2tlbmRzJ10KLSsgICAgc3Vic3VmZml4X2RuID0gc2V0dXBfc3Vi c3VmZml4X3dpdGhfZW50cnlfcGFyZW50WydzdWJzdWZmaXhfZG4nXQotKwotKyAgICBiZV9saXN0 ID0gYmFja2VuZHMubGlzdCgpCi0rICAgIHN1ZmZpeGVzID0gW2JlLmdldF9hdHRyX3ZhbF91dGY4 X2woJ25zc2xhcGQtc3VmZml4JykgZm9yIGJlIGluIGJlX2xpc3RdCi0rCi0rICAgIGFzc2VydCBE RUZBVUxUX1NVRkZJWC5sb3dlcigpIGluIHN1ZmZpeGVzLCBcCi0rICAgICAgICBmIlJvb3Qgc3Vm Zml4IHtERUZBVUxUX1NVRkZJWH0gc2hvdWxkIGJlIGluIHRoZSBsaXN0IgotKyAgICBhc3NlcnQg c3Vic3VmZml4X2RuLmxvd2VyKCkgaW4gc3VmZml4ZXMsIFwKLSsgICAgICAgIGYiU3ViLXN1ZmZp eCB7c3Vic3VmZml4X2RufSBzaG91bGQgYmUgaW4gdGhlIGxpc3QiCi0rCi0rCi0rZGVmIHRlc3Rf c3Vic3VmZml4X2RuX2JvdW5kYXJ5X21hdGNoaW5nKCk6Ci0rICAgICIiIlRlc3QgdGhhdCBzdWZm aXggbWF0Y2hpbmcgcmVzcGVjdHMgRE4gY29tcG9uZW50IGJvdW5kYXJpZXMuCi0rCi0rICAgIDpp ZDogMGI4NTZlMjYtYzM5NC00YzM2LWI5YmEtZDc4OTRhYTJlZDExCi0rICAgIDpzZXR1cDogTm9u ZSAodW5pdCB0ZXN0KQotKyAgICA6c3RlcHM6Ci0rICAgICAgICAxLiBUZXN0IGV4YWN0IHN1ZmZp eCBtYXRjaAotKyAgICAgICAgMi4gVGVzdCBwcm9wZXIgRE4gYW5jZXN0b3IgbWF0Y2ggKGVuZHMg d2l0aCAsc3VmZml4KQotKyAgICAgICAgMy4gVGVzdCB0aGF0IHBhcnRpYWwgc3RyaW5nIG1hdGNo ZXMgYXJlIHJlamVjdGVkCi0rICAgIDpleHBlY3RlZHJlc3VsdHM6Ci0rICAgICAgICAxLiBFeGFj dCBtYXRjaCBzaG91bGQgcmV0dXJuIFRydWUKLSsgICAgICAgIDIuIFByb3BlciBhbmNlc3RvciBz aG91bGQgcmV0dXJuIFRydWUKLSsgICAgICAgIDMuIFBhcnRpYWwgc3RyaW5nIG1hdGNoIHNob3Vs ZCByZXR1cm4gRmFsc2UKLSsgICAgIiIiCi0rICAgIGZyb20gbGliMzg5LmJhY2tlbmQgaW1wb3J0 IGlzX3N1YnN1ZmZpeF9vZgotKwotKyAgICBhbGxfc3VmZml4ZXMgPSB7J2RjPWNvbScsICdkYz1l eGFtcGxlLGRjPWNvbScsICdvdT1kZXB0LGRjPWV4YW1wbGUsZGM9Y29tJ30KLSsKLSsgICAgIyBU ZXN0IDE6IEV4YWN0IG1hdGNoCi0rICAgIGFzc2VydCBpc19zdWJzdWZmaXhfb2YoJ2RjPWV4YW1w bGUsZGM9Y29tJywgJ2RjPWV4YW1wbGUsZGM9Y29tJywgYWxsX3N1ZmZpeGVzKSwgXAotKyAgICAg ICAgIkV4YWN0IG1hdGNoIHNob3VsZCByZXR1cm4gVHJ1ZSIKLSsKLSsgICAgIyBUZXN0IDI6IFBh cmVudCBpcyBhbiBlbnRyeSB1bmRlciB0aGUgc3VmZml4IChub3QgaXRzZWxmIGEgc3VmZml4KQot KyAgICBhc3NlcnQgaXNfc3Vic3VmZml4X29mKCdvdT1wZW9wbGUsZGM9ZXhhbXBsZSxkYz1jb20n LCAnZGM9ZXhhbXBsZSxkYz1jb20nLCBhbGxfc3VmZml4ZXMpLCBcCi0rICAgICAgICAiUGFyZW50 IGVudHJ5IHVuZGVyIHN1ZmZpeCBzaG91bGQgcmV0dXJuIFRydWUiCi0rCi0rICAgICMgVGVzdCAz OiBQYXJlbnQgSVMgYSBzdWZmaXggLSBzaG91bGQgcmV0dXJuIEZhbHNlIChoYW5kbGVkIHNlcGFy YXRlbHkpCi0rICAgIGFzc2VydCBub3QgaXNfc3Vic3VmZml4X29mKCdvdT1kZXB0LGRjPWV4YW1w bGUsZGM9Y29tJywgJ2RjPWV4YW1wbGUsZGM9Y29tJywgYWxsX3N1ZmZpeGVzKSwgXAotKyAgICAg ICAgIlBhcmVudCB0aGF0IGlzIGl0c2VsZiBhIHN1ZmZpeCBzaG91bGQgcmV0dXJuIEZhbHNlIgot KwotKyAgICAjIFRlc3QgNDogRWRnZSBjYXNlIC0gd3JvbmcgRE4gYm91bmRhcnkgKHN0cmluZyBl bmRzIHdpdGggc3VmZml4IGJ1dCB3cm9uZyBib3VuZGFyeSkKLSsgICAgZWRnZV9zdWZmaXhlcyA9 IHsnZGM9Y29tJywgJ3N0LGRjPWNvbSd9Ci0rICAgIGFzc2VydCBpc19zdWJzdWZmaXhfb2YoJ2Rj PXRlc3QsZGM9Y29tJywgJ2RjPWNvbScsIGVkZ2Vfc3VmZml4ZXMpLCBcCi0rICAgICAgICAiZGM9 dGVzdCxkYz1jb20gc2hvdWxkIG1hdGNoIGRjPWNvbSIKLSsgICAgYXNzZXJ0IG5vdCBpc19zdWJz dWZmaXhfb2YoJ2RjPXRlc3QsZGM9Y29tJywgJ3N0LGRjPWNvbScsIGVkZ2Vfc3VmZml4ZXMpLCBc Ci0rICAgICAgICAiZGM9dGVzdCxkYz1jb20gc2hvdWxkIE5PVCBtYXRjaCBzdCxkYz1jb20gKHdy b25nIEROIGJvdW5kYXJ5KSIKLSsKLSsgICAgIyBUZXN0IDU6IE5vbmUgaW5wdXQKLSsgICAgYXNz ZXJ0IG5vdCBpc19zdWJzdWZmaXhfb2YoTm9uZSwgJ2RjPWNvbScsIGFsbF9zdWZmaXhlcyksIFwK LSsgICAgICAgICJOb25lIHBhcmVudCBzaG91bGQgcmV0dXJuIEZhbHNlIgotKwotKyAgICAjIFRl c3QgNjogQ2xvc2VzdCBhbmNlc3RvciAtIHNob3VsZCBvbmx5IG1hdGNoIHRoZSBuZWFyZXN0IHN1 ZmZpeAotKyAgICAjIEhpZXJhcmNoeTogZGM9Y29tIC0+IGRjPWV4YW1wbGUsZGM9Y29tIC0+IG91 PWJyYW5jaCxkYz1leGFtcGxlLGRjPWNvbSAoc3VmZml4KQotKyAgICAjICAgICAgICAgICAgLT4g b3U9ZGVwdCxvdT1icmFuY2gsZGM9ZXhhbXBsZSxkYz1jb20gKGVudHJ5KSAtPiBzdWJzdWZmaXgK LSsgICAgIyBUaGUgc3Vic3VmZml4IHNob3VsZCBvbmx5IGFwcGVhciB1bmRlciBvdT1icmFuY2gs IG5vdCB1bmRlciBkYz1leGFtcGxlLGRjPWNvbQotKyAgICBuZXN0ZWRfc3VmZml4ZXMgPSB7J2Rj PWNvbScsICdkYz1leGFtcGxlLGRjPWNvbScsICdvdT1icmFuY2gsZGM9ZXhhbXBsZSxkYz1jb20n fQotKyAgICBlbnRyeV9wYXJlbnQgPSAnb3U9ZGVwdCxvdT1icmFuY2gsZGM9ZXhhbXBsZSxkYz1j b20nCi0rICAgICMgU2hvdWxkIG1hdGNoIG91PWJyYW5jaCAoY2xvc2VzdCkKLSsgICAgYXNzZXJ0 IGlzX3N1YnN1ZmZpeF9vZihlbnRyeV9wYXJlbnQsICdvdT1icmFuY2gsZGM9ZXhhbXBsZSxkYz1j b20nLCBuZXN0ZWRfc3VmZml4ZXMpLCBcCi0rICAgICAgICAiU2hvdWxkIG1hdGNoIGNsb3Nlc3Qg YW5jZXN0b3Igc3VmZml4IChvdT1icmFuY2gpIgotKyAgICAjIFNob3VsZCBOT1QgbWF0Y2ggZGM9 ZXhhbXBsZSxkYz1jb20gKG5vdCBjbG9zZXN0KQotKyAgICBhc3NlcnQgbm90IGlzX3N1YnN1ZmZp eF9vZihlbnRyeV9wYXJlbnQsICdkYz1leGFtcGxlLGRjPWNvbScsIG5lc3RlZF9zdWZmaXhlcyks IFwKLSsgICAgICAgICJTaG91bGQgTk9UIG1hdGNoIGRpc3RhbnQgYW5jZXN0b3IgKGRjPWV4YW1w bGUpIC0gb3U9YnJhbmNoIGlzIGNsb3NlciIKLSsgICAgIyBTaG91bGQgTk9UIG1hdGNoIGRjPWNv bSAobm90IGNsb3Nlc3QpCi0rICAgIGFzc2VydCBub3QgaXNfc3Vic3VmZml4X29mKGVudHJ5X3Bh cmVudCwgJ2RjPWNvbScsIG5lc3RlZF9zdWZmaXhlcyksIFwKLSsgICAgICAgICJTaG91bGQgTk9U IG1hdGNoIGRpc3RhbnQgYW5jZXN0b3IgKGRjPWNvbSkgLSBvdT1icmFuY2ggaXMgY2xvc2VyIgot KwotKyAgICBsb2cuaW5mbygiQWxsIEROIGJvdW5kYXJ5IGVkZ2UgY2FzZXMgcGFzc2VkIikKLSsK LSsKLStkZWYgdGVzdF9kZWVwX3N1ZmZpeF9oaWVyYXJjaHkodG9wbywgcmVxdWVzdCk6Ci0rICAg ICIiIlRlc3QgY29tcGxleCBoaWVyYXJjaHk6IHN1ZmZpeCAtPiBzdWZmaXggLT4gZW50cnkgLT4g c3VmZml4IC0+IHN1ZmZpeC4KLSsKLSsgICAgOmlkOiBmZDA2NDkxYS1kZWZhLTQ3ODAtODQ3Mi03 OGMwNzdmZWJkZmIKLSsgICAgOnNldHVwOiBTdGFuZGFsb25lIGluc3RhbmNlCi0rICAgIDpzdGVw czoKLSsgICAgICAgIDEuIENyZWF0ZSBzdWItc3VmZml4IG91PWJyYW5jaCAocGFyZW50PWRjPWV4 YW1wbGUsZGM9Y29tIC0gYSBzdWZmaXgpCi0rICAgICAgICAyLiBDcmVhdGUgZW50cnkgb3U9ZGVw dCxvdT1icmFuY2ggKG5vdCBhIHN1ZmZpeCkKLSsgICAgICAgIDMuIENyZWF0ZSBzdWItc3VmZml4 IG91PXRlYW0sb3U9ZGVwdCxvdT1icmFuY2ggKHBhcmVudD1vdT1kZXB0IC0gYW4gZW50cnkpCi0r ICAgICAgICA0LiBDcmVhdGUgc3ViLXN1ZmZpeCBvdT1zdWIsb3U9dGVhbSxvdT1kZXB0LG91PWJy YW5jaCAocGFyZW50PW91PXRlYW0gLSBhIHN1ZmZpeCkKLSsgICAgICAgIDUuIFZlcmlmeSBhbGwg c3ViLXN1ZmZpeGVzIGFyZSBjb3JyZWN0bHkgcGxhY2VkIGluIHRoZSB0cmVlCi0rICAgIDpleHBl Y3RlZHJlc3VsdHM6Ci0rICAgICAgICAxLiBTdWItc3VmZml4IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5 Ci0rICAgICAgICAyLiBFbnRyeSBjcmVhdGVkIHN1Y2Nlc3NmdWxseQotKyAgICAgICAgMy4gU3Vi LXN1ZmZpeCB3aXRoIGVudHJ5IHBhcmVudCBjcmVhdGVkIHN1Y2Nlc3NmdWxseQotKyAgICAgICAg NC4gU3ViLXN1ZmZpeCB3aXRoIHN1ZmZpeCBwYXJlbnQgY3JlYXRlZCBzdWNjZXNzZnVsbHkKLSsg ICAgICAgIDUuIFRyZWUgaGllcmFyY2h5IGlzIGNvcnJlY3QKLSsgICAgIiIiCi0rICAgIGluc3Qg PSB0b3BvLnN0YW5kYWxvbmUKLSsgICAgYmFja2VuZHMgPSBCYWNrZW5kcyhpbnN0KQotKwotKyAg ICAjIERlZmluZSB0aGUgaGllcmFyY2h5Ci0rICAgIGJyYW5jaF9zdWZmaXggPSBmJ291PWJyYW5j aCx7REVGQVVMVF9TVUZGSVh9JwotKyAgICBkZXB0X2VudHJ5ID0gZidvdT1kZXB0LHticmFuY2hf c3VmZml4fScgICMgVGhpcyBpcyBhbiBFTlRSWSwgbm90IGEgc3VmZml4Ci0rICAgIHRlYW1fc3Vm Zml4ID0gZidvdT10ZWFtLHtkZXB0X2VudHJ5fScKLSsgICAgc3ViX3N1ZmZpeCA9IGYnb3U9c3Vi LHt0ZWFtX3N1ZmZpeH0nCi0rCi0rICAgIGNyZWF0ZWRfYmFja2VuZHMgPSBbXQotKyAgICBjcmVh dGVkX2VudHJpZXMgPSBbXQotKwotKyAgICBkZWYgY2xlYW51cCgpOgotKyAgICAgICAgbG9nLmlu Zm8oIkNsZWFuaW5nIHVwIGRlZXAgaGllcmFyY2h5IHRlc3QiKQotKyAgICAgICAgZm9yIGVudHJ5 IGluIHJldmVyc2VkKGNyZWF0ZWRfZW50cmllcyk6Ci0rICAgICAgICAgICAgdHJ5OgotKyAgICAg ICAgICAgICAgICBlbnRyeS5kZWxldGUoKQotKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g YXMgZToKLSsgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoZiJGYWlsZWQgdG8gZGVsZXRlIGVu dHJ5OiB7ZX0iKQotKyAgICAgICAgZm9yIGJlIGluIHJldmVyc2VkKGNyZWF0ZWRfYmFja2VuZHMp OgotKyAgICAgICAgICAgIHRyeToKLSsgICAgICAgICAgICAgICAgYmUuZGVsZXRlKCkKLSsgICAg ICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0rICAgICAgICAgICAgICAgIGxvZy53YXJu aW5nKGYiRmFpbGVkIHRvIGRlbGV0ZSBiYWNrZW5kOiB7ZX0iKQotKwotKyAgICByZXF1ZXN0LmFk ZGZpbmFsaXplcihjbGVhbnVwKQotKwotKyAgICAjIFN0ZXAgMTogQ3JlYXRlIG91PWJyYW5jaCBz dWItc3VmZml4IChwYXJlbnQgaXMgcm9vdCBzdWZmaXgpCi0rICAgIGxvZy5pbmZvKGYiQ3JlYXRp bmcgc3ViLXN1ZmZpeCB7YnJhbmNoX3N1ZmZpeH0iKQotKyAgICBicmFuY2hfYmUgPSBiYWNrZW5k cy5jcmVhdGUocHJvcGVydGllcz17Ci0rICAgICAgICAnY24nOiAnYnJhbmNoJywKLSsgICAgICAg ICduc3NsYXBkLXN1ZmZpeCc6IGJyYW5jaF9zdWZmaXgsCi0rICAgICAgICAncGFyZW50JzogREVG QVVMVF9TVUZGSVgsCi0rICAgIH0pCi0rICAgIGNyZWF0ZWRfYmFja2VuZHMuYXBwZW5kKGJyYW5j aF9iZSkKLSsgICAgYnJhbmNoX291cyA9IE9yZ2FuaXphdGlvbmFsVW5pdHMoaW5zdCwgREVGQVVM VF9TVUZGSVgpCi0rICAgIGJyYW5jaF9vdSA9IGJyYW5jaF9vdXMuY3JlYXRlKHByb3BlcnRpZXM9 eydvdSc6ICdicmFuY2gnfSkKLSsgICAgY3JlYXRlZF9lbnRyaWVzLmFwcGVuZChicmFuY2hfb3Up Ci0rCi0rICAgICMgU3RlcCAyOiBDcmVhdGUgb3U9ZGVwdCBlbnRyeSB1bmRlciBicmFuY2ggKE5P VCBhIHN1ZmZpeCkKLSsgICAgbG9nLmluZm8oZiJDcmVhdGluZyBlbnRyeSB7ZGVwdF9lbnRyeX0i KQotKyAgICBkZXB0X291cyA9IE9yZ2FuaXphdGlvbmFsVW5pdHMoaW5zdCwgYnJhbmNoX3N1ZmZp eCkKLSsgICAgZGVwdF9vdSA9IGRlcHRfb3VzLmNyZWF0ZShwcm9wZXJ0aWVzPXsnb3UnOiAnZGVw dCd9KQotKyAgICBjcmVhdGVkX2VudHJpZXMuYXBwZW5kKGRlcHRfb3UpCi0rCi0rICAgICMgU3Rl cCAzOiBDcmVhdGUgb3U9dGVhbSBzdWItc3VmZml4IChwYXJlbnQgaXMgZGVwdCBFTlRSWSwgbm90 IGEgc3VmZml4KQotKyAgICBsb2cuaW5mbyhmIkNyZWF0aW5nIHN1Yi1zdWZmaXgge3RlYW1fc3Vm Zml4fSB3aXRoIGVudHJ5IHBhcmVudCB7ZGVwdF9lbnRyeX0iKQotKyAgICB0ZWFtX2JlID0gYmFj a2VuZHMuY3JlYXRlKHByb3BlcnRpZXM9ewotKyAgICAgICAgJ2NuJzogJ3RlYW0nLAotKyAgICAg ICAgJ25zc2xhcGQtc3VmZml4JzogdGVhbV9zdWZmaXgsCi0rICAgICAgICAncGFyZW50JzogZGVw dF9lbnRyeSwgICMgUGFyZW50IGlzIGFuIEVOVFJZIQotKyAgICB9KQotKyAgICBjcmVhdGVkX2Jh Y2tlbmRzLmFwcGVuZCh0ZWFtX2JlKQotKyAgICB0ZWFtX291cyA9IE9yZ2FuaXphdGlvbmFsVW5p dHMoaW5zdCwgZGVwdF9lbnRyeSkKLSsgICAgdGVhbV9vdSA9IHRlYW1fb3VzLmNyZWF0ZShwcm9w ZXJ0aWVzPXsnb3UnOiAndGVhbSd9KQotKyAgICBjcmVhdGVkX2VudHJpZXMuYXBwZW5kKHRlYW1f b3UpCi0rCi0rICAgICMgU3RlcCA0OiBDcmVhdGUgb3U9c3ViIHN1Yi1zdWZmaXggKHBhcmVudCBp cyB0ZWFtIHN1ZmZpeCkKLSsgICAgbG9nLmluZm8oZiJDcmVhdGluZyBzdWItc3VmZml4IHtzdWJf c3VmZml4fSB3aXRoIHN1ZmZpeCBwYXJlbnQge3RlYW1fc3VmZml4fSIpCi0rICAgIHN1Yl9iZSA9 IGJhY2tlbmRzLmNyZWF0ZShwcm9wZXJ0aWVzPXsKLSsgICAgICAgICdjbic6ICdzdWInLAotKyAg ICAgICAgJ25zc2xhcGQtc3VmZml4Jzogc3ViX3N1ZmZpeCwKLSsgICAgICAgICdwYXJlbnQnOiB0 ZWFtX3N1ZmZpeCwgICMgUGFyZW50IGlzIGEgU1VGRklYCi0rICAgIH0pCi0rICAgIGNyZWF0ZWRf YmFja2VuZHMuYXBwZW5kKHN1Yl9iZSkKLSsgICAgc3ViX291cyA9IE9yZ2FuaXphdGlvbmFsVW5p dHMoaW5zdCwgdGVhbV9zdWZmaXgpCi0rICAgIHN1Yl9vdSA9IHN1Yl9vdXMuY3JlYXRlKHByb3Bl cnRpZXM9eydvdSc6ICdzdWInfSkKLSsgICAgY3JlYXRlZF9lbnRyaWVzLmFwcGVuZChzdWJfb3Up Ci0rCi0rICAgICMgU3RlcCA1OiBWZXJpZnkgdGhlIHRyZWUgaGllcmFyY2h5Ci0rICAgIGxvZy5p bmZvKCJWZXJpZnlpbmcgdHJlZSBoaWVyYXJjaHkuLi4iKQotKwotKyAgICAjIFJvb3Qgc2hvdWxk IGhhdmUgYnJhbmNoIGFzIHN1Yi1zdWZmaXgKLSsgICAgcm9vdF9iZSA9IGJhY2tlbmRzLmdldChE RUZBVUxUX1NVRkZJWCkKLSsgICAgcm9vdF9zdWJzID0gcm9vdF9iZS5nZXRfc3ViX3N1ZmZpeGVz KCkKLSsgICAgcm9vdF9zdWJfc3VmZml4ZXMgPSBbcy5nZXRfYXR0cl92YWxfdXRmOF9sKCduc3Ns YXBkLXN1ZmZpeCcpIGZvciBzIGluIHJvb3Rfc3Vic10KLSsgICAgbG9nLmluZm8oZiJSb290IHN1 Yi1zdWZmaXhlczoge3Jvb3Rfc3ViX3N1ZmZpeGVzfSIpCi0rICAgIGFzc2VydCBicmFuY2hfc3Vm Zml4Lmxvd2VyKCkgaW4gcm9vdF9zdWJfc3VmZml4ZXMsIFwKLSsgICAgICAgIGYiYnJhbmNoIHNo b3VsZCBiZSB1bmRlciByb290IHN1ZmZpeCIKLSsKLSsgICAgIyBCcmFuY2ggc2hvdWxkIGhhdmUg dGVhbSBhcyBzdWItc3VmZml4IChldmVuIHRob3VnaCB0ZWFtJ3MgcGFyZW50IGlzIGFuIGVudHJ5 KQotKyAgICBicmFuY2hfYmVfb2JqID0gYmFja2VuZHMuZ2V0KGJyYW5jaF9zdWZmaXgpCi0rICAg IGJyYW5jaF9zdWJzID0gYnJhbmNoX2JlX29iai5nZXRfc3ViX3N1ZmZpeGVzKCkKLSsgICAgYnJh bmNoX3N1Yl9zdWZmaXhlcyA9IFtzLmdldF9hdHRyX3ZhbF91dGY4X2woJ25zc2xhcGQtc3VmZml4 JykgZm9yIHMgaW4gYnJhbmNoX3N1YnNdCi0rICAgIGxvZy5pbmZvKGYiQnJhbmNoIHN1Yi1zdWZm aXhlczoge2JyYW5jaF9zdWJfc3VmZml4ZXN9IikKLSsgICAgYXNzZXJ0IHRlYW1fc3VmZml4Lmxv d2VyKCkgaW4gYnJhbmNoX3N1Yl9zdWZmaXhlcywgXAotKyAgICAgICAgZiJ0ZWFtIHNob3VsZCBi ZSB1bmRlciBicmFuY2ggc3VmZml4IChwYXJlbnQgaXMgZW50cnkgdW5kZXIgYnJhbmNoKSIKLSsK LSsgICAgIyBUZWFtIHNob3VsZCBoYXZlIHN1YiBhcyBzdWItc3VmZml4Ci0rICAgIHRlYW1fYmVf b2JqID0gYmFja2VuZHMuZ2V0KHRlYW1fc3VmZml4KQotKyAgICB0ZWFtX3N1YnMgPSB0ZWFtX2Jl X29iai5nZXRfc3ViX3N1ZmZpeGVzKCkKLSsgICAgdGVhbV9zdWJfc3VmZml4ZXMgPSBbcy5nZXRf YXR0cl92YWxfdXRmOF9sKCduc3NsYXBkLXN1ZmZpeCcpIGZvciBzIGluIHRlYW1fc3Vic10KLSsg ICAgbG9nLmluZm8oZiJUZWFtIHN1Yi1zdWZmaXhlczoge3RlYW1fc3ViX3N1ZmZpeGVzfSIpCi0r ICAgIGFzc2VydCBzdWJfc3VmZml4Lmxvd2VyKCkgaW4gdGVhbV9zdWJfc3VmZml4ZXMsIFwKLSsg ICAgICAgIGYic3ViIHNob3VsZCBiZSB1bmRlciB0ZWFtIHN1ZmZpeCIKLSsKLSsgICAgbG9nLmlu Zm8oIkRlZXAgaGllcmFyY2h5IHRlc3QgcGFzc2VkISIpCi0rCi0rCi0raWYgX19uYW1lX18gPT0g J19fbWFpbl9fJzoKLSsgICAgQ1VSUkVOVF9GSUxFID0gb3MucGF0aC5yZWFscGF0aChfX2ZpbGVf XykKLSsgICAgcHl0ZXN0Lm1haW4oWyItcyIsIENVUlJFTlRfRklMRV0pCi1kaWZmIC0tZ2l0IGEv c3JjL2xpYjM4OS9saWIzODkvYmFja2VuZC5weSBiL3NyYy9saWIzODkvbGliMzg5L2JhY2tlbmQu cHkKLWluZGV4IGRiNDY0YjQzYS4uMjc0ZDQ1YWJlIDEwMDY0NAotLS0tIGEvc3JjL2xpYjM4OS9s aWIzODkvYmFja2VuZC5weQotKysrIGIvc3JjL2xpYjM4OS9saWIzODkvYmFja2VuZC5weQotQEAg LTM4LDYgKzM4LDM2IEBAIGZyb20gbGliMzg5LmxpbnQgaW1wb3J0IERTQkxFMDAwMSwgRFNCTEUw MDAyLCBEU0JMRTAwMDMsIERTQkxFMDAwNCwgRFNCTEUwMDA1LCBECi0gZnJvbSBsaWIzODkucGx1 Z2lucyBpbXBvcnQgVVNOUGx1Z2luCi0gCi0gCi0rZGVmIGlzX3N1YnN1ZmZpeF9vZihzdWJfcGFy ZW50LCBiZV9zdWZmaXgsIGFsbF9zdWZmaXhlcyk6Ci0rICAgICIiIkNoZWNrIGlmIHN1Yl9wYXJl bnQgaW5kaWNhdGVzIHRoaXMgaXMgYSBzdWItc3VmZml4IG9mIGJlX3N1ZmZpeC4KLSsKLSsgICAg UmV0dXJucyBUcnVlIG9ubHkgaWYgYmVfc3VmZml4IGlzIHRoZSBDTE9TRVNUIGFuY2VzdG9yIHN1 ZmZpeCBvZiBzdWJfcGFyZW50LgotKyAgICBUaGlzIHByZXZlbnRzIGEgc3ViLXN1ZmZpeCBmcm9t IGFwcGVhcmluZyB1bmRlciBtdWx0aXBsZSBhbmNlc3RvcnMuCi0rCi0rICAgIDpwYXJhbSBzdWJf cGFyZW50OiBUaGUgbnNzbGFwZC1wYXJlbnQtc3VmZml4IHZhbHVlIChsb3dlcmNhc2UpCi0rICAg IDpwYXJhbSBiZV9zdWZmaXg6IFRoZSBzdWZmaXggdG8gY2hlY2sgYWdhaW5zdCAobG93ZXJjYXNl KQotKyAgICA6cGFyYW0gYWxsX3N1ZmZpeGVzOiBTZXQgb2YgYWxsIGJhY2tlbmQgc3VmZml4ZXMg KGxvd2VyY2FzZSkKLSsgICAgOnJldHVybnM6IFRydWUgaWYgYmVfc3VmZml4IGlzIHRoZSBjbG9z ZXN0IGFuY2VzdG9yIHN1ZmZpeAotKyAgICAiIiIKLSsgICAgaWYgbm90IHN1Yl9wYXJlbnQ6Ci0r ICAgICAgICByZXR1cm4gRmFsc2UKLSsgICAgaWYgc3ViX3BhcmVudCA9PSBiZV9zdWZmaXg6Ci0r ICAgICAgICByZXR1cm4gVHJ1ZQotKyAgICBpZiBzdWJfcGFyZW50IGluIGFsbF9zdWZmaXhlczoK LSsgICAgICAgICMgc3ViX3BhcmVudCBpcyBpdHNlbGYgYSBzdWZmaXgsIHdpbGwgYmUgaGFuZGxl ZCBzZXBhcmF0ZWx5Ci0rICAgICAgICByZXR1cm4gRmFsc2UKLSsgICAgaWYgbm90IHN1Yl9wYXJl bnQuZW5kc3dpdGgoJywnICsgYmVfc3VmZml4KToKLSsgICAgICAgIHJldHVybiBGYWxzZQotKyAg ICAjIEZpbmQgdGhlIGNsb3Nlc3QgKGxvbmdlc3QpIG1hdGNoaW5nIHN1ZmZpeCBmb3IgdGhpcyBw YXJlbnQKLSsgICAgYmVzdF9tYXRjaCA9IE5vbmUKLSsgICAgZm9yIHNmeCBpbiBhbGxfc3VmZml4 ZXM6Ci0rICAgICAgICBpZiBzdWJfcGFyZW50ID09IHNmeCBvciBzdWJfcGFyZW50LmVuZHN3aXRo KCcsJyArIHNmeCk6Ci0rICAgICAgICAgICAgaWYgYmVzdF9tYXRjaCBpcyBOb25lIG9yIGxlbihz ZngpID4gbGVuKGJlc3RfbWF0Y2gpOgotKyAgICAgICAgICAgICAgICBiZXN0X21hdGNoID0gc2Z4 Ci0rICAgICMgT25seSByZXR1cm4gVHJ1ZSBpZiBiZV9zdWZmaXggaXMgdGhlIGNsb3Nlc3QgbWF0 Y2gKLSsgICAgcmV0dXJuIGJlc3RfbWF0Y2ggPT0gYmVfc3VmZml4Ci0rCi0rCi0gY2xhc3MgQmFj a2VuZExlZ2FjeShvYmplY3QpOgotICAgICBwcm94aWVkX21ldGhvZHMgPSAnc2VhcmNoX3MgZ2V0 RW50cnknLnNwbGl0KCkKLSAKLUBAIC0xMTA0LDIyICsxMTM0LDI3IEBAIGNsYXNzIEJhY2tlbmQo RFNMZGFwT2JqZWN0KToKLSAgICAgICAgIHZsdi5jcmVhdGUocmRuPSJjbj0iICsgdmx2bmFtZSwg cHJvcGVydGllcz1wcm9wcywgYmFzZWRuPWJhc2VkbikKLSAKLSAgICAgZGVmIGdldF9zdWJfc3Vm Zml4ZXMoc2VsZik6Ci0tICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIEJhY2tlbmQncwotLSAg ICAgICAgcmV0dXJuczogYSBMaXN0IG9mIHN1YnN1ZmZpeCBlbnRyaWVzCi0rICAgICAgICAiIiJS ZXR1cm4gYSBsaXN0IG9mIEJhY2tlbmQncyB0aGF0IGFyZSBzdWItc3VmZml4ZXMgb2YgdGhpcyBi YWNrZW5kLgotKyAgICAgICAgOnJldHVybnM6IEEgbGlzdCBvZiBCYWNrZW5kIGluc3RhbmNlcyB0 aGF0IGFyZSBzdWItc3VmZml4ZXMKLSAgICAgICAgICIiIgotICAgICAgICAgc3Vic3VmZml4ZXMg PSBbXQotICAgICAgICAgdG9wX2JlX3N1ZmZpeCA9IHNlbGYuZ2V0X2F0dHJfdmFsX3V0ZjhfbCgn bnNzbGFwZC1zdWZmaXgnKQotKyAgICAgICAgaWYgbm90IHRvcF9iZV9zdWZmaXg6Ci0rICAgICAg ICAgICAgcmV0dXJuIHN1YnN1ZmZpeGVzCi0rCi0gICAgICAgICBtdHMgPSBzZWxmLl9tdHMubGlz dCgpCi0rICAgICAgICBiZV9pbnN0cyA9IEJhY2tlbmRzKHNlbGYuX2luc3RhbmNlKS5saXN0KCkK LSsgICAgICAgIGFsbF9zdWZmaXhlcyA9IHtiZS5nZXRfYXR0cl92YWxfdXRmOF9sKCduc3NsYXBk LXN1ZmZpeCcpIGZvciBiZSBpbiBiZV9pbnN0c30KLSsKLSAgICAgICAgIGZvciBtdCBpbiBtdHM6 Ci0gICAgICAgICAgICAgcGFyZW50X3N1ZmZpeCA9IG10LmdldF9hdHRyX3ZhbF91dGY4X2woJ25z c2xhcGQtcGFyZW50LXN1ZmZpeCcpCi0gICAgICAgICAgICAgaWYgcGFyZW50X3N1ZmZpeCBpcyBO b25lOgotICAgICAgICAgICAgICAgICBjb250aW51ZQotLSAgICAgICAgICAgIGlmIHBhcmVudF9z dWZmaXggPT0gdG9wX2JlX3N1ZmZpeDoKLSsKLSsgICAgICAgICAgICBpZiBpc19zdWJzdWZmaXhf b2YocGFyZW50X3N1ZmZpeCwgdG9wX2JlX3N1ZmZpeCwgYWxsX3N1ZmZpeGVzKToKLSAgICAgICAg ICAgICAgICAgY2hpbGRfc3VmZml4ID0gbXQuZ2V0X2F0dHJfdmFsX3V0ZjhfbCgnY24nKQotLSAg ICAgICAgICAgICAgICBiZV9pbnN0cyA9IEJhY2tlbmRzKHNlbGYuX2luc3RhbmNlKS5saXN0KCkK LSAgICAgICAgICAgICAgICAgZm9yIGJlIGluIGJlX2luc3RzOgotLSAgICAgICAgICAgICAgICAg ICAgYmVfc3VmZml4ID0gYmUuZ2V0X2F0dHJfdmFsX3V0ZjhfbCgnbnNzbGFwZC1zdWZmaXgnKQot LSAgICAgICAgICAgICAgICAgICAgaWYgY2hpbGRfc3VmZml4ID09IGJlX3N1ZmZpeDoKLSsgICAg ICAgICAgICAgICAgICAgIGlmIGNoaWxkX3N1ZmZpeCA9PSBiZS5nZXRfYXR0cl92YWxfdXRmOF9s KCduc3NsYXBkLXN1ZmZpeCcpOgotICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN1ZmZpeGVz LmFwcGVuZChiZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgcmV0 dXJuIHN1YnN1ZmZpeGVzCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYjM4OS9saWIzODkvY2xpX2NvbmYv YmFja2VuZC5weSBiL3NyYy9saWIzODkvbGliMzg5L2NsaV9jb25mL2JhY2tlbmQucHkKLWluZGV4 IGQwZWM0YmQ5ZS4uOTc3MmUzOWQ0IDEwMDY0NAotLS0tIGEvc3JjL2xpYjM4OS9saWIzODkvY2xp X2NvbmYvYmFja2VuZC5weQotKysrIGIvc3JjL2xpYjM4OS9saWIzODkvY2xpX2NvbmYvYmFja2Vu ZC5weQotQEAgLTcsNyArNyw3IEBACi0gIyBTZWUgTElDRU5TRSBmb3IgZGV0YWlscy4KLSAjIC0t LSBFTkQgQ09QWVJJR0hUIEJMT0NLIC0tLQotIAotLWZyb20gbGliMzg5LmJhY2tlbmQgaW1wb3J0 IEJhY2tlbmQsIEJhY2tlbmRzLCBEYXRhYmFzZUNvbmZpZywgQmFja2VuZFN1ZmZpeFZpZXcKLStm cm9tIGxpYjM4OS5iYWNrZW5kIGltcG9ydCBCYWNrZW5kLCBCYWNrZW5kcywgRGF0YWJhc2VDb25m aWcsIEJhY2tlbmRTdWZmaXhWaWV3LCBpc19zdWJzdWZmaXhfb2YKLSBmcm9tIGxpYjM4OS5jb25m aWd1cmF0aW9ucy5zYW1wbGUgaW1wb3J0ICgKLSAgICAgY3JlYXRlX2Jhc2VfZG9tYWluLAotICAg ICBjcmVhdGVfYmFzZV9vcmcsCi1AQCAtMzM4LDYgKzMzOCw3IEBAIGRlZiBpc19kYl9yZXBsaWNh dGVkKGluc3QsIHN1ZmZpeCk6Ci0gZGVmIGJhY2tlbmRfZ2V0X3N1YnN1ZmZpeGVzKGluc3QsIGJh c2VkbiwgbG9nLCBhcmdzKToKLSAgICAgc3Vic3VmZml4ZXMgPSBbXQotICAgICBiZV9pbnN0cyA9 IE1BTlkoaW5zdCkubGlzdCgpCi0rICAgIGFsbF9zdWZmaXhlcyA9IHtiZS5nZXRfYXR0cl92YWxf dXRmOF9sKCduc3NsYXBkLXN1ZmZpeCcpIGZvciBiZSBpbiBiZV9pbnN0c30KLSAgICAgZm9yIGJl IGluIGJlX2luc3RzOgotICAgICAgICAgYmVfc3VmZml4ID0gYmUuZ2V0X2F0dHJfdmFsX3V0Zjhf bCgnbnNzbGFwZC1zdWZmaXgnKQotICAgICAgICAgaWYgYmVfc3VmZml4ID09IGFyZ3MuYmVfbmFt ZS5sb3dlcigpOgotQEAgLTM0Nyw3ICszNDgsNyBAQCBkZWYgYmFja2VuZF9nZXRfc3Vic3VmZml4 ZXMoaW5zdCwgYmFzZWRuLCBsb2csIGFyZ3MpOgotICAgICAgICAgICAgICAgICBkYl90eXBlID0g InN1ZmZpeCIKLSAgICAgICAgICAgICAgICAgc3ViID0gbXQuZ2V0X2F0dHJfdmFsX3V0ZjhfbCgn bnNzbGFwZC1wYXJlbnQtc3VmZml4JykKLSAgICAgICAgICAgICAgICAgc3ViX2JlID0gbXQuZ2V0 X2F0dHJfdmFsX3V0ZjhfbCgnbnNzbGFwZC1iYWNrZW5kJykKLS0gICAgICAgICAgICAgICAgaWYg c3ViID09IGJlX3N1ZmZpeDoKLSsgICAgICAgICAgICAgICAgaWYgaXNfc3Vic3VmZml4X29mKHN1 YiwgYmVfc3VmZml4LCBhbGxfc3VmZml4ZXMpOgotICAgICAgICAgICAgICAgICAgICAgIyBXZSBo YXZlIGEgc3Vic3VmZml4IChtYXliZSBhIGRiIGxpbms/KQotICAgICAgICAgICAgICAgICAgICAg aWYgaXNfZGJfbGluayhpbnN0LCBzdWJfYmUpOgotICAgICAgICAgICAgICAgICAgICAgICAgIGRi X3R5cGUgPSAibGluayIKLUBAIC0zOTksMzggKzQwMCwzNCBAQCBkZWYgYnVpbGRfbm9kZShzdWZm aXgsIGJlX25hbWUsIHN1YnN1Zj1GYWxzZSwgbGluaz1GYWxzZSwgcmVwbGljYXRlZD1GYWxzZSk6 Ci0gICAgIH0KLSAKLSAKLS1kZWYgYmFja2VuZF9idWlsZF90cmVlKGluc3QsIGJlX2luc3RzLCBu b2Rlcyk6Ci0tICAgICIiIlJlY3Vyc2l2ZWx5IGJ1aWxkIHRoZSB0cmVlCi0tICAgICIiIgotLSAg ICBpZiBsZW4obm9kZXMpID09IDA6Ci0tICAgICAgICAjIERvbmUKLStkZWYgYmFja2VuZF9idWls ZF90cmVlKGluc3QsIGJlX2luc3RzLCBub2RlcywgYWxsX3N1ZmZpeGVzKToKLSsgICAgIiIiUmVj dXJzaXZlbHkgYnVpbGQgdGhlIHRyZWUuIiIiCi0rICAgIGlmIG5vdCBub2RlczoKLSAgICAgICAg IHJldHVybgotIAotICAgICBmb3Igbm9kZSBpbiBub2RlczoKLS0gICAgICAgIG5vZGVfc3VmZml4 ID0gbm9kZVsnaWQnXQotKyAgICAgICAgbm9kZV9zdWZmaXggPSBub2RlWydpZCddLmxvd2VyKCkK LSAgICAgICAgICMgR2V0IHN1YiBzdWZmaXhlcyBhbmQgY2hhaW5pbmcgb2Ygbm9kZQotICAgICAg ICAgZm9yIGJlIGluIGJlX2luc3RzOgotICAgICAgICAgICAgIGJlX3N1ZmZpeCA9IGJlLmdldF9h dHRyX3ZhbF91dGY4X2woJ25zc2xhcGQtc3VmZml4JykKLS0gICAgICAgICAgICBpZiBiZV9zdWZm aXggPT0gbm9kZV9zdWZmaXgubG93ZXIoKToKLSsgICAgICAgICAgICBpZiBiZV9zdWZmaXggPT0g bm9kZV9zdWZmaXg6Ci0gICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBvdXIgcGFyZW50LCBub3cg ZmluZCB0aGUgY2hpbGRyZW4KLSAgICAgICAgICAgICAgICAgbXRzID0gYmUuX210cy5saXN0KCkK LS0KLSAgICAgICAgICAgICAgICAgZm9yIG10IGluIG10czoKLSAgICAgICAgICAgICAgICAgICAg IHN1Yl9wYXJlbnQgPSBtdC5nZXRfYXR0cl92YWxfdXRmOF9sKCduc3NsYXBkLXBhcmVudC1zdWZm aXgnKQotICAgICAgICAgICAgICAgICAgICAgc3ViX2JlID0gbXQuZ2V0X2F0dHJfdmFsX3V0Zjhf bCgnbnNzbGFwZC1iYWNrZW5kJykKLSAgICAgICAgICAgICAgICAgICAgIHN1Yl9zdWZmaXggPSBt dC5nZXRfYXR0cl92YWxfdXRmOF9sKCdjbicpCi0tICAgICAgICAgICAgICAgICAgICBpZiBzdWJf cGFyZW50ID09IGJlX3N1ZmZpeDoKLSsgICAgICAgICAgICAgICAgICAgIGlmIGlzX3N1YnN1ZmZp eF9vZihzdWJfcGFyZW50LCBiZV9zdWZmaXgsIGFsbF9zdWZmaXhlcyk6Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgIyBXZSBoYXZlIGEgc3Vic3VmZml4IChtYXliZSBhIGRiIGxpbms/KQotICAg ICAgICAgICAgICAgICAgICAgICAgIGxpbmsgPSBpc19kYl9saW5rKGluc3QsIHN1Yl9iZSkKLSAg ICAgICAgICAgICAgICAgICAgICAgICByZXBsaWNhdGVkID0gaXNfZGJfcmVwbGljYXRlZChpbnN0 LCBzdWJfc3VmZml4KQotICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVbJ2NoaWxkcmVuJ10u YXBwZW5kKGJ1aWxkX25vZGUoc3ViX3N1ZmZpeCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yl9iZSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN1Zj1UcnVlLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlu az1saW5rLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVwbGljYXRlZD1yZXBsaWNhdGVkKSkKLS0KLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yl9iZSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnN1 Zj1UcnVlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGluaz1saW5rLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGljYXRlZD1yZXBsaWNhdGVkKSkKLSAgICAg ICAgICAgICAgICAgIyBSZWN1cnNlIG92ZXIgdGhlIG5ldyBzdWJzdWZmaXhlcwotLSAgICAgICAg ICAgICAgICBiYWNrZW5kX2J1aWxkX3RyZWUoaW5zdCwgYmVfaW5zdHMsIG5vZGVbJ2NoaWxkcmVu J10pCi0rICAgICAgICAgICAgICAgIGJhY2tlbmRfYnVpbGRfdHJlZShpbnN0LCBiZV9pbnN0cywg bm9kZVsnY2hpbGRyZW4nXSwgYWxsX3N1ZmZpeGVzKQotICAgICAgICAgICAgICAgICBicmVhawot IAotIAotQEAgLTQ3MSw3ICs0NjgsOCBAQCBkZWYgYmFja2VuZF9nZXRfdHJlZShpbnN0LCBiYXNl ZG4sIGxvZywgYXJncyk6Ci0gICAgIGVsc2U6Ci0gICAgICAgICAjIEJ1aWxkIHRoZSB0cmVlCi0g ICAgICAgICBiZV9pbnN0cyA9IEJhY2tlbmRzKGluc3QpLmxpc3QoKQotLSAgICAgICAgYmFja2Vu ZF9idWlsZF90cmVlKGluc3QsIGJlX2luc3RzLCBub2RlcykKLSsgICAgICAgIGFsbF9zdWZmaXhl cyA9IHtiZS5nZXRfYXR0cl92YWxfdXRmOF9sKCduc3NsYXBkLXN1ZmZpeCcpIGZvciBiZSBpbiBi ZV9pbnN0c30KLSsgICAgICAgIGJhY2tlbmRfYnVpbGRfdHJlZShpbnN0LCBiZV9pbnN0cywgbm9k ZXMsIGFsbF9zdWZmaXhlcykKLSAKLSAgICAgICAgICMgRG9uZQotICAgICAgICAgaWYgYXJncy5q c29uOgotLS0gCi0yLjUyLjAKLQoKZGlmZiAtLWdpdCBhLzAwMTMtSXNzdWUtNzE4NC1hcmdwYXJz ZS5IZWxwRm9ybWF0dGVyLV9mb3JtYXRfYWN0aW9uc191cy5wYXRjaCBiLzAwMTMtSXNzdWUtNzE4 NC1hcmdwYXJzZS5IZWxwRm9ybWF0dGVyLV9mb3JtYXRfYWN0aW9uc191cy5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFjYmNmNC4uMDAwMDAwMAotLS0gYS8wMDEzLUlzc3Vl LTcxODQtYXJncGFyc2UuSGVscEZvcm1hdHRlci1fZm9ybWF0X2FjdGlvbnNfdXMucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDk4MjI5ZmU5Y2RlMTFhZWRlMTA0ZGZj NjY5Mjc0ZTRlMzc0NWI0ZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIFJl eW5vbGRzIDxtcmV5bm9sZHNAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMTIgSmFuIDIwMjYgMTM6 NTM6MDUgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gSXNzdWUgNzE4NCAtIGFyZ3BhcnNlLkhlbHBG b3JtYXR0ZXIgX2Zvcm1hdF9hY3Rpb25zX3VzYWdlKCkKLSBpcyBkZXByZWNhdGVkCi0KLURlc2Ny aXB0aW9uOgotCi1fZm9ybWF0X2FjdGlvbnNfdXNhZ2UoKSB3YXMgcmVtb3ZlZCBpbiBweXRob24g My4xNS4gSW5zdGVhZCB3ZSBjYW4gdXNlCi1fZ2V0X2FjdGlvbnNfdXNhZ2VfcGFydHMoKSBidXQg aXQgYWxzbyBiZWhhdmVzIGRpZmZlcmVudGx5IGJldHdlZW4KLXB5dGhvbiAzLjE0IGFuZCAzLjE1 IHNvIHdlIG5lZWQgc3BlY2lhbCBoYW5kbGluZy4KLQotUmVsYXRlczogaHR0cHM6Ly9naXRodWIu Y29tLzM4OWRzLzM4OS1kcy1iYXNlL2lzc3Vlcy83MTg0Ci0KLVJldmlld2VkIGJ5OiBzcGljaHVn aShUaGFua3MhKQotLS0tCi0gc3JjL2xpYjM4OS9saWIzODkvY2xpX2Jhc2UvX19pbml0X18ucHkg fCAxNSArKysrKysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYjM4OS9saWIzODkvY2xpX2Jhc2Uv X19pbml0X18ucHkgYi9zcmMvbGliMzg5L2xpYjM4OS9jbGlfYmFzZS9fX2luaXRfXy5weQotaW5k ZXggMDZiOGY5OTY0Li5mMTA1NWFhZGMgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliMzg5L2xpYjM4OS9j bGlfYmFzZS9fX2luaXRfXy5weQotKysrIGIvc3JjL2xpYjM4OS9saWIzODkvY2xpX2Jhc2UvX19p bml0X18ucHkKLUBAIC00MTMsNyArNDEzLDIwIEBAIGNsYXNzIEN1c3RvbUhlbHBGb3JtYXR0ZXIo YXJncGFyc2UuSGVscEZvcm1hdHRlcik6Ci0gCi0gICAgIGRlZiBfZm9ybWF0X3VzYWdlKHNlbGYs IHVzYWdlLCBhY3Rpb25zLCBncm91cHMsIHByZWZpeCk6Ci0gICAgICAgICB1c2FnZSA9IHN1cGVy KEN1c3RvbUhlbHBGb3JtYXR0ZXIsIHNlbGYpLl9mb3JtYXRfdXNhZ2UodXNhZ2UsIGFjdGlvbnMs IGdyb3VwcywgcHJlZml4KQotLSAgICAgICAgZm9ybWF0dGVkX29wdGlvbnMgPSBzZWxmLl9mb3Jt YXRfYWN0aW9uc191c2FnZShwYXJlbnRfYXJndW1lbnRzLCBbXSkKLSsKLSsgICAgICAgIGlmIHN5 cy52ZXJzaW9uX2luZm8gPCAoMywgMTMpOgotKyAgICAgICAgICAgICMgVXNlIF9mb3JtYXRfYWN0 aW9uc191c2FnZSgpIGZvciBQeXRob24gMy4xMiBhbmQgZWFybGllcgotKyAgICAgICAgICAgIGZv cm1hdHRlZF9vcHRpb25zID0gc2VsZi5fZm9ybWF0X2FjdGlvbnNfdXNhZ2UocGFyZW50X2FyZ3Vt ZW50cywgW10pCi0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAgICMgVXNlIF9nZXRfYWN0aW9u c191c2FnZV9wYXJ0cygpIGZvciBQeXRob24gMy4xMyBhbmQgbGF0ZXIKLSsgICAgICAgICAgICBh Y3Rpb25fcGFydHMgPSBzZWxmLl9nZXRfYWN0aW9uc191c2FnZV9wYXJ0cyhwYXJlbnRfYXJndW1l bnRzLCBbXSkKLSsgICAgICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCAxNSk6Ci0r ICAgICAgICAgICAgICAgICMgUHl0aG9uIDMuMTUgcmV0dXJucyBhIHR1cGxlIChsaXN0IG9mIGFj dGlvbnMsIGNvdW50IG9mIGFjdGlvbnMpCi0rICAgICAgICAgICAgICAgIGZvcm1hdHRlZF9vcHRp b25zID0gJyAnLmpvaW4oYWN0aW9uX3BhcnRzWzBdKQotKyAgICAgICAgICAgIGVsc2U6Ci0rICAg ICAgICAgICAgICAgICMgUHl0aG9uIDMuMTMgYW5kIDMuMTQgcmV0dXJuIGEgbGlzdCBvZiBhY3Rp b25zCi0rICAgICAgICAgICAgICAgIGZvcm1hdHRlZF9vcHRpb25zID0gJyAnLmpvaW4oYWN0aW9u X3BhcnRzKQotKwotICAgICAgICAgIyBJZiBmb3JtYXR0ZWRfb3B0aW9ucyBhbHJlYWR5IGluIHVz YWdlIC0gcmVtb3ZlIHRoZW0KLSAgICAgICAgIGlmIGZvcm1hdHRlZF9vcHRpb25zIGluIHVzYWdl OgotICAgICAgICAgICAgIHVzYWdlID0gdXNhZ2UucmVwbGFjZShmJyB7Zm9ybWF0dGVkX29wdGlv bnN9JywgJycpCi0tLSAKLTIuNTIuMAotCgpkaWZmIC0tZ2l0IGEvMDAxNC1Jc3N1ZS03MDI3LTJu ZC0zODktZHMtYmFzZS1PcGVuU2Nhbkh1Yi1MZWFrcy1EZXRlY3RlLnBhdGNoIGIvMDAxNC1Jc3N1 ZS03MDI3LTJuZC0zODktZHMtYmFzZS1PcGVuU2Nhbkh1Yi1MZWFrcy1EZXRlY3RlLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWIyYzg1Li4wMDAwMDAwCi0tLSBhLzAwMTQt SXNzdWUtNzAyNy0ybmQtMzg5LWRzLWJhc2UtT3BlblNjYW5IdWItTGVha3MtRGV0ZWN0ZS5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gYjVjOGRmZTE2NDU2ZmJkOWQz NjBjZWM0OTJmODY5ZjQyZjQwMTA1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFZp a3RvciBBc2hpcm92IDx2YXNoaXJvdkByZWRoYXQuY29tPgotRGF0ZTogRnJpLCAzMCBKYW4gMjAy NiAxMjowMDoxMyArMDEwMAotU3ViamVjdDogW1BBVENIXSBJc3N1ZSA3MDI3IC0gKDJuZCkgMzg5 LWRzLWJhc2UgT3BlblNjYW5IdWIgTGVha3MgRGV0ZWN0ZWQKLSAoIzcyMTEpCi0KLUZpeCBEZXNj cmlwdGlvbjoKLVVwZGF0ZSBjb3Zlcml0eSBhbm5vdGF0aW9ucy4KLQotUmVsYXRlczogaHR0cHM6 Ly9naXRodWIuY29tLzM4OWRzLzM4OS1kcy1iYXNlL2lzc3Vlcy83MDI3Ci0KLVJldmlld2VkIGJ5 OiBAYWFkaGlrYXIgKFRoYW5rcyEpCi0tLS0KLSBsZGFwL3NlcnZlcnMvc2xhcGQvbG9nLmMgfCA2 ICsrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0p Ci0KLWRpZmYgLS1naXQgYS9sZGFwL3NlcnZlcnMvc2xhcGQvbG9nLmMgYi9sZGFwL3NlcnZlcnMv c2xhcGQvbG9nLmMKLWluZGV4IGVhNzQ0YWMxZS4uODBjMDczODJhIDEwMDY0NAotLS0tIGEvbGRh cC9zZXJ2ZXJzL3NsYXBkL2xvZy5jCi0rKysgYi9sZGFwL3NlcnZlcnMvc2xhcGQvbG9nLmMKLUBA IC0yMDYsOCArMjA2LDggQEAgY29tcHJlc3NfbG9nX2ZpbGUoY2hhciAqbG9nX25hbWUsIGludDMy X3QgbW9kZSkKLSAKLSAgICAgaWYgKChzb3VyY2UgPSBmb3Blbihsb2dfbmFtZSwgInIiKSkgPT0g TlVMTCkgewotICAgICAgICAgLyogRmFpbGVkIHRvIG9wZW4gbG9nIGZpbGUgKi8KLS0gICAgICAg IC8qIGNvdmVyaXR5W2xlYWtlZF9zdG9yYWdlXSBnemNsb3NlIGRvZXMgY2xvc2UgRkQgKi8KLSAg ICAgICAgIGd6Y2xvc2Uob3V0ZmlsZSk7Ci0rICAgICAgICAvKiBjb3Zlcml0eVtsZWFrZWRfaGFu ZGxlXSBnemNsb3NlIGRvZXMgY2xvc2UgRkQgKi8KLSAgICAgICAgIHJldHVybiAtMTsKLSAgICAg fQotIAotQEAgLTIxNywxNyArMjE3LDE3IEBAIGNvbXByZXNzX2xvZ19maWxlKGNoYXIgKmxvZ19u YW1lLCBpbnQzMl90IG1vZGUpCi0gICAgICAgICBpZiAoYnl0ZXNfd3JpdHRlbiA9PSAwKQotICAg ICAgICAgewotICAgICAgICAgICAgIGZjbG9zZShzb3VyY2UpOwotLSAgICAgICAgICAgIC8qIGNv dmVyaXR5W2xlYWtlZF9zdG9yYWdlXSBnemNsb3NlIGRvZXMgY2xvc2UgRkQgKi8KLSAgICAgICAg ICAgICBnemNsb3NlKG91dGZpbGUpOwotKyAgICAgICAgICAgIC8qIGNvdmVyaXR5W2xlYWtlZF9o YW5kbGVdIGd6Y2xvc2UgZG9lcyBjbG9zZSBGRCAqLwotICAgICAgICAgICAgIHJldHVybiAtMTsK LSAgICAgICAgIH0KLSAgICAgICAgIGJ5dGVzX3JlYWQgPSBmcmVhZChidWYsIDEsIExPR19DSFVO Sywgc291cmNlKTsKLSAgICAgfQotLSAgICAvKiBjb3Zlcml0eVtsZWFrZWRfc3RvcmFnZV0gZ3pj bG9zZSBkb2VzIGNsb3NlIEZEICovCi0gICAgIGd6Y2xvc2Uob3V0ZmlsZSk7Ci0gICAgIGZjbG9z ZShzb3VyY2UpOwotICAgICBQUl9EZWxldGUobG9nX25hbWUpOyAvKiByZW1vdmUgdGhlIG9sZCB1 bmNvbXByZXNzZWQgbG9nICovCi0gCi0rICAgIC8qIGNvdmVyaXR5W2xlYWtlZF9oYW5kbGVdIGd6 Y2xvc2UgZG9lcyBjbG9zZSBGRCAqLwotICAgICByZXR1cm4gMDsKLSB9Ci0gCi0tLSAKLTIuNTIu MAotCgpkaWZmIC0tZ2l0IGEvMDAxNS1Jc3N1ZS03MjEzLU1EQl9CQURfVkFMU0laRS1lcnJvci13 aGlsZS1oYW5kbGluZy1WTFYtLnBhdGNoIGIvMDAxNS1Jc3N1ZS03MjEzLU1EQl9CQURfVkFMU0la RS1lcnJvci13aGlsZS1oYW5kbGluZy1WTFYtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBlMGUyMWJiLi4wMDAwMDAwCi0tLSBhLzAwMTUtSXNzdWUtNzIxMy1NREJfQkFEX1ZB TFNJWkUtZXJyb3Itd2hpbGUtaGFuZGxpbmctVkxWLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDE5NyArMCwwIEBACi1Gcm9tIDQ2Y2UzOGMwMmQwZjg2NzI1ODI5NTkyYmJmZjI3Njc5YTYyNWU5 YTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBwcm9naWVyMzg5IDxwcm9naWVyQHJl ZGhhdC5jb20+Ci1EYXRlOiBNb24sIDIgRmViIDIwMjYgMTU6Mzk6MTggKzAxMDAKLVN1YmplY3Q6 IFtQQVRDSF0gSXNzdWUgNzIxMyAtIE1EQl9CQURfVkFMU0laRSBlcnJvciB3aGlsZSBoYW5kbGlu ZyBWTFYgKCM3MjE0KQotCi0qIElzc3VlIDcyMTMgLSBNREJfQkFEX1ZBTFNJWkUgZXJyb3Igd2hp bGUgaGFuZGxpbmcgVkxWCi1Bdm9pZCBmYWlsaW5nIGxtZGIgb3BlcmF0aW9uIHdoZW4gaGFuZGxp bmcgVkxWIGluZGV4IGJ5IHRydW5jYXRpbmcgdGhlIGtleSBzbyB0aGF0IGtleStkYXRhIGlzIHNt YWxsIGVub3VnaC4KLQotSXNzdWU6ICM3MjEzCi0KLVJldmlld2VkIGJ5OiBAbXJleW5vbGRzMzg5 ICwgQHZhc2hpcm92IChUaGFua3MhKQotCi1Bc3Npc3RlZCBieTogQ2xhdWRlIEEvSQotCi0oY2hl cnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA1ZWJjZTIyZDQyMTRiZWM1ZWQ5NGFkODRjNDQ0ODE2NGJl OTkzODlhKQotLS0tCi0gLi4uL3Rlc3RzL3N1aXRlcy92bHYvcmVncmVzc2lvbl90ZXN0LnB5ICAg ICAgIHwgMTEwICsrKysrKysrKysrKysrKysrKwotIC4uLi9zbGFwZC9iYWNrLWxkYm0vZGItbWRi L21kYl9sYXllci5jICAgICAgICB8ICAgNSArCi0gbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRi bS92bHYuYyAgICAgICAgICAgIHwgICA3ICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMjEgaW5zZXJ0 aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZGlyc3J2dGVzdHMvdGVzdHMv c3VpdGVzL3Zsdi9yZWdyZXNzaW9uX3Rlc3QucHkgYi9kaXJzcnZ0ZXN0cy90ZXN0cy9zdWl0ZXMv dmx2L3JlZ3Jlc3Npb25fdGVzdC5weQotaW5kZXggZjc4NDdhYzc0Li43Y2RmMTZhODQgMTAwNjQ0 Ci0tLS0gYS9kaXJzcnZ0ZXN0cy90ZXN0cy9zdWl0ZXMvdmx2L3JlZ3Jlc3Npb25fdGVzdC5weQot KysrIGIvZGlyc3J2dGVzdHMvdGVzdHMvc3VpdGVzL3Zsdi9yZWdyZXNzaW9uX3Rlc3QucHkKLUBA IC0xMTc1LDYgKzExNzUsMTE2IEBAIGRlZiB0ZXN0X3Zsdl93aXRoX21yKHZsdl9zZXR1cF93aXRo X3VpZF9tcik6Ci0gCi0gCi0gCi0rZGVmIHRlc3Rfdmx2X2xvbmdfYXR0cmlidXRlX3ZhbHVlKHRv cG9sb2d5X3N0LCByZXF1ZXN0KToKLSsgICAgIiIiCi0rICAgIFRlc3QgVkxWIHdpdGggYW4gZW50 cnkgY29udGFpbmluZyBhIHZlcnkgbG9uZyBhdHRyaWJ1dGUgdmFsdWUgKDJLKS4KLSsKLSsgICAg OmlkOiA5OTEyNmZhNC0wMDNlLTExZjEtYjdkNi1jODUzMDlkNWMzZTMKLSsgICAgOnNldHVwOiBT dGFuZGFsb25lIGluc3RhbmNlLgotKyAgICA6c3RlcHM6Ci0rICAgICAgICAxLiBDbGVhbnVwIGxl ZnRvdmVyIGZyb20gcHJldmlvdXMgdGVzdHMKLSsgICAgICAgIDIuIENyZWF0ZSBWTFYgc2VhcmNo IGFuZCBpbmRleCBvbiBjbiBhdHRyaWJ1dGUKLSsgICAgICAgIDMuIFJlaW5kZXggVkxWCi0rICAg ICAgICA0LiBBZGQgYW4gZW50cnkgd2l0aCBhIGNuIGF0dHJpYnV0ZSBoYXZpbmcgMksgY2hhcmFj dGVyIHZhbHVlCi0rICAgICAgICA1LiBWZXJpZnkgdGhlIGVudHJ5IHdhcyBhZGRlZCBzdWNjZXNz ZnVsbHkKLSsgICAgICAgIDYuIFBlcmZvcm0gYSBWTFYgc2VhcmNoIHRvIGVuc3VyZSBpdCBzdGls bCB3b3JrcwotKyAgICAgICAgNy4gQWRkIGFub3RoZXIgZW50cnkgd2l0aCBhIGNuIGF0dHJpYnV0 ZSBoYXZpbmcgMksgY2hhcmFjdGVyIHZhbHVlCi0rICAgICAgICA4LiBWZXJpZnkgdGhlIGVudHJ5 IHdhcyBhZGRlZCBzdWNjZXNzZnVsbHkKLSsgICAgICAgIDkuIFBlcmZvcm0gYSBWTFYgc2VhcmNo IHRvIGVuc3VyZSBpdCBzdGlsbCB3b3JrcwotKyAgICA6ZXhwZWN0ZWRyZXN1bHRzOgotKyAgICAg ICAgMS4gU2hvdWxkIFN1Y2Nlc3MuCi0rICAgICAgICAyLiBTaG91bGQgU3VjY2Vzcy4KLSsgICAg ICAgIDMuIFNob3VsZCBTdWNjZXNzLgotKyAgICAgICAgNC4gU2hvdWxkIFN1Y2Nlc3MuCi0rICAg ICAgICA1LiBTaG91bGQgU3VjY2Vzcy4KLSsgICAgICAgIDYuIFNob3VsZCBTdWNjZXNzLgotKyAg ICAgICAgNy4gU2hvdWxkIFN1Y2Nlc3MuCi0rICAgICAgICA4LiBTaG91bGQgU3VjY2Vzcy4KLSsg ICAgICAgIDkuIFNob3VsZCBTdWNjZXNzLgotKyAgICAiIiIKLSsgICAgaW5zdCA9IHRvcG9sb2d5 X3N0LnN0YW5kYWxvbmUKLSsgICAgcmVpbmRleF90YXNrID0gVGFza3MoaW5zdCkKLSsKLSsgICAg dXNlcnNfdG9fZGVsZXRlID0gW10KLSsKLSsgICAgZGVmIGZpbigpOgotKyAgICAgICAgY2xlYW51 cChpbnN0KQotKyAgICAgICAgIyBDbGVhbiB0aGUgYWRkZWQgdXNlcnMKLSsgICAgICAgIGZvciB1 c2VyIGluIHVzZXJzX3RvX2RlbGV0ZToKLSsgICAgICAgICAgICB1c2VyLmRlbGV0ZSgpCi0rCi0r ICAgIGlmIG5vdCBERUJVR0dJTkc6Ci0rICAgICAgICByZXF1ZXN0LmFkZGZpbmFsaXplcihmaW4p Ci0rCi0rICAgICMgQ2xlYW4gcHJldmlvdXMgdGVzdHMgbGVmdG92ZXIKLSsgICAgZmluKCkKLSsK LSsgICAgIyBDcmVhdGUgVkxWIHNlYXJjaCBhbmQgaW5kZXgKLSsgICAgdmx2X3NlYXJjaCwgdmx2 X2luZGV4ID0gY3JlYXRlX3Zsdl9zZWFyY2hfYW5kX2luZGV4KGluc3QpCi0rICAgIGFzc2VydCBy ZWluZGV4X3Rhc2sucmVpbmRleCgKLSsgICAgICAgIHN1ZmZpeD1ERUZBVUxUX1NVRkZJWCwKLSsg ICAgICAgIGF0dHJuYW1lPXZsdl9pbmRleC5yZG4sCi0rICAgICAgICBhcmdzPXtUQVNLX1dBSVQ6 IFRydWV9LAotKyAgICAgICAgdmx2PVRydWUKLSsgICAgKSA9PSAwCi0rCi0rICAgICMgQWRkIGEg ZmV3IHJlZ3VsYXIgdXNlcnMgZmlyc3QKLSsgICAgYWRkX3VzZXJzKGluc3QsIDEwKQotKwotKyAg ICAjIENyZWF0ZSBhIHZlcnkgbG9uZyBjbiB2YWx1ZSAoMksgY2hhcmFjdGVycykKLSsgICAgbG9u Z19jbl92YWx1ZSA9ICdhJyAqIDIwNDggKyAnMScKLSsKLSsgICAgIyBBZGQgYW4gZW50cnkgd2l0 aCB0aGUgbG9uZyBjbiBhdHRyaWJ1dGUKLSsgICAgdXNlcnMgPSBVc2VyQWNjb3VudHMoaW5zdCwg REVGQVVMVF9TVUZGSVgpCi0rICAgIHVzZXJfcHJvcGVydGllcyA9IHsKLSsgICAgICAgICd1aWQn OiAnbG9uZ2NudXNlcjEnLAotKyAgICAgICAgJ2NuJzogbG9uZ19jbl92YWx1ZSwKLSsgICAgICAg ICdzbic6ICd1c2VyMScsCi0rICAgICAgICAndWlkTnVtYmVyJzogJzk5OTk5JywKLSsgICAgICAg ICdnaWROdW1iZXInOiAnOTk5OTknLAotKyAgICAgICAgJ2hvbWVEaXJlY3RvcnknOiAnL2hvbWUv bG9uZ2NudXNlcjEnCi0rICAgIH0KLSsgICAgdXNlciA9IHVzZXJzLmNyZWF0ZShwcm9wZXJ0aWVz PXVzZXJfcHJvcGVydGllcykKLSsgICAgdXNlcnNfdG9fZGVsZXRlLmFwcGVuZCh1c2VyKTsKLSsK LSsgICAgIyBWZXJpZnkgdGhlIGVudHJ5IHdhcyBjcmVhdGVkIGFuZCBoYXMgdGhlIGxvbmcgY24g dmFsdWUKLSsgICAgZW50cnkgPSB1c2VyLmdldF9hdHRyX3ZhbHNfdXRmOCgnY24nKQotKyAgICBh c3NlcnQgZW50cnlbMF0gPT0gbG9uZ19jbl92YWx1ZQotKyAgICBsb2cuaW5mbyhmJ1N1Y2Nlc3Nm dWxseSBjcmVhdGVkIHVzZXIgd2l0aCBjbiBsZW5ndGg6IHtsZW4oZW50cnlbMF0pfScpCi0rCi0r ICAgICMgUGVyZm9ybSBWTFYgc2VhcmNoIHRvIGVuc3VyZSBWTFYgc3RpbGwgd29ya3Mgd2l0aCBs b25nIGF0dHJpYnV0ZSB2YWx1ZXMKLSsgICAgY29ubiA9IG9wZW5fbmV3X2xkYXBpX2Nvbm4oaW5z dC5zZXJ2ZXJpZCkKLSsgICAgY291bnQgPSBsZW4oY29ubi5zZWFyY2hfcyhERUZBVUxUX1NVRkZJ WCwgbGRhcC5TQ09QRV9TVUJUUkVFLCAiKHVpZD0qKSIpKQotKyAgICBhc3NlcnQgY291bnQgPiAw Ci0rICAgIGxvZy5pbmZvKGYnVkxWIHNlYXJjaCBzdWNjZXNzZnVsIHdpdGgge2NvdW50fSBlbnRy aWVzIGluY2x1ZGluZyBlbnRyeSB3aXRoIDJLIGNuIHZhbHVlJykKLSsKLSsgICAgIyBBZGQgYW5v dGhlciBlbnRyeSB3aXRoIHRoZSBsb25nIGNuIGF0dHJpYnV0ZQotKyAgICBsb25nX2NuX3ZhbHVl ID0gJ2EnICogMjA0OCArICcyJwotKwotKyAgICB1c2VyX3Byb3BlcnRpZXMgPSB7Ci0rICAgICAg ICAndWlkJzogJ2xvbmdjbnVzZXIyJywKLSsgICAgICAgICdjbic6IGxvbmdfY25fdmFsdWUsCi0r ICAgICAgICAnc24nOiAndXNlcjInLAotKyAgICAgICAgJ3VpZE51bWJlcic6ICc5OTk5OCcsCi0r ICAgICAgICAnZ2lkTnVtYmVyJzogJzk5OTk4JywKLSsgICAgICAgICdob21lRGlyZWN0b3J5Jzog Jy9ob21lL2xvbmdjbnVzZXIyJwotKyAgICB9Ci0rICAgIHVzZXIgPSB1c2Vycy5jcmVhdGUocHJv cGVydGllcz11c2VyX3Byb3BlcnRpZXMpCi0rICAgIHVzZXJzX3RvX2RlbGV0ZS5hcHBlbmQodXNl cik7Ci0rCi0rICAgICMgVmVyaWZ5IHRoZSBlbnRyeSB3YXMgY3JlYXRlZCBhbmQgaGFzIHRoZSBs b25nIGNuIHZhbHVlCi0rICAgIGVudHJ5ID0gdXNlci5nZXRfYXR0cl92YWxzX3V0ZjgoJ2NuJykK LSsgICAgYXNzZXJ0IGVudHJ5WzBdID09IGxvbmdfY25fdmFsdWUKLSsgICAgbG9nLmluZm8oZidT dWNjZXNzZnVsbHkgY3JlYXRlZCB1c2VyIHdpdGggY24gbGVuZ3RoOiB7bGVuKGVudHJ5WzBdKX0n KQotKwotKyAgICAjIFBlcmZvcm0gVkxWIHNlYXJjaCB0byBlbnN1cmUgVkxWIHN0aWxsIHdvcmtz IHdpdGggbG9uZyBhdHRyaWJ1dGUgdmFsdWVzCi0rICAgIGNvbm4gPSBvcGVuX25ld19sZGFwaV9j b25uKGluc3Quc2VydmVyaWQpCi0rICAgIGNvdW50ID0gbGVuKGNvbm4uc2VhcmNoX3MoREVGQVVM VF9TVUZGSVgsIGxkYXAuU0NPUEVfU1VCVFJFRSwgIih1aWQ9KikiKSkKLSsgICAgYXNzZXJ0IGNv dW50ID4gMQotKyAgICBsb2cuaW5mbyhmJ1ZMViBzZWFyY2ggc3VjY2Vzc2Z1bCB3aXRoIHtjb3Vu dH0gZW50cmllcyBpbmNsdWRpbmcgZW50cnkgd2l0aCAySyBjbiB2YWx1ZScpCi0rCi0rCi0rCi0g aWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICAgIyBSdW4gaXNvbGF0ZWQKLSAgICAgIyAt cyBmb3IgREVCVUcgbW9kZQotZGlmZiAtLWdpdCBhL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxk Ym0vZGItbWRiL21kYl9sYXllci5jIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9kYi1t ZGIvbWRiX2xheWVyLmMKLWluZGV4IGQzMjBlY2JlYi4uY2Q3OTc2MjFkIDEwMDY0NAotLS0tIGEv bGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9kYi1tZGIvbWRiX2xheWVyLmMKLSsrKyBiL2xk YXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vZGItbWRiL21kYl9sYXllci5jCi1AQCAtMjEzNCwx MCArMjEzNCwxNSBAQCB2b2lkICpkYm1kYl9yZWNub19jYWNoZV9idWlsZCh2b2lkICphcmcpCi0g ICAgICAgICByZWNubyA9IDE7Ci0gICAgIH0KLSAgICAgd2hpbGUgKHJjID09IDApIHsKLSsgICAg ICAgIHN0cnVjdCBsZGJtaW5mbyAqbGkgPSAoc3RydWN0IGxkYm1pbmZvICopcmNjdHgtPmN1cnNv ci0+YmUtPmJlX2RhdGFiYXNlLT5wbGdfcHJpdmF0ZTsKLSAgICAgICAgIHNsYXBpX2xvZ19lcnIo U0xBUElfTE9HX0RFQlVHLCAiZGJtZGJfcmVjbm9fY2FjaGVfYnVpbGQiLCAicmVjbm89JWRcbiIs IHJlY25vKTsKLSAgICAgICAgIGlmIChyZWNubyAlIFJFQ05PX0NBQ0hFX0lOVEVSVkFMID09IDEp IHsKLSAgICAgICAgICAgICAvKiBQcmVwYXJlIHRoZSBjYWNoZSBkYXRhICovCi0gICAgICAgICAg ICAgbGVuID0gc2l6ZW9mKCpyY2UpICsgZGF0YS5tdl9zaXplICsga2V5Lm12X3NpemU7Ci0rICAg ICAgICAgICAgaWYgKGxlbiA+IGxpLT5saV9tYXhfa2V5X2xlbikgewotKyAgICAgICAgICAgICAg ICBrZXkubXZfc2l6ZSA9IGxpLT5saV9tYXhfa2V5X2xlbiAtIGRhdGEubXZfc2l6ZSAtIHNpemVv ZigqcmNlKTsKLSsgICAgICAgICAgICAgICAgbGVuID0gbGktPmxpX21heF9rZXlfbGVuOwotKyAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICByY2UgPSAoZGJtZGJfcmVjbm9fY2FjaGVfZWxtdF90 KilzbGFwaV9jaF9tYWxsb2MobGVuKTsKLSAgICAgICAgICAgICByY2UtPmxlbiA9IGxlbjsKLSAg ICAgICAgICAgICByY2UtPnJlY25vID0gcmVjbm87Ci1kaWZmIC0tZ2l0IGEvbGRhcC9zZXJ2ZXJz L3NsYXBkL2JhY2stbGRibS92bHYuYyBiL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vdmx2 LmMKLWluZGV4IDhmOTI2M2YyNS4uZjJmODgyYjVhIDEwMDY0NAotLS0tIGEvbGRhcC9zZXJ2ZXJz L3NsYXBkL2JhY2stbGRibS92bHYuYwotKysrIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRi bS92bHYuYwotQEAgLTg2Niw2ICs4NjYsNyBAQCBkb192bHZfdXBkYXRlX2luZGV4KGJhY2tfdHhu ICp0eG4sIHN0cnVjdCBsZGJtaW5mbyAqbGksIFNsYXBpX1BCbG9jayAqcGIsIHN0cnVjdAotICAg ICBzdHJ1Y3Qgdmx2X2tleSAqa2V5ID0gTlVMTDsKLSAgICAgZGJpX3ZhbF90IGRhdGEgPSB7MH07 Ci0gICAgIGRibGF5ZXJfcHJpdmF0ZSAqcHJpdiA9IE5VTEw7Ci0rICAgIHNpemVfdCBrZXlfc2l6 ZV9saW1pdCA9IGxpLT5saV9tYXhfa2V5X2xlbiAtIHNpemVvZihlbnRyeS0+ZXBfaWQpOwotIAot ICAgICBzbGFwaV9wYmxvY2tfZ2V0KHBiLCBTTEFQSV9CQUNLRU5ELCAmYmUpOwotICAgICBwcml2 ID0gKGRibGF5ZXJfcHJpdmF0ZSAqKWxpLT5saV9kYmxheWVyX3ByaXZhdGU7Ci1AQCAtODg2LDYg Kzg4NywxMCBAQCBkb192bHZfdXBkYXRlX2luZGV4KGJhY2tfdHhuICp0eG4sIHN0cnVjdCBsZGJt aW5mbyAqbGksIFNsYXBpX1BCbG9jayAqcGIsIHN0cnVjdAotICAgICAgICAgcmV0dXJuIHJjOwot ICAgICB9Ci0gCi0rICAgIC8qIFRydW5jYXRlIHRoZSBrZXkgaWYgaXQgaXMgdG9vIGxvbmcgKi8K LSsgICAgaWYgKGtleS0+a2V5LnNpemUgPiBrZXlfc2l6ZV9saW1pdCkgewotKyAgICAgICAga2V5 LT5rZXkuc2l6ZSA9IGtleV9zaXplX2xpbWl0OwotKyAgICB9Ci0gICAgIGlmIChOVUxMICE9IHR4 bikgewotICAgICAgICAgZGJfdHhuID0gdHhuLT5iYWNrX3R4bl90eG47Ci0gICAgIH0gZWxzZSB7 Ci1AQCAtOTMwLDcgKzkzNSw3IEBAIGRvX3Zsdl91cGRhdGVfaW5kZXgoYmFja190eG4gKnR4biwg c3RydWN0IGxkYm1pbmZvICpsaSwgU2xhcGlfUEJsb2NrICpwYiwgc3RydWN0Ci0gICAgICAgICBp ZiAodHhuICYmIHR4bi0+YmFja19zcGVjaWFsX2hhbmRsaW5nX2ZuKSB7Ci0gICAgICAgICAgICAg cmMgPSB0eG4tPmJhY2tfc3BlY2lhbF9oYW5kbGluZ19mbihiZSwgQlRYTkFDVF9WTFZfREVMLCBk YiwgJmtleS0+a2V5LCAmZGF0YSwgdHhuKTsKLSAgICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAg ICAgcmMgPSBkYmxheWVyX2RiX29wKGJlLCBkYiwgZGJfdHhuLCBEQklfT1BfREVMLCAma2V5LT5r ZXksIE5VTEwpOwotKyAgICAgICAgICAgIHJjID0gZGJsYXllcl9kYl9vcChiZSwgZGIsIGRiX3R4 biwgREJJX09QX0RFTCwgJmtleS0+a2V5LCAmZGF0YSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBp ZiAocmMgPT0gMCkgewotICAgICAgICAgICAgIGlmICh0eG4gJiYgdHhuLT5iYWNrX3NwZWNpYWxf aGFuZGxpbmdfZm4pIHsKLS0tIAotMi41Mi4wCi0KCmRpZmYgLS1naXQgYS8wMDE2LUlzc3VlLTcx OTQtUmVwbC1Mb2ctQW5hbHlzaXMtQWRkLUNTTi1wcm9wYWdhdGlvbi1kZXQucGF0Y2ggYi8wMDE2 LUlzc3VlLTcxOTQtUmVwbC1Mb2ctQW5hbHlzaXMtQWRkLUNTTi1wcm9wYWdhdGlvbi1kZXQucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwMGYzODkuLjAwMDAwMDAKLS0tIGEv MDAxNi1Jc3N1ZS03MTk0LVJlcGwtTG9nLUFuYWx5c2lzLUFkZC1DU04tcHJvcGFnYXRpb24tZGV0 LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTY0NSArMCwwIEBACi1Gcm9tIDY0ODQ1ZmZkOTg5 MzEzZjk2MjliYzFhZmUxMDUyY2ZhMGVlZjAwYjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBTaW1vbiBQaWNodWdpbiA8c3BpY2h1Z2lAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMyBG ZWIgMjAyNiAxNzoxNzowMiAtMDgwMAotU3ViamVjdDogW1BBVENIXSBJc3N1ZSA3MTk0IC0gUmVw bCBMb2cgQW5hbHlzaXMgLSBBZGQgQ1NOIHByb3BhZ2F0aW9uIGRldGFpbHMKLSAoIzcxOTUpCi1N SU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLURlc2NyaXB0aW9uOiBUaGUgcmVw bGljYXRpb24gbG9nIGFuYWx5emVyIG5vdyBzaG93cyBwZXLigJFDU04gcHJvcGFnYXRpb24KLWRl dGFpbHMgYW5kIHRoZSBjb25zb2xlIFVJIGNhbiBkcmlsbCBpbnRvIHRoZW0gZnJvbSBjaGFydCBw b2ludHMuIFRoaXMKLWFkZHMgQ1NOIElEcyB0byBjaGFydCBkYXRhcG9pbnRzLCBidWlsZHMgZGV0 YWlsZWQgYXJyaXZhbHMvaG9wcyBkYXRhLCBhbmQKLWxpbmtzIHJlcGxpY2EgSURzIHRvIG9yaWdp biBzZXJ2ZXJzIGZvciBtb3JlIGFjY3VyYXRlIG9yaWdpbiBkZXRlY3Rpb24uCi0KLVRoZSByZXBv cnQgSlNPTiBub3cgaW5jbHVkZXMgY3NuRGV0YWlscyBhbmQgc2FtcGxpbmcgbWV0YWRhdGE7IHdo ZW4KLXNhbXBsaW5nIGlzIGFjdGl2ZSwgQ1NOIGRldGFpbHMgYXJlIGxpbWl0ZWQgdG8gc2FtcGxl ZCBJRHMgdG8gY29udHJvbAotbWVtb3J5IHVzZS4gQSBuZXcgb3JpZ2luSW5jbHVkZWRJbkFycml2 YWxzIGZsYWcgaXMgZXhwb3NlZCBhbmQgdGhlIFVJCi1zaG93cyBhbiBleHBsaWNpdCBub3RlIHdo ZW4gb3JpZ2luIHJlY29yZHMgYXJlIG91dHNpZGUgdGhlIHRpbWUgcmFuZ2UuCi1UaGUgY29ja3Bp dCByZXBvcnQgbW9kYWwgZ2FpbnMgYW4gaW50ZXJhY3RpdmUgQ1NOIGRldGFpbCB2aWV3IGFuZAot Y2xpY2thYmxlIGNoYXJ0IHBvaW50cy4KLQotVGVzdHMgd2VyZSBleHBhbmRlZCB0byBjb3ZlciBD U04gZGV0YWlscywgb3JpZ2luIG91dOKAkW9m4oCRc2NvcGUgYmVoYXZpb3IsCi1hbmQgcGFydGlh bCByZXBsaWNhdGlvbiwgYW5kIGluY2x1ZGUgaGVscGVyIGZ1bmN0aW9ucyB0byByZWR1Y2UgZHVw bGljYXRpb24uCi0KLUZpeGVzOiBodHRwczovL2dpdGh1Yi5jb20vMzg5ZHMvMzg5LWRzLWJhc2Uv aXNzdWVzLzcxOTQKLQotUmV2aWV3ZWQgYnk6IEBwcm9naWVyMzg5LCBAbXJleW5vbGRzMzg5IChU aGFua3MhISkKLS0tLQotIC4uLi9yZXBsaWNhdGlvbi9yZXBsX2xvZ19tb25pdG9yaW5nX3Rlc3Qu cHkgICB8IDQ4MSArKysrKysrKysrKysrKystLQotIC4uLi9zcmMvbGliL21vbml0b3IvbW9uaXRv ck1vZGFscy5qc3ggICAgICAgICB8IDQ4NCArKysrKysrKysrKysrKysrKy0KLSBzcmMvbGliMzg5 L2xpYjM4OS9yZXBsdG9vbHMucHkgICAgICAgICAgICAgICAgfCAyNzAgKysrKysrKysrLQotIDMg ZmlsZXMgY2hhbmdlZCwgMTE2NiBpbnNlcnRpb25zKCspLCA2OSBkZWxldGlvbnMoLSkKLQotZGlm ZiAtLWdpdCBhL2RpcnNydnRlc3RzL3Rlc3RzL3N1aXRlcy9yZXBsaWNhdGlvbi9yZXBsX2xvZ19t b25pdG9yaW5nX3Rlc3QucHkgYi9kaXJzcnZ0ZXN0cy90ZXN0cy9zdWl0ZXMvcmVwbGljYXRpb24v cmVwbF9sb2dfbW9uaXRvcmluZ190ZXN0LnB5Ci1pbmRleCA2NjVmY2I5NmYuLjg1NTAwNWZmOSAx MDA2NDQKLS0tLSBhL2RpcnNydnRlc3RzL3Rlc3RzL3N1aXRlcy9yZXBsaWNhdGlvbi9yZXBsX2xv Z19tb25pdG9yaW5nX3Rlc3QucHkKLSsrKyBiL2RpcnNydnRlc3RzL3Rlc3RzL3N1aXRlcy9yZXBs aWNhdGlvbi9yZXBsX2xvZ19tb25pdG9yaW5nX3Rlc3QucHkKLUBAIC0yMSw3ICsyMSw3IEBAIGZy b20gbGliMzg5LmJhY2tlbmQgaW1wb3J0IEJhY2tlbmRzCi0gZnJvbSBsaWIzODkudG9wb2xvZ2ll cyBpbXBvcnQgdG9wb2xvZ3lfbTQgYXMgdG9wb19tNAotIGZyb20gbGliMzg5LmlkbS51c2VyIGlt cG9ydCBVc2VyQWNjb3VudAotIGZyb20gbGliMzg5LnJlcGxpY2EgaW1wb3J0IFJlcGxpY2F0aW9u TWFuYWdlcgotLWZyb20gbGliMzg5LnJlcGx0b29scyBpbXBvcnQgUmVwbGljYXRpb25Mb2dBbmFs eXplcgotK2Zyb20gbGliMzg5LnJlcGx0b29scyBpbXBvcnQgUmVwbGljYXRpb25Mb2dBbmFseXpl ciwgRFNMb2dQYXJzZXIKLSBmcm9tIGxpYjM4OS5fY29uc3RhbnRzIGltcG9ydCAqCi0gCi0gcHl0 ZXN0bWFyayA9IHB5dGVzdC5tYXJrLnRpZXIwCi1AQCAtMTA1LDYgKzEwNSwxMDEgQEAgZGVmIF9j bGVhbnVwX211bHRpX3N1ZmZpeF90ZXN0KHRlc3RfdXNlcnNfYnlfc3VmZml4LCB0bXBfZGlyLCBz dXBwbGllcnMsIGV4dHJhX3MKLSAgICAgICAgIGxvZy5lcnJvcihmIkVycm9yIGNsZWFuaW5nIHVw IHRlbXBvcmFyeSBkaXJlY3Rvcnk6IHtlfSIpCi0gCi0gCi0rZGVmIF9jbGVhcl9hY2Nlc3NfbG9n cyhzdXBwbGllcnMpOgotKyAgICAiIiJDbGVhciBhY2Nlc3MgbG9ncyBmb3IgYWxsIHN1cHBsaWVy cyBhbmQgcmVzdGFydC4iIiIKLSsgICAgZm9yIHN1cHBsaWVyIGluIHN1cHBsaWVyczoKLSsgICAg ICAgIHN1cHBsaWVyLmRlbGV0ZUFjY2Vzc0xvZ3MocmVzdGFydD1UcnVlKQotKwotKwotK2RlZiBf cmVzdGFydF9zdXBwbGllcnMoc3VwcGxpZXJzKToKLSsgICAgIiIiUmVzdGFydCBhbGwgc3VwcGxp ZXJzLiIiIgotKyAgICBmb3Igc3VwcGxpZXIgaW4gc3VwcGxpZXJzOgotKyAgICAgICAgc3VwcGxp ZXIucmVzdGFydCgpCi0rCi0rCi0rZGVmIF9nZXRfbG9nX2RpcnMoc3VwcGxpZXJzKToKLSsgICAg IiIiUmV0dXJuIGxvZyBkaXJlY3RvcmllcyBmb3IgYWxsIHN1cHBsaWVycy4iIiIKLSsgICAgcmV0 dXJuIFtzLmRzX3BhdGhzLmxvZ19kaXIgZm9yIHMgaW4gc3VwcGxpZXJzXQotKwotKwotK2RlZiBf bG9hZF9qc29uKHBhdGgpOgotKyAgICAiIiJMb2FkIGFuZCByZXR1cm4gSlNPTiBmcm9tIGZpbGUu IiIiCi0rICAgIHdpdGggb3BlbihwYXRoLCAncicpIGFzIGY6Ci0rICAgICAgICByZXR1cm4ganNv bi5sb2FkKGYpCi0rCi0rCi0rZGVmIF9wYXVzZV9hZ3JlZW1lbnRzKHN1cHBsaWVyLCBzdWZmaXgp OgotKyAgICAiIiJQYXVzZSBvdXRib3VuZCBhZ3JlZW1lbnRzIGFuZCByZXR1cm4gbGlzdCBvZiBw YXVzZWQgdHVwbGVzLiIiIgotKyAgICBwYXVzZWQgPSBbXQotKyAgICBmb3IgYWdtdCBpbiBzdXBw bGllci5hZ3JlZW1lbnQubGlzdChzdWZmaXg9c3VmZml4KToKLSsgICAgICAgIHN1cHBsaWVyLmFn cmVlbWVudC5wYXVzZShhZ210LmRuKQotKyAgICAgICAgcGF1c2VkLmFwcGVuZCgoc3VwcGxpZXIs IGFnbXQuZG4pKQotKyAgICByZXR1cm4gcGF1c2VkCi0rCi0rCi0rZGVmIF9yZXN1bWVfYWdyZWVt ZW50cyhwYXVzZWRfYWdyZWVtZW50cyk6Ci0rICAgICIiIlJlc3VtZSBwYXVzZWQgcmVwbGljYXRp b24gYWdyZWVtZW50cy4iIiIKLSsgICAgZm9yIHN1cHBsaWVyX29iaiwgZG4gaW4gcGF1c2VkX2Fn cmVlbWVudHM6Ci0rICAgICAgICB0cnk6Ci0rICAgICAgICAgICAgc3VwcGxpZXJfb2JqLmFncmVl bWVudC5yZXN1bWUoZG4pCi0rICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0rICAgICAg ICAgICAgbG9nLndhcm5pbmcoZiJGYWlsZWQgdG8gcmVzdW1lIGFncmVlbWVudCB7ZG59OiB7ZX0i KQotKwotKwotK2RlZiBfYXNzZXJ0X2Nzbl9kZXRhaWxzX3NjaGVtYShqc29uX2RhdGEpOgotKyAg ICAiIiJWYWxpZGF0ZSBjc25EZXRhaWxzIHByZXNlbmNlIGFuZCBiYXNpYyBzdHJ1Y3R1cmUuIiIi Ci0rICAgIGFzc2VydCAnY3NuRGV0YWlscycgaW4ganNvbl9kYXRhLCAiRXhwZWN0ZWQgY3NuRGV0 YWlscyBpbiBKU09OIG91dHB1dCBmb3IgZHJpbGwtZG93biIKLSsgICAgY3NuX2RldGFpbHMgPSBq c29uX2RhdGFbJ2NzbkRldGFpbHMnXQotKyAgICBpZiBjc25fZGV0YWlsczoKLSsgICAgICAgICMg Q2hlY2sgc3RydWN0dXJlIG9mIGF0IGxlYXN0IG9uZSBDU04gZGV0YWlsIGVudHJ5Ci0rICAgICAg ICBmaXJzdF9jc24gPSBuZXh0KGl0ZXIoY3NuX2RldGFpbHMudmFsdWVzKCkpKQotKyAgICAgICAg YXNzZXJ0ICdjc24nIGluIGZpcnN0X2NzbiwgIkNTTiBkZXRhaWwgc2hvdWxkIGNvbnRhaW4gJ2Nz bicgZmllbGQiCi0rICAgICAgICBhc3NlcnQgJ3RhcmdldERuJyBpbiBmaXJzdF9jc24sICJDU04g ZGV0YWlsIHNob3VsZCBjb250YWluICd0YXJnZXREbicgZmllbGQiCi0rICAgICAgICBhc3NlcnQg J3N1ZmZpeCcgaW4gZmlyc3RfY3NuLCAiQ1NOIGRldGFpbCBzaG91bGQgY29udGFpbiAnc3VmZml4 JyBmaWVsZCIKLSsgICAgICAgIGFzc2VydCAnZ2xvYmFsTGFnJyBpbiBmaXJzdF9jc24sICJDU04g ZGV0YWlsIHNob3VsZCBjb250YWluICdnbG9iYWxMYWcnIGZpZWxkIgotKyAgICAgICAgYXNzZXJ0 ICdvcmlnaW5TZXJ2ZXInIGluIGZpcnN0X2NzbiwgIkNTTiBkZXRhaWwgc2hvdWxkIGNvbnRhaW4g J29yaWdpblNlcnZlcicgZmllbGQiCi0rICAgICAgICBhc3NlcnQgJ2Fycml2YWxzJyBpbiBmaXJz dF9jc24sICJDU04gZGV0YWlsIHNob3VsZCBjb250YWluICdhcnJpdmFscycgbGlzdCIKLSsgICAg ICAgIGFzc2VydCAnaG9wcycgaW4gZmlyc3RfY3NuLCAiQ1NOIGRldGFpbCBzaG91bGQgY29udGFp biAnaG9wcycgbGlzdCIKLSsgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGZpcnN0X2NzblsnYXJy aXZhbHMnXSwgbGlzdCksICJhcnJpdmFscyBzaG91bGQgYmUgYSBsaXN0IgotKwotKyAgICAgICAg IyBWZXJpZnkgYXJyaXZhbHMgc3RydWN0dXJlCi0rICAgICAgICBpZiBmaXJzdF9jc25bJ2Fycml2 YWxzJ106Ci0rICAgICAgICAgICAgZmlyc3RfYXJyaXZhbCA9IGZpcnN0X2NzblsnYXJyaXZhbHMn XVswXQotKyAgICAgICAgICAgIGFzc2VydCAnc2VydmVyJyBpbiBmaXJzdF9hcnJpdmFsLCAiQXJy aXZhbCBzaG91bGQgY29udGFpbiAnc2VydmVyJyBmaWVsZCIKLSsgICAgICAgICAgICBhc3NlcnQg J3RpbWVzdGFtcCcgaW4gZmlyc3RfYXJyaXZhbCwgIkFycml2YWwgc2hvdWxkIGNvbnRhaW4gJ3Rp bWVzdGFtcCcgZmllbGQiCi0rICAgICAgICAgICAgYXNzZXJ0ICdyZWxhdGl2ZURlbGF5JyBpbiBm aXJzdF9hcnJpdmFsLCAiQXJyaXZhbCBzaG91bGQgY29udGFpbiAncmVsYXRpdmVEZWxheScgZmll bGQiCi0rCi0rICAgICMgVmVyaWZ5IGNzbklkIGlzIGluY2x1ZGVkIGluIGRhdGFwb2ludHMgZm9y IGNyb3NzLXJlZmVyZW5jZQotKyAgICBpZiAncmVwbGljYXRpb25MYWdzJyBpbiBqc29uX2RhdGEg YW5kIGpzb25fZGF0YVsncmVwbGljYXRpb25MYWdzJ10uZ2V0KCdzZXJpZXMnKToKLSsgICAgICAg IGZvciBzZXJpZXMgaW4ganNvbl9kYXRhWydyZXBsaWNhdGlvbkxhZ3MnXVsnc2VyaWVzJ106Ci0r ICAgICAgICAgICAgZm9yIGRhdGFwb2ludCBpbiBzZXJpZXNbJ2RhdGFwb2ludHMnXToKLSsgICAg ICAgICAgICAgICAgYXNzZXJ0ICdjc25JZCcgaW4gZGF0YXBvaW50LCAiRGF0YXBvaW50IHNob3Vs ZCBjb250YWluICdjc25JZCcgZm9yIGRyaWxsLWRvd24iCi0rCi0rICAgIHJldHVybiBjc25fZGV0 YWlscwotKwotKwotK2RlZiBfZmluZF9sYXRlc3RfbG9ndGltZV9mb3JfcHJlZml4KGxvZ19kaXIs IHN1ZmZpeCwgc3RhcnRfdGltZSwgZW5kX3RpbWUsIHVzZXJfcHJlZml4KToKLSsgICAgbGF0ZXN0 ID0gTm9uZQotKyAgICBmb3IgZm5hbWUgaW4gb3MubGlzdGRpcihsb2dfZGlyKToKLSsgICAgICAg IGlmIG5vdCBmbmFtZS5zdGFydHN3aXRoKCdhY2Nlc3MnKToKLSsgICAgICAgICAgICBjb250aW51 ZQotKyAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5qb2luKGxvZ19kaXIsIGZuYW1lKQotKyAg ICAgICAgcGFyc2VyID0gRFNMb2dQYXJzZXIoCi0rICAgICAgICAgICAgbG9nbmFtZT1mdWxsX3Bh dGgsCi0rICAgICAgICAgICAgc3VmZml4ZXM9W3N1ZmZpeF0sCi0rICAgICAgICAgICAgdHo9dGlt ZXpvbmUudXRjLAotKyAgICAgICAgICAgIHN0YXJ0X3RpbWU9c3RhcnRfdGltZSwKLSsgICAgICAg ICAgICBlbmRfdGltZT1lbmRfdGltZQotKyAgICAgICAgKQotKyAgICAgICAgZm9yIHJlY29yZCBp biBwYXJzZXIucGFyc2VfZmlsZSgpOgotKyAgICAgICAgICAgIHRhcmdldF9kbiA9IHJlY29yZC5n ZXQoJ3RhcmdldF9kbicpIG9yICcnCi0rICAgICAgICAgICAgaWYgdXNlcl9wcmVmaXggaW4gdGFy Z2V0X2RuOgotKyAgICAgICAgICAgICAgICB0cyA9IHJlY29yZC5nZXQoJ3RpbWVzdGFtcCcpCi0r ICAgICAgICAgICAgICAgIGlmIHRzIGFuZCAobGF0ZXN0IGlzIE5vbmUgb3IgdHMgPiBsYXRlc3Qp OgotKyAgICAgICAgICAgICAgICAgICAgbGF0ZXN0ID0gdHMKLSsgICAgcmV0dXJuIGxhdGVzdAot KwotKwotIGRlZiB0ZXN0X3JlcGxpY2F0aW9uX2xvZ19tb25pdG9yaW5nX2Jhc2ljKHRvcG9fbTQp OgotICAgICAiIiJUZXN0IGJhc2ljIHJlcGxpY2F0aW9uIGxvZyBtb25pdG9yaW5nIGZ1bmN0aW9u YWxpdHkKLSAKLUBAIC0xMjgsOCArMjIzLDcgQEAgZGVmIHRlc3RfcmVwbGljYXRpb25fbG9nX21v bml0b3JpbmdfYmFzaWModG9wb19tNCk6Ci0gCi0gICAgIHRyeToKLSAgICAgICAgICMgQ2xlYXIg bG9ncyBhbmQgcmVzdGFydCBzZXJ2ZXJzCi0tICAgICAgICBmb3Igc3VwcGxpZXIgaW4gc3VwcGxp ZXJzOgotLSAgICAgICAgICAgIHN1cHBsaWVyLmRlbGV0ZUFjY2Vzc0xvZ3MocmVzdGFydD1UcnVl KQotKyAgICAgICAgX2NsZWFyX2FjY2Vzc19sb2dzKHN1cHBsaWVycykKLSAKLSAgICAgICAgICMg R2VuZXJhdGUgdGVzdCBkYXRhIHdpdGgga25vd24gcGF0dGVybnMKLSAgICAgICAgIGxvZy5pbmZv KCdDcmVhdGluZyB0ZXN0IGRhdGEuLi4nKQotQEAgLTE0MCwxMSArMjM0LDEwIEBAIGRlZiB0ZXN0 X3JlcGxpY2F0aW9uX2xvZ19tb25pdG9yaW5nX2Jhc2ljKHRvcG9fbTQpOgotICAgICAgICAgcmVw bC50ZXN0X3JlcGxpY2F0aW9uX3RvcG9sb2d5KHRvcG9fbTQpCi0gCi0gICAgICAgICAjIFJlc3Rh cnQgdG8gZmx1c2ggbG9ncwotLSAgICAgICAgZm9yIHN1cHBsaWVyIGluIHN1cHBsaWVyczoKLS0g ICAgICAgICAgICBzdXBwbGllci5yZXN0YXJ0KCkKLSsgICAgICAgIF9yZXN0YXJ0X3N1cHBsaWVy cyhzdXBwbGllcnMpCi0gCi0gICAgICAgICAjIENvbmZpZ3VyZSBtb25pdG9yaW5nCi0tICAgICAg ICBsb2dfZGlycyA9IFtzLmRzX3BhdGhzLmxvZ19kaXIgZm9yIHMgaW4gc3VwcGxpZXJzXQotKyAg ICAgICAgbG9nX2RpcnMgPSBfZ2V0X2xvZ19kaXJzKHN1cHBsaWVycykKLSAgICAgICAgIHJlcGxf bW9uaXRvciA9IFJlcGxpY2F0aW9uTG9nQW5hbHl6ZXIoCi0gICAgICAgICAgICAgbG9nX2RpcnM9 bG9nX2RpcnMsCi0gICAgICAgICAgICAgc3VmZml4ZXM9W0RFRkFVTFRfU1VGRklYXSwKLUBAIC0x NzcsMjMgKzI3MCwyMyBAQCBkZWYgdGVzdF9yZXBsaWNhdGlvbl9sb2dfbW9uaXRvcmluZ19iYXNp Yyh0b3BvX200KToKLSAgICAgICAgICAgICBhc3NlcnQgREVGQVVMVF9TVUZGSVggaW4gY3N2X2Nv bnRlbnQKLSAKLSAgICAgICAgICMgVmVyaWZ5IFBhdHRlcm5GbHkgSlNPTiBjb250ZW50Ci0tICAg ICAgICB3aXRoIG9wZW4oZ2VuZXJhdGVkX2ZpbGVzWydqc29uJ10sICdyJykgYXMgZjoKLS0gICAg ICAgICAgICBqc29uX2RhdGEgPSBqc29uLmxvYWQoZikKLS0gICAgICAgICAgICBhc3NlcnQgJ3Jl cGxpY2F0aW9uTGFncycgaW4ganNvbl9kYXRhCi0tICAgICAgICAgICAgYXNzZXJ0IGpzb25fZGF0 YVsncmVwbGljYXRpb25MYWdzJ11bJ3NlcmllcyddLCAiRXhwZWN0ZWQgcmVwbGljYXRpb24gbGFn IHNlcmllcyBpbiBKU09OIG91dHB1dCIKLSsgICAgICAgIGpzb25fZGF0YSA9IF9sb2FkX2pzb24o Z2VuZXJhdGVkX2ZpbGVzWydqc29uJ10pCi0rICAgICAgICBhc3NlcnQgJ3JlcGxpY2F0aW9uTGFn cycgaW4ganNvbl9kYXRhCi0rICAgICAgICBhc3NlcnQganNvbl9kYXRhWydyZXBsaWNhdGlvbkxh Z3MnXVsnc2VyaWVzJ10sICJFeHBlY3RlZCByZXBsaWNhdGlvbiBsYWcgc2VyaWVzIGluIEpTT04g b3V0cHV0IgotKwotKyAgICAgICAgX2Fzc2VydF9jc25fZGV0YWlsc19zY2hlbWEoanNvbl9kYXRh KQotIAotICAgICAgICAgIyBWZXJpZnkgSlNPTiBzdW1tYXJ5Ci0tICAgICAgICB3aXRoIG9wZW4o Z2VuZXJhdGVkX2ZpbGVzWydzdW1tYXJ5J10sICdyJykgYXMgZjoKLS0gICAgICAgICAgICBzdW1t YXJ5ID0ganNvbi5sb2FkKGYpCi0tICAgICAgICAgICAgYXNzZXJ0ICdhbmFseXNpc19zdW1tYXJ5 JyBpbiBzdW1tYXJ5Ci0tICAgICAgICAgICAgc3RhdHMgPSBzdW1tYXJ5WydhbmFseXNpc19zdW1t YXJ5J10KLSsgICAgICAgIHN1bW1hcnkgPSBfbG9hZF9qc29uKGdlbmVyYXRlZF9maWxlc1snc3Vt bWFyeSddKQotKyAgICAgICAgYXNzZXJ0ICdhbmFseXNpc19zdW1tYXJ5JyBpbiBzdW1tYXJ5Ci0r ICAgICAgICBzdGF0cyA9IHN1bW1hcnlbJ2FuYWx5c2lzX3N1bW1hcnknXQotIAotLSAgICAgICAg ICAgICMgVmVyaWZ5IGJhc2ljIHN0YXRzCi0tICAgICAgICAgICAgYXNzZXJ0IHN0YXRzWyd0b3Rh bF9zZXJ2ZXJzJ10gPT0gbGVuKHN1cHBsaWVycykKLS0gICAgICAgICAgICBhc3NlcnQgc3RhdHNb J3RvdGFsX3VwZGF0ZXMnXSA+IDAKLS0gICAgICAgICAgICBhc3NlcnQgc3RhdHNbJ3VwZGF0ZXNf Ynlfc3VmZml4J11bREVGQVVMVF9TVUZGSVhdID4gMAotLSAgICAgICAgICAgIGFzc2VydCAnYXZl cmFnZV9sYWcnIGluIHN0YXRzCi0tICAgICAgICAgICAgYXNzZXJ0ICdtYXhpbXVtX2xhZycgaW4g c3RhdHMKLSsgICAgICAgICMgVmVyaWZ5IGJhc2ljIHN0YXRzCi0rICAgICAgICBhc3NlcnQgc3Rh dHNbJ3RvdGFsX3NlcnZlcnMnXSA9PSBsZW4oc3VwcGxpZXJzKQotKyAgICAgICAgYXNzZXJ0IHN0 YXRzWyd0b3RhbF91cGRhdGVzJ10gPiAwCi0rICAgICAgICBhc3NlcnQgc3RhdHNbJ3VwZGF0ZXNf Ynlfc3VmZml4J11bREVGQVVMVF9TVUZGSVhdID4gMAotKyAgICAgICAgYXNzZXJ0ICdhdmVyYWdl X2xhZycgaW4gc3RhdHMKLSsgICAgICAgIGFzc2VydCAnbWF4aW11bV9sYWcnIGluIHN0YXRzCi0g Ci0gICAgIGZpbmFsbHk6Ci0gICAgICAgICBfY2xlYW51cF90ZXN0X2RhdGEodGVzdF91c2Vycywg dG1wX2RpcikKLUBAIC0yMjEsOCArMzE0LDcgQEAgZGVmIHRlc3RfcmVwbGljYXRpb25fbG9nX21v bml0b3JpbmdfYWR2YW5jZWQodG9wb19tNCk6Ci0gCi0gICAgIHRyeToKLSAgICAgICAgICMgQ2xl YXIgbG9ncyBhbmQgcmVzdGFydCBzZXJ2ZXJzCi0tICAgICAgICBmb3Igc3VwcGxpZXIgaW4gc3Vw cGxpZXJzOgotLSAgICAgICAgICAgIHN1cHBsaWVyLmRlbGV0ZUFjY2Vzc0xvZ3MocmVzdGFydD1U cnVlKQotKyAgICAgICAgX2NsZWFyX2FjY2Vzc19sb2dzKHN1cHBsaWVycykKLSAKLSAgICAgICAg ICMgR2VuZXJhdGUgdGVzdCBkYXRhCi0gICAgICAgICBzdGFydF90aW1lID0gZGF0ZXRpbWUubm93 KHRpbWV6b25lLnV0YykKLUBAIC0yNDAsMTAgKzMzMiw5IEBAIGRlZiB0ZXN0X3JlcGxpY2F0aW9u X2xvZ19tb25pdG9yaW5nX2FkdmFuY2VkKHRvcG9fbTQpOgotICAgICAgICAgZW5kX3RpbWUgPSBk YXRldGltZS5ub3codGltZXpvbmUudXRjKQotIAotICAgICAgICAgIyBSZXN0YXJ0IHRvIGZsdXNo IGxvZ3MKLS0gICAgICAgIGZvciBzdXBwbGllciBpbiBzdXBwbGllcnM6Ci0tICAgICAgICAgICAg c3VwcGxpZXIucmVzdGFydCgpCi0rICAgICAgICBfcmVzdGFydF9zdXBwbGllcnMoc3VwcGxpZXJz KQotIAotLSAgICAgICAgbG9nX2RpcnMgPSBbcy5kc19wYXRocy5sb2dfZGlyIGZvciBzIGluIHN1 cHBsaWVyc10KLSsgICAgICAgIGxvZ19kaXJzID0gX2dldF9sb2dfZGlycyhzdXBwbGllcnMpCi0g Ci0gICAgICAgICAjIFRlc3QgMTogTGFnIHRpbWUgZmlsdGVyaW5nCi0gICAgICAgICByZXBsX21v bml0b3IgPSBSZXBsaWNhdGlvbkxvZ0FuYWx5emVyKAotQEAgLTM3NCw4ICs0NjUsNyBAQCBkZWYg dGVzdF9yZXBsaWNhdGlvbl9sb2dfbW9uaXRvcmluZ19tdWx0aV9zdWZmaXgodG9wb19tNCk6Ci0g ICAgICAgICAgICAgcmVwbCA9IFJlcGxpY2F0aW9uTWFuYWdlcihzdWZmaXgpCi0gICAgICAgICAg ICAgcmVwbC50ZXN0X3JlcGxpY2F0aW9uX3RvcG9sb2d5KHRvcG9fbTQpCi0gCi0tICAgICAgICBm b3Igc3VwcGxpZXIgaW4gc3VwcGxpZXJzOgotLSAgICAgICAgICAgIHN1cHBsaWVyLmRlbGV0ZUFj Y2Vzc0xvZ3MocmVzdGFydD1UcnVlKQotKyAgICAgICAgX2NsZWFyX2FjY2Vzc19sb2dzKHN1cHBs aWVycykKLSAKLSAgICAgICAgIHN0YXJ0X3RpbWUgPSBkYXRldGltZS5ub3codGltZXpvbmUudXRj KQotIAotQEAgLTQwMCwxMSArNDkwLDEwIEBAIGRlZiB0ZXN0X3JlcGxpY2F0aW9uX2xvZ19tb25p dG9yaW5nX211bHRpX3N1ZmZpeCh0b3BvX200KToKLSAgICAgICAgIGVuZF90aW1lID0gZGF0ZXRp bWUubm93KHRpbWV6b25lLnV0YykKLSAKLSAgICAgICAgICMgUmVzdGFydCB0byBmbHVzaCBsb2dz Ci0tICAgICAgICBmb3Igc3VwcGxpZXIgaW4gc3VwcGxpZXJzOgotLSAgICAgICAgICAgIHN1cHBs aWVyLnJlc3RhcnQoKQotKyAgICAgICAgX3Jlc3RhcnRfc3VwcGxpZXJzKHN1cHBsaWVycykKLSAK LSAgICAgICAgICMgTW9uaXRvciBhbGwgc3VmZml4ZXMKLS0gICAgICAgIGxvZ19kaXJzID0gW3Mu ZHNfcGF0aHMubG9nX2RpciBmb3IgcyBpbiBzdXBwbGllcnNdCi0rICAgICAgICBsb2dfZGlycyA9 IF9nZXRfbG9nX2RpcnMoc3VwcGxpZXJzKQotICAgICAgICAgcmVwbF9tb25pdG9yID0gUmVwbGlj YXRpb25Mb2dBbmFseXplcigKLSAgICAgICAgICAgICBsb2dfZGlycz1sb2dfZGlycywKLSAgICAg ICAgICAgICBzdWZmaXhlcz1hbGxfc3VmZml4ZXMsCi1AQCAtNDY2LDggKzU1NSw3IEBAIGRlZiB0 ZXN0X3JlcGxpY2F0aW9uX2xvZ19tb25pdG9yaW5nX2ZpbHRlcl9jb21iaW5hdGlvbnModG9wb19t NCk6Ci0gCi0gICAgIHRyeToKLSAgICAgICAgICMgQ2xlYXIgbG9ncyBhbmQgcmVzdGFydCBzZXJ2 ZXJzCi0tICAgICAgICBmb3Igc3VwcGxpZXIgaW4gc3VwcGxpZXJzOgotLSAgICAgICAgICAgIHN1 cHBsaWVyLmRlbGV0ZUFjY2Vzc0xvZ3MocmVzdGFydD1UcnVlKQotKyAgICAgICAgX2NsZWFyX2Fj Y2Vzc19sb2dzKHN1cHBsaWVycykKLSAKLSAgICAgICAgICMgR2VuZXJhdGUgdmFyaWVkIHRlc3Qg ZGF0YQotICAgICAgICAgc3RhcnRfdGltZSA9IGRhdGV0aW1lLm5vdyh0aW1lem9uZS51dGMpCi1A QCAtNDc1LDkgKzU2Myw3IEBAIGRlZiB0ZXN0X3JlcGxpY2F0aW9uX2xvZ19tb25pdG9yaW5nX2Zp bHRlcl9jb21iaW5hdGlvbnModG9wb19tNCk6Ci0gCi0gICAgICAgICAjIENyZWF0ZSBkaWZmZXJl bnQgbGFnIHBhdHRlcm5zCi0gICAgICAgICAjIFBhdXNlIG91dGJvdW5kIGFncmVlbWVudHMgZnJv bSBzdXBwbGllcjEgdG8gYnVpbGQgYSByZXBsaWNhdGlvbiBiYWNrbG9nCi0tICAgICAgICBmb3Ig YWdtdCBpbiBzdXBwbGllcnNbMF0uYWdyZWVtZW50Lmxpc3Qoc3VmZml4PURFRkFVTFRfU1VGRklY KToKLS0gICAgICAgICAgICBzdXBwbGllcnNbMF0uYWdyZWVtZW50LnBhdXNlKGFnbXQuZG4pCi0t ICAgICAgICAgICAgcGF1c2VkX2FncmVlbWVudHMuYXBwZW5kKChzdXBwbGllcnNbMF0sIGFnbXQu ZG4pKQotKyAgICAgICAgcGF1c2VkX2FncmVlbWVudHMgPSBfcGF1c2VfYWdyZWVtZW50cyhzdXBw bGllcnNbMF0sIERFRkFVTFRfU1VGRklYKQotIAotICAgICAgICAgZm9yIGksIHVzZXIgaW4gZW51 bWVyYXRlKHRlc3RfdXNlcnMpOgotICAgICAgICAgICAgIGlmIGkgJSAzID09IDA6Ci1AQCAtNTAy LDEwICs1ODgsOSBAQCBkZWYgdGVzdF9yZXBsaWNhdGlvbl9sb2dfbW9uaXRvcmluZ19maWx0ZXJf Y29tYmluYXRpb25zKHRvcG9fbTQpOgotICAgICAgICAgZW5kX3RpbWUgPSBkYXRldGltZS5ub3co dGltZXpvbmUudXRjKQotIAotICAgICAgICAgIyBSZXN0YXJ0IHRvIGZsdXNoIGxvZ3MKLS0gICAg ICAgIGZvciBzdXBwbGllciBpbiBzdXBwbGllcnM6Ci0tICAgICAgICAgICAgc3VwcGxpZXIucmVz dGFydCgpCi0rICAgICAgICBfcmVzdGFydF9zdXBwbGllcnMoc3VwcGxpZXJzKQotIAotLSAgICAg ICAgbG9nX2RpcnMgPSBbcy5kc19wYXRocy5sb2dfZGlyIGZvciBzIGluIHN1cHBsaWVyc10KLSsg ICAgICAgIGxvZ19kaXJzID0gX2dldF9sb2dfZGlycyhzdXBwbGllcnMpCi0gCi0gICAgICAgICAj IFRlc3QgY29tYmluZWQgZmlsdGVycwotICAgICAgICAgbGFnX3RocmVzaG9sZCA9IDAuNQotQEAg LTU0MywxMSArNjI4LDMyMSBAQCBkZWYgdGVzdF9yZXBsaWNhdGlvbl9sb2dfbW9uaXRvcmluZ19m aWx0ZXJfY29tYmluYXRpb25zKHRvcG9fbTQpOgotICAgICAgICAgICAgICAgICBkdCA9IGRhdGV0 aW1lLmZyb210aW1lc3RhbXAodCwgdGltZXpvbmUudXRjKQotICAgICAgICAgICAgICAgICBhc3Nl cnQgc3RhcnRfdGltZSA8PSBkdCA8PSBlbmRfdGltZSwgIlRpbWUgcmFuZ2UgZmlsdGVyIHZpb2xh dGVkIgotICAgICBmaW5hbGx5OgotLSAgICAgICAgZm9yIHN1cHBsaWVyX29iaiwgZG4gaW4gcGF1 c2VkX2FncmVlbWVudHM6Ci0tICAgICAgICAgICAgdHJ5OgotLSAgICAgICAgICAgICAgICBzdXBw bGllcl9vYmouYWdyZWVtZW50LnJlc3VtZShkbikKLS0gICAgICAgICAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGU6Ci0tICAgICAgICAgICAgICAgIGxvZy53YXJuaW5nKGYiRmFpbGVkIHRvIHJlc3Vt ZSBhZ3JlZW1lbnQge2RufToge2V9IikKLSsgICAgICAgIF9yZXN1bWVfYWdyZWVtZW50cyhwYXVz ZWRfYWdyZWVtZW50cykKLSsgICAgICAgIF9jbGVhbnVwX3Rlc3RfZGF0YSh0ZXN0X3VzZXJzLCB0 bXBfZGlyKQotKwotKwotK2RlZiB0ZXN0X3JlcGxpY2F0aW9uX2xvZ19tb25pdG9yaW5nX2Nzbl9k ZXRhaWxzX2VkZ2VfY2FzZXModG9wb19tNCk6Ci0rICAgICIiIlRlc3QgQ1NOIGRldGFpbHMgZWRn ZSBjYXNlcyBhbmQgc3RydWN0dXJlIHZhbGlkYXRpb24KLSsKLSsgICAgOmlkOiBmNDNkYzQ3My00 NDI4LTQ5NzEtYmU0Yy0xNjljNGE3ODcyNmUKLSsgICAgOnNldHVwOiBGb3VyIHN1cHBsaWVycyBy ZXBsaWNhdGlvbiBzZXR1cAotKyAgICA6c3RlcHM6Ci0rICAgICAgICAxLiBUZXN0IENTTiBkZXRh aWxzIHN0cnVjdHVyZSB3aXRoIHZhcmlvdXMgcmVwbGljYXRpb24gcGF0dGVybnMKLSsgICAgICAg IDIuIFZlcmlmeSBhcnJpdmFscyBvcmRlcmluZyBhbmQgaG9wIGxhZyBjYWxjdWxhdGlvbnMKLSsg ICAgICAgIDMuIFRlc3QgcGFydGlhbCByZXBsaWNhdGlvbiBzY2VuYXJpb3MKLSsgICAgICAgIDQu IFZlcmlmeSBvcmlnaW4gc2VydmVyIGRldGVjdGlvbgotKyAgICA6ZXhwZWN0ZWRyZXN1bHRzOgot KyAgICAgICAgMS4gQ1NOIGRldGFpbHMgc2hvdWxkIGhhdmUgY29ycmVjdCBzdHJ1Y3R1cmUKLSsg ICAgICAgIDIuIEFycml2YWxzIHNob3VsZCBiZSBvcmRlcmVkIGJ5IHRpbWVzdGFtcAotKyAgICAg ICAgMy4gUGFydGlhbCByZXBsaWNhdGlvbiBzaG91bGQgYmUgZGV0ZWN0ZWQKLSsgICAgICAgIDQu IE9yaWdpbiBzZXJ2ZXIgc2hvdWxkIGJlIGNvcnJlY3RseSBpZGVudGlmaWVkCi0rICAgICIiIgot KyAgICB0bXBfZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J3JlcGxfY3NuX2VkZ2VfJykK LSsgICAgdGVzdF91c2VycyA9IFtdCi0rICAgIHN1cHBsaWVycyA9IFt0b3BvX200Lm1zW2Yic3Vw cGxpZXJ7aX0iXSBmb3IgaSBpbiByYW5nZSgxLCA1KV0KLSsKLSsgICAgdHJ5OgotKyAgICAgICAg X2NsZWFyX2FjY2Vzc19sb2dzKHN1cHBsaWVycykKLSsKLSsgICAgICAgIGxvZy5pbmZvKCdDcmVh dGluZyB0ZXN0IGRhdGEgZm9yIENTTiBkZXRhaWxzIGVkZ2UgY2FzZSB0ZXN0aW5nLi4uJykKLSsg ICAgICAgIHRlc3RfdXNlcnMgPSBfZ2VuZXJhdGVfdGVzdF9kYXRhKHN1cHBsaWVyc1swXSwgREVG QVVMVF9TVUZGSVgsIDUpCi0rCi0rICAgICAgICByZXBsID0gUmVwbGljYXRpb25NYW5hZ2VyKERF RkFVTFRfU1VGRklYKQotKyAgICAgICAgcmVwbC50ZXN0X3JlcGxpY2F0aW9uX3RvcG9sb2d5KHRv cG9fbTQpCi0rCi0rICAgICAgICBfcmVzdGFydF9zdXBwbGllcnMoc3VwcGxpZXJzKQotKwotKyAg ICAgICAgbG9nX2RpcnMgPSBfZ2V0X2xvZ19kaXJzKHN1cHBsaWVycykKLSsgICAgICAgIHJlcGxf bW9uaXRvciA9IFJlcGxpY2F0aW9uTG9nQW5hbHl6ZXIoCi0rICAgICAgICAgICAgbG9nX2RpcnM9 bG9nX2RpcnMsCi0rICAgICAgICAgICAgc3VmZml4ZXM9W0RFRkFVTFRfU1VGRklYXSwKLSsgICAg ICAgICAgICBhbm9ueW1vdXM9RmFsc2UsCi0rICAgICAgICAgICAgb25seV9mdWxseV9yZXBsaWNh dGVkPVRydWUKLSsgICAgICAgICkKLSsKLSsgICAgICAgIHJlcGxfbW9uaXRvci5wYXJzZV9sb2dz KCkKLSsgICAgICAgIGdlbmVyYXRlZF9maWxlcyA9IHJlcGxfbW9uaXRvci5nZW5lcmF0ZV9yZXBv cnQoCi0rICAgICAgICAgICAgb3V0cHV0X2Rpcj10bXBfZGlyLAotKyAgICAgICAgICAgIGZvcm1h dHM9Wydqc29uJ10sCi0rICAgICAgICAgICAgcmVwb3J0X25hbWU9J2Nzbl9lZGdlX3Rlc3QnCi0r ICAgICAgICApCi0rCi0rICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoZ2VuZXJhdGVkX2Zp bGVzWydqc29uJ10pCi0rCi0rICAgICAgICBqc29uX2RhdGEgPSBfbG9hZF9qc29uKGdlbmVyYXRl ZF9maWxlc1snanNvbiddKQotKwotKyAgICAgICAgYXNzZXJ0ICdjc25EZXRhaWxzJyBpbiBqc29u X2RhdGEsICJjc25EZXRhaWxzIHNob3VsZCBiZSBwcmVzZW50IgotKyAgICAgICAgY3NuX2RldGFp bHMgPSBqc29uX2RhdGFbJ2NzbkRldGFpbHMnXQotKwotKyAgICAgICAgaWYgY3NuX2RldGFpbHM6 Ci0rICAgICAgICAgICAgZm9yIGNzbiwgZGV0YWlscyBpbiBjc25fZGV0YWlscy5pdGVtcygpOgot KyAgICAgICAgICAgICAgICBhcnJpdmFscyA9IGRldGFpbHMuZ2V0KCdhcnJpdmFscycsIFtdKQot KyAgICAgICAgICAgICAgICBpZiBsZW4oYXJyaXZhbHMpID4gMToKLSsgICAgICAgICAgICAgICAg ICAgIHRpbWVzdGFtcHMgPSBbYVsndGltZXN0YW1wJ10gZm9yIGEgaW4gYXJyaXZhbHNdCi0rICAg ICAgICAgICAgICAgICAgICBhc3NlcnQgdGltZXN0YW1wcyA9PSBzb3J0ZWQodGltZXN0YW1wcyks IFwKLSsgICAgICAgICAgICAgICAgICAgICAgICBmIkFycml2YWxzIGZvciBDU04ge2Nzbn0gc2hv dWxkIGJlIG9yZGVyZWQgYnkgdGltZXN0YW1wIgotKwotKyAgICAgICAgICAgICAgICBpZiBhcnJp dmFsczoKLSsgICAgICAgICAgICAgICAgICAgIG9yaWdpbl9hcnJpdmFsID0gbmV4dCgoYSBmb3Ig YSBpbiBhcnJpdmFscyBpZiBhLmdldCgnaXNPcmlnaW4nKSksIE5vbmUpCi0rICAgICAgICAgICAg ICAgICAgICBhc3NlcnQgb3JpZ2luX2Fycml2YWwgaXMgbm90IE5vbmUsICJFeHBlY3RlZCBhbiBh cnJpdmFsIG1hcmtlZCBhcyBvcmlnaW4iCi0rICAgICAgICAgICAgICAgICAgICBhc3NlcnQgb3Jp Z2luX2Fycml2YWwuZ2V0KCdzZXJ2ZXInKSA9PSBkZXRhaWxzLmdldCgnb3JpZ2luU2VydmVyJyks IFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAiT3JpZ2luIGFycml2YWwgc2VydmVyIHNob3Vs ZCBtYXRjaCBvcmlnaW5TZXJ2ZXIgZmllbGQiCi0rCi0rICAgICAgICAgICAgICAgICAgICBmb3Ig aSwgYXJyaXZhbCBpbiBlbnVtZXJhdGUoYXJyaXZhbHNbMTpdLCBzdGFydD0xKToKLSsgICAgICAg ICAgICAgICAgICAgICAgICBhc3NlcnQgJ2hvcExhZycgaW4gYXJyaXZhbCwgXAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmIkFycml2YWwge2l9IHNob3VsZCBoYXZlIGhvcExhZyIKLSsg ICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYXJyaXZhbFsnaG9wTGFnJ10gPj0gMCwgXAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaG9wTGFnIHNob3VsZCBiZSBub24tbmVnYXRp dmUiCi0rCi0rICAgICAgICAgICAgICAgIGlmIGxlbihhcnJpdmFscykgPiAxOgotKyAgICAgICAg ICAgICAgICAgICAgZ2xvYmFsX2xhZyA9IGRldGFpbHMuZ2V0KCdnbG9iYWxMYWcnLCAwKQotKyAg ICAgICAgICAgICAgICAgICAgYXNzZXJ0IGdsb2JhbF9sYWcgPj0gMCwgImdsb2JhbExhZyBzaG91 bGQgYmUgbm9uLW5lZ2F0aXZlIgotKwotKyAgICAgICAgICAgICAgICAgICAgbGFzdF9kZWxheSA9 IGFycml2YWxzWy0xXS5nZXQoJ3JlbGF0aXZlRGVsYXknLCAwKQotKyAgICAgICAgICAgICAgICAg ICAgYXNzZXJ0IGFicyhsYXN0X2RlbGF5IC0gZ2xvYmFsX2xhZykgPCAwLjAwMSwgXAotKyAgICAg ICAgICAgICAgICAgICAgICAgICJMYXN0IGFycml2YWwncyByZWxhdGl2ZURlbGF5IHNob3VsZCBt YXRjaCBnbG9iYWxMYWciCi0rCi0rICAgICAgICAgICAgICAgIHNlcnZlcl9jb3VudCA9IGRldGFp bHMuZ2V0KCdzZXJ2ZXJDb3VudCcsIDApCi0rICAgICAgICAgICAgICAgIGFzc2VydCBzZXJ2ZXJf Y291bnQgPT0gbGVuKGFycml2YWxzKSwgXAotKyAgICAgICAgICAgICAgICAgICAgInNlcnZlckNv dW50IHNob3VsZCBtYXRjaCBudW1iZXIgb2YgYXJyaXZhbHMiCi0rCi0rICAgICAgICAgICAgICAg IHRvdGFsX2hvcHMgPSBkZXRhaWxzLmdldCgndG90YWxIb3BzJywgMCkKLSsgICAgICAgICAgICAg ICAgZXhwZWN0ZWRfaG9wcyA9IG1heCgwLCBsZW4oYXJyaXZhbHMpIC0gMSkKLSsgICAgICAgICAg ICAgICAgYXNzZXJ0IHRvdGFsX2hvcHMgPT0gZXhwZWN0ZWRfaG9wcywgXAotKyAgICAgICAgICAg ICAgICAgICAgZiJ0b3RhbEhvcHMgc2hvdWxkIGJlIHtleHBlY3RlZF9ob3BzfSwgZ290IHt0b3Rh bF9ob3BzfSIKLSsKLSsgICAgICAgICAgICAgICAgaG9wcyA9IGRldGFpbHMuZ2V0KCdob3BzJywg W10pCi0rICAgICAgICAgICAgICAgIGFzc2VydCBsZW4oaG9wcykgPT0gdG90YWxfaG9wcywgXAot KyAgICAgICAgICAgICAgICAgICAgImhvcHMgbGlzdCBsZW5ndGggc2hvdWxkIG1hdGNoIHRvdGFs SG9wcyIKLSsKLSsgICAgICAgICAgICBpZiAncmVwbGljYXRpb25MYWdzJyBpbiBqc29uX2RhdGEg YW5kIGpzb25fZGF0YVsncmVwbGljYXRpb25MYWdzJ10uZ2V0KCdzZXJpZXMnKToKLSsgICAgICAg ICAgICAgICAgZm9yIHNlcmllcyBpbiBqc29uX2RhdGFbJ3JlcGxpY2F0aW9uTGFncyddWydzZXJp ZXMnXToKLSsgICAgICAgICAgICAgICAgICAgIGZvciBkYXRhcG9pbnQgaW4gc2VyaWVzLmdldCgn ZGF0YXBvaW50cycsIFtdKToKLSsgICAgICAgICAgICAgICAgICAgICAgICBjc25faWQgPSBkYXRh cG9pbnQuZ2V0KCdjc25JZCcpCi0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgY3NuX2lkOgot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgY3NuX2lkIGluIGNzbl9kZXRhaWxz LCBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmImNzbklkIHtjc25faWR9IGlu IGRhdGFwb2ludCBzaG91bGQgZXhpc3QgaW4gY3NuRGV0YWlscyIKLSsKLSsgICAgZmluYWxseToK LSsgICAgICAgIF9jbGVhbnVwX3Rlc3RfZGF0YSh0ZXN0X3VzZXJzLCB0bXBfZGlyKQotKwotKwot K2RlZiB0ZXN0X3JlcGxpY2F0aW9uX2xvZ19tb25pdG9yaW5nX29yaWdpbl9vdXRfb2Zfc2NvcGUo dG9wb19tNCk6Ci0rICAgICIiIlRlc3Qgb3JpZ2luIGRldGVjdGlvbiB3aGVuIG9yaWdpbiBzZXJ2 ZXIgcmVjb3JkIGlzIG91dHNpZGUgdGltZSByYW5nZQotKwotKyAgICA6aWQ6IGQ3M2ZkOWM1LWY5 MzAtNDdkNi1hZGU0LWFkYTFjZjBkMmMyMQotKyAgICA6c2V0dXA6IEZvdXIgc3VwcGxpZXJzIHJl cGxpY2F0aW9uIHNldHVwCi0rICAgIDpzdGVwczoKLSsgICAgICAgIDEuIFBhdXNlIG91dGJvdW5k IGFncmVlbWVudHMgZnJvbSB0aGUgb3JpZ2luIHN1cHBsaWVyCi0rICAgICAgICAyLiBHZW5lcmF0 ZSBjaGFuZ2VzLCB0aGVuIHJlc3VtZSBhZ3JlZW1lbnRzIHRvIGRlbGF5IGNvbnN1bWVyIGFycml2 YWxzCi0rICAgICAgICAzLiBVc2UgdGltZSByYW5nZSB0aGF0IGV4Y2x1ZGVzIHRoZSBvcmlnaW4g bG9nIGJ1dCBpbmNsdWRlcyBjb25zdW1lciBsb2dzCi0rICAgIDpleHBlY3RlZHJlc3VsdHM6Ci0r ICAgICAgICAxLiBPcmlnaW4gc2VydmVyIHNob3VsZCBiZSBpZGVudGlmaWVkIGZyb20gcmVwbGlj YSBJRCBtYXBwaW5nCi0rICAgICAgICAyLiBBdCBsZWFzdCBvbmUgQ1NOIHNob3VsZCBoYXZlIG9y aWdpbiBvdXRzaWRlIHRoZSBzZWxlY3RlZCB0aW1lIHJhbmdlCi0rICAgICAgICAzLiBKU09OIHJl cG9ydCBzaG91bGQgaW5jbHVkZSBjc25EZXRhaWxzIGVudHJpZXMgZm9yIHZhbGlkYXRpb24KLSsg ICAgIiIiCi0rICAgIHRtcF9kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0ncmVwbF9vcmln aW5fc2NvcGVfJykKLSsgICAgdGVzdF91c2VycyA9IFtdCi0rICAgIHN1cHBsaWVycyA9IFt0b3Bv X200Lm1zW2Yic3VwcGxpZXJ7aX0iXSBmb3IgaSBpbiByYW5nZSgxLCA1KV0KLSsgICAgcGF1c2Vk X2FncmVlbWVudHMgPSBbXQotKwotKyAgICB0cnk6Ci0rICAgICAgICAjIFJlc2V0IGFjY2VzcyBs b2dzIHRvIG1ha2UgdGltZS1yYW5nZSBjdXRzIGVhc2llciB0byByZWFzb24gYWJvdXQKLSsgICAg ICAgIF9jbGVhcl9hY2Nlc3NfbG9ncyhzdXBwbGllcnMpCi0rCi0rICAgICAgICAjIFBhdXNlIG91 dGJvdW5kIGFncmVlbWVudHMgc28gY29uc3VtZXIgbG9ncyB3b24ndCBzZWUgdGhlIHByZS1yZXN1 bWUgQ1NOcwotKyAgICAgICAgcGF1c2VkX2FncmVlbWVudHMgPSBfcGF1c2VfYWdyZWVtZW50cyhz dXBwbGllcnNbMF0sIERFRkFVTFRfU1VGRklYKQotKwotKyAgICAgICAgbG9nLmluZm8oJ0NyZWF0 aW5nIHByZS1yZXN1bWUgY2hhbmdlcyBmb3Igb3JpZ2luIG91dC1vZi1zY29wZSB0ZXN0Li4uJykK LSsgICAgICAgICMgQ3JlYXRlIENTTnMgdGhhdCBvcmlnaW5hdGUgb24gc3VwcGxpZXIxIGJ1dCB3 b24ndCByZWFjaCBjb25zdW1lcnMgeWV0Ci0rICAgICAgICBwcmVfc3RhcnQgPSBkYXRldGltZS5u b3codGltZXpvbmUudXRjKQotKyAgICAgICAgdGVzdF91c2VycyA9IF9nZW5lcmF0ZV90ZXN0X2Rh dGEoCi0rICAgICAgICAgICAgc3VwcGxpZXJzWzBdLCBERUZBVUxUX1NVRkZJWCwgMiwgdXNlcl9w cmVmaXg9Im9yaWdpbl9zY29wZV9wcmUiCi0rICAgICAgICApCi0rICAgICAgICBwcmVfZW5kID0g ZGF0ZXRpbWUubm93KHRpbWV6b25lLnV0YykKLSsgICAgICAgICMgTG9jYXRlIHRoZSBsYXRlc3Qg b3JpZ2luIGxvZyB0aW1lIGZvciB0aGVzZSBDU05zIHRvIHNldCBhIGRldGVybWluaXN0aWMgY3V0 b2ZmCi0rICAgICAgICBvcmlnaW5fbG9nX3RpbWUgPSBfZmluZF9sYXRlc3RfbG9ndGltZV9mb3Jf cHJlZml4KAotKyAgICAgICAgICAgIHN1cHBsaWVyc1swXS5kc19wYXRocy5sb2dfZGlyLAotKyAg ICAgICAgICAgIERFRkFVTFRfU1VGRklYLAotKyAgICAgICAgICAgIHByZV9zdGFydCwKLSsgICAg ICAgICAgICBwcmVfZW5kLAotKyAgICAgICAgICAgICJvcmlnaW5fc2NvcGVfcHJlXyIKLSsgICAg ICAgICkKLSsgICAgICAgIGFzc2VydCBvcmlnaW5fbG9nX3RpbWUgaXMgbm90IE5vbmUsICJFeHBl Y3RlZCBvcmlnaW4gc2VydmVyIGxvZyBlbnRyaWVzIGZvciBwcmUtcmVzdW1lIGRhdGEiCi0rICAg ICAgICAjIEN1dCB0aGUgYW5hbHlzaXMgd2luZG93IGp1c3QgYWZ0ZXIgb3JpZ2luIGxvZ2dpbmcs IGV4Y2x1ZGluZyBzdXBwbGllcjEgZW50cmllcwotKyAgICAgICAgc3RhcnRfdGltZSA9IG9yaWdp bl9sb2dfdGltZSArIHRpbWVkZWx0YShzZWNvbmRzPTEpCi0rICAgICAgICB0aW1lLnNsZWVwKDEp Ci0rCi0rICAgICAgICAjIFJlc3VtZSBhZ3JlZW1lbnRzIHNvIHRoZSBwcmUtcmVzdW1lIENTTnMg cmVwbGljYXRlIHRvIGNvbnN1bWVycyBhZnRlciBzdGFydF90aW1lCi0rICAgICAgICBfcmVzdW1l X2FncmVlbWVudHMocGF1c2VkX2FncmVlbWVudHMpCi0rICAgICAgICBwYXVzZWRfYWdyZWVtZW50 cy5jbGVhcigpCi0rCi0rICAgICAgICBsb2cuaW5mbygnQ3JlYXRpbmcgcG9zdC1yZXN1bWUgY2hh bmdlcyBmb3Igb3JpZ2luIG1hcHBpbmcuLi4nKQotKyAgICAgICAgIyBBZGRpdGlvbmFsIENTTnMg YWZ0ZXIgcmVzdW1lIGVuc3VyZSBub3JtYWwgcmVwbGljYXRpb24gY29udGludWVzCi0rICAgICAg ICB0ZXN0X3VzZXJzICs9IF9nZW5lcmF0ZV90ZXN0X2RhdGEoCi0rICAgICAgICAgICAgc3VwcGxp ZXJzWzBdLCBERUZBVUxUX1NVRkZJWCwgMiwgdXNlcl9wcmVmaXg9Im9yaWdpbl9zY29wZV9wb3N0 IgotKyAgICAgICAgKQotKwotKyAgICAgICAgIyBXYWl0IGZvciByZXBsaWNhdGlvbiB0byBmaW5p c2ggYW5kIGNhcHR1cmUgdGhlIHVwcGVyIGJvdW5kIG9mIHRoZSB0aW1lIHdpbmRvdwotKyAgICAg ICAgcmVwbCA9IFJlcGxpY2F0aW9uTWFuYWdlcihERUZBVUxUX1NVRkZJWCkKLSsgICAgICAgIHJl cGwudGVzdF9yZXBsaWNhdGlvbl90b3BvbG9neSh0b3BvX200KQotKyAgICAgICAgZW5kX3RpbWUg PSBkYXRldGltZS5ub3codGltZXpvbmUudXRjKQotKwotKyAgICAgICAgIyBSZXN0YXJ0IHRvIGZs dXNoIGxvZ3MgYmVmb3JlIGFuYWx5c2lzCi0rICAgICAgICBfcmVzdGFydF9zdXBwbGllcnMoc3Vw cGxpZXJzKQotKwotKyAgICAgICAgbG9nX2RpcnMgPSBfZ2V0X2xvZ19kaXJzKHN1cHBsaWVycykK LSsgICAgICAgIHJlcGxfbW9uaXRvciA9IFJlcGxpY2F0aW9uTG9nQW5hbHl6ZXIoCi0rICAgICAg ICAgICAgbG9nX2RpcnM9bG9nX2RpcnMsCi0rICAgICAgICAgICAgc3VmZml4ZXM9W0RFRkFVTFRf U1VGRklYXSwKLSsgICAgICAgICAgICB0aW1lX3JhbmdlPXsnc3RhcnQnOiBzdGFydF90aW1lLCAn ZW5kJzogZW5kX3RpbWV9Ci0rICAgICAgICApCi0rCi0rICAgICAgICAjIFBhcnNlIGxvZ3Mgd2l0 aGluIHRoZSB0aW1lIHdpbmRvdyBhbmQgcHJvZHVjZSBKU09OIGRldGFpbHMKLSsgICAgICAgIHJl cGxfbW9uaXRvci5wYXJzZV9sb2dzKCkKLSsgICAgICAgIGdlbmVyYXRlZF9maWxlcyA9IHJlcGxf bW9uaXRvci5nZW5lcmF0ZV9yZXBvcnQoCi0rICAgICAgICAgICAgb3V0cHV0X2Rpcj10bXBfZGly LAotKyAgICAgICAgICAgIGZvcm1hdHM9Wydqc29uJ10sCi0rICAgICAgICAgICAgcmVwb3J0X25h bWU9J29yaWdpbl9zY29wZV90ZXN0JwotKyAgICAgICAgKQotKwotKyAgICAgICAganNvbl9kYXRh ID0gX2xvYWRfanNvbihnZW5lcmF0ZWRfZmlsZXNbJ2pzb24nXSkKLSsKLSsgICAgICAgIGNzbl9k ZXRhaWxzID0ganNvbl9kYXRhLmdldCgnY3NuRGV0YWlscycsIHt9KQotKyAgICAgICAgb3JpZ2lu X3NlcnZlciA9IHN1cHBsaWVyc1swXS5zZXJ2ZXJpZAotKyAgICAgICAgZm91bmQgPSBGYWxzZQot KyAgICAgICAgaWYgY3NuX2RldGFpbHM6Ci0rICAgICAgICAgICAgb3JpZ2luX2NvdW50cyA9IHt9 Ci0rICAgICAgICAgICAgZm9yIGRldGFpbHMgaW4gY3NuX2RldGFpbHMudmFsdWVzKCk6Ci0rICAg ICAgICAgICAgICAgIG9yaWdpbiA9IGRldGFpbHMuZ2V0KCdvcmlnaW5TZXJ2ZXInLCAndW5rbm93 bicpCi0rICAgICAgICAgICAgICAgIG9yaWdpbl9jb3VudHNbb3JpZ2luXSA9IG9yaWdpbl9jb3Vu dHMuZ2V0KG9yaWdpbiwgMCkgKyAxCi0rICAgICAgICAgICAgaWYgb3JpZ2luX3NlcnZlciBub3Qg aW4gb3JpZ2luX2NvdW50cyBhbmQgZiJzbGFwZC17b3JpZ2luX3NlcnZlcn0iIGluIG9yaWdpbl9j b3VudHM6Ci0rICAgICAgICAgICAgICAgIG9yaWdpbl9zZXJ2ZXIgPSBmInNsYXBkLXtvcmlnaW5f c2VydmVyfSIKLSsKLSsgICAgICAgICMgRm9jdXMgb24gdGhlIHByZS1yZXN1bWUgQ1NOczsgdGhl c2Ugc2hvdWxkIGhhdmUgb3JpZ2luIG91dCBvZiBzY29wZQotKyAgICAgICAgcHJlX2RldGFpbHMg PSBbCi0rICAgICAgICAgICAgZGV0YWlscyBmb3IgZGV0YWlscyBpbiBjc25fZGV0YWlscy52YWx1 ZXMoKQotKyAgICAgICAgICAgIGlmICJvcmlnaW5fc2NvcGVfcHJlXyIgaW4gKGRldGFpbHMuZ2V0 KCd0YXJnZXREbicpIG9yICcnKQotKyAgICAgICAgXQotKyAgICAgICAgYXNzZXJ0IHByZV9kZXRh aWxzLCAiRXhwZWN0ZWQgcHJlLXJlc3VtZSBDU05zIGluIGNzbkRldGFpbHMiCi0rICAgICAgICAj IENvbmZpcm0gYXQgbGVhc3Qgb25lIENTTiBzaG93cyBvcmlnaW4gc2VydmVyIG1pc3NpbmcgZnJv bSBhcnJpdmFscwotKyAgICAgICAgZm9yIGRldGFpbHMgaW4gcHJlX2RldGFpbHM6Ci0rICAgICAg ICAgICAgaWYgZGV0YWlscy5nZXQoJ29yaWdpblNlcnZlcicpICE9IG9yaWdpbl9zZXJ2ZXI6Ci0r ICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0rICAgICAgICAgICAgYXJyaXZhbHMgPSBkZXRhaWxz LmdldCgnYXJyaXZhbHMnLCBbXSkKLSsgICAgICAgICAgICBhcnJpdmFsX3NlcnZlcnMgPSB7YS5n ZXQoJ3NlcnZlcicpIGZvciBhIGluIGFycml2YWxzfQotKyAgICAgICAgICAgIGlmIGFycml2YWxf c2VydmVycyBhbmQgb3JpZ2luX3NlcnZlciBub3QgaW4gYXJyaXZhbF9zZXJ2ZXJzOgotKyAgICAg ICAgICAgICAgICBmb3VuZCA9IFRydWUKLSsgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAg ICAgICBsb2cuaW5mbygKLSsgICAgICAgICAgICAgICAgIk9yaWdpbiBvdXQtb2Ytc2NvcGUgY2Fu ZGlkYXRlOiBjc249JXMgYXJyaXZhbHM9JXMiLAotKyAgICAgICAgICAgICAgICBkZXRhaWxzLmdl dCgnY3NuJyksCi0rICAgICAgICAgICAgICAgIHNvcnRlZChhcnJpdmFsX3NlcnZlcnMpCi0rICAg ICAgICAgICAgKQotKwotKyAgICAgICAgYXNzZXJ0IGZvdW5kLCAoCi0rICAgICAgICAgICAgIkV4 cGVjdGVkIGF0IGxlYXN0IG9uZSBDU04gd2hlcmUgdGhlIG9yaWdpbiBzZXJ2ZXIgaXMgb3V0c2lk ZSB0aGUgdGltZSByYW5nZSAiCi0rICAgICAgICAgICAgImJ1dCBzdGlsbCBpZGVudGlmaWVkIHZp YSByZXBsaWNhIElEIG1hcHBpbmciCi0rICAgICAgICApCi0rCi0rICAgIGZpbmFsbHk6Ci0rICAg ICAgICBfcmVzdW1lX2FncmVlbWVudHMocGF1c2VkX2FncmVlbWVudHMpCi0rICAgICAgICBfY2xl YW51cF90ZXN0X2RhdGEodGVzdF91c2VycywgdG1wX2RpcikKLSsKLSsKLStkZWYgdGVzdF9yZXBs aWNhdGlvbl9sb2dfbW9uaXRvcmluZ19wYXJ0aWFsX3JlcGxpY2F0aW9uKHRvcG9fbTQpOgotKyAg ICAiIiJUZXN0IENTTiBkZXRhaWxzIHdpdGggcGFydGlhbCByZXBsaWNhdGlvbiAobm90IGFsbCBz ZXJ2ZXJzIHJlYWNoZWQpCi0rCi0rICAgIDppZDogZDQwMjZmZDAtZDgzYi00MDBlLThjMmUtNDRm Y2Y2NzYzNjhmCi0rICAgIDpzZXR1cDogRm91ciBzdXBwbGllcnMgcmVwbGljYXRpb24gc2V0dXAK LSsgICAgOnN0ZXBzOgotKyAgICAgICAgMS4gUGF1c2UgcmVwbGljYXRpb24gYWdyZWVtZW50cyB0 byBjcmVhdGUgcGFydGlhbCByZXBsaWNhdGlvbgotKyAgICAgICAgMi4gR2VuZXJhdGUgY2hhbmdl cyBhbmQgdmVyaWZ5IHBhcnRpYWwgcmVwbGljYXRpb24gZGV0ZWN0aW9uCi0rICAgICAgICAzLiBW ZXJpZnkgcmVwbGljYXRlZFRvQWxsIGZsYWcgaXMgY29ycmVjdAotKyAgICA6ZXhwZWN0ZWRyZXN1 bHRzOgotKyAgICAgICAgMS4gUGFydGlhbCByZXBsaWNhdGlvbiBzaG91bGQgYmUgZGV0ZWN0ZWQK LSsgICAgICAgIDIuIHJlcGxpY2F0ZWRUb0FsbCBzaG91bGQgYmUgRmFsc2UgZm9yIHBhcnRpYWxs eSByZXBsaWNhdGVkIENTTnMKLSsgICAgICAgIDMuIHNlcnZlckNvdW50IHNob3VsZCByZWZsZWN0 IGFjdHVhbCBzZXJ2ZXJzIHJlYWNoZWQKLSsgICAgIiIiCi0rICAgIHRtcF9kaXIgPSB0ZW1wZmls ZS5ta2R0ZW1wKHByZWZpeD0ncmVwbF9wYXJ0aWFsXycpCi0rICAgIHRlc3RfdXNlcnMgPSBbXQot KyAgICBzdXBwbGllcnMgPSBbdG9wb19tNC5tc1tmInN1cHBsaWVye2l9Il0gZm9yIGkgaW4gcmFu Z2UoMSwgNSldCi0rICAgIHBhdXNlZF9hZ3JlZW1lbnRzID0gW10KLSsKLSsgICAgdHJ5OgotKyAg ICAgICAgX2NsZWFyX2FjY2Vzc19sb2dzKHN1cHBsaWVycykKLSsKLSsgICAgICAgIGxvZy5pbmZv KCdDcmVhdGluZyBmdWxseSByZXBsaWNhdGVkIHRlc3QgZGF0YS4uLicpCi0rICAgICAgICB0ZXN0 X3VzZXJzID0gX2dlbmVyYXRlX3Rlc3RfZGF0YShzdXBwbGllcnNbMF0sIERFRkFVTFRfU1VGRklY LCAzKQotKwotKyAgICAgICAgcmVwbCA9IFJlcGxpY2F0aW9uTWFuYWdlcihERUZBVUxUX1NVRkZJ WCkKLSsgICAgICAgIHJlcGwudGVzdF9yZXBsaWNhdGlvbl90b3BvbG9neSh0b3BvX200KQotKwot KyAgICAgICAgX3Jlc3RhcnRfc3VwcGxpZXJzKHN1cHBsaWVycykKLSsKLSsgICAgICAgICMgUGF1 c2Ugb3V0Ym91bmQgYWdyZWVtZW50cyBmcm9tIHN1cHBsaWVyMSB0byBjcmVhdGUgcGFydGlhbCBy ZXBsaWNhdGlvbgotKyAgICAgICAgcGF1c2VkX2FncmVlbWVudHMgPSBfcGF1c2VfYWdyZWVtZW50 cyhzdXBwbGllcnNbMF0sIERFRkFVTFRfU1VGRklYKQotKwotKyAgICAgICAgbG9nLmluZm8oJ0Ny ZWF0aW5nIHBhcnRpYWxseSByZXBsaWNhdGVkIHRlc3QgZGF0YS4uLicpCi0rICAgICAgICB0ZXN0 X3VzZXJzICs9IF9nZW5lcmF0ZV90ZXN0X2RhdGEoc3VwcGxpZXJzWzBdLCBERUZBVUxUX1NVRkZJ WCwgMywgdXNlcl9wcmVmaXg9InBhcnRpYWxfdXNlciIpCi0rCi0rICAgICAgICAjIEFsbG93IHNv bWUgdGltZSBmb3IgbG9jYWwgbG9nZ2luZzsgZG8gbm90IHdhaXQgZm9yIGZ1bGwgcmVwbGljYXRp b24KLSsgICAgICAgIHRpbWUuc2xlZXAoMikKLSsKLSsgICAgICAgIGxvZ19kaXJzID0gX2dldF9s b2dfZGlycyhzdXBwbGllcnMpCi0rICAgICAgICByZXBsX21vbml0b3IgPSBSZXBsaWNhdGlvbkxv Z0FuYWx5emVyKAotKyAgICAgICAgICAgIGxvZ19kaXJzPWxvZ19kaXJzLAotKyAgICAgICAgICAg IHN1ZmZpeGVzPVtERUZBVUxUX1NVRkZJWF0sCi0rICAgICAgICAgICAgYW5vbnltb3VzPUZhbHNl LAotKyAgICAgICAgICAgIG9ubHlfZnVsbHlfcmVwbGljYXRlZD1GYWxzZSwKLSsgICAgICAgICAg ICBvbmx5X25vdF9yZXBsaWNhdGVkPUZhbHNlCi0rICAgICAgICApCi0rCi0rICAgICAgICByZXBs X21vbml0b3IucGFyc2VfbG9ncygpCi0rICAgICAgICBnZW5lcmF0ZWRfZmlsZXMgPSByZXBsX21v bml0b3IuZ2VuZXJhdGVfcmVwb3J0KAotKyAgICAgICAgICAgIG91dHB1dF9kaXI9dG1wX2RpciwK LSsgICAgICAgICAgICBmb3JtYXRzPVsnanNvbiddLAotKyAgICAgICAgICAgIHJlcG9ydF9uYW1l PSdwYXJ0aWFsX3JlcGxfdGVzdCcKLSsgICAgICAgICkKLSsKLSsgICAgICAgIGpzb25fZGF0YSA9 IF9sb2FkX2pzb24oZ2VuZXJhdGVkX2ZpbGVzWydqc29uJ10pCi0rCi0rICAgICAgICBhc3NlcnQg J2NzbkRldGFpbHMnIGluIGpzb25fZGF0YQotKyAgICAgICAgY3NuX2RldGFpbHMgPSBqc29uX2Rh dGFbJ2NzbkRldGFpbHMnXQotKwotKyAgICAgICAgaWYgY3NuX2RldGFpbHM6Ci0rICAgICAgICAg ICAgZnVsbHlfcmVwbGljYXRlZF9jb3VudCA9IHN1bSgKLSsgICAgICAgICAgICAgICAgMSBmb3Ig ZGV0YWlscyBpbiBjc25fZGV0YWlscy52YWx1ZXMoKQotKyAgICAgICAgICAgICAgICBpZiBkZXRh aWxzLmdldCgncmVwbGljYXRlZFRvQWxsJywgRmFsc2UpCi0rICAgICAgICAgICAgKQotKwotKyAg ICAgICAgICAgIGFzc2VydCBmdWxseV9yZXBsaWNhdGVkX2NvdW50ID4gMCwgXAotKyAgICAgICAg ICAgICAgICAiU2hvdWxkIGhhdmUgc29tZSBmdWxseSByZXBsaWNhdGVkIENTTnMiCi0rCi0rICAg ICAgICAgICAgdG90YWxfc2VydmVycyA9IGxlbihzdXBwbGllcnMpCi0rICAgICAgICAgICAgZm9y IGNzbiwgZGV0YWlscyBpbiBjc25fZGV0YWlscy5pdGVtcygpOgotKyAgICAgICAgICAgICAgICBz ZXJ2ZXJfY291bnQgPSBkZXRhaWxzLmdldCgnc2VydmVyQ291bnQnLCAwKQotKyAgICAgICAgICAg ICAgICBhc3NlcnQgc2VydmVyX2NvdW50IDw9IHRvdGFsX3NlcnZlcnMsIFwKLSsgICAgICAgICAg ICAgICAgICAgIGYic2VydmVyQ291bnQgKHtzZXJ2ZXJfY291bnR9KSBzaG91bGQgbm90IGV4Y2Vl ZCB0b3RhbCBzZXJ2ZXJzICh7dG90YWxfc2VydmVyc30pIgotKwotKyAgICAgICAgICAgICAgICBy ZXBsaWNhdGVkX3RvX2FsbCA9IGRldGFpbHMuZ2V0KCdyZXBsaWNhdGVkVG9BbGwnLCBGYWxzZSkK LSsgICAgICAgICAgICAgICAgaWYgcmVwbGljYXRlZF90b19hbGw6Ci0rICAgICAgICAgICAgICAg ICAgICBhc3NlcnQgc2VydmVyX2NvdW50ID09IHRvdGFsX3NlcnZlcnMsIFwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAicmVwbGljYXRlZFRvQWxsPVRydWUgcmVxdWlyZXMgc2VydmVyQ291bnQg PT0gdG90YWxfc2VydmVycyIKLSsKLSsgICAgZmluYWxseToKLSsgICAgICAgIF9yZXN1bWVfYWdy ZWVtZW50cyhwYXVzZWRfYWdyZWVtZW50cykKLSAgICAgICAgIF9jbGVhbnVwX3Rlc3RfZGF0YSh0 ZXN0X3VzZXJzLCB0bXBfZGlyKQotIAotIAotZGlmZiAtLWdpdCBhL3NyYy9jb2NrcGl0LzM4OS1j b25zb2xlL3NyYy9saWIvbW9uaXRvci9tb25pdG9yTW9kYWxzLmpzeCBiL3NyYy9jb2NrcGl0LzM4 OS1jb25zb2xlL3NyYy9saWIvbW9uaXRvci9tb25pdG9yTW9kYWxzLmpzeAotaW5kZXggZmFjYmQ5 ZjVmLi4zYzVhNDZhNWIgMTAwNjQ0Ci0tLS0gYS9zcmMvY29ja3BpdC8zODktY29uc29sZS9zcmMv bGliL21vbml0b3IvbW9uaXRvck1vZGFscy5qc3gKLSsrKyBiL3NyYy9jb2NrcGl0LzM4OS1jb25z b2xlL3NyYy9saWIvbW9uaXRvci9tb25pdG9yTW9kYWxzLmpzeAotQEAgLTMsMTcgKzMsMjIgQEAg aW1wb3J0IFJlYWN0IGZyb20gInJlYWN0IjsKLSBpbXBvcnQgewotICAgICBCdXR0b24sCi0gICAg IENoZWNrYm94LAotKyAgICBDbGlwYm9hcmRDb3B5LAotKyAgICBDbGlwYm9hcmRDb3B5VmFyaWFu dCwKLSAgICAgRW1wdHlTdGF0ZSwKLSAgICAgRW1wdHlTdGF0ZUljb24sCi0gICAgIEVtcHR5U3Rh dGVCb2R5LAotICAgICBHcmlkLAotICAgICBHcmlkSXRlbSwKLSAgICAgRm9ybSwKLSsgICAgTGFi ZWwsCi0gICAgIE1vZGFsLAotICAgICBNb2RhbFZhcmlhbnQsCi0gICAgIE51bWJlcklucHV0LAot ICAgICBSYWRpbywKLSAgICAgU3Bpbm5lciwKLSsgICAgU3BsaXQsCi0rICAgIFNwbGl0SXRlbSwK LSAgICAgVGFiLAotICAgICBUYWJzLAotICAgICBUYWJUaXRsZVRleHQsCi1AQCAtMzYsOSArNDEs MTIgQEAgaW1wb3J0IHsKLSAgICAgTGlzdEl0ZW0KLSB9IGZyb20gIkBwYXR0ZXJuZmx5L3JlYWN0 LWNvcmUiOwotIGltcG9ydCB7Ci0rICAgIEFycm93UmlnaHRJY29uLAotKyAgICBDaGVja0NpcmNs ZUljb24sCi0gICAgIENvcHlJY29uLAotICAgICBPdXRsaW5lZFF1ZXN0aW9uQ2lyY2xlSWNvbiwK LSAgICAgRG93bmxvYWRJY29uLAotKyAgICBTZXJ2ZXJJY29uCi0gfSBmcm9tICdAcGF0dGVybmZs eS9yZWFjdC1pY29ucyc7Ci0gaW1wb3J0IFByb3BUeXBlcyBmcm9tICJwcm9wLXR5cGVzIjsKLSBp bXBvcnQgeyBnZXRfZGF0ZV9zdHJpbmcgfSBmcm9tICIuLi90b29scy5qc3giOwotQEAgLTcxLDYg Kzc5LDE5IEBAIGNvbnN0IE1BWF9SRVBPUlRfSlNPTl9TSVpFID0gNjQgKiAxMDI0ICogMTAyNDsg Ly8gNjQgTWlCCi0gY29uc3QgTUFYX0JJTkFSWV9SRUFEX1NJWkUgPSA2NCAqIDEwMjQgKiAxMDI0 OyAvLyA2NCBNaUIKLSBjb25zdCBDU1ZfUFJFVklFV19MSU5FUyA9IDIwOwotIAotK2NvbnN0IGZv cm1hdExhZ1NlY29uZHMgPSAoc2Vjb25kcywgcHJlY2lzaW9uID0gMykgPT4gewotKyAgICBpZiAo c2Vjb25kcyA9PT0gdW5kZWZpbmVkIHx8IHNlY29uZHMgPT09IG51bGwpIHsKLSsgICAgICAgIHJl dHVybiBudWxsOwotKyAgICB9Ci0rICAgIGlmIChzZWNvbmRzID49IDM2MDApIHsKLSsgICAgICAg IHJldHVybiBgJHsoc2Vjb25kcyAvIDM2MDApLnRvRml4ZWQocHJlY2lzaW9uKX1oYDsKLSsgICAg fQotKyAgICBpZiAoc2Vjb25kcyA+PSA2MCkgewotKyAgICAgICAgcmV0dXJuIGAkeyhzZWNvbmRz IC8gNjApLnRvRml4ZWQocHJlY2lzaW9uKX1tYDsKLSsgICAgfQotKyAgICByZXR1cm4gYCR7c2Vj b25kcy50b0ZpeGVkKHByZWNpc2lvbil9c2A7Ci0rfTsKLSsKLSBjbGFzcyBUYXNrTG9nTW9kYWwg ZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewotICAgICByZW5kZXIoKSB7Ci0gICAgICAgICBjb25z dCB7Ci1AQCAtMTE2OCw2ICsxMTg5LDEzIEBAIGNsYXNzIFNjYXR0ZXJMaW5lQ2hhcnQgZXh0ZW5k cyBSZWFjdC5QdXJlQ29tcG9uZW50IHsKLSAgICAgICAgICAgICB9LCAyNTApOwotICAgICAgICAg fTsKLSAgICAgICAgIHRoaXMudG9nZ2xlTGVnZW5kSXRlbSA9IHRoaXMudG9nZ2xlTGVnZW5kSXRl bS5iaW5kKHRoaXMpOwotKyAgICAgICAgdGhpcy5oYW5kbGVQb2ludENsaWNrID0gdGhpcy5oYW5k bGVQb2ludENsaWNrLmJpbmQodGhpcyk7Ci0rICAgIH0KLSsKLSsgICAgaGFuZGxlUG9pbnRDbGlj ayhkYXR1bSwgc2VyaWVzSW5kZXgpIHsKLSsgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUG9pbnRD bGljayAmJiBkYXR1bS5jc25JZCkgewotKyAgICAgICAgICAgIHRoaXMucHJvcHMub25Qb2ludENs aWNrKGRhdHVtKTsKLSsgICAgICAgIH0KLSAgICAgfQotIAotICAgICBjb21wb25lbnREaWRNb3Vu dCgpIHsKLUBAIC0xMjY3LDE1ICsxMjk1LDcgQEAgY2xhc3MgU2NhdHRlckxpbmVDaGFydCBleHRl bmRzIFJlYWN0LlB1cmVDb21wb25lbnQgewotICAgICAgICAgY29uc3QgeyBzZXJpZXMsIHlEb21h aW4gfSA9IHRoaXMuX2dldFNlcmllc1NuYXBzaG90KCk7Ci0gCi0gICAgICAgICAvLyBIZWxwZXIg ZnVuY3Rpb24gdG8gZm9ybWF0IHRpbWUgdmFsdWVzCi0tICAgICAgICBjb25zdCBmb3JtYXRUaW1l VmFsdWUgPSAoc2Vjb25kcykgPT4gewotLSAgICAgICAgICAgIGlmIChzZWNvbmRzID49IDM2MDAp IHsKLS0gICAgICAgICAgICAgICAgcmV0dXJuIGAkeyhzZWNvbmRzIC8gMzYwMCkudG9GaXhlZCgz KX1oYDsKLS0gICAgICAgICAgICB9IGVsc2UgaWYgKHNlY29uZHMgPj0gNjApIHsKLS0gICAgICAg ICAgICAgICAgcmV0dXJuIGAkeyhzZWNvbmRzIC8gNjApLnRvRml4ZWQoMyl9bWA7Ci0tICAgICAg ICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgcmV0dXJuIGAke3NlY29uZHMudG9GaXhl ZCgzKX1zYDsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICB9OwotKyAgICAgICAgY29uc3QgZm9y bWF0VGltZVZhbHVlID0gKHNlY29uZHMpID0+IGZvcm1hdExhZ1NlY29uZHMoc2Vjb25kcywgMyk7 Ci0gCi0gICAgICAgICAvLyBQcm9jZXNzIHRvb2x0aXAgSFRNTCB0YWdzCi0gICAgICAgICBjb25z dCBmb3JtYXRUb29sdGlwID0gKGRhdHVtKSA9PiB7Ci1AQCAtMTMwOCwxMyArMTMyOCwzNSBAQCBj bGFzcyBTY2F0dGVyTGluZUNoYXJ0IGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudCB7Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHM9eyh7IGRhdHVtIH0pID0+IGZvcm1h dFRvb2x0aXAoZGF0dW0pfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Ry YWluVG9WaXNpYmxlQXJlYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxD b21wb25lbnQ9ewotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGFydFRv b2x0aXAKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAi MTJweCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRk aW5nOiAxMCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdo aXRlU3BhY2U6ICJwcmUtbGluZSIgLy8gSW1wb3J0YW50IGZvciBuZXdsaW5lcwotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fQotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hh cnRUb29sdGlwCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50YXRp b249eyh7IGRhdHVtIH0pID0+IHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLy8gUG9zaXRpb24gdG9vbHRpcCBiZWxvdyBmb3IgaGlnaCBwb2ludHMsIGFib3ZlIGZv ciBsb3cgcG9pbnRzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IFRoaXMgcHJldmVudHMgdGhlIHRvb2x0aXAgZnJvbSBibG9ja2luZyBjbGlja3Mgb24gcG9pbnRz IG5lYXIgdGhlIHRvcAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCB5TWF4ID0geURvbWFpbi5tYXg7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHlNaW4gPSB5RG9tYWluLm1pbjsKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgeVJhbmdlID0geU1heCAtIHlNaW47Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRocmVzaG9sZCA9IHlNaW4g KyAoeVJhbmdlICogMC42KTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIGRhdHVtLnkgPiB0aHJlc2hvbGQgPyAiYm90dG9tIiA6ICJ0b3AiOwotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3R5bGU9e3sKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZm9udFNpemU6ICIxMnB4IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFkZGluZzogMTAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHdoaXRlU3BhY2U6ICJwcmUtbGluZSIsIC8vIEltcG9ydGFudCBmb3IgbmV3bGlu ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50 czogIm5vbmUiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0KLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbHlvdXRTdHlsZT17ewotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyRXZlbnRzOiAibm9uZSIKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fQotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGR4PXswfQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGR5PXsoeyBkYXR1bSB9KSA9PiB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8vIEFkZCBleHRyYSBvZmZzZXQgdG8ga2VlcCB0b29sdGlwIGF3YXkgZnJv bSB0aGUgcG9pbnQKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgeU1heCA9IHlEb21haW4ubWF4OwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB5TWluID0geURvbWFpbi5taW47Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHlSYW5nZSA9IHlNYXggLSB5TWluOwotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0aHJlc2hvbGQgPSB5TWluICsg KHlSYW5nZSAqIDAuNik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiBkYXR1bS55ID4gdGhyZXNob2xkID8gMTAgOiAtMTA7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfX0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgfQotQEAgLTE0MTAsNiAr MTQ1Miw3IEBAIGNsYXNzIFNjYXR0ZXJMaW5lQ2hhcnQgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9u ZW50IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmhp ZGRlblNlcmllc1tpZHhdKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNDbGlja0hhbmRsZXIgPSAhIXRoaXMu cHJvcHMub25Qb2ludENsaWNrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hhcnRTY2F0dGVy Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17YHNjYXR0ZXIt JHtpZHh9YH0KLUBAIC0xNDE3LDkgKzE0NjAsMzkgQEAgY2xhc3MgU2NhdHRlckxpbmVDaGFydCBl eHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhPXtzLmRhdGFwb2ludHN9Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhOiB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmlsbDogcy5jb2xvcgotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6IHMuY29sb3IsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yOiBoYXNDbGlja0hhbmRsZXIg PyAncG9pbnRlcicgOiAnZGVmYXVsdCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fX0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzPXtoYXND bGlja0hhbmRsZXIgPyBbewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGFyZ2V0OiAiZGF0YSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBldmVudEhhbmRsZXJzOiB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb25DbGljazogKCkgPT4gW3sKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiAiZGF0YSIsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9u OiAocHJvcHMpID0+IHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlUG9pbnRDbGljayhwcm9wcy5kYXR1bSwgaWR4KTsK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiBudWxsOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfV0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb25Nb3VzZU92ZXI6ICgpID0+IFt7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDogImRhdGEiLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRhdGlvbjogKHByb3BzKSA9PiAo ewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3R5bGU6IHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAuLi5wcm9wcy5zdHlsZSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBzLmNvbG9yLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGN1cnNvcjogJ3BvaW50ZXInLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZTogJ3Zh cigtLXBmLXY1LWdsb2JhbC0tYWN0aXZlLWNvbG9yLS0xMDAsICMwMDY2Y2MpJywKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByOiA2 Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0pCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0s Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Nb3Vz ZU91dDogKCkgPT4gW3sKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGFyZ2V0OiAiZGF0YSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG11dGF0aW9uOiAoKSA9PiBudWxsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0KLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfV0gOiB1bmRlZmluZWR9Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfQotQEAgLTE1MDEsMTcgKzE1NzQsMzIwIEBA IGNsYXNzIFNjYXR0ZXJMaW5lQ2hhcnQgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50IHsKLSAg ICAgfQotIH0KLSAKLSsvKioKLSsgKiBDU05EZXRhaWxNb2RhbCAtIERpc3BsYXlzIGRldGFpbGVk IENTTiBwcm9wYWdhdGlvbiBwYXRoIGluZm9ybWF0aW9uCi0rICogU2hvd3MgdGhlIGhvcC1ieS1o b3AgdGltaW5nIG9mIGhvdyBhIGNoYW5nZSBwcm9wYWdhdGVkIHRocm91Z2ggdGhlIHJlcGxpY2F0 aW9uIHRvcG9sb2d5Ci0rICovCi0rY2xhc3MgQ1NORGV0YWlsTW9kYWwgZXh0ZW5kcyBSZWFjdC5D b21wb25lbnQgewotKyAgICBjb25zdHJ1Y3Rvcihwcm9wcykgewotKyAgICAgICAgc3VwZXIocHJv cHMpOwotKyAgICAgICAgdGhpcy5mb3JtYXRUaW1lc3RhbXAgPSB0aGlzLmZvcm1hdFRpbWVzdGFt cC5iaW5kKHRoaXMpOwotKyAgICAgICAgdGhpcy5mb3JtYXRMYWcgPSB0aGlzLmZvcm1hdExhZy5i aW5kKHRoaXMpOwotKyAgICB9Ci0rCi0rICAgIGZvcm1hdFRpbWVzdGFtcChpc29TdHJpbmcpIHsK LSsgICAgICAgIGlmICghaXNvU3RyaW5nKSByZXR1cm4gXygiVW5rbm93biIpOwotKyAgICAgICAg dHJ5IHsKLSsgICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoaXNvU3RyaW5nKTsKLSsg ICAgICAgICAgICBpZiAoaXNOYU4oZGF0ZS5nZXRUaW1lKCkpKSB7Ci0rICAgICAgICAgICAgICAg IGNvbnNvbGUud2FybigiSW52YWxpZCB0aW1lc3RhbXAgZm9ybWF0OiIsIGlzb1N0cmluZyk7Ci0r ICAgICAgICAgICAgICAgIHJldHVybiBjb2NrcGl0LmZvcm1hdChfKCJJbnZhbGlkOiAkMCIpLCBp c29TdHJpbmcpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xv Y2FsZVN0cmluZyh1bmRlZmluZWQsIHsKLSsgICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMn LAotKyAgICAgICAgICAgICAgICBtb250aDogJzItZGlnaXQnLAotKyAgICAgICAgICAgICAgICBk YXk6ICcyLWRpZ2l0JywKLSsgICAgICAgICAgICAgICAgaG91cjogJzItZGlnaXQnLAotKyAgICAg ICAgICAgICAgICBtaW51dGU6ICcyLWRpZ2l0JywKLSsgICAgICAgICAgICAgICAgc2Vjb25kOiAn Mi1kaWdpdCcsCi0rICAgICAgICAgICAgICAgIGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDMsCi0r ICAgICAgICAgICAgICAgIGhvdXIxMjogZmFsc2UKLSsgICAgICAgICAgICB9KTsKLSsgICAgICAg IH0gY2F0Y2ggKGUpIHsKLSsgICAgICAgICAgICBjb25zb2xlLndhcm4oIkVycm9yIGZvcm1hdHRp bmcgdGltZXN0YW1wOiIsIGlzb1N0cmluZywgZSk7Ci0rICAgICAgICAgICAgcmV0dXJuIGNvY2tw aXQuZm9ybWF0KF8oIkludmFsaWQ6ICQwIiksIGlzb1N0cmluZyk7Ci0rICAgICAgICB9Ci0rICAg IH0KLSsKLSsgICAgZm9ybWF0TGFnKHNlY29uZHMpIHsKLSsgICAgICAgIHJldHVybiBmb3JtYXRM YWdTZWNvbmRzKHNlY29uZHMsIDMpIHx8IF8oIk4vQSIpOwotKyAgICB9Ci0rCi0rICAgIHJlbmRl cigpIHsKLSsgICAgICAgIGNvbnN0IHsgY3NuRGF0YSwgb25DbG9zZSB9ID0gdGhpcy5wcm9wczsK LSsKLSsgICAgICAgIGlmICghY3NuRGF0YSkgewotKyAgICAgICAgICAgIHJldHVybiBudWxsOwot KyAgICAgICAgfQotKwotKyAgICAgICAgY29uc3QgYXJyaXZhbHMgPSBjc25EYXRhLmFycml2YWxz IHx8IFtdOwotKyAgICAgICAgY29uc3QgcGF0aEpzb24gPSBKU09OLnN0cmluZ2lmeShjc25EYXRh LCBudWxsLCAyKTsKLSsKLSsgICAgICAgIHJldHVybiAoCi0rICAgICAgICAgICAgPE1vZGFsCi0r ICAgICAgICAgICAgICAgIHZhcmlhbnQ9e01vZGFsVmFyaWFudC5sYXJnZX0KLSsgICAgICAgICAg ICAgICAgdGl0bGU9e18oIkNTTiBQcm9wYWdhdGlvbiBEZXRhaWxzIil9Ci0rICAgICAgICAgICAg ICAgIGlzT3Blbj17ISFjc25EYXRhfQotKyAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3Nl fQotKyAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtfKCJDU04gcHJvcGFnYXRpb24gZGV0YWls cyIpfQotKyAgICAgICAgICAgICAgICBhY3Rpb25zPXtbCi0rICAgICAgICAgICAgICAgICAgICA8 QnV0dG9uIGtleT0iY2xvc2UiIHZhcmlhbnQ9InByaW1hcnkiIG9uQ2xpY2s9e29uQ2xvc2V9Pgot KyAgICAgICAgICAgICAgICAgICAgICAgIHtfKCJDbG9zZSIpfQotKyAgICAgICAgICAgICAgICAg ICAgPC9CdXR0b24+Ci0rICAgICAgICAgICAgICAgIF19Ci0rICAgICAgICAgICAgPgotKyAgICAg ICAgICAgICAgICAgICAgICAgIHsvKiBDU04gU3VtbWFyeSBJbmZvcm1hdGlvbiAqL30KLSsgICAg ICAgICAgICAgICAgICAgICAgICA8Q2FyZCBpc0ZsYXQgY2xhc3NOYW1lPSJkcy1tYXJnaW4tYm90 dG9tLW1kIj4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENhcmRCb2R5PgotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyaWQgaGFzR3V0dGVyPgotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxHcmlkSXRlbSBzcGFuPXs2fT4KLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uTGlzdCBpc0hvcml6b250 YWwgaXNDb21wYWN0PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPERlc2NyaXB0aW9uTGlzdEdyb3VwPgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbkxpc3RUZXJtPntfKCJDU04iKX08L0Rlc2Ny aXB0aW9uTGlzdFRlcm0+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPERlc2NyaXB0aW9uTGlzdERlc2NyaXB0aW9uPgotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2xpcGJvYXJkQ29weQotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFu dD17Q2xpcGJvYXJkQ29weVZhcmlhbnQuaW5saW5lfQotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3NuRGF0YS5jc259Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2xpcGJvYXJkQ29w eT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Rl c2NyaXB0aW9uTGlzdERlc2NyaXB0aW9uPgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPC9EZXNjcmlwdGlvbkxpc3RHcm91cD4KLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbkxpc3RHcm91cD4KLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb25M aXN0VGVybT57XygiRW50cnkgRE4iKX08L0Rlc2NyaXB0aW9uTGlzdFRlcm0+Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uTGlzdERl c2NyaXB0aW9uPgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8VG9vbHRpcCBjb250ZW50PXtjc25EYXRhLnRhcmdldERufT4KLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNz TmFtZT0icGYtdjUtdS10ZXh0LXRydW5jYXRlIiBzdHlsZT17eyBtYXhXaWR0aDogJzMwMHB4Jywg ZGlzcGxheTogJ2lubGluZS1ibG9jaycgfX0+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NzbkRhdGEudGFyZ2V0RG59Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Nw YW4+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDwvVG9vbHRpcD4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8L0Rlc2NyaXB0aW9uTGlzdERlc2NyaXB0aW9uPgotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPC9EZXNjcmlwdGlvbkxpc3RHcm91cD4KLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbkxpc3RHcm91 cD4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGVz Y3JpcHRpb25MaXN0VGVybT57XygiU3VmZml4Iil9PC9EZXNjcmlwdGlvbkxpc3RUZXJtPgotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlv bkxpc3REZXNjcmlwdGlvbj57Y3NuRGF0YS5zdWZmaXh9PC9EZXNjcmlwdGlvbkxpc3REZXNjcmlw dGlvbj4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRGVz Y3JpcHRpb25MaXN0R3JvdXA+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDwvRGVzY3JpcHRpb25MaXN0PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDwvR3JpZEl0ZW0+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdy aWRJdGVtIHNwYW49ezZ9PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8RGVzY3JpcHRpb25MaXN0IGlzSG9yaXpvbnRhbCBpc0NvbXBhY3Q+Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb25MaXN0R3JvdXA+Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0 aW9uTGlzdFRlcm0+e18oIk9yaWdpbiBTZXJ2ZXIiKX08L0Rlc2NyaXB0aW9uTGlzdFRlcm0+Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0 aW9uTGlzdERlc2NyaXB0aW9uPgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8TGFiZWwgY29sb3I9ImJsdWUiIGljb249ezxTZXJ2ZXJJY29uIC8+ fT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHtjc25EYXRhLm9yaWdpblNlcnZlcn0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPC9MYWJlbD4KLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Rlc2NyaXB0aW9uTGlzdERlc2NyaXB0aW9uPgot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9EZXNjcmlwdGlv bkxpc3RHcm91cD4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHtjc25EYXRhLm9yaWdpbkluY2x1ZGVkSW5BcnJpdmFscyA9PT0gZmFsc2UgJiYgKAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbkxp c3RHcm91cD4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPERlc2NyaXB0aW9uTGlzdFRlcm0+e18oIk9yaWdpbiBOb3RlIil9PC9EZXNjcmlwdGlv bkxpc3RUZXJtPgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8RGVzY3JpcHRpb25MaXN0RGVzY3JpcHRpb24+Ci0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBjb21wb25lbnQ9e1Rl eHRWYXJpYW50cy5zbWFsbH0gc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1wZi12NS1nbG9iYWwtLUNv bG9yLS0yMDApJyB9fT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7XygiT3JpZ2luIHNlcnZlciByZWNvcmQgaXMgb3V0c2lkZSB0 aGUgc2VsZWN0ZWQgdGltZSByYW5nZTsgZW50cnkgZGV0YWlscyByZWZsZWN0IHRoZSBlYXJsaWVz dCBhcnJpdmFsLiIpfQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPC9UZXh0PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8L0Rlc2NyaXB0aW9uTGlzdERlc2NyaXB0aW9uPgotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRGVzY3JpcHRpb25M aXN0R3JvdXA+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp fQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlc2NyaXB0 aW9uTGlzdEdyb3VwPgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxEZXNjcmlwdGlvbkxpc3RUZXJtPntfKCJUb3RhbCBMYWciKX08L0Rlc2NyaXB0aW9u TGlzdFRlcm0+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPERlc2NyaXB0aW9uTGlzdERlc2NyaXB0aW9uPgotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPnt0aGlzLmZvcm1hdExhZyhjc25E YXRhLmdsb2JhbExhZyl9PC9zdHJvbmc+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPC9EZXNjcmlwdGlvbkxpc3REZXNjcmlwdGlvbj4KLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRGVzY3JpcHRpb25MaXN0R3Jv dXA+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGVzY3Jp cHRpb25MaXN0R3JvdXA+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPERlc2NyaXB0aW9uTGlzdFRlcm0+e18oIlNlcnZlcnMgUmVhY2hlZCIpfTwvRGVz Y3JpcHRpb25MaXN0VGVybT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8RGVzY3JpcHRpb25MaXN0RGVzY3JpcHRpb24+Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtjc25EYXRhLnNlcnZlckNvdW50 fQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7 Y3NuRGF0YS5yZXBsaWNhdGVkVG9BbGwgJiYgKAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhYmVsIGNvbG9yPSJncmVlbiIgaWNvbj17 PENoZWNrQ2lyY2xlSWNvbiAvPn0gY2xhc3NOYW1lPSJkcy1sZWZ0LW1hcmdpbiI+Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge18o IkFsbCIpfQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPC9MYWJlbD4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKX0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8L0Rlc2NyaXB0aW9uTGlzdERlc2NyaXB0aW9uPgotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9EZXNjcmlwdGlvbkxpc3RHcm91cD4KLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9EZXNjcmlwdGlvbkxpc3Q+ Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9HcmlkSXRlbT4KLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZD4KLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPC9DYXJkQm9keT4KLSsgICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmQ+Ci0r Ci0rICAgICAgICAgICAgICAgICAgICAgICAgey8qIEFycml2YWwgVGltZWxpbmUgVmlzdWFsaXph dGlvbiAqL30KLSsgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZCBpc0ZsYXQgY2xhc3NOYW1l PSJkcy1tYXJnaW4tYm90dG9tLW1kIj4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPENh cmRUaXRsZT57XygiQXJyaXZhbCBUaW1lbGluZSIpfTwvQ2FyZFRpdGxlPgotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8Q2FyZEJvZHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8VGV4dAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVu dD17VGV4dFZhcmlhbnRzLnNtYWxsfQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNsYXNzTmFtZT0iZHMtbWFyZ2luLWJvdHRvbSIKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXBmLXY1LWdsb2JhbC0tQ29sb3It LTIwMCknLCBmb250U3R5bGU6ICdpdGFsaWMnIH19Ci0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge18oIk5vdGU6 IFNob3dzIGFycml2YWwgb3JkZXIgYnkgdGltZS4gQWN0dWFsIHJlcGxpY2F0aW9uIHRvcG9sb2d5 IG1heSBkaWZmZXIgaW4gZmFuLW91dCBjb25maWd1cmF0aW9ucy4iKX0KLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDwvVGV4dD4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxkaXYKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPSJsaXN0 IgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e18oIkNT TiBwcm9wYWdhdGlvbiB0aW1lbGluZSIpfQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0eWxlPXt7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRpc3BsYXk6ICdmbGV4JywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZmxleFdyYXA6ICd3cmFwJywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGdhcDogJ3ZhcigtLXBmLXY1LWdsb2JhbC0tc3BhY2VyLS1zbSknLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAndmFyKC0tcGYt djUtZ2xvYmFsLS1zcGFjZXItLXNtKScKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9fQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHthcnJpdmFscy5tYXAoKGFycml2YWwsIGlkeCkgPT4g KAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVhY3QuRnJhZ21l bnQga2V5PXtpZHh9PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgey8qIFNlcnZlciBOb2RlICovfQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGRpdgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJvbGU9Imxpc3RpdGVtIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2NvY2twaXQuZm9ybWF0KAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJpdmFsLmlzT3Jp Z2luCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA/IF8oIk9yaWdpbiBzZXJ2ZXI6ICQwIikKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogXygiU2VydmVyICQwLCBkZWxheTogJDEi KSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YXJyaXZhbC5zZXJ2ZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFycml2YWwuaXNPcmlnaW4gPyAiIiA6IHRoaXMuZm9ybWF0TGFnKGFycml2 YWwucmVsYXRpdmVEZWxheSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApfQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0eWxlPXt7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXIn LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRp bmc6ICd2YXIoLS1wZi12NS1nbG9iYWwtLXNwYWNlci0tc20pJywKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGFycml2YWwu aXNPcmlnaW4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPyAndmFyKC0tcGYtdjUtZ2xvYmFsLS1wYWxldHRlLS1ibHVlLTUwLCAjZTdmMWZhKScK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAn dmFyKC0tcGYtdjUtZ2xvYmFsLS1CYWNrZ3JvdW5kQ29sb3ItLTIwMCwgI2YwZjBmMCknLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1 czogJ3ZhcigtLXBmLXY1LWdsb2JhbC0tQm9yZGVyUmFkaXVzLS1zbSknLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogYXJyaXZhbC5pc09y aWdpbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA/ICcycHggc29saWQgdmFyKC0tcGYtdjUtZ2xvYmFsLS1wcmltYXJ5LWNvbG9yLS0xMDAsICMw MDY2Y2MpJwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA6ICcxcHggc29saWQgdmFyKC0tcGYtdjUtZ2xvYmFsLS1Cb3JkZXJDb2xvci0tMTAwLCAj ZDJkMmQyKScsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWluV2lkdGg6ICcxMjBweCcKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH19PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxUZXh0IGNvbXBvbmVudD17VGV4dFZhcmlhbnRzLnNtYWxsfSBzdHlsZT17eyBmb250 V2VpZ2h0OiAnYm9sZCcgfX0+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHthcnJpdmFsLnNlcnZlcn0KLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgY29tcG9uZW50PXtUZXh0VmFyaWFudHMu c21hbGx9IHN0eWxlPXt7IGZvbnRTaXplOiAnMC43NXJlbScsIGNvbG9yOiAndmFyKC0tcGYtdjUt Z2xvYmFsLS1Db2xvci0tMjAwKScgfX0+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLmZvcm1hdFRpbWVzdGFtcChhcnJpdmFsLnRpbWVz dGFtcCl9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PC9UZXh0PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHthcnJpdmFsLmlzT3JpZ2luICYmICgKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPExhYmVsIGNvbG9yPSJibHVlIiBpc0NvbXBhY3Qgc3R5bGU9 e3sgbWFyZ2luVG9wOiAnNHB4JyB9fT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHtfKCJPcmlnaW4iKX0KLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYWJlbD4KLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfQotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHshYXJyaXZhbC5pc09yaWdpbiAmJiAo Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxU ZXh0IGNvbXBvbmVudD17VGV4dFZhcmlhbnRzLnNtYWxsfSBzdHlsZT17eyBtYXJnaW5Ub3A6ICc0 cHgnLCBjb2xvcjogJ3ZhcigtLXBmLXY1LWdsb2JhbC0tc3VjY2Vzcy1jb2xvci0tMTAwKScgfX0+ Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAre3RoaXMuZm9ybWF0TGFnKGFycml2YWwucmVsYXRpdmVEZWxheSl9Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD4KLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfQotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0rCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LyogQXJyb3cgYmV0d2VlbiBub2RlcyAq L30KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpZHggPCBh cnJpdmFscy5sZW5ndGggLSAxICYmICgKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8ZGl2Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJvbGU9InByZXNlbnRhdGlvbiIKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49InRydWUiCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxl PXt7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkaXNwbGF5OiAnZmxleCcsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJywKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduSXRl bXM6ICdjZW50ZXInLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGFkZGluZzogJzAgdmFyKC0tcGYtdjUtZ2xvYmFsLS1zcGFjZXItLXhz KScKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fX0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJv d1JpZ2h0SWNvbiBzdHlsZT17eyBjb2xvcjogJ3ZhcigtLXBmLXY1LWdsb2JhbC0tQ29sb3ItLTIw MCknIH19IC8+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxUZXh0IGNvbXBvbmVudD17VGV4dFZhcmlhbnRzLnNtYWxsfSBzdHlsZT17ewotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9u dFNpemU6ICcwLjdyZW0nLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29sb3I6ICd2YXIoLS1wZi12NS1nbG9iYWwtLUNvbG9yLS0yMDAp JywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH19PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAge2Fycml2YWxzW2lkeCArIDFdLmhvcExhZyAhPT0g dW5kZWZpbmVkCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPyB0aGlzLmZvcm1hdExhZyhhcnJpdmFsc1tpZHggKyAxXS5ob3BMYWcp Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOiAnJ30KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPC9UZXh0PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDwvZGl2PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKX0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9SZWFj dC5GcmFnbWVudD4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKX0KLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8L0NhcmRCb2R5PgotKyAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZD4K LSsKLSsgICAgICAgICAgICAgICAgICAgICAgICB7LyogRGV0YWlsZWQgQXJyaXZhbHMgVGFibGUg Ki99Ci0rICAgICAgICAgICAgICAgICAgICAgICAgPENhcmQgaXNGbGF0IGNsYXNzTmFtZT0iZHMt bWFyZ2luLWJvdHRvbS1tZCI+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDYXJkVGl0 bGU+e18oIkFycml2YWwgRGV0YWlscyIpfTwvQ2FyZFRpdGxlPgotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8Q2FyZEJvZHk+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 dGFibGUgY2xhc3NOYW1lPSJwZi12NS1jLXRhYmxlIHBmLW0tY29tcGFjdCIgcm9sZT0iZ3JpZCI+ Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+Ci0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e18oIlNlcnZlciIpfTwvdGg+Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e18oIkFycml2YWwgVGlt ZSIpfTwvdGg+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 dGg+e18oIkhvcCBMYWciKX08L3RoPgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHRoPntfKCJDdW11bGF0aXZlIERlbGF5Iil9PC90aD4KLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD57XygiRHVyYXRpb24iKX08L3Ro PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHRib2R5PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7YXJyaXZhbHMubWFwKChhcnJpdmFsLCBpZHgpID0+ICgKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBrZXk9e2lkeH0+Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7YXJyaXZhbC5z ZXJ2ZXJ9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHthcnJpdmFsLmlzT3JpZ2luICYmICgKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGNvbG9yOiAndmFyKC0t cGYtdjUtZ2xvYmFsLS1wcmltYXJ5LWNvbG9yLS0xMDApJywgbWFyZ2luTGVmdDogJ3ZhcigtLXBm LXY1LWdsb2JhbC0tc3BhY2VyLS14cyknIH19PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh7XygiT3JpZ2luIil9KQotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFu PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp fQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt0 aGlzLmZvcm1hdFRpbWVzdGFtcChhcnJpdmFsLnRpbWVzdGFtcCl9PC90ZD4KLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHthcnJpdmFsLmlzT3JpZ2lu Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA/IDxlbT57XygiT3JpZ2luIil9PC9lbT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5mb3JtYXRMYWcoYXJyaXZhbC5ob3BM YWcpfQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv dGQ+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRk Pnt0aGlzLmZvcm1hdExhZyhhcnJpdmFsLnJlbGF0aXZlRGVsYXkpfTwvdGQ+Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnthcnJpdmFsLmR1cmF0 aW9uID8gdGhpcy5mb3JtYXRMYWcoYXJyaXZhbC5kdXJhdGlvbikgOiBfKCJOL0EiKX08L3RkPgot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDwvdGFibGU+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZEJvZHk+ Ci0rICAgICAgICAgICAgICAgICAgICAgICAgPC9DYXJkPgotKwotKyAgICAgICAgICAgICAgICAg ICAgICAgIHsvKiBDb3B5IEFjdGlvbnMgKi99Ci0rICAgICAgICAgICAgICAgICAgICAgICAgPFNw bGl0IGhhc0d1dHRlcj4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNwbGl0SXRlbT4K LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDbGlwYm9hcmRDb3B5Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD17Q2xpcGJvYXJkQ29weVZhcmlh bnQuZXhwYW5zaW9ufQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRXhw YW5kZWQ9e2ZhbHNlfQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ29k ZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUmVhZE9ubHkKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlclRpcD17XygiQ29weSBmdWxsIHBh dGggSlNPTiIpfQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrVGlw PXtfKCJDb3BpZWQhIil9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3BhdGhKc29ufQotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPC9DbGlwYm9hcmRDb3B5PgotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8L1NwbGl0SXRlbT4KLSsgICAgICAgICAgICAgICAgICAgICAgICA8L1NwbGl0 PgotKyAgICAgICAgICAgIDwvTW9kYWw+Ci0rICAgICAgICApOwotKyAgICB9Ci0rfQotKwotK0NT TkRldGFpbE1vZGFsLnByb3BUeXBlcyA9IHsKLSsgICAgY3NuRGF0YTogUHJvcFR5cGVzLm9iamVj dCwKLSsgICAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZAotK307Ci0rCi0rQ1NO RGV0YWlsTW9kYWwuZGVmYXVsdFByb3BzID0gewotKyAgICBjc25EYXRhOiBudWxsCi0rfTsKLSsK LSBjbGFzcyBMYWdSZXBvcnRNb2RhbCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7Ci0gICAgIGNv bnN0cnVjdG9yKHByb3BzKSB7Ci0gICAgICAgICBzdXBlcihwcm9wcyk7Ci0gCi0gICAgICAgICB0 aGlzLnN0YXRlID0gewotLSAgICAgICAgICAgIGFjdGl2ZVRhYktleTogMCwgLy8gMCA9IFN1bW1h cnksIDEgPSBDaGFydHMsIDIgPSBQTkcgUmVwb3J0LCAzID0gQ1NWIFJlcG9ydCwgNCA9IFJlcG9y dCBGaWxlcwotKyAgICAgICAgICAgIGFjdGl2ZVRhYktleTogMCwKLSAgICAgICAgICAgICAuLi50 aGlzLl9mcmVzaFJlcG9ydFN0YXRlKCksCi0gICAgICAgICAgICAgbG9hZGluZ1N1bW1hcnk6IGZh bHNlLAotICAgICAgICAgICAgIGxvYWRpbmdKc29uOiBmYWxzZSwKLSAgICAgICAgICAgICBsb2Fk aW5nQ3N2OiBmYWxzZSwKLS0gICAgICAgICAgICBsb2FkaW5nUG5nOiBmYWxzZQotKyAgICAgICAg ICAgIGxvYWRpbmdQbmc6IGZhbHNlLAotKyAgICAgICAgICAgIHNlbGVjdGVkQ3NuSWQ6IG51bGwK LSAgICAgICAgIH07Ci0gCi0gICAgICAgICB0aGlzLmhhbmRsZVRhYkNsaWNrID0gdGhpcy5oYW5k bGVUYWJDbGljay5iaW5kKHRoaXMpOwotQEAgLTE1MjQsNiArMTkwMCw4IEBAIGNsYXNzIExhZ1Jl cG9ydE1vZGFsIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKLSAgICAgICAgIHRoaXMucmVuZGVy UG5nVGFiID0gdGhpcy5yZW5kZXJQbmdUYWIuYmluZCh0aGlzKTsKLSAgICAgICAgIHRoaXMucmVu ZGVyQ3N2VGFiID0gdGhpcy5yZW5kZXJDc3ZUYWIuYmluZCh0aGlzKTsKLSAgICAgICAgIHRoaXMu cmVuZGVyUmVwb3J0RmlsZXNUYWIgPSB0aGlzLnJlbmRlclJlcG9ydEZpbGVzVGFiLmJpbmQodGhp cyk7Ci0rICAgICAgICB0aGlzLmhhbmRsZUNzblBvaW50Q2xpY2sgPSB0aGlzLmhhbmRsZUNzblBv aW50Q2xpY2suYmluZCh0aGlzKTsKLSsgICAgICAgIHRoaXMuaGFuZGxlQ2xvc2VDc25EZXRhaWxz ID0gdGhpcy5oYW5kbGVDbG9zZUNzbkRldGFpbHMuYmluZCh0aGlzKTsKLSAKLSAgICAgICAgIHRo aXMuX2FjdGl2ZUxvYWRUb2tlbiA9IDA7Ci0gICAgICAgICB0aGlzLl9pc01vdW50ZWQgPSBmYWxz ZTsKLUBAIC0xNTQzLDEwICsxOTIxLDI2IEBAIGNsYXNzIExhZ1JlcG9ydE1vZGFsIGV4dGVuZHMg UmVhY3QuQ29tcG9uZW50IHsKLSAgICAgICAgICAgICBzdW1tYXJ5OiBudWxsLAotICAgICAgICAg ICAgIHN1ZmZpeFN0YXRzOiB7fSwKLSAgICAgICAgICAgICBjbGllbnRTYW1wbGluZ05vdGljZTog bnVsbCwKLSsgICAgICAgICAgICBzZWxlY3RlZENzbklkOiBudWxsLAotICAgICAgICAgICAgIC4u Lm92ZXJyaWRlcwotICAgICAgICAgfTsKLSAgICAgfQotIAotKyAgICBoYW5kbGVDc25Qb2ludENs aWNrKGRhdHVtKSB7Ci0rICAgICAgICBpZiAoZGF0dW0gJiYgZGF0dW0uY3NuSWQpIHsKLSsgICAg ICAgICAgICBjb25zdCB7IGpzb25EYXRhIH0gPSB0aGlzLnN0YXRlOwotKyAgICAgICAgICAgIGlm IChqc29uRGF0YSAmJiBqc29uRGF0YS5jc25EZXRhaWxzICYmIGpzb25EYXRhLmNzbkRldGFpbHNb ZGF0dW0uY3NuSWRdKSB7Ci0rICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzZWxlY3Rl ZENzbklkOiBkYXR1bS5jc25JZCB9KTsKLSsgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAg ICAgICAgICBjb25zb2xlLndhcm4oIkNTTiBkZXRhaWxzIG5vdCBhdmFpbGFibGUgZm9yOiIsIGRh dHVtLmNzbklkKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgICAg aGFuZGxlQ2xvc2VDc25EZXRhaWxzKCkgewotKyAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNlbGVj dGVkQ3NuSWQ6IG51bGwgfSk7Ci0rICAgIH0KLSsKLSAgICAgY29tcG9uZW50RGlkTW91bnQoKSB7 Ci0gICAgICAgICB0aGlzLl9pc01vdW50ZWQgPSB0cnVlOwotICAgICAgICAgdGhpcy5sb2FkRGF0 YSgpOwotQEAgLTIxMTcsNyArMjUxMSw3IEBAIGNsYXNzIExhZ1JlcG9ydE1vZGFsIGV4dGVuZHMg UmVhY3QuQ29tcG9uZW50IHsKLSAKLSAgICAgcmVuZGVyQ2hhcnRzVGFiKCkgewotICAgICAgICAg Y29uc3QgeyByZXBvcnRVcmxzIH0gPSB0aGlzLnByb3BzOwotLSAgICAgICAgY29uc3QgeyBsb2Fk aW5nSnNvbiwganNvbkRhdGEsIGVycm9yLCBjbGllbnRTYW1wbGluZ05vdGljZSB9ID0gdGhpcy5z dGF0ZTsKLSsgICAgICAgIGNvbnN0IHsgbG9hZGluZ0pzb24sIGpzb25EYXRhLCBlcnJvciwgY2xp ZW50U2FtcGxpbmdOb3RpY2UsIHNlbGVjdGVkQ3NuSWQgfSA9IHRoaXMuc3RhdGU7Ci0gCi0gICAg ICAgICBpZiAobG9hZGluZ0pzb24pIHsKLSAgICAgICAgICAgICByZXR1cm4gKAotQEAgLTIxNzAs NiArMjU2NCwxMyBAQCBjbGFzcyBMYWdSZXBvcnRNb2RhbCBleHRlbmRzIFJlYWN0LkNvbXBvbmVu dCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uRGF0YS5ob3BMYWdzLnNlcmllcyAm JgotICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbkRhdGEuaG9wTGFncy5zZXJpZXMubGVu Z3RoID4gMDsKLSAKLSsgICAgICAgIGNvbnN0IGhhc0NzbkRldGFpbHMgPSBqc29uRGF0YSAmJiBq c29uRGF0YS5jc25EZXRhaWxzICYmCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmpl Y3Qua2V5cyhqc29uRGF0YS5jc25EZXRhaWxzKS5sZW5ndGggPiAwOwotKwotKyAgICAgICAgY29u c3Qgc2VsZWN0ZWRDc25EYXRhID0gc2VsZWN0ZWRDc25JZCAmJiBoYXNDc25EZXRhaWxzCi0rICAg ICAgICAgICAgPyBqc29uRGF0YS5jc25EZXRhaWxzW3NlbGVjdGVkQ3NuSWRdCi0rICAgICAgICAg ICAgOiBudWxsOwotKwotICAgICAgICAgaWYgKCFqc29uRGF0YSB8fCAoIWhhc1JlcGxpY2F0aW9u TGFncyAmJiAhaGFzSG9wTGFncykpIHsKLSAgICAgICAgICAgICByZXR1cm4gKAotICAgICAgICAg ICAgICAgICA8RW1wdHlTdGF0ZT4KLUBAIC0yMjAxLDYgKzI2MDIsMTUgQEAgY2xhc3MgTGFnUmVw b3J0TW9kYWwgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7Y2xpZW50U2FtcGxpbmdOb3RpY2V9Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPC9BbGVydD4KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICl9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aGFzQ3NuRGV0 YWlscyAmJiAoCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50PXtUZXh0VmFy aWFudHMuc21hbGx9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNs YXNzTmFtZT0iZHMtbWFyZ2luLWJvdHRvbSIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3R5bGU9e3sgY29sb3I6ICd2YXIoLS1wZi12NS1nbG9iYWwtLUNvbG9yLS0y MDApJywgZm9udFN0eWxlOiAnaXRhbGljJyB9fQotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge18o IlRpcDogQ2xpY2sgb24gYW55IGNoYXJ0IHBvaW50IHRvIHZpZXcgZGV0YWlsZWQgQ1NOIHByb3Bh Z2F0aW9uIHBhdGguIil9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9U ZXh0PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX0KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHtoYXNSZXBsaWNhdGlvbkxhZ3MgJiYgKAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSJkcy1tYXJnaW4tYm90dG9t Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRpdGxlIGhlYWRp bmdMZXZlbD0iaDMiPgotQEAgLTIyMzEsNiArMjY0MSw3IEBAIGNsYXNzIExhZ1JlcG9ydE1vZGFs IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHhBeGlzTGFiZWw9eyhqc29uRGF0YS5yZXBsaWNhdGlvbkxhZ3MueEF4 aXNMYWJlbCB8fCAiIikucmVwbGFjZSgvXHMqVGltZVxzKi9nLCAiIil9Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5QXhpc0xhYmVsPXtqc29uRGF0YS5yZXBs aWNhdGlvbkxhZ3MueUF4aXNMYWJlbCB8fCBfKCJMYWcgVGltZSAoc2Vjb25kcykiKX0KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRTaG93TGVnZW5k PXt0cnVlfQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Q b2ludENsaWNrPXtoYXNDc25EZXRhaWxzID8gdGhpcy5oYW5kbGVDc25Qb2ludENsaWNrIDogdW5k ZWZpbmVkfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKX0KLUBAIC0yMjUwLDkgKzI2NjEsMTcgQEAgY2xhc3MgTGFnUmVw b3J0TW9kYWwgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgeEF4aXNMYWJlbD17KGpzb25EYXRhLmhvcExhZ3MueEF4 aXNMYWJlbCB8fCAiIikucmVwbGFjZSgvXHMqVGltZVxzKi9nLCAiIil9Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5QXhpc0xhYmVsPXtqc29uRGF0YS5ob3BM YWdzLnlBeGlzTGFiZWwgfHwgXygiSG9wIExhZyBUaW1lIChzZWNvbmRzKSIpfQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFNob3dMZWdlbmQ9e2Zh bHNlfQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Qb2lu dENsaWNrPXtoYXNDc25EZXRhaWxzID8gdGhpcy5oYW5kbGVDc25Qb2ludENsaWNrIDogdW5kZWZp bmVkfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKX0KLSsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsv KiBDU04gRGV0YWlsIFBhbmVsIC0gc2hvd24gd2hlbiBhIHBvaW50IGlzIGNsaWNrZWQgKi99Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q1NORGV0YWlsTW9kYWwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc25EYXRhPXtzZWxlY3RlZENzbkRhdGF9Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17dGhpcy5oYW5kbGVD bG9zZUNzbkRldGFpbHN9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPgotKwot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9ImRzLW1hcmdp bi10b3AiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD0ic2Vjb25kYXJ5 IgotQEAgLTI4NzYsNiArMzI5NSwyOCBAQCBjbGFzcyBDaG9vc2VMYWdSZXBvcnRNb2RhbCBleHRl bmRzIFJlYWN0LkNvbXBvbmVudCB7Ci0gfQotIAotIC8vIFByb3RvdHlwZXMgYW5kIGRlZmF1bHRQ cm9wcwotK1NjYXR0ZXJMaW5lQ2hhcnQucHJvcFR5cGVzID0gewotKyAgICBjaGFydERhdGE6IFBy b3BUeXBlcy5vYmplY3QsCi0rICAgIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLAotKyAgICB5QXhp c0xhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLAotKyAgICB4QXhpc0xhYmVsOiBQcm9wVHlwZXMuc3Ry aW5nLAotKyAgICBtaW5ZOiBQcm9wVHlwZXMubnVtYmVyLAotKyAgICBtYXhZOiBQcm9wVHlwZXMu bnVtYmVyLAotKyAgICBkZWZhdWx0U2hvd0xlZ2VuZDogUHJvcFR5cGVzLmJvb2wsCi0rICAgIG9u UG9pbnRDbGljazogUHJvcFR5cGVzLmZ1bmMKLSt9OwotKwotK1NjYXR0ZXJMaW5lQ2hhcnQuZGVm YXVsdFByb3BzID0gewotKyAgICBjaGFydERhdGE6IG51bGwsCi0rICAgIHRpdGxlOiAiIiwKLSsg ICAgeUF4aXNMYWJlbDogIlZhbHVlIiwKLSsgICAgeEF4aXNMYWJlbDogIiIsCi0rICAgIG1pblk6 IG51bGwsCi0rICAgIG1heFk6IG51bGwsCi0rICAgIGRlZmF1bHRTaG93TGVnZW5kOiB0cnVlLAot KyAgICBvblBvaW50Q2xpY2s6IG51bGwKLSt9OwotKwotIEFnbXREZXRhaWxzTW9kYWwucHJvcFR5 cGVzID0gewotICAgICBzaG93TW9kYWw6IFByb3BUeXBlcy5ib29sLAotICAgICBjbG9zZUhhbmRs ZXI6IFByb3BUeXBlcy5mdW5jLAotQEAgLTMwNDQsNiArMzQ4NSw3IEBAIGV4cG9ydCB7Ci0gICAg IFJlcG9ydExvZ2luTW9kYWwsCi0gICAgIEZ1bGxSZXBvcnRDb250ZW50LAotICAgICBMYWdSZXBv cnRNb2RhbCwKLS0gICAgQ2hvb3NlTGFnUmVwb3J0TW9kYWwKLSsgICAgQ2hvb3NlTGFnUmVwb3J0 TW9kYWwsCi0rICAgIENTTkRldGFpbE1vZGFsCi0gfTsKLSAKLWRpZmYgLS1naXQgYS9zcmMvbGli Mzg5L2xpYjM4OS9yZXBsdG9vbHMucHkgYi9zcmMvbGliMzg5L2xpYjM4OS9yZXBsdG9vbHMucHkK LWluZGV4IDlkMWFhNDA1OC4uNWFiOGIzMTg3IDEwMDY0NAotLS0tIGEvc3JjL2xpYjM4OS9saWIz ODkvcmVwbHRvb2xzLnB5Ci0rKysgYi9zcmMvbGliMzg5L2xpYjM4OS9yZXBsdG9vbHMucHkKLUBA IC02ODMsNiArNjgzLDcgQEAgY2xhc3MgQ2hhcnREYXRhKE5hbWVkVHVwbGUpOgotICAgICBsYWdz OiBMaXN0W2Zsb2F0XQotICAgICBkdXJhdGlvbnM6IExpc3RbZmxvYXRdCi0gICAgIGhvdmVyOiBM aXN0W3N0cl0KLSsgICAgY3NuX2lkczogTGlzdFtzdHJdCi0gCi0gY2xhc3MgVmlzdWFsaXphdGlv bkhlbHBlcjoKLSAgICAgIiIiSGVscGVyIGNsYXNzIGZvciB2aXN1YWxpemF0aW9uLXJlbGF0ZWQg ZnVuY3Rpb25hbGl0eS4iIiIKLUBAIC03MzAsNyArNzMxLDcgQEAgY2xhc3MgVmlzdWFsaXphdGlv bkhlbHBlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6OiB0emluZm8gPSB0aW1lem9u ZS51dGMpIC0+IERpY3RbVHVwbGVbc3RyLCBzdHJdLCBDaGFydERhdGFdOgotICAgICAgICAgIiIi UHJlcGFyZSBkYXRhIGZvciB2aXN1YWxpemF0aW9uIHdpdGggdGltZXpvbmUtYXdhcmUgdGltZXN0 YW1wcy4iIiIKLSAgICAgICAgIGNoYXJ0X2RhdGEgPSBkZWZhdWx0ZGljdChsYW1iZGE6IHsKLS0g ICAgICAgICAgICAndGltZXMnOiBbXSwgJ2xhZ3MnOiBbXSwgJ2R1cmF0aW9ucyc6IFtdLCAnaG92 ZXInOiBbXQotKyAgICAgICAgICAgICd0aW1lcyc6IFtdLCAnbGFncyc6IFtdLCAnZHVyYXRpb25z JzogW10sICdob3Zlcic6IFtdLCAnY3NuX2lkcyc6IFtdCi0gICAgICAgICB9KQotIAotICAgICAg ICAgZm9yIGNzbiwgc2VydmVyX21hcCBpbiBjc25zLml0ZW1zKCk6Ci1AQCAtNzY2LDYgKzc2Nyw3 IEBAIGNsYXNzIFZpc3VhbGl6YXRpb25IZWxwZXI6Ci0gICAgICAgICAgICAgICAgIGRhdGFfc2xv dFsndGltZXMnXS5hcHBlbmQodHNfZHQpCi0gICAgICAgICAgICAgICAgIGRhdGFfc2xvdFsnbGFn cyddLmFwcGVuZChsYWdfdmFsKSAgIyBUaGUgc2FtZSBnbG9iYWwtbGFnIGZvciBhbGwgc2VydmVy cwotICAgICAgICAgICAgICAgICBkYXRhX3Nsb3RbJ2R1cmF0aW9ucyddLmFwcGVuZChkdXJhdGlv bl92YWwpCi0rICAgICAgICAgICAgICAgIGRhdGFfc2xvdFsnY3NuX2lkcyddLmFwcGVuZChjc24p Ci0gICAgICAgICAgICAgICAgICMgRm9ybWF0IHRpbWVzdGFtcCBmb3IgaG92ZXIgZGlzcGxheSBp biB0aGUgc3BlY2lmaWVkIHRpbWV6b25lCi0gICAgICAgICAgICAgICAgIHRpbWVzdGFtcF9zdHIg PSB0c19kdC5zdHJmdGltZSgnJVktJW0tJWQgJUg6JU06JVMnKQotICAgICAgICAgICAgICAgICBk YXRhX3Nsb3RbJ2hvdmVyJ10uYXBwZW5kKAotQEAgLTc4NCw3ICs3ODYsOCBAQCBjbGFzcyBWaXN1 YWxpemF0aW9uSGVscGVyOgotICAgICAgICAgICAgICAgICB0aW1lcz12YWx1ZVsndGltZXMnXSwK LSAgICAgICAgICAgICAgICAgbGFncz12YWx1ZVsnbGFncyddLAotICAgICAgICAgICAgICAgICBk dXJhdGlvbnM9dmFsdWVbJ2R1cmF0aW9ucyddLAotLSAgICAgICAgICAgICAgICBob3Zlcj12YWx1 ZVsnaG92ZXInXQotKyAgICAgICAgICAgICAgICBob3Zlcj12YWx1ZVsnaG92ZXInXSwKLSsgICAg ICAgICAgICAgICAgY3NuX2lkcz12YWx1ZVsnY3NuX2lkcyddCi0gICAgICAgICAgICAgKQotICAg ICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGNoYXJ0X2RhdGEuaXRlbXMoKQotICAgICAgICAg fQotQEAgLTgwMyw2ICs4MDYsMTQgQEAgY2xhc3MgUmVwbGljYXRpb25Mb2dBbmFseXplcjoKLSAg ICAgQVVUT19TQU1QTElOR19USFJFU0hPTEQgPSA0MDAwICAjIFRyaWdnZXIgYXV0byBzYW1wbGlu ZyBhYm92ZSB0aGlzIG1hbnkgQ1NOIHBvaW50cwotICAgICBIT1BfU0VSSUVTX0JVREdFVF9SQVRJ TyA9IDAuMjUgICMgQWxsb2NhdGUgbWF4IDI1JSBvZiBjaGFydCBwb2ludHMgdG8gaG9wIGxhZyBz ZXJpZXMKLSAgICAgTUlOX1BPSU5UU19QRVJfU0VSSUVTID0gMiAgICAgICAjIE1pbmltdW0gcG9p bnRzIHRvIHByZXNlcnZlIHNlcmllcyBzaGFwZSBhZnRlciBzYW1wbGluZwotKyAgICBNQVhfQ1NO X0RFVEFJTFMgPSAxMDAwMCAgICAgICAgICMgTWF4aW11bSBDU04gZGV0YWlscyB0byBpbmNsdWRl IChwcmV2ZW50cyBtZW1vcnkgaXNzdWVzKQotKwotKyAgICAjIENTTiBmb3JtYXQ6IFRUVFRUVFRU U1NTU1JSUlJOTk5OICgyMCBoZXggY2hhcnMpCi0rICAgICMgVD10aW1lc3RhbXAoOCksIFM9c2Vx dWVuY2UoNCksIFI9cmVwbGljYUlEKDQpLCBOPXN1YnNlcSg0KQotKyAgICBDU05fVElNRVNUQU1Q X1NUQVJUID0gMAotKyAgICBDU05fVElNRVNUQU1QX0VORCA9IDgKLSsgICAgQ1NOX1JFUExJQ0Ff SURfU1RBUlQgPSAxMgotKyAgICBDU05fUkVQTElDQV9JRF9FTkQgPSAxNgotIAotICAgICAjIFBy ZWNpc2lvbiBwcmVzZXQgY29uZmlndXJhdGlvbnMKLSAgICAgUFJFQ0lTSU9OX1BSRVNFVFMgPSB7 Ci1AQCAtODY3LDYgKzg3OCw1NCBAQCBjbGFzcyBSZXBsaWNhdGlvbkxvZ0FuYWx5emVyOgotICAg ICAgICAgIyBUaHJlc2hvbGQgdG8gdHJpZ2dlciBhdXRvIHNhbXBsaW5nIGlmIGxvdHMgb2YgQ1NO cwotICAgICAgICAgc2VsZi5fYXV0b19zYW1wbGluZ19jc25fdGhyZXNob2xkID0gc2VsZi5BVVRP X1NBTVBMSU5HX1RIUkVTSE9MRAotIAotKyAgICAgICAgIyBNYXBwaW5nIG9mIChyZXBsaWNhIElE LCBzdWZmaXgpIHRvIHNlcnZlciBuYW1lCi0rICAgICAgICAjIEJ1aWx0IGR1cmluZyBsb2cgcGFy c2luZyB0byBjb3JyZWN0bHkgaWRlbnRpZnkgb3JpZ2luIHNlcnZlcnMKLSsgICAgICAgICMgS2V5 ZWQgYnkgKHJlcGxpY2FfaWQsIHN1ZmZpeCkgYmVjYXVzZSByZXBsaWNhIElEcyBhcmUgcGVyLXN1 ZmZpeCBpbiBtdWx0aS1zdWZmaXggZGVwbG95bWVudHMKLSsgICAgICAgIHNlbGYuX3JlcGxpY2Ff aWRfdG9fc2VydmVyOiBEaWN0W1R1cGxlW3N0ciwgc3RyXSwgc3RyXSA9IHt9Ci0rCi0rICAgIEBz dGF0aWNtZXRob2QKLSsgICAgZGVmIF9leHRyYWN0X3JlcGxpY2FfaWRfZnJvbV9jc24oY3NuOiBz dHIpIC0+IE9wdGlvbmFsW3N0cl06Ci0rICAgICAgICAiIiJFeHRyYWN0IHRoZSByZXBsaWNhIElE IGZyb20gYSBDU04gc3RyaW5nLgotKwotKyAgICAgICAgQ1NOIGZvcm1hdDogVFRUVFRUVFRTU1NT UlJSUk5OTk4gKDIwIGhleCBjaGFyYWN0ZXJzKQotKyAgICAgICAgLSBUID0gdGltZXN0YW1wICg4 IGNoYXJzKQotKyAgICAgICAgLSBTID0gc2VxdWVuY2UgKDQgY2hhcnMpCi0rICAgICAgICAtIFIg PSByZXBsaWNhIElEICg0IGNoYXJzKQotKyAgICAgICAgLSBOID0gc3Vic2VxICg0IGNoYXJzKQot KwotKyAgICAgICAgOnBhcmFtIGNzbjogVGhlIENTTiBzdHJpbmcKLSsgICAgICAgIDpyZXR1cm5z OiBUaGUgcmVwbGljYSBJRCBhcyBhIHN0cmluZyAoNCBoZXggY2hhcnMpLCBvciBOb25lIGlmIGlu dmFsaWQKLSsgICAgICAgICIiIgotKyAgICAgICAgaWYgbm90IGNzbiBvciBub3QgaXNpbnN0YW5j ZShjc24sIHN0cikgb3IgbGVuKGNzbikgPCAxNjoKLSsgICAgICAgICAgICByZXR1cm4gTm9uZQot KyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgICMgRXh0cmFjdCBhbmQgdmFsaWRhdGUgcmVwbGlj YSBJRCBpcyB2YWxpZCBoZXgKLSsgICAgICAgICAgICByZXBsaWNhX2lkID0gY3NuW1JlcGxpY2F0 aW9uTG9nQW5hbHl6ZXIuQ1NOX1JFUExJQ0FfSURfU1RBUlQ6Ci0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFJlcGxpY2F0aW9uTG9nQW5hbHl6ZXIuQ1NOX1JFUExJQ0FfSURfRU5EXQotKyAg ICAgICAgICAgIGludChyZXBsaWNhX2lkLCAxNikgICMgVmFsaWRhdGUgaXQncyB2YWxpZCBoZXgK LSsgICAgICAgICAgICByZXR1cm4gcmVwbGljYV9pZAotKyAgICAgICAgZXhjZXB0IChWYWx1ZUVy cm9yLCBJbmRleEVycm9yKToKLSsgICAgICAgICAgICByZXR1cm4gTm9uZQotKwotKyAgICBAc3Rh dGljbWV0aG9kCi0rICAgIGRlZiBfZXh0cmFjdF90aW1lc3RhbXBfZnJvbV9jc24oY3NuOiBzdHIp IC0+IE9wdGlvbmFsW2Zsb2F0XToKLSsgICAgICAgICIiIkV4dHJhY3QgdGhlIHRpbWVzdGFtcCAo ZXBvY2ggc2Vjb25kcykgZnJvbSBhIENTTiBzdHJpbmcuCi0rCi0rICAgICAgICBDU04gZm9ybWF0 OiBUVFRUVFRUVFNTU1NSUlJSTk5OTiAoMjAgaGV4IGNoYXJhY3RlcnMpCi0rICAgICAgICAtIFQg PSB0aW1lc3RhbXAgKDggY2hhcnMsIGhleCwgc2Vjb25kcyBzaW5jZSBlcG9jaCkKLSsKLSsgICAg ICAgIDpwYXJhbSBjc246IFRoZSBDU04gc3RyaW5nCi0rICAgICAgICA6cmV0dXJuczogVGltZXN0 YW1wIGFzIGZsb2F0IChlcG9jaCBzZWNvbmRzKSwgb3IgTm9uZSBpZiBpbnZhbGlkCi0rICAgICAg ICAiIiIKLSsgICAgICAgIGlmIG5vdCBjc24gb3Igbm90IGlzaW5zdGFuY2UoY3NuLCBzdHIpIG9y IGxlbihjc24pIDwgODoKLSsgICAgICAgICAgICByZXR1cm4gTm9uZQotKyAgICAgICAgdHJ5Ogot KyAgICAgICAgICAgIHRzX2hleCA9IGNzbltSZXBsaWNhdGlvbkxvZ0FuYWx5emVyLkNTTl9USU1F U1RBTVBfU1RBUlQ6Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIFJlcGxpY2F0aW9uTG9nQW5h bHl6ZXIuQ1NOX1RJTUVTVEFNUF9FTkRdCi0rICAgICAgICAgICAgcmV0dXJuIGZsb2F0KGludCh0 c19oZXgsIDE2KSkKLSsgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgSW5kZXhFcnJvcik6Ci0r ICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSsKLSAgICAgZGVmIF9zaG91bGRfaW5jbHVkZV9yZWNv cmQoc2VsZiwgY3NuOiBzdHIsIHNlcnZlcl9tYXA6IERpY3RbVW5pb25baW50LCBzdHJdLCBEaWN0 W3N0ciwgQW55XV0pIC0+IGJvb2w6Ci0gICAgICAgICAiIiJEZXRlcm1pbmUgaWYgYSByZWNvcmQg c2hvdWxkIGJlIGluY2x1ZGVkIGJhc2VkIG9uIGZpbHRlcmluZyBjcml0ZXJpYS4iIiIKLSAgICAg ICAgIHRvdGFsX3NlcnZlcnMgPSBzZWxmLl9hY3RpdmVfc2VydmVyX2NvdW50IG9yIGxlbihzZWxm LmxvZ19kaXJzKQotQEAgLTk5MCw2ICsxMDQ5LDE0OCBAQCBjbGFzcyBSZXBsaWNhdGlvbkxvZ0Fu YWx5emVyOgotIAotICAgICAgICAgcmV0dXJuIGhvcHMKLSAKLSsgICAgZGVmIF9idWlsZF9jc25f ZGV0YWlscyhzZWxmLCBjc25fd2hpdGVsaXN0OiBPcHRpb25hbFtzZXRdID0gTm9uZSkgLT4gRGlj dFtzdHIsIERpY3Rbc3RyLCBBbnldXToKLSsgICAgICAgICIiIkJ1aWxkIGRldGFpbGVkIENTTiBw cm9wYWdhdGlvbiBpbmZvcm1hdGlvbiBmb3IgZHJpbGwtZG93biBmdW5jdGlvbmFsaXR5LgotKwot KyAgICAgICAgUmV0dXJucyBhIGRpY3Rpb25hcnkga2V5ZWQgYnkgQ1NOIGNvbnRhaW5pbmc6Ci0r ICAgICAgICAtIGNzbjogVGhlIENTTiBzdHJpbmcKLSsgICAgICAgIC0gdGFyZ2V0RG46IFRoZSB0 YXJnZXQgZW50cnkgRE4KLSsgICAgICAgIC0gc3VmZml4OiBUaGUgcmVwbGljYXRpb24gc3VmZml4 Ci0rICAgICAgICAtIGdsb2JhbExhZzogVG90YWwgcHJvcGFnYXRpb24gdGltZSAoZWFybGllc3Qg dG8gbGF0ZXN0IGFycml2YWwpCi0rICAgICAgICAtIG9yaWdpblNlcnZlcjogVGhlIHNlcnZlciB3 aGVyZSB0aGUgY2hhbmdlIG9yaWdpbmF0ZWQgKGRldGVybWluZWQgYnkgQ1NOIHJlcGxpY2EgSUQp Ci0rICAgICAgICAtIG9yaWdpblRpbWU6IElTTyB0aW1lc3RhbXAgb2Ygb3JpZ2luCi0rICAgICAg ICAtIGFycml2YWxzOiBPcmRlcmVkIGxpc3Qgb2Ygc2VydmVyIGFycml2YWxzIHdpdGggdGltaW5n IGRldGFpbHMKLSsgICAgICAgIC0gaG9wczogTGlzdCBvZiBzZXJ2ZXItdG8tc2VydmVyIGhvcHMg d2l0aCBsYWcgdGltZXMKLSsgICAgICAgIC0gdG90YWxIb3BzOiBOdW1iZXIgb2YgaG9wcyBpbiB0 aGUgcHJvcGFnYXRpb24gcGF0aAotKyAgICAgICAgLSByZXBsaWNhdGVkVG9BbGw6IFdoZXRoZXIg dGhlIGNoYW5nZSByZWFjaGVkIGFsbCBzZXJ2ZXJzCi0rCi0rICAgICAgICBOb3RlOiBPcmlnaW4g c2VydmVyIGlzIGRldGVybWluZWQgYnkgdGhlIHJlcGxpY2EgSUQgZW1iZWRkZWQgaW4gdGhlIENT TiwKLSsgICAgICAgIG5vdCBieSBlYXJsaWVzdCBsb2cgdGltZXN0YW1wICh3aGljaCBjYW4gYmUg aW5jb3JyZWN0IHVuZGVyIGNsb2NrIHNrZXcpLgotKwotKyAgICAgICAgOnBhcmFtIGNzbl93aGl0 ZWxpc3Q6IE9wdGlvbmFsIHNldCBvZiBDU04gSURzIHRvIGluY2x1ZGUuIElmIHByb3ZpZGVkLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgdGhlc2UgQ1NOcyB3aWxsIGhhdmUg ZGV0YWlscyBnZW5lcmF0ZWQuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBw cmV2ZW50cyBtZW1vcnkgYmxvYXQgd2hlbiBjaGFydCBkYXRhIGlzIHNhbXBsZWQuCi0rICAgICAg ICAiIiIKLSsgICAgICAgIGNzbl9kZXRhaWxzID0ge30KLSsgICAgICAgIHRvdGFsX3NlcnZlcnMg PSBzZWxmLl9hY3RpdmVfc2VydmVyX2NvdW50IG9yIGxlbihzZWxmLmxvZ19kaXJzKQotKwotKyAg ICAgICAgaWYgY3NuX3doaXRlbGlzdCBpcyBub3QgTm9uZToKLSsgICAgICAgICAgICBjc25faXRl bXMgPSBbKGNzbiwgc20pIGZvciBjc24sIHNtIGluIHNlbGYuY3Nucy5pdGVtcygpIGlmIGNzbiBp biBjc25fd2hpdGVsaXN0XQotKyAgICAgICAgZWxzZToKLSsgICAgICAgICAgICBjc25faXRlbXMg PSBsaXN0KHNlbGYuY3Nucy5pdGVtcygpKQotKwotKyAgICAgICAgaWYgbGVuKGNzbl9pdGVtcykg PiBzZWxmLk1BWF9DU05fREVUQUlMUzoKLSsgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygK LSsgICAgICAgICAgICAgICAgZiJDU04gZGV0YWlscyBsaW1pdGVkIHRvIHtzZWxmLk1BWF9DU05f REVUQUlMU30gZW50cmllcyAiCi0rICAgICAgICAgICAgICAgIGYiKGRhdGFzZXQgaGFzIHtsZW4o Y3NuX2l0ZW1zKX0gQ1NOcykuICIKLSsgICAgICAgICAgICAgICAgIlNlbGVjdGluZyBDU05zIHdp dGggaGlnaGVzdCBnbG9iYWwgbGFnIGZvciBkcmlsbC1kb3duLiIKLSsgICAgICAgICAgICApCi0r ICAgICAgICAgICAgY3NuX2xhZ3MgPSBbXQotKyAgICAgICAgICAgIGZvciBjc24sIHNlcnZlcl9t YXAgaW4gY3NuX2l0ZW1zOgotKyAgICAgICAgICAgICAgICB0X2xpc3QgPSBbCi0rICAgICAgICAg ICAgICAgICAgICByZWMuZ2V0KCdsb2d0aW1lJywgMCkKLSsgICAgICAgICAgICAgICAgICAgIGZv ciBrZXksIHJlYyBpbiBzZXJ2ZXJfbWFwLml0ZW1zKCkKLSsgICAgICAgICAgICAgICAgICAgIGlm IGlzaW5zdGFuY2UocmVjLCBkaWN0KSBhbmQga2V5ICE9ICdfX2hvcF9sYWdzX18nIGFuZCAnbG9n dGltZScgaW4gcmVjCi0rICAgICAgICAgICAgICAgIF0KLSsgICAgICAgICAgICAgICAgaWYgdF9s aXN0OgotKyAgICAgICAgICAgICAgICAgICAgbGFnID0gbWF4KHRfbGlzdCkgLSBtaW4odF9saXN0 KQotKyAgICAgICAgICAgICAgICAgICAgY3NuX2xhZ3MuYXBwZW5kKChjc24sIHNlcnZlcl9tYXAs IGxhZykpCi0rICAgICAgICAgICAgY3NuX2xhZ3Muc29ydChrZXk9bGFtYmRhIHg6IHhbMl0sIHJl dmVyc2U9VHJ1ZSkKLSsgICAgICAgICAgICBjc25faXRlbXMgPSBbKGNzbiwgc20pIGZvciBjc24s IHNtLCBfIGluIGNzbl9sYWdzWzpzZWxmLk1BWF9DU05fREVUQUlMU11dCi0rCi0rICAgICAgICBm b3IgY3NuLCBzZXJ2ZXJfbWFwIGluIGNzbl9pdGVtczoKLSsgICAgICAgICAgICB2YWxpZF9yZWNv cmRzID0gW10KLSsgICAgICAgICAgICBmb3Iga2V5LCBkYXRhIGluIHNlcnZlcl9tYXAuaXRlbXMo KToKLSsgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBkaWN0KSBhbmQga2V5ICE9 ICdfX2hvcF9sYWdzX18nIGFuZCAnbG9ndGltZScgaW4gZGF0YToKLSsgICAgICAgICAgICAgICAg ICAgIHZhbGlkX3JlY29yZHMuYXBwZW5kKGRhdGEpCi0rCi0rICAgICAgICAgICAgaWYgbm90IHZh bGlkX3JlY29yZHM6Ci0rICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0rCi0rICAgICAgICAgICAg dmFsaWRfcmVjb3Jkcy5zb3J0KGtleT1sYW1iZGEgeDogeFsnbG9ndGltZSddKQotKwotKyAgICAg ICAgICAgIHN1ZmZpeCA9IE5vbmUKLSsgICAgICAgICAgICBmb3IgcmVjIGluIHZhbGlkX3JlY29y ZHM6Ci0rICAgICAgICAgICAgICAgIGlmIHJlYy5nZXQoJ3N1ZmZpeCcpOgotKyAgICAgICAgICAg ICAgICAgICAgc3VmZml4ID0gcmVjWydzdWZmaXgnXQotKyAgICAgICAgICAgICAgICAgICAgYnJl YWsKLSsKLSsgICAgICAgICAgICByZXBsaWNhX2lkID0gc2VsZi5fZXh0cmFjdF9yZXBsaWNhX2lk X2Zyb21fY3NuKGNzbikKLSsgICAgICAgICAgICBvcmlnaW5fc2VydmVyX25hbWUgPSBOb25lCi0r ICAgICAgICAgICAgb3JpZ2luX3JlY29yZCA9IE5vbmUKLSsKLSsgICAgICAgICAgICBvcmlnaW5f aW5fYXJyaXZhbHMgPSBGYWxzZQotKyAgICAgICAgICAgIGlmIHJlcGxpY2FfaWQgYW5kIHN1ZmZp eDoKLSsgICAgICAgICAgICAgICAgbWFwX2tleSA9IChyZXBsaWNhX2lkLCBzdWZmaXgpCi0rICAg ICAgICAgICAgICAgIGlmIG1hcF9rZXkgaW4gc2VsZi5fcmVwbGljYV9pZF90b19zZXJ2ZXI6Ci0r ICAgICAgICAgICAgICAgICAgICBvcmlnaW5fc2VydmVyX25hbWUgPSBzZWxmLl9yZXBsaWNhX2lk X3RvX3NlcnZlclttYXBfa2V5XQotKyAgICAgICAgICAgICAgICAgICAgZm9yIHJlYyBpbiB2YWxp ZF9yZWNvcmRzOgotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlYy5nZXQoJ3NlcnZlcl9u YW1lJykgPT0gb3JpZ2luX3NlcnZlcl9uYW1lOgotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvcmlnaW5fcmVjb3JkID0gcmVjCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdp bl9pbl9hcnJpdmFscyA9IFRydWUKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsK LSsKLSsgICAgICAgICAgICBpZiBvcmlnaW5fcmVjb3JkIGlzIE5vbmU6Ci0rICAgICAgICAgICAg ICAgIG9yaWdpbl9yZWNvcmQgPSB2YWxpZF9yZWNvcmRzWzBdCi0rICAgICAgICAgICAgICAgIGlm IG5vdCBvcmlnaW5fc2VydmVyX25hbWU6Ci0rICAgICAgICAgICAgICAgICAgICBvcmlnaW5fc2Vy dmVyX25hbWUgPSBvcmlnaW5fcmVjb3JkLmdldCgnc2VydmVyX25hbWUnLCAndW5rbm93bicpCi0r Ci0rICAgICAgICAgICAgY3NuX3RzID0gc2VsZi5fZXh0cmFjdF90aW1lc3RhbXBfZnJvbV9jc24o Y3NuKQotKyAgICAgICAgICAgIG9yaWdpbl90aW1lID0gY3NuX3RzIGlmIGNzbl90cyBpcyBub3Qg Tm9uZSBlbHNlIG9yaWdpbl9yZWNvcmRbJ2xvZ3RpbWUnXQotKyAgICAgICAgICAgIGVhcmxpZXN0 X3RpbWUgPSB2YWxpZF9yZWNvcmRzWzBdWydsb2d0aW1lJ10KLSsgICAgICAgICAgICBsYXRlc3Rf dGltZSA9IHZhbGlkX3JlY29yZHNbLTFdWydsb2d0aW1lJ10KLSsgICAgICAgICAgICBnbG9iYWxf bGFnID0gbGF0ZXN0X3RpbWUgLSBlYXJsaWVzdF90aW1lCi0rCi0rICAgICAgICAgICAgYXJyaXZh bHMgPSBbXQotKyAgICAgICAgICAgIGZvciBpZHgsIHJlYyBpbiBlbnVtZXJhdGUodmFsaWRfcmVj b3Jkcyk6Ci0rICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1lID0gcmVjLmdldCgnc2VydmVyX25h bWUnLCAndW5rbm93bicpCi0rICAgICAgICAgICAgICAgIGlzX29yaWdpbiA9IChzZXJ2ZXJfbmFt ZSA9PSBvcmlnaW5fc2VydmVyX25hbWUpCi0rCi0rICAgICAgICAgICAgICAgIGFycml2YWxfZW50 cnkgPSB7Ci0rICAgICAgICAgICAgICAgICAgICAnc2VydmVyJzogc2VydmVyX25hbWUsCi0rICAg ICAgICAgICAgICAgICAgICAndGltZXN0YW1wJzogZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChyZWNb J2xvZ3RpbWUnXSwgdHo9c2VsZi50eikuaXNvZm9ybWF0KCksCi0rICAgICAgICAgICAgICAgICAg ICAncmVsYXRpdmVEZWxheSc6IHJlY1snbG9ndGltZSddIC0gZWFybGllc3RfdGltZSwKLSsgICAg ICAgICAgICAgICAgICAgICdkdXJhdGlvbic6IGZsb2F0KHJlYy5nZXQoJ2R1cmF0aW9uJywgMC4w KSksCi0rICAgICAgICAgICAgICAgICAgICAnZXRpbWUnOiByZWMuZ2V0KCdldGltZScpCi0rICAg ICAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICAgICAgaWYgaXNfb3JpZ2luOgotKyAgICAg ICAgICAgICAgICAgICAgYXJyaXZhbF9lbnRyeVsnaXNPcmlnaW4nXSA9IFRydWUKLSsKLSsgICAg ICAgICAgICAgICAgaWYgaWR4ID4gMDoKLSsgICAgICAgICAgICAgICAgICAgIHByZXZfcmVjID0g dmFsaWRfcmVjb3Jkc1tpZHggLSAxXQotKyAgICAgICAgICAgICAgICAgICAgYXJyaXZhbF9lbnRy eVsnaG9wRnJvbSddID0gcHJldl9yZWMuZ2V0KCdzZXJ2ZXJfbmFtZScsICd1bmtub3duJykKLSsg ICAgICAgICAgICAgICAgICAgIGFycml2YWxfZW50cnlbJ2hvcExhZyddID0gcmVjWydsb2d0aW1l J10gLSBwcmV2X3JlY1snbG9ndGltZSddCi0rCi0rICAgICAgICAgICAgICAgIGFycml2YWxzLmFw cGVuZChhcnJpdmFsX2VudHJ5KQotKwotKyAgICAgICAgICAgIGhvcHMgPSBbXQotKyAgICAgICAg ICAgIGZvciBpIGluIHJhbmdlKDEsIGxlbih2YWxpZF9yZWNvcmRzKSk6Ci0rICAgICAgICAgICAg ICAgIHByZXZfcmVjID0gdmFsaWRfcmVjb3Jkc1tpIC0gMV0KLSsgICAgICAgICAgICAgICAgY3Vy cl9yZWMgPSB2YWxpZF9yZWNvcmRzW2ldCi0rICAgICAgICAgICAgICAgIGhvcHMuYXBwZW5kKHsK LSsgICAgICAgICAgICAgICAgICAgICdmcm9tJzogcHJldl9yZWMuZ2V0KCdzZXJ2ZXJfbmFtZScs ICd1bmtub3duJyksCi0rICAgICAgICAgICAgICAgICAgICAndG8nOiBjdXJyX3JlYy5nZXQoJ3Nl cnZlcl9uYW1lJywgJ3Vua25vd24nKSwKLSsgICAgICAgICAgICAgICAgICAgICdsYWcnOiBjdXJy X3JlY1snbG9ndGltZSddIC0gcHJldl9yZWNbJ2xvZ3RpbWUnXQotKyAgICAgICAgICAgICAgICB9 KQotKwotKyAgICAgICAgICAgIGNzbl9kZXRhaWxzW2Nzbl0gPSB7Ci0rICAgICAgICAgICAgICAg ICdjc24nOiBjc24sCi0rICAgICAgICAgICAgICAgICd0YXJnZXREbic6IG9yaWdpbl9yZWNvcmQu Z2V0KCd0YXJnZXRfZG4nLCAndW5rbm93bicpIG9yICd1bmtub3duJywKLSsgICAgICAgICAgICAg ICAgJ3N1ZmZpeCc6IG9yaWdpbl9yZWNvcmQuZ2V0KCdzdWZmaXgnLCAndW5rbm93bicpIG9yICd1 bmtub3duJywKLSsgICAgICAgICAgICAgICAgJ2dsb2JhbExhZyc6IGdsb2JhbF9sYWcsCi0rICAg ICAgICAgICAgICAgICdvcmlnaW5TZXJ2ZXInOiBvcmlnaW5fc2VydmVyX25hbWUsCi0rICAgICAg ICAgICAgICAgICdvcmlnaW5JbmNsdWRlZEluQXJyaXZhbHMnOiBvcmlnaW5faW5fYXJyaXZhbHMs Ci0rICAgICAgICAgICAgICAgICdvcmlnaW5UaW1lJzogZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChv cmlnaW5fdGltZSwgdHo9c2VsZi50eikuaXNvZm9ybWF0KCksCi0rICAgICAgICAgICAgICAgICdh cnJpdmFscyc6IGFycml2YWxzLAotKyAgICAgICAgICAgICAgICAnaG9wcyc6IGhvcHMsCi0rICAg ICAgICAgICAgICAgICd0b3RhbEhvcHMnOiBsZW4oaG9wcyksCi0rICAgICAgICAgICAgICAgICdz ZXJ2ZXJDb3VudCc6IGxlbih2YWxpZF9yZWNvcmRzKSwKLSsgICAgICAgICAgICAgICAgJ3JlcGxp Y2F0ZWRUb0FsbCc6IGxlbih2YWxpZF9yZWNvcmRzKSA9PSB0b3RhbF9zZXJ2ZXJzCi0rICAgICAg ICAgICAgfQotKwotKyAgICAgICAgcmV0dXJuIGNzbl9kZXRhaWxzCi0rCi0gICAgIGRlZiBwYXJz ZV9sb2dzKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgICAiIiJQYXJzZSBsb2dzIGZyb20gYWxsIGRp cmVjdG9yaWVzLiBFYWNoIGRpcmVjdG9yeSBpcyB0cmVhdGVkIGFzIG9uZSBzZXJ2ZXIKLSAgICAg ICAgIHVubGVzcyBhbm9ueW1pemVkLCBpbiB3aGljaCBjYXNlIHdlIHVzZSAnc2VydmVyX3tpbmRl eH0nLgotQEAgLTEwNDQsNiArMTI0NSw0MSBAQCBjbGFzcyBSZXBsaWNhdGlvbkxvZ0FuYWx5emVy OgotICAgICAgICAgICAgICAgICAgICAgICAgICdkdXJhdGlvbic6IHJlY29yZC5nZXQoJ2R1cmF0 aW9uJywgMC4wKSwKLSAgICAgICAgICAgICAgICAgICAgIH0KLSAKLSsgICAgICAgICMgQnVpbGQg KHJlcGxpY2EgSUQsIHN1ZmZpeCkgdG8gc2VydmVyIG1hcHBpbmcgYmFzZWQgb24gY2xvc2VzdCBD U04gdGltZXN0YW1wCi0rICAgICAgICAjIEtleWVkIGJ5IChyZXBsaWNhX2lkLCBzdWZmaXgpIGJl Y2F1c2UgcmVwbGljYSBJRHMgYXJlIHBlci1zdWZmaXggaW4gbXVsdGktc3VmZml4IGRlcGxveW1l bnRzCi0rICAgICAgICAjIEZvciBlYWNoIChyZXBsaWNhIElELCBzdWZmaXgpIHBhaXIsIHRoZSBz ZXJ2ZXIgd2hvc2UgbG9ndGltZSBpcyBjbG9zZXN0IHRvIHRoZSBDU04KLSsgICAgICAgICMgdGlt ZXN0YW1wIGlzIHRoZSBiZXN0IG9yaWdpbiBjYW5kaWRhdGUgdW5kZXIgY2xvY2sgc2tldy4KLSsg ICAgICAgIHJlcGxpY2FfaWRfYmVzdDogRGljdFtUdXBsZVtzdHIsIHN0cl0sIFR1cGxlW2Jvb2ws IGZsb2F0LCBmbG9hdCwgc3RyXV0gPSB7fQotKyAgICAgICAgZm9yIGNzbiwgc2VydmVyX21hcCBp biBzZWxmLmNzbnMuaXRlbXMoKToKLSsgICAgICAgICAgICByZXBsaWNhX2lkID0gc2VsZi5fZXh0 cmFjdF9yZXBsaWNhX2lkX2Zyb21fY3NuKGNzbikKLSsgICAgICAgICAgICBpZiBub3QgcmVwbGlj YV9pZDoKLSsgICAgICAgICAgICAgICAgY29udGludWUKLSsgICAgICAgICAgICBjc25fdHMgPSBz ZWxmLl9leHRyYWN0X3RpbWVzdGFtcF9mcm9tX2Nzbihjc24pCi0rICAgICAgICAgICAgZm9yIGtl eSwgcmVjb3JkIGluIHNlcnZlcl9tYXAuaXRlbXMoKToKLSsgICAgICAgICAgICAgICAgaWYgbm90 IGlzaW5zdGFuY2UocmVjb3JkLCBkaWN0KSBvciBrZXkgPT0gJ19faG9wX2xhZ3NfXyc6Ci0rICAg ICAgICAgICAgICAgICAgICBjb250aW51ZQotKyAgICAgICAgICAgICAgICBsb2d0aW1lID0gcmVj b3JkLmdldCgnbG9ndGltZScpCi0rICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1lID0gcmVjb3Jk LmdldCgnc2VydmVyX25hbWUnKQotKyAgICAgICAgICAgICAgICBzdWZmaXggPSByZWNvcmQuZ2V0 KCdzdWZmaXgnKQotKyAgICAgICAgICAgICAgICBpZiBsb2d0aW1lIGlzIE5vbmUgb3Igbm90IHNl cnZlcl9uYW1lIG9yIG5vdCBzdWZmaXg6Ci0rICAgICAgICAgICAgICAgICAgICBjb250aW51ZQot KyAgICAgICAgICAgICAgICAjIFByZWZlciBjYW5kaWRhdGVzIHdoZXJlIHdlIGNhbiBjb21wYXJl IGFnYWluc3QgQ1NOIHRpbWVzdGFtcAotKyAgICAgICAgICAgICAgICBoYXNfY3NuX3RzID0gY3Nu X3RzIGlzIG5vdCBOb25lCi0rICAgICAgICAgICAgICAgIHNjb3JlID0gYWJzKGxvZ3RpbWUgLSBj c25fdHMpIGlmIGhhc19jc25fdHMgZWxzZSBsb2d0aW1lCi0rICAgICAgICAgICAgICAgIG1hcF9r ZXkgPSAocmVwbGljYV9pZCwgc3VmZml4KQotKyAgICAgICAgICAgICAgICBpZiBtYXBfa2V5IG5v dCBpbiByZXBsaWNhX2lkX2Jlc3Q6Ci0rICAgICAgICAgICAgICAgICAgICByZXBsaWNhX2lkX2Jl c3RbbWFwX2tleV0gPSAoaGFzX2Nzbl90cywgc2NvcmUsIGxvZ3RpbWUsIHNlcnZlcl9uYW1lKQot KyAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSsgICAgICAgICAgICAgICAgcHJldl9oYXNf dHMsIHByZXZfc2NvcmUsIHByZXZfbG9ndGltZSwgXyA9IHJlcGxpY2FfaWRfYmVzdFttYXBfa2V5 XQotKyAgICAgICAgICAgICAgICBpZiBoYXNfY3NuX3RzIGFuZCBub3QgcHJldl9oYXNfdHM6Ci0r ICAgICAgICAgICAgICAgICAgICByZXBsaWNhX2lkX2Jlc3RbbWFwX2tleV0gPSAoaGFzX2Nzbl90 cywgc2NvcmUsIGxvZ3RpbWUsIHNlcnZlcl9uYW1lKQotKyAgICAgICAgICAgICAgICBlbGlmIGhh c19jc25fdHMgPT0gcHJldl9oYXNfdHM6Ci0rICAgICAgICAgICAgICAgICAgICBpZiBzY29yZSA8 IHByZXZfc2NvcmUgb3IgKHNjb3JlID09IHByZXZfc2NvcmUgYW5kIGxvZ3RpbWUgPCBwcmV2X2xv Z3RpbWUpOgotKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxpY2FfaWRfYmVzdFttYXBfa2V5 XSA9IChoYXNfY3NuX3RzLCBzY29yZSwgbG9ndGltZSwgc2VydmVyX25hbWUpCi0rCi0rICAgICAg ICAjIFN0b3JlIHRoZSBtYXBwaW5nICgocmVwbGljYSBJRCwgc3VmZml4KSAtPiBzZXJ2ZXIgbmFt ZSkKLSsgICAgICAgIHNlbGYuX3JlcGxpY2FfaWRfdG9fc2VydmVyID0ge2s6IHNydiBmb3Igaywg KF8sIF8sIF8sIHNydikgaW4gcmVwbGljYV9pZF9iZXN0Lml0ZW1zKCl9Ci0rCi0gICAgICAgICAj IEFwcGx5IGZpbHRlcnMgYWZ0ZXIgY29sbGVjdGluZyBhbGwgZGF0YQotICAgICAgICAgZmlsdGVy ZWRfY3NucyA9IHt9Ci0gICAgICAgICBlYXJsaWVzdF91ZHQ6IE9wdGlvbmFsW2Zsb2F0XSA9IE5v bmUKLUBAIC0xNTc3LDYgKzE4MTMsMTcgQEAgY2xhc3MgUmVwbGljYXRpb25Mb2dBbmFseXplcjoK LSAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICByYWlzZSBJT0Vy cm9yKGYiRmFpbGVkIHRvIHdyaXRlIEpTT04gc3VtbWFyeSB0byB7b3V0ZmlsZX06IHtlfSIpCi0g Ci0rICAgIEBzdGF0aWNtZXRob2QKLSsgICAgZGVmIF9jb2xsZWN0X2Nzbl9pZHMoc2VyaWVzX2xp c3Q6IExpc3RbRGljdFtzdHIsIEFueV1dKSAtPiBzZXQ6Ci0rICAgICAgICAiIiJDb2xsZWN0IENT TiBJRHMgZnJvbSBjaGFydCBzZXJpZXMgZGF0YXBvaW50cy4iIiIKLSsgICAgICAgIGNzbl9pZHMg PSBzZXQoKQotKyAgICAgICAgZm9yIHNlcmllcyBpbiBzZXJpZXNfbGlzdDoKLSsgICAgICAgICAg ICBmb3IgZHAgaW4gc2VyaWVzLmdldCgiZGF0YXBvaW50cyIsIFtdKToKLSsgICAgICAgICAgICAg ICAgY3NuX2lkID0gZHAuZ2V0KCJjc25JZCIpCi0rICAgICAgICAgICAgICAgIGlmIGNzbl9pZDoK LSsgICAgICAgICAgICAgICAgICAgIGNzbl9pZHMuYWRkKGNzbl9pZCkKLSsgICAgICAgIHJldHVy biBjc25faWRzCi0rCi0gICAgIGRlZiBfZ2VuZXJhdGVfcGF0dGVybmZseV9qc29uKHNlbGYsIHJl c3VsdHM6IERpY3Rbc3RyLCBBbnldLCBvdXRmaWxlOiBzdHIpIC0+IE5vbmU6Ci0gICAgICAgICAi IiJHZW5lcmF0ZSBKU09OIHNwZWNpZmljYWxseSBmb3JtYXR0ZWQgZm9yIFBhdHRlcm5GbHkgNSBj aGFydHMuIiIiCi0gICAgICAgICBjaGFydF9kYXRhID0gVmlzdWFsaXphdGlvbkhlbHBlci5wcmVw YXJlX2NoYXJ0X2RhdGEoc2VsZi5jc25zLCBzZWxmLnR6KQotQEAgLTE2MzcsNyArMTg4NCw4IEBA IGNsYXNzIFJlcGxpY2F0aW9uTG9nQW5hbHl6ZXI6Ci0gICAgICAgICAgICAgICAgICJ4IjogZGF0 YS50aW1lc1tpXS5pc29mb3JtYXQoKSwKLSAgICAgICAgICAgICAgICAgInkiOiBkYXRhLmxhZ3Nb aV0sCi0gICAgICAgICAgICAgICAgICJkdXJhdGlvbiI6IGRhdGEuZHVyYXRpb25zW2ldLAotLSAg ICAgICAgICAgICAgICAiaG92ZXJJbmZvIjogZGF0YS5ob3ZlcltpXQotKyAgICAgICAgICAgICAg ICAiaG92ZXJJbmZvIjogZGF0YS5ob3ZlcltpXSwKLSsgICAgICAgICAgICAgICAgImNzbklkIjog ZGF0YS5jc25faWRzW2ldCi0gICAgICAgICAgICAgfSBmb3IgaSBpbiBpbmRpY2VzXQotICAgICAg ICAgICAgIHNlcmllc19kYXRhLmFwcGVuZCh7Ci0gICAgICAgICAgICAgICAgICJkYXRhcG9pbnRz IjogZGF0YXBvaW50cywKLUBAIC0xNjQ1LDcgKzE4OTMsNyBAQCBjbGFzcyBSZXBsaWNhdGlvbkxv Z0FuYWx5emVyOgotICAgICAgICAgICAgICAgICAiY29sb3IiOiBjb2xvcl9wYWxldHRlW2lkeCAl IGxlbihjb2xvcl9wYWxldHRlKV0KLSAgICAgICAgICAgICB9KQotIAotLSAgICAgICAgaG9wX2Rh dGE6IERpY3Rbc3RyLCBEaWN0W3N0ciwgTGlzdFtBbnldXV0gPSBkZWZhdWx0ZGljdChsYW1iZGE6 IHsidGltZXMiOiBbXSwgImxhZ3MiOiBbXSwgImhvdmVyIjogW119KQotKyAgICAgICAgaG9wX2Rh dGE6IERpY3Rbc3RyLCBEaWN0W3N0ciwgTGlzdFtBbnldXV0gPSBkZWZhdWx0ZGljdChsYW1iZGE6 IHsidGltZXMiOiBbXSwgImxhZ3MiOiBbXSwgImhvdmVyIjogW10sICJjc25faWRzIjogW119KQot ICAgICAgICAgZm9yIGNzbiwgc2VydmVyX21hcCBpbiBzZWxmLmNzbnMuaXRlbXMoKToKLSAgICAg ICAgICAgICBmb3IgaG9wIGluIHNlcnZlcl9tYXAuZ2V0KCdfX2hvcF9sYWdzX18nLCBbXSk6Ci0g ICAgICAgICAgICAgICAgIHNvdXJjZSA9IGhvcC5nZXQoJ3N1cHBsaWVyJywgJ3Vua25vd24nKQot QEAgLTE2NTUsNiArMTkwMyw3IEBAIGNsYXNzIFJlcGxpY2F0aW9uTG9nQW5hbHl6ZXI6Ci0gICAg ICAgICAgICAgICAgIHRzID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChob3AuZ2V0KCdhcnJpdmFs X2NvbnN1bWVyJywgMC4wKSwgdHo9c2VsZi50eikKLSAgICAgICAgICAgICAgICAgZW50cnlbInRp bWVzIl0uYXBwZW5kKHRzKQotICAgICAgICAgICAgICAgICBlbnRyeVsibGFncyJdLmFwcGVuZCho b3AuZ2V0KCdob3BfbGFnJywgMC4wKSkKLSsgICAgICAgICAgICAgICAgZW50cnlbImNzbl9pZHMi XS5hcHBlbmQoY3NuKQotICAgICAgICAgICAgICAgICB0c19zdHIgPSB0cy5zdHJmdGltZSgnJVkt JW0tJWQgJUg6JU06JVMnKQotICAgICAgICAgICAgICAgICBlbnRyeVsiaG92ZXIiXS5hcHBlbmQo Ci0gICAgICAgICAgICAgICAgICAgICBmIlRpbWVzdGFtcDoge3RzX3N0cn08YnI+IgotQEAgLTE2 ODksNyArMTkzOCwxMCBAQCBjbGFzcyBSZXBsaWNhdGlvbkxvZ0FuYWx5emVyOgotICAgICAgICAg ICAgICAgICAibmFtZSI6IGtleSwKLSAgICAgICAgICAgICAgICAgIngiOiBlbnRyeVsidGltZXMi XVtpXS5pc29mb3JtYXQoKSwKLSAgICAgICAgICAgICAgICAgInkiOiBlbnRyeVsibGFncyJdW2ld LAotLSAgICAgICAgICAgICAgICAiaG92ZXJJbmZvIjogZW50cnlbImhvdmVyIl1baV0ucmVwbGFj ZSgiU3VmZml4OiBOb25lIiwgIlN1ZmZpeDogdW5rbm93biIpLnJlcGxhY2UoIkVudHJ5OiBOb25l IiwgIkVudHJ5OiB1bmtub3duIikKLSsgICAgICAgICAgICAgICAgImhvdmVySW5mbyI6IChlbnRy eVsiaG92ZXIiXVtpXQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKCJT dWZmaXg6IE5vbmUiLCAiU3VmZml4OiB1bmtub3duIikKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAucmVwbGFjZSgiRW50cnk6IE5vbmUiLCAiRW50cnk6IHVua25vd24iKSksCi0rICAg ICAgICAgICAgICAgICJjc25JZCI6IGVudHJ5WyJjc25faWRzIl1baV0KLSAgICAgICAgICAgICB9 IGZvciBpIGluIGluZGljZXNdCi0gICAgICAgICAgICAgaG9wX3Nlcmllcy5hcHBlbmQoewotICAg ICAgICAgICAgICAgICAiZGF0YXBvaW50cyI6IGRhdGFwb2ludHMsCi1AQCAtMTcwMiw2ICsxOTU0 LDEzIEBAIGNsYXNzIFJlcGxpY2F0aW9uTG9nQW5hbHl6ZXI6Ci0gICAgICAgICAgICAgcmVkdWNl ZCArPSBzdW0obGVuKGl0ZW1bImRhdGFwb2ludHMiXSkgZm9yIGl0ZW0gaW4gaG9wX3NlcmllcykK LSAgICAgICAgICAgICBzYW1wbGluZ19tZXRhWyJyZWR1Y2VkVG90YWxQb2ludHMiXSA9IHJlZHVj ZWQKLSAKLSsgICAgICAgIHNhbXBsZWRfY3NuX2lkcyA9IE5vbmUKLSsgICAgICAgIGlmIHNhbXBs aW5nX21ldGFbImFwcGxpZWQiXToKLSsgICAgICAgICAgICBzYW1wbGVkX2Nzbl9pZHMgPSBzZWxm Ll9jb2xsZWN0X2Nzbl9pZHMoc2VyaWVzX2RhdGEpCi0rICAgICAgICAgICAgc2FtcGxlZF9jc25f aWRzLnVwZGF0ZShzZWxmLl9jb2xsZWN0X2Nzbl9pZHMoaG9wX3NlcmllcykpCi0rCi0rICAgICAg ICBjc25fZGV0YWlscyA9IHNlbGYuX2J1aWxkX2Nzbl9kZXRhaWxzKGNzbl93aGl0ZWxpc3Q9c2Ft cGxlZF9jc25faWRzKQotKwotICAgICAgICAgcGZfZGF0YSA9IHsKLSAgICAgICAgICAgICAicmVw bGljYXRpb25MYWdzIjogewotICAgICAgICAgICAgICAgICAidGl0bGUiOiAiR2xvYmFsIFJlcGxp Y2F0aW9uIExhZyBPdmVyIFRpbWUiLAotQEAgLTE3MTUsNiArMTk3NCw3IEBAIGNsYXNzIFJlcGxp Y2F0aW9uTG9nQW5hbHl6ZXI6Ci0gICAgICAgICAgICAgICAgICJ4QXhpc0xhYmVsIjogIlRpbWUi LAotICAgICAgICAgICAgICAgICAic2VyaWVzIjogaG9wX3NlcmllcwotICAgICAgICAgICAgIH0s Ci0rICAgICAgICAgICAgImNzbkRldGFpbHMiOiBjc25fZGV0YWlscywKLSAgICAgICAgICAgICAi bWV0YWRhdGEiOiB7Ci0gICAgICAgICAgICAgICAgICJ0b3RhbFNlcnZlcnMiOiBzZWxmLl9hY3Rp dmVfc2VydmVyX2NvdW50IG9yIGxlbihzZWxmLmxvZ19kaXJzKSwKLSAgICAgICAgICAgICAgICAg ImNvbmZpZ3VyZWRMb2dEaXJzIjogc2VsZi5sb2dfZGlycywKLS0tIAotMi41Mi4wCi0KCmRpZmYg LS1naXQgYS8wMDE3LUlzc3VlLTcyMjQtQ0ktVGVzdC1TaW1wbGlmeS10ZXN0X3Jlc2VydmVfZGVz Y3JpcHRvcl8ucGF0Y2ggYi8wMDE3LUlzc3VlLTcyMjQtQ0ktVGVzdC1TaW1wbGlmeS10ZXN0X3Jl c2VydmVfZGVzY3JpcHRvcl8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1 YTM5MWUuLjAwMDAwMDAKLS0tIGEvMDAxNy1Jc3N1ZS03MjI0LUNJLVRlc3QtU2ltcGxpZnktdGVz dF9yZXNlcnZlX2Rlc2NyaXB0b3JfLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBA QAotRnJvbSBkZTQ4ZGQwZGEzOGZjNzE1NzgzZThlZmFhZGE1YWY0YzIyMjk4YjBlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFtZXMgQ2hhcG1hbiA8amFjaGFwbWFAcmVkaGF0LmNv bT4KLURhdGU6IFRodSwgNSBGZWIgMjAyNiAxNTozMzowOCArMDAwMAotU3ViamVjdDogW1BBVENI XSBJc3N1ZSA3MjI0IC0gQ0kgVGVzdCAtIFNpbXBsaWZ5Ci0gdGVzdF9yZXNlcnZlX2Rlc2NyaXB0 b3JfdmFsaWRhdGlvbiAoIzcyMjUpCi0KLURlc2NyaXB0aW9uOgotUHJldmlvdXNseSwgdGhlIHRl c3RfcmVzZXJ2ZV9kZXNjcmlwdG9yX3ZhbGlkYXRpb24gQ0l0ZXN0IGNhbGN1bGF0ZWQKLXRoZSBl eHBlY3RlZCBudW1iZXIgb2YgZmlsZSBkZXNjcmlwdG9ycyBiYXNlZCBvbiBiYWNrZW5kcywgaW5k ZXhlcywKLVNTTC9GSVBTIG1vZGUsIGFuZCBjb21wYXJlZCBpdCB0byB0aGUgdmFsdWUgcmV0dXJu ZWQgYnkgdGhlIHNlcnZlci4KLVRoaXMgYXBwcm9hY2ggaXMgZnJhZ2lsZSwgZXNwZWNpYWxseSBp biBGSVBTIG1vZGUuCi0KLUZpeDoKLVRoZSB0ZXN0IGhhcyBiZWVuIHVwZGF0ZWQgdG8gc2ltcGx5 IHZlcmlmeSB0aGF0IHRoZSBzZXJ2ZXIgY29ycmVjdHMKLXRoZSBjb25maWd1cmVkIG5zc2xhcGQt cmVzZXJ2ZWRlc2NyaXB0b3JzIHZhbHVlIGlmIGl0IGlzIHNldCB0b28gbG93LAotaW5zdGVhZCBv ZiBjYWxjdWxhdGluZyB0aGUgZXhwZWN0ZWQgdG90YWwuCi0KLUZpeGVzOiBodHRwczovL2dpdGh1 Yi5jb20vMzg5ZHMvMzg5LWRzLWJhc2UvaXNzdWVzLzcyMjQKLQotUmV2aWV3ZWQgYnk6IEBic2lt b25vdmEgIChUaGFuayB5b3UpCi0tLS0KLSAuLi4vc3VpdGVzL3Jlc291cmNlX2xpbWl0cy9mZGxp bWl0c190ZXN0LnB5ICAgfCAzNiArKysrKysrLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQs IDEzIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZGlyc3J2 dGVzdHMvdGVzdHMvc3VpdGVzL3Jlc291cmNlX2xpbWl0cy9mZGxpbWl0c190ZXN0LnB5IGIvZGly c3J2dGVzdHMvdGVzdHMvc3VpdGVzL3Jlc291cmNlX2xpbWl0cy9mZGxpbWl0c190ZXN0LnB5Ci1p bmRleCBjODQzYTRiMjQuLmE0OWUzNzhjMyAxMDA2NDQKLS0tLSBhL2RpcnNydnRlc3RzL3Rlc3Rz L3N1aXRlcy9yZXNvdXJjZV9saW1pdHMvZmRsaW1pdHNfdGVzdC5weQotKysrIGIvZGlyc3J2dGVz dHMvdGVzdHMvc3VpdGVzL3Jlc291cmNlX2xpbWl0cy9mZGxpbWl0c190ZXN0LnB5Ci1AQCAtMjcs NyArMjcsNyBAQCBSRVNSVl9GRF9BVFRSID0gIm5zc2xhcGQtcmVzZXJ2ZWRlc2NyaXB0b3JzIgot IEdMT0JBTF9MSU1JVCA9IHJlc291cmNlLmdldHJsaW1pdChyZXNvdXJjZS5STElNSVRfTk9GSUxF KVsxXQotIFNZU1RFTURfTElNSVQgPSBlbnN1cmVfc3RyKGNoZWNrX291dHB1dCgic3lzdGVtY3Rs IHNob3cgLXAgTGltaXROT0ZJTEUgZGlyc3J2QHN0YW5kYWxvbmUxIi5zcGxpdCgiICIpKS5zdHJp cCgpKS5zcGxpdCgnPScpWzFdCi0gQ1VTVE9NX1ZBTCA9IHN0cihpbnQoU1lTVEVNRF9MSU1JVCkg LSAxMCkKLS1SRVNSVl9ERVNDX1ZBTCA9IHN0cigxMCkKLStSRVNSVl9ERVNDX1ZBTF9MT1cgPSAx MAotIFRPT19ISUdIX1ZBTCA9IHN0cihHTE9CQUxfTElNSVQgKiAyKQotIFRPT19ISUdIX1ZBTDIg PSBzdHIoaW50KFNZU1RFTURfTElNSVQpICogMikKLSBUT09fTE9XX1ZBTCA9ICIwIgotQEAgLTg2 LDQwICs4NiwzMCBAQCBkZWYgdGVzdF9yZXNlcnZlX2Rlc2NyaXB0b3JfdmFsaWRhdGlvbih0b3Bv bG9neV9zdCk6Ci0gICAgIDppZDogOWJhY2RiY2MtNzc1NC00OTU1LThhNTYtMWQ4YzgyYmNlMjc0 Ci0gICAgIDpzZXR1cDogU3RhbmRhbG9uZSBJbnN0YW5jZQotICAgICA6c3RlcHM6Ci0tICAgICAg ICAxLiBTZXQgYXR0ciBuc3NsYXBkLXJlc2VydmVkZXNjcmlwdG9ycyB0byBhIGxvdyB2YWx1ZSBv ZiBSRVNSVl9ERVNDX1ZBTCAoMTApCi0rICAgICAgICAxLiBTZXQgYXR0ciBuc3NsYXBkLXJlc2Vy dmVkZXNjcmlwdG9ycyB0byBhIGxvdyB2YWx1ZSAoMTApCi0gICAgICAgICAyLiBWZXJpZnkgbG93 IHZhbHVlIGhhcyBiZWVuIHNldAotICAgICAgICAgMy4gUmVzdGFydCBpbnN0YW5jZSAoT24gcmVz dGFydCB0aGUgcmVzZXJ2ZWRlc2NyaXB0b3IgYXR0ciB3aWxsIGJlIHZhbGlkYXRlZCkKLS0gICAg ICAgIDQuIENoZWNrIHVwZGF0ZWQgdmFsdWUgZm9yIG5zc2xhcGQtcmVzZXJ2ZWRlc2NyaXB0b3Jz IGF0dHIKLSsgICAgICAgIDQuIFZlcmlmeSBjb3JyZWN0ZWQgdmFsdWUgZm9yIG5zc2xhcGQtcmVz ZXJ2ZWRlc2NyaXB0b3JzID4gbG93IHZhbHVlCi0gICAgIDpleHBlY3RlZHJlc3VsdHM6Ci0gICAg ICAgICAxLiBTdWNjZXNzCi0tICAgICAgICAyLiBBIHZhbHVlIG9mIFJFU1JWX0RFU0NfVkFMICgx MCkgaXMgcmV0dXJuZWQKLSsgICAgICAgIDIuIEEgdmFsdWUgb2YgUkVTUlZfREVTQ19WQUxfTE9X ICgxMCkgaXMgcmV0dXJuZWQKLSAgICAgICAgIDMuIFN1Y2Nlc3MKLS0gICAgICAgIDQuIEEgdmFs dWUgb2YgU1RBTkRBTE9ORV9JTlNUX1JFU1JWX0RFU0NTICg1NSkgaXMgcmV0dXJuZWQKLSsgICAg ICAgIDQuIENvcnJlY3RlZCB2YWx1ZSBmb3IgbnNzbGFwZC1yZXNlcnZlZGVzY3JpcHRvcnMgPiBs b3cgdmFsdWUKLSAgICAgIiIiCi0gCi0tICAgICMgU2V0IG5zc2xhcGQtcmVzZXJ2ZWRlc2NyaXB0 b3JzIHRvIGEgbG93IHZhbHVlIChSRVNSVl9ERVNDX1ZBTDoxMCkKLS0gICAgdG9wb2xvZ3lfc3Qu c3RhbmRhbG9uZS5jb25maWcuc2V0KFJFU1JWX0ZEX0FUVFIsIFJFU1JWX0RFU0NfVkFMKQotLSAg ICByZXNydl9mZCA9IHRvcG9sb2d5X3N0LnN0YW5kYWxvbmUuY29uZmlnLmdldF9hdHRyX3ZhbF91 dGY4KFJFU1JWX0ZEX0FUVFIpCi0tICAgIGFzc2VydCByZXNydl9mZCA9PSBSRVNSVl9ERVNDX1ZB TAotKyAgICAjIFNldCBuc3NsYXBkLXJlc2VydmVkZXNjcmlwdG9ycyB0byBhIGxvdyB2YWx1ZSAo MTApCi0rICAgIHRvcG9sb2d5X3N0LnN0YW5kYWxvbmUuY29uZmlnLnNldChSRVNSVl9GRF9BVFRS LCBzdHIoUkVTUlZfREVTQ19WQUxfTE9XKSkKLSsgICAgcmVzcnZfZmQgPSBpbnQodG9wb2xvZ3lf c3Quc3RhbmRhbG9uZS5jb25maWcuZ2V0X2F0dHJfdmFsX3V0ZjgoUkVTUlZfRkRfQVRUUikpCi0r ICAgIGFzc2VydCByZXNydl9mZCA9PSBSRVNSVl9ERVNDX1ZBTF9MT1cKLSAKLSAgICAgIyBBbiBp bnN0YW5jZSByZXN0YXJ0IHRyaWdnZXJzIGEgdmFsaWRhdGlvbiBvZiB0aGUgY29uZmlndXJlZCBu c3NsYXBkLXJlc2VydmVkZXNjcmlwdG9ycyBhdHRyaWJ1dGUKLSAgICAgdG9wb2xvZ3lfc3Quc3Rh bmRhbG9uZS5yZXN0YXJ0KCkKLSAKLS0gICAgIiIiCi0tICAgIEEgc3RhbmRhbG9uZSBpbnN0YW5j ZSBjb250YWlucyBhIHNpbmdsZSBiYWNrZW5kIHdpdGggZGVmYXVsdCBpbmRleGVzCi0tICAgIHNv IHdlIG9ubHkgY2hlY2sgdGhlc2UuIFRPRE8gYWRkIHRlc3RzIGZvciByZXBsLCBjaGFpbmluZywg UFRBLCBTU0wKLS0gICAgIiIiCi0tICAgIFNUQU5EQUxPTkVfSU5TVF9SRVNSVl9ERVNDUyA9IDI1 IGlmIGlzX2ZpcHMoKSBlbHNlIDIwICMgUmVzZXJ2ZSBkZXNjcmlwdG9yIGNvbnN0YW50IChoaWdo ZXIgaW4gRklQUyBtb2RlKQotLSAgICBiYWNrZW5kcyA9IEJhY2tlbmRzKHRvcG9sb2d5X3N0LnN0 YW5kYWxvbmUpCi0tICAgIFNUQU5EQUxPTkVfSU5TVF9SRVNSVl9ERVNDUyArPSAobGVuKGJhY2tl bmRzLmxpc3QoKSkgKiA0KSAjIDQgPSBCYWNrZW5kIGRlc2NyaXB0b3IgY29uc3RhbnQKLS0gICAg Zm9yIGJlIGluIGJhY2tlbmRzLmxpc3QoKSA6Ci0tICAgICAgICBTVEFOREFMT05FX0lOU1RfUkVT UlZfREVTQ1MgKz0gbGVuKGJlLmdldF9pbmRleGVzKCkubGlzdCgpKQotLQotLSAgICAjIFZhcmlm eSByZXNlcnZlZGVzY3JpcHRvcnMgaGFzIGJlZW4gdXBkYXRlZAotLSAgICByZXNydl9mZCA9IHRv cG9sb2d5X3N0LnN0YW5kYWxvbmUuY29uZmlnLmdldF9hdHRyX3ZhbF91dGY4KFJFU1JWX0ZEX0FU VFIpCi0tICAgIGFzc2VydCByZXNydl9mZCA9PSBzdHIoU1RBTkRBTE9ORV9JTlNUX1JFU1JWX0RF U0NTKQotKyAgICAjIEdldCB0aGUgY29ycmVjdGVkIHZhbHVlCi0rICAgIGNvcnJlY3RlZF9mZCA9 IGludCh0b3BvbG9neV9zdC5zdGFuZGFsb25lLmNvbmZpZy5nZXRfYXR0cl92YWxfdXRmOChSRVNS Vl9GRF9BVFRSKSkKLSsgICAgYXNzZXJ0IGNvcnJlY3RlZF9mZCA+IFJFU1JWX0RFU0NfVkFMX0xP VwotIAotLSAgICBsb2cuaW5mbygidGVzdF9yZXNlcnZlX2Rlc2NyaXB0b3JfdmFsaWRhdGlvbiBQ QVNTRUQiKQotKyAgICBsb2cuaW5mbyhmInRlc3RfcmVzZXJ2ZV9kZXNjcmlwdG9yX3ZhbGlkYXRp b24gUEFTU0VEIChjb3JyZWN0ZWQgZnJvbSB7UkVTUlZfREVTQ19WQUxfTE9XfSB0byB7Y29ycmVj dGVkX2ZkfSkiKQotIAotIEBweXRlc3QubWFyay5za2lwaWYoZHNfaXNfb2xkZXIoIjEuNC4xLjIi KSwgcmVhc29uPSJOb3QgaW1wbGVtZW50ZWQiKQotIGRlZiB0ZXN0X3Jlc2VydmVfZGVzY3JpcHRv cnNfaGlnaCh0b3BvbG9neV9zdCk6Ci0tLSAKLTIuNTIuMAotCgpkaWZmIC0tZ2l0IGEvMDAxOC1J c3N1ZS03MjIzLVJldmVydC1pbmRleC1zY2FuLWxpbWl0cy1mb3Itc3lzdGVtLWluZGV4LnBhdGNo IGIvMDAxOC1Jc3N1ZS03MjIzLVJldmVydC1pbmRleC1zY2FuLWxpbWl0cy1mb3Itc3lzdGVtLWlu ZGV4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGM1YWYyLi4wMDAwMDAw Ci0tLSBhLzAwMTgtSXNzdWUtNzIyMy1SZXZlcnQtaW5kZXgtc2Nhbi1saW1pdHMtZm9yLXN5c3Rl bS1pbmRleC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc3OCArMCwwIEBACi1Gcm9tIGJkYjJi ODVkYWExMzU4YTE4MmNmNTNiZjY4YmJlMDE5ZGI1ZjgyYzMgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCi1Gcm9tOiBWaWt0b3IgQXNoaXJvdiA8dmFzaGlyb3ZAcmVkaGF0LmNvbT4KLURhdGU6IFRo dSwgNSBGZWIgMjAyNiAxMjoxNzowNiArMDEwMAotU3ViamVjdDogW1BBVENIXSBJc3N1ZSA3MjIz IC0gUmV2ZXJ0IGluZGV4IHNjYW4gbGltaXRzIGZvciBzeXN0ZW0gaW5kZXhlcwotCi1UaGlzIHJl dmVydHMgY2hhbmdlcyBpbnRyb2R1Y2VkIGJ5IHRoZSBmb2xsb3dpbmcgY29tbWl0czoKLWM2ZjQ1 OGI0MiBJc3N1ZSA3MTg5IC0gRFNCTEUwMDA3IGdlbmVyYXRlcyBpbmNvcnJlY3QgcmVtZWRpYXRp b24gY29tbWFuZHMgZm9yIHNjYW4gbGltaXRzCi04YjZiM2E5ZjkgSXNzdWUgNjk2NiAtIE9uIGxh cmdlIERCLCB1bmxpbWl0ZWQgSURMIHNjYW4gbGltaXQgcmVkdWNlIHRoZSBTUkNIIHBlcmZvcm1h bmNlCi0KLVJlbGF0ZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS8zODlkcy8zODktZHMtYmFzZS9pc3N1 ZXMvNzIyMwotCi1SZXZpZXdlZCBieTogQHByb2dpZXIzODksIEB0Ym9yZGF6LCBAZHJvaWRlY2sg KFRoYW5rcyEpCi0tLS0KLSAuLi4vdGVzdHMvc3VpdGVzL2NvbmZpZy9jb25maWdfdGVzdC5weSAg ICAgICAgfCAgMjcgKy0tLQotIC4uLi9oZWFsdGhjaGVjay9oZWFsdGhfc3lzdGVtX2luZGV4ZXNf dGVzdC5weSB8IDEzNiArLS0tLS0tLS0tLS0tLS0tLS0KLSAuLi4vcGFnZWRfcmVzdWx0cy9wYWdl ZF9yZXN1bHRzX3Rlc3QucHkgICAgICAgfCAgMjUgKy0tLQotIGxkYXAvc2VydmVycy9zbGFwZC9i YWNrLWxkYm0vYmFjay1sZGJtLmggICAgICB8ICAgMSAtCi0gbGRhcC9zZXJ2ZXJzL3NsYXBkL2Jh Y2stbGRibS9pbmRleC5jICAgICAgICAgIHwgICAyIC0KLSBsZGFwL3NlcnZlcnMvc2xhcGQvYmFj ay1sZGJtL2luc3RhbmNlLmMgICAgICAgfCAxMDQgKysrLS0tLS0tLS0tLS0KLSBsZGFwL3NlcnZl cnMvc2xhcGQvYmFjay1sZGJtL2xkYm1fY29uZmlnLmMgICAgfCAgMzAgLS0tLQotIGxkYXAvc2Vy dmVycy9zbGFwZC9iYWNrLWxkYm0vbGRibV9jb25maWcuaCAgICB8ICAgMSAtCi0gLi4uL3NsYXBk L2JhY2stbGRibS9sZGJtX2luZGV4X2NvbmZpZy5jICAgICAgIHwgICA4IC0tCi0gc3JjL2xpYjM4 OS9saWIzODkvYmFja2VuZC5weSAgICAgICAgICAgICAgICAgIHwgIDUwICsrLS0tLS0KLSBzcmMv bGliMzg5L2xpYjM4OS9jbGlfY29uZi9iYWNrZW5kLnB5ICAgICAgICAgfCAgMjAgLS0tCi0gMTEg ZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMzY0IGRlbGV0aW9ucygtKQotCi1kaWZm IC0tZ2l0IGEvZGlyc3J2dGVzdHMvdGVzdHMvc3VpdGVzL2NvbmZpZy9jb25maWdfdGVzdC5weSBi L2RpcnNydnRlc3RzL3Rlc3RzL3N1aXRlcy9jb25maWcvY29uZmlnX3Rlc3QucHkKLWluZGV4IGNi Yjg4NzVmYS4uMmM3ZDk0OWQwIDEwMDY0NAotLS0tIGEvZGlyc3J2dGVzdHMvdGVzdHMvc3VpdGVz L2NvbmZpZy9jb25maWdfdGVzdC5weQotKysrIGIvZGlyc3J2dGVzdHMvdGVzdHMvc3VpdGVzL2Nv bmZpZy9jb25maWdfdGVzdC5weQotQEAgLTcwNiwxOSArNzA2LDE3IEBAIGRlZiB0ZXN0X25kbl9j YWNoZV9zaXplX2VuZm9yY2VtZW50KHRvcG8sIHJlcXVlc3QpOgotIAotICAgICByZXF1ZXN0LmFk ZGZpbmFsaXplcihmaW4pCi0gCi0tZGVmIHRlc3RfcmVxdWlyZV9pbmRleCh0b3BvLCByZXF1ZXN0 KToKLStkZWYgdGVzdF9yZXF1aXJlX2luZGV4KHRvcG8pOgotICAgICAiIiJWYWxpZGF0ZSB0aGF0 IHVuaW5kZXhlZCBzZWFyY2hlcyBhcmUgcmVqZWN0ZWQKLSAKLSAgICAgOmlkOiBmYjZlMzFmMi1h Y2MyLTRlNzUtYTE5NS01YzM1NmZhZWI4MDMKLSAgICAgOnNldHVwOiBTdGFuZGFsb25lIGluc3Rh bmNlCi0gICAgIDpzdGVwczoKLSAgICAgICAgIDEuIFNldCAibnNzbGFwZC1yZXF1aXJlLWluZGV4 IiB0byAib24iCi0tICAgICAgICAyLiBhbmNlc3RvcmlkL2lkbHNjYW5saW1pdCB0byAxMDAKLS0g ICAgICAgIDMuIFRlc3QgYW4gdW5pbmRleGVkIHNlYXJjaCBpcyByZWplY3RlZAotKyAgICAgICAg Mi4gVGVzdCBhbiB1bmluZGV4ZWQgc2VhcmNoIGlzIHJlamVjdGVkCi0gICAgIDpleHBlY3RlZHJl c3VsdHM6Ci0gICAgICAgICAxLiBTdWNjZXNzCi0gICAgICAgICAyLiBTdWNjZXNzCi0tICAgICAg ICAzLiBTdWNjZXNzCi0gICAgICIiIgotIAotICAgICAjIFNldCB0aGUgY29uZmlnCi1AQCAtNzI5 LDEwICs3MjcsNiBAQCBkZWYgdGVzdF9yZXF1aXJlX2luZGV4KHRvcG8sIHJlcXVlc3QpOgotIAot ICAgICBkYl9jZmcgPSBEYXRhYmFzZUNvbmZpZyh0b3BvLnN0YW5kYWxvbmUpCi0gICAgIGRiX2Nm Zy5zZXQoWygnbnNzbGFwZC1pZGxpc3RzY2FubGltaXQnLCAnMTAwJyldKQotLSAgICBiYWNrZW5k ID0gQmFja2VuZHModG9wby5zdGFuZGFsb25lKS5nZXRfYmFja2VuZChERUZBVUxUX1NVRkZJWCkK LS0gICAgYW5jZXN0b3JpZF9pbmRleCA9IGJhY2tlbmQuZ2V0X2luZGV4KCdhbmNlc3RvcmlkJykK LS0gICAgYW5jZXN0b3JpZF9pbmRleC5yZXBsYWNlKCJuc0luZGV4SURMaXN0U2NhbkxpbWl0Iiwg ZW5zdXJlX2J5dGVzKCJsaW1pdD0xMDAgdHlwZT1lcSBmbGFncz1BTkQiKSkKLS0gICAgdG9wby5z dGFuZGFsb25lLnJlc3RhcnQoKQotIAotICAgICB1c2VycyA9IFVzZXJBY2NvdW50cyh0b3BvLnN0 YW5kYWxvbmUsIERFRkFVTFRfU1VGRklYKQotICAgICBmb3IgaSBpbiByYW5nZSgxMDEpOgotQEAg LTc0MywxNSArNzM3LDEwIEBAIGRlZiB0ZXN0X3JlcXVpcmVfaW5kZXgodG9wbywgcmVxdWVzdCk6 Ci0gICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhsZGFwLlVOV0lMTElOR19UT19QRVJGT1JNKToKLSAg ICAgICAgIHJhd19vYmplY3RzLmZpbHRlcigiKGRlc2NyaXB0aW9uPXRlc3QqKSIpCi0gCi0tICAg IGRlZiBmaW4oKToKLS0gICAgICAgIGFuY2VzdG9yaWRfaW5kZXgucmVwbGFjZSgibnNJbmRleElE TGlzdFNjYW5MaW1pdCIsIGVuc3VyZV9ieXRlcygibGltaXQ9NTAwMCB0eXBlPWVxIGZsYWdzPUFO RCIpKQotLQotLSAgICByZXF1ZXN0LmFkZGZpbmFsaXplcihmaW4pCi0tCi0gCi0gCi0gQHB5dGVz dC5tYXJrLnNraXBpZihkc19pc19vbGRlcignMS40LjInKSwgcmVhc29uPSJUaGUgY29uZmlnIHNl dHRpbmcgb25seSBleGlzdHMgaW4gMS40LjIgYW5kIGhpZ2hlciIpCi0tZGVmIHRlc3RfcmVxdWly ZV9pbnRlcm5hbF9pbmRleCh0b3BvLCByZXF1ZXN0KToKLStkZWYgdGVzdF9yZXF1aXJlX2ludGVy bmFsX2luZGV4KHRvcG8pOgotICAgICAiIiJFbnN1cmUgaW50ZXJuYWwgb3BlcmF0aW9ucyByZXF1 aXJlIGluZGV4ZWQgYXR0cmlidXRlcwotIAotICAgICA6aWQ6IDIyYjk0ZjMwLTU5ZTMtNGYyNy04 OWExLWM0ZjRiZTAzNmY3ZgotQEAgLTc4MiwxMCArNzcxLDYgQEAgZGVmIHRlc3RfcmVxdWlyZV9p bnRlcm5hbF9pbmRleCh0b3BvLCByZXF1ZXN0KToKLSAgICAgIyBDcmVhdGUgYSBidW5jaCBvZiB1 c2VycwotICAgICBkYl9jZmcgPSBEYXRhYmFzZUNvbmZpZyh0b3BvLnN0YW5kYWxvbmUpCi0gICAg IGRiX2NmZy5zZXQoWygnbnNzbGFwZC1pZGxpc3RzY2FubGltaXQnLCAnMTAwJyldKQotLSAgICBi YWNrZW5kID0gQmFja2VuZHModG9wby5zdGFuZGFsb25lKS5nZXRfYmFja2VuZChERUZBVUxUX1NV RkZJWCkKLS0gICAgYW5jZXN0b3JpZF9pbmRleCA9IGJhY2tlbmQuZ2V0X2luZGV4KCdhbmNlc3Rv cmlkJykKLS0gICAgYW5jZXN0b3JpZF9pbmRleC5yZXBsYWNlKCJuc0luZGV4SURMaXN0U2Nhbkxp bWl0IiwgZW5zdXJlX2J5dGVzKCJsaW1pdD0xMDAgdHlwZT1lcSBmbGFncz1BTkQiKSkKLS0gICAg dG9wby5zdGFuZGFsb25lLnJlc3RhcnQoKQotICAgICB1c2VycyA9IFVzZXJBY2NvdW50cyh0b3Bv LnN0YW5kYWxvbmUsIERFRkFVTFRfU1VGRklYKQotICAgICBmb3IgaSBpbiByYW5nZSgxMDIsIDIw Mik6Ci0gICAgICAgICB1c2Vycy5jcmVhdGVfdGVzdF91c2VyKHVpZD1pKQotQEAgLTgxMCwxMiAr Nzk1LDYgQEAgZGVmIHRlc3RfcmVxdWlyZV9pbnRlcm5hbF9pbmRleCh0b3BvLCByZXF1ZXN0KToK LSAgICAgd2l0aCBweXRlc3QucmFpc2VzKGxkYXAuVU5XSUxMSU5HX1RPX1BFUkZPUk0pOgotICAg ICAgICAgdXNlci5kZWxldGUoKQotIAotLSAgICBkZWYgZmluKCk6Ci0tICAgICAgICBhbmNlc3Rv cmlkX2luZGV4LnJlcGxhY2UoIm5zSW5kZXhJRExpc3RTY2FuTGltaXQiLCBlbnN1cmVfYnl0ZXMo ImxpbWl0PTUwMDAgdHlwZT1lcSBmbGFncz1BTkQiKSkKLS0KLS0gICAgcmVxdWVzdC5hZGRmaW5h bGl6ZXIoZmluKQotLQotLQotIAotIGRlZiBnZXRfcHN0YWNrKHBpZCk6Ci0gICAgICIiIkdldCBh IHBzdGFjayBvZiB0aGUgcGlkLiIiIgotZGlmZiAtLWdpdCBhL2RpcnNydnRlc3RzL3Rlc3RzL3N1 aXRlcy9oZWFsdGhjaGVjay9oZWFsdGhfc3lzdGVtX2luZGV4ZXNfdGVzdC5weSBiL2RpcnNydnRl c3RzL3Rlc3RzL3N1aXRlcy9oZWFsdGhjaGVjay9oZWFsdGhfc3lzdGVtX2luZGV4ZXNfdGVzdC5w eQotaW5kZXggNDg2ZmFkNDRiLi4xNDA4NDVhMzMgMTAwNjQ0Ci0tLS0gYS9kaXJzcnZ0ZXN0cy90 ZXN0cy9zdWl0ZXMvaGVhbHRoY2hlY2svaGVhbHRoX3N5c3RlbV9pbmRleGVzX3Rlc3QucHkKLSsr KyBiL2RpcnNydnRlc3RzL3Rlc3RzL3N1aXRlcy9oZWFsdGhjaGVjay9oZWFsdGhfc3lzdGVtX2lu ZGV4ZXNfdGVzdC5weQotQEAgLTE3Miw5ICsxNzIsNyBAQCBkZWYgdGVzdF9taXNzaW5nX3BhcmVu dGlkKHRvcG9sb2d5X3N0LCBsb2dfYnVmZmVyaW5nX2VuYWJsZWQpOgotIAotICAgICBsb2cuaW5m bygiUmUtYWRkIHRoZSBwYXJlbnRJZCBpbmRleCIpCi0gICAgIGJhY2tlbmQgPSBCYWNrZW5kcyhz dGFuZGFsb25lKS5nZXQoInVzZXJSb290IikKLS0gICAgYmFja2VuZC5hZGRfaW5kZXgoInBhcmVu dGlkIiwgWyJlcSJdLCBtYXRjaGluZ19ydWxlcz1bImludGVnZXJPcmRlcmluZ01hdGNoIl0sCi0t ICAgICAgICAgICAgICAgICAgICAgIGlkbGlzdHNjYW5saW1pdD1bJ2xpbWl0PTUwMDAgdHlwZT1l cSBmbGFncz1BTkQnXSkKLS0gICAgc3RhbmRhbG9uZS5yZXN0YXJ0KCkKLSsgICAgYmFja2VuZC5h ZGRfaW5kZXgoInBhcmVudGlkIiwgWyJlcSJdLCBtYXRjaGluZ19ydWxlcz1bImludGVnZXJPcmRl cmluZ01hdGNoIl0pCi0gCi0gICAgIHJ1bl9oZWFsdGhjaGVja19hbmRfZmx1c2hfbG9nKHRvcG9s b2d5X3N0LCBzdGFuZGFsb25lLCBqc29uPUZhbHNlLCBzZWFyY2hlZF9jb2RlPUNNRF9PVVRQVVQp Ci0gICAgIHJ1bl9oZWFsdGhjaGVja19hbmRfZmx1c2hfbG9nKHRvcG9sb2d5X3N0LCBzdGFuZGFs b25lLCBqc29uPVRydWUsIHNlYXJjaGVkX2NvZGU9SlNPTl9PVVRQVVQpCi1AQCAtMjYzLDggKzI2 MSw3IEBAIGRlZiB0ZXN0X3Vzbl9wbHVnaW5fbWlzc2luZ19lbnRyeXVzbih0b3BvbG9neV9zdCwg dXNuX3BsdWdpbl9lbmFibGVkLCBsb2dfYnVmZmVyCi0gCi0gICAgIGxvZy5pbmZvKCJSZS1hZGQg dGhlIGVudHJ5dXNuIGluZGV4IikKLSAgICAgYmFja2VuZCA9IEJhY2tlbmRzKHN0YW5kYWxvbmUp LmdldCgidXNlclJvb3QiKQotLSAgICBiYWNrZW5kLmFkZF9pbmRleCgiZW50cnl1c24iLCBbImVx Il0sIG1hdGNoaW5nX3J1bGVzPVsiaW50ZWdlck9yZGVyaW5nTWF0Y2giXSwKLS0gICAgICAgICAg ICAgICAgICAgICAgaWRsaXN0c2NhbmxpbWl0PVsnbGltaXQ9NTAwMCB0eXBlPWVxIGZsYWdzPUFO RCddKQotKyAgICBiYWNrZW5kLmFkZF9pbmRleCgiZW50cnl1c24iLCBbImVxIl0sIG1hdGNoaW5n X3J1bGVzPVsiaW50ZWdlck9yZGVyaW5nTWF0Y2giXSkKLSAKLSAgICAgcnVuX2hlYWx0aGNoZWNr X2FuZF9mbHVzaF9sb2codG9wb2xvZ3lfc3QsIHN0YW5kYWxvbmUsIGpzb249RmFsc2UsIHNlYXJj aGVkX2NvZGU9Q01EX09VVFBVVCkKLSAgICAgcnVuX2hlYWx0aGNoZWNrX2FuZF9mbHVzaF9sb2co dG9wb2xvZ3lfc3QsIHN0YW5kYWxvbmUsIGpzb249VHJ1ZSwgc2VhcmNoZWRfY29kZT1KU09OX09V VFBVVCkKLUBAIC00MDgsMTMyICs0MDUsNiBAQCBkZWYgdGVzdF9yZXRyb2NsX3BsdWdpbl9taXNz aW5nX21hdGNoaW5nX3J1bGUodG9wb2xvZ3lfc3QsIHJldHJvY2xfcGx1Z2luX2VuYWJsZQotICAg ICBydW5faGVhbHRoY2hlY2tfYW5kX2ZsdXNoX2xvZyh0b3BvbG9neV9zdCwgc3RhbmRhbG9uZSwg anNvbj1UcnVlLCBzZWFyY2hlZF9jb2RlPUpTT05fT1VUUFVUKQotIAotIAotLWRlZiB0ZXN0X21p c3Npbmdfc2NhbmxpbWl0KHRvcG9sb2d5X3N0LCBsb2dfYnVmZmVyaW5nX2VuYWJsZWQpOgotLSAg ICAiIiJDaGVjayBpZiBoZWFsdGhjaGVjayByZXR1cm5zIERTQkxFMDAwNyBjb2RlIHdoZW4gcGFy ZW50SWQgaW5kZXggaXMgbWlzc2luZyBzY2FubGltaXQKLS0KLS0gICAgOmlkOiA0MGUxYmY2YS0y Mzk3LTQ1OWItYmRmMy1mNzg3Y2ExMThiODYKLS0gICAgOnNldHVwOiBTdGFuZGFsb25lIGluc3Rh bmNlCi0tICAgIDpzdGVwczoKLS0gICAgICAgIDEuIENyZWF0ZSBEUyBpbnN0YW5jZQotLSAgICAg ICAgMi4gUmVtb3ZlIG5zSW5kZXhJRExpc3RTY2FuTGltaXQgZnJvbSBwYXJlbnRJZCBpbmRleAot LSAgICAgICAgMy4gVXNlIGhlYWx0aGNoZWNrIHdpdGhvdXQgLS1qc29uIG9wdGlvbgotLSAgICAg ICAgNC4gVXNlIGhlYWx0aGNoZWNrIHdpdGggLS1qc29uIG9wdGlvbgotLSAgICAgICAgNS4gVmVy aWZ5IHRoZSByZW1lZGlhdGlvbiBjb21tYW5kIGhhcyBwcm9wZXJseSBxdW90ZWQgc2NhbmxpbWl0 Ci0tICAgICAgICA2LiBSZS1hZGQgdGhlIHNjYW5saW1pdAotLSAgICAgICAgNy4gVXNlIGhlYWx0 aGNoZWNrIHdpdGhvdXQgLS1qc29uIG9wdGlvbgotLSAgICAgICAgOC4gVXNlIGhlYWx0aGNoZWNr IHdpdGggLS1qc29uIG9wdGlvbgotLSAgICA6ZXhwZWN0ZWRyZXN1bHRzOgotLSAgICAgICAgMS4g U3VjY2VzcwotLSAgICAgICAgMi4gU3VjY2VzcwotLSAgICAgICAgMy4gaGVhbHRoY2hlY2sgcmVw b3J0cyBEU0JMRTAwMDcgY29kZSBhbmQgcmVsYXRlZCBkZXRhaWxzCi0tICAgICAgICA0LiBoZWFs dGhjaGVjayByZXBvcnRzIERTQkxFMDAwNyBjb2RlIGFuZCByZWxhdGVkIGRldGFpbHMKLS0gICAg ICAgIDUuIFRoZSBzY2FubGltaXQgdmFsdWUgaXMgcXVvdGVkIGluIHRoZSByZW1lZGlhdGlvbiBj b21tYW5kCi0tICAgICAgICA2LiBTdWNjZXNzCi0tICAgICAgICA3LiBoZWFsdGhjaGVjayByZXBv cnRzIG5vIGlzc3VlcyBmb3VuZAotLSAgICAgICAgOC4gaGVhbHRoY2hlY2sgcmVwb3J0cyBubyBp c3N1ZXMgZm91bmQKLS0gICAgIiIiCi0tCi0tICAgIFJFVF9DT0RFID0gIkRTQkxFMDAwNyIKLS0g ICAgUEFSRU5USURfRE4gPSAiY249cGFyZW50aWQsY249aW5kZXgsY249dXNlcnJvb3QsY249bGRi bSBkYXRhYmFzZSxjbj1wbHVnaW5zLGNuPWNvbmZpZyIKLS0gICAgU0NBTkxJTUlUX1ZBTFVFID0g ImxpbWl0PTUwMDAgdHlwZT1lcSBmbGFncz1BTkQiCi0tCi0tICAgIHN0YW5kYWxvbmUgPSB0b3Bv bG9neV9zdC5zdGFuZGFsb25lCi0tCi0tICAgIGxvZy5pbmZvKCJSZW1vdmUgbnNJbmRleElETGlz dFNjYW5MaW1pdCBmcm9tIHBhcmVudElkIGluZGV4IikKLS0gICAgcGFyZW50aWRfaW5kZXggPSBJ bmRleChzdGFuZGFsb25lLCBQQVJFTlRJRF9ETikKLS0gICAgcGFyZW50aWRfaW5kZXgucmVtb3Zl KCJuc0luZGV4SURMaXN0U2NhbkxpbWl0IiwgU0NBTkxJTUlUX1ZBTFVFKQotLQotLSAgICBydW5f aGVhbHRoY2hlY2tfYW5kX2ZsdXNoX2xvZyh0b3BvbG9neV9zdCwgc3RhbmRhbG9uZSwganNvbj1G YWxzZSwgc2VhcmNoZWRfY29kZT1SRVRfQ09ERSkKLS0KLS0gICAgIyBWZXJpZnkgdGhlIHJlbWVk aWF0aW9uIGNvbW1hbmQgaGFzIHByb3Blcmx5IHF1b3RlZCBzY2FubGltaXQKLS0gICAgYXJncyA9 IEZha2VBcmdzKCkKLS0gICAgYXJncy5pbnN0YW5jZSA9IHN0YW5kYWxvbmUuc2VydmVyaWQKLS0g ICAgYXJncy52ZXJib3NlID0gc3RhbmRhbG9uZS52ZXJib3NlCi0tICAgIGFyZ3MubGlzdF9lcnJv cnMgPSBGYWxzZQotLSAgICBhcmdzLmxpc3RfY2hlY2tzID0gRmFsc2UKLS0gICAgYXJncy5leGNs dWRlX2NoZWNrID0gW10KLS0gICAgYXJncy5jaGVjayA9IFsiYmFja2VuZHMiXQotLSAgICBhcmdz LmRyeV9ydW4gPSBGYWxzZQotLSAgICBhcmdzLmpzb24gPSBGYWxzZQotLSAgICBoZWFsdGhfY2hl Y2tfcnVuKHN0YW5kYWxvbmUsIHRvcG9sb2d5X3N0LmxvZ2NhcC5sb2csIGFyZ3MpCi0tICAgICMg Q2hlY2sgdGhhdCB0aGUgc2NhbmxpbWl0IGlzIHF1b3RlZCBpbiB0aGUgb3V0cHV0Ci0tICAgIGFz c2VydCB0b3BvbG9neV9zdC5sb2djYXAuY29udGFpbnMoJy0tYWRkLXNjYW5saW1pdCAibGltaXQ9 NTAwMCB0eXBlPWVxIGZsYWdzPUFORCInKQotLSAgICBsb2cuaW5mbygiVmVyaWZpZWQgc2Nhbmxp bWl0IGlzIHByb3Blcmx5IHF1b3RlZCBpbiByZW1lZGlhdGlvbiBjb21tYW5kIikKLS0gICAgdG9w b2xvZ3lfc3QubG9nY2FwLmZsdXNoKCkKLS0KLS0gICAgcnVuX2hlYWx0aGNoZWNrX2FuZF9mbHVz aF9sb2codG9wb2xvZ3lfc3QsIHN0YW5kYWxvbmUsIGpzb249VHJ1ZSwgc2VhcmNoZWRfY29kZT1S RVRfQ09ERSkKLS0KLS0gICAgbG9nLmluZm8oIlJlLWFkZCB0aGUgbnNJbmRleElETGlzdFNjYW5M aW1pdCIpCi0tICAgIHBhcmVudGlkX2luZGV4ID0gSW5kZXgoc3RhbmRhbG9uZSwgUEFSRU5USURf RE4pCi0tICAgIHBhcmVudGlkX2luZGV4LmFkZCgibnNJbmRleElETGlzdFNjYW5MaW1pdCIsIFND QU5MSU1JVF9WQUxVRSkKLS0KLS0gICAgcnVuX2hlYWx0aGNoZWNrX2FuZF9mbHVzaF9sb2codG9w b2xvZ3lfc3QsIHN0YW5kYWxvbmUsIGpzb249RmFsc2UsIHNlYXJjaGVkX2NvZGU9Q01EX09VVFBV VCkKLS0gICAgcnVuX2hlYWx0aGNoZWNrX2FuZF9mbHVzaF9sb2codG9wb2xvZ3lfc3QsIHN0YW5k YWxvbmUsIGpzb249VHJ1ZSwgc2VhcmNoZWRfY29kZT1KU09OX09VVFBVVCkKLS0KLS0KLS1kZWYg dGVzdF9taXNzaW5nX21hdGNoaW5nX3J1bGVfYW5kX3NjYW5saW1pdCh0b3BvbG9neV9zdCwgbG9n X2J1ZmZlcmluZ19lbmFibGVkKToKLS0gICAgIiIiQ2hlY2sgaWYgaGVhbHRoY2hlY2sgZ2VuZXJh dGVzIGEgc2luZ2xlIGNvbWJpbmVkIGNvbW1hbmQgd2hlbiBib3RoIG1hdGNoaW5nIHJ1bGUgYW5k IHNjYW5saW1pdCBhcmUgbWlzc2luZwotLQotLSAgICA6aWQ6IGFmODIxNGFkLTVlNGMtNDIyYS04 Zjc0LTNlOTkyMjc1NTFkZgotLSAgICA6c2V0dXA6IFN0YW5kYWxvbmUgaW5zdGFuY2UKLS0gICAg OnN0ZXBzOgotLSAgICAgICAgMS4gQ3JlYXRlIERTIGluc3RhbmNlCi0tICAgICAgICAyLiBSZW1v dmUgYm90aCBpbnRlZ2VyT3JkZXJpbmdNYXRjaCBhbmQgbnNJbmRleElETGlzdFNjYW5MaW1pdCBm cm9tIHBhcmVudElkIGluZGV4Ci0tICAgICAgICAzLiBVc2UgaGVhbHRoY2hlY2sgYW5kIHZlcmlm eSBhIHNpbmdsZSBjb21iaW5lZCBjb21tYW5kIGlzIGdlbmVyYXRlZAotLSAgICAgICAgNC4gUmUt YWRkIHRoZSBtYXRjaGluZyBydWxlIGFuZCBzY2FubGltaXQKLS0gICAgICAgIDUuIFVzZSBoZWFs dGhjaGVjayB3aXRob3V0IC0tanNvbiBvcHRpb24KLS0gICAgICAgIDYuIFVzZSBoZWFsdGhjaGVj ayB3aXRoIC0tanNvbiBvcHRpb24KLS0gICAgOmV4cGVjdGVkcmVzdWx0czoKLS0gICAgICAgIDEu IFN1Y2Nlc3MKLS0gICAgICAgIDIuIFN1Y2Nlc3MKLS0gICAgICAgIDMuIGhlYWx0aGNoZWNrIHJl cG9ydHMgRFNCTEUwMDA3IGFuZCBnZW5lcmF0ZXMgYSBzaW5nbGUgY29tbWFuZCB3aXRoIGJvdGgg LS1hZGQtbXIgYW5kIC0tYWRkLXNjYW5saW1pdAotLSAgICAgICAgNC4gU3VjY2VzcwotLSAgICAg ICAgNS4gaGVhbHRoY2hlY2sgcmVwb3J0cyBubyBpc3N1ZXMgZm91bmQKLS0gICAgICAgIDYuIGhl YWx0aGNoZWNrIHJlcG9ydHMgbm8gaXNzdWVzIGZvdW5kCi0tICAgICIiIgotLQotLSAgICBSRVRf Q09ERSA9ICJEU0JMRTAwMDciCi0tICAgIFBBUkVOVElEX0ROID0gImNuPXBhcmVudGlkLGNuPWlu ZGV4LGNuPXVzZXJyb290LGNuPWxkYm0gZGF0YWJhc2UsY249cGx1Z2lucyxjbj1jb25maWciCi0t ICAgIFNDQU5MSU1JVF9WQUxVRSA9ICJsaW1pdD01MDAwIHR5cGU9ZXEgZmxhZ3M9QU5EIgotLQot LSAgICBzdGFuZGFsb25lID0gdG9wb2xvZ3lfc3Quc3RhbmRhbG9uZQotLQotLSAgICBsb2cuaW5m bygiUmVtb3ZlIGJvdGggaW50ZWdlck9yZGVyaW5nTWF0Y2ggYW5kIG5zSW5kZXhJRExpc3RTY2Fu TGltaXQgZnJvbSBwYXJlbnRJZCBpbmRleCIpCi0tICAgIHBhcmVudGlkX2luZGV4ID0gSW5kZXgo c3RhbmRhbG9uZSwgUEFSRU5USURfRE4pCi0tICAgIHBhcmVudGlkX2luZGV4LnJlbW92ZSgibnNN YXRjaGluZ1J1bGUiLCAiaW50ZWdlck9yZGVyaW5nTWF0Y2giKQotLSAgICBwYXJlbnRpZF9pbmRl eC5yZW1vdmUoIm5zSW5kZXhJRExpc3RTY2FuTGltaXQiLCBTQ0FOTElNSVRfVkFMVUUpCi0tCi0t ICAgICMgUnVuIGhlYWx0aGNoZWNrIGFuZCB2ZXJpZnkgY29tYmluZWQgY29tbWFuZAotLSAgICBh cmdzID0gRmFrZUFyZ3MoKQotLSAgICBhcmdzLmluc3RhbmNlID0gc3RhbmRhbG9uZS5zZXJ2ZXJp ZAotLSAgICBhcmdzLnZlcmJvc2UgPSBzdGFuZGFsb25lLnZlcmJvc2UKLS0gICAgYXJncy5saXN0 X2Vycm9ycyA9IEZhbHNlCi0tICAgIGFyZ3MubGlzdF9jaGVja3MgPSBGYWxzZQotLSAgICBhcmdz LmV4Y2x1ZGVfY2hlY2sgPSBbXQotLSAgICBhcmdzLmNoZWNrID0gWyJiYWNrZW5kcyJdCi0tICAg IGFyZ3MuZHJ5X3J1biA9IEZhbHNlCi0tICAgIGFyZ3MuanNvbiA9IEZhbHNlCi0tICAgIGhlYWx0 aF9jaGVja19ydW4oc3RhbmRhbG9uZSwgdG9wb2xvZ3lfc3QubG9nY2FwLmxvZywgYXJncykKLS0K LS0gICAgIyBWZXJpZnkgRFNCTEUwMDA3IGlzIHJlcG9ydGVkCi0tICAgIGFzc2VydCB0b3BvbG9n eV9zdC5sb2djYXAuY29udGFpbnMoUkVUX0NPREUpCi0tICAgIGxvZy5pbmZvKCJoZWFsdGhjaGVj ayByZXR1cm5lZCBjb2RlOiAlcyIgJSBSRVRfQ09ERSkKLS0KLS0gICAgIyBWZXJpZnkgYSBzaW5n bGUgY29tYmluZWQgY29tbWFuZCBpcyBnZW5lcmF0ZWQgd2l0aCBib3RoIC0tYWRkLW1yIGFuZCAt LWFkZC1zY2FubGltaXQKLS0gICAgYXNzZXJ0IHRvcG9sb2d5X3N0LmxvZ2NhcC5jb250YWlucygn LS1hZGQtbXIgaW50ZWdlck9yZGVyaW5nTWF0Y2ggLS1hZGQtc2NhbmxpbWl0ICJsaW1pdD01MDAw IHR5cGU9ZXEgZmxhZ3M9QU5EIicpCi0tICAgIGxvZy5pbmZvKCJWZXJpZmllZCBjb21iaW5lZCBj b21tYW5kIHdpdGggYm90aCAtLWFkZC1tciBhbmQgLS1hZGQtc2NhbmxpbWl0IikKLS0KLS0gICAg dG9wb2xvZ3lfc3QubG9nY2FwLmZsdXNoKCkKLS0KLS0gICAgbG9nLmluZm8oIlJlLWFkZCB0aGUg aW50ZWdlck9yZGVyaW5nTWF0Y2ggbWF0Y2hpbmcgcnVsZSBhbmQgc2NhbmxpbWl0IikKLS0gICAg cGFyZW50aWRfaW5kZXggPSBJbmRleChzdGFuZGFsb25lLCBQQVJFTlRJRF9ETikKLS0gICAgcGFy ZW50aWRfaW5kZXguYWRkKCJuc01hdGNoaW5nUnVsZSIsICJpbnRlZ2VyT3JkZXJpbmdNYXRjaCIp Ci0tICAgIHBhcmVudGlkX2luZGV4LmFkZCgibnNJbmRleElETGlzdFNjYW5MaW1pdCIsIFNDQU5M SU1JVF9WQUxVRSkKLS0KLS0gICAgcnVuX2hlYWx0aGNoZWNrX2FuZF9mbHVzaF9sb2codG9wb2xv Z3lfc3QsIHN0YW5kYWxvbmUsIGpzb249RmFsc2UsIHNlYXJjaGVkX2NvZGU9Q01EX09VVFBVVCkK LS0gICAgcnVuX2hlYWx0aGNoZWNrX2FuZF9mbHVzaF9sb2codG9wb2xvZ3lfc3QsIHN0YW5kYWxv bmUsIGpzb249VHJ1ZSwgc2VhcmNoZWRfY29kZT1KU09OX09VVFBVVCkKLS0KLS0KLSBkZWYgdGVz dF9tdWx0aXBsZV9taXNzaW5nX2luZGV4ZXModG9wb2xvZ3lfc3QsIGxvZ19idWZmZXJpbmdfZW5h YmxlZCk6Ci0gICAgICIiIkNoZWNrIGlmIGhlYWx0aGNoZWNrIHJldHVybnMgRFNCTEUwMDA3IGNv ZGUgd2hlbiBtdWx0aXBsZSBzeXN0ZW0gaW5kZXhlcyBhcmUgbWlzc2luZwotIAotQEAgLTU3NCw4 ICs0NDUsNyBAQCBkZWYgdGVzdF9tdWx0aXBsZV9taXNzaW5nX2luZGV4ZXModG9wb2xvZ3lfc3Qs IGxvZ19idWZmZXJpbmdfZW5hYmxlZCk6Ci0gCi0gICAgIGxvZy5pbmZvKCJSZS1hZGQgdGhlIG1p c3Npbmcgc3lzdGVtIGluZGV4ZXMiKQotICAgICBiYWNrZW5kID0gQmFja2VuZHMoc3RhbmRhbG9u ZSkuZ2V0KCJ1c2VyUm9vdCIpCi0tICAgIGJhY2tlbmQuYWRkX2luZGV4KCJwYXJlbnRpZCIsIFsi ZXEiXSwgbWF0Y2hpbmdfcnVsZXM9WyJpbnRlZ2VyT3JkZXJpbmdNYXRjaCJdLAotLSAgICAgICAg ICAgICAgICAgICAgICBpZGxpc3RzY2FubGltaXQ9WydsaW1pdD01MDAwIHR5cGU9ZXEgZmxhZ3M9 QU5EJ10pCi0rICAgIGJhY2tlbmQuYWRkX2luZGV4KCJwYXJlbnRpZCIsIFsiZXEiXSwgbWF0Y2hp bmdfcnVsZXM9WyJpbnRlZ2VyT3JkZXJpbmdNYXRjaCJdKQotICAgICBiYWNrZW5kLmFkZF9pbmRl eCgibnN1bmlxdWVpZCIsIFsiZXEiXSkKLSAgICAgc3RhbmRhbG9uZS5yZXN0YXJ0KCkKLSAKLWRp ZmYgLS1naXQgYS9kaXJzcnZ0ZXN0cy90ZXN0cy9zdWl0ZXMvcGFnZWRfcmVzdWx0cy9wYWdlZF9y ZXN1bHRzX3Rlc3QucHkgYi9kaXJzcnZ0ZXN0cy90ZXN0cy9zdWl0ZXMvcGFnZWRfcmVzdWx0cy9w YWdlZF9yZXN1bHRzX3Rlc3QucHkKLWluZGV4IDYxZDY3MDJkYS4uMWJiOTRiNTNhIDEwMDY0NAot LS0tIGEvZGlyc3J2dGVzdHMvdGVzdHMvc3VpdGVzL3BhZ2VkX3Jlc3VsdHMvcGFnZWRfcmVzdWx0 c190ZXN0LnB5Ci0rKysgYi9kaXJzcnZ0ZXN0cy90ZXN0cy9zdWl0ZXMvcGFnZWRfcmVzdWx0cy9w YWdlZF9yZXN1bHRzX3Rlc3QucHkKLUBAIC0zMDYsMTkgKzMwNiwxOSBAQCBkZWYgdGVzdF9zZWFy Y2hfc3VjY2Vzcyh0b3BvbG9neV9zdCwgY3JlYXRlX3VzZXIsIHBhZ2Vfc2l6ZSwgdXNlcnNfbnVt KToKLSAgICAgZGVsX3VzZXJzKHVzZXJzX2xpc3QpCi0gCi0gCi0tQHB5dGVzdC5tYXJrLnBhcmFt ZXRyaXplKCJwYWdlX3NpemUsdXNlcnNfbnVtLHN1ZmZpeCxhdHRyX25hbWUsYXR0cl92YWx1ZSxl eHBlY3RlZF9lcnIsIHJlc3RhcnQiLCBbCi0rQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJwYWdl X3NpemUsdXNlcnNfbnVtLHN1ZmZpeCxhdHRyX25hbWUsYXR0cl92YWx1ZSxleHBlY3RlZF9lcnIi LCBbCi0gICAgICg1MCwgMjAwLCAnY249Y29uZmlnLCVzJyAlIEROX0xEQk0sICduc3NsYXBkLWlk bGlzdHNjYW5saW1pdCcsICcxMDAnLAotLSAgICAgbGRhcC5VTldJTExJTkdfVE9fUEVSRk9STSwg VHJ1ZSksCi0rICAgICBsZGFwLlVOV0lMTElOR19UT19QRVJGT1JNKSwKLSAgICAgKDUsIDE1LCBE Tl9DT05GSUcsICduc3NsYXBkLXRpbWVsaW1pdCcsICcyMCcsCi0tICAgICBsZGFwLlVOQVZBSUxB QkxFX0NSSVRJQ0FMX0VYVEVOU0lPTiwgRmFsc2UpLAotKyAgICAgbGRhcC5VTkFWQUlMQUJMRV9D UklUSUNBTF9FWFRFTlNJT04pLAotICAgICAoMjEsIDUwLCBETl9DT05GSUcsICduc3NsYXBkLXNp emVsaW1pdCcsICcyMCcsCi0tICAgICBsZGFwLlNJWkVMSU1JVF9FWENFRURFRCwgRmFsc2UpLAot KyAgICAgbGRhcC5TSVpFTElNSVRfRVhDRUVERUQpLAotICAgICAoMjEsIDUwLCBETl9DT05GSUcs ICduc3NsYXBkLXBhZ2Vkc2l6ZWxpbWl0JywgJzUnLAotLSAgICAgbGRhcC5TSVpFTElNSVRfRVhD RUVERUQsIEZhbHNlKSwKLSsgICAgIGxkYXAuU0laRUxJTUlUX0VYQ0VFREVEKSwKLSAgICAgKDUs IDUwLCAnY249Y29uZmlnLCVzJyAlIEROX0xEQk0sICduc3NsYXBkLWxvb2t0aHJvdWdobGltaXQn LCAnMjAnLAotLSAgICAgbGRhcC5BRE1JTkxJTUlUX0VYQ0VFREVELCBGYWxzZSldKQotKyAgICAg bGRhcC5BRE1JTkxJTUlUX0VYQ0VFREVEKV0pCi0gZGVmIHRlc3Rfc2VhcmNoX2xpbWl0c19mYWls KHRvcG9sb2d5X3N0LCBjcmVhdGVfdXNlciwgcGFnZV9zaXplLCB1c2Vyc19udW0sCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCwgYXR0cl9uYW1lLCBhdHRyX3ZhbHVlLCBleHBl Y3RlZF9lcnIsIHJlc3RhcnQpOgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXgs IGF0dHJfbmFtZSwgYXR0cl92YWx1ZSwgZXhwZWN0ZWRfZXJyKToKLSAgICAgIiIiVmVyaWZ5IHRo YXQgc2VhcmNoIHdpdGggYSBzaW1wbGUgcGFnZWQgcmVzdWx0cyBjb250cm9sCi0gICAgIHRocm93 cyBleHBlY3RlZCBleGNlcHRvaW5zIHdoZW4gY29ycmVzcG9uZGluZyBsaW1pdHMgYXJlCi0gICAg IGV4Y2VlZGVkLgotQEAgLTM0MSwxNSArMzQxLDYgQEAgZGVmIHRlc3Rfc2VhcmNoX2xpbWl0c19m YWlsKHRvcG9sb2d5X3N0LCBjcmVhdGVfdXNlciwgcGFnZV9zaXplLCB1c2Vyc19udW0sCi0gCi0g ICAgIHVzZXJzX2xpc3QgPSBhZGRfdXNlcnModG9wb2xvZ3lfc3QsIHVzZXJzX251bSwgREVGQVVM VF9TVUZGSVgpCi0gICAgIGF0dHJfdmFsdWVfYmNrID0gY2hhbmdlX2NvbmZfYXR0cih0b3BvbG9n eV9zdCwgc3VmZml4LCBhdHRyX25hbWUsIGF0dHJfdmFsdWUpCi0tICAgIGFuY2VzdG9yaWRfaW5k ZXggPSBOb25lCi0tICAgIGlmIGF0dHJfbmFtZSA9PSAnbnNzbGFwZC1pZGxpc3RzY2FubGltaXQn OgotLSAgICAgICAgYmFja2VuZCA9IEJhY2tlbmRzKHRvcG9sb2d5X3N0LnN0YW5kYWxvbmUpLmdl dF9iYWNrZW5kKERFRkFVTFRfU1VGRklYKQotLSAgICAgICAgYW5jZXN0b3JpZF9pbmRleCA9IGJh Y2tlbmQuZ2V0X2luZGV4KCdhbmNlc3RvcmlkJykKLS0gICAgICAgIGFuY2VzdG9yaWRfaW5kZXgu cmVwbGFjZSgibnNJbmRleElETGlzdFNjYW5MaW1pdCIsIGVuc3VyZV9ieXRlcygibGltaXQ9MTAw IHR5cGU9ZXEgZmxhZ3M9QU5EIikpCi0tCi0tICAgIGlmIChyZXN0YXJ0KToKLS0gICAgICAgIGxv Zy5pbmZvKCdJbnN0YW5jZSByZXN0YXJ0ZWQnKQotLSAgICAgICAgdG9wb2xvZ3lfc3Quc3RhbmRh bG9uZS5yZXN0YXJ0KCkKLSAgICAgY29uZl9wYXJhbV9kaWN0ID0ge2F0dHJfbmFtZTogYXR0cl92 YWx1ZX0KLSAgICAgc2VhcmNoX2ZsdCA9IHInKHVpZD10ZXN0KiknCi0gICAgIHNlYXJjaHJlcV9h dHRybGlzdCA9IFsnZG4nLCAnc24nXQotQEAgLTQwMiw4ICszOTMsNiBAQCBkZWYgdGVzdF9zZWFy Y2hfbGltaXRzX2ZhaWwodG9wb2xvZ3lfc3QsIGNyZWF0ZV91c2VyLCBwYWdlX3NpemUsIHVzZXJz X251bSwKLSAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICBicmVhawotICAgICBm aW5hbGx5OgotLSAgICAgICAgaWYgYW5jZXN0b3JpZF9pbmRleDoKLS0gICAgICAgICAgICBhbmNl c3RvcmlkX2luZGV4LnJlcGxhY2UoIm5zSW5kZXhJRExpc3RTY2FuTGltaXQiLCBlbnN1cmVfYnl0 ZXMoImxpbWl0PTUwMDAgdHlwZT1lcSBmbGFncz1BTkQiKSkKLSAgICAgICAgIGRlbF91c2Vycyh1 c2Vyc19saXN0KQotICAgICAgICAgY2hhbmdlX2NvbmZfYXR0cih0b3BvbG9neV9zdCwgc3VmZml4 LCBhdHRyX25hbWUsIGF0dHJfdmFsdWVfYmNrKQotIAotZGlmZiAtLWdpdCBhL2xkYXAvc2VydmVy cy9zbGFwZC9iYWNrLWxkYm0vYmFjay1sZGJtLmggYi9sZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1s ZGJtL2JhY2stbGRibS5oCi1pbmRleCBiMTg3YzI2YmMuLmUyM2U3ZmY0MyAxMDA2NDQKLS0tLSBh L2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vYmFjay1sZGJtLmgKLSsrKyBiL2xkYXAvc2Vy dmVycy9zbGFwZC9iYWNrLWxkYm0vYmFjay1sZGJtLmgKLUBAIC01ODMsNyArNTgzLDYgQEAgc3Ry dWN0IGxkYm1pbmZvCi0gICAgIGludCBsaV9tb2RlOwotICAgICBpbnQgbGlfbG9va3Rocm91Z2hs aW1pdDsKLSAgICAgaW50IGxpX2FsbGlkc3RocmVzaG9sZDsKLS0gICAgaW50IGxpX3N5c3RlbV9h bGxpZHN0aHJlc2hvbGQ7Ci0gICAgIGNoYXIgKmxpX2RpcmVjdG9yeTsKLSAgICAgaW50IGxpX3Jl c2xpbWl0X2xvb2t0aHJvdWdoX2hhbmRsZTsKLSAgICAgdWludDY0X3QgbGlfZGJjYWNoZXNpemU7 Ci1kaWZmIC0tZ2l0IGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9pbmRleC5jIGIvbGRh cC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9pbmRleC5jCi1pbmRleCAwYWI4Mjk0OGMuLmE1MDA0 YmUxOSAxMDA2NDQKLS0tLSBhL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vaW5kZXguYwot KysrIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9pbmRleC5jCi1AQCAtOTk3LDggKzk5 Nyw2IEBAIGluZGV4X3JlYWRfZXh0X2FsbGlkcygKLSAgICAgfQotICAgICBpZiAocGIpIHsKLSAg ICAgICAgIHNsYXBpX3BibG9ja19nZXQocGIsIFNMQVBJX1NFQVJDSF9JU19BTkQsICZpc19hbmQp OwotLSAgICB9IGVsc2UgaWYgKHN0cmNhc2VjbXAodHlwZSwgTERCTV9BTkNFU1RPUklEX1NUUikg PT0gMCkgewotLSAgICAgICAgaXNfYW5kID0gMTsKLSAgICAgfQotICAgICBhaV9mbGFncyA9IGlz X2FuZCA/IElOREVYX0FMTElEU19GTEFHX0FORCA6IDA7Ci0gICAgIC8qIHRoZSBjYWxsZXIgY2Fu IHBhc3MgaW4gYSB2YWx1ZSBvZiAwIC0ganVzdCBpZ25vcmUgdGhvc2UgLSBidXQgaWYgdGhlIGlu ZGV4Ci1kaWZmIC0tZ2l0IGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9pbnN0YW5jZS5j IGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9pbnN0YW5jZS5jCi1pbmRleCAyYTZlOGNi YjguLjJiNzFjZDRmNyAxMDA2NDQKLS0tLSBhL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0v aW5zdGFuY2UuYwotKysrIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9pbnN0YW5jZS5j Ci1AQCAtMTYsNyArMTYsNyBAQAotIAotIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovCi0gc3Rh dGljIHZvaWQgbGRibV9pbnN0YW5jZV9kZXN0cnVjdG9yKHZvaWQgKiphcmcpOwotLVNsYXBpX0Vu dHJ5ICpsZGJtX2luc3RhbmNlX2luaXRfY29uZmlnX2VudHJ5KGNoYXIgKmNuX3ZhbCwgY2hhciAq djEsIGNoYXIgKnYyLCBjaGFyICp2MywgY2hhciAqdjQsIGNoYXIgKm1yLCBjaGFyICpzY2FubGlt aXQpOwotK1NsYXBpX0VudHJ5ICpsZGJtX2luc3RhbmNlX2luaXRfY29uZmlnX2VudHJ5KGNoYXIg KmNuX3ZhbCwgY2hhciAqdjEsIGNoYXIgKnYyLCBjaGFyICp2MywgY2hhciAqdjQsIGNoYXIgKm1y KTsKLSAKLSAKLSAvKiBDcmVhdGVzIGFuZCBpbml0aWFsaXplcyBhIG5ldyBsZGJtX2luc3RhbmNl IHN0cnVjdHVyZS4KLUBAIC0xMjYsNyArMTI2LDcgQEAgZG9uZToKLSAgKiBUYWtlIGEgYnVuY2gg b2Ygc3RyaW5ncywgYW5kIGNyZWF0ZSBhIGluZGV4IGNvbmZpZyBlbnRyeQotICAqLwotIFNsYXBp X0VudHJ5ICoKLS1sZGJtX2luc3RhbmNlX2luaXRfY29uZmlnX2VudHJ5KGNoYXIgKmNuX3ZhbCwg Y2hhciAqdmFsMSwgY2hhciAqdmFsMiwgY2hhciAqdmFsMywgY2hhciAqdmFsNCwgY2hhciAqbXIs IGNoYXIgKnNjYW5saW1pdCkKLStsZGJtX2luc3RhbmNlX2luaXRfY29uZmlnX2VudHJ5KGNoYXIg KmNuX3ZhbCwgY2hhciAqdmFsMSwgY2hhciAqdmFsMiwgY2hhciAqdmFsMywgY2hhciAqdmFsNCwg Y2hhciAqbXIpCi0gewotICAgICBTbGFwaV9FbnRyeSAqZSA9IHNsYXBpX2VudHJ5X2FsbG9jKCk7 Ci0gICAgIHN0cnVjdCBiZXJ2YWwgKnZhbHNbMl07Ci1AQCAtMTY3LDExICsxNjcsNiBAQCBsZGJt X2luc3RhbmNlX2luaXRfY29uZmlnX2VudHJ5KGNoYXIgKmNuX3ZhbCwgY2hhciAqdmFsMSwgY2hh ciAqdmFsMiwgY2hhciAqdmFsMwotICAgICAgICAgc2xhcGlfZW50cnlfYWRkX3ZhbHVlcyhlLCAi bnNNYXRjaGluZ1J1bGUiLCB2YWxzKTsKLSAgICAgfQotIAotLSAgICBpZiAoc2NhbmxpbWl0KSB7 Ci0tICAgICAgICB2YWwuYnZfdmFsID0gc2NhbmxpbWl0OwotLSAgICAgICAgdmFsLmJ2X2xlbiA9 IHN0cmxlbihzY2FubGltaXQpOwotLSAgICAgICAgc2xhcGlfZW50cnlfYWRkX3ZhbHVlcyhlLCAi bnNJbmRleElETGlzdFNjYW5MaW1pdCIsIHZhbHMpOwotLSAgICB9Ci0gICAgIHJldHVybiBlOwot IH0KLSAKLUBAIC0xODQsNjAgKzE3OSw4IEBAIGxkYm1faW5zdGFuY2VfY3JlYXRlX2RlZmF1bHRf aW5kZXhlcyhiYWNrZW5kICpiZSkKLSB7Ci0gICAgIFNsYXBpX0VudHJ5ICplOwotICAgICBsZGJt X2luc3RhbmNlICppbnN0ID0gKGxkYm1faW5zdGFuY2UgKiliZS0+YmVfaW5zdGFuY2VfaW5mbzsK LS0gICAgc3RydWN0IGxkYm1pbmZvICpsaSA9IChzdHJ1Y3QgbGRibWluZm8gKiliZS0+YmVfZGF0 YWJhc2UtPnBsZ19wcml2YXRlOwotICAgICAvKiB3cml0ZSB0aGUgZHNlIGZpbGUgb25seSBvbiB0 aGUgZmluYWwgaW5kZXggKi8KLSAgICAgaW50IGZsYWdzID0gTERCTV9JTlNUQU5DRV9DT05GSUdf RE9OVF9XUklURTsKLS0gICAgY2hhciAqYW5jZXN0b3JpZF9pbmRleGVzX2xpbWl0ID0gTlVMTDsK LS0gICAgY2hhciAqcGFyZW50aWRfaW5kZXhlc19saW1pdCA9IE5VTEw7Ci0tICAgIHN0cnVjdCBh dHRyaW5mbyAqYWkgPSBOVUxMOwotLSAgICBpbnQgaW5kZXhfYWxyZWFkeV9jb25maWd1cmVkID0g MDsKLS0gICAgc3RydWN0IGluZGV4X2lkbGlzdHNpemVpbmZvICppdGVyOwotLSAgICBpbnQgY29v a2llOwotLSAgICBpbnQgbGltaXQ7Ci0tCi0tICAgIGFpbmZvX2dldChiZSwgKGNoYXIgKilMREJN X0FOQ0VTVE9SSURfU1RSLCAmYWkpOwotLSAgICBpZiAoYWkgJiYgYWktPmFpX2lkbGlzdGluZm8p IHsKLS0gICAgICAgIGl0ZXIgPSAoc3RydWN0IGluZGV4X2lkbGlzdHNpemVpbmZvICopZGxfZ2V0 X2ZpcnN0KGFpLT5haV9pZGxpc3RpbmZvLCAmY29va2llKTsKLS0gICAgICAgIGlmIChpdGVyKSB7 Ci0tICAgICAgICAgICAgbGltaXQgPSBpdGVyLT5haV9pZGxpc3RzaXplbGltaXQ7Ci0tICAgICAg ICAgICAgc2xhcGlfbG9nX2VycihTTEFQSV9MT0dfQkFDS0xEQk0sICJsZGJtX2luc3RhbmNlX2Ny ZWF0ZV9kZWZhdWx0X2luZGV4ZXMiLAotLSAgICAgICAgICAgICAgICAgICAgICAic2V0IGFuY2Vz dG9yaWQgbGltaXQgdG8gJWQgZnJvbSBhdHRyaWJ1dGUgaW5kZXhcbiIsCi0tICAgICAgICAgICAg ICAgICAgICAgIGxpbWl0KTsKLS0gICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgbGltaXQg PSBsaS0+bGlfc3lzdGVtX2FsbGlkc3RocmVzaG9sZDsKLS0gICAgICAgICAgICBzbGFwaV9sb2df ZXJyKFNMQVBJX0xPR19CQUNLTERCTSwgImxkYm1faW5zdGFuY2VfY3JlYXRlX2RlZmF1bHRfaW5k ZXhlcyIsCi0tICAgICAgICAgICAgICAgICAgICAgICJzZXQgYW5jZXN0b3JpZCBsaW1pdCB0byAl ZCBmcm9tIGRlZmF1bHQgKGZhaWwgdG8gcmVhZCBsaW1pdClcbiIsCi0tICAgICAgICAgICAgICAg ICAgICAgIGxpbWl0KTsKLS0gICAgICAgIH0KLS0gICAgICAgIGFuY2VzdG9yaWRfaW5kZXhlc19s aW1pdCA9IHNsYXBpX2NoX3NtcHJpbnRmKCJsaW1pdD0lZCB0eXBlPWVxIGZsYWdzPUFORCIsIGxp bWl0KTsKLS0gICAgfSBlbHNlIHsKLS0gICAgICAgIGFuY2VzdG9yaWRfaW5kZXhlc19saW1pdCA9 IHNsYXBpX2NoX3NtcHJpbnRmKCJsaW1pdD0lZCB0eXBlPWVxIGZsYWdzPUFORCIsIGxpLT5saV9z eXN0ZW1fYWxsaWRzdGhyZXNob2xkKTsKLS0gICAgICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9H X0JBQ0tMREJNLCAibGRibV9pbnN0YW5jZV9jcmVhdGVfZGVmYXVsdF9pbmRleGVzIiwKLS0gICAg ICAgICAgICAgICAgICAgICAgInNldCBhbmNlc3RvcmlkIGxpbWl0IHRvICVkIGZyb20gZGVmYXVs dCAobm8gYXR0cmlidXRlIG9yIGxpbWl0KVxuIiwKLS0gICAgICAgICAgICAgICAgICAgICAgbGkt PmxpX3N5c3RlbV9hbGxpZHN0aHJlc2hvbGQpOwotLSAgICB9Ci0tCi0tICAgIGFpbmZvX2dldChi ZSwgKGNoYXIgKilMREJNX1BBUkVOVElEX1NUUiwgJmFpKTsKLS0gICAgaWYgKGFpICYmIGFpLT5h aV9pZGxpc3RpbmZvKSB7Ci0tICAgICAgICBpdGVyID0gKHN0cnVjdCBpbmRleF9pZGxpc3RzaXpl aW5mbyAqKWRsX2dldF9maXJzdChhaS0+YWlfaWRsaXN0aW5mbywgJmNvb2tpZSk7Ci0tICAgICAg ICBpZiAoaXRlcikgewotLSAgICAgICAgICAgIGxpbWl0ID0gaXRlci0+YWlfaWRsaXN0c2l6ZWxp bWl0OwotLSAgICAgICAgICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX0JBQ0tMREJNLCAibGRi bV9pbnN0YW5jZV9jcmVhdGVfZGVmYXVsdF9pbmRleGVzIiwKLS0gICAgICAgICAgICAgICAgICAg ICAgInNldCBwYXJlbnRpZCBsaW1pdCB0byAlZCBmcm9tIGF0dHJpYnV0ZSBpbmRleFxuIiwKLS0g ICAgICAgICAgICAgICAgICAgICAgbGltaXQpOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAg ICAgICBsaW1pdCA9IGxpLT5saV9zeXN0ZW1fYWxsaWRzdGhyZXNob2xkOwotLSAgICAgICAgICAg IHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX0JBQ0tMREJNLCAibGRibV9pbnN0YW5jZV9jcmVhdGVf ZGVmYXVsdF9pbmRleGVzIiwKLS0gICAgICAgICAgICAgICAgICAgICAgInNldCBwYXJlbnRpZCBs aW1pdCB0byAlZCBmcm9tIGRlZmF1bHQgKGZhaWwgdG8gcmVhZCBsaW1pdClcbiIsCi0tICAgICAg ICAgICAgICAgICAgICAgIGxpbWl0KTsKLS0gICAgICAgIH0KLS0gICAgICAgIHBhcmVudGlkX2lu ZGV4ZXNfbGltaXQgPSBzbGFwaV9jaF9zbXByaW50ZigibGltaXQ9JWQgdHlwZT1lcSBmbGFncz1B TkQiLCBsaW1pdCk7Ci0tICAgIH0gZWxzZSB7Ci0tICAgICAgICBwYXJlbnRpZF9pbmRleGVzX2xp bWl0ID0gc2xhcGlfY2hfc21wcmludGYoImxpbWl0PSVkIHR5cGU9ZXEgZmxhZ3M9QU5EIiwgbGkt PmxpX3N5c3RlbV9hbGxpZHN0aHJlc2hvbGQpOwotLSAgICAgICAgc2xhcGlfbG9nX2VycihTTEFQ SV9MT0dfQkFDS0xEQk0sICJsZGJtX2luc3RhbmNlX2NyZWF0ZV9kZWZhdWx0X2luZGV4ZXMiLAot LSAgICAgICAgICAgICAgICAgICAgICAic2V0IHBhcmVudGlkIGxpbWl0IHRvICVkIGZyb20gZGVm YXVsdCAobm8gYXR0cmlidXRlIG9yIGxpbWl0KVxuIiwKLS0gICAgICAgICAgICAgICAgICAgICAg bGktPmxpX3N5c3RlbV9hbGxpZHN0aHJlc2hvbGQpOwotLSAgICB9Ci0gCi0gICAgIC8qCi0gICAg ICAqIEFsd2F5cyBpbmRleCAoZW50cnlkbiBvciBlbnRyeXJkbiksIHBhcmVudGlkLCBvYmplY3Rj bGFzcywKLUBAIC0yNDUsNDggKzE4OCw0MiBAQCBsZGJtX2luc3RhbmNlX2NyZWF0ZV9kZWZhdWx0 X2luZGV4ZXMoYmFja2VuZCAqYmUpCi0gICAgICAqIHNpbmNlIHRoZXkgYXJlIHVzZWQgYnkgc29t ZSBzZWFyY2hlcywgcmVwbGljYXRpb24gYW5kIHRoZQotICAgICAgKiBBQ0wgcm91dGluZXMuCi0g ICAgICAqLwotLSAgICBlID0gbGRibV9pbnN0YW5jZV9pbml0X2NvbmZpZ19lbnRyeShMREJNX0VO VFJZUkROX1NUUiwgInN1YnRyZWUiLCAwLCAwLCAwLCAwLCAwKTsKLSsgICAgZSA9IGxkYm1faW5z dGFuY2VfaW5pdF9jb25maWdfZW50cnkoTERCTV9FTlRSWVJETl9TVFIsICJzdWJ0cmVlIiwgMCwg MCwgMCwgMCk7Ci0gICAgIGxkYm1faW5zdGFuY2VfY29uZmlnX2FkZF9pbmRleF9lbnRyeShpbnN0 LCBlLCBmbGFncyk7Ci0gICAgIHNsYXBpX2VudHJ5X2ZyZWUoZSk7Ci0gCi0tICAgIGFpbmZvX2dl dChiZSwgKGNoYXIgKilMREJNX1BBUkVOVElEX1NUUiwgJmFpKTsKLS0gICAgLyogQ2hlY2sgaWYg dGhlIGF0dHJpbmZvIGlzIGFjdHVhbGx5IGZvciBwYXJlbnRpZCwgbm90IGEgZmFsbGJhY2sgdG8g LmRlZmF1bHQgKi8KLS0gICAgaW5kZXhfYWxyZWFkeV9jb25maWd1cmVkID0gKGFpICE9IE5VTEwg JiYgc3RyY21wKGFpLT5haV90eXBlLCBMREJNX1BBUkVOVElEX1NUUikgPT0gMCk7Ci0tICAgIGlm ICghaW5kZXhfYWxyZWFkeV9jb25maWd1cmVkKSB7Ci0tICAgICAgICBlID0gbGRibV9pbnN0YW5j ZV9pbml0X2NvbmZpZ19lbnRyeShMREJNX1BBUkVOVElEX1NUUiwgImVxIiwgMCwgMCwgMCwgImlu dGVnZXJPcmRlcmluZ01hdGNoIiwgcGFyZW50aWRfaW5kZXhlc19saW1pdCk7Ci0tICAgICAgICBs ZGJtX2luc3RhbmNlX2NvbmZpZ19hZGRfaW5kZXhfZW50cnkoaW5zdCwgZSwgZmxhZ3MpOwotLSAg ICAgICAgYXR0cl9pbmRleF9jb25maWcoYmUsICJsZGJtIGluZGV4IGluaXQiLCAwLCBlLCAxLCAw LCBOVUxMKTsKLS0gICAgICAgIHNsYXBpX2VudHJ5X2ZyZWUoZSk7Ci0tICAgIH0KLSsgICAgZSA9 IGxkYm1faW5zdGFuY2VfaW5pdF9jb25maWdfZW50cnkoTERCTV9QQVJFTlRJRF9TVFIsICJlcSIs IDAsIDAsIDAsICJpbnRlZ2VyT3JkZXJpbmdNYXRjaCIpOwotKyAgICBsZGJtX2luc3RhbmNlX2Nv bmZpZ19hZGRfaW5kZXhfZW50cnkoaW5zdCwgZSwgZmxhZ3MpOwotKyAgICBzbGFwaV9lbnRyeV9m cmVlKGUpOwotIAotLSAgICBlID0gbGRibV9pbnN0YW5jZV9pbml0X2NvbmZpZ19lbnRyeSgib2Jq ZWN0Y2xhc3MiLCAiZXEiLCAwLCAwLCAwLCAwLCAwKTsKLSsgICAgZSA9IGxkYm1faW5zdGFuY2Vf aW5pdF9jb25maWdfZW50cnkoIm9iamVjdGNsYXNzIiwgImVxIiwgMCwgMCwgMCwgMCk7Ci0gICAg IGxkYm1faW5zdGFuY2VfY29uZmlnX2FkZF9pbmRleF9lbnRyeShpbnN0LCBlLCBmbGFncyk7Ci0g ICAgIHNsYXBpX2VudHJ5X2ZyZWUoZSk7Ci0gCi0tICAgIGUgPSBsZGJtX2luc3RhbmNlX2luaXRf Y29uZmlnX2VudHJ5KCJhY2kiLCAicHJlcyIsIDAsIDAsIDAsIDAsIDApOwotKyAgICBlID0gbGRi bV9pbnN0YW5jZV9pbml0X2NvbmZpZ19lbnRyeSgiYWNpIiwgInByZXMiLCAwLCAwLCAwLCAwKTsK LSAgICAgbGRibV9pbnN0YW5jZV9jb25maWdfYWRkX2luZGV4X2VudHJ5KGluc3QsIGUsIGZsYWdz KTsKLSAgICAgc2xhcGlfZW50cnlfZnJlZShlKTsKLSAKLS0gICAgZSA9IGxkYm1faW5zdGFuY2Vf aW5pdF9jb25maWdfZW50cnkoTERCTV9OVU1TVUJPUkRJTkFURVNfU1RSLCAicHJlcyIsIDAsIDAs IDAsIDAsIDApOwotKyAgICBlID0gbGRibV9pbnN0YW5jZV9pbml0X2NvbmZpZ19lbnRyeShMREJN X05VTVNVQk9SRElOQVRFU19TVFIsICJwcmVzIiwgMCwgMCwgMCwgMCk7Ci0gICAgIGxkYm1faW5z dGFuY2VfY29uZmlnX2FkZF9pbmRleF9lbnRyeShpbnN0LCBlLCBmbGFncyk7Ci0gICAgIHNsYXBp X2VudHJ5X2ZyZWUoZSk7Ci0gCi0tICAgIGUgPSBsZGJtX2luc3RhbmNlX2luaXRfY29uZmlnX2Vu dHJ5KFNMQVBJX0FUVFJfVU5JUVVFSUQsICJlcSIsIDAsIDAsIDAsIDAsIDApOwotKyAgICBlID0g bGRibV9pbnN0YW5jZV9pbml0X2NvbmZpZ19lbnRyeShTTEFQSV9BVFRSX1VOSVFVRUlELCAiZXEi LCAwLCAwLCAwLCAwKTsKLSAgICAgbGRibV9pbnN0YW5jZV9jb25maWdfYWRkX2luZGV4X2VudHJ5 KGluc3QsIGUsIGZsYWdzKTsKLSAgICAgc2xhcGlfZW50cnlfZnJlZShlKTsKLSAKLSAgICAgLyog Rm9yIE1NUiwgd2UgbmVlZCB0aGlzIGF0dHJpYnV0ZSAodG8gcmVwbGFjZSB1c2Ugb2YgZG5jb21w IGluIGRlbGV0ZSkuICovCi0tICAgIGUgPSBsZGJtX2luc3RhbmNlX2luaXRfY29uZmlnX2VudHJ5 KEFUVFJfTlNEUzVfUkVQTENPTkZMSUNULCAiZXEiLCAicHJlcyIsIDAsIDAsIDAsIDApOwotKyAg ICBlID0gbGRibV9pbnN0YW5jZV9pbml0X2NvbmZpZ19lbnRyeShBVFRSX05TRFM1X1JFUExDT05G TElDVCwgImVxIiwgInByZXMiLCAwLCAwLCAwKTsKLSAgICAgbGRibV9pbnN0YW5jZV9jb25maWdf YWRkX2luZGV4X2VudHJ5KGluc3QsIGUsIGZsYWdzKTsKLSAgICAgc2xhcGlfZW50cnlfZnJlZShl KTsKLSAKLSAgICAgLyogd3JpdGUgdGhlIGRzZSBmaWxlIG9ubHkgb24gdGhlIGZpbmFsIGluZGV4 ICovCi0tICAgIGUgPSBsZGJtX2luc3RhbmNlX2luaXRfY29uZmlnX2VudHJ5KFNMQVBJX0FUVFJf TlNDUF9FTlRSWUROLCAiZXEiLCAwLCAwLCAwLCAwLCAwKTsKLSsgICAgZSA9IGxkYm1faW5zdGFu Y2VfaW5pdF9jb25maWdfZW50cnkoU0xBUElfQVRUUl9OU0NQX0VOVFJZRE4sICJlcSIsIDAsIDAs IDAsIDApOwotICAgICBsZGJtX2luc3RhbmNlX2NvbmZpZ19hZGRfaW5kZXhfZW50cnkoaW5zdCwg ZSwgZmxhZ3MpOwotICAgICBzbGFwaV9lbnRyeV9mcmVlKGUpOwotIAotICAgICAvKiBsZGJtX2lu c3RhbmNlX2NvbmZpZ19hZGRfaW5kZXhfZW50cnkoaW5zdCwgMiwgYXJndik7ICovCi0tICAgIGUg PSBsZGJtX2luc3RhbmNlX2luaXRfY29uZmlnX2VudHJ5KExEQk1fUFNFVURPX0FUVFJfREVGQVVM VCwgIm5vbmUiLCAwLCAwLCAwLCAwLCAwKTsKLSsgICAgZSA9IGxkYm1faW5zdGFuY2VfaW5pdF9j b25maWdfZW50cnkoTERCTV9QU0VVRE9fQVRUUl9ERUZBVUxULCAibm9uZSIsIDAsIDAsIDAsIDAp OwotICAgICBhdHRyX2luZGV4X2NvbmZpZyhiZSwgImxkYm0gaW5kZXggaW5pdCIsIDAsIGUsIDEs IDAsIE5VTEwpOwotICAgICBzbGFwaV9lbnRyeV9mcmVlKGUpOwotIAotQEAgLTI5NCwxOCArMjMx LDkgQEAgbGRibV9pbnN0YW5jZV9jcmVhdGVfZGVmYXVsdF9pbmRleGVzKGJhY2tlbmQgKmJlKQot ICAgICAgKiBhbmNlc3RvcmlkIGlzIHNwZWNpYWwsIHRoZXJlIGlzIGFjdHVhbGx5IG5vIHN1Y2gg YXR0ciB0eXBlCi0gICAgICAqIGJ1dCB3ZSBzdGlsbCB3YW50IHRvIHVzZSB0aGUgYXR0ciBpbmRl eCBmaWxlIEFQSXMuCi0gICAgICAqLwotLSAgICBhaW5mb19nZXQoYmUsIChjaGFyICopTERCTV9B TkNFU1RPUklEX1NUUiwgJmFpKTsKLS0gICAgLyogQ2hlY2sgaWYgdGhlIGF0dHJpbmZvIGlzIGFj dHVhbGx5IGZvciBhbmNlc3RvcmlkLCBub3QgYSBmYWxsYmFjayB0byAuZGVmYXVsdCAqLwotLSAg ICBpbmRleF9hbHJlYWR5X2NvbmZpZ3VyZWQgPSAoYWkgIT0gTlVMTCAmJiBzdHJjbXAoYWktPmFp X3R5cGUsIExEQk1fQU5DRVNUT1JJRF9TVFIpID09IDApOwotLSAgICBpZiAoIWluZGV4X2FscmVh ZHlfY29uZmlndXJlZCkgewotLSAgICAgICAgZSA9IGxkYm1faW5zdGFuY2VfaW5pdF9jb25maWdf ZW50cnkoTERCTV9BTkNFU1RPUklEX1NUUiwgImVxIiwgMCwgMCwgMCwgImludGVnZXJPcmRlcmlu Z01hdGNoIiwgYW5jZXN0b3JpZF9pbmRleGVzX2xpbWl0KTsKLS0gICAgICAgIGxkYm1faW5zdGFu Y2VfY29uZmlnX2FkZF9pbmRleF9lbnRyeShpbnN0LCBlLCBmbGFncyk7Ci0tICAgICAgICBhdHRy X2luZGV4X2NvbmZpZyhiZSwgImxkYm0gaW5kZXggaW5pdCIsIDAsIGUsIDEsIDAsIE5VTEwpOwot LSAgICAgICAgc2xhcGlfZW50cnlfZnJlZShlKTsKLS0gICAgfQotLQotLSAgICBzbGFwaV9jaF9m cmVlX3N0cmluZygmYW5jZXN0b3JpZF9pbmRleGVzX2xpbWl0KTsKLS0gICAgc2xhcGlfY2hfZnJl ZV9zdHJpbmcoJnBhcmVudGlkX2luZGV4ZXNfbGltaXQpOwotKyAgICBlID0gbGRibV9pbnN0YW5j ZV9pbml0X2NvbmZpZ19lbnRyeShMREJNX0FOQ0VTVE9SSURfU1RSLCAiZXEiLCAwLCAwLCAwLCAi aW50ZWdlck9yZGVyaW5nTWF0Y2giKTsKLSsgICAgYXR0cl9pbmRleF9jb25maWcoYmUsICJsZGJt IGluZGV4IGluaXQiLCAwLCBlLCAxLCAwLCBOVUxMKTsKLSsgICAgc2xhcGlfZW50cnlfZnJlZShl KTsKLSAKLSAgICAgcmV0dXJuIDA7Ci0gfQotZGlmZiAtLWdpdCBhL2xkYXAvc2VydmVycy9zbGFw ZC9iYWNrLWxkYm0vbGRibV9jb25maWcuYyBiL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0v bGRibV9jb25maWcuYwotaW5kZXggYzI0ZTNkNzY2Li42YTJjZTRjMjcgMTAwNjQ0Ci0tLS0gYS9s ZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2xkYm1fY29uZmlnLmMKLSsrKyBiL2xkYXAvc2Vy dmVycy9zbGFwZC9iYWNrLWxkYm0vbGRibV9jb25maWcuYwotQEAgLTM4NSwzNSArMzg1LDYgQEAg bGRibV9jb25maWdfYWxsaWRzdGhyZXNob2xkX3NldCh2b2lkICphcmcsIHZvaWQgKnZhbHVlLCBj aGFyICplcnJvcmJ1ZiBfX2F0dHJpYnUKLSAgICAgcmV0dXJuIHJldHZhbDsKLSB9Ci0gCi0tc3Rh dGljIHZvaWQgKgotLWxkYm1fY29uZmlnX3N5c3RlbV9hbGxpZHN0aHJlc2hvbGRfZ2V0KHZvaWQg KmFyZykKLS17Ci0tICAgIHN0cnVjdCBsZGJtaW5mbyAqbGkgPSAoc3RydWN0IGxkYm1pbmZvICop YXJnOwotLQotLSAgICByZXR1cm4gKHZvaWQgKikoKHVpbnRwdHJfdCkobGktPmxpX3N5c3RlbV9h bGxpZHN0aHJlc2hvbGQpKTsKLS19Ci0tCi0tc3RhdGljIGludAotLWxkYm1fY29uZmlnX3N5c3Rl bV9hbGxpZHN0aHJlc2hvbGRfc2V0KHZvaWQgKmFyZywgdm9pZCAqdmFsdWUsIGNoYXIgKmVycm9y YnVmIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLCBpbnQgcGhhc2UgX19hdHRyaWJ1dGVfXygodW51 c2VkKSksIGludCBhcHBseSkKLS17Ci0tICAgIHN0cnVjdCBsZGJtaW5mbyAqbGkgPSAoc3RydWN0 IGxkYm1pbmZvICopYXJnOwotLSAgICBpbnQgcmV0dmFsID0gTERBUF9TVUNDRVNTOwotLSAgICBp bnQgdmFsID0gKGludCkoKHVpbnRwdHJfdCl2YWx1ZSk7Ci0tCi0tICAgIC8qIERvIHdoYXRldmVy IHdlIGNhbiB0byBtYWtlIHN1cmUgdGhlIGRhdGEgaXMgb2suICovCi0tCi0tICAgIC8qIENhdGNo IGF0dGVtcHRzIHRvIGNvbmZpZ3VyZSBhIHN0dXBpZGx5IGxvdyBhbmNlc3RvcmlkIGFsbGlkc3Ro cmVzaG9sZCAqLwotLSAgICBpZiAoKHZhbCA+IC0xKSAmJiAodmFsIDwgNTAwMCkpIHsKLS0gICAg ICAgIHZhbCA9IDUwMDA7Ci0tICAgIH0KLS0KLS0gICAgaWYgKGFwcGx5KSB7Ci0tICAgICAgICBs aS0+bGlfc3lzdGVtX2FsbGlkc3RocmVzaG9sZCA9IHZhbDsKLS0gICAgfQotLQotLSAgICByZXR1 cm4gcmV0dmFsOwotLX0KLS0KLSBzdGF0aWMgdm9pZCAqCi0gbGRibV9jb25maWdfcGFnZWRhbGxp ZHN0aHJlc2hvbGRfZ2V0KHZvaWQgKmFyZykKLSB7Ci1AQCAtMTA5NCw3ICsxMDY1LDYgQEAgc3Rh dGljIGNvbmZpZ19pbmZvIGxkYm1fY29uZmlnW10gPSB7Ci0gICAgIHtDT05GSUdfTE9PS1RIUk9V R0hMSU1JVCwgQ09ORklHX1RZUEVfSU5ULCAiNTAwMCIsICZsZGJtX2NvbmZpZ19sb29rdGhyb3Vn aGxpbWl0X2dldCwgJmxkYm1fY29uZmlnX2xvb2t0aHJvdWdobGltaXRfc2V0LCBDT05GSUdfRkxB R19BTFdBWVNfU0hPVyB8IENPTkZJR19GTEFHX0FMTE9XX1JVTk5JTkdfQ0hBTkdFfSwKLSAgICAg e0NPTkZJR19NT0RFLCBDT05GSUdfVFlQRV9JTlRfT0NUQUwsICIwNjAwIiwgJmxkYm1fY29uZmln X21vZGVfZ2V0LCAmbGRibV9jb25maWdfbW9kZV9zZXQsIENPTkZJR19GTEFHX0FMV0FZU19TSE9X IHwgQ09ORklHX0ZMQUdfQUxMT1dfUlVOTklOR19DSEFOR0V9LAotICAgICB7Q09ORklHX0lETElT VFNDQU5MSU1JVCwgQ09ORklHX1RZUEVfSU5ULCAiMjE0NzQ4MzY0NiIsICZsZGJtX2NvbmZpZ19h bGxpZHN0aHJlc2hvbGRfZ2V0LCAmbGRibV9jb25maWdfYWxsaWRzdGhyZXNob2xkX3NldCwgQ09O RklHX0ZMQUdfQUxXQVlTX1NIT1cgfCBDT05GSUdfRkxBR19BTExPV19SVU5OSU5HX0NIQU5HRX0s Ci0tICAgIHtDT05GSUdfU1lTVEVNSURMSVNUU0NBTkxJTUlULCBDT05GSUdfVFlQRV9JTlQsICI1 MDAwIiwgJmxkYm1fY29uZmlnX3N5c3RlbV9hbGxpZHN0aHJlc2hvbGRfZ2V0LCAmbGRibV9jb25m aWdfc3lzdGVtX2FsbGlkc3RocmVzaG9sZF9zZXQsIENPTkZJR19GTEFHX0FMV0FZU19TSE9XIHwg Q09ORklHX0ZMQUdfQUxMT1dfUlVOTklOR19DSEFOR0V9LAotICAgICB7Q09ORklHX0RJUkVDVE9S WSwgQ09ORklHX1RZUEVfU1RSSU5HLCAiIiwgJmxkYm1fY29uZmlnX2RpcmVjdG9yeV9nZXQsICZs ZGJtX2NvbmZpZ19kaXJlY3Rvcnlfc2V0LCBDT05GSUdfRkxBR19BTFdBWVNfU0hPVyB8IENPTkZJ R19GTEFHX0FMTE9XX1JVTk5JTkdfQ0hBTkdFIHwgQ09ORklHX0ZMQUdfU0tJUF9ERUZBVUxUX1NF VFRJTkd9LAotICAgICB7Q09ORklHX01BWFBBU1NCRUZPUkVNRVJHRSwgQ09ORklHX1RZUEVfSU5U LCAiMTAwIiwgJmxkYm1fY29uZmlnX21heHBhc3NiZWZvcmVtZXJnZV9nZXQsICZsZGJtX2NvbmZp Z19tYXhwYXNzYmVmb3JlbWVyZ2Vfc2V0LCAwfSwKLSAKLWRpZmYgLS1naXQgYS9sZGFwL3NlcnZl cnMvc2xhcGQvYmFjay1sZGJtL2xkYm1fY29uZmlnLmggYi9sZGFwL3NlcnZlcnMvc2xhcGQvYmFj ay1sZGJtL2xkYm1fY29uZmlnLmgKLWluZGV4IDI5YTM0MjZhYi4uZTY5YmZlZWRmIDEwMDY0NAot LS0tIGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9sZGJtX2NvbmZpZy5oCi0rKysgYi9s ZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2xkYm1fY29uZmlnLmgKLUBAIC02MCw3ICs2MCw2 IEBAIHN0cnVjdCBjb25maWdfaW5mbwotICNkZWZpbmUgQ09ORklHX1JBTkdFTE9PS1RIUk9VR0hM SU1JVCAibnNzbGFwZC1yYW5nZWxvb2t0aHJvdWdobGltaXQiCi0gI2RlZmluZSBDT05GSUdfUEFH RURMT09LVEhST1VHSExJTUlUICJuc3NsYXBkLXBhZ2VkbG9va3Rocm91Z2hsaW1pdCIKLSAjZGVm aW5lIENPTkZJR19JRExJU1RTQ0FOTElNSVQgIm5zc2xhcGQtaWRsaXN0c2NhbmxpbWl0IgotLSNk ZWZpbmUgQ09ORklHX1NZU1RFTUlETElTVFNDQU5MSU1JVCAibnNzbGFwZC1zeXN0ZW1pZGxpc3Rz Y2FubGltaXQiCi0gI2RlZmluZSBDT05GSUdfUEFHRURJRExJU1RTQ0FOTElNSVQgIm5zc2xhcGQt cGFnZWRpZGxpc3RzY2FubGltaXQiCi0gI2RlZmluZSBDT05GSUdfRElSRUNUT1JZICJuc3NsYXBk LWRpcmVjdG9yeSIKLSAjZGVmaW5lIENPTkZJR19NT0RFICJuc3NsYXBkLW1vZGUiCi1kaWZmIC0t Z2l0IGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9sZGJtX2luZGV4X2NvbmZpZy5jIGIv bGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9sZGJtX2luZGV4X2NvbmZpZy5jCi1pbmRleCBi YWUyYTY0YjkuLjM4ZTczNjhlMSAxMDA2NDQKLS0tLSBhL2xkYXAvc2VydmVycy9zbGFwZC9iYWNr LWxkYm0vbGRibV9pbmRleF9jb25maWcuYwotKysrIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2st bGRibS9sZGJtX2luZGV4X2NvbmZpZy5jCi1AQCAtMzg0LDE0ICszODQsNiBAQCBsZGJtX2luc3Rh bmNlX2NvbmZpZ19hZGRfaW5kZXhfZW50cnkoCi0gICAgICAgICB9Ci0gICAgIH0KLSAKLS0gICAg LyogZ2V0IG5zSW5kZXhJRExpc3RTY2FuTGltaXQgYW5kIGl0cyB2YWx1ZXMsIGFuZCBhZGQgdGhl bSAqLwotLSAgICBpZiAoMCA9PSBzbGFwaV9lbnRyeV9hdHRyX2ZpbmQoZSwgIm5zSW5kZXhJRExp c3RTY2FuTGltaXQiLCAmYXR0cikpIHsKLS0gICAgICAgIGZvciAoaiA9IHNsYXBpX2F0dHJfZmly c3RfdmFsdWUoYXR0ciwgJnN2YWwpOyBqICE9IC0xOyBqID0gc2xhcGlfYXR0cl9uZXh0X3ZhbHVl KGF0dHIsIGosICZzdmFsKSkgewotLSAgICAgICAgICAgIGF0dHJWYWx1ZSA9IHNsYXBpX3ZhbHVl X2dldF9iZXJ2YWwoc3ZhbCk7Ci0tICAgICAgICAgICAgZUJ1ZiA9IFBSX3NwcmludGZfYXBwZW5k KGVCdWYsICJuc0luZGV4SURMaXN0U2NhbkxpbWl0OiAlc1xuIiwgYXR0clZhbHVlLT5idl92YWwp OwotLSAgICAgICAgfQotLSAgICB9Ci0tCi0gICAgIGxkYm1fY29uZmlnX2FkZF9kc2VfZW50cnko bGksIGVCdWYsIGZsYWdzKTsKLSAgICAgaWYgKGVCdWYpIHsKLSAgICAgICAgIFBSX3NtcHJpbnRm X2ZyZWUoZUJ1Zik7Ci1kaWZmIC0tZ2l0IGEvc3JjL2xpYjM4OS9saWIzODkvYmFja2VuZC5weSBi L3NyYy9saWIzODkvbGliMzg5L2JhY2tlbmQucHkKLWluZGV4IDI3NGQ0NWFiZS4uZjNkYmU3Yzky IDEwMDY0NAotLS0tIGEvc3JjL2xpYjM4OS9saWIzODkvYmFja2VuZC5weQotKysrIGIvc3JjL2xp YjM4OS9saWIzODkvYmFja2VuZC5weQotQEAgLTY0NSwxMCArNjQ1LDExIEBAIGNsYXNzIEJhY2tl bmQoRFNMZGFwT2JqZWN0KToKLSAgICAgICAgIGluZGV4ZXMgPSBzZWxmLmdldF9pbmRleGVzKCkK LSAKLSAgICAgICAgICMgRGVmYXVsdCBzeXN0ZW0gaW5kZXhlcyB0YWtlbiBmcm9tIGxkYXAvc2Vy dmVycy9zbGFwZC9iYWNrLWxkYm0vaW5zdGFuY2UuYwotKyAgICAgICAgIyBOb3RlOiBlbnRyeXJk biBhbmQgYW5jZXN0b3JpZCBhcmUgaW50ZXJuYWwgc3lzdGVtIGluZGV4ZXMgdGhhdCBhcmUgbm90 Ci0rICAgICAgICAjIGV4cG9zZWQgaW4gY249Y29uZmlnIC0gdGhleSBhcmUgbWFuYWdlZCBpbnRl cm5hbGx5IGJ5IHRoZSBzZXJ2ZXIuCi0rICAgICAgICAjIE9ubHkgcGFyZW50aWQgaGFzIGEgRFNF IGNvbmZpZyBlbnRyeSAoZm9yIHRoZSBpbnRlZ2VyT3JkZXJpbmdNYXRjaCBydWxlKS4KLSAgICAg ICAgIGV4cGVjdGVkX3N5c3RlbV9pbmRleGVzID0gewotLSAgICAgICAgICAgICdlbnRyeXJkbic6 IHsndHlwZXMnOiBbJ3N1YnRyZWUnXSwgJ21hdGNoaW5nX3J1bGUnOiBOb25lfSwKLS0gICAgICAg ICAgICAncGFyZW50aWQnOiB7J3R5cGVzJzogWydlcSddLCAnbWF0Y2hpbmdfcnVsZSc6ICdpbnRl Z2VyT3JkZXJpbmdNYXRjaCcsICdzY2FubGltaXQnOiAnbGltaXQ9NTAwMCB0eXBlPWVxIGZsYWdz PUFORCd9LAotLSAgICAgICAgICAgICdhbmNlc3RvcmlkJzogeyd0eXBlcyc6IFsnZXEnXSwgJ21h dGNoaW5nX3J1bGUnOiAnaW50ZWdlck9yZGVyaW5nTWF0Y2gnLCAnc2NhbmxpbWl0JzogJ2xpbWl0 PTUwMDAgdHlwZT1lcSBmbGFncz1BTkQnfSwKLSsgICAgICAgICAgICAncGFyZW50aWQnOiB7J3R5 cGVzJzogWydlcSddLCAnbWF0Y2hpbmdfcnVsZSc6ICdpbnRlZ2VyT3JkZXJpbmdNYXRjaCd9LAot ICAgICAgICAgICAgICdvYmplY3RDbGFzcyc6IHsndHlwZXMnOiBbJ2VxJ10sICdtYXRjaGluZ19y dWxlJzogTm9uZX0sCi0gICAgICAgICAgICAgJ2FjaSc6IHsndHlwZXMnOiBbJ3ByZXMnXSwgJ21h dGNoaW5nX3J1bGUnOiBOb25lfSwKLSAgICAgICAgICAgICAnbnNjcEVudHJ5RE4nOiB7J3R5cGVz JzogWydlcSddLCAnbWF0Y2hpbmdfcnVsZSc6IE5vbmV9LAotQEAgLTcwNSwxNyArNzA2LDE0IEBA IGNsYXNzIEJhY2tlbmQoRFNMZGFwT2JqZWN0KToKLSAgICAgICAgICAgICAgICAgICAgICMgR2Vu ZXJhdGUgcmVtZWRpYXRpb24gY29tbWFuZAotICAgICAgICAgICAgICAgICAgICAgaW5kZXhfdHlw ZXMgPSAnICcuam9pbihbZiItLWluZGV4LXR5cGUge3R9IiBmb3IgdCBpbiBleHBlY3RlZF9jb25m aWdbJ3R5cGVzJ11dKQotICAgICAgICAgICAgICAgICAgICAgY21kID0gZiJkc2NvbmYgWU9VUl9J TlNUQU5DRSBiYWNrZW5kIGluZGV4IGFkZCB7YmVuYW1lfSAtLWF0dHIge2F0dHJfbmFtZX0ge2lu ZGV4X3R5cGVzfSIKLS0gICAgICAgICAgICAgICAgICAgIGlmIGV4cGVjdGVkX2NvbmZpZy5nZXQo J21hdGNoaW5nX3J1bGUnKToKLSsgICAgICAgICAgICAgICAgICAgIGlmIGV4cGVjdGVkX2NvbmZp Z1snbWF0Y2hpbmdfcnVsZSddOgotICAgICAgICAgICAgICAgICAgICAgICAgIGNtZCArPSBmIiAt LW1hdGNoaW5nLXJ1bGUge2V4cGVjdGVkX2NvbmZpZ1snbWF0Y2hpbmdfcnVsZSddfSIKLS0gICAg ICAgICAgICAgICAgICAgIGlmIGV4cGVjdGVkX2NvbmZpZy5nZXQoJ3NjYW5saW1pdCcpOgotLSAg ICAgICAgICAgICAgICAgICAgICAgIGNtZCArPSBmIiAtLWFkZC1zY2FubGltaXQgXCJ7ZXhwZWN0 ZWRfY29uZmlnWydzY2FubGltaXQnXX1cIiIKLSAgICAgICAgICAgICAgICAgICAgIHJlbWVkaWF0 aW9uX2NvbW1hbmRzLmFwcGVuZChjbWQpCi0gICAgICAgICAgICAgICAgICAgICByZWluZGV4X2F0 dHJzLmFkZChhdHRyX25hbWUpICAjIE5ldyBpbmRleCBuZWVkcyByZWluZGV4aW5nCi0gICAgICAg ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAjIEluZGV4IGV4aXN0cywgY2hl Y2sgY29uZmlndXJhdGlvbgotICAgICAgICAgICAgICAgICAgICAgYWN0dWFsX3R5cGVzID0gaW5k ZXguZ2V0X2F0dHJfdmFsc191dGY4KCduc0luZGV4VHlwZScpIG9yIFtdCi0gICAgICAgICAgICAg ICAgICAgICBhY3R1YWxfbXJzID0gaW5kZXguZ2V0X2F0dHJfdmFsc191dGY4KCduc01hdGNoaW5n UnVsZScpIG9yIFtdCi0tICAgICAgICAgICAgICAgICAgICBhY3R1YWxfc2NhbmxpbWl0ID0gaW5k ZXguZ2V0X2F0dHJfdmFsc191dGY4KCduc0luZGV4SURMaXN0U2NhbkxpbWl0Jykgb3IgW10KLSAK LSAgICAgICAgICAgICAgICAgICAgICMgTm9ybWFsaXplIHRvIGxvd2VyY2FzZSBmb3IgY29tcGFy aXNvbgotICAgICAgICAgICAgICAgICAgICAgYWN0dWFsX3R5cGVzID0gW3QubG93ZXIoKSBmb3Ig dCBpbiBhY3R1YWxfdHlwZXNdCi1AQCAtNzMwLDMxICs3MjgsMTYgQEAgY2xhc3MgQmFja2VuZChE U0xkYXBPYmplY3QpOgotICAgICAgICAgICAgICAgICAgICAgICAgIHJlbWVkaWF0aW9uX2NvbW1h bmRzLmFwcGVuZChjbWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVpbmRleF9hdHRycy5h ZGQoYXR0cl9uYW1lKQotIAotLSAgICAgICAgICAgICAgICAgICAgIyBDaGVjayBtYXRjaGluZyBy dWxlcyBhbmQgc2NhbmxpbWl0IHRvZ2V0aGVyIHRvIGdlbmVyYXRlIGEgc2luZ2xlIGNvbWJpbmVk IGNvbW1hbmQKLSsgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgbWF0Y2hpbmcgcnVsZXMKLSAg ICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX21yID0gZXhwZWN0ZWRfY29uZmlnLmdldCgnbWF0 Y2hpbmdfcnVsZScpCi0tICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9zY2FubGltaXQgPSBl eHBlY3RlZF9jb25maWcuZ2V0KCdzY2FubGltaXQnKQotLQotLSAgICAgICAgICAgICAgICAgICAg bWlzc2luZ19tciA9IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgICBpZiBleHBlY3RlZF9tcjoK LSAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWxfbXJzX2xvd2VyID0gW21yLmxvd2VyKCkg Zm9yIG1yIGluIGFjdHVhbF9tcnNdCi0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXhwZWN0 ZWRfbXIubG93ZXIoKSBub3QgaW4gYWN0dWFsX21yc19sb3dlcjoKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGlzY3JlcGFuY2llcy5hcHBlbmQoZiJJbmRleCB7YXR0cl9uYW1lfSBtaXNz aW5nIG1hdGNoaW5nIHJ1bGU6IHtleHBlY3RlZF9tcn0iKQotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtaXNzaW5nX21yID0gVHJ1ZQotLQotLSAgICAgICAgICAgICAgICAgICAgbWlzc2lu Z19zY2FubGltaXQgPSBGYWxzZQotLSAgICAgICAgICAgICAgICAgICAgaWYgZXhwZWN0ZWRfc2Nh bmxpbWl0IGFuZCAobGVuKGFjdHVhbF9zY2FubGltaXQpID09IDApOgotLSAgICAgICAgICAgICAg ICAgICAgICAgIGRpc2NyZXBhbmNpZXMuYXBwZW5kKGYiSW5kZXgge2F0dHJfbmFtZX0gbWlzc2lu ZyBmaW5lIGdyYWluIGRlZmluaXRpb24gb2YgSURzIGxpbWl0OiB7ZXhwZWN0ZWRfc2NhbmxpbWl0 fSIpCi0tICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2luZ19zY2FubGltaXQgPSBUcnVlCi0t Ci0tICAgICAgICAgICAgICAgICAgICAjIEdlbmVyYXRlIGEgc2luZ2xlIGNvbWJpbmVkIGNvbW1h bmQgZm9yIGFsbCBtaXNzaW5nIGl0ZW1zCi0tICAgICAgICAgICAgICAgICAgICBpZiBtaXNzaW5n X21yIG9yIG1pc3Npbmdfc2NhbmxpbWl0OgotLSAgICAgICAgICAgICAgICAgICAgICAgIGNtZCA9 IGYiZHNjb25mIFlPVVJfSU5TVEFOQ0UgYmFja2VuZCBpbmRleCBzZXQge2JlbmFtZX0gLS1hdHRy IHthdHRyX25hbWV9IgotLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1pc3NpbmdfbXI6Ci0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZCArPSBmIiAtLWFkZC1tciB7ZXhwZWN0ZWRf bXJ9IgotLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1pc3Npbmdfc2NhbmxpbWl0OgotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjbWQgKz0gZiIgLS1hZGQtc2NhbmxpbWl0IFwie2V4 cGVjdGVkX3NjYW5saW1pdH1cIiIKLS0gICAgICAgICAgICAgICAgICAgICAgICByZW1lZGlhdGlv bl9jb21tYW5kcy5hcHBlbmQoY21kKQotLSAgICAgICAgICAgICAgICAgICAgICAgIHJlaW5kZXhf YXR0cnMuYWRkKGF0dHJfbmFtZSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBZGQg dGhlIG1pc3NpbmcgbWF0Y2hpbmcgcnVsZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj bWQgPSBmImRzY29uZiBZT1VSX0lOU1RBTkNFIGJhY2tlbmQgaW5kZXggc2V0IHtiZW5hbWV9IC0t YXR0ciB7YXR0cl9uYW1lfSAtLWFkZC1tciB7ZXhwZWN0ZWRfbXJ9IgotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZW1lZGlhdGlvbl9jb21tYW5kcy5hcHBlbmQoY21kKQotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZWluZGV4X2F0dHJzLmFkZChhdHRyX25hbWUpCi0gCi0gICAg ICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgICBzZWxmLl9s b2cuZGVidWcoZiJfbGludF9zeXN0ZW1faW5kZXhlcyAtIEVycm9yIGNoZWNraW5nIGluZGV4IHth dHRyX25hbWV9OiB7ZX0iKQotQEAgLTk5MywxMyArOTc2LDEyIEBAIGNsYXNzIEJhY2tlbmQoRFNM ZGFwT2JqZWN0KToKLSAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICByYWlzZSBWYWx1 ZUVycm9yKCJDYW4gbm90IGRlbGV0ZSBpbmRleCBiZWNhdXNlIGl0IGRvZXMgbm90IGV4aXN0IikK LSAKLS0gICAgZGVmIGFkZF9pbmRleChzZWxmLCBhdHRyX25hbWUsIHR5cGVzLCBtYXRjaGluZ19y dWxlcz1Ob25lLCBpZGxpc3RzY2FubGltaXQ9Tm9uZSwgcmVpbmRleD1GYWxzZSk6Ci0rICAgIGRl ZiBhZGRfaW5kZXgoc2VsZiwgYXR0cl9uYW1lLCB0eXBlcywgbWF0Y2hpbmdfcnVsZXM9Tm9uZSwg cmVpbmRleD1GYWxzZSk6Ci0gICAgICAgICAiIiIgQWRkIGFuIGluZGV4LgotIAotICAgICAgICAg OnBhcmFtIGF0dHJfbmFtZSAtIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZSB0byBpbmRleAotICAgICAg ICAgOnBhcmFtIHR5cGVzIC0gYSBMaXN0IG9mIGluZGV4IHR5cGVzKGVxLCBwcmVzLCBzdWIsIGFw cHJveCkKLSAgICAgICAgIDpwYXJhbSBtYXRjaGluZ19ydWxlcyAtIGEgTGlzdCBvZiBtYXRjaGlu ZyBydWxlcyBmb3IgdGhlIGluZGV4Ci0tICAgICAgICA6cGFyYW0gaWRsaXN0c2NhbmxpbWl0IC0g YSBMaXN0IG9mIGZpbmUgZ3JhaW4gZGVmaW5pdGlvbnMgZm9yIHNjYW5uaW5nIGxpbWl0Ci0gICAg ICAgICA6cGFyYW0gcmVpbmRleCAtIElmIHNldCB0byBUcnVlIHRoZW4gaW5kZXggdGhlIGF0dHJp YnV0ZSBhZnRlciBjcmVhdGluZyBpdC4KLSAgICAgICAgICIiIgotIAotQEAgLTEwMjksMTUgKzEw MTEsNiBAQCBjbGFzcyBCYWNrZW5kKERTTGRhcE9iamVjdCk6Ci0gICAgICAgICAgICAgIyBPbmx5 IGFkZCBpZiB0aGVyZSBhcmUgYWN0dWFsbHkgcnVsZXMgcHJlc2VudCBpbiB0aGUgbGlzdC4KLSAg ICAgICAgICAgICBpZiBsZW4obXJzKSA+IDA6Ci0gICAgICAgICAgICAgICAgIHByb3BzWyduc01h dGNoaW5nUnVsZSddID0gbXJzCi0tCi0tICAgICAgICBpZiBpZGxpc3RzY2FubGltaXQgaXMgbm90 IE5vbmU6Ci0tICAgICAgICAgICAgc2NhbmxpbWl0cyA9IFtdCi0tICAgICAgICAgICAgZm9yIHNj YW5saW1pdCBpbiBpZGxpc3RzY2FubGltaXQ6Ci0tICAgICAgICAgICAgICAgIHNjYW5saW1pdHMu YXBwZW5kKHNjYW5saW1pdCkKLS0gICAgICAgICAgICAjIE9ubHkgYWRkIGlmIHRoZXJlIGFyZSBh Y3R1YWxseSBsaW1pdHMgaW4gdGhlIGxpc3QuCi0tICAgICAgICAgICAgaWYgbGVuKHNjYW5saW1p dHMpID4gMDoKLS0gICAgICAgICAgICAgICAgcHJvcHNbJ25zSW5kZXhJRExpc3RTY2FuTGltaXQn XSA9IHNjYW5saW1pdHMKLS0KLSAgICAgICAgIG5ld19pbmRleC5jcmVhdGUocHJvcGVydGllcz1w cm9wcywgYmFzZWRuPSJjbj1pbmRleCwiICsgc2VsZi5fZG4pCi0gCi0gICAgICAgICBpZiByZWlu ZGV4OgotQEAgLTEzNDksNyArMTMyMiw2IEBAIGNsYXNzIERhdGFiYXNlQ29uZmlnKERTTGRhcE9i amVjdCk6Ci0gICAgICAgICAgICAgJ25zc2xhcGQtbG9va3Rocm91Z2hsaW1pdCcsCi0gICAgICAg ICAgICAgJ25zc2xhcGQtbW9kZScsCi0gICAgICAgICAgICAgJ25zc2xhcGQtaWRsaXN0c2Nhbmxp bWl0JywKLS0gICAgICAgICAgICAnbnNzbGFwZC1zeXN0ZW1pZGxpc3RzY2FubGltaXQnLAotICAg ICAgICAgICAgICduc3NsYXBkLWRpcmVjdG9yeScsCi0gICAgICAgICAgICAgJ25zc2xhcGQtaW1w b3J0LWNhY2hlc2l6ZScsCi0gICAgICAgICAgICAgJ25zc2xhcGQtaWRsLXN3aXRjaCcsCi1kaWZm IC0tZ2l0IGEvc3JjL2xpYjM4OS9saWIzODkvY2xpX2NvbmYvYmFja2VuZC5weSBiL3NyYy9saWIz ODkvbGliMzg5L2NsaV9jb25mL2JhY2tlbmQucHkKLWluZGV4IDk3NzJlMzlkNC4uNjhlZmE3OTVj IDEwMDY0NAotLS0tIGEvc3JjL2xpYjM4OS9saWIzODkvY2xpX2NvbmYvYmFja2VuZC5weQotKysr IGIvc3JjL2xpYjM4OS9saWIzODkvY2xpX2NvbmYvYmFja2VuZC5weQotQEAgLTM5LDcgKzM5LDYg QEAgYXJnX3RvX2F0dHIgPSB7Ci0gICAgICAgICAnbW9kZSc6ICduc3NsYXBkLW1vZGUnLAotICAg ICAgICAgJ3N0YXRlJzogJ25zc2xhcGQtc3RhdGUnLAotICAgICAgICAgJ2lkbGlzdHNjYW5saW1p dCc6ICduc3NsYXBkLWlkbGlzdHNjYW5saW1pdCcsCi0tICAgICAgICAnc3lzdGVtaWRsaXN0c2Nh bmxpbWl0JzogJ25zc2xhcGQtc3lzdGVtaWRsaXN0c2NhbmxpbWl0JywKLSAgICAgICAgICdkaXJl Y3RvcnknOiAnbnNzbGFwZC1kaXJlY3RvcnknLAotICAgICAgICAgJ2RiY2FjaGVzaXplJzogJ25z c2xhcGQtZGJjYWNoZXNpemUnLAotICAgICAgICAgJ2xvZ2RpcmVjdG9yeSc6ICduc3NsYXBkLWRi LWxvZ2RpcmVjdG9yeScsCi1AQCAtNjI2LDIxICs2MjUsNiBAQCBkZWYgYmFja2VuZF9zZXRfaW5k ZXgoaW5zdCwgYmFzZWRuLCBsb2csIGFyZ3MpOgotICAgICAgICAgICAgIGV4Y2VwdCBsZGFwLk5P X1NVQ0hfQVRUUklCVVRFOgotICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW4g bm90IGRlbGV0ZSBtYXRjaGluZyBydWxlIHR5cGUgYmVjYXVzZSBpdCBkb2VzIG5vdCBleGlzdCcp Ci0gCi0tICAgIGlmIGFyZ3MucmVwbGFjZV9zY2FubGltaXQgaXMgbm90IE5vbmU6Ci0tICAgICAg ICBmb3IgcmVwbGFjZV9zY2FubGltaXQgaW4gYXJncy5yZXBsYWNlX3NjYW5saW1pdDoKLS0gICAg ICAgICAgICBpbmRleC5yZXBsYWNlKCduc0luZGV4SURMaXN0U2NhbkxpbWl0JywgcmVwbGFjZV9z Y2FubGltaXQpCi0tCi0tICAgIGlmIGFyZ3MuYWRkX3NjYW5saW1pdCBpcyBub3QgTm9uZToKLS0g ICAgICAgIGZvciBhZGRfc2NhbmxpbWl0IGluIGFyZ3MuYWRkX3NjYW5saW1pdDoKLS0gICAgICAg ICAgICBpbmRleC5hZGQoJ25zSW5kZXhJRExpc3RTY2FuTGltaXQnLCBhZGRfc2NhbmxpbWl0KQot LQotLSAgICBpZiBhcmdzLmRlbF9zY2FubGltaXQgaXMgbm90IE5vbmU6Ci0tICAgICAgICBmb3Ig ZGVsX3NjYW5saW1pdCBpbiBhcmdzLmRlbF9zY2FubGltaXQ6Ci0tICAgICAgICAgICAgdHJ5Ogot LSAgICAgICAgICAgICAgICBpbmRleC5yZW1vdmUoJ25zSW5kZXhJRExpc3RTY2FuTGltaXQnLCBk ZWxfc2NhbmxpbWl0KQotLSAgICAgICAgICAgIGV4Y2VwdCBsZGFwLk5PX1NVQ0hfQVRUUklCVVRF OgotLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdDYW4gbm90IGRlbGV0ZSBhIGZp bmUgZ3JhaW4gbGltaXQgZGVmaW5pdGlvbiBiZWNhdXNlIGl0IGRvZXMgbm90IGV4aXN0JykKLS0K LSAgICAgaWYgYXJncy5yZWluZGV4OgotICAgICAgICAgYmUucmVpbmRleChhdHRycz1bYXJncy5h dHRyXSkKLSAgICAgbG9nLmluZm8oIkluZGV4IHN1Y2Nlc3NmdWxseSB1cGRhdGVkIikKLUBAIC05 NjMsOSArOTQ3LDYgQEAgZGVmIGNyZWF0ZV9wYXJzZXIoc3VicGFyc2Vycyk6Ci0gICAgIGVkaXRf aW5kZXhfcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1kZWwtdHlwZScsIGFjdGlvbj0nYXBwZW5kJywg aGVscD0nUmVtb3ZlcyBhbiBpbmRleCB0eXBlIGZyb20gdGhlIGluZGV4OiAoZXEsIHN1YiwgcHJl cywgb3IgYXBwcm94KScpCi0gICAgIGVkaXRfaW5kZXhfcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1h ZGQtbXInLCBhY3Rpb249J2FwcGVuZCcsIGhlbHA9J0FkZHMgYSBtYXRjaGluZy1ydWxlIHRvIHRo ZSBpbmRleCcpCi0gICAgIGVkaXRfaW5kZXhfcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1kZWwtbXIn LCBhY3Rpb249J2FwcGVuZCcsIGhlbHA9J1JlbW92ZXMgYSBtYXRjaGluZy1ydWxlIGZyb20gdGhl IGluZGV4JykKLS0gICAgZWRpdF9pbmRleF9wYXJzZXIuYWRkX2FyZ3VtZW50KCctLWFkZC1zY2Fu bGltaXQnLCBhY3Rpb249J2FwcGVuZCcsIGhlbHA9J0FkZHMgYSBmaW5lIGdyYWluIGxpbWl0IGRl ZmluaXRvbiB0byB0aGUgaW5kZXgnKQotLSAgICBlZGl0X2luZGV4X3BhcnNlci5hZGRfYXJndW1l bnQoJy0tcmVwbGFjZS1zY2FubGltaXQnLCBhY3Rpb249J2FwcGVuZCcsIGhlbHA9J1JlcGxhY2Vz IGEgZmluZSBncmFpbiBsaW1pdCBkZWZpbml0b24gdG8gdGhlIGluZGV4JykKLS0gICAgZWRpdF9p bmRleF9wYXJzZXIuYWRkX2FyZ3VtZW50KCctLWRlbC1zY2FubGltaXQnLCBhY3Rpb249J2FwcGVu ZCcsIGhlbHA9J1JlbW92ZXMgYSBmaW5lIGdyYWluIGxpbWl0IGRlZmluaXRvbiB0byB0aGUgaW5k ZXgnKQotICAgICBlZGl0X2luZGV4X3BhcnNlci5hZGRfYXJndW1lbnQoJy0tcmVpbmRleCcsIGFj dGlvbj0nc3RvcmVfdHJ1ZScsIGhlbHA9J1JlLWluZGV4ZXMgdGhlIGRhdGFiYXNlIGFmdGVyIGVk aXRpbmcgdGhlIGluZGV4JykKLSAgICAgZWRpdF9pbmRleF9wYXJzZXIuYWRkX2FyZ3VtZW50KCdi ZV9uYW1lJywgaGVscD0nVGhlIGJhY2tlbmQgbmFtZSBvciBzdWZmaXgnKQotIAotQEAgLTEwOTIs NyArMTA3Myw2IEBAIGRlZiBjcmVhdGVfcGFyc2VyKHN1YnBhcnNlcnMpOgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dp bGwgY2hlY2sgd2hlbiBleGFtaW5pbmcgY2FuZGlkYXRlIGVudHJpZXMgaW4gcmVzcG9uc2UgdG8g YSBzZWFyY2ggcmVxdWVzdCcpCi0gICAgIHNldF9kYl9jb25maWdfcGFyc2VyLmFkZF9hcmd1bWVu dCgnLS1tb2RlJywgaGVscD0nU3BlY2lmaWVzIHRoZSBwZXJtaXNzaW9ucyB1c2VkIGZvciBuZXds eSBjcmVhdGVkIGluZGV4IGZpbGVzJykKLSAgICAgc2V0X2RiX2NvbmZpZ19wYXJzZXIuYWRkX2Fy Z3VtZW50KCctLWlkbGlzdHNjYW5saW1pdCcsIGhlbHA9J1NwZWNpZmllcyB0aGUgbnVtYmVyIG9m IGVudHJ5IElEcyB0aGF0IGFyZSBzZWFyY2hlZCBkdXJpbmcgYSBzZWFyY2ggb3BlcmF0aW9uJykK LS0gICAgc2V0X2RiX2NvbmZpZ19wYXJzZXIuYWRkX2FyZ3VtZW50KCctLXN5c3RlbWlkbGlzdHNj YW5saW1pdCcsIGhlbHA9J1NwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGVudHJ5IElEcyB0aGF0IGFy ZSBmZXRjaCBmcm9tIGFuY2VzdG9yaWQvcGFyZW50aWQgaW5kZXhlcycpCi0gICAgIHNldF9kYl9j b25maWdfcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1kaXJlY3RvcnknLCBoZWxwPSdTcGVjaWZpZXMg YWJzb2x1dGUgcGF0aCB0byBkYXRhYmFzZSBpbnN0YW5jZScpCi0gICAgIHNldF9kYl9jb25maWdf cGFyc2VyLmFkZF9hcmd1bWVudCgnLS1kYmNhY2hlc2l6ZScsIGhlbHA9J1NwZWNpZmllcyB0aGUg ZGF0YWJhc2UgaW5kZXggY2FjaGUgc2l6ZSBpbiBieXRlcycpCi0gICAgIHNldF9kYl9jb25maWdf cGFyc2VyLmFkZF9hcmd1bWVudCgnLS1sb2dkaXJlY3RvcnknLCBoZWxwPSdTcGVjaWZpZXMgdGhl IHBhdGggdG8gdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRoZSBkYXRhYmFzZSB0cmFuc2Fj dGlvbiBsb2dzJykKLS0tIAotMi41Mi4wCi0KCmRpZmYgLS1naXQgYS8wMDE5LUlzc3VlLTcyMjMt QWRkLXVwZ3JhZGUtZnVuY3Rpb24tdG8tcmVtb3ZlLW5zSW5kZXhJREwucGF0Y2ggYi8wMDE5LUlz c3VlLTcyMjMtQWRkLXVwZ3JhZGUtZnVuY3Rpb24tdG8tcmVtb3ZlLW5zSW5kZXhJREwucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlZmI4ZjUuLjAwMDAwMDAKLS0tIGEvMDAx OS1Jc3N1ZS03MjIzLUFkZC11cGdyYWRlLWZ1bmN0aW9uLXRvLXJlbW92ZS1uc0luZGV4SURMLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEyICswLDAgQEAKLUZyb20gZWExYjUxZGY5YTY5ODkx NWI5NzI5MjMzNTdjYWJhMWM3OGRjYzgyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206 IFZpa3RvciBBc2hpcm92IDx2YXNoaXJvdkByZWRoYXQuY29tPgotRGF0ZTogVGh1LCA1IEZlYiAy MDI2IDEyOjE3OjA2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIElzc3VlIDcyMjMgLSBBZGQgdXBn cmFkZSBmdW5jdGlvbiB0byByZW1vdmUKLSBuc0luZGV4SURMaXN0U2NhbkxpbWl0IGZyb20gcGFy ZW50aWQKLQotRGVzY3JpcHRpb246Ci1BZGQgYHVwZ3JhZGVfcmVtb3ZlX2luZGV4X3NjYW5saW1p dCgpYCBmdW5jdGlvbiB0aGF0IHJlbW92ZXMgdGhlCi1uc0luZGV4SURMaXN0U2NhbkxpbWl0IGF0 dHJpYnV0ZSBmcm9tIHBhcmVudGlkIGluZGV4IGNvbmZpZ3VyYXRpb24KLWlmIHByZXNlbnQuCi0K LVRoaXMgYXR0cmlidXRlIHdhcyBpbmNvcnJlY3RseSBhZGRlZCBieSBhIHByZXZpb3VzIHZlcnNp b24gYW5kIGNhbgotY2F1c2UgaXNzdWVzIHdpdGggaW5kZXggY29uZmlndXJhdGlvbi4gVGhlIHVw Z3JhZGUgZnVuY3Rpb24gcnVucwotYXV0b21hdGljYWxseSBvbiBzZXJ2ZXIgc3RhcnR1cCBhbmQg cmVtb3ZlcyB0aGUgYXR0cmlidXRlIGlmIGZvdW5kLgotCi1SZWxhdGVzOiBodHRwczovL2dpdGh1 Yi5jb20vMzg5ZHMvMzg5LWRzLWJhc2UvaXNzdWVzLzcyMjMKLQotUmV2aWV3ZWQgYnk6IEBwcm9n aWVyMzg5LCBAdGJvcmRheiwgQGRyb2lkZWNrIChUaGFua3MhKQotLS0tCi0gLi4uL2hlYWx0aGNo ZWNrL2hlYWx0aF9zeXN0ZW1faW5kZXhlc190ZXN0LnB5IHwgIDUyICsrKysrKysrKwotIGxkYXAv c2VydmVycy9zbGFwZC91cGdyYWRlLmMgICAgICAgICAgICAgICAgICB8IDEwNSArKysrKysrKysr KysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDE1NyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1n aXQgYS9kaXJzcnZ0ZXN0cy90ZXN0cy9zdWl0ZXMvaGVhbHRoY2hlY2svaGVhbHRoX3N5c3RlbV9p bmRleGVzX3Rlc3QucHkgYi9kaXJzcnZ0ZXN0cy90ZXN0cy9zdWl0ZXMvaGVhbHRoY2hlY2svaGVh bHRoX3N5c3RlbV9pbmRleGVzX3Rlc3QucHkKLWluZGV4IDE0MDg0NWEzMy4uYWVhODhlMGUyIDEw MDY0NAotLS0tIGEvZGlyc3J2dGVzdHMvdGVzdHMvc3VpdGVzL2hlYWx0aGNoZWNrL2hlYWx0aF9z eXN0ZW1faW5kZXhlc190ZXN0LnB5Ci0rKysgYi9kaXJzcnZ0ZXN0cy90ZXN0cy9zdWl0ZXMvaGVh bHRoY2hlY2svaGVhbHRoX3N5c3RlbV9pbmRleGVzX3Rlc3QucHkKLUBAIC00NTMsNiArNDUzLDU4 IEBAIGRlZiB0ZXN0X211bHRpcGxlX21pc3NpbmdfaW5kZXhlcyh0b3BvbG9neV9zdCwgbG9nX2J1 ZmZlcmluZ19lbmFibGVkKToKLSAgICAgcnVuX2hlYWx0aGNoZWNrX2FuZF9mbHVzaF9sb2codG9w b2xvZ3lfc3QsIHN0YW5kYWxvbmUsIGpzb249VHJ1ZSwgc2VhcmNoZWRfY29kZT1KU09OX09VVFBV VCkKLSAKLSAKLStkZWYgdGVzdF91cGdyYWRlX3JlbW92ZXNfcGFyZW50aWRfc2NhbmxpbWl0KHRv cG9sb2d5X3N0KToKLSsgICAgIiIiQ2hlY2sgaWYgdXBncmFkZSBmdW5jdGlvbiByZW1vdmVzIG5z SW5kZXhJRExpc3RTY2FuTGltaXQgZnJvbSBwYXJlbnRpZCBpbmRleAotKwotKyAgICA6aWQ6IDI4 MDg4ODZlLWMxYzEtNDQxZC1iM2EzLTI5OWM0ZWYxYWI0YQotKyAgICA6c2V0dXA6IFN0YW5kYWxv bmUgaW5zdGFuY2UKLSsgICAgOnN0ZXBzOgotKyAgICAgICAgMS4gQ3JlYXRlIERTIGluc3RhbmNl Ci0rICAgICAgICAyLiBTdG9wIHRoZSBzZXJ2ZXIKLSsgICAgICAgIDMuIFVzZSBEU0VsZGlmIHRv IGFkZCBuc0luZGV4SURMaXN0U2NhbkxpbWl0IHRvIHBhcmVudGlkIGluZGV4Ci0rICAgICAgICA0 LiBTdGFydCB0aGUgc2VydmVyICh0cmlnZ2VycyB1cGdyYWRlKQotKyAgICAgICAgNS4gVmVyaWZ5 IG5zSW5kZXhJRExpc3RTY2FuTGltaXQgaXMgcmVtb3ZlZCBmcm9tIHBhcmVudGlkIGluZGV4Ci0r ICAgIDpleHBlY3RlZHJlc3VsdHM6Ci0rICAgICAgICAxLiBTdWNjZXNzCi0rICAgICAgICAyLiBT dWNjZXNzCi0rICAgICAgICAzLiBTdWNjZXNzCi0rICAgICAgICA0LiBTdWNjZXNzCi0rICAgICAg ICA1LiBuc0luZGV4SURMaXN0U2NhbkxpbWl0IGlzIG5vIGxvbmdlciBwcmVzZW50Ci0rICAgICIi IgotKyAgICBmcm9tIGxpYjM4OS5kc2VsZGlmIGltcG9ydCBEU0VsZGlmCi0rCi0rICAgIHN0YW5k YWxvbmUgPSB0b3BvbG9neV9zdC5zdGFuZGFsb25lCi0rICAgIFBBUkVOVElEX0ROID0gImNuPXBh cmVudGlkLGNuPWluZGV4LGNuPXVzZXJyb290LGNuPWxkYm0gZGF0YWJhc2UsY249cGx1Z2lucyxj bj1jb25maWciCi0rICAgIFNDQU5MSU1JVF9WQUxVRSA9ICJsaW1pdD01MDAwIHR5cGU9ZXEgZmxh Z3M9QU5EIgotKwotKyAgICBsb2cuaW5mbygiU3RvcCB0aGUgc2VydmVyIikKLSsgICAgc3RhbmRh bG9uZS5zdG9wKCkKLSsKLSsgICAgbG9nLmluZm8oIkFkZCBuc0luZGV4SURMaXN0U2NhbkxpbWl0 IHRvIHBhcmVudGlkIGluZGV4IHVzaW5nIERTRWxkaWYiKQotKyAgICBkc2VfbGRpZiA9IERTRWxk aWYoc3RhbmRhbG9uZSkKLSsgICAgZHNlX2xkaWYuYWRkKFBBUkVOVElEX0ROLCAibnNJbmRleElE TGlzdFNjYW5MaW1pdCIsIFNDQU5MSU1JVF9WQUxVRSkKLSsKLSsgICAgIyBWZXJpZnkgaXQgd2Fz IGFkZGVkCi0rICAgIHNjYW5saW1pdCA9IGRzZV9sZGlmLmdldChQQVJFTlRJRF9ETiwgIm5zSW5k ZXhJRExpc3RTY2FuTGltaXQiKQotKyAgICBhc3NlcnQgc2NhbmxpbWl0IGlzIG5vdCBOb25lLCAi RmFpbGVkIHRvIGFkZCBuc0luZGV4SURMaXN0U2NhbkxpbWl0IgotKyAgICBsb2cuaW5mbyhmIkFk ZGVkIG5zSW5kZXhJRExpc3RTY2FuTGltaXQ6IHtzY2FubGltaXR9IikKLSsKLSsgICAgbG9nLmlu Zm8oIlN0YXJ0IHRoZSBzZXJ2ZXIgKHRyaWdnZXJzIHVwZ3JhZGUpIikKLSsgICAgc3RhbmRhbG9u ZS5zdGFydCgpCi0rCi0rICAgIGxvZy5pbmZvKCJWZXJpZnkgbnNJbmRleElETGlzdFNjYW5MaW1p dCB3YXMgcmVtb3ZlZCBieSB1cGdyYWRlIikKLSsgICAgIyBDaGVjayB2aWEgTERBUCAtIHRoZSB1 cGdyYWRlIHNob3VsZCBoYXZlIHJlbW92ZWQgaXQKLSsgICAgcGFyZW50aWRfaW5kZXggPSBJbmRl eChzdGFuZGFsb25lLCBQQVJFTlRJRF9ETikKLSsgICAgc2NhbmxpbWl0X2FmdGVyID0gcGFyZW50 aWRfaW5kZXguZ2V0X2F0dHJfdmFsc191dGY4KCJuc0luZGV4SURMaXN0U2NhbkxpbWl0IikKLSsg ICAgbG9nLmluZm8oZiJuc0luZGV4SURMaXN0U2NhbkxpbWl0IGFmdGVyIHVwZ3JhZGU6IHtzY2Fu bGltaXRfYWZ0ZXJ9IikKLSsKLSsgICAgIyBUaGUgdXBncmFkZSBmdW5jdGlvbiBzaG91bGQgaGF2 ZSByZW1vdmVkIG5zSW5kZXhJRExpc3RTY2FuTGltaXQKLSsgICAgYXNzZXJ0IG5vdCBzY2FubGlt aXRfYWZ0ZXIsIFwKLSsgICAgICAgIGYibnNJbmRleElETGlzdFNjYW5MaW1pdCBzaG91bGQgaGF2 ZSBiZWVuIHJlbW92ZWQgYnV0IGZvdW5kOiB7c2NhbmxpbWl0X2FmdGVyfSIKLSsKLSsgICAgbG9n LmluZm8oIlVwZ3JhZGUgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQgbnNJbmRleElETGlzdFNjYW5MaW1p dCBmcm9tIHBhcmVudGlkIGluZGV4IikKLSsKLSsKLSBpZiBfX25hbWVfXyA9PSAiX19tYWluX18i OgotICAgICAjIFJ1biBpc29sYXRlZAotICAgICAjIC1zIGZvciBERUJVRyBtb2RlCi1kaWZmIC0t Z2l0IGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL3VwZ3JhZGUuYyBiL2xkYXAvc2VydmVycy9zbGFwZC91 cGdyYWRlLmMKLWluZGV4IGIwMmUzN2VkNi4uZGNkMTY5NDBiIDEwMDY0NAotLS0tIGEvbGRhcC9z ZXJ2ZXJzL3NsYXBkL3VwZ3JhZGUuYwotKysrIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL3VwZ3JhZGUu YwotQEAgLTMzMCw2ICszMzAsMTA3IEBAIHVwZ3JhZGVfcmVtb3ZlX3N1YnRyZWVfcmVuYW1lKHZv aWQpCi0gICAgIHJldHVybiBVUEdSQURFX1NVQ0NFU1M7Ci0gfQotIAotKy8qCi0rICogUmVtb3Zl IG5zSW5kZXhJRExpc3RTY2FuTGltaXQgZnJvbSBwYXJlbnRpZCBpbmRleCBjb25maWd1cmF0aW9u LgotKyAqCi0rICogVGhpcyBhdHRyaWJ1dGUgd2FzIGluY29ycmVjdGx5IGFkZGVkIGJ5IGEgcHJl dmlvdXMgdmVyc2lvbiBhbmQgY2FuCi0rICogY2F1c2UgaXNzdWVzIHdpdGggaW5kZXggY29uZmln dXJhdGlvbi4gUmVtb3ZlIGl0IGlmIHByZXNlbnQuCi0rICovCi0rc3RhdGljIHVwZ3JhZGVfc3Rh dHVzCi0rdXBncmFkZV9yZW1vdmVfaW5kZXhfc2NhbmxpbWl0KHZvaWQpCi0rewotKyAgICBzdHJ1 Y3Qgc2xhcGlfcGJsb2NrICpwYiA9IHNsYXBpX3BibG9ja19uZXcoKTsKLSsgICAgU2xhcGlfRW50 cnkgKipiYWNrZW5kcyA9IE5VTEw7Ci0rICAgIGNvbnN0IGNoYXIgKmJlX2Jhc2VfZG4gPSAiY249 bGRibSBkYXRhYmFzZSxjbj1wbHVnaW5zLGNuPWNvbmZpZyI7Ci0rICAgIGNvbnN0IGNoYXIgKmJl X2ZpbHRlciA9ICIob2JqZWN0Y2xhc3M9bnNCYWNrZW5kSW5zdGFuY2UpIjsKLSsgICAgY29uc3Qg Y2hhciAqYXR0cnNfdG9fY2hlY2tbXSA9IHsicGFyZW50aWQiLCBOVUxMfTsKLSsgICAgdXBncmFk ZV9zdGF0dXMgdXJlc3VsdCA9IFVQR1JBREVfU1VDQ0VTUzsKLSsKLSsgICAgLyogU2VhcmNoIGZv ciBhbGwgYmFja2VuZCBpbnN0YW5jZXMgKi8KLSsgICAgc2xhcGlfc2VhcmNoX2ludGVybmFsX3Nl dF9wYigKLSsgICAgICAgICAgICBwYiwgYmVfYmFzZV9kbiwKLSsgICAgICAgICAgICBMREFQX1ND T1BFX09ORUxFVkVMLAotKyAgICAgICAgICAgIGJlX2ZpbHRlciwgTlVMTCwgMCwgTlVMTCwgTlVM TCwKLSsgICAgICAgICAgICBwbHVnaW5fZ2V0X2RlZmF1bHRfY29tcG9uZW50X2lkKCksIDApOwot KyAgICBzbGFwaV9zZWFyY2hfaW50ZXJuYWxfcGIocGIpOwotKyAgICBzbGFwaV9wYmxvY2tfZ2V0 KHBiLCBTTEFQSV9QTFVHSU5fSU5UT1BfU0VBUkNIX0VOVFJJRVMsICZiYWNrZW5kcyk7Ci0rCi0r ICAgIGlmIChiYWNrZW5kcykgewotKyAgICAgICAgZm9yIChzaXplX3QgYmVfaWR4ID0gMDsgYmFj a2VuZHNbYmVfaWR4XSAhPSBOVUxMOyBiZV9pZHgrKykgewotKyAgICAgICAgICAgIGNvbnN0IGNo YXIgKmJlX2RuID0gc2xhcGlfZW50cnlfZ2V0X2RuX2NvbnN0KGJhY2tlbmRzW2JlX2lkeF0pOwot KyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJlX25hbWUgPSBzbGFwaV9lbnRyeV9hdHRyX2dldF9y ZWYoYmFja2VuZHNbYmVfaWR4XSwgImNuIik7Ci0rICAgICAgICAgICAgaWYgKCFiZV9kbiB8fCAh YmVfbmFtZSkgewotKyAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICB9Ci0r Ci0rICAgICAgICAgICAgZm9yIChzaXplX3QgYXR0cl9pZHggPSAwOyBhdHRyc190b19jaGVja1th dHRyX2lkeF0gIT0gTlVMTDsgYXR0cl9pZHgrKykgewotKyAgICAgICAgICAgICAgICBjb25zdCBj aGFyICphdHRyX25hbWUgPSBhdHRyc190b19jaGVja1thdHRyX2lkeF07Ci0rICAgICAgICAgICAg ICAgIHN0cnVjdCBzbGFwaV9wYmxvY2sgKmlkeF9wYiA9IHNsYXBpX3BibG9ja19uZXcoKTsKLSsg ICAgICAgICAgICAgICAgU2xhcGlfRW50cnkgKippZHhfZW50cmllcyA9IE5VTEw7Ci0rICAgICAg ICAgICAgICAgIGNoYXIgKmlkeF9kbiA9IHNsYXBpX2NyZWF0ZV9kbl9zdHJpbmcoImNuPSVzLGNu PWluZGV4LCVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYXR0cl9uYW1lLCBiZV9kbik7Ci0rICAgICAgICAgICAgICAgIGNoYXIgKmlk eF9maWx0ZXIgPSAiKG9iamVjdGNsYXNzPW5zSW5kZXgpIjsKLSsKLSsgICAgICAgICAgICAgICAg aWYgKCFpZHhfZG4pIHsKLSsgICAgICAgICAgICAgICAgICAgIHNsYXBpX3BibG9ja19kZXN0cm95 KGlkeF9wYik7Ci0rICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAg ICAgfQotKwotKyAgICAgICAgICAgICAgICBzbGFwaV9zZWFyY2hfaW50ZXJuYWxfc2V0X3BiKAot KyAgICAgICAgICAgICAgICAgICAgICAgIGlkeF9wYiwgaWR4X2RuLAotKyAgICAgICAgICAgICAg ICAgICAgICAgIExEQVBfU0NPUEVfQkFTRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZHhf ZmlsdGVyLCBOVUxMLCAwLCBOVUxMLCBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgIHBs dWdpbl9nZXRfZGVmYXVsdF9jb21wb25lbnRfaWQoKSwgMCk7Ci0rICAgICAgICAgICAgICAgIHNs YXBpX3NlYXJjaF9pbnRlcm5hbF9wYihpZHhfcGIpOwotKyAgICAgICAgICAgICAgICBzbGFwaV9w YmxvY2tfZ2V0KGlkeF9wYiwgU0xBUElfUExVR0lOX0lOVE9QX1NFQVJDSF9FTlRSSUVTLCAmaWR4 X2VudHJpZXMpOwotKwotKyAgICAgICAgICAgICAgICBpZiAoaWR4X2VudHJpZXMgJiYgaWR4X2Vu dHJpZXNbMF0pIHsKLSsgICAgICAgICAgICAgICAgICAgIC8qIENoZWNrIGlmIG5zSW5kZXhJRExp c3RTY2FuTGltaXQgaXMgcHJlc2VudCAqLwotKyAgICAgICAgICAgICAgICAgICAgaWYgKHNsYXBp X2VudHJ5X2F0dHJfZ2V0X3JlZihpZHhfZW50cmllc1swXSwgIm5zSW5kZXhJRExpc3RTY2FuTGlt aXQiKSAhPSBOVUxMKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgLyogUmVtb3ZlIG5zSW5k ZXhJRExpc3RTY2FuTGltaXQgKi8KLSsgICAgICAgICAgICAgICAgICAgICAgICBTbGFwaV9QQmxv Y2sgKm1vZF9wYiA9IHNsYXBpX3BibG9ja19uZXcoKTsKLSsgICAgICAgICAgICAgICAgICAgICAg ICBTbGFwaV9Nb2RzIHNtb2RzOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGludCByYzsKLSsK LSsgICAgICAgICAgICAgICAgICAgICAgICBzbGFwaV9tb2RzX2luaXQoJnNtb2RzLCAxKTsKLSsg ICAgICAgICAgICAgICAgICAgICAgICBzbGFwaV9tb2RzX2FkZCgmc21vZHMsIExEQVBfTU9EX0RF TEVURSwgIm5zSW5kZXhJRExpc3RTY2FuTGltaXQiLCAwLCBOVUxMKTsKLSsKLSsgICAgICAgICAg ICAgICAgICAgICAgICBzbGFwaV9tb2RpZnlfaW50ZXJuYWxfc2V0X3BiKAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbW9kX3BiLCBpZHhfZG4sCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzbGFwaV9tb2RzX2dldF9sZGFwbW9kc19ieXJlZigmc21vZHMpLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBsdWdpbl9nZXRfZGVmYXVsdF9jb21wb25lbnRfaWQoKSwgMCk7 Ci0rICAgICAgICAgICAgICAgICAgICAgICAgc2xhcGlfbW9kaWZ5X2ludGVybmFsX3BiKG1vZF9w Yik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgc2xhcGlfcGJsb2NrX2dldChtb2RfcGIsIFNM QVBJX1BMVUdJTl9JTlRPUF9SRVNVTFQsICZyYyk7Ci0rCi0rICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKHJjID09IExEQVBfU1VDQ0VTUykgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzbGFwaV9sb2dfZXJyKFNMQVBJX0xPR19OT1RJQ0UsICJ1cGdyYWRlX3JlbW92ZV9pbmRleF9z Y2FubGltaXQiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZW1vdmVk ICduc0luZGV4SURMaXN0U2NhbkxpbWl0JyBmcm9tIGluZGV4ICclcycgaW4gYmFja2VuZCAnJXMn XG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJfbmFtZSwgYmVf bmFtZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyYyAhPSBMREFQX05P X1NVQ0hfQVRUUklCVVRFKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsYXBpX2xv Z19lcnIoU0xBUElfTE9HX0VSUiwgInVwZ3JhZGVfcmVtb3ZlX2luZGV4X3NjYW5saW1pdCIsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZW1vdmUgJ25z SW5kZXhJRExpc3RTY2FuTGltaXQnIGZyb20gaW5kZXggJyVzJyBpbiBiYWNrZW5kICclcyc6IGVy cm9yICVkXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJfbmFt ZSwgYmVfbmFtZSwgcmMpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIH0KLSsKLSsgICAgICAg ICAgICAgICAgICAgICAgICBzbGFwaV9tb2RzX2RvbmUoJnNtb2RzKTsKLSsgICAgICAgICAgICAg ICAgICAgICAgICBzbGFwaV9wYmxvY2tfZGVzdHJveShtb2RfcGIpOwotKyAgICAgICAgICAgICAg ICAgICAgfQotKyAgICAgICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgICAgICAgIHNsYXBpX2No X2ZyZWVfc3RyaW5nKCZpZHhfZG4pOwotKyAgICAgICAgICAgICAgICBzbGFwaV9mcmVlX3NlYXJj aF9yZXN1bHRzX2ludGVybmFsKGlkeF9wYik7Ci0rICAgICAgICAgICAgICAgIHNsYXBpX3BibG9j a19kZXN0cm95KGlkeF9wYik7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgfQotKyAgICB9Ci0r Ci0rICAgIHNsYXBpX2ZyZWVfc2VhcmNoX3Jlc3VsdHNfaW50ZXJuYWwocGIpOwotKyAgICBzbGFw aV9wYmxvY2tfZGVzdHJveShwYik7Ci0rCi0rICAgIHJldHVybiB1cmVzdWx0OwotK30KLSsKLSAv KgotICAqIENoZWNrIGlmIHBhcmVudGlkL2FuY2VzdG9yaWQgaW5kZXhlcyBhcmUgbWlzc2luZyB0 aGUgaW50ZWdlck9yZGVyaW5nTWF0Y2gKLSAgKiBtYXRjaGluZyBydWxlLgotQEAgLTY0OSw2ICs3 NTAsMTAgQEAgdXBncmFkZV9zZXJ2ZXIodm9pZCkKLSAgICAgICAgIHJldHVybiBVUEdSQURFX0ZB SUxVUkU7Ci0gICAgIH0KLSAKLSsgICAgaWYgKHVwZ3JhZGVfcmVtb3ZlX2luZGV4X3NjYW5saW1p dCgpICE9IFVQR1JBREVfU1VDQ0VTUykgewotKyAgICAgICAgcmV0dXJuIFVQR1JBREVfRkFJTFVS RTsKLSsgICAgfQotKwotICAgICBpZiAodXBncmFkZV9jaGVja19pZF9pbmRleF9tYXRjaGluZ19y dWxlKCkgIT0gVVBHUkFERV9TVUNDRVNTKSB7Ci0gICAgICAgICByZXR1cm4gVVBHUkFERV9GQUlM VVJFOwotICAgICB9Ci0tLSAKLTIuNTIuMAotCgpkaWZmIC0tZ2l0IGEvMDAyMC1Jc3N1ZS03MjIz LUFkZC11cGdyYWRlLWZ1bmN0aW9uLXRvLXJlbW92ZS1hbmNlc3RvcmlkLnBhdGNoIGIvMDAyMC1J c3N1ZS03MjIzLUFkZC11cGdyYWRlLWZ1bmN0aW9uLXRvLXJlbW92ZS1hbmNlc3RvcmlkLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjk4OWQ3Li4wMDAwMDAwCi0tLSBhLzAw MjAtSXNzdWUtNzIyMy1BZGQtdXBncmFkZS1mdW5jdGlvbi10by1yZW1vdmUtYW5jZXN0b3JpZC5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxMyArMCwwIEBACi1Gcm9tIGI3Y2EyYWRjNDNkYjFi ZTkzNTEwMWQ2ZWI1ZGJmMDY1NjZlYTQzZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBWaWt0b3IgQXNoaXJvdiA8dmFzaGlyb3ZAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgNSBGZWIg MjAyNiAxMjoxNzowNiArMDEwMAotU3ViamVjdDogW1BBVENIXSBJc3N1ZSA3MjIzIC0gQWRkIHVw Z3JhZGUgZnVuY3Rpb24gdG8gcmVtb3ZlIGFuY2VzdG9yaWQgaW5kZXgKLSBjb25maWcgZW50cnkK LQotRGVzY3JpcHRpb246Ci1BZGQgYHVwZ3JhZGVfcmVtb3ZlX2FuY2VzdG9yaWRfaW5kZXhfY29u ZmlnKClgIGZ1bmN0aW9uIHRoYXQgcmVtb3ZlczoKLSogYW5jZXN0b3JpZCBmcm9tIGBjbj1kZWZh dWx0IGluZGV4ZXNgCi0qIGFuY2VzdG9yaWQgaW5kZXggY29uZmlnIGVudHJpZXMgZnJvbSBlYWNo IGJhY2tlbmQncyBgY249aW5kZXhgCi0KLUFsc28gcmVtb3ZlIGFuY2VzdG9yaWQgaW5kZXggY29u ZmlndXJhdGlvbiBmcm9tIHRlbXBsYXRlLWRzZS5sZGlmLgotCi1SZWxhdGVzOiBodHRwczovL2dp dGh1Yi5jb20vMzg5ZHMvMzg5LWRzLWJhc2UvaXNzdWVzLzcyMjMKLQotUmV2aWV3ZWQgYnk6IEBw cm9naWVyMzg5LCBAdGJvcmRheiwgQGRyb2lkZWNrIChUaGFua3MhKQotLS0tCi0gLi4uL2hlYWx0 aGNoZWNrL2hlYWx0aF9zeXN0ZW1faW5kZXhlc190ZXN0LnB5IHwgIDg1ICsrKysrKysrKysrCi0g bGRhcC9sZGlmL3RlbXBsYXRlLWRzZS5sZGlmLmluICAgICAgICAgICAgICAgIHwgICA4IC0tCi0g bGRhcC9zZXJ2ZXJzL3NsYXBkL3VwZ3JhZGUuYyAgICAgICAgICAgICAgICAgIHwgMTMzICsrKysr KysrKysrKysrKysrLQotIDMgZmlsZXMgY2hhbmdlZCwgMjE0IGluc2VydGlvbnMoKyksIDEyIGRl bGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZGlyc3J2dGVzdHMvdGVzdHMvc3VpdGVzL2hlYWx0 aGNoZWNrL2hlYWx0aF9zeXN0ZW1faW5kZXhlc190ZXN0LnB5IGIvZGlyc3J2dGVzdHMvdGVzdHMv c3VpdGVzL2hlYWx0aGNoZWNrL2hlYWx0aF9zeXN0ZW1faW5kZXhlc190ZXN0LnB5Ci1pbmRleCBh ZWE4OGUwZTIuLmViNzI3YjkwMiAxMDA2NDQKLS0tLSBhL2RpcnNydnRlc3RzL3Rlc3RzL3N1aXRl cy9oZWFsdGhjaGVjay9oZWFsdGhfc3lzdGVtX2luZGV4ZXNfdGVzdC5weQotKysrIGIvZGlyc3J2 dGVzdHMvdGVzdHMvc3VpdGVzL2hlYWx0aGNoZWNrL2hlYWx0aF9zeXN0ZW1faW5kZXhlc190ZXN0 LnB5Ci1AQCAtNTA0LDYgKzUwNCw5MSBAQCBkZWYgdGVzdF91cGdyYWRlX3JlbW92ZXNfcGFyZW50 aWRfc2NhbmxpbWl0KHRvcG9sb2d5X3N0KToKLSAKLSAgICAgbG9nLmluZm8oIlVwZ3JhZGUgc3Vj Y2Vzc2Z1bGx5IHJlbW92ZWQgbnNJbmRleElETGlzdFNjYW5MaW1pdCBmcm9tIHBhcmVudGlkIGlu ZGV4IikKLSAKLSsgICAgIyBWZXJpZnkgaWRlbXBvdGVuY3kgLSByZXN0YXJ0IGFnYWluIGFuZCBl bnN1cmUgbm8gZXJyb3JzCi0rICAgIGxvZy5pbmZvKCJSZXN0YXJ0IHNlcnZlciBhZ2FpbiB0byB2 ZXJpZnkgaWRlbXBvdGVuY3kgKG5vIGVycm9ycyBvbiBzZWNvbmQgcnVuKSIpCi0rICAgIHN0YW5k YWxvbmUucmVzdGFydCgpCi0rICAgICMgVmVyaWZ5IHRoZSBhdHRyaWJ1dGUgaXMgc3RpbGwgYWJz ZW50Ci0rICAgIHNjYW5saW1pdF9hZnRlcl9zZWNvbmQgPSBwYXJlbnRpZF9pbmRleC5nZXRfYXR0 cl92YWxzX3V0ZjgoIm5zSW5kZXhJRExpc3RTY2FuTGltaXQiKQotKyAgICBhc3NlcnQgbm90IHNj YW5saW1pdF9hZnRlcl9zZWNvbmQsIFwKLSsgICAgICAgIGYibnNJbmRleElETGlzdFNjYW5MaW1p dCBzaG91bGQgc3RpbGwgYmUgYWJzZW50IGFmdGVyIHNlY29uZCByZXN0YXJ0IGJ1dCBmb3VuZDog e3NjYW5saW1pdF9hZnRlcl9zZWNvbmR9IgotKyAgICBsb2cuaW5mbygiSWRlbXBvdGVuY3kgdmVy aWZpZWQgLSBubyBpc3N1ZXMgb24gc2Vjb25kIHJlc3RhcnQiKQotKwotKwotK2RlZiB0ZXN0X3Vw Z3JhZGVfcmVtb3Zlc19hbmNlc3RvcmlkX2luZGV4X2NvbmZpZyh0b3BvbG9neV9zdCk6Ci0rICAg ICIiIkNoZWNrIGlmIHVwZ3JhZGUgZnVuY3Rpb24gcmVtb3ZlcyBhbmNlc3RvcmlkIGluZGV4IGNv bmZpZyBlbnRyeQotKwotKyAgICA6aWQ6IDNmM2Q2ZTliLTc1YWMtNGYwZC1iMmNlLTcyMDRlNmVh Y2QwYQotKyAgICA6c2V0dXA6IFN0YW5kYWxvbmUgaW5zdGFuY2UKLSsgICAgOnN0ZXBzOgotKyAg ICAgICAgMS4gQ3JlYXRlIERTIGluc3RhbmNlCi0rICAgICAgICAyLiBTdG9wIHRoZSBzZXJ2ZXIK LSsgICAgICAgIDMuIFVzZSBEU0VsZGlmIHRvIGFkZCBhbiBhbmNlc3RvcmlkIGluZGV4IGNvbmZp ZyBlbnRyeQotKyAgICAgICAgNC4gU3RhcnQgdGhlIHNlcnZlciAodHJpZ2dlcnMgdXBncmFkZSkK LSsgICAgICAgIDUuIFZlcmlmeSBhbmNlc3RvcmlkIGluZGV4IGNvbmZpZyBlbnRyeSBpcyByZW1v dmVkCi0rICAgIDpleHBlY3RlZHJlc3VsdHM6Ci0rICAgICAgICAxLiBTdWNjZXNzCi0rICAgICAg ICAyLiBTdWNjZXNzCi0rICAgICAgICAzLiBTdWNjZXNzCi0rICAgICAgICA0LiBTdWNjZXNzCi0r ICAgICAgICA1LiBhbmNlc3RvcmlkIGluZGV4IGNvbmZpZyBlbnRyeSBpcyBubyBsb25nZXIgcHJl c2VudAotKyAgICAiIiIKLSsgICAgZnJvbSBsaWIzODkuZHNlbGRpZiBpbXBvcnQgRFNFbGRpZgot KwotKyAgICBzdGFuZGFsb25lID0gdG9wb2xvZ3lfc3Quc3RhbmRhbG9uZQotKyAgICBBTkNFU1RP UklEX0ROID0gImNuPWFuY2VzdG9yaWQsY249aW5kZXgsY249dXNlcnJvb3QsY249bGRibSBkYXRh YmFzZSxjbj1wbHVnaW5zLGNuPWNvbmZpZyIKLSsKLSsgICAgbG9nLmluZm8oIlN0b3AgdGhlIHNl cnZlciIpCi0rICAgIHN0YW5kYWxvbmUuc3RvcCgpCi0rCi0rICAgIGxvZy5pbmZvKCJBZGQgYW5j ZXN0b3JpZCBpbmRleCBjb25maWcgZW50cnkgdXNpbmcgRFNFbGRpZiIpCi0rICAgIGRzZV9sZGlm ID0gRFNFbGRpZihzdGFuZGFsb25lKQotKwotKyAgICAjIENyZWF0ZSBhIGZha2UgYW5jZXN0b3Jp ZCBpbmRleCBlbnRyeQotKyAgICBhbmNlc3RvcmlkX2VudHJ5ID0gWwotKyAgICAgICAgImRuOiB7 fVxuIi5mb3JtYXQoQU5DRVNUT1JJRF9ETiksCi0rICAgICAgICAib2JqZWN0Q2xhc3M6IHRvcFxu IiwKLSsgICAgICAgICJvYmplY3RDbGFzczogbnNJbmRleFxuIiwKLSsgICAgICAgICJjbjogYW5j ZXN0b3JpZFxuIiwKLSsgICAgICAgICJuc1N5c3RlbUluZGV4OiB0cnVlXG4iLAotKyAgICAgICAg Im5zSW5kZXhUeXBlOiBlcVxuIiwKLSsgICAgICAgICJuc01hdGNoaW5nUnVsZTogaW50ZWdlck9y ZGVyaW5nTWF0Y2hcbiIsCi0rICAgICAgICAiXG4iCi0rICAgIF0KLSsgICAgZHNlX2xkaWYuYWRk X2VudHJ5KGFuY2VzdG9yaWRfZW50cnkpCi0rCi0rICAgICMgVmVyaWZ5IGl0IHdhcyBhZGRlZCBi eSByZS1yZWFkaW5nIGRzZS5sZGlmCi0rICAgIGRzZV9sZGlmMiA9IERTRWxkaWYoc3RhbmRhbG9u ZSkKLSsgICAgY25fdmFsdWUgPSBkc2VfbGRpZjIuZ2V0KEFOQ0VTVE9SSURfRE4sICJjbiIpCi0r ICAgIGFzc2VydCBjbl92YWx1ZSBpcyBub3QgTm9uZSwgIkZhaWxlZCB0byBhZGQgYW5jZXN0b3Jp ZCBpbmRleCBjb25maWcgZW50cnkiCi0rICAgIGxvZy5pbmZvKGYiQWRkZWQgYW5jZXN0b3JpZCBp bmRleCBlbnRyeSB3aXRoIGNuOiB7Y25fdmFsdWV9IikKLSsKLSsgICAgbG9nLmluZm8oIlN0YXJ0 IHRoZSBzZXJ2ZXIgKHRyaWdnZXJzIHVwZ3JhZGUpIikKLSsgICAgc3RhbmRhbG9uZS5zdGFydCgp Ci0rCi0rICAgIGxvZy5pbmZvKCJWZXJpZnkgYW5jZXN0b3JpZCBpbmRleCBjb25maWcgZW50cnkg d2FzIHJlbW92ZWQgYnkgdXBncmFkZSIpCi0rICAgICMgQ2hlY2sgdmlhIExEQVAgLSB0aGUgdXBn cmFkZSBzaG91bGQgaGF2ZSByZW1vdmVkIHRoZSBlbnRyeQotKyAgICB0cnk6Ci0rICAgICAgICBh bmNlc3RvcmlkX2luZGV4ID0gSW5kZXgoc3RhbmRhbG9uZSwgQU5DRVNUT1JJRF9ETikKLSsgICAg ICAgICMgSWYgd2UgY2FuIGdldCB0aGUgZW50cnksIGl0IHdhc24ndCByZW1vdmVkIC0gdGhpcyBp cyBhIGZhaWx1cmUKLSsgICAgICAgIGNuX2FmdGVyID0gYW5jZXN0b3JpZF9pbmRleC5nZXRfYXR0 cl92YWxzX3V0ZjgoImNuIikKLSsgICAgICAgIGFzc2VydCBGYWxzZSwgZiJhbmNlc3RvcmlkIGlu ZGV4IGNvbmZpZyBlbnRyeSBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgYnV0IHN0aWxsIGV4aXN0 czoge2NuX2FmdGVyfSIKLSsgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotKyAgICAgICAgIyBF bnRyeSBzaG91bGQgbm90IGV4aXN0IC0gdGhpcyBpcyBleHBlY3RlZAotKyAgICAgICAgbG9nLmlu Zm8oZiJhbmNlc3RvcmlkIGluZGV4IGNvbmZpZyBlbnRyeSBjb3JyZWN0bHkgcmVtb3ZlZCAoZ290 IGV4Y2VwdGlvbjoge2V9KSIpCi0rCi0rICAgIGxvZy5pbmZvKCJVcGdyYWRlIHN1Y2Nlc3NmdWxs eSByZW1vdmVkIGFuY2VzdG9yaWQgaW5kZXggY29uZmlnIGVudHJ5IikKLSsKLSsgICAgIyBWZXJp ZnkgaWRlbXBvdGVuY3kgLSByZXN0YXJ0IGFnYWluIGFuZCBlbnN1cmUgbm8gZXJyb3JzCi0rICAg IGxvZy5pbmZvKCJSZXN0YXJ0IHNlcnZlciBhZ2FpbiB0byB2ZXJpZnkgaWRlbXBvdGVuY3kgKG5v IGVycm9ycyBvbiBzZWNvbmQgcnVuKSIpCi0rICAgIHN0YW5kYWxvbmUucmVzdGFydCgpCi0rICAg ICMgVmVyaWZ5IHRoZSBlbnRyeSBpcyBzdGlsbCBhYnNlbnQKLSsgICAgdHJ5OgotKyAgICAgICAg YW5jZXN0b3JpZF9pbmRleCA9IEluZGV4KHN0YW5kYWxvbmUsIEFOQ0VTVE9SSURfRE4pCi0rICAg ICAgICBjbl9hZnRlcl9zZWNvbmQgPSBhbmNlc3RvcmlkX2luZGV4LmdldF9hdHRyX3ZhbHNfdXRm OCgiY24iKQotKyAgICAgICAgYXNzZXJ0IEZhbHNlLCBmImFuY2VzdG9yaWQgaW5kZXggY29uZmln IGVudHJ5IHNob3VsZCBzdGlsbCBiZSBhYnNlbnQgYWZ0ZXIgc2Vjb25kIHJlc3RhcnQgYnV0IGZv dW5kOiB7Y25fYWZ0ZXJfc2Vjb25kfSIKLSsgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotKyAg ICAgICAgbG9nLmluZm8oZiJJZGVtcG90ZW5jeSB2ZXJpZmllZCAtIGFuY2VzdG9yaWQgc3RpbGwg YWJzZW50IGFmdGVyIHNlY29uZCByZXN0YXJ0IChnb3QgZXhjZXB0aW9uOiB7ZX0pIikKLSsKLSAK LSBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgICAjIFJ1biBpc29sYXRlZAotZGlmZiAt LWdpdCBhL2xkYXAvbGRpZi90ZW1wbGF0ZS1kc2UubGRpZi5pbiBiL2xkYXAvbGRpZi90ZW1wbGF0 ZS1kc2UubGRpZi5pbgotaW5kZXggYmI4YzcxY2Q5Li5iNmFiNmY2YzYgMTAwNjQ0Ci0tLS0gYS9s ZGFwL2xkaWYvdGVtcGxhdGUtZHNlLmxkaWYuaW4KLSsrKyBiL2xkYXAvbGRpZi90ZW1wbGF0ZS1k c2UubGRpZi5pbgotQEAgLTk5OCwxNCArOTk4LDYgQEAgY246IGFjaQotIG5zc3lzdGVtaW5kZXg6 IHRydWUKLSBuc2luZGV4dHlwZTogcHJlcwotIAotLWRuOiBjbj1hbmNlc3RvcmlkLGNuPWRlZmF1 bHQgaW5kZXhlcywgY249Y29uZmlnLGNuPWxkYm0gZGF0YWJhc2UsY249cGx1Z2lucyxjbj1jb25m aWcKLS1vYmplY3RjbGFzczogdG9wCi0tb2JqZWN0Y2xhc3M6IG5zSW5kZXgKLS1jbjogYW5jZXN0 b3JpZAotLW5zc3lzdGVtaW5kZXg6IHRydWUKLS1uc2luZGV4dHlwZTogZXEKLS1uc21hdGNoaW5n cnVsZTogaW50ZWdlck9yZGVyaW5nTWF0Y2gKLS0KLSBkbjogY249Y24sY249ZGVmYXVsdCBpbmRl eGVzLCBjbj1jb25maWcsY249bGRibSBkYXRhYmFzZSxjbj1wbHVnaW5zLGNuPWNvbmZpZwotIG9i amVjdGNsYXNzOiB0b3AKLSBvYmplY3RjbGFzczogbnNJbmRleAotZGlmZiAtLWdpdCBhL2xkYXAv c2VydmVycy9zbGFwZC91cGdyYWRlLmMgYi9sZGFwL3NlcnZlcnMvc2xhcGQvdXBncmFkZS5jCi1p bmRleCBkY2QxNjk0MGIuLjZiMWIwMTJkYSAxMDA2NDQKLS0tLSBhL2xkYXAvc2VydmVycy9zbGFw ZC91cGdyYWRlLmMKLSsrKyBiL2xkYXAvc2VydmVycy9zbGFwZC91cGdyYWRlLmMKLUBAIC00MzEs NiArNDMxLDEyNiBAQCB1cGdyYWRlX3JlbW92ZV9pbmRleF9zY2FubGltaXQodm9pZCkKLSAgICAg cmV0dXJuIHVyZXN1bHQ7Ci0gfQotIAotKy8qCi0rICogUmVtb3ZlIGFuY2VzdG9yaWQgaW5kZXgg Y29uZmlndXJhdGlvbiBlbnRyeSBpZiBwcmVzZW50LgotKyAqCi0rICogVGhlIGFuY2VzdG9yaWQg aW5kZXggaXMgc3BlY2lhbCAtIGl0IGhhcyBubyBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSB0eXBl Ci0rICogYW5kIHNob3VsZCBub3QgaGF2ZSBhIERTRSBjb25maWcgZW50cnkuIElmIGFuIGVudHJ5 IGV4aXN0cywgcmVtb3ZlIGl0LgotKyAqCi0rICogVGhpcyBmdW5jdGlvbiByZW1vdmVzOgotKyAq IDEuIFRoZSBhbmNlc3RvcmlkIGVudHJ5IGZyb20gY249ZGVmYXVsdCBpbmRleGVzICh0byBwcmV2 ZW50IHJlLWNyZWF0aW9uIG9uIHN0YXJ0dXApCi0rICogMi4gVGhlIGFuY2VzdG9yaWQgZW50cnkg ZnJvbSBlYWNoIGJhY2tlbmQncyBjbj1pbmRleCAoaWYgaXQgZXhpc3RzKQotKyAqLwotK3N0YXRp YyB1cGdyYWRlX3N0YXR1cwotK3VwZ3JhZGVfcmVtb3ZlX2FuY2VzdG9yaWRfaW5kZXhfY29uZmln KHZvaWQpCi0rewotKyAgICBzdHJ1Y3Qgc2xhcGlfcGJsb2NrICpwYiA9IHNsYXBpX3BibG9ja19u ZXcoKTsKLSsgICAgU2xhcGlfRW50cnkgKipiYWNrZW5kcyA9IE5VTEw7Ci0rICAgIGNvbnN0IGNo YXIgKmJlX2Jhc2VfZG4gPSAiY249bGRibSBkYXRhYmFzZSxjbj1wbHVnaW5zLGNuPWNvbmZpZyI7 Ci0rICAgIGNvbnN0IGNoYXIgKmJlX2ZpbHRlciA9ICIob2JqZWN0Y2xhc3M9bnNCYWNrZW5kSW5z dGFuY2UpIjsKLSsgICAgdXBncmFkZV9zdGF0dXMgdXJlc3VsdCA9IFVQR1JBREVfU1VDQ0VTUzsK LSsgICAgaW50IHJjOwotKwotKyAgICAvKgotKyAgICAgKiBGaXJzdCwgcmVtb3ZlIGFuY2VzdG9y aWQgZnJvbSBjbj1kZWZhdWx0IGluZGV4ZXMgdG8gcHJldmVudAotKyAgICAgKiBsZGJtX2luc3Rh bmNlX2NyZWF0ZV9kZWZhdWx0X3VzZXJfaW5kZXhlcygpIGZyb20gcmUtY3JlYXRpbmcgaXQuCi0r ICAgICAqLwotKyAgICB7Ci0rICAgICAgICBTbGFwaV9QQmxvY2sgKmRlZl9wYiA9IHNsYXBpX3Bi bG9ja19uZXcoKTsKLSsgICAgICAgIGNoYXIgKmRlZl9pZHhfZG4gPSBzbGFwaV9jcmVhdGVfZG5f c3RyaW5nKAotKyAgICAgICAgICAgICAgICAiY249YW5jZXN0b3JpZCxjbj1kZWZhdWx0IGluZGV4 ZXMsY249Y29uZmlnLCVzIiwgYmVfYmFzZV9kbik7Ci0rCi0rICAgICAgICBpZiAoZGVmX2lkeF9k bikgewotKyAgICAgICAgICAgIHNsYXBpX2RlbGV0ZV9pbnRlcm5hbF9zZXRfcGIoCi0rICAgICAg ICAgICAgICAgICAgICBkZWZfcGIsIGRlZl9pZHhfZG4sIE5VTEwsIE5VTEwsCi0rICAgICAgICAg ICAgICAgICAgICBwbHVnaW5fZ2V0X2RlZmF1bHRfY29tcG9uZW50X2lkKCksIDApOwotKyAgICAg ICAgICAgIHNsYXBpX2RlbGV0ZV9pbnRlcm5hbF9wYihkZWZfcGIpOwotKyAgICAgICAgICAgIHNs YXBpX3BibG9ja19nZXQoZGVmX3BiLCBTTEFQSV9QTFVHSU5fSU5UT1BfUkVTVUxULCAmcmMpOwot KwotKyAgICAgICAgICAgIGlmIChyYyA9PSBMREFQX1NVQ0NFU1MpIHsKLSsgICAgICAgICAgICAg ICAgc2xhcGlfbG9nX2VycihTTEFQSV9MT0dfTk9USUNFLCAidXBncmFkZV9yZW1vdmVfYW5jZXN0 b3JpZF9pbmRleF9jb25maWciLAotKyAgICAgICAgICAgICAgICAgICAgICAgICJSZW1vdmVkICdh bmNlc3RvcmlkJyBmcm9tIGRlZmF1bHQgaW5kZXhlcy5cbiIpOwotKyAgICAgICAgICAgIH0gZWxz ZSBpZiAocmMgIT0gTERBUF9OT19TVUNIX09CSkVDVCkgewotKyAgICAgICAgICAgICAgICBzbGFw aV9sb2dfZXJyKFNMQVBJX0xPR19FUlIsICJ1cGdyYWRlX3JlbW92ZV9hbmNlc3RvcmlkX2luZGV4 X2NvbmZpZyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZW1vdmUgJ2Fu Y2VzdG9yaWQnIGZyb20gZGVmYXVsdCBpbmRleGVzOiBlcnJvciAlZFxuIiwgcmMpOwotKyAgICAg ICAgICAgIH0KLSsKLSsgICAgICAgICAgICBzbGFwaV9jaF9mcmVlX3N0cmluZygmZGVmX2lkeF9k bik7Ci0rICAgICAgICB9Ci0rICAgICAgICBzbGFwaV9wYmxvY2tfZGVzdHJveShkZWZfcGIpOwot KyAgICB9Ci0rCi0rICAgIC8qIFNlYXJjaCBmb3IgYWxsIGJhY2tlbmQgaW5zdGFuY2VzICovCi0r ICAgIHNsYXBpX3NlYXJjaF9pbnRlcm5hbF9zZXRfcGIoCi0rICAgICAgICAgICAgcGIsIGJlX2Jh c2VfZG4sCi0rICAgICAgICAgICAgTERBUF9TQ09QRV9PTkVMRVZFTCwKLSsgICAgICAgICAgICBi ZV9maWx0ZXIsIE5VTEwsIDAsIE5VTEwsIE5VTEwsCi0rICAgICAgICAgICAgcGx1Z2luX2dldF9k ZWZhdWx0X2NvbXBvbmVudF9pZCgpLCAwKTsKLSsgICAgc2xhcGlfc2VhcmNoX2ludGVybmFsX3Bi KHBiKTsKLSsgICAgc2xhcGlfcGJsb2NrX2dldChwYiwgU0xBUElfUExVR0lOX0lOVE9QX1NFQVJD SF9FTlRSSUVTLCAmYmFja2VuZHMpOwotKwotKyAgICBpZiAoYmFja2VuZHMpIHsKLSsgICAgICAg IGZvciAoc2l6ZV90IGJlX2lkeCA9IDA7IGJhY2tlbmRzW2JlX2lkeF0gIT0gTlVMTDsgYmVfaWR4 KyspIHsKLSsgICAgICAgICAgICBjb25zdCBjaGFyICpiZV9kbiA9IHNsYXBpX2VudHJ5X2dldF9k bl9jb25zdChiYWNrZW5kc1tiZV9pZHhdKTsKLSsgICAgICAgICAgICBjb25zdCBjaGFyICpiZV9u YW1lID0gc2xhcGlfZW50cnlfYXR0cl9nZXRfcmVmKGJhY2tlbmRzW2JlX2lkeF0sICJjbiIpOwot KyAgICAgICAgICAgIGlmICghYmVfZG4gfHwgIWJlX25hbWUpIHsKLSsgICAgICAgICAgICAgICAg Y29udGludWU7Ci0rICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgIHN0cnVjdCBzbGFwaV9w YmxvY2sgKmlkeF9wYiA9IHNsYXBpX3BibG9ja19uZXcoKTsKLSsgICAgICAgICAgICBTbGFwaV9F bnRyeSAqKmlkeF9lbnRyaWVzID0gTlVMTDsKLSsgICAgICAgICAgICBjaGFyICppZHhfZG4gPSBz bGFwaV9jcmVhdGVfZG5fc3RyaW5nKCJjbj1hbmNlc3RvcmlkLGNuPWluZGV4LCVzIiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZV9kbik7Ci0r ICAgICAgICAgICAgY2hhciAqaWR4X2ZpbHRlciA9ICIob2JqZWN0Y2xhc3M9bnNJbmRleCkiOwot KwotKyAgICAgICAgICAgIGlmICghaWR4X2RuKSB7Ci0rICAgICAgICAgICAgICAgIHNsYXBpX3Bi bG9ja19kZXN0cm95KGlkeF9wYik7Ci0rICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAg ICAgICAgIH0KLSsKLSsgICAgICAgICAgICBzbGFwaV9zZWFyY2hfaW50ZXJuYWxfc2V0X3BiKAot KyAgICAgICAgICAgICAgICAgICAgaWR4X3BiLCBpZHhfZG4sCi0rICAgICAgICAgICAgICAgICAg ICBMREFQX1NDT1BFX0JBU0UsCi0rICAgICAgICAgICAgICAgICAgICBpZHhfZmlsdGVyLCBOVUxM LCAwLCBOVUxMLCBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgcGx1Z2luX2dldF9kZWZhdWx0 X2NvbXBvbmVudF9pZCgpLCAwKTsKLSsgICAgICAgICAgICBzbGFwaV9zZWFyY2hfaW50ZXJuYWxf cGIoaWR4X3BiKTsKLSsgICAgICAgICAgICBzbGFwaV9wYmxvY2tfZ2V0KGlkeF9wYiwgU0xBUElf UExVR0lOX0lOVE9QX1NFQVJDSF9FTlRSSUVTLCAmaWR4X2VudHJpZXMpOwotKwotKyAgICAgICAg ICAgIGlmIChpZHhfZW50cmllcyAmJiBpZHhfZW50cmllc1swXSkgewotKyAgICAgICAgICAgICAg ICAvKiBhbmNlc3RvcmlkIGluZGV4IGVudHJ5IGV4aXN0cyAtIGRlbGV0ZSBpdCAqLwotKyAgICAg ICAgICAgICAgICBTbGFwaV9QQmxvY2sgKmRlbF9wYiA9IHNsYXBpX3BibG9ja19uZXcoKTsKLSsK LSsgICAgICAgICAgICAgICAgc2xhcGlfZGVsZXRlX2ludGVybmFsX3NldF9wYigKLSsgICAgICAg ICAgICAgICAgICAgICAgICBkZWxfcGIsIGlkeF9kbiwgTlVMTCwgTlVMTCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICBwbHVnaW5fZ2V0X2RlZmF1bHRfY29tcG9uZW50X2lkKCksIDApOwotKyAg ICAgICAgICAgICAgICBzbGFwaV9kZWxldGVfaW50ZXJuYWxfcGIoZGVsX3BiKTsKLSsgICAgICAg ICAgICAgICAgc2xhcGlfcGJsb2NrX2dldChkZWxfcGIsIFNMQVBJX1BMVUdJTl9JTlRPUF9SRVNV TFQsICZyYyk7Ci0rCi0rICAgICAgICAgICAgICAgIGlmIChyYyA9PSBMREFQX1NVQ0NFU1MpIHsK LSsgICAgICAgICAgICAgICAgICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX05PVElDRSwgInVw Z3JhZGVfcmVtb3ZlX2FuY2VzdG9yaWRfaW5kZXhfY29uZmlnIiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIlJlbW92ZWQgJ2FuY2VzdG9yaWQnIGluZGV4IGNvbmZpZyBlbnRyeSBpbiBi YWNrZW5kICclcycuXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZV9uYW1lKTsK LSsgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyYyAhPSBMREFQX05PX1NVQ0hfT0JKRUNUKSB7 Ci0rICAgICAgICAgICAgICAgICAgICBzbGFwaV9sb2dfZXJyKFNMQVBJX0xPR19FUlIsICJ1cGdy YWRlX3JlbW92ZV9hbmNlc3RvcmlkX2luZGV4X2NvbmZpZyIsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJGYWlsZWQgdG8gcmVtb3ZlICdhbmNlc3RvcmlkJyBpbmRleCBjb25maWcgZW50 cnkgaW4gYmFja2VuZCAnJXMnOiBlcnJvciAlZFxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYmVfbmFtZSwgcmMpOwotKyAgICAgICAgICAgICAgICB9Ci0rCi0rICAgICAgICAgICAg ICAgIHNsYXBpX3BibG9ja19kZXN0cm95KGRlbF9wYik7Ci0rICAgICAgICAgICAgfQotKwotKyAg ICAgICAgICAgIHNsYXBpX2NoX2ZyZWVfc3RyaW5nKCZpZHhfZG4pOwotKyAgICAgICAgICAgIHNs YXBpX2ZyZWVfc2VhcmNoX3Jlc3VsdHNfaW50ZXJuYWwoaWR4X3BiKTsKLSsgICAgICAgICAgICBz bGFwaV9wYmxvY2tfZGVzdHJveShpZHhfcGIpOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAg IHNsYXBpX2ZyZWVfc2VhcmNoX3Jlc3VsdHNfaW50ZXJuYWwocGIpOwotKyAgICBzbGFwaV9wYmxv Y2tfZGVzdHJveShwYik7Ci0rCi0rICAgIHJldHVybiB1cmVzdWx0OwotK30KLSsKLSAvKgotICAq IENoZWNrIGlmIHBhcmVudGlkL2FuY2VzdG9yaWQgaW5kZXhlcyBhcmUgbWlzc2luZyB0aGUgaW50 ZWdlck9yZGVyaW5nTWF0Y2gKLSAgKiBtYXRjaGluZyBydWxlLgotQEAgLTQ0NSw3ICs1NjUsNyBA QCB1cGdyYWRlX2NoZWNrX2lkX2luZGV4X21hdGNoaW5nX3J1bGUodm9pZCkKLSAgICAgU2xhcGlf RW50cnkgKipiYWNrZW5kcyA9IE5VTEw7Ci0gICAgIGNvbnN0IGNoYXIgKmJlX2Jhc2VfZG4gPSAi Y249bGRibSBkYXRhYmFzZSxjbj1wbHVnaW5zLGNuPWNvbmZpZyI7Ci0gICAgIGNvbnN0IGNoYXIg KmJlX2ZpbHRlciA9ICIob2JqZWN0Y2xhc3M9bnNCYWNrZW5kSW5zdGFuY2UpIjsKLS0gICAgY29u c3QgY2hhciAqYXR0cnNfdG9fY2hlY2tbXSA9IHsicGFyZW50aWQiLCAiYW5jZXN0b3JpZCIsIE5V TEx9OwotKyAgICBjb25zdCBjaGFyICphdHRyc190b19jaGVja1tdID0geyJwYXJlbnRpZCIsIE5V TEx9OwotICAgICB1cGdyYWRlX3N0YXR1cyB1cmVzdWx0ID0gVVBHUkFERV9TVUNDRVNTOwotIAot ICAgICAvKiBTZWFyY2ggZm9yIGFsbCBiYWNrZW5kIGluc3RhbmNlcyAqLwotQEAgLTQ1OSw4ICs1 NzksOSBAQCB1cGdyYWRlX2NoZWNrX2lkX2luZGV4X21hdGNoaW5nX3J1bGUodm9pZCkKLSAKLSAg ICAgaWYgKGJhY2tlbmRzKSB7Ci0gICAgICAgICBmb3IgKHNpemVfdCBiZV9pZHggPSAwOyBiYWNr ZW5kc1tiZV9pZHhdICE9IE5VTEw7IGJlX2lkeCsrKSB7Ci0rICAgICAgICAgICAgY29uc3QgY2hh ciAqYmVfZG4gPSBzbGFwaV9lbnRyeV9nZXRfZG5fY29uc3QoYmFja2VuZHNbYmVfaWR4XSk7Ci0g ICAgICAgICAgICAgY29uc3QgY2hhciAqYmVfbmFtZSA9IHNsYXBpX2VudHJ5X2F0dHJfZ2V0X3Jl ZihiYWNrZW5kc1tiZV9pZHhdLCAiY24iKTsKLS0gICAgICAgICAgICBpZiAoIWJlX25hbWUpIHsK LSsgICAgICAgICAgICBpZiAoIWJlX2RuIHx8ICFiZV9uYW1lKSB7Ci0gICAgICAgICAgICAgICAg IGNvbnRpbnVlOwotICAgICAgICAgICAgIH0KLSAKLUBAIC00NjksOCArNTkwLDggQEAgdXBncmFk ZV9jaGVja19pZF9pbmRleF9tYXRjaGluZ19ydWxlKHZvaWQpCi0gICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKmF0dHJfbmFtZSA9IGF0dHJzX3RvX2NoZWNrW2F0dHJfaWR4XTsKLSAgICAgICAg ICAgICAgICAgc3RydWN0IHNsYXBpX3BibG9jayAqaWR4X3BiID0gc2xhcGlfcGJsb2NrX25ldygp OwotICAgICAgICAgICAgICAgICBTbGFwaV9FbnRyeSAqKmlkeF9lbnRyaWVzID0gTlVMTDsKLS0g ICAgICAgICAgICAgICAgY2hhciAqaWR4X2RuID0gc2xhcGlfY3JlYXRlX2RuX3N0cmluZygiY249 JXMsY249aW5kZXgsY249JXMsJXMiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhdHRyX25hbWUsIGJlX25hbWUsIGJlX2Jhc2VfZG4pOwot KyAgICAgICAgICAgICAgICBjaGFyICppZHhfZG4gPSBzbGFwaV9jcmVhdGVfZG5fc3RyaW5nKCJj bj0lcyxjbj1pbmRleCwlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGF0dHJfbmFtZSwgYmVfZG4pOwotICAgICAgICAgICAgICAgICBj aGFyICppZHhfZmlsdGVyID0gIihvYmplY3RjbGFzcz1uc0luZGV4KSI7Ci0gICAgICAgICAgICAg ICAgIFBSQm9vbCBoYXNfbWF0Y2hpbmdfcnVsZSA9IFBSX0ZBTFNFOwotIAotQEAgLTc1NCw2ICs4 NzUsMTAgQEAgdXBncmFkZV9zZXJ2ZXIodm9pZCkKLSAgICAgICAgIHJldHVybiBVUEdSQURFX0ZB SUxVUkU7Ci0gICAgIH0KLSAKLSsgICAgaWYgKHVwZ3JhZGVfcmVtb3ZlX2FuY2VzdG9yaWRfaW5k ZXhfY29uZmlnKCkgIT0gVVBHUkFERV9TVUNDRVNTKSB7Ci0rICAgICAgICByZXR1cm4gVVBHUkFE RV9GQUlMVVJFOwotKyAgICB9Ci0rCi0gICAgIGlmICh1cGdyYWRlX2NoZWNrX2lkX2luZGV4X21h dGNoaW5nX3J1bGUoKSAhPSBVUEdSQURFX1NVQ0NFU1MpIHsKLSAgICAgICAgIHJldHVybiBVUEdS QURFX0ZBSUxVUkU7Ci0gICAgIH0KLS0tIAotMi41Mi4wCi0KCmRpZmYgLS1naXQgYS8wMDIxLUlz c3VlLTcyMjMtRGV0ZWN0LWFuZC1sb2ctaW5kZXgtb3JkZXJpbmctbWlzbWF0Y2gtZHUucGF0Y2gg Yi8wMDIxLUlzc3VlLTcyMjMtRGV0ZWN0LWFuZC1sb2ctaW5kZXgtb3JkZXJpbmctbWlzbWF0Y2gt ZHUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmZjIxYWIuLjAwMDAwMDAK LS0tIGEvMDAyMS1Jc3N1ZS03MjIzLURldGVjdC1hbmQtbG9nLWluZGV4LW9yZGVyaW5nLW1pc21h dGNoLWR1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAwICswLDAgQEAKLUZyb20gNjFkNzRl YzQyNmZhOTQwNGJiNmVkNDljYTRmZTY0NGY2OWVmMzJmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IFZpa3RvciBBc2hpcm92IDx2YXNoaXJvdkByZWRoYXQuY29tPgotRGF0ZTogVGh1 LCA1IEZlYiAyMDI2IDEyOjE3OjA2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIElzc3VlIDcyMjMg LSBEZXRlY3QgYW5kIGxvZyBpbmRleCBvcmRlcmluZyBtaXNtYXRjaCBkdXJpbmcKLSBiYWNrZW5k IHN0YXJ0dXAKLQotRGVzY3JpcHRpb246Ci1BZGQgYGxkYm1faW5zdGFuY2VfY2hlY2tfaW5kZXhf Y29uZmlnKClgIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIG9uLWRpc2sKLWluZGV4IGRhdGEgYW5kIGxv Z3MgYSBtZXNzYWdlIGluIGNhc2Ugb2YgYSBtaXNtYXRjaCB3aXRoIERTRSBjb25maWcgZW50cnku Ci0KLVJlbGF0ZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS8zODlkcy8zODktZHMtYmFzZS9pc3N1ZXMv NzIyMwotCi1SZXZpZXdlZCBieTogQHByb2dpZXIzODksIEB0Ym9yZGF6LCBAZHJvaWRlY2sgKFRo YW5rcyEpCi0tLS0KLSBsZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2luc3RhbmNlLmMgfCAy NjIgKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDI2MiBpbnNlcnRp b25zKCspCi0KLWRpZmYgLS1naXQgYS9sZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2luc3Rh bmNlLmMgYi9sZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2luc3RhbmNlLmMKLWluZGV4IDJi NzFjZDRmNy4uMTdiZmMwOWEwIDEwMDY0NAotLS0tIGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2st bGRibS9pbnN0YW5jZS5jCi0rKysgYi9sZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2luc3Rh bmNlLmMKLUBAIC0yMzksNiArMjM5LDI2NiBAQCBsZGJtX2luc3RhbmNlX2NyZWF0ZV9kZWZhdWx0 X2luZGV4ZXMoYmFja2VuZCAqYmUpCi0gfQotIAotIAotKy8qCi0rICogQ2hlY2sgaWYgYW4gaW5k ZXggaGFzIGludGVnZXJPcmRlcmluZ01hdGNoIGNvbmZpZ3VyZWQgaW4gRFNFLgotKyAqCi0rICog VGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBhbiBpbnRlcm5hbCBMREFQIHNlYXJjaCB0byBjaGVjayBp ZiB0aGUgaW5kZXgKLSsgKiBjb25maWd1cmF0aW9uIGVudHJ5IGhhcyBuc01hdGNoaW5nUnVsZTog aW50ZWdlck9yZGVyaW5nTWF0Y2guCi0rICoKLSsgKiBQYXJhbWV0ZXJzOgotKyAqICAgaW5zdF9u YW1lIC0gYmFja2VuZCBpbnN0YW5jZSBuYW1lIChlLmcuLCAidXNlclJvb3QiKQotKyAqICAgaW5k ZXhfbmFtZSAtIG5hbWUgb2YgdGhlIGluZGV4IHRvIGNoZWNrIChlLmcuLCAicGFyZW50aWQiLCAi YW5jZXN0b3JpZCIpCi0rICoKLSsgKiBSZXR1cm5zOgotKyAqICAgUFJfVFJVRSBpZiBpbnRlZ2Vy T3JkZXJpbmdNYXRjaCBpcyBjb25maWd1cmVkCi0rICogICBQUl9GQUxTRSBpZiBub3QgY29uZmln dXJlZCBvciBpbmRleCBlbnRyeSBkb2Vzbid0IGV4aXN0Ci0rICovCi0rc3RhdGljIFBSQm9vbAot K2xkYm1faW5zdGFuY2VfaW5kZXhfaGFzX2ludF9vcmRlcl9pbl9kc2UoY29uc3QgY2hhciAqaW5z dF9uYW1lLCBjb25zdCBjaGFyICppbmRleF9uYW1lKQotK3sKLSsgICAgU2xhcGlfUEJsb2NrICpw YiA9IE5VTEw7Ci0rICAgIFNsYXBpX0VudHJ5ICoqZW50cmllcyA9IE5VTEw7Ci0rICAgIGNoYXIg KmlkeF9kbiA9IE5VTEw7Ci0rICAgIFBSQm9vbCBoYXNfaW50X29yZGVyID0gUFJfRkFMU0U7Ci0r Ci0rICAgIGlkeF9kbiA9IHNsYXBpX2NyZWF0ZV9kbl9zdHJpbmcoImNuPSVzLGNuPWluZGV4LGNu PSVzLGNuPWxkYm0gZGF0YWJhc2UsY249cGx1Z2lucyxjbj1jb25maWciLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleF9uYW1lLCBpbnN0X25hbWUpOwotKyAgICBp ZiAoaWR4X2RuID09IE5VTEwpIHsKLSsgICAgICAgIHJldHVybiBQUl9GQUxTRTsKLSsgICAgfQot KwotKyAgICBwYiA9IHNsYXBpX3BibG9ja19uZXcoKTsKLSsgICAgc2xhcGlfc2VhcmNoX2ludGVy bmFsX3NldF9wYihwYiwgaWR4X2RuLCBMREFQX1NDT1BFX0JBU0UsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIob2JqZWN0Y2xhc3M9bnNJbmRleCkiLCBOVUxMLCAwLCBOVUxM LCBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5fZ2V0X2Rl ZmF1bHRfY29tcG9uZW50X2lkKCksIDApOwotKyAgICBzbGFwaV9zZWFyY2hfaW50ZXJuYWxfcGIo cGIpOwotKyAgICBzbGFwaV9wYmxvY2tfZ2V0KHBiLCBTTEFQSV9QTFVHSU5fSU5UT1BfU0VBUkNI X0VOVFJJRVMsICZlbnRyaWVzKTsKLSsKLSsgICAgaWYgKGVudHJpZXMgJiYgZW50cmllc1swXSkg ewotKyAgICAgICAgU2xhcGlfQXR0ciAqbXJfYXR0ciA9IE5VTEw7Ci0rICAgICAgICBpZiAoc2xh cGlfZW50cnlfYXR0cl9maW5kKGVudHJpZXNbMF0sICJuc01hdGNoaW5nUnVsZSIsICZtcl9hdHRy KSA9PSAwKSB7Ci0rICAgICAgICAgICAgU2xhcGlfVmFsdWUgKnN2YWwgPSBOVUxMOwotKyAgICAg ICAgICAgIGludCBpZHg7Ci0rICAgICAgICAgICAgZm9yIChpZHggPSBzbGFwaV9hdHRyX2ZpcnN0 X3ZhbHVlKG1yX2F0dHIsICZzdmFsKTsKLSsgICAgICAgICAgICAgICAgIGlkeCAhPSAtMTsKLSsg ICAgICAgICAgICAgICAgIGlkeCA9IHNsYXBpX2F0dHJfbmV4dF92YWx1ZShtcl9hdHRyLCBpZHgs ICZzdmFsKSkgewotKyAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYmVydmFsICpidmFsID0g c2xhcGlfdmFsdWVfZ2V0X2JlcnZhbChzdmFsKTsKLSsgICAgICAgICAgICAgICAgaWYgKGJ2YWwg JiYgYnZhbC0+YnZfdmFsICYmCi0rICAgICAgICAgICAgICAgICAgICBzdHJjYXNlY21wKGJ2YWwt PmJ2X3ZhbCwgImludGVnZXJPcmRlcmluZ01hdGNoIikgPT0gMCkgewotKyAgICAgICAgICAgICAg ICAgICAgaGFzX2ludF9vcmRlciA9IFBSX1RSVUU7Ci0rICAgICAgICAgICAgICAgICAgICBicmVh azsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAg fQotKwotKyAgICBzbGFwaV9jaF9mcmVlX3N0cmluZygmaWR4X2RuKTsKLSsgICAgc2xhcGlfZnJl ZV9zZWFyY2hfcmVzdWx0c19pbnRlcm5hbChwYik7Ci0rICAgIHNsYXBpX3BibG9ja19kZXN0cm95 KHBiKTsKLSsKLSsgICAgcmV0dXJuIGhhc19pbnRfb3JkZXI7Ci0rfQotKwotKy8qCi0rICogQ2hl Y2sgYSBzeXN0ZW0gaW5kZXggZm9yIG9yZGVyaW5nIG1pc21hdGNoIGJldHdlZW4gY29uZmlnIGFu ZCBvbi1kaXNrIGRhdGEuCi0rICoKLSsgKiBUaGlzIGZ1bmN0aW9uIGNvbXBhcmVzIHdoYXQncyBj b25maWd1cmVkIGluIERTRSAobnNNYXRjaGluZ1J1bGUpIHdpdGgKLSsgKiB3aGF0J3MgYWN0dWFs bHkgb24gZGlzay4gQSBtaXNtYXRjaCBjYW4gb2NjdXIgaW4gdHdvIHNjZW5hcmlvczoKLSsgKiAx LiBPcmRlcmluZyBydWxlIGlzIGNvbmZpZ3VyZWQgYnV0IGRpc2sgaGFzIGxleGljb2dyYXBoaWMg b3JkZXIKLSsgKiAgICAocnVsZSB3YXMgYWRkZWQgYWZ0ZXIgaW5kZXggd2FzIGNyZWF0ZWQpCi0r ICogMi4gTm8gb3JkZXJpbmcgcnVsZSBjb25maWd1cmVkIGJ1dCBkaXNrIGhhcyBpbnRlZ2VyIG9y ZGVyCi0rICogICAgKHJ1bGUgd2FzIHJlbW92ZWQgYWZ0ZXIgaW5kZXggd2FzIGNyZWF0ZWQgd2l0 aCBpdCkKLSsgKgotKyAqIFRoaXMgZnVuY3Rpb24gcmVhZHMgdGhlIGZpcnN0IGtleXMgZnJvbSB0 aGUgc3BlY2lmaWVkIGluZGV4IGFuZCBjaGVja3MKLSsgKiBpZiB0aGV5IGFyZSBzdG9yZWQgaW4g bGV4aWNvZ3JhcGhpYyBvcmRlciAoc3RyaW5nOiAiMSIgPCAiMTAiIDwgIjIiKSBvcgotKyAqIGlu dGVnZXIgb3JkZXIgKG51bWVyaWM6ICIxIiA8ICIyIiA8ICIxMCIpLgotKyAqCi0rICogUGFyYW1l dGVyczoKLSsgKiAgIGJlIC0gYmFja2VuZAotKyAqICAgaW5kZXhfbmFtZSAtIG5hbWUgb2YgdGhl IGluZGV4IHRvIGNoZWNrIChlLmcuLCAicGFyZW50aWQiLCAiYW5jZXN0b3JpZCIpCi0rICoKLSsg Ki8KLStzdGF0aWMgdm9pZAotK2xkYm1faW5zdGFuY2VfY2hlY2tfaW5kZXhfY29uZmlnKGJhY2tl bmQgKmJlLCBjb25zdCBjaGFyICppbmRleF9uYW1lKQotK3sKLSsgICAgbGRibV9pbnN0YW5jZSAq aW5zdCA9IChsZGJtX2luc3RhbmNlICopYmUtPmJlX2luc3RhbmNlX2luZm87Ci0rICAgIHN0cnVj dCBhdHRyaW5mbyAqYWkgPSBOVUxMOwotKyAgICBkYmlfZGJfdCAqZGIgPSBOVUxMOwotKyAgICBk YmlfY3Vyc29yX3QgZGJjID0gezB9OwotKyAgICBkYmlfdmFsX3Qga2V5ID0gezB9OwotKyAgICBk YmlfdmFsX3QgZGF0YSA9IHswfTsKLSsgICAgaW50IHJldCA9IDA7Ci0rICAgIFBSQm9vbCBjb25m aWdfaGFzX2ludF9vcmRlciA9IFBSX0ZBTFNFOwotKyAgICBQUkJvb2wgZGlza19oYXNfaW50X29y ZGVyID0gUFJfVFJVRTsgIC8qIEFzc3VtZSBpbnRlZ2VyIG9yZGVyIHVudGlsIHByb3ZlbiBvdGhl cndpc2UgKi8KLSsgICAgSUQgcHJldl9pZCA9IDA7Ci0rICAgIGludCBrZXlfY291bnQgPSAwOwot KyAgICBQUkJvb2wgZmlyc3Rfa2V5ID0gUFJfVFJVRTsKLSsgICAgUFJCb29sIGZvdW5kX29yZGVy aW5nX2V2aWRlbmNlID0gUFJfRkFMU0U7Ci0rCi0rICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9H X0RFQlVHLCAibGRibV9pbnN0YW5jZV9jaGVja19pbmRleF9jb25maWciLAotKyAgICAgICAgICAg ICJCYWNrZW5kICclcyc6IGNoZWNraW5nICVzIGluZGV4IG9yZGVyaW5nLi4uXG4iLAotKyAgICAg ICAgICAgIGluc3QtPmluc3RfbmFtZSwgaW5kZXhfbmFtZSk7Ci0rCi0rICAgIC8qIENoZWNrIGlm IGludGVnZXJPcmRlcmluZ01hdGNoIGlzIGNvbmZpZ3VyZWQgaW4gRFNFICovCi0rICAgIGNvbmZp Z19oYXNfaW50X29yZGVyID0gbGRibV9pbnN0YW5jZV9pbmRleF9oYXNfaW50X29yZGVyX2luX2Rz ZShpbnN0LT5pbnN0X25hbWUsIGluZGV4X25hbWUpOwotKwotKyAgICAvKiBHZXQgYXR0cmluZm8g Zm9yIHRoZSBpbmRleCAqLwotKyAgICBhaW5mb19nZXQoYmUsIChjaGFyICopaW5kZXhfbmFtZSwg JmFpKTsKLSsgICAgaWYgKGFpID09IE5VTEwgfHwgc3RyY21wKGFpLT5haV90eXBlLCBpbmRleF9u YW1lKSAhPSAwKSB7Ci0rICAgICAgICAvKiBObyBpbmRleCBjb25maWcgZm91bmQgKi8KLSsgICAg ICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX0RFQlVHLCAibGRibV9pbnN0YW5jZV9jaGVja19p bmRleF9jb25maWciLAotKyAgICAgICAgICAgICAgICAiQmFja2VuZCAnJXMnOiBubyAlcyBhdHRy aW5mbyBmb3VuZCwgc2tpcHBpbmcgY2hlY2tcbiIsCi0rICAgICAgICAgICAgICAgIGluc3QtPmlu c3RfbmFtZSwgaW5kZXhfbmFtZSk7Ci0rICAgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgICAg LyogT3BlbiB0aGUgaW5kZXggZmlsZSAqLwotKyAgICByZXQgPSBkYmxheWVyX2dldF9pbmRleF9m aWxlKGJlLCBhaSwgJmRiLCAwKTsKLSsgICAgaWYgKHJldCAhPSAwIHx8IGRiID09IE5VTEwpIHsK LSsgICAgICAgIC8qIEluZGV4IGZpbGUgZG9lc24ndCBleGlzdCBvciBjYW4ndCBiZSBvcGVuZWQg LSB0aGlzIGlzIGZpbmUgZm9yIG5ldyBpbnN0YW5jZXMgKi8KLSsgICAgICAgIHNsYXBpX2xvZ19l cnIoU0xBUElfTE9HX0RFQlVHLCAibGRibV9pbnN0YW5jZV9jaGVja19pbmRleF9jb25maWciLAot KyAgICAgICAgICAgICAgICAiQmFja2VuZCAnJXMnOiBjb3VsZCBub3Qgb3BlbiAlcyBpbmRleCBm aWxlIChyZXQ9JWQpLCBza2lwcGluZyBvcmRlciBjaGVja1xuIiwKLSsgICAgICAgICAgICAgICAg aW5zdC0+aW5zdF9uYW1lLCBpbmRleF9uYW1lLCByZXQpOwotKyAgICAgICAgcmV0dXJuOwotKyAg ICB9Ci0rCi0rICAgIC8qIENyZWF0ZSBhIGN1cnNvciB0byByZWFkIGtleXMgKi8KLSsgICAgcmV0 ID0gZGJsYXllcl9uZXdfY3Vyc29yKGJlLCBkYiwgTlVMTCwgJmRiYyk7Ci0rICAgIGlmIChyZXQg IT0gMCkgewotKyAgICAgICAgc2xhcGlfbG9nX2VycihTTEFQSV9MT0dfRVJSLCAibGRibV9pbnN0 YW5jZV9jaGVja19pbmRleF9jb25maWciLAotKyAgICAgICAgICAgICAgICAiQmFja2VuZCAnJXMn OiBjb3VsZCBub3QgY3JlYXRlIGN1cnNvciBvbiAlcyBpbmRleCAocmV0PSVkKVxuIiwKLSsgICAg ICAgICAgICAgICAgaW5zdC0+aW5zdF9uYW1lLCBpbmRleF9uYW1lLCByZXQpOwotKyAgICAgICAg ZGJsYXllcl9yZWxlYXNlX2luZGV4X2ZpbGUoYmUsIGFpLCBkYik7Ci0rICAgICAgICByZXR1cm47 Ci0rICAgIH0KLSsKLSsgICAgZGJsYXllcl92YWx1ZV9pbml0KGJlLCAma2V5KTsKLSsgICAgZGJs YXllcl92YWx1ZV9pbml0KGJlLCAmZGF0YSk7Ci0rCi0rICAgIC8qCi0rICAgICAqIFJlYWQgdXAg dG8gMTAwIHVuaXF1ZSBrZXlzIGFuZCBjaGVjayB0aGVpciBvcmRlcmluZy4KLSsgICAgICogV2l0 aCBsZXhpY29ncmFwaGljIG9yZGVyaW5nOiAiMSIgPCAiMTAiIDwgIjEwMCIgPCAiMiIgPCAiMjAi IDwgIjMiCi0rICAgICAqIFdpdGggaW50ZWdlciBvcmRlcmluZzogIjEiIDwgIjIiIDwgIjMiIDwg IjEwIiA8ICIyMCIgPCAiMTAwIgotKyAgICAgKgotKyAgICAgKiBJZiB3ZSBmaW5kIGEgY2FzZSB3 aGVyZSBwcmV2X2lkID4gY3VycmVudF9pZCAobnVtZXJpY2FsbHkpLCBidXQgdGhlCi0rICAgICAq IGtleXMgYXJlIHN0aWxsIGluIG9yZGVyIChsZXhpY29ncmFwaGljYWxseSksIHRoZW4gdGhlIGlu ZGV4IHVzZXMKLSsgICAgICogbGV4aWNvZ3JhcGhpYyBvcmRlcmluZy4KLSsgICAgICovCi0rICAg IHdoaWxlIChrZXlfY291bnQgPCAxMDApIHsKLSsgICAgICAgIElEIGN1cnJlbnRfaWQ7Ci0rCi0r ICAgICAgICByZXQgPSBkYmxheWVyX2N1cnNvcl9vcCgmZGJjLCBmaXJzdF9rZXkgPyBEQklfT1Bf TU9WRV9UT19GSVJTVCA6IERCSV9PUF9ORVhUX0tFWSwgJmtleSwgJmRhdGEpOwotKyAgICAgICAg Zmlyc3Rfa2V5ID0gUFJfRkFMU0U7ICAvKiBBbHdheXMgYWR2YW5jZSBjdXJzb3Igb24gbmV4dCBp dGVyYXRpb24gKi8KLSsgICAgICAgIGlmIChyZXQgIT0gMCkgewotKyAgICAgICAgICAgIGJyZWFr OyAgLyogTm8gbW9yZSBrZXlzIG9yIGVycm9yICovCi0rICAgICAgICB9Ci0rCi0rICAgICAgICAv KiBTa2lwIG5vbi1lcXVhbGl0eSBrZXlzICovCi0rICAgICAgICBpZiAoa2V5LnNpemUgPCAyIHx8 ICooY2hhciAqKWtleS5kYXRhICE9IEVRX1BSRUZJWCkgewotKyAgICAgICAgICAgIGNvbnRpbnVl OwotKyAgICAgICAgfQotKwotKyAgICAgICAgLyogUGFyc2UgdGhlIElEIGZyb20gdGhlIGtleSAo Zm9ybWF0OiAiPTxpZD4iKSAqLwotKyAgICAgICAgY3VycmVudF9pZCA9IChJRClzdHJ0b3VsKChj aGFyICopa2V5LmRhdGEgKyAxLCBOVUxMLCAxMCk7Ci0rICAgICAgICBpZiAoY3VycmVudF9pZCA9 PSAwKSB7Ci0rICAgICAgICAgICAgY29udGludWU7ICAvKiBJbnZhbGlkIElELCBza2lwICovCi0r ICAgICAgICB9Ci0rCi0rICAgICAgICBrZXlfY291bnQrKzsKLSsKLSsgICAgICAgIGlmIChwcmV2 X2lkICE9IDApIHsKLSsgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAqIENoZWNrIG9yZGVy aW5nOiBpZiBwcmV2X2lkID4gY3VycmVudF9pZCBudW1lcmljYWxseSwKLSsgICAgICAgICAgICAg KiBidXQgd2UgZ290IHRoaXMga2V5IGFmdGVyIHByZXYgaW4gREIgb3JkZXIsIHRoZW4KLSsgICAg ICAgICAgICAgKiB0aGUgaW5kZXggaXMgdXNpbmcgbGV4aWNvZ3JhcGhpYyBvcmRlcmluZy4KLSsg ICAgICAgICAgICAgKgotKyAgICAgICAgICAgICAqIEV4YW1wbGU6IGlmIHdlIHNlZSAiMTAiIGZv bGxvd2VkIGJ5ICIyIiwgdGhhdCdzIGxleGljb2dyYXBoaWMKLSsgICAgICAgICAgICAgKiBiZWNh dXNlICIxMCIgPCAiMiIgYXMgc3RyaW5ncywgYnV0IDEwID4gMiBhcyBpbnRlZ2Vycy4KLSsgICAg ICAgICAgICAgKi8KLSsgICAgICAgICAgICBpZiAocHJldl9pZCA+IGN1cnJlbnRfaWQpIHsKLSsg ICAgICAgICAgICAgICAgLyogRm91bmQgZXZpZGVuY2Ugb2YgbGV4aWNvZ3JhcGhpYyBvcmRlcmlu ZyAqLwotKyAgICAgICAgICAgICAgICBkaXNrX2hhc19pbnRfb3JkZXIgPSBQUl9GQUxTRTsKLSsg ICAgICAgICAgICAgICAgZm91bmRfb3JkZXJpbmdfZXZpZGVuY2UgPSBQUl9UUlVFOwotKyAgICAg ICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICB9IGVsc2UgaWYgKHByZXZfaWQgPCBjdXJy ZW50X2lkKSB7Ci0rICAgICAgICAgICAgICAgIC8qCi0rICAgICAgICAgICAgICAgICAqIFRoaXMg aXMgY29uc2lzdGVudCB3aXRoIGludGVnZXIgb3JkZXJpbmcsIGJ1dCB3ZSBuZWVkCi0rICAgICAg ICAgICAgICAgICAqIHRvIGZpbmQgYSBjYXNlIHRoYXQgcHJvdmVzIGxleGljb2dyYXBoaWMgb3Jk ZXJpbmcuCi0rICAgICAgICAgICAgICAgICAqIEZvciBleGFtcGxlLCBzZWVpbmcgIjEiIGZvbGxv d2VkIGJ5ICIyIiBpcyBhbWJpZ3VvdXMsCi0rICAgICAgICAgICAgICAgICAqIGJ1dCBzZWVpbmcg IjEiIGZvbGxvd2VkIGJ5ICIxMCIgKG5vdCAiMiIpIHByb3ZlcyBsZXhpY29ncmFwaGljLgotKyAg ICAgICAgICAgICAgICAgKgotKyAgICAgICAgICAgICAgICAgKiBBIGRlZmluaXRpdmUgdGVzdDog aWYgd2Ugc2VlIGFuIElEIGZvbGxvd2VkIGJ5IGEgc21hbGxlcgotKyAgICAgICAgICAgICAgICAg KiBJRCwgdGhhdCdzIGxleGljb2dyYXBoaWMuIElmIGFsbCBJRHMgYXJlIHN0cmljdGx5IGluY3Jl YXNpbmcsCi0rICAgICAgICAgICAgICAgICAqIGl0IGNvdWxkIGJlIGVpdGhlciAob3IgdGhlIGlu ZGV4IG9ubHkgaGFzIHNlcXVlbnRpYWwgSURzKS4KLSsgICAgICAgICAgICAgICAgICovCi0rICAg ICAgICAgICAgICAgIGZvdW5kX29yZGVyaW5nX2V2aWRlbmNlID0gUFJfVFJVRTsKLSsgICAgICAg ICAgICB9Ci0rICAgICAgICB9Ci0rICAgICAgICBwcmV2X2lkID0gY3VycmVudF9pZDsKLSsgICAg fQotKwotKyAgICAvKiBDbG9zZSB0aGUgY3Vyc29yIGFuZCBmcmVlIHZhbHVlcyAqLwotKyAgICBk YmxheWVyX2N1cnNvcl9vcCgmZGJjLCBEQklfT1BfQ0xPU0UsIE5VTEwsIE5VTEwpOwotKyAgICBk YmxheWVyX3ZhbHVlX2ZyZWUoYmUsICZrZXkpOwotKyAgICBkYmxheWVyX3ZhbHVlX2ZyZWUoYmUs ICZkYXRhKTsKLSsKLSsgICAgLyogUmVsZWFzZSB0aGUgaW5kZXggZmlsZSAqLwotKyAgICBkYmxh eWVyX3JlbGVhc2VfaW5kZXhfZmlsZShiZSwgYWksIGRiKTsKLSsKLSsgICAgLyoKLSsgICAgICog UmVwb3J0IGZpbmRpbmdzIGFuZCBjaGVjayBmb3IgY29uZmlnL2Rpc2sgbWlzbWF0Y2guCi0rICAg ICAqIExvZyBhbiBlcnJvciBpZiB0aGVyZSdzIGEgZGlzY3JlcGFuY3kgYmV0d2VlbiB3aGF0J3Mg Y29uZmlndXJlZAotKyAgICAgKiBpbiBEU0UgYW5kIHdoYXQncyBhY3R1YWxseSBvbiBkaXNrLgot KyAgICAgKi8KLSsgICAgaWYgKCFmb3VuZF9vcmRlcmluZ19ldmlkZW5jZSkgewotKyAgICAgICAg c2xhcGlfbG9nX2VycihTTEFQSV9MT0dfREVCVUcsICJsZGJtX2luc3RhbmNlX2NoZWNrX2luZGV4 X2NvbmZpZyIsCi0rICAgICAgICAgICAgICAgICJCYWNrZW5kICclcyc6ICVzIGluZGV4IG9yZGVy aW5nIGNoZWNrIC0gIgotKyAgICAgICAgICAgICAgICAiY291bGQgbm90IGRldGVybWluZSBvbi1k aXNrIG9yZGVyaW5nIChpbmRleCBtYXkgYmUgZW1wdHkgb3IgaGF2ZSBzZXF1ZW50aWFsIElEcyBv bmx5KS4gIgotKyAgICAgICAgICAgICAgICAiQ29uZmlnIGhhcyBpbnRlZ2VyT3JkZXJpbmdNYXRj aDogJXNcbiIsCi0rICAgICAgICAgICAgICAgIGluc3QtPmluc3RfbmFtZSwgaW5kZXhfbmFtZSwg Y29uZmlnX2hhc19pbnRfb3JkZXIgPyAieWVzIiA6ICJubyIpOwotKyAgICB9IGVsc2UgaWYgKGNv bmZpZ19oYXNfaW50X29yZGVyICYmICFkaXNrX2hhc19pbnRfb3JkZXIpIHsKLSsgICAgICAgIC8q IENvbmZpZyBleHBlY3RzIGludGVnZXIgb3JkZXJpbmcsIGJ1dCBkaXNrIGhhcyBsZXhpY29ncmFw aGljIC0gTUlTTUFUQ0ggKi8KLSsgICAgICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX0VSUiwg ImxkYm1faW5zdGFuY2VfY2hlY2tfaW5kZXhfY29uZmlnIiwKLSsgICAgICAgICAgICAgICAgIkJh Y2tlbmQgJyVzJzogTUlTTUFUQ0ggLSAlcyBpbmRleCBoYXMgaW50ZWdlck9yZGVyaW5nTWF0Y2gg Y29uZmlndXJlZCwgIgotKyAgICAgICAgICAgICAgICAiYnV0IG9uLWRpc2sgZGF0YSB1c2VzIGxl eGljb2dyYXBoaWMgb3JkZXJpbmcuICIKLSsgICAgICAgICAgICAgICAgIlRoaXMgd2lsbCBjYXVz ZSBzZWFyY2hlcyB0byByZXR1cm4gaW5jb3JyZWN0IG9yIGluY29tcGxldGUgcmVzdWx0cy4gIgot KyAgICAgICAgICAgICAgICAiUGxlYXNlIHJlaW5kZXggdGhlICVzIGF0dHJpYnV0ZTogIgotKyAg ICAgICAgICAgICAgICAiZHNjb25mIDxpbnN0YW5jZT4gYmFja2VuZCBpbmRleCByZWluZGV4IC0t YXR0ciAlcyAlc1xuIiwKLSsgICAgICAgICAgICAgICAgaW5zdC0+aW5zdF9uYW1lLCBpbmRleF9u YW1lLCBpbmRleF9uYW1lLCBpbmRleF9uYW1lLCBpbnN0LT5pbnN0X25hbWUpOwotKyAgICB9IGVs c2UgaWYgKCFjb25maWdfaGFzX2ludF9vcmRlciAmJiBkaXNrX2hhc19pbnRfb3JkZXIpIHsKLSsg ICAgICAgIC8qIENvbmZpZyBleHBlY3RzIGxleGljb2dyYXBoaWMgb3JkZXJpbmcsIGJ1dCBkaXNr IGhhcyBpbnRlZ2VyIC0gTUlTTUFUQ0ggKi8KLSsgICAgICAgIHNsYXBpX2xvZ19lcnIoU0xBUElf TE9HX0VSUiwgImxkYm1faW5zdGFuY2VfY2hlY2tfaW5kZXhfY29uZmlnIiwKLSsgICAgICAgICAg ICAgICAgIkJhY2tlbmQgJyVzJzogTUlTTUFUQ0ggLSAlcyBpbmRleCBkb2VzIG5vdCBoYXZlIGlu dGVnZXJPcmRlcmluZ01hdGNoIGNvbmZpZ3VyZWQsICIKLSsgICAgICAgICAgICAgICAgImJ1dCBv bi1kaXNrIGRhdGEgdXNlcyBpbnRlZ2VyIG9yZGVyaW5nLiAiCi0rICAgICAgICAgICAgICAgICJU aGlzIHdpbGwgY2F1c2Ugc2VhcmNoZXMgdG8gcmV0dXJuIGluY29ycmVjdCBvciBpbmNvbXBsZXRl IHJlc3VsdHMuICIKLSsgICAgICAgICAgICAgICAgIlBsZWFzZSByZWluZGV4IHRoZSAlcyBhdHRy aWJ1dGU6ICIKLSsgICAgICAgICAgICAgICAgImRzY29uZiA8aW5zdGFuY2U+IGJhY2tlbmQgaW5k ZXggcmVpbmRleCAtLWF0dHIgJXMgJXNcbiIsCi0rICAgICAgICAgICAgICAgIGluc3QtPmluc3Rf bmFtZSwgaW5kZXhfbmFtZSwgaW5kZXhfbmFtZSwgaW5kZXhfbmFtZSwgaW5zdC0+aW5zdF9uYW1l KTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAgIC8qIENvbmZpZyBhbmQgZGlzayBvcmRlcmluZyBt YXRjaCAtIG5vIGFjdGlvbiBuZWVkZWQgKi8KLSsgICAgICAgIHNsYXBpX2xvZ19lcnIoU0xBUElf TE9HX0RFQlVHLCAibGRibV9pbnN0YW5jZV9jaGVja19pbmRleF9jb25maWciLAotKyAgICAgICAg ICAgICAgICAiQmFja2VuZCAnJXMnOiAlcyBpbmRleCBvcmRlcmluZyBjaGVjayBwYXNzZWQgLSAi Ci0rICAgICAgICAgICAgICAgICJjb25maWcgaGFzIGludGVnZXJPcmRlcmluZ01hdGNoOiAlcywg b24tZGlzayBkYXRhIG1hdGNoZXMuXG4iLAotKyAgICAgICAgICAgICAgICBpbnN0LT5pbnN0X25h bWUsIGluZGV4X25hbWUsIGNvbmZpZ19oYXNfaW50X29yZGVyID8gInllcyIgOiAibm8iKTsKLSsg ICAgfQotK30KLSsKLSsvKgotKyAqIENoZWNrIHN5c3RlbSBpbmRleGVzIGZvciBvcmRlcmluZyBt aXNtYXRjaGVzLgotKyAqIElmIGEgbWlzbWF0Y2ggaXMgZGV0ZWN0ZWQsIGxvZyBhbiBlcnJvciBh ZHZpc2luZyB0aGUgYWRtaW5pc3RyYXRvcgotKyAqIHRvIHJlaW5kZXggdGhlIGFmZmVjdGVkIGF0 dHJpYnV0ZS4KLSsgKgotKyAqIE5vdGU6IFdlIG9ubHkgY2hlY2sgcGFyZW50aWQgaGVyZS4gVGhl IGFuY2VzdG9yaWQgaW5kZXggaXMgYSBzcGVjaWFsCi0rICogc3lzdGVtIGluZGV4IHRoYXQgaGFz IG5vIERTRSBjb25maWcgZW50cnkgLSBpdHMgb3JkZXJpbmcgaXMgaGFyZGNvZGVkCi0rICogaW4g bGRibV9pbnN0YW5jZV9pbml0X2NvbmZpZ19lbnRyeSgpIGFuZCBjYW5ub3QgYmUgY2hhbmdlZCBi eSB1c2Vycy4KLSsgKi8KLStzdGF0aWMgdm9pZAotK2xkYm1faW5zdGFuY2VfY2hlY2tfaW5kZXhl cyhiYWNrZW5kICpiZSkKLSt7Ci0rICAgIC8qIENoZWNrIHBhcmVudGlkIGluZGV4ICovCi0rICAg IGxkYm1faW5zdGFuY2VfY2hlY2tfaW5kZXhfY29uZmlnKGJlLCBMREJNX1BBUkVOVElEX1NUUik7 Ci0rfQotKwotIC8qIFN0YXJ0cyBhIGJhY2tlbmQgaW5zdGFuY2UgKi8KLSBpbnQKLSBsZGJtX2lu c3RhbmNlX3N0YXJ0KGJhY2tlbmQgKmJlKQotQEAgLTMwOCw2ICs1NjgsOCBAQCBsZGJtX2luc3Rh bmNlX3N0YXJ0YWxsKHN0cnVjdCBsZGJtaW5mbyAqbGkpCi0gICAgICAgICAgICAgbGRibV9pbnN0 YW5jZV9yZWdpc3Rlcl9tb2RpZnlfY2FsbGJhY2soaW5zdCk7Ci0gICAgICAgICAgICAgdmx2X2lu aXQoaW5zdCk7Ci0gICAgICAgICAgICAgc2xhcGlfbXRuX2JlX3N0YXJ0ZWQoaW5zdC0+aW5zdF9i ZSk7Ci0rICAgICAgICAgICAgLyogQ2hlY2sgaW5kZXggY29uZmlndXJhdGlvbiBmb3IgcG90ZW50 aWFsIGlzc3VlcyAqLwotKyAgICAgICAgICAgIGxkYm1faW5zdGFuY2VfY2hlY2tfaW5kZXhlcyhp bnN0LT5pbnN0X2JlKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmIChzbGFwaV9leGlzdF9yZWZl cnJhbChpbnN0LT5pbnN0X2JlKSkgewotICAgICAgICAgICAgIHNsYXBpX2JlX3NldF9mbGFnKGlu c3QtPmluc3RfYmUsIFNMQVBJX0JFX0ZMQUdfQ09OVEFJTlNfUkVGRVJSQUwpOwotLS0gCi0yLjUy LjAKLQoKZGlmZiAtLWdpdCBhLzAwMjItSXNzdWUtNzIyMy1BZGQtZHNjdGwtaW5kZXgtY2hlY2st Y29tbWFuZC1mb3Itb2ZmbGluZS5wYXRjaCBiLzAwMjItSXNzdWUtNzIyMy1BZGQtZHNjdGwtaW5k ZXgtY2hlY2stY29tbWFuZC1mb3Itb2ZmbGluZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggODE4YTljNy4uMDAwMDAwMAotLS0gYS8wMDIyLUlzc3VlLTcyMjMtQWRkLWRzY3Rs LWluZGV4LWNoZWNrLWNvbW1hbmQtZm9yLW9mZmxpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSwxMjMzICswLDAgQEAKLUZyb20gZDY4MWYyZTYxOWNhYTJlZmRkYWU4M2FiYzdkMTM4NjA2NDFh OTBjZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFZpa3RvciBBc2hpcm92IDx2YXNo aXJvdkByZWRoYXQuY29tPgotRGF0ZTogVGh1LCA1IEZlYiAyMDI2IDEyOjE3OjA2ICswMTAwCi1T dWJqZWN0OiBbUEFUQ0hdIElzc3VlIDcyMjMgLSBBZGQgZHNjdGwgaW5kZXgtY2hlY2sgY29tbWFu ZCBmb3Igb2ZmbGluZSBpbmRleAotIHJlcGFpcgotCi1EZXNjcmlwdGlvbjoKLUFkZCBgZHNjdGwg PGluc3RhbmNlPiBpbmRleC1jaGVjayBbYmFja2VuZF0gWy0tZml4XWAgY29tbWFuZCBmb3Igb2Zm bGluZQotZGV0ZWN0aW9uIGFuZCByZXBhaXIgb2YgaW5kZXggb3JkZXJpbmcgbWlzbWF0Y2hlcy4g VGhpcyBpcyBuZWVkZWQgYWZ0ZXIKLXVwZ3JhZGUgZnJvbSB2ZXJzaW9ucyB0aGF0IGRpZG4ndCB1 c2UgaW50ZWdlck9yZGVyaW5nTWF0Y2ggZm9yCi1wYXJlbnRpZC9hbmNlc3RvcmlkIHN5c3RlbSBp bmRleGVzLgotCi1JdCdzIGF1dG9tYXRpY2FsbHkgZXhlY3V0ZWQgYXMgcGFydCBvZiBSUE0gJXBv c3Qgc2NyaXB0bGV0IGR1cmluZwotdXBncmFkZS4KLQotUmVsYXRlczogaHR0cHM6Ly9naXRodWIu Y29tLzM4OWRzLzM4OS1kcy1iYXNlL2lzc3Vlcy83MjIzCi0KLVJldmlld2VkIGJ5OiBAcHJvZ2ll cjM4OSwgQHRib3JkYXosIEBkcm9pZGVjayAoVGhhbmtzISkKLS0tLQotIC4uLi9oZWFsdGhjaGVj ay9oZWFsdGhfc3lzdGVtX2luZGV4ZXNfdGVzdC5weSB8IDU5MyArKysrKysrKysrKysrKysrKysK LSBycG0vMzg5LWRzLWJhc2Uuc3BlYy5pbiAgICAgICAgICAgICAgICAgICAgICAgfCAgNTEgKy0K LSBzcmMvbGliMzg5L2xpYjM4OS9jbGlfY3RsL2RidGFza3MucHkgICAgICAgICAgfCA0MDIgKysr KysrKysrKysrCi0gc3JjL2xpYjM4OS9saWIzODkvZHNlbGRpZi5weSAgICAgICAgICAgICAgICAg IHwgIDUxICstCi0gNCBmaWxlcyBjaGFuZ2VkLCAxMDY4IGluc2VydGlvbnMoKyksIDI5IGRlbGV0 aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZGlyc3J2dGVzdHMvdGVzdHMvc3VpdGVzL2hlYWx0aGNo ZWNrL2hlYWx0aF9zeXN0ZW1faW5kZXhlc190ZXN0LnB5IGIvZGlyc3J2dGVzdHMvdGVzdHMvc3Vp dGVzL2hlYWx0aGNoZWNrL2hlYWx0aF9zeXN0ZW1faW5kZXhlc190ZXN0LnB5Ci1pbmRleCBlYjcy N2I5MDIuLmRkNDJjZDE5NyAxMDA2NDQKLS0tLSBhL2RpcnNydnRlc3RzL3Rlc3RzL3N1aXRlcy9o ZWFsdGhjaGVjay9oZWFsdGhfc3lzdGVtX2luZGV4ZXNfdGVzdC5weQotKysrIGIvZGlyc3J2dGVz dHMvdGVzdHMvc3VpdGVzL2hlYWx0aGNoZWNrL2hlYWx0aF9zeXN0ZW1faW5kZXhlc190ZXN0LnB5 Ci1AQCAtNTkwLDYgKzU5MCw1OTkgQEAgZGVmIHRlc3RfdXBncmFkZV9yZW1vdmVzX2FuY2VzdG9y aWRfaW5kZXhfY29uZmlnKHRvcG9sb2d5X3N0KToKLSAgICAgICAgIGxvZy5pbmZvKGYiSWRlbXBv dGVuY3kgdmVyaWZpZWQgLSBhbmNlc3RvcmlkIHN0aWxsIGFic2VudCBhZnRlciBzZWNvbmQgcmVz dGFydCAoZ290IGV4Y2VwdGlvbjoge2V9KSIpCi0gCi0gCi0rZGVmIHRlc3RfaW5kZXhfY2hlY2tf YmFzaWModG9wb2xvZ3lfc3QpOgotKyAgICAiIiJDaGVjayBpZiBkc2N0bCBpbmRleC1jaGVjayB3 b3JrcyBjb3JyZWN0bHkKLSsKLSsgICAgOmlkOiA4YTRlNWMyZC0xZjNiLTRhN2MtOWU4ZC0yYjZm MGM0YTVkM2UKLSsgICAgOnNldHVwOiBTdGFuZGFsb25lIGluc3RhbmNlCi0rICAgIDpzdGVwczoK LSsgICAgICAgIDEuIENyZWF0ZSBEUyBpbnN0YW5jZQotKyAgICAgICAgMi4gUnVuIGRzY3RsIGlu ZGV4LWNoZWNrIHdoaWxlIHNlcnZlciBpcyBydW5uaW5nIChzaG91bGQgZmFpbCkKLSsgICAgICAg IDMuIFN0b3AgdGhlIHNlcnZlcgotKyAgICAgICAgNC4gUnVuIGRzY3RsIGluZGV4LWNoZWNrIChz aG91bGQgcGFzcykKLSsgICAgICAgIDUuIFN0YXJ0IHRoZSBzZXJ2ZXIKLSsgICAgOmV4cGVjdGVk cmVzdWx0czoKLSsgICAgICAgIDEuIFN1Y2Nlc3MKLSsgICAgICAgIDIuIGluZGV4LWNoZWNrIHJl dHVybnMgRmFsc2UgYW5kIGxvZ3MgZXJyb3IKLSsgICAgICAgIDMuIFN1Y2Nlc3MKLSsgICAgICAg IDQuIGluZGV4LWNoZWNrIHJldHVybnMgVHJ1ZSAobm8gbWlzbWF0Y2hlcykKLSsgICAgICAgIDUu IFN1Y2Nlc3MKLSsgICAgIiIiCi0rICAgIGZyb20gbGliMzg5LmNsaV9jdGwuZGJ0YXNrcyBpbXBv cnQgZGJ0YXNrc19pbmRleF9jaGVjawotKwotKyAgICBzdGFuZGFsb25lID0gdG9wb2xvZ3lfc3Qu c3RhbmRhbG9uZQotKwotKyAgICBsb2cuaW5mbygiUnVuIGluZGV4LWNoZWNrIHdoaWxlIHNlcnZl ciBpcyBydW5uaW5nIikKLSsgICAgYXJncyA9IEZha2VBcmdzKCkKLSsgICAgYXJncy5iYWNrZW5k ID0gTm9uZQotKyAgICBhcmdzLmZpeCA9IEZhbHNlCi0rCi0rICAgICMgU2VydmVyIHNob3VsZCBi ZSBydW5uaW5nLCBpbmRleC1jaGVjayBzaG91bGQgZmFpbAotKyAgICBhc3NlcnQgc3RhbmRhbG9u ZS5zdGF0dXMoKQotKyAgICByZXN1bHQgPSBkYnRhc2tzX2luZGV4X2NoZWNrKHN0YW5kYWxvbmUs IHRvcG9sb2d5X3N0LmxvZ2NhcC5sb2csIGFyZ3MpCi0rICAgIGFzc2VydCByZXN1bHQgaXMgRmFs c2UKLSsgICAgYXNzZXJ0IHRvcG9sb2d5X3N0LmxvZ2NhcC5jb250YWlucygiaW5kZXgtY2hlY2sg cmVxdWlyZXMgdGhlIGluc3RhbmNlIHRvIGJlIHN0b3BwZWQiKQotKyAgICB0b3BvbG9neV9zdC5s b2djYXAuZmx1c2goKQotKwotKyAgICBsb2cuaW5mbygiU3RvcCB0aGUgc2VydmVyIikKLSsgICAg c3RhbmRhbG9uZS5zdG9wKCkKLSsKLSsgICAgbG9nLmluZm8oIlJ1biBpbmRleC1jaGVjayB3aXRo IHNlcnZlciBzdG9wcGVkIikKLSsgICAgcmVzdWx0ID0gZGJ0YXNrc19pbmRleF9jaGVjayhzdGFu ZGFsb25lLCB0b3BvbG9neV9zdC5sb2djYXAubG9nLCBhcmdzKQotKyAgICBhc3NlcnQgcmVzdWx0 IGlzIFRydWUKLSsgICAgYXNzZXJ0IHRvcG9sb2d5X3N0LmxvZ2NhcC5jb250YWlucygiQWxsIGNo ZWNrcyBwYXNzZWQiKQotKyAgICB0b3BvbG9neV9zdC5sb2djYXAuZmx1c2goKQotKwotKyAgICBs b2cuaW5mbygiU3RhcnQgdGhlIHNlcnZlciIpCi0rICAgIHN0YW5kYWxvbmUuc3RhcnQoKQotKwot KwotK2RlZiB0ZXN0X2luZGV4X2NoZWNrX3NwZWNpZmljX2JhY2tlbmQodG9wb2xvZ3lfc3QpOgot KyAgICAiIiJDaGVjayBpZiBkc2N0bCBpbmRleC1jaGVjayB3b3JrcyB3aXRoIGEgc3BlY2lmaWMg YmFja2VuZAotKwotKyAgICA6aWQ6IDQwN2Q4ZmNjLTYyZTAtNDNkZC05MGZhLTcwZTcwOTBhNWNm ZAotKyAgICA6c2V0dXA6IFN0YW5kYWxvbmUgaW5zdGFuY2UKLSsgICAgOnN0ZXBzOgotKyAgICAg ICAgMS4gQ3JlYXRlIERTIGluc3RhbmNlCi0rICAgICAgICAyLiBTdG9wIHRoZSBzZXJ2ZXIKLSsg ICAgICAgIDMuIFJ1biBkc2N0bCBpbmRleC1jaGVjayB3aXRoIHNwZWNpZmljIGJhY2tlbmQgKHVz ZXJSb290KQotKyAgICAgICAgNC4gUnVuIGRzY3RsIGluZGV4LWNoZWNrIHdpdGggbm9uLWV4aXN0 ZW50IGJhY2tlbmQKLSsgICAgICAgIDUuIFN0YXJ0IHRoZSBzZXJ2ZXIKLSsgICAgOmV4cGVjdGVk cmVzdWx0czoKLSsgICAgICAgIDEuIFN1Y2Nlc3MKLSsgICAgICAgIDIuIFN1Y2Nlc3MKLSsgICAg ICAgIDMuIGluZGV4LWNoZWNrIHJldHVybnMgVHJ1ZSBmb3IgdXNlclJvb3QKLSsgICAgICAgIDQu IGluZGV4LWNoZWNrIHJldHVybnMgRmFsc2UgZm9yIG5vbi1leGlzdGVudCBiYWNrZW5kCi0rICAg ICAgICA1LiBTdWNjZXNzCi0rICAgICIiIgotKyAgICBmcm9tIGxpYjM4OS5jbGlfY3RsLmRidGFz a3MgaW1wb3J0IGRidGFza3NfaW5kZXhfY2hlY2sKLSsKLSsgICAgc3RhbmRhbG9uZSA9IHRvcG9s b2d5X3N0LnN0YW5kYWxvbmUKLSsKLSsgICAgbG9nLmluZm8oIlN0b3AgdGhlIHNlcnZlciIpCi0r ICAgIHN0YW5kYWxvbmUuc3RvcCgpCi0rCi0rICAgIGxvZy5pbmZvKCJSdW4gaW5kZXgtY2hlY2sg Zm9yIHVzZXJSb290IGJhY2tlbmQiKQotKyAgICBhcmdzID0gRmFrZUFyZ3MoKQotKyAgICBhcmdz LmJhY2tlbmQgPSAidXNlclJvb3QiCi0rICAgIGFyZ3MuZml4ID0gRmFsc2UKLSsKLSsgICAgcmVz dWx0ID0gZGJ0YXNrc19pbmRleF9jaGVjayhzdGFuZGFsb25lLCB0b3BvbG9neV9zdC5sb2djYXAu bG9nLCBhcmdzKQotKyAgICBhc3NlcnQgcmVzdWx0IGlzIFRydWUKLSsgICAgIyBDaGVjayBmb3Ig YmFja2VuZCBuYW1lIGluIGFueSBjYXNlCi0rICAgIGFzc2VydCB0b3BvbG9neV9zdC5sb2djYXAu Y29udGFpbnMoIkNoZWNraW5nIGJhY2tlbmQ6IikKLSsgICAgdG9wb2xvZ3lfc3QubG9nY2FwLmZs dXNoKCkKLSsKLSsgICAgbG9nLmluZm8oIlJ1biBpbmRleC1jaGVjayBmb3Igbm9uLWV4aXN0ZW50 IGJhY2tlbmQiKQotKyAgICBhcmdzLmJhY2tlbmQgPSAibm9uRXhpc3RlbnRCYWNrZW5kIgotKyAg ICByZXN1bHQgPSBkYnRhc2tzX2luZGV4X2NoZWNrKHN0YW5kYWxvbmUsIHRvcG9sb2d5X3N0Lmxv Z2NhcC5sb2csIGFyZ3MpCi0rICAgIGFzc2VydCByZXN1bHQgaXMgRmFsc2UKLSsgICAgYXNzZXJ0 IHRvcG9sb2d5X3N0LmxvZ2NhcC5jb250YWlucygibm90IGZvdW5kIikKLSsgICAgdG9wb2xvZ3lf c3QubG9nY2FwLmZsdXNoKCkKLSsKLSsgICAgbG9nLmluZm8oIlN0YXJ0IHRoZSBzZXJ2ZXIiKQot KyAgICBzdGFuZGFsb25lLnN0YXJ0KCkKLSsKLSsKLStkZWYgdGVzdF9pbmRleF9jaGVja19taXNt YXRjaF9kZXRlY3Rpb24odG9wb2xvZ3lfc3QpOgotKyAgICAiIiJDaGVjayBpZiBkc2N0bCBpbmRl eC1jaGVjayBkZXRlY3RzIG9yZGVyaW5nIG1pc21hdGNoCi0rCi0rICAgIDppZDogNTBkMTQ1MjAt YjBiZi00MjQzLTlmZTYtYjA5NzkyOGQ0MzUxCi0rICAgIDpzZXR1cDogU3RhbmRhbG9uZSBpbnN0 YW5jZQotKyAgICA6c3RlcHM6Ci0rICAgICAgICAxLiBDcmVhdGUgRFMgaW5zdGFuY2UKLSsgICAg ICAgIDIuIFN0b3AgdGhlIHNlcnZlcgotKyAgICAgICAgMy4gUnVuIGRzY3RsIGluZGV4LWNoZWNr ICh3aXRob3V0IC0tZml4KQotKyAgICAgICAgNC4gVmVyaWZ5IG91dHB1dCBmb3JtYXQKLSsgICAg ICAgIDUuIFN0YXJ0IHRoZSBzZXJ2ZXIKLSsgICAgOmV4cGVjdGVkcmVzdWx0czoKLSsgICAgICAg IDEuIFN1Y2Nlc3MKLSsgICAgICAgIDIuIFN1Y2Nlc3MKLSsgICAgICAgIDMuIGluZGV4LWNoZWNr IHJldHVybnMgVHJ1ZSAobm8gbWlzbWF0Y2ggb24gZnJlc2ggaW5zdGFuY2UpCi0rICAgICAgICA0 LiBMb2cgY29udGFpbnMgZXhwZWN0ZWQgZm9ybWF0Ci0rICAgICAgICA1LiBTdWNjZXNzCi0rICAg ICIiIgotKyAgICBmcm9tIGxpYjM4OS5jbGlfY3RsLmRidGFza3MgaW1wb3J0IGRidGFza3NfaW5k ZXhfY2hlY2sKLSsKLSsgICAgc3RhbmRhbG9uZSA9IHRvcG9sb2d5X3N0LnN0YW5kYWxvbmUKLSsK LSsgICAgbG9nLmluZm8oIlN0b3AgdGhlIHNlcnZlciIpCi0rICAgIHN0YW5kYWxvbmUuc3RvcCgp Ci0rCi0rICAgIGxvZy5pbmZvKCJSdW4gaW5kZXgtY2hlY2sgdG8gdmVyaWZ5IGRldGVjdGlvbiBs b2dpYyIpCi0rICAgIGFyZ3MgPSBGYWtlQXJncygpCi0rICAgIGFyZ3MuYmFja2VuZCA9ICJ1c2Vy Um9vdCIKLSsgICAgYXJncy5maXggPSBGYWxzZQotKwotKyAgICAjIE9uIGEgZnJlc2ggaW5zdGFu Y2UsIHRoZXJlIHNob3VsZCBiZSBubyBtaXNtYXRjaAotKyAgICByZXN1bHQgPSBkYnRhc2tzX2lu ZGV4X2NoZWNrKHN0YW5kYWxvbmUsIHRvcG9sb2d5X3N0LmxvZ2NhcC5sb2csIGFyZ3MpCi0rICAg ICMgRnJlc2ggaW5zdGFuY2Ugc2hvdWxkIGhhdmUgbWF0Y2hpbmcgY29uZmlnIGFuZCBkaXNrIG9y ZGVyaW5nCi0rICAgIGFzc2VydCByZXN1bHQgaXMgVHJ1ZQotKyAgICAjIENoZWNrIHRoYXQgdGhl IGJhY2tlbmQgd2FzIGNoZWNrZWQgKG1heSBza2lwIGluZGV4ZXMgaWYgb3JkZXJpbmcgY2FuJ3Qg YmUgZGV0ZXJtaW5lZCkKLSsgICAgYXNzZXJ0IHRvcG9sb2d5X3N0LmxvZ2NhcC5jb250YWlucygi Q2hlY2tpbmcgYmFja2VuZDoiKQotKyAgICB0b3BvbG9neV9zdC5sb2djYXAuZmx1c2goKQotKwot KyAgICBsb2cuaW5mbygiU3RhcnQgdGhlIHNlcnZlciIpCi0rICAgIHN0YW5kYWxvbmUuc3RhcnQo KQotKwotKwotK2RlZiB0ZXN0X2luZGV4X2NoZWNrX3dpdGhfZml4KHRvcG9sb2d5X3N0KToKLSsg ICAgIiIiQ2hlY2sgaWYgZHNjdGwgaW5kZXgtY2hlY2sgLS1maXggdHJpZ2dlcnMgcmVpbmRleGlu ZwotKwotKyAgICA6aWQ6IDM4YWUzNmU0LWM4NjEtNDc3MS1hZTdkLTM1NDM3MDM3NmEyZgotKyAg ICA6c2V0dXA6IFN0YW5kYWxvbmUgaW5zdGFuY2UKLSsgICAgOnN0ZXBzOgotKyAgICAgICAgMS4g Q3JlYXRlIERTIGluc3RhbmNlCi0rICAgICAgICAyLiBTdG9wIHRoZSBzZXJ2ZXIKLSsgICAgICAg IDMuIFJ1biBkc2N0bCBpbmRleC1jaGVjayAtLWZpeCAoc2hvdWxkIHBhc3Mgc2luY2Ugbm8gbWlz bWF0Y2gpCi0rICAgICAgICA0LiBWZXJpZnkgb3V0cHV0IGluZGljYXRlcyBjaGVjayBwYXNzZWQK LSsgICAgICAgIDUuIFN0YXJ0IHRoZSBzZXJ2ZXIKLSsgICAgOmV4cGVjdGVkcmVzdWx0czoKLSsg ICAgICAgIDEuIFN1Y2Nlc3MKLSsgICAgICAgIDIuIFN1Y2Nlc3MKLSsgICAgICAgIDMuIGluZGV4 LWNoZWNrIHJldHVybnMgVHJ1ZQotKyAgICAgICAgNC4gTG9nIGNvbnRhaW5zICJBbGwgY2hlY2tz IHBhc3NlZCIKLSsgICAgICAgIDUuIFN1Y2Nlc3MKLSsgICAgIiIiCi0rICAgIGZyb20gbGliMzg5 LmNsaV9jdGwuZGJ0YXNrcyBpbXBvcnQgZGJ0YXNrc19pbmRleF9jaGVjawotKwotKyAgICBzdGFu ZGFsb25lID0gdG9wb2xvZ3lfc3Quc3RhbmRhbG9uZQotKwotKyAgICBsb2cuaW5mbygiU3RvcCB0 aGUgc2VydmVyIikKLSsgICAgc3RhbmRhbG9uZS5zdG9wKCkKLSsKLSsgICAgbG9nLmluZm8oIlJ1 biBpbmRleC1jaGVjayB3aXRoIC0tZml4IG9wdGlvbiIpCi0rICAgIGFyZ3MgPSBGYWtlQXJncygp Ci0rICAgIGFyZ3MuYmFja2VuZCA9IE5vbmUKLSsgICAgYXJncy5maXggPSBUcnVlCi0rCi0rICAg IHJlc3VsdCA9IGRidGFza3NfaW5kZXhfY2hlY2soc3RhbmRhbG9uZSwgdG9wb2xvZ3lfc3QubG9n Y2FwLmxvZywgYXJncykKLSsgICAgIyBPbiBhIGZyZXNoIGluc3RhbmNlLCB0aGVyZSBzaG91bGQg YmUgbm8gbWlzbWF0Y2gsIHNvIG5vIHJlaW5kZXhpbmcgbmVlZGVkCi0rICAgIGFzc2VydCByZXN1 bHQgaXMgVHJ1ZQotKyAgICBhc3NlcnQgdG9wb2xvZ3lfc3QubG9nY2FwLmNvbnRhaW5zKCJBbGwg Y2hlY2tzIHBhc3NlZCIpCi0rICAgIHRvcG9sb2d5X3N0LmxvZ2NhcC5mbHVzaCgpCi0rCi0rICAg IGxvZy5pbmZvKCJTdGFydCB0aGUgc2VydmVyIikKLSsgICAgc3RhbmRhbG9uZS5zdGFydCgpCi0r Ci0rCi0rZGVmIHRlc3RfaW5kZXhfY2hlY2tfZml4ZXNfc2NhbmxpbWl0KHRvcG9sb2d5X3N0KToK LSsgICAgIiIiQ2hlY2sgaWYgZHNjdGwgaW5kZXgtY2hlY2sgLS1maXggcmVtb3ZlcyBuc0luZGV4 SURMaXN0U2NhbkxpbWl0Ci0rCi0rICAgIDppZDogNGE5YjJjN2QtOGUxZi00YjNhLTljNWQtNmU3 ZjhhMGIxYzJkCi0rICAgIDpzZXR1cDogU3RhbmRhbG9uZSBpbnN0YW5jZQotKyAgICA6c3RlcHM6 Ci0rICAgICAgICAxLiBDcmVhdGUgRFMgaW5zdGFuY2UKLSsgICAgICAgIDIuIFN0b3AgdGhlIHNl cnZlcgotKyAgICAgICAgMy4gQWRkIG5zSW5kZXhJRExpc3RTY2FuTGltaXQgdG8gcGFyZW50aWQg aW5kZXggdXNpbmcgRFNFbGRpZgotKyAgICAgICAgNC4gUnVuIGRzY3RsIGluZGV4LWNoZWNrIChz aG91bGQgZGV0ZWN0IGlzc3VlKQotKyAgICAgICAgNS4gUnVuIGRzY3RsIGluZGV4LWNoZWNrIC0t Zml4Ci0rICAgICAgICA2LiBWZXJpZnkgbnNJbmRleElETGlzdFNjYW5MaW1pdCB3YXMgcmVtb3Zl ZAotKyAgICAgICAgNy4gU3RhcnQgdGhlIHNlcnZlcgotKyAgICA6ZXhwZWN0ZWRyZXN1bHRzOgot KyAgICAgICAgMS4gU3VjY2VzcwotKyAgICAgICAgMi4gU3VjY2VzcwotKyAgICAgICAgMy4gU3Vj Y2VzcwotKyAgICAgICAgNC4gaW5kZXgtY2hlY2sgcmV0dXJucyBGYWxzZSBhbmQgZGV0ZWN0cyBz Y2FubGltaXQKLSsgICAgICAgIDUuIGluZGV4LWNoZWNrIHJldHVybnMgVHJ1ZSBhZnRlciBmaXgK LSsgICAgICAgIDYuIG5zSW5kZXhJRExpc3RTY2FuTGltaXQgbm8gbG9uZ2VyIHByZXNlbnQKLSsg ICAgICAgIDcuIFN1Y2Nlc3MKLSsgICAgIiIiCi0rICAgIGZyb20gbGliMzg5LmNsaV9jdGwuZGJ0 YXNrcyBpbXBvcnQgZGJ0YXNrc19pbmRleF9jaGVjawotKyAgICBmcm9tIGxpYjM4OS5kc2VsZGlm IGltcG9ydCBEU0VsZGlmCi0rCi0rICAgIHN0YW5kYWxvbmUgPSB0b3BvbG9neV9zdC5zdGFuZGFs b25lCi0rCi0rICAgIGxvZy5pbmZvKCJTdG9wIHRoZSBzZXJ2ZXIiKQotKyAgICBzdGFuZGFsb25l LnN0b3AoKQotKwotKyAgICBsb2cuaW5mbygiQWRkIG5zSW5kZXhJRExpc3RTY2FuTGltaXQgdG8g cGFyZW50aWQgaW5kZXggdXNpbmcgRFNFbGRpZiIpCi0rICAgIGRzZV9sZGlmID0gRFNFbGRpZihz dGFuZGFsb25lKQotKyAgICBwYXJlbnRpZF9kbiA9ICJjbj1wYXJlbnRpZCxjbj1pbmRleCxjbj11 c2VyUm9vdCxjbj1sZGJtIGRhdGFiYXNlLGNuPXBsdWdpbnMsY249Y29uZmlnIgotKyAgICBkc2Vf bGRpZi5hZGQocGFyZW50aWRfZG4sICJuc0luZGV4SURMaXN0U2NhbkxpbWl0IiwgIjQwMDAiKQot KwotKyAgICAjIFZlcmlmeSBpdCB3YXMgYWRkZWQKLSsgICAgc2NhbmxpbWl0ID0gZHNlX2xkaWYu Z2V0KHBhcmVudGlkX2RuLCAibnNJbmRleElETGlzdFNjYW5MaW1pdCIsIHNpbmdsZT1UcnVlKQot KyAgICBhc3NlcnQgc2NhbmxpbWl0ID09ICI0MDAwIiwgZiJGYWlsZWQgdG8gYWRkIG5zSW5kZXhJ RExpc3RTY2FuTGltaXQsIGdvdDoge3NjYW5saW1pdH0iCi0rICAgIGxvZy5pbmZvKCJBZGRlZCBu c0luZGV4SURMaXN0U2NhbkxpbWl0IHRvIHBhcmVudGlkIGluZGV4IikKLSsKLSsgICAgbG9nLmlu Zm8oIlJ1biBpbmRleC1jaGVjayB3aXRob3V0IC0tZml4IChzaG91bGQgZGV0ZWN0IGlzc3VlKSIp Ci0rICAgIGFyZ3MgPSBGYWtlQXJncygpCi0rICAgIGFyZ3MuYmFja2VuZCA9ICJ1c2VyUm9vdCIK LSsgICAgYXJncy5maXggPSBGYWxzZQotKwotKyAgICByZXN1bHQgPSBkYnRhc2tzX2luZGV4X2No ZWNrKHN0YW5kYWxvbmUsIHRvcG9sb2d5X3N0LmxvZ2NhcC5sb2csIGFyZ3MpCi0rICAgIGFzc2Vy dCByZXN1bHQgaXMgRmFsc2UsICJpbmRleC1jaGVjayBzaG91bGQgZGV0ZWN0IHNjYW5saW1pdCBp c3N1ZSIKLSsgICAgYXNzZXJ0IHRvcG9sb2d5X3N0LmxvZ2NhcC5jb250YWlucygibnNJbmRleElE TGlzdFNjYW5MaW1pdCIpCi0rICAgIHRvcG9sb2d5X3N0LmxvZ2NhcC5mbHVzaCgpCi0rCi0rICAg IGxvZy5pbmZvKCJSdW4gaW5kZXgtY2hlY2sgd2l0aCAtLWZpeCIpCi0rICAgIGFyZ3MuZml4ID0g VHJ1ZQotKyAgICByZXN1bHQgPSBkYnRhc2tzX2luZGV4X2NoZWNrKHN0YW5kYWxvbmUsIHRvcG9s b2d5X3N0LmxvZ2NhcC5sb2csIGFyZ3MpCi0rICAgIGFzc2VydCByZXN1bHQgaXMgVHJ1ZSwgImlu ZGV4LWNoZWNrIC0tZml4IHNob3VsZCBzdWNjZWVkIgotKyAgICBhc3NlcnQgdG9wb2xvZ3lfc3Qu bG9nY2FwLmNvbnRhaW5zKCJSZW1vdmVkIG5zSW5kZXhJRExpc3RTY2FuTGltaXQiKQotKyAgICB0 b3BvbG9neV9zdC5sb2djYXAuZmx1c2goKQotKwotKyAgICBsb2cuaW5mbygiVmVyaWZ5IG5zSW5k ZXhJRExpc3RTY2FuTGltaXQgd2FzIHJlbW92ZWQiKQotKyAgICBkc2VfbGRpZiA9IERTRWxkaWYo c3RhbmRhbG9uZSkgICMgUmVsb2FkIHRvIGdldCBmcmVzaCBkYXRhCi0rICAgIHNjYW5saW1pdCA9 IGRzZV9sZGlmLmdldChwYXJlbnRpZF9kbiwgIm5zSW5kZXhJRExpc3RTY2FuTGltaXQiLCBzaW5n bGU9VHJ1ZSkKLSsgICAgYXNzZXJ0IHNjYW5saW1pdCBpcyBOb25lLCBmIm5zSW5kZXhJRExpc3RT Y2FuTGltaXQgc2hvdWxkIGJlIHJlbW92ZWQsIGJ1dCBnb3Q6IHtzY2FubGltaXR9IgotKyAgICBs b2cuaW5mbygibnNJbmRleElETGlzdFNjYW5MaW1pdCBzdWNjZXNzZnVsbHkgcmVtb3ZlZCIpCi0r Ci0rICAgIGxvZy5pbmZvKCJTdGFydCB0aGUgc2VydmVyIikKLSsgICAgc3RhbmRhbG9uZS5zdGFy dCgpCi0rCi0rCi0rZGVmIHRlc3RfaW5kZXhfY2hlY2tfZml4ZXNfYW5jZXN0b3JpZF9jb25maWco dG9wb2xvZ3lfc3QpOgotKyAgICAiIiJDaGVjayBpZiBkc2N0bCBpbmRleC1jaGVjayAtLWZpeCBy ZW1vdmVzIGFuY2VzdG9yaWQgY29uZmlnIGVudHJpZXMKLSsKLSsgICAgOmlkOiA1YjBjM2Q4ZS05 ZjJhLTRjNGItMGQ2ZS03ZjhhOWIxYzJkM2UKLSsgICAgOnNldHVwOiBTdGFuZGFsb25lIGluc3Rh bmNlCi0rICAgIDpzdGVwczoKLSsgICAgICAgIDEuIENyZWF0ZSBEUyBpbnN0YW5jZQotKyAgICAg ICAgMi4gU3RvcCB0aGUgc2VydmVyCi0rICAgICAgICAzLiBBZGQgYW5jZXN0b3JpZCBpbmRleCBj b25maWcgZW50cnkgdXNpbmcgRFNFbGRpZgotKyAgICAgICAgNC4gUnVuIGRzY3RsIGluZGV4LWNo ZWNrIChzaG91bGQgZGV0ZWN0IGlzc3VlKQotKyAgICAgICAgNS4gUnVuIGRzY3RsIGluZGV4LWNo ZWNrIC0tZml4Ci0rICAgICAgICA2LiBWZXJpZnkgYW5jZXN0b3JpZCBjb25maWcgZW50cnkgd2Fz IHJlbW92ZWQKLSsgICAgICAgIDcuIFN0YXJ0IHRoZSBzZXJ2ZXIKLSsgICAgOmV4cGVjdGVkcmVz dWx0czoKLSsgICAgICAgIDEuIFN1Y2Nlc3MKLSsgICAgICAgIDIuIFN1Y2Nlc3MKLSsgICAgICAg IDMuIFN1Y2Nlc3MKLSsgICAgICAgIDQuIGluZGV4LWNoZWNrIHJldHVybnMgRmFsc2UgYW5kIGRl dGVjdHMgYW5jZXN0b3JpZCBjb25maWcKLSsgICAgICAgIDUuIGluZGV4LWNoZWNrIHJldHVybnMg VHJ1ZSBhZnRlciBmaXgKLSsgICAgICAgIDYuIGFuY2VzdG9yaWQgY29uZmlnIGVudHJ5IG5vIGxv bmdlciBwcmVzZW50Ci0rICAgICAgICA3LiBTdWNjZXNzCi0rICAgICIiIgotKyAgICBmcm9tIGxp YjM4OS5jbGlfY3RsLmRidGFza3MgaW1wb3J0IGRidGFza3NfaW5kZXhfY2hlY2sKLSsgICAgZnJv bSBsaWIzODkuZHNlbGRpZiBpbXBvcnQgRFNFbGRpZgotKwotKyAgICBzdGFuZGFsb25lID0gdG9w b2xvZ3lfc3Quc3RhbmRhbG9uZQotKwotKyAgICBsb2cuaW5mbygiU3RvcCB0aGUgc2VydmVyIikK LSsgICAgc3RhbmRhbG9uZS5zdG9wKCkKLSsKLSsgICAgbG9nLmluZm8oIkFkZCBhbmNlc3Rvcmlk IGluZGV4IGNvbmZpZyBlbnRyeSB1c2luZyBEU0VsZGlmIikKLSsgICAgZHNlX2xkaWYgPSBEU0Vs ZGlmKHN0YW5kYWxvbmUpCi0rICAgIGFuY2VzdG9yaWRfZW50cnkgPSBbCi0rICAgICAgICAiZG46 IGNuPWFuY2VzdG9yaWQsY249aW5kZXgsY249dXNlclJvb3QsY249bGRibSBkYXRhYmFzZSxjbj1w bHVnaW5zLGNuPWNvbmZpZ1xuIiwKLSsgICAgICAgICJvYmplY3RDbGFzczogdG9wXG4iLAotKyAg ICAgICAgIm9iamVjdENsYXNzOiBuc0luZGV4XG4iLAotKyAgICAgICAgImNuOiBhbmNlc3Rvcmlk XG4iLAotKyAgICAgICAgIm5zU3lzdGVtSW5kZXg6IHRydWVcbiIsCi0rICAgICAgICAibnNJbmRl eFR5cGU6IGVxXG4iLAotKyAgICBdCi0rICAgIGRzZV9sZGlmLmFkZF9lbnRyeShhbmNlc3Rvcmlk X2VudHJ5KQotKwotKyAgICAjIFZlcmlmeSBpdCB3YXMgYWRkZWQKLSsgICAgYW5jZXN0b3JpZF9k biA9ICJjbj1hbmNlc3RvcmlkLGNuPWluZGV4LGNuPXVzZXJSb290LGNuPWxkYm0gZGF0YWJhc2Us Y249cGx1Z2lucyxjbj1jb25maWciCi0rICAgIGRzZV9sZGlmID0gRFNFbGRpZihzdGFuZGFsb25l KSAgIyBSZWxvYWQKLSsgICAgY25fdmFsdWUgPSBkc2VfbGRpZi5nZXQoYW5jZXN0b3JpZF9kbiwg ImNuIiwgc2luZ2xlPVRydWUpCi0rICAgIGFzc2VydCBjbl92YWx1ZSBpcyBub3QgTm9uZSwgIkZh aWxlZCB0byBhZGQgYW5jZXN0b3JpZCBpbmRleCBjb25maWcgZW50cnkiCi0rICAgIGxvZy5pbmZv KGYiQWRkZWQgYW5jZXN0b3JpZCBpbmRleCBlbnRyeSB3aXRoIGNuOiB7Y25fdmFsdWV9IikKLSsK LSsgICAgbG9nLmluZm8oIlJ1biBpbmRleC1jaGVjayB3aXRob3V0IC0tZml4IChzaG91bGQgZGV0 ZWN0IGlzc3VlKSIpCi0rICAgIGFyZ3MgPSBGYWtlQXJncygpCi0rICAgIGFyZ3MuYmFja2VuZCA9 ICJ1c2VyUm9vdCIKLSsgICAgYXJncy5maXggPSBGYWxzZQotKwotKyAgICByZXN1bHQgPSBkYnRh c2tzX2luZGV4X2NoZWNrKHN0YW5kYWxvbmUsIHRvcG9sb2d5X3N0LmxvZ2NhcC5sb2csIGFyZ3Mp Ci0rICAgIGFzc2VydCByZXN1bHQgaXMgRmFsc2UsICJpbmRleC1jaGVjayBzaG91bGQgZGV0ZWN0 IGFuY2VzdG9yaWQgY29uZmlnIGlzc3VlIgotKyAgICBhc3NlcnQgdG9wb2xvZ3lfc3QubG9nY2Fw LmNvbnRhaW5zKCJhbmNlc3RvcmlkIikgYW5kIHRvcG9sb2d5X3N0LmxvZ2NhcC5jb250YWlucygi Y29uZmlnIGVudHJ5IGV4aXN0cyIpCi0rICAgIHRvcG9sb2d5X3N0LmxvZ2NhcC5mbHVzaCgpCi0r Ci0rICAgIGxvZy5pbmZvKCJSdW4gaW5kZXgtY2hlY2sgd2l0aCAtLWZpeCIpCi0rICAgIGFyZ3Mu Zml4ID0gVHJ1ZQotKyAgICByZXN1bHQgPSBkYnRhc2tzX2luZGV4X2NoZWNrKHN0YW5kYWxvbmUs IHRvcG9sb2d5X3N0LmxvZ2NhcC5sb2csIGFyZ3MpCi0rICAgIGFzc2VydCByZXN1bHQgaXMgVHJ1 ZSwgImluZGV4LWNoZWNrIC0tZml4IHNob3VsZCBzdWNjZWVkIgotKyAgICBhc3NlcnQgdG9wb2xv Z3lfc3QubG9nY2FwLmNvbnRhaW5zKCJSZW1vdmVkIGFuY2VzdG9yaWQgY29uZmlnIGVudHJ5IikK LSsgICAgdG9wb2xvZ3lfc3QubG9nY2FwLmZsdXNoKCkKLSsKLSsgICAgbG9nLmluZm8oIlZlcmlm eSBhbmNlc3RvcmlkIGNvbmZpZyBlbnRyeSB3YXMgcmVtb3ZlZCIpCi0rICAgIGRzZV9sZGlmID0g RFNFbGRpZihzdGFuZGFsb25lKSAgIyBSZWxvYWQgdG8gZ2V0IGZyZXNoIGRhdGEKLSsgICAgY25f dmFsdWUgPSBkc2VfbGRpZi5nZXQoYW5jZXN0b3JpZF9kbiwgImNuIiwgc2luZ2xlPVRydWUpCi0r ICAgIGFzc2VydCBjbl92YWx1ZSBpcyBOb25lLCBmImFuY2VzdG9yaWQgY29uZmlnIGVudHJ5IHNo b3VsZCBiZSByZW1vdmVkLCBidXQgZ290OiB7Y25fdmFsdWV9IgotKyAgICBsb2cuaW5mbygiYW5j ZXN0b3JpZCBjb25maWcgZW50cnkgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQiKQotKwotKyAgICBsb2cu aW5mbygiU3RhcnQgdGhlIHNlcnZlciIpCi0rICAgIHN0YW5kYWxvbmUuc3RhcnQoKQotKwotKwot K2RlZiB0ZXN0X2luZGV4X2NoZWNrX2ZpeGVzX21pc3NpbmdfbWF0Y2hpbmdfcnVsZSh0b3BvbG9n eV9zdCk6Ci0rICAgICIiIkNoZWNrIGlmIGRzY3RsIGluZGV4LWNoZWNrIC0tZml4IGFkZHMgbWlz c2luZyBpbnRlZ2VyT3JkZXJpbmdNYXRjaAotKwotKyAgICA6aWQ6IDZjMWQ0ZTlmLTBhM2ItNGQ1 Yy0xZTdmLThhOWIwYzJkM2U0ZgotKyAgICA6c2V0dXA6IFN0YW5kYWxvbmUgaW5zdGFuY2UKLSsg ICAgOnN0ZXBzOgotKyAgICAgICAgMS4gQ3JlYXRlIERTIGluc3RhbmNlCi0rICAgICAgICAyLiBT dG9wIHRoZSBzZXJ2ZXIKLSsgICAgICAgIDMuIFJlbW92ZSBpbnRlZ2VyT3JkZXJpbmdNYXRjaCBm cm9tIHBhcmVudGlkIGluZGV4IHVzaW5nIERTRWxkaWYKLSsgICAgICAgIDQuIFJ1biBkc2N0bCBp bmRleC1jaGVjayAoc2hvdWxkIGRldGVjdCBpc3N1ZSkKLSsgICAgICAgIDUuIFJ1biBkc2N0bCBp bmRleC1jaGVjayAtLWZpeAotKyAgICAgICAgNi4gVmVyaWZ5IGludGVnZXJPcmRlcmluZ01hdGNo IHdhcyBhZGRlZCBiYWNrCi0rICAgICAgICA3LiBTdGFydCB0aGUgc2VydmVyCi0rICAgIDpleHBl Y3RlZHJlc3VsdHM6Ci0rICAgICAgICAxLiBTdWNjZXNzCi0rICAgICAgICAyLiBTdWNjZXNzCi0r ICAgICAgICAzLiBTdWNjZXNzCi0rICAgICAgICA0LiBpbmRleC1jaGVjayByZXR1cm5zIEZhbHNl IGFuZCBkZXRlY3RzIG1pc3NpbmcgbWF0Y2hpbmcgcnVsZQotKyAgICAgICAgNS4gaW5kZXgtY2hl Y2sgcmV0dXJucyBUcnVlIGFmdGVyIGZpeAotKyAgICAgICAgNi4gaW50ZWdlck9yZGVyaW5nTWF0 Y2ggaXMgcHJlc2VudAotKyAgICAgICAgNy4gU3VjY2VzcwotKyAgICAiIiIKLSsgICAgZnJvbSBs aWIzODkuY2xpX2N0bC5kYnRhc2tzIGltcG9ydCBkYnRhc2tzX2luZGV4X2NoZWNrCi0rICAgIGZy b20gbGliMzg5LmRzZWxkaWYgaW1wb3J0IERTRWxkaWYKLSsKLSsgICAgc3RhbmRhbG9uZSA9IHRv cG9sb2d5X3N0LnN0YW5kYWxvbmUKLSsKLSsgICAgbG9nLmluZm8oIlN0b3AgdGhlIHNlcnZlciIp Ci0rICAgIHN0YW5kYWxvbmUuc3RvcCgpCi0rCi0rICAgIGxvZy5pbmZvKCJSZW1vdmUgaW50ZWdl ck9yZGVyaW5nTWF0Y2ggZnJvbSBwYXJlbnRpZCBpbmRleCB1c2luZyBEU0VsZGlmIikKLSsgICAg ZHNlX2xkaWYgPSBEU0VsZGlmKHN0YW5kYWxvbmUpCi0rICAgIHBhcmVudGlkX2RuID0gImNuPXBh cmVudGlkLGNuPWluZGV4LGNuPXVzZXJSb290LGNuPWxkYm0gZGF0YWJhc2UsY249cGx1Z2lucyxj bj1jb25maWciCi0rCi0rICAgICMgQ2hlY2sgY3VycmVudCBtYXRjaGluZyBydWxlcwotKyAgICBt YXRjaGluZ19ydWxlcyA9IGRzZV9sZGlmLmdldChwYXJlbnRpZF9kbiwgIm5zTWF0Y2hpbmdSdWxl IikKLSsgICAgbG9nLmluZm8oZiJDdXJyZW50IG1hdGNoaW5nIHJ1bGVzOiB7bWF0Y2hpbmdfcnVs ZXN9IikKLSsKLSsgICAgIyBSZW1vdmUgaW50ZWdlck9yZGVyaW5nTWF0Y2ggaWYgcHJlc2VudAot KyAgICBpZiBtYXRjaGluZ19ydWxlczoKLSsgICAgICAgIGZvciBtciBpbiBtYXRjaGluZ19ydWxl czoKLSsgICAgICAgICAgICBpZiAiaW50ZWdlcm9yZGVyaW5nbWF0Y2giIGluIG1yLmxvd2VyKCk6 Ci0rICAgICAgICAgICAgICAgIGRzZV9sZGlmLmRlbGV0ZShwYXJlbnRpZF9kbiwgIm5zTWF0Y2hp bmdSdWxlIiwgbXIpCi0rICAgICAgICAgICAgICAgIGxvZy5pbmZvKGYiUmVtb3ZlZCBtYXRjaGlu ZyBydWxlOiB7bXJ9IikKLSsKLSsgICAgIyBWZXJpZnkgaXQgd2FzIHJlbW92ZWQKLSsgICAgZHNl X2xkaWYgPSBEU0VsZGlmKHN0YW5kYWxvbmUpICAjIFJlbG9hZAotKyAgICBtYXRjaGluZ19ydWxl cyA9IGRzZV9sZGlmLmdldChwYXJlbnRpZF9kbiwgIm5zTWF0Y2hpbmdSdWxlIikKLSsgICAgaWYg bWF0Y2hpbmdfcnVsZXM6Ci0rICAgICAgICBmb3IgbXIgaW4gbWF0Y2hpbmdfcnVsZXM6Ci0rICAg ICAgICAgICAgYXNzZXJ0ICJpbnRlZ2Vyb3JkZXJpbmdtYXRjaCIgbm90IGluIG1yLmxvd2VyKCks IFwKLSsgICAgICAgICAgICAgICAgZiJpbnRlZ2VyT3JkZXJpbmdNYXRjaCBzaG91bGQgYmUgcmVt b3ZlZCwgYnV0IGZvdW5kOiB7bXJ9IgotKyAgICBsb2cuaW5mbygiaW50ZWdlck9yZGVyaW5nTWF0 Y2ggcmVtb3ZlZCBmcm9tIHBhcmVudGlkIGluZGV4IikKLSsKLSsgICAgbG9nLmluZm8oIlJ1biBp bmRleC1jaGVjayB3aXRob3V0IC0tZml4IChzaG91bGQgZGV0ZWN0IGlzc3VlKSIpCi0rICAgIGFy Z3MgPSBGYWtlQXJncygpCi0rICAgIGFyZ3MuYmFja2VuZCA9ICJ1c2VyUm9vdCIKLSsgICAgYXJn cy5maXggPSBGYWxzZQotKwotKyAgICByZXN1bHQgPSBkYnRhc2tzX2luZGV4X2NoZWNrKHN0YW5k YWxvbmUsIHRvcG9sb2d5X3N0LmxvZ2NhcC5sb2csIGFyZ3MpCi0rICAgIGFzc2VydCByZXN1bHQg aXMgRmFsc2UsICJpbmRleC1jaGVjayBzaG91bGQgZGV0ZWN0IG1pc3NpbmcgbWF0Y2hpbmcgcnVs ZSIKLSsgICAgYXNzZXJ0IHRvcG9sb2d5X3N0LmxvZ2NhcC5jb250YWlucygibWlzc2luZyBpbnRl Z2VyT3JkZXJpbmdNYXRjaCIpCi0rICAgIHRvcG9sb2d5X3N0LmxvZ2NhcC5mbHVzaCgpCi0rCi0r ICAgIGxvZy5pbmZvKCJSdW4gaW5kZXgtY2hlY2sgd2l0aCAtLWZpeCIpCi0rICAgIGFyZ3MuZml4 ID0gVHJ1ZQotKyAgICByZXN1bHQgPSBkYnRhc2tzX2luZGV4X2NoZWNrKHN0YW5kYWxvbmUsIHRv cG9sb2d5X3N0LmxvZ2NhcC5sb2csIGFyZ3MpCi0rICAgIGFzc2VydCByZXN1bHQgaXMgVHJ1ZSwg ImluZGV4LWNoZWNrIC0tZml4IHNob3VsZCBzdWNjZWVkIgotKyAgICBhc3NlcnQgdG9wb2xvZ3lf c3QubG9nY2FwLmNvbnRhaW5zKCJpbnRlZ2VyT3JkZXJpbmdNYXRjaCIpCi0rICAgIHRvcG9sb2d5 X3N0LmxvZ2NhcC5mbHVzaCgpCi0rCi0rICAgIGxvZy5pbmZvKCJWZXJpZnkgaW50ZWdlck9yZGVy aW5nTWF0Y2ggd2FzIGFkZGVkIGJhY2siKQotKyAgICBkc2VfbGRpZiA9IERTRWxkaWYoc3RhbmRh bG9uZSkgICMgUmVsb2FkIHRvIGdldCBmcmVzaCBkYXRhCi0rICAgIG1hdGNoaW5nX3J1bGVzID0g ZHNlX2xkaWYuZ2V0KHBhcmVudGlkX2RuLCAibnNNYXRjaGluZ1J1bGUiKQotKyAgICBhc3NlcnQg bWF0Y2hpbmdfcnVsZXMgaXMgbm90IE5vbmUsICJuc01hdGNoaW5nUnVsZSBzaG91bGQgYmUgcHJl c2VudCIKLSsgICAgZm91bmRfaW50X29yZGVyID0gRmFsc2UKLSsgICAgZm9yIG1yIGluIG1hdGNo aW5nX3J1bGVzOgotKyAgICAgICAgaWYgImludGVnZXJvcmRlcmluZ21hdGNoIiBpbiBtci5sb3dl cigpOgotKyAgICAgICAgICAgIGZvdW5kX2ludF9vcmRlciA9IFRydWUKLSsgICAgICAgICAgICBi cmVhawotKyAgICBhc3NlcnQgZm91bmRfaW50X29yZGVyLCBmImludGVnZXJPcmRlcmluZ01hdGNo IHNob3VsZCBiZSBwcmVzZW50LCBnb3Q6IHttYXRjaGluZ19ydWxlc30iCi0rICAgIGxvZy5pbmZv KCJpbnRlZ2VyT3JkZXJpbmdNYXRjaCBzdWNjZXNzZnVsbHkgYWRkZWQgYmFjayIpCi0rCi0rICAg IGxvZy5pbmZvKCJTdGFydCB0aGUgc2VydmVyIikKLSsgICAgc3RhbmRhbG9uZS5zdGFydCgpCi0r Ci0rCi0rZGVmIHRlc3RfaW5kZXhfY2hlY2tfZml4ZXNfZGVmYXVsdF9hbmNlc3RvcmlkKHRvcG9s b2d5X3N0KToKLSsgICAgIiIiQ2hlY2sgaWYgZHNjdGwgaW5kZXgtY2hlY2sgLS1maXggcmVtb3Zl cyBhbmNlc3RvcmlkIGZyb20gZGVmYXVsdCBpbmRleGVzCi0rCi0rICAgIDppZDogN2QyZTVmMGEt MWI0Yy00ZTZkLTJmOGEtOWIwYzFkM2U0ZjVhCi0rICAgIDpzZXR1cDogU3RhbmRhbG9uZSBpbnN0 YW5jZQotKyAgICA6c3RlcHM6Ci0rICAgICAgICAxLiBDcmVhdGUgRFMgaW5zdGFuY2UKLSsgICAg ICAgIDIuIFN0b3AgdGhlIHNlcnZlcgotKyAgICAgICAgMy4gQWRkIGFuY2VzdG9yaWQgdG8gY249 ZGVmYXVsdCBpbmRleGVzIHVzaW5nIERTRWxkaWYKLSsgICAgICAgIDQuIFJ1biBkc2N0bCBpbmRl eC1jaGVjayAoc2hvdWxkIGRldGVjdCBpc3N1ZSkKLSsgICAgICAgIDUuIFJ1biBkc2N0bCBpbmRl eC1jaGVjayAtLWZpeAotKyAgICAgICAgNi4gVmVyaWZ5IGFuY2VzdG9yaWQgd2FzIHJlbW92ZWQg ZnJvbSBkZWZhdWx0IGluZGV4ZXMKLSsgICAgICAgIDcuIFN0YXJ0IHRoZSBzZXJ2ZXIKLSsgICAg OmV4cGVjdGVkcmVzdWx0czoKLSsgICAgICAgIDEuIFN1Y2Nlc3MKLSsgICAgICAgIDIuIFN1Y2Nl c3MKLSsgICAgICAgIDMuIFN1Y2Nlc3MKLSsgICAgICAgIDQuIGluZGV4LWNoZWNrIHJldHVybnMg RmFsc2UgYW5kIGRldGVjdHMgYW5jZXN0b3JpZCBpbiBkZWZhdWx0IGluZGV4ZXMKLSsgICAgICAg IDUuIGluZGV4LWNoZWNrIHJldHVybnMgVHJ1ZSBhZnRlciBmaXgKLSsgICAgICAgIDYuIGFuY2Vz dG9yaWQgbm8gbG9uZ2VyIGluIGRlZmF1bHQgaW5kZXhlcwotKyAgICAgICAgNy4gU3VjY2Vzcwot KyAgICAiIiIKLSsgICAgZnJvbSBsaWIzODkuY2xpX2N0bC5kYnRhc2tzIGltcG9ydCBkYnRhc2tz X2luZGV4X2NoZWNrCi0rICAgIGZyb20gbGliMzg5LmRzZWxkaWYgaW1wb3J0IERTRWxkaWYKLSsK LSsgICAgc3RhbmRhbG9uZSA9IHRvcG9sb2d5X3N0LnN0YW5kYWxvbmUKLSsKLSsgICAgbG9nLmlu Zm8oIlN0b3AgdGhlIHNlcnZlciIpCi0rICAgIHN0YW5kYWxvbmUuc3RvcCgpCi0rCi0rICAgIGxv Zy5pbmZvKCJBZGQgYW5jZXN0b3JpZCB0byBjbj1kZWZhdWx0IGluZGV4ZXMgdXNpbmcgRFNFbGRp ZiIpCi0rICAgIGRzZV9sZGlmID0gRFNFbGRpZihzdGFuZGFsb25lKQotKyAgICBhbmNlc3Rvcmlk X2RlZmF1bHRfZW50cnkgPSBbCi0rICAgICAgICAiZG46IGNuPWFuY2VzdG9yaWQsY249ZGVmYXVs dCBpbmRleGVzLGNuPWNvbmZpZyxjbj1sZGJtIGRhdGFiYXNlLGNuPXBsdWdpbnMsY249Y29uZmln XG4iLAotKyAgICAgICAgIm9iamVjdENsYXNzOiB0b3BcbiIsCi0rICAgICAgICAib2JqZWN0Q2xh c3M6IG5zSW5kZXhcbiIsCi0rICAgICAgICAiY246IGFuY2VzdG9yaWRcbiIsCi0rICAgICAgICAi bnNTeXN0ZW1JbmRleDogdHJ1ZVxuIiwKLSsgICAgICAgICJuc0luZGV4VHlwZTogZXFcbiIsCi0r ICAgIF0KLSsgICAgZHNlX2xkaWYuYWRkX2VudHJ5KGFuY2VzdG9yaWRfZGVmYXVsdF9lbnRyeSkK LSsKLSsgICAgIyBWZXJpZnkgaXQgd2FzIGFkZGVkCi0rICAgIGFuY2VzdG9yaWRfZGVmYXVsdF9k biA9ICJjbj1hbmNlc3RvcmlkLGNuPWRlZmF1bHQgaW5kZXhlcyxjbj1jb25maWcsY249bGRibSBk YXRhYmFzZSxjbj1wbHVnaW5zLGNuPWNvbmZpZyIKLSsgICAgZHNlX2xkaWYgPSBEU0VsZGlmKHN0 YW5kYWxvbmUpICAjIFJlbG9hZAotKyAgICBjbl92YWx1ZSA9IGRzZV9sZGlmLmdldChhbmNlc3Rv cmlkX2RlZmF1bHRfZG4sICJjbiIsIHNpbmdsZT1UcnVlKQotKyAgICBhc3NlcnQgY25fdmFsdWUg aXMgbm90IE5vbmUsICJGYWlsZWQgdG8gYWRkIGFuY2VzdG9yaWQgdG8gZGVmYXVsdCBpbmRleGVz IgotKyAgICBsb2cuaW5mbyhmIkFkZGVkIGFuY2VzdG9yaWQgdG8gZGVmYXVsdCBpbmRleGVzIHdp dGggY246IHtjbl92YWx1ZX0iKQotKwotKyAgICBsb2cuaW5mbygiUnVuIGluZGV4LWNoZWNrIHdp dGhvdXQgLS1maXggKHNob3VsZCBkZXRlY3QgaXNzdWUpIikKLSsgICAgYXJncyA9IEZha2VBcmdz KCkKLSsgICAgYXJncy5iYWNrZW5kID0gTm9uZSAgIyBDaGVjayBhbGwgYmFja2VuZHMgaW5jbHVk aW5nIGRlZmF1bHQgaW5kZXhlcwotKyAgICBhcmdzLmZpeCA9IEZhbHNlCi0rCi0rICAgIHJlc3Vs dCA9IGRidGFza3NfaW5kZXhfY2hlY2soc3RhbmRhbG9uZSwgdG9wb2xvZ3lfc3QubG9nY2FwLmxv ZywgYXJncykKLSsgICAgYXNzZXJ0IHJlc3VsdCBpcyBGYWxzZSwgImluZGV4LWNoZWNrIHNob3Vs ZCBkZXRlY3QgYW5jZXN0b3JpZCBpbiBkZWZhdWx0IGluZGV4ZXMiCi0rICAgIGFzc2VydCB0b3Bv bG9neV9zdC5sb2djYXAuY29udGFpbnMoImFuY2VzdG9yaWQgZm91bmQgaW4gY249ZGVmYXVsdCBp bmRleGVzIikKLSsgICAgdG9wb2xvZ3lfc3QubG9nY2FwLmZsdXNoKCkKLSsKLSsgICAgbG9nLmlu Zm8oIlJ1biBpbmRleC1jaGVjayB3aXRoIC0tZml4IikKLSsgICAgYXJncy5maXggPSBUcnVlCi0r ICAgIHJlc3VsdCA9IGRidGFza3NfaW5kZXhfY2hlY2soc3RhbmRhbG9uZSwgdG9wb2xvZ3lfc3Qu bG9nY2FwLmxvZywgYXJncykKLSsgICAgYXNzZXJ0IHJlc3VsdCBpcyBUcnVlLCAiaW5kZXgtY2hl Y2sgLS1maXggc2hvdWxkIHN1Y2NlZWQiCi0rICAgIGFzc2VydCB0b3BvbG9neV9zdC5sb2djYXAu Y29udGFpbnMoIlJlbW92ZWQgYW5jZXN0b3JpZCBmcm9tIGRlZmF1bHQgaW5kZXhlcyIpCi0rICAg IHRvcG9sb2d5X3N0LmxvZ2NhcC5mbHVzaCgpCi0rCi0rICAgIGxvZy5pbmZvKCJWZXJpZnkgYW5j ZXN0b3JpZCB3YXMgcmVtb3ZlZCBmcm9tIGRlZmF1bHQgaW5kZXhlcyIpCi0rICAgIGRzZV9sZGlm ID0gRFNFbGRpZihzdGFuZGFsb25lKSAgIyBSZWxvYWQgdG8gZ2V0IGZyZXNoIGRhdGEKLSsgICAg Y25fdmFsdWUgPSBkc2VfbGRpZi5nZXQoYW5jZXN0b3JpZF9kZWZhdWx0X2RuLCAiY24iLCBzaW5n bGU9VHJ1ZSkKLSsgICAgYXNzZXJ0IGNuX3ZhbHVlIGlzIE5vbmUsIGYiYW5jZXN0b3JpZCBzaG91 bGQgYmUgcmVtb3ZlZCBmcm9tIGRlZmF1bHQgaW5kZXhlcywgYnV0IGdvdDoge2NuX3ZhbHVlfSIK LSsgICAgbG9nLmluZm8oImFuY2VzdG9yaWQgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQgZnJvbSBkZWZh dWx0IGluZGV4ZXMiKQotKwotKyAgICBsb2cuaW5mbygiU3RhcnQgdGhlIHNlcnZlciIpCi0rICAg IHN0YW5kYWxvbmUuc3RhcnQoKQotKwotKwotK2RlZiB0ZXN0X2luZGV4X2NoZWNrX2ZpeGVzX211 bHRpcGxlX2lzc3Vlcyh0b3BvbG9neV9zdCk6Ci0rICAgICIiIkNoZWNrIGlmIGRzY3RsIGluZGV4 LWNoZWNrIC0tZml4IGhhbmRsZXMgbXVsdGlwbGUgaXNzdWVzIGF0IG9uY2UKLSsKLSsgICAgOmlk OiA4ZTNmNmExYi0yYzVkLTRmN2UtM2E5Yi0wYzFkMmU0ZjVhNmIKLSsgICAgOnNldHVwOiBTdGFu ZGFsb25lIGluc3RhbmNlCi0rICAgIDpzdGVwczoKLSsgICAgICAgIDEuIENyZWF0ZSBEUyBpbnN0 YW5jZQotKyAgICAgICAgMi4gU3RvcCB0aGUgc2VydmVyCi0rICAgICAgICAzLiBBZGQgbXVsdGlw bGUgaXNzdWVzOiBzY2FubGltaXQsIGFuY2VzdG9yaWQgY29uZmlnLCBtaXNzaW5nIG1hdGNoaW5n IHJ1bGUKLSsgICAgICAgIDQuIFJ1biBkc2N0bCBpbmRleC1jaGVjayAoc2hvdWxkIGRldGVjdCBh bGwgaXNzdWVzKQotKyAgICAgICAgNS4gUnVuIGRzY3RsIGluZGV4LWNoZWNrIC0tZml4Ci0rICAg ICAgICA2LiBWZXJpZnkgYWxsIGlzc3VlcyB3ZXJlIGZpeGVkCi0rICAgICAgICA3LiBSdW4gZHNj dGwgaW5kZXgtY2hlY2sgYWdhaW4gKHNob3VsZCBwYXNzKQotKyAgICAgICAgOC4gU3RhcnQgdGhl IHNlcnZlcgotKyAgICA6ZXhwZWN0ZWRyZXN1bHRzOgotKyAgICAgICAgMS4gU3VjY2VzcwotKyAg ICAgICAgMi4gU3VjY2VzcwotKyAgICAgICAgMy4gU3VjY2VzcwotKyAgICAgICAgNC4gaW5kZXgt Y2hlY2sgcmV0dXJucyBGYWxzZSBhbmQgZGV0ZWN0cyBhbGwgaXNzdWVzCi0rICAgICAgICA1LiBp bmRleC1jaGVjayByZXR1cm5zIFRydWUgYWZ0ZXIgZml4Ci0rICAgICAgICA2LiBBbGwgaXNzdWVz IHJlc29sdmVkCi0rICAgICAgICA3LiBpbmRleC1jaGVjayByZXR1cm5zIFRydWUgKG5vIGlzc3Vl cykKLSsgICAgICAgIDguIFN1Y2Nlc3MKLSsgICAgIiIiCi0rICAgIGZyb20gbGliMzg5LmNsaV9j dGwuZGJ0YXNrcyBpbXBvcnQgZGJ0YXNrc19pbmRleF9jaGVjawotKyAgICBmcm9tIGxpYjM4OS5k c2VsZGlmIGltcG9ydCBEU0VsZGlmCi0rCi0rICAgIHN0YW5kYWxvbmUgPSB0b3BvbG9neV9zdC5z dGFuZGFsb25lCi0rCi0rICAgIGxvZy5pbmZvKCJTdG9wIHRoZSBzZXJ2ZXIiKQotKyAgICBzdGFu ZGFsb25lLnN0b3AoKQotKwotKyAgICBkc2VfbGRpZiA9IERTRWxkaWYoc3RhbmRhbG9uZSkKLSsg ICAgcGFyZW50aWRfZG4gPSAiY249cGFyZW50aWQsY249aW5kZXgsY249dXNlclJvb3QsY249bGRi bSBkYXRhYmFzZSxjbj1wbHVnaW5zLGNuPWNvbmZpZyIKLSsgICAgYW5jZXN0b3JpZF9kbiA9ICJj bj1hbmNlc3RvcmlkLGNuPWluZGV4LGNuPXVzZXJSb290LGNuPWxkYm0gZGF0YWJhc2UsY249cGx1 Z2lucyxjbj1jb25maWciCi0rCi0rICAgIGxvZy5pbmZvKCJBZGQgaXNzdWUgMTogbnNJbmRleElE TGlzdFNjYW5MaW1pdCB0byBwYXJlbnRpZCIpCi0rICAgIGRzZV9sZGlmLmFkZChwYXJlbnRpZF9k biwgIm5zSW5kZXhJRExpc3RTY2FuTGltaXQiLCAiNDAwMCIpCi0rCi0rICAgIGxvZy5pbmZvKCJB ZGQgaXNzdWUgMjogYW5jZXN0b3JpZCBpbmRleCBjb25maWcgZW50cnkiKQotKyAgICBhbmNlc3Rv cmlkX2VudHJ5ID0gWwotKyAgICAgICAgZiJkbjoge2FuY2VzdG9yaWRfZG59XG4iLAotKyAgICAg ICAgIm9iamVjdENsYXNzOiB0b3BcbiIsCi0rICAgICAgICAib2JqZWN0Q2xhc3M6IG5zSW5kZXhc biIsCi0rICAgICAgICAiY246IGFuY2VzdG9yaWRcbiIsCi0rICAgICAgICAibnNTeXN0ZW1JbmRl eDogdHJ1ZVxuIiwKLSsgICAgICAgICJuc0luZGV4VHlwZTogZXFcbiIsCi0rICAgIF0KLSsgICAg ZHNlX2xkaWYuYWRkX2VudHJ5KGFuY2VzdG9yaWRfZW50cnkpCi0rCi0rICAgIGxvZy5pbmZvKCJB ZGQgaXNzdWUgMzogUmVtb3ZlIGludGVnZXJPcmRlcmluZ01hdGNoIGZyb20gcGFyZW50aWQiKQot KyAgICBkc2VfbGRpZiA9IERTRWxkaWYoc3RhbmRhbG9uZSkgICMgUmVsb2FkCi0rICAgIG1hdGNo aW5nX3J1bGVzID0gZHNlX2xkaWYuZ2V0KHBhcmVudGlkX2RuLCAibnNNYXRjaGluZ1J1bGUiKQot KyAgICBpZiBtYXRjaGluZ19ydWxlczoKLSsgICAgICAgIGZvciBtciBpbiBtYXRjaGluZ19ydWxl czoKLSsgICAgICAgICAgICBpZiAiaW50ZWdlcm9yZGVyaW5nbWF0Y2giIGluIG1yLmxvd2VyKCk6 Ci0rICAgICAgICAgICAgICAgIGRzZV9sZGlmLmRlbGV0ZShwYXJlbnRpZF9kbiwgIm5zTWF0Y2hp bmdSdWxlIiwgbXIpCi0rCi0rICAgIGxvZy5pbmZvKCJSdW4gaW5kZXgtY2hlY2sgd2l0aG91dCAt LWZpeCAoc2hvdWxkIGRldGVjdCBhbGwgaXNzdWVzKSIpCi0rICAgIGFyZ3MgPSBGYWtlQXJncygp Ci0rICAgIGFyZ3MuYmFja2VuZCA9ICJ1c2VyUm9vdCIKLSsgICAgYXJncy5maXggPSBGYWxzZQot KwotKyAgICByZXN1bHQgPSBkYnRhc2tzX2luZGV4X2NoZWNrKHN0YW5kYWxvbmUsIHRvcG9sb2d5 X3N0LmxvZ2NhcC5sb2csIGFyZ3MpCi0rICAgIGFzc2VydCByZXN1bHQgaXMgRmFsc2UsICJpbmRl eC1jaGVjayBzaG91bGQgZGV0ZWN0IG11bHRpcGxlIGlzc3VlcyIKLSsgICAgIyBDaGVjayB0aGF0 IG11bHRpcGxlIGlzc3VlcyB3ZXJlIGRldGVjdGVkCi0rICAgIGFzc2VydCB0b3BvbG9neV9zdC5s b2djYXAuY29udGFpbnMoIm5zSW5kZXhJRExpc3RTY2FuTGltaXQiKQotKyAgICBhc3NlcnQgdG9w b2xvZ3lfc3QubG9nY2FwLmNvbnRhaW5zKCJhbmNlc3RvcmlkIikKLSsgICAgdG9wb2xvZ3lfc3Qu bG9nY2FwLmZsdXNoKCkKLSsKLSsgICAgbG9nLmluZm8oIlJ1biBpbmRleC1jaGVjayB3aXRoIC0t Zml4IikKLSsgICAgYXJncy5maXggPSBUcnVlCi0rICAgIHJlc3VsdCA9IGRidGFza3NfaW5kZXhf Y2hlY2soc3RhbmRhbG9uZSwgdG9wb2xvZ3lfc3QubG9nY2FwLmxvZywgYXJncykKLSsgICAgYXNz ZXJ0IHJlc3VsdCBpcyBUcnVlLCAiaW5kZXgtY2hlY2sgLS1maXggc2hvdWxkIHN1Y2NlZWQiCi0r ICAgIGFzc2VydCB0b3BvbG9neV9zdC5sb2djYXAuY29udGFpbnMoIkFsbCBpc3N1ZXMgZml4ZWQi KQotKyAgICB0b3BvbG9neV9zdC5sb2djYXAuZmx1c2goKQotKwotKyAgICBsb2cuaW5mbygiVmVy aWZ5IGFsbCBpc3N1ZXMgd2VyZSBmaXhlZCIpCi0rICAgIGRzZV9sZGlmID0gRFNFbGRpZihzdGFu ZGFsb25lKSAgIyBSZWxvYWQKLSsKLSsgICAgIyBDaGVjayBzY2FubGltaXQgcmVtb3ZlZAotKyAg ICBzY2FubGltaXQgPSBkc2VfbGRpZi5nZXQocGFyZW50aWRfZG4sICJuc0luZGV4SURMaXN0U2Nh bkxpbWl0Iiwgc2luZ2xlPVRydWUpCi0rICAgIGFzc2VydCBzY2FubGltaXQgaXMgTm9uZSwgZiJu c0luZGV4SURMaXN0U2NhbkxpbWl0IHNob3VsZCBiZSByZW1vdmVkLCBnb3Q6IHtzY2FubGltaXR9 IgotKwotKyAgICAjIENoZWNrIGFuY2VzdG9yaWQgY29uZmlnIHJlbW92ZWQKLSsgICAgY25fdmFs dWUgPSBkc2VfbGRpZi5nZXQoYW5jZXN0b3JpZF9kbiwgImNuIiwgc2luZ2xlPVRydWUpCi0rICAg IGFzc2VydCBjbl92YWx1ZSBpcyBOb25lLCBmImFuY2VzdG9yaWQgY29uZmlnIHNob3VsZCBiZSBy ZW1vdmVkLCBnb3Q6IHtjbl92YWx1ZX0iCi0rCi0rICAgICMgQ2hlY2sgbWF0Y2hpbmcgcnVsZSBh ZGRlZCBiYWNrCi0rICAgIG1hdGNoaW5nX3J1bGVzID0gZHNlX2xkaWYuZ2V0KHBhcmVudGlkX2Ru LCAibnNNYXRjaGluZ1J1bGUiKQotKyAgICBmb3VuZF9pbnRfb3JkZXIgPSBGYWxzZQotKyAgICBp ZiBtYXRjaGluZ19ydWxlczoKLSsgICAgICAgIGZvciBtciBpbiBtYXRjaGluZ19ydWxlczoKLSsg ICAgICAgICAgICBpZiAiaW50ZWdlcm9yZGVyaW5nbWF0Y2giIGluIG1yLmxvd2VyKCk6Ci0rICAg ICAgICAgICAgICAgIGZvdW5kX2ludF9vcmRlciA9IFRydWUKLSsgICAgICAgICAgICAgICAgYnJl YWsKLSsgICAgYXNzZXJ0IGZvdW5kX2ludF9vcmRlciwgZiJpbnRlZ2VyT3JkZXJpbmdNYXRjaCBz aG91bGQgYmUgcHJlc2VudCwgZ290OiB7bWF0Y2hpbmdfcnVsZXN9IgotKwotKyAgICBsb2cuaW5m bygiQWxsIGlzc3VlcyB2ZXJpZmllZCBhcyBmaXhlZCIpCi0rCi0rICAgIGxvZy5pbmZvKCJSdW4g aW5kZXgtY2hlY2sgYWdhaW4gdG8gY29uZmlybSBhbGwgY2xlYXIiKQotKyAgICBhcmdzLmZpeCA9 IEZhbHNlCi0rICAgIHJlc3VsdCA9IGRidGFza3NfaW5kZXhfY2hlY2soc3RhbmRhbG9uZSwgdG9w b2xvZ3lfc3QubG9nY2FwLmxvZywgYXJncykKLSsgICAgYXNzZXJ0IHJlc3VsdCBpcyBUcnVlLCAi aW5kZXgtY2hlY2sgc2hvdWxkIHBhc3MgYWZ0ZXIgZml4IgotKyAgICBhc3NlcnQgdG9wb2xvZ3lf c3QubG9nY2FwLmNvbnRhaW5zKCJBbGwgY2hlY2tzIHBhc3NlZCIpCi0rICAgIHRvcG9sb2d5X3N0 LmxvZ2NhcC5mbHVzaCgpCi0rCi0rICAgIGxvZy5pbmZvKCJTdGFydCB0aGUgc2VydmVyIikKLSsg ICAgc3RhbmRhbG9uZS5zdGFydCgpCi0rCi0rCi0gaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoK LSAgICAgIyBSdW4gaXNvbGF0ZWQKLSAgICAgIyAtcyBmb3IgREVCVUcgbW9kZQotZGlmZiAtLWdp dCBhL3JwbS8zODktZHMtYmFzZS5zcGVjLmluIGIvcnBtLzM4OS1kcy1iYXNlLnNwZWMuaW4KLWlu ZGV4IDUxYmZkN2U3Ny4uYWUzNTlhYjZiIDEwMDY0NAotLS0tIGEvcnBtLzM4OS1kcy1iYXNlLnNw ZWMuaW4KLSsrKyBiL3JwbS8zODktZHMtYmFzZS5zcGVjLmluCi1AQCAtNjI4LDQyICs2MjgsNDUg QEAgaWYgISBnZXRlbnQgcGFzc3dkICRVU0VSTkFNRSA+L2Rldi9udWxsIDsgdGhlbgotIGZpCi0g Ci0gIyBSZWxvYWQgb3VyIHN5c2N0bCBiZWZvcmUgd2UgcmVzdGFydCAoaWYgd2UgY2FuKQotLXN5 c2N0bCAtLXN5c3RlbSAmPiAkb3V0cHV0OyB0cnVlCi0rc3lzY3RsIC0tc3lzdGVtICY+ICIkb3V0 cHV0IjsgdHJ1ZQotIAotLSMgR2F0aGVyIHRoZSBydW5uaW5nIGluc3RhbmNlcyBzbyB3ZSBjYW4g cmVzdGFydCB0aGVtCi0rIyBHYXRoZXIgcnVubmluZyBpbnN0YW5jZXMsIHN0b3AgdGhlbSwgcnVu IGluZGV4LWNoZWNrLCB0aGVuIHJlc3RhcnQKLSBpbnN0YmFzZT0iJXtfc3lzY29uZmRpcn0vJXtw a2duYW1lfSIKLStpbnN0YW5jZXM9IiIKLSBuaW5zdD0wCi0tZm9yIGRpciBpbiAkaW5zdGJhc2Uv c2xhcGQtKiA7IGRvCi0tICAgIGVjaG8gZGlyID0gJGRpciA+PiAkb3V0cHV0IDI+JjEgfHwgOgot KwotK2ZvciBkaXIgaW4gIiRpbnN0YmFzZSIvc2xhcGQtKiA7IGRvCi0rICAgIGVjaG8gImRpciA9 ICRkaXIiID4+ICIkb3V0cHV0IiAyPiYxIHx8IDoKLSAgICAgaWYgWyAhIC1kICIkZGlyIiBdIDsg dGhlbiBjb250aW51ZSA7IGZpCi0gICAgIGNhc2UgIiRkaXIiIGluICoucmVtb3ZlZCkgY29udGlu dWUgOzsgZXNhYwotLSAgICBiYXNlbmFtZT1gYmFzZW5hbWUgJGRpcmAKLS0gICAgaW5zdD0iJXtw a2duYW1lfUBgZWNobyAkYmFzZW5hbWUgfCBzZWQgLWUgJ3Mvc2xhcGQtLy9nJ2AiCi0tICAgIGVj aG8gZm91bmQgaW5zdGFuY2UgJGluc3QgLSBnZXR0aW5nIHN0YXR1cyAgPj4gJG91dHB1dCAyPiYx IHx8IDoKLS0gICAgaWYgL2Jpbi9zeXN0ZW1jdGwgLXEgaXMtYWN0aXZlICRpbnN0IDsgdGhlbgot LSAgICAgICBlY2hvIGluc3RhbmNlICRpbnN0IGlzIHJ1bm5pbmcgPj4gJG91dHB1dCAyPiYxIHx8 IDoKLSsgICAgYmFzZW5hbWU9JChiYXNlbmFtZSAiJGRpciIpCi0rICAgIGluc3Q9IiV7cGtnbmFt ZX1AJHtiYXNlbmFtZSNzbGFwZC19IgotKyAgICBpbnN0X25hbWU9IiR7YmFzZW5hbWUjc2xhcGQt fSIKLSsgICAgZWNobyAiZm91bmQgaW5zdGFuY2UgJGluc3QgLSBnZXR0aW5nIHN0YXR1cyIgPj4g IiRvdXRwdXQiIDI+JjEgfHwgOgotKyAgICBpZiAvYmluL3N5c3RlbWN0bCAtcSBpcy1hY3RpdmUg IiRpbnN0IiA7IHRoZW4KLSsgICAgICAgZWNobyAiaW5zdGFuY2UgJGluc3QgaXMgcnVubmluZyAt IHN0b3BwaW5nIGZvciB1cGdyYWRlIiA+PiAiJG91dHB1dCIgMj4mMSB8fCA6Ci0gICAgICAgIGlu c3RhbmNlcz0iJGluc3RhbmNlcyAkaW5zdCIKLSsgICAgICAgL2Jpbi9zeXN0ZW1jdGwgc3RvcCAi JGluc3QiID4+ICIkb3V0cHV0IiAyPiYxIHx8IDoKLSAgICAgZWxzZQotLSAgICAgICBlY2hvIGlu c3RhbmNlICRpbnN0IGlzIG5vdCBydW5uaW5nID4+ICRvdXRwdXQgMj4mMSB8fCA6Ci0rICAgICAg IGVjaG8gImluc3RhbmNlICRpbnN0IGlzIG5vdCBydW5uaW5nIiA+PiAiJG91dHB1dCIgMj4mMSB8 fCA6Ci0gICAgIGZpCi0tICAgIG5pbnN0PWBleHByICRuaW5zdCArIDFgCi0rICAgICMgUnVuIGlu ZGV4LWNoZWNrIG9uIGFsbCBpbnN0YW5jZXMgKHJ1bm5pbmcgb3Igbm90KQotKyAgICAjIFRoaXMg Zml4ZXMgaW5kZXggb3JkZXJpbmcgbWlzbWF0Y2hlcyBmcm9tIG9sZGVyIHZlcnNpb25zCi0rICAg IGRzY3RsICIkaW5zdF9uYW1lIiBpbmRleC1jaGVjayAtLWZpeCA+PiAiJG91dHB1dDIiIDI+JjEg fHwgOgotKyAgICBuaW5zdD0kKChuaW5zdCArIDEpKQotIGRvbmUKLSsKLSBpZiBbICRuaW5zdCAt ZXEgMCBdIDsgdGhlbgotLSAgICBlY2hvIG5vIGluc3RhbmNlcyB0byB1cGdyYWRlID4+ICRvdXRw dXQgMj4mMSB8fCA6Ci0tICAgIGV4aXQgMCAjIGhhdmUgbm8gaW5zdGFuY2VzIHRvIHVwZ3JhZGUg LSBqdXN0IHNraXAgdGhlIHJlc3QKLS1lbHNlCi0tICAgICMgcmVzdGFydCBydW5uaW5nIGluc3Rh bmNlcwotLSAgICBlY2hvIHNodXR0aW5nIGRvd24gYWxsIGluc3RhbmNlcyAuIC4gLiA+PiAkb3V0 cHV0IDI+JjEgfHwgOgotLSAgICBmb3IgaW5zdCBpbiAkaW5zdGFuY2VzIDsgZG8KLS0gICAgICAg IGVjaG8gc3RvcHBpbmcgaW5zdGFuY2UgJGluc3QgPj4gJG91dHB1dCAyPiYxIHx8IDoKLS0gICAg ICAgIC9iaW4vc3lzdGVtY3RsIHN0b3AgJGluc3QgPj4gJG91dHB1dCAyPiYxIHx8IDoKLS0gICAg ZG9uZQotLSAgICBmb3IgaW5zdCBpbiAkaW5zdGFuY2VzIDsgZG8KLS0gICAgICAgIGVjaG8gc3Rh cnRpbmcgaW5zdGFuY2UgJGluc3QgPj4gJG91dHB1dCAyPiYxIHx8IDoKLS0gICAgICAgIC9iaW4v c3lzdGVtY3RsIHN0YXJ0ICRpbnN0ID4+ICRvdXRwdXQgMj4mMSB8fCA6Ci0tICAgIGRvbmUKLSsg ICAgZWNobyAibm8gaW5zdGFuY2VzIHRvIHVwZ3JhZGUiID4+ICIkb3V0cHV0IiAyPiYxIHx8IDoK LSsgICAgZXhpdCAwCi0gZmkKLSAKLSsjIFJlc3RhcnQgcHJldmlvdXNseSBydW5uaW5nIGluc3Rh bmNlcwotK2ZvciBpbnN0IGluICRpbnN0YW5jZXMgOyBkbwotKyAgICBlY2hvICJzdGFydGluZyBp bnN0YW5jZSAkaW5zdCIgPj4gIiRvdXRwdXQiIDI+JjEgfHwgOgotKyAgICAvYmluL3N5c3RlbWN0 bCBzdGFydCAiJGluc3QiID4+ICIkb3V0cHV0IiAyPiYxIHx8IDoKLStkb25lCi0rCi0gCi0gJXBy ZXVuCi0gaWYgWyAkMSAtZXEgMCBdOyB0aGVuICMgRmluYWwgcmVtb3ZhbAotZGlmZiAtLWdpdCBh L3NyYy9saWIzODkvbGliMzg5L2NsaV9jdGwvZGJ0YXNrcy5weSBiL3NyYy9saWIzODkvbGliMzg5 L2NsaV9jdGwvZGJ0YXNrcy5weQotaW5kZXggODU2NjM5NjcyLi4xNmRhOTY2ZDEgMTAwNjQ0Ci0t LS0gYS9zcmMvbGliMzg5L2xpYjM4OS9jbGlfY3RsL2RidGFza3MucHkKLSsrKyBiL3NyYy9saWIz ODkvbGliMzg5L2NsaV9jdGwvZGJ0YXNrcy5weQotQEAgLTcsMTIgKzcsMjQgQEAKLSAjIFNlZSBM SUNFTlNFIGZvciBkZXRhaWxzLgotICMgLS0tIEVORCBDT1BZUklHSFQgQkxPQ0sgLS0tCi0gCi0r aW1wb3J0IGdsb2IKLSBpbXBvcnQgb3MKLStpbXBvcnQgcmUKLStpbXBvcnQgc3VicHJvY2Vzcwot K2Zyb20gZW51bSBpbXBvcnQgRW51bQotIGZyb20gbGliMzg5Ll9jb25zdGFudHMgaW1wb3J0IFRh c2tXYXJuaW5nCi0gZnJvbSBsaWIzODkuY2xpX2Jhc2UgaW1wb3J0IEN1c3RvbUhlbHBGb3JtYXR0 ZXIKLStmcm9tIGxpYjM4OS5kc2VsZGlmIGltcG9ydCBEU0VsZGlmCi0gZnJvbSBwYXRobGliIGlt cG9ydCBQYXRoCi0gCi0gCi0rY2xhc3MgSW5kZXhPcmRlcmluZyhFbnVtKToKLSsgICAgIiIiUmVw cmVzZW50cyB0aGUgb3JkZXJpbmcgdHlwZSBvZiBhbiBpbmRleC4iIiIKLSsgICAgSU5URUdFUiA9 ICJpbnRlZ2VyIgotKyAgICBMRVhJQ09HUkFQSElDID0gImxleGljb2dyYXBoaWMiCi0rICAgIFVO S05PV04gPSAidW5rbm93biIKLSsKLSsKLSBkZWYgZGJ0YXNrc19kYjJpbmRleChpbnN0LCBsb2cs IGFyZ3MpOgotICAgICBydG4gPSBGYWxzZQotICAgICBpZiBub3QgYXJncy5iYWNrZW5kOgotQEAg LTEyNiw2ICsxMzgsMzg3IEBAIGRlZiBkYnRhc2tzX3ZlcmlmeShpbnN0LCBsb2csIGFyZ3MpOgot ICAgICAgICAgbG9nLmluZm8oImRidmVyaWZ5IHN1Y2Nlc3NmdWwiKQotIAotIAotK2RlZiBfZ2V0 X2RiX2Rpcihkc2VfbGRpZik6Ci0rICAgICIiIkdldCB0aGUgZGF0YWJhc2UgZGlyZWN0b3J5Lgot KwotKyAgICBBcmdzOgotKyAgICAgICAgZHNlX2xkaWY6IERTRWxkaWYgaW5zdGFuY2UuCi0rCi0r ICAgIFJldHVybnM6Ci0rICAgICAgICBQYXRoIHRvIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnksIG9y IE5vbmUgaWYgbm90IGZvdW5kLgotKyAgICAiIiIKLSsgICAgdHJ5OgotKyAgICAgICAgZGJfZGly ID0gZHNlX2xkaWYuZ2V0KAotKyAgICAgICAgICAgICJjbj1jb25maWcsY249bGRibSBkYXRhYmFz ZSxjbj1wbHVnaW5zLGNuPWNvbmZpZyIsCi0rICAgICAgICAgICAgIm5zc2xhcGQtZGlyZWN0b3J5 IiwKLSsgICAgICAgICAgICBzaW5nbGU9VHJ1ZSwKLSsgICAgICAgICkKLSsgICAgICAgIHJldHVy biBkYl9kaXIKLSsgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUeXBlRXJyb3IpOgotKyAgICAgICAg cGFzcwotKyAgICByZXR1cm4gTm9uZQotKwotKwotKwotK2RlZiBfaGFzX2ludGVnZXJfb3JkZXJp bmdfbWF0Y2goZHNlX2xkaWYsIGJhY2tlbmQsIGluZGV4X25hbWUpOgotKyAgICAiIiJDaGVjayBp ZiBhbiBpbmRleCBoYXMgaW50ZWdlck9yZGVyaW5nTWF0Y2ggY29uZmlndXJlZCBpbiBEU0UuCi0r Ci0rICAgIEFyZ3M6Ci0rICAgICAgICBkc2VfbGRpZjogRFNFbGRpZiBpbnN0YW5jZS4KLSsgICAg ICAgIGJhY2tlbmQ6IEJhY2tlbmQgbmFtZS4KLSsgICAgICAgIGluZGV4X25hbWU6IE5hbWUgb2Yg dGhlIGluZGV4IHRvIGNoZWNrLgotKwotKyAgICBSZXR1cm5zOgotKyAgICAgICAgVHJ1ZSBpZiBp bnRlZ2VyT3JkZXJpbmdNYXRjaCBpcyBjb25maWd1cmVkLCBGYWxzZSBvdGhlcndpc2UuCi0rICAg ICIiIgotKyAgICBpbmRleF9kbiA9ICJjbj17fSxjbj1pbmRleCxjbj17fSxjbj1sZGJtIGRhdGFi YXNlLGNuPXBsdWdpbnMsY249Y29uZmlnIi5mb3JtYXQoCi0rICAgICAgICBpbmRleF9uYW1lLCBi YWNrZW5kCi0rICAgICkKLSsgICAgbWF0Y2hpbmdfcnVsZXMgPSBkc2VfbGRpZi5nZXQoaW5kZXhf ZG4sICJuc01hdGNoaW5nUnVsZSIsIGxvd2VyPVRydWUpCi0rICAgIGlmIG1hdGNoaW5nX3J1bGVz OgotKyAgICAgICAgcmV0dXJuIGFueShtci5sb3dlcigpID09ICJpbnRlZ2Vyb3JkZXJpbmdtYXRj aCIgZm9yIG1yIGluIG1hdGNoaW5nX3J1bGVzKQotKyAgICByZXR1cm4gRmFsc2UKLSsKLSsKLStk ZWYgX2hhc19pbmRleF9zY2FuX2xpbWl0KGRzZV9sZGlmLCBiYWNrZW5kLCBpbmRleF9uYW1lKToK LSsgICAgIiIiQ2hlY2sgaWYgYW4gaW5kZXggaGFzIG5zSW5kZXhJRExpc3RTY2FuTGltaXQgY29u ZmlndXJlZC4KLSsKLSsgICAgQXJnczoKLSsgICAgICAgIGRzZV9sZGlmOiBEU0VsZGlmIGluc3Rh bmNlLgotKyAgICAgICAgYmFja2VuZDogQmFja2VuZCBuYW1lLgotKyAgICAgICAgaW5kZXhfbmFt ZTogTmFtZSBvZiB0aGUgaW5kZXggdG8gY2hlY2suCi0rCi0rICAgIFJldHVybnM6Ci0rICAgICAg ICBUcnVlIGlmIG5zSW5kZXhJRExpc3RTY2FuTGltaXQgaXMgY29uZmlndXJlZCwgRmFsc2Ugb3Ro ZXJ3aXNlLgotKyAgICAiIiIKLSsgICAgaW5kZXhfZG4gPSAiY249e30sY249aW5kZXgsY249e30s Y249bGRibSBkYXRhYmFzZSxjbj1wbHVnaW5zLGNuPWNvbmZpZyIuZm9ybWF0KAotKyAgICAgICAg aW5kZXhfbmFtZSwgYmFja2VuZAotKyAgICApCi0rICAgIHNjYW5fbGltaXQgPSBkc2VfbGRpZi5n ZXQoaW5kZXhfZG4sICJuc0luZGV4SURMaXN0U2NhbkxpbWl0IikKLSsgICAgcmV0dXJuIHNjYW5f bGltaXQgaXMgbm90IE5vbmUKLSsKLSsKLStkZWYgX2luZGV4X2NvbmZpZ19leGlzdHMoZHNlX2xk aWYsIGJhY2tlbmQsIGluZGV4X25hbWUpOgotKyAgICAiIiJDaGVjayBpZiBhbiBpbmRleCBjb25m aWd1cmF0aW9uIGVudHJ5IGV4aXN0cyBpbiBEU0UuCi0rCi0rICAgIEFyZ3M6Ci0rICAgICAgICBk c2VfbGRpZjogRFNFbGRpZiBpbnN0YW5jZS4KLSsgICAgICAgIGJhY2tlbmQ6IEJhY2tlbmQgbmFt ZS4KLSsgICAgICAgIGluZGV4X25hbWU6IE5hbWUgb2YgdGhlIGluZGV4IHRvIGNoZWNrLgotKwot KyAgICBSZXR1cm5zOgotKyAgICAgICAgVHJ1ZSBpZiB0aGUgaW5kZXggY29uZmlnIGVudHJ5IGV4 aXN0cywgRmFsc2Ugb3RoZXJ3aXNlLgotKyAgICAiIiIKLSsgICAgaW5kZXhfZG4gPSAiY249e30s Y249aW5kZXgsY249e30sY249bGRibSBkYXRhYmFzZSxjbj1wbHVnaW5zLGNuPWNvbmZpZyIuZm9y bWF0KAotKyAgICAgICAgaW5kZXhfbmFtZSwgYmFja2VuZAotKyAgICApCi0rICAgIHRyeToKLSsg ICAgICAgIGNuID0gZHNlX2xkaWYuZ2V0KGluZGV4X2RuLCAiY24iKQotKyAgICAgICAgcmV0dXJu IGNuIGlzIG5vdCBOb25lCi0rICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgS2V5RXJyb3IpOgotKyAg ICAgICAgcmV0dXJuIEZhbHNlCi0rCi0rCi0rZGVmIF9kZWZhdWx0X2luZGV4X2V4aXN0cyhkc2Vf bGRpZiwgaW5kZXhfbmFtZSk6Ci0rICAgICIiIkNoZWNrIGlmIGFuIGluZGV4IGV4aXN0cyBpbiBj bj1kZWZhdWx0IGluZGV4ZXMuCi0rCi0rICAgIEFyZ3M6Ci0rICAgICAgICBkc2VfbGRpZjogRFNF bGRpZiBpbnN0YW5jZS4KLSsgICAgICAgIGluZGV4X25hbWU6IE5hbWUgb2YgdGhlIGluZGV4IHRv IGNoZWNrLgotKwotKyAgICBSZXR1cm5zOgotKyAgICAgICAgVHJ1ZSBpZiB0aGUgaW5kZXggZXhp c3RzIGluIGRlZmF1bHQgaW5kZXhlcywgRmFsc2Ugb3RoZXJ3aXNlLgotKyAgICAiIiIKLSsgICAg aW5kZXhfZG4gPSAiY249e30sY249ZGVmYXVsdCBpbmRleGVzLGNuPWNvbmZpZyxjbj1sZGJtIGRh dGFiYXNlLGNuPXBsdWdpbnMsY249Y29uZmlnIi5mb3JtYXQoCi0rICAgICAgICBpbmRleF9uYW1l Ci0rICAgICkKLSsgICAgdHJ5OgotKyAgICAgICAgY24gPSBkc2VfbGRpZi5nZXQoaW5kZXhfZG4s ICJjbiIpCi0rICAgICAgICByZXR1cm4gY24gaXMgbm90IE5vbmUKLSsgICAgZXhjZXB0IChWYWx1 ZUVycm9yLCBLZXlFcnJvcik6Ci0rICAgICAgICByZXR1cm4gRmFsc2UKLSsKLSsKLStkZWYgX2No ZWNrX2Rpc2tfb3JkZXJpbmcoZGJfZGlyLCBiYWNrZW5kLCBpbmRleF9uYW1lLCBkYnNjYW5fcGF0 aCwgaXNfbWRiLCBsb2cpOgotKyAgICAiIiJDaGVjayBpZiBpbmRleCBvbiBkaXNrIHVzZXMgbGV4 aWNvZ3JhcGhpYyBvciBpbnRlZ2VyIG9yZGVyaW5nLgotKwotKyAgICBBcmdzOgotKyAgICAgICAg ZGJfZGlyOiBQYXRoIHRvIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkuCi0rICAgICAgICBiYWNrZW5k OiBCYWNrZW5kIG5hbWUuCi0rICAgICAgICBpbmRleF9uYW1lOiBOYW1lIG9mIHRoZSBpbmRleCB0 byBjaGVjay4KLSsgICAgICAgIGRic2Nhbl9wYXRoOiBQYXRoIHRvIHRoZSBkYnNjYW4gYmluYXJ5 LgotKyAgICAgICAgaXNfbWRiOiBUcnVlIGlmIHVzaW5nIE1EQiBiYWNrZW5kLgotKyAgICAgICAg bG9nOiBMb2dnZXIgaW5zdGFuY2UuCi0rCi0rICAgIFJldHVybnM6Ci0rICAgICAgICBJbmRleE9y ZGVyaW5nOiBUaGUgZGV0ZWN0ZWQgb3JkZXJpbmcgdHlwZS4KLSsgICAgIiIiCi0rICAgIGlmIGlz X21kYjoKLSsgICAgICAgICMgTURCIHVzZXMgcHNldWRvLXBhdGhzOiBkYl9kaXIvYmFja2VuZC9p bmRleC5kYgotKyAgICAgICAgIyBkYnNjYW4gYWNjZXNzZXMgaW5kZXhlcyB2aWEgcGF0aHMgbGlr ZTogL3Zhci9saWIvZGlyc3J2L3NsYXBkLXh4eC9kYi91c2Vycm9vdC9wYXJlbnRpZC5kYgotKyAg ICAgICAgaW5kZXhfZmlsZSA9IG9zLnBhdGguam9pbihkYl9kaXIsIGJhY2tlbmQsICJ7fS5kYiIu Zm9ybWF0KGluZGV4X25hbWUpKQotKyAgICBlbHNlOgotKyAgICAgICAgIyBCREIgaGFzIHNlcGFy YXRlIGRpcmVjdG9yaWVzIHBlciBiYWNrZW5kIHdpdGggYWN0dWFsIGluZGV4IGZpbGVzCi0rICAg ICAgICBiYWNrZW5kX2RpciA9IG9zLnBhdGguam9pbihkYl9kaXIsIGJhY2tlbmQpCi0rICAgICAg ICBpZiBub3Qgb3MucGF0aC5leGlzdHMoYmFja2VuZF9kaXIpOgotKyAgICAgICAgICAgIHJldHVy biBJbmRleE9yZGVyaW5nLlVOS05PV04KLSsgICAgICAgIGluZGV4X2ZpbGUgPSBOb25lCi0rICAg ICAgICBwYXR0ZXJuID0gb3MucGF0aC5qb2luKGJhY2tlbmRfZGlyLCAie30uZGIqIi5mb3JtYXQo aW5kZXhfbmFtZSkpCi0rICAgICAgICBmb3IgZiBpbiBnbG9iLmdsb2IocGF0dGVybik6Ci0rICAg ICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZik6Ci0rICAgICAgICAgICAgICAgIGluZGV4X2Zp bGUgPSBmCi0rICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICBpZiBub3QgaW5kZXhfZmls ZToKLSsgICAgICAgICAgICByZXR1cm4gSW5kZXhPcmRlcmluZy5VTktOT1dOCi0rCi0rICAgIHRy eToKLSsgICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MucnVuKAotKyAgICAgICAgICAgIFtkYnNj YW5fcGF0aCwgIi1mIiwgaW5kZXhfZmlsZV0sCi0rICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nl c3MuUElQRSwKLSsgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAotKyAgICAgICAg ICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAotKyAgICAgICAgICAgIHRpbWVvdXQ9NjAsCi0r ICAgICAgICApCi0rCi0rICAgICAgICBpZiByZXN1bHQucmV0dXJuY29kZSAhPSAwOgotKyAgICAg ICAgICAgIGxvZy53YXJuaW5nKCIgIGRic2NhbiByZXR1cm5lZCBub24temVybyBleGl0IGNvZGUg Zm9yICVzIiwgaW5kZXhfZmlsZSkKLSsgICAgICAgICAgICByZXR1cm4gSW5kZXhPcmRlcmluZy5V TktOT1dOCi0rCi0rICAgICAgICAjIFBhcnNlIGtleXMgZnJvbSBkYnNjYW4gb3V0cHV0Ci0rICAg ICAgICBrZXlzID0gW10KLSsgICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5zdGRvdXQuc3BsaXQo IlxuIik6Ci0rICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQotKyAgICAgICAgICAgIGlm IGxpbmUuc3RhcnRzd2l0aCgiPSIpOgotKyAgICAgICAgICAgICAgICBtYXRjaCA9IHJlLm1hdGNo KHIiXj0oXGQrKSIsIGxpbmUpCi0rICAgICAgICAgICAgICAgIGlmIG1hdGNoOgotKyAgICAgICAg ICAgICAgICAgICAga2V5cy5hcHBlbmQoaW50KG1hdGNoLmdyb3VwKDEpKSkKLSsKLSsgICAgICAg IGlmIGxlbihrZXlzKSA8IDI6Ci0rICAgICAgICAgICAgcmV0dXJuIEluZGV4T3JkZXJpbmcuVU5L Tk9XTgotKwotKyAgICAgICAgIyBDaGVjayBpZiBrZXlzIGFyZSBpbiBpbnRlZ2VyIG9yZGVyIGJ5 IGxvb2tpbmcgZm9yIGRlY3JlYXNpbmcgbnVtZXJpYyB2YWx1ZXMKLSsgICAgICAgICMgKHdoaWNo IHdvdWxkIGluZGljYXRlIGxleGljb2dyYXBoaWMgb3JkZXJpbmcsIGUuZy4sICIzIiA8ICIzMCIg PCAiNCIpCi0rICAgICAgICBwcmV2X2lkID0ga2V5c1swXQotKyAgICAgICAgZm9yIGkgaW4gcmFu Z2UoMSwgbWluKGxlbihrZXlzKSwgMTAwKSk6Ci0rICAgICAgICAgICAgY3VycmVudF9pZCA9IGtl eXNbaV0KLSsgICAgICAgICAgICBpZiBwcmV2X2lkID4gY3VycmVudF9pZDoKLSsgICAgICAgICAg ICAgICAgcmV0dXJuIEluZGV4T3JkZXJpbmcuTEVYSUNPR1JBUEhJQwotKyAgICAgICAgICAgIHBy ZXZfaWQgPSBjdXJyZW50X2lkCi0rCi0rICAgICAgICByZXR1cm4gSW5kZXhPcmRlcmluZy5JTlRF R0VSCi0rCi0rICAgIGV4Y2VwdCBzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkOgotKyAgICAgICAg bG9nLndhcm5pbmcoIiAgZGJzY2FuIHRpbWVkIG91dCBmb3IgJXMiLCBpbmRleF9maWxlKQotKyAg ICAgICAgcmV0dXJuIEluZGV4T3JkZXJpbmcuVU5LTk9XTgotKyAgICBleGNlcHQgT1NFcnJvciBh cyBlOgotKyAgICAgICAgbG9nLndhcm5pbmcoIiAgRXJyb3IgcnVubmluZyBkYnNjYW46ICVzIiwg ZSkKLSsgICAgICAgIHJldHVybiBJbmRleE9yZGVyaW5nLlVOS05PV04KLSsKLSsKLStkZWYgZGJ0 YXNrc19pbmRleF9jaGVjayhpbnN0LCBsb2csIGFyZ3MpOgotKyAgICAiIiJDaGVjayBhbmQgb3B0 aW9uYWxseSBmaXggaW5kZXggb3JkZXJpbmcgbWlzbWF0Y2hlcy4KLSsKLSsgICAgVGhpcyBmdW5j dGlvbiBkZXRlY3RzIG1pc21hdGNoZXMgYmV0d2VlbiB0aGUgY29uZmlndXJlZCBvcmRlcmluZwot KyAgICAoaW50ZWdlck9yZGVyaW5nTWF0Y2ggaW4gRFNFKSBhbmQgdGhlIGFjdHVhbCBvbi1kaXNr IG9yZGVyaW5nIG9mCi0rICAgIHBhcmVudGlkIGFuZCBhbmNlc3RvcmlkIGluZGV4ZXMuCi0rCi0r ICAgIEFyZ3M6Ci0rICAgICAgICBpbnN0OiBEaXJTcnYgaW5zdGFuY2UuCi0rICAgICAgICBsb2c6 IExvZ2dlciBpbnN0YW5jZS4KLSsgICAgICAgIGFyZ3M6IFBhcnNlZCBjb21tYW5kIGxpbmUgYXJn dW1lbnRzLgotKwotKyAgICBSZXR1cm5zOgotKyAgICAgICAgVHJ1ZSBpZiBhbGwgY2hlY2tzIHBh c3NlZCwgRmFsc2UgaWYgbWlzbWF0Y2hlcyB3ZXJlIGRldGVjdGVkLgotKyAgICAiIiIKLSsgICAg IyBTZXJ2ZXIgbXVzdCBiZSBzdG9wcGVkCi0rICAgIGlmIGluc3Quc3RhdHVzKCk6Ci0rICAgICAg ICBsb2cuZXJyb3IoImluZGV4LWNoZWNrIHJlcXVpcmVzIHRoZSBpbnN0YW5jZSB0byBiZSBzdG9w cGVkIikKLSsgICAgICAgIHJldHVybiBGYWxzZQotKwotKyAgICAjIENoZWNrIGZvciBkYnNjYW4g YmluYXJ5Ci0rICAgIGRic2Nhbl9wYXRoID0gb3MucGF0aC5qb2luKGluc3QuZHNfcGF0aHMuYmlu X2RpciwgImRic2NhbiIpCi0rICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkYnNjYW5fcGF0aCk6 Ci0rICAgICAgICBsb2cuZXJyb3IoImRic2NhbiB1dGlsaXR5IG5vdCBmb3VuZCBhdCAlcyIsIGRi c2Nhbl9wYXRoKQotKyAgICAgICAgcmV0dXJuIEZhbHNlCi0rCi0rICAgICMgTG9hZCBEU0UKLSsg ICAgdHJ5OgotKyAgICAgICAgZHNlX2xkaWYgPSBEU0VsZGlmKGluc3QpCi0rICAgIGV4Y2VwdCBF eGNlcHRpb24gYXMgZToKLSsgICAgICAgIGxvZy5lcnJvcigiRmFpbGVkIHRvIHJlYWQgZHNlLmxk aWY6ICVzIiwgZSkKLSsgICAgICAgIHJldHVybiBGYWxzZQotKwotKyAgICAjIEdldCBiYWNrZW5k cyB0byBjaGVjawotKyAgICBhbGxfYmFja2VuZHMgPSBkc2VfbGRpZi5nZXRfYmFja2VuZHMoKQot KyAgICBpZiBub3QgYWxsX2JhY2tlbmRzOgotKyAgICAgICAgbG9nLmluZm8oIk5vIGJhY2tlbmRz IGZvdW5kIikKLSsgICAgICAgIHJldHVybiBUcnVlCi0rCi0rICAgICMgRmlsdGVyIHRvIHNwZWNp ZmljIGJhY2tlbmQgaWYgcmVxdWVzdGVkCi0rICAgIGlmIGFyZ3MuYmFja2VuZDoKLSsgICAgICAg ICMgQ2FzZS1pbnNlbnNpdGl2ZSBiYWNrZW5kIGxvb2t1cAotKyAgICAgICAgYmFja2VuZF9sb3dl ciA9IGFyZ3MuYmFja2VuZC5sb3dlcigpCi0rICAgICAgICBtYXRjaGluZ19iYWNrZW5kID0gTm9u ZQotKyAgICAgICAgZm9yIGJlIGluIGFsbF9iYWNrZW5kczoKLSsgICAgICAgICAgICBpZiBiZS5s b3dlcigpID09IGJhY2tlbmRfbG93ZXI6Ci0rICAgICAgICAgICAgICAgIG1hdGNoaW5nX2JhY2tl bmQgPSBiZQotKyAgICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgaWYgbWF0Y2hpbmdfYmFj a2VuZCBpcyBOb25lOgotKyAgICAgICAgICAgIGxvZy5lcnJvcigiQmFja2VuZCAnJXMnIG5vdCBm b3VuZC4gQXZhaWxhYmxlIGJhY2tlbmRzOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgIGFy Z3MuYmFja2VuZCwgIiwgIi5qb2luKGFsbF9iYWNrZW5kcykpCi0rICAgICAgICAgICAgcmV0dXJu IEZhbHNlCi0rICAgICAgICBiYWNrZW5kc190b19jaGVjayA9IFttYXRjaGluZ19iYWNrZW5kXQot KyAgICBlbHNlOgotKyAgICAgICAgYmFja2VuZHNfdG9fY2hlY2sgPSBhbGxfYmFja2VuZHMKLSsK LSsgICAgIyBHZXQgZGF0YWJhc2UgZGlyZWN0b3J5IGFuZCBjaGVjayBkYXRhYmFzZSB0eXBlCi0r ICAgIGRiX2RpciA9IF9nZXRfZGJfZGlyKGRzZV9sZGlmKQotKyAgICBpZiBub3QgZGJfZGlyIG9y IG5vdCBvcy5wYXRoLmV4aXN0cyhkYl9kaXIpOgotKyAgICAgICAgbG9nLmVycm9yKCJEYXRhYmFz ZSBkaXJlY3Rvcnkgbm90IGZvdW5kIikKLSsgICAgICAgIHJldHVybiBGYWxzZQotKwotKyAgICBk Yl9saWIgPSBpbnN0LmdldF9kYl9saWIoKQotKyAgICBpc19tZGIgPSAoZGJfbGliID09ICJtZGIi KQotKyAgICBsb2cuaW5mbygiRGF0YWJhc2UgdHlwZTogJXMiLCBkYl9saWIudXBwZXIoKSkKLSsK LSsgICAgIyBUcmFjayBhbGwgaXNzdWVzIGZvdW5kCi0rICAgIGFsbF9vayA9IFRydWUKLSsgICAg bWlzbWF0Y2hlcyA9IFtdICAjIChiYWNrZW5kLCBpbmRleF9uYW1lKSB0dXBsZXMgbmVlZGluZyBy ZWluZGV4Ci0rICAgIG1pc3NpbmdfbWF0Y2hpbmdfcnVsZXMgPSBbXSAgIyAoYmFja2VuZCwgaW5k ZXhfbmFtZSkgdHVwbGVzIG1pc3NpbmcgaW50ZWdlck9yZGVyaW5nTWF0Y2gKLSsgICAgc2Nhbl9s aW1pdHNfdG9fcmVtb3ZlID0gW10gICMgKGJhY2tlbmQsIGluZGV4X25hbWUpIHR1cGxlcyB3aXRo IG5zSW5kZXhJRExpc3RTY2FuTGltaXQKLSsgICAgYW5jZXN0b3JpZF9jb25maWdzX3RvX3JlbW92 ZSA9IFtdICAjIGJhY2tlbmQgbmFtZXMgd2l0aCBhbmNlc3RvcmlkIGNvbmZpZyBlbnRyaWVzCi0r ICAgIHJlbW92ZV9hbmNlc3RvcmlkX2Zyb21fZGVmYXVsdHMgPSBGYWxzZSAgIyBGbGFnIHRvIHJl bW92ZSBmcm9tIGNuPWRlZmF1bHQgaW5kZXhlcwotKwotKyAgICAjIENoZWNrIGlmIGFuY2VzdG9y aWQgZXhpc3RzIGluIGNuPWRlZmF1bHQgaW5kZXhlcyAoc2hvdWxkIGJlIHJlbW92ZWQpCi0rICAg IGlmIF9kZWZhdWx0X2luZGV4X2V4aXN0cyhkc2VfbGRpZiwgImFuY2VzdG9yaWQiKToKLSsgICAg ICAgIGxvZy53YXJuaW5nKCJhbmNlc3RvcmlkIGZvdW5kIGluIGNuPWRlZmF1bHQgaW5kZXhlcyAt IHNob3VsZCBiZSByZW1vdmVkIikKLSsgICAgICAgIHJlbW92ZV9hbmNlc3RvcmlkX2Zyb21fZGVm YXVsdHMgPSBUcnVlCi0rICAgICAgICBhbGxfb2sgPSBGYWxzZQotKwotKyAgICBmb3IgYmFja2Vu ZCBpbiBiYWNrZW5kc190b19jaGVjazoKLSsgICAgICAgIGxvZy5pbmZvKCJDaGVja2luZyBiYWNr ZW5kOiAlcyIsIGJhY2tlbmQpCi0rCi0rICAgICAgICAjIENoZWNrIGZvciBhbmNlc3RvcmlkIGNv bmZpZyBlbnRyeSAoc2hvdWxkIG5vdCBleGlzdCkKLSsgICAgICAgIGlmIF9pbmRleF9jb25maWdf ZXhpc3RzKGRzZV9sZGlmLCBiYWNrZW5kLCAiYW5jZXN0b3JpZCIpOgotKyAgICAgICAgICAgIGxv Zy53YXJuaW5nKCIgIGFuY2VzdG9yaWQgLSBjb25maWcgZW50cnkgZXhpc3RzIChzaG91bGQgYmUg cmVtb3ZlZCkiKQotKyAgICAgICAgICAgIGFuY2VzdG9yaWRfY29uZmlnc190b19yZW1vdmUuYXBw ZW5kKGJhY2tlbmQpCi0rICAgICAgICAgICAgYWxsX29rID0gRmFsc2UKLSsKLSsgICAgICAgICMg Q2hlY2sgcGFyZW50aWQgYW5kIGFuY2VzdG9yaWQgaW5kZXhlcwotKyAgICAgICAgZm9yIGluZGV4 X25hbWUgaW4gWyJwYXJlbnRpZCIsICJhbmNlc3RvcmlkIl06Ci0rICAgICAgICAgICAgIyBDaGVj ayBmb3Igc2NhbiBsaW1pdHMgKHNob3VsZCBiZSByZW1vdmVkKQotKyAgICAgICAgICAgIGlmIF9o YXNfaW5kZXhfc2Nhbl9saW1pdChkc2VfbGRpZiwgYmFja2VuZCwgaW5kZXhfbmFtZSk6Ci0rICAg ICAgICAgICAgICAgIGxvZy53YXJuaW5nKCIgICVzIC0gaGFzIG5zSW5kZXhJRExpc3RTY2FuTGlt aXQgKHNob3VsZCBiZSByZW1vdmVkKSIsIGluZGV4X25hbWUpCi0rICAgICAgICAgICAgICAgIHNj YW5fbGltaXRzX3RvX3JlbW92ZS5hcHBlbmQoKGJhY2tlbmQsIGluZGV4X25hbWUpKQotKyAgICAg ICAgICAgICAgICBhbGxfb2sgPSBGYWxzZQotKwotKyAgICAgICAgICAgICMgQ2hlY2sgZGlzayBv cmRlcmluZwotKyAgICAgICAgICAgIGRpc2tfb3JkZXJpbmcgPSBfY2hlY2tfZGlza19vcmRlcmlu ZyhkYl9kaXIsIGJhY2tlbmQsIGluZGV4X25hbWUsIGRic2Nhbl9wYXRoLCBpc19tZGIsIGxvZykK LSsKLSsgICAgICAgICAgICBpZiBkaXNrX29yZGVyaW5nID09IEluZGV4T3JkZXJpbmcuVU5LTk9X TjoKLSsgICAgICAgICAgICAgICAgbG9nLmluZm8oIiAgJXMgLSBjb3VsZCBub3QgZGV0ZXJtaW5l IGRpc2sgb3JkZXJpbmcsIHNraXBwaW5nIiwgaW5kZXhfbmFtZSkKLSsgICAgICAgICAgICAgICAg IyBGb3IgcGFyZW50aWQsIHN0aWxsIGNoZWNrIGlmIG1hdGNoaW5nIHJ1bGUgaXMgbWlzc2luZwot KyAgICAgICAgICAgICAgICBpZiBpbmRleF9uYW1lID09ICJwYXJlbnRpZCI6Ci0rICAgICAgICAg ICAgICAgICAgICBjb25maWdfaGFzX2ludF9vcmRlciA9IF9oYXNfaW50ZWdlcl9vcmRlcmluZ19t YXRjaChkc2VfbGRpZiwgYmFja2VuZCwgaW5kZXhfbmFtZSkKLSsgICAgICAgICAgICAgICAgICAg IGlmIG5vdCBjb25maWdfaGFzX2ludF9vcmRlcjoKLSsgICAgICAgICAgICAgICAgICAgICAgICBs b2cud2FybmluZygiICAlcyAtIG1pc3NpbmcgaW50ZWdlck9yZGVyaW5nTWF0Y2ggaW4gY29uZmln IiwgaW5kZXhfbmFtZSkKLSsgICAgICAgICAgICAgICAgICAgICAgICBtaXNzaW5nX21hdGNoaW5n X3J1bGVzLmFwcGVuZCgoYmFja2VuZCwgaW5kZXhfbmFtZSkpCi0rICAgICAgICAgICAgICAgICAg ICAgICAgYWxsX29rID0gRmFsc2UKLSsgICAgICAgICAgICAgICAgY29udGludWUKLSsKLSsgICAg ICAgICAgICBjb25maWdfaGFzX2ludF9vcmRlciA9IF9oYXNfaW50ZWdlcl9vcmRlcmluZ19tYXRj aChkc2VfbGRpZiwgYmFja2VuZCwgaW5kZXhfbmFtZSkKLSsgICAgICAgICAgICBjb25maWdfZGVz YyA9ICJpbnRlZ2VyIiBpZiBjb25maWdfaGFzX2ludF9vcmRlciBlbHNlICJsZXhpY29ncmFwaGlj IgotKyAgICAgICAgICAgIGxvZy5pbmZvKCIgICVzIC0gY29uZmlnOiAlcywgZGlzazogJXMiLAot KyAgICAgICAgICAgICAgICAgICAgIGluZGV4X25hbWUsIGNvbmZpZ19kZXNjLCBkaXNrX29yZGVy aW5nLnZhbHVlKQotKwotKyAgICAgICAgICAgICMgRm9yIHBhcmVudGlkLCB0aGUgZGVzaXJlZCBz dGF0ZSBpcyBhbHdheXMgaW50ZWdlciBvcmRlcmluZwotKyAgICAgICAgICAgIGlmIGluZGV4X25h bWUgPT0gInBhcmVudGlkIjoKLSsgICAgICAgICAgICAgICAgaWYgbm90IGNvbmZpZ19oYXNfaW50 X29yZGVyOgotKyAgICAgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoIiAgJXMgLSBtaXNzaW5n IGludGVnZXJPcmRlcmluZ01hdGNoIGluIGNvbmZpZyIsIGluZGV4X25hbWUpCi0rICAgICAgICAg ICAgICAgICAgICBpZiAoYmFja2VuZCwgaW5kZXhfbmFtZSkgbm90IGluIG1pc3NpbmdfbWF0Y2hp bmdfcnVsZXM6Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbWlzc2luZ19tYXRjaGluZ19ydWxl cy5hcHBlbmQoKGJhY2tlbmQsIGluZGV4X25hbWUpKQotKyAgICAgICAgICAgICAgICAgICAgYWxs X29rID0gRmFsc2UKLSsKLSsgICAgICAgICAgICAgICAgaWYgZGlza19vcmRlcmluZyA9PSBJbmRl eE9yZGVyaW5nLkxFWElDT0dSQVBISUM6Ci0rICAgICAgICAgICAgICAgICAgICBsb2cud2Fybmlu ZygiICAlcyAtIGRpc2sgb3JkZXJpbmcgaXMgbGV4aWNvZ3JhcGhpYywgbmVlZHMgcmVpbmRleCIs IGluZGV4X25hbWUpCi0rICAgICAgICAgICAgICAgICAgICBpZiAoYmFja2VuZCwgaW5kZXhfbmFt ZSkgbm90IGluIG1pc21hdGNoZXM6Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbWlzbWF0Y2hl cy5hcHBlbmQoKGJhY2tlbmQsIGluZGV4X25hbWUpKQotKyAgICAgICAgICAgICAgICAgICAgYWxs X29rID0gRmFsc2UKLSsKLSsgICAgIyBIYW5kbGUgaXNzdWVzCi0rICAgIGlmIG5vdCBhbGxfb2s6 Ci0rICAgICAgICBpZiBhcmdzLmZpeDoKLSsgICAgICAgICAgICBsb2cuaW5mbygiRml4aW5nIGlz c3Vlcy4uLiIpCi0rCi0rICAgICAgICAgICAgIyBSZW1vdmUgYW5jZXN0b3JpZCBmcm9tIGNuPWRl ZmF1bHQgaW5kZXhlcwotKyAgICAgICAgICAgIGlmIHJlbW92ZV9hbmNlc3RvcmlkX2Zyb21fZGVm YXVsdHM6Ci0rICAgICAgICAgICAgICAgIGRlZmF1bHRfaWR4X2RuID0gImNuPWFuY2VzdG9yaWQs Y249ZGVmYXVsdCBpbmRleGVzLGNuPWNvbmZpZyxjbj1sZGJtIGRhdGFiYXNlLGNuPXBsdWdpbnMs Y249Y29uZmlnIgotKyAgICAgICAgICAgICAgICBsb2cuaW5mbygiICBSZW1vdmluZyBhbmNlc3Rv cmlkIGZyb20gZGVmYXVsdCBpbmRleGVzLi4uIikKLSsgICAgICAgICAgICAgICAgdHJ5OgotKyAg ICAgICAgICAgICAgICAgICAgZHNlX2xkaWYuZGVsZXRlX2RuKGRlZmF1bHRfaWR4X2RuKQotKyAg ICAgICAgICAgICAgICAgICAgbG9nLmluZm8oIiAgUmVtb3ZlZCBhbmNlc3RvcmlkIGZyb20gZGVm YXVsdCBpbmRleGVzIikKLSsgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgot KyAgICAgICAgICAgICAgICAgICAgbG9nLmVycm9yKCIgIEZhaWxlZCB0byByZW1vdmUgYW5jZXN0 b3JpZCBmcm9tIGRlZmF1bHQgaW5kZXhlczogJXMiLCBlKQotKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuIEZhbHNlCi0rCi0rICAgICAgICAgICAgIyBSZW1vdmUgc2NhbiBsaW1pdHMgKG9ubHkg Zm9yIGluZGV4ZXMgdGhhdCB3b24ndCBiZSBkZWxldGVkKQotKyAgICAgICAgICAgIGZvciBiYWNr ZW5kLCBpbmRleF9uYW1lIGluIHNjYW5fbGltaXRzX3RvX3JlbW92ZToKLSsgICAgICAgICAgICAg ICAgIyBTa2lwIGFuY2VzdG9yaWQgaWYgd2UncmUgZ29pbmcgdG8gZGVsZXRlIHRoZSB3aG9sZSBl bnRyeSBhbnl3YXkKLSsgICAgICAgICAgICAgICAgaWYgaW5kZXhfbmFtZSA9PSAiYW5jZXN0b3Jp ZCIgYW5kIGJhY2tlbmQgaW4gYW5jZXN0b3JpZF9jb25maWdzX3RvX3JlbW92ZToKLSsgICAgICAg ICAgICAgICAgICAgIGNvbnRpbnVlCi0rICAgICAgICAgICAgICAgIGluZGV4X2RuID0gImNuPXt9 LGNuPWluZGV4LGNuPXt9LGNuPWxkYm0gZGF0YWJhc2UsY249cGx1Z2lucyxjbj1jb25maWciLmZv cm1hdCgKLSsgICAgICAgICAgICAgICAgICAgIGluZGV4X25hbWUsIGJhY2tlbmQKLSsgICAgICAg ICAgICAgICAgKQotKyAgICAgICAgICAgICAgICBsb2cuaW5mbygiICBSZW1vdmluZyBuc0luZGV4 SURMaXN0U2NhbkxpbWl0IGZyb20gJXMgaW4gYmFja2VuZCAlcy4uLiIsIGluZGV4X25hbWUsIGJh Y2tlbmQpCi0rICAgICAgICAgICAgICAgIHRyeToKLSsgICAgICAgICAgICAgICAgICAgIGRzZV9s ZGlmLmRlbGV0ZShpbmRleF9kbiwgIm5zSW5kZXhJRExpc3RTY2FuTGltaXQiKQotKyAgICAgICAg ICAgICAgICAgICAgbG9nLmluZm8oIiAgUmVtb3ZlZCBuc0luZGV4SURMaXN0U2NhbkxpbWl0IGZy b20gJXMiLCBpbmRleF9uYW1lKQotKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFz IGU6Ci0rICAgICAgICAgICAgICAgICAgICBsb2cuZXJyb3IoIiAgRmFpbGVkIHRvIHJlbW92ZSBu c0luZGV4SURMaXN0U2NhbkxpbWl0IGZyb20gJXM6ICVzIiwgaW5kZXhfbmFtZSwgZSkKLSsgICAg ICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotKwotKyAgICAgICAgICAgICMgUmVtb3ZlIGFu Y2VzdG9yaWQgY29uZmlnIGVudHJpZXMgZnJvbSBiYWNrZW5kcwotKyAgICAgICAgICAgIGZvciBi YWNrZW5kIGluIGFuY2VzdG9yaWRfY29uZmlnc190b19yZW1vdmU6Ci0rICAgICAgICAgICAgICAg IGluZGV4X2RuID0gImNuPWFuY2VzdG9yaWQsY249aW5kZXgsY249e30sY249bGRibSBkYXRhYmFz ZSxjbj1wbHVnaW5zLGNuPWNvbmZpZyIuZm9ybWF0KGJhY2tlbmQpCi0rICAgICAgICAgICAgICAg IGxvZy5pbmZvKCIgIFJlbW92aW5nIGFuY2VzdG9yaWQgY29uZmlnIGVudHJ5IGZyb20gYmFja2Vu ZCAlcy4uLiIsIGJhY2tlbmQpCi0rICAgICAgICAgICAgICAgIHRyeToKLSsgICAgICAgICAgICAg ICAgICAgIGRzZV9sZGlmLmRlbGV0ZV9kbihpbmRleF9kbikKLSsgICAgICAgICAgICAgICAgICAg IGxvZy5pbmZvKCIgIFJlbW92ZWQgYW5jZXN0b3JpZCBjb25maWcgZW50cnkgZnJvbSBiYWNrZW5k ICVzIiwgYmFja2VuZCkKLSsgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgot KyAgICAgICAgICAgICAgICAgICAgbG9nLmVycm9yKCIgIEZhaWxlZCB0byByZW1vdmUgYW5jZXN0 b3JpZCBjb25maWcgZnJvbSBiYWNrZW5kICVzOiAlcyIsIGJhY2tlbmQsIGUpCi0rICAgICAgICAg ICAgICAgICAgICByZXR1cm4gRmFsc2UKLSsKLSsgICAgICAgICAgICAjIEFkZCBtaXNzaW5nIG1h dGNoaW5nIHJ1bGVzIHRvIGRzZS5sZGlmCi0rICAgICAgICAgICAgZm9yIGJhY2tlbmQsIGluZGV4 X25hbWUgaW4gbWlzc2luZ19tYXRjaGluZ19ydWxlczoKLSsgICAgICAgICAgICAgICAgaW5kZXhf ZG4gPSAiY249e30sY249aW5kZXgsY249e30sY249bGRibSBkYXRhYmFzZSxjbj1wbHVnaW5zLGNu PWNvbmZpZyIuZm9ybWF0KAotKyAgICAgICAgICAgICAgICAgICAgaW5kZXhfbmFtZSwgYmFja2Vu ZAotKyAgICAgICAgICAgICAgICApCi0rICAgICAgICAgICAgICAgIGxvZy5pbmZvKCIgIEFkZGlu ZyBpbnRlZ2VyT3JkZXJpbmdNYXRjaCB0byAlcyBpbiBiYWNrZW5kICVzLi4uIiwgaW5kZXhfbmFt ZSwgYmFja2VuZCkKLSsgICAgICAgICAgICAgICAgdHJ5OgotKyAgICAgICAgICAgICAgICAgICAg ZHNlX2xkaWYuYWRkKGluZGV4X2RuLCAibnNNYXRjaGluZ1J1bGUiLCAiaW50ZWdlck9yZGVyaW5n TWF0Y2giKQotKyAgICAgICAgICAgICAgICAgICAgbG9nLmluZm8oIiAgVXBkYXRlZCBkc2UubGRp ZiB3aXRoIGludGVnZXJPcmRlcmluZ01hdGNoIGZvciAlcyIsIGluZGV4X25hbWUpCi0rICAgICAg ICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSsgICAgICAgICAgICAgICAgICAgIGxv Zy5lcnJvcigiICBGYWlsZWQgdG8gdXBkYXRlIGRzZS5sZGlmIGZvciAlczogJXMiLCBpbmRleF9u YW1lLCBlKQotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0rCi0rICAgICAgICAg ICAgIyBSZWluZGV4IGluZGV4ZXMgd2l0aCBkaXNrIG9yZGVyaW5nIGlzc3VlcwotKyAgICAgICAg ICAgIGZvciBiYWNrZW5kLCBpbmRleF9uYW1lIGluIG1pc21hdGNoZXM6Ci0rICAgICAgICAgICAg ICAgIGxvZy5pbmZvKCIgIFJlaW5kZXhpbmcgJXMgaW4gYmFja2VuZCAlcy4uLiIsIGluZGV4X25h bWUsIGJhY2tlbmQpCi0rICAgICAgICAgICAgICAgIGlmIG5vdCBpbnN0LmRiMmluZGV4KGJlbmFt ZT1iYWNrZW5kLCBhdHRycz1baW5kZXhfbmFtZV0pOgotKyAgICAgICAgICAgICAgICAgICAgbG9n LmVycm9yKCIgIEZhaWxlZCB0byByZWluZGV4ICVzIiwgaW5kZXhfbmFtZSkKLSsgICAgICAgICAg ICAgICAgICAgIHJldHVybiBGYWxzZQotKyAgICAgICAgICAgICAgICBsb2cuaW5mbygiICBSZWlu ZGV4IG9mICVzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkiLCBpbmRleF9uYW1lKQotKwotKyAgICAg ICAgICAgIGxvZy5pbmZvKCJBbGwgaXNzdWVzIGZpeGVkIikKLSsgICAgICAgICAgICByZXR1cm4g VHJ1ZQotKyAgICAgICAgZWxzZToKLSsgICAgICAgICAgICBsb2cuaW5mbygiSXNzdWVzIGRldGVj dGVkLiBSdW4gd2l0aCAtLWZpeCB0byByZXBhaXIuIikKLSsgICAgICAgICAgICByZXR1cm4gRmFs c2UKLSsgICAgZWxzZToKLSsgICAgICAgIGxvZy5pbmZvKCJBbGwgY2hlY2tzIHBhc3NlZCAtIG5v IGlzc3VlcyBmb3VuZCIpCi0rICAgICAgICByZXR1cm4gVHJ1ZQotKwotKwotIGRlZiBjcmVhdGVf cGFyc2VyKHN1YmNvbW1hbmRzKToKLSAgICAgZGIyaW5kZXhfcGFyc2VyID0gc3ViY29tbWFuZHMu YWRkX3BhcnNlcignZGIyaW5kZXgnLCBoZWxwPSJJbml0aWFsaXNlIGEgcmVpbmRleCBvZiB0aGUg c2VydmVyIGRhdGFiYXNlLiBUaGUgc2VydmVyIG11c3QgYmUgc3RvcHBlZCBmb3IgdGhpcyB0byBw cm9jZWVkLiIsIGZvcm1hdHRlcl9jbGFzcz1DdXN0b21IZWxwRm9ybWF0dGVyKQotICAgICAjIGRi MmluZGV4X3BhcnNlci5hZGRfYXJndW1lbnQoJ3N1ZmZpeCcsIGhlbHA9IlRoZSBzdWZmaXggdG8g cmVpbmRleC4gSUUgZGM9ZXhhbXBsZSxkYz1jb20uIikKLUBAIC0xNzIsMyArNTY1LDEyIEBAIGRl ZiBjcmVhdGVfcGFyc2VyKHN1YmNvbW1hbmRzKToKLSAgICAgbGRpZnNfcGFyc2VyID0gc3ViY29t bWFuZHMuYWRkX3BhcnNlcignbGRpZnMnLCBoZWxwPSJMaXN0IGFsbCB0aGUgTERJRiBmaWxlcyBs b2NhdGVkIGluIHRoZSBzZXJ2ZXIncyBMRElGIGRpcmVjdG9yeSIsIGZvcm1hdHRlcl9jbGFzcz1D dXN0b21IZWxwRm9ybWF0dGVyKQotICAgICBsZGlmc19wYXJzZXIuYWRkX2FyZ3VtZW50KCctLWRl bGV0ZScsIG5hcmdzPTEsIGhlbHA9IkRlbGV0ZSBMRElGIGZpbGUiKQotICAgICBsZGlmc19wYXJz ZXIuc2V0X2RlZmF1bHRzKGZ1bmM9ZGJ0YXNrc19sZGlmcykKLSsKLSsgICAgaW5kZXhfY2hlY2tf cGFyc2VyID0gc3ViY29tbWFuZHMuYWRkX3BhcnNlcignaW5kZXgtY2hlY2snLAotKyAgICAgICAg aGVscD0iQ2hlY2sgZm9yIGluZGV4IG9yZGVyaW5nIG1pc21hdGNoZXMgKHBhcmVudGlkL2FuY2Vz dG9yaWQpLiBUaGUgc2VydmVyIG11c3QgYmUgc3RvcHBlZC4iLAotKyAgICAgICAgZm9ybWF0dGVy X2NsYXNzPUN1c3RvbUhlbHBGb3JtYXR0ZXIpCi0rICAgIGluZGV4X2NoZWNrX3BhcnNlci5hZGRf YXJndW1lbnQoJ2JhY2tlbmQnLCBuYXJncz0nPycsIGRlZmF1bHQ9Tm9uZSwKLSsgICAgICAgIGhl bHA9IkJhY2tlbmQgdG8gY2hlY2suIElmIG5vdCBzcGVjaWZpZWQsIGFsbCBiYWNrZW5kcyBhcmUg Y2hlY2tlZC4iKQotKyAgICBpbmRleF9jaGVja19wYXJzZXIuYWRkX2FyZ3VtZW50KCctLWZpeCcs IGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0rICAgICAgICBoZWxwPSJGaXgg bWlzbWF0Y2hlcyBieSByZWluZGV4aW5nIGFmZmVjdGVkIGluZGV4ZXMiKQotKyAgICBpbmRleF9j aGVja19wYXJzZXIuc2V0X2RlZmF1bHRzKGZ1bmM9ZGJ0YXNrc19pbmRleF9jaGVjaykKLWRpZmYg LS1naXQgYS9zcmMvbGliMzg5L2xpYjM4OS9kc2VsZGlmLnB5IGIvc3JjL2xpYjM4OS9saWIzODkv ZHNlbGRpZi5weQotaW5kZXggZDEyYzY0MjRjLi43ODM0ZDk0NjggMTAwNjQ0Ci0tLS0gYS9zcmMv bGliMzg5L2xpYjM4OS9kc2VsZGlmLnB5Ci0rKysgYi9zcmMvbGliMzg5L2xpYjM4OS9kc2VsZGlm LnB5Ci1AQCAtMTI1LDExICsxMjUsMTQgQEAgY2xhc3MgRFNFbGRpZihEU0xpbnQpOgotICAgICAg ICAgICAgIHNlbGYuX2NvbnRlbnRzW2ldID0gc2VsZi5fY29udGVudHNbaV0ucmVwbGFjZShzdHJm cm9tLCBzdHJ0bykKLSAgICAgICAgIHNlbGYuX3VwZGF0ZSgpCi0gCi0tICAgIGRlZiBfZmluZF9h dHRyKHNlbGYsIGVudHJ5X2RuLCBhdHRyKToKLSsgICAgZGVmIF9maW5kX2F0dHIoc2VsZiwgZW50 cnlfZG4sIGF0dHIsIGxvd2VyPUZhbHNlKToKLSAgICAgICAgICIiIkZpbmQgYWxsIGF0dHJpYnV0 ZSB2YWx1ZXMgYW5kIGluZGV4ZXMgdW5kZXIgYSBnaXZlbiBlbnRyeQotIAotICAgICAgICAgUmV0 dXJucyBlbnRyeSBkbiBpbmRleCBhbmQgYXR0cmlidXRlIGRhdGEgZGljdDoKLSAgICAgICAgIHJl bGF0aXZlIGF0dHJpYnV0ZSBpbmRleGVzIGFuZCB0aGUgYXR0cmlidXRlIHZhbHVlCi0rCi0rICAg ICAgICA6cGFyYW0gbG93ZXI6IFVzZSBjYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nIGZvciBhdHRy aWJ1dGUgbmFtZQotKyAgICAgICAgOnR5cGUgbG93ZXI6IGJvb2xlYW4KLSAgICAgICAgICIiIgot IAotICAgICAgICAgZW50cnlfZG5faSA9IHNlbGYuX2NvbnRlbnRzLmluZGV4KCJkbjoge31cbiIu Zm9ybWF0KGVudHJ5X2RuLmxvd2VyKCkpKQotQEAgLTE0Niw3ICsxNDksMTEgQEAgY2xhc3MgRFNF bGRpZihEU0xpbnQpOgotIAotICAgICAgICAgIyBGaW5kIHRoZSBhdHRyaWJ1dGUKLSAgICAgICAg IGZvciBsaW5lIGluIGVudHJ5X3NsaWNlOgotLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0 aCgie306Ii5mb3JtYXQoYXR0cikpOgotKyAgICAgICAgICAgIGlmIGxvd2VyOgotKyAgICAgICAg ICAgICAgICBtYXRjaCA9IGxpbmUubG93ZXIoKS5zdGFydHN3aXRoKCJ7fToiLmZvcm1hdChhdHRy Lmxvd2VyKCkpKQotKyAgICAgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgICAgIG1hdGNoID0g bGluZS5zdGFydHN3aXRoKCJ7fToiLmZvcm1hdChhdHRyKSkKLSsgICAgICAgICAgICBpZiBtYXRj aDoKLSAgICAgICAgICAgICAgICAgYXR0cl92YWx1ZSA9IGxpbmUuc3BsaXQoIiAiLCAxKVsxXVs6 LTFdCi0gICAgICAgICAgICAgICAgIGF0dHJfZGF0YS51cGRhdGUoe2VudHJ5X3NsaWNlLmluZGV4 KGxpbmUpOiBhdHRyX3ZhbHVlfSkKLSAKLUBAIC0xNTUsNyArMTYyLDcgQEAgY2xhc3MgRFNFbGRp ZihEU0xpbnQpOgotIAotICAgICAgICAgcmV0dXJuIGVudHJ5X2RuX2ksIGF0dHJfZGF0YQotIAot LSAgICBkZWYgZ2V0KHNlbGYsIGVudHJ5X2RuLCBhdHRyLCBzaW5nbGU9RmFsc2UpOgotKyAgICBk ZWYgZ2V0KHNlbGYsIGVudHJ5X2RuLCBhdHRyLCBzaW5nbGU9RmFsc2UsIGxvd2VyPUZhbHNlKToK LSAgICAgICAgICIiIlJldHVybiBhdHRyaWJ1dGUgdmFsdWVzIHVuZGVyIGEgZ2l2ZW4gZW50cnkK LSAKLSAgICAgICAgIDpwYXJhbSBlbnRyeV9kbjogYSBETiBvZiBlbnRyeSB3ZSB3YW50IHRvIGdl dCBhdHRyaWJ1dGUgZnJvbQotQEAgLTE2MywxMSArMTcwLDEzIEBAIGNsYXNzIERTRWxkaWYoRFNM aW50KToKLSAgICAgICAgIDpwYXJhbSBhdHRyOiBhbiBhdHRyaWJ1dGUgbmFtZQotICAgICAgICAg OnR5cGUgYXR0cjogc3RyCi0gICAgICAgICA6cGFyYW0gc2luZ2xlOiBSZXR1cm4gYSBzaW5nbGUg dmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QKLS0gICAgICAgIDp0eXBlIHNpZ2xlOiBib29sZWFuCi0r ICAgICAgICA6dHlwZSBzaW5nbGU6IGJvb2xlYW4KLSsgICAgICAgIDpwYXJhbSBsb3dlcjogVXNl IGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmcgZm9yIGF0dHJpYnV0ZSBuYW1lCi0rICAgICAgICA6 dHlwZSBsb3dlcjogYm9vbGVhbgotICAgICAgICAgIiIiCi0gCi0gICAgICAgICB0cnk6Ci0tICAg ICAgICAgICAgXywgYXR0cl9kYXRhID0gc2VsZi5fZmluZF9hdHRyKGVudHJ5X2RuLCBhdHRyKQot KyAgICAgICAgICAgIF8sIGF0dHJfZGF0YSA9IHNlbGYuX2ZpbmRfYXR0cihlbnRyeV9kbiwgYXR0 ciwgbG93ZXI9bG93ZXIpCi0gICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAg ICByZXR1cm4gTm9uZQotIAotQEAgLTE5MCw2ICsxOTksMzggQEAgY2xhc3MgRFNFbGRpZihEU0xp bnQpOgotIAotICAgICAgICAgcmV0dXJuIGluZGV4ZXMKLSAKLSsgICAgZGVmIGdldF9iYWNrZW5k cyhzZWxmKToKLSsgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYmFja2VuZCBuYW1lcyBmcm9t IERTRS4KLSsKLSsgICAgICAgIFJldHVybnMgYmFja2VuZCBuYW1lcyBwcmVzZXJ2aW5nIHRoZWly IG9yaWdpbmFsIGNhc2UsIGFzIHRoZQotKyAgICAgICAgZGF0YWJhc2UgZGlyZWN0b3J5IG5hbWVz IG9uIGRpc2sgdXNlIHRoZSBvcmlnaW5hbCBjYXNlLgotKwotKyAgICAgICAgTm90ZTogRFNFbGRp ZiBsb3dlcmNhc2VzIEROIGxpbmVzLCBzbyB3ZSByZWFkIHRoZSAnY24nIGF0dHJpYnV0ZQotKyAg ICAgICAgZnJvbSBlYWNoIGVudHJ5IHRvIGdldCB0aGUgb3JpZ2luYWwgY2FzZS4KLSsKLSsgICAg ICAgIDpyZXR1cm5zOiBMaXN0IG9mIGJhY2tlbmQgbmFtZXMKLSsgICAgICAgICIiIgotKyAgICAg ICAgYmFja2VuZHMgPSBbXQotKyAgICAgICAgZXhjbHVkZWQgPSAoImNvbmZpZyIsICJtb25pdG9y IiwgImluZGV4IiwgImVuY3J5cHRlZCBhdHRyaWJ1dGVzIikKLSsKLSsgICAgICAgIGZvciBlbnRy eSBpbiBzZWxmLl9jb250ZW50czoKLSsgICAgICAgICAgICBpZiAoZW50cnkuc3RhcnRzd2l0aCgi ZG46IGNuPSIpIGFuZAotKyAgICAgICAgICAgICAgICAgICAgIixjbj1sZGJtIGRhdGFiYXNlLGNu PXBsdWdpbnMsY249Y29uZmlnIiBpbiBlbnRyeSk6Ci0rICAgICAgICAgICAgICAgIHBhcnRzID0g ZW50cnkuc3BsaXQoIiwiKQotKyAgICAgICAgICAgICAgICBpZiBsZW4ocGFydHMpID4gMToKLSsg ICAgICAgICAgICAgICAgICAgIGNuX2xvd2VyID0gcGFydHNbMF0ucmVwbGFjZSgiZG46IGNuPSIs ICIiKQotKyAgICAgICAgICAgICAgICAgICAgaWYgY25fbG93ZXIgbm90IGluIGV4Y2x1ZGVkOgot KyAgICAgICAgICAgICAgICAgICAgICAgIGRuID0gZW50cnkuc3RyaXAoKVs0Ol0uc3RyaXAoKQot KyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3VmZml4ID0gc2VsZi5nZXQoZG4sICJuc3NsYXBkLXN1ZmZpeCIpCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlmIHN1ZmZpeDoKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNuX3ZhbHVlcyA9IHNlbGYuZ2V0KGRuLCAiY24iKQotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgY25fdmFsdWVzOgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJhY2tlbmRzLmFwcGVuZChjbl92YWx1ZXNbMF0pCi0rICAgICAgICAgICAgICAgICAg ICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBJbmRleEVycm9yKToKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFzcwotKwotKyAgICAgICAgcmV0dXJuIGxpc3Qoc2V0KGJhY2tlbmRzKSkK LSAKLSAgICAgZGVmIGFkZF9lbnRyeShzZWxmLCBlbnRyeSk6Ci0gICAgICAgICAiIiJBZGQgYSBu ZXcgZW50cnkKLS0tIAotMi41Mi4wCi0KCmRpZmYgLS1naXQgYS8wMDIzLUlzc3VlLTcxODQtMm5k LWFyZ3BhcnNlLkhlbHBGb3JtYXR0ZXItX2Zvcm1hdF9hY3Rpb24ucGF0Y2ggYi8wMDIzLUlzc3Vl LTcxODQtMm5kLWFyZ3BhcnNlLkhlbHBGb3JtYXR0ZXItX2Zvcm1hdF9hY3Rpb24ucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxNmJmNDQuLjAwMDAwMDAKLS0tIGEvMDAyMy1J c3N1ZS03MTg0LTJuZC1hcmdwYXJzZS5IZWxwRm9ybWF0dGVyLV9mb3JtYXRfYWN0aW9uLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSBmY2VjMWYwMGI5OWIyMjdkNDRh MmYwYWVmNmUzYTg3ZGRiN2U1MmE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVmlr dG9yIEFzaGlyb3YgPHZhc2hpcm92QHJlZGhhdC5jb20+Ci1EYXRlOiBGcmksIDEzIEZlYiAyMDI2 IDE1OjM4OjUyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIElzc3VlIDcxODQgLSAoMm5kKSBhcmdw YXJzZS5IZWxwRm9ybWF0dGVyCi0gX2Zvcm1hdF9hY3Rpb25zX3VzYWdlKCkgaXMgZGVwcmVjYXRl ZCAoIzcyNTcpCi0KLURlc2NyaXB0aW9uOgotYF9mb3JtYXRfYWN0aW9uc191c2FnZSgpYCB3YXMg YWxzbyByZW1vdmVkIGluIFB5dGhvbiAzLjE0LjMuCi1SZXBsYWNlIHZlcnNpb24gY2hlY2sgd2l0 aCBgaXNpbnN0YW5jZSgpYCB0byBoYW5kbGUgdGhlIHJldHVybiB0eXBlIG9mCi1gX2dldF9hY3Rp b25zX3VzYWdlX3BhcnRzKClgIG1vcmUgcm9idXN0bHkgYWNyb3NzIFB5dGhvbiB2ZXJzaW9ucy4K LQotUmVsYXRlczogaHR0cHM6Ly9naXRodWIuY29tLzM4OWRzLzM4OS1kcy1iYXNlL2lzc3Vlcy83 MTg0Ci1GaXhlczogaHR0cHM6Ly9naXRodWIuY29tLzM4OWRzLzM4OS1kcy1iYXNlL2lzc3Vlcy83 MjUzCi0KLVJldmlld2VkIGJ5OiBAcHJvZ2llcjM4OSAoVGhhbmtzISkKLS0tLQotIHNyYy9saWIz ODkvbGliMzg5L2NsaV9iYXNlL19faW5pdF9fLnB5IHwgNiArKystLS0KLSAxIGZpbGUgY2hhbmdl ZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2xp YjM4OS9saWIzODkvY2xpX2Jhc2UvX19pbml0X18ucHkgYi9zcmMvbGliMzg5L2xpYjM4OS9jbGlf YmFzZS9fX2luaXRfXy5weQotaW5kZXggZjEwNTVhYWRjLi4zYWY4YTQ2ZTYgMTAwNjQ0Ci0tLS0g YS9zcmMvbGliMzg5L2xpYjM4OS9jbGlfYmFzZS9fX2luaXRfXy5weQotKysrIGIvc3JjL2xpYjM4 OS9saWIzODkvY2xpX2Jhc2UvX19pbml0X18ucHkKLUBAIC00MjAsMTEgKzQyMCwxMSBAQCBjbGFz cyBDdXN0b21IZWxwRm9ybWF0dGVyKGFyZ3BhcnNlLkhlbHBGb3JtYXR0ZXIpOgotICAgICAgICAg ZWxzZToKLSAgICAgICAgICAgICAjIFVzZSBfZ2V0X2FjdGlvbnNfdXNhZ2VfcGFydHMoKSBmb3Ig UHl0aG9uIDMuMTMgYW5kIGxhdGVyCi0gICAgICAgICAgICAgYWN0aW9uX3BhcnRzID0gc2VsZi5f Z2V0X2FjdGlvbnNfdXNhZ2VfcGFydHMocGFyZW50X2FyZ3VtZW50cywgW10pCi0tICAgICAgICAg ICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgMTUpOgotLSAgICAgICAgICAgICAgICAjIFB5 dGhvbiAzLjE1IHJldHVybnMgYSB0dXBsZSAobGlzdCBvZiBhY3Rpb25zLCBjb3VudCBvZiBhY3Rp b25zKQotKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYWN0aW9uX3BhcnRzLCB0dXBsZSk6Ci0r ICAgICAgICAgICAgICAgICMgUHl0aG9uIDMuMTQuMysgYW5kIDMuMTUrIHJldHVybiBhIHR1cGxl IChsaXN0IG9mIGFjdGlvbnMsIGNvdW50IG9mIGFjdGlvbnMpCi0gICAgICAgICAgICAgICAgIGZv cm1hdHRlZF9vcHRpb25zID0gJyAnLmpvaW4oYWN0aW9uX3BhcnRzWzBdKQotICAgICAgICAgICAg IGVsc2U6Ci0tICAgICAgICAgICAgICAgICMgUHl0aG9uIDMuMTMgYW5kIDMuMTQgcmV0dXJuIGEg bGlzdCBvZiBhY3Rpb25zCi0rICAgICAgICAgICAgICAgICMgRWFybGllciB2ZXJzaW9ucyByZXR1 cm4gYSBsaXN0IG9mIGFjdGlvbnMKLSAgICAgICAgICAgICAgICAgZm9ybWF0dGVkX29wdGlvbnMg PSAnICcuam9pbihhY3Rpb25fcGFydHMpCi0gCi0gICAgICAgICAjIElmIGZvcm1hdHRlZF9vcHRp b25zIGFscmVhZHkgaW4gdXNhZ2UgLSByZW1vdmUgdGhlbQotLS0gCi0yLjUyLjAKLQoKZGlmZiAt LWdpdCBhLzAwMjQtSXNzdWUtNzIyMy1Vc2UtbGV4aWNvZ3JhcGhpY2FsLW9yZGVyLWZvci1hbmNl c3RvcmlkLS5wYXRjaCBiLzAwMjQtSXNzdWUtNzIyMy1Vc2UtbGV4aWNvZ3JhcGhpY2FsLW9yZGVy LWZvci1hbmNlc3RvcmlkLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBj OTg0NC4uMDAwMDAwMAotLS0gYS8wMDI0LUlzc3VlLTcyMjMtVXNlLWxleGljb2dyYXBoaWNhbC1v cmRlci1mb3ItYW5jZXN0b3JpZC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBA Ci1Gcm9tIDdlNTc1Y2M4Y2M2ZjFiZjU1OGY1MGNhMGZjNTUxNDVlNDY5ZDYwZDIgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaWt0b3IgQXNoaXJvdiA8dmFzaGlyb3ZAcmVkaGF0LmNv bT4KLURhdGU6IEZyaSwgMTMgRmViIDIwMjYgMTY6NTg6MjQgKzAxMDAKLVN1YmplY3Q6IFtQQVRD SCAxLzJdIElzc3VlIDcyMjMgLSBVc2UgbGV4aWNvZ3JhcGhpY2FsIG9yZGVyIGZvciBhbmNlc3Rv cmlkCi0gKCM3MjU2KQotCi1EZXNjcmlwdGlvbjoKLWBsZGJtX2luc3RhbmNlX2NyZWF0ZV9kZWZh dWx0X2luZGV4ZXMoKWAgY29uZmlndXJlZCBhbmNlc3RvcmlkIHdpdGgKLWludGVnZXJPcmRlcmlu Z01hdGNoIGluIHRoZSBpbi1tZW1vcnkgYXR0cmluZm8sIGJ1dCBhbmNlc3RvcmlkIG9uIGRpc2sK LW1pZ2h0IGJlIHVzaW5nIGxleGljb2dyYXBoaWMgb3JkZXJpbmcgKGRhdGEgYmVmb3JlIHRoZSB1 cGdyYWRlIG9yIGFmdGVyCi1sZGlmMmRiIGltcG9ydCkuCi0KLVJlbGF0ZXM6IGh0dHBzOi8vZ2l0 aHViLmNvbS8zODlkcy8zODktZHMtYmFzZS9pc3N1ZXMvNzIyMwotCi1SZXZpZXdlZCBieTogQHRi b3JkYXogKFRoYW5rcyEpCi0tLS0KLSBsZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2luc3Rh bmNlLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCi0KLWRpZmYgLS1naXQgYS9sZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2luc3RhbmNl LmMgYi9sZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2luc3RhbmNlLmMKLWluZGV4IDE3YmZj MDlhMC4uMTU2OWViN2ZmIDEwMDY0NAotLS0tIGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRi bS9pbnN0YW5jZS5jCi0rKysgYi9sZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2luc3RhbmNl LmMKLUBAIC0yMzEsNyArMjMxLDcgQEAgbGRibV9pbnN0YW5jZV9jcmVhdGVfZGVmYXVsdF9pbmRl eGVzKGJhY2tlbmQgKmJlKQotICAgICAgKiBhbmNlc3RvcmlkIGlzIHNwZWNpYWwsIHRoZXJlIGlz IGFjdHVhbGx5IG5vIHN1Y2ggYXR0ciB0eXBlCi0gICAgICAqIGJ1dCB3ZSBzdGlsbCB3YW50IHRv IHVzZSB0aGUgYXR0ciBpbmRleCBmaWxlIEFQSXMuCi0gICAgICAqLwotLSAgICBlID0gbGRibV9p bnN0YW5jZV9pbml0X2NvbmZpZ19lbnRyeShMREJNX0FOQ0VTVE9SSURfU1RSLCAiZXEiLCAwLCAw LCAwLCAiaW50ZWdlck9yZGVyaW5nTWF0Y2giKTsKLSsgICAgZSA9IGxkYm1faW5zdGFuY2VfaW5p dF9jb25maWdfZW50cnkoTERCTV9BTkNFU1RPUklEX1NUUiwgImVxIiwgMCwgMCwgMCwgMCk7Ci0g ICAgIGF0dHJfaW5kZXhfY29uZmlnKGJlLCAibGRibSBpbmRleCBpbml0IiwgMCwgZSwgMSwgMCwg TlVMTCk7Ci0gICAgIHNsYXBpX2VudHJ5X2ZyZWUoZSk7Ci0gCi0tLSAKLTIuNTIuMAotCgpkaWZm IC0tZ2l0IGEvMDAyNS1Jc3N1ZS03MjIzLVJlbW92ZS1pbnRlZ2VyT3JkZXJpbmdNYXRjaC1yZXF1 aXJlbWVudC1mLnBhdGNoIGIvMDAyNS1Jc3N1ZS03MjIzLVJlbW92ZS1pbnRlZ2VyT3JkZXJpbmdN YXRjaC1yZXF1aXJlbWVudC1mLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh NWMxMjkyLi4wMDAwMDAwCi0tLSBhLzAwMjUtSXNzdWUtNzIyMy1SZW1vdmUtaW50ZWdlck9yZGVy aW5nTWF0Y2gtcmVxdWlyZW1lbnQtZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzOCArMCww IEBACi1Gcm9tIDI3M2UwYTkyZDkwMmEyZjI5ODlmOGRlZjBmNGZiNDJiN2MwOGNhZTkgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaWt0b3IgQXNoaXJvdiA8dmFzaGlyb3ZAcmVkaGF0 LmNvbT4KLURhdGU6IFdlZCwgMTggRmViIDIwMjYgMDk6MjY6NTcgKzAxMDAKLVN1YmplY3Q6IFtQ QVRDSF0gSXNzdWUgNzIyMyAtIFJlbW92ZSBpbnRlZ2VyT3JkZXJpbmdNYXRjaCByZXF1aXJlbWVu dCBmb3IKLSBwYXJlbnRpZCAoIzcyNjQpCi0KLURlc2NyaXB0aW9uOgotaW50ZWdlck9yZGVyaW5n TWF0Y2ggd2FzIGludHJvZHVjZWQgYXMgYSByZXF1aXJlbWVudCBmb3IgcGFyZW50aWQgYW5kCi1h bmNlc3RvcmlkIGluZGV4ZXMgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIEJ1dCBhZnRlciAjNzA5 NiB0aGUgb3JkZXIKLWZvciBwYXJlbnRpZCBkb2Vzbid0IG1ha2UgYSBsb3Qgb2YgZGlmZmVyZW5j ZS4KLQotRml4IERlc2NyaXB0aW9uOgotKiBSZW1vdmUgaW50ZWdlck9yZGVyaW5nTWF0Y2ggcmVx dWlyZW1lbnQgZm9yIHBhcmVudGlkLgotKiBSZWFkIG9ubHkgZmlyc3QgMTAwIGtleXMgZnJvbSBk YnNjYW4gaW4gaW5kZXggb3JkZXJpbmcgY2hlY2sKLSogRG8gbm90IHJ1biBkc2N0bCBpbmRleC1j aGVjayBkdXJpbmcgUlBNIHVwZ3JhZGUKLQotUmVsYXRlczogaHR0cHM6Ly9naXRodWIuY29tLzM4 OWRzLzM4OS1kcy1iYXNlL3B1bGwvNzIyMwotCi1SZXZpZXdlZCBieTogQHByb2dpZXIzODksIEB0 Ym9yZGF6IChUaGFua3MhKQotLS0tCi0gLi4uL2hlYWx0aGNoZWNrL2hlYWx0aF9zeXN0ZW1faW5k ZXhlc190ZXN0LnB5IHwgIDgzICsrKystLS0tLS0tLS0tCi0gbGRhcC9zZXJ2ZXJzL3NsYXBkL3Vw Z3JhZGUuYyAgICAgICAgICAgICAgICAgIHwgMTA1IC0tLS0tLS0tLS0tLS0tLS0tLQotIHJwbS8z ODktZHMtYmFzZS5zcGVjLmluICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyAtCi0gc3JjL2xp YjM4OS9saWIzODkvYmFja2VuZC5weSAgICAgICAgICAgICAgICAgIHwgICA1ICstCi0gc3JjL2xp YjM4OS9saWIzODkvY2xpX2N0bC9kYnRhc2tzLnB5ICAgICAgICAgIHwgIDk5ICsrKysrKysrLS0t LS0tLS0tCi0gNSBmaWxlcyBjaGFuZ2VkLCA3MyBpbnNlcnRpb25zKCspLCAyMjIgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS9kaXJzcnZ0ZXN0cy90ZXN0cy9zdWl0ZXMvaGVhbHRoY2hlY2sv aGVhbHRoX3N5c3RlbV9pbmRleGVzX3Rlc3QucHkgYi9kaXJzcnZ0ZXN0cy90ZXN0cy9zdWl0ZXMv aGVhbHRoY2hlY2svaGVhbHRoX3N5c3RlbV9pbmRleGVzX3Rlc3QucHkKLWluZGV4IDZmYmNmNjY2 Yy4uOWM0OGJkNzliIDEwMDY0NAotLS0tIGEvZGlyc3J2dGVzdHMvdGVzdHMvc3VpdGVzL2hlYWx0 aGNoZWNrL2hlYWx0aF9zeXN0ZW1faW5kZXhlc190ZXN0LnB5Ci0rKysgYi9kaXJzcnZ0ZXN0cy90 ZXN0cy9zdWl0ZXMvaGVhbHRoY2hlY2svaGVhbHRoX3N5c3RlbV9pbmRleGVzX3Rlc3QucHkKLUBA IC0xODAsNyArMTgwLDggQEAgZGVmIHRlc3RfbWlzc2luZ19wYXJlbnRpZCh0b3BvbG9neV9zdCwg bG9nX2J1ZmZlcmluZ19lbmFibGVkKToKLSAKLSAKLSBkZWYgdGVzdF9taXNzaW5nX21hdGNoaW5n X3J1bGUodG9wb2xvZ3lfc3QsIGxvZ19idWZmZXJpbmdfZW5hYmxlZCk6Ci0tICAgICIiIkNoZWNr IGlmIGhlYWx0aGNoZWNrIHJldHVybnMgRFNCTEUwMDA3IGNvZGUgd2hlbiBwYXJlbnRJZCBpbmRl eCBpcyBtaXNzaW5nIGludGVnZXJPcmRlcmluZ01hdGNoCi0rICAgICIiIkNoZWNrIHRoYXQgaGVh bHRoY2hlY2sgZG9lcyBOT1QgcmVwb3J0IERTQkxFMDAwNyB3aGVuIHBhcmVudElkIGluZGV4IGlz IG1pc3NpbmcgaW50ZWdlck9yZGVyaW5nTWF0Y2guCi0rICAgIEJvdGggbGV4aWNvZ3JhcGhpYyBh bmQgaW50ZWdlciBvcmRlcmluZ3MgYXJlIHZhbGlkIGZvciBwYXJlbnRpZC4KLSAKLSAgICAgOmlk OiA3ZmZhNzFkYi04OTk1LTQzMGEtYmVkOC01OWJjZTk0NDIyMWMKLSAgICAgOnNldHVwOiBTdGFu ZGFsb25lIGluc3RhbmNlCi1AQCAtMTkwLDE5ICsxOTEsMTQgQEAgZGVmIHRlc3RfbWlzc2luZ19t YXRjaGluZ19ydWxlKHRvcG9sb2d5X3N0LCBsb2dfYnVmZmVyaW5nX2VuYWJsZWQpOgotICAgICAg ICAgMy4gVXNlIGhlYWx0aGNoZWNrIHdpdGhvdXQgLS1qc29uIG9wdGlvbgotICAgICAgICAgNC4g VXNlIGhlYWx0aGNoZWNrIHdpdGggLS1qc29uIG9wdGlvbgotICAgICAgICAgNS4gUmUtYWRkIHRo ZSBtYXRjaGluZyBydWxlCi0tICAgICAgICA2LiBVc2UgaGVhbHRoY2hlY2sgd2l0aG91dCAtLWpz b24gb3B0aW9uCi0tICAgICAgICA3LiBVc2UgaGVhbHRoY2hlY2sgd2l0aCAtLWpzb24gb3B0aW9u Ci0gICAgIDpleHBlY3RlZHJlc3VsdHM6Ci0gICAgICAgICAxLiBTdWNjZXNzCi0gICAgICAgICAy LiBTdWNjZXNzCi0tICAgICAgICAzLiBoZWFsdGhjaGVjayByZXBvcnRzIERTQkxFMDAwNyBjb2Rl IGFuZCByZWxhdGVkIGRldGFpbHMKLS0gICAgICAgIDQuIGhlYWx0aGNoZWNrIHJlcG9ydHMgRFNC TEUwMDA3IGNvZGUgYW5kIHJlbGF0ZWQgZGV0YWlscwotKyAgICAgICAgMy4gaGVhbHRoY2hlY2sg cmVwb3J0cyBubyBpc3N1ZXMgZm91bmQKLSsgICAgICAgIDQuIGhlYWx0aGNoZWNrIHJlcG9ydHMg bm8gaXNzdWVzIGZvdW5kCi0gICAgICAgICA1LiBTdWNjZXNzCi0tICAgICAgICA2LiBoZWFsdGhj aGVjayByZXBvcnRzIG5vIGlzc3VlcyBmb3VuZAotLSAgICAgICAgNy4gaGVhbHRoY2hlY2sgcmVw b3J0cyBubyBpc3N1ZXMgZm91bmQKLSAgICAgIiIiCi0gCi0tICAgIFJFVF9DT0RFID0gIkRTQkxF MDAwNyIKLSAgICAgUEFSRU5USURfRE4gPSAiY249cGFyZW50aWQsY249aW5kZXgsY249dXNlcnJv b3QsY249bGRibSBkYXRhYmFzZSxjbj1wbHVnaW5zLGNuPWNvbmZpZyIKLSAKLSAgICAgc3RhbmRh bG9uZSA9IHRvcG9sb2d5X3N0LnN0YW5kYWxvbmUKLUBAIC0yMTEsMTcgKzIwNywxNCBAQCBkZWYg dGVzdF9taXNzaW5nX21hdGNoaW5nX3J1bGUodG9wb2xvZ3lfc3QsIGxvZ19idWZmZXJpbmdfZW5h YmxlZCk6Ci0gICAgIHBhcmVudGlkX2luZGV4ID0gSW5kZXgoc3RhbmRhbG9uZSwgUEFSRU5USURf RE4pCi0gICAgIHBhcmVudGlkX2luZGV4LnJlbW92ZSgibnNNYXRjaGluZ1J1bGUiLCAiaW50ZWdl ck9yZGVyaW5nTWF0Y2giKQotIAotLSAgICBydW5faGVhbHRoY2hlY2tfYW5kX2ZsdXNoX2xvZyh0 b3BvbG9neV9zdCwgc3RhbmRhbG9uZSwganNvbj1GYWxzZSwgc2VhcmNoZWRfY29kZT1SRVRfQ09E RSkKLS0gICAgcnVuX2hlYWx0aGNoZWNrX2FuZF9mbHVzaF9sb2codG9wb2xvZ3lfc3QsIHN0YW5k YWxvbmUsIGpzb249VHJ1ZSwgc2VhcmNoZWRfY29kZT1SRVRfQ09ERSkKLSsgICAgcnVuX2hlYWx0 aGNoZWNrX2FuZF9mbHVzaF9sb2codG9wb2xvZ3lfc3QsIHN0YW5kYWxvbmUsIGpzb249RmFsc2Us IHNlYXJjaGVkX2NvZGU9Q01EX09VVFBVVCkKLSsgICAgcnVuX2hlYWx0aGNoZWNrX2FuZF9mbHVz aF9sb2codG9wb2xvZ3lfc3QsIHN0YW5kYWxvbmUsIGpzb249VHJ1ZSwgc2VhcmNoZWRfY29kZT1K U09OX09VVFBVVCkKLSAKLSAgICAgbG9nLmluZm8oIlJlLWFkZCB0aGUgaW50ZWdlck9yZGVyaW5n TWF0Y2ggbWF0Y2hpbmcgcnVsZSIpCi0gICAgIHBhcmVudGlkX2luZGV4ID0gSW5kZXgoc3RhbmRh bG9uZSwgUEFSRU5USURfRE4pCi0gICAgIHBhcmVudGlkX2luZGV4LmFkZCgibnNNYXRjaGluZ1J1 bGUiLCAiaW50ZWdlck9yZGVyaW5nTWF0Y2giKQotICAgICBzdGFuZGFsb25lLnJlc3RhcnQoKQot IAotLSAgICBydW5faGVhbHRoY2hlY2tfYW5kX2ZsdXNoX2xvZyh0b3BvbG9neV9zdCwgc3RhbmRh bG9uZSwganNvbj1GYWxzZSwgc2VhcmNoZWRfY29kZT1DTURfT1VUUFVUKQotLSAgICBydW5faGVh bHRoY2hlY2tfYW5kX2ZsdXNoX2xvZyh0b3BvbG9neV9zdCwgc3RhbmRhbG9uZSwganNvbj1UcnVl LCBzZWFyY2hlZF9jb2RlPUpTT05fT1VUUFVUKQotLQotIAotIGRlZiB0ZXN0X3Vzbl9wbHVnaW5f bWlzc2luZ19lbnRyeXVzbih0b3BvbG9neV9zdCwgdXNuX3BsdWdpbl9lbmFibGVkLCBsb2dfYnVm ZmVyaW5nX2VuYWJsZWQpOgotICAgICAiIiJDaGVjayBpZiBoZWFsdGhjaGVjayByZXR1cm5zIERT QkxFMDAwNyBjb2RlIHdoZW4gVVNOIHBsdWdpbiBpcyBlbmFibGVkIGJ1dCBlbnRyeXVzbiBpbmRl eCBpcyBtaXNzaW5nCi1AQCAtOTExLDcgKzkwNCw5IEBAIGRlZiB0ZXN0X2luZGV4X2NoZWNrX2Zp eGVzX2FuY2VzdG9yaWRfY29uZmlnKHRvcG9sb2d5X3N0KToKLSAKLSAKLSBkZWYgdGVzdF9pbmRl eF9jaGVja19maXhlc19taXNzaW5nX21hdGNoaW5nX3J1bGUodG9wb2xvZ3lfc3QpOgotLSAgICAi IiJDaGVjayBpZiBkc2N0bCBpbmRleC1jaGVjayAtLWZpeCBhZGRzIG1pc3NpbmcgaW50ZWdlck9y ZGVyaW5nTWF0Y2gKLSsgICAgIiIiQ2hlY2sgdGhhdCByZW1vdmluZyBpbnRlZ2VyT3JkZXJpbmdN YXRjaCBmcm9tIHBhcmVudGlkIGNvbmZpZyBpcyBub3QKLSsgICAgZmxhZ2dlZCBhcyBhbiBpc3N1 ZSB3aGVuIGRpc2sgb3JkZXJpbmcgY2Fubm90IGJlIGRldGVybWluZWQuCi0rICAgIEJvdGggbGV4 aWNvZ3JhcGhpYyBhbmQgaW50ZWdlciBvcmRlcmluZ3MgYXJlIHZhbGlkIGZvciBwYXJlbnRpZC4K LSAKLSAgICAgOmlkOiA2YzFkNGU5Zi0wYTNiLTRkNWMtMWU3Zi04YTliMGMyZDNlNGYKLSAgICAg OnNldHVwOiBTdGFuZGFsb25lIGluc3RhbmNlCi1AQCAtOTE5LDE4ICs5MTQsMTQgQEAgZGVmIHRl c3RfaW5kZXhfY2hlY2tfZml4ZXNfbWlzc2luZ19tYXRjaGluZ19ydWxlKHRvcG9sb2d5X3N0KToK LSAgICAgICAgIDEuIENyZWF0ZSBEUyBpbnN0YW5jZQotICAgICAgICAgMi4gU3RvcCB0aGUgc2Vy dmVyCi0gICAgICAgICAzLiBSZW1vdmUgaW50ZWdlck9yZGVyaW5nTWF0Y2ggZnJvbSBwYXJlbnRp ZCBpbmRleCB1c2luZyBEU0VsZGlmCi0tICAgICAgICA0LiBSdW4gZHNjdGwgaW5kZXgtY2hlY2sg KHNob3VsZCBkZXRlY3QgaXNzdWUpCi0tICAgICAgICA1LiBSdW4gZHNjdGwgaW5kZXgtY2hlY2sg LS1maXgKLS0gICAgICAgIDYuIFZlcmlmeSBpbnRlZ2VyT3JkZXJpbmdNYXRjaCB3YXMgYWRkZWQg YmFjawotLSAgICAgICAgNy4gU3RhcnQgdGhlIHNlcnZlcgotKyAgICAgICAgNC4gUnVuIGRzY3Rs IGluZGV4LWNoZWNrIChzaG91bGQgTk9UIGRldGVjdCBpc3N1ZSBzaW5jZSBkaXNrIG9yZGVyaW5n IGlzIHVua25vd24pCi0rICAgICAgICA1LiBTdGFydCB0aGUgc2VydmVyCi0gICAgIDpleHBlY3Rl ZHJlc3VsdHM6Ci0gICAgICAgICAxLiBTdWNjZXNzCi0gICAgICAgICAyLiBTdWNjZXNzCi0gICAg ICAgICAzLiBTdWNjZXNzCi0tICAgICAgICA0LiBpbmRleC1jaGVjayByZXR1cm5zIEZhbHNlIGFu ZCBkZXRlY3RzIG1pc3NpbmcgbWF0Y2hpbmcgcnVsZQotLSAgICAgICAgNS4gaW5kZXgtY2hlY2sg cmV0dXJucyBUcnVlIGFmdGVyIGZpeAotLSAgICAgICAgNi4gaW50ZWdlck9yZGVyaW5nTWF0Y2gg aXMgcHJlc2VudAotLSAgICAgICAgNy4gU3VjY2VzcwotKyAgICAgICAgNC4gaW5kZXgtY2hlY2sg cmV0dXJucyBUcnVlIChubyBpc3N1ZXMsIGRpc2sgb3JkZXJpbmcgdW5rbm93bikKLSsgICAgICAg IDUuIFN1Y2Nlc3MKLSAgICAgIiIiCi0gICAgIGZyb20gbGliMzg5LmNsaV9jdGwuZGJ0YXNrcyBp bXBvcnQgZGJ0YXNrc19pbmRleF9jaGVjawotICAgICBmcm9tIGxpYjM4OS5kc2VsZGlmIGltcG9y dCBEU0VsZGlmCi1AQCAtOTY0LDM0ICs5NTUsMjAgQEAgZGVmIHRlc3RfaW5kZXhfY2hlY2tfZml4 ZXNfbWlzc2luZ19tYXRjaGluZ19ydWxlKHRvcG9sb2d5X3N0KToKLSAgICAgICAgICAgICAgICAg ZiJpbnRlZ2VyT3JkZXJpbmdNYXRjaCBzaG91bGQgYmUgcmVtb3ZlZCwgYnV0IGZvdW5kOiB7bXJ9 IgotICAgICBsb2cuaW5mbygiaW50ZWdlck9yZGVyaW5nTWF0Y2ggcmVtb3ZlZCBmcm9tIHBhcmVu dGlkIGluZGV4IikKLSAKLS0gICAgbG9nLmluZm8oIlJ1biBpbmRleC1jaGVjayB3aXRob3V0IC0t Zml4IChzaG91bGQgZGV0ZWN0IGlzc3VlKSIpCi0rICAgIGxvZy5pbmZvKCJSdW4gaW5kZXgtY2hl Y2sgKHNob3VsZCBOT1QgZGV0ZWN0IGlzc3VlIC0gZGlzayBvcmRlcmluZyB1bmtub3duKSIpCi0g ICAgIGFyZ3MgPSBGYWtlQXJncygpCi0gICAgIGFyZ3MuYmFja2VuZCA9ICJ1c2VyUm9vdCIKLSAg ICAgYXJncy5maXggPSBGYWxzZQotIAotICAgICByZXN1bHQgPSBkYnRhc2tzX2luZGV4X2NoZWNr KHN0YW5kYWxvbmUsIHRvcG9sb2d5X3N0LmxvZ2NhcC5sb2csIGFyZ3MpCi0tICAgIGFzc2VydCBy ZXN1bHQgaXMgRmFsc2UsICJpbmRleC1jaGVjayBzaG91bGQgZGV0ZWN0IG1pc3NpbmcgbWF0Y2hp bmcgcnVsZSIKLS0gICAgYXNzZXJ0IHRvcG9sb2d5X3N0LmxvZ2NhcC5jb250YWlucygibWlzc2lu ZyBpbnRlZ2VyT3JkZXJpbmdNYXRjaCIpCi0rICAgIGFzc2VydCByZXN1bHQgaXMgVHJ1ZSwgXAot KyAgICAgICAgImluZGV4LWNoZWNrIHNob3VsZCBub3QgZmxhZyBtaXNzaW5nIGludGVnZXJPcmRl cmluZ01hdGNoIHdoZW4gZGlzayBvcmRlcmluZyBpcyB1bmtub3duIgotKyAgICBhc3NlcnQgdG9w b2xvZ3lfc3QubG9nY2FwLmNvbnRhaW5zKCJjb3VsZCBub3QgZGV0ZXJtaW5lIGRpc2sgb3JkZXJp bmciKQotICAgICB0b3BvbG9neV9zdC5sb2djYXAuZmx1c2goKQotIAotLSAgICBsb2cuaW5mbygi UnVuIGluZGV4LWNoZWNrIHdpdGggLS1maXgiKQotLSAgICBhcmdzLmZpeCA9IFRydWUKLS0gICAg cmVzdWx0ID0gZGJ0YXNrc19pbmRleF9jaGVjayhzdGFuZGFsb25lLCB0b3BvbG9neV9zdC5sb2dj YXAubG9nLCBhcmdzKQotLSAgICBhc3NlcnQgcmVzdWx0IGlzIFRydWUsICJpbmRleC1jaGVjayAt LWZpeCBzaG91bGQgc3VjY2VlZCIKLS0gICAgYXNzZXJ0IHRvcG9sb2d5X3N0LmxvZ2NhcC5jb250 YWlucygiaW50ZWdlck9yZGVyaW5nTWF0Y2giKQotLSAgICB0b3BvbG9neV9zdC5sb2djYXAuZmx1 c2goKQotLQotLSAgICBsb2cuaW5mbygiVmVyaWZ5IGludGVnZXJPcmRlcmluZ01hdGNoIHdhcyBh ZGRlZCBiYWNrIikKLS0gICAgZHNlX2xkaWYgPSBEU0VsZGlmKHN0YW5kYWxvbmUpICAjIFJlbG9h ZCB0byBnZXQgZnJlc2ggZGF0YQotLSAgICBtYXRjaGluZ19ydWxlcyA9IGRzZV9sZGlmLmdldChw YXJlbnRpZF9kbiwgIm5zTWF0Y2hpbmdSdWxlIikKLS0gICAgYXNzZXJ0IG1hdGNoaW5nX3J1bGVz IGlzIG5vdCBOb25lLCAibnNNYXRjaGluZ1J1bGUgc2hvdWxkIGJlIHByZXNlbnQiCi0tICAgIGZv dW5kX2ludF9vcmRlciA9IEZhbHNlCi0tICAgIGZvciBtciBpbiBtYXRjaGluZ19ydWxlczoKLS0g ICAgICAgIGlmICJpbnRlZ2Vyb3JkZXJpbmdtYXRjaCIgaW4gbXIubG93ZXIoKToKLS0gICAgICAg ICAgICBmb3VuZF9pbnRfb3JkZXIgPSBUcnVlCi0tICAgICAgICAgICAgYnJlYWsKLS0gICAgYXNz ZXJ0IGZvdW5kX2ludF9vcmRlciwgZiJpbnRlZ2VyT3JkZXJpbmdNYXRjaCBzaG91bGQgYmUgcHJl c2VudCwgZ290OiB7bWF0Y2hpbmdfcnVsZXN9IgotLSAgICBsb2cuaW5mbygiaW50ZWdlck9yZGVy aW5nTWF0Y2ggc3VjY2Vzc2Z1bGx5IGFkZGVkIGJhY2siKQotKyAgICBsb2cuaW5mbygiUmVzdG9y ZSBpbnRlZ2VyT3JkZXJpbmdNYXRjaCBhbmQgc3RhcnQgdGhlIHNlcnZlciIpCi0rICAgIGRzZV9s ZGlmID0gRFNFbGRpZihzdGFuZGFsb25lKQotKyAgICBkc2VfbGRpZi5hZGQocGFyZW50aWRfZG4s ICJuc01hdGNoaW5nUnVsZSIsICJpbnRlZ2VyT3JkZXJpbmdNYXRjaCIpCi0gCi0gICAgIGxvZy5p bmZvKCJTdGFydCB0aGUgc2VydmVyIikKLSAgICAgc3RhbmRhbG9uZS5zdGFydCgpCi1AQCAtMTA4 MSw3ICsxMDU4LDcgQEAgZGVmIHRlc3RfaW5kZXhfY2hlY2tfZml4ZXNfbXVsdGlwbGVfaXNzdWVz KHRvcG9sb2d5X3N0KToKLSAgICAgOnN0ZXBzOgotICAgICAgICAgMS4gQ3JlYXRlIERTIGluc3Rh bmNlCi0gICAgICAgICAyLiBTdG9wIHRoZSBzZXJ2ZXIKLS0gICAgICAgIDMuIEFkZCBtdWx0aXBs ZSBpc3N1ZXM6IHNjYW5saW1pdCwgYW5jZXN0b3JpZCBjb25maWcsIG1pc3NpbmcgbWF0Y2hpbmcg cnVsZQotKyAgICAgICAgMy4gQWRkIG11bHRpcGxlIGlzc3Vlczogc2NhbmxpbWl0IGFuZCBhbmNl c3RvcmlkIGNvbmZpZwotICAgICAgICAgNC4gUnVuIGRzY3RsIGluZGV4LWNoZWNrIChzaG91bGQg ZGV0ZWN0IGFsbCBpc3N1ZXMpCi0gICAgICAgICA1LiBSdW4gZHNjdGwgaW5kZXgtY2hlY2sgLS1m aXgKLSAgICAgICAgIDYuIFZlcmlmeSBhbGwgaXNzdWVzIHdlcmUgZml4ZWQKLUBAIC0xMTIzLDE0 ICsxMTAwLDYgQEAgZGVmIHRlc3RfaW5kZXhfY2hlY2tfZml4ZXNfbXVsdGlwbGVfaXNzdWVzKHRv cG9sb2d5X3N0KToKLSAgICAgXQotICAgICBkc2VfbGRpZi5hZGRfZW50cnkoYW5jZXN0b3JpZF9l bnRyeSkKLSAKLS0gICAgbG9nLmluZm8oIkFkZCBpc3N1ZSAzOiBSZW1vdmUgaW50ZWdlck9yZGVy aW5nTWF0Y2ggZnJvbSBwYXJlbnRpZCIpCi0tICAgIGRzZV9sZGlmID0gRFNFbGRpZihzdGFuZGFs b25lKSAgIyBSZWxvYWQKLS0gICAgbWF0Y2hpbmdfcnVsZXMgPSBkc2VfbGRpZi5nZXQocGFyZW50 aWRfZG4sICJuc01hdGNoaW5nUnVsZSIpCi0tICAgIGlmIG1hdGNoaW5nX3J1bGVzOgotLSAgICAg ICAgZm9yIG1yIGluIG1hdGNoaW5nX3J1bGVzOgotLSAgICAgICAgICAgIGlmICJpbnRlZ2Vyb3Jk ZXJpbmdtYXRjaCIgaW4gbXIubG93ZXIoKToKLS0gICAgICAgICAgICAgICAgZHNlX2xkaWYuZGVs ZXRlKHBhcmVudGlkX2RuLCAibnNNYXRjaGluZ1J1bGUiLCBtcikKLS0KLSAgICAgbG9nLmluZm8o IlJ1biBpbmRleC1jaGVjayB3aXRob3V0IC0tZml4IChzaG91bGQgZGV0ZWN0IGFsbCBpc3N1ZXMp IikKLSAgICAgYXJncyA9IEZha2VBcmdzKCkKLSAgICAgYXJncy5iYWNrZW5kID0gInVzZXJSb290 IgotQEAgLTExNjEsMTYgKzExMzAsNiBAQCBkZWYgdGVzdF9pbmRleF9jaGVja19maXhlc19tdWx0 aXBsZV9pc3N1ZXModG9wb2xvZ3lfc3QpOgotICAgICBjbl92YWx1ZSA9IGRzZV9sZGlmLmdldChh bmNlc3RvcmlkX2RuLCAiY24iLCBzaW5nbGU9VHJ1ZSkKLSAgICAgYXNzZXJ0IGNuX3ZhbHVlIGlz IE5vbmUsIGYiYW5jZXN0b3JpZCBjb25maWcgc2hvdWxkIGJlIHJlbW92ZWQsIGdvdDoge2NuX3Zh bHVlfSIKLSAKLS0gICAgIyBDaGVjayBtYXRjaGluZyBydWxlIGFkZGVkIGJhY2sKLS0gICAgbWF0 Y2hpbmdfcnVsZXMgPSBkc2VfbGRpZi5nZXQocGFyZW50aWRfZG4sICJuc01hdGNoaW5nUnVsZSIp Ci0tICAgIGZvdW5kX2ludF9vcmRlciA9IEZhbHNlCi0tICAgIGlmIG1hdGNoaW5nX3J1bGVzOgot LSAgICAgICAgZm9yIG1yIGluIG1hdGNoaW5nX3J1bGVzOgotLSAgICAgICAgICAgIGlmICJpbnRl Z2Vyb3JkZXJpbmdtYXRjaCIgaW4gbXIubG93ZXIoKToKLS0gICAgICAgICAgICAgICAgZm91bmRf aW50X29yZGVyID0gVHJ1ZQotLSAgICAgICAgICAgICAgICBicmVhawotLSAgICBhc3NlcnQgZm91 bmRfaW50X29yZGVyLCBmImludGVnZXJPcmRlcmluZ01hdGNoIHNob3VsZCBiZSBwcmVzZW50LCBn b3Q6IHttYXRjaGluZ19ydWxlc30iCi0tCi0gICAgIGxvZy5pbmZvKCJBbGwgaXNzdWVzIHZlcmlm aWVkIGFzIGZpeGVkIikKLSAKLSAgICAgbG9nLmluZm8oIlJ1biBpbmRleC1jaGVjayBhZ2FpbiB0 byBjb25maXJtIGFsbCBjbGVhciIpCi1kaWZmIC0tZ2l0IGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL3Vw Z3JhZGUuYyBiL2xkYXAvc2VydmVycy9zbGFwZC91cGdyYWRlLmMKLWluZGV4IDZiMWIwMTJkYS4u OTU1N2U5MDY2IDEwMDY0NAotLS0tIGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL3VwZ3JhZGUuYwotKysr IGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL3VwZ3JhZGUuYwotQEAgLTU1MSwxMDcgKzU1MSw2IEBAIHVw Z3JhZGVfcmVtb3ZlX2FuY2VzdG9yaWRfaW5kZXhfY29uZmlnKHZvaWQpCi0gICAgIHJldHVybiB1 cmVzdWx0OwotIH0KLSAKLS0vKgotLSAqIENoZWNrIGlmIHBhcmVudGlkL2FuY2VzdG9yaWQgaW5k ZXhlcyBhcmUgbWlzc2luZyB0aGUgaW50ZWdlck9yZGVyaW5nTWF0Y2gKLS0gKiBtYXRjaGluZyBy dWxlLgotLSAqCi0tICogVGhpcyBmdW5jdGlvbiBsb2dzIGEgd2FybmluZyBpZiB3ZSBkZXRlY3Qg dGhpcyBjb25kaXRpb24sIGFkdmlzaW5nCi0tICogdGhlIGFkbWluaXN0cmF0b3IgdG8gcmVpbmRl eCB0aGUgYWZmZWN0ZWQgYXR0cmlidXRlcy4KLS0gKi8KLS1zdGF0aWMgdXBncmFkZV9zdGF0dXMK LS11cGdyYWRlX2NoZWNrX2lkX2luZGV4X21hdGNoaW5nX3J1bGUodm9pZCkKLS17Ci0tICAgIHN0 cnVjdCBzbGFwaV9wYmxvY2sgKnBiID0gc2xhcGlfcGJsb2NrX25ldygpOwotLSAgICBTbGFwaV9F bnRyeSAqKmJhY2tlbmRzID0gTlVMTDsKLS0gICAgY29uc3QgY2hhciAqYmVfYmFzZV9kbiA9ICJj bj1sZGJtIGRhdGFiYXNlLGNuPXBsdWdpbnMsY249Y29uZmlnIjsKLS0gICAgY29uc3QgY2hhciAq YmVfZmlsdGVyID0gIihvYmplY3RjbGFzcz1uc0JhY2tlbmRJbnN0YW5jZSkiOwotLSAgICBjb25z dCBjaGFyICphdHRyc190b19jaGVja1tdID0geyJwYXJlbnRpZCIsIE5VTEx9OwotLSAgICB1cGdy YWRlX3N0YXR1cyB1cmVzdWx0ID0gVVBHUkFERV9TVUNDRVNTOwotLQotLSAgICAvKiBTZWFyY2gg Zm9yIGFsbCBiYWNrZW5kIGluc3RhbmNlcyAqLwotLSAgICBzbGFwaV9zZWFyY2hfaW50ZXJuYWxf c2V0X3BiKAotLSAgICAgICAgICAgIHBiLCBiZV9iYXNlX2RuLAotLSAgICAgICAgICAgIExEQVBf U0NPUEVfT05FTEVWRUwsCi0tICAgICAgICAgICAgYmVfZmlsdGVyLCBOVUxMLCAwLCBOVUxMLCBO VUxMLAotLSAgICAgICAgICAgIHBsdWdpbl9nZXRfZGVmYXVsdF9jb21wb25lbnRfaWQoKSwgMCk7 Ci0tICAgIHNsYXBpX3NlYXJjaF9pbnRlcm5hbF9wYihwYik7Ci0tICAgIHNsYXBpX3BibG9ja19n ZXQocGIsIFNMQVBJX1BMVUdJTl9JTlRPUF9TRUFSQ0hfRU5UUklFUywgJmJhY2tlbmRzKTsKLS0K LS0gICAgaWYgKGJhY2tlbmRzKSB7Ci0tICAgICAgICBmb3IgKHNpemVfdCBiZV9pZHggPSAwOyBi YWNrZW5kc1tiZV9pZHhdICE9IE5VTEw7IGJlX2lkeCsrKSB7Ci0tICAgICAgICAgICAgY29uc3Qg Y2hhciAqYmVfZG4gPSBzbGFwaV9lbnRyeV9nZXRfZG5fY29uc3QoYmFja2VuZHNbYmVfaWR4XSk7 Ci0tICAgICAgICAgICAgY29uc3QgY2hhciAqYmVfbmFtZSA9IHNsYXBpX2VudHJ5X2F0dHJfZ2V0 X3JlZihiYWNrZW5kc1tiZV9pZHhdLCAiY24iKTsKLS0gICAgICAgICAgICBpZiAoIWJlX2RuIHx8 ICFiZV9uYW1lKSB7Ci0tICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotLSAgICAgICAgICAgIH0K LS0KLS0gICAgICAgICAgICAvKiBDaGVjayBlYWNoIGF0dHJpYnV0ZSB0aGF0IHNob3VsZCBoYXZl IGludGVnZXJPcmRlcmluZ01hdGNoICovCi0tICAgICAgICAgICAgZm9yIChzaXplX3QgYXR0cl9p ZHggPSAwOyBhdHRyc190b19jaGVja1thdHRyX2lkeF0gIT0gTlVMTDsgYXR0cl9pZHgrKykgewot LSAgICAgICAgICAgICAgICBjb25zdCBjaGFyICphdHRyX25hbWUgPSBhdHRyc190b19jaGVja1th dHRyX2lkeF07Ci0tICAgICAgICAgICAgICAgIHN0cnVjdCBzbGFwaV9wYmxvY2sgKmlkeF9wYiA9 IHNsYXBpX3BibG9ja19uZXcoKTsKLS0gICAgICAgICAgICAgICAgU2xhcGlfRW50cnkgKippZHhf ZW50cmllcyA9IE5VTEw7Ci0tICAgICAgICAgICAgICAgIGNoYXIgKmlkeF9kbiA9IHNsYXBpX2Ny ZWF0ZV9kbl9zdHJpbmcoImNuPSVzLGNuPWluZGV4LCVzIiwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cl9uYW1lLCBiZV9kbik7Ci0t ICAgICAgICAgICAgICAgIGNoYXIgKmlkeF9maWx0ZXIgPSAiKG9iamVjdGNsYXNzPW5zSW5kZXgp IjsKLS0gICAgICAgICAgICAgICAgUFJCb29sIGhhc19tYXRjaGluZ19ydWxlID0gUFJfRkFMU0U7 Ci0tCi0tICAgICAgICAgICAgICAgIGlmICghaWR4X2RuKSB7Ci0tICAgICAgICAgICAgICAgICAg ICBzbGFwaV9wYmxvY2tfZGVzdHJveShpZHhfcGIpOwotLSAgICAgICAgICAgICAgICAgICAgY29u dGludWU7Ci0tICAgICAgICAgICAgICAgIH0KLS0KLS0gICAgICAgICAgICAgICAgc2xhcGlfc2Vh cmNoX2ludGVybmFsX3NldF9wYigKLS0gICAgICAgICAgICAgICAgICAgICAgICBpZHhfcGIsIGlk eF9kbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBMREFQX1NDT1BFX0JBU0UsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgaWR4X2ZpbHRlciwgTlVMTCwgMCwgTlVMTCwgTlVMTCwKLS0gICAg ICAgICAgICAgICAgICAgICAgICBwbHVnaW5fZ2V0X2RlZmF1bHRfY29tcG9uZW50X2lkKCksIDAp OwotLSAgICAgICAgICAgICAgICBzbGFwaV9zZWFyY2hfaW50ZXJuYWxfcGIoaWR4X3BiKTsKLS0g ICAgICAgICAgICAgICAgc2xhcGlfcGJsb2NrX2dldChpZHhfcGIsIFNMQVBJX1BMVUdJTl9JTlRP UF9TRUFSQ0hfRU5UUklFUywgJmlkeF9lbnRyaWVzKTsKLS0KLS0gICAgICAgICAgICAgICAgaWYg KGlkeF9lbnRyaWVzICYmIGlkeF9lbnRyaWVzWzBdKSB7Ci0tICAgICAgICAgICAgICAgICAgICAv KiBJbmRleCBleGlzdHMsIGNoZWNrIGlmIGl0IGhhcyBpbnRlZ2VyT3JkZXJpbmdNYXRjaCAqLwot LSAgICAgICAgICAgICAgICAgICAgU2xhcGlfQXR0ciAqbXJfYXR0ciA9IE5VTEw7Ci0tICAgICAg ICAgICAgICAgICAgICBpZiAoc2xhcGlfZW50cnlfYXR0cl9maW5kKGlkeF9lbnRyaWVzWzBdLCAi bnNNYXRjaGluZ1J1bGUiLCAmbXJfYXR0cikgPT0gMCkgewotLSAgICAgICAgICAgICAgICAgICAg ICAgIFNsYXBpX1ZhbHVlICpzdmFsID0gTlVMTDsKLS0gICAgICAgICAgICAgICAgICAgICAgICBp bnQgaWR4OwotLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaWR4ID0gc2xhcGlfYXR0cl9m aXJzdF92YWx1ZShtcl9hdHRyLCAmc3ZhbCk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZHggIT0gLTE7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZHggPSBzbGFwaV9h dHRyX25leHRfdmFsdWUobXJfYXR0ciwgaWR4LCAmc3ZhbCkpIHsKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJlcnZhbCAqYnZhbCA9IHNsYXBpX3ZhbHVlX2dldF9i ZXJ2YWwoc3ZhbCk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidmFsICYmIGJ2 YWwtPmJ2X3ZhbCAmJgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyY2FzZWNt cChidmFsLT5idl92YWwsICJpbnRlZ2VyT3JkZXJpbmdNYXRjaCIpID09IDApIHsKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGhhc19tYXRjaGluZ19ydWxlID0gUFJfVFJVRTsKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9Ci0tICAgICAgICAgICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgICAg ICAgICAgfQotLQotLSAgICAgICAgICAgICAgICAgICAgaWYgKCFoYXNfbWF0Y2hpbmdfcnVsZSkg ewotLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIEluZGV4IGV4aXN0cyBidXQgZG9lc24ndCBo YXZlIGludGVnZXJPcmRlcmluZ01hdGNoLCBsb2cgYSB3YXJuaW5nICovCi0tICAgICAgICAgICAg ICAgICAgICAgICAgc2xhcGlfbG9nX2VycihTTEFQSV9MT0dfRVJSLCAidXBncmFkZV9jaGVja19p ZF9pbmRleF9tYXRjaGluZ19ydWxlIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJJbmRleCAnJXMnIGluIGJhY2tlbmQgJyVzJyBpcyBtaXNzaW5nICduc01hdGNoaW5nUnVsZTog aW50ZWdlck9yZGVyaW5nTWF0Y2gnLiAiCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiSW5jb3JyZWN0bHkgY29uZmlndXJlZCBzeXN0ZW0gaW5kZXhlcyBjYW4gbGVhZCB0byBwb29y IHNlYXJjaCBwZXJmb3JtYW5jZSwgcmVwbGljYXRpb24gaXNzdWVzLCBhbmQgb3RoZXIgb3BlcmF0 aW9uYWwgcHJvYmxlbXMuICIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUbyBm aXggdGhpcywgYWRkIHRoZSBtYXRjaGluZyBydWxlIGFuZCByZWluZGV4OiAiCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiZHNjb25mIDxpbnN0YW5jZT4gYmFja2VuZCBpbmRleCBz ZXQgLS1hZGQtbXIgaW50ZWdlck9yZGVyaW5nTWF0Y2ggLS1hdHRyICVzICVzICYmICIKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkc2NvbmYgPGluc3RhbmNlPiBiYWNrZW5kIGlu ZGV4IHJlaW5kZXggLS1hdHRyICVzICVzLiAiCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiV0FSTklORzogUmVpbmRleGluZyBjYW4gYmUgcmVzb3VyY2UtaW50ZW5zaXZlIGFuZCBt YXkgaW1wYWN0IHNlcnZlciBwZXJmb3JtYW5jZSBvbiBhIGxpdmUgc3lzdGVtLiAiCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uc2lkZXIgc2NoZWR1bGluZyByZWluZGV4aW5n IGR1cmluZyBtYWludGVuYW5jZSB3aW5kb3dzIG9yIHBlcmlvZHMgb2YgbG93IGFjdGl2aXR5Llxu IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJfbmFtZSwgYmVfbmFtZSwg YXR0cl9uYW1lLCBiZV9uYW1lLCBhdHRyX25hbWUsIGJlX25hbWUpOwotLSAgICAgICAgICAgICAg ICAgICAgfQotLSAgICAgICAgICAgICAgICB9Ci0tCi0tICAgICAgICAgICAgICAgIHNsYXBpX2No X2ZyZWVfc3RyaW5nKCZpZHhfZG4pOwotLSAgICAgICAgICAgICAgICBzbGFwaV9mcmVlX3NlYXJj aF9yZXN1bHRzX2ludGVybmFsKGlkeF9wYik7Ci0tICAgICAgICAgICAgICAgIHNsYXBpX3BibG9j a19kZXN0cm95KGlkeF9wYik7Ci0tICAgICAgICAgICAgfQotLSAgICAgICAgfQotLSAgICB9Ci0t Ci0tICAgIHNsYXBpX2ZyZWVfc2VhcmNoX3Jlc3VsdHNfaW50ZXJuYWwocGIpOwotLSAgICBzbGFw aV9wYmxvY2tfZGVzdHJveShwYik7Ci0tCi0tICAgIHJldHVybiB1cmVzdWx0OwotLX0KLSAKLSAv KgotICAqIFVwZ3JhZGUgdGhlIGJhc2UgY29uZmlnIG9mIHRoZSBQQU0gUFRBIHBsdWdpbi4KLUBA IC04NzksMTAgKzc3OCw2IEBAIHVwZ3JhZGVfc2VydmVyKHZvaWQpCi0gICAgICAgICByZXR1cm4g VVBHUkFERV9GQUlMVVJFOwotICAgICB9Ci0gCi0tICAgIGlmICh1cGdyYWRlX2NoZWNrX2lkX2lu ZGV4X21hdGNoaW5nX3J1bGUoKSAhPSBVUEdSQURFX1NVQ0NFU1MpIHsKLS0gICAgICAgIHJldHVy biBVUEdSQURFX0ZBSUxVUkU7Ci0tICAgIH0KLS0KLSAgICAgcmV0dXJuIFVQR1JBREVfU1VDQ0VT UzsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvcnBtLzM4OS1kcy1iYXNlLnNwZWMuaW4gYi9ycG0vMzg5 LWRzLWJhc2Uuc3BlYy5pbgotaW5kZXggYWUzNTlhYjZiLi42MWE4Y2IzNjggMTAwNjQ0Ci0tLS0g YS9ycG0vMzg5LWRzLWJhc2Uuc3BlYy5pbgotKysrIGIvcnBtLzM4OS1kcy1iYXNlLnNwZWMuaW4K LUBAIC02NTAsOSArNjUwLDYgQEAgZm9yIGRpciBpbiAiJGluc3RiYXNlIi9zbGFwZC0qIDsgZG8K LSAgICAgZWxzZQotICAgICAgICBlY2hvICJpbnN0YW5jZSAkaW5zdCBpcyBub3QgcnVubmluZyIg Pj4gIiRvdXRwdXQiIDI+JjEgfHwgOgotICAgICBmaQotLSAgICAjIFJ1biBpbmRleC1jaGVjayBv biBhbGwgaW5zdGFuY2VzIChydW5uaW5nIG9yIG5vdCkKLS0gICAgIyBUaGlzIGZpeGVzIGluZGV4 IG9yZGVyaW5nIG1pc21hdGNoZXMgZnJvbSBvbGRlciB2ZXJzaW9ucwotLSAgICBkc2N0bCAiJGlu c3RfbmFtZSIgaW5kZXgtY2hlY2sgLS1maXggPj4gIiRvdXRwdXQyIiAyPiYxIHx8IDoKLSAgICAg bmluc3Q9JCgobmluc3QgKyAxKSkKLSBkb25lCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYjM4OS9s aWIzODkvYmFja2VuZC5weSBiL3NyYy9saWIzODkvbGliMzg5L2JhY2tlbmQucHkKLWluZGV4IGYz ZGJlN2M5Mi4uNmM4Y2JjMDE4IDEwMDY0NAotLS0tIGEvc3JjL2xpYjM4OS9saWIzODkvYmFja2Vu ZC5weQotKysrIGIvc3JjL2xpYjM4OS9saWIzODkvYmFja2VuZC5weQotQEAgLTY0Nyw5ICs2NDcs MTAgQEAgY2xhc3MgQmFja2VuZChEU0xkYXBPYmplY3QpOgotICAgICAgICAgIyBEZWZhdWx0IHN5 c3RlbSBpbmRleGVzIHRha2VuIGZyb20gbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9pbnN0 YW5jZS5jCi0gICAgICAgICAjIE5vdGU6IGVudHJ5cmRuIGFuZCBhbmNlc3RvcmlkIGFyZSBpbnRl cm5hbCBzeXN0ZW0gaW5kZXhlcyB0aGF0IGFyZSBub3QKLSAgICAgICAgICMgZXhwb3NlZCBpbiBj bj1jb25maWcgLSB0aGV5IGFyZSBtYW5hZ2VkIGludGVybmFsbHkgYnkgdGhlIHNlcnZlci4KLS0g ICAgICAgICMgT25seSBwYXJlbnRpZCBoYXMgYSBEU0UgY29uZmlnIGVudHJ5IChmb3IgdGhlIGlu dGVnZXJPcmRlcmluZ01hdGNoIHJ1bGUpLgotKyAgICAgICAgIyBwYXJlbnRpZCB3b3JrcyBjb3Jy ZWN0bHkgd2l0aCBib3RoIGxleGljb2dyYXBoaWMgYW5kIGludGVnZXIgb3JkZXJpbmcsCi0rICAg ICAgICAjIHNvIGludGVnZXJPcmRlcmluZ01hdGNoIGlzIG5vdCByZXF1aXJlZC4KLSAgICAgICAg IGV4cGVjdGVkX3N5c3RlbV9pbmRleGVzID0gewotLSAgICAgICAgICAgICdwYXJlbnRpZCc6IHsn dHlwZXMnOiBbJ2VxJ10sICdtYXRjaGluZ19ydWxlJzogJ2ludGVnZXJPcmRlcmluZ01hdGNoJ30s Ci0rICAgICAgICAgICAgJ3BhcmVudGlkJzogeyd0eXBlcyc6IFsnZXEnXSwgJ21hdGNoaW5nX3J1 bGUnOiBOb25lfSwKLSAgICAgICAgICAgICAnb2JqZWN0Q2xhc3MnOiB7J3R5cGVzJzogWydlcSdd LCAnbWF0Y2hpbmdfcnVsZSc6IE5vbmV9LAotICAgICAgICAgICAgICdhY2knOiB7J3R5cGVzJzog WydwcmVzJ10sICdtYXRjaGluZ19ydWxlJzogTm9uZX0sCi0gICAgICAgICAgICAgJ25zY3BFbnRy eUROJzogeyd0eXBlcyc6IFsnZXEnXSwgJ21hdGNoaW5nX3J1bGUnOiBOb25lfSwKLWRpZmYgLS1n aXQgYS9zcmMvbGliMzg5L2xpYjM4OS9jbGlfY3RsL2RidGFza3MucHkgYi9zcmMvbGliMzg5L2xp YjM4OS9jbGlfY3RsL2RidGFza3MucHkKLWluZGV4IGNkOTZjZGFmNy4uYjAyZGUyMDNmIDEwMDY0 NAotLS0tIGEvc3JjL2xpYjM4OS9saWIzODkvY2xpX2N0bC9kYnRhc2tzLnB5Ci0rKysgYi9zcmMv bGliMzg5L2xpYjM4OS9jbGlfY3RsL2RidGFza3MucHkKLUBAIC0xMCw2ICsxMCw3IEBACi0gaW1w b3J0IGdsb2IKLSBpbXBvcnQgb3MKLSBpbXBvcnQgcmUKLStpbXBvcnQgc2lnbmFsCi0gaW1wb3J0 IHN1YnByb2Nlc3MKLSBmcm9tIGVudW0gaW1wb3J0IEVudW0KLSBmcm9tIGxpYjM4OS5fY29uc3Rh bnRzIGltcG9ydCBUYXNrV2FybmluZwotQEAgLTI2Myw0NSArMjY0LDUzIEBAIGRlZiBfY2hlY2tf ZGlza19vcmRlcmluZyhkYl9kaXIsIGJhY2tlbmQsIGluZGV4X25hbWUsIGRic2Nhbl9wYXRoLCBp c19tZGIsIGxvZyk6Ci0gICAgICAgICBpZiBub3QgaW5kZXhfZmlsZToKLSAgICAgICAgICAgICBy ZXR1cm4gSW5kZXhPcmRlcmluZy5VTktOT1dOCi0gCi0rICAgICMgT25seSByZWFkIHRoZSBmaXJz dCAxMDAgbGluZXMgZnJvbSBkYnNjYW4gdG8gYXZvaWQgc2Nhbm5pbmcgdGhlCi0rICAgICMgZW50 aXJlIGluZGV4ICh3aGljaCBjYW4gdGFrZSBob3VycyBvbiBsYXJnZSBkYXRhYmFzZXMpLgotICAg ICB0cnk6Ci0tICAgICAgICByZXN1bHQgPSBzdWJwcm9jZXNzLnJ1bigKLSsgICAgICAgIHByb2Mg PSBzdWJwcm9jZXNzLlBvcGVuKAotICAgICAgICAgICAgIFtkYnNjYW5fcGF0aCwgIi1mIiwgaW5k ZXhfZmlsZV0sCi0gICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAg ICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXds aW5lcz1UcnVlLAotLSAgICAgICAgICAgIHRpbWVvdXQ9NjAsCi0gICAgICAgICApCi0gCi0tICAg ICAgICBpZiByZXN1bHQucmV0dXJuY29kZSAhPSAwOgotLSAgICAgICAgICAgIGxvZy53YXJuaW5n KCIgIGRic2NhbiByZXR1cm5lZCBub24temVybyBleGl0IGNvZGUgZm9yICVzIiwgaW5kZXhfZmls ZSkKLS0gICAgICAgICAgICByZXR1cm4gSW5kZXhPcmRlcmluZy5VTktOT1dOCi0tCi0tICAgICAg ICAjIFBhcnNlIGtleXMgZnJvbSBkYnNjYW4gb3V0cHV0Ci0gICAgICAgICBrZXlzID0gW10KLS0g ICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5zdGRvdXQuc3BsaXQoIlxuIik6Ci0rICAgICAgICBs aW5lX2NvdW50ID0gMAotKyAgICAgICAgYXNzZXJ0IHByb2Muc3Rkb3V0IGlzIG5vdCBOb25lCi0r ICAgICAgICBmb3IgbGluZSBpbiBwcm9jLnN0ZG91dDoKLSsgICAgICAgICAgICBsaW5lX2NvdW50 ICs9IDEKLSsgICAgICAgICAgICBpZiBsaW5lX2NvdW50ID4gMTAwOgotKyAgICAgICAgICAgICAg ICBicmVhawotICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKLSAgICAgICAgICAgICBp ZiBsaW5lLnN0YXJ0c3dpdGgoIj0iKToKLSAgICAgICAgICAgICAgICAgbWF0Y2ggPSByZS5tYXRj aChyIl49KFxkKykiLCBsaW5lKQotICAgICAgICAgICAgICAgICBpZiBtYXRjaDoKLSAgICAgICAg ICAgICAgICAgICAgIGtleXMuYXBwZW5kKGludChtYXRjaC5ncm91cCgxKSkpCi0gCi0rICAgICAg ICBwcm9jLnRlcm1pbmF0ZSgpCi0rICAgICAgICB0cnk6Ci0rICAgICAgICAgICAgcHJvYy53YWl0 KHRpbWVvdXQ9NSkKLSsgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkOgot KyAgICAgICAgICAgIHByb2Mua2lsbCgpCi0rICAgICAgICAgICAgcHJvYy53YWl0KCkKLSsKLSsg ICAgICAgIGlmIHByb2MucmV0dXJuY29kZSBub3QgaW4gKDAsIC1zaWduYWwuU0lHVEVSTSk6Ci0r ICAgICAgICAgICAgbG9nLndhcm5pbmcoIiAgZGJzY2FuIHJldHVybmVkIG5vbi16ZXJvIGV4aXQg Y29kZSBmb3IgJXMiLCBpbmRleF9maWxlKQotKyAgICAgICAgICAgIHJldHVybiBJbmRleE9yZGVy aW5nLlVOS05PV04KLSsKLSAgICAgICAgIGlmIGxlbihrZXlzKSA8IDI6Ci0gICAgICAgICAgICAg cmV0dXJuIEluZGV4T3JkZXJpbmcuVU5LTk9XTgotIAotICAgICAgICAgIyBDaGVjayBpZiBrZXlz IGFyZSBpbiBpbnRlZ2VyIG9yZGVyIGJ5IGxvb2tpbmcgZm9yIGRlY3JlYXNpbmcgbnVtZXJpYyB2 YWx1ZXMKLSAgICAgICAgICMgKHdoaWNoIHdvdWxkIGluZGljYXRlIGxleGljb2dyYXBoaWMgb3Jk ZXJpbmcsIGUuZy4sICIzIiA8ICIzMCIgPCAiNCIpCi0gICAgICAgICBwcmV2X2lkID0ga2V5c1sw XQotLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgbWluKGxlbihrZXlzKSwgMTAwKSk6Ci0tICAg ICAgICAgICAgY3VycmVudF9pZCA9IGtleXNbaV0KLSsgICAgICAgIGZvciBjdXJyZW50X2lkIGlu IGtleXNbMTpdOgotICAgICAgICAgICAgIGlmIHByZXZfaWQgPiBjdXJyZW50X2lkOgotICAgICAg ICAgICAgICAgICByZXR1cm4gSW5kZXhPcmRlcmluZy5MRVhJQ09HUkFQSElDCi0gICAgICAgICAg ICAgcHJldl9pZCA9IGN1cnJlbnRfaWQKLSAKLSAgICAgICAgIHJldHVybiBJbmRleE9yZGVyaW5n LklOVEVHRVIKLSAKLS0gICAgZXhjZXB0IHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQ6Ci0tICAg ICAgICBsb2cud2FybmluZygiICBkYnNjYW4gdGltZWQgb3V0IGZvciAlcyIsIGluZGV4X2ZpbGUp Ci0tICAgICAgICByZXR1cm4gSW5kZXhPcmRlcmluZy5VTktOT1dOCi0gICAgIGV4Y2VwdCBPU0Vy cm9yIGFzIGU6Ci0gICAgICAgICBsb2cud2FybmluZygiICBFcnJvciBydW5uaW5nIGRic2Nhbjog JXMiLCBlKQotICAgICAgICAgcmV0dXJuIEluZGV4T3JkZXJpbmcuVU5LTk9XTgotQEAgLTM3NSw4 ICszODQsNyBAQCBkZWYgZGJ0YXNrc19pbmRleF9jaGVjayhpbnN0LCBsb2csIGFyZ3MpOgotIAot ICAgICAjIFRyYWNrIGFsbCBpc3N1ZXMgZm91bmQKLSAgICAgYWxsX29rID0gVHJ1ZQotLSAgICBt aXNtYXRjaGVzID0gW10gICMgKGJhY2tlbmQsIGluZGV4X25hbWUpIHR1cGxlcyBuZWVkaW5nIHJl aW5kZXgKLS0gICAgbWlzc2luZ19tYXRjaGluZ19ydWxlcyA9IFtdICAjIChiYWNrZW5kLCBpbmRl eF9uYW1lKSB0dXBsZXMgbWlzc2luZyBpbnRlZ2VyT3JkZXJpbmdNYXRjaAotKyAgICBjb25maWdf Zml4ZXMgPSBbXSAgIyAoYmFja2VuZCwgaW5kZXhfbmFtZSwgYWN0aW9uKSB0dXBsZXM6IGFjdGlv biBpcyAiYWRkX21yIiBvciAicmVtb3ZlX21yIgotICAgICBzY2FuX2xpbWl0c190b19yZW1vdmUg PSBbXSAgIyAoYmFja2VuZCwgaW5kZXhfbmFtZSkgdHVwbGVzIHdpdGggbnNJbmRleElETGlzdFNj YW5MaW1pdAotICAgICBhbmNlc3RvcmlkX2NvbmZpZ3NfdG9fcmVtb3ZlID0gW10gICMgYmFja2Vu ZCBuYW1lcyB3aXRoIGFuY2VzdG9yaWQgY29uZmlnIGVudHJpZXMKLSAgICAgcmVtb3ZlX2FuY2Vz dG9yaWRfZnJvbV9kZWZhdWx0cyA9IEZhbHNlICAjIEZsYWcgdG8gcmVtb3ZlIGZyb20gY249ZGVm YXVsdCBpbmRleGVzCi1AQCAtNDA5LDEzICs0MTcsNiBAQCBkZWYgZGJ0YXNrc19pbmRleF9jaGVj ayhpbnN0LCBsb2csIGFyZ3MpOgotIAotICAgICAgICAgICAgIGlmIGRpc2tfb3JkZXJpbmcgPT0g SW5kZXhPcmRlcmluZy5VTktOT1dOOgotICAgICAgICAgICAgICAgICBsb2cuaW5mbygiICAlcyAt IGNvdWxkIG5vdCBkZXRlcm1pbmUgZGlzayBvcmRlcmluZywgc2tpcHBpbmciLCBpbmRleF9uYW1l KQotLSAgICAgICAgICAgICAgICAjIEZvciBwYXJlbnRpZCwgc3RpbGwgY2hlY2sgaWYgbWF0Y2hp bmcgcnVsZSBpcyBtaXNzaW5nCi0tICAgICAgICAgICAgICAgIGlmIGluZGV4X25hbWUgPT0gInBh cmVudGlkIjoKLS0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ19oYXNfaW50X29yZGVyID0gX2hh c19pbnRlZ2VyX29yZGVyaW5nX21hdGNoKGRzZV9sZGlmLCBiYWNrZW5kLCBpbmRleF9uYW1lKQot LSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGNvbmZpZ19oYXNfaW50X29yZGVyOgotLSAgICAg ICAgICAgICAgICAgICAgICAgIGxvZy53YXJuaW5nKCIgICVzIC0gbWlzc2luZyBpbnRlZ2VyT3Jk ZXJpbmdNYXRjaCBpbiBjb25maWciLCBpbmRleF9uYW1lKQotLSAgICAgICAgICAgICAgICAgICAg ICAgIG1pc3NpbmdfbWF0Y2hpbmdfcnVsZXMuYXBwZW5kKChiYWNrZW5kLCBpbmRleF9uYW1lKSkK LS0gICAgICAgICAgICAgICAgICAgICAgICBhbGxfb2sgPSBGYWxzZQotICAgICAgICAgICAgICAg ICBjb250aW51ZQotIAotICAgICAgICAgICAgIGNvbmZpZ19oYXNfaW50X29yZGVyID0gX2hhc19p bnRlZ2VyX29yZGVyaW5nX21hdGNoKGRzZV9sZGlmLCBiYWNrZW5kLCBpbmRleF9uYW1lKQotQEAg LTQyMywxOCArNDI0LDE1IEBAIGRlZiBkYnRhc2tzX2luZGV4X2NoZWNrKGluc3QsIGxvZywgYXJn cyk6Ci0gICAgICAgICAgICAgbG9nLmluZm8oIiAgJXMgLSBjb25maWc6ICVzLCBkaXNrOiAlcyIs Ci0gICAgICAgICAgICAgICAgICAgICAgaW5kZXhfbmFtZSwgY29uZmlnX2Rlc2MsIGRpc2tfb3Jk ZXJpbmcudmFsdWUpCi0gCi0tICAgICAgICAgICAgIyBGb3IgcGFyZW50aWQsIHRoZSBkZXNpcmVk IHN0YXRlIGlzIGFsd2F5cyBpbnRlZ2VyIG9yZGVyaW5nCi0rICAgICAgICAgICAgIyBCb3RoIG9y ZGVyaW5ncyBhcmUgdmFsaWQgZm9yIHBhcmVudGlkLCBidXQgY29uZmlnIG11c3QgbWF0Y2ggZGlz ay4KLSAgICAgICAgICAgICBpZiBpbmRleF9uYW1lID09ICJwYXJlbnRpZCI6Ci0tICAgICAgICAg ICAgICAgIGlmIG5vdCBjb25maWdfaGFzX2ludF9vcmRlcjoKLS0gICAgICAgICAgICAgICAgICAg IGxvZy53YXJuaW5nKCIgICVzIC0gbWlzc2luZyBpbnRlZ2VyT3JkZXJpbmdNYXRjaCBpbiBjb25m aWciLCBpbmRleF9uYW1lKQotLSAgICAgICAgICAgICAgICAgICAgaWYgKGJhY2tlbmQsIGluZGV4 X25hbWUpIG5vdCBpbiBtaXNzaW5nX21hdGNoaW5nX3J1bGVzOgotLSAgICAgICAgICAgICAgICAg ICAgICAgIG1pc3NpbmdfbWF0Y2hpbmdfcnVsZXMuYXBwZW5kKChiYWNrZW5kLCBpbmRleF9uYW1l KSkKLSsgICAgICAgICAgICAgICAgaWYgY29uZmlnX2hhc19pbnRfb3JkZXIgYW5kIGRpc2tfb3Jk ZXJpbmcgPT0gSW5kZXhPcmRlcmluZy5MRVhJQ09HUkFQSElDOgotKyAgICAgICAgICAgICAgICAg ICAgbG9nLndhcm5pbmcoIiAgJXMgLSBNSVNNQVRDSDogY29uZmlnIGhhcyBpbnRlZ2VyT3JkZXJp bmdNYXRjaCBidXQgZGlzayBpcyBsZXhpY29ncmFwaGljIiwgaW5kZXhfbmFtZSkKLSsgICAgICAg ICAgICAgICAgICAgIGNvbmZpZ19maXhlcy5hcHBlbmQoKGJhY2tlbmQsIGluZGV4X25hbWUsICJy ZW1vdmVfbXIiKSkKLSAgICAgICAgICAgICAgICAgICAgIGFsbF9vayA9IEZhbHNlCi0tCi0tICAg ICAgICAgICAgICAgIGlmIGRpc2tfb3JkZXJpbmcgPT0gSW5kZXhPcmRlcmluZy5MRVhJQ09HUkFQ SElDOgotLSAgICAgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoIiAgJXMgLSBkaXNrIG9yZGVy aW5nIGlzIGxleGljb2dyYXBoaWMsIG5lZWRzIHJlaW5kZXgiLCBpbmRleF9uYW1lKQotLSAgICAg ICAgICAgICAgICAgICAgaWYgKGJhY2tlbmQsIGluZGV4X25hbWUpIG5vdCBpbiBtaXNtYXRjaGVz OgotLSAgICAgICAgICAgICAgICAgICAgICAgIG1pc21hdGNoZXMuYXBwZW5kKChiYWNrZW5kLCBp bmRleF9uYW1lKSkKLSsgICAgICAgICAgICAgICAgZWxpZiBub3QgY29uZmlnX2hhc19pbnRfb3Jk ZXIgYW5kIGRpc2tfb3JkZXJpbmcgPT0gSW5kZXhPcmRlcmluZy5JTlRFR0VSOgotKyAgICAgICAg ICAgICAgICAgICAgbG9nLndhcm5pbmcoIiAgJXMgLSBNSVNNQVRDSDogY29uZmlnIGlzIGxleGlj b2dyYXBoaWMgYnV0IGRpc2sgaGFzIGludGVnZXIgb3JkZXJpbmciLCBpbmRleF9uYW1lKQotKyAg ICAgICAgICAgICAgICAgICAgY29uZmlnX2ZpeGVzLmFwcGVuZCgoYmFja2VuZCwgaW5kZXhfbmFt ZSwgImFkZF9tciIpKQotICAgICAgICAgICAgICAgICAgICAgYWxsX29rID0gRmFsc2UKLSAKLSAg ICAgIyBIYW5kbGUgaXNzdWVzCi1AQCAtNDgwLDI2ICs0NzgsMjcgQEAgZGVmIGRidGFza3NfaW5k ZXhfY2hlY2soaW5zdCwgbG9nLCBhcmdzKToKLSAgICAgICAgICAgICAgICAgICAgIGxvZy5lcnJv cigiICBGYWlsZWQgdG8gcmVtb3ZlIGFuY2VzdG9yaWQgY29uZmlnIGZyb20gYmFja2VuZCAlczog JXMiLCBiYWNrZW5kLCBlKQotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gCi0t ICAgICAgICAgICAgIyBBZGQgbWlzc2luZyBtYXRjaGluZyBydWxlcyB0byBkc2UubGRpZgotLSAg ICAgICAgICAgIGZvciBiYWNrZW5kLCBpbmRleF9uYW1lIGluIG1pc3NpbmdfbWF0Y2hpbmdfcnVs ZXM6Ci0rICAgICAgICAgICAgIyBGaXggY29uZmlnLXZzLWRpc2sgb3JkZXJpbmcgbWlzbWF0Y2hl cyBieSBhZGp1c3RpbmcgY29uZmlnIHRvIG1hdGNoIGRpc2sKLSsgICAgICAgICAgICBmb3IgYmFj a2VuZCwgaW5kZXhfbmFtZSwgYWN0aW9uIGluIGNvbmZpZ19maXhlczoKLSAgICAgICAgICAgICAg ICAgaW5kZXhfZG4gPSAiY249e30sY249aW5kZXgsY249e30sY249bGRibSBkYXRhYmFzZSxjbj1w bHVnaW5zLGNuPWNvbmZpZyIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgaW5kZXhfbmFt ZSwgYmFja2VuZAotICAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgICAgIGxvZy5pbmZv KCIgIEFkZGluZyBpbnRlZ2VyT3JkZXJpbmdNYXRjaCB0byAlcyBpbiBiYWNrZW5kICVzLi4uIiwg aW5kZXhfbmFtZSwgYmFja2VuZCkKLS0gICAgICAgICAgICAgICAgdHJ5OgotLSAgICAgICAgICAg ICAgICAgICAgZHNlX2xkaWYuYWRkKGluZGV4X2RuLCAibnNNYXRjaGluZ1J1bGUiLCAiaW50ZWdl ck9yZGVyaW5nTWF0Y2giKQotLSAgICAgICAgICAgICAgICAgICAgbG9nLmluZm8oIiAgVXBkYXRl ZCBkc2UubGRpZiB3aXRoIGludGVnZXJPcmRlcmluZ01hdGNoIGZvciAlcyIsIGluZGV4X25hbWUp Ci0tICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLS0gICAgICAgICAgICAg ICAgICAgIGxvZy5lcnJvcigiICBGYWlsZWQgdG8gdXBkYXRlIGRzZS5sZGlmIGZvciAlczogJXMi LCBpbmRleF9uYW1lLCBlKQotLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0tCi0t ICAgICAgICAgICAgIyBSZWluZGV4IGluZGV4ZXMgd2l0aCBkaXNrIG9yZGVyaW5nIGlzc3Vlcwot LSAgICAgICAgICAgIGZvciBiYWNrZW5kLCBpbmRleF9uYW1lIGluIG1pc21hdGNoZXM6Ci0tICAg ICAgICAgICAgICAgIGxvZy5pbmZvKCIgIFJlaW5kZXhpbmcgJXMgaW4gYmFja2VuZCAlcy4uLiIs IGluZGV4X25hbWUsIGJhY2tlbmQpCi0tICAgICAgICAgICAgICAgIGlmIG5vdCBpbnN0LmRiMmlu ZGV4KGJlbmFtZT1iYWNrZW5kLCBhdHRycz1baW5kZXhfbmFtZV0pOgotLSAgICAgICAgICAgICAg ICAgICAgbG9nLmVycm9yKCIgIEZhaWxlZCB0byByZWluZGV4ICVzIiwgaW5kZXhfbmFtZSkKLS0g ICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotLSAgICAgICAgICAgICAgICBsb2cuaW5m bygiICBSZWluZGV4IG9mICVzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkiLCBpbmRleF9uYW1lKQot KyAgICAgICAgICAgICAgICBpZiBhY3Rpb24gPT0gImFkZF9tciI6Ci0rICAgICAgICAgICAgICAg ICAgICBsb2cuaW5mbygiICBBZGRpbmcgaW50ZWdlck9yZGVyaW5nTWF0Y2ggdG8gJXMgaW4gYmFj a2VuZCAlcy4uLiIsIGluZGV4X25hbWUsIGJhY2tlbmQpCi0rICAgICAgICAgICAgICAgICAgICB0 cnk6Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZHNlX2xkaWYuYWRkKGluZGV4X2RuLCAibnNN YXRjaGluZ1J1bGUiLCAiaW50ZWdlck9yZGVyaW5nTWF0Y2giKQotKyAgICAgICAgICAgICAgICAg ICAgICAgIGxvZy5pbmZvKCIgIFVwZGF0ZWQgZHNlLmxkaWYgd2l0aCBpbnRlZ2VyT3JkZXJpbmdN YXRjaCBmb3IgJXMiLCBpbmRleF9uYW1lKQotKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4 Y2VwdGlvbiBhcyBlOgotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5lcnJvcigiICBGYWls ZWQgdG8gdXBkYXRlIGRzZS5sZGlmIGZvciAlczogJXMiLCBpbmRleF9uYW1lLCBlKQotKyAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotKyAgICAgICAgICAgICAgICBlbGlmIGFj dGlvbiA9PSAicmVtb3ZlX21yIjoKLSsgICAgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCIgIFJl bW92aW5nIGludGVnZXJPcmRlcmluZ01hdGNoIGZyb20gJXMgaW4gYmFja2VuZCAlcy4uLiIsIGlu ZGV4X25hbWUsIGJhY2tlbmQpCi0rICAgICAgICAgICAgICAgICAgICB0cnk6Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgZHNlX2xkaWYuZGVsZXRlKGluZGV4X2RuLCAibnNNYXRjaGluZ1J1bGUi LCAiaW50ZWdlck9yZGVyaW5nTWF0Y2giKQotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5p bmZvKCIgIFJlbW92ZWQgaW50ZWdlck9yZGVyaW5nTWF0Y2ggZnJvbSAlcyIsIGluZGV4X25hbWUp Ci0rICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgbG9nLmVycm9yKCIgIEZhaWxlZCB0byByZW1vdmUgaW50ZWdlck9yZGVy aW5nTWF0Y2ggZnJvbSAlczogJXMiLCBpbmRleF9uYW1lLCBlKQotKyAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBGYWxzZQotIAotICAgICAgICAgICAgIGxvZy5pbmZvKCJBbGwgaXNzdWVz IGZpeGVkIikKLSAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotQEAgLTU2Myw1ICs1NjIsNSBAQCBk ZWYgY3JlYXRlX3BhcnNlcihzdWJjb21tYW5kcyk6Ci0gICAgIGluZGV4X2NoZWNrX3BhcnNlci5h ZGRfYXJndW1lbnQoJ2JhY2tlbmQnLCBuYXJncz0nPycsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAg IGhlbHA9IkJhY2tlbmQgdG8gY2hlY2suIElmIG5vdCBzcGVjaWZpZWQsIGFsbCBiYWNrZW5kcyBh cmUgY2hlY2tlZC4iKQotICAgICBpbmRleF9jaGVja19wYXJzZXIuYWRkX2FyZ3VtZW50KCctLWZp eCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0tICAgICAgICBoZWxwPSJG aXggbWlzbWF0Y2hlcyBieSByZWluZGV4aW5nIGFmZmVjdGVkIGluZGV4ZXMiKQotKyAgICAgICAg aGVscD0iRml4IG1pc21hdGNoZXMgYnkgYWRqdXN0aW5nIGNvbmZpZyB0byBtYXRjaCBvbi1kaXNr IGRhdGEiKQotICAgICBpbmRleF9jaGVja19wYXJzZXIuc2V0X2RlZmF1bHRzKGZ1bmM9ZGJ0YXNr c19pbmRleF9jaGVjaykKLS0tIAotMi41My4wCi0KCmRpZmYgLS1naXQgYS8wMDI2LVNlY3VyaXR5 LWZpeC1mb3ItQ1ZFLTIwMjUtMTQ5MDUucGF0Y2ggYi8wMDI2LVNlY3VyaXR5LWZpeC1mb3ItQ1ZF LTIwMjUtMTQ5MDUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0NjliNjEu LjAwMDAwMDAKLS0tIGEvMDAyNi1TZWN1cml0eS1maXgtZm9yLUNWRS0yMDI1LTE0OTA1LnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotRnJvbSBlMjU2MmY1ODk0ZGQwNWEzYjA2 MmU3ODIwZjQ3MWYyZjhlMTJiODVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogdGJv cmRheiA8dGJvcmRhekByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAyNSBGZWIgMjAyNiAxNDowNjo0 MiArMDEwMAotU3ViamVjdDogW1BBVENIXSBTZWN1cml0eSBmaXggZm9yIENWRS0yMDI1LTE0OTA1 Ci0KLURlc2NyaXB0aW9uOgotCUEgdnVsbmVyYWJpbGl0eSB3YXMgZm91bmQgaW4gdGhlIDM4OSBE aXJlY3RvcnkgU2VydmVyLgotCVRoZSAzODkgRGlyZWN0b3J5IFNlcnZlciBwcmVzZW50IGEgcmlz ayBvZiBoZWFwIGJ1ZmZlciBvdmVyZmxvdyB0aGF0Ci0JY2FuIGJlIGV4cGxvaXRlZCB0byBleGN1 dGUgYSBEZW5pYWwgb2YgU2VydmljZSBhbmQgcG90ZW50aWFsIFJlbW90ZQotCUNvZGUgRXhlY3V0 aW9uCi0KLVJlZmVyZW5jZXM6Ci0gICAgLSBodHRwczovL2FjY2Vzcy5yZWRoYXQuY29tL3NlY3Vy aXR5L2N2ZS9DVkUtMjAyNS0xNDkwNQotICAgIC0gaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29t L3Nob3dfYnVnLmNnaT9pZD0yNDIzNjI0Ci0tLS0KLSBsZGFwL3NlcnZlcnMvc2xhcGQvc2NoZW1h LmMgfCA0NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCi0gMSBmaWxlIGNo YW5nZWQsIDM4IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9s ZGFwL3NlcnZlcnMvc2xhcGQvc2NoZW1hLmMgYi9sZGFwL3NlcnZlcnMvc2xhcGQvc2NoZW1hLmMK LWluZGV4IDllZjRlZTRiZi4uNzcxMmE3MjBkIDEwMDY0NAotLS0tIGEvbGRhcC9zZXJ2ZXJzL3Ns YXBkL3NjaGVtYS5jCi0rKysgYi9sZGFwL3NlcnZlcnMvc2xhcGQvc2NoZW1hLmMKLUBAIC0xNDEw LDYgKzE0MTAsNyBAQCBzY2hlbWFfYXR0cl9lbnVtX2NhbGxiYWNrKHN0cnVjdCBhc3ludGF4aW5m byAqYXNpcCwgdm9pZCAqYXJnKQotICAgICBjb25zdCBjaGFyICphdHRyX2Rlc2MsICpzeW50YXhv aWQ7Ci0gICAgIGNoYXIgKm91dHAsIHN5bnRheGxlbmd0aGJ1ZlsxMjhdOwotICAgICBpbnQgaTsK LSsgICAgaW50IG5iX2FsaWFzZXMgPSAwOwotIAotICAgICB2YWxzWzBdID0gJnZhbDsKLSAKLUBA IC0xNDM1LDYgKzE0MzYsNyBAQCBzY2hlbWFfYXR0cl9lbnVtX2NhbGxiYWNrKHN0cnVjdCBhc3lu dGF4aW5mbyAqYXNpcCwgdm9pZCAqYXJnKQotICAgICBpZiAoYXNpcC0+YXNpX2FsaWFzZXMgIT0g TlVMTCkgewotICAgICAgICAgZm9yIChpID0gMDsgYXNpcC0+YXNpX2FsaWFzZXNbaV0gIT0gTlVM TDsgKytpKSB7Ci0gICAgICAgICAgICAgYWxpYXNsZW4gKz0gc3RybGVuKGFzaXAtPmFzaV9hbGlh c2VzW2ldKTsKLSsgICAgICAgICAgICBuYl9hbGlhc2VzKys7Ci0gICAgICAgICB9Ci0gICAgIH0K LSAKLUBAIC0xNDUyLDE1ICsxNDU0LDQyIEBAIHNjaGVtYV9hdHRyX2VudW1fY2FsbGJhY2soc3Ry dWN0IGFzeW50YXhpbmZvICphc2lwLCB2b2lkICphcmcpCi0gICAgICAqIFhYWDogMjU2IGlzIGEg bWFnaWMgbnVtYmVyLi4uIGl0IG11c3QgYmUgYmlnIGVub3VnaCB0byBhY2NvdW50IGZvcgotICAg ICAgKiBhbGwgb2YgdGhlIGZpeGVkIHNpemVkIGl0ZW1zIHdlIG91dHB1dC4KLSAgICAgICovCi0t ICAgIHNpemVkYnVmZmVyX2FsbG9jYXRlKGFldy0+cHNiQXR0clR5cGVzLCAyNTYgKyBzdHJsZW4o YXNpcC0+YXNpX29pZCkgKwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cmxlbihhc2lwLT5hc2lfbmFtZSkgKwotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWFzbGVuICsgc3RybGVuX251bGxfb2soYXR0 cl9kZXNjKSArCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RybGVuKHN5bnRheG9pZCkgKwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cmxlbl9udWxsX29rKGFzaXAtPmFzaV9zdXBlcmlvcikgKwotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbl9udWxs X29rKGFzaXAtPmFzaV9tcl9lcXVhbGl0eSkgKwotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbl9udWxsX29rKGFzaXAtPmFzaV9tcl9vcmRlcmlu ZykgKwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cmxlbl9udWxsX29rKGFzaXAtPmFzaV9tcl9zdWJzdHJpbmcpICsKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJjYXRfZXh0ZW5zaW9ucyhOVUxMLCBh c2lwLT5hc2lfZXh0ZW5zaW9ucykpOwotKyAgICB7Ci0rICAgICAgICBpbnQgYXNpX29pZF9zdHJs ZW4gPSBzdHJsZW4oYXNpcC0+YXNpX29pZCkgKyA4OyAgICAgIC8qICIoICVzIE5BTUUgIiAqLwot KyAgICAgICAgaW50IGFzaV9uYW1lX3N0cmxlbiA9IHN0cmxlbihhc2lwLT5hc2lfbmFtZSkgKyA2 OyAgICAvKiAiKCAnJXMnIC4uLikiICovCi0rICAgICAgICBpbnQgYXNpX2FsaWFzZXNfc3RybGVu ID0gYWxpYXNsZW4gKyBuYl9hbGlhc2VzICogMzsgIC8qICInJXMnICIgKi8KLSsgICAgICAgIGlu dCBhc2lfZGVzY19zdHJsZW4gPSBzdHJsZW5fbnVsbF9vayhhdHRyX2Rlc2MpICsgNzsgLyogIkRF U0MgJyVzJyIgKi8KLSsgICAgICAgIGludCBhc2lfc3ludGF4b2lkX3N0cmxlbiA9IHN0cmxlbigi U1lOVEFYICIpICsgc3RybGVuKHN5bnRheG9pZCkgKyBzdHJsZW4oc3ludGF4bGVuZ3RoYnVmKTsK LSsgICAgICAgIGludCBhc2lfc3VwZXJpb3Jfc3RybGVuID0gc3RybGVuKCJTVVAgIikgKyBzdHJs ZW5fbnVsbF9vayhhc2lwLT5hc2lfc3VwZXJpb3IpOwotKyAgICAgICAgaW50IGFzaV9tcl9lcXVh bGl0eV9zdHJsZW4gPSBzdHJsZW4oIkVRVUFMSVRZICIpICsgc3RybGVuX251bGxfb2soYXNpcC0+ YXNpX21yX2VxdWFsaXR5KTsKLSsgICAgICAgIGludCBhc2lfbXJfb3JkZXJpbmdfc3RybGVuID0g c3RybGVuKCJPUkRFUklORyAiKSArIHN0cmxlbl9udWxsX29rKGFzaXAtPmFzaV9tcl9vcmRlcmlu Zyk7Ci0rICAgICAgICBpbnQgYXNpX21yX3N1YnN0cmluZ19zdHJsZW4gPSBzdHJsZW4oIlNVQlNU UiAiKSArIHN0cmxlbl9udWxsX29rKGFzaXAtPmFzaV9tcl9zdWJzdHJpbmcpOwotKyAgICAgICAg aW50IGFzaV9mbGFnc19zdHJsZW4gPSBzdHJsZW4oIlNJTkdMRS1WQUxVRSAiKSArCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihzY2hlbWFfb2Jzb2xldGVfd2l0aF9zcGFj ZXMpICsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKHNjaGVtYV9jb2xs ZWN0aXZlX3dpdGhfc3BhY2VzKSArCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cmxlbihzY2hlbWFfbm91c2VybW9kX3dpdGhfc3BhY2VzKSArCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cmxlbigiVVNBR0UgZGlzdHJpYnV0ZWRPcGVyYXRpb24gIikgKwotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oIlVTQUdFIGRTQU9wZXJhdGlvbiAi KSArCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbigiVVNBR0UgZGlyZWN0 b3J5T3BlcmF0aW9uICIpOwotKyAgICAgICAgaW50IGFzaV9leHRlbnNpb25fc3RybGVuID0gc3Ry Y2F0X2V4dGVuc2lvbnMoTlVMTCwgYXNpcC0+YXNpX2V4dGVuc2lvbnMpOwotKwotKyAgICAgICAg aWYgKGFldy0+ZW5xdW90ZV9zdXBfb2MpIHsKLSsgICAgICAgICAgICAvKiBpdCBlbnF1b3RlIHRo ZSBzeW50YXggb2lkICovCi0rICAgICAgICAgICAgYXNpX3N5bnRheG9pZF9zdHJsZW4gKz0gMjsK LSsgICAgICAgIH0KLSsKLSsgICAgc2l6ZWRidWZmZXJfYWxsb2NhdGUoYWV3LT5wc2JBdHRyVHlw ZXMsIDI1NiArIGFzaV9vaWRfc3RybGVuICsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGFzaV9uYW1lX3N0cmxlbiArCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2lfYWxpYXNlc19zdHJsZW4gKwot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNpX2Rl c2Nfc3RybGVuICsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFzaV9zeW50YXhvaWRfc3RybGVuICsKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFzaV9zdXBlcmlvcl9zdHJsZW4gKwotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNpX21yX2VxdWFsaXR5 X3N0cmxlbiArCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhc2lfbXJfb3JkZXJpbmdfc3RybGVuICsKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFzaV9tcl9zdWJzdHJpbmdfc3RybGVuICsKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzaV9leHRlbnNp b25fc3RybGVuICsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFzaV9mbGFnc19zdHJsZW4pOwotKyAgICB9Ci0gCi0gICAgIC8qCi0gICAgICAqIE92 ZXJhbGwgc3RyYXRlZ3kgaXMgdG8gbWFpbnRhaW4gYSBwb2ludGVyIHRvIHRoZSBuZXh0IGxvY2F0 aW9uIGluCi0tLSAKLTIuNTMuMAotCgpkaWZmIC0tZ2l0IGEvMDAyNy1Jc3N1ZS03MzAyLWRibGli LWJkYjJtZGItZmFpbHMtb24tRjQzLUY0My11cGdyYWRlLTczLnBhdGNoIGIvMDAyNy1Jc3N1ZS03 MzAyLWRibGliLWJkYjJtZGItZmFpbHMtb24tRjQzLUY0My11cGdyYWRlLTczLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDA1NGY5Li4wMDAwMDAwCi0tLSBhLzAwMjctSXNz dWUtNzMwMi1kYmxpYi1iZGIybWRiLWZhaWxzLW9uLUY0My1GNDMtdXBncmFkZS03My5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gM2Y1ZjMyZWYzNmNmMmM3OTdjOTM3 OWViYTFiYTJkOGIyZmQ5ODQxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFZpa3Rv ciBBc2hpcm92IDx2YXNoaXJvdkByZWRoYXQuY29tPgotRGF0ZTogRnJpLCA2IE1hciAyMDI2IDE3 OjE5OjU4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIElzc3VlIDczMDIgLSBkYmxpYiBiZGIybWRi IGZhaWxzIG9uIEY0MyAtPiBGNDMgdXBncmFkZQotICgjNzMwMykKLQotQnVnIERlc2NyaXB0aW9u OgotYGRiLT5zdGF0YCBpcyBzdHViYmVkIHdpdGggYG5vdGhpbmcoKWAgd2hpY2ggcmV0dXJucyBE Ql9TVUNDRVNTIHdpdGhvdXQKLXBvcHVsYXRpbmcgdGhlIHN0YXRzIG91dHB1dCBwYXJhbWV0ZXIu IEJvdGggYGJkYl9nZXRfcGFnZV9jb3VudCgpYCBhbmQKLWBiZGJfZ2V0X2VudHJpZXNfY291bnQo KWAgdGhlbiBkZXJlZmVyZW5jZSB0aGUgTlVMTCBzdGF0cyBwb2ludGVyLAotY2F1c2luZyBhIHNl Z2ZhdWx0LgotCi1GaXggRGVzY3JwdGlvbjoKLUFkZCBOVUxMIGNoZWNrcyBmb3IgdGhlIHN0YXRz IHBvaW50ZXIgYWZ0ZXIgYGRiLT5zdGF0KClgIGNhbGxzIGluIGJvdGgKLWBiZGJfZ2V0X3BhZ2Vf Y291bnQoKWAgYW5kIGBiZGJfZ2V0X2VudHJpZXNfY291bnQoKWAuCi0KLUZpeGVzOiBodHRwczov L2dpdGh1Yi5jb20vMzg5ZHMvMzg5LWRzLWJhc2UvaXNzdWVzLzczMDIKLQotUmV2aWV3ZWQgYnk6 IEB0Ym9yZGF6LCBAcHJvZ2llcjM4OSAoVGhhbmtzISkKLS0tLQotIC4uLi9zbGFwZC9iYWNrLWxk Ym0vZGItYmRiL2JkYl9sYXllci5jICAgICAgICB8IDIwICsrKysrKysrKysrKysrKy0tLS0KLSAx IGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAt LWdpdCBhL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vZGItYmRiL2JkYl9sYXllci5jIGIv bGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9kYi1iZGIvYmRiX2xheWVyLmMKLWluZGV4IDVj NjFlMzBiMi4uNGU1ZjlmZDk4IDEwMDY0NAotLS0tIGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2st bGRibS9kYi1iZGIvYmRiX2xheWVyLmMKLSsrKyBiL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxk Ym0vZGItYmRiL2JkYl9sYXllci5jCi1AQCAtMTc4OCwxMSArMTc4OCwxNyBAQCBiZGJfZ2V0X3Bh Z2VfY291bnQoZGJpX2RiX3QgKmRiLCB1aW50MzJfdCAqY291bnQpCi0gICAgIHJjID0gKChEQiop ZGIpLT5zdGF0KGRiLCAoREJfVFhOKil0eG4sICh2b2lkICopJnN0YXRzLCAwKTsKLSAgICAgaWYg KHJjICE9IDApIHsKLSAgICAgICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX0VSUiwgImJkYl9n ZXRfcGFnZV9jb3VudCIsCi0tICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gZ2V0IGJk IHN0YXRpc3RpY3M6IGRiIGVycm9yIC0gJWQgJXNcbiIsCi0rICAgICAgICAgICAgICAgICAgICAg ICJGYWlsZWQgdG8gZ2V0IGRiIHN0YXRpc3RpY3M6IGRiIGVycm9yIC0gJWQgJXNcbiIsCi0gICAg ICAgICAgICAgICAgICAgICAgIHJjLCBkYl9zdHJlcnJvcihyYykpOwotICAgICAgICAgcmMgPSBE QklfUkNfT1RIRVI7Ci0rICAgICAgICAqY291bnQgPSAwOwotKyAgICB9IGVsc2UgaWYgKHN0YXRz ID09IE5VTEwpIHsKLSsgICAgICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX0lORk8sICJiZGJf Z2V0X3BhZ2VfY291bnQiLAotKyAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGdldCBk YiBzdGF0aXN0aWNzOiBzdGF0cyBpcyBOVUxMLCBkZWZhdWx0aW5nIHBhZ2UgY291bnQgdG8gMFxu Iik7Ci0rICAgICAgICAqY291bnQgPSAwOwotKyAgICB9IGVsc2UgewotKyAgICAgICAgKmNvdW50 ID0gc3RhdHMtPmJ0X3BhZ2VjbnQ7Ci0gICAgIH0KLS0gICAgKmNvdW50ID0gcmMgPyAwIDogc3Rh dHMtPmJ0X3BhZ2VjbnQ7Ci0gICAgIHNsYXBpX2NoX2ZyZWUoKHZvaWQgKiopJnN0YXRzKTsKLSAg ICAgcmV0dXJuIHJjOwotIH0KLUBAIC03MDg0LDExICs3MDkwLDE3IEBAIGJkYl9nZXRfZW50cmll c19jb3VudChkYmlfZGJfdCAqZGIsIGRiaV90eG5fdCAqdHhuLCBpbnQgKmNvdW50KQotICAgICBy YyA9ICgoREIqKWRiKS0+c3RhdChkYiwgKERCX1RYTiopdHhuLCAodm9pZCAqKSZzdGF0cywgMCk7 Ci0gICAgIGlmIChyYyAhPSAwKSB7Ci0gICAgICAgICBzbGFwaV9sb2dfZXJyKFNMQVBJX0xPR19F UlIsICJiZGJfZ2V0X2VudHJpZXNfY291bnQiLAotLSAgICAgICAgICAgICAgICAgICAgICAiRmFp bGVkIHRvIGdldCBiZCBzdGF0aXN0aWNzOiBkYiBlcnJvciAtICVkICVzXG4iLAotKyAgICAgICAg ICAgICAgICAgICAgICAiRmFpbGVkIHRvIGdldCBkYiBzdGF0aXN0aWNzOiBkYiBlcnJvciAtICVk ICVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICByYywgZGJfc3RyZXJyb3IocmMpKTsKLSAg ICAgICAgIHJjID0gREJJX1JDX09USEVSOwotKyAgICAgICAgKmNvdW50ID0gMDsKLSsgICAgfSBl bHNlIGlmIChzdGF0cyA9PSBOVUxMKSB7Ci0rICAgICAgICBzbGFwaV9sb2dfZXJyKFNMQVBJX0xP R19JTkZPLCAiYmRiX2dldF9lbnRyaWVzX2NvdW50IiwKLSsgICAgICAgICAgICAgICAgICAgICAg IkZhaWxlZCB0byBnZXQgZGIgc3RhdGlzdGljczogc3RhdHMgaXMgTlVMTCwgZGVmYXVsdGluZyBl bnRyaWVzIGNvdW50IHRvIDBcbiIpOwotKyAgICAgICAgKmNvdW50ID0gMDsKLSsgICAgfSBlbHNl IHsKLSsgICAgICAgICpjb3VudCA9IHN0YXRzLT5idF9uZGF0YTsKLSAgICAgfQotLSAgICAqY291 bnQgPSByYyA/IDAgOiBzdGF0cy0+YnRfbmRhdGE7Ci0gICAgIHNsYXBpX2NoX2ZyZWUoKHZvaWQg KiopJnN0YXRzKTsKLSAgICAgcmV0dXJuIHJjOwotIH0KLS0tIAotMi41My4wCi0KCmRpZmYgLS1n aXQgYS8wMDI4LUlzc3VlLTcyNjctTURCX0JBRF9WQUxTSVpFLWVycm9yLXdoZW4tdXBkYXRpbmct aW5kZXgucGF0Y2ggYi8wMDI4LUlzc3VlLTcyNjctTURCX0JBRF9WQUxTSVpFLWVycm9yLXdoZW4t dXBkYXRpbmctaW5kZXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxZTll YzYuLjAwMDAwMDAKLS0tIGEvMDAyOC1Jc3N1ZS03MjY3LU1EQl9CQURfVkFMU0laRS1lcnJvci13 aGVuLXVwZGF0aW5nLWluZGV4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjgxICswLDAgQEAK LUZyb20gNDgwOWM2Y2Y0M2FjOTcwOTU2OGUyNjM3ZTEyN2Y1YTc2YzlkODQ1ZSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IHByb2dpZXIzODkgPHByb2dpZXJAcmVkaGF0LmNvbT4KLURh dGU6IFdlZCwgMjUgRmViIDIwMjYgMTg6MDA6MjQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gSXNz dWUgNzI2NyAtIE1EQl9CQURfVkFMU0laRSBlcnJvciB3aGVuIHVwZGF0aW5nIGluZGV4Ci0gKCM3 MjY4KQotCi0qIElzc3VlIDcyNjcgLSBNREJfQkFEX1ZBTFNJWkUgZXJyb3Igd2hlbiB1cGRhdGlu ZyBpbmRleAotKiBJbXByb3ZlIGltcG9ydCBsb2cgd2hlbiB3cml0ZXIgZmFpbHMKLSogRml4IFNv dXJjZXJ5IEFJIGNvbW1lbnRzCi0qIEZpeCBJTkRFWF9LRVlfTEVOR1RIIHR5cG8KLQotUHJvYmxl bSB3aXRoIHRoZSBrZXkgcHJlZml4IGhhbmRsaW5nIHdoZW4ga2V5IGlzIHRvbyBsb25nIGFuZCBt dXN0IGJlIGhhc2hlZC4KLVRoZSBpc3N1ZSBpcyB0aGF0IHRoZSAjIHRoYXQgaXMgcHJlcGVuZGVk IGlzIG5vdCByZXNldCB3aGVuIGl0ZXJhdGluZyBvdmVyIHRoZSB2YWx1ZXNldCB2YWx1ZXMgKEVu ZGluZyB1cCB3aXRoIHZlcnkgbG9uZyBwcmVmaXgpCi0KLUFsc28gcmVmYWN0b3JlZCB0aGUgY29k ZSB0byBhdm9pZCBkdXBsaWNhdGUgdGhlIGNvZGUgdGhhdCBwcmVwYXJlIHRoZSBrZXkgZnJvbSB0 aGUgYXR0cmlidXRlIHZhbHVlICh1c2VkIHdoZW4gdXBkYXRpbmcgdGhlIGluZGV4IG9yIHJldHJp ZXZpbmcgYSB2YWx1ZSBmcm9tIGFuIGluZGV4KQotCi1Jc3N1ZTogIzcyNjcKLQotUmV2aWV3ZWQg Ynk6IEB0Ym9yZGF6ICwgQHZhc2hpcm92IChUaGFua3MhKQotCi1Dby1hdXRob3JlZC1ieTogVmlr dG9yIEFzaGlyb3YgPHZhc2hpcm92QHJlZGhhdC5jb20+Ci0KLS0tLS0tLS0tLQotCi1Dby1hdXRo b3JlZC1ieTogVmlrdG9yIEFzaGlyb3YgPHZhc2hpcm92QHJlZGhhdC5jb20+Ci0tLS0KLSAuLi4v dGVzdHMvc3VpdGVzL2luZGV4ZXMvcmVncmVzc2lvbl90ZXN0LnB5ICAgfCAgODUgKysrKysrKysr Ci0gbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9hdHRyY3J5cHQuaCAgICAgIHwgICAyICst Ci0gbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9iYWNrLWxkYm0uaCAgICAgIHwgICAyICsK LSAuLi4vc2xhcGQvYmFjay1sZGJtL2RiLWJkYi9iZGJfaW1wb3J0LmMgICAgICAgfCAgMzkgKy0t LS0KLSAuLi4vYmFjay1sZGJtL2RiLW1kYi9tZGJfaW1wb3J0X3RocmVhZHMuYyAgICAgfCAgNDYg KysrKy0KLSBsZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2luZGV4LmMgICAgICAgICAgfCAx NjEgKysrKysrKy0tLS0tLS0tLS0tCi0gbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9sZGJt X2F0dHJjcnlwdC5jIHwgIDEzICstCi0gLi4uL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL3Byb3Rv LWJhY2stbGRibS5oIHwgICAyICstCi0gbGRhcC9zZXJ2ZXJzL3NsYXBkL2xvZy5jICAgICAgICAg ICAgICAgICAgICAgIHwgIDQzICsrKysrCi0gbGRhcC9zZXJ2ZXJzL3NsYXBkL3NsYXBpLXByaXZh dGUuaCAgICAgICAgICAgIHwgICAyICsKLSAxMCBmaWxlcyBjaGFuZ2VkLCAyNTEgaW5zZXJ0aW9u cygrKSwgMTQ0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZGlyc3J2dGVzdHMvdGVzdHMv c3VpdGVzL2luZGV4ZXMvcmVncmVzc2lvbl90ZXN0LnB5IGIvZGlyc3J2dGVzdHMvdGVzdHMvc3Vp dGVzL2luZGV4ZXMvcmVncmVzc2lvbl90ZXN0LnB5Ci1pbmRleCA3MTY3MGRlODcuLjM5ZjYzZTM0 OSAxMDA2NDQKLS0tLSBhL2RpcnNydnRlc3RzL3Rlc3RzL3N1aXRlcy9pbmRleGVzL3JlZ3Jlc3Np b25fdGVzdC5weQotKysrIGIvZGlyc3J2dGVzdHMvdGVzdHMvc3VpdGVzL2luZGV4ZXMvcmVncmVz c2lvbl90ZXN0LnB5Ci1AQCAtOTAwLDYgKzkwMCw5MSBAQCBkZWYgdGVzdF9jb25jdXJyZW50X21v ZGlmaWNhdGlvbnNfZHVyaW5nX2luZGV4aW5nKHRvcG8sIGhvbWVEaXJlY3RvcnlfaW5kZXhfY2xl YQotICAgICAgICAgdXNlci5kZWxldGUoKQotIAotIAotK2RlZiB0ZXN0X2lkbF9yYW5nZV9saW1p dCh0b3BvLCBhZGRfc29tZV9lbnRyaWVzKToKLSsgICAgIiIiVGVzdCBuc3NsYXBkLXJhbmdlbG9v a3Rocm91Z2hsaW1pdCBhbmQgQU5EIHNob3J0Y3V0Ci0rCi0rICAgIDppZDogNzQ2YTVhZjItZDc1 NS0xMWYwLThiNjItYzg1MzA5ZDVjM2UzCi0rICAgIDpzZXR1cDogU3RhbmRhbG9uZSBJbnN0YW5j ZSB3aXRoIHNvbWUgZW50cmllcwotKyAgICA6c3RlcHM6Ci0rICAgICAgICAxLiBTZXQgbnNzbGFw ZC1yYW5nZWxvb2t0aHJvdWdobGltaXQKLSsgICAgICAgIDIuIE9wZW4gYSBuZXcgY29ubmVjdGlv biBhbmQgYm91bmQgaXQgYXMgYW4gdXNlcgotKyAgICAgICAgMy4gUGVyZm9ybSBSYW5nZSBzZWFy Y2ggdGhhdCBoaXQgbnNzbGFwZC1yYW5nZWxvb2t0aHJvdWdobGltaXQgYW5kIEFORCBzaG9ydGN1 dAotKyAgICA6ZXhwZWN0ZWRyZXN1bHRzOgotKyAgICAgICAgMS4gU3VjY2VzcwotKyAgICAgICAg Mi4gU3VjY2VzcwotKyAgICAgICAgMy4gU3VjY2VzcwotKyAgICAiIiIKLSsKLSsgICAgaW5zdCA9 IHRvcG8uc3RhbmRhbG9uZQotKyAgICBhZGRlZF9lbnRyaWVzID0gYWRkX3NvbWVfZW50cmllcwot KwotKyAgICBkYmNvbmZpZyA9IExEQk1Db25maWcoaW5zdCkKLSsgICAgZGJjb25maWcuc2V0KCdu c3NsYXBkLXJhbmdlbG9va3Rocm91Z2hsaW1pdCcsICI1MCIpCi0rCi0rICAgIGNvbm4gPSBhZGRl ZF9lbnRyaWVzWzBdLmJpbmQoUFdfRE0pCi0rCi0rICAgIGVudHJpZXMgPSBjb25uLnNlYXJjaF9z KERFRkFVTFRfU1VGRklYLCBsZGFwLlNDT1BFX1NVQlRSRUUsICIoJihvYmplY3RjbGFzcz1uc09y Z1BlcnNvbikoc249Zm9vKSh1aWQ+PWEpKSIpCi0rICAgIGFzc2VydCBsZW4oZW50cmllcykgPT0g MwotKwotKwotK2RlZiB0ZXN0X2xhcmdlX211bHRpdmFsdWVkX3NuX2F0dHJpYnV0ZSh0b3BvKToK LSsgICAgIiIiVGVzdCBhZGRpbmcgYSB1c2VyIGVudHJ5IHdpdGggNTEyIHZhbHVlcyBmb3Igc24g YXR0cmlidXRlLCBlYWNoIDUxMiBieXRlcwotKwotKyAgICA6aWQ6IDhmMmE5YjNjLWU4ZDctMTFl Zi05YTVmLTQ4MmFlMzk0NDdlNQotKyAgICA6c2V0dXA6IFN0YW5kYWxvbmUgSW5zdGFuY2UKLSsg ICAgOnN0ZXBzOgotKyAgICAgICAgMS4gQ3JlYXRlIGEgdXNlciB3aXRoIDUxMiBzbiB2YWx1ZXMs IGVhY2ggNTEyIGJ5dGVzIGxvbmcKLSsgICAgICAgIDIuIFZlcmlmeSB0aGUgdXNlciB3YXMgY3Jl YXRlZCBzdWNjZXNzZnVsbHkKLSsgICAgICAgIDMuIFNlYXJjaCBmb3IgdGhlIHVzZXIgYW5kIHZl cmlmeSBhbGwgc24gdmFsdWVzIGFyZSBwcmVzZW50Ci0rICAgICAgICA0LiBDbGVhbiB1cCB0aGUg dXNlciBlbnRyeQotKyAgICA6ZXhwZWN0ZWRyZXN1bHRzOgotKyAgICAgICAgMS4gVXNlciBpcyBj cmVhdGVkIHN1Y2Nlc3NmdWxseQotKyAgICAgICAgMi4gVXNlciBlbnRyeSBleGlzdHMKLSsgICAg ICAgIDMuIEFsbCA1MTIgc24gdmFsdWVzIGFyZSBwcmVzZW50IGFuZCBoYXZlIGNvcnJlY3QgbGVu Z3RoCi0rICAgICAgICA0LiBVc2VyIGlzIGRlbGV0ZWQgc3VjY2Vzc2Z1bGx5Ci0rICAgICIiIgot KwotKyAgICBpbnN0ID0gdG9wby5zdGFuZGFsb25lCi0rICAgIHVzZXJzID0gVXNlckFjY291bnRz KGluc3QsIERFRkFVTFRfU1VGRklYKQotKwotKyAgICBsb2cuaW5mbygiQ3JlYXRpbmcgdXNlciB3 aXRoIDUxMiBzbiB2YWx1ZXMsIGVhY2ggNTEyIGJ5dGVzIikKLSsKLSsgICAgIyBHZW5lcmF0ZSA1 MTIgdW5pcXVlIHNuIHZhbHVlcywgZWFjaCA1MTIgYnl0ZXMgbG9uZwotKyAgICAjIFVzZSBhIHBh dHRlcm4gdGhhdCBtYWtlcyBlYWNoIHZhbHVlIHVuaXF1ZSBidXQgcHJlZGljdGFibGUKLSsgICAg c25fdmFsdWVzID0gW10KLSsgICAgZm9yIGkgaW4gcmFuZ2UoNTEyKToKLSsgICAgICAgICMgQ3Jl YXRlIGEgNTEyLWJ5dGUgdmFsdWUgd2l0aCB1bmlxdWUgaWRlbnRpZmllciBhdCB0aGUgc3RhcnQK LSsgICAgICAgIHZhbHVlID0gZidzbl92YWx1ZV97aTowNGR9XycgKyAneCcgKiAoNTEyIC0gbGVu KGYnc25fdmFsdWVfe2k6MDRkfV8nKSkKLSsgICAgICAgIHNuX3ZhbHVlcy5hcHBlbmQodmFsdWUp Ci0rCi0rICAgICMgQ3JlYXRlIHRoZSB1c2VyIHdpdGggZmlyc3Qgc24gdmFsdWUKLSsgICAgdXNl cl9uYW1lID0gJ3Rlc3RfdXNlcl9sYXJnZV9zbicKLSsgICAgdXNlciA9IHVzZXJzLmNyZWF0ZShw cm9wZXJ0aWVzPXsKLSsgICAgICAgICd1aWQnOiB1c2VyX25hbWUsCi0rICAgICAgICAnY24nOiB1 c2VyX25hbWUsCi0rICAgICAgICAnc24nOiBzbl92YWx1ZXMsCi0rICAgICAgICAndWlkTnVtYmVy JzogJzk5OTk5JywKLSsgICAgICAgICdnaWROdW1iZXInOiAnOTk5OTknLAotKyAgICAgICAgJ2hv bWVEaXJlY3RvcnknOiBmJy9ob21lL3t1c2VyX25hbWV9JwotKyAgICB9KQotKwotKyAgICAjIFZl cmlmeSB0aGUgZW50cnkgd2FzIGNyZWF0ZWQgYW5kIGhhcyBhbGwgc24gdmFsdWVzCi0rICAgIGxv Zy5pbmZvKCJWZXJpZnlpbmcgYWxsIHNuIHZhbHVlcyBhcmUgcHJlc2VudCIpCi0rICAgIHNuX2F0 dHJfdmFsdWVzID0gdXNlci5nZXRfYXR0cl92YWxzX3V0ZjgoJ3NuJykKLSsKLSsgICAgYXNzZXJ0 IGxlbihzbl9hdHRyX3ZhbHVlcykgPT0gNTEyLCBmIkV4cGVjdGVkIDUxMiBzbiB2YWx1ZXMsIGdv dCB7bGVuKHNuX2F0dHJfdmFsdWVzKX0iCi0rCi0rICAgICMgVmVyaWZ5IGVhY2ggdmFsdWUgaGFz IHRoZSBjb3JyZWN0IGxlbmd0aAotKyAgICBmb3IgaWR4LCB2YWx1ZSBpbiBlbnVtZXJhdGUoc25f YXR0cl92YWx1ZXMpOgotKyAgICAgICAgYXNzZXJ0IGxlbih2YWx1ZSkgPT0gNTEyLCBmInNuIHZh bHVlIHtpZHh9IGhhcyBsZW5ndGgge2xlbih2YWx1ZSl9LCBleHBlY3RlZCA1MTIiCi0rCi0rICAg IGxvZy5pbmZvKCJTdWNjZXNzZnVsbHkgY3JlYXRlZCBhbmQgdmVyaWZpZWQgdXNlciB3aXRoIDUx MiBzbiB2YWx1ZXMgb2YgNTEyIGJ5dGVzIGVhY2giKQotKwotKyAgICAjIENsZWFuIHVwCi0rICAg IHVzZXIuZGVsZXRlKCkKLSsgICAgbG9nLmluZm8oIlVzZXIgZW50cnkgZGVsZXRlZCBzdWNjZXNz ZnVsbHkiKQotKwotKwotIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgICMgUnVuIGlz b2xhdGVkCi0gICAgICMgLXMgZm9yIERFQlVHIG1vZGUKLWRpZmYgLS1naXQgYS9sZGFwL3NlcnZl cnMvc2xhcGQvYmFjay1sZGJtL2F0dHJjcnlwdC5oIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2st bGRibS9hdHRyY3J5cHQuaAotaW5kZXggZDY1M2JhOTUxLi5kY2JlYTgwZmUgMTAwNjQ0Ci0tLS0g YS9sZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2F0dHJjcnlwdC5oCi0rKysgYi9sZGFwL3Nl cnZlcnMvc2xhcGQvYmFjay1sZGJtL2F0dHJjcnlwdC5oCi1AQCAtMTAsNyArMTAsNyBAQAotICNp bmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0vKiBQcml2YXRlIHRydWN0dXJlcyBhbmQg I2RlZmluZXMgdXNlZCBpbiB0aGUgYXR0cmlidXRlIGVuY3J5cHRpb24gY29kZS4gKi8KLSsvKiBQ cml2YXRlIHN0cnVjdHVyZXMgYW5kICNkZWZpbmVzIHVzZWQgaW4gdGhlIGF0dHJpYnV0ZSBlbmNy eXB0aW9uIGNvZGUuICovCi0gCi0gI2lmbmRlZiBfQVRUUkNSWVBUX0hfCi0gI2RlZmluZSBfQVRU UkNSWVBUX0hfCi1kaWZmIC0tZ2l0IGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9iYWNr LWxkYm0uaCBiL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vYmFjay1sZGJtLmgKLWluZGV4 IGUyM2U3ZmY0My4uOTJhYTFkZGJiIDEwMDY0NAotLS0tIGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2Jh Y2stbGRibS9iYWNrLWxkYm0uaAotKysrIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9i YWNrLWxkYm0uaAotQEAgLTEwNCw2ICsxMDQsOCBAQCB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVf aW50MTZfdDsKLSAgKi8KLSAjZGVmaW5lIEJFX0NIQU5HRUxPR19GSUxFICAgICAicmVwbGljYXRp b25fY2hhbmdlbG9nIgotIAotKyNkZWZpbmUgSU5ERVhfS0VZX0xFTkdUSChsZW52YWwsbGVucHJl Zml4KSAgKGxlbnZhbCtsZW5wcmVmaXgrMikKLSsKLSAjZGVmaW5lIEJEQl9JTVBMICAgICAgICAg ICAgICAiYmRiIgotICNkZWZpbmUgQkRCX0JBQ0tFTkQgICAgICAgICAgICJsaWJiYWNrLWxkYm0i IC8qIFRoaXMgYmFja2VuZCBwbHVnaW4gKi8KLSAjZGVmaW5lIEJEQl9ORVdJREwgICAgICAgICAg ICAibmV3aWRsIiAgICAgICAvKiBuZXcgaWRsIGZvcm1hdCAqLwotZGlmZiAtLWdpdCBhL2xkYXAv c2VydmVycy9zbGFwZC9iYWNrLWxkYm0vZGItYmRiL2JkYl9pbXBvcnQuYyBiL2xkYXAvc2VydmVy cy9zbGFwZC9iYWNrLWxkYm0vZGItYmRiL2JkYl9pbXBvcnQuYwotaW5kZXggYTZjYjEwYWVjLi40 ODk0MzM4MDEgMTAwNjQ0Ci0tLS0gYS9sZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2RiLWJk Yi9iZGJfaW1wb3J0LmMKLSsrKyBiL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vZGItYmRi L2JkYl9pbXBvcnQuYwotQEAgLTc1LDkgKzc1LDkgQEAgc3RhdGljIElETGlzdCAqYmRiX2lkbF91 bmlvbl9hbGxpZHMoYmFja2VuZCAqYmUsIHN0cnVjdCBhdHRyaW5mbyAqYWksIElETGlzdCAqYSwK LSAjZGVmaW5lIERFQlVHX1NVQkNPVU5UX01TRyhtc2csIC4uLikgeyBkZWJ1Z19zdWJjb3VudChf X0ZVTkNUSU9OX18sIF9fTElORV9fLCAobXNnKSwgX19WQV9BUkdTX18pOyB9Ci0gI2RlZmluZSBE VU1QX1NVQkNPVU5UX0tFWShtc2csIGtleSwgcmV0KSB7IGRlYnVnX3N1YmNvdW50KF9fRlVOQ1RJ T05fXywgX19MSU5FX18sICJyZXQ9JWQgc2l6ZT0ldSB1bGVuPSV1IGRvZmY9JXUgZGxlbj0ldSIs IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCwg KGtleSkuc2l6ZSwgKGtleSkudWxlbiwgKGtleSkuZG9mZiwgKGtleSkuZGxlbik7IFwKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCA9PSAwKSBoZXhh ZHVtcChtc2csIChrZXkpLmRhdGEsIDAsIChrZXkpLnNpemUpOyBcCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXQgPT0gMCkgc2xhcGlfbG9nX2hleGFk dW1wKFNMQVBJX0xPR19JTkZPLCBtc2csIChrZXkpLmRhdGEsIChrZXkpLnNpemUpOyBcCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJldCA9PSBE Ql9CVUZGRVJfU01BTEwpIFwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBoZXhhZHVtcChtc2csIChrZXkpLmRhdGEsIDAsIChrZXkpLnVsZW4pOyB9Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xhcGlfbG9n X2hleGFkdW1wKFNMQVBJX0xPR19JTkZPLCBtc2csIChrZXkpLmRhdGEsIChrZXkpLnVsZW4pOyB9 Ci0gCi0gc3RhdGljIHZvaWQKLSBkZWJ1Z19zdWJjb3VudChjb25zdCBjaGFyICpmdW5jbmFtZSwg aW50IGxpbmUsIGNoYXIgKm1zZywgLi4uKQotQEAgLTkwLDQxICs5MCw2IEBAIGRlYnVnX3N1YmNv dW50KGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBpbnQgbGluZSwgY2hhciAqbXNnLCAuLi4pCi0gICAg IHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX0lORk8sIChjaGFyKilmdW5jbmFtZSwgIkRFQlVHIFNV QkNPVU5UIFslZF0gJXNcbiIsIGxpbmUsIGJ1ZmYpOwotIH0KLSAKLS0vKgotLSAqIER1bXAgYSBt ZW1vcnkgYnVmZmVyIGluIGhleGEgYW5kIGFzY2lpIGluIGVycm9yIGxvZwotLSAqCi0tICogYWRk ciAtIFRoZSBtZW1vcnkgYnVmZmVyIGFkZHJlc3MuCi0tICogbGVuIC0gVGhlIG1lbW9yeSBidWZm ZXIgbGVuZ2h0LgotLSAqLwotLXN0YXRpYyB2b2lkCi0taGV4YWR1bXAoY2hhciAqbXNnLCBjb25z dCB2b2lkICphZGRyLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuKQotLXsKLS0jZGVmaW5lICBI RVhBRFVNUF9UQUIgNAotLS8qIDQgY2hhcmFjdGVycyBwZXIgYnl0ZXM6ICAyIGhleGEgZGlnaXRz LCAxIHNwYWNlIGFuZCB0aGUgYXNjaWkgICovCi0tI2RlZmluZSAgSEVYQURVTVBfQlVGX1NJWkUg KDQqMTYrSEVYQURVTVBfVEFCKQotLSAgICBjaGFyIGhleGRpZ2l0W10gPSAiMDEyMzQ1Njc4OUFC Q0RFRiI7Ci0tCi0tICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnB0ID0gYWRkcjsKLS0gICAgY2hh ciBidWZmW0hFWEFEVU1QX0JVRl9TSVpFKzFdOwotLSAgICBtZW1zZXQgKGJ1ZmYsICcgJywgSEVY QURVTVBfQlVGX1NJWkUpOwotLSAgICBidWZmW0hFWEFEVU1QX0JVRl9TSVpFXSA9ICdcMCc7Ci0t ICAgIHdoaWxlIChsZW4gPiAwKSB7Ci0tICAgICAgICBpbnQgZHBsOwotLSAgICAgICAgZm9yIChk cGwgPSAwOyBkcGwgPCAxNiAmJiBsZW4+MDsgZHBsKyssIGxlbi0tKSB7Ci0tICAgICAgICAgICBi dWZmWzMqZHBsXSA9IGhleGRpZ2l0WygoKnB0KSA+PiA0KSAmIDB4Zl07Ci0tICAgICAgICAgICBi dWZmWzMqZHBsKzFdID0gaGV4ZGlnaXRbKCpwdCkgJiAweGZdOwotLSAgICAgICAgICAgYnVmZlsz KjE2K0hFWEFEVU1QX1RBQitkcGxdID0gKCpwdD49MHgyMCAmJiAqcHQ8MHg3ZikgPyAqcHQgOiAn Lic7Ci0tICAgICAgICAgICBwdCsrOwotLSAgICAgICAgfQotLSAgICAgICAgZm9yICg7ZHBsIDwg MTY7IGRwbCsrKSB7Ci0tICAgICAgICAgICBidWZmWzMqZHBsXSA9ICcgJzsKLS0gICAgICAgICAg IGJ1ZmZbMypkcGwrMV0gPSAnICc7Ci0tICAgICAgICAgICBidWZmWzMqMTYrSEVYQURVTVBfVEFC K2RwbF0gPSAnICc7Ci0tICAgICAgICB9Ci0tICAgICAgICBzbGFwaV9sb2dfZXJyKFNMQVBJX0xP R19JTkZPLCBtc2csICJbMHglMDhseF0gICVzXG4iLCBvZmZzZXQsIGJ1ZmYpOwotLSAgICAgICAg b2Zmc2V0ICs9IDE2OwotLSAgICB9Ci0tfQotICNlbHNlCi0gI2RlZmluZSBERUJVR19TVUJDT1VO VF9NU0cobXNnLCAuLi4pCi0gI2RlZmluZSBEVU1QX1NVQkNPVU5UX0tFWShtc2csIGtleSwgcmV0 KQotZGlmZiAtLWdpdCBhL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vZGItbWRiL21kYl9p bXBvcnRfdGhyZWFkcy5jIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9kYi1tZGIvbWRi X2ltcG9ydF90aHJlYWRzLmMKLWluZGV4IDIyNzBhYmQ2OS4uYmZiOTAyYzAyIDEwMDY0NAotLS0t IGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9kYi1tZGIvbWRiX2ltcG9ydF90aHJlYWRz LmMKLSsrKyBiL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vZGItbWRiL21kYl9pbXBvcnRf dGhyZWFkcy5jCi1AQCAtMTEyMiw2ICsxMTIyLDIxIEBAIGRibWRiX2ltcG9ydF9lbnRyeV9pbmZv X2J5X2JhY2tlbnRyeShtZGJfcHJpdmRiX3QgKmRiLCBCdWxrUXVldWVEYXRhX3QgKmJxZGF0YSwK LSAgICAgcmV0dXJuIGRucmM7Ci0gfQotIAotKy8qIExvZyB3cWVsbXQgZGV0YWlscyAqLwotK3Zv aWQKLStsb2dfd3FlbG10KGludCBsb2dsdmwsIGNoYXIgKmZuYW1lLCBXb3JrZXJRdWV1ZURhdGFf dCAqd3FlbG10KQotK3sKLSsgICAgaWYgKHdxZWxtdC0+ZG4pIHsKLSsgICAgICAgIHNsYXBpX2xv Z19lcnIobG9nbHZsLCBmbmFtZSwgImxvZ193cWVsbXQ6IGRuPSVzXG4iLCB3cWVsbXQtPmRuKTsK LSsgICAgfQotKyAgICBpZiAod3FlbG10LT5maWxlbmFtZSAmJiB3cWVsbXQtPmxpbmVubykgewot KyAgICAgICAgc2xhcGlfbG9nX2Vycihsb2dsdmwsIGZuYW1lLCAibG9nX3dxZWxtdDogbGRpZj0l c1slZF1cbiIsIHdxZWxtdC0+ZmlsZW5hbWUsIHdxZWxtdC0+bGluZW5vKTsKLSsgICAgfQotKyAg ICBpZiAod3FlbG10LT5kYXRhKSB7Ci0rICAgICAgICBzaXplX3QgbGVuID0gd3FlbG10LT5kYXRh bGVuID8gd3FlbG10LT5kYXRhbGVuIDogc3RybGVuKHdxZWxtdC0+ZGF0YSk7Ci0rICAgICAgICBz bGFwaV9sb2dfaGV4YWR1bXAobG9nbHZsLCAibG9nX3dxZWxtdDpkYXRhIiwgd3FlbG10LT5kYXRh LCBsZW4pOwotKyAgICB9Ci0rfQotIAotIC8qIHByb2R1Y2VyIHRocmVhZCBmb3IgbGRpZiBpbXBv cnQgY2FzZToKLSAgKiByZWFkIHRocm91Z2ggdGhlIGdpdmVuIGZpbGUgbGlzdCwgcGFyc2luZyBl bnRyaWVzIChzdHIyZW50cnkpLCBhc3NpZ25pbmcKLUBAIC0xMjU0LDYgKzEyNjksNyBAQCBkYm1k Yl9pbXBvcnRfcHJvZHVjZXIodm9pZCAqcGFyYW0pCi0gICAgICAgICAgICAgICAgIGltcG9ydF9s b2dfbm90aWNlKGpvYiwgU0xBUElfTE9HX0VSUiwgImRibWRiX2ltcG9ydF9wcm9kdWNlciIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuc19zbGFwZCBzb2Z0d2FyZSBlcnJv cjogdW5leHBlY3RlZCBkYm1kYl9pbXBvcnRfZW50cnlfaW5mbyByZXR1cm4gY29kZTogJWQuIiwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3FlbG10LmRucmMpOwotKyAgICAg ICAgICAgICAgICBsb2dfd3FlbG10KFNMQVBJX0xPR19FUlIsICJkYm1kYl9pbXBvcnRfcHJvZHVj ZXIiLCAmd3FlbG10KTsKLSAgICAgICAgICAgICAgICAgYWJvcnQoKTsKLSAgICAgICAgICAgICBj YXNlIEROUkNfT0s6Ci0gICAgICAgICAgICAgY2FzZSBETlJDX1NVRkZJWDoKLUBAIC0xNzU3LDYg KzE3NzMsNyBAQCBkYm1kYl9pbmRleF9wcm9kdWNlcih2b2lkICpwYXJhbSkKLSAgICAgICAgICAg ICAgICAgaW1wb3J0X2xvZ19ub3RpY2Uoam9iLCBTTEFQSV9MT0dfRVJSLCAiZGJtZGJfaW5kZXhf cHJvZHVjZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibnNfc2xhcGQg c29mdHdhcmUgZXJyb3I6IHVuZXhwZWN0ZWQgZGJtZGJfaW1wb3J0X2VudHJ5X2luZm8gcmV0dXJu IGNvZGU6ICVkLiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcHNsb3Qu ZG5yYyk7Ci0rICAgICAgICAgICAgICAgIGxvZ193cWVsbXQoU0xBUElfTE9HX0VSUiwgImRibWRi X2luZGV4X3Byb2R1Y2VyIiwgJnRtcHNsb3QpOwotICAgICAgICAgICAgICAgICBhYm9ydCgpOwot ICAgICAgICAgICAgIGNhc2UgRE5SQ19PSzoKLSAgICAgICAgICAgICBjYXNlIEROUkNfU1VGRklY OgotQEAgLTM5MzQsMTAgKzM5NTEsMjQgQEAgZGJtZGJfaW1wb3J0X3dyaXRlcih2b2lkKnBhcmFt KQotICAgICAgICAgICAgIGlmICghdHhuKSB7Ci0gICAgICAgICAgICAgICAgIE1EQl9TVEFUX1NU RVAoc3RhdHMsIE1EQl9TVEFUX1RYTlNUQVJUKTsKLSAgICAgICAgICAgICAgICAgcmMgPSBUWE5f QkVHSU4oY3R4LT5jdHgtPmVudiwgTlVMTCwgMCwgJnR4bik7Ci0rICAgICAgICAgICAgICAgIGlm IChyYykgewotKyAgICAgICAgICAgICAgICAgICAgc2xhcGlfbG9nX2VycihTTEFQSV9MT0dfRVJS LCAiZGJtZGJfaW1wb3J0X3dyaXRlciIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJGYWlsZWQgdG8gYmVnaW4gYSB0eG4uIEVycm9yIGlzIDB4JXg6ICVzLlxuIiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmMsIG1kYl9zdHJlcnJvcihyYykpOwotKyAg ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIGlmICghcmMpIHsK LSAgICAgICAgICAgICAgICAgTURCX1NUQVRfU1RFUChzdGF0cywgTURCX1NUQVRfV1JJVEUpOwot ICAgICAgICAgICAgICAgICByYyA9IE1EQl9QVVQodHhuLCBzbG90LT5kYmktPmRiaSwgJnNsb3Qt PmtleSwgJnNsb3QtPmRhdGEsIDApOwotKyAgICAgICAgICAgICAgICBpZiAocmMpIHsKLSsgICAg ICAgICAgICAgICAgICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX0VSUiwgImRibWRiX2ltcG9y dF93cml0ZXIiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRv IHdyaXRlIHJlY29yZCBpbiBkYmkgJXMuIEVycm9yIGlzIDB4JXg6ICVzLlxuIiwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdC0+ZGJpLT5kYm5hbWUsIHJjLCBtZGJfc3Ry ZXJyb3IocmMpKTsKLSsgICAgICAgICAgICAgICAgICAgIHNsYXBpX2xvZ19oZXhhZHVtcChTTEFQ SV9MT0dfRVJSLCAiZGJtZGJfaW1wb3J0X3dyaXRlcjprZXkiLCAKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzbG90LT5rZXkubXZfZGF0YSwgc2xvdC0+a2V5Lm12X3Np emUpOwotKyAgICAgICAgICAgICAgICAgICAgc2xhcGlfbG9nX2hleGFkdW1wKFNMQVBJX0xPR19F UlIsICJkYm1kYl9pbXBvcnRfd3JpdGVyOmRhdGEiLCAKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzbG90LT5kYXRhLm12X2RhdGEsIHNsb3QtPmRhdGEubXZfc2l6ZSk7 Ci0rICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgTURCX1NU QVRfU1RFUChzdGF0cywgTURCX1NUQVRfUlVOKTsKLSAgICAgICAgICAgICBuZXh0c2xvdCA9IHNs b3QtPm5leHQ7Ci1AQCAtMzk1MSw2ICszOTgyLDkgQEAgZGJtZGJfaW1wb3J0X3dyaXRlcih2b2lk KnBhcmFtKQotICAgICAgICAgICAgIHJjID0gVFhOX0NPTU1JVCh0eG4pOwotICAgICAgICAgICAg IE1EQl9TVEFUX1NURVAoc3RhdHMsIE1EQl9TVEFUX1JVTik7Ci0gICAgICAgICAgICAgaWYgKHJj KSB7Ci0rICAgICAgICAgICAgICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX0VSUiwgImRibWRi X2ltcG9ydF93cml0ZXIiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQg dG8gY29tbWl0IHRoZSB0eG4uIEVycm9yIGlzIDB4JXg6ICVzLlxuIiwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByYywgbWRiX3N0cmVycm9yKHJjKSk7Ci0gICAgICAgICAgICAgICAg IGJyZWFrOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBjb3VudCA9IDA7Ci1AQCAtMzk2 Myw2ICszOTk3LDEwIEBAIGRibWRiX2ltcG9ydF93cml0ZXIodm9pZCpwYXJhbSkKLSAgICAgICAg IE1EQl9TVEFUX1NURVAoc3RhdHMsIE1EQl9TVEFUX1JVTik7Ci0gICAgICAgICBpZiAoIXJjKSB7 Ci0gICAgICAgICAgICAgdHhuID0gTlVMTDsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAg ICAgc2xhcGlfbG9nX2VycihTTEFQSV9MT0dfRVJSLCAiZGJtZGJfaW1wb3J0X3dyaXRlciIsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNvbW1pdCB0aGUgdHhuLiBFcnJv ciBpcyAweCV4OiAlcy5cbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICByYywgbWRiX3N0 cmVycm9yKHJjKSk7Ci0gICAgICAgICB9Ci0gICAgIH0KLSAgICAgaWYgKHR4bikgewotQEAgLTM5 NzUsMTMgKzQwMTMsMTcgQEAgZGJtZGJfaW1wb3J0X3dyaXRlcih2b2lkKnBhcmFtKQotICAgICBp ZiAoIXJjKSB7Ci0gICAgICAgICAvKiBFbnN1cmUgdGhhdCBhbGwgZGF0YSBhcmUgd3JpdHRlbiBv biBkaXNrICovCi0gICAgICAgICByYyA9IG1kYl9lbnZfc3luYyhjdHgtPmN0eC0+ZW52LCAxKTsK LSsgICAgICAgIGlmIChyYykgewotKyAgICAgICAgICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9H X0VSUiwgImRibWRiX2ltcG9ydF93cml0ZXIiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg Im1kYl9lbnZfc3luYyBmYWlsZWQuIEVycm9yIGlzIDB4JXg6ICVzLlxuIiwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgIHJjLCBtZGJfc3RyZXJyb3IocmMpKTsKLSsgICAgICAgIH0KLSAgICAg fQotICAgICBNREJfU1RBVF9FTkQoc3RhdHMpOwotIAotICAgICBpZiAocmMpIHsKLSAgICAgICAg IHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX0VSUiwgImRibWRiX2ltcG9ydF93cml0ZXIiLAotLSAg ICAgICAgICAgICAgICAiRmFpbGVkIHRvIHdyaXRlIGluIHRoZSBkYXRhYmFzZS4gRXJyb3IgaXMg MHgleDogJXMuXG4iLAotLSAgICAgICAgICAgICAgICByYywgbWRiX3N0cmVycm9yKHJjKSk7Ci0r ICAgICAgICAgICAgICAgICJBYm9ydGluZyBpbXBvcnQgYWZ0ZXIgZmFpbHVyZS5cbiIpOwotICAg ICAgICAgdGhyZWFkX2Fib3J0KGluZm8pOwotICAgICB9IGVsc2UgewotICAgICAgICAgY2hhciBi dWZbMjAwXTsKLWRpZmYgLS1naXQgYS9sZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2luZGV4 LmMgYi9sZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2luZGV4LmMKLWluZGV4IGE1MDA0YmUx OS4uYzEwOGJjZTNjIDEwMDY0NAotLS0tIGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9p bmRleC5jCi0rKysgYi9sZGFwL3NlcnZlcnMvc2xhcGQvYmFjay1sZGJtL2luZGV4LmMKLUBAIC04 ODEsNiArODgxLDY3IEBAIGluZGV4X3JlYWQoCi0gICAgIHJldHVybiBpbmRleF9yZWFkX2V4dChi ZSwgKGNoYXIgKil0eXBlLCBpbmRleHR5cGUsIHZhbCwgdHhuLCBlcnIsIE5VTEwpOwotIH0KLSAK LSsvKiBQcmVwYXJlIGFuIGluZGV4IGtleSAoaGFzaGVkIGlmIHRvbyBsb25nLCBlbmNyeXB0ZWQg aWYgbmVlZGVkIGZyb20gYXR0cmlidXRlIHZhbHVlICovCi0raW50Ci0rcHJlcGFyZV9rZXkoYmFj a2VuZCAqYmUsIHN0cnVjdCBhdHRyaW5mbyAqYSwgY2hhciAqKmJ1Ziwgc2l6ZV90ICpidWZsZW4s Ci0rICAgICAgICAgICAgaW50IGZsYWdzLCBjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IHN0cnVj dCBiZXJ2YWwgKmJ2cCwgZGJpX3ZhbF90ICprZXkpCi0rewotKyAgICAvKiBLZXkgZm9ybWF0IGlz IFtIYXNoP10gW3ByZWZpeF0gW3ZhbF0gW1wwXSAqLwotKyAgICBzdHJ1Y3QgbGRibWluZm8gKmxp ID0gKHN0cnVjdCBsZGJtaW5mbyAqKWJlLT5iZV9kYXRhYmFzZS0+cGxnX3ByaXZhdGU7Ci0rICAg IHNpemVfdCBwbGVuID0gc3RybGVuKHByZWZpeCk7Ci0rICAgIHN0cnVjdCBiZXJ2YWwgKmhhc2hl ZF9idnAgPSBOVUxMOwotKyAgICBzdHJ1Y3QgYmVydmFsICplbmNyeXB0ZWRfYnZwID0gTlVMTDsK LSsgICAgaW50IHJjID0gMDsKLSsKLSsgICAgLyogSGFzaCBsYXJnZSBpbmRleCBrZXkgaWYgbmVj ZXNzYXJ5ICovCi0rICAgIGlmIChJTkRFWF9LRVlfTEVOR1RIKGJ2cC0+YnZfbGVuLHBsZW4pID49 ICBsaS0+bGlfbWF4X2tleV9sZW4pIHsKLSsgICAgICAgIHJjID0gYXR0cmNyeXB0X2hhc2hfbGFy Z2VfaW5kZXhfa2V5KGJlLCBwcmVmaXgsIGEsIGJ2cCwgJmhhc2hlZF9idnApOwotKyAgICAgICAg aWYgKHJjKSB7Ci0rICAgICAgICAgICAgc2xhcGlfbG9nX2VycihTTEFQSV9MT0dfRVJSLCAiaW5k ZXhfcmVhZF9leHRfYWxsaWRzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQg dG8gaGFzaCBsYXJnZSBpbmRleCBrZXkgZm9yICVzXG4iLCBhLT5haV90eXBlKTsKLSsgICAgICAg ICAgICByZXR1cm4gcmM7Ci0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIGJ2cCA9IGhh c2hlZF9idnA7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsKLSsgICAgLyogRW5jcnlwdCB0aGUgaW5k ZXgga2V5IGlmIG5lY2Vzc2FyeSAqLwotKyAgICBpZiAocmMgPT0gMCAmJiBhLT5haV9hdHRyY3J5 cHQgJiYgKDAgPT0gKGZsYWdzICYgQkVfSU5ERVhfRE9OVF9FTkNSWVBUKSkpIHsKLSsgICAgICAg IHJjID0gYXR0cmNyeXB0X2VuY3J5cHRfaW5kZXhfa2V5KGJlLCBhLCBidnAsICZlbmNyeXB0ZWRf YnZwKTsKLSsgICAgICAgIGlmIChyYykgewotKyAgICAgICAgICAgIHNsYXBpX2xvZ19lcnIoU0xB UElfTE9HX0VSUiwgImFkZG9yZGVsX3ZhbHVlc19zdiIsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAiRmFpbGVkIHRvIGVuY3J5cHQgaW5kZXgga2V5IGZvciAlc1xuIiwgYS0+YWlfdHlwZSk7 Ci0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIGJ2cCA9IGVuY3J5cHRlZF9idnA7Ci0r ICAgICAgICB9Ci0rICAgIH0KLSsgICAgaWYgKGhhc2hlZF9idnApIHsKLSsgICAgICAgIHByZWZp eCA9IHNsYXBpX2NoX3NtcHJpbnRmKCIlYyVzIixIQVNIX1BSRUZJWCwgcHJlZml4KTsKLSsgICAg ICAgIHBsZW4rKzsKLSsgICAgfQotKyAgICBpZiAoYnVmICYmIGJ1ZmxlbikgewotKyAgICAgICAg aWYgKHBsZW4rYnZwLT5idl9sZW4rMSA+ICpidWZsZW4pIHsKLSsgICAgICAgICAgICAqYnVmbGVu ID0gcGxlbitidnAtPmJ2X2xlbisxOwotKyAgICAgICAgICAgICpidWYgPSBzbGFwaV9jaF9yZWFs bG9jKCpidWYsICpidWZsZW4pOwotKyAgICAgICAgfQotKyAgICAgICAgZGJsYXllcl92YWx1ZV9j b25jYXQoYmUsIGtleSwgKmJ1ZiwgKmJ1ZmxlbiwgcHJlZml4LCBwbGVuLCBidnAtPmJ2X3ZhbCwg YnZwLT5idl9sZW4sICIiLCAxKTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAgIGRibGF5ZXJfdmFs dWVfY29uY2F0KGJlLCBrZXksIE5VTEwsIDAsIHByZWZpeCwgcGxlbiwgYnZwLT5idl92YWwsIGJ2 cC0+YnZfbGVuLCAiIiwgMSk7Ci0rICAgIH0KLSsKLSsgICAgaWYgKGhhc2hlZF9idnApIHsKLSsg ICAgICAgIGJlcl9idmZyZWUoaGFzaGVkX2J2cCk7Ci0rICAgICAgICBoYXNoZWRfYnZwID0gTlVM TDsKLSsgICAgICAgIHNsYXBpX2NoX2ZyZWVfc3RyaW5nKChjaGFyKiopJnByZWZpeCk7Ci0rICAg IH0KLSsgICAgaWYgKGVuY3J5cHRlZF9idnApIHsKLSsgICAgICAgIGJlcl9idmZyZWUoZW5jcnlw dGVkX2J2cCk7Ci0rICAgICAgICBlbmNyeXB0ZWRfYnZwID0gTlVMTDsKLSsgICAgfQotKyAgICBy ZXR1cm4gcmM7Ci0rfQotKwotKwotIC8qCi0gICogRXh0ZW5kZWQgdmVyc2lvbiBvZiBpbmRleF9y ZWFkLgotICAqIFRoZSB1bmluZGV4ZWQgZmxhZyBjYW4gYmUgdXNlZCB0byBkaXN0aW5ndWlzaCBi ZXR3ZWVuIGEKLUBAIC05MTcsNyArOTc4LDYgQEAgaW5kZXhfcmVhZF9leHRfYWxsaWRzKAotICAg ICBzdHJ1Y3QgYmVydmFsICpoYXNoZWRfdmFsID0gTlVMTDsKLSAgICAgaW50IGlzX2FuZCA9IDA7 Ci0gICAgIHVuc2lnbmVkIGludCBhaV9mbGFncyA9IDA7Ci0tICAgIHN0cnVjdCBsZGJtaW5mbyAq bGkgPSAoc3RydWN0IGxkYm1pbmZvICopYmUtPmJlX2RhdGFiYXNlLT5wbGdfcHJpdmF0ZTsKLSAK LSAgICAgKmVyciA9IDA7Ci0gCi1AQCAtMTAyOCwzNiArMTA4OCw3IEBAIGluZGV4X3JlYWRfZXh0 X2FsbGlkcygKLSAgICAgfQotIAotICAgICBpZiAodmFsICE9IE5VTEwpIHsKLS0gICAgICAgIHNp emVfdCB2bGVuOwotLSAgICAgICAgaW50IHJldCA9IDA7Ci0tCi0tICAgICAgICAvKiBJZiBuZWNl c3NhcnksIGhhc2ggdGhpcyBpbmRleCBrZXkgKi8KLS0gICAgICAgIGlmICh2YWwtPmJ2X2xlbiA+ PSAgbGktPmxpX21heF9rZXlfbGVuKSB7Ci0tICAgICAgICAgICAgcmV0ID0gYXR0cmNyeXB0X2hh c2hfbGFyZ2VfaW5kZXhfa2V5KGJlLCAmcHJlZml4LCBhaSwgdmFsLCAmaGFzaGVkX3ZhbCk7Ci0t ICAgICAgICAgICAgaWYgKHJldCkgewotLSAgICAgICAgICAgICAgICBzbGFwaV9sb2dfZXJyKFNM QVBJX0xPR19FUlIsICJpbmRleF9yZWFkX2V4dF9hbGxpZHMiLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJGYWlsZWQgdG8gaGFzaCBsYXJnZSBpbmRleCBrZXkgZm9yICVzXG4iLCBi YXNldHlwZSk7Ci0tICAgICAgICAgICAgICAgICplcnIgPSBEQklfUkNfT1RIRVI7Ci0tICAgICAg ICAgICAgICAgIGluZGV4X2ZyZWVfcHJlZml4KHByZWZpeCk7Ci0tICAgICAgICAgICAgICAgIHNs YXBpX2NoX2ZyZWVfc3RyaW5nKCZiYXNldG1wKTsKLS0gICAgICAgICAgICAgICAgcmV0dXJuIChO VUxMKTsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICAgICAgaWYgKGhhc2hlZF92YWwpIHsKLS0g ICAgICAgICAgICAgICAgdmFsID0gaGFzaGVkX3ZhbDsKLS0gICAgICAgICAgICB9Ci0tICAgICAg ICB9Ci0tICAgICAgICAvKiBJZiBuZWNlc3NhcnksIGVuY3J5cHQgdGhpcyBpbmRleCBrZXkgKi8K LS0gICAgICAgIHJldCA9IGF0dHJjcnlwdF9lbmNyeXB0X2luZGV4X2tleShiZSwgYWksIHZhbCwg JmVuY3J5cHRlZF92YWwpOwotLSAgICAgICAgaWYgKHJldCkgewotLSAgICAgICAgICAgIHNsYXBp X2xvZ19lcnIoU0xBUElfTE9HX0VSUiwgImluZGV4X3JlYWRfZXh0X2FsbGlkcyIsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGVuY3J5cHQgaW5kZXgga2V5IGZvciAlc1xu IiwgYmFzZXR5cGUpOwotLSAgICAgICAgfQotLSAgICAgICAgaWYgKGVuY3J5cHRlZF92YWwpIHsK LS0gICAgICAgICAgICB2YWwgPSBlbmNyeXB0ZWRfdmFsOwotLSAgICAgICAgfQotLSAgICAgICAg dmxlbiA9IHZhbC0+YnZfbGVuOwotLSAgICAgICAgZGJsYXllcl92YWx1ZV9jb25jYXQoYmUsICZr ZXksIGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0tICAgICAgICAgICAgcHJlZml4LCBzdHJsZW4ocHJlZml4 KSwgdmFsLT5idl92YWwsIHZsZW4sICIiLCAxKTsKLSsgICAgICAgICh2b2lkKSBwcmVwYXJlX2tl eShiZSwgYWksIE5VTEwsIDAsIDAsIHByZWZpeCwgdmFsLCAma2V5KTsKLSAgICAgfSBlbHNlIHsK LSAgICAgICAgIGRibGF5ZXJfdmFsdWVfY29uY2F0KGJlLCAma2V5LCBidWYsIHNpemVvZihidWYp LCBwcmVmaXgsIHN0cmxlbihwcmVmaXgpLAotICAgICAgICAgICAgICIiLCAxLCBOVUxMLCAwKTsK LUBAIC0xODI0LDYgKzE4NTUsNyBAQCBpbmRleF9yYW5nZV9yZWFkKAotICAgICByZXR1cm4gaW5k ZXhfcmFuZ2VfcmVhZF9leHQocGIsIGJlLCB0eXBlLCBpbmRleHR5cGUsIG9wZXJhdG9yLCB2YWws IG5leHR2YWwsIHJhbmdlLCB0eG4sIGVyciwgMCk7Ci0gfQotIAotKwotIHN0YXRpYyBpbnQKLSBh ZGRvcmRlbF92YWx1ZXNfc3YoCi0gICAgIGJhY2tlbmQgKmJlLAotQEAgLTE4NDIsMTUgKzE4NzQs MTAgQEAgYWRkb3JkZWxfdmFsdWVzX3N2KAotICAgICBpbnQgaSA9IDA7Ci0gICAgIGRiaV92YWxf dCBrZXkgPSB7MH07Ci0gICAgIGRiaV90eG5fdCAqZGJfdHhuID0gTlVMTDsKLS0gICAgc2l6ZV90 IHBsZW4sIHZsZW4sIGxlbjsKLSAgICAgY2hhciAqdG1wYnVmID0gTlVMTDsKLSAgICAgc2l6ZV90 IHRtcGJ1ZmxlbiA9IDA7Ci0tICAgIGNoYXIgKnJlYWxidWY7Ci0gICAgIGNoYXIgKnByZWZpeCA9 IE5VTEw7Ci0gICAgIGNvbnN0IHN0cnVjdCBiZXJ2YWwgKmJ2cDsKLS0gICAgc3RydWN0IGJlcnZh bCAqaGFzaGVkX2J2cCA9IE5VTEw7Ci0tICAgIHN0cnVjdCBiZXJ2YWwgKmVuY3J5cHRlZF9idnAg PSBOVUxMOwotLSAgICBzdHJ1Y3QgbGRibWluZm8gKmxpID0gKHN0cnVjdCBsZGJtaW5mbyAqKWJl LT5iZV9kYXRhYmFzZS0+cGxnX3ByaXZhdGU7Ci0gICAgIGNoYXIgKmluZGV4X2lkID0gZ2V0X2lu ZGV4X25hbWUoYmUsIGRiLCBhKTsKLSAKLSAgICAgc2xhcGlfbG9nX2VycihTTEFQSV9MT0dfVFJB Q0UsICJhZGRvcmRlbF92YWx1ZXNfc3YiLCAiJXNfdmFsdWVzXG4iLAotQEAgLTE4ODksNjYgKzE5 MTYsMTQgQEAgYWRkb3JkZWxfdmFsdWVzX3N2KAotICAgICAgICAgcmV0dXJuIChyYyk7Ci0gICAg IH0KLSAKLS0gICAgcGxlbiA9IHN0cmxlbihwcmVmaXgpOwotICAgICBmb3IgKGkgPSAwOyB2YWxz W2ldICE9IE5VTEw7IGkrKykgewotICAgICAgICAgYnZwID0gc2xhcGlfdmFsdWVfZ2V0X2JlcnZh bCh2YWxzW2ldKTsKLSAKLS0gICAgICAgIC8qIEhhc2ggbGFyZ2UgaW5kZXgga2V5IGlmIG5lY2Vz c2FyeSAqLwotLSAgICAgICAgaWYgKGJ2cC0+YnZfbGVuID49ICBsaS0+bGlfbWF4X2tleV9sZW4p IHsKLS0gICAgICAgICAgICByYyA9IGF0dHJjcnlwdF9oYXNoX2xhcmdlX2luZGV4X2tleShiZSwg JnByZWZpeCwgYSwgYnZwLCAmaGFzaGVkX2J2cCk7Ci0tICAgICAgICAgICAgaWYgKHJjKSB7Ci0t ICAgICAgICAgICAgICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX0VSUiwgImluZGV4X3JlYWRf ZXh0X2FsbGlkcyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBo YXNoIGxhcmdlIGluZGV4IGtleSBmb3IgJXNcbiIsIGEtPmFpX3R5cGUpOwotLSAgICAgICAgICAg ICAgICBicmVhazsKLS0gICAgICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgICAgICBidnAg PSBoYXNoZWRfYnZwOwotLSAgICAgICAgICAgICAgICBwbGVuID0gc3RybGVuKHByZWZpeCk7Ci0t ICAgICAgICAgICAgfQotLSAgICAgICAgfQotLSAgICAgICAgLyogRW5jcnlwdCB0aGUgaW5kZXgg a2V5IGlmIG5lY2Vzc2FyeSAqLwotLSAgICAgICAgewotLSAgICAgICAgICAgIGlmIChhLT5haV9h dHRyY3J5cHQgJiYgKDAgPT0gKGZsYWdzICYgQkVfSU5ERVhfRE9OVF9FTkNSWVBUKSkpIHsKLS0g ICAgICAgICAgICAgICAgcmMgPSBhdHRyY3J5cHRfZW5jcnlwdF9pbmRleF9rZXkoYmUsIGEsIGJ2 cCwgJmVuY3J5cHRlZF9idnApOwotLSAgICAgICAgICAgICAgICBpZiAocmMpIHsKLS0gICAgICAg ICAgICAgICAgICAgIHNsYXBpX2xvZ19lcnIoU0xBUElfTE9HX0VSUiwgImFkZG9yZGVsX3ZhbHVl c19zdiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gZW5j cnlwdCBpbmRleCBrZXkgZm9yICVzXG4iLCBhLT5haV90eXBlKTsKLS0gICAgICAgICAgICAgICAg fSBlbHNlIHsKLS0gICAgICAgICAgICAgICAgICAgIGJ2cCA9IGVuY3J5cHRlZF9idnA7Ci0tICAg ICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICB9Ci0rICAgICAgICByYyA9IHByZXBhcmVfa2V5 KGJlLCBhLCAmdG1wYnVmLCAmdG1wYnVmbGVuLCBmbGFncywgcHJlZml4LCBidnAsICZrZXkpOwot KyAgICAgICAgaWYgKHJjKSB7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gCi0t ICAgICAgICB2bGVuID0gYnZwLT5idl9sZW47Ci0tICAgICAgICBsZW4gPSBwbGVuICsgdmxlbjsK LS0KLS0gICAgICAgIGlmIChsZW4gPCB0bXBidWZsZW4pIHsKLS0gICAgICAgICAgICByZWFsYnVm ID0gdG1wYnVmOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICB0bXBidWYgPSBzbGFw aV9jaF9yZWFsbG9jKHRtcGJ1ZiwgbGVuICsgMSk7Ci0tICAgICAgICAgICAgdG1wYnVmbGVuID0g bGVuICsgMTsKLS0gICAgICAgICAgICByZWFsYnVmID0gdG1wYnVmOwotLSAgICAgICAgfQotLQot LSAgICAgICAgYXNzZXJ0KHJlYWxidWYpOyAvKiBGb3IgY292ZXJpdHkgKi8KLS0gICAgICAgIG1l bWNweShyZWFsYnVmLCBwcmVmaXgsIHBsZW4pOwotLSAgICAgICAgbWVtY3B5KHJlYWxidWYgKyBw bGVuLCBidnAtPmJ2X3ZhbCwgdmxlbik7Ci0tICAgICAgICByZWFsYnVmW2xlbl0gPSAnXDAnOwot LSAgICAgICAgLyogRnJlZSB0aGUgZW5jcnlwdGVkIGJlcnZhbCBpZiBuZWNlc3NhcnkgKi8KLS0g ICAgICAgIGlmIChoYXNoZWRfYnZwKSB7Ci0tICAgICAgICAgICAgYmVyX2J2ZnJlZShoYXNoZWRf YnZwKTsKLS0gICAgICAgICAgICBoYXNoZWRfYnZwID0gTlVMTDsKLS0gICAgICAgIH0KLS0gICAg ICAgIGlmIChlbmNyeXB0ZWRfYnZwKSB7Ci0tICAgICAgICAgICAgYmVyX2J2ZnJlZShlbmNyeXB0 ZWRfYnZwKTsKLS0gICAgICAgICAgICBlbmNyeXB0ZWRfYnZwID0gTlVMTDsKLS0gICAgICAgIH0K LS0gICAgICAgIC8qIHNob3VsZCBiZSBva2F5IHRvIHVzZSBVU0VSTUVNIGhlcmUgYmVjYXVzZSB3 ZSBrbm93IHdoYXQKLS0gICAgICAgICAqIHRoZSBrZXkgaXMgYW5kIGl0IHNob3VsZCBuZXZlciBy ZXR1cm4gYSBkaWZmZXJlbnQgdmFsdWUKLS0gICAgICAgICAqIHRoYW4gdGhlIG9uZSB3ZSBwYXNz IGluLgotLSAgICAgICAgICovCi0tICAgICAgICBkYmxheWVyX3ZhbHVlX3NldF9idWZmZXIoYmUs ICZrZXksIHJlYWxidWYsIHBsZW4gKyB2bGVuICsgMSk7Ci0tICAgICAgICBrZXkudWxlbiA9IHRt cGJ1ZmxlbjsKLS0KLSAgICAgICAgIGlmIChzbGFwaV9pc19sb2dsZXZlbF9zZXQoTERBUF9ERUJV R19UUkFDRSkpIHsKLSAgICAgICAgICAgICBjaGFyIGVuY2J1ZltCVUZTSVpdOwotIAotQEAgLTE5 ODEsMTAgKzE5NTYsNiBAQCBhZGRvcmRlbF92YWx1ZXNfc3YoCi0gICAgICAgICAgICAgbGRibV9u YXN0eShOQVNUWV9NU0coImFkZG9yZGVsX3ZhbHVlc19zdiIpLCBpbmRleF9pZCwgMTEzMCwgcmMp OwotICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotLSAgICAgICAgaWYgKE5VTEwgIT0g a2V5LmRwdHIgJiYgcmVhbGJ1ZiAhPSBrZXkuZHB0cikgeyAvKiByZWFsbG9jJ2VkICovCi0tICAg ICAgICAgICAgdG1wYnVmID0ga2V5LmRwdHI7Ci0tICAgICAgICAgICAgdG1wYnVmbGVuID0ga2V5 LnNpemU7Ci0tICAgICAgICB9Ci0gICAgIH0KLSAgICAgaW5kZXhfZnJlZV9wcmVmaXgocHJlZml4 KTsKLSAgICAgaWYgKHRtcGJ1ZiAhPSBOVUxMKSB7Ci1kaWZmIC0tZ2l0IGEvbGRhcC9zZXJ2ZXJz L3NsYXBkL2JhY2stbGRibS9sZGJtX2F0dHJjcnlwdC5jIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL2Jh Y2stbGRibS9sZGJtX2F0dHJjcnlwdC5jCi1pbmRleCA3YmI1N2NhNjYuLjdjZjMwMDUzYyAxMDA2 NDQKLS0tLSBhL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vbGRibV9hdHRyY3J5cHQuYwot KysrIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL2JhY2stbGRibS9sZGJtX2F0dHJjcnlwdC5jCi1AQCAt MTA2OSwxNSArMTA2OSwxNSBAQCBhdHRyY3J5cHRfZGVjcnlwdF9pbmRleF9rZXkoYmFja2VuZCAq YmUsCi0gICogICAgICAgICAgICAgICAgICA6ICAgICBOVUxMIC0gbm8gaGFzaCBvciBmYWlsdXJl Ci0gICovCi0gaW50Ci0tYXR0cmNyeXB0X2hhc2hfbGFyZ2VfaW5kZXhfa2V5KGJhY2tlbmQgKmJl LCBjaGFyICoqcHJlZml4LCBzdHJ1Y3QgYXR0cmluZm8gKmFpLCBjb25zdCBzdHJ1Y3QgYmVydmFs ICppbiwgc3RydWN0IGJlcnZhbCAqKm91dCkKLSthdHRyY3J5cHRfaGFzaF9sYXJnZV9pbmRleF9r ZXkoYmFja2VuZCAqYmUsIGNvbnN0IGNoYXIgKnByZWZpeCwgc3RydWN0IGF0dHJpbmZvICphaSwg Y29uc3Qgc3RydWN0IGJlcnZhbCAqaW4sIHN0cnVjdCBiZXJ2YWwgKipvdXQpCi0gewotICAgICBp bnQgcmV0ID0gMDsKLSAgICAgc3RydWN0IGJlcnZhbCAqb3V0X2JlcnZhbCA9IE5VTEw7Ci0gICAg IHN0cnVjdCBsZGJtaW5mbyAqbGkgPSAoc3RydWN0IGxkYm1pbmZvICopYmUtPmJlX2RhdGFiYXNl LT5wbGdfcHJpdmF0ZTsKLS0gICAgY2hhciAqbmV3X3ByZWZpeDsKLSsgICAgc2l6ZV90IGZpbmFs X2tleV9sZW4gPSBJTkRFWF9LRVlfTEVOR1RIKGluLT5idl9sZW4sIHN0cmxlbihwcmVmaXgpKTsK LSAKLSAgICAgLyogSWYgdGhlIGluZGV4IGtleSBpcyB0b28gbG9uZyAoaS5lIG1kYiBjYXNlKSB3 ZSBtdXN0IGhhc2ggaXQgKi8KLS0gICAgaWYgKGluLT5idl9sZW4gPj0gIGxpLT5saV9tYXhfa2V5 X2xlbikgewotKyAgICBpZiAoZmluYWxfa2V5X2xlbiA+PSAgbGktPmxpX21heF9rZXlfbGVuKSB7 Ci0gICAgICAgICBQSzExQ29udGV4dCAqYyA9IFBLMTFfQ3JlYXRlRGlnZXN0Q29udGV4dChTRUNf T0lEX01ENSk7Ci0gICAgICAgICBpZiAoYyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgdW5zaWdu ZWQgY2hhciBoYXNoWzMyXTsKLUBAIC0xMDkxLDE2ICsxMDkxLDEzIEBAIGF0dHJjcnlwdF9oYXNo X2xhcmdlX2luZGV4X2tleShiYWNrZW5kICpiZSwgY2hhciAqKnByZWZpeCwgc3RydWN0IGF0dHJp bmZvICphaSwKLSAgICAgICAgICAgICAgICAgcmV0dXJuIEVOT01FTTsKLSAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgc2xhcGlfbG9nX2VycihTTEFQSV9MT0dfVFJBQ0UsICJhdHRyY3J5cHRf aGFzaF9sYXJnZV9pbmRleF9rZXkiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIktleSBs ZW5naHQgKCVsdSkgPj0gbWF4IGtleSBsZW5naHQgKCVsdSkgc28ga2V5IG11c3QgYmUgaGFzaGVk XG4iLCBpbi0+YnZfbGVuLCBsaS0+bGlfbWF4X2tleV9sZW4pOwotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIktleSBsZW5naHQgKCVsdSkgPj0gbWF4IGtleSBsZW5naHQgKCVsdSkgc28ga2V5 IG11c3QgYmUgaGFzaGVkXG4iLCBmaW5hbF9rZXlfbGVuLCBsaS0+bGlfbWF4X2tleV9sZW4pOwot ICAgICAgICAgICAgIHNsYXBpX2JlX3NldF9mbGFnKGJlLCBTTEFQSV9CRV9GTEFHX0RPTlRfQllQ QVNTX0ZJTFRFUlRFU1QpOwotICAgICAgICAgICAgIFBLMTFfRGlnZXN0QmVnaW4oYyk7Ci0gICAg ICAgICAgICAgLyogQ29tcHV0ZSBoYXNoIGZvciB0aGUga2V5IHdpdGhvdXQgdGhlIHByZWZpeCAq LwotICAgICAgICAgICAgIFBLMTFfRGlnZXN0T3AoYywgKHVuc2lnbmVkIGNoYXIgKilpbi0+YnZf dmFsLCBpbi0+YnZfbGVuKTsKLSAgICAgICAgICAgICBQSzExX0RpZ2VzdEZpbmFsKGMsIGhhc2gs ICZoYXNoTGVuLCBzaXplb2YgaGFzaCk7Ci0tICAgICAgICAgICAgLyogQWRkIEhBU0hfUFJFRklY IGJlZm9yZSB0aGUgcHJlZml4ICovCi0tICAgICAgICAgICAgbmV3X3ByZWZpeCA9IHNsYXBpX2No X3NtcHJpbnRmKCIlYyVzIiwgSEFTSF9QUkVGSVgsICpwcmVmaXgpOwotLSAgICAgICAgICAgIGlu ZGV4X2ZyZWVfcHJlZml4KCpwcmVmaXgpOwotLSAgICAgICAgICAgICpwcmVmaXggPSBuZXdfcHJl Zml4OwotKwotICAgICAgICAgICAgIC8qIEJ1aWxkIHRoZSBrZXk6IGhhc2ggdmFsdWUgaW4gaGV4 YSAqLwotICAgICAgICAgICAgIGhrZXkgPSBzbGFwaV9jaF9tYWxsb2MoMSsyKnNpemVvZiBoYXNo KTsKLSAgICAgICAgICAgICBvdXRfYmVydmFsLT5idl92YWwgPSBoa2V5OwotZGlmZiAtLWdpdCBh L2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vcHJvdG8tYmFjay1sZGJtLmggYi9sZGFwL3Nl cnZlcnMvc2xhcGQvYmFjay1sZGJtL3Byb3RvLWJhY2stbGRibS5oCi1pbmRleCAzMGE3YWExMWYu LmM4ODJkYWM3YiAxMDA2NDQKLS0tLSBhL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vcHJv dG8tYmFjay1sZGJtLmgKLSsrKyBiL2xkYXAvc2VydmVycy9zbGFwZC9iYWNrLWxkYm0vcHJvdG8t YmFjay1sZGJtLmgKLUBAIC02MjIsNyArNjIyLDcgQEAgaW50IGF0dHJjcnlwdF9lbmNyeXB0X2Vu dHJ5X2lucGxhY2UoYmFja2VuZCAqYmUsIGNvbnN0IHN0cnVjdCBiYWNrZW50cnkgKmlub3V0KTsK LSBpbnQgYXR0cmNyeXB0X2VuY3J5cHRfZW50cnkoYmFja2VuZCAqYmUsIGNvbnN0IHN0cnVjdCBi YWNrZW50cnkgKmluLCBzdHJ1Y3QgYmFja2VudHJ5ICoqb3V0KTsKLSBpbnQgYXR0cmNyeXB0X2Vu Y3J5cHRfaW5kZXhfa2V5KGJhY2tlbmQgKmJlLCBzdHJ1Y3QgYXR0cmluZm8gKmFpLCBjb25zdCBz dHJ1Y3QgYmVydmFsICppbiwgc3RydWN0IGJlcnZhbCAqKm91dCk7Ci0gaW50IGF0dHJjcnlwdF9k ZWNyeXB0X2luZGV4X2tleShiYWNrZW5kICpiZSwgc3RydWN0IGF0dHJpbmZvICphaSwgY29uc3Qg c3RydWN0IGJlcnZhbCAqaW4sIHN0cnVjdCBiZXJ2YWwgKipvdXQpOwotLWludCBhdHRyY3J5cHRf aGFzaF9sYXJnZV9pbmRleF9rZXkoYmFja2VuZCAqYmUsIGNoYXIgKipwcmVmaXgsIHN0cnVjdCBh dHRyaW5mbyAqYWksIGNvbnN0IHN0cnVjdCBiZXJ2YWwgKmluLCBzdHJ1Y3QgYmVydmFsICoqb3V0 KTsKLStpbnQgYXR0cmNyeXB0X2hhc2hfbGFyZ2VfaW5kZXhfa2V5KGJhY2tlbmQgKmJlLCBjb25z dCBjaGFyICpwcmVmaXgsIHN0cnVjdCBhdHRyaW5mbyAqYWksIGNvbnN0IHN0cnVjdCBiZXJ2YWwg KmluLCBzdHJ1Y3QgYmVydmFsICoqb3V0KTsKLSBpbnQgYXR0cmNyeXB0X2luaXQobGRibV9pbnN0 YW5jZSAqbGkpOwotIGludCBhdHRyY3J5cHRfY2xlYW51cF9wcml2YXRlKGxkYm1faW5zdGFuY2Ug KmxpKTsKLSAKLWRpZmYgLS1naXQgYS9sZGFwL3NlcnZlcnMvc2xhcGQvbG9nLmMgYi9sZGFwL3Nl cnZlcnMvc2xhcGQvbG9nLmMKLWluZGV4IDgwYzA3MzgyYS4uOTMxMDE0OTRiIDEwMDY0NAotLS0t IGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2xvZy5jCi0rKysgYi9sZGFwL3NlcnZlcnMvc2xhcGQvbG9n LmMKLUBAIC05Myw2ICs5MywxMCBAQCBzdGF0aWMgaW50IHNsYXBpX2xvZ19tYXBbXSA9IHsKLSAj ZGVmaW5lIEZMVVNIIFBSX1RSVUUKLSAjZGVmaW5lIE5PX0ZMVVNIIFBSX0ZBTFNFCi0gCi0rI2Rl ZmluZSAgSEVYQURVTVBfVEFCIDQKLSsvKiA0IGNoYXJhY3RlcnMgcGVyIGJ5dGVzOiAgMiBoZXhh IGRpZ2l0cywgMSBzcGFjZSBhbmQgdGhlIGFzY2lpICAqLwotKyNkZWZpbmUgIEhFWEFEVU1QX0JV Rl9TSVpFICg0KjE2K0hFWEFEVU1QX1RBQikKLSsKLSAvKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgKiBQ Uk9UT1RZUEVTCi0gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1AQCAtMzEzMyw2ICszMTM3LDQ1IEBAIHNs YXBpX2xvZ19iYWNrdHJhY2UoaW50IGxvZ2xldmVsKQotICAgICB9Ci0gfQotIAotKy8qCi0rICog RHVtcCBhIG1lbW9yeSBidWZmZXIgaW4gaGV4YSBhbmQgYXNjaWkgaW4gZXJyb3IgbG9nCi0rICoK LSsgKiBhZGRyIC0gVGhlIG1lbW9yeSBidWZmZXIgYWRkcmVzcy4KLSsgKiBsZW4gLSBUaGUgbWVt b3J5IGJ1ZmZlciBsZW5naHQuCi0rICovCi0rdm9pZAotK3NsYXBpX2xvZ19oZXhhZHVtcChpbnQg bG9nbGV2ZWwsIGNoYXIgKmZuYW1lLCBjb25zdCB2b2lkICphZGRyLCBzaXplX3QgbGVuKQotK3sK LSsgICAgY2hhciBoZXhkaWdpdFtdID0gIjAxMjM0NTY3ODlBQkNERUYiOwotKyAgICBjb25zdCB1 bnNpZ25lZCBjaGFyICpwdCA9IGFkZHI7Ci0rICAgIGNoYXIgYnVmZltIRVhBRFVNUF9CVUZfU0la RSsxXTsKLSsgICAgc2l6ZV90IG9mZnNldCA9IDA7Ci0rCi0rICAgIGlmICghc2xhcGlfaXNfbG9n bGV2ZWxfc2V0KGxvZ2xldmVsKSkgewotKyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0rICAgIG1l bXNldCAoYnVmZiwgJyAnLCBIRVhBRFVNUF9CVUZfU0laRSk7Ci0rICAgIGJ1ZmZbSEVYQURVTVBf QlVGX1NJWkVdID0gJ1wwJzsKLSsgICAgd2hpbGUgKGxlbiA+IDApIHsKLSsgICAgICAgIGludCBk cGw7Ci0rICAgICAgICBmb3IgKGRwbCA9IDA7IGRwbCA8IDE2ICYmIGxlbj4wOyBkcGwrKywgbGVu LS0pIHsKLSsgICAgICAgICAgIGJ1ZmZbMypkcGxdID0gaGV4ZGlnaXRbKCgqcHQpID4+IDQpICYg MHhmXTsKLSsgICAgICAgICAgIGJ1ZmZbMypkcGwrMV0gPSBoZXhkaWdpdFsoKnB0KSAmIDB4Zl07 Ci0rICAgICAgICAgICBidWZmWzMqMTYrSEVYQURVTVBfVEFCK2RwbF0gPSAoKnB0Pj0weDIwICYm ICpwdDwweDdmKSA/ICpwdCA6ICcuJzsKLSsgICAgICAgICAgIHB0Kys7Ci0rICAgICAgICB9Ci0r ICAgICAgICBmb3IgKDtkcGwgPCAxNjsgZHBsKyspIHsKLSsgICAgICAgICAgIGJ1ZmZbMypkcGxd ID0gJyAnOwotKyAgICAgICAgICAgYnVmZlszKmRwbCsxXSA9ICcgJzsKLSsgICAgICAgICAgIGJ1 ZmZbMyoxNitIRVhBRFVNUF9UQUIrZHBsXSA9ICcgJzsKLSsgICAgICAgIH0KLSsgICAgICAgIHNs YXBpX2xvZ19lcnIobG9nbGV2ZWwsIGZuYW1lLCAiWzB4JTA4bHhdICAlc1xuIiwgb2Zmc2V0LCBi dWZmKTsKLSsgICAgICAgIG9mZnNldCArPSAxNjsKLSsgICAgfQotK30KLSsKLSsKLSsKLSAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCi0gKiB3cml0ZSBpbiB0aGUgYWNjZXNzIGxvZwotICoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KLWRpZmYgLS1naXQgYS9sZGFwL3NlcnZlcnMvc2xhcGQvc2xhcGktcHJp dmF0ZS5oIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL3NsYXBpLXByaXZhdGUuaAotaW5kZXggNzJmNGNk NmYwLi4yZGEzN2ZmNmUgMTAwNjQ0Ci0tLS0gYS9sZGFwL3NlcnZlcnMvc2xhcGQvc2xhcGktcHJp dmF0ZS5oCi0rKysgYi9sZGFwL3NlcnZlcnMvc2xhcGQvc2xhcGktcHJpdmF0ZS5oCi1AQCAtMTUy Nyw2ICsxNTI3LDggQEAgdm9pZCBzbGFwaV9wYmxvY2tfc2V0X3Rhc2tfd2FybmluZyhTbGFwaV9Q QmxvY2sgKnBiLCB0YXNrX3dhcm5pbmcgd2FybmluZyk7Ci0gaW50IHNsYXBpX2V4aXN0c19vcl9h ZGRfaW50ZXJuYWwoU2xhcGlfRE4gKmRuLCBjb25zdCBjaGFyICpmaWx0ZXIsIGNvbnN0IGNoYXIg KmVudHJ5LCBjb25zdCBjaGFyICptb2RpZmllcl9uYW1lKTsKLSAKLSB2b2lkIHNsYXBpX2xvZ19i YWNrdHJhY2UoaW50IGxvZ2xldmVsKTsKLSt2b2lkIHNsYXBpX2xvZ19oZXhhZHVtcChpbnQgbG9n bGV2ZWwsIGNoYXIgKmZuYW1lLCBjb25zdCB2b2lkICphZGRyLCBzaXplX3QgbGVuKTsKLSsKLSAK LSAvKgotICAqIGFjY2Vzc2xvZy5jCi0tLSAKLTIuNTQuMAotCgpkaWZmIC0tZ2l0IGEvMDAyOS1J c3N1ZS03NTAzLUNWRS0yMDI2LTkwNjQtQWRkLWEtbGltaXQtdG8tdGhlLW51bWJlci1jLnBhdGNo IGIvMDAyOS1Jc3N1ZS03NTAzLUNWRS0yMDI2LTkwNjQtQWRkLWEtbGltaXQtdG8tdGhlLW51bWJl ci1jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODA0YzM0Li4wMDAwMDAw Ci0tLSBhLzAwMjktSXNzdWUtNzUwMy1DVkUtMjAyNi05MDY0LUFkZC1hLWxpbWl0LXRvLXRoZS1u dW1iZXItYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzOSArMCwwIEBACi1Gcm9tIDdlOTY0 N2Y1YmI1YzQ3NjAyZjRjZGYwMDIyY2Y2YmQyMjg3MmQzZWYgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCi1Gcm9tOiBNYXJrIFJleW5vbGRzIDxtcmV5bm9sZHNAcmVkaGF0LmNvbT4KLURhdGU6IFRo dSwgMjEgTWF5IDIwMjYgMDk6MTc6MzkgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gSXNzdWUgNzUw MyAtIENWRS0yMDI2LTkwNjQgLSBBZGQgYSBsaW1pdCB0byB0aGUgbnVtYmVyCi0gY29udHJvbHMg cGVyIG9wZXJhdGlvbgotCi1EZXNjcmlwdGlvbjoKLQotU2VjdXJpdHkgZml4IGZvciBDVkUtMjAy Ni05MDY0Ci0KLVRvIHByZXZlbnQgcmVzb3VyY2Ugc3RhcnZhdGlvbiBsaW1pdCB0aGUgbnVtYmVy IG9mIGNvbnRyb2xzIHRoZSBzZXJ2ZXIgd2lsbAotcHJvY2VzcyBwZXIgb3BlcmF0aW9uLiBSZWpl Y3QgdGhlIG9wZXJhdGlvbiBpZiBudW1iZXIgb2YgY29udHJvbHMgZXhjZWVkcwotdGhlIGxpbWl0 Ci0KLXJlbGF0ZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS8zODlkcy8zODktZHMtYmFzZS9pc3N1ZXMv NzUwMwotCi1SZWZlcmVuY2VzOgotICAgIC0gaHR0cHM6Ly9hY2Nlc3MucmVkaGF0LmNvbS9zZWN1 cml0eS9jdmUvY3ZlLTIwMjYtOTA2NAotICAgIC0gaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29t L3Nob3dfYnVnLmNnaT9pZD0yNDgwMDkzCi0KLUNJIHRlc3QgYXNzaXN0ZWQgYnk6IEN1cnNvcgot Ci1SZXZpZXdlZCBieTogamNoYXBtYW4gJiB0Ym9yZGF6IChUaGFua3MhISkKLS0tLQotIC4uLi9z dWl0ZXMvZmVhdHVyZXMvbGRhcF9jb250cm9sc190ZXN0LnB5ICAgICB8IDc2ICsrKysrKysrKysr KysrKysrKy0KLSBsZGFwL3NjaGVtYS8wMWNvcmUzODkubGRpZiAgICAgICAgICAgICAgICAgICAg fCAgMyArLQotIGxkYXAvc2VydmVycy9zbGFwZC9jb250cm9sLmMgICAgICAgICAgICAgICAgICB8 IDE0ICsrKy0KLSBsZGFwL3NlcnZlcnMvc2xhcGQvbGliZ2xvYnMuYyAgICAgICAgICAgICAgICAg fCA1MiArKysrKysrKysrKysrCi0gbGRhcC9zZXJ2ZXJzL3NsYXBkL3Byb3RvLXNsYXAuaCAgICAg ICAgICAgICAgIHwgIDIgKwotIGxkYXAvc2VydmVycy9zbGFwZC9zbGFwLmggICAgICAgICAgICAg ICAgICAgICB8ICA0ICsKLSAuLi4vMzg5LWNvbnNvbGUvc3JjL2xpYi9zZXJ2ZXIvdHVuaW5nLmpz eCAgICAgfCA1MiArKysrKysrKysrKystCi0gNyBmaWxlcyBjaGFuZ2VkLCAxOTcgaW5zZXJ0aW9u cygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2RpcnNydnRlc3RzL3Rlc3RzL3N1 aXRlcy9mZWF0dXJlcy9sZGFwX2NvbnRyb2xzX3Rlc3QucHkgYi9kaXJzcnZ0ZXN0cy90ZXN0cy9z dWl0ZXMvZmVhdHVyZXMvbGRhcF9jb250cm9sc190ZXN0LnB5Ci1pbmRleCAwZjhhYTA4YmUuLjU5 YTU4YjIxZCAxMDA2NDQKLS0tLSBhL2RpcnNydnRlc3RzL3Rlc3RzL3N1aXRlcy9mZWF0dXJlcy9s ZGFwX2NvbnRyb2xzX3Rlc3QucHkKLSsrKyBiL2RpcnNydnRlc3RzL3Rlc3RzL3N1aXRlcy9mZWF0 dXJlcy9sZGFwX2NvbnRyb2xzX3Rlc3QucHkKLUBAIC05LDE1ICs5LDE4IEBACi0gaW1wb3J0IGxv Z2dpbmcKLSBpbXBvcnQgcHl0ZXN0Ci0gaW1wb3J0IGxkYXAKLStmcm9tIGxkYXAuY29udHJvbHMg aW1wb3J0IFJlcXVlc3RDb250cm9sCi0gZnJvbSBsZGFwLmNvbnRyb2xzLnJlYWRlbnRyeSBpbXBv cnQgUG9zdFJlYWRDb250cm9sCi0gZnJvbSBsaWIzODkuaWRtLnVzZXIgaW1wb3J0IFVzZXJBY2Nv dW50cywgVXNlckFjY291bnQKLS1mcm9tIGxpYjM4OS50b3BvbG9naWVzIGltcG9ydCB0b3BvbG9n eV9zdAotLWZyb20gbGliMzg5Ll9jb25zdGFudHMgaW1wb3J0IERFRkFVTFRfU1VGRklYCi0rZnJv bSB0ZXN0Mzg5LnRvcG9sb2dpZXMgaW1wb3J0IHRvcG9sb2d5X3N0Ci0rZnJvbSBsaWIzODkuX2Nv bnN0YW50cyBpbXBvcnQgREVGQVVMVF9TVUZGSVgsIEROX0RNLCBQQVNTV09SRAotIAotIHB5dGVz dG1hcmsgPSBweXRlc3QubWFyay50aWVyMQotIAotIGxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9f bmFtZV9fKQotIAotK01BTkFHRV9EU0FJVF9PSUQgPSAiMi4xNi44NDAuMS4xMTM3MzAuMy40LjIi Ci0rTUFYX0NPTlRST0xTX1BFUl9PUF9BVFRSID0gIm5zc2xhcGQtbWF4Y29udHJvbHNwZXJvcCIK LSAKLSBkZWYgdGVzdF9wb3N0cmVhZF9jdHJsX21vZGlmeSh0b3BvbG9neV9zdCk6Ci0gICAgICIi IlRlc3QgUG9zdFJlYWRDb250cm9sIHdpdGggTERBUCBtb2RpZnkgb3BlcmF0aW9ucy4KLUBAIC03 OSw2ICs4Miw3NSBAQCBkZWYgdGVzdF9wb3N0cmVhZF9jdHJsX21vZGlmeSh0b3BvbG9neV9zdCk6 Ci0gICAgIHVzZXIuZGVsZXRlKCkKLSAKLSAKLStkZWYgX21ha2VfcmVxdWVzdF9jb250cm9scyhj b3VudCk6Ci0rICAgIHJldHVybiBbCi0rICAgICAgICBSZXF1ZXN0Q29udHJvbChjb250cm9sVHlw ZT1NQU5BR0VfRFNBSVRfT0lELCBjcml0aWNhbGl0eT1GYWxzZSkKLSsgICAgICAgIGZvciBfIGlu IHJhbmdlKGNvdW50KQotKyAgICBdCi0rCi0rCi0rZGVmIHRlc3RfYmluZF9leGNlc3NpdmVfY29u dHJvbHModG9wb2xvZ3lfc3QpOgotKyAgICAiIiJCaW5kIHJlcXVlc3QgY29udHJvbCBjb3VudCBp cyBsaW1pdGVkIGJ5IG5zc2xhcGQtbWF4Y29udHJvbHNwZXJvcAotKwotKyAgICA6aWQ6IGMzODg4 ZjAyLTIxMDctNDY4Mi1hNTBhLTIxODlkMTQzNjIzMwotKyAgICA6c2V0dXA6IFN0YW5kYWxvbmUg aW5zdGFuY2UKLSsgICAgOnN0ZXBzOgotKyAgICAgICAgMS4gUmVhZCBuc3NsYXBkLW1heGNvbnRy b2xzcGVyb3AgZnJvbSBjbj1jb25maWcgKGRlZmF1bHQgMTApCi0rICAgICAgICAyLiBCaW5kIHdp dGggb25lIGZld2VyIGNvbnRyb2wgdGhhbiB0aGUgbGltaXQKLSsgICAgICAgIDMuIEJpbmQgd2l0 aCBvbmUgbW9yZSBjb250cm9sIHRoYW4gdGhlIGxpbWl0Ci0rICAgICAgICA0LiBTZXQgbnNzbGFw ZC1tYXhjb250cm9sc3Blcm9wIHRvIDUKLSsgICAgICAgIDUuIEJpbmQgd2l0aCA0IGNvbnRyb2xz IChuZXcgbGltaXQgbWludXMgb25lKQotKyAgICAgICAgNi4gQmluZCB3aXRoIDYgY29udHJvbHMg KG92ZXIgbmV3IGxpbWl0KQotKyAgICAgICAgNy4gUmVzdG9yZSBuc3NsYXBkLW1heGNvbnRyb2xz cGVyb3AgYW5kIHJlLWJpbmQgYXMgRGlyZWN0b3J5IE1hbmFnZXIKLSsgICAgOmV4cGVjdGVkcmVz dWx0czoKLSsgICAgICAgIDEuIENvbmZpZyB2YWx1ZSBpcyAxMAotKyAgICAgICAgMi4gQmluZCBz dWNjZWVkcwotKyAgICAgICAgMy4gQmluZCBmYWlscyB3aXRoIGxkYXAuVU5XSUxMSU5HX1RPX1BF UkZPUk0KLSsgICAgICAgIDQuIFN1Y2Nlc3MKLSsgICAgICAgIDUuIEJpbmQgc3VjY2VlZHMKLSsg ICAgICAgIDYuIEJpbmQgZmFpbHMgd2l0aCBsZGFwLlVOV0lMTElOR19UT19QRVJGT1JNCi0rICAg ICAgICA3LiBTdWNjZXNzCi0rICAgICIiIgotKyAgICBpbnN0ID0gdG9wb2xvZ3lfc3Quc3RhbmRh bG9uZQotKyAgICBvcmlnaW5hbF9tYXggPSBpbnN0LmNvbmZpZy5nZXRfYXR0cl92YWxfdXRmOChN QVhfQ09OVFJPTFNfUEVSX09QX0FUVFIpCi0rCi0rICAgIHRyeToKLSsgICAgICAgIG1heF9jb250 cm9scyA9IGludChpbnN0LmNvbmZpZy5nZXRfYXR0cl92YWxfdXRmOChNQVhfQ09OVFJPTFNfUEVS X09QX0FUVFIpKQotKyAgICAgICAgYXNzZXJ0IG1heF9jb250cm9scyA9PSAxMAotKwotKyAgICAg ICAgbG9nLmluZm8oIkJpbmQgd2l0aCAlZCBjb250cm9scyAobGltaXQgJWQsIGxpbWl0IG1pbnVz IG9uZSkiLAotKyAgICAgICAgICAgICAgICAgbWF4X2NvbnRyb2xzIC0gMSwgbWF4X2NvbnRyb2xz KQotKyAgICAgICAgaW5zdC5zaW1wbGVfYmluZF9zKEROX0RNLCBQQVNTV09SRCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJjdHJscz1fbWFrZV9yZXF1ZXN0X2NvbnRyb2xzKG1h eF9jb250cm9scyAtIDEpKQotKwotKyAgICAgICAgbG9nLmluZm8oIkJpbmQgd2l0aCAlZCBjb250 cm9scyAobGltaXQgJWQgcGx1cyBvbmUpIiwKLSsgICAgICAgICAgICAgICAgIG1heF9jb250cm9s cyArIDEsIG1heF9jb250cm9scykKLSsgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhsZGFwLlVO V0lMTElOR19UT19QRVJGT1JNKToKLSsgICAgICAgICAgICBpbnN0LnNpbXBsZV9iaW5kX3MoRE5f RE0sIFBBU1NXT1JELAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJjdHJs cz1fbWFrZV9yZXF1ZXN0X2NvbnRyb2xzKG1heF9jb250cm9scyArIDEpKQotKyAgICAgICAgaW5z dC5zaW1wbGVfYmluZF9zKEROX0RNLCBQQVNTV09SRCkKLSsKLSsgICAgICAgIGxvd2VyZWRfbWF4 ID0gNQotKyAgICAgICAgbG9nLmluZm8oIlNldCAlcyB0byAlZCIsIE1BWF9DT05UUk9MU19QRVJf T1BfQVRUUiwgbG93ZXJlZF9tYXgpCi0rICAgICAgICBpbnN0LmNvbmZpZy5zZXQoTUFYX0NPTlRS T0xTX1BFUl9PUF9BVFRSLCBzdHIobG93ZXJlZF9tYXgpKQotKyAgICAgICAgYXNzZXJ0IGludChp bnN0LmNvbmZpZy5nZXRfYXR0cl92YWxfdXRmOChNQVhfQ09OVFJPTFNfUEVSX09QX0FUVFIpKSA9 PSBsb3dlcmVkX21heAotKwotKyAgICAgICAgbG9nLmluZm8oIkJpbmQgd2l0aCAlZCBjb250cm9s cyAobG93ZXJlZCBsaW1pdCAlZCwgbGltaXQgbWludXMgb25lKSIsCi0rICAgICAgICAgICAgICAg ICBsb3dlcmVkX21heCAtIDEsIGxvd2VyZWRfbWF4KQotKyAgICAgICAgaW5zdC5zaW1wbGVfYmlu ZF9zKEROX0RNLCBQQVNTV09SRCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJj dHJscz1fbWFrZV9yZXF1ZXN0X2NvbnRyb2xzKGxvd2VyZWRfbWF4IC0gMSkpCi0rCi0rICAgICAg ICBsb2cuaW5mbygiQmluZCB3aXRoICVkIGNvbnRyb2xzIChsb3dlcmVkIGxpbWl0ICVkIHBsdXMg b25lKSIsCi0rICAgICAgICAgICAgICAgICBsb3dlcmVkX21heCArIDEsIGxvd2VyZWRfbWF4KQot KyAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKGxkYXAuVU5XSUxMSU5HX1RPX1BFUkZPUk0pOgot KyAgICAgICAgICAgIGluc3Quc2ltcGxlX2JpbmRfcyhETl9ETSwgUEFTU1dPUkQsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcmN0cmxzPV9tYWtlX3JlcXVlc3RfY29udHJv bHMobG93ZXJlZF9tYXggKyAxKSkKLSsgICAgZmluYWxseToKLSsgICAgICAgIGxvZy5pbmZvKCJS ZXN0b3JlICVzIHRvICVzIiwgTUFYX0NPTlRST0xTX1BFUl9PUF9BVFRSLCBvcmlnaW5hbF9tYXgp Ci0rICAgICAgICBpbnN0LmNvbmZpZy5zZXQoTUFYX0NPTlRST0xTX1BFUl9PUF9BVFRSLCBvcmln aW5hbF9tYXgpCi0rICAgICAgICBpbnN0LnNpbXBsZV9iaW5kX3MoRE5fRE0sIFBBU1NXT1JEKQot KwotKwotIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgIENVUlJFTlRfRklMRSA9IF9f ZmlsZV9fCi0gICAgIHB5dGVzdC5tYWluKFsiLXMiLCAiLXYiLCBDVVJSRU5UX0ZJTEVdKQotZGlm ZiAtLWdpdCBhL2xkYXAvc2NoZW1hLzAxY29yZTM4OS5sZGlmIGIvbGRhcC9zY2hlbWEvMDFjb3Jl Mzg5LmxkaWYKLWluZGV4IGJmZTgyNTlmOC4uN2UyZDFhYzQ0IDEwMDY0NAotLS0tIGEvbGRhcC9z Y2hlbWEvMDFjb3JlMzg5LmxkaWYKLSsrKyBiL2xkYXAvc2NoZW1hLzAxY29yZTM4OS5sZGlmCi1A QCAtNSw3ICs1LDcgQEAKLSAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gIwotICMgTGljZW5zZTog R1BMICh2ZXJzaW9uIDMgb3IgYW55IGxhdGVyIHZlcnNpb24pLgotLSMgU2VlIExJQ0VOU0UgZm9y IGRldGFpbHMuIAotKyMgU2VlIExJQ0VOU0UgZm9yIGRldGFpbHMuCi0gIyBFTkQgQ09QWVJJR0hU IEJMT0NLCi0gIwotICMKLUBAIC0zMzMsNiArMzMzLDcgQEAgYXR0cmlidXRlVHlwZXM6ICggMi4x Ni44NDAuMS4xMTM3MzAuMy4xLjIzOTIgTkFNRSAnbnNzbGFwZC1yZXR1cm4tb3JpZ2luYWwtZW50 cnkKLSBhdHRyaWJ1dGVUeXBlczogKCAyLjE2Ljg0MC4xLjExMzczMC4zLjEuMjM5MyBOQU1FICdu c3NsYXBkLWF1ZGl0bG9nLWRpc3BsYXktYXR0cnMnIERFU0MgJzM4OSBEaXJlY3RvcnkgU2VydmVy IGRlZmluZWQgYXR0cmlidXRlIHR5cGUnIFNZTlRBWCAxLjMuNi4xLjQuMS4xNDY2LjExNS4xMjEu MS4xNSBTSU5HTEUtVkFMVUUgWC1PUklHSU4gJzM4OSBEaXJlY3RvcnkgU2VydmVyJyApCi0gYXR0 cmlidXRlVHlwZXM6ICggMi4xNi44NDAuMS4xMTM3MzAuMy4xLjIzOTggTkFNRSAnbnNzbGFwZC1o YXByb3h5LXRydXN0ZWQtaXAnIERFU0MgJzM4OSBEaXJlY3RvcnkgU2VydmVyIGRlZmluZWQgYXR0 cmlidXRlIHR5cGUnIFNZTlRBWCAxLjMuNi4xLjQuMS4xNDY2LjExNS4xMjEuMS4xNSBYLU9SSUdJ TiAnMzg5IERpcmVjdG9yeSBTZXJ2ZXInICkKLSBhdHRyaWJ1dGVUeXBlczogKCAyLjE2Ljg0MC4x LjExMzczMC4zLjEuMjQwMCBOQU1FICduc3NsYXBkLXB3ZFBCS0RGMk51bUl0ZXJhdGlvbnMnIERF U0MgJzM4OSBEaXJlY3RvcnkgU2VydmVyIGRlZmluZWQgYXR0cmlidXRlIHR5cGUnIFNZTlRBWCAx LjMuNi4xLjQuMS4xNDY2LjExNS4xMjEuMS4yNyBTSU5HTEUtVkFMVUUgWC1PUklHSU4gJ0RpcmVj dG9yeSBTZXJ2ZXInICkKLSthdHRyaWJ1dGVUeXBlczogKCAyLjE2Ljg0MC4xLjExMzczMC4zLjEu MjQwMiBOQU1FICduc3NsYXBkLW1heGNvbnRyb2xzcGVyb3AnIERFU0MgJzM4OSBEaXJlY3Rvcnkg U2VydmVyIGRlZmluZWQgYXR0cmlidXRlIHR5cGUnIFNZTlRBWCAxLjMuNi4xLjQuMS4xNDY2LjEx NS4xMjEuMS4yNyBTSU5HTEUtVkFMVUUgWC1PUklHSU4gJzM4OSBEaXJlY3RvcnkgU2VydmVyJyAp Ci0gIwotICMgb2JqZWN0Y2xhc3NlcwotICMKLWRpZmYgLS1naXQgYS9sZGFwL3NlcnZlcnMvc2xh cGQvY29udHJvbC5jIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL2NvbnRyb2wuYwotaW5kZXggZDY2MWRj NmUxLi45MzczYzlmNzAgMTAwNjQ0Ci0tLS0gYS9sZGFwL3NlcnZlcnMvc2xhcGQvY29udHJvbC5j Ci0rKysgYi9sZGFwL3NlcnZlcnMvc2xhcGQvY29udHJvbC5jCi1AQCAtMzAyLDcgKzMwMiw3IEBA IGdldF9sZGFwbWVzc2FnZV9jb250cm9sc19leHQoCi0gICAgIGJlcl90YWdfdCB0YWc7Ci0gICAg IC8qIGJlcl9sZW5fdCBpcyB1aW50LCBjYW5ub3QgYmUgLTEgKi8KLSAgICAgYmVyX2xlbl90IGxl biA9IExCRVJfRVJST1I7Ci0tICAgIGludCByYywgbWF4Y29udHJvbHMsIGN1cmNvbnRyb2xzOwot KyAgICBpbnQgcmMsIG1heGNvbnRyb2xzLCBjdXJjb250cm9scywgbWF4Y29udHJvbHNfcGVyX29w OwotICAgICBjaGFyICpsYXN0OwotICAgICBpbnQgbWFuYWdlZHNhaXQsIHB3cG9saWN5X2N0cmw7 Ci0gICAgIENvbm5lY3Rpb24gKnBiX2Nvbm4gPSBOVUxMOwotQEAgLTM3OSwxMSArMzc5LDIxIEBA IGdldF9sZGFwbWVzc2FnZV9jb250cm9sc19leHQoCi0gICAgICAgICByZXR1cm4gKExEQVBfUFJP VE9DT0xfRVJST1IpOwotICAgICB9Ci0gCi0rICAgIG1heGNvbnRyb2xzX3Blcl9vcCA9IGNvbmZp Z19nZXRfbWF4Y29udHJvbHNwZXJvcCgpOwotICAgICBtYXhjb250cm9scyA9IGN1cmNvbnRyb2xz ID0gMDsKLSAgICAgZm9yICh0YWcgPSBiZXJfZmlyc3RfZWxlbWVudChiZXIsICZsZW4sICZsYXN0 KTsKLSAgICAgICAgICB0YWcgIT0gTEJFUl9FUlJPUiAmJiB0YWcgIT0gTEJFUl9FTkRfT0ZfU0VR T1JTRVQ7Ci0tICAgICAgICAgdGFnID0gYmVyX25leHRfZWxlbWVudChiZXIsICZsZW4sIGxhc3Qp KSB7Ci0rICAgICAgICAgdGFnID0gYmVyX25leHRfZWxlbWVudChiZXIsICZsZW4sIGxhc3QpKQot KyAgICB7Ci0gICAgICAgICBsZW4gPSAtMTsgLyogcmVzZXQgKi8KLSsgICAgICAgIGlmIChjdXJj b250cm9scyA+PSBtYXhjb250cm9sc19wZXJfb3ApIHsKLSsgICAgICAgICAgICBzbGFwaV9sb2df ZXJyKFNMQVBJX0xPR19FUlIsICJnZXRfbGRhcG1lc3NhZ2VfY29udHJvbHNfZXh0IiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICJUb28gbWFueSBjb250cm9scyBpbiBMREFQIHJlcXVlc3Qg KG1heCAlZClcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb250cm9sc19wZXJf b3ApOwotKyAgICAgICAgICAgIHJjID0gTERBUF9VTldJTExJTkdfVE9fUEVSRk9STTsKLSsgICAg ICAgICAgICBnb3RvIGZyZWVfYW5kX3JldHVybjsKLSsgICAgICAgIH0KLSsKLSAgICAgICAgIGlm IChjdXJjb250cm9scyA+PSBtYXhjb250cm9scyAtIDEpIHsKLSAjZGVmaW5lIENPTlRST0xfR1JB QlNJWkUgNgotICAgICAgICAgICAgIG1heGNvbnRyb2xzICs9IENPTlRST0xfR1JBQlNJWkU7Ci1k aWZmIC0tZ2l0IGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL2xpYmdsb2JzLmMgYi9sZGFwL3NlcnZlcnMv c2xhcGQvbGliZ2xvYnMuYwotaW5kZXggODg3YWU5YTlkLi5lY2Y3MzZlZjYgMTAwNjQ0Ci0tLS0g YS9sZGFwL3NlcnZlcnMvc2xhcGQvbGliZ2xvYnMuYwotKysrIGIvbGRhcC9zZXJ2ZXJzL3NsYXBk L2xpYmdsb2JzLmMKLUBAIC0xNDY2LDYgKzE0NjYsMTEgQEAgc3RhdGljIHN0cnVjdCBjb25maWdf Z2V0X2FuZF9zZXQKLSAgICAgIE5VTEwsIDAsCi0gICAgICAodm9pZCAqKikmZ2xvYmFsX3NsYXBk RnJvbnRlbmRDb25maWcucmV0dXJuX29yaWdfZG4sCi0gICAgICBDT05GSUdfT05fT0ZGLCAoQ29u ZmlnR2V0RnVuYyljb25maWdfZ2V0X3JldHVybl9vcmlnX2RuLCAmaW5pdF9yZXR1cm5fb3JpZ19k biwgTlVMTH0sCi0rICAgIHtDT05GSUdfTUFYQ09OVFJPTFNfUEVSX09QX0FUVFJJQlVURSwgY29u ZmlnX3NldF9tYXhjb250cm9sc3Blcm9wLAotKyAgICAgTlVMTCwgMCwKLSsgICAgICh2b2lkICoq KSZnbG9iYWxfc2xhcGRGcm9udGVuZENvbmZpZy5tYXhjb250cm9sc19wZXJfb3AsCi0rICAgICBD T05GSUdfSU5ULCAoQ29uZmlnR2V0RnVuYyljb25maWdfZ2V0X21heGNvbnRyb2xzcGVyb3AsCi0r ICAgICBTTEFQRF9ERUZBVUxUX01BWENPTlRST0xTX1BFUl9PUF9TVFIsIE5VTEx9LAotICAgICAv KiBFbmQgY29uZmlnICovCi0gICAgIH07Ci0gCi1AQCAtMjA0MSw2ICsyMDQ2LDcgQEAgRnJvbnRl bmRDb25maWdfaW5pdCh2b2lkKQotICAgICBpbml0X2NuX3VzZXNfZG5fc3ludGF4X2luX2RucyA9 IGNmZy0+Y25fdXNlc19kbl9zeW50YXhfaW5fZG5zID0gTERBUF9PRkY7Ci0gICAgIGluaXRfZ2xv YmFsX2JhY2tlbmRfbG9jYWwgPSBMREFQX09GRjsKLSAgICAgY2ZnLT5tYXhzaW1wbGVwYWdlZF9w ZXJfY29ubiA9IFNMQVBEX0RFRkFVTFRfTUFYU0lNUExFUEFHRURfUEVSX0NPTk47Ci0rICAgIGNm Zy0+bWF4Y29udHJvbHNfcGVyX29wID0gU0xBUERfREVGQVVMVF9NQVhDT05UUk9MU19QRVJfT1A7 Ci0gICAgIGNmZy0+bWF4YmVyc2l6ZSA9IFNMQVBEX0RFRkFVTFRfTUFYQkVSU0laRTsKLSAgICAg Y2ZnLT5sb2dnaW5nX2JhY2tlbmQgPSBzbGFwaV9jaF9zdHJkdXAoU0xBUERfSU5JVF9MT0dHSU5H X0JBQ0tFTkRfSU5URVJOQUwpOwotICAgICBjZmctPnJvb3RkbiA9IHNsYXBpX2NoX3N0cmR1cChT TEFQRF9ERUZBVUxUX0RJUkVDVE9SWV9NQU5BR0VSKTsKLUBAIC0xMDEwNSw2ICsxMDExMSw1MiBA QCBjb25maWdfZ2V0X21heHNpbXBsZXBhZ2VkX3Blcl9jb25uKCkKLSAgICAgcmV0dXJuIHJldFZh bDsKLSB9Ci0gCi0raW50Ci0rY29uZmlnX3NldF9tYXhjb250cm9sc3Blcm9wKGNvbnN0IGNoYXIg KmF0dHJuYW1lLCBjaGFyICp2YWx1ZSwgY2hhciAqZXJyb3JidWYsIGludCBhcHBseSkKLSt7Ci0r ICAgIGludCByZXRWYWwgPSBMREFQX1NVQ0NFU1M7Ci0rICAgIHNsYXBkRnJvbnRlbmRDb25maWdf dCAqc2xhcGRGcm9udGVuZENvbmZpZyA9IGdldEZyb250ZW5kQ29uZmlnKCk7Ci0rICAgIGxvbmcg c2l6ZTsKLSsgICAgY2hhciAqZW5kcDsKLSsKLSsgICAgaWYgKGNvbmZpZ192YWx1ZV9pc19udWxs KGF0dHJuYW1lLCB2YWx1ZSwgZXJyb3JidWYsIDApKSB7Ci0rICAgICAgICByZXR1cm4gTERBUF9P UEVSQVRJT05TX0VSUk9SOwotKyAgICB9Ci0rCi0rICAgIGVycm5vID0gMDsKLSsgICAgc2l6ZSA9 IHN0cnRvbCh2YWx1ZSwgJmVuZHAsIDEwKTsKLSsgICAgaWYgKCplbmRwICE9ICdcMCcgfHwgZXJy bm8gPT0gRVJBTkdFIHx8IHNpemUgPCAxIHx8IHNpemUgPiAxMDAwKSB7Ci0rICAgICAgICBzbGFw aV9jcmVhdGVfZXJyb3Jtc2coZXJyb3JidWYsIFNMQVBJX0RTRV9SRVRVUk5URVhUX1NJWkUsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiglcykgdmFsdWUgKCVzKSBpcyBpbnZhbGlk LCBtdXN0IGJlIGF0IGxlYXN0IDEgYW5kIGxlc3MgdGhhbiAxMDAwXG4iLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGF0dHJuYW1lLCB2YWx1ZSk7Ci0rICAgICAgICByZXR1cm4gTERB UF9PUEVSQVRJT05TX0VSUk9SOwotKyAgICB9Ci0rCi0rICAgIGlmICghYXBwbHkpIHsKLSsgICAg ICAgIHJldHVybiByZXRWYWw7Ci0rICAgIH0KLSsKLSsgICAgQ0ZHX0xPQ0tfV1JJVEUoc2xhcGRG cm9udGVuZENvbmZpZyk7Ci0rCi0rICAgIHNsYXBkRnJvbnRlbmRDb25maWctPm1heGNvbnRyb2xz X3Blcl9vcCA9IHNpemU7Ci0rCi0rICAgIENGR19VTkxPQ0tfV1JJVEUoc2xhcGRGcm9udGVuZENv bmZpZyk7Ci0rICAgIHJldHVybiByZXRWYWw7Ci0rfQotKwotK2ludAotK2NvbmZpZ19nZXRfbWF4 Y29udHJvbHNwZXJvcCgpCi0rewotKyAgICBzbGFwZEZyb250ZW5kQ29uZmlnX3QgKnNsYXBkRnJv bnRlbmRDb25maWcgPSBnZXRGcm9udGVuZENvbmZpZygpOwotKyAgICBpbnQgcmV0VmFsOwotKwot KyAgICByZXRWYWwgPSBzbGFwZEZyb250ZW5kQ29uZmlnLT5tYXhjb250cm9sc19wZXJfb3A7Ci0r ICAgIGlmIChyZXRWYWwgPT0gMCkgewotKyAgICAgICAgcmV0VmFsID0gU0xBUERfREVGQVVMVF9N QVhDT05UUk9MU19QRVJfT1A7Ci0rICAgIH0KLSsgICAgcmV0dXJuIHJldFZhbDsKLSt9Ci0rCi0g aW50MzJfdAotIGNvbmZpZ19zZXRfZXh0cmFjdF9wZW0oY29uc3QgY2hhciAqYXR0cm5hbWUsIGNo YXIgKnZhbHVlLCBjaGFyICplcnJvcmJ1ZiwgaW50IGFwcGx5KQotIHsKLWRpZmYgLS1naXQgYS9s ZGFwL3NlcnZlcnMvc2xhcGQvcHJvdG8tc2xhcC5oIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL3Byb3Rv LXNsYXAuaAotaW5kZXggOGEyZjc0ODM2Li5jNjQ4MjQxNGYgMTAwNjQ0Ci0tLS0gYS9sZGFwL3Nl cnZlcnMvc2xhcGQvcHJvdG8tc2xhcC5oCi0rKysgYi9sZGFwL3NlcnZlcnMvc2xhcGQvcHJvdG8t c2xhcC5oCi1AQCAtNDI2LDYgKzQyNiw3IEBAIGludDMyX3QgY29uZmlnX3NldF9tYXhkZXNjcmlw dG9ycyhjb25zdCBjaGFyICphdHRybmFtZSwgY2hhciAqdmFsdWUsIGNoYXIgKmVycm9yCi0gaW50 IGNvbmZpZ19zZXRfbG9jYWx1c2VyKGNvbnN0IGNoYXIgKmF0dHJuYW1lLCBjaGFyICp2YWx1ZSwg Y2hhciAqZXJyb3JidWYsIGludCBhcHBseSk7Ci0gCi0gaW50IGNvbmZpZ19zZXRfbWF4c2ltcGxl cGFnZWRfcGVyX2Nvbm4oY29uc3QgY2hhciAqYXR0cm5hbWUsIGNoYXIgKnZhbHVlLCBjaGFyICpl cnJvcmJ1ZiwgaW50IGFwcGx5KTsKLStpbnQgY29uZmlnX3NldF9tYXhjb250cm9sc3Blcm9wKGNv bnN0IGNoYXIgKmF0dHJuYW1lLCBjaGFyICp2YWx1ZSwgY2hhciAqZXJyb3JidWYsIGludCBhcHBs eSk7Ci0gCi0gaW50IGxvZ19leHRlcm5hbF9saWJzX2RlYnVnX3NldF9sb2dfZm4odm9pZCk7Ci0g aW50IGxvZ19zZXRfYmFja2VuZChjb25zdCBjaGFyICphdHRybmFtZSwgY2hhciAqdmFsdWUsIGlu dCBsb2d0eXBlLCBjaGFyICplcnJvcmJ1ZiwgaW50IGFwcGx5KTsKLUBAIC02MzEsNiArNjMyLDcg QEAgaW50IGNvbmZpZ19nZXRfbWFsbG9jX21tYXBfdGhyZXNob2xkKHZvaWQpOwotICNlbmRpZgot IAotIGludCBjb25maWdfZ2V0X21heHNpbXBsZXBhZ2VkX3Blcl9jb25uKHZvaWQpOwotK2ludCBj b25maWdfZ2V0X21heGNvbnRyb2xzcGVyb3Aodm9pZCk7Ci0gaW50IGNvbmZpZ19nZXRfZXh0cmFj dF9wZW0odm9pZCk7Ci0gCi0gaW50MzJfdCBjb25maWdfZ2V0X2VuYWJsZV91cGdyYWRlX2hhc2go dm9pZCk7Ci1kaWZmIC0tZ2l0IGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL3NsYXAuaCBiL2xkYXAvc2Vy dmVycy9zbGFwZC9zbGFwLmgKLWluZGV4IDFlNWFkODRiZi4uNWIxZDg4NTBlIDEwMDY0NAotLS0t IGEvbGRhcC9zZXJ2ZXJzL3NsYXBkL3NsYXAuaAotKysrIGIvbGRhcC9zZXJ2ZXJzL3NsYXBkL3Ns YXAuaAotQEAgLTMwMSw2ICszMDEsOCBAQCB0eXBlZGVmIHZvaWQgKCpWRlBWKSgpOyAvKiB0YWtl cyB1bmRlZmluZWQgYXJndW1lbnRzICovCi0gI2RlZmluZSBTTEFQRF9ERUZBVUxUX01BWEJFUlNJ WkVfU1RSICIyMDk3MTUyIgotICNkZWZpbmUgU0xBUERfREVGQVVMVF9NQVhTSU1QTEVQQUdFRF9Q RVJfQ09OTiAoLTEpCi0gI2RlZmluZSBTTEFQRF9ERUZBVUxUX01BWFNJTVBMRVBBR0VEX1BFUl9D T05OX1NUUiAiLTEiCi0rI2RlZmluZSBTTEFQRF9ERUZBVUxUX01BWENPTlRST0xTX1BFUl9PUCAx MAotKyNkZWZpbmUgU0xBUERfREVGQVVMVF9NQVhDT05UUk9MU19QRVJfT1BfU1RSICIxMCIKLSAj ZGVmaW5lIFNMQVBEX0RFRkFVTFRfTERBUFNTT1RPS0VOX1RUTCAzNjAwCi0gI2RlZmluZSBTTEFQ RF9ERUZBVUxUX0xEQVBTU09UT0tFTl9UVExfU1RSICIzNjAwIgotIAotQEAgLTI0MTcsNiArMjQx OSw3IEBAIHR5cGVkZWYgc3RydWN0IF9zbGFwZEVudHJ5UG9pbnRzCi0gI2RlZmluZSBDT05GSUdf Q05fVVNFU19ETl9TWU5UQVhfSU5fRE5TICJuc3NsYXBkLWNuLXVzZXMtZG4tc3ludGF4LWluLWRu cyIKLSAKLSAjZGVmaW5lIENPTkZJR19NQVhTSU1QTEVQQUdFRF9QRVJfQ09OTl9BVFRSSUJVVEUg Im5zc2xhcGQtbWF4c2ltcGxlcGFnZWQtcGVyLWNvbm4iCi0rI2RlZmluZSBDT05GSUdfTUFYQ09O VFJPTFNfUEVSX09QX0FUVFJJQlVURSAibnNzbGFwZC1tYXhjb250cm9sc3Blcm9wIgotICNkZWZp bmUgQ09ORklHX0xPR0dJTkdfQkFDS0VORCAibnNzbGFwZC1sb2dnaW5nLWJhY2tlbmQiCi0gCi0g I2RlZmluZSBDT05GSUdfRVhUUkFDVF9QRU0gIm5zc2xhcGQtZXh0cmFjdC1wZW1maWxlcyIKLUBA IC0yNzQ5LDYgKzI3NTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBfc2xhcGRGcm9udGVuZENvbmZpZwot ICAgICBzbGFwaV9vbm9mZl90IGNuX3VzZXNfZG5fc3ludGF4X2luX2RuczsgLyogaW5kaWNhdGVz IHRoZSBjbiB2YWx1ZSBpbiBkbnMgaGFzIGRuIHN5bnRheCAqLwotICAgICBzbGFwaV9vbm9mZl90 IGdsb2JhbF9iYWNrZW5kX2xvY2s7Ci0gICAgIHNsYXBpX2ludF90IG1heHNpbXBsZXBhZ2VkX3Bl cl9jb25uOyAvKiBtYXggc2ltcGxlIHBhZ2VkIHJlc3VsdHMgcmVxcyBoYW5kbGVkIHBlciBjb25u ZWN0aW9uICovCi0rICAgIHNsYXBpX2ludF90IG1heGNvbnRyb2xzX3Blcl9vcDsgICAgICAvKiBt YXggTERBUCBjb250cm9scyBhbGxvd2VkIHBlciBvcGVyYXRpb24gKi8KLSAgICAgc2xhcGlfb25v ZmZfdCBlbmFibGVfbnVuY19zdGFuczsgLyogRGVzcGl0ZSB0aGUgcmVtb3ZhbCBvZiBOUywgd2Ug aGF2ZSB0byBsZWF2ZSB0aGUgdmFsdWUgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICogY2FzZSBzb21lb25lIHdhcyBzZXR0aW5nIGl0LgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKi8KLWRpZmYgLS1naXQgYS9zcmMvY29ja3BpdC8zODkt Y29uc29sZS9zcmMvbGliL3NlcnZlci90dW5pbmcuanN4IGIvc3JjL2NvY2twaXQvMzg5LWNvbnNv bGUvc3JjL2xpYi9zZXJ2ZXIvdHVuaW5nLmpzeAotaW5kZXggNWY1NmZmODU4Li5mZTBlZDlkMmUg MTAwNjQ0Ci0tLS0gYS9zcmMvY29ja3BpdC8zODktY29uc29sZS9zcmMvbGliL3NlcnZlci90dW5p bmcuanN4Ci0rKysgYi9zcmMvY29ja3BpdC8zODktY29uc29sZS9zcmMvbGliL3NlcnZlci90dW5p bmcuanN4Ci1AQCAtMjMsNiArMjMsNyBAQCBjb25zdCB0dW5pbmdfYXR0cnMgPSBbCi0gICAgICdu c3NsYXBkLWNvbm5lY3Rpb24tbm9jYW5vbicsCi0gICAgICduc3NsYXBkLWVuYWJsZS10dXJiby1t b2RlJywKLSAgICAgJ25zc2xhcGQtdGhyZWFkbnVtYmVyJywKLSsgICAgJ25zc2xhcGQtbWF4dGhy ZWFkc3BlcmNvbm4nLAotICAgICAnbnNzbGFwZC1tYXhkZXNjcmlwdG9ycycsCi0gICAgICduc3Ns YXBkLXRpbWVsaW1pdCcsCi0gICAgICduc3NsYXBkLXNpemVsaW1pdCcsCi1AQCAtMzQsNiArMzUs NyBAQCBjb25zdCB0dW5pbmdfYXR0cnMgPSBbCi0gICAgICduc3NsYXBkLW1heHNhc2xpb3NpemUn LAotICAgICAnbnNzbGFwZC1saXN0ZW4tYmFja2xvZy1zaXplJywKLSAgICAgJ25zc2xhcGQtbWF4 LWZpbHRlci1uZXN0LWxldmVsJywKLSsgICAgJ25zc2xhcGQtbWF4Y29udHJvbHNwZXJvcCcsCi0g ICAgICduc3NsYXBkLW5kbi1jYWNoZS1tYXgtc2l6ZScsCi0gXTsKLSAKLUBAIC0xNjEsNiArMTYz LDcgQEAgZXhwb3J0IGNsYXNzIFNlcnZlclR1bmluZyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJ25zc2xhcGQtY29ubmVjdGlvbi1ub2Nhbm9uJzog Y29ubk5vQ2Fubm9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICduc3NsYXBkLWVuYWJsZS10 dXJiby1tb2RlJzogdHVyYm9Nb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICduc3NsYXBk LXRocmVhZG51bWJlcic6IGF0dHJzWyduc3NsYXBkLXRocmVhZG51bWJlciddWzBdLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICduc3NsYXBkLW1heHRocmVhZHNwZXJjb25uJzogYXR0cnNbJ25z c2xhcGQtbWF4dGhyZWFkc3BlcmNvbm4nXVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAn bnNzbGFwZC1tYXhkZXNjcmlwdG9ycyc6IGF0dHJzWyduc3NsYXBkLW1heGRlc2NyaXB0b3JzJ11b MF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ25zc2xhcGQtdGltZWxpbWl0JzogYXR0cnNb J25zc2xhcGQtdGltZWxpbWl0J11bMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ25zc2xh cGQtc2l6ZWxpbWl0JzogYXR0cnNbJ25zc2xhcGQtc2l6ZWxpbWl0J11bMF0sCi1AQCAtMTcyLDYg KzE3NSw3IEBAIGV4cG9ydCBjbGFzcyBTZXJ2ZXJUdW5pbmcgZXh0ZW5kcyBSZWFjdC5Db21wb25l bnQgewotICAgICAgICAgICAgICAgICAgICAgICAgICduc3NsYXBkLW1heHNhc2xpb3NpemUnOiBh dHRyc1snbnNzbGFwZC1tYXhzYXNsaW9zaXplJ11bMF0sCi0gICAgICAgICAgICAgICAgICAgICAg ICAgJ25zc2xhcGQtbGlzdGVuLWJhY2tsb2ctc2l6ZSc6IGF0dHJzWyduc3NsYXBkLWxpc3Rlbi1i YWNrbG9nLXNpemUnXVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnbnNzbGFwZC1tYXgt ZmlsdGVyLW5lc3QtbGV2ZWwnOiBhdHRyc1snbnNzbGFwZC1tYXgtZmlsdGVyLW5lc3QtbGV2ZWwn XVswXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAnbnNzbGFwZC1tYXhjb250cm9sc3Blcm9w JzogYXR0cnNbJ25zc2xhcGQtbWF4Y29udHJvbHNwZXJvcCddWzBdLAotICAgICAgICAgICAgICAg ICAgICAgICAgICduc3NsYXBkLW5kbi1jYWNoZS1tYXgtc2l6ZSc6IGF0dHJzWyduc3NsYXBkLW5k bi1jYWNoZS1tYXgtc2l6ZSddWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlY29y ZCBvcmlnaW5hbCB2YWx1ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAnX25zc2xhcGQtbmRu LWNhY2hlLWVuYWJsZWQnOiBuZG5FbmFibGVkLAotQEAgLTE3OSw2ICsxODMsNyBAQCBleHBvcnQg Y2xhc3MgU2VydmVyVHVuaW5nIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKLSAgICAgICAgICAg ICAgICAgICAgICAgICAnX25zc2xhcGQtY29ubmVjdGlvbi1ub2Nhbm9uJzogY29ubk5vQ2Fubm9u LAotICAgICAgICAgICAgICAgICAgICAgICAgICdfbnNzbGFwZC1lbmFibGUtdHVyYm8tbW9kZSc6 IHR1cmJvTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnX25zc2xhcGQtdGhyZWFkbnVt YmVyJzogYXR0cnNbJ25zc2xhcGQtdGhyZWFkbnVtYmVyJ11bMF0sCi0rICAgICAgICAgICAgICAg ICAgICAgICAgJ19uc3NsYXBkLW1heHRocmVhZHNwZXJjb25uJzogYXR0cnNbJ25zc2xhcGQtbWF4 dGhyZWFkc3BlcmNvbm4nXVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnX25zc2xhcGQt bWF4ZGVzY3JpcHRvcnMnOiBhdHRyc1snbnNzbGFwZC1tYXhkZXNjcmlwdG9ycyddWzBdLAotICAg ICAgICAgICAgICAgICAgICAgICAgICdfbnNzbGFwZC10aW1lbGltaXQnOiBhdHRyc1snbnNzbGFw ZC10aW1lbGltaXQnXVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnX25zc2xhcGQtc2l6 ZWxpbWl0JzogYXR0cnNbJ25zc2xhcGQtc2l6ZWxpbWl0J11bMF0sCi1AQCAtMTkwLDYgKzE5NSw3 IEBAIGV4cG9ydCBjbGFzcyBTZXJ2ZXJUdW5pbmcgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewot ICAgICAgICAgICAgICAgICAgICAgICAgICdfbnNzbGFwZC1tYXhzYXNsaW9zaXplJzogYXR0cnNb J25zc2xhcGQtbWF4c2FzbGlvc2l6ZSddWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICdf bnNzbGFwZC1saXN0ZW4tYmFja2xvZy1zaXplJzogYXR0cnNbJ25zc2xhcGQtbGlzdGVuLWJhY2ts b2ctc2l6ZSddWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICdfbnNzbGFwZC1tYXgtZmls dGVyLW5lc3QtbGV2ZWwnOiBhdHRyc1snbnNzbGFwZC1tYXgtZmlsdGVyLW5lc3QtbGV2ZWwnXVsw XSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAnX25zc2xhcGQtbWF4Y29udHJvbHNwZXJvcCc6 IGF0dHJzWyduc3NsYXBkLW1heGNvbnRyb2xzcGVyb3AnXVswXSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAnX25zc2xhcGQtbmRuLWNhY2hlLW1heC1zaXplJzogYXR0cnNbJ25zc2xhcGQtbmRu LWNhY2hlLW1heC1zaXplJ11bMF0sCi0gICAgICAgICAgICAgICAgICAgICB9LCB0aGlzLnByb3Bz LmVuYWJsZVRyZWUoKSk7Ci0gICAgICAgICAgICAgICAgIH0pCi1AQCAtMjc1LDcgKzI4MSw3IEBA IGV4cG9ydCBjbGFzcyBTZXJ2ZXJUdW5pbmcgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQgewotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8VGV4dENvbnRlbnQ+Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8VGV4dCBjb21wb25lbnQ9e1RleHRWYXJpYW50cy5oM30+Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge18oIlR1bmluZyAmIExpbWl0cyIpfQot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2YXJpYW50PSJwbGFpbiIKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17XygiUmVmcmVzaCBzZXR0aW5ncyIpfQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7 Ci1AQCAtMzEyLDYgKzMxOCwyOCBAQCBleHBvcnQgY2xhc3MgU2VydmVyVHVuaW5nIGV4dGVuZHMg UmVhY3QuQ29tcG9uZW50IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZEl0ZW0+Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgPC9HcmlkPgotKyAgICAgICAgICAgICAgICAgICAgICAgIDxHcmlkCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtfKCJUaGUgbWF4aW11bSBudW1iZXIgb2YgdGhy ZWFkcyB0aGF0IGNhbiBoYW5kbGUgcmVxdWVzdHMgZm9yIGEgc2luZ2xlIGNvbm5lY3Rpb24gKG5z c2xhcGQtbWF4dGhyZWFkc3BlcmNvbm4pLiIpfQotKyAgICAgICAgICAgICAgICAgICAgICAgID4K LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyaWRJdGVtIGNsYXNzTmFtZT0iZHMtbGFi ZWwiIHNwYW49ezN9PgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge18oIk1heCBU aHJlYWRzIFBlciBDb25uZWN0aW9uIil9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv R3JpZEl0ZW0+Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxHcmlkSXRlbSBzcGFuPXs5 fT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOdW1iZXJJbnB1dAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlWyduc3NsYXBk LW1heHRocmVhZHNwZXJjb25uJ119Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbWluPXsxfQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heD17NjU1 MzV9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NaW51cz17KCkgPT4g eyB0aGlzLm9uTWludXNDb25maWcoIm5zc2xhcGQtbWF4dGhyZWFkc3BlcmNvbm4iKSB9fQotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4geyB0aGlz Lm9uQ29uZmlnQ2hhbmdlKGUsICJuc3NsYXBkLW1heHRocmVhZHNwZXJjb25uIiwgMSwgNjU1MzUp IH19Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QbHVzPXsoKSA9PiB7 IHRoaXMub25QbHVzQ29uZmlnKCJuc3NsYXBkLW1heHRocmVhZHNwZXJjb25uIikgfX0KLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dE5hbWU9ImlucHV0IgotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0QXJpYUxhYmVsPSJudW1iZXIgaW5w dXQiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWludXNCdG5BcmlhTGFi ZWw9Im1pbnVzIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsdXNCdG5B cmlhTGFiZWw9InBsdXMiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lk dGhDaGFycz17OH0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZEl0ZW0+Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgPC9HcmlkPgotICAgICAgICAgICAgICAgICAgICAgICAgIDxHcmlkCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRpdGxlPXtfKCJUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2Vjb25kcyBh bGxvY2F0ZWQgZm9yIGEgc2VhcmNoIHJlcXVlc3QuICBTZXQgdG8gJy0xJyB0byBkaXNhYmxlIHRo ZSB0aW1lIGxpbWl0IChuc3NsYXBkLXRpbWVsaW1pdCkuIil9Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgPgotQEAgLTU0Miw2ICs1NzAsMjggQEAgZXhwb3J0IGNsYXNzIFNlcnZlclR1bmluZyBl eHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Hcmlk SXRlbT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvR3JpZD4KLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxHcmlkCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGl0bGU9e18oIlRoZSBtYXhpbXVtIG51bWJlciBvZiBMREFQIGNvbnRyb2xz IGFsbG93ZWQgcGVyIG9wZXJhdGlvbiAobnNzbGFwZC1tYXhjb250cm9sc3Blcm9wKS4iKX0KLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8R3JpZEl0ZW0gY2xhc3NOYW1lPSJkcy1sYWJlbCIgc3Bhbj17M30+Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtfKCJNYXhpbXVtIENvbnRy b2xzIFBlciBPcGVyYXRpb24iKX0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8L0dyaWRJdGVtPgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxHcmlk SXRlbSBzcGFuPXs5fT4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PE51bWJlcklucHV0Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2YWx1ZT17dGhpcy5zdGF0ZVsnbnNzbGFwZC1tYXhjb250cm9sc3Blcm9wJ119Ci0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49ezF9Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXg9ezEwMDB9Ci0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbk1pbnVzPXsoKSA9PiB7IHRoaXMu b25NaW51c0NvbmZpZygibnNzbGFwZC1tYXhjb250cm9sc3Blcm9wIikgfX0KLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4geyB0aGlz Lm9uQ29uZmlnQ2hhbmdlKGUsICJuc3NsYXBkLW1heGNvbnRyb2xzcGVyb3AiLCAxLCAwKSB9fQot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QbHVzPXsoKSA9 PiB7IHRoaXMub25QbHVzQ29uZmlnKCJuc3NsYXBkLW1heGNvbnRyb2xzcGVyb3AiKSB9fQotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXROYW1lPSJpbnB1 dCIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0QXJp YUxhYmVsPSJudW1iZXIgaW5wdXQiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtaW51c0J0bkFyaWFMYWJlbD0ibWludXMiCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVzQnRuQXJpYUxhYmVsPSJwbHVzIgotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGhDaGFycz17OH0KLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz4KLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8L0dyaWRJdGVtPgotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPC9HcmlkPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdy aWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17XygiRGlzYWJs ZSBETlMgcmV2ZXJzZSBlbnRyaWVzIGZvciBvdXRnb2luZyBjb25uZWN0aW9ucyAobnNzbGFwZC1j b25uZWN0aW9uLW5vY2Fub24pLiIpfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PgotLS0gCi0yLjU0LjAKLQoKZGlmZiAtLWdpdCBhLzM4OS1kcy1iYXNlLnNwZWMgYi8zODktZHMt YmFzZS5zcGVjCmluZGV4IDk2NWM4ZmMuLjgwNTkzMTIgMTAwNjQ0Ci0tLSBhLzM4OS1kcy1iYXNl LnNwZWMKKysrIGIvMzg5LWRzLWJhc2Uuc3BlYwpAQCAtMSw2ICsxLDYgQEAKICVnbG9iYWwgcGtn bmFtZSBkaXJzcnYKIAotIyBFeGNsdWRlIGk2ODYgYml0IGFyY2hlcworIyBFeGNsdWRlIGk2ODYg YXJjaGl0ZWN0dXJlCiBFeGNsdWRlQXJjaDogaTY4NgogCiAlYmNvbmQgYnVuZGxlX2plbWFsbG9j IDEKQEAgLTEwLDExICsxMCw3IEBAIEV4Y2x1ZGVBcmNoOiBpNjg2CiAlZ2xvYmFsIF9fcHJvdmlk ZXNfZXhjbHVkZSBebGliamVtYWxsb2NcXC5zby4qJAogJWVuZGlmCiAKLSViY29uZCBidW5kbGVf bGliZGIgMAotJWlmIDAlez9yaGVsfSA+PSAxMAotJWJjb25kIGJ1bmRsZV9saWJkYiAxCi0lZW5k aWYKLQorJWJjb25kIGJ1bmRsZV9saWJkYiAle2RlZmluZWQgcmhlbH0KICVpZiAle3dpdGggYnVu ZGxlX2xpYmRifQogJWdsb2JhbCBsaWJkYl92ZXJzaW9uIDUuMwogJWdsb2JhbCBsaWJkYl9iYXNl X3ZlcnNpb24gZGItJXtsaWJkYl92ZXJzaW9ufS4yOApAQCAtMjgsMTMgKzI0LDE4IEBAIEV4Y2x1 ZGVBcmNoOiBpNjg2CiAlZW5kaWYKICVlbmRpZgogCi0lYmNvbmQgbGliYmRiX3JvIDAKKyViY29u ZCByZXBsX3JlcG9ydHMgMAorCiAlaWYgMCV7P2ZlZG9yYX0gPj0gNDMKICViY29uZCBsaWJiZGJf cm8gMQorJWVsc2UKKyViY29uZCBsaWJiZGJfcm8gMAogJWVuZGlmCiAKICMgVGhpcyBpcyB1c2Vk IGluIGNlcnRhaW4gYnVpbGRzIHRvIGhlbHAgdXMga25vdyBpZiBpdCBoYXMgZXh0cmEgZmVhdHVy ZXMuCiAlZ2xvYmFsIHZhcmlhbnQgYmFzZQorJWdsb2JhbCBwcmVyZWwgJXtuaWx9CisKICMgVGhp cyBlbmFibGVzIGEgc2FuaXRpemVkIGJ1aWxkLgogJWJjb25kIGFzYW4gMAogJWJjb25kIG1zYW4g MApAQCAtNTMsMjEgKzU0LDMwIEBAIEV4Y2x1ZGVBcmNoOiBpNjg2CiAKICVpZiAle3dpdGggY2xh bmd9CiAlZ2xvYmFsIHRvb2xjaGFpbiBjbGFuZwotJWdsb2JhbCBfbWlzc2luZ19idWlsZF9pZHNf dGVybWluYXRlX2J1aWxkIDAKKyVnbG9iYWwgX2x0b19jZmxhZ3MgJW5pbAogJWVuZGlmCiAKICMg QnVpbGQgY29ja3BpdCBwbHVnaW4KKyMgRW5hYmxlZCBvbiBGZWRvcmEgYW5kIEVQRUwgY29tbXVu aXR5IGJ1aWxkcy4KKyMgRGlzYWJsZWQgb24gUkhFTC9DZW50T1MgU3RyZWFtIHVubGVzcyBSSERT IChkaXN0cmlidXRpb24gY29udGFpbnMgImRzcnYiKS4KKyVpZiAwJXs/cmhlbH0gJiYgITAlez9l cGVsfQorJWJjb25kIGNvY2twaXQgJShlY2hvICIlez9kaXN0cmlidXRpb259IiB8IGdyZXAgLXEg ZHNydiAmJiBlY2hvIDEgfHwgZWNobyAwKQorJWVsc2UKICViY29uZCBjb2NrcGl0IDEKKyVlbmRp ZgogCi0jIGZlZG9yYSAxNSBhbmQgbGF0ZXIgdXNlcyB0bXBmaWxlcy5kCi0jIG90aGVyd2lzZSwg Y29tbWVudCB0aGlzIG91dAotJXshP3dpdGhfdG1wZmlsZXNfZDogJWdsb2JhbCB3aXRoX3RtcGZp bGVzX2QgJXtfc3lzY29uZmRpcn0vdG1wZmlsZXMuZH0KKyMgSElCUCBwYXNzd29yZCBicmVhY2gg Y2hlY2tpbmcKKyViY29uZCBoaWJwIDEKKworJWJjb25kIHVzZHQgMQogCiAjIHN5c3RlbWQgc3Vw cG9ydAogJWdsb2JhbCBncm91cG5hbWUgJXtwa2duYW1lfS50YXJnZXQKIAogIyBGaWx0ZXIgYXJn cGFyc2UtbWFucGFnZSBmcm9tIGF1dG9nZW5lcmF0ZWQgcGFja2FnZSBSZXF1aXJlcwogJWdsb2Jh bCBfX3JlcXVpcmVzX2V4Y2x1ZGUgXnB5dGhvbi4qYXJncGFyc2UtbWFucGFnZQorIyBGaWx0ZXIg cGVybCBhdXRvLWRlcCBmcm9tIGplbWFsbG9jJ3MgamVwcm9mIHByb2ZpbGVyIHNjcmlwdAorJWds b2JhbCBfX3JlcXVpcmVzX2V4Y2x1ZGVfZnJvbSAle19saWJkaXJ9LyV7cGtnbmFtZX0vYmluL2pl cHJvZgogCiAjIEZvcmNlIHRvIHJlcXVpcmUgbnNzIHZlcnNpb24gZ3JlYXRlciBvciBlcXVhbCBh cyB0aGUgdmVyc2lvbiBhdmFpbGFibGUgYXQgdGhlIGJ1aWxkIHRpbWUKICMgU2VlIGJ6MTk4NjMy NwpAQCAtNzUsMjQgKzg1LDIxIEBAIEV4Y2x1ZGVBcmNoOiBpNjg2CiAKIFN1bW1hcnk6ICAgICAg ICAgIDM4OSBEaXJlY3RvcnkgU2VydmVyICgle3ZhcmlhbnR9KQogTmFtZTogICAgICAgICAgICAg Mzg5LWRzLWJhc2UKLVZlcnNpb246ICAgICAgICAgIDMuMS40CitWZXJzaW9uOiAgICAgICAgICAz LjEuNSV7P3ByZXJlbH0KIFJlbGVhc2U6ICAgICAgICAgICV7YXV0b3JlbGVhc2UgLW4gJXs/d2l0 aF9hc2FuOi1lIGFzYW59fSV7P2Rpc3R9Ci1MaWNlbnNlOiAgICAgICAgICBHUEwtMy4wLW9yLWxh dGVyIFdJVEggR1BMLTMuMC0zODktZHMtYmFzZS1leGNlcHRpb24gQU5EIChBcGFjaGUtMi4wIE9S IEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2VwdGlvbiBPUiBNSVQpIEFORCAoQXBhY2hlLTIuMCBP UiBMR1BMLTIuMS1vci1sYXRlciBPUiBNSVQpIEFORCAoQXBhY2hlLTIuMCBPUiBNSVQpIEFORCAo Q0MtQlktNC4wIEFORCBNSVQpIEFORCAoTUlUIE9SIEFwYWNoZS0yLjApIEFORCBVbmljb2RlLTMu MCBBTkQgKE1JVCBPUiBDQzAtMS4wKSBBTkQgKE1JVCBPUiBVbmxpY2Vuc2UpIEFORCAwQlNEIEFO RCBBcGFjaGUtMi4wIEFORCBCU0QtMi1DbGF1c2UgQU5EIEJTRC0zLUNsYXVzZSBBTkQgSVNDIEFO RCBNSVQgQU5EIE1JVCBBTkQgSVNDIEFORCBNUEwtMi4wIEFORCBQU0YtMi4wIEFORCBabGliCitM aWNlbnNlOiAgICAgICAgICBHUEwtMy4wLW9yLWxhdGVyIFdJVEggR1BMLTMuMC0zODktZHMtYmFz ZS1leGNlcHRpb24gQU5EIChBcGFjaGUtMi4wIE9SIEFwYWNoZS0yLjAgV0lUSCBMTFZNLWV4Y2Vw dGlvbiBPUiBNSVQpIEFORCAoQXBhY2hlLTIuMCBPUiBMR1BMLTIuMS1vci1sYXRlciBPUiBNSVQp IEFORCAoQXBhY2hlLTIuMCBPUiBNSVQpIEFORCAoQXBhY2hlLTIuMCBPUiBNSVQpIEFORCBVbmlj b2RlLTMuMCBBTkQgKENDLUJZLTQuMCBBTkQgTUlUKSBBTkQgKE1JVCBPUiBVbmxpY2Vuc2UpIEFO RCAwQlNEIEFORCBBcGFjaGUtMi4wIEFORCBCU0QtMy1DbGF1c2UgQU5EIElTQyBBTkQgTUlUIEFO RCBNSVQgQU5EIElTQyBBTkQgTVBMLTIuMCBBTkQgWmxpYgogVVJMOiAgICAgICAgICAgICAgaHR0 cHM6Ly93d3cucG9ydDM4OS5vcmcKLU9ic29sZXRlczogICAgICAgICV7bmFtZX0tbGVnYWN5LXRv b2xzIDwgMS40LjQuNgotT2Jzb2xldGVzOiAgICAgICAgJXtuYW1lfS1sZWdhY3ktdG9vbHMtZGVi dWdpbmZvIDwgMS40LjQuNgotUHJvdmlkZXM6ICAgICAgICAgbGRpZjJsZGJtID49IDAKIAogIyMj IyMgQnVuZGxlZCBjYXJnbyBjcmF0ZXMgbGlzdCAtIFNUQVJUICMjIyMjCiBQcm92aWRlczogIGJ1 bmRsZWQoY3JhdGUoYWxsb2NhdG9yLWFwaTIpKSA9IDAuMi4yMQogUHJvdmlkZXM6ICBidW5kbGVk KGNyYXRlKGFueWhvdykpID0gMS4wLjEwMgogUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKGF0dHkp KSA9IDAuMi4xNAotUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKGF1dG9jZmcpKSA9IDEuNS4xCi1Q cm92aWRlczogIGJ1bmRsZWQoY3JhdGUoYmFzZTY0KSkgPSAwLjEzLjEKLVByb3ZpZGVzOiAgYnVu ZGxlZChjcmF0ZShiaXRmbGFncykpID0gMi4xMi4xCitQcm92aWRlczogIGJ1bmRsZWQoY3JhdGUo YXV0b2NmZykpID0gMS41LjAKK1Byb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZShiYXNlNjQpKSA9IDAu MjMuMAorUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKGJpdGZsYWdzKSkgPSAyLjExLjAKIFByb3Zp ZGVzOiAgYnVuZGxlZChjcmF0ZShieXRlb3JkZXIpKSA9IDEuNS4wCiBQcm92aWRlczogIGJ1bmRs ZWQoY3JhdGUoY2JpbmRnZW4pKSA9IDAuMjYuMAotUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKGNj KSkgPSAxLjIuNjMKK1Byb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZShjYykpID0gMS4yLjU2CiBQcm92 aWRlczogIGJ1bmRsZWQoY3JhdGUoY2ZnLWlmKSkgPSAxLjAuNAogUHJvdmlkZXM6ICBidW5kbGVk KGNyYXRlKGNsYXApKSA9IDMuMi4yNQogUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKGNsYXBfbGV4 KSkgPSAwLjIuNApAQCAtMTAyLDU1ICsxMDksNTUgQEAgUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRl KGNyb3NzYmVhbS1xdWV1ZSkpID0gMC4zLjEyCiBQcm92aWRlczogIGJ1bmRsZWQoY3JhdGUoY3Jv c3NiZWFtLXV0aWxzKSkgPSAwLjguMjEKIFByb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZShlcXVpdmFs ZW50KSkgPSAxLjAuMgogUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKGVycm5vKSkgPSAwLjMuMTQK LVByb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZShmYXN0cmFuZCkpID0gMi40LjEKK1Byb3ZpZGVzOiAg YnVuZGxlZChjcmF0ZShmYXN0cmFuZCkpID0gMi4zLjAKIFByb3ZpZGVzOiAgYnVuZGxlZChjcmF0 ZShmZXJuZXQpKSA9IDAuMS40CiBQcm92aWRlczogIGJ1bmRsZWQoY3JhdGUoZmluZC1tc3ZjLXRv b2xzKSkgPSAwLjEuOQogUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKGZvbGRoYXNoKSkgPSAwLjIu MAogUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKGZvcmVpZ24tdHlwZXMpKSA9IDAuMy4yCiBQcm92 aWRlczogIGJ1bmRsZWQoY3JhdGUoZm9yZWlnbi10eXBlcy1zaGFyZWQpKSA9IDAuMS4xCi1Qcm92 aWRlczogIGJ1bmRsZWQoY3JhdGUoZ2V0cmFuZG9tKSkgPSAwLjQuMgotUHJvdmlkZXM6ICBidW5k bGVkKGNyYXRlKGhhc2hicm93bikpID0gMC4xNy4xCitQcm92aWRlczogIGJ1bmRsZWQoY3JhdGUo Z2V0cmFuZG9tKSkgPSAwLjQuMQorUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKGhhc2hicm93bikp ID0gMC4xNi4xCiBQcm92aWRlczogIGJ1bmRsZWQoY3JhdGUoaGVjaykpID0gMC41LjAKIFByb3Zp ZGVzOiAgYnVuZGxlZChjcmF0ZShoZXJtaXQtYWJpKSkgPSAwLjEuMTkKIFByb3ZpZGVzOiAgYnVu ZGxlZChjcmF0ZShpZC1hcmVuYSkpID0gMi4zLjAKLVByb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZShp bmRleG1hcCkpID0gMi4xNC4wCi1Qcm92aWRlczogIGJ1bmRsZWQoY3JhdGUoaXRvYSkpID0gMS4w LjE4CitQcm92aWRlczogIGJ1bmRsZWQoY3JhdGUoaW5kZXhtYXApKSA9IDIuMTMuMAorUHJvdmlk ZXM6ICBidW5kbGVkKGNyYXRlKGl0b2EpKSA9IDEuMC4xNwogUHJvdmlkZXM6ICBidW5kbGVkKGNy YXRlKGpvYnNlcnZlcikpID0gMC4xLjM0CiBQcm92aWRlczogIGJ1bmRsZWQoY3JhdGUobGViMTI4 Zm10KSkgPSAwLjEuMAotUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKGxpYmMpKSA9IDAuMi4xODYK LVByb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZShsaW51eC1yYXctc3lzKSkgPSAwLjEyLjEKLVByb3Zp ZGVzOiAgYnVuZGxlZChjcmF0ZShsb2cpKSA9IDAuNC4zMQotUHJvdmlkZXM6ICBidW5kbGVkKGNy YXRlKGxydSkpID0gMC4xNi40Ci1Qcm92aWRlczogIGJ1bmRsZWQoY3JhdGUobWVtY2hyKSkgPSAy LjguMQotUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKG9uY2VfY2VsbCkpID0gMS4yMS40Ci1Qcm92 aWRlczogIGJ1bmRsZWQoY3JhdGUob3BlbnNzbCkpID0gMC4xMC44MAorUHJvdmlkZXM6ICBidW5k bGVkKGNyYXRlKGxpYmMpKSA9IDAuMi4xODIKK1Byb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZShsaW51 eC1yYXctc3lzKSkgPSAwLjExLjAKK1Byb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZShsb2cpKSA9IDAu NC4yOQorUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKGxydSkpID0gMC4xNi4zCitQcm92aWRlczog IGJ1bmRsZWQoY3JhdGUobWVtY2hyKSkgPSAyLjguMAorUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRl KG9uY2VfY2VsbCkpID0gMS4yMS4zCitQcm92aWRlczogIGJ1bmRsZWQoY3JhdGUob3BlbnNzbCkp ID0gMC4xMC43NQogUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKG9wZW5zc2wtbWFjcm9zKSkgPSAw LjEuMQotUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKG9wZW5zc2wtc3lzKSkgPSAwLjkuMTE2CitQ cm92aWRlczogIGJ1bmRsZWQoY3JhdGUob3BlbnNzbC1zeXMpKSA9IDAuOS4xMTEKIFByb3ZpZGVz OiAgYnVuZGxlZChjcmF0ZShvc19zdHJfYnl0ZXMpKSA9IDYuNi4xCiBQcm92aWRlczogIGJ1bmRs ZWQoY3JhdGUocGFzdGUpKSA9IDAuMS4xOAogUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKHBhc3Rl LWltcGwpKSA9IDAuMS4xOAotUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKHBpbi1wcm9qZWN0LWxp dGUpKSA9IDAuMi4xNwotUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKHBrZy1jb25maWcpKSA9IDAu My4zMworUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKHBpbi1wcm9qZWN0LWxpdGUpKSA9IDAuMi4x NgorUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKHBrZy1jb25maWcpKSA9IDAuMy4zMgogUHJvdmlk ZXM6ICBidW5kbGVkKGNyYXRlKHByZXR0eXBsZWFzZSkpID0gMC4yLjM3CiBQcm92aWRlczogIGJ1 bmRsZWQoY3JhdGUocHJvYy1tYWNyby1oYWNrKSkgPSAwLjUuMjArZGVwcmVjYXRlZAogUHJvdmlk ZXM6ICBidW5kbGVkKGNyYXRlKHByb2MtbWFjcm8yKSkgPSAxLjAuMTA2Ci1Qcm92aWRlczogIGJ1 bmRsZWQoY3JhdGUocXVvdGUpKSA9IDEuMC40NQotUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKHIt ZWZpKSkgPSA2LjAuMAotUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKHJ1c3RpeCkpID0gMS4xLjQK LVByb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZShzZW12ZXIpKSA9IDEuMC4yOAorUHJvdmlkZXM6ICBi dW5kbGVkKGNyYXRlKHF1b3RlKSkgPSAxLjAuNDQKK1Byb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZShy LWVmaSkpID0gNS4zLjAKK1Byb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZShydXN0aXgpKSA9IDEuMS4z CitQcm92aWRlczogIGJ1bmRsZWQoY3JhdGUoc2VtdmVyKSkgPSAxLjAuMjcKIFByb3ZpZGVzOiAg YnVuZGxlZChjcmF0ZShzZXJkZSkpID0gMS4wLjIyOAogUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRl KHNlcmRlX2NvcmUpKSA9IDEuMC4yMjgKIFByb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZShzZXJkZV9k ZXJpdmUpKSA9IDEuMC4yMjgKLVByb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZShzZXJkZV9qc29uKSkg PSAxLjAuMTUwCi1Qcm92aWRlczogIGJ1bmRsZWQoY3JhdGUoc2hsZXgpKSA9IDIuMC4xCitQcm92 aWRlczogIGJ1bmRsZWQoY3JhdGUoc2VyZGVfanNvbikpID0gMS4wLjE0OQorUHJvdmlkZXM6ICBi dW5kbGVkKGNyYXRlKHNobGV4KSkgPSAxLjMuMAogUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKHNt YWxsdmVjKSkgPSAxLjE1LjEKIFByb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZShzcHRyKSkgPSAwLjMu MgogUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKHN0cnNpbSkpID0gMC4xMC4wCiBQcm92aWRlczog IGJ1bmRsZWQoY3JhdGUoc3luKSkgPSAyLjAuMTE3Ci1Qcm92aWRlczogIGJ1bmRsZWQoY3JhdGUo dGVtcGZpbGUpKSA9IDMuMjcuMAorUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKHRlbXBmaWxlKSkg PSAzLjI1LjAKIFByb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZSh0ZXJtY29sb3IpKSA9IDEuNC4xCiBQ cm92aWRlczogIGJ1bmRsZWQoY3JhdGUodGV4dHdyYXApKSA9IDAuMTYuMgotUHJvdmlkZXM6ICBi dW5kbGVkKGNyYXRlKHRva2lvKSkgPSAxLjUyLjMKK1Byb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZSh0 b2tpbykpID0gMS40OS4wCiBQcm92aWRlczogIGJ1bmRsZWQoY3JhdGUodG9tbCkpID0gMC41LjEx CiBQcm92aWRlczogIGJ1bmRsZWQoY3JhdGUodHJhY2luZykpID0gMC4xLjQ0CiBQcm92aWRlczog IGJ1bmRsZWQoY3JhdGUodHJhY2luZy1hdHRyaWJ1dGVzKSkgPSAwLjEuMzEKQEAgLTE2MCw3ICsx NjcsNyBAQCBQcm92aWRlczogIGJ1bmRsZWQoY3JhdGUodW5pY29kZS14aWQpKSA9IDAuMi42CiBQ cm92aWRlczogIGJ1bmRsZWQoY3JhdGUodXVpZCkpID0gMC44LjIKIFByb3ZpZGVzOiAgYnVuZGxl ZChjcmF0ZSh2Y3BrZykpID0gMC4yLjE1CiBQcm92aWRlczogIGJ1bmRsZWQoY3JhdGUod2FzaSkp ID0gMC4xMS4xK3dhc2lfc25hcHNob3RfcHJldmlldzEKLVByb3ZpZGVzOiAgYnVuZGxlZChjcmF0 ZSh3YXNpcDIpKSA9IDEuMC4zK3dhc2lfMC4yLjkKK1Byb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZSh3 YXNpcDIpKSA9IDEuMC4yK3dhc2lfMC4yLjkKIFByb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZSh3YXNp cDMpKSA9IDAuNC4wK3dhc2lfMC4zLjBfcmNfMjAyNl8wMV8wNgogUHJvdmlkZXM6ICBidW5kbGVk KGNyYXRlKHdhc20tZW5jb2RlcikpID0gMC4yNDQuMAogUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRl KHdhc20tbWV0YWRhdGEpKSA9IDAuMjQ0LjAKQEAgLTE3MSw3ICsxNzgsNyBAQCBQcm92aWRlczog IGJ1bmRsZWQoY3JhdGUod2luYXBpLXV0aWwpKSA9IDAuMS4xMQogUHJvdmlkZXM6ICBidW5kbGVk KGNyYXRlKHdpbmFwaS14ODZfNjQtcGMtd2luZG93cy1nbnUpKSA9IDAuNC4wCiBQcm92aWRlczog IGJ1bmRsZWQoY3JhdGUod2luZG93cy1saW5rKSkgPSAwLjIuMQogUHJvdmlkZXM6ICBidW5kbGVk KGNyYXRlKHdpbmRvd3Mtc3lzKSkgPSAwLjYxLjIKLVByb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZSh3 aXQtYmluZGdlbikpID0gMC41Ny4xCitQcm92aWRlczogIGJ1bmRsZWQoY3JhdGUod2l0LWJpbmRn ZW4pKSA9IDAuNTEuMAogUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKHdpdC1iaW5kZ2VuLWNvcmUp KSA9IDAuNTEuMAogUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKHdpdC1iaW5kZ2VuLXJ1c3QpKSA9 IDAuNTEuMAogUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKHdpdC1iaW5kZ2VuLXJ1c3QtbWFjcm8p KSA9IDAuNTEuMApAQCAtMTgwLDIwICsxODcsMTAgQEAgUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRl KHdpdC1wYXJzZXIpKSA9IDAuMjQ0LjAKIFByb3ZpZGVzOiAgYnVuZGxlZChjcmF0ZSh6ZXJvaXpl KSkgPSAxLjguMgogUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKHplcm9pemVfZGVyaXZlKSkgPSAx LjQuMwogUHJvdmlkZXM6ICBidW5kbGVkKGNyYXRlKHptaWopKSA9IDEuMC4yMQotUHJvdmlkZXM6 ICBidW5kbGVkKG5wbShAZXNsaW50LWNvbW11bml0eS9lc2xpbnQtdXRpbHMpKSA9IDQuNC4xCi1Q cm92aWRlczogIGJ1bmRsZWQobnBtKEBlc2xpbnQtY29tbXVuaXR5L3JlZ2V4cHApKSA9IDQuMTIu MQotUHJvdmlkZXM6ICBidW5kbGVkKG5wbShAZXNsaW50L2VzbGludHJjKSkgPSAyLjEuNAotUHJv dmlkZXM6ICBidW5kbGVkKG5wbShAZXNsaW50L2pzKSkgPSA4LjU3LjEKIFByb3ZpZGVzOiAgYnVu ZGxlZChucG0oQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLWNvbW1vbi10eXBlcykpID0gMC4yLjM2 CiBQcm92aWRlczogIGJ1bmRsZWQobnBtKEBmb3J0YXdlc29tZS9mb250YXdlc29tZS1zdmctY29y ZSkpID0gMS4yLjM2CiBQcm92aWRlczogIGJ1bmRsZWQobnBtKEBmb3J0YXdlc29tZS9mcmVlLXNv bGlkLXN2Zy1pY29ucykpID0gNS4xNS40CiBQcm92aWRlczogIGJ1bmRsZWQobnBtKEBmb3J0YXdl c29tZS9yZWFjdC1mb250YXdlc29tZSkpID0gMC4xLjE5Ci1Qcm92aWRlczogIGJ1bmRsZWQobnBt KEBodW1hbndob2NvZGVzL2NvbmZpZy1hcnJheSkpID0gMC4xMy4wCi1Qcm92aWRlczogIGJ1bmRs ZWQobnBtKEBodW1hbndob2NvZGVzL21vZHVsZS1pbXBvcnRlcikpID0gMS4wLjEKLVByb3ZpZGVz OiAgYnVuZGxlZChucG0oQGh1bWFud2hvY29kZXMvb2JqZWN0LXNjaGVtYSkpID0gMi4wLjMKLVBy b3ZpZGVzOiAgYnVuZGxlZChucG0oQG5vZGVsaWIvZnMuc2NhbmRpcikpID0gMi4xLjUKLVByb3Zp ZGVzOiAgYnVuZGxlZChucG0oQG5vZGVsaWIvZnMuc3RhdCkpID0gMi4wLjUKLVByb3ZpZGVzOiAg YnVuZGxlZChucG0oQG5vZGVsaWIvZnMud2FsaykpID0gMS4yLjgKIFByb3ZpZGVzOiAgYnVuZGxl ZChucG0oQHBhdHRlcm5mbHkvcGF0dGVybmZseSkpID0gNS40LjEKIFByb3ZpZGVzOiAgYnVuZGxl ZChucG0oQHBhdHRlcm5mbHkvcmVhY3QtY2hhcnRzKSkgPSA3LjQuMwogUHJvdmlkZXM6ICBidW5k bGVkKG5wbShAcGF0dGVybmZseS9yZWFjdC1jb3JlKSkgPSA1LjQuMQpAQCAtMjAyLDM5ICsxOTks MjUgQEAgUHJvdmlkZXM6ICBidW5kbGVkKG5wbShAcGF0dGVybmZseS9yZWFjdC1sb2ctdmlld2Vy KSkgPSA1LjMuMAogUHJvdmlkZXM6ICBidW5kbGVkKG5wbShAcGF0dGVybmZseS9yZWFjdC1zdHls ZXMpKSA9IDUuNC4wCiBQcm92aWRlczogIGJ1bmRsZWQobnBtKEBwYXR0ZXJuZmx5L3JlYWN0LXRh YmxlKSkgPSA1LjQuMQogUHJvdmlkZXM6ICBidW5kbGVkKG5wbShAcGF0dGVybmZseS9yZWFjdC10 b2tlbnMpKSA9IDUuNC4wCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKEB0eXBlcy9kMy1hcnJheSkp ID0gMy4yLjEKK1Byb3ZpZGVzOiAgYnVuZGxlZChucG0oQHR5cGVzL2QzLWFycmF5KSkgPSAzLjIu MgogUHJvdmlkZXM6ICBidW5kbGVkKG5wbShAdHlwZXMvZDMtY29sb3IpKSA9IDMuMS4zCiBQcm92 aWRlczogIGJ1bmRsZWQobnBtKEB0eXBlcy9kMy1lYXNlKSkgPSAzLjAuMgogUHJvdmlkZXM6ICBi dW5kbGVkKG5wbShAdHlwZXMvZDMtaW50ZXJwb2xhdGUpKSA9IDMuMC40Ci1Qcm92aWRlczogIGJ1 bmRsZWQobnBtKEB0eXBlcy9kMy1wYXRoKSkgPSAzLjEuMAotUHJvdmlkZXM6ICBidW5kbGVkKG5w bShAdHlwZXMvZDMtc2NhbGUpKSA9IDQuMC44Ci1Qcm92aWRlczogIGJ1bmRsZWQobnBtKEB0eXBl cy9kMy1zaGFwZSkpID0gMy4xLjYKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0oQHR5cGVzL2QzLXRp bWUpKSA9IDMuMC4zCitQcm92aWRlczogIGJ1bmRsZWQobnBtKEB0eXBlcy9kMy1wYXRoKSkgPSAz LjEuMQorUHJvdmlkZXM6ICBidW5kbGVkKG5wbShAdHlwZXMvZDMtc2NhbGUpKSA9IDQuMC45CitQ cm92aWRlczogIGJ1bmRsZWQobnBtKEB0eXBlcy9kMy1zaGFwZSkpID0gMy4xLjgKK1Byb3ZpZGVz OiAgYnVuZGxlZChucG0oQHR5cGVzL2QzLXRpbWUpKSA9IDMuMC40CiBQcm92aWRlczogIGJ1bmRs ZWQobnBtKEB0eXBlcy9kMy10aW1lcikpID0gMy4wLjIKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0o QHVuZ2FwL3N0cnVjdHVyZWQtY2xvbmUpKSA9IDEuMi4wCiBQcm92aWRlczogIGJ1bmRsZWQobnBt KEB4dGVybS9hZGRvbi1jYW52YXMpKSA9IDAuNy4wCiBQcm92aWRlczogIGJ1bmRsZWQobnBtKEB4 dGVybS94dGVybSkpID0gNS41LjAKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0oYWNvcm4pKSA9IDgu MTQuMAotUHJvdmlkZXM6ICBidW5kbGVkKG5wbShhY29ybi1qc3gpKSA9IDUuMy4yCi1Qcm92aWRl czogIGJ1bmRsZWQobnBtKGFqdikpID0gNi4xNS4wCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKGFu c2ktcmVnZXgpKSA9IDUuMC4xCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKGFuc2ktc3R5bGVzKSkg PSA0LjMuMAotUHJvdmlkZXM6ICBidW5kbGVkKG5wbShhcmdwYXJzZSkpID0gMi4wLjEKLVByb3Zp ZGVzOiAgYnVuZGxlZChucG0oYXR0ci1hY2NlcHQpKSA9IDIuMi40CitQcm92aWRlczogIGJ1bmRs ZWQobnBtKGFyZ3BhcnNlKSkgPSAxLjAuMTAKK1Byb3ZpZGVzOiAgYnVuZGxlZChucG0oYXR0ci1h Y2NlcHQpKSA9IDIuMi41CiBQcm92aWRlczogIGJ1bmRsZWQobnBtKGF1dG9saW5rZXIpKSA9IDMu MTYuMgotUHJvdmlkZXM6ICBidW5kbGVkKG5wbShiYWxhbmNlZC1tYXRjaCkpID0gMS4wLjIKLVBy b3ZpZGVzOiAgYnVuZGxlZChucG0oYnJhY2UtZXhwYW5zaW9uKSkgPSAxLjEuMTUKLVByb3ZpZGVz OiAgYnVuZGxlZChucG0oY2FsbHNpdGVzKSkgPSAzLjEuMAotUHJvdmlkZXM6ICBidW5kbGVkKG5w bShjaGFsaykpID0gNC4xLjIKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0oY29sb3ItY29udmVydCkp ID0gMi4wLjEKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0oY29sb3ItbmFtZSkpID0gMS4xLjQKLVBy b3ZpZGVzOiAgYnVuZGxlZChucG0oY29uY2F0LW1hcCkpID0gMC4wLjEKIFByb3ZpZGVzOiAgYnVu ZGxlZChucG0oY29yZS11dGlsLWlzKSkgPSAxLjAuMwotUHJvdmlkZXM6ICBidW5kbGVkKG5wbShj cm9zcy1zcGF3bikpID0gNy4wLjYKIFByb3ZpZGVzOiAgYnVuZGxlZChucG0oZDMtYXJyYXkpKSA9 IDMuMi40CiBQcm92aWRlczogIGJ1bmRsZWQobnBtKGQzLWNvbG9yKSkgPSAzLjEuMAogUHJvdmlk ZXM6ICBidW5kbGVkKG5wbShkMy1lYXNlKSkgPSAzLjAuMQotUHJvdmlkZXM6ICBidW5kbGVkKG5w bShkMy1mb3JtYXQpKSA9IDMuMS4wCitQcm92aWRlczogIGJ1bmRsZWQobnBtKGQzLWZvcm1hdCkp ID0gMy4xLjIKIFByb3ZpZGVzOiAgYnVuZGxlZChucG0oZDMtaW50ZXJwb2xhdGUpKSA9IDMuMC4x CiBQcm92aWRlczogIGJ1bmRsZWQobnBtKGQzLXBhdGgpKSA9IDMuMS4wCiBQcm92aWRlczogIGJ1 bmRsZWQobnBtKGQzLXNjYWxlKSkgPSA0LjAuMgpAQCAtMjQyLDE0NSArMjI1LDcyIEBAIFByb3Zp ZGVzOiAgYnVuZGxlZChucG0oZDMtc2hhcGUpKSA9IDMuMi4wCiBQcm92aWRlczogIGJ1bmRsZWQo bnBtKGQzLXRpbWUpKSA9IDMuMS4wCiBQcm92aWRlczogIGJ1bmRsZWQobnBtKGQzLXRpbWUtZm9y bWF0KSkgPSA0LjEuMAogUHJvdmlkZXM6ICBidW5kbGVkKG5wbShkMy10aW1lcikpID0gMy4wLjEK LVByb3ZpZGVzOiAgYnVuZGxlZChucG0oZGVidWcpKSA9IDQuMy43Ci1Qcm92aWRlczogIGJ1bmRs ZWQobnBtKGRlZXAtaXMpKSA9IDAuMS40CiBQcm92aWRlczogIGJ1bmRsZWQobnBtKGRlbGF1bmF0 b3IpKSA9IDQuMC4xCiBQcm92aWRlczogIGJ1bmRsZWQobnBtKGRlbGF1bmF5LWZpbmQpKSA9IDAu MC42CiBQcm92aWRlczogIGJ1bmRsZWQobnBtKGRlcXVhbCkpID0gMi4wLjMKLVByb3ZpZGVzOiAg YnVuZGxlZChucG0oZG9jdHJpbmUpKSA9IDMuMC4wCiBQcm92aWRlczogIGJ1bmRsZWQobnBtKGVu Y29kaW5nKSkgPSAwLjEuMTMKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0oZXNjYXBlLXN0cmluZy1y ZWdleHApKSA9IDQuMC4wCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKGVzbGludCkpID0gOC41Ny4x Ci1Qcm92aWRlczogIGJ1bmRsZWQobnBtKGVzbGludC1wbHVnaW4tcmVhY3QtaG9va3MpKSA9IDQu Ni4yCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKGVzbGludC1zY29wZSkpID0gNy4yLjIKLVByb3Zp ZGVzOiAgYnVuZGxlZChucG0oZXNsaW50LXZpc2l0b3Ita2V5cykpID0gMy40LjMKLVByb3ZpZGVz OiAgYnVuZGxlZChucG0oZXNwcmVlKSkgPSA5LjYuMQotUHJvdmlkZXM6ICBidW5kbGVkKG5wbShl c3F1ZXJ5KSkgPSAxLjYuMAotUHJvdmlkZXM6ICBidW5kbGVkKG5wbShlc3JlY3Vyc2UpKSA9IDQu My4wCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKGVzdHJhdmVyc2UpKSA9IDUuMy4wCi1Qcm92aWRl czogIGJ1bmRsZWQobnBtKGVzdXRpbHMpKSA9IDIuMC4zCi1Qcm92aWRlczogIGJ1bmRsZWQobnBt KGZhc3QtZGVlcC1lcXVhbCkpID0gMy4xLjMKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0oZmFzdC1q c29uLXN0YWJsZS1zdHJpbmdpZnkpKSA9IDIuMS4wCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKGZh c3QtbGV2ZW5zaHRlaW4pKSA9IDIuMC42Ci1Qcm92aWRlczogIGJ1bmRsZWQobnBtKGZhc3RxKSkg PSAxLjE3LjEKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0oZmlsZS1lbnRyeS1jYWNoZSkpID0gNi4w LjEKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0oZmlsZS1zZWxlY3RvcikpID0gMi4xLjAKLVByb3Zp ZGVzOiAgYnVuZGxlZChucG0oZmluZC11cCkpID0gNS4wLjAKLVByb3ZpZGVzOiAgYnVuZGxlZChu cG0oZmxhdC1jYWNoZSkpID0gMy4yLjAKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0oZmxhdHRlZCkp ID0gMy40LjIKK1Byb3ZpZGVzOiAgYnVuZGxlZChucG0oZmlsZS1zZWxlY3RvcikpID0gMi4xLjIK IFByb3ZpZGVzOiAgYnVuZGxlZChucG0oZm9jdXMtdHJhcCkpID0gNy41LjQKLVByb3ZpZGVzOiAg YnVuZGxlZChucG0oZnMucmVhbHBhdGgpKSA9IDEuMC4wCiBQcm92aWRlczogIGJ1bmRsZWQobnBt KGdldHRleHQtcGFyc2VyKSkgPSAyLjEuMAotUHJvdmlkZXM6ICBidW5kbGVkKG5wbShnbG9iKSkg PSA3LjIuMwotUHJvdmlkZXM6ICBidW5kbGVkKG5wbShnbG9iLXBhcmVudCkpID0gNi4wLjIKLVBy b3ZpZGVzOiAgYnVuZGxlZChucG0oZ2xvYmFscykpID0gMTMuMjQuMAotUHJvdmlkZXM6ICBidW5k bGVkKG5wbShncmFwaGVtZXIpKSA9IDEuNC4wCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKGhhcy1m bGFnKSkgPSA0LjAuMAogUHJvdmlkZXM6ICBidW5kbGVkKG5wbShob2lzdC1ub24tcmVhY3Qtc3Rh dGljcykpID0gMy4zLjIKIFByb3ZpZGVzOiAgYnVuZGxlZChucG0oaWNvbnYtbGl0ZSkpID0gMC42 LjMKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0oaWdub3JlKSkgPSA1LjMuMgotUHJvdmlkZXM6ICBi dW5kbGVkKG5wbShpbXBvcnQtZnJlc2gpKSA9IDMuMy4wCi1Qcm92aWRlczogIGJ1bmRsZWQobnBt KGltdXJtdXJoYXNoKSkgPSAwLjEuNAotUHJvdmlkZXM6ICBidW5kbGVkKG5wbShpbmZsaWdodCkp ID0gMS4wLjYKIFByb3ZpZGVzOiAgYnVuZGxlZChucG0oaW5oZXJpdHMpKSA9IDIuMC40CiBQcm92 aWRlczogIGJ1bmRsZWQobnBtKGludGVybm1hcCkpID0gMi4wLjMKLVByb3ZpZGVzOiAgYnVuZGxl ZChucG0oaXMtZXh0Z2xvYikpID0gMi4xLjEKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0oaXMtZ2xv YikpID0gNC4wLjMKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0oaXMtcGF0aC1pbnNpZGUpKSA9IDMu MC4zCiBQcm92aWRlczogIGJ1bmRsZWQobnBtKGlzYXJyYXkpKSA9IDEuMC4wCi1Qcm92aWRlczog IGJ1bmRsZWQobnBtKGlzZXhlKSkgPSAyLjAuMAogUHJvdmlkZXM6ICBidW5kbGVkKG5wbShqcy1z aGExKSkgPSAwLjcuMAogUHJvdmlkZXM6ICBidW5kbGVkKG5wbShqcy1zaGEyNTYpKSA9IDAuMTEu MAogUHJvdmlkZXM6ICBidW5kbGVkKG5wbShqcy10b2tlbnMpKSA9IDQuMC4wCi1Qcm92aWRlczog IGJ1bmRsZWQobnBtKGpzLXlhbWwpKSA9IDQuMS4xCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKGpz b24tYnVmZmVyKSkgPSAzLjAuMQotUHJvdmlkZXM6ICBidW5kbGVkKG5wbShqc29uLXNjaGVtYS10 cmF2ZXJzZSkpID0gMC40LjEKIFByb3ZpZGVzOiAgYnVuZGxlZChucG0oanNvbi1zdGFibGUtc3Ry aW5naWZ5LXdpdGhvdXQtanNvbmlmeSkpID0gMS4wLjEKIFByb3ZpZGVzOiAgYnVuZGxlZChucG0o anNvbi1zdHJpbmdpZnktc2FmZSkpID0gNS4wLjEKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0oa2V5 dikpID0gNC41LjQKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0obGV2bikpID0gMC40LjEKLVByb3Zp ZGVzOiAgYnVuZGxlZChucG0obG9jYXRlLXBhdGgpKSA9IDYuMC4wCiBQcm92aWRlczogIGJ1bmRs ZWQobnBtKGxvZGFzaCkpID0gNC4xOC4xCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKGxvZGFzaC5t ZXJnZSkpID0gNC42LjIKIFByb3ZpZGVzOiAgYnVuZGxlZChucG0obG9vc2UtZW52aWZ5KSkgPSAx LjQuMAogUHJvdmlkZXM6ICBidW5kbGVkKG5wbShtZW1vaXplLW9uZSkpID0gNS4yLjEKLVByb3Zp ZGVzOiAgYnVuZGxlZChucG0obWluaW1hdGNoKSkgPSAzLjEuNQotUHJvdmlkZXM6ICBidW5kbGVk KG5wbShtcykpID0gMi4xLjMKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0obmF0dXJhbC1jb21wYXJl KSkgPSAxLjQuMAogUHJvdmlkZXM6ICBidW5kbGVkKG5wbShvYmplY3QtYXNzaWduKSkgPSA0LjEu MQotUHJvdmlkZXM6ICBidW5kbGVkKG5wbShvbmNlKSkgPSAxLjQuMAotUHJvdmlkZXM6ICBidW5k bGVkKG5wbShvcHRpb25hdG9yKSkgPSAwLjkuNAotUHJvdmlkZXM6ICBidW5kbGVkKG5wbShwLWxp bWl0KSkgPSAzLjEuMAotUHJvdmlkZXM6ICBidW5kbGVkKG5wbShwLWxvY2F0ZSkpID0gNS4wLjAK LVByb3ZpZGVzOiAgYnVuZGxlZChucG0ocGFyZW50LW1vZHVsZSkpID0gMS4wLjEKLVByb3ZpZGVz OiAgYnVuZGxlZChucG0ocGF0aC1leGlzdHMpKSA9IDQuMC4wCi1Qcm92aWRlczogIGJ1bmRsZWQo bnBtKHBhdGgtaXMtYWJzb2x1dGUpKSA9IDEuMC4xCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKHBh dGgta2V5KSkgPSAzLjEuMQotUHJvdmlkZXM6ICBidW5kbGVkKG5wbShwcmVsdWRlLWxzKSkgPSAx LjIuMQotUHJvdmlkZXM6ICBidW5kbGVkKG5wbShwcmV0dGllcikpID0gMy4zLjMKK1Byb3ZpZGVz OiAgYnVuZGxlZChucG0ocHJldHRpZXIpKSA9IDMuOC4zCiBQcm92aWRlczogIGJ1bmRsZWQobnBt KHByb2Nlc3MtbmV4dGljay1hcmdzKSkgPSAyLjAuMQogUHJvdmlkZXM6ICBidW5kbGVkKG5wbShw cm9wLXR5cGVzKSkgPSAxNS44LjEKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0ocHVueWNvZGUpKSA9 IDIuMy4xCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKHF1ZXVlLW1pY3JvdGFzaykpID0gMS4yLjMK IFByb3ZpZGVzOiAgYnVuZGxlZChucG0ocmVhY3QpKSA9IDE4LjMuMQogUHJvdmlkZXM6ICBidW5k bGVkKG5wbShyZWFjdC1kb20pKSA9IDE4LjMuMQotUHJvdmlkZXM6ICBidW5kbGVkKG5wbShyZWFj dC1kcm9wem9uZSkpID0gMTQuMy41CitQcm92aWRlczogIGJ1bmRsZWQobnBtKHJlYWN0LWRyb3B6 b25lKSkgPSAxNC40LjEKIFByb3ZpZGVzOiAgYnVuZGxlZChucG0ocmVhY3QtZmFzdC1jb21wYXJl KSkgPSAzLjIuMgogUHJvdmlkZXM6ICBidW5kbGVkKG5wbShyZWFjdC1pcykpID0gMTYuMTMuMQog UHJvdmlkZXM6ICBidW5kbGVkKG5wbShyZWFkYWJsZS1zdHJlYW0pKSA9IDIuMy44CiBQcm92aWRl czogIGJ1bmRsZWQobnBtKHJlbWFya2FibGUpKSA9IDIuMC4xCi1Qcm92aWRlczogIGJ1bmRsZWQo bnBtKHJlc29sdmUtZnJvbSkpID0gNC4wLjAKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0ocmV1c2lm eSkpID0gMS4wLjQKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0ocmltcmFmKSkgPSAzLjAuMgotUHJv dmlkZXM6ICBidW5kbGVkKG5wbShydW4tcGFyYWxsZWwpKSA9IDEuMi4wCiBQcm92aWRlczogIGJ1 bmRsZWQobnBtKHNhZmUtYnVmZmVyKSkgPSA1LjIuMQogUHJvdmlkZXM6ICBidW5kbGVkKG5wbShz YWZlci1idWZmZXIpKSA9IDIuMS4yCiBQcm92aWRlczogIGJ1bmRsZWQobnBtKHNjaGVkdWxlcikp ID0gMC4yMy4yCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKHNoZWJhbmctY29tbWFuZCkpID0gMi4w LjAKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0oc2hlYmFuZy1yZWdleCkpID0gMy4wLjAKIFByb3Zp ZGVzOiAgYnVuZGxlZChucG0oc3ByaW50Zi1qcykpID0gMS4wLjMKIFByb3ZpZGVzOiAgYnVuZGxl ZChucG0oc3RyaW5nX2RlY29kZXIpKSA9IDEuMS4xCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKHN0 cmlwLWFuc2kpKSA9IDYuMC4xCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKHN0cmlwLWpzb24tY29t bWVudHMpKSA9IDMuMS4xCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKHN1cHBvcnRzLWNvbG9yKSkg PSA3LjIuMAotUHJvdmlkZXM6ICBidW5kbGVkKG5wbSh0YWJiYWJsZSkpID0gNi4yLjAKLVByb3Zp ZGVzOiAgYnVuZGxlZChucG0odGV4dC10YWJsZSkpID0gMC4yLjAKK1Byb3ZpZGVzOiAgYnVuZGxl ZChucG0odGFiYmFibGUpKSA9IDYuNC4wCiBQcm92aWRlczogIGJ1bmRsZWQobnBtKHRocm90dGxl LWRlYm91bmNlKSkgPSA1LjAuMgogUHJvdmlkZXM6ICBidW5kbGVkKG5wbSh0c2xpYikpID0gMi44 LjEKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0odHlwZS1jaGVjaykpID0gMC40LjAKLVByb3ZpZGVz OiAgYnVuZGxlZChucG0odHlwZS1mZXN0KSkgPSAwLjIwLjIKLVByb3ZpZGVzOiAgYnVuZGxlZChu cG0odXJpLWpzKSkgPSA0LjQuMQogUHJvdmlkZXM6ICBidW5kbGVkKG5wbSh1dGlsLWRlcHJlY2F0 ZSkpID0gMS4wLjIKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0odXVpZCkpID0gMTAuMC4wCi1Qcm92 aWRlczogIGJ1bmRsZWQobnBtKHZpY3RvcnktYXJlYSkpID0gMzcuMy4xCi1Qcm92aWRlczogIGJ1 bmRsZWQobnBtKHZpY3RvcnktYXhpcykpID0gMzcuMy4xCi1Qcm92aWRlczogIGJ1bmRsZWQobnBt KHZpY3RvcnktYmFyKSkgPSAzNy4zLjEKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0odmljdG9yeS1i b3gtcGxvdCkpID0gMzcuMy4xCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKHZpY3RvcnktYnJ1c2gt Y29udGFpbmVyKSkgPSAzNy4zLjEKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0odmljdG9yeS1jaGFy dCkpID0gMzcuMy4xCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKHZpY3RvcnktY29yZSkpID0gMzcu My4xCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKHZpY3RvcnktY3JlYXRlLWNvbnRhaW5lcikpID0g MzcuMy4xCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKHZpY3RvcnktY3Vyc29yLWNvbnRhaW5lcikp ID0gMzcuMy4xCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKHZpY3RvcnktZ3JvdXApKSA9IDM3LjMu MQotUHJvdmlkZXM6ICBidW5kbGVkKG5wbSh2aWN0b3J5LWxlZ2VuZCkpID0gMzcuMy4xCi1Qcm92 aWRlczogIGJ1bmRsZWQobnBtKHZpY3RvcnktbGluZSkpID0gMzcuMy4xCi1Qcm92aWRlczogIGJ1 bmRsZWQobnBtKHZpY3RvcnktcGllKSkgPSAzNy4zLjEKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0o dmljdG9yeS1wb2xhci1heGlzKSkgPSAzNy4zLjEKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0odmlj dG9yeS1zY2F0dGVyKSkgPSAzNy4zLjEKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0odmljdG9yeS1z ZWxlY3Rpb24tY29udGFpbmVyKSkgPSAzNy4zLjEKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0odmlj dG9yeS1zaGFyZWQtZXZlbnRzKSkgPSAzNy4zLjEKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0odmlj dG9yeS1zdGFjaykpID0gMzcuMy4xCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKHZpY3RvcnktdG9v bHRpcCkpID0gMzcuMy4xCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKHZpY3RvcnktdmVuZG9yKSkg PSAzNy4zLjEKLVByb3ZpZGVzOiAgYnVuZGxlZChucG0odmljdG9yeS12b3Jvbm9pLWNvbnRhaW5l cikpID0gMzcuMy4xCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKHZpY3Rvcnktem9vbS1jb250YWlu ZXIpKSA9IDM3LjMuMQotUHJvdmlkZXM6ICBidW5kbGVkKG5wbSh3aGljaCkpID0gMi4wLjIKLVBy b3ZpZGVzOiAgYnVuZGxlZChucG0od29yZC13cmFwKSkgPSAxLjIuNQotUHJvdmlkZXM6ICBidW5k bGVkKG5wbSh3cmFwcHkpKSA9IDEuMC4yCi1Qcm92aWRlczogIGJ1bmRsZWQobnBtKHlvY3RvLXF1 ZXVlKSkgPSAwLjEuMAorUHJvdmlkZXM6ICBidW5kbGVkKG5wbSh1dWlkKSkgPSAxNC4wLjAKK1By b3ZpZGVzOiAgYnVuZGxlZChucG0odmljdG9yeS1hcmVhKSkgPSAzNy4zLjYKK1Byb3ZpZGVzOiAg YnVuZGxlZChucG0odmljdG9yeS1heGlzKSkgPSAzNy4zLjYKK1Byb3ZpZGVzOiAgYnVuZGxlZChu cG0odmljdG9yeS1iYXIpKSA9IDM3LjMuNgorUHJvdmlkZXM6ICBidW5kbGVkKG5wbSh2aWN0b3J5 LWJveC1wbG90KSkgPSAzNy4zLjYKK1Byb3ZpZGVzOiAgYnVuZGxlZChucG0odmljdG9yeS1icnVz aC1jb250YWluZXIpKSA9IDM3LjMuNgorUHJvdmlkZXM6ICBidW5kbGVkKG5wbSh2aWN0b3J5LWNo YXJ0KSkgPSAzNy4zLjYKK1Byb3ZpZGVzOiAgYnVuZGxlZChucG0odmljdG9yeS1jb3JlKSkgPSAz Ny4zLjYKK1Byb3ZpZGVzOiAgYnVuZGxlZChucG0odmljdG9yeS1jcmVhdGUtY29udGFpbmVyKSkg PSAzNy4zLjYKK1Byb3ZpZGVzOiAgYnVuZGxlZChucG0odmljdG9yeS1jdXJzb3ItY29udGFpbmVy KSkgPSAzNy4zLjYKK1Byb3ZpZGVzOiAgYnVuZGxlZChucG0odmljdG9yeS1ncm91cCkpID0gMzcu My42CitQcm92aWRlczogIGJ1bmRsZWQobnBtKHZpY3RvcnktbGVnZW5kKSkgPSAzNy4zLjYKK1By b3ZpZGVzOiAgYnVuZGxlZChucG0odmljdG9yeS1saW5lKSkgPSAzNy4zLjYKK1Byb3ZpZGVzOiAg YnVuZGxlZChucG0odmljdG9yeS1waWUpKSA9IDM3LjMuNgorUHJvdmlkZXM6ICBidW5kbGVkKG5w bSh2aWN0b3J5LXBvbGFyLWF4aXMpKSA9IDM3LjMuNgorUHJvdmlkZXM6ICBidW5kbGVkKG5wbSh2 aWN0b3J5LXNjYXR0ZXIpKSA9IDM3LjMuNgorUHJvdmlkZXM6ICBidW5kbGVkKG5wbSh2aWN0b3J5 LXNlbGVjdGlvbi1jb250YWluZXIpKSA9IDM3LjMuNgorUHJvdmlkZXM6ICBidW5kbGVkKG5wbSh2 aWN0b3J5LXNoYXJlZC1ldmVudHMpKSA9IDM3LjMuNgorUHJvdmlkZXM6ICBidW5kbGVkKG5wbSh2 aWN0b3J5LXN0YWNrKSkgPSAzNy4zLjYKK1Byb3ZpZGVzOiAgYnVuZGxlZChucG0odmljdG9yeS10 b29sdGlwKSkgPSAzNy4zLjYKK1Byb3ZpZGVzOiAgYnVuZGxlZChucG0odmljdG9yeS12ZW5kb3Ip KSA9IDM3LjMuNgorUHJvdmlkZXM6ICBidW5kbGVkKG5wbSh2aWN0b3J5LXZvcm9ub2ktY29udGFp bmVyKSkgPSAzNy4zLjYKK1Byb3ZpZGVzOiAgYnVuZGxlZChucG0odmljdG9yeS16b29tLWNvbnRh aW5lcikpID0gMzcuMy42CiAjIyMjIyBCdW5kbGVkIGNhcmdvIGNyYXRlcyBsaXN0IC0gRU5EICMj IyMjCiAKLSMgQXR0YWNoIHRoZSBidWlsZHJlcXVpcmVzIHRvIHRoZSB0b3AgbGV2ZWwgcGFja2Fn ZToKKyMgQnVpbGRSZXF1aXJlcyBmb3IgdGhlIG1haW4gcGFja2FnZToKIEJ1aWxkUmVxdWlyZXM6 ICAgIG5zcHItZGV2ZWwKIEJ1aWxkUmVxdWlyZXM6ICAgIG5zcy1kZXZlbCA+PSAzLjM0CiBCdWls ZFJlcXVpcmVzOiAgICBvcGVubGRhcC1jbGllbnRzCkBAIC0zOTMsNiArMzAzLDcgQEAgQnVpbGRS ZXF1aXJlczogICAgcGNyZTItZGV2ZWwKIEJ1aWxkUmVxdWlyZXM6ICAgIGNyYWNrbGliLWRldmVs CiBCdWlsZFJlcXVpcmVzOiAgICBqc29uLWMtZGV2ZWwKIEJ1aWxkUmVxdWlyZXM6ICAgIGxpYnhj cnlwdC1kZXZlbAorQnVpbGRSZXF1aXJlczogICAgemxpYi1kZXZlbAogJWlmICV7d2l0aCBjbGFu Z30KIEJ1aWxkUmVxdWlyZXM6ICAgIGxpYmF0b21pYwogQnVpbGRSZXF1aXJlczogICAgY2xhbmcK QEAgLTQxNyw2MyArMzI4LDc4IEBAIEJ1aWxkUmVxdWlyZXM6ICAgIGxpYmRiLWRldmVsCiAlZW5k aWYKICVlbmRpZgogCi0jIFRoZSBmb2xsb3dpbmcgYXJlIG5lZWRlZCB0byBidWlsZCB0aGUgc25t cCBsZGFwLWFnZW50CisjIEZvciBTTk1QIGxkYXAtYWdlbnQKIEJ1aWxkUmVxdWlyZXM6ICAgIG5l dC1zbm1wLWRldmVsCiBCdWlsZFJlcXVpcmVzOiAgICBiemlwMi1kZXZlbAogQnVpbGRSZXF1aXJl czogICAgb3BlbnNzbC1kZXZlbAotIyB0aGUgZm9sbG93aW5nIGlzIGZvciB0aGUgcGFtIHBhc3N0 aHJ1IGF1dGggcGx1Zy1pbgorIyBGb3IgSElCUCBwYXNzd29yZCBicmVhY2ggY2hlY2tpbmcKKyVp ZiAle3dpdGggaGlicH0KK0J1aWxkUmVxdWlyZXM6ICAgIGxpYmN1cmwtZGV2ZWwKKyVlbmRpZgor IyBGb3IgUEFNIHBhc3N0aHJ1IGF1dGggcGx1Zy1pbgogQnVpbGRSZXF1aXJlczogICAgcGFtLWRl dmVsCiBCdWlsZFJlcXVpcmVzOiAgICBzeXN0ZW1kLXVuaXRzCiBCdWlsZFJlcXVpcmVzOiAgICBz eXN0ZW1kLWRldmVsCiBCdWlsZFJlcXVpcmVzOiAgICBzeXN0ZW1kLXJwbS1tYWNyb3MKICV7P3N5 c3VzZXJzX3JlcXVpcmVzX2NvbXBhdH0KKyVpZiAle3dpdGggdXNkdH0KK0J1aWxkUmVxdWlyZXM6 ICAgIHN5c3RlbXRhcC1zZHQtZGV2ZWwKKyVlbmRpZgogQnVpbGRSZXF1aXJlczogICAgY2FyZ28K IEJ1aWxkUmVxdWlyZXM6ICAgIHJ1c3QKIEJ1aWxkUmVxdWlyZXM6ICAgIHBrZ2NvbmZpZwogQnVp bGRSZXF1aXJlczogICAgcGtnY29uZmlnKHN5c3RlbWQpCiBCdWlsZFJlcXVpcmVzOiAgICBwa2dj b25maWcoa3JiNSkKIEJ1aWxkUmVxdWlyZXM6ICAgIHBrZ2NvbmZpZyhsaWJwY3JlMi04KQotIyBO ZWVkZWQgdG8gc3VwcG9ydCByZWdlbmVyYXRpb24gb2YgdGhlIGF1dG90b29sIGFydGlmYWN0cy4K KyMgRm9yIGF1dG90b29scyByZWdlbmVyYXRpb24KIEJ1aWxkUmVxdWlyZXM6ICAgIGF1dG9jb25m CiBCdWlsZFJlcXVpcmVzOiAgICBhdXRvbWFrZQogQnVpbGRSZXF1aXJlczogICAgbGlidG9vbAot IyBGb3Igb3VyIGRvY3VtZW50YXRpb24KK0J1aWxkUmVxdWlyZXM6ICAgIG1ha2UKKyMgRm9yIGRv eHlnZW4gZG9jdW1lbnRhdGlvbgogQnVpbGRSZXF1aXJlczogICAgZG94eWdlbgotIyBGb3IgdGVz dHMhCisjIEZvciBjbW9ja2EgdW5pdCB0ZXN0cwogQnVpbGRSZXF1aXJlczogICAgbGliY21vY2th LWRldmVsCi0jIEZvciBsaWIzODkgYW5kIHJlbGF0ZWQgY29tcG9uZW50cy4KKyMgRm9yIGxpYjM4 OQogQnVpbGRSZXF1aXJlczogICAgcHl0aG9uJXtweXRob24zX3BrZ3ZlcnNpb259LWRldmVsCiAK ICMgRm9yIGNvY2twaXQKICVpZiAle3dpdGggY29ja3BpdH0KIEJ1aWxkUmVxdWlyZXM6ICAgIHJz eW5jCi1CdWlsZFJlcXVpcmVzOiAgICBucG0KLUJ1aWxkUmVxdWlyZXM6ICAgIG5vZGVqcworQnVp bGRSZXF1aXJlczogICAgL3Vzci9iaW4vbnBtCitCdWlsZFJlcXVpcmVzOiAgICAvdXNyL2Jpbi9u b2RlCiAlZW5kaWYKIAotIyBGb3IgYXV0b3NldHVwIC1TIGdpdAotQnVpbGRSZXF1aXJlczogICAg Z2l0Ci0KKyMgUnVudGltZSByZXF1aXJlcyBmb3IgdGhlIG1haW4gcGFja2FnZQogUmVxdWlyZXM6 ICAgICAgICAgJXtuYW1lfS1saWJzID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CiBSZXF1aXJlczog ICAgICAgICBweXRob24le3B5dGhvbjNfcGtndmVyc2lvbn0tbGliMzg5ID0gJXt2ZXJzaW9ufS0l e3JlbGVhc2V9CiAKLSMgdGhpcyBpcyBuZWVkZWQgZm9yIHVzaW5nIHNlbWFuYWdlIGZyb20gb3Vy IHNldHVwIHNjcmlwdHMKKyMgRm9yIHNlbWFuYWdlIGluIHNldHVwIHNjcmlwdHMKIFJlcXVpcmVz OiAgICAgICAgIHBvbGljeWNvcmV1dGlscy1weXRob24tdXRpbHMKIFJlcXVpcmVzOiAgICAgICAg IGxpYnNlbWFuYWdlLXB5dGhvbiV7cHl0aG9uM19wa2d2ZXJzaW9ufQotIyB0aGUgZm9sbG93aW5n IGFyZSBuZWVkZWQgZm9yIHNvbWUgb2Ygb3VyIHNjcmlwdHMKKyMgTm9OZXdQcml2aWxlZ2VzIHN1 cHBvcnQgaW4gZGlyc3J2IHNlcnZpY2UgdW5pdHMgcmVxdWlyZXMKKyMgc2VsaW51eC1wb2xpY3kg d2l0aCBpbml0X25ucF9kYWVtb25fZG9tYWluIGZvciBkaXJzcnZfdC4KKyMgU2VlOiBodHRwczov L2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTI0NTc5NTEKKyVpZiAwJXs/cmhl bH0gPT0gMTAKK1JlcXVpcmVzOiAgICAgICAgIHNlbGludXgtcG9saWN5ID49IDQyLjEuMjItMQor JWVuZGlmCislaWYgMCV7P2ZlZG9yYX0gPT0gNDMKK1JlcXVpcmVzOiAgICAgICAgIHNlbGludXgt cG9saWN5ID49IDQzLjctMQorJWVuZGlmCislaWYgMCV7P2ZlZG9yYX0gPT0gNDQKK1JlcXVpcmVz OiAgICAgICAgIHNlbGludXgtcG9saWN5ID49IDQ0LjEtMQorJWVuZGlmCisjIEZvciBDTEkgc2Ny aXB0cwogUmVxdWlyZXM6ICAgICAgICAgb3BlbmxkYXAtY2xpZW50cwogUmVxdWlyZXM6ICAgICAg ICAgYWNsCi0jIHRoaXMgaXMgbmVlZGVkIHRvIHNldHVwIFNTTCBpZiB5b3UgYXJlIG5vdCB1c2lu ZyB0aGUKLSMgYWRtaW5pc3RyYXRpb24gc2VydmVyIHBhY2thZ2UKKyMgRm9yIFNTTC9UTFMgc2V0 dXAKIFJlcXVpcmVzOiAgICAgICAgIG5zcy10b29scwogJWRpcnNydl9yZXF1aXJlc19nZSBuc3MK LSMgdGhlc2UgYXJlIG5vdCBmb3VuZCBieSB0aGUgYXV0by1kZXBlbmRlbmN5IG1ldGhvZAotIyB0 aGV5IGFyZSByZXF1aXJlZCB0byBzdXBwb3J0IHRoZSBtYW5kYXRvcnkgTERBUCBTQVNMIG1lY2hz CisjIE1hbmRhdG9yeSBMREFQIFNBU0wgbWVjaGFuaXNtcwogUmVxdWlyZXM6ICAgICAgICAgY3ly dXMtc2FzbC1nc3NhcGkKIFJlcXVpcmVzOiAgICAgICAgIGN5cnVzLXNhc2wtbWQ1Ci0jIFRoaXMg aXMgb3B0aW9uYWxseSBzdXBwb3J0ZWQgYnkgdXMsIGFzIHdlIHVzZSBpdCBpbiBvdXIgdGVzdHMK IFJlcXVpcmVzOiAgICAgICAgIGN5cnVzLXNhc2wtcGxhaW4KLSMgdGhpcyBpcyBuZWVkZWQgZm9y IGJhY2tsZGJtCisjIEZvciBiYWNrLWxkYm0KICVpZiAle3dpdGggbGliYmRiX3JvfQogUmVxdWly ZXM6ICAgICAgICAgJXtuYW1lfS1yb2JkYi1saWJzID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CiAl ZWxzZQpAQCAtNDgyLDYgKzQwOCw3IEBAIFJlcXVpcmVzOiAgICAgICAgIGxpYmRiCiAlZW5kaWYK ICVlbmRpZgogUmVxdWlyZXM6ICAgICAgICAgbG1kYi1saWJzCisKICMgTmVlZGVkIGJ5IGxvZ2Nv bnYucGwKICVpZiAle3dpdGhvdXQgbGliYmRiX3JvfQogJWlmICV7d2l0aG91dCBidW5kbGVfbGli ZGJ9CkBAIC00OTMsNjIgKzQyMCw0NCBAQCBSZXF1aXJlczogICAgICAgICBwZXJsLUFyY2hpdmUt VGFyCiBSZXF1aXJlczogICAgICAgICBwZXJsLWRlYnVnZ2VyCiBSZXF1aXJlczogICAgICAgICBw ZXJsLXNpZ3RyYXAKICVlbmRpZgorCiAjIE5lZWRlZCBmb3IgcGFzc3dvcmQgZGljdGlvbmFyeSBj aGVja3MKIFJlcXVpcmVzOiAgICAgICAgIGNyYWNrbGliLWRpY3RzCiBSZXF1aXJlczogICAgICAg ICBqc29uLWMKLSMgTG9nIGNvbXByZXNzaW9uCi1SZXF1aXJlczogICAgICAgICB6bGliLWRldmVs CiAjIGxvZ2NvbnYucHksIE1JTUUgdHlwZQogUmVxdWlyZXM6ICAgICAgICAgcHl0aG9uMy1maWxl LW1hZ2ljCiAjIFBpY2tzIHVwIG91ciBzeXN0ZW1kIGRlcHMuCiAlez9zeXN0ZW1kX3JlcXVpcmVz fQorIyBFbnN1cmUgc3lzdXNlcnMgYXJlIGNyZWF0ZWQKKyV7P3N5c3VzZXJzX3JlcXVpcmVzX2Nv bXBhdH0KKworJWlmICV7d2l0aCB1c2R0fQorIyBPcHRpb25hbCBlQlBGIHRyYWNlciBmb3IgdGhl IHNoaXBwZWQgVVNEVCBicGZ0cmFjZSBzY3JpcHRzLgorIyBVc2UgU3VnZ2VzdHMgc28gaXQgaXMg bm90IGluc3RhbGxlZCBieSBkZWZhdWx0IChkZWJ1Zy1vbmx5LCBwdWxscyBpbiBnY2MpLgorU3Vn Z2VzdHM6ICAgICAgICAgYnBmdHJhY2UKKyVlbmRpZgogCi1Tb3VyY2UwOiAgICAgICAgICBodHRw czovL2dpdGh1Yi5jb20vMzg5ZHMvJXtuYW1lfS9yZWxlYXNlcy9kb3dubG9hZC8le25hbWV9LSV7 dmVyc2lvbn0vJXtuYW1lfS0le3ZlcnNpb259LnRhci5iejIKKworU291cmNlMDogICAgICAgICAg JXtuYW1lfS0le3ZlcnNpb259LnRhci5iejIKIFNvdXJjZTI6ICAgICAgICAgICV7bmFtZX0tZGV2 ZWwuUkVBRE1FCiAlaWYgJXt3aXRoIGJ1bmRsZV9qZW1hbGxvY30KIFNvdXJjZTM6ICAgICAgICAg IGh0dHBzOi8vZ2l0aHViLmNvbS9qZW1hbGxvYy8le2plbWFsbG9jX25hbWV9L3JlbGVhc2VzL2Rv d25sb2FkLyV7amVtYWxsb2NfdmVyfS8le2plbWFsbG9jX25hbWV9LSV7amVtYWxsb2NfdmVyfS50 YXIuYnoyCitTb3VyY2U1OiAgICAgICAgICBqZW1hbGxvYy01LjMuMF90aHJvd19iYWRfYWxsb2Mu cGF0Y2gKICVlbmRpZgogU291cmNlNDogICAgICAgICAgMzg5LWRzLWJhc2Uuc3lzdXNlcnMKICVp ZiAle3dpdGggYnVuZGxlX2xpYmRifQotU291cmNlNTogICAgICAgICAgaHR0cHM6Ly9mZWRvcmFw ZW9wbGUub3JnL2dyb3Vwcy8zODlkcy9saWJkYi01LjMuMjgtNTkudGFyLmJ6MgotJWVuZGlmCi0K LVNvdXJjZTY6ICAgICAgICAgIHZlbmRvci0le3ZlcnNpb259LTEudGFyLmd6Ci1Tb3VyY2U3OiAg ICAgICAgICBDYXJnby0le3ZlcnNpb259LTEubG9jawotU291cmNlODogICAgICAgICAgY29ja3Bp dF9kaXN0LSV7dmVyc2lvbn0tMS50YXIuYnoyCi0KLVBhdGNoOiAgICAgICAgICAgIDAwMDEtSXNz dWUtNzE1MC1Db21wcmVzc2VkLWFjY2Vzcy1sb2ctcm90YXRpb25zLXNraXBwZWQtYS5wYXRjaAot UGF0Y2g6ICAgICAgICAgICAgMDAwMi1TeW5jLWxpYjM4OS12ZXJzaW9uLXRvLTMuMS40LTcxNjEu cGF0Y2gKLVBhdGNoOiAgICAgICAgICAgIDAwMDMtSXNzdWUtNzE2Ni1kYl9jb25maWdfc2V0LWFz c2VydHMtYmVjYXVzZS1vZi1keW5hbWljLS5wYXRjaAotUGF0Y2g6ICAgICAgICAgICAgMDAwNC1J c3N1ZS03MTYwLUFkZC1saWIzODktdmVyc2lvbi1zeW5jLWNoZWNrLXRvLWNvbmZpZ3VyLnBhdGNo Ci1QYXRjaDogICAgICAgICAgICAwMDA1LUlzc3VlLTcwOTYtRHVyaW5nLXJlcGxpY2F0aW9uLW9u bGluZS10b3RhbC1pbml0LXRoZS0ucGF0Y2gKLVBhdGNoOiAgICAgICAgICAgIDAwMDYtSXNzdWUt UmV2aXNlLXBhZ2VkLXJlc3VsdC1zZWFyY2gtbG9ja2luZy5wYXRjaAotUGF0Y2g6ICAgICAgICAg ICAgMDAwNy1Jc3N1ZS03MTA4LUZpeC1zaHV0ZG93bi1jcmFzaC1pbi1lbnRyeS1jYWNoZS1kZXN0 cnVjLnBhdGNoCi1QYXRjaDogICAgICAgICAgICAwMDA4LUlzc3VlLTcxNzItSW5kZXgtb3JkZXJp bmctbWlzbWF0Y2gtYWZ0ZXItdXBncmFkZS03MTcucGF0Y2gKLVBhdGNoOiAgICAgICAgICAgIDAw MDktSXNzdWUtNzE3Mi0ybmQtSW5kZXgtb3JkZXJpbmctbWlzbWF0Y2gtYWZ0ZXItdXBncmFkZS5w YXRjaAotUGF0Y2g6ICAgICAgICAgICAgMDAxMC1CdW1wLWxvZGFzaC1mcm9tLTQuMTcuMjEtdG8t NC4xNy4yMy1pbi1zcmMtY29ja3BpdC0zLnBhdGNoCi1QYXRjaDogICAgICAgICAgICAwMDExLUlz c3VlLTcxODktRFNCTEUwMDA3LWdlbmVyYXRlcy1pbmNvcnJlY3QtcmVtZWRpYXRpb24ucGF0Y2gK LVBhdGNoOiAgICAgICAgICAgIDAwMTItSXNzdWUtNzE5OC1XZWItY29uc29sZS1kb2Vzbi10LXNo b3ctc3ViLXN1ZmZpeC13aGVuLS5wYXRjaAotUGF0Y2g6ICAgICAgICAgICAgMDAxMy1Jc3N1ZS03 MTg0LWFyZ3BhcnNlLkhlbHBGb3JtYXR0ZXItX2Zvcm1hdF9hY3Rpb25zX3VzLnBhdGNoCi1QYXRj aDogICAgICAgICAgICAwMDE0LUlzc3VlLTcwMjctMm5kLTM4OS1kcy1iYXNlLU9wZW5TY2FuSHVi LUxlYWtzLURldGVjdGUucGF0Y2gKLVBhdGNoOiAgICAgICAgICAgIDAwMTUtSXNzdWUtNzIxMy1N REJfQkFEX1ZBTFNJWkUtZXJyb3Itd2hpbGUtaGFuZGxpbmctVkxWLS5wYXRjaAotUGF0Y2g6ICAg ICAgICAgICAgMDAxNi1Jc3N1ZS03MTk0LVJlcGwtTG9nLUFuYWx5c2lzLUFkZC1DU04tcHJvcGFn YXRpb24tZGV0LnBhdGNoCi1QYXRjaDogICAgICAgICAgICAwMDE3LUlzc3VlLTcyMjQtQ0ktVGVz dC1TaW1wbGlmeS10ZXN0X3Jlc2VydmVfZGVzY3JpcHRvcl8ucGF0Y2gKLVBhdGNoOiAgICAgICAg ICAgIDAwMTgtSXNzdWUtNzIyMy1SZXZlcnQtaW5kZXgtc2Nhbi1saW1pdHMtZm9yLXN5c3RlbS1p bmRleC5wYXRjaAotUGF0Y2g6ICAgICAgICAgICAgMDAxOS1Jc3N1ZS03MjIzLUFkZC11cGdyYWRl LWZ1bmN0aW9uLXRvLXJlbW92ZS1uc0luZGV4SURMLnBhdGNoCi1QYXRjaDogICAgICAgICAgICAw MDIwLUlzc3VlLTcyMjMtQWRkLXVwZ3JhZGUtZnVuY3Rpb24tdG8tcmVtb3ZlLWFuY2VzdG9yaWQu cGF0Y2gKLVBhdGNoOiAgICAgICAgICAgIDAwMjEtSXNzdWUtNzIyMy1EZXRlY3QtYW5kLWxvZy1p bmRleC1vcmRlcmluZy1taXNtYXRjaC1kdS5wYXRjaAotUGF0Y2g6ICAgICAgICAgICAgMDAyMi1J c3N1ZS03MjIzLUFkZC1kc2N0bC1pbmRleC1jaGVjay1jb21tYW5kLWZvci1vZmZsaW5lLnBhdGNo Ci1QYXRjaDogICAgICAgICAgICAwMDIzLUlzc3VlLTcxODQtMm5kLWFyZ3BhcnNlLkhlbHBGb3Jt YXR0ZXItX2Zvcm1hdF9hY3Rpb24ucGF0Y2gKLVBhdGNoOiAgICAgICAgICAgIDAwMjQtSXNzdWUt NzIyMy1Vc2UtbGV4aWNvZ3JhcGhpY2FsLW9yZGVyLWZvci1hbmNlc3RvcmlkLS5wYXRjaAotUGF0 Y2g6ICAgICAgICAgICAgMDAyNS1Jc3N1ZS03MjIzLVJlbW92ZS1pbnRlZ2VyT3JkZXJpbmdNYXRj aC1yZXF1aXJlbWVudC1mLnBhdGNoCi1QYXRjaDogICAgICAgICAgICAwMDI2LVNlY3VyaXR5LWZp eC1mb3ItQ1ZFLTIwMjUtMTQ5MDUucGF0Y2gKLVBhdGNoOiAgICAgICAgICAgIDAwMjctSXNzdWUt NzMwMi1kYmxpYi1iZGIybWRiLWZhaWxzLW9uLUY0My1GNDMtdXBncmFkZS03My5wYXRjaAotUGF0 Y2g6ICAgICAgICAgICAgMDAyOC1Jc3N1ZS03MjY3LU1EQl9CQURfVkFMU0laRS1lcnJvci13aGVu LXVwZGF0aW5nLWluZGV4LnBhdGNoCi1QYXRjaDogICAgICAgICAgICAwMDI5LUlzc3VlLTc1MDMt Q1ZFLTIwMjYtOTA2NC1BZGQtYS1saW1pdC10by10aGUtbnVtYmVyLWMucGF0Y2gKK1NvdXJjZTY6 ICAgICAgICAgIGh0dHBzOi8vZmVkb3JhcGVvcGxlLm9yZy9ncm91cHMvMzg5ZHMvbGliZGItNS4z LjI4LTU5LnRhci5iejIKKyVlbmRpZgorCisjIFRvIG92ZXJyaWRlIHZlbmRvci9DYXJnby5sb2Nr L2NvY2twaXRfZGlzdCBmcm9tIHRoZSB1cHN0cmVhbSB0YXJiYWxsCisjIHdpdGggc2VwYXJhdGVs eSB1cGxvYWRlZCBzb3VyY2VzCisjIHVuY29tbWVudCBhbmQgcmVwbGFjZSBkb3VibGUgcGVyY2Vu dCB3aXRoIGEgc2luZ2xlIG9uZQorI1NvdXJjZTY6ICAgICAgICAgIHZlbmRvci0lJXt2ZXJzaW9u fS0xLnRhci5negorI1NvdXJjZTc6ICAgICAgICAgIENhcmdvLSUle3ZlcnNpb259LTEubG9jawor I1NvdXJjZTg6ICAgICAgICAgIGNvY2twaXRfZGlzdC0lJXt2ZXJzaW9ufS0xLnRhci5iejIKIAog JWRlc2NyaXB0aW9uCi0zODkgRGlyZWN0b3J5IFNlcnZlciBpcyBhbiBMREFQdjMgY29tcGxpYW50 IHNlcnZlci4gIFRoZSBiYXNlIHBhY2thZ2UgaW5jbHVkZXMKKzM4OSBEaXJlY3RvcnkgU2VydmVy IGlzIGFuIExEQVB2MyBjb21wbGlhbnQgc2VydmVyLiBUaGUgYmFzZSBwYWNrYWdlIGluY2x1ZGVz CiB0aGUgTERBUCBzZXJ2ZXIgYW5kIGNvbW1hbmQgbGluZSB1dGlsaXRpZXMgZm9yIHNlcnZlciBh ZG1pbmlzdHJhdGlvbi4KICVpZiAle3dpdGggYXNhbn0KIFdBUk5JTkchIFRoaXMgYnVpbGQgaXMg bGlua2VkIHRvIEFkZHJlc3MgU2FuaXRpc2F0aW9uIGxpYnJhcmllcy4gVGhpcyBwcm9iYWJseQpA QCAtNTU5LDcgKzQ2OCw3IEBAIFBsZWFzZSBzZWUgaHR0cDovL3NlY2xpc3RzLm9yZy9vc3Mtc2Vj LzIwMTYvcTEvMzYzIGZvciBtb3JlIGluZm9ybWF0aW9uLgogJWlmICV7d2l0aCBsaWJiZGJfcm99 CiAlcGFja2FnZSAgICAgICAgcm9iZGItbGlicwogU3VtbWFyeTogICAgICAgIFJlYWQtb25seSBC ZXJrZWxleSBEYXRhYmFzZSBMaWJyYXJ5Ci1MaWNlbnNlOiAgICAgICAgR1BMLTMuMC1vci1sYXRl ciBXSVRIIEdQTC0zLjAtMzg5LWRzLWJhc2UtZXhjZXB0aW9uIEFORCAoQXBhY2hlLTIuMCBPUiBB cGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRpb24gT1IgTUlUKSBBTkQgKEFwYWNoZS0yLjAgT1Ig TEdQTC0yLjEtb3ItbGF0ZXIgT1IgTUlUKSBBTkQgKEFwYWNoZS0yLjAgT1IgTUlUKSBBTkQgKEND LUJZLTQuMCBBTkQgTUlUKSBBTkQgKE1JVCBPUiBBcGFjaGUtMi4wKSBBTkQgVW5pY29kZS0zLjAg QU5EIChNSVQgT1IgQ0MwLTEuMCkgQU5EIChNSVQgT1IgVW5saWNlbnNlKSBBTkQgMEJTRCBBTkQg QXBhY2hlLTIuMCBBTkQgQlNELTItQ2xhdXNlIEFORCBCU0QtMy1DbGF1c2UgQU5EIElTQyBBTkQg TUlUIEFORCBNSVQgQU5EIElTQyBBTkQgTVBMLTIuMCBBTkQgUFNGLTIuMCBBTkQgWmxpYgorTGlj ZW5zZTogICAgICAgICAgR1BMLTMuMC1vci1sYXRlciBXSVRIIEdQTC0zLjAtMzg5LWRzLWJhc2Ut ZXhjZXB0aW9uIEFORCAoQXBhY2hlLTIuMCBPUiBBcGFjaGUtMi4wIFdJVEggTExWTS1leGNlcHRp b24gT1IgTUlUKSBBTkQgKEFwYWNoZS0yLjAgT1IgTEdQTC0yLjEtb3ItbGF0ZXIgT1IgTUlUKSBB TkQgKEFwYWNoZS0yLjAgT1IgTUlUKSBBTkQgKEFwYWNoZS0yLjAgT1IgTUlUKSBBTkQgVW5pY29k ZS0zLjAgQU5EIChDQy1CWS00LjAgQU5EIE1JVCkgQU5EIChNSVQgT1IgVW5saWNlbnNlKSBBTkQg MEJTRCBBTkQgQXBhY2hlLTIuMCBBTkQgQlNELTMtQ2xhdXNlIEFORCBJU0MgQU5EIE1JVCBBTkQg TUlUIEFORCBJU0MgQU5EIE1QTC0yLjAgQU5EIFpsaWIKIAogJWRlc2NyaXB0aW9uICAgIHJvYmRi LWxpYnMKIFRoZSAle25hbWV9LXJvYmRiLWxpYiBwYWNrYWdlIGNvbnRhaW5zIGEgbGlicmFyeSBk ZXJpdmVkIGZyb20gcnBtCkBAIC01NzAsMTYgKzQ3OSwxMyBAQCBzb21lIGJhc2ljIGZ1bmN0aW9u cyB0byBzZWFyY2ggYW5kIHJlYWQgQmVya2VsZXkgRGF0YWJhc2UgcmVjb3JkcwogCiAlcGFja2Fn ZSAgICAgICAgICBsaWJzCiBTdW1tYXJ5OiAgICAgICAgICBDb3JlIGxpYnJhcmllcyBmb3IgMzg5 IERpcmVjdG9yeSBTZXJ2ZXIgKCV7dmFyaWFudH0pCi1Qcm92aWRlczogICAgICAgICBzdnJjb3Jl ID0gNC4xLjQKLU9ic29sZXRlczogICAgICAgIHN2cmNvcmUgPD0gNC4xLjMKLUNvbmZsaWN0czog ICAgICAgIHN2cmNvcmUKICVkaXJzcnZfcmVxdWlyZXNfZ2UgbnNzCiBSZXF1aXJlczogICAgICAg ICBuc3ByCiBSZXF1aXJlczogICAgICAgICBvcGVubGRhcAogUmVxdWlyZXM6ICAgICAgICAgc3lz dGVtZC1saWJzCi0jIFB1bGwgaW4gc2FzbAorIyBTQVNMCiBSZXF1aXJlczogICAgICAgICBjeXJ1 cy1zYXNsLWxpYgotIyBLUkIKKyMgS2VyYmVyb3MKIFJlcXVpcmVzOiAgICAgICAgIGtyYjUtbGli cwogJWlmICV7d2l0aCBjbGFuZ30KIFJlcXVpcmVzOiAgICAgICAgIGxsdm0KQEAgLTYwMyw2MCAr NTA5LDcxIEBAIHBhY2thZ2UgdG8gYmUgaW5zdGFsbGVkIHdpdGgganVzdCB0aGUgLWxpYnMgcGFj a2FnZSBhbmQgd2l0aG91dCB0aGUgbWFpbiBwYWNrYWdlCiAKICVwYWNrYWdlICAgICAgICAgIGRl dmVsCiBTdW1tYXJ5OiAgICAgICAgICBEZXZlbG9wbWVudCBsaWJyYXJpZXMgZm9yIDM4OSBEaXJl Y3RvcnkgU2VydmVyICgle3ZhcmlhbnR9KQotUHJvdmlkZXM6ICAgICAgICAgc3ZyY29yZS1kZXZl bCA9IDQuMS40Ci1PYnNvbGV0ZXM6ICAgICAgICBzdnJjb3JlLWRldmVsIDw9IDQuMS4zCi1Db25m bGljdHM6ICAgICAgICBzdnJjb3JlLWRldmVsCiBSZXF1aXJlczogICAgICAgICAle25hbWV9LWxp YnMgPSAle3ZlcnNpb259LSV7cmVsZWFzZX0KIFJlcXVpcmVzOiAgICAgICAgIHBrZ2NvbmZpZwog UmVxdWlyZXM6ICAgICAgICAgbnNwci1kZXZlbAogUmVxdWlyZXM6ICAgICAgICAgbnNzLWRldmVs ID49IDMuMzQKIFJlcXVpcmVzOiAgICAgICAgIG9wZW5sZGFwLWRldmVsCi0jIHN5c3RlbWQtbGli cyBjb250YWlucyB0aGUgaGVhZGVycyBpaXJjLgorIyBGb3Igc3lzdGVtZCBoZWFkZXJzCiBSZXF1 aXJlczogICAgICAgICBzeXN0ZW1kLWxpYnMKIAogJWRlc2NyaXB0aW9uICAgICAgZGV2ZWwKIERl dmVsb3BtZW50IExpYnJhcmllcyBhbmQgaGVhZGVycyBmb3IgdGhlIDM4OSBEaXJlY3RvcnkgU2Vy dmVyIGJhc2UgcGFja2FnZS4KIAorCiAlcGFja2FnZSAgICAgICAgICBzbm1wCiBTdW1tYXJ5OiAg ICAgICAgICBTTk1QIEFnZW50IGZvciAzODkgRGlyZWN0b3J5IFNlcnZlcgogUmVxdWlyZXM6ICAg ICAgICAgJXtuYW1lfSA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQogCi1PYnNvbGV0ZXM6ICAgICAg ICAle25hbWV9IDw9IDEuNC4wLjAKLQogJWRlc2NyaXB0aW9uICAgICAgc25tcAogU05NUCBBZ2Vu dCBmb3IgdGhlIDM4OSBEaXJlY3RvcnkgU2VydmVyIGJhc2UgcGFja2FnZS4KIAogJWlmICV7d2l0 aCBidW5kbGVfbGliZGJ9CiAlcGFja2FnZSAgICAgICAgICBiZGIKIFN1bW1hcnk6ICAgICAgICAg IEJlcmtlbGV5IERhdGFiYXNlIGJhY2tlbmQgZm9yIDM4OSBEaXJlY3RvcnkgU2VydmVyCi0lZGVz Y3JpcHRpb24gICAgICBiZGIKLUJlcmtlbGV5IERhdGFiYXNlIGJhY2tlbmQgZm9yIDM4OSBEaXJl Y3RvcnkgU2VydmVyCi1XYXJuaW5nISBUaGlzIGJhY2tlbmQgaXMgZGVwcmVjYXRlZCBpbiBmYXZv ciBvZiBsbWRiIGFuZCBpdHMgc3VwcG9ydAotbWF5IGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNp b25zLgogCiBSZXF1aXJlczogICAgICAgICAle25hbWV9ID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9 CitSZXF1aXJlczogICAgICAgICAle25hbWV9LWxpYnMgPSAle3ZlcnNpb259LSV7cmVsZWFzZX0K ICMgQmVya2VsZXkgREIgZGF0YWJhc2UgbGliZGIgd2FzIG1hcmtlZCBhcyBkZXByZWNhdGVkIHNp bmNlIEY0MDoKICMgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0NoYW5nZXMvMzg5X0Rp cmVjdG9yeV9TZXJ2ZXJfMy4wLjAKICMgYmVjYXVzZSBsaWJkYiB3YXMgbWFya2VkIGFzIGRlcHJl Y2F0ZWQgc2luY2UgRjMzCiAjIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9DaGFuZ2Vz L0xpYmRiX2RlcHJlY2F0ZWQKIFByb3ZpZGVzOiAgICAgICAgIGRlcHJlY2F0ZWQoKQotJWVuZGlm CiAKKyVkZXNjcmlwdGlvbiAgICAgIGJkYgorQmVya2VsZXkgRGF0YWJhc2UgYmFja2VuZCBmb3Ig Mzg5IERpcmVjdG9yeSBTZXJ2ZXIKK1dhcm5pbmchIFRoaXMgYmFja2VuZCBpcyBkZXByZWNhdGVk IGluIGZhdm9yIG9mIGxtZGIgYW5kIGl0cyBzdXBwb3J0CittYXkgYmUgcmVtb3ZlZCBpbiBmdXR1 cmUgdmVyc2lvbnMuCislZW5kaWYKIAogJXBhY2thZ2UgLW4gcHl0aG9uJXtweXRob24zX3BrZ3Zl cnNpb259LWxpYjM4OQogU3VtbWFyeTogIEEgbGlicmFyeSBmb3IgYWNjZXNzaW5nLCB0ZXN0aW5n LCBhbmQgY29uZmlndXJpbmcgdGhlIDM4OSBEaXJlY3RvcnkgU2VydmVyCiBCdWlsZEFyY2g6ICAg ICAgICBub2FyY2gKIFJlcXVpcmVzOiAle25hbWV9ID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CiBS ZXF1aXJlczogb3BlbnNzbAotIyBUaGlzIGlzIGZvciAvdXNyL2Jpbi9jX3JlaGFzaCB0b29sLCBv bmx5IG5lZWRlZCBmb3Igb3BlbnNzbCA8IDEuMS4wCi1SZXF1aXJlczogb3BlbnNzbC1wZXJsCiBS ZXF1aXJlczogaXByb3V0ZQogUmVxdWlyZXM6IHB5dGhvbiV7cHl0aG9uM19wa2d2ZXJzaW9ufS1s aWJzZWxpbnV4CiBSZWNvbW1lbmRzOiBiYXNoLWNvbXBsZXRpb24KIAogJWRlc2NyaXB0aW9uIC1u IHB5dGhvbiV7cHl0aG9uM19wa2d2ZXJzaW9ufS1saWIzODkKIFRoaXMgbW9kdWxlIGNvbnRhaW5z IHRvb2xzIGFuZCBsaWJyYXJpZXMgZm9yIGFjY2Vzc2luZywgdGVzdGluZywKLSBhbmQgY29uZmln dXJpbmcgdGhlIDM4OSBEaXJlY3RvcnkgU2VydmVyLgorYW5kIGNvbmZpZ3VyaW5nIHRoZSAzODkg RGlyZWN0b3J5IFNlcnZlci4KKworJWlmICV7d2l0aCByZXBsX3JlcG9ydHN9CislcGFja2FnZSAt biBweXRob24le3B5dGhvbjNfcGtndmVyc2lvbn0tbGliMzg5LXJlcGwtcmVwb3J0cworU3VtbWFy eTogSFRNTCBhbmQgUE5HIHJlcG9ydCBnZW5lcmF0aW9uIGZvciAzODkgRGlyZWN0b3J5IFNlcnZl ciByZXBsaWNhdGlvbiBtb25pdG9yaW5nIHRvb2xzCitCdWlsZEFyY2g6IG5vYXJjaAorUmVxdWly ZXM6IHB5dGhvbiV7cHl0aG9uM19wa2d2ZXJzaW9ufS1saWIzODkgPSAle3ZlcnNpb259LSV7cmVs ZWFzZX0KK1JlcXVpcmVzOiBweXRob24le3B5dGhvbjNfcGtndmVyc2lvbn0tcGxvdGx5CitSZXF1 aXJlczogcHl0aG9uJXtweXRob24zX3BrZ3ZlcnNpb259LW1hdHBsb3RsaWIKKworJWRlc2NyaXB0 aW9uIC1uIHB5dGhvbiV7cHl0aG9uM19wa2d2ZXJzaW9ufS1saWIzODktcmVwbC1yZXBvcnRzCitF eHRlbmRlZCByZXBvcnRpbmcgY2FwYWJpbGl0aWVzIGZvciAzODkgRGlyZWN0b3J5IFNlcnZlciBy ZXBsaWNhdGlvbiBhbmFseXNpcy4KK1RoaXMgcGFja2FnZSBwcm92aWRlcyBhZGRpdGlvbmFsIHJl cG9ydCBmb3JtYXRzIChIVE1MIGFuZCBQTkcpIHdpdGggaW50ZXJhY3RpdmUKK3Zpc3VhbGl6YXRp b25zIGFuZCBncmFwaHMgZm9yIHJlcGxpY2F0aW9uIGxhZyBhbmFseXNpcy4gVGhlc2UgZm9ybWF0 cyByZXF1aXJlCithZGRpdGlvbmFsIGRlcGVuZGVuY2llcyBhbmQgYXJlIG9wdGlvbmFsIC0gdGhl IGJhc2UgcGFja2FnZSBzdXBwb3J0cyBDU1YKK3JlcG9ydHMgd2l0aG91dCB0aGlzIGV4dGVuc2lv bi4KKyVlbmRpZgogCiAlaWYgJXt3aXRoIGNvY2twaXR9CiAlcGFja2FnZSAtbiBjb2NrcGl0LTM4 OS1kcwpAQCAtNjc4LDcgKzU5NSw3IEBAIGNkIHNyYy9saWIzODkKICVweXByb2plY3RfYnVpbGRy ZXF1aXJlcyAtZyB0ZXN0CiAKICVwcmVwCi0lYXV0b3NldHVwIC1TIGdpdCAtcDEgLW4gJXtuYW1l fS0le3ZlcnNpb259CislYXV0b3NldHVwIC1wMSAtbiAle25hbWV9LSV7dmVyc2lvbn0KICVpZiAl e2RlZmluZWQgU09VUkNFNn0KIHJtIC1yZiB2ZW5kb3IKIHRhciB4emYgJXtTT1VSQ0U2fQpAQCAt NjkyLDcgKzYwOSw3IEBAIGNwICV7U09VUkNFN30gc3JjL0NhcmdvLmxvY2sKICVlbmRpZgogCiAl aWYgJXt3aXRoIGJ1bmRsZV9saWJkYn0KLSVzZXR1cCAtcSAtbiAle25hbWV9LSV7dmVyc2lvbn0g LVQgLUQgLWIgNQorJXNldHVwIC1xIC1uICV7bmFtZX0tJXt2ZXJzaW9ufSAtVCAtRCAtYiA2CiAl ZW5kaWYKIAogJWlmICV7ZGVmaW5lZCBTT1VSQ0U4fQpAQCAtNzAzLDE1ICs2MjAsMTAgQEAgdGFy IHh2amYgJXtTT1VSQ0U4fSAtQyBzcmMvY29ja3BpdC8zODktY29uc29sZQogY3AgJXtTT1VSQ0Uy fSBSRUFETUUuZGV2ZWwKIAogJWJ1aWxkCi0jIFdvcmthcm91bmQgdW50aWwgaHR0cHM6Ly9naXRo dWIuY29tLzM4OWRzLzM4OS1kcy1iYXNlL2lzc3Vlcy82NDc2IGlzIGZpeGVkCi1leHBvcnQgQ0ZM QUdTPSIle29wdGZsYWdzfSAtc3RkPWdudTE3IgotCiAlaWYgJXt3aXRoIGNsYW5nfQogQ0xBTkdf RkxBR1M9Ii0tZW5hYmxlLWNsYW5nIgogJWVuZGlmCiAKLSV7P3dpdGhfdG1wZmlsZXNfZDogVE1Q RklMRVNfRkxBRz0iLS13aXRoLXRtcGZpbGVzLWQ9JXt3aXRoX3RtcGZpbGVzX2R9In0KLQogJWlm ICV7d2l0aCBhc2FufQogQVNBTl9GTEFHUz0iLS1lbmFibGUtYXNhbiAtLWVuYWJsZS1kZWJ1ZyIK ICVlbmRpZgpAQCAtNzM0LDYgKzY0NiwxMiBAQCBSVVNUX0ZMQUdTPSItLWVuYWJsZS1ydXN0IC0t ZW5hYmxlLXJ1c3Qtb2ZmbGluZSIKIENPQ0tQSVRfRkxBR1M9Ii0tZGlzYWJsZS1jb2NrcGl0Igog JWVuZGlmCiAKKyVpZiAle3dpdGggdXNkdH0KK1VTRFRfRkxBR1M9Ii0tZW5hYmxlLXVzZHQiCisl ZWxzZQorVVNEVF9GTEFHUz0iLS1kaXNhYmxlLXVzZHQiCislZW5kaWYKKwogJWlmICV7d2l0aCBi dW5kbGVfamVtYWxsb2N9CiAjIE92ZXJyaWRlIHBhZ2Ugc2l6ZSwgYnogIzE1NDU1MzkKICMgNEsK QEAgLTc1NCw2ICs2NzIsNyBAQCBDT0NLUElUX0ZMQUdTPSItLWRpc2FibGUtY29ja3BpdCIKIAog IyBCdWlsZCBqZW1hbGxvYwogcHVzaGQgLi4vJXtqZW1hbGxvY19uYW1lfS0le2plbWFsbG9jX3Zl cn0KK3BhdGNoIC1wMSAtRjMgPCAle1NPVVJDRTV9CiAlY29uZmlndXJlIFwKICAgICAgICAgLS1s aWJkaXI9JXtfbGliZGlyfS8le3BrZ25hbWV9L2xpYiBcCiAgICAgICAgIC0tYmluZGlyPSV7X2xp YmRpcn0vJXtwa2duYW1lfS9iaW4gXApAQCAtNzY2LDE0ICs2ODUsMTYgQEAgcG9wZAogJWlmICV7 d2l0aCBidW5kbGVfbGliZGJ9CiBta2RpciAtcCAuLi8le2xpYmRiX2Jhc2VfdmVyc2lvbn0KIHB1 c2hkIC4uLyV7bGliZGJfYmFzZV92ZXJzaW9ufQotdGFyIC14amYgICV7X3RvcGRpcn0vU09VUkNF Uy8le2xpYmRiX2Z1bGxfdmVyc2lvbn0udGFyLmJ6MgordGFyIC14amYgJXtfdG9wZGlyfS9TT1VS Q0VTLyV7bGliZGJfZnVsbF92ZXJzaW9ufS50YXIuYnoyCiBtdiAle2xpYmRiX2Z1bGxfdmVyc2lv bn0gU09VUkNFUwotc2VkIC1pIC1lICcvXkNGTEFHUz0vcy8tZm5vLXN0cmljdC1hbGlhc2luZy8m IC1zdGQ9Z251OTkvJyAle19idWlsZGRpcn0vJXtuYW1lfS0le3ZlcnNpb259L3JwbS9idW5kbGUt bGliZGIuc3BlYwotcnBtYnVpbGQgIC0tZGVmaW5lICJfdG9wZGlyICRQV0QiIC1iYyAle19idWls ZGRpcn0vJXtuYW1lfS0le3ZlcnNpb259L3JwbS9idW5kbGUtbGliZGIuc3BlYworJWlmIDAlez9m ZWRvcmF9CitzZWQgLWkgLWUgJy9eQ0ZMQUdTPS9zLy1mbm8tc3RyaWN0LWFsaWFzaW5nLyYgLXN0 ZD1nbnU5OS8nICV7X2J1aWxkZGlyfS8le25hbWV9LSV7dmVyc2lvbn0vcnBtL2J1bmRsZS1saWJk Yi5zcGVjLmluCislZW5kaWYKK3JwbWJ1aWxkICAtLWRlZmluZSAiX3RvcGRpciAkUFdEIiAtYmMg JXtfYnVpbGRkaXJ9LyV7bmFtZX0tJXt2ZXJzaW9ufS9ycG0vYnVuZGxlLWxpYmRiLnNwZWMuaW4K IHBvcGQKICVlbmRpZgogCi0jIFJlYnVpbGQgdGhlIGF1dG90b29sIGFydGlmYWN0cyBub3cuCisj IFJlYnVpbGQgYXV0b3Rvb2xzIGFydGlmYWN0cwogYXV0b3JlY29uZiAtZml2CiAKICVjb25maWd1 cmUgXApAQCAtNzg1LDIzICs3MDYsMTkgQEAgYXV0b3JlY29uZiAtZml2CiAlaWYgJXt3aXRoIGJ1 bmRsZV9saWJkYn0KICAgICAgICAgICAgLS13aXRoLWJ1bmRsZS1saWJkYj0le19idWlsZGRpcn0v JXtsaWJkYl9iYXNlX3ZlcnNpb259L0JVSUxELyV7bGliZGJfYmFzZV9kaXJ9L2Rpc3QvZGlzdC10 bHMgXAogJWVuZGlmCi0gICAgICAgICAgIC0td2l0aC1zZWxpbnV4ICRUTVBGSUxFU19GTEFHIFwK KyAgICAgICAgICAgLS13aXRoLXNlbGludXggXAogICAgICAgICAgICAtLXdpdGgtc3lzdGVtZCBc CiAgICAgICAgICAgIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0le191bml0ZGlyfSBcCiAg ICAgICAgICAgIC0td2l0aC1zeXN0ZW1kc3lzdGVtY29uZmRpcj0le19zeXNjb25mZGlyfS9zeXN0 ZW1kL3N5c3RlbSBcCiAgICAgICAgICAgIC0td2l0aC1zeXN0ZW1kZ3JvdXBuYW1lPSV7Z3JvdXBu YW1lfSBcCiAgICAgICAgICAgIC0tbGliZXhlY2Rpcj0le19saWJleGVjZGlyfS8le3BrZ25hbWV9 IFwKLSAgICAgICAgICAgJEFTQU5fRkxBR1MgJE1TQU5fRkxBR1MgJFRTQU5fRkxBR1MgJFVCU0FO X0ZMQUdTICRSVVNUX0ZMQUdTICRDTEFOR19GTEFHUyAkQ09DS1BJVF9GTEFHUyBcCi0laWYgMCV7 P2ZlZG9yYX0gPj0gMzQgfHwgMCV7P3JoZWx9ID49IDkKKyAgICAgICAgICAgJEFTQU5fRkxBR1Mg JE1TQU5fRkxBR1MgJFRTQU5fRkxBR1MgJFVCU0FOX0ZMQUdTICRSVVNUX0ZMQUdTICRDTEFOR19G TEFHUyAkQ09DS1BJVF9GTEFHUyAkVVNEVF9GTEFHUyBcCiAgICAgICAgICAgIC0td2l0aC1saWJs ZGFwLXI9bm8gXAorJWlmICV7d2l0aCBoaWJwfQorICAgICAgICAgICAtLWVuYWJsZS1oaWJwIFwK ICVlbmRpZgogICAgICAgICAgICAtLWVuYWJsZS1jbW9ja2EKIAotIyBBdm9pZCAiVW5rbm93biBr ZXkgbmFtZSAnWFhYJyBpbiBzZWN0aW9uICdTZXJ2aWNlJywgaWdub3JpbmcuIiB3YXJuaW5ncyBm cm9tIHN5c3RlbWQgb24gb2xkZXIgcmVsZWFzZXMKLSVpZiAwJXs/cmhlbH0gJiYgMCV7P3JoZWx9 IDwgOQotICBzZWQgLXIgLWkgJy9eKFByb3RlY3QoSG9tZXxIb3N0bmFtZXxLZXJuZWxMb2dzKXxQ cml2YXRlTW91bnRzKT0vZCcgJXtfYnVpbGRkaXJ9LyV7bmFtZX0tJXt2ZXJzaW9ufS93cmFwcGVy cy8qLnNlcnZpY2UuaW4KLSVlbmRpZgotCiAjIGxpYjM4OQogcHVzaGQgLi9zcmMvbGliMzg5CiAl e3B5dGhvbjN9IHZhbGlkYXRlX3ZlcnNpb24ucHkgLS11cGRhdGUKQEAgLTgwOSw3ICs3MjYsNyBA QCBwdXNoZCAuL3NyYy9saWIzODkKIHBvcGQKIAogIyBHZW5lcmF0ZSBzeW1ib2xpYyBpbmZvIGZv ciBkZWJ1Z2dlcnMKLWV4cG9ydCBYQ0ZMQUdTPSRSUE1fT1BUX0ZMQUdTCitleHBvcnQgWENGTEFH Uz0iJXtvcHRmbGFnc30iCiAKICVtYWtlX2J1aWxkCiAKQEAgLTgzMiwxMSArNzQ5LDE2IEBAIHNl ZCAtaSAtZSAiL2xpYmJhY2stYmRiL2QiIHBsdWdpbnMubGlzdAogJWVuZGlmCiAKICMgQ29weSBp biBvdXIgZG9jcyBmcm9tIGRveHlnZW4uCi1jcCAtciAle19idWlsZGRpcn0vJXtuYW1lfS0le3Zl cnNpb259L21hbi9tYW4zICRSUE1fQlVJTERfUk9PVC8le19tYW5kaXJ9L21hbjMKK2NwIC1yICV7 X2J1aWxkZGlyfS8le25hbWV9LSV7dmVyc2lvbn0vbWFuL21hbjMgJXtidWlsZHJvb3R9LyV7X21h bmRpcn0vbWFuMwogCiAjIGxpYjM4OQogcHVzaGQgc3JjL2xpYjM4OQogJXB5cHJvamVjdF9pbnN0 YWxsCislaWYgMCV7P2ZlZG9yYX0gPD0gNDEgfHwgKDAlez9yaGVsfSAmJiAwJXs/cmhlbH0gPD0g MTApCitmb3IgY2xpdG9vbCBpbiBkc2NvbmYgZHNjcmVhdGUgZHNjdGwgZHNpZG0gb3BlbmxkYXBf dG9fZHM7IGRvCisgICAgbXYgJXtidWlsZHJvb3R9JXtfYmluZGlyfS8kY2xpdG9vbCAle2J1aWxk cm9vdH0le19zYmluZGlyfS8KK2RvbmUKKyVlbmRpZgogJXB5cHJvamVjdF9zYXZlX2ZpbGVzIC1s IGxpYjM4OQogcG9wZAogCkBAIC04NDcsMjYgKzc2OSwyNiBAQCBkbwogICAgIGluc3RhbGwgLXAg LW0gMDY0NCAtRCAtdCAnJXtidWlsZHJvb3R9JXtiYXNoX2NvbXBsZXRpb25zX2Rpcn0nICIke2Ns aXRvb2x9IgogZG9uZQogCi1ta2RpciAtcCAkUlBNX0JVSUxEX1JPT1QvdmFyL2xvZy8le3BrZ25h bWV9Ci1ta2RpciAtcCAkUlBNX0JVSUxEX1JPT1QvdmFyL2xpYi8le3BrZ25hbWV9Ci1ta2RpciAt cCAkUlBNX0JVSUxEX1JPT1QvdmFyL2xvY2svJXtwa2duYW1lfSBcCi0gICAgJiYgY2htb2QgNzcw ICRSUE1fQlVJTERfUk9PVC92YXIvbG9jay8le3BrZ25hbWV9Citta2RpciAtcCAle2J1aWxkcm9v dH0vdmFyL2xvZy8le3BrZ25hbWV9Citta2RpciAtcCAle2J1aWxkcm9vdH0vdmFyL2xpYi8le3Br Z25hbWV9Citta2RpciAtcCAle2J1aWxkcm9vdH0vdmFyL2xvY2svJXtwa2duYW1lfSBcCisgICAg JiYgY2htb2QgNzcwICV7YnVpbGRyb290fS92YXIvbG9jay8le3BrZ25hbWV9CiAKLSMgZm9yIHN5 c3RlbWQKLW1rZGlyIC1wICRSUE1fQlVJTERfUk9PVCV7X3N5c2NvbmZkaXJ9L3N5c3RlbWQvc3lz dGVtLyV7Z3JvdXBuYW1lfS53YW50cworIyBGb3Igc3lzdGVtZAorbWtkaXIgLXAgJXtidWlsZHJv b3R9JXtfc3lzY29uZmRpcn0vc3lzdGVtZC9zeXN0ZW0vJXtncm91cG5hbWV9LndhbnRzCiBpbnN0 YWxsIC1wIC1EIC1tIDA2NDQgJXtTT1VSQ0U0fSAle2J1aWxkcm9vdH0le19zeXN1c2Vyc2Rpcn0v Mzg5LWRzLWJhc2UuY29uZgogCi0jcmVtb3ZlIGxpYnRvb2wgYW5kIHN0YXRpYyBsaWJzCi1ybSAt ZiAkUlBNX0JVSUxEX1JPT1Qle19saWJkaXJ9LyV7cGtnbmFtZX0vKi5hCi1ybSAtZiAkUlBNX0JV SUxEX1JPT1Qle19saWJkaXJ9LyV7cGtnbmFtZX0vKi5sYQotcm0gLWYgJFJQTV9CVUlMRF9ST09U JXtfbGliZGlyfS8le3BrZ25hbWV9L3BsdWdpbnMvKi5hCi1ybSAtZiAkUlBNX0JVSUxEX1JPT1Ql e19saWJkaXJ9LyV7cGtnbmFtZX0vcGx1Z2lucy8qLmxhCi1ybSAtZiAkUlBNX0JVSUxEX1JPT1Ql e19saWJkaXJ9L2xpYnN2cmNvcmUuYQotcm0gLWYgJFJQTV9CVUlMRF9ST09UJXtfbGliZGlyfS9s aWJzdnJjb3JlLmxhCisjIFJlbW92ZSBsaWJ0b29sIGFuZCBzdGF0aWMgbGlicworcm0gLWYgJXti dWlsZHJvb3R9JXtfbGliZGlyfS8le3BrZ25hbWV9LyouYQorcm0gLWYgJXtidWlsZHJvb3R9JXtf bGliZGlyfS8le3BrZ25hbWV9LyoubGEKK3JtIC1mICV7YnVpbGRyb290fSV7X2xpYmRpcn0vJXtw a2duYW1lfS9wbHVnaW5zLyouYQorcm0gLWYgJXtidWlsZHJvb3R9JXtfbGliZGlyfS8le3BrZ25h bWV9L3BsdWdpbnMvKi5sYQorcm0gLWYgJXtidWlsZHJvb3R9JXtfbGliZGlyfS9saWJzdnJjb3Jl LmEKK3JtIC1mICV7YnVpbGRyb290fSV7X2xpYmRpcn0vbGlic3ZyY29yZS5sYQogCiAlaWYgJXt3 aXRoIGJ1bmRsZV9qZW1hbGxvY30KIHB1c2hkIC4uLyV7amVtYWxsb2NfbmFtZX0tJXtqZW1hbGxv Y192ZXJ9Ci1tYWtlIERFU1RESVI9IiRSUE1fQlVJTERfUk9PVCIgaW5zdGFsbF9saWIgaW5zdGFs bF9iaW4KK21ha2UgREVTVERJUj0iJXtidWlsZHJvb3R9IiBpbnN0YWxsX2xpYiBpbnN0YWxsX2Jp bgogY3AgLXBhIENPUFlJTkcgLi4vJXtuYW1lfS0le3ZlcnNpb259L0NPUFlJTkcuamVtYWxsb2MK IGNwIC1wYSBSRUFETUUgLi4vJXtuYW1lfS0le3ZlcnNpb259L1JFQURNRS5qZW1hbGxvYwogcG9w ZApAQCAtODc5LDcgKzgwMSw3IEBAIGxpYmRiZGVzdGRpcj0kUFdELy4uLyV7bmFtZX0tJXt2ZXJz aW9ufQogY3AgLXBhICRsaWJkYmJ1aWxkZGlyL0xJQ0VOU0UgJGxpYmRiZGVzdGRpci9MSUNFTlNF LmxpYmRiCiBjcCAtcGEgJGxpYmRiYnVpbGRkaXIvUkVBRE1FICRsaWJkYmRlc3RkaXIvUkVBRE1F LmxpYmRiCiBjcCAtcGEgJGxpYmRiYnVpbGRkaXIvbGdwbC0yLjEudHh0ICRsaWJkYmRlc3RkaXIv bGdwbC0yLjEudHh0LmxpYmRiCi1jcCAtcGEgJGxpYmRiYnVpbGRkaXIvZGlzdC9kaXN0LXRscy8u bGlicy8le2xpYmRiX2J1bmRsZV9uYW1lfSAkUlBNX0JVSUxEX1JPT1Qle19saWJkaXJ9LyV7cGtn bmFtZX0vJXtsaWJkYl9idW5kbGVfbmFtZX0KK2NwIC1wYSAkbGliZGJidWlsZGRpci9kaXN0L2Rp c3QtdGxzLy5saWJzLyV7bGliZGJfYnVuZGxlX25hbWV9ICV7YnVpbGRyb290fSV7X2xpYmRpcn0v JXtwa2duYW1lfS8le2xpYmRiX2J1bmRsZV9uYW1lfQogcG9wZAogJWVuZGlmCiAKQEAgLTkwMCwx MiArODIyLDEyIEBAIHBvcGQKICVlbmRpZgogCiAlY2hlY2sKLSMgVGhpcyBjaGVja3MgdGhlIGNv ZGUsIGlmIGl0IGZhaWxzIGl0IHByaW50cyB3aHksIHRoZW4gcmUtcmFpc2VzIHRoZSBmYWlsIHRv IHNob3J0Y2lyY3VpdCB0aGUgcnBtIGJ1aWxkLgorIyBSdW4gY21vY2thIHVuaXQgdGVzdHMKICVp ZiAle3dpdGggdHNhbn0KIGV4cG9ydCBUU0FOX09QVElPTlM9cHJpbnRfc3RhY2t0cmFjZT0xOnNl Y29uZF9kZWFkbG9ja19zdGFjaz0xOmhpc3Rvcnlfc2l6ZT03CiAlZW5kaWYKICVpZiAle3dpdGhv dXQgYXNhbn0gJiYgJXt3aXRob3V0IG1zYW59Ci1pZiAhIG1ha2UgREVTVERJUj0iJFJQTV9CVUlM RF9ST09UIiBjaGVjazsgdGhlbiBjYXQgLi90ZXN0LXN1aXRlLmxvZyAmJiBmYWxzZTsgZmkKK2lm ICEgbWFrZSBERVNURElSPSIle2J1aWxkcm9vdH0iIGNoZWNrOyB0aGVuIGNhdCAuL3Rlc3Qtc3Vp dGUubG9nICYmIGZhbHNlOyBmaQogJWVuZGlmCiAKICMgQ2hlY2sgaW1wb3J0IGZvciBsaWIzODkg bW9kdWxlcwpAQCAtOTE0LDE5ICs4MzYsMTcgQEAgaWYgISBtYWtlIERFU1RESVI9IiRSUE1fQlVJ TERfUk9PVCIgY2hlY2s7IHRoZW4gY2F0IC4vdGVzdC1zdWl0ZS5sb2cgJiYgZmFsc2U7IGYKICVw b3N0CiBpZiBbIC1uICIkREVCVUdQT1NUVFJBTlMiIF0gOyB0aGVuCiAgICAgb3V0cHV0PSRERUJV R1BPU1RUUkFOUwotICAgIG91dHB1dDI9JHtERUJVR1BPU1RUUkFOU30udXBncmFkZQogZWxzZQog ICAgIG91dHB1dD0vZGV2L251bGwKLSAgICBvdXRwdXQyPS9kZXYvbnVsbAogZmkKIAotIyByZWxv YWQgdG8gcGljayB1cCBhbnkgY2hhbmdlcyB0byBzeXN0ZW1kIGZpbGVzCisjIFJlbG9hZCB0byBw aWNrIHVwIGFueSBjaGFuZ2VzIHRvIHN5c3RlbWQgZmlsZXMKIC9iaW4vc3lzdGVtY3RsIGRhZW1v bi1yZWxvYWQgPiRvdXRwdXQgMj4mMSB8fCA6CiAKLSMgUmVsb2FkIG91ciBzeXNjdGwgYmVmb3Jl IHdlIHJlc3RhcnQgKGlmIHdlIGNhbikKLXN5c2N0bCAtLXN5c3RlbSAmPiAkb3V0cHV0OyB0cnVl CisjIFJlbG9hZCBzeXNjdGwgYmVmb3JlIHJlc3RhcnRpbmcgaW5zdGFuY2VzCitzeXNjdGwgLS1z eXN0ZW0gJj4gIiRvdXRwdXQiOyB0cnVlCiAKLSMgR2F0aGVyIHJ1bm5pbmcgaW5zdGFuY2VzLCBz dG9wIHRoZW0sIHRoZW4gcmVzdGFydAorIyBHYXRoZXIgcnVubmluZyBpbnN0YW5jZXMsIHN0b3Ag YW5kIHJlc3RhcnQgdGhlbQogaW5zdGJhc2U9IiV7X3N5c2NvbmZkaXJ9LyV7cGtnbmFtZX0iCiBp bnN0YW5jZXM9IiIKIG5pbnN0PTAKQEAgLTkzNyw3ICs4NTcsNiBAQCBmb3IgZGlyIGluICIkaW5z dGJhc2UiL3NsYXBkLSogOyBkbwogICAgIGNhc2UgIiRkaXIiIGluICoucmVtb3ZlZCkgY29udGlu dWUgOzsgZXNhYwogICAgIGJhc2VuYW1lPSQoYmFzZW5hbWUgIiRkaXIiKQogICAgIGluc3Q9IiV7 cGtnbmFtZX1AJHtiYXNlbmFtZSNzbGFwZC19IgotICAgIGluc3RfbmFtZT0iJHtiYXNlbmFtZSNz bGFwZC19IgogICAgIGVjaG8gImZvdW5kIGluc3RhbmNlICRpbnN0IC0gZ2V0dGluZyBzdGF0dXMi ID4+ICIkb3V0cHV0IiAyPiYxIHx8IDoKICAgICBpZiAvYmluL3N5c3RlbWN0bCAtcSBpcy1hY3Rp dmUgIiRpbnN0IiA7IHRoZW4KICAgICAgICBlY2hvICJpbnN0YW5jZSAkaW5zdCBpcyBydW5uaW5n IC0gc3RvcHBpbmcgZm9yIHVwZ3JhZGUiID4+ICIkb3V0cHV0IiAyPiYxIHx8IDoKQEAgLTk4MCw3 ICs4OTksNiBAQCBmaQogJXBvc3R1biBzbm1wCiAlc3lzdGVtZF9wb3N0dW5fd2l0aF9yZXN0YXJ0 ICV7cGtnbmFtZX0tc25tcC5zZXJ2aWNlCiAKLWV4aXQgMAogCiAlZmlsZXMgLWYgcGx1Z2lucy5s aXN0CiAlaWYgJXt3aXRoIGJ1bmRsZV9qZW1hbGxvY30KQEAgLTk5NCw3ICs5MTIsNyBAQCBleGl0 IDAKICVjb25maWcobm9yZXBsYWNlKSV7X3N5c2NvbmZkaXJ9LyV7cGtnbmFtZX0vc2NoZW1hLyou bGRpZgogJWRpciAle19zeXNjb25mZGlyfS8le3BrZ25hbWV9L2NvbmZpZwogJWRpciAle19zeXNj b25mZGlyfS9zeXN0ZW1kL3N5c3RlbS8le2dyb3VwbmFtZX0ud2FudHMKLSV7X3N5c3VzZXJzZGly fS8zODktZHMtYmFzZS5jb25mCisle19zeXN1c2Vyc2Rpcn0vJXtuYW1lfS5jb25mCiAlY29uZmln KG5vcmVwbGFjZSkle19zeXNjb25mZGlyfS8le3BrZ25hbWV9L2NvbmZpZy9zbGFwZC1jb2xsYXRp b25zLmNvbmYKICVjb25maWcobm9yZXBsYWNlKSV7X3N5c2NvbmZkaXJ9LyV7cGtnbmFtZX0vY29u ZmlnL2NlcnRtYXAuY29uZgogJXtfZGF0YWRpcn0vJXtwa2duYW1lfQpAQCAtMTAyOCw4ICs5NDYs NiBAQCBleGl0IDAKICV7X21hbmRpcn0vbWFuNS9kaXJzcnYuc3lzdGVtZC41Lmd6CiAle19saWJk aXJ9LyV7cGtnbmFtZX0vcHl0aG9uCiAlZGlyICV7X2xpYmRpcn0vJXtwa2duYW1lfS9wbHVnaW5z Ci0jIFRoaXMgaGFzIHRvIGJlIGhhcmRjb2RlZCB0byAvbGliIC0gJGxpYmRpciBjaGFuZ2VzIGJl dHdlZW4gbGliL2xpYjY0LCBidXQKLSMgc3lzY3RsLmQgaXMgYWx3YXlzIGluIC9saWIuCiAle19w cmVmaXh9L2xpYi9zeXNjdGwuZC8qCiAlZGlyICV7X2xvY2Fsc3RhdGVkaXJ9L2xpYi8le3BrZ25h bWV9CiAlZGlyICV7X2xvY2Fsc3RhdGVkaXJ9L2xvZy8le3BrZ25hbWV9CkBAIC0xMDkzLDExICsx MDA5LDE5IEBAIGV4aXQgMAogJWRvYyBzcmMvbGliMzg5L1JFQURNRS5tZAogJWxpY2Vuc2UgTElD RU5TRSBMSUNFTlNFLkdQTHYzKwogIyBCaW5hcmllcworJWlmIDAlez9mZWRvcmF9ID49IDQyIHx8 IDAlez9yaGVsfSA+PSAxMQogJXtfYmluZGlyfS9kc2NvbmYKICV7X2JpbmRpcn0vZHNjcmVhdGUK ICV7X2JpbmRpcn0vZHNjdGwKICV7X2JpbmRpcn0vZHNpZG0KICV7X2JpbmRpcn0vb3BlbmxkYXBf dG9fZHMKKyVlbHNlCisle19zYmluZGlyfS9kc2NvbmYKKyV7X3NiaW5kaXJ9L2RzY3JlYXRlCisl e19zYmluZGlyfS9kc2N0bAorJXtfc2JpbmRpcn0vZHNpZG0KKyV7X3NiaW5kaXJ9L29wZW5sZGFw X3RvX2RzCislZW5kaWYKICV7X2xpYmV4ZWNkaXJ9LyV7cGtnbmFtZX0vZHNjb250YWluZXIKICMg TWFuIHBhZ2VzCiAle19tYW5kaXJ9L21hbjgvZHNjb25mLjguZ3oKQEAgLTExMTIsNiArMTAzNiwx MSBAQCBleGl0IDAKICV7YmFzaF9jb21wbGV0aW9uc19kaXJ9L2RzY3JlYXRlCiAle2Jhc2hfY29t cGxldGlvbnNfZGlyfS9kc2lkbQogCislaWYgJXt3aXRoIHJlcGxfcmVwb3J0c30KKyVmaWxlcyAt biBweXRob24le3B5dGhvbjNfcGtndmVyc2lvbn0tbGliMzg5LXJlcGwtcmVwb3J0cworIyBObyBm aWxlcyBuZWVkZWQgYXMgdGhpcyBpcyBqdXN0IGEgbWV0YS1wYWNrYWdlIGZvciBkZXBlbmRlbmNp ZXMKKyVlbmRpZgorCiAlaWYgJXt3aXRoIGNvY2twaXR9CiAlZmlsZXMgLW4gY29ja3BpdC0zODkt ZHMgLWYgY29ja3BpdC5saXN0CiAle19kYXRhcm9vdGRpcn0vbWV0YWluZm8vMzg5LWNvbnNvbGUv b3JnLnBvcnQzODkuY29ja3BpdF9jb25zb2xlLm1ldGFpbmZvLnhtbAoKZGlmZiAtLWdpdCBhLzM4 OS1kcy1iYXNlLnN5c3VzZXJzIGIvMzg5LWRzLWJhc2Uuc3lzdXNlcnMKaW5kZXggMzJhMzQ1Mi4u NDQxMTExMyAxMDA2NDQKLS0tIGEvMzg5LWRzLWJhc2Uuc3lzdXNlcnMKKysrIGIvMzg5LWRzLWJh c2Uuc3lzdXNlcnMKQEAgLTEsMyArMSwzIEBACiAjVHlwZSBOYW1lICAgICBJRCAgICAgICAgICAg ICBHRUNPUyAgICAgICAgICAgICAgICAgICBIb21lIGRpcmVjdG9yeSAgICAgICBTaGVsbAogZyAg ICAgZGlyc3J2ICAgMzg5Ci11ICAgICBkaXJzcnYgICAzODk6Mzg5ICAgICAgICAidXNlciBmb3Ig Mzg5LWRzLWJhc2UiICAvdXNyL3NoYXJlL2RpcnNydi8gICAvc2Jpbi9ub2xvZ2luCit1ICAgICBk aXJzcnYgICAzODk6ZGlyc3J2ICAgICAidXNlciBmb3IgMzg5LWRzLWJhc2UiICAvdXNyL3NoYXJl L2RpcnNydi8gICAvc2Jpbi9ub2xvZ2luCgpkaWZmIC0tZ2l0IGEvamVtYWxsb2MtNS4zLjBfdGhy b3dfYmFkX2FsbG9jLnBhdGNoIGIvamVtYWxsb2MtNS4zLjBfdGhyb3dfYmFkX2FsbG9jLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0ZTRkMzYKLS0tIC9kZXYvbnVs bAorKysgYi9qZW1hbGxvYy01LjMuMF90aHJvd19iYWRfYWxsb2MucGF0Y2gKQEAgLTAsMCArMSw0 MSBAQAorI2NvbW1pdCAzZGUwYzI0ODU5ZjQ0MTNiZjAzNDQ4MjQ5MDc4MTY5YmI1MGJkYTBmCisj QXV0aG9yOiBkaXZhbm9yYW1hIDxkaXZhbm9yYW1hQGdtYWlsLmNvbT4KKyNEYXRlOiAgIFRodSBT ZXAgMjkgMjM6MzU6NTkgMjAyMiArMDIwMAorIworIyAgICBEaXNhYmxlIGJ1aWx0aW4gbWFsbG9j IGluIHRlc3RzCisjICAgIAorIyAgICBXaXRoIGAtLXdpdGgtamVtYWxsb2MtcHJlZml4PWAgYW5k IHdpdGhvdXQgYC1mbm8tYnVpbHRpbmAgb3IgYC1PMWAgYm90aCBjbGFuZyBhbmQgZ2NjIG1heSBv cHRpbWl6ZSBvdXQgYG1hbGxvY2AgY2FsbHMKKyMgICAgd2hvc2UgcmVzdWx0IGlzIHVudXNlZC4g Q29tcGFyaW5nIHJlc3VsdCB0byBOVUxMIGFsc28gZG9lc24ndCBuZWNlc3NhcmlseSBjb3VudCBh cyBiZWluZyB1c2VkLgorIyAgICAKKyMgICAgVGhpcyB3b24ndCBiZSBhIHByb2JsZW0gaW4gbW9z dCBjbGllbnQgcHJvZ3JhbXMgYXMgdGhpcyBvbmx5IGNvbmNlcm5zIHJlYWxseSB1bnVzZWQgcG9p bnRlcnMsIGJ1dCBpbgorIyAgICB0ZXN0cyBpdCdzIGltcG9ydGFudCB0byBhY3R1YWxseSBleGVj dXRlIGFsbG9jYXRpb25zLgorIyAgICBgLWZuby1idWlsdGluYCBzaG91bGQgZGlzYWJsZSB0aGlz IG9wdGltaXphdGlvbiBmb3IgYm90aCBnY2MgYW5kIGNsYW5nLCBhbmQgYXBwbHlpbmcgaXQgb25s eSB0byB0ZXN0cyBjb2RlIHNob3VsZG4ndCBob3BlZnVsbHkgYmUgYW4gaXNzdWUuCisjICAgIEFu b3RoZXIgYWx0ZXJuYXRpdmUgaXMgdG8gZm9yY2UgInVzZSIgb2YgcmVzdWx0IGJ1dCB0aGF0J2Qg cmVxdWlyZSBtb3JlIGNoYW5nZXMgYW5kIG1heSBtaXNzIHNvbWUgb3RoZXIgb3B0aW1pemF0aW9u LXJlbGF0ZWQgaXNzdWVzLgorIyAgICAKKyMgICAgVGhpcyBzaG91bGQgcmVzb2x2ZSBodHRwczov L2dpdGh1Yi5jb20vamVtYWxsb2MvamVtYWxsb2MvaXNzdWVzLzIwOTEKKyMKKyNkaWZmIC0tZ2l0 IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgorI2luZGV4IDY4MDlmYjI5Li5hOTY0ZjA3ZSAx MDA2NDQKKyMtLS0gYS9NYWtlZmlsZS5pbgorIysrKyBiL01ha2VmaWxlLmluCisjQEAgLTQ1OCw2 ICs0NTgsOCBAQCAkKFRFU1RTX09CSlMpOiAkKG9ianJvb3QpdGVzdC8lLiQoTyk6ICQoc3Jjcm9v dCl0ZXN0LyUuYworIyAkKFRFU1RTX0NQUF9PQkpTKTogJChvYmpyb290KXRlc3QvJS4kKE8pOiAk KHNyY3Jvb3QpdGVzdC8lLmNwcAorIyAkKFRFU1RTX09CSlMpOiBDUFBGTEFHUyArPSAtSSQoc3Jj cm9vdCl0ZXN0L2luY2x1ZGUgLUkkKG9ianJvb3QpdGVzdC9pbmNsdWRlCisjICQoVEVTVFNfQ1BQ X09CSlMpOiBDUFBGTEFHUyArPSAtSSQoc3Jjcm9vdCl0ZXN0L2luY2x1ZGUgLUkkKG9ianJvb3Qp dGVzdC9pbmNsdWRlCisjKyQoVEVTVFNfT0JKUyk6IENGTEFHUyArPSAtZm5vLWJ1aWx0aW4KKyMr JChURVNUU19DUFBfT0JKUyk6IENQUEZMQUdTICs9IC1mbm8tYnVpbHRpbgorIyBpZm5lcSAoJChJ TVBPUlRMSUIpLCQoU08pKQorIyAkKENQUF9PQkpTKSAkKENfU1lNX09CSlMpICQoQ19PQkpTKSAk KENfSkVUX1NZTV9PQkpTKSAkKENfSkVUX09CSlMpOiBDUFBGTEFHUyArPSAtRERMTEVYUE9SVAor IyBlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy9qZW1hbGxvY19jcHAuY3BwIGIvc3JjL2plbWFsbG9j X2NwcC5jcHAKK2luZGV4IGZmZmQ2YWVlLi41YTY4Mjk5MSAxMDA2NDQKKy0tLSBhL3NyYy9qZW1h bGxvY19jcHAuY3BwCisrKysgYi9zcmMvamVtYWxsb2NfY3BwLmNwcAorQEAgLTkzLDcgKzkzLDcg QEAgaGFuZGxlT09NKHN0ZDo6c2l6ZV90IHNpemUsIGJvb2wgbm90aHJvdykgeworICAgICAgICB9 CisKKyAgICAgICAgaWYgKHB0ciA9PSBudWxscHRyICYmICFub3Rocm93KQorLQkJc3RkOjpfX3Ro cm93X2JhZF9hbGxvYygpOworKwkJdGhyb3cgc3RkOjpiYWRfYWxsb2MoKTsKKyAgICAgICAgcmV0 dXJuIHB0cjsKKyB9CgpkaWZmIC0tZ2l0IGEvbWFpbi5mbWYgYi9tYWluLmZtZgppbmRleCA3NmQx NmJmLi5iZDU4NTE4IDEwMDY0NAotLS0gYS9tYWluLmZtZgorKysgYi9tYWluLmZtZgpAQCAtMTAs NyArMTAsNyBAQAogICAgICAgICBwYWNrYWdlOiBbMzg5LWRzLWJhc2UsIGdpdCwgcHl0ZXN0XQog ICAgICAgLSBuYW1lOiBjbG9uZSByZXBvCiAgICAgICAgIGhvdzogc2hlbGwKLSAgICAgICAgc2Ny aXB0OiBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tLzM4OWRzLzM4OS1kcy1iYXNlIC9yb290 L2RzCisgICAgICAgIHNjcmlwdDogZ2l0IGNsb25lIC1iIDM4OS1kcy1iYXNlLTMuMSBodHRwczov L2dpdGh1Yi5jb20vMzg5ZHMvMzg5LWRzLWJhc2UgL3Jvb3QvZHMKIC90ZXN0OgogICAgIC91cHN0 cmVhbV9iYXNpYzoKICAgICAgICAgdGVzdDogcHl0ZXN0IC12IC9yb290L2RzL2RpcnNydnRlc3Rz L3Rlc3RzL3N1aXRlcy9iYXNpYy9iYXNpY190ZXN0LnB5CgpkaWZmIC0tZ2l0IGEvc291cmNlcyBi L3NvdXJjZXMKaW5kZXggYjZiMmZhZi4uMDA1OGM3NCAxMDA2NDQKLS0tIGEvc291cmNlcworKysg Yi9zb3VyY2VzCkBAIC0xLDYgKzEsMyBAQAogU0hBNTEyIChqZW1hbGxvYy01LjMuMC50YXIuYnoy KSA9IDIyOTA3YmIwNTIwOTZlMmNhZmZiNmU0ZTIzNTQ4YWVjYzVjYzkyODNkY2U0NzY4OTZhMmIx MTI3ZWVlNjQxNzBlMzU2MmZhMmU3ZGI5NTcxMjk4ODE0YTdhMmM3ZGY2ZThkMWZiZTE1MmJkM2Yz YjBjMWFiZWMyMmEyZGUzNGIxCiBTSEE1MTIgKGxpYmRiLTUuMy4yOC01OS50YXIuYnoyKSA9IDcz MWE0MzRmYTJlNjQ4N2ViYjA1YzQ1OGIwNDM3NDU2ZWI5Zjc5OTEyODRiZWIwOGNiM2UyMTkzMWUy M2JkZWRkZGRiYzk1YmZhYmUzYTJmOWYwMjlmZTY5Y2QzM2EyZDRmMGY1Y2U2YTk4MTFlOWMzYjk0 MGNiNmZkZTRiZjc5Ci1TSEE1MTIgKDM4OS1kcy1iYXNlLTMuMS40LnRhci5iejIpID0gMTdkZTc3 YTAyYzg0OGRiYjhkMzY0ZTdiYWI1Mjk3MjZiNGMzMmU0NjZmNDdkNWMyYTViYmE4ZDhiNTVlMmE1 NmUyYjc0M2EyZWZhNGY4MjBjOTM1YjM5Zjc3MGE2MjExNDZhNDI0NDNlNGYxNzFmOGIxNGM2ODk2 ODE1NWVlMmMKLVNIQTUxMiAodmVuZG9yLTMuMS40LTEudGFyLmd6KSA9IDUyZmNiMzI2OGI4NjNh NGI4ZDNmZTYxMTA5YWI4ZWYyMzFkN2ZjNDEyNzY4ZDgwMTkyNDRiYzI0NWNmZmFjZTIwYzQ1MzEx OTVkMDhkMjk1NzdlYWNhMjllODcwNDZlNzQwODNiOGQzM2YyZmI0Y2MwYjE2YTZkNzM0YTg1NGFm Ci1TSEE1MTIgKENhcmdvLTMuMS40LTEubG9jaykgPSA5NDkwMTNmZTRjZmUzMDk2OWI4NDExYjQ2 NTkwMTUxNGMzZWE1MTQ0ZDMyOWE0ZWExZDgwMjQ0ZTRiZDNkMDAwZGI4NTdmOWI3OGQ1N2E0ZjRm M2ZkMjQwZWM1YjdmOTFlZDhjMzlmZjUzYTcxOGM5MTFlZTIwNTQxMGJiN2NjNwotU0hBNTEyIChj b2NrcGl0X2Rpc3QtMy4xLjQtMS50YXIuYnoyKSA9IGZhZWFhNjc4MDFmOWQ2MWY3NGRlY2JjOTg5 ZmMwNWMyZjZmMTI0Mjg3OWQwMjAyNDgyZDEzZDUwNzE1NjJlNTI5ODI3YWVjNzhhNGQ5ZjJlMTk2 ODQwMjZjNWYwYTJkNDdhNGU4MzEyMGIwMzU1OTZkYTI5NTE3OTIwNTliYTE4CitTSEE1MTIgKDM4 OS1kcy1iYXNlLTMuMS41LnRhci5iejIpID0gMDBiM2FiZWFiMDNiMjU2OTA3OTk5MDgyZjYyMjYx ODMxOTA4NzE3ZTM4MDEzMWVjNDc4MmNjOGUzNWY5MzIyYmFhYzcyYTZkNzYwYjk4NzdiODhjNTcw ZjE2YmM2NTg2Y2IzMDJiMzVhYTBjOWMzOGE4YjdiMDc2ZmViY2JhZjUK