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: Jakub Jelinek To: git-commits@fedoraproject.org Subject: [rpms/gcc] rhel-f41-base: 4.4.0-0.23 Date: Mon, 29 Jun 2026 12:24:12 GMT Message-ID: <178273585299.1.9207005990447698780.rpms-gcc-8ac0ea7ebe76@fedoraproject.org> List-ID: X-Git-Repo: rpms/gcc X-Git-Branch: rhel-f41-base X-Git-Rev: 8ac0ea7ebe76968715b52d52ad7faffbca031dfb QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2NjCkJyYW5jaCA6 IHJoZWwtZjQxLWJhc2UKQ29tbWl0IDogOGFjMGVhN2ViZTc2OTY4NzE1YjUyZDUyYWQ3ZmFmZmJj YTAzMWRmYgpBdXRob3IgOiBKYWt1YiBKZWxpbmVrIDxqYWt1YkBmZWRvcmFwcm9qZWN0Lm9yZz4K RGF0ZSAgIDogMjAwOS0wMy0wN1QwOTozNzo1OSswMDowMApTdGF0cyAgOiArOTUwOS8tOTYxOCBp biA2IGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9n Y2MvYy84YWMwZWE3ZWJlNzY5Njg3MTViNTJkNTJhZDdmYWZmYmNhMDMxZGZiP2JyYW5jaD1yaGVs LWY0MS1iYXNlCgpMb2c6CjQuNC4wLTAuMjMKCi0tLQpkaWZmIC0tZ2l0IGEvLmN2c2lnbm9yZSBi Ly5jdnNpZ25vcmUKaW5kZXggNzY1OTE5NS4uZTU0OGJkMSAxMDA2NDQKLS0tIGEvLmN2c2lnbm9y ZQorKysgYi8uY3ZzaWdub3JlCkBAIC0xLDMgKzEsMyBAQAogZmFzdGphci0wLjk3LnRhci5negot Z2NjLTQuNC4wLTIwMDkwMzA0LnRhci5iejIKK2djYy00LjQuMC0yMDA5MDMwNy50YXIuYnoyCiBj bG9vZy1wcGwtMC4xNS50YXIuZ3oKCmRpZmYgLS1naXQgYS9nY2Muc3BlYyBiL2djYy5zcGVjCmlu ZGV4IDU5Yjc1YjguLmZjZDllNWUgMTAwNjQ0Ci0tLSBhL2djYy5zcGVjCisrKyBiL2djYy5zcGVj CkBAIC00MzQsNyArNDM0LDcgQEAgd2hpY2ggYXJlIHJlcXVpcmVkIHRvIGNvbXBpbGUgd2l0aCB0 aGUgR05BVC4KICVwYXRjaDIyIC1wMCAtYiAucmF3LXN0cmluZ34KICVwYXRjaDI0IC1wMCAtYiAu YXRvbX4KICVwYXRjaDI1IC1wMCAtYiAucHIzOTIyNn4KLSVwYXRjaDI2IC1wMCAtYiAucG93ZXI3 fgorIyVwYXRjaDI2IC1wMCAtYiAucG93ZXI3fgogCiAjIFRoaXMgdGVzdGNhc2UgZG9lc24ndCBj b21waWxlLgogcm0gbGliamF2YS90ZXN0c3VpdGUvbGliamF2YS5sYW5nL1BSMzUwMjAqCkBAIC0x Nzc5LDcgKzE3NzksNiBAQCBmaQogICAtIGZpeCBEV19BVF9kZWNsX2xpbmUgb24gRFdfVEFHX2lt cG9ydGVkKiAoIzQ4ODc3MSwgUFIgZGVidWcvMzkzODcpCiAgIC0gZml4IFNDQ1ZOIHdpdGggU1NB IG5hbWVzIG9jY3VycmluZyBpbiBhYm5vcm1hbCBQSElzICgjNDg4MDYxLAogICAgIFBSIHRyZWUt b3B0aW1pemF0aW9uLzM5MzYyKQotLSBwcmVsaW1pbmFyeSBQb3dlcjcgc3VwcG9ydAogCiAqIFdl ZCBNYXIgIDQgMjAwOSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPiA0LjQuMC0wLjIy CiAtIHVwZGF0ZSBmcm9tIHRydW5rCgpkaWZmIC0tZ2l0IGEvZ2NjNDQtcG93ZXI3LnBhdGNoIGIv Z2NjNDQtcG93ZXI3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5 YzE5NDgKLS0tIC9kZXYvbnVsbAorKysgYi9nY2M0NC1wb3dlcjcucGF0Y2gKQEAgLTAsMCArMSw5 NTA2IEBACisyMDA5LTAzLTA2ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAbGludXgudm5l dC5pYm0uY29tPgorCisJKiBkb2MvaW52b2tlLnRleGkgKC1tdnN4LXNjYWxhci1tZW1vcnkpOiBO ZXcgc3dpdGNoLCB0byBzd2l0Y2ggdG8KKwl1c2UgVlNYIHJlZytyZWcgYWRkcmVzc2luZyBmb3Ig YWxsIHNjYWxhciBkb3VibGUgcHJlY2lzaW9uCisJZmxvYXRpbmcgcG9pbnQuCisJKiBjb25maWcv cnM2MDAwL3JzNjAwMC5vcHQgKC12c3gtc2NhbGFyLW1lbW9yeSk6IERpdHRvLgorCQorCSogY29u ZmlndXJlLmFjIChnY2NfY3ZfYXNfcG93ZXJwY19tZnBncHIpOiBTZXQgYmludXRpbHMgdmVyc2lv biB0bworCTIuMTkuMi4KKwkoZ2NjX2N2X2FzX3Bvd2VycGNfY21wYik6IERpdHRvLgorCShnY2Nf Y3ZfYXNfcG93ZXJwY19kZnApOiBEaXR0by4KKwkoZ2NjX2N2X2FzX3Bvd2VycGNfdnN4KTogRGl0 dG8uCisJKGdjY19jdl9hc19wb3dlcnBjX3BvcGNudGQpOiBEaXR0by4KKwkqIGNvbmZpZ3VyZTog UmVnZW5lcmF0ZS4KKworCSogY29uZmlnL3JzNjAwMC92ZWN0b3IubWQgKFZFQ19pbnQpOiBOZXcg bW9kZSBhdHRyaWJ1dGUgZm9yIHZlY3RvcgorCWNvbnZlcnNpb25zLgorCShWRUNfSU5UKTogRGl0 dG8uCisJKGZ0cnVuYzxtb2RlPjIpOiBNYWtlIHRoaXMgYSBkZWZpbmVfZXhwYW5kLgorCShmbG9h dDxWRUNfaW50Pjxtb2RlPjIpOiBOZXcgdmVjdG9yIGNvbnZlcnNpb24gc3VwcG9ydCB0byBhZGQg VlNYCisJMzIgYml0IGludC8zMiBiaXQgZmxvYXRpbmcgcG9pbnQgY29udmVydCBhbmQgNjQgYml0 IGludC82NCBiaXQKKwlmbG9hdGluZyBwb2ludCB2ZWN0b3IgaW5zdHJ1Y3Rpb25zLgorCSh1bnNp Z25lZF9mbG9hdDxWRUNfaW50Pjxtb2RlPjIpOiBEaXR0by4KKwkoZml4X3RydW5jPG1vZGU+PFZF Q19pbnQ+Mik6IERpdHRvLgorCShmaXh1bnNfdHJ1bmM8bW9kZT48VkVDX2ludD4yKTogRGl0dG8u CisKKwkqIGNvbmZpZy9yczYwMDAvcHJlZGljYXRlcy5tZCAoZWFzeV9mcF9jb25zdGFudCk6IDAu MCBpcyBhbiBlYXN5CisJY29uc3RhbnQgdW5kZXIgVlNYLgorCShpbmRleGVkX29yX2luZGlyZWN0 X29wZXJhbmQpOiBBZGQgVlNYIGxvYWQvc3RvcmUgd2l0aCB1cGRhdGUKKwlzdXBwb3J0LgorCisJ KiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfZGVidWdfYWRkcik6IE5ldyBnbG9iYWwg Zm9yCisJLW1kZWJ1Zz1hZGRyLgorCShyczYwMDBfaW5pdF9oYXJkX3JlZ25vX21vZGVfb2spOiBB ZGQgLW12c3gtc2NhbGFyLW1lbW9yeQorCXN1cHBvcnQuCisJKHJzNjAwMF9vdmVycmlkZV9vcHRp b25zKTogQWRkIC1tZGVidWc9YWRkciBzdXBwb3J0LgorCShyczYwMDBfYnVpbHRpbl9jb252ZXJz aW9uKTogQWRkIFZTWCBzYW1lIHNpemUgY29udmVyc2lvbnMuCisJKHJzNjAwMF9sZWdpdGltaXpl X2FkZHJlc3MpOiBBZGQgLW1kZWJ1Zz1hZGRyIHN1cHBvcnQuICBBZGQKKwlzdXBwb3J0IGZvciBW U1ggbG9hZC9zdG9yZSB3aXRoIHVwZGF0ZSBpbnN0cnVjdGlvbnMuCisJKHJzNjAwMF9sZWdpdGlt aXplX3JlbG9hZF9hZGRyZXNzKTogRGl0dG8uCisJKHJzNjAwMF9sZWdpdGltYXRlX2FkZHJlc3Mp OiBEaXR0by4KKwkocnM2MDAwX21vZGVfZGVwZW5kZW50X2FkZHJlc3MpOiBEaXR0by4KKwkocHJp bnRfb3BlcmFuZCk6IERpdHRvLgorCShiZGVzY18xYXJnKTogQWRkIGJ1aWx0aW5zIGZvciBjb252 ZXJzaW9uIHRoYXQgY2FsbHMgZWl0aGVyIHRoZQorCVZTWCBvciBBbHRpdmVjIGluc24gcGF0dGVy bi4KKwkocnM2MDAwX2NvbW1vbl9pbml0X2J1aWx0aW5zKTogRGl0dG8uCisKKwkqIGNvbmZpZy9y czYwMDAvdnN4Lm1kIChWU1hfSSk6IERlbGV0ZSwgbm8gbG9uZ2VyIHVzZWQuCisJKFZTaSk6IE5l dyBtb2RlIGF0dHJpYnV0ZSBmb3IgY29udmVyc2lvbnMuCisJKFZTSSk6IERpdHRvLgorCShWU2Mp OiBEaXR0by4KKwkodnN4X21vdjxtb2RlPik6IEFkZCBsb2FkL3N0b3JlIHdpdGggdXBkYXRlIHN1 cHBvcnQuCisJKHZzeF9sb2FkPG1vZGU+X3VwZGF0ZSopOiBOZXcgaW5zbnMgZm9yIGxvYWQvc3Rv cmUgd2l0aCB1cGRhdGUKKwlzdXBwb3J0LgorCSh2c3hfc3RvcmU8bW9kZT5fdXBkYXRlKik6IERp dHRvLgorCSh2c3hfZm1hZGQ8bW9kZT40KTogR2VuZXJhdGUgY29ycmVjdCBjb2RlIGZvciBWNFNG LgorCSh2c3hfZm1zdWI8bW9kZT40KTogRGl0dG8uCisJKHZzeF9mbm1hZGQ8bW9kZT40XyopOiBE aXR0by4KKwkodnN4X2ZubXN1Yjxtb2RlPjRfKik6IERpdHRvLgorCSh2c3hfZmxvYXQ8VlNpPjxt b2RlPjIpOiBOZXcgaW5zbiBmb3IgdmVjdG9yIGNvbnZlcnNpb24uCisJKHZzeF9mbG9hdHVuczxW U2k+PG1vZGU+Mik6IERpdHRvLgorCSh2c3hfZml4X3RydW5jPG1vZGU+PFZTaT4yKTogRGl0dG8u CisJKHZzeF9maXh1bnNfdHJ1bmM8bW9kZT48VlNpPjIpOiBEaXR0by4KKwkodnN4X3h4bXJnaHcp OiBOZXcgaW5zbiBmb3IgVjRTRiBpbnRlcmxlYXZlLgorCSh2c3hfeHhtcmdsdyk6IERpdHRvLgor CisJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChyczYwMDBfZGVidWdfYWRkcik6IC1tZGVidWc9 YWRkcgorCXN1cHBvcnQuCisJKFRBUkdFVF9ERUJVR19BRERSKTogRGl0dG8uCisJKHJzNjAwMF9i dWlsdGlucyk6IEFkZCBWU1ggaW5zdHJ1Y3Rpb25zIGZvciBldmVudHVhbCBWU1gKKwlidWlsdGlu cy4KKworCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kIChhbHRpdmVjX3Ztcmdoc2YpOiBEb24n dCBkbyB0aGUgYWx0aXZlYworCWluc3RydWN0aW9uIGlmIFZTWC4KKwkoYWx0aXZlY192bXJnbHNm KTogRGl0dG8uCisKKwkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtb3ZkZl9oYXJkZmxvYXQz Mik6IEFkZCBzdXBwb3J0IGZvcgorCXVzaW5nIHh4bHhvciB0byB6ZXJvIGEgZmxvYXRpbmcgcmVn aXN0ZXIgaWYgVlNYLgorCShtb3ZkZl9oYXJkZmxvYXQ2NF9tZnBncHIpOiBEaXR0by4KKwkobW92 ZGZfaGFyZGZsb2F0NjQpOiBEaXR0by4KKworMjAwOS0wMy0wMyAgTWljaGFlbCBNZWlzc25lciAg PG1laXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KKworCSogY29uZmlnL3JzNjAwMC92c3gubWQg KHZzeF94eG1yZ2x3KTogRGVsZXRlIGZvciBub3csIHVzZSBBbHRpdmVjLgorCSh2c3hfeHhtcmdo dyk6IERpdHRvLgorCisJKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKGFsdGl2ZWNfdm1yZ2hz Zik6IFVzZSB0aGlzIGluc24gZXZlbgorCW9uIFZTWCBzeXN0ZW1zLgorCShhbHRpdmVjX3Ztcmds c2YpOiBEaXR0by4KKworCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoQVNNX0NQVV9OQVRJVkVf U1BFQyk6IFVzZSAlKGFzbV9kZWZhdWx0KQorCWlmIHdlIGFyZSBydW5uaW5nIGFzIGEgY3Jvc3Mg Y29tcGlsZXIuCisKKwkqIGNvbmZpZy9yczYwMDAvdmVjdG9yLm1kICh2ZWNfaW50ZXJsZWF2ZV9o aWdodjRzZik6IFVzZSBjb3JyZWN0CisJY29uc3RhbnRzIGZvciB0aGUgZXh0cmFjdGlvbi4KKwko dmVjX2ludGVybGVhdmVfbG93djRzZik6IERpdHRvLgorCisJKiBjb25maWcvcnM2MDAwL3JzNjAw MC5tZCAoZmxvb3JkZjIpOiBGaXggdHlwbywgbWFrZSB0aGlzIGEKKwlkZWZpbmVfZXhwYW5kLCBu b3QgZGVmaW5lX2luc24uCisKKwkqIGNvbmZpZy9yczYwMDAvYWl4NTMuaCAoQVNNX0NQVV9TUEVD KTogSWYgLW1jcHU9bmF0aXZlLCBjYWxsCisJJTpsb2NhbF9jcHVfZGV0ZWN0KGFzbSkgdG8gZ2V0 IHRoZSBhcHByb3ByaWF0ZSBhc3NlbWJsZXIgZmxhZ3MgZm9yCisJdGhlIG1hY2hpbmUuCisJKiBj b25maWcvcnM2MDAwL2FpeDYxLmggKEFTTV9DUFVfU1BFQyk6IERpdHRvLgorCSogY29uZmlnL3Jz NjAwMC9yczYwMDAuaCAoQVNNX0NQVV9TUEVDKTogRGl0dG8uCisJKEFTTV9DUFVfTkFUSVZFX1NQ RUMpOiBOZXcgc3BlYyB0byBnZXQgYXNtIG9wdGlvbnMgaWYKKwktbWNwdT1uYXRpdmUuCisJKEVY VFJBX1NQRUNTKTogQWRkIEFTTV9DUFVfTkFUSVZFX1NQRUMuCisKKwkqIGNvbmZpZy9yczYwMDAv ZHJpdmVyLXJzNjAwMC5jIChhc21fbmFtZXMpOiBOZXcgc3RhdGljIGFycmF5IHRvCisJZ2l2ZSB0 aGUgYXBwcm9wcmlhdGUgYXNtIHN3aXRjaGVzIGlmIC1tY3B1PW5hdGl2ZS4KKwkoaG9zdF9kZXRl Y3RfbG9jYWxfY3B1KTogQWRkIHN1cHBvcnQgZm9yICJhc20iLgorCisJKiBjb25maWcvcnM2MDAw L3JzNjAwMC5jIChwcm9jZXNzb3JfdGFyZ2V0X3RhYmxlKTogRG9uJ3QgdHVybiBvbgorCS1taXNl bCBieSBkZWZhdWx0IGZvciBwb3dlcjcuCisKKzIwMDktMDMtMDIgIE1pY2hhZWwgTWVpc3NuZXIg IDxtZWlzc25lckBsaW51eC52bmV0LmlibS5jb20+CisKKwkqIGNvbmZpZy9yczYwMDAvcnM2MDAw LmMgKHJzNjAwMF9lbWl0X3N3ZGl2ZGYpOiBSZXZlcnQgbGFzdAorCWNoYW5nZSwgc2luY2Ugd2Ug cmV2ZXJ0ZWQgdGhlIGZsb2F0aW5nIG11bHRpcGx5L2FkZCBjaGFuZ2VzLgorCisJKiBkb2MvbWQu dGV4aSAoTWFjaGluZSBDb25zdHJhaW50cyk6IFVwZGF0ZSByczYwMDAgY29uc3RyYWludHMuCisK KwkqIGNvbmZpZy9yczYwMDAvdmVjdG9yLm1kIChuZWc8bW9kZT4yKTogRml4IHR5cG8gdG8gZW5h YmxlCisJdmVjdG9yaXplZCBuZWdhdGlvbi4KKwkoZnRydW5jPG1vZGU+Mik6IE1vdmUgZnRydW5j IGV4cGFuZGVyIGhlcmUgZnJvbSBhbHRpdmVjLm1kLCBhbmQKKwlhZGQgVjJERiBjYXNlLgorCSh2 ZWNfaW50ZXJsZWF2ZV9oaWdodjRzZik6IENvcnJlY3QgdHlwZSB0byBiZSBWNFNGLCBub3QgVjRT SS4KKwkodmVjX2V4dHJhY3RfZXZlbnYyZGYpOiBBZGQgZXhwYW5kZXIuCisJKHZlY19leHRyYWN0 X29kZHYyZGYpOiBEaXR0by4KKworCSogY29uZmlnL3JzNjAwMC92c3gubWQgKHZzeF9mdHJ1bmM8 bW9kZT4yKTogTmV3IFZTWCBwYXR0ZXJuIGZvcgorCXRydW5jYXRlLgorCSh2c3hfZnRydW5jZGYy KTogRGl0dG8uCisJKHZzeF94eHNwbHR3KTogTmV3IGluc3RydWN0aW9uIGZvciB3b3JkIHNwbGF0 LgorCSh2c3hfeHhtcmdsdyk6IFdoaXRlc3BhY2UgY2hhbmdlcy4gIEZpeCB0eXBvIGZyb20gVjRT SSB0byB2NFNGLgorCSh2c3hfeHhtcmdodyk6IERpdHRvLgorCisJKiBjb25maWcvcnM2MDAwL2Fs dGl2ZWMubWQgKGFsdGl2ZWNfdm1yZ2hzZik6IFdoaXRlc3BhY2UgY2hhbmdlcy4KKwkoYWx0aXZl Y192bXJnbHNmKTogRGl0dG8uCisJKGFsdGl2ZWNfdnNwbHRzZik6IERpc2FibGUgaWYgd2UgaGF2 ZSBWU1guCisJKGFsdGl2ZWNfZnRydW5jdjRzZjIpOiBNb3ZlIGV4cGFuZGVyIHRvIHZlY3Rvci5t ZCwgcmVuYW1lIGluc24uCisKKwkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChmdHJ1bmNkZjIp OiBBZGQgZXhwYW5kZXIgZm9yIFZTWC4KKworCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2 MDAwX2luaXRfaGFyZF9yZWdub19tb2RlX29rKToKKwlSZWVuYWJsZSB2ZWN0b3JpemluZyBWNFNG IHVuZGVyIGFsdGl2ZWMuCisJKHJzNjAwMF9oYXJkX3JlZ25vX21vZGVfb2spOiBEb24ndCBhbGxv dyBmbG9hdGluZyB2YWx1ZXMgaW4gTFIsCisJQ1RSLCBNUS4gIEFsc28sIFZSU0FWRS9WU0NSIGFy ZSBib3RoIDMyLWJpdHMuCisJKHJzNjAwMF9pbml0X2hhcmRfcmVnbm9fbW9kZV9vayk6IFByaW50 IHNvbWUgb2YgdGhlIHNwZWNpYWwKKwlyZWdpc3RlcnMgaWYgLW1kZWJ1Zz1yZWcuCisKKwkqIGNv bmZpZy9yczYwMDAvcnM2MDAwLm1kIChmbG9hdGluZyBtdWx0aXBseS9hZGQgaW5zbnMpOiBHbyBi YWNrCisJdG8gdGhlIG9yaWdpbmFsIHNlbWFudGljcyBmb3IgbXVsdGlwbHkgYWRkL3N1YnRyYWN0 LCBwYXJ0aWN1bGFybHkKKwl3aXRoIC1mZmFzdC1tYXRoLgorCisJKiBjb25maWcvcnM2MDAwL3Zz eC5tZCAoZmxvYXRpbmcgbXVsdGlwbHkvYWRkIGluc25zKTogTWlycm9yIHRoZQorCXJzNjAwMCBm bG9hdGluZyBwb2ludCBtdWx0aXBseS9hZGQgaW5zbnMgaW4gVlNYLgorCisyMDA5LTAzLTAxICBN aWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAbGludXgudm5ldC5pYm0uY29tPgorCisJKiBjb25m aWcvcnM2MDAwL3ZlY3Rvci5tZCAoVkVDX0wpOiBBdCBUSW1vZGUuCisJKFZFQ19NKTogTGlrZSBW RUNfTCwgZXhjZXB0IG5vIFRJbW9kZS4KKwkoVkVDX2Jhc2UpOiBBZGQgVEltb2RlIHN1cHBvcnQu CisJKG1vdjxtb2RlPik6IFVzZSBWRUNfTSwgbm90IFZFQ19MLiAgSWYgdGhlcmUgaXMgbm8gZXh0 cmEKKwlvcHRpbWl6YXRpb24gZm9yIHRoZSBtb3ZlLCBqdXN0IGdlbmVyYXRlIHRoZSBzdGFuZGFy ZCBtb3ZlLgorCSh2ZWN0b3Jfc3RvcmVfPG1vZGU+KTogRGl0dG8uCisJKHZlY3Rvcl9sb2FkXzxt b2RlPik6IERpdHRvLgorCSh2ZWNfaW5pdDxtb2RlPik6IFVzZSB2ZWNfaW5pdF9vcGVyYW5kIHBy ZWRpY2F0ZS4KKworCSogY29uZmlnL3JzNjAwMC9wcmVkaWNhdGVzLm1kICh2ZWNfaW5pdF9vcGVy YW5kKTogTmV3IHByZWRpY2F0ZS4KKworCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAw X2hhcmRfcmVnbm9fbW9kZV9vayk6IEFsbG93IG1vZGUKKwlpbiBhIFZTWCByZWdpc3RlciBpZiB0 aGVyZSBpcyBhIG1vdmUgb3BlcmF0aW9uLgorCShyczYwMDBfdmVjdG9yX3JlZ19jbGFzcyk6IEFk ZCBpbnRlcm5hbCByZWdpc3RlciBudW1iZXIgdG8gdGhlCisJZGVidWcgb3V0cHV0LgorCShyczYw MDBfaW5pdF9oYXJkX3JlZ25vX21vZGVfb2spOiBSZW9yZ2FuaXplIHNvIGFsbCBvZiB0aGUgY29k ZQorCWZvciBhIGdpdmVuIHR5cGUgaXMgbG9jYXRlZCB0b2dldGhlci4gIElmIG5vdCAtbXZzeCwg bWFrZSAid3MiCisJY29uc3RyYWludCBiZWNvbWUgTk9fUkVHUywgbm90IEZMT0FUX1JFR1MuICBD aGFuZ2UgLW1kZWJ1Zz1yZWcKKwlvdXRwdXQuCisJKHJzNjAwMF9leHBhbmRfdmVjdG9yX2luaXQp OiBCZWZvcmUgY2FsbGluZyBnZW5fdnN4X2NvbmNhdF92MmRmLAorCW1ha2Ugc3VyZSB0aGUgdHdv IGZsb2F0IGFyZ3VtZW50cyBhcmUgY29waWVkIGludG8gcmVnaXN0ZXJzLgorCShyczYwMDBfbGVn aXRpbWF0ZV9vZmZzZXRfYWRkcmVzc19wKTogSWYgbm8gdnN4IG9yIGFsdGl2ZWMsIGRvbid0CisJ ZGlzYWxsb3cgb2Zmc2V0IGFkZHJlc3NpbmcuICBBZGQgVjJESW1vZGUuICBJZiBUSW1vZGUgaXMg aGFuZGxlZAorCWJ5IHRoZSB2ZWN0b3IgdW5pdCwgYWxsb3cgaW5kZXhlZCBhZGRyZXNzaW5nLiAg Q2hhbmdlIGRlZmF1bHQgY2FzZQorCXRvIGJlIGEgZmF0YWxfaW5zbiBpbnN0ZWFkIG9mIGdjY191 bnJlYWNoYWJsZS4KKwkocnM2MDAwX2hhbmRsZV9hbHRpdmVjX2F0dHJpYnV0ZSk6IEFkZCBzdXBw b3J0IGZvciB2ZWN0b3IgZG91YmxlCisJaWYgLW12c3guCisJKHJzNjAwMF9yZWdpc3Rlcl9tb3Zl X2Nvc3QpOiBBZGQgc3VwcG9ydCBmb3IgVlNYX1JFR1MuICBLbm93IHRoYXQKKwl1bmRlciBWU1gs IHlvdSBjYW4gbW92ZSBiZXR3ZWVuIGZsb2F0IGFuZCBhbHRpdmVjIHJlZ2lzdGVycworCWNoZWFw bHkuCisJKHJzNjAwMF9lbWl0X3N3ZGl2ZGYpOiBDaGFuZ2UgdGhlIHBhdHRlcm4gb2YgdGhlIG5l Z2F0ZSBtdWx0aXBseQorCWFuZCBzdWJ0cmFjdCBvcGVyYXRpb24uCisKKwkqIGNvbmZpZy9yczYw MDAvdnN4Lm1kIChWU1hfSSk6IEFkZCBUSW1vZGUuCisJKFZTWF9MKTogQWRkIFRJbW9kZS4KKwko VlNtKTogRGl0dG8uCisJKFZTcyk6IERpdHRvLgorCShWU3IpOiBEaXR0by4KKwkoVU5TUEVDX1ZT WF9DT05DQVRfVjJERik6IE5ldyBjb25zdGFudC4KKwkodnN4X2ZyZTxtb2RlPjIpOiBBZGQgcmVj aXByb2NhbCBlc3RpbWF0ZS4KKwkodnN4X2ZyZURGMik6IERpdHRvLgorCSh2c3hfZm5tYWRkPG1v ZGU+NCk6IFJld29yayBwYXR0ZXJuIHNvIGl0IG1hdGNoZXMgdGhlCisJY2Fub25pY2FsaXphdGlv biB0aGF0IHRoZSBjb21waWxlciBkb2VzLgorCSh2c3hfZm5tc3ViPG1vZGU+NCk6IERpdHRvLgor CSh2c3hfZm5tYWRkREY0KTogRGl0dG8uCisJKHZzeF9mbm1zdWJERjQpOiBEaXR0by4KKwkodnN4 X3ZzZWw8bW9kZT4pOiBVc2UgdnN4X3JlZ2lzdGVyX29wZXJhbmQsIG5vdCByZWdpc3Rlcl9vcGVy YW5kLgorCSh2c3hfYWRkZGYzKTogRGl0dG8uCisJKHZzeF9zdWJkZjMpOiBEaXR0by4KKwkodnN4 X211bGRmMyk6IERpdHRvLgorCSh2c3hfZGl2ZGYzKTogRGl0dG8uCisJKHZzeF9uZWdkZjMpOiBE aXR0by4KKwkodnN4X2Fic2RmMik6IERpdHRvLgorCSh2c3hfbmFic2RmMik6IERpdHRvLgorCSh2 c3hfY29weXNpZ248bW9kZT4zKTogQWRkIGNvcHlzaWduIHN1cHBvcnQuCisJKHZzeF9jb3B5c2ln bkRGMyk6IERpdHRvLgorCSh2c3hfY29uY2F0X3YyZGYpOiBSZXdyaXRlIHRvIHVzZSBhbiBVTlNQ RUMuCisJKHZzeF9zZXRfdjJkZik6IFVzZSAid3MiIGNvbnN0cmFpbnQgZm9yIHNjYWxhciBmbG9h dC4KKwkodnN4X3NwbGF0djJkZik6IERpdHRvLgorCisJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5o IChWRUNUT1JfVU5JVF9OT05FX1ApOiBOZXcgbWFjcm8gdG8gc2F5IG5vCisJdmVjdG9yIHN1cHBv cnQuCisJKFZFQ1RPUl9NRU1fTk9ORV9QKTogRGl0dG8uCisJKFZTWF9NT1ZFX01PREUpOiBBZGQg VjJESW1vZGUsIFRJbW9kZS4KKworCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kIChWTSk6IEFk ZCBWMkRJLCBUSS4KKwkoYnVpbGRfdmVjdG9yX21hc2tfZm9yX2xvYWQpOiBGaXggdGhpbmtvIGlu IFZTWCBjYXNlLgorCisJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoZm1hZGRzZjRfcG93ZXJw Yyk6IE5hbWUgcHJldmlvdXNseQorCXVubmFtZWQgcGF0dGVybi4gIEZpeCBpbnNucyBzbyBjb21i aW5lIHdpbGwgZ2VuZXJhdGUgdGhlIG5lZ2F0aXZlCisJbXVsdGlwbHkgYW5kIHN1YnRyYWN0IG9w ZXJhdGlvbnMuCisJKGZtYWRkc2Y0X3Bvd2VyKTogRGl0dG8uCisJKGZtc3Vic2Y0X3Bvd2VycGMp OiBEaXR0by4KKwkoZm1zdWJzZjRfcG93ZXIpOiBEaXR0by4KKwkoZm5tYWRkc2Y0X3Bvd2VycGMp OiBEaXR0by4KKwkoZm5tYWRkc2Y0X3Bvd2VyKTogRGl0dG8uCisJKGZubXN1YnNmNF9wb3dlcnBj KTogRGl0dG8uCisJKGZubXN1YnNmNF9wb3dlcik6IERpdHRvLgorCShmbnN1YnNmNF9wb3dlcnBj Mik6IERpdHRvLgorCShmbnN1YnNmNF9wb3dlcjIpOiBEaXR0by4KKwkoZm1hZGRkZjRfcG93ZXJw Yyk6IERpdHRvLgorCShmbWFkZGRmNF9wb3dlcik6IERpdHRvLgorCShmbXN1YmRmNF9wb3dlcnBj KTogRGl0dG8uCisJKGZtc3ViZGY0X3Bvd2VyKTogRGl0dG8uCisJKGZubWFkZGRmNF9wb3dlcnBj KTogRGl0dG8uCisJKGZubWFkZGRmNF9wb3dlcik6IERpdHRvLgorCShmbm1zdWJkZjRfcG93ZXJw Yyk6IERpdHRvLgorCShmbm1zdWJkZjRfcG93ZXIpOiBEaXR0by4KKwkoY29weXNpZ25kZjMpOiBJ ZiBWU1gsIGNhbGwgdGhlIFZTWCBjb3B5c2lnbi4KKwkoZnJlZCk6IFNwbGl0IGludG8gYW4gZXhw YW5kZXIgYW5kIGluc24uICBPbiBpbnNuLCBkaXNhYmxlIGlmCisJVlNYLgorCShtb3ZkZl9oYXJk ZmxvYXQzMik6IFJld29yayBWU1ggc3VwcG9ydC4KKwkobW92ZGZfaGFyZGZsb2F0NjRfbWZwZ3By KTogRGl0dG8uCisJKG1vdmRmX2hhcmRmbG9hdDY0KTogRGl0dG8uCisJKG1vdnRpX3BwYzY0KTog SWYgdmVjdG9yIHVuaXQgaXMgaGFuZGxpbmcgVEltb2RlLCBkaXNhYmxlIHRoaXMKKwlwYXR0ZXJu LgorCisyMDA5LTAyLTI4ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAbGludXgudm5ldC5p Ym0uY29tPgorCisJKiBjb25maWcvcnM2MDAwL3BwYy1hc20uaDogSWYgX19WU1hfXyBkZWZpbmUg dGhlIGFkZGl0aW9uYWwgc2NhbGFyCisJZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzIHRoYXQgb3Zl cmxhcCB3aXRoIHRoIEFsdGl2ZWMgcmVnaXN0ZXJzLgorCisyMDA5LTAyLTI3ICBNaWNoYWVsIE1l aXNzbmVyICA8bWVpc3NuZXJAbGludXgudm5ldC5pYm0uY29tPgorCisJKiBjb25maWcvcnM2MDAw L3NwZS5tZCAoc3BlX2ZpeHVuc190cnVuY2Rmc2kyKTogUmVuYW1lIGZyb20KKwlmaXh1bnNfdHJ1 bmNkZnNpMiwgYW5kIG1vdmUgZml4dW5zX3RydW5jZGZzaTIgaW50byByczYwMDAubWQuCisKKwkq IGNvbmZpZy9yczYwMDAvcHBjLWFzbS5oOiBJZiBfX0FMVElWRUNfXyBpcyBkZWZpbmVkLCBkZWZp bmUgdGhlCisJQWx0aXZlYyByZWdpc3RlcnMuICBJZiBfX1ZTWF9fIGlzIGRlZmluZWQsIGRlZmlu ZSB0aGUgVlNYCisJcmVnaXN0ZXJzLgorCisJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5vcHQgKC1t dnN4LXNjYWxhci1kb3VibGUpOiBNYWtlIHRoaXMgb24gYnkKKwlkZWZhdWx0LgorCSgtbWlzZWwp OiBNYWtlIHRoaXMgYSB0YXJnZXQgbWFzayBpbnN0ZWFkIG9mIGEgdmFyaWFibGUuCisKKwkqIGNv bmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9pc2VsKTogRGVsZXRlIGdsb2JhbCB2YXJpYWJs ZS4KKwkocnM2MDAwX2V4cGxpY2l0X29wdGlvbnMpOiBEZWxldGUgaXNlbCBmaWVsZC4KKwkoUE9X RVJQQ19NQVNLUyk6IEFkZCBNQVNLX0lTRUwuCisJKHByb2Nlc3Nvcl90YXJnZXRfdGFibGUpOiBB ZGQgTUFTS19JU0VMIHRvIDg1NDAsIDg1NDgsIGU1MDBtYywgYW5kCisJcG93ZXI3IHByb2Nlc3Nv cnMuCisJKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKTogTW92ZSAtbWlzZWwgdG8gYSB0YXJnZXQg bWFzay4KKwkocnM2MDAwX2hhbmRsZV9vcHRpb24pOiBEaXR0by4KKwkocnM2MDAwX2VtaXRfaW50 X2Ntb3ZlKTogQWRkIHN1cHBvcnQgZm9yIDY0LWJpdCBpc2VsLgorCisJKiBjb25maWcvcnM2MDAw L3ZzeC5tZCAodnN4X2Zsb2F0ZGlkZjIpOiBOZXcgc2NhbGFyIGZsb2F0aW5nIHBvaW50CisJcGF0 dGVybiB0byBzdXBwb3J0IFZTWCBjb252ZXJzaW9uIGFuZCByb3VuZGluZyBpbnN0cnVjdGlvbnMu CisJKHZzeF9mbG9hdHVuc2RpZGYyKTogRGl0dG8uCisJKHZzeF9maXhfdHJ1bmRmZGkyKTogRGl0 dG8uCisJKHZzeF9maXh1bnNfdHJ1bmRmZGkyKTogRGl0dG8uCisJKHZzeF9idHJ1bmRmMik6IERp dHRvLgorCSh2c3hfZmxvb3JkZjIpOiBEaXR0by4KKwkodnN4X2NlaWxkZjIpOiBEaXR0by4KKwor CSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAocnM2MDAwX2lzZWwpOiBEZWxldGUgZ2xvYmFsLgor CShUQVJHRVRfSVNFTCk6IERlbGV0ZSwgc2luY2UgLW1pc2VsIGlzIG5vdyBhIHRhcmdldCBtYXNr LgorCShUQVJHRVRfSVNFTDY0KTogTmV3IHRhcmdldCBvcHRpb24gZm9yIC1taXNlbCBvbiA2NC1i aXQgc3lzdGVtcy4KKworCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kIChhbHRpdmVjX2d0dTxt b2RlPik6IFVzZSBndHUsIG5vdCBnZXUuCisKKwkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChz ZWwpOiBOZXcgbW9kZSBhdHRyaWJ1dGUgZm9yIDY0LWJpdAorCUlTRUwgc3VwcG9ydC4KKwkobW92 PG1vZGU+Y2MpOiBBZGQgNjQtYml0IElTRUwgc3VwcG9ydC4KKwkoaXNlbF9zaWduZWRfPG1vZGU+ KTogRGl0dG8uCisJKGlzZWxfdW5zaWduZWRfPG1vZGU+KTogRGl0dG8uCisJKGZpeHVuc190cnVu Y2Rmc2kyKTogTW92ZSBleHBhbmRlciBoZXJlIGZyb20gc3BlLm1kLgorCShmaXh1bnNfdHJ1bmNk ZmRpMik6IE5ldyBleHBhbmRlciBmb3IgdW5zaWduZWQgZmxvYXRpbmcgcG9pbnQKKwljb252ZXJz aW9uIG9uIHBvd2VyNy4KKwkoYnRydW5jZGYyKTogU3BsaXQgaW50byBleHBhbmRlciBhbmQgaW5z bi4gIE9uIHRoZSBpbnNuLCBkaXNhbGxvdworCW9uIFZTWCwgc28gdGhlIFZTWCBpbnN0cnVjdGlv biB3aWxsIGJlIGdlbmVyYXRlZC4KKwkoY2VpbGRmMik6IERpdHRvLgorCShmbG9vcmRmMik6IERp dHRvLgorCShmbG9hdGRpZGYyKTogRGl0dG8uCisJKGZpeF90cnVuY2RmZGkyKTogRGl0dG8uCisJ KHNtaW5kaTMpOiBEZWZpbmUgaWYgd2UgaGF2ZSAtbWlzZWwgb24gNjQtYml0IHN5c3RlbXMuCisJ KHNtYXhkaTMpOiBEaXR0by4KKwkodW1pbmRpMyk6IERpdHRvLgorCSh1bWF4ZGkzKTogRGl0dG8u CisKKwkqIGNvbmZpZy9yczYwMDAvZTUwMC5oIChDSEVDS19FNTAwX09QVElPTlMpOiBEaXNhYmxl IC1tdnN4IG9uCisJRTUwMC4KKworMjAwOS0wMi0yNiAgTWljaGFlbCBNZWlzc25lciAgPG1laXNz bmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KKworCSogY29uZmlnL3JzNjAwMC9jb25zdHJhaW50cy5t ZCAoIndkIiBjb25zdHJhaW50KTogIENoYW5nZSB0aGUKKwl2YXJpYWJsZSB0aGF0IGhvbGRzIHRo ZSByZWdpc3RlciBjbGFzcyB0byB1c2UuCisJKCJ3ZiIgY29uc3RyYWludCk6IERpdHRvLgorCSgi d3MiIGNvbnN0cmFpbnQpOiBEaXR0by4KKwkoIndhIiBjb25zdHJhaW50KTogRGl0dG8uCisKKwkq IGNvbmZpZy9yczYwMDAvcnM2MDAwLm9wdCAoLW12c3gtdmVjdG9yLW1lbW9yeSk6IE1ha2UgdGhp cyBvbiBieQorCWRlZmF1bHQuCisJKC1tdnN4LXZlY3Rvci1mbG9hdCk6IERpdHRvLgorCisJKiBj b25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfdmVjdG9yX3JlZ19jbGFzcyk6IE5ldyBnbG9i YWwgdG8KKwlob2xkIHRoZSByZWdpc3RlciBjbGFzc2VzIGZvciB0aGUgdmVjdG9yIG1vZGVzLgor CShyczYwMDBfdnN4X3Y0c2ZfcmVnY2xhc3MpOiBEZWxldGUsIG1vdmUgaW50bworCXJzNjAwMF92 ZWN0b3JfcmVnX2NsYXNzLgorCShyczYwMDBfdnN4X3YyZGZfcmVnY2xhc3MpOiBEaXR0by4KKwko cnM2MDAwX3ZzeF9kZl9yZWdjbGFzcyk6IERpdHRvLgorCShyczYwMDBfdnN4X3JlZ19jbGFzcyk6 IFJlbmFtZSBmcm9tIHJzNjAwMF92c3hfYW55X3JlZ2NsYXNzLgorCShyczYwMDBfaGFyZF9yZWdu b19tb2RlX29rKTogUmV3b3JrIFZTWCwgQWx0aXZlYyByZWdpc3RlcnMuCisJKHJzNjAwMF9pbml0 X2hhcmRfcmVnbm9fbW9kZV9vayk6IFNldHVwIHJzNjAwMF92ZWN0b3JfcmVnX2NsYXNzLgorCURy b3AgcnM2MDAwX3ZzeF8qX3JlZ2NsYXNzLiAgQnkgZGVmYXVsdCwgdXNlIGFsbCA2NCByZWdpc3Rl cnMgZm9yCisJVjRTRiBhbmQgVjJERi4gIFVzZSBWU1hfUkVHX0NMQVNTX1AgbWFjcm8gaW5zdGVh ZCBvZiBzZXBhcmF0ZQorCXRlc3RzLiAgVXBkYXRlIC1tZGVidWc9cmVnIHByaW50b3V0LgorCShy czYwMDBfcHJlZmVycmVkX3JlbG9hZF9jbGFzcyk6IElmIFZTWCwgcHJlZmVyIEZMT0FUX1JFR1Mg Zm9yCisJc2NhbGFyIGZsb2F0aW5nIHBvaW50IGFuZCBBTFRJVkVDX1JFR1MgZm9yIHRoZSB0eXBl cyB0aGF0IGhhdmUKKwlhbHRpdmVjIGluc3RydWN0aW9ucy4KKwkocnM2MDAwX3NlY29uZGFyeV9t ZW1vcnlfbmVlZGVkKTogSWYgVlNYLCB3ZSBjYW4gY29weSBiZXR3ZWVuIEZQUgorCWFuZCBBbHRp dmVjIHJlZ2lzdGVycyB3aXRob3V0IG5lZWRlZCBtZW1vcnkuCisJKHJzNjAwMF9zZWNvbmRhcnlf cmVsb2FkX2NsYXNzKTogRGVsZXRlIEFUVFJJQlVURV9VTlVTRUQgZnJvbSBhbgorCWFyZ3VtZW50 IHRoYXQgaXMgdXNlZC4gIElmIFZTWCwgd2UgY2FuIGNvcHkgYmV0d2VlbiBGUFIgYW5kCisJQWx0 aXZlYyByZWdpc3RlcnMgZGlyZWN0bHkuCisKKwkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFZT WF9NT1ZFX01PREUpOiBBZGQgaW4gdGhlIEFsdGl2ZWMKKwl0eXBlcy4KKwkocnM2MDAwX3ZzeF92 NHNmX3JlZ2NsYXNzKTogRGVsZXRlLgorCShyczYwMDBfdnN4X3YyZGZfcmVnY2xhc3MpOiBEaXR0 by4KKwkocnM2MDAwX3ZzeF9kZl9yZWdjbGFzcyk6IERpdHRvLgorCShyczYwMDBfdnN4X3JlZ19j bGFzcyk6IFJlbmFtZSBmcm9tIHJzNjAwMF92c3hfYW55X3JlZ19jbGFzcy4KKwkocnM2MDAwX3Zl Y3Rvcl9yZWdfY2xhc3MpOiBOZXcgZ2xvYmFsIHRvIG1hcCBtYWNoaW5lIG1vZGUgdG8gdGhlCisJ cHJlZmVycmVkIHJlZ2lzdGVyIGNsYXNzIHRvIHVzZSBmb3IgdGhhdCBtb2RlLgorCShWU1hfUkVH X0NMQVNTX1ApOiBOZXcgbWFjcm8gdG8gcmV0dXJuIHRydWUgZm9yIGFsbCBvZiB0aGUKKwlyZWdp c3RlciBjbGFzc2VzIFZTWCBpdGVtcyBjYW4gYmUgaW4uCisKKzIwMDktMDItMjUgIE1pY2hhZWwg TWVpc3NuZXIgIDxtZWlzc25lckBsaW51eC52bmV0LmlibS5jb20+CisKKwkqIGRvYy9pbnZva2Uu dGV4aSAoLW12c3gtdmVjdG9yLW1lbW9yeSk6IFJlbmFtZSBmcm9tCisJLW12c3gtdmVjdG9yLW1v dmUuCisJKC1tdnN4LXZlY3Rvci1sb2dpY2FsKTogRGVsZXRlLgorCisJKiBjb25maWcvcnM2MDAw L2FpeDUzLmggKEFTTV9DUFVfU1BFQyk6IEFkZCBwb3dlcjcgc3VwcG9ydC4KKwkqIGNvbmZpZy9y czYwMDAvYWl4NjEuaCAoQVNNX0NQVV9TUEVDKTogRGl0dG8uCisKKwkqIGNvbmZpZy9yczYwMDAv dmVjdG9yLm1kIChhbGwgaW5zbnMpOyBDaGFuZ2UgZnJvbSB1c2luZworCXJzNjAwMF92ZWN0b3Jf aW5mbyB0byBWRUNUT1JfTUVNXyogb3IgVkVDVE9SX1VOSVRfKiBtYWNyb3MuCisKKwkqIGNvbmZp Zy9yczYwMDAvY29uc3RyYWludHMubWQgKCJ3aSIgY29uc3RyYWludCk6IERlbGV0ZS4KKwkoInds IiBjb25zdHJhaW50KTogRGl0dG8uCisJKCJ3cyIgY29uc3RyYWludCk6IENoYW5nZSB0byB1c2Ug cnM2MDAwX3ZzeF9kZl9yZWdjbGFzcy4KKworCSogY29uZmlnL3JzNjAwMC9yczYwMDAub3B0ICgt bXZzeC12ZWN0b3ItbWVtb3J5KTogUmVuYW1lIGZyb20KKwktbXZzeC12ZWN0b3ItbW92ZS4KKwko LW12c3gtdmVjdG9yLWZsb2F0KTogTWFrZSBkZWZhdWx0IDAsIG5vdCAxLgorCSgtbXZzeC12ZWN0 b3ItZG91YmxlKTogTWFrZSBkZWZhdWx0IC0xLCBub3QgMS4KKwkoLW12c3gtdmVjdG9yLWxvZ2lj YWwpOiBEZWxldGUuCisKKwkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF92ZWN0b3Jf aW5mbyk6IERlbGV0ZS4KKwkocnM2MDAwX3ZlY3Rvcl91bml0KTogTmV3IGdsb2JhbCBhcnJheSB0 byBzYXkgd2hhdCB2ZWN0b3IgdW5pdCBpcworCXVzZWQgZm9yIGFyaXRobWV0aWMgaW5zdHJ1Y3Rp b25zLgorCShyczYwMDBfdmVjdG9yX21vdmUpOiBOZXcgZ2xvYmFsIGFycmF5IHRvIHNheSB3aGF0 IHZlY3RvciB1bml0IGlzCisJdXNlZCBmb3IgbWVtb3J5IHJlZmVyZW5jZXMuCisJKHJzNjAwMF92 c3hfaW50X3JlZ2NsYXNzKTogRGVsZXRlLgorCShyczYwMDBfdnN4X2xvZ2ljYWxfcmVnY2xhc3Mp OiBEZWxldGUuCisJKHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzX2ludGVybmFsKTogU3dpdGNoIGZy b20gdXNpbmcKKwlyczYwMDBfdmVjdG9yX2luZm8gdG8gcnM2MDAwX3ZlY3Rvcl91bml0LCByczYw MDBfdmVjdG9yX21vdmUuCisJKHJzNjAwMF9oYXJkX3JlZ25vX21vZGVfb2spOiBEaXR0by4gIFJl Zm9ybWF0IGNvZGUgc29tZXdoYXQuCisJKHJzNjAwMF9kZWJ1Z192ZWN0b3JfdW5pdCk6IE5ldyBh cnJheSB0byBwcmludCB2ZWN0b3IgdW5pdAorCWluZm9ybWF0aW9uIGlmIC1tZGVidWc9cmVnLgor CShyczYwMDBfaW5pdF9oYXJkX3JlZ25vX21vZGVfb2spOiBSZXdvcmsgdG8gYmV0dGVyIGRlc2Ny aWJlIFZTWAorCWFuZCBBbHRpdmVjIHJlZ2lzdGVyIHNldHMuCisJKGJ1aWx0aW5fbWFza19mb3Jf bG9hZCk6IFJldHVybiAwIGlmIC1tdnN4LgorCShyczYwMDBfbGVnaXRpbWl6ZV9yZWxvYWRfYWRk cmVzcyk6IEFsbG93IEFORCBpbiBWU1ggYWRkcmVzc2VzLgorCShyczYwMDBfbGVnaXRpbWF0ZV9h ZGRyZXNzKTogRGl0dG8uCisJKGJkZXNjXzNhcmcpOiBEZWxldGUgdnNlbHYyZGkgYnVpbHRpbi4K KwkocnM2MDAwX2VtaXRfbWlubWF4KTogVXNlIHJzNjAwMF92ZWN0b3JfdW5pdCBpbnN0ZWFkIG9m CisJcnM2MDAwX3ZlY3Rvcl9pbmZvLgorCShyczYwMDBfdmVjdG9yX21vZGVfc3VwcG9ydGVkX3Ap OiBEaXR0by4KKworCSogY29uZmlnL3JzNjAwMC92c3gubWQgKGFsbCBpbnNucyk6IENoYW5nZSBm cm9tIHVzaW5nCisJcnM2MDAwX3ZlY3Rvcl9pbmZvIHRvIFZFQ1RPUl9NRU1fKiBhbmQgVkVDVE9S X1VOSVRfKiBtYWNyb3MuCisJKFZTcik6IENoYW5nZSB0byB1c2UgInYiIHJlZ2lzdGVyIGNsYXNz LCBub3QgIndpIi4KKwkodnN4X21vdjxtb2RlPik6IENvbWJpbmUgZmxvYXRpbmcgYW5kIGludGVn ZXIuICBBbGxvdyBwcmVmZXJlZAorCXJlZ2lzdGVyIGNsYXNzLCBhbmQgdGhlbiB1c2UgP3dhIGZv ciBhbGwgVlNYIHJlZ2lzdGVycy4KKwkodnN4X2ZtYWRkZGY0KTogVXNlIHdzIGNvbnN0cmFpbnQs IG5vdCBmLgorCSh2c3hfZm1zdWJkZjQpOiBEaXR0by4KKwkodnN4X2ZubWFkZGRmNCk6IERpdHRv LgorCSh2c3hfZm5tc3ViZGY0KTogRGl0dG8uCisJKHZzeF9hbmQ8bW9kZT4zKTogVXNlIHByZWZl cnJlZCByZWdpc3RlciBjbGFzcywgYW5kIHRoZW4gP3dhIHRvCisJY2F0Y2ggYWxsIFZTWCByZWdp c3RlcnMuCisJKHZzeF9pb3I8bW9kZT4zKTogRGl0dG8uCisJKHZzeF94b3I8bW9kZT4zKTogRGl0 dG8uCisJKHZzeF9vbmVfY21wbDxtb2RlPjIpOiBEaXR0by4KKwkodnN4X25vcjxtb2RlPjMpOiBE aXR0by4KKwkodnN4X2FuZGM8bW9kZT4zKTogRGl0dG8uCisKKwkqIGNvbmZpZy9yczYwMDAvcnM2 MDAwLmggKHJzNjAwMF92ZWN0b3Jfc3RydWN0KTogRGVsZXRlLgorCShyczYwMDBfdmVjdG9yX2lu Zm8pOiBEaXR0by4KKwkocnM2MDAwX3ZlY3Rvcl91bml0KTogTmV3IGdsb2JhbCBhcnJheSB0byBz YXkgd2hldGhlciBhIG1hY2hpbmUKKwltb2RlIGFyaXRobWV0aWMgaXMgaGFuZGxlZCBieSBhIHBh cnRpY3VsYXIgdmVjdG9yIHVuaXQuCisJKHJzNjAwMF92ZWN0b3JfbWVtKTogTmV3IGdsb2JhbCBh cnJheSB0byBzYXkgd2hpY2ggdmVjdG9yIHVuaXQgdG8KKwl1c2UgZm9yIG1vdmVzLgorCShWRUNU T1JfVU5JVF8qKTogTmV3IG1hY3JvcyB0byBzYXkgd2hpY2ggdmVjdG9yIHVuaXQgdG8gdXNlLgor CShWRUNUT1JfTUVNXyopOiBEaXR0by4KKwkocnM2MDAwX3ZzeF9pbnRfcmVnY2xhc3MpOiBEZWxl dGUuCisJKHJzNjAwMF92c3hfbG9naWNhbF9yZWdjbGFzcyk6IERlbGV0ZS4KKworCSogY29uZmln L3JzNjAwMC9hbHRpdmVjLm1kIChhbGwgaW5zbnMpOiBDaGFuZ2UgZnJvbSB1c2luZworCXJzNjAw MF92ZWN0b3JfaW5mbyB0byBWRUNUT1JfTUVNXyogYW5kIFZFQ1RPUl9VTklUXyogbWFjcm9zLgor CShidWlsZF92ZWN0b3JfbWFza19mb3JfbG9hZCk6IERpc2FibGUgaWYgVlNYLgorCisJKiBjb25m aWcvcnM2MDAwL3JzNjAwMC5tZCAoYWxsIERGIGluc25zKTogQ2hhbmdlIGhvdyB0aGUgVlNYCisJ ZXhjbHVzaW9uIGlzIGRvbmUuCisKKzIwMDktMDItMjQgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlz c25lckBsaW51eC52bmV0LmlibS5jb20+CisKKwkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJz NjAwMF9kZWJ1Z19yZWcpOiBOZXcgZ2xvYmFsLgorCShyczYwMDBfZGVidWdfcmVnX3ByaW50KTog TmV3IGZ1bmN0aW9uIHRvIHByaW50IHJlZ2lzdGVyIGNsYXNzZXMKKwlmb3IgYSBnaXZlbiByZWdp c3RlciByYW5nZS4KKwkocnM2MDAwX2luaXRfaGFyZF9yZWdub19tb2RlX29rKTogSWYgLW1kZWJ1 Zz1yZWcsIHByaW50IG91dCB0aGUKKwlyZWdpc3RlciBjbGFzcywgY2FsbCB1c2VkLCBmaXhlZCBp bmZvcm1hdGlvbiBmb3IgbW9zdCBvZiB0aGUKKwlyZWdpc3RlcnMuICBQcmludCB0aGUgdnN4IHJl Z2lzdGVyIGNsYXNzIHZhcmlhYmxlcy4KKwkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBBZGQg LW1kZWJ1Zz1yZWcgc3VwcG9ydC4KKworCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAocnM2MDAw X2RlYnVnX3JlZyk6IE5ldyBnbG9iYWwuCisJKFRBUkdFVF9ERUJVR19SRUcpOiBOZXcgdGFyZ2V0 IHN3aXRjaCBmb3IgLW1kZWJ1Zz1yZWcuCisKKzIwMDktMDItMjMgIE1pY2hhZWwgTWVpc3NuZXIg IDxtZWlzc25lckBsaW51eC52bmV0LmlibS5jb20+CisKKwkqIHJlbG9hZC5jIChzdWJzdF9yZWxv YWRzKTogQ2hhbmdlIGdjY19hc3NlcnQgaW50byBhIGZhdGFsX2luc24uCisKKwkqIGNvbmZpZy9y czYwMDAvdmVjdG9yLm1kIChWRUNfSSk6IFJlb3JkZXIgaXRlcmF0b3IuCisJKFZFQ19MKTogRGl0 dG8uCisJKFZFQ19DKTogTmV3IGl0ZXJhdG9yIGZpZWxkIGZvciB2ZWN0b3IgY29tcGFyaXNvbnMu CisJKFZFQ19iYXNlKTogTmV3IG1vZGUgYXR0cmlidXRlIHRoYXQgbWFwZXMgdGhlIHZlY3RvciB0 eXBlIHRvIHRoZQorCWJhc2UgdHlwZS4KKwkoYWxsIGluc25zKTogU3dpdGNoIHRvIHVzZSByczYw MDBfdmVjdG9yX2luZm8gdG8gZGV0ZXJtaW5lIHdoZXRoZXIKKwl0aGUgaW5zbiBpcyB2YWxpZCBp bnN0ZWFkIG9mIHVzaW5nIFRBUkdFVF9WU1ggb3IgVEFSR0VUX0FMVElWRUMuCisJKHZjb25kPG1v ZGU+KTogTW92ZSBoZXJlIGZyb20gYWx0aXZlYywgYW5kIGFkZCBWU1ggc3VwcG9ydC4KKwkodmNv bmR1PG1vZGU+KTogRGl0dG8uCisJKHZlY3Rvcl9lcTxtb2RlPik6IE5ldyBleHBhbmRlciBmb3Ig dmVjdG9yIGNvbXBhcmlzb25zLgorCSh2ZWN0b3JfZ3Q8bW9kZT4pOiBEaXR0by4KKwkodmVjdG9y X2dlPG1vZGU+KTogRGl0dG8uCisJKHZlY3Rvcl9ndHU8bW9kZT4pOiBEaXR0by4KKwkodmVjdG9y X2dldTxtb2RlPik6IERpdHRvLgorCSh2ZWN0b3JfdnNlbDxtb2RlPik6IE5ldyBleHBhbmRlciBm b3IgdmVjdG9yIHNlbGVjdC4KKwkodmVjX2luaXQ8bW9kZT4pOiBNb3ZlIGV4cGFuZGVyIGZyb20g YWx0aXZlYy5tZCBhbmQgZ2VuZXJhbGl6ZSBmb3IKKwlWU1guCisJKHZlY19zZXQ8bW9kZT4pOiBE aXR0by4KKwkodmVjX2V4dHJhY3Q8bW9kZT4pOiBEaXR0by4KKwkodmVjX2ludGVybGVhdmVfaGln aHY0c2YpOiBEaXR0by4KKwkodmVjX2ludGVybGVhdmVfbG93djRzZik6IERpdHRvLgorCSh2ZWNf aW50ZXJsZWF2ZV9oaWdodjJkZik6IE5ldyBleHBhbmRlciBmb3IgVlNYLgorCSh2ZWNfaW50ZXJs ZWF2ZV9sb3d2MmRmKTogRGl0dG8uCisKKwkqIGNvbmZpZy9yczYwMDAvY29udHJhaW50cy5tZCAo dG9wbGV2ZWwpOiBBZGQgY29tbWVudCBvbiB0aGUKKwlhdmFpbGFibGUgY29uc3RyYWludCBsZXR0 ZXJzLgorCSgidyIgY29uc3RyYWludCk6IERlbGV0ZSwgaW4gZmF2b3Igb2YgdXNpbmcgInciIGFz IGEgdHdvIGxldHRlcgorCWNvbnN0cmFpbnQuCisJKCJ3ZCIgY29uc3RyYWludCk6IE5ldyBWU1gg Y29uc3RyYWludC4KKwkoIndmIiBjb25zdHJhaW50KTogRGl0dG8uCisJKCJ3aSIgY29uc3RyYWlu dCk6IERpdHRvLgorCSgid2wiIGNvbnN0cmFpbnQpOiBEaXR0by4KKwkoIndzIiBjb25zdHJhaW50 KTogRGl0dG8uCisJKCJ3YSIgY29uc3RyYWludCk6IERpdHRvLgorCisJKiBjb25maWcvcnM2MDAw L3ByZWRpY2F0ZXMubWQgKGluZGV4ZWRfb3JfaW5kaXJlY3Rfb3BlcmFuZCk6CisJRGlzYWJsZSBh bHRpdmVjIHN1cHBvcnQgYWxsb3dpbmcgQU5EIG9mIG1lbW9yeSBhZGRyZXNzIGlmIC1tdnN4Lgor CisJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5vcHQgKC1tdnN4LXZlY3Rvci1tb3ZlKTogTmV3IHN3 aXRjaGVzIHRvCisJYWxsb3cgZmluZXIgY29udHJvbCBvdmVyIHdoZXRoZXIgVlNYLCBBbHRpdmVj LCBvciB0aGUgdHJhZGl0aW9uYWwKKwlpbnN0cnVjdGlvbnMgYXJlIHVzZWQuCisJKC1tdnN4LXNj YWxhci1tb3ZlKTogRGl0dG8uCisJKC1tdnN4LXZlY3Rvci1mbG9hdCk6IERpdHRvLgorCSgtbXZz eC12ZWN0b3ItZG91YmxlKTogRGl0dG8uCisJKC1tdnN4LXZlY3Rvci1sb2dpY2FsKTogRGl0dG8u CisJKC1tdnN4LXNjYWxhci1kb3VibGUpOiBEaXR0by4KKworCSogY29uZmlnL3JzNjAwMC9yczYw MDAuYyAocnM2MDAwX3ZlY3Rvcl9pbmZvKTogTmV3IGdsb2JhbCB0byBob2xkCisJdmFyaW91cyBp bmZvcm1hdGlvbiBhYm91dCB3aGljaCB2ZWN0b3IgaW5zdHJ1Y3Rpb24gc2V0IHRvIHVzZSwgYW5k CisJdGhlIGFsaWdubWVudCBvZiBkYXRhLgorCShyczYwMDBfdnN4X3Y0c2ZfcmVnY2xhc3MpOiBO ZXcgZ2xvYmFsIHRvIGhvbGQgVlNYIHJlZ2lzdGVyCisJY2xhc3MuCisJKHJzNjAwMF92c3hfdjJk Zl9yZWdjbGFzcyk6IERpdHRvLgorCShyczYwMDBfdnN4X2RmX3JlZ2NsYXNzKTogRGl0dG8uCisJ KHJzNjAwMF92c3hfaW50X3JlZ2NsYXNzKTogRGl0dG8uCisJKHJzNjAwMF92c3hfbG9naWNhbF9y ZWdjbGFzcyk6IERpdHRvLgorCShyczYwMDBfdnN4X2FueV9yZWdjbGFzcyk6IERpdHRvLgorCShy czYwMDBfaGFyZF9yZWdub19ucmVnc19pbnRlcm5hbCk6IFJld3JpdGUgdG8gZmluZSB0dW5lCisJ VlNYL0FsdGl2ZWMgcmVnaXN0ZXIgc2VsZWN0aW9uLgorCShyczYwMDBfaGFyZF9yZWdub19tb2Rl X29rKTogRGl0dG8uCisJKHJzNjAwMF9pbml0X2hhcmRfcmVnbm9fbW9kZV9vayk6IFNldCB1cCB0 aGUgdmVjdG9yIGluZm9ybWF0aW9uCisJZ2xvYmFscyBiYXNlZCBvbiB0aGUgLW12c3gtKiBzd2l0 Y2hlcy4KKwkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBBZGQgd2FybmluZ3MgZm9yIC1tdnN4 IGFuZAorCS1tbGl0dGxlLWVuZGlhbiBvciAtbWF2b2lkLWluZGV4ZWQtYWRkcmVzc2VzLgorCShy czYwMDBfYnVpbHRpbl92ZWNfcGVybSk6IEFkZCBWMkRGL1YyREkgc3VwcG9ydC4KKwkocnM2MDAw X2V4cGFuZF92ZWN0b3JfaW5pdCk6IEFkZCBWMkRGIHN1cHBvcnQuCisJKHJzNjAwMF9leHBhbmRf dmVjdG9yX3NldCk6IERpdHRvLgorCShyczYwMDBfZXhwYW5kX3ZlY3Rvcl9leHRyYWN0KTogRGl0 dG8uCisJKGF2b2lkaW5nX2luZGV4ZWRfYWRkcmVzc19wKTogQWRkIFZTWCBzdXBwb3J0LgorCShy czYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNzKTogRGl0dG8uCisJKHJzNjAwMF9sZWdpdGltaXplX3Jl bG9hZF9hZGRyZXNzKTogRGl0dG8uCisJKHJzNjAwMF9sZWdpdGltaXRlX2FkZHJlc3MpOiBEaXR0 by4KKwkoVVNFX0FMVElWRUNfRk9SX0FSR19QKTogRGl0dG8uCisJKGZ1bmN0aW9uX2FyZ19ib3Vu ZGFyeSk6IERpdHRvLgorCShmdW5jdGlvbl9hcmdfYWR2YW5jZSk6IERpdHRvLgorCShmdW5jdGlv bl9hcmcpOiBEaXR0by4KKwkoZ2V0X3ZlY19jbXBfaW5zbik6IERlbGV0ZS4KKwkocnM2MDAwX2Vt aXRfdmVjdG9yX3ZzeCk6IE5ldyBmdW5jdGlvbiBmb3IgVlNYIHZlY3RvciBjb21wYXJlLgorCShy czYwMDBfZW1pdF92ZWN0b3JfYWx0aXZlYyk6IE5ldyBmdW5jdGlvbiBmb3IgQWx0aXZlYyB2ZWN0 b3IKKwljb21wYXJlLgorCShnZXRfdnNlbF9pbnNuKTogRGVsZXRlLgorCShyczYwMDBfZW1pdF92 ZWN0b3Jfc2VsZWN0KTogRGl0dG8uCisJKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKTogSWYgLW12 c3gsIHR1cm4gb24gLW1hbHRpdmVjIGJ5CisJZGVmYXVsdC4KKwkocnM2MDAwX2J1aWx0aW5fdmVj X3Blcm0pOiBBZGQgc3VwcG9ydCBmb3IgVjJESSwgVjJERiBtb2Rlcy4KKwkoYmRlc2NfM2FyZyk6 IEFkZCB2ZWN0b3Igc2VsZWN0IGFuZCB2ZWN0b3IgcGVybXV0ZSBidWlsdGlucyBmb3IKKwlWMkRJ IGFuZCBWMkRGIHR5cGVzLiAgU3dpdGNoIHRvIHVzaW5nIHRoZSB2ZWN0b3JfKiBleHBhbmRlcgor CWluc3RlYWQgb2YgYWx0aXZlY18qLgorCShyczYwMDBfaW5pdF9idWlsdGlucyk6IEluaXRpYWxp emUgbmV3IHR5cGUgbm9kZXMgZm9yIFZTWC4KKwlJbml0aWFsaXplIF9fdmVjdG9yIGRvdWJsZSB0 eXBlLiAgSW5pdGlhbGl6ZSBjb21tb24gYnVpbHRpbnMgZm9yCisJVlNYLgorCShyczYwMDBfZW1p dF92ZWN0b3JfY29tcGFyZSk6IEFkZCBWU1ggc3VwcG9ydC4KKwkocnM2MDAwX3ZlY3Rvcl9tb2Rl X3N1cHBvcnRlZF9wKTogSWYgVlNYLCBzdXBwb3J0IFYyREYuCisKKwkqIGNvbmZpZy9yczYwMDAv dnN4Lm1kIChWU1hfSSk6IE5ldyBpdGVyYXRvciBmb3IgaW50ZWdlciBtb2Rlcy4KKwkoVlNYX0wp OiBSZW9yZGVyIGl0ZXJhdG9yLgorCShseF88bW9kZT5fdnN4KTogRGVsZXRlLCBubyBsb25nZXIg bmVlZGVkLgorCShzdHhfPG1vZGU+X3ZzeCk6IERpdHRvLgorCShhbGwgaW5zbnMpOiBDaGFuZ2Ug dG8gdXNlIHZzeF88bmFtZT4gaW5zdGVhZCBvZiA8bmFtZT5fdnN4IGZvcgorCWNvbnNpc3RhbmN5 IHdpdGggdGhlIG90aGVyIHJzNjAwMCBtZCBmaWxlcy4gIENoYW5nZSB0byB1c2UgdGhlIG5ldwor CSJ3IiBjb25zdHJhaW50cyBmb3IgYWxsIGluc25zLiAgQ2hhbmdlIHRvIHVzZSByczYwMDBfdmVj dG9yX2luZm8KKwlkZWNpZGluZyB3aGV0aGVyIHRvIGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIG9y IG5vdC4KKwkodnN4X21vdjxtb2RlPik6IFJld3JpdGUgY29uc3RyYWludHMgc28gR1BSIHJlZ2lz dGVycyBhcmUgbm90CisJY2hvc2VuIGFzIHJlbG9hZCB0YXJnZXRzLiAgU3BsaXQgaW50ZWdlciB2 ZWN0b3IgbG9hZHMgaW50byBhCisJc2VwYXJhdGUgaW5zbiwgYW5kIGZhdm9yIHRoZSBhbHRpdmVj IHJlZ2lzdGVyIG92ZXIgdGhlIFZTWCBmcAorCXJlZ2lzdGVycy4KKwkodnN4X2ZtYWRkPG1vZGU+ NCk6IFVzZSA8bW9kZT4sIG5vdCA8dHlwZT4uCisJKHZzeF9mbXN1Yjxtb2RlPjQpOiBEaXR0by4K KwkodnN4X2VxPG1vZGU+KTogTmV3IGluc25zIGZvciBWMkRGL1Y0U0YgdmVjdG9yIGNvbXBhcmUu CisJKHZzeF9ndDxtb2RlPik6IERpdHRvLgorCSh2c3hfZ2U8bW9kZT4pOiBEaXR0by4KKwkodnN4 X3ZzZWw8bW9kZT4pOiBOZXcgaW5zbnMgZm9yIFZTWCB2ZWN0b3Igc2VsZWN0LgorCSh2c3hfeHhw ZXJtZGkpOiBOZXcgaW5zbiBmb3IgREYgcGVybXV0ZS4KKwkodnN4X3NwbGF0djJkZik6IE5ldyBp bnNuIGZvciBERiBzcGxhdCBzdXBwb3J0LgorCSh2c3hfeHhtcmdsdyk6IE5ldyBpbnNucyBmb3Ig REYgaW50ZXJsZWF2ZS4KKwkodnN4X3h4bXJnaHcpOiBEaXR0by4KKworCSogY29uZmlnL3JzNjAw MC9yczAwMC5oIChlbnVtIHJzNjAwMF92ZWN0b3IpOiBOZXcgZW51bSB0bworCWRlc2NyaWJlIHdo aWNoIHZlY3RvciB1bml0IGlzIGJlaW5nIHVzZWQuCisJKHN0cnVjdCByczYwMDBfdmVjdG9yX3N0 cnVjdCk6IE5ldyBzdHJ1Y3QgdG8gZGVzY3JpYmUgdGhlIHZhcmlvdXMKKwlhc3BlY3RzIGFib3V0 IHRoZSBjdXJyZW50IHZlY3RvciBpbnN0cnVjdGlvbiBzZXQuCisJKHJzNjAwMF92ZWN0b3JfaW5m byk6IE5ldyBnbG9iYWwgdG8gZGVzY3JpYmUgdGhlIGN1cnJlbnQgdmVjdG9yCisJaW5zdHJ1Y3Rp b24gc2V0LgorCShTTE9XX1VOQUxJR05FRF9BQ0NFU1MpOiBJZiByczYwMDBfdmVjdG9yX2luZm8g aGFzIGFsaWdubWVudAorCWluZm9ybWF0aW9uIGZvciBhIHR5cGUsIHVzZSB0aGF0LgorCShWU1hf VkVDVE9SX01PVkVfTU9ERSk6IE5ldyBtYWNybyBmb3IgYWxsIFZTWCB2ZWN0b3JzIHRoYXQgYXJl CisJc3VwcG9ydGVkIGJ5IG1vdmUgaW5zdHJ1Y3Rpb25zLgorCShWU1hfTU9WRV9NT0RFKTogTmV3 IG1hY3JvIGZvciBhbGwgVlNYIG1vdmVzLgorCShlbnVtIHJzNjAwMF9idWlsdGlucyk6IEFkZCBW MkRJL1YyREYgdmVjdG9yIHNlbGVjdCBhbmQgcGVybXV0ZQorCWJ1aWx0aW5zLgorCShyczYwMDBf YnVpbHRpbl90eXBlX2luZGV4KTogQWRkIG5ldyB0eXBlcyBmb3IgVlNYIHZlY3RvcnMuCisJKHJz NjAwMF92c3hfdjRzZl9yZWdjbGFzcyk6IE5ldyBnbG9iYWwgdG8gaG9sZCBWU1ggcmVnaXN0ZXIK KwljbGFzcy4KKwkocnM2MDAwX3ZzeF92MmRmX3JlZ2NsYXNzKTogRGl0dG8uCisJKHJzNjAwMF92 c3hfZGZfcmVnY2xhc3MpOiBEaXR0by4KKwkocnM2MDAwX3ZzeF9pbnRfcmVnY2xhc3MpOiBEaXR0 by4KKwkocnM2MDAwX3ZzeF9sb2dpY2FsX3JlZ2NsYXNzKTogRGl0dG8uCisJKHJzNjAwMF92c3hf YW55X3JlZ2NsYXNzKTogRGl0dG8uCisKKwkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCAoVU5T UEVDX1ZDTVAqKTogRGVsZXRlIHVuc3BlYworCWNvbnN0YW50cyBubyBsb25nZXIgbmVlZGVkLgor CShVTlNQRUNfVlNFTCopOiBEaXR0by4KKwkoYWx0aXZlY19sdnhfPG1vZGU+KTogRGVsZXRlLCBu byBsb25nZXIgbmVlZGVkLgorCShhbHRpdmVjX3N0dnhfPG1vZGU+KTogRGl0dG8uCisJKGFsbCBp bnNucyk6IFJld3JpdGUgdG8gYmUgY29uc2lzdGFudCBvZiBhbHRpdmVjXzxpbnNuPi4gIFN3aXRj aAorCXRvIHVzZSByczYwMDBfdmVjdG9yX2luZm8gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gaXNz dWUgdG8gdGhlCisJYWx0aXZlYyBmb3JtIG9mIHRoZSBpbnN0cnVjdGlvbnMuCisJKG1vdjxtb2Rl Pl9hbHRpdmVjKTogUmV3cml0ZSBjb25zdHJhaW50cyBzbyBHUFIgcmVnaXN0ZXJzIGFyZSBub3QK KwljaG9zZW4gYXMgcmVsb2FkIHRhcmdldHMuCisJKGFsdGl2ZWNfZXE8bW9kZT4pOiBSZXdyaXRl IHZlY3RvciBjb25kaXRpb25hbHMsIHBlcm11dGUsIHNlbGVjdAorCXRvIHVzZSBpdGVyYXRvcnMs IGFuZCB3b3JrIHdpdGggVlNYLgorCShhbHRpdmVjX2d0PG1vZGU+KTogRGl0dG8uCisJKGFsdGl2 ZWNfZ2U8bW9kZT4pOiBEaXR0by4KKwkoYWx0aXZlY19ndHU8bW9kZT4pOiBEaXR0by4KKwkoYWx0 aXZlY19nZXU8bW9kZT4pOiBEaXR0by4KKwkoYWx0aXZlY192c2VsPG1vZGU+KTogRGl0dG8uCisJ KGFsdGl2ZWNfdnBlcm1fPG1vZGU+KTogRGl0dG8uCisJKGFsdGl2ZWNfdmNtcCopOiBSZXdyaXRl IHRvIG5vdCB1c2UgdW5zcGVjcyBhbnkgbW9yZSwgYW5kIHVzZSBtb2RlCisJaXRlcmF0b3JzLCBh ZGQgVlNYIHN1cHBvcnQuCisJKHZjb25kdjRzaSk6IE1vdmUgdG8gdmVjdG9yLm1kLgorCSh2Y29u ZHV2NHNpKTogRGl0dG8uCisJKHZjb25kdjhoaSk6IERpdHRvLgorCSh2Y29uZHV2OGhpKTogRGl0 dG8uCisJKHZjb25kdjE2cWkpOiBEaXR0by4KKwkodmNvbmR1djE2cWkpOiBEaXR0by4KKworCSog Y29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG5lZ2RmMl9mcHIpOiBBZGQgc3VwcG9ydCBmb3IKKwkt bXZzeC1zY2FsYXItZG91YmxlLgorCShhYnNkZjJfZnByKTogRGl0dG8uCisJKG5hYnNkZjJfZnBy KTogRGl0dG8uCisJKGFkZGRmM19mcHIpOiBEaXR0by4KKwkoc3ViZGYzX2Zwcik6IERpdHRvLgor CShtdWxkZjNfZnByKTogRGl0dG8uCisJKGRpdmRmM19mcHIpOiBEaXR0by4KKwkoREYgbXVsdGlw bHkvYWRkIHBhdHRlcm5zKTogRGl0dG8uCisJKHNxcnRkZjIpOiBEaXR0by4KKwkobW92ZGZfaGFy ZGZsb2F0MzIpOiBBZGQgVlNYIHN1cHBvcnQuCisJKG1vdmRmX2hhcmRmbG9hdDY0X21mcGdwcik6 IERpdHRvLgorCShtb3ZkZl9oYXJkZmxvYXQ2NCk6IERpdHRvLgorCisJKiBkb2MvaW52b2tlLnRl eGkgKC1tdnN4LSopOiBBZGQgbmV3IHZzeCBzd2l0Y2hlcy4KKworMjAwOS0wMi0xMyAgTWljaGFl bCBNZWlzc25lciAgPG1laXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KKworCSogY29uZmlnLmlu OiBVcGRhdGUgdHdvIGNvbW1lbnRzLgorCisJKiBjb25maWcvcnM2MDAwL3ZlY3Rvci5tZCAoVkVD X0wpOiBBZGQgVjJESSB0eXBlLgorCShtb3ZlPG1vZGU+KTogVXNlIFZFQ19MIHRvIGdldCBhbGwg dmVjdG9yIHR5cGVzLCBhbmQgZGVsZXRlIHRoZQorCXNlcGFyYXRlIGludGVnZXIgbW9kZSBtb3Zl IGRlZmluaXRpb25zLgorCSh2ZWN0b3JfbG9hZF88bW9kZT4pOiBEaXR0by4KKwkodmVjdG9yX3N0 b3JlXzxtb2RlPik6IERpdHRvLgorCSh2ZWN0b3IgbW92ZSBzcGxpdHRlcnMpOiBNb3ZlIEdQUiBy ZWdpc3RlciBzcGxpdHRlcnMgaGVyZSBmcm9tCisJYWx0aXZlYy5tZC4KKworCSogY29uZmlnL3Jz NjAwMC9jb25zdHJhaW50cy5tZCAoImoiKTogQWRkICJqIiBjb25zdHJhaW50IHRvIG1hdGNoCisJ dGhlIG1vZGUncyAwIHZhbHVlLgorCisJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBf aGFyZF9yZWdub19ucmVnc19pbnRlcm5hbCk6IE9ubHkKKwljb3VudCB0aGUgRlBScyBhcyBiZWlu ZyAxMjggYml0cyBpZiB0aGUgbW9kZSBpcyBhIFZTWCB0eXBlLgorCShyczYwMDBfaGFyZF9yZWdu b19tb2RlX29rKTogRGl0dG8uCisJKHJzNjAwMF9lbWl0X21pbm1heCk6IFVzZSBuZXcgVlNYX01P REUgaW5zdGVhZCBvZiBzZXBhcmF0ZSB0ZXN0cy4KKworCSogY29uZmlnL3JzNjAwMC92c3gubWQg KFZTWF9MKTogQWRkIFYyREltb2RlLgorCShWU20pOiBSZW5hbWUgZnJvbSBWU1hfbWVtLCBhZGQg bW9kZXMgZm9yIGludGVnZXIgdmVjdG9ycy4gIENoYW5nZQorCWFsbCB1c2VzLgorCShWU3MpOiBS ZW5hbWUgZnJvbSBWU1hfb3AsIGFkZCBtb2RlcyBmb3IgaW50ZWdlciB2ZWN0b3JzLiAgQ2hhbmdl CisJYWxsIHVzZXMuCisJKFZTcik6IE5ldyBtb2RlIGFkZHJlc3MgdG8gZ2l2ZSB0aGUgcmVnaXN0 ZXIgY2xhc3MuCisJKG1vdjxtb2RlPl92c3gpOiBVc2UgVlNyIHRvIGdldCB0aGUgcmVnaXN0ZXIg cHJlZmVyZW5jZXMuICBBZGQKKwlleHBsaWNpdCAwIG9wdGlvbi4KKwkoc2NhbGFyIGRvdWJsZSBw cmVjaXNpb24gcGF0dGVybnMpOiBEbyBub3QgdXNlIHYgcmVnaXN0ZXIKKwljb25zdHJhaW50IHJp Z2h0IG5vdy4KKwkobG9naWNhbCBwYXR0ZXJucyk6IFVzZSBWU3IgbW9kZSBhdHRyaWJ1dGUgZm9y IHJlZ2lzdGVyCisJcHJlZmVyZW5jZXMuCisKKwkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKFZT WF9TQ0FMQVJfTU9ERSk6IE5ldyBtYWNyby4KKwkoVlNYX01PREUpOiBEaXR0by4KKworCSogY29u ZmlnL3JzNjAwMC9hbHRpdmVjLm1kIChWTSk6IE5ldyBtb2RlIGl0ZXJhdG9yIGZvciBtZW1vcnkK KwlvcGVyYXRpb25zLiAgQWRkIFYyREkgbW9kZS4KKwkobW92X2FsdGl2ZWNfPG1vZGU+KTogRGlz YWJsZSBpZiAtbXZzeCBmb3IgYWxsIG1vZGVzLCBub3QganVzdAorCVY0U0Ztb2RlLgorCShncHIg bW92ZSBzcGxpdHRlcnMpOiBNb3ZlIHRvIHZlY3Rvci5tZC4KKwkoYW5kPG1vZGU+M19hbHRpdmVj KTogVXNlIFZNIG1vZGUgaXRlcmF0b3IsIG5vdCBWLgorCShpb3I8bW9kZT4zX2FsdGl2ZWMpOiBE aXR0by4KKwkoeG9yPG1vZGU+M19hbHRpdmVjKTogRGl0dG8uCisJKG9uZV9jbXBsPG1vZGU+Ml9h bHRpdmVjKTogRGl0dG8uCisJKG5vcjxtb2RlPjNfYWx0aXZlYyk6IERpdHRvLgorCShhbmRjPG1v ZGU+M19hbHRpdmVjKTogRGl0dG8uCisKKwkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChtb3Zk Zl9oYXJkZmxvYXQpOiBCYWNrIG91dCB2c3ggY2hhbmdlcy4KKwkobW92ZGZfaGFyZGZsb2F0NjRf dnN4KTogRGVsZXRlLgorCisyMDA5LTAyLTEyICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJA bGludXgudm5ldC5pYm0uY29tPgorCisJKiBjb25maWcvcnM2MDAwL3ZlY3Rvci5tZDogTmV3IGZp bGUgdG8gYWJzdHJhY3Qgb3V0IHRoZSBleHBhbmRlcnMKKwlmb3IgdmVjdG9yIG9wZXJhdGlvbnMg ZnJvbSBhbGl0dmVjLm1kLgorCisJKiBjb25maWcvcnM2MDAwL3ByZWRpY2F0ZXMubWQgKHZzeF9y ZWdpc3Rlcl9vcGVyYW5kKTogTmV3CisJcHJlZGljYXRlIHRvIG1hdGNoIFZTWCByZWdpc3RlcnMu CisJKHZmbG9hdF9vcGVyYW5kKTogTmV3IHByZWRpY2F0ZSB0byBtYXRjaCByZWdpc3RlcnMgdXNl ZCBmb3IgdmVjdG9yCisJZmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9ucy4KKwkodmludF9vcGVyYW5k KTogTmV3IHByZWRpY2F0ZSB0byBtYXRjaCByZWdpc3RlcnMgdXNlZCBmb3IgdmVjdG9yCisJaW50 ZWdlciBvcGVyYXRpb25zLgorCSh2bG9naWNhbF9vcGVyYW5kKTogTmV3IHByZWRpY2F0ZSB0byBt YXRjaCByZWdpc3RlcnMgdXNlZCBmb3IKKwl2ZWN0b3IgbG9naWNhbCBvcGVyYXRpb25zLgorCisJ KiBjb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaCAocnM2MDAwX2hhcmRfcmVnbm9fbnJlZ3Mp OiBDaGFuZ2UKKwlmcm9tIGEgZnVuY3Rpb24gdG8gYW4gYXJyYXkuCisJKHJzNjAwMF9jbGFzc19t YXhfbnJlZ3MpOiBBZGQgZGVjbGFyYXRpb24uCisKKwkqIGNvbmZpZy9yczYwMDAvdC1yczYwMDAg KE1EX0lOQ0xVREVTKTogRGVmaW5lIHRvIGluY2x1ZGUgYWxsIG9mCisJdGhlIC5tZCBmaWxlcyBp bmNsdWRlZCBieSByczYwMDAubWQuCisKKwkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAw MF9jbGFzc19tYXhfbnJlZ3MpOiBOZXcgZ2xvYmFsCisJYXJyYXkgdG8gcHJlLWNhbGN1bGF0ZSBD TEFTU19NQVhfTlJFR1MuCisJKHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzKTogQ2hhbmdlIGZyb20g YSBmdW5jdGlvbiB0byBhbiBhcnJheSB0bworCXByZS1jYWxjdWxhdGUgSEFSRF9SRUdOT19OUkVH Uy4KKwkocnM2MDAwX2hhcmRfcmVnbm9fbnJlZ3NfaW50ZXJuYWwpOiBSZW5hbWUgZnJvbQorCXJz NjAwMF9oYXJkX3JlZ25vX25yZWdzIGFuZCBhZGQgVlNYIHN1cHBvcnQuCisJKHJzNjAwMF9oYXJk X3JlZ25vX21vZGVfb2spOiBBZGQgVlNYIHN1cHBvcnQsIGFuZCBzd2l0Y2ggdG8gdXNlCisJbG9v a3VwIHRhYmxlIHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzLgorCShyczYwMDBfaW5pdF9oYXJkX3Jl Z25vX21vZGVfb2spOiBBZGQgaW5pdGlhbGl6YXRpb24gb2YKKwlyczYwMDBfaGFyZF9yZWdub19u cmVncywgYW5kIHJzNjAwMF9jbGFzc19tYXhfbnJlZ3MgZ2xvYmFsCisJYXJyYXlzLgorCShyczYw MDBfb3ZlcnJpZGVfb3B0aW9ucyk6IEFkZCBzb21lIHdhcm5pbmdzIGZvciB0aGluZ3MgdGhhdCBh cmUKKwlpbmNvbXBhdGlibGUgd2l0aCAtbXZzeC4KKwkocnM2MDAwX2xlZ2l0aW1hdGVfb2Zmc2V0 X2FkZHJlc3NfcCk6IEFkZCBWMkRGbW9kZS4KKwkocnM2MDAwX2NvbmRpdGlvbmFsX3JlZ2lzdGVy X3VzYWdlKTogRW5hYmxlIGFsdGl2ZWMgcmVnaXN0ZXJzIGlmCisJLW12c3guCisJKGJkZXNjXzJh cmcpOiBDaGFuZ2UgdGhlIG5hbWUgb2YgdGhlIG5vciBwYXR0ZXJuLgorCShhbHRpdmVjX2V4cGFu ZF9sZF9idWlsdGluKTogQ2hhbmdlIHRoZSBuYW1lcyBvZiB0aGUgbG9hZAorCXBhdHRlcm5zIHRv IGJlIHRoZSBnZW5lcmljIHZlY3RvciBsb2Fkcy4KKwkoYWx0aXZlY19leHBhbmRfc3RfYnVpbHRp bik6IENoYW5nZSB0aGUgbmFtZXMgb2YgdGhlIHN0b3JlCisJcGF0dGVybnMgdG8gYmUgdGhlIGdl bmVyaWMgdmVjdG9yIHN0b3Jlcy4KKwkocHJpbnRfb3BlcmFuZCk6IEFkZCAneCcgdG8gcHJpbnQg b3V0IGEgVlNYIHJlZ2lzdGVyIHByb3Blcmx5LgorCShyczYwMDBfZW1pdF9taW5tYXgpOiBEaXJl Y3RseSBlbWl0IHRoZSBtaW4vbWF4IHBhdHRlcm5zIGZvciBWU1gKKwlhbmQgQWx0aXZlYy4KKwor CSogY29uZmlnL3JzNjAwMC92c3gubWQ6IE5ldyBmaWxlIHRvIGFkZCBhbGwgb2YgdGhlIFZTWCBz cGVjaWZpYworCWluc3RydWN0aW9ucy4gIEFkZCBzdXBwb3J0IGZvciBsb2FkLCBzdG9yZSwgbW92 ZSwgYWRkLCBzdWJ0cmFjdCwKKwltdWx0aXBseSwgbXVsdGlwbHkvYWRkLCBkaXZpZGUsIG5lZ2F0 ZSwgYWJzb2x1dGUgdmFsdWUsIG1heGltdW0sCisJbWluaW11bSwgc3FydCwgYW5kLCBvciwgeG9y LCBhbmQgY29tcGxlbnQsIHhvciwgb25lJ3MgY29tcGxlbWVudCwKKwlhbmQgbm9yIGluc3RydWN0 aW9ucy4KKworCSogY29uZmlnL3JzNjAwMC9yczYwMDAuaCAoVU5JVFNfUEVSX1ZTWF9XT1JEKTog RGVmaW5lLgorCShWU1hfUkVHTk9fUCk6IE5ldyBtYWNybyBmb3IgVlNYIHJlZ2lzdGVycy4KKwko VkZMT0FUX1JFR05PKTogTmV3IG1hY3JvIGZvciB2ZWN0b3IgZmxvYXRpbmcgcG9pbnQgcmVnaXN0 ZXJzLgorCShWSU5UX1JFR05PKTogTmV3IG1hY3JvIGZvciB2ZWN0b3IgaW50ZWdlciByZWdpc3Rl cnMuCisJKFZMT0dJQ0FMX1JFR05PKTogTmV3IG1hY3JvIGZvciB2ZWN0b3IgbG9naWNhbCByZWdp c3RlcnMuCisJKFZTWF9WRUNUT1JfTU9ERSk6IE5ldyBtYWNybyBmb3IgdmVjdG9yIG1vZGVzIHN1 cHBvcnRlZCBieSBWU1guCisJKEhBUkRfUkVHTk9fTlJFR1MpOiBTd2l0Y2ggdG8gdXNpbmcgcHJl LWNvbXB1dGVkIHRhYmxlLgorCShDTEFTU19NQVhfTlJFR1MpOiBEaXR0by4KKworCSogY29uZmln L3JzNjAwMC9hbHRpdmVjLm1kIChhbHRpdmVjX2x2eF88bW9kZT4pOiBEZWxldGUsIHJlcGFsY2Vk CisJYnkgZXhwYW5kZXJzIGluIHZlY3Rvci5tZC4KKwkoYWx0aXZlY19zdHZ4Xzxtb2RlPik6IERp dHRvLgorCShtb3Y8bW9kZT4pOiBEaXR0by4KKwkobW92X2FsdGl2ZWNfPG1vZGU+KTogUmVuYW1l IGZyb20gbW92PG1vZGU+X2ludGVybmFsLCBhbmQgcHJlZmVyCisJdXNpbmcgVlNYIGlmIGF2YWls YWJsZS4KKwkoYWRkdjRzZjNfYWx0aXZlYyk6IFJlbmFtZSBmcm9tIHN0YW5kYXJkIG5hbWUsIGFu ZCBwcmVmZXIgdXNpbmcKKwlWU1ggaWYgYXZhaWxhYmxlLgorCShzdWJ2NHNmM19hbHRpdmVjKTog RGl0dG8uCisJKG11bHY0c2YzX2FsdGl2ZWMpOiBEaXR0by4KKwkoc21heHY0c2YzX2FsdGl2ZWMp OiBEaXR0by4KKwkoc21pbnY0c2YzX2FsdGl2ZWMpOiBEaXR0by4KKwkoYW5kPG1vZGU+M19hbHRp dmVjKTogRGl0dG8uCisJKGlvcjxtb2RlPjNfYWx0aXZlYyk6IERpdHRvLgorCSh4b3I8bW9kZT4z X2FsdGl2ZWMpOiBEaXR0by4KKwkob25lX2NtcGw8bW9kZT4yKTogRGl0dG8uCisJKG5vcjxtb2Rl PjNfYWx0aXZlYyk6IERpdHRvLgorCShhbmRjPG1vZGU+M19hbHRpdmVjKTogRGl0dG8uCisJKGFi c3Y0c2YyX2FsdGl2ZWMpOiBEaXR0by4KKwkodmNvbmR2NHNmKTogTW92ZSB0byB2ZWN0b3IubWQu CisKKwkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChuZWdkZjJfZnByKTogQWRkICFUQVJHRVRf VlNYIHRvIHByZWZlcgorCXRoZSB2ZXJzaW9uIGluIHZzeC5tZCBpZiAtbXZzeCBpcyBhdmFpbGFi bGUuCisJKGFic2RmMl9mcHIpOiBEaXR0by4KKwkobmFic2RmMl9mcHIpOiBEaXR0by4KKwkoYWRk ZGYzX2Zwcik6IERpdHRvLgorCShzdWJkZjNfZnByKTogRGl0dG8uCisJKG11bGRmM19mcHIpOiBE aXR0by4KKwkobXVsdGlwbHkvYWRkIHBhdHRlcm5zKTogRGl0dG8uCisJKG1vdmRmX2hhcmRmbG9h dDY0KTogRGlzYWJsZSBpZiAtbXZzeC4KKwkobW92ZGZfaGFyZGZsb2F0NjRfdnN4KTogQ2xvbmUg ZnJvbSBtb3ZkZl9oYXJkZmxvYXQ2NCBhbmQgYWRkIFZTWAorCXN1cHBvcnQuCisJKHZlY3Rvci5t ZCk6IEluY2x1ZGUgbmV3IC5tZCBmaWxlLgorCSh2c3gubWQpOiBEaXR0by4KKworMjAwOS0wMi0x MSAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KKworCSog ZG9jL2ludm9rZS50ZXhpICgtbXZzeCwgLW1uby12c3gpOiBEb2N1bWVudCBuZXcgc3dpdGNoZXMu CisKKwkqIGNvbmZpZy9yczYwMDAvbGludXg2NC5vcHQgKC1tcHJvZmlsZS1rZXJuZWwpOiBNb3Zl IHRvIGJlaW5nIGEKKwl2YXJpYWJsZSB0byByZWR1Y2UgdGhlIG51bWJlciBvZiB0YXJnZXQgZmxh ZyBiaXRzLgorCSogY29uZmlnL3JzNjAwMC9zeXN2NC5vcHQgKC1tYml0LWFsaWduKTogRGl0dG8u CisJKC1tYml0LXdvcmQpOiBEaXR0by4KKwkoLW1yZWduYW1lcyk6IERpdHRvLgorCSogY29uZmln L3JzNjAwMC9yczYwMDAub3B0ICgtbXVwZGF0ZSwgLW1uby11cGRhdGUpOiBEaXR0by4KKwkoLW12 c3gpOiBOZXcgc3dpdGNoLCBlbmFibGUgVlNYIHN1cHBvcnQuCisKKwkqIGNvbmZpZy9yczYwMDAv cnM2MDAwLWMuYyAocnM2MDAwX2NwdV9jcHBfYnVpbHRpbnMpOiBEZWZpbmUKKwlfX1ZTWF9fIGlm IHRoZSB2ZWN0b3Ivc2NhbGFyIGluc3RydWN0aW9uIHNldCBpcyBhdmFpbGFibGUuCisKKwkqIGNv bmZpZy9yczYwMDAvbGludXg2NC5oIChTVUJTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9OUyk6IENo YW5nZQorCXRvIGFsbG93IC1tcHJvZmlsZS1rZXJuZWwgdG8gYmUgYSB2YXJpYWJsZS4KKworCSog Y29uZmlnL3JzNjAwMC9yczYwMDAuYyAocHJvY2Vzc29yX3RhcmdldF90YWJsZSk6IFNldCAtbXZz eCBmb3IKKwlwb3dlcjcgY3B1cy4KKwkoUE9XRVJQQ19NQVNLUyk6IEFkZCAtbXZzeC4KKworCSog Y29uZmlnL3JzNjAwMC9yczYwMDAuaCAoQURESVRJT05BTF9SRUdJU1RFUl9OQU1FUyk6IEFkZCBW U1gKKwlyZWdpc3RlciBuYW1lcyBmb3IgdGhlIHJlZ2lzdGVycyB0aGF0IG92ZXJsYXAgd2l0aCB0 aGUgZmxvYXRpbmcKKwlwb2ludCBhbmQgYWx0aXZlYyByZWdpc3RlcnMuCisKKwkqIGNvbmZpZy9y czYwMDAvc3lzdjQuaCAoU1VCVEFSR0VUX09WRVJSSURFX09QVElPTlMpOgorCVRBUkdFVF9OT19C SVRGSUVMRF9XT1JEIGlzIG5vdyBhIHZhcmlhYmxlLCBub3QgYSB0YXJnZXQgbWFzay4KKworMjAw OS0wMi0xMSAgUGF0IEhhdWdlbiAgPHB0aGF1Z2VuQHVzLmlibS5jb20+CisJICAgIE1pY2hhZWwg TWVpc3NuZXIgIDxtZWlzc25lckBsaW51eC52bmV0LmlibS5jb20+CisKKwkqIGRvYy9pbnZva2Uu dGV4aSAoLW1wb3BjbnRkLCAtbW5vLXBvcGNudGQpOiBEb2N1bWVudCBuZXcKKwlzd2l0Y2hlcy4K KworCSogY29uZmlndXJlLmFjIChwb3dlcnBjKi0qLSopOiBUZXN0IGZvciB0aGUgYXNzZW1ibGVy IGhhdmluZyB0aGUKKwlwb3BjbnRkIGluc3RydWN0aW9uLgorCSogY29uZmlndXJlOiBSZWdlbmVy YXRlLgorCSogY29uZmlnLmluIChIQVZFX0FTX1BPUENOVEQpOiBBZGQgZGVmYXVsdCB2YWx1ZSBm b3IgY29uZmlndXJlCisJdGVzdC4KKworCSogY29uZmlnL3JzNjAwMC9wb3dlcjcubWQ6IE5ldyBm aWxlLgorCisJKiBjb25maWcvcnM2MDAwL3JzNjAwMC1jLmMgKHJzNjAwMF9jcHVfY3BwX2J1aWx0 aW5zKTogRGVmaW5lCisJX0FSQ0hfUFdSNyBpZiB0aGUgcG9wY250ZCBpbnN0cnVjdGlvbiBpcyBh dmFpbGFibGUuCisKKwkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm9wdCAoLW1wb3BjbnRkKTogTmV3 IHN3aXRjaCB0bworCWVuYWJsZS9kaXNhYmxlIHRoZSB1c2Ugb2YgdGhlIHBvcGNudGQgYW5kIHBv cGNudHcgaW5zdHJ1Y3Rpb25zLgorCSgtbWZ1c2VkLW1hZGQsIC1tbm8tZnVzZWQtbWFkZCk6IE1v dmUgdG8gYmVpbmcgYSBzZXBhcmF0ZSB2YXJpYWJsZQorCWJlY2F1c2Ugd2UgYXJlIG91dCBvZiBt YXNrIGJpdHMuCisKKwkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHBvd2VyN19jb3N0KTogRGVm aW5lLgorCShyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IEFkZCBQb3dlcjcgc3VwcG9ydC4KKwko cnM2MDAwX2lzc3VlX3JhdGUpOiBEaXR0by4KKwkoaW5zbl9tdXN0X2JlX2ZpcnN0X2luX2dyb3Vw KTogRGl0dG8uCisJKGluc25fbXVzdF9iZV9sYXN0X2luX2dyb3VwKTogRGl0dG8uCisJKHJzNjAw MF9lbWl0X3BvcGNvdW50KTogQWRkIHN1cHBvcnQgZm9yIHVzaW5nIHRoZSBwb3BjbnR3IGFuZAor CXBvcGNudGQgaW5zdHJ1Y3Rpb25zLgorCisJKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChBU01f Q1BVX1BPV0VSN19TUEVDKTogU3dpdGNoIHRvIHVzaW5nCisJcG9wY250ZCBhcyB0aGUgdGVzdCBm b3IgYSBwb3dlcjcgYXNzZW1ibGVyIGluc3RlYWQgb2YgdmVjdG9yCisJc2NhbGFyIGluc3RydWN0 aW9ucy4KKwkqIChUQVJHRVRfUE9QQ05URCk6IElmIGFzc2VtYmxlciBkb2VzIG5vdCBzdXBwb3J0 IHRoZSBwb3BjbnRkCisJaW5zdHJ1Y3Rpb24sIGRpc2FibGUgdXNpbmcgaXQuCisJKHByb2Nlc3Nv cl90eXBlKTogQWRkIFBvd2VyNyBlbnRyeS4KKworCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQg KGRlZmluZV9hdHRyICJjcHUiKTogIEFkZCBwb3dlcjcuCisJKHBvd2VyNy5tZCk6IEluY2x1ZGUg aXQuCisJKGFuZGkuL2FuZGlzLi9ub3IuIHBhdHRlcm5zKTogQ2hhbmdlIGluc24gdHlwZSB0byBm YXN0X2NvbXBhcmUuCisJKHBvcGNudHdzaTIpOiBBZGQgcG9wY250dyBzdXBwb3J0LgorCShwb3Bj bnRkZGkyKTogQWRkIHBvcGNudGQgc3VwcG9ydC4KKwordGVzdHN1aXRlLworMjAwOS0wMy0wMSAg TWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KKworCSogZ2Nj LnRhcmdldC9wb3dlcnBjL3ZzeC12ZWN0b3ItMS5jOiBGaXggdHlwb3MuCisJKiBnY2MudGFyZ2V0 L3Bvd2VycGMvdnN4LXZlY3Rvci0yLmM6IERpdHRvLgorCisJKiBnY2MudGFyZ2V0L3Bvd2VycGMv dnN4LXZlY3Rvci0zLmM6IE5ldyBmaWxlLCB0ZXN0IF9fdmVjdG9yCisJZG91YmxlLgorCisJKiBn Y2MudGFyZ2V0L3Bvd2VycGMvdnN4LXZlY3Rvci00LmM6IE5ldyBmaWxlLCB0ZXN0IF9fdmVjdG9y IGZsb2F0CisJdXNlcyBWU1ggaW5zdHJ1Y3Rpb25zIGlmIC1tdnN4LgorCisJKiBnY2MuZGcvdm14 L3ZteC5leHAgKERFRkFVTFRfVk1YQ0xGQUdTKTogQWRkIC1tbm8tdnN4LgorCisJKiBsaWIvdGFy Z2V0LXN1cHBvcnRzLmV4cCAoY2hlY2tfdnN4X2h3X2F2YWlsYWJsZSk6IE5ldyBmdW5jdGlvbgor CXRvIHRlc3QgZm9yIFZTWC4KKwkoY2hlY2tfdm14X2h3X2F2YWlsYWJsZSk6IEFkZCAtbW5vLXZz eCB0byBvcHRpb25zLgorCShjaGVja19lZmZlY3RpdmVfdGFyZ2V0X3Bvd2VycGNfdnN4X29rKTog TmV3IGZ1bmN0aW9uIHRvIGNoZWNrIGlmCisJdGhlIHBvd2VycGMgY29tcGlsZXIgY2FuIHN1cHBv cnQgVlNYLgorCisyMDA5LTAyLTI3ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAbGludXgu dm5ldC5pYm0uY29tPgorCisJKiBnY2MudGFyZ2V0L3Bvd2VycGMvdnN4LXZlY3Rvci0xLmM6IE5l dyBmaWxlIHRvIHRlc3QgVlNYIGNvZGUKKwlnZW5lcmF0aW9uLgorCSogZ2NjLnRhcmdldC9wb3dl cnBjL3ZzeC12ZWN0b3ItMi5jOiBEaXR0by4KKworMjAwOS0wMi0wMSBNaWNoYWVsIE1laXNzbmVy ICA8bWVpc3NuZXJAbGludXgudm5ldC5pYm0uY29tPgorCisJKiBnY2MudGFyZ2V0L3Bvd2VycGMv cG9wY291bnQtMi5jOiBOZXcgZmlsZSBmb3IgcG93ZXI3IHN1cHBvcnQuCisJKiBnY2MudGFyZ2V0 L3Bvd2VycGMvcG9wY291bnQtMy5jOiBEaXR0by4KKworLS0tIGdjYy9kb2MvaW52b2tlLnRleGkJ KC4uLi90cnVuaykJKHJldmlzaW9uIDE0NDU1NykKKysrKyBnY2MvZG9jL2ludm9rZS50ZXhpCSgu Li4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlzaW9uIDE0NDY5MikKK0BAIC03 MTIsNyArNzEyLDggQEAgU2VlIFJTLzYwMDAgYW5kIFBvd2VyUEMgT3B0aW9ucy4KKyAtbWFsdGl2 ZWMgIC1tbm8tYWx0aXZlYyBAZ29sCisgLW1wb3dlcnBjLWdwb3B0ICAtbW5vLXBvd2VycGMtZ3Bv cHQgQGdvbAorIC1tcG93ZXJwYy1nZnhvcHQgIC1tbm8tcG93ZXJwYy1nZnhvcHQgQGdvbAorLS1t bWZjcmYgIC1tbm8tbWZjcmYgIC1tcG9wY250YiAgLW1uby1wb3BjbnRiICAtbWZwcm5kICAtbW5v LWZwcm5kIEBnb2wKKystbW1mY3JmICAtbW5vLW1mY3JmICAtbXBvcGNudGIgIC1tbm8tcG9wY250 YiAtbXBvcGNudGQgLW1uby1wb3BjbnRkIEBnb2wKKystbWZwcm5kICAtbW5vLWZwcm5kIEBnb2wK KyAtbWNtcGIgLW1uby1jbXBiIC1tbWZwZ3ByIC1tbm8tbWZwZ3ByIC1taGFyZC1kZnAgLW1uby1o YXJkLWRmcCBAZ29sCisgLW1uZXctbW5lbW9uaWNzICAtbW9sZC1tbmVtb25pY3MgQGdvbAorIC1t ZnVsbC10b2MgICAtbW1pbmltYWwtdG9jICAtbW5vLWZwLWluLXRvYyAgLW1uby1zdW0taW4tdG9j IEBnb2wKK0BAIC03MjYsNyArNzI3LDkgQEAgU2VlIFJTLzYwMDAgYW5kIFBvd2VyUEMgT3B0aW9u cy4KKyAtbXN0cmljdC1hbGlnbiAgLW1uby1zdHJpY3QtYWxpZ24gIC1tcmVsb2NhdGFibGUgQGdv bAorIC1tbm8tcmVsb2NhdGFibGUgIC1tcmVsb2NhdGFibGUtbGliICAtbW5vLXJlbG9jYXRhYmxl LWxpYiBAZ29sCisgLW10b2MgIC1tbm8tdG9jICAtbWxpdHRsZSAgLW1saXR0bGUtZW5kaWFuICAt bWJpZyAgLW1iaWctZW5kaWFuIEBnb2wKKy0tbWR5bmFtaWMtbm8tcGljICAtbWFsdGl2ZWMgIC1t c3dkaXYgQGdvbAorKy1tZHluYW1pYy1uby1waWMgIC1tYWx0aXZlYyAtbXN3ZGl2IC1tdnN4IC1t dnN4LXZlY3Rvci1tZW1vcnkgQGdvbAorKy1tdnN4LXZlY3Rvci1mbG9hdCAtbXZzeC12ZWN0b3It ZG91YmxlIEBnb2wKKystbXZzeC1zY2FsYXItZG91YmxlIC1tdnN4LXNjYWxhci1tZW1vcnkgQGdv bAorIC1tcHJpb3JpdGl6ZS1yZXN0cmljdGVkLWluc25zPUB2YXJ7cHJpb3JpdHl9IEBnb2wKKyAt bXNjaGVkLWNvc3RseS1kZXA9QHZhcntkZXBlbmRlbmNlX3R5cGV9IEBnb2wKKyAtbWluc2VydC1z Y2hlZC1ub3BzPUB2YXJ7c2NoZW1lfSBAZ29sCitAQCAtMTM1MTIsNiArMTM1MTUsOCBAQCBUaGVz ZSBAc2FtcHstbX0gb3B0aW9ucyBhcmUgZGVmaW5lZCBmb3IgCisgQGl0ZW14IC1tbm8tbWZjcmYK KyBAaXRlbXggLW1wb3BjbnRiCisgQGl0ZW14IC1tbm8tcG9wY250YgorK0BpdGVteCAtbXBvcGNu dGQKKytAaXRlbXggLW1uby1wb3BjbnRkCisgQGl0ZW14IC1tZnBybmQKKyBAaXRlbXggLW1uby1m cHJuZAorIEBpdGVteCAtbWNtcGIKK0BAIC0xMzUzNiw2ICsxMzU0MSw4IEBAIFRoZXNlIEBzYW1w ey1tfSBvcHRpb25zIGFyZSBkZWZpbmVkIGZvciAKKyBAb3BpbmRleCBtbm8tbWZjcmYKKyBAb3Bp bmRleCBtcG9wY250YgorIEBvcGluZGV4IG1uby1wb3BjbnRiCisrQG9waW5kZXggbXBvcGNudGQK KytAb3BpbmRleCBtbm8tcG9wY250ZAorIEBvcGluZGV4IG1mcHJuZAorIEBvcGluZGV4IG1uby1m cHJuZAorIEBvcGluZGV4IG1jbXBiCitAQCAtMTM1ODUsNiArMTM1OTIsOSBAQCBUaGUgQG9wdGlv bnstbXBvcGNudGJ9IG9wdGlvbiBhbGxvd3MgR0NDCisgZG91YmxlIHByZWNpc2lvbiBGUCByZWNp cHJvY2FsIGVzdGltYXRlIGluc3RydWN0aW9uIGltcGxlbWVudGVkIG9uIHRoZQorIFBPV0VSNSBw cm9jZXNzb3IgYW5kIG90aGVyIHByb2Nlc3NvcnMgdGhhdCBzdXBwb3J0IHRoZSBQb3dlclBDIFYy LjAyCisgYXJjaGl0ZWN0dXJlLgorK1RoZSBAb3B0aW9uey1tcG9wY250ZH0gb3B0aW9uIGFsbG93 cyBHQ0MgdG8gZ2VuZXJhdGUgdGhlIHBvcGNvdW50CisraW5zdHJ1Y3Rpb24gaW1wbGVtZW50ZWQg b24gdGhlIFBPV0VSNyBwcm9jZXNzb3IgYW5kIG90aGVyIHByb2Nlc3NvcnMKKyt0aGF0IHN1cHBv cnQgdGhlIFBvd2VyUEMgVjIuMDYgYXJjaGl0ZWN0dXJlLgorIFRoZSBAb3B0aW9uey1tZnBybmR9 IG9wdGlvbiBhbGxvd3MgR0NDIHRvIGdlbmVyYXRlIHRoZSBGUCByb3VuZCB0bworIGludGVnZXIg aW5zdHJ1Y3Rpb25zIGltcGxlbWVudGVkIG9uIHRoZSBQT1dFUjUrIHByb2Nlc3NvciBhbmQgb3Ro ZXIKKyBwcm9jZXNzb3JzIHRoYXQgc3VwcG9ydCB0aGUgUG93ZXJQQyBWMi4wMyBhcmNoaXRlY3R1 cmUuCitAQCAtMTM2NjMsOSArMTM2NzMsOSBAQCBUaGUgQG9wdGlvbnstbWNwdX0gb3B0aW9ucyBh dXRvbWF0aWNhbGx5CisgZm9sbG93aW5nIG9wdGlvbnM6CisgCisgQGdjY29wdGxpc3R7LW1hbHRp dmVjICAtbWZwcm5kICAtbWhhcmQtZmxvYXQgIC1tbWZjcmYgIC1tbXVsdGlwbGUgQGdvbAorLS1t bmV3LW1uZW1vbmljcyAgLW1wb3BjbnRiICAtbXBvd2VyICAtbXBvd2VyMiAgLW1wb3dlcnBjNjQg QGdvbAorKy1tbmV3LW1uZW1vbmljcyAgLW1wb3BjbnRiIC1tcG9wY250ZCAgLW1wb3dlciAgLW1w b3dlcjIgIC1tcG93ZXJwYzY0IEBnb2wKKyAtbXBvd2VycGMtZ3BvcHQgIC1tcG93ZXJwYy1nZnhv cHQgIC1tc2luZ2xlLWZsb2F0IC1tZG91YmxlLWZsb2F0IEBnb2wKKy0tbXNpbXBsZS1mcHUgLW1z dHJpbmcgIC1tbXVsaHcgIC1tZGxtemIgIC1tbWZwZ3ByfQorKy1tc2ltcGxlLWZwdSAtbXN0cmlu ZyAgLW1tdWxodyAgLW1kbG16YiAgLW1tZnBncHIgLW12c3h9CisgCisgVGhlIHBhcnRpY3VsYXIg b3B0aW9ucyBzZXQgZm9yIGFueSBwYXJ0aWN1bGFyIENQVSB3aWxsIHZhcnkgYmV0d2VlbgorIGNv bXBpbGVyIHZlcnNpb25zLCBkZXBlbmRpbmcgb24gd2hhdCBzZXR0aW5nIHNlZW1zIHRvIHByb2R1 Y2Ugb3B0aW1hbAorQEAgLTEzNzY2LDYgKzEzNzc2LDQ0IEBAIGluc3RydWN0aW9ucy4KKyBUaGlz IG9wdGlvbiBoYXMgYmVlbiBkZXByZWNhdGVkLiAgVXNlIEBvcHRpb257LW1zcGV9IGFuZAorIEBv cHRpb257LW1uby1zcGV9IGluc3RlYWQuCisgCisrQGl0ZW0gLW12c3gKKytAaXRlbXggLW1uby12 c3gKKytAb3BpbmRleCBtdnN4CisrQG9waW5kZXggbW5vLXZzeAorK0dlbmVyYXRlIGNvZGUgdGhh dCB1c2VzIChkb2VzIG5vdCB1c2UpIHZlY3Rvci9zY2FsYXIgKFZTWCkKKytpbnN0cnVjdGlvbnMs IGFuZCBhbHNvIGVuYWJsZSB0aGUgdXNlIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyB0aGF0IGFsbG93 CisrbW9yZSBkaXJlY3QgYWNjZXNzIHRvIHRoZSBWU1ggaW5zdHJ1Y3Rpb24gc2V0LgorKworK0Bp dGVtIC1tdnN4LXZlY3Rvci1tZW1vcnkKKytAaXRlbXggLW1uby12c3gtdmVjdG9yLW1lbW9yeQor K0lmIEBvcHRpb257LW12c3h9LCB1c2UgVlNYIG1lbW9yeSByZWZlcmVuY2UgaW5zdHJ1Y3Rpb25z IGZvciB2ZWN0b3JzCisraW5zdGVhZCBvZiB0aGUgQWx0aXZlYyBpbnN0cnVjdGlvbnMgVGhpcyBv cHRpb24gaXMgYSB0ZW1wb3Jhcnkgc3dpdGNoCisrdG8gdHVuZSB0aGUgY29tcGlsZXIsIGFuZCBt YXkgbm90IGJlIHN1cHBvcnRlZCBpbiBmdXR1cmUgdmVyc2lvbnMuCisrCisrQGl0ZW0gLW12c3gt dmVjdG9yLWZsb2F0CisrQGl0ZW14IC1tbm8tdnN4LXZlY3Rvci1mbG9hdAorK0lmIEBvcHRpb257 LW12c3h9LCB1c2UgVlNYIGFyaXRobWV0aWMgaW5zdHJ1Y3Rpb25zIGZvciBmbG9hdCB2ZWN0b3Jz LgorK1RoaXMgb3B0aW9uIGlzIGEgdGVtcG9yYXJ5IHN3aXRjaCB0byB0dW5lIHRoZSBjb21waWxl ciwgYW5kIG1heSBub3QgYmUKKytzdXBwb3J0ZWQgaW4gZnV0dXJlIHZlcnNpb25zLgorKworK0Bp dGVtIC1tdnN4LXZlY3Rvci1kb3VibGUKKytAaXRlbXggLW1uby12c3gtdmVjdG9yLWRvdWJsZQor K0lmIEBvcHRpb257LW12c3h9LCB1c2UgVlNYIGFyaXRobWV0aWMgaW5zdHJ1Y3Rpb25zIGZvciBk b3VibGUKKyt2ZWN0b3JzLiAgVGhpcyBvcHRpb24gaXMgYSB0ZW1wb3Jhcnkgc3dpdGNoIHRvIHR1 bmUgdGhlCisrY29tcGlsZXIsIGFuZCBtYXkgbm90IGJlIHN1cHBvcnRlZCBpbiBmdXR1cmUgdmVy c2lvbnMuCisrCisrQGl0ZW0gLW12c3gtc2NhbGFyLWRvdWJsZQorK0BpdGVteCAtbW5vLXZzeC1z Y2FsYXItZG91YmxlCisrSWYgQG9wdGlvbnstbXZzeH0sIHVzZSBWU1ggYXJpdGhtZXRpYyBpbnN0 cnVjdGlvbnMgZm9yIHNjYWxhciBkb3VibGUuCisrVGhpcyBvcHRpb24gaXMgYSB0ZW1wb3Jhcnkg c3dpdGNoIHRvIHR1bmUgdGhlIGNvbXBpbGVyLCBhbmQgbWF5IG5vdCBiZQorK3N1cHBvcnRlZCBp biBmdXR1cmUgdmVyc2lvbnMuCisrCisrQGl0ZW0gLW12c3gtc2NhbGFyLW1lbW9yeQorK0BpdGVt eCAtbW5vLXZzeC1zY2FsYXItbWVtb3J5CisrSWYgQG9wdGlvbnstbXZzeH0sIHVzZSBWU1ggbWVt b3J5IHJlZmVyZW5jZSBpbnN0cnVjdGlvbnMgZm9yIHNjYWxhcgorK2RvdWJsZS4gIFRoaXMgb3B0 aW9uIGlzIGEgdGVtcG9yYXJ5IHN3aXRjaCB0byB0dW5lIHRoZSBjb21waWxlciwgYW5kCisrbWF5 IG5vdCBiZSBzdXBwb3J0ZWQgaW4gZnV0dXJlIHZlcnNpb25zLgorKworIEBpdGVtIC1tZmxvYXQt Z3Bycz1AdmFye3llcy9zaW5nbGUvZG91YmxlL25vfQorIEBpdGVteCAtbWZsb2F0LWdwcnMKKyBA b3BpbmRleCBtZmxvYXQtZ3BycworLS0tIGdjYy9kb2MvbWQudGV4aQkoLi4uL3RydW5rKQkocmV2 aXNpb24gMTQ0NTU3KQorKysrIGdjYy9kb2MvbWQudGV4aQkoLi4uL2JyYW5jaGVzL2libS9wb3dl cjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDQ2OTIpCitAQCAtMTkwNSw3ICsxOTA1LDE5IEBAIEFk ZHJlc3MgYmFzZSByZWdpc3RlcgorIEZsb2F0aW5nIHBvaW50IHJlZ2lzdGVyCisgCisgQGl0ZW0g dgorLVZlY3RvciByZWdpc3RlcgorK0FsdGl2ZWMgdmVjdG9yIHJlZ2lzdGVyCisrCisrQGl0ZW0g d2QKKytWU1ggdmVjdG9yIHJlZ2lzdGVyIHRvIGhvbGQgdmVjdG9yIGRvdWJsZSBkYXRhCisrCisr QGl0ZW0gd2YKKytWU1ggdmVjdG9yIHJlZ2lzdGVyIHRvIGhvbGQgdmVjdG9yIGZsb2F0IGRhdGEK KysKKytAaXRlbSB3cworK1ZTWCB2ZWN0b3IgcmVnaXN0ZXIgdG8gaG9sZCBzY2FsYXIgZmxvYXQg ZGF0YQorKworK0BpdGVtIHdhCisrQW55IFZTWCByZWdpc3RlcgorIAorIEBpdGVtIGgKKyBAc2Ft cHtNUX0sIEBzYW1we0NUUn0sIG9yIEBzYW1we0xJTkt9IHJlZ2lzdGVyCitAQCAtMTk5MSw2ICsy MDAzLDkgQEAgQU5EIG1hc2tzIHRoYXQgY2FuIGJlIHBlcmZvcm1lZCBieSB0d28gcgorIEBpdGVt IFcKKyBWZWN0b3IgY29uc3RhbnQgdGhhdCBkb2VzIG5vdCByZXF1aXJlIG1lbW9yeQorIAorK0Bp dGVtIGoKKytWZWN0b3IgY29uc3RhbnQgdGhhdCBpcyBhbGwgemVyb3MuCisrCisgQGVuZCB0YWJs ZQorIAorIEBpdGVtIEludGVsIDM4Ni0tLUBmaWxle2NvbmZpZy9pMzg2L2NvbnN0cmFpbnRzLm1k fQorLS0tIGdjYy9yZWxvYWQuYwkoLi4uL3RydW5rKQkocmV2aXNpb24gMTQ0NTU3KQorKysrIGdj Yy9yZWxvYWQuYwkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAx NDQ2OTIpCitAQCAtNjI1NSw4ICs2MjU1LDE0IEBAIHN1YnN0X3JlbG9hZHMgKHJ0eCBpbnNuKQor IAkgICAgKnItPndoZXJlID0gcmVsb2FkcmVnOworIAl9CisgICAgICAgLyogSWYgcmVsb2FkIGdv dCBubyByZWcgYW5kIGlzbid0IG9wdGlvbmFsLCBzb21ldGhpbmcncyB3cm9uZy4gICovCistICAg ICAgZWxzZQorLQlnY2NfYXNzZXJ0IChybGRbci0+d2hhdF0ub3B0aW9uYWwpOworKyAgICAgIGVs c2UgaWYgKCFybGRbci0+d2hhdF0ub3B0aW9uYWwpCisrCXsKKysJICBjaGFyIGJ1ZmZlclsxMDBd OworKwkgIHNwcmludGYgKGJ1ZmZlciwKKysJCSAgICJ1bmFibGUgdG8gZmluZCByZWdpc3RlciBm b3IgcmVsb2FkLCByZXBsYWNlbWVudCAjJWQiLAorKwkJICAgaSk7CisrCSAgZmF0YWxfaW5zbiAo YnVmZmVyLCBpbnNuKTsKKysJfQorICAgICB9CisgfQorIAwKKy0tLSBnY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcG93ZXJwYy9wb3Bjb3VudC0zLmMJKC4uLi90cnVuaykJKHJldmlzaW9uIDApCisr KysgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcG9wY291bnQtMy5jCSguLi4vYnJh bmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlzaW9uIDE0NDY5MikKK0BAIC0wLDAgKzEs OSBAQAorKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IHBvd2VycGMqLSotKiAmJiBscDY0 IH0gfSB9ICovCisrLyogeyBkZy1za2lwLWlmICIiIHsgcG93ZXJwYyotKi1kYXJ3aW4qIH0geyAi KiIgfSB7ICIiIH0gfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tY3B1PXBvd2VyNyAtbTY0 IiB9ICovCisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwb3BjbnRkIiB9IH0gKi8K KysKKytsb25nIGZvbyhpbnQgeCkKKyt7CisrICByZXR1cm4gX19idWlsdGluX3BvcGNvdW50bCh4 KTsKKyt9CistLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvdnN4LXZlY3Rvci0x LmMJKC4uLi90cnVuaykJKHJldmlzaW9uIDApCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Bvd2VycGMvdnN4LXZlY3Rvci0xLmMJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVy KQkocmV2aXNpb24gMTQ0NjkyKQorQEAgLTAsMCArMSw3NCBAQAorKy8qIHsgZGctZG8gY29tcGls ZSB7IHRhcmdldCB7IHBvd2VycGMqLSotKiAmJiBscDY0IH0gfSB9ICovCisrLyogeyBkZy1za2lw LWlmICIiIHsgcG93ZXJwYyotKi1kYXJ3aW4qIH0geyAiKiIgfSB7ICIiIH0gfSAqLworKy8qIHsg ZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHBvd2VycGNfdnN4X29rIH0gKi8KKysvKiB7IGRn LW9wdGlvbnMgIi1PMiAtZnRyZWUtdmVjdG9yaXplIC1tY3B1PXBvd2VyNyAtbTY0IiB9ICovCisr LyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dmFkZGRwIiB9IH0gKi8KKysvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2c3ViZHAiIH0gfSAqLworKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlciAieHZtdWxkcCIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyICJ4dmRpdmRwIiB9IH0gKi8KKysvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXIgInh2bWFkZCIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dm1z dWIiIH0gfSAqLworKworKyNpZm5kZWYgU0laRQorKyNkZWZpbmUgU0laRSAxMDI0CisrI2VuZGlm CisrCisrZG91YmxlIGFbU0laRV0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMzIpKSk7Cisr ZG91YmxlIGJbU0laRV0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMzIpKSk7CisrZG91Ymxl IGNbU0laRV0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMzIpKSk7CisrZG91YmxlIGRbU0la RV0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMzIpKSk7CisrZG91YmxlIGVbU0laRV0gX19h dHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMzIpKSk7CisrCisrdm9pZAorK3ZlY3Rvcl9hZGQgKHZv aWQpCisreworKyAgaW50IGk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgaSsrKQorKyAg ICBhW2ldID0gYltpXSArIGNbaV07CisrfQorKworK3ZvaWQKKyt2ZWN0b3Jfc3VidHJhY3QgKHZv aWQpCisreworKyAgaW50IGk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgaSsrKQorKyAg ICBhW2ldID0gYltpXSAtIGNbaV07CisrfQorKworK3ZvaWQKKyt2ZWN0b3JfbXVsdGlwbHkgKHZv aWQpCisreworKyAgaW50IGk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgaSsrKQorKyAg ICBhW2ldID0gYltpXSAqIGNbaV07CisrfQorKworK3ZvaWQKKyt2ZWN0b3JfbXVsdGlwbHlfYWRk ICh2b2lkKQorK3sKKysgIGludCBpOworKworKyAgZm9yIChpID0gMDsgaSA8IFNJWkU7IGkrKykK KysgICAgYVtpXSA9IChiW2ldICogY1tpXSkgKyBkW2ldOworK30KKysKKyt2b2lkCisrdmVjdG9y X211bHRpcGx5X3N1YnRyYWN0ICh2b2lkKQorK3sKKysgIGludCBpOworKworKyAgZm9yIChpID0g MDsgaSA8IFNJWkU7IGkrKykKKysgICAgYVtpXSA9IChiW2ldICogY1tpXSkgLSBkW2ldOworK30K KysKKyt2b2lkCisrdmVjdG9yX2RpdmlkZSAodm9pZCkKKyt7CisrICBpbnQgaTsKKysKKysgIGZv ciAoaSA9IDA7IGkgPCBTSVpFOyBpKyspCisrICAgIGFbaV0gPSBiW2ldIC8gY1tpXTsKKyt9Cist LS0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvdnN4LXZlY3Rvci0yLmMJKC4uLi90 cnVuaykJKHJldmlzaW9uIDApCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMv dnN4LXZlY3Rvci0yLmMJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNp b24gMTQ0NjkyKQorQEAgLTAsMCArMSw3NCBAQAorKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdl dCB7IHBvd2VycGMqLSotKiAmJiBscDY0IH0gfSB9ICovCisrLyogeyBkZy1za2lwLWlmICIiIHsg cG93ZXJwYyotKi1kYXJ3aW4qIH0geyAiKiIgfSB7ICIiIH0gfSAqLworKy8qIHsgZGctcmVxdWly ZS1lZmZlY3RpdmUtdGFyZ2V0IHBvd2VycGNfdnN4X29rIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMg Ii1PMiAtZnRyZWUtdmVjdG9yaXplIC1tY3B1PXBvd2VyNyAtbTY0IiB9ICovCisrLyogeyBkZy1m aW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dmFkZHNwIiB9IH0gKi8KKysvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgInh2c3Vic3AiIH0gfSAqLworKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciAieHZtdWxzcCIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy ICJ4dmRpdnNwIiB9IH0gKi8KKysvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2bWFk ZCIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dm1zdWIiIH0gfSAq LworKworKyNpZm5kZWYgU0laRQorKyNkZWZpbmUgU0laRSAxMDI0CisrI2VuZGlmCisrCisrZmxv YXQgYVtTSVpFXSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygzMikpKTsKKytmbG9hdCBiW1NJ WkVdIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDMyKSkpOworK2Zsb2F0IGNbU0laRV0gX19h dHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMzIpKSk7CisrZmxvYXQgZFtTSVpFXSBfX2F0dHJpYnV0 ZV9fKChfX2FsaWduZWRfXygzMikpKTsKKytmbG9hdCBlW1NJWkVdIF9fYXR0cmlidXRlX18oKF9f YWxpZ25lZF9fKDMyKSkpOworKworK3ZvaWQKKyt2ZWN0b3JfYWRkICh2b2lkKQorK3sKKysgIGlu dCBpOworKworKyAgZm9yIChpID0gMDsgaSA8IFNJWkU7IGkrKykKKysgICAgYVtpXSA9IGJbaV0g KyBjW2ldOworK30KKysKKyt2b2lkCisrdmVjdG9yX3N1YnRyYWN0ICh2b2lkKQorK3sKKysgIGlu dCBpOworKworKyAgZm9yIChpID0gMDsgaSA8IFNJWkU7IGkrKykKKysgICAgYVtpXSA9IGJbaV0g LSBjW2ldOworK30KKysKKyt2b2lkCisrdmVjdG9yX211bHRpcGx5ICh2b2lkKQorK3sKKysgIGlu dCBpOworKworKyAgZm9yIChpID0gMDsgaSA8IFNJWkU7IGkrKykKKysgICAgYVtpXSA9IGJbaV0g KiBjW2ldOworK30KKysKKyt2b2lkCisrdmVjdG9yX211bHRpcGx5X2FkZCAodm9pZCkKKyt7Cisr ICBpbnQgaTsKKysKKysgIGZvciAoaSA9IDA7IGkgPCBTSVpFOyBpKyspCisrICAgIGFbaV0gPSAo YltpXSAqIGNbaV0pICsgZFtpXTsKKyt9CisrCisrdm9pZAorK3ZlY3Rvcl9tdWx0aXBseV9zdWJ0 cmFjdCAodm9pZCkKKyt7CisrICBpbnQgaTsKKysKKysgIGZvciAoaSA9IDA7IGkgPCBTSVpFOyBp KyspCisrICAgIGFbaV0gPSAoYltpXSAqIGNbaV0pIC0gZFtpXTsKKyt9CisrCisrdm9pZAorK3Zl Y3Rvcl9kaXZpZGUgKHZvaWQpCisreworKyAgaW50IGk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwg U0laRTsgaSsrKQorKyAgICBhW2ldID0gYltpXSAvIGNbaV07CisrfQorLS0tIGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9wb3dlcnBjL3ZzeC12ZWN0b3ItMy5jCSguLi4vdHJ1bmspCShyZXZpc2lv biAwKQorKysrIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3ZzeC12ZWN0b3ItMy5j CSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlzaW9uIDE0NDY5MikKK0BA IC0wLDAgKzEsNDggQEAKKysvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyBwb3dlcnBjKi0q LSogJiYgbHA2NCB9IH0gfSAqLworKy8qIHsgZGctc2tpcC1pZiAiIiB7IHBvd2VycGMqLSotZGFy d2luKiB9IHsgIioiIH0geyAiIiB9IH0gKi8KKysvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRh cmdldCBwb3dlcnBjX3ZzeF9vayB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzIgLWZ0cmVlLXZl Y3Rvcml6ZSAtbWNwdT1wb3dlcjcgLW02NCIgfSAqLworKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlciAieHZhZGRkcCIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy ICJ4dnN1YmRwIiB9IH0gKi8KKysvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2bXVs ZHAiIH0gfSAqLworKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZkaXZkcCIgfSB9 ICovCisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dm1hZGQiIH0gfSAqLworKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZtc3ViIiB9IH0gKi8KKysKKytfX3ZlY3Rv ciBkb3VibGUgYSwgYiwgYywgZDsKKysKKyt2b2lkCisrdmVjdG9yX2FkZCAodm9pZCkKKyt7Cisr ICBhID0gYiArIGM7CisrfQorKworK3ZvaWQKKyt2ZWN0b3Jfc3VidHJhY3QgKHZvaWQpCisrewor KyAgYSA9IGIgLSBjOworK30KKysKKyt2b2lkCisrdmVjdG9yX211bHRpcGx5ICh2b2lkKQorK3sK KysgIGEgPSBiICogYzsKKyt9CisrCisrdm9pZAorK3ZlY3Rvcl9tdWx0aXBseV9hZGQgKHZvaWQp CisreworKyAgYSA9IChiICogYykgKyBkOworK30KKysKKyt2b2lkCisrdmVjdG9yX211bHRpcGx5 X3N1YnRyYWN0ICh2b2lkKQorK3sKKysgIGEgPSAoYiAqIGMpIC0gZDsKKyt9CisrCisrdm9pZAor K3ZlY3Rvcl9kaXZpZGUgKHZvaWQpCisreworKyAgYSA9IGIgLyBjOworK30KKy0tLSBnY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9wb3Bjb3VudC0yLmMJKC4uLi90cnVuaykJKHJldmlz aW9uIDApCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcG9wY291bnQtMi5j CSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlzaW9uIDE0NDY5MikKK0BA IC0wLDAgKzEsOSBAQAorKy8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGlscDMyIH0gfSB9 ICovCisrLyogeyBkZy1za2lwLWlmICIiIHsgcG93ZXJwYyotKi1kYXJ3aW4qIH0geyAiKiIgfSB7 ICIiIH0gfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tY3B1PXBvd2VyNyAtbTMyIiB9ICov CisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJwb3BjbnR3IiB9IH0gKi8KKysKKytp bnQgZm9vKGludCB4KQorK3sKKysgIHJldHVybiBfX2J1aWx0aW5fcG9wY291bnQoeCk7CisrfQor LS0tIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3ZzeC12ZWN0b3ItNC5jCSguLi4v dHJ1bmspCShyZXZpc2lvbiAwKQorKysrIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBj L3ZzeC12ZWN0b3ItNC5jCSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlz aW9uIDE0NDY5MikKK0BAIC0wLDAgKzEsNDggQEAKKysvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJn ZXQgeyBwb3dlcnBjKi0qLSogJiYgbHA2NCB9IH0gfSAqLworKy8qIHsgZGctc2tpcC1pZiAiIiB7 IHBvd2VycGMqLSotZGFyd2luKiB9IHsgIioiIH0geyAiIiB9IH0gKi8KKysvKiB7IGRnLXJlcXVp cmUtZWZmZWN0aXZlLXRhcmdldCBwb3dlcnBjX3ZzeF9vayB9ICovCisrLyogeyBkZy1vcHRpb25z ICItTzIgLWZ0cmVlLXZlY3Rvcml6ZSAtbWNwdT1wb3dlcjcgLW02NCIgfSAqLworKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZhZGRzcCIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyICJ4dnN1YnNwIiB9IH0gKi8KKysvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgInh2bXVsc3AiIH0gfSAqLworKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAieHZkaXZzcCIgfSB9ICovCisrLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dm1h ZGQiIH0gfSAqLworKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZtc3ViIiB9IH0g Ki8KKysKKytfX3ZlY3RvciBmbG9hdCBhLCBiLCBjLCBkOworKworK3ZvaWQKKyt2ZWN0b3JfYWRk ICh2b2lkKQorK3sKKysgIGEgPSBiICsgYzsKKyt9CisrCisrdm9pZAorK3ZlY3Rvcl9zdWJ0cmFj dCAodm9pZCkKKyt7CisrICBhID0gYiAtIGM7CisrfQorKworK3ZvaWQKKyt2ZWN0b3JfbXVsdGlw bHkgKHZvaWQpCisreworKyAgYSA9IGIgKiBjOworK30KKysKKyt2b2lkCisrdmVjdG9yX211bHRp cGx5X2FkZCAodm9pZCkKKyt7CisrICBhID0gKGIgKiBjKSArIGQ7CisrfQorKworK3ZvaWQKKyt2 ZWN0b3JfbXVsdGlwbHlfc3VidHJhY3QgKHZvaWQpCisreworKyAgYSA9IChiICogYykgLSBkOwor K30KKysKKyt2b2lkCisrdmVjdG9yX2RpdmlkZSAodm9pZCkKKyt7CisrICBhID0gYiAvIGM7Cisr fQorLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ZteC92bXguZXhwCSguLi4vdHJ1bmspCShyZXZp c2lvbiAxNDQ1NTcpCisrKysgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdm14L3ZteC5leHAJKC4uLi9i cmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ0NjkyKQorQEAgLTMxLDcg KzMxLDcgQEAgaWYgeyFbaXN0YXJnZXQgcG93ZXJwYyotKi0qXQorICMgbm90aGluZyBidXQgZXh0 ZW5zaW9ucy4KKyBnbG9iYWwgREVGQVVMVF9WTVhDRkxBR1MKKyBpZiAhW2luZm8gZXhpc3RzIERF RkFVTFRfVk1YQ0ZMQUdTXSB0aGVuIHsKKy0gICAgc2V0IERFRkFVTFRfVk1YQ0ZMQUdTICItbWFs dGl2ZWMgLW1hYmk9YWx0aXZlYyAtc3RkPWdudTk5IgorKyAgICBzZXQgREVGQVVMVF9WTVhDRkxB R1MgIi1tYWx0aXZlYyAtbWFiaT1hbHRpdmVjIC1zdGQ9Z251OTkgLW1uby12c3giCisgfQorIAor ICMgSWYgdGhlIHRhcmdldCBzeXN0ZW0gc3VwcG9ydHMgQWx0aVZlYyBpbnN0cnVjdGlvbnMsIHRo ZSBkZWZhdWx0IGFjdGlvbgorLS0tIGdjYy90ZXN0c3VpdGUvbGliL3RhcmdldC1zdXBwb3J0cy5l eHAJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NDU1NykKKysrKyBnY2MvdGVzdHN1aXRlL2xpYi90 YXJnZXQtc3VwcG9ydHMuZXhwCSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJl dmlzaW9uIDE0NDY5MikKK0BAIC04NzMsNiArODczLDMyIEBAIHByb2MgY2hlY2tfc3NlMl9od19h dmFpbGFibGUgeyB9IHsKKyAgICAgfV0KKyB9CisgCisrIyBSZXR1cm4gMSBpZiB0aGUgdGFyZ2V0 IHN1cHBvcnRzIGV4ZWN1dGluZyBWU1ggaW5zdHJ1Y3Rpb25zLCAwCisrIyBvdGhlcndpc2UuICBD YWNoZSB0aGUgcmVzdWx0LgorKworK3Byb2MgY2hlY2tfdnN4X2h3X2F2YWlsYWJsZSB7IH0gewor KyAgICByZXR1cm4gW2NoZWNrX2NhY2hlZF9lZmZlY3RpdmVfdGFyZ2V0IHZzeF9od19hdmFpbGFi bGUgeworKwkjIFNvbWUgc2ltdWxhdG9ycyBhcmUga25vd24gdG8gbm90IHN1cHBvcnQgVlNYIGlu c3RydWN0aW9ucy4KKysJIyBGb3Igbm93LCBkaXNhYmxlIG9uIERhcndpbgorKwlpZiB7IFtpc3Rh cmdldCBwb3dlcnBjLSotZWFiaV0gfHwgW2lzdGFyZ2V0IHBvd2VycGMqLSotZWFiaXNwZV0gfHwg W2lzdGFyZ2V0ICotKi1kYXJ3aW4qXX0geworKwkgICAgZXhwciAwCisrCX0gZWxzZSB7CisrCSAg ICBzZXQgb3B0aW9ucyAiLW12c3giCisrCSAgICBjaGVja19ydW50aW1lX25vY2FjaGUgdnN4X2h3 X2F2YWlsYWJsZSB7CisrCQlpbnQgbWFpbigpCisrCQl7CisrCQkjaWZkZWYgX19NQUNIX18KKysJ CSAgYXNtIHZvbGF0aWxlICgieHhsb3IgdnMwLHZzMCx2czAiKTsKKysJCSNlbHNlCisrCQkgIGFz bSB2b2xhdGlsZSAoInh4bG9yIDAsMCwwIik7CisrCSAgICAgICAgI2VuZGlmCisrCQkgIHJldHVy biAwOworKwkJfQorKwkgICAgfSAkb3B0aW9ucworKwl9CisrICAgIH1dCisrfQorKworICMgUmV0 dXJuIDEgaWYgdGhlIHRhcmdldCBzdXBwb3J0cyBleGVjdXRpbmcgQWx0aVZlYyBpbnN0cnVjdGlv bnMsIDAKKyAjIG90aGVyd2lzZS4gIENhY2hlIHRoZSByZXN1bHQuCisgCitAQCAtODgzLDEyICs5 MDksMTMgQEAgcHJvYyBjaGVja192bXhfaHdfYXZhaWxhYmxlIHsgfSB7CisgCSAgICBleHByIDAK KyAJfSBlbHNlIHsKKyAJICAgICMgTW9zdCB0YXJnZXRzIGRvbid0IHJlcXVpcmUgc3BlY2lhbCBm bGFncyBmb3IgdGhpcyB0ZXN0IGNhc2UsIGJ1dAorLQkgICAgIyBEYXJ3aW4gZG9lcy4KKysJICAg ICMgRGFyd2luIGRvZXMuICBKdXN0IHRvIGJlIHN1cmUsIG1ha2Ugc3VyZSBWU1ggaXMgbm90IGVu YWJsZWQgZm9yCisrCSAgICAjIHRoZSBhbHRpdmVjIHRlc3RzLgorIAkgICAgaWYgeyBbaXN0YXJn ZXQgKi0qLWRhcndpbipdCisgCQkgfHwgW2lzdGFyZ2V0ICotKi1haXgqXSB9IHsKKy0JCXNldCBv cHRpb25zICItbWFsdGl2ZWMiCisrCQlzZXQgb3B0aW9ucyAiLW1hbHRpdmVjIC1tbm8tdnN4Igor IAkgICAgfSBlbHNlIHsKKy0JCXNldCBvcHRpb25zICIiCisrCQlzZXQgb3B0aW9ucyAiLW1uby12 c3giCisgCSAgICB9CisgCSAgICBjaGVja19ydW50aW1lX25vY2FjaGUgdm14X2h3X2F2YWlsYWJs ZSB7CisgCQlpbnQgbWFpbigpCitAQCAtMTUxOSw2ICsxNTQ2LDMzIEBAIHByb2MgY2hlY2tfZWZm ZWN0aXZlX3RhcmdldF9wb3dlcnBjX2FsdGkKKyAgICAgfQorIH0KKyAKKysjIFJldHVybiAxIGlm IHRoaXMgaXMgYSBQb3dlclBDIHRhcmdldCBzdXBwb3J0aW5nIC1tdnN4CisrCisrcHJvYyBjaGVj a19lZmZlY3RpdmVfdGFyZ2V0X3Bvd2VycGNfdnN4X29rIHsgfSB7CisrICAgIGlmIHsgKFtpc3Rh cmdldCBwb3dlcnBjKi0qLSpdCisrICAgICAgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotbGlu dXgqcGFpcmVkKl0pCisrCSB8fCBbaXN0YXJnZXQgcnM2MDAwLSotKl0gfSB7CisrCSMgQWx0aVZl YyBpcyBub3Qgc3VwcG9ydGVkIG9uIEFJWCBiZWZvcmUgNS4zLgorKwlpZiB7IFtpc3RhcmdldCBw b3dlcnBjKi0qLWFpeDQqXQorKwkgICAgIHx8IFtpc3RhcmdldCBwb3dlcnBjKi0qLWFpeDUuMSpd IAorKwkgICAgIHx8IFtpc3RhcmdldCBwb3dlcnBjKi0qLWFpeDUuMipdIH0geworKwkgICAgcmV0 dXJuIDAKKysJfQorKwlyZXR1cm4gW2NoZWNrX25vX2NvbXBpbGVyX21lc3NhZ2VzIHBvd2VycGNf dnN4X29rIG9iamVjdCB7CisrCSAgICBpbnQgbWFpbiAodm9pZCkgeworKyNpZmRlZiBfX01BQ0hf XworKwkJYXNtIHZvbGF0aWxlICgieHhsb3IgdnMwLHZzMCx2czAiKTsKKysjZWxzZQorKwkJYXNt IHZvbGF0aWxlICgieHhsb3IgMCwwLDAiKTsKKysjZW5kaWYKKysJCXJldHVybiAwOworKwkgICAg fQorKwl9ICItbXZzeCJdCisrICAgIH0gZWxzZSB7CisrCXJldHVybiAwCisrICAgIH0KKyt9Cisr CisgIyBSZXR1cm4gMSBpZiB0aGlzIGlzIGEgUG93ZXJQQyB0YXJnZXQgc3VwcG9ydGluZyAtbWNw dT1jZWxsLgorIAorIHByb2MgY2hlY2tfZWZmZWN0aXZlX3RhcmdldF9wb3dlcnBjX3BwdV9vayB7 IH0geworLS0tIGdjYy9jb25maWcuaW4JKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NDU1NykKKysr KyBnY2MvY29uZmlnLmluCSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlz aW9uIDE0NDY5MikKK0BAIC0zMzQsMTIgKzMzNCwxOCBAQAorICNlbmRpZgorIAorIAorLS8qIERl ZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyBwb3BjbnRiIGZpZWxkLiAqLworKy8qIERl ZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyBwb3BjbnRiIGluc3RydWN0aW9uLiAqLwor ICNpZm5kZWYgVVNFRF9GT1JfVEFSR0VUCisgI3VuZGVmIEhBVkVfQVNfUE9QQ05UQgorICNlbmRp ZgorIAorIAorKy8qIERlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyBwb3BjbnRkIGlu c3RydWN0aW9uLiAqLworKyNpZm5kZWYgVVNFRF9GT1JfVEFSR0VUCisrI3VuZGVmIEhBVkVfQVNf UE9QQ05URAorKyNlbmRpZgorKworKworIC8qIERlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBw b3J0cyAucmVnaXN0ZXIuICovCisgI2lmbmRlZiBVU0VEX0ZPUl9UQVJHRVQKKyAjdW5kZWYgSEFW RV9BU19SRUdJU1RFUl9QU0VVRE9fT1AKKy0tLSBnY2MvY29uZmlndXJlLmFjCSguLi4vdHJ1bmsp CShyZXZpc2lvbiAxNDQ1NTcpCisrKysgZ2NjL2NvbmZpZ3VyZS5hYwkoLi4uL2JyYW5jaGVzL2li bS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDQ2OTIpCitAQCAtMiw3ICsyLDcgQEAKKyAj IFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gZ2VuZXJhdGUgYSBjb25maWd1cmF0 aW9uIHNjcmlwdC4KKyAKKyAjIENvcHlyaWdodCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAx LCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LAorLSMgMjAwNywgMjAwOCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKysjIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisgCisgI1RoaXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4KKyAKK0BAIC0z MDgwLDcgKzMwODAsNyBAQCBmb286CW5vcAorICAgICBlc2FjCisgCisgICAgIGdjY19HQVNfQ0hF Q0tfRkVBVFVSRShbbW92ZSBmcCBncHIgc3VwcG9ydF0sCistICAgICAgZ2NjX2N2X2FzX3Bvd2Vy cGNfbWZwZ3ByLCBbOSw5OSwwXSwsCisrICAgICAgZ2NjX2N2X2FzX3Bvd2VycGNfbWZwZ3ByLCBb MiwxOSwyXSwsCisgICAgICAgWyRjb25mdGVzdF9zXSwsCisgICAgICAgW0FDX0RFRklORShIQVZF X0FTX01GUEdQUiwgMSwKKyAJICBbRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIG1m ZmdwciBhbmQgbWZ0Z3ByLl0pXSkKK0BAIC0zMTE0LDcgKzMxMTQsNyBAQCBMQ0YwOgorICAgICBl c2FjCisgCisgICAgIGdjY19HQVNfQ0hFQ0tfRkVBVFVSRShbY29tcGFyZSBieXRlcyBzdXBwb3J0 XSwKKy0gICAgICBnY2NfY3ZfYXNfcG93ZXJwY19jbXBiLCBbOSw5OSwwXSwgLWEzMiwKKysgICAg ICBnY2NfY3ZfYXNfcG93ZXJwY19jbXBiLCBbMiwxOSwyXSwgLWEzMiwKKyAgICAgICBbJGNvbmZ0 ZXN0X3NdLCwKKyAgICAgICBbQUNfREVGSU5FKEhBVkVfQVNfQ01QQiwgMSwKKyAJICBbRGVmaW5l IGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIGNtcGIuXSldKQorQEAgLTMxMjksNyArMzEyOSw3 IEBAIExDRjA6CisgICAgIGVzYWMKKyAKKyAgICAgZ2NjX0dBU19DSEVDS19GRUFUVVJFKFtkZWNp bWFsIGZsb2F0IHN1cHBvcnRdLAorLSAgICAgIGdjY19jdl9hc19wb3dlcnBjX2RmcCwgWzksOTks MF0sIC1hMzIsCisrICAgICAgZ2NjX2N2X2FzX3Bvd2VycGNfZGZwLCBbMiwxOSwyXSwgLWEzMiwK KyAgICAgICBbJGNvbmZ0ZXN0X3NdLCwKKyAgICAgICBbQUNfREVGSU5FKEhBVkVfQVNfREZQLCAx LAorIAkgIFtEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgREZQIGluc3RydWN0aW9u cy5dKV0pCitAQCAtMzE0NCwxMSArMzE0NCwyNiBAQCBMQ0YwOgorICAgICBlc2FjCisgCisgICAg IGdjY19HQVNfQ0hFQ0tfRkVBVFVSRShbdmVjdG9yLXNjYWxhciBzdXBwb3J0XSwKKy0gICAgICBn Y2NfY3ZfYXNfcG93ZXJwY192c3gsIFs5LDk5LDBdLCAtYTMyLAorKyAgICAgIGdjY19jdl9hc19w b3dlcnBjX3ZzeCwgWzIsMTksMl0sIC1hMzIsCisgICAgICAgWyRjb25mdGVzdF9zXSwsCisgICAg ICAgW0FDX0RFRklORShIQVZFX0FTX1ZTWCwgMSwKKyAJICBbRGVmaW5lIGlmIHlvdXIgYXNzZW1i bGVyIHN1cHBvcnRzIFZTWCBpbnN0cnVjdGlvbnMuXSldKQorIAorKyAgICBjYXNlICR0YXJnZXQg aW4KKysgICAgICAqLSotYWl4KikgY29uZnRlc3Rfcz0nCS5tYWNoaW5lICJwd3I3IgorKwkuY3Nl Y3QgLnRleHRbW1BSXV0KKysJcG9wY250ZCAzLDMnOzsKKysgICAgICAqKSBjb25mdGVzdF9zPScJ Lm1hY2hpbmUgcG93ZXI3CisrCS50ZXh0CisrCXBvcGNudGQgMywzJzs7CisrICAgIGVzYWMKKysK KysgICAgZ2NjX0dBU19DSEVDS19GRUFUVVJFKFtwb3BjbnRkIHN1cHBvcnRdLAorKyAgICAgIGdj Y19jdl9hc19wb3dlcnBjX3BvcGNudGQsIFsyLDE5LDJdLCAtYTMyLAorKyAgICAgIFskY29uZnRl c3Rfc10sLAorKyAgICAgIFtBQ19ERUZJTkUoSEFWRV9BU19QT1BDTlRELCAxLAorKwkgIFtEZWZp bmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgUE9QQ05URCBpbnN0cnVjdGlvbnMuXSldKQor KworICAgICBnY2NfR0FTX0NIRUNLX0ZFQVRVUkUoWy5nbnVfYXR0cmlidXRlIHN1cHBvcnRdLAor ICAgICAgIGdjY19jdl9hc19wb3dlcnBjX2dudV9hdHRyaWJ1dGUsIFsyLDE4LDBdLCwKKyAgICAg ICBbLmdudV9hdHRyaWJ1dGUgNCwxXSwsCistLS0gZ2NjL2NvbmZpZ3VyZQkoLi4uL3RydW5rKQko cmV2aXNpb24gMTQ0NTU3KQorKysrIGdjYy9jb25maWd1cmUJKC4uLi9icmFuY2hlcy9pYm0vcG93 ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ0NjkyKQorQEAgLTIzMjI1LDcgKzIzMjI1LDcgQEAg aWYgdGVzdCAiJHtnY2NfY3ZfYXNfcG93ZXJwY19tZnBncHIrc2V0fQorIGVsc2UKKyAgIGdjY19j dl9hc19wb3dlcnBjX21mcGdwcj1ubworICAgICBpZiB0ZXN0ICRpbl90cmVlX2dhcyA9IHllczsg dGhlbgorLSAgICBpZiB0ZXN0ICRnY2NfY3ZfZ2FzX3ZlcnMgLWdlIGBleHByIFwoIFwoIDkgXCog MTAwMCBcKSArIDk5IFwpIFwqIDEwMDAgKyAwYAorKyAgICBpZiB0ZXN0ICRnY2NfY3ZfZ2FzX3Zl cnMgLWdlIGBleHByIFwoIFwoIDIgXCogMTAwMCBcKSArIDE5IFwpIFwqIDEwMDAgKyAyYAorICAg dGhlbiBnY2NfY3ZfYXNfcG93ZXJwY19tZnBncHI9eWVzCisgZmkKKyAgIGVsaWYgdGVzdCB4JGdj Y19jdl9hcyAhPSB4OyB0aGVuCitAQCAtMjMzMjEsNyArMjMzMjEsNyBAQCBpZiB0ZXN0ICIke2dj Y19jdl9hc19wb3dlcnBjX2NtcGIrc2V0fSIgCisgZWxzZQorICAgZ2NjX2N2X2FzX3Bvd2VycGNf Y21wYj1ubworICAgICBpZiB0ZXN0ICRpbl90cmVlX2dhcyA9IHllczsgdGhlbgorLSAgICBpZiB0 ZXN0ICRnY2NfY3ZfZ2FzX3ZlcnMgLWdlIGBleHByIFwoIFwoIDkgXCogMTAwMCBcKSArIDk5IFwp IFwqIDEwMDAgKyAwYAorKyAgICBpZiB0ZXN0ICRnY2NfY3ZfZ2FzX3ZlcnMgLWdlIGBleHByIFwo IFwoIDIgXCogMTAwMCBcKSArIDE5IFwpIFwqIDEwMDAgKyAyYAorICAgdGhlbiBnY2NfY3ZfYXNf cG93ZXJwY19jbXBiPXllcworIGZpCisgICBlbGlmIHRlc3QgeCRnY2NfY3ZfYXMgIT0geDsgdGhl bgorQEAgLTIzMzY3LDcgKzIzMzY3LDcgQEAgaWYgdGVzdCAiJHtnY2NfY3ZfYXNfcG93ZXJwY19k ZnArc2V0fSIgPQorIGVsc2UKKyAgIGdjY19jdl9hc19wb3dlcnBjX2RmcD1ubworICAgICBpZiB0 ZXN0ICRpbl90cmVlX2dhcyA9IHllczsgdGhlbgorLSAgICBpZiB0ZXN0ICRnY2NfY3ZfZ2FzX3Zl cnMgLWdlIGBleHByIFwoIFwoIDkgXCogMTAwMCBcKSArIDk5IFwpIFwqIDEwMDAgKyAwYAorKyAg ICBpZiB0ZXN0ICRnY2NfY3ZfZ2FzX3ZlcnMgLWdlIGBleHByIFwoIFwoIDIgXCogMTAwMCBcKSAr IDE5IFwpIFwqIDEwMDAgKyAyYAorICAgdGhlbiBnY2NfY3ZfYXNfcG93ZXJwY19kZnA9eWVzCisg ZmkKKyAgIGVsaWYgdGVzdCB4JGdjY19jdl9hcyAhPSB4OyB0aGVuCitAQCAtMjM0MTMsNyArMjM0 MTMsNyBAQCBpZiB0ZXN0ICIke2djY19jdl9hc19wb3dlcnBjX3ZzeCtzZXR9IiA9CisgZWxzZQor ICAgZ2NjX2N2X2FzX3Bvd2VycGNfdnN4PW5vCisgICAgIGlmIHRlc3QgJGluX3RyZWVfZ2FzID0g eWVzOyB0aGVuCistICAgIGlmIHRlc3QgJGdjY19jdl9nYXNfdmVycyAtZ2UgYGV4cHIgXCggXCgg OSBcKiAxMDAwIFwpICsgOTkgXCkgXCogMTAwMCArIDBgCisrICAgIGlmIHRlc3QgJGdjY19jdl9n YXNfdmVycyAtZ2UgYGV4cHIgXCggXCggMiBcKiAxMDAwIFwpICsgMTkgXCkgXCogMTAwMCArIDJg CisgICB0aGVuIGdjY19jdl9hc19wb3dlcnBjX3ZzeD15ZXMKKyBmaQorICAgZWxpZiB0ZXN0IHgk Z2NjX2N2X2FzICE9IHg7IHRoZW4KK0BAIC0yMzQ0Myw2ICsyMzQ0Myw1MiBAQCBfQUNFT0YKKyAK KyBmaQorIAorKyAgICBjYXNlICR0YXJnZXQgaW4KKysgICAgICAqLSotYWl4KikgY29uZnRlc3Rf cz0nCS5tYWNoaW5lICJwd3I3IgorKwkuY3NlY3QgLnRleHRbUFJdCisrCXBvcGNudGQgMywzJzs7 CisrICAgICAgKikgY29uZnRlc3Rfcz0nCS5tYWNoaW5lIHBvd2VyNworKwkudGV4dAorKwlwb3Bj bnRkIDMsMyc7OworKyAgICBlc2FjCisrCisrICAgIGVjaG8gIiRhc19tZTokTElORU5POiBjaGVj a2luZyBhc3NlbWJsZXIgZm9yIHBvcGNudGQgc3VwcG9ydCIgPiY1CisrZWNobyAkRUNIT19OICJj aGVja2luZyBhc3NlbWJsZXIgZm9yIHBvcGNudGQgc3VwcG9ydC4uLiAkRUNIT19DIiA+JjYKKytp ZiB0ZXN0ICIke2djY19jdl9hc19wb3dlcnBjX3BvcGNudGQrc2V0fSIgPSBzZXQ7IHRoZW4KKysg IGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2CisrZWxzZQorKyAgZ2NjX2N2X2Fz X3Bvd2VycGNfcG9wY250ZD1ubworKyAgICBpZiB0ZXN0ICRpbl90cmVlX2dhcyA9IHllczsgdGhl bgorKyAgICBpZiB0ZXN0ICRnY2NfY3ZfZ2FzX3ZlcnMgLWdlIGBleHByIFwoIFwoIDIgXCogMTAw MCBcKSArIDE5IFwpIFwqIDEwMDAgKyAyYAorKyAgdGhlbiBnY2NfY3ZfYXNfcG93ZXJwY19wb3Bj bnRkPXllcworK2ZpCisrICBlbGlmIHRlc3QgeCRnY2NfY3ZfYXMgIT0geDsgdGhlbgorKyAgICBl Y2hvICIkY29uZnRlc3RfcyIgPiBjb25mdGVzdC5zCisrICAgIGlmIHsgYWNfdHJ5PSckZ2NjX2N2 X2FzIC1hMzIgLW8gY29uZnRlc3QubyBjb25mdGVzdC5zID4mNScKKysgIHsgKGV2YWwgZWNobyAi JGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CisrICAoZXZhbCAkYWNfdHJ5KSAyPiY1 CisrICBhY19zdGF0dXM9JD8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNfc3Rh dHVzIiA+JjUKKysgIChleGl0ICRhY19zdGF0dXMpOyB9OyB9CisrICAgIHRoZW4KKysJZ2NjX2N2 X2FzX3Bvd2VycGNfcG9wY250ZD15ZXMKKysgICAgZWxzZQorKyAgICAgIGVjaG8gImNvbmZpZ3Vy ZTogZmFpbGVkIHByb2dyYW0gd2FzIiA+JjUKKysgICAgICBjYXQgY29uZnRlc3QucyA+JjUKKysg ICAgZmkKKysgICAgcm0gLWYgY29uZnRlc3QubyBjb25mdGVzdC5zCisrICBmaQorK2ZpCisrZWNo byAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogJGdjY19jdl9hc19wb3dlcnBjX3BvcGNudGQiID4m NQorK2VjaG8gIiR7RUNIT19UfSRnY2NfY3ZfYXNfcG93ZXJwY19wb3BjbnRkIiA+JjYKKytpZiB0 ZXN0ICRnY2NfY3ZfYXNfcG93ZXJwY19wb3BjbnRkID0geWVzOyB0aGVuCisrCisrY2F0ID4+Y29u ZmRlZnMuaCA8PFxfQUNFT0YKKysjZGVmaW5lIEhBVkVfQVNfUE9QQ05URCAxCisrX0FDRU9GCisr CisrZmkKKysKKyAgICAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGFzc2VtYmxlciBm b3IgLmdudV9hdHRyaWJ1dGUgc3VwcG9ydCIgPiY1CisgZWNobyAkRUNIT19OICJjaGVja2luZyBh c3NlbWJsZXIgZm9yIC5nbnVfYXR0cmlidXRlIHN1cHBvcnQuLi4gJEVDSE9fQyIgPiY2CisgaWYg dGVzdCAiJHtnY2NfY3ZfYXNfcG93ZXJwY19nbnVfYXR0cmlidXRlK3NldH0iID0gc2V0OyB0aGVu CistLS0gZ2NjL2NvbmZpZy9yczYwMDAvYWl4NTMuaAkoLi4uL3RydW5rKQkocmV2aXNpb24gMTQ0 NTU3KQorKysrIGdjYy9jb25maWcvcnM2MDAwL2FpeDUzLmgJKC4uLi9icmFuY2hlcy9pYm0vcG93 ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ0NjkyKQorQEAgLTU3LDIwICs1NywyNCBAQCBkbyB7 CQkJCQkJCQkJXAorICN1bmRlZiBBU01fU1BFQworICNkZWZpbmUgQVNNX1NQRUMgIi11ICV7bWFp eDY0Oi1hNjQgJXshbWNwdSo6LW1wcGM2NH19ICUoYXNtX2NwdSkiCisgCistLyogQ29tbW9uIEFT TSBkZWZpbml0aW9ucyB1c2VkIGJ5IEFTTV9TUEVDIGFtb25nc3QgdGhlIHZhcmlvdXMgdGFyZ2V0 cworLSAgIGZvciBoYW5kbGluZyAtbWNwdT14eHggc3dpdGNoZXMuICAqLworKy8qIENvbW1vbiBB U00gZGVmaW5pdGlvbnMgdXNlZCBieSBBU01fU1BFQyBhbW9uZ3N0IHRoZSB2YXJpb3VzIHRhcmdl dHMgZm9yCisrICAgaGFuZGxpbmcgLW1jcHU9eHh4IHN3aXRjaGVzLiAgVGhlcmUgaXMgYSBwYXJh bGxlbCBsaXN0IGluIGRyaXZlci1yczYwMDAuYyB0bworKyAgIHByb3ZpZGUgdGhlIGRlZmF1bHQg YXNzZW1ibGVyIG9wdGlvbnMgaWYgdGhlIHVzZXIgdXNlcyAtbWNwdT1uYXRpdmUsIHNvIGlmCisr ICAgeW91IG1ha2UgY2hhbmdlcyBoZXJlLCBtYWtlIHRoZW0gdGhlcmUgYWxzby4gICovCisgI3Vu ZGVmIEFTTV9DUFVfU1BFQworICNkZWZpbmUgQVNNX0NQVV9TUEVDIFwKKyAiJXshbWNwdSo6ICV7 IW1haXg2NDogXAorICAgJXttcG93ZXJwYzY0OiAtbXBwYzY0fSBcCisgICAle21hbHRpdmVjOiAt bTk3MH0gXAorICAgJXshbWFsdGl2ZWM6ICV7IW1wb3dlcjY0OiAlKGFzbV9kZWZhdWx0KX19fX0g XAorKyV7bWNwdT1uYXRpdmU6ICUoYXNtX2NwdV9uYXRpdmUpfSBcCisgJXttY3B1PXBvd2VyMzog LW02MjB9IFwKKyAle21jcHU9cG93ZXI0OiAtbXB3cjR9IFwKKyAle21jcHU9cG93ZXI1OiAtbXB3 cjV9IFwKKyAle21jcHU9cG93ZXI1KzogLW1wd3I1eH0gXAorICV7bWNwdT1wb3dlcjY6IC1tcHdy Nn0gXAorICV7bWNwdT1wb3dlcjZ4OiAtbXB3cjZ9IFwKKysle21jcHU9cG93ZXI3OiAtbXB3cjd9 IFwKKyAle21jcHU9cG93ZXJwYzogLW1wcGN9IFwKKyAle21jcHU9cnM2NGE6IC1tcHBjfSBcCisg JXttY3B1PTYwMzogLW02MDN9IFwKKy0tLSBnY2MvY29uZmlnL3JzNjAwMC92ZWN0b3IubWQJKC4u Li90cnVuaykJKHJldmlzaW9uIDApCisrKysgZ2NjL2NvbmZpZy9yczYwMDAvdmVjdG9yLm1kCSgu Li4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlzaW9uIDE0NDY5MikKK0BAIC0w LDAgKzEsNTE4IEBACisrOzsgRXhwYW5kZXIgZGVmaW5pdGlvbnMgZm9yIHZlY3RvciBzdXBwb3J0 IGJldHdlZW4gYWx0aXZlYyAmIHZzeC4gIE5vCisrOzsgaW5zdHJ1Y3Rpb25zIGFyZSBpbiB0aGlz IGZpbGUsIHRoaXMgZmlsZSBwcm92aWRlcyB0aGUgZ2VuZXJpYyB2ZWN0b3IKKys7OyBleHBhbmRl ciwgYW5kIHRoZSBhY3R1YWwgdmVjdG9yIGluc3RydWN0aW9ucyB3aWxsIGJlIGluIGFsdGl2ZWMu bWQgYW5kCisrOzsgdnN4Lm1kCisrCisrOzsgQ29weXJpZ2h0IChDKSAyMDA5CisrOzsgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrOzsgQ29udHJpYnV0ZWQgYnkgTWljaGFlbCBNZWlz c25lciA8bWVpc3NuZXJAbGludXgudm5ldC5pYm0uY29tPgorKworKzs7IFRoaXMgZmlsZSBpcyBw YXJ0IG9mIEdDQy4KKysKKys7OyBHQ0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorKzs7IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisrOzsgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIKKys7OyBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKzs7IEdDQyBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorKzs7IEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQor Kzs7IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMKKys7OyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrOzsgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKys7OyBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNl ZQorKzs7IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysKKys7OyBWZWN0b3Ig aW50IG1vZGVzCisrKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZFQ19JIFtWMTZRSSBWOEhJIFY0U0ld KQorKworKzs7IFZlY3RvciBmbG9hdCBtb2RlcworKyhkZWZpbmVfbW9kZV9pdGVyYXRvciBWRUNf RiBbVjRTRiBWMkRGXSkKKysKKys7OyBWZWN0b3IgbG9naWNhbCBtb2RlcworKyhkZWZpbmVfbW9k ZV9pdGVyYXRvciBWRUNfTCBbVjE2UUkgVjhISSBWNFNJIFYyREkgVjRTRiBWMkRGIFRJXSkKKysK Kys7OyBWZWN0b3IgbW9kZXMgZm9yIG1vdmVzLiAgRG9uJ3QgZG8gVEltb2RlIGhlcmUuCisrKGRl ZmluZV9tb2RlX2l0ZXJhdG9yIFZFQ19NIFtWMTZRSSBWOEhJIFY0U0kgVjJESSBWNFNGIFYyREZd KQorKworKzs7IFZlY3RvciBjb21wYXJpc29uIG1vZGVzCisrKGRlZmluZV9tb2RlX2l0ZXJhdG9y IFZFQ19DIFtWMTZRSSBWOEhJIFY0U0kgVjRTRiBWMkRGXSkKKysKKys7OyBCYXNlIHR5cGUgZnJv bSB2ZWN0b3IgbW9kZQorKyhkZWZpbmVfbW9kZV9hdHRyIFZFQ19iYXNlIFsoVjE2UUkgIlFJIikK KysJCQkgICAgKFY4SEkgICJISSIpCisrCQkJICAgIChWNFNJICAiU0kiKQorKwkJCSAgICAoVjJE SSAgIkRJIikKKysJCQkgICAgKFY0U0YgICJTRiIpCisrCQkJICAgIChWMkRGICAiREYiKQorKwkJ CSAgICAoVEkgICAgIlRJIildKQorKworKzs7IFNhbWUgc2l6ZSBpbnRlZ2VyIHR5cGUgZm9yIGZs b2F0aW5nIHBvaW50IGRhdGEKKysoZGVmaW5lX21vZGVfYXR0ciBWRUNfaW50IFsoVjRTRiAgInY0 c2kiKQorKwkJCSAgIChWMkRGICAidjJkaSIpXSkKKysKKysoZGVmaW5lX21vZGVfYXR0ciBWRUNf SU5UIFsoVjRTRiAgIlY0U0kiKQorKwkJCSAgIChWMkRGICAiVjJESSIpXSkKKysKKys7OyBWZWN0 b3IgbW92ZSBpbnN0cnVjdGlvbnMuCisrKGRlZmluZV9leHBhbmQgIm1vdjxtb2RlPiIKKysgIFso c2V0IChtYXRjaF9vcGVyYW5kOlZFQ19NIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAiIikKKysJ KG1hdGNoX29wZXJhbmQ6VkVDX00gMSAiYW55X29wZXJhbmQiICIiKSldCisrICAiVkVDVE9SX01F TV9BTFRJVkVDX09SX1ZTWF9QICg8TU9ERT5tb2RlKSIKKyt7CisrICAvKiBtb2RlcyB3aXRob3V0 IHNwZWNpYWwgaGFuZGxpbmcganVzdCBnZW5lcmF0ZSB0aGUgbm9ybWFsIFNFVCBvcGVyYXRpb24u ICAqLworKyAgaWYgKDxNT0RFPm1vZGUgIT0gVEltb2RlICYmIDxNT0RFPm1vZGUgIT0gVjJESW1v ZGUgJiYgPE1PREU+bW9kZSAhPSBWMkRGbW9kZSkKKysgICAgeworKyAgICAgIHJzNjAwMF9lbWl0 X21vdmUgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgPE1PREU+bW9kZSk7CisrICAgICAgRE9O RTsKKysgICAgfQorKyAgZWxzZSBpZiAoIXZsb2dpY2FsX29wZXJhbmQgKG9wZXJhbmRzWzBdLCA8 TU9ERT5tb2RlKQorKwkgICAmJiAhdmxvZ2ljYWxfb3BlcmFuZCAob3BlcmFuZHNbMV0sIDxNT0RF Pm1vZGUpKQorKyAgICBvcGVyYW5kc1sxXSA9IGZvcmNlX3JlZyAoPE1PREU+bW9kZSwgb3BlcmFu ZHNbMV0pOworK30pCisrCisrOzsgR2VuZXJpYyB2ZWN0b3IgZmxvYXRpbmcgcG9pbnQgbG9hZC9z dG9yZSBpbnN0cnVjdGlvbnMuICBUaGVzZSB3aWxsIG1hdGNoCisrOzsgaW5zbnMgZGVmaW5lZCBp biB2c3gubWQgb3IgYWx0aXZlYy5tZCBkZXBlbmRpbmcgb24gdGhlIHN3aXRjaGVzLgorKyhkZWZp bmVfZXhwYW5kICJ2ZWN0b3JfbG9hZF88bW9kZT4iCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpW RUNfTSAwICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCisrCShtYXRjaF9vcGVyYW5kOlZFQ19NIDEgIm1l bW9yeV9vcGVyYW5kIiAiIikpXQorKyAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19PUl9WU1hfUCAoPE1P REU+bW9kZSkiCisrICAiIikKKysKKysoZGVmaW5lX2V4cGFuZCAidmVjdG9yX3N0b3JlXzxtb2Rl PiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZFQ19NIDAgIm1lbW9yeV9vcGVyYW5kIiAiIikK KysJKG1hdGNoX29wZXJhbmQ6VkVDX00gMSAidmZsb2F0X29wZXJhbmQiICIiKSldCisrICAiVkVD VE9SX01FTV9BTFRJVkVDX09SX1ZTWF9QICg8TU9ERT5tb2RlKSIKKysgICIiKQorKworKzs7IFNw bGl0cyBpZiBhIEdQUiByZWdpc3RlciB3YXMgY2hvc2VuIGZvciB0aGUgbW92ZQorKyhkZWZpbmVf c3BsaXQKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZFQ19MIDAgIm5vbmltbWVkaWF0ZV9vcGVy YW5kIiAiIikKKysgICAgICAgIChtYXRjaF9vcGVyYW5kOlZFQ19MIDEgImlucHV0X29wZXJhbmQi ICIiKSldCisrICAiVkVDVE9SX01FTV9BTFRJVkVDX09SX1ZTWF9QICg8TU9ERT5tb2RlKQorKyAg ICYmIHJlbG9hZF9jb21wbGV0ZWQKKysgICAmJiBncHJfb3JfZ3ByX3AgKG9wZXJhbmRzWzBdLCBv cGVyYW5kc1sxXSkiCisrICBbKHBjKV0KKyt7CisrICByczYwMDBfc3BsaXRfbXVsdGlyZWdfbW92 ZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsKKysgIERPTkU7CisrfSkKKysKKysMCisrOzsg R2VuZXJpYyBmbG9hdGluZyBwb2ludCB2ZWN0b3IgYXJpdGhtZXRpYyBzdXBwb3J0CisrKGRlZmlu ZV9leHBhbmQgImFkZDxtb2RlPjMiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWRUNfRiAwICJ2 ZmxvYXRfb3BlcmFuZCIgIiIpCisrCShwbHVzOlZFQ19GIChtYXRjaF9vcGVyYW5kOlZFQ19GIDEg InZmbG9hdF9vcGVyYW5kIiAiIikKKysJCSAgICAobWF0Y2hfb3BlcmFuZDpWRUNfRiAyICJ2Zmxv YXRfb3BlcmFuZCIgIiIpKSldCisrICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1P REU+bW9kZSkiCisrICAiIikKKysKKysoZGVmaW5lX2V4cGFuZCAic3ViPG1vZGU+MyIKKysgIFso c2V0IChtYXRjaF9vcGVyYW5kOlZFQ19GIDAgInZmbG9hdF9vcGVyYW5kIiAiIikKKysJKG1pbnVz OlZFQ19GIChtYXRjaF9vcGVyYW5kOlZFQ19GIDEgInZmbG9hdF9vcGVyYW5kIiAiIikKKysJCSAg ICAgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMiAidmZsb2F0X29wZXJhbmQiICIiKSkpXQorKyAgIlZF Q1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUpIgorKyAgIiIpCisrCisrKGRl ZmluZV9leHBhbmQgIm11bDxtb2RlPjMiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWRUNfRiAw ICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCisrCShtdWx0OlZFQ19GIChtYXRjaF9vcGVyYW5kOlZFQ19G IDEgInZmbG9hdF9vcGVyYW5kIiAiIikKKysJCSAgICAobWF0Y2hfb3BlcmFuZDpWRUNfRiAyICJ2 ZmxvYXRfb3BlcmFuZCIgIiIpKSldCisrICAiKFZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2Rl KQorKyAgICB8fCAoVkVDVE9SX1VOSVRfQUxUSVZFQ19QICg8TU9ERT5tb2RlKSAmJiBUQVJHRVRf RlVTRURfTUFERCkpIgorKyAgIgorK3sKKysgIGlmICg8TU9ERT5tb2RlID09IFY0U0Ztb2RlICYm IFZFQ1RPUl9VTklUX0FMVElWRUNfUCAoPE1PREU+bW9kZSkpCisrICAgIHsKKysgICAgICBlbWl0 X2luc24gKGdlbl9hbHRpdmVjX211bHY0c2YzIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9w ZXJhbmRzWzJdKSk7CisrICAgICAgRE9ORTsKKysgICAgfQorK30iKQorKworKyhkZWZpbmVfZXhw YW5kICJkaXY8bW9kZT4zIgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMCAidmZsb2F0 X29wZXJhbmQiICIiKQorKwkoZGl2OlZFQ19GIChtYXRjaF9vcGVyYW5kOlZFQ19GIDEgInZmbG9h dF9vcGVyYW5kIiAiIikKKysJCSAgIChtYXRjaF9vcGVyYW5kOlZFQ19GIDIgInZmbG9hdF9vcGVy YW5kIiAiIikpKV0KKysgICJWRUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSkiCisrICAiIikK KysKKysoZGVmaW5lX2V4cGFuZCAibmVnPG1vZGU+MiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5k OlZFQ19GIDAgInZmbG9hdF9vcGVyYW5kIiAiIikKKysJKG5lZzpWRUNfRiAobWF0Y2hfb3BlcmFu ZDpWRUNfRiAxICJ2ZmxvYXRfb3BlcmFuZCIgIiIpKSldCisrICAiVkVDVE9SX1VOSVRfQUxUSVZF Q19PUl9WU1hfUCAoPE1PREU+bW9kZSkiCisrICAiCisreworKyAgaWYgKDxNT0RFPm1vZGUgPT0g VjRTRm1vZGUgJiYgVkVDVE9SX1VOSVRfQUxUSVZFQ19QICg8TU9ERT5tb2RlKSkKKysgICAgewor KyAgICAgIGVtaXRfaW5zbiAoZ2VuX2FsdGl2ZWNfbmVndjRzZjIgKG9wZXJhbmRzWzBdLCBvcGVy YW5kc1sxXSkpOworKyAgICAgIERPTkU7CisrICAgIH0KKyt9IikKKysKKysoZGVmaW5lX2V4cGFu ZCAiYWJzPG1vZGU+MiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZFQ19GIDAgInZmbG9hdF9v cGVyYW5kIiAiIikKKysJKGFiczpWRUNfRiAobWF0Y2hfb3BlcmFuZDpWRUNfRiAxICJ2ZmxvYXRf b3BlcmFuZCIgIiIpKSldCisrICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+ bW9kZSkiCisrICAiCisreworKyAgaWYgKDxNT0RFPm1vZGUgPT0gVjRTRm1vZGUgJiYgVkVDVE9S X1VOSVRfQUxUSVZFQ19QICg8TU9ERT5tb2RlKSkKKysgICAgeworKyAgICAgIGVtaXRfaW5zbiAo Z2VuX2FsdGl2ZWNfYWJzdjRzZjIgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSkpOworKyAgICAg IERPTkU7CisrICAgIH0KKyt9IikKKysKKysoZGVmaW5lX2V4cGFuZCAic21pbjxtb2RlPjMiCisr ICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWRUNfRiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKKysg ICAgICAgIChzbWluOlZFQ19GIChtYXRjaF9vcGVyYW5kOlZFQ19GIDEgInJlZ2lzdGVyX29wZXJh bmQiICIiKQorKwkJICAgIChtYXRjaF9vcGVyYW5kOlZFQ19GIDIgInJlZ2lzdGVyX29wZXJhbmQi ICIiKSkpXQorKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUpIgor KyAgIiIpCisrCisrKGRlZmluZV9leHBhbmQgInNtYXg8bW9kZT4zIgorKyAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6VkVDX0YgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCisrICAgICAgICAoc21heDpW RUNfRiAobWF0Y2hfb3BlcmFuZDpWRUNfRiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKKysJCSAg ICAobWF0Y2hfb3BlcmFuZDpWRUNfRiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikpKV0KKysgICJW RUNUT1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QICg8TU9ERT5tb2RlKSIKKysgICIiKQorKworKwor KyhkZWZpbmVfZXhwYW5kICJzcXJ0PG1vZGU+MiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZF Q19GIDAgInZmbG9hdF9vcGVyYW5kIiAiIikKKysJKHNxcnQ6VkVDX0YgKG1hdGNoX29wZXJhbmQ6 VkVDX0YgMSAidmZsb2F0X29wZXJhbmQiICIiKSkpXQorKyAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8 TU9ERT5tb2RlKSIKKysgICIiKQorKworKyhkZWZpbmVfZXhwYW5kICJmdHJ1bmM8bW9kZT4yIgor KyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMCAidmZsb2F0X29wZXJhbmQiICIiKQorKyAg CShmaXg6VkVDX0YgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMSAidmZsb2F0X29wZXJhbmQiICIiKSkp XQorKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUpIgorKyAgIiIp CisrCisrDAorKzs7IFZlY3RvciBjb21wYXJpc29ucworKyhkZWZpbmVfZXhwYW5kICJ2Y29uZDxt b2RlPiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZFQ19GIDAgInZmbG9hdF9vcGVyYW5kIiAi IikKKysJKGlmX3RoZW5fZWxzZTpWRUNfRgorKwkgKG1hdGNoX29wZXJhdG9yIDMgImNvbXBhcmlz b25fb3BlcmF0b3IiCisrCQkJIFsobWF0Y2hfb3BlcmFuZDpWRUNfRiA0ICJ2ZmxvYXRfb3BlcmFu ZCIgIiIpCisrCQkJICAobWF0Y2hfb3BlcmFuZDpWRUNfRiA1ICJ2ZmxvYXRfb3BlcmFuZCIgIiIp XSkKKysJIChtYXRjaF9vcGVyYW5kOlZFQ19GIDEgInZmbG9hdF9vcGVyYW5kIiAiIikKKysJICht YXRjaF9vcGVyYW5kOlZFQ19GIDIgInZmbG9hdF9vcGVyYW5kIiAiIikpKV0KKysgICJWRUNUT1Jf VU5JVF9BTFRJVkVDX09SX1ZTWF9QICg8TU9ERT5tb2RlKSIKKysgICIKKyt7CisrICBpZiAocnM2 MDAwX2VtaXRfdmVjdG9yX2NvbmRfZXhwciAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVy YW5kc1syXSwKKysJCQkJICAgIG9wZXJhbmRzWzNdLCBvcGVyYW5kc1s0XSwgb3BlcmFuZHNbNV0p KQorKyAgICBET05FOworKyAgZWxzZQorKyAgICBGQUlMOworK30iKQorKworKyhkZWZpbmVfZXhw YW5kICJ2Y29uZDxtb2RlPiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZFQ19JIDAgInZpbnRf b3BlcmFuZCIgIiIpCisrCShpZl90aGVuX2Vsc2U6VkVDX0kKKysJIChtYXRjaF9vcGVyYXRvciAz ICJjb21wYXJpc29uX29wZXJhdG9yIgorKwkJCSBbKG1hdGNoX29wZXJhbmQ6VkVDX0kgNCAidmlu dF9vcGVyYW5kIiAiIikKKysJCQkgIChtYXRjaF9vcGVyYW5kOlZFQ19JIDUgInZpbnRfb3BlcmFu ZCIgIiIpXSkKKysJIChtYXRjaF9vcGVyYW5kOlZFQ19JIDEgInZpbnRfb3BlcmFuZCIgIiIpCisr CSAobWF0Y2hfb3BlcmFuZDpWRUNfSSAyICJ2aW50X29wZXJhbmQiICIiKSkpXQorKyAgIlZFQ1RP Ul9VTklUX0FMVElWRUNfUCAoPE1PREU+bW9kZSkiCisrICAiCisreworKyAgaWYgKHJzNjAwMF9l bWl0X3ZlY3Rvcl9jb25kX2V4cHIgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNb Ml0sCisrCQkJCSAgICBvcGVyYW5kc1szXSwgb3BlcmFuZHNbNF0sIG9wZXJhbmRzWzVdKSkKKysg ICAgRE9ORTsKKysgIGVsc2UKKysgICAgRkFJTDsKKyt9IikKKysKKysoZGVmaW5lX2V4cGFuZCAi dmNvbmR1PG1vZGU+IgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0kgMCAidmludF9vcGVy YW5kIiAiPXYiKQorKwkoaWZfdGhlbl9lbHNlOlZFQ19JCisrCSAobWF0Y2hfb3BlcmF0b3IgMyAi Y29tcGFyaXNvbl9vcGVyYXRvciIKKysJCQkgWyhtYXRjaF9vcGVyYW5kOlZFQ19JIDQgInZpbnRf b3BlcmFuZCIgIiIpCisrCQkJICAobWF0Y2hfb3BlcmFuZDpWRUNfSSA1ICJ2aW50X29wZXJhbmQi ICIiKV0pCisrCSAobWF0Y2hfb3BlcmFuZDpWRUNfSSAxICJ2aW50X29wZXJhbmQiICIiKQorKwkg KG1hdGNoX29wZXJhbmQ6VkVDX0kgMiAidmludF9vcGVyYW5kIiAiIikpKV0KKysgICJWRUNUT1Jf VU5JVF9BTFRJVkVDX1AgKDxNT0RFPm1vZGUpIgorKyAgIgorK3sKKysgIGlmIChyczYwMDBfZW1p dF92ZWN0b3JfY29uZF9leHByIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJd LAorKwkJCQkgICAgb3BlcmFuZHNbM10sIG9wZXJhbmRzWzRdLCBvcGVyYW5kc1s1XSkpCisrICAg IERPTkU7CisrICBlbHNlCisrICAgIEZBSUw7CisrfSIpCisrCisrKGRlZmluZV9leHBhbmQgInZl Y3Rvcl9lcTxtb2RlPiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZFQ19DIDAgInZsb2dpY2Fs X29wZXJhbmQiICIiKQorKwkoZXE6VkVDX0MgKG1hdGNoX29wZXJhbmQ6VkVDX0MgMSAidmxvZ2lj YWxfb3BlcmFuZCIgIiIpCisrCQkgIChtYXRjaF9vcGVyYW5kOlZFQ19DIDIgInZsb2dpY2FsX29w ZXJhbmQiICIiKSkpXQorKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1v ZGUpIgorKyAgIiIpCisrCisrKGRlZmluZV9leHBhbmQgInZlY3Rvcl9ndDxtb2RlPiIKKysgIFso c2V0IChtYXRjaF9vcGVyYW5kOlZFQ19DIDAgInZsb2dpY2FsX29wZXJhbmQiICIiKQorKwkoZ3Q6 VkVDX0MgKG1hdGNoX29wZXJhbmQ6VkVDX0MgMSAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCisrCQkg IChtYXRjaF9vcGVyYW5kOlZFQ19DIDIgInZsb2dpY2FsX29wZXJhbmQiICIiKSkpXQorKyAgIlZF Q1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUpIgorKyAgIiIpCisrCisrKGRl ZmluZV9leHBhbmQgInZlY3Rvcl9nZTxtb2RlPiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZF Q19DIDAgInZsb2dpY2FsX29wZXJhbmQiICIiKQorKwkoZ2U6VkVDX0MgKG1hdGNoX29wZXJhbmQ6 VkVDX0MgMSAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCisrCQkgIChtYXRjaF9vcGVyYW5kOlZFQ19D IDIgInZsb2dpY2FsX29wZXJhbmQiICIiKSkpXQorKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfT1Jf VlNYX1AgKDxNT0RFPm1vZGUpIgorKyAgIiIpCisrCisrKGRlZmluZV9leHBhbmQgInZlY3Rvcl9n dHU8bW9kZT4iCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWRUNfSSAwICJ2aW50X29wZXJhbmQi ICIiKQorKwkoZ3R1OlZFQ19JIChtYXRjaF9vcGVyYW5kOlZFQ19JIDEgInZpbnRfb3BlcmFuZCIg IiIpCisrCQkgICAobWF0Y2hfb3BlcmFuZDpWRUNfSSAyICJ2aW50X29wZXJhbmQiICIiKSkpXQor KyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfUCAoPE1PREU+bW9kZSkiCisrICAiIikKKysKKysoZGVm aW5lX2V4cGFuZCAidmVjdG9yX2dldTxtb2RlPiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZF Q19JIDAgInZpbnRfb3BlcmFuZCIgIiIpCisrCShnZXU6VkVDX0kgKG1hdGNoX29wZXJhbmQ6VkVD X0kgMSAidmludF9vcGVyYW5kIiAiIikKKysJCSAgIChtYXRjaF9vcGVyYW5kOlZFQ19JIDIgInZp bnRfb3BlcmFuZCIgIiIpKSldCisrICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19QICg8TU9ERT5tb2Rl KSIKKysgICIiKQorKworKzs7IE5vdGUgdGhlIGFyZ3VtZW50cyBmb3IgX19idWlsdGluX2FsdGl2 ZWNfdnNlbCBhcmUgb3AyLCBvcDEsIG1hc2sKKys7OyB3aGljaCBpcyBpbiB0aGUgcmV2ZXJzZSBv cmRlciB0aGF0IHdlIHdhbnQKKysoZGVmaW5lX2V4cGFuZCAidmVjdG9yX3ZzZWw8bW9kZT4iCisr ICBbKG1hdGNoX29wZXJhbmQ6VkVDX0YgMCAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCisrICAgKG1h dGNoX29wZXJhbmQ6VkVDX0YgMSAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCisrICAgKG1hdGNoX29w ZXJhbmQ6VkVDX0YgMiAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCisrICAgKG1hdGNoX29wZXJhbmQ6 VkVDX0YgMyAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpXQorKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNf T1JfVlNYX1AgKDxNT0RFPm1vZGUpIgorKyAgIgorK3sKKysgIGlmIChWRUNUT1JfVU5JVF9WU1hf UCAoPE1PREU+bW9kZSkpCisrICAgIGVtaXRfaW5zbiAoZ2VuX3ZzeF92c2VsPG1vZGU+IChvcGVy YW5kc1swXSwgb3BlcmFuZHNbM10sCisrCQkJCSAgIG9wZXJhbmRzWzJdLCBvcGVyYW5kc1sxXSkp OworKyAgZWxzZQorKyAgICBlbWl0X2luc24gKGdlbl9hbHRpdmVjX3ZzZWw8bW9kZT4gKG9wZXJh bmRzWzBdLCBvcGVyYW5kc1szXSwKKysJCQkJICAgICAgIG9wZXJhbmRzWzJdLCBvcGVyYW5kc1sx XSkpOworKyAgRE9ORTsKKyt9IikKKysKKysoZGVmaW5lX2V4cGFuZCAidmVjdG9yX3ZzZWw8bW9k ZT4iCisrICBbKG1hdGNoX29wZXJhbmQ6VkVDX0kgMCAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCisr ICAgKG1hdGNoX29wZXJhbmQ6VkVDX0kgMSAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCisrICAgKG1h dGNoX29wZXJhbmQ6VkVDX0kgMiAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCisrICAgKG1hdGNoX29w ZXJhbmQ6VkVDX0kgMyAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpXQorKyAgIlZFQ1RPUl9VTklUX0FM VElWRUNfUCAoPE1PREU+bW9kZSkiCisrICAiCisreworKyAgZW1pdF9pbnNuIChnZW5fYWx0aXZl Y192c2VsPG1vZGU+IChvcGVyYW5kc1swXSwgb3BlcmFuZHNbM10sCisrCQkJCSAgICAgb3BlcmFu ZHNbMl0sIG9wZXJhbmRzWzFdKSk7CisrICBET05FOworK30iKQorKworKwwKKys7OyBWZWN0b3Ig bG9naWNhbCBpbnN0cnVjdGlvbnMKKysoZGVmaW5lX2V4cGFuZCAieG9yPG1vZGU+MyIKKysgIFso c2V0IChtYXRjaF9vcGVyYW5kOlZFQ19MIDAgInZsb2dpY2FsX29wZXJhbmQiICIiKQorKyAgICAg ICAgKHhvcjpWRUNfTCAobWF0Y2hfb3BlcmFuZDpWRUNfTCAxICJ2bG9naWNhbF9vcGVyYW5kIiAi IikKKysJCSAgIChtYXRjaF9vcGVyYW5kOlZFQ19MIDIgInZsb2dpY2FsX29wZXJhbmQiICIiKSkp XQorKyAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkiCisrICAiIikK KysKKysoZGVmaW5lX2V4cGFuZCAiaW9yPG1vZGU+MyIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5k OlZFQ19MIDAgInZsb2dpY2FsX29wZXJhbmQiICIiKQorKyAgICAgICAgKGlvcjpWRUNfTCAobWF0 Y2hfb3BlcmFuZDpWRUNfTCAxICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKKysJCSAgIChtYXRjaF9v cGVyYW5kOlZFQ19MIDIgInZsb2dpY2FsX29wZXJhbmQiICIiKSkpXQorKyAgIlZFQ1RPUl9NRU1f QUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkiCisrICAiIikKKysKKysoZGVmaW5lX2V4cGFu ZCAiYW5kPG1vZGU+MyIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZFQ19MIDAgInZsb2dpY2Fs X29wZXJhbmQiICIiKQorKyAgICAgICAgKGFuZDpWRUNfTCAobWF0Y2hfb3BlcmFuZDpWRUNfTCAx ICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKKysJCSAgIChtYXRjaF9vcGVyYW5kOlZFQ19MIDIgInZs b2dpY2FsX29wZXJhbmQiICIiKSkpXQorKyAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19PUl9WU1hfUCAo PE1PREU+bW9kZSkiCisrICAiIikKKysKKysoZGVmaW5lX2V4cGFuZCAib25lX2NtcGw8bW9kZT4y IgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0wgMCAidmxvZ2ljYWxfb3BlcmFuZCIgIiIp CisrICAgICAgICAobm90OlZFQ19MIChtYXRjaF9vcGVyYW5kOlZFQ19MIDEgInZsb2dpY2FsX29w ZXJhbmQiICIiKSkpXQorKyAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9k ZSkiCisrICAiIikKKysgIAorKyhkZWZpbmVfZXhwYW5kICJub3I8bW9kZT4zIgorKyAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6VkVDX0wgMCAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCisrICAgICAgICAo bm90OlZFQ19MIChpb3I6VkVDX0wgKG1hdGNoX29wZXJhbmQ6VkVDX0wgMSAidmxvZ2ljYWxfb3Bl cmFuZCIgIiIpCisrCQkJICAgICAgKG1hdGNoX29wZXJhbmQ6VkVDX0wgMiAidmxvZ2ljYWxfb3Bl cmFuZCIgIiIpKSkpXQorKyAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9k ZSkiCisrICAiIikKKysKKysoZGVmaW5lX2V4cGFuZCAiYW5kYzxtb2RlPjMiCisrICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpWRUNfTCAwICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKKysgICAgICAgIChh bmQ6VkVDX0wgKG5vdDpWRUNfTCAobWF0Y2hfb3BlcmFuZDpWRUNfTCAyICJ2bG9naWNhbF9vcGVy YW5kIiAiIikpCisrCQkgICAobWF0Y2hfb3BlcmFuZDpWRUNfTCAxICJ2bG9naWNhbF9vcGVyYW5k IiAiIikpKV0KKysgICJWRUNUT1JfTUVNX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUpIgor KyAgIiIpCisrCisrOzsgU2FtZSBzaXplIGNvbnZlcnNpb25zCisrKGRlZmluZV9leHBhbmQgImZs b2F0PFZFQ19pbnQ+PG1vZGU+MiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZFQ19GIDAgInZm bG9hdF9vcGVyYW5kIiAiIikKKysJKGZsb2F0OlZFQ19GIChtYXRjaF9vcGVyYW5kOjxWRUNfSU5U PiAxICJ2aW50X29wZXJhbmQiICIiKSkpXQorKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfT1JfVlNY X1AgKDxNT0RFPm1vZGUpIgorKyAgIgorK3sKKysgIGlmICg8TU9ERT5tb2RlID09IFY0U0Ztb2Rl ICYmIFZFQ1RPUl9VTklUX0FMVElWRUNfUCAoPE1PREU+bW9kZSkpCisrICAgIHsKKysgICAgICBl bWl0X2luc24gKGdlbl9hbHRpdmVjX3ZjZnN4IChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIGNv bnN0MF9ydHgpKTsKKysgICAgICBET05FOworKyAgICB9CisrfSIpCisrCisrKGRlZmluZV9leHBh bmQgInVuc2lnbmVkX2Zsb2F0PFZFQ19pbnQ+PG1vZGU+MiIKKysgIFsoc2V0IChtYXRjaF9vcGVy YW5kOlZFQ19GIDAgInZmbG9hdF9vcGVyYW5kIiAiIikKKysJKHVuc2lnbmVkX2Zsb2F0OlZFQ19G IChtYXRjaF9vcGVyYW5kOjxWRUNfSU5UPiAxICJ2aW50X29wZXJhbmQiICIiKSkpXQorKyAgIlZF Q1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUpIgorKyAgIgorK3sKKysgIGlm ICg8TU9ERT5tb2RlID09IFY0U0Ztb2RlICYmIFZFQ1RPUl9VTklUX0FMVElWRUNfUCAoPE1PREU+ bW9kZSkpCisrICAgIHsKKysgICAgICBlbWl0X2luc24gKGdlbl9hbHRpdmVjX3ZjZnV4IChvcGVy YW5kc1swXSwgb3BlcmFuZHNbMV0sIGNvbnN0MF9ydHgpKTsKKysgICAgICBET05FOworKyAgICB9 CisrfSIpCisrCisrKGRlZmluZV9leHBhbmQgImZpeF90cnVuYzxtb2RlPjxWRUNfaW50PjIiCisr ICBbKHNldCAobWF0Y2hfb3BlcmFuZDo8VkVDX0lOVD4gMCAidmludF9vcGVyYW5kIiAiIikKKysJ KGZpeDo8VkVDX0lOVD4gKG1hdGNoX29wZXJhbmQ6VkVDX0YgMSAidmZsb2F0X29wZXJhbmQiICIi KSkpXQorKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUpIgorKyAg IgorK3sKKysgIGlmICg8TU9ERT5tb2RlID09IFY0U0Ztb2RlICYmIFZFQ1RPUl9VTklUX0FMVElW RUNfUCAoPE1PREU+bW9kZSkpCisrICAgIHsKKysgICAgICBlbWl0X2luc24gKGdlbl9hbHRpdmVj X3ZjdHN4cyAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBjb25zdDBfcnR4KSk7CisrICAgICAg RE9ORTsKKysgICAgfQorK30iKQorKworKyhkZWZpbmVfZXhwYW5kICJmaXh1bnNfdHJ1bmM8bW9k ZT48VkVDX2ludD4yIgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6PFZFQ19JTlQ+IDAgInZpbnRf b3BlcmFuZCIgIiIpCisrCSh1bnNpZ25lZF9maXg6PFZFQ19JTlQ+IChtYXRjaF9vcGVyYW5kOlZF Q19GIDEgInZmbG9hdF9vcGVyYW5kIiAiIikpKV0KKysgICJWRUNUT1JfVU5JVF9BTFRJVkVDX09S X1ZTWF9QICg8TU9ERT5tb2RlKSIKKysgICIKKyt7CisrICBpZiAoPE1PREU+bW9kZSA9PSBWNFNG bW9kZSAmJiBWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKDxNT0RFPm1vZGUpKQorKyAgICB7CisrICAg ICAgZW1pdF9pbnNuIChnZW5fYWx0aXZlY192Y3R1eHMgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sx XSwgY29uc3QwX3J0eCkpOworKyAgICAgIERPTkU7CisrICAgIH0KKyt9IikKKysKKysMCisrOzsg VmVjdG9yIGluaXRpYWxpemF0aW9uLCBzZXQsIGV4dHJhY3QKKysoZGVmaW5lX2V4cGFuZCAidmVj X2luaXQ8bW9kZT4iCisrICBbKG1hdGNoX29wZXJhbmQ6VkVDX0MgMCAidmxvZ2ljYWxfb3BlcmFu ZCIgIiIpCisrICAgKG1hdGNoX29wZXJhbmQ6VkVDX0MgMSAidmVjX2luaXRfb3BlcmFuZCIgIiIp XQorKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUpIgorK3sKKysg IHJzNjAwMF9leHBhbmRfdmVjdG9yX2luaXQgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7Cisr ICBET05FOworK30pCisrCisrKGRlZmluZV9leHBhbmQgInZlY19zZXQ8bW9kZT4iCisrICBbKG1h dGNoX29wZXJhbmQ6VkVDX0MgMCAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCisrICAgKG1hdGNoX29w ZXJhbmQ6PFZFQ19iYXNlPiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKKysgICAobWF0Y2hfb3Bl cmFuZCAyICJjb25zdF9pbnRfb3BlcmFuZCIgIiIpXQorKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNf T1JfVlNYX1AgKDxNT0RFPm1vZGUpIgorK3sKKysgIHJzNjAwMF9leHBhbmRfdmVjdG9yX3NldCAo b3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBJTlRWQUwgKG9wZXJhbmRzWzJdKSk7CisrICBET05F OworK30pCisrCisrKGRlZmluZV9leHBhbmQgInZlY19leHRyYWN0PG1vZGU+IgorKyAgWyhtYXRj aF9vcGVyYW5kOjxWRUNfYmFzZT4gMCAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCisrICAgKG1hdGNo X29wZXJhbmQ6VkVDX0MgMSAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCisrICAgKG1hdGNoX29wZXJh bmQgMiAiY29uc3RfaW50X29wZXJhbmQiICIiKV0KKysgICJWRUNUT1JfVU5JVF9BTFRJVkVDX09S X1ZTWF9QICg8TU9ERT5tb2RlKSIKKyt7CisrICByczYwMDBfZXhwYW5kX3ZlY3Rvcl9leHRyYWN0 IChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sCisrCQkJCUlOVFZBTCAob3BlcmFuZHNbMl0pKTsK KysgIERPTkU7CisrfSkKKysKKys7OyBJbnRlcmxlYXZlIHBhdHRlcm5zCisrKGRlZmluZV9leHBh bmQgInZlY19pbnRlcmxlYXZlX2hpZ2h2NHNmIgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRT RiAwICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCisrICAgICAgICAodmVjX21lcmdlOlY0U0YKKysJICh2 ZWNfc2VsZWN0OlY0U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJ2ZmxvYXRfb3BlcmFuZCIgIiIp CisrCQkJICAocGFyYWxsZWwgWyhjb25zdF9pbnQgMCkKKysJCQkJICAgICAoY29uc3RfaW50IDIp CisrCQkJCSAgICAgKGNvbnN0X2ludCAxKQorKwkJCQkgICAgIChjb25zdF9pbnQgMyldKSkKKysJ ICh2ZWNfc2VsZWN0OlY0U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAyICJ2ZmxvYXRfb3BlcmFuZCIg IiIpCisrCQkJICAocGFyYWxsZWwgWyhjb25zdF9pbnQgMikKKysJCQkJICAgICAoY29uc3RfaW50 IDApCisrCQkJCSAgICAgKGNvbnN0X2ludCAzKQorKwkJCQkgICAgIChjb25zdF9pbnQgMSldKSkK KysJIChjb25zdF9pbnQgNSkpKV0KKysgICJWRUNUT1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QIChW NFNGbW9kZSkiCisrICAiIikKKysKKysoZGVmaW5lX2V4cGFuZCAidmVjX2ludGVybGVhdmVfbG93 djRzZiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAidmZsb2F0X29wZXJhbmQiICIi KQorKyAgICAgICAgKHZlY19tZXJnZTpWNFNGCisrCSAodmVjX3NlbGVjdDpWNFNGIChtYXRjaF9v cGVyYW5kOlY0U0YgMSAidmZsb2F0X29wZXJhbmQiICIiKQorKwkJCSAgKHBhcmFsbGVsIFsoY29u c3RfaW50IDIpCisrCQkJCSAgICAgKGNvbnN0X2ludCAwKQorKwkJCQkgICAgIChjb25zdF9pbnQg MykKKysJCQkJICAgICAoY29uc3RfaW50IDEpXSkpCisrCSAodmVjX3NlbGVjdDpWNFNGIChtYXRj aF9vcGVyYW5kOlY0U0YgMiAidmZsb2F0X29wZXJhbmQiICIiKQorKwkJCSAgKHBhcmFsbGVsIFso Y29uc3RfaW50IDApCisrCQkJCSAgICAgKGNvbnN0X2ludCAyKQorKwkJCQkgICAgIChjb25zdF9p bnQgMSkKKysJCQkJICAgICAoY29uc3RfaW50IDMpXSkpCisrCSAoY29uc3RfaW50IDUpKSldCisr ICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoVjRTRm1vZGUpIgorKyAgIiIpCisrCisr KGRlZmluZV9leHBhbmQgInZlY19pbnRlcmxlYXZlX2hpZ2h2MmRmIgorKyAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6VjJERiAwICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCisrCSh2ZWNfY29uY2F0OlYyREYK KysJICh2ZWNfc2VsZWN0OkRGIChtYXRjaF9vcGVyYW5kOlYyREYgMSAidmZsb2F0X29wZXJhbmQi ICIiKQorKwkJCShwYXJhbGxlbCBbKGNvbnN0X2ludCAwKV0pKQorKwkgKHZlY19zZWxlY3Q6REYg KG1hdGNoX29wZXJhbmQ6VjJERiAyICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCisrCQkJKHBhcmFsbGVs IFsoY29uc3RfaW50IDApXSkpKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKFYyREZtb2RlKSIK KysgICIiKQorKworKyhkZWZpbmVfZXhwYW5kICJ2ZWNfaW50ZXJsZWF2ZV9sb3d2MmRmIgorKyAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6VjJERiAwICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCisrCSh2ZWNf Y29uY2F0OlYyREYKKysJICh2ZWNfc2VsZWN0OkRGIChtYXRjaF9vcGVyYW5kOlYyREYgMSAidmZs b2F0X29wZXJhbmQiICIiKQorKwkJCShwYXJhbGxlbCBbKGNvbnN0X2ludCAxKV0pKQorKwkgKHZl Y19zZWxlY3Q6REYgKG1hdGNoX29wZXJhbmQ6VjJERiAyICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCisr CQkJKHBhcmFsbGVsIFsoY29uc3RfaW50IDEpXSkpKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1Ag KFYyREZtb2RlKSIKKysgICIiKQorKworKzs7IEZvciAyIGVsZW1lbnQgdmVjdG9ycywgZXZlbi9v ZGQgaXMgdGhlIHNhbWUgYXMgaGlnaC9sb3cKKysoZGVmaW5lX2V4cGFuZCAidmVjX2V4dHJhY3Rf ZXZlbnYyZGYiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMkRGIDAgInZmbG9hdF9vcGVyYW5k IiAiIikKKysJKHZlY19jb25jYXQ6VjJERgorKwkgKHZlY19zZWxlY3Q6REYgKG1hdGNoX29wZXJh bmQ6VjJERiAxICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCisrCQkJKHBhcmFsbGVsIFsoY29uc3RfaW50 IDApXSkpCisrCSAodmVjX3NlbGVjdDpERiAobWF0Y2hfb3BlcmFuZDpWMkRGIDIgInZmbG9hdF9v cGVyYW5kIiAiIikKKysJCQkocGFyYWxsZWwgWyhjb25zdF9pbnQgMCldKSkpKV0KKysgICJWRUNU T1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgorKyAgIiIpCisrCisrKGRlZmluZV9leHBhbmQgInZl Y19leHRyYWN0X29kZHYyZGYiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMkRGIDAgInZmbG9h dF9vcGVyYW5kIiAiIikKKysJKHZlY19jb25jYXQ6VjJERgorKwkgKHZlY19zZWxlY3Q6REYgKG1h dGNoX29wZXJhbmQ6VjJERiAxICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCisrCQkJKHBhcmFsbGVsIFso Y29uc3RfaW50IDEpXSkpCisrCSAodmVjX3NlbGVjdDpERiAobWF0Y2hfb3BlcmFuZDpWMkRGIDIg InZmbG9hdF9vcGVyYW5kIiAiIikKKysJCQkocGFyYWxsZWwgWyhjb25zdF9pbnQgMSldKSkpKV0K KysgICJWRUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgorKyAgIiIpCistLS0gZ2NjL2NvbmZp Zy9yczYwMDAvc3BlLm1kCSguLi4vdHJ1bmspCShyZXZpc2lvbiAxNDQ1NTcpCisrKysgZ2NjL2Nv bmZpZy9yczYwMDAvc3BlLm1kCSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJl dmlzaW9uIDE0NDY5MikKK0BAIC05OSw3ICs5OSw3IEBAIChkZWZpbmVfaW5zbiAiKmRpdnNmM19n cHIiCisgCisgOzsgRmxvYXRpbmcgcG9pbnQgY29udmVyc2lvbiBpbnN0cnVjdGlvbnMuCisgCist KGRlZmluZV9pbnNuICJmaXh1bnNfdHJ1bmNkZnNpMiIKKysoZGVmaW5lX2luc24gInNwZV9maXh1 bnNfdHJ1bmNkZnNpMiIKKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3Bl cmFuZCIgIj1yIikKKyAJKHVuc2lnbmVkX2ZpeDpTSSAobWF0Y2hfb3BlcmFuZDpERiAxICJncGNf cmVnX29wZXJhbmQiICJyIikpKV0KKyAgICJUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRTUw MF9ET1VCTEUiCistLS0gZ2NjL2NvbmZpZy9yczYwMDAvY29uc3RyYWludHMubWQJKC4uLi90cnVu aykJKHJldmlzaW9uIDE0NDU1NykKKysrKyBnY2MvY29uZmlnL3JzNjAwMC9jb25zdHJhaW50cy5t ZAkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDQ2OTIpCitA QCAtMTcsNiArMTcsOCBAQAorIDs7IGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlO RzMuICBJZiBub3Qgc2VlCisgOzsgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIAor Kzs7IEF2YWlsYWJsZSBjb25zdHJhaW50IGxldHRlcnM6ICJlIiwgImsiLCAidSIsICJBIiwgIkIi LCAiQyIsICJEIgorKworIDs7IFJlZ2lzdGVyIGNvbnN0cmFpbnRzCisgCisgKGRlZmluZV9yZWdp c3Rlcl9jb25zdHJhaW50ICJmIiAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMKK0BA IC01MCw2ICs1MiwyMyBAQCAoZGVmaW5lX3JlZ2lzdGVyX2NvbnN0cmFpbnQgInkiICJDUl9SRUdT CisgKGRlZmluZV9yZWdpc3Rlcl9jb25zdHJhaW50ICJ6IiAiWEVSX1JFR1MiCisgICAiQGludGVy bmFsIikKKyAKKys7OyBVc2UgdyBhcyBhIHByZWZpeCB0byBhZGQgVlNYIG1vZGVzCisrOzsgdmVj dG9yIGRvdWJsZSAoVjJERikKKysoZGVmaW5lX3JlZ2lzdGVyX2NvbnN0cmFpbnQgIndkIiAicnM2 MDAwX3ZlY3Rvcl9yZWdfY2xhc3NbVjJERm1vZGVdIgorKyAgIkBpbnRlcm5hbCIpCisrCisrOzsg dmVjdG9yIGZsb2F0IChWNFNGKQorKyhkZWZpbmVfcmVnaXN0ZXJfY29uc3RyYWludCAid2YiICJy czYwMDBfdmVjdG9yX3JlZ19jbGFzc1tWNFNGbW9kZV0iCisrICAiQGludGVybmFsIikKKysKKys7 OyBzY2FsYXIgZG91YmxlIChERikKKysoZGVmaW5lX3JlZ2lzdGVyX2NvbnN0cmFpbnQgIndzIiAi cnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3NbREZtb2RlXSIKKysgICJAaW50ZXJuYWwiKQorKworKzs7 IGFueSBWU1ggcmVnaXN0ZXIKKysoZGVmaW5lX3JlZ2lzdGVyX2NvbnN0cmFpbnQgIndhIiAicnM2 MDAwX3ZzeF9yZWdfY2xhc3MiCisrICAiQGludGVybmFsIikKKysKKyA7OyBJbnRlZ2VyIGNvbnN0 cmFpbnRzCisgCisgKGRlZmluZV9jb25zdHJhaW50ICJJIgorQEAgLTE1OSwzICsxNzgsNyBAQCAo ZGVmaW5lX2NvbnN0cmFpbnQgInQiCisgKGRlZmluZV9jb25zdHJhaW50ICJXIgorICAgInZlY3Rv ciBjb25zdGFudCB0aGF0IGRvZXMgbm90IHJlcXVpcmUgbWVtb3J5IgorICAgKG1hdGNoX29wZXJh bmQgMCAiZWFzeV92ZWN0b3JfY29uc3RhbnQiKSkKKysKKysoZGVmaW5lX2NvbnN0cmFpbnQgImoi CisrICAiWmVybyB2ZWN0b3IgY29uc3RhbnQiCisrICAobWF0Y2hfdGVzdCAiKG9wID09IGNvbnN0 MF9ydHggfHwgb3AgPT0gQ09OU1QwX1JUWCAoR0VUX01PREUgKG9wKSkpIikpCistLS0gZ2NjL2Nv bmZpZy9yczYwMDAvcHJlZGljYXRlcy5tZAkoLi4uL3RydW5rKQkocmV2aXNpb24gMTQ0NTU3KQor KysrIGdjYy9jb25maWcvcnM2MDAwL3ByZWRpY2F0ZXMubWQJKC4uLi9icmFuY2hlcy9pYm0vcG93 ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ0NjkyKQorQEAgLTM4LDYgKzM4LDM3IEBAIChkZWZp bmVfcHJlZGljYXRlICJhbHRpdmVjX3JlZ2lzdGVyX29wZXIKKyAJCSAgICAgfHwgQUxUSVZFQ19S RUdOT19QIChSRUdOTyAob3ApKQorIAkJICAgICB8fCBSRUdOTyAob3ApID4gTEFTVF9WSVJUVUFM X1JFR0lTVEVSIikpKQorIAorKzs7IFJldHVybiAxIGlmIG9wIGlzIGEgVlNYIHJlZ2lzdGVyLgor KyhkZWZpbmVfcHJlZGljYXRlICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIKKysgICAoYW5kIChtYXRj aF9vcGVyYW5kIDAgInJlZ2lzdGVyX29wZXJhbmQiKQorKwkobWF0Y2hfdGVzdCAiR0VUX0NPREUg KG9wKSAhPSBSRUcKKysJCSAgICAgfHwgVlNYX1JFR05PX1AgKFJFR05PIChvcCkpCisrCQkgICAg IHx8IFJFR05PIChvcCkgPiBMQVNUX1ZJUlRVQUxfUkVHSVNURVIiKSkpCisrCisrOzsgUmV0dXJu IDEgaWYgb3AgaXMgYSB2ZWN0b3IgcmVnaXN0ZXIgdGhhdCBvcGVyYXRlcyBvbiBmbG9hdGluZyBw b2ludCB2ZWN0b3JzCisrOzsgKGVpdGhlciBhbHRpdmVjIG9yIFZTWCkuCisrKGRlZmluZV9wcmVk aWNhdGUgInZmbG9hdF9vcGVyYW5kIgorKyAgIChhbmQgKG1hdGNoX29wZXJhbmQgMCAicmVnaXN0 ZXJfb3BlcmFuZCIpCisrCShtYXRjaF90ZXN0ICJHRVRfQ09ERSAob3ApICE9IFJFRworKwkJICAg ICB8fCBWRkxPQVRfUkVHTk9fUCAoUkVHTk8gKG9wKSkKKysJCSAgICAgfHwgUkVHTk8gKG9wKSA+ IExBU1RfVklSVFVBTF9SRUdJU1RFUiIpKSkKKysKKys7OyBSZXR1cm4gMSBpZiBvcCBpcyBhIHZl Y3RvciByZWdpc3RlciB0aGF0IG9wZXJhdGVzIG9uIGludGVnZXIgdmVjdG9ycworKzs7IChvbmx5 IGFsdGl2ZWMsIFZTWCBkb2Vzbid0IHN1cHBvcnQgaW50ZWdlciB2ZWN0b3JzKQorKyhkZWZpbmVf cHJlZGljYXRlICJ2aW50X29wZXJhbmQiCisrICAgKGFuZCAobWF0Y2hfb3BlcmFuZCAwICJyZWdp c3Rlcl9vcGVyYW5kIikKKysJKG1hdGNoX3Rlc3QgIkdFVF9DT0RFIChvcCkgIT0gUkVHCisrCQkg ICAgIHx8IFZJTlRfUkVHTk9fUCAoUkVHTk8gKG9wKSkKKysJCSAgICAgfHwgUkVHTk8gKG9wKSA+ IExBU1RfVklSVFVBTF9SRUdJU1RFUiIpKSkKKysKKys7OyBSZXR1cm4gMSBpZiBvcCBpcyBhIHZl Y3RvciByZWdpc3RlciB0byBkbyBsb2dpY2FsIG9wZXJhdGlvbnMgb24gKGFuZCwgb3IsCisrOzsg eG9yLCBldGMuKQorKyhkZWZpbmVfcHJlZGljYXRlICJ2bG9naWNhbF9vcGVyYW5kIgorKyAgIChh bmQgKG1hdGNoX29wZXJhbmQgMCAicmVnaXN0ZXJfb3BlcmFuZCIpCisrCShtYXRjaF90ZXN0ICJH RVRfQ09ERSAob3ApICE9IFJFRworKwkJICAgICB8fCBWTE9HSUNBTF9SRUdOT19QIChSRUdOTyAo b3ApKQorKwkJICAgICB8fCBSRUdOTyAob3ApID4gTEFTVF9WSVJUVUFMX1JFR0lTVEVSIikpKQor KworIDs7IFJldHVybiAxIGlmIG9wIGlzIFhFUiByZWdpc3Rlci4KKyAoZGVmaW5lX3ByZWRpY2F0 ZSAieGVyX29wZXJhbmQiCisgICAoYW5kIChtYXRjaF9jb2RlICJyZWciKQorQEAgLTIzNCw2ICsy NjUsMTAgQEAgKGRlZmluZV9wcmVkaWNhdGUgImVhc3lfZnBfY29uc3RhbnQiCisgCSAgICAgICYm IG51bV9pbnNuc19jb25zdGFudF93aWRlICgoSE9TVF9XSURFX0lOVCkga1szXSkgPT0gMSk7Cisg CisgICAgIGNhc2UgREZtb2RlOgorKyAgICAgIC8qIFRoZSBjb25zdGFudCAwLmYgaXMgZWFzeSB1 bmRlciBWU1guICAqLworKyAgICAgIGlmIChvcCA9PSBDT05TVDBfUlRYIChERm1vZGUpICYmIFZF Q1RPUl9VTklUX1ZTWF9QIChERm1vZGUpKQorKwlyZXR1cm4gMTsKKysKKyAgICAgICAvKiBGb3Jj ZSBjb25zdGFudHMgdG8gbWVtb3J5IGJlZm9yZSByZWxvYWQgdG8gdXRpbGl6ZQorIAkgY29tcHJl c3NfZmxvYXRfY29uc3RhbnQuCisgCSBBdm9pZCB0aGlzIHdoZW4gZmxhZ191bnNhZmVfbWF0aF9v cHRpbWl6YXRpb25zIGlzIGVuYWJsZWQKK0BAIC0zOTYsMTMgKzQzMSwxNiBAQCAoZGVmaW5lX3By ZWRpY2F0ZSAiaW5kZXhlZF9vcl9pbmRpcmVjdF9vCisgICAobWF0Y2hfY29kZSAibWVtIikKKyB7 CisgICBvcCA9IFhFWFAgKG9wLCAwKTsKKy0gIGlmIChUQVJHRVRfQUxUSVZFQworLSAgICAgICYm IEFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUpCisrICBpZiAoVkVDVE9SX01FTV9BTFRJVkVDX1Ag KG1vZGUpCisgICAgICAgJiYgR0VUX0NPREUgKG9wKSA9PSBBTkQKKyAgICAgICAmJiBHRVRfQ09E RSAoWEVYUCAob3AsIDEpKSA9PSBDT05TVF9JTlQKKyAgICAgICAmJiBJTlRWQUwgKFhFWFAgKG9w LCAxKSkgPT0gLTE2KQorICAgICBvcCA9IFhFWFAgKG9wLCAwKTsKKyAKKysgIGVsc2UgaWYgKFZF Q1RPUl9NRU1fVlNYX1AgKG1vZGUpCisrCSAgICYmIEdFVF9DT0RFIChvcCkgPT0gUFJFX01PRElG WSkKKysgICAgb3AgPSBYRVhQIChvcCwgMSk7CisrCisgICByZXR1cm4gaW5kZXhlZF9vcl9pbmRp cmVjdF9hZGRyZXNzIChvcCwgbW9kZSk7CisgfSkKKyAKK0BAIC0xMzM2LDMgKzEzNzQsMTkgQEAg KGRlZmluZV9wcmVkaWNhdGUgInN0bXdfb3BlcmF0aW9uIgorIAorICAgcmV0dXJuIDE7CisgfSkK KysKKys7OyBSZXR1cm4gdHJ1ZSBpZiB0aGUgb3BlcmFuZCBpcyBhIGxlZ2l0aW1hdGUgcGFyYWxs ZWwgZm9yIHZlY19pbml0CisrKGRlZmluZV9wcmVkaWNhdGUgInZlY19pbml0X29wZXJhbmQiCisr ICAobWF0Y2hfY29kZSAicGFyYWxsZWwiKQorK3sKKysgIC8qIERpc2FsbG93IFYyREYgbW9kZSB3 aXRoIE1FTSdzIHVubGVzcyBib3RoIGFyZSB0aGUgc2FtZSB1bmRlciBWU1guICAqLworKyAgaWYg KG1vZGUgPT0gVjJERm1vZGUgJiYgVkVDVE9SX1VOSVRfVlNYX1AgKG1vZGUpKQorKyAgICB7Cisr ICAgICAgcnR4IG9wMCA9IFhWRUNFWFAgKG9wLCAwLCAwKTsKKysgICAgICBydHggb3AxID0gWFZF Q0VYUCAob3AsIDAsIDEpOworKyAgICAgIGlmICgoTUVNX1AgKG9wMCkgfHwgTUVNX1AgKG9wMSkp ICYmICFydHhfZXF1YWxfcCAob3AwLCBvcDEpKQorKwlyZXR1cm4gMDsKKysgICAgfQorKworKyAg cmV0dXJuIDE7CisrfSkKKy0tLSBnY2MvY29uZmlnL3JzNjAwMC9wcGMtYXNtLmgJKC4uLi90cnVu aykJKHJldmlzaW9uIDE0NDU1NykKKysrKyBnY2MvY29uZmlnL3JzNjAwMC9wcGMtYXNtLmgJKC4u Li9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ0NjkyKQorQEAgLTYz LDcgKzYzLDcgQEAKKyAjZGVmaW5lIGYxNgkxNgorICNkZWZpbmUgZjE3CTE3CisgI2RlZmluZSBm MTgJMTgKKy0jZGVmaW5lIGYxOSAgICAgMTkKKysjZGVmaW5lIGYxOQkxOQorICNkZWZpbmUgZjIw CTIwCisgI2RlZmluZSBmMjEJMjEKKyAjZGVmaW5lIGYyMgkyMgorQEAgLTc3LDYgKzc3LDE0MyBA QAorICNkZWZpbmUgZjMwCTMwCisgI2RlZmluZSBmMzEJMzEKKyAKKysjaWZkZWYgX19WU1hfXwor KyNkZWZpbmUgZjMyCTMyCisrI2RlZmluZSBmMzMJMzMKKysjZGVmaW5lIGYzNAkzNAorKyNkZWZp bmUgZjM1CTM1CisrI2RlZmluZSBmMzYJMzYKKysjZGVmaW5lIGYzNwkzNworKyNkZWZpbmUgZjM4 CTM4CisrI2RlZmluZSBmMzkJMzkKKysjZGVmaW5lIGY0MAk0MAorKyNkZWZpbmUgZjQxCTQxCisr I2RlZmluZSBmNDIJNDIKKysjZGVmaW5lIGY0Mwk0MworKyNkZWZpbmUgZjQ0CTQ0CisrI2RlZmlu ZSBmNDUJNDUKKysjZGVmaW5lIGY0Ngk0NgorKyNkZWZpbmUgZjQ3CTQ3CisrI2RlZmluZSBmNDgJ NDgKKysjZGVmaW5lIGY0OQk0OQorKyNkZWZpbmUgZjUwCTMwCisrI2RlZmluZSBmNTEJNTEKKysj ZGVmaW5lIGY1Mgk1MgorKyNkZWZpbmUgZjUzCTUzCisrI2RlZmluZSBmNTQJNTQKKysjZGVmaW5l IGY1NQk1NQorKyNkZWZpbmUgZjU2CTU2CisrI2RlZmluZSBmNTcJNTcKKysjZGVmaW5lIGY1OAk1 OAorKyNkZWZpbmUgZjU5CTU5CisrI2RlZmluZSBmNjAJNjAKKysjZGVmaW5lIGY2MQk2MQorKyNk ZWZpbmUgZjYyCTYyCisrI2RlZmluZSBmNjMJNjMKKysjZW5kaWYKKysKKysjaWZkZWYgX19BTFRJ VkVDX18KKysjZGVmaW5lIHYwCTAKKysjZGVmaW5lIHYxCTEKKysjZGVmaW5lIHYyCTIKKysjZGVm aW5lIHYzCTMKKysjZGVmaW5lIHY0CTQKKysjZGVmaW5lIHY1CTUKKysjZGVmaW5lIHY2CTYKKysj ZGVmaW5lIHY3CTcKKysjZGVmaW5lIHY4CTgKKysjZGVmaW5lIHY5CTkKKysjZGVmaW5lIHYxMAkx MAorKyNkZWZpbmUgdjExCTExCisrI2RlZmluZSB2MTIJMTIKKysjZGVmaW5lIHYxMwkxMworKyNk ZWZpbmUgdjE0CTE0CisrI2RlZmluZSB2MTUJMTUKKysjZGVmaW5lIHYxNgkxNgorKyNkZWZpbmUg djE3CTE3CisrI2RlZmluZSB2MTgJMTgKKysjZGVmaW5lIHYxOQkxOQorKyNkZWZpbmUgdjIwCTIw CisrI2RlZmluZSB2MjEJMjEKKysjZGVmaW5lIHYyMgkyMgorKyNkZWZpbmUgdjIzCTIzCisrI2Rl ZmluZSB2MjQJMjQKKysjZGVmaW5lIHYyNQkyNQorKyNkZWZpbmUgdjI2CTI2CisrI2RlZmluZSB2 MjcJMjcKKysjZGVmaW5lIHYyOAkyOAorKyNkZWZpbmUgdjI5CTI5CisrI2RlZmluZSB2MzAJMzAK KysjZGVmaW5lIHYzMQkzMQorKyNlbmRpZgorKworKyNpZmRlZiBfX1ZTWF9fCisrI2RlZmluZSB2 czAJMAorKyNkZWZpbmUgdnMxCTEKKysjZGVmaW5lIHZzMgkyCisrI2RlZmluZSB2czMJMworKyNk ZWZpbmUgdnM0CTQKKysjZGVmaW5lIHZzNQk1CisrI2RlZmluZSB2czYJNgorKyNkZWZpbmUgdnM3 CTcKKysjZGVmaW5lIHZzOAk4CisrI2RlZmluZSB2czkJOQorKyNkZWZpbmUgdnMxMAkxMAorKyNk ZWZpbmUgdnMxMQkxMQorKyNkZWZpbmUgdnMxMgkxMgorKyNkZWZpbmUgdnMxMwkxMworKyNkZWZp bmUgdnMxNAkxNAorKyNkZWZpbmUgdnMxNQkxNQorKyNkZWZpbmUgdnMxNgkxNgorKyNkZWZpbmUg dnMxNwkxNworKyNkZWZpbmUgdnMxOAkxOAorKyNkZWZpbmUgdnMxOQkxOQorKyNkZWZpbmUgdnMy MAkyMAorKyNkZWZpbmUgdnMyMQkyMQorKyNkZWZpbmUgdnMyMgkyMgorKyNkZWZpbmUgdnMyMwky MworKyNkZWZpbmUgdnMyNAkyNAorKyNkZWZpbmUgdnMyNQkyNQorKyNkZWZpbmUgdnMyNgkyNgor KyNkZWZpbmUgdnMyNwkyNworKyNkZWZpbmUgdnMyOAkyOAorKyNkZWZpbmUgdnMyOQkyOQorKyNk ZWZpbmUgdnMzMAkzMAorKyNkZWZpbmUgdnMzMQkzMQorKyNkZWZpbmUgdnMzMgkzMgorKyNkZWZp bmUgdnMzMwkzMworKyNkZWZpbmUgdnMzNAkzNAorKyNkZWZpbmUgdnMzNQkzNQorKyNkZWZpbmUg dnMzNgkzNgorKyNkZWZpbmUgdnMzNwkzNworKyNkZWZpbmUgdnMzOAkzOAorKyNkZWZpbmUgdnMz OQkzOQorKyNkZWZpbmUgdnM0MAk0MAorKyNkZWZpbmUgdnM0MQk0MQorKyNkZWZpbmUgdnM0Mgk0 MgorKyNkZWZpbmUgdnM0Mwk0MworKyNkZWZpbmUgdnM0NAk0NAorKyNkZWZpbmUgdnM0NQk0NQor KyNkZWZpbmUgdnM0Ngk0NgorKyNkZWZpbmUgdnM0Nwk0NworKyNkZWZpbmUgdnM0OAk0OAorKyNk ZWZpbmUgdnM0OQk0OQorKyNkZWZpbmUgdnM1MAkzMAorKyNkZWZpbmUgdnM1MQk1MQorKyNkZWZp bmUgdnM1Mgk1MgorKyNkZWZpbmUgdnM1Mwk1MworKyNkZWZpbmUgdnM1NAk1NAorKyNkZWZpbmUg dnM1NQk1NQorKyNkZWZpbmUgdnM1Ngk1NgorKyNkZWZpbmUgdnM1Nwk1NworKyNkZWZpbmUgdnM1 OAk1OAorKyNkZWZpbmUgdnM1OQk1OQorKyNkZWZpbmUgdnM2MAk2MAorKyNkZWZpbmUgdnM2MQk2 MQorKyNkZWZpbmUgdnM2Mgk2MgorKyNkZWZpbmUgdnM2Mwk2MworKyNlbmRpZgorKworIC8qCisg ICogTWFjcm9zIHRvIGdsdWUgdG9nZXRoZXIgdHdvIHRva2Vucy4KKyAgKi8KKy0tLSBnY2MvY29u ZmlnL3JzNjAwMC9saW51eDY0Lm9wdAkoLi4uL3RydW5rKQkocmV2aXNpb24gMTQ0NTU3KQorKysr IGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQub3B0CSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1t ZWlzc25lcikJKHJldmlzaW9uIDE0NDY5MikKK0BAIC0yMCw1ICsyMCw1IEBACisgOyA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgCisgbXByb2ZpbGUta2VybmVsCistVGFyZ2V0IFJl cG9ydCBNYXNrKFBST0ZJTEVfS0VSTkVMKQorK1RhcmdldCBSZXBvcnQgVmFyKFRBUkdFVF9QUk9G SUxFX0tFUk5FTCkKKyBDYWxsIG1jb3VudCBmb3IgcHJvZmlsaW5nIGJlZm9yZSBhIGZ1bmN0aW9u IHByb2xvZ3VlCistLS0gZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQub3B0CSguLi4vdHJ1bmspCShy ZXZpc2lvbiAxNDQ1NTcpCisrKysgZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQub3B0CSguLi4vYnJh bmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlzaW9uIDE0NDY5MikKK0BAIC0zMiw3ICsz Miw3IEBAIFRhcmdldCBSZWplY3ROZWdhdGl2ZSBKb2luZWQKKyBTcGVjaWZ5IGJpdCBzaXplIG9m IGltbWVkaWF0ZSBUTFMgb2Zmc2V0cworIAorIG1iaXQtYWxpZ24KKy1UYXJnZXQgUmVwb3J0IE1h c2soTk9fQklURklFTERfVFlQRSkKKytUYXJnZXQgUmVwb3J0IFZhcihUQVJHRVRfTk9fQklURklF TERfVFlQRSkKKyBBbGlnbiB0byB0aGUgYmFzZSB0eXBlIG9mIHRoZSBiaXQtZmllbGQKKyAKKyBt c3RyaWN0LWFsaWduCitAQCAtODcsMTEgKzg3LDExIEBAIFRhcmdldCBSZXBvcnQgTWFzayhFQUJJ KQorIFVzZSBFQUJJCisgCisgbWJpdC13b3JkCistVGFyZ2V0IFJlcG9ydCBNYXNrKE5PX0JJVEZJ RUxEX1dPUkQpCisrVGFyZ2V0IFJlcG9ydCBWYXIoVEFSR0VUX05PX0JJVEZJRUxEX1dPUkQpCisg QWxsb3cgYml0LWZpZWxkcyB0byBjcm9zcyB3b3JkIGJvdW5kYXJpZXMKKyAKKyBtcmVnbmFtZXMK Ky1UYXJnZXQgTWFzayhSRUdOQU1FUykKKytUYXJnZXQgVmFyKFRBUkdFVF9SRUdOQU1FUykKKyBV c2UgYWx0ZXJuYXRlIHJlZ2lzdGVyIG5hbWVzCisgCisgOzsgRklYTUU6IERvZXMgbm90aGluZy4K Ky0tLSBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmgJKC4uLi90cnVuaykJKHJldmlz aW9uIDE0NDU1NykKKysrKyBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAtcHJvdG9zLmgJKC4uLi9i cmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ0NjkyKQorQEAgLTY0LDkg KzY0LDE0IEBAIGV4dGVybiBpbnQgaW5zdmRpX3JzaGlmdF9ybHdpbWlfcCAocnR4LCAKKyBleHRl cm4gaW50IHJlZ2lzdGVyc19va19mb3JfcXVhZF9wZWVwIChydHgsIHJ0eCk7CisgZXh0ZXJuIGlu dCBtZW1zX29rX2Zvcl9xdWFkX3BlZXAgKHJ0eCwgcnR4KTsKKyBleHRlcm4gYm9vbCBncHJfb3Jf Z3ByX3AgKHJ0eCwgcnR4KTsKKytleHRlcm4gZW51bSByZWdfY2xhc3MgcnM2MDAwX3ByZWZlcnJl ZF9yZWxvYWRfY2xhc3MocnR4LCBlbnVtIHJlZ19jbGFzcyk7CisgZXh0ZXJuIGVudW0gcmVnX2Ns YXNzIHJzNjAwMF9zZWNvbmRhcnlfcmVsb2FkX2NsYXNzIChlbnVtIHJlZ19jbGFzcywKKyAJCQkJ CQkgICAgIGVudW0gbWFjaGluZV9tb2RlLCBydHgpOworLQorK2V4dGVybiBib29sIHJzNjAwMF9z ZWNvbmRhcnlfbWVtb3J5X25lZWRlZCAoZW51bSByZWdfY2xhc3MsIGVudW0gcmVnX2NsYXNzLAor KwkJCQkJICAgIGVudW0gbWFjaGluZV9tb2RlKTsKKytleHRlcm4gYm9vbCByczYwMDBfY2Fubm90 X2NoYW5nZV9tb2RlX2NsYXNzIChlbnVtIG1hY2hpbmVfbW9kZSwKKysJCQkJCSAgICAgZW51bSBt YWNoaW5lX21vZGUsCisrCQkJCQkgICAgIGVudW0gcmVnX2NsYXNzKTsKKyBleHRlcm4gaW50IHBh aXJlZF9lbWl0X3ZlY3Rvcl9jb25kX2V4cHIgKHJ0eCwgcnR4LCBydHgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydHgsIHJ0eCwgcnR4KTsKKyBleHRlcm4gdm9p ZCBwYWlyZWRfZXhwYW5kX3ZlY3Rvcl9tb3ZlIChydHggb3BlcmFuZHNbXSk7CitAQCAtMTcwLDcg KzE3NSw2IEBAIGV4dGVybiBpbnQgcnM2MDAwX3JlZ2lzdGVyX21vdmVfY29zdCAoZW4KKyAJCQkJ ICAgICAgZW51bSByZWdfY2xhc3MsIGVudW0gcmVnX2NsYXNzKTsKKyBleHRlcm4gaW50IHJzNjAw MF9tZW1vcnlfbW92ZV9jb3N0IChlbnVtIG1hY2hpbmVfbW9kZSwgZW51bSByZWdfY2xhc3MsIGlu dCk7CisgZXh0ZXJuIGJvb2wgcnM2MDAwX3Rsc19yZWZlcmVuY2VkX3AgKHJ0eCk7CistZXh0ZXJu IGludCByczYwMDBfaGFyZF9yZWdub19ucmVncyAoaW50LCBlbnVtIG1hY2hpbmVfbW9kZSk7Cisg ZXh0ZXJuIHZvaWQgcnM2MDAwX2NvbmRpdGlvbmFsX3JlZ2lzdGVyX3VzYWdlICh2b2lkKTsKKyAK KyAvKiBEZWNsYXJlIGZ1bmN0aW9ucyBpbiByczYwMDAtYy5jICovCitAQCAtMTg5LDQgKzE5Myw2 IEBAIGNvbnN0IGNoYXIgKiByczYwMDBfeGNvZmZfc3RyaXBfZG9sbGFyICgKKyB2b2lkIHJzNjAw MF9maW5hbF9wcmVzY2FuX2luc24gKHJ0eCwgcnR4ICpvcGVyYW5kLCBpbnQgbnVtX29wZXJhbmRz KTsKKyAKKyBleHRlcm4gYm9vbCByczYwMDBfaGFyZF9yZWdub19tb2RlX29rX3BbXVtGSVJTVF9Q U0VVRE9fUkVHSVNURVJdOworK2V4dGVybiB1bnNpZ25lZCBjaGFyIHJzNjAwMF9jbGFzc19tYXhf bnJlZ3NbXVtMSU1fUkVHX0NMQVNTRVNdOworK2V4dGVybiB1bnNpZ25lZCBjaGFyIHJzNjAwMF9o YXJkX3JlZ25vX25yZWdzW11bRklSU1RfUFNFVURPX1JFR0lTVEVSXTsKKyAjZW5kaWYgIC8qIHJz NjAwMC1wcm90b3MuaCAqLworLS0tIGdjYy9jb25maWcvcnM2MDAwL3QtcnM2MDAwCSguLi4vdHJ1 bmspCShyZXZpc2lvbiAxNDQ1NTcpCisrKysgZ2NjL2NvbmZpZy9yczYwMDAvdC1yczYwMDAJKC4u Li9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ0NjkyKQorQEAgLTE2 LDMgKzE2LDMzIEBAIHJzNjAwMC1jLm86ICQoc3JjZGlyKS9jb25maWcvcnM2MDAwL3JzNjAKKyAK KyAjIFRoZSByczYwMDAgYmFja2VuZCBkb2Vzbid0IGNhdXNlIHdhcm5pbmdzIGluIHRoZXNlIGZp bGVzLgorIGluc24tY29uZGl0aW9ucy5vLXdhcm4gPQorKworK01EX0lOQ0xVREVTID0gJChzcmNk aXIpL2NvbmZpZy9yczYwMDAvcmlvczEubWQgXAorKwkkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9y aW9zMi5tZCBcCisrCSQoc3JjZGlyKS9jb25maWcvcnM2MDAwL3JzNjQubWQgXAorKwkkKHNyY2Rp cikvY29uZmlnL3JzNjAwMC9tcGMubWQgXAorKwkkKHNyY2RpcikvY29uZmlnL3JzNjAwMC80MHgu bWQgXAorKwkkKHNyY2RpcikvY29uZmlnL3JzNjAwMC80NDAubWQgXAorKwkkKHNyY2RpcikvY29u ZmlnL3JzNjAwMC82MDMubWQgXAorKwkkKHNyY2RpcikvY29uZmlnL3JzNjAwMC82eHgubWQgXAor KwkkKHNyY2RpcikvY29uZmlnL3JzNjAwMC83eHgubWQgXAorKwkkKHNyY2RpcikvY29uZmlnL3Jz NjAwMC83NDUwLm1kIFwKKysJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvODU0MC5tZCBcCisrCSQo c3JjZGlyKS9jb25maWcvcnM2MDAwL2UzMDBjMmMzLm1kIFwKKysJJChzcmNkaXIpL2NvbmZpZy9y czYwMDAvZTUwMG1jLm1kIFwKKysJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvcG93ZXI0Lm1kIFwK KysJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvcG93ZXI1Lm1kIFwKKysJJChzcmNkaXIpL2NvbmZp Zy9yczYwMDAvcG93ZXI2Lm1kIFwKKysJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvcG93ZXI3Lm1k IFwKKysJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvY2VsbC5tZCBcCisrCSQoc3JjZGlyKS9jb25m aWcvcnM2MDAwL3hmcHUubWQgXAorKwkkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9wcmVkaWNhdGVz Lm1kIFwKKysJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvY29uc3RyYWludHMubWQgXAorKwkkKHNy Y2RpcikvY29uZmlnL3JzNjAwMC9kYXJ3aW4ubWQgXAorKwkkKHNyY2RpcikvY29uZmlnL3JzNjAw MC9zeW5jLm1kIFwKKysJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvdmVjdG9yLm1kIFwKKysJJChz cmNkaXIpL2NvbmZpZy9yczYwMDAvdnN4Lm1kIFwKKysJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAv YWx0aXZlYy5tZCBcCisrCSQoc3JjZGlyKS9jb25maWcvcnM2MDAwL3NwZS5tZCBcCisrCSQoc3Jj ZGlyKS9jb25maWcvcnM2MDAwL2RmcC5tZCBcCisrCSQoc3JjZGlyKS9jb25maWcvcnM2MDAwL3Bh aXJlZC5tZAorLS0tIGdjYy9jb25maWcvcnM2MDAwL3Bvd2VyNy5tZAkoLi4uL3RydW5rKQkocmV2 aXNpb24gMCkKKysrKyBnY2MvY29uZmlnL3JzNjAwMC9wb3dlcjcubWQJKC4uLi9icmFuY2hlcy9p Ym0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ0NjkyKQorQEAgLTAsMCArMSwzMjAgQEAK Kys7OyBTY2hlZHVsaW5nIGRlc2NyaXB0aW9uIGZvciBJQk0gUE9XRVI3IHByb2Nlc3Nvci4KKys7 OyBDb3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrOzsK Kys7OyBDb250cmlidXRlZCBieSBQYXQgSGF1Z2VuIChwdGhhdWdlbkB1cy5pYm0uY29tKS4KKysK Kys7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuCisrOzsKKys7OyBHQ0MgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorKzs7IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk CisrOzsgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywg b3IgKGF0IHlvdXIKKys7OyBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKzs7CisrOzsgR0ND IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBX SVRIT1VUCisrOzsgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YgTUVSQ0hBTlRBQklMSVRZCisrOzsgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworKzs7IExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKys7OworKzs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrOzsgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUg ZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKys7OyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisrCisrKGRlZmluZV9hdXRvbWF0b24gInBvd2VyN2l1LHBvd2VyN2xzdSxwb3dlcjd2 c3UscG93ZXI3bWlzYyIpCisrCisrKGRlZmluZV9jcHVfdW5pdCAiaXUxX3Bvd2VyNyxpdTJfcG93 ZXI3IiAicG93ZXI3aXUiKQorKyhkZWZpbmVfY3B1X3VuaXQgImxzdTFfcG93ZXI3LGxzdTJfcG93 ZXI3IiAicG93ZXI3bHN1IikKKysoZGVmaW5lX2NwdV91bml0ICJ2c3UxX3Bvd2VyNyx2c3UyX3Bv d2VyNyIgInBvd2VyN3ZzdSIpCisrKGRlZmluZV9jcHVfdW5pdCAiYnB1X3Bvd2VyNyxjcnVfcG93 ZXI3IiAicG93ZXI3bWlzYyIpCisrKGRlZmluZV9jcHVfdW5pdCAiZHUxX3Bvd2VyNyxkdTJfcG93 ZXI3LGR1M19wb3dlcjcsZHU0X3Bvd2VyNyxkdTVfcG93ZXI3IgorKyAgICAgICAgICAgICAgICAg InBvd2VyN21pc2MiKQorKworKworKyhkZWZpbmVfcmVzZXJ2YXRpb24gIkRVX3Bvd2VyNyIKKysJ CSAgICAiZHUxX3Bvd2VyN3xkdTJfcG93ZXI3fGR1M19wb3dlcjd8ZHU0X3Bvd2VyNyIpCisrCisr KGRlZmluZV9yZXNlcnZhdGlvbiAiRFUyRl9wb3dlcjciCisrCQkgICAgImR1MV9wb3dlcjcrZHUy X3Bvd2VyNyIpCisrCisrKGRlZmluZV9yZXNlcnZhdGlvbiAiRFU0X3Bvd2VyNyIKKysJCSAgICAi ZHUxX3Bvd2VyNytkdTJfcG93ZXI3K2R1M19wb3dlcjcrZHU0X3Bvd2VyNyIpCisrCisrKGRlZmlu ZV9yZXNlcnZhdGlvbiAiRlhVX3Bvd2VyNyIKKysgICAgICAgICAgICAgICAgICAgICJpdTFfcG93 ZXI3fGl1Ml9wb3dlcjciKQorKworKyhkZWZpbmVfcmVzZXJ2YXRpb24gIlZTVV9wb3dlcjciCisr ICAgICAgICAgICAgICAgICAgICAidnN1MV9wb3dlcjd8dnN1Ml9wb3dlcjciKQorKworKyhkZWZp bmVfcmVzZXJ2YXRpb24gIkxTVV9wb3dlcjciCisrICAgICAgICAgICAgICAgICAgICAibHN1MV9w b3dlcjd8bHN1Ml9wb3dlcjciKQorKworKworKzsgRGlzcGF0Y2ggc2xvdHMgYXJlIGFsbG9jYXRl ZCBpbiBvcmRlciBjb25mb3JtaW5nIHRvIHByb2dyYW0gb3JkZXIuCisrKGFic2VuY2Vfc2V0ICJk dTFfcG93ZXI3IiAiZHUyX3Bvd2VyNyxkdTNfcG93ZXI3LGR1NF9wb3dlcjcsZHU1X3Bvd2VyNyIp CisrKGFic2VuY2Vfc2V0ICJkdTJfcG93ZXI3IiAiZHUzX3Bvd2VyNyxkdTRfcG93ZXI3LGR1NV9w b3dlcjciKQorKyhhYnNlbmNlX3NldCAiZHUzX3Bvd2VyNyIgImR1NF9wb3dlcjcsZHU1X3Bvd2Vy NyIpCisrKGFic2VuY2Vfc2V0ICJkdTRfcG93ZXI3IiAiZHU1X3Bvd2VyNyIpCisrCisrCisrOyBM UyBVbml0CisrKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctbG9hZCIgMgorKyAgKGFu ZCAoZXFfYXR0ciAidHlwZSIgImxvYWQiKQorKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3 IikpCisrICAiRFVfcG93ZXI3LExTVV9wb3dlcjciKQorKworKyhkZWZpbmVfaW5zbl9yZXNlcnZh dGlvbiAicG93ZXI3LWxvYWQtZXh0IiAzCisrICAoYW5kIChlcV9hdHRyICJ0eXBlIiAibG9hZF9l eHQiKQorKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCisrICAiRFUyRl9wb3dlcjcs TFNVX3Bvd2VyNyxGWFVfcG93ZXI3IikKKysKKysoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBv d2VyNy1sb2FkLXVwZGF0ZSIgMgorKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImxvYWRfdSIpCisr ICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKKysgICJEVTJGX3Bvd2VyNyxMU1VfcG93 ZXI3K0ZYVV9wb3dlcjciKQorKworKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LWxv YWQtdXBkYXRlLWluZGV4ZWQiIDMKKysgIChhbmQgKGVxX2F0dHIgInR5cGUiICJsb2FkX3V4IikK KysgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQorKyAgIkRVNF9wb3dlcjcsRlhVX3Bv d2VyNyxMU1VfcG93ZXI3K0ZYVV9wb3dlcjciKQorKworKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlv biAicG93ZXI3LWxvYWQtZXh0LXVwZGF0ZSIgNAorKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImxv YWRfZXh0X3UiKQorKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCisrICAiRFUyRl9w b3dlcjcsTFNVX3Bvd2VyNytGWFVfcG93ZXI3LEZYVV9wb3dlcjciKQorKworKyhkZWZpbmVfaW5z bl9yZXNlcnZhdGlvbiAicG93ZXI3LWxvYWQtZXh0LXVwZGF0ZS1pbmRleGVkIiA0CisrICAoYW5k IChlcV9hdHRyICJ0eXBlIiAibG9hZF9leHRfdXgiKQorKyAgICAgICAoZXFfYXR0ciAiY3B1IiAi cG93ZXI3IikpCisrICAiRFU0X3Bvd2VyNyxGWFVfcG93ZXI3LExTVV9wb3dlcjcrRlhVX3Bvd2Vy NyxGWFVfcG93ZXI3IikKKysKKysoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1mcGxv YWQiIDMKKysgIChhbmQgKGVxX2F0dHIgInR5cGUiICJmcGxvYWQiKQorKyAgICAgICAoZXFfYXR0 ciAiY3B1IiAicG93ZXI3IikpCisrICAiRFVfcG93ZXI3LExTVV9wb3dlcjciKQorKworKyhkZWZp bmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LWZwbG9hZC11cGRhdGUiIDMKKysgIChhbmQgKGVx X2F0dHIgInR5cGUiICJmcGxvYWRfdSxmcGxvYWRfdXgiKQorKyAgICAgICAoZXFfYXR0ciAiY3B1 IiAicG93ZXI3IikpCisrICAiRFUyRl9wb3dlcjcsTFNVX3Bvd2VyNytGWFVfcG93ZXI3IikKKysK KysoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1zdG9yZSIgNiA7IHN0b3JlLWZvcndh cmRpbmcgbGF0ZW5jeQorKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInN0b3JlIikKKysgICAgICAg KGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQorKyAgIkRVX3Bvd2VyNyxMU1VfcG93ZXI3K0ZYVV9w b3dlcjciKQorKworKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LXN0b3JlLXVwZGF0 ZSIgNgorKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInN0b3JlX3UiKQorKyAgICAgICAoZXFfYXR0 ciAiY3B1IiAicG93ZXI3IikpCisrICAiRFUyRl9wb3dlcjcsTFNVX3Bvd2VyNytGWFVfcG93ZXI3 LEZYVV9wb3dlcjciKQorKworKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LXN0b3Jl LXVwZGF0ZS1pbmRleGVkIiA2CisrICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3RvcmVfdXgiKQor KyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCisrICAiRFU0X3Bvd2VyNyxMU1VfcG93 ZXI3K0ZYVV9wb3dlcjcsRlhVX3Bvd2VyNyIpCisrCisrKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9u ICJwb3dlcjctZnBzdG9yZSIgNgorKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImZwc3RvcmUiKQor KyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCisrICAiRFVfcG93ZXI3LExTVV9wb3dl cjcrVlNVX3Bvd2VyNyIpCisrCisrKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctZnBz dG9yZS11cGRhdGUiIDYKKysgIChhbmQgKGVxX2F0dHIgInR5cGUiICJmcHN0b3JlX3UsZnBzdG9y ZV91eCIpCisrICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKKysgICJEVV9wb3dlcjcs TFNVX3Bvd2VyNytWU1VfcG93ZXI3K0ZYVV9wb3dlcjciKQorKworKyhkZWZpbmVfaW5zbl9yZXNl cnZhdGlvbiAicG93ZXI3LWxhcngiIDMKKysgIChhbmQgKGVxX2F0dHIgInR5cGUiICJsb2FkX2wi KQorKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCisrICAiRFU0X3Bvd2VyNyxMU1Vf cG93ZXI3IikKKysKKysoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1zdGN4IiAxMAor KyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInN0b3JlX2MiKQorKyAgICAgICAoZXFfYXR0ciAiY3B1 IiAicG93ZXI3IikpCisrICAiRFU0X3Bvd2VyNyxMU1VfcG93ZXI3IikKKysKKysoZGVmaW5lX2lu c25fcmVzZXJ2YXRpb24gInBvd2VyNy12ZWNsb2FkIiAzCisrICAoYW5kIChlcV9hdHRyICJ0eXBl IiAidmVjbG9hZCIpCisrICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKKysgICJEVV9w b3dlcjcsTFNVX3Bvd2VyNyIpCisrCisrKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjct dmVjc3RvcmUiIDYKKysgIChhbmQgKGVxX2F0dHIgInR5cGUiICJ2ZWNzdG9yZSIpCisrICAgICAg IChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKKysgICJEVV9wb3dlcjcsTFNVX3Bvd2VyNytWU1Vf cG93ZXI3IikKKysKKysoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1zeW5jIiAxMQor KyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInN5bmMiKQorKyAgICAgICAoZXFfYXR0ciAiY3B1IiAi cG93ZXI3IikpCisrICAiRFU0X3Bvd2VyNyxMU1VfcG93ZXI3IikKKysKKysKKys7IEZYIFVuaXQK KysoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1pbnRlZ2VyIiAxCisrICAoYW5kIChl cV9hdHRyICJ0eXBlIiAiaW50ZWdlcixpbnNlcnRfd29yZCxpbnNlcnRfZHdvcmQsc2hpZnQsdHJh cCxcCisrICAgICAgICAgICAgICAgICAgICAgICAgdmFyX3NoaWZ0X3JvdGF0ZSxleHRzIikKKysg ICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQorKyAgIkRVX3Bvd2VyNyxGWFVfcG93ZXI3 IikKKysKKysoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1jbnRseiIgMgorKyAgKGFu ZCAoZXFfYXR0ciAidHlwZSIgImNudGx6IikKKysgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2Vy NyIpKQorKyAgIkRVX3Bvd2VyNyxGWFVfcG93ZXI3IikKKysKKysoZGVmaW5lX2luc25fcmVzZXJ2 YXRpb24gInBvd2VyNy10d28iIDIKKysgIChhbmQgKGVxX2F0dHIgInR5cGUiICJ0d28iKQorKyAg ICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCisrICAiRFVfcG93ZXI3K0RVX3Bvd2VyNyxG WFVfcG93ZXI3LEZYVV9wb3dlcjciKQorKworKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93 ZXI3LXRocmVlIiAzCisrICAoYW5kIChlcV9hdHRyICJ0eXBlIiAidGhyZWUiKQorKyAgICAgICAo ZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCisrICAiRFVfcG93ZXI3K0RVX3Bvd2VyNytEVV9wb3dl cjcsRlhVX3Bvd2VyNyxGWFVfcG93ZXI3LEZYVV9wb3dlcjciKQorKworKyhkZWZpbmVfaW5zbl9y ZXNlcnZhdGlvbiAicG93ZXI3LWNtcCIgMQorKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImNtcCxm YXN0X2NvbXBhcmUiKQorKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCisrICAiRFVf cG93ZXI3LEZYVV9wb3dlcjciKQorKworKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3 LWNvbXBhcmUiIDIKKysgIChhbmQgKGVxX2F0dHIgInR5cGUiICJjb21wYXJlLGRlbGF5ZWRfY29t cGFyZSx2YXJfZGVsYXllZF9jb21wYXJlIikKKysgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2Vy NyIpKQorKyAgIkRVMkZfcG93ZXI3LEZYVV9wb3dlcjcsRlhVX3Bvd2VyNyIpCisrCisrKGRlZmlu ZV9ieXBhc3MgMyAicG93ZXI3LWNtcCxwb3dlcjctY29tcGFyZSIgInBvd2VyNy1jcmxvZ2ljYWws cG93ZXI3LWRlbGF5ZWRjciIpCisrCisrKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjct bXVsIiA0CisrICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaW11bCxpbXVsMixpbXVsMyxsbXVsIikK KysgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQorKyAgIkRVX3Bvd2VyNyxGWFVfcG93 ZXI3IikKKysKKysoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1tdWwtY29tcGFyZSIg NQorKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImltdWxfY29tcGFyZSxsbXVsX2NvbXBhcmUiKQor KyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCisrICAiRFUyRl9wb3dlcjcsRlhVX3Bv d2VyNyxub3RoaW5nKjMsRlhVX3Bvd2VyNyIpCisrCisrKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9u ICJwb3dlcjctaWRpdiIgMzYKKysgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpZGl2IikKKysgICAg ICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQorKyAgIkRVMkZfcG93ZXI3LGl1MV9wb3dlcjcq MzZ8aXUyX3Bvd2VyNyozNiIpCisrCisrKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjct bGRpdiIgNjgKKysgIChhbmQgKGVxX2F0dHIgInR5cGUiICJsZGl2IikKKysgICAgICAgKGVxX2F0 dHIgImNwdSIgInBvd2VyNyIpKQorKyAgIkRVMkZfcG93ZXI3LGl1MV9wb3dlcjcqNjh8aXUyX3Bv d2VyNyo2OCIpCisrCisrKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctaXN5bmMiIDEg OworKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImlzeW5jIikKKysgICAgICAgKGVxX2F0dHIgImNw dSIgInBvd2VyNyIpKQorKyAgIkRVNF9wb3dlcjcsRlhVX3Bvd2VyNyIpCisrCisrCisrOyBDUiBV bml0CisrKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctbXRqbXByIiA0CisrICAoYW5k IChlcV9hdHRyICJ0eXBlIiAibXRqbXByIikKKysgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2Vy NyIpKQorKyAgImR1MV9wb3dlcjcsRlhVX3Bvd2VyNyIpCisrCisrKGRlZmluZV9pbnNuX3Jlc2Vy dmF0aW9uICJwb3dlcjctbWZqbXByIiA1CisrICAoYW5kIChlcV9hdHRyICJ0eXBlIiAibWZqbXBy IikKKysgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQorKyAgImR1MV9wb3dlcjcsY3J1 X3Bvd2VyNytGWFVfcG93ZXI3IikKKysKKysoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2Vy Ny1jcmxvZ2ljYWwiIDMKKysgIChhbmQgKGVxX2F0dHIgInR5cGUiICJjcl9sb2dpY2FsIikKKysg ICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQorKyAgImR1MV9wb3dlcjcsY3J1X3Bvd2Vy NyIpCisrCisrKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctZGVsYXllZGNyIiAzCisr ICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiZGVsYXllZF9jciIpCisrICAgICAgIChlcV9hdHRyICJj cHUiICJwb3dlcjciKSkKKysgICJkdTFfcG93ZXI3LGNydV9wb3dlcjciKQorKworKyhkZWZpbmVf aW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LW1mY3IiIDYKKysgIChhbmQgKGVxX2F0dHIgInR5cGUi ICJtZmNyIikKKysgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQorKyAgImR1MV9wb3dl cjcsY3J1X3Bvd2VyNyIpCisrCisrKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctbWZj cmYiIDMKKysgIChhbmQgKGVxX2F0dHIgInR5cGUiICJtZmNyZiIpCisrICAgICAgIChlcV9hdHRy ICJjcHUiICJwb3dlcjciKSkKKysgICJkdTFfcG93ZXI3LGNydV9wb3dlcjciKQorKworKyhkZWZp bmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LW10Y3IiIDMKKysgIChhbmQgKGVxX2F0dHIgInR5 cGUiICJtdGNyIikKKysgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQorKyAgIkRVNF9w b3dlcjcsY3J1X3Bvd2VyNytGWFVfcG93ZXI3IikKKysKKysKKys7IEJSIFVuaXQKKys7IEJyYW5j aGVzIHRha2UgZGlzcGF0Y2ggU2xvdCA0LiAgVGhlIHByZXNlbmNlX3NldHMgcHJldmVudCBvdGhl ciBpbnNuIGZyb20KKys7IGdyYWJiaW5nIHByZXZpb3VzIGRpc3BhdGNoIHNsb3RzIG9uY2UgdGhp cyBpcyBhc3NpZ25lZC4KKysoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1icmFuY2gi IDMKKysgIChhbmQgKGVxX2F0dHIgInR5cGUiICJqbXByZWcsYnJhbmNoIikKKysgICAgICAgKGVx X2F0dHIgImNwdSIgInBvd2VyNyIpKQorKyAgIihkdTVfcG93ZXI3XAorKyAgIHxkdTRfcG93ZXI3 K2R1NV9wb3dlcjdcCisrICAgfGR1M19wb3dlcjcrZHU0X3Bvd2VyNytkdTVfcG93ZXI3XAorKyAg IHxkdTJfcG93ZXI3K2R1M19wb3dlcjcrZHU0X3Bvd2VyNytkdTVfcG93ZXI3XAorKyAgIHxkdTFf cG93ZXI3K2R1Ml9wb3dlcjcrZHUzX3Bvd2VyNytkdTRfcG93ZXI3K2R1NV9wb3dlcjcpLGJwdV9w b3dlcjciKQorKworKworKzsgVlMgVW5pdCAoaW5jbHVkZXMgRlAvVlNYL1ZNWC9ERlApCisrKGRl ZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctZnAiIDYKKysgIChhbmQgKGVxX2F0dHIgInR5 cGUiICJmcCxkbXVsIikKKysgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQorKyAgIkRV X3Bvd2VyNyxWU1VfcG93ZXI3IikKKysKKysoZGVmaW5lX2J5cGFzcyA4ICJwb3dlcjctZnAiICJw b3dlcjctYnJhbmNoIikKKysKKysoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1mcGNv bXBhcmUiIDQKKysgIChhbmQgKGVxX2F0dHIgInR5cGUiICJmcGNvbXBhcmUiKQorKyAgICAgICAo ZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCisrICAiRFVfcG93ZXI3LFZTVV9wb3dlcjciKQorKwor KyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LXNkaXYiIDI2CisrICAoYW5kIChlcV9h dHRyICJ0eXBlIiAic2RpdiIpCisrICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKKysg ICJEVV9wb3dlcjcsVlNVX3Bvd2VyNyIpCisrCisrKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJw b3dlcjctZGRpdiIgMzIKKysgIChhbmQgKGVxX2F0dHIgInR5cGUiICJkZGl2IikKKysgICAgICAg KGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQorKyAgIkRVX3Bvd2VyNyxWU1VfcG93ZXI3IikKKysK KysoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1zcXJ0IiAzMQorKyAgKGFuZCAoZXFf YXR0ciAidHlwZSIgInNzcXJ0IikKKysgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQor KyAgIkRVX3Bvd2VyNyxWU1VfcG93ZXI3IikKKysKKysoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24g InBvd2VyNy1kc3FydCIgNDMKKysgIChhbmQgKGVxX2F0dHIgInR5cGUiICJkc3FydCIpCisrICAg ICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKKysgICJEVV9wb3dlcjcsVlNVX3Bvd2VyNyIp CisrCisrKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctdmVjc2ltcGxlIiAyCisrICAo YW5kIChlcV9hdHRyICJ0eXBlIiAidmVjc2ltcGxlIikKKysgICAgICAgKGVxX2F0dHIgImNwdSIg InBvd2VyNyIpKQorKyAgImR1MV9wb3dlcjcsVlNVX3Bvd2VyNyIpCisrCisrKGRlZmluZV9pbnNu X3Jlc2VydmF0aW9uICJwb3dlcjctdmVjY21wIiA3CisrICAoYW5kIChlcV9hdHRyICJ0eXBlIiAi dmVjY21wIikKKysgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQorKyAgImR1MV9wb3dl cjcsVlNVX3Bvd2VyNyIpCisrCisrKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctdmVj ZmxvYXQiIDcKKysgIChhbmQgKGVxX2F0dHIgInR5cGUiICJ2ZWNmbG9hdCIpCisrICAgICAgIChl cV9hdHRyICJjcHUiICJwb3dlcjciKSkKKysgICJkdTFfcG93ZXI3LFZTVV9wb3dlcjciKQorKwor KyhkZWZpbmVfYnlwYXNzIDYgInBvd2VyNy12ZWNmbG9hdCIgInBvd2VyNy12ZWNmbG9hdCIpCisr CisrKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctdmVjY29tcGxleCIgNworKyAgKGFu ZCAoZXFfYXR0ciAidHlwZSIgInZlY2NvbXBsZXgiKQorKyAgICAgICAoZXFfYXR0ciAiY3B1IiAi cG93ZXI3IikpCisrICAiZHUxX3Bvd2VyNyxWU1VfcG93ZXI3IikKKysKKysoZGVmaW5lX2luc25f cmVzZXJ2YXRpb24gInBvd2VyNy12ZWNwZXJtIiAzCisrICAoYW5kIChlcV9hdHRyICJ0eXBlIiAi dmVjcGVybSIpCisrICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKKysgICJkdTJfcG93 ZXI3LFZTVV9wb3dlcjciKQorKworKworLS0tIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC1jLmMJ KC4uLi90cnVuaykJKHJldmlzaW9uIDE0NDU1NykKKysrKyBnY2MvY29uZmlnL3JzNjAwMC9yczYw MDAtYy5jCSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlzaW9uIDE0NDY5 MikKK0BAIC0yNjUsNiArMjY1LDggQEAgcnM2MDAwX2NwdV9jcHBfYnVpbHRpbnMgKGNwcF9yZWFk ZXIgKnBmaQorICAgICBidWlsdGluX2RlZmluZSAoIl9BUkNIX1BXUjZYIik7CisgICBpZiAoISBU QVJHRVRfUE9XRVIgJiYgISBUQVJHRVRfUE9XRVIyICYmICEgVEFSR0VUX1BPV0VSUEMpCisgICAg IGJ1aWx0aW5fZGVmaW5lICgiX0FSQ0hfQ09NIik7CisrICBpZiAoVEFSR0VUX1BPUENOVEQpCisr ICAgIGJ1aWx0aW5fZGVmaW5lICgiX0FSQ0hfUFdSNyIpOworICAgaWYgKFRBUkdFVF9BTFRJVkVD KQorICAgICB7CisgICAgICAgYnVpbHRpbl9kZWZpbmUgKCJfX0FMVElWRUNfXyIpOworQEAgLTMw Niw2ICszMDgsOCBAQCByczYwMDBfY3B1X2NwcF9idWlsdGlucyAoY3BwX3JlYWRlciAqcGZpCisg ICAvKiBVc2VkIGJ5IGxpYnN0ZGMrKy4gICovCisgICBpZiAoVEFSR0VUX05PX0xXU1lOQykKKyAg ICAgYnVpbHRpbl9kZWZpbmUgKCJfX05PX0xXU1lOQ19fIik7CisrICBpZiAoVEFSR0VUX1ZTWCkK KysgICAgYnVpbHRpbl9kZWZpbmUgKCJfX1ZTWF9fIik7CisgCisgICAvKiBNYXkgYmUgb3ZlcnJp ZGRlbiBieSB0YXJnZXQgY29uZmlndXJhdGlvbi4gICovCisgICBSUzYwMDBfQ1BVX0NQUF9FTkRJ QU5fQlVJTFRJTlMoKTsKKy0tLSBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0CSguLi4vdHJ1 bmspCShyZXZpc2lvbiAxNDQ1NTcpCisrKysgZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdAko Li4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDQ2OTIpCitAQCAt MTExLDI0ICsxMTEsNDQgQEAgbWhhcmQtZmxvYXQKKyBUYXJnZXQgUmVwb3J0IFJlamVjdE5lZ2F0 aXZlIEludmVyc2VNYXNrKFNPRlRfRkxPQVQsIEhBUkRfRkxPQVQpCisgVXNlIGhhcmR3YXJlIGZs b2F0aW5nIHBvaW50CisgCistbW5vLXVwZGF0ZQorLVRhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRp dmUgTWFzayhOT19VUERBVEUpCistRG8gbm90IGdlbmVyYXRlIGxvYWQvc3RvcmUgd2l0aCB1cGRh dGUgaW5zdHJ1Y3Rpb25zCisrbXBvcGNudGQKKytUYXJnZXQgUmVwb3J0IE1hc2soUE9QQ05URCkK KytVc2UgUG93ZXJQQyBWMi4wNiBwb3BjbnRkIGluc3RydWN0aW9uCisrCisrbXZzeAorK1Rhcmdl dCBSZXBvcnQgTWFzayhWU1gpCisrVXNlIHZlY3Rvci9zY2FsYXIgKFZTWCkgaW5zdHJ1Y3Rpb25z CisrCisrbXZzeC12ZWN0b3ItbWVtb3J5CisrVGFyZ2V0IFJlcG9ydCBWYXIoVEFSR0VUX1ZTWF9W RUNUT1JfTUVNT1JZKSBJbml0KC0xKQorK0lmIC1tdnN4LCB1c2UgVlNYIHZlY3RvciBsb2FkL3N0 b3JlIGluc3RydWN0aW9ucyBpbnN0ZWFkIG9mIEFsdGl2ZWMgaW5zdHJ1Y3Rpb25zCisrCisrbXZz eC12ZWN0b3ItZmxvYXQKKytUYXJnZXQgUmVwb3J0IFZhcihUQVJHRVRfVlNYX1ZFQ1RPUl9GTE9B VCkgSW5pdCgtMSkKKytJZiAtbXZzeCwgdXNlIFZTWCBhcml0aG1ldGljIGluc3RydWN0aW9ucyBm b3IgZmxvYXQgdmVjdG9ycyAob24gYnkgZGVmYXVsdCkKKysKKyttdnN4LXZlY3Rvci1kb3VibGUK KytUYXJnZXQgUmVwb3J0IFZhcihUQVJHRVRfVlNYX1ZFQ1RPUl9ET1VCTEUpIEluaXQoLTEpCisr SWYgLW12c3gsIHVzZSBWU1ggYXJpdGhtZXRpYyBpbnN0cnVjdGlvbnMgZm9yIGRvdWJsZSB2ZWN0 b3JzIChvbiBieSBkZWZhdWx0KQorKworK212c3gtc2NhbGFyLWRvdWJsZQorK1RhcmdldCBSZXBv cnQgVmFyKFRBUkdFVF9WU1hfU0NBTEFSX0RPVUJMRSkgSW5pdCgtMSkKKytJZiAtbXZzeCwgdXNl IFZTWCBhcml0aG1ldGljIGluc3RydWN0aW9ucyBmb3Igc2NhbGFyIGRvdWJsZSAob24gYnkgZGVm YXVsdCkKKysKKyttdnN4LXNjYWxhci1tZW1vcnkKKytUYXJnZXQgUmVwb3J0IFZhcihUQVJHRVRf VlNYX1NDQUxBUl9NRU1PUlkpCisrSWYgLW12c3gsIHVzZSBWU1ggc2NhbGFyIG1lbW9yeSByZWZl cmVuY2UgaW5zdHJ1Y3Rpb25zIGZvciBzY2FsYXIgZG91YmxlIChvZmYgYnkgZGVmYXVsdCkKKyAK KyBtdXBkYXRlCistVGFyZ2V0IFJlcG9ydCBSZWplY3ROZWdhdGl2ZSBJbnZlcnNlTWFzayhOT19V UERBVEUsIFVQREFURSkKKytUYXJnZXQgUmVwb3J0IFZhcihUQVJHRVRfVVBEQVRFKSBJbml0KDEp CisgR2VuZXJhdGUgbG9hZC9zdG9yZSB3aXRoIHVwZGF0ZSBpbnN0cnVjdGlvbnMKKyAKKyBtYXZv aWQtaW5kZXhlZC1hZGRyZXNzZXMKKyBUYXJnZXQgUmVwb3J0IFZhcihUQVJHRVRfQVZPSURfWEZP Uk0pIEluaXQoLTEpCisgQXZvaWQgZ2VuZXJhdGlvbiBvZiBpbmRleGVkIGxvYWQvc3RvcmUgaW5z dHJ1Y3Rpb25zIHdoZW4gcG9zc2libGUKKyAKKy1tbm8tZnVzZWQtbWFkZAorLVRhcmdldCBSZXBv cnQgUmVqZWN0TmVnYXRpdmUgTWFzayhOT19GVVNFRF9NQUREKQorLURvIG5vdCBnZW5lcmF0ZSBm dXNlZCBtdWx0aXBseS9hZGQgaW5zdHJ1Y3Rpb25zCistCisgbWZ1c2VkLW1hZGQKKy1UYXJnZXQg UmVwb3J0IFJlamVjdE5lZ2F0aXZlIEludmVyc2VNYXNrKE5PX0ZVU0VEX01BREQsIEZVU0VEX01B REQpCisrVGFyZ2V0IFJlcG9ydCBWYXIoVEFSR0VUX0ZVU0VEX01BREQpIEluaXQoMSkKKyBHZW5l cmF0ZSBmdXNlZCBtdWx0aXBseS9hZGQgaW5zdHJ1Y3Rpb25zCisgCisgbXNjaGVkLXByb2xvZwor QEAgLTE5NCw3ICsyMTQsNyBAQCBUYXJnZXQgUmVqZWN0TmVnYXRpdmUgSm9pbmVkCisgLW12cnNh dmU9eWVzL25vCURlcHJlY2F0ZWQgb3B0aW9uLiAgVXNlIC1tdnJzYXZlLy1tbm8tdnJzYXZlIGlu c3RlYWQKKyAKKyBtaXNlbAorLVRhcmdldAorK1RhcmdldCBSZXBvcnQgTWFzayhJU0VMKQorIEdl bmVyYXRlIGlzZWwgaW5zdHJ1Y3Rpb25zCisgCisgbWlzZWw9CistLS0gZ2NjL2NvbmZpZy9yczYw MDAvbGludXg2NC5oCSguLi4vdHJ1bmspCShyZXZpc2lvbiAxNDQ1NTcpCisrKysgZ2NjL2NvbmZp Zy9yczYwMDAvbGludXg2NC5oCSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJl dmlzaW9uIDE0NDY5MikKK0BAIC0xMTQsNyArMTE0LDcgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9s czsKKyAJICAgIGVycm9yIChJTlZBTElEXzMyQklULCAiMzIiKTsJCQlcCisgCSAgaWYgKFRBUkdF VF9QUk9GSUxFX0tFUk5FTCkJCQkJXAorIAkgICAgewkJCQkJCQlcCistCSAgICAgIHRhcmdldF9m bGFncyAmPSB+TUFTS19QUk9GSUxFX0tFUk5FTDsJCVwKKysJICAgICAgU0VUX1BST0ZJTEVfS0VS TkVMICgwKTsJCQkJXAorIAkgICAgICBlcnJvciAoSU5WQUxJRF8zMkJJVCwgInByb2ZpbGUta2Vy bmVsIik7CQlcCisgCSAgICB9CQkJCQkJCVwKKyAJfQkJCQkJCQlcCistLS0gZ2NjL2NvbmZpZy9y czYwMDAvcnM2MDAwLmMJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NDU1NykKKysrKyBnY2MvY29u ZmlnL3JzNjAwMC9yczYwMDAuYwkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShy ZXZpc2lvbiAxNDQ2OTIpCitAQCAtMTc4LDkgKzE3OCw2IEBAIGludCByczYwMDBfc3BlOworIC8q IE5vbnplcm8gaWYgd2Ugd2FudCBTUEUgQUJJIGV4dGVuc2lvbnMuICAqLworIGludCByczYwMDBf c3BlX2FiaTsKKyAKKy0vKiBOb256ZXJvIHRvIHVzZSBpc2VsIGluc3RydWN0aW9ucy4gICovCist aW50IHJzNjAwMF9pc2VsOworLQorIC8qIE5vbnplcm8gaWYgZmxvYXRpbmcgcG9pbnQgb3BlcmF0 aW9ucyBhcmUgZG9uZSBpbiB0aGUgR1BScy4gICovCisgaW50IHJzNjAwMF9mbG9hdF9ncHJzID0g MDsKKyAKK0BAIC0yMjcsMTAgKzIyNCwxOCBAQCBpbnQgZG90X3N5bWJvbHM7CisgY29uc3QgY2hh ciAqcnM2MDAwX2RlYnVnX25hbWU7CisgaW50IHJzNjAwMF9kZWJ1Z19zdGFjazsJCS8qIGRlYnVn IHN0YWNrIGFwcGxpY2F0aW9ucyAqLworIGludCByczYwMDBfZGVidWdfYXJnOwkJLyogZGVidWcg YXJndW1lbnQgaGFuZGxpbmcgKi8KKytpbnQgcnM2MDAwX2RlYnVnX3JlZzsJCS8qIGRlYnVnIHJl Z2lzdGVyIGNsYXNzZXMgKi8KKytpbnQgcnM2MDAwX2RlYnVnX2FkZHI7CQkvKiBkZWJ1ZyBtZW1v cnkgYWRkcmVzc2luZyAqLworIAorIC8qIFZhbHVlIGlzIFRSVUUgaWYgcmVnaXN0ZXIvbW9kZSBw YWlyIGlzIGFjY2VwdGFibGUuICAqLworIGJvb2wgcnM2MDAwX2hhcmRfcmVnbm9fbW9kZV9va19w W05VTV9NQUNISU5FX01PREVTXVtGSVJTVF9QU0VVRE9fUkVHSVNURVJdOworIAorKy8qIE1heGlt dW0gbnVtYmVyIG9mIHJlZ2lzdGVycyBuZWVkZWQgZm9yIGEgZ2l2ZW4gcmVnaXN0ZXIgY2xhc3Mg YW5kIG1vZGUuICAqLworK3Vuc2lnbmVkIGNoYXIgcnM2MDAwX2NsYXNzX21heF9ucmVnc1tOVU1f TUFDSElORV9NT0RFU11bTElNX1JFR19DTEFTU0VTXTsKKysKKysvKiBIb3cgbWFueSByZWdpc3Rl cnMgYXJlIG5lZWRlZCBmb3IgYSBnaXZlbiByZWdpc3RlciBhbmQgbW9kZS4gICovCisrdW5zaWdu ZWQgY2hhciByczYwMDBfaGFyZF9yZWdub19ucmVnc1tOVU1fTUFDSElORV9NT0RFU11bRklSU1Rf UFNFVURPX1JFR0lTVEVSXTsKKysKKyAvKiBCdWlsdCBpbiB0eXBlcy4gICovCisgCisgdHJlZSBy czYwMDBfYnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJX01BWF07CitAQCAtMjcwLDcgKzI3NSw2IEBA IHN0cnVjdCB7CisgICBib29sIGFsdGl2ZWNfYWJpOwkJLyogVHJ1ZSBpZiAtbWFiaT1hbHRpdmVj L25vLWFsdGl2ZWMgdXNlZC4gICovCisgICBib29sIHNwZTsJCQkvKiBUcnVlIGlmIC1tc3BlPSB3 YXMgdXNlZC4gICovCisgICBib29sIGZsb2F0X2dwcnM7CQkvKiBUcnVlIGlmIC1tZmxvYXQtZ3By cz0gd2FzIHVzZWQuICAqLworLSAgYm9vbCBpc2VsOwkJCS8qIFRydWUgaWYgLW1pc2VsIHdhcyB1 c2VkLiAqLworICAgYm9vbCBsb25nX2RvdWJsZTsJICAgICAgICAvKiBUcnVlIGlmIC1tbG9uZy1k b3VibGUtIHdhcyB1c2VkLiAgKi8KKyAgIGJvb2wgaWVlZTsJCQkvKiBUcnVlIGlmIC1tYWJpPWll ZWUvaWJtbG9uZ2RvdWJsZSB1c2VkLiAgKi8KKyAgIGJvb2wgdnJzYXZlOwkJCS8qIFRydWUgaWYg LW12cnNhdmUgd2FzIHVzZWQuICAqLworQEAgLTI4Niw2ICsyOTAsMTggQEAgc3RydWN0IGJ1aWx0 aW5fZGVzY3JpcHRpb24KKyAgIGNvbnN0IGNoYXIgKmNvbnN0IG5hbWU7CisgICBjb25zdCBlbnVt IHJzNjAwMF9idWlsdGlucyBjb2RlOworIH07CisrCisrLyogRGVzY3JpYmUgdGhlIHZlY3RvciB1 bml0IHVzZWQgZm9yIG1vZGVzLiAgKi8KKytlbnVtIHJzNjAwMF92ZWN0b3IgcnM2MDAwX3ZlY3Rv cl91bml0W05VTV9NQUNISU5FX01PREVTXTsKKytlbnVtIHJzNjAwMF92ZWN0b3IgcnM2MDAwX3Zl Y3Rvcl9tZW1bTlVNX01BQ0hJTkVfTU9ERVNdOworK2VudW0gcmVnX2NsYXNzIHJzNjAwMF92ZWN0 b3JfcmVnX2NsYXNzW05VTV9NQUNISU5FX01PREVTXTsKKysKKysvKiBEZXNjcmliZSB0aGUgYWxp Z25tZW50IG9mIGEgdmVjdG9yLiAgKi8KKytpbnQgcnM2MDAwX3ZlY3Rvcl9hbGlnbltOVU1fTUFD SElORV9NT0RFU107CisrCisrLyogRGVzY3JpYmUgdGhlIHJlZ2lzdGVyIGNsYXNzZXMgdXNlZCBi eSBWU1ggaW5zdHJ1Y3Rpb25zLiAgKi8KKytlbnVtIHJlZ19jbGFzcyByczYwMDBfdnN4X3JlZ19j bGFzcyA9IE5PX1JFR1M7CisrCisgDAorIC8qIFRhcmdldCBjcHUgY29zdHMuICAqLworIAorQEAg LTc0OSw2ICs3NjUsMjUgQEAgc3RydWN0IHByb2Nlc3Nvcl9jb3N0cyBwb3dlcjZfY29zdCA9IHsK KyAgIDE2LAkJCS8qIHByZWZldGNoIHN0cmVhbXMgKi8KKyB9OworIAorKy8qIEluc3RydWN0aW9u IGNvc3RzIG9uIFBPV0VSNyBwcm9jZXNzb3JzLiAgKi8KKytzdGF0aWMgY29uc3QKKytzdHJ1Y3Qg cHJvY2Vzc29yX2Nvc3RzIHBvd2VyN19jb3N0ID0geworKyAgQ09TVFNfTl9JTlNOUyAoMiksCS8q IG11bHNpICovCisrICBDT1NUU19OX0lOU05TICgyKSwJLyogbXVsc2lfY29uc3QgKi8KKysgIENP U1RTX05fSU5TTlMgKDIpLAkvKiBtdWxzaV9jb25zdDkgKi8KKysgIENPU1RTX05fSU5TTlMgKDIp LAkvKiBtdWxkaSAqLworKyAgQ09TVFNfTl9JTlNOUyAoMTgpLAkvKiBkaXZzaSAqLworKyAgQ09T VFNfTl9JTlNOUyAoMzQpLAkvKiBkaXZkaSAqLworKyAgQ09TVFNfTl9JTlNOUyAoMyksCS8qIGZw ICovCisrICBDT1NUU19OX0lOU05TICgzKSwJLyogZG11bCAqLworKyAgQ09TVFNfTl9JTlNOUyAo MTMpLAkvKiBzZGl2ICovCisrICBDT1NUU19OX0lOU05TICgxNiksCS8qIGRkaXYgKi8KKysgIDEy OCwJCQkvKiBjYWNoZSBsaW5lIHNpemUgKi8KKysgIDMyLAkJCS8qIGwxIGNhY2hlICovCisrICAy NTYsCQkJLyogbDIgY2FjaGUgKi8KKysgIDEyLAkJCS8qIHByZWZldGNoIHN0cmVhbXMgKi8KKyt9 OworKworIAwKKyBzdGF0aWMgYm9vbCByczYwMDBfZnVuY3Rpb25fb2tfZm9yX3NpYmNhbGwgKHRy ZWUsIHRyZWUpOworIHN0YXRpYyBjb25zdCBjaGFyICpyczYwMDBfaW52YWxpZF93aXRoaW5fZG9s b29wIChjb25zdF9ydHgpOworQEAgLTk2MywxMiArOTk4LDEwIEBAIHN0YXRpYyB0cmVlIHJzNjAw MF9naW1wbGlmeV92YV9hcmcgKHRyZWUKKyBzdGF0aWMgYm9vbCByczYwMDBfbXVzdF9wYXNzX2lu X3N0YWNrIChlbnVtIG1hY2hpbmVfbW9kZSwgY29uc3RfdHJlZSk7Cisgc3RhdGljIGJvb2wgcnM2 MDAwX3NjYWxhcl9tb2RlX3N1cHBvcnRlZF9wIChlbnVtIG1hY2hpbmVfbW9kZSk7Cisgc3RhdGlj IGJvb2wgcnM2MDAwX3ZlY3Rvcl9tb2RlX3N1cHBvcnRlZF9wIChlbnVtIG1hY2hpbmVfbW9kZSk7 Cistc3RhdGljIGludCBnZXRfdmVjX2NtcF9pbnNuIChlbnVtIHJ0eF9jb2RlLCBlbnVtIG1hY2hp bmVfbW9kZSwKKy0JCQkgICAgIGVudW0gbWFjaGluZV9tb2RlKTsKKytzdGF0aWMgcnR4IHJzNjAw MF9lbWl0X3ZlY3Rvcl9jb21wYXJlX3ZzeCAoZW51bSBydHhfY29kZSwgcnR4LCBydHgsIHJ0eCk7 Cisrc3RhdGljIHJ0eCByczYwMDBfZW1pdF92ZWN0b3JfY29tcGFyZV9hbHRpdmVjIChlbnVtIHJ0 eF9jb2RlLCBydHgsIHJ0eCwgcnR4KTsKKyBzdGF0aWMgcnR4IHJzNjAwMF9lbWl0X3ZlY3Rvcl9j b21wYXJlIChlbnVtIHJ0eF9jb2RlLCBydHgsIHJ0eCwKKyAJCQkJICAgICAgIGVudW0gbWFjaGlu ZV9tb2RlKTsKKy1zdGF0aWMgaW50IGdldF92c2VsX2luc24gKGVudW0gbWFjaGluZV9tb2RlKTsK Ky1zdGF0aWMgdm9pZCByczYwMDBfZW1pdF92ZWN0b3Jfc2VsZWN0IChydHgsIHJ0eCwgcnR4LCBy dHgpOworIHN0YXRpYyB0cmVlIHJzNjAwMF9zdGFja19wcm90ZWN0X2ZhaWwgKHZvaWQpOworIAor IGNvbnN0IGludCBJTlNOX05PVF9BVkFJTEFCTEUgPSAtMTsKK0BAIC0xMDQ1LDYgKzEwNzgsOSBA QCBzdGF0aWMgY29uc3QgY2hhciBhbHRfcmVnX25hbWVzW11bOF0gPQorICNlbmRpZgorICNpZm5k ZWYgVEFSR0VUX1BST0ZJTEVfS0VSTkVMCisgI2RlZmluZSBUQVJHRVRfUFJPRklMRV9LRVJORUwg MAorKyNkZWZpbmUgU0VUX1BST0ZJTEVfS0VSTkVMKE4pCisrI2Vsc2UKKysjZGVmaW5lIFNFVF9Q Uk9GSUxFX0tFUk5FTChOKSBUQVJHRVRfUFJPRklMRV9LRVJORUwgPSAoTikKKyAjZW5kaWYKKyAK KyAvKiBUaGUgVlJTQVZFIGJpdG1hc2sgcHV0cyBiaXQgJXYwIGFzIHRoZSBtb3N0IHNpZ25pZmlj YW50IGJpdC4gICovCitAQCAtMTI5OSwyOCArMTMzNSw5NiBAQCBzdGF0aWMgY29uc3QgY2hhciBh bHRfcmVnX25hbWVzW11bOF0gPQorIAorIHN0cnVjdCBnY2NfdGFyZ2V0IHRhcmdldG0gPSBUQVJH RVRfSU5JVElBTElaRVI7CisgDAorKy8qIFJldHVybiBudW1iZXIgb2YgY29uc2VjdXRpdmUgaGFy ZCByZWdzIG5lZWRlZCBzdGFydGluZyBhdCByZWcgUkVHTk8KKysgICB0byBob2xkIHNvbWV0aGlu ZyBvZiBtb2RlIE1PREUuCisrICAgVGhpcyBpcyBvcmRpbmFyaWx5IHRoZSBsZW5ndGggaW4gd29y ZHMgb2YgYSB2YWx1ZSBvZiBtb2RlIE1PREUKKysgICBidXQgY2FuIGJlIGxlc3MgZm9yIGNlcnRh aW4gbW9kZXMgaW4gc3BlY2lhbCBsb25nIHJlZ2lzdGVycy4KKysKKysgICBGb3IgdGhlIFNQRSwg R1BScyBhcmUgNjQgYml0cyBidXQgb25seSAzMiBiaXRzIGFyZSB2aXNpYmxlIGluCisrICAgc2Nh bGFyIGluc3RydWN0aW9ucy4gIFRoZSB1cHBlciAzMiBiaXRzIGFyZSBvbmx5IGF2YWlsYWJsZSB0 byB0aGUKKysgICBTSU1EIGluc3RydWN0aW9ucy4KKysKKysgICBQT1dFUiBhbmQgUG93ZXJQQyBH UFJzIGhvbGQgMzIgYml0cyB3b3J0aDsKKysgICBQb3dlclBDNjQgR1BScyBhbmQgRlBScyBwb2lu dCByZWdpc3RlciBob2xkcyA2NCBiaXRzIHdvcnRoLiAgKi8KKysKKytzdGF0aWMgaW50CisrcnM2 MDAwX2hhcmRfcmVnbm9fbnJlZ3NfaW50ZXJuYWwgKGludCByZWdubywgZW51bSBtYWNoaW5lX21v ZGUgbW9kZSkKKyt7CisrICB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIHJlZ19zaXplOworKworKyAg aWYgKEZQX1JFR05PX1AgKHJlZ25vKSkKKysgICAgcmVnX3NpemUgPSAoVkVDVE9SX1VOSVRfVlNY X1AgKG1vZGUpCisrCQk/IFVOSVRTX1BFUl9WU1hfV09SRAorKwkJOiBVTklUU19QRVJfRlBfV09S RCk7CisrCisrICBlbHNlIGlmIChTUEVfU0lNRF9SRUdOT19QIChyZWdubykgJiYgVEFSR0VUX1NQ RSAmJiBTUEVfVkVDVE9SX01PREUgKG1vZGUpKQorKyAgICByZWdfc2l6ZSA9IFVOSVRTX1BFUl9T UEVfV09SRDsKKysKKysgIGVsc2UgaWYgKEFMVElWRUNfUkVHTk9fUCAocmVnbm8pKQorKyAgICBy ZWdfc2l6ZSA9IFVOSVRTX1BFUl9BTFRJVkVDX1dPUkQ7CisrCisrICAvKiBUaGUgdmFsdWUgcmV0 dXJuZWQgZm9yIFNDbW9kZSBpbiB0aGUgRTUwMCBkb3VibGUgY2FzZSBpcyAyIGZvcgorKyAgICAg QUJJIGNvbXBhdGliaWxpdHk7IHN0b3JpbmcgYW4gU0Ntb2RlIHZhbHVlIGluIGEgc2luZ2xlIHJl Z2lzdGVyCisrICAgICB3b3VsZCByZXF1aXJlIGZ1bmN0aW9uX2FyZyBhbmQgcnM2MDAwX3NwZV9m dW5jdGlvbl9hcmcgdG8gaGFuZGxlCisrICAgICBTQ21vZGUgc28gYXMgdG8gcGFzcyB0aGUgdmFs dWUgY29ycmVjdGx5IGluIGEgcGFpciBvZgorKyAgICAgcmVnaXN0ZXJzLiAgKi8KKysgIGVsc2Ug aWYgKFRBUkdFVF9FNTAwX0RPVUJMRSAmJiBGTE9BVF9NT0RFX1AgKG1vZGUpICYmIG1vZGUgIT0g U0Ntb2RlCisrCSAgICYmICFERUNJTUFMX0ZMT0FUX01PREVfUCAobW9kZSkpCisrICAgIHJlZ19z aXplID0gVU5JVFNfUEVSX0ZQX1dPUkQ7CisrCisrICBlbHNlCisrICAgIHJlZ19zaXplID0gVU5J VFNfUEVSX1dPUkQ7CisrCisrICByZXR1cm4gKEdFVF9NT0RFX1NJWkUgKG1vZGUpICsgcmVnX3Np emUgLSAxKSAvIHJlZ19zaXplOworK30KKyAKKyAvKiBWYWx1ZSBpcyAxIGlmIGhhcmQgcmVnaXN0 ZXIgUkVHTk8gY2FuIGhvbGQgYSB2YWx1ZSBvZiBtYWNoaW5lLW1vZGUKKyAgICBNT0RFLiAgKi8K KyBzdGF0aWMgaW50CisgcnM2MDAwX2hhcmRfcmVnbm9fbW9kZV9vayAoaW50IHJlZ25vLCBlbnVt IG1hY2hpbmVfbW9kZSBtb2RlKQorIHsKKysgIGludCBsYXN0X3JlZ25vID0gcmVnbm8gKyByczYw MDBfaGFyZF9yZWdub19ucmVnc1ttb2RlXVtyZWdub10gLSAxOworKworKyAgLyogVlNYIHJlZ2lz dGVycyB0aGF0IG92ZXJsYXAgdGhlIEZQUiByZWdpc3RlcnMgYXJlIGxhcmdlciB0aGFuIGZvciBu b24tVlNYCisrICAgICBpbXBsZW1lbnRhdGlvbnMuICBEb24ndCBhbGxvdyBhbiBpdGVtIHRvIGJl IHNwbGl0IGJldHdlZW4gYSBGUCByZWdpc3RlcgorKyAgICAgYW5kIGFuIEFsdGl2ZWMgcmVnaXN0 ZXIuICAqLworKyAgaWYgKFZFQ1RPUl9VTklUX1ZTWF9QIChtb2RlKSB8fCBWRUNUT1JfTUVNX1ZT WF9QIChtb2RlKSkKKysgICAgeworKyAgICAgIGVudW0gcmVnX2NsYXNzIHJjbGFzcyA9IHJzNjAw MF92ZWN0b3JfcmVnX2NsYXNzW21vZGVdOworKyAgICAgIGlmIChGUF9SRUdOT19QIChyZWdubykp CisrCXJldHVybiAoKHJjbGFzcyA9PSBGTE9BVF9SRUdTIHx8IHJjbGFzcyA9PSBWU1hfUkVHUykK KysJCSYmIEZQX1JFR05PX1AgKGxhc3RfcmVnbm8pKTsKKysKKysgICAgICBpZiAoQUxUSVZFQ19S RUdOT19QIChyZWdubykpCisrCXJldHVybiAoKHJjbGFzcyA9PSBBTFRJVkVDX1JFR1MgfHwgcmNs YXNzID09IFZTWF9SRUdTKQorKwkJJiYgQUxUSVZFQ19SRUdOT19QIChsYXN0X3JlZ25vKSk7Cisr ICAgIH0KKysKKyAgIC8qIFRoZSBHUFJzIGNhbiBob2xkIGFueSBtb2RlLCBidXQgdmFsdWVzIGJp Z2dlciB0aGFuIG9uZSByZWdpc3RlcgorICAgICAgY2Fubm90IGdvIHBhc3QgUjMxLiAgKi8KKyAg IGlmIChJTlRfUkVHTk9fUCAocmVnbm8pKQorLSAgICByZXR1cm4gSU5UX1JFR05PX1AgKHJlZ25v ICsgSEFSRF9SRUdOT19OUkVHUyAocmVnbm8sIG1vZGUpIC0gMSk7CisrICAgIHJldHVybiBJTlRf UkVHTk9fUCAobGFzdF9yZWdubyk7CisgCistICAvKiBUaGUgZmxvYXQgcmVnaXN0ZXJzIGNhbiBv bmx5IGhvbGQgZmxvYXRpbmcgbW9kZXMgYW5kIERJbW9kZS4KKy0gICAgIFRoaXMgZXhjbHVkZXMg dGhlIDMyLWJpdCBkZWNpbWFsIGZsb2F0IG1vZGUgZm9yIG5vdy4gICovCisrICAvKiBUaGUgZmxv YXQgcmVnaXN0ZXJzIChleGNlcHQgZm9yIFZTWCB2ZWN0b3IgbW9kZXMpIGNhbiBvbmx5IGhvbGQg ZmxvYXRpbmcKKysgICAgIG1vZGVzIGFuZCBESW1vZGUuICBUaGlzIGV4Y2x1ZGVzIHRoZSAzMi1i aXQgZGVjaW1hbCBmbG9hdCBtb2RlIGZvcgorKyAgICAgbm93LiAgKi8KKyAgIGlmIChGUF9SRUdO T19QIChyZWdubykpCistICAgIHJldHVybgorLSAgICAgICgoU0NBTEFSX0ZMT0FUX01PREVfUCAo bW9kZSkKKy0gICAgICAgJiYgKG1vZGUgIT0gVERtb2RlIHx8IChyZWdubyAlIDIpID09IDApCist ICAgICAgICYmIEZQX1JFR05PX1AgKHJlZ25vICsgSEFSRF9SRUdOT19OUkVHUyAocmVnbm8sIG1v ZGUpIC0gMSkpCistICAgICAgfHwgKEdFVF9NT0RFX0NMQVNTIChtb2RlKSA9PSBNT0RFX0lOVAor KyAgICB7CisrICAgICAgaWYgKFNDQUxBUl9GTE9BVF9NT0RFX1AgKG1vZGUpCisrCSAgJiYgKG1v ZGUgIT0gVERtb2RlIHx8IChyZWdubyAlIDIpID09IDApCisrCSAgJiYgRlBfUkVHTk9fUCAobGFz dF9yZWdubykpCisrCXJldHVybiAxOworKworKyAgICAgIGlmIChHRVRfTU9ERV9DTEFTUyAobW9k ZSkgPT0gTU9ERV9JTlQKKyAJICAmJiBHRVRfTU9ERV9TSVpFIChtb2RlKSA9PSBVTklUU19QRVJf RlBfV09SRCkKKy0gICAgICB8fCAoUEFJUkVEX1NJTURfUkVHTk9fUCAocmVnbm8pICYmIFRBUkdF VF9QQUlSRURfRkxPQVQKKy0gICAgICAgICAgICYmIFBBSVJFRF9WRUNUT1JfTU9ERSAobW9kZSkp KTsKKysJcmV0dXJuIDE7CisrCisrICAgICAgaWYgKFBBSVJFRF9TSU1EX1JFR05PX1AgKHJlZ25v KSAmJiBUQVJHRVRfUEFJUkVEX0ZMT0FUCisrCSAgJiYgUEFJUkVEX1ZFQ1RPUl9NT0RFIChtb2Rl KSkKKysJcmV0dXJuIDE7CisrCisrICAgICAgcmV0dXJuIDA7CisrICAgIH0KKyAKKyAgIC8qIFRo ZSBDUiByZWdpc3RlciBjYW4gb25seSBob2xkIENDIG1vZGVzLiAgKi8KKyAgIGlmIChDUl9SRUdO T19QIChyZWdubykpCitAQCAtMTMzMSwyOCArMTQzNSwzMTIgQEAgcnM2MDAwX2hhcmRfcmVnbm9f bW9kZV9vayAoaW50IHJlZ25vLCBlbgorIAorICAgLyogQWx0aVZlYyBvbmx5IGluIEFsZHlWZWMg cmVnaXN0ZXJzLiAgKi8KKyAgIGlmIChBTFRJVkVDX1JFR05PX1AgKHJlZ25vKSkKKy0gICAgcmV0 dXJuIEFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUpOworKyAgICByZXR1cm4gVkVDVE9SX1VOSVRf QUxUSVZFQ19PUl9WU1hfUCAobW9kZSk7CisgCisgICAvKiAuLi5idXQgR1BScyBjYW4gaG9sZCBT SU1EIGRhdGEgb24gdGhlIFNQRSBpbiBvbmUgcmVnaXN0ZXIuICAqLworICAgaWYgKFNQRV9TSU1E X1JFR05PX1AgKHJlZ25vKSAmJiBUQVJHRVRfU1BFICYmIFNQRV9WRUNUT1JfTU9ERSAobW9kZSkp CisgICAgIHJldHVybiAxOworIAorLSAgLyogV2UgY2Fubm90IHB1dCBUSW1vZGUgYW55d2hlcmUg ZXhjZXB0IGdlbmVyYWwgcmVnaXN0ZXIgYW5kIGl0IG11c3QgYmUKKy0gICAgIGFibGUgdG8gZml0 IHdpdGhpbiB0aGUgcmVnaXN0ZXIgc2V0LiAgKi8KKysgIC8qIERvbid0IGFsbG93IGFueXRoaW5n IGJ1dCB3b3JkIHNpemVkIGludGVnZXJzIChha2EgcG9pbnRlcnMpIGluIENUUi9MUi4gIFlvdQor KyAgICAgcmVhbGx5IGRvbid0IHdhbnQgdG8gc3BpbGwgeW91ciBmbG9hdGluZyBwb2ludCB2YWx1 ZXMgdG8gdGhvc2UKKysgICAgIHJlZ2lzdGVycy4gIEFsc28gZG8gaXQgZm9yIHRoZSBvbGQgTVEg cmVnaXN0ZXIgaW4gdGhlIHBvd2VyLiAgKi8KKysgIGlmIChyZWdubyA9PSBDVFJfUkVHTk8gfHwg cmVnbm8gPT0gTFJfUkVHTk8gfHwgcmVnbm8gPT0gTVFfUkVHTk8pCisrICAgIHJldHVybiAoR0VU X01PREVfQ0xBU1MgKG1vZGUpID09IE1PREVfSU5UCisrCSAgICAmJiBHRVRfTU9ERV9TSVpFICht b2RlKSA8PSBVTklUU19QRVJfV09SRCk7CisrCisrICAvKiBUaGUgVlJTQVZFL1ZTQ1IgcmVnaXN0 ZXJzIGFyZSAzMi1iaXRzICh0aGV5IGFyZSBmaXhlZCwgYnV0IGFkZCB0aGlzIGZvcgorKyAgICAg Y29tcGxldGVuZXNzKS4gICovCisrICBpZiAocmVnbm8gPT0gVlJTQVZFX1JFR05PIHx8IHJlZ25v ID09IFZTQ1JfUkVHTk8pCisrICAgIHJldHVybiAobW9kZSA9PSBTSW1vZGUpOworKworKyAgLyog V2UgY2Fubm90IHB1dCBUSW1vZGUgYW55d2hlcmUgZXhjZXB0IGdlbmVyYWwgcmVnaXN0ZXIgYW5k IGl0IG11c3QgYmUgYWJsZQorKyAgICAgdG8gZml0IHdpdGhpbiB0aGUgcmVnaXN0ZXIgc2V0LiAg SW4gdGhlIGZ1dHVyZSwgYWxsb3cgVEltb2RlIGluIHRoZQorKyAgICAgQWx0aXZlYyBvciBWU1gg cmVnaXN0ZXJzLiAgKi8KKyAKKyAgIHJldHVybiBHRVRfTU9ERV9TSVpFIChtb2RlKSA8PSBVTklU U19QRVJfV09SRDsKKyB9CisgCistLyogSW5pdGlhbGl6ZSByczYwMDBfaGFyZF9yZWdub19tb2Rl X29rX3AgdGFibGUuICAqLworKy8qIFByaW50IGludGVyZXN0aW5nIGZhY3RzIGFib3V0IHJlZ2lz dGVycy4gICovCisgc3RhdGljIHZvaWQKKy1yczYwMDBfaW5pdF9oYXJkX3JlZ25vX21vZGVfb2sg KHZvaWQpCisrcnM2MDAwX2RlYnVnX3JlZ19wcmludCAoaW50IGZpcnN0X3JlZ25vLCBpbnQgbGFz dF9yZWdubywgY29uc3QgY2hhciAqcmVnX25hbWUpCisgeworICAgaW50IHIsIG07CisgCisrICBm b3IgKHIgPSBmaXJzdF9yZWdubzsgciA8PSBsYXN0X3JlZ25vOyArK3IpCisrICAgIHsKKysgICAg ICBjb25zdCBjaGFyICpjb21tYSA9ICIiOworKyAgICAgIGludCBsZW47CisrCisrICAgICAgaWYg KGZpcnN0X3JlZ25vID09IGxhc3RfcmVnbm8pCisrCWZwcmludGYgKHN0ZGVyciwgIiVzOlx0Iiwg cmVnX25hbWUpOworKyAgICAgIGVsc2UKKysJZnByaW50ZiAoc3RkZXJyLCAiJXMlZDpcdCIsIHJl Z19uYW1lLCByIC0gZmlyc3RfcmVnbm8pOworKworKyAgICAgIGxlbiA9IDg7CisrICAgICAgZm9y IChtID0gMDsgbSA8IE5VTV9NQUNISU5FX01PREVTOyArK20pCisrCWlmIChyczYwMDBfaGFyZF9y ZWdub19tb2RlX29rX3BbbV1bcl0gJiYgcnM2MDAwX2hhcmRfcmVnbm9fbnJlZ3NbbV1bcl0pCisr CSAgeworKwkgICAgaWYgKGxlbiA+IDcwKQorKwkgICAgICB7CisrCQlmcHJpbnRmIChzdGRlcnIs ICIsXG5cdCIpOworKwkJbGVuID0gODsKKysJCWNvbW1hID0gIiI7CisrCSAgICAgIH0KKysKKysJ ICAgIGlmIChyczYwMDBfaGFyZF9yZWdub19ucmVnc1ttXVtyXSA+IDEpCisrCSAgICAgIGxlbiAr PSBmcHJpbnRmIChzdGRlcnIsICIlcyVzLyVkIiwgY29tbWEsIEdFVF9NT0RFX05BTUUgKG0pLAor KwkJCSAgICAgcnM2MDAwX2hhcmRfcmVnbm9fbnJlZ3NbbV1bcl0pOworKwkgICAgZWxzZQorKwkg ICAgICBsZW4gKz0gZnByaW50ZiAoc3RkZXJyLCAiJXMlcyIsIGNvbW1hLCBHRVRfTU9ERV9OQU1F IChtKSk7CisrCisrCSAgICBjb21tYSA9ICIsICI7CisrCSAgfQorKworKyAgICAgIGlmIChjYWxs X3VzZWRfcmVnc1tyXSkKKysJeworKwkgIGlmIChsZW4gPiA3MCkKKysJICAgIHsKKysJICAgICAg ZnByaW50ZiAoc3RkZXJyLCAiLFxuXHQiKTsKKysJICAgICAgbGVuID0gODsKKysJICAgICAgY29t bWEgPSAiIjsKKysJICAgIH0KKysKKysJICBsZW4gKz0gZnByaW50ZiAoc3RkZXJyLCAiJXMlcyIs IGNvbW1hLCAiY2FsbC11c2VkIik7CisrCSAgY29tbWEgPSAiLCAiOworKwl9CisrCisrICAgICAg aWYgKGZpeGVkX3JlZ3Nbcl0pCisrCXsKKysJICBpZiAobGVuID4gNzApCisrCSAgICB7CisrCSAg ICAgIGZwcmludGYgKHN0ZGVyciwgIixcblx0Iik7CisrCSAgICAgIGxlbiA9IDg7CisrCSAgICAg IGNvbW1hID0gIiI7CisrCSAgICB9CisrCisrCSAgbGVuICs9IGZwcmludGYgKHN0ZGVyciwgIiVz JXMiLCBjb21tYSwgImZpeGVkIik7CisrCSAgY29tbWEgPSAiLCAiOworKwl9CisrCisrICAgICAg aWYgKGxlbiA+IDcwKQorKwl7CisrCSAgZnByaW50ZiAoc3RkZXJyLCAiLFxuXHQiKTsKKysJICBj b21tYSA9ICIiOworKwl9CisrCisrICAgICAgZnByaW50ZiAoc3RkZXJyLCAiJXNyZWdubyA9ICVk XG4iLCBjb21tYSwgcik7CisrICAgIH0KKyt9CisrCisrLyogTWFwIGVudW0gcnM2MDAwX3ZlY3Rv ciB0byBzdHJpbmcuICAqLworK3N0YXRpYyBjb25zdCBjaGFyICoKKytyczYwMDBfZGVidWdfdmVj dG9yX3VuaXRbXSA9IHsKKysgICJub25lIiwKKysgICJhbHRpdmVjIiwKKysgICJ2c3giLAorKyAg InBhaXJlZCIsCisrICAic3BlIiwKKysgICJvdGhlciIKKyt9OworKworKy8qIEluaXRpYWxpemUg dGhlIHZhcmlvdXMgZ2xvYmFsIHRhYmxlcyB0aGF0IGFyZSBiYXNlZCBvbiByZWdpc3RlciBzaXpl LiAgKi8KKytzdGF0aWMgdm9pZAorK3JzNjAwMF9pbml0X2hhcmRfcmVnbm9fbW9kZV9vayAodm9p ZCkKKyt7CisrICBpbnQgciwgbSwgYzsKKysgIGVudW0gcmVnX2NsYXNzIHZzeF9yYyA9IChUQVJH RVRfQUxUSVZFQyA/IFZTWF9SRUdTIDogRkxPQVRfUkVHUyk7CisrICBib29sIGZsb2F0X3AgPSAo VEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMpOworKworKyAgLyogUHJlY2FsY3VsYXRl IHZlY3RvciBpbmZvcm1hdGlvbiwgdGhpcyBtdXN0IGJlIHNldCB1cCBiZWZvcmUgdGhlCisrICAg ICByczYwMDBfaGFyZF9yZWdub19ucmVnc19pbnRlcm5hbCBiZWxvdy4gICovCisrICBmb3IgKG0g PSAwOyBtIDwgTlVNX01BQ0hJTkVfTU9ERVM7ICsrbSkKKysgICAgeworKyAgICAgIHJzNjAwMF92 ZWN0b3JfdW5pdFttXSA9IHJzNjAwMF92ZWN0b3JfbWVtW21dID0gVkVDVE9SX05PTkU7CisrICAg ICAgcnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3NbbV0gPSBOT19SRUdTOworKyAgICB9CisrCisrICAv KiBUT0RPLCBhZGQgVEkvVjJESSBtb2RlIGZvciBtb3ZpbmcgZGF0YSBpZiBBbHRpdmVjIG9yIFZT WC4gICovCisrCisrICAvKiBWMkRGIG1vZGUsIFZTWCBvbmx5LiAgKi8KKysgIGlmIChmbG9hdF9w ICYmIFRBUkdFVF9WU1ggJiYgVEFSR0VUX1ZTWF9WRUNUT1JfRE9VQkxFKQorKyAgICB7CisrICAg ICAgcnM2MDAwX3ZlY3Rvcl91bml0W1YyREZtb2RlXSA9IFZFQ1RPUl9WU1g7CisrICAgICAgcnM2 MDAwX3ZlY3Rvcl9tZW1bVjJERm1vZGVdID0gVkVDVE9SX1ZTWDsKKysgICAgICByczYwMDBfdmVj dG9yX2FsaWduW1YyREZtb2RlXSA9IDY0OworKyAgICB9CisrCisrICAvKiBWNFNGIG1vZGUsIGVp dGhlciBWU1ggb3IgQWx0aXZlYy4gICovCisrICBpZiAoZmxvYXRfcCAmJiBUQVJHRVRfVlNYICYm IFRBUkdFVF9WU1hfVkVDVE9SX0ZMT0FUKQorKyAgICB7CisrICAgICAgcnM2MDAwX3ZlY3Rvcl91 bml0W1Y0U0Ztb2RlXSA9IFZFQ1RPUl9WU1g7CisrICAgICAgaWYgKFRBUkdFVF9WU1hfVkVDVE9S X01FTU9SWSB8fCAhVEFSR0VUX0FMVElWRUMpCisrCXsKKysJICByczYwMDBfdmVjdG9yX2FsaWdu W1Y0U0Ztb2RlXSA9IDMyOworKwkgIHJzNjAwMF92ZWN0b3JfbWVtW1Y0U0Ztb2RlXSA9IFZFQ1RP Ul9WU1g7CisrCX0gZWxzZSB7CisrCSAgcnM2MDAwX3ZlY3Rvcl9hbGlnbltWNFNGbW9kZV0gPSAx Mjg7CisrCSAgcnM2MDAwX3ZlY3Rvcl9tZW1bVjRTRm1vZGVdID0gVkVDVE9SX0FMVElWRUM7Cisr ICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChmbG9hdF9wICYmIFRBUkdFVF9BTFRJVkVDKQor KyAgICB7CisrICAgICAgcnM2MDAwX3ZlY3Rvcl91bml0W1Y0U0Ztb2RlXSA9IFZFQ1RPUl9BTFRJ VkVDOworKyAgICAgIHJzNjAwMF92ZWN0b3JfbWVtW1Y0U0Ztb2RlXSA9IFZFQ1RPUl9BTFRJVkVD OworKyAgICAgIHJzNjAwMF92ZWN0b3JfYWxpZ25bVjRTRm1vZGVdID0gMTI4OworKyAgICB9Cisr CisrICAvKiBWMTZRSW1vZGUsIFY4SEltb2RlLCBWNFNJbW9kZSBhcmUgQWx0aXZlYyBvbmx5LCBi dXQgcG9zc2libHkgZG8gVlNYIGxvYWRzCisrICAgICBhbmQgc3RvcmVzLiAqLworKyAgaWYgKFRB UkdFVF9BTFRJVkVDKQorKyAgICB7CisrICAgICAgcnM2MDAwX3ZlY3Rvcl91bml0W1Y0U0ltb2Rl XSA9IFZFQ1RPUl9BTFRJVkVDOworKyAgICAgIHJzNjAwMF92ZWN0b3JfdW5pdFtWOEhJbW9kZV0g PSBWRUNUT1JfQUxUSVZFQzsKKysgICAgICByczYwMDBfdmVjdG9yX3VuaXRbVjE2UUltb2RlXSA9 IFZFQ1RPUl9BTFRJVkVDOworKworKyAgICAgIHJzNjAwMF92ZWN0b3JfcmVnX2NsYXNzW1YxNlFJ bW9kZV0gPSBBTFRJVkVDX1JFR1M7CisrICAgICAgcnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3NbVjhI SW1vZGVdID0gQUxUSVZFQ19SRUdTOworKyAgICAgIHJzNjAwMF92ZWN0b3JfcmVnX2NsYXNzW1Y0 U0ltb2RlXSA9IEFMVElWRUNfUkVHUzsKKysKKysgICAgICBpZiAoVEFSR0VUX1ZTWCAmJiBUQVJH RVRfVlNYX1ZFQ1RPUl9NRU1PUlkpCisrCXsKKysJICByczYwMDBfdmVjdG9yX21lbVtWNFNJbW9k ZV0gPSBWRUNUT1JfVlNYOworKwkgIHJzNjAwMF92ZWN0b3JfbWVtW1Y4SEltb2RlXSA9IFZFQ1RP Ul9WU1g7CisrCSAgcnM2MDAwX3ZlY3Rvcl9tZW1bVjE2UUltb2RlXSA9IFZFQ1RPUl9WU1g7Cisr CSAgcnM2MDAwX3ZlY3Rvcl9hbGlnbltWNFNJbW9kZV0gPSAzMjsKKysJICByczYwMDBfdmVjdG9y X2FsaWduW1Y4SEltb2RlXSA9IDMyOworKwkgIHJzNjAwMF92ZWN0b3JfYWxpZ25bVjE2UUltb2Rl XSA9IDMyOworKwl9CisrICAgICAgZWxzZQorKwl7CisrCSAgcnM2MDAwX3ZlY3Rvcl9tZW1bVjRT SW1vZGVdID0gVkVDVE9SX0FMVElWRUM7CisrCSAgcnM2MDAwX3ZlY3Rvcl9tZW1bVjhISW1vZGVd ID0gVkVDVE9SX0FMVElWRUM7CisrCSAgcnM2MDAwX3ZlY3Rvcl9tZW1bVjE2UUltb2RlXSA9IFZF Q1RPUl9BTFRJVkVDOworKwkgIHJzNjAwMF92ZWN0b3JfYWxpZ25bVjRTSW1vZGVdID0gMTI4Owor KwkgIHJzNjAwMF92ZWN0b3JfYWxpZ25bVjhISW1vZGVdID0gMTI4OworKwkgIHJzNjAwMF92ZWN0 b3JfYWxpZ25bVjE2UUltb2RlXSA9IDEyODsKKysJfQorKyAgICB9CisrCisrICAvKiBERm1vZGUs IHNlZSBpZiB3ZSB3YW50IHRvIHVzZSB0aGUgVlNYIHVuaXQuICAqLworKyAgaWYgKGZsb2F0X3Ag JiYgVEFSR0VUX1ZTWCAmJiBUQVJHRVRfVlNYX1NDQUxBUl9ET1VCTEUpCisrICAgIHsKKysgICAg ICByczYwMDBfdmVjdG9yX3VuaXRbREZtb2RlXSA9IFZFQ1RPUl9WU1g7CisrICAgICAgcnM2MDAw X3ZlY3Rvcl9hbGlnbltERm1vZGVdID0gNjQ7CisrICAgICAgcnM2MDAwX3ZlY3Rvcl9tZW1bREZt b2RlXQorKwk9IChUQVJHRVRfVlNYX1NDQUxBUl9NRU1PUlkgPyBWRUNUT1JfVlNYIDogVkVDVE9S X05PTkUpOworKyAgICB9CisrCisrICAvKiBUT0RPLCBhZGQgU1BFIGFuZCBwYWlyZWQgZmxvYXRp bmcgcG9pbnQgdmVjdG9yIHN1cHBvcnQuICAqLworKworKyAgLyogU2V0IHRoZSBWU1ggcmVnaXN0 ZXIgY2xhc3Nlcy4gICovCisrICByczYwMDBfdmVjdG9yX3JlZ19jbGFzc1tWNFNGbW9kZV0KKysg ICAgPSAoKFZFQ1RPUl9VTklUX1ZTWF9QIChWNFNGbW9kZSkgJiYgVkVDVE9SX01FTV9WU1hfUCAo VjRTRm1vZGUpKQorKyAgICAgICA/IHZzeF9yYworKyAgICAgICA6IChWRUNUT1JfVU5JVF9BTFRJ VkVDX09SX1ZTWF9QIChWNFNGbW9kZSkKKysJICA/IEFMVElWRUNfUkVHUworKwkgIDogTk9fUkVH UykpOworKworKyAgcnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3NbVjJERm1vZGVdCisrICAgID0gKFZF Q1RPUl9VTklUX1ZTWF9QIChWMkRGbW9kZSkgPyB2c3hfcmMgOiBOT19SRUdTKTsKKysKKysgIHJz NjAwMF92ZWN0b3JfcmVnX2NsYXNzW0RGbW9kZV0KKysgICAgPSAoKCFmbG9hdF9wIHx8ICFWRUNU T1JfVU5JVF9WU1hfUCAoREZtb2RlKSkKKysgICAgICAgPyBOT19SRUdTCisrICAgICAgIDogKChU QVJHRVRfVlNYX1NDQUxBUl9NRU1PUlkpCisrCSAgPyB2c3hfcmMKKysJICA6IEZMT0FUX1JFR1Mp KTsKKysKKysgIHJzNjAwMF92c3hfcmVnX2NsYXNzID0gKGZsb2F0X3AgJiYgVEFSR0VUX1ZTWCkg PyB2c3hfcmMgOiBOT19SRUdTOworKworKyAgLyogUHJlY2FsY3VsYXRlIEhBUkRfUkVHTk9fTlJF R1MuICAqLworKyAgZm9yIChyID0gMDsgciA8IEZJUlNUX1BTRVVET19SRUdJU1RFUjsgKytyKQor KyAgICBmb3IgKG0gPSAwOyBtIDwgTlVNX01BQ0hJTkVfTU9ERVM7ICsrbSkKKysgICAgICByczYw MDBfaGFyZF9yZWdub19ucmVnc1ttXVtyXSA9IHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzX2ludGVy bmFsIChyLCBtKTsKKysKKysgIC8qIFByZWNhbGN1bGF0ZSBIQVJEX1JFR05PX01PREVfT0suICAq LworICAgZm9yIChyID0gMDsgciA8IEZJUlNUX1BTRVVET19SRUdJU1RFUjsgKytyKQorICAgICBm b3IgKG0gPSAwOyBtIDwgTlVNX01BQ0hJTkVfTU9ERVM7ICsrbSkKKyAgICAgICBpZiAocnM2MDAw X2hhcmRfcmVnbm9fbW9kZV9vayAociwgbSkpCisgCXJzNjAwMF9oYXJkX3JlZ25vX21vZGVfb2tf cFttXVtyXSA9IHRydWU7CisrCisrICAvKiBQcmVjYWxjdWxhdGUgQ0xBU1NTX01BWF9OUkVHUyBz aXplcy4gICovCisrICBmb3IgKGMgPSAwOyBjIDwgTElNX1JFR19DTEFTU0VTOyArK2MpCisrICAg IHsKKysgICAgICBpbnQgcmVnX3NpemU7CisrCisrICAgICAgaWYgKFRBUkdFVF9WU1ggJiYgVlNY X1JFR19DTEFTU19QIChjKSkKKysJcmVnX3NpemUgPSBVTklUU19QRVJfVlNYX1dPUkQ7CisrCisr ICAgICAgZWxzZSBpZiAoYyA9PSBBTFRJVkVDX1JFR1MpCisrCXJlZ19zaXplID0gVU5JVFNfUEVS X0FMVElWRUNfV09SRDsKKysKKysgICAgICBlbHNlIGlmIChjID09IEZMT0FUX1JFR1MpCisrCXJl Z19zaXplID0gVU5JVFNfUEVSX0ZQX1dPUkQ7CisrCisrICAgICAgZWxzZQorKwlyZWdfc2l6ZSA9 IFVOSVRTX1BFUl9XT1JEOworKworKyAgICAgIGZvciAobSA9IDA7IG0gPCBOVU1fTUFDSElORV9N T0RFUzsgKyttKQorKwlyczYwMDBfY2xhc3NfbWF4X25yZWdzW21dW2NdCisrCSAgPSAoR0VUX01P REVfU0laRSAobSkgKyByZWdfc2l6ZSAtIDEpIC8gcmVnX3NpemU7CisrICAgIH0KKysKKysgIGlm IChUQVJHRVRfRTUwMF9ET1VCTEUpCisrICAgIHJzNjAwMF9jbGFzc19tYXhfbnJlZ3NbREZtb2Rl XVtHRU5FUkFMX1JFR1NdID0gMTsKKysKKysgIGlmIChUQVJHRVRfREVCVUdfUkVHKQorKyAgICB7 CisrICAgICAgY29uc3QgY2hhciAqbmwgPSAoY29uc3QgY2hhciAqKTA7CisrCisrICAgICAgZnBy aW50ZiAoc3RkZXJyLCAiUmVnaXN0ZXIgaW5mb3JtYXRpb246IChsYXN0IHZpcnR1YWwgcmVnID0g JWQpXG4iLAorKwkgICAgICAgTEFTVF9WSVJUVUFMX1JFR0lTVEVSKTsKKysgICAgICByczYwMDBf ZGVidWdfcmVnX3ByaW50ICgwLCAzMSwgImdyIik7CisrICAgICAgcnM2MDAwX2RlYnVnX3JlZ19w cmludCAoMzIsIDYzLCAiZnAiKTsKKysgICAgICByczYwMDBfZGVidWdfcmVnX3ByaW50IChGSVJT VF9BTFRJVkVDX1JFR05PLAorKwkJCSAgICAgIExBU1RfQUxUSVZFQ19SRUdOTywKKysJCQkgICAg ICAidnMiKTsKKysgICAgICByczYwMDBfZGVidWdfcmVnX3ByaW50IChMUl9SRUdOTywgTFJfUkVH Tk8sICJsciIpOworKyAgICAgIHJzNjAwMF9kZWJ1Z19yZWdfcHJpbnQgKENUUl9SRUdOTywgQ1RS X1JFR05PLCAiY3RyIik7CisrICAgICAgcnM2MDAwX2RlYnVnX3JlZ19wcmludCAoQ1IwX1JFR05P LCBDUjdfUkVHTk8sICJjciIpOworKyAgICAgIHJzNjAwMF9kZWJ1Z19yZWdfcHJpbnQgKE1RX1JF R05PLCBNUV9SRUdOTywgIm1xIik7CisrICAgICAgcnM2MDAwX2RlYnVnX3JlZ19wcmludCAoWEVS X1JFR05PLCBYRVJfUkVHTk8sICJ4ZXIiKTsKKysgICAgICByczYwMDBfZGVidWdfcmVnX3ByaW50 IChWUlNBVkVfUkVHTk8sIFZSU0FWRV9SRUdOTywgInZyc2F2ZSIpOworKyAgICAgIHJzNjAwMF9k ZWJ1Z19yZWdfcHJpbnQgKFZTQ1JfUkVHTk8sIFZTQ1JfUkVHTk8sICJ2c2NyIik7CisrICAgICAg cnM2MDAwX2RlYnVnX3JlZ19wcmludCAoU1BFX0FDQ19SRUdOTywgU1BFX0FDQ19SRUdOTywgInNw ZV9hIik7CisrICAgICAgcnM2MDAwX2RlYnVnX3JlZ19wcmludCAoU1BFRlNDUl9SRUdOTywgU1BF RlNDUl9SRUdOTywgInNwZV9mIik7CisrCisrICAgICAgZnByaW50ZiAoc3RkZXJyLAorKwkgICAg ICAgIlxuIgorKwkgICAgICAgIlYxNlFJIHJlZ19jbGFzcyA9ICVzXG4iCisrCSAgICAgICAiVjhI SSAgcmVnX2NsYXNzID0gJXNcbiIKKysJICAgICAgICJWNFNJICByZWdfY2xhc3MgPSAlc1xuIgor KwkgICAgICAgIlYyREkgIHJlZ19jbGFzcyA9ICVzXG4iCisrCSAgICAgICAiVjRTRiAgcmVnX2Ns YXNzID0gJXNcbiIKKysJICAgICAgICJWMkRGICByZWdfY2xhc3MgPSAlc1xuIgorKwkgICAgICAg IkRGICAgIHJlZ19jbGFzcyA9ICVzXG4iCisrCSAgICAgICAidnN4ICAgcmVnX2NsYXNzID0gJXNc blxuIiwKKysJICAgICAgIHJlZ19jbGFzc19uYW1lc1tyczYwMDBfdmVjdG9yX3JlZ19jbGFzc1tW MTZRSW1vZGVdXSwKKysJICAgICAgIHJlZ19jbGFzc19uYW1lc1tyczYwMDBfdmVjdG9yX3JlZ19j bGFzc1tWOEhJbW9kZV1dLAorKwkgICAgICAgcmVnX2NsYXNzX25hbWVzW3JzNjAwMF92ZWN0b3Jf cmVnX2NsYXNzW1Y0U0ltb2RlXV0sCisrCSAgICAgICByZWdfY2xhc3NfbmFtZXNbcnM2MDAwX3Zl Y3Rvcl9yZWdfY2xhc3NbVjJESW1vZGVdXSwKKysJICAgICAgIHJlZ19jbGFzc19uYW1lc1tyczYw MDBfdmVjdG9yX3JlZ19jbGFzc1tWNFNGbW9kZV1dLAorKwkgICAgICAgcmVnX2NsYXNzX25hbWVz W3JzNjAwMF92ZWN0b3JfcmVnX2NsYXNzW1YyREZtb2RlXV0sCisrCSAgICAgICByZWdfY2xhc3Nf bmFtZXNbcnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3NbREZtb2RlXV0sCisrCSAgICAgICByZWdfY2xh c3NfbmFtZXNbcnM2MDAwX3ZzeF9yZWdfY2xhc3NdKTsKKysKKysgICAgICBmb3IgKG0gPSAwOyBt IDwgTlVNX01BQ0hJTkVfTU9ERVM7ICsrbSkKKysJaWYgKHJzNjAwMF92ZWN0b3JfdW5pdFttXSB8 fCByczYwMDBfdmVjdG9yX21lbVttXSkKKysJICB7CisrCSAgICBubCA9ICJcbiI7CisrCSAgICBm cHJpbnRmIChzdGRlcnIsICJWZWN0b3IgbW9kZTogJS01cyBhcml0aG1ldGljOiAlLThzIG1vdmU6 ICUtOHNcbiIsCisrCQkgICAgIEdFVF9NT0RFX05BTUUgKG0pLAorKwkJICAgICByczYwMDBfZGVi dWdfdmVjdG9yX3VuaXRbIHJzNjAwMF92ZWN0b3JfdW5pdFttXSBdLAorKwkJICAgICByczYwMDBf ZGVidWdfdmVjdG9yX3VuaXRbIHJzNjAwMF92ZWN0b3JfbWVtW21dIF0pOworKwkgIH0KKysKKysg ICAgICBpZiAobmwpCisrCWZwdXRzIChubCwgc3RkZXJyKTsKKysgICAgfQorIH0KKyAKKyAjaWYg VEFSR0VUX01BQ0hPCitAQCAtMTQ4MiwxMiArMTg3MCwxNSBAQCByczYwMDBfb3ZlcnJpZGVfb3B0 aW9ucyAoY29uc3QgY2hhciAqZGVmCisgCSB7IjgwMSIsIFBST0NFU1NPUl9NUENDT1JFLCBQT1dF UlBDX0JBU0VfTUFTSyB8IE1BU0tfU09GVF9GTE9BVH0sCisgCSB7IjgyMSIsIFBST0NFU1NPUl9N UENDT1JFLCBQT1dFUlBDX0JBU0VfTUFTSyB8IE1BU0tfU09GVF9GTE9BVH0sCisgCSB7IjgyMyIs IFBST0NFU1NPUl9NUENDT1JFLCBQT1dFUlBDX0JBU0VfTUFTSyB8IE1BU0tfU09GVF9GTE9BVH0s CistCSB7Ijg1NDAiLCBQUk9DRVNTT1JfUFBDODU0MCwgUE9XRVJQQ19CQVNFX01BU0sgfCBNQVNL X1NUUklDVF9BTElHTn0sCisrCSB7Ijg1NDAiLCBQUk9DRVNTT1JfUFBDODU0MCwgUE9XRVJQQ19C QVNFX01BU0sgfCBNQVNLX1NUUklDVF9BTElHTgorKwkgIHwgTUFTS19JU0VMfSwKKyAJIC8qIDg1 NDggaGFzIGEgZHVtbXkgZW50cnkgZm9yIG5vdy4gICovCistCSB7Ijg1NDgiLCBQUk9DRVNTT1Jf UFBDODU0MCwgUE9XRVJQQ19CQVNFX01BU0sgfCBNQVNLX1NUUklDVF9BTElHTn0sCisrCSB7Ijg1 NDgiLCBQUk9DRVNTT1JfUFBDODU0MCwgUE9XRVJQQ19CQVNFX01BU0sgfCBNQVNLX1NUUklDVF9B TElHTgorKwkgIHwgTUFTS19JU0VMfSwKKyAJIHsiZTMwMGMyIiwgUFJPQ0VTU09SX1BQQ0UzMDBD MiwgUE9XRVJQQ19CQVNFX01BU0sgfCBNQVNLX1NPRlRfRkxPQVR9LAorIAkgeyJlMzAwYzMiLCBQ Uk9DRVNTT1JfUFBDRTMwMEMzLCBQT1dFUlBDX0JBU0VfTUFTS30sCistCSB7ImU1MDBtYyIsIFBS T0NFU1NPUl9QUENFNTAwTUMsIFBPV0VSUENfQkFTRV9NQVNLIHwgTUFTS19QUENfR0ZYT1BUfSwK KysJIHsiZTUwMG1jIiwgUFJPQ0VTU09SX1BQQ0U1MDBNQywgUE9XRVJQQ19CQVNFX01BU0sgfCBN QVNLX1BQQ19HRlhPUFQKKysJICB8IE1BU0tfSVNFTH0sCisgCSB7Ijg2MCIsIFBST0NFU1NPUl9N UENDT1JFLCBQT1dFUlBDX0JBU0VfTUFTSyB8IE1BU0tfU09GVF9GTE9BVH0sCisgCSB7Ijk3MCIs IFBST0NFU1NPUl9QT1dFUjQsCisgCSAgUE9XRVJQQ183NDAwX01BU0sgfCBNQVNLX1BQQ19HUE9Q VCB8IE1BU0tfTUZDUkYgfCBNQVNLX1BPV0VSUEM2NH0sCitAQCAtMTUyMCw5ICsxOTExLDEwIEBA IHJzNjAwMF9vdmVycmlkZV9vcHRpb25zIChjb25zdCBjaGFyICpkZWYKKyAJICBQT1dFUlBDX0JB U0VfTUFTSyB8IE1BU0tfUE9XRVJQQzY0IHwgTUFTS19QUENfR1BPUFQgfCBNQVNLX1BQQ19HRlhP UFQKKyAJICB8IE1BU0tfTUZDUkYgfCBNQVNLX1BPUENOVEIgfCBNQVNLX0ZQUk5EIHwgTUFTS19D TVBCIHwgTUFTS19ERlAKKyAJICB8IE1BU0tfTUZQR1BSfSwKKy0JIHsicG93ZXI3IiwgUFJPQ0VT U09SX1BPV0VSNSwKKysJIHsicG93ZXI3IiwgUFJPQ0VTU09SX1BPV0VSNywKKyAJICBQT1dFUlBD Xzc0MDBfTUFTSyB8IE1BU0tfUE9XRVJQQzY0IHwgTUFTS19QUENfR1BPUFQgfCBNQVNLX01GQ1JG CistCSAgfCBNQVNLX1BPUENOVEIgfCBNQVNLX0ZQUk5EIHwgTUFTS19DTVBCIHwgTUFTS19ERlB9 LAorKwkgIHwgTUFTS19QT1BDTlRCIHwgTUFTS19GUFJORCB8IE1BU0tfQ01QQiB8IE1BU0tfREZQ IHwgTUFTS19QT1BDTlRECisrCSAgfCBNQVNLX1ZTWH0sCS8qIERvbid0IGFkZCBNQVNLX0lTRUwg YnkgZGVmYXVsdCAqLworIAkgeyJwb3dlcnBjIiwgUFJPQ0VTU09SX1BPV0VSUEMsIFBPV0VSUENf QkFTRV9NQVNLfSwKKyAJIHsicG93ZXJwYzY0IiwgUFJPQ0VTU09SX1BPV0VSUEM2NCwKKyAJICBQ T1dFUlBDX0JBU0VfTUFTSyB8IE1BU0tfUFBDX0dGWE9QVCB8IE1BU0tfUE9XRVJQQzY0fSwKK0BA IC0xNTQ5LDcgKzE5NDEsOCBAQCByczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyAoY29uc3QgY2hhciAq ZGVmCisgICAgIFBPV0VSUENfTUFTS1MgPSAoUE9XRVJQQ19CQVNFX01BU0sgfCBNQVNLX1BQQ19H UE9QVCB8IE1BU0tfU1RSSUNUX0FMSUdOCisgCQkgICAgIHwgTUFTS19QUENfR0ZYT1BUIHwgTUFT S19QT1dFUlBDNjQgfCBNQVNLX0FMVElWRUMKKyAJCSAgICAgfCBNQVNLX01GQ1JGIHwgTUFTS19Q T1BDTlRCIHwgTUFTS19GUFJORCB8IE1BU0tfTVVMSFcKKy0JCSAgICAgfCBNQVNLX0RMTVpCIHwg TUFTS19DTVBCIHwgTUFTS19NRlBHUFIgfCBNQVNLX0RGUCkKKysJCSAgICAgfCBNQVNLX0RMTVpC IHwgTUFTS19DTVBCIHwgTUFTS19NRlBHUFIgfCBNQVNLX0RGUAorKwkJICAgICB8IE1BU0tfUE9Q Q05URCB8IE1BU0tfVlNYIHwgTUFTS19JU0VMKQorICAgfTsKKyAKKyAgIHNldF9tYXNrcyA9IFBP V0VSX01BU0tTIHwgUE9XRVJQQ19NQVNLUyB8IE1BU0tfU09GVF9GTE9BVDsKK0BAIC0xNTk0LDEw ICsxOTg3LDYgQEAgcnM2MDAwX292ZXJyaWRlX29wdGlvbnMgKGNvbnN0IGNoYXIgKmRlZgorIAl9 CisgICAgIH0KKyAKKy0gIGlmICgoVEFSR0VUX0U1MDAgfHwgcnM2MDAwX2NwdSA9PSBQUk9DRVNT T1JfUFBDRTUwME1DKQorLSAgICAgICYmICFyczYwMDBfZXhwbGljaXRfb3B0aW9ucy5pc2VsKQor LSAgICByczYwMDBfaXNlbCA9IDE7CistCisgICBpZiAocnM2MDAwX2NwdSA9PSBQUk9DRVNTT1Jf UFBDRTMwMEMyIHx8IHJzNjAwMF9jcHUgPT0gUFJPQ0VTU09SX1BQQ0UzMDBDMworICAgICAgIHx8 IHJzNjAwMF9jcHUgPT0gUFJPQ0VTU09SX1BQQ0U1MDBNQykKKyAgICAgeworQEAgLTE2NDIsMTUg KzIwMzEsNDcgQEAgcnM2MDAwX292ZXJyaWRlX29wdGlvbnMgKGNvbnN0IGNoYXIgKmRlZgorIAl9 CisgICAgIH0KKyAKKysgIC8qIEFkZCBzb21lIHdhcm5pbmdzIGZvciBWU1guICBFbmFibGUgLW1h bHRpdmVjIHVubGVzcyB0aGUgdXNlciBleHBsaWNpdGx5CisrICAgICB1c2VkIC1tbm8tYWx0aXZl YyAgKi8KKysgIGlmIChUQVJHRVRfVlNYKQorKyAgICB7CisrICAgICAgY29uc3QgY2hhciAqbXNn ID0gTlVMTDsKKysgICAgICBpZiAoIVRBUkdFVF9IQVJEX0ZMT0FUIHx8ICFUQVJHRVRfRlBSUwor KwkgIHx8ICFUQVJHRVRfU0lOR0xFX0ZMT0FUIHx8ICFUQVJHRVRfRE9VQkxFX0ZMT0FUKQorKwlt c2cgPSAiLW12c3ggcmVxdWlyZXMgaGFyZHdhcmUgZmxvYXRpbmcgcG9pbnQiOworKyAgICAgIGVs c2UgaWYgKFRBUkdFVF9QQUlSRURfRkxPQVQpCisrCW1zZyA9ICItbXZzeCBhbmQgLW1wYWlyZWQg YXJlIGluY29tcGF0aWJsZSI7CisrICAgICAgLyogVGhlIGhhcmR3YXJlIHdpbGwgYWxsb3cgVlNY IGFuZCBsaXR0bGUgZW5kaWFuLCBidXQgdW50aWwgd2UgbWFrZSBzdXJlCisrCSB0aGluZ3MgbGlr ZSB2ZWN0b3Igc2VsZWN0LCBldGMuIHdvcmsgZG9uJ3QgYWxsb3cgVlNYIG9uIGxpdHRsZSBlbmRp YW4KKysJIHN5c3RlbXMgYXQgdGhpcyBwb2ludC4gICovCisrICAgICAgZWxzZSBpZiAoIUJZVEVT X0JJR19FTkRJQU4pCisrCW1zZyA9ICItbXZzeCB1c2VkIHdpdGggbGl0dGxlIGVuZGlhbiBjb2Rl IjsKKysgICAgICBlbHNlIGlmIChUQVJHRVRfQVZPSURfWEZPUk0gPiAwKQorKwltc2cgPSAiLW12 c3ggbmVlZHMgaW5kZXhlZCBhZGRyZXNzaW5nIjsKKysKKysgICAgICBpZiAobXNnKQorKwl7Cisr CSAgd2FybmluZyAoMCwgbXNnKTsKKysJICB0YXJnZXRfZmxhZ3MgJj0gTUFTS19WU1g7CisrCX0K KysgICAgICBlbHNlIGlmICghVEFSR0VUX0FMVElWRUMgJiYgKHRhcmdldF9mbGFnc19leHBsaWNp dCAmIE1BU0tfQUxUSVZFQykgPT0gMCkKKysJdGFyZ2V0X2ZsYWdzIHw9IE1BU0tfQUxUSVZFQzsK KysgICAgfQorKworICAgLyogU2V0IGRlYnVnIGZsYWdzICovCisgICBpZiAocnM2MDAwX2RlYnVn X25hbWUpCisgICAgIHsKKyAgICAgICBpZiAoISBzdHJjbXAgKHJzNjAwMF9kZWJ1Z19uYW1lLCAi YWxsIikpCistCXJzNjAwMF9kZWJ1Z19zdGFjayA9IHJzNjAwMF9kZWJ1Z19hcmcgPSAxOworKwly czYwMDBfZGVidWdfc3RhY2sgPSByczYwMDBfZGVidWdfYXJnID0gcnM2MDAwX2RlYnVnX3JlZwor KwkgID0gcnM2MDAwX2RlYnVnX2FkZHIgPSAxOworICAgICAgIGVsc2UgaWYgKCEgc3RyY21wIChy czYwMDBfZGVidWdfbmFtZSwgInN0YWNrIikpCisgCXJzNjAwMF9kZWJ1Z19zdGFjayA9IDE7Cisg ICAgICAgZWxzZSBpZiAoISBzdHJjbXAgKHJzNjAwMF9kZWJ1Z19uYW1lLCAiYXJnIikpCisgCXJz NjAwMF9kZWJ1Z19hcmcgPSAxOworKyAgICAgIGVsc2UgaWYgKCEgc3RyY21wIChyczYwMDBfZGVi dWdfbmFtZSwgInJlZyIpKQorKwlyczYwMDBfZGVidWdfcmVnID0gMTsKKysgICAgICBlbHNlIGlm ICghIHN0cmNtcCAocnM2MDAwX2RlYnVnX25hbWUsICJhZGRyIikpCisrCXJzNjAwMF9kZWJ1Z19h ZGRyID0gMTsKKyAgICAgICBlbHNlCisgCWVycm9yICgidW5rbm93biAtbWRlYnVnLSVzIHN3aXRj aCIsIHJzNjAwMF9kZWJ1Z19uYW1lKTsKKyAgICAgfQorQEAgLTE3NDEsOCArMjE2Miw4IEBAIHJz NjAwMF9vdmVycmlkZV9vcHRpb25zIChjb25zdCBjaGFyICpkZWYKKyAJcnM2MDAwX3NwZSA9IDA7 CisgICAgICAgaWYgKCFyczYwMDBfZXhwbGljaXRfb3B0aW9ucy5mbG9hdF9ncHJzKQorIAlyczYw MDBfZmxvYXRfZ3BycyA9IDA7CistICAgICAgaWYgKCFyczYwMDBfZXhwbGljaXRfb3B0aW9ucy5p c2VsKQorLQlyczYwMDBfaXNlbCA9IDA7CisrICAgICAgaWYgKCEodGFyZ2V0X2ZsYWdzX2V4cGxp Y2l0ICYgTUFTS19JU0VMKSkKKysJdGFyZ2V0X2ZsYWdzICY9IH5NQVNLX0lTRUw7CisgICAgIH0K KyAKKyAgIC8qIERldGVjdCBpbnZhbGlkIG9wdGlvbiBjb21iaW5hdGlvbnMgd2l0aCBFNTAwLiAg Ki8KK0BAIC0xNzUxLDEyICsyMTcyLDE0IEBAIHJzNjAwMF9vdmVycmlkZV9vcHRpb25zIChjb25z dCBjaGFyICpkZWYKKyAgIHJzNjAwMF9hbHdheXNfaGludCA9IChyczYwMDBfY3B1ICE9IFBST0NF U1NPUl9QT1dFUjQKKyAJCQkmJiByczYwMDBfY3B1ICE9IFBST0NFU1NPUl9QT1dFUjUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAmJiByczYwMDBfY3B1ICE9IFBST0NFU1NPUl9QT1dFUjYKKysg ICAgICAgICAgICAgICAgICAgICAgICAmJiByczYwMDBfY3B1ICE9IFBST0NFU1NPUl9QT1dFUjcK KyAJCQkmJiByczYwMDBfY3B1ICE9IFBST0NFU1NPUl9DRUxMKTsKKyAgIHJzNjAwMF9zY2hlZF9n cm91cHMgPSAocnM2MDAwX2NwdSA9PSBQUk9DRVNTT1JfUE9XRVI0CisgCQkJIHx8IHJzNjAwMF9j cHUgPT0gUFJPQ0VTU09SX1BPV0VSNSk7CisgICByczYwMDBfYWxpZ25fYnJhbmNoX3RhcmdldHMg PSAocnM2MDAwX2NwdSA9PSBQUk9DRVNTT1JfUE9XRVI0CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfHwgcnM2MDAwX2NwdSA9PSBQUk9DRVNTT1JfUE9XRVI1CistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfHwgcnM2MDAwX2NwdSA9PSBQUk9DRVNTT1JfUE9XRVI2 KTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCByczYwMDBfY3B1ID09IFBS T0NFU1NPUl9QT1dFUjYKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCByczYw MDBfY3B1ID09IFBST0NFU1NPUl9QT1dFUjcpOworIAorICAgcnM2MDAwX3NjaGVkX3Jlc3RyaWN0 ZWRfaW5zbnNfcHJpb3JpdHkKKyAgICAgPSAocnM2MDAwX3NjaGVkX2dyb3VwcyA/IDEgOiAwKTsK K0BAIC0xOTUxLDYgKzIzNzQsMTAgQEAgcnM2MDAwX292ZXJyaWRlX29wdGlvbnMgKGNvbnN0IGNo YXIgKmRlZgorIAlyczYwMDBfY29zdCA9ICZwb3dlcjZfY29zdDsKKyAJYnJlYWs7CisgCisrICAg ICAgY2FzZSBQUk9DRVNTT1JfUE9XRVI3OgorKwlyczYwMDBfY29zdCA9ICZwb3dlcjdfY29zdDsK KysJYnJlYWs7CisrCisgICAgICAgZGVmYXVsdDoKKyAJZ2NjX3VucmVhY2hhYmxlICgpOworICAg ICAgIH0KK0BAIC0yMDAxLDcgKzI0MjgsNyBAQCByczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyAoY29u c3QgY2hhciAqZGVmCisgc3RhdGljIHRyZWUKKyByczYwMDBfYnVpbHRpbl9tYXNrX2Zvcl9sb2Fk ICh2b2lkKQorIHsKKy0gIGlmIChUQVJHRVRfQUxUSVZFQykKKysgIGlmIChUQVJHRVRfQUxUSVZF QyAmJiAhVEFSR0VUX1ZTWCkKKyAgICAgcmV0dXJuIGFsdGl2ZWNfYnVpbHRpbl9tYXNrX2Zvcl9s b2FkOworICAgZWxzZQorICAgICByZXR1cm4gMDsKK0BAIC0yMDE1LDE4ICsyNDQyLDE5IEBAIHJz NjAwMF9idWlsdGluX21hc2tfZm9yX2xvYWQgKHZvaWQpCisgc3RhdGljIHRyZWUKKyByczYwMDBf YnVpbHRpbl9jb252ZXJzaW9uIChlbnVtIHRyZWVfY29kZSBjb2RlLCB0cmVlIHR5cGUpCisgewor LSAgaWYgKCFUQVJHRVRfQUxUSVZFQykKKy0gICAgcmV0dXJuIE5VTExfVFJFRTsKKy0KKyAgIHN3 aXRjaCAoY29kZSkKKyAgICAgeworICAgICBjYXNlIEZJWF9UUlVOQ19FWFBSOgorICAgICAgIHN3 aXRjaCAoVFlQRV9NT0RFICh0eXBlKSkKKyAJeworIAljYXNlIFY0U0ltb2RlOgorKwkgIGlmIChW RUNUT1JfVU5JVF9OT05FX1AgKFY0U0ltb2RlKSB8fCBWRUNUT1JfVU5JVF9OT05FX1AgKFY0U0Zt b2RlKSkKKysJICAgIHJldHVybiBOVUxMX1RSRUU7CisrCisgCSAgcmV0dXJuIFRZUEVfVU5TSUdO RUQgKHR5cGUpCistCSAgICA/IHJzNjAwMF9idWlsdGluX2RlY2xzW0FMVElWRUNfQlVJTFRJTl9W Q1RVWFNdCistCSAgICA6IHJzNjAwMF9idWlsdGluX2RlY2xzW0FMVElWRUNfQlVJTFRJTl9WQ1RT WFNdOworKwkgICAgPyByczYwMDBfYnVpbHRpbl9kZWNsc1tWRUNUT1JfQlVJTFRJTl9GSVhVTlNf VjRTRl9WNFNJXQorKwkgICAgOiByczYwMDBfYnVpbHRpbl9kZWNsc1tWRUNUT1JfQlVJTFRJTl9G SVhfVjRTRl9WNFNJXTsKKysKKyAJZGVmYXVsdDoKKyAJICByZXR1cm4gTlVMTF9UUkVFOworIAl9 CitAQCAtMjAzNSw5ICsyNDYzLDEyIEBAIHJzNjAwMF9idWlsdGluX2NvbnZlcnNpb24gKGVudW0g dHJlZV9jb2QKKyAgICAgICBzd2l0Y2ggKFRZUEVfTU9ERSAodHlwZSkpCisgCXsKKyAJY2FzZSBW NFNJbW9kZToKKysJICBpZiAoVkVDVE9SX1VOSVRfTk9ORV9QIChWNFNJbW9kZSkgfHwgVkVDVE9S X1VOSVRfTk9ORV9QIChWNFNGbW9kZSkpCisrCSAgICByZXR1cm4gTlVMTF9UUkVFOworKworIAkg IHJldHVybiBUWVBFX1VOU0lHTkVEICh0eXBlKQorLQkgICAgPyByczYwMDBfYnVpbHRpbl9kZWNs c1tBTFRJVkVDX0JVSUxUSU5fVkNGVVhdCistCSAgICA6IHJzNjAwMF9idWlsdGluX2RlY2xzW0FM VElWRUNfQlVJTFRJTl9WQ0ZTWF07CisrCSAgICA/IHJzNjAwMF9idWlsdGluX2RlY2xzW1ZFQ1RP Ul9CVUlMVElOX1VOU0ZMT0FUX1Y0U0lfVjRTRl0KKysJICAgIDogcnM2MDAwX2J1aWx0aW5fZGVj bHNbVkVDVE9SX0JVSUxUSU5fRkxPQVRfVjRTSV9WNFNGXTsKKyAJZGVmYXVsdDoKKyAJICByZXR1 cm4gTlVMTF9UUkVFOworIAl9CitAQCAtMjE1MCw2ICsyNTgxLDE0IEBAIHJzNjAwMF9idWlsdGlu X3ZlY19wZXJtICh0cmVlIHR5cGUsIHRyZWUKKyAgICAgICBkID0gcnM2MDAwX2J1aWx0aW5fZGVj bHNbQUxUSVZFQ19CVUlMVElOX1ZQRVJNXzRTRl07CisgICAgICAgYnJlYWs7CisgCisrICAgIGNh c2UgVjJERm1vZGU6CisrICAgICAgZCA9IHJzNjAwMF9idWlsdGluX2RlY2xzW0FMVElWRUNfQlVJ TFRJTl9WUEVSTV8yREZdOworKyAgICAgIGJyZWFrOworKworKyAgICBjYXNlIFYyREltb2RlOgor KyAgICAgIGQgPSByczYwMDBfYnVpbHRpbl9kZWNsc1tBTFRJVkVDX0JVSUxUSU5fVlBFUk1fMkRJ XTsKKysgICAgICBicmVhazsKKysKKyAgICAgZGVmYXVsdDoKKyAgICAgICByZXR1cm4gTlVMTF9U UkVFOworICAgICB9CitAQCAtMjIyOSw2ICsyNjY4LDcgQEAgc3RhdGljIGJvb2wKKyByczYwMDBf aGFuZGxlX29wdGlvbiAoc2l6ZV90IGNvZGUsIGNvbnN0IGNoYXIgKmFyZywgaW50IHZhbHVlKQor IHsKKyAgIGVudW0gZnB1X3R5cGVfdCBmcHVfdHlwZSA9IEZQVV9OT05FOworKyAgaW50IGlzZWw7 CisgCisgICBzd2l0Y2ggKGNvZGUpCisgICAgIHsKK0BAIC0yMzMxLDE0ICsyNzcxLDE0IEBAIHJz NjAwMF9oYW5kbGVfb3B0aW9uIChzaXplX3QgY29kZSwgY29uc3QKKyAgICAgICByczYwMDBfcGFy c2VfeWVzX25vX29wdGlvbiAoInZyc2F2ZSIsIGFyZywgJihUQVJHRVRfQUxUSVZFQ19WUlNBVkUp KTsKKyAgICAgICBicmVhazsKKyAKKy0gICAgY2FzZSBPUFRfbWlzZWw6CistICAgICAgcnM2MDAw X2V4cGxpY2l0X29wdGlvbnMuaXNlbCA9IHRydWU7CistICAgICAgcnM2MDAwX2lzZWwgPSB2YWx1 ZTsKKy0gICAgICBicmVhazsKKy0KKyAgICAgY2FzZSBPUFRfbWlzZWxfOgorLSAgICAgIHJzNjAw MF9leHBsaWNpdF9vcHRpb25zLmlzZWwgPSB0cnVlOworLSAgICAgIHJzNjAwMF9wYXJzZV95ZXNf bm9fb3B0aW9uICgiaXNlbCIsIGFyZywgJihyczYwMDBfaXNlbCkpOworKyAgICAgIHRhcmdldF9m bGFnc19leHBsaWNpdCB8PSBNQVNLX0lTRUw7CisrICAgICAgaXNlbCA9IDA7CisrICAgICAgcnM2 MDAwX3BhcnNlX3llc19ub19vcHRpb24gKCJpc2VsIiwgYXJnLCAmaXNlbCk7CisrICAgICAgaWYg KGlzZWwpCisrCXRhcmdldF9mbGFncyB8PSBNQVNLX0lTRUw7CisrICAgICAgZWxzZQorKwl0YXJn ZXRfZmxhZ3MgJj0gfk1BU0tfSVNFTDsKKyAgICAgICBicmVhazsKKyAKKyAgICAgY2FzZSBPUFRf bXNwZToKK0BAIC0yOTY3LDYgKzM0MDcsOSBAQCBvdXRwdXRfdmVjX2NvbnN0X21vdmUgKHJ0eCAq b3BlcmFuZHMpCisgICB2ZWMgPSBvcGVyYW5kc1sxXTsKKyAgIG1vZGUgPSBHRVRfTU9ERSAoZGVz dCk7CisgCisrICBpZiAoVEFSR0VUX1ZTWCAmJiB6ZXJvX2NvbnN0YW50ICh2ZWMsIG1vZGUpKQor KyAgICByZXR1cm4gInh4bHhvciAleDAsJXgwLCV4MCI7CisrCisgICBpZiAoVEFSR0VUX0FMVElW RUMpCisgICAgIHsKKyAgICAgICBydHggc3BsYXRfdmVjOworQEAgLTMxOTAsMjAgKzM2MzMsMjEg QEAgcnM2MDAwX2V4cGFuZF92ZWN0b3JfaW5pdCAocnR4IHRhcmdldCwgcgorICAgaWYgKG5fdmFy ID09IDApCisgICAgIHsKKyAgICAgICBydHggY29uc3RfdmVjID0gZ2VuX3J0eF9DT05TVF9WRUNU T1IgKG1vZGUsIFhWRUMgKHZhbHMsIDApKTsKKy0gICAgICBpZiAobW9kZSAhPSBWNFNGbW9kZSAm JiBhbGxfY29uc3RfemVybykKKysgICAgICBib29sIGludF92ZWN0b3JfcCA9IChHRVRfTU9ERV9D TEFTUyAobW9kZSkgPT0gTU9ERV9WRUNUT1JfSU5UKTsKKysgICAgICBpZiAoKGludF92ZWN0b3Jf cCB8fCBUQVJHRVRfVlNYKSAmJiBhbGxfY29uc3RfemVybykKKyAJeworIAkgIC8qIFplcm8gcmVn aXN0ZXIuICAqLworIAkgIGVtaXRfaW5zbiAoZ2VuX3J0eF9TRVQgKFZPSURtb2RlLCB0YXJnZXQs CisgCQkJCSAgZ2VuX3J0eF9YT1IgKG1vZGUsIHRhcmdldCwgdGFyZ2V0KSkpOworIAkgIHJldHVy bjsKKyAJfQorLSAgICAgIGVsc2UgaWYgKG1vZGUgIT0gVjRTRm1vZGUgJiYgZWFzeV92ZWN0b3Jf Y29uc3RhbnQgKGNvbnN0X3ZlYywgbW9kZSkpCisrICAgICAgZWxzZSBpZiAoaW50X3ZlY3Rvcl9w ICYmIGVhc3lfdmVjdG9yX2NvbnN0YW50IChjb25zdF92ZWMsIG1vZGUpKQorIAl7CisgCSAgLyog U3BsYXQgaW1tZWRpYXRlLiAgKi8KKyAJICBlbWl0X2luc24gKGdlbl9ydHhfU0VUIChWT0lEbW9k ZSwgdGFyZ2V0LCBjb25zdF92ZWMpKTsKKyAJICByZXR1cm47CisgCX0KKy0gICAgICBlbHNlIGlm IChhbGxfc2FtZSkKKysgICAgICBlbHNlIGlmIChhbGxfc2FtZSAmJiBpbnRfdmVjdG9yX3ApCisg CTsJLyogU3BsYXQgdmVjdG9yIGVsZW1lbnQuICAqLworICAgICAgIGVsc2UKKyAJeworQEAgLTMy MTMsNiArMzY1NywxOCBAQCByczYwMDBfZXhwYW5kX3ZlY3Rvcl9pbml0IChydHggdGFyZ2V0LCBy CisgCX0KKyAgICAgfQorIAorKyAgaWYgKG1vZGUgPT0gVjJERm1vZGUpCisrICAgIHsKKysgICAg ICBnY2NfYXNzZXJ0IChUQVJHRVRfVlNYKTsKKysgICAgICBpZiAoYWxsX3NhbWUpCisrCWVtaXRf aW5zbiAoZ2VuX3ZzeF9zcGxhdHYyZGYgKHRhcmdldCwgWFZFQ0VYUCAodmFscywgMCwgMCkpKTsK KysgICAgICBlbHNlCisrCWVtaXRfaW5zbiAoZ2VuX3ZzeF9jb25jYXRfdjJkZiAodGFyZ2V0LAor KwkJCQkJY29weV90b19yZWcgKFhWRUNFWFAgKHZhbHMsIDAsIDApKSwKKysJCQkJCWNvcHlfdG9f cmVnIChYVkVDRVhQICh2YWxzLCAwLCAxKSkpKTsKKysgICAgICByZXR1cm47CisrICAgIH0KKysK KyAgIC8qIFN0b3JlIHZhbHVlIHRvIHN0YWNrIHRlbXAuICBMb2FkIHZlY3RvciBlbGVtZW50LiAg U3BsYXQuICAqLworICAgaWYgKGFsbF9zYW1lKQorICAgICB7CitAQCAtMzI3Miw2ICszNzI4LDEz IEBAIHJzNjAwMF9leHBhbmRfdmVjdG9yX3NldCAocnR4IHRhcmdldCwgcnQKKyAgIGludCB3aWR0 aCA9IEdFVF9NT0RFX1NJWkUgKGlubmVyX21vZGUpOworICAgaW50IGk7CisgCisrICBpZiAobW9k ZSA9PSBWMkRGbW9kZSkKKysgICAgeworKyAgICAgIGdjY19hc3NlcnQgKFRBUkdFVF9WU1gpOwor KyAgICAgIGVtaXRfaW5zbiAoZ2VuX3ZzeF9zZXRfdjJkZiAodGFyZ2V0LCB2YWwsIHRhcmdldCwg R0VOX0lOVCAoZWx0KSkpOworKyAgICAgIHJldHVybjsKKysgICAgfQorKworICAgLyogTG9hZCBz aW5nbGUgdmFyaWFibGUgdmFsdWUuICAqLworICAgbWVtID0gYXNzaWduX3N0YWNrX3RlbXAgKG1v ZGUsIEdFVF9NT0RFX1NJWkUgKGlubmVyX21vZGUpLCAwKTsKKyAgIGVtaXRfbW92ZV9pbnNuIChh ZGp1c3RfYWRkcmVzc19udiAobWVtLCBpbm5lcl9tb2RlLCAwKSwgdmFsKTsKK0BAIC0zMzA5LDYg KzM3NzIsMTMgQEAgcnM2MDAwX2V4cGFuZF92ZWN0b3JfZXh0cmFjdCAocnR4IHRhcmdldAorICAg ZW51bSBtYWNoaW5lX21vZGUgaW5uZXJfbW9kZSA9IEdFVF9NT0RFX0lOTkVSIChtb2RlKTsKKyAg IHJ0eCBtZW0sIHg7CisgCisrICBpZiAobW9kZSA9PSBWMkRGbW9kZSkKKysgICAgeworKyAgICAg IGdjY19hc3NlcnQgKFRBUkdFVF9WU1gpOworKyAgICAgIGVtaXRfaW5zbiAoZ2VuX3ZzeF9leHRy YWN0X3YyZGYgKHRhcmdldCwgdmVjLCBHRU5fSU5UIChlbHQpKSk7CisrICAgICAgcmV0dXJuOwor KyAgICB9CisrCisgICAvKiBBbGxvY2F0ZSBtb2RlLXNpemVkIGJ1ZmZlci4gICovCisgICBtZW0g PSBhc3NpZ25fc3RhY2tfdGVtcCAobW9kZSwgR0VUX01PREVfU0laRSAobW9kZSksIDApOworIAor QEAgLTM2MjcsOSArNDA5NywxMyBAQCByczYwMDBfbGVnaXRpbWF0ZV9vZmZzZXRfYWRkcmVzc19w IChlbnVtCisgICAgIGNhc2UgVjhISW1vZGU6CisgICAgIGNhc2UgVjRTRm1vZGU6CisgICAgIGNh c2UgVjRTSW1vZGU6CistICAgICAgLyogQWx0aVZlYyB2ZWN0b3IgbW9kZXMuICBPbmx5IHJlZyty ZWcgYWRkcmVzc2luZyBpcyB2YWxpZCBhbmQKKysgICAgY2FzZSBWMkRGbW9kZToKKysgICAgY2Fz ZSBWMkRJbW9kZToKKysgICAgICAvKiBBbHRpVmVjL1ZTWCB2ZWN0b3IgbW9kZXMuICBPbmx5IHJl ZytyZWcgYWRkcmVzc2luZyBpcyB2YWxpZCBhbmQKKyAJIGNvbnN0YW50IG9mZnNldCB6ZXJvIHNo b3VsZCBub3Qgb2NjdXIgZHVlIHRvIGNhbm9uaWNhbGl6YXRpb24uICAqLworLSAgICAgIHJldHVy biBmYWxzZTsKKysgICAgICBpZiAoVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAobW9kZSkp CisrCXJldHVybiBmYWxzZTsKKysgICAgICBicmVhazsKKyAKKyAgICAgY2FzZSBWNEhJbW9kZToK KyAgICAgY2FzZSBWMlNJbW9kZToKK0BAIC0zNjQ2LDYgKzQxMjAsMTEgQEAgcnM2MDAwX2xlZ2l0 aW1hdGVfb2Zmc2V0X2FkZHJlc3NfcCAoZW51bQorICAgICAgIGlmIChUQVJHRVRfRTUwMF9ET1VC TEUpCisgCXJldHVybiBTUEVfQ09OU1RfT0ZGU0VUX09LIChvZmZzZXQpOworIAorKyAgICAgIC8q IElmIHdlIGFyZSB1c2luZyBWU1ggc2NhbGFyIGxvYWRzLCByZXN0cmljdCBvdXJzZWx2ZXMgdG8g cmVnK3JlZworKwkgYWRkcmVzc2luZy4gICovCisrICAgICAgaWYgKFZFQ1RPUl9NRU1fVlNYX1Ag KERGbW9kZSkpCisrCXJldHVybiBmYWxzZTsKKysKKyAgICAgY2FzZSBERG1vZGU6CisgICAgIGNh c2UgREltb2RlOgorICAgICAgIC8qIE9uIGU1MDB2Miwgd2UgbWF5IGhhdmU6CitAQCAtMzcxNiw3 ICs0MTk1LDkgQEAgYXZvaWRpbmdfaW5kZXhlZF9hZGRyZXNzX3AgKGVudW0gbWFjaGluZQorIHsK KyAgIC8qIEF2b2lkIGluZGV4ZWQgYWRkcmVzc2luZyBmb3IgbW9kZXMgdGhhdCBoYXZlIG5vbi1p bmRleGVkCisgICAgICBsb2FkL3N0b3JlIGluc3RydWN0aW9uIGZvcm1zLiAgKi8KKy0gIHJldHVy biBUQVJHRVRfQVZPSURfWEZPUk0gJiYgIUFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUpOworKyAg cmV0dXJuIChUQVJHRVRfQVZPSURfWEZPUk0KKysJICAmJiAoIVRBUkdFVF9BTFRJVkVDIHx8ICFB TFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKSkKKysJICAmJiAoIVRBUkdFVF9WU1ggfHwgIVZTWF9W RUNUT1JfTU9ERSAobW9kZSkpKTsKKyB9CisgCisgaW5saW5lIGJvb2wKK0BAIC0zODA4LDI1ICs0 Mjg5LDMwIEBAIHJ0eAorIHJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3MgKHJ0eCB4LCBydHggb2xk eCBBVFRSSUJVVEVfVU5VU0VELAorIAkJCSAgIGVudW0gbWFjaGluZV9tb2RlIG1vZGUpCisgewor KyAgcnR4IHJldCA9IE5VTExfUlRYOworKyAgcnR4IG9yaWdfeCA9IHg7CisrCisgICBpZiAoR0VU X0NPREUgKHgpID09IFNZTUJPTF9SRUYpCisgICAgIHsKKyAgICAgICBlbnVtIHRsc19tb2RlbCBt b2RlbCA9IFNZTUJPTF9SRUZfVExTX01PREVMICh4KTsKKyAgICAgICBpZiAobW9kZWwgIT0gMCkK Ky0JcmV0dXJuIHJzNjAwMF9sZWdpdGltaXplX3Rsc19hZGRyZXNzICh4LCBtb2RlbCk7CisrCXJl dCA9IHJzNjAwMF9sZWdpdGltaXplX3Rsc19hZGRyZXNzICh4LCBtb2RlbCk7CisgICAgIH0KKyAK Ky0gIGlmIChHRVRfQ09ERSAoeCkgPT0gUExVUworLSAgICAgICYmIEdFVF9DT0RFIChYRVhQICh4 LCAwKSkgPT0gUkVHCistICAgICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDEpKSA9PSBDT05TVF9J TlQKKy0gICAgICAmJiAodW5zaWduZWQgSE9TVF9XSURFX0lOVCkgKElOVFZBTCAoWEVYUCAoeCwg MSkpICsgMHg4MDAwKSA+PSAweDEwMDAwCistICAgICAgJiYgISgoVEFSR0VUX1BPV0VSUEM2NAor LQkgICAgJiYgKG1vZGUgPT0gREltb2RlIHx8IG1vZGUgPT0gVEltb2RlKQorLQkgICAgJiYgKElO VFZBTCAoWEVYUCAoeCwgMSkpICYgMykgIT0gMCkKKy0JICAgfHwgU1BFX1ZFQ1RPUl9NT0RFICht b2RlKQorLQkgICB8fCBBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKQorLQkgICB8fCAoVEFSR0VU X0U1MDBfRE9VQkxFICYmIChtb2RlID09IERGbW9kZSB8fCBtb2RlID09IFRGbW9kZQorLQkJCQkg ICAgICB8fCBtb2RlID09IERJbW9kZSB8fCBtb2RlID09IEREbW9kZQorLQkJCQkgICAgICB8fCBt b2RlID09IFREbW9kZSkpKSkKKysgIGVsc2UgaWYgKEdFVF9DT0RFICh4KSA9PSBQTFVTCisrCSAg ICYmIEdFVF9DT0RFIChYRVhQICh4LCAwKSkgPT0gUkVHCisrCSAgICYmIEdFVF9DT0RFIChYRVhQ ICh4LCAxKSkgPT0gQ09OU1RfSU5UCisrCSAgICYmICgodW5zaWduZWQgSE9TVF9XSURFX0lOVCkg KElOVFZBTCAoWEVYUCAoeCwgMSkpICsgMHg4MDAwKQorKwkgICAgICAgPj0gMHgxMDAwMCkKKysJ ICAgJiYgISgoVEFSR0VUX1BPV0VSUEM2NAorKwkJICYmIChtb2RlID09IERJbW9kZSB8fCBtb2Rl ID09IFRJbW9kZSkKKysJCSAmJiAoSU5UVkFMIChYRVhQICh4LCAxKSkgJiAzKSAhPSAwKQorKwkJ fHwgKFRBUkdFVF9TUEUgJiYgU1BFX1ZFQ1RPUl9NT0RFIChtb2RlKSkKKysJCXx8IChUQVJHRVRf QUxUSVZFQyAmJiBBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKSkKKysJCXx8IChUQVJHRVRfVlNY ICYmIFZTWF9WRUNUT1JfTU9ERSAobW9kZSkpCisrCQl8fCAoVEFSR0VUX0U1MDBfRE9VQkxFICYm IChtb2RlID09IERGbW9kZSB8fCBtb2RlID09IFRGbW9kZQorKwkJCQkJICAgfHwgbW9kZSA9PSBE SW1vZGUgfHwgbW9kZSA9PSBERG1vZGUKKysJCQkJCSAgIHx8IG1vZGUgPT0gVERtb2RlKSkpKQor ICAgICB7CisgICAgICAgSE9TVF9XSURFX0lOVCBoaWdoX2ludCwgbG93X2ludDsKKyAgICAgICBy dHggc3VtOworQEAgLTM4MzQsNyArNDMyMCw3IEBAIHJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3Mg KHJ0eCB4LCBydHggb2wKKyAgICAgICBoaWdoX2ludCA9IElOVFZBTCAoWEVYUCAoeCwgMSkpIC0g bG93X2ludDsKKyAgICAgICBzdW0gPSBmb3JjZV9vcGVyYW5kIChnZW5fcnR4X1BMVVMgKFBtb2Rl LCBYRVhQICh4LCAwKSwKKyAJCQkJCSBHRU5fSU5UIChoaWdoX2ludCkpLCAwKTsKKy0gICAgICBy ZXR1cm4gZ2VuX3J0eF9QTFVTIChQbW9kZSwgc3VtLCBHRU5fSU5UIChsb3dfaW50KSk7CisrICAg ICAgcmV0ID0gZ2VuX3J0eF9QTFVTIChQbW9kZSwgc3VtLCBHRU5fSU5UIChsb3dfaW50KSk7Cisg ICAgIH0KKyAgIGVsc2UgaWYgKEdFVF9DT0RFICh4KSA9PSBQTFVTCisgCSAgICYmIEdFVF9DT0RF IChYRVhQICh4LCAwKSkgPT0gUkVHCitAQCAtMzg1MCwzMiArNDMzNiwyOSBAQCByczYwMDBfbGVn aXRpbWl6ZV9hZGRyZXNzIChydHggeCwgcnR4IG9sCisgCSAgICYmIG1vZGUgIT0gVEZtb2RlCisg CSAgICYmIG1vZGUgIT0gVERtb2RlKQorICAgICB7CistICAgICAgcmV0dXJuIGdlbl9ydHhfUExV UyAoUG1vZGUsIFhFWFAgKHgsIDApLAorLQkJCSAgIGZvcmNlX3JlZyAoUG1vZGUsIGZvcmNlX29w ZXJhbmQgKFhFWFAgKHgsIDEpLCAwKSkpOworKyAgICAgIHJldCA9IGdlbl9ydHhfUExVUyAoUG1v ZGUsIFhFWFAgKHgsIDApLAorKwkJCSAgZm9yY2VfcmVnIChQbW9kZSwgZm9yY2Vfb3BlcmFuZCAo WEVYUCAoeCwgMSksIDApKSk7CisgICAgIH0KKy0gIGVsc2UgaWYgKEFMVElWRUNfVkVDVE9SX01P REUgKG1vZGUpKQorKyAgZWxzZSBpZiAoVkVDVE9SX01FTV9BTFRJVkVDX09SX1ZTWF9QIChtb2Rl KSkKKyAgICAgeworLSAgICAgIHJ0eCByZWc7CistCisgICAgICAgLyogTWFrZSBzdXJlIGJvdGgg b3BlcmFuZHMgYXJlIHJlZ2lzdGVycy4gICovCisgICAgICAgaWYgKEdFVF9DT0RFICh4KSA9PSBQ TFVTKQorLQlyZXR1cm4gZ2VuX3J0eF9QTFVTIChQbW9kZSwgZm9yY2VfcmVnIChQbW9kZSwgWEVY UCAoeCwgMCkpLAorLQkJCSAgICAgZm9yY2VfcmVnIChQbW9kZSwgWEVYUCAoeCwgMSkpKTsKKy0K Ky0gICAgICByZWcgPSBmb3JjZV9yZWcgKFBtb2RlLCB4KTsKKy0gICAgICByZXR1cm4gcmVnOwor KwlyZXQgPSBnZW5fcnR4X1BMVVMgKFBtb2RlLCBmb3JjZV9yZWcgKFBtb2RlLCBYRVhQICh4LCAw KSksCisrCQkJICAgIGZvcmNlX3JlZyAoUG1vZGUsIFhFWFAgKHgsIDEpKSk7CisrICAgICAgZWxz ZQorKwlyZXQgPSBmb3JjZV9yZWcgKFBtb2RlLCB4KTsKKyAgICAgfQorLSAgZWxzZSBpZiAoU1BF X1ZFQ1RPUl9NT0RFIChtb2RlKQorKyAgZWxzZSBpZiAoKFRBUkdFVF9TUEUgJiYgU1BFX1ZFQ1RP Ul9NT0RFIChtb2RlKSkKKyAJICAgfHwgKFRBUkdFVF9FNTAwX0RPVUJMRSAmJiAobW9kZSA9PSBE Rm1vZGUgfHwgbW9kZSA9PSBURm1vZGUKKyAJCQkJICAgICAgfHwgbW9kZSA9PSBERG1vZGUgfHwg bW9kZSA9PSBURG1vZGUKKyAJCQkJICAgICAgfHwgbW9kZSA9PSBESW1vZGUpKSkKKyAgICAgewor ICAgICAgIGlmIChtb2RlID09IERJbW9kZSkKKy0JcmV0dXJuIE5VTExfUlRYOworLSAgICAgIC8q IFdlIGFjY2VwdCBbcmVnICsgcmVnXSBhbmQgW3JlZyArIE9GRlNFVF0uICAqLworKwlyZXQgPSBO VUxMX1JUWDsKKyAKKy0gICAgICBpZiAoR0VUX0NPREUgKHgpID09IFBMVVMpCistICAgICAgIHsK KysgICAgICAvKiBXZSBhY2NlcHQgW3JlZyArIHJlZ10gYW5kIFtyZWcgKyBPRkZTRVRdLiAgKi8K KysgICAgICBlbHNlIGlmIChHRVRfQ09ERSAoeCkgPT0gUExVUykKKysJeworICAgICAgICAgIHJ0 eCBvcDEgPSBYRVhQICh4LCAwKTsKKyAgICAgICAgICBydHggb3AyID0gWEVYUCAoeCwgMSk7Cisg ICAgICAgICAgcnR4IHk7CitAQCAtMzg5NCwxMiArNDM3NywxMiBAQCByczYwMDBfbGVnaXRpbWl6 ZV9hZGRyZXNzIChydHggeCwgcnR4IG9sCisgICAgICAgICAgeSA9IGdlbl9ydHhfUExVUyAoUG1v ZGUsIG9wMSwgb3AyKTsKKyAKKyAgICAgICAgICBpZiAoKEdFVF9NT0RFX1NJWkUgKG1vZGUpID4g OCB8fCBtb2RlID09IEREbW9kZSkgJiYgUkVHX1AgKG9wMikpCistICAgICAgICAgICByZXR1cm4g Zm9yY2VfcmVnIChQbW9kZSwgeSk7CisrICAgICAgICAgICByZXQgPSBmb3JjZV9yZWcgKFBtb2Rl LCB5KTsKKyAgICAgICAgICBlbHNlCistICAgICAgICAgICByZXR1cm4geTsKKysgICAgICAgICAg IHJldCA9IHk7CisgICAgICAgIH0KKy0KKy0gICAgICByZXR1cm4gZm9yY2VfcmVnIChQbW9kZSwg eCk7CisrICAgICAgZWxzZQorKwlyZXQgPSBmb3JjZV9yZWcgKFBtb2RlLCB4KTsKKyAgICAgfQor ICAgZWxzZSBpZiAoVEFSR0VUX0VMRgorIAkgICAmJiBUQVJHRVRfMzJCSVQKK0BAIC0zOTE1LDcg KzQzOTgsNyBAQCByczYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNzIChydHggeCwgcnR4IG9sCisgICAg IHsKKyAgICAgICBydHggcmVnID0gZ2VuX3JlZ19ydHggKFBtb2RlKTsKKyAgICAgICBlbWl0X2lu c24gKGdlbl9lbGZfaGlnaCAocmVnLCB4KSk7CistICAgICAgcmV0dXJuIGdlbl9ydHhfTE9fU1VN IChQbW9kZSwgcmVnLCB4KTsKKysgICAgICByZXQgPSBnZW5fcnR4X0xPX1NVTSAoUG1vZGUsIHJl ZywgeCk7CisgICAgIH0KKyAgIGVsc2UgaWYgKFRBUkdFVF9NQUNITyAmJiBUQVJHRVRfMzJCSVQg JiYgVEFSR0VUX05PX1RPQworIAkgICAmJiAhIGZsYWdfcGljCitAQCAtMzkzMywxNyArNDQxNiwz NCBAQCByczYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNzIChydHggeCwgcnR4IG9sCisgICAgIHsKKyAg ICAgICBydHggcmVnID0gZ2VuX3JlZ19ydHggKFBtb2RlKTsKKyAgICAgICBlbWl0X2luc24gKGdl bl9tYWNob19oaWdoIChyZWcsIHgpKTsKKy0gICAgICByZXR1cm4gZ2VuX3J0eF9MT19TVU0gKFBt b2RlLCByZWcsIHgpOworKyAgICAgIHJldCA9IGdlbl9ydHhfTE9fU1VNIChQbW9kZSwgcmVnLCB4 KTsKKyAgICAgfQorICAgZWxzZSBpZiAoVEFSR0VUX1RPQworIAkgICAmJiBHRVRfQ09ERSAoeCkg PT0gU1lNQk9MX1JFRgorIAkgICAmJiBjb25zdGFudF9wb29sX2V4cHJfcCAoeCkKKyAJICAgJiYg QVNNX09VVFBVVF9TUEVDSUFMX1BPT0xfRU5UUllfUCAoZ2V0X3Bvb2xfY29uc3RhbnQgKHgpLCBQ bW9kZSkpCisgICAgIHsKKy0gICAgICByZXR1cm4gY3JlYXRlX1RPQ19yZWZlcmVuY2UgKHgpOwor KyAgICAgIHJldCA9IGNyZWF0ZV9UT0NfcmVmZXJlbmNlICh4KTsKKyAgICAgfQorICAgZWxzZQor LSAgICByZXR1cm4gTlVMTF9SVFg7CisrICAgIHJldCA9IE5VTExfUlRYOworKworKyAgaWYgKFRB UkdFVF9ERUJVR19BRERSKQorKyAgICB7CisrICAgICAgZnByaW50ZiAoc3RkZXJyLAorKwkgICAg ICAgIlxucnM2MDAwX2xlZ2l0aW1pemVfYWRkcmVzczogbW9kZSAlcywgb3JpZ2luYWwgYWRkcjpc biIsCisrCSAgICAgICBHRVRfTU9ERV9OQU1FIChtb2RlKSk7CisrICAgICAgZGVidWdfcnR4IChv cmlnX3gpOworKyAgICAgIGlmIChyZXQpCisrCXsKKysJICBmcHJpbnRmIChzdGRlcnIsICJOZXcg YWRkcjpcbiIpOworKwkgIGRlYnVnX3J0eCAocmV0KTsKKysJfQorKyAgICAgIGVsc2UKKysJZnBy aW50ZiAoc3RkZXJyLCAiTlVMTCByZXR1cm5lZFxuIik7CisrICAgIH0KKysKKysgIHJldHVybiBy ZXQ7CisgfQorIAorIC8qIFRoaXMgaXMgY2FsbGVkIGZyb20gZHdhcmYyb3V0LmMgdmlhIFRBUkdF VF9BU01fT1VUUFVUX0RXQVJGX0RUUFJFTC4KK0BAIC00MjMyLDYgKzQ3MzIsOSBAQCByczYwMDBf bGVnaXRpbWl6ZV9yZWxvYWRfYWRkcmVzcyAocnR4IHgsCisgCQkJCSAgaW50IG9wbnVtLCBpbnQg dHlwZSwKKyAJCQkJICBpbnQgaW5kX2xldmVscyBBVFRSSUJVVEVfVU5VU0VELCBpbnQgKndpbikK KyB7CisrICBydHggb3JpZ194ID0geDsKKysgIHJ0eCByZXQgPSBOVUxMX1JUWDsKKysKKyAgIC8q IFdlIG11c3QgcmVjb2duaXplIG91dHB1dCB0aGF0IHdlIGhhdmUgYWxyZWFkeSBnZW5lcmF0ZWQg b3Vyc2VsdmVzLiAgKi8KKyAgIGlmIChHRVRfQ09ERSAoeCkgPT0gUExVUworICAgICAgICYmIEdF VF9DT0RFIChYRVhQICh4LCAwKSkgPT0gUExVUworQEAgLTQyNDMsMTcgKzQ3NDYsMTcgQEAgcnM2 MDAwX2xlZ2l0aW1pemVfcmVsb2FkX2FkZHJlc3MgKHJ0eCB4LAorIAkJICAgQkFTRV9SRUdfQ0xB U1MsIEdFVF9NT0RFICh4KSwgVk9JRG1vZGUsIDAsIDAsCisgCQkgICBvcG51bSwgKGVudW0gcmVs b2FkX3R5cGUpdHlwZSk7CisgICAgICAgKndpbiA9IDE7CistICAgICAgcmV0dXJuIHg7CisrICAg ICAgcmV0ID0geDsKKyAgICAgfQorIAorICNpZiBUQVJHRVRfTUFDSE8KKy0gIGlmIChERUZBVUxU X0FCSSA9PSBBQklfREFSV0lOICYmIGZsYWdfcGljCistICAgICAgJiYgR0VUX0NPREUgKHgpID09 IExPX1NVTQorLSAgICAgICYmIEdFVF9DT0RFIChYRVhQICh4LCAwKSkgPT0gUExVUworLSAgICAg ICYmIFhFWFAgKFhFWFAgKHgsIDApLCAwKSA9PSBwaWNfb2Zmc2V0X3RhYmxlX3J0eAorLSAgICAg ICYmIEdFVF9DT0RFIChYRVhQIChYRVhQICh4LCAwKSwgMSkpID09IEhJR0gKKy0gICAgICAmJiBY RVhQIChYRVhQIChYRVhQICh4LCAwKSwgMSksIDApID09IFhFWFAgKHgsIDEpCistICAgICAgJiYg bWFjaG9waWNfb3BlcmFuZF9wIChYRVhQICh4LCAxKSkpCisrICBlbHNlIGlmIChERUZBVUxUX0FC SSA9PSBBQklfREFSV0lOICYmIGZsYWdfcGljCisrCSAgICYmIEdFVF9DT0RFICh4KSA9PSBMT19T VU0KKysJICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDApKSA9PSBQTFVTCisrCSAgICYmIFhFWFAg KFhFWFAgKHgsIDApLCAwKSA9PSBwaWNfb2Zmc2V0X3RhYmxlX3J0eAorKwkgICAmJiBHRVRfQ09E RSAoWEVYUCAoWEVYUCAoeCwgMCksIDEpKSA9PSBISUdICisrCSAgICYmIFhFWFAgKFhFWFAgKFhF WFAgKHgsIDApLCAxKSwgMCkgPT0gWEVYUCAoeCwgMSkKKysJICAgJiYgbWFjaG9waWNfb3BlcmFu ZF9wIChYRVhQICh4LCAxKSkpCisgICAgIHsKKyAgICAgICAvKiBSZXN1bHQgb2YgcHJldmlvdXMg aW52b2NhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIG9uIERhcndpbgorIAkgZmxvYXRpbmcgcG9pbnQg Y29uc3RhbnQuICAqLworQEAgLTQyNjEsNDAgKzQ3NjQsNDIgQEAgcnM2MDAwX2xlZ2l0aW1pemVf cmVsb2FkX2FkZHJlc3MgKHJ0eCB4LAorIAkJICAgQkFTRV9SRUdfQ0xBU1MsIFBtb2RlLCBWT0lE bW9kZSwgMCwgMCwKKyAJCSAgIG9wbnVtLCAoZW51bSByZWxvYWRfdHlwZSl0eXBlKTsKKyAgICAg ICAqd2luID0gMTsKKy0gICAgICByZXR1cm4geDsKKysgICAgICByZXQgPSB4OworICAgICB9Cisg I2VuZGlmCisgCisgICAvKiBGb3JjZSBsZC9zdGQgbm9uLXdvcmQgYWxpZ25lZCBvZmZzZXQgaW50 byBiYXNlIHJlZ2lzdGVyIGJ5IHdyYXBwaW5nCisgICAgICBpbiBvZmZzZXQgMC4gICovCistICBp ZiAoR0VUX0NPREUgKHgpID09IFBMVVMKKy0gICAgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMCkp ID09IFJFRworLSAgICAgICYmIFJFR05PIChYRVhQICh4LCAwKSkgPCAzMgorLSAgICAgICYmIFJF R19NT0RFX09LX0ZPUl9CQVNFX1AgKFhFWFAgKHgsIDApLCBtb2RlKQorLSAgICAgICYmIEdFVF9D T0RFIChYRVhQICh4LCAxKSkgPT0gQ09OU1RfSU5UCistICAgICAgJiYgKElOVFZBTCAoWEVYUCAo eCwgMSkpICYgMykgIT0gMAorLSAgICAgICYmICFBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKQor LSAgICAgICYmIEdFVF9NT0RFX1NJWkUgKG1vZGUpID49IFVOSVRTX1BFUl9XT1JECistICAgICAg JiYgVEFSR0VUX1BPV0VSUEM2NCkKKysgIGVsc2UgaWYgKEdFVF9DT0RFICh4KSA9PSBQTFVTCisr CSAgICYmIEdFVF9DT0RFIChYRVhQICh4LCAwKSkgPT0gUkVHCisrCSAgICYmIFJFR05PIChYRVhQ ICh4LCAwKSkgPCAzMgorKwkgICAmJiBSRUdfTU9ERV9PS19GT1JfQkFTRV9QIChYRVhQICh4LCAw KSwgbW9kZSkKKysJICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDEpKSA9PSBDT05TVF9JTlQKKysJ ICAgJiYgKElOVFZBTCAoWEVYUCAoeCwgMSkpICYgMykgIT0gMAorKwkgICAmJiAhQUxUSVZFQ19W RUNUT1JfTU9ERSAobW9kZSkKKysJICAgJiYgIVZTWF9WRUNUT1JfTU9ERSAobW9kZSkKKysJICAg JiYgR0VUX01PREVfU0laRSAobW9kZSkgPj0gVU5JVFNfUEVSX1dPUkQKKysJICAgJiYgVEFSR0VU X1BPV0VSUEM2NCkKKyAgICAgeworICAgICAgIHggPSBnZW5fcnR4X1BMVVMgKEdFVF9NT0RFICh4 KSwgeCwgR0VOX0lOVCAoMCkpOworICAgICAgIHB1c2hfcmVsb2FkIChYRVhQICh4LCAwKSwgTlVM TF9SVFgsICZYRVhQICh4LCAwKSwgTlVMTCwKKyAJCSAgIEJBU0VfUkVHX0NMQVNTLCBHRVRfTU9E RSAoeCksIFZPSURtb2RlLCAwLCAwLAorIAkJICAgb3BudW0sIChlbnVtIHJlbG9hZF90eXBlKSB0 eXBlKTsKKyAgICAgICAqd2luID0gMTsKKy0gICAgICByZXR1cm4geDsKKysgICAgICByZXQgPSB4 OworICAgICB9CisgCistICBpZiAoR0VUX0NPREUgKHgpID09IFBMVVMKKy0gICAgICAmJiBHRVRf Q09ERSAoWEVYUCAoeCwgMCkpID09IFJFRworLSAgICAgICYmIFJFR05PIChYRVhQICh4LCAwKSkg PCBGSVJTVF9QU0VVRE9fUkVHSVNURVIKKy0gICAgICAmJiBSRUdfTU9ERV9PS19GT1JfQkFTRV9Q IChYRVhQICh4LCAwKSwgbW9kZSkKKy0gICAgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMSkpID09 IENPTlNUX0lOVAorLSAgICAgICYmICFTUEVfVkVDVE9SX01PREUgKG1vZGUpCistICAgICAgJiYg IShUQVJHRVRfRTUwMF9ET1VCTEUgJiYgKG1vZGUgPT0gREZtb2RlIHx8IG1vZGUgPT0gVEZtb2Rl CistCQkJCSAgfHwgbW9kZSA9PSBERG1vZGUgfHwgbW9kZSA9PSBURG1vZGUKKy0JCQkJICB8fCBt b2RlID09IERJbW9kZSkpCistICAgICAgJiYgIUFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUpKQor KyAgZWxzZSBpZiAoR0VUX0NPREUgKHgpID09IFBMVVMKKysJICAgJiYgR0VUX0NPREUgKFhFWFAg KHgsIDApKSA9PSBSRUcKKysJICAgJiYgUkVHTk8gKFhFWFAgKHgsIDApKSA8IEZJUlNUX1BTRVVE T19SRUdJU1RFUgorKwkgICAmJiBSRUdfTU9ERV9PS19GT1JfQkFTRV9QIChYRVhQICh4LCAwKSwg bW9kZSkKKysJICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDEpKSA9PSBDT05TVF9JTlQKKysJICAg JiYgIVNQRV9WRUNUT1JfTU9ERSAobW9kZSkKKysJICAgJiYgIShUQVJHRVRfRTUwMF9ET1VCTEUg JiYgKG1vZGUgPT0gREZtb2RlIHx8IG1vZGUgPT0gVEZtb2RlCisrCQkJCSAgICAgICB8fCBtb2Rl ID09IEREbW9kZSB8fCBtb2RlID09IFREbW9kZQorKwkJCQkgICAgICAgfHwgbW9kZSA9PSBESW1v ZGUpKQorKwkgICAmJiAhQUxUSVZFQ19WRUNUT1JfTU9ERSAobW9kZSkKKysJICAgJiYgIVZTWF9W RUNUT1JfTU9ERSAobW9kZSkpCisgICAgIHsKKyAgICAgICBIT1NUX1dJREVfSU5UIHZhbCA9IElO VFZBTCAoWEVYUCAoeCwgMSkpOworICAgICAgIEhPU1RfV0lERV9JTlQgbG93ID0gKCh2YWwgJiAw eGZmZmYpIF4gMHg4MDAwKSAtIDB4ODAwMDsKK0BAIC00MzA1LDQyICs0ODEwLDQ0IEBAIHJzNjAw MF9sZWdpdGltaXplX3JlbG9hZF9hZGRyZXNzIChydHggeCwKKyAgICAgICBpZiAoaGlnaCArIGxv dyAhPSB2YWwpCisgCXsKKyAJICAqd2luID0gMDsKKy0JICByZXR1cm4geDsKKysJICByZXQgPSB4 OworIAl9CisrICAgICAgZWxzZQorKwl7CisrCSAgLyogUmVsb2FkIHRoZSBoaWdoIHBhcnQgaW50 byBhIGJhc2UgcmVnOyBsZWF2ZSB0aGUgbG93IHBhcnQKKysJICAgICBpbiB0aGUgbWVtIGRpcmVj dGx5LiAgKi8KKyAKKy0gICAgICAvKiBSZWxvYWQgdGhlIGhpZ2ggcGFydCBpbnRvIGEgYmFzZSBy ZWc7IGxlYXZlIHRoZSBsb3cgcGFydAorLQkgaW4gdGhlIG1lbSBkaXJlY3RseS4gICovCistCist ICAgICAgeCA9IGdlbl9ydHhfUExVUyAoR0VUX01PREUgKHgpLAorLQkJCWdlbl9ydHhfUExVUyAo R0VUX01PREUgKHgpLCBYRVhQICh4LCAwKSwKKy0JCQkJICAgICAgR0VOX0lOVCAoaGlnaCkpLAor LQkJCUdFTl9JTlQgKGxvdykpOworKwkgIHggPSBnZW5fcnR4X1BMVVMgKEdFVF9NT0RFICh4KSwK KysJCQkgICAgZ2VuX3J0eF9QTFVTIChHRVRfTU9ERSAoeCksIFhFWFAgKHgsIDApLAorKwkJCQkJ ICBHRU5fSU5UIChoaWdoKSksCisrCQkJICAgIEdFTl9JTlQgKGxvdykpOworIAorLSAgICAgIHB1 c2hfcmVsb2FkIChYRVhQICh4LCAwKSwgTlVMTF9SVFgsICZYRVhQICh4LCAwKSwgTlVMTCwKKy0J CSAgIEJBU0VfUkVHX0NMQVNTLCBHRVRfTU9ERSAoeCksIFZPSURtb2RlLCAwLCAwLAorLQkJICAg b3BudW0sIChlbnVtIHJlbG9hZF90eXBlKXR5cGUpOworLSAgICAgICp3aW4gPSAxOworLSAgICAg IHJldHVybiB4OworKwkgIHB1c2hfcmVsb2FkIChYRVhQICh4LCAwKSwgTlVMTF9SVFgsICZYRVhQ ICh4LCAwKSwgTlVMTCwKKysJCSAgICAgICBCQVNFX1JFR19DTEFTUywgR0VUX01PREUgKHgpLCBW T0lEbW9kZSwgMCwgMCwKKysJCSAgICAgICBvcG51bSwgKGVudW0gcmVsb2FkX3R5cGUpdHlwZSk7 CisrCSAgKndpbiA9IDE7CisrCSAgcmV0dXJuIHg7CisrCX0KKyAgICAgfQorIAorLSAgaWYgKEdF VF9DT0RFICh4KSA9PSBTWU1CT0xfUkVGCistICAgICAgJiYgIUFMVElWRUNfVkVDVE9SX01PREUg KG1vZGUpCistICAgICAgJiYgIVNQRV9WRUNUT1JfTU9ERSAobW9kZSkKKysgIGVsc2UgaWYgKEdF VF9DT0RFICh4KSA9PSBTWU1CT0xfUkVGCisrCSAgICYmIFZFQ1RPUl9NRU1fTk9ORV9QIChtb2Rl KQorKwkgICAmJiAoIVRBUkdFVF9TUEUgfHwgIVNQRV9WRUNUT1JfTU9ERSAobW9kZSkpCisgI2lm IFRBUkdFVF9NQUNITworLSAgICAgICYmIERFRkFVTFRfQUJJID09IEFCSV9EQVJXSU4KKy0gICAg ICAmJiAoZmxhZ19waWMgfHwgTUFDSE9fRFlOQU1JQ19OT19QSUNfUCkKKysJICAgJiYgREVGQVVM VF9BQkkgPT0gQUJJX0RBUldJTgorKwkgICAmJiAoZmxhZ19waWMgfHwgTUFDSE9fRFlOQU1JQ19O T19QSUNfUCkKKyAjZWxzZQorLSAgICAgICYmIERFRkFVTFRfQUJJID09IEFCSV9WNAorLSAgICAg ICYmICFmbGFnX3BpYworKwkgICAmJiBERUZBVUxUX0FCSSA9PSBBQklfVjQKKysJICAgJiYgIWZs YWdfcGljCisgI2VuZGlmCistICAgICAgLyogRG9uJ3QgZG8gdGhpcyBmb3IgVEZtb2RlIG9yIFRE bW9kZSwgc2luY2UgdGhlIHJlc3VsdCBpc24ndCBvZmZzZXR0YWJsZS4KKy0JIFRoZSBzYW1lIGdv ZXMgZm9yIERJbW9kZSB3aXRob3V0IDY0LWJpdCBncHJzIGFuZCBERm1vZGUgYW5kIEREbW9kZQor LQkgd2l0aG91dCBmcHJzLiAgKi8KKy0gICAgICAmJiBtb2RlICE9IFRGbW9kZQorLSAgICAgICYm IG1vZGUgIT0gVERtb2RlCistICAgICAgJiYgKG1vZGUgIT0gREltb2RlIHx8IFRBUkdFVF9QT1dF UlBDNjQpCistICAgICAgJiYgKChtb2RlICE9IERGbW9kZSAmJiBtb2RlICE9IEREbW9kZSkgfHwg VEFSR0VUX1BPV0VSUEM2NAorLQkgIHx8IChUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBS UyAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUKSkpCisrCSAgIC8qIERvbid0IGRvIHRoaXMgZm9yIFRG bW9kZSBvciBURG1vZGUsIHNpbmNlIHRoZSByZXN1bHQgaXNuJ3QKKysJICAgICAgb2Zmc2V0dGFi bGUuICBUaGUgc2FtZSBnb2VzIGZvciBESW1vZGUgd2l0aG91dCA2NC1iaXQgZ3BycyBhbmQKKysJ ICAgICAgREZtb2RlIGFuZCBERG1vZGUgd2l0aG91dCBmcHJzLiAgKi8KKysJICAgJiYgbW9kZSAh PSBURm1vZGUKKysJICAgJiYgbW9kZSAhPSBURG1vZGUKKysJICAgJiYgKG1vZGUgIT0gREltb2Rl IHx8IFRBUkdFVF9QT1dFUlBDNjQpCisrCSAgICYmICgobW9kZSAhPSBERm1vZGUgJiYgbW9kZSAh PSBERG1vZGUpIHx8IFRBUkdFVF9QT1dFUlBDNjQKKysJICAgICAgIHx8IChUQVJHRVRfSEFSRF9G TE9BVCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUKSkpCisgICAgIHsKKyAj aWYgVEFSR0VUX01BQ0hPCisgICAgICAgaWYgKGZsYWdfcGljKQorQEAgLTQzNTksMzcgKzQ4NjYs NjEgQEAgcnM2MDAwX2xlZ2l0aW1pemVfcmVsb2FkX2FkZHJlc3MgKHJ0eCB4LAorIAkJICAgQkFT RV9SRUdfQ0xBU1MsIFBtb2RlLCBWT0lEbW9kZSwgMCwgMCwKKyAJCSAgIG9wbnVtLCAoZW51bSBy ZWxvYWRfdHlwZSl0eXBlKTsKKyAgICAgICAqd2luID0gMTsKKy0gICAgICByZXR1cm4geDsKKysg ICAgICByZXQgPSB4OworICAgICB9CisgCisgICAvKiBSZWxvYWQgYW4gb2Zmc2V0IGFkZHJlc3Mg d3JhcHBlZCBieSBhbiBBTkQgdGhhdCByZXByZXNlbnRzIHRoZQorICAgICAgbWFza2luZyBvZiB0 aGUgbG93ZXIgYml0cy4gIFN0cmlwIHRoZSBvdXRlciBBTkQgYW5kIGxldCByZWxvYWQKKyAgICAg IGNvbnZlcnQgdGhlIG9mZnNldCBhZGRyZXNzIGludG8gYW4gaW5kaXJlY3QgYWRkcmVzcy4gICov CistICBpZiAoVEFSR0VUX0FMVElWRUMKKy0gICAgICAmJiBBTFRJVkVDX1ZFQ1RPUl9NT0RFICht b2RlKQorLSAgICAgICYmIEdFVF9DT0RFICh4KSA9PSBBTkQKKy0gICAgICAmJiBHRVRfQ09ERSAo WEVYUCAoeCwgMCkpID09IFBMVVMKKy0gICAgICAmJiBHRVRfQ09ERSAoWEVYUCAoWEVYUCAoeCwg MCksIDApKSA9PSBSRUcKKy0gICAgICAmJiBHRVRfQ09ERSAoWEVYUCAoWEVYUCAoeCwgMCksIDEp KSA9PSBDT05TVF9JTlQKKy0gICAgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMSkpID09IENPTlNU X0lOVAorLSAgICAgICYmIElOVFZBTCAoWEVYUCAoeCwgMSkpID09IC0xNikKKysgIGVsc2UgaWYg KFZFQ1RPUl9NRU1fQUxUSVZFQ19QIChtb2RlKQorKwkgICAmJiBHRVRfQ09ERSAoeCkgPT0gQU5E CisrCSAgICYmIEdFVF9DT0RFIChYRVhQICh4LCAwKSkgPT0gUExVUworKwkgICAmJiBHRVRfQ09E RSAoWEVYUCAoWEVYUCAoeCwgMCksIDApKSA9PSBSRUcKKysJICAgJiYgR0VUX0NPREUgKFhFWFAg KFhFWFAgKHgsIDApLCAxKSkgPT0gQ09OU1RfSU5UCisrCSAgICYmIEdFVF9DT0RFIChYRVhQICh4 LCAxKSkgPT0gQ09OU1RfSU5UCisrCSAgICYmIElOVFZBTCAoWEVYUCAoeCwgMSkpID09IC0xNikK KyAgICAgeworICAgICAgIHggPSBYRVhQICh4LCAwKTsKKyAgICAgICAqd2luID0gMTsKKy0gICAg ICByZXR1cm4geDsKKysgICAgICByZXQgPSB4OworICAgICB9CisgCistICBpZiAoVEFSR0VUX1RP QworLSAgICAgICYmIEdFVF9DT0RFICh4KSA9PSBTWU1CT0xfUkVGCistICAgICAgJiYgY29uc3Rh bnRfcG9vbF9leHByX3AgKHgpCistICAgICAgJiYgQVNNX09VVFBVVF9TUEVDSUFMX1BPT0xfRU5U UllfUCAoZ2V0X3Bvb2xfY29uc3RhbnQgKHgpLCBtb2RlKSkKKysgIGVsc2UgaWYgKFRBUkdFVF9U T0MKKysJICAgJiYgR0VUX0NPREUgKHgpID09IFNZTUJPTF9SRUYKKysJICAgJiYgY29uc3RhbnRf cG9vbF9leHByX3AgKHgpCisrCSAgICYmIEFTTV9PVVRQVVRfU1BFQ0lBTF9QT09MX0VOVFJZX1Ag KGdldF9wb29sX2NvbnN0YW50ICh4KSwgbW9kZSkpCisgICAgIHsKKyAgICAgICB4ID0gY3JlYXRl X1RPQ19yZWZlcmVuY2UgKHgpOworICAgICAgICp3aW4gPSAxOworLSAgICAgIHJldHVybiB4Owor KyAgICAgIHJldCA9IHg7CisrICAgIH0KKysKKysgIGVsc2UKKysgICAgeworKyAgICAgICp3aW4g PSAwOworKyAgICAgIHJldCA9IHg7CisgICAgIH0KKy0gICp3aW4gPSAwOworLSAgcmV0dXJuIHg7 CisrCisrICBpZiAoVEFSR0VUX0RFQlVHX0FERFIpCisrICAgIHsKKysgICAgICBmcHJpbnRmIChz dGRlcnIsCisrCSAgICAgICAiXG5yczYwMDBfbGVnaXRpbWl6ZV9yZWxvYWRfYWRkcmVzczogbW9k ZSA9ICVzLCBvcG51bSA9ICVkLCAiCisrCSAgICAgICAidHlwZSA9ICVkLCBpbmRfbGV2ZWxzID0g JWQsIHdpbiA9ICVkLCBvcmlnaW5hbCBhZGRyOlxuIiwKKysJICAgICAgIEdFVF9NT0RFX05BTUUg KG1vZGUpLCBvcG51bSwgdHlwZSwgaW5kX2xldmVscywgKndpbik7CisrICAgICAgZGVidWdfcnR4 IChvcmlnX3gpOworKworKyAgICAgIGlmIChvcmlnX3ggPT0gcmV0KQorKwlmcHJpbnRmIChzdGRl cnIsICJTYW1lIGFkZHJlc3MgcmV0dXJuZWRcbiIpOworKyAgICAgIGVsc2UgaWYgKCFyZXQpCisr CWZwcmludGYgKHN0ZGVyciwgIk5VTEwgcmV0dXJuZWRcbiIpOworKyAgICAgIGVsc2UKKysJewor KwkgIGZwcmludGYgKHN0ZGVyciwgIk5ldyBhZGRyZXNzOlxuIik7CisrCSAgZGVidWdfcnR4IChy ZXQpOworKwl9CisrICAgIH0KKysKKysgIHJldHVybiByZXQ7CisgfQorIAorIC8qIEdPX0lGX0xF R0lUSU1BVEVfQUREUkVTUyByZWNvZ25pemVzIGFuIFJUTCBleHByZXNzaW9uCitAQCAtNDQxMiw3 NyArNDk0MywxMDEgQEAgcnM2MDAwX2xlZ2l0aW1pemVfcmVsb2FkX2FkZHJlc3MgKHJ0eCB4LAor IGludAorIHJzNjAwMF9sZWdpdGltYXRlX2FkZHJlc3MgKGVudW0gbWFjaGluZV9tb2RlIG1vZGUs IHJ0eCB4LCBpbnQgcmVnX29rX3N0cmljdCkKKyB7CisrICBpbnQgcmV0OworKyAgcnR4IG9yaWdf eCA9IHg7CisrCisgICAvKiBJZiB0aGlzIGlzIGFuIHVuYWxpZ25lZCBzdHZ4L2xkdnggdHlwZSBh ZGRyZXNzLCBkaXNjYXJkIHRoZSBvdXRlciBBTkQuICAqLworICAgaWYgKFRBUkdFVF9BTFRJVkVD CistICAgICAgJiYgQUxUSVZFQ19WRUNUT1JfTU9ERSAobW9kZSkKKysgICAgICAmJiAoQUxUSVZF Q19WRUNUT1JfTU9ERSAobW9kZSkgfHwgVlNYX1ZFQ1RPUl9NT0RFIChtb2RlKSkKKyAgICAgICAm JiBHRVRfQ09ERSAoeCkgPT0gQU5ECisgICAgICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDEpKSA9 PSBDT05TVF9JTlQKKyAgICAgICAmJiBJTlRWQUwgKFhFWFAgKHgsIDEpKSA9PSAtMTYpCisgICAg IHggPSBYRVhQICh4LCAwKTsKKyAKKyAgIGlmIChSUzYwMDBfU1lNQk9MX1JFRl9UTFNfUCAoeCkp CistICAgIHJldHVybiAwOworLSAgaWYgKGxlZ2l0aW1hdGVfaW5kaXJlY3RfYWRkcmVzc19wICh4 LCByZWdfb2tfc3RyaWN0KSkKKy0gICAgcmV0dXJuIDE7CistICBpZiAoKEdFVF9DT0RFICh4KSA9 PSBQUkVfSU5DIHx8IEdFVF9DT0RFICh4KSA9PSBQUkVfREVDKQorLSAgICAgICYmICFBTFRJVkVD X1ZFQ1RPUl9NT0RFIChtb2RlKQorLSAgICAgICYmICFTUEVfVkVDVE9SX01PREUgKG1vZGUpCist ICAgICAgJiYgbW9kZSAhPSBURm1vZGUKKy0gICAgICAmJiBtb2RlICE9IFREbW9kZQorLSAgICAg IC8qIFJlc3RyaWN0IGFkZHJlc3NpbmcgZm9yIERJIGJlY2F1c2Ugb2Ygb3VyIFNVQlJFRyBoYWNr ZXJ5LiAgKi8KKy0gICAgICAmJiAhKFRBUkdFVF9FNTAwX0RPVUJMRQorLQkgICAmJiAobW9kZSA9 PSBERm1vZGUgfHwgbW9kZSA9PSBERG1vZGUgfHwgbW9kZSA9PSBESW1vZGUpKQorLSAgICAgICYm IFRBUkdFVF9VUERBVEUKKy0gICAgICAmJiBsZWdpdGltYXRlX2luZGlyZWN0X2FkZHJlc3NfcCAo WEVYUCAoeCwgMCksIHJlZ19va19zdHJpY3QpKQorLSAgICByZXR1cm4gMTsKKy0gIGlmIChsZWdp dGltYXRlX3NtYWxsX2RhdGFfcCAobW9kZSwgeCkpCistICAgIHJldHVybiAxOworLSAgaWYgKGxl Z2l0aW1hdGVfY29uc3RhbnRfcG9vbF9hZGRyZXNzX3AgKHgpKQorLSAgICByZXR1cm4gMTsKKysg ICAgcmV0ID0gMDsKKysgIGVsc2UgaWYgKGxlZ2l0aW1hdGVfaW5kaXJlY3RfYWRkcmVzc19wICh4 LCByZWdfb2tfc3RyaWN0KSkKKysgICAgcmV0ID0gMTsKKysgIGVsc2UgaWYgKChHRVRfQ09ERSAo eCkgPT0gUFJFX0lOQyB8fCBHRVRfQ09ERSAoeCkgPT0gUFJFX0RFQykKKysJICAgJiYgIVZFQ1RP Ul9NRU1fQUxUSVZFQ19QIChtb2RlKQorKwkgICAvKiAmJiAhVkVDVE9SX01FTV9WU1hfUCAobW9k ZSkgKi8KKysJICAgJiYgKFRBUkdFVF9TUEUgJiYgIVNQRV9WRUNUT1JfTU9ERSAobW9kZSkpCisr CSAgICYmIG1vZGUgIT0gVEZtb2RlCisrCSAgICYmIG1vZGUgIT0gVERtb2RlCisrCSAgIC8qIFJl c3RyaWN0IGFkZHJlc3NpbmcgZm9yIERJIGJlY2F1c2Ugb2Ygb3VyIFNVQlJFRyBoYWNrZXJ5LiAg Ki8KKysJICAgJiYgIShUQVJHRVRfRTUwMF9ET1VCTEUKKysJCSYmIChtb2RlID09IERGbW9kZSB8 fCBtb2RlID09IEREbW9kZSB8fCBtb2RlID09IERJbW9kZSkpCisrCSAgICYmIFRBUkdFVF9VUERB VEUKKysJICAgJiYgbGVnaXRpbWF0ZV9pbmRpcmVjdF9hZGRyZXNzX3AgKFhFWFAgKHgsIDApLCBy ZWdfb2tfc3RyaWN0KSkKKysgICAgcmV0ID0gMTsKKysgIGVsc2UgaWYgKGxlZ2l0aW1hdGVfc21h bGxfZGF0YV9wIChtb2RlLCB4KSkKKysgICAgcmV0ID0gMTsKKysgIGVsc2UgaWYgKGxlZ2l0aW1h dGVfY29uc3RhbnRfcG9vbF9hZGRyZXNzX3AgKHgpKQorKyAgICByZXQgPSAxOworICAgLyogSWYg bm90IFJFR19PS19TVFJJQ1QgKGJlZm9yZSByZWxvYWQpIGxldCBwYXNzIGFueSBzdGFjayBvZmZz ZXQuICAqLworLSAgaWYgKCEgcmVnX29rX3N0cmljdAorLSAgICAgICYmIEdFVF9DT0RFICh4KSA9 PSBQTFVTCistICAgICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDApKSA9PSBSRUcKKy0gICAgICAm JiAoWEVYUCAoeCwgMCkgPT0gdmlydHVhbF9zdGFja192YXJzX3J0eAorLQkgIHx8IFhFWFAgKHgs IDApID09IGFyZ19wb2ludGVyX3J0eCkKKy0gICAgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMSkp ID09IENPTlNUX0lOVCkKKy0gICAgcmV0dXJuIDE7CistICBpZiAocnM2MDAwX2xlZ2l0aW1hdGVf b2Zmc2V0X2FkZHJlc3NfcCAobW9kZSwgeCwgcmVnX29rX3N0cmljdCkpCistICAgIHJldHVybiAx OworLSAgaWYgKG1vZGUgIT0gVEltb2RlCistICAgICAgJiYgbW9kZSAhPSBURm1vZGUKKy0gICAg ICAmJiBtb2RlICE9IFREbW9kZQorLSAgICAgICYmICgoVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFS R0VUX0ZQUlMpCistCSAgfHwgVEFSR0VUX1BPV0VSUEM2NAorLQkgIHx8IChtb2RlICE9IERGbW9k ZSAmJiBtb2RlICE9IEREbW9kZSkKKy0JICB8fCAoVEFSR0VUX0U1MDBfRE9VQkxFICYmIG1vZGUg IT0gRERtb2RlKSkKKy0gICAgICAmJiAoVEFSR0VUX1BPV0VSUEM2NCB8fCBtb2RlICE9IERJbW9k ZSkKKy0gICAgICAmJiAhYXZvaWRpbmdfaW5kZXhlZF9hZGRyZXNzX3AgKG1vZGUpCistICAgICAg JiYgbGVnaXRpbWF0ZV9pbmRleGVkX2FkZHJlc3NfcCAoeCwgcmVnX29rX3N0cmljdCkpCistICAg IHJldHVybiAxOworLSAgaWYgKEdFVF9DT0RFICh4KSA9PSBQUkVfTU9ESUZZCistICAgICAgJiYg bW9kZSAhPSBUSW1vZGUKKy0gICAgICAmJiBtb2RlICE9IFRGbW9kZQorLSAgICAgICYmIG1vZGUg IT0gVERtb2RlCistICAgICAgJiYgKChUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAm JiBUQVJHRVRfRE9VQkxFX0ZMT0FUKQorLQkgIHx8IFRBUkdFVF9QT1dFUlBDNjQKKy0JICB8fCAo KG1vZGUgIT0gREZtb2RlICYmIG1vZGUgIT0gRERtb2RlKSB8fCBUQVJHRVRfRTUwMF9ET1VCTEUp KQorLSAgICAgICYmIChUQVJHRVRfUE9XRVJQQzY0IHx8IG1vZGUgIT0gREltb2RlKQorLSAgICAg ICYmICFBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKQorLSAgICAgICYmICFTUEVfVkVDVE9SX01P REUgKG1vZGUpCistICAgICAgLyogUmVzdHJpY3QgYWRkcmVzc2luZyBmb3IgREkgYmVjYXVzZSBv ZiBvdXIgU1VCUkVHIGhhY2tlcnkuICAqLworLSAgICAgICYmICEoVEFSR0VUX0U1MDBfRE9VQkxF CistCSAgICYmIChtb2RlID09IERGbW9kZSB8fCBtb2RlID09IEREbW9kZSB8fCBtb2RlID09IERJ bW9kZSkpCistICAgICAgJiYgVEFSR0VUX1VQREFURQorLSAgICAgICYmIGxlZ2l0aW1hdGVfaW5k aXJlY3RfYWRkcmVzc19wIChYRVhQICh4LCAwKSwgcmVnX29rX3N0cmljdCkKKy0gICAgICAmJiAo cnM2MDAwX2xlZ2l0aW1hdGVfb2Zmc2V0X2FkZHJlc3NfcCAobW9kZSwgWEVYUCAoeCwgMSksIHJl Z19va19zdHJpY3QpCistCSAgfHwgKCFhdm9pZGluZ19pbmRleGVkX2FkZHJlc3NfcCAobW9kZSkK Ky0JICAgICAgJiYgbGVnaXRpbWF0ZV9pbmRleGVkX2FkZHJlc3NfcCAoWEVYUCAoeCwgMSksIHJl Z19va19zdHJpY3QpKSkKKy0gICAgICAmJiBydHhfZXF1YWxfcCAoWEVYUCAoWEVYUCAoeCwgMSks IDApLCBYRVhQICh4LCAwKSkpCistICAgIHJldHVybiAxOworLSAgaWYgKGxlZ2l0aW1hdGVfbG9f c3VtX2FkZHJlc3NfcCAobW9kZSwgeCwgcmVnX29rX3N0cmljdCkpCistICAgIHJldHVybiAxOwor LSAgcmV0dXJuIDA7CisrICBlbHNlIGlmICghIHJlZ19va19zdHJpY3QKKysJICAgJiYgR0VUX0NP REUgKHgpID09IFBMVVMKKysJICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDApKSA9PSBSRUcKKysJ ICAgJiYgKFhFWFAgKHgsIDApID09IHZpcnR1YWxfc3RhY2tfdmFyc19ydHgKKysJICAgICAgIHx8 IFhFWFAgKHgsIDApID09IGFyZ19wb2ludGVyX3J0eCkKKysJICAgJiYgR0VUX0NPREUgKFhFWFAg KHgsIDEpKSA9PSBDT05TVF9JTlQpCisrICAgIHJldCA9IDE7CisrICBlbHNlIGlmIChyczYwMDBf bGVnaXRpbWF0ZV9vZmZzZXRfYWRkcmVzc19wIChtb2RlLCB4LCByZWdfb2tfc3RyaWN0KSkKKysg ICAgcmV0ID0gMTsKKysgIGVsc2UgaWYgKG1vZGUgIT0gVEltb2RlCisrCSAgICYmIG1vZGUgIT0g VEZtb2RlCisrCSAgICYmIG1vZGUgIT0gVERtb2RlCisrCSAgICYmICgoVEFSR0VUX0hBUkRfRkxP QVQgJiYgVEFSR0VUX0ZQUlMpCisrCSAgICAgICB8fCBUQVJHRVRfUE9XRVJQQzY0CisrCSAgICAg ICB8fCAobW9kZSAhPSBERm1vZGUgJiYgbW9kZSAhPSBERG1vZGUpCisrCSAgICAgICB8fCAoVEFS R0VUX0U1MDBfRE9VQkxFICYmIG1vZGUgIT0gRERtb2RlKSkKKysJICAgJiYgKFRBUkdFVF9QT1dF UlBDNjQgfHwgbW9kZSAhPSBESW1vZGUpCisrCSAgICYmICFhdm9pZGluZ19pbmRleGVkX2FkZHJl c3NfcCAobW9kZSkKKysJICAgJiYgbGVnaXRpbWF0ZV9pbmRleGVkX2FkZHJlc3NfcCAoeCwgcmVn X29rX3N0cmljdCkpCisrICAgIHJldCA9IDE7CisrICBlbHNlIGlmIChHRVRfQ09ERSAoeCkgPT0g UFJFX01PRElGWQorKwkgICAmJiBWRUNUT1JfTUVNX1ZTWF9QIChtb2RlKQorKwkgICAmJiBUQVJH RVRfVVBEQVRFCisrCSAgICYmIGxlZ2l0aW1hdGVfaW5kZXhlZF9hZGRyZXNzX3AgKFhFWFAgKHgs IDEpLCByZWdfb2tfc3RyaWN0KQorKwkgICAmJiBydHhfZXF1YWxfcCAoWEVYUCAoWEVYUCAoeCwg MSksIDApLCBYRVhQICh4LCAwKSkpCisrICAgIHJldCA9IDE7CisrICBlbHNlIGlmIChHRVRfQ09E RSAoeCkgPT0gUFJFX01PRElGWQorKwkgICAmJiBtb2RlICE9IFRJbW9kZQorKwkgICAmJiBtb2Rl ICE9IFRGbW9kZQorKwkgICAmJiBtb2RlICE9IFREbW9kZQorKwkgICAmJiAoKFRBUkdFVF9IQVJE X0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQpCisrCSAgICAgICB8 fCBUQVJHRVRfUE9XRVJQQzY0CisrCSAgICAgICB8fCAoKG1vZGUgIT0gREZtb2RlICYmIG1vZGUg IT0gRERtb2RlKSB8fCBUQVJHRVRfRTUwMF9ET1VCTEUpKQorKwkgICAmJiAoVEFSR0VUX1BPV0VS UEM2NCB8fCBtb2RlICE9IERJbW9kZSkKKysJICAgJiYgIVZFQ1RPUl9NRU1fQUxUSVZFQ19QICht b2RlKQorKwkgICAmJiAoIVRBUkdFVF9TUEUgfHwgIVNQRV9WRUNUT1JfTU9ERSAobW9kZSkpCisr CSAgIC8qIFJlc3RyaWN0IGFkZHJlc3NpbmcgZm9yIERJIGJlY2F1c2Ugb2Ygb3VyIFNVQlJFRyBo YWNrZXJ5LiAgKi8KKysJICAgJiYgIShUQVJHRVRfRTUwMF9ET1VCTEUKKysJCSYmIChtb2RlID09 IERGbW9kZSB8fCBtb2RlID09IEREbW9kZSB8fCBtb2RlID09IERJbW9kZSkpCisrCSAgICYmIFRB UkdFVF9VUERBVEUKKysJICAgJiYgbGVnaXRpbWF0ZV9pbmRpcmVjdF9hZGRyZXNzX3AgKFhFWFAg KHgsIDApLCByZWdfb2tfc3RyaWN0KQorKwkgICAmJiAocnM2MDAwX2xlZ2l0aW1hdGVfb2Zmc2V0 X2FkZHJlc3NfcCAobW9kZSwgWEVYUCAoeCwgMSksIHJlZ19va19zdHJpY3QpCisrCSAgICAgICB8 fCAoIWF2b2lkaW5nX2luZGV4ZWRfYWRkcmVzc19wIChtb2RlKQorKwkJICAgJiYgbGVnaXRpbWF0 ZV9pbmRleGVkX2FkZHJlc3NfcCAoWEVYUCAoeCwgMSksIHJlZ19va19zdHJpY3QpKSkKKysJICAg JiYgcnR4X2VxdWFsX3AgKFhFWFAgKFhFWFAgKHgsIDEpLCAwKSwgWEVYUCAoeCwgMCkpKQorKyAg ICByZXQgPSAxOworKyAgZWxzZSBpZiAobGVnaXRpbWF0ZV9sb19zdW1fYWRkcmVzc19wIChtb2Rl LCB4LCByZWdfb2tfc3RyaWN0KSkKKysgICAgcmV0ID0gMTsKKysgIGVsc2UKKysgICAgcmV0ID0g MDsKKysKKysgIGlmIChUQVJHRVRfREVCVUdfQUREUikKKysgICAgeworKyAgICAgIGZwcmludGYg KHN0ZGVyciwKKysJICAgICAgICJcbnJzNjAwMF9sZWdpdGltYXRlX2FkZHJlc3M6IHJldHVybiA9 ICVkLCBtb2RlID0gJXMsICIKKysJICAgICAgICJzdHJpY3QgPSAlZFxuIiwKKysJICAgICAgIHJl dCwKKysJICAgICAgIEdFVF9NT0RFX05BTUUgKG1vZGUpLAorKwkgICAgICAgcmVnX29rX3N0cmlj dCk7CisrICAgICAgZGVidWdfcnR4IChvcmlnX3gpOworKyAgICB9CisrCisrICByZXR1cm4gcmV0 OworIH0KKyAKKyAvKiBHbyB0byBMQUJFTCBpZiBBRERSIChhIGxlZ2l0aW1hdGUgYWRkcmVzcyBl eHByZXNzaW9uKQorQEAgLTQ0OTksMjggKzUwNTQsNDAgQEAgcnM2MDAwX2xlZ2l0aW1hdGVfYWRk cmVzcyAoZW51bSBtYWNoaW5lXworIGJvb2wKKyByczYwMDBfbW9kZV9kZXBlbmRlbnRfYWRkcmVz cyAocnR4IGFkZHIpCisgeworKyAgYm9vbCByZXQgPSBmYWxzZTsKKysKKyAgIHN3aXRjaCAoR0VU X0NPREUgKGFkZHIpKQorICAgICB7CisgICAgIGNhc2UgUExVUzoKKyAgICAgICBpZiAoR0VUX0NP REUgKFhFWFAgKGFkZHIsIDEpKSA9PSBDT05TVF9JTlQpCisgCXsKKyAJICB1bnNpZ25lZCBIT1NU X1dJREVfSU5UIHZhbCA9IElOVFZBTCAoWEVYUCAoYWRkciwgMSkpOworLQkgIHJldHVybiB2YWwg KyAxMiArIDB4ODAwMCA+PSAweDEwMDAwOworKwkgIHJldCA9ICh2YWwgKyAxMiArIDB4ODAwMCA+ PSAweDEwMDAwKTsKKyAJfQorICAgICAgIGJyZWFrOworIAorICAgICBjYXNlIExPX1NVTToKKy0g ICAgICByZXR1cm4gdHJ1ZTsKKysgICAgICByZXQgPSB0cnVlOworKyAgICAgIGJyZWFrOworIAor ICAgICAvKiBBdXRvLWluY3JlbWVudCBjYXNlcyBhcmUgbm93IHRyZWF0ZWQgZ2VuZXJpY2FsbHkg aW4gcmVjb2cuYy4gICovCisgICAgIGNhc2UgUFJFX01PRElGWToKKy0gICAgICByZXR1cm4gVEFS R0VUX1VQREFURTsKKysgICAgICByZXQgPSAoVEFSR0VUX1VQREFURSAhPSAwKTsKKysgICAgICBi cmVhazsKKyAKKyAgICAgZGVmYXVsdDoKKyAgICAgICBicmVhazsKKyAgICAgfQorIAorLSAgcmV0 dXJuIGZhbHNlOworKyAgaWYgKFRBUkdFVF9ERUJVR19BRERSKQorKyAgICB7CisrICAgICAgZnBy aW50ZiAoc3RkZXJyLAorKwkgICAgICAgIlxucnM2MDAwX21vZGVfZGVwZW5kZW50X2FkZHJlc3M6 IHJldCA9ICVkXG4iLAorKwkgICAgICAgKGludClyZXQpOworKyAgICAgIGRlYnVnX3J0eCAoYWRk cik7CisrICAgIH0KKysKKysgIHJldHVybiByZXQ7CisgfQorIAorIC8qIEltcGxlbWVudCBGSU5E X0JBU0VfVEVSTS4gICovCitAQCAtNDU3MSw0MyArNTEzOCw2IEBAIHJzNjAwMF9vZmZzZXR0YWJs ZV9tZW1yZWZfcCAocnR4IG9wKQorICAgcmV0dXJuIHJzNjAwMF9sZWdpdGltYXRlX29mZnNldF9h ZGRyZXNzX3AgKEdFVF9NT0RFIChvcCksIFhFWFAgKG9wLCAwKSwgMSk7CisgfQorIAorLS8qIFJl dHVybiBudW1iZXIgb2YgY29uc2VjdXRpdmUgaGFyZCByZWdzIG5lZWRlZCBzdGFydGluZyBhdCBy ZWcgUkVHTk8KKy0gICB0byBob2xkIHNvbWV0aGluZyBvZiBtb2RlIE1PREUuCistICAgVGhpcyBp cyBvcmRpbmFyaWx5IHRoZSBsZW5ndGggaW4gd29yZHMgb2YgYSB2YWx1ZSBvZiBtb2RlIE1PREUK Ky0gICBidXQgY2FuIGJlIGxlc3MgZm9yIGNlcnRhaW4gbW9kZXMgaW4gc3BlY2lhbCBsb25nIHJl Z2lzdGVycy4KKy0KKy0gICBGb3IgdGhlIFNQRSwgR1BScyBhcmUgNjQgYml0cyBidXQgb25seSAz MiBiaXRzIGFyZSB2aXNpYmxlIGluCistICAgc2NhbGFyIGluc3RydWN0aW9ucy4gIFRoZSB1cHBl ciAzMiBiaXRzIGFyZSBvbmx5IGF2YWlsYWJsZSB0byB0aGUKKy0gICBTSU1EIGluc3RydWN0aW9u cy4KKy0KKy0gICBQT1dFUiBhbmQgUG93ZXJQQyBHUFJzIGhvbGQgMzIgYml0cyB3b3J0aDsKKy0g ICBQb3dlclBDNjQgR1BScyBhbmQgRlBScyBwb2ludCByZWdpc3RlciBob2xkcyA2NCBiaXRzIHdv cnRoLiAgKi8KKy0KKy1pbnQKKy1yczYwMDBfaGFyZF9yZWdub19ucmVncyAoaW50IHJlZ25vLCBl bnVtIG1hY2hpbmVfbW9kZSBtb2RlKQorLXsKKy0gIGlmIChGUF9SRUdOT19QIChyZWdubykpCist ICAgIHJldHVybiAoR0VUX01PREVfU0laRSAobW9kZSkgKyBVTklUU19QRVJfRlBfV09SRCAtIDEp IC8gVU5JVFNfUEVSX0ZQX1dPUkQ7CistCistICBpZiAoU1BFX1NJTURfUkVHTk9fUCAocmVnbm8p ICYmIFRBUkdFVF9TUEUgJiYgU1BFX1ZFQ1RPUl9NT0RFIChtb2RlKSkKKy0gICAgcmV0dXJuIChH RVRfTU9ERV9TSVpFIChtb2RlKSArIFVOSVRTX1BFUl9TUEVfV09SRCAtIDEpIC8gVU5JVFNfUEVS X1NQRV9XT1JEOworLQorLSAgaWYgKEFMVElWRUNfUkVHTk9fUCAocmVnbm8pKQorLSAgICByZXR1 cm4KKy0gICAgICAoR0VUX01PREVfU0laRSAobW9kZSkgKyBVTklUU19QRVJfQUxUSVZFQ19XT1JE IC0gMSkgLyBVTklUU19QRVJfQUxUSVZFQ19XT1JEOworLQorLSAgLyogVGhlIHZhbHVlIHJldHVy bmVkIGZvciBTQ21vZGUgaW4gdGhlIEU1MDAgZG91YmxlIGNhc2UgaXMgMiBmb3IKKy0gICAgIEFC SSBjb21wYXRpYmlsaXR5OyBzdG9yaW5nIGFuIFNDbW9kZSB2YWx1ZSBpbiBhIHNpbmdsZSByZWdp c3RlcgorLSAgICAgd291bGQgcmVxdWlyZSBmdW5jdGlvbl9hcmcgYW5kIHJzNjAwMF9zcGVfZnVu Y3Rpb25fYXJnIHRvIGhhbmRsZQorLSAgICAgU0Ntb2RlIHNvIGFzIHRvIHBhc3MgdGhlIHZhbHVl IGNvcnJlY3RseSBpbiBhIHBhaXIgb2YKKy0gICAgIHJlZ2lzdGVycy4gICovCistICBpZiAoVEFS R0VUX0U1MDBfRE9VQkxFICYmIEZMT0FUX01PREVfUCAobW9kZSkgJiYgbW9kZSAhPSBTQ21vZGUK Ky0gICAgICAmJiAhREVDSU1BTF9GTE9BVF9NT0RFX1AgKG1vZGUpKQorLSAgICByZXR1cm4gKEdF VF9NT0RFX1NJWkUgKG1vZGUpICsgVU5JVFNfUEVSX0ZQX1dPUkQgLSAxKSAvIFVOSVRTX1BFUl9G UF9XT1JEOworLQorLSAgcmV0dXJuIChHRVRfTU9ERV9TSVpFIChtb2RlKSArIFVOSVRTX1BFUl9X T1JEIC0gMSkgLyBVTklUU19QRVJfV09SRDsKKy19CistCisgLyogQ2hhbmdlIHJlZ2lzdGVyIHVz YWdlIGNvbmRpdGlvbmFsIG9uIHRhcmdldCBmbGFncy4gICovCisgdm9pZAorIHJzNjAwMF9jb25k aXRpb25hbF9yZWdpc3Rlcl91c2FnZSAodm9pZCkKK0BAIC00NjcyLDE0ICs1MjAyLDE0IEBAIHJz NjAwMF9jb25kaXRpb25hbF9yZWdpc3Rlcl91c2FnZSAodm9pZCkKKyAJPSBjYWxsX3JlYWxseV91 c2VkX3JlZ3NbMTRdID0gMTsKKyAgICAgfQorIAorLSAgaWYgKCFUQVJHRVRfQUxUSVZFQykKKysg IGlmICghVEFSR0VUX0FMVElWRUMgJiYgIVRBUkdFVF9WU1gpCisgICAgIHsKKyAgICAgICBmb3Ig KGkgPSBGSVJTVF9BTFRJVkVDX1JFR05POyBpIDw9IExBU1RfQUxUSVZFQ19SRUdOTzsgKytpKQor IAlmaXhlZF9yZWdzW2ldID0gY2FsbF91c2VkX3JlZ3NbaV0gPSBjYWxsX3JlYWxseV91c2VkX3Jl Z3NbaV0gPSAxOworICAgICAgIGNhbGxfcmVhbGx5X3VzZWRfcmVnc1tWUlNBVkVfUkVHTk9dID0g MTsKKyAgICAgfQorIAorLSAgaWYgKFRBUkdFVF9BTFRJVkVDKQorKyAgaWYgKFRBUkdFVF9BTFRJ VkVDIHx8IFRBUkdFVF9WU1gpCisgICAgIGdsb2JhbF9yZWdzW1ZTQ1JfUkVHTk9dID0gMTsKKyAK KyAgIGlmIChUQVJHRVRfQUxUSVZFQ19BQkkpCitAQCAtNTEwMSw2ICs1NjMxLDggQEAgcnM2MDAw X2VtaXRfbW92ZSAocnR4IGRlc3QsIHJ0eCBzb3VyY2UsIAorICAgICBjYXNlIFYyU0Ztb2RlOgor ICAgICBjYXNlIFYyU0ltb2RlOgorICAgICBjYXNlIFYxREltb2RlOgorKyAgICBjYXNlIFYyREZt b2RlOgorKyAgICBjYXNlIFYyREltb2RlOgorICAgICAgIGlmIChDT05TVEFOVF9QIChvcGVyYW5k c1sxXSkKKyAJICAmJiAhZWFzeV92ZWN0b3JfY29uc3RhbnQgKG9wZXJhbmRzWzFdLCBtb2RlKSkK KyAJb3BlcmFuZHNbMV0gPSBmb3JjZV9jb25zdF9tZW0gKG1vZGUsIG9wZXJhbmRzWzFdKTsKK0BA IC01MjcwLDYgKzU4MDIsOSBAQCByczYwMDBfZW1pdF9tb3ZlIChydHggZGVzdCwgcnR4IHNvdXJj ZSwgCisgICAgICAgYnJlYWs7CisgCisgICAgIGNhc2UgVEltb2RlOgorKyAgICAgIGlmIChWRUNU T1JfTUVNX0FMVElWRUNfT1JfVlNYX1AgKFRJbW9kZSkpCisrCWJyZWFrOworKworICAgICAgIHJz NjAwMF9lbGltaW5hdGVfaW5kZXhlZF9tZW1yZWZzIChvcGVyYW5kcyk7CisgCisgICAgICAgaWYg KFRBUkdFVF9QT1dFUikKK0BAIC01Mjg1LDcgKzU4MjAsNyBAQCByczYwMDBfZW1pdF9tb3ZlIChy dHggZGVzdCwgcnR4IHNvdXJjZSwgCisgICAgICAgYnJlYWs7CisgCisgICAgIGRlZmF1bHQ6Cist ICAgICAgZ2NjX3VucmVhY2hhYmxlICgpOworKyAgICAgIGZhdGFsX2luc24gKCJiYWQgbW92ZSIs IGdlbl9ydHhfU0VUIChWT0lEbW9kZSwgZGVzdCwgc291cmNlKSk7CisgICAgIH0KKyAKKyAgIC8q IEFib3ZlLCB3ZSBtYXkgaGF2ZSBjYWxsZWQgZm9yY2VfY29uc3RfbWVtIHdoaWNoIG1heSBoYXZl IHJldHVybmVkCitAQCAtNTMwNSwxMCArNTg0MCwxMCBAQCByczYwMDBfZW1pdF9tb3ZlIChydHgg ZGVzdCwgcnR4IHNvdXJjZSwgCisgICAgJiYgVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQ UlMpCisgCisgLyogTm9uemVybyBpZiB3ZSBjYW4gdXNlIGFuIEFsdGlWZWMgcmVnaXN0ZXIgdG8g cGFzcyB0aGlzIGFyZy4gICovCistI2RlZmluZSBVU0VfQUxUSVZFQ19GT1JfQVJHX1AoQ1VNLE1P REUsVFlQRSxOQU1FRCkJXAorLSAgKEFMVElWRUNfVkVDVE9SX01PREUgKE1PREUpCQkJCVwKKy0g ICAmJiAoQ1VNKS0+dnJlZ25vIDw9IEFMVElWRUNfQVJHX01BWF9SRUcJCVwKKy0gICAmJiBUQVJH RVRfQUxUSVZFQ19BQkkJCQkJXAorKyNkZWZpbmUgVVNFX0FMVElWRUNfRk9SX0FSR19QKENVTSxN T0RFLFRZUEUsTkFNRUQpCQlcCisrICAoKEFMVElWRUNfVkVDVE9SX01PREUgKE1PREUpIHx8IFZT WF9WRUNUT1JfTU9ERSAoTU9ERSkpCVwKKysgICAmJiAoQ1VNKS0+dnJlZ25vIDw9IEFMVElWRUNf QVJHX01BWF9SRUcJCQlcCisrICAgJiYgVEFSR0VUX0FMVElWRUNfQUJJCQkJCQlcCisgICAgJiYg KE5BTUVEKSkKKyAKKyAvKiBSZXR1cm4gYSBub256ZXJvIHZhbHVlIHRvIHNheSB0byByZXR1cm4g dGhlIGZ1bmN0aW9uIHZhbHVlIGluCitAQCAtNTU0OSw3ICs2MDg0LDcgQEAgZnVuY3Rpb25fYXJn X2JvdW5kYXJ5IChlbnVtIG1hY2hpbmVfbW9kZQorIAkgICAgICAgJiYgaW50X3NpemVfaW5fYnl0 ZXMgKHR5cGUpID49IDgKKyAJICAgICAgICYmIGludF9zaXplX2luX2J5dGVzICh0eXBlKSA8IDE2 KSkKKyAgICAgcmV0dXJuIDY0OworLSAgZWxzZSBpZiAoQUxUSVZFQ19WRUNUT1JfTU9ERSAobW9k ZSkKKysgIGVsc2UgaWYgKChBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKSB8fCBWU1hfVkVDVE9S X01PREUgKG1vZGUpKQorIAkgICB8fCAodHlwZSAmJiBUUkVFX0NPREUgKHR5cGUpID09IFZFQ1RP Ul9UWVBFCisgCSAgICAgICAmJiBpbnRfc2l6ZV9pbl9ieXRlcyAodHlwZSkgPj0gMTYpKQorICAg ICByZXR1cm4gMTI4OworQEAgLTU2OTQsNyArNjIyOSw3IEBAIGZ1bmN0aW9uX2FyZ19hZHZhbmNl IChDVU1VTEFUSVZFX0FSR1MgKmMKKyAgICAgY3VtLT5uYXJnc19wcm90b3R5cGUtLTsKKyAKKyAg IGlmIChUQVJHRVRfQUxUSVZFQ19BQkkKKy0gICAgICAmJiAoQUxUSVZFQ19WRUNUT1JfTU9ERSAo bW9kZSkKKysgICAgICAmJiAoKEFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUpIHx8IFZTWF9WRUNU T1JfTU9ERSAobW9kZSkpCisgCSAgfHwgKHR5cGUgJiYgVFJFRV9DT0RFICh0eXBlKSA9PSBWRUNU T1JfVFlQRQorIAkgICAgICAmJiBpbnRfc2l6ZV9pbl9ieXRlcyAodHlwZSkgPT0gMTYpKSkKKyAg ICAgeworQEAgLTYyODgsNyArNjgyMyw3IEBAIGZ1bmN0aW9uX2FyZyAoQ1VNVUxBVElWRV9BUkdT ICpjdW0sIGVudW0KKyAgICAgZWxzZQorICAgICAgIHJldHVybiBnZW5fcnR4X1JFRyAobW9kZSwg Y3VtLT52cmVnbm8pOworICAgZWxzZSBpZiAoVEFSR0VUX0FMVElWRUNfQUJJCistCSAgICYmIChB TFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKQorKwkgICAmJiAoKEFMVElWRUNfVkVDVE9SX01PREUg KG1vZGUpIHx8IFZTWF9WRUNUT1JfTU9ERSAobW9kZSkpCisgCSAgICAgICB8fCAodHlwZSAmJiBU UkVFX0NPREUgKHR5cGUpID09IFZFQ1RPUl9UWVBFCisgCQkgICAmJiBpbnRfc2l6ZV9pbl9ieXRl cyAodHlwZSkgPT0gMTYpKSkKKyAgICAgeworQEAgLTcyMTIsMTAgKzc3NDcsMTMgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBidWlsdGluX2Rlc2NyaXB0aW9uIAorICAgeyBNQVNLX0FMVElWRUMsIENP REVfRk9SX2FsdGl2ZWNfdnBlcm1fdjRzaSwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZwZXJtXzRzaSIs IEFMVElWRUNfQlVJTFRJTl9WUEVSTV80U0kgfSwKKyAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZP Ul9hbHRpdmVjX3ZwZXJtX3Y4aGksICJfX2J1aWx0aW5fYWx0aXZlY192cGVybV84aGkiLCBBTFRJ VkVDX0JVSUxUSU5fVlBFUk1fOEhJIH0sCisgICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfYWx0 aXZlY192cGVybV92MTZxaSwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZwZXJtXzE2cWkiLCBBTFRJVkVD X0JVSUxUSU5fVlBFUk1fMTZRSSB9LAorLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2 ZWNfdnNlbF92NHNmLCAiX19idWlsdGluX2FsdGl2ZWNfdnNlbF80c2YiLCBBTFRJVkVDX0JVSUxU SU5fVlNFTF80U0YgfSwKKy0gIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZzZWxf djRzaSwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZzZWxfNHNpIiwgQUxUSVZFQ19CVUlMVElOX1ZTRUxf NFNJIH0sCistICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfYWx0aXZlY192c2VsX3Y4aGksICJf X2J1aWx0aW5fYWx0aXZlY192c2VsXzhoaSIsIEFMVElWRUNfQlVJTFRJTl9WU0VMXzhISSB9LAor LSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdnNlbF92MTZxaSwgIl9fYnVpbHRp bl9hbHRpdmVjX3ZzZWxfMTZxaSIsIEFMVElWRUNfQlVJTFRJTl9WU0VMXzE2UUkgfSwKKysgIHsg TUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZwZXJtX3YyZGYsICJfX2J1aWx0aW5fYWx0 aXZlY192cGVybV8yZGYiLCBBTFRJVkVDX0JVSUxUSU5fVlBFUk1fMkRGIH0sCisrICB7IE1BU0tf QUxUSVZFQywgQ09ERV9GT1JfYWx0aXZlY192cGVybV92MmRpLCAiX19idWlsdGluX2FsdGl2ZWNf dnBlcm1fMmRpIiwgQUxUSVZFQ19CVUlMVElOX1ZQRVJNXzJESSB9LAorKyAgeyBNQVNLX0FMVElW RUMsIENPREVfRk9SX3ZlY3Rvcl92c2VsdjRzZiwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZzZWxfNHNm IiwgQUxUSVZFQ19CVUlMVElOX1ZTRUxfNFNGIH0sCisrICB7IE1BU0tfQUxUSVZFQywgQ09ERV9G T1JfdmVjdG9yX3ZzZWx2NHNpLCAiX19idWlsdGluX2FsdGl2ZWNfdnNlbF80c2kiLCBBTFRJVkVD X0JVSUxUSU5fVlNFTF80U0kgfSwKKysgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl92ZWN0b3Jf dnNlbHY4aGksICJfX2J1aWx0aW5fYWx0aXZlY192c2VsXzhoaSIsIEFMVElWRUNfQlVJTFRJTl9W U0VMXzhISSB9LAorKyAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX3ZlY3Rvcl92c2VsdjE2cWks ICJfX2J1aWx0aW5fYWx0aXZlY192c2VsXzE2cWkiLCBBTFRJVkVDX0JVSUxUSU5fVlNFTF8xNlFJ IH0sCisrICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfdmVjdG9yX3ZzZWx2MmRmLCAiX19idWls dGluX2FsdGl2ZWNfdnNlbF8yZGYiLCBBTFRJVkVDX0JVSUxUSU5fVlNFTF8yREYgfSwKKyAgIHsg TUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZzbGRvaV92MTZxaSwgIl9fYnVpbHRpbl9h bHRpdmVjX3ZzbGRvaV8xNnFpIiwgQUxUSVZFQ19CVUlMVElOX1ZTTERPSV8xNlFJIH0sCisgICB7 IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfYWx0aXZlY192c2xkb2lfdjhoaSwgIl9fYnVpbHRpbl9h bHRpdmVjX3ZzbGRvaV84aGkiLCBBTFRJVkVDX0JVSUxUSU5fVlNMRE9JXzhISSB9LAorICAgeyBN QVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdnNsZG9pX3Y0c2ksICJfX2J1aWx0aW5fYWx0 aXZlY192c2xkb2lfNHNpIiwgQUxUSVZFQ19CVUlMVElOX1ZTTERPSV80U0kgfSwKK0BAIC03Mjg5 LDE4ICs3ODI3LDE4IEBAIHN0YXRpYyBzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbiBiZGVzY18K KyAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZjZnV4LCAiX19idWlsdGluX2Fs dGl2ZWNfdmNmdXgiLCBBTFRJVkVDX0JVSUxUSU5fVkNGVVggfSwKKyAgIHsgTUFTS19BTFRJVkVD LCBDT0RFX0ZPUl9hbHRpdmVjX3ZjZnN4LCAiX19idWlsdGluX2FsdGl2ZWNfdmNmc3giLCBBTFRJ VkVDX0JVSUxUSU5fVkNGU1ggfSwKKyAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVj X3ZjbXBiZnAsICJfX2J1aWx0aW5fYWx0aXZlY192Y21wYmZwIiwgQUxUSVZFQ19CVUlMVElOX1ZD TVBCRlAgfSwKKy0gIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZjbXBlcXViLCAi X19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWIiLCBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRVUIgfSwK Ky0gIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZjbXBlcXVoLCAiX19idWlsdGlu X2FsdGl2ZWNfdmNtcGVxdWgiLCBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRVUggfSwKKy0gIHsgTUFT S19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZjbXBlcXV3LCAiX19idWlsdGluX2FsdGl2ZWNf dmNtcGVxdXciLCBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRVVcgfSwKKy0gIHsgTUFTS19BTFRJVkVD LCBDT0RFX0ZPUl9hbHRpdmVjX3ZjbXBlcWZwLCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxZnAi LCBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRRlAgfSwKKy0gIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZP Ul9hbHRpdmVjX3ZjbXBnZWZwLCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGdlZnAiLCBBTFRJVkVD X0JVSUxUSU5fVkNNUEdFRlAgfSwKKy0gIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVj X3ZjbXBndHViLCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWIiLCBBTFRJVkVDX0JVSUxUSU5f VkNNUEdUVUIgfSwKKy0gIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZjbXBndHNi LCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2IiLCBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUU0Ig fSwKKy0gIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZjbXBndHVoLCAiX19idWls dGluX2FsdGl2ZWNfdmNtcGd0dWgiLCBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUVUggfSwKKy0gIHsg TUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZjbXBndHNoLCAiX19idWlsdGluX2FsdGl2 ZWNfdmNtcGd0c2giLCBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUU0ggfSwKKy0gIHsgTUFTS19BTFRJ VkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZjbXBndHV3LCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0 dXciLCBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUVVcgfSwKKy0gIHsgTUFTS19BTFRJVkVDLCBDT0RF X0ZPUl9hbHRpdmVjX3ZjbXBndHN3LCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3ciLCBBTFRJ VkVDX0JVSUxUSU5fVkNNUEdUU1cgfSwKKy0gIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRp dmVjX3ZjbXBndGZwLCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0ZnAiLCBBTFRJVkVDX0JVSUxU SU5fVkNNUEdURlAgfSwKKysgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl92ZWN0b3JfZXF2MTZx aSwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcXViIiwgQUxUSVZFQ19CVUlMVElOX1ZDTVBFUVVC IH0sCisrICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfdmVjdG9yX2VxdjhoaSwgIl9fYnVpbHRp bl9hbHRpdmVjX3ZjbXBlcXVoIiwgQUxUSVZFQ19CVUlMVElOX1ZDTVBFUVVIIH0sCisrICB7IE1B U0tfQUxUSVZFQywgQ09ERV9GT1JfdmVjdG9yX2VxdjRzaSwgIl9fYnVpbHRpbl9hbHRpdmVjX3Zj bXBlcXV3IiwgQUxUSVZFQ19CVUlMVElOX1ZDTVBFUVVXIH0sCisrICB7IE1BU0tfQUxUSVZFQywg Q09ERV9GT1JfdmVjdG9yX2VxdjRzZiwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBlcWZwIiwgQUxU SVZFQ19CVUlMVElOX1ZDTVBFUUZQIH0sCisrICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfdmVj dG9yX2dldjRzZiwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBnZWZwIiwgQUxUSVZFQ19CVUlMVElO X1ZDTVBHRUZQIH0sCisrICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfdmVjdG9yX2d0dXYxNnFp LCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dWIiLCBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUVUIg fSwKKysgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl92ZWN0b3JfZ3R1djhoaSwgIl9fYnVpbHRp bl9hbHRpdmVjX3ZjbXBndHNiIiwgQUxUSVZFQ19CVUlMVElOX1ZDTVBHVFNCIH0sCisrICB7IE1B U0tfQUxUSVZFQywgQ09ERV9GT1JfdmVjdG9yX2d0dXY0c2ksICJfX2J1aWx0aW5fYWx0aXZlY192 Y21wZ3R1aCIsIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RVSCB9LAorKyAgeyBNQVNLX0FMVElWRUMs IENPREVfRk9SX3ZlY3Rvcl9ndHYxNnFpLCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2giLCBB TFRJVkVDX0JVSUxUSU5fVkNNUEdUU0ggfSwKKysgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl92 ZWN0b3JfZ3R2OGhpLCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0dXciLCBBTFRJVkVDX0JVSUxU SU5fVkNNUEdUVVcgfSwKKysgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl92ZWN0b3JfZ3R2NHNp LCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c3ciLCBBTFRJVkVDX0JVSUxUSU5fVkNNUEdUU1cg fSwKKysgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl92ZWN0b3JfZ3R2NHNmLCAiX19idWlsdGlu X2FsdGl2ZWNfdmNtcGd0ZnAiLCBBTFRJVkVDX0JVSUxUSU5fVkNNUEdURlAgfSwKKyAgIHsgTUFT S19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZjdHN4cywgIl9fYnVpbHRpbl9hbHRpdmVjX3Zj dHN4cyIsIEFMVElWRUNfQlVJTFRJTl9WQ1RTWFMgfSwKKyAgIHsgTUFTS19BTFRJVkVDLCBDT0RF X0ZPUl9hbHRpdmVjX3ZjdHV4cywgIl9fYnVpbHRpbl9hbHRpdmVjX3ZjdHV4cyIsIEFMVElWRUNf QlVJTFRJTl9WQ1RVWFMgfSwKKyAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl91bWF4djE2cWkz LCAiX19idWlsdGluX2FsdGl2ZWNfdm1heHViIiwgQUxUSVZFQ19CVUlMVElOX1ZNQVhVQiB9LAor QEAgLTczMzEsNyArNzg2OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbiBi ZGVzY18KKyAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZtdWxvc2IsICJfX2J1 aWx0aW5fYWx0aXZlY192bXVsb3NiIiwgQUxUSVZFQ19CVUlMVElOX1ZNVUxPU0IgfSwKKyAgIHsg TUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZtdWxvdWgsICJfX2J1aWx0aW5fYWx0aXZl Y192bXVsb3VoIiwgQUxUSVZFQ19CVUlMVElOX1ZNVUxPVUggfSwKKyAgIHsgTUFTS19BTFRJVkVD LCBDT0RFX0ZPUl9hbHRpdmVjX3ZtdWxvc2gsICJfX2J1aWx0aW5fYWx0aXZlY192bXVsb3NoIiwg QUxUSVZFQ19CVUlMVElOX1ZNVUxPU0ggfSwKKy0gIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9h bHRpdmVjX25vcnY0c2kzLCAiX19idWlsdGluX2FsdGl2ZWNfdm5vciIsIEFMVElWRUNfQlVJTFRJ Tl9WTk9SIH0sCisrICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1Jfbm9ydjRzaTMsICJfX2J1aWx0 aW5fYWx0aXZlY192bm9yIiwgQUxUSVZFQ19CVUlMVElOX1ZOT1IgfSwKKyAgIHsgTUFTS19BTFRJ VkVDLCBDT0RFX0ZPUl9pb3J2NHNpMywgIl9fYnVpbHRpbl9hbHRpdmVjX3ZvciIsIEFMVElWRUNf QlVJTFRJTl9WT1IgfSwKKyAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3Zwa3Vo dW0sICJfX2J1aWx0aW5fYWx0aXZlY192cGt1aHVtIiwgQUxUSVZFQ19CVUlMVElOX1ZQS1VIVU0g fSwKKyAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3Zwa3V3dW0sICJfX2J1aWx0 aW5fYWx0aXZlY192cGt1d3VtIiwgQUxUSVZFQ19CVUlMVElOX1ZQS1VXVU0gfSwKK0BAIC03Nzk2 LDYgKzgzMzQsMTEgQEAgc3RhdGljIHN0cnVjdCBidWlsdGluX2Rlc2NyaXB0aW9uIGJkZXNjXwor ICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX3Z1cGts c2giLCBBTFRJVkVDX0JVSUxUSU5fVkVDX1ZVUEtMU0ggfSwKKyAgIHsgTUFTS19BTFRJVkVDLCBD T0RFX0ZPUl9ub3RoaW5nLCAiX19idWlsdGluX3ZlY192dXBrbHNiIiwgQUxUSVZFQ19CVUlMVElO X1ZFQ19WVVBLTFNCIH0sCisgCisrICB7IE1BU0tfQUxUSVZFQ3xNQVNLX1ZTWCwgQ09ERV9GT1Jf ZmxvYXR2NHNpdjRzZjIsICJfX2J1aWx0aW5fdmVjX2Zsb2F0X3Npc2YiLCBWRUNUT1JfQlVJTFRJ Tl9GTE9BVF9WNFNJX1Y0U0YgfSwKKysgIHsgTUFTS19BTFRJVkVDfE1BU0tfVlNYLCBDT0RFX0ZP Ul91bnNpZ25lZF9mbG9hdHY0c2l2NHNmMiwgIl9fYnVpbHRpbl92ZWNfdW5zX2Zsb2F0X3Npc2Yi LCBWRUNUT1JfQlVJTFRJTl9VTlNGTE9BVF9WNFNJX1Y0U0YgfSwKKysgIHsgTUFTS19BTFRJVkVD fE1BU0tfVlNYLCBDT0RFX0ZPUl9maXhfdHJ1bmN2NHNmdjRzaTIsICJfX2J1aWx0aW5fdmVjX2Zp eF9zZnNpIiwgVkVDVE9SX0JVSUxUSU5fRklYX1Y0U0ZfVjRTSSB9LAorKyAgeyBNQVNLX0FMVElW RUN8TUFTS19WU1gsIENPREVfRk9SX2ZpeHVuc190cnVuY3Y0c2Z2NHNpMiwgIl9fYnVpbHRpbl92 ZWNfZml4dW5zX3Nmc2kiLCBWRUNUT1JfQlVJTFRJTl9GSVhVTlNfVjRTRl9WNFNJIH0sCisrCisg ICAvKiBUaGUgU1BFIHVuYXJ5IGJ1aWx0aW5zIG11c3Qgc3RhcnQgd2l0aCBTUEVfQlVJTFRJTl9F VkFCUyBhbmQKKyAgICAgIGVuZCB3aXRoIFNQRV9CVUlMVElOX0VWU1VCRlVTSUFBVy4gICovCisg ICB7IDAsIENPREVfRk9SX3NwZV9ldmFicywgIl9fYnVpbHRpbl9zcGVfZXZhYnMiLCBTUEVfQlVJ TFRJTl9FVkFCUyB9LAorQEAgLTgzNTIsMTYgKzg4OTUsMTYgQEAgYWx0aXZlY19leHBhbmRfbGRf YnVpbHRpbiAodHJlZSBleHAsIHJ0eAorICAgc3dpdGNoIChmY29kZSkKKyAgICAgeworICAgICBj YXNlIEFMVElWRUNfQlVJTFRJTl9MRF9JTlRFUk5BTF8xNnFpOgorLSAgICAgIGljb2RlID0gQ09E RV9GT1JfYWx0aXZlY19sdnhfdjE2cWk7CisrICAgICAgaWNvZGUgPSBDT0RFX0ZPUl92ZWN0b3Jf bG9hZF92MTZxaTsKKyAgICAgICBicmVhazsKKyAgICAgY2FzZSBBTFRJVkVDX0JVSUxUSU5fTERf SU5URVJOQUxfOGhpOgorLSAgICAgIGljb2RlID0gQ09ERV9GT1JfYWx0aXZlY19sdnhfdjhoaTsK KysgICAgICBpY29kZSA9IENPREVfRk9SX3ZlY3Rvcl9sb2FkX3Y4aGk7CisgICAgICAgYnJlYWs7 CisgICAgIGNhc2UgQUxUSVZFQ19CVUlMVElOX0xEX0lOVEVSTkFMXzRzaToKKy0gICAgICBpY29k ZSA9IENPREVfRk9SX2FsdGl2ZWNfbHZ4X3Y0c2k7CisrICAgICAgaWNvZGUgPSBDT0RFX0ZPUl92 ZWN0b3JfbG9hZF92NHNpOworICAgICAgIGJyZWFrOworICAgICBjYXNlIEFMVElWRUNfQlVJTFRJ Tl9MRF9JTlRFUk5BTF80c2Y6CistICAgICAgaWNvZGUgPSBDT0RFX0ZPUl9hbHRpdmVjX2x2eF92 NHNmOworKyAgICAgIGljb2RlID0gQ09ERV9GT1JfdmVjdG9yX2xvYWRfdjRzZjsKKyAgICAgICBi cmVhazsKKyAgICAgZGVmYXVsdDoKKyAgICAgICAqZXhwYW5kZWRwID0gZmFsc2U7CitAQCAtODQw NSwxNiArODk0OCwxNiBAQCBhbHRpdmVjX2V4cGFuZF9zdF9idWlsdGluICh0cmVlIGV4cCwgcnR4 CisgICBzd2l0Y2ggKGZjb2RlKQorICAgICB7CisgICAgIGNhc2UgQUxUSVZFQ19CVUlMVElOX1NU X0lOVEVSTkFMXzE2cWk6CistICAgICAgaWNvZGUgPSBDT0RFX0ZPUl9hbHRpdmVjX3N0dnhfdjE2 cWk7CisrICAgICAgaWNvZGUgPSBDT0RFX0ZPUl92ZWN0b3Jfc3RvcmVfdjE2cWk7CisgICAgICAg YnJlYWs7CisgICAgIGNhc2UgQUxUSVZFQ19CVUlMVElOX1NUX0lOVEVSTkFMXzhoaToKKy0gICAg ICBpY29kZSA9IENPREVfRk9SX2FsdGl2ZWNfc3R2eF92OGhpOworKyAgICAgIGljb2RlID0gQ09E RV9GT1JfdmVjdG9yX3N0b3JlX3Y4aGk7CisgICAgICAgYnJlYWs7CisgICAgIGNhc2UgQUxUSVZF Q19CVUlMVElOX1NUX0lOVEVSTkFMXzRzaToKKy0gICAgICBpY29kZSA9IENPREVfRk9SX2FsdGl2 ZWNfc3R2eF92NHNpOworKyAgICAgIGljb2RlID0gQ09ERV9GT1JfdmVjdG9yX3N0b3JlX3Y0c2k7 CisgICAgICAgYnJlYWs7CisgICAgIGNhc2UgQUxUSVZFQ19CVUlMVElOX1NUX0lOVEVSTkFMXzRz ZjoKKy0gICAgICBpY29kZSA9IENPREVfRk9SX2FsdGl2ZWNfc3R2eF92NHNmOworKyAgICAgIGlj b2RlID0gQ09ERV9GT1JfdmVjdG9yX3N0b3JlX3Y0c2Y7CisgICAgICAgYnJlYWs7CisgICAgIGRl ZmF1bHQ6CisgICAgICAgKmV4cGFuZGVkcCA9IGZhbHNlOworQEAgLTkzNzIsNiArOTkxNSw4IEBA IHJzNjAwMF9pbml0X2J1aWx0aW5zICh2b2lkKQorIHsKKyAgIFYyU0lfdHlwZV9ub2RlID0gYnVp bGRfdmVjdG9yX3R5cGUgKGludFNJX3R5cGVfbm9kZSwgMik7CisgICBWMlNGX3R5cGVfbm9kZSA9 IGJ1aWxkX3ZlY3Rvcl90eXBlIChmbG9hdF90eXBlX25vZGUsIDIpOworKyAgVjJESV90eXBlX25v ZGUgPSBidWlsZF92ZWN0b3JfdHlwZSAoaW50RElfdHlwZV9ub2RlLCAyKTsKKysgIFYyREZfdHlw ZV9ub2RlID0gYnVpbGRfdmVjdG9yX3R5cGUgKGRvdWJsZV90eXBlX25vZGUsIDIpOworICAgVjRI SV90eXBlX25vZGUgPSBidWlsZF92ZWN0b3JfdHlwZSAoaW50SElfdHlwZV9ub2RlLCA0KTsKKyAg IFY0U0lfdHlwZV9ub2RlID0gYnVpbGRfdmVjdG9yX3R5cGUgKGludFNJX3R5cGVfbm9kZSwgNCk7 CisgICBWNFNGX3R5cGVfbm9kZSA9IGJ1aWxkX3ZlY3Rvcl90eXBlIChmbG9hdF90eXBlX25vZGUs IDQpOworQEAgLTk0MDQsNyArOTk0OSwxMCBAQCByczYwMDBfaW5pdF9idWlsdGlucyAodm9pZCkK KyAgIHVpbnRISV90eXBlX2ludGVybmFsX25vZGUgPSB1bnNpZ25lZF9pbnRISV90eXBlX25vZGU7 CisgICBpbnRTSV90eXBlX2ludGVybmFsX25vZGUgPSBpbnRTSV90eXBlX25vZGU7CisgICB1aW50 U0lfdHlwZV9pbnRlcm5hbF9ub2RlID0gdW5zaWduZWRfaW50U0lfdHlwZV9ub2RlOworKyAgaW50 RElfdHlwZV9pbnRlcm5hbF9ub2RlID0gaW50RElfdHlwZV9ub2RlOworKyAgdWludERJX3R5cGVf aW50ZXJuYWxfbm9kZSA9IHVuc2lnbmVkX2ludERJX3R5cGVfbm9kZTsKKyAgIGZsb2F0X3R5cGVf aW50ZXJuYWxfbm9kZSA9IGZsb2F0X3R5cGVfbm9kZTsKKysgIGRvdWJsZV90eXBlX2ludGVybmFs X25vZGUgPSBmbG9hdF90eXBlX25vZGU7CisgICB2b2lkX3R5cGVfaW50ZXJuYWxfbm9kZSA9IHZv aWRfdHlwZV9ub2RlOworIAorICAgKCpsYW5nX2hvb2tzLmRlY2xzLnB1c2hkZWNsKSAoYnVpbGRf ZGVjbCAoVFlQRV9ERUNMLAorQEAgLTk0NjIsMTMgKzEwMDEwLDE4IEBAIHJzNjAwMF9pbml0X2J1 aWx0aW5zICh2b2lkKQorIAkJCQkJICAgIGdldF9pZGVudGlmaWVyICgiX192ZWN0b3IgX19waXhl bCIpLAorIAkJCQkJICAgIHBpeGVsX1Y4SElfdHlwZV9ub2RlKSk7CisgCisrICBpZiAoVEFSR0VU X1ZTWCkKKysgICAgKCpsYW5nX2hvb2tzLmRlY2xzLnB1c2hkZWNsKSAoYnVpbGRfZGVjbCAoVFlQ RV9ERUNMLAorKwkJCQkJICAgICAgZ2V0X2lkZW50aWZpZXIgKCJfX3ZlY3RvciBkb3VibGUiKSwK KysJCQkJCSAgICAgIFYyREZfdHlwZV9ub2RlKSk7CisrCisgICBpZiAoVEFSR0VUX1BBSVJFRF9G TE9BVCkKKyAgICAgcGFpcmVkX2luaXRfYnVpbHRpbnMgKCk7CisgICBpZiAoVEFSR0VUX1NQRSkK KyAgICAgc3BlX2luaXRfYnVpbHRpbnMgKCk7CisgICBpZiAoVEFSR0VUX0FMVElWRUMpCisgICAg IGFsdGl2ZWNfaW5pdF9idWlsdGlucyAoKTsKKy0gIGlmIChUQVJHRVRfQUxUSVZFQyB8fCBUQVJH RVRfU1BFIHx8IFRBUkdFVF9QQUlSRURfRkxPQVQpCisrICBpZiAoVEFSR0VUX0FMVElWRUMgfHwg VEFSR0VUX1NQRSB8fCBUQVJHRVRfUEFJUkVEX0ZMT0FUIHx8IFRBUkdFVF9WU1gpCisgICAgIHJz NjAwMF9jb21tb25faW5pdF9idWlsdGlucyAoKTsKKyAgIGlmIChUQVJHRVRfUFBDX0dGWE9QVCkK KyAgICAgeworQEAgLTEwNDA3LDYgKzEwOTYwLDI2IEBAIHJzNjAwMF9jb21tb25faW5pdF9idWls dGlucyAodm9pZCkKKyAgIHRyZWUgaW50X2Z0eXBlX3Y4aGlfdjhoaQorICAgICA9IGJ1aWxkX2Z1 bmN0aW9uX3R5cGVfbGlzdCAoaW50ZWdlcl90eXBlX25vZGUsCisgCQkJCVY4SElfdHlwZV9ub2Rl LCBWOEhJX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKysgIHRyZWUgdjJkZl9mdHlwZV92MmRmX3Yy ZGZfdjJkZgorKyAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjJERl90eXBlX25vZGUs CisrCQkJCVYyREZfdHlwZV9ub2RlLCBWMkRGX3R5cGVfbm9kZSwKKysJCQkJVjJERl90eXBlX25v ZGUsIE5VTExfVFJFRSk7CisrICB0cmVlIHYyZGlfZnR5cGVfdjJkaV92MmRpX3YyZGkKKysgICAg PSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKFYyRElfdHlwZV9ub2RlLAorKwkJCQlWMkRJX3R5 cGVfbm9kZSwgVjJESV90eXBlX25vZGUsCisrCQkJCVYyRElfdHlwZV9ub2RlLCBOVUxMX1RSRUUp OworKyAgdHJlZSB2MmRmX2Z0eXBlX3YyZGZfdjJkZl92MTZxaQorKyAgICA9IGJ1aWxkX2Z1bmN0 aW9uX3R5cGVfbGlzdCAoVjJERl90eXBlX25vZGUsCisrCQkJCVYyREZfdHlwZV9ub2RlLCBWMkRG X3R5cGVfbm9kZSwKKysJCQkJVjE2UUlfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOworKyAgdHJlZSB2 MmRpX2Z0eXBlX3YyZGlfdjJkaV92MTZxaQorKyAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlz dCAoVjJESV90eXBlX25vZGUsCisrCQkJCVYyRElfdHlwZV9ub2RlLCBWMkRJX3R5cGVfbm9kZSwK KysJCQkJVjE2UUlfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOworKyAgdHJlZSB2NHNmX2Z0eXBlX3Y0 c2kKKysgICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKFY0U0ZfdHlwZV9ub2RlLCBWNFNJ X3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKKysgIHRyZWUgdjRzaV9mdHlwZV92NHNmCisrICAgID0g YnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWNFNJX3R5cGVfbm9kZSwgVjRTRl90eXBlX25vZGUs IE5VTExfVFJFRSk7CisgCisgICAvKiBBZGQgdGhlIHNpbXBsZSB0ZXJuYXJ5IG9wZXJhdG9ycy4g ICovCisgICBkID0gYmRlc2NfM2FyZzsKK0BAIC0xMDQ0Myw2ICsxMTAxNiwxMiBAQCByczYwMDBf Y29tbW9uX2luaXRfYnVpbHRpbnMgKHZvaWQpCisgCSAgICBjYXNlIFZPSURtb2RlOgorIAkgICAg ICB0eXBlID0gb3BhcXVlX2Z0eXBlX29wYXF1ZV9vcGFxdWVfb3BhcXVlOworIAkgICAgICBicmVh azsKKysJICAgIGNhc2UgVjJESW1vZGU6CisrCSAgICAgIHR5cGUgPSB2MmRpX2Z0eXBlX3YyZGlf djJkaV92MmRpOworKwkgICAgICBicmVhazsKKysJICAgIGNhc2UgVjJERm1vZGU6CisrCSAgICAg IHR5cGUgPSB2MmRmX2Z0eXBlX3YyZGZfdjJkZl92MmRmOworKwkgICAgICBicmVhazsKKyAJICAg IGNhc2UgVjRTSW1vZGU6CisgCSAgICAgIHR5cGUgPSB2NHNpX2Z0eXBlX3Y0c2lfdjRzaV92NHNp OworIAkgICAgICBicmVhazsKK0BAIC0xMDQ2Niw2ICsxMTA0NSwxMiBAQCByczYwMDBfY29tbW9u X2luaXRfYnVpbHRpbnMgKHZvaWQpCisgCXsKKyAJICBzd2l0Y2ggKG1vZGUwKQorIAkgICAgewor KwkgICAgY2FzZSBWMkRJbW9kZToKKysJICAgICAgdHlwZSA9IHYyZGlfZnR5cGVfdjJkaV92MmRp X3YxNnFpOworKwkgICAgICBicmVhazsKKysJICAgIGNhc2UgVjJERm1vZGU6CisrCSAgICAgIHR5 cGUgPSB2MmRmX2Z0eXBlX3YyZGZfdjJkZl92MTZxaTsKKysJICAgICAgYnJlYWs7CisgCSAgICBj YXNlIFY0U0ltb2RlOgorIAkgICAgICB0eXBlID0gdjRzaV9mdHlwZV92NHNpX3Y0c2lfdjE2cWk7 CisgCSAgICAgIGJyZWFrOworQEAgLTEwNzIxLDYgKzExMzA2LDEwIEBAIHJzNjAwMF9jb21tb25f aW5pdF9idWlsdGlucyAodm9pZCkKKyAJdHlwZSA9IHYyc2lfZnR5cGVfdjJzZjsKKyAgICAgICBl bHNlIGlmIChtb2RlMCA9PSBWMlNJbW9kZSAmJiBtb2RlMSA9PSBRSW1vZGUpCisgCXR5cGUgPSB2 MnNpX2Z0eXBlX2NoYXI7CisrICAgICAgZWxzZSBpZiAobW9kZTAgPT0gVjRTSW1vZGUgJiYgbW9k ZTEgPT0gVjRTRm1vZGUpCisrCXR5cGUgPSB2NHNpX2Z0eXBlX3Y0c2Y7CisrICAgICAgZWxzZSBp ZiAobW9kZTAgPT0gVjRTRm1vZGUgJiYgbW9kZTEgPT0gVjRTSW1vZGUpCisrCXR5cGUgPSB2NHNm X2Z0eXBlX3Y0c2k7CisgICAgICAgZWxzZQorIAlnY2NfdW5yZWFjaGFibGUgKCk7CisgCitAQCAt MTE2MDEsMTMgKzEyMTkwLDEwMSBAQCByczYwMDBfaW5zdGFudGlhdGVfZGVjbHMgKHZvaWQpCisg ICAgIGluc3RhbnRpYXRlX2RlY2xfcnRsIChjZnVuLT5tYWNoaW5lLT5zZG1vZGVfc3RhY2tfc2xv dCk7CisgfQorIAorKy8qIEdpdmVuIGFuIHJ0eCBYIGJlaW5nIHJlbG9hZGVkIGludG8gYSByZWcg cmVxdWlyZWQgdG8gYmUKKysgICBpbiBjbGFzcyBDTEFTUywgcmV0dXJuIHRoZSBjbGFzcyBvZiBy ZWcgdG8gYWN0dWFsbHkgdXNlLgorKyAgIEluIGdlbmVyYWwgdGhpcyBpcyBqdXN0IENMQVNTOyBi dXQgb24gc29tZSBtYWNoaW5lcworKyAgIGluIHNvbWUgY2FzZXMgaXQgaXMgcHJlZmVyYWJsZSB0 byB1c2UgYSBtb3JlIHJlc3RyaWN0aXZlIGNsYXNzLgorKworKyAgIE9uIHRoZSBSUy82MDAwLCB3 ZSBoYXZlIHRvIHJldHVybiBOT19SRUdTIHdoZW4gd2Ugd2FudCB0byByZWxvYWQgYQorKyAgIGZs b2F0aW5nLXBvaW50IENPTlNUX0RPVUJMRSB0byBmb3JjZSBpdCB0byBiZSBjb3BpZWQgdG8gbWVt b3J5LgorKworKyAgIFdlIGFsc28gZG9uJ3Qgd2FudCB0byByZWxvYWQgaW50ZWdlciB2YWx1ZXMg aW50byBmbG9hdGluZy1wb2ludAorKyAgIHJlZ2lzdGVycyBpZiB3ZSBjYW4gYXQgYWxsIGhlbHAg aXQuICBJbiBmYWN0LCB0aGlzIGNhbgorKyAgIGNhdXNlIHJlbG9hZCB0byBkaWUsIGlmIGl0IHRy aWVzIHRvIGdlbmVyYXRlIGEgcmVsb2FkIG9mIENUUgorKyAgIGludG8gYSBGUCByZWdpc3RlciBh bmQgZGlzY292ZXJzIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgbWVtb3J5IGxvY2F0aW9uCisrICAgcmVx dWlyZWQuCisrCisrICAgPz8/IFdvdWxkIGl0IGJlIGEgZ29vZCBpZGVhIHRvIGhhdmUgcmVsb2Fk IGRvIHRoZSBjb252ZXJzZSwgdGhhdCBpcworKyAgIHRyeSB0byByZWxvYWQgZmxvYXRpbmcgbW9k ZXMgaW50byBGUCByZWdpc3RlcnMgaWYgcG9zc2libGU/CisrICovCisrCisrZW51bSByZWdfY2xh c3MKKytyczYwMDBfcHJlZmVycmVkX3JlbG9hZF9jbGFzcyAocnR4IHgsIGVudW0gcmVnX2NsYXNz IHJjbGFzcykKKyt7CisrICBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlID0gR0VUX01PREUgKHgpOwor KworKyAgaWYgKFRBUkdFVF9WU1ggJiYgVlNYX1ZFQ1RPUl9NT0RFIChtb2RlKSAmJiB4ID09IENP TlNUMF9SVFggKG1vZGUpCisrICAgICAgJiYgVlNYX1JFR19DTEFTU19QIChyY2xhc3MpKQorKyAg ICByZXR1cm4gcmNsYXNzOworKworKyAgaWYgKFRBUkdFVF9BTFRJVkVDICYmIEFMVElWRUNfVkVD VE9SX01PREUgKG1vZGUpICYmIHJjbGFzcyA9PSBBTFRJVkVDX1JFR1MKKysgICAgICAmJiBlYXN5 X3ZlY3Rvcl9jb25zdGFudCAoeCwgbW9kZSkpCisrICAgIHJldHVybiByY2xhc3M7CisrCisrICBp ZiAoQ09OU1RBTlRfUCAoeCkgJiYgcmVnX2NsYXNzZXNfaW50ZXJzZWN0X3AgKHJjbGFzcywgRkxP QVRfUkVHUykpCisrICAgIHJldHVybiBOT19SRUdTOworKworKyAgaWYgKEdFVF9NT0RFX0NMQVNT IChtb2RlKSA9PSBNT0RFX0lOVCAmJiByY2xhc3MgPT0gTk9OX1NQRUNJQUxfUkVHUykKKysgICAg cmV0dXJuIEdFTkVSQUxfUkVHUzsKKysKKysgIC8qIEZvciBWU1gsIHByZWZlciB0aGUgdHJhZGl0 aW9uYWwgcmVnaXN0ZXJzLiAgKi8KKysgIGlmIChyY2xhc3MgPT0gVlNYX1JFR1MpCisrICAgIHsK KysgICAgICBpZiAobW9kZSA9PSBERm1vZGUpCisrCXJldHVybiBGTE9BVF9SRUdTOworKworKyAg ICAgIGlmIChBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKSkKKysJcmV0dXJuIEFMVElWRUNfUkVH UzsKKysgICAgfQorKworKyAgcmV0dXJuIHJjbGFzczsKKyt9CisrCisrLyogSWYgd2UgYXJlIGNv cHlpbmcgYmV0d2VlbiBGUCBvciBBbHRpVmVjIHJlZ2lzdGVycyBhbmQgYW55dGhpbmcgZWxzZSwg d2UgbmVlZAorKyAgIGEgbWVtb3J5IGxvY2F0aW9uLiAgVGhlIGV4Y2VwdGlvbiBpcyB3aGVuIHdl IGFyZSB0YXJnZXRpbmcgcHBjNjQgYW5kIHRoZQorKyAgIG1vdmUgdG8vZnJvbSBmcHIgdG8gZ3By IGluc3RydWN0aW9ucyBhcmUgYXZhaWxhYmxlLiAgQWxzbywgdW5kZXIgVlNYLCB5b3UKKysgICBj YW4gY29weSB2ZWN0b3IgcmVnaXN0ZXJzIGZyb20gdGhlIEZQIHJlZ2lzdGVyIHNldCB0byB0aGUg QWx0aXZlYyByZWdpc3RlcgorKyAgIHNldCBhbmQgdmljZSB2ZXJzYS4gICovCisrCisrYm9vbAor K3JzNjAwMF9zZWNvbmRhcnlfbWVtb3J5X25lZWRlZCAoZW51bSByZWdfY2xhc3MgY2xhc3MxLAor KwkJCQllbnVtIHJlZ19jbGFzcyBjbGFzczIsCisrCQkJCWVudW0gbWFjaGluZV9tb2RlIG1vZGUp CisreworKyAgaWYgKGNsYXNzMSA9PSBjbGFzczIpCisrICAgIHJldHVybiBmYWxzZTsKKysKKysg IGlmIChUQVJHRVRfVlNYICYmIFZTWF9NT1ZFX01PREUgKG1vZGUpICYmIFZTWF9SRUdfQ0xBU1Nf UCAoY2xhc3MxKQorKyAgICAgICYmIFZTWF9SRUdfQ0xBU1NfUCAoY2xhc3MyKSkKKysgICAgcmV0 dXJuIGZhbHNlOworKworKyAgaWYgKGNsYXNzMSA9PSBGTE9BVF9SRUdTCisrICAgICAgICYmICgh VEFSR0VUX01GUEdQUiB8fCAhVEFSR0VUX1BPV0VSUEM2NAorKwkgICB8fCAoKG1vZGUgIT0gREZt b2RlKQorKwkgICAgICAgJiYgKG1vZGUgIT0gRERtb2RlKQorKwkgICAgICAgJiYgKG1vZGUgIT0g REltb2RlKSkpKQorKyAgICByZXR1cm4gdHJ1ZTsKKysKKysgIGlmIChjbGFzczIgPT0gRkxPQVRf UkVHUworKyAgICAgICYmICghVEFSR0VUX01GUEdQUiB8fCAhVEFSR0VUX1BPV0VSUEM2NAorKwkg IHx8ICgobW9kZSAhPSBERm1vZGUpCisrCSAgICAgICYmIChtb2RlICE9IEREbW9kZSkKKysJICAg ICAgJiYgKG1vZGUgIT0gREltb2RlKSkpKQorKyAgICByZXR1cm4gdHJ1ZTsKKysKKysgIGlmIChj bGFzczEgPT0gQUxUSVZFQ19SRUdTIHx8IGNsYXNzMiA9PSBBTFRJVkVDX1JFR1MpCisrICAgIHJl dHVybiB0cnVlOworKworKyAgcmV0dXJuIGZhbHNlOworK30KKysKKyAvKiBSZXR1cm4gdGhlIHJl Z2lzdGVyIGNsYXNzIG9mIGEgc2NyYXRjaCByZWdpc3RlciBuZWVkZWQgdG8gY29weSBJTiBpbnRv CisgICAgb3Igb3V0IG9mIGEgcmVnaXN0ZXIgaW4gUkNMQVNTIGluIE1PREUuICBJZiBpdCBjYW4g YmUgZG9uZSBkaXJlY3RseSwKKyAgICBOT19SRUdTIGlzIHJldHVybmVkLiAgKi8KKyAKKyBlbnVt IHJlZ19jbGFzcworIHJzNjAwMF9zZWNvbmRhcnlfcmVsb2FkX2NsYXNzIChlbnVtIHJlZ19jbGFz cyByY2xhc3MsCistCQkJICAgICAgIGVudW0gbWFjaGluZV9tb2RlIG1vZGUgQVRUUklCVVRFX1VO VVNFRCwKKysJCQkgICAgICAgZW51bSBtYWNoaW5lX21vZGUgbW9kZSwKKyAJCQkgICAgICAgcnR4 IGluKQorIHsKKyAgIGludCByZWdubzsKK0BAIC0xMTY2Myw2ICsxMjM0MCwxMyBAQCByczYwMDBf c2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyAoZW51bSByZWdfCisgICAgICAgJiYgKHJjbGFzcyA9PSBG TE9BVF9SRUdTIHx8IHJjbGFzcyA9PSBOT05fU1BFQ0lBTF9SRUdTKSkKKyAgICAgcmV0dXJuICht b2RlICE9IFNEbW9kZSkgPyBOT19SRUdTIDogR0VORVJBTF9SRUdTOworIAorKyAgLyogTWVtb3J5 LCBhbmQgRlAvYWx0aXZlYyByZWdpc3RlcnMgY2FuIGdvIGludG8gZnAvYWx0aXZlYyByZWdpc3Rl cnMgdW5kZXIKKysgICAgIFZTWC4gICovCisrICBpZiAoVEFSR0VUX1ZTWAorKyAgICAgICYmIChy ZWdubyA9PSAtMSB8fCBWU1hfUkVHTk9fUCAocmVnbm8pKQorKyAgICAgICYmIFZTWF9SRUdfQ0xB U1NfUCAocmNsYXNzKSkKKysgICAgcmV0dXJuIE5PX1JFR1M7CisrCisgICAvKiBNZW1vcnksIGFu ZCBBbHRpVmVjIHJlZ2lzdGVycyBjYW4gZ28gaW50byBBbHRpVmVjIHJlZ2lzdGVycy4gICovCisg ICBpZiAoKHJlZ25vID09IC0xIHx8IEFMVElWRUNfUkVHTk9fUCAocmVnbm8pKQorICAgICAgICYm IHJjbGFzcyA9PSBBTFRJVkVDX1JFR1MpCitAQCAtMTE2NzYsNiArMTIzNjAsMjggQEAgcnM2MDAw X3NlY29uZGFyeV9yZWxvYWRfY2xhc3MgKGVudW0gcmVnXworICAgLyogT3RoZXJ3aXNlLCB3ZSBu ZWVkIEdFTkVSQUxfUkVHUy4gICovCisgICByZXR1cm4gR0VORVJBTF9SRUdTOworIH0KKysKKysv KiBSZXR1cm4gbm9uemVybyBpZiBmb3IgQ0xBU1MgYSBtb2RlIGNoYW5nZSBmcm9tIEZST00gdG8g VE8gaXMgaW52YWxpZC4gICovCisrCisrYm9vbAorK3JzNjAwMF9jYW5ub3RfY2hhbmdlX21vZGVf Y2xhc3MgKGVudW0gbWFjaGluZV9tb2RlIGZyb20sCisrCQkJCSBlbnVtIG1hY2hpbmVfbW9kZSB0 bywKKysJCQkJIGVudW0gcmVnX2NsYXNzIHJjbGFzcykKKyt7CisrICByZXR1cm4gKEdFVF9NT0RF X1NJWkUgKGZyb20pICE9IEdFVF9NT0RFX1NJWkUgKHRvKQorKwkgID8gKChHRVRfTU9ERV9TSVpF IChmcm9tKSA8IDggfHwgR0VUX01PREVfU0laRSAodG8pIDwgOAorKwkgICAgICB8fCBUQVJHRVRf SUVFRVFVQUQpCisrCSAgICAgJiYgcmVnX2NsYXNzZXNfaW50ZXJzZWN0X3AgKEZMT0FUX1JFR1Ms IHJjbGFzcykpCisrCSAgOiAoKChUQVJHRVRfRTUwMF9ET1VCTEUKKysJICAgICAgICYmICgoKCh0 bykgPT0gREZtb2RlKSArICgoZnJvbSkgPT0gREZtb2RlKSkgPT0gMQorKwkJICAgfHwgKCgodG8p ID09IFRGbW9kZSkgKyAoKGZyb20pID09IFRGbW9kZSkpID09IDEKKysJCSAgIHx8ICgoKHRvKSA9 PSBERG1vZGUpICsgKChmcm9tKSA9PSBERG1vZGUpKSA9PSAxCisrCQkgICB8fCAoKCh0bykgPT0g VERtb2RlKSArICgoZnJvbSkgPT0gVERtb2RlKSkgPT0gMQorKwkJICAgfHwgKCgodG8pID09IERJ bW9kZSkgKyAoKGZyb20pID09IERJbW9kZSkpID09IDEpKQorKwkgICAgICB8fCAoVEFSR0VUX1NQ RQorKwkJICAmJiAoU1BFX1ZFQ1RPUl9NT0RFIChmcm9tKSArIFNQRV9WRUNUT1JfTU9ERSAodG8p KSA9PSAxKSkKKysJICAgICAmJiByZWdfY2xhc3Nlc19pbnRlcnNlY3RfcCAoR0VORVJBTF9SRUdT LCByY2xhc3MpKSk7CisrfQorIAwKKyAvKiBHaXZlbiBhIGNvbXBhcmlzb24gb3BlcmF0aW9uLCBy ZXR1cm4gdGhlIGJpdCBudW1iZXIgaW4gQ0NSIHRvIHRlc3QuICBXZQorICAgIGtub3cgdGhpcyBp cyBhIHZhbGlkIGNvbXBhcmlzb24uCitAQCAtMTI0MDYsNiArMTMxMTIsMjYgQEAgcHJpbnRfb3Bl cmFuZCAoRklMRSAqZmlsZSwgcnR4IHgsIGludCBjbworICAgICAgIGZwcmludGYgKGZpbGUsICIl ZCIsIGkgKyAxKTsKKyAgICAgICByZXR1cm47CisgCisrICAgIGNhc2UgJ3gnOgorKyAgICAgIC8q IFggaXMgYSBGUFIgb3IgQWx0aXZlYyByZWdpc3RlciB1c2VkIGluIGEgVlNYIGNvbnRleHQuICAq LworKyAgICAgIGlmIChHRVRfQ09ERSAoeCkgIT0gUkVHIHx8ICFWU1hfUkVHTk9fUCAoUkVHTk8g KHgpKSkKKysJb3V0cHV0X29wZXJhbmRfbG9zc2FnZSAoImludmFsaWQgJSV4IHZhbHVlIik7Cisr ICAgICAgZWxzZQorKwl7CisrCSAgaW50IHJlZyA9IFJFR05PICh4KTsKKysJICBpbnQgdnN4X3Jl ZyA9IChGUF9SRUdOT19QIChyZWcpCisrCQkJID8gcmVnIC0gMzIKKysJCQkgOiByZWcgLSBGSVJT VF9BTFRJVkVDX1JFR05PICsgMzIpOworKworKyNpZmRlZiBUQVJHRVRfUkVHTkFNRVMgICAgICAK KysJICBpZiAoVEFSR0VUX1JFR05BTUVTKQorKwkgICAgZnByaW50ZiAoZmlsZSwgIiUldnMlZCIs IHZzeF9yZWcpOworKwkgIGVsc2UKKysjZW5kaWYKKysJICAgIGZwcmludGYgKGZpbGUsICIlZCIs IHZzeF9yZWcpOworKwl9CisrICAgICAgcmV0dXJuOworKworICAgICBjYXNlICdYJzoKKyAgICAg ICBpZiAoR0VUX0NPREUgKHgpID09IE1FTQorIAkgICYmIChsZWdpdGltYXRlX2luZGV4ZWRfYWRk cmVzc19wIChYRVhQICh4LCAwKSwgMCkKK0BAIC0xMjUxOCwxMyArMTMyNDQsMTYgQEAgcHJpbnRf b3BlcmFuZCAoRklMRSAqZmlsZSwgcnR4IHgsIGludCBjbworIAorIAkgICAgLyogRmFsbCB0aHJv dWdoLiAgTXVzdCBiZSBbcmVnK3JlZ10uICAqLworIAkgIH0KKy0JaWYgKFRBUkdFVF9BTFRJVkVD CisrCWlmIChWRUNUT1JfTUVNX0FMVElWRUNfUCAoR0VUX01PREUgKHgpKQorIAkgICAgJiYgR0VU X0NPREUgKHRtcCkgPT0gQU5ECisgCSAgICAmJiBHRVRfQ09ERSAoWEVYUCAodG1wLCAxKSkgPT0g Q09OU1RfSU5UCisgCSAgICAmJiBJTlRWQUwgKFhFWFAgKHRtcCwgMSkpID09IC0xNikKKyAJICB0 bXAgPSBYRVhQICh0bXAsIDApOworKwllbHNlIGlmIChWRUNUT1JfTUVNX1ZTWF9QIChHRVRfTU9E RSAoeCkpCisrCQkgJiYgR0VUX0NPREUgKHRtcCkgPT0gUFJFX01PRElGWSkKKysJICB0bXAgPSBY RVhQICh0bXAsIDEpOworIAlpZiAoR0VUX0NPREUgKHRtcCkgPT0gUkVHKQorLQkgIGZwcmludGYg KGZpbGUsICIwLCVzIiwgcmVnX25hbWVzW1JFR05PICh0bXApXSk7CisrCSAgZnByaW50ZiAoZmls ZSwgIiVzLCVzIiwgcmVnX25hbWVzWzBdLCByZWdfbmFtZXNbUkVHTk8gKHRtcCldKTsKKyAJZWxz ZQorIAkgIHsKKyAJICAgIGlmICghR0VUX0NPREUgKHRtcCkgPT0gUExVUworQEAgLTEzMjk2LDU1 ICsxNDAyNSw2MiBAQCBvdXRwdXRfZTUwMF9mbGlwX2d0X2JpdCAocnR4IGRzdCwgcnR4IHNyCisg ICByZXR1cm4gc3RyaW5nOworIH0KKyAKKy0vKiBSZXR1cm4gaW5zbiBpbmRleCBmb3IgdGhlIHZl Y3RvciBjb21wYXJlIGluc3RydWN0aW9uIGZvciBnaXZlbiBDT0RFLAorLSAgIGFuZCBERVNUX01P REUsIE9QX01PREUuIFJldHVybiBJTlNOX05PVF9BVkFJTEFCTEUgaWYgdmFsaWQgaW5zbiBpcwor LSAgIG5vdCBhdmFpbGFibGUuICAqLworKy8qIFJldHVybiBpbnNuIGZvciBWU1ggY29tcGFyaXNv bnMuICAqLworIAorLXN0YXRpYyBpbnQKKy1nZXRfdmVjX2NtcF9pbnNuIChlbnVtIHJ0eF9jb2Rl IGNvZGUsCistCQkgIGVudW0gbWFjaGluZV9tb2RlIGRlc3RfbW9kZSwKKy0JCSAgZW51bSBtYWNo aW5lX21vZGUgb3BfbW9kZSkKKytzdGF0aWMgcnR4CisrcnM2MDAwX2VtaXRfdmVjdG9yX2NvbXBh cmVfdnN4IChlbnVtIHJ0eF9jb2RlIGNvZGUsCisrCQkJCXJ0eCBtYXNrLAorKwkJCQlydHggb3Aw LAorKwkJCQlydHggb3AxKQorIHsKKy0gIGlmICghVEFSR0VUX0FMVElWRUMpCistICAgIHJldHVy biBJTlNOX05PVF9BVkFJTEFCTEU7CistCisgICBzd2l0Y2ggKGNvZGUpCisgICAgIHsKKysgICAg ZGVmYXVsdDoKKysgICAgICBicmVhazsKKysKKyAgICAgY2FzZSBFUToKKy0gICAgICBpZiAoZGVz dF9tb2RlID09IFYxNlFJbW9kZSAmJiBvcF9tb2RlID09IFYxNlFJbW9kZSkKKy0JcmV0dXJuIFVO U1BFQ19WQ01QRVFVQjsKKy0gICAgICBpZiAoZGVzdF9tb2RlID09IFY4SEltb2RlICYmIG9wX21v ZGUgPT0gVjhISW1vZGUpCistCXJldHVybiBVTlNQRUNfVkNNUEVRVUg7CistICAgICAgaWYgKGRl c3RfbW9kZSA9PSBWNFNJbW9kZSAmJiBvcF9tb2RlID09IFY0U0ltb2RlKQorLQlyZXR1cm4gVU5T UEVDX1ZDTVBFUVVXOworLSAgICAgIGlmIChkZXN0X21vZGUgPT0gVjRTSW1vZGUgJiYgb3BfbW9k ZSA9PSBWNFNGbW9kZSkKKy0JcmV0dXJuIFVOU1BFQ19WQ01QRVFGUDsKKysgICAgY2FzZSBHVDoK KysgICAgY2FzZSBHRToKKysgICAgICBlbWl0X2luc24gKGdlbl9ydHhfU0VUIChWT0lEbW9kZSwK KysJCQkgICAgICBtYXNrLAorKwkJCSAgICAgIGdlbl9ydHhfZm10X2VlIChjb2RlLCBHRVRfTU9E RSAobWFzayksCisrCQkJCQkgICAgICBvcDAsCisrCQkJCQkgICAgICBvcDEpKSk7CisrICAgICAg cmV0dXJuIG1hc2s7CisrICAgIH0KKysKKysgIHJldHVybiBOVUxMX1JUWDsKKyt9CisrCisrLyog UmV0dXJuIGluc24gZm9yIEFsdGl2ZWMgY29tcGFyaXNvbnMuICAqLworKworK3N0YXRpYyBydHgK KytyczYwMDBfZW1pdF92ZWN0b3JfY29tcGFyZV9hbHRpdmVjIChlbnVtIHJ0eF9jb2RlIGNvZGUs CisrCQkJCSAgICBydHggbWFzaywKKysJCQkJICAgIHJ0eCBvcDAsCisrCQkJCSAgICBydHggb3Ax KQorK3sKKysgIHN3aXRjaCAoY29kZSkKKysgICAgeworKyAgICBkZWZhdWx0OgorICAgICAgIGJy ZWFrOworKworICAgICBjYXNlIEdFOgorLSAgICAgIGlmIChkZXN0X21vZGUgPT0gVjRTSW1vZGUg JiYgb3BfbW9kZSA9PSBWNFNGbW9kZSkKKy0JcmV0dXJuIFVOU1BFQ19WQ01QR0VGUDsKKysgICAg ICBpZiAoR0VUX01PREUgKG1hc2spICE9IFY0U0Ztb2RlKQorKwlyZXR1cm4gTlVMTF9SVFg7Cisr ICAgICAgLyogZmFsbCB0aHJvdWdoICovCisrICAgIGNhc2UgRVE6CisgICAgIGNhc2UgR1Q6Cist ICAgICAgaWYgKGRlc3RfbW9kZSA9PSBWMTZRSW1vZGUgJiYgb3BfbW9kZSA9PSBWMTZRSW1vZGUp CistCXJldHVybiBVTlNQRUNfVkNNUEdUU0I7CistICAgICAgaWYgKGRlc3RfbW9kZSA9PSBWOEhJ bW9kZSAmJiBvcF9tb2RlID09IFY4SEltb2RlKQorLQlyZXR1cm4gVU5TUEVDX1ZDTVBHVFNIOwor LSAgICAgIGlmIChkZXN0X21vZGUgPT0gVjRTSW1vZGUgJiYgb3BfbW9kZSA9PSBWNFNJbW9kZSkK Ky0JcmV0dXJuIFVOU1BFQ19WQ01QR1RTVzsKKy0gICAgICBpZiAoZGVzdF9tb2RlID09IFY0U0lt b2RlICYmIG9wX21vZGUgPT0gVjRTRm1vZGUpCistCXJldHVybiBVTlNQRUNfVkNNUEdURlA7Cist ICAgICAgYnJlYWs7CisgICAgIGNhc2UgR1RVOgorLSAgICAgIGlmIChkZXN0X21vZGUgPT0gVjE2 UUltb2RlICYmIG9wX21vZGUgPT0gVjE2UUltb2RlKQorLQlyZXR1cm4gVU5TUEVDX1ZDTVBHVFVC OworLSAgICAgIGlmIChkZXN0X21vZGUgPT0gVjhISW1vZGUgJiYgb3BfbW9kZSA9PSBWOEhJbW9k ZSkKKy0JcmV0dXJuIFVOU1BFQ19WQ01QR1RVSDsKKy0gICAgICBpZiAoZGVzdF9tb2RlID09IFY0 U0ltb2RlICYmIG9wX21vZGUgPT0gVjRTSW1vZGUpCistCXJldHVybiBVTlNQRUNfVkNNUEdUVVc7 CistICAgICAgYnJlYWs7CistICAgIGRlZmF1bHQ6CistICAgICAgYnJlYWs7CisrICAgICAgZW1p dF9pbnNuIChnZW5fcnR4X1NFVCAoVk9JRG1vZGUsCisrCQkJICAgICAgbWFzaywKKysJCQkgICAg ICBnZW5fcnR4X2ZtdF9lZSAoY29kZSwgR0VUX01PREUgKG1hc2spLAorKwkJCQkJICAgICAgb3Aw LAorKwkJCQkJICAgICAgb3AxKSkpOworKyAgICAgIHJldHVybiBtYXNrOworICAgICB9CistICBy ZXR1cm4gSU5TTl9OT1RfQVZBSUxBQkxFOworKworKyAgcmV0dXJuIE5VTExfUlRYOworIH0KKyAK KyAvKiBFbWl0IHZlY3RvciBjb21wYXJlIGZvciBvcGVyYW5kcyBPUDAgYW5kIE9QMSB1c2luZyBj b2RlIFJDT0RFLgorQEAgLTEzMzU1LDEyOSArMTQwOTEsMTExIEBAIHJzNjAwMF9lbWl0X3ZlY3Rv cl9jb21wYXJlIChlbnVtIHJ0eF9jb2QKKyAJCQkgICAgcnR4IG9wMCwgcnR4IG9wMSwKKyAJCQkg ICAgZW51bSBtYWNoaW5lX21vZGUgZG1vZGUpCisgeworLSAgaW50IHZlY19jbXBfaW5zbjsKKyAg IHJ0eCBtYXNrOworLSAgZW51bSBtYWNoaW5lX21vZGUgZGVzdF9tb2RlOworLSAgZW51bSBtYWNo aW5lX21vZGUgb3BfbW9kZSA9IEdFVF9NT0RFIChvcDEpOworKyAgYm9vbCBzd2FwX29wZXJhbmRz ID0gZmFsc2U7CisrICBib29sIHRyeV9hZ2FpbiA9IGZhbHNlOworIAorLSAgZ2NjX2Fzc2VydCAo VEFSR0VUX0FMVElWRUMpOworKyAgZ2NjX2Fzc2VydCAoVEFSR0VUX0FMVElWRUMgfHwgVEFSR0VU X1ZTWCk7CisgICBnY2NfYXNzZXJ0IChHRVRfTU9ERSAob3AwKSA9PSBHRVRfTU9ERSAob3AxKSk7 CisgCistICAvKiBGbG9hdGluZyBwb2ludCB2ZWN0b3IgY29tcGFyZSBpbnN0cnVjdGlvbnMgdXNl cyBkZXN0aW5hdGlvbiBWNFNJbW9kZS4KKy0gICAgIE1vdmUgZGVzdGluYXRpb24gdG8gYXBwcm9w cmlhdGUgbW9kZSBsYXRlci4gICovCistICBpZiAoZG1vZGUgPT0gVjRTRm1vZGUpCistICAgIGRl c3RfbW9kZSA9IFY0U0ltb2RlOworLSAgZWxzZQorLSAgICBkZXN0X21vZGUgPSBkbW9kZTsKKysg IG1hc2sgPSBnZW5fcmVnX3J0eCAoZG1vZGUpOworIAorLSAgbWFzayA9IGdlbl9yZWdfcnR4IChk ZXN0X21vZGUpOworLSAgdmVjX2NtcF9pbnNuID0gZ2V0X3ZlY19jbXBfaW5zbiAocmNvZGUsIGRl c3RfbW9kZSwgb3BfbW9kZSk7CisrICAvKiBUcnkgZm9yIFZTWCBiZWZvcmUgQWx0aXZlYy4gICov CisrICBpZiAoVEFSR0VUX1ZTWCAmJiBWU1hfVkVDVE9SX01PREUgKGRtb2RlKSkKKysgICAgewor KyAgICAgIHJ0eCB2c3ggPSByczYwMDBfZW1pdF92ZWN0b3JfY29tcGFyZV92c3ggKHJjb2RlLCBt YXNrLCBvcDAsIG9wMSk7CisrICAgICAgaWYgKHZzeCkKKysJcmV0dXJuIHZzeDsKKysgICAgfQor KyAgZWxzZSBpZiAoVEFSR0VUX0FMVElWRUMgJiYgQUxUSVZFQ19WRUNUT1JfTU9ERSAoZG1vZGUp KQorKyAgICB7CisrICAgICAgcnR4IGF2ID0gcnM2MDAwX2VtaXRfdmVjdG9yX2NvbXBhcmVfYWx0 aXZlYyAocmNvZGUsIG1hc2ssIG9wMCwgb3AxKTsKKysgICAgICBpZiAoYXYpCisrCXJldHVybiBh djsKKysgICAgfQorIAorLSAgaWYgKHZlY19jbXBfaW5zbiA9PSBJTlNOX05PVF9BVkFJTEFCTEUp CisrICBzd2l0Y2ggKHJjb2RlKQorICAgICB7CistICAgICAgYm9vbCBzd2FwX29wZXJhbmRzID0g ZmFsc2U7CistICAgICAgYm9vbCB0cnlfYWdhaW4gPSBmYWxzZTsKKy0gICAgICBzd2l0Y2ggKHJj b2RlKQorLQl7CistCWNhc2UgTFQ6CistCSAgcmNvZGUgPSBHVDsKKy0JICBzd2FwX29wZXJhbmRz ID0gdHJ1ZTsKKy0JICB0cnlfYWdhaW4gPSB0cnVlOworLQkgIGJyZWFrOworLQljYXNlIExUVToK Ky0JICByY29kZSA9IEdUVTsKKy0JICBzd2FwX29wZXJhbmRzID0gdHJ1ZTsKKy0JICB0cnlfYWdh aW4gPSB0cnVlOworLQkgIGJyZWFrOworLQljYXNlIE5FOgorLQljYXNlIFVOTEU6CistCWNhc2Ug VU5MVDoKKy0JY2FzZSBVTkdFOgorLQljYXNlIFVOR1Q6CistCSAgLyogSW52ZXJ0IGNvbmRpdGlv biBhbmQgdHJ5IGFnYWluLgorLQkgICAgIGUuZy4sIEEgIT0gQiBiZWNvbWVzIH4oQT09QikuICAq LworLQkgIHsKKy0JICAgIGVudW0gcnR4X2NvZGUgcmV2X2NvZGU7CistCSAgICBlbnVtIGluc25f Y29kZSBub3JfY29kZTsKKy0JICAgIHJ0eCBlcV9ydHg7CistCistCSAgICByZXZfY29kZSA9IHJl dmVyc2VfY29uZGl0aW9uX21heWJlX3Vub3JkZXJlZCAocmNvZGUpOworLQkgICAgZXFfcnR4ID0g cnM2MDAwX2VtaXRfdmVjdG9yX2NvbXBhcmUgKHJldl9jb2RlLCBvcDAsIG9wMSwKKy0JCQkJCQkg ZGVzdF9tb2RlKTsKKy0KKy0JICAgIG5vcl9jb2RlID0gb3B0YWJfaGFuZGxlciAob25lX2NtcGxf b3B0YWIsIChpbnQpZGVzdF9tb2RlKS0+aW5zbl9jb2RlOworLQkgICAgZ2NjX2Fzc2VydCAobm9y X2NvZGUgIT0gQ09ERV9GT1Jfbm90aGluZyk7CistCSAgICBlbWl0X2luc24gKEdFTl9GQ04gKG5v cl9jb2RlKSAobWFzaywgZXFfcnR4KSk7CisrICAgIGNhc2UgTFQ6CisrICAgICAgcmNvZGUgPSBH VDsKKysgICAgICBzd2FwX29wZXJhbmRzID0gdHJ1ZTsKKysgICAgICB0cnlfYWdhaW4gPSB0cnVl OworKyAgICAgIGJyZWFrOworKyAgICBjYXNlIExUVToKKysgICAgICByY29kZSA9IEdUVTsKKysg ICAgICBzd2FwX29wZXJhbmRzID0gdHJ1ZTsKKysgICAgICB0cnlfYWdhaW4gPSB0cnVlOworKyAg ICAgIGJyZWFrOworKyAgICBjYXNlIE5FOgorKyAgICBjYXNlIFVOTEU6CisrICAgIGNhc2UgVU5M VDoKKysgICAgY2FzZSBVTkdFOgorKyAgICBjYXNlIFVOR1Q6CisrICAgICAgLyogSW52ZXJ0IGNv bmRpdGlvbiBhbmQgdHJ5IGFnYWluLgorKwkgZS5nLiwgQSAhPSBCIGJlY29tZXMgfihBPT1CKS4g ICovCisrICAgICAgeworKwllbnVtIHJ0eF9jb2RlIHJldl9jb2RlOworKwllbnVtIGluc25fY29k ZSBub3JfY29kZTsKKysJcnR4IGVxX3J0eDsKKysKKysJcmV2X2NvZGUgPSByZXZlcnNlX2NvbmRp dGlvbl9tYXliZV91bm9yZGVyZWQgKHJjb2RlKTsKKysJZXFfcnR4ID0gcnM2MDAwX2VtaXRfdmVj dG9yX2NvbXBhcmUgKHJldl9jb2RlLCBvcDAsIG9wMSwgZG1vZGUpOworKworKwlub3JfY29kZSA9 IG9wdGFiX2hhbmRsZXIgKG9uZV9jbXBsX29wdGFiLCAoaW50KWRtb2RlKS0+aW5zbl9jb2RlOwor KwlnY2NfYXNzZXJ0IChub3JfY29kZSAhPSBDT0RFX0ZPUl9ub3RoaW5nKTsKKysJZW1pdF9pbnNu IChHRU5fRkNOIChub3JfY29kZSkgKG1hc2ssIGVxX3J0eCkpOworKwlyZXR1cm4gbWFzazsKKysg ICAgICB9CisrICAgICAgYnJlYWs7CisrICAgIGNhc2UgR0U6CisrICAgIGNhc2UgR0VVOgorKyAg ICBjYXNlIExFOgorKyAgICBjYXNlIExFVToKKysgICAgICAvKiBUcnkgR1QvR1RVL0xUL0xUVSBP UiBFUSAqLworKyAgICAgIHsKKysJcnR4IGNfcnR4LCBlcV9ydHg7CisrCWVudW0gaW5zbl9jb2Rl IGlvcl9jb2RlOworKwllbnVtIHJ0eF9jb2RlIG5ld19jb2RlOworIAorLQkgICAgaWYgKGRtb2Rl ICE9IGRlc3RfbW9kZSkKKy0JICAgICAgeworLQkJcnR4IHRlbXAgPSBnZW5fcmVnX3J0eCAoZGVz dF9tb2RlKTsKKy0JCWNvbnZlcnRfbW92ZSAodGVtcCwgbWFzaywgMCk7CistCQlyZXR1cm4gdGVt cDsKKy0JICAgICAgfQorLQkgICAgcmV0dXJuIG1hc2s7CistCSAgfQorLQkgIGJyZWFrOworLQlj YXNlIEdFOgorLQljYXNlIEdFVToKKy0JY2FzZSBMRToKKy0JY2FzZSBMRVU6CistCSAgLyogVHJ5 IEdUL0dUVS9MVC9MVFUgT1IgRVEgKi8KKysJc3dpdGNoIChyY29kZSkKKyAJICB7CistCSAgICBy dHggY19ydHgsIGVxX3J0eDsKKy0JICAgIGVudW0gaW5zbl9jb2RlIGlvcl9jb2RlOworLQkgICAg ZW51bSBydHhfY29kZSBuZXdfY29kZTsKKy0KKy0JICAgIHN3aXRjaCAocmNvZGUpCistCSAgICAg IHsKKy0JICAgICAgY2FzZSAgR0U6CistCQluZXdfY29kZSA9IEdUOworLQkJYnJlYWs7CistCist CSAgICAgIGNhc2UgR0VVOgorLQkJbmV3X2NvZGUgPSBHVFU7CistCQlicmVhazsKKysJICBjYXNl ICBHRToKKysJICAgIG5ld19jb2RlID0gR1Q7CisrCSAgICBicmVhazsKKyAKKy0JICAgICAgY2Fz ZSBMRToKKy0JCW5ld19jb2RlID0gTFQ7CistCQlicmVhazsKKysJICBjYXNlIEdFVToKKysJICAg IG5ld19jb2RlID0gR1RVOworKwkgICAgYnJlYWs7CisgCistCSAgICAgIGNhc2UgTEVVOgorLQkJ bmV3X2NvZGUgPSBMVFU7CistCQlicmVhazsKKysJICBjYXNlIExFOgorKwkgICAgbmV3X2NvZGUg PSBMVDsKKysJICAgIGJyZWFrOworIAorLQkgICAgICBkZWZhdWx0OgorLQkJZ2NjX3VucmVhY2hh YmxlICgpOworLQkgICAgICB9CisrCSAgY2FzZSBMRVU6CisrCSAgICBuZXdfY29kZSA9IExUVTsK KysJICAgIGJyZWFrOworIAorLQkgICAgY19ydHggPSByczYwMDBfZW1pdF92ZWN0b3JfY29tcGFy ZSAobmV3X2NvZGUsCistCQkJCQkJb3AwLCBvcDEsIGRlc3RfbW9kZSk7CistCSAgICBlcV9ydHgg PSByczYwMDBfZW1pdF92ZWN0b3JfY29tcGFyZSAoRVEsIG9wMCwgb3AxLAorLQkJCQkJCSBkZXN0 X21vZGUpOworLQorLQkgICAgaW9yX2NvZGUgPSBvcHRhYl9oYW5kbGVyIChpb3Jfb3B0YWIsIChp bnQpZGVzdF9tb2RlKS0+aW5zbl9jb2RlOworLQkgICAgZ2NjX2Fzc2VydCAoaW9yX2NvZGUgIT0g Q09ERV9GT1Jfbm90aGluZyk7CistCSAgICBlbWl0X2luc24gKEdFTl9GQ04gKGlvcl9jb2RlKSAo bWFzaywgY19ydHgsIGVxX3J0eCkpOworLQkgICAgaWYgKGRtb2RlICE9IGRlc3RfbW9kZSkKKy0J ICAgICAgeworLQkJcnR4IHRlbXAgPSBnZW5fcmVnX3J0eCAoZGVzdF9tb2RlKTsKKy0JCWNvbnZl cnRfbW92ZSAodGVtcCwgbWFzaywgMCk7CistCQlyZXR1cm4gdGVtcDsKKy0JICAgICAgfQorLQkg ICAgcmV0dXJuIG1hc2s7CisrCSAgZGVmYXVsdDoKKysJICAgIGdjY191bnJlYWNoYWJsZSAoKTsK KyAJICB9CistCSAgYnJlYWs7CistCWRlZmF1bHQ6CistCSAgZ2NjX3VucmVhY2hhYmxlICgpOwor LQl9CisgCistICAgICAgaWYgKHRyeV9hZ2FpbikKKy0JeworLQkgIHZlY19jbXBfaW5zbiA9IGdl dF92ZWNfY21wX2luc24gKHJjb2RlLCBkZXN0X21vZGUsIG9wX21vZGUpOworLQkgIC8qIFlvdSBv bmx5IGdldCB0d28gY2hhbmNlcy4gICovCistCSAgZ2NjX2Fzc2VydCAodmVjX2NtcF9pbnNuICE9 IElOU05fTk9UX0FWQUlMQUJMRSk7CistCX0KKysJY19ydHggPSByczYwMDBfZW1pdF92ZWN0b3Jf Y29tcGFyZSAobmV3X2NvZGUsCisrCQkJCQkgICAgb3AwLCBvcDEsIGRtb2RlKTsKKysJZXFfcnR4 ID0gcnM2MDAwX2VtaXRfdmVjdG9yX2NvbXBhcmUgKEVRLCBvcDAsIG9wMSwKKysJCQkJCSAgICAg ZG1vZGUpOworKworKwlpb3JfY29kZSA9IG9wdGFiX2hhbmRsZXIgKGlvcl9vcHRhYiwgKGludClk bW9kZSktPmluc25fY29kZTsKKysJZ2NjX2Fzc2VydCAoaW9yX2NvZGUgIT0gQ09ERV9GT1Jfbm90 aGluZyk7CisrCWVtaXRfaW5zbiAoR0VOX0ZDTiAoaW9yX2NvZGUpIChtYXNrLCBjX3J0eCwgZXFf cnR4KSk7CisrCXJldHVybiBtYXNrOworKyAgICAgIH0KKysgICAgICBicmVhazsKKysgICAgZGVm YXVsdDoKKysgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7CisrICAgIH0KKyAKKysgIGlmICh0cnlf YWdhaW4pCisrICAgIHsKKyAgICAgICBpZiAoc3dhcF9vcGVyYW5kcykKKyAJeworIAkgIHJ0eCB0 bXA7CitAQCAtMTM0ODUsNjkgKzE0MjAzLDIzIEBAIHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb21wYXJl IChlbnVtIHJ0eF9jb2QKKyAJICBvcDAgPSBvcDE7CisgCSAgb3AxID0gdG1wOworIAl9CistICAg IH0KKy0KKy0gIGVtaXRfaW5zbiAoZ2VuX3J0eF9TRVQgKFZPSURtb2RlLCBtYXNrLAorLQkJCSAg Z2VuX3J0eF9VTlNQRUMgKGRlc3RfbW9kZSwKKy0JCQkJCSAgZ2VuX3J0dmVjICgyLCBvcDAsIG9w MSksCistCQkJCQkgIHZlY19jbXBfaW5zbikpKTsKKy0gIGlmIChkbW9kZSAhPSBkZXN0X21vZGUp CistICAgIHsKKy0gICAgICBydHggdGVtcCA9IGdlbl9yZWdfcnR4IChkZXN0X21vZGUpOworLSAg ICAgIGNvbnZlcnRfbW92ZSAodGVtcCwgbWFzaywgMCk7CistICAgICAgcmV0dXJuIHRlbXA7Cist ICAgIH0KKy0gIHJldHVybiBtYXNrOworLX0KKy0KKy0vKiBSZXR1cm4gdmVjdG9yIHNlbGVjdCBp bnN0cnVjdGlvbiBmb3IgTU9ERS4gUmV0dXJuIElOU05fTk9UX0FWQUlMQUJMRSwgaWYKKy0gICB2 YWxpZCBpbnNuIGRvZXNuIGV4aXN0IGZvciBnaXZlbiBtb2RlLiAgKi8KKyAKKy1zdGF0aWMgaW50 CistZ2V0X3ZzZWxfaW5zbiAoZW51bSBtYWNoaW5lX21vZGUgbW9kZSkKKy17CistICBzd2l0Y2gg KG1vZGUpCistICAgIHsKKy0gICAgY2FzZSBWNFNJbW9kZToKKy0gICAgICByZXR1cm4gVU5TUEVD X1ZTRUw0U0k7CistICAgICAgYnJlYWs7CistICAgIGNhc2UgVjRTRm1vZGU6CistICAgICAgcmV0 dXJuIFVOU1BFQ19WU0VMNFNGOworLSAgICAgIGJyZWFrOworLSAgICBjYXNlIFY4SEltb2RlOgor LSAgICAgIHJldHVybiBVTlNQRUNfVlNFTDhISTsKKy0gICAgICBicmVhazsKKy0gICAgY2FzZSBW MTZRSW1vZGU6CistICAgICAgcmV0dXJuIFVOU1BFQ19WU0VMMTZRSTsKKy0gICAgICBicmVhazsK Ky0gICAgZGVmYXVsdDoKKy0gICAgICByZXR1cm4gSU5TTl9OT1RfQVZBSUxBQkxFOworLSAgICAg IGJyZWFrOworKyAgICAgIGlmIChUQVJHRVRfVlNYICYmIFZTWF9WRUNUT1JfTU9ERSAoZG1vZGUp KQorKwl7CisrCSAgcnR4IHZzeCA9IHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb21wYXJlX3ZzeCAocmNv ZGUsIG1hc2ssIG9wMCwgb3AxKTsKKysJICBpZiAodnN4KQorKwkgICAgcmV0dXJuIHZzeDsKKysJ fQorKyAgICAgIGVsc2UgaWYgKFRBUkdFVF9BTFRJVkVDICYmIEFMVElWRUNfVkVDVE9SX01PREUg KGRtb2RlKSkKKysJeworKwkgIHJ0eCBhdiA9IHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb21wYXJlX2Fs dGl2ZWMgKHJjb2RlLCBtYXNrLCBvcDAsIG9wMSk7CisrCSAgaWYgKGF2KQorKwkgICAgcmV0dXJu IGF2OworKwl9CisgICAgIH0KKy0gIHJldHVybiBJTlNOX05PVF9BVkFJTEFCTEU7CistfQorLQor LS8qIEVtaXQgdmVjdG9yIHNlbGVjdCBpbnNuIHdoZXJlIERFU1QgaXMgZGVzdGluYXRpb24gdXNp bmcKKy0gICBvcGVyYW5kcyBPUDEsIE9QMiBhbmQgTUFTSy4gICovCistCistc3RhdGljIHZvaWQK Ky1yczYwMDBfZW1pdF92ZWN0b3Jfc2VsZWN0IChydHggZGVzdCwgcnR4IG9wMSwgcnR4IG9wMiwg cnR4IG1hc2spCisteworLSAgcnR4IHQsIHRlbXA7CistICBlbnVtIG1hY2hpbmVfbW9kZSBkZXN0 X21vZGUgPSBHRVRfTU9ERSAoZGVzdCk7CistICBpbnQgdnNlbF9pbnNuX2luZGV4ICA9IGdldF92 c2VsX2luc24gKEdFVF9NT0RFIChkZXN0KSk7CisgCistICB0ZW1wID0gZ2VuX3JlZ19ydHggKGRl c3RfbW9kZSk7CistCistICAvKiBGb3IgZWFjaCB2ZWN0b3IgZWxlbWVudCwgc2VsZWN0IG9wMSB3 aGVuIG1hc2sgaXMgMSBvdGhlcndpc2UKKy0gICAgIHNlbGVjdCBvcDIuICAqLworLSAgdCA9IGdl bl9ydHhfU0VUIChWT0lEbW9kZSwgdGVtcCwKKy0JCSAgIGdlbl9ydHhfVU5TUEVDIChkZXN0X21v ZGUsCistCQkJCSAgIGdlbl9ydHZlYyAoMywgb3AyLCBvcDEsIG1hc2spLAorLQkJCQkgICB2c2Vs X2luc25faW5kZXgpKTsKKy0gIGVtaXRfaW5zbiAodCk7CistICBlbWl0X21vdmVfaW5zbiAoZGVz dCwgdGVtcCk7CistICByZXR1cm47CisrICAvKiBZb3Ugb25seSBnZXQgdHdvIGNoYW5jZXMuICAq LworKyAgZ2NjX3VucmVhY2hhYmxlICgpOworIH0KKyAKKyAvKiBFbWl0IHZlY3RvciBjb25kaXRp b25hbCBleHByZXNzaW9uLgorQEAgLTEzNTYyLDE1ICsxNDIzNCwyOSBAQCByczYwMDBfZW1pdF92 ZWN0b3JfY29uZF9leHByIChydHggZGVzdCwgCisgICBlbnVtIHJ0eF9jb2RlIHJjb2RlID0gR0VU X0NPREUgKGNvbmQpOworICAgcnR4IG1hc2s7CisgCistICBpZiAoIVRBUkdFVF9BTFRJVkVDKQor KyAgaWYgKCFUQVJHRVRfQUxUSVZFQyAmJiAhVEFSR0VUX1ZTWCkKKyAgICAgcmV0dXJuIDA7Cisg CisgICAvKiBHZXQgdGhlIHZlY3RvciBtYXNrIGZvciB0aGUgZ2l2ZW4gcmVsYXRpb25hbCBvcGVy YXRpb25zLiAgKi8KKyAgIG1hc2sgPSByczYwMDBfZW1pdF92ZWN0b3JfY29tcGFyZSAocmNvZGUs IGNjX29wMCwgY2Nfb3AxLCBkZXN0X21vZGUpOworIAorLSAgcnM2MDAwX2VtaXRfdmVjdG9yX3Nl bGVjdCAoZGVzdCwgb3AxLCBvcDIsIG1hc2spOworKyAgaWYgKCFtYXNrKQorKyAgICByZXR1cm4g MDsKKyAKKy0gIHJldHVybiAxOworKyAgaWYgKChUQVJHRVRfVlNYICYmIFZTWF9WRUNUT1JfTU9W RV9NT0RFIChkZXN0X21vZGUpKQorKyAgICAgIHx8IChUQVJHRVRfQUxUSVZFQyAmJiBBTFRJVkVD X1ZFQ1RPUl9NT0RFIChkZXN0X21vZGUpKSkKKysgICAgeworKyAgICAgIHJ0eCBjb25kMiA9IGdl bl9ydHhfZm10X2VlIChORSwgVk9JRG1vZGUsIG1hc2ssIGNvbnN0MF9ydHgpOworKyAgICAgIGVt aXRfaW5zbiAoZ2VuX3J0eF9TRVQgKFZPSURtb2RlLAorKwkJCSAgICAgIGRlc3QsCisrCQkJICAg ICAgZ2VuX3J0eF9JRl9USEVOX0VMU0UgKGRlc3RfbW9kZSwKKysJCQkJCQkgICAgY29uZDIsCisr CQkJCQkJICAgIG9wMSwKKysJCQkJCQkgICAgb3AyKSkpOworKyAgICAgIHJldHVybiAxOworKyAg ICB9CisrCisrICByZXR1cm4gMDsKKyB9CisgCisgLyogRW1pdCBhIGNvbmRpdGlvbmFsIG1vdmU6 IG1vdmUgVFJVRV9DT05EIHRvIERFU1QgaWYgT1Agb2YgdGhlCitAQCAtMTM3NjYsOCArMTQ0NTIs OCBAQCByczYwMDBfZW1pdF9pbnRfY21vdmUgKHJ0eCBkZXN0LCBydHggb3AsCisgeworICAgcnR4 IGNvbmRpdGlvbl9ydHgsIGNyOworIAorLSAgLyogQWxsIGlzZWwgaW1wbGVtZW50YXRpb25zIHRo dXMgZmFyIGFyZSAzMi1iaXRzLiAgKi8KKy0gIGlmIChHRVRfTU9ERSAocnM2MDAwX2NvbXBhcmVf b3AwKSAhPSBTSW1vZGUpCisrICBpZiAoR0VUX01PREUgKHJzNjAwMF9jb21wYXJlX29wMCkgIT0g U0ltb2RlCisrICAgICAgJiYgKCFUQVJHRVRfUE9XRVJQQzY0IHx8IEdFVF9NT0RFIChyczYwMDBf Y29tcGFyZV9vcDApICE9IERJbW9kZSkpCisgICAgIHJldHVybiAwOworIAorICAgLyogV2Ugc3Rp bGwgaGF2ZSB0byBkbyB0aGUgY29tcGFyZSwgYmVjYXVzZSBpc2VsIGRvZXNuJ3QgZG8gYQorQEAg LTEzNzc2LDEyICsxNDQ2MiwyNCBAQCByczYwMDBfZW1pdF9pbnRfY21vdmUgKHJ0eCBkZXN0LCBy dHggb3AsCisgICBjb25kaXRpb25fcnR4ID0gcnM2MDAwX2dlbmVyYXRlX2NvbXBhcmUgKEdFVF9D T0RFIChvcCkpOworICAgY3IgPSBYRVhQIChjb25kaXRpb25fcnR4LCAwKTsKKyAKKy0gIGlmIChH RVRfTU9ERSAoY3IpID09IENDbW9kZSkKKy0gICAgZW1pdF9pbnNuIChnZW5faXNlbF9zaWduZWQg KGRlc3QsIGNvbmRpdGlvbl9ydHgsCistCQkJCXRydWVfY29uZCwgZmFsc2VfY29uZCwgY3IpKTsK KysgIGlmIChHRVRfTU9ERSAocnM2MDAwX2NvbXBhcmVfb3AwKSA9PSBTSW1vZGUpCisrICAgIHsK KysgICAgICBpZiAoR0VUX01PREUgKGNyKSA9PSBDQ21vZGUpCisrCWVtaXRfaW5zbiAoZ2VuX2lz ZWxfc2lnbmVkX3NpIChkZXN0LCBjb25kaXRpb25fcnR4LAorKwkJCQkgICAgICAgdHJ1ZV9jb25k LCBmYWxzZV9jb25kLCBjcikpOworKyAgICAgIGVsc2UKKysJZW1pdF9pbnNuIChnZW5faXNlbF91 bnNpZ25lZF9zaSAoZGVzdCwgY29uZGl0aW9uX3J0eCwKKysJCQkJCSB0cnVlX2NvbmQsIGZhbHNl X2NvbmQsIGNyKSk7CisrICAgIH0KKyAgIGVsc2UKKy0gICAgZW1pdF9pbnNuIChnZW5faXNlbF91 bnNpZ25lZCAoZGVzdCwgY29uZGl0aW9uX3J0eCwKKy0JCQkJICB0cnVlX2NvbmQsIGZhbHNlX2Nv bmQsIGNyKSk7CisrICAgIHsKKysgICAgICBpZiAoR0VUX01PREUgKGNyKSA9PSBDQ21vZGUpCisr CWVtaXRfaW5zbiAoZ2VuX2lzZWxfc2lnbmVkX2RpIChkZXN0LCBjb25kaXRpb25fcnR4LAorKwkJ CQkgICAgICAgdHJ1ZV9jb25kLCBmYWxzZV9jb25kLCBjcikpOworKyAgICAgIGVsc2UKKysJZW1p dF9pbnNuIChnZW5faXNlbF91bnNpZ25lZF9kaSAoZGVzdCwgY29uZGl0aW9uX3J0eCwKKysJCQkJ CSB0cnVlX2NvbmQsIGZhbHNlX2NvbmQsIGNyKSk7CisrICAgIH0KKyAKKyAgIHJldHVybiAxOwor IH0KK0BAIC0xMzgwOCw2ICsxNDUwNiwxNSBAQCByczYwMDBfZW1pdF9taW5tYXggKHJ0eCBkZXN0 LCBlbnVtIHJ0eF9jCisgICBlbnVtIHJ0eF9jb2RlIGM7CisgICBydHggdGFyZ2V0OworIAorKyAg LyogVlNYL2FsdGl2ZWMgaGF2ZSBkaXJlY3QgbWluL21heCBpbnNucy4gICovCisrICBpZiAoKGNv ZGUgPT0gU01BWCB8fCBjb2RlID09IFNNSU4pICYmIFZFQ1RPUl9VTklUX0FMVElWRUNfT1JfVlNY X1AgKG1vZGUpKQorKyAgICB7CisrICAgICAgZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAoVk9JRG1v ZGUsCisrCQkJICAgICAgZGVzdCwKKysJCQkgICAgICBnZW5fcnR4X2ZtdF9lZSAoY29kZSwgbW9k ZSwgb3AwLCBvcDEpKSk7CisrICAgICAgcmV0dXJuOworKyAgICB9CisrCisgICBpZiAoY29kZSA9 PSBTTUFYIHx8IGNvZGUgPT0gU01JTikKKyAgICAgYyA9IEdFOworICAgZWxzZQorQEAgLTE1Nzg1 LDYgKzE2NDkyLDcgQEAgZW1pdF9mcmFtZV9zYXZlIChydHggZnJhbWVfcmVnLCBydHggZnJhbQor IAorICAgLyogU29tZSBjYXNlcyB0aGF0IG5lZWQgcmVnaXN0ZXIgaW5kZXhlZCBhZGRyZXNzaW5n LiAgKi8KKyAgIGlmICgoVEFSR0VUX0FMVElWRUNfQUJJICYmIEFMVElWRUNfVkVDVE9SX01PREUg KG1vZGUpKQorKyAgICAgIHx8IChUQVJHRVRfVlNYICYmIFZTWF9WRUNUT1JfTU9ERSAobW9kZSkp CisgICAgICAgfHwgKFRBUkdFVF9FNTAwX0RPVUJMRSAmJiBtb2RlID09IERGbW9kZSkKKyAgICAg ICB8fCAoVEFSR0VUX1NQRV9BQkkKKyAJICAmJiBTUEVfVkVDVE9SX01PREUgKG1vZGUpCitAQCAt MTkzMjAsNiArMjAwMjgsNyBAQCByczYwMDBfaXNzdWVfcmF0ZSAodm9pZCkKKyAgIGNhc2UgQ1BV X1BPV0VSNDoKKyAgIGNhc2UgQ1BVX1BPV0VSNToKKyAgIGNhc2UgQ1BVX1BPV0VSNjoKKysgIGNh c2UgQ1BVX1BPV0VSNzoKKyAgICAgcmV0dXJuIDU7CisgICBkZWZhdWx0OgorICAgICByZXR1cm4g MTsKK0BAIC0xOTkyMSw2ICsyMDYzMCw0MSBAQCBpbnNuX211c3RfYmVfZmlyc3RfaW5fZ3JvdXAg KHJ0eCBpbnNuKQorICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KKyAgICAgICBicmVhazsK KysgICAgY2FzZSBQUk9DRVNTT1JfUE9XRVI3OgorKyAgICAgIHR5cGUgPSBnZXRfYXR0cl90eXBl IChpbnNuKTsKKysKKysgICAgICBzd2l0Y2ggKHR5cGUpCisrICAgICAgICB7CisrICAgICAgICBj YXNlIFRZUEVfQ1JfTE9HSUNBTDoKKysgICAgICAgIGNhc2UgVFlQRV9NRkNSOgorKyAgICAgICAg Y2FzZSBUWVBFX01GQ1JGOgorKyAgICAgICAgY2FzZSBUWVBFX01UQ1I6CisrICAgICAgICBjYXNl IFRZUEVfSURJVjoKKysgICAgICAgIGNhc2UgVFlQRV9MRElWOgorKyAgICAgICAgY2FzZSBUWVBF X0NPTVBBUkU6CisrICAgICAgICBjYXNlIFRZUEVfREVMQVlFRF9DT01QQVJFOgorKyAgICAgICAg Y2FzZSBUWVBFX1ZBUl9ERUxBWUVEX0NPTVBBUkU6CisrICAgICAgICBjYXNlIFRZUEVfSVNZTkM6 CisrICAgICAgICBjYXNlIFRZUEVfTE9BRF9MOgorKyAgICAgICAgY2FzZSBUWVBFX1NUT1JFX0M6 CisrICAgICAgICBjYXNlIFRZUEVfTE9BRF9VOgorKyAgICAgICAgY2FzZSBUWVBFX0xPQURfVVg6 CisrICAgICAgICBjYXNlIFRZUEVfTE9BRF9FWFQ6CisrICAgICAgICBjYXNlIFRZUEVfTE9BRF9F WFRfVToKKysgICAgICAgIGNhc2UgVFlQRV9MT0FEX0VYVF9VWDoKKysgICAgICAgIGNhc2UgVFlQ RV9TVE9SRV9VOgorKyAgICAgICAgY2FzZSBUWVBFX1NUT1JFX1VYOgorKyAgICAgICAgY2FzZSBU WVBFX0ZQTE9BRF9VOgorKyAgICAgICAgY2FzZSBUWVBFX0ZQTE9BRF9VWDoKKysgICAgICAgIGNh c2UgVFlQRV9GUFNUT1JFX1U6CisrICAgICAgICBjYXNlIFRZUEVfRlBTVE9SRV9VWDoKKysgICAg ICAgIGNhc2UgVFlQRV9NRkpNUFI6CisrICAgICAgICBjYXNlIFRZUEVfTVRKTVBSOgorKyAgICAg ICAgICByZXR1cm4gdHJ1ZTsKKysgICAgICAgIGRlZmF1bHQ6CisrICAgICAgICAgIGJyZWFrOwor KyAgICAgICAgfQorKyAgICAgIGJyZWFrOworICAgICBkZWZhdWx0OgorICAgICAgIGJyZWFrOwor ICAgICB9CitAQCAtMTk5ODIsNiArMjA3MjYsMjMgQEAgaW5zbl9tdXN0X2JlX2xhc3RfaW5fZ3Jv dXAgKHJ0eCBpbnNuKQorICAgICAgICAgYnJlYWs7CisgICAgIH0KKyAgICAgYnJlYWs7CisrICBj YXNlIFBST0NFU1NPUl9QT1dFUjc6CisrICAgIHR5cGUgPSBnZXRfYXR0cl90eXBlIChpbnNuKTsK KysKKysgICAgc3dpdGNoICh0eXBlKQorKyAgICAgIHsKKysgICAgICBjYXNlIFRZUEVfSVNZTkM6 CisrICAgICAgY2FzZSBUWVBFX1NZTkM6CisrICAgICAgY2FzZSBUWVBFX0xPQURfTDoKKysgICAg ICBjYXNlIFRZUEVfU1RPUkVfQzoKKysgICAgICBjYXNlIFRZUEVfTE9BRF9FWFRfVToKKysgICAg ICBjYXNlIFRZUEVfTE9BRF9FWFRfVVg6CisrICAgICAgY2FzZSBUWVBFX1NUT1JFX1VYOgorKyAg ICAgICAgcmV0dXJuIHRydWU7CisrICAgICAgZGVmYXVsdDoKKysgICAgICAgIGJyZWFrOworKyAg ICB9CisrICAgIGJyZWFrOworICAgZGVmYXVsdDoKKyAgICAgYnJlYWs7CisgICB9CitAQCAtMjA1 NTQsOCArMjEzMTUsOCBAQCByczYwMDBfaGFuZGxlX2FsdGl2ZWNfYXR0cmlidXRlICh0cmVlICpu CisgICBlbHNlIGlmICh0eXBlID09IGxvbmdfbG9uZ191bnNpZ25lZF90eXBlX25vZGUKKyAgICAg ICAgICAgIHx8IHR5cGUgPT0gbG9uZ19sb25nX2ludGVnZXJfdHlwZV9ub2RlKQorICAgICBlcnJv ciAoInVzZSBvZiAlPGxvbmcgbG9uZyU+IGluIEFsdGlWZWMgdHlwZXMgaXMgaW52YWxpZCIpOwor LSAgZWxzZSBpZiAodHlwZSA9PSBkb3VibGVfdHlwZV9ub2RlKQorLSAgICBlcnJvciAoInVzZSBv ZiAlPGRvdWJsZSU+IGluIEFsdGlWZWMgdHlwZXMgaXMgaW52YWxpZCIpOworKyAgZWxzZSBpZiAo dHlwZSA9PSBkb3VibGVfdHlwZV9ub2RlICYmICFUQVJHRVRfVlNYKQorKyAgICBlcnJvciAoInVz ZSBvZiAlPGRvdWJsZSU+IGluIEFsdGlWZWMgdHlwZXMgaXMgaW52YWxpZCB3aXRob3V0IC1tdnN4 Iik7CisgICBlbHNlIGlmICh0eXBlID09IGxvbmdfZG91YmxlX3R5cGVfbm9kZSkKKyAgICAgZXJy b3IgKCJ1c2Ugb2YgJTxsb25nIGRvdWJsZSU+IGluIEFsdGlWZWMgdHlwZXMgaXMgaW52YWxpZCIp OworICAgZWxzZSBpZiAodHlwZSA9PSBib29sZWFuX3R5cGVfbm9kZSkKK0BAIC0yMDU4MSw2ICsy MTM0Miw3IEBAIHJzNjAwMF9oYW5kbGVfYWx0aXZlY19hdHRyaWJ1dGUgKHRyZWUgKm4KKyAJICBy ZXN1bHQgPSAodW5zaWduZWRfcCA/IHVuc2lnbmVkX1YxNlFJX3R5cGVfbm9kZSA6IFYxNlFJX3R5 cGVfbm9kZSk7CisgCSAgYnJlYWs7CisgCWNhc2UgU0Ztb2RlOiByZXN1bHQgPSBWNFNGX3R5cGVf bm9kZTsgYnJlYWs7CisrCWNhc2UgREZtb2RlOiByZXN1bHQgPSBWMkRGX3R5cGVfbm9kZTsgYnJl YWs7CisgCSAgLyogSWYgdGhlIHVzZXIgc2F5cyAndmVjdG9yIGludCBib29sJywgd2UgbWF5IGJl IGhhbmRlZCB0aGUgJ2Jvb2wnCisgCSAgICAgYXR0cmlidXRlIF9iZWZvcmVfIHRoZSAndmVjdG9y JyBhdHRyaWJ1dGUsIGFuZCBzbyBzZWxlY3QgdGhlCisgCSAgICAgcHJvcGVyIHR5cGUgaW4gdGhl ICdiJyBjYXNlIGJlbG93LiAgKi8KK0BAIC0yMjExNiw3ICsyMjg3OCw3IEBAIHJzNjAwMF9yZWdp c3Rlcl9tb3ZlX2Nvc3QgKGVudW0gbWFjaGluZV8KKyAgICAgICBpZiAoISByZWdfY2xhc3Nlc19p bnRlcnNlY3RfcCAodG8sIEdFTkVSQUxfUkVHUykpCisgCWZyb20gPSB0bzsKKyAKKy0gICAgICBp ZiAoZnJvbSA9PSBGTE9BVF9SRUdTIHx8IGZyb20gPT0gQUxUSVZFQ19SRUdTKQorKyAgICAgIGlm IChmcm9tID09IEZMT0FUX1JFR1MgfHwgZnJvbSA9PSBBTFRJVkVDX1JFR1MgfHwgZnJvbSA9PSBW U1hfUkVHUykKKyAJcmV0dXJuIChyczYwMDBfbWVtb3J5X21vdmVfY29zdCAobW9kZSwgZnJvbSwg MCkKKyAJCSsgcnM2MDAwX21lbW9yeV9tb3ZlX2Nvc3QgKG1vZGUsIEdFTkVSQUxfUkVHUywgMCkp OworIAorQEAgLTIyMTM2LDYgKzIyODk4LDEyIEBAIHJzNjAwMF9yZWdpc3Rlcl9tb3ZlX2Nvc3Qg KGVudW0gbWFjaGluZV8KKyAJcmV0dXJuIDIgKiBoYXJkX3JlZ25vX25yZWdzWzBdW21vZGVdOwor ICAgICB9CisgCisrICAvKiBJZiB3ZSBoYXZlIFZTWCwgd2UgY2FuIGVhc2lseSBtb3ZlIGJldHdl ZW4gRlBSIG9yIEFsdGl2ZWMgcmVnaXN0ZXJzLiAgKi8KKysgIGVsc2UgaWYgKFRBUkdFVF9WU1gK KysJICAgJiYgKChmcm9tID09IFZTWF9SRUdTIHx8IGZyb20gPT0gRkxPQVRfUkVHUyB8fCBmcm9t ID09IEFMVElWRUNfUkVHUykKKysJICAgICAgIHx8ICh0byA9PSBWU1hfUkVHUyB8fCB0byA9PSBG TE9BVF9SRUdTIHx8IHRvID09IEFMVElWRUNfUkVHUykpKQorKyAgICByZXR1cm4gMjsKKysKKyAg IC8qIE1vdmluZyBiZXR3ZWVuIHR3byBzaW1pbGFyIHJlZ2lzdGVycyBpcyBqdXN0IG9uZSBpbnN0 cnVjdGlvbi4gICovCisgICBlbHNlIGlmIChyZWdfY2xhc3Nlc19pbnRlcnNlY3RfcCAodG8sIGZy b20pKQorICAgICByZXR1cm4gKG1vZGUgPT0gVEZtb2RlIHx8IG1vZGUgPT0gVERtb2RlKSA/IDQg OiAyOworQEAgLTIyMzc2LDggKzIzMTQ0LDggQEAgcnM2MDAwX2VtaXRfc3dyc3FydHNmIChydHgg ZHN0LCBydHggc3JjKQorICAgZW1pdF9sYWJlbCAoWEVYUCAobGFiZWwsIDApKTsKKyB9CisgCist LyogRW1pdCBwb3Bjb3VudCBpbnRyaW5zaWMgb24gVEFSR0VUX1BPUENOVEIgdGFyZ2V0cy4gIERT VCBpcyB0aGUKKy0gICB0YXJnZXQsIGFuZCBTUkMgaXMgdGhlIGFyZ3VtZW50IG9wZXJhbmQuICAq LworKy8qIEVtaXQgcG9wY291bnQgaW50cmluc2ljIG9uIFRBUkdFVF9QT1BDTlRCIChQb3dlcjUp IGFuZCBUQVJHRVRfUE9QQ05URAorKyAgIChQb3dlcjcpIHRhcmdldHMuICBEU1QgaXMgdGhlIHRh cmdldCwgYW5kIFNSQyBpcyB0aGUgYXJndW1lbnQgb3BlcmFuZC4gICovCisgCisgdm9pZAorIHJz NjAwMF9lbWl0X3BvcGNvdW50IChydHggZHN0LCBydHggc3JjKQorQEAgLTIyMzg1LDYgKzIzMTUz LDE2IEBAIHJzNjAwMF9lbWl0X3BvcGNvdW50IChydHggZHN0LCBydHggc3JjKQorICAgZW51bSBt YWNoaW5lX21vZGUgbW9kZSA9IEdFVF9NT0RFIChkc3QpOworICAgcnR4IHRtcDEsIHRtcDI7Cisg CisrICAvKiBVc2UgdGhlIFBQQyBJU0EgMi4wNiBwb3BjbnR7dyxkfSBpbnN0cnVjdGlvbiBpZiB3 ZSBjYW4uICAqLworKyAgaWYgKFRBUkdFVF9QT1BDTlREKQorKyAgICB7CisrICAgICAgaWYgKG1v ZGUgPT0gU0ltb2RlKQorKwllbWl0X2luc24gKGdlbl9wb3BjbnR3c2kyIChkc3QsIHNyYykpOwor KyAgICAgIGVsc2UKKysJZW1pdF9pbnNuIChnZW5fcG9wY250ZGRpMiAoZHN0LCBzcmMpKTsKKysg ICAgICByZXR1cm47CisrICAgIH0KKysKKyAgIHRtcDEgPSBnZW5fcmVnX3J0eCAobW9kZSk7Cisg CisgICBpZiAobW9kZSA9PSBTSW1vZGUpCitAQCAtMjI3OTcsNyArMjM1NzUsNyBAQCByczYwMDBf dmVjdG9yX21vZGVfc3VwcG9ydGVkX3AgKGVudW0gbWFjCisgICBpZiAoVEFSR0VUX1NQRSAmJiBT UEVfVkVDVE9SX01PREUgKG1vZGUpKQorICAgICByZXR1cm4gdHJ1ZTsKKyAKKy0gIGVsc2UgaWYg KFRBUkdFVF9BTFRJVkVDICYmIEFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUpKQorKyAgZWxzZSBp ZiAoVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAobW9kZSkpCisgICAgIHJldHVybiB0cnVl OworIAorICAgZWxzZQorLS0tIGdjYy9jb25maWcvcnM2MDAwL3ZzeC5tZAkoLi4uL3RydW5rKQko cmV2aXNpb24gMCkKKysrKyBnY2MvY29uZmlnL3JzNjAwMC92c3gubWQJKC4uLi9icmFuY2hlcy9p Ym0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ0NjkyKQorQEAgLTAsMCArMSw4NjQgQEAK Kys7OyBWU1ggcGF0dGVybnMuCisrOzsgQ29weXJpZ2h0IChDKSAyMDA5CisrOzsgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrOzsgQ29udHJpYnV0ZWQgYnkgTWljaGFlbCBNZWlzc25l ciA8bWVpc3NuZXJAbGludXgudm5ldC5pYm0uY29tPgorKworKzs7IFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIEdDQy4KKysKKys7OyBHQ0MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorKzs7IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisrOzsgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIKKys7OyBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKworKzs7IEdDQyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorKzs7IEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQorKzs7 IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMKKys7OyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrOzsgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK Kys7OyBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQor Kzs7IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKys7OyBJdGVyYXRvciBmb3Ig dmVjdG9yIGZsb2F0aW5nIHBvaW50IHR5cGVzIHN1cHBvcnRlZCBieSBWU1gKKysoZGVmaW5lX21v ZGVfaXRlcmF0b3IgVlNYX0YgW1Y0U0YgVjJERl0pCisrCisrOzsgSXRlcmF0b3IgZm9yIGxvZ2lj YWwgdHlwZXMgc3VwcG9ydGVkIGJ5IFZTWAorKyhkZWZpbmVfbW9kZV9pdGVyYXRvciBWU1hfTCBb VjE2UUkgVjhISSBWNFNJIFYyREkgVjRTRiBWMkRGIFRJXSkKKysKKys7OyBNYXAgaW50byB0aGUg YXBwcm9wcmlhdGUgbG9hZC9zdG9yZSBuYW1lIGJhc2VkIG9uIHRoZSB0eXBlCisrKGRlZmluZV9t b2RlX2F0dHIgVlNtICBbKFYxNlFJICJ2dzQiKQorKwkJCShWOEhJICAidnc0IikKKysJCQkoVjRT SSAgInZ3NCIpCisrCQkJKFY0U0YgICJ2dzQiKQorKwkJCShWMkRGICAidmQyIikKKysJCQkoVjJE SSAgInZkMiIpCisrCQkJKFRJICAgICJ2dzQiKV0pCisrCisrOzsgTWFwIGludG8gdGhlIGFwcHJv cHJpYXRlIHN1ZmZpeCBiYXNlZCBvbiB0aGUgdHlwZQorKyhkZWZpbmVfbW9kZV9hdHRyIFZTcwlb KFYxNlFJICJzcCIpCisrCQkJIChWOEhJICAic3AiKQorKwkJCSAoVjRTSSAgInNwIikKKysJCQkg KFY0U0YgICJzcCIpCisrCQkJIChWMkRGICAiZHAiKQorKwkJCSAoVjJESSAgImRwIikKKysJCQkg KFRJICAgICJzcCIpXSkKKysKKys7OyBNYXAgaW50byB0aGUgcmVnaXN0ZXIgY2xhc3MgdXNlZAor KyhkZWZpbmVfbW9kZV9hdHRyIFZTcglbKFYxNlFJICJ2IikKKysJCQkgKFY4SEkgICJ2IikKKysJ CQkgKFY0U0kgICJ2IikKKysJCQkgKFY0U0YgICJ3ZiIpCisrCQkJIChWMkRJICAid2QiKQorKwkJ CSAoVjJERiAgIndkIikKKysJCQkgKFRJICAgICJ3ZCIpXSkKKysKKys7OyBTYW1lIHNpemUgaW50 ZWdlciB0eXBlIGZvciBmbG9hdGluZyBwb2ludCBkYXRhCisrKGRlZmluZV9tb2RlX2F0dHIgVlNp IFsoVjRTRiAgInY0c2kiKQorKwkJICAgICAgIChWMkRGICAidjJkaSIpXSkKKysKKysoZGVmaW5l X21vZGVfYXR0ciBWU0kgWyhWNFNGICAiVjRTSSIpCisrCQkgICAgICAgKFYyREYgICJWMkRJIild KQorKworKzs7IFdvcmQgc2l6ZSBmb3Igc2FtZSBzaXplIGNvbnZlcnNpb24KKysoZGVmaW5lX21v ZGVfYXR0ciBWU2MgWyhWNFNGICJ3IikKKysJCSAgICAgICAoVjJERiAiZCIpXSkKKysKKys7OyBC aXRzaXplIGZvciBERiBsb2FkIHdpdGggdXBkYXRlCisrKGRlZmluZV9tb2RlX2F0dHIgVlNiaXQg WyhTSSAiMzIiKQorKwkJCSAoREkgIjY0IildKQorKworKyhkZWZpbmVfY29uc3RhbnRzCisrICBb KFVOU1BFQ19WU1hfQ09OQ0FUX1YyREYJNTAwKV0pCisrCisrOzsgVlNYIG1vdmVzCisrKGRlZmlu ZV9pbnNuICIqdnN4X21vdjxtb2RlPiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9MIDAg Im5vbmltbWVkaWF0ZV9vcGVyYW5kIiAiPVosPFZTcj4sPFZTcj4sP1osP3dhLD93YSwqbywqciwq ciw8VlNyPiw/d2EsdiIpCisrCShtYXRjaF9vcGVyYW5kOlZTWF9MIDEgImlucHV0X29wZXJhbmQi ICI8VlNyPixaLDxWU3I+LHdhLFosd2EscixvLHIsaixqLFciKSldCisrICAiVkVDVE9SX01FTV9W U1hfUCAoPE1PREU+bW9kZSkKKysgICAmJiAocmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNbMF0s IDxNT0RFPm1vZGUpIAorKyAgICAgICB8fCByZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1sxXSwg PE1PREU+bW9kZSkpIgorK3sKKysgIHN3aXRjaCAod2hpY2hfYWx0ZXJuYXRpdmUpCisrICAgIHsK KysgICAgY2FzZSAwOgorKyAgICBjYXNlIDM6CisrICAgICAgcmV0dXJuICJzdHg8VlNtPiVVMHgg JXgxLCV5MCI7CisrCisrICAgIGNhc2UgMToKKysgICAgY2FzZSA0OgorKyAgICAgIHJldHVybiAi bHg8VlNtPiVVMHggJXgwLCV5MSI7CisrCisrICAgIGNhc2UgMjoKKysgICAgY2FzZSA1OgorKyAg ICAgIHJldHVybiAieHZtb3Y8VlNzPiAleDAsJXgxIjsKKysKKysgICAgY2FzZSA2OgorKyAgICBj YXNlIDc6CisrICAgIGNhc2UgODoKKysgICAgICByZXR1cm4gIiMiOworKworKyAgICBjYXNlIDk6 CisrICAgIGNhc2UgMTA6CisrICAgICAgcmV0dXJuICJ4eGx4b3IgJXgwLCV4MCwleDAiOworKwor KyAgICBjYXNlIDExOgorKyAgICAgIHJldHVybiBvdXRwdXRfdmVjX2NvbnN0X21vdmUgKG9wZXJh bmRzKTsKKysKKysgICAgZGVmYXVsdDoKKysgICAgICBnY2NfdW5yZWFjaGFibGUgKCk7CisrICAg IH0KKyt9CisrICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc3RvcmUsdmVjbG9hZCx2ZWNzaW1wbGUs dmVjc3RvcmUsdmVjbG9hZCx2ZWNzaW1wbGUsc3RvcmUsbG9hZCwqLHZlY3NpbXBsZSx2ZWNzaW1w bGUsKiIpXSkKKysKKys7OyBMb2FkL3N0b3JlIHdpdGggdXBkYXRlCisrOzsgRGVmaW5lIGluc25z IHRoYXQgZG8gbG9hZCBvciBzdG9yZSB3aXRoIHVwZGF0ZS4gIEJlY2F1c2UgVlNYIG9ubHkgaGFz CisrOzsgcmVnK3JlZyBhZGRyZXNzaW5nLCBwcmUtZGVjcmVtZW50IG9yIHByZS1pbnJlbWVudCBp cyB1bmxpa2VseSB0byBiZQorKzs7IGdlbmVyYXRlZC4KKys7OworKzs7IEluIGFsbCB0aGVzZSBj YXNlcywgd2UgdXNlIG9wZXJhbmRzIDAgYW5kIDEgZm9yIHRoZSByZWdpc3RlciBiZWluZworKzs7 IGluY3JlbWVudGVkIGJlY2F1c2UgdGhvc2UgYXJlIHRoZSBvcGVyYW5kcyB0aGF0IGxvY2FsLWFs bG9jIHdpbGwKKys7OyB0aWUgYW5kIHRoZXNlIGFyZSB0aGUgcGFpciBtb3N0IGxpa2VseSB0byBi ZSB0aWVhYmxlIChhbmQgdGhlIG9uZXMKKys7OyB0aGF0IHdpbGwgYmVuZWZpdCB0aGUgbW9zdCku CisrCisrKGRlZmluZV9pbnNuICIqdnN4X2xvYWQ8bW9kZT5fdXBkYXRlNjQiCisrICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpWU1hfTCAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw/d2Ei KQorKwkobWVtOlZTWF9MIChwbHVzOkRJIChtYXRjaF9vcGVyYW5kOkRJIDEgImdwY19yZWdfb3Bl cmFuZCIgIjAsMCIpCisrCQkJICAgIChtYXRjaF9vcGVyYW5kOkRJIDIgImdwY19yZWdfb3BlcmFu ZCIgInIsciIpKSkpCisrICAgKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJncGNfcmVnX29wZXJh bmQiICI9YixiIikKKysJKHBsdXM6REkgKG1hdGNoX2R1cCAxKQorKwkJIChtYXRjaF9kdXAgMikp KV0KKysgICJUQVJHRVRfNjRCSVQgJiYgVEFSR0VUX1VQREFURSAmJiBWRUNUT1JfTUVNX1ZTWF9Q ICg8TU9ERT5tb2RlKSIKKysgICJseDxWU20+dXggJXgzLCUwLCUyIgorKyAgWyhzZXRfYXR0ciAi dHlwZSIgInZlY2xvYWQiKV0pCisrCisrKGRlZmluZV9pbnNuICIqdnN4X2xvYWQ8bW9kZT5fdXBk YXRlMzIiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfTCAzICJ2c3hfcmVnaXN0ZXJfb3Bl cmFuZCIgIj08VlNyPiw/d2EiKQorKwkobWVtOlZTWF9MIChwbHVzOlNJIChtYXRjaF9vcGVyYW5k OlNJIDEgImdwY19yZWdfb3BlcmFuZCIgIjAsMCIpCisrCQkJICAgIChtYXRjaF9vcGVyYW5kOlNJ IDIgImdwY19yZWdfb3BlcmFuZCIgInIsciIpKSkpCisrICAgKHNldCAobWF0Y2hfb3BlcmFuZDpT SSAwICJncGNfcmVnX29wZXJhbmQiICI9YixiIikKKysJKHBsdXM6U0kgKG1hdGNoX2R1cCAxKQor KwkJIChtYXRjaF9kdXAgMikpKV0KKysgICJUQVJHRVRfMzJCSVQgJiYgVEFSR0VUX1VQREFURSAm JiBWRUNUT1JfTUVNX1ZTWF9QICg8TU9ERT5tb2RlKSIKKysgICJseDxWU20+dXggJXgzLCUwLCUy IgorKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2xvYWQiKV0pCisrCisrKGRlZmluZV9pbnNuICIq dnN4X3N0b3JlPG1vZGU+X3VwZGF0ZTY0IgorKyAgWyhzZXQgKG1lbTpWU1hfTCAocGx1czpESSAo bWF0Y2hfb3BlcmFuZDpESSAxICJncGNfcmVnX29wZXJhbmQiICIwLDAiKQorKwkJCSAgICAobWF0 Y2hfb3BlcmFuZDpESSAyICJncGNfcmVnX29wZXJhbmQiICJyLHIiKSkpCisrCShtYXRjaF9vcGVy YW5kOlZTWF9MIDMgImdwY19yZWdfb3BlcmFuZCIgIjxWU3I+LD93YSIpKQorKyAgIChzZXQgKG1h dGNoX29wZXJhbmQ6REkgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWIsYiIpCisrCShwbHVzOkRJICht YXRjaF9kdXAgMSkKKysJCSAobWF0Y2hfZHVwIDIpKSldCisrICAiVEFSR0VUXzY0QklUICYmIFRB UkdFVF9VUERBVEUgJiYgVkVDVE9SX01FTV9WU1hfUCAoPE1PREU+bW9kZSkiCisrICAic3R4PFZT bT51eCAleDMsJTAsJTEiCisrICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc3RvcmUiKV0pCisrCisr KGRlZmluZV9pbnNuICIqdnN4X3N0b3JlPG1vZGU+X3VwZGF0ZTMyIgorKyAgWyhzZXQgKG1lbTpW U1hfTCAocGx1czpTSSAobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICIwLDAi KQorKwkJCSAgICAobWF0Y2hfb3BlcmFuZDpTSSAyICJncGNfcmVnX29wZXJhbmQiICJyLHIiKSkp CisrCShtYXRjaF9vcGVyYW5kOlZTWF9MIDMgImdwY19yZWdfb3BlcmFuZCIgIjxWU3I+LD93YSIp KQorKyAgIChzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWIsYiIp CisrCShwbHVzOlNJIChtYXRjaF9kdXAgMSkKKysJCSAobWF0Y2hfZHVwIDIpKSldCisrICAiVEFS R0VUXzMyQklUICYmIFRBUkdFVF9VUERBVEUgJiYgVkVDVE9SX01FTV9WU1hfUCAoPE1PREU+bW9k ZSkiCisrICAic3R4PFZTbT51eCAleDMsJTAsJTEiCisrICBbKHNldF9hdHRyICJ0eXBlIiAidmVj c3RvcmUiKV0pCisrCisrKGRlZmluZV9pbnNuICIqdnN4X2xvYWRkZl91cGRhdGU8VlNiaXQ+Igor KyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMyAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d3Ms P3dhIikKKysJKG1lbTpERiAocGx1czpQIChtYXRjaF9vcGVyYW5kOlAgMSAiZ3BjX3JlZ19vcGVy YW5kIiAiMCwwIikKKysJCQkobWF0Y2hfb3BlcmFuZDpQIDIgImdwY19yZWdfb3BlcmFuZCIgInIs ciIpKSkpCisrICAgKHNldCAobWF0Y2hfb3BlcmFuZDpQIDAgImdwY19yZWdfb3BlcmFuZCIgIj1i LGIiKQorKwkocGx1czpQIChtYXRjaF9kdXAgMSkKKysJCShtYXRjaF9kdXAgMikpKV0KKysgICJU QVJHRVRfPFZTYml0PkJJVCAmJiBUQVJHRVRfVVBEQVRFICYmIFZFQ1RPUl9NRU1fVlNYX1AgKERG bW9kZSkiCisrICAibHhzZHV4ICV4MywlMCwlMiIKKysgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNs b2FkIildKQorKworKyhkZWZpbmVfaW5zbiAiKnZzeF9zdG9yZWRmX3VwZGF0ZTxWU2JpdD4iCisr ICBbKHNldCAobWVtOkRGIChwbHVzOlAgKG1hdGNoX29wZXJhbmQ6UCAxICJncGNfcmVnX29wZXJh bmQiICIwLDAiKQorKwkJCShtYXRjaF9vcGVyYW5kOlAgMiAiZ3BjX3JlZ19vcGVyYW5kIiAicixy IikpKQorKwkobWF0Y2hfb3BlcmFuZDpERiAzICJncGNfcmVnX29wZXJhbmQiICJ3cyw/d2EiKSkK KysgICAoc2V0IChtYXRjaF9vcGVyYW5kOlAgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWIsYiIpCisr CShwbHVzOlAgKG1hdGNoX2R1cCAxKQorKwkJKG1hdGNoX2R1cCAyKSkpXQorKyAgIlRBUkdFVF88 VlNiaXQ+QklUICYmIFRBUkdFVF9VUERBVEUgJiYgVkVDVE9SX01FTV9WU1hfUCAoREZtb2RlKSIK KysgICJzdHhzZHV4ICV4MywlMCwlMSIKKysgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzdG9yZSIp XSkKKysKKys7OyBXZSBtYXkgbmVlZCB0byBoYXZlIGEgdmFyaWVudCBvbiB0aGUgcGF0dGVybiBm b3IgdXNlIGluIHRoZSBwcm9sb2d1ZQorKzs7IHRoYXQgZG9lc24ndCBkZXBlbmQgb24gVEFSR0VU X1VQREFURS4KKysKKysMCisrOzsgVlNYIHZlY3RvciBmbG9hdGluZyBwb2ludCBhcml0aG1ldGlj IGluc3RydWN0aW9ucworKyhkZWZpbmVfaW5zbiAiKnZzeF9hZGQ8bW9kZT4zIgorKyAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6VlNYX0YgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9PFZTcj4iKQor KyAgICAgICAgKHBsdXM6VlNYX0YgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMSAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICI8VlNyPiIpCisrCQkgICAgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMiAidnN4X3Jl Z2lzdGVyX29wZXJhbmQiICI8VlNyPiIpKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RF Pm1vZGUpIgorKyAgInh2YWRkPFZTcz4gJXgwLCV4MSwleDIiCisrICBbKHNldF9hdHRyICJ0eXBl IiAidmVjZmxvYXQiKV0pCisrCisrKGRlZmluZV9pbnNuICIqdnN4X3N1Yjxtb2RlPjMiCisrICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfRiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNy PiIpCisrICAgICAgICAobWludXM6VlNYX0YgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMSAidnN4X3Jl Z2lzdGVyX29wZXJhbmQiICI8VlNyPiIpCisrCQkgICAgIChtYXRjaF9vcGVyYW5kOlZTWF9GIDIg InZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4iKSkpXQorKyAgIlZFQ1RPUl9VTklUX1ZTWF9Q ICg8TU9ERT5tb2RlKSIKKysgICJ4dnN1YjxWU3M+ICV4MCwleDEsJXgyIgorKyAgWyhzZXRfYXR0 ciAidHlwZSIgInZlY2Zsb2F0IildKQorKworKyhkZWZpbmVfaW5zbiAiKnZzeF9tdWw8bW9kZT4z IgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQi ICI9PFZTcj4iKQorKyAgICAgICAgKG11bHQ6VlNYX0YgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMSAi dnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiIpCisrCQkgICAgKG1hdGNoX29wZXJhbmQ6VlNY X0YgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiIpKSldCisrICAiVkVDVE9SX1VOSVRf VlNYX1AgKDxNT0RFPm1vZGUpIgorKyAgInh2bXVsPFZTcz4gJXgwLCV4MSwleDIiCisrICBbKHNl dF9hdHRyICJ0eXBlIiAidmVjZmxvYXQiKV0pCisrCisrKGRlZmluZV9pbnNuICIqdnN4X2Rpdjxt b2RlPjMiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfRiAwICJ2c3hfcmVnaXN0ZXJfb3Bl cmFuZCIgIj08VlNyPiIpCisrICAgICAgICAoZGl2OlZTWF9GIChtYXRjaF9vcGVyYW5kOlZTWF9G IDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4iKQorKwkgCSAgIChtYXRjaF9vcGVyYW5k OlZTWF9GIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4iKSkpXQorKyAgIlZFQ1RPUl9V TklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKKysgICJ4dmRpdjxWU3M+ICV4MCwleDEsJXgyIgorKyAg WyhzZXRfYXR0ciAidHlwZSIgInZlY2ZkaXYiKV0pCisrCisrKGRlZmluZV9pbnNuICIqdnN4X2Zy ZTxtb2RlPjIiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfRiAwICJ2c3hfcmVnaXN0ZXJf b3BlcmFuZCIgIj08VlNyPiIpCisrCSh1bnNwZWM6VlNYX0YgWyhtYXRjaF9vcGVyYW5kOlZTWF9G IDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4iKV0KKysJCSAgICAgIFVOU1BFQ19GUkVT KSldCisrICAiZmxhZ19maW5pdGVfbWF0aF9vbmx5ICYmIFZFQ1RPUl9VTklUX1ZTWF9QICg8TU9E RT5tb2RlKSIKKysgICJ4dnJlPFZTcz4gJXgwLCV4MSIKKysgIFsoc2V0X2F0dHIgInR5cGUiICJm cCIpXSkKKysKKysoZGVmaW5lX2luc24gIip2c3hfbmVnPG1vZGU+MiIKKysgIFsoc2V0IChtYXRj aF9vcGVyYW5kOlZTWF9GIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+IikKKysgICAg ICAgIChuZWc6VlNYX0YgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMSAidnN4X3JlZ2lzdGVyX29wZXJh bmQiICI8VlNyPiIpKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgorKyAg Inh2bmVnPFZTcz4gJXgwLCV4MSIKKysgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNmbG9hdCIpXSkK KysKKysoZGVmaW5lX2luc24gIip2c3hfYWJzPG1vZGU+MiIKKysgIFsoc2V0IChtYXRjaF9vcGVy YW5kOlZTWF9GIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+IikKKysgICAgICAgIChh YnM6VlNYX0YgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8 VlNyPiIpKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgorKyAgInh2YWJz PFZTcz4gJXgwLCV4MSIKKysgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNmbG9hdCIpXSkKKysKKyso ZGVmaW5lX2luc24gIip2c3hfbmFiczxtb2RlPjIiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpW U1hfRiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiIpCisrICAgICAgICAobmVnOlZT WF9GCisrCSAoYWJzOlZTWF9GCisrCSAgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMSAidnN4X3JlZ2lz dGVyX29wZXJhbmQiICI8VlNyPiIpKSkpXQorKyAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5t b2RlKSIKKysgICJ4dm5hYnM8VlNzPiAleDAsJXgxIgorKyAgWyhzZXRfYXR0ciAidHlwZSIgInZl Y2Zsb2F0IildKQorKworKyhkZWZpbmVfaW5zbiAiKnZzeF9zbWF4PG1vZGU+MyIKKysgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlZTWF9GIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+IikK KysgICAgICAgIChzbWF4OlZTWF9GIChtYXRjaF9vcGVyYW5kOlZTWF9GIDEgInZzeF9yZWdpc3Rl cl9vcGVyYW5kIiAiPFZTcj4iKQorKwkJICAgIChtYXRjaF9vcGVyYW5kOlZTWF9GIDIgInZzeF9y ZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4iKSkpXQorKyAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9E RT5tb2RlKSIKKysgICJ4dm1heDxWU3M+ICV4MCwleDEsJXgyIgorKyAgWyhzZXRfYXR0ciAidHlw ZSIgInZlY2NtcCIpXSkKKysKKysoZGVmaW5lX2luc24gIip2c3hfc21pbjxtb2RlPjMiCisrICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfRiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNy PiIpCisrICAgICAgICAoc21pbjpWU1hfRiAobWF0Y2hfb3BlcmFuZDpWU1hfRiAxICJ2c3hfcmVn aXN0ZXJfb3BlcmFuZCIgIjxWU3I+IikKKysJCSAgICAobWF0Y2hfb3BlcmFuZDpWU1hfRiAyICJ2 c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+IikpKV0KKysgICJWRUNUT1JfVU5JVF9WU1hfUCAo PE1PREU+bW9kZSkiCisrICAieHZtaW48VlNzPiAleDAsJXgxLCV4MiIKKysgIFsoc2V0X2F0dHIg InR5cGUiICJ2ZWNjbXAiKV0pCisrCisrKGRlZmluZV9pbnNuICIqdnN4X3NxcnQ8bW9kZT4yIgor KyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9 PFZTcj4iKQorKyAgICAgICAgKHNxcnQ6VlNYX0YgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMSAidnN4 X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiIpKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxN T0RFPm1vZGUpIgorKyAgInh2c3FydDxWU3M+ICV4MCwleDEiCisrICBbKHNldF9hdHRyICJ0eXBl IiAidmVjZmRpdiIpXSkKKysKKys7OyBGdXNlZCB2ZWN0b3IgbXVsdGlwbHkvYWRkIGluc3RydWN0 aW9ucworKyhkZWZpbmVfaW5zbiAiKnZzeF9mbWFkZDxtb2RlPjQiCisrICBbKHNldCAobWF0Y2hf b3BlcmFuZDpWU1hfRiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw8VlNyPiIpCisr CShwbHVzOlZTWF9GCisrCSAobXVsdDpWU1hfRgorKwkgIChtYXRjaF9vcGVyYW5kOlZTWF9GIDEg InZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiJTxWU3I+LDxWU3I+IikKKysJICAobWF0Y2hfb3BlcmFu ZDpWU1hfRiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LDAiKSkKKysJIChtYXRjaF9v cGVyYW5kOlZTWF9GIDMgImdwY19yZWdfb3BlcmFuZCIgIjAsPFZTcj4iKSkpXQorKyAgIlZFQ1RP Ul9VTklUX1ZTWF9QIChERm1vZGUpICYmIFRBUkdFVF9GVVNFRF9NQUREIgorKyAgIkAKKysgICB4 dm1hZGRhPFZTcz4gJXgwLCV4MSwleDIKKysgICB4dm1hZGRtPFZTcz4gJXgwLCV4MSwleDMiCisr ICBbKHNldF9hdHRyICJ0eXBlIiAidmVjZmxvYXQiKV0pCisrCisrKGRlZmluZV9pbnNuICIqdnN4 X2Ztc3ViPG1vZGU+NCIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9GIDAgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAiPTxWU3I+LDxWU3I+IikKKysJKG1pbnVzOlZTWF9GCisrCSAobXVsdDpW U1hfRgorKwkgIChtYXRjaF9vcGVyYW5kOlZTWF9GIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAi JTxWU3I+LDxWU3I+IikKKysJICAobWF0Y2hfb3BlcmFuZDpWU1hfRiAyICJ2c3hfcmVnaXN0ZXJf b3BlcmFuZCIgIjxWU3I+LDAiKSkKKysJIChtYXRjaF9vcGVyYW5kOlZTWF9GIDMgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAiMCw8VlNyPiIpKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9k ZSkgJiYgVEFSR0VUX0ZVU0VEX01BREQiCisrICAiQAorKyAgIHh2bXN1YmE8VlNzPiAleDAsJXgx LCV4MgorKyAgIHh2bXN1Ym08VlNzPiAleDAsJXgxLCV4MyIKKysgIFsoc2V0X2F0dHIgInR5cGUi ICJ2ZWNmbG9hdCIpXSkKKysKKysoZGVmaW5lX2luc24gIip2c3hfZm5tYWRkPG1vZGU+NF8xIgor KyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9 PFZTcj4sPFZTcj4iKQorKwkobmVnOlZTWF9GCisrCSAocGx1czpWU1hfRgorKwkgIChtdWx0OlZT WF9GCisrCSAgIChtYXRjaF9vcGVyYW5kOlZTWF9GIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAi JTxWU3I+LDxWU3I+IikKKysJICAgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMiAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICI8VlNyPiwwIikpCisrCSAgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMyAidnN4X3Jl Z2lzdGVyX29wZXJhbmQiICIwLDxWU3I+IikpKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKERG bW9kZSkgJiYgVEFSR0VUX0ZVU0VEX01BREQKKysgICAmJiBIT05PUl9TSUdORURfWkVST1MgKERG bW9kZSkiCisrICAiQAorKyAgIHh2bm1hZGRhPFZTcz4gJXgwLCV4MSwleDIKKysgICB4dm5tYWRk bTxWU3M+ICV4MCwleDEsJXgzIgorKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0IildKQor KworKyhkZWZpbmVfaW5zbiAiKnZzeF9mbm1hZGQ8bW9kZT40XzIiCisrICBbKHNldCAobWF0Y2hf b3BlcmFuZDpWU1hfRiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw8VlNyPiIpCisr CShtaW51czpWU1hfRgorKwkgKG11bHQ6VlNYX0YKKysJICAobmVnOlZTWF9GCisrCSAgIChtYXRj aF9vcGVyYW5kOlZTWF9GIDEgImdwY19yZWdfb3BlcmFuZCIgIiU8VlNyPiw8VlNyPiIpKQorKwkg IChtYXRjaF9vcGVyYW5kOlZTWF9GIDIgImdwY19yZWdfb3BlcmFuZCIgIjxWU3I+LDAiKSkKKysJ IChtYXRjaF9vcGVyYW5kOlZTWF9GIDMgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiMCw8VlNyPiIp KSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkgJiYgVEFSR0VUX0ZVU0VEX01BREQK KysgICAmJiAhSE9OT1JfU0lHTkVEX1pFUk9TIChERm1vZGUpIgorKyAgIkAKKysgICB4dm5tYWRk YTxWU3M+ICV4MCwleDEsJXgyCisrICAgeHZubWFkZG08VlNzPiAleDAsJXgxLCV4MyIKKysgIFso c2V0X2F0dHIgInR5cGUiICJ2ZWNmbG9hdCIpXSkKKysKKysoZGVmaW5lX2luc24gIip2c3hfZm5t c3ViPG1vZGU+NF8xIgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMCAidnN4X3JlZ2lz dGVyX29wZXJhbmQiICI9PFZTcj4sPFZTcj4iKQorKwkobmVnOlZTWF9GCisrCSAobWludXM6VlNY X0YKKysJICAobXVsdDpWU1hfRgorKwkgICAobWF0Y2hfb3BlcmFuZDpWU1hfRiAxICJ2c3hfcmVn aXN0ZXJfb3BlcmFuZCIgIiU8VlNyPiw8VlNyPiIpCisrCSAgIChtYXRjaF9vcGVyYW5kOlZTWF9G IDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sMCIpKQorKwkgIChtYXRjaF9vcGVyYW5k OlZTWF9GIDMgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiMCw8VlNyPiIpKSkpXQorKyAgIlZFQ1RP Ul9VTklUX1ZTWF9QIChERm1vZGUpICYmIFRBUkdFVF9GVVNFRF9NQURECisrICAgJiYgSE9OT1Jf U0lHTkVEX1pFUk9TIChERm1vZGUpIgorKyAgIkAKKysgICB4dm5tc3ViYTxWU3M+ICV4MCwleDEs JXgyCisrICAgeHZubXN1Ym08VlNzPiAleDAsJXgxLCV4MyIKKysgIFsoc2V0X2F0dHIgInR5cGUi ICJ2ZWNmbG9hdCIpXSkKKysKKysoZGVmaW5lX2luc24gIip2c3hfZm5tc3ViPG1vZGU+NF8yIgor KyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9 PFZTcj4sPFZTcj4iKQorKwkobWludXM6VlNYX0YKKysJIChtYXRjaF9vcGVyYW5kOlZTWF9GIDMg InZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiMCw8VlNyPiIpCisrCSAobXVsdDpWU1hfRgorKwkgICht YXRjaF9vcGVyYW5kOlZTWF9GIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiJTxWU3I+LDxWU3I+ IikKKysJICAobWF0Y2hfb3BlcmFuZDpWU1hfRiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxW U3I+LDAiKSkpKV0KKysgICJWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSAmJiBUQVJHRVRfRlVT RURfTUFERAorKyAgICYmICFIT05PUl9TSUdORURfWkVST1MgKERGbW9kZSkiCisrICAiQAorKyAg IHh2bm1zdWJhPFZTcz4gJXgwLCV4MSwleDIKKysgICB4dm5tc3VibTxWU3M+ICV4MCwleDEsJXgz IgorKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0IildKQorKworKzs7IFZlY3RvciBjb25k aXRpb25hbCBleHByZXNzaW9ucworKyhkZWZpbmVfaW5zbiAiKnZzeF9lcTxtb2RlPiIKKysgIFso c2V0IChtYXRjaF9vcGVyYW5kOlZTWF9GIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+ IikKKysJKGVxOlZTWF9GIChtYXRjaF9vcGVyYW5kOlZTWF9GIDEgInZzeF9yZWdpc3Rlcl9vcGVy YW5kIiAiPFZTcj4iKQorKwkJICAobWF0Y2hfb3BlcmFuZDpWU1hfRiAyICJ2c3hfcmVnaXN0ZXJf b3BlcmFuZCIgIjxWU3I+IikpKV0KKysgICJWRUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSki CisrICAieHZjbXBlcTxWU3M+ICV4MCwleDEsJXgyIgorKyAgWyhzZXRfYXR0ciAidHlwZSIgInZl Y2NtcCIpXSkKKysKKysoZGVmaW5lX2luc24gIip2c3hfZ3Q8bW9kZT4iCisrICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWU1hfRiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiIpCisrCShn dDpWU1hfRiAobWF0Y2hfb3BlcmFuZDpWU1hfRiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxW U3I+IikKKysJCSAgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQi ICI8VlNyPiIpKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgorKyAgInh2 Y21wZ3Q8VlNzPiAleDAsJXgxLCV4MiIKKysgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNjbXAiKV0p CisrCisrKGRlZmluZV9pbnNuICIqdnN4X2dlPG1vZGU+IgorKyAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6VlNYX0YgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9PFZTcj4iKQorKwkoZ2U6VlNYX0Yg KG1hdGNoX29wZXJhbmQ6VlNYX0YgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiIpCisr CQkgIChtYXRjaF9vcGVyYW5kOlZTWF9GIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4i KSkpXQorKyAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKKysgICJ4dmNtcGdlPFZT cz4gJXgwLCV4MSwleDIiCisrICBbKHNldF9hdHRyICJ0eXBlIiAidmVjY21wIildKQorKworKyhk ZWZpbmVfaW5zbiAidnN4X3ZzZWw8bW9kZT4iCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hf RiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiIpCisrCShpZl90aGVuX2Vsc2U6VlNY X0YgKG5lIChtYXRjaF9vcGVyYW5kOlZTWF9GIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZT cj4iKQorKwkJCQkoY29uc3RfaW50IDApKQorKwkJCSAgICAobWF0Y2hfb3BlcmFuZDpWU1hfRiAy ICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+IikKKysJCQkgICAgKG1hdGNoX29wZXJhbmQ6 VlNYX0YgMyAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiIpKSldCisrICAiVkVDVE9SX1VO SVRfVlNYX1AgKDxNT0RFPm1vZGUpIgorKyAgInh4c2VsICV4MCwleDMsJXgyLCV4MSIKKysgIFso c2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtIildKQorKworKzs7IENvcHkgc2lnbgorKyhkZWZpbmVf aW5zbiAiKnZzeF9jb3B5c2lnbjxtb2RlPjMiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hf RiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiIpCisrCShpZl90aGVuX2Vsc2U6VlNY X0YKKysJIChnZTpWU1hfRiAobWF0Y2hfb3BlcmFuZDpWU1hfRiAyICJ2c3hfcmVnaXN0ZXJfb3Bl cmFuZCIgIjxWU3I+IikKKysJCSAgIChjb25zdF9pbnQgMCkpCisrCSAoYWJzOlZTWF9GIChtYXRj aF9vcGVyYW5kOlZTWF9GIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4iKSkKKysJIChu ZWc6VlNYX0YgKGFiczpWU1hfRiAobWF0Y2hfZHVwIDEpKSkpKV0KKysgICJWRUNUT1JfVU5JVF9W U1hfUCAoPE1PREU+bW9kZSkiCisrICAieHZjcHNnbjxWU3M+ICV4MCwleDIsJXgxIgorKyAgWyhz ZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKKysKKysoZGVmaW5lX2luc24gIip2c3hfZnRy dW5jPG1vZGU+MiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9GIDAgInZzeF9yZWdpc3Rl cl9vcGVyYW5kIiAiPTxWU3I+IikKKysgIAkoZml4OlZTWF9GIChtYXRjaF9vcGVyYW5kOlZTWF9G IDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4iKSkpXQorKyAgIlZFQ1RPUl9VTklUX1ZT WF9QICg8TU9ERT5tb2RlKSIKKysgICJ4dnI8VlNzPnBpeiAleDAsJXgxIgorKyAgWyhzZXRfYXR0 ciAidHlwZSIgInZlY3Blcm0iKV0pCisrCisrKGRlZmluZV9pbnNuICIqdnN4X2Zsb2F0PFZTaT48 bW9kZT4yIgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMCAidnN4X3JlZ2lzdGVyX29w ZXJhbmQiICI9PFZTcj4iKQorKwkoZmxvYXQ6VlNYX0YgKG1hdGNoX29wZXJhbmQ6PFZTST4gMSAi dnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiIpKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1Ag KDxNT0RFPm1vZGUpIgorKyAgInh2Y3ZzeDxWU2M+PFZTcz4gJXgwLCV4MSIKKysgIFsoc2V0X2F0 dHIgInR5cGUiICJ2ZWNmbG9hdCIpXSkKKysKKysoZGVmaW5lX2luc24gIip2c3hfZmxvYXR1bnM8 VlNpPjxtb2RlPjIiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfRiAwICJ2c3hfcmVnaXN0 ZXJfb3BlcmFuZCIgIj08VlNyPiIpCisrCSh1bnNpZ25lZF9mbG9hdDpWU1hfRiAobWF0Y2hfb3Bl cmFuZDo8VlNJPiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+IikpKV0KKysgICJWRUNU T1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSkiCisrICAieHZjdnV4PFZTYz48VlNzPiAleDAsJXgx IgorKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0IildKQorKworKyhkZWZpbmVfaW5zbiAi KnZzeF9maXhfdHJ1bmM8bW9kZT48VlNpPjIiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDo8VlNJ PiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiIpCisrCShmaXg6PFZTST4gKG1hdGNo X29wZXJhbmQ6VlNYX0YgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiIpKSldCisrICAi VkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgorKyAgInh2Y3Y8VlNzPnN4PFZTYz5zICV4 MCwleDEiCisrICBbKHNldF9hdHRyICJ0eXBlIiAidmVjZmxvYXQiKV0pCisrCisrKGRlZmluZV9p bnNuICIqdnN4X2ZpeHVuc190cnVuYzxtb2RlPjxWU2k+MiIKKysgIFsoc2V0IChtYXRjaF9vcGVy YW5kOjxWU0k+IDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+IikKKysJKHVuc2lnbmVk X2ZpeDo8VlNJPiAobWF0Y2hfb3BlcmFuZDpWU1hfRiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIg IjxWU3I+IikpKV0KKysgICJWRUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSkiCisrICAieHZj djxWU3M+dXg8VlNjPnMgJXgwLCV4MSIKKysgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNmbG9hdCIp XSkKKysKKysMCisrOzsgVlNYIHNjYWxhciBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50 IG9wZXJhdGlvbnMKKysoZGVmaW5lX2luc24iKnZzeF9hZGRkZjMiCisrICBbKHNldCAobWF0Y2hf b3BlcmFuZDpERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13cyIpCisrCShwbHVzOkRGICht YXRjaF9vcGVyYW5kOkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid3MiKQorKwkJICAgICAo bWF0Y2hfb3BlcmFuZDpERiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndzIikpKV0KKysgICJW RUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSIKKysgICJ4c2FkZGRwICV4MCwleDEsJXgyIgorKyAg WyhzZXRfYXR0ciAidHlwZSIgImZwIikKKysgICAoc2V0X2F0dHIgImZwX3R5cGUiICJmcF9hZGRz dWJfZCIpXSkKKysKKysoZGVmaW5lX2luc24iKnZzeF9zdWJkZjMiCisrICBbKHNldCAobWF0Y2hf b3BlcmFuZDpERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13cyIpCisrCShtaW51czpERiAo bWF0Y2hfb3BlcmFuZDpERiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndzIikKKysJCSAgICAg IChtYXRjaF9vcGVyYW5kOkRGIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid3MiKSkpXQorKyAg IlZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpIgorKyAgInhzc3ViZHAgJXgwLCV4MSwleDIiCisr ICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKQorKyAgIChzZXRfYXR0ciAiZnBfdHlwZSIgImZwX2Fk ZHN1Yl9kIildKQorKworKyhkZWZpbmVfaW5zbiIqdnN4X211bGRmMyIKKysgIFsoc2V0IChtYXRj aF9vcGVyYW5kOkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdzIikKKysJKG11bHQ6REYg KG1hdGNoX29wZXJhbmQ6REYgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3cyIpCisrCQkgICAg IChtYXRjaF9vcGVyYW5kOkRGIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid3MiKSkpXQorKyAg IlZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpIgorKyAgInhzbXVsZHAgJXgwLCV4MSwleDIiCisr ICBbKHNldF9hdHRyICJ0eXBlIiAiZG11bCIpCisrICAgKHNldF9hdHRyICJmcF90eXBlIiAiZnBf bXVsX2QiKV0pCisrCisrKGRlZmluZV9pbnNuIip2c3hfZGl2ZGYzIgorKyAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6REYgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d3MiKQorKwkoZGl2OkRGICht YXRjaF9vcGVyYW5kOkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid3MiKQorKwkJICAgICht YXRjaF9vcGVyYW5kOkRGIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid3MiKSkpXQorKyAgIlZF Q1RPUl9VTklUX1ZTWF9QIChERm1vZGUpIgorKyAgInhzZGl2ZHAgJXgwLCV4MSwleDIiCisrICBb KHNldF9hdHRyICJ0eXBlIiAiZGRpdiIpXSkKKysKKysoZGVmaW5lX2luc24gIip2c3hfZnJlZGYy IgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9 d3MiKQorKwkodW5zcGVjOkRGIFsobWF0Y2hfb3BlcmFuZDpERiAxICJ2c3hfcmVnaXN0ZXJfb3Bl cmFuZCIgIndzIildCisrCQkgICBVTlNQRUNfRlJFUykpXQorKyAgImZsYWdfZmluaXRlX21hdGhf b25seSAmJiBWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSIKKysgICJ4c3JlZHAgJXgwLCV4MSIK KysgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkKKysKKysoZGVmaW5lX2luc24gIip2c3hfc3Fy dGRmMiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5k IiAiPXdzIikKKysgICAgICAgIChzcXJ0OkRGIChtYXRjaF9vcGVyYW5kOkRGIDEgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAid3MiKSkpXQorKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpIgor KyAgInhzc3FydGRwICV4MCwleDEiCisrICBbKHNldF9hdHRyICJ0eXBlIiAiZHNxcnQiKV0pCisr CisrKGRlZmluZV9pbnNuIip2c3hfbmVnZGYyIgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYg MCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d3MiKQorKwkobmVnOkRGIChtYXRjaF9vcGVyYW5k OkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid3MiKSkpXQorKyAgIlZFQ1RPUl9VTklUX1ZT WF9QIChERm1vZGUpIgorKyAgInhzbmVnZHAgJXgwLCV4MSIKKysgIFsoc2V0X2F0dHIgInR5cGUi ICJmcCIpXSkKKysKKysoZGVmaW5lX2luc24idnN4X2Fic2RmMiIKKysgIFsoc2V0IChtYXRjaF9v cGVyYW5kOkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdzIikKKysJKGFiczpERiAobWF0 Y2hfb3BlcmFuZDpERiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndzIikpKV0KKysgICJWRUNU T1JfVU5JVF9WU1hfUCAoREZtb2RlKSIKKysgICJ4c2Fic2RwICV4MCwleDEiCisrICBbKHNldF9h dHRyICJ0eXBlIiAiZnAiKV0pCisrCisrKGRlZmluZV9pbnNuIip2c3hfbmFic2RmMiIKKysgIFso c2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdzIikKKysJ KG5lZzpERiAoYWJzOkRGIChtYXRjaF9vcGVyYW5kOkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5k IiAid3MiKSkpKV0KKysgICJWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSIKKysgICJ4c25hYnNk cCAleDAsJXgxIgorKyAgWyhzZXRfYXR0ciAidHlwZSIgImZwIildKQorKworKyhkZWZpbmVfaW5z biAiKnZzeF9zbWF4ZGYzIgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAidnN4X3JlZ2lz dGVyX29wZXJhbmQiICI9d3MiKQorKyAgICAgICAgKHNtYXg6REYgKG1hdGNoX29wZXJhbmQ6REYg MSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3cyIpCisrCQkgKG1hdGNoX29wZXJhbmQ6REYgMiAi dnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3cyIpKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKERG bW9kZSkiCisrICAieHNtYXhkcCAleDAsJXgxLCV4MiIKKysgIFsoc2V0X2F0dHIgInR5cGUiICJm cCIpXSkKKysKKysKKysoZGVmaW5lX2luc24gIip2c3hfc21pbmRmMyIKKysgIFsoc2V0IChtYXRj aF9vcGVyYW5kOkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdzIikKKysgICAgICAgIChz bWluOkRGIChtYXRjaF9vcGVyYW5kOkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid3MiKQor KwkJIChtYXRjaF9vcGVyYW5kOkRGIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid3MiKSkpXQor KyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpIgorKyAgInhzbWluZHAgJXgwLCV4MSwleDIi CisrICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKV0pCisrCisrOzsgRnVzZWQgdmVjdG9yIG11bHRp cGx5L2FkZCBpbnN0cnVjdGlvbnMKKysoZGVmaW5lX2luc24gIip2c3hfZm1hZGRkZjQiCisrICBb KHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13cyx3cyIp CisrCShwbHVzOkRGIChtdWx0OkRGIChtYXRjaF9vcGVyYW5kOkRGIDEgInZzeF9yZWdpc3Rlcl9v cGVyYW5kIiAiJXdzLHdzIikKKysJCQkgIChtYXRjaF9vcGVyYW5kOkRGIDIgInZzeF9yZWdpc3Rl cl9vcGVyYW5kIiAid3MsMCIpKQorKwkJIChtYXRjaF9vcGVyYW5kOkRGIDMgImdwY19yZWdfb3Bl cmFuZCIgIjAsd3MiKSkpXQorKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpICYmIFRBUkdF VF9GVVNFRF9NQUREIgorKyAgIkAKKysgICB4c21hZGRhZHAgJXgwLCV4MSwleDIKKysgICB4c21h ZGRtZHAgJXgwLCV4MSwleDMiCisrICBbKHNldF9hdHRyICJ0eXBlIiAiZG11bCIpCisrICAgKHNl dF9hdHRyICJmcF90eXBlIiAiZnBfbWFkZHN1Yl9kIildKQorKworKyhkZWZpbmVfaW5zbiAiKnZz eF9mbXN1YmRmNCIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgInZzeF9yZWdpc3Rlcl9v cGVyYW5kIiAiPXdzLHdzIikKKysJKG1pbnVzOkRGIChtdWx0OkRGIChtYXRjaF9vcGVyYW5kOkRG IDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiJXdzLHdzIikKKysJCQkgICAobWF0Y2hfb3BlcmFu ZDpERiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndzLDAiKSkKKysJCSAgKG1hdGNoX29wZXJh bmQ6REYgMyAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIwLHdzIikpKV0KKysgICJWRUNUT1JfVU5J VF9WU1hfUCAoREZtb2RlKSAmJiBUQVJHRVRfRlVTRURfTUFERCIKKysgICJACisrICAgeHNtc3Vi YWRwICV4MCwleDEsJXgyCisrICAgeHNtc3VibWRwICV4MCwleDEsJXgzIgorKyAgWyhzZXRfYXR0 ciAidHlwZSIgImRtdWwiKQorKyAgIChzZXRfYXR0ciAiZnBfdHlwZSIgImZwX21hZGRzdWJfZCIp XSkKKysKKysoZGVmaW5lX2luc24gIip2c3hfZm5tYWRkZGY0XzEiCisrICBbKHNldCAobWF0Y2hf b3BlcmFuZDpERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13cyx3cyIpCisrCShuZWc6REYK KysJIChwbHVzOkRGIChtdWx0OkRGIChtYXRjaF9vcGVyYW5kOkRGIDEgInZzeF9yZWdpc3Rlcl9v cGVyYW5kIiAiJXdzLHdzIikKKysJCQkgICAobWF0Y2hfb3BlcmFuZDpERiAyICJ2c3hfcmVnaXN0 ZXJfb3BlcmFuZCIgIndzLDAiKSkKKysJCSAgKG1hdGNoX29wZXJhbmQ6REYgMyAidnN4X3JlZ2lz dGVyX29wZXJhbmQiICIwLHdzIikpKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkg JiYgVEFSR0VUX0ZVU0VEX01BREQKKysgICAmJiBIT05PUl9TSUdORURfWkVST1MgKERGbW9kZSki CisrICAiQAorKyAgIHhzbm1hZGRhZHAgJXgwLCV4MSwleDIKKysgICB4c25tYWRkbWRwICV4MCwl eDEsJXgzIgorKyAgWyhzZXRfYXR0ciAidHlwZSIgImRtdWwiKQorKyAgIChzZXRfYXR0ciAiZnBf dHlwZSIgImZwX21hZGRzdWJfZCIpXSkKKysKKysoZGVmaW5lX2luc24gIip2c3hfZm5tYWRkZGY0 XzIiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIg Ij13cyx3cyIpCisrCShtaW51czpERiAobXVsdDpERiAobmVnOkRGCisrCQkJICAgIChtYXRjaF9v cGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgIiV3cyx3cyIpKQorKwkJCSAgIChtYXRjaF9v cGVyYW5kOkRGIDIgImdwY19yZWdfb3BlcmFuZCIgIndzLDAiKSkKKysJCSAgKG1hdGNoX29wZXJh bmQ6REYgMyAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIwLHdzIikpKV0KKysgICJWRUNUT1JfVU5J VF9WU1hfUCAoREZtb2RlKSAmJiBUQVJHRVRfRlVTRURfTUFERAorKyAgICYmICFIT05PUl9TSUdO RURfWkVST1MgKERGbW9kZSkiCisrICAiQAorKyAgIHhzbm1hZGRhZHAgJXgwLCV4MSwleDIKKysg ICB4c25tYWRkbWRwICV4MCwleDEsJXgzIgorKyAgWyhzZXRfYXR0ciAidHlwZSIgImRtdWwiKQor KyAgIChzZXRfYXR0ciAiZnBfdHlwZSIgImZwX21hZGRzdWJfZCIpXSkKKysKKysoZGVmaW5lX2lu c24gIip2c3hfZm5tc3ViZGY0XzEiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJ2c3hf cmVnaXN0ZXJfb3BlcmFuZCIgIj13cyx3cyIpCisrCShuZWc6REYKKysJIChtaW51czpERgorKwkg IChtdWx0OkRGIChtYXRjaF9vcGVyYW5kOkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiJXdz LHdzIikKKysJCSAgIChtYXRjaF9vcGVyYW5kOkRGIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAi d3MsMCIpKQorKwkgIChtYXRjaF9vcGVyYW5kOkRGIDMgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAi MCx3cyIpKSkpXQorKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpICYmIFRBUkdFVF9GVVNF RF9NQURECisrICAgJiYgSE9OT1JfU0lHTkVEX1pFUk9TIChERm1vZGUpIgorKyAgIkAKKysgICB4 c25tc3ViYWRwICV4MCwleDEsJXgyCisrICAgeHNubXN1Ym1kcCAleDAsJXgxLCV4MyIKKysgIFso c2V0X2F0dHIgInR5cGUiICJkbXVsIikKKysgICAoc2V0X2F0dHIgImZwX3R5cGUiICJmcF9tYWRk c3ViX2QiKV0pCisrCisrKGRlZmluZV9pbnNuICIqdnN4X2ZubXN1YmRmNF8yIgorKyAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6REYgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d3Msd3MiKQorKwko bWludXM6REYKKysJIChtYXRjaF9vcGVyYW5kOkRGIDMgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAi MCx3cyIpCisrCSAobXVsdDpERiAobWF0Y2hfb3BlcmFuZDpERiAxICJ2c3hfcmVnaXN0ZXJfb3Bl cmFuZCIgIiV3cyx3cyIpCisrCQkgIChtYXRjaF9vcGVyYW5kOkRGIDIgInZzeF9yZWdpc3Rlcl9v cGVyYW5kIiAid3MsMCIpKSkpXQorKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpICYmIFRB UkdFVF9GVVNFRF9NQURECisrICAgJiYgIUhPTk9SX1NJR05FRF9aRVJPUyAoREZtb2RlKSIKKysg ICJACisrICAgeHNubXN1YmFkcCAleDAsJXgxLCV4MgorKyAgIHhzbm1zdWJtZHAgJXgwLCV4MSwl eDMiCisrICBbKHNldF9hdHRyICJ0eXBlIiAiZG11bCIpCisrICAgKHNldF9hdHRyICJmcF90eXBl IiAiZnBfbWFkZHN1Yl9kIildKQorKworKzs7IEZvciB0aGUgY29udmVyc2lvbnMsIGxpbWl0IHRo ZSByZWdpc3RlciBjbGFzcyBmb3IgdGhlIGludGVnZXIgdmFsdWUgdG8gYmUKKys7OyB0aGUgZnBy cy4gIEZvciB0aGUgdW5zaWduZWQgdGVzdHMsIHRoZXJlIGlzbid0IGEgZ2VuZXJpYyBkb3VibGUg LT4gdW5zaWduZWQKKys7OyBjb252ZXJzaW9uIGluIHJzNjAwMC5tZCBzbyBkb24ndCB0ZXN0IFZF Q1RPUl9VTklUX1ZTWF9QLCBqdXN0IHRlc3QgYWdhaW5zdAorKzs7IFZTWC4KKysKKysoZGVmaW5l X2luc24gIip2c3hfZmxvYXRkaWRmMiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgInZz eF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdzIikKKysJKGZsb2F0OkRGIChtYXRjaF9vcGVyYW5kOkRJ IDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiIWYjciIpKSldCisrICAiVkVDVE9SX1VOSVRfVlNY X1AgKERGbW9kZSkiCisrICAieHNjdnN4ZGRwICV4MCwleDEiCisrICBbKHNldF9hdHRyICJ0eXBl IiAiZnAiKV0pCisrCisrKGRlZmluZV9pbnNuICIqdnN4X2Zsb2F0dW5zZGlkZjIiCisrICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13cyIpCisrCSh1 bnNpZ25lZF9mbG9hdDpERiAobWF0Y2hfb3BlcmFuZDpESSAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFu ZCIgIiFmI3IiKSkpXQorKyAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9WU1giCisrICAi eHNjdnV4ZGRwICV4MCwleDEiCisrICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKV0pCisrCisrKGRl ZmluZV9pbnNuICIqdnN4X2ZpeF90cnVuY2RmZGkyIgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 REkgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9IWYjciIpCisrCShmaXg6REkgKG1hdGNoX29w ZXJhbmQ6REYgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3cyIpKSldCisrICAiVkVDVE9SX1VO SVRfVlNYX1AgKERGbW9kZSkiCisrICAieHNjdmRwc3hkcyAleDAsJXgxIgorKyAgWyhzZXRfYXR0 ciAidHlwZSIgImZwIildKQorKworKyhkZWZpbmVfaW5zbiAiKnZzeF9maXh1bnNfdHJ1bmNkZmRp MiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRJIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAi PSFmI3IiKQorKwkodW5zaWduZWRfZml4OkRJIChtYXRjaF9vcGVyYW5kOkRGIDEgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAid3MiKSkpXQorKyAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9W U1giCisrICAieHNjdmRwdXhkcyAleDAsJXgxIgorKyAgWyhzZXRfYXR0ciAidHlwZSIgImZwIild KQorKworKyhkZWZpbmVfaW5zbiAiKnZzeF9idHJ1bmNkZjIiCisrICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13cyIpCisrCSh1bnNwZWM6REYgWyht YXRjaF9vcGVyYW5kOkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid3MiKV0KKysJCSAgIFVO U1BFQ19GUklaKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkiCisrICAieHNyZHBp eiAleDAsJXgxIgorKyAgWyhzZXRfYXR0ciAidHlwZSIgImZwIildKQorKworKyhkZWZpbmVfaW5z biAiKnZzeF9mbG9vcmRmMiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAiPXdzIikKKysJKHVuc3BlYzpERiBbKG1hdGNoX29wZXJhbmQ6REYgMSAi dnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3cyIpXQorKwkJICAgVU5TUEVDX0ZSSU0pKV0KKysgICJW RUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSIKKysgICJ4c3JkcGltICV4MCwleDEiCisrICBbKHNl dF9hdHRyICJ0eXBlIiAiZnAiKV0pCisrCisrKGRlZmluZV9pbnNuICIqdnN4X2NlaWxkZjIiCisr ICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13cyIp CisrCSh1bnNwZWM6REYgWyhtYXRjaF9vcGVyYW5kOkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5k IiAid3MiKV0KKysJCSAgIFVOU1BFQ19GUklQKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKERG bW9kZSkiCisrICAieHNyZHBpcCAleDAsJXgxIgorKyAgWyhzZXRfYXR0ciAidHlwZSIgImZwIild KQorKworKyhkZWZpbmVfaW5zbiAidnN4X2NvcHlzaWduZGYzIgorKyAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6REYgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d3MiKQorKwkoaWZfdGhlbl9lbHNl OkRGIChnZTpERiAobWF0Y2hfb3BlcmFuZDpERiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndz IikKKysJCQkJKGNvbnN0X2ludCAwKSkKKysJCQkgKGFiczpERiAobWF0Y2hfb3BlcmFuZDpERiAx ICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndzIikpCisrCQkJIChuZWc6REYgKGFiczpERiAobWF0 Y2hfZHVwIDEpKSkpKV0KKysgICJWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSIKKysgICJ4c2Nw c2duZHAgJXgwLCV4MiwleDEiCisrICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKV0pCisrCisrKGRl ZmluZV9pbnNuICIqdnN4X2Z0cnVuY2RmMiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAg InZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdzIikKKysgIAkoZml4OkRGIChtYXRjaF9vcGVyYW5k OkRGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ3cyIpKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1Ag KERGbW9kZSkiCisrICAieHNyZHBwaXogJXgwLCV4MSIKKysgIFsoc2V0X2F0dHIgInR5cGUiICJ2 ZWNmbG9hdCIpXSkKKysKKysMCisrOzsgTG9naWNhbCBhbmQgcGVybXV0ZSBvcGVyYXRpb25zCisr KGRlZmluZV9pbnNuICIqdnN4X2FuZDxtb2RlPjMiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpW U1hfTCAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw/d2EiKQorKyAgICAgICAgKGFu ZDpWU1hfTAorKwkgKG1hdGNoX29wZXJhbmQ6VlNYX0wgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQi ICI8VlNyPiw/d2EiKQorKwkgKG1hdGNoX29wZXJhbmQ6VlNYX0wgMiAidnN4X3JlZ2lzdGVyX29w ZXJhbmQiICI8VlNyPiw/d2EiKSkpXQorKyAgIlZFQ1RPUl9NRU1fVlNYX1AgKDxNT0RFPm1vZGUp IgorKyAgInh4bGFuZCAleDAsJXgxLCV4MiIKKysgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1w bGUiKV0pCisrCisrKGRlZmluZV9pbnNuICIqdnN4X2lvcjxtb2RlPjMiCisrICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWU1hfTCAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw/d2EiKQor KyAgICAgICAgKGlvcjpWU1hfTCAobWF0Y2hfb3BlcmFuZDpWU1hfTCAxICJ2c3hfcmVnaXN0ZXJf b3BlcmFuZCIgIjxWU3I+LD93YSIpCisrCQkgICAobWF0Y2hfb3BlcmFuZDpWU1hfTCAyICJ2c3hf cmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LD93YSIpKSldCisrICAiVkVDVE9SX01FTV9WU1hfUCAo PE1PREU+bW9kZSkiCisrICAieHhsb3IgJXgwLCV4MSwleDIiCisrICBbKHNldF9hdHRyICJ0eXBl IiAidmVjc2ltcGxlIildKQorKworKyhkZWZpbmVfaW5zbiAiKnZzeF94b3I8bW9kZT4zIgorKyAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0wgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9PFZT cj4sP3dhIikKKysgICAgICAgICh4b3I6VlNYX0wKKysJIChtYXRjaF9vcGVyYW5kOlZTWF9MIDEg InZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sP3dhIikKKysJIChtYXRjaF9vcGVyYW5kOlZT WF9MIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sP3dhIikpKV0KKysgICJWRUNUT1Jf TUVNX1ZTWF9QICg8TU9ERT5tb2RlKSIKKysgICJ4eGx4b3IgJXgwLCV4MSwleDIiCisrICBbKHNl dF9hdHRyICJ0eXBlIiAidmVjc2ltcGxlIildKQorKworKyhkZWZpbmVfaW5zbiAiKnZzeF9vbmVf Y21wbDxtb2RlPjIiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfTCAwICJ2c3hfcmVnaXN0 ZXJfb3BlcmFuZCIgIj08VlNyPiw/d2EiKQorKyAgICAgICAgKG5vdDpWU1hfTAorKwkgKG1hdGNo X29wZXJhbmQ6VlNYX0wgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiw/d2EiKSkpXQor KyAgIlZFQ1RPUl9NRU1fVlNYX1AgKDxNT0RFPm1vZGUpIgorKyAgInh4bG5vciAleDAsJXgxLCV4 MSIKKysgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCisrICAKKysoZGVmaW5lX2lu c24gIip2c3hfbm9yPG1vZGU+MyIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9MIDAgInZz eF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+LD93YSIpCisrICAgICAgICAobm90OlZTWF9MCisr CSAoaW9yOlZTWF9MCisrCSAgKG1hdGNoX29wZXJhbmQ6VlNYX0wgMSAidnN4X3JlZ2lzdGVyX29w ZXJhbmQiICI8VlNyPiw/d2EiKQorKwkgIChtYXRjaF9vcGVyYW5kOlZTWF9MIDIgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAiPFZTcj4sP3dhIikpKSldCisrICAiVkVDVE9SX01FTV9WU1hfUCAoPE1P REU+bW9kZSkiCisrICAieHhsbm9yICV4MCwleDEsJXgyIgorKyAgWyhzZXRfYXR0ciAidHlwZSIg InZlY3NpbXBsZSIpXSkKKysKKysoZGVmaW5lX2luc24gIip2c3hfYW5kYzxtb2RlPjMiCisrICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfTCAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNy Piw/d2EiKQorKyAgICAgICAgKGFuZDpWU1hfTAorKwkgKG5vdDpWU1hfTAorKwkgIChtYXRjaF9v cGVyYW5kOlZTWF9MIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sP3dhIikpCisrCSAo bWF0Y2hfb3BlcmFuZDpWU1hfTCAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LD93YSIp KSldCisrICAiVkVDVE9SX01FTV9WU1hfUCAoPE1PREU+bW9kZSkiCisrICAieHhsYW5kYyAleDAs JXgxLCV4MiIKKysgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCisrCisrDAorKzs7 IFBlcm11dGUgb3BlcmF0aW9ucworKworKyhkZWZpbmVfaW5zbiAidnN4X2NvbmNhdF92MmRmIgor KyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjJERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13 ZCw/d2EiKQorKwkodW5zcGVjOlYyREYKKysJIFsobWF0Y2hfb3BlcmFuZDpERiAxICJ2c3hfcmVn aXN0ZXJfb3BlcmFuZCIgImYsd2EiKQorKwkgIChtYXRjaF9vcGVyYW5kOkRGIDIgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAiZix3YSIpXQorKwkgVU5TUEVDX1ZTWF9DT05DQVRfVjJERikpXQorKyAg IlZFQ1RPUl9VTklUX1ZTWF9QIChWMkRGbW9kZSkiCisrICAieHhwZXJtZGkgJXgwLCV4MSwleDIs MCIKKysgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtIildKQorKworKzs7IFNldCBhIGRvdWJs ZSBpbnRvIG9uZSBlbGVtZW50CisrKGRlZmluZV9pbnNuICJ2c3hfc2V0X3YyZGYiCisrICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpWMkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdkIikKKysJ KHZlY19tZXJnZTpWMkRGCisrCSAobWF0Y2hfb3BlcmFuZDpWMkRGIDEgInZzeF9yZWdpc3Rlcl9v cGVyYW5kIiAid2QiKQorKwkgKHZlY19kdXBsaWNhdGU6VjJERiAobWF0Y2hfb3BlcmFuZDpERiAy ICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndzIikpCisrCSAobWF0Y2hfb3BlcmFuZDpRSSAzICJ1 NWJpdF9jaW50X29wZXJhbmQiICJpIikpKV0KKysgICJWRUNUT1JfVU5JVF9WU1hfUCAoVjJERm1v ZGUpIgorK3sKKysgIG9wZXJhbmRzWzNdID0gR0VOX0lOVCAoSU5UVkFMIChvcGVyYW5kc1szXSkg JiAxKTsKKysgIHJldHVybiBcInh4cGVybWRpICV4MCwleDEsJXgyLCUzXCI7CisrfQorKyAgWyhz ZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCisrCisrOzsgRXh0cmFjdCBhIERGIGVsZW1lbnQg ZnJvbSBWMkRGCisrKGRlZmluZV9pbnNuICJ2c3hfZXh0cmFjdF92MmRmIgorKyAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6REYgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d3MiKQorKwkodmVjX3Nl bGVjdDpERiAobWF0Y2hfb3BlcmFuZDpWMkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid2Qi KQorKwkJICAgICAgIChwYXJhbGxlbAorKwkJCVsobWF0Y2hfb3BlcmFuZDpRSSAyICJ1NWJpdF9j aW50X29wZXJhbmQiICJpIildKSkpXQorKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChWMkRGbW9kZSki CisreworKyAgb3BlcmFuZHNbM10gPSBHRU5fSU5UIChJTlRWQUwgKG9wZXJhbmRzWzJdKSAmIDEp OworKyAgcmV0dXJuIFwieHhwZXJtZGkgJXgwLCV4MSwleDEsJTNcIjsKKyt9CisrICBbKHNldF9h dHRyICJ0eXBlIiAidmVjcGVybSIpXSkKKysKKys7OyBHZW5lcmFsIFYyREYgcGVybXV0ZQorKyhk ZWZpbmVfaW5zbiAidnN4X3h4cGVybWRpIgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjJERiAw ICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13ZCIpCisrCSh2ZWNfY29uY2F0OlYyREYKKysJICh2 ZWNfc2VsZWN0OkRGIChtYXRjaF9vcGVyYW5kOlYyREYgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQi ICJ3ZCIpCisrCQkJKHBhcmFsbGVsCisrCQkJIFsobWF0Y2hfb3BlcmFuZDpRSSAyICJ1NWJpdF9j aW50X29wZXJhbmQiICJpIildKSkKKysJICh2ZWNfc2VsZWN0OkRGIChtYXRjaF9vcGVyYW5kOlYy REYgMyAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3ZCIpCisrCQkJKHBhcmFsbGVsCisrCQkJIFso bWF0Y2hfb3BlcmFuZDpRSSA0ICJ1NWJpdF9jaW50X29wZXJhbmQiICJpIildKSkpKV0KKysgICJW RUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgorK3sKKysgIG9wZXJhbmRzWzVdID0gR0VOX0lO VCAoKChJTlRWQUwgKG9wZXJhbmRzWzJdKSAmIDEpIDw8IDEpCisrCQkJIHwgKElOVFZBTCAob3Bl cmFuZHNbNF0pICYgMSkpOworKyAgcmV0dXJuIFwieHhwZXJtZGkgJXgwLCV4MSwleDMsJTVcIjsK Kyt9CisrICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKKysKKys7OyBWMkRGIHNwbGF0 CisrKGRlZmluZV9pbnNuICJ2c3hfc3BsYXR2MmRmIgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 VjJERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13ZCx3ZCIpCisrCSh2ZWNfZHVwbGljYXRl OlYyREYKKysJIChtYXRjaF9vcGVyYW5kOkRGIDEgImlucHV0X29wZXJhbmQiICJ3cyxaIikpKV0K KysgICJWRUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgorKyAgIkAKKysgICB4eHBlcm1kaSAl eDAsJXgxLCV4MSwwCisrICAgbHh2ZHN4ICV4MCwleTEiCisrICBbKHNldF9hdHRyICJ0eXBlIiAi dmVjcGVybSx2ZWNsb2FkIildKQorKworKzs7IFY0U0Ygc3BsYXQKKysoZGVmaW5lX2luc24gIip2 c3hfeHhzcGx0dyIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICI9d2YiKQorKwkodmVjX2R1cGxpY2F0ZTpWNFNGCisrCSAodmVjX3NlbGVjdDpT RiAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid2YiKQorKwkJ CShwYXJhbGxlbAorKwkJCSBbKG1hdGNoX29wZXJhbmQ6UUkgMiAidTViaXRfY2ludF9vcGVyYW5k IiAiaSIpXSkpKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKFY0U0Ztb2RlKSIKKysgICJ4eHNw bHR3ICV4MCwleDEsJTIiCisrICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKKysKKys7 OyBWNFNGIGludGVybGVhdmUKKysoZGVmaW5lX2luc24gIip2c3hfeHhtcmdodyIKKysgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKKysgICAgICAg ICh2ZWNfbWVyZ2U6VjRTRiAodmVjX3NlbGVjdDpWNFNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAi cmVnaXN0ZXJfb3BlcmFuZCIgInYiKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHBhcmFsbGVsIFsoY29uc3RfaW50IDApCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdF9pbnQgMikKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0X2ludCAxKQor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29u c3RfaW50IDMpXSkpCisrICAgICAgICAgICAgICAgICAgICAgICAgKHZlY19zZWxlY3Q6VjRTRiAo bWF0Y2hfb3BlcmFuZDpWNFNGIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbGxlbCBbKGNvbnN0X2ludCAyKQor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29u c3RfaW50IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjb25zdF9pbnQgMykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNvbnN0X2ludCAxKV0pKQorKyAgICAgICAgICAgICAgICAgICAg ICAoY29uc3RfaW50IDUpKSldCisrICAiVkVDVE9SX1VOSVRfVlNYX1AgKFY0U0Ztb2RlKSIKKysg ICJ4eG1yZ2h3ICV4MCwleDEsJXgyIgorKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0p CisrCisrKGRlZmluZV9pbnNuICIqdnN4X3h4bXJnbHciCisrICBbKHNldCAobWF0Y2hfb3BlcmFu ZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCisrICAgICAgICAodmVjX21lcmdlOlY0 U0YKKysJICh2ZWNfc2VsZWN0OlY0U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rlcl9v cGVyYW5kIiAidiIpCisrCQkJICAocGFyYWxsZWwgWyhjb25zdF9pbnQgMikKKysJCQkJICAgICAo Y29uc3RfaW50IDApCisrCQkJCSAgICAgKGNvbnN0X2ludCAzKQorKwkJCQkgICAgIChjb25zdF9p bnQgMSldKSkKKysJICh2ZWNfc2VsZWN0OlY0U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAyICJyZWdp c3Rlcl9vcGVyYW5kIiAidiIpCisrCQkJICAocGFyYWxsZWwgWyhjb25zdF9pbnQgMCkKKysJCQkJ ICAgICAoY29uc3RfaW50IDIpCisrCQkJCSAgICAgKGNvbnN0X2ludCAxKQorKwkJCQkgICAgIChj b25zdF9pbnQgMyldKSkKKysJIChjb25zdF9pbnQgNSkpKV0KKysgICJWRUNUT1JfVU5JVF9WU1hf UCAoVjRTRm1vZGUpIgorKyAgInh4bXJnbHcgJXgwLCV4MSwleDIiCisrICBbKHNldF9hdHRyICJ0 eXBlIiAidmVjcGVybSIpXSkKKy0tLSBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuaAkoLi4uL3Ry dW5rKQkocmV2aXNpb24gMTQ0NTU3KQorKysrIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5oCSgu Li4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlzaW9uIDE0NDY5MikKK0BAIC0x LDYgKzEsNiBAQAorIC8qIERlZmluaXRpb25zIG9mIHRhcmdldCBtYWNoaW5lIGZvciBHTlUgY29t cGlsZXIsIGZvciBJQk0gUlMvNjAwMC4KKyAgICBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5 OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksCistICAgMjAwMCwgMjAwMSwgMjAwMiwg MjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOAorKyAgIDIwMDAsIDIwMDEsIDIwMDIs IDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkKKyAgICBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgICBDb250cmlidXRlZCBieSBSaWNoYXJkIEtlbm5lciAo a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHUpCisgCitAQCAtNzIsMTQgKzcyLDE2IEBACisgI2Rl ZmluZSBBU01fQ1BVX1BPV0VSNl9TUEVDICItbXBvd2VyNCAtbWFsdGl2ZWMiCisgI2VuZGlmCisg CistI2lmZGVmIEhBVkVfQVNfVlNYCisrI2lmZGVmIEhBVkVfQVNfUE9QQ05URAorICNkZWZpbmUg QVNNX0NQVV9QT1dFUjdfU1BFQyAiLW1wb3dlcjciCisgI2Vsc2UKKyAjZGVmaW5lIEFTTV9DUFVf UE9XRVI3X1NQRUMgIi1tcG93ZXI0IC1tYWx0aXZlYyIKKyAjZW5kaWYKKyAKKy0vKiBDb21tb24g QVNNIGRlZmluaXRpb25zIHVzZWQgYnkgQVNNX1NQRUMgYW1vbmcgdGhlIHZhcmlvdXMgdGFyZ2V0 cworLSAgIGZvciBoYW5kbGluZyAtbWNwdT14eHggc3dpdGNoZXMuICAqLworKy8qIENvbW1vbiBB U00gZGVmaW5pdGlvbnMgdXNlZCBieSBBU01fU1BFQyBhbW9uZyB0aGUgdmFyaW91cyB0YXJnZXRz IGZvcgorKyAgIGhhbmRsaW5nIC1tY3B1PXh4eCBzd2l0Y2hlcy4gIFRoZXJlIGlzIGEgcGFyYWxs ZWwgbGlzdCBpbiBkcml2ZXItcnM2MDAwLmMgdG8KKysgICBwcm92aWRlIHRoZSBkZWZhdWx0IGFz c2VtYmxlciBvcHRpb25zIGlmIHRoZSB1c2VyIHVzZXMgLW1jcHU9bmF0aXZlLCBzbyBpZgorKyAg IHlvdSBtYWtlIGNoYW5nZXMgaGVyZSwgbWFrZSB0aGVtIGFsc28gdGhlcmUuICAqLworICNkZWZp bmUgQVNNX0NQVV9TUEVDIFwKKyAiJXshbWNwdSo6IFwKKyAgICV7bXBvd2VyOiAleyFtcG93ZXIy OiAtbXB3cn19IFwKK0BAIC04OCw2ICs5MCw3IEBACisgICAleyFtcG93ZXJwYzY0KjogJXttcG93 ZXJwYyo6IC1tcHBjfX0gXAorICAgJXttbm8tcG93ZXI6ICV7IW1wb3dlcnBjKjogLW1jb219fSBc CisgICAleyFtbm8tcG93ZXI6ICV7IW1wb3dlcio6ICUoYXNtX2RlZmF1bHQpfX19IFwKKysle21j cHU9bmF0aXZlOiAlKGFzbV9jcHVfbmF0aXZlKX0gXAorICV7bWNwdT1jb21tb246IC1tY29tfSBc CisgJXttY3B1PWNlbGw6IC1tY2VsbH0gXAorICV7bWNwdT1wb3dlcjogLW1wd3J9IFwKK0BAIC0x NjMsNiArMTY2LDcgQEAKKyAjZGVmaW5lIEVYVFJBX1NQRUNTCQkJCQkJCVwKKyAgIHsgImNwcF9k ZWZhdWx0IiwJCUNQUF9ERUZBVUxUX1NQRUMgfSwJCQlcCisgICB7ICJhc21fY3B1IiwJCQlBU01f Q1BVX1NQRUMgfSwJCQkJXAorKyAgeyAiYXNtX2NwdV9uYXRpdmUiLAkJQVNNX0NQVV9OQVRJVkVf U1BFQyB9LAkJCVwKKyAgIHsgImFzbV9kZWZhdWx0IiwJCUFTTV9ERUZBVUxUX1NQRUMgfSwJCQlc CisgICB7ICJjYzFfY3B1IiwJCQlDQzFfQ1BVX1NQRUMgfSwJCQkJXAorICAgeyAiYXNtX2NwdV9w b3dlcjUiLAkJQVNNX0NQVV9QT1dFUjVfU1BFQyB9LAkJCVwKK0BAIC0xNzksNiArMTgzLDEwIEBA IGV4dGVybiBjb25zdCBjaGFyICpob3N0X2RldGVjdF9sb2NhbF9jcHUKKyAjZGVmaW5lIEVYVFJB X1NQRUNfRlVOQ1RJT05TIFwKKyAgIHsgImxvY2FsX2NwdV9kZXRlY3QiLCBob3N0X2RldGVjdF9s b2NhbF9jcHUgfSwKKyAjZGVmaW5lIEhBVkVfTE9DQUxfQ1BVX0RFVEVDVAorKyNkZWZpbmUgQVNN X0NQVV9OQVRJVkVfU1BFQyAiJTpsb2NhbF9jcHVfZGV0ZWN0KGFzbSkiCisrCisrI2Vsc2UKKysj ZGVmaW5lIEFTTV9DUFVfTkFUSVZFX1NQRUMgIiUoYXNtX2RlZmF1bHQpIgorICNlbmRpZgorIAor ICNpZm5kZWYgQ0MxX0NQVV9TUEVDCitAQCAtMjQwLDYgKzI0OCwxNCBAQCBleHRlcm4gY29uc3Qg Y2hhciAqaG9zdF9kZXRlY3RfbG9jYWxfY3B1CisgI2RlZmluZSBUQVJHRVRfREZQIDAKKyAjZW5k aWYKKyAKKysvKiBEZWZpbmUgVEFSR0VUX1BPUENOVEQgaWYgdGhlIHRhcmdldCBhc3NlbWJsZXIg ZG9lcyBub3Qgc3VwcG9ydCB0aGUKKysgICBwb3Bjb3VudCB3b3JkIGFuZCBkb3VibGUgd29yZCBp bnN0cnVjdGlvbnMuICAqLworKworKyNpZm5kZWYgSEFWRV9BU19QT1BDTlRECisrI3VuZGVmICBU QVJHRVRfUE9QQ05URAorKyNkZWZpbmUgVEFSR0VUX1BPUENOVEQgMAorKyNlbmRpZgorKworICNp Zm5kZWYgVEFSR0VUX1NFQ1VSRV9QTFQKKyAjZGVmaW5lIFRBUkdFVF9TRUNVUkVfUExUIDAKKyAj ZW5kaWYKK0BAIC0yOTUsNiArMzExLDcgQEAgZW51bSBwcm9jZXNzb3JfdHlwZQorICAgIFBST0NF U1NPUl9QT1dFUjQsCisgICAgUFJPQ0VTU09SX1BPV0VSNSwKKyAgICBQUk9DRVNTT1JfUE9XRVI2 LAorKyAgIFBST0NFU1NPUl9QT1dFUjcsCisgICAgUFJPQ0VTU09SX0NFTEwKKyB9OworIAorQEAg LTM4OCw5ICs0MDUsMTMgQEAgZXh0ZXJuIHN0cnVjdCByczYwMDBfY3B1X3NlbGVjdCByczYwMDBf cworIGV4dGVybiBjb25zdCBjaGFyICpyczYwMDBfZGVidWdfbmFtZTsJLyogTmFtZSBmb3IgLW1k ZWJ1Zy14eHh4IG9wdGlvbiAqLworIGV4dGVybiBpbnQgcnM2MDAwX2RlYnVnX3N0YWNrOwkJLyog ZGVidWcgc3RhY2sgYXBwbGljYXRpb25zICovCisgZXh0ZXJuIGludCByczYwMDBfZGVidWdfYXJn OwkJLyogZGVidWcgYXJndW1lbnQgaGFuZGxpbmcgKi8KKytleHRlcm4gaW50IHJzNjAwMF9kZWJ1 Z19yZWc7CQkvKiBkZWJ1ZyByZWdpc3RlciBoYW5kbGluZyAqLworK2V4dGVybiBpbnQgcnM2MDAw X2RlYnVnX2FkZHI7CQkvKiBkZWJ1ZyBtZW1vcnkgYWRkcmVzc2luZyAqLworIAorICNkZWZpbmUJ VEFSR0VUX0RFQlVHX1NUQUNLCXJzNjAwMF9kZWJ1Z19zdGFjaworICNkZWZpbmUJVEFSR0VUX0RF QlVHX0FSRwlyczYwMDBfZGVidWdfYXJnCisrI2RlZmluZSBUQVJHRVRfREVCVUdfUkVHCXJzNjAw MF9kZWJ1Z19yZWcKKysjZGVmaW5lIFRBUkdFVF9ERUJVR19BRERSCXJzNjAwMF9kZWJ1Z19hZGRy CisgCisgZXh0ZXJuIGNvbnN0IGNoYXIgKnJzNjAwMF90cmFjZWJhY2tfbmFtZTsgLyogVHlwZSBv ZiB0cmFjZWJhY2sgdGFibGUuICAqLworIAorQEAgLTQwMSwxMyArNDIyLDY1IEBAIGV4dGVybiBp bnQgcnM2MDAwX2llZWVxdWFkOworIGV4dGVybiBpbnQgcnM2MDAwX2FsdGl2ZWNfYWJpOworIGV4 dGVybiBpbnQgcnM2MDAwX3NwZV9hYmk7CisgZXh0ZXJuIGludCByczYwMDBfc3BlOworLWV4dGVy biBpbnQgcnM2MDAwX2lzZWw7CisgZXh0ZXJuIGludCByczYwMDBfZmxvYXRfZ3ByczsKKyBleHRl cm4gaW50IHJzNjAwMF9hbGlnbm1lbnRfZmxhZ3M7CisgZXh0ZXJuIGNvbnN0IGNoYXIgKnJzNjAw MF9zY2hlZF9pbnNlcnRfbm9wc19zdHI7CisgZXh0ZXJuIGVudW0gcnM2MDAwX25vcF9pbnNlcnRp b24gcnM2MDAwX3NjaGVkX2luc2VydF9ub3BzOworIGV4dGVybiBpbnQgcnM2MDAwX3hpbGlueF9m cHU7CisgCisrLyogRGVzY3JpYmUgd2hpY2ggdmVjdG9yIHVuaXQgdG8gdXNlIGZvciBhIGdpdmVu IG1hY2hpbmUgbW9kZS4gICovCisrZW51bSByczYwMDBfdmVjdG9yIHsKKysgIFZFQ1RPUl9OT05F LAkJCS8qIFR5cGUgaXMgbm90ICBhIHZlY3RvciBvciBub3Qgc3VwcG9ydGVkICovCisrICBWRUNU T1JfQUxUSVZFQywJCS8qIFVzZSBhbHRpdmVjIGZvciB2ZWN0b3IgcHJvY2Vzc2luZyAqLworKyAg VkVDVE9SX1ZTWCwJCQkvKiBVc2UgVlNYIGZvciB2ZWN0b3IgcHJvY2Vzc2luZyAqLworKyAgVkVD VE9SX1BBSVJFRCwJCS8qIFVzZSBwYWlyZWQgZmxvYXRpbmcgcG9pbnQgZm9yIHZlY3RvcnMgKi8K KysgIFZFQ1RPUl9TUEUsCQkJLyogVXNlIFNQRSBmb3IgdmVjdG9yIHByb2Nlc3NpbmcgKi8KKysg IFZFQ1RPUl9PVEhFUgkJCS8qIFNvbWUgb3RoZXIgdmVjdG9yIHVuaXQgKi8KKyt9OworKworK2V4 dGVybiBlbnVtIHJzNjAwMF92ZWN0b3IgcnM2MDAwX3ZlY3Rvcl91bml0W107CisrCisrI2RlZmlu ZSBWRUNUT1JfVU5JVF9OT05FX1AoTU9ERSkJCQlcCisrICAocnM2MDAwX3ZlY3Rvcl91bml0WyhN T0RFKV0gPT0gVkVDVE9SX05PTkUpCisrCisrI2RlZmluZSBWRUNUT1JfVU5JVF9WU1hfUChNT0RF KQkJCQlcCisrICAocnM2MDAwX3ZlY3Rvcl91bml0WyhNT0RFKV0gPT0gVkVDVE9SX1ZTWCkKKysK KysjZGVmaW5lIFZFQ1RPUl9VTklUX0FMVElWRUNfUChNT0RFKQkJCVwKKysgIChyczYwMDBfdmVj dG9yX3VuaXRbKE1PREUpXSA9PSBWRUNUT1JfQUxUSVZFQykKKysKKysjZGVmaW5lIFZFQ1RPUl9V TklUX0FMVElWRUNfT1JfVlNYX1AoTU9ERSkJCVwKKysgIChyczYwMDBfdmVjdG9yX3VuaXRbKE1P REUpXSA9PSBWRUNUT1JfQUxUSVZFQyAJXAorKyAgIHx8IHJzNjAwMF92ZWN0b3JfdW5pdFsoTU9E RSldID09IFZFQ1RPUl9WU1gpCisrCisrLyogRGVzY3JpYmUgd2hldGhlciB0byB1c2UgVlNYIGxv YWRzIG9yIEFsdGl2ZWMgbG9hZHMuICBGb3Igbm93LCBqdXN0IHVzZSB0aGUKKysgICBzYW1lIHVu aXQgYXMgdGhlIHZlY3RvciB1bml0IHdlIGFyZSB1c2luZywgYnV0IHdlIG1heSB3YW50IHRvIG1p Z3JhdGUgdG8KKysgICB1c2luZyBWU1ggc3R5bGUgbG9hZHMgZXZlbiBmb3IgdHlwZXMgaGFuZGxl ZCBieSBhbHRpdmVjLiAgKi8KKytleHRlcm4gZW51bSByczYwMDBfdmVjdG9yIHJzNjAwMF92ZWN0 b3JfbWVtW107CisrCisrI2RlZmluZSBWRUNUT1JfTUVNX05PTkVfUChNT0RFKQkJCQlcCisrICAo cnM2MDAwX3ZlY3Rvcl9tZW1bKE1PREUpXSA9PSBWRUNUT1JfTk9ORSkKKysKKysjZGVmaW5lIFZF Q1RPUl9NRU1fVlNYX1AoTU9ERSkJCQkJXAorKyAgKHJzNjAwMF92ZWN0b3JfbWVtWyhNT0RFKV0g PT0gVkVDVE9SX1ZTWCkKKysKKysjZGVmaW5lIFZFQ1RPUl9NRU1fQUxUSVZFQ19QKE1PREUpCQkJ XAorKyAgKHJzNjAwMF92ZWN0b3JfbWVtWyhNT0RFKV0gPT0gVkVDVE9SX0FMVElWRUMpCisrCisr I2RlZmluZSBWRUNUT1JfTUVNX0FMVElWRUNfT1JfVlNYX1AoTU9ERSkJCVwKKysgIChyczYwMDBf dmVjdG9yX21lbVsoTU9ERSldID09IFZFQ1RPUl9BTFRJVkVDIAlcCisrICAgfHwgcnM2MDAwX3Zl Y3Rvcl9tZW1bKE1PREUpXSA9PSBWRUNUT1JfVlNYKQorKworKy8qIFJldHVybiB0aGUgYWxpZ25t ZW50IG9mIGEgZ2l2ZW4gdmVjdG9yIHR5cGUsIHdoaWNoIGlzIHNldCBiYXNlZCBvbiB0aGUKKysg ICB2ZWN0b3IgdW5pdCB1c2UuICBWU1ggZm9yIGluc3RhbmNlIGNhbiBsb2FkIDMyIG9yIDY0IGJp dCBhbGlnbmVkIHdvcmRzCisrICAgd2l0aG91dCBwcm9ibGVtcywgd2hpbGUgQWx0aXZlYyByZXF1 aXJlcyAxMjgtYml0IGFsaWduZWQgdmVjdG9ycy4gICovCisrZXh0ZXJuIGludCByczYwMDBfdmVj dG9yX2FsaWduW107CisrCisrI2RlZmluZSBWRUNUT1JfQUxJR04oTU9ERSkJCQkJCQlcCisrICAo KHJzNjAwMF92ZWN0b3JfYWxpZ25bKE1PREUpXSAhPSAwKQkJCQkJXAorKyAgID8gcnM2MDAwX3Zl Y3Rvcl9hbGlnblsoTU9ERSldCQkJCQlcCisrICAgOiAoaW50KUdFVF9NT0RFX0JJVFNJWkUgKChN T0RFKSkpCisrCisgLyogQWxpZ25tZW50IG9wdGlvbnMgZm9yIGZpZWxkcyBpbiBzdHJ1Y3R1cmVz IGZvciBzdWItdGFyZ2V0cyBmb2xsb3dpbmcKKyAgICBBSVgtbGlrZSBBQkkuCisgICAgQUxJR05f UE9XRVIgd29yZC1hbGlnbnMgRlAgZG91YmxlcyAoZGVmYXVsdCBBSVggQUJJKS4KK0BAIC00MzIs NyArNTA1LDcgQEAgZXh0ZXJuIGludCByczYwMDBfeGlsaW54X2ZwdTsKKyAjZGVmaW5lIFRBUkdF VF9TUEVfQUJJIDAKKyAjZGVmaW5lIFRBUkdFVF9TUEUgMAorICNkZWZpbmUgVEFSR0VUX0U1MDAg MAorLSNkZWZpbmUgVEFSR0VUX0lTRUwgcnM2MDAwX2lzZWwKKysjZGVmaW5lIFRBUkdFVF9JU0VM NjQgKFRBUkdFVF9JU0VMICYmIFRBUkdFVF9QT1dFUlBDNjQpCisgI2RlZmluZSBUQVJHRVRfRlBS UyAxCisgI2RlZmluZSBUQVJHRVRfRTUwMF9TSU5HTEUgMAorICNkZWZpbmUgVEFSR0VUX0U1MDBf RE9VQkxFIDAKK0BAIC01MzAsNiArNjAzLDcgQEAgZXh0ZXJuIGludCByczYwMDBfeGlsaW54X2Zw dTsKKyAjZW5kaWYKKyAjZGVmaW5lIFVOSVRTX1BFUl9GUF9XT1JEIDgKKyAjZGVmaW5lIFVOSVRT X1BFUl9BTFRJVkVDX1dPUkQgMTYKKysjZGVmaW5lIFVOSVRTX1BFUl9WU1hfV09SRCAxNgorICNk ZWZpbmUgVU5JVFNfUEVSX1NQRV9XT1JEIDgKKyAjZGVmaW5lIFVOSVRTX1BFUl9QQUlSRURfV09S RCA4CisgCitAQCAtNjAwLDggKzY3NCw5IEBAIGV4dGVybiBpbnQgcnM2MDAwX3hpbGlueF9mcHU7 CisgI2RlZmluZSBQQVJNX0JPVU5EQVJZIChUQVJHRVRfMzJCSVQgPyAzMiA6IDY0KQorIAorIC8q IEJvdW5kYXJ5IChpbiAqYml0cyopIG9uIHdoaWNoIHN0YWNrIHBvaW50ZXIgc2hvdWxkIGJlIGFs aWduZWQuICAqLworLSNkZWZpbmUgU1RBQ0tfQk9VTkRBUlkgXAorLSAgKChUQVJHRVRfMzJCSVQg JiYgIVRBUkdFVF9BTFRJVkVDICYmICFUQVJHRVRfQUxUSVZFQ19BQkkpID8gNjQgOiAxMjgpCisr I2RlZmluZSBTVEFDS19CT1VOREFSWQlcCisrICAoKFRBUkdFVF8zMkJJVCAmJiAhVEFSR0VUX0FM VElWRUMgJiYgIVRBUkdFVF9BTFRJVkVDX0FCSSAmJiAhVEFSR0VUX1ZTWCkgXAorKyAgICA/IDY0 IDogMTI4KQorIAorIC8qIEFsbG9jYXRpb24gYm91bmRhcnkgKGluICpiaXRzKikgZm9yIHRoZSBj b2RlIG9mIGEgZnVuY3Rpb24uICAqLworICNkZWZpbmUgRlVOQ1RJT05fQk9VTkRBUlkgMzIKK0BA IC02MTMsMTAgKzY4OCwxMSBAQCBleHRlcm4gaW50IHJzNjAwMF94aWxpbnhfZnB1OworICAgIGxv Y2FsIHN0b3JlLiAgVFlQRSBpcyB0aGUgZGF0YSB0eXBlLCBhbmQgQUxJR04gaXMgdGhlIGFsaWdu bWVudAorICAgIHRoYXQgdGhlIG9iamVjdCB3b3VsZCBvcmRpbmFyaWx5IGhhdmUuICAqLworICNk ZWZpbmUgTE9DQUxfQUxJR05NRU5UKFRZUEUsIEFMSUdOKQkJCQlcCistICAoKFRBUkdFVF9BTFRJ VkVDICYmIFRSRUVfQ09ERSAoVFlQRSkgPT0gVkVDVE9SX1RZUEUpID8gMTI4IDoJXAorKyAgKCgo VEFSR0VUX0FMVElWRUMgfHwgVEFSR0VUX1ZTWCkJCQkJXAorKyAgICAmJiBUUkVFX0NPREUgKFRZ UEUpID09IFZFQ1RPUl9UWVBFKSA/IDEyOCA6CQkJXAorICAgICAoVEFSR0VUX0U1MDBfRE9VQkxF CQkJCQkJXAorLSAgICAgJiYgVFlQRV9NT0RFIChUWVBFKSA9PSBERm1vZGUpID8gNjQgOiBcCist ICAgICgoVEFSR0VUX1NQRSAmJiBUUkVFX0NPREUgKFRZUEUpID09IFZFQ1RPUl9UWVBFIFwKKysg ICAgICYmIFRZUEVfTU9ERSAoVFlQRSkgPT0gREZtb2RlKSA/IDY0IDoJCQlcCisrICAgICgoVEFS R0VUX1NQRSAmJiBUUkVFX0NPREUgKFRZUEUpID09IFZFQ1RPUl9UWVBFCQlcCisgICAgICAmJiBT UEVfVkVDVE9SX01PREUgKFRZUEVfTU9ERSAoVFlQRSkpKSB8fCAoVEFSR0VUX1BBSVJFRF9GTE9B VCBcCisgICAgICAgICAmJiBUUkVFX0NPREUgKFRZUEUpID09IFZFQ1RPUl9UWVBFIFwKKyAgICAg ICAgICYmIFBBSVJFRF9WRUNUT1JfTU9ERSAoVFlQRV9NT0RFIChUWVBFKSkpKSA/IDY0IDogQUxJ R04pCitAQCAtNjc0LDE1ICs3NTAsMTcgQEAgZXh0ZXJuIGludCByczYwMDBfeGlsaW54X2ZwdTsK KyAvKiBEZWZpbmUgdGhpcyBtYWNybyB0byBiZSB0aGUgdmFsdWUgMSBpZiB1bmFsaWduZWQgYWNj ZXNzZXMgaGF2ZSBhIGNvc3QKKyAgICBtYW55IHRpbWVzIGdyZWF0ZXIgdGhhbiBhbGlnbmVkIGFj Y2Vzc2VzLCBmb3IgZXhhbXBsZSBpZiB0aGV5IGFyZQorICAgIGVtdWxhdGVkIGluIGEgdHJhcCBo YW5kbGVyLiAgKi8KKy0vKiBBbHRpdmVjIHZlY3RvciBtZW1vcnkgaW5zdHJ1Y3Rpb25zIHNpbXBs eSBpZ25vcmUgdGhlIGxvdyBiaXRzOyBTUEUKKy0gICB2ZWN0b3IgbWVtb3J5IGluc3RydWN0aW9u cyB0cmFwIG9uIHVuYWxpZ25lZCBhY2Nlc3Nlcy4gICovCisrLyogQWx0aXZlYyB2ZWN0b3IgbWVt b3J5IGluc3RydWN0aW9ucyBzaW1wbHkgaWdub3JlIHRoZSBsb3cgYml0czsgU1BFIHZlY3Rvcgor KyAgIG1lbW9yeSBpbnN0cnVjdGlvbnMgdHJhcCBvbiB1bmFsaWduZWQgYWNjZXNzZXM7IFZTWCBt ZW1vcnkgaW5zdHJ1Y3Rpb25zIGFyZQorKyAgIGFsaWduZWQgdG8gNCBvciA4IGJ5dGVzLiAgKi8K KyAjZGVmaW5lIFNMT1dfVU5BTElHTkVEX0FDQ0VTUyhNT0RFLCBBTElHTikJCQkJXAorICAgKFNU UklDVF9BTElHTk1FTlQJCQkJCQkJXAorICAgIHx8ICgoKE1PREUpID09IFNGbW9kZSB8fCAoTU9E RSkgPT0gREZtb2RlIHx8IChNT0RFKSA9PSBURm1vZGUJXAorIAl8fCAoTU9ERSkgPT0gU0Rtb2Rl IHx8IChNT0RFKSA9PSBERG1vZGUgfHwgKE1PREUpID09IFREbW9kZQlcCisgCXx8IChNT0RFKSA9 PSBESW1vZGUpCQkJCQkJXAorICAgICAgICAmJiAoQUxJR04pIDwgMzIpCQkJCQkJCVwKKy0gICB8 fCAoVkVDVE9SX01PREVfUCAoKE1PREUpKSAmJiAoQUxJR04pIDwgR0VUX01PREVfQklUU0laRSAo KE1PREUpKSkpCisrICAgfHwgKFZFQ1RPUl9NT0RFX1AgKChNT0RFKSkgJiYgKCgoaW50KShBTElH TikpIDwgVkVDVE9SX0FMSUdOIChNT0RFKSkpKQorKworIAwKKyAvKiBTdGFuZGFyZCByZWdpc3Rl ciB1c2FnZS4gICovCisgCitAQCAtOTA5LDE2ICs5ODcsNjAgQEAgZXh0ZXJuIGludCByczYwMDBf eGlsaW54X2ZwdTsKKyAvKiBUcnVlIGlmIHJlZ2lzdGVyIGlzIGFuIEFsdGlWZWMgcmVnaXN0ZXIu ICAqLworICNkZWZpbmUgQUxUSVZFQ19SRUdOT19QKE4pICgoTikgPj0gRklSU1RfQUxUSVZFQ19S RUdOTyAmJiAoTikgPD0gTEFTVF9BTFRJVkVDX1JFR05PKQorIAorKy8qIFRydWUgaWYgcmVnaXN0 ZXIgaXMgYSBWU1ggcmVnaXN0ZXIuICAqLworKyNkZWZpbmUgVlNYX1JFR05PX1AoTikgKEZQX1JF R05PX1AgKE4pIHx8IEFMVElWRUNfUkVHTk9fUCAoTikpCisrCisrLyogQWx0ZXJuYXRlIG5hbWUg Zm9yIGFueSB2ZWN0b3IgcmVnaXN0ZXIgc3VwcG9ydGluZyBmbG9hdGluZyBwb2ludCwgbm8gbWF0 dGVyCisrICAgd2hpY2ggaW5zdHJ1Y3Rpb24gc2V0KHMpIGFyZSBhdmFpbGFibGUuICAqLworKyNk ZWZpbmUgVkZMT0FUX1JFR05PX1AoTikgXAorKyAgKEFMVElWRUNfUkVHTk9fUCAoTikgfHwgKFRB UkdFVF9WU1ggJiYgRlBfUkVHTk9fUCAoTikpKQorKworKy8qIEFsdGVybmF0ZSBuYW1lIGZvciBh bnkgdmVjdG9yIHJlZ2lzdGVyIHN1cHBvcnRpbmcgaW50ZWdlciwgbm8gbWF0dGVyIHdoaWNoCisr ICAgaW5zdHJ1Y3Rpb24gc2V0KHMpIGFyZSBhdmFpbGFibGUuICAqLworKyNkZWZpbmUgVklOVF9S RUdOT19QKE4pIEFMVElWRUNfUkVHTk9fUCAoTikKKysKKysvKiBBbHRlcm5hdGUgbmFtZSBmb3Ig YW55IHZlY3RvciByZWdpc3RlciBzdXBwb3J0aW5nIGxvZ2ljYWwgb3BlcmF0aW9ucywgbm8KKysg ICBtYXR0ZXIgd2hpY2ggaW5zdHJ1Y3Rpb24gc2V0KHMpIGFyZSBhdmFpbGFibGUuICAqLworKyNk ZWZpbmUgVkxPR0lDQUxfUkVHTk9fUChOKSBWRkxPQVRfUkVHTk9fUCAoTikKKysKKyAvKiBSZXR1 cm4gbnVtYmVyIG9mIGNvbnNlY3V0aXZlIGhhcmQgcmVncyBuZWVkZWQgc3RhcnRpbmcgYXQgcmVn IFJFR05PCisgICAgdG8gaG9sZCBzb21ldGhpbmcgb2YgbW9kZSBNT0RFLiAgKi8KKyAKKy0jZGVm aW5lIEhBUkRfUkVHTk9fTlJFR1MoUkVHTk8sIE1PREUpIHJzNjAwMF9oYXJkX3JlZ25vX25yZWdz ICgoUkVHTk8pLCAoTU9ERSkpCisrI2RlZmluZSBIQVJEX1JFR05PX05SRUdTKFJFR05PLCBNT0RF KSByczYwMDBfaGFyZF9yZWdub19ucmVnc1soTU9ERSldWyhSRUdOTyldCisgCisgI2RlZmluZSBI QVJEX1JFR05PX0NBTExfUEFSVF9DTE9CQkVSRUQoUkVHTk8sIE1PREUpCVwKKyAgICgoVEFSR0VU XzMyQklUICYmIFRBUkdFVF9QT1dFUlBDNjQJCQlcCisgICAgICYmIChHRVRfTU9ERV9TSVpFIChN T0RFKSA+IDQpICBcCisgICAgICYmIElOVF9SRUdOT19QIChSRUdOTykpID8gMSA6IDApCisgCisr I2RlZmluZSBWU1hfVkVDVE9SX01PREUoTU9ERSkJCVwKKysJICgoTU9ERSkgPT0gVjRTRm1vZGUJ CVwKKysJICB8fCAoTU9ERSkgPT0gVjJERm1vZGUpCVwKKysKKysjZGVmaW5lIFZTWF9WRUNUT1Jf TU9WRV9NT0RFKE1PREUpCVwKKysJICgoTU9ERSkgPT0gVjE2UUltb2RlCQlcCisrCSAgfHwgKE1P REUpID09IFY4SEltb2RlCQlcCisrCSAgfHwgKE1PREUpID09IFY0U0ltb2RlCQlcCisrCSAgfHwg KE1PREUpID09IFYyREltb2RlCQlcCisrCSAgfHwgKE1PREUpID09IFY0U0Ztb2RlCQlcCisrCSAg fHwgKE1PREUpID09IFYyREZtb2RlKQlcCisrCisrI2RlZmluZSBWU1hfU0NBTEFSX01PREUoTU9E RSkJCVwKKysJKChNT0RFKSA9PSBERm1vZGUpCisrCisrI2RlZmluZSBWU1hfTU9ERShNT0RFKQkJ CVwKKysJKFZTWF9WRUNUT1JfTU9ERSAoTU9ERSkJCVwKKysJIHx8IFZTWF9TQ0FMQVJfTU9ERSAo TU9ERSkpCisrCisrI2RlZmluZSBWU1hfTU9WRV9NT0RFKE1PREUpCQlcCisrCShWU1hfVkVDVE9S X01PVkVfTU9ERSAoTU9ERSkJXAorKwkgfHwgVlNYX1NDQUxBUl9NT0RFKE1PREUpCVwKKysJIHx8 IChNT0RFKSA9PSBWMTZRSW1vZGUJCVwKKysJIHx8IChNT0RFKSA9PSBWOEhJbW9kZQkJXAorKwkg fHwgKE1PREUpID09IFY0U0ltb2RlCQlcCisrCSB8fCAoTU9ERSkgPT0gVjJESW1vZGUJCVwKKysJ IHx8IChNT0RFKSA9PSBUSW1vZGUpCisrCisgI2RlZmluZSBBTFRJVkVDX1ZFQ1RPUl9NT0RFKE1P REUpCVwKKyAJICgoTU9ERSkgPT0gVjE2UUltb2RlCQlcCisgCSAgfHwgKE1PREUpID09IFY4SElt b2RlCQlcCitAQCAtOTM0LDEwICsxMDU2LDEyIEBAIGV4dGVybiBpbnQgcnM2MDAwX3hpbGlueF9m cHU7CisgI2RlZmluZSBQQUlSRURfVkVDVE9SX01PREUoTU9ERSkgICAgICAgIFwKKyAgICAgICAg ICAoKE1PREUpID09IFYyU0Ztb2RlKSAgICAgICAgICAgIAorIAorLSNkZWZpbmUgVU5JVFNfUEVS X1NJTURfV09SRChNT0RFKQkJCQkgICAgIFwKKy0JKFRBUkdFVF9BTFRJVkVDID8gVU5JVFNfUEVS X0FMVElWRUNfV09SRAkJICAgICBcCistCSA6IChUQVJHRVRfU1BFID8gVU5JVFNfUEVSX1NQRV9X T1JEIDogKFRBUkdFVF9QQUlSRURfRkxPQVQgPyBcCistCSBVTklUU19QRVJfUEFJUkVEX1dPUkQg OiBVTklUU19QRVJfV09SRCkpKQorKyNkZWZpbmUgVU5JVFNfUEVSX1NJTURfV09SRChNT0RFKQkJ CQkJXAorKwkoVEFSR0VUX1ZTWCA/IFVOSVRTX1BFUl9WU1hfV09SRAkJCQlcCisrCSA6IChUQVJH RVRfQUxUSVZFQyA/IFVOSVRTX1BFUl9BTFRJVkVDX1dPUkQJCQlcCisrCSA6IChUQVJHRVRfU1BF ID8gVU5JVFNfUEVSX1NQRV9XT1JECQkJCVwKKysJIDogKFRBUkdFVF9QQUlSRURfRkxPQVQgPyBV TklUU19QRVJfUEFJUkVEX1dPUkQJCQlcCisrCSA6IFVOSVRTX1BFUl9XT1JEKSkpKQorIAorIC8q IFZhbHVlIGlzIFRSVUUgaWYgaGFyZCByZWdpc3RlciBSRUdOTyBjYW4gaG9sZCBhIHZhbHVlIG9m CisgICAgbWFjaGluZS1tb2RlIE1PREUuICAqLworQEAgLTk2NSw2ICsxMDg5LDEwIEBAIGV4dGVy biBpbnQgcnM2MDAwX3hpbGlueF9mcHU7CisgICAgPyBBTFRJVkVDX1ZFQ1RPUl9NT0RFIChNT0RF MikJCVwKKyAgICA6IEFMVElWRUNfVkVDVE9SX01PREUgKE1PREUyKQkJXAorICAgID8gQUxUSVZF Q19WRUNUT1JfTU9ERSAoTU9ERTEpCQlcCisrICAgOiBWU1hfVkVDVE9SX01PREUgKE1PREUxKQkJ CVwKKysgICA/IFZTWF9WRUNUT1JfTU9ERSAoTU9ERTIpCQkJXAorKyAgIDogVlNYX1ZFQ1RPUl9N T0RFIChNT0RFMikJCQlcCisrICAgPyBWU1hfVkVDVE9SX01PREUgKE1PREUxKQkJCVwKKyAgICA6 IDEpCisgCisgLyogUG9zdC1yZWxvYWQsIHdlIGNhbid0IHVzZSBhbnkgbmV3IEFsdGlWZWMgcmVn aXN0ZXJzLCBhcyB3ZSBhbHJlYWR5CitAQCAtMTA1Niw5ICsxMTg0LDEwIEBAIGV4dGVybiBpbnQg cnM2MDAwX3hpbGlueF9mcHU7CisgICAgRm9yIGFueSB0d28gY2xhc3NlcywgaXQgaXMgdmVyeSBk ZXNpcmFibGUgdGhhdCB0aGVyZSBiZSBhbm90aGVyCisgICAgY2xhc3MgdGhhdCByZXByZXNlbnRz IHRoZWlyIHVuaW9uLiAgKi8KKyAKKy0vKiBUaGUgUlMvNjAwMCBoYXMgdGhyZWUgdHlwZXMgb2Yg cmVnaXN0ZXJzLCBmaXhlZC1wb2ludCwgZmxvYXRpbmctcG9pbnQsCistICAgYW5kIGNvbmRpdGlv biByZWdpc3RlcnMsIHBsdXMgdGhyZWUgc3BlY2lhbCByZWdpc3RlcnMsIE1RLCBDVFIsIGFuZCB0 aGUKKy0gICBsaW5rIHJlZ2lzdGVyLiAgQWx0aVZlYyBhZGRzIGEgdmVjdG9yIHJlZ2lzdGVyIGNs YXNzLgorKy8qIFRoZSBSUy82MDAwIGhhcyB0aHJlZSB0eXBlcyBvZiByZWdpc3RlcnMsIGZpeGVk LXBvaW50LCBmbG9hdGluZy1wb2ludCwgYW5kCisrICAgY29uZGl0aW9uIHJlZ2lzdGVycywgcGx1 cyB0aHJlZSBzcGVjaWFsIHJlZ2lzdGVycywgTVEsIENUUiwgYW5kIHRoZSBsaW5rCisrICAgcmVn aXN0ZXIuICBBbHRpVmVjIGFkZHMgYSB2ZWN0b3IgcmVnaXN0ZXIgY2xhc3MuICBWU1ggcmVnaXN0 ZXJzIG92ZXJsYXAgdGhlCisrICAgRlBSIHJlZ2lzdGVycyBhbmQgdGhlIEFsdGl2ZWMgcmVnaXN0 ZXJzLgorIAorICAgIEhvd2V2ZXIsIHIwIGlzIHNwZWNpYWwgaW4gdGhhdCBpdCBjYW5ub3QgYmUg dXNlZCBhcyBhIGJhc2UgcmVnaXN0ZXIuCisgICAgU28gbWFrZSBhIGNsYXNzIGZvciByZWdpc3Rl cnMgdmFsaWQgYXMgYmFzZSByZWdpc3RlcnMuCitAQCAtMTA3Myw2ICsxMjAyLDcgQEAgZW51bSBy ZWdfY2xhc3MKKyAgIEdFTkVSQUxfUkVHUywKKyAgIEZMT0FUX1JFR1MsCisgICBBTFRJVkVDX1JF R1MsCisrICBWU1hfUkVHUywKKyAgIFZSU0FWRV9SRUdTLAorICAgVlNDUl9SRUdTLAorICAgU1BF X0FDQ19SRUdTLAorQEAgLTExMDMsNiArMTIzMyw3IEBAIGVudW0gcmVnX2NsYXNzCisgICAiR0VO RVJBTF9SRUdTIiwJCQkJCQkJXAorICAgIkZMT0FUX1JFR1MiLAkJCQkJCQkJXAorICAgIkFMVElW RUNfUkVHUyIsCQkJCQkJCVwKKysgICJWU1hfUkVHUyIsCQkJCQkJCQlcCisgICAiVlJTQVZFX1JF R1MiLAkJCQkJCQlcCisgICAiVlNDUl9SRUdTIiwJCQkJCQkJCVwKKyAgICJTUEVfQUNDX1JFR1Mi LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CitAQCAtMTEzMiw2ICsxMjYzLDcgQEAgZW51bSByZWdfY2xhc3MKKyAgIHsgMHhmZmZmZmZmZiwg MHgwMDAwMDAwMCwgMHgwMDAwMDAwOCwgMHgwMDAyMDAwMCB9LCAvKiBHRU5FUkFMX1JFR1MgKi8g ICAgIFwKKyAgIHsgMHgwMDAwMDAwMCwgMHhmZmZmZmZmZiwgMHgwMDAwMDAwMCwgMHgwMDAwMDAw MCB9LCAvKiBGTE9BVF9SRUdTICovICAgICAgIFwKKyAgIHsgMHgwMDAwMDAwMCwgMHgwMDAwMDAw MCwgMHhmZmZmZTAwMCwgMHgwMDAwMWZmZiB9LCAvKiBBTFRJVkVDX1JFR1MgKi8gICAgIFwKKysg IHsgMHgwMDAwMDAwMCwgMHhmZmZmZmZmZiwgMHhmZmZmZTAwMCwgMHgwMDAwMWZmZiB9LCAvKiBW U1hfUkVHUyAqLwkgICAgIFwKKyAgIHsgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAw MCwgMHgwMDAwMjAwMCB9LCAvKiBWUlNBVkVfUkVHUyAqLwkgICAgIFwKKyAgIHsgMHgwMDAwMDAw MCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwNDAwMCB9LCAvKiBWU0NSX1JFR1MgKi8J ICAgICBcCisgICB7IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDgw MDAgfSwgLyogU1BFX0FDQ19SRUdTICovICAgICBcCitAQCAtMTE3OSw4ICsxMzExLDggQEAgZW51 bSByZWdfY2xhc3MKKyAgIDogKFJFR05PKSA9PSBDUjBfUkVHTk8gPyBDUjBfUkVHUwkJXAorICAg OiBDUl9SRUdOT19QIChSRUdOTykgPyBDUl9SRUdTCQlcCisgICA6IChSRUdOTykgPT0gTVFfUkVH Tk8gPyBNUV9SRUdTCQlcCistICA6IChSRUdOTykgPT0gTFJfUkVHTk8gPyBMSU5LX1JFR1MJXAor LSAgOiAoUkVHTk8pID09IENUUl9SRUdOTyA/IENUUl9SRUdTCVwKKysgIDogKFJFR05PKSA9PSBM Ul9SRUdOTyA/IExJTktfUkVHUwkJXAorKyAgOiAoUkVHTk8pID09IENUUl9SRUdOTyA/IENUUl9S RUdTCQlcCisgICA6IChSRUdOTykgPT0gQVJHX1BPSU5URVJfUkVHTlVNID8gQkFTRV9SRUdTCVwK KyAgIDogKFJFR05PKSA9PSBYRVJfUkVHTk8gPyBYRVJfUkVHUwkJXAorICAgOiAoUkVHTk8pID09 IFZSU0FWRV9SRUdOTyA/IFZSU0FWRV9SRUdTCVwKK0BAIC0xMTkwLDEwICsxMzIyLDE4IEBAIGVu dW0gcmVnX2NsYXNzCisgICA6IChSRUdOTykgPT0gRlJBTUVfUE9JTlRFUl9SRUdOVU0gPyBCQVNF X1JFR1MJXAorICAgOiBOT19SRUdTKQorIAorKy8qIFZTWCByZWdpc3RlciBjbGFzc2VzLiAgKi8K KytleHRlcm4gZW51bSByZWdfY2xhc3MgcnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3NbXTsKKytleHRl cm4gZW51bSByZWdfY2xhc3MgcnM2MDAwX3ZzeF9yZWdfY2xhc3M7CisrCisgLyogVGhlIGNsYXNz IHZhbHVlIGZvciBpbmRleCByZWdpc3RlcnMsIGFuZCB0aGUgb25lIGZvciBiYXNlIHJlZ3MuICAq LworICNkZWZpbmUgSU5ERVhfUkVHX0NMQVNTIEdFTkVSQUxfUkVHUworICNkZWZpbmUgQkFTRV9S RUdfQ0xBU1MgQkFTRV9SRUdTCisgCisrLyogUmV0dXJuIHdoZXRoZXIgYSBnaXZlbiByZWdpc3Rl ciBjbGFzcyBjYW4gaG9sZCBWU1ggb2JqZWN0cy4gICovCisrI2RlZmluZSBWU1hfUkVHX0NMQVNT X1AoQ0xBU1MpCQkJXAorKyAgKChDTEFTUykgPT0gVlNYX1JFR1MgfHwgKENMQVNTKSA9PSBGTE9B VF9SRUdTIHx8IChDTEFTUykgPT0gQUxUSVZFQ19SRUdTKQorKworIC8qIEdpdmVuIGFuIHJ0eCBY IGJlaW5nIHJlbG9hZGVkIGludG8gYSByZWcgcmVxdWlyZWQgdG8gYmUKKyAgICBpbiBjbGFzcyBD TEFTUywgcmV0dXJuIHRoZSBjbGFzcyBvZiByZWcgdG8gYWN0dWFsbHkgdXNlLgorICAgIEluIGdl bmVyYWwgdGhpcyBpcyBqdXN0IENMQVNTOyBidXQgb24gc29tZSBtYWNoaW5lcworQEAgLTEyMTMs MTMgKzEzNTMsNyBAQCBlbnVtIHJlZ19jbGFzcworICAqLworIAorICNkZWZpbmUgUFJFRkVSUkVE X1JFTE9BRF9DTEFTUyhYLENMQVNTKQkJCVwKKy0gICgoQ09OU1RBTlRfUCAoWCkJCQkJCVwKKy0g ICAgJiYgcmVnX2NsYXNzZXNfaW50ZXJzZWN0X3AgKChDTEFTUyksIEZMT0FUX1JFR1MpKQlcCist ICAgPyBOT19SRUdTIAkJCQkJCVwKKy0gICA6IChHRVRfTU9ERV9DTEFTUyAoR0VUX01PREUgKFgp KSA9PSBNT0RFX0lOVCAJXAorLSAgICAgICYmIChDTEFTUykgPT0gTk9OX1NQRUNJQUxfUkVHUykJ CQlcCistICAgPyBHRU5FUkFMX1JFR1MJCQkJCVwKKy0gICA6IChDTEFTUykpCisrICByczYwMDBf cHJlZmVycmVkX3JlbG9hZF9jbGFzcyAoWCwgQ0xBU1MpCisgCisgLyogUmV0dXJuIHRoZSByZWdp c3RlciBjbGFzcyBvZiBhIHNjcmF0Y2ggcmVnaXN0ZXIgbmVlZGVkIHRvIGNvcHkgSU4gaW50bwor ICAgIG9yIG91dCBvZiBhIHJlZ2lzdGVyIGluIENMQVNTIGluIE1PREUuICBJZiBpdCBjYW4gYmUg ZG9uZSBkaXJlY3RseSwKK0BAIC0xMjM0LDE4ICsxMzY4LDcgQEAgZW51bSByZWdfY2xhc3MKKyAg ICBhcmUgYXZhaWxhYmxlLiovCisgCisgI2RlZmluZSBTRUNPTkRBUllfTUVNT1JZX05FRURFRChD TEFTUzEsQ0xBU1MyLE1PREUpCQkJXAorLSAoKENMQVNTMSkgIT0gKENMQVNTMikgJiYgKCgoQ0xB U1MxKSA9PSBGTE9BVF9SRUdTCQkJXAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAo IVRBUkdFVF9NRlBHUFIgfHwgIVRBUkdFVF9QT1dFUlBDNjQJXAorLQkJCQl8fCAoKE1PREUgIT0g REZtb2RlKQkJCVwKKy0JCQkJICAgICYmIChNT0RFICE9IEREbW9kZSkJCQlcCistCQkJCSAgICAm JiAoTU9ERSAhPSBESW1vZGUpKSkpCQlcCistCQkJICAgfHwgKChDTEFTUzIpID09IEZMT0FUX1JF R1MJCQlcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICghVEFSR0VUX01GUEdQ UiB8fCAhVEFSR0VUX1BPV0VSUEM2NAlcCistCQkJCSAgIHx8ICgoTU9ERSAhPSBERm1vZGUpCQkJ XAorLQkJCQkgICAgICAgJiYgKE1PREUgIT0gRERtb2RlKQkJXAorLQkJCQkgICAgICAgJiYgKE1P REUgIT0gREltb2RlKSkpKQkJXAorLQkJCSAgIHx8IChDTEFTUzEpID09IEFMVElWRUNfUkVHUwkJ CVwKKy0JCQkgICB8fCAoQ0xBU1MyKSA9PSBBTFRJVkVDX1JFR1MpKQorKyAgcnM2MDAwX3NlY29u ZGFyeV9tZW1vcnlfbmVlZGVkIChDTEFTUzEsIENMQVNTMiwgTU9ERSkKKyAKKyAvKiBGb3IgY3B1 cyB0aGF0IGNhbm5vdCBsb2FkL3N0b3JlIFNEbW9kZSB2YWx1ZXMgZnJvbSB0aGUgNjQtYml0Cisg ICAgRlAgcmVnaXN0ZXJzIHdpdGhvdXQgdXNpbmcgYSBmdWxsIDY0LWJpdCBsb2FkL3N0b3JlLCB3 ZSBuZWVkCitAQCAtMTI1NywzMiArMTM4MCwxNSBAQCBlbnVtIHJlZ19jbGFzcworIC8qIFJldHVy biB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc2VjdXRpdmUgcmVnaXN0ZXJzCisgICAgbmVlZGVk IHRvIHJlcHJlc2VudCBtb2RlIE1PREUgaW4gYSByZWdpc3RlciBvZiBjbGFzcyBDTEFTUy4KKyAK Ky0gICBPbiBSUy82MDAwLCB0aGlzIGlzIHRoZSBzaXplIG9mIE1PREUgaW4gd29yZHMsCistICAg ZXhjZXB0IGluIHRoZSBGUCByZWdzLCB3aGVyZSBhIHNpbmdsZSByZWcgaXMgZW5vdWdoIGZvciB0 d28gd29yZHMuICAqLworLSNkZWZpbmUgQ0xBU1NfTUFYX05SRUdTKENMQVNTLCBNT0RFKQkJCQkJ XAorLSAoKChDTEFTUykgPT0gRkxPQVRfUkVHUykgCQkJCQkJXAorLSAgPyAoKEdFVF9NT0RFX1NJ WkUgKE1PREUpICsgVU5JVFNfUEVSX0ZQX1dPUkQgLSAxKSAvIFVOSVRTX1BFUl9GUF9XT1JEKSBc CistICA6IChUQVJHRVRfRTUwMF9ET1VCTEUgJiYgKENMQVNTKSA9PSBHRU5FUkFMX1JFR1MJCQlc CistICAgICAmJiAoTU9ERSkgPT0gREZtb2RlKQkJCQlcCistICA/IDEgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAg OiAoKEdFVF9NT0RFX1NJWkUgKE1PREUpICsgVU5JVFNfUEVSX1dPUkQgLSAxKSAvIFVOSVRTX1BF Ul9XT1JEKSkKKysgICBPbiBSUy82MDAwLCB0aGlzIGlzIHRoZSBzaXplIG9mIE1PREUgaW4gd29y ZHMsIGV4Y2VwdCBpbiB0aGUgRlAgcmVncywgd2hlcmUKKysgICBhIHNpbmdsZSByZWcgaXMgZW5v dWdoIGZvciB0d28gd29yZHMsIHVubGVzcyB3ZSBoYXZlIFZTWCwgd2hlcmUgdGhlIEZQCisrICAg cmVnaXN0ZXJzIGNhbiBob2xkIDEyOCBiaXRzLiAgKi8KKysjZGVmaW5lIENMQVNTX01BWF9OUkVH UyhDTEFTUywgTU9ERSkgcnM2MDAwX2NsYXNzX21heF9ucmVnc1soTU9ERSldWyhDTEFTUyldCisg CisgLyogUmV0dXJuIG5vbnplcm8gaWYgZm9yIENMQVNTIGEgbW9kZSBjaGFuZ2UgZnJvbSBGUk9N IHRvIFRPIGlzIGludmFsaWQuICAqLworIAorICNkZWZpbmUgQ0FOTk9UX0NIQU5HRV9NT0RFX0NM QVNTKEZST00sIFRPLCBDTEFTUykJCQlcCistICAoR0VUX01PREVfU0laRSAoRlJPTSkgIT0gR0VU X01PREVfU0laRSAoVE8pCQkJCVwKKy0gICA/ICgoR0VUX01PREVfU0laRSAoRlJPTSkgPCA4IHx8 IEdFVF9NT0RFX1NJWkUgKFRPKSA8IDgJCVwKKy0gICAgICAgfHwgVEFSR0VUX0lFRUVRVUFEKQkJ CQkJCVwKKy0gICAgICAmJiByZWdfY2xhc3Nlc19pbnRlcnNlY3RfcCAoRkxPQVRfUkVHUywgQ0xB U1MpKQkJCVwKKy0gICA6ICgoKFRBUkdFVF9FNTAwX0RPVUJMRQkJCQkJCVwKKy0JJiYgKCgoKFRP KSA9PSBERm1vZGUpICsgKChGUk9NKSA9PSBERm1vZGUpKSA9PSAxCQlcCistCSAgICB8fCAoKChU TykgPT0gVEZtb2RlKSArICgoRlJPTSkgPT0gVEZtb2RlKSkgPT0gMQkJXAorLQkgICAgfHwgKCgo VE8pID09IEREbW9kZSkgKyAoKEZST00pID09IEREbW9kZSkpID09IDEJCVwKKy0JICAgIHx8ICgo KFRPKSA9PSBURG1vZGUpICsgKChGUk9NKSA9PSBURG1vZGUpKSA9PSAxCQlcCistCSAgICB8fCAo KChUTykgPT0gREltb2RlKSArICgoRlJPTSkgPT0gREltb2RlKSkgPT0gMSkpCQlcCistICAgICAg IHx8IChUQVJHRVRfU1BFCQkJCQkJCVwKKy0JICAgJiYgKFNQRV9WRUNUT1JfTU9ERSAoRlJPTSkg KyBTUEVfVkVDVE9SX01PREUgKFRPKSkgPT0gMSkpCVwKKy0gICAgICAmJiByZWdfY2xhc3Nlc19p bnRlcnNlY3RfcCAoR0VORVJBTF9SRUdTLCBDTEFTUykpKQorKyAgcnM2MDAwX2Nhbm5vdF9jaGFu Z2VfbW9kZV9jbGFzcyAoRlJPTSwgVE8sIENMQVNTKQorIAorIC8qIFN0YWNrIGxheW91dDsgZnVu Y3Rpb24gZW50cnksIGV4aXQgYW5kIGNhbGxpbmcuICAqLworIAorQEAgLTEzNDMsOCArMTQ0OSw4 IEBAIGV4dGVybiBlbnVtIHJzNjAwMF9hYmkgcnM2MDAwX2N1cnJlbnRfYWIKKyAjZGVmaW5lIFNU QVJUSU5HX0ZSQU1FX09GRlNFVAkJCQkJCVwKKyAgIChGUkFNRV9HUk9XU19ET1dOV0FSRAkJCQkJ CQlcCisgICAgPyAwCQkJCQkJCQkJXAorLSAgIDogKFJTNjAwMF9BTElHTiAoY3J0bC0+b3V0Z29p bmdfYXJnc19zaXplLAkJXAorLQkJICAgIFRBUkdFVF9BTFRJVkVDID8gMTYgOiA4KQkJCQlcCisr ICAgOiAoUlM2MDAwX0FMSUdOIChjcnRsLT5vdXRnb2luZ19hcmdzX3NpemUsCQkJCVwKKysJCSAg ICAoVEFSR0VUX0FMVElWRUMgfHwgVEFSR0VUX1ZTWCkgPyAxNiA6IDgpCQlcCisgICAgICAgKyBS UzYwMDBfU0FWRV9BUkVBKSkKKyAKKyAvKiBPZmZzZXQgZnJvbSB0aGUgc3RhY2sgcG9pbnRlciBy ZWdpc3RlciB0byBhbiBpdGVtIGR5bmFtaWNhbGx5CitAQCAtMTM1NCw4ICsxNDYwLDggQEAgZXh0 ZXJuIGVudW0gcnM2MDAwX2FiaSByczYwMDBfY3VycmVudF9hYgorICAgIGxlbmd0aCBvZiB0aGUg b3V0Z29pbmcgYXJndW1lbnRzLiAgVGhlIGRlZmF1bHQgaXMgY29ycmVjdCBmb3IgbW9zdAorICAg IG1hY2hpbmVzLiAgU2VlIGBmdW5jdGlvbi5jJyBmb3IgZGV0YWlscy4gICovCisgI2RlZmluZSBT VEFDS19EWU5BTUlDX09GRlNFVChGVU5ERUNMKQkJCQkJXAorLSAgKFJTNjAwMF9BTElHTiAoY3J0 bC0+b3V0Z29pbmdfYXJnc19zaXplLAkJCVwKKy0JCSBUQVJHRVRfQUxUSVZFQyA/IDE2IDogOCkJ CQkJXAorKyAgKFJTNjAwMF9BTElHTiAoY3J0bC0+b3V0Z29pbmdfYXJnc19zaXplLAkJCQlcCisr CQkgKFRBUkdFVF9BTFRJVkVDIHx8IFRBUkdFVF9WU1gpID8gMTYgOiA4KQkJXAorICAgICsgKFNU QUNLX1BPSU5URVJfT0ZGU0VUKSkKKyAKKyAvKiBJZiB3ZSBnZW5lcmF0ZSBhbiBpbnNuIHRvIHB1 c2ggQllURVMgYnl0ZXMsCitAQCAtMTYwNSw3ICsxNzExLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgcnM2 MDAwX2FyZ3MKKyAjZGVmaW5lCUVQSUxPR1VFX1VTRVMoUkVHTk8pCQkJCQlcCisgICAoKHJlbG9h ZF9jb21wbGV0ZWQgJiYgKFJFR05PKSA9PSBMUl9SRUdOTykJCQlcCisgICAgfHwgKFRBUkdFVF9B TFRJVkVDICYmIChSRUdOTykgPT0gVlJTQVZFX1JFR05PKQkJXAorLSAgIHx8IChjcnRsLT5jYWxs c19laF9yZXR1cm4JCQkJXAorKyAgIHx8IChjcnRsLT5jYWxsc19laF9yZXR1cm4JCQkJCVwKKyAg ICAgICAgJiYgVEFSR0VUX0FJWAkJCQkJCVwKKyAgICAgICAgJiYgKFJFR05PKSA9PSAyKSkKKyAK K0BAIC0yMzE2LDcgKzI0MjIsMjQgQEAgZXh0ZXJuIGNoYXIgcnM2MDAwX3JlZ19uYW1lc1tdWzhd OwkvKiByZQorICAgLyogbm8gYWRkaXRpb25hbCBuYW1lcyBmb3I6IG1xLCBsciwgY3RyLCBhcCAq LwkJXAorICAgeyJjcjAiLCAgNjh9LCB7ImNyMSIsICA2OX0sIHsiY3IyIiwgIDcwfSwgeyJjcjMi LCAgNzF9LAlcCisgICB7ImNyNCIsICA3Mn0sIHsiY3I1IiwgIDczfSwgeyJjcjYiLCAgNzR9LCB7 ImNyNyIsICA3NX0sCVwKKy0gIHsiY2MiLCAgIDY4fSwgeyJzcCIsICAgIDF9LCB7InRvYyIsICAg Mn0gfQorKyAgeyJjYyIsICAgNjh9LCB7InNwIiwgICAgMX0sIHsidG9jIiwgICAyfSwJCQlcCisr ICAvKiBWU1ggcmVnaXN0ZXJzIG92ZXJsYWlkIG9uIHRvcCBvZiBGUiwgQWx0aXZlYyByZWdpc3Rl cnMgKi8JXAorKyAgeyJ2czAiLCAgMzJ9LCB7InZzMSIsICAzM30sIHsidnMyIiwgIDM0fSwgeyJ2 czMiLCAgMzV9LAlcCisrICB7InZzNCIsICAzNn0sIHsidnM1IiwgIDM3fSwgeyJ2czYiLCAgMzh9 LCB7InZzNyIsICAzOX0sCVwKKysgIHsidnM4IiwgIDQwfSwgeyJ2czkiLCAgNDF9LCB7InZzMTAi LCA0Mn0sIHsidnMxMSIsIDQzfSwJXAorKyAgeyJ2czEyIiwgNDR9LCB7InZzMTMiLCA0NX0sIHsi dnMxNCIsIDQ2fSwgeyJ2czE1IiwgNDd9LAlcCisrICB7InZzMTYiLCA0OH0sIHsidnMxNyIsIDQ5 fSwgeyJ2czE4IiwgNTB9LCB7InZzMTkiLCA1MX0sCVwKKysgIHsidnMyMCIsIDUyfSwgeyJ2czIx IiwgNTN9LCB7InZzMjIiLCA1NH0sIHsidnMyMyIsIDU1fSwJXAorKyAgeyJ2czI0IiwgNTZ9LCB7 InZzMjUiLCA1N30sIHsidnMyNiIsIDU4fSwgeyJ2czI3IiwgNTl9LAlcCisrICB7InZzMjgiLCA2 MH0sIHsidnMyOSIsIDYxfSwgeyJ2czMwIiwgNjJ9LCB7InZzMzEiLCA2M30sCVwKKysgIHsidnMz MiIsIDc3fSwgeyJ2czMzIiwgNzh9LCB7InZzMzQiLCA3OX0sIHsidnMzNSIsIDgwfSwgICAgICAg XAorKyAgeyJ2czM2IiwgODF9LCB7InZzMzciLCA4Mn0sIHsidnMzOCIsIDgzfSwgeyJ2czM5Iiwg ODR9LCAgICAgICBcCisrICB7InZzNDAiLCA4NX0sIHsidnM0MSIsIDg2fSwgeyJ2czQyIiwgODd9 LCB7InZzNDMiLCA4OH0sICAgICAgIFwKKysgIHsidnM0NCIsIDg5fSwgeyJ2czQ1IiwgOTB9LCB7 InZzNDYiLCA5MX0sIHsidnM0NyIsIDkyfSwgICAgICAgXAorKyAgeyJ2czQ4IiwgOTN9LCB7InZz NDkiLCA5NH0sIHsidnM1MCIsIDk1fSwgeyJ2czUxIiwgOTZ9LCAgICAgICBcCisrICB7InZzNTIi LCA5N30sIHsidnM1MyIsIDk4fSwgeyJ2czU0IiwgOTl9LCB7InZzNTUiLCAxMDB9LAlcCisrICB7 InZzNTYiLCAxMDF9LHsidnM1NyIsIDEwMn0seyJ2czU4IiwgMTAzfSx7InZzNTkiLCAxMDR9LCAg ICAgIFwKKysgIHsidnM2MCIsIDEwNX0seyJ2czYxIiwgMTA2fSx7InZzNjIiLCAxMDd9LHsidnM2 MyIsIDEwOH0gfQorIAorIC8qIFRleHQgdG8gd3JpdGUgb3V0IGFmdGVyIGEgQ0FMTCB0aGF0IG1h eSBiZSByZXBsYWNlZCBieSBnbHVlIGNvZGUgYnkKKyAgICB0aGUgbG9hZGVyLiAgVGhpcyBkZXBl bmRzIG9uIHRoZSBBSVggdmVyc2lvbi4gICovCitAQCAtMjQ4MCwxMCArMjYwMywxNCBAQCBlbnVt IHJzNjAwMF9idWlsdGlucworICAgQUxUSVZFQ19CVUlMVElOX1ZTRUxfNFNGLAorICAgQUxUSVZF Q19CVUlMVElOX1ZTRUxfOEhJLAorICAgQUxUSVZFQ19CVUlMVElOX1ZTRUxfMTZRSSwKKysgIEFM VElWRUNfQlVJTFRJTl9WU0VMXzJERiwJCS8qIG5lZWRlZCBmb3IgVlNYICovCisrICBBTFRJVkVD X0JVSUxUSU5fVlNFTF8yREksCQkvKiBuZWVkZWQgZm9yIFZTWCAqLworICAgQUxUSVZFQ19CVUlM VElOX1ZQRVJNXzRTSSwKKyAgIEFMVElWRUNfQlVJTFRJTl9WUEVSTV80U0YsCisgICBBTFRJVkVD X0JVSUxUSU5fVlBFUk1fOEhJLAorICAgQUxUSVZFQ19CVUlMVElOX1ZQRVJNXzE2UUksCisrICBB TFRJVkVDX0JVSUxUSU5fVlBFUk1fMkRGLAkJLyogbmVlZGVkIGZvciBWU1ggKi8KKysgIEFMVElW RUNfQlVJTFRJTl9WUEVSTV8yREksCQkvKiBuZWVkZWQgZm9yIFZTWCAqLworICAgQUxUSVZFQ19C VUlMVElOX1ZQS1VIVU0sCisgICBBTFRJVkVDX0JVSUxUSU5fVlBLVVdVTSwKKyAgIEFMVElWRUNf QlVJTFRJTl9WUEtQWCwKK0BAIC0zMTEwLDYgKzMyMzcsMTYzIEBAIGVudW0gcnM2MDAwX2J1aWx0 aW5zCisgICBSUzYwMDBfQlVJTFRJTl9SRUNJUEYsCisgICBSUzYwMDBfQlVJTFRJTl9SU1FSVEYs CisgCisrICAvKiBWU1ggYnVpbHRpbnMuICAqLworKyAgVlNYX0JVSUxUSU5fTFhTRFVYLAorKyAg VlNYX0JVSUxUSU5fTFhTRFgsCisrICBWU1hfQlVJTFRJTl9MWFZEMlVYLAorKyAgVlNYX0JVSUxU SU5fTFhWRDJYLAorKyAgVlNYX0JVSUxUSU5fTFhWRFNYLAorKyAgVlNYX0JVSUxUSU5fTFhWVzRV WCwKKysgIFZTWF9CVUlMVElOX0xYVlc0WCwKKysgIFZTWF9CVUlMVElOX1NUWFNEVVgsCisrICBW U1hfQlVJTFRJTl9TVFhTRFgsCisrICBWU1hfQlVJTFRJTl9TVFhWRDJVWCwKKysgIFZTWF9CVUlM VElOX1NUWFZEMlgsCisrICBWU1hfQlVJTFRJTl9TVFhWVzRVWCwKKysgIFZTWF9CVUlMVElOX1NU WFZXNFgsCisrICBWU1hfQlVJTFRJTl9YU0FCU0RQLAorKyAgVlNYX0JVSUxUSU5fWFNBREREUCwK KysgIFZTWF9CVUlMVElOX1hTQ01QT0RQLAorKyAgVlNYX0JVSUxUSU5fWFNDTVBVRFAsCisrICBW U1hfQlVJTFRJTl9YU0NQU0dORFAsCisrICBWU1hfQlVJTFRJTl9YU0NWRFBTUCwKKysgIFZTWF9C VUlMVElOX1hTQ1ZEUFNYRFMsCisrICBWU1hfQlVJTFRJTl9YU0NWRFBTWFdTLAorKyAgVlNYX0JV SUxUSU5fWFNDVkRQVVhEUywKKysgIFZTWF9CVUlMVElOX1hTQ1ZEUFVYV1MsCisrICBWU1hfQlVJ TFRJTl9YU0NWU1BEUCwKKysgIFZTWF9CVUlMVElOX1hTQ1ZTWEREUCwKKysgIFZTWF9CVUlMVElO X1hTQ1ZVWEREUCwKKysgIFZTWF9CVUlMVElOX1hTRElWRFAsCisrICBWU1hfQlVJTFRJTl9YU01B RERBRFAsCisrICBWU1hfQlVJTFRJTl9YU01BRERNRFAsCisrICBWU1hfQlVJTFRJTl9YU01BWERQ LAorKyAgVlNYX0JVSUxUSU5fWFNNSU5EUCwKKysgIFZTWF9CVUlMVElOX1hTTU9WRFAsCisrICBW U1hfQlVJTFRJTl9YU01TVUJBRFAsCisrICBWU1hfQlVJTFRJTl9YU01TVUJNRFAsCisrICBWU1hf QlVJTFRJTl9YU01VTERQLAorKyAgVlNYX0JVSUxUSU5fWFNOQUJTRFAsCisrICBWU1hfQlVJTFRJ Tl9YU05FR0RQLAorKyAgVlNYX0JVSUxUSU5fWFNOTUFEREFEUCwKKysgIFZTWF9CVUlMVElOX1hT Tk1BRERNRFAsCisrICBWU1hfQlVJTFRJTl9YU05NU1VCQURQLAorKyAgVlNYX0JVSUxUSU5fWFNO TVNVQk1EUCwKKysgIFZTWF9CVUlMVElOX1hTUkRQSSwKKysgIFZTWF9CVUlMVElOX1hTUkRQSUMs CisrICBWU1hfQlVJTFRJTl9YU1JEUElNLAorKyAgVlNYX0JVSUxUSU5fWFNSRFBJUCwKKysgIFZT WF9CVUlMVElOX1hTUkRQSVosCisrICBWU1hfQlVJTFRJTl9YU1JFRFAsCisrICBWU1hfQlVJTFRJ Tl9YU1JTUVJURURQLAorKyAgVlNYX0JVSUxUSU5fWFNTUVJURFAsCisrICBWU1hfQlVJTFRJTl9Y U1NVQkRQLAorKyAgVlNYX0JVSUxUSU5fWFNURElWRFAsCisrICBWU1hfQlVJTFRJTl9YU1RTUVJU RFAsCisrICBWU1hfQlVJTFRJTl9YVkFCU0RQLAorKyAgVlNYX0JVSUxUSU5fWFZBQlNTUCwKKysg IFZTWF9CVUlMVElOX1hWQURERFAsCisrICBWU1hfQlVJTFRJTl9YVkFERFNQLAorKyAgVlNYX0JV SUxUSU5fWFZDTVBFUURQLAorKyAgVlNYX0JVSUxUSU5fWFZDTVBFUVNQLAorKyAgVlNYX0JVSUxU SU5fWFZDTVBHRURQLAorKyAgVlNYX0JVSUxUSU5fWFZDTVBHRVNQLAorKyAgVlNYX0JVSUxUSU5f WFZDTVBHVERQLAorKyAgVlNYX0JVSUxUSU5fWFZDTVBHVFNQLAorKyAgVlNYX0JVSUxUSU5fWFZD UFNHTkRQLAorKyAgVlNYX0JVSUxUSU5fWFZDUFNHTlNQLAorKyAgVlNYX0JVSUxUSU5fWFZDVkRQ U1AsCisrICBWU1hfQlVJTFRJTl9YVkNWRFBTWERTLAorKyAgVlNYX0JVSUxUSU5fWFZDVkRQU1hX UywKKysgIFZTWF9CVUlMVElOX1hWQ1ZEUFVYRFMsCisrICBWU1hfQlVJTFRJTl9YVkNWRFBVWFdT LAorKyAgVlNYX0JVSUxUSU5fWFZDVlNQRFAsCisrICBWU1hfQlVJTFRJTl9YVkNWU1BTWERTLAor KyAgVlNYX0JVSUxUSU5fWFZDVlNQU1hXUywKKysgIFZTWF9CVUlMVElOX1hWQ1ZTUFVYRFMsCisr ICBWU1hfQlVJTFRJTl9YVkNWU1BVWFdTLAorKyAgVlNYX0JVSUxUSU5fWFZDVlNYRERQLAorKyAg VlNYX0JVSUxUSU5fWFZDVlNYRFNQLAorKyAgVlNYX0JVSUxUSU5fWFZDVlNYV0RQLAorKyAgVlNY X0JVSUxUSU5fWFZDVlNYV1NQLAorKyAgVlNYX0JVSUxUSU5fWFZDVlVYRERQLAorKyAgVlNYX0JV SUxUSU5fWFZDVlVYRFNQLAorKyAgVlNYX0JVSUxUSU5fWFZDVlVYV0RQLAorKyAgVlNYX0JVSUxU SU5fWFZDVlVYV1NQLAorKyAgVlNYX0JVSUxUSU5fWFZESVZEUCwKKysgIFZTWF9CVUlMVElOX1hW RElWU1AsCisrICBWU1hfQlVJTFRJTl9YVk1BRERBRFAsCisrICBWU1hfQlVJTFRJTl9YVk1BRERB U1AsCisrICBWU1hfQlVJTFRJTl9YVk1BRERNRFAsCisrICBWU1hfQlVJTFRJTl9YVk1BRERNU1As CisrICBWU1hfQlVJTFRJTl9YVk1BWERQLAorKyAgVlNYX0JVSUxUSU5fWFZNQVhTUCwKKysgIFZT WF9CVUlMVElOX1hWTUlORFAsCisrICBWU1hfQlVJTFRJTl9YVk1JTlNQLAorKyAgVlNYX0JVSUxU SU5fWFZNT1ZEUCwKKysgIFZTWF9CVUlMVElOX1hWTU9WU1AsCisrICBWU1hfQlVJTFRJTl9YVk1T VUJBRFAsCisrICBWU1hfQlVJTFRJTl9YVk1TVUJBU1AsCisrICBWU1hfQlVJTFRJTl9YVk1TVUJN RFAsCisrICBWU1hfQlVJTFRJTl9YVk1TVUJNU1AsCisrICBWU1hfQlVJTFRJTl9YVk1VTERQLAor KyAgVlNYX0JVSUxUSU5fWFZNVUxTUCwKKysgIFZTWF9CVUlMVElOX1hWTkFCU0RQLAorKyAgVlNY X0JVSUxUSU5fWFZOQUJTU1AsCisrICBWU1hfQlVJTFRJTl9YVk5FR0RQLAorKyAgVlNYX0JVSUxU SU5fWFZORUdTUCwKKysgIFZTWF9CVUlMVElOX1hWTk1BRERBRFAsCisrICBWU1hfQlVJTFRJTl9Y Vk5NQUREQVNQLAorKyAgVlNYX0JVSUxUSU5fWFZOTUFERE1EUCwKKysgIFZTWF9CVUlMVElOX1hW Tk1BRERNU1AsCisrICBWU1hfQlVJTFRJTl9YVk5NU1VCQURQLAorKyAgVlNYX0JVSUxUSU5fWFZO TVNVQkFTUCwKKysgIFZTWF9CVUlMVElOX1hWTk1TVUJNRFAsCisrICBWU1hfQlVJTFRJTl9YVk5N U1VCTVNQLAorKyAgVlNYX0JVSUxUSU5fWFZSRFBJLAorKyAgVlNYX0JVSUxUSU5fWFZSRFBJQywK KysgIFZTWF9CVUlMVElOX1hWUkRQSU0sCisrICBWU1hfQlVJTFRJTl9YVlJEUElQLAorKyAgVlNY X0JVSUxUSU5fWFZSRFBJWiwKKysgIFZTWF9CVUlMVElOX1hWUkVEUCwKKysgIFZTWF9CVUlMVElO X1hWUkVTUCwKKysgIFZTWF9CVUlMVElOX1hWUlNQSSwKKysgIFZTWF9CVUlMVElOX1hWUlNQSUMs CisrICBWU1hfQlVJTFRJTl9YVlJTUElNLAorKyAgVlNYX0JVSUxUSU5fWFZSU1BJUCwKKysgIFZT WF9CVUlMVElOX1hWUlNQSVosCisrICBWU1hfQlVJTFRJTl9YVlJTUVJURURQLAorKyAgVlNYX0JV SUxUSU5fWFZSU1FSVEVTUCwKKysgIFZTWF9CVUlMVElOX1hWU1FSVERQLAorKyAgVlNYX0JVSUxU SU5fWFZTUVJUU1AsCisrICBWU1hfQlVJTFRJTl9YVlNVQkRQLAorKyAgVlNYX0JVSUxUSU5fWFZT VUJTUCwKKysgIFZTWF9CVUlMVElOX1hWVERJVkRQLAorKyAgVlNYX0JVSUxUSU5fWFZURElWU1As CisrICBWU1hfQlVJTFRJTl9YVlRTUVJURFAsCisrICBWU1hfQlVJTFRJTl9YVlRTUVJUU1AsCisr ICBWU1hfQlVJTFRJTl9YWExBTkQsCisrICBWU1hfQlVJTFRJTl9YWExBTkRDLAorKyAgVlNYX0JV SUxUSU5fWFhMTk9SLAorKyAgVlNYX0JVSUxUSU5fWFhMT1IsCisrICBWU1hfQlVJTFRJTl9YWExY T1IsCisrICBWU1hfQlVJTFRJTl9YWE1SR0hELAorKyAgVlNYX0JVSUxUSU5fWFhNUkdIVywKKysg IFZTWF9CVUlMVElOX1hYTVJHTEQsCisrICBWU1hfQlVJTFRJTl9YWE1SR0xXLAorKyAgVlNYX0JV SUxUSU5fWFhQRVJNREksCisrICBWU1hfQlVJTFRJTl9YWFNFTCwKKysgIFZTWF9CVUlMVElOX1hY U0xEV0ksCisrICBWU1hfQlVJTFRJTl9YWFNQTFRELAorKyAgVlNYX0JVSUxUSU5fWFhTUExUVywK KysgIFZTWF9CVUlMVElOX1hYU1dBUEQsCisrCisrICAvKiBDb21iaW5lIFZTWC9BbHRpdmVjIGJ1 aWx0aW5zLiAgKi8KKysgIFZFQ1RPUl9CVUlMVElOX0ZMT0FUX1Y0U0lfVjRTRiwKKysgIFZFQ1RP Ul9CVUlMVElOX1VOU0ZMT0FUX1Y0U0lfVjRTRiwKKysgIFZFQ1RPUl9CVUlMVElOX0ZJWF9WNFNG X1Y0U0ksCisrICBWRUNUT1JfQlVJTFRJTl9GSVhVTlNfVjRTRl9WNFNJLAorKworICAgUlM2MDAw X0JVSUxUSU5fQ09VTlQKKyB9OworIAorQEAgLTMxMjMsNiArMzQwNyw4IEBAIGVudW0gcnM2MDAw X2J1aWx0aW5fdHlwZV9pbmRleAorICAgUlM2MDAwX0JUSV9WMTZRSSwKKyAgIFJTNjAwMF9CVElf VjJTSSwKKyAgIFJTNjAwMF9CVElfVjJTRiwKKysgIFJTNjAwMF9CVElfVjJESSwKKysgIFJTNjAw MF9CVElfVjJERiwKKyAgIFJTNjAwMF9CVElfVjRISSwKKyAgIFJTNjAwMF9CVElfVjRTSSwKKyAg IFJTNjAwMF9CVElfVjRTRiwKK0BAIC0zMTQ2LDcgKzM0MzIsMTAgQEAgZW51bSByczYwMDBfYnVp bHRpbl90eXBlX2luZGV4CisgICBSUzYwMDBfQlRJX1VJTlRISSwJCSAvKiB1bnNpZ25lZF9pbnRI SV90eXBlX25vZGUgKi8KKyAgIFJTNjAwMF9CVElfSU5UU0ksCQkgLyogaW50U0lfdHlwZV9ub2Rl ICovCisgICBSUzYwMDBfQlRJX1VJTlRTSSwJCSAvKiB1bnNpZ25lZF9pbnRTSV90eXBlX25vZGUg Ki8KKysgIFJTNjAwMF9CVElfSU5UREksCQkgLyogaW50RElfdHlwZV9ub2RlICovCisrICBSUzYw MDBfQlRJX1VJTlRESSwJCSAvKiB1bnNpZ25lZF9pbnRESV90eXBlX25vZGUgKi8KKyAgIFJTNjAw MF9CVElfZmxvYXQsCSAgICAgICAgIC8qIGZsb2F0X3R5cGVfbm9kZSAqLworKyAgUlM2MDAwX0JU SV9kb3VibGUsCSAgICAgICAgIC8qIGRvdWJsZV90eXBlX25vZGUgKi8KKyAgIFJTNjAwMF9CVElf dm9pZCwJICAgICAgICAgLyogdm9pZF90eXBlX25vZGUgKi8KKyAgIFJTNjAwMF9CVElfTUFYCisg fTsKK0BAIC0zMTU3LDYgKzM0NDYsOCBAQCBlbnVtIHJzNjAwMF9idWlsdGluX3R5cGVfaW5kZXgK KyAjZGVmaW5lIG9wYXF1ZV9wX1YyU0lfdHlwZV9ub2RlICAgICAgIChyczYwMDBfYnVpbHRpbl90 eXBlc1tSUzYwMDBfQlRJX29wYXF1ZV9wX1YyU0ldKQorICNkZWZpbmUgb3BhcXVlX1Y0U0lfdHlw ZV9ub2RlICAgICAgICAgKHJzNjAwMF9idWlsdGluX3R5cGVzW1JTNjAwMF9CVElfb3BhcXVlX1Y0 U0ldKQorICNkZWZpbmUgVjE2UUlfdHlwZV9ub2RlICAgICAgICAgICAgICAgKHJzNjAwMF9idWls dGluX3R5cGVzW1JTNjAwMF9CVElfVjE2UUldKQorKyNkZWZpbmUgVjJESV90eXBlX25vZGUgICAg ICAgICAgICAgICAgKHJzNjAwMF9idWlsdGluX3R5cGVzW1JTNjAwMF9CVElfVjJESV0pCisrI2Rl ZmluZSBWMkRGX3R5cGVfbm9kZSAgICAgICAgICAgICAgICAocnM2MDAwX2J1aWx0aW5fdHlwZXNb UlM2MDAwX0JUSV9WMkRGXSkKKyAjZGVmaW5lIFYyU0lfdHlwZV9ub2RlICAgICAgICAgICAgICAg IChyczYwMDBfYnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJX1YyU0ldKQorICNkZWZpbmUgVjJTRl90 eXBlX25vZGUgICAgICAgICAgICAgICAgKHJzNjAwMF9idWlsdGluX3R5cGVzW1JTNjAwMF9CVElf VjJTRl0pCisgI2RlZmluZSBWNEhJX3R5cGVfbm9kZSAgICAgICAgICAgICAgICAocnM2MDAwX2J1 aWx0aW5fdHlwZXNbUlM2MDAwX0JUSV9WNEhJXSkKK0BAIC0zMTgzLDcgKzM0NzQsMTAgQEAgZW51 bSByczYwMDBfYnVpbHRpbl90eXBlX2luZGV4CisgI2RlZmluZSB1aW50SElfdHlwZV9pbnRlcm5h bF9ub2RlCSAocnM2MDAwX2J1aWx0aW5fdHlwZXNbUlM2MDAwX0JUSV9VSU5USEldKQorICNkZWZp bmUgaW50U0lfdHlwZV9pbnRlcm5hbF9ub2RlCSAocnM2MDAwX2J1aWx0aW5fdHlwZXNbUlM2MDAw X0JUSV9JTlRTSV0pCisgI2RlZmluZSB1aW50U0lfdHlwZV9pbnRlcm5hbF9ub2RlCSAocnM2MDAw X2J1aWx0aW5fdHlwZXNbUlM2MDAwX0JUSV9VSU5UU0ldKQorKyNkZWZpbmUgaW50RElfdHlwZV9p bnRlcm5hbF9ub2RlCSAocnM2MDAwX2J1aWx0aW5fdHlwZXNbUlM2MDAwX0JUSV9JTlRESV0pCisr I2RlZmluZSB1aW50RElfdHlwZV9pbnRlcm5hbF9ub2RlCSAocnM2MDAwX2J1aWx0aW5fdHlwZXNb UlM2MDAwX0JUSV9VSU5UREldKQorICNkZWZpbmUgZmxvYXRfdHlwZV9pbnRlcm5hbF9ub2RlCSAo cnM2MDAwX2J1aWx0aW5fdHlwZXNbUlM2MDAwX0JUSV9mbG9hdF0pCisrI2RlZmluZSBkb3VibGVf dHlwZV9pbnRlcm5hbF9ub2RlCSAocnM2MDAwX2J1aWx0aW5fdHlwZXNbUlM2MDAwX0JUSV9kb3Vi bGVdKQorICNkZWZpbmUgdm9pZF90eXBlX2ludGVybmFsX25vZGUJCSAocnM2MDAwX2J1aWx0aW5f dHlwZXNbUlM2MDAwX0JUSV92b2lkXSkKKyAKKyBleHRlcm4gR1RZKCgpKSB0cmVlIHJzNjAwMF9i dWlsdGluX3R5cGVzW1JTNjAwMF9CVElfTUFYXTsKKy0tLSBnY2MvY29uZmlnL3JzNjAwMC9hbHRp dmVjLm1kCSguLi4vdHJ1bmspCShyZXZpc2lvbiAxNDQ1NTcpCisrKysgZ2NjL2NvbmZpZy9yczYw MDAvYWx0aXZlYy5tZAkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lv biAxNDQ2OTIpCitAQCAtMjEsMTggKzIxLDcgQEAKKyAKKyAoZGVmaW5lX2NvbnN0YW50cworICAg WyhVTlNQRUNfVkNNUEJGUCAgICAgICA1MCkKKy0gICAoVU5TUEVDX1ZDTVBFUVVCICAgICAgNTEp CistICAgKFVOU1BFQ19WQ01QRVFVSCAgICAgIDUyKQorLSAgIChVTlNQRUNfVkNNUEVRVVcgICAg ICA1MykKKy0gICAoVU5TUEVDX1ZDTVBFUUZQICAgICAgNTQpCistICAgKFVOU1BFQ19WQ01QR0VG UCAgICAgIDU1KQorLSAgIChVTlNQRUNfVkNNUEdUVUIgICAgICA1NikKKy0gICAoVU5TUEVDX1ZD TVBHVFNCICAgICAgNTcpCistICAgKFVOU1BFQ19WQ01QR1RVSCAgICAgIDU4KQorLSAgIChVTlNQ RUNfVkNNUEdUU0ggICAgICA1OSkKKy0gICAoVU5TUEVDX1ZDTVBHVFVXICAgICAgNjApCistICAg KFVOU1BFQ19WQ01QR1RTVyAgICAgIDYxKQorLSAgIChVTlNQRUNfVkNNUEdURlAgICAgICA2MikK KysgICA7OyA1MS02MiBkZWxldGVkCisgICAgKFVOU1BFQ19WTVNVTVUgICAgICAgIDY1KQorICAg IChVTlNQRUNfVk1TVU1NICAgICAgICA2NikKKyAgICAoVU5TUEVDX1ZNU1VNU0hNICAgICAgNjgp CitAQCAtODcsMTAgKzc2LDcgQEAgKGRlZmluZV9jb25zdGFudHMKKyAgICAoVU5TUEVDX1ZFWFBU RUZQICAgICAxNTYpCisgICAgKFVOU1BFQ19WUlNRUlRFRlAgICAgMTU3KQorICAgIChVTlNQRUNf VlJFRlAgICAgICAgIDE1OCkKKy0gICAoVU5TUEVDX1ZTRUw0U0kgICAgICAxNTkpCistICAgKFVO U1BFQ19WU0VMNFNGICAgICAgMTYwKQorLSAgIChVTlNQRUNfVlNFTDhISSAgICAgIDE2MSkKKy0g ICAoVU5TUEVDX1ZTRUwxNlFJICAgICAxNjIpCisrICAgOzsgMTU5LTE2MiBkZWxldGVkCisgICAg KFVOU1BFQ19WTFNET0kgICAgICAgMTYzKQorICAgIChVTlNQRUNfVlVQS0hTQiAgICAgIDE2NykK KyAgICAoVU5TUEVDX1ZVUEtIUFggICAgICAxNjgpCitAQCAtMTI1LDExICsxMTEsMTEgQEAgKGRl ZmluZV9jb25zdGFudHMKKyAgICAoVU5TUEVDX0lOVEVSSElfVjRTSSAyMjgpCisgICAgKFVOU1BF Q19JTlRFUkhJX1Y4SEkgMjI5KQorICAgIChVTlNQRUNfSU5URVJISV9WMTZRSSAyMzApCistICAg KFVOU1BFQ19JTlRFUkhJX1Y0U0YgMjMxKQorKyAgIDs7IGRlbGV0ZSAyMzEKKyAgICAoVU5TUEVD X0lOVEVSTE9fVjRTSSAyMzIpCisgICAgKFVOU1BFQ19JTlRFUkxPX1Y4SEkgMjMzKQorICAgIChV TlNQRUNfSU5URVJMT19WMTZRSSAyMzQpCistICAgKFVOU1BFQ19JTlRFUkxPX1Y0U0YgMjM1KQor KyAgIDs7IGRlbGV0ZSAyMzUKKyAgICAoVU5TUEVDX0xWTFggICAgICAgICAyMzYpCisgICAgKFVO U1BFQ19MVkxYTCAgICAgICAgMjM3KQorICAgIChVTlNQRUNfTFZSWCAgICAgICAgIDIzOCkKK0BA IC0xNzYsMzkgKzE2MiwxNyBAQCAoZGVmaW5lX21vZGVfaXRlcmF0b3IgVklzaG9ydCBbVjhISSBW MTZRCisgKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZGIFtWNFNGXSkKKyA7OyBWZWMgbW9kZXMsIHBp dHkgbW9kZSBpdGVyYXRvcnMgYXJlIG5vdCBjb21wb3NhYmxlCisgKGRlZmluZV9tb2RlX2l0ZXJh dG9yIFYgW1Y0U0kgVjhISSBWMTZRSSBWNFNGXSkKKys7OyBWZWMgbW9kZXMgZm9yIG1vdmUvbG9n aWNhbC9wZXJtdXRlIG9wcywgaW5jbHVkZSB2ZWN0b3IgdHlwZXMgZm9yIG1vdmUgbm90CisrOzsg b3RoZXJ3aXNlIGhhbmRsZWQgYnkgYWx0aXZlYyAodjJkZiwgdjJkaSwgdGkpCisrKGRlZmluZV9t b2RlX2l0ZXJhdG9yIFZNIFtWNFNJIFY4SEkgVjE2UUkgVjRTRiBWMkRGIFYyREkgVEldKQorIAor IChkZWZpbmVfbW9kZV9hdHRyIFZJX2NoYXIgWyhWNFNJICJ3IikgKFY4SEkgImgiKSAoVjE2UUkg ImIiKV0pCisgCistOzsgR2VuZXJpYyBMVlggbG9hZCBpbnN0cnVjdGlvbi4KKy0oZGVmaW5lX2lu c24gImFsdGl2ZWNfbHZ4Xzxtb2RlPiIKKy0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYgMCAiYWx0 aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQorLQkobWF0Y2hfb3BlcmFuZDpWIDEgIm1lbW9y eV9vcGVyYW5kIiAiWiIpKV0KKy0gICJUQVJHRVRfQUxUSVZFQyIKKy0gICJsdnggJTAsJXkxIgor LSAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2xvYWQiKV0pCistCistOzsgR2VuZXJpYyBTVFZYIHN0 b3JlIGluc3RydWN0aW9uLgorLShkZWZpbmVfaW5zbiAiYWx0aXZlY19zdHZ4Xzxtb2RlPiIKKy0g IFsoc2V0IChtYXRjaF9vcGVyYW5kOlYgMCAibWVtb3J5X29wZXJhbmQiICI9WiIpCistCShtYXRj aF9vcGVyYW5kOlYgMSAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAidiIpKV0KKy0gICJUQVJH RVRfQUxUSVZFQyIKKy0gICJzdHZ4ICUxLCV5MCIKKy0gIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNz dG9yZSIpXSkKKy0KKyA7OyBWZWN0b3IgbW92ZSBpbnN0cnVjdGlvbnMuCistKGRlZmluZV9leHBh bmQgIm1vdjxtb2RlPiIKKy0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYgMCAibm9uaW1tZWRpYXRl X29wZXJhbmQiICIiKQorLQkobWF0Y2hfb3BlcmFuZDpWIDEgImFueV9vcGVyYW5kIiAiIikpXQor LSAgIlRBUkdFVF9BTFRJVkVDIgorLXsKKy0gIHJzNjAwMF9lbWl0X21vdmUgKG9wZXJhbmRzWzBd LCBvcGVyYW5kc1sxXSwgPE1PREU+bW9kZSk7CistICBET05FOworLX0pCistCistKGRlZmluZV9p bnNuICIqbW92PG1vZGU+X2ludGVybmFsIgorLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6ViAwICJu b25pbW1lZGlhdGVfb3BlcmFuZCIgIj1aLHYsdixvLHIscix2IikKKy0JKG1hdGNoX29wZXJhbmQ6 ViAxICJpbnB1dF9vcGVyYW5kIiAidixaLHYscixvLHIsVyIpKV0KKy0gICJUQVJHRVRfQUxUSVZF QyAKKysoZGVmaW5lX2luc24gIiphbHRpdmVjX21vdjxtb2RlPiIKKysgIFsoc2V0IChtYXRjaF9v cGVyYW5kOlYgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICI9Wix2LHYsKm8sKnIsKnIsdix2IikK KysJKG1hdGNoX29wZXJhbmQ6ViAxICJpbnB1dF9vcGVyYW5kIiAidixaLHYscixvLHIsaixXIikp XQorKyAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19QICg8TU9ERT5tb2RlKQorICAgICYmIChyZWdpc3Rl cl9vcGVyYW5kIChvcGVyYW5kc1swXSwgPE1PREU+bW9kZSkgCisgICAgICAgIHx8IHJlZ2lzdGVy X29wZXJhbmQgKG9wZXJhbmRzWzFdLCA8TU9ERT5tb2RlKSkiCisgeworQEAgLTIyMCw1MiArMTg0 LDE3IEBAIChkZWZpbmVfaW5zbiAiKm1vdjxtb2RlPl9pbnRlcm5hbCIKKyAgICAgY2FzZSAzOiBy ZXR1cm4gIiMiOworICAgICBjYXNlIDQ6IHJldHVybiAiIyI7CisgICAgIGNhc2UgNTogcmV0dXJu ICIjIjsKKy0gICAgY2FzZSA2OiByZXR1cm4gb3V0cHV0X3ZlY19jb25zdF9tb3ZlIChvcGVyYW5k cyk7CisrICAgIGNhc2UgNjogcmV0dXJuICJ2eG9yICUwLCUwLCUwIjsKKysgICAgY2FzZSA3OiBy ZXR1cm4gb3V0cHV0X3ZlY19jb25zdF9tb3ZlIChvcGVyYW5kcyk7CisgICAgIGRlZmF1bHQ6IGdj Y191bnJlYWNoYWJsZSAoKTsKKyAgICAgfQorIH0KKy0gIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNz dG9yZSx2ZWNsb2FkLHZlY3NpbXBsZSxzdG9yZSxsb2FkLCosKiIpXSkKKy0KKy0oZGVmaW5lX3Nw bGl0CistICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNJIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5k IiAiIikKKy0gICAgICAgIChtYXRjaF9vcGVyYW5kOlY0U0kgMSAiaW5wdXRfb3BlcmFuZCIgIiIp KV0KKy0gICJUQVJHRVRfQUxUSVZFQyAmJiByZWxvYWRfY29tcGxldGVkCistICAgJiYgZ3ByX29y X2dwcl9wIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pIgorLSAgWyhwYyldCisteworLSAgcnM2 MDAwX3NwbGl0X211bHRpcmVnX21vdmUgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7IERPTkU7 CistfSkKKy0KKy0oZGVmaW5lX3NwbGl0CistICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWOEhJIDAg Im5vbmltbWVkaWF0ZV9vcGVyYW5kIiAiIikKKy0gICAgICAgIChtYXRjaF9vcGVyYW5kOlY4SEkg MSAiaW5wdXRfb3BlcmFuZCIgIiIpKV0KKy0gICJUQVJHRVRfQUxUSVZFQyAmJiByZWxvYWRfY29t cGxldGVkCistICAgJiYgZ3ByX29yX2dwcl9wIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pIgor LSAgWyhwYyldCisteyByczYwMDBfc3BsaXRfbXVsdGlyZWdfbW92ZSAob3BlcmFuZHNbMF0sIG9w ZXJhbmRzWzFdKTsgRE9ORTsgfSkKKysgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzdG9yZSx2ZWNs b2FkLHZlY3NpbXBsZSxzdG9yZSxsb2FkLCosdmVjc2ltcGxlLCoiKV0pCisgCisgKGRlZmluZV9z cGxpdAorLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjE2UUkgMCAibm9uaW1tZWRpYXRlX29wZXJh bmQiICIiKQorLSAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjE2UUkgMSAiaW5wdXRfb3BlcmFuZCIg IiIpKV0KKy0gICJUQVJHRVRfQUxUSVZFQyAmJiByZWxvYWRfY29tcGxldGVkCistICAgJiYgZ3By X29yX2dwcl9wIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pIgorLSAgWyhwYyldCisteyByczYw MDBfc3BsaXRfbXVsdGlyZWdfbW92ZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsgRE9ORTsg fSkKKy0KKy0oZGVmaW5lX3NwbGl0CistICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNGIDAgIm5v bmltbWVkaWF0ZV9vcGVyYW5kIiAiIikKKy0gICAgICAgIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAi aW5wdXRfb3BlcmFuZCIgIiIpKV0KKy0gICJUQVJHRVRfQUxUSVZFQyAmJiByZWxvYWRfY29tcGxl dGVkCistICAgJiYgZ3ByX29yX2dwcl9wIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pIgorLSAg WyhwYyldCisteworLSAgcnM2MDAwX3NwbGl0X211bHRpcmVnX21vdmUgKG9wZXJhbmRzWzBdLCBv cGVyYW5kc1sxXSk7IERPTkU7CistfSkKKy0KKy0oZGVmaW5lX3NwbGl0CistICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWIDAgImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgIiIpCistCShtYXRjaF9v cGVyYW5kOlYgMSAiZWFzeV92ZWN0b3JfY29uc3RhbnRfYWRkX3NlbGYiICIiKSldCistICAiVEFS R0VUX0FMVElWRUMgJiYgcmVsb2FkX2NvbXBsZXRlZCIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5k OlZNIDAgImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgIiIpCisrCShtYXRjaF9vcGVyYW5kOlZN IDEgImVhc3lfdmVjdG9yX2NvbnN0YW50X2FkZF9zZWxmIiAiIikpXQorKyAgIlZFQ1RPUl9VTklU X0FMVElWRUNfUCAoPE1PREU+bW9kZSkgJiYgcmVsb2FkX2NvbXBsZXRlZCIKKyAgIFsoc2V0ICht YXRjaF9kdXAgMCkgKG1hdGNoX2R1cCAzKSkKKyAgICAoc2V0IChtYXRjaF9kdXAgMCkgKG1hdGNo X2R1cCA0KSldCisgeworQEAgLTM0NiwxMSArMjc1LDExIEBAIChkZWZpbmVfaW5zbiAiYWRkPG1v ZGU+MyIKKyAgICJ2YWRkdTxWSV9jaGFyPm0gJTAsJTEsJTIiCisgICBbKHNldF9hdHRyICJ0eXBl IiAidmVjc2ltcGxlIildKQorIAorLShkZWZpbmVfaW5zbiAiYWRkdjRzZjMiCisrKGRlZmluZV9p bnNuICIqYWx0aXZlY19hZGR2NHNmMyIKKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAi cmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKKyAgICAgICAgIChwbHVzOlY0U0YgKG1hdGNoX29wZXJh bmQ6VjRTRiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCisgCSAJICAgKG1hdGNoX29wZXJhbmQ6 VjRTRiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCistICAiVEFSR0VUX0FMVElWRUMiCisr ICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19QIChWNFNGbW9kZSkiCisgICAidmFkZGZwICUwLCUxLCUy IgorICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0IildKQorIAorQEAgLTM5MiwxMSArMzIx LDExIEBAIChkZWZpbmVfaW5zbiAic3ViPG1vZGU+MyIKKyAgICJ2c3VidTxWSV9jaGFyPm0gJTAs JTEsJTIiCisgICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc2ltcGxlIildKQorIAorLShkZWZpbmVf aW5zbiAic3VidjRzZjMiCisrKGRlZmluZV9pbnNuICIqYWx0aXZlY19zdWJ2NHNmMyIKKyAgIFso c2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKKyAgICAg ICAgIChtaW51czpWNFNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIg InYiKQorICAgICAgICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTRiAyICJyZWdpc3Rl cl9vcGVyYW5kIiAidiIpKSldCistICAiVEFSR0VUX0FMVElWRUMiCisrICAiVkVDVE9SX1VOSVRf QUxUSVZFQ19QIChWNFNGbW9kZSkiCisgICAidnN1YmZwICUwLCUxLCUyIgorICAgWyhzZXRfYXR0 ciAidHlwZSIgInZlY2Zsb2F0IildKQorIAorQEAgLTQ1NywxMzEgKzM4Niw4MSBAQCAoZGVmaW5l X2luc24gImFsdGl2ZWNfdmNtcGJmcCIKKyAgICJ2Y21wYmZwICUwLCUxLCUyIgorICAgWyhzZXRf YXR0ciAidHlwZSIgInZlY2NtcCIpXSkKKyAKKy0oZGVmaW5lX2luc24gImFsdGl2ZWNfdmNtcGVx dWIiCistICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMTZRSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAi PXYiKQorLSAgICAgICAgKHVuc3BlYzpWMTZRSSBbKG1hdGNoX29wZXJhbmQ6VjE2UUkgMSAicmVn aXN0ZXJfb3BlcmFuZCIgInYiKQorLSAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoX29wZXJh bmQ6VjE2UUkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKV0gCistICAgICAgICAgICAgICAgICAg ICAgICBVTlNQRUNfVkNNUEVRVUIpKV0KKysoZGVmaW5lX2luc24gIiphbHRpdmVjX2VxPG1vZGU+ IgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkkgMCAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5k IiAiPXYiKQorKwkoZXE6VkkgKG1hdGNoX29wZXJhbmQ6VkkgMSAiYWx0aXZlY19yZWdpc3Rlcl9v cGVyYW5kIiAidiIpCisrCSAgICAgICAobWF0Y2hfb3BlcmFuZDpWSSAyICJhbHRpdmVjX3JlZ2lz dGVyX29wZXJhbmQiICJ2IikpKV0KKyAgICJUQVJHRVRfQUxUSVZFQyIKKy0gICJ2Y21wZXF1YiAl MCwlMSwlMiIKKy0gIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCisrICAidmNtcGVx dTxWSV9jaGFyPiAlMCwlMSwlMiIKKysgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNjbXAiKV0pCisg CistKGRlZmluZV9pbnNuICJhbHRpdmVjX3ZjbXBlcXVoIgorLSAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6VjhISSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQorLSAgICAgICAgKHVuc3BlYzpWOEhJ IFsobWF0Y2hfb3BlcmFuZDpWOEhJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKKy0gICAgICAg ICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjhISSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAi diIpXSAKKy0gICAgICAgICAgICAgICAgICAgICAgVU5TUEVDX1ZDTVBFUVVIKSldCisrKGRlZmlu ZV9pbnNuICIqYWx0aXZlY19ndDxtb2RlPiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZJIDAg ImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKKysJKGd0OlZJIChtYXRjaF9vcGVyYW5k OlZJIDEgImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgInYiKQorKwkgICAgICAgKG1hdGNoX29w ZXJhbmQ6VkkgMiAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCisgICAiVEFSR0VU X0FMVElWRUMiCistICAidmNtcGVxdWggJTAsJTEsJTIiCistICBbKHNldF9hdHRyICJ0eXBlIiAi dmVjc2ltcGxlIildKQorKyAgInZjbXBndHM8VklfY2hhcj4gJTAsJTEsJTIiCisrICBbKHNldF9h dHRyICJ0eXBlIiAidmVjY21wIildKQorIAorLShkZWZpbmVfaW5zbiAiYWx0aXZlY192Y21wZXF1 dyIKKy0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12 IikKKy0gICAgICAgICh1bnNwZWM6VjRTSSBbKG1hdGNoX29wZXJhbmQ6VjRTSSAxICJyZWdpc3Rl cl9vcGVyYW5kIiAidiIpCistICAgICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY0 U0kgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKV0gCistCSAgICAgICAgICAgICAgVU5TUEVDX1ZD TVBFUVVXKSldCisrKGRlZmluZV9pbnNuICIqYWx0aXZlY19ndHU8bW9kZT4iCisrICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpWSSAwICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICI9diIpCisrCShn dHU6VkkgKG1hdGNoX29wZXJhbmQ6VkkgMSAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAidiIp CisrCQkobWF0Y2hfb3BlcmFuZDpWSSAyICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICJ2Iikp KV0KKyAgICJUQVJHRVRfQUxUSVZFQyIKKy0gICJ2Y21wZXF1dyAlMCwlMSwlMiIKKy0gIFsoc2V0 X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCisrICAidmNtcGd0dTxWSV9jaGFyPiAlMCwlMSwl MiIKKysgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNjbXAiKV0pCisgCistKGRlZmluZV9pbnNuICJh bHRpdmVjX3ZjbXBlcWZwIgorLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTSSAwICJyZWdpc3Rl cl9vcGVyYW5kIiAiPXYiKQorLSAgICAgICAgKHVuc3BlYzpWNFNJIFsobWF0Y2hfb3BlcmFuZDpW NFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKKy0gICAgICAgICAgICAgICAgICAgICAgKG1h dGNoX29wZXJhbmQ6VjRTRiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSAKKy0JICAgICAgICAg ICAgICBVTlNQRUNfVkNNUEVRRlApKV0KKy0gICJUQVJHRVRfQUxUSVZFQyIKKysoZGVmaW5lX2lu c24gIiphbHRpdmVjX2VxdjRzZiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAiYWx0 aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQorKwkoZXE6VjRTRiAobWF0Y2hfb3BlcmFuZDpW NFNGIDEgImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgInYiKQorKwkJIChtYXRjaF9vcGVyYW5k OlY0U0YgMiAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCisrICAiVkVDVE9SX1VO SVRfQUxUSVZFQ19QIChWNFNGbW9kZSkiCisgICAidmNtcGVxZnAgJTAsJTEsJTIiCisgICBbKHNl dF9hdHRyICJ0eXBlIiAidmVjY21wIildKQorIAorLShkZWZpbmVfaW5zbiAiYWx0aXZlY192Y21w Z2VmcCIKKy0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIg Ij12IikKKy0gICAgICAgICh1bnNwZWM6VjRTSSBbKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJyZWdp c3Rlcl9vcGVyYW5kIiAidiIpCistICAgICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5k OlY0U0YgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKV0gCistCQkgICAgIFVOU1BFQ19WQ01QR0VG UCkpXQorLSAgIlRBUkdFVF9BTFRJVkVDIgorLSAgInZjbXBnZWZwICUwLCUxLCUyIgorKyhkZWZp bmVfaW5zbiAiKmFsdGl2ZWNfZ3R2NHNmIgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAw ICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICI9diIpCisrCShndDpWNFNGIChtYXRjaF9vcGVy YW5kOlY0U0YgMSAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAidiIpCisrCQkgKG1hdGNoX29w ZXJhbmQ6VjRTRiAyICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICJ2IikpKV0KKysgICJWRUNU T1JfVU5JVF9BTFRJVkVDX1AgKFY0U0Ztb2RlKSIKKysgICJ2Y21wZ3RmcCAlMCwlMSwlMiIKKyAg IFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNjbXAiKV0pCisgCistKGRlZmluZV9pbnNuICJhbHRpdmVj X3ZjbXBndHViIgorLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjE2UUkgMCAicmVnaXN0ZXJfb3Bl cmFuZCIgIj12IikKKy0gICAgICAgICh1bnNwZWM6VjE2UUkgWyhtYXRjaF9vcGVyYW5kOlYxNlFJ IDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKKy0gICAgICAgICAgICAgICAgICAgICAgIChtYXRj aF9vcGVyYW5kOlYxNlFJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IildIAorLQkJICAgICAgVU5T UEVDX1ZDTVBHVFVCKSldCistICAiVEFSR0VUX0FMVElWRUMiCistICAidmNtcGd0dWIgJTAsJTEs JTIiCistICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc2ltcGxlIildKQorLQorLShkZWZpbmVfaW5z biAiYWx0aXZlY192Y21wZ3RzYiIKKy0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYxNlFJIDAgInJl Z2lzdGVyX29wZXJhbmQiICI9diIpCistICAgICAgICAodW5zcGVjOlYxNlFJIFsobWF0Y2hfb3Bl cmFuZDpWMTZRSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCistICAgICAgICAgICAgICAgICAg ICAgICAobWF0Y2hfb3BlcmFuZDpWMTZRSSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSAKKy0J CSAgICAgIFVOU1BFQ19WQ01QR1RTQikpXQorLSAgIlRBUkdFVF9BTFRJVkVDIgorLSAgInZjbXBn dHNiICUwLCUxLCUyIgorLSAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKKy0KKy0o ZGVmaW5lX2luc24gImFsdGl2ZWNfdmNtcGd0dWgiCistICBbKHNldCAobWF0Y2hfb3BlcmFuZDpW OEhJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCistICAgICAgICAodW5zcGVjOlY4SEkgWyht YXRjaF9vcGVyYW5kOlY4SEkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQorLSAgICAgICAgICAg ICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWOEhJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2Iild IAorLQkJICAgICBVTlNQRUNfVkNNUEdUVUgpKV0KKy0gICJUQVJHRVRfQUxUSVZFQyIKKy0gICJ2 Y21wZ3R1aCAlMCwlMSwlMiIKKy0gIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCist CistKGRlZmluZV9pbnNuICJhbHRpdmVjX3ZjbXBndHNoIgorLSAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6VjhISSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQorLSAgICAgICAgKHVuc3BlYzpWOEhJ IFsobWF0Y2hfb3BlcmFuZDpWOEhJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKKy0gICAgICAg ICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjhISSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAi diIpXSAKKy0JCSAgICAgVU5TUEVDX1ZDTVBHVFNIKSldCistICAiVEFSR0VUX0FMVElWRUMiCist ICAidmNtcGd0c2ggJTAsJTEsJTIiCistICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc2ltcGxlIild KQorLQorLShkZWZpbmVfaW5zbiAiYWx0aXZlY192Y21wZ3R1dyIKKy0gIFsoc2V0IChtYXRjaF9v cGVyYW5kOlY0U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKKy0gICAgICAgICh1bnNwZWM6 VjRTSSBbKG1hdGNoX29wZXJhbmQ6VjRTSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCistICAg ICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY0U0kgMiAicmVnaXN0ZXJfb3BlcmFu ZCIgInYiKV0gCistCQkgICAgIFVOU1BFQ19WQ01QR1RVVykpXQorLSAgIlRBUkdFVF9BTFRJVkVD IgorLSAgInZjbXBndHV3ICUwLCUxLCUyIgorLSAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBs ZSIpXSkKKy0KKy0oZGVmaW5lX2luc24gImFsdGl2ZWNfdmNtcGd0c3ciCistICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWNFNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCistICAgICAgICAodW5z cGVjOlY0U0kgWyhtYXRjaF9vcGVyYW5kOlY0U0kgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQor LSAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNJIDIgInJlZ2lzdGVyX29w ZXJhbmQiICJ2IildIAorLQkJICAgICBVTlNQRUNfVkNNUEdUU1cpKV0KKy0gICJUQVJHRVRfQUxU SVZFQyIKKy0gICJ2Y21wZ3RzdyAlMCwlMSwlMiIKKy0gIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNz aW1wbGUiKV0pCistCistKGRlZmluZV9pbnNuICJhbHRpdmVjX3ZjbXBndGZwIgorLSAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6VjRTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQorLSAgICAgICAg KHVuc3BlYzpWNFNJIFsobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2 IikKKy0gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTRiAyICJyZWdpc3Rl cl9vcGVyYW5kIiAidiIpXSAKKy0JCSAgICAgVU5TUEVDX1ZDTVBHVEZQKSldCistICAiVEFSR0VU X0FMVElWRUMiCistICAidmNtcGd0ZnAgJTAsJTEsJTIiCisrKGRlZmluZV9pbnNuICIqYWx0aXZl Y19nZXY0c2YiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNGIDAgImFsdGl2ZWNfcmVnaXN0 ZXJfb3BlcmFuZCIgIj12IikKKysJKGdlOlY0U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJhbHRp dmVjX3JlZ2lzdGVyX29wZXJhbmQiICJ2IikKKysJCSAobWF0Y2hfb3BlcmFuZDpWNFNGIDIgImFs dGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpXQorKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNf UCAoVjRTRm1vZGUpIgorKyAgInZjbXBnZWZwICUwLCUxLCUyIgorICAgWyhzZXRfYXR0ciAidHlw ZSIgInZlY2NtcCIpXSkKKyAKKysoZGVmaW5lX2luc24gImFsdGl2ZWNfdnNlbDxtb2RlPiIKKysg IFsoc2V0IChtYXRjaF9vcGVyYW5kOlZNIDAgImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgIj12 IikKKysJKGlmX3RoZW5fZWxzZTpWTSAobmUgKG1hdGNoX29wZXJhbmQ6Vk0gMSAiYWx0aXZlY19y ZWdpc3Rlcl9vcGVyYW5kIiAidiIpCisrCQkJICAgICAoY29uc3RfaW50IDApKQorKwkJCSAobWF0 Y2hfb3BlcmFuZDpWTSAyICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICJ2IikKKysJCQkgKG1h dGNoX29wZXJhbmQ6Vk0gMyAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCisrICAi VkVDVE9SX1VOSVRfQUxUSVZFQ19QICg8TU9ERT5tb2RlKSIKKysgICJ2c2VsICUwLCUzLCUyLCUx IgorKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCisrCisgOzsgRnVzZWQgbXVsdGlw bHkgYWRkCisgKGRlZmluZV9pbnNuICJhbHRpdmVjX3ZtYWRkZnAiCisgICBbKHNldCAobWF0Y2hf b3BlcmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCisgCShwbHVzOlY0U0YgKG11 bHQ6VjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKKyAJ CQkgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNGIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpCisg CSAgCSAgIChtYXRjaF9vcGVyYW5kOlY0U0YgMyAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpXQor LSAgIlRBUkdFVF9BTFRJVkVDIgorKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfUCAoVjRTRm1vZGUp IgorICAgInZtYWRkZnAgJTAsJTEsJTIsJTMiCisgICBbKHNldF9hdHRyICJ0eXBlIiAidmVjZmxv YXQiKV0pCisgCisgOzsgV2UgZG8gbXVsdGlwbHkgYXMgYSBmdXNlZCBtdWx0aXBseS1hZGQgd2l0 aCBhbiBhZGQgb2YgYSAtMC4wIHZlY3Rvci4KKyAKKy0oZGVmaW5lX2V4cGFuZCAibXVsdjRzZjMi CisrKGRlZmluZV9leHBhbmQgImFsdGl2ZWNfbXVsdjRzZjMiCisgICBbKHVzZSAobWF0Y2hfb3Bl cmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICIiKSkKKyAgICAodXNlIChtYXRjaF9vcGVy YW5kOlY0U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpKQorICAgICh1c2UgKG1hdGNoX29wZXJh bmQ6VjRTRiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikpXQorLSAgIlRBUkdFVF9BTFRJVkVDICYm IFRBUkdFVF9GVVNFRF9NQUREIgorKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfUCAoVjRTRm1vZGUp ICYmIFRBUkdFVF9GVVNFRF9NQUREIgorICAgIgorIHsKKyAgIHJ0eCBuZWcwOworQEAgLTY4NCw3 ICs1NjMsNyBAQCAoZGVmaW5lX2luc24gImFsdGl2ZWNfdm5tc3ViZnAiCisgCShuZWc6VjRTRiAo bWludXM6VjRTRiAobXVsdDpWNFNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJfb3Bl cmFuZCIgInYiKQorIAkJCSAgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNGIDIgInJlZ2lzdGVyX29w ZXJhbmQiICJ2IikpCisgCSAgCSAgICAobWF0Y2hfb3BlcmFuZDpWNFNGIDMgInJlZ2lzdGVyX29w ZXJhbmQiICJ2IikpKSldCistICAiVEFSR0VUX0FMVElWRUMiCisrICAiVkVDVE9SX1VOSVRfQUxU SVZFQ19QIChWNFNGbW9kZSkiCisgICAidm5tc3ViZnAgJTAsJTEsJTIsJTMiCisgICBbKHNldF9h dHRyICJ0eXBlIiAidmVjZmxvYXQiKV0pCisgCitAQCAtNzU4LDExICs2MzcsMTEgQEAgKGRlZmlu ZV9pbnNuICJzbWF4PG1vZGU+MyIKKyAgICJ2bWF4czxWSV9jaGFyPiAlMCwlMSwlMiIKKyAgIFso c2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCisgCistKGRlZmluZV9pbnNuICJzbWF4djRz ZjMiCisrKGRlZmluZV9pbnNuICIqYWx0aXZlY19zbWF4djRzZjMiCisgICBbKHNldCAobWF0Y2hf b3BlcmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCisgICAgICAgICAoc21heDpW NFNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQorICAgICAg ICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNGIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2 IikpKV0KKy0gICJUQVJHRVRfQUxUSVZFQyIKKysgICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKFY0 U0Ztb2RlKSIKKyAgICJ2bWF4ZnAgJTAsJTEsJTIiCisgICBbKHNldF9hdHRyICJ0eXBlIiAidmVj Y21wIildKQorIAorQEAgLTc4MiwxMSArNjYxLDExIEBAIChkZWZpbmVfaW5zbiAic21pbjxtb2Rl PjMiCisgICAidm1pbnM8VklfY2hhcj4gJTAsJTEsJTIiCisgICBbKHNldF9hdHRyICJ0eXBlIiAi dmVjc2ltcGxlIildKQorIAorLShkZWZpbmVfaW5zbiAic21pbnY0c2YzIgorKyhkZWZpbmVfaW5z biAiKmFsdGl2ZWNfc21pbnY0c2YzIgorICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAwICJy ZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQorICAgICAgICAgKHNtaW46VjRTRiAobWF0Y2hfb3BlcmFu ZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKKyAgICAgICAgICAgICAgICAgICAgKG1h dGNoX29wZXJhbmQ6VjRTRiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCistICAiVEFSR0VU X0FMVElWRUMiCisrICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19QIChWNFNGbW9kZSkiCisgICAidm1p bmZwICUwLCUxLCUyIgorICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2NtcCIpXSkKKyAKK0BAIC05 MDUsNyArNzg0LDcgQEAgKGRlZmluZV9pbnNuICJhbHRpdmVjX3ZtcmdodyIKKyAgICJ2bXJnaHcg JTAsJTEsJTIiCisgICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKKyAKKy0oZGVmaW5l X2luc24gImFsdGl2ZWNfdm1yZ2hzZiIKKysoZGVmaW5lX2luc24gIiphbHRpdmVjX3Ztcmdoc2Yi CisgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIp CisgICAgICAgICAodmVjX21lcmdlOlY0U0YgKHZlY19zZWxlY3Q6VjRTRiAobWF0Y2hfb3BlcmFu ZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChwYXJhbGxlbCBbKGNvbnN0X2ludCAwKQorQEAgLTkxOCw3ICs3 OTcsNyBAQCAoZGVmaW5lX2luc24gImFsdGl2ZWNfdm1yZ2hzZiIKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0X2ludCAzKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3RfaW50 IDEpXSkpCisgICAgICAgICAgICAgICAgICAgICAgIChjb25zdF9pbnQgNSkpKV0KKy0gICJUQVJH RVRfQUxUSVZFQyIKKysgICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKFY0U0Ztb2RlKSIKKyAgICJ2 bXJnaHcgJTAsJTEsJTIiCisgICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKKyAKK0BA IC05OTAsMzUgKzg2OSwzNyBAQCAoZGVmaW5lX2luc24gImFsdGl2ZWNfdm1yZ2xoIgorIAorIChk ZWZpbmVfaW5zbiAiYWx0aXZlY192bXJnbHciCisgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNJ IDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCistICAgICAgICAodmVjX21lcmdlOlY0U0kgKHZl Y19zZWxlY3Q6VjRTSSAobWF0Y2hfb3BlcmFuZDpWNFNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2 IikKKy0JCQkJCSAocGFyYWxsZWwgWyhjb25zdF9pbnQgMikKKy0JCQkJCSAJICAgIChjb25zdF9p bnQgMCkKKy0JCQkJCQkgICAgKGNvbnN0X2ludCAzKQorLQkJCQkJCSAgICAoY29uc3RfaW50IDEp XSkpCistICAgICAgICAgICAgICAgICAgICAgICAgKHZlY19zZWxlY3Q6VjRTSSAobWF0Y2hfb3Bl cmFuZDpWNFNJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKKy0JCQkJCSAocGFyYWxsZWwgWyhj b25zdF9pbnQgMCkKKy0JCQkJCSAJICAgIChjb25zdF9pbnQgMikKKy0JCQkJCQkgICAgKGNvbnN0 X2ludCAxKQorLQkJCQkJCSAgICAoY29uc3RfaW50IDMpXSkpCistCQkgICAgICAoY29uc3RfaW50 IDUpKSldCisrICAgICAgICAodmVjX21lcmdlOlY0U0kKKysJICh2ZWNfc2VsZWN0OlY0U0kgKG1h dGNoX29wZXJhbmQ6VjRTSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCisrCQkJICAocGFyYWxs ZWwgWyhjb25zdF9pbnQgMikKKysJCQkJICAgICAoY29uc3RfaW50IDApCisrCQkJCSAgICAgKGNv bnN0X2ludCAzKQorKwkJCQkgICAgIChjb25zdF9pbnQgMSldKSkKKysJICh2ZWNfc2VsZWN0OlY0 U0kgKG1hdGNoX29wZXJhbmQ6VjRTSSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCisrCQkJICAo cGFyYWxsZWwgWyhjb25zdF9pbnQgMCkKKysJCQkJICAgICAoY29uc3RfaW50IDIpCisrCQkJCSAg ICAgKGNvbnN0X2ludCAxKQorKwkJCQkgICAgIChjb25zdF9pbnQgMyldKSkKKysJIChjb25zdF9p bnQgNSkpKV0KKyAgICJUQVJHRVRfQUxUSVZFQyIKKyAgICJ2bXJnbHcgJTAsJTEsJTIiCisgICBb KHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKKyAKKy0oZGVmaW5lX2luc24gImFsdGl2ZWNf dm1yZ2xzZiIKKysoZGVmaW5lX2luc24gIiphbHRpdmVjX3Ztcmdsc2YiCisgICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCistICAgICAgICAodmVj X21lcmdlOlY0U0YgKHZlY19zZWxlY3Q6VjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lz dGVyX29wZXJhbmQiICJ2IikKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChwYXJhbGxlbCBbKGNvbnN0X2ludCAyKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3RfaW50IDApCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdF9pbnQgMykKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0X2lu dCAxKV0pKQorLSAgICAgICAgICAgICAgICAgICAgICAgICh2ZWNfc2VsZWN0OlY0U0YgKG1hdGNo X29wZXJhbmQ6VjRTRiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYWxsZWwgWyhjb25zdF9pbnQgMCkKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0X2lu dCAyKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoY29uc3RfaW50IDEpCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjb25zdF9pbnQgMyldKSkKKy0gICAgICAgICAgICAgICAgICAgICAgKGNv bnN0X2ludCA1KSkpXQorLSAgIlRBUkdFVF9BTFRJVkVDIgorKyAgICAgICAgKHZlY19tZXJnZTpW NFNGCisrCSAodmVjX3NlbGVjdDpWNFNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJf b3BlcmFuZCIgInYiKQorKwkJCSAgKHBhcmFsbGVsIFsoY29uc3RfaW50IDIpCisrCQkJCSAgICAg KGNvbnN0X2ludCAwKQorKwkJCQkgICAgIChjb25zdF9pbnQgMykKKysJCQkJICAgICAoY29uc3Rf aW50IDEpXSkpCisrCSAodmVjX3NlbGVjdDpWNFNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMiAicmVn aXN0ZXJfb3BlcmFuZCIgInYiKQorKwkJCSAgKHBhcmFsbGVsIFsoY29uc3RfaW50IDApCisrCQkJ CSAgICAgKGNvbnN0X2ludCAyKQorKwkJCQkgICAgIChjb25zdF9pbnQgMSkKKysJCQkJICAgICAo Y29uc3RfaW50IDMpXSkpCisrCSAoY29uc3RfaW50IDUpKSldCisrICAiVkVDVE9SX1VOSVRfQUxU SVZFQ19QIChWNFNGbW9kZSkiCisgICAidm1yZ2x3ICUwLCUxLCUyIgorICAgWyhzZXRfYXR0ciAi dHlwZSIgInZlY3Blcm0iKV0pCisgCitAQCAtMTA5NSw2OCArOTc2LDUzIEBAIChkZWZpbmVfaW5z biAiYWx0aXZlY192bXVsb3NoIgorICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2NvbXBsZXgiKV0p CisgCisgCistOzsgbG9naWNhbCBvcHMKKys7OyBsb2dpY2FsIG9wcy4gIEhhdmUgdGhlIGxvZ2lj YWwgb3BzIGZvbGxvdyB0aGUgbWVtb3J5IG9wcyBpbgorKzs7IHRlcm1zIG9mIHdoZXRoZXIgdG8g cHJlZmVyIFZTWCBvciBBbHRpdmVjCisgCistKGRlZmluZV9pbnNuICJhbmQ8bW9kZT4zIgorLSAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6VkkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKKy0gICAg ICAgIChhbmQ6VkkgKG1hdGNoX29wZXJhbmQ6VkkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQor LSAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWSSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAi diIpKSldCistICAiVEFSR0VUX0FMVElWRUMiCisrKGRlZmluZV9pbnNuICIqYWx0aXZlY19hbmQ8 bW9kZT4zIgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vk0gMCAicmVnaXN0ZXJfb3BlcmFuZCIg Ij12IikKKysgICAgICAgIChhbmQ6Vk0gKG1hdGNoX29wZXJhbmQ6Vk0gMSAicmVnaXN0ZXJfb3Bl cmFuZCIgInYiKQorKwkJKG1hdGNoX29wZXJhbmQ6Vk0gMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYi KSkpXQorKyAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19QICg8TU9ERT5tb2RlKSIKKyAgICJ2YW5kICUw LCUxLCUyIgorICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKKyAKKy0oZGVmaW5l X2luc24gImlvcjxtb2RlPjMiCistICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWSSAwICJyZWdpc3Rl cl9vcGVyYW5kIiAiPXYiKQorLSAgICAgICAgKGlvcjpWSSAobWF0Y2hfb3BlcmFuZDpWSSAxICJy ZWdpc3Rlcl9vcGVyYW5kIiAidiIpCistICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlZJ IDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpKV0KKy0gICJUQVJHRVRfQUxUSVZFQyIKKysoZGVm aW5lX2luc24gIiphbHRpdmVjX2lvcjxtb2RlPjMiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpW TSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQorKyAgICAgICAgKGlvcjpWTSAobWF0Y2hfb3Bl cmFuZDpWTSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCisrCQkobWF0Y2hfb3BlcmFuZDpWTSAy ICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCisrICAiVkVDVE9SX01FTV9BTFRJVkVDX1AgKDxN T0RFPm1vZGUpIgorICAgInZvciAlMCwlMSwlMiIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNz aW1wbGUiKV0pCisgCistKGRlZmluZV9pbnNuICJ4b3I8bW9kZT4zIgorLSAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6VkkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKKy0gICAgICAgICh4b3I6Vkkg KG1hdGNoX29wZXJhbmQ6VkkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQorLSAgICAgICAgICAg ICAgICAobWF0Y2hfb3BlcmFuZDpWSSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCistICAi VEFSR0VUX0FMVElWRUMiCisrKGRlZmluZV9pbnNuICIqYWx0aXZlY194b3I8bW9kZT4zIgorKyAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6Vk0gMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKKysgICAg ICAgICh4b3I6Vk0gKG1hdGNoX29wZXJhbmQ6Vk0gMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQor KwkJKG1hdGNoX29wZXJhbmQ6Vk0gMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpXQorKyAgIlZF Q1RPUl9NRU1fQUxUSVZFQ19QICg8TU9ERT5tb2RlKSIKKyAgICJ2eG9yICUwLCUxLCUyIgorICAg WyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKKyAKKy0oZGVmaW5lX2luc24gInhvcnY0 c2YzIgorLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAi PXYiKQorLSAgICAgICAgKHhvcjpWNFNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJf b3BlcmFuZCIgInYiKQorLSAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY0U0YgMiAi cmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpXQorLSAgIlRBUkdFVF9BTFRJVkVDIgorLSAgInZ4b3Ig JTAsJTEsJTIiIAorLSAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKKy0KKy0oZGVm aW5lX2luc24gIm9uZV9jbXBsPG1vZGU+MiIKKy0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZJIDAg InJlZ2lzdGVyX29wZXJhbmQiICI9diIpCistICAgICAgICAobm90OlZJIChtYXRjaF9vcGVyYW5k OlZJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpKV0KKy0gICJUQVJHRVRfQUxUSVZFQyIKKyso ZGVmaW5lX2luc24gIiphbHRpdmVjX29uZV9jbXBsPG1vZGU+MiIKKysgIFsoc2V0IChtYXRjaF9v cGVyYW5kOlZNIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCisrICAgICAgICAobm90OlZNICht YXRjaF9vcGVyYW5kOlZNIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpKV0KKysgICJWRUNUT1Jf TUVNX0FMVElWRUNfUCAoPE1PREU+bW9kZSkiCisgICAidm5vciAlMCwlMSwlMSIKKyAgIFsoc2V0 X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCisgICAKKy0oZGVmaW5lX2luc24gImFsdGl2ZWNf bm9yPG1vZGU+MyIKKy0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZJIDAgInJlZ2lzdGVyX29wZXJh bmQiICI9diIpCistICAgICAgICAobm90OlZJIChpb3I6VkkgKG1hdGNoX29wZXJhbmQ6VkkgMSAi cmVnaXN0ZXJfb3BlcmFuZCIgInYiKQorLSAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaF9v cGVyYW5kOlZJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpKSldCistICAiVEFSR0VUX0FMVElW RUMiCisrKGRlZmluZV9pbnNuICIqYWx0aXZlY19ub3I8bW9kZT4zIgorKyAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6Vk0gMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKKysgICAgICAgIChub3Q6Vk0g KGlvcjpWTSAobWF0Y2hfb3BlcmFuZDpWTSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCisrCQkJ KG1hdGNoX29wZXJhbmQ6Vk0gMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpKV0KKysgICJWRUNU T1JfTUVNX0FMVElWRUNfUCAoPE1PREU+bW9kZSkiCisgICAidm5vciAlMCwlMSwlMiIKKyAgIFso c2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCisgCistKGRlZmluZV9pbnNuICJhbmRjPG1v ZGU+MyIKKy0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9 diIpCistICAgICAgICAoYW5kOlZJIChub3Q6VkkgKG1hdGNoX29wZXJhbmQ6VkkgMiAicmVnaXN0 ZXJfb3BlcmFuZCIgInYiKSkKKy0gICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VkkgMSAi cmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpXQorLSAgIlRBUkdFVF9BTFRJVkVDIgorLSAgInZhbmRj ICUwLCUxLCUyIgorLSAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKKy0KKy0oZGVm aW5lX2luc24gIiphbmRjM192NHNmIgorLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAwICJy ZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQorLSAgICAgICAgKGFuZDpWNFNGIChub3Q6VjRTRiAobWF0 Y2hfb3BlcmFuZDpWNFNGIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpCistICAgICAgICAgICAg ICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCist ICAiVEFSR0VUX0FMVElWRUMiCisrKGRlZmluZV9pbnNuICIqYWx0aXZlY19hbmRjPG1vZGU+MyIK KysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZNIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCisr ICAgICAgICAoYW5kOlZNIChub3Q6Vk0gKG1hdGNoX29wZXJhbmQ6Vk0gMiAicmVnaXN0ZXJfb3Bl cmFuZCIgInYiKSkKKysJCShtYXRjaF9vcGVyYW5kOlZNIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2 IikpKV0KKysgICJWRUNUT1JfTUVNX0FMVElWRUNfUCAoPE1PREU+bW9kZSkiCisgICAidmFuZGMg JTAsJTEsJTIiCisgICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc2ltcGxlIildKQorIAorQEAgLTEz OTIsNyArMTI1OCw3IEBAIChkZWZpbmVfaW5zbiAiKmFsdGl2ZWNfdnNwbHRzZiIKKyAJICh2ZWNf c2VsZWN0OlNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQor IAkJCShwYXJhbGxlbAorIAkJCSBbKG1hdGNoX29wZXJhbmQ6UUkgMiAidTViaXRfY2ludF9vcGVy YW5kIiAiaSIpXSkpKSldCistICAiVEFSR0VUX0FMVElWRUMiCisrICAiVkVDVE9SX1VOSVRfQUxU SVZFQ19QIChWNFNGbW9kZSkiCisgICAidnNwbHR3ICUwLCUxLCUyIgorICAgWyhzZXRfYXR0ciAi dHlwZSIgInZlY3Blcm0iKV0pCisgCitAQCAtMTQwNCwxOSArMTI3MCwxOSBAQCAoZGVmaW5lX2lu c24gImFsdGl2ZWNfdnNwbHRpczxWSV9jaGFyPiIKKyAgICJ2c3BsdGlzPFZJX2NoYXI+ICUwLCUx IgorICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCisgCistKGRlZmluZV9pbnNuICJm dHJ1bmN2NHNmMiIKKysoZGVmaW5lX2luc24gIiphbHRpdmVjX2Z0cnVuY3Y0c2YyIgorICAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQorICAgCShm aXg6VjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpKV0K Ky0gICJUQVJHRVRfQUxUSVZFQyIKKysgICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKFY0U0Ztb2Rl KSIKKyAgICJ2cmZpeiAlMCwlMSIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNmbG9hdCIpXSkK KyAKKyAoZGVmaW5lX2luc24gImFsdGl2ZWNfdnBlcm1fPG1vZGU+IgorLSAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6ViAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQorLQkodW5zcGVjOlYgWyhtYXRj aF9vcGVyYW5kOlYgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQorLQkJICAgKG1hdGNoX29wZXJh bmQ6ViAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCistCQkgICAobWF0Y2hfb3BlcmFuZDpWMTZR SSAzICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXQorLQkJICBVTlNQRUNfVlBFUk0pKV0KKysgIFso c2V0IChtYXRjaF9vcGVyYW5kOlZNIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCisrCSh1bnNw ZWM6Vk0gWyhtYXRjaF9vcGVyYW5kOlZNIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKKysJCSAg ICAobWF0Y2hfb3BlcmFuZDpWTSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCisrCQkgICAgKG1h dGNoX29wZXJhbmQ6VjE2UUkgMyAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKV0KKysJCSAgIFVOU1BF Q19WUEVSTSkpXQorICAgIlRBUkdFVF9BTFRJVkVDIgorICAgInZwZXJtICUwLCUxLCUyLCUzIgor ICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCitAQCAtMTUxNSwxODAgKzEzODEsNiBA QCAoZGVmaW5lX2luc24gImFsdGl2ZWNfdnJlZnAiCisgICAidnJlZnAgJTAsJTEiCisgICBbKHNl dF9hdHRyICJ0eXBlIiAidmVjZmxvYXQiKV0pCisgCistKGRlZmluZV9leHBhbmQgInZjb25kdjRz aSIKKy0gICAgICAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0kgMCAicmVnaXN0ZXJfb3BlcmFu ZCIgIj12IikKKy0gICAgICAgICAgICAgIChpZl90aGVuX2Vsc2U6VjRTSQorLSAgICAgICAgICAg ICAgICAobWF0Y2hfb3BlcmF0b3IgMyAiY29tcGFyaXNvbl9vcGVyYXRvciIKKy0gICAgICAgICAg ICAgICAgICBbKG1hdGNoX29wZXJhbmQ6VjRTSSA0ICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCist ICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY0U0kgNSAicmVnaXN0ZXJfb3BlcmFu ZCIgInYiKV0pCistICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTSSAxICJyZWdpc3Rl cl9vcGVyYW5kIiAidiIpCistICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTSSAyICJy ZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCistCSJUQVJHRVRfQUxUSVZFQyIKKy0JIgorLXsKKy0J aWYgKHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb25kX2V4cHIgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sx XSwgb3BlcmFuZHNbMl0sCistCQkJCQkgIG9wZXJhbmRzWzNdLCBvcGVyYW5kc1s0XSwgb3BlcmFu ZHNbNV0pKQorLQlET05FOworLQllbHNlCistCUZBSUw7CistfQorLQkiKQorLQorLShkZWZpbmVf ZXhwYW5kICJ2Y29uZHV2NHNpIgorLSAgICAgICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTSSAw ICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQorLSAgICAgICAgICAgICAgKGlmX3RoZW5fZWxzZTpW NFNJCistICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYXRvciAzICJjb21wYXJpc29uX29wZXJh dG9yIgorLSAgICAgICAgICAgICAgICAgIFsobWF0Y2hfb3BlcmFuZDpWNFNJIDQgInJlZ2lzdGVy X29wZXJhbmQiICJ2IikKKy0gICAgICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTSSA1 ICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSkKKy0gICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFu ZDpWNFNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKKy0gICAgICAgICAgICAgICAobWF0Y2hf b3BlcmFuZDpWNFNJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpKV0KKy0JIlRBUkdFVF9BTFRJ VkVDIgorLQkiCisteworLQlpZiAocnM2MDAwX2VtaXRfdmVjdG9yX2NvbmRfZXhwciAob3BlcmFu ZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSwKKy0JCQkJCSAgb3BlcmFuZHNbM10sIG9w ZXJhbmRzWzRdLCBvcGVyYW5kc1s1XSkpCistCURPTkU7CistCWVsc2UKKy0JRkFJTDsKKy19Cist CSIpCistCistKGRlZmluZV9leHBhbmQgInZjb25kdjRzZiIKKy0gICAgICAgIFsoc2V0IChtYXRj aF9vcGVyYW5kOlY0U0YgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKKy0gICAgICAgICAgICAg IChpZl90aGVuX2Vsc2U6VjRTRgorLSAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmF0b3IgMyAi Y29tcGFyaXNvbl9vcGVyYXRvciIKKy0gICAgICAgICAgICAgICAgICBbKG1hdGNoX29wZXJhbmQ6 VjRTRiA0ICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCistICAgICAgICAgICAgICAgICAgIChtYXRj aF9vcGVyYW5kOlY0U0YgNSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKV0pCistICAgICAgICAgICAg ICAgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCistICAgICAg ICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTRiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSld CistCSJUQVJHRVRfQUxUSVZFQyIKKy0JIgorLXsKKy0JaWYgKHJzNjAwMF9lbWl0X3ZlY3Rvcl9j b25kX2V4cHIgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0sCistCQkJCQkg IG9wZXJhbmRzWzNdLCBvcGVyYW5kc1s0XSwgb3BlcmFuZHNbNV0pKQorLQlET05FOworLQllbHNl CistCUZBSUw7CistfQorLQkiKQorLQorLShkZWZpbmVfZXhwYW5kICJ2Y29uZHY4aGkiCistICAg ICAgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWOEhJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIp CistICAgICAgICAgICAgICAoaWZfdGhlbl9lbHNlOlY4SEkKKy0gICAgICAgICAgICAgICAgKG1h dGNoX29wZXJhdG9yIDMgImNvbXBhcmlzb25fb3BlcmF0b3IiCistICAgICAgICAgICAgICAgICAg WyhtYXRjaF9vcGVyYW5kOlY4SEkgNCAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQorLSAgICAgICAg ICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWOEhJIDUgInJlZ2lzdGVyX29wZXJhbmQiICJ2Iild KQorLSAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY4SEkgMSAicmVnaXN0ZXJfb3BlcmFu ZCIgInYiKQorLSAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY4SEkgMiAicmVnaXN0ZXJf b3BlcmFuZCIgInYiKSkpXQorLQkiVEFSR0VUX0FMVElWRUMiCistCSIKKy17CistCWlmIChyczYw MDBfZW1pdF92ZWN0b3JfY29uZF9leHByIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJh bmRzWzJdLAorLQkJCQkJICBvcGVyYW5kc1szXSwgb3BlcmFuZHNbNF0sIG9wZXJhbmRzWzVdKSkK Ky0JRE9ORTsKKy0JZWxzZQorLQlGQUlMOworLX0KKy0JIikKKy0KKy0oZGVmaW5lX2V4cGFuZCAi dmNvbmR1djhoaSIKKy0gICAgICAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY4SEkgMCAicmVnaXN0 ZXJfb3BlcmFuZCIgIj12IikKKy0gICAgICAgICAgICAgIChpZl90aGVuX2Vsc2U6VjhISQorLSAg ICAgICAgICAgICAgICAobWF0Y2hfb3BlcmF0b3IgMyAiY29tcGFyaXNvbl9vcGVyYXRvciIKKy0g ICAgICAgICAgICAgICAgICBbKG1hdGNoX29wZXJhbmQ6VjhISSA0ICJyZWdpc3Rlcl9vcGVyYW5k IiAidiIpCistICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY4SEkgNSAicmVnaXN0 ZXJfb3BlcmFuZCIgInYiKV0pCistICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjhISSAx ICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCistICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6 VjhISSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCistCSJUQVJHRVRfQUxUSVZFQyIKKy0J IgorLXsKKy0JaWYgKHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb25kX2V4cHIgKG9wZXJhbmRzWzBdLCBv cGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0sCistCQkJCQkgIG9wZXJhbmRzWzNdLCBvcGVyYW5kc1s0 XSwgb3BlcmFuZHNbNV0pKQorLQlET05FOworLQllbHNlCistCUZBSUw7CistfQorLQkiKQorLQor LShkZWZpbmVfZXhwYW5kICJ2Y29uZHYxNnFpIgorLSAgICAgICAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6VjE2UUkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKKy0gICAgICAgICAgICAgIChpZl90 aGVuX2Vsc2U6VjE2UUkKKy0gICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhdG9yIDMgImNvbXBh cmlzb25fb3BlcmF0b3IiCistICAgICAgICAgICAgICAgICAgWyhtYXRjaF9vcGVyYW5kOlYxNlFJ IDQgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKKy0gICAgICAgICAgICAgICAgICAgKG1hdGNoX29w ZXJhbmQ6VjE2UUkgNSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKV0pCistICAgICAgICAgICAgICAg KG1hdGNoX29wZXJhbmQ6VjE2UUkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQorLSAgICAgICAg ICAgICAgIChtYXRjaF9vcGVyYW5kOlYxNlFJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpKV0K Ky0JIlRBUkdFVF9BTFRJVkVDIgorLQkiCisteworLQlpZiAocnM2MDAwX2VtaXRfdmVjdG9yX2Nv bmRfZXhwciAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSwKKy0JCQkJCSAg b3BlcmFuZHNbM10sIG9wZXJhbmRzWzRdLCBvcGVyYW5kc1s1XSkpCistCURPTkU7CistCWVsc2UK Ky0JRkFJTDsKKy19CistCSIpCistCistKGRlZmluZV9leHBhbmQgInZjb25kdXYxNnFpIgorLSAg ICAgICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjE2UUkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12 IikKKy0gICAgICAgICAgICAgIChpZl90aGVuX2Vsc2U6VjE2UUkKKy0gICAgICAgICAgICAgICAg KG1hdGNoX29wZXJhdG9yIDMgImNvbXBhcmlzb25fb3BlcmF0b3IiCistICAgICAgICAgICAgICAg ICAgWyhtYXRjaF9vcGVyYW5kOlYxNlFJIDQgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKKy0gICAg ICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjE2UUkgNSAicmVnaXN0ZXJfb3BlcmFuZCIg InYiKV0pCistICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjE2UUkgMSAicmVnaXN0ZXJf b3BlcmFuZCIgInYiKQorLSAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlYxNlFJIDIgInJl Z2lzdGVyX29wZXJhbmQiICJ2IikpKV0KKy0JIlRBUkdFVF9BTFRJVkVDIgorLQkiCisteworLQlp ZiAocnM2MDAwX2VtaXRfdmVjdG9yX2NvbmRfZXhwciAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFd LCBvcGVyYW5kc1syXSwKKy0JCQkJCSAgb3BlcmFuZHNbM10sIG9wZXJhbmRzWzRdLCBvcGVyYW5k c1s1XSkpCistCURPTkU7CistCWVsc2UKKy0JRkFJTDsKKy19CistCSIpCistCistCistKGRlZmlu ZV9pbnNuICJhbHRpdmVjX3ZzZWxfdjRzaSIKKy0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0kg MCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKKy0gICAgICAgICh1bnNwZWM6VjRTSSBbKG1hdGNo X29wZXJhbmQ6VjRTSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCistICAgICAgICAgICAgICAg ICAgICAgIChtYXRjaF9vcGVyYW5kOlY0U0kgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQorLSAg ICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNJIDMgInJlZ2lzdGVyX29wZXJh bmQiICJ2IildIAorLQkJICAgICBVTlNQRUNfVlNFTDRTSSkpXQorLSAgIlRBUkdFVF9BTFRJVkVD IgorLSAgInZzZWwgJTAsJTEsJTIsJTMiCistICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIp XSkKKy0KKy0oZGVmaW5lX2luc24gImFsdGl2ZWNfdnNlbF92NHNmIgorLSAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6VjRTRiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQorLSAgICAgICAgKHVuc3Bl YzpWNFNGIFsobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKKy0g ICAgICAgICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTRiAyICJyZWdpc3Rlcl9vcGVy YW5kIiAidiIpCistICAgICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY0U0kgMyAi cmVnaXN0ZXJfb3BlcmFuZCIgInYiKV0gCistCSAgICAgICAgICAgICAgVU5TUEVDX1ZTRUw0U0Yp KV0KKy0gICJUQVJHRVRfQUxUSVZFQyIKKy0gICJ2c2VsICUwLCUxLCUyLCUzIgorLSAgWyhzZXRf YXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCistCistKGRlZmluZV9pbnNuICJhbHRpdmVjX3ZzZWxf djhoaSIKKy0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY4SEkgMCAicmVnaXN0ZXJfb3BlcmFuZCIg Ij12IikKKy0gICAgICAgICh1bnNwZWM6VjhISSBbKG1hdGNoX29wZXJhbmQ6VjhISSAxICJyZWdp c3Rlcl9vcGVyYW5kIiAidiIpCistICAgICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5k OlY4SEkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQorLSAgICAgICAgICAgICAgICAgICAgICAo bWF0Y2hfb3BlcmFuZDpWOEhJIDMgInJlZ2lzdGVyX29wZXJhbmQiICJ2IildIAorLQkJICAgICBV TlNQRUNfVlNFTDhISSkpXQorLSAgIlRBUkdFVF9BTFRJVkVDIgorLSAgInZzZWwgJTAsJTEsJTIs JTMiCistICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKKy0KKy0oZGVmaW5lX2luc24g ImFsdGl2ZWNfdnNlbF92MTZxaSIKKy0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYxNlFJIDAgInJl Z2lzdGVyX29wZXJhbmQiICI9diIpCistICAgICAgICAodW5zcGVjOlYxNlFJIFsobWF0Y2hfb3Bl cmFuZDpWMTZRSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCistICAgICAgICAgICAgICAgICAg ICAgICAobWF0Y2hfb3BlcmFuZDpWMTZRSSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCistICAg ICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWMTZRSSAzICJyZWdpc3Rlcl9vcGVy YW5kIiAidiIpXSAKKy0JCSAgICAgIFVOU1BFQ19WU0VMMTZRSSkpXQorLSAgIlRBUkdFVF9BTFRJ VkVDIgorLSAgInZzZWwgJTAsJTEsJTIsJTMiCistICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVy bSIpXSkKKy0KKyAoZGVmaW5lX2luc24gImFsdGl2ZWNfdnNsZG9pXzxtb2RlPiIKKyAgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlYgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKKyAgICAgICAgICh1 bnNwZWM6ViBbKG1hdGNoX29wZXJhbmQ6ViAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCitAQCAt MTg3OCw2ICsxNTcwLDE0IEBAIChkZWZpbmVfZXhwYW5kICJidWlsZF92ZWN0b3JfbWFza19mb3Jf bG8KKyAgIGdjY19hc3NlcnQgKEdFVF9DT0RFIChvcGVyYW5kc1sxXSkgPT0gTUVNKTsKKyAKKyAg IGFkZHIgPSBYRVhQIChvcGVyYW5kc1sxXSwgMCk7CisrICBpZiAoVkVDVE9SX01FTV9WU1hfUCAo R0VUX01PREUgKG9wZXJhbmRzWzFdKSkpCisrICAgIHsKKysgICAgICAvKiBWU1ggZG9lc24ndCBh bmQgb2ZmIHRoZSBib3R0b20gYWRkcmVzcyBiaXRzLCBhbmQgbWVtb3J5CisrCSBvcGVyYXRpb25z IGFyZSBhbGlnbmVkIHRvIHRoZSBuYXR1cmFsIGRhdGEgdHlwZS4gICovCisrICAgICAgZW1pdF9p bnNuIChnZW5fcnR4X1NFVCAoVk9JRG1vZGUsIG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSkpOwor KyAgICAgIERPTkU7CisrICAgIH0KKysKKyAgIHRlbXAgPSBnZW5fcmVnX3J0eCAoR0VUX01PREUg KGFkZHIpKTsKKyAgIGVtaXRfaW5zbiAoZ2VuX3J0eF9TRVQgKFZPSURtb2RlLCB0ZW1wLCAKKyAJ CQkgIGdlbl9ydHhfTkVHIChHRVRfTU9ERSAoYWRkciksIGFkZHIpKSk7CitAQCAtMTk1OSw5NSAr MTY1OSw2IEBAIChkZWZpbmVfaW5zbiAiKmFsdGl2ZWNfc3R2ZXNmeCIKKyAgICJzdHZld3ggJTEs JXkwIgorICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3N0b3JlIildKQorIAorLShkZWZpbmVfZXhw YW5kICJ2ZWNfaW5pdDxtb2RlPiIKKy0gIFsobWF0Y2hfb3BlcmFuZDpWIDAgInJlZ2lzdGVyX29w ZXJhbmQiICIiKQorLSAgIChtYXRjaF9vcGVyYW5kIDEgIiIgIiIpXQorLSAgIlRBUkdFVF9BTFRJ VkVDIgorLXsKKy0gIHJzNjAwMF9leHBhbmRfdmVjdG9yX2luaXQgKG9wZXJhbmRzWzBdLCBvcGVy YW5kc1sxXSk7CistICBET05FOworLX0pCistCistKGRlZmluZV9leHBhbmQgInZlY19zZXR2NHNp IgorLSAgWyhtYXRjaF9vcGVyYW5kOlY0U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCistICAg KG1hdGNoX29wZXJhbmQ6U0kgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCistICAgKG1hdGNoX29w ZXJhbmQgMiAiY29uc3RfaW50X29wZXJhbmQiICIiKV0KKy0gICJUQVJHRVRfQUxUSVZFQyIKKy17 CistICByczYwMDBfZXhwYW5kX3ZlY3Rvcl9zZXQgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwg SU5UVkFMIChvcGVyYW5kc1syXSkpOworLSAgRE9ORTsKKy19KQorLQorLShkZWZpbmVfZXhwYW5k ICJ2ZWNfc2V0djhoaSIKKy0gIFsobWF0Y2hfb3BlcmFuZDpWOEhJIDAgInJlZ2lzdGVyX29wZXJh bmQiICIiKQorLSAgIChtYXRjaF9vcGVyYW5kOkhJIDEgInJlZ2lzdGVyX29wZXJhbmQiICIiKQor LSAgIChtYXRjaF9vcGVyYW5kIDIgImNvbnN0X2ludF9vcGVyYW5kIiAiIildCistICAiVEFSR0VU X0FMVElWRUMiCisteworLSAgcnM2MDAwX2V4cGFuZF92ZWN0b3Jfc2V0IChvcGVyYW5kc1swXSwg b3BlcmFuZHNbMV0sIElOVFZBTCAob3BlcmFuZHNbMl0pKTsKKy0gIERPTkU7CistfSkKKy0KKy0o ZGVmaW5lX2V4cGFuZCAidmVjX3NldHYxNnFpIgorLSAgWyhtYXRjaF9vcGVyYW5kOlYxNlFJIDAg InJlZ2lzdGVyX29wZXJhbmQiICIiKQorLSAgIChtYXRjaF9vcGVyYW5kOlFJIDEgInJlZ2lzdGVy X29wZXJhbmQiICIiKQorLSAgIChtYXRjaF9vcGVyYW5kIDIgImNvbnN0X2ludF9vcGVyYW5kIiAi IildCistICAiVEFSR0VUX0FMVElWRUMiCisteworLSAgcnM2MDAwX2V4cGFuZF92ZWN0b3Jfc2V0 IChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIElOVFZBTCAob3BlcmFuZHNbMl0pKTsKKy0gIERP TkU7CistfSkKKy0KKy0oZGVmaW5lX2V4cGFuZCAidmVjX3NldHY0c2YiCistICBbKG1hdGNoX29w ZXJhbmQ6VjRTRiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKKy0gICAobWF0Y2hfb3BlcmFuZDpT RiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKKy0gICAobWF0Y2hfb3BlcmFuZCAyICJjb25zdF9p bnRfb3BlcmFuZCIgIiIpXQorLSAgIlRBUkdFVF9BTFRJVkVDIgorLXsKKy0gIHJzNjAwMF9leHBh bmRfdmVjdG9yX3NldCAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBJTlRWQUwgKG9wZXJhbmRz WzJdKSk7CistICBET05FOworLX0pCistCistKGRlZmluZV9leHBhbmQgInZlY19leHRyYWN0djRz aSIKKy0gIFsobWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKKy0gICAo bWF0Y2hfb3BlcmFuZDpWNFNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICIiKQorLSAgIChtYXRjaF9v cGVyYW5kIDIgImNvbnN0X2ludF9vcGVyYW5kIiAiIildCistICAiVEFSR0VUX0FMVElWRUMiCist eworLSAgcnM2MDAwX2V4cGFuZF92ZWN0b3JfZXh0cmFjdCAob3BlcmFuZHNbMF0sIG9wZXJhbmRz WzFdLCBJTlRWQUwgKG9wZXJhbmRzWzJdKSk7CistICBET05FOworLX0pCistCistKGRlZmluZV9l eHBhbmQgInZlY19leHRyYWN0djhoaSIKKy0gIFsobWF0Y2hfb3BlcmFuZDpISSAwICJyZWdpc3Rl cl9vcGVyYW5kIiAiIikKKy0gICAobWF0Y2hfb3BlcmFuZDpWOEhJIDEgInJlZ2lzdGVyX29wZXJh bmQiICIiKQorLSAgIChtYXRjaF9vcGVyYW5kIDIgImNvbnN0X2ludF9vcGVyYW5kIiAiIildCist ICAiVEFSR0VUX0FMVElWRUMiCisteworLSAgcnM2MDAwX2V4cGFuZF92ZWN0b3JfZXh0cmFjdCAo b3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBJTlRWQUwgKG9wZXJhbmRzWzJdKSk7CistICBET05F OworLX0pCistCistKGRlZmluZV9leHBhbmQgInZlY19leHRyYWN0djE2cWkiCistICBbKG1hdGNo X29wZXJhbmQ6UUkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCistICAgKG1hdGNoX29wZXJhbmQ6 VjE2UUkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCistICAgKG1hdGNoX29wZXJhbmQgMiAiY29u c3RfaW50X29wZXJhbmQiICIiKV0KKy0gICJUQVJHRVRfQUxUSVZFQyIKKy17CistICByczYwMDBf ZXhwYW5kX3ZlY3Rvcl9leHRyYWN0IChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIElOVFZBTCAo b3BlcmFuZHNbMl0pKTsKKy0gIERPTkU7CistfSkKKy0KKy0oZGVmaW5lX2V4cGFuZCAidmVjX2V4 dHJhY3R2NHNmIgorLSAgWyhtYXRjaF9vcGVyYW5kOlNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICIi KQorLSAgIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCistICAg KG1hdGNoX29wZXJhbmQgMiAiY29uc3RfaW50X29wZXJhbmQiICIiKV0KKy0gICJUQVJHRVRfQUxU SVZFQyIKKy17CistICByczYwMDBfZXhwYW5kX3ZlY3Rvcl9leHRyYWN0IChvcGVyYW5kc1swXSwg b3BlcmFuZHNbMV0sIElOVFZBTCAob3BlcmFuZHNbMl0pKTsKKy0gIERPTkU7CistfSkKKy0KKyA7 OyBHZW5lcmF0ZQorIDs7ICAgIHZzcGx0aXM/IFNDUkFUQ0gwLDAKKyA7OyAgICB2c3VidT9tIFND UkFUQ0gyLFNDUkFUQ0gxLCUxCitAQCAtMjA2OSw3ICsxNjgwLDcgQEAgKGRlZmluZV9leHBhbmQg ImFiczxtb2RlPjIiCisgOzsgICAgdnNwbHRpc3cgU0NSQVRDSDEsLTEKKyA7OyAgICB2c2x3IFND UkFUQ0gyLFNDUkFUQ0gxLFNDUkFUQ0gxCisgOzsgICAgdmFuZGMgJTAsJTEsU0NSQVRDSDIKKy0o ZGVmaW5lX2V4cGFuZCAiYWJzdjRzZjIiCisrKGRlZmluZV9leHBhbmQgImFsdGl2ZWNfYWJzdjRz ZjIiCisgICBbKHNldCAobWF0Y2hfZHVwIDIpCisgCSh2ZWNfZHVwbGljYXRlOlY0U0kgKGNvbnN0 X2ludCAtMSkpKQorICAgIChzZXQgKG1hdGNoX2R1cCAzKQorQEAgLTIxMzIsNyArMTc0Myw3IEBA IChkZWZpbmVfZXhwYW5kICJ2ZWNfc2hsXzxtb2RlPiIKKyAgIERPTkU7CisgfSIpCisgCistOzsg VmVjdG9yIHNoaWZ0IGxlZnQgaW4gYml0cy4gQ3VycmVudGx5IHN1cHBvcnRlZCBvbnkgZm9yIHNo aWZ0CisrOzsgVmVjdG9yIHNoaWZ0IHJpZ2h0IGluIGJpdHMuIEN1cnJlbnRseSBzdXBwb3J0ZWQg b255IGZvciBzaGlmdAorIDs7IGFtb3VudHMgdGhhdCBjYW4gYmUgZXhwcmVzc2VkIGFzIGJ5dGUg c2hpZnRzIChkaXZpc2libGUgYnkgOCkuCisgOzsgR2VuZXJhbCBzaGlmdCBhbW91bnRzIGNhbiBi ZSBzdXBwb3J0ZWQgdXNpbmcgdnNybyArIHZzci4gV2UncmUKKyA7OyBub3QgZXhwZWN0aW5nIHRv IHNlZSB0aGVzZSB5ZXQgKHRoZSB2ZWN0b3JpemVyIGN1cnJlbnRseQorQEAgLTI2NjUsNyArMjI3 Niw3IEBAIChkZWZpbmVfZXhwYW5kICJ2ZWNfcGFja190cnVuY192NHNpIgorICAgRE9ORTsKKyB9 IikKKyAKKy0oZGVmaW5lX2V4cGFuZCAibmVndjRzZjIiCisrKGRlZmluZV9leHBhbmQgImFsdGl2 ZWNfbmVndjRzZjIiCisgICBbKHVzZSAobWF0Y2hfb3BlcmFuZDpWNFNGIDAgInJlZ2lzdGVyX29w ZXJhbmQiICIiKSkKKyAgICAodXNlIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJfb3Bl cmFuZCIgIiIpKV0KKyAgICJUQVJHRVRfQUxUSVZFQyIKK0BAIC0yOTk0LDI5ICsyNjA1LDYgQEAg KGRlZmluZV9leHBhbmQgInZlY19leHRyYWN0X29kZHYxNnFpIgorICAgZW1pdF9pbnNuIChnZW5f dnBrdWh1bV9ub21vZGUgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pKTsK KyAgIERPTkU7CisgfSIpCistKGRlZmluZV9leHBhbmQgInZlY19pbnRlcmxlYXZlX2hpZ2h2NHNm IgorLSBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICIiKQor LSAgICAgICAgKHVuc3BlYzpWNFNGIFsobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lzdGVyX29w ZXJhbmQiICIiKQorLSAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNGIDIg InJlZ2lzdGVyX29wZXJhbmQiICIiKV0KKy0gICAgICAgICAgICAgICAgICAgICAgVU5TUEVDX0lO VEVSSElfVjRTRikpXQorLSAgIlRBUkdFVF9BTFRJVkVDIgorLSAgIgorLXsgCistICBlbWl0X2lu c24gKGdlbl9hbHRpdmVjX3Ztcmdoc2YgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFu ZHNbMl0pKTsKKy0gIERPTkU7CistfSIpCistCistKGRlZmluZV9leHBhbmQgInZlY19pbnRlcmxl YXZlX2xvd3Y0c2YiCistIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAicmVnaXN0ZXJfb3Bl cmFuZCIgIiIpCistICAgICAgICAodW5zcGVjOlY0U0YgWyhtYXRjaF9vcGVyYW5kOlY0U0YgMSAi cmVnaXN0ZXJfb3BlcmFuZCIgIiIpCistICAgICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVy YW5kOlY0U0YgMiAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpXQorLSAgICAgICAgICAgICAgICAgICAg ICBVTlNQRUNfSU5URVJMT19WNFNGKSldCistICAiVEFSR0VUX0FMVElWRUMiCistICAiCistewor LSAgZW1pdF9pbnNuIChnZW5fYWx0aXZlY192bXJnbHNmIChvcGVyYW5kc1swXSwgb3BlcmFuZHNb MV0sIG9wZXJhbmRzWzJdKSk7CistICBET05FOworLX0iKQorIAorIChkZWZpbmVfZXhwYW5kICJ2 ZWNfaW50ZXJsZWF2ZV9oaWdoPG1vZGU+IgorICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWSSAwICJy ZWdpc3Rlcl9vcGVyYW5kIiAiIikKKy0tLSBnY2MvY29uZmlnL3JzNjAwMC9haXg2MS5oCSguLi4v dHJ1bmspCShyZXZpc2lvbiAxNDQ1NTcpCisrKysgZ2NjL2NvbmZpZy9yczYwMDAvYWl4NjEuaAko Li4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDQ2OTIpCitAQCAt NTcsMjAgKzU3LDI0IEBAIGRvIHsJCQkJCQkJCQlcCisgI3VuZGVmIEFTTV9TUEVDCisgI2RlZmlu ZSBBU01fU1BFQyAiLXUgJXttYWl4NjQ6LWE2NCAleyFtY3B1KjotbXBwYzY0fX0gJShhc21fY3B1 KSIKKyAKKy0vKiBDb21tb24gQVNNIGRlZmluaXRpb25zIHVzZWQgYnkgQVNNX1NQRUMgYW1vbmdz dCB0aGUgdmFyaW91cyB0YXJnZXRzCistICAgZm9yIGhhbmRsaW5nIC1tY3B1PXh4eCBzd2l0Y2hl cy4gICovCisrLyogQ29tbW9uIEFTTSBkZWZpbml0aW9ucyB1c2VkIGJ5IEFTTV9TUEVDIGFtb25n c3QgdGhlIHZhcmlvdXMgdGFyZ2V0cyBmb3IKKysgICBoYW5kbGluZyAtbWNwdT14eHggc3dpdGNo ZXMuICBUaGVyZSBpcyBhIHBhcmFsbGVsIGxpc3QgaW4gZHJpdmVyLXJzNjAwMC5jIHRvCisrICAg cHJvdmlkZSB0aGUgZGVmYXVsdCBhc3NlbWJsZXIgb3B0aW9ucyBpZiB0aGUgdXNlciB1c2VzIC1t Y3B1PW5hdGl2ZSwgc28gaWYKKysgICB5b3UgbWFrZSBjaGFuZ2VzIGhlcmUsIG1ha2UgdGhlbSB0 aGVyZSBhbHNvLiAgKi8KKyAjdW5kZWYgQVNNX0NQVV9TUEVDCisgI2RlZmluZSBBU01fQ1BVX1NQ RUMgXAorICIleyFtY3B1KjogJXshbWFpeDY0OiBcCisgICAle21wb3dlcnBjNjQ6IC1tcHBjNjR9 IFwKKyAgICV7bWFsdGl2ZWM6IC1tOTcwfSBcCisgICAleyFtYWx0aXZlYzogJXshbXBvd2VyNjQ6 ICUoYXNtX2RlZmF1bHQpfX19fSBcCisrJXttY3B1PW5hdGl2ZTogJShhc21fY3B1X25hdGl2ZSl9 IFwKKyAle21jcHU9cG93ZXIzOiAtbTYyMH0gXAorICV7bWNwdT1wb3dlcjQ6IC1tcHdyNH0gXAor ICV7bWNwdT1wb3dlcjU6IC1tcHdyNX0gXAorICV7bWNwdT1wb3dlcjUrOiAtbXB3cjV4fSBcCisg JXttY3B1PXBvd2VyNjogLW1wd3I2fSBcCisgJXttY3B1PXBvd2VyNng6IC1tcHdyNn0gXAorKyV7 bWNwdT1wb3dlcjc6IC1tcHdyN30gXAorICV7bWNwdT1wb3dlcnBjOiAtbXBwY30gXAorICV7bWNw dT1yczY0YTogLW1wcGN9IFwKKyAle21jcHU9NjAzOiAtbTYwM30gXAorLS0tIGdjYy9jb25maWcv cnM2MDAwL3JzNjAwMC5tZAkoLi4uL3RydW5rKQkocmV2aXNpb24gMTQ0NTU3KQorKysrIGdjYy9j b25maWcvcnM2MDAwL3JzNjAwMC5tZAkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIp CShyZXZpc2lvbiAxNDQ2OTIpCitAQCAtMTM4LDcgKzEzOCw3IEBAIChkZWZpbmVfYXR0ciAibGVu Z3RoIiAiIgorIDs7IFByb2Nlc3NvciB0eXBlIC0tIHRoaXMgYXR0cmlidXRlIG11c3QgZXhhY3Rs eSBtYXRjaCB0aGUgcHJvY2Vzc29yX3R5cGUKKyA7OyBlbnVtZXJhdGlvbiBpbiByczYwMDAuaC4K KyAKKy0oZGVmaW5lX2F0dHIgImNwdSIgInJpb3MxLHJpb3MyLHJzNjRhLG1wY2NvcmUscHBjNDAz LHBwYzQwNSxwcGM0NDAscHBjNjAxLHBwYzYwMyxwcGM2MDQscHBjNjA0ZSxwcGM2MjAscHBjNjMw LHBwYzc1MCxwcGM3NDAwLHBwYzc0NTAscHBjODU0MCxwcGNlMzAwYzIscHBjZTMwMGMzLHBwY2U1 MDBtYyxwb3dlcjQscG93ZXI1LHBvd2VyNixjZWxsIgorKyhkZWZpbmVfYXR0ciAiY3B1IiAicmlv czEscmlvczIscnM2NGEsbXBjY29yZSxwcGM0MDMscHBjNDA1LHBwYzQ0MCxwcGM2MDEscHBjNjAz LHBwYzYwNCxwcGM2MDRlLHBwYzYyMCxwcGM2MzAscHBjNzUwLHBwYzc0MDAscHBjNzQ1MCxwcGM4 NTQwLHBwY2UzMDBjMixwcGNlMzAwYzMscHBjZTUwMG1jLHBvd2VyNCxwb3dlcjUscG93ZXI2LHBv d2VyNyxjZWxsIgorICAgKGNvbnN0IChzeW1ib2xfcmVmICJyczYwMDBfY3B1X2F0dHIiKSkpCisg CisgCitAQCAtMTY3LDYgKzE2Nyw3IEBAIChkZWZpbmVfYXR0ciAiY2VsbF9taWNybyIgIm5vdCxj b25kaXRpb24KKyAoaW5jbHVkZSAicG93ZXI0Lm1kIikKKyAoaW5jbHVkZSAicG93ZXI1Lm1kIikK KyAoaW5jbHVkZSAicG93ZXI2Lm1kIikKKysoaW5jbHVkZSAicG93ZXI3Lm1kIikKKyAoaW5jbHVk ZSAiY2VsbC5tZCIpCisgKGluY2x1ZGUgInhmcHUubWQiKQorIAorQEAgLTIxOCw2ICsyMTksOSBA QCAoZGVmaW5lX21vZGVfYXR0ciB3ZCBbKFFJICJiIikgKEhJICJoIikgCisgOyBESW1vZGUgYml0 cworIChkZWZpbmVfbW9kZV9hdHRyIGRiaXRzIFsoUUkgIjU2IikgKEhJICI0OCIpIChTSSAiMzIi KV0pCisgCisrOzsgSVNFTC9JU0VMNjQgdGFyZ2V0IHNlbGVjdGlvbgorKyhkZWZpbmVfbW9kZV9h dHRyIHNlbCBbKFNJICIiKSAoREkgIjY0IildKQorKworIAwKKyA7OyBTdGFydCB3aXRoIGZpeGVk LXBvaW50IGxvYWQgYW5kIHN0b3JlIGluc25zLiAgSGVyZSB3ZSBwdXQgb25seSB0aGUgbW9yZQor IDs7IGNvbXBsZXggZm9ybXMuICBCYXNpYyBkYXRhIHRyYW5zZmVyIGlzIGRvbmUgbGF0ZXIuCitA QCAtNTIwLDcgKzUyNCw3IEBAIChkZWZpbmVfaW5zbiAiIgorICAgIkAKKyAgICB7YW5kaWwufGFu ZGkufSAlMiwlMSwweGZmCisgICAgIyIKKy0gIFsoc2V0X2F0dHIgInR5cGUiICJjb21wYXJlIikK KysgIFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsY29tcGFyZSIpCisgICAgKHNldF9h dHRyICJsZW5ndGgiICI0LDgiKV0pCisgCisgKGRlZmluZV9zcGxpdAorQEAgLTU0Niw3ICs1NTAs NyBAQCAoZGVmaW5lX2luc24gIiIKKyAgICJACisgICAge2FuZGlsLnxhbmRpLn0gJTAsJTEsMHhm ZgorICAgICMiCistICBbKHNldF9hdHRyICJ0eXBlIiAiY29tcGFyZSIpCisrICBbKHNldF9hdHRy ICJ0eXBlIiAiZmFzdF9jb21wYXJlLGNvbXBhcmUiKQorICAgIChzZXRfYXR0ciAibGVuZ3RoIiAi NCw4IildKQorIAorIChkZWZpbmVfc3BsaXQKK0BAIC02ODcsNyArNjkxLDcgQEAgKGRlZmluZV9p bnNuICIiCisgICAiQAorICAgIHthbmRpbC58YW5kaS59ICUyLCUxLDB4ZmYKKyAgICAjIgorLSAg WyhzZXRfYXR0ciAidHlwZSIgImNvbXBhcmUiKQorKyAgWyhzZXRfYXR0ciAidHlwZSIgImZhc3Rf Y29tcGFyZSxjb21wYXJlIikKKyAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsOCIpXSkKKyAKKyAo ZGVmaW5lX3NwbGl0CitAQCAtNzEzLDcgKzcxNyw3IEBAIChkZWZpbmVfaW5zbiAiIgorICAgIkAK KyAgICB7YW5kaWwufGFuZGkufSAlMCwlMSwweGZmCisgICAgIyIKKy0gIFsoc2V0X2F0dHIgInR5 cGUiICJjb21wYXJlIikKKysgIFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsY29tcGFy ZSIpCisgICAgKHNldF9hdHRyICJsZW5ndGgiICI0LDgiKV0pCisgCisgKGRlZmluZV9zcGxpdAor QEAgLTg1Niw3ICs4NjAsNyBAQCAoZGVmaW5lX2luc24gIiIKKyAgICJACisgICAge2FuZGlsLnxh bmRpLn0gJTIsJTEsMHhmZmZmCisgICAgIyIKKy0gIFsoc2V0X2F0dHIgInR5cGUiICJjb21wYXJl IikKKysgIFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsY29tcGFyZSIpCisgICAgKHNl dF9hdHRyICJsZW5ndGgiICI0LDgiKV0pCisgCisgKGRlZmluZV9zcGxpdAorQEAgLTg4Miw3ICs4 ODYsNyBAQCAoZGVmaW5lX2luc24gIiIKKyAgICJACisgICAge2FuZGlsLnxhbmRpLn0gJTAsJTEs MHhmZmZmCisgICAgIyIKKy0gIFsoc2V0X2F0dHIgInR5cGUiICJjb21wYXJlIikKKysgIFsoc2V0 X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsY29tcGFyZSIpCisgICAgKHNldF9hdHRyICJsZW5n dGgiICI0LDgiKV0pCisgCisgKGRlZmluZV9zcGxpdAorQEAgLTE2NzAsNyArMTY3NCw3IEBAIChk ZWZpbmVfaW5zbiAiIgorICAgIkAKKyAgICBub3IuICUyLCUxLCUxCisgICAgIyIKKy0gIFsoc2V0 X2F0dHIgInR5cGUiICJjb21wYXJlIikKKysgIFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBh cmUsY29tcGFyZSIpCisgICAgKHNldF9hdHRyICJsZW5ndGgiICI0LDgiKV0pCisgCisgKGRlZmlu ZV9zcGxpdAorQEAgLTE2OTYsNyArMTcwMCw3IEBAIChkZWZpbmVfaW5zbiAiIgorICAgIkAKKyAg ICBub3IuICUwLCUxLCUxCisgICAgIyIKKy0gIFsoc2V0X2F0dHIgInR5cGUiICJjb21wYXJlIikK KysgIFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsY29tcGFyZSIpCisgICAgKHNldF9h dHRyICJsZW5ndGgiICI0LDgiKV0pCisgCisgKGRlZmluZV9zcGxpdAorQEAgLTIyMjEsMTAgKzIy MjUsMjIgQEAgKGRlZmluZV9pbnNuICJwb3BjbnRiPG1vZGU+MiIKKyAgICJUQVJHRVRfUE9QQ05U QiIKKyAgICJwb3BjbnRiICUwLCUxIikKKyAKKysoZGVmaW5lX2luc24gInBvcGNudHdzaTIiCisr ICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCisrCShw b3Bjb3VudDpTSSAobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikpKV0K KysgICJUQVJHRVRfUE9QQ05URCIKKysgICJwb3BjbnR3ICUwLCUxIikKKysKKysoZGVmaW5lX2lu c24gInBvcGNudGRkaTIiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJncGNfcmVnX29w ZXJhbmQiICI9ciIpCisrCShwb3Bjb3VudDpESSAobWF0Y2hfb3BlcmFuZDpESSAxICJncGNfcmVn X29wZXJhbmQiICJyIikpKV0KKysgICJUQVJHRVRfUE9QQ05URCAmJiBUQVJHRVRfUE9XRVJQQzY0 IgorKyAgInBvcGNudGQgJTAsJTEiKQorKworIChkZWZpbmVfZXhwYW5kICJwb3Bjb3VudDxtb2Rl PjIiCisgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpHUFIgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiIikK KyAJKHBvcGNvdW50OkdQUiAobWF0Y2hfb3BlcmFuZDpHUFIgMSAiZ3BjX3JlZ19vcGVyYW5kIiAi IikpKV0KKy0gICJUQVJHRVRfUE9QQ05UQiIKKysgICJUQVJHRVRfUE9QQ05UQiB8fCBUQVJHRVRf UE9QQ05URCIKKyAgIHsKKyAgICAgcnM2MDAwX2VtaXRfcG9wY291bnQgKG9wZXJhbmRzWzBdLCBv cGVyYW5kc1sxXSk7CisgICAgIERPTkU7CitAQCAtMjg1Miw3ICsyODY4LDcgQEAgKGRlZmluZV9p bnNuICJhbmRzaTNfbWMiCisgICAge3JsaW5tfHJsd2lubX0gJTAsJTEsMCwlbTIsJU0yCisgICAg e2FuZGlsLnxhbmRpLn0gJTAsJTEsJWIyCisgICAge2FuZGl1LnxhbmRpcy59ICUwLCUxLCV1MiIK Ky0gIFsoc2V0X2F0dHIgInR5cGUiICIqLCosY29tcGFyZSxjb21wYXJlIildKQorKyAgWyhzZXRf YXR0ciAidHlwZSIgIiosKixmYXN0X2NvbXBhcmUsZmFzdF9jb21wYXJlIildKQorIAorIChkZWZp bmVfaW5zbiAiYW5kc2kzX25vbWMiCisgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNf cmVnX29wZXJhbmQiICI9cixyIikKK0BAIC0yODk1LDcgKzI5MTEsOCBAQCAoZGVmaW5lX2luc24g IiphbmRzaTNfaW50ZXJuYWwyX21jIgorICAgICMKKyAgICAjCisgICAgIyIKKy0gIFsoc2V0X2F0 dHIgInR5cGUiICJjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxkZWxheWVkX2NvbXBhcmUsY29tcGFy ZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSIpCisrICBbKHNldF9hdHRyICJ0eXBlIiAiZmFzdF9j b21wYXJlLGZhc3RfY29tcGFyZSxmYXN0X2NvbXBhcmUsZGVsYXllZF9jb21wYXJlLFwKKysJCSAg ICAgY29tcGFyZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSIpCisgICAgKHNldF9hdHRyICJsZW5n dGgiICI0LDQsNCw0LDgsOCw4LDgiKV0pCisgCisgKGRlZmluZV9pbnNuICIqYW5kc2kzX2ludGVy bmFsM19tYyIKK0BAIC0yOTE1LDcgKzI5MzIsOCBAQCAoZGVmaW5lX2luc24gIiphbmRzaTNfaW50 ZXJuYWwzX21jIgorICAgICMKKyAgICAjCisgICAgIyIKKy0gIFsoc2V0X2F0dHIgInR5cGUiICJj b21wYXJlLGNvbXBhcmUsY29tcGFyZSxkZWxheWVkX2NvbXBhcmUsY29tcGFyZSxjb21wYXJlLGNv bXBhcmUsY29tcGFyZSIpCisrICBbKHNldF9hdHRyICJ0eXBlIiAiY29tcGFyZSxmYXN0X2NvbXBh cmUsZmFzdF9jb21wYXJlLGRlbGF5ZWRfY29tcGFyZSxjb21wYXJlLFwKKysJCSAgICAgY29tcGFy ZSxjb21wYXJlLGNvbXBhcmUiKQorICAgIChzZXRfYXR0ciAibGVuZ3RoIiAiOCw0LDQsNCw4LDgs OCw4IildKQorIAorIChkZWZpbmVfc3BsaXQKK0BAIC0yOTc0LDcgKzI5OTIsOCBAQCAoZGVmaW5l X2luc24gIiphbmRzaTNfaW50ZXJuYWw0IgorICAgICMKKyAgICAjCisgICAgIyIKKy0gIFsoc2V0 X2F0dHIgInR5cGUiICJjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxkZWxheWVkX2NvbXBhcmUsY29t cGFyZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSIpCisrICBbKHNldF9hdHRyICJ0eXBlIiAiZmFz dF9jb21wYXJlLGZhc3RfY29tcGFyZSxmYXN0X2NvbXBhcmUsZGVsYXllZF9jb21wYXJlLFwKKysJ CSAgICAgY29tcGFyZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSIpCisgICAgKHNldF9hdHRyICJs ZW5ndGgiICI0LDQsNCw0LDgsOCw4LDgiKV0pCisgCisgKGRlZmluZV9pbnNuICIqYW5kc2kzX2lu dGVybmFsNV9tYyIKK0BAIC0yOTk2LDcgKzMwMTUsOCBAQCAoZGVmaW5lX2luc24gIiphbmRzaTNf aW50ZXJuYWw1X21jIgorICAgICMKKyAgICAjCisgICAgIyIKKy0gIFsoc2V0X2F0dHIgInR5cGUi ICJjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxkZWxheWVkX2NvbXBhcmUsY29tcGFyZSxjb21wYXJl LGNvbXBhcmUsY29tcGFyZSIpCisrICBbKHNldF9hdHRyICJ0eXBlIiAiY29tcGFyZSxmYXN0X2Nv bXBhcmUsZmFzdF9jb21wYXJlLGRlbGF5ZWRfY29tcGFyZSxjb21wYXJlLFwKKysJCSAgICAgY29t cGFyZSxjb21wYXJlLGNvbXBhcmUiKQorICAgIChzZXRfYXR0ciAibGVuZ3RoIiAiOCw0LDQsNCw4 LDgsOCw4IildKQorIAorIChkZWZpbmVfaW5zbiAiKmFuZHNpM19pbnRlcm5hbDVfbm9tYyIKK0BA IC0zMTQxLDcgKzMxNjEsNyBAQCAoZGVmaW5lX2luc24gIipib29sc2kzX2ludGVybmFsMiIKKyAg ICJACisgICAgJXE0LiAlMywlMSwlMgorICAgICMiCistICBbKHNldF9hdHRyICJ0eXBlIiAiY29t cGFyZSIpCisrICBbKHNldF9hdHRyICJ0eXBlIiAiZmFzdF9jb21wYXJlLGNvbXBhcmUiKQorICAg IChzZXRfYXR0ciAibGVuZ3RoIiAiNCw4IildKQorIAorIChkZWZpbmVfc3BsaXQKK0BAIC0zMTcw LDcgKzMxOTAsNyBAQCAoZGVmaW5lX2luc24gIipib29sc2kzX2ludGVybmFsMyIKKyAgICJACisg ICAgJXE0LiAlMCwlMSwlMgorICAgICMiCistICBbKHNldF9hdHRyICJ0eXBlIiAiY29tcGFyZSIp CisrICBbKHNldF9hdHRyICJ0eXBlIiAiZmFzdF9jb21wYXJlLGNvbXBhcmUiKQorICAgIChzZXRf YXR0ciAibGVuZ3RoIiAiNCw4IildKQorIAorIChkZWZpbmVfc3BsaXQKK0BAIC0zMjk1LDcgKzMz MTUsNyBAQCAoZGVmaW5lX2luc24gIipib29sY2NzaTNfaW50ZXJuYWwyIgorICAgIkAKKyAgICAl cTQuICUzLCUxLCUyCisgICAgIyIKKy0gIFsoc2V0X2F0dHIgInR5cGUiICJjb21wYXJlIikKKysg IFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsY29tcGFyZSIpCisgICAgKHNldF9hdHRy ICJsZW5ndGgiICI0LDgiKV0pCisgCisgKGRlZmluZV9zcGxpdAorQEAgLTMzMjQsNyArMzM0NCw3 IEBAIChkZWZpbmVfaW5zbiAiKmJvb2xjY3NpM19pbnRlcm5hbDMiCisgICAiQAorICAgICVxNC4g JTAsJTEsJTIKKyAgICAjIgorLSAgWyhzZXRfYXR0ciAidHlwZSIgImNvbXBhcmUiKQorKyAgWyhz ZXRfYXR0ciAidHlwZSIgImZhc3RfY29tcGFyZSxjb21wYXJlIikKKyAgICAoc2V0X2F0dHIgImxl bmd0aCIgIjQsOCIpXSkKKyAKKyAoZGVmaW5lX3NwbGl0CitAQCAtNTMxNyw3ICs1MzM3LDcgQEAg KGRlZmluZV9pbnNuICJmcmVzIgorICAgImZyZXMgJTAsJTEiCisgICBbKHNldF9hdHRyICJ0eXBl IiAiZnAiKV0pCisgCistKGRlZmluZV9pbnNuICIiCisrKGRlZmluZV9pbnNuICIqZm1hZGRzZjRf cG93ZXJwYyIKKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNGIDAgImdwY19yZWdfb3BlcmFuZCIg Ij1mIikKKyAJKHBsdXM6U0YgKG11bHQ6U0YgKG1hdGNoX29wZXJhbmQ6U0YgMSAiZ3BjX3JlZ19v cGVyYW5kIiAiJWYiKQorIAkJCSAgKG1hdGNoX29wZXJhbmQ6U0YgMiAiZ3BjX3JlZ19vcGVyYW5k IiAiZiIpKQorQEAgLTUzMjgsNyArNTM0OCw3IEBAIChkZWZpbmVfaW5zbiAiIgorICAgWyhzZXRf YXR0ciAidHlwZSIgImZwIikKKyAgICAoc2V0X2F0dHIgImZwX3R5cGUiICJmcF9tYWRkc3ViX3Mi KV0pCisgCistKGRlZmluZV9pbnNuICIiCisrKGRlZmluZV9pbnNuICIqZm1hZGRzZjRfcG93ZXIi CisgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTRiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCisg CShwbHVzOlNGIChtdWx0OlNGIChtYXRjaF9vcGVyYW5kOlNGIDEgImdwY19yZWdfb3BlcmFuZCIg IiVmIikKKyAJCQkgIChtYXRjaF9vcGVyYW5kOlNGIDIgImdwY19yZWdfb3BlcmFuZCIgImYiKSkK K0BAIC01MzM3LDcgKzUzNTcsNyBAQCAoZGVmaW5lX2luc24gIiIKKyAgICJ7Zm1hfGZtYWRkfSAl MCwlMSwlMiwlMyIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJkbXVsIildKQorIAorLShkZWZpbmVf aW5zbiAiIgorKyhkZWZpbmVfaW5zbiAiKmZtc3Vic2Y0X3Bvd2VycGMiCisgICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpTRiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCisgCShtaW51czpTRiAobXVs dDpTRiAobWF0Y2hfb3BlcmFuZDpTRiAxICJncGNfcmVnX29wZXJhbmQiICIlZiIpCisgCQkJICAg KG1hdGNoX29wZXJhbmQ6U0YgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKQorQEAgLTUzNDgsNyAr NTM2OCw3IEBAIChkZWZpbmVfaW5zbiAiIgorICAgWyhzZXRfYXR0ciAidHlwZSIgImZwIikKKyAg ICAoc2V0X2F0dHIgImZwX3R5cGUiICJmcF9tYWRkc3ViX3MiKV0pCisgCistKGRlZmluZV9pbnNu ICIiCisrKGRlZmluZV9pbnNuICIqZm1zdWJzZjRfcG93ZXIiCisgICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpTRiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCisgCShtaW51czpTRiAobXVsdDpTRiAo bWF0Y2hfb3BlcmFuZDpTRiAxICJncGNfcmVnX29wZXJhbmQiICIlZiIpCisgCQkJICAgKG1hdGNo X29wZXJhbmQ6U0YgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKQorQEAgLTUzNTcsNyArNTM3Nyw3 IEBAIChkZWZpbmVfaW5zbiAiIgorICAgIntmbXN8Zm1zdWJ9ICUwLCUxLCUyLCUzIgorICAgWyhz ZXRfYXR0ciAidHlwZSIgImRtdWwiKV0pCisgCistKGRlZmluZV9pbnNuICIiCisrKGRlZmluZV9p bnNuICIqZm5tYWRkc2Y0X3Bvd2VycGNfMSIKKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNGIDAg ImdwY19yZWdfb3BlcmFuZCIgIj1mIikKKyAJKG5lZzpTRiAocGx1czpTRiAobXVsdDpTRiAobWF0 Y2hfb3BlcmFuZDpTRiAxICJncGNfcmVnX29wZXJhbmQiICIlZiIpCisgCQkJCSAgKG1hdGNoX29w ZXJhbmQ6U0YgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKQorQEAgLTUzNjgsNyArNTM4OCw3IEBA IChkZWZpbmVfaW5zbiAiIgorICAgWyhzZXRfYXR0ciAidHlwZSIgImZwIikKKyAgICAoc2V0X2F0 dHIgImZwX3R5cGUiICJmcF9tYWRkc3ViX3MiKV0pCisgCistKGRlZmluZV9pbnNuICIiCisrKGRl ZmluZV9pbnNuICIqZm5tYWRkc2Y0X3Bvd2VycGNfMiIKKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5k OlNGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikKKyAJKG1pbnVzOlNGIChtdWx0OlNGIChuZWc6 U0YgKG1hdGNoX29wZXJhbmQ6U0YgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKQorIAkJCSAgICht YXRjaF9vcGVyYW5kOlNGIDIgImdwY19yZWdfb3BlcmFuZCIgImYiKSkKK0BAIC01Mzc5LDcgKzUz OTksNyBAQCAoZGVmaW5lX2luc24gIiIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpCisgICAg KHNldF9hdHRyICJmcF90eXBlIiAiZnBfbWFkZHN1Yl9zIildKQorIAorLShkZWZpbmVfaW5zbiAi IgorKyhkZWZpbmVfaW5zbiAiKmZubWFkZHNmNF9wb3dlcl8xIgorICAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6U0YgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQorIAkobmVnOlNGIChwbHVzOlNGICht dWx0OlNGIChtYXRjaF9vcGVyYW5kOlNGIDEgImdwY19yZWdfb3BlcmFuZCIgIiVmIikKKyAJCQkJ ICAobWF0Y2hfb3BlcmFuZDpTRiAyICJncGNfcmVnX29wZXJhbmQiICJmIikpCitAQCAtNTM4OCw3 ICs1NDA4LDcgQEAgKGRlZmluZV9pbnNuICIiCisgICAie2ZubWF8Zm5tYWRkfSAlMCwlMSwlMiwl MyIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJkbXVsIildKQorIAorLShkZWZpbmVfaW5zbiAiIgor KyhkZWZpbmVfaW5zbiAiKmZubWFkZHNmNF9wb3dlcl8yIgorICAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6U0YgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQorIAkobWludXM6U0YgKG11bHQ6U0YgKG5l ZzpTRiAobWF0Y2hfb3BlcmFuZDpTRiAxICJncGNfcmVnX29wZXJhbmQiICJmIikpCisgCQkJICAg KG1hdGNoX29wZXJhbmQ6U0YgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKQorQEAgLTUzOTgsNyAr NTQxOCw3IEBAIChkZWZpbmVfaW5zbiAiIgorICAgIntmbm1hfGZubWFkZH0gJTAsJTEsJTIsJTMi CisgICBbKHNldF9hdHRyICJ0eXBlIiAiZG11bCIpXSkKKyAKKy0oZGVmaW5lX2luc24gIiIKKyso ZGVmaW5lX2luc24gIipmbm1zdWJzZjRfcG93ZXJwY18xIgorICAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6U0YgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQorIAkobmVnOlNGIChtaW51czpTRiAobXVs dDpTRiAobWF0Y2hfb3BlcmFuZDpTRiAxICJncGNfcmVnX29wZXJhbmQiICIlZiIpCisgCQkJCSAg IChtYXRjaF9vcGVyYW5kOlNGIDIgImdwY19yZWdfb3BlcmFuZCIgImYiKSkKK0BAIC01NDA5LDcg KzU0MjksNyBAQCAoZGVmaW5lX2luc24gIiIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpCisg ICAgKHNldF9hdHRyICJmcF90eXBlIiAiZnBfbWFkZHN1Yl9zIildKQorIAorLShkZWZpbmVfaW5z biAiIgorKyhkZWZpbmVfaW5zbiAiKmZubXN1YnNmNF9wb3dlcnBjXzIiCisgICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpTRiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCisgCShtaW51czpTRiAobWF0 Y2hfb3BlcmFuZDpTRiAzICJncGNfcmVnX29wZXJhbmQiICJmIikKKyAJCSAgKG11bHQ6U0YgKG1h dGNoX29wZXJhbmQ6U0YgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiJWYiKQorQEAgLTU0MjAsNyArNTQ0 MCw3IEBAIChkZWZpbmVfaW5zbiAiIgorICAgWyhzZXRfYXR0ciAidHlwZSIgImZwIikKKyAgICAo c2V0X2F0dHIgImZwX3R5cGUiICJmcF9tYWRkc3ViX3MiKV0pCisgCistKGRlZmluZV9pbnNuICIi CisrKGRlZmluZV9pbnNuICIqZm5tc3Vic2Y0X3Bvd2VyXzEiCisgICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpTRiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCisgCShuZWc6U0YgKG1pbnVzOlNGICht dWx0OlNGIChtYXRjaF9vcGVyYW5kOlNGIDEgImdwY19yZWdfb3BlcmFuZCIgIiVmIikKKyAJCQkJ ICAgKG1hdGNoX29wZXJhbmQ6U0YgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKQorQEAgLTU0Mjks NyArNTQ0OSw3IEBAIChkZWZpbmVfaW5zbiAiIgorICAgIntmbm1zfGZubXN1Yn0gJTAsJTEsJTIs JTMiCisgICBbKHNldF9hdHRyICJ0eXBlIiAiZG11bCIpXSkKKyAKKy0oZGVmaW5lX2luc24gIiIK KysoZGVmaW5lX2luc24gIipmbm1zdWJzZjRfcG93ZXJfMiIKKyAgIFsoc2V0IChtYXRjaF9vcGVy YW5kOlNGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikKKyAJKG1pbnVzOlNGIChtYXRjaF9vcGVy YW5kOlNGIDMgImdwY19yZWdfb3BlcmFuZCIgImYiKQorIAkJICAobXVsdDpTRiAobWF0Y2hfb3Bl cmFuZDpTRiAxICJncGNfcmVnX29wZXJhbmQiICIlZiIpCitAQCAtNTUxMCw5ICs1NTMwLDE4IEBA IChkZWZpbmVfZXhwYW5kICJjb3B5c2lnbmRmMyIKKyAJICAgICAgICAgICAgICAgICAgICAgKG1h dGNoX2R1cCA1KSkKKyAJCQkgKG1hdGNoX2R1cCAzKQorIAkJCSAobWF0Y2hfZHVwIDQpKSldCist ICAiVEFSR0VUX1BQQ19HRlhPUFQgJiYgVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMg JiYgVEFSR0VUX0RPVUJMRV9GTE9BVAorLSAgICYmICFIT05PUl9OQU5TIChERm1vZGUpICYmICFI T05PUl9TSUdORURfWkVST1MgKERGbW9kZSkiCisrICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFS R0VUX0ZQUlMgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVAorKyAgICYmICgoVEFSR0VUX1BQQ19HRlhP UFQKKysgICAgICAgICYmICFIT05PUl9OQU5TIChERm1vZGUpCisrICAgICAgICAmJiAhSE9OT1Jf U0lHTkVEX1pFUk9TIChERm1vZGUpKQorKyAgICAgICB8fCBWRUNUT1JfVU5JVF9WU1hfUCAoREZt b2RlKSkiCisgICB7CisrICAgICBpZiAoVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkpCisrICAg ICAgIHsKKysJIGVtaXRfaW5zbiAoZ2VuX3ZzeF9jb3B5c2lnbmRmMyAob3BlcmFuZHNbMF0sIG9w ZXJhbmRzWzFdLAorKwkJCQkJIG9wZXJhbmRzWzJdKSk7CisrCSBET05FOworKyAgICAgICB9Cisg ICAgICBvcGVyYW5kc1szXSA9IGdlbl9yZWdfcnR4IChERm1vZGUpOworICAgICAgb3BlcmFuZHNb NF0gPSBnZW5fcmVnX3J0eCAoREZtb2RlKTsKKyAgICAgIG9wZXJhbmRzWzVdID0gQ09OU1QwX1JU WCAoREZtb2RlKTsKK0BAIC01NTU2LDEyICs1NTg1LDEyIEBAIChkZWZpbmVfc3BsaXQKKyAgIERP TkU7CisgfSIpCisgCistKGRlZmluZV9leHBhbmQgIm1vdnNpY2MiCistICAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiIikKKy0JIChpZl90aGVuX2Vsc2U6U0kg KG1hdGNoX29wZXJhbmQgMSAiY29tcGFyaXNvbl9vcGVyYXRvciIgIiIpCistCQkJICAobWF0Y2hf b3BlcmFuZDpTSSAyICJncGNfcmVnX29wZXJhbmQiICIiKQorLQkJCSAgKG1hdGNoX29wZXJhbmQ6 U0kgMyAiZ3BjX3JlZ19vcGVyYW5kIiAiIikpKV0KKy0gICJUQVJHRVRfSVNFTCIKKysoZGVmaW5l X2V4cGFuZCAibW92PG1vZGU+Y2MiCisrICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6R1BSIDAgImdw Y19yZWdfb3BlcmFuZCIgIiIpCisrCSAoaWZfdGhlbl9lbHNlOkdQUiAobWF0Y2hfb3BlcmFuZCAx ICJjb21wYXJpc29uX29wZXJhdG9yIiAiIikKKysJCQkgICAobWF0Y2hfb3BlcmFuZDpHUFIgMiAi Z3BjX3JlZ19vcGVyYW5kIiAiIikKKysJCQkgICAobWF0Y2hfb3BlcmFuZDpHUFIgMyAiZ3BjX3Jl Z19vcGVyYW5kIiAiIikpKV0KKysgICJUQVJHRVRfSVNFTDxzZWw+IgorICAgIgorIHsKKyAgIGlm IChyczYwMDBfZW1pdF9jbW92ZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1sy XSwgb3BlcmFuZHNbM10pKQorQEAgLTU1NzgsMjggKzU2MDcsMjggQEAgKGRlZmluZV9leHBhbmQg Im1vdnNpY2MiCisgOzsgbGVhdmUgb3V0IHRoZSBtb2RlIGluIG9wZXJhbmQgNCBhbmQgdXNlIG9u ZSBwYXR0ZXJuLCBidXQgcmVsb2FkIGNhbgorIDs7IGNoYW5nZSB0aGUgbW9kZSB1bmRlcm5lYXRo IG91ciBmZWV0IGFuZCB0aGVuIGdldHMgY29uZnVzZWQgdHJ5aW5nCisgOzsgdG8gcmVsb2FkIHRo ZSB2YWx1ZS4KKy0oZGVmaW5lX2luc24gImlzZWxfc2lnbmVkIgorLSAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQorLQkoaWZfdGhlbl9lbHNlOlNJCisr KGRlZmluZV9pbnNuICJpc2VsX3NpZ25lZF88bW9kZT4iCisrICBbKHNldCAobWF0Y2hfb3BlcmFu ZDpHUFIgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQorKwkoaWZfdGhlbl9lbHNlOkdQUgorIAkg KG1hdGNoX29wZXJhdG9yIDEgImNvbXBhcmlzb25fb3BlcmF0b3IiCisgCQkJIFsobWF0Y2hfb3Bl cmFuZDpDQyA0ICJjY19yZWdfb3BlcmFuZCIgInkiKQorIAkJCSAgKGNvbnN0X2ludCAwKV0pCist CSAobWF0Y2hfb3BlcmFuZDpTSSAyICJncGNfcmVnX29wZXJhbmQiICJiIikKKy0JIChtYXRjaF9v cGVyYW5kOlNJIDMgImdwY19yZWdfb3BlcmFuZCIgImIiKSkpXQorLSAgIlRBUkdFVF9JU0VMIgor KwkgKG1hdGNoX29wZXJhbmQ6R1BSIDIgImdwY19yZWdfb3BlcmFuZCIgImIiKQorKwkgKG1hdGNo X29wZXJhbmQ6R1BSIDMgImdwY19yZWdfb3BlcmFuZCIgImIiKSkpXQorKyAgIlRBUkdFVF9JU0VM PHNlbD4iCisgICAiKgorIHsgcmV0dXJuIG91dHB1dF9pc2VsIChvcGVyYW5kcyk7IH0iCisgICBb KHNldF9hdHRyICJsZW5ndGgiICI0IildKQorIAorLShkZWZpbmVfaW5zbiAiaXNlbF91bnNpZ25l ZCIKKy0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yIikK Ky0JKGlmX3RoZW5fZWxzZTpTSQorKyhkZWZpbmVfaW5zbiAiaXNlbF91bnNpZ25lZF88bW9kZT4i CisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpHUFIgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQor KwkoaWZfdGhlbl9lbHNlOkdQUgorIAkgKG1hdGNoX29wZXJhdG9yIDEgImNvbXBhcmlzb25fb3Bl cmF0b3IiCisgCQkJIFsobWF0Y2hfb3BlcmFuZDpDQ1VOUyA0ICJjY19yZWdfb3BlcmFuZCIgInki KQorIAkJCSAgKGNvbnN0X2ludCAwKV0pCistCSAobWF0Y2hfb3BlcmFuZDpTSSAyICJncGNfcmVn X29wZXJhbmQiICJiIikKKy0JIChtYXRjaF9vcGVyYW5kOlNJIDMgImdwY19yZWdfb3BlcmFuZCIg ImIiKSkpXQorLSAgIlRBUkdFVF9JU0VMIgorKwkgKG1hdGNoX29wZXJhbmQ6R1BSIDIgImdwY19y ZWdfb3BlcmFuZCIgImIiKQorKwkgKG1hdGNoX29wZXJhbmQ6R1BSIDMgImdwY19yZWdfb3BlcmFu ZCIgImIiKSkpXQorKyAgIlRBUkdFVF9JU0VMPHNlbD4iCisgICAiKgorIHsgcmV0dXJuIG91dHB1 dF9pc2VsIChvcGVyYW5kcyk7IH0iCisgICBbKHNldF9hdHRyICJsZW5ndGgiICI0IildKQorQEAg LTU2NDcsNyArNTY3Niw4IEBAIChkZWZpbmVfZXhwYW5kICJuZWdkZjIiCisgKGRlZmluZV9pbnNu ICIqbmVnZGYyX2ZwciIKKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdfb3Bl cmFuZCIgIj1mIikKKyAJKG5lZzpERiAobWF0Y2hfb3BlcmFuZDpERiAxICJncGNfcmVnX29wZXJh bmQiICJmIikpKV0KKy0gICJUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJH RVRfRE9VQkxFX0ZMT0FUIgorKyAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYm IFRBUkdFVF9ET1VCTEVfRkxPQVQKKysgICAmJiAhVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSki CisgICAiZm5lZyAlMCwlMSIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkKKyAKK0BAIC01 NjYwLDE0ICs1NjkwLDE2IEBAIChkZWZpbmVfZXhwYW5kICJhYnNkZjIiCisgKGRlZmluZV9pbnNu ICIqYWJzZGYyX2ZwciIKKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdfb3Bl cmFuZCIgIj1mIikKKyAJKGFiczpERiAobWF0Y2hfb3BlcmFuZDpERiAxICJncGNfcmVnX29wZXJh bmQiICJmIikpKV0KKy0gICJUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJH RVRfRE9VQkxFX0ZMT0FUIgorKyAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYm IFRBUkdFVF9ET1VCTEVfRkxPQVQKKysgICAmJiAhVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSki CisgICAiZmFicyAlMCwlMSIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkKKyAKKyAoZGVm aW5lX2luc24gIipuYWJzZGYyX2ZwciIKKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdw Y19yZWdfb3BlcmFuZCIgIj1mIikKKyAJKG5lZzpERiAoYWJzOkRGIChtYXRjaF9vcGVyYW5kOkRG IDEgImdwY19yZWdfb3BlcmFuZCIgImYiKSkpKV0KKy0gICJUQVJHRVRfSEFSRF9GTE9BVCAmJiBU QVJHRVRfRlBSUyAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUIgorKyAgIlRBUkdFVF9IQVJEX0ZMT0FU ICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQKKysgICAmJiAhVkVDVE9SX1VO SVRfVlNYX1AgKERGbW9kZSkiCisgICAiZm5hYnMgJTAsJTEiCisgICBbKHNldF9hdHRyICJ0eXBl IiAiZnAiKV0pCisgCitAQCAtNTY4Miw3ICs1NzE0LDggQEAgKGRlZmluZV9pbnNuICIqYWRkZGYz X2ZwciIKKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1m IikKKyAJKHBsdXM6REYgKG1hdGNoX29wZXJhbmQ6REYgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiJWYi KQorIAkJIChtYXRjaF9vcGVyYW5kOkRGIDIgImdwY19yZWdfb3BlcmFuZCIgImYiKSkpXQorLSAg IlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQi CisrICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0RPVUJMRV9G TE9BVAorKyAgICYmICFWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSIKKyAgICJ7ZmF8ZmFkZH0g JTAsJTEsJTIiCisgICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKQorICAgIChzZXRfYXR0ciAiZnBf dHlwZSIgImZwX2FkZHN1Yl9kIildKQorQEAgLTU2OTgsNyArNTczMSw4IEBAIChkZWZpbmVfaW5z biAiKnN1YmRmM19mcHIiCisgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJncGNfcmVnX29w ZXJhbmQiICI9ZiIpCisgCShtaW51czpERiAobWF0Y2hfb3BlcmFuZDpERiAxICJncGNfcmVnX29w ZXJhbmQiICJmIikKKyAJCSAgKG1hdGNoX29wZXJhbmQ6REYgMiAiZ3BjX3JlZ19vcGVyYW5kIiAi ZiIpKSldCistICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0RP VUJMRV9GTE9BVCIKKysgICJUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJH RVRfRE9VQkxFX0ZMT0FUCisrICAgJiYgIVZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpIgorICAg Intmc3xmc3VifSAlMCwlMSwlMiIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpCisgICAgKHNl dF9hdHRyICJmcF90eXBlIiAiZnBfYWRkc3ViX2QiKV0pCitAQCAtNTcxNCw3ICs1NzQ4LDggQEAg KGRlZmluZV9pbnNuICIqbXVsZGYzX2ZwciIKKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAg ImdwY19yZWdfb3BlcmFuZCIgIj1mIikKKyAJKG11bHQ6REYgKG1hdGNoX29wZXJhbmQ6REYgMSAi Z3BjX3JlZ19vcGVyYW5kIiAiJWYiKQorIAkJIChtYXRjaF9vcGVyYW5kOkRGIDIgImdwY19yZWdf b3BlcmFuZCIgImYiKSkpXQorLSAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYm IFRBUkdFVF9ET1VCTEVfRkxPQVQiCisrICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQ UlMgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVAorKyAgICYmICFWRUNUT1JfVU5JVF9WU1hfUCAoREZt b2RlKSIKKyAgICJ7Zm18Zm11bH0gJTAsJTEsJTIiCisgICBbKHNldF9hdHRyICJ0eXBlIiAiZG11 bCIpCisgICAgKHNldF9hdHRyICJmcF90eXBlIiAiZnBfbXVsX2QiKV0pCitAQCAtNTczMiw3ICs1 NzY3LDggQEAgKGRlZmluZV9pbnNuICIqZGl2ZGYzX2ZwciIKKyAgIFsoc2V0IChtYXRjaF9vcGVy YW5kOkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikKKyAJKGRpdjpERiAobWF0Y2hfb3BlcmFu ZDpERiAxICJncGNfcmVnX29wZXJhbmQiICJmIikKKyAJCShtYXRjaF9vcGVyYW5kOkRGIDIgImdw Y19yZWdfb3BlcmFuZCIgImYiKSkpXQorLSAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9G UFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQgJiYgIVRBUkdFVF9TSU1QTEVfRlBVIgorKyAgIlRB UkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQgJiYg IVRBUkdFVF9TSU1QTEVfRlBVCisrICAgJiYgIVZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpIgor ICAgIntmZHxmZGl2fSAlMCwlMSwlMiIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJkZGl2IildKQor IAorQEAgLTU3NDgsNzMgKzU3ODQsODEgQEAgKGRlZmluZV9leHBhbmQgInJlY2lwZGYzIgorICAg IERPTkU7CisgfSkKKyAKKy0oZGVmaW5lX2luc24gImZyZWQiCisrKGRlZmluZV9leHBhbmQgImZy ZWQiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIp CisrCSh1bnNwZWM6REYgWyhtYXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgImYi KV0gVU5TUEVDX0ZSRVMpKV0KKysgICIoVEFSR0VUX1BPUENOVEIgfHwgVkVDVE9SX1VOSVRfVlNY X1AgKERGbW9kZSkpICYmIGZsYWdfZmluaXRlX21hdGhfb25seSIKKysgICIiKQorKworKyhkZWZp bmVfaW5zbiAiKmZyZWRfZnByIgorICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAiZ3BjX3Jl Z19vcGVyYW5kIiAiPWYiKQorIAkodW5zcGVjOkRGIFsobWF0Y2hfb3BlcmFuZDpERiAxICJncGNf cmVnX29wZXJhbmQiICJmIildIFVOU1BFQ19GUkVTKSldCistICAiVEFSR0VUX1BPUENOVEIgJiYg ZmxhZ19maW5pdGVfbWF0aF9vbmx5IgorKyAgIlRBUkdFVF9QT1BDTlRCICYmIGZsYWdfZmluaXRl X21hdGhfb25seSAmJiAhVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkiCisgICAiZnJlICUwLCUx IgorICAgWyhzZXRfYXR0ciAidHlwZSIgImZwIildKQorIAorLShkZWZpbmVfaW5zbiAiIgorKyhk ZWZpbmVfaW5zbiAiKmZtYWRkZGY0X2ZwciIKKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAg ImdwY19yZWdfb3BlcmFuZCIgIj1mIikKKyAJKHBsdXM6REYgKG11bHQ6REYgKG1hdGNoX29wZXJh bmQ6REYgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiJWYiKQorIAkJCSAgKG1hdGNoX29wZXJhbmQ6REYg MiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKQorIAkJIChtYXRjaF9vcGVyYW5kOkRGIDMgImdwY19y ZWdfb3BlcmFuZCIgImYiKSkpXQorLSAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJT ICYmIFRBUkdFVF9GVVNFRF9NQUREICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQiCisrICAiVEFSR0VU X0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0ZVU0VEX01BREQgJiYgVEFSR0VU X0RPVUJMRV9GTE9BVAorKyAgICYmIFZFQ1RPUl9VTklUX05PTkVfUCAoREZtb2RlKSIKKyAgICJ7 Zm1hfGZtYWRkfSAlMCwlMSwlMiwlMyIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJkbXVsIikKKyAg ICAoc2V0X2F0dHIgImZwX3R5cGUiICJmcF9tYWRkc3ViX2QiKV0pCisgCistKGRlZmluZV9pbnNu ICIiCisrKGRlZmluZV9pbnNuICIqZm1zdWJkZjRfZnByIgorICAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6REYgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQorIAkobWludXM6REYgKG11bHQ6REYgKG1h dGNoX29wZXJhbmQ6REYgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiJWYiKQorIAkJCSAgIChtYXRjaF9v cGVyYW5kOkRGIDIgImdwY19yZWdfb3BlcmFuZCIgImYiKSkKKyAJCSAgKG1hdGNoX29wZXJhbmQ6 REYgMyAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKSldCistICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYg VEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0ZVU0VEX01BREQgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVCIK KysgICJUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJHRVRfRlVTRURfTUFE RCAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUCisrICAgJiYgVkVDVE9SX1VOSVRfTk9ORV9QIChERm1v ZGUpIgorICAgIntmbXN8Zm1zdWJ9ICUwLCUxLCUyLCUzIgorICAgWyhzZXRfYXR0ciAidHlwZSIg ImRtdWwiKQorICAgIChzZXRfYXR0ciAiZnBfdHlwZSIgImZwX21hZGRzdWJfZCIpXSkKKyAKKy0o ZGVmaW5lX2luc24gIiIKKysoZGVmaW5lX2luc24gIipmbm1hZGRkZjRfZnByXzEiCisgICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpERiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCisgCShuZWc6REYg KHBsdXM6REYgKG11bHQ6REYgKG1hdGNoX29wZXJhbmQ6REYgMSAiZ3BjX3JlZ19vcGVyYW5kIiAi JWYiKQorIAkJCQkgIChtYXRjaF9vcGVyYW5kOkRGIDIgImdwY19yZWdfb3BlcmFuZCIgImYiKSkK KyAJCQkgKG1hdGNoX29wZXJhbmQ6REYgMyAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKSkpXQorICAg IlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9GVVNFRF9NQUREICYm IFRBUkdFVF9ET1VCTEVfRkxPQVQKKy0gICAmJiBIT05PUl9TSUdORURfWkVST1MgKERGbW9kZSki CisrICAgJiYgSE9OT1JfU0lHTkVEX1pFUk9TIChERm1vZGUpICYmIFZFQ1RPUl9VTklUX05PTkVf UCAoREZtb2RlKSIKKyAgICJ7Zm5tYXxmbm1hZGR9ICUwLCUxLCUyLCUzIgorICAgWyhzZXRfYXR0 ciAidHlwZSIgImRtdWwiKQorICAgIChzZXRfYXR0ciAiZnBfdHlwZSIgImZwX21hZGRzdWJfZCIp XSkKKyAKKy0oZGVmaW5lX2luc24gIiIKKysoZGVmaW5lX2luc24gIipmbm1hZGRkZjRfZnByXzIi CisgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCisg CShtaW51czpERiAobXVsdDpERiAobmVnOkRGIChtYXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdf b3BlcmFuZCIgImYiKSkKKyAJCQkgICAobWF0Y2hfb3BlcmFuZDpERiAyICJncGNfcmVnX29wZXJh bmQiICJmIikpCisgCQkgIChtYXRjaF9vcGVyYW5kOkRGIDMgImdwY19yZWdfb3BlcmFuZCIgImYi KSkpXQorICAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9GVVNF RF9NQUREICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQKKy0gICAmJiAhIEhPTk9SX1NJR05FRF9aRVJP UyAoREZtb2RlKSIKKysgICAmJiAhIEhPTk9SX1NJR05FRF9aRVJPUyAoREZtb2RlKSAmJiBWRUNU T1JfVU5JVF9OT05FX1AgKERGbW9kZSkiCisgICAie2ZubWF8Zm5tYWRkfSAlMCwlMSwlMiwlMyIK KyAgIFsoc2V0X2F0dHIgInR5cGUiICJkbXVsIikKKyAgICAoc2V0X2F0dHIgImZwX3R5cGUiICJm cF9tYWRkc3ViX2QiKV0pCisgCistKGRlZmluZV9pbnNuICIiCisrKGRlZmluZV9pbnNuICIqZm5t c3ViZGY0X2Zwcl8xIgorICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAiZ3BjX3JlZ19vcGVy YW5kIiAiPWYiKQorIAkobmVnOkRGIChtaW51czpERiAobXVsdDpERiAobWF0Y2hfb3BlcmFuZDpE RiAxICJncGNfcmVnX29wZXJhbmQiICIlZiIpCisgCQkJCSAgIChtYXRjaF9vcGVyYW5kOkRGIDIg ImdwY19yZWdfb3BlcmFuZCIgImYiKSkKKyAJCQkgIChtYXRjaF9vcGVyYW5kOkRGIDMgImdwY19y ZWdfb3BlcmFuZCIgImYiKSkpKV0KKyAgICJUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBS UyAmJiBUQVJHRVRfRlVTRURfTUFERCAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUCistICAgJiYgSE9O T1JfU0lHTkVEX1pFUk9TIChERm1vZGUpIgorKyAgICYmIEhPTk9SX1NJR05FRF9aRVJPUyAoREZt b2RlKSAmJiBWRUNUT1JfVU5JVF9OT05FX1AgKERGbW9kZSkiCisgICAie2ZubXN8Zm5tc3VifSAl MCwlMSwlMiwlMyIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJkbXVsIikKKyAgICAoc2V0X2F0dHIg ImZwX3R5cGUiICJmcF9tYWRkc3ViX2QiKV0pCisgCistKGRlZmluZV9pbnNuICIiCisrKGRlZmlu ZV9pbnNuICIqZm5tc3ViZGY0X2Zwcl8yIgorICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAi Z3BjX3JlZ19vcGVyYW5kIiAiPWYiKQorIAkobWludXM6REYgKG1hdGNoX29wZXJhbmQ6REYgMyAi Z3BjX3JlZ19vcGVyYW5kIiAiZiIpCisgCSAgICAgICAgICAobXVsdDpERiAobWF0Y2hfb3BlcmFu ZDpERiAxICJncGNfcmVnX29wZXJhbmQiICIlZiIpCisgCQkJICAgKG1hdGNoX29wZXJhbmQ6REYg MiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKSkpXQorICAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRB UkdFVF9GUFJTICYmIFRBUkdFVF9GVVNFRF9NQUREICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQKKy0g ICAmJiAhIEhPTk9SX1NJR05FRF9aRVJPUyAoREZtb2RlKSIKKysgICAmJiAhIEhPTk9SX1NJR05F RF9aRVJPUyAoREZtb2RlKSAmJiBWRUNUT1JfVU5JVF9OT05FX1AgKERGbW9kZSkiCisgICAie2Zu bXN8Zm5tc3VifSAlMCwlMSwlMiwlMyIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJkbXVsIikKKyAg ICAoc2V0X2F0dHIgImZwX3R5cGUiICJmcF9tYWRkc3ViX2QiKV0pCitAQCAtNTgyMyw3ICs1ODY3 LDggQEAgKGRlZmluZV9pbnNuICJzcXJ0ZGYyIgorICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYg MCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQorIAkoc3FydDpERiAobWF0Y2hfb3BlcmFuZDpERiAx ICJncGNfcmVnX29wZXJhbmQiICJmIikpKV0KKyAgICIoVEFSR0VUX1BQQ19HUE9QVCB8fCBUQVJH RVRfUE9XRVIyKSAmJiBUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAKKy0gICAmJiBU QVJHRVRfRE9VQkxFX0ZMT0FUIgorKyAgICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQKKysgICAmJiAh VkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkiCisgICAiZnNxcnQgJTAsJTEiCisgICBbKHNldF9h dHRyICJ0eXBlIiAiZHNxcnQiKV0pCisgCitAQCAtNTkxMiw2ICs1OTU3LDE4IEBAIChkZWZpbmVf ZXhwYW5kICJmaXhfdHJ1bmNzZnNpMiIKKyAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmICFUQVJHRVRf RlBSUyAmJiBUQVJHRVRfU0lOR0xFX0ZMT0FUIgorICAiIikKKyAKKysoZGVmaW5lX2V4cGFuZCAi Zml4dW5zX3RydW5jZGZzaTIiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVn X29wZXJhbmQiICIiKQorKwkodW5zaWduZWRfZml4OlNJIChtYXRjaF9vcGVyYW5kOkRGIDEgImdw Y19yZWdfb3BlcmFuZCIgIiIpKSldCisrICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0U1 MDBfRE9VQkxFIgorKyAgIiIpCisrCisrKGRlZmluZV9leHBhbmQgImZpeHVuc190cnVuY2RmZGky IgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCisr CSh1bnNpZ25lZF9maXg6REkgKG1hdGNoX29wZXJhbmQ6REYgMSAicmVnaXN0ZXJfb3BlcmFuZCIg IiIpKSldCisrICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX1ZTWCIKKysgICIiKQorKwor IDsgRm9yIGVhY2ggb2YgdGhlc2UgY29udmVyc2lvbnMsIHRoZXJlIGlzIGEgZGVmaW5lX2V4cGFu ZCwgYSBkZWZpbmVfaW5zbgorIDsgd2l0aCBhICcjJyB0ZW1wbGF0ZSwgYW5kIGEgZGVmaW5lX3Nw bGl0ICh3aXRoIEMgY29kZSkuICBUaGUgaWRlYSBpcworIDsgdG8gYWxsb3cgY29uc3RhbnQgZm9s ZGluZyB3aXRoIHRoZSB0ZW1wbGF0ZSBvZiB0aGUgZGVmaW5lX2luc24sCitAQCAtNjE1MywxMCAr NjIxMCwxNyBAQCAoZGVmaW5lX2luc24gImZjdGl3eiIKKyAgICJ7ZmNpcnp8ZmN0aXd6fSAlMCwl MSIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkKKyAKKy0oZGVmaW5lX2luc24gImJ0cnVu Y2RmMiIKKysoZGVmaW5lX2V4cGFuZCAiYnRydW5jZGYyIgorICAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6REYgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQorIAkodW5zcGVjOkRGIFsobWF0Y2hfb3Bl cmFuZDpERiAxICJncGNfcmVnX29wZXJhbmQiICJmIildIFVOU1BFQ19GUklaKSldCisgICAiVEFS R0VUX0ZQUk5EICYmIFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9E T1VCTEVfRkxPQVQiCisrICAiIikKKysKKysoZGVmaW5lX2luc24gIipidHJ1bmNkZjJfZnBycyIK KysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikKKysJ KHVuc3BlYzpERiBbKG1hdGNoX29wZXJhbmQ6REYgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpXSBV TlNQRUNfRlJJWikpXQorKyAgIlRBUkdFVF9GUFJORCAmJiBUQVJHRVRfSEFSRF9GTE9BVCAmJiBU QVJHRVRfRlBSUyAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUCisrICAgJiYgIVZFQ1RPUl9VTklUX1ZT WF9QIChERm1vZGUpIgorICAgImZyaXogJTAsJTEiCisgICBbKHNldF9hdHRyICJ0eXBlIiAiZnAi KV0pCisgCitAQCAtNjE2NywxMCArNjIzMSwxNyBAQCAoZGVmaW5lX2luc24gImJ0cnVuY3NmMiIK KyAgICJmcml6ICUwLCUxIgorICAgWyhzZXRfYXR0ciAidHlwZSIgImZwIildKQorIAorLShkZWZp bmVfaW5zbiAiY2VpbGRmMiIKKysoZGVmaW5lX2V4cGFuZCAiY2VpbGRmMiIKKysgIFsoc2V0ICht YXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIiIpCisrCSh1bnNwZWM6REYgWyht YXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgIiIpXSBVTlNQRUNfRlJJUCkpXQor KyAgIlRBUkdFVF9GUFJORCAmJiBUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAmJiBU QVJHRVRfRE9VQkxFX0ZMT0FUIgorKyAgIiIpCisrCisrKGRlZmluZV9pbnNuICIqY2VpbGRmMl9m cHJzIgorICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYi KQorIAkodW5zcGVjOkRGIFsobWF0Y2hfb3BlcmFuZDpERiAxICJncGNfcmVnX29wZXJhbmQiICJm IildIFVOU1BFQ19GUklQKSldCistICAiVEFSR0VUX0ZQUk5EICYmIFRBUkdFVF9IQVJEX0ZMT0FU ICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQiCisrICAiVEFSR0VUX0ZQUk5E ICYmIFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxP QVQKKysgICAmJiAhVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkiCisgICAiZnJpcCAlMCwlMSIK KyAgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkKKyAKK0BAIC02MTgxLDEwICs2MjUyLDE3IEBA IChkZWZpbmVfaW5zbiAiY2VpbHNmMiIKKyAgICJmcmlwICUwLCUxIgorICAgWyhzZXRfYXR0ciAi dHlwZSIgImZwIildKQorIAorLShkZWZpbmVfaW5zbiAiZmxvb3JkZjIiCisrKGRlZmluZV9leHBh bmQgImZsb29yZGYyIgorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAiZ3BjX3JlZ19vcGVy YW5kIiAiIikKKysJKHVuc3BlYzpERiBbKG1hdGNoX29wZXJhbmQ6REYgMSAiZ3BjX3JlZ19vcGVy YW5kIiAiIildIFVOU1BFQ19GUklNKSldCisrICAiVEFSR0VUX0ZQUk5EICYmIFRBUkdFVF9IQVJE X0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQiCisrICAiIikKKysK KysoZGVmaW5lX2luc24gIipmbG9vcmRmMl9mcHJzIgorICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 REYgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQorIAkodW5zcGVjOkRGIFsobWF0Y2hfb3BlcmFu ZDpERiAxICJncGNfcmVnX29wZXJhbmQiICJmIildIFVOU1BFQ19GUklNKSldCistICAiVEFSR0VU X0ZQUk5EICYmIFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VC TEVfRkxPQVQiCisrICAiVEFSR0VUX0ZQUk5EICYmIFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdF VF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQKKysgICAmJiAhVkVDVE9SX1VOSVRfVlNYX1Ag KERGbW9kZSkiCisgICAiZnJpbSAlMCwlMSIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkK KyAKK0BAIC02MTk1LDYgKzYyNzMsNyBAQCAoZGVmaW5lX2luc24gImZsb29yc2YyIgorICAgImZy aW0gJTAsJTEiCisgICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKV0pCisgCisrOzsgTm8gVlNYIGVx dWl2YWxlbnQgdG8gZnJpbgorIChkZWZpbmVfaW5zbiAicm91bmRkZjIiCisgICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpERiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCisgCSh1bnNwZWM6REYgWyht YXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgImYiKV0gVU5TUEVDX0ZSSU4pKV0K K0BAIC02MjA5LDYgKzYyODgsMTIgQEAgKGRlZmluZV9pbnNuICJyb3VuZHNmMiIKKyAgICJmcmlu ICUwLCUxIgorICAgWyhzZXRfYXR0ciAidHlwZSIgImZwIildKQorIAorKyhkZWZpbmVfZXhwYW5k ICJmdHJ1bmNkZjIiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJncGNfcmVnX29wZXJh bmQiICIiKQorKyAgCShmaXg6REYgKG1hdGNoX29wZXJhbmQ6REYgMSAiZ3BjX3JlZ19vcGVyYW5k IiAiIikpKV0KKysgICJWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSIKKysgICIiKQorKworIDsg QW4gVU5TUEVDIGlzIHVzZWQgc28gd2UgZG9uJ3QgaGF2ZSB0byBzdXBwb3J0IFNJbW9kZSBpbiBG UCByZWdpc3RlcnMuCisgKGRlZmluZV9pbnNuICJzdGZpd3giCisgICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpTSSAwICJtZW1vcnlfb3BlcmFuZCIgIj1aIikKK0BAIC02MjI0LDE3ICs2MzA5LDQwIEBA IChkZWZpbmVfZXhwYW5kICJmbG9hdHNpc2YyIgorICAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmICFU QVJHRVRfRlBSUyIKKyAgICIiKQorIAorLShkZWZpbmVfaW5zbiAiZmxvYXRkaWRmMiIKKysoZGVm aW5lX2V4cGFuZCAiZmxvYXRkaWRmMiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdw Y19yZWdfb3BlcmFuZCIgIiIpCisrCShmbG9hdDpERiAobWF0Y2hfb3BlcmFuZDpESSAxICJncGNf cmVnX29wZXJhbmQiICIiKSkpXQorKyAgIihUQVJHRVRfUE9XRVJQQzY0IHx8IFRBUkdFVF9YSUxJ TlhfRlBVIHx8IFZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpKQorKyAgICYmIFRBUkdFVF9IQVJE X0ZMT0FUICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQgJiYgVEFSR0VUX0ZQUlMiCisrICAiIikKKysK KysoZGVmaW5lX2luc24gIipmbG9hdGRpZGYyX2ZwciIKKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5k OkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikKKyAJKGZsb2F0OkRGIChtYXRjaF9vcGVyYW5k OkRJIDEgImdwY19yZWdfb3BlcmFuZCIgIiFmI3IiKSkpXQorLSAgIihUQVJHRVRfUE9XRVJQQzY0 IHx8IFRBUkdFVF9YSUxJTlhfRlBVKSAmJiBUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRE9V QkxFX0ZMT0FUICYmIFRBUkdFVF9GUFJTIgorKyAgIihUQVJHRVRfUE9XRVJQQzY0IHx8IFRBUkdF VF9YSUxJTlhfRlBVKQorKyAgICYmIFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9ET1VCTEVf RkxPQVQgJiYgVEFSR0VUX0ZQUlMKKysgICAmJiAhVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSki CisgICAiZmNmaWQgJTAsJTEiCisgICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKV0pCisgCistKGRl ZmluZV9pbnNuICJmaXhfdHJ1bmNkZmRpMiIKKysoZGVmaW5lX2V4cGFuZCAiZmxvYXR1bnNkaWRm MiIKKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIiIpCisr CSh1bnNpZ25lZF9mbG9hdDpERiAobWF0Y2hfb3BlcmFuZDpESSAxICJncGNfcmVnX29wZXJhbmQi ICIiKSkpXQorKyAgIlRBUkdFVF9WU1giCisrICAiIikKKysKKysoZGVmaW5lX2V4cGFuZCAiZml4 X3RydW5jZGZkaTIiCisrICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJncGNfcmVnX29wZXJh bmQiICIiKQorKwkoZml4OkRJIChtYXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIg IiIpKSldCisrICAiKFRBUkdFVF9QT1dFUlBDNjQgfHwgVEFSR0VUX1hJTElOWF9GUFUgfHwgVkVD VE9SX1VOSVRfVlNYX1AgKERGbW9kZSkpCisrICAgICYmIFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRB UkdFVF9ET1VCTEVfRkxPQVQgJiYgVEFSR0VUX0ZQUlMiCisrICAiIikKKysKKysoZGVmaW5lX2lu c24gIipmaXhfdHJ1bmNkZmRpMl9mcHIiCisgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJn cGNfcmVnX29wZXJhbmQiICI9IWYjciIpCisgCShmaXg6REkgKG1hdGNoX29wZXJhbmQ6REYgMSAi Z3BjX3JlZ19vcGVyYW5kIiAiZiIpKSldCistICAiKFRBUkdFVF9QT1dFUlBDNjQgfHwgVEFSR0VU X1hJTElOWF9GUFUpICYmIFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQg JiYgVEFSR0VUX0ZQUlMiCisrICAiKFRBUkdFVF9QT1dFUlBDNjQgfHwgVEFSR0VUX1hJTElOWF9G UFUpICYmIFRBUkdFVF9IQVJEX0ZMT0FUCisrICAgICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQgJiYg VEFSR0VUX0ZQUlMgJiYgIVZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpIgorICAgImZjdGlkeiAl MCwlMSIKKyAgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkKKyAKK0BAIC03NjIzLDcgKzc3MzEs NyBAQCAoZGVmaW5lX2luc24gImFuZGRpM19tYyIKKyAgICBhbmRpLiAlMCwlMSwlYjIKKyAgICBh bmRpcy4gJTAsJTEsJXUyCisgICAgIyIKKy0gIFsoc2V0X2F0dHIgInR5cGUiICIqLCosKixjb21w YXJlLGNvbXBhcmUsKiIpCisrICBbKHNldF9hdHRyICJ0eXBlIiAiKiwqLCosZmFzdF9jb21wYXJl LGZhc3RfY29tcGFyZSwqIikKKyAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsNCw0LDQsNCw4Iild KQorIAorIChkZWZpbmVfaW5zbiAiYW5kZGkzX25vbWMiCitAQCAtNzY4MSw3ICs3Nzg5LDkgQEAg KGRlZmluZV9pbnNuICIqYW5kZGkzX2ludGVybmFsMl9tYyIKKyAgICAjCisgICAgIworICAgICMi CistICBbKHNldF9hdHRyICJ0eXBlIiAiY29tcGFyZSxjb21wYXJlLGRlbGF5ZWRfY29tcGFyZSxj b21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlLGNv bXBhcmUsY29tcGFyZSIpCisrICBbKHNldF9hdHRyICJ0eXBlIiAiZmFzdF9jb21wYXJlLGNvbXBh cmUsZGVsYXllZF9jb21wYXJlLGZhc3RfY29tcGFyZSxcCisrCQkgICAgIGZhc3RfY29tcGFyZSxj b21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlLGNvbXBhcmUsXAorKwkJICAgICBjb21wYXJl LGNvbXBhcmUiKQorICAgIChzZXRfYXR0ciAibGVuZ3RoIiAiNCw0LDQsNCw0LDgsOCw4LDgsOCw4 LDEyIildKQorIAorIChkZWZpbmVfaW5zbiAiKmFuZGRpM19pbnRlcm5hbDJfbm9tYyIKK0BAIC03 NzQ0LDcgKzc4NTQsOSBAQCAoZGVmaW5lX2luc24gIiphbmRkaTNfaW50ZXJuYWwzX21jIgorICAg ICMKKyAgICAjCisgICAgIyIKKy0gIFsoc2V0X2F0dHIgInR5cGUiICJjb21wYXJlLGNvbXBhcmUs ZGVsYXllZF9jb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxj b21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlIikKKysgIFsoc2V0X2F0dHIgInR5cGUiICJm YXN0X2NvbXBhcmUsY29tcGFyZSxkZWxheWVkX2NvbXBhcmUsZmFzdF9jb21wYXJlLFwKKysJCSAg ICAgZmFzdF9jb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxc CisrCQkgICAgIGNvbXBhcmUsY29tcGFyZSIpCisgICAgKHNldF9hdHRyICJsZW5ndGgiICI0LDQs NCw0LDQsOCw4LDgsOCw4LDgsMTIiKV0pCisgCisgKGRlZmluZV9pbnNuICIqYW5kZGkzX2ludGVy bmFsM19ub21jIgorQEAgLTc4OTYsNyArODAwOCw3IEBAIChkZWZpbmVfaW5zbiAiKmJvb2xkaTNf aW50ZXJuYWwyIgorICAgIkAKKyAgICAlcTQuICUzLCUxLCUyCisgICAgIyIKKy0gIFsoc2V0X2F0 dHIgInR5cGUiICJjb21wYXJlIikKKysgIFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUs Y29tcGFyZSIpCisgICAgKHNldF9hdHRyICJsZW5ndGgiICI0LDgiKV0pCisgCisgKGRlZmluZV9z cGxpdAorQEAgLTc5MjUsNyArODAzNyw3IEBAIChkZWZpbmVfaW5zbiAiKmJvb2xkaTNfaW50ZXJu YWwzIgorICAgIkAKKyAgICAlcTQuICUwLCUxLCUyCisgICAgIyIKKy0gIFsoc2V0X2F0dHIgInR5 cGUiICJjb21wYXJlIikKKysgIFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsY29tcGFy ZSIpCisgICAgKHNldF9hdHRyICJsZW5ndGgiICI0LDgiKV0pCisgCisgKGRlZmluZV9zcGxpdAor QEAgLTc5OTYsNyArODEwOCw3IEBAIChkZWZpbmVfaW5zbiAiKmJvb2xjZGkzX2ludGVybmFsMiIK KyAgICJACisgICAgJXE0LiAlMywlMiwlMQorICAgICMiCistICBbKHNldF9hdHRyICJ0eXBlIiAi Y29tcGFyZSIpCisrICBbKHNldF9hdHRyICJ0eXBlIiAiZmFzdF9jb21wYXJlLGNvbXBhcmUiKQor ICAgIChzZXRfYXR0ciAibGVuZ3RoIiAiNCw4IildKQorIAorIChkZWZpbmVfc3BsaXQKK0BAIC04 MDI1LDcgKzgxMzcsNyBAQCAoZGVmaW5lX2luc24gIipib29sY2RpM19pbnRlcm5hbDMiCisgICAi QAorICAgICVxNC4gJTAsJTIsJTEKKyAgICAjIgorLSAgWyhzZXRfYXR0ciAidHlwZSIgImNvbXBh cmUiKQorKyAgWyhzZXRfYXR0ciAidHlwZSIgImZhc3RfY29tcGFyZSxjb21wYXJlIikKKyAgICAo c2V0X2F0dHIgImxlbmd0aCIgIjQsOCIpXSkKKyAKKyAoZGVmaW5lX3NwbGl0CitAQCAtODA2Miw3 ICs4MTc0LDcgQEAgKGRlZmluZV9pbnNuICIqYm9vbGNjZGkzX2ludGVybmFsMiIKKyAgICJACisg ICAgJXE0LiAlMywlMSwlMgorICAgICMiCistICBbKHNldF9hdHRyICJ0eXBlIiAiY29tcGFyZSIp CisrICBbKHNldF9hdHRyICJ0eXBlIiAiZmFzdF9jb21wYXJlLGNvbXBhcmUiKQorICAgIChzZXRf YXR0ciAibGVuZ3RoIiAiNCw4IildKQorIAorIChkZWZpbmVfc3BsaXQKK0BAIC04MDkxLDcgKzgy MDMsNyBAQCAoZGVmaW5lX2luc24gIipib29sY2NkaTNfaW50ZXJuYWwzIgorICAgIkAKKyAgICAl cTQuICUwLCUxLCUyCisgICAgIyIKKy0gIFsoc2V0X2F0dHIgInR5cGUiICJjb21wYXJlIikKKysg IFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsY29tcGFyZSIpCisgICAgKHNldF9hdHRy ICJsZW5ndGgiICI0LDgiKV0pCisgCisgKGRlZmluZV9zcGxpdAorQEAgLTgxMDgsNiArODIyMCw1 MSBAQCAoZGVmaW5lX3NwbGl0CisgCShjb21wYXJlOkNDIChtYXRjaF9kdXAgMCkKKyAJCSAgICAo Y29uc3RfaW50IDApKSldCisgICAiIikKKysKKysoZGVmaW5lX2V4cGFuZCAic21pbmRpMyIKKysg IFsobWF0Y2hfb3BlcmFuZDpESSAwICJncGNfcmVnX29wZXJhbmQiICIiKQorKyAgIChtYXRjaF9v cGVyYW5kOkRJIDEgImdwY19yZWdfb3BlcmFuZCIgIiIpCisrICAgKG1hdGNoX29wZXJhbmQ6REkg MiAiZ3BjX3JlZ19vcGVyYW5kIiAiIildCisrICAiVEFSR0VUX0lTRUw2NCIKKysgICIKKyt7Cisr ICByczYwMDBfZW1pdF9taW5tYXggKG9wZXJhbmRzWzBdLCBTTUlOLCBvcGVyYW5kc1sxXSwgb3Bl cmFuZHNbMl0pOworKyAgRE9ORTsKKyt9IikKKysKKysoZGVmaW5lX2V4cGFuZCAic21heGRpMyIK KysgIFsobWF0Y2hfb3BlcmFuZDpESSAwICJncGNfcmVnX29wZXJhbmQiICIiKQorKyAgIChtYXRj aF9vcGVyYW5kOkRJIDEgImdwY19yZWdfb3BlcmFuZCIgIiIpCisrICAgKG1hdGNoX29wZXJhbmQ6 REkgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiIildCisrICAiVEFSR0VUX0lTRUw2NCIKKysgICIKKyt7 CisrICByczYwMDBfZW1pdF9taW5tYXggKG9wZXJhbmRzWzBdLCBTTUFYLCBvcGVyYW5kc1sxXSwg b3BlcmFuZHNbMl0pOworKyAgRE9ORTsKKyt9IikKKysKKysoZGVmaW5lX2V4cGFuZCAidW1pbmRp MyIKKysgIFsobWF0Y2hfb3BlcmFuZDpESSAwICJncGNfcmVnX29wZXJhbmQiICIiKQorKyAgICht YXRjaF9vcGVyYW5kOkRJIDEgImdwY19yZWdfb3BlcmFuZCIgIiIpCisrICAgKG1hdGNoX29wZXJh bmQ6REkgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiIildCisrICAiVEFSR0VUX0lTRUw2NCIKKysgICIK Kyt7CisrICByczYwMDBfZW1pdF9taW5tYXggKG9wZXJhbmRzWzBdLCBVTUlOLCBvcGVyYW5kc1sx XSwgb3BlcmFuZHNbMl0pOworKyAgRE9ORTsKKyt9IikKKysKKysoZGVmaW5lX2V4cGFuZCAidW1h eGRpMyIKKysgIFsobWF0Y2hfb3BlcmFuZDpESSAwICJncGNfcmVnX29wZXJhbmQiICIiKQorKyAg IChtYXRjaF9vcGVyYW5kOkRJIDEgImdwY19yZWdfb3BlcmFuZCIgIiIpCisrICAgKG1hdGNoX29w ZXJhbmQ6REkgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiIildCisrICAiVEFSR0VUX0lTRUw2NCIKKysg ICIKKyt7CisrICByczYwMDBfZW1pdF9taW5tYXggKG9wZXJhbmRzWzBdLCBVTUFYLCBvcGVyYW5k c1sxXSwgb3BlcmFuZHNbMl0pOworKyAgRE9ORTsKKyt9IikKKysKKyAMCisgOzsgTm93IGRlZmlu ZSB3YXlzIG9mIG1vdmluZyBkYXRhIGFyb3VuZC4KKyAKK0BAIC04NTExLDggKzg2NjgsOCBAQCAo ZGVmaW5lX3NwbGl0CisgOzsgVGhlICI/PyIgaXMgYSBrbHVkZ2UgdW50aWwgd2UgY2FuIGZpZ3Vy ZSBvdXQgYSBtb3JlIHJlYXNvbmFibGUgd2F5CisgOzsgb2YgaGFuZGxpbmcgdGhlc2Ugbm9uLW9m ZnNldHRhYmxlIHZhbHVlcy4KKyAoZGVmaW5lX2luc24gIiptb3ZkZl9oYXJkZmxvYXQzMiIKKy0g IFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAiPSFyLD8/ cixtLGYsZixtLCFyLCFyLCFyIikKKy0JKG1hdGNoX29wZXJhbmQ6REYgMSAiaW5wdXRfb3BlcmFu ZCIgInIsbSxyLGYsbSxmLEcsSCxGIikpXQorKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAi bm9uaW1tZWRpYXRlX29wZXJhbmQiICI9IXIsID8/ciwgbSwgd3MsID93YSwgd3MsID93YSwgIFos ID9aLCBmLCBmLCBtLCB3YSwgIXIsICFyLCAhciIpCisrCShtYXRjaF9vcGVyYW5kOkRGIDEgImlu cHV0X29wZXJhbmQiICAgICAgICAgICJyLCAgIG0sIHIsIHdzLCAgd2EsICBaLCAgIFosIHdzLCB3 YSwgZiwgbSwgZiwgIGosICBHLCAgSCwgIEYiKSldCisgICAiISBUQVJHRVRfUE9XRVJQQzY0ICYm IFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQg CisgICAgJiYgKGdwY19yZWdfb3BlcmFuZCAob3BlcmFuZHNbMF0sIERGbW9kZSkKKyAgICAgICAg fHwgZ3BjX3JlZ19vcGVyYW5kIChvcGVyYW5kc1sxXSwgREZtb2RlKSkiCitAQCAtODU5MSwxOSAr ODc0OCwzMCBAQCAoZGVmaW5lX2luc24gIiptb3ZkZl9oYXJkZmxvYXQzMiIKKyAJICByZXR1cm4g XCJcIjsKKyAJfQorICAgICBjYXNlIDM6CistICAgICAgcmV0dXJuIFwiZm1yICUwLCUxXCI7Cisg ICAgIGNhc2UgNDoKKy0gICAgICByZXR1cm4gXCJsZmQlVTElWDEgJTAsJTFcIjsKKysgICAgICBy ZXR1cm4gXCJ4c2Nwc2duZHAgJXgwLCV4MSwleDFcIjsKKyAgICAgY2FzZSA1OgorLSAgICAgIHJl dHVybiBcInN0ZmQlVTAlWDAgJTEsJTBcIjsKKyAgICAgY2FzZSA2OgorKyAgICAgIHJldHVybiBc Imx4c2QlVTF4ICV4MCwleTFcIjsKKyAgICAgY2FzZSA3OgorICAgICBjYXNlIDg6CisrICAgICAg cmV0dXJuIFwic3R4c2QlVTB4ICV4MSwleTBcIjsKKysgICAgY2FzZSA5OgorKyAgICAgIHJldHVy biBcImZtciAlMCwlMVwiOworKyAgICBjYXNlIDEwOgorKyAgICAgIHJldHVybiBcImxmZCVVMSVY MSAlMCwlMVwiOworKyAgICBjYXNlIDExOgorKyAgICAgIHJldHVybiBcInN0ZmQlVTAlWDAgJTEs JTBcIjsKKysgICAgY2FzZSAxMjoKKysgICAgICByZXR1cm4gXCJ4eGx4b3IgJXgwLCV4MCwleDBc IjsKKysgICAgY2FzZSAxMzoKKysgICAgY2FzZSAxNDoKKysgICAgY2FzZSAxNToKKyAgICAgICBy ZXR1cm4gXCIjXCI7CisgICAgIH0KKyB9IgorLSAgWyhzZXRfYXR0ciAidHlwZSIgInR3byxsb2Fk LHN0b3JlLGZwLGZwbG9hZCxmcHN0b3JlLCosKiwqIikKKy0gICAoc2V0X2F0dHIgImxlbmd0aCIg IjgsMTYsMTYsNCw0LDQsOCwxMiwxNiIpXSkKKysgIFsoc2V0X2F0dHIgInR5cGUiICJ0d28sIGxv YWQsIHN0b3JlLCBmcCwgZnAsIGZwbG9hZCwgZnBsb2FkLCBmcHN0b3JlLCBmcHN0b3JlLCBmcCwg ZnBsb2FkLCBmcHN0b3JlLCB2ZWNzaW1wbGUsICosICAqLCAgKiIpCisrICAgKHNldF9hdHRyICJs ZW5ndGgiICI4LCAgIDE2LCAgICAxNiwgIDQsICA0LCAgICAgIDQsICAgICAgNCwgICAgICAgNCwg ICAgICAgNCwgIDQsICAgICAgNCwgICAgICAgNCwgICAgICAgICA0LCA4LCAxMiwgMTYiKV0pCisg CisgKGRlZmluZV9pbnNuICIqbW92ZGZfc29mdGZsb2F0MzIiCisgICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpERiAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIj1yLHIsbSxyLHIsciIpCitAQCAtODY1 MSwxOSArODgxOSwyNiBAQCAoZGVmaW5lX2luc24gIiptb3ZkZl9zb2Z0ZmxvYXQzMiIKKyA7IGxk L3N0ZCByZXF1aXJlIHdvcmQtYWxpZ25lZCBkaXNwbGFjZW1lbnRzIC0+ICdZJyBjb25zdHJhaW50 LgorIDsgTGlzdCBZLT5yIGFuZCByLT5ZIGJlZm9yZSByLT5yIGZvciByZWxvYWQuCisgKGRlZmlu ZV9pbnNuICIqbW92ZGZfaGFyZGZsb2F0NjRfbWZwZ3ByIgorLSAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6REYgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICI9WSxyLCFyLGYsZixtLCpjKmwsIXIsKmgs IXIsIXIsIXIscixmIikKKy0JKG1hdGNoX29wZXJhbmQ6REYgMSAiaW5wdXRfb3BlcmFuZCIgInIs WSxyLGYsbSxmLHIsaCwwLEcsSCxGLGYsciIpKV0KKysgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRG IDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAiPVksIHIsICFyLCB3cywgP3dhLCB3cywgP3dhLCAg WiwgP1osIGYsIGYsIG0sIHdhLCAqYypsLCAhciwgKmgsICFyLCAhciwgIXIsIHIsIGYiKQorKwko bWF0Y2hfb3BlcmFuZDpERiAxICJpbnB1dF9vcGVyYW5kIiAgICAgICAgICJyLCBZLCAgciwgd3Ms ID93YSwgIFosICAgWiwgd3MsIHdhLCBmLCBtLCBmLCAgaiwgICAgciwgIGgsICAwLCAgRywgIEgs ICBGLCBmLCByIikpXQorICAgIlRBUkdFVF9QT1dFUlBDNjQgJiYgVEFSR0VUX01GUEdQUiAmJiBU QVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAKKy0gICAmJiBUQVJHRVRfRE9VQkxFX0ZM T0FUIAorKyAgICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQKKyAgICAmJiAoZ3BjX3JlZ19vcGVyYW5k IChvcGVyYW5kc1swXSwgREZtb2RlKQorICAgICAgICB8fCBncGNfcmVnX29wZXJhbmQgKG9wZXJh bmRzWzFdLCBERm1vZGUpKSIKKyAgICJACisgICAgc3RkJVUwJVgwICUxLCUwCisgICAgbGQlVTEl WDEgJTAsJTEKKyAgICBtciAlMCwlMQorKyAgIHhzY3BzZ25kcCAleDAsJXgxLCV4MQorKyAgIHhz Y3BzZ25kcCAleDAsJXgxLCV4MQorKyAgIGx4c2QlVTF4ICV4MCwleTEKKysgICBseHNkJVUxeCAl eDAsJXkxCisrICAgc3R4c2QlVTB4ICV4MSwleTAKKysgICBzdHhzZCVVMHggJXgxLCV5MAorICAg IGZtciAlMCwlMQorICAgIGxmZCVVMSVYMSAlMCwlMQorICAgIHN0ZmQlVTAlWDAgJTEsJTAKKysg ICB4eGx4b3IgJXgwLCV4MCwleDAKKyAgICBtdCUwICUxCisgICAgbWYlMSAlMAorICAgIHtjcm9y IDAsMCwwfG5vcH0KK0BAIC04NjcyLDMzICs4ODQ3LDQwIEBAIChkZWZpbmVfaW5zbiAiKm1vdmRm X2hhcmRmbG9hdDY0X21mcGdwciIKKyAgICAjCisgICAgbWZ0Z3ByICUwLCUxCisgICAgbWZmZ3By ICUwLCUxIgorLSAgWyhzZXRfYXR0ciAidHlwZSIgInN0b3JlLGxvYWQsKixmcCxmcGxvYWQsZnBz dG9yZSxtdGptcHIsbWZqbXByLCosKiwqLCosbWZ0Z3ByLG1mZmdwciIpCistICAgKHNldF9hdHRy ICJsZW5ndGgiICI0LDQsNCw0LDQsNCw0LDQsNCw4LDEyLDE2LDQsNCIpXSkKKysgIFsoc2V0X2F0 dHIgInR5cGUiICJzdG9yZSwgbG9hZCwgKiwgZnAsIGZwLCBmcGxvYWQsIGZwbG9hZCwgZnBzdG9y ZSwgZnBzdG9yZSwgZnAsIGZwbG9hZCwgZnBzdG9yZSwgdmVjc2ltcGxlLCBtdGptcHIsIG1mam1w ciwgKiwgKiwgICosICAqLCBtZnRncHIsIG1mZmdwciIpCisrICAgKHNldF9hdHRyICJsZW5ndGgi ICAgIjQsICAgIDQsIDQsICA0LCAgNCwgICAgICA0LCAgICAgIDQsICAgICAgIDQsICAgICAgIDQs ICA0LCAgICAgIDQsICAgICAgIDQsICAgICAgICAgNCwgICAgICA0LCAgICAgIDQsIDQsIDgsIDEy LCAxNiwgICAgICA0LCAgICAgIDQiKV0pCisgCisgOyBsZC9zdGQgcmVxdWlyZSB3b3JkLWFsaWdu ZWQgZGlzcGxhY2VtZW50cyAtPiAnWScgY29uc3RyYWludC4KKyA7IExpc3QgWS0+ciBhbmQgci0+ WSBiZWZvcmUgci0+ciBmb3IgcmVsb2FkLgorIChkZWZpbmVfaW5zbiAiKm1vdmRmX2hhcmRmbG9h dDY0IgorLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQi ICI9WSxyLCFyLGYsZixtLCpjKmwsIXIsKmgsIXIsIXIsIXIiKQorLQkobWF0Y2hfb3BlcmFuZDpE RiAxICJpbnB1dF9vcGVyYW5kIiAicixZLHIsZixtLGYscixoLDAsRyxILEYiKSldCisrICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpERiAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIj1ZLCByLCAhciwg d3MsID93YSwgd3MsID93YSwgIFosID9aLCBmLCBmLCBtLCB3YSwgKmMqbCwgIXIsICpoLCAhciwg IXIsICFyIikKKysJKG1hdGNoX29wZXJhbmQ6REYgMSAiaW5wdXRfb3BlcmFuZCIgICAgICAgICAi ciwgWSwgIHIsIHdzLCAgd2EsICBaLCAgIFosIHdzLCB3YSwgZiwgbSwgZiwgIGosICAgIHIsICBo LCAgMCwgIEcsICBILCAgRiIpKV0KKyAgICJUQVJHRVRfUE9XRVJQQzY0ICYmICFUQVJHRVRfTUZQ R1BSICYmIFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTIAorLSAgICYmIFRBUkdFVF9E T1VCTEVfRkxPQVQgCisrICAgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVAorICAgICYmIChncGNfcmVn X29wZXJhbmQgKG9wZXJhbmRzWzBdLCBERm1vZGUpCisgICAgICAgIHx8IGdwY19yZWdfb3BlcmFu ZCAob3BlcmFuZHNbMV0sIERGbW9kZSkpIgorICAgIkAKKyAgICBzdGQlVTAlWDAgJTEsJTAKKyAg ICBsZCVVMSVYMSAlMCwlMQorICAgIG1yICUwLCUxCisrICAgeHNjcHNnbmRwICV4MCwleDEsJXgx CisrICAgeHNjcHNnbmRwICV4MCwleDEsJXgxCisrICAgbHhzZCVVMXggJXgwLCV5MQorKyAgIGx4 c2QlVTF4ICV4MCwleTEKKysgICBzdHhzZCVVMHggJXgxLCV5MAorKyAgIHN0eHNkJVUweCAleDEs JXkwCisgICAgZm1yICUwLCUxCisgICAgbGZkJVUxJVgxICUwLCUxCisgICAgc3RmZCVVMCVYMCAl MSwlMAorKyAgIHh4bHhvciAleDAsJXgwLCV4MAorICAgIG10JTAgJTEKKyAgICBtZiUxICUwCisg ICAge2Nyb3IgMCwwLDB8bm9wfQorICAgICMKKyAgICAjCisgICAgIyIKKy0gIFsoc2V0X2F0dHIg InR5cGUiICJzdG9yZSxsb2FkLCosZnAsZnBsb2FkLGZwc3RvcmUsbXRqbXByLG1mam1wciwqLCos KiwqIikKKy0gICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsNCw0LDQsNCw0LDQsNCw0LDgsMTIsMTYi KV0pCisrICBbKHNldF9hdHRyICJ0eXBlIiAic3RvcmUsIGxvYWQsICosIGZwLCBmcCwgZnBsb2Fk LCBmcGxvYWQsIGZwc3RvcmUsIGZwc3RvcmUsIGZwLCBmcGxvYWQsIGZwc3RvcmUsIHZlY3NpbXBs ZSwgbXRqbXByLCBtZmptcHIsICAqLCAgKiwgICosICAqIikKKysgICAoc2V0X2F0dHIgImxlbmd0 aCIgIiAgNCwgICAgNCwgNCwgIDQsICA0LCAgICAgIDQsICAgICAgNCwgICAgICAgNCwgICAgICAg NCwgIDQsICAgICAgNCwgICAgICAgNCwgICAgICAgICA0LCAgICAgIDQsICAgICAgNCwgIDQsICA4 LCAxMiwgMTYiKV0pCisgCisgKGRlZmluZV9pbnNuICIqbW92ZGZfc29mdGZsb2F0NjQiCisgICBb KHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIj1yLFkscixj bCxyLHIscixyLCpoIikKK0BAIC05Mjc1LDE1ICs5NDU3LDE2IEBAIChkZWZpbmVfaW5zbiAiKm1v dnRpX3N0cmluZyIKKyAoZGVmaW5lX2luc24gIiptb3Z0aV9wcGM2NCIKKyAgIFsoc2V0IChtYXRj aF9vcGVyYW5kOlRJIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAiPXIsbzw+LHIiKQorIAkobWF0 Y2hfb3BlcmFuZDpUSSAxICJpbnB1dF9vcGVyYW5kIiAicixyLG0iKSldCistICAiVEFSR0VUX1BP V0VSUEM2NCAmJiAoZ3BjX3JlZ19vcGVyYW5kIChvcGVyYW5kc1swXSwgVEltb2RlKQorLSAgIHx8 IGdwY19yZWdfb3BlcmFuZCAob3BlcmFuZHNbMV0sIFRJbW9kZSkpIgorKyAgIihUQVJHRVRfUE9X RVJQQzY0ICYmIChncGNfcmVnX29wZXJhbmQgKG9wZXJhbmRzWzBdLCBUSW1vZGUpCisrICAgIHx8 IGdwY19yZWdfb3BlcmFuZCAob3BlcmFuZHNbMV0sIFRJbW9kZSkpKQorKyAgICYmIFZFQ1RPUl9N RU1fTk9ORV9QIChUSW1vZGUpIgorICAgIiMiCisgICBbKHNldF9hdHRyICJ0eXBlIiAiKixsb2Fk LHN0b3JlIildKQorIAorIChkZWZpbmVfc3BsaXQKKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlRJ IDAgImdwY19yZWdfb3BlcmFuZCIgIiIpCisgCShtYXRjaF9vcGVyYW5kOlRJIDEgImNvbnN0X2Rv dWJsZV9vcGVyYW5kIiAiIikpXQorLSAgIlRBUkdFVF9QT1dFUlBDNjQiCisrICAiVEFSR0VUX1BP V0VSUEM2NCAmJiBWRUNUT1JfTUVNX05PTkVfUCAoVEltb2RlKSIKKyAgIFsoc2V0IChtYXRjaF9k dXAgMikgKG1hdGNoX2R1cCA0KSkKKyAgICAoc2V0IChtYXRjaF9kdXAgMykgKG1hdGNoX2R1cCA1 KSldCisgICAiCitAQCAtOTMwOSw3ICs5NDkyLDcgQEAgKGRlZmluZV9zcGxpdAorIChkZWZpbmVf c3BsaXQKKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlRJIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5k IiAiIikKKyAgICAgICAgIChtYXRjaF9vcGVyYW5kOlRJIDEgImlucHV0X29wZXJhbmQiICIiKSld CistICAicmVsb2FkX2NvbXBsZXRlZAorKyAgInJlbG9hZF9jb21wbGV0ZWQgJiYgVkVDVE9SX01F TV9OT05FX1AgKFRJbW9kZSkKKyAgICAmJiBncHJfb3JfZ3ByX3AgKG9wZXJhbmRzWzBdLCBvcGVy YW5kc1sxXSkiCisgICBbKHBjKV0KKyB7IHJzNjAwMF9zcGxpdF9tdWx0aXJlZ19tb3ZlIChvcGVy YW5kc1swXSwgb3BlcmFuZHNbMV0pOyBET05FOyB9KQorQEAgLTE0OTI5LDYgKzE1MTEyLDggQEAg KGRlZmluZV9pbnNuICJwcmVmZXRjaCIKKyAMCisgCisgKGluY2x1ZGUgInN5bmMubWQiKQorKyhp bmNsdWRlICJ2ZWN0b3IubWQiKQorKyhpbmNsdWRlICJ2c3gubWQiKQorIChpbmNsdWRlICJhbHRp dmVjLm1kIikKKyAoaW5jbHVkZSAic3BlLm1kIikKKyAoaW5jbHVkZSAiZGZwLm1kIikKKy0tLSBn Y2MvY29uZmlnL3JzNjAwMC9lNTAwLmgJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NDU1NykKKysr KyBnY2MvY29uZmlnL3JzNjAwMC9lNTAwLmgJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNz bmVyKQkocmV2aXNpb24gMTQ0NjkyKQorQEAgLTM3LDYgKzM3LDggQEAKKyAgICAgICB7CQkJCQkJ CQkJXAorIAlpZiAoVEFSR0VUX0FMVElWRUMpCQkJCQkJXAorIAkgIGVycm9yICgiQWx0aVZlYyBh bmQgRTUwMCBpbnN0cnVjdGlvbnMgY2Fubm90IGNvZXhpc3QiKTsJXAorKwlpZiAoVEFSR0VUX1ZT WCkJCQkJCQkJXAorKwkgIGVycm9yICgiVlNYIGFuZCBFNTAwIGluc3RydWN0aW9ucyBjYW5ub3Qg Y29leGlzdCIpOwkJXAorIAlpZiAoVEFSR0VUXzY0QklUKQkJCQkJCVwKKyAJICBlcnJvciAoIjY0 LWJpdCBFNTAwIG5vdCBzdXBwb3J0ZWQiKTsJCQkJXAorIAlpZiAoVEFSR0VUX0hBUkRfRkxPQVQg JiYgVEFSR0VUX0ZQUlMpCQkJCVwKKy0tLSBnY2MvY29uZmlnL3JzNjAwMC9kcml2ZXItcnM2MDAw LmMJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NDU1NykKKysrKyBnY2MvY29uZmlnL3JzNjAwMC9k cml2ZXItcnM2MDAwLmMJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNp b24gMTQ0NjkyKQorQEAgLTM0MywxMSArMzQzLDExNSBAQCBkZXRlY3RfcHJvY2Vzc29yX2FpeCAo dm9pZCkKKyAjZW5kaWYgLyogX0FJWCAqLworIAorIAorKy8qCisrICogQXJyYXkgdG8gbWFwIC1t Y3B1PW5hdGl2ZSBuYW1lcyB0byB0aGUgc3dpdGNoZXMgcGFzc2VkIHRvIHRoZSBhc3NlbWJsZXIu CisrICogVGhpcyBsaXN0IG1pcnJvcnMgdGhlIHNwZWNzIGluIEFTTV9DUFVfU1BFQywgYW5kIGFu eSBjaGFuZ2VzIG1hZGUgaGVyZQorKyAqIHNob3VsZCBiZSBtYWRlIHRoZXJlIGFzIHdlbGwuCisr ICovCisrCisrc3RydWN0IGFzbV9uYW1lIHsKKysgIGNvbnN0IGNoYXIgKmNwdTsKKysgIGNvbnN0 IGNoYXIgKmFzbV9zdzsKKyt9OworKworK3N0YXRpYyBjb25zdAorK3N0cnVjdCBhc21fbmFtZSBh c21fbmFtZXNbXSA9IHsKKysjaWYgZGVmaW5lZCAoX0FJWCkKKysgIHsgInBvd2VyMyIsCSItbTYy MCIgfSwKKysgIHsgInBvd2VyNCIsCSItbXB3cjQiIH0sCisrICB7ICJwb3dlcjUiLAkiLW1wd3I1 IiB9LAorKyAgeyAicG93ZXI1KyIsCSItbXB3cjV4IiB9LAorKyAgeyAicG93ZXI2IiwJIi1tcHdy NiIgfSwKKysgIHsgInBvd2VyNngiLAkiLW1wd3I2IiB9LAorKyAgeyAicG93ZXI3IiwJIi1tcHdy NyIgfSwKKysgIHsgInBvd2VycGMiLAkiLW1wcGMiIH0sCisrICB7ICJyczY0YSIsCSItbXBwYyIg fSwKKysgIHsgIjYwMyIsCSItbTYwMyIgfSwKKysgIHsgIjYwM2UiLAkiLW02MDMiIH0sCisrICB7 ICI2MDQiLAkiLW02MDQiIH0sCisrICB7ICI2MDRlIiwJIi1tNjA0IiB9LAorKyAgeyAiNjIwIiwJ Ii1tNjIwIiB9LAorKyAgeyAiNjMwIiwJIi1tNjIwIiB9LAorKyAgeyAiOTcwIiwJIi1tOTcwIiB9 LAorKyAgeyAiRzUiLAkiLW05NzAiIH0sCisrICB7IE5VTEwsCSJcCisrJXshbWFpeDY0OiBcCisr JXttcG93ZXJwYzY0OiAtbXBwYzY0fSBcCisrJXttYWx0aXZlYzogLW05NzB9IFwKKysleyFtYWx0 aXZlYzogJXshbXBvd2VyNjQ6ICUoYXNtX2RlZmF1bHQpfX19IiB9LAorKworKyNlbHNlCisrICB7 ICJjb21tb24iLAkiLW1jb20iIH0sCisrICB7ICJjZWxsIiwJIi1tY2VsbCIgfSwKKysgIHsgInBv d2VyIiwJIi1tcHdyIiB9LAorKyAgeyAicG93ZXIyIiwJIi1tcHdyeCIgfSwKKysgIHsgInBvd2Vy MyIsCSItbXBwYzY0IiB9LAorKyAgeyAicG93ZXI0IiwJIi1tcG93ZXI0IiB9LAorKyAgeyAicG93 ZXI1IiwJIiUoYXNtX2NwdV9wb3dlcjUpIiB9LAorKyAgeyAicG93ZXI1KyIsCSIlKGFzbV9jcHVf cG93ZXI1KSIgfSwKKysgIHsgInBvd2VyNiIsCSIlKGFzbV9jcHVfcG93ZXI2KSAtbWFsdGl2ZWMi IH0sCisrICB7ICJwb3dlcjZ4IiwJIiUoYXNtX2NwdV9wb3dlcjYpIC1tYWx0aXZlYyIgfSwKKysg IHsgInBvd2VyNyIsCSIlKGFzbV9jcHVfcG93ZXI3KSIgfSwKKysgIHsgInBvd2VycGMiLAkiLW1w cGMiIH0sCisrICB7ICJyaW9zIiwJIi1tcHdyIiB9LAorKyAgeyAicmlvczEiLAkiLW1wd3IiIH0s CisrICB7ICJyaW9zMiIsCSItbXB3cngiIH0sCisrICB7ICJyc2MiLAkiLW1wd3IiIH0sCisrICB7 ICJyc2MxIiwJIi1tcHdyIiB9LAorKyAgeyAicnM2NGEiLAkiLW1wcGM2NCIgfSwKKysgIHsgIjQw MSIsCSItbXBwYyIgfSwKKysgIHsgIjQwMyIsCSItbTQwMyIgfSwKKysgIHsgIjQwNSIsCSItbTQw NSIgfSwKKysgIHsgIjQwNWZwIiwJIi1tNDA1IiB9LAorKyAgeyAiNDQwIiwJIi1tNDQwIiB9LAor KyAgeyAiNDQwZnAiLAkiLW00NDAiIH0sCisrICB7ICI0NjQiLAkiLW00NDAiIH0sCisrICB7ICI0 NjRmcCIsCSItbTQ0MCIgfSwKKysgIHsgIjUwNSIsCSItbXBwYyIgfSwKKysgIHsgIjYwMSIsCSIt bTYwMSIgfSwKKysgIHsgIjYwMiIsCSItbXBwYyIgfSwKKysgIHsgIjYwMyIsCSItbXBwYyIgfSwK KysgIHsgIjYwM2UiLAkiLW1wcGMiIH0sCisrICB7ICJlYzYwM2UiLAkiLW1wcGMiIH0sCisrICB7 ICI2MDQiLAkiLW1wcGMiIH0sCisrICB7ICI2MDRlIiwJIi1tcHBjIiB9LAorKyAgeyAiNjIwIiwJ Ii1tcHBjNjQiIH0sCisrICB7ICI2MzAiLAkiLW1wcGM2NCIgfSwKKysgIHsgIjc0MCIsCSItbXBw YyIgfSwKKysgIHsgIjc1MCIsCSItbXBwYyIgfSwKKysgIHsgIkczIiwJIi1tcHBjIiB9LAorKyAg eyAiNzQwMCIsCSItbXBwYyAtbWFsdGl2ZWMiIH0sCisrICB7ICI3NDUwIiwJIi1tcHBjIC1tYWx0 aXZlYyIgfSwKKysgIHsgIkc0IiwJIi1tcHBjIC1tYWx0aXZlYyIgfSwKKysgIHsgIjgwMSIsCSIt bXBwYyIgfSwKKysgIHsgIjgyMSIsCSItbXBwYyIgfSwKKysgIHsgIjgyMyIsCSItbXBwYyIgfSwK KysgIHsgIjg2MCIsCSItbXBwYyIgfSwKKysgIHsgIjk3MCIsCSItbXBvd2VyNCAtbWFsdGl2ZWMi IH0sCisrICB7ICJHNSIsCSItbXBvd2VyNCAtbWFsdGl2ZWMiIH0sCisrICB7ICI4NTQwIiwJIi1t ZTUwMCIgfSwKKysgIHsgIjg1NDgiLAkiLW1lNTAwIiB9LAorKyAgeyAiZTMwMGMyIiwJIi1tZTMw MCIgfSwKKysgIHsgImUzMDBjMyIsCSItbWUzMDAiIH0sCisrICB7ICJlNTAwbWMiLAkiLW1lNTAw bWMiIH0sCisrICB7IE5VTEwsCSJcCisrJXttcG93ZXI6ICV7IW1wb3dlcjI6IC1tcHdyfX0gXAor KyV7bXBvd2VyMjogLW1wd3J4fSBcCisrJXttcG93ZXJwYzY0KjogLW1wcGM2NH0gXAorKyV7IW1w b3dlcnBjNjQqOiAle21wb3dlcnBjKjogLW1wcGN9fSBcCisrJXttbm8tcG93ZXI6ICV7IW1wb3dl cnBjKjogLW1jb219fSBcCisrJXshbW5vLXBvd2VyOiAleyFtcG93ZXIqOiAlKGFzbV9kZWZhdWx0 KX19IiB9LAorKyNlbmRpZgorK307CisrCisgLyogVGhpcyB3aWxsIGJlIGNhbGxlZCBieSB0aGUg c3BlYyBwYXJzZXIgaW4gZ2NjLmMgd2hlbiBpdCBzZWVzCisgICAgYSAlOmxvY2FsX2NwdV9kZXRl Y3QoYXJncykgY29uc3RydWN0LiAgQ3VycmVudGx5IGl0IHdpbGwgYmUgY2FsbGVkCisgICAgd2l0 aCBlaXRoZXIgImFyY2giIG9yICJ0dW5lIiBhcyBhcmd1bWVudCBkZXBlbmRpbmcgb24gaWYgLW1h cmNoPW5hdGl2ZQorICAgIG9yIC1tdHVuZT1uYXRpdmUgaXMgdG8gYmUgc3Vic3RpdHV0ZWQuCisg CisrICAgQWRkaXRpb25hbGx5IGl0IHdpbGwgYmUgY2FsbGVkIHdpdGggImFzbSIgdG8gc2VsZWN0 IHRoZSBhcHByb3ByaWF0ZSBmbGFncworKyAgIGZvciB0aGUgYXNzZW1ibGVyLgorKworICAgIEl0 IHJldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyBuZXcgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMg dG8gYmUKKyAgICBwdXQgYXQgdGhlIHBsYWNlIG9mIHRoZSBhYm92ZSB0d28gb3B0aW9ucywgZGVw ZW5kaW5nIG9uIHdoYXQgQ1BVCisgICAgdGhpcyBpcyBleGVjdXRlZC4KK0BAIC0zNjEsMjkgKzQ2 NSwzNSBAQCBjb25zdCBjaGFyCisgICBjb25zdCBjaGFyICpjYWNoZSA9ICIiOworICAgY29uc3Qg Y2hhciAqb3B0aW9ucyA9ICIiOworICAgYm9vbCBhcmNoOworKyAgYm9vbCBhc3NlbWJsZXI7Cisr ICBzaXplX3QgaTsKKyAKKyAgIGlmIChhcmdjIDwgMSkKKyAgICAgcmV0dXJuIE5VTEw7CisgCisg ICBhcmNoID0gc3RyY21wIChhcmd2WzBdLCAiY3B1IikgPT0gMDsKKy0gIGlmICghYXJjaCAmJiBz dHJjbXAgKGFyZ3ZbMF0sICJ0dW5lIikpCisrICBhc3NlbWJsZXIgPSAoIWFyY2ggJiYgc3RyY21w IChhcmd2WzBdLCAiYXNtIikgPT0gMCk7CisrICBpZiAoIWFyY2ggJiYgIWFzc2VtYmxlciAmJiBz dHJjbXAgKGFyZ3ZbMF0sICJ0dW5lIikpCisgICAgIHJldHVybiBOVUxMOworIAorKyAgaWYgKCEg YXNzZW1ibGVyKQorKyAgICB7CisgI2lmIGRlZmluZWQgKF9BSVgpCistICBjYWNoZSA9IGRldGVj dF9jYWNoZXNfYWl4ICgpOworKyAgICAgIGNhY2hlID0gZGV0ZWN0X2NhY2hlc19haXggKCk7Cisg I2VsaWYgZGVmaW5lZCAoX19BUFBMRV9fKQorLSAgY2FjaGUgPSBkZXRlY3RfY2FjaGVzX2Rhcndp biAoKTsKKysgICAgICBjYWNoZSA9IGRldGVjdF9jYWNoZXNfZGFyd2luICgpOworICNlbGlmIGRl ZmluZWQgKF9fRnJlZUJTRF9fKQorLSAgY2FjaGUgPSBkZXRlY3RfY2FjaGVzX2ZyZWVic2QgKCk7 CistICAvKiBGcmVlQlNEIFBQQyBkb2VzIG5vdCBwcm92aWRlIGFueSBjYWNoZSBpbmZvcm1hdGlv biB5ZXQuICAqLworLSAgY2FjaGUgPSAiIjsKKysgICAgICBjYWNoZSA9IGRldGVjdF9jYWNoZXNf ZnJlZWJzZCAoKTsKKysgICAgICAvKiBGcmVlQlNEIFBQQyBkb2VzIG5vdCBwcm92aWRlIGFueSBj YWNoZSBpbmZvcm1hdGlvbiB5ZXQuICAqLworKyAgICAgIGNhY2hlID0gIiI7CisgI2VsaWYgZGVm aW5lZCAoX19saW51eF9fKQorLSAgY2FjaGUgPSBkZXRlY3RfY2FjaGVzX2xpbnV4ICgpOworLSAg LyogUFBDIExpbnV4IGRvZXMgbm90IHByb3ZpZGUgYW55IGNhY2hlIGluZm9ybWF0aW9uIHlldC4g ICovCistICBjYWNoZSA9ICIiOworKyAgICAgIGNhY2hlID0gZGV0ZWN0X2NhY2hlc19saW51eCAo KTsKKysgICAgICAvKiBQUEMgTGludXggZG9lcyBub3QgcHJvdmlkZSBhbnkgY2FjaGUgaW5mb3Jt YXRpb24geWV0LiAgKi8KKysgICAgICBjYWNoZSA9ICIiOworICNlbHNlCistICBjYWNoZSA9ICIi OworKyAgICAgIGNhY2hlID0gIiI7CisgI2VuZGlmCisrICAgIH0KKyAKKyAjaWYgZGVmaW5lZCAo X0FJWCkKKyAgIGNwdSA9IGRldGVjdF9wcm9jZXNzb3JfYWl4ICgpOworQEAgLTM5Nyw2ICs1MDcs MTcgQEAgY29uc3QgY2hhcgorICAgY3B1ID0gInBvd2VycGMiOworICNlbmRpZgorIAorKyAgaWYg KGFzc2VtYmxlcikKKysgICAgeworKyAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKGFzbV9u YW1lcykgLyBzaXplb2YgKGFzbV9uYW1lc1swXSk7IGkrKykKKysJeworKwkgIGlmICghYXNtX25h bWVzW2ldLmNwdSB8fCAhc3RyY21wIChhc21fbmFtZXNbaV0uY3B1LCBjcHUpKQorKwkgICAgcmV0 dXJuIGFzbV9uYW1lc1tpXS5hc21fc3c7CisrCX0KKysKKysgICAgICByZXR1cm4gTlVMTDsKKysg ICAgfQorKworICAgcmV0dXJuIGNvbmNhdCAoY2FjaGUsICItbSIsIGFyZ3ZbMF0sICI9IiwgY3B1 LCAiICIsIG9wdGlvbnMsIE5VTEwpOworIH0KKyAKKy0tLSBnY2MvY29uZmlnL3JzNjAwMC9zeXN2 NC5oCSguLi4vdHJ1bmspCShyZXZpc2lvbiAxNDQ1NTcpCisrKysgZ2NjL2NvbmZpZy9yczYwMDAv c3lzdjQuaAkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDQ2 OTIpCitAQCAtMTE5LDkgKzExOSw5IEBAIGRvIHsJCQkJCQkJCQlcCisgICBlbHNlIGlmICghc3Ry Y21wIChyczYwMDBfYWJpX25hbWUsICJpOTYwLW9sZCIpKQkJCVwKKyAgICAgewkJCQkJCQkJCVwK KyAgICAgICByczYwMDBfY3VycmVudF9hYmkgPSBBQklfVjQ7CQkJCQlcCistICAgICAgdGFyZ2V0 X2ZsYWdzIHw9IChNQVNLX0xJVFRMRV9FTkRJQU4gfCBNQVNLX0VBQkkJCQlcCistCQkgICAgICAg fCBNQVNLX05PX0JJVEZJRUxEX1dPUkQpOwkJCVwKKysgICAgICB0YXJnZXRfZmxhZ3MgfD0gKE1B U0tfTElUVExFX0VORElBTiB8IE1BU0tfRUFCSSk7CQkJXAorICAgICAgIHRhcmdldF9mbGFncyAm PSB+TUFTS19TVFJJQ1RfQUxJR047CQkJCVwKKysgICAgICBUQVJHRVRfTk9fQklURklFTERfV09S RCA9IDE7CQkJCQlcCisgICAgIH0JCQkJCQkJCQlcCisgICBlbHNlCQkJCQkJCQkJXAorICAgICB7 CQkJCQkJCQkJXAorCgpkaWZmIC0tZ2l0IGEvZ2NjNDQtcHIzOTM1OC5wYXRjaCBiL2djYzQ0LXBy MzkzNTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwYmMyY2YuLjAwMDAw MDAKLS0tIGEvZ2NjNDQtcHIzOTM1OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCww IEBACi0yMDA5LTAzLTA0ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+Ci0K LQlQUiB0cmVlLW9wdGltaXphdGlvbi8zOTM1OAotCSogdHJlZS1zc2Etc3RydWN0YWxpYXMuYyAo ZG9fc2RfY29uc3RyYWludCk6IEZpeCBjaGVjayBmb3IKLQllc2NhcGVkX2lkIGFuZCBjYWxsdXNl ZF9pZC4KLQkoc29sdmVfZ3JhcGgpOiBMaWtld2lzZS4KLQotCSogZysrLmRnL3dhcm4vV3N0cmlj dC1hbGlhc2luZy1ib2d1cy1lc2NhcGUtMi5DOiBOZXcgdGVzdGNhc2UuCi0JKiBnKysuZGcvd2Fy bi9Xc3RyaWN0LWFsaWFzaW5nLWJvZ3VzLWVzY2FwZS0zLkM6IExpa2V3aXNlLgotCi0tLS0gZ2Nj L3RyZWUtc3NhLXN0cnVjdGFsaWFzLmMJKHJldmlzaW9uIDE0NDYwMSkKLSsrKyBnY2MvdHJlZS1z c2Etc3RydWN0YWxpYXMuYwkocmV2aXNpb24gMTQ0NjAyKQotQEAgLTE1MjQsOCArMTUyNCw4IEBA IGRvX3NkX2NvbnN0cmFpbnQgKGNvbnN0cmFpbnRfZ3JhcGhfdCBncmEKLSAgICAgIG9mIGEgdmFy aWFibGUgY2FuIGFsc28gcmVhY2ggYWxsIG90aGVyIGZpZWxkcyBvZiB0aGUgdmFyaWFibGUKLSAg ICAgIHdlIHNpbXBseSBoYXZlIHRvIGV4cGFuZCB0aGUgc29sdXRpb24gdG8gY29udGFpbiBhbGwg c3ViLWZpZWxkcwotICAgICAgaWYgb25lIHN1Yi1maWVsZCBpcyBjb250YWluZWQuICAqLwotLSAg aWYgKGMtPnJocy52YXIgPT0gZXNjYXBlZF9pZAotLSAgICAgIHx8IGMtPnJocy52YXIgPT0gY2Fs bHVzZWRfaWQpCi0rICBpZiAoYy0+cmhzLnZhciA9PSBmaW5kIChlc2NhcGVkX2lkKQotKyAgICAg IHx8IGMtPnJocy52YXIgPT0gZmluZCAoY2FsbHVzZWRfaWQpKQotICAgICB7Ci0gICAgICAgYml0 bWFwIHZhcnMgPSBOVUxMOwotICAgICAgIC8qIEluIGEgZmlyc3QgcGFzcyByZWNvcmQgYWxsIHZh cmlhYmxlcyB3ZSBuZWVkIHRvIGFkZCBhbGwKLUBAIC0xNTk0LDkgKzE1OTQsMTAgQEAgZG9fc2Rf Y29uc3RyYWludCAoY29uc3RyYWludF9ncmFwaF90IGdyYQotIAkgIC8qIE1lcmdpbmcgdGhlIHNv bHV0aW9uIGZyb20gRVNDQVBFRCBuZWVkbGVzc2x5IGluY3JlYXNlcwotIAkgICAgIHRoZSBzZXQu ICBVc2UgRVNDQVBFRCBhcyByZXByZXNlbnRhdGl2ZSBpbnN0ZWFkLgotIAkgICAgIFNhbWUgZm9y IENBTExVU0VELiAgKi8KLS0JICBlbHNlIGlmIChnZXRfdmFyaW5mbyAodCktPmlkID09IGVzY2Fw ZWRfaWQKLS0JCSAgIHx8IGdldF92YXJpbmZvICh0KS0+aWQgPT0gY2FsbHVzZWRfaWQpCi0tCSAg ICBmbGFnIHw9IGJpdG1hcF9zZXRfYml0IChzb2wsIGdldF92YXJpbmZvICh0KS0+aWQpOwotKwkg IGVsc2UgaWYgKGdldF92YXJpbmZvICh0KS0+aWQgPT0gZmluZCAoZXNjYXBlZF9pZCkpCi0rCSAg ICBmbGFnIHw9IGJpdG1hcF9zZXRfYml0IChzb2wsIGVzY2FwZWRfaWQpOwotKwkgIGVsc2UgaWYg KGdldF92YXJpbmZvICh0KS0+aWQgPT0gZmluZCAoY2FsbHVzZWRfaWQpKQotKwkgICAgZmxhZyB8 PSBiaXRtYXBfc2V0X2JpdCAoc29sLCBjYWxsdXNlZF9pZCk7Ci0gCSAgZWxzZSBpZiAoYWRkX2dy YXBoX2VkZ2UgKGdyYXBoLCBsaHMsIHQpKQotIAkgICAgZmxhZyB8PSBiaXRtYXBfaW9yX2ludG8g KHNvbCwgZ2V0X3ZhcmluZm8gKHQpLT5zb2x1dGlvbik7Ci0gCX0KLUBAIC0yNTE2LDggKzI1MTcs OCBAQCBzb2x2ZV9ncmFwaCAoY29uc3RyYWludF9ncmFwaF90IGdyYXBoKQotIAotIAkgICAgICBp ZiAoIXNvbHV0aW9uX2VtcHR5Ci0gCQkgIC8qIERvIG5vdCBwcm9wYWdhdGUgdGhlIEVTQ0FQRUQv Q0FMTFVTRUQgc29sdXRpb25zLiAgKi8KLS0JCSAgJiYgaSAhPSBlc2NhcGVkX2lkCi0tCQkgICYm IGkgIT0gY2FsbHVzZWRfaWQpCi0rCQkgICYmIGkgIT0gZmluZCAoZXNjYXBlZF9pZCkKLSsJCSAg JiYgaSAhPSBmaW5kIChjYWxsdXNlZF9pZCkpCi0gCQl7Ci0gCQkgIGJpdG1hcF9pdGVyYXRvciBi aTsKLSAKLS0tLSBnY2MvdGVzdHN1aXRlL2crKy5kZy93YXJuL1dzdHJpY3QtYWxpYXNpbmctYm9n dXMtZXNjYXBlLTIuQwkocmV2aXNpb24gMCkKLSsrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy93YXJu L1dzdHJpY3QtYWxpYXNpbmctYm9ndXMtZXNjYXBlLTIuQwkocmV2aXNpb24gMTQ0NjAyKQotQEAg LTAsMCArMSwxOSBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25z ICItTzIgLVdzdHJpY3QtYWxpYXNpbmciIH0gKi8KLSsKLSsjaW5jbHVkZTxsaXN0PgotKwotK3N0 cnVjdCBBCi0rewotKyAgdmlydHVhbCB+QSgpOwotK307Ci0rCi0rQSogZm9vKCk7Ci0rCi0rdm9p ZCBiYXIoc3RkOjpsaXN0PGludD4geCkKLSt7Ci0rICBzdGQ6Omxpc3Q8aW50PiB5ID0geDsKLSsg IGlmICgqeS5yYmVnaW4oKSkKLSsgICAgZGVsZXRlIGZvbygpOwotK30KLSsKLS0tLSBnY2MvdGVz dHN1aXRlL2crKy5kZy93YXJuL1dzdHJpY3QtYWxpYXNpbmctYm9ndXMtZXNjYXBlLTMuQwkocmV2 aXNpb24gMCkKLSsrKyBnY2MvdGVzdHN1aXRlL2crKy5kZy93YXJuL1dzdHJpY3QtYWxpYXNpbmct Ym9ndXMtZXNjYXBlLTMuQwkocmV2aXNpb24gMTQ0NjAyKQotQEAgLTAsMCArMSwzNSBAQAotKy8q IHsgZGctZG8gY29tcGlsZSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLVdzdHJpY3QtYWxp YXNpbmciIH0gKi8KLSsKLStzdHJ1Y3QgTm9kZV9iYXNlIHt9OwotKwotK3N0cnVjdCBOb2RlIDog Tm9kZV9iYXNlCi0rewotKyAgaW50IGRhdGE7Ci0rfTsKLSsKLStzdHJ1Y3QgTGlzdAotK3sKLSsg IE5vZGVfYmFzZSBub2RlLCAqcHJldjsKLSsKLSsgIExpc3QoKSA6IHByZXYoJm5vZGUpIHsgeHl6 KCk7IH0KLSsKLSsgIHZvaWQgeHl6KCk7Ci0rCi0rICBpbnQgYmFjaygpIHsgcmV0dXJuIHN0YXRp Y19jYXN0PE5vZGUqPihwcmV2KS0+ZGF0YTsgfQotK307Ci0rCi0rc3RydWN0IEEKLSt7Ci0rICB2 aXJ0dWFsIH5BKCk7Ci0rfTsKLSsKLStBKiBmb28oKTsKLSsKLSt2b2lkIGJhcigpCi0rewotKyAg TGlzdCB5OwotKyAgaWYgKHkuYmFjaygpKQotKyAgICBkZWxldGUgZm9vKCk7Ci0rfQotKwoKZGlm ZiAtLWdpdCBhL3Bvd2VyNy5wYXRjaCBiL3Bvd2VyNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggYTljMTk0OC4uMDAwMDAwMAotLS0gYS9wb3dlcjcucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSw5NTA2ICswLDAgQEAKLTIwMDktMDMtMDYgIE1pY2hhZWwgTWVpc3NuZXIgIDxt ZWlzc25lckBsaW51eC52bmV0LmlibS5jb20+Ci0KLQkqIGRvYy9pbnZva2UudGV4aSAoLW12c3gt c2NhbGFyLW1lbW9yeSk6IE5ldyBzd2l0Y2gsIHRvIHN3aXRjaCB0bwotCXVzZSBWU1ggcmVnK3Jl ZyBhZGRyZXNzaW5nIGZvciBhbGwgc2NhbGFyIGRvdWJsZSBwcmVjaXNpb24KLQlmbG9hdGluZyBw b2ludC4KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm9wdCAoLXZzeC1zY2FsYXItbWVtb3J5KTog RGl0dG8uCi0JCi0JKiBjb25maWd1cmUuYWMgKGdjY19jdl9hc19wb3dlcnBjX21mcGdwcik6IFNl dCBiaW51dGlscyB2ZXJzaW9uIHRvCi0JMi4xOS4yLgotCShnY2NfY3ZfYXNfcG93ZXJwY19jbXBi KTogRGl0dG8uCi0JKGdjY19jdl9hc19wb3dlcnBjX2RmcCk6IERpdHRvLgotCShnY2NfY3ZfYXNf cG93ZXJwY192c3gpOiBEaXR0by4KLQkoZ2NjX2N2X2FzX3Bvd2VycGNfcG9wY250ZCk6IERpdHRv LgotCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgotCi0JKiBjb25maWcvcnM2MDAwL3ZlY3Rvci5t ZCAoVkVDX2ludCk6IE5ldyBtb2RlIGF0dHJpYnV0ZSBmb3IgdmVjdG9yCi0JY29udmVyc2lvbnMu Ci0JKFZFQ19JTlQpOiBEaXR0by4KLQkoZnRydW5jPG1vZGU+Mik6IE1ha2UgdGhpcyBhIGRlZmlu ZV9leHBhbmQuCi0JKGZsb2F0PFZFQ19pbnQ+PG1vZGU+Mik6IE5ldyB2ZWN0b3IgY29udmVyc2lv biBzdXBwb3J0IHRvIGFkZCBWU1gKLQkzMiBiaXQgaW50LzMyIGJpdCBmbG9hdGluZyBwb2ludCBj b252ZXJ0IGFuZCA2NCBiaXQgaW50LzY0IGJpdAotCWZsb2F0aW5nIHBvaW50IHZlY3RvciBpbnN0 cnVjdGlvbnMuCi0JKHVuc2lnbmVkX2Zsb2F0PFZFQ19pbnQ+PG1vZGU+Mik6IERpdHRvLgotCShm aXhfdHJ1bmM8bW9kZT48VkVDX2ludD4yKTogRGl0dG8uCi0JKGZpeHVuc190cnVuYzxtb2RlPjxW RUNfaW50PjIpOiBEaXR0by4KLQotCSogY29uZmlnL3JzNjAwMC9wcmVkaWNhdGVzLm1kIChlYXN5 X2ZwX2NvbnN0YW50KTogMC4wIGlzIGFuIGVhc3kKLQljb25zdGFudCB1bmRlciBWU1guCi0JKGlu ZGV4ZWRfb3JfaW5kaXJlY3Rfb3BlcmFuZCk6IEFkZCBWU1ggbG9hZC9zdG9yZSB3aXRoIHVwZGF0 ZQotCXN1cHBvcnQuCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF9kZWJ1Z19h ZGRyKTogTmV3IGdsb2JhbCBmb3IKLQktbWRlYnVnPWFkZHIuCi0JKHJzNjAwMF9pbml0X2hhcmRf cmVnbm9fbW9kZV9vayk6IEFkZCAtbXZzeC1zY2FsYXItbWVtb3J5Ci0Jc3VwcG9ydC4KLQkocnM2 MDAwX292ZXJyaWRlX29wdGlvbnMpOiBBZGQgLW1kZWJ1Zz1hZGRyIHN1cHBvcnQuCi0JKHJzNjAw MF9idWlsdGluX2NvbnZlcnNpb24pOiBBZGQgVlNYIHNhbWUgc2l6ZSBjb252ZXJzaW9ucy4KLQko cnM2MDAwX2xlZ2l0aW1pemVfYWRkcmVzcyk6IEFkZCAtbWRlYnVnPWFkZHIgc3VwcG9ydC4gIEFk ZAotCXN1cHBvcnQgZm9yIFZTWCBsb2FkL3N0b3JlIHdpdGggdXBkYXRlIGluc3RydWN0aW9ucy4K LQkocnM2MDAwX2xlZ2l0aW1pemVfcmVsb2FkX2FkZHJlc3MpOiBEaXR0by4KLQkocnM2MDAwX2xl Z2l0aW1hdGVfYWRkcmVzcyk6IERpdHRvLgotCShyczYwMDBfbW9kZV9kZXBlbmRlbnRfYWRkcmVz cyk6IERpdHRvLgotCShwcmludF9vcGVyYW5kKTogRGl0dG8uCi0JKGJkZXNjXzFhcmcpOiBBZGQg YnVpbHRpbnMgZm9yIGNvbnZlcnNpb24gdGhhdCBjYWxscyBlaXRoZXIgdGhlCi0JVlNYIG9yIEFs dGl2ZWMgaW5zbiBwYXR0ZXJuLgotCShyczYwMDBfY29tbW9uX2luaXRfYnVpbHRpbnMpOiBEaXR0 by4KLQotCSogY29uZmlnL3JzNjAwMC92c3gubWQgKFZTWF9JKTogRGVsZXRlLCBubyBsb25nZXIg dXNlZC4KLQkoVlNpKTogTmV3IG1vZGUgYXR0cmlidXRlIGZvciBjb252ZXJzaW9ucy4KLQkoVlNJ KTogRGl0dG8uCi0JKFZTYyk6IERpdHRvLgotCSh2c3hfbW92PG1vZGU+KTogQWRkIGxvYWQvc3Rv cmUgd2l0aCB1cGRhdGUgc3VwcG9ydC4KLQkodnN4X2xvYWQ8bW9kZT5fdXBkYXRlKik6IE5ldyBp bnNucyBmb3IgbG9hZC9zdG9yZSB3aXRoIHVwZGF0ZQotCXN1cHBvcnQuCi0JKHZzeF9zdG9yZTxt b2RlPl91cGRhdGUqKTogRGl0dG8uCi0JKHZzeF9mbWFkZDxtb2RlPjQpOiBHZW5lcmF0ZSBjb3Jy ZWN0IGNvZGUgZm9yIFY0U0YuCi0JKHZzeF9mbXN1Yjxtb2RlPjQpOiBEaXR0by4KLQkodnN4X2Zu bWFkZDxtb2RlPjRfKik6IERpdHRvLgotCSh2c3hfZm5tc3ViPG1vZGU+NF8qKTogRGl0dG8uCi0J KHZzeF9mbG9hdDxWU2k+PG1vZGU+Mik6IE5ldyBpbnNuIGZvciB2ZWN0b3IgY29udmVyc2lvbi4K LQkodnN4X2Zsb2F0dW5zPFZTaT48bW9kZT4yKTogRGl0dG8uCi0JKHZzeF9maXhfdHJ1bmM8bW9k ZT48VlNpPjIpOiBEaXR0by4KLQkodnN4X2ZpeHVuc190cnVuYzxtb2RlPjxWU2k+Mik6IERpdHRv LgotCSh2c3hfeHhtcmdodyk6IE5ldyBpbnNuIGZvciBWNFNGIGludGVybGVhdmUuCi0JKHZzeF94 eG1yZ2x3KTogRGl0dG8uCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmggKHJzNjAwMF9kZWJ1 Z19hZGRyKTogLW1kZWJ1Zz1hZGRyCi0Jc3VwcG9ydC4KLQkoVEFSR0VUX0RFQlVHX0FERFIpOiBE aXR0by4KLQkocnM2MDAwX2J1aWx0aW5zKTogQWRkIFZTWCBpbnN0cnVjdGlvbnMgZm9yIGV2ZW50 dWFsIFZTWAotCWJ1aWx0aW5zLgotCi0JKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKGFsdGl2 ZWNfdm1yZ2hzZik6IERvbid0IGRvIHRoZSBhbHRpdmVjCi0JaW5zdHJ1Y3Rpb24gaWYgVlNYLgot CShhbHRpdmVjX3Ztcmdsc2YpOiBEaXR0by4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQg KG1vdmRmX2hhcmRmbG9hdDMyKTogQWRkIHN1cHBvcnQgZm9yCi0JdXNpbmcgeHhseG9yIHRvIHpl cm8gYSBmbG9hdGluZyByZWdpc3RlciBpZiBWU1guCi0JKG1vdmRmX2hhcmRmbG9hdDY0X21mcGdw cik6IERpdHRvLgotCShtb3ZkZl9oYXJkZmxvYXQ2NCk6IERpdHRvLgotCi0yMDA5LTAzLTAzICBN aWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAbGludXgudm5ldC5pYm0uY29tPgotCi0JKiBjb25m aWcvcnM2MDAwL3ZzeC5tZCAodnN4X3h4bXJnbHcpOiBEZWxldGUgZm9yIG5vdywgdXNlIEFsdGl2 ZWMuCi0JKHZzeF94eG1yZ2h3KTogRGl0dG8uCi0KLQkqIGNvbmZpZy9yczYwMDAvYWx0aXZlYy5t ZCAoYWx0aXZlY192bXJnaHNmKTogVXNlIHRoaXMgaW5zbiBldmVuCi0Jb24gVlNYIHN5c3RlbXMu Ci0JKGFsdGl2ZWNfdm1yZ2xzZik6IERpdHRvLgotCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5o IChBU01fQ1BVX05BVElWRV9TUEVDKTogVXNlICUoYXNtX2RlZmF1bHQpCi0JaWYgd2UgYXJlIHJ1 bm5pbmcgYXMgYSBjcm9zcyBjb21waWxlci4KLQotCSogY29uZmlnL3JzNjAwMC92ZWN0b3IubWQg KHZlY19pbnRlcmxlYXZlX2hpZ2h2NHNmKTogVXNlIGNvcnJlY3QKLQljb25zdGFudHMgZm9yIHRo ZSBleHRyYWN0aW9uLgotCSh2ZWNfaW50ZXJsZWF2ZV9sb3d2NHNmKTogRGl0dG8uCi0KLQkqIGNv bmZpZy9yczYwMDAvcnM2MDAwLm1kIChmbG9vcmRmMik6IEZpeCB0eXBvLCBtYWtlIHRoaXMgYQot CWRlZmluZV9leHBhbmQsIG5vdCBkZWZpbmVfaW5zbi4KLQotCSogY29uZmlnL3JzNjAwMC9haXg1 My5oIChBU01fQ1BVX1NQRUMpOiBJZiAtbWNwdT1uYXRpdmUsIGNhbGwKLQklOmxvY2FsX2NwdV9k ZXRlY3QoYXNtKSB0byBnZXQgdGhlIGFwcHJvcHJpYXRlIGFzc2VtYmxlciBmbGFncyBmb3IKLQl0 aGUgbWFjaGluZS4KLQkqIGNvbmZpZy9yczYwMDAvYWl4NjEuaCAoQVNNX0NQVV9TUEVDKTogRGl0 dG8uCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChBU01fQ1BVX1NQRUMpOiBEaXR0by4KLQko QVNNX0NQVV9OQVRJVkVfU1BFQyk6IE5ldyBzcGVjIHRvIGdldCBhc20gb3B0aW9ucyBpZgotCS1t Y3B1PW5hdGl2ZS4KLQkoRVhUUkFfU1BFQ1MpOiBBZGQgQVNNX0NQVV9OQVRJVkVfU1BFQy4KLQot CSogY29uZmlnL3JzNjAwMC9kcml2ZXItcnM2MDAwLmMgKGFzbV9uYW1lcyk6IE5ldyBzdGF0aWMg YXJyYXkgdG8KLQlnaXZlIHRoZSBhcHByb3ByaWF0ZSBhc20gc3dpdGNoZXMgaWYgLW1jcHU9bmF0 aXZlLgotCShob3N0X2RldGVjdF9sb2NhbF9jcHUpOiBBZGQgc3VwcG9ydCBmb3IgImFzbSIuCi0K LQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHByb2Nlc3Nvcl90YXJnZXRfdGFibGUpOiBEb24n dCB0dXJuIG9uCi0JLW1pc2VsIGJ5IGRlZmF1bHQgZm9yIHBvd2VyNy4KLQotMjAwOS0wMy0wMiAg TWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotCSogY29u ZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2VtaXRfc3dkaXZkZik6IFJldmVydCBsYXN0Ci0J Y2hhbmdlLCBzaW5jZSB3ZSByZXZlcnRlZCB0aGUgZmxvYXRpbmcgbXVsdGlwbHkvYWRkIGNoYW5n ZXMuCi0KLQkqIGRvYy9tZC50ZXhpIChNYWNoaW5lIENvbnN0cmFpbnRzKTogVXBkYXRlIHJzNjAw MCBjb25zdHJhaW50cy4KLQotCSogY29uZmlnL3JzNjAwMC92ZWN0b3IubWQgKG5lZzxtb2RlPjIp OiBGaXggdHlwbyB0byBlbmFibGUKLQl2ZWN0b3JpemVkIG5lZ2F0aW9uLgotCShmdHJ1bmM8bW9k ZT4yKTogTW92ZSBmdHJ1bmMgZXhwYW5kZXIgaGVyZSBmcm9tIGFsdGl2ZWMubWQsIGFuZAotCWFk ZCBWMkRGIGNhc2UuCi0JKHZlY19pbnRlcmxlYXZlX2hpZ2h2NHNmKTogQ29ycmVjdCB0eXBlIHRv IGJlIFY0U0YsIG5vdCBWNFNJLgotCSh2ZWNfZXh0cmFjdF9ldmVudjJkZik6IEFkZCBleHBhbmRl ci4KLQkodmVjX2V4dHJhY3Rfb2RkdjJkZik6IERpdHRvLgotCi0JKiBjb25maWcvcnM2MDAwL3Zz eC5tZCAodnN4X2Z0cnVuYzxtb2RlPjIpOiBOZXcgVlNYIHBhdHRlcm4gZm9yCi0JdHJ1bmNhdGUu Ci0JKHZzeF9mdHJ1bmNkZjIpOiBEaXR0by4KLQkodnN4X3h4c3BsdHcpOiBOZXcgaW5zdHJ1Y3Rp b24gZm9yIHdvcmQgc3BsYXQuCi0JKHZzeF94eG1yZ2x3KTogV2hpdGVzcGFjZSBjaGFuZ2VzLiAg Rml4IHR5cG8gZnJvbSBWNFNJIHRvIHY0U0YuCi0JKHZzeF94eG1yZ2h3KTogRGl0dG8uCi0KLQkq IGNvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCAoYWx0aXZlY192bXJnaHNmKTogV2hpdGVzcGFjZSBj aGFuZ2VzLgotCShhbHRpdmVjX3Ztcmdsc2YpOiBEaXR0by4KLQkoYWx0aXZlY192c3BsdHNmKTog RGlzYWJsZSBpZiB3ZSBoYXZlIFZTWC4KLQkoYWx0aXZlY19mdHJ1bmN2NHNmMik6IE1vdmUgZXhw YW5kZXIgdG8gdmVjdG9yLm1kLCByZW5hbWUgaW5zbi4KLQotCSogY29uZmlnL3JzNjAwMC9yczYw MDAubWQgKGZ0cnVuY2RmMik6IEFkZCBleHBhbmRlciBmb3IgVlNYLgotCi0JKiBjb25maWcvcnM2 MDAwL3JzNjAwMC5jIChyczYwMDBfaW5pdF9oYXJkX3JlZ25vX21vZGVfb2spOgotCVJlZW5hYmxl IHZlY3Rvcml6aW5nIFY0U0YgdW5kZXIgYWx0aXZlYy4KLQkocnM2MDAwX2hhcmRfcmVnbm9fbW9k ZV9vayk6IERvbid0IGFsbG93IGZsb2F0aW5nIHZhbHVlcyBpbiBMUiwKLQlDVFIsIE1RLiAgQWxz bywgVlJTQVZFL1ZTQ1IgYXJlIGJvdGggMzItYml0cy4KLQkocnM2MDAwX2luaXRfaGFyZF9yZWdu b19tb2RlX29rKTogUHJpbnQgc29tZSBvZiB0aGUgc3BlY2lhbAotCXJlZ2lzdGVycyBpZiAtbWRl YnVnPXJlZy4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKGZsb2F0aW5nIG11bHRpcGx5 L2FkZCBpbnNucyk6IEdvIGJhY2sKLQl0byB0aGUgb3JpZ2luYWwgc2VtYW50aWNzIGZvciBtdWx0 aXBseSBhZGQvc3VidHJhY3QsIHBhcnRpY3VsYXJseQotCXdpdGggLWZmYXN0LW1hdGguCi0KLQkq IGNvbmZpZy9yczYwMDAvdnN4Lm1kIChmbG9hdGluZyBtdWx0aXBseS9hZGQgaW5zbnMpOiBNaXJy b3IgdGhlCi0JcnM2MDAwIGZsb2F0aW5nIHBvaW50IG11bHRpcGx5L2FkZCBpbnNucyBpbiBWU1gu Ci0KLTIwMDktMDMtMDEgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBsaW51eC52bmV0Lmli bS5jb20+Ci0KLQkqIGNvbmZpZy9yczYwMDAvdmVjdG9yLm1kIChWRUNfTCk6IEF0IFRJbW9kZS4K LQkoVkVDX00pOiBMaWtlIFZFQ19MLCBleGNlcHQgbm8gVEltb2RlLgotCShWRUNfYmFzZSk6IEFk ZCBUSW1vZGUgc3VwcG9ydC4KLQkobW92PG1vZGU+KTogVXNlIFZFQ19NLCBub3QgVkVDX0wuICBJ ZiB0aGVyZSBpcyBubyBleHRyYQotCW9wdGltaXphdGlvbiBmb3IgdGhlIG1vdmUsIGp1c3QgZ2Vu ZXJhdGUgdGhlIHN0YW5kYXJkIG1vdmUuCi0JKHZlY3Rvcl9zdG9yZV88bW9kZT4pOiBEaXR0by4K LQkodmVjdG9yX2xvYWRfPG1vZGU+KTogRGl0dG8uCi0JKHZlY19pbml0PG1vZGU+KTogVXNlIHZl Y19pbml0X29wZXJhbmQgcHJlZGljYXRlLgotCi0JKiBjb25maWcvcnM2MDAwL3ByZWRpY2F0ZXMu bWQgKHZlY19pbml0X29wZXJhbmQpOiBOZXcgcHJlZGljYXRlLgotCi0JKiBjb25maWcvcnM2MDAw L3JzNjAwMC5jIChyczYwMDBfaGFyZF9yZWdub19tb2RlX29rKTogQWxsb3cgbW9kZQotCWluIGEg VlNYIHJlZ2lzdGVyIGlmIHRoZXJlIGlzIGEgbW92ZSBvcGVyYXRpb24uCi0JKHJzNjAwMF92ZWN0 b3JfcmVnX2NsYXNzKTogQWRkIGludGVybmFsIHJlZ2lzdGVyIG51bWJlciB0byB0aGUKLQlkZWJ1 ZyBvdXRwdXQuCi0JKHJzNjAwMF9pbml0X2hhcmRfcmVnbm9fbW9kZV9vayk6IFJlb3JnYW5pemUg c28gYWxsIG9mIHRoZSBjb2RlCi0JZm9yIGEgZ2l2ZW4gdHlwZSBpcyBsb2NhdGVkIHRvZ2V0aGVy LiAgSWYgbm90IC1tdnN4LCBtYWtlICJ3cyIKLQljb25zdHJhaW50IGJlY29tZSBOT19SRUdTLCBu b3QgRkxPQVRfUkVHUy4gIENoYW5nZSAtbWRlYnVnPXJlZwotCW91dHB1dC4KLQkocnM2MDAwX2V4 cGFuZF92ZWN0b3JfaW5pdCk6IEJlZm9yZSBjYWxsaW5nIGdlbl92c3hfY29uY2F0X3YyZGYsCi0J bWFrZSBzdXJlIHRoZSB0d28gZmxvYXQgYXJndW1lbnRzIGFyZSBjb3BpZWQgaW50byByZWdpc3Rl cnMuCi0JKHJzNjAwMF9sZWdpdGltYXRlX29mZnNldF9hZGRyZXNzX3ApOiBJZiBubyB2c3ggb3Ig YWx0aXZlYywgZG9uJ3QKLQlkaXNhbGxvdyBvZmZzZXQgYWRkcmVzc2luZy4gIEFkZCBWMkRJbW9k ZS4gIElmIFRJbW9kZSBpcyBoYW5kbGVkCi0JYnkgdGhlIHZlY3RvciB1bml0LCBhbGxvdyBpbmRl eGVkIGFkZHJlc3NpbmcuICBDaGFuZ2UgZGVmYXVsdCBjYXNlCi0JdG8gYmUgYSBmYXRhbF9pbnNu IGluc3RlYWQgb2YgZ2NjX3VucmVhY2hhYmxlLgotCShyczYwMDBfaGFuZGxlX2FsdGl2ZWNfYXR0 cmlidXRlKTogQWRkIHN1cHBvcnQgZm9yIHZlY3RvciBkb3VibGUKLQlpZiAtbXZzeC4KLQkocnM2 MDAwX3JlZ2lzdGVyX21vdmVfY29zdCk6IEFkZCBzdXBwb3J0IGZvciBWU1hfUkVHUy4gIEtub3cg dGhhdAotCXVuZGVyIFZTWCwgeW91IGNhbiBtb3ZlIGJldHdlZW4gZmxvYXQgYW5kIGFsdGl2ZWMg cmVnaXN0ZXJzCi0JY2hlYXBseS4KLQkocnM2MDAwX2VtaXRfc3dkaXZkZik6IENoYW5nZSB0aGUg cGF0dGVybiBvZiB0aGUgbmVnYXRlIG11bHRpcGx5Ci0JYW5kIHN1YnRyYWN0IG9wZXJhdGlvbi4K LQotCSogY29uZmlnL3JzNjAwMC92c3gubWQgKFZTWF9JKTogQWRkIFRJbW9kZS4KLQkoVlNYX0wp OiBBZGQgVEltb2RlLgotCShWU20pOiBEaXR0by4KLQkoVlNzKTogRGl0dG8uCi0JKFZTcik6IERp dHRvLgotCShVTlNQRUNfVlNYX0NPTkNBVF9WMkRGKTogTmV3IGNvbnN0YW50LgotCSh2c3hfZnJl PG1vZGU+Mik6IEFkZCByZWNpcHJvY2FsIGVzdGltYXRlLgotCSh2c3hfZnJlREYyKTogRGl0dG8u Ci0JKHZzeF9mbm1hZGQ8bW9kZT40KTogUmV3b3JrIHBhdHRlcm4gc28gaXQgbWF0Y2hlcyB0aGUK LQljYW5vbmljYWxpemF0aW9uIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXMuCi0JKHZzeF9mbm1zdWI8 bW9kZT40KTogRGl0dG8uCi0JKHZzeF9mbm1hZGRERjQpOiBEaXR0by4KLQkodnN4X2ZubXN1YkRG NCk6IERpdHRvLgotCSh2c3hfdnNlbDxtb2RlPik6IFVzZSB2c3hfcmVnaXN0ZXJfb3BlcmFuZCwg bm90IHJlZ2lzdGVyX29wZXJhbmQuCi0JKHZzeF9hZGRkZjMpOiBEaXR0by4KLQkodnN4X3N1YmRm Myk6IERpdHRvLgotCSh2c3hfbXVsZGYzKTogRGl0dG8uCi0JKHZzeF9kaXZkZjMpOiBEaXR0by4K LQkodnN4X25lZ2RmMyk6IERpdHRvLgotCSh2c3hfYWJzZGYyKTogRGl0dG8uCi0JKHZzeF9uYWJz ZGYyKTogRGl0dG8uCi0JKHZzeF9jb3B5c2lnbjxtb2RlPjMpOiBBZGQgY29weXNpZ24gc3VwcG9y dC4KLQkodnN4X2NvcHlzaWduREYzKTogRGl0dG8uCi0JKHZzeF9jb25jYXRfdjJkZik6IFJld3Jp dGUgdG8gdXNlIGFuIFVOU1BFQy4KLQkodnN4X3NldF92MmRmKTogVXNlICJ3cyIgY29uc3RyYWlu dCBmb3Igc2NhbGFyIGZsb2F0LgotCSh2c3hfc3BsYXR2MmRmKTogRGl0dG8uCi0KLQkqIGNvbmZp Zy9yczYwMDAvcnM2MDAwLmggKFZFQ1RPUl9VTklUX05PTkVfUCk6IE5ldyBtYWNybyB0byBzYXkg bm8KLQl2ZWN0b3Igc3VwcG9ydC4KLQkoVkVDVE9SX01FTV9OT05FX1ApOiBEaXR0by4KLQkoVlNY X01PVkVfTU9ERSk6IEFkZCBWMkRJbW9kZSwgVEltb2RlLgotCi0JKiBjb25maWcvcnM2MDAwL2Fs dGl2ZWMubWQgKFZNKTogQWRkIFYyREksIFRJLgotCShidWlsZF92ZWN0b3JfbWFza19mb3JfbG9h ZCk6IEZpeCB0aGlua28gaW4gVlNYIGNhc2UuCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1k IChmbWFkZHNmNF9wb3dlcnBjKTogTmFtZSBwcmV2aW91c2x5Ci0JdW5uYW1lZCBwYXR0ZXJuLiAg Rml4IGluc25zIHNvIGNvbWJpbmUgd2lsbCBnZW5lcmF0ZSB0aGUgbmVnYXRpdmUKLQltdWx0aXBs eSBhbmQgc3VidHJhY3Qgb3BlcmF0aW9ucy4KLQkoZm1hZGRzZjRfcG93ZXIpOiBEaXR0by4KLQko Zm1zdWJzZjRfcG93ZXJwYyk6IERpdHRvLgotCShmbXN1YnNmNF9wb3dlcik6IERpdHRvLgotCShm bm1hZGRzZjRfcG93ZXJwYyk6IERpdHRvLgotCShmbm1hZGRzZjRfcG93ZXIpOiBEaXR0by4KLQko Zm5tc3Vic2Y0X3Bvd2VycGMpOiBEaXR0by4KLQkoZm5tc3Vic2Y0X3Bvd2VyKTogRGl0dG8uCi0J KGZuc3Vic2Y0X3Bvd2VycGMyKTogRGl0dG8uCi0JKGZuc3Vic2Y0X3Bvd2VyMik6IERpdHRvLgot CShmbWFkZGRmNF9wb3dlcnBjKTogRGl0dG8uCi0JKGZtYWRkZGY0X3Bvd2VyKTogRGl0dG8uCi0J KGZtc3ViZGY0X3Bvd2VycGMpOiBEaXR0by4KLQkoZm1zdWJkZjRfcG93ZXIpOiBEaXR0by4KLQko Zm5tYWRkZGY0X3Bvd2VycGMpOiBEaXR0by4KLQkoZm5tYWRkZGY0X3Bvd2VyKTogRGl0dG8uCi0J KGZubXN1YmRmNF9wb3dlcnBjKTogRGl0dG8uCi0JKGZubXN1YmRmNF9wb3dlcik6IERpdHRvLgot CShjb3B5c2lnbmRmMyk6IElmIFZTWCwgY2FsbCB0aGUgVlNYIGNvcHlzaWduLgotCShmcmVkKTog U3BsaXQgaW50byBhbiBleHBhbmRlciBhbmQgaW5zbi4gIE9uIGluc24sIGRpc2FibGUgaWYKLQlW U1guCi0JKG1vdmRmX2hhcmRmbG9hdDMyKTogUmV3b3JrIFZTWCBzdXBwb3J0LgotCShtb3ZkZl9o YXJkZmxvYXQ2NF9tZnBncHIpOiBEaXR0by4KLQkobW92ZGZfaGFyZGZsb2F0NjQpOiBEaXR0by4K LQkobW92dGlfcHBjNjQpOiBJZiB2ZWN0b3IgdW5pdCBpcyBoYW5kbGluZyBUSW1vZGUsIGRpc2Fi bGUgdGhpcwotCXBhdHRlcm4uCi0KLTIwMDktMDItMjggIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlz c25lckBsaW51eC52bmV0LmlibS5jb20+Ci0KLQkqIGNvbmZpZy9yczYwMDAvcHBjLWFzbS5oOiBJ ZiBfX1ZTWF9fIGRlZmluZSB0aGUgYWRkaXRpb25hbCBzY2FsYXIKLQlmbG9hdGluZyBwb2ludCBy ZWdpc3RlcnMgdGhhdCBvdmVybGFwIHdpdGggdGggQWx0aXZlYyByZWdpc3RlcnMuCi0KLTIwMDkt MDItMjcgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBsaW51eC52bmV0LmlibS5jb20+Ci0K LQkqIGNvbmZpZy9yczYwMDAvc3BlLm1kIChzcGVfZml4dW5zX3RydW5jZGZzaTIpOiBSZW5hbWUg ZnJvbQotCWZpeHVuc190cnVuY2Rmc2kyLCBhbmQgbW92ZSBmaXh1bnNfdHJ1bmNkZnNpMiBpbnRv IHJzNjAwMC5tZC4KLQotCSogY29uZmlnL3JzNjAwMC9wcGMtYXNtLmg6IElmIF9fQUxUSVZFQ19f IGlzIGRlZmluZWQsIGRlZmluZSB0aGUKLQlBbHRpdmVjIHJlZ2lzdGVycy4gIElmIF9fVlNYX18g aXMgZGVmaW5lZCwgZGVmaW5lIHRoZSBWU1gKLQlyZWdpc3RlcnMuCi0KLQkqIGNvbmZpZy9yczYw MDAvcnM2MDAwLm9wdCAoLW12c3gtc2NhbGFyLWRvdWJsZSk6IE1ha2UgdGhpcyBvbiBieQotCWRl ZmF1bHQuCi0JKC1taXNlbCk6IE1ha2UgdGhpcyBhIHRhcmdldCBtYXNrIGluc3RlYWQgb2YgYSB2 YXJpYWJsZS4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAocnM2MDAwX2lzZWwpOiBEZWxl dGUgZ2xvYmFsIHZhcmlhYmxlLgotCShyczYwMDBfZXhwbGljaXRfb3B0aW9ucyk6IERlbGV0ZSBp c2VsIGZpZWxkLgotCShQT1dFUlBDX01BU0tTKTogQWRkIE1BU0tfSVNFTC4KLQkocHJvY2Vzc29y X3RhcmdldF90YWJsZSk6IEFkZCBNQVNLX0lTRUwgdG8gODU0MCwgODU0OCwgZTUwMG1jLCBhbmQK LQlwb3dlcjcgcHJvY2Vzc29ycy4KLQkocnM2MDAwX292ZXJyaWRlX29wdGlvbnMpOiBNb3ZlIC1t aXNlbCB0byBhIHRhcmdldCBtYXNrLgotCShyczYwMDBfaGFuZGxlX29wdGlvbik6IERpdHRvLgot CShyczYwMDBfZW1pdF9pbnRfY21vdmUpOiBBZGQgc3VwcG9ydCBmb3IgNjQtYml0IGlzZWwuCi0K LQkqIGNvbmZpZy9yczYwMDAvdnN4Lm1kICh2c3hfZmxvYXRkaWRmMik6IE5ldyBzY2FsYXIgZmxv YXRpbmcgcG9pbnQKLQlwYXR0ZXJuIHRvIHN1cHBvcnQgVlNYIGNvbnZlcnNpb24gYW5kIHJvdW5k aW5nIGluc3RydWN0aW9ucy4KLQkodnN4X2Zsb2F0dW5zZGlkZjIpOiBEaXR0by4KLQkodnN4X2Zp eF90cnVuZGZkaTIpOiBEaXR0by4KLQkodnN4X2ZpeHVuc190cnVuZGZkaTIpOiBEaXR0by4KLQko dnN4X2J0cnVuZGYyKTogRGl0dG8uCi0JKHZzeF9mbG9vcmRmMik6IERpdHRvLgotCSh2c3hfY2Vp bGRmMik6IERpdHRvLgotCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChyczYwMDBfaXNlbCk6 IERlbGV0ZSBnbG9iYWwuCi0JKFRBUkdFVF9JU0VMKTogRGVsZXRlLCBzaW5jZSAtbWlzZWwgaXMg bm93IGEgdGFyZ2V0IG1hc2suCi0JKFRBUkdFVF9JU0VMNjQpOiBOZXcgdGFyZ2V0IG9wdGlvbiBm b3IgLW1pc2VsIG9uIDY0LWJpdCBzeXN0ZW1zLgotCi0JKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMu bWQgKGFsdGl2ZWNfZ3R1PG1vZGU+KTogVXNlIGd0dSwgbm90IGdldS4KLQotCSogY29uZmlnL3Jz NjAwMC9yczYwMDAubWQgKHNlbCk6IE5ldyBtb2RlIGF0dHJpYnV0ZSBmb3IgNjQtYml0Ci0JSVNF TCBzdXBwb3J0LgotCShtb3Y8bW9kZT5jYyk6IEFkZCA2NC1iaXQgSVNFTCBzdXBwb3J0LgotCShp c2VsX3NpZ25lZF88bW9kZT4pOiBEaXR0by4KLQkoaXNlbF91bnNpZ25lZF88bW9kZT4pOiBEaXR0 by4KLQkoZml4dW5zX3RydW5jZGZzaTIpOiBNb3ZlIGV4cGFuZGVyIGhlcmUgZnJvbSBzcGUubWQu Ci0JKGZpeHVuc190cnVuY2RmZGkyKTogTmV3IGV4cGFuZGVyIGZvciB1bnNpZ25lZCBmbG9hdGlu ZyBwb2ludAotCWNvbnZlcnNpb24gb24gcG93ZXI3LgotCShidHJ1bmNkZjIpOiBTcGxpdCBpbnRv IGV4cGFuZGVyIGFuZCBpbnNuLiAgT24gdGhlIGluc24sIGRpc2FsbG93Ci0Jb24gVlNYLCBzbyB0 aGUgVlNYIGluc3RydWN0aW9uIHdpbGwgYmUgZ2VuZXJhdGVkLgotCShjZWlsZGYyKTogRGl0dG8u Ci0JKGZsb29yZGYyKTogRGl0dG8uCi0JKGZsb2F0ZGlkZjIpOiBEaXR0by4KLQkoZml4X3RydW5j ZGZkaTIpOiBEaXR0by4KLQkoc21pbmRpMyk6IERlZmluZSBpZiB3ZSBoYXZlIC1taXNlbCBvbiA2 NC1iaXQgc3lzdGVtcy4KLQkoc21heGRpMyk6IERpdHRvLgotCSh1bWluZGkzKTogRGl0dG8uCi0J KHVtYXhkaTMpOiBEaXR0by4KLQotCSogY29uZmlnL3JzNjAwMC9lNTAwLmggKENIRUNLX0U1MDBf T1BUSU9OUyk6IERpc2FibGUgLW12c3ggb24KLQlFNTAwLgotCi0yMDA5LTAyLTI2ICBNaWNoYWVs IE1laXNzbmVyICA8bWVpc3NuZXJAbGludXgudm5ldC5pYm0uY29tPgotCi0JKiBjb25maWcvcnM2 MDAwL2NvbnN0cmFpbnRzLm1kICgid2QiIGNvbnN0cmFpbnQpOiAgQ2hhbmdlIHRoZQotCXZhcmlh YmxlIHRoYXQgaG9sZHMgdGhlIHJlZ2lzdGVyIGNsYXNzIHRvIHVzZS4KLQkoIndmIiBjb25zdHJh aW50KTogRGl0dG8uCi0JKCJ3cyIgY29uc3RyYWludCk6IERpdHRvLgotCSgid2EiIGNvbnN0cmFp bnQpOiBEaXR0by4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAub3B0ICgtbXZzeC12ZWN0b3It bWVtb3J5KTogTWFrZSB0aGlzIG9uIGJ5Ci0JZGVmYXVsdC4KLQkoLW12c3gtdmVjdG9yLWZsb2F0 KTogRGl0dG8uCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLmMgKHJzNjAwMF92ZWN0b3JfcmVn X2NsYXNzKTogTmV3IGdsb2JhbCB0bwotCWhvbGQgdGhlIHJlZ2lzdGVyIGNsYXNzZXMgZm9yIHRo ZSB2ZWN0b3IgbW9kZXMuCi0JKHJzNjAwMF92c3hfdjRzZl9yZWdjbGFzcyk6IERlbGV0ZSwgbW92 ZSBpbnRvCi0JcnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3MuCi0JKHJzNjAwMF92c3hfdjJkZl9yZWdj bGFzcyk6IERpdHRvLgotCShyczYwMDBfdnN4X2RmX3JlZ2NsYXNzKTogRGl0dG8uCi0JKHJzNjAw MF92c3hfcmVnX2NsYXNzKTogUmVuYW1lIGZyb20gcnM2MDAwX3ZzeF9hbnlfcmVnY2xhc3MuCi0J KHJzNjAwMF9oYXJkX3JlZ25vX21vZGVfb2spOiBSZXdvcmsgVlNYLCBBbHRpdmVjIHJlZ2lzdGVy cy4KLQkocnM2MDAwX2luaXRfaGFyZF9yZWdub19tb2RlX29rKTogU2V0dXAgcnM2MDAwX3ZlY3Rv cl9yZWdfY2xhc3MuCi0JRHJvcCByczYwMDBfdnN4XypfcmVnY2xhc3MuICBCeSBkZWZhdWx0LCB1 c2UgYWxsIDY0IHJlZ2lzdGVycyBmb3IKLQlWNFNGIGFuZCBWMkRGLiAgVXNlIFZTWF9SRUdfQ0xB U1NfUCBtYWNybyBpbnN0ZWFkIG9mIHNlcGFyYXRlCi0JdGVzdHMuICBVcGRhdGUgLW1kZWJ1Zz1y ZWcgcHJpbnRvdXQuCi0JKHJzNjAwMF9wcmVmZXJyZWRfcmVsb2FkX2NsYXNzKTogSWYgVlNYLCBw cmVmZXIgRkxPQVRfUkVHUyBmb3IKLQlzY2FsYXIgZmxvYXRpbmcgcG9pbnQgYW5kIEFMVElWRUNf UkVHUyBmb3IgdGhlIHR5cGVzIHRoYXQgaGF2ZQotCWFsdGl2ZWMgaW5zdHJ1Y3Rpb25zLgotCShy czYwMDBfc2Vjb25kYXJ5X21lbW9yeV9uZWVkZWQpOiBJZiBWU1gsIHdlIGNhbiBjb3B5IGJldHdl ZW4gRlBSCi0JYW5kIEFsdGl2ZWMgcmVnaXN0ZXJzIHdpdGhvdXQgbmVlZGVkIG1lbW9yeS4KLQko cnM2MDAwX3NlY29uZGFyeV9yZWxvYWRfY2xhc3MpOiBEZWxldGUgQVRUUklCVVRFX1VOVVNFRCBm cm9tIGFuCi0JYXJndW1lbnQgdGhhdCBpcyB1c2VkLiAgSWYgVlNYLCB3ZSBjYW4gY29weSBiZXR3 ZWVuIEZQUiBhbmQKLQlBbHRpdmVjIHJlZ2lzdGVycyBkaXJlY3RseS4KLQotCSogY29uZmlnL3Jz NjAwMC9yczYwMDAuaCAoVlNYX01PVkVfTU9ERSk6IEFkZCBpbiB0aGUgQWx0aXZlYwotCXR5cGVz LgotCShyczYwMDBfdnN4X3Y0c2ZfcmVnY2xhc3MpOiBEZWxldGUuCi0JKHJzNjAwMF92c3hfdjJk Zl9yZWdjbGFzcyk6IERpdHRvLgotCShyczYwMDBfdnN4X2RmX3JlZ2NsYXNzKTogRGl0dG8uCi0J KHJzNjAwMF92c3hfcmVnX2NsYXNzKTogUmVuYW1lIGZyb20gcnM2MDAwX3ZzeF9hbnlfcmVnX2Ns YXNzLgotCShyczYwMDBfdmVjdG9yX3JlZ19jbGFzcyk6IE5ldyBnbG9iYWwgdG8gbWFwIG1hY2hp bmUgbW9kZSB0byB0aGUKLQlwcmVmZXJyZWQgcmVnaXN0ZXIgY2xhc3MgdG8gdXNlIGZvciB0aGF0 IG1vZGUuCi0JKFZTWF9SRUdfQ0xBU1NfUCk6IE5ldyBtYWNybyB0byByZXR1cm4gdHJ1ZSBmb3Ig YWxsIG9mIHRoZQotCXJlZ2lzdGVyIGNsYXNzZXMgVlNYIGl0ZW1zIGNhbiBiZSBpbi4KLQotMjAw OS0wMi0yNSAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4K LQotCSogZG9jL2ludm9rZS50ZXhpICgtbXZzeC12ZWN0b3ItbWVtb3J5KTogUmVuYW1lIGZyb20K LQktbXZzeC12ZWN0b3ItbW92ZS4KLQkoLW12c3gtdmVjdG9yLWxvZ2ljYWwpOiBEZWxldGUuCi0K LQkqIGNvbmZpZy9yczYwMDAvYWl4NTMuaCAoQVNNX0NQVV9TUEVDKTogQWRkIHBvd2VyNyBzdXBw b3J0LgotCSogY29uZmlnL3JzNjAwMC9haXg2MS5oIChBU01fQ1BVX1NQRUMpOiBEaXR0by4KLQot CSogY29uZmlnL3JzNjAwMC92ZWN0b3IubWQgKGFsbCBpbnNucyk7IENoYW5nZSBmcm9tIHVzaW5n Ci0JcnM2MDAwX3ZlY3Rvcl9pbmZvIHRvIFZFQ1RPUl9NRU1fKiBvciBWRUNUT1JfVU5JVF8qIG1h Y3Jvcy4KLQotCSogY29uZmlnL3JzNjAwMC9jb25zdHJhaW50cy5tZCAoIndpIiBjb25zdHJhaW50 KTogRGVsZXRlLgotCSgid2wiIGNvbnN0cmFpbnQpOiBEaXR0by4KLQkoIndzIiBjb25zdHJhaW50 KTogQ2hhbmdlIHRvIHVzZSByczYwMDBfdnN4X2RmX3JlZ2NsYXNzLgotCi0JKiBjb25maWcvcnM2 MDAwL3JzNjAwMC5vcHQgKC1tdnN4LXZlY3Rvci1tZW1vcnkpOiBSZW5hbWUgZnJvbQotCS1tdnN4 LXZlY3Rvci1tb3ZlLgotCSgtbXZzeC12ZWN0b3ItZmxvYXQpOiBNYWtlIGRlZmF1bHQgMCwgbm90 IDEuCi0JKC1tdnN4LXZlY3Rvci1kb3VibGUpOiBNYWtlIGRlZmF1bHQgLTEsIG5vdCAxLgotCSgt bXZzeC12ZWN0b3ItbG9naWNhbCk6IERlbGV0ZS4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAu YyAocnM2MDAwX3ZlY3Rvcl9pbmZvKTogRGVsZXRlLgotCShyczYwMDBfdmVjdG9yX3VuaXQpOiBO ZXcgZ2xvYmFsIGFycmF5IHRvIHNheSB3aGF0IHZlY3RvciB1bml0IGlzCi0JdXNlZCBmb3IgYXJp dGhtZXRpYyBpbnN0cnVjdGlvbnMuCi0JKHJzNjAwMF92ZWN0b3JfbW92ZSk6IE5ldyBnbG9iYWwg YXJyYXkgdG8gc2F5IHdoYXQgdmVjdG9yIHVuaXQgaXMKLQl1c2VkIGZvciBtZW1vcnkgcmVmZXJl bmNlcy4KLQkocnM2MDAwX3ZzeF9pbnRfcmVnY2xhc3MpOiBEZWxldGUuCi0JKHJzNjAwMF92c3hf bG9naWNhbF9yZWdjbGFzcyk6IERlbGV0ZS4KLQkocnM2MDAwX2hhcmRfcmVnbm9fbnJlZ3NfaW50 ZXJuYWwpOiBTd2l0Y2ggZnJvbSB1c2luZwotCXJzNjAwMF92ZWN0b3JfaW5mbyB0byByczYwMDBf dmVjdG9yX3VuaXQsIHJzNjAwMF92ZWN0b3JfbW92ZS4KLQkocnM2MDAwX2hhcmRfcmVnbm9fbW9k ZV9vayk6IERpdHRvLiAgUmVmb3JtYXQgY29kZSBzb21ld2hhdC4KLQkocnM2MDAwX2RlYnVnX3Zl Y3Rvcl91bml0KTogTmV3IGFycmF5IHRvIHByaW50IHZlY3RvciB1bml0Ci0JaW5mb3JtYXRpb24g aWYgLW1kZWJ1Zz1yZWcuCi0JKHJzNjAwMF9pbml0X2hhcmRfcmVnbm9fbW9kZV9vayk6IFJld29y ayB0byBiZXR0ZXIgZGVzY3JpYmUgVlNYCi0JYW5kIEFsdGl2ZWMgcmVnaXN0ZXIgc2V0cy4KLQko YnVpbHRpbl9tYXNrX2Zvcl9sb2FkKTogUmV0dXJuIDAgaWYgLW12c3guCi0JKHJzNjAwMF9sZWdp dGltaXplX3JlbG9hZF9hZGRyZXNzKTogQWxsb3cgQU5EIGluIFZTWCBhZGRyZXNzZXMuCi0JKHJz NjAwMF9sZWdpdGltYXRlX2FkZHJlc3MpOiBEaXR0by4KLQkoYmRlc2NfM2FyZyk6IERlbGV0ZSB2 c2VsdjJkaSBidWlsdGluLgotCShyczYwMDBfZW1pdF9taW5tYXgpOiBVc2UgcnM2MDAwX3ZlY3Rv cl91bml0IGluc3RlYWQgb2YKLQlyczYwMDBfdmVjdG9yX2luZm8uCi0JKHJzNjAwMF92ZWN0b3Jf bW9kZV9zdXBwb3J0ZWRfcCk6IERpdHRvLgotCi0JKiBjb25maWcvcnM2MDAwL3ZzeC5tZCAoYWxs IGluc25zKTogQ2hhbmdlIGZyb20gdXNpbmcKLQlyczYwMDBfdmVjdG9yX2luZm8gdG8gVkVDVE9S X01FTV8qIGFuZCBWRUNUT1JfVU5JVF8qIG1hY3Jvcy4KLQkoVlNyKTogQ2hhbmdlIHRvIHVzZSAi diIgcmVnaXN0ZXIgY2xhc3MsIG5vdCAid2kiLgotCSh2c3hfbW92PG1vZGU+KTogQ29tYmluZSBm bG9hdGluZyBhbmQgaW50ZWdlci4gIEFsbG93IHByZWZlcmVkCi0JcmVnaXN0ZXIgY2xhc3MsIGFu ZCB0aGVuIHVzZSA/d2EgZm9yIGFsbCBWU1ggcmVnaXN0ZXJzLgotCSh2c3hfZm1hZGRkZjQpOiBV c2Ugd3MgY29uc3RyYWludCwgbm90IGYuCi0JKHZzeF9mbXN1YmRmNCk6IERpdHRvLgotCSh2c3hf Zm5tYWRkZGY0KTogRGl0dG8uCi0JKHZzeF9mbm1zdWJkZjQpOiBEaXR0by4KLQkodnN4X2FuZDxt b2RlPjMpOiBVc2UgcHJlZmVycmVkIHJlZ2lzdGVyIGNsYXNzLCBhbmQgdGhlbiA/d2EgdG8KLQlj YXRjaCBhbGwgVlNYIHJlZ2lzdGVycy4KLQkodnN4X2lvcjxtb2RlPjMpOiBEaXR0by4KLQkodnN4 X3hvcjxtb2RlPjMpOiBEaXR0by4KLQkodnN4X29uZV9jbXBsPG1vZGU+Mik6IERpdHRvLgotCSh2 c3hfbm9yPG1vZGU+Myk6IERpdHRvLgotCSh2c3hfYW5kYzxtb2RlPjMpOiBEaXR0by4KLQotCSog Y29uZmlnL3JzNjAwMC9yczYwMDAuaCAocnM2MDAwX3ZlY3Rvcl9zdHJ1Y3QpOiBEZWxldGUuCi0J KHJzNjAwMF92ZWN0b3JfaW5mbyk6IERpdHRvLgotCShyczYwMDBfdmVjdG9yX3VuaXQpOiBOZXcg Z2xvYmFsIGFycmF5IHRvIHNheSB3aGV0aGVyIGEgbWFjaGluZQotCW1vZGUgYXJpdGhtZXRpYyBp cyBoYW5kbGVkIGJ5IGEgcGFydGljdWxhciB2ZWN0b3IgdW5pdC4KLQkocnM2MDAwX3ZlY3Rvcl9t ZW0pOiBOZXcgZ2xvYmFsIGFycmF5IHRvIHNheSB3aGljaCB2ZWN0b3IgdW5pdCB0bwotCXVzZSBm b3IgbW92ZXMuCi0JKFZFQ1RPUl9VTklUXyopOiBOZXcgbWFjcm9zIHRvIHNheSB3aGljaCB2ZWN0 b3IgdW5pdCB0byB1c2UuCi0JKFZFQ1RPUl9NRU1fKik6IERpdHRvLgotCShyczYwMDBfdnN4X2lu dF9yZWdjbGFzcyk6IERlbGV0ZS4KLQkocnM2MDAwX3ZzeF9sb2dpY2FsX3JlZ2NsYXNzKTogRGVs ZXRlLgotCi0JKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKGFsbCBpbnNucyk6IENoYW5nZSBm cm9tIHVzaW5nCi0JcnM2MDAwX3ZlY3Rvcl9pbmZvIHRvIFZFQ1RPUl9NRU1fKiBhbmQgVkVDVE9S X1VOSVRfKiBtYWNyb3MuCi0JKGJ1aWxkX3ZlY3Rvcl9tYXNrX2Zvcl9sb2FkKTogRGlzYWJsZSBp ZiBWU1guCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kIChhbGwgREYgaW5zbnMpOiBDaGFu Z2UgaG93IHRoZSBWU1gKLQlleGNsdXNpb24gaXMgZG9uZS4KLQotMjAwOS0wMi0yNCAgTWljaGFl bCBNZWlzc25lciAgPG1laXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotCSogY29uZmlnL3Jz NjAwMC9yczYwMDAuYyAocnM2MDAwX2RlYnVnX3JlZyk6IE5ldyBnbG9iYWwuCi0JKHJzNjAwMF9k ZWJ1Z19yZWdfcHJpbnQpOiBOZXcgZnVuY3Rpb24gdG8gcHJpbnQgcmVnaXN0ZXIgY2xhc3Nlcwot CWZvciBhIGdpdmVuIHJlZ2lzdGVyIHJhbmdlLgotCShyczYwMDBfaW5pdF9oYXJkX3JlZ25vX21v ZGVfb2spOiBJZiAtbWRlYnVnPXJlZywgcHJpbnQgb3V0IHRoZQotCXJlZ2lzdGVyIGNsYXNzLCBj YWxsIHVzZWQsIGZpeGVkIGluZm9ybWF0aW9uIGZvciBtb3N0IG9mIHRoZQotCXJlZ2lzdGVycy4g IFByaW50IHRoZSB2c3ggcmVnaXN0ZXIgY2xhc3MgdmFyaWFibGVzLgotCShyczYwMDBfb3ZlcnJp ZGVfb3B0aW9ucyk6IEFkZCAtbWRlYnVnPXJlZyBzdXBwb3J0LgotCi0JKiBjb25maWcvcnM2MDAw L3JzNjAwMC5oIChyczYwMDBfZGVidWdfcmVnKTogTmV3IGdsb2JhbC4KLQkoVEFSR0VUX0RFQlVH X1JFRyk6IE5ldyB0YXJnZXQgc3dpdGNoIGZvciAtbWRlYnVnPXJlZy4KLQotMjAwOS0wMi0yMyAg TWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotCSogcmVs b2FkLmMgKHN1YnN0X3JlbG9hZHMpOiBDaGFuZ2UgZ2NjX2Fzc2VydCBpbnRvIGEgZmF0YWxfaW5z bi4KLQotCSogY29uZmlnL3JzNjAwMC92ZWN0b3IubWQgKFZFQ19JKTogUmVvcmRlciBpdGVyYXRv ci4KLQkoVkVDX0wpOiBEaXR0by4KLQkoVkVDX0MpOiBOZXcgaXRlcmF0b3IgZmllbGQgZm9yIHZl Y3RvciBjb21wYXJpc29ucy4KLQkoVkVDX2Jhc2UpOiBOZXcgbW9kZSBhdHRyaWJ1dGUgdGhhdCBt YXBlcyB0aGUgdmVjdG9yIHR5cGUgdG8gdGhlCi0JYmFzZSB0eXBlLgotCShhbGwgaW5zbnMpOiBT d2l0Y2ggdG8gdXNlIHJzNjAwMF92ZWN0b3JfaW5mbyB0byBkZXRlcm1pbmUgd2hldGhlcgotCXRo ZSBpbnNuIGlzIHZhbGlkIGluc3RlYWQgb2YgdXNpbmcgVEFSR0VUX1ZTWCBvciBUQVJHRVRfQUxU SVZFQy4KLQkodmNvbmQ8bW9kZT4pOiBNb3ZlIGhlcmUgZnJvbSBhbHRpdmVjLCBhbmQgYWRkIFZT WCBzdXBwb3J0LgotCSh2Y29uZHU8bW9kZT4pOiBEaXR0by4KLQkodmVjdG9yX2VxPG1vZGU+KTog TmV3IGV4cGFuZGVyIGZvciB2ZWN0b3IgY29tcGFyaXNvbnMuCi0JKHZlY3Rvcl9ndDxtb2RlPik6 IERpdHRvLgotCSh2ZWN0b3JfZ2U8bW9kZT4pOiBEaXR0by4KLQkodmVjdG9yX2d0dTxtb2RlPik6 IERpdHRvLgotCSh2ZWN0b3JfZ2V1PG1vZGU+KTogRGl0dG8uCi0JKHZlY3Rvcl92c2VsPG1vZGU+ KTogTmV3IGV4cGFuZGVyIGZvciB2ZWN0b3Igc2VsZWN0LgotCSh2ZWNfaW5pdDxtb2RlPik6IE1v dmUgZXhwYW5kZXIgZnJvbSBhbHRpdmVjLm1kIGFuZCBnZW5lcmFsaXplIGZvcgotCVZTWC4KLQko dmVjX3NldDxtb2RlPik6IERpdHRvLgotCSh2ZWNfZXh0cmFjdDxtb2RlPik6IERpdHRvLgotCSh2 ZWNfaW50ZXJsZWF2ZV9oaWdodjRzZik6IERpdHRvLgotCSh2ZWNfaW50ZXJsZWF2ZV9sb3d2NHNm KTogRGl0dG8uCi0JKHZlY19pbnRlcmxlYXZlX2hpZ2h2MmRmKTogTmV3IGV4cGFuZGVyIGZvciBW U1guCi0JKHZlY19pbnRlcmxlYXZlX2xvd3YyZGYpOiBEaXR0by4KLQotCSogY29uZmlnL3JzNjAw MC9jb250cmFpbnRzLm1kICh0b3BsZXZlbCk6IEFkZCBjb21tZW50IG9uIHRoZQotCWF2YWlsYWJs ZSBjb25zdHJhaW50IGxldHRlcnMuCi0JKCJ3IiBjb25zdHJhaW50KTogRGVsZXRlLCBpbiBmYXZv ciBvZiB1c2luZyAidyIgYXMgYSB0d28gbGV0dGVyCi0JY29uc3RyYWludC4KLQkoIndkIiBjb25z dHJhaW50KTogTmV3IFZTWCBjb25zdHJhaW50LgotCSgid2YiIGNvbnN0cmFpbnQpOiBEaXR0by4K LQkoIndpIiBjb25zdHJhaW50KTogRGl0dG8uCi0JKCJ3bCIgY29uc3RyYWludCk6IERpdHRvLgot CSgid3MiIGNvbnN0cmFpbnQpOiBEaXR0by4KLQkoIndhIiBjb25zdHJhaW50KTogRGl0dG8uCi0K LQkqIGNvbmZpZy9yczYwMDAvcHJlZGljYXRlcy5tZCAoaW5kZXhlZF9vcl9pbmRpcmVjdF9vcGVy YW5kKToKLQlEaXNhYmxlIGFsdGl2ZWMgc3VwcG9ydCBhbGxvd2luZyBBTkQgb2YgbWVtb3J5IGFk ZHJlc3MgaWYgLW12c3guCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm9wdCAoLW12c3gtdmVj dG9yLW1vdmUpOiBOZXcgc3dpdGNoZXMgdG8KLQlhbGxvdyBmaW5lciBjb250cm9sIG92ZXIgd2hl dGhlciBWU1gsIEFsdGl2ZWMsIG9yIHRoZSB0cmFkaXRpb25hbAotCWluc3RydWN0aW9ucyBhcmUg dXNlZC4KLQkoLW12c3gtc2NhbGFyLW1vdmUpOiBEaXR0by4KLQkoLW12c3gtdmVjdG9yLWZsb2F0 KTogRGl0dG8uCi0JKC1tdnN4LXZlY3Rvci1kb3VibGUpOiBEaXR0by4KLQkoLW12c3gtdmVjdG9y LWxvZ2ljYWwpOiBEaXR0by4KLQkoLW12c3gtc2NhbGFyLWRvdWJsZSk6IERpdHRvLgotCi0JKiBj b25maWcvcnM2MDAwL3JzNjAwMC5jIChyczYwMDBfdmVjdG9yX2luZm8pOiBOZXcgZ2xvYmFsIHRv IGhvbGQKLQl2YXJpb3VzIGluZm9ybWF0aW9uIGFib3V0IHdoaWNoIHZlY3RvciBpbnN0cnVjdGlv biBzZXQgdG8gdXNlLCBhbmQKLQl0aGUgYWxpZ25tZW50IG9mIGRhdGEuCi0JKHJzNjAwMF92c3hf djRzZl9yZWdjbGFzcyk6IE5ldyBnbG9iYWwgdG8gaG9sZCBWU1ggcmVnaXN0ZXIKLQljbGFzcy4K LQkocnM2MDAwX3ZzeF92MmRmX3JlZ2NsYXNzKTogRGl0dG8uCi0JKHJzNjAwMF92c3hfZGZfcmVn Y2xhc3MpOiBEaXR0by4KLQkocnM2MDAwX3ZzeF9pbnRfcmVnY2xhc3MpOiBEaXR0by4KLQkocnM2 MDAwX3ZzeF9sb2dpY2FsX3JlZ2NsYXNzKTogRGl0dG8uCi0JKHJzNjAwMF92c3hfYW55X3JlZ2Ns YXNzKTogRGl0dG8uCi0JKHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzX2ludGVybmFsKTogUmV3cml0 ZSB0byBmaW5lIHR1bmUKLQlWU1gvQWx0aXZlYyByZWdpc3RlciBzZWxlY3Rpb24uCi0JKHJzNjAw MF9oYXJkX3JlZ25vX21vZGVfb2spOiBEaXR0by4KLQkocnM2MDAwX2luaXRfaGFyZF9yZWdub19t b2RlX29rKTogU2V0IHVwIHRoZSB2ZWN0b3IgaW5mb3JtYXRpb24KLQlnbG9iYWxzIGJhc2VkIG9u IHRoZSAtbXZzeC0qIHN3aXRjaGVzLgotCShyczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyk6IEFkZCB3 YXJuaW5ncyBmb3IgLW12c3ggYW5kCi0JLW1saXR0bGUtZW5kaWFuIG9yIC1tYXZvaWQtaW5kZXhl ZC1hZGRyZXNzZXMuCi0JKHJzNjAwMF9idWlsdGluX3ZlY19wZXJtKTogQWRkIFYyREYvVjJESSBz dXBwb3J0LgotCShyczYwMDBfZXhwYW5kX3ZlY3Rvcl9pbml0KTogQWRkIFYyREYgc3VwcG9ydC4K LQkocnM2MDAwX2V4cGFuZF92ZWN0b3Jfc2V0KTogRGl0dG8uCi0JKHJzNjAwMF9leHBhbmRfdmVj dG9yX2V4dHJhY3QpOiBEaXR0by4KLQkoYXZvaWRpbmdfaW5kZXhlZF9hZGRyZXNzX3ApOiBBZGQg VlNYIHN1cHBvcnQuCi0JKHJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3MpOiBEaXR0by4KLQkocnM2 MDAwX2xlZ2l0aW1pemVfcmVsb2FkX2FkZHJlc3MpOiBEaXR0by4KLQkocnM2MDAwX2xlZ2l0aW1p dGVfYWRkcmVzcyk6IERpdHRvLgotCShVU0VfQUxUSVZFQ19GT1JfQVJHX1ApOiBEaXR0by4KLQko ZnVuY3Rpb25fYXJnX2JvdW5kYXJ5KTogRGl0dG8uCi0JKGZ1bmN0aW9uX2FyZ19hZHZhbmNlKTog RGl0dG8uCi0JKGZ1bmN0aW9uX2FyZyk6IERpdHRvLgotCShnZXRfdmVjX2NtcF9pbnNuKTogRGVs ZXRlLgotCShyczYwMDBfZW1pdF92ZWN0b3JfdnN4KTogTmV3IGZ1bmN0aW9uIGZvciBWU1ggdmVj dG9yIGNvbXBhcmUuCi0JKHJzNjAwMF9lbWl0X3ZlY3Rvcl9hbHRpdmVjKTogTmV3IGZ1bmN0aW9u IGZvciBBbHRpdmVjIHZlY3RvcgotCWNvbXBhcmUuCi0JKGdldF92c2VsX2luc24pOiBEZWxldGUu Ci0JKHJzNjAwMF9lbWl0X3ZlY3Rvcl9zZWxlY3QpOiBEaXR0by4KLQkocnM2MDAwX292ZXJyaWRl X29wdGlvbnMpOiBJZiAtbXZzeCwgdHVybiBvbiAtbWFsdGl2ZWMgYnkKLQlkZWZhdWx0LgotCShy czYwMDBfYnVpbHRpbl92ZWNfcGVybSk6IEFkZCBzdXBwb3J0IGZvciBWMkRJLCBWMkRGIG1vZGVz LgotCShiZGVzY18zYXJnKTogQWRkIHZlY3RvciBzZWxlY3QgYW5kIHZlY3RvciBwZXJtdXRlIGJ1 aWx0aW5zIGZvcgotCVYyREkgYW5kIFYyREYgdHlwZXMuICBTd2l0Y2ggdG8gdXNpbmcgdGhlIHZl Y3Rvcl8qIGV4cGFuZGVyCi0JaW5zdGVhZCBvZiBhbHRpdmVjXyouCi0JKHJzNjAwMF9pbml0X2J1 aWx0aW5zKTogSW5pdGlhbGl6ZSBuZXcgdHlwZSBub2RlcyBmb3IgVlNYLgotCUluaXRpYWxpemUg X192ZWN0b3IgZG91YmxlIHR5cGUuICBJbml0aWFsaXplIGNvbW1vbiBidWlsdGlucyBmb3IKLQlW U1guCi0JKHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb21wYXJlKTogQWRkIFZTWCBzdXBwb3J0LgotCShy czYwMDBfdmVjdG9yX21vZGVfc3VwcG9ydGVkX3ApOiBJZiBWU1gsIHN1cHBvcnQgVjJERi4KLQot CSogY29uZmlnL3JzNjAwMC92c3gubWQgKFZTWF9JKTogTmV3IGl0ZXJhdG9yIGZvciBpbnRlZ2Vy IG1vZGVzLgotCShWU1hfTCk6IFJlb3JkZXIgaXRlcmF0b3IuCi0JKGx4Xzxtb2RlPl92c3gpOiBE ZWxldGUsIG5vIGxvbmdlciBuZWVkZWQuCi0JKHN0eF88bW9kZT5fdnN4KTogRGl0dG8uCi0JKGFs bCBpbnNucyk6IENoYW5nZSB0byB1c2UgdnN4XzxuYW1lPiBpbnN0ZWFkIG9mIDxuYW1lPl92c3gg Zm9yCi0JY29uc2lzdGFuY3kgd2l0aCB0aGUgb3RoZXIgcnM2MDAwIG1kIGZpbGVzLiAgQ2hhbmdl IHRvIHVzZSB0aGUgbmV3Ci0JInciIGNvbnN0cmFpbnRzIGZvciBhbGwgaW5zbnMuICBDaGFuZ2Ug dG8gdXNlIHJzNjAwMF92ZWN0b3JfaW5mbwotCWRlY2lkaW5nIHdoZXRoZXIgdG8gZXhlY3V0ZSB0 aGUgaW5zdHJ1Y3Rpb24gb3Igbm90LgotCSh2c3hfbW92PG1vZGU+KTogUmV3cml0ZSBjb25zdHJh aW50cyBzbyBHUFIgcmVnaXN0ZXJzIGFyZSBub3QKLQljaG9zZW4gYXMgcmVsb2FkIHRhcmdldHMu ICBTcGxpdCBpbnRlZ2VyIHZlY3RvciBsb2FkcyBpbnRvIGEKLQlzZXBhcmF0ZSBpbnNuLCBhbmQg ZmF2b3IgdGhlIGFsdGl2ZWMgcmVnaXN0ZXIgb3ZlciB0aGUgVlNYIGZwCi0JcmVnaXN0ZXJzLgot CSh2c3hfZm1hZGQ8bW9kZT40KTogVXNlIDxtb2RlPiwgbm90IDx0eXBlPi4KLQkodnN4X2Ztc3Vi PG1vZGU+NCk6IERpdHRvLgotCSh2c3hfZXE8bW9kZT4pOiBOZXcgaW5zbnMgZm9yIFYyREYvVjRT RiB2ZWN0b3IgY29tcGFyZS4KLQkodnN4X2d0PG1vZGU+KTogRGl0dG8uCi0JKHZzeF9nZTxtb2Rl Pik6IERpdHRvLgotCSh2c3hfdnNlbDxtb2RlPik6IE5ldyBpbnNucyBmb3IgVlNYIHZlY3RvciBz ZWxlY3QuCi0JKHZzeF94eHBlcm1kaSk6IE5ldyBpbnNuIGZvciBERiBwZXJtdXRlLgotCSh2c3hf c3BsYXR2MmRmKTogTmV3IGluc24gZm9yIERGIHNwbGF0IHN1cHBvcnQuCi0JKHZzeF94eG1yZ2x3 KTogTmV3IGluc25zIGZvciBERiBpbnRlcmxlYXZlLgotCSh2c3hfeHhtcmdodyk6IERpdHRvLgot Ci0JKiBjb25maWcvcnM2MDAwL3JzMDAwLmggKGVudW0gcnM2MDAwX3ZlY3Rvcik6IE5ldyBlbnVt IHRvCi0JZGVzY3JpYmUgd2hpY2ggdmVjdG9yIHVuaXQgaXMgYmVpbmcgdXNlZC4KLQkoc3RydWN0 IHJzNjAwMF92ZWN0b3Jfc3RydWN0KTogTmV3IHN0cnVjdCB0byBkZXNjcmliZSB0aGUgdmFyaW91 cwotCWFzcGVjdHMgYWJvdXQgdGhlIGN1cnJlbnQgdmVjdG9yIGluc3RydWN0aW9uIHNldC4KLQko cnM2MDAwX3ZlY3Rvcl9pbmZvKTogTmV3IGdsb2JhbCB0byBkZXNjcmliZSB0aGUgY3VycmVudCB2 ZWN0b3IKLQlpbnN0cnVjdGlvbiBzZXQuCi0JKFNMT1dfVU5BTElHTkVEX0FDQ0VTUyk6IElmIHJz NjAwMF92ZWN0b3JfaW5mbyBoYXMgYWxpZ25tZW50Ci0JaW5mb3JtYXRpb24gZm9yIGEgdHlwZSwg dXNlIHRoYXQuCi0JKFZTWF9WRUNUT1JfTU9WRV9NT0RFKTogTmV3IG1hY3JvIGZvciBhbGwgVlNY IHZlY3RvcnMgdGhhdCBhcmUKLQlzdXBwb3J0ZWQgYnkgbW92ZSBpbnN0cnVjdGlvbnMuCi0JKFZT WF9NT1ZFX01PREUpOiBOZXcgbWFjcm8gZm9yIGFsbCBWU1ggbW92ZXMuCi0JKGVudW0gcnM2MDAw X2J1aWx0aW5zKTogQWRkIFYyREkvVjJERiB2ZWN0b3Igc2VsZWN0IGFuZCBwZXJtdXRlCi0JYnVp bHRpbnMuCi0JKHJzNjAwMF9idWlsdGluX3R5cGVfaW5kZXgpOiBBZGQgbmV3IHR5cGVzIGZvciBW U1ggdmVjdG9ycy4KLQkocnM2MDAwX3ZzeF92NHNmX3JlZ2NsYXNzKTogTmV3IGdsb2JhbCB0byBo b2xkIFZTWCByZWdpc3RlcgotCWNsYXNzLgotCShyczYwMDBfdnN4X3YyZGZfcmVnY2xhc3MpOiBE aXR0by4KLQkocnM2MDAwX3ZzeF9kZl9yZWdjbGFzcyk6IERpdHRvLgotCShyczYwMDBfdnN4X2lu dF9yZWdjbGFzcyk6IERpdHRvLgotCShyczYwMDBfdnN4X2xvZ2ljYWxfcmVnY2xhc3MpOiBEaXR0 by4KLQkocnM2MDAwX3ZzeF9hbnlfcmVnY2xhc3MpOiBEaXR0by4KLQotCSogY29uZmlnL3JzNjAw MC9hbHRpdmVjLm1kIChVTlNQRUNfVkNNUCopOiBEZWxldGUgdW5zcGVjCi0JY29uc3RhbnRzIG5v IGxvbmdlciBuZWVkZWQuCi0JKFVOU1BFQ19WU0VMKik6IERpdHRvLgotCShhbHRpdmVjX2x2eF88 bW9kZT4pOiBEZWxldGUsIG5vIGxvbmdlciBuZWVkZWQuCi0JKGFsdGl2ZWNfc3R2eF88bW9kZT4p OiBEaXR0by4KLQkoYWxsIGluc25zKTogUmV3cml0ZSB0byBiZSBjb25zaXN0YW50IG9mIGFsdGl2 ZWNfPGluc24+LiAgU3dpdGNoCi0JdG8gdXNlIHJzNjAwMF92ZWN0b3JfaW5mbyB0byBkZXRlcm1p bmUgd2hldGhlciB0byBpc3N1ZSB0byB0aGUKLQlhbHRpdmVjIGZvcm0gb2YgdGhlIGluc3RydWN0 aW9ucy4KLQkobW92PG1vZGU+X2FsdGl2ZWMpOiBSZXdyaXRlIGNvbnN0cmFpbnRzIHNvIEdQUiBy ZWdpc3RlcnMgYXJlIG5vdAotCWNob3NlbiBhcyByZWxvYWQgdGFyZ2V0cy4KLQkoYWx0aXZlY19l cTxtb2RlPik6IFJld3JpdGUgdmVjdG9yIGNvbmRpdGlvbmFscywgcGVybXV0ZSwgc2VsZWN0Ci0J dG8gdXNlIGl0ZXJhdG9ycywgYW5kIHdvcmsgd2l0aCBWU1guCi0JKGFsdGl2ZWNfZ3Q8bW9kZT4p OiBEaXR0by4KLQkoYWx0aXZlY19nZTxtb2RlPik6IERpdHRvLgotCShhbHRpdmVjX2d0dTxtb2Rl Pik6IERpdHRvLgotCShhbHRpdmVjX2dldTxtb2RlPik6IERpdHRvLgotCShhbHRpdmVjX3ZzZWw8 bW9kZT4pOiBEaXR0by4KLQkoYWx0aXZlY192cGVybV88bW9kZT4pOiBEaXR0by4KLQkoYWx0aXZl Y192Y21wKik6IFJld3JpdGUgdG8gbm90IHVzZSB1bnNwZWNzIGFueSBtb3JlLCBhbmQgdXNlIG1v ZGUKLQlpdGVyYXRvcnMsIGFkZCBWU1ggc3VwcG9ydC4KLQkodmNvbmR2NHNpKTogTW92ZSB0byB2 ZWN0b3IubWQuCi0JKHZjb25kdXY0c2kpOiBEaXR0by4KLQkodmNvbmR2OGhpKTogRGl0dG8uCi0J KHZjb25kdXY4aGkpOiBEaXR0by4KLQkodmNvbmR2MTZxaSk6IERpdHRvLgotCSh2Y29uZHV2MTZx aSk6IERpdHRvLgotCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAobmVnZGYyX2Zwcik6IEFk ZCBzdXBwb3J0IGZvcgotCS1tdnN4LXNjYWxhci1kb3VibGUuCi0JKGFic2RmMl9mcHIpOiBEaXR0 by4KLQkobmFic2RmMl9mcHIpOiBEaXR0by4KLQkoYWRkZGYzX2Zwcik6IERpdHRvLgotCShzdWJk ZjNfZnByKTogRGl0dG8uCi0JKG11bGRmM19mcHIpOiBEaXR0by4KLQkoZGl2ZGYzX2Zwcik6IERp dHRvLgotCShERiBtdWx0aXBseS9hZGQgcGF0dGVybnMpOiBEaXR0by4KLQkoc3FydGRmMik6IERp dHRvLgotCShtb3ZkZl9oYXJkZmxvYXQzMik6IEFkZCBWU1ggc3VwcG9ydC4KLQkobW92ZGZfaGFy ZGZsb2F0NjRfbWZwZ3ByKTogRGl0dG8uCi0JKG1vdmRmX2hhcmRmbG9hdDY0KTogRGl0dG8uCi0K LQkqIGRvYy9pbnZva2UudGV4aSAoLW12c3gtKik6IEFkZCBuZXcgdnN4IHN3aXRjaGVzLgotCi0y MDA5LTAyLTEzICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAbGludXgudm5ldC5pYm0uY29t PgotCi0JKiBjb25maWcuaW46IFVwZGF0ZSB0d28gY29tbWVudHMuCi0KLQkqIGNvbmZpZy9yczYw MDAvdmVjdG9yLm1kIChWRUNfTCk6IEFkZCBWMkRJIHR5cGUuCi0JKG1vdmU8bW9kZT4pOiBVc2Ug VkVDX0wgdG8gZ2V0IGFsbCB2ZWN0b3IgdHlwZXMsIGFuZCBkZWxldGUgdGhlCi0Jc2VwYXJhdGUg aW50ZWdlciBtb2RlIG1vdmUgZGVmaW5pdGlvbnMuCi0JKHZlY3Rvcl9sb2FkXzxtb2RlPik6IERp dHRvLgotCSh2ZWN0b3Jfc3RvcmVfPG1vZGU+KTogRGl0dG8uCi0JKHZlY3RvciBtb3ZlIHNwbGl0 dGVycyk6IE1vdmUgR1BSIHJlZ2lzdGVyIHNwbGl0dGVycyBoZXJlIGZyb20KLQlhbHRpdmVjLm1k LgotCi0JKiBjb25maWcvcnM2MDAwL2NvbnN0cmFpbnRzLm1kICgiaiIpOiBBZGQgImoiIGNvbnN0 cmFpbnQgdG8gbWF0Y2gKLQl0aGUgbW9kZSdzIDAgdmFsdWUuCi0KLQkqIGNvbmZpZy9yczYwMDAv cnM2MDAwLmMgKHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzX2ludGVybmFsKTogT25seQotCWNvdW50 IHRoZSBGUFJzIGFzIGJlaW5nIDEyOCBiaXRzIGlmIHRoZSBtb2RlIGlzIGEgVlNYIHR5cGUuCi0J KHJzNjAwMF9oYXJkX3JlZ25vX21vZGVfb2spOiBEaXR0by4KLQkocnM2MDAwX2VtaXRfbWlubWF4 KTogVXNlIG5ldyBWU1hfTU9ERSBpbnN0ZWFkIG9mIHNlcGFyYXRlIHRlc3RzLgotCi0JKiBjb25m aWcvcnM2MDAwL3ZzeC5tZCAoVlNYX0wpOiBBZGQgVjJESW1vZGUuCi0JKFZTbSk6IFJlbmFtZSBm cm9tIFZTWF9tZW0sIGFkZCBtb2RlcyBmb3IgaW50ZWdlciB2ZWN0b3JzLiAgQ2hhbmdlCi0JYWxs IHVzZXMuCi0JKFZTcyk6IFJlbmFtZSBmcm9tIFZTWF9vcCwgYWRkIG1vZGVzIGZvciBpbnRlZ2Vy IHZlY3RvcnMuICBDaGFuZ2UKLQlhbGwgdXNlcy4KLQkoVlNyKTogTmV3IG1vZGUgYWRkcmVzcyB0 byBnaXZlIHRoZSByZWdpc3RlciBjbGFzcy4KLQkobW92PG1vZGU+X3ZzeCk6IFVzZSBWU3IgdG8g Z2V0IHRoZSByZWdpc3RlciBwcmVmZXJlbmNlcy4gIEFkZAotCWV4cGxpY2l0IDAgb3B0aW9uLgot CShzY2FsYXIgZG91YmxlIHByZWNpc2lvbiBwYXR0ZXJucyk6IERvIG5vdCB1c2UgdiByZWdpc3Rl cgotCWNvbnN0cmFpbnQgcmlnaHQgbm93LgotCShsb2dpY2FsIHBhdHRlcm5zKTogVXNlIFZTciBt b2RlIGF0dHJpYnV0ZSBmb3IgcmVnaXN0ZXIKLQlwcmVmZXJlbmNlcy4KLQotCSogY29uZmlnL3Jz NjAwMC9yczYwMDAuaCAoVlNYX1NDQUxBUl9NT0RFKTogTmV3IG1hY3JvLgotCShWU1hfTU9ERSk6 IERpdHRvLgotCi0JKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKFZNKTogTmV3IG1vZGUgaXRl cmF0b3IgZm9yIG1lbW9yeQotCW9wZXJhdGlvbnMuICBBZGQgVjJESSBtb2RlLgotCShtb3ZfYWx0 aXZlY188bW9kZT4pOiBEaXNhYmxlIGlmIC1tdnN4IGZvciBhbGwgbW9kZXMsIG5vdCBqdXN0Ci0J VjRTRm1vZGUuCi0JKGdwciBtb3ZlIHNwbGl0dGVycyk6IE1vdmUgdG8gdmVjdG9yLm1kLgotCShh bmQ8bW9kZT4zX2FsdGl2ZWMpOiBVc2UgVk0gbW9kZSBpdGVyYXRvciwgbm90IFYuCi0JKGlvcjxt b2RlPjNfYWx0aXZlYyk6IERpdHRvLgotCSh4b3I8bW9kZT4zX2FsdGl2ZWMpOiBEaXR0by4KLQko b25lX2NtcGw8bW9kZT4yX2FsdGl2ZWMpOiBEaXR0by4KLQkobm9yPG1vZGU+M19hbHRpdmVjKTog RGl0dG8uCi0JKGFuZGM8bW9kZT4zX2FsdGl2ZWMpOiBEaXR0by4KLQotCSogY29uZmlnL3JzNjAw MC9yczYwMDAubWQgKG1vdmRmX2hhcmRmbG9hdCk6IEJhY2sgb3V0IHZzeCBjaGFuZ2VzLgotCSht b3ZkZl9oYXJkZmxvYXQ2NF92c3gpOiBEZWxldGUuCi0KLTIwMDktMDItMTIgIE1pY2hhZWwgTWVp c3NuZXIgIDxtZWlzc25lckBsaW51eC52bmV0LmlibS5jb20+Ci0KLQkqIGNvbmZpZy9yczYwMDAv dmVjdG9yLm1kOiBOZXcgZmlsZSB0byBhYnN0cmFjdCBvdXQgdGhlIGV4cGFuZGVycwotCWZvciB2 ZWN0b3Igb3BlcmF0aW9ucyBmcm9tIGFsaXR2ZWMubWQuCi0KLQkqIGNvbmZpZy9yczYwMDAvcHJl ZGljYXRlcy5tZCAodnN4X3JlZ2lzdGVyX29wZXJhbmQpOiBOZXcKLQlwcmVkaWNhdGUgdG8gbWF0 Y2ggVlNYIHJlZ2lzdGVycy4KLQkodmZsb2F0X29wZXJhbmQpOiBOZXcgcHJlZGljYXRlIHRvIG1h dGNoIHJlZ2lzdGVycyB1c2VkIGZvciB2ZWN0b3IKLQlmbG9hdGluZyBwb2ludCBvcGVyYXRpb25z LgotCSh2aW50X29wZXJhbmQpOiBOZXcgcHJlZGljYXRlIHRvIG1hdGNoIHJlZ2lzdGVycyB1c2Vk IGZvciB2ZWN0b3IKLQlpbnRlZ2VyIG9wZXJhdGlvbnMuCi0JKHZsb2dpY2FsX29wZXJhbmQpOiBO ZXcgcHJlZGljYXRlIHRvIG1hdGNoIHJlZ2lzdGVycyB1c2VkIGZvcgotCXZlY3RvciBsb2dpY2Fs IG9wZXJhdGlvbnMuCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLXByb3Rvcy5oIChyczYwMDBf aGFyZF9yZWdub19ucmVncyk6IENoYW5nZQotCWZyb20gYSBmdW5jdGlvbiB0byBhbiBhcnJheS4K LQkocnM2MDAwX2NsYXNzX21heF9ucmVncyk6IEFkZCBkZWNsYXJhdGlvbi4KLQotCSogY29uZmln L3JzNjAwMC90LXJzNjAwMCAoTURfSU5DTFVERVMpOiBEZWZpbmUgdG8gaW5jbHVkZSBhbGwgb2YK LQl0aGUgLm1kIGZpbGVzIGluY2x1ZGVkIGJ5IHJzNjAwMC5tZC4KLQotCSogY29uZmlnL3JzNjAw MC9yczYwMDAuYyAocnM2MDAwX2NsYXNzX21heF9ucmVncyk6IE5ldyBnbG9iYWwKLQlhcnJheSB0 byBwcmUtY2FsY3VsYXRlIENMQVNTX01BWF9OUkVHUy4KLQkocnM2MDAwX2hhcmRfcmVnbm9fbnJl Z3MpOiBDaGFuZ2UgZnJvbSBhIGZ1bmN0aW9uIHRvIGFuIGFycmF5IHRvCi0JcHJlLWNhbGN1bGF0 ZSBIQVJEX1JFR05PX05SRUdTLgotCShyczYwMDBfaGFyZF9yZWdub19ucmVnc19pbnRlcm5hbCk6 IFJlbmFtZSBmcm9tCi0JcnM2MDAwX2hhcmRfcmVnbm9fbnJlZ3MgYW5kIGFkZCBWU1ggc3VwcG9y dC4KLQkocnM2MDAwX2hhcmRfcmVnbm9fbW9kZV9vayk6IEFkZCBWU1ggc3VwcG9ydCwgYW5kIHN3 aXRjaCB0byB1c2UKLQlsb29rdXAgdGFibGUgcnM2MDAwX2hhcmRfcmVnbm9fbnJlZ3MuCi0JKHJz NjAwMF9pbml0X2hhcmRfcmVnbm9fbW9kZV9vayk6IEFkZCBpbml0aWFsaXphdGlvbiBvZgotCXJz NjAwMF9oYXJkX3JlZ25vX25yZWdzLCBhbmQgcnM2MDAwX2NsYXNzX21heF9ucmVncyBnbG9iYWwK LQlhcnJheXMuCi0JKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKTogQWRkIHNvbWUgd2FybmluZ3Mg Zm9yIHRoaW5ncyB0aGF0IGFyZQotCWluY29tcGF0aWJsZSB3aXRoIC1tdnN4LgotCShyczYwMDBf bGVnaXRpbWF0ZV9vZmZzZXRfYWRkcmVzc19wKTogQWRkIFYyREZtb2RlLgotCShyczYwMDBfY29u ZGl0aW9uYWxfcmVnaXN0ZXJfdXNhZ2UpOiBFbmFibGUgYWx0aXZlYyByZWdpc3RlcnMgaWYKLQkt bXZzeC4KLQkoYmRlc2NfMmFyZyk6IENoYW5nZSB0aGUgbmFtZSBvZiB0aGUgbm9yIHBhdHRlcm4u Ci0JKGFsdGl2ZWNfZXhwYW5kX2xkX2J1aWx0aW4pOiBDaGFuZ2UgdGhlIG5hbWVzIG9mIHRoZSBs b2FkCi0JcGF0dGVybnMgdG8gYmUgdGhlIGdlbmVyaWMgdmVjdG9yIGxvYWRzLgotCShhbHRpdmVj X2V4cGFuZF9zdF9idWlsdGluKTogQ2hhbmdlIHRoZSBuYW1lcyBvZiB0aGUgc3RvcmUKLQlwYXR0 ZXJucyB0byBiZSB0aGUgZ2VuZXJpYyB2ZWN0b3Igc3RvcmVzLgotCShwcmludF9vcGVyYW5kKTog QWRkICd4JyB0byBwcmludCBvdXQgYSBWU1ggcmVnaXN0ZXIgcHJvcGVybHkuCi0JKHJzNjAwMF9l bWl0X21pbm1heCk6IERpcmVjdGx5IGVtaXQgdGhlIG1pbi9tYXggcGF0dGVybnMgZm9yIFZTWAot CWFuZCBBbHRpdmVjLgotCi0JKiBjb25maWcvcnM2MDAwL3ZzeC5tZDogTmV3IGZpbGUgdG8gYWRk IGFsbCBvZiB0aGUgVlNYIHNwZWNpZmljCi0JaW5zdHJ1Y3Rpb25zLiAgQWRkIHN1cHBvcnQgZm9y IGxvYWQsIHN0b3JlLCBtb3ZlLCBhZGQsIHN1YnRyYWN0LAotCW11bHRpcGx5LCBtdWx0aXBseS9h ZGQsIGRpdmlkZSwgbmVnYXRlLCBhYnNvbHV0ZSB2YWx1ZSwgbWF4aW11bSwKLQltaW5pbXVtLCBz cXJ0LCBhbmQsIG9yLCB4b3IsIGFuZCBjb21wbGVudCwgeG9yLCBvbmUncyBjb21wbGVtZW50LAot CWFuZCBub3IgaW5zdHJ1Y3Rpb25zLgotCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChVTklU U19QRVJfVlNYX1dPUkQpOiBEZWZpbmUuCi0JKFZTWF9SRUdOT19QKTogTmV3IG1hY3JvIGZvciBW U1ggcmVnaXN0ZXJzLgotCShWRkxPQVRfUkVHTk8pOiBOZXcgbWFjcm8gZm9yIHZlY3RvciBmbG9h dGluZyBwb2ludCByZWdpc3RlcnMuCi0JKFZJTlRfUkVHTk8pOiBOZXcgbWFjcm8gZm9yIHZlY3Rv ciBpbnRlZ2VyIHJlZ2lzdGVycy4KLQkoVkxPR0lDQUxfUkVHTk8pOiBOZXcgbWFjcm8gZm9yIHZl Y3RvciBsb2dpY2FsIHJlZ2lzdGVycy4KLQkoVlNYX1ZFQ1RPUl9NT0RFKTogTmV3IG1hY3JvIGZv ciB2ZWN0b3IgbW9kZXMgc3VwcG9ydGVkIGJ5IFZTWC4KLQkoSEFSRF9SRUdOT19OUkVHUyk6IFN3 aXRjaCB0byB1c2luZyBwcmUtY29tcHV0ZWQgdGFibGUuCi0JKENMQVNTX01BWF9OUkVHUyk6IERp dHRvLgotCi0JKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKGFsdGl2ZWNfbHZ4Xzxtb2RlPik6 IERlbGV0ZSwgcmVwYWxjZWQKLQlieSBleHBhbmRlcnMgaW4gdmVjdG9yLm1kLgotCShhbHRpdmVj X3N0dnhfPG1vZGU+KTogRGl0dG8uCi0JKG1vdjxtb2RlPik6IERpdHRvLgotCShtb3ZfYWx0aXZl Y188bW9kZT4pOiBSZW5hbWUgZnJvbSBtb3Y8bW9kZT5faW50ZXJuYWwsIGFuZCBwcmVmZXIKLQl1 c2luZyBWU1ggaWYgYXZhaWxhYmxlLgotCShhZGR2NHNmM19hbHRpdmVjKTogUmVuYW1lIGZyb20g c3RhbmRhcmQgbmFtZSwgYW5kIHByZWZlciB1c2luZwotCVZTWCBpZiBhdmFpbGFibGUuCi0JKHN1 YnY0c2YzX2FsdGl2ZWMpOiBEaXR0by4KLQkobXVsdjRzZjNfYWx0aXZlYyk6IERpdHRvLgotCShz bWF4djRzZjNfYWx0aXZlYyk6IERpdHRvLgotCShzbWludjRzZjNfYWx0aXZlYyk6IERpdHRvLgot CShhbmQ8bW9kZT4zX2FsdGl2ZWMpOiBEaXR0by4KLQkoaW9yPG1vZGU+M19hbHRpdmVjKTogRGl0 dG8uCi0JKHhvcjxtb2RlPjNfYWx0aXZlYyk6IERpdHRvLgotCShvbmVfY21wbDxtb2RlPjIpOiBE aXR0by4KLQkobm9yPG1vZGU+M19hbHRpdmVjKTogRGl0dG8uCi0JKGFuZGM8bW9kZT4zX2FsdGl2 ZWMpOiBEaXR0by4KLQkoYWJzdjRzZjJfYWx0aXZlYyk6IERpdHRvLgotCSh2Y29uZHY0c2YpOiBN b3ZlIHRvIHZlY3Rvci5tZC4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAubWQgKG5lZ2RmMl9m cHIpOiBBZGQgIVRBUkdFVF9WU1ggdG8gcHJlZmVyCi0JdGhlIHZlcnNpb24gaW4gdnN4Lm1kIGlm IC1tdnN4IGlzIGF2YWlsYWJsZS4KLQkoYWJzZGYyX2Zwcik6IERpdHRvLgotCShuYWJzZGYyX2Zw cik6IERpdHRvLgotCShhZGRkZjNfZnByKTogRGl0dG8uCi0JKHN1YmRmM19mcHIpOiBEaXR0by4K LQkobXVsZGYzX2Zwcik6IERpdHRvLgotCShtdWx0aXBseS9hZGQgcGF0dGVybnMpOiBEaXR0by4K LQkobW92ZGZfaGFyZGZsb2F0NjQpOiBEaXNhYmxlIGlmIC1tdnN4LgotCShtb3ZkZl9oYXJkZmxv YXQ2NF92c3gpOiBDbG9uZSBmcm9tIG1vdmRmX2hhcmRmbG9hdDY0IGFuZCBhZGQgVlNYCi0Jc3Vw cG9ydC4KLQkodmVjdG9yLm1kKTogSW5jbHVkZSBuZXcgLm1kIGZpbGUuCi0JKHZzeC5tZCk6IERp dHRvLgotCi0yMDA5LTAyLTExICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAbGludXgudm5l dC5pYm0uY29tPgotCi0JKiBkb2MvaW52b2tlLnRleGkgKC1tdnN4LCAtbW5vLXZzeCk6IERvY3Vt ZW50IG5ldyBzd2l0Y2hlcy4KLQotCSogY29uZmlnL3JzNjAwMC9saW51eDY0Lm9wdCAoLW1wcm9m aWxlLWtlcm5lbCk6IE1vdmUgdG8gYmVpbmcgYQotCXZhcmlhYmxlIHRvIHJlZHVjZSB0aGUgbnVt YmVyIG9mIHRhcmdldCBmbGFnIGJpdHMuCi0JKiBjb25maWcvcnM2MDAwL3N5c3Y0Lm9wdCAoLW1i aXQtYWxpZ24pOiBEaXR0by4KLQkoLW1iaXQtd29yZCk6IERpdHRvLgotCSgtbXJlZ25hbWVzKTog RGl0dG8uCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5vcHQgKC1tdXBkYXRlLCAtbW5vLXVwZGF0 ZSk6IERpdHRvLgotCSgtbXZzeCk6IE5ldyBzd2l0Y2gsIGVuYWJsZSBWU1ggc3VwcG9ydC4KLQot CSogY29uZmlnL3JzNjAwMC9yczYwMDAtYy5jIChyczYwMDBfY3B1X2NwcF9idWlsdGlucyk6IERl ZmluZQotCV9fVlNYX18gaWYgdGhlIHZlY3Rvci9zY2FsYXIgaW5zdHJ1Y3Rpb24gc2V0IGlzIGF2 YWlsYWJsZS4KLQotCSogY29uZmlnL3JzNjAwMC9saW51eDY0LmggKFNVQlNVQlRBUkdFVF9PVkVS UklERV9PUFRJT05TKTogQ2hhbmdlCi0JdG8gYWxsb3cgLW1wcm9maWxlLWtlcm5lbCB0byBiZSBh IHZhcmlhYmxlLgotCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5jIChwcm9jZXNzb3JfdGFyZ2V0 X3RhYmxlKTogU2V0IC1tdnN4IGZvcgotCXBvd2VyNyBjcHVzLgotCShQT1dFUlBDX01BU0tTKTog QWRkIC1tdnN4LgotCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5oIChBRERJVElPTkFMX1JFR0lT VEVSX05BTUVTKTogQWRkIFZTWAotCXJlZ2lzdGVyIG5hbWVzIGZvciB0aGUgcmVnaXN0ZXJzIHRo YXQgb3ZlcmxhcCB3aXRoIHRoZSBmbG9hdGluZwotCXBvaW50IGFuZCBhbHRpdmVjIHJlZ2lzdGVy cy4KLQotCSogY29uZmlnL3JzNjAwMC9zeXN2NC5oIChTVUJUQVJHRVRfT1ZFUlJJREVfT1BUSU9O Uyk6Ci0JVEFSR0VUX05PX0JJVEZJRUxEX1dPUkQgaXMgbm93IGEgdmFyaWFibGUsIG5vdCBhIHRh cmdldCBtYXNrLgotCi0yMDA5LTAyLTExICBQYXQgSGF1Z2VuICA8cHRoYXVnZW5AdXMuaWJtLmNv bT4KLQkgICAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGxpbnV4LnZuZXQuaWJtLmNvbT4K LQotCSogZG9jL2ludm9rZS50ZXhpICgtbXBvcGNudGQsIC1tbm8tcG9wY250ZCk6IERvY3VtZW50 IG5ldwotCXN3aXRjaGVzLgotCi0JKiBjb25maWd1cmUuYWMgKHBvd2VycGMqLSotKik6IFRlc3Qg Zm9yIHRoZSBhc3NlbWJsZXIgaGF2aW5nIHRoZQotCXBvcGNudGQgaW5zdHJ1Y3Rpb24uCi0JKiBj b25maWd1cmU6IFJlZ2VuZXJhdGUuCi0JKiBjb25maWcuaW4gKEhBVkVfQVNfUE9QQ05URCk6IEFk ZCBkZWZhdWx0IHZhbHVlIGZvciBjb25maWd1cmUKLQl0ZXN0LgotCi0JKiBjb25maWcvcnM2MDAw L3Bvd2VyNy5tZDogTmV3IGZpbGUuCi0KLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLWMuYyAocnM2 MDAwX2NwdV9jcHBfYnVpbHRpbnMpOiBEZWZpbmUKLQlfQVJDSF9QV1I3IGlmIHRoZSBwb3BjbnRk IGluc3RydWN0aW9uIGlzIGF2YWlsYWJsZS4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAub3B0 ICgtbXBvcGNudGQpOiBOZXcgc3dpdGNoIHRvCi0JZW5hYmxlL2Rpc2FibGUgdGhlIHVzZSBvZiB0 aGUgcG9wY250ZCBhbmQgcG9wY250dyBpbnN0cnVjdGlvbnMuCi0JKC1tZnVzZWQtbWFkZCwgLW1u by1mdXNlZC1tYWRkKTogTW92ZSB0byBiZWluZyBhIHNlcGFyYXRlIHZhcmlhYmxlCi0JYmVjYXVz ZSB3ZSBhcmUgb3V0IG9mIG1hc2sgYml0cy4KLQotCSogY29uZmlnL3JzNjAwMC9yczYwMDAuYyAo cG93ZXI3X2Nvc3QpOiBEZWZpbmUuCi0JKHJzNjAwMF9vdmVycmlkZV9vcHRpb25zKTogQWRkIFBv d2VyNyBzdXBwb3J0LgotCShyczYwMDBfaXNzdWVfcmF0ZSk6IERpdHRvLgotCShpbnNuX211c3Rf YmVfZmlyc3RfaW5fZ3JvdXApOiBEaXR0by4KLQkoaW5zbl9tdXN0X2JlX2xhc3RfaW5fZ3JvdXAp OiBEaXR0by4KLQkocnM2MDAwX2VtaXRfcG9wY291bnQpOiBBZGQgc3VwcG9ydCBmb3IgdXNpbmcg dGhlIHBvcGNudHcgYW5kCi0JcG9wY250ZCBpbnN0cnVjdGlvbnMuCi0KLQkqIGNvbmZpZy9yczYw MDAvcnM2MDAwLmggKEFTTV9DUFVfUE9XRVI3X1NQRUMpOiBTd2l0Y2ggdG8gdXNpbmcKLQlwb3Bj bnRkIGFzIHRoZSB0ZXN0IGZvciBhIHBvd2VyNyBhc3NlbWJsZXIgaW5zdGVhZCBvZiB2ZWN0b3IK LQlzY2FsYXIgaW5zdHJ1Y3Rpb25zLgotCSogKFRBUkdFVF9QT1BDTlREKTogSWYgYXNzZW1ibGVy IGRvZXMgbm90IHN1cHBvcnQgdGhlIHBvcGNudGQKLQlpbnN0cnVjdGlvbiwgZGlzYWJsZSB1c2lu ZyBpdC4KLQkocHJvY2Vzc29yX3R5cGUpOiBBZGQgUG93ZXI3IGVudHJ5LgotCi0JKiBjb25maWcv cnM2MDAwL3JzNjAwMC5tZCAoZGVmaW5lX2F0dHIgImNwdSIpOiAgQWRkIHBvd2VyNy4KLQkocG93 ZXI3Lm1kKTogSW5jbHVkZSBpdC4KLQkoYW5kaS4vYW5kaXMuL25vci4gcGF0dGVybnMpOiBDaGFu Z2UgaW5zbiB0eXBlIHRvIGZhc3RfY29tcGFyZS4KLQkocG9wY250d3NpMik6IEFkZCBwb3BjbnR3 IHN1cHBvcnQuCi0JKHBvcGNudGRkaTIpOiBBZGQgcG9wY250ZCBzdXBwb3J0LgotCi10ZXN0c3Vp dGUvCi0yMDA5LTAzLTAxICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAbGludXgudm5ldC5p Ym0uY29tPgotCi0JKiBnY2MudGFyZ2V0L3Bvd2VycGMvdnN4LXZlY3Rvci0xLmM6IEZpeCB0eXBv cy4KLQkqIGdjYy50YXJnZXQvcG93ZXJwYy92c3gtdmVjdG9yLTIuYzogRGl0dG8uCi0KLQkqIGdj Yy50YXJnZXQvcG93ZXJwYy92c3gtdmVjdG9yLTMuYzogTmV3IGZpbGUsIHRlc3QgX192ZWN0b3IK LQlkb3VibGUuCi0KLQkqIGdjYy50YXJnZXQvcG93ZXJwYy92c3gtdmVjdG9yLTQuYzogTmV3IGZp bGUsIHRlc3QgX192ZWN0b3IgZmxvYXQKLQl1c2VzIFZTWCBpbnN0cnVjdGlvbnMgaWYgLW12c3gu Ci0KLQkqIGdjYy5kZy92bXgvdm14LmV4cCAoREVGQVVMVF9WTVhDTEZBR1MpOiBBZGQgLW1uby12 c3guCi0KLQkqIGxpYi90YXJnZXQtc3VwcG9ydHMuZXhwIChjaGVja192c3hfaHdfYXZhaWxhYmxl KTogTmV3IGZ1bmN0aW9uCi0JdG8gdGVzdCBmb3IgVlNYLgotCShjaGVja192bXhfaHdfYXZhaWxh YmxlKTogQWRkIC1tbm8tdnN4IHRvIG9wdGlvbnMuCi0JKGNoZWNrX2VmZmVjdGl2ZV90YXJnZXRf cG93ZXJwY192c3hfb2spOiBOZXcgZnVuY3Rpb24gdG8gY2hlY2sgaWYKLQl0aGUgcG93ZXJwYyBj b21waWxlciBjYW4gc3VwcG9ydCBWU1guCi0KLTIwMDktMDItMjcgIE1pY2hhZWwgTWVpc3NuZXIg IDxtZWlzc25lckBsaW51eC52bmV0LmlibS5jb20+Ci0KLQkqIGdjYy50YXJnZXQvcG93ZXJwYy92 c3gtdmVjdG9yLTEuYzogTmV3IGZpbGUgdG8gdGVzdCBWU1ggY29kZQotCWdlbmVyYXRpb24uCi0J KiBnY2MudGFyZ2V0L3Bvd2VycGMvdnN4LXZlY3Rvci0yLmM6IERpdHRvLgotCi0yMDA5LTAyLTAx IE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBsaW51eC52bmV0LmlibS5jb20+Ci0KLQkqIGdj Yy50YXJnZXQvcG93ZXJwYy9wb3Bjb3VudC0yLmM6IE5ldyBmaWxlIGZvciBwb3dlcjcgc3VwcG9y dC4KLQkqIGdjYy50YXJnZXQvcG93ZXJwYy9wb3Bjb3VudC0zLmM6IERpdHRvLgotCi0tLS0gZ2Nj L2RvYy9pbnZva2UudGV4aQkoLi4uL3RydW5rKQkocmV2aXNpb24gMTQ0NTU3KQotKysrIGdjYy9k b2MvaW52b2tlLnRleGkJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNp b24gMTQ0NjkyKQotQEAgLTcxMiw3ICs3MTIsOCBAQCBTZWUgUlMvNjAwMCBhbmQgUG93ZXJQQyBP cHRpb25zLgotIC1tYWx0aXZlYyAgLW1uby1hbHRpdmVjIEBnb2wKLSAtbXBvd2VycGMtZ3BvcHQg IC1tbm8tcG93ZXJwYy1ncG9wdCBAZ29sCi0gLW1wb3dlcnBjLWdmeG9wdCAgLW1uby1wb3dlcnBj LWdmeG9wdCBAZ29sCi0tLW1tZmNyZiAgLW1uby1tZmNyZiAgLW1wb3BjbnRiICAtbW5vLXBvcGNu dGIgIC1tZnBybmQgIC1tbm8tZnBybmQgQGdvbAotKy1tbWZjcmYgIC1tbm8tbWZjcmYgIC1tcG9w Y250YiAgLW1uby1wb3BjbnRiIC1tcG9wY250ZCAtbW5vLXBvcGNudGQgQGdvbAotKy1tZnBybmQg IC1tbm8tZnBybmQgQGdvbAotIC1tY21wYiAtbW5vLWNtcGIgLW1tZnBncHIgLW1uby1tZnBncHIg LW1oYXJkLWRmcCAtbW5vLWhhcmQtZGZwIEBnb2wKLSAtbW5ldy1tbmVtb25pY3MgIC1tb2xkLW1u ZW1vbmljcyBAZ29sCi0gLW1mdWxsLXRvYyAgIC1tbWluaW1hbC10b2MgIC1tbm8tZnAtaW4tdG9j ICAtbW5vLXN1bS1pbi10b2MgQGdvbAotQEAgLTcyNiw3ICs3MjcsOSBAQCBTZWUgUlMvNjAwMCBh bmQgUG93ZXJQQyBPcHRpb25zLgotIC1tc3RyaWN0LWFsaWduICAtbW5vLXN0cmljdC1hbGlnbiAg LW1yZWxvY2F0YWJsZSBAZ29sCi0gLW1uby1yZWxvY2F0YWJsZSAgLW1yZWxvY2F0YWJsZS1saWIg IC1tbm8tcmVsb2NhdGFibGUtbGliIEBnb2wKLSAtbXRvYyAgLW1uby10b2MgIC1tbGl0dGxlICAt bWxpdHRsZS1lbmRpYW4gIC1tYmlnICAtbWJpZy1lbmRpYW4gQGdvbAotLS1tZHluYW1pYy1uby1w aWMgIC1tYWx0aXZlYyAgLW1zd2RpdiBAZ29sCi0rLW1keW5hbWljLW5vLXBpYyAgLW1hbHRpdmVj IC1tc3dkaXYgLW12c3ggLW12c3gtdmVjdG9yLW1lbW9yeSBAZ29sCi0rLW12c3gtdmVjdG9yLWZs b2F0IC1tdnN4LXZlY3Rvci1kb3VibGUgQGdvbAotKy1tdnN4LXNjYWxhci1kb3VibGUgLW12c3gt c2NhbGFyLW1lbW9yeSBAZ29sCi0gLW1wcmlvcml0aXplLXJlc3RyaWN0ZWQtaW5zbnM9QHZhcntw cmlvcml0eX0gQGdvbAotIC1tc2NoZWQtY29zdGx5LWRlcD1AdmFye2RlcGVuZGVuY2VfdHlwZX0g QGdvbAotIC1taW5zZXJ0LXNjaGVkLW5vcHM9QHZhcntzY2hlbWV9IEBnb2wKLUBAIC0xMzUxMiw2 ICsxMzUxNSw4IEBAIFRoZXNlIEBzYW1wey1tfSBvcHRpb25zIGFyZSBkZWZpbmVkIGZvciAKLSBA aXRlbXggLW1uby1tZmNyZgotIEBpdGVteCAtbXBvcGNudGIKLSBAaXRlbXggLW1uby1wb3BjbnRi Ci0rQGl0ZW14IC1tcG9wY250ZAotK0BpdGVteCAtbW5vLXBvcGNudGQKLSBAaXRlbXggLW1mcHJu ZAotIEBpdGVteCAtbW5vLWZwcm5kCi0gQGl0ZW14IC1tY21wYgotQEAgLTEzNTM2LDYgKzEzNTQx LDggQEAgVGhlc2UgQHNhbXB7LW19IG9wdGlvbnMgYXJlIGRlZmluZWQgZm9yIAotIEBvcGluZGV4 IG1uby1tZmNyZgotIEBvcGluZGV4IG1wb3BjbnRiCi0gQG9waW5kZXggbW5vLXBvcGNudGIKLStA b3BpbmRleCBtcG9wY250ZAotK0BvcGluZGV4IG1uby1wb3BjbnRkCi0gQG9waW5kZXggbWZwcm5k Ci0gQG9waW5kZXggbW5vLWZwcm5kCi0gQG9waW5kZXggbWNtcGIKLUBAIC0xMzU4NSw2ICsxMzU5 Miw5IEBAIFRoZSBAb3B0aW9uey1tcG9wY250Yn0gb3B0aW9uIGFsbG93cyBHQ0MKLSBkb3VibGUg cHJlY2lzaW9uIEZQIHJlY2lwcm9jYWwgZXN0aW1hdGUgaW5zdHJ1Y3Rpb24gaW1wbGVtZW50ZWQg b24gdGhlCi0gUE9XRVI1IHByb2Nlc3NvciBhbmQgb3RoZXIgcHJvY2Vzc29ycyB0aGF0IHN1cHBv cnQgdGhlIFBvd2VyUEMgVjIuMDIKLSBhcmNoaXRlY3R1cmUuCi0rVGhlIEBvcHRpb257LW1wb3Bj bnRkfSBvcHRpb24gYWxsb3dzIEdDQyB0byBnZW5lcmF0ZSB0aGUgcG9wY291bnQKLStpbnN0cnVj dGlvbiBpbXBsZW1lbnRlZCBvbiB0aGUgUE9XRVI3IHByb2Nlc3NvciBhbmQgb3RoZXIgcHJvY2Vz c29ycwotK3RoYXQgc3VwcG9ydCB0aGUgUG93ZXJQQyBWMi4wNiBhcmNoaXRlY3R1cmUuCi0gVGhl IEBvcHRpb257LW1mcHJuZH0gb3B0aW9uIGFsbG93cyBHQ0MgdG8gZ2VuZXJhdGUgdGhlIEZQIHJv dW5kIHRvCi0gaW50ZWdlciBpbnN0cnVjdGlvbnMgaW1wbGVtZW50ZWQgb24gdGhlIFBPV0VSNSsg cHJvY2Vzc29yIGFuZCBvdGhlcgotIHByb2Nlc3NvcnMgdGhhdCBzdXBwb3J0IHRoZSBQb3dlclBD IFYyLjAzIGFyY2hpdGVjdHVyZS4KLUBAIC0xMzY2Myw5ICsxMzY3Myw5IEBAIFRoZSBAb3B0aW9u ey1tY3B1fSBvcHRpb25zIGF1dG9tYXRpY2FsbHkKLSBmb2xsb3dpbmcgb3B0aW9uczoKLSAKLSBA Z2Njb3B0bGlzdHstbWFsdGl2ZWMgIC1tZnBybmQgIC1taGFyZC1mbG9hdCAgLW1tZmNyZiAgLW1t dWx0aXBsZSBAZ29sCi0tLW1uZXctbW5lbW9uaWNzICAtbXBvcGNudGIgIC1tcG93ZXIgIC1tcG93 ZXIyICAtbXBvd2VycGM2NCBAZ29sCi0rLW1uZXctbW5lbW9uaWNzICAtbXBvcGNudGIgLW1wb3Bj bnRkICAtbXBvd2VyICAtbXBvd2VyMiAgLW1wb3dlcnBjNjQgQGdvbAotIC1tcG93ZXJwYy1ncG9w dCAgLW1wb3dlcnBjLWdmeG9wdCAgLW1zaW5nbGUtZmxvYXQgLW1kb3VibGUtZmxvYXQgQGdvbAot LS1tc2ltcGxlLWZwdSAtbXN0cmluZyAgLW1tdWxodyAgLW1kbG16YiAgLW1tZnBncHJ9Ci0rLW1z aW1wbGUtZnB1IC1tc3RyaW5nICAtbW11bGh3ICAtbWRsbXpiICAtbW1mcGdwciAtbXZzeH0KLSAK LSBUaGUgcGFydGljdWxhciBvcHRpb25zIHNldCBmb3IgYW55IHBhcnRpY3VsYXIgQ1BVIHdpbGwg dmFyeSBiZXR3ZWVuCi0gY29tcGlsZXIgdmVyc2lvbnMsIGRlcGVuZGluZyBvbiB3aGF0IHNldHRp bmcgc2VlbXMgdG8gcHJvZHVjZSBvcHRpbWFsCi1AQCAtMTM3NjYsNiArMTM3NzYsNDQgQEAgaW5z dHJ1Y3Rpb25zLgotIFRoaXMgb3B0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQuICBVc2UgQG9wdGlv bnstbXNwZX0gYW5kCi0gQG9wdGlvbnstbW5vLXNwZX0gaW5zdGVhZC4KLSAKLStAaXRlbSAtbXZz eAotK0BpdGVteCAtbW5vLXZzeAotK0BvcGluZGV4IG12c3gKLStAb3BpbmRleCBtbm8tdnN4Ci0r R2VuZXJhdGUgY29kZSB0aGF0IHVzZXMgKGRvZXMgbm90IHVzZSkgdmVjdG9yL3NjYWxhciAoVlNY KQotK2luc3RydWN0aW9ucywgYW5kIGFsc28gZW5hYmxlIHRoZSB1c2Ugb2YgYnVpbHQtaW4gZnVu Y3Rpb25zIHRoYXQgYWxsb3cKLSttb3JlIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIFZTWCBpbnN0cnVj dGlvbiBzZXQuCi0rCi0rQGl0ZW0gLW12c3gtdmVjdG9yLW1lbW9yeQotK0BpdGVteCAtbW5vLXZz eC12ZWN0b3ItbWVtb3J5Ci0rSWYgQG9wdGlvbnstbXZzeH0sIHVzZSBWU1ggbWVtb3J5IHJlZmVy ZW5jZSBpbnN0cnVjdGlvbnMgZm9yIHZlY3RvcnMKLStpbnN0ZWFkIG9mIHRoZSBBbHRpdmVjIGlu c3RydWN0aW9ucyBUaGlzIG9wdGlvbiBpcyBhIHRlbXBvcmFyeSBzd2l0Y2gKLSt0byB0dW5lIHRo ZSBjb21waWxlciwgYW5kIG1heSBub3QgYmUgc3VwcG9ydGVkIGluIGZ1dHVyZSB2ZXJzaW9ucy4K LSsKLStAaXRlbSAtbXZzeC12ZWN0b3ItZmxvYXQKLStAaXRlbXggLW1uby12c3gtdmVjdG9yLWZs b2F0Ci0rSWYgQG9wdGlvbnstbXZzeH0sIHVzZSBWU1ggYXJpdGhtZXRpYyBpbnN0cnVjdGlvbnMg Zm9yIGZsb2F0IHZlY3RvcnMuCi0rVGhpcyBvcHRpb24gaXMgYSB0ZW1wb3Jhcnkgc3dpdGNoIHRv IHR1bmUgdGhlIGNvbXBpbGVyLCBhbmQgbWF5IG5vdCBiZQotK3N1cHBvcnRlZCBpbiBmdXR1cmUg dmVyc2lvbnMuCi0rCi0rQGl0ZW0gLW12c3gtdmVjdG9yLWRvdWJsZQotK0BpdGVteCAtbW5vLXZz eC12ZWN0b3ItZG91YmxlCi0rSWYgQG9wdGlvbnstbXZzeH0sIHVzZSBWU1ggYXJpdGhtZXRpYyBp bnN0cnVjdGlvbnMgZm9yIGRvdWJsZQotK3ZlY3RvcnMuICBUaGlzIG9wdGlvbiBpcyBhIHRlbXBv cmFyeSBzd2l0Y2ggdG8gdHVuZSB0aGUKLStjb21waWxlciwgYW5kIG1heSBub3QgYmUgc3VwcG9y dGVkIGluIGZ1dHVyZSB2ZXJzaW9ucy4KLSsKLStAaXRlbSAtbXZzeC1zY2FsYXItZG91YmxlCi0r QGl0ZW14IC1tbm8tdnN4LXNjYWxhci1kb3VibGUKLStJZiBAb3B0aW9uey1tdnN4fSwgdXNlIFZT WCBhcml0aG1ldGljIGluc3RydWN0aW9ucyBmb3Igc2NhbGFyIGRvdWJsZS4KLStUaGlzIG9wdGlv biBpcyBhIHRlbXBvcmFyeSBzd2l0Y2ggdG8gdHVuZSB0aGUgY29tcGlsZXIsIGFuZCBtYXkgbm90 IGJlCi0rc3VwcG9ydGVkIGluIGZ1dHVyZSB2ZXJzaW9ucy4KLSsKLStAaXRlbSAtbXZzeC1zY2Fs YXItbWVtb3J5Ci0rQGl0ZW14IC1tbm8tdnN4LXNjYWxhci1tZW1vcnkKLStJZiBAb3B0aW9uey1t dnN4fSwgdXNlIFZTWCBtZW1vcnkgcmVmZXJlbmNlIGluc3RydWN0aW9ucyBmb3Igc2NhbGFyCi0r ZG91YmxlLiAgVGhpcyBvcHRpb24gaXMgYSB0ZW1wb3Jhcnkgc3dpdGNoIHRvIHR1bmUgdGhlIGNv bXBpbGVyLCBhbmQKLSttYXkgbm90IGJlIHN1cHBvcnRlZCBpbiBmdXR1cmUgdmVyc2lvbnMuCi0r Ci0gQGl0ZW0gLW1mbG9hdC1ncHJzPUB2YXJ7eWVzL3NpbmdsZS9kb3VibGUvbm99Ci0gQGl0ZW14 IC1tZmxvYXQtZ3BycwotIEBvcGluZGV4IG1mbG9hdC1ncHJzCi0tLS0gZ2NjL2RvYy9tZC50ZXhp CSguLi4vdHJ1bmspCShyZXZpc2lvbiAxNDQ1NTcpCi0rKysgZ2NjL2RvYy9tZC50ZXhpCSguLi4v YnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlzaW9uIDE0NDY5MikKLUBAIC0xOTA1 LDcgKzE5MDUsMTkgQEAgQWRkcmVzcyBiYXNlIHJlZ2lzdGVyCi0gRmxvYXRpbmcgcG9pbnQgcmVn aXN0ZXIKLSAKLSBAaXRlbSB2Ci0tVmVjdG9yIHJlZ2lzdGVyCi0rQWx0aXZlYyB2ZWN0b3IgcmVn aXN0ZXIKLSsKLStAaXRlbSB3ZAotK1ZTWCB2ZWN0b3IgcmVnaXN0ZXIgdG8gaG9sZCB2ZWN0b3Ig ZG91YmxlIGRhdGEKLSsKLStAaXRlbSB3ZgotK1ZTWCB2ZWN0b3IgcmVnaXN0ZXIgdG8gaG9sZCB2 ZWN0b3IgZmxvYXQgZGF0YQotKwotK0BpdGVtIHdzCi0rVlNYIHZlY3RvciByZWdpc3RlciB0byBo b2xkIHNjYWxhciBmbG9hdCBkYXRhCi0rCi0rQGl0ZW0gd2EKLStBbnkgVlNYIHJlZ2lzdGVyCi0g Ci0gQGl0ZW0gaAotIEBzYW1we01RfSwgQHNhbXB7Q1RSfSwgb3IgQHNhbXB7TElOS30gcmVnaXN0 ZXIKLUBAIC0xOTkxLDYgKzIwMDMsOSBAQCBBTkQgbWFza3MgdGhhdCBjYW4gYmUgcGVyZm9ybWVk IGJ5IHR3byByCi0gQGl0ZW0gVwotIFZlY3RvciBjb25zdGFudCB0aGF0IGRvZXMgbm90IHJlcXVp cmUgbWVtb3J5Ci0gCi0rQGl0ZW0gagotK1ZlY3RvciBjb25zdGFudCB0aGF0IGlzIGFsbCB6ZXJv cy4KLSsKLSBAZW5kIHRhYmxlCi0gCi0gQGl0ZW0gSW50ZWwgMzg2LS0tQGZpbGV7Y29uZmlnL2kz ODYvY29uc3RyYWludHMubWR9Ci0tLS0gZ2NjL3JlbG9hZC5jCSguLi4vdHJ1bmspCShyZXZpc2lv biAxNDQ1NTcpCi0rKysgZ2NjL3JlbG9hZC5jCSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlz c25lcikJKHJldmlzaW9uIDE0NDY5MikKLUBAIC02MjU1LDggKzYyNTUsMTQgQEAgc3Vic3RfcmVs b2FkcyAocnR4IGluc24pCi0gCSAgICAqci0+d2hlcmUgPSByZWxvYWRyZWc7Ci0gCX0KLSAgICAg ICAvKiBJZiByZWxvYWQgZ290IG5vIHJlZyBhbmQgaXNuJ3Qgb3B0aW9uYWwsIHNvbWV0aGluZydz IHdyb25nLiAgKi8KLS0gICAgICBlbHNlCi0tCWdjY19hc3NlcnQgKHJsZFtyLT53aGF0XS5vcHRp b25hbCk7Ci0rICAgICAgZWxzZSBpZiAoIXJsZFtyLT53aGF0XS5vcHRpb25hbCkKLSsJewotKwkg IGNoYXIgYnVmZmVyWzEwMF07Ci0rCSAgc3ByaW50ZiAoYnVmZmVyLAotKwkJICAgInVuYWJsZSB0 byBmaW5kIHJlZ2lzdGVyIGZvciByZWxvYWQsIHJlcGxhY2VtZW50ICMlZCIsCi0rCQkgICBpKTsK LSsJICBmYXRhbF9pbnNuIChidWZmZXIsIGluc24pOwotKwl9Ci0gICAgIH0KLSB9Ci0gDAotLS0t IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3BvcGNvdW50LTMuYwkoLi4uL3RydW5r KQkocmV2aXNpb24gMCkKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9wb3Bj b3VudC0zLmMJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ0 NjkyKQotQEAgLTAsMCArMSw5IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgcG93 ZXJwYyotKi0qICYmIGxwNjQgfSB9IH0gKi8KLSsvKiB7IGRnLXNraXAtaWYgIiIgeyBwb3dlcnBj Ki0qLWRhcndpbiogfSB7ICIqIiB9IHsgIiIgfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIg LW1jcHU9cG93ZXI3IC1tNjQiIH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIg InBvcGNudGQiIH0gfSAqLwotKwotK2xvbmcgZm9vKGludCB4KQotK3sKLSsgIHJldHVybiBfX2J1 aWx0aW5fcG9wY291bnRsKHgpOwotK30KLS0tLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93 ZXJwYy92c3gtdmVjdG9yLTEuYwkoLi4uL3RydW5rKQkocmV2aXNpb24gMCkKLSsrKyBnY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy92c3gtdmVjdG9yLTEuYwkoLi4uL2JyYW5jaGVzL2li bS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDQ2OTIpCi1AQCAtMCwwICsxLDc0IEBACi0r LyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgcG93ZXJwYyotKi0qICYmIGxwNjQgfSB9IH0g Ki8KLSsvKiB7IGRnLXNraXAtaWYgIiIgeyBwb3dlcnBjKi0qLWRhcndpbiogfSB7ICIqIiB9IHsg IiIgfSB9ICovCi0rLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgcG93ZXJwY192c3hf b2sgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mdHJlZS12ZWN0b3JpemUgLW1jcHU9cG93 ZXI3IC1tNjQiIH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2YWRkZHAi IH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZzdWJkcCIgfSB9ICov Ci0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dm11bGRwIiB9IH0gKi8KLSsvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2ZGl2ZHAiIH0gfSAqLwotKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlciAieHZtYWRkIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgInh2bXN1YiIgfSB9ICovCi0rCi0rI2lmbmRlZiBTSVpFCi0rI2RlZmluZSBT SVpFIDEwMjQKLSsjZW5kaWYKLSsKLStkb3VibGUgYVtTSVpFXSBfX2F0dHJpYnV0ZV9fKChfX2Fs aWduZWRfXygzMikpKTsKLStkb3VibGUgYltTSVpFXSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRf XygzMikpKTsKLStkb3VibGUgY1tTSVpFXSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygzMikp KTsKLStkb3VibGUgZFtTSVpFXSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygzMikpKTsKLStk b3VibGUgZVtTSVpFXSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygzMikpKTsKLSsKLSt2b2lk Ci0rdmVjdG9yX2FkZCAodm9pZCkKLSt7Ci0rICBpbnQgaTsKLSsKLSsgIGZvciAoaSA9IDA7IGkg PCBTSVpFOyBpKyspCi0rICAgIGFbaV0gPSBiW2ldICsgY1tpXTsKLSt9Ci0rCi0rdm9pZAotK3Zl Y3Rvcl9zdWJ0cmFjdCAodm9pZCkKLSt7Ci0rICBpbnQgaTsKLSsKLSsgIGZvciAoaSA9IDA7IGkg PCBTSVpFOyBpKyspCi0rICAgIGFbaV0gPSBiW2ldIC0gY1tpXTsKLSt9Ci0rCi0rdm9pZAotK3Zl Y3Rvcl9tdWx0aXBseSAodm9pZCkKLSt7Ci0rICBpbnQgaTsKLSsKLSsgIGZvciAoaSA9IDA7IGkg PCBTSVpFOyBpKyspCi0rICAgIGFbaV0gPSBiW2ldICogY1tpXTsKLSt9Ci0rCi0rdm9pZAotK3Zl Y3Rvcl9tdWx0aXBseV9hZGQgKHZvaWQpCi0rewotKyAgaW50IGk7Ci0rCi0rICBmb3IgKGkgPSAw OyBpIDwgU0laRTsgaSsrKQotKyAgICBhW2ldID0gKGJbaV0gKiBjW2ldKSArIGRbaV07Ci0rfQot KwotK3ZvaWQKLSt2ZWN0b3JfbXVsdGlwbHlfc3VidHJhY3QgKHZvaWQpCi0rewotKyAgaW50IGk7 Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgaSsrKQotKyAgICBhW2ldID0gKGJbaV0gKiBj W2ldKSAtIGRbaV07Ci0rfQotKwotK3ZvaWQKLSt2ZWN0b3JfZGl2aWRlICh2b2lkKQotK3sKLSsg IGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IFNJWkU7IGkrKykKLSsgICAgYVtpXSA9IGJb aV0gLyBjW2ldOwotK30KLS0tLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy92c3gt dmVjdG9yLTIuYwkoLi4uL3RydW5rKQkocmV2aXNpb24gMCkKLSsrKyBnY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcG93ZXJwYy92c3gtdmVjdG9yLTIuYwkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjct bWVpc3NuZXIpCShyZXZpc2lvbiAxNDQ2OTIpCi1AQCAtMCwwICsxLDc0IEBACi0rLyogeyBkZy1k byBjb21waWxlIHsgdGFyZ2V0IHsgcG93ZXJwYyotKi0qICYmIGxwNjQgfSB9IH0gKi8KLSsvKiB7 IGRnLXNraXAtaWYgIiIgeyBwb3dlcnBjKi0qLWRhcndpbiogfSB7ICIqIiB9IHsgIiIgfSB9ICov Ci0rLyogeyBkZy1yZXF1aXJlLWVmZmVjdGl2ZS10YXJnZXQgcG93ZXJwY192c3hfb2sgfSAqLwot Ky8qIHsgZGctb3B0aW9ucyAiLU8yIC1mdHJlZS12ZWN0b3JpemUgLW1jcHU9cG93ZXI3IC1tNjQi IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2YWRkc3AiIH0gfSAqLwot Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZzdWJzcCIgfSB9ICovCi0rLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dm11bHNwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgInh2ZGl2c3AiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAieHZtYWRkIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXIgInh2bXN1YiIgfSB9ICovCi0rCi0rI2lmbmRlZiBTSVpFCi0rI2RlZmluZSBTSVpFIDEwMjQK LSsjZW5kaWYKLSsKLStmbG9hdCBhW1NJWkVdIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDMy KSkpOwotK2Zsb2F0IGJbU0laRV0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMzIpKSk7Ci0r ZmxvYXQgY1tTSVpFXSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygzMikpKTsKLStmbG9hdCBk W1NJWkVdIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDMyKSkpOwotK2Zsb2F0IGVbU0laRV0g X19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMzIpKSk7Ci0rCi0rdm9pZAotK3ZlY3Rvcl9hZGQg KHZvaWQpCi0rewotKyAgaW50IGk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgaSsrKQot KyAgICBhW2ldID0gYltpXSArIGNbaV07Ci0rfQotKwotK3ZvaWQKLSt2ZWN0b3Jfc3VidHJhY3Qg KHZvaWQpCi0rewotKyAgaW50IGk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgaSsrKQot KyAgICBhW2ldID0gYltpXSAtIGNbaV07Ci0rfQotKwotK3ZvaWQKLSt2ZWN0b3JfbXVsdGlwbHkg KHZvaWQpCi0rewotKyAgaW50IGk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgU0laRTsgaSsrKQot KyAgICBhW2ldID0gYltpXSAqIGNbaV07Ci0rfQotKwotK3ZvaWQKLSt2ZWN0b3JfbXVsdGlwbHlf YWRkICh2b2lkKQotK3sKLSsgIGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IFNJWkU7IGkr KykKLSsgICAgYVtpXSA9IChiW2ldICogY1tpXSkgKyBkW2ldOwotK30KLSsKLSt2b2lkCi0rdmVj dG9yX211bHRpcGx5X3N1YnRyYWN0ICh2b2lkKQotK3sKLSsgIGludCBpOwotKwotKyAgZm9yIChp ID0gMDsgaSA8IFNJWkU7IGkrKykKLSsgICAgYVtpXSA9IChiW2ldICogY1tpXSkgLSBkW2ldOwot K30KLSsKLSt2b2lkCi0rdmVjdG9yX2RpdmlkZSAodm9pZCkKLSt7Ci0rICBpbnQgaTsKLSsKLSsg IGZvciAoaSA9IDA7IGkgPCBTSVpFOyBpKyspCi0rICAgIGFbaV0gPSBiW2ldIC8gY1tpXTsKLSt9 Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvdnN4LXZlY3Rvci0zLmMJKC4u Li90cnVuaykJKHJldmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2Vy cGMvdnN4LXZlY3Rvci0zLmMJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2 aXNpb24gMTQ0NjkyKQotQEAgLTAsMCArMSw0OCBAQAotKy8qIHsgZGctZG8gY29tcGlsZSB7IHRh cmdldCB7IHBvd2VycGMqLSotKiAmJiBscDY0IH0gfSB9ICovCi0rLyogeyBkZy1za2lwLWlmICIi IHsgcG93ZXJwYyotKi1kYXJ3aW4qIH0geyAiKiIgfSB7ICIiIH0gfSAqLwotKy8qIHsgZGctcmVx dWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHBvd2VycGNfdnN4X29rIH0gKi8KLSsvKiB7IGRnLW9wdGlv bnMgIi1PMiAtZnRyZWUtdmVjdG9yaXplIC1tY3B1PXBvd2VyNyAtbTY0IiB9ICovCi0rLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dmFkZGRwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXIgInh2c3ViZHAiIH0gfSAqLwotKy8qIHsgZGctZmluYWwgeyBzY2Fu LWFzc2VtYmxlciAieHZtdWxkcCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJ4dmRpdmRwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2 bWFkZCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dm1zdWIiIH0g fSAqLwotKwotK19fdmVjdG9yIGRvdWJsZSBhLCBiLCBjLCBkOwotKwotK3ZvaWQKLSt2ZWN0b3Jf YWRkICh2b2lkKQotK3sKLSsgIGEgPSBiICsgYzsKLSt9Ci0rCi0rdm9pZAotK3ZlY3Rvcl9zdWJ0 cmFjdCAodm9pZCkKLSt7Ci0rICBhID0gYiAtIGM7Ci0rfQotKwotK3ZvaWQKLSt2ZWN0b3JfbXVs dGlwbHkgKHZvaWQpCi0rewotKyAgYSA9IGIgKiBjOwotK30KLSsKLSt2b2lkCi0rdmVjdG9yX211 bHRpcGx5X2FkZCAodm9pZCkKLSt7Ci0rICBhID0gKGIgKiBjKSArIGQ7Ci0rfQotKwotK3ZvaWQK LSt2ZWN0b3JfbXVsdGlwbHlfc3VidHJhY3QgKHZvaWQpCi0rewotKyAgYSA9IChiICogYykgLSBk OwotK30KLSsKLSt2b2lkCi0rdmVjdG9yX2RpdmlkZSAodm9pZCkKLSt7Ci0rICBhID0gYiAvIGM7 Ci0rfQotLS0tIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3BvcGNvdW50LTIuYwko Li4uL3RydW5rKQkocmV2aXNpb24gMCkKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93 ZXJwYy9wb3Bjb3VudC0yLmMJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2 aXNpb24gMTQ0NjkyKQotQEAgLTAsMCArMSw5IEBACi0rLyogeyBkZy1kbyBjb21waWxlIHsgdGFy Z2V0IHsgaWxwMzIgfSB9IH0gKi8KLSsvKiB7IGRnLXNraXAtaWYgIiIgeyBwb3dlcnBjKi0qLWRh cndpbiogfSB7ICIqIiB9IHsgIiIgfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1jcHU9 cG93ZXI3IC1tMzIiIH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInBvcGNu dHciIH0gfSAqLwotKwotK2ludCBmb28oaW50IHgpCi0rewotKyAgcmV0dXJuIF9fYnVpbHRpbl9w b3Bjb3VudCh4KTsKLSt9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvdnN4 LXZlY3Rvci00LmMJKC4uLi90cnVuaykJKHJldmlzaW9uIDApCi0rKysgZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Bvd2VycGMvdnN4LXZlY3Rvci00LmMJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3 LW1laXNzbmVyKQkocmV2aXNpb24gMTQ0NjkyKQotQEAgLTAsMCArMSw0OCBAQAotKy8qIHsgZGct ZG8gY29tcGlsZSB7IHRhcmdldCB7IHBvd2VycGMqLSotKiAmJiBscDY0IH0gfSB9ICovCi0rLyog eyBkZy1za2lwLWlmICIiIHsgcG93ZXJwYyotKi1kYXJ3aW4qIH0geyAiKiIgfSB7ICIiIH0gfSAq LwotKy8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHBvd2VycGNfdnN4X29rIH0gKi8K LSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnRyZWUtdmVjdG9yaXplIC1tY3B1PXBvd2VyNyAtbTY0 IiB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ4dmFkZHNwIiB9IH0gKi8K LSsvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInh2c3Vic3AiIH0gfSAqLwotKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAieHZtdWxzcCIgfSB9ICovCi0rLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyICJ4dmRpdnNwIiB9IH0gKi8KLSsvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgInh2bWFkZCIgfSB9ICovCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJ4dm1zdWIiIH0gfSAqLwotKwotK19fdmVjdG9yIGZsb2F0IGEsIGIsIGMsIGQ7Ci0rCi0r dm9pZAotK3ZlY3Rvcl9hZGQgKHZvaWQpCi0rewotKyAgYSA9IGIgKyBjOwotK30KLSsKLSt2b2lk Ci0rdmVjdG9yX3N1YnRyYWN0ICh2b2lkKQotK3sKLSsgIGEgPSBiIC0gYzsKLSt9Ci0rCi0rdm9p ZAotK3ZlY3Rvcl9tdWx0aXBseSAodm9pZCkKLSt7Ci0rICBhID0gYiAqIGM7Ci0rfQotKwotK3Zv aWQKLSt2ZWN0b3JfbXVsdGlwbHlfYWRkICh2b2lkKQotK3sKLSsgIGEgPSAoYiAqIGMpICsgZDsK LSt9Ci0rCi0rdm9pZAotK3ZlY3Rvcl9tdWx0aXBseV9zdWJ0cmFjdCAodm9pZCkKLSt7Ci0rICBh ID0gKGIgKiBjKSAtIGQ7Ci0rfQotKwotK3ZvaWQKLSt2ZWN0b3JfZGl2aWRlICh2b2lkKQotK3sK LSsgIGEgPSBiIC8gYzsKLSt9Ci0tLS0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvdm14L3ZteC5leHAJ KC4uLi90cnVuaykJKHJldmlzaW9uIDE0NDU1NykKLSsrKyBnY2MvdGVzdHN1aXRlL2djYy5kZy92 bXgvdm14LmV4cAkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAx NDQ2OTIpCi1AQCAtMzEsNyArMzEsNyBAQCBpZiB7IVtpc3RhcmdldCBwb3dlcnBjKi0qLSpdCi0g IyBub3RoaW5nIGJ1dCBleHRlbnNpb25zLgotIGdsb2JhbCBERUZBVUxUX1ZNWENGTEFHUwotIGlm ICFbaW5mbyBleGlzdHMgREVGQVVMVF9WTVhDRkxBR1NdIHRoZW4gewotLSAgICBzZXQgREVGQVVM VF9WTVhDRkxBR1MgIi1tYWx0aXZlYyAtbWFiaT1hbHRpdmVjIC1zdGQ9Z251OTkiCi0rICAgIHNl dCBERUZBVUxUX1ZNWENGTEFHUyAiLW1hbHRpdmVjIC1tYWJpPWFsdGl2ZWMgLXN0ZD1nbnU5OSAt bW5vLXZzeCIKLSB9Ci0gCi0gIyBJZiB0aGUgdGFyZ2V0IHN5c3RlbSBzdXBwb3J0cyBBbHRpVmVj IGluc3RydWN0aW9ucywgdGhlIGRlZmF1bHQgYWN0aW9uCi0tLS0gZ2NjL3Rlc3RzdWl0ZS9saWIv dGFyZ2V0LXN1cHBvcnRzLmV4cAkoLi4uL3RydW5rKQkocmV2aXNpb24gMTQ0NTU3KQotKysrIGdj Yy90ZXN0c3VpdGUvbGliL3RhcmdldC1zdXBwb3J0cy5leHAJKC4uLi9icmFuY2hlcy9pYm0vcG93 ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ0NjkyKQotQEAgLTg3Myw2ICs4NzMsMzIgQEAgcHJv YyBjaGVja19zc2UyX2h3X2F2YWlsYWJsZSB7IH0gewotICAgICB9XQotIH0KLSAKLSsjIFJldHVy biAxIGlmIHRoZSB0YXJnZXQgc3VwcG9ydHMgZXhlY3V0aW5nIFZTWCBpbnN0cnVjdGlvbnMsIDAK LSsjIG90aGVyd2lzZS4gIENhY2hlIHRoZSByZXN1bHQuCi0rCi0rcHJvYyBjaGVja192c3hfaHdf YXZhaWxhYmxlIHsgfSB7Ci0rICAgIHJldHVybiBbY2hlY2tfY2FjaGVkX2VmZmVjdGl2ZV90YXJn ZXQgdnN4X2h3X2F2YWlsYWJsZSB7Ci0rCSMgU29tZSBzaW11bGF0b3JzIGFyZSBrbm93biB0byBu b3Qgc3VwcG9ydCBWU1ggaW5zdHJ1Y3Rpb25zLgotKwkjIEZvciBub3csIGRpc2FibGUgb24gRGFy d2luCi0rCWlmIHsgW2lzdGFyZ2V0IHBvd2VycGMtKi1lYWJpXSB8fCBbaXN0YXJnZXQgcG93ZXJw YyotKi1lYWJpc3BlXSB8fCBbaXN0YXJnZXQgKi0qLWRhcndpbipdfSB7Ci0rCSAgICBleHByIDAK LSsJfSBlbHNlIHsKLSsJICAgIHNldCBvcHRpb25zICItbXZzeCIKLSsJICAgIGNoZWNrX3J1bnRp bWVfbm9jYWNoZSB2c3hfaHdfYXZhaWxhYmxlIHsKLSsJCWludCBtYWluKCkKLSsJCXsKLSsJCSNp ZmRlZiBfX01BQ0hfXwotKwkJICBhc20gdm9sYXRpbGUgKCJ4eGxvciB2czAsdnMwLHZzMCIpOwot KwkJI2Vsc2UKLSsJCSAgYXNtIHZvbGF0aWxlICgieHhsb3IgMCwwLDAiKTsKLSsJICAgICAgICAj ZW5kaWYKLSsJCSAgcmV0dXJuIDA7Ci0rCQl9Ci0rCSAgICB9ICRvcHRpb25zCi0rCX0KLSsgICAg fV0KLSt9Ci0rCi0gIyBSZXR1cm4gMSBpZiB0aGUgdGFyZ2V0IHN1cHBvcnRzIGV4ZWN1dGluZyBB bHRpVmVjIGluc3RydWN0aW9ucywgMAotICMgb3RoZXJ3aXNlLiAgQ2FjaGUgdGhlIHJlc3VsdC4K LSAKLUBAIC04ODMsMTIgKzkwOSwxMyBAQCBwcm9jIGNoZWNrX3ZteF9od19hdmFpbGFibGUgeyB9 IHsKLSAJICAgIGV4cHIgMAotIAl9IGVsc2UgewotIAkgICAgIyBNb3N0IHRhcmdldHMgZG9uJ3Qg cmVxdWlyZSBzcGVjaWFsIGZsYWdzIGZvciB0aGlzIHRlc3QgY2FzZSwgYnV0Ci0tCSAgICAjIERh cndpbiBkb2VzLgotKwkgICAgIyBEYXJ3aW4gZG9lcy4gIEp1c3QgdG8gYmUgc3VyZSwgbWFrZSBz dXJlIFZTWCBpcyBub3QgZW5hYmxlZCBmb3IKLSsJICAgICMgdGhlIGFsdGl2ZWMgdGVzdHMuCi0g CSAgICBpZiB7IFtpc3RhcmdldCAqLSotZGFyd2luKl0KLSAJCSB8fCBbaXN0YXJnZXQgKi0qLWFp eCpdIH0gewotLQkJc2V0IG9wdGlvbnMgIi1tYWx0aXZlYyIKLSsJCXNldCBvcHRpb25zICItbWFs dGl2ZWMgLW1uby12c3giCi0gCSAgICB9IGVsc2UgewotLQkJc2V0IG9wdGlvbnMgIiIKLSsJCXNl dCBvcHRpb25zICItbW5vLXZzeCIKLSAJICAgIH0KLSAJICAgIGNoZWNrX3J1bnRpbWVfbm9jYWNo ZSB2bXhfaHdfYXZhaWxhYmxlIHsKLSAJCWludCBtYWluKCkKLUBAIC0xNTE5LDYgKzE1NDYsMzMg QEAgcHJvYyBjaGVja19lZmZlY3RpdmVfdGFyZ2V0X3Bvd2VycGNfYWx0aQotICAgICB9Ci0gfQot IAotKyMgUmV0dXJuIDEgaWYgdGhpcyBpcyBhIFBvd2VyUEMgdGFyZ2V0IHN1cHBvcnRpbmcgLW12 c3gKLSsKLStwcm9jIGNoZWNrX2VmZmVjdGl2ZV90YXJnZXRfcG93ZXJwY192c3hfb2sgeyB9IHsK LSsgICAgaWYgeyAoW2lzdGFyZ2V0IHBvd2VycGMqLSotKl0KLSsgICAgICAgICAmJiAhW2lzdGFy Z2V0IHBvd2VycGMtKi1saW51eCpwYWlyZWQqXSkKLSsJIHx8IFtpc3RhcmdldCByczYwMDAtKi0q XSB9IHsKLSsJIyBBbHRpVmVjIGlzIG5vdCBzdXBwb3J0ZWQgb24gQUlYIGJlZm9yZSA1LjMuCi0r CWlmIHsgW2lzdGFyZ2V0IHBvd2VycGMqLSotYWl4NCpdCi0rCSAgICAgfHwgW2lzdGFyZ2V0IHBv d2VycGMqLSotYWl4NS4xKl0gCi0rCSAgICAgfHwgW2lzdGFyZ2V0IHBvd2VycGMqLSotYWl4NS4y Kl0gfSB7Ci0rCSAgICByZXR1cm4gMAotKwl9Ci0rCXJldHVybiBbY2hlY2tfbm9fY29tcGlsZXJf bWVzc2FnZXMgcG93ZXJwY192c3hfb2sgb2JqZWN0IHsKLSsJICAgIGludCBtYWluICh2b2lkKSB7 Ci0rI2lmZGVmIF9fTUFDSF9fCi0rCQlhc20gdm9sYXRpbGUgKCJ4eGxvciB2czAsdnMwLHZzMCIp OwotKyNlbHNlCi0rCQlhc20gdm9sYXRpbGUgKCJ4eGxvciAwLDAsMCIpOwotKyNlbmRpZgotKwkJ cmV0dXJuIDA7Ci0rCSAgICB9Ci0rCX0gIi1tdnN4Il0KLSsgICAgfSBlbHNlIHsKLSsJcmV0dXJu IDAKLSsgICAgfQotK30KLSsKLSAjIFJldHVybiAxIGlmIHRoaXMgaXMgYSBQb3dlclBDIHRhcmdl dCBzdXBwb3J0aW5nIC1tY3B1PWNlbGwuCi0gCi0gcHJvYyBjaGVja19lZmZlY3RpdmVfdGFyZ2V0 X3Bvd2VycGNfcHB1X29rIHsgfSB7Ci0tLS0gZ2NjL2NvbmZpZy5pbgkoLi4uL3RydW5rKQkocmV2 aXNpb24gMTQ0NTU3KQotKysrIGdjYy9jb25maWcuaW4JKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3 LW1laXNzbmVyKQkocmV2aXNpb24gMTQ0NjkyKQotQEAgLTMzNCwxMiArMzM0LDE4IEBACi0gI2Vu ZGlmCi0gCi0gCi0tLyogRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIHBvcGNudGIg ZmllbGQuICovCi0rLyogRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIHBvcGNudGIg aW5zdHJ1Y3Rpb24uICovCi0gI2lmbmRlZiBVU0VEX0ZPUl9UQVJHRVQKLSAjdW5kZWYgSEFWRV9B U19QT1BDTlRCCi0gI2VuZGlmCi0gCi0gCi0rLyogRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1 cHBvcnRzIHBvcGNudGQgaW5zdHJ1Y3Rpb24uICovCi0rI2lmbmRlZiBVU0VEX0ZPUl9UQVJHRVQK LSsjdW5kZWYgSEFWRV9BU19QT1BDTlRECi0rI2VuZGlmCi0rCi0rCi0gLyogRGVmaW5lIGlmIHlv dXIgYXNzZW1ibGVyIHN1cHBvcnRzIC5yZWdpc3Rlci4gKi8KLSAjaWZuZGVmIFVTRURfRk9SX1RB UkdFVAotICN1bmRlZiBIQVZFX0FTX1JFR0lTVEVSX1BTRVVET19PUAotLS0tIGdjYy9jb25maWd1 cmUuYWMJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NDU1NykKLSsrKyBnY2MvY29uZmlndXJlLmFj CSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlzaW9uIDE0NDY5MikKLUBA IC0yLDcgKzIsNyBAQAotICMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBnZW5l cmF0ZSBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0LgotIAotICMgQ29weXJpZ2h0IDE5OTcsIDE5OTgs IDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsCi0tIyAyMDA3 LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgMjAwNywgMjAwOCwgMjAw OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLSAjVGhpcyBmaWxlIGlzIHBhcnQg b2YgR0NDLgotIAotQEAgLTMwODAsNyArMzA4MCw3IEBAIGZvbzoJbm9wCi0gICAgIGVzYWMKLSAK LSAgICAgZ2NjX0dBU19DSEVDS19GRUFUVVJFKFttb3ZlIGZwIGdwciBzdXBwb3J0XSwKLS0gICAg ICBnY2NfY3ZfYXNfcG93ZXJwY19tZnBncHIsIFs5LDk5LDBdLCwKLSsgICAgICBnY2NfY3ZfYXNf cG93ZXJwY19tZnBncHIsIFsyLDE5LDJdLCwKLSAgICAgICBbJGNvbmZ0ZXN0X3NdLCwKLSAgICAg ICBbQUNfREVGSU5FKEhBVkVfQVNfTUZQR1BSLCAxLAotIAkgIFtEZWZpbmUgaWYgeW91ciBhc3Nl bWJsZXIgc3VwcG9ydHMgbWZmZ3ByIGFuZCBtZnRncHIuXSldKQotQEAgLTMxMTQsNyArMzExNCw3 IEBAIExDRjA6Ci0gICAgIGVzYWMKLSAKLSAgICAgZ2NjX0dBU19DSEVDS19GRUFUVVJFKFtjb21w YXJlIGJ5dGVzIHN1cHBvcnRdLAotLSAgICAgIGdjY19jdl9hc19wb3dlcnBjX2NtcGIsIFs5LDk5 LDBdLCAtYTMyLAotKyAgICAgIGdjY19jdl9hc19wb3dlcnBjX2NtcGIsIFsyLDE5LDJdLCAtYTMy LAotICAgICAgIFskY29uZnRlc3Rfc10sLAotICAgICAgIFtBQ19ERUZJTkUoSEFWRV9BU19DTVBC LCAxLAotIAkgIFtEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgY21wYi5dKV0pCi1A QCAtMzEyOSw3ICszMTI5LDcgQEAgTENGMDoKLSAgICAgZXNhYwotIAotICAgICBnY2NfR0FTX0NI RUNLX0ZFQVRVUkUoW2RlY2ltYWwgZmxvYXQgc3VwcG9ydF0sCi0tICAgICAgZ2NjX2N2X2FzX3Bv d2VycGNfZGZwLCBbOSw5OSwwXSwgLWEzMiwKLSsgICAgICBnY2NfY3ZfYXNfcG93ZXJwY19kZnAs IFsyLDE5LDJdLCAtYTMyLAotICAgICAgIFskY29uZnRlc3Rfc10sLAotICAgICAgIFtBQ19ERUZJ TkUoSEFWRV9BU19ERlAsIDEsCi0gCSAgW0RlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0 cyBERlAgaW5zdHJ1Y3Rpb25zLl0pXSkKLUBAIC0zMTQ0LDExICszMTQ0LDI2IEBAIExDRjA6Ci0g ICAgIGVzYWMKLSAKLSAgICAgZ2NjX0dBU19DSEVDS19GRUFUVVJFKFt2ZWN0b3Itc2NhbGFyIHN1 cHBvcnRdLAotLSAgICAgIGdjY19jdl9hc19wb3dlcnBjX3ZzeCwgWzksOTksMF0sIC1hMzIsCi0r ICAgICAgZ2NjX2N2X2FzX3Bvd2VycGNfdnN4LCBbMiwxOSwyXSwgLWEzMiwKLSAgICAgICBbJGNv bmZ0ZXN0X3NdLCwKLSAgICAgICBbQUNfREVGSU5FKEhBVkVfQVNfVlNYLCAxLAotIAkgIFtEZWZp bmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgVlNYIGluc3RydWN0aW9ucy5dKV0pCi0gCi0r ICAgIGNhc2UgJHRhcmdldCBpbgotKyAgICAgICotKi1haXgqKSBjb25mdGVzdF9zPScJLm1hY2hp bmUgInB3cjciCi0rCS5jc2VjdCAudGV4dFtbUFJdXQotKwlwb3BjbnRkIDMsMyc7OwotKyAgICAg ICopIGNvbmZ0ZXN0X3M9JwkubWFjaGluZSBwb3dlcjcKLSsJLnRleHQKLSsJcG9wY250ZCAzLDMn OzsKLSsgICAgZXNhYwotKwotKyAgICBnY2NfR0FTX0NIRUNLX0ZFQVRVUkUoW3BvcGNudGQgc3Vw cG9ydF0sCi0rICAgICAgZ2NjX2N2X2FzX3Bvd2VycGNfcG9wY250ZCwgWzIsMTksMl0sIC1hMzIs Ci0rICAgICAgWyRjb25mdGVzdF9zXSwsCi0rICAgICAgW0FDX0RFRklORShIQVZFX0FTX1BPUENO VEQsIDEsCi0rCSAgW0RlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyBQT1BDTlREIGlu c3RydWN0aW9ucy5dKV0pCi0rCi0gICAgIGdjY19HQVNfQ0hFQ0tfRkVBVFVSRShbLmdudV9hdHRy aWJ1dGUgc3VwcG9ydF0sCi0gICAgICAgZ2NjX2N2X2FzX3Bvd2VycGNfZ251X2F0dHJpYnV0ZSwg WzIsMTgsMF0sLAotICAgICAgIFsuZ251X2F0dHJpYnV0ZSA0LDFdLCwKLS0tLSBnY2MvY29uZmln dXJlCSguLi4vdHJ1bmspCShyZXZpc2lvbiAxNDQ1NTcpCi0rKysgZ2NjL2NvbmZpZ3VyZQkoLi4u L2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDQ2OTIpCi1AQCAtMjMy MjUsNyArMjMyMjUsNyBAQCBpZiB0ZXN0ICIke2djY19jdl9hc19wb3dlcnBjX21mcGdwcitzZXR9 Ci0gZWxzZQotICAgZ2NjX2N2X2FzX3Bvd2VycGNfbWZwZ3ByPW5vCi0gICAgIGlmIHRlc3QgJGlu X3RyZWVfZ2FzID0geWVzOyB0aGVuCi0tICAgIGlmIHRlc3QgJGdjY19jdl9nYXNfdmVycyAtZ2Ug YGV4cHIgXCggXCggOSBcKiAxMDAwIFwpICsgOTkgXCkgXCogMTAwMCArIDBgCi0rICAgIGlmIHRl c3QgJGdjY19jdl9nYXNfdmVycyAtZ2UgYGV4cHIgXCggXCggMiBcKiAxMDAwIFwpICsgMTkgXCkg XCogMTAwMCArIDJgCi0gICB0aGVuIGdjY19jdl9hc19wb3dlcnBjX21mcGdwcj15ZXMKLSBmaQot ICAgZWxpZiB0ZXN0IHgkZ2NjX2N2X2FzICE9IHg7IHRoZW4KLUBAIC0yMzMyMSw3ICsyMzMyMSw3 IEBAIGlmIHRlc3QgIiR7Z2NjX2N2X2FzX3Bvd2VycGNfY21wYitzZXR9IiAKLSBlbHNlCi0gICBn Y2NfY3ZfYXNfcG93ZXJwY19jbXBiPW5vCi0gICAgIGlmIHRlc3QgJGluX3RyZWVfZ2FzID0geWVz OyB0aGVuCi0tICAgIGlmIHRlc3QgJGdjY19jdl9nYXNfdmVycyAtZ2UgYGV4cHIgXCggXCggOSBc KiAxMDAwIFwpICsgOTkgXCkgXCogMTAwMCArIDBgCi0rICAgIGlmIHRlc3QgJGdjY19jdl9nYXNf dmVycyAtZ2UgYGV4cHIgXCggXCggMiBcKiAxMDAwIFwpICsgMTkgXCkgXCogMTAwMCArIDJgCi0g ICB0aGVuIGdjY19jdl9hc19wb3dlcnBjX2NtcGI9eWVzCi0gZmkKLSAgIGVsaWYgdGVzdCB4JGdj Y19jdl9hcyAhPSB4OyB0aGVuCi1AQCAtMjMzNjcsNyArMjMzNjcsNyBAQCBpZiB0ZXN0ICIke2dj Y19jdl9hc19wb3dlcnBjX2RmcCtzZXR9IiA9Ci0gZWxzZQotICAgZ2NjX2N2X2FzX3Bvd2VycGNf ZGZwPW5vCi0gICAgIGlmIHRlc3QgJGluX3RyZWVfZ2FzID0geWVzOyB0aGVuCi0tICAgIGlmIHRl c3QgJGdjY19jdl9nYXNfdmVycyAtZ2UgYGV4cHIgXCggXCggOSBcKiAxMDAwIFwpICsgOTkgXCkg XCogMTAwMCArIDBgCi0rICAgIGlmIHRlc3QgJGdjY19jdl9nYXNfdmVycyAtZ2UgYGV4cHIgXCgg XCggMiBcKiAxMDAwIFwpICsgMTkgXCkgXCogMTAwMCArIDJgCi0gICB0aGVuIGdjY19jdl9hc19w b3dlcnBjX2RmcD15ZXMKLSBmaQotICAgZWxpZiB0ZXN0IHgkZ2NjX2N2X2FzICE9IHg7IHRoZW4K LUBAIC0yMzQxMyw3ICsyMzQxMyw3IEBAIGlmIHRlc3QgIiR7Z2NjX2N2X2FzX3Bvd2VycGNfdnN4 K3NldH0iID0KLSBlbHNlCi0gICBnY2NfY3ZfYXNfcG93ZXJwY192c3g9bm8KLSAgICAgaWYgdGVz dCAkaW5fdHJlZV9nYXMgPSB5ZXM7IHRoZW4KLS0gICAgaWYgdGVzdCAkZ2NjX2N2X2dhc192ZXJz IC1nZSBgZXhwciBcKCBcKCA5IFwqIDEwMDAgXCkgKyA5OSBcKSBcKiAxMDAwICsgMGAKLSsgICAg aWYgdGVzdCAkZ2NjX2N2X2dhc192ZXJzIC1nZSBgZXhwciBcKCBcKCAyIFwqIDEwMDAgXCkgKyAx OSBcKSBcKiAxMDAwICsgMmAKLSAgIHRoZW4gZ2NjX2N2X2FzX3Bvd2VycGNfdnN4PXllcwotIGZp Ci0gICBlbGlmIHRlc3QgeCRnY2NfY3ZfYXMgIT0geDsgdGhlbgotQEAgLTIzNDQzLDYgKzIzNDQz LDUyIEBAIF9BQ0VPRgotIAotIGZpCi0gCi0rICAgIGNhc2UgJHRhcmdldCBpbgotKyAgICAgICot Ki1haXgqKSBjb25mdGVzdF9zPScJLm1hY2hpbmUgInB3cjciCi0rCS5jc2VjdCAudGV4dFtQUl0K LSsJcG9wY250ZCAzLDMnOzsKLSsgICAgICAqKSBjb25mdGVzdF9zPScJLm1hY2hpbmUgcG93ZXI3 Ci0rCS50ZXh0Ci0rCXBvcGNudGQgMywzJzs7Ci0rICAgIGVzYWMKLSsKLSsgICAgZWNobyAiJGFz X21lOiRMSU5FTk86IGNoZWNraW5nIGFzc2VtYmxlciBmb3IgcG9wY250ZCBzdXBwb3J0IiA+JjUK LStlY2hvICRFQ0hPX04gImNoZWNraW5nIGFzc2VtYmxlciBmb3IgcG9wY250ZCBzdXBwb3J0Li4u ICRFQ0hPX0MiID4mNgotK2lmIHRlc3QgIiR7Z2NjX2N2X2FzX3Bvd2VycGNfcG9wY250ZCtzZXR9 IiA9IHNldDsgdGhlbgotKyAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKLStl bHNlCi0rICBnY2NfY3ZfYXNfcG93ZXJwY19wb3BjbnRkPW5vCi0rICAgIGlmIHRlc3QgJGluX3Ry ZWVfZ2FzID0geWVzOyB0aGVuCi0rICAgIGlmIHRlc3QgJGdjY19jdl9nYXNfdmVycyAtZ2UgYGV4 cHIgXCggXCggMiBcKiAxMDAwIFwpICsgMTkgXCkgXCogMTAwMCArIDJgCi0rICB0aGVuIGdjY19j dl9hc19wb3dlcnBjX3BvcGNudGQ9eWVzCi0rZmkKLSsgIGVsaWYgdGVzdCB4JGdjY19jdl9hcyAh PSB4OyB0aGVuCi0rICAgIGVjaG8gIiRjb25mdGVzdF9zIiA+IGNvbmZ0ZXN0LnMKLSsgICAgaWYg eyBhY190cnk9JyRnY2NfY3ZfYXMgLWEzMiAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LnMgPiY1Jwot KyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLSsgIChl dmFsICRhY190cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgZWNobyAiJGFzX21lOiRMSU5F Tk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH0KLSsg ICAgdGhlbgotKwlnY2NfY3ZfYXNfcG93ZXJwY19wb3BjbnRkPXllcwotKyAgICBlbHNlCi0rICAg ICAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXMiID4mNQotKyAgICAgIGNhdCBj b25mdGVzdC5zID4mNQotKyAgICBmaQotKyAgICBybSAtZiBjb25mdGVzdC5vIGNvbmZ0ZXN0LnMK LSsgIGZpCi0rZmkKLStlY2hvICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkZ2NjX2N2X2FzX3Bv d2VycGNfcG9wY250ZCIgPiY1Ci0rZWNobyAiJHtFQ0hPX1R9JGdjY19jdl9hc19wb3dlcnBjX3Bv cGNudGQiID4mNgotK2lmIHRlc3QgJGdjY19jdl9hc19wb3dlcnBjX3BvcGNudGQgPSB5ZXM7IHRo ZW4KLSsKLStjYXQgPj5jb25mZGVmcy5oIDw8XF9BQ0VPRgotKyNkZWZpbmUgSEFWRV9BU19QT1BD TlREIDEKLStfQUNFT0YKLSsKLStmaQotKwotICAgICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hl Y2tpbmcgYXNzZW1ibGVyIGZvciAuZ251X2F0dHJpYnV0ZSBzdXBwb3J0IiA+JjUKLSBlY2hvICRF Q0hPX04gImNoZWNraW5nIGFzc2VtYmxlciBmb3IgLmdudV9hdHRyaWJ1dGUgc3VwcG9ydC4uLiAk RUNIT19DIiA+JjYKLSBpZiB0ZXN0ICIke2djY19jdl9hc19wb3dlcnBjX2dudV9hdHRyaWJ1dGUr c2V0fSIgPSBzZXQ7IHRoZW4KLS0tLSBnY2MvY29uZmlnL3JzNjAwMC9haXg1My5oCSguLi4vdHJ1 bmspCShyZXZpc2lvbiAxNDQ1NTcpCi0rKysgZ2NjL2NvbmZpZy9yczYwMDAvYWl4NTMuaAkoLi4u L2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDQ2OTIpCi1AQCAtNTcs MjAgKzU3LDI0IEBAIGRvIHsJCQkJCQkJCQlcCi0gI3VuZGVmIEFTTV9TUEVDCi0gI2RlZmluZSBB U01fU1BFQyAiLXUgJXttYWl4NjQ6LWE2NCAleyFtY3B1KjotbXBwYzY0fX0gJShhc21fY3B1KSIK LSAKLS0vKiBDb21tb24gQVNNIGRlZmluaXRpb25zIHVzZWQgYnkgQVNNX1NQRUMgYW1vbmdzdCB0 aGUgdmFyaW91cyB0YXJnZXRzCi0tICAgZm9yIGhhbmRsaW5nIC1tY3B1PXh4eCBzd2l0Y2hlcy4g ICovCi0rLyogQ29tbW9uIEFTTSBkZWZpbml0aW9ucyB1c2VkIGJ5IEFTTV9TUEVDIGFtb25nc3Qg dGhlIHZhcmlvdXMgdGFyZ2V0cyBmb3IKLSsgICBoYW5kbGluZyAtbWNwdT14eHggc3dpdGNoZXMu ICBUaGVyZSBpcyBhIHBhcmFsbGVsIGxpc3QgaW4gZHJpdmVyLXJzNjAwMC5jIHRvCi0rICAgcHJv dmlkZSB0aGUgZGVmYXVsdCBhc3NlbWJsZXIgb3B0aW9ucyBpZiB0aGUgdXNlciB1c2VzIC1tY3B1 PW5hdGl2ZSwgc28gaWYKLSsgICB5b3UgbWFrZSBjaGFuZ2VzIGhlcmUsIG1ha2UgdGhlbSB0aGVy ZSBhbHNvLiAgKi8KLSAjdW5kZWYgQVNNX0NQVV9TUEVDCi0gI2RlZmluZSBBU01fQ1BVX1NQRUMg XAotICIleyFtY3B1KjogJXshbWFpeDY0OiBcCi0gICAle21wb3dlcnBjNjQ6IC1tcHBjNjR9IFwK LSAgICV7bWFsdGl2ZWM6IC1tOTcwfSBcCi0gICAleyFtYWx0aXZlYzogJXshbXBvd2VyNjQ6ICUo YXNtX2RlZmF1bHQpfX19fSBcCi0rJXttY3B1PW5hdGl2ZTogJShhc21fY3B1X25hdGl2ZSl9IFwK LSAle21jcHU9cG93ZXIzOiAtbTYyMH0gXAotICV7bWNwdT1wb3dlcjQ6IC1tcHdyNH0gXAotICV7 bWNwdT1wb3dlcjU6IC1tcHdyNX0gXAotICV7bWNwdT1wb3dlcjUrOiAtbXB3cjV4fSBcCi0gJXtt Y3B1PXBvd2VyNjogLW1wd3I2fSBcCi0gJXttY3B1PXBvd2VyNng6IC1tcHdyNn0gXAotKyV7bWNw dT1wb3dlcjc6IC1tcHdyN30gXAotICV7bWNwdT1wb3dlcnBjOiAtbXBwY30gXAotICV7bWNwdT1y czY0YTogLW1wcGN9IFwKLSAle21jcHU9NjAzOiAtbTYwM30gXAotLS0tIGdjYy9jb25maWcvcnM2 MDAwL3ZlY3Rvci5tZAkoLi4uL3RydW5rKQkocmV2aXNpb24gMCkKLSsrKyBnY2MvY29uZmlnL3Jz NjAwMC92ZWN0b3IubWQJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNp b24gMTQ0NjkyKQotQEAgLTAsMCArMSw1MTggQEAKLSs7OyBFeHBhbmRlciBkZWZpbml0aW9ucyBm b3IgdmVjdG9yIHN1cHBvcnQgYmV0d2VlbiBhbHRpdmVjICYgdnN4LiAgTm8KLSs7OyBpbnN0cnVj dGlvbnMgYXJlIGluIHRoaXMgZmlsZSwgdGhpcyBmaWxlIHByb3ZpZGVzIHRoZSBnZW5lcmljIHZl Y3RvcgotKzs7IGV4cGFuZGVyLCBhbmQgdGhlIGFjdHVhbCB2ZWN0b3IgaW5zdHJ1Y3Rpb25zIHdp bGwgYmUgaW4gYWx0aXZlYy5tZCBhbmQKLSs7OyB2c3gubWQKLSsKLSs7OyBDb3B5cmlnaHQgKEMp IDIwMDkKLSs7OyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSs7OyBDb250cmlidXRl ZCBieSBNaWNoYWVsIE1laXNzbmVyIDxtZWlzc25lckBsaW51eC52bmV0LmlibS5jb20+Ci0rCi0r OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgotKwotKzs7IEdDQyBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rOzsgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSs7 OyBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAo YXQgeW91cgotKzs7IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rOzsgR0NDIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VU Ci0rOzsgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Yg TUVSQ0hBTlRBQklMSVRZCi0rOzsgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotKzs7IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KLSsKLSs7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQotKzs7IGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09Q WUlORzMuICBJZiBub3Qgc2VlCi0rOzsgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgot KwotKwotKzs7IFZlY3RvciBpbnQgbW9kZXMKLSsoZGVmaW5lX21vZGVfaXRlcmF0b3IgVkVDX0kg W1YxNlFJIFY4SEkgVjRTSV0pCi0rCi0rOzsgVmVjdG9yIGZsb2F0IG1vZGVzCi0rKGRlZmluZV9t b2RlX2l0ZXJhdG9yIFZFQ19GIFtWNFNGIFYyREZdKQotKwotKzs7IFZlY3RvciBsb2dpY2FsIG1v ZGVzCi0rKGRlZmluZV9tb2RlX2l0ZXJhdG9yIFZFQ19MIFtWMTZRSSBWOEhJIFY0U0kgVjJESSBW NFNGIFYyREYgVEldKQotKwotKzs7IFZlY3RvciBtb2RlcyBmb3IgbW92ZXMuICBEb24ndCBkbyBU SW1vZGUgaGVyZS4KLSsoZGVmaW5lX21vZGVfaXRlcmF0b3IgVkVDX00gW1YxNlFJIFY4SEkgVjRT SSBWMkRJIFY0U0YgVjJERl0pCi0rCi0rOzsgVmVjdG9yIGNvbXBhcmlzb24gbW9kZXMKLSsoZGVm aW5lX21vZGVfaXRlcmF0b3IgVkVDX0MgW1YxNlFJIFY4SEkgVjRTSSBWNFNGIFYyREZdKQotKwot Kzs7IEJhc2UgdHlwZSBmcm9tIHZlY3RvciBtb2RlCi0rKGRlZmluZV9tb2RlX2F0dHIgVkVDX2Jh c2UgWyhWMTZRSSAiUUkiKQotKwkJCSAgICAoVjhISSAgIkhJIikKLSsJCQkgICAgKFY0U0kgICJT SSIpCi0rCQkJICAgIChWMkRJICAiREkiKQotKwkJCSAgICAoVjRTRiAgIlNGIikKLSsJCQkgICAg KFYyREYgICJERiIpCi0rCQkJICAgIChUSSAgICAiVEkiKV0pCi0rCi0rOzsgU2FtZSBzaXplIGlu dGVnZXIgdHlwZSBmb3IgZmxvYXRpbmcgcG9pbnQgZGF0YQotKyhkZWZpbmVfbW9kZV9hdHRyIFZF Q19pbnQgWyhWNFNGICAidjRzaSIpCi0rCQkJICAgKFYyREYgICJ2MmRpIildKQotKwotKyhkZWZp bmVfbW9kZV9hdHRyIFZFQ19JTlQgWyhWNFNGICAiVjRTSSIpCi0rCQkJICAgKFYyREYgICJWMkRJ IildKQotKwotKzs7IFZlY3RvciBtb3ZlIGluc3RydWN0aW9ucy4KLSsoZGVmaW5lX2V4cGFuZCAi bW92PG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX00gMCAibm9uaW1tZWRpYXRl X29wZXJhbmQiICIiKQotKwkobWF0Y2hfb3BlcmFuZDpWRUNfTSAxICJhbnlfb3BlcmFuZCIgIiIp KV0KLSsgICJWRUNUT1JfTUVNX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUpIgotK3sKLSsg IC8qIG1vZGVzIHdpdGhvdXQgc3BlY2lhbCBoYW5kbGluZyBqdXN0IGdlbmVyYXRlIHRoZSBub3Jt YWwgU0VUIG9wZXJhdGlvbi4gICovCi0rICBpZiAoPE1PREU+bW9kZSAhPSBUSW1vZGUgJiYgPE1P REU+bW9kZSAhPSBWMkRJbW9kZSAmJiA8TU9ERT5tb2RlICE9IFYyREZtb2RlKQotKyAgICB7Ci0r ICAgICAgcnM2MDAwX2VtaXRfbW92ZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCA8TU9ERT5t b2RlKTsKLSsgICAgICBET05FOwotKyAgICB9Ci0rICBlbHNlIGlmICghdmxvZ2ljYWxfb3BlcmFu ZCAob3BlcmFuZHNbMF0sIDxNT0RFPm1vZGUpCi0rCSAgICYmICF2bG9naWNhbF9vcGVyYW5kIChv cGVyYW5kc1sxXSwgPE1PREU+bW9kZSkpCi0rICAgIG9wZXJhbmRzWzFdID0gZm9yY2VfcmVnICg8 TU9ERT5tb2RlLCBvcGVyYW5kc1sxXSk7Ci0rfSkKLSsKLSs7OyBHZW5lcmljIHZlY3RvciBmbG9h dGluZyBwb2ludCBsb2FkL3N0b3JlIGluc3RydWN0aW9ucy4gIFRoZXNlIHdpbGwgbWF0Y2gKLSs7 OyBpbnNucyBkZWZpbmVkIGluIHZzeC5tZCBvciBhbHRpdmVjLm1kIGRlcGVuZGluZyBvbiB0aGUg c3dpdGNoZXMuCi0rKGRlZmluZV9leHBhbmQgInZlY3Rvcl9sb2FkXzxtb2RlPiIKLSsgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlZFQ19NIDAgInZmbG9hdF9vcGVyYW5kIiAiIikKLSsJKG1hdGNoX29w ZXJhbmQ6VkVDX00gMSAibWVtb3J5X29wZXJhbmQiICIiKSldCi0rICAiVkVDVE9SX01FTV9BTFRJ VkVDX09SX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICIiKQotKwotKyhkZWZpbmVfZXhwYW5kICJ2 ZWN0b3Jfc3RvcmVfPG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX00gMCAibWVt b3J5X29wZXJhbmQiICIiKQotKwkobWF0Y2hfb3BlcmFuZDpWRUNfTSAxICJ2ZmxvYXRfb3BlcmFu ZCIgIiIpKV0KLSsgICJWRUNUT1JfTUVNX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUpIgot KyAgIiIpCi0rCi0rOzsgU3BsaXRzIGlmIGEgR1BSIHJlZ2lzdGVyIHdhcyBjaG9zZW4gZm9yIHRo ZSBtb3ZlCi0rKGRlZmluZV9zcGxpdAotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0wgMCAi bm9uaW1tZWRpYXRlX29wZXJhbmQiICIiKQotKyAgICAgICAgKG1hdGNoX29wZXJhbmQ6VkVDX0wg MSAiaW5wdXRfb3BlcmFuZCIgIiIpKV0KLSsgICJWRUNUT1JfTUVNX0FMVElWRUNfT1JfVlNYX1Ag KDxNT0RFPm1vZGUpCi0rICAgJiYgcmVsb2FkX2NvbXBsZXRlZAotKyAgICYmIGdwcl9vcl9ncHJf cCAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKSIKLSsgIFsocGMpXQotK3sKLSsgIHJzNjAwMF9z cGxpdF9tdWx0aXJlZ19tb3ZlIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pOwotKyAgRE9ORTsK LSt9KQotKwotKwwKLSs7OyBHZW5lcmljIGZsb2F0aW5nIHBvaW50IHZlY3RvciBhcml0aG1ldGlj IHN1cHBvcnQKLSsoZGVmaW5lX2V4cGFuZCAiYWRkPG1vZGU+MyIKLSsgIFsoc2V0IChtYXRjaF9v cGVyYW5kOlZFQ19GIDAgInZmbG9hdF9vcGVyYW5kIiAiIikKLSsJKHBsdXM6VkVDX0YgKG1hdGNo X29wZXJhbmQ6VkVDX0YgMSAidmZsb2F0X29wZXJhbmQiICIiKQotKwkJICAgIChtYXRjaF9vcGVy YW5kOlZFQ19GIDIgInZmbG9hdF9vcGVyYW5kIiAiIikpKV0KLSsgICJWRUNUT1JfVU5JVF9BTFRJ VkVDX09SX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICIiKQotKwotKyhkZWZpbmVfZXhwYW5kICJz dWI8bW9kZT4zIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMCAidmZsb2F0X29wZXJh bmQiICIiKQotKwkobWludXM6VkVDX0YgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMSAidmZsb2F0X29w ZXJhbmQiICIiKQotKwkJICAgICAobWF0Y2hfb3BlcmFuZDpWRUNfRiAyICJ2ZmxvYXRfb3BlcmFu ZCIgIiIpKSldCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSki Ci0rICAiIikKLSsKLSsoZGVmaW5lX2V4cGFuZCAibXVsPG1vZGU+MyIKLSsgIFsoc2V0IChtYXRj aF9vcGVyYW5kOlZFQ19GIDAgInZmbG9hdF9vcGVyYW5kIiAiIikKLSsJKG11bHQ6VkVDX0YgKG1h dGNoX29wZXJhbmQ6VkVDX0YgMSAidmZsb2F0X29wZXJhbmQiICIiKQotKwkJICAgIChtYXRjaF9v cGVyYW5kOlZFQ19GIDIgInZmbG9hdF9vcGVyYW5kIiAiIikpKV0KLSsgICIoVkVDVE9SX1VOSVRf VlNYX1AgKDxNT0RFPm1vZGUpCi0rICAgIHx8IChWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKDxNT0RF Pm1vZGUpICYmIFRBUkdFVF9GVVNFRF9NQUREKSkiCi0rICAiCi0rewotKyAgaWYgKDxNT0RFPm1v ZGUgPT0gVjRTRm1vZGUgJiYgVkVDVE9SX1VOSVRfQUxUSVZFQ19QICg8TU9ERT5tb2RlKSkKLSsg ICAgewotKyAgICAgIGVtaXRfaW5zbiAoZ2VuX2FsdGl2ZWNfbXVsdjRzZjMgKG9wZXJhbmRzWzBd LCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pKTsKLSsgICAgICBET05FOwotKyAgICB9Ci0rfSIp Ci0rCi0rKGRlZmluZV9leHBhbmQgImRpdjxtb2RlPjMiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFu ZDpWRUNfRiAwICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCi0rCShkaXY6VkVDX0YgKG1hdGNoX29wZXJh bmQ6VkVDX0YgMSAidmZsb2F0X29wZXJhbmQiICIiKQotKwkJICAgKG1hdGNoX29wZXJhbmQ6VkVD X0YgMiAidmZsb2F0X29wZXJhbmQiICIiKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9E RT5tb2RlKSIKLSsgICIiKQotKwotKyhkZWZpbmVfZXhwYW5kICJuZWc8bW9kZT4yIgotKyAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMCAidmZsb2F0X29wZXJhbmQiICIiKQotKwkobmVnOlZF Q19GIChtYXRjaF9vcGVyYW5kOlZFQ19GIDEgInZmbG9hdF9vcGVyYW5kIiAiIikpKV0KLSsgICJW RUNUT1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICIKLSt7Ci0rICBp ZiAoPE1PREU+bW9kZSA9PSBWNFNGbW9kZSAmJiBWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKDxNT0RF Pm1vZGUpKQotKyAgICB7Ci0rICAgICAgZW1pdF9pbnNuIChnZW5fYWx0aXZlY19uZWd2NHNmMiAo b3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKSk7Ci0rICAgICAgRE9ORTsKLSsgICAgfQotK30iKQot KwotKyhkZWZpbmVfZXhwYW5kICJhYnM8bW9kZT4yIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 VkVDX0YgMCAidmZsb2F0X29wZXJhbmQiICIiKQotKwkoYWJzOlZFQ19GIChtYXRjaF9vcGVyYW5k OlZFQ19GIDEgInZmbG9hdF9vcGVyYW5kIiAiIikpKV0KLSsgICJWRUNUT1JfVU5JVF9BTFRJVkVD X09SX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICIKLSt7Ci0rICBpZiAoPE1PREU+bW9kZSA9PSBW NFNGbW9kZSAmJiBWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKDxNT0RFPm1vZGUpKQotKyAgICB7Ci0r ICAgICAgZW1pdF9pbnNuIChnZW5fYWx0aXZlY19hYnN2NHNmMiAob3BlcmFuZHNbMF0sIG9wZXJh bmRzWzFdKSk7Ci0rICAgICAgRE9ORTsKLSsgICAgfQotK30iKQotKwotKyhkZWZpbmVfZXhwYW5k ICJzbWluPG1vZGU+MyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZFQ19GIDAgInJlZ2lzdGVy X29wZXJhbmQiICIiKQotKyAgICAgICAgKHNtaW46VkVDX0YgKG1hdGNoX29wZXJhbmQ6VkVDX0Yg MSAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0rCQkgICAgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMiAi cmVnaXN0ZXJfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hf UCAoPE1PREU+bW9kZSkiCi0rICAiIikKLSsKLSsoZGVmaW5lX2V4cGFuZCAic21heDxtb2RlPjMi Ci0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWRUNfRiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikK LSsgICAgICAgIChzbWF4OlZFQ19GIChtYXRjaF9vcGVyYW5kOlZFQ19GIDEgInJlZ2lzdGVyX29w ZXJhbmQiICIiKQotKwkJICAgIChtYXRjaF9vcGVyYW5kOlZFQ19GIDIgInJlZ2lzdGVyX29wZXJh bmQiICIiKSkpXQotKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUp IgotKyAgIiIpCi0rCi0rCi0rKGRlZmluZV9leHBhbmQgInNxcnQ8bW9kZT4yIgotKyAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6VkVDX0YgMCAidmZsb2F0X29wZXJhbmQiICIiKQotKwkoc3FydDpWRUNf RiAobWF0Y2hfb3BlcmFuZDpWRUNfRiAxICJ2ZmxvYXRfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVD VE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgIiIpCi0rCi0rKGRlZmluZV9leHBhbmQg ImZ0cnVuYzxtb2RlPjIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWRUNfRiAwICJ2ZmxvYXRf b3BlcmFuZCIgIiIpCi0rICAJKGZpeDpWRUNfRiAobWF0Y2hfb3BlcmFuZDpWRUNfRiAxICJ2Zmxv YXRfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1P REU+bW9kZSkiCi0rICAiIikKLSsKLSsMCi0rOzsgVmVjdG9yIGNvbXBhcmlzb25zCi0rKGRlZmlu ZV9leHBhbmQgInZjb25kPG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMCAi dmZsb2F0X29wZXJhbmQiICIiKQotKwkoaWZfdGhlbl9lbHNlOlZFQ19GCi0rCSAobWF0Y2hfb3Bl cmF0b3IgMyAiY29tcGFyaXNvbl9vcGVyYXRvciIKLSsJCQkgWyhtYXRjaF9vcGVyYW5kOlZFQ19G IDQgInZmbG9hdF9vcGVyYW5kIiAiIikKLSsJCQkgIChtYXRjaF9vcGVyYW5kOlZFQ19GIDUgInZm bG9hdF9vcGVyYW5kIiAiIildKQotKwkgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMSAidmZsb2F0X29w ZXJhbmQiICIiKQotKwkgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMiAidmZsb2F0X29wZXJhbmQiICIi KSkpXQotKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAg IgotK3sKLSsgIGlmIChyczYwMDBfZW1pdF92ZWN0b3JfY29uZF9leHByIChvcGVyYW5kc1swXSwg b3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJdLAotKwkJCQkgICAgb3BlcmFuZHNbM10sIG9wZXJhbmRz WzRdLCBvcGVyYW5kc1s1XSkpCi0rICAgIERPTkU7Ci0rICBlbHNlCi0rICAgIEZBSUw7Ci0rfSIp Ci0rCi0rKGRlZmluZV9leHBhbmQgInZjb25kPG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6VkVDX0kgMCAidmludF9vcGVyYW5kIiAiIikKLSsJKGlmX3RoZW5fZWxzZTpWRUNfSQotKwkg KG1hdGNoX29wZXJhdG9yIDMgImNvbXBhcmlzb25fb3BlcmF0b3IiCi0rCQkJIFsobWF0Y2hfb3Bl cmFuZDpWRUNfSSA0ICJ2aW50X29wZXJhbmQiICIiKQotKwkJCSAgKG1hdGNoX29wZXJhbmQ6VkVD X0kgNSAidmludF9vcGVyYW5kIiAiIildKQotKwkgKG1hdGNoX29wZXJhbmQ6VkVDX0kgMSAidmlu dF9vcGVyYW5kIiAiIikKLSsJIChtYXRjaF9vcGVyYW5kOlZFQ19JIDIgInZpbnRfb3BlcmFuZCIg IiIpKSldCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19QICg8TU9ERT5tb2RlKSIKLSsgICIKLSt7 Ci0rICBpZiAocnM2MDAwX2VtaXRfdmVjdG9yX2NvbmRfZXhwciAob3BlcmFuZHNbMF0sIG9wZXJh bmRzWzFdLCBvcGVyYW5kc1syXSwKLSsJCQkJICAgIG9wZXJhbmRzWzNdLCBvcGVyYW5kc1s0XSwg b3BlcmFuZHNbNV0pKQotKyAgICBET05FOwotKyAgZWxzZQotKyAgICBGQUlMOwotK30iKQotKwot KyhkZWZpbmVfZXhwYW5kICJ2Y29uZHU8bW9kZT4iCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpW RUNfSSAwICJ2aW50X29wZXJhbmQiICI9diIpCi0rCShpZl90aGVuX2Vsc2U6VkVDX0kKLSsJICht YXRjaF9vcGVyYXRvciAzICJjb21wYXJpc29uX29wZXJhdG9yIgotKwkJCSBbKG1hdGNoX29wZXJh bmQ6VkVDX0kgNCAidmludF9vcGVyYW5kIiAiIikKLSsJCQkgIChtYXRjaF9vcGVyYW5kOlZFQ19J IDUgInZpbnRfb3BlcmFuZCIgIiIpXSkKLSsJIChtYXRjaF9vcGVyYW5kOlZFQ19JIDEgInZpbnRf b3BlcmFuZCIgIiIpCi0rCSAobWF0Y2hfb3BlcmFuZDpWRUNfSSAyICJ2aW50X29wZXJhbmQiICIi KSkpXQotKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfUCAoPE1PREU+bW9kZSkiCi0rICAiCi0rewot KyAgaWYgKHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb25kX2V4cHIgKG9wZXJhbmRzWzBdLCBvcGVyYW5k c1sxXSwgb3BlcmFuZHNbMl0sCi0rCQkJCSAgICBvcGVyYW5kc1szXSwgb3BlcmFuZHNbNF0sIG9w ZXJhbmRzWzVdKSkKLSsgICAgRE9ORTsKLSsgIGVsc2UKLSsgICAgRkFJTDsKLSt9IikKLSsKLSso ZGVmaW5lX2V4cGFuZCAidmVjdG9yX2VxPG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 VkVDX0MgMCAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCi0rCShlcTpWRUNfQyAobWF0Y2hfb3BlcmFu ZDpWRUNfQyAxICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLSsJCSAgKG1hdGNoX29wZXJhbmQ6VkVD X0MgMiAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19P Ul9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAiIikKLSsKLSsoZGVmaW5lX2V4cGFuZCAidmVjdG9y X2d0PG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0MgMCAidmxvZ2ljYWxfb3Bl cmFuZCIgIiIpCi0rCShndDpWRUNfQyAobWF0Y2hfb3BlcmFuZDpWRUNfQyAxICJ2bG9naWNhbF9v cGVyYW5kIiAiIikKLSsJCSAgKG1hdGNoX29wZXJhbmQ6VkVDX0MgMiAidmxvZ2ljYWxfb3BlcmFu ZCIgIiIpKSldCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSki Ci0rICAiIikKLSsKLSsoZGVmaW5lX2V4cGFuZCAidmVjdG9yX2dlPG1vZGU+IgotKyAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6VkVDX0MgMCAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCi0rCShnZTpWRUNf QyAobWF0Y2hfb3BlcmFuZDpWRUNfQyAxICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLSsJCSAgKG1h dGNoX29wZXJhbmQ6VkVDX0MgMiAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVDVE9S X1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAiIikKLSsKLSsoZGVmaW5l X2V4cGFuZCAidmVjdG9yX2d0dTxtb2RlPiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZFQ19J IDAgInZpbnRfb3BlcmFuZCIgIiIpCi0rCShndHU6VkVDX0kgKG1hdGNoX29wZXJhbmQ6VkVDX0kg MSAidmludF9vcGVyYW5kIiAiIikKLSsJCSAgIChtYXRjaF9vcGVyYW5kOlZFQ19JIDIgInZpbnRf b3BlcmFuZCIgIiIpKSldCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19QICg8TU9ERT5tb2RlKSIK LSsgICIiKQotKwotKyhkZWZpbmVfZXhwYW5kICJ2ZWN0b3JfZ2V1PG1vZGU+IgotKyAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6VkVDX0kgMCAidmludF9vcGVyYW5kIiAiIikKLSsJKGdldTpWRUNfSSAo bWF0Y2hfb3BlcmFuZDpWRUNfSSAxICJ2aW50X29wZXJhbmQiICIiKQotKwkJICAgKG1hdGNoX29w ZXJhbmQ6VkVDX0kgMiAidmludF9vcGVyYW5kIiAiIikpKV0KLSsgICJWRUNUT1JfVU5JVF9BTFRJ VkVDX1AgKDxNT0RFPm1vZGUpIgotKyAgIiIpCi0rCi0rOzsgTm90ZSB0aGUgYXJndW1lbnRzIGZv ciBfX2J1aWx0aW5fYWx0aXZlY192c2VsIGFyZSBvcDIsIG9wMSwgbWFzawotKzs7IHdoaWNoIGlz IGluIHRoZSByZXZlcnNlIG9yZGVyIHRoYXQgd2Ugd2FudAotKyhkZWZpbmVfZXhwYW5kICJ2ZWN0 b3JfdnNlbDxtb2RlPiIKLSsgIFsobWF0Y2hfb3BlcmFuZDpWRUNfRiAwICJ2bG9naWNhbF9vcGVy YW5kIiAiIikKLSsgICAobWF0Y2hfb3BlcmFuZDpWRUNfRiAxICJ2bG9naWNhbF9vcGVyYW5kIiAi IikKLSsgICAobWF0Y2hfb3BlcmFuZDpWRUNfRiAyICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLSsg ICAobWF0Y2hfb3BlcmFuZDpWRUNfRiAzICJ2bG9naWNhbF9vcGVyYW5kIiAiIildCi0rICAiVkVD VE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAiCi0rewotKyAgaWYg KFZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSkKLSsgICAgZW1pdF9pbnNuIChnZW5fdnN4 X3ZzZWw8bW9kZT4gKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1szXSwKLSsJCQkJICAgb3BlcmFuZHNb Ml0sIG9wZXJhbmRzWzFdKSk7Ci0rICBlbHNlCi0rICAgIGVtaXRfaW5zbiAoZ2VuX2FsdGl2ZWNf dnNlbDxtb2RlPiAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzNdLAotKwkJCQkgICAgICAgb3BlcmFu ZHNbMl0sIG9wZXJhbmRzWzFdKSk7Ci0rICBET05FOwotK30iKQotKwotKyhkZWZpbmVfZXhwYW5k ICJ2ZWN0b3JfdnNlbDxtb2RlPiIKLSsgIFsobWF0Y2hfb3BlcmFuZDpWRUNfSSAwICJ2bG9naWNh bF9vcGVyYW5kIiAiIikKLSsgICAobWF0Y2hfb3BlcmFuZDpWRUNfSSAxICJ2bG9naWNhbF9vcGVy YW5kIiAiIikKLSsgICAobWF0Y2hfb3BlcmFuZDpWRUNfSSAyICJ2bG9naWNhbF9vcGVyYW5kIiAi IikKLSsgICAobWF0Y2hfb3BlcmFuZDpWRUNfSSAzICJ2bG9naWNhbF9vcGVyYW5kIiAiIildCi0r ICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19QICg8TU9ERT5tb2RlKSIKLSsgICIKLSt7Ci0rICBlbWl0 X2luc24gKGdlbl9hbHRpdmVjX3ZzZWw8bW9kZT4gKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1szXSwK LSsJCQkJICAgICBvcGVyYW5kc1syXSwgb3BlcmFuZHNbMV0pKTsKLSsgIERPTkU7Ci0rfSIpCi0r Ci0rDAotKzs7IFZlY3RvciBsb2dpY2FsIGluc3RydWN0aW9ucwotKyhkZWZpbmVfZXhwYW5kICJ4 b3I8bW9kZT4zIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0wgMCAidmxvZ2ljYWxfb3Bl cmFuZCIgIiIpCi0rICAgICAgICAoeG9yOlZFQ19MIChtYXRjaF9vcGVyYW5kOlZFQ19MIDEgInZs b2dpY2FsX29wZXJhbmQiICIiKQotKwkJICAgKG1hdGNoX29wZXJhbmQ6VkVDX0wgMiAidmxvZ2lj YWxfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVDVE9SX01FTV9BTFRJVkVDX09SX1ZTWF9QICg8TU9E RT5tb2RlKSIKLSsgICIiKQotKwotKyhkZWZpbmVfZXhwYW5kICJpb3I8bW9kZT4zIgotKyAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0wgMCAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCi0rICAgICAg ICAoaW9yOlZFQ19MIChtYXRjaF9vcGVyYW5kOlZFQ19MIDEgInZsb2dpY2FsX29wZXJhbmQiICIi KQotKwkJICAgKG1hdGNoX29wZXJhbmQ6VkVDX0wgMiAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpKSld Ci0rICAiVkVDVE9SX01FTV9BTFRJVkVDX09SX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICIiKQot KwotKyhkZWZpbmVfZXhwYW5kICJhbmQ8bW9kZT4zIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 VkVDX0wgMCAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpCi0rICAgICAgICAoYW5kOlZFQ19MIChtYXRj aF9vcGVyYW5kOlZFQ19MIDEgInZsb2dpY2FsX29wZXJhbmQiICIiKQotKwkJICAgKG1hdGNoX29w ZXJhbmQ6VkVDX0wgMiAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVDVE9SX01FTV9B TFRJVkVDX09SX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICIiKQotKwotKyhkZWZpbmVfZXhwYW5k ICJvbmVfY21wbDxtb2RlPjIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWRUNfTCAwICJ2bG9n aWNhbF9vcGVyYW5kIiAiIikKLSsgICAgICAgIChub3Q6VkVDX0wgKG1hdGNoX29wZXJhbmQ6VkVD X0wgMSAidmxvZ2ljYWxfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVDVE9SX01FTV9BTFRJVkVDX09S X1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICIiKQotKyAgCi0rKGRlZmluZV9leHBhbmQgIm5vcjxt b2RlPjMiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWRUNfTCAwICJ2bG9naWNhbF9vcGVyYW5k IiAiIikKLSsgICAgICAgIChub3Q6VkVDX0wgKGlvcjpWRUNfTCAobWF0Y2hfb3BlcmFuZDpWRUNf TCAxICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLSsJCQkgICAgICAobWF0Y2hfb3BlcmFuZDpWRUNf TCAyICJ2bG9naWNhbF9vcGVyYW5kIiAiIikpKSldCi0rICAiVkVDVE9SX01FTV9BTFRJVkVDX09S X1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICIiKQotKwotKyhkZWZpbmVfZXhwYW5kICJhbmRjPG1v ZGU+MyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZFQ19MIDAgInZsb2dpY2FsX29wZXJhbmQi ICIiKQotKyAgICAgICAgKGFuZDpWRUNfTCAobm90OlZFQ19MIChtYXRjaF9vcGVyYW5kOlZFQ19M IDIgInZsb2dpY2FsX29wZXJhbmQiICIiKSkKLSsJCSAgIChtYXRjaF9vcGVyYW5kOlZFQ19MIDEg InZsb2dpY2FsX29wZXJhbmQiICIiKSkpXQotKyAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19PUl9WU1hf UCAoPE1PREU+bW9kZSkiCi0rICAiIikKLSsKLSs7OyBTYW1lIHNpemUgY29udmVyc2lvbnMKLSso ZGVmaW5lX2V4cGFuZCAiZmxvYXQ8VkVDX2ludD48bW9kZT4yIgotKyAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6VkVDX0YgMCAidmZsb2F0X29wZXJhbmQiICIiKQotKwkoZmxvYXQ6VkVDX0YgKG1hdGNo X29wZXJhbmQ6PFZFQ19JTlQ+IDEgInZpbnRfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVDVE9SX1VO SVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAiCi0rewotKyAgaWYgKDxNT0RF Pm1vZGUgPT0gVjRTRm1vZGUgJiYgVkVDVE9SX1VOSVRfQUxUSVZFQ19QICg8TU9ERT5tb2RlKSkK LSsgICAgewotKyAgICAgIGVtaXRfaW5zbiAoZ2VuX2FsdGl2ZWNfdmNmc3ggKG9wZXJhbmRzWzBd LCBvcGVyYW5kc1sxXSwgY29uc3QwX3J0eCkpOwotKyAgICAgIERPTkU7Ci0rICAgIH0KLSt9IikK LSsKLSsoZGVmaW5lX2V4cGFuZCAidW5zaWduZWRfZmxvYXQ8VkVDX2ludD48bW9kZT4yIgotKyAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6VkVDX0YgMCAidmZsb2F0X29wZXJhbmQiICIiKQotKwkodW5z aWduZWRfZmxvYXQ6VkVDX0YgKG1hdGNoX29wZXJhbmQ6PFZFQ19JTlQ+IDEgInZpbnRfb3BlcmFu ZCIgIiIpKSldCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSki Ci0rICAiCi0rewotKyAgaWYgKDxNT0RFPm1vZGUgPT0gVjRTRm1vZGUgJiYgVkVDVE9SX1VOSVRf QUxUSVZFQ19QICg8TU9ERT5tb2RlKSkKLSsgICAgewotKyAgICAgIGVtaXRfaW5zbiAoZ2VuX2Fs dGl2ZWNfdmNmdXggKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgY29uc3QwX3J0eCkpOwotKyAg ICAgIERPTkU7Ci0rICAgIH0KLSt9IikKLSsKLSsoZGVmaW5lX2V4cGFuZCAiZml4X3RydW5jPG1v ZGU+PFZFQ19pbnQ+MiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOjxWRUNfSU5UPiAwICJ2aW50 X29wZXJhbmQiICIiKQotKwkoZml4OjxWRUNfSU5UPiAobWF0Y2hfb3BlcmFuZDpWRUNfRiAxICJ2 ZmxvYXRfb3BlcmFuZCIgIiIpKSldCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAo PE1PREU+bW9kZSkiCi0rICAiCi0rewotKyAgaWYgKDxNT0RFPm1vZGUgPT0gVjRTRm1vZGUgJiYg VkVDVE9SX1VOSVRfQUxUSVZFQ19QICg8TU9ERT5tb2RlKSkKLSsgICAgewotKyAgICAgIGVtaXRf aW5zbiAoZ2VuX2FsdGl2ZWNfdmN0c3hzIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIGNvbnN0 MF9ydHgpKTsKLSsgICAgICBET05FOwotKyAgICB9Ci0rfSIpCi0rCi0rKGRlZmluZV9leHBhbmQg ImZpeHVuc190cnVuYzxtb2RlPjxWRUNfaW50PjIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDo8 VkVDX0lOVD4gMCAidmludF9vcGVyYW5kIiAiIikKLSsJKHVuc2lnbmVkX2ZpeDo8VkVDX0lOVD4g KG1hdGNoX29wZXJhbmQ6VkVDX0YgMSAidmZsb2F0X29wZXJhbmQiICIiKSkpXQotKyAgIlZFQ1RP Ul9VTklUX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgIgotK3sKLSsgIGlmICg8 TU9ERT5tb2RlID09IFY0U0Ztb2RlICYmIFZFQ1RPUl9VTklUX0FMVElWRUNfUCAoPE1PREU+bW9k ZSkpCi0rICAgIHsKLSsgICAgICBlbWl0X2luc24gKGdlbl9hbHRpdmVjX3ZjdHV4cyAob3BlcmFu ZHNbMF0sIG9wZXJhbmRzWzFdLCBjb25zdDBfcnR4KSk7Ci0rICAgICAgRE9ORTsKLSsgICAgfQot K30iKQotKwotKwwKLSs7OyBWZWN0b3IgaW5pdGlhbGl6YXRpb24sIHNldCwgZXh0cmFjdAotKyhk ZWZpbmVfZXhwYW5kICJ2ZWNfaW5pdDxtb2RlPiIKLSsgIFsobWF0Y2hfb3BlcmFuZDpWRUNfQyAw ICJ2bG9naWNhbF9vcGVyYW5kIiAiIikKLSsgICAobWF0Y2hfb3BlcmFuZDpWRUNfQyAxICJ2ZWNf aW5pdF9vcGVyYW5kIiAiIildCi0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1P REU+bW9kZSkiCi0rewotKyAgcnM2MDAwX2V4cGFuZF92ZWN0b3JfaW5pdCAob3BlcmFuZHNbMF0s IG9wZXJhbmRzWzFdKTsKLSsgIERPTkU7Ci0rfSkKLSsKLSsoZGVmaW5lX2V4cGFuZCAidmVjX3Nl dDxtb2RlPiIKLSsgIFsobWF0Y2hfb3BlcmFuZDpWRUNfQyAwICJ2bG9naWNhbF9vcGVyYW5kIiAi IikKLSsgICAobWF0Y2hfb3BlcmFuZDo8VkVDX2Jhc2U+IDEgInJlZ2lzdGVyX29wZXJhbmQiICIi KQotKyAgIChtYXRjaF9vcGVyYW5kIDIgImNvbnN0X2ludF9vcGVyYW5kIiAiIildCi0rICAiVkVD VE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUCAoPE1PREU+bW9kZSkiCi0rewotKyAgcnM2MDAwX2V4 cGFuZF92ZWN0b3Jfc2V0IChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIElOVFZBTCAob3BlcmFu ZHNbMl0pKTsKLSsgIERPTkU7Ci0rfSkKLSsKLSsoZGVmaW5lX2V4cGFuZCAidmVjX2V4dHJhY3Q8 bW9kZT4iCi0rICBbKG1hdGNoX29wZXJhbmQ6PFZFQ19iYXNlPiAwICJyZWdpc3Rlcl9vcGVyYW5k IiAiIikKLSsgICAobWF0Y2hfb3BlcmFuZDpWRUNfQyAxICJ2bG9naWNhbF9vcGVyYW5kIiAiIikK LSsgICAobWF0Y2hfb3BlcmFuZCAyICJjb25zdF9pbnRfb3BlcmFuZCIgIiIpXQotKyAgIlZFQ1RP Ul9VTklUX0FMVElWRUNfT1JfVlNYX1AgKDxNT0RFPm1vZGUpIgotK3sKLSsgIHJzNjAwMF9leHBh bmRfdmVjdG9yX2V4dHJhY3QgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwKLSsJCQkJSU5UVkFM IChvcGVyYW5kc1syXSkpOwotKyAgRE9ORTsKLSt9KQotKwotKzs7IEludGVybGVhdmUgcGF0dGVy bnMKLSsoZGVmaW5lX2V4cGFuZCAidmVjX2ludGVybGVhdmVfaGlnaHY0c2YiCi0rICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpWNFNGIDAgInZmbG9hdF9vcGVyYW5kIiAiIikKLSsgICAgICAgICh2ZWNf bWVyZ2U6VjRTRgotKwkgKHZlY19zZWxlY3Q6VjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInZm bG9hdF9vcGVyYW5kIiAiIikKLSsJCQkgIChwYXJhbGxlbCBbKGNvbnN0X2ludCAwKQotKwkJCQkg ICAgIChjb25zdF9pbnQgMikKLSsJCQkJICAgICAoY29uc3RfaW50IDEpCi0rCQkJCSAgICAgKGNv bnN0X2ludCAzKV0pKQotKwkgKHZlY19zZWxlY3Q6VjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDIg InZmbG9hdF9vcGVyYW5kIiAiIikKLSsJCQkgIChwYXJhbGxlbCBbKGNvbnN0X2ludCAyKQotKwkJ CQkgICAgIChjb25zdF9pbnQgMCkKLSsJCQkJICAgICAoY29uc3RfaW50IDMpCi0rCQkJCSAgICAg KGNvbnN0X2ludCAxKV0pKQotKwkgKGNvbnN0X2ludCA1KSkpXQotKyAgIlZFQ1RPUl9VTklUX0FM VElWRUNfT1JfVlNYX1AgKFY0U0Ztb2RlKSIKLSsgICIiKQotKwotKyhkZWZpbmVfZXhwYW5kICJ2 ZWNfaW50ZXJsZWF2ZV9sb3d2NHNmIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAwICJ2 ZmxvYXRfb3BlcmFuZCIgIiIpCi0rICAgICAgICAodmVjX21lcmdlOlY0U0YKLSsJICh2ZWNfc2Vs ZWN0OlY0U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCi0rCQkJ ICAocGFyYWxsZWwgWyhjb25zdF9pbnQgMikKLSsJCQkJICAgICAoY29uc3RfaW50IDApCi0rCQkJ CSAgICAgKGNvbnN0X2ludCAzKQotKwkJCQkgICAgIChjb25zdF9pbnQgMSldKSkKLSsJICh2ZWNf c2VsZWN0OlY0U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAyICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCi0r CQkJICAocGFyYWxsZWwgWyhjb25zdF9pbnQgMCkKLSsJCQkJICAgICAoY29uc3RfaW50IDIpCi0r CQkJCSAgICAgKGNvbnN0X2ludCAxKQotKwkJCQkgICAgIChjb25zdF9pbnQgMyldKSkKLSsJIChj b25zdF9pbnQgNSkpKV0KLSsgICJWRUNUT1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QIChWNFNGbW9k ZSkiCi0rICAiIikKLSsKLSsoZGVmaW5lX2V4cGFuZCAidmVjX2ludGVybGVhdmVfaGlnaHYyZGYi Ci0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMkRGIDAgInZmbG9hdF9vcGVyYW5kIiAiIikKLSsJ KHZlY19jb25jYXQ6VjJERgotKwkgKHZlY19zZWxlY3Q6REYgKG1hdGNoX29wZXJhbmQ6VjJERiAx ICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCi0rCQkJKHBhcmFsbGVsIFsoY29uc3RfaW50IDApXSkpCi0r CSAodmVjX3NlbGVjdDpERiAobWF0Y2hfb3BlcmFuZDpWMkRGIDIgInZmbG9hdF9vcGVyYW5kIiAi IikKLSsJCQkocGFyYWxsZWwgWyhjb25zdF9pbnQgMCldKSkpKV0KLSsgICJWRUNUT1JfVU5JVF9W U1hfUCAoVjJERm1vZGUpIgotKyAgIiIpCi0rCi0rKGRlZmluZV9leHBhbmQgInZlY19pbnRlcmxl YXZlX2xvd3YyZGYiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMkRGIDAgInZmbG9hdF9vcGVy YW5kIiAiIikKLSsJKHZlY19jb25jYXQ6VjJERgotKwkgKHZlY19zZWxlY3Q6REYgKG1hdGNoX29w ZXJhbmQ6VjJERiAxICJ2ZmxvYXRfb3BlcmFuZCIgIiIpCi0rCQkJKHBhcmFsbGVsIFsoY29uc3Rf aW50IDEpXSkpCi0rCSAodmVjX3NlbGVjdDpERiAobWF0Y2hfb3BlcmFuZDpWMkRGIDIgInZmbG9h dF9vcGVyYW5kIiAiIikKLSsJCQkocGFyYWxsZWwgWyhjb25zdF9pbnQgMSldKSkpKV0KLSsgICJW RUNUT1JfVU5JVF9WU1hfUCAoVjJERm1vZGUpIgotKyAgIiIpCi0rCi0rOzsgRm9yIDIgZWxlbWVu dCB2ZWN0b3JzLCBldmVuL29kZCBpcyB0aGUgc2FtZSBhcyBoaWdoL2xvdwotKyhkZWZpbmVfZXhw YW5kICJ2ZWNfZXh0cmFjdF9ldmVudjJkZiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYyREYg MCAidmZsb2F0X29wZXJhbmQiICIiKQotKwkodmVjX2NvbmNhdDpWMkRGCi0rCSAodmVjX3NlbGVj dDpERiAobWF0Y2hfb3BlcmFuZDpWMkRGIDEgInZmbG9hdF9vcGVyYW5kIiAiIikKLSsJCQkocGFy YWxsZWwgWyhjb25zdF9pbnQgMCldKSkKLSsJICh2ZWNfc2VsZWN0OkRGIChtYXRjaF9vcGVyYW5k OlYyREYgMiAidmZsb2F0X29wZXJhbmQiICIiKQotKwkJCShwYXJhbGxlbCBbKGNvbnN0X2ludCAw KV0pKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChWMkRGbW9kZSkiCi0rICAiIikKLSsKLSso ZGVmaW5lX2V4cGFuZCAidmVjX2V4dHJhY3Rfb2RkdjJkZiIKLSsgIFsoc2V0IChtYXRjaF9vcGVy YW5kOlYyREYgMCAidmZsb2F0X29wZXJhbmQiICIiKQotKwkodmVjX2NvbmNhdDpWMkRGCi0rCSAo dmVjX3NlbGVjdDpERiAobWF0Y2hfb3BlcmFuZDpWMkRGIDEgInZmbG9hdF9vcGVyYW5kIiAiIikK LSsJCQkocGFyYWxsZWwgWyhjb25zdF9pbnQgMSldKSkKLSsJICh2ZWNfc2VsZWN0OkRGIChtYXRj aF9vcGVyYW5kOlYyREYgMiAidmZsb2F0X29wZXJhbmQiICIiKQotKwkJCShwYXJhbGxlbCBbKGNv bnN0X2ludCAxKV0pKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChWMkRGbW9kZSkiCi0rICAi IikKLS0tLSBnY2MvY29uZmlnL3JzNjAwMC9zcGUubWQJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0 NDU1NykKLSsrKyBnY2MvY29uZmlnL3JzNjAwMC9zcGUubWQJKC4uLi9icmFuY2hlcy9pYm0vcG93 ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ0NjkyKQotQEAgLTk5LDcgKzk5LDcgQEAgKGRlZmlu ZV9pbnNuICIqZGl2c2YzX2dwciIKLSAKLSA7OyBGbG9hdGluZyBwb2ludCBjb252ZXJzaW9uIGlu c3RydWN0aW9ucy4KLSAKLS0oZGVmaW5lX2luc24gImZpeHVuc190cnVuY2Rmc2kyIgotKyhkZWZp bmVfaW5zbiAic3BlX2ZpeHVuc190cnVuY2Rmc2kyIgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQotIAkodW5zaWduZWRfZml4OlNJIChtYXRjaF9v cGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgInIiKSkpXQotICAgIlRBUkdFVF9IQVJEX0ZM T0FUICYmIFRBUkdFVF9FNTAwX0RPVUJMRSIKLS0tLSBnY2MvY29uZmlnL3JzNjAwMC9jb25zdHJh aW50cy5tZAkoLi4uL3RydW5rKQkocmV2aXNpb24gMTQ0NTU3KQotKysrIGdjYy9jb25maWcvcnM2 MDAwL2NvbnN0cmFpbnRzLm1kCSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJl dmlzaW9uIDE0NDY5MikKLUBAIC0xNyw2ICsxNyw4IEBACi0gOzsgYWxvbmcgd2l0aCBHQ0M7IHNl ZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSA7OyA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCi0gCi0rOzsgQXZhaWxhYmxlIGNvbnN0cmFpbnQgbGV0dGVyczogImUiLCAi ayIsICJ1IiwgIkEiLCAiQiIsICJDIiwgIkQiCi0rCi0gOzsgUmVnaXN0ZXIgY29uc3RyYWludHMK LSAKLSAoZGVmaW5lX3JlZ2lzdGVyX2NvbnN0cmFpbnQgImYiICJUQVJHRVRfSEFSRF9GTE9BVCAm JiBUQVJHRVRfRlBSUwotQEAgLTUwLDYgKzUyLDIzIEBAIChkZWZpbmVfcmVnaXN0ZXJfY29uc3Ry YWludCAieSIgIkNSX1JFR1MKLSAoZGVmaW5lX3JlZ2lzdGVyX2NvbnN0cmFpbnQgInoiICJYRVJf UkVHUyIKLSAgICJAaW50ZXJuYWwiKQotIAotKzs7IFVzZSB3IGFzIGEgcHJlZml4IHRvIGFkZCBW U1ggbW9kZXMKLSs7OyB2ZWN0b3IgZG91YmxlIChWMkRGKQotKyhkZWZpbmVfcmVnaXN0ZXJfY29u c3RyYWludCAid2QiICJyczYwMDBfdmVjdG9yX3JlZ19jbGFzc1tWMkRGbW9kZV0iCi0rICAiQGlu dGVybmFsIikKLSsKLSs7OyB2ZWN0b3IgZmxvYXQgKFY0U0YpCi0rKGRlZmluZV9yZWdpc3Rlcl9j b25zdHJhaW50ICJ3ZiIgInJzNjAwMF92ZWN0b3JfcmVnX2NsYXNzW1Y0U0Ztb2RlXSIKLSsgICJA aW50ZXJuYWwiKQotKwotKzs7IHNjYWxhciBkb3VibGUgKERGKQotKyhkZWZpbmVfcmVnaXN0ZXJf Y29uc3RyYWludCAid3MiICJyczYwMDBfdmVjdG9yX3JlZ19jbGFzc1tERm1vZGVdIgotKyAgIkBp bnRlcm5hbCIpCi0rCi0rOzsgYW55IFZTWCByZWdpc3RlcgotKyhkZWZpbmVfcmVnaXN0ZXJfY29u c3RyYWludCAid2EiICJyczYwMDBfdnN4X3JlZ19jbGFzcyIKLSsgICJAaW50ZXJuYWwiKQotKwot IDs7IEludGVnZXIgY29uc3RyYWludHMKLSAKLSAoZGVmaW5lX2NvbnN0cmFpbnQgIkkiCi1AQCAt MTU5LDMgKzE3OCw3IEBAIChkZWZpbmVfY29uc3RyYWludCAidCIKLSAoZGVmaW5lX2NvbnN0cmFp bnQgIlciCi0gICAidmVjdG9yIGNvbnN0YW50IHRoYXQgZG9lcyBub3QgcmVxdWlyZSBtZW1vcnki Ci0gICAobWF0Y2hfb3BlcmFuZCAwICJlYXN5X3ZlY3Rvcl9jb25zdGFudCIpKQotKwotKyhkZWZp bmVfY29uc3RyYWludCAiaiIKLSsgICJaZXJvIHZlY3RvciBjb25zdGFudCIKLSsgIChtYXRjaF90 ZXN0ICIob3AgPT0gY29uc3QwX3J0eCB8fCBvcCA9PSBDT05TVDBfUlRYIChHRVRfTU9ERSAob3Ap KSkiKSkKLS0tLSBnY2MvY29uZmlnL3JzNjAwMC9wcmVkaWNhdGVzLm1kCSguLi4vdHJ1bmspCShy ZXZpc2lvbiAxNDQ1NTcpCi0rKysgZ2NjL2NvbmZpZy9yczYwMDAvcHJlZGljYXRlcy5tZAkoLi4u L2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDQ2OTIpCi1AQCAtMzgs NiArMzgsMzcgQEAgKGRlZmluZV9wcmVkaWNhdGUgImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcgotIAkJ ICAgICB8fCBBTFRJVkVDX1JFR05PX1AgKFJFR05PIChvcCkpCi0gCQkgICAgIHx8IFJFR05PIChv cCkgPiBMQVNUX1ZJUlRVQUxfUkVHSVNURVIiKSkpCi0gCi0rOzsgUmV0dXJuIDEgaWYgb3AgaXMg YSBWU1ggcmVnaXN0ZXIuCi0rKGRlZmluZV9wcmVkaWNhdGUgInZzeF9yZWdpc3Rlcl9vcGVyYW5k IgotKyAgIChhbmQgKG1hdGNoX29wZXJhbmQgMCAicmVnaXN0ZXJfb3BlcmFuZCIpCi0rCShtYXRj aF90ZXN0ICJHRVRfQ09ERSAob3ApICE9IFJFRwotKwkJICAgICB8fCBWU1hfUkVHTk9fUCAoUkVH Tk8gKG9wKSkKLSsJCSAgICAgfHwgUkVHTk8gKG9wKSA+IExBU1RfVklSVFVBTF9SRUdJU1RFUiIp KSkKLSsKLSs7OyBSZXR1cm4gMSBpZiBvcCBpcyBhIHZlY3RvciByZWdpc3RlciB0aGF0IG9wZXJh dGVzIG9uIGZsb2F0aW5nIHBvaW50IHZlY3RvcnMKLSs7OyAoZWl0aGVyIGFsdGl2ZWMgb3IgVlNY KS4KLSsoZGVmaW5lX3ByZWRpY2F0ZSAidmZsb2F0X29wZXJhbmQiCi0rICAgKGFuZCAobWF0Y2hf b3BlcmFuZCAwICJyZWdpc3Rlcl9vcGVyYW5kIikKLSsJKG1hdGNoX3Rlc3QgIkdFVF9DT0RFIChv cCkgIT0gUkVHCi0rCQkgICAgIHx8IFZGTE9BVF9SRUdOT19QIChSRUdOTyAob3ApKQotKwkJICAg ICB8fCBSRUdOTyAob3ApID4gTEFTVF9WSVJUVUFMX1JFR0lTVEVSIikpKQotKwotKzs7IFJldHVy biAxIGlmIG9wIGlzIGEgdmVjdG9yIHJlZ2lzdGVyIHRoYXQgb3BlcmF0ZXMgb24gaW50ZWdlciB2 ZWN0b3JzCi0rOzsgKG9ubHkgYWx0aXZlYywgVlNYIGRvZXNuJ3Qgc3VwcG9ydCBpbnRlZ2VyIHZl Y3RvcnMpCi0rKGRlZmluZV9wcmVkaWNhdGUgInZpbnRfb3BlcmFuZCIKLSsgICAoYW5kIChtYXRj aF9vcGVyYW5kIDAgInJlZ2lzdGVyX29wZXJhbmQiKQotKwkobWF0Y2hfdGVzdCAiR0VUX0NPREUg KG9wKSAhPSBSRUcKLSsJCSAgICAgfHwgVklOVF9SRUdOT19QIChSRUdOTyAob3ApKQotKwkJICAg ICB8fCBSRUdOTyAob3ApID4gTEFTVF9WSVJUVUFMX1JFR0lTVEVSIikpKQotKwotKzs7IFJldHVy biAxIGlmIG9wIGlzIGEgdmVjdG9yIHJlZ2lzdGVyIHRvIGRvIGxvZ2ljYWwgb3BlcmF0aW9ucyBv biAoYW5kLCBvciwKLSs7OyB4b3IsIGV0Yy4pCi0rKGRlZmluZV9wcmVkaWNhdGUgInZsb2dpY2Fs X29wZXJhbmQiCi0rICAgKGFuZCAobWF0Y2hfb3BlcmFuZCAwICJyZWdpc3Rlcl9vcGVyYW5kIikK LSsJKG1hdGNoX3Rlc3QgIkdFVF9DT0RFIChvcCkgIT0gUkVHCi0rCQkgICAgIHx8IFZMT0dJQ0FM X1JFR05PX1AgKFJFR05PIChvcCkpCi0rCQkgICAgIHx8IFJFR05PIChvcCkgPiBMQVNUX1ZJUlRV QUxfUkVHSVNURVIiKSkpCi0rCi0gOzsgUmV0dXJuIDEgaWYgb3AgaXMgWEVSIHJlZ2lzdGVyLgot IChkZWZpbmVfcHJlZGljYXRlICJ4ZXJfb3BlcmFuZCIKLSAgIChhbmQgKG1hdGNoX2NvZGUgInJl ZyIpCi1AQCAtMjM0LDYgKzI2NSwxMCBAQCAoZGVmaW5lX3ByZWRpY2F0ZSAiZWFzeV9mcF9jb25z dGFudCIKLSAJICAgICAgJiYgbnVtX2luc25zX2NvbnN0YW50X3dpZGUgKChIT1NUX1dJREVfSU5U KSBrWzNdKSA9PSAxKTsKLSAKLSAgICAgY2FzZSBERm1vZGU6Ci0rICAgICAgLyogVGhlIGNvbnN0 YW50IDAuZiBpcyBlYXN5IHVuZGVyIFZTWC4gICovCi0rICAgICAgaWYgKG9wID09IENPTlNUMF9S VFggKERGbW9kZSkgJiYgVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkpCi0rCXJldHVybiAxOwot KwotICAgICAgIC8qIEZvcmNlIGNvbnN0YW50cyB0byBtZW1vcnkgYmVmb3JlIHJlbG9hZCB0byB1 dGlsaXplCi0gCSBjb21wcmVzc19mbG9hdF9jb25zdGFudC4KLSAJIEF2b2lkIHRoaXMgd2hlbiBm bGFnX3Vuc2FmZV9tYXRoX29wdGltaXphdGlvbnMgaXMgZW5hYmxlZAotQEAgLTM5NiwxMyArNDMx LDE2IEBAIChkZWZpbmVfcHJlZGljYXRlICJpbmRleGVkX29yX2luZGlyZWN0X28KLSAgIChtYXRj aF9jb2RlICJtZW0iKQotIHsKLSAgIG9wID0gWEVYUCAob3AsIDApOwotLSAgaWYgKFRBUkdFVF9B TFRJVkVDCi0tICAgICAgJiYgQUxUSVZFQ19WRUNUT1JfTU9ERSAobW9kZSkKLSsgIGlmIChWRUNU T1JfTUVNX0FMVElWRUNfUCAobW9kZSkKLSAgICAgICAmJiBHRVRfQ09ERSAob3ApID09IEFORAot ICAgICAgICYmIEdFVF9DT0RFIChYRVhQIChvcCwgMSkpID09IENPTlNUX0lOVAotICAgICAgICYm IElOVFZBTCAoWEVYUCAob3AsIDEpKSA9PSAtMTYpCi0gICAgIG9wID0gWEVYUCAob3AsIDApOwot IAotKyAgZWxzZSBpZiAoVkVDVE9SX01FTV9WU1hfUCAobW9kZSkKLSsJICAgJiYgR0VUX0NPREUg KG9wKSA9PSBQUkVfTU9ESUZZKQotKyAgICBvcCA9IFhFWFAgKG9wLCAxKTsKLSsKLSAgIHJldHVy biBpbmRleGVkX29yX2luZGlyZWN0X2FkZHJlc3MgKG9wLCBtb2RlKTsKLSB9KQotIAotQEAgLTEz MzYsMyArMTM3NCwxOSBAQCAoZGVmaW5lX3ByZWRpY2F0ZSAic3Rtd19vcGVyYXRpb24iCi0gCi0g ICByZXR1cm4gMTsKLSB9KQotKwotKzs7IFJldHVybiB0cnVlIGlmIHRoZSBvcGVyYW5kIGlzIGEg bGVnaXRpbWF0ZSBwYXJhbGxlbCBmb3IgdmVjX2luaXQKLSsoZGVmaW5lX3ByZWRpY2F0ZSAidmVj X2luaXRfb3BlcmFuZCIKLSsgIChtYXRjaF9jb2RlICJwYXJhbGxlbCIpCi0rewotKyAgLyogRGlz YWxsb3cgVjJERiBtb2RlIHdpdGggTUVNJ3MgdW5sZXNzIGJvdGggYXJlIHRoZSBzYW1lIHVuZGVy IFZTWC4gICovCi0rICBpZiAobW9kZSA9PSBWMkRGbW9kZSAmJiBWRUNUT1JfVU5JVF9WU1hfUCAo bW9kZSkpCi0rICAgIHsKLSsgICAgICBydHggb3AwID0gWFZFQ0VYUCAob3AsIDAsIDApOwotKyAg ICAgIHJ0eCBvcDEgPSBYVkVDRVhQIChvcCwgMCwgMSk7Ci0rICAgICAgaWYgKChNRU1fUCAob3Aw KSB8fCBNRU1fUCAob3AxKSkgJiYgIXJ0eF9lcXVhbF9wIChvcDAsIG9wMSkpCi0rCXJldHVybiAw OwotKyAgICB9Ci0rCi0rICByZXR1cm4gMTsKLSt9KQotLS0tIGdjYy9jb25maWcvcnM2MDAwL3Bw Yy1hc20uaAkoLi4uL3RydW5rKQkocmV2aXNpb24gMTQ0NTU3KQotKysrIGdjYy9jb25maWcvcnM2 MDAwL3BwYy1hc20uaAkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lv biAxNDQ2OTIpCi1AQCAtNjMsNyArNjMsNyBAQAotICNkZWZpbmUgZjE2CTE2Ci0gI2RlZmluZSBm MTcJMTcKLSAjZGVmaW5lIGYxOAkxOAotLSNkZWZpbmUgZjE5ICAgICAxOQotKyNkZWZpbmUgZjE5 CTE5Ci0gI2RlZmluZSBmMjAJMjAKLSAjZGVmaW5lIGYyMQkyMQotICNkZWZpbmUgZjIyCTIyCi1A QCAtNzcsNiArNzcsMTQzIEBACi0gI2RlZmluZSBmMzAJMzAKLSAjZGVmaW5lIGYzMQkzMQotIAot KyNpZmRlZiBfX1ZTWF9fCi0rI2RlZmluZSBmMzIJMzIKLSsjZGVmaW5lIGYzMwkzMwotKyNkZWZp bmUgZjM0CTM0Ci0rI2RlZmluZSBmMzUJMzUKLSsjZGVmaW5lIGYzNgkzNgotKyNkZWZpbmUgZjM3 CTM3Ci0rI2RlZmluZSBmMzgJMzgKLSsjZGVmaW5lIGYzOQkzOQotKyNkZWZpbmUgZjQwCTQwCi0r I2RlZmluZSBmNDEJNDEKLSsjZGVmaW5lIGY0Mgk0MgotKyNkZWZpbmUgZjQzCTQzCi0rI2RlZmlu ZSBmNDQJNDQKLSsjZGVmaW5lIGY0NQk0NQotKyNkZWZpbmUgZjQ2CTQ2Ci0rI2RlZmluZSBmNDcJ NDcKLSsjZGVmaW5lIGY0OAk0OAotKyNkZWZpbmUgZjQ5CTQ5Ci0rI2RlZmluZSBmNTAJMzAKLSsj ZGVmaW5lIGY1MQk1MQotKyNkZWZpbmUgZjUyCTUyCi0rI2RlZmluZSBmNTMJNTMKLSsjZGVmaW5l IGY1NAk1NAotKyNkZWZpbmUgZjU1CTU1Ci0rI2RlZmluZSBmNTYJNTYKLSsjZGVmaW5lIGY1Nwk1 NwotKyNkZWZpbmUgZjU4CTU4Ci0rI2RlZmluZSBmNTkJNTkKLSsjZGVmaW5lIGY2MAk2MAotKyNk ZWZpbmUgZjYxCTYxCi0rI2RlZmluZSBmNjIJNjIKLSsjZGVmaW5lIGY2Mwk2MwotKyNlbmRpZgot KwotKyNpZmRlZiBfX0FMVElWRUNfXwotKyNkZWZpbmUgdjAJMAotKyNkZWZpbmUgdjEJMQotKyNk ZWZpbmUgdjIJMgotKyNkZWZpbmUgdjMJMwotKyNkZWZpbmUgdjQJNAotKyNkZWZpbmUgdjUJNQot KyNkZWZpbmUgdjYJNgotKyNkZWZpbmUgdjcJNwotKyNkZWZpbmUgdjgJOAotKyNkZWZpbmUgdjkJ OQotKyNkZWZpbmUgdjEwCTEwCi0rI2RlZmluZSB2MTEJMTEKLSsjZGVmaW5lIHYxMgkxMgotKyNk ZWZpbmUgdjEzCTEzCi0rI2RlZmluZSB2MTQJMTQKLSsjZGVmaW5lIHYxNQkxNQotKyNkZWZpbmUg djE2CTE2Ci0rI2RlZmluZSB2MTcJMTcKLSsjZGVmaW5lIHYxOAkxOAotKyNkZWZpbmUgdjE5CTE5 Ci0rI2RlZmluZSB2MjAJMjAKLSsjZGVmaW5lIHYyMQkyMQotKyNkZWZpbmUgdjIyCTIyCi0rI2Rl ZmluZSB2MjMJMjMKLSsjZGVmaW5lIHYyNAkyNAotKyNkZWZpbmUgdjI1CTI1Ci0rI2RlZmluZSB2 MjYJMjYKLSsjZGVmaW5lIHYyNwkyNwotKyNkZWZpbmUgdjI4CTI4Ci0rI2RlZmluZSB2MjkJMjkK LSsjZGVmaW5lIHYzMAkzMAotKyNkZWZpbmUgdjMxCTMxCi0rI2VuZGlmCi0rCi0rI2lmZGVmIF9f VlNYX18KLSsjZGVmaW5lIHZzMAkwCi0rI2RlZmluZSB2czEJMQotKyNkZWZpbmUgdnMyCTIKLSsj ZGVmaW5lIHZzMwkzCi0rI2RlZmluZSB2czQJNAotKyNkZWZpbmUgdnM1CTUKLSsjZGVmaW5lIHZz Ngk2Ci0rI2RlZmluZSB2czcJNwotKyNkZWZpbmUgdnM4CTgKLSsjZGVmaW5lIHZzOQk5Ci0rI2Rl ZmluZSB2czEwCTEwCi0rI2RlZmluZSB2czExCTExCi0rI2RlZmluZSB2czEyCTEyCi0rI2RlZmlu ZSB2czEzCTEzCi0rI2RlZmluZSB2czE0CTE0Ci0rI2RlZmluZSB2czE1CTE1Ci0rI2RlZmluZSB2 czE2CTE2Ci0rI2RlZmluZSB2czE3CTE3Ci0rI2RlZmluZSB2czE4CTE4Ci0rI2RlZmluZSB2czE5 CTE5Ci0rI2RlZmluZSB2czIwCTIwCi0rI2RlZmluZSB2czIxCTIxCi0rI2RlZmluZSB2czIyCTIy Ci0rI2RlZmluZSB2czIzCTIzCi0rI2RlZmluZSB2czI0CTI0Ci0rI2RlZmluZSB2czI1CTI1Ci0r I2RlZmluZSB2czI2CTI2Ci0rI2RlZmluZSB2czI3CTI3Ci0rI2RlZmluZSB2czI4CTI4Ci0rI2Rl ZmluZSB2czI5CTI5Ci0rI2RlZmluZSB2czMwCTMwCi0rI2RlZmluZSB2czMxCTMxCi0rI2RlZmlu ZSB2czMyCTMyCi0rI2RlZmluZSB2czMzCTMzCi0rI2RlZmluZSB2czM0CTM0Ci0rI2RlZmluZSB2 czM1CTM1Ci0rI2RlZmluZSB2czM2CTM2Ci0rI2RlZmluZSB2czM3CTM3Ci0rI2RlZmluZSB2czM4 CTM4Ci0rI2RlZmluZSB2czM5CTM5Ci0rI2RlZmluZSB2czQwCTQwCi0rI2RlZmluZSB2czQxCTQx Ci0rI2RlZmluZSB2czQyCTQyCi0rI2RlZmluZSB2czQzCTQzCi0rI2RlZmluZSB2czQ0CTQ0Ci0r I2RlZmluZSB2czQ1CTQ1Ci0rI2RlZmluZSB2czQ2CTQ2Ci0rI2RlZmluZSB2czQ3CTQ3Ci0rI2Rl ZmluZSB2czQ4CTQ4Ci0rI2RlZmluZSB2czQ5CTQ5Ci0rI2RlZmluZSB2czUwCTMwCi0rI2RlZmlu ZSB2czUxCTUxCi0rI2RlZmluZSB2czUyCTUyCi0rI2RlZmluZSB2czUzCTUzCi0rI2RlZmluZSB2 czU0CTU0Ci0rI2RlZmluZSB2czU1CTU1Ci0rI2RlZmluZSB2czU2CTU2Ci0rI2RlZmluZSB2czU3 CTU3Ci0rI2RlZmluZSB2czU4CTU4Ci0rI2RlZmluZSB2czU5CTU5Ci0rI2RlZmluZSB2czYwCTYw Ci0rI2RlZmluZSB2czYxCTYxCi0rI2RlZmluZSB2czYyCTYyCi0rI2RlZmluZSB2czYzCTYzCi0r I2VuZGlmCi0rCi0gLyoKLSAgKiBNYWNyb3MgdG8gZ2x1ZSB0b2dldGhlciB0d28gdG9rZW5zLgot ICAqLwotLS0tIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQub3B0CSguLi4vdHJ1bmspCShyZXZp c2lvbiAxNDQ1NTcpCi0rKysgZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5vcHQJKC4uLi9icmFu Y2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ0NjkyKQotQEAgLTIwLDUgKzIw LDUgQEAKLSA7IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAKLSBtcHJvZmlsZS1r ZXJuZWwKLS1UYXJnZXQgUmVwb3J0IE1hc2soUFJPRklMRV9LRVJORUwpCi0rVGFyZ2V0IFJlcG9y dCBWYXIoVEFSR0VUX1BST0ZJTEVfS0VSTkVMKQotIENhbGwgbWNvdW50IGZvciBwcm9maWxpbmcg YmVmb3JlIGEgZnVuY3Rpb24gcHJvbG9ndWUKLS0tLSBnY2MvY29uZmlnL3JzNjAwMC9zeXN2NC5v cHQJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NDU1NykKLSsrKyBnY2MvY29uZmlnL3JzNjAwMC9z eXN2NC5vcHQJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ0 NjkyKQotQEAgLTMyLDcgKzMyLDcgQEAgVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIEpvaW5lZAotIFNw ZWNpZnkgYml0IHNpemUgb2YgaW1tZWRpYXRlIFRMUyBvZmZzZXRzCi0gCi0gbWJpdC1hbGlnbgot LVRhcmdldCBSZXBvcnQgTWFzayhOT19CSVRGSUVMRF9UWVBFKQotK1RhcmdldCBSZXBvcnQgVmFy KFRBUkdFVF9OT19CSVRGSUVMRF9UWVBFKQotIEFsaWduIHRvIHRoZSBiYXNlIHR5cGUgb2YgdGhl IGJpdC1maWVsZAotIAotIG1zdHJpY3QtYWxpZ24KLUBAIC04NywxMSArODcsMTEgQEAgVGFyZ2V0 IFJlcG9ydCBNYXNrKEVBQkkpCi0gVXNlIEVBQkkKLSAKLSBtYml0LXdvcmQKLS1UYXJnZXQgUmVw b3J0IE1hc2soTk9fQklURklFTERfV09SRCkKLStUYXJnZXQgUmVwb3J0IFZhcihUQVJHRVRfTk9f QklURklFTERfV09SRCkKLSBBbGxvdyBiaXQtZmllbGRzIHRvIGNyb3NzIHdvcmQgYm91bmRhcmll cwotIAotIG1yZWduYW1lcwotLVRhcmdldCBNYXNrKFJFR05BTUVTKQotK1RhcmdldCBWYXIoVEFS R0VUX1JFR05BTUVTKQotIFVzZSBhbHRlcm5hdGUgcmVnaXN0ZXIgbmFtZXMKLSAKLSA7OyBGSVhN RTogRG9lcyBub3RoaW5nLgotLS0tIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC1wcm90b3MuaAko Li4uL3RydW5rKQkocmV2aXNpb24gMTQ0NTU3KQotKysrIGdjYy9jb25maWcvcnM2MDAwL3JzNjAw MC1wcm90b3MuaAkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAx NDQ2OTIpCi1AQCAtNjQsOSArNjQsMTQgQEAgZXh0ZXJuIGludCBpbnN2ZGlfcnNoaWZ0X3Jsd2lt aV9wIChydHgsIAotIGV4dGVybiBpbnQgcmVnaXN0ZXJzX29rX2Zvcl9xdWFkX3BlZXAgKHJ0eCwg cnR4KTsKLSBleHRlcm4gaW50IG1lbXNfb2tfZm9yX3F1YWRfcGVlcCAocnR4LCBydHgpOwotIGV4 dGVybiBib29sIGdwcl9vcl9ncHJfcCAocnR4LCBydHgpOwotK2V4dGVybiBlbnVtIHJlZ19jbGFz cyByczYwMDBfcHJlZmVycmVkX3JlbG9hZF9jbGFzcyhydHgsIGVudW0gcmVnX2NsYXNzKTsKLSBl eHRlcm4gZW51bSByZWdfY2xhc3MgcnM2MDAwX3NlY29uZGFyeV9yZWxvYWRfY2xhc3MgKGVudW0g cmVnX2NsYXNzLAotIAkJCQkJCSAgICAgZW51bSBtYWNoaW5lX21vZGUsIHJ0eCk7Ci0tCi0rZXh0 ZXJuIGJvb2wgcnM2MDAwX3NlY29uZGFyeV9tZW1vcnlfbmVlZGVkIChlbnVtIHJlZ19jbGFzcywg ZW51bSByZWdfY2xhc3MsCi0rCQkJCQkgICAgZW51bSBtYWNoaW5lX21vZGUpOwotK2V4dGVybiBi b29sIHJzNjAwMF9jYW5ub3RfY2hhbmdlX21vZGVfY2xhc3MgKGVudW0gbWFjaGluZV9tb2RlLAot KwkJCQkJICAgICBlbnVtIG1hY2hpbmVfbW9kZSwKLSsJCQkJCSAgICAgZW51bSByZWdfY2xhc3Mp OwotIGV4dGVybiBpbnQgcGFpcmVkX2VtaXRfdmVjdG9yX2NvbmRfZXhwciAocnR4LCBydHgsIHJ0 eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0eCwgcnR4LCBy dHgpOwotIGV4dGVybiB2b2lkIHBhaXJlZF9leHBhbmRfdmVjdG9yX21vdmUgKHJ0eCBvcGVyYW5k c1tdKTsKLUBAIC0xNzAsNyArMTc1LDYgQEAgZXh0ZXJuIGludCByczYwMDBfcmVnaXN0ZXJfbW92 ZV9jb3N0IChlbgotIAkJCQkgICAgICBlbnVtIHJlZ19jbGFzcywgZW51bSByZWdfY2xhc3MpOwot IGV4dGVybiBpbnQgcnM2MDAwX21lbW9yeV9tb3ZlX2Nvc3QgKGVudW0gbWFjaGluZV9tb2RlLCBl bnVtIHJlZ19jbGFzcywgaW50KTsKLSBleHRlcm4gYm9vbCByczYwMDBfdGxzX3JlZmVyZW5jZWRf cCAocnR4KTsKLS1leHRlcm4gaW50IHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzIChpbnQsIGVudW0g bWFjaGluZV9tb2RlKTsKLSBleHRlcm4gdm9pZCByczYwMDBfY29uZGl0aW9uYWxfcmVnaXN0ZXJf dXNhZ2UgKHZvaWQpOwotIAotIC8qIERlY2xhcmUgZnVuY3Rpb25zIGluIHJzNjAwMC1jLmMgKi8K LUBAIC0xODksNCArMTkzLDYgQEAgY29uc3QgY2hhciAqIHJzNjAwMF94Y29mZl9zdHJpcF9kb2xs YXIgKAotIHZvaWQgcnM2MDAwX2ZpbmFsX3ByZXNjYW5faW5zbiAocnR4LCBydHggKm9wZXJhbmQs IGludCBudW1fb3BlcmFuZHMpOwotIAotIGV4dGVybiBib29sIHJzNjAwMF9oYXJkX3JlZ25vX21v ZGVfb2tfcFtdW0ZJUlNUX1BTRVVET19SRUdJU1RFUl07Ci0rZXh0ZXJuIHVuc2lnbmVkIGNoYXIg cnM2MDAwX2NsYXNzX21heF9ucmVnc1tdW0xJTV9SRUdfQ0xBU1NFU107Ci0rZXh0ZXJuIHVuc2ln bmVkIGNoYXIgcnM2MDAwX2hhcmRfcmVnbm9fbnJlZ3NbXVtGSVJTVF9QU0VVRE9fUkVHSVNURVJd OwotICNlbmRpZiAgLyogcnM2MDAwLXByb3Rvcy5oICovCi0tLS0gZ2NjL2NvbmZpZy9yczYwMDAv dC1yczYwMDAJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NDU1NykKLSsrKyBnY2MvY29uZmlnL3Jz NjAwMC90LXJzNjAwMAkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lv biAxNDQ2OTIpCi1AQCAtMTYsMyArMTYsMzMgQEAgcnM2MDAwLWMubzogJChzcmNkaXIpL2NvbmZp Zy9yczYwMDAvcnM2MAotIAotICMgVGhlIHJzNjAwMCBiYWNrZW5kIGRvZXNuJ3QgY2F1c2Ugd2Fy bmluZ3MgaW4gdGhlc2UgZmlsZXMuCi0gaW5zbi1jb25kaXRpb25zLm8td2FybiA9Ci0rCi0rTURf SU5DTFVERVMgPSAkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9yaW9zMS5tZCBcCi0rCSQoc3JjZGly KS9jb25maWcvcnM2MDAwL3Jpb3MyLm1kIFwKLSsJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvcnM2 NC5tZCBcCi0rCSQoc3JjZGlyKS9jb25maWcvcnM2MDAwL21wYy5tZCBcCi0rCSQoc3JjZGlyKS9j b25maWcvcnM2MDAwLzQweC5tZCBcCi0rCSQoc3JjZGlyKS9jb25maWcvcnM2MDAwLzQ0MC5tZCBc Ci0rCSQoc3JjZGlyKS9jb25maWcvcnM2MDAwLzYwMy5tZCBcCi0rCSQoc3JjZGlyKS9jb25maWcv cnM2MDAwLzZ4eC5tZCBcCi0rCSQoc3JjZGlyKS9jb25maWcvcnM2MDAwLzd4eC5tZCBcCi0rCSQo c3JjZGlyKS9jb25maWcvcnM2MDAwLzc0NTAubWQgXAotKwkkKHNyY2RpcikvY29uZmlnL3JzNjAw MC84NTQwLm1kIFwKLSsJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvZTMwMGMyYzMubWQgXAotKwkk KHNyY2RpcikvY29uZmlnL3JzNjAwMC9lNTAwbWMubWQgXAotKwkkKHNyY2RpcikvY29uZmlnL3Jz NjAwMC9wb3dlcjQubWQgXAotKwkkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9wb3dlcjUubWQgXAot KwkkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9wb3dlcjYubWQgXAotKwkkKHNyY2RpcikvY29uZmln L3JzNjAwMC9wb3dlcjcubWQgXAotKwkkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9jZWxsLm1kIFwK LSsJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAveGZwdS5tZCBcCi0rCSQoc3JjZGlyKS9jb25maWcv cnM2MDAwL3ByZWRpY2F0ZXMubWQgXAotKwkkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9jb25zdHJh aW50cy5tZCBcCi0rCSQoc3JjZGlyKS9jb25maWcvcnM2MDAwL2Rhcndpbi5tZCBcCi0rCSQoc3Jj ZGlyKS9jb25maWcvcnM2MDAwL3N5bmMubWQgXAotKwkkKHNyY2RpcikvY29uZmlnL3JzNjAwMC92 ZWN0b3IubWQgXAotKwkkKHNyY2RpcikvY29uZmlnL3JzNjAwMC92c3gubWQgXAotKwkkKHNyY2Rp cikvY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kIFwKLSsJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAv c3BlLm1kIFwKLSsJJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvZGZwLm1kIFwKLSsJJChzcmNkaXIp L2NvbmZpZy9yczYwMDAvcGFpcmVkLm1kCi0tLS0gZ2NjL2NvbmZpZy9yczYwMDAvcG93ZXI3Lm1k CSguLi4vdHJ1bmspCShyZXZpc2lvbiAwKQotKysrIGdjYy9jb25maWcvcnM2MDAwL3Bvd2VyNy5t ZAkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDQ2OTIpCi1A QCAtMCwwICsxLDMyMCBAQAotKzs7IFNjaGVkdWxpbmcgZGVzY3JpcHRpb24gZm9yIElCTSBQT1dF UjcgcHJvY2Vzc29yLgotKzs7IENvcHlyaWdodCAoQykgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSs7OwotKzs7IENvbnRyaWJ1dGVkIGJ5IFBhdCBIYXVnZW4gKHB0aGF1Z2Vu QHVzLmlibS5jb20pLgotKwotKzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdDQy4KLSs7OwotKzs7 IEdDQyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5IGl0Ci0rOzsgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQKLSs7OyBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91cgotKzs7IG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rOzsKLSs7OyBHQ0MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKLSs7OyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKLSs7OyBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0rOzsg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKzs7Ci0rOzsgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSs7OyBhbG9uZyB3 aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotKzs7IDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsoZGVmaW5lX2F1dG9tYXRvbiAicG93ZXI3aXUs cG93ZXI3bHN1LHBvd2VyN3ZzdSxwb3dlcjdtaXNjIikKLSsKLSsoZGVmaW5lX2NwdV91bml0ICJp dTFfcG93ZXI3LGl1Ml9wb3dlcjciICJwb3dlcjdpdSIpCi0rKGRlZmluZV9jcHVfdW5pdCAibHN1 MV9wb3dlcjcsbHN1Ml9wb3dlcjciICJwb3dlcjdsc3UiKQotKyhkZWZpbmVfY3B1X3VuaXQgInZz dTFfcG93ZXI3LHZzdTJfcG93ZXI3IiAicG93ZXI3dnN1IikKLSsoZGVmaW5lX2NwdV91bml0ICJi cHVfcG93ZXI3LGNydV9wb3dlcjciICJwb3dlcjdtaXNjIikKLSsoZGVmaW5lX2NwdV91bml0ICJk dTFfcG93ZXI3LGR1Ml9wb3dlcjcsZHUzX3Bvd2VyNyxkdTRfcG93ZXI3LGR1NV9wb3dlcjciCi0r ICAgICAgICAgICAgICAgICAicG93ZXI3bWlzYyIpCi0rCi0rCi0rKGRlZmluZV9yZXNlcnZhdGlv biAiRFVfcG93ZXI3IgotKwkJICAgICJkdTFfcG93ZXI3fGR1Ml9wb3dlcjd8ZHUzX3Bvd2VyN3xk dTRfcG93ZXI3IikKLSsKLSsoZGVmaW5lX3Jlc2VydmF0aW9uICJEVTJGX3Bvd2VyNyIKLSsJCSAg ICAiZHUxX3Bvd2VyNytkdTJfcG93ZXI3IikKLSsKLSsoZGVmaW5lX3Jlc2VydmF0aW9uICJEVTRf cG93ZXI3IgotKwkJICAgICJkdTFfcG93ZXI3K2R1Ml9wb3dlcjcrZHUzX3Bvd2VyNytkdTRfcG93 ZXI3IikKLSsKLSsoZGVmaW5lX3Jlc2VydmF0aW9uICJGWFVfcG93ZXI3IgotKyAgICAgICAgICAg ICAgICAgICAgIml1MV9wb3dlcjd8aXUyX3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9yZXNlcnZhdGlv biAiVlNVX3Bvd2VyNyIKLSsgICAgICAgICAgICAgICAgICAgICJ2c3UxX3Bvd2VyN3x2c3UyX3Bv d2VyNyIpCi0rCi0rKGRlZmluZV9yZXNlcnZhdGlvbiAiTFNVX3Bvd2VyNyIKLSsgICAgICAgICAg ICAgICAgICAgICJsc3UxX3Bvd2VyN3xsc3UyX3Bvd2VyNyIpCi0rCi0rCi0rOyBEaXNwYXRjaCBz bG90cyBhcmUgYWxsb2NhdGVkIGluIG9yZGVyIGNvbmZvcm1pbmcgdG8gcHJvZ3JhbSBvcmRlci4K LSsoYWJzZW5jZV9zZXQgImR1MV9wb3dlcjciICJkdTJfcG93ZXI3LGR1M19wb3dlcjcsZHU0X3Bv d2VyNyxkdTVfcG93ZXI3IikKLSsoYWJzZW5jZV9zZXQgImR1Ml9wb3dlcjciICJkdTNfcG93ZXI3 LGR1NF9wb3dlcjcsZHU1X3Bvd2VyNyIpCi0rKGFic2VuY2Vfc2V0ICJkdTNfcG93ZXI3IiAiZHU0 X3Bvd2VyNyxkdTVfcG93ZXI3IikKLSsoYWJzZW5jZV9zZXQgImR1NF9wb3dlcjciICJkdTVfcG93 ZXI3IikKLSsKLSsKLSs7IExTIFVuaXQKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2Vy Ny1sb2FkIiAyCi0rICAoYW5kIChlcV9hdHRyICJ0eXBlIiAibG9hZCIpCi0rICAgICAgIChlcV9h dHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJEVV9wb3dlcjcsTFNVX3Bvd2VyNyIpCi0rCi0rKGRl ZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctbG9hZC1leHQiIDMKLSsgIChhbmQgKGVxX2F0 dHIgInR5cGUiICJsb2FkX2V4dCIpCi0rICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkK LSsgICJEVTJGX3Bvd2VyNyxMU1VfcG93ZXI3LEZYVV9wb3dlcjciKQotKwotKyhkZWZpbmVfaW5z bl9yZXNlcnZhdGlvbiAicG93ZXI3LWxvYWQtdXBkYXRlIiAyCi0rICAoYW5kIChlcV9hdHRyICJ0 eXBlIiAibG9hZF91IikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgIkRV MkZfcG93ZXI3LExTVV9wb3dlcjcrRlhVX3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2Vy dmF0aW9uICJwb3dlcjctbG9hZC11cGRhdGUtaW5kZXhlZCIgMwotKyAgKGFuZCAoZXFfYXR0ciAi dHlwZSIgImxvYWRfdXgiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAi RFU0X3Bvd2VyNyxGWFVfcG93ZXI3LExTVV9wb3dlcjcrRlhVX3Bvd2VyNyIpCi0rCi0rKGRlZmlu ZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctbG9hZC1leHQtdXBkYXRlIiA0Ci0rICAoYW5kIChl cV9hdHRyICJ0eXBlIiAibG9hZF9leHRfdSIpCi0rICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dl cjciKSkKLSsgICJEVTJGX3Bvd2VyNyxMU1VfcG93ZXI3K0ZYVV9wb3dlcjcsRlhVX3Bvd2VyNyIp Ci0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctbG9hZC1leHQtdXBkYXRlLWlu ZGV4ZWQiIDQKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJsb2FkX2V4dF91eCIpCi0rICAgICAg IChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJEVTRfcG93ZXI3LEZYVV9wb3dlcjcsTFNV X3Bvd2VyNytGWFVfcG93ZXI3LEZYVV9wb3dlcjciKQotKwotKyhkZWZpbmVfaW5zbl9yZXNlcnZh dGlvbiAicG93ZXI3LWZwbG9hZCIgMwotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImZwbG9hZCIp Ci0rICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJEVV9wb3dlcjcsTFNVX3Bv d2VyNyIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctZnBsb2FkLXVwZGF0 ZSIgMwotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImZwbG9hZF91LGZwbG9hZF91eCIpCi0rICAg ICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJEVTJGX3Bvd2VyNyxMU1VfcG93ZXI3 K0ZYVV9wb3dlcjciKQotKwotKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LXN0b3Jl IiA2IDsgc3RvcmUtZm9yd2FyZGluZyBsYXRlbmN5Ci0rICAoYW5kIChlcV9hdHRyICJ0eXBlIiAi c3RvcmUiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFVfcG93ZXI3 LExTVV9wb3dlcjcrRlhVX3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJw b3dlcjctc3RvcmUtdXBkYXRlIiA2Ci0rICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3RvcmVfdSIp Ci0rICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJEVTJGX3Bvd2VyNyxMU1Vf cG93ZXI3K0ZYVV9wb3dlcjcsRlhVX3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0 aW9uICJwb3dlcjctc3RvcmUtdXBkYXRlLWluZGV4ZWQiIDYKLSsgIChhbmQgKGVxX2F0dHIgInR5 cGUiICJzdG9yZV91eCIpCi0rICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJE VTRfcG93ZXI3LExTVV9wb3dlcjcrRlhVX3Bvd2VyNyxGWFVfcG93ZXI3IikKLSsKLSsoZGVmaW5l X2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1mcHN0b3JlIiA2Ci0rICAoYW5kIChlcV9hdHRyICJ0 eXBlIiAiZnBzdG9yZSIpCi0rICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJE VV9wb3dlcjcsTFNVX3Bvd2VyNytWU1VfcG93ZXI3IikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2 YXRpb24gInBvd2VyNy1mcHN0b3JlLXVwZGF0ZSIgNgotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIg ImZwc3RvcmVfdSxmcHN0b3JlX3V4IikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIp KQotKyAgIkRVX3Bvd2VyNyxMU1VfcG93ZXI3K1ZTVV9wb3dlcjcrRlhVX3Bvd2VyNyIpCi0rCi0r KGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctbGFyeCIgMwotKyAgKGFuZCAoZXFfYXR0 ciAidHlwZSIgImxvYWRfbCIpCi0rICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsg ICJEVTRfcG93ZXI3LExTVV9wb3dlcjciKQotKwotKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAi cG93ZXI3LXN0Y3giIDEwCi0rICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3RvcmVfYyIpCi0rICAg ICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJEVTRfcG93ZXI3LExTVV9wb3dlcjci KQotKwotKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LXZlY2xvYWQiIDMKLSsgIChh bmQgKGVxX2F0dHIgInR5cGUiICJ2ZWNsb2FkIikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBv d2VyNyIpKQotKyAgIkRVX3Bvd2VyNyxMU1VfcG93ZXI3IikKLSsKLSsoZGVmaW5lX2luc25fcmVz ZXJ2YXRpb24gInBvd2VyNy12ZWNzdG9yZSIgNgotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInZl Y3N0b3JlIikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgIkRVX3Bvd2Vy NyxMU1VfcG93ZXI3K1ZTVV9wb3dlcjciKQotKwotKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAi cG93ZXI3LXN5bmMiIDExCi0rICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3luYyIpCi0rICAgICAg IChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJEVTRfcG93ZXI3LExTVV9wb3dlcjciKQot KwotKwotKzsgRlggVW5pdAotKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LWludGVn ZXIiIDEKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpbnRlZ2VyLGluc2VydF93b3JkLGluc2Vy dF9kd29yZCxzaGlmdCx0cmFwLFwKLSsgICAgICAgICAgICAgICAgICAgICAgICB2YXJfc2hpZnRf cm90YXRlLGV4dHMiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFVf cG93ZXI3LEZYVV9wb3dlcjciKQotKwotKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3 LWNudGx6IiAyCi0rICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiY250bHoiKQotKyAgICAgICAoZXFf YXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFVfcG93ZXI3LEZYVV9wb3dlcjciKQotKwotKyhk ZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LXR3byIgMgotKyAgKGFuZCAoZXFfYXR0ciAi dHlwZSIgInR3byIpCi0rICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJEVV9w b3dlcjcrRFVfcG93ZXI3LEZYVV9wb3dlcjcsRlhVX3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9pbnNu X3Jlc2VydmF0aW9uICJwb3dlcjctdGhyZWUiIDMKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJ0 aHJlZSIpCi0rICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJEVV9wb3dlcjcr RFVfcG93ZXI3K0RVX3Bvd2VyNyxGWFVfcG93ZXI3LEZYVV9wb3dlcjcsRlhVX3Bvd2VyNyIpCi0r Ci0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctY21wIiAxCi0rICAoYW5kIChlcV9h dHRyICJ0eXBlIiAiY21wLGZhc3RfY29tcGFyZSIpCi0rICAgICAgIChlcV9hdHRyICJjcHUiICJw b3dlcjciKSkKLSsgICJEVV9wb3dlcjcsRlhVX3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9pbnNuX3Jl c2VydmF0aW9uICJwb3dlcjctY29tcGFyZSIgMgotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImNv bXBhcmUsZGVsYXllZF9jb21wYXJlLHZhcl9kZWxheWVkX2NvbXBhcmUiKQotKyAgICAgICAoZXFf YXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFUyRl9wb3dlcjcsRlhVX3Bvd2VyNyxGWFVfcG93 ZXI3IikKLSsKLSsoZGVmaW5lX2J5cGFzcyAzICJwb3dlcjctY21wLHBvd2VyNy1jb21wYXJlIiAi cG93ZXI3LWNybG9naWNhbCxwb3dlcjctZGVsYXllZGNyIikKLSsKLSsoZGVmaW5lX2luc25fcmVz ZXJ2YXRpb24gInBvd2VyNy1tdWwiIDQKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJpbXVsLGlt dWwyLGltdWwzLGxtdWwiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAi RFVfcG93ZXI3LEZYVV9wb3dlcjciKQotKwotKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93 ZXI3LW11bC1jb21wYXJlIiA1Ci0rICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaW11bF9jb21wYXJl LGxtdWxfY29tcGFyZSIpCi0rICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJE VTJGX3Bvd2VyNyxGWFVfcG93ZXI3LG5vdGhpbmcqMyxGWFVfcG93ZXI3IikKLSsKLSsoZGVmaW5l X2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1pZGl2IiAzNgotKyAgKGFuZCAoZXFfYXR0ciAidHlw ZSIgImlkaXYiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFUyRl9w b3dlcjcsaXUxX3Bvd2VyNyozNnxpdTJfcG93ZXI3KjM2IikKLSsKLSsoZGVmaW5lX2luc25fcmVz ZXJ2YXRpb24gInBvd2VyNy1sZGl2IiA2OAotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImxkaXYi KQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFUyRl9wb3dlcjcsaXUx X3Bvd2VyNyo2OHxpdTJfcG93ZXI3KjY4IikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24g InBvd2VyNy1pc3luYyIgMSA7Ci0rICAoYW5kIChlcV9hdHRyICJ0eXBlIiAiaXN5bmMiKQotKyAg ICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFU0X3Bvd2VyNyxGWFVfcG93ZXI3 IikKLSsKLSsKLSs7IENSIFVuaXQKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1t dGptcHIiIDQKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJtdGptcHIiKQotKyAgICAgICAoZXFf YXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiZHUxX3Bvd2VyNyxGWFVfcG93ZXI3IikKLSsKLSso ZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1tZmptcHIiIDUKLSsgIChhbmQgKGVxX2F0 dHIgInR5cGUiICJtZmptcHIiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0r ICAiZHUxX3Bvd2VyNyxjcnVfcG93ZXI3K0ZYVV9wb3dlcjciKQotKwotKyhkZWZpbmVfaW5zbl9y ZXNlcnZhdGlvbiAicG93ZXI3LWNybG9naWNhbCIgMwotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIg ImNyX2xvZ2ljYWwiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiZHUx X3Bvd2VyNyxjcnVfcG93ZXI3IikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2Vy Ny1kZWxheWVkY3IiIDMKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJkZWxheWVkX2NyIikKLSsg ICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgImR1MV9wb3dlcjcsY3J1X3Bvd2Vy NyIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctbWZjciIgNgotKyAgKGFu ZCAoZXFfYXR0ciAidHlwZSIgIm1mY3IiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3 IikpCi0rICAiZHUxX3Bvd2VyNyxjcnVfcG93ZXI3IikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2 YXRpb24gInBvd2VyNy1tZmNyZiIgMwotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgIm1mY3JmIikK LSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgImR1MV9wb3dlcjcsY3J1X3Bv d2VyNyIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctbXRjciIgMwotKyAg KGFuZCAoZXFfYXR0ciAidHlwZSIgIm10Y3IiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93 ZXI3IikpCi0rICAiRFU0X3Bvd2VyNyxjcnVfcG93ZXI3K0ZYVV9wb3dlcjciKQotKwotKwotKzsg QlIgVW5pdAotKzsgQnJhbmNoZXMgdGFrZSBkaXNwYXRjaCBTbG90IDQuICBUaGUgcHJlc2VuY2Vf c2V0cyBwcmV2ZW50IG90aGVyIGluc24gZnJvbQotKzsgZ3JhYmJpbmcgcHJldmlvdXMgZGlzcGF0 Y2ggc2xvdHMgb25jZSB0aGlzIGlzIGFzc2lnbmVkLgotKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlv biAicG93ZXI3LWJyYW5jaCIgMwotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImptcHJlZyxicmFu Y2giKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiKGR1NV9wb3dlcjdc Ci0rICAgfGR1NF9wb3dlcjcrZHU1X3Bvd2VyN1wKLSsgICB8ZHUzX3Bvd2VyNytkdTRfcG93ZXI3 K2R1NV9wb3dlcjdcCi0rICAgfGR1Ml9wb3dlcjcrZHUzX3Bvd2VyNytkdTRfcG93ZXI3K2R1NV9w b3dlcjdcCi0rICAgfGR1MV9wb3dlcjcrZHUyX3Bvd2VyNytkdTNfcG93ZXI3K2R1NF9wb3dlcjcr ZHU1X3Bvd2VyNyksYnB1X3Bvd2VyNyIpCi0rCi0rCi0rOyBWUyBVbml0IChpbmNsdWRlcyBGUC9W U1gvVk1YL0RGUCkKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy1mcCIgNgotKyAg KGFuZCAoZXFfYXR0ciAidHlwZSIgImZwLGRtdWwiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAi cG93ZXI3IikpCi0rICAiRFVfcG93ZXI3LFZTVV9wb3dlcjciKQotKwotKyhkZWZpbmVfYnlwYXNz IDggInBvd2VyNy1mcCIgInBvd2VyNy1icmFuY2giKQotKwotKyhkZWZpbmVfaW5zbl9yZXNlcnZh dGlvbiAicG93ZXI3LWZwY29tcGFyZSIgNAotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgImZwY29t cGFyZSIpCi0rICAgICAgIChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJEVV9wb3dlcjcs VlNVX3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9pbnNuX3Jlc2VydmF0aW9uICJwb3dlcjctc2RpdiIg MjYKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJzZGl2IikKLSsgICAgICAgKGVxX2F0dHIgImNw dSIgInBvd2VyNyIpKQotKyAgIkRVX3Bvd2VyNyxWU1VfcG93ZXI3IikKLSsKLSsoZGVmaW5lX2lu c25fcmVzZXJ2YXRpb24gInBvd2VyNy1kZGl2IiAzMgotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIg ImRkaXYiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiRFVfcG93ZXI3 LFZTVV9wb3dlcjciKQotKwotKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LXNxcnQi IDMxCi0rICAoYW5kIChlcV9hdHRyICJ0eXBlIiAic3NxcnQiKQotKyAgICAgICAoZXFfYXR0ciAi Y3B1IiAicG93ZXI3IikpCi0rICAiRFVfcG93ZXI3LFZTVV9wb3dlcjciKQotKwotKyhkZWZpbmVf aW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LWRzcXJ0IiA0MwotKyAgKGFuZCAoZXFfYXR0ciAidHlw ZSIgImRzcXJ0IikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgIkRVX3Bv d2VyNyxWU1VfcG93ZXI3IikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy12 ZWNzaW1wbGUiIDIKLSsgIChhbmQgKGVxX2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKQotKyAgICAg ICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3IikpCi0rICAiZHUxX3Bvd2VyNyxWU1VfcG93ZXI3IikK LSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy12ZWNjbXAiIDcKLSsgIChhbmQg KGVxX2F0dHIgInR5cGUiICJ2ZWNjbXAiKQotKyAgICAgICAoZXFfYXR0ciAiY3B1IiAicG93ZXI3 IikpCi0rICAiZHUxX3Bvd2VyNyxWU1VfcG93ZXI3IikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2 YXRpb24gInBvd2VyNy12ZWNmbG9hdCIgNwotKyAgKGFuZCAoZXFfYXR0ciAidHlwZSIgInZlY2Zs b2F0IikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2VyNyIpKQotKyAgImR1MV9wb3dlcjcs VlNVX3Bvd2VyNyIpCi0rCi0rKGRlZmluZV9ieXBhc3MgNiAicG93ZXI3LXZlY2Zsb2F0IiAicG93 ZXI3LXZlY2Zsb2F0IikKLSsKLSsoZGVmaW5lX2luc25fcmVzZXJ2YXRpb24gInBvd2VyNy12ZWNj b21wbGV4IiA3Ci0rICAoYW5kIChlcV9hdHRyICJ0eXBlIiAidmVjY29tcGxleCIpCi0rICAgICAg IChlcV9hdHRyICJjcHUiICJwb3dlcjciKSkKLSsgICJkdTFfcG93ZXI3LFZTVV9wb3dlcjciKQot KwotKyhkZWZpbmVfaW5zbl9yZXNlcnZhdGlvbiAicG93ZXI3LXZlY3Blcm0iIDMKLSsgIChhbmQg KGVxX2F0dHIgInR5cGUiICJ2ZWNwZXJtIikKLSsgICAgICAgKGVxX2F0dHIgImNwdSIgInBvd2Vy NyIpKQotKyAgImR1Ml9wb3dlcjcsVlNVX3Bvd2VyNyIpCi0rCi0rCi0tLS0gZ2NjL2NvbmZpZy9y czYwMDAvcnM2MDAwLWMuYwkoLi4uL3RydW5rKQkocmV2aXNpb24gMTQ0NTU3KQotKysrIGdjYy9j b25maWcvcnM2MDAwL3JzNjAwMC1jLmMJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVy KQkocmV2aXNpb24gMTQ0NjkyKQotQEAgLTI2NSw2ICsyNjUsOCBAQCByczYwMDBfY3B1X2NwcF9i dWlsdGlucyAoY3BwX3JlYWRlciAqcGZpCi0gICAgIGJ1aWx0aW5fZGVmaW5lICgiX0FSQ0hfUFdS NlgiKTsKLSAgIGlmICghIFRBUkdFVF9QT1dFUiAmJiAhIFRBUkdFVF9QT1dFUjIgJiYgISBUQVJH RVRfUE9XRVJQQykKLSAgICAgYnVpbHRpbl9kZWZpbmUgKCJfQVJDSF9DT00iKTsKLSsgIGlmIChU QVJHRVRfUE9QQ05URCkKLSsgICAgYnVpbHRpbl9kZWZpbmUgKCJfQVJDSF9QV1I3Iik7Ci0gICBp ZiAoVEFSR0VUX0FMVElWRUMpCi0gICAgIHsKLSAgICAgICBidWlsdGluX2RlZmluZSAoIl9fQUxU SVZFQ19fIik7Ci1AQCAtMzA2LDYgKzMwOCw4IEBAIHJzNjAwMF9jcHVfY3BwX2J1aWx0aW5zIChj cHBfcmVhZGVyICpwZmkKLSAgIC8qIFVzZWQgYnkgbGlic3RkYysrLiAgKi8KLSAgIGlmIChUQVJH RVRfTk9fTFdTWU5DKQotICAgICBidWlsdGluX2RlZmluZSAoIl9fTk9fTFdTWU5DX18iKTsKLSsg IGlmIChUQVJHRVRfVlNYKQotKyAgICBidWlsdGluX2RlZmluZSAoIl9fVlNYX18iKTsKLSAKLSAg IC8qIE1heSBiZSBvdmVycmlkZGVuIGJ5IHRhcmdldCBjb25maWd1cmF0aW9uLiAgKi8KLSAgIFJT NjAwMF9DUFVfQ1BQX0VORElBTl9CVUlMVElOUygpOwotLS0tIGdjYy9jb25maWcvcnM2MDAwL3Jz NjAwMC5vcHQJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NDU1NykKLSsrKyBnY2MvY29uZmlnL3Jz NjAwMC9yczYwMDAub3B0CSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlz aW9uIDE0NDY5MikKLUBAIC0xMTEsMjQgKzExMSw0NCBAQCBtaGFyZC1mbG9hdAotIFRhcmdldCBS ZXBvcnQgUmVqZWN0TmVnYXRpdmUgSW52ZXJzZU1hc2soU09GVF9GTE9BVCwgSEFSRF9GTE9BVCkK LSBVc2UgaGFyZHdhcmUgZmxvYXRpbmcgcG9pbnQKLSAKLS1tbm8tdXBkYXRlCi0tVGFyZ2V0IFJl cG9ydCBSZWplY3ROZWdhdGl2ZSBNYXNrKE5PX1VQREFURSkKLS1EbyBub3QgZ2VuZXJhdGUgbG9h ZC9zdG9yZSB3aXRoIHVwZGF0ZSBpbnN0cnVjdGlvbnMKLSttcG9wY250ZAotK1RhcmdldCBSZXBv cnQgTWFzayhQT1BDTlREKQotK1VzZSBQb3dlclBDIFYyLjA2IHBvcGNudGQgaW5zdHJ1Y3Rpb24K LSsKLSttdnN4Ci0rVGFyZ2V0IFJlcG9ydCBNYXNrKFZTWCkKLStVc2UgdmVjdG9yL3NjYWxhciAo VlNYKSBpbnN0cnVjdGlvbnMKLSsKLSttdnN4LXZlY3Rvci1tZW1vcnkKLStUYXJnZXQgUmVwb3J0 IFZhcihUQVJHRVRfVlNYX1ZFQ1RPUl9NRU1PUlkpIEluaXQoLTEpCi0rSWYgLW12c3gsIHVzZSBW U1ggdmVjdG9yIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25zIGluc3RlYWQgb2YgQWx0aXZlYyBpbnN0 cnVjdGlvbnMKLSsKLSttdnN4LXZlY3Rvci1mbG9hdAotK1RhcmdldCBSZXBvcnQgVmFyKFRBUkdF VF9WU1hfVkVDVE9SX0ZMT0FUKSBJbml0KC0xKQotK0lmIC1tdnN4LCB1c2UgVlNYIGFyaXRobWV0 aWMgaW5zdHJ1Y3Rpb25zIGZvciBmbG9hdCB2ZWN0b3JzIChvbiBieSBkZWZhdWx0KQotKwotK212 c3gtdmVjdG9yLWRvdWJsZQotK1RhcmdldCBSZXBvcnQgVmFyKFRBUkdFVF9WU1hfVkVDVE9SX0RP VUJMRSkgSW5pdCgtMSkKLStJZiAtbXZzeCwgdXNlIFZTWCBhcml0aG1ldGljIGluc3RydWN0aW9u cyBmb3IgZG91YmxlIHZlY3RvcnMgKG9uIGJ5IGRlZmF1bHQpCi0rCi0rbXZzeC1zY2FsYXItZG91 YmxlCi0rVGFyZ2V0IFJlcG9ydCBWYXIoVEFSR0VUX1ZTWF9TQ0FMQVJfRE9VQkxFKSBJbml0KC0x KQotK0lmIC1tdnN4LCB1c2UgVlNYIGFyaXRobWV0aWMgaW5zdHJ1Y3Rpb25zIGZvciBzY2FsYXIg ZG91YmxlIChvbiBieSBkZWZhdWx0KQotKwotK212c3gtc2NhbGFyLW1lbW9yeQotK1RhcmdldCBS ZXBvcnQgVmFyKFRBUkdFVF9WU1hfU0NBTEFSX01FTU9SWSkKLStJZiAtbXZzeCwgdXNlIFZTWCBz Y2FsYXIgbWVtb3J5IHJlZmVyZW5jZSBpbnN0cnVjdGlvbnMgZm9yIHNjYWxhciBkb3VibGUgKG9m ZiBieSBkZWZhdWx0KQotIAotIG11cGRhdGUKLS1UYXJnZXQgUmVwb3J0IFJlamVjdE5lZ2F0aXZl IEludmVyc2VNYXNrKE5PX1VQREFURSwgVVBEQVRFKQotK1RhcmdldCBSZXBvcnQgVmFyKFRBUkdF VF9VUERBVEUpIEluaXQoMSkKLSBHZW5lcmF0ZSBsb2FkL3N0b3JlIHdpdGggdXBkYXRlIGluc3Ry dWN0aW9ucwotIAotIG1hdm9pZC1pbmRleGVkLWFkZHJlc3NlcwotIFRhcmdldCBSZXBvcnQgVmFy KFRBUkdFVF9BVk9JRF9YRk9STSkgSW5pdCgtMSkKLSBBdm9pZCBnZW5lcmF0aW9uIG9mIGluZGV4 ZWQgbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnMgd2hlbiBwb3NzaWJsZQotIAotLW1uby1mdXNlZC1t YWRkCi0tVGFyZ2V0IFJlcG9ydCBSZWplY3ROZWdhdGl2ZSBNYXNrKE5PX0ZVU0VEX01BREQpCi0t RG8gbm90IGdlbmVyYXRlIGZ1c2VkIG11bHRpcGx5L2FkZCBpbnN0cnVjdGlvbnMKLS0KLSBtZnVz ZWQtbWFkZAotLVRhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgSW52ZXJzZU1hc2soTk9fRlVT RURfTUFERCwgRlVTRURfTUFERCkKLStUYXJnZXQgUmVwb3J0IFZhcihUQVJHRVRfRlVTRURfTUFE RCkgSW5pdCgxKQotIEdlbmVyYXRlIGZ1c2VkIG11bHRpcGx5L2FkZCBpbnN0cnVjdGlvbnMKLSAK LSBtc2NoZWQtcHJvbG9nCi1AQCAtMTk0LDcgKzIxNCw3IEBAIFRhcmdldCBSZWplY3ROZWdhdGl2 ZSBKb2luZWQKLSAtbXZyc2F2ZT15ZXMvbm8JRGVwcmVjYXRlZCBvcHRpb24uICBVc2UgLW12cnNh dmUvLW1uby12cnNhdmUgaW5zdGVhZAotIAotIG1pc2VsCi0tVGFyZ2V0Ci0rVGFyZ2V0IFJlcG9y dCBNYXNrKElTRUwpCi0gR2VuZXJhdGUgaXNlbCBpbnN0cnVjdGlvbnMKLSAKLSBtaXNlbD0KLS0t LSBnY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NDU1 NykKLSsrKyBnY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgJKC4uLi9icmFuY2hlcy9pYm0vcG93 ZXI3LW1laXNzbmVyKQkocmV2aXNpb24gMTQ0NjkyKQotQEAgLTExNCw3ICsxMTQsNyBAQCBleHRl cm4gaW50IGRvdF9zeW1ib2xzOwotIAkgICAgZXJyb3IgKElOVkFMSURfMzJCSVQsICIzMiIpOwkJ CVwKLSAJICBpZiAoVEFSR0VUX1BST0ZJTEVfS0VSTkVMKQkJCQlcCi0gCSAgICB7CQkJCQkJCVwK LS0JICAgICAgdGFyZ2V0X2ZsYWdzICY9IH5NQVNLX1BST0ZJTEVfS0VSTkVMOwkJXAotKwkgICAg ICBTRVRfUFJPRklMRV9LRVJORUwgKDApOwkJCQlcCi0gCSAgICAgIGVycm9yIChJTlZBTElEXzMy QklULCAicHJvZmlsZS1rZXJuZWwiKTsJCVwKLSAJICAgIH0JCQkJCQkJXAotIAl9CQkJCQkJCVwK LS0tLSBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAuYwkoLi4uL3RydW5rKQkocmV2aXNpb24gMTQ0 NTU3KQotKysrIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5jCSguLi4vYnJhbmNoZXMvaWJtL3Bv d2VyNy1tZWlzc25lcikJKHJldmlzaW9uIDE0NDY5MikKLUBAIC0xNzgsOSArMTc4LDYgQEAgaW50 IHJzNjAwMF9zcGU7Ci0gLyogTm9uemVybyBpZiB3ZSB3YW50IFNQRSBBQkkgZXh0ZW5zaW9ucy4g ICovCi0gaW50IHJzNjAwMF9zcGVfYWJpOwotIAotLS8qIE5vbnplcm8gdG8gdXNlIGlzZWwgaW5z dHJ1Y3Rpb25zLiAgKi8KLS1pbnQgcnM2MDAwX2lzZWw7Ci0tCi0gLyogTm9uemVybyBpZiBmbG9h dGluZyBwb2ludCBvcGVyYXRpb25zIGFyZSBkb25lIGluIHRoZSBHUFJzLiAgKi8KLSBpbnQgcnM2 MDAwX2Zsb2F0X2dwcnMgPSAwOwotIAotQEAgLTIyNywxMCArMjI0LDE4IEBAIGludCBkb3Rfc3lt Ym9sczsKLSBjb25zdCBjaGFyICpyczYwMDBfZGVidWdfbmFtZTsKLSBpbnQgcnM2MDAwX2RlYnVn X3N0YWNrOwkJLyogZGVidWcgc3RhY2sgYXBwbGljYXRpb25zICovCi0gaW50IHJzNjAwMF9kZWJ1 Z19hcmc7CQkvKiBkZWJ1ZyBhcmd1bWVudCBoYW5kbGluZyAqLwotK2ludCByczYwMDBfZGVidWdf cmVnOwkJLyogZGVidWcgcmVnaXN0ZXIgY2xhc3NlcyAqLwotK2ludCByczYwMDBfZGVidWdfYWRk cjsJCS8qIGRlYnVnIG1lbW9yeSBhZGRyZXNzaW5nICovCi0gCi0gLyogVmFsdWUgaXMgVFJVRSBp ZiByZWdpc3Rlci9tb2RlIHBhaXIgaXMgYWNjZXB0YWJsZS4gICovCi0gYm9vbCByczYwMDBfaGFy ZF9yZWdub19tb2RlX29rX3BbTlVNX01BQ0hJTkVfTU9ERVNdW0ZJUlNUX1BTRVVET19SRUdJU1RF Ul07Ci0gCi0rLyogTWF4aW11bSBudW1iZXIgb2YgcmVnaXN0ZXJzIG5lZWRlZCBmb3IgYSBnaXZl biByZWdpc3RlciBjbGFzcyBhbmQgbW9kZS4gICovCi0rdW5zaWduZWQgY2hhciByczYwMDBfY2xh c3NfbWF4X25yZWdzW05VTV9NQUNISU5FX01PREVTXVtMSU1fUkVHX0NMQVNTRVNdOwotKwotKy8q IEhvdyBtYW55IHJlZ2lzdGVycyBhcmUgbmVlZGVkIGZvciBhIGdpdmVuIHJlZ2lzdGVyIGFuZCBt b2RlLiAgKi8KLSt1bnNpZ25lZCBjaGFyIHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzW05VTV9NQUNI SU5FX01PREVTXVtGSVJTVF9QU0VVRE9fUkVHSVNURVJdOwotKwotIC8qIEJ1aWx0IGluIHR5cGVz LiAgKi8KLSAKLSB0cmVlIHJzNjAwMF9idWlsdGluX3R5cGVzW1JTNjAwMF9CVElfTUFYXTsKLUBA IC0yNzAsNyArMjc1LDYgQEAgc3RydWN0IHsKLSAgIGJvb2wgYWx0aXZlY19hYmk7CQkvKiBUcnVl IGlmIC1tYWJpPWFsdGl2ZWMvbm8tYWx0aXZlYyB1c2VkLiAgKi8KLSAgIGJvb2wgc3BlOwkJCS8q IFRydWUgaWYgLW1zcGU9IHdhcyB1c2VkLiAgKi8KLSAgIGJvb2wgZmxvYXRfZ3ByczsJCS8qIFRy dWUgaWYgLW1mbG9hdC1ncHJzPSB3YXMgdXNlZC4gICovCi0tICBib29sIGlzZWw7CQkJLyogVHJ1 ZSBpZiAtbWlzZWwgd2FzIHVzZWQuICovCi0gICBib29sIGxvbmdfZG91YmxlOwkgICAgICAgIC8q IFRydWUgaWYgLW1sb25nLWRvdWJsZS0gd2FzIHVzZWQuICAqLwotICAgYm9vbCBpZWVlOwkJCS8q IFRydWUgaWYgLW1hYmk9aWVlZS9pYm1sb25nZG91YmxlIHVzZWQuICAqLwotICAgYm9vbCB2cnNh dmU7CQkJLyogVHJ1ZSBpZiAtbXZyc2F2ZSB3YXMgdXNlZC4gICovCi1AQCAtMjg2LDYgKzI5MCwx OCBAQCBzdHJ1Y3QgYnVpbHRpbl9kZXNjcmlwdGlvbgotICAgY29uc3QgY2hhciAqY29uc3QgbmFt ZTsKLSAgIGNvbnN0IGVudW0gcnM2MDAwX2J1aWx0aW5zIGNvZGU7Ci0gfTsKLSsKLSsvKiBEZXNj cmliZSB0aGUgdmVjdG9yIHVuaXQgdXNlZCBmb3IgbW9kZXMuICAqLwotK2VudW0gcnM2MDAwX3Zl Y3RvciByczYwMDBfdmVjdG9yX3VuaXRbTlVNX01BQ0hJTkVfTU9ERVNdOwotK2VudW0gcnM2MDAw X3ZlY3RvciByczYwMDBfdmVjdG9yX21lbVtOVU1fTUFDSElORV9NT0RFU107Ci0rZW51bSByZWdf Y2xhc3MgcnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3NbTlVNX01BQ0hJTkVfTU9ERVNdOwotKwotKy8q IERlc2NyaWJlIHRoZSBhbGlnbm1lbnQgb2YgYSB2ZWN0b3IuICAqLwotK2ludCByczYwMDBfdmVj dG9yX2FsaWduW05VTV9NQUNISU5FX01PREVTXTsKLSsKLSsvKiBEZXNjcmliZSB0aGUgcmVnaXN0 ZXIgY2xhc3NlcyB1c2VkIGJ5IFZTWCBpbnN0cnVjdGlvbnMuICAqLwotK2VudW0gcmVnX2NsYXNz IHJzNjAwMF92c3hfcmVnX2NsYXNzID0gTk9fUkVHUzsKLSsKLSAMCi0gLyogVGFyZ2V0IGNwdSBj b3N0cy4gICovCi0gCi1AQCAtNzQ5LDYgKzc2NSwyNSBAQCBzdHJ1Y3QgcHJvY2Vzc29yX2Nvc3Rz IHBvd2VyNl9jb3N0ID0gewotICAgMTYsCQkJLyogcHJlZmV0Y2ggc3RyZWFtcyAqLwotIH07Ci0g Ci0rLyogSW5zdHJ1Y3Rpb24gY29zdHMgb24gUE9XRVI3IHByb2Nlc3NvcnMuICAqLwotK3N0YXRp YyBjb25zdAotK3N0cnVjdCBwcm9jZXNzb3JfY29zdHMgcG93ZXI3X2Nvc3QgPSB7Ci0rICBDT1NU U19OX0lOU05TICgyKSwJLyogbXVsc2kgKi8KLSsgIENPU1RTX05fSU5TTlMgKDIpLAkvKiBtdWxz aV9jb25zdCAqLwotKyAgQ09TVFNfTl9JTlNOUyAoMiksCS8qIG11bHNpX2NvbnN0OSAqLwotKyAg Q09TVFNfTl9JTlNOUyAoMiksCS8qIG11bGRpICovCi0rICBDT1NUU19OX0lOU05TICgxOCksCS8q IGRpdnNpICovCi0rICBDT1NUU19OX0lOU05TICgzNCksCS8qIGRpdmRpICovCi0rICBDT1NUU19O X0lOU05TICgzKSwJLyogZnAgKi8KLSsgIENPU1RTX05fSU5TTlMgKDMpLAkvKiBkbXVsICovCi0r ICBDT1NUU19OX0lOU05TICgxMyksCS8qIHNkaXYgKi8KLSsgIENPU1RTX05fSU5TTlMgKDE2KSwJ LyogZGRpdiAqLwotKyAgMTI4LAkJCS8qIGNhY2hlIGxpbmUgc2l6ZSAqLwotKyAgMzIsCQkJLyog bDEgY2FjaGUgKi8KLSsgIDI1NiwJCQkvKiBsMiBjYWNoZSAqLwotKyAgMTIsCQkJLyogcHJlZmV0 Y2ggc3RyZWFtcyAqLwotK307Ci0rCi0gDAotIHN0YXRpYyBib29sIHJzNjAwMF9mdW5jdGlvbl9v a19mb3Jfc2liY2FsbCAodHJlZSwgdHJlZSk7Ci0gc3RhdGljIGNvbnN0IGNoYXIgKnJzNjAwMF9p bnZhbGlkX3dpdGhpbl9kb2xvb3AgKGNvbnN0X3J0eCk7Ci1AQCAtOTYzLDEyICs5OTgsMTAgQEAg c3RhdGljIHRyZWUgcnM2MDAwX2dpbXBsaWZ5X3ZhX2FyZyAodHJlZQotIHN0YXRpYyBib29sIHJz NjAwMF9tdXN0X3Bhc3NfaW5fc3RhY2sgKGVudW0gbWFjaGluZV9tb2RlLCBjb25zdF90cmVlKTsK LSBzdGF0aWMgYm9vbCByczYwMDBfc2NhbGFyX21vZGVfc3VwcG9ydGVkX3AgKGVudW0gbWFjaGlu ZV9tb2RlKTsKLSBzdGF0aWMgYm9vbCByczYwMDBfdmVjdG9yX21vZGVfc3VwcG9ydGVkX3AgKGVu dW0gbWFjaGluZV9tb2RlKTsKLS1zdGF0aWMgaW50IGdldF92ZWNfY21wX2luc24gKGVudW0gcnR4 X2NvZGUsIGVudW0gbWFjaGluZV9tb2RlLAotLQkJCSAgICAgZW51bSBtYWNoaW5lX21vZGUpOwot K3N0YXRpYyBydHggcnM2MDAwX2VtaXRfdmVjdG9yX2NvbXBhcmVfdnN4IChlbnVtIHJ0eF9jb2Rl LCBydHgsIHJ0eCwgcnR4KTsKLStzdGF0aWMgcnR4IHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb21wYXJl X2FsdGl2ZWMgKGVudW0gcnR4X2NvZGUsIHJ0eCwgcnR4LCBydHgpOwotIHN0YXRpYyBydHggcnM2 MDAwX2VtaXRfdmVjdG9yX2NvbXBhcmUgKGVudW0gcnR4X2NvZGUsIHJ0eCwgcnR4LAotIAkJCQkg ICAgICAgZW51bSBtYWNoaW5lX21vZGUpOwotLXN0YXRpYyBpbnQgZ2V0X3ZzZWxfaW5zbiAoZW51 bSBtYWNoaW5lX21vZGUpOwotLXN0YXRpYyB2b2lkIHJzNjAwMF9lbWl0X3ZlY3Rvcl9zZWxlY3Qg KHJ0eCwgcnR4LCBydHgsIHJ0eCk7Ci0gc3RhdGljIHRyZWUgcnM2MDAwX3N0YWNrX3Byb3RlY3Rf ZmFpbCAodm9pZCk7Ci0gCi0gY29uc3QgaW50IElOU05fTk9UX0FWQUlMQUJMRSA9IC0xOwotQEAg LTEwNDUsNiArMTA3OCw5IEBAIHN0YXRpYyBjb25zdCBjaGFyIGFsdF9yZWdfbmFtZXNbXVs4XSA9 Ci0gI2VuZGlmCi0gI2lmbmRlZiBUQVJHRVRfUFJPRklMRV9LRVJORUwKLSAjZGVmaW5lIFRBUkdF VF9QUk9GSUxFX0tFUk5FTCAwCi0rI2RlZmluZSBTRVRfUFJPRklMRV9LRVJORUwoTikKLSsjZWxz ZQotKyNkZWZpbmUgU0VUX1BST0ZJTEVfS0VSTkVMKE4pIFRBUkdFVF9QUk9GSUxFX0tFUk5FTCA9 IChOKQotICNlbmRpZgotIAotIC8qIFRoZSBWUlNBVkUgYml0bWFzayBwdXRzIGJpdCAldjAgYXMg dGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0LiAgKi8KLUBAIC0xMjk5LDI4ICsxMzM1LDk2IEBAIHN0 YXRpYyBjb25zdCBjaGFyIGFsdF9yZWdfbmFtZXNbXVs4XSA9Ci0gCi0gc3RydWN0IGdjY190YXJn ZXQgdGFyZ2V0bSA9IFRBUkdFVF9JTklUSUFMSVpFUjsKLSAMCi0rLyogUmV0dXJuIG51bWJlciBv ZiBjb25zZWN1dGl2ZSBoYXJkIHJlZ3MgbmVlZGVkIHN0YXJ0aW5nIGF0IHJlZyBSRUdOTwotKyAg IHRvIGhvbGQgc29tZXRoaW5nIG9mIG1vZGUgTU9ERS4KLSsgICBUaGlzIGlzIG9yZGluYXJpbHkg dGhlIGxlbmd0aCBpbiB3b3JkcyBvZiBhIHZhbHVlIG9mIG1vZGUgTU9ERQotKyAgIGJ1dCBjYW4g YmUgbGVzcyBmb3IgY2VydGFpbiBtb2RlcyBpbiBzcGVjaWFsIGxvbmcgcmVnaXN0ZXJzLgotKwot KyAgIEZvciB0aGUgU1BFLCBHUFJzIGFyZSA2NCBiaXRzIGJ1dCBvbmx5IDMyIGJpdHMgYXJlIHZp c2libGUgaW4KLSsgICBzY2FsYXIgaW5zdHJ1Y3Rpb25zLiAgVGhlIHVwcGVyIDMyIGJpdHMgYXJl IG9ubHkgYXZhaWxhYmxlIHRvIHRoZQotKyAgIFNJTUQgaW5zdHJ1Y3Rpb25zLgotKwotKyAgIFBP V0VSIGFuZCBQb3dlclBDIEdQUnMgaG9sZCAzMiBiaXRzIHdvcnRoOwotKyAgIFBvd2VyUEM2NCBH UFJzIGFuZCBGUFJzIHBvaW50IHJlZ2lzdGVyIGhvbGRzIDY0IGJpdHMgd29ydGguICAqLwotKwot K3N0YXRpYyBpbnQKLStyczYwMDBfaGFyZF9yZWdub19ucmVnc19pbnRlcm5hbCAoaW50IHJlZ25v LCBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlKQotK3sKLSsgIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQg cmVnX3NpemU7Ci0rCi0rICBpZiAoRlBfUkVHTk9fUCAocmVnbm8pKQotKyAgICByZWdfc2l6ZSA9 IChWRUNUT1JfVU5JVF9WU1hfUCAobW9kZSkKLSsJCT8gVU5JVFNfUEVSX1ZTWF9XT1JECi0rCQk6 IFVOSVRTX1BFUl9GUF9XT1JEKTsKLSsKLSsgIGVsc2UgaWYgKFNQRV9TSU1EX1JFR05PX1AgKHJl Z25vKSAmJiBUQVJHRVRfU1BFICYmIFNQRV9WRUNUT1JfTU9ERSAobW9kZSkpCi0rICAgIHJlZ19z aXplID0gVU5JVFNfUEVSX1NQRV9XT1JEOwotKwotKyAgZWxzZSBpZiAoQUxUSVZFQ19SRUdOT19Q IChyZWdubykpCi0rICAgIHJlZ19zaXplID0gVU5JVFNfUEVSX0FMVElWRUNfV09SRDsKLSsKLSsg IC8qIFRoZSB2YWx1ZSByZXR1cm5lZCBmb3IgU0Ntb2RlIGluIHRoZSBFNTAwIGRvdWJsZSBjYXNl IGlzIDIgZm9yCi0rICAgICBBQkkgY29tcGF0aWJpbGl0eTsgc3RvcmluZyBhbiBTQ21vZGUgdmFs dWUgaW4gYSBzaW5nbGUgcmVnaXN0ZXIKLSsgICAgIHdvdWxkIHJlcXVpcmUgZnVuY3Rpb25fYXJn IGFuZCByczYwMDBfc3BlX2Z1bmN0aW9uX2FyZyB0byBoYW5kbGUKLSsgICAgIFNDbW9kZSBzbyBh cyB0byBwYXNzIHRoZSB2YWx1ZSBjb3JyZWN0bHkgaW4gYSBwYWlyIG9mCi0rICAgICByZWdpc3Rl cnMuICAqLwotKyAgZWxzZSBpZiAoVEFSR0VUX0U1MDBfRE9VQkxFICYmIEZMT0FUX01PREVfUCAo bW9kZSkgJiYgbW9kZSAhPSBTQ21vZGUKLSsJICAgJiYgIURFQ0lNQUxfRkxPQVRfTU9ERV9QICht b2RlKSkKLSsgICAgcmVnX3NpemUgPSBVTklUU19QRVJfRlBfV09SRDsKLSsKLSsgIGVsc2UKLSsg ICAgcmVnX3NpemUgPSBVTklUU19QRVJfV09SRDsKLSsKLSsgIHJldHVybiAoR0VUX01PREVfU0la RSAobW9kZSkgKyByZWdfc2l6ZSAtIDEpIC8gcmVnX3NpemU7Ci0rfQotIAotIC8qIFZhbHVlIGlz IDEgaWYgaGFyZCByZWdpc3RlciBSRUdOTyBjYW4gaG9sZCBhIHZhbHVlIG9mIG1hY2hpbmUtbW9k ZQotICAgIE1PREUuICAqLwotIHN0YXRpYyBpbnQKLSByczYwMDBfaGFyZF9yZWdub19tb2RlX29r IChpbnQgcmVnbm8sIGVudW0gbWFjaGluZV9tb2RlIG1vZGUpCi0gewotKyAgaW50IGxhc3RfcmVn bm8gPSByZWdubyArIHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzW21vZGVdW3JlZ25vXSAtIDE7Ci0r Ci0rICAvKiBWU1ggcmVnaXN0ZXJzIHRoYXQgb3ZlcmxhcCB0aGUgRlBSIHJlZ2lzdGVycyBhcmUg bGFyZ2VyIHRoYW4gZm9yIG5vbi1WU1gKLSsgICAgIGltcGxlbWVudGF0aW9ucy4gIERvbid0IGFs bG93IGFuIGl0ZW0gdG8gYmUgc3BsaXQgYmV0d2VlbiBhIEZQIHJlZ2lzdGVyCi0rICAgICBhbmQg YW4gQWx0aXZlYyByZWdpc3Rlci4gICovCi0rICBpZiAoVkVDVE9SX1VOSVRfVlNYX1AgKG1vZGUp IHx8IFZFQ1RPUl9NRU1fVlNYX1AgKG1vZGUpKQotKyAgICB7Ci0rICAgICAgZW51bSByZWdfY2xh c3MgcmNsYXNzID0gcnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3NbbW9kZV07Ci0rICAgICAgaWYgKEZQ X1JFR05PX1AgKHJlZ25vKSkKLSsJcmV0dXJuICgocmNsYXNzID09IEZMT0FUX1JFR1MgfHwgcmNs YXNzID09IFZTWF9SRUdTKQotKwkJJiYgRlBfUkVHTk9fUCAobGFzdF9yZWdubykpOwotKwotKyAg ICAgIGlmIChBTFRJVkVDX1JFR05PX1AgKHJlZ25vKSkKLSsJcmV0dXJuICgocmNsYXNzID09IEFM VElWRUNfUkVHUyB8fCByY2xhc3MgPT0gVlNYX1JFR1MpCi0rCQkmJiBBTFRJVkVDX1JFR05PX1Ag KGxhc3RfcmVnbm8pKTsKLSsgICAgfQotKwotICAgLyogVGhlIEdQUnMgY2FuIGhvbGQgYW55IG1v ZGUsIGJ1dCB2YWx1ZXMgYmlnZ2VyIHRoYW4gb25lIHJlZ2lzdGVyCi0gICAgICBjYW5ub3QgZ28g cGFzdCBSMzEuICAqLwotICAgaWYgKElOVF9SRUdOT19QIChyZWdubykpCi0tICAgIHJldHVybiBJ TlRfUkVHTk9fUCAocmVnbm8gKyBIQVJEX1JFR05PX05SRUdTIChyZWdubywgbW9kZSkgLSAxKTsK LSsgICAgcmV0dXJuIElOVF9SRUdOT19QIChsYXN0X3JlZ25vKTsKLSAKLS0gIC8qIFRoZSBmbG9h dCByZWdpc3RlcnMgY2FuIG9ubHkgaG9sZCBmbG9hdGluZyBtb2RlcyBhbmQgREltb2RlLgotLSAg ICAgVGhpcyBleGNsdWRlcyB0aGUgMzItYml0IGRlY2ltYWwgZmxvYXQgbW9kZSBmb3Igbm93LiAg Ki8KLSsgIC8qIFRoZSBmbG9hdCByZWdpc3RlcnMgKGV4Y2VwdCBmb3IgVlNYIHZlY3RvciBtb2Rl cykgY2FuIG9ubHkgaG9sZCBmbG9hdGluZwotKyAgICAgbW9kZXMgYW5kIERJbW9kZS4gIFRoaXMg ZXhjbHVkZXMgdGhlIDMyLWJpdCBkZWNpbWFsIGZsb2F0IG1vZGUgZm9yCi0rICAgICBub3cuICAq LwotICAgaWYgKEZQX1JFR05PX1AgKHJlZ25vKSkKLS0gICAgcmV0dXJuCi0tICAgICAgKChTQ0FM QVJfRkxPQVRfTU9ERV9QIChtb2RlKQotLSAgICAgICAmJiAobW9kZSAhPSBURG1vZGUgfHwgKHJl Z25vICUgMikgPT0gMCkKLS0gICAgICAgJiYgRlBfUkVHTk9fUCAocmVnbm8gKyBIQVJEX1JFR05P X05SRUdTIChyZWdubywgbW9kZSkgLSAxKSkKLS0gICAgICB8fCAoR0VUX01PREVfQ0xBU1MgKG1v ZGUpID09IE1PREVfSU5UCi0rICAgIHsKLSsgICAgICBpZiAoU0NBTEFSX0ZMT0FUX01PREVfUCAo bW9kZSkKLSsJICAmJiAobW9kZSAhPSBURG1vZGUgfHwgKHJlZ25vICUgMikgPT0gMCkKLSsJICAm JiBGUF9SRUdOT19QIChsYXN0X3JlZ25vKSkKLSsJcmV0dXJuIDE7Ci0rCi0rICAgICAgaWYgKEdF VF9NT0RFX0NMQVNTIChtb2RlKSA9PSBNT0RFX0lOVAotIAkgICYmIEdFVF9NT0RFX1NJWkUgKG1v ZGUpID09IFVOSVRTX1BFUl9GUF9XT1JEKQotLSAgICAgIHx8IChQQUlSRURfU0lNRF9SRUdOT19Q IChyZWdubykgJiYgVEFSR0VUX1BBSVJFRF9GTE9BVAotLSAgICAgICAgICAgJiYgUEFJUkVEX1ZF Q1RPUl9NT0RFIChtb2RlKSkpOwotKwlyZXR1cm4gMTsKLSsKLSsgICAgICBpZiAoUEFJUkVEX1NJ TURfUkVHTk9fUCAocmVnbm8pICYmIFRBUkdFVF9QQUlSRURfRkxPQVQKLSsJICAmJiBQQUlSRURf VkVDVE9SX01PREUgKG1vZGUpKQotKwlyZXR1cm4gMTsKLSsKLSsgICAgICByZXR1cm4gMDsKLSsg ICAgfQotIAotICAgLyogVGhlIENSIHJlZ2lzdGVyIGNhbiBvbmx5IGhvbGQgQ0MgbW9kZXMuICAq LwotICAgaWYgKENSX1JFR05PX1AgKHJlZ25vKSkKLUBAIC0xMzMxLDI4ICsxNDM1LDMxMiBAQCBy czYwMDBfaGFyZF9yZWdub19tb2RlX29rIChpbnQgcmVnbm8sIGVuCi0gCi0gICAvKiBBbHRpVmVj IG9ubHkgaW4gQWxkeVZlYyByZWdpc3RlcnMuICAqLwotICAgaWYgKEFMVElWRUNfUkVHTk9fUCAo cmVnbm8pKQotLSAgICByZXR1cm4gQUxUSVZFQ19WRUNUT1JfTU9ERSAobW9kZSk7Ci0rICAgIHJl dHVybiBWRUNUT1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QIChtb2RlKTsKLSAKLSAgIC8qIC4uLmJ1 dCBHUFJzIGNhbiBob2xkIFNJTUQgZGF0YSBvbiB0aGUgU1BFIGluIG9uZSByZWdpc3Rlci4gICov Ci0gICBpZiAoU1BFX1NJTURfUkVHTk9fUCAocmVnbm8pICYmIFRBUkdFVF9TUEUgJiYgU1BFX1ZF Q1RPUl9NT0RFIChtb2RlKSkKLSAgICAgcmV0dXJuIDE7Ci0gCi0tICAvKiBXZSBjYW5ub3QgcHV0 IFRJbW9kZSBhbnl3aGVyZSBleGNlcHQgZ2VuZXJhbCByZWdpc3RlciBhbmQgaXQgbXVzdCBiZQot LSAgICAgYWJsZSB0byBmaXQgd2l0aGluIHRoZSByZWdpc3RlciBzZXQuICAqLwotKyAgLyogRG9u J3QgYWxsb3cgYW55dGhpbmcgYnV0IHdvcmQgc2l6ZWQgaW50ZWdlcnMgKGFrYSBwb2ludGVycykg aW4gQ1RSL0xSLiAgWW91Ci0rICAgICByZWFsbHkgZG9uJ3Qgd2FudCB0byBzcGlsbCB5b3VyIGZs b2F0aW5nIHBvaW50IHZhbHVlcyB0byB0aG9zZQotKyAgICAgcmVnaXN0ZXJzLiAgQWxzbyBkbyBp dCBmb3IgdGhlIG9sZCBNUSByZWdpc3RlciBpbiB0aGUgcG93ZXIuICAqLwotKyAgaWYgKHJlZ25v ID09IENUUl9SRUdOTyB8fCByZWdubyA9PSBMUl9SRUdOTyB8fCByZWdubyA9PSBNUV9SRUdOTykK LSsgICAgcmV0dXJuIChHRVRfTU9ERV9DTEFTUyAobW9kZSkgPT0gTU9ERV9JTlQKLSsJICAgICYm IEdFVF9NT0RFX1NJWkUgKG1vZGUpIDw9IFVOSVRTX1BFUl9XT1JEKTsKLSsKLSsgIC8qIFRoZSBW UlNBVkUvVlNDUiByZWdpc3RlcnMgYXJlIDMyLWJpdHMgKHRoZXkgYXJlIGZpeGVkLCBidXQgYWRk IHRoaXMgZm9yCi0rICAgICBjb21wbGV0ZW5lc3MpLiAgKi8KLSsgIGlmIChyZWdubyA9PSBWUlNB VkVfUkVHTk8gfHwgcmVnbm8gPT0gVlNDUl9SRUdOTykKLSsgICAgcmV0dXJuIChtb2RlID09IFNJ bW9kZSk7Ci0rCi0rICAvKiBXZSBjYW5ub3QgcHV0IFRJbW9kZSBhbnl3aGVyZSBleGNlcHQgZ2Vu ZXJhbCByZWdpc3RlciBhbmQgaXQgbXVzdCBiZSBhYmxlCi0rICAgICB0byBmaXQgd2l0aGluIHRo ZSByZWdpc3RlciBzZXQuICBJbiB0aGUgZnV0dXJlLCBhbGxvdyBUSW1vZGUgaW4gdGhlCi0rICAg ICBBbHRpdmVjIG9yIFZTWCByZWdpc3RlcnMuICAqLwotIAotICAgcmV0dXJuIEdFVF9NT0RFX1NJ WkUgKG1vZGUpIDw9IFVOSVRTX1BFUl9XT1JEOwotIH0KLSAKLS0vKiBJbml0aWFsaXplIHJzNjAw MF9oYXJkX3JlZ25vX21vZGVfb2tfcCB0YWJsZS4gICovCi0rLyogUHJpbnQgaW50ZXJlc3Rpbmcg ZmFjdHMgYWJvdXQgcmVnaXN0ZXJzLiAgKi8KLSBzdGF0aWMgdm9pZAotLXJzNjAwMF9pbml0X2hh cmRfcmVnbm9fbW9kZV9vayAodm9pZCkKLStyczYwMDBfZGVidWdfcmVnX3ByaW50IChpbnQgZmly c3RfcmVnbm8sIGludCBsYXN0X3JlZ25vLCBjb25zdCBjaGFyICpyZWdfbmFtZSkKLSB7Ci0gICBp bnQgciwgbTsKLSAKLSsgIGZvciAociA9IGZpcnN0X3JlZ25vOyByIDw9IGxhc3RfcmVnbm87ICsr cikKLSsgICAgewotKyAgICAgIGNvbnN0IGNoYXIgKmNvbW1hID0gIiI7Ci0rICAgICAgaW50IGxl bjsKLSsKLSsgICAgICBpZiAoZmlyc3RfcmVnbm8gPT0gbGFzdF9yZWdubykKLSsJZnByaW50ZiAo c3RkZXJyLCAiJXM6XHQiLCByZWdfbmFtZSk7Ci0rICAgICAgZWxzZQotKwlmcHJpbnRmIChzdGRl cnIsICIlcyVkOlx0IiwgcmVnX25hbWUsIHIgLSBmaXJzdF9yZWdubyk7Ci0rCi0rICAgICAgbGVu ID0gODsKLSsgICAgICBmb3IgKG0gPSAwOyBtIDwgTlVNX01BQ0hJTkVfTU9ERVM7ICsrbSkKLSsJ aWYgKHJzNjAwMF9oYXJkX3JlZ25vX21vZGVfb2tfcFttXVtyXSAmJiByczYwMDBfaGFyZF9yZWdu b19ucmVnc1ttXVtyXSkKLSsJICB7Ci0rCSAgICBpZiAobGVuID4gNzApCi0rCSAgICAgIHsKLSsJ CWZwcmludGYgKHN0ZGVyciwgIixcblx0Iik7Ci0rCQlsZW4gPSA4OwotKwkJY29tbWEgPSAiIjsK LSsJICAgICAgfQotKwotKwkgICAgaWYgKHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzW21dW3JdID4g MSkKLSsJICAgICAgbGVuICs9IGZwcmludGYgKHN0ZGVyciwgIiVzJXMvJWQiLCBjb21tYSwgR0VU X01PREVfTkFNRSAobSksCi0rCQkJICAgICByczYwMDBfaGFyZF9yZWdub19ucmVnc1ttXVtyXSk7 Ci0rCSAgICBlbHNlCi0rCSAgICAgIGxlbiArPSBmcHJpbnRmIChzdGRlcnIsICIlcyVzIiwgY29t bWEsIEdFVF9NT0RFX05BTUUgKG0pKTsKLSsKLSsJICAgIGNvbW1hID0gIiwgIjsKLSsJICB9Ci0r Ci0rICAgICAgaWYgKGNhbGxfdXNlZF9yZWdzW3JdKQotKwl7Ci0rCSAgaWYgKGxlbiA+IDcwKQot KwkgICAgewotKwkgICAgICBmcHJpbnRmIChzdGRlcnIsICIsXG5cdCIpOwotKwkgICAgICBsZW4g PSA4OwotKwkgICAgICBjb21tYSA9ICIiOwotKwkgICAgfQotKwotKwkgIGxlbiArPSBmcHJpbnRm IChzdGRlcnIsICIlcyVzIiwgY29tbWEsICJjYWxsLXVzZWQiKTsKLSsJICBjb21tYSA9ICIsICI7 Ci0rCX0KLSsKLSsgICAgICBpZiAoZml4ZWRfcmVnc1tyXSkKLSsJewotKwkgIGlmIChsZW4gPiA3 MCkKLSsJICAgIHsKLSsJICAgICAgZnByaW50ZiAoc3RkZXJyLCAiLFxuXHQiKTsKLSsJICAgICAg bGVuID0gODsKLSsJICAgICAgY29tbWEgPSAiIjsKLSsJICAgIH0KLSsKLSsJICBsZW4gKz0gZnBy aW50ZiAoc3RkZXJyLCAiJXMlcyIsIGNvbW1hLCAiZml4ZWQiKTsKLSsJICBjb21tYSA9ICIsICI7 Ci0rCX0KLSsKLSsgICAgICBpZiAobGVuID4gNzApCi0rCXsKLSsJICBmcHJpbnRmIChzdGRlcnIs ICIsXG5cdCIpOwotKwkgIGNvbW1hID0gIiI7Ci0rCX0KLSsKLSsgICAgICBmcHJpbnRmIChzdGRl cnIsICIlc3JlZ25vID0gJWRcbiIsIGNvbW1hLCByKTsKLSsgICAgfQotK30KLSsKLSsvKiBNYXAg ZW51bSByczYwMDBfdmVjdG9yIHRvIHN0cmluZy4gICovCi0rc3RhdGljIGNvbnN0IGNoYXIgKgot K3JzNjAwMF9kZWJ1Z192ZWN0b3JfdW5pdFtdID0gewotKyAgIm5vbmUiLAotKyAgImFsdGl2ZWMi LAotKyAgInZzeCIsCi0rICAicGFpcmVkIiwKLSsgICJzcGUiLAotKyAgIm90aGVyIgotK307Ci0r Ci0rLyogSW5pdGlhbGl6ZSB0aGUgdmFyaW91cyBnbG9iYWwgdGFibGVzIHRoYXQgYXJlIGJhc2Vk IG9uIHJlZ2lzdGVyIHNpemUuICAqLwotK3N0YXRpYyB2b2lkCi0rcnM2MDAwX2luaXRfaGFyZF9y ZWdub19tb2RlX29rICh2b2lkKQotK3sKLSsgIGludCByLCBtLCBjOwotKyAgZW51bSByZWdfY2xh c3MgdnN4X3JjID0gKFRBUkdFVF9BTFRJVkVDID8gVlNYX1JFR1MgOiBGTE9BVF9SRUdTKTsKLSsg IGJvb2wgZmxvYXRfcCA9IChUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyk7Ci0rCi0r ICAvKiBQcmVjYWxjdWxhdGUgdmVjdG9yIGluZm9ybWF0aW9uLCB0aGlzIG11c3QgYmUgc2V0IHVw IGJlZm9yZSB0aGUKLSsgICAgIHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzX2ludGVybmFsIGJlbG93 LiAgKi8KLSsgIGZvciAobSA9IDA7IG0gPCBOVU1fTUFDSElORV9NT0RFUzsgKyttKQotKyAgICB7 Ci0rICAgICAgcnM2MDAwX3ZlY3Rvcl91bml0W21dID0gcnM2MDAwX3ZlY3Rvcl9tZW1bbV0gPSBW RUNUT1JfTk9ORTsKLSsgICAgICByczYwMDBfdmVjdG9yX3JlZ19jbGFzc1ttXSA9IE5PX1JFR1M7 Ci0rICAgIH0KLSsKLSsgIC8qIFRPRE8sIGFkZCBUSS9WMkRJIG1vZGUgZm9yIG1vdmluZyBkYXRh IGlmIEFsdGl2ZWMgb3IgVlNYLiAgKi8KLSsKLSsgIC8qIFYyREYgbW9kZSwgVlNYIG9ubHkuICAq LwotKyAgaWYgKGZsb2F0X3AgJiYgVEFSR0VUX1ZTWCAmJiBUQVJHRVRfVlNYX1ZFQ1RPUl9ET1VC TEUpCi0rICAgIHsKLSsgICAgICByczYwMDBfdmVjdG9yX3VuaXRbVjJERm1vZGVdID0gVkVDVE9S X1ZTWDsKLSsgICAgICByczYwMDBfdmVjdG9yX21lbVtWMkRGbW9kZV0gPSBWRUNUT1JfVlNYOwot KyAgICAgIHJzNjAwMF92ZWN0b3JfYWxpZ25bVjJERm1vZGVdID0gNjQ7Ci0rICAgIH0KLSsKLSsg IC8qIFY0U0YgbW9kZSwgZWl0aGVyIFZTWCBvciBBbHRpdmVjLiAgKi8KLSsgIGlmIChmbG9hdF9w ICYmIFRBUkdFVF9WU1ggJiYgVEFSR0VUX1ZTWF9WRUNUT1JfRkxPQVQpCi0rICAgIHsKLSsgICAg ICByczYwMDBfdmVjdG9yX3VuaXRbVjRTRm1vZGVdID0gVkVDVE9SX1ZTWDsKLSsgICAgICBpZiAo VEFSR0VUX1ZTWF9WRUNUT1JfTUVNT1JZIHx8ICFUQVJHRVRfQUxUSVZFQykKLSsJewotKwkgIHJz NjAwMF92ZWN0b3JfYWxpZ25bVjRTRm1vZGVdID0gMzI7Ci0rCSAgcnM2MDAwX3ZlY3Rvcl9tZW1b VjRTRm1vZGVdID0gVkVDVE9SX1ZTWDsKLSsJfSBlbHNlIHsKLSsJICByczYwMDBfdmVjdG9yX2Fs aWduW1Y0U0Ztb2RlXSA9IDEyODsKLSsJICByczYwMDBfdmVjdG9yX21lbVtWNFNGbW9kZV0gPSBW RUNUT1JfQUxUSVZFQzsKLSsgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGZsb2F0X3AgJiYg VEFSR0VUX0FMVElWRUMpCi0rICAgIHsKLSsgICAgICByczYwMDBfdmVjdG9yX3VuaXRbVjRTRm1v ZGVdID0gVkVDVE9SX0FMVElWRUM7Ci0rICAgICAgcnM2MDAwX3ZlY3Rvcl9tZW1bVjRTRm1vZGVd ID0gVkVDVE9SX0FMVElWRUM7Ci0rICAgICAgcnM2MDAwX3ZlY3Rvcl9hbGlnbltWNFNGbW9kZV0g PSAxMjg7Ci0rICAgIH0KLSsKLSsgIC8qIFYxNlFJbW9kZSwgVjhISW1vZGUsIFY0U0ltb2RlIGFy ZSBBbHRpdmVjIG9ubHksIGJ1dCBwb3NzaWJseSBkbyBWU1ggbG9hZHMKLSsgICAgIGFuZCBzdG9y ZXMuICovCi0rICBpZiAoVEFSR0VUX0FMVElWRUMpCi0rICAgIHsKLSsgICAgICByczYwMDBfdmVj dG9yX3VuaXRbVjRTSW1vZGVdID0gVkVDVE9SX0FMVElWRUM7Ci0rICAgICAgcnM2MDAwX3ZlY3Rv cl91bml0W1Y4SEltb2RlXSA9IFZFQ1RPUl9BTFRJVkVDOwotKyAgICAgIHJzNjAwMF92ZWN0b3Jf dW5pdFtWMTZRSW1vZGVdID0gVkVDVE9SX0FMVElWRUM7Ci0rCi0rICAgICAgcnM2MDAwX3ZlY3Rv cl9yZWdfY2xhc3NbVjE2UUltb2RlXSA9IEFMVElWRUNfUkVHUzsKLSsgICAgICByczYwMDBfdmVj dG9yX3JlZ19jbGFzc1tWOEhJbW9kZV0gPSBBTFRJVkVDX1JFR1M7Ci0rICAgICAgcnM2MDAwX3Zl Y3Rvcl9yZWdfY2xhc3NbVjRTSW1vZGVdID0gQUxUSVZFQ19SRUdTOwotKwotKyAgICAgIGlmIChU QVJHRVRfVlNYICYmIFRBUkdFVF9WU1hfVkVDVE9SX01FTU9SWSkKLSsJewotKwkgIHJzNjAwMF92 ZWN0b3JfbWVtW1Y0U0ltb2RlXSA9IFZFQ1RPUl9WU1g7Ci0rCSAgcnM2MDAwX3ZlY3Rvcl9tZW1b VjhISW1vZGVdID0gVkVDVE9SX1ZTWDsKLSsJICByczYwMDBfdmVjdG9yX21lbVtWMTZRSW1vZGVd ID0gVkVDVE9SX1ZTWDsKLSsJICByczYwMDBfdmVjdG9yX2FsaWduW1Y0U0ltb2RlXSA9IDMyOwot KwkgIHJzNjAwMF92ZWN0b3JfYWxpZ25bVjhISW1vZGVdID0gMzI7Ci0rCSAgcnM2MDAwX3ZlY3Rv cl9hbGlnbltWMTZRSW1vZGVdID0gMzI7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICByczYw MDBfdmVjdG9yX21lbVtWNFNJbW9kZV0gPSBWRUNUT1JfQUxUSVZFQzsKLSsJICByczYwMDBfdmVj dG9yX21lbVtWOEhJbW9kZV0gPSBWRUNUT1JfQUxUSVZFQzsKLSsJICByczYwMDBfdmVjdG9yX21l bVtWMTZRSW1vZGVdID0gVkVDVE9SX0FMVElWRUM7Ci0rCSAgcnM2MDAwX3ZlY3Rvcl9hbGlnbltW NFNJbW9kZV0gPSAxMjg7Ci0rCSAgcnM2MDAwX3ZlY3Rvcl9hbGlnbltWOEhJbW9kZV0gPSAxMjg7 Ci0rCSAgcnM2MDAwX3ZlY3Rvcl9hbGlnbltWMTZRSW1vZGVdID0gMTI4OwotKwl9Ci0rICAgIH0K LSsKLSsgIC8qIERGbW9kZSwgc2VlIGlmIHdlIHdhbnQgdG8gdXNlIHRoZSBWU1ggdW5pdC4gICov Ci0rICBpZiAoZmxvYXRfcCAmJiBUQVJHRVRfVlNYICYmIFRBUkdFVF9WU1hfU0NBTEFSX0RPVUJM RSkKLSsgICAgewotKyAgICAgIHJzNjAwMF92ZWN0b3JfdW5pdFtERm1vZGVdID0gVkVDVE9SX1ZT WDsKLSsgICAgICByczYwMDBfdmVjdG9yX2FsaWduW0RGbW9kZV0gPSA2NDsKLSsgICAgICByczYw MDBfdmVjdG9yX21lbVtERm1vZGVdCi0rCT0gKFRBUkdFVF9WU1hfU0NBTEFSX01FTU9SWSA/IFZF Q1RPUl9WU1ggOiBWRUNUT1JfTk9ORSk7Ci0rICAgIH0KLSsKLSsgIC8qIFRPRE8sIGFkZCBTUEUg YW5kIHBhaXJlZCBmbG9hdGluZyBwb2ludCB2ZWN0b3Igc3VwcG9ydC4gICovCi0rCi0rICAvKiBT ZXQgdGhlIFZTWCByZWdpc3RlciBjbGFzc2VzLiAgKi8KLSsgIHJzNjAwMF92ZWN0b3JfcmVnX2Ns YXNzW1Y0U0Ztb2RlXQotKyAgICA9ICgoVkVDVE9SX1VOSVRfVlNYX1AgKFY0U0Ztb2RlKSAmJiBW RUNUT1JfTUVNX1ZTWF9QIChWNFNGbW9kZSkpCi0rICAgICAgID8gdnN4X3JjCi0rICAgICAgIDog KFZFQ1RPUl9VTklUX0FMVElWRUNfT1JfVlNYX1AgKFY0U0Ztb2RlKQotKwkgID8gQUxUSVZFQ19S RUdTCi0rCSAgOiBOT19SRUdTKSk7Ci0rCi0rICByczYwMDBfdmVjdG9yX3JlZ19jbGFzc1tWMkRG bW9kZV0KLSsgICAgPSAoVkVDVE9SX1VOSVRfVlNYX1AgKFYyREZtb2RlKSA/IHZzeF9yYyA6IE5P X1JFR1MpOwotKwotKyAgcnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3NbREZtb2RlXQotKyAgICA9ICgo IWZsb2F0X3AgfHwgIVZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpKQotKyAgICAgICA/IE5PX1JF R1MKLSsgICAgICAgOiAoKFRBUkdFVF9WU1hfU0NBTEFSX01FTU9SWSkKLSsJICA/IHZzeF9yYwot KwkgIDogRkxPQVRfUkVHUykpOwotKwotKyAgcnM2MDAwX3ZzeF9yZWdfY2xhc3MgPSAoZmxvYXRf cCAmJiBUQVJHRVRfVlNYKSA/IHZzeF9yYyA6IE5PX1JFR1M7Ci0rCi0rICAvKiBQcmVjYWxjdWxh dGUgSEFSRF9SRUdOT19OUkVHUy4gICovCi0rICBmb3IgKHIgPSAwOyByIDwgRklSU1RfUFNFVURP X1JFR0lTVEVSOyArK3IpCi0rICAgIGZvciAobSA9IDA7IG0gPCBOVU1fTUFDSElORV9NT0RFUzsg KyttKQotKyAgICAgIHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzW21dW3JdID0gcnM2MDAwX2hhcmRf cmVnbm9fbnJlZ3NfaW50ZXJuYWwgKHIsIG0pOwotKwotKyAgLyogUHJlY2FsY3VsYXRlIEhBUkRf UkVHTk9fTU9ERV9PSy4gICovCi0gICBmb3IgKHIgPSAwOyByIDwgRklSU1RfUFNFVURPX1JFR0lT VEVSOyArK3IpCi0gICAgIGZvciAobSA9IDA7IG0gPCBOVU1fTUFDSElORV9NT0RFUzsgKyttKQot ICAgICAgIGlmIChyczYwMDBfaGFyZF9yZWdub19tb2RlX29rIChyLCBtKSkKLSAJcnM2MDAwX2hh cmRfcmVnbm9fbW9kZV9va19wW21dW3JdID0gdHJ1ZTsKLSsKLSsgIC8qIFByZWNhbGN1bGF0ZSBD TEFTU1NfTUFYX05SRUdTIHNpemVzLiAgKi8KLSsgIGZvciAoYyA9IDA7IGMgPCBMSU1fUkVHX0NM QVNTRVM7ICsrYykKLSsgICAgewotKyAgICAgIGludCByZWdfc2l6ZTsKLSsKLSsgICAgICBpZiAo VEFSR0VUX1ZTWCAmJiBWU1hfUkVHX0NMQVNTX1AgKGMpKQotKwlyZWdfc2l6ZSA9IFVOSVRTX1BF Ul9WU1hfV09SRDsKLSsKLSsgICAgICBlbHNlIGlmIChjID09IEFMVElWRUNfUkVHUykKLSsJcmVn X3NpemUgPSBVTklUU19QRVJfQUxUSVZFQ19XT1JEOwotKwotKyAgICAgIGVsc2UgaWYgKGMgPT0g RkxPQVRfUkVHUykKLSsJcmVnX3NpemUgPSBVTklUU19QRVJfRlBfV09SRDsKLSsKLSsgICAgICBl bHNlCi0rCXJlZ19zaXplID0gVU5JVFNfUEVSX1dPUkQ7Ci0rCi0rICAgICAgZm9yIChtID0gMDsg bSA8IE5VTV9NQUNISU5FX01PREVTOyArK20pCi0rCXJzNjAwMF9jbGFzc19tYXhfbnJlZ3NbbV1b Y10KLSsJICA9IChHRVRfTU9ERV9TSVpFIChtKSArIHJlZ19zaXplIC0gMSkgLyByZWdfc2l6ZTsK LSsgICAgfQotKwotKyAgaWYgKFRBUkdFVF9FNTAwX0RPVUJMRSkKLSsgICAgcnM2MDAwX2NsYXNz X21heF9ucmVnc1tERm1vZGVdW0dFTkVSQUxfUkVHU10gPSAxOwotKwotKyAgaWYgKFRBUkdFVF9E RUJVR19SRUcpCi0rICAgIHsKLSsgICAgICBjb25zdCBjaGFyICpubCA9IChjb25zdCBjaGFyICop MDsKLSsKLSsgICAgICBmcHJpbnRmIChzdGRlcnIsICJSZWdpc3RlciBpbmZvcm1hdGlvbjogKGxh c3QgdmlydHVhbCByZWcgPSAlZClcbiIsCi0rCSAgICAgICBMQVNUX1ZJUlRVQUxfUkVHSVNURVIp OwotKyAgICAgIHJzNjAwMF9kZWJ1Z19yZWdfcHJpbnQgKDAsIDMxLCAiZ3IiKTsKLSsgICAgICBy czYwMDBfZGVidWdfcmVnX3ByaW50ICgzMiwgNjMsICJmcCIpOwotKyAgICAgIHJzNjAwMF9kZWJ1 Z19yZWdfcHJpbnQgKEZJUlNUX0FMVElWRUNfUkVHTk8sCi0rCQkJICAgICAgTEFTVF9BTFRJVkVD X1JFR05PLAotKwkJCSAgICAgICJ2cyIpOwotKyAgICAgIHJzNjAwMF9kZWJ1Z19yZWdfcHJpbnQg KExSX1JFR05PLCBMUl9SRUdOTywgImxyIik7Ci0rICAgICAgcnM2MDAwX2RlYnVnX3JlZ19wcmlu dCAoQ1RSX1JFR05PLCBDVFJfUkVHTk8sICJjdHIiKTsKLSsgICAgICByczYwMDBfZGVidWdfcmVn X3ByaW50IChDUjBfUkVHTk8sIENSN19SRUdOTywgImNyIik7Ci0rICAgICAgcnM2MDAwX2RlYnVn X3JlZ19wcmludCAoTVFfUkVHTk8sIE1RX1JFR05PLCAibXEiKTsKLSsgICAgICByczYwMDBfZGVi dWdfcmVnX3ByaW50IChYRVJfUkVHTk8sIFhFUl9SRUdOTywgInhlciIpOwotKyAgICAgIHJzNjAw MF9kZWJ1Z19yZWdfcHJpbnQgKFZSU0FWRV9SRUdOTywgVlJTQVZFX1JFR05PLCAidnJzYXZlIik7 Ci0rICAgICAgcnM2MDAwX2RlYnVnX3JlZ19wcmludCAoVlNDUl9SRUdOTywgVlNDUl9SRUdOTywg InZzY3IiKTsKLSsgICAgICByczYwMDBfZGVidWdfcmVnX3ByaW50IChTUEVfQUNDX1JFR05PLCBT UEVfQUNDX1JFR05PLCAic3BlX2EiKTsKLSsgICAgICByczYwMDBfZGVidWdfcmVnX3ByaW50IChT UEVGU0NSX1JFR05PLCBTUEVGU0NSX1JFR05PLCAic3BlX2YiKTsKLSsKLSsgICAgICBmcHJpbnRm IChzdGRlcnIsCi0rCSAgICAgICAiXG4iCi0rCSAgICAgICAiVjE2UUkgcmVnX2NsYXNzID0gJXNc biIKLSsJICAgICAgICJWOEhJICByZWdfY2xhc3MgPSAlc1xuIgotKwkgICAgICAgIlY0U0kgIHJl Z19jbGFzcyA9ICVzXG4iCi0rCSAgICAgICAiVjJESSAgcmVnX2NsYXNzID0gJXNcbiIKLSsJICAg ICAgICJWNFNGICByZWdfY2xhc3MgPSAlc1xuIgotKwkgICAgICAgIlYyREYgIHJlZ19jbGFzcyA9 ICVzXG4iCi0rCSAgICAgICAiREYgICAgcmVnX2NsYXNzID0gJXNcbiIKLSsJICAgICAgICJ2c3gg ICByZWdfY2xhc3MgPSAlc1xuXG4iLAotKwkgICAgICAgcmVnX2NsYXNzX25hbWVzW3JzNjAwMF92 ZWN0b3JfcmVnX2NsYXNzW1YxNlFJbW9kZV1dLAotKwkgICAgICAgcmVnX2NsYXNzX25hbWVzW3Jz NjAwMF92ZWN0b3JfcmVnX2NsYXNzW1Y4SEltb2RlXV0sCi0rCSAgICAgICByZWdfY2xhc3NfbmFt ZXNbcnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3NbVjRTSW1vZGVdXSwKLSsJICAgICAgIHJlZ19jbGFz c19uYW1lc1tyczYwMDBfdmVjdG9yX3JlZ19jbGFzc1tWMkRJbW9kZV1dLAotKwkgICAgICAgcmVn X2NsYXNzX25hbWVzW3JzNjAwMF92ZWN0b3JfcmVnX2NsYXNzW1Y0U0Ztb2RlXV0sCi0rCSAgICAg ICByZWdfY2xhc3NfbmFtZXNbcnM2MDAwX3ZlY3Rvcl9yZWdfY2xhc3NbVjJERm1vZGVdXSwKLSsJ ICAgICAgIHJlZ19jbGFzc19uYW1lc1tyczYwMDBfdmVjdG9yX3JlZ19jbGFzc1tERm1vZGVdXSwK LSsJICAgICAgIHJlZ19jbGFzc19uYW1lc1tyczYwMDBfdnN4X3JlZ19jbGFzc10pOwotKwotKyAg ICAgIGZvciAobSA9IDA7IG0gPCBOVU1fTUFDSElORV9NT0RFUzsgKyttKQotKwlpZiAocnM2MDAw X3ZlY3Rvcl91bml0W21dIHx8IHJzNjAwMF92ZWN0b3JfbWVtW21dKQotKwkgIHsKLSsJICAgIG5s ID0gIlxuIjsKLSsJICAgIGZwcmludGYgKHN0ZGVyciwgIlZlY3RvciBtb2RlOiAlLTVzIGFyaXRo bWV0aWM6ICUtOHMgbW92ZTogJS04c1xuIiwKLSsJCSAgICAgR0VUX01PREVfTkFNRSAobSksCi0r CQkgICAgIHJzNjAwMF9kZWJ1Z192ZWN0b3JfdW5pdFsgcnM2MDAwX3ZlY3Rvcl91bml0W21dIF0s Ci0rCQkgICAgIHJzNjAwMF9kZWJ1Z192ZWN0b3JfdW5pdFsgcnM2MDAwX3ZlY3Rvcl9tZW1bbV0g XSk7Ci0rCSAgfQotKwotKyAgICAgIGlmIChubCkKLSsJZnB1dHMgKG5sLCBzdGRlcnIpOwotKyAg ICB9Ci0gfQotIAotICNpZiBUQVJHRVRfTUFDSE8KLUBAIC0xNDgyLDEyICsxODcwLDE1IEBAIHJz NjAwMF9vdmVycmlkZV9vcHRpb25zIChjb25zdCBjaGFyICpkZWYKLSAJIHsiODAxIiwgUFJPQ0VT U09SX01QQ0NPUkUsIFBPV0VSUENfQkFTRV9NQVNLIHwgTUFTS19TT0ZUX0ZMT0FUfSwKLSAJIHsi ODIxIiwgUFJPQ0VTU09SX01QQ0NPUkUsIFBPV0VSUENfQkFTRV9NQVNLIHwgTUFTS19TT0ZUX0ZM T0FUfSwKLSAJIHsiODIzIiwgUFJPQ0VTU09SX01QQ0NPUkUsIFBPV0VSUENfQkFTRV9NQVNLIHwg TUFTS19TT0ZUX0ZMT0FUfSwKLS0JIHsiODU0MCIsIFBST0NFU1NPUl9QUEM4NTQwLCBQT1dFUlBD X0JBU0VfTUFTSyB8IE1BU0tfU1RSSUNUX0FMSUdOfSwKLSsJIHsiODU0MCIsIFBST0NFU1NPUl9Q UEM4NTQwLCBQT1dFUlBDX0JBU0VfTUFTSyB8IE1BU0tfU1RSSUNUX0FMSUdOCi0rCSAgfCBNQVNL X0lTRUx9LAotIAkgLyogODU0OCBoYXMgYSBkdW1teSBlbnRyeSBmb3Igbm93LiAgKi8KLS0JIHsi ODU0OCIsIFBST0NFU1NPUl9QUEM4NTQwLCBQT1dFUlBDX0JBU0VfTUFTSyB8IE1BU0tfU1RSSUNU X0FMSUdOfSwKLSsJIHsiODU0OCIsIFBST0NFU1NPUl9QUEM4NTQwLCBQT1dFUlBDX0JBU0VfTUFT SyB8IE1BU0tfU1RSSUNUX0FMSUdOCi0rCSAgfCBNQVNLX0lTRUx9LAotIAkgeyJlMzAwYzIiLCBQ Uk9DRVNTT1JfUFBDRTMwMEMyLCBQT1dFUlBDX0JBU0VfTUFTSyB8IE1BU0tfU09GVF9GTE9BVH0s Ci0gCSB7ImUzMDBjMyIsIFBST0NFU1NPUl9QUENFMzAwQzMsIFBPV0VSUENfQkFTRV9NQVNLfSwK LS0JIHsiZTUwMG1jIiwgUFJPQ0VTU09SX1BQQ0U1MDBNQywgUE9XRVJQQ19CQVNFX01BU0sgfCBN QVNLX1BQQ19HRlhPUFR9LAotKwkgeyJlNTAwbWMiLCBQUk9DRVNTT1JfUFBDRTUwME1DLCBQT1dF UlBDX0JBU0VfTUFTSyB8IE1BU0tfUFBDX0dGWE9QVAotKwkgIHwgTUFTS19JU0VMfSwKLSAJIHsi ODYwIiwgUFJPQ0VTU09SX01QQ0NPUkUsIFBPV0VSUENfQkFTRV9NQVNLIHwgTUFTS19TT0ZUX0ZM T0FUfSwKLSAJIHsiOTcwIiwgUFJPQ0VTU09SX1BPV0VSNCwKLSAJICBQT1dFUlBDXzc0MDBfTUFT SyB8IE1BU0tfUFBDX0dQT1BUIHwgTUFTS19NRkNSRiB8IE1BU0tfUE9XRVJQQzY0fSwKLUBAIC0x NTIwLDkgKzE5MTEsMTAgQEAgcnM2MDAwX292ZXJyaWRlX29wdGlvbnMgKGNvbnN0IGNoYXIgKmRl ZgotIAkgIFBPV0VSUENfQkFTRV9NQVNLIHwgTUFTS19QT1dFUlBDNjQgfCBNQVNLX1BQQ19HUE9Q VCB8IE1BU0tfUFBDX0dGWE9QVAotIAkgIHwgTUFTS19NRkNSRiB8IE1BU0tfUE9QQ05UQiB8IE1B U0tfRlBSTkQgfCBNQVNLX0NNUEIgfCBNQVNLX0RGUAotIAkgIHwgTUFTS19NRlBHUFJ9LAotLQkg eyJwb3dlcjciLCBQUk9DRVNTT1JfUE9XRVI1LAotKwkgeyJwb3dlcjciLCBQUk9DRVNTT1JfUE9X RVI3LAotIAkgIFBPV0VSUENfNzQwMF9NQVNLIHwgTUFTS19QT1dFUlBDNjQgfCBNQVNLX1BQQ19H UE9QVCB8IE1BU0tfTUZDUkYKLS0JICB8IE1BU0tfUE9QQ05UQiB8IE1BU0tfRlBSTkQgfCBNQVNL X0NNUEIgfCBNQVNLX0RGUH0sCi0rCSAgfCBNQVNLX1BPUENOVEIgfCBNQVNLX0ZQUk5EIHwgTUFT S19DTVBCIHwgTUFTS19ERlAgfCBNQVNLX1BPUENOVEQKLSsJICB8IE1BU0tfVlNYfSwJLyogRG9u J3QgYWRkIE1BU0tfSVNFTCBieSBkZWZhdWx0ICovCi0gCSB7InBvd2VycGMiLCBQUk9DRVNTT1Jf UE9XRVJQQywgUE9XRVJQQ19CQVNFX01BU0t9LAotIAkgeyJwb3dlcnBjNjQiLCBQUk9DRVNTT1Jf UE9XRVJQQzY0LAotIAkgIFBPV0VSUENfQkFTRV9NQVNLIHwgTUFTS19QUENfR0ZYT1BUIHwgTUFT S19QT1dFUlBDNjR9LAotQEAgLTE1NDksNyArMTk0MSw4IEBAIHJzNjAwMF9vdmVycmlkZV9vcHRp b25zIChjb25zdCBjaGFyICpkZWYKLSAgICAgUE9XRVJQQ19NQVNLUyA9IChQT1dFUlBDX0JBU0Vf TUFTSyB8IE1BU0tfUFBDX0dQT1BUIHwgTUFTS19TVFJJQ1RfQUxJR04KLSAJCSAgICAgfCBNQVNL X1BQQ19HRlhPUFQgfCBNQVNLX1BPV0VSUEM2NCB8IE1BU0tfQUxUSVZFQwotIAkJICAgICB8IE1B U0tfTUZDUkYgfCBNQVNLX1BPUENOVEIgfCBNQVNLX0ZQUk5EIHwgTUFTS19NVUxIVwotLQkJICAg ICB8IE1BU0tfRExNWkIgfCBNQVNLX0NNUEIgfCBNQVNLX01GUEdQUiB8IE1BU0tfREZQKQotKwkJ ICAgICB8IE1BU0tfRExNWkIgfCBNQVNLX0NNUEIgfCBNQVNLX01GUEdQUiB8IE1BU0tfREZQCi0r CQkgICAgIHwgTUFTS19QT1BDTlREIHwgTUFTS19WU1ggfCBNQVNLX0lTRUwpCi0gICB9OwotIAot ICAgc2V0X21hc2tzID0gUE9XRVJfTUFTS1MgfCBQT1dFUlBDX01BU0tTIHwgTUFTS19TT0ZUX0ZM T0FUOwotQEAgLTE1OTQsMTAgKzE5ODcsNiBAQCByczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyAoY29u c3QgY2hhciAqZGVmCi0gCX0KLSAgICAgfQotIAotLSAgaWYgKChUQVJHRVRfRTUwMCB8fCByczYw MDBfY3B1ID09IFBST0NFU1NPUl9QUENFNTAwTUMpCi0tICAgICAgJiYgIXJzNjAwMF9leHBsaWNp dF9vcHRpb25zLmlzZWwpCi0tICAgIHJzNjAwMF9pc2VsID0gMTsKLS0KLSAgIGlmIChyczYwMDBf Y3B1ID09IFBST0NFU1NPUl9QUENFMzAwQzIgfHwgcnM2MDAwX2NwdSA9PSBQUk9DRVNTT1JfUFBD RTMwMEMzCi0gICAgICAgfHwgcnM2MDAwX2NwdSA9PSBQUk9DRVNTT1JfUFBDRTUwME1DKQotICAg ICB7Ci1AQCAtMTY0MiwxNSArMjAzMSw0NyBAQCByczYwMDBfb3ZlcnJpZGVfb3B0aW9ucyAoY29u c3QgY2hhciAqZGVmCi0gCX0KLSAgICAgfQotIAotKyAgLyogQWRkIHNvbWUgd2FybmluZ3MgZm9y IFZTWC4gIEVuYWJsZSAtbWFsdGl2ZWMgdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkKLSsgICAg IHVzZWQgLW1uby1hbHRpdmVjICAqLwotKyAgaWYgKFRBUkdFVF9WU1gpCi0rICAgIHsKLSsgICAg ICBjb25zdCBjaGFyICptc2cgPSBOVUxMOwotKyAgICAgIGlmICghVEFSR0VUX0hBUkRfRkxPQVQg fHwgIVRBUkdFVF9GUFJTCi0rCSAgfHwgIVRBUkdFVF9TSU5HTEVfRkxPQVQgfHwgIVRBUkdFVF9E T1VCTEVfRkxPQVQpCi0rCW1zZyA9ICItbXZzeCByZXF1aXJlcyBoYXJkd2FyZSBmbG9hdGluZyBw b2ludCI7Ci0rICAgICAgZWxzZSBpZiAoVEFSR0VUX1BBSVJFRF9GTE9BVCkKLSsJbXNnID0gIi1t dnN4IGFuZCAtbXBhaXJlZCBhcmUgaW5jb21wYXRpYmxlIjsKLSsgICAgICAvKiBUaGUgaGFyZHdh cmUgd2lsbCBhbGxvdyBWU1ggYW5kIGxpdHRsZSBlbmRpYW4sIGJ1dCB1bnRpbCB3ZSBtYWtlIHN1 cmUKLSsJIHRoaW5ncyBsaWtlIHZlY3RvciBzZWxlY3QsIGV0Yy4gd29yayBkb24ndCBhbGxvdyBW U1ggb24gbGl0dGxlIGVuZGlhbgotKwkgc3lzdGVtcyBhdCB0aGlzIHBvaW50LiAgKi8KLSsgICAg ICBlbHNlIGlmICghQllURVNfQklHX0VORElBTikKLSsJbXNnID0gIi1tdnN4IHVzZWQgd2l0aCBs aXR0bGUgZW5kaWFuIGNvZGUiOwotKyAgICAgIGVsc2UgaWYgKFRBUkdFVF9BVk9JRF9YRk9STSA+ IDApCi0rCW1zZyA9ICItbXZzeCBuZWVkcyBpbmRleGVkIGFkZHJlc3NpbmciOwotKwotKyAgICAg IGlmIChtc2cpCi0rCXsKLSsJICB3YXJuaW5nICgwLCBtc2cpOwotKwkgIHRhcmdldF9mbGFncyAm PSBNQVNLX1ZTWDsKLSsJfQotKyAgICAgIGVsc2UgaWYgKCFUQVJHRVRfQUxUSVZFQyAmJiAodGFy Z2V0X2ZsYWdzX2V4cGxpY2l0ICYgTUFTS19BTFRJVkVDKSA9PSAwKQotKwl0YXJnZXRfZmxhZ3Mg fD0gTUFTS19BTFRJVkVDOwotKyAgICB9Ci0rCi0gICAvKiBTZXQgZGVidWcgZmxhZ3MgKi8KLSAg IGlmIChyczYwMDBfZGVidWdfbmFtZSkKLSAgICAgewotICAgICAgIGlmICghIHN0cmNtcCAocnM2 MDAwX2RlYnVnX25hbWUsICJhbGwiKSkKLS0JcnM2MDAwX2RlYnVnX3N0YWNrID0gcnM2MDAwX2Rl YnVnX2FyZyA9IDE7Ci0rCXJzNjAwMF9kZWJ1Z19zdGFjayA9IHJzNjAwMF9kZWJ1Z19hcmcgPSBy czYwMDBfZGVidWdfcmVnCi0rCSAgPSByczYwMDBfZGVidWdfYWRkciA9IDE7Ci0gICAgICAgZWxz ZSBpZiAoISBzdHJjbXAgKHJzNjAwMF9kZWJ1Z19uYW1lLCAic3RhY2siKSkKLSAJcnM2MDAwX2Rl YnVnX3N0YWNrID0gMTsKLSAgICAgICBlbHNlIGlmICghIHN0cmNtcCAocnM2MDAwX2RlYnVnX25h bWUsICJhcmciKSkKLSAJcnM2MDAwX2RlYnVnX2FyZyA9IDE7Ci0rICAgICAgZWxzZSBpZiAoISBz dHJjbXAgKHJzNjAwMF9kZWJ1Z19uYW1lLCAicmVnIikpCi0rCXJzNjAwMF9kZWJ1Z19yZWcgPSAx OwotKyAgICAgIGVsc2UgaWYgKCEgc3RyY21wIChyczYwMDBfZGVidWdfbmFtZSwgImFkZHIiKSkK LSsJcnM2MDAwX2RlYnVnX2FkZHIgPSAxOwotICAgICAgIGVsc2UKLSAJZXJyb3IgKCJ1bmtub3du IC1tZGVidWctJXMgc3dpdGNoIiwgcnM2MDAwX2RlYnVnX25hbWUpOwotICAgICB9Ci1AQCAtMTc0 MSw4ICsyMTYyLDggQEAgcnM2MDAwX292ZXJyaWRlX29wdGlvbnMgKGNvbnN0IGNoYXIgKmRlZgot IAlyczYwMDBfc3BlID0gMDsKLSAgICAgICBpZiAoIXJzNjAwMF9leHBsaWNpdF9vcHRpb25zLmZs b2F0X2dwcnMpCi0gCXJzNjAwMF9mbG9hdF9ncHJzID0gMDsKLS0gICAgICBpZiAoIXJzNjAwMF9l eHBsaWNpdF9vcHRpb25zLmlzZWwpCi0tCXJzNjAwMF9pc2VsID0gMDsKLSsgICAgICBpZiAoISh0 YXJnZXRfZmxhZ3NfZXhwbGljaXQgJiBNQVNLX0lTRUwpKQotKwl0YXJnZXRfZmxhZ3MgJj0gfk1B U0tfSVNFTDsKLSAgICAgfQotIAotICAgLyogRGV0ZWN0IGludmFsaWQgb3B0aW9uIGNvbWJpbmF0 aW9ucyB3aXRoIEU1MDAuICAqLwotQEAgLTE3NTEsMTIgKzIxNzIsMTQgQEAgcnM2MDAwX292ZXJy aWRlX29wdGlvbnMgKGNvbnN0IGNoYXIgKmRlZgotICAgcnM2MDAwX2Fsd2F5c19oaW50ID0gKHJz NjAwMF9jcHUgIT0gUFJPQ0VTU09SX1BPV0VSNAotIAkJCSYmIHJzNjAwMF9jcHUgIT0gUFJPQ0VT U09SX1BPV0VSNQotICAgICAgICAgICAgICAgICAgICAgICAgICYmIHJzNjAwMF9jcHUgIT0gUFJP Q0VTU09SX1BPV0VSNgotKyAgICAgICAgICAgICAgICAgICAgICAgICYmIHJzNjAwMF9jcHUgIT0g UFJPQ0VTU09SX1BPV0VSNwotIAkJCSYmIHJzNjAwMF9jcHUgIT0gUFJPQ0VTU09SX0NFTEwpOwot ICAgcnM2MDAwX3NjaGVkX2dyb3VwcyA9IChyczYwMDBfY3B1ID09IFBST0NFU1NPUl9QT1dFUjQK LSAJCQkgfHwgcnM2MDAwX2NwdSA9PSBQUk9DRVNTT1JfUE9XRVI1KTsKLSAgIHJzNjAwMF9hbGln bl9icmFuY2hfdGFyZ2V0cyA9IChyczYwMDBfY3B1ID09IFBST0NFU1NPUl9QT1dFUjQKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCByczYwMDBfY3B1ID09IFBST0NFU1NPUl9Q T1dFUjUKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCByczYwMDBfY3B1ID09 IFBST0NFU1NPUl9QT1dFUjYpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8 IHJzNjAwMF9jcHUgPT0gUFJPQ0VTU09SX1BPV0VSNgotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHx8IHJzNjAwMF9jcHUgPT0gUFJPQ0VTU09SX1BPV0VSNyk7Ci0gCi0gICByczYw MDBfc2NoZWRfcmVzdHJpY3RlZF9pbnNuc19wcmlvcml0eQotICAgICA9IChyczYwMDBfc2NoZWRf Z3JvdXBzID8gMSA6IDApOwotQEAgLTE5NTEsNiArMjM3NCwxMCBAQCByczYwMDBfb3ZlcnJpZGVf b3B0aW9ucyAoY29uc3QgY2hhciAqZGVmCi0gCXJzNjAwMF9jb3N0ID0gJnBvd2VyNl9jb3N0Owot IAlicmVhazsKLSAKLSsgICAgICBjYXNlIFBST0NFU1NPUl9QT1dFUjc6Ci0rCXJzNjAwMF9jb3N0 ID0gJnBvd2VyN19jb3N0OwotKwlicmVhazsKLSsKLSAgICAgICBkZWZhdWx0OgotIAlnY2NfdW5y ZWFjaGFibGUgKCk7Ci0gICAgICAgfQotQEAgLTIwMDEsNyArMjQyOCw3IEBAIHJzNjAwMF9vdmVy cmlkZV9vcHRpb25zIChjb25zdCBjaGFyICpkZWYKLSBzdGF0aWMgdHJlZQotIHJzNjAwMF9idWls dGluX21hc2tfZm9yX2xvYWQgKHZvaWQpCi0gewotLSAgaWYgKFRBUkdFVF9BTFRJVkVDKQotKyAg aWYgKFRBUkdFVF9BTFRJVkVDICYmICFUQVJHRVRfVlNYKQotICAgICByZXR1cm4gYWx0aXZlY19i dWlsdGluX21hc2tfZm9yX2xvYWQ7Ci0gICBlbHNlCi0gICAgIHJldHVybiAwOwotQEAgLTIwMTUs MTggKzI0NDIsMTkgQEAgcnM2MDAwX2J1aWx0aW5fbWFza19mb3JfbG9hZCAodm9pZCkKLSBzdGF0 aWMgdHJlZQotIHJzNjAwMF9idWlsdGluX2NvbnZlcnNpb24gKGVudW0gdHJlZV9jb2RlIGNvZGUs IHRyZWUgdHlwZSkKLSB7Ci0tICBpZiAoIVRBUkdFVF9BTFRJVkVDKQotLSAgICByZXR1cm4gTlVM TF9UUkVFOwotLQotICAgc3dpdGNoIChjb2RlKQotICAgICB7Ci0gICAgIGNhc2UgRklYX1RSVU5D X0VYUFI6Ci0gICAgICAgc3dpdGNoIChUWVBFX01PREUgKHR5cGUpKQotIAl7Ci0gCWNhc2UgVjRT SW1vZGU6Ci0rCSAgaWYgKFZFQ1RPUl9VTklUX05PTkVfUCAoVjRTSW1vZGUpIHx8IFZFQ1RPUl9V TklUX05PTkVfUCAoVjRTRm1vZGUpKQotKwkgICAgcmV0dXJuIE5VTExfVFJFRTsKLSsKLSAJICBy ZXR1cm4gVFlQRV9VTlNJR05FRCAodHlwZSkKLS0JICAgID8gcnM2MDAwX2J1aWx0aW5fZGVjbHNb QUxUSVZFQ19CVUlMVElOX1ZDVFVYU10KLS0JICAgIDogcnM2MDAwX2J1aWx0aW5fZGVjbHNbQUxU SVZFQ19CVUlMVElOX1ZDVFNYU107Ci0rCSAgICA/IHJzNjAwMF9idWlsdGluX2RlY2xzW1ZFQ1RP Ul9CVUlMVElOX0ZJWFVOU19WNFNGX1Y0U0ldCi0rCSAgICA6IHJzNjAwMF9idWlsdGluX2RlY2xz W1ZFQ1RPUl9CVUlMVElOX0ZJWF9WNFNGX1Y0U0ldOwotKwotIAlkZWZhdWx0OgotIAkgIHJldHVy biBOVUxMX1RSRUU7Ci0gCX0KLUBAIC0yMDM1LDkgKzI0NjMsMTIgQEAgcnM2MDAwX2J1aWx0aW5f Y29udmVyc2lvbiAoZW51bSB0cmVlX2NvZAotICAgICAgIHN3aXRjaCAoVFlQRV9NT0RFICh0eXBl KSkKLSAJewotIAljYXNlIFY0U0ltb2RlOgotKwkgIGlmIChWRUNUT1JfVU5JVF9OT05FX1AgKFY0 U0ltb2RlKSB8fCBWRUNUT1JfVU5JVF9OT05FX1AgKFY0U0Ztb2RlKSkKLSsJICAgIHJldHVybiBO VUxMX1RSRUU7Ci0rCi0gCSAgcmV0dXJuIFRZUEVfVU5TSUdORUQgKHR5cGUpCi0tCSAgICA/IHJz NjAwMF9idWlsdGluX2RlY2xzW0FMVElWRUNfQlVJTFRJTl9WQ0ZVWF0KLS0JICAgIDogcnM2MDAw X2J1aWx0aW5fZGVjbHNbQUxUSVZFQ19CVUlMVElOX1ZDRlNYXTsKLSsJICAgID8gcnM2MDAwX2J1 aWx0aW5fZGVjbHNbVkVDVE9SX0JVSUxUSU5fVU5TRkxPQVRfVjRTSV9WNFNGXQotKwkgICAgOiBy czYwMDBfYnVpbHRpbl9kZWNsc1tWRUNUT1JfQlVJTFRJTl9GTE9BVF9WNFNJX1Y0U0ZdOwotIAlk ZWZhdWx0OgotIAkgIHJldHVybiBOVUxMX1RSRUU7Ci0gCX0KLUBAIC0yMTUwLDYgKzI1ODEsMTQg QEAgcnM2MDAwX2J1aWx0aW5fdmVjX3Blcm0gKHRyZWUgdHlwZSwgdHJlZQotICAgICAgIGQgPSBy czYwMDBfYnVpbHRpbl9kZWNsc1tBTFRJVkVDX0JVSUxUSU5fVlBFUk1fNFNGXTsKLSAgICAgICBi cmVhazsKLSAKLSsgICAgY2FzZSBWMkRGbW9kZToKLSsgICAgICBkID0gcnM2MDAwX2J1aWx0aW5f ZGVjbHNbQUxUSVZFQ19CVUlMVElOX1ZQRVJNXzJERl07Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAg IGNhc2UgVjJESW1vZGU6Ci0rICAgICAgZCA9IHJzNjAwMF9idWlsdGluX2RlY2xzW0FMVElWRUNf QlVJTFRJTl9WUEVSTV8yREldOwotKyAgICAgIGJyZWFrOwotKwotICAgICBkZWZhdWx0OgotICAg ICAgIHJldHVybiBOVUxMX1RSRUU7Ci0gICAgIH0KLUBAIC0yMjI5LDYgKzI2NjgsNyBAQCBzdGF0 aWMgYm9vbAotIHJzNjAwMF9oYW5kbGVfb3B0aW9uIChzaXplX3QgY29kZSwgY29uc3QgY2hhciAq YXJnLCBpbnQgdmFsdWUpCi0gewotICAgZW51bSBmcHVfdHlwZV90IGZwdV90eXBlID0gRlBVX05P TkU7Ci0rICBpbnQgaXNlbDsKLSAKLSAgIHN3aXRjaCAoY29kZSkKLSAgICAgewotQEAgLTIzMzEs MTQgKzI3NzEsMTQgQEAgcnM2MDAwX2hhbmRsZV9vcHRpb24gKHNpemVfdCBjb2RlLCBjb25zdAot ICAgICAgIHJzNjAwMF9wYXJzZV95ZXNfbm9fb3B0aW9uICgidnJzYXZlIiwgYXJnLCAmKFRBUkdF VF9BTFRJVkVDX1ZSU0FWRSkpOwotICAgICAgIGJyZWFrOwotIAotLSAgICBjYXNlIE9QVF9taXNl bDoKLS0gICAgICByczYwMDBfZXhwbGljaXRfb3B0aW9ucy5pc2VsID0gdHJ1ZTsKLS0gICAgICBy czYwMDBfaXNlbCA9IHZhbHVlOwotLSAgICAgIGJyZWFrOwotLQotICAgICBjYXNlIE9QVF9taXNl bF86Ci0tICAgICAgcnM2MDAwX2V4cGxpY2l0X29wdGlvbnMuaXNlbCA9IHRydWU7Ci0tICAgICAg cnM2MDAwX3BhcnNlX3llc19ub19vcHRpb24gKCJpc2VsIiwgYXJnLCAmKHJzNjAwMF9pc2VsKSk7 Ci0rICAgICAgdGFyZ2V0X2ZsYWdzX2V4cGxpY2l0IHw9IE1BU0tfSVNFTDsKLSsgICAgICBpc2Vs ID0gMDsKLSsgICAgICByczYwMDBfcGFyc2VfeWVzX25vX29wdGlvbiAoImlzZWwiLCBhcmcsICZp c2VsKTsKLSsgICAgICBpZiAoaXNlbCkKLSsJdGFyZ2V0X2ZsYWdzIHw9IE1BU0tfSVNFTDsKLSsg ICAgICBlbHNlCi0rCXRhcmdldF9mbGFncyAmPSB+TUFTS19JU0VMOwotICAgICAgIGJyZWFrOwot IAotICAgICBjYXNlIE9QVF9tc3BlOgotQEAgLTI5NjcsNiArMzQwNyw5IEBAIG91dHB1dF92ZWNf Y29uc3RfbW92ZSAocnR4ICpvcGVyYW5kcykKLSAgIHZlYyA9IG9wZXJhbmRzWzFdOwotICAgbW9k ZSA9IEdFVF9NT0RFIChkZXN0KTsKLSAKLSsgIGlmIChUQVJHRVRfVlNYICYmIHplcm9fY29uc3Rh bnQgKHZlYywgbW9kZSkpCi0rICAgIHJldHVybiAieHhseG9yICV4MCwleDAsJXgwIjsKLSsKLSAg IGlmIChUQVJHRVRfQUxUSVZFQykKLSAgICAgewotICAgICAgIHJ0eCBzcGxhdF92ZWM7Ci1AQCAt MzE5MCwyMCArMzYzMywyMSBAQCByczYwMDBfZXhwYW5kX3ZlY3Rvcl9pbml0IChydHggdGFyZ2V0 LCByCi0gICBpZiAobl92YXIgPT0gMCkKLSAgICAgewotICAgICAgIHJ0eCBjb25zdF92ZWMgPSBn ZW5fcnR4X0NPTlNUX1ZFQ1RPUiAobW9kZSwgWFZFQyAodmFscywgMCkpOwotLSAgICAgIGlmICht b2RlICE9IFY0U0Ztb2RlICYmIGFsbF9jb25zdF96ZXJvKQotKyAgICAgIGJvb2wgaW50X3ZlY3Rv cl9wID0gKEdFVF9NT0RFX0NMQVNTIChtb2RlKSA9PSBNT0RFX1ZFQ1RPUl9JTlQpOwotKyAgICAg IGlmICgoaW50X3ZlY3Rvcl9wIHx8IFRBUkdFVF9WU1gpICYmIGFsbF9jb25zdF96ZXJvKQotIAl7 Ci0gCSAgLyogWmVybyByZWdpc3Rlci4gICovCi0gCSAgZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAo Vk9JRG1vZGUsIHRhcmdldCwKLSAJCQkJICBnZW5fcnR4X1hPUiAobW9kZSwgdGFyZ2V0LCB0YXJn ZXQpKSk7Ci0gCSAgcmV0dXJuOwotIAl9Ci0tICAgICAgZWxzZSBpZiAobW9kZSAhPSBWNFNGbW9k ZSAmJiBlYXN5X3ZlY3Rvcl9jb25zdGFudCAoY29uc3RfdmVjLCBtb2RlKSkKLSsgICAgICBlbHNl IGlmIChpbnRfdmVjdG9yX3AgJiYgZWFzeV92ZWN0b3JfY29uc3RhbnQgKGNvbnN0X3ZlYywgbW9k ZSkpCi0gCXsKLSAJICAvKiBTcGxhdCBpbW1lZGlhdGUuICAqLwotIAkgIGVtaXRfaW5zbiAoZ2Vu X3J0eF9TRVQgKFZPSURtb2RlLCB0YXJnZXQsIGNvbnN0X3ZlYykpOwotIAkgIHJldHVybjsKLSAJ fQotLSAgICAgIGVsc2UgaWYgKGFsbF9zYW1lKQotKyAgICAgIGVsc2UgaWYgKGFsbF9zYW1lICYm IGludF92ZWN0b3JfcCkKLSAJOwkvKiBTcGxhdCB2ZWN0b3IgZWxlbWVudC4gICovCi0gICAgICAg ZWxzZQotIAl7Ci1AQCAtMzIxMyw2ICszNjU3LDE4IEBAIHJzNjAwMF9leHBhbmRfdmVjdG9yX2lu aXQgKHJ0eCB0YXJnZXQsIHIKLSAJfQotICAgICB9Ci0gCi0rICBpZiAobW9kZSA9PSBWMkRGbW9k ZSkKLSsgICAgewotKyAgICAgIGdjY19hc3NlcnQgKFRBUkdFVF9WU1gpOwotKyAgICAgIGlmIChh bGxfc2FtZSkKLSsJZW1pdF9pbnNuIChnZW5fdnN4X3NwbGF0djJkZiAodGFyZ2V0LCBYVkVDRVhQ ICh2YWxzLCAwLCAwKSkpOwotKyAgICAgIGVsc2UKLSsJZW1pdF9pbnNuIChnZW5fdnN4X2NvbmNh dF92MmRmICh0YXJnZXQsCi0rCQkJCQljb3B5X3RvX3JlZyAoWFZFQ0VYUCAodmFscywgMCwgMCkp LAotKwkJCQkJY29weV90b19yZWcgKFhWRUNFWFAgKHZhbHMsIDAsIDEpKSkpOwotKyAgICAgIHJl dHVybjsKLSsgICAgfQotKwotICAgLyogU3RvcmUgdmFsdWUgdG8gc3RhY2sgdGVtcC4gIExvYWQg dmVjdG9yIGVsZW1lbnQuICBTcGxhdC4gICovCi0gICBpZiAoYWxsX3NhbWUpCi0gICAgIHsKLUBA IC0zMjcyLDYgKzM3MjgsMTMgQEAgcnM2MDAwX2V4cGFuZF92ZWN0b3Jfc2V0IChydHggdGFyZ2V0 LCBydAotICAgaW50IHdpZHRoID0gR0VUX01PREVfU0laRSAoaW5uZXJfbW9kZSk7Ci0gICBpbnQg aTsKLSAKLSsgIGlmIChtb2RlID09IFYyREZtb2RlKQotKyAgICB7Ci0rICAgICAgZ2NjX2Fzc2Vy dCAoVEFSR0VUX1ZTWCk7Ci0rICAgICAgZW1pdF9pbnNuIChnZW5fdnN4X3NldF92MmRmICh0YXJn ZXQsIHZhbCwgdGFyZ2V0LCBHRU5fSU5UIChlbHQpKSk7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9 Ci0rCi0gICAvKiBMb2FkIHNpbmdsZSB2YXJpYWJsZSB2YWx1ZS4gICovCi0gICBtZW0gPSBhc3Np Z25fc3RhY2tfdGVtcCAobW9kZSwgR0VUX01PREVfU0laRSAoaW5uZXJfbW9kZSksIDApOwotICAg ZW1pdF9tb3ZlX2luc24gKGFkanVzdF9hZGRyZXNzX252IChtZW0sIGlubmVyX21vZGUsIDApLCB2 YWwpOwotQEAgLTMzMDksNiArMzc3MiwxMyBAQCByczYwMDBfZXhwYW5kX3ZlY3Rvcl9leHRyYWN0 IChydHggdGFyZ2V0Ci0gICBlbnVtIG1hY2hpbmVfbW9kZSBpbm5lcl9tb2RlID0gR0VUX01PREVf SU5ORVIgKG1vZGUpOwotICAgcnR4IG1lbSwgeDsKLSAKLSsgIGlmIChtb2RlID09IFYyREZtb2Rl KQotKyAgICB7Ci0rICAgICAgZ2NjX2Fzc2VydCAoVEFSR0VUX1ZTWCk7Ci0rICAgICAgZW1pdF9p bnNuIChnZW5fdnN4X2V4dHJhY3RfdjJkZiAodGFyZ2V0LCB2ZWMsIEdFTl9JTlQgKGVsdCkpKTsK LSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSAgIC8qIEFsbG9jYXRlIG1vZGUtc2l6ZWQgYnVm ZmVyLiAgKi8KLSAgIG1lbSA9IGFzc2lnbl9zdGFja190ZW1wIChtb2RlLCBHRVRfTU9ERV9TSVpF IChtb2RlKSwgMCk7Ci0gCi1AQCAtMzYyNyw5ICs0MDk3LDEzIEBAIHJzNjAwMF9sZWdpdGltYXRl X29mZnNldF9hZGRyZXNzX3AgKGVudW0KLSAgICAgY2FzZSBWOEhJbW9kZToKLSAgICAgY2FzZSBW NFNGbW9kZToKLSAgICAgY2FzZSBWNFNJbW9kZToKLS0gICAgICAvKiBBbHRpVmVjIHZlY3RvciBt b2Rlcy4gIE9ubHkgcmVnK3JlZyBhZGRyZXNzaW5nIGlzIHZhbGlkIGFuZAotKyAgICBjYXNlIFYy REZtb2RlOgotKyAgICBjYXNlIFYyREltb2RlOgotKyAgICAgIC8qIEFsdGlWZWMvVlNYIHZlY3Rv ciBtb2Rlcy4gIE9ubHkgcmVnK3JlZyBhZGRyZXNzaW5nIGlzIHZhbGlkIGFuZAotIAkgY29uc3Rh bnQgb2Zmc2V0IHplcm8gc2hvdWxkIG5vdCBvY2N1ciBkdWUgdG8gY2Fub25pY2FsaXphdGlvbi4g ICovCi0tICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICAgIGlmIChWRUNUT1JfVU5JVF9BTFRJVkVD X09SX1ZTWF9QIChtb2RlKSkKLSsJcmV0dXJuIGZhbHNlOwotKyAgICAgIGJyZWFrOwotIAotICAg ICBjYXNlIFY0SEltb2RlOgotICAgICBjYXNlIFYyU0ltb2RlOgotQEAgLTM2NDYsNiArNDEyMCwx MSBAQCByczYwMDBfbGVnaXRpbWF0ZV9vZmZzZXRfYWRkcmVzc19wIChlbnVtCi0gICAgICAgaWYg KFRBUkdFVF9FNTAwX0RPVUJMRSkKLSAJcmV0dXJuIFNQRV9DT05TVF9PRkZTRVRfT0sgKG9mZnNl dCk7Ci0gCi0rICAgICAgLyogSWYgd2UgYXJlIHVzaW5nIFZTWCBzY2FsYXIgbG9hZHMsIHJlc3Ry aWN0IG91cnNlbHZlcyB0byByZWcrcmVnCi0rCSBhZGRyZXNzaW5nLiAgKi8KLSsgICAgICBpZiAo VkVDVE9SX01FTV9WU1hfUCAoREZtb2RlKSkKLSsJcmV0dXJuIGZhbHNlOwotKwotICAgICBjYXNl IEREbW9kZToKLSAgICAgY2FzZSBESW1vZGU6Ci0gICAgICAgLyogT24gZTUwMHYyLCB3ZSBtYXkg aGF2ZToKLUBAIC0zNzE2LDcgKzQxOTUsOSBAQCBhdm9pZGluZ19pbmRleGVkX2FkZHJlc3NfcCAo ZW51bSBtYWNoaW5lCi0gewotICAgLyogQXZvaWQgaW5kZXhlZCBhZGRyZXNzaW5nIGZvciBtb2Rl cyB0aGF0IGhhdmUgbm9uLWluZGV4ZWQKLSAgICAgIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb24gZm9y bXMuICAqLwotLSAgcmV0dXJuIFRBUkdFVF9BVk9JRF9YRk9STSAmJiAhQUxUSVZFQ19WRUNUT1Jf TU9ERSAobW9kZSk7Ci0rICByZXR1cm4gKFRBUkdFVF9BVk9JRF9YRk9STQotKwkgICYmICghVEFS R0VUX0FMVElWRUMgfHwgIUFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUpKQotKwkgICYmICghVEFS R0VUX1ZTWCB8fCAhVlNYX1ZFQ1RPUl9NT0RFIChtb2RlKSkpOwotIH0KLSAKLSBpbmxpbmUgYm9v bAotQEAgLTM4MDgsMjUgKzQyODksMzAgQEAgcnR4Ci0gcnM2MDAwX2xlZ2l0aW1pemVfYWRkcmVz cyAocnR4IHgsIHJ0eCBvbGR4IEFUVFJJQlVURV9VTlVTRUQsCi0gCQkJICAgZW51bSBtYWNoaW5l X21vZGUgbW9kZSkKLSB7Ci0rICBydHggcmV0ID0gTlVMTF9SVFg7Ci0rICBydHggb3JpZ194ID0g eDsKLSsKLSAgIGlmIChHRVRfQ09ERSAoeCkgPT0gU1lNQk9MX1JFRikKLSAgICAgewotICAgICAg IGVudW0gdGxzX21vZGVsIG1vZGVsID0gU1lNQk9MX1JFRl9UTFNfTU9ERUwgKHgpOwotICAgICAg IGlmIChtb2RlbCAhPSAwKQotLQlyZXR1cm4gcnM2MDAwX2xlZ2l0aW1pemVfdGxzX2FkZHJlc3Mg KHgsIG1vZGVsKTsKLSsJcmV0ID0gcnM2MDAwX2xlZ2l0aW1pemVfdGxzX2FkZHJlc3MgKHgsIG1v ZGVsKTsKLSAgICAgfQotIAotLSAgaWYgKEdFVF9DT0RFICh4KSA9PSBQTFVTCi0tICAgICAgJiYg R0VUX0NPREUgKFhFWFAgKHgsIDApKSA9PSBSRUcKLS0gICAgICAmJiBHRVRfQ09ERSAoWEVYUCAo eCwgMSkpID09IENPTlNUX0lOVAotLSAgICAgICYmICh1bnNpZ25lZCBIT1NUX1dJREVfSU5UKSAo SU5UVkFMIChYRVhQICh4LCAxKSkgKyAweDgwMDApID49IDB4MTAwMDAKLS0gICAgICAmJiAhKChU QVJHRVRfUE9XRVJQQzY0Ci0tCSAgICAmJiAobW9kZSA9PSBESW1vZGUgfHwgbW9kZSA9PSBUSW1v ZGUpCi0tCSAgICAmJiAoSU5UVkFMIChYRVhQICh4LCAxKSkgJiAzKSAhPSAwKQotLQkgICB8fCBT UEVfVkVDVE9SX01PREUgKG1vZGUpCi0tCSAgIHx8IEFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUp Ci0tCSAgIHx8IChUQVJHRVRfRTUwMF9ET1VCTEUgJiYgKG1vZGUgPT0gREZtb2RlIHx8IG1vZGUg PT0gVEZtb2RlCi0tCQkJCSAgICAgIHx8IG1vZGUgPT0gREltb2RlIHx8IG1vZGUgPT0gRERtb2Rl Ci0tCQkJCSAgICAgIHx8IG1vZGUgPT0gVERtb2RlKSkpKQotKyAgZWxzZSBpZiAoR0VUX0NPREUg KHgpID09IFBMVVMKLSsJICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDApKSA9PSBSRUcKLSsJICAg JiYgR0VUX0NPREUgKFhFWFAgKHgsIDEpKSA9PSBDT05TVF9JTlQKLSsJICAgJiYgKCh1bnNpZ25l ZCBIT1NUX1dJREVfSU5UKSAoSU5UVkFMIChYRVhQICh4LCAxKSkgKyAweDgwMDApCi0rCSAgICAg ICA+PSAweDEwMDAwKQotKwkgICAmJiAhKChUQVJHRVRfUE9XRVJQQzY0Ci0rCQkgJiYgKG1vZGUg PT0gREltb2RlIHx8IG1vZGUgPT0gVEltb2RlKQotKwkJICYmIChJTlRWQUwgKFhFWFAgKHgsIDEp KSAmIDMpICE9IDApCi0rCQl8fCAoVEFSR0VUX1NQRSAmJiBTUEVfVkVDVE9SX01PREUgKG1vZGUp KQotKwkJfHwgKFRBUkdFVF9BTFRJVkVDICYmIEFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUpKQot KwkJfHwgKFRBUkdFVF9WU1ggJiYgVlNYX1ZFQ1RPUl9NT0RFIChtb2RlKSkKLSsJCXx8IChUQVJH RVRfRTUwMF9ET1VCTEUgJiYgKG1vZGUgPT0gREZtb2RlIHx8IG1vZGUgPT0gVEZtb2RlCi0rCQkJ CQkgICB8fCBtb2RlID09IERJbW9kZSB8fCBtb2RlID09IEREbW9kZQotKwkJCQkJICAgfHwgbW9k ZSA9PSBURG1vZGUpKSkpCi0gICAgIHsKLSAgICAgICBIT1NUX1dJREVfSU5UIGhpZ2hfaW50LCBs b3dfaW50OwotICAgICAgIHJ0eCBzdW07Ci1AQCAtMzgzNCw3ICs0MzIwLDcgQEAgcnM2MDAwX2xl Z2l0aW1pemVfYWRkcmVzcyAocnR4IHgsIHJ0eCBvbAotICAgICAgIGhpZ2hfaW50ID0gSU5UVkFM IChYRVhQICh4LCAxKSkgLSBsb3dfaW50OwotICAgICAgIHN1bSA9IGZvcmNlX29wZXJhbmQgKGdl bl9ydHhfUExVUyAoUG1vZGUsIFhFWFAgKHgsIDApLAotIAkJCQkJIEdFTl9JTlQgKGhpZ2hfaW50 KSksIDApOwotLSAgICAgIHJldHVybiBnZW5fcnR4X1BMVVMgKFBtb2RlLCBzdW0sIEdFTl9JTlQg KGxvd19pbnQpKTsKLSsgICAgICByZXQgPSBnZW5fcnR4X1BMVVMgKFBtb2RlLCBzdW0sIEdFTl9J TlQgKGxvd19pbnQpKTsKLSAgICAgfQotICAgZWxzZSBpZiAoR0VUX0NPREUgKHgpID09IFBMVVMK LSAJICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDApKSA9PSBSRUcKLUBAIC0zODUwLDMyICs0MzM2 LDI5IEBAIHJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3MgKHJ0eCB4LCBydHggb2wKLSAJICAgJiYg bW9kZSAhPSBURm1vZGUKLSAJICAgJiYgbW9kZSAhPSBURG1vZGUpCi0gICAgIHsKLS0gICAgICBy ZXR1cm4gZ2VuX3J0eF9QTFVTIChQbW9kZSwgWEVYUCAoeCwgMCksCi0tCQkJICAgZm9yY2VfcmVn IChQbW9kZSwgZm9yY2Vfb3BlcmFuZCAoWEVYUCAoeCwgMSksIDApKSk7Ci0rICAgICAgcmV0ID0g Z2VuX3J0eF9QTFVTIChQbW9kZSwgWEVYUCAoeCwgMCksCi0rCQkJICBmb3JjZV9yZWcgKFBtb2Rl LCBmb3JjZV9vcGVyYW5kIChYRVhQICh4LCAxKSwgMCkpKTsKLSAgICAgfQotLSAgZWxzZSBpZiAo QUxUSVZFQ19WRUNUT1JfTU9ERSAobW9kZSkpCi0rICBlbHNlIGlmIChWRUNUT1JfTUVNX0FMVElW RUNfT1JfVlNYX1AgKG1vZGUpKQotICAgICB7Ci0tICAgICAgcnR4IHJlZzsKLS0KLSAgICAgICAv KiBNYWtlIHN1cmUgYm90aCBvcGVyYW5kcyBhcmUgcmVnaXN0ZXJzLiAgKi8KLSAgICAgICBpZiAo R0VUX0NPREUgKHgpID09IFBMVVMpCi0tCXJldHVybiBnZW5fcnR4X1BMVVMgKFBtb2RlLCBmb3Jj ZV9yZWcgKFBtb2RlLCBYRVhQICh4LCAwKSksCi0tCQkJICAgICBmb3JjZV9yZWcgKFBtb2RlLCBY RVhQICh4LCAxKSkpOwotLQotLSAgICAgIHJlZyA9IGZvcmNlX3JlZyAoUG1vZGUsIHgpOwotLSAg ICAgIHJldHVybiByZWc7Ci0rCXJldCA9IGdlbl9ydHhfUExVUyAoUG1vZGUsIGZvcmNlX3JlZyAo UG1vZGUsIFhFWFAgKHgsIDApKSwKLSsJCQkgICAgZm9yY2VfcmVnIChQbW9kZSwgWEVYUCAoeCwg MSkpKTsKLSsgICAgICBlbHNlCi0rCXJldCA9IGZvcmNlX3JlZyAoUG1vZGUsIHgpOwotICAgICB9 Ci0tICBlbHNlIGlmIChTUEVfVkVDVE9SX01PREUgKG1vZGUpCi0rICBlbHNlIGlmICgoVEFSR0VU X1NQRSAmJiBTUEVfVkVDVE9SX01PREUgKG1vZGUpKQotIAkgICB8fCAoVEFSR0VUX0U1MDBfRE9V QkxFICYmIChtb2RlID09IERGbW9kZSB8fCBtb2RlID09IFRGbW9kZQotIAkJCQkgICAgICB8fCBt b2RlID09IEREbW9kZSB8fCBtb2RlID09IFREbW9kZQotIAkJCQkgICAgICB8fCBtb2RlID09IERJ bW9kZSkpKQotICAgICB7Ci0gICAgICAgaWYgKG1vZGUgPT0gREltb2RlKQotLQlyZXR1cm4gTlVM TF9SVFg7Ci0tICAgICAgLyogV2UgYWNjZXB0IFtyZWcgKyByZWddIGFuZCBbcmVnICsgT0ZGU0VU XS4gICovCi0rCXJldCA9IE5VTExfUlRYOwotIAotLSAgICAgIGlmIChHRVRfQ09ERSAoeCkgPT0g UExVUykKLS0gICAgICAgewotKyAgICAgIC8qIFdlIGFjY2VwdCBbcmVnICsgcmVnXSBhbmQgW3Jl ZyArIE9GRlNFVF0uICAqLwotKyAgICAgIGVsc2UgaWYgKEdFVF9DT0RFICh4KSA9PSBQTFVTKQot Kwl7Ci0gICAgICAgICAgcnR4IG9wMSA9IFhFWFAgKHgsIDApOwotICAgICAgICAgIHJ0eCBvcDIg PSBYRVhQICh4LCAxKTsKLSAgICAgICAgICBydHggeTsKLUBAIC0zODk0LDEyICs0Mzc3LDEyIEBA IHJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3MgKHJ0eCB4LCBydHggb2wKLSAgICAgICAgICB5ID0g Z2VuX3J0eF9QTFVTIChQbW9kZSwgb3AxLCBvcDIpOwotIAotICAgICAgICAgIGlmICgoR0VUX01P REVfU0laRSAobW9kZSkgPiA4IHx8IG1vZGUgPT0gRERtb2RlKSAmJiBSRUdfUCAob3AyKSkKLS0g ICAgICAgICAgIHJldHVybiBmb3JjZV9yZWcgKFBtb2RlLCB5KTsKLSsgICAgICAgICAgIHJldCA9 IGZvcmNlX3JlZyAoUG1vZGUsIHkpOwotICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgIHJldHVy biB5OwotKyAgICAgICAgICAgcmV0ID0geTsKLSAgICAgICAgfQotLQotLSAgICAgIHJldHVybiBm b3JjZV9yZWcgKFBtb2RlLCB4KTsKLSsgICAgICBlbHNlCi0rCXJldCA9IGZvcmNlX3JlZyAoUG1v ZGUsIHgpOwotICAgICB9Ci0gICBlbHNlIGlmIChUQVJHRVRfRUxGCi0gCSAgICYmIFRBUkdFVF8z MkJJVAotQEAgLTM5MTUsNyArNDM5OCw3IEBAIHJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3MgKHJ0 eCB4LCBydHggb2wKLSAgICAgewotICAgICAgIHJ0eCByZWcgPSBnZW5fcmVnX3J0eCAoUG1vZGUp OwotICAgICAgIGVtaXRfaW5zbiAoZ2VuX2VsZl9oaWdoIChyZWcsIHgpKTsKLS0gICAgICByZXR1 cm4gZ2VuX3J0eF9MT19TVU0gKFBtb2RlLCByZWcsIHgpOwotKyAgICAgIHJldCA9IGdlbl9ydHhf TE9fU1VNIChQbW9kZSwgcmVnLCB4KTsKLSAgICAgfQotICAgZWxzZSBpZiAoVEFSR0VUX01BQ0hP ICYmIFRBUkdFVF8zMkJJVCAmJiBUQVJHRVRfTk9fVE9DCi0gCSAgICYmICEgZmxhZ19waWMKLUBA IC0zOTMzLDE3ICs0NDE2LDM0IEBAIHJzNjAwMF9sZWdpdGltaXplX2FkZHJlc3MgKHJ0eCB4LCBy dHggb2wKLSAgICAgewotICAgICAgIHJ0eCByZWcgPSBnZW5fcmVnX3J0eCAoUG1vZGUpOwotICAg ICAgIGVtaXRfaW5zbiAoZ2VuX21hY2hvX2hpZ2ggKHJlZywgeCkpOwotLSAgICAgIHJldHVybiBn ZW5fcnR4X0xPX1NVTSAoUG1vZGUsIHJlZywgeCk7Ci0rICAgICAgcmV0ID0gZ2VuX3J0eF9MT19T VU0gKFBtb2RlLCByZWcsIHgpOwotICAgICB9Ci0gICBlbHNlIGlmIChUQVJHRVRfVE9DCi0gCSAg ICYmIEdFVF9DT0RFICh4KSA9PSBTWU1CT0xfUkVGCi0gCSAgICYmIGNvbnN0YW50X3Bvb2xfZXhw cl9wICh4KQotIAkgICAmJiBBU01fT1VUUFVUX1NQRUNJQUxfUE9PTF9FTlRSWV9QIChnZXRfcG9v bF9jb25zdGFudCAoeCksIFBtb2RlKSkKLSAgICAgewotLSAgICAgIHJldHVybiBjcmVhdGVfVE9D X3JlZmVyZW5jZSAoeCk7Ci0rICAgICAgcmV0ID0gY3JlYXRlX1RPQ19yZWZlcmVuY2UgKHgpOwot ICAgICB9Ci0gICBlbHNlCi0tICAgIHJldHVybiBOVUxMX1JUWDsKLSsgICAgcmV0ID0gTlVMTF9S VFg7Ci0rCi0rICBpZiAoVEFSR0VUX0RFQlVHX0FERFIpCi0rICAgIHsKLSsgICAgICBmcHJpbnRm IChzdGRlcnIsCi0rCSAgICAgICAiXG5yczYwMDBfbGVnaXRpbWl6ZV9hZGRyZXNzOiBtb2RlICVz LCBvcmlnaW5hbCBhZGRyOlxuIiwKLSsJICAgICAgIEdFVF9NT0RFX05BTUUgKG1vZGUpKTsKLSsg ICAgICBkZWJ1Z19ydHggKG9yaWdfeCk7Ci0rICAgICAgaWYgKHJldCkKLSsJewotKwkgIGZwcmlu dGYgKHN0ZGVyciwgIk5ldyBhZGRyOlxuIik7Ci0rCSAgZGVidWdfcnR4IChyZXQpOwotKwl9Ci0r ICAgICAgZWxzZQotKwlmcHJpbnRmIChzdGRlcnIsICJOVUxMIHJldHVybmVkXG4iKTsKLSsgICAg fQotKwotKyAgcmV0dXJuIHJldDsKLSB9Ci0gCi0gLyogVGhpcyBpcyBjYWxsZWQgZnJvbSBkd2Fy ZjJvdXQuYyB2aWEgVEFSR0VUX0FTTV9PVVRQVVRfRFdBUkZfRFRQUkVMLgotQEAgLTQyMzIsNiAr NDczMiw5IEBAIHJzNjAwMF9sZWdpdGltaXplX3JlbG9hZF9hZGRyZXNzIChydHggeCwKLSAJCQkJ ICBpbnQgb3BudW0sIGludCB0eXBlLAotIAkJCQkgIGludCBpbmRfbGV2ZWxzIEFUVFJJQlVURV9V TlVTRUQsIGludCAqd2luKQotIHsKLSsgIHJ0eCBvcmlnX3ggPSB4OwotKyAgcnR4IHJldCA9IE5V TExfUlRYOwotKwotICAgLyogV2UgbXVzdCByZWNvZ25pemUgb3V0cHV0IHRoYXQgd2UgaGF2ZSBh bHJlYWR5IGdlbmVyYXRlZCBvdXJzZWx2ZXMuICAqLwotICAgaWYgKEdFVF9DT0RFICh4KSA9PSBQ TFVTCi0gICAgICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDApKSA9PSBQTFVTCi1AQCAtNDI0Mywx NyArNDc0NiwxNyBAQCByczYwMDBfbGVnaXRpbWl6ZV9yZWxvYWRfYWRkcmVzcyAocnR4IHgsCi0g CQkgICBCQVNFX1JFR19DTEFTUywgR0VUX01PREUgKHgpLCBWT0lEbW9kZSwgMCwgMCwKLSAJCSAg IG9wbnVtLCAoZW51bSByZWxvYWRfdHlwZSl0eXBlKTsKLSAgICAgICAqd2luID0gMTsKLS0gICAg ICByZXR1cm4geDsKLSsgICAgICByZXQgPSB4OwotICAgICB9Ci0gCi0gI2lmIFRBUkdFVF9NQUNI TwotLSAgaWYgKERFRkFVTFRfQUJJID09IEFCSV9EQVJXSU4gJiYgZmxhZ19waWMKLS0gICAgICAm JiBHRVRfQ09ERSAoeCkgPT0gTE9fU1VNCi0tICAgICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDAp KSA9PSBQTFVTCi0tICAgICAgJiYgWEVYUCAoWEVYUCAoeCwgMCksIDApID09IHBpY19vZmZzZXRf dGFibGVfcnR4Ci0tICAgICAgJiYgR0VUX0NPREUgKFhFWFAgKFhFWFAgKHgsIDApLCAxKSkgPT0g SElHSAotLSAgICAgICYmIFhFWFAgKFhFWFAgKFhFWFAgKHgsIDApLCAxKSwgMCkgPT0gWEVYUCAo eCwgMSkKLS0gICAgICAmJiBtYWNob3BpY19vcGVyYW5kX3AgKFhFWFAgKHgsIDEpKSkKLSsgIGVs c2UgaWYgKERFRkFVTFRfQUJJID09IEFCSV9EQVJXSU4gJiYgZmxhZ19waWMKLSsJICAgJiYgR0VU X0NPREUgKHgpID09IExPX1NVTQotKwkgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMCkpID09IFBM VVMKLSsJICAgJiYgWEVYUCAoWEVYUCAoeCwgMCksIDApID09IHBpY19vZmZzZXRfdGFibGVfcnR4 Ci0rCSAgICYmIEdFVF9DT0RFIChYRVhQIChYRVhQICh4LCAwKSwgMSkpID09IEhJR0gKLSsJICAg JiYgWEVYUCAoWEVYUCAoWEVYUCAoeCwgMCksIDEpLCAwKSA9PSBYRVhQICh4LCAxKQotKwkgICAm JiBtYWNob3BpY19vcGVyYW5kX3AgKFhFWFAgKHgsIDEpKSkKLSAgICAgewotICAgICAgIC8qIFJl c3VsdCBvZiBwcmV2aW91cyBpbnZvY2F0aW9uIG9mIHRoaXMgZnVuY3Rpb24gb24gRGFyd2luCi0g CSBmbG9hdGluZyBwb2ludCBjb25zdGFudC4gICovCi1AQCAtNDI2MSw0MCArNDc2NCw0MiBAQCBy czYwMDBfbGVnaXRpbWl6ZV9yZWxvYWRfYWRkcmVzcyAocnR4IHgsCi0gCQkgICBCQVNFX1JFR19D TEFTUywgUG1vZGUsIFZPSURtb2RlLCAwLCAwLAotIAkJICAgb3BudW0sIChlbnVtIHJlbG9hZF90 eXBlKXR5cGUpOwotICAgICAgICp3aW4gPSAxOwotLSAgICAgIHJldHVybiB4OwotKyAgICAgIHJl dCA9IHg7Ci0gICAgIH0KLSAjZW5kaWYKLSAKLSAgIC8qIEZvcmNlIGxkL3N0ZCBub24td29yZCBh bGlnbmVkIG9mZnNldCBpbnRvIGJhc2UgcmVnaXN0ZXIgYnkgd3JhcHBpbmcKLSAgICAgIGluIG9m ZnNldCAwLiAgKi8KLS0gIGlmIChHRVRfQ09ERSAoeCkgPT0gUExVUwotLSAgICAgICYmIEdFVF9D T0RFIChYRVhQICh4LCAwKSkgPT0gUkVHCi0tICAgICAgJiYgUkVHTk8gKFhFWFAgKHgsIDApKSA8 IDMyCi0tICAgICAgJiYgUkVHX01PREVfT0tfRk9SX0JBU0VfUCAoWEVYUCAoeCwgMCksIG1vZGUp Ci0tICAgICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDEpKSA9PSBDT05TVF9JTlQKLS0gICAgICAm JiAoSU5UVkFMIChYRVhQICh4LCAxKSkgJiAzKSAhPSAwCi0tICAgICAgJiYgIUFMVElWRUNfVkVD VE9SX01PREUgKG1vZGUpCi0tICAgICAgJiYgR0VUX01PREVfU0laRSAobW9kZSkgPj0gVU5JVFNf UEVSX1dPUkQKLS0gICAgICAmJiBUQVJHRVRfUE9XRVJQQzY0KQotKyAgZWxzZSBpZiAoR0VUX0NP REUgKHgpID09IFBMVVMKLSsJICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDApKSA9PSBSRUcKLSsJ ICAgJiYgUkVHTk8gKFhFWFAgKHgsIDApKSA8IDMyCi0rCSAgICYmIFJFR19NT0RFX09LX0ZPUl9C QVNFX1AgKFhFWFAgKHgsIDApLCBtb2RlKQotKwkgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMSkp ID09IENPTlNUX0lOVAotKwkgICAmJiAoSU5UVkFMIChYRVhQICh4LCAxKSkgJiAzKSAhPSAwCi0r CSAgICYmICFBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKQotKwkgICAmJiAhVlNYX1ZFQ1RPUl9N T0RFIChtb2RlKQotKwkgICAmJiBHRVRfTU9ERV9TSVpFIChtb2RlKSA+PSBVTklUU19QRVJfV09S RAotKwkgICAmJiBUQVJHRVRfUE9XRVJQQzY0KQotICAgICB7Ci0gICAgICAgeCA9IGdlbl9ydHhf UExVUyAoR0VUX01PREUgKHgpLCB4LCBHRU5fSU5UICgwKSk7Ci0gICAgICAgcHVzaF9yZWxvYWQg KFhFWFAgKHgsIDApLCBOVUxMX1JUWCwgJlhFWFAgKHgsIDApLCBOVUxMLAotIAkJICAgQkFTRV9S RUdfQ0xBU1MsIEdFVF9NT0RFICh4KSwgVk9JRG1vZGUsIDAsIDAsCi0gCQkgICBvcG51bSwgKGVu dW0gcmVsb2FkX3R5cGUpIHR5cGUpOwotICAgICAgICp3aW4gPSAxOwotLSAgICAgIHJldHVybiB4 OwotKyAgICAgIHJldCA9IHg7Ci0gICAgIH0KLSAKLS0gIGlmIChHRVRfQ09ERSAoeCkgPT0gUExV UwotLSAgICAgICYmIEdFVF9DT0RFIChYRVhQICh4LCAwKSkgPT0gUkVHCi0tICAgICAgJiYgUkVH Tk8gKFhFWFAgKHgsIDApKSA8IEZJUlNUX1BTRVVET19SRUdJU1RFUgotLSAgICAgICYmIFJFR19N T0RFX09LX0ZPUl9CQVNFX1AgKFhFWFAgKHgsIDApLCBtb2RlKQotLSAgICAgICYmIEdFVF9DT0RF IChYRVhQICh4LCAxKSkgPT0gQ09OU1RfSU5UCi0tICAgICAgJiYgIVNQRV9WRUNUT1JfTU9ERSAo bW9kZSkKLS0gICAgICAmJiAhKFRBUkdFVF9FNTAwX0RPVUJMRSAmJiAobW9kZSA9PSBERm1vZGUg fHwgbW9kZSA9PSBURm1vZGUKLS0JCQkJICB8fCBtb2RlID09IEREbW9kZSB8fCBtb2RlID09IFRE bW9kZQotLQkJCQkgIHx8IG1vZGUgPT0gREltb2RlKSkKLS0gICAgICAmJiAhQUxUSVZFQ19WRUNU T1JfTU9ERSAobW9kZSkpCi0rICBlbHNlIGlmIChHRVRfQ09ERSAoeCkgPT0gUExVUwotKwkgICAm JiBHRVRfQ09ERSAoWEVYUCAoeCwgMCkpID09IFJFRwotKwkgICAmJiBSRUdOTyAoWEVYUCAoeCwg MCkpIDwgRklSU1RfUFNFVURPX1JFR0lTVEVSCi0rCSAgICYmIFJFR19NT0RFX09LX0ZPUl9CQVNF X1AgKFhFWFAgKHgsIDApLCBtb2RlKQotKwkgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMSkpID09 IENPTlNUX0lOVAotKwkgICAmJiAhU1BFX1ZFQ1RPUl9NT0RFIChtb2RlKQotKwkgICAmJiAhKFRB UkdFVF9FNTAwX0RPVUJMRSAmJiAobW9kZSA9PSBERm1vZGUgfHwgbW9kZSA9PSBURm1vZGUKLSsJ CQkJICAgICAgIHx8IG1vZGUgPT0gRERtb2RlIHx8IG1vZGUgPT0gVERtb2RlCi0rCQkJCSAgICAg ICB8fCBtb2RlID09IERJbW9kZSkpCi0rCSAgICYmICFBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2Rl KQotKwkgICAmJiAhVlNYX1ZFQ1RPUl9NT0RFIChtb2RlKSkKLSAgICAgewotICAgICAgIEhPU1Rf V0lERV9JTlQgdmFsID0gSU5UVkFMIChYRVhQICh4LCAxKSk7Ci0gICAgICAgSE9TVF9XSURFX0lO VCBsb3cgPSAoKHZhbCAmIDB4ZmZmZikgXiAweDgwMDApIC0gMHg4MDAwOwotQEAgLTQzMDUsNDIg KzQ4MTAsNDQgQEAgcnM2MDAwX2xlZ2l0aW1pemVfcmVsb2FkX2FkZHJlc3MgKHJ0eCB4LAotICAg ICAgIGlmIChoaWdoICsgbG93ICE9IHZhbCkKLSAJewotIAkgICp3aW4gPSAwOwotLQkgIHJldHVy biB4OwotKwkgIHJldCA9IHg7Ci0gCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvKiBSZWxvYWQg dGhlIGhpZ2ggcGFydCBpbnRvIGEgYmFzZSByZWc7IGxlYXZlIHRoZSBsb3cgcGFydAotKwkgICAg IGluIHRoZSBtZW0gZGlyZWN0bHkuICAqLwotIAotLSAgICAgIC8qIFJlbG9hZCB0aGUgaGlnaCBw YXJ0IGludG8gYSBiYXNlIHJlZzsgbGVhdmUgdGhlIGxvdyBwYXJ0Ci0tCSBpbiB0aGUgbWVtIGRp cmVjdGx5LiAgKi8KLS0KLS0gICAgICB4ID0gZ2VuX3J0eF9QTFVTIChHRVRfTU9ERSAoeCksCi0t CQkJZ2VuX3J0eF9QTFVTIChHRVRfTU9ERSAoeCksIFhFWFAgKHgsIDApLAotLQkJCQkgICAgICBH RU5fSU5UIChoaWdoKSksCi0tCQkJR0VOX0lOVCAobG93KSk7Ci0rCSAgeCA9IGdlbl9ydHhfUExV UyAoR0VUX01PREUgKHgpLAotKwkJCSAgICBnZW5fcnR4X1BMVVMgKEdFVF9NT0RFICh4KSwgWEVY UCAoeCwgMCksCi0rCQkJCQkgIEdFTl9JTlQgKGhpZ2gpKSwKLSsJCQkgICAgR0VOX0lOVCAobG93 KSk7Ci0gCi0tICAgICAgcHVzaF9yZWxvYWQgKFhFWFAgKHgsIDApLCBOVUxMX1JUWCwgJlhFWFAg KHgsIDApLCBOVUxMLAotLQkJICAgQkFTRV9SRUdfQ0xBU1MsIEdFVF9NT0RFICh4KSwgVk9JRG1v ZGUsIDAsIDAsCi0tCQkgICBvcG51bSwgKGVudW0gcmVsb2FkX3R5cGUpdHlwZSk7Ci0tICAgICAg KndpbiA9IDE7Ci0tICAgICAgcmV0dXJuIHg7Ci0rCSAgcHVzaF9yZWxvYWQgKFhFWFAgKHgsIDAp LCBOVUxMX1JUWCwgJlhFWFAgKHgsIDApLCBOVUxMLAotKwkJICAgICAgIEJBU0VfUkVHX0NMQVNT LCBHRVRfTU9ERSAoeCksIFZPSURtb2RlLCAwLCAwLAotKwkJICAgICAgIG9wbnVtLCAoZW51bSBy ZWxvYWRfdHlwZSl0eXBlKTsKLSsJICAqd2luID0gMTsKLSsJICByZXR1cm4geDsKLSsJfQotICAg ICB9Ci0gCi0tICBpZiAoR0VUX0NPREUgKHgpID09IFNZTUJPTF9SRUYKLS0gICAgICAmJiAhQUxU SVZFQ19WRUNUT1JfTU9ERSAobW9kZSkKLS0gICAgICAmJiAhU1BFX1ZFQ1RPUl9NT0RFIChtb2Rl KQotKyAgZWxzZSBpZiAoR0VUX0NPREUgKHgpID09IFNZTUJPTF9SRUYKLSsJICAgJiYgVkVDVE9S X01FTV9OT05FX1AgKG1vZGUpCi0rCSAgICYmICghVEFSR0VUX1NQRSB8fCAhU1BFX1ZFQ1RPUl9N T0RFIChtb2RlKSkKLSAjaWYgVEFSR0VUX01BQ0hPCi0tICAgICAgJiYgREVGQVVMVF9BQkkgPT0g QUJJX0RBUldJTgotLSAgICAgICYmIChmbGFnX3BpYyB8fCBNQUNIT19EWU5BTUlDX05PX1BJQ19Q KQotKwkgICAmJiBERUZBVUxUX0FCSSA9PSBBQklfREFSV0lOCi0rCSAgICYmIChmbGFnX3BpYyB8 fCBNQUNIT19EWU5BTUlDX05PX1BJQ19QKQotICNlbHNlCi0tICAgICAgJiYgREVGQVVMVF9BQkkg PT0gQUJJX1Y0Ci0tICAgICAgJiYgIWZsYWdfcGljCi0rCSAgICYmIERFRkFVTFRfQUJJID09IEFC SV9WNAotKwkgICAmJiAhZmxhZ19waWMKLSAjZW5kaWYKLS0gICAgICAvKiBEb24ndCBkbyB0aGlz IGZvciBURm1vZGUgb3IgVERtb2RlLCBzaW5jZSB0aGUgcmVzdWx0IGlzbid0IG9mZnNldHRhYmxl LgotLQkgVGhlIHNhbWUgZ29lcyBmb3IgREltb2RlIHdpdGhvdXQgNjQtYml0IGdwcnMgYW5kIERG bW9kZSBhbmQgRERtb2RlCi0tCSB3aXRob3V0IGZwcnMuICAqLwotLSAgICAgICYmIG1vZGUgIT0g VEZtb2RlCi0tICAgICAgJiYgbW9kZSAhPSBURG1vZGUKLS0gICAgICAmJiAobW9kZSAhPSBESW1v ZGUgfHwgVEFSR0VUX1BPV0VSUEM2NCkKLS0gICAgICAmJiAoKG1vZGUgIT0gREZtb2RlICYmIG1v ZGUgIT0gRERtb2RlKSB8fCBUQVJHRVRfUE9XRVJQQzY0Ci0tCSAgfHwgKFRBUkdFVF9IQVJEX0ZM T0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQpKSkKLSsJICAgLyogRG9u J3QgZG8gdGhpcyBmb3IgVEZtb2RlIG9yIFREbW9kZSwgc2luY2UgdGhlIHJlc3VsdCBpc24ndAot KwkgICAgICBvZmZzZXR0YWJsZS4gIFRoZSBzYW1lIGdvZXMgZm9yIERJbW9kZSB3aXRob3V0IDY0 LWJpdCBncHJzIGFuZAotKwkgICAgICBERm1vZGUgYW5kIEREbW9kZSB3aXRob3V0IGZwcnMuICAq LwotKwkgICAmJiBtb2RlICE9IFRGbW9kZQotKwkgICAmJiBtb2RlICE9IFREbW9kZQotKwkgICAm JiAobW9kZSAhPSBESW1vZGUgfHwgVEFSR0VUX1BPV0VSUEM2NCkKLSsJICAgJiYgKChtb2RlICE9 IERGbW9kZSAmJiBtb2RlICE9IEREbW9kZSkgfHwgVEFSR0VUX1BPV0VSUEM2NAotKwkgICAgICAg fHwgKFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxP QVQpKSkKLSAgICAgewotICNpZiBUQVJHRVRfTUFDSE8KLSAgICAgICBpZiAoZmxhZ19waWMpCi1A QCAtNDM1OSwzNyArNDg2Niw2MSBAQCByczYwMDBfbGVnaXRpbWl6ZV9yZWxvYWRfYWRkcmVzcyAo cnR4IHgsCi0gCQkgICBCQVNFX1JFR19DTEFTUywgUG1vZGUsIFZPSURtb2RlLCAwLCAwLAotIAkJ ICAgb3BudW0sIChlbnVtIHJlbG9hZF90eXBlKXR5cGUpOwotICAgICAgICp3aW4gPSAxOwotLSAg ICAgIHJldHVybiB4OwotKyAgICAgIHJldCA9IHg7Ci0gICAgIH0KLSAKLSAgIC8qIFJlbG9hZCBh biBvZmZzZXQgYWRkcmVzcyB3cmFwcGVkIGJ5IGFuIEFORCB0aGF0IHJlcHJlc2VudHMgdGhlCi0g ICAgICBtYXNraW5nIG9mIHRoZSBsb3dlciBiaXRzLiAgU3RyaXAgdGhlIG91dGVyIEFORCBhbmQg bGV0IHJlbG9hZAotICAgICAgY29udmVydCB0aGUgb2Zmc2V0IGFkZHJlc3MgaW50byBhbiBpbmRp cmVjdCBhZGRyZXNzLiAgKi8KLS0gIGlmIChUQVJHRVRfQUxUSVZFQwotLSAgICAgICYmIEFMVElW RUNfVkVDVE9SX01PREUgKG1vZGUpCi0tICAgICAgJiYgR0VUX0NPREUgKHgpID09IEFORAotLSAg ICAgICYmIEdFVF9DT0RFIChYRVhQICh4LCAwKSkgPT0gUExVUwotLSAgICAgICYmIEdFVF9DT0RF IChYRVhQIChYRVhQICh4LCAwKSwgMCkpID09IFJFRwotLSAgICAgICYmIEdFVF9DT0RFIChYRVhQ IChYRVhQICh4LCAwKSwgMSkpID09IENPTlNUX0lOVAotLSAgICAgICYmIEdFVF9DT0RFIChYRVhQ ICh4LCAxKSkgPT0gQ09OU1RfSU5UCi0tICAgICAgJiYgSU5UVkFMIChYRVhQICh4LCAxKSkgPT0g LTE2KQotKyAgZWxzZSBpZiAoVkVDVE9SX01FTV9BTFRJVkVDX1AgKG1vZGUpCi0rCSAgICYmIEdF VF9DT0RFICh4KSA9PSBBTkQKLSsJICAgJiYgR0VUX0NPREUgKFhFWFAgKHgsIDApKSA9PSBQTFVT Ci0rCSAgICYmIEdFVF9DT0RFIChYRVhQIChYRVhQICh4LCAwKSwgMCkpID09IFJFRwotKwkgICAm JiBHRVRfQ09ERSAoWEVYUCAoWEVYUCAoeCwgMCksIDEpKSA9PSBDT05TVF9JTlQKLSsJICAgJiYg R0VUX0NPREUgKFhFWFAgKHgsIDEpKSA9PSBDT05TVF9JTlQKLSsJICAgJiYgSU5UVkFMIChYRVhQ ICh4LCAxKSkgPT0gLTE2KQotICAgICB7Ci0gICAgICAgeCA9IFhFWFAgKHgsIDApOwotICAgICAg ICp3aW4gPSAxOwotLSAgICAgIHJldHVybiB4OwotKyAgICAgIHJldCA9IHg7Ci0gICAgIH0KLSAK LS0gIGlmIChUQVJHRVRfVE9DCi0tICAgICAgJiYgR0VUX0NPREUgKHgpID09IFNZTUJPTF9SRUYK LS0gICAgICAmJiBjb25zdGFudF9wb29sX2V4cHJfcCAoeCkKLS0gICAgICAmJiBBU01fT1VUUFVU X1NQRUNJQUxfUE9PTF9FTlRSWV9QIChnZXRfcG9vbF9jb25zdGFudCAoeCksIG1vZGUpKQotKyAg ZWxzZSBpZiAoVEFSR0VUX1RPQwotKwkgICAmJiBHRVRfQ09ERSAoeCkgPT0gU1lNQk9MX1JFRgot KwkgICAmJiBjb25zdGFudF9wb29sX2V4cHJfcCAoeCkKLSsJICAgJiYgQVNNX09VVFBVVF9TUEVD SUFMX1BPT0xfRU5UUllfUCAoZ2V0X3Bvb2xfY29uc3RhbnQgKHgpLCBtb2RlKSkKLSAgICAgewot ICAgICAgIHggPSBjcmVhdGVfVE9DX3JlZmVyZW5jZSAoeCk7Ci0gICAgICAgKndpbiA9IDE7Ci0t ICAgICAgcmV0dXJuIHg7Ci0rICAgICAgcmV0ID0geDsKLSsgICAgfQotKwotKyAgZWxzZQotKyAg ICB7Ci0rICAgICAgKndpbiA9IDA7Ci0rICAgICAgcmV0ID0geDsKLSAgICAgfQotLSAgKndpbiA9 IDA7Ci0tICByZXR1cm4geDsKLSsKLSsgIGlmIChUQVJHRVRfREVCVUdfQUREUikKLSsgICAgewot KyAgICAgIGZwcmludGYgKHN0ZGVyciwKLSsJICAgICAgICJcbnJzNjAwMF9sZWdpdGltaXplX3Jl bG9hZF9hZGRyZXNzOiBtb2RlID0gJXMsIG9wbnVtID0gJWQsICIKLSsJICAgICAgICJ0eXBlID0g JWQsIGluZF9sZXZlbHMgPSAlZCwgd2luID0gJWQsIG9yaWdpbmFsIGFkZHI6XG4iLAotKwkgICAg ICAgR0VUX01PREVfTkFNRSAobW9kZSksIG9wbnVtLCB0eXBlLCBpbmRfbGV2ZWxzLCAqd2luKTsK LSsgICAgICBkZWJ1Z19ydHggKG9yaWdfeCk7Ci0rCi0rICAgICAgaWYgKG9yaWdfeCA9PSByZXQp Ci0rCWZwcmludGYgKHN0ZGVyciwgIlNhbWUgYWRkcmVzcyByZXR1cm5lZFxuIik7Ci0rICAgICAg ZWxzZSBpZiAoIXJldCkKLSsJZnByaW50ZiAoc3RkZXJyLCAiTlVMTCByZXR1cm5lZFxuIik7Ci0r ICAgICAgZWxzZQotKwl7Ci0rCSAgZnByaW50ZiAoc3RkZXJyLCAiTmV3IGFkZHJlc3M6XG4iKTsK LSsJICBkZWJ1Z19ydHggKHJldCk7Ci0rCX0KLSsgICAgfQotKwotKyAgcmV0dXJuIHJldDsKLSB9 Ci0gCi0gLyogR09fSUZfTEVHSVRJTUFURV9BRERSRVNTIHJlY29nbml6ZXMgYW4gUlRMIGV4cHJl c3Npb24KLUBAIC00NDEyLDc3ICs0OTQzLDEwMSBAQCByczYwMDBfbGVnaXRpbWl6ZV9yZWxvYWRf YWRkcmVzcyAocnR4IHgsCi0gaW50Ci0gcnM2MDAwX2xlZ2l0aW1hdGVfYWRkcmVzcyAoZW51bSBt YWNoaW5lX21vZGUgbW9kZSwgcnR4IHgsIGludCByZWdfb2tfc3RyaWN0KQotIHsKLSsgIGludCBy ZXQ7Ci0rICBydHggb3JpZ194ID0geDsKLSsKLSAgIC8qIElmIHRoaXMgaXMgYW4gdW5hbGlnbmVk IHN0dngvbGR2eCB0eXBlIGFkZHJlc3MsIGRpc2NhcmQgdGhlIG91dGVyIEFORC4gICovCi0gICBp ZiAoVEFSR0VUX0FMVElWRUMKLS0gICAgICAmJiBBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKQot KyAgICAgICYmIChBTFRJVkVDX1ZFQ1RPUl9NT0RFIChtb2RlKSB8fCBWU1hfVkVDVE9SX01PREUg KG1vZGUpKQotICAgICAgICYmIEdFVF9DT0RFICh4KSA9PSBBTkQKLSAgICAgICAmJiBHRVRfQ09E RSAoWEVYUCAoeCwgMSkpID09IENPTlNUX0lOVAotICAgICAgICYmIElOVFZBTCAoWEVYUCAoeCwg MSkpID09IC0xNikKLSAgICAgeCA9IFhFWFAgKHgsIDApOwotIAotICAgaWYgKFJTNjAwMF9TWU1C T0xfUkVGX1RMU19QICh4KSkKLS0gICAgcmV0dXJuIDA7Ci0tICBpZiAobGVnaXRpbWF0ZV9pbmRp cmVjdF9hZGRyZXNzX3AgKHgsIHJlZ19va19zdHJpY3QpKQotLSAgICByZXR1cm4gMTsKLS0gIGlm ICgoR0VUX0NPREUgKHgpID09IFBSRV9JTkMgfHwgR0VUX0NPREUgKHgpID09IFBSRV9ERUMpCi0t ICAgICAgJiYgIUFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUpCi0tICAgICAgJiYgIVNQRV9WRUNU T1JfTU9ERSAobW9kZSkKLS0gICAgICAmJiBtb2RlICE9IFRGbW9kZQotLSAgICAgICYmIG1vZGUg IT0gVERtb2RlCi0tICAgICAgLyogUmVzdHJpY3QgYWRkcmVzc2luZyBmb3IgREkgYmVjYXVzZSBv ZiBvdXIgU1VCUkVHIGhhY2tlcnkuICAqLwotLSAgICAgICYmICEoVEFSR0VUX0U1MDBfRE9VQkxF Ci0tCSAgICYmIChtb2RlID09IERGbW9kZSB8fCBtb2RlID09IEREbW9kZSB8fCBtb2RlID09IERJ bW9kZSkpCi0tICAgICAgJiYgVEFSR0VUX1VQREFURQotLSAgICAgICYmIGxlZ2l0aW1hdGVfaW5k aXJlY3RfYWRkcmVzc19wIChYRVhQICh4LCAwKSwgcmVnX29rX3N0cmljdCkpCi0tICAgIHJldHVy biAxOwotLSAgaWYgKGxlZ2l0aW1hdGVfc21hbGxfZGF0YV9wIChtb2RlLCB4KSkKLS0gICAgcmV0 dXJuIDE7Ci0tICBpZiAobGVnaXRpbWF0ZV9jb25zdGFudF9wb29sX2FkZHJlc3NfcCAoeCkpCi0t ICAgIHJldHVybiAxOwotKyAgICByZXQgPSAwOwotKyAgZWxzZSBpZiAobGVnaXRpbWF0ZV9pbmRp cmVjdF9hZGRyZXNzX3AgKHgsIHJlZ19va19zdHJpY3QpKQotKyAgICByZXQgPSAxOwotKyAgZWxz ZSBpZiAoKEdFVF9DT0RFICh4KSA9PSBQUkVfSU5DIHx8IEdFVF9DT0RFICh4KSA9PSBQUkVfREVD KQotKwkgICAmJiAhVkVDVE9SX01FTV9BTFRJVkVDX1AgKG1vZGUpCi0rCSAgIC8qICYmICFWRUNU T1JfTUVNX1ZTWF9QIChtb2RlKSAqLwotKwkgICAmJiAoVEFSR0VUX1NQRSAmJiAhU1BFX1ZFQ1RP Ul9NT0RFIChtb2RlKSkKLSsJICAgJiYgbW9kZSAhPSBURm1vZGUKLSsJICAgJiYgbW9kZSAhPSBU RG1vZGUKLSsJICAgLyogUmVzdHJpY3QgYWRkcmVzc2luZyBmb3IgREkgYmVjYXVzZSBvZiBvdXIg U1VCUkVHIGhhY2tlcnkuICAqLwotKwkgICAmJiAhKFRBUkdFVF9FNTAwX0RPVUJMRQotKwkJJiYg KG1vZGUgPT0gREZtb2RlIHx8IG1vZGUgPT0gRERtb2RlIHx8IG1vZGUgPT0gREltb2RlKSkKLSsJ ICAgJiYgVEFSR0VUX1VQREFURQotKwkgICAmJiBsZWdpdGltYXRlX2luZGlyZWN0X2FkZHJlc3Nf cCAoWEVYUCAoeCwgMCksIHJlZ19va19zdHJpY3QpKQotKyAgICByZXQgPSAxOwotKyAgZWxzZSBp ZiAobGVnaXRpbWF0ZV9zbWFsbF9kYXRhX3AgKG1vZGUsIHgpKQotKyAgICByZXQgPSAxOwotKyAg ZWxzZSBpZiAobGVnaXRpbWF0ZV9jb25zdGFudF9wb29sX2FkZHJlc3NfcCAoeCkpCi0rICAgIHJl dCA9IDE7Ci0gICAvKiBJZiBub3QgUkVHX09LX1NUUklDVCAoYmVmb3JlIHJlbG9hZCkgbGV0IHBh c3MgYW55IHN0YWNrIG9mZnNldC4gICovCi0tICBpZiAoISByZWdfb2tfc3RyaWN0Ci0tICAgICAg JiYgR0VUX0NPREUgKHgpID09IFBMVVMKLS0gICAgICAmJiBHRVRfQ09ERSAoWEVYUCAoeCwgMCkp ID09IFJFRwotLSAgICAgICYmIChYRVhQICh4LCAwKSA9PSB2aXJ0dWFsX3N0YWNrX3ZhcnNfcnR4 Ci0tCSAgfHwgWEVYUCAoeCwgMCkgPT0gYXJnX3BvaW50ZXJfcnR4KQotLSAgICAgICYmIEdFVF9D T0RFIChYRVhQICh4LCAxKSkgPT0gQ09OU1RfSU5UKQotLSAgICByZXR1cm4gMTsKLS0gIGlmIChy czYwMDBfbGVnaXRpbWF0ZV9vZmZzZXRfYWRkcmVzc19wIChtb2RlLCB4LCByZWdfb2tfc3RyaWN0 KSkKLS0gICAgcmV0dXJuIDE7Ci0tICBpZiAobW9kZSAhPSBUSW1vZGUKLS0gICAgICAmJiBtb2Rl ICE9IFRGbW9kZQotLSAgICAgICYmIG1vZGUgIT0gVERtb2RlCi0tICAgICAgJiYgKChUQVJHRVRf SEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUykKLS0JICB8fCBUQVJHRVRfUE9XRVJQQzY0Ci0tCSAg fHwgKG1vZGUgIT0gREZtb2RlICYmIG1vZGUgIT0gRERtb2RlKQotLQkgIHx8IChUQVJHRVRfRTUw MF9ET1VCTEUgJiYgbW9kZSAhPSBERG1vZGUpKQotLSAgICAgICYmIChUQVJHRVRfUE9XRVJQQzY0 IHx8IG1vZGUgIT0gREltb2RlKQotLSAgICAgICYmICFhdm9pZGluZ19pbmRleGVkX2FkZHJlc3Nf cCAobW9kZSkKLS0gICAgICAmJiBsZWdpdGltYXRlX2luZGV4ZWRfYWRkcmVzc19wICh4LCByZWdf b2tfc3RyaWN0KSkKLS0gICAgcmV0dXJuIDE7Ci0tICBpZiAoR0VUX0NPREUgKHgpID09IFBSRV9N T0RJRlkKLS0gICAgICAmJiBtb2RlICE9IFRJbW9kZQotLSAgICAgICYmIG1vZGUgIT0gVEZtb2Rl Ci0tICAgICAgJiYgbW9kZSAhPSBURG1vZGUKLS0gICAgICAmJiAoKFRBUkdFVF9IQVJEX0ZMT0FU ICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQpCi0tCSAgfHwgVEFSR0VUX1BP V0VSUEM2NAotLQkgIHx8ICgobW9kZSAhPSBERm1vZGUgJiYgbW9kZSAhPSBERG1vZGUpIHx8IFRB UkdFVF9FNTAwX0RPVUJMRSkpCi0tICAgICAgJiYgKFRBUkdFVF9QT1dFUlBDNjQgfHwgbW9kZSAh PSBESW1vZGUpCi0tICAgICAgJiYgIUFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUpCi0tICAgICAg JiYgIVNQRV9WRUNUT1JfTU9ERSAobW9kZSkKLS0gICAgICAvKiBSZXN0cmljdCBhZGRyZXNzaW5n IGZvciBESSBiZWNhdXNlIG9mIG91ciBTVUJSRUcgaGFja2VyeS4gICovCi0tICAgICAgJiYgIShU QVJHRVRfRTUwMF9ET1VCTEUKLS0JICAgJiYgKG1vZGUgPT0gREZtb2RlIHx8IG1vZGUgPT0gRERt b2RlIHx8IG1vZGUgPT0gREltb2RlKSkKLS0gICAgICAmJiBUQVJHRVRfVVBEQVRFCi0tICAgICAg JiYgbGVnaXRpbWF0ZV9pbmRpcmVjdF9hZGRyZXNzX3AgKFhFWFAgKHgsIDApLCByZWdfb2tfc3Ry aWN0KQotLSAgICAgICYmIChyczYwMDBfbGVnaXRpbWF0ZV9vZmZzZXRfYWRkcmVzc19wIChtb2Rl LCBYRVhQICh4LCAxKSwgcmVnX29rX3N0cmljdCkKLS0JICB8fCAoIWF2b2lkaW5nX2luZGV4ZWRf YWRkcmVzc19wIChtb2RlKQotLQkgICAgICAmJiBsZWdpdGltYXRlX2luZGV4ZWRfYWRkcmVzc19w IChYRVhQICh4LCAxKSwgcmVnX29rX3N0cmljdCkpKQotLSAgICAgICYmIHJ0eF9lcXVhbF9wIChY RVhQIChYRVhQICh4LCAxKSwgMCksIFhFWFAgKHgsIDApKSkKLS0gICAgcmV0dXJuIDE7Ci0tICBp ZiAobGVnaXRpbWF0ZV9sb19zdW1fYWRkcmVzc19wIChtb2RlLCB4LCByZWdfb2tfc3RyaWN0KSkK LS0gICAgcmV0dXJuIDE7Ci0tICByZXR1cm4gMDsKLSsgIGVsc2UgaWYgKCEgcmVnX29rX3N0cmlj dAotKwkgICAmJiBHRVRfQ09ERSAoeCkgPT0gUExVUwotKwkgICAmJiBHRVRfQ09ERSAoWEVYUCAo eCwgMCkpID09IFJFRwotKwkgICAmJiAoWEVYUCAoeCwgMCkgPT0gdmlydHVhbF9zdGFja192YXJz X3J0eAotKwkgICAgICAgfHwgWEVYUCAoeCwgMCkgPT0gYXJnX3BvaW50ZXJfcnR4KQotKwkgICAm JiBHRVRfQ09ERSAoWEVYUCAoeCwgMSkpID09IENPTlNUX0lOVCkKLSsgICAgcmV0ID0gMTsKLSsg IGVsc2UgaWYgKHJzNjAwMF9sZWdpdGltYXRlX29mZnNldF9hZGRyZXNzX3AgKG1vZGUsIHgsIHJl Z19va19zdHJpY3QpKQotKyAgICByZXQgPSAxOwotKyAgZWxzZSBpZiAobW9kZSAhPSBUSW1vZGUK LSsJICAgJiYgbW9kZSAhPSBURm1vZGUKLSsJICAgJiYgbW9kZSAhPSBURG1vZGUKLSsJICAgJiYg KChUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUykKLSsJICAgICAgIHx8IFRBUkdFVF9Q T1dFUlBDNjQKLSsJICAgICAgIHx8IChtb2RlICE9IERGbW9kZSAmJiBtb2RlICE9IEREbW9kZSkK LSsJICAgICAgIHx8IChUQVJHRVRfRTUwMF9ET1VCTEUgJiYgbW9kZSAhPSBERG1vZGUpKQotKwkg ICAmJiAoVEFSR0VUX1BPV0VSUEM2NCB8fCBtb2RlICE9IERJbW9kZSkKLSsJICAgJiYgIWF2b2lk aW5nX2luZGV4ZWRfYWRkcmVzc19wIChtb2RlKQotKwkgICAmJiBsZWdpdGltYXRlX2luZGV4ZWRf YWRkcmVzc19wICh4LCByZWdfb2tfc3RyaWN0KSkKLSsgICAgcmV0ID0gMTsKLSsgIGVsc2UgaWYg KEdFVF9DT0RFICh4KSA9PSBQUkVfTU9ESUZZCi0rCSAgICYmIFZFQ1RPUl9NRU1fVlNYX1AgKG1v ZGUpCi0rCSAgICYmIFRBUkdFVF9VUERBVEUKLSsJICAgJiYgbGVnaXRpbWF0ZV9pbmRleGVkX2Fk ZHJlc3NfcCAoWEVYUCAoeCwgMSksIHJlZ19va19zdHJpY3QpCi0rCSAgICYmIHJ0eF9lcXVhbF9w IChYRVhQIChYRVhQICh4LCAxKSwgMCksIFhFWFAgKHgsIDApKSkKLSsgICAgcmV0ID0gMTsKLSsg IGVsc2UgaWYgKEdFVF9DT0RFICh4KSA9PSBQUkVfTU9ESUZZCi0rCSAgICYmIG1vZGUgIT0gVElt b2RlCi0rCSAgICYmIG1vZGUgIT0gVEZtb2RlCi0rCSAgICYmIG1vZGUgIT0gVERtb2RlCi0rCSAg ICYmICgoVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0RPVUJMRV9G TE9BVCkKLSsJICAgICAgIHx8IFRBUkdFVF9QT1dFUlBDNjQKLSsJICAgICAgIHx8ICgobW9kZSAh PSBERm1vZGUgJiYgbW9kZSAhPSBERG1vZGUpIHx8IFRBUkdFVF9FNTAwX0RPVUJMRSkpCi0rCSAg ICYmIChUQVJHRVRfUE9XRVJQQzY0IHx8IG1vZGUgIT0gREltb2RlKQotKwkgICAmJiAhVkVDVE9S X01FTV9BTFRJVkVDX1AgKG1vZGUpCi0rCSAgICYmICghVEFSR0VUX1NQRSB8fCAhU1BFX1ZFQ1RP Ul9NT0RFIChtb2RlKSkKLSsJICAgLyogUmVzdHJpY3QgYWRkcmVzc2luZyBmb3IgREkgYmVjYXVz ZSBvZiBvdXIgU1VCUkVHIGhhY2tlcnkuICAqLwotKwkgICAmJiAhKFRBUkdFVF9FNTAwX0RPVUJM RQotKwkJJiYgKG1vZGUgPT0gREZtb2RlIHx8IG1vZGUgPT0gRERtb2RlIHx8IG1vZGUgPT0gRElt b2RlKSkKLSsJICAgJiYgVEFSR0VUX1VQREFURQotKwkgICAmJiBsZWdpdGltYXRlX2luZGlyZWN0 X2FkZHJlc3NfcCAoWEVYUCAoeCwgMCksIHJlZ19va19zdHJpY3QpCi0rCSAgICYmIChyczYwMDBf bGVnaXRpbWF0ZV9vZmZzZXRfYWRkcmVzc19wIChtb2RlLCBYRVhQICh4LCAxKSwgcmVnX29rX3N0 cmljdCkKLSsJICAgICAgIHx8ICghYXZvaWRpbmdfaW5kZXhlZF9hZGRyZXNzX3AgKG1vZGUpCi0r CQkgICAmJiBsZWdpdGltYXRlX2luZGV4ZWRfYWRkcmVzc19wIChYRVhQICh4LCAxKSwgcmVnX29r X3N0cmljdCkpKQotKwkgICAmJiBydHhfZXF1YWxfcCAoWEVYUCAoWEVYUCAoeCwgMSksIDApLCBY RVhQICh4LCAwKSkpCi0rICAgIHJldCA9IDE7Ci0rICBlbHNlIGlmIChsZWdpdGltYXRlX2xvX3N1 bV9hZGRyZXNzX3AgKG1vZGUsIHgsIHJlZ19va19zdHJpY3QpKQotKyAgICByZXQgPSAxOwotKyAg ZWxzZQotKyAgICByZXQgPSAwOwotKwotKyAgaWYgKFRBUkdFVF9ERUJVR19BRERSKQotKyAgICB7 Ci0rICAgICAgZnByaW50ZiAoc3RkZXJyLAotKwkgICAgICAgIlxucnM2MDAwX2xlZ2l0aW1hdGVf YWRkcmVzczogcmV0dXJuID0gJWQsIG1vZGUgPSAlcywgIgotKwkgICAgICAgInN0cmljdCA9ICVk XG4iLAotKwkgICAgICAgcmV0LAotKwkgICAgICAgR0VUX01PREVfTkFNRSAobW9kZSksCi0rCSAg ICAgICByZWdfb2tfc3RyaWN0KTsKLSsgICAgICBkZWJ1Z19ydHggKG9yaWdfeCk7Ci0rICAgIH0K LSsKLSsgIHJldHVybiByZXQ7Ci0gfQotIAotIC8qIEdvIHRvIExBQkVMIGlmIEFERFIgKGEgbGVn aXRpbWF0ZSBhZGRyZXNzIGV4cHJlc3Npb24pCi1AQCAtNDQ5OSwyOCArNTA1NCw0MCBAQCByczYw MDBfbGVnaXRpbWF0ZV9hZGRyZXNzIChlbnVtIG1hY2hpbmVfCi0gYm9vbAotIHJzNjAwMF9tb2Rl X2RlcGVuZGVudF9hZGRyZXNzIChydHggYWRkcikKLSB7Ci0rICBib29sIHJldCA9IGZhbHNlOwot KwotICAgc3dpdGNoIChHRVRfQ09ERSAoYWRkcikpCi0gICAgIHsKLSAgICAgY2FzZSBQTFVTOgot ICAgICAgIGlmIChHRVRfQ09ERSAoWEVYUCAoYWRkciwgMSkpID09IENPTlNUX0lOVCkKLSAJewot IAkgIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgdmFsID0gSU5UVkFMIChYRVhQIChhZGRyLCAxKSk7 Ci0tCSAgcmV0dXJuIHZhbCArIDEyICsgMHg4MDAwID49IDB4MTAwMDA7Ci0rCSAgcmV0ID0gKHZh bCArIDEyICsgMHg4MDAwID49IDB4MTAwMDApOwotIAl9Ci0gICAgICAgYnJlYWs7Ci0gCi0gICAg IGNhc2UgTE9fU1VNOgotLSAgICAgIHJldHVybiB0cnVlOwotKyAgICAgIHJldCA9IHRydWU7Ci0r ICAgICAgYnJlYWs7Ci0gCi0gICAgIC8qIEF1dG8taW5jcmVtZW50IGNhc2VzIGFyZSBub3cgdHJl YXRlZCBnZW5lcmljYWxseSBpbiByZWNvZy5jLiAgKi8KLSAgICAgY2FzZSBQUkVfTU9ESUZZOgot LSAgICAgIHJldHVybiBUQVJHRVRfVVBEQVRFOwotKyAgICAgIHJldCA9IChUQVJHRVRfVVBEQVRF ICE9IDApOwotKyAgICAgIGJyZWFrOwotIAotICAgICBkZWZhdWx0OgotICAgICAgIGJyZWFrOwot ICAgICB9Ci0gCi0tICByZXR1cm4gZmFsc2U7Ci0rICBpZiAoVEFSR0VUX0RFQlVHX0FERFIpCi0r ICAgIHsKLSsgICAgICBmcHJpbnRmIChzdGRlcnIsCi0rCSAgICAgICAiXG5yczYwMDBfbW9kZV9k ZXBlbmRlbnRfYWRkcmVzczogcmV0ID0gJWRcbiIsCi0rCSAgICAgICAoaW50KXJldCk7Ci0rICAg ICAgZGVidWdfcnR4IChhZGRyKTsKLSsgICAgfQotKwotKyAgcmV0dXJuIHJldDsKLSB9Ci0gCi0g LyogSW1wbGVtZW50IEZJTkRfQkFTRV9URVJNLiAgKi8KLUBAIC00NTcxLDQzICs1MTM4LDYgQEAg cnM2MDAwX29mZnNldHRhYmxlX21lbXJlZl9wIChydHggb3ApCi0gICByZXR1cm4gcnM2MDAwX2xl Z2l0aW1hdGVfb2Zmc2V0X2FkZHJlc3NfcCAoR0VUX01PREUgKG9wKSwgWEVYUCAob3AsIDApLCAx KTsKLSB9Ci0gCi0tLyogUmV0dXJuIG51bWJlciBvZiBjb25zZWN1dGl2ZSBoYXJkIHJlZ3MgbmVl ZGVkIHN0YXJ0aW5nIGF0IHJlZyBSRUdOTwotLSAgIHRvIGhvbGQgc29tZXRoaW5nIG9mIG1vZGUg TU9ERS4KLS0gICBUaGlzIGlzIG9yZGluYXJpbHkgdGhlIGxlbmd0aCBpbiB3b3JkcyBvZiBhIHZh bHVlIG9mIG1vZGUgTU9ERQotLSAgIGJ1dCBjYW4gYmUgbGVzcyBmb3IgY2VydGFpbiBtb2RlcyBp biBzcGVjaWFsIGxvbmcgcmVnaXN0ZXJzLgotLQotLSAgIEZvciB0aGUgU1BFLCBHUFJzIGFyZSA2 NCBiaXRzIGJ1dCBvbmx5IDMyIGJpdHMgYXJlIHZpc2libGUgaW4KLS0gICBzY2FsYXIgaW5zdHJ1 Y3Rpb25zLiAgVGhlIHVwcGVyIDMyIGJpdHMgYXJlIG9ubHkgYXZhaWxhYmxlIHRvIHRoZQotLSAg IFNJTUQgaW5zdHJ1Y3Rpb25zLgotLQotLSAgIFBPV0VSIGFuZCBQb3dlclBDIEdQUnMgaG9sZCAz MiBiaXRzIHdvcnRoOwotLSAgIFBvd2VyUEM2NCBHUFJzIGFuZCBGUFJzIHBvaW50IHJlZ2lzdGVy IGhvbGRzIDY0IGJpdHMgd29ydGguICAqLwotLQotLWludAotLXJzNjAwMF9oYXJkX3JlZ25vX25y ZWdzIChpbnQgcmVnbm8sIGVudW0gbWFjaGluZV9tb2RlIG1vZGUpCi0tewotLSAgaWYgKEZQX1JF R05PX1AgKHJlZ25vKSkKLS0gICAgcmV0dXJuIChHRVRfTU9ERV9TSVpFIChtb2RlKSArIFVOSVRT X1BFUl9GUF9XT1JEIC0gMSkgLyBVTklUU19QRVJfRlBfV09SRDsKLS0KLS0gIGlmIChTUEVfU0lN RF9SRUdOT19QIChyZWdubykgJiYgVEFSR0VUX1NQRSAmJiBTUEVfVkVDVE9SX01PREUgKG1vZGUp KQotLSAgICByZXR1cm4gKEdFVF9NT0RFX1NJWkUgKG1vZGUpICsgVU5JVFNfUEVSX1NQRV9XT1JE IC0gMSkgLyBVTklUU19QRVJfU1BFX1dPUkQ7Ci0tCi0tICBpZiAoQUxUSVZFQ19SRUdOT19QIChy ZWdubykpCi0tICAgIHJldHVybgotLSAgICAgIChHRVRfTU9ERV9TSVpFIChtb2RlKSArIFVOSVRT X1BFUl9BTFRJVkVDX1dPUkQgLSAxKSAvIFVOSVRTX1BFUl9BTFRJVkVDX1dPUkQ7Ci0tCi0tICAv KiBUaGUgdmFsdWUgcmV0dXJuZWQgZm9yIFNDbW9kZSBpbiB0aGUgRTUwMCBkb3VibGUgY2FzZSBp cyAyIGZvcgotLSAgICAgQUJJIGNvbXBhdGliaWxpdHk7IHN0b3JpbmcgYW4gU0Ntb2RlIHZhbHVl IGluIGEgc2luZ2xlIHJlZ2lzdGVyCi0tICAgICB3b3VsZCByZXF1aXJlIGZ1bmN0aW9uX2FyZyBh bmQgcnM2MDAwX3NwZV9mdW5jdGlvbl9hcmcgdG8gaGFuZGxlCi0tICAgICBTQ21vZGUgc28gYXMg dG8gcGFzcyB0aGUgdmFsdWUgY29ycmVjdGx5IGluIGEgcGFpciBvZgotLSAgICAgcmVnaXN0ZXJz LiAgKi8KLS0gIGlmIChUQVJHRVRfRTUwMF9ET1VCTEUgJiYgRkxPQVRfTU9ERV9QIChtb2RlKSAm JiBtb2RlICE9IFNDbW9kZQotLSAgICAgICYmICFERUNJTUFMX0ZMT0FUX01PREVfUCAobW9kZSkp Ci0tICAgIHJldHVybiAoR0VUX01PREVfU0laRSAobW9kZSkgKyBVTklUU19QRVJfRlBfV09SRCAt IDEpIC8gVU5JVFNfUEVSX0ZQX1dPUkQ7Ci0tCi0tICByZXR1cm4gKEdFVF9NT0RFX1NJWkUgKG1v ZGUpICsgVU5JVFNfUEVSX1dPUkQgLSAxKSAvIFVOSVRTX1BFUl9XT1JEOwotLX0KLS0KLSAvKiBD aGFuZ2UgcmVnaXN0ZXIgdXNhZ2UgY29uZGl0aW9uYWwgb24gdGFyZ2V0IGZsYWdzLiAgKi8KLSB2 b2lkCi0gcnM2MDAwX2NvbmRpdGlvbmFsX3JlZ2lzdGVyX3VzYWdlICh2b2lkKQotQEAgLTQ2NzIs MTQgKzUyMDIsMTQgQEAgcnM2MDAwX2NvbmRpdGlvbmFsX3JlZ2lzdGVyX3VzYWdlICh2b2lkKQot IAk9IGNhbGxfcmVhbGx5X3VzZWRfcmVnc1sxNF0gPSAxOwotICAgICB9Ci0gCi0tICBpZiAoIVRB UkdFVF9BTFRJVkVDKQotKyAgaWYgKCFUQVJHRVRfQUxUSVZFQyAmJiAhVEFSR0VUX1ZTWCkKLSAg ICAgewotICAgICAgIGZvciAoaSA9IEZJUlNUX0FMVElWRUNfUkVHTk87IGkgPD0gTEFTVF9BTFRJ VkVDX1JFR05POyArK2kpCi0gCWZpeGVkX3JlZ3NbaV0gPSBjYWxsX3VzZWRfcmVnc1tpXSA9IGNh bGxfcmVhbGx5X3VzZWRfcmVnc1tpXSA9IDE7Ci0gICAgICAgY2FsbF9yZWFsbHlfdXNlZF9yZWdz W1ZSU0FWRV9SRUdOT10gPSAxOwotICAgICB9Ci0gCi0tICBpZiAoVEFSR0VUX0FMVElWRUMpCi0r ICBpZiAoVEFSR0VUX0FMVElWRUMgfHwgVEFSR0VUX1ZTWCkKLSAgICAgZ2xvYmFsX3JlZ3NbVlND Ul9SRUdOT10gPSAxOwotIAotICAgaWYgKFRBUkdFVF9BTFRJVkVDX0FCSSkKLUBAIC01MTAxLDYg KzU2MzEsOCBAQCByczYwMDBfZW1pdF9tb3ZlIChydHggZGVzdCwgcnR4IHNvdXJjZSwgCi0gICAg IGNhc2UgVjJTRm1vZGU6Ci0gICAgIGNhc2UgVjJTSW1vZGU6Ci0gICAgIGNhc2UgVjFESW1vZGU6 Ci0rICAgIGNhc2UgVjJERm1vZGU6Ci0rICAgIGNhc2UgVjJESW1vZGU6Ci0gICAgICAgaWYgKENP TlNUQU5UX1AgKG9wZXJhbmRzWzFdKQotIAkgICYmICFlYXN5X3ZlY3Rvcl9jb25zdGFudCAob3Bl cmFuZHNbMV0sIG1vZGUpKQotIAlvcGVyYW5kc1sxXSA9IGZvcmNlX2NvbnN0X21lbSAobW9kZSwg b3BlcmFuZHNbMV0pOwotQEAgLTUyNzAsNiArNTgwMiw5IEBAIHJzNjAwMF9lbWl0X21vdmUgKHJ0 eCBkZXN0LCBydHggc291cmNlLCAKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBUSW1vZGU6 Ci0rICAgICAgaWYgKFZFQ1RPUl9NRU1fQUxUSVZFQ19PUl9WU1hfUCAoVEltb2RlKSkKLSsJYnJl YWs7Ci0rCi0gICAgICAgcnM2MDAwX2VsaW1pbmF0ZV9pbmRleGVkX21lbXJlZnMgKG9wZXJhbmRz KTsKLSAKLSAgICAgICBpZiAoVEFSR0VUX1BPV0VSKQotQEAgLTUyODUsNyArNTgyMCw3IEBAIHJz NjAwMF9lbWl0X21vdmUgKHJ0eCBkZXN0LCBydHggc291cmNlLCAKLSAgICAgICBicmVhazsKLSAK LSAgICAgZGVmYXVsdDoKLS0gICAgICBnY2NfdW5yZWFjaGFibGUgKCk7Ci0rICAgICAgZmF0YWxf aW5zbiAoImJhZCBtb3ZlIiwgZ2VuX3J0eF9TRVQgKFZPSURtb2RlLCBkZXN0LCBzb3VyY2UpKTsK LSAgICAgfQotIAotICAgLyogQWJvdmUsIHdlIG1heSBoYXZlIGNhbGxlZCBmb3JjZV9jb25zdF9t ZW0gd2hpY2ggbWF5IGhhdmUgcmV0dXJuZWQKLUBAIC01MzA1LDEwICs1ODQwLDEwIEBAIHJzNjAw MF9lbWl0X21vdmUgKHJ0eCBkZXN0LCBydHggc291cmNlLCAKLSAgICAmJiBUQVJHRVRfSEFSRF9G TE9BVCAmJiBUQVJHRVRfRlBSUykKLSAKLSAvKiBOb256ZXJvIGlmIHdlIGNhbiB1c2UgYW4gQWx0 aVZlYyByZWdpc3RlciB0byBwYXNzIHRoaXMgYXJnLiAgKi8KLS0jZGVmaW5lIFVTRV9BTFRJVkVD X0ZPUl9BUkdfUChDVU0sTU9ERSxUWVBFLE5BTUVEKQlcCi0tICAoQUxUSVZFQ19WRUNUT1JfTU9E RSAoTU9ERSkJCQkJXAotLSAgICYmIChDVU0pLT52cmVnbm8gPD0gQUxUSVZFQ19BUkdfTUFYX1JF RwkJXAotLSAgICYmIFRBUkdFVF9BTFRJVkVDX0FCSQkJCQlcCi0rI2RlZmluZSBVU0VfQUxUSVZF Q19GT1JfQVJHX1AoQ1VNLE1PREUsVFlQRSxOQU1FRCkJCVwKLSsgICgoQUxUSVZFQ19WRUNUT1Jf TU9ERSAoTU9ERSkgfHwgVlNYX1ZFQ1RPUl9NT0RFIChNT0RFKSkJXAotKyAgICYmIChDVU0pLT52 cmVnbm8gPD0gQUxUSVZFQ19BUkdfTUFYX1JFRwkJCVwKLSsgICAmJiBUQVJHRVRfQUxUSVZFQ19B QkkJCQkJCVwKLSAgICAmJiAoTkFNRUQpKQotIAotIC8qIFJldHVybiBhIG5vbnplcm8gdmFsdWUg dG8gc2F5IHRvIHJldHVybiB0aGUgZnVuY3Rpb24gdmFsdWUgaW4KLUBAIC01NTQ5LDcgKzYwODQs NyBAQCBmdW5jdGlvbl9hcmdfYm91bmRhcnkgKGVudW0gbWFjaGluZV9tb2RlCi0gCSAgICAgICAm JiBpbnRfc2l6ZV9pbl9ieXRlcyAodHlwZSkgPj0gOAotIAkgICAgICAgJiYgaW50X3NpemVfaW5f Ynl0ZXMgKHR5cGUpIDwgMTYpKQotICAgICByZXR1cm4gNjQ7Ci0tICBlbHNlIGlmIChBTFRJVkVD X1ZFQ1RPUl9NT0RFIChtb2RlKQotKyAgZWxzZSBpZiAoKEFMVElWRUNfVkVDVE9SX01PREUgKG1v ZGUpIHx8IFZTWF9WRUNUT1JfTU9ERSAobW9kZSkpCi0gCSAgIHx8ICh0eXBlICYmIFRSRUVfQ09E RSAodHlwZSkgPT0gVkVDVE9SX1RZUEUKLSAJICAgICAgICYmIGludF9zaXplX2luX2J5dGVzICh0 eXBlKSA+PSAxNikpCi0gICAgIHJldHVybiAxMjg7Ci1AQCAtNTY5NCw3ICs2MjI5LDcgQEAgZnVu Y3Rpb25fYXJnX2FkdmFuY2UgKENVTVVMQVRJVkVfQVJHUyAqYwotICAgICBjdW0tPm5hcmdzX3By b3RvdHlwZS0tOwotIAotICAgaWYgKFRBUkdFVF9BTFRJVkVDX0FCSQotLSAgICAgICYmIChBTFRJ VkVDX1ZFQ1RPUl9NT0RFIChtb2RlKQotKyAgICAgICYmICgoQUxUSVZFQ19WRUNUT1JfTU9ERSAo bW9kZSkgfHwgVlNYX1ZFQ1RPUl9NT0RFIChtb2RlKSkKLSAJICB8fCAodHlwZSAmJiBUUkVFX0NP REUgKHR5cGUpID09IFZFQ1RPUl9UWVBFCi0gCSAgICAgICYmIGludF9zaXplX2luX2J5dGVzICh0 eXBlKSA9PSAxNikpKQotICAgICB7Ci1AQCAtNjI4OCw3ICs2ODIzLDcgQEAgZnVuY3Rpb25fYXJn IChDVU1VTEFUSVZFX0FSR1MgKmN1bSwgZW51bQotICAgICBlbHNlCi0gICAgICAgcmV0dXJuIGdl bl9ydHhfUkVHIChtb2RlLCBjdW0tPnZyZWdubyk7Ci0gICBlbHNlIGlmIChUQVJHRVRfQUxUSVZF Q19BQkkKLS0JICAgJiYgKEFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUpCi0rCSAgICYmICgoQUxU SVZFQ19WRUNUT1JfTU9ERSAobW9kZSkgfHwgVlNYX1ZFQ1RPUl9NT0RFIChtb2RlKSkKLSAJICAg ICAgIHx8ICh0eXBlICYmIFRSRUVfQ09ERSAodHlwZSkgPT0gVkVDVE9SX1RZUEUKLSAJCSAgICYm IGludF9zaXplX2luX2J5dGVzICh0eXBlKSA9PSAxNikpKQotICAgICB7Ci1AQCAtNzIxMiwxMCAr Nzc0NywxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJ1aWx0aW5fZGVzY3JpcHRpb24gCi0gICB7 IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfYWx0aXZlY192cGVybV92NHNpLCAiX19idWlsdGluX2Fs dGl2ZWNfdnBlcm1fNHNpIiwgQUxUSVZFQ19CVUlMVElOX1ZQRVJNXzRTSSB9LAotICAgeyBNQVNL X0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdnBlcm1fdjhoaSwgIl9fYnVpbHRpbl9hbHRpdmVj X3ZwZXJtXzhoaSIsIEFMVElWRUNfQlVJTFRJTl9WUEVSTV84SEkgfSwKLSAgIHsgTUFTS19BTFRJ VkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZwZXJtX3YxNnFpLCAiX19idWlsdGluX2FsdGl2ZWNfdnBl cm1fMTZxaSIsIEFMVElWRUNfQlVJTFRJTl9WUEVSTV8xNlFJIH0sCi0tICB7IE1BU0tfQUxUSVZF QywgQ09ERV9GT1JfYWx0aXZlY192c2VsX3Y0c2YsICJfX2J1aWx0aW5fYWx0aXZlY192c2VsXzRz ZiIsIEFMVElWRUNfQlVJTFRJTl9WU0VMXzRTRiB9LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVf Rk9SX2FsdGl2ZWNfdnNlbF92NHNpLCAiX19idWlsdGluX2FsdGl2ZWNfdnNlbF80c2kiLCBBTFRJ VkVDX0JVSUxUSU5fVlNFTF80U0kgfSwKLS0gIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRp dmVjX3ZzZWxfdjhoaSwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZzZWxfOGhpIiwgQUxUSVZFQ19CVUlM VElOX1ZTRUxfOEhJIH0sCi0tICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfYWx0aXZlY192c2Vs X3YxNnFpLCAiX19idWlsdGluX2FsdGl2ZWNfdnNlbF8xNnFpIiwgQUxUSVZFQ19CVUlMVElOX1ZT RUxfMTZRSSB9LAotKyAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdnBlcm1fdjJk ZiwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZwZXJtXzJkZiIsIEFMVElWRUNfQlVJTFRJTl9WUEVSTV8y REYgfSwKLSsgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZwZXJtX3YyZGksICJf X2J1aWx0aW5fYWx0aXZlY192cGVybV8yZGkiLCBBTFRJVkVDX0JVSUxUSU5fVlBFUk1fMkRJIH0s Ci0rICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfdmVjdG9yX3ZzZWx2NHNmLCAiX19idWlsdGlu X2FsdGl2ZWNfdnNlbF80c2YiLCBBTFRJVkVDX0JVSUxUSU5fVlNFTF80U0YgfSwKLSsgIHsgTUFT S19BTFRJVkVDLCBDT0RFX0ZPUl92ZWN0b3JfdnNlbHY0c2ksICJfX2J1aWx0aW5fYWx0aXZlY192 c2VsXzRzaSIsIEFMVElWRUNfQlVJTFRJTl9WU0VMXzRTSSB9LAotKyAgeyBNQVNLX0FMVElWRUMs IENPREVfRk9SX3ZlY3Rvcl92c2VsdjhoaSwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZzZWxfOGhpIiwg QUxUSVZFQ19CVUlMVElOX1ZTRUxfOEhJIH0sCi0rICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1Jf dmVjdG9yX3ZzZWx2MTZxaSwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZzZWxfMTZxaSIsIEFMVElWRUNf QlVJTFRJTl9WU0VMXzE2UUkgfSwKLSsgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl92ZWN0b3Jf dnNlbHYyZGYsICJfX2J1aWx0aW5fYWx0aXZlY192c2VsXzJkZiIsIEFMVElWRUNfQlVJTFRJTl9W U0VMXzJERiB9LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdnNsZG9pX3Yx NnFpLCAiX19idWlsdGluX2FsdGl2ZWNfdnNsZG9pXzE2cWkiLCBBTFRJVkVDX0JVSUxUSU5fVlNM RE9JXzE2UUkgfSwKLSAgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9hbHRpdmVjX3ZzbGRvaV92 OGhpLCAiX19idWlsdGluX2FsdGl2ZWNfdnNsZG9pXzhoaSIsIEFMVElWRUNfQlVJTFRJTl9WU0xE T0lfOEhJIH0sCi0gICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfYWx0aXZlY192c2xkb2lfdjRz aSwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZzbGRvaV80c2kiLCBBTFRJVkVDX0JVSUxUSU5fVlNMRE9J XzRTSSB9LAotQEAgLTcyODksMTggKzc4MjcsMTggQEAgc3RhdGljIHN0cnVjdCBidWlsdGluX2Rl c2NyaXB0aW9uIGJkZXNjXwotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNm dXgsICJfX2J1aWx0aW5fYWx0aXZlY192Y2Z1eCIsIEFMVElWRUNfQlVJTFRJTl9WQ0ZVWCB9LAot ICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNmc3gsICJfX2J1aWx0aW5fYWx0 aXZlY192Y2ZzeCIsIEFMVElWRUNfQlVJTFRJTl9WQ0ZTWCB9LAotICAgeyBNQVNLX0FMVElWRUMs IENPREVfRk9SX2FsdGl2ZWNfdmNtcGJmcCwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZjbXBiZnAiLCBB TFRJVkVDX0JVSUxUSU5fVkNNUEJGUCB9LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2Fs dGl2ZWNfdmNtcGVxdWIsICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1YiIsIEFMVElWRUNfQlVJ TFRJTl9WQ01QRVFVQiB9LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNt cGVxdWgsICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZXF1aCIsIEFMVElWRUNfQlVJTFRJTl9WQ01Q RVFVSCB9LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNtcGVxdXcsICJf X2J1aWx0aW5fYWx0aXZlY192Y21wZXF1dyIsIEFMVElWRUNfQlVJTFRJTl9WQ01QRVFVVyB9LAot LSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNtcGVxZnAsICJfX2J1aWx0aW5f YWx0aXZlY192Y21wZXFmcCIsIEFMVElWRUNfQlVJTFRJTl9WQ01QRVFGUCB9LAotLSAgeyBNQVNL X0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNtcGdlZnAsICJfX2J1aWx0aW5fYWx0aXZlY192 Y21wZ2VmcCIsIEFMVElWRUNfQlVJTFRJTl9WQ01QR0VGUCB9LAotLSAgeyBNQVNLX0FMVElWRUMs IENPREVfRk9SX2FsdGl2ZWNfdmNtcGd0dWIsICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1YiIs IEFMVElWRUNfQlVJTFRJTl9WQ01QR1RVQiB9LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9S X2FsdGl2ZWNfdmNtcGd0c2IsICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzYiIsIEFMVElWRUNf QlVJTFRJTl9WQ01QR1RTQiB9LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNf dmNtcGd0dWgsICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1aCIsIEFMVElWRUNfQlVJTFRJTl9W Q01QR1RVSCB9LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNtcGd0c2gs ICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzaCIsIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RTSCB9 LAotLSAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNtcGd0dXcsICJfX2J1aWx0 aW5fYWx0aXZlY192Y21wZ3R1dyIsIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RVVyB9LAotLSAgeyBN QVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmNtcGd0c3csICJfX2J1aWx0aW5fYWx0aXZl Y192Y21wZ3RzdyIsIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RTVyB9LAotLSAgeyBNQVNLX0FMVElW RUMsIENPREVfRk9SX2FsdGl2ZWNfdmNtcGd0ZnAsICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3Rm cCIsIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RGUCB9LAotKyAgeyBNQVNLX0FMVElWRUMsIENPREVf Rk9SX3ZlY3Rvcl9lcXYxNnFpLCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWIiLCBBTFRJVkVD X0JVSUxUSU5fVkNNUEVRVUIgfSwKLSsgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl92ZWN0b3Jf ZXF2OGhpLCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGVxdWgiLCBBTFRJVkVDX0JVSUxUSU5fVkNN UEVRVUggfSwKLSsgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl92ZWN0b3JfZXF2NHNpLCAiX19i dWlsdGluX2FsdGl2ZWNfdmNtcGVxdXciLCBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRVVcgfSwKLSsg IHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl92ZWN0b3JfZXF2NHNmLCAiX19idWlsdGluX2FsdGl2 ZWNfdmNtcGVxZnAiLCBBTFRJVkVDX0JVSUxUSU5fVkNNUEVRRlAgfSwKLSsgIHsgTUFTS19BTFRJ VkVDLCBDT0RFX0ZPUl92ZWN0b3JfZ2V2NHNmLCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGdlZnAi LCBBTFRJVkVDX0JVSUxUSU5fVkNNUEdFRlAgfSwKLSsgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZP Ul92ZWN0b3JfZ3R1djE2cWksICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1YiIsIEFMVElWRUNf QlVJTFRJTl9WQ01QR1RVQiB9LAotKyAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX3ZlY3Rvcl9n dHV2OGhpLCAiX19idWlsdGluX2FsdGl2ZWNfdmNtcGd0c2IiLCBBTFRJVkVDX0JVSUxUSU5fVkNN UEdUU0IgfSwKLSsgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl92ZWN0b3JfZ3R1djRzaSwgIl9f YnVpbHRpbl9hbHRpdmVjX3ZjbXBndHVoIiwgQUxUSVZFQ19CVUlMVElOX1ZDTVBHVFVIIH0sCi0r ICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1JfdmVjdG9yX2d0djE2cWksICJfX2J1aWx0aW5fYWx0 aXZlY192Y21wZ3RzaCIsIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RTSCB9LAotKyAgeyBNQVNLX0FM VElWRUMsIENPREVfRk9SX3ZlY3Rvcl9ndHY4aGksICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3R1 dyIsIEFMVElWRUNfQlVJTFRJTl9WQ01QR1RVVyB9LAotKyAgeyBNQVNLX0FMVElWRUMsIENPREVf Rk9SX3ZlY3Rvcl9ndHY0c2ksICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RzdyIsIEFMVElWRUNf QlVJTFRJTl9WQ01QR1RTVyB9LAotKyAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX3ZlY3Rvcl9n dHY0c2YsICJfX2J1aWx0aW5fYWx0aXZlY192Y21wZ3RmcCIsIEFMVElWRUNfQlVJTFRJTl9WQ01Q R1RGUCB9LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmN0c3hzLCAiX19i dWlsdGluX2FsdGl2ZWNfdmN0c3hzIiwgQUxUSVZFQ19CVUlMVElOX1ZDVFNYUyB9LAotICAgeyBN QVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdmN0dXhzLCAiX19idWlsdGluX2FsdGl2ZWNf dmN0dXhzIiwgQUxUSVZFQ19CVUlMVElOX1ZDVFVYUyB9LAotICAgeyBNQVNLX0FMVElWRUMsIENP REVfRk9SX3VtYXh2MTZxaTMsICJfX2J1aWx0aW5fYWx0aXZlY192bWF4dWIiLCBBTFRJVkVDX0JV SUxUSU5fVk1BWFVCIH0sCi1AQCAtNzMzMSw3ICs3ODY5LDcgQEAgc3RhdGljIHN0cnVjdCBidWls dGluX2Rlc2NyaXB0aW9uIGJkZXNjXwotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2 ZWNfdm11bG9zYiwgIl9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxvc2IiLCBBTFRJVkVDX0JVSUxUSU5f Vk1VTE9TQiB9LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdm11bG91aCwg Il9fYnVpbHRpbl9hbHRpdmVjX3ZtdWxvdWgiLCBBTFRJVkVDX0JVSUxUSU5fVk1VTE9VSCB9LAot ICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNfdm11bG9zaCwgIl9fYnVpbHRpbl9h bHRpdmVjX3ZtdWxvc2giLCBBTFRJVkVDX0JVSUxUSU5fVk1VTE9TSCB9LAotLSAgeyBNQVNLX0FM VElWRUMsIENPREVfRk9SX2FsdGl2ZWNfbm9ydjRzaTMsICJfX2J1aWx0aW5fYWx0aXZlY192bm9y IiwgQUxUSVZFQ19CVUlMVElOX1ZOT1IgfSwKLSsgIHsgTUFTS19BTFRJVkVDLCBDT0RFX0ZPUl9u b3J2NHNpMywgIl9fYnVpbHRpbl9hbHRpdmVjX3Zub3IiLCBBTFRJVkVDX0JVSUxUSU5fVk5PUiB9 LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2lvcnY0c2kzLCAiX19idWlsdGluX2FsdGl2 ZWNfdm9yIiwgQUxUSVZFQ19CVUlMVElOX1ZPUiB9LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVf Rk9SX2FsdGl2ZWNfdnBrdWh1bSwgIl9fYnVpbHRpbl9hbHRpdmVjX3Zwa3VodW0iLCBBTFRJVkVD X0JVSUxUSU5fVlBLVUhVTSB9LAotICAgeyBNQVNLX0FMVElWRUMsIENPREVfRk9SX2FsdGl2ZWNf dnBrdXd1bSwgIl9fYnVpbHRpbl9hbHRpdmVjX3Zwa3V3dW0iLCBBTFRJVkVDX0JVSUxUSU5fVlBL VVdVTSB9LAotQEAgLTc3OTYsNiArODMzNCwxMSBAQCBzdGF0aWMgc3RydWN0IGJ1aWx0aW5fZGVz Y3JpcHRpb24gYmRlc2NfCi0gICB7IE1BU0tfQUxUSVZFQywgQ09ERV9GT1Jfbm90aGluZywgIl9f YnVpbHRpbl92ZWNfdnVwa2xzaCIsIEFMVElWRUNfQlVJTFRJTl9WRUNfVlVQS0xTSCB9LAotICAg eyBNQVNLX0FMVElWRUMsIENPREVfRk9SX25vdGhpbmcsICJfX2J1aWx0aW5fdmVjX3Z1cGtsc2Ii LCBBTFRJVkVDX0JVSUxUSU5fVkVDX1ZVUEtMU0IgfSwKLSAKLSsgIHsgTUFTS19BTFRJVkVDfE1B U0tfVlNYLCBDT0RFX0ZPUl9mbG9hdHY0c2l2NHNmMiwgIl9fYnVpbHRpbl92ZWNfZmxvYXRfc2lz ZiIsIFZFQ1RPUl9CVUlMVElOX0ZMT0FUX1Y0U0lfVjRTRiB9LAotKyAgeyBNQVNLX0FMVElWRUN8 TUFTS19WU1gsIENPREVfRk9SX3Vuc2lnbmVkX2Zsb2F0djRzaXY0c2YyLCAiX19idWlsdGluX3Zl Y191bnNfZmxvYXRfc2lzZiIsIFZFQ1RPUl9CVUlMVElOX1VOU0ZMT0FUX1Y0U0lfVjRTRiB9LAot KyAgeyBNQVNLX0FMVElWRUN8TUFTS19WU1gsIENPREVfRk9SX2ZpeF90cnVuY3Y0c2Z2NHNpMiwg Il9fYnVpbHRpbl92ZWNfZml4X3Nmc2kiLCBWRUNUT1JfQlVJTFRJTl9GSVhfVjRTRl9WNFNJIH0s Ci0rICB7IE1BU0tfQUxUSVZFQ3xNQVNLX1ZTWCwgQ09ERV9GT1JfZml4dW5zX3RydW5jdjRzZnY0 c2kyLCAiX19idWlsdGluX3ZlY19maXh1bnNfc2ZzaSIsIFZFQ1RPUl9CVUlMVElOX0ZJWFVOU19W NFNGX1Y0U0kgfSwKLSsKLSAgIC8qIFRoZSBTUEUgdW5hcnkgYnVpbHRpbnMgbXVzdCBzdGFydCB3 aXRoIFNQRV9CVUlMVElOX0VWQUJTIGFuZAotICAgICAgZW5kIHdpdGggU1BFX0JVSUxUSU5fRVZT VUJGVVNJQUFXLiAgKi8KLSAgIHsgMCwgQ09ERV9GT1Jfc3BlX2V2YWJzLCAiX19idWlsdGluX3Nw ZV9ldmFicyIsIFNQRV9CVUlMVElOX0VWQUJTIH0sCi1AQCAtODM1MiwxNiArODg5NSwxNiBAQCBh bHRpdmVjX2V4cGFuZF9sZF9idWlsdGluICh0cmVlIGV4cCwgcnR4Ci0gICBzd2l0Y2ggKGZjb2Rl KQotICAgICB7Ci0gICAgIGNhc2UgQUxUSVZFQ19CVUlMVElOX0xEX0lOVEVSTkFMXzE2cWk6Ci0t ICAgICAgaWNvZGUgPSBDT0RFX0ZPUl9hbHRpdmVjX2x2eF92MTZxaTsKLSsgICAgICBpY29kZSA9 IENPREVfRk9SX3ZlY3Rvcl9sb2FkX3YxNnFpOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIEFM VElWRUNfQlVJTFRJTl9MRF9JTlRFUk5BTF84aGk6Ci0tICAgICAgaWNvZGUgPSBDT0RFX0ZPUl9h bHRpdmVjX2x2eF92OGhpOwotKyAgICAgIGljb2RlID0gQ09ERV9GT1JfdmVjdG9yX2xvYWRfdjho aTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBBTFRJVkVDX0JVSUxUSU5fTERfSU5URVJOQUxf NHNpOgotLSAgICAgIGljb2RlID0gQ09ERV9GT1JfYWx0aXZlY19sdnhfdjRzaTsKLSsgICAgICBp Y29kZSA9IENPREVfRk9SX3ZlY3Rvcl9sb2FkX3Y0c2k7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNh c2UgQUxUSVZFQ19CVUlMVElOX0xEX0lOVEVSTkFMXzRzZjoKLS0gICAgICBpY29kZSA9IENPREVf Rk9SX2FsdGl2ZWNfbHZ4X3Y0c2Y7Ci0rICAgICAgaWNvZGUgPSBDT0RFX0ZPUl92ZWN0b3JfbG9h ZF92NHNmOwotICAgICAgIGJyZWFrOwotICAgICBkZWZhdWx0OgotICAgICAgICpleHBhbmRlZHAg PSBmYWxzZTsKLUBAIC04NDA1LDE2ICs4OTQ4LDE2IEBAIGFsdGl2ZWNfZXhwYW5kX3N0X2J1aWx0 aW4gKHRyZWUgZXhwLCBydHgKLSAgIHN3aXRjaCAoZmNvZGUpCi0gICAgIHsKLSAgICAgY2FzZSBB TFRJVkVDX0JVSUxUSU5fU1RfSU5URVJOQUxfMTZxaToKLS0gICAgICBpY29kZSA9IENPREVfRk9S X2FsdGl2ZWNfc3R2eF92MTZxaTsKLSsgICAgICBpY29kZSA9IENPREVfRk9SX3ZlY3Rvcl9zdG9y ZV92MTZxaTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBBTFRJVkVDX0JVSUxUSU5fU1RfSU5U RVJOQUxfOGhpOgotLSAgICAgIGljb2RlID0gQ09ERV9GT1JfYWx0aXZlY19zdHZ4X3Y4aGk7Ci0r ICAgICAgaWNvZGUgPSBDT0RFX0ZPUl92ZWN0b3Jfc3RvcmVfdjhoaTsKLSAgICAgICBicmVhazsK LSAgICAgY2FzZSBBTFRJVkVDX0JVSUxUSU5fU1RfSU5URVJOQUxfNHNpOgotLSAgICAgIGljb2Rl ID0gQ09ERV9GT1JfYWx0aXZlY19zdHZ4X3Y0c2k7Ci0rICAgICAgaWNvZGUgPSBDT0RFX0ZPUl92 ZWN0b3Jfc3RvcmVfdjRzaTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBBTFRJVkVDX0JVSUxU SU5fU1RfSU5URVJOQUxfNHNmOgotLSAgICAgIGljb2RlID0gQ09ERV9GT1JfYWx0aXZlY19zdHZ4 X3Y0c2Y7Ci0rICAgICAgaWNvZGUgPSBDT0RFX0ZPUl92ZWN0b3Jfc3RvcmVfdjRzZjsKLSAgICAg ICBicmVhazsKLSAgICAgZGVmYXVsdDoKLSAgICAgICAqZXhwYW5kZWRwID0gZmFsc2U7Ci1AQCAt OTM3Miw2ICs5OTE1LDggQEAgcnM2MDAwX2luaXRfYnVpbHRpbnMgKHZvaWQpCi0gewotICAgVjJT SV90eXBlX25vZGUgPSBidWlsZF92ZWN0b3JfdHlwZSAoaW50U0lfdHlwZV9ub2RlLCAyKTsKLSAg IFYyU0ZfdHlwZV9ub2RlID0gYnVpbGRfdmVjdG9yX3R5cGUgKGZsb2F0X3R5cGVfbm9kZSwgMik7 Ci0rICBWMkRJX3R5cGVfbm9kZSA9IGJ1aWxkX3ZlY3Rvcl90eXBlIChpbnRESV90eXBlX25vZGUs IDIpOwotKyAgVjJERl90eXBlX25vZGUgPSBidWlsZF92ZWN0b3JfdHlwZSAoZG91YmxlX3R5cGVf bm9kZSwgMik7Ci0gICBWNEhJX3R5cGVfbm9kZSA9IGJ1aWxkX3ZlY3Rvcl90eXBlIChpbnRISV90 eXBlX25vZGUsIDQpOwotICAgVjRTSV90eXBlX25vZGUgPSBidWlsZF92ZWN0b3JfdHlwZSAoaW50 U0lfdHlwZV9ub2RlLCA0KTsKLSAgIFY0U0ZfdHlwZV9ub2RlID0gYnVpbGRfdmVjdG9yX3R5cGUg KGZsb2F0X3R5cGVfbm9kZSwgNCk7Ci1AQCAtOTQwNCw3ICs5OTQ5LDEwIEBAIHJzNjAwMF9pbml0 X2J1aWx0aW5zICh2b2lkKQotICAgdWludEhJX3R5cGVfaW50ZXJuYWxfbm9kZSA9IHVuc2lnbmVk X2ludEhJX3R5cGVfbm9kZTsKLSAgIGludFNJX3R5cGVfaW50ZXJuYWxfbm9kZSA9IGludFNJX3R5 cGVfbm9kZTsKLSAgIHVpbnRTSV90eXBlX2ludGVybmFsX25vZGUgPSB1bnNpZ25lZF9pbnRTSV90 eXBlX25vZGU7Ci0rICBpbnRESV90eXBlX2ludGVybmFsX25vZGUgPSBpbnRESV90eXBlX25vZGU7 Ci0rICB1aW50RElfdHlwZV9pbnRlcm5hbF9ub2RlID0gdW5zaWduZWRfaW50RElfdHlwZV9ub2Rl OwotICAgZmxvYXRfdHlwZV9pbnRlcm5hbF9ub2RlID0gZmxvYXRfdHlwZV9ub2RlOwotKyAgZG91 YmxlX3R5cGVfaW50ZXJuYWxfbm9kZSA9IGZsb2F0X3R5cGVfbm9kZTsKLSAgIHZvaWRfdHlwZV9p bnRlcm5hbF9ub2RlID0gdm9pZF90eXBlX25vZGU7Ci0gCi0gICAoKmxhbmdfaG9va3MuZGVjbHMu cHVzaGRlY2wpIChidWlsZF9kZWNsIChUWVBFX0RFQ0wsCi1AQCAtOTQ2MiwxMyArMTAwMTAsMTgg QEAgcnM2MDAwX2luaXRfYnVpbHRpbnMgKHZvaWQpCi0gCQkJCQkgICAgZ2V0X2lkZW50aWZpZXIg KCJfX3ZlY3RvciBfX3BpeGVsIiksCi0gCQkJCQkgICAgcGl4ZWxfVjhISV90eXBlX25vZGUpKTsK LSAKLSsgIGlmIChUQVJHRVRfVlNYKQotKyAgICAoKmxhbmdfaG9va3MuZGVjbHMucHVzaGRlY2wp IChidWlsZF9kZWNsIChUWVBFX0RFQ0wsCi0rCQkJCQkgICAgICBnZXRfaWRlbnRpZmllciAoIl9f dmVjdG9yIGRvdWJsZSIpLAotKwkJCQkJICAgICAgVjJERl90eXBlX25vZGUpKTsKLSsKLSAgIGlm IChUQVJHRVRfUEFJUkVEX0ZMT0FUKQotICAgICBwYWlyZWRfaW5pdF9idWlsdGlucyAoKTsKLSAg IGlmIChUQVJHRVRfU1BFKQotICAgICBzcGVfaW5pdF9idWlsdGlucyAoKTsKLSAgIGlmIChUQVJH RVRfQUxUSVZFQykKLSAgICAgYWx0aXZlY19pbml0X2J1aWx0aW5zICgpOwotLSAgaWYgKFRBUkdF VF9BTFRJVkVDIHx8IFRBUkdFVF9TUEUgfHwgVEFSR0VUX1BBSVJFRF9GTE9BVCkKLSsgIGlmIChU QVJHRVRfQUxUSVZFQyB8fCBUQVJHRVRfU1BFIHx8IFRBUkdFVF9QQUlSRURfRkxPQVQgfHwgVEFS R0VUX1ZTWCkKLSAgICAgcnM2MDAwX2NvbW1vbl9pbml0X2J1aWx0aW5zICgpOwotICAgaWYgKFRB UkdFVF9QUENfR0ZYT1BUKQotICAgICB7Ci1AQCAtMTA0MDcsNiArMTA5NjAsMjYgQEAgcnM2MDAw X2NvbW1vbl9pbml0X2J1aWx0aW5zICh2b2lkKQotICAgdHJlZSBpbnRfZnR5cGVfdjhoaV92OGhp Ci0gICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChpbnRlZ2VyX3R5cGVfbm9kZSwKLSAJ CQkJVjhISV90eXBlX25vZGUsIFY4SElfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwotKyAgdHJlZSB2 MmRmX2Z0eXBlX3YyZGZfdjJkZl92MmRmCi0rICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0 IChWMkRGX3R5cGVfbm9kZSwKLSsJCQkJVjJERl90eXBlX25vZGUsIFYyREZfdHlwZV9ub2RlLAot KwkJCQlWMkRGX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKLSsgIHRyZWUgdjJkaV9mdHlwZV92MmRp X3YyZGlfdjJkaQotKyAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjJESV90eXBlX25v ZGUsCi0rCQkJCVYyRElfdHlwZV9ub2RlLCBWMkRJX3R5cGVfbm9kZSwKLSsJCQkJVjJESV90eXBl X25vZGUsIE5VTExfVFJFRSk7Ci0rICB0cmVlIHYyZGZfZnR5cGVfdjJkZl92MmRmX3YxNnFpCi0r ICAgID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChWMkRGX3R5cGVfbm9kZSwKLSsJCQkJVjJE Rl90eXBlX25vZGUsIFYyREZfdHlwZV9ub2RlLAotKwkJCQlWMTZRSV90eXBlX25vZGUsIE5VTExf VFJFRSk7Ci0rICB0cmVlIHYyZGlfZnR5cGVfdjJkaV92MmRpX3YxNnFpCi0rICAgID0gYnVpbGRf ZnVuY3Rpb25fdHlwZV9saXN0IChWMkRJX3R5cGVfbm9kZSwKLSsJCQkJVjJESV90eXBlX25vZGUs IFYyRElfdHlwZV9ub2RlLAotKwkJCQlWMTZRSV90eXBlX25vZGUsIE5VTExfVFJFRSk7Ci0rICB0 cmVlIHY0c2ZfZnR5cGVfdjRzaQotKyAgICA9IGJ1aWxkX2Z1bmN0aW9uX3R5cGVfbGlzdCAoVjRT Rl90eXBlX25vZGUsIFY0U0lfdHlwZV9ub2RlLCBOVUxMX1RSRUUpOwotKyAgdHJlZSB2NHNpX2Z0 eXBlX3Y0c2YKLSsgICAgPSBidWlsZF9mdW5jdGlvbl90eXBlX2xpc3QgKFY0U0lfdHlwZV9ub2Rl LCBWNFNGX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsKLSAKLSAgIC8qIEFkZCB0aGUgc2ltcGxlIHRl cm5hcnkgb3BlcmF0b3JzLiAgKi8KLSAgIGQgPSBiZGVzY18zYXJnOwotQEAgLTEwNDQzLDYgKzEx MDE2LDEyIEBAIHJzNjAwMF9jb21tb25faW5pdF9idWlsdGlucyAodm9pZCkKLSAJICAgIGNhc2Ug Vk9JRG1vZGU6Ci0gCSAgICAgIHR5cGUgPSBvcGFxdWVfZnR5cGVfb3BhcXVlX29wYXF1ZV9vcGFx dWU7Ci0gCSAgICAgIGJyZWFrOwotKwkgICAgY2FzZSBWMkRJbW9kZToKLSsJICAgICAgdHlwZSA9 IHYyZGlfZnR5cGVfdjJkaV92MmRpX3YyZGk7Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgY2FzZSBW MkRGbW9kZToKLSsJICAgICAgdHlwZSA9IHYyZGZfZnR5cGVfdjJkZl92MmRmX3YyZGY7Ci0rCSAg ICAgIGJyZWFrOwotIAkgICAgY2FzZSBWNFNJbW9kZToKLSAJICAgICAgdHlwZSA9IHY0c2lfZnR5 cGVfdjRzaV92NHNpX3Y0c2k7Ci0gCSAgICAgIGJyZWFrOwotQEAgLTEwNDY2LDYgKzExMDQ1LDEy IEBAIHJzNjAwMF9jb21tb25faW5pdF9idWlsdGlucyAodm9pZCkKLSAJewotIAkgIHN3aXRjaCAo bW9kZTApCi0gCSAgICB7Ci0rCSAgICBjYXNlIFYyREltb2RlOgotKwkgICAgICB0eXBlID0gdjJk aV9mdHlwZV92MmRpX3YyZGlfdjE2cWk7Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgY2FzZSBWMkRG bW9kZToKLSsJICAgICAgdHlwZSA9IHYyZGZfZnR5cGVfdjJkZl92MmRmX3YxNnFpOwotKwkgICAg ICBicmVhazsKLSAJICAgIGNhc2UgVjRTSW1vZGU6Ci0gCSAgICAgIHR5cGUgPSB2NHNpX2Z0eXBl X3Y0c2lfdjRzaV92MTZxaTsKLSAJICAgICAgYnJlYWs7Ci1AQCAtMTA3MjEsNiArMTEzMDYsMTAg QEAgcnM2MDAwX2NvbW1vbl9pbml0X2J1aWx0aW5zICh2b2lkKQotIAl0eXBlID0gdjJzaV9mdHlw ZV92MnNmOwotICAgICAgIGVsc2UgaWYgKG1vZGUwID09IFYyU0ltb2RlICYmIG1vZGUxID09IFFJ bW9kZSkKLSAJdHlwZSA9IHYyc2lfZnR5cGVfY2hhcjsKLSsgICAgICBlbHNlIGlmIChtb2RlMCA9 PSBWNFNJbW9kZSAmJiBtb2RlMSA9PSBWNFNGbW9kZSkKLSsJdHlwZSA9IHY0c2lfZnR5cGVfdjRz ZjsKLSsgICAgICBlbHNlIGlmIChtb2RlMCA9PSBWNFNGbW9kZSAmJiBtb2RlMSA9PSBWNFNJbW9k ZSkKLSsJdHlwZSA9IHY0c2ZfZnR5cGVfdjRzaTsKLSAgICAgICBlbHNlCi0gCWdjY191bnJlYWNo YWJsZSAoKTsKLSAKLUBAIC0xMTYwMSwxMyArMTIxOTAsMTAxIEBAIHJzNjAwMF9pbnN0YW50aWF0 ZV9kZWNscyAodm9pZCkKLSAgICAgaW5zdGFudGlhdGVfZGVjbF9ydGwgKGNmdW4tPm1hY2hpbmUt PnNkbW9kZV9zdGFja19zbG90KTsKLSB9Ci0gCi0rLyogR2l2ZW4gYW4gcnR4IFggYmVpbmcgcmVs b2FkZWQgaW50byBhIHJlZyByZXF1aXJlZCB0byBiZQotKyAgIGluIGNsYXNzIENMQVNTLCByZXR1 cm4gdGhlIGNsYXNzIG9mIHJlZyB0byBhY3R1YWxseSB1c2UuCi0rICAgSW4gZ2VuZXJhbCB0aGlz IGlzIGp1c3QgQ0xBU1M7IGJ1dCBvbiBzb21lIG1hY2hpbmVzCi0rICAgaW4gc29tZSBjYXNlcyBp dCBpcyBwcmVmZXJhYmxlIHRvIHVzZSBhIG1vcmUgcmVzdHJpY3RpdmUgY2xhc3MuCi0rCi0rICAg T24gdGhlIFJTLzYwMDAsIHdlIGhhdmUgdG8gcmV0dXJuIE5PX1JFR1Mgd2hlbiB3ZSB3YW50IHRv IHJlbG9hZCBhCi0rICAgZmxvYXRpbmctcG9pbnQgQ09OU1RfRE9VQkxFIHRvIGZvcmNlIGl0IHRv IGJlIGNvcGllZCB0byBtZW1vcnkuCi0rCi0rICAgV2UgYWxzbyBkb24ndCB3YW50IHRvIHJlbG9h ZCBpbnRlZ2VyIHZhbHVlcyBpbnRvIGZsb2F0aW5nLXBvaW50Ci0rICAgcmVnaXN0ZXJzIGlmIHdl IGNhbiBhdCBhbGwgaGVscCBpdC4gIEluIGZhY3QsIHRoaXMgY2FuCi0rICAgY2F1c2UgcmVsb2Fk IHRvIGRpZSwgaWYgaXQgdHJpZXMgdG8gZ2VuZXJhdGUgYSByZWxvYWQgb2YgQ1RSCi0rICAgaW50 byBhIEZQIHJlZ2lzdGVyIGFuZCBkaXNjb3ZlcnMgaXQgZG9lc24ndCBoYXZlIHRoZSBtZW1vcnkg bG9jYXRpb24KLSsgICByZXF1aXJlZC4KLSsKLSsgICA/Pz8gV291bGQgaXQgYmUgYSBnb29kIGlk ZWEgdG8gaGF2ZSByZWxvYWQgZG8gdGhlIGNvbnZlcnNlLCB0aGF0IGlzCi0rICAgdHJ5IHRvIHJl bG9hZCBmbG9hdGluZyBtb2RlcyBpbnRvIEZQIHJlZ2lzdGVycyBpZiBwb3NzaWJsZT8KLSsgKi8K LSsKLStlbnVtIHJlZ19jbGFzcwotK3JzNjAwMF9wcmVmZXJyZWRfcmVsb2FkX2NsYXNzIChydHgg eCwgZW51bSByZWdfY2xhc3MgcmNsYXNzKQotK3sKLSsgIGVudW0gbWFjaGluZV9tb2RlIG1vZGUg PSBHRVRfTU9ERSAoeCk7Ci0rCi0rICBpZiAoVEFSR0VUX1ZTWCAmJiBWU1hfVkVDVE9SX01PREUg KG1vZGUpICYmIHggPT0gQ09OU1QwX1JUWCAobW9kZSkKLSsgICAgICAmJiBWU1hfUkVHX0NMQVNT X1AgKHJjbGFzcykpCi0rICAgIHJldHVybiByY2xhc3M7Ci0rCi0rICBpZiAoVEFSR0VUX0FMVElW RUMgJiYgQUxUSVZFQ19WRUNUT1JfTU9ERSAobW9kZSkgJiYgcmNsYXNzID09IEFMVElWRUNfUkVH UwotKyAgICAgICYmIGVhc3lfdmVjdG9yX2NvbnN0YW50ICh4LCBtb2RlKSkKLSsgICAgcmV0dXJu IHJjbGFzczsKLSsKLSsgIGlmIChDT05TVEFOVF9QICh4KSAmJiByZWdfY2xhc3Nlc19pbnRlcnNl Y3RfcCAocmNsYXNzLCBGTE9BVF9SRUdTKSkKLSsgICAgcmV0dXJuIE5PX1JFR1M7Ci0rCi0rICBp ZiAoR0VUX01PREVfQ0xBU1MgKG1vZGUpID09IE1PREVfSU5UICYmIHJjbGFzcyA9PSBOT05fU1BF Q0lBTF9SRUdTKQotKyAgICByZXR1cm4gR0VORVJBTF9SRUdTOwotKwotKyAgLyogRm9yIFZTWCwg cHJlZmVyIHRoZSB0cmFkaXRpb25hbCByZWdpc3RlcnMuICAqLwotKyAgaWYgKHJjbGFzcyA9PSBW U1hfUkVHUykKLSsgICAgewotKyAgICAgIGlmIChtb2RlID09IERGbW9kZSkKLSsJcmV0dXJuIEZM T0FUX1JFR1M7Ci0rCi0rICAgICAgaWYgKEFMVElWRUNfVkVDVE9SX01PREUgKG1vZGUpKQotKwly ZXR1cm4gQUxUSVZFQ19SRUdTOwotKyAgICB9Ci0rCi0rICByZXR1cm4gcmNsYXNzOwotK30KLSsK LSsvKiBJZiB3ZSBhcmUgY29weWluZyBiZXR3ZWVuIEZQIG9yIEFsdGlWZWMgcmVnaXN0ZXJzIGFu ZCBhbnl0aGluZyBlbHNlLCB3ZSBuZWVkCi0rICAgYSBtZW1vcnkgbG9jYXRpb24uICBUaGUgZXhj ZXB0aW9uIGlzIHdoZW4gd2UgYXJlIHRhcmdldGluZyBwcGM2NCBhbmQgdGhlCi0rICAgbW92ZSB0 by9mcm9tIGZwciB0byBncHIgaW5zdHJ1Y3Rpb25zIGFyZSBhdmFpbGFibGUuICBBbHNvLCB1bmRl ciBWU1gsIHlvdQotKyAgIGNhbiBjb3B5IHZlY3RvciByZWdpc3RlcnMgZnJvbSB0aGUgRlAgcmVn aXN0ZXIgc2V0IHRvIHRoZSBBbHRpdmVjIHJlZ2lzdGVyCi0rICAgc2V0IGFuZCB2aWNlIHZlcnNh LiAgKi8KLSsKLStib29sCi0rcnM2MDAwX3NlY29uZGFyeV9tZW1vcnlfbmVlZGVkIChlbnVtIHJl Z19jbGFzcyBjbGFzczEsCi0rCQkJCWVudW0gcmVnX2NsYXNzIGNsYXNzMiwKLSsJCQkJZW51bSBt YWNoaW5lX21vZGUgbW9kZSkKLSt7Ci0rICBpZiAoY2xhc3MxID09IGNsYXNzMikKLSsgICAgcmV0 dXJuIGZhbHNlOwotKwotKyAgaWYgKFRBUkdFVF9WU1ggJiYgVlNYX01PVkVfTU9ERSAobW9kZSkg JiYgVlNYX1JFR19DTEFTU19QIChjbGFzczEpCi0rICAgICAgJiYgVlNYX1JFR19DTEFTU19QIChj bGFzczIpKQotKyAgICByZXR1cm4gZmFsc2U7Ci0rCi0rICBpZiAoY2xhc3MxID09IEZMT0FUX1JF R1MKLSsgICAgICAgJiYgKCFUQVJHRVRfTUZQR1BSIHx8ICFUQVJHRVRfUE9XRVJQQzY0Ci0rCSAg IHx8ICgobW9kZSAhPSBERm1vZGUpCi0rCSAgICAgICAmJiAobW9kZSAhPSBERG1vZGUpCi0rCSAg ICAgICAmJiAobW9kZSAhPSBESW1vZGUpKSkpCi0rICAgIHJldHVybiB0cnVlOwotKwotKyAgaWYg KGNsYXNzMiA9PSBGTE9BVF9SRUdTCi0rICAgICAgJiYgKCFUQVJHRVRfTUZQR1BSIHx8ICFUQVJH RVRfUE9XRVJQQzY0Ci0rCSAgfHwgKChtb2RlICE9IERGbW9kZSkKLSsJICAgICAgJiYgKG1vZGUg IT0gRERtb2RlKQotKwkgICAgICAmJiAobW9kZSAhPSBESW1vZGUpKSkpCi0rICAgIHJldHVybiB0 cnVlOwotKwotKyAgaWYgKGNsYXNzMSA9PSBBTFRJVkVDX1JFR1MgfHwgY2xhc3MyID09IEFMVElW RUNfUkVHUykKLSsgICAgcmV0dXJuIHRydWU7Ci0rCi0rICByZXR1cm4gZmFsc2U7Ci0rfQotKwot IC8qIFJldHVybiB0aGUgcmVnaXN0ZXIgY2xhc3Mgb2YgYSBzY3JhdGNoIHJlZ2lzdGVyIG5lZWRl ZCB0byBjb3B5IElOIGludG8KLSAgICBvciBvdXQgb2YgYSByZWdpc3RlciBpbiBSQ0xBU1MgaW4g TU9ERS4gIElmIGl0IGNhbiBiZSBkb25lIGRpcmVjdGx5LAotICAgIE5PX1JFR1MgaXMgcmV0dXJu ZWQuICAqLwotIAotIGVudW0gcmVnX2NsYXNzCi0gcnM2MDAwX3NlY29uZGFyeV9yZWxvYWRfY2xh c3MgKGVudW0gcmVnX2NsYXNzIHJjbGFzcywKLS0JCQkgICAgICAgZW51bSBtYWNoaW5lX21vZGUg bW9kZSBBVFRSSUJVVEVfVU5VU0VELAotKwkJCSAgICAgICBlbnVtIG1hY2hpbmVfbW9kZSBtb2Rl LAotIAkJCSAgICAgICBydHggaW4pCi0gewotICAgaW50IHJlZ25vOwotQEAgLTExNjYzLDYgKzEy MzQwLDEzIEBAIHJzNjAwMF9zZWNvbmRhcnlfcmVsb2FkX2NsYXNzIChlbnVtIHJlZ18KLSAgICAg ICAmJiAocmNsYXNzID09IEZMT0FUX1JFR1MgfHwgcmNsYXNzID09IE5PTl9TUEVDSUFMX1JFR1Mp KQotICAgICByZXR1cm4gKG1vZGUgIT0gU0Rtb2RlKSA/IE5PX1JFR1MgOiBHRU5FUkFMX1JFR1M7 Ci0gCi0rICAvKiBNZW1vcnksIGFuZCBGUC9hbHRpdmVjIHJlZ2lzdGVycyBjYW4gZ28gaW50byBm cC9hbHRpdmVjIHJlZ2lzdGVycyB1bmRlcgotKyAgICAgVlNYLiAgKi8KLSsgIGlmIChUQVJHRVRf VlNYCi0rICAgICAgJiYgKHJlZ25vID09IC0xIHx8IFZTWF9SRUdOT19QIChyZWdubykpCi0rICAg ICAgJiYgVlNYX1JFR19DTEFTU19QIChyY2xhc3MpKQotKyAgICByZXR1cm4gTk9fUkVHUzsKLSsK LSAgIC8qIE1lbW9yeSwgYW5kIEFsdGlWZWMgcmVnaXN0ZXJzIGNhbiBnbyBpbnRvIEFsdGlWZWMg cmVnaXN0ZXJzLiAgKi8KLSAgIGlmICgocmVnbm8gPT0gLTEgfHwgQUxUSVZFQ19SRUdOT19QIChy ZWdubykpCi0gICAgICAgJiYgcmNsYXNzID09IEFMVElWRUNfUkVHUykKLUBAIC0xMTY3Niw2ICsx MjM2MCwyOCBAQCByczYwMDBfc2Vjb25kYXJ5X3JlbG9hZF9jbGFzcyAoZW51bSByZWdfCi0gICAv KiBPdGhlcndpc2UsIHdlIG5lZWQgR0VORVJBTF9SRUdTLiAgKi8KLSAgIHJldHVybiBHRU5FUkFM X1JFR1M7Ci0gfQotKwotKy8qIFJldHVybiBub256ZXJvIGlmIGZvciBDTEFTUyBhIG1vZGUgY2hh bmdlIGZyb20gRlJPTSB0byBUTyBpcyBpbnZhbGlkLiAgKi8KLSsKLStib29sCi0rcnM2MDAwX2Nh bm5vdF9jaGFuZ2VfbW9kZV9jbGFzcyAoZW51bSBtYWNoaW5lX21vZGUgZnJvbSwKLSsJCQkJIGVu dW0gbWFjaGluZV9tb2RlIHRvLAotKwkJCQkgZW51bSByZWdfY2xhc3MgcmNsYXNzKQotK3sKLSsg IHJldHVybiAoR0VUX01PREVfU0laRSAoZnJvbSkgIT0gR0VUX01PREVfU0laRSAodG8pCi0rCSAg PyAoKEdFVF9NT0RFX1NJWkUgKGZyb20pIDwgOCB8fCBHRVRfTU9ERV9TSVpFICh0bykgPCA4Ci0r CSAgICAgIHx8IFRBUkdFVF9JRUVFUVVBRCkKLSsJICAgICAmJiByZWdfY2xhc3Nlc19pbnRlcnNl Y3RfcCAoRkxPQVRfUkVHUywgcmNsYXNzKSkKLSsJICA6ICgoKFRBUkdFVF9FNTAwX0RPVUJMRQot KwkgICAgICAgJiYgKCgoKHRvKSA9PSBERm1vZGUpICsgKChmcm9tKSA9PSBERm1vZGUpKSA9PSAx Ci0rCQkgICB8fCAoKCh0bykgPT0gVEZtb2RlKSArICgoZnJvbSkgPT0gVEZtb2RlKSkgPT0gMQot KwkJICAgfHwgKCgodG8pID09IEREbW9kZSkgKyAoKGZyb20pID09IEREbW9kZSkpID09IDEKLSsJ CSAgIHx8ICgoKHRvKSA9PSBURG1vZGUpICsgKChmcm9tKSA9PSBURG1vZGUpKSA9PSAxCi0rCQkg ICB8fCAoKCh0bykgPT0gREltb2RlKSArICgoZnJvbSkgPT0gREltb2RlKSkgPT0gMSkpCi0rCSAg ICAgIHx8IChUQVJHRVRfU1BFCi0rCQkgICYmIChTUEVfVkVDVE9SX01PREUgKGZyb20pICsgU1BF X1ZFQ1RPUl9NT0RFICh0bykpID09IDEpKQotKwkgICAgICYmIHJlZ19jbGFzc2VzX2ludGVyc2Vj dF9wIChHRU5FUkFMX1JFR1MsIHJjbGFzcykpKTsKLSt9Ci0gDAotIC8qIEdpdmVuIGEgY29tcGFy aXNvbiBvcGVyYXRpb24sIHJldHVybiB0aGUgYml0IG51bWJlciBpbiBDQ1IgdG8gdGVzdC4gIFdl Ci0gICAga25vdyB0aGlzIGlzIGEgdmFsaWQgY29tcGFyaXNvbi4KLUBAIC0xMjQwNiw2ICsxMzEx MiwyNiBAQCBwcmludF9vcGVyYW5kIChGSUxFICpmaWxlLCBydHggeCwgaW50IGNvCi0gICAgICAg ZnByaW50ZiAoZmlsZSwgIiVkIiwgaSArIDEpOwotICAgICAgIHJldHVybjsKLSAKLSsgICAgY2Fz ZSAneCc6Ci0rICAgICAgLyogWCBpcyBhIEZQUiBvciBBbHRpdmVjIHJlZ2lzdGVyIHVzZWQgaW4g YSBWU1ggY29udGV4dC4gICovCi0rICAgICAgaWYgKEdFVF9DT0RFICh4KSAhPSBSRUcgfHwgIVZT WF9SRUdOT19QIChSRUdOTyAoeCkpKQotKwlvdXRwdXRfb3BlcmFuZF9sb3NzYWdlICgiaW52YWxp ZCAlJXggdmFsdWUiKTsKLSsgICAgICBlbHNlCi0rCXsKLSsJICBpbnQgcmVnID0gUkVHTk8gKHgp OwotKwkgIGludCB2c3hfcmVnID0gKEZQX1JFR05PX1AgKHJlZykKLSsJCQkgPyByZWcgLSAzMgot KwkJCSA6IHJlZyAtIEZJUlNUX0FMVElWRUNfUkVHTk8gKyAzMik7Ci0rCi0rI2lmZGVmIFRBUkdF VF9SRUdOQU1FUyAgICAgIAotKwkgIGlmIChUQVJHRVRfUkVHTkFNRVMpCi0rCSAgICBmcHJpbnRm IChmaWxlLCAiJSV2cyVkIiwgdnN4X3JlZyk7Ci0rCSAgZWxzZQotKyNlbmRpZgotKwkgICAgZnBy aW50ZiAoZmlsZSwgIiVkIiwgdnN4X3JlZyk7Ci0rCX0KLSsgICAgICByZXR1cm47Ci0rCi0gICAg IGNhc2UgJ1gnOgotICAgICAgIGlmIChHRVRfQ09ERSAoeCkgPT0gTUVNCi0gCSAgJiYgKGxlZ2l0 aW1hdGVfaW5kZXhlZF9hZGRyZXNzX3AgKFhFWFAgKHgsIDApLCAwKQotQEAgLTEyNTE4LDEzICsx MzI0NCwxNiBAQCBwcmludF9vcGVyYW5kIChGSUxFICpmaWxlLCBydHggeCwgaW50IGNvCi0gCi0g CSAgICAvKiBGYWxsIHRocm91Z2guICBNdXN0IGJlIFtyZWcrcmVnXS4gICovCi0gCSAgfQotLQlp ZiAoVEFSR0VUX0FMVElWRUMKLSsJaWYgKFZFQ1RPUl9NRU1fQUxUSVZFQ19QIChHRVRfTU9ERSAo eCkpCi0gCSAgICAmJiBHRVRfQ09ERSAodG1wKSA9PSBBTkQKLSAJICAgICYmIEdFVF9DT0RFIChY RVhQICh0bXAsIDEpKSA9PSBDT05TVF9JTlQKLSAJICAgICYmIElOVFZBTCAoWEVYUCAodG1wLCAx KSkgPT0gLTE2KQotIAkgIHRtcCA9IFhFWFAgKHRtcCwgMCk7Ci0rCWVsc2UgaWYgKFZFQ1RPUl9N RU1fVlNYX1AgKEdFVF9NT0RFICh4KSkKLSsJCSAmJiBHRVRfQ09ERSAodG1wKSA9PSBQUkVfTU9E SUZZKQotKwkgIHRtcCA9IFhFWFAgKHRtcCwgMSk7Ci0gCWlmIChHRVRfQ09ERSAodG1wKSA9PSBS RUcpCi0tCSAgZnByaW50ZiAoZmlsZSwgIjAsJXMiLCByZWdfbmFtZXNbUkVHTk8gKHRtcCldKTsK LSsJICBmcHJpbnRmIChmaWxlLCAiJXMsJXMiLCByZWdfbmFtZXNbMF0sIHJlZ19uYW1lc1tSRUdO TyAodG1wKV0pOwotIAllbHNlCi0gCSAgewotIAkgICAgaWYgKCFHRVRfQ09ERSAodG1wKSA9PSBQ TFVTCi1AQCAtMTMyOTYsNTUgKzE0MDI1LDYyIEBAIG91dHB1dF9lNTAwX2ZsaXBfZ3RfYml0IChy dHggZHN0LCBydHggc3IKLSAgIHJldHVybiBzdHJpbmc7Ci0gfQotIAotLS8qIFJldHVybiBpbnNu IGluZGV4IGZvciB0aGUgdmVjdG9yIGNvbXBhcmUgaW5zdHJ1Y3Rpb24gZm9yIGdpdmVuIENPREUs Ci0tICAgYW5kIERFU1RfTU9ERSwgT1BfTU9ERS4gUmV0dXJuIElOU05fTk9UX0FWQUlMQUJMRSBp ZiB2YWxpZCBpbnNuIGlzCi0tICAgbm90IGF2YWlsYWJsZS4gICovCi0rLyogUmV0dXJuIGluc24g Zm9yIFZTWCBjb21wYXJpc29ucy4gICovCi0gCi0tc3RhdGljIGludAotLWdldF92ZWNfY21wX2lu c24gKGVudW0gcnR4X2NvZGUgY29kZSwKLS0JCSAgZW51bSBtYWNoaW5lX21vZGUgZGVzdF9tb2Rl LAotLQkJICBlbnVtIG1hY2hpbmVfbW9kZSBvcF9tb2RlKQotK3N0YXRpYyBydHgKLStyczYwMDBf ZW1pdF92ZWN0b3JfY29tcGFyZV92c3ggKGVudW0gcnR4X2NvZGUgY29kZSwKLSsJCQkJcnR4IG1h c2ssCi0rCQkJCXJ0eCBvcDAsCi0rCQkJCXJ0eCBvcDEpCi0gewotLSAgaWYgKCFUQVJHRVRfQUxU SVZFQykKLS0gICAgcmV0dXJuIElOU05fTk9UX0FWQUlMQUJMRTsKLS0KLSAgIHN3aXRjaCAoY29k ZSkKLSAgICAgewotKyAgICBkZWZhdWx0OgotKyAgICAgIGJyZWFrOwotKwotICAgICBjYXNlIEVR OgotLSAgICAgIGlmIChkZXN0X21vZGUgPT0gVjE2UUltb2RlICYmIG9wX21vZGUgPT0gVjE2UUlt b2RlKQotLQlyZXR1cm4gVU5TUEVDX1ZDTVBFUVVCOwotLSAgICAgIGlmIChkZXN0X21vZGUgPT0g VjhISW1vZGUgJiYgb3BfbW9kZSA9PSBWOEhJbW9kZSkKLS0JcmV0dXJuIFVOU1BFQ19WQ01QRVFV SDsKLS0gICAgICBpZiAoZGVzdF9tb2RlID09IFY0U0ltb2RlICYmIG9wX21vZGUgPT0gVjRTSW1v ZGUpCi0tCXJldHVybiBVTlNQRUNfVkNNUEVRVVc7Ci0tICAgICAgaWYgKGRlc3RfbW9kZSA9PSBW NFNJbW9kZSAmJiBvcF9tb2RlID09IFY0U0Ztb2RlKQotLQlyZXR1cm4gVU5TUEVDX1ZDTVBFUUZQ OwotKyAgICBjYXNlIEdUOgotKyAgICBjYXNlIEdFOgotKyAgICAgIGVtaXRfaW5zbiAoZ2VuX3J0 eF9TRVQgKFZPSURtb2RlLAotKwkJCSAgICAgIG1hc2ssCi0rCQkJICAgICAgZ2VuX3J0eF9mbXRf ZWUgKGNvZGUsIEdFVF9NT0RFIChtYXNrKSwKLSsJCQkJCSAgICAgIG9wMCwKLSsJCQkJCSAgICAg IG9wMSkpKTsKLSsgICAgICByZXR1cm4gbWFzazsKLSsgICAgfQotKwotKyAgcmV0dXJuIE5VTExf UlRYOwotK30KLSsKLSsvKiBSZXR1cm4gaW5zbiBmb3IgQWx0aXZlYyBjb21wYXJpc29ucy4gICov Ci0rCi0rc3RhdGljIHJ0eAotK3JzNjAwMF9lbWl0X3ZlY3Rvcl9jb21wYXJlX2FsdGl2ZWMgKGVu dW0gcnR4X2NvZGUgY29kZSwKLSsJCQkJICAgIHJ0eCBtYXNrLAotKwkJCQkgICAgcnR4IG9wMCwK LSsJCQkJICAgIHJ0eCBvcDEpCi0rewotKyAgc3dpdGNoIChjb2RlKQotKyAgICB7Ci0rICAgIGRl ZmF1bHQ6Ci0gICAgICAgYnJlYWs7Ci0rCi0gICAgIGNhc2UgR0U6Ci0tICAgICAgaWYgKGRlc3Rf bW9kZSA9PSBWNFNJbW9kZSAmJiBvcF9tb2RlID09IFY0U0Ztb2RlKQotLQlyZXR1cm4gVU5TUEVD X1ZDTVBHRUZQOwotKyAgICAgIGlmIChHRVRfTU9ERSAobWFzaykgIT0gVjRTRm1vZGUpCi0rCXJl dHVybiBOVUxMX1JUWDsKLSsgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSsgICAgY2FzZSBFUToK LSAgICAgY2FzZSBHVDoKLS0gICAgICBpZiAoZGVzdF9tb2RlID09IFYxNlFJbW9kZSAmJiBvcF9t b2RlID09IFYxNlFJbW9kZSkKLS0JcmV0dXJuIFVOU1BFQ19WQ01QR1RTQjsKLS0gICAgICBpZiAo ZGVzdF9tb2RlID09IFY4SEltb2RlICYmIG9wX21vZGUgPT0gVjhISW1vZGUpCi0tCXJldHVybiBV TlNQRUNfVkNNUEdUU0g7Ci0tICAgICAgaWYgKGRlc3RfbW9kZSA9PSBWNFNJbW9kZSAmJiBvcF9t b2RlID09IFY0U0ltb2RlKQotLQlyZXR1cm4gVU5TUEVDX1ZDTVBHVFNXOwotLSAgICAgIGlmIChk ZXN0X21vZGUgPT0gVjRTSW1vZGUgJiYgb3BfbW9kZSA9PSBWNFNGbW9kZSkKLS0JcmV0dXJuIFVO U1BFQ19WQ01QR1RGUDsKLS0gICAgICBicmVhazsKLSAgICAgY2FzZSBHVFU6Ci0tICAgICAgaWYg KGRlc3RfbW9kZSA9PSBWMTZRSW1vZGUgJiYgb3BfbW9kZSA9PSBWMTZRSW1vZGUpCi0tCXJldHVy biBVTlNQRUNfVkNNUEdUVUI7Ci0tICAgICAgaWYgKGRlc3RfbW9kZSA9PSBWOEhJbW9kZSAmJiBv cF9tb2RlID09IFY4SEltb2RlKQotLQlyZXR1cm4gVU5TUEVDX1ZDTVBHVFVIOwotLSAgICAgIGlm IChkZXN0X21vZGUgPT0gVjRTSW1vZGUgJiYgb3BfbW9kZSA9PSBWNFNJbW9kZSkKLS0JcmV0dXJu IFVOU1BFQ19WQ01QR1RVVzsKLS0gICAgICBicmVhazsKLS0gICAgZGVmYXVsdDoKLS0gICAgICBi cmVhazsKLSsgICAgICBlbWl0X2luc24gKGdlbl9ydHhfU0VUIChWT0lEbW9kZSwKLSsJCQkgICAg ICBtYXNrLAotKwkJCSAgICAgIGdlbl9ydHhfZm10X2VlIChjb2RlLCBHRVRfTU9ERSAobWFzayks Ci0rCQkJCQkgICAgICBvcDAsCi0rCQkJCQkgICAgICBvcDEpKSk7Ci0rICAgICAgcmV0dXJuIG1h c2s7Ci0gICAgIH0KLS0gIHJldHVybiBJTlNOX05PVF9BVkFJTEFCTEU7Ci0rCi0rICByZXR1cm4g TlVMTF9SVFg7Ci0gfQotIAotIC8qIEVtaXQgdmVjdG9yIGNvbXBhcmUgZm9yIG9wZXJhbmRzIE9Q MCBhbmQgT1AxIHVzaW5nIGNvZGUgUkNPREUuCi1AQCAtMTMzNTUsMTI5ICsxNDA5MSwxMTEgQEAg cnM2MDAwX2VtaXRfdmVjdG9yX2NvbXBhcmUgKGVudW0gcnR4X2NvZAotIAkJCSAgICBydHggb3Aw LCBydHggb3AxLAotIAkJCSAgICBlbnVtIG1hY2hpbmVfbW9kZSBkbW9kZSkKLSB7Ci0tICBpbnQg dmVjX2NtcF9pbnNuOwotICAgcnR4IG1hc2s7Ci0tICBlbnVtIG1hY2hpbmVfbW9kZSBkZXN0X21v ZGU7Ci0tICBlbnVtIG1hY2hpbmVfbW9kZSBvcF9tb2RlID0gR0VUX01PREUgKG9wMSk7Ci0rICBi b29sIHN3YXBfb3BlcmFuZHMgPSBmYWxzZTsKLSsgIGJvb2wgdHJ5X2FnYWluID0gZmFsc2U7Ci0g Ci0tICBnY2NfYXNzZXJ0IChUQVJHRVRfQUxUSVZFQyk7Ci0rICBnY2NfYXNzZXJ0IChUQVJHRVRf QUxUSVZFQyB8fCBUQVJHRVRfVlNYKTsKLSAgIGdjY19hc3NlcnQgKEdFVF9NT0RFIChvcDApID09 IEdFVF9NT0RFIChvcDEpKTsKLSAKLS0gIC8qIEZsb2F0aW5nIHBvaW50IHZlY3RvciBjb21wYXJl IGluc3RydWN0aW9ucyB1c2VzIGRlc3RpbmF0aW9uIFY0U0ltb2RlLgotLSAgICAgTW92ZSBkZXN0 aW5hdGlvbiB0byBhcHByb3ByaWF0ZSBtb2RlIGxhdGVyLiAgKi8KLS0gIGlmIChkbW9kZSA9PSBW NFNGbW9kZSkKLS0gICAgZGVzdF9tb2RlID0gVjRTSW1vZGU7Ci0tICBlbHNlCi0tICAgIGRlc3Rf bW9kZSA9IGRtb2RlOwotKyAgbWFzayA9IGdlbl9yZWdfcnR4IChkbW9kZSk7Ci0gCi0tICBtYXNr ID0gZ2VuX3JlZ19ydHggKGRlc3RfbW9kZSk7Ci0tICB2ZWNfY21wX2luc24gPSBnZXRfdmVjX2Nt cF9pbnNuIChyY29kZSwgZGVzdF9tb2RlLCBvcF9tb2RlKTsKLSsgIC8qIFRyeSBmb3IgVlNYIGJl Zm9yZSBBbHRpdmVjLiAgKi8KLSsgIGlmIChUQVJHRVRfVlNYICYmIFZTWF9WRUNUT1JfTU9ERSAo ZG1vZGUpKQotKyAgICB7Ci0rICAgICAgcnR4IHZzeCA9IHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb21w YXJlX3ZzeCAocmNvZGUsIG1hc2ssIG9wMCwgb3AxKTsKLSsgICAgICBpZiAodnN4KQotKwlyZXR1 cm4gdnN4OwotKyAgICB9Ci0rICBlbHNlIGlmIChUQVJHRVRfQUxUSVZFQyAmJiBBTFRJVkVDX1ZF Q1RPUl9NT0RFIChkbW9kZSkpCi0rICAgIHsKLSsgICAgICBydHggYXYgPSByczYwMDBfZW1pdF92 ZWN0b3JfY29tcGFyZV9hbHRpdmVjIChyY29kZSwgbWFzaywgb3AwLCBvcDEpOwotKyAgICAgIGlm IChhdikKLSsJcmV0dXJuIGF2OwotKyAgICB9Ci0gCi0tICBpZiAodmVjX2NtcF9pbnNuID09IElO U05fTk9UX0FWQUlMQUJMRSkKLSsgIHN3aXRjaCAocmNvZGUpCi0gICAgIHsKLS0gICAgICBib29s IHN3YXBfb3BlcmFuZHMgPSBmYWxzZTsKLS0gICAgICBib29sIHRyeV9hZ2FpbiA9IGZhbHNlOwot LSAgICAgIHN3aXRjaCAocmNvZGUpCi0tCXsKLS0JY2FzZSBMVDoKLS0JICByY29kZSA9IEdUOwot LQkgIHN3YXBfb3BlcmFuZHMgPSB0cnVlOwotLQkgIHRyeV9hZ2FpbiA9IHRydWU7Ci0tCSAgYnJl YWs7Ci0tCWNhc2UgTFRVOgotLQkgIHJjb2RlID0gR1RVOwotLQkgIHN3YXBfb3BlcmFuZHMgPSB0 cnVlOwotLQkgIHRyeV9hZ2FpbiA9IHRydWU7Ci0tCSAgYnJlYWs7Ci0tCWNhc2UgTkU6Ci0tCWNh c2UgVU5MRToKLS0JY2FzZSBVTkxUOgotLQljYXNlIFVOR0U6Ci0tCWNhc2UgVU5HVDoKLS0JICAv KiBJbnZlcnQgY29uZGl0aW9uIGFuZCB0cnkgYWdhaW4uCi0tCSAgICAgZS5nLiwgQSAhPSBCIGJl Y29tZXMgfihBPT1CKS4gICovCi0tCSAgewotLQkgICAgZW51bSBydHhfY29kZSByZXZfY29kZTsK LS0JICAgIGVudW0gaW5zbl9jb2RlIG5vcl9jb2RlOwotLQkgICAgcnR4IGVxX3J0eDsKLS0KLS0J ICAgIHJldl9jb2RlID0gcmV2ZXJzZV9jb25kaXRpb25fbWF5YmVfdW5vcmRlcmVkIChyY29kZSk7 Ci0tCSAgICBlcV9ydHggPSByczYwMDBfZW1pdF92ZWN0b3JfY29tcGFyZSAocmV2X2NvZGUsIG9w MCwgb3AxLAotLQkJCQkJCSBkZXN0X21vZGUpOwotLQotLQkgICAgbm9yX2NvZGUgPSBvcHRhYl9o YW5kbGVyIChvbmVfY21wbF9vcHRhYiwgKGludClkZXN0X21vZGUpLT5pbnNuX2NvZGU7Ci0tCSAg ICBnY2NfYXNzZXJ0IChub3JfY29kZSAhPSBDT0RFX0ZPUl9ub3RoaW5nKTsKLS0JICAgIGVtaXRf aW5zbiAoR0VOX0ZDTiAobm9yX2NvZGUpIChtYXNrLCBlcV9ydHgpKTsKLSsgICAgY2FzZSBMVDoK LSsgICAgICByY29kZSA9IEdUOwotKyAgICAgIHN3YXBfb3BlcmFuZHMgPSB0cnVlOwotKyAgICAg IHRyeV9hZ2FpbiA9IHRydWU7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgTFRVOgotKyAgICAg IHJjb2RlID0gR1RVOwotKyAgICAgIHN3YXBfb3BlcmFuZHMgPSB0cnVlOwotKyAgICAgIHRyeV9h Z2FpbiA9IHRydWU7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgTkU6Ci0rICAgIGNhc2UgVU5M RToKLSsgICAgY2FzZSBVTkxUOgotKyAgICBjYXNlIFVOR0U6Ci0rICAgIGNhc2UgVU5HVDoKLSsg ICAgICAvKiBJbnZlcnQgY29uZGl0aW9uIGFuZCB0cnkgYWdhaW4uCi0rCSBlLmcuLCBBICE9IEIg YmVjb21lcyB+KEE9PUIpLiAgKi8KLSsgICAgICB7Ci0rCWVudW0gcnR4X2NvZGUgcmV2X2NvZGU7 Ci0rCWVudW0gaW5zbl9jb2RlIG5vcl9jb2RlOwotKwlydHggZXFfcnR4OwotKwotKwlyZXZfY29k ZSA9IHJldmVyc2VfY29uZGl0aW9uX21heWJlX3Vub3JkZXJlZCAocmNvZGUpOwotKwllcV9ydHgg PSByczYwMDBfZW1pdF92ZWN0b3JfY29tcGFyZSAocmV2X2NvZGUsIG9wMCwgb3AxLCBkbW9kZSk7 Ci0rCi0rCW5vcl9jb2RlID0gb3B0YWJfaGFuZGxlciAob25lX2NtcGxfb3B0YWIsIChpbnQpZG1v ZGUpLT5pbnNuX2NvZGU7Ci0rCWdjY19hc3NlcnQgKG5vcl9jb2RlICE9IENPREVfRk9SX25vdGhp bmcpOwotKwllbWl0X2luc24gKEdFTl9GQ04gKG5vcl9jb2RlKSAobWFzaywgZXFfcnR4KSk7Ci0r CXJldHVybiBtYXNrOwotKyAgICAgIH0KLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBHRToKLSsg ICAgY2FzZSBHRVU6Ci0rICAgIGNhc2UgTEU6Ci0rICAgIGNhc2UgTEVVOgotKyAgICAgIC8qIFRy eSBHVC9HVFUvTFQvTFRVIE9SIEVRICovCi0rICAgICAgewotKwlydHggY19ydHgsIGVxX3J0eDsK LSsJZW51bSBpbnNuX2NvZGUgaW9yX2NvZGU7Ci0rCWVudW0gcnR4X2NvZGUgbmV3X2NvZGU7Ci0g Ci0tCSAgICBpZiAoZG1vZGUgIT0gZGVzdF9tb2RlKQotLQkgICAgICB7Ci0tCQlydHggdGVtcCA9 IGdlbl9yZWdfcnR4IChkZXN0X21vZGUpOwotLQkJY29udmVydF9tb3ZlICh0ZW1wLCBtYXNrLCAw KTsKLS0JCXJldHVybiB0ZW1wOwotLQkgICAgICB9Ci0tCSAgICByZXR1cm4gbWFzazsKLS0JICB9 Ci0tCSAgYnJlYWs7Ci0tCWNhc2UgR0U6Ci0tCWNhc2UgR0VVOgotLQljYXNlIExFOgotLQljYXNl IExFVToKLS0JICAvKiBUcnkgR1QvR1RVL0xUL0xUVSBPUiBFUSAqLwotKwlzd2l0Y2ggKHJjb2Rl KQotIAkgIHsKLS0JICAgIHJ0eCBjX3J0eCwgZXFfcnR4OwotLQkgICAgZW51bSBpbnNuX2NvZGUg aW9yX2NvZGU7Ci0tCSAgICBlbnVtIHJ0eF9jb2RlIG5ld19jb2RlOwotLQotLQkgICAgc3dpdGNo IChyY29kZSkKLS0JICAgICAgewotLQkgICAgICBjYXNlICBHRToKLS0JCW5ld19jb2RlID0gR1Q7 Ci0tCQlicmVhazsKLS0KLS0JICAgICAgY2FzZSBHRVU6Ci0tCQluZXdfY29kZSA9IEdUVTsKLS0J CWJyZWFrOwotKwkgIGNhc2UgIEdFOgotKwkgICAgbmV3X2NvZGUgPSBHVDsKLSsJICAgIGJyZWFr OwotIAotLQkgICAgICBjYXNlIExFOgotLQkJbmV3X2NvZGUgPSBMVDsKLS0JCWJyZWFrOwotKwkg IGNhc2UgR0VVOgotKwkgICAgbmV3X2NvZGUgPSBHVFU7Ci0rCSAgICBicmVhazsKLSAKLS0JICAg ICAgY2FzZSBMRVU6Ci0tCQluZXdfY29kZSA9IExUVTsKLS0JCWJyZWFrOwotKwkgIGNhc2UgTEU6 Ci0rCSAgICBuZXdfY29kZSA9IExUOwotKwkgICAgYnJlYWs7Ci0gCi0tCSAgICAgIGRlZmF1bHQ6 Ci0tCQlnY2NfdW5yZWFjaGFibGUgKCk7Ci0tCSAgICAgIH0KLSsJICBjYXNlIExFVToKLSsJICAg IG5ld19jb2RlID0gTFRVOwotKwkgICAgYnJlYWs7Ci0gCi0tCSAgICBjX3J0eCA9IHJzNjAwMF9l bWl0X3ZlY3Rvcl9jb21wYXJlIChuZXdfY29kZSwKLS0JCQkJCQlvcDAsIG9wMSwgZGVzdF9tb2Rl KTsKLS0JICAgIGVxX3J0eCA9IHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb21wYXJlIChFUSwgb3AwLCBv cDEsCi0tCQkJCQkJIGRlc3RfbW9kZSk7Ci0tCi0tCSAgICBpb3JfY29kZSA9IG9wdGFiX2hhbmRs ZXIgKGlvcl9vcHRhYiwgKGludClkZXN0X21vZGUpLT5pbnNuX2NvZGU7Ci0tCSAgICBnY2NfYXNz ZXJ0IChpb3JfY29kZSAhPSBDT0RFX0ZPUl9ub3RoaW5nKTsKLS0JICAgIGVtaXRfaW5zbiAoR0VO X0ZDTiAoaW9yX2NvZGUpIChtYXNrLCBjX3J0eCwgZXFfcnR4KSk7Ci0tCSAgICBpZiAoZG1vZGUg IT0gZGVzdF9tb2RlKQotLQkgICAgICB7Ci0tCQlydHggdGVtcCA9IGdlbl9yZWdfcnR4IChkZXN0 X21vZGUpOwotLQkJY29udmVydF9tb3ZlICh0ZW1wLCBtYXNrLCAwKTsKLS0JCXJldHVybiB0ZW1w OwotLQkgICAgICB9Ci0tCSAgICByZXR1cm4gbWFzazsKLSsJICBkZWZhdWx0OgotKwkgICAgZ2Nj X3VucmVhY2hhYmxlICgpOwotIAkgIH0KLS0JICBicmVhazsKLS0JZGVmYXVsdDoKLS0JICBnY2Nf dW5yZWFjaGFibGUgKCk7Ci0tCX0KLSAKLS0gICAgICBpZiAodHJ5X2FnYWluKQotLQl7Ci0tCSAg dmVjX2NtcF9pbnNuID0gZ2V0X3ZlY19jbXBfaW5zbiAocmNvZGUsIGRlc3RfbW9kZSwgb3BfbW9k ZSk7Ci0tCSAgLyogWW91IG9ubHkgZ2V0IHR3byBjaGFuY2VzLiAgKi8KLS0JICBnY2NfYXNzZXJ0 ICh2ZWNfY21wX2luc24gIT0gSU5TTl9OT1RfQVZBSUxBQkxFKTsKLS0JfQotKwljX3J0eCA9IHJz NjAwMF9lbWl0X3ZlY3Rvcl9jb21wYXJlIChuZXdfY29kZSwKLSsJCQkJCSAgICBvcDAsIG9wMSwg ZG1vZGUpOwotKwllcV9ydHggPSByczYwMDBfZW1pdF92ZWN0b3JfY29tcGFyZSAoRVEsIG9wMCwg b3AxLAotKwkJCQkJICAgICBkbW9kZSk7Ci0rCi0rCWlvcl9jb2RlID0gb3B0YWJfaGFuZGxlciAo aW9yX29wdGFiLCAoaW50KWRtb2RlKS0+aW5zbl9jb2RlOwotKwlnY2NfYXNzZXJ0IChpb3JfY29k ZSAhPSBDT0RFX0ZPUl9ub3RoaW5nKTsKLSsJZW1pdF9pbnNuIChHRU5fRkNOIChpb3JfY29kZSkg KG1hc2ssIGNfcnR4LCBlcV9ydHgpKTsKLSsJcmV0dXJuIG1hc2s7Ci0rICAgICAgfQotKyAgICAg IGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAgICAgIGdjY191bnJlYWNoYWJsZSAoKTsKLSsgICAg fQotIAotKyAgaWYgKHRyeV9hZ2FpbikKLSsgICAgewotICAgICAgIGlmIChzd2FwX29wZXJhbmRz KQotIAl7Ci0gCSAgcnR4IHRtcDsKLUBAIC0xMzQ4NSw2OSArMTQyMDMsMjMgQEAgcnM2MDAwX2Vt aXRfdmVjdG9yX2NvbXBhcmUgKGVudW0gcnR4X2NvZAotIAkgIG9wMCA9IG9wMTsKLSAJICBvcDEg PSB0bXA7Ci0gCX0KLS0gICAgfQotLQotLSAgZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAoVk9JRG1v ZGUsIG1hc2ssCi0tCQkJICBnZW5fcnR4X1VOU1BFQyAoZGVzdF9tb2RlLAotLQkJCQkJICBnZW5f cnR2ZWMgKDIsIG9wMCwgb3AxKSwKLS0JCQkJCSAgdmVjX2NtcF9pbnNuKSkpOwotLSAgaWYgKGRt b2RlICE9IGRlc3RfbW9kZSkKLS0gICAgewotLSAgICAgIHJ0eCB0ZW1wID0gZ2VuX3JlZ19ydHgg KGRlc3RfbW9kZSk7Ci0tICAgICAgY29udmVydF9tb3ZlICh0ZW1wLCBtYXNrLCAwKTsKLS0gICAg ICByZXR1cm4gdGVtcDsKLS0gICAgfQotLSAgcmV0dXJuIG1hc2s7Ci0tfQotLQotLS8qIFJldHVy biB2ZWN0b3Igc2VsZWN0IGluc3RydWN0aW9uIGZvciBNT0RFLiBSZXR1cm4gSU5TTl9OT1RfQVZB SUxBQkxFLCBpZgotLSAgIHZhbGlkIGluc24gZG9lc24gZXhpc3QgZm9yIGdpdmVuIG1vZGUuICAq LwotIAotLXN0YXRpYyBpbnQKLS1nZXRfdnNlbF9pbnNuIChlbnVtIG1hY2hpbmVfbW9kZSBtb2Rl KQotLXsKLS0gIHN3aXRjaCAobW9kZSkKLS0gICAgewotLSAgICBjYXNlIFY0U0ltb2RlOgotLSAg ICAgIHJldHVybiBVTlNQRUNfVlNFTDRTSTsKLS0gICAgICBicmVhazsKLS0gICAgY2FzZSBWNFNG bW9kZToKLS0gICAgICByZXR1cm4gVU5TUEVDX1ZTRUw0U0Y7Ci0tICAgICAgYnJlYWs7Ci0tICAg IGNhc2UgVjhISW1vZGU6Ci0tICAgICAgcmV0dXJuIFVOU1BFQ19WU0VMOEhJOwotLSAgICAgIGJy ZWFrOwotLSAgICBjYXNlIFYxNlFJbW9kZToKLS0gICAgICByZXR1cm4gVU5TUEVDX1ZTRUwxNlFJ OwotLSAgICAgIGJyZWFrOwotLSAgICBkZWZhdWx0OgotLSAgICAgIHJldHVybiBJTlNOX05PVF9B VkFJTEFCTEU7Ci0tICAgICAgYnJlYWs7Ci0rICAgICAgaWYgKFRBUkdFVF9WU1ggJiYgVlNYX1ZF Q1RPUl9NT0RFIChkbW9kZSkpCi0rCXsKLSsJICBydHggdnN4ID0gcnM2MDAwX2VtaXRfdmVjdG9y X2NvbXBhcmVfdnN4IChyY29kZSwgbWFzaywgb3AwLCBvcDEpOwotKwkgIGlmICh2c3gpCi0rCSAg ICByZXR1cm4gdnN4OwotKwl9Ci0rICAgICAgZWxzZSBpZiAoVEFSR0VUX0FMVElWRUMgJiYgQUxU SVZFQ19WRUNUT1JfTU9ERSAoZG1vZGUpKQotKwl7Ci0rCSAgcnR4IGF2ID0gcnM2MDAwX2VtaXRf dmVjdG9yX2NvbXBhcmVfYWx0aXZlYyAocmNvZGUsIG1hc2ssIG9wMCwgb3AxKTsKLSsJICBpZiAo YXYpCi0rCSAgICByZXR1cm4gYXY7Ci0rCX0KLSAgICAgfQotLSAgcmV0dXJuIElOU05fTk9UX0FW QUlMQUJMRTsKLS19Ci0tCi0tLyogRW1pdCB2ZWN0b3Igc2VsZWN0IGluc24gd2hlcmUgREVTVCBp cyBkZXN0aW5hdGlvbiB1c2luZwotLSAgIG9wZXJhbmRzIE9QMSwgT1AyIGFuZCBNQVNLLiAgKi8K LS0KLS1zdGF0aWMgdm9pZAotLXJzNjAwMF9lbWl0X3ZlY3Rvcl9zZWxlY3QgKHJ0eCBkZXN0LCBy dHggb3AxLCBydHggb3AyLCBydHggbWFzaykKLS17Ci0tICBydHggdCwgdGVtcDsKLS0gIGVudW0g bWFjaGluZV9tb2RlIGRlc3RfbW9kZSA9IEdFVF9NT0RFIChkZXN0KTsKLS0gIGludCB2c2VsX2lu c25faW5kZXggID0gZ2V0X3ZzZWxfaW5zbiAoR0VUX01PREUgKGRlc3QpKTsKLSAKLS0gIHRlbXAg PSBnZW5fcmVnX3J0eCAoZGVzdF9tb2RlKTsKLS0KLS0gIC8qIEZvciBlYWNoIHZlY3RvciBlbGVt ZW50LCBzZWxlY3Qgb3AxIHdoZW4gbWFzayBpcyAxIG90aGVyd2lzZQotLSAgICAgc2VsZWN0IG9w Mi4gICovCi0tICB0ID0gZ2VuX3J0eF9TRVQgKFZPSURtb2RlLCB0ZW1wLAotLQkJICAgZ2VuX3J0 eF9VTlNQRUMgKGRlc3RfbW9kZSwKLS0JCQkJICAgZ2VuX3J0dmVjICgzLCBvcDIsIG9wMSwgbWFz ayksCi0tCQkJCSAgIHZzZWxfaW5zbl9pbmRleCkpOwotLSAgZW1pdF9pbnNuICh0KTsKLS0gIGVt aXRfbW92ZV9pbnNuIChkZXN0LCB0ZW1wKTsKLS0gIHJldHVybjsKLSsgIC8qIFlvdSBvbmx5IGdl dCB0d28gY2hhbmNlcy4gICovCi0rICBnY2NfdW5yZWFjaGFibGUgKCk7Ci0gfQotIAotIC8qIEVt aXQgdmVjdG9yIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24uCi1AQCAtMTM1NjIsMTUgKzE0MjM0LDI5 IEBAIHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb25kX2V4cHIgKHJ0eCBkZXN0LCAKLSAgIGVudW0gcnR4 X2NvZGUgcmNvZGUgPSBHRVRfQ09ERSAoY29uZCk7Ci0gICBydHggbWFzazsKLSAKLS0gIGlmICgh VEFSR0VUX0FMVElWRUMpCi0rICBpZiAoIVRBUkdFVF9BTFRJVkVDICYmICFUQVJHRVRfVlNYKQot ICAgICByZXR1cm4gMDsKLSAKLSAgIC8qIEdldCB0aGUgdmVjdG9yIG1hc2sgZm9yIHRoZSBnaXZl biByZWxhdGlvbmFsIG9wZXJhdGlvbnMuICAqLwotICAgbWFzayA9IHJzNjAwMF9lbWl0X3ZlY3Rv cl9jb21wYXJlIChyY29kZSwgY2Nfb3AwLCBjY19vcDEsIGRlc3RfbW9kZSk7Ci0gCi0tICByczYw MDBfZW1pdF92ZWN0b3Jfc2VsZWN0IChkZXN0LCBvcDEsIG9wMiwgbWFzayk7Ci0rICBpZiAoIW1h c2spCi0rICAgIHJldHVybiAwOwotIAotLSAgcmV0dXJuIDE7Ci0rICBpZiAoKFRBUkdFVF9WU1gg JiYgVlNYX1ZFQ1RPUl9NT1ZFX01PREUgKGRlc3RfbW9kZSkpCi0rICAgICAgfHwgKFRBUkdFVF9B TFRJVkVDICYmIEFMVElWRUNfVkVDVE9SX01PREUgKGRlc3RfbW9kZSkpKQotKyAgICB7Ci0rICAg ICAgcnR4IGNvbmQyID0gZ2VuX3J0eF9mbXRfZWUgKE5FLCBWT0lEbW9kZSwgbWFzaywgY29uc3Qw X3J0eCk7Ci0rICAgICAgZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAoVk9JRG1vZGUsCi0rCQkJICAg ICAgZGVzdCwKLSsJCQkgICAgICBnZW5fcnR4X0lGX1RIRU5fRUxTRSAoZGVzdF9tb2RlLAotKwkJ CQkJCSAgICBjb25kMiwKLSsJCQkJCQkgICAgb3AxLAotKwkJCQkJCSAgICBvcDIpKSk7Ci0rICAg ICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsgIHJldHVybiAwOwotIH0KLSAKLSAvKiBFbWl0IGEg Y29uZGl0aW9uYWwgbW92ZTogbW92ZSBUUlVFX0NPTkQgdG8gREVTVCBpZiBPUCBvZiB0aGUKLUBA IC0xMzc2Niw4ICsxNDQ1Miw4IEBAIHJzNjAwMF9lbWl0X2ludF9jbW92ZSAocnR4IGRlc3QsIHJ0 eCBvcCwKLSB7Ci0gICBydHggY29uZGl0aW9uX3J0eCwgY3I7Ci0gCi0tICAvKiBBbGwgaXNlbCBp bXBsZW1lbnRhdGlvbnMgdGh1cyBmYXIgYXJlIDMyLWJpdHMuICAqLwotLSAgaWYgKEdFVF9NT0RF IChyczYwMDBfY29tcGFyZV9vcDApICE9IFNJbW9kZSkKLSsgIGlmIChHRVRfTU9ERSAocnM2MDAw X2NvbXBhcmVfb3AwKSAhPSBTSW1vZGUKLSsgICAgICAmJiAoIVRBUkdFVF9QT1dFUlBDNjQgfHwg R0VUX01PREUgKHJzNjAwMF9jb21wYXJlX29wMCkgIT0gREltb2RlKSkKLSAgICAgcmV0dXJuIDA7 Ci0gCi0gICAvKiBXZSBzdGlsbCBoYXZlIHRvIGRvIHRoZSBjb21wYXJlLCBiZWNhdXNlIGlzZWwg ZG9lc24ndCBkbyBhCi1AQCAtMTM3NzYsMTIgKzE0NDYyLDI0IEBAIHJzNjAwMF9lbWl0X2ludF9j bW92ZSAocnR4IGRlc3QsIHJ0eCBvcCwKLSAgIGNvbmRpdGlvbl9ydHggPSByczYwMDBfZ2VuZXJh dGVfY29tcGFyZSAoR0VUX0NPREUgKG9wKSk7Ci0gICBjciA9IFhFWFAgKGNvbmRpdGlvbl9ydHgs IDApOwotIAotLSAgaWYgKEdFVF9NT0RFIChjcikgPT0gQ0Ntb2RlKQotLSAgICBlbWl0X2luc24g KGdlbl9pc2VsX3NpZ25lZCAoZGVzdCwgY29uZGl0aW9uX3J0eCwKLS0JCQkJdHJ1ZV9jb25kLCBm YWxzZV9jb25kLCBjcikpOwotKyAgaWYgKEdFVF9NT0RFIChyczYwMDBfY29tcGFyZV9vcDApID09 IFNJbW9kZSkKLSsgICAgewotKyAgICAgIGlmIChHRVRfTU9ERSAoY3IpID09IENDbW9kZSkKLSsJ ZW1pdF9pbnNuIChnZW5faXNlbF9zaWduZWRfc2kgKGRlc3QsIGNvbmRpdGlvbl9ydHgsCi0rCQkJ CSAgICAgICB0cnVlX2NvbmQsIGZhbHNlX2NvbmQsIGNyKSk7Ci0rICAgICAgZWxzZQotKwllbWl0 X2luc24gKGdlbl9pc2VsX3Vuc2lnbmVkX3NpIChkZXN0LCBjb25kaXRpb25fcnR4LAotKwkJCQkJ IHRydWVfY29uZCwgZmFsc2VfY29uZCwgY3IpKTsKLSsgICAgfQotICAgZWxzZQotLSAgICBlbWl0 X2luc24gKGdlbl9pc2VsX3Vuc2lnbmVkIChkZXN0LCBjb25kaXRpb25fcnR4LAotLQkJCQkgIHRy dWVfY29uZCwgZmFsc2VfY29uZCwgY3IpKTsKLSsgICAgewotKyAgICAgIGlmIChHRVRfTU9ERSAo Y3IpID09IENDbW9kZSkKLSsJZW1pdF9pbnNuIChnZW5faXNlbF9zaWduZWRfZGkgKGRlc3QsIGNv bmRpdGlvbl9ydHgsCi0rCQkJCSAgICAgICB0cnVlX2NvbmQsIGZhbHNlX2NvbmQsIGNyKSk7Ci0r ICAgICAgZWxzZQotKwllbWl0X2luc24gKGdlbl9pc2VsX3Vuc2lnbmVkX2RpIChkZXN0LCBjb25k aXRpb25fcnR4LAotKwkJCQkJIHRydWVfY29uZCwgZmFsc2VfY29uZCwgY3IpKTsKLSsgICAgfQot IAotICAgcmV0dXJuIDE7Ci0gfQotQEAgLTEzODA4LDYgKzE0NTA2LDE1IEBAIHJzNjAwMF9lbWl0 X21pbm1heCAocnR4IGRlc3QsIGVudW0gcnR4X2MKLSAgIGVudW0gcnR4X2NvZGUgYzsKLSAgIHJ0 eCB0YXJnZXQ7Ci0gCi0rICAvKiBWU1gvYWx0aXZlYyBoYXZlIGRpcmVjdCBtaW4vbWF4IGluc25z LiAgKi8KLSsgIGlmICgoY29kZSA9PSBTTUFYIHx8IGNvZGUgPT0gU01JTikgJiYgVkVDVE9SX1VO SVRfQUxUSVZFQ19PUl9WU1hfUCAobW9kZSkpCi0rICAgIHsKLSsgICAgICBlbWl0X2luc24gKGdl bl9ydHhfU0VUIChWT0lEbW9kZSwKLSsJCQkgICAgICBkZXN0LAotKwkJCSAgICAgIGdlbl9ydHhf Zm10X2VlIChjb2RlLCBtb2RlLCBvcDAsIG9wMSkpKTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0K LSsKLSAgIGlmIChjb2RlID09IFNNQVggfHwgY29kZSA9PSBTTUlOKQotICAgICBjID0gR0U7Ci0g ICBlbHNlCi1AQCAtMTU3ODUsNiArMTY0OTIsNyBAQCBlbWl0X2ZyYW1lX3NhdmUgKHJ0eCBmcmFt ZV9yZWcsIHJ0eCBmcmFtCi0gCi0gICAvKiBTb21lIGNhc2VzIHRoYXQgbmVlZCByZWdpc3RlciBp bmRleGVkIGFkZHJlc3NpbmcuICAqLwotICAgaWYgKChUQVJHRVRfQUxUSVZFQ19BQkkgJiYgQUxU SVZFQ19WRUNUT1JfTU9ERSAobW9kZSkpCi0rICAgICAgfHwgKFRBUkdFVF9WU1ggJiYgVlNYX1ZF Q1RPUl9NT0RFIChtb2RlKSkKLSAgICAgICB8fCAoVEFSR0VUX0U1MDBfRE9VQkxFICYmIG1vZGUg PT0gREZtb2RlKQotICAgICAgIHx8IChUQVJHRVRfU1BFX0FCSQotIAkgICYmIFNQRV9WRUNUT1Jf TU9ERSAobW9kZSkKLUBAIC0xOTMyMCw2ICsyMDAyOCw3IEBAIHJzNjAwMF9pc3N1ZV9yYXRlICh2 b2lkKQotICAgY2FzZSBDUFVfUE9XRVI0OgotICAgY2FzZSBDUFVfUE9XRVI1OgotICAgY2FzZSBD UFVfUE9XRVI2OgotKyAgY2FzZSBDUFVfUE9XRVI3OgotICAgICByZXR1cm4gNTsKLSAgIGRlZmF1 bHQ6Ci0gICAgIHJldHVybiAxOwotQEAgLTE5OTIxLDYgKzIwNjMwLDQxIEBAIGluc25fbXVzdF9i ZV9maXJzdF9pbl9ncm91cCAocnR4IGluc24pCi0gICAgICAgICAgIGJyZWFrOwotICAgICAgICAg fQotICAgICAgIGJyZWFrOwotKyAgICBjYXNlIFBST0NFU1NPUl9QT1dFUjc6Ci0rICAgICAgdHlw ZSA9IGdldF9hdHRyX3R5cGUgKGluc24pOwotKwotKyAgICAgIHN3aXRjaCAodHlwZSkKLSsgICAg ICAgIHsKLSsgICAgICAgIGNhc2UgVFlQRV9DUl9MT0dJQ0FMOgotKyAgICAgICAgY2FzZSBUWVBF X01GQ1I6Ci0rICAgICAgICBjYXNlIFRZUEVfTUZDUkY6Ci0rICAgICAgICBjYXNlIFRZUEVfTVRD UjoKLSsgICAgICAgIGNhc2UgVFlQRV9JRElWOgotKyAgICAgICAgY2FzZSBUWVBFX0xESVY6Ci0r ICAgICAgICBjYXNlIFRZUEVfQ09NUEFSRToKLSsgICAgICAgIGNhc2UgVFlQRV9ERUxBWUVEX0NP TVBBUkU6Ci0rICAgICAgICBjYXNlIFRZUEVfVkFSX0RFTEFZRURfQ09NUEFSRToKLSsgICAgICAg IGNhc2UgVFlQRV9JU1lOQzoKLSsgICAgICAgIGNhc2UgVFlQRV9MT0FEX0w6Ci0rICAgICAgICBj YXNlIFRZUEVfU1RPUkVfQzoKLSsgICAgICAgIGNhc2UgVFlQRV9MT0FEX1U6Ci0rICAgICAgICBj YXNlIFRZUEVfTE9BRF9VWDoKLSsgICAgICAgIGNhc2UgVFlQRV9MT0FEX0VYVDoKLSsgICAgICAg IGNhc2UgVFlQRV9MT0FEX0VYVF9VOgotKyAgICAgICAgY2FzZSBUWVBFX0xPQURfRVhUX1VYOgot KyAgICAgICAgY2FzZSBUWVBFX1NUT1JFX1U6Ci0rICAgICAgICBjYXNlIFRZUEVfU1RPUkVfVVg6 Ci0rICAgICAgICBjYXNlIFRZUEVfRlBMT0FEX1U6Ci0rICAgICAgICBjYXNlIFRZUEVfRlBMT0FE X1VYOgotKyAgICAgICAgY2FzZSBUWVBFX0ZQU1RPUkVfVToKLSsgICAgICAgIGNhc2UgVFlQRV9G UFNUT1JFX1VYOgotKyAgICAgICAgY2FzZSBUWVBFX01GSk1QUjoKLSsgICAgICAgIGNhc2UgVFlQ RV9NVEpNUFI6Ci0rICAgICAgICAgIHJldHVybiB0cnVlOwotKyAgICAgICAgZGVmYXVsdDoKLSsg ICAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0gICAgIGRlZmF1bHQ6 Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLUBAIC0xOTk4Miw2ICsyMDcyNiwyMyBAQCBpbnNuX211 c3RfYmVfbGFzdF9pbl9ncm91cCAocnR4IGluc24pCi0gICAgICAgICBicmVhazsKLSAgICAgfQot ICAgICBicmVhazsKLSsgIGNhc2UgUFJPQ0VTU09SX1BPV0VSNzoKLSsgICAgdHlwZSA9IGdldF9h dHRyX3R5cGUgKGluc24pOwotKwotKyAgICBzd2l0Y2ggKHR5cGUpCi0rICAgICAgewotKyAgICAg IGNhc2UgVFlQRV9JU1lOQzoKLSsgICAgICBjYXNlIFRZUEVfU1lOQzoKLSsgICAgICBjYXNlIFRZ UEVfTE9BRF9MOgotKyAgICAgIGNhc2UgVFlQRV9TVE9SRV9DOgotKyAgICAgIGNhc2UgVFlQRV9M T0FEX0VYVF9VOgotKyAgICAgIGNhc2UgVFlQRV9MT0FEX0VYVF9VWDoKLSsgICAgICBjYXNlIFRZ UEVfU1RPUkVfVVg6Ci0rICAgICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgICBkZWZhdWx0OgotKyAg ICAgICAgYnJlYWs7Ci0rICAgIH0KLSsgICAgYnJlYWs7Ci0gICBkZWZhdWx0OgotICAgICBicmVh azsKLSAgIH0KLUBAIC0yMDU1NCw4ICsyMTMxNSw4IEBAIHJzNjAwMF9oYW5kbGVfYWx0aXZlY19h dHRyaWJ1dGUgKHRyZWUgKm4KLSAgIGVsc2UgaWYgKHR5cGUgPT0gbG9uZ19sb25nX3Vuc2lnbmVk X3R5cGVfbm9kZQotICAgICAgICAgICAgfHwgdHlwZSA9PSBsb25nX2xvbmdfaW50ZWdlcl90eXBl X25vZGUpCi0gICAgIGVycm9yICgidXNlIG9mICU8bG9uZyBsb25nJT4gaW4gQWx0aVZlYyB0eXBl cyBpcyBpbnZhbGlkIik7Ci0tICBlbHNlIGlmICh0eXBlID09IGRvdWJsZV90eXBlX25vZGUpCi0t ICAgIGVycm9yICgidXNlIG9mICU8ZG91YmxlJT4gaW4gQWx0aVZlYyB0eXBlcyBpcyBpbnZhbGlk Iik7Ci0rICBlbHNlIGlmICh0eXBlID09IGRvdWJsZV90eXBlX25vZGUgJiYgIVRBUkdFVF9WU1gp Ci0rICAgIGVycm9yICgidXNlIG9mICU8ZG91YmxlJT4gaW4gQWx0aVZlYyB0eXBlcyBpcyBpbnZh bGlkIHdpdGhvdXQgLW12c3giKTsKLSAgIGVsc2UgaWYgKHR5cGUgPT0gbG9uZ19kb3VibGVfdHlw ZV9ub2RlKQotICAgICBlcnJvciAoInVzZSBvZiAlPGxvbmcgZG91YmxlJT4gaW4gQWx0aVZlYyB0 eXBlcyBpcyBpbnZhbGlkIik7Ci0gICBlbHNlIGlmICh0eXBlID09IGJvb2xlYW5fdHlwZV9ub2Rl KQotQEAgLTIwNTgxLDYgKzIxMzQyLDcgQEAgcnM2MDAwX2hhbmRsZV9hbHRpdmVjX2F0dHJpYnV0 ZSAodHJlZSAqbgotIAkgIHJlc3VsdCA9ICh1bnNpZ25lZF9wID8gdW5zaWduZWRfVjE2UUlfdHlw ZV9ub2RlIDogVjE2UUlfdHlwZV9ub2RlKTsKLSAJICBicmVhazsKLSAJY2FzZSBTRm1vZGU6IHJl c3VsdCA9IFY0U0ZfdHlwZV9ub2RlOyBicmVhazsKLSsJY2FzZSBERm1vZGU6IHJlc3VsdCA9IFYy REZfdHlwZV9ub2RlOyBicmVhazsKLSAJICAvKiBJZiB0aGUgdXNlciBzYXlzICd2ZWN0b3IgaW50 IGJvb2wnLCB3ZSBtYXkgYmUgaGFuZGVkIHRoZSAnYm9vbCcKLSAJICAgICBhdHRyaWJ1dGUgX2Jl Zm9yZV8gdGhlICd2ZWN0b3InIGF0dHJpYnV0ZSwgYW5kIHNvIHNlbGVjdCB0aGUKLSAJICAgICBw cm9wZXIgdHlwZSBpbiB0aGUgJ2InIGNhc2UgYmVsb3cuICAqLwotQEAgLTIyMTE2LDcgKzIyODc4 LDcgQEAgcnM2MDAwX3JlZ2lzdGVyX21vdmVfY29zdCAoZW51bSBtYWNoaW5lXwotICAgICAgIGlm ICghIHJlZ19jbGFzc2VzX2ludGVyc2VjdF9wICh0bywgR0VORVJBTF9SRUdTKSkKLSAJZnJvbSA9 IHRvOwotIAotLSAgICAgIGlmIChmcm9tID09IEZMT0FUX1JFR1MgfHwgZnJvbSA9PSBBTFRJVkVD X1JFR1MpCi0rICAgICAgaWYgKGZyb20gPT0gRkxPQVRfUkVHUyB8fCBmcm9tID09IEFMVElWRUNf UkVHUyB8fCBmcm9tID09IFZTWF9SRUdTKQotIAlyZXR1cm4gKHJzNjAwMF9tZW1vcnlfbW92ZV9j b3N0IChtb2RlLCBmcm9tLCAwKQotIAkJKyByczYwMDBfbWVtb3J5X21vdmVfY29zdCAobW9kZSwg R0VORVJBTF9SRUdTLCAwKSk7Ci0gCi1AQCAtMjIxMzYsNiArMjI4OTgsMTIgQEAgcnM2MDAwX3Jl Z2lzdGVyX21vdmVfY29zdCAoZW51bSBtYWNoaW5lXwotIAlyZXR1cm4gMiAqIGhhcmRfcmVnbm9f bnJlZ3NbMF1bbW9kZV07Ci0gICAgIH0KLSAKLSsgIC8qIElmIHdlIGhhdmUgVlNYLCB3ZSBjYW4g ZWFzaWx5IG1vdmUgYmV0d2VlbiBGUFIgb3IgQWx0aXZlYyByZWdpc3RlcnMuICAqLwotKyAgZWxz ZSBpZiAoVEFSR0VUX1ZTWAotKwkgICAmJiAoKGZyb20gPT0gVlNYX1JFR1MgfHwgZnJvbSA9PSBG TE9BVF9SRUdTIHx8IGZyb20gPT0gQUxUSVZFQ19SRUdTKQotKwkgICAgICAgfHwgKHRvID09IFZT WF9SRUdTIHx8IHRvID09IEZMT0FUX1JFR1MgfHwgdG8gPT0gQUxUSVZFQ19SRUdTKSkpCi0rICAg IHJldHVybiAyOwotKwotICAgLyogTW92aW5nIGJldHdlZW4gdHdvIHNpbWlsYXIgcmVnaXN0ZXJz IGlzIGp1c3Qgb25lIGluc3RydWN0aW9uLiAgKi8KLSAgIGVsc2UgaWYgKHJlZ19jbGFzc2VzX2lu dGVyc2VjdF9wICh0bywgZnJvbSkpCi0gICAgIHJldHVybiAobW9kZSA9PSBURm1vZGUgfHwgbW9k ZSA9PSBURG1vZGUpID8gNCA6IDI7Ci1AQCAtMjIzNzYsOCArMjMxNDQsOCBAQCByczYwMDBfZW1p dF9zd3JzcXJ0c2YgKHJ0eCBkc3QsIHJ0eCBzcmMpCi0gICBlbWl0X2xhYmVsIChYRVhQIChsYWJl bCwgMCkpOwotIH0KLSAKLS0vKiBFbWl0IHBvcGNvdW50IGludHJpbnNpYyBvbiBUQVJHRVRfUE9Q Q05UQiB0YXJnZXRzLiAgRFNUIGlzIHRoZQotLSAgIHRhcmdldCwgYW5kIFNSQyBpcyB0aGUgYXJn dW1lbnQgb3BlcmFuZC4gICovCi0rLyogRW1pdCBwb3Bjb3VudCBpbnRyaW5zaWMgb24gVEFSR0VU X1BPUENOVEIgKFBvd2VyNSkgYW5kIFRBUkdFVF9QT1BDTlRECi0rICAgKFBvd2VyNykgdGFyZ2V0 cy4gIERTVCBpcyB0aGUgdGFyZ2V0LCBhbmQgU1JDIGlzIHRoZSBhcmd1bWVudCBvcGVyYW5kLiAg Ki8KLSAKLSB2b2lkCi0gcnM2MDAwX2VtaXRfcG9wY291bnQgKHJ0eCBkc3QsIHJ0eCBzcmMpCi1A QCAtMjIzODUsNiArMjMxNTMsMTYgQEAgcnM2MDAwX2VtaXRfcG9wY291bnQgKHJ0eCBkc3QsIHJ0 eCBzcmMpCi0gICBlbnVtIG1hY2hpbmVfbW9kZSBtb2RlID0gR0VUX01PREUgKGRzdCk7Ci0gICBy dHggdG1wMSwgdG1wMjsKLSAKLSsgIC8qIFVzZSB0aGUgUFBDIElTQSAyLjA2IHBvcGNudHt3LGR9 IGluc3RydWN0aW9uIGlmIHdlIGNhbi4gICovCi0rICBpZiAoVEFSR0VUX1BPUENOVEQpCi0rICAg IHsKLSsgICAgICBpZiAobW9kZSA9PSBTSW1vZGUpCi0rCWVtaXRfaW5zbiAoZ2VuX3BvcGNudHdz aTIgKGRzdCwgc3JjKSk7Ci0rICAgICAgZWxzZQotKwllbWl0X2luc24gKGdlbl9wb3BjbnRkZGky IChkc3QsIHNyYykpOwotKyAgICAgIHJldHVybjsKLSsgICAgfQotKwotICAgdG1wMSA9IGdlbl9y ZWdfcnR4IChtb2RlKTsKLSAKLSAgIGlmIChtb2RlID09IFNJbW9kZSkKLUBAIC0yMjc5Nyw3ICsy MzU3NSw3IEBAIHJzNjAwMF92ZWN0b3JfbW9kZV9zdXBwb3J0ZWRfcCAoZW51bSBtYWMKLSAgIGlm IChUQVJHRVRfU1BFICYmIFNQRV9WRUNUT1JfTU9ERSAobW9kZSkpCi0gICAgIHJldHVybiB0cnVl OwotIAotLSAgZWxzZSBpZiAoVEFSR0VUX0FMVElWRUMgJiYgQUxUSVZFQ19WRUNUT1JfTU9ERSAo bW9kZSkpCi0rICBlbHNlIGlmIChWRUNUT1JfVU5JVF9BTFRJVkVDX09SX1ZTWF9QIChtb2RlKSkK LSAgICAgcmV0dXJuIHRydWU7Ci0gCi0gICBlbHNlCi0tLS0gZ2NjL2NvbmZpZy9yczYwMDAvdnN4 Lm1kCSguLi4vdHJ1bmspCShyZXZpc2lvbiAwKQotKysrIGdjYy9jb25maWcvcnM2MDAwL3ZzeC5t ZAkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDQ2OTIpCi1A QCAtMCwwICsxLDg2NCBAQAotKzs7IFZTWCBwYXR0ZXJucy4KLSs7OyBDb3B5cmlnaHQgKEMpIDIw MDkKLSs7OyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSs7OyBDb250cmlidXRlZCBi eSBNaWNoYWVsIE1laXNzbmVyIDxtZWlzc25lckBsaW51eC52bmV0LmlibS5jb20+Ci0rCi0rOzsg VGhpcyBmaWxlIGlzIHBhcnQgb2YgR0NDLgotKwotKzs7IEdDQyBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rOzsgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSs7OyBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQg eW91cgotKzs7IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rOzsgR0NDIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCi0r OzsgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVS Q0hBTlRBQklMSVRZCi0rOzsgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotKzs7IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsKLSs7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKzs7IGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlO RzMuICBJZiBub3Qgc2VlCi0rOzsgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwot Kzs7IEl0ZXJhdG9yIGZvciB2ZWN0b3IgZmxvYXRpbmcgcG9pbnQgdHlwZXMgc3VwcG9ydGVkIGJ5 IFZTWAotKyhkZWZpbmVfbW9kZV9pdGVyYXRvciBWU1hfRiBbVjRTRiBWMkRGXSkKLSsKLSs7OyBJ dGVyYXRvciBmb3IgbG9naWNhbCB0eXBlcyBzdXBwb3J0ZWQgYnkgVlNYCi0rKGRlZmluZV9tb2Rl X2l0ZXJhdG9yIFZTWF9MIFtWMTZRSSBWOEhJIFY0U0kgVjJESSBWNFNGIFYyREYgVEldKQotKwot Kzs7IE1hcCBpbnRvIHRoZSBhcHByb3ByaWF0ZSBsb2FkL3N0b3JlIG5hbWUgYmFzZWQgb24gdGhl IHR5cGUKLSsoZGVmaW5lX21vZGVfYXR0ciBWU20gIFsoVjE2UUkgInZ3NCIpCi0rCQkJKFY4SEkg ICJ2dzQiKQotKwkJCShWNFNJICAidnc0IikKLSsJCQkoVjRTRiAgInZ3NCIpCi0rCQkJKFYyREYg ICJ2ZDIiKQotKwkJCShWMkRJICAidmQyIikKLSsJCQkoVEkgICAgInZ3NCIpXSkKLSsKLSs7OyBN YXAgaW50byB0aGUgYXBwcm9wcmlhdGUgc3VmZml4IGJhc2VkIG9uIHRoZSB0eXBlCi0rKGRlZmlu ZV9tb2RlX2F0dHIgVlNzCVsoVjE2UUkgInNwIikKLSsJCQkgKFY4SEkgICJzcCIpCi0rCQkJIChW NFNJICAic3AiKQotKwkJCSAoVjRTRiAgInNwIikKLSsJCQkgKFYyREYgICJkcCIpCi0rCQkJIChW MkRJICAiZHAiKQotKwkJCSAoVEkgICAgInNwIildKQotKwotKzs7IE1hcCBpbnRvIHRoZSByZWdp c3RlciBjbGFzcyB1c2VkCi0rKGRlZmluZV9tb2RlX2F0dHIgVlNyCVsoVjE2UUkgInYiKQotKwkJ CSAoVjhISSAgInYiKQotKwkJCSAoVjRTSSAgInYiKQotKwkJCSAoVjRTRiAgIndmIikKLSsJCQkg KFYyREkgICJ3ZCIpCi0rCQkJIChWMkRGICAid2QiKQotKwkJCSAoVEkgICAgIndkIildKQotKwot Kzs7IFNhbWUgc2l6ZSBpbnRlZ2VyIHR5cGUgZm9yIGZsb2F0aW5nIHBvaW50IGRhdGEKLSsoZGVm aW5lX21vZGVfYXR0ciBWU2kgWyhWNFNGICAidjRzaSIpCi0rCQkgICAgICAgKFYyREYgICJ2MmRp IildKQotKwotKyhkZWZpbmVfbW9kZV9hdHRyIFZTSSBbKFY0U0YgICJWNFNJIikKLSsJCSAgICAg ICAoVjJERiAgIlYyREkiKV0pCi0rCi0rOzsgV29yZCBzaXplIGZvciBzYW1lIHNpemUgY29udmVy c2lvbgotKyhkZWZpbmVfbW9kZV9hdHRyIFZTYyBbKFY0U0YgInciKQotKwkJICAgICAgIChWMkRG ICJkIildKQotKwotKzs7IEJpdHNpemUgZm9yIERGIGxvYWQgd2l0aCB1cGRhdGUKLSsoZGVmaW5l X21vZGVfYXR0ciBWU2JpdCBbKFNJICIzMiIpCi0rCQkJIChESSAiNjQiKV0pCi0rCi0rKGRlZmlu ZV9jb25zdGFudHMKLSsgIFsoVU5TUEVDX1ZTWF9DT05DQVRfVjJERgk1MDApXSkKLSsKLSs7OyBW U1ggbW92ZXMKLSsoZGVmaW5lX2luc24gIip2c3hfbW92PG1vZGU+IgotKyAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6VlNYX0wgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICI9Wiw8VlNyPiw8VlNyPiw/ Wiw/d2EsP3dhLCpvLCpyLCpyLDxWU3I+LD93YSx2IikKLSsJKG1hdGNoX29wZXJhbmQ6VlNYX0wg MSAiaW5wdXRfb3BlcmFuZCIgIjxWU3I+LFosPFZTcj4sd2EsWix3YSxyLG8scixqLGosVyIpKV0K LSsgICJWRUNUT1JfTUVNX1ZTWF9QICg8TU9ERT5tb2RlKQotKyAgICYmIChyZWdpc3Rlcl9vcGVy YW5kIChvcGVyYW5kc1swXSwgPE1PREU+bW9kZSkgCi0rICAgICAgIHx8IHJlZ2lzdGVyX29wZXJh bmQgKG9wZXJhbmRzWzFdLCA8TU9ERT5tb2RlKSkiCi0rewotKyAgc3dpdGNoICh3aGljaF9hbHRl cm5hdGl2ZSkKLSsgICAgewotKyAgICBjYXNlIDA6Ci0rICAgIGNhc2UgMzoKLSsgICAgICByZXR1 cm4gInN0eDxWU20+JVUweCAleDEsJXkwIjsKLSsKLSsgICAgY2FzZSAxOgotKyAgICBjYXNlIDQ6 Ci0rICAgICAgcmV0dXJuICJseDxWU20+JVUweCAleDAsJXkxIjsKLSsKLSsgICAgY2FzZSAyOgot KyAgICBjYXNlIDU6Ci0rICAgICAgcmV0dXJuICJ4dm1vdjxWU3M+ICV4MCwleDEiOwotKwotKyAg ICBjYXNlIDY6Ci0rICAgIGNhc2UgNzoKLSsgICAgY2FzZSA4OgotKyAgICAgIHJldHVybiAiIyI7 Ci0rCi0rICAgIGNhc2UgOToKLSsgICAgY2FzZSAxMDoKLSsgICAgICByZXR1cm4gInh4bHhvciAl eDAsJXgwLCV4MCI7Ci0rCi0rICAgIGNhc2UgMTE6Ci0rICAgICAgcmV0dXJuIG91dHB1dF92ZWNf Y29uc3RfbW92ZSAob3BlcmFuZHMpOwotKwotKyAgICBkZWZhdWx0OgotKyAgICAgIGdjY191bnJl YWNoYWJsZSAoKTsKLSsgICAgfQotK30KLSsgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzdG9yZSx2 ZWNsb2FkLHZlY3NpbXBsZSx2ZWNzdG9yZSx2ZWNsb2FkLHZlY3NpbXBsZSxzdG9yZSxsb2FkLCos dmVjc2ltcGxlLHZlY3NpbXBsZSwqIildKQotKwotKzs7IExvYWQvc3RvcmUgd2l0aCB1cGRhdGUK LSs7OyBEZWZpbmUgaW5zbnMgdGhhdCBkbyBsb2FkIG9yIHN0b3JlIHdpdGggdXBkYXRlLiAgQmVj YXVzZSBWU1ggb25seSBoYXMKLSs7OyByZWcrcmVnIGFkZHJlc3NpbmcsIHByZS1kZWNyZW1lbnQg b3IgcHJlLWlucmVtZW50IGlzIHVubGlrZWx5IHRvIGJlCi0rOzsgZ2VuZXJhdGVkLgotKzs7Ci0r OzsgSW4gYWxsIHRoZXNlIGNhc2VzLCB3ZSB1c2Ugb3BlcmFuZHMgMCBhbmQgMSBmb3IgdGhlIHJl Z2lzdGVyIGJlaW5nCi0rOzsgaW5jcmVtZW50ZWQgYmVjYXVzZSB0aG9zZSBhcmUgdGhlIG9wZXJh bmRzIHRoYXQgbG9jYWwtYWxsb2Mgd2lsbAotKzs7IHRpZSBhbmQgdGhlc2UgYXJlIHRoZSBwYWly IG1vc3QgbGlrZWx5IHRvIGJlIHRpZWFibGUgKGFuZCB0aGUgb25lcwotKzs7IHRoYXQgd2lsbCBi ZW5lZml0IHRoZSBtb3N0KS4KLSsKLSsoZGVmaW5lX2luc24gIip2c3hfbG9hZDxtb2RlPl91cGRh dGU2NCIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9MIDMgInZzeF9yZWdpc3Rlcl9vcGVy YW5kIiAiPTxWU3I+LD93YSIpCi0rCShtZW06VlNYX0wgKHBsdXM6REkgKG1hdGNoX29wZXJhbmQ6 REkgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiMCwwIikKLSsJCQkgICAgKG1hdGNoX29wZXJhbmQ6REkg MiAiZ3BjX3JlZ19vcGVyYW5kIiAicixyIikpKSkKLSsgICAoc2V0IChtYXRjaF9vcGVyYW5kOkRJ IDAgImdwY19yZWdfb3BlcmFuZCIgIj1iLGIiKQotKwkocGx1czpESSAobWF0Y2hfZHVwIDEpCi0r CQkgKG1hdGNoX2R1cCAyKSkpXQotKyAgIlRBUkdFVF82NEJJVCAmJiBUQVJHRVRfVVBEQVRFICYm IFZFQ1RPUl9NRU1fVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgImx4PFZTbT51eCAleDMsJTAsJTIi Ci0rICBbKHNldF9hdHRyICJ0eXBlIiAidmVjbG9hZCIpXSkKLSsKLSsoZGVmaW5lX2luc24gIip2 c3hfbG9hZDxtb2RlPl91cGRhdGUzMiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9MIDMg InZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+LD93YSIpCi0rCShtZW06VlNYX0wgKHBsdXM6 U0kgKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiMCwwIikKLSsJCQkgICAg KG1hdGNoX29wZXJhbmQ6U0kgMiAiZ3BjX3JlZ19vcGVyYW5kIiAicixyIikpKSkKLSsgICAoc2V0 IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1iLGIiKQotKwkocGx1czpT SSAobWF0Y2hfZHVwIDEpCi0rCQkgKG1hdGNoX2R1cCAyKSkpXQotKyAgIlRBUkdFVF8zMkJJVCAm JiBUQVJHRVRfVVBEQVRFICYmIFZFQ1RPUl9NRU1fVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgImx4 PFZTbT51eCAleDMsJTAsJTIiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAidmVjbG9hZCIpXSkKLSsK LSsoZGVmaW5lX2luc24gIip2c3hfc3RvcmU8bW9kZT5fdXBkYXRlNjQiCi0rICBbKHNldCAobWVt OlZTWF9MIChwbHVzOkRJIChtYXRjaF9vcGVyYW5kOkRJIDEgImdwY19yZWdfb3BlcmFuZCIgIjAs MCIpCi0rCQkJICAgIChtYXRjaF9vcGVyYW5kOkRJIDIgImdwY19yZWdfb3BlcmFuZCIgInIsciIp KSkKLSsJKG1hdGNoX29wZXJhbmQ6VlNYX0wgMyAiZ3BjX3JlZ19vcGVyYW5kIiAiPFZTcj4sP3dh IikpCi0rICAgKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJncGNfcmVnX29wZXJhbmQiICI9Yixi IikKLSsJKHBsdXM6REkgKG1hdGNoX2R1cCAxKQotKwkJIChtYXRjaF9kdXAgMikpKV0KLSsgICJU QVJHRVRfNjRCSVQgJiYgVEFSR0VUX1VQREFURSAmJiBWRUNUT1JfTUVNX1ZTWF9QICg8TU9ERT5t b2RlKSIKLSsgICJzdHg8VlNtPnV4ICV4MywlMCwlMSIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJ2 ZWNzdG9yZSIpXSkKLSsKLSsoZGVmaW5lX2luc24gIip2c3hfc3RvcmU8bW9kZT5fdXBkYXRlMzIi Ci0rICBbKHNldCAobWVtOlZTWF9MIChwbHVzOlNJIChtYXRjaF9vcGVyYW5kOlNJIDEgImdwY19y ZWdfb3BlcmFuZCIgIjAsMCIpCi0rCQkJICAgIChtYXRjaF9vcGVyYW5kOlNJIDIgImdwY19yZWdf b3BlcmFuZCIgInIsciIpKSkKLSsJKG1hdGNoX29wZXJhbmQ6VlNYX0wgMyAiZ3BjX3JlZ19vcGVy YW5kIiAiPFZTcj4sP3dhIikpCi0rICAgKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVn X29wZXJhbmQiICI9YixiIikKLSsJKHBsdXM6U0kgKG1hdGNoX2R1cCAxKQotKwkJIChtYXRjaF9k dXAgMikpKV0KLSsgICJUQVJHRVRfMzJCSVQgJiYgVEFSR0VUX1VQREFURSAmJiBWRUNUT1JfTUVN X1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICJzdHg8VlNtPnV4ICV4MywlMCwlMSIKLSsgIFsoc2V0 X2F0dHIgInR5cGUiICJ2ZWNzdG9yZSIpXSkKLSsKLSsoZGVmaW5lX2luc24gIip2c3hfbG9hZGRm X3VwZGF0ZTxWU2JpdD4iCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAzICJ2c3hfcmVnaXN0 ZXJfb3BlcmFuZCIgIj13cyw/d2EiKQotKwkobWVtOkRGIChwbHVzOlAgKG1hdGNoX29wZXJhbmQ6 UCAxICJncGNfcmVnX29wZXJhbmQiICIwLDAiKQotKwkJCShtYXRjaF9vcGVyYW5kOlAgMiAiZ3Bj X3JlZ19vcGVyYW5kIiAicixyIikpKSkKLSsgICAoc2V0IChtYXRjaF9vcGVyYW5kOlAgMCAiZ3Bj X3JlZ19vcGVyYW5kIiAiPWIsYiIpCi0rCShwbHVzOlAgKG1hdGNoX2R1cCAxKQotKwkJKG1hdGNo X2R1cCAyKSkpXQotKyAgIlRBUkdFVF88VlNiaXQ+QklUICYmIFRBUkdFVF9VUERBVEUgJiYgVkVD VE9SX01FTV9WU1hfUCAoREZtb2RlKSIKLSsgICJseHNkdXggJXgzLCUwLCUyIgotKyAgWyhzZXRf YXR0ciAidHlwZSIgInZlY2xvYWQiKV0pCi0rCi0rKGRlZmluZV9pbnNuICIqdnN4X3N0b3JlZGZf dXBkYXRlPFZTYml0PiIKLSsgIFsoc2V0IChtZW06REYgKHBsdXM6UCAobWF0Y2hfb3BlcmFuZDpQ IDEgImdwY19yZWdfb3BlcmFuZCIgIjAsMCIpCi0rCQkJKG1hdGNoX29wZXJhbmQ6UCAyICJncGNf cmVnX29wZXJhbmQiICJyLHIiKSkpCi0rCShtYXRjaF9vcGVyYW5kOkRGIDMgImdwY19yZWdfb3Bl cmFuZCIgIndzLD93YSIpKQotKyAgIChzZXQgKG1hdGNoX29wZXJhbmQ6UCAwICJncGNfcmVnX29w ZXJhbmQiICI9YixiIikKLSsJKHBsdXM6UCAobWF0Y2hfZHVwIDEpCi0rCQkobWF0Y2hfZHVwIDIp KSldCi0rICAiVEFSR0VUXzxWU2JpdD5CSVQgJiYgVEFSR0VUX1VQREFURSAmJiBWRUNUT1JfTUVN X1ZTWF9QIChERm1vZGUpIgotKyAgInN0eHNkdXggJXgzLCUwLCUxIgotKyAgWyhzZXRfYXR0ciAi dHlwZSIgInZlY3N0b3JlIildKQotKwotKzs7IFdlIG1heSBuZWVkIHRvIGhhdmUgYSB2YXJpZW50 IG9uIHRoZSBwYXR0ZXJuIGZvciB1c2UgaW4gdGhlIHByb2xvZ3VlCi0rOzsgdGhhdCBkb2Vzbid0 IGRlcGVuZCBvbiBUQVJHRVRfVVBEQVRFLgotKwotKwwKLSs7OyBWU1ggdmVjdG9yIGZsb2F0aW5n IHBvaW50IGFyaXRobWV0aWMgaW5zdHJ1Y3Rpb25zCi0rKGRlZmluZV9pbnNuICIqdnN4X2FkZDxt b2RlPjMiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfRiAwICJ2c3hfcmVnaXN0ZXJfb3Bl cmFuZCIgIj08VlNyPiIpCi0rICAgICAgICAocGx1czpWU1hfRiAobWF0Y2hfb3BlcmFuZDpWU1hf RiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+IikKLSsJCSAgICAobWF0Y2hfb3BlcmFu ZDpWU1hfRiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+IikpKV0KLSsgICJWRUNUT1Jf VU5JVF9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAieHZhZGQ8VlNzPiAleDAsJXgxLCV4MiIKLSsg IFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNmbG9hdCIpXSkKLSsKLSsoZGVmaW5lX2luc24gIip2c3hf c3ViPG1vZGU+MyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9GIDAgInZzeF9yZWdpc3Rl cl9vcGVyYW5kIiAiPTxWU3I+IikKLSsgICAgICAgIChtaW51czpWU1hfRiAobWF0Y2hfb3BlcmFu ZDpWU1hfRiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+IikKLSsJCSAgICAgKG1hdGNo X29wZXJhbmQ6VlNYX0YgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiIpKSldCi0rICAi VkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgInh2c3ViPFZTcz4gJXgwLCV4MSwl eDIiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAidmVjZmxvYXQiKV0pCi0rCi0rKGRlZmluZV9pbnNu ICIqdnN4X211bDxtb2RlPjMiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfRiAwICJ2c3hf cmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiIpCi0rICAgICAgICAobXVsdDpWU1hfRiAobWF0Y2hf b3BlcmFuZDpWU1hfRiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+IikKLSsJCSAgICAo bWF0Y2hfb3BlcmFuZDpWU1hfRiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+IikpKV0K LSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAieHZtdWw8VlNzPiAleDAs JXgxLCV4MiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNmbG9hdCIpXSkKLSsKLSsoZGVmaW5l X2luc24gIip2c3hfZGl2PG1vZGU+MyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9GIDAg InZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+IikKLSsgICAgICAgIChkaXY6VlNYX0YgKG1h dGNoX29wZXJhbmQ6VlNYX0YgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiIpCi0rCSAJ ICAgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiIp KSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgInh2ZGl2PFZTcz4g JXgwLCV4MSwleDIiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAidmVjZmRpdiIpXSkKLSsKLSsoZGVm aW5lX2luc24gIip2c3hfZnJlPG1vZGU+MiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9G IDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+IikKLSsJKHVuc3BlYzpWU1hfRiBbKG1h dGNoX29wZXJhbmQ6VlNYX0YgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiIpXQotKwkJ ICAgICAgVU5TUEVDX0ZSRVMpKV0KLSsgICJmbGFnX2Zpbml0ZV9tYXRoX29ubHkgJiYgVkVDVE9S X1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgInh2cmU8VlNzPiAleDAsJXgxIgotKyAgWyhz ZXRfYXR0ciAidHlwZSIgImZwIildKQotKwotKyhkZWZpbmVfaW5zbiAiKnZzeF9uZWc8bW9kZT4y IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQi ICI9PFZTcj4iKQotKyAgICAgICAgKG5lZzpWU1hfRiAobWF0Y2hfb3BlcmFuZDpWU1hfRiAxICJ2 c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+IikpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAo PE1PREU+bW9kZSkiCi0rICAieHZuZWc8VlNzPiAleDAsJXgxIgotKyAgWyhzZXRfYXR0ciAidHlw ZSIgInZlY2Zsb2F0IildKQotKwotKyhkZWZpbmVfaW5zbiAiKnZzeF9hYnM8bW9kZT4yIgotKyAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9PFZT cj4iKQotKyAgICAgICAgKGFiczpWU1hfRiAobWF0Y2hfb3BlcmFuZDpWU1hfRiAxICJ2c3hfcmVn aXN0ZXJfb3BlcmFuZCIgIjxWU3I+IikpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+ bW9kZSkiCi0rICAieHZhYnM8VlNzPiAleDAsJXgxIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZl Y2Zsb2F0IildKQotKwotKyhkZWZpbmVfaW5zbiAiKnZzeF9uYWJzPG1vZGU+MiIKLSsgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlZTWF9GIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+IikK LSsgICAgICAgIChuZWc6VlNYX0YKLSsJIChhYnM6VlNYX0YKLSsJICAobWF0Y2hfb3BlcmFuZDpW U1hfRiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+IikpKSldCi0rICAiVkVDVE9SX1VO SVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgInh2bmFiczxWU3M+ICV4MCwleDEiCi0rICBbKHNl dF9hdHRyICJ0eXBlIiAidmVjZmxvYXQiKV0pCi0rCi0rKGRlZmluZV9pbnNuICIqdnN4X3NtYXg8 bW9kZT4zIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMCAidnN4X3JlZ2lzdGVyX29w ZXJhbmQiICI9PFZTcj4iKQotKyAgICAgICAgKHNtYXg6VlNYX0YgKG1hdGNoX29wZXJhbmQ6VlNY X0YgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiIpCi0rCQkgICAgKG1hdGNoX29wZXJh bmQ6VlNYX0YgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiIpKSldCi0rICAiVkVDVE9S X1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgInh2bWF4PFZTcz4gJXgwLCV4MSwleDIiCi0r ICBbKHNldF9hdHRyICJ0eXBlIiAidmVjY21wIildKQotKwotKyhkZWZpbmVfaW5zbiAiKnZzeF9z bWluPG1vZGU+MyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9GIDAgInZzeF9yZWdpc3Rl cl9vcGVyYW5kIiAiPTxWU3I+IikKLSsgICAgICAgIChzbWluOlZTWF9GIChtYXRjaF9vcGVyYW5k OlZTWF9GIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4iKQotKwkJICAgIChtYXRjaF9v cGVyYW5kOlZTWF9GIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4iKSkpXQotKyAgIlZF Q1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICJ4dm1pbjxWU3M+ICV4MCwleDEsJXgy IgotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2NtcCIpXSkKLSsKLSsoZGVmaW5lX2luc24gIip2 c3hfc3FydDxtb2RlPjIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfRiAwICJ2c3hfcmVn aXN0ZXJfb3BlcmFuZCIgIj08VlNyPiIpCi0rICAgICAgICAoc3FydDpWU1hfRiAobWF0Y2hfb3Bl cmFuZDpWU1hfRiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+IikpKV0KLSsgICJWRUNU T1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAieHZzcXJ0PFZTcz4gJXgwLCV4MSIKLSsg IFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNmZGl2IildKQotKwotKzs7IEZ1c2VkIHZlY3RvciBtdWx0 aXBseS9hZGQgaW5zdHJ1Y3Rpb25zCi0rKGRlZmluZV9pbnNuICIqdnN4X2ZtYWRkPG1vZGU+NCIK LSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9GIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAi PTxWU3I+LDxWU3I+IikKLSsJKHBsdXM6VlNYX0YKLSsJIChtdWx0OlZTWF9GCi0rCSAgKG1hdGNo X29wZXJhbmQ6VlNYX0YgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIlPFZTcj4sPFZTcj4iKQot KwkgIChtYXRjaF9vcGVyYW5kOlZTWF9GIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4s MCIpKQotKwkgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMyAiZ3BjX3JlZ19vcGVyYW5kIiAiMCw8VlNy PiIpKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkgJiYgVEFSR0VUX0ZVU0VEX01B REQiCi0rICAiQAotKyAgIHh2bWFkZGE8VlNzPiAleDAsJXgxLCV4MgotKyAgIHh2bWFkZG08VlNz PiAleDAsJXgxLCV4MyIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNmbG9hdCIpXSkKLSsKLSso ZGVmaW5lX2luc24gIip2c3hfZm1zdWI8bW9kZT40IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 VlNYX0YgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9PFZTcj4sPFZTcj4iKQotKwkobWludXM6 VlNYX0YKLSsJIChtdWx0OlZTWF9GCi0rCSAgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMSAidnN4X3Jl Z2lzdGVyX29wZXJhbmQiICIlPFZTcj4sPFZTcj4iKQotKwkgIChtYXRjaF9vcGVyYW5kOlZTWF9G IDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sMCIpKQotKwkgKG1hdGNoX29wZXJhbmQ6 VlNYX0YgMyAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIwLDxWU3I+IikpKV0KLSsgICJWRUNUT1Jf VU5JVF9WU1hfUCAoREZtb2RlKSAmJiBUQVJHRVRfRlVTRURfTUFERCIKLSsgICJACi0rICAgeHZt c3ViYTxWU3M+ICV4MCwleDEsJXgyCi0rICAgeHZtc3VibTxWU3M+ICV4MCwleDEsJXgzIgotKyAg WyhzZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0IildKQotKwotKyhkZWZpbmVfaW5zbiAiKnZzeF9m bm1hZGQ8bW9kZT40XzEiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfRiAwICJ2c3hfcmVn aXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw8VlNyPiIpCi0rCShuZWc6VlNYX0YKLSsJIChwbHVzOlZT WF9GCi0rCSAgKG11bHQ6VlNYX0YKLSsJICAgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMSAidnN4X3Jl Z2lzdGVyX29wZXJhbmQiICIlPFZTcj4sPFZTcj4iKQotKwkgICAobWF0Y2hfb3BlcmFuZDpWU1hf RiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LDAiKSkKLSsJICAobWF0Y2hfb3BlcmFu ZDpWU1hfRiAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjAsPFZTcj4iKSkpKV0KLSsgICJWRUNU T1JfVU5JVF9WU1hfUCAoREZtb2RlKSAmJiBUQVJHRVRfRlVTRURfTUFERAotKyAgICYmIEhPTk9S X1NJR05FRF9aRVJPUyAoREZtb2RlKSIKLSsgICJACi0rICAgeHZubWFkZGE8VlNzPiAleDAsJXgx LCV4MgotKyAgIHh2bm1hZGRtPFZTcz4gJXgwLCV4MSwleDMiCi0rICBbKHNldF9hdHRyICJ0eXBl IiAidmVjZmxvYXQiKV0pCi0rCi0rKGRlZmluZV9pbnNuICIqdnN4X2ZubWFkZDxtb2RlPjRfMiIK LSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9GIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAi PTxWU3I+LDxWU3I+IikKLSsJKG1pbnVzOlZTWF9GCi0rCSAobXVsdDpWU1hfRgotKwkgIChuZWc6 VlNYX0YKLSsJICAgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiJTxW U3I+LDxWU3I+IikpCi0rCSAgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMiAiZ3BjX3JlZ19vcGVyYW5k IiAiPFZTcj4sMCIpKQotKwkgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMyAidnN4X3JlZ2lzdGVyX29w ZXJhbmQiICIwLDxWU3I+IikpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSAmJiBU QVJHRVRfRlVTRURfTUFERAotKyAgICYmICFIT05PUl9TSUdORURfWkVST1MgKERGbW9kZSkiCi0r ICAiQAotKyAgIHh2bm1hZGRhPFZTcz4gJXgwLCV4MSwleDIKLSsgICB4dm5tYWRkbTxWU3M+ICV4 MCwleDEsJXgzIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0IildKQotKwotKyhkZWZp bmVfaW5zbiAiKnZzeF9mbm1zdWI8bW9kZT40XzEiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpW U1hfRiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw8VlNyPiIpCi0rCShuZWc6VlNY X0YKLSsJIChtaW51czpWU1hfRgotKwkgIChtdWx0OlZTWF9GCi0rCSAgIChtYXRjaF9vcGVyYW5k OlZTWF9GIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiJTxWU3I+LDxWU3I+IikKLSsJICAgKG1h dGNoX29wZXJhbmQ6VlNYX0YgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiwwIikpCi0r CSAgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMyAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIwLDxWU3I+ IikpKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkgJiYgVEFSR0VUX0ZVU0VEX01B REQKLSsgICAmJiBIT05PUl9TSUdORURfWkVST1MgKERGbW9kZSkiCi0rICAiQAotKyAgIHh2bm1z dWJhPFZTcz4gJXgwLCV4MSwleDIKLSsgICB4dm5tc3VibTxWU3M+ICV4MCwleDEsJXgzIgotKyAg WyhzZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0IildKQotKwotKyhkZWZpbmVfaW5zbiAiKnZzeF9m bm1zdWI8bW9kZT40XzIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfRiAwICJ2c3hfcmVn aXN0ZXJfb3BlcmFuZCIgIj08VlNyPiw8VlNyPiIpCi0rCShtaW51czpWU1hfRgotKwkgKG1hdGNo X29wZXJhbmQ6VlNYX0YgMyAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIwLDxWU3I+IikKLSsJICht dWx0OlZTWF9GCi0rCSAgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMSAidnN4X3JlZ2lzdGVyX29wZXJh bmQiICIlPFZTcj4sPFZTcj4iKQotKwkgIChtYXRjaF9vcGVyYW5kOlZTWF9GIDIgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAiPFZTcj4sMCIpKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChERm1v ZGUpICYmIFRBUkdFVF9GVVNFRF9NQURECi0rICAgJiYgIUhPTk9SX1NJR05FRF9aRVJPUyAoREZt b2RlKSIKLSsgICJACi0rICAgeHZubXN1YmE8VlNzPiAleDAsJXgxLCV4MgotKyAgIHh2bm1zdWJt PFZTcz4gJXgwLCV4MSwleDMiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAidmVjZmxvYXQiKV0pCi0r Ci0rOzsgVmVjdG9yIGNvbmRpdGlvbmFsIGV4cHJlc3Npb25zCi0rKGRlZmluZV9pbnNuICIqdnN4 X2VxPG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMCAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICI9PFZTcj4iKQotKwkoZXE6VlNYX0YgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMSAi dnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiIpCi0rCQkgIChtYXRjaF9vcGVyYW5kOlZTWF9G IDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4iKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZT WF9QICg8TU9ERT5tb2RlKSIKLSsgICJ4dmNtcGVxPFZTcz4gJXgwLCV4MSwleDIiCi0rICBbKHNl dF9hdHRyICJ0eXBlIiAidmVjY21wIildKQotKwotKyhkZWZpbmVfaW5zbiAiKnZzeF9ndDxtb2Rl PiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9GIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5k IiAiPTxWU3I+IikKLSsJKGd0OlZTWF9GIChtYXRjaF9vcGVyYW5kOlZTWF9GIDEgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAiPFZTcj4iKQotKwkJICAobWF0Y2hfb3BlcmFuZDpWU1hfRiAyICJ2c3hf cmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+IikpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoPE1P REU+bW9kZSkiCi0rICAieHZjbXBndDxWU3M+ICV4MCwleDEsJXgyIgotKyAgWyhzZXRfYXR0ciAi dHlwZSIgInZlY2NtcCIpXSkKLSsKLSsoZGVmaW5lX2luc24gIip2c3hfZ2U8bW9kZT4iCi0rICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfRiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNy PiIpCi0rCShnZTpWU1hfRiAobWF0Y2hfb3BlcmFuZDpWU1hfRiAxICJ2c3hfcmVnaXN0ZXJfb3Bl cmFuZCIgIjxWU3I+IikKLSsJCSAgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMiAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICI8VlNyPiIpKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUp IgotKyAgInh2Y21wZ2U8VlNzPiAleDAsJXgxLCV4MiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJ2 ZWNjbXAiKV0pCi0rCi0rKGRlZmluZV9pbnNuICJ2c3hfdnNlbDxtb2RlPiIKLSsgIFsoc2V0ICht YXRjaF9vcGVyYW5kOlZTWF9GIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+IikKLSsJ KGlmX3RoZW5fZWxzZTpWU1hfRiAobmUgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMSAidnN4X3JlZ2lz dGVyX29wZXJhbmQiICI8VlNyPiIpCi0rCQkJCShjb25zdF9pbnQgMCkpCi0rCQkJICAgIChtYXRj aF9vcGVyYW5kOlZTWF9GIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4iKQotKwkJCSAg ICAobWF0Y2hfb3BlcmFuZDpWU1hfRiAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+Iikp KV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAieHhzZWwgJXgwLCV4 MywleDIsJXgxIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCi0rCi0rOzsgQ29w eSBzaWduCi0rKGRlZmluZV9pbnNuICIqdnN4X2NvcHlzaWduPG1vZGU+MyIKLSsgIFsoc2V0ICht YXRjaF9vcGVyYW5kOlZTWF9GIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+IikKLSsJ KGlmX3RoZW5fZWxzZTpWU1hfRgotKwkgKGdlOlZTWF9GIChtYXRjaF9vcGVyYW5kOlZTWF9GIDIg InZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4iKQotKwkJICAgKGNvbnN0X2ludCAwKSkKLSsJ IChhYnM6VlNYX0YgKG1hdGNoX29wZXJhbmQ6VlNYX0YgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQi ICI8VlNyPiIpKQotKwkgKG5lZzpWU1hfRiAoYWJzOlZTWF9GIChtYXRjaF9kdXAgMSkpKSkpXQot KyAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICJ4dmNwc2duPFZTcz4gJXgw LCV4MiwleDEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc2ltcGxlIildKQotKwotKyhkZWZp bmVfaW5zbiAiKnZzeF9mdHJ1bmM8bW9kZT4yIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VlNY X0YgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9PFZTcj4iKQotKyAgCShmaXg6VlNYX0YgKG1h dGNoX29wZXJhbmQ6VlNYX0YgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiIpKSldCi0r ICAiVkVDVE9SX1VOSVRfVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgInh2cjxWU3M+cGl6ICV4MCwl eDEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKLSsKLSsoZGVmaW5lX2luc24g Iip2c3hfZmxvYXQ8VlNpPjxtb2RlPjIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfRiAw ICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj08VlNyPiIpCi0rCShmbG9hdDpWU1hfRiAobWF0Y2hf b3BlcmFuZDo8VlNJPiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+IikpKV0KLSsgICJW RUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAieHZjdnN4PFZTYz48VlNzPiAleDAs JXgxIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0IildKQotKwotKyhkZWZpbmVfaW5z biAiKnZzeF9mbG9hdHVuczxWU2k+PG1vZGU+MiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZT WF9GIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+IikKLSsJKHVuc2lnbmVkX2Zsb2F0 OlZTWF9GIChtYXRjaF9vcGVyYW5kOjxWU0k+IDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZT cj4iKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICJ4dmN2dXg8 VlNjPjxWU3M+ICV4MCwleDEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAidmVjZmxvYXQiKV0pCi0r Ci0rKGRlZmluZV9pbnNuICIqdnN4X2ZpeF90cnVuYzxtb2RlPjxWU2k+MiIKLSsgIFsoc2V0ICht YXRjaF9vcGVyYW5kOjxWU0k+IDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+IikKLSsJ KGZpeDo8VlNJPiAobWF0Y2hfb3BlcmFuZDpWU1hfRiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIg IjxWU3I+IikpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAieHZj djxWU3M+c3g8VlNjPnMgJXgwLCV4MSIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNmbG9hdCIp XSkKLSsKLSsoZGVmaW5lX2luc24gIip2c3hfZml4dW5zX3RydW5jPG1vZGU+PFZTaT4yIgotKyAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6PFZTST4gMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9PFZT cj4iKQotKwkodW5zaWduZWRfZml4OjxWU0k+IChtYXRjaF9vcGVyYW5kOlZTWF9GIDEgInZzeF9y ZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4iKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QICg8TU9E RT5tb2RlKSIKLSsgICJ4dmN2PFZTcz51eDxWU2M+cyAleDAsJXgxIgotKyAgWyhzZXRfYXR0ciAi dHlwZSIgInZlY2Zsb2F0IildKQotKwotKwwKLSs7OyBWU1ggc2NhbGFyIGRvdWJsZSBwcmVjaXNp b24gZmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9ucwotKyhkZWZpbmVfaW5zbiIqdnN4X2FkZGRmMyIK LSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdz IikKLSsJKHBsdXM6REYgKG1hdGNoX29wZXJhbmQ6REYgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQi ICJ3cyIpCi0rCQkgICAgIChtYXRjaF9vcGVyYW5kOkRGIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5k IiAid3MiKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpIgotKyAgInhzYWRkZHAg JXgwLCV4MSwleDIiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKQotKyAgIChzZXRfYXR0ciAi ZnBfdHlwZSIgImZwX2FkZHN1Yl9kIildKQotKwotKyhkZWZpbmVfaW5zbiIqdnN4X3N1YmRmMyIK LSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdz IikKLSsJKG1pbnVzOkRGIChtYXRjaF9vcGVyYW5kOkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5k IiAid3MiKQotKwkJICAgICAgKG1hdGNoX29wZXJhbmQ6REYgMiAidnN4X3JlZ2lzdGVyX29wZXJh bmQiICJ3cyIpKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkiCi0rICAieHNzdWJk cCAleDAsJXgxLCV4MiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpCi0rICAgKHNldF9hdHRy ICJmcF90eXBlIiAiZnBfYWRkc3ViX2QiKV0pCi0rCi0rKGRlZmluZV9pbnNuIip2c3hfbXVsZGYz IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9 d3MiKQotKwkobXVsdDpERiAobWF0Y2hfb3BlcmFuZDpERiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFu ZCIgIndzIikKLSsJCSAgICAgKG1hdGNoX29wZXJhbmQ6REYgMiAidnN4X3JlZ2lzdGVyX29wZXJh bmQiICJ3cyIpKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkiCi0rICAieHNtdWxk cCAleDAsJXgxLCV4MiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJkbXVsIikKLSsgICAoc2V0X2F0 dHIgImZwX3R5cGUiICJmcF9tdWxfZCIpXSkKLSsKLSsoZGVmaW5lX2luc24iKnZzeF9kaXZkZjMi Ci0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13 cyIpCi0rCShkaXY6REYgKG1hdGNoX29wZXJhbmQ6REYgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQi ICJ3cyIpCi0rCQkgICAgKG1hdGNoX29wZXJhbmQ6REYgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQi ICJ3cyIpKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkiCi0rICAieHNkaXZkcCAl eDAsJXgxLCV4MiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJkZGl2IildKQotKwotKyhkZWZpbmVf aW5zbiAiKnZzeF9mcmVkZjIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJ2c3hfcmVn aXN0ZXJfb3BlcmFuZCIgIj13cyIpCi0rCSh1bnNwZWM6REYgWyhtYXRjaF9vcGVyYW5kOkRGIDEg InZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid3MiKV0KLSsJCSAgIFVOU1BFQ19GUkVTKSldCi0rICAi ZmxhZ19maW5pdGVfbWF0aF9vbmx5ICYmIFZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpIgotKyAg InhzcmVkcCAleDAsJXgxIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgImZwIildKQotKwotKyhkZWZp bmVfaW5zbiAiKnZzeF9zcXJ0ZGYyIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAidnN4 X3JlZ2lzdGVyX29wZXJhbmQiICI9d3MiKQotKyAgICAgICAgKHNxcnQ6REYgKG1hdGNoX29wZXJh bmQ6REYgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3cyIpKSldCi0rICAiVkVDVE9SX1VOSVRf VlNYX1AgKERGbW9kZSkiCi0rICAieHNzcXJ0ZHAgJXgwLCV4MSIKLSsgIFsoc2V0X2F0dHIgInR5 cGUiICJkc3FydCIpXSkKLSsKLSsoZGVmaW5lX2luc24iKnZzeF9uZWdkZjIiCi0rICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13cyIpCi0rCShuZWc6 REYgKG1hdGNoX29wZXJhbmQ6REYgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3cyIpKSldCi0r ICAiVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkiCi0rICAieHNuZWdkcCAleDAsJXgxIgotKyAg WyhzZXRfYXR0ciAidHlwZSIgImZwIildKQotKwotKyhkZWZpbmVfaW5zbiJ2c3hfYWJzZGYyIgot KyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d3Mi KQotKwkoYWJzOkRGIChtYXRjaF9vcGVyYW5kOkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAi d3MiKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpIgotKyAgInhzYWJzZHAgJXgw LCV4MSIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkKLSsKLSsoZGVmaW5lX2luc24iKnZz eF9uYWJzZGYyIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAidnN4X3JlZ2lzdGVyX29w ZXJhbmQiICI9d3MiKQotKwkobmVnOkRGIChhYnM6REYgKG1hdGNoX29wZXJhbmQ6REYgMSAidnN4 X3JlZ2lzdGVyX29wZXJhbmQiICJ3cyIpKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChERm1v ZGUpIgotKyAgInhzbmFic2RwICV4MCwleDEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKV0p Ci0rCi0rKGRlZmluZV9pbnNuICIqdnN4X3NtYXhkZjMiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFu ZDpERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13cyIpCi0rICAgICAgICAoc21heDpERiAo bWF0Y2hfb3BlcmFuZDpERiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndzIikKLSsJCSAobWF0 Y2hfb3BlcmFuZDpERiAyICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndzIikpKV0KLSsgICJWRUNU T1JfVU5JVF9WU1hfUCAoREZtb2RlKSIKLSsgICJ4c21heGRwICV4MCwleDEsJXgyIgotKyAgWyhz ZXRfYXR0ciAidHlwZSIgImZwIildKQotKwotKwotKyhkZWZpbmVfaW5zbiAiKnZzeF9zbWluZGYz IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9 d3MiKQotKyAgICAgICAgKHNtaW46REYgKG1hdGNoX29wZXJhbmQ6REYgMSAidnN4X3JlZ2lzdGVy X29wZXJhbmQiICJ3cyIpCi0rCQkgKG1hdGNoX29wZXJhbmQ6REYgMiAidnN4X3JlZ2lzdGVyX29w ZXJhbmQiICJ3cyIpKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkiCi0rICAieHNt aW5kcCAleDAsJXgxLCV4MiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkKLSsKLSs7OyBG dXNlZCB2ZWN0b3IgbXVsdGlwbHkvYWRkIGluc3RydWN0aW9ucwotKyhkZWZpbmVfaW5zbiAiKnZz eF9mbWFkZGRmNCIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgInZzeF9yZWdpc3Rlcl9v cGVyYW5kIiAiPXdzLHdzIikKLSsJKHBsdXM6REYgKG11bHQ6REYgKG1hdGNoX29wZXJhbmQ6REYg MSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIld3Msd3MiKQotKwkJCSAgKG1hdGNoX29wZXJhbmQ6 REYgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3cywwIikpCi0rCQkgKG1hdGNoX29wZXJhbmQ6 REYgMyAiZ3BjX3JlZ19vcGVyYW5kIiAiMCx3cyIpKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1Ag KERGbW9kZSkgJiYgVEFSR0VUX0ZVU0VEX01BREQiCi0rICAiQAotKyAgIHhzbWFkZGFkcCAleDAs JXgxLCV4MgotKyAgIHhzbWFkZG1kcCAleDAsJXgxLCV4MyIKLSsgIFsoc2V0X2F0dHIgInR5cGUi ICJkbXVsIikKLSsgICAoc2V0X2F0dHIgImZwX3R5cGUiICJmcF9tYWRkc3ViX2QiKV0pCi0rCi0r KGRlZmluZV9pbnNuICIqdnN4X2Ztc3ViZGY0IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYg MCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d3Msd3MiKQotKwkobWludXM6REYgKG11bHQ6REYg KG1hdGNoX29wZXJhbmQ6REYgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIld3Msd3MiKQotKwkJ CSAgIChtYXRjaF9vcGVyYW5kOkRGIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid3MsMCIpKQot KwkJICAobWF0Y2hfb3BlcmFuZDpERiAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjAsd3MiKSkp XQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpICYmIFRBUkdFVF9GVVNFRF9NQUREIgot KyAgIkAKLSsgICB4c21zdWJhZHAgJXgwLCV4MSwleDIKLSsgICB4c21zdWJtZHAgJXgwLCV4MSwl eDMiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiZG11bCIpCi0rICAgKHNldF9hdHRyICJmcF90eXBl IiAiZnBfbWFkZHN1Yl9kIildKQotKwotKyhkZWZpbmVfaW5zbiAiKnZzeF9mbm1hZGRkZjRfMSIK LSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdz LHdzIikKLSsJKG5lZzpERgotKwkgKHBsdXM6REYgKG11bHQ6REYgKG1hdGNoX29wZXJhbmQ6REYg MSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIld3Msd3MiKQotKwkJCSAgIChtYXRjaF9vcGVyYW5k OkRGIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid3MsMCIpKQotKwkJICAobWF0Y2hfb3BlcmFu ZDpERiAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjAsd3MiKSkpKV0KLSsgICJWRUNUT1JfVU5J VF9WU1hfUCAoREZtb2RlKSAmJiBUQVJHRVRfRlVTRURfTUFERAotKyAgICYmIEhPTk9SX1NJR05F RF9aRVJPUyAoREZtb2RlKSIKLSsgICJACi0rICAgeHNubWFkZGFkcCAleDAsJXgxLCV4MgotKyAg IHhzbm1hZGRtZHAgJXgwLCV4MSwleDMiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiZG11bCIpCi0r ICAgKHNldF9hdHRyICJmcF90eXBlIiAiZnBfbWFkZHN1Yl9kIildKQotKwotKyhkZWZpbmVfaW5z biAiKnZzeF9mbm1hZGRkZjRfMiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgInZzeF9y ZWdpc3Rlcl9vcGVyYW5kIiAiPXdzLHdzIikKLSsJKG1pbnVzOkRGIChtdWx0OkRGIChuZWc6REYK LSsJCQkgICAgKG1hdGNoX29wZXJhbmQ6REYgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiJXdzLHdzIikp Ci0rCQkJICAgKG1hdGNoX29wZXJhbmQ6REYgMiAiZ3BjX3JlZ19vcGVyYW5kIiAid3MsMCIpKQot KwkJICAobWF0Y2hfb3BlcmFuZDpERiAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjAsd3MiKSkp XQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpICYmIFRBUkdFVF9GVVNFRF9NQURECi0r ICAgJiYgIUhPTk9SX1NJR05FRF9aRVJPUyAoREZtb2RlKSIKLSsgICJACi0rICAgeHNubWFkZGFk cCAleDAsJXgxLCV4MgotKyAgIHhzbm1hZGRtZHAgJXgwLCV4MSwleDMiCi0rICBbKHNldF9hdHRy ICJ0eXBlIiAiZG11bCIpCi0rICAgKHNldF9hdHRyICJmcF90eXBlIiAiZnBfbWFkZHN1Yl9kIild KQotKwotKyhkZWZpbmVfaW5zbiAiKnZzeF9mbm1zdWJkZjRfMSIKLSsgIFsoc2V0IChtYXRjaF9v cGVyYW5kOkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdzLHdzIikKLSsJKG5lZzpERgot KwkgKG1pbnVzOkRGCi0rCSAgKG11bHQ6REYgKG1hdGNoX29wZXJhbmQ6REYgMSAidnN4X3JlZ2lz dGVyX29wZXJhbmQiICIld3Msd3MiKQotKwkJICAgKG1hdGNoX29wZXJhbmQ6REYgMiAidnN4X3Jl Z2lzdGVyX29wZXJhbmQiICJ3cywwIikpCi0rCSAgKG1hdGNoX29wZXJhbmQ6REYgMyAidnN4X3Jl Z2lzdGVyX29wZXJhbmQiICIwLHdzIikpKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9k ZSkgJiYgVEFSR0VUX0ZVU0VEX01BREQKLSsgICAmJiBIT05PUl9TSUdORURfWkVST1MgKERGbW9k ZSkiCi0rICAiQAotKyAgIHhzbm1zdWJhZHAgJXgwLCV4MSwleDIKLSsgICB4c25tc3VibWRwICV4 MCwleDEsJXgzIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgImRtdWwiKQotKyAgIChzZXRfYXR0ciAi ZnBfdHlwZSIgImZwX21hZGRzdWJfZCIpXSkKLSsKLSsoZGVmaW5lX2luc24gIip2c3hfZm5tc3Vi ZGY0XzIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFu ZCIgIj13cyx3cyIpCi0rCShtaW51czpERgotKwkgKG1hdGNoX29wZXJhbmQ6REYgMyAidnN4X3Jl Z2lzdGVyX29wZXJhbmQiICIwLHdzIikKLSsJIChtdWx0OkRGIChtYXRjaF9vcGVyYW5kOkRGIDEg InZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiJXdzLHdzIikKLSsJCSAgKG1hdGNoX29wZXJhbmQ6REYg MiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3cywwIikpKSldCi0rICAiVkVDVE9SX1VOSVRfVlNY X1AgKERGbW9kZSkgJiYgVEFSR0VUX0ZVU0VEX01BREQKLSsgICAmJiAhSE9OT1JfU0lHTkVEX1pF Uk9TIChERm1vZGUpIgotKyAgIkAKLSsgICB4c25tc3ViYWRwICV4MCwleDEsJXgyCi0rICAgeHNu bXN1Ym1kcCAleDAsJXgxLCV4MyIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJkbXVsIikKLSsgICAo c2V0X2F0dHIgImZwX3R5cGUiICJmcF9tYWRkc3ViX2QiKV0pCi0rCi0rOzsgRm9yIHRoZSBjb252 ZXJzaW9ucywgbGltaXQgdGhlIHJlZ2lzdGVyIGNsYXNzIGZvciB0aGUgaW50ZWdlciB2YWx1ZSB0 byBiZQotKzs7IHRoZSBmcHJzLiAgRm9yIHRoZSB1bnNpZ25lZCB0ZXN0cywgdGhlcmUgaXNuJ3Qg YSBnZW5lcmljIGRvdWJsZSAtPiB1bnNpZ25lZAotKzs7IGNvbnZlcnNpb24gaW4gcnM2MDAwLm1k IHNvIGRvbid0IHRlc3QgVkVDVE9SX1VOSVRfVlNYX1AsIGp1c3QgdGVzdCBhZ2FpbnN0Ci0rOzsg VlNYLgotKwotKyhkZWZpbmVfaW5zbiAiKnZzeF9mbG9hdGRpZGYyIgotKyAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6REYgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d3MiKQotKwkoZmxvYXQ6REYg KG1hdGNoX29wZXJhbmQ6REkgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICIhZiNyIikpKV0KLSsg ICJWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSIKLSsgICJ4c2N2c3hkZHAgJXgwLCV4MSIKLSsg IFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkKLSsKLSsoZGVmaW5lX2luc24gIip2c3hfZmxvYXR1 bnNkaWRmMiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVy YW5kIiAiPXdzIikKLSsJKHVuc2lnbmVkX2Zsb2F0OkRGIChtYXRjaF9vcGVyYW5kOkRJIDEgInZz eF9yZWdpc3Rlcl9vcGVyYW5kIiAiIWYjciIpKSldCi0rICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYg VEFSR0VUX1ZTWCIKLSsgICJ4c2N2dXhkZHAgJXgwLCV4MSIKLSsgIFsoc2V0X2F0dHIgInR5cGUi ICJmcCIpXSkKLSsKLSsoZGVmaW5lX2luc24gIip2c3hfZml4X3RydW5jZGZkaTIiCi0rICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpESSAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj0hZiNyIikKLSsJ KGZpeDpESSAobWF0Y2hfb3BlcmFuZDpERiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndzIikp KV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSIKLSsgICJ4c2N2ZHBzeGRzICV4MCwl eDEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKV0pCi0rCi0rKGRlZmluZV9pbnNuICIqdnN4 X2ZpeHVuc190cnVuY2RmZGkyIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REkgMCAidnN4X3Jl Z2lzdGVyX29wZXJhbmQiICI9IWYjciIpCi0rCSh1bnNpZ25lZF9maXg6REkgKG1hdGNoX29wZXJh bmQ6REYgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3cyIpKSldCi0rICAiVEFSR0VUX0hBUkRf RkxPQVQgJiYgVEFSR0VUX1ZTWCIKLSsgICJ4c2N2ZHB1eGRzICV4MCwleDEiCi0rICBbKHNldF9h dHRyICJ0eXBlIiAiZnAiKV0pCi0rCi0rKGRlZmluZV9pbnNuICIqdnN4X2J0cnVuY2RmMiIKLSsg IFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdzIikK LSsJKHVuc3BlYzpERiBbKG1hdGNoX29wZXJhbmQ6REYgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQi ICJ3cyIpXQotKwkJICAgVU5TUEVDX0ZSSVopKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoREZt b2RlKSIKLSsgICJ4c3JkcGl6ICV4MCwleDEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKV0p Ci0rCi0rKGRlZmluZV9pbnNuICIqdnN4X2Zsb29yZGYyIgotKyAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6REYgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d3MiKQotKwkodW5zcGVjOkRGIFsobWF0 Y2hfb3BlcmFuZDpERiAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndzIildCi0rCQkgICBVTlNQ RUNfRlJJTSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUpIgotKyAgInhzcmRwaW0g JXgwLCV4MSIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkKLSsKLSsoZGVmaW5lX2luc24g Iip2c3hfY2VpbGRmMiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgInZzeF9yZWdpc3Rl cl9vcGVyYW5kIiAiPXdzIikKLSsJKHVuc3BlYzpERiBbKG1hdGNoX29wZXJhbmQ6REYgMSAidnN4 X3JlZ2lzdGVyX29wZXJhbmQiICJ3cyIpXQotKwkJICAgVU5TUEVDX0ZSSVApKV0KLSsgICJWRUNU T1JfVU5JVF9WU1hfUCAoREZtb2RlKSIKLSsgICJ4c3JkcGlwICV4MCwleDEiCi0rICBbKHNldF9h dHRyICJ0eXBlIiAiZnAiKV0pCi0rCi0rKGRlZmluZV9pbnNuICJ2c3hfY29weXNpZ25kZjMiCi0r ICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13cyIp Ci0rCShpZl90aGVuX2Vsc2U6REYgKGdlOkRGIChtYXRjaF9vcGVyYW5kOkRGIDIgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAid3MiKQotKwkJCQkoY29uc3RfaW50IDApKQotKwkJCSAoYWJzOkRGICht YXRjaF9vcGVyYW5kOkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid3MiKSkKLSsJCQkgKG5l ZzpERiAoYWJzOkRGIChtYXRjaF9kdXAgMSkpKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChE Rm1vZGUpIgotKyAgInhzY3BzZ25kcCAleDAsJXgyLCV4MSIKLSsgIFsoc2V0X2F0dHIgInR5cGUi ICJmcCIpXSkKLSsKLSsoZGVmaW5lX2luc24gIip2c3hfZnRydW5jZGYyIgotKyAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6REYgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9d3MiKQotKyAgCShmaXg6 REYgKG1hdGNoX29wZXJhbmQ6REYgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIndzIikpKV0KLSsgICJW RUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSIKLSsgICJ4c3JkcHBpeiAleDAsJXgxIgotKyAgWyhz ZXRfYXR0ciAidHlwZSIgInZlY2Zsb2F0IildKQotKwotKwwKLSs7OyBMb2dpY2FsIGFuZCBwZXJt dXRlIG9wZXJhdGlvbnMKLSsoZGVmaW5lX2luc24gIip2c3hfYW5kPG1vZGU+MyIKLSsgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlZTWF9MIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+LD93 YSIpCi0rICAgICAgICAoYW5kOlZTWF9MCi0rCSAobWF0Y2hfb3BlcmFuZDpWU1hfTCAxICJ2c3hf cmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LD93YSIpCi0rCSAobWF0Y2hfb3BlcmFuZDpWU1hfTCAy ICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LD93YSIpKSldCi0rICAiVkVDVE9SX01FTV9W U1hfUCAoPE1PREU+bW9kZSkiCi0rICAieHhsYW5kICV4MCwleDEsJXgyIgotKyAgWyhzZXRfYXR0 ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKLSsKLSsoZGVmaW5lX2luc24gIip2c3hfaW9yPG1vZGU+ MyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9MIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5k IiAiPTxWU3I+LD93YSIpCi0rICAgICAgICAoaW9yOlZTWF9MIChtYXRjaF9vcGVyYW5kOlZTWF9M IDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sP3dhIikKLSsJCSAgIChtYXRjaF9vcGVy YW5kOlZTWF9MIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPFZTcj4sP3dhIikpKV0KLSsgICJW RUNUT1JfTUVNX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICJ4eGxvciAleDAsJXgxLCV4MiIKLSsg IFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCi0rCi0rKGRlZmluZV9pbnNuICIqdnN4 X3hvcjxtb2RlPjMiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWU1hfTCAwICJ2c3hfcmVnaXN0 ZXJfb3BlcmFuZCIgIj08VlNyPiw/d2EiKQotKyAgICAgICAgKHhvcjpWU1hfTAotKwkgKG1hdGNo X29wZXJhbmQ6VlNYX0wgMSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiw/d2EiKQotKwkg KG1hdGNoX29wZXJhbmQ6VlNYX0wgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiw/d2Ei KSkpXQotKyAgIlZFQ1RPUl9NRU1fVlNYX1AgKDxNT0RFPm1vZGUpIgotKyAgInh4bHhvciAleDAs JXgxLCV4MiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCi0rCi0rKGRlZmlu ZV9pbnNuICIqdnN4X29uZV9jbXBsPG1vZGU+MiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZT WF9MIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPTxWU3I+LD93YSIpCi0rICAgICAgICAobm90 OlZTWF9MCi0rCSAobWF0Y2hfb3BlcmFuZDpWU1hfTCAxICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIg IjxWU3I+LD93YSIpKSldCi0rICAiVkVDVE9SX01FTV9WU1hfUCAoPE1PREU+bW9kZSkiCi0rICAi eHhsbm9yICV4MCwleDEsJXgxIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkK LSsgIAotKyhkZWZpbmVfaW5zbiAiKnZzeF9ub3I8bW9kZT4zIgotKyAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6VlNYX0wgMCAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI9PFZTcj4sP3dhIikKLSsgICAg ICAgIChub3Q6VlNYX0wKLSsJIChpb3I6VlNYX0wKLSsJICAobWF0Y2hfb3BlcmFuZDpWU1hfTCAx ICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIjxWU3I+LD93YSIpCi0rCSAgKG1hdGNoX29wZXJhbmQ6 VlNYX0wgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8VlNyPiw/d2EiKSkpKV0KLSsgICJWRUNU T1JfTUVNX1ZTWF9QICg8TU9ERT5tb2RlKSIKLSsgICJ4eGxub3IgJXgwLCV4MSwleDIiCi0rICBb KHNldF9hdHRyICJ0eXBlIiAidmVjc2ltcGxlIildKQotKwotKyhkZWZpbmVfaW5zbiAiKnZzeF9h bmRjPG1vZGU+MyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZTWF9MIDAgInZzeF9yZWdpc3Rl cl9vcGVyYW5kIiAiPTxWU3I+LD93YSIpCi0rICAgICAgICAoYW5kOlZTWF9MCi0rCSAobm90OlZT WF9MCi0rCSAgKG1hdGNoX29wZXJhbmQ6VlNYX0wgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICI8 VlNyPiw/d2EiKSkKLSsJIChtYXRjaF9vcGVyYW5kOlZTWF9MIDEgInZzeF9yZWdpc3Rlcl9vcGVy YW5kIiAiPFZTcj4sP3dhIikpKV0KLSsgICJWRUNUT1JfTUVNX1ZTWF9QICg8TU9ERT5tb2RlKSIK LSsgICJ4eGxhbmRjICV4MCwleDEsJXgyIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBs ZSIpXSkKLSsKLSsMCi0rOzsgUGVybXV0ZSBvcGVyYXRpb25zCi0rCi0rKGRlZmluZV9pbnNuICJ2 c3hfY29uY2F0X3YyZGYiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMkRGIDAgInZzeF9yZWdp c3Rlcl9vcGVyYW5kIiAiPXdkLD93YSIpCi0rCSh1bnNwZWM6VjJERgotKwkgWyhtYXRjaF9vcGVy YW5kOkRGIDEgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiZix3YSIpCi0rCSAgKG1hdGNoX29wZXJh bmQ6REYgMiAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJmLHdhIildCi0rCSBVTlNQRUNfVlNYX0NP TkNBVF9WMkRGKSldCi0rICAiVkVDVE9SX1VOSVRfVlNYX1AgKFYyREZtb2RlKSIKLSsgICJ4eHBl cm1kaSAleDAsJXgxLCV4MiwwIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3Blcm0iKV0pCi0r Ci0rOzsgU2V0IGEgZG91YmxlIGludG8gb25lIGVsZW1lbnQKLSsoZGVmaW5lX2luc24gInZzeF9z ZXRfdjJkZiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYyREYgMCAidnN4X3JlZ2lzdGVyX29w ZXJhbmQiICI9d2QiKQotKwkodmVjX21lcmdlOlYyREYKLSsJIChtYXRjaF9vcGVyYW5kOlYyREYg MSAidnN4X3JlZ2lzdGVyX29wZXJhbmQiICJ3ZCIpCi0rCSAodmVjX2R1cGxpY2F0ZTpWMkRGICht YXRjaF9vcGVyYW5kOkRGIDIgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAid3MiKSkKLSsJIChtYXRj aF9vcGVyYW5kOlFJIDMgInU1Yml0X2NpbnRfb3BlcmFuZCIgImkiKSkpXQotKyAgIlZFQ1RPUl9V TklUX1ZTWF9QIChWMkRGbW9kZSkiCi0rewotKyAgb3BlcmFuZHNbM10gPSBHRU5fSU5UIChJTlRW QUwgKG9wZXJhbmRzWzNdKSAmIDEpOwotKyAgcmV0dXJuIFwieHhwZXJtZGkgJXgwLCV4MSwleDIs JTNcIjsKLSt9Ci0rICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKLSsKLSs7OyBFeHRy YWN0IGEgREYgZWxlbWVudCBmcm9tIFYyREYKLSsoZGVmaW5lX2luc24gInZzeF9leHRyYWN0X3Yy ZGYiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIg Ij13cyIpCi0rCSh2ZWNfc2VsZWN0OkRGIChtYXRjaF9vcGVyYW5kOlYyREYgMSAidnN4X3JlZ2lz dGVyX29wZXJhbmQiICJ3ZCIpCi0rCQkgICAgICAgKHBhcmFsbGVsCi0rCQkJWyhtYXRjaF9vcGVy YW5kOlFJIDIgInU1Yml0X2NpbnRfb3BlcmFuZCIgImkiKV0pKSldCi0rICAiVkVDVE9SX1VOSVRf VlNYX1AgKFYyREZtb2RlKSIKLSt7Ci0rICBvcGVyYW5kc1szXSA9IEdFTl9JTlQgKElOVFZBTCAo b3BlcmFuZHNbMl0pICYgMSk7Ci0rICByZXR1cm4gXCJ4eHBlcm1kaSAleDAsJXgxLCV4MSwlM1wi OwotK30KLSsgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtIildKQotKwotKzs7IEdlbmVyYWwg VjJERiBwZXJtdXRlCi0rKGRlZmluZV9pbnNuICJ2c3hfeHhwZXJtZGkiCi0rICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWMkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdkIikKLSsJKHZlY19j b25jYXQ6VjJERgotKwkgKHZlY19zZWxlY3Q6REYgKG1hdGNoX29wZXJhbmQ6VjJERiAxICJ2c3hf cmVnaXN0ZXJfb3BlcmFuZCIgIndkIikKLSsJCQkocGFyYWxsZWwKLSsJCQkgWyhtYXRjaF9vcGVy YW5kOlFJIDIgInU1Yml0X2NpbnRfb3BlcmFuZCIgImkiKV0pKQotKwkgKHZlY19zZWxlY3Q6REYg KG1hdGNoX29wZXJhbmQ6VjJERiAzICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIndkIikKLSsJCQko cGFyYWxsZWwKLSsJCQkgWyhtYXRjaF9vcGVyYW5kOlFJIDQgInU1Yml0X2NpbnRfb3BlcmFuZCIg ImkiKV0pKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChWMkRGbW9kZSkiCi0rewotKyAgb3Bl cmFuZHNbNV0gPSBHRU5fSU5UICgoKElOVFZBTCAob3BlcmFuZHNbMl0pICYgMSkgPDwgMSkKLSsJ CQkgfCAoSU5UVkFMIChvcGVyYW5kc1s0XSkgJiAxKSk7Ci0rICByZXR1cm4gXCJ4eHBlcm1kaSAl eDAsJXgxLCV4MywlNVwiOwotK30KLSsgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtIildKQot KwotKzs7IFYyREYgc3BsYXQKLSsoZGVmaW5lX2luc24gInZzeF9zcGxhdHYyZGYiCi0rICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpWMkRGIDAgInZzeF9yZWdpc3Rlcl9vcGVyYW5kIiAiPXdkLHdkIikK LSsJKHZlY19kdXBsaWNhdGU6VjJERgotKwkgKG1hdGNoX29wZXJhbmQ6REYgMSAiaW5wdXRfb3Bl cmFuZCIgIndzLFoiKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChWMkRGbW9kZSkiCi0rICAi QAotKyAgIHh4cGVybWRpICV4MCwleDEsJXgxLDAKLSsgICBseHZkc3ggJXgwLCV5MSIKLSsgIFso c2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtLHZlY2xvYWQiKV0pCi0rCi0rOzsgVjRTRiBzcGxhdAot KyhkZWZpbmVfaW5zbiAiKnZzeF94eHNwbHR3IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRT RiAwICJ2c3hfcmVnaXN0ZXJfb3BlcmFuZCIgIj13ZiIpCi0rCSh2ZWNfZHVwbGljYXRlOlY0U0YK LSsJICh2ZWNfc2VsZWN0OlNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAidnN4X3JlZ2lzdGVyX29w ZXJhbmQiICJ3ZiIpCi0rCQkJKHBhcmFsbGVsCi0rCQkJIFsobWF0Y2hfb3BlcmFuZDpRSSAyICJ1 NWJpdF9jaW50X29wZXJhbmQiICJpIildKSkpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hfUCAoVjRT Rm1vZGUpIgotKyAgInh4c3BsdHcgJXgwLCV4MSwlMiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJ2 ZWNwZXJtIildKQotKwotKzs7IFY0U0YgaW50ZXJsZWF2ZQotKyhkZWZpbmVfaW5zbiAiKnZzeF94 eG1yZ2h3IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAwICJyZWdpc3Rlcl9vcGVyYW5k IiAiPXYiKQotKyAgICAgICAgKHZlY19tZXJnZTpWNFNGICh2ZWNfc2VsZWN0OlY0U0YgKG1hdGNo X29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyYWxsZWwgWyhjb25zdF9pbnQgMCkKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0X2lu dCAyKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoY29uc3RfaW50IDEpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjb25zdF9pbnQgMyldKSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAo dmVjX3NlbGVjdDpWNFNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMiAicmVnaXN0ZXJfb3BlcmFuZCIg InYiKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFsbGVs IFsoY29uc3RfaW50IDIpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjb25zdF9pbnQgMCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0X2ludCAzKQotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3RfaW50IDEpXSkpCi0rICAg ICAgICAgICAgICAgICAgICAgIChjb25zdF9pbnQgNSkpKV0KLSsgICJWRUNUT1JfVU5JVF9WU1hf UCAoVjRTRm1vZGUpIgotKyAgInh4bXJnaHcgJXgwLCV4MSwleDIiCi0rICBbKHNldF9hdHRyICJ0 eXBlIiAidmVjcGVybSIpXSkKLSsKLSsoZGVmaW5lX2luc24gIip2c3hfeHhtcmdsdyIKLSsgIFso c2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKLSsgICAg ICAgICh2ZWNfbWVyZ2U6VjRTRgotKwkgKHZlY19zZWxlY3Q6VjRTRiAobWF0Y2hfb3BlcmFuZDpW NFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLSsJCQkgIChwYXJhbGxlbCBbKGNvbnN0X2lu dCAyKQotKwkJCQkgICAgIChjb25zdF9pbnQgMCkKLSsJCQkJICAgICAoY29uc3RfaW50IDMpCi0r CQkJCSAgICAgKGNvbnN0X2ludCAxKV0pKQotKwkgKHZlY19zZWxlY3Q6VjRTRiAobWF0Y2hfb3Bl cmFuZDpWNFNGIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLSsJCQkgIChwYXJhbGxlbCBbKGNv bnN0X2ludCAwKQotKwkJCQkgICAgIChjb25zdF9pbnQgMikKLSsJCQkJICAgICAoY29uc3RfaW50 IDEpCi0rCQkJCSAgICAgKGNvbnN0X2ludCAzKV0pKQotKwkgKGNvbnN0X2ludCA1KSkpXQotKyAg IlZFQ1RPUl9VTklUX1ZTWF9QIChWNFNGbW9kZSkiCi0rICAieHhtcmdsdyAleDAsJXgxLCV4MiIK LSsgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtIildKQotLS0tIGdjYy9jb25maWcvcnM2MDAw L3JzNjAwMC5oCSguLi4vdHJ1bmspCShyZXZpc2lvbiAxNDQ1NTcpCi0rKysgZ2NjL2NvbmZpZy9y czYwMDAvcnM2MDAwLmgJKC4uLi9icmFuY2hlcy9pYm0vcG93ZXI3LW1laXNzbmVyKQkocmV2aXNp b24gMTQ0NjkyKQotQEAgLTEsNiArMSw2IEBACi0gLyogRGVmaW5pdGlvbnMgb2YgdGFyZ2V0IG1h Y2hpbmUgZm9yIEdOVSBjb21waWxlciwgZm9yIElCTSBSUy82MDAwLgotICAgIENvcHlyaWdodCAo QykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKLS0gICAy MDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4Ci0rICAg MjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAw OQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICAgIENvbnRyaWJ1dGVkIGJ5 IFJpY2hhcmQgS2VubmVyIChrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdSkKLSAKLUBAIC03Miwx NCArNzIsMTYgQEAKLSAjZGVmaW5lIEFTTV9DUFVfUE9XRVI2X1NQRUMgIi1tcG93ZXI0IC1tYWx0 aXZlYyIKLSAjZW5kaWYKLSAKLS0jaWZkZWYgSEFWRV9BU19WU1gKLSsjaWZkZWYgSEFWRV9BU19Q T1BDTlRECi0gI2RlZmluZSBBU01fQ1BVX1BPV0VSN19TUEVDICItbXBvd2VyNyIKLSAjZWxzZQot ICNkZWZpbmUgQVNNX0NQVV9QT1dFUjdfU1BFQyAiLW1wb3dlcjQgLW1hbHRpdmVjIgotICNlbmRp ZgotIAotLS8qIENvbW1vbiBBU00gZGVmaW5pdGlvbnMgdXNlZCBieSBBU01fU1BFQyBhbW9uZyB0 aGUgdmFyaW91cyB0YXJnZXRzCi0tICAgZm9yIGhhbmRsaW5nIC1tY3B1PXh4eCBzd2l0Y2hlcy4g ICovCi0rLyogQ29tbW9uIEFTTSBkZWZpbml0aW9ucyB1c2VkIGJ5IEFTTV9TUEVDIGFtb25nIHRo ZSB2YXJpb3VzIHRhcmdldHMgZm9yCi0rICAgaGFuZGxpbmcgLW1jcHU9eHh4IHN3aXRjaGVzLiAg VGhlcmUgaXMgYSBwYXJhbGxlbCBsaXN0IGluIGRyaXZlci1yczYwMDAuYyB0bwotKyAgIHByb3Zp ZGUgdGhlIGRlZmF1bHQgYXNzZW1ibGVyIG9wdGlvbnMgaWYgdGhlIHVzZXIgdXNlcyAtbWNwdT1u YXRpdmUsIHNvIGlmCi0rICAgeW91IG1ha2UgY2hhbmdlcyBoZXJlLCBtYWtlIHRoZW0gYWxzbyB0 aGVyZS4gICovCi0gI2RlZmluZSBBU01fQ1BVX1NQRUMgXAotICIleyFtY3B1KjogXAotICAgJXtt cG93ZXI6ICV7IW1wb3dlcjI6IC1tcHdyfX0gXAotQEAgLTg4LDYgKzkwLDcgQEAKLSAgICV7IW1w b3dlcnBjNjQqOiAle21wb3dlcnBjKjogLW1wcGN9fSBcCi0gICAle21uby1wb3dlcjogJXshbXBv d2VycGMqOiAtbWNvbX19IFwKLSAgICV7IW1uby1wb3dlcjogJXshbXBvd2VyKjogJShhc21fZGVm YXVsdCl9fX0gXAotKyV7bWNwdT1uYXRpdmU6ICUoYXNtX2NwdV9uYXRpdmUpfSBcCi0gJXttY3B1 PWNvbW1vbjogLW1jb219IFwKLSAle21jcHU9Y2VsbDogLW1jZWxsfSBcCi0gJXttY3B1PXBvd2Vy OiAtbXB3cn0gXAotQEAgLTE2Myw2ICsxNjYsNyBAQAotICNkZWZpbmUgRVhUUkFfU1BFQ1MJCQkJ CQkJXAotICAgeyAiY3BwX2RlZmF1bHQiLAkJQ1BQX0RFRkFVTFRfU1BFQyB9LAkJCVwKLSAgIHsg ImFzbV9jcHUiLAkJCUFTTV9DUFVfU1BFQyB9LAkJCQlcCi0rICB7ICJhc21fY3B1X25hdGl2ZSIs CQlBU01fQ1BVX05BVElWRV9TUEVDIH0sCQkJXAotICAgeyAiYXNtX2RlZmF1bHQiLAkJQVNNX0RF RkFVTFRfU1BFQyB9LAkJCVwKLSAgIHsgImNjMV9jcHUiLAkJCUNDMV9DUFVfU1BFQyB9LAkJCQlc Ci0gICB7ICJhc21fY3B1X3Bvd2VyNSIsCQlBU01fQ1BVX1BPV0VSNV9TUEVDIH0sCQkJXAotQEAg LTE3OSw2ICsxODMsMTAgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmhvc3RfZGV0ZWN0X2xvY2FsX2Nw dQotICNkZWZpbmUgRVhUUkFfU1BFQ19GVU5DVElPTlMgXAotICAgeyAibG9jYWxfY3B1X2RldGVj dCIsIGhvc3RfZGV0ZWN0X2xvY2FsX2NwdSB9LAotICNkZWZpbmUgSEFWRV9MT0NBTF9DUFVfREVU RUNUCi0rI2RlZmluZSBBU01fQ1BVX05BVElWRV9TUEVDICIlOmxvY2FsX2NwdV9kZXRlY3QoYXNt KSIKLSsKLSsjZWxzZQotKyNkZWZpbmUgQVNNX0NQVV9OQVRJVkVfU1BFQyAiJShhc21fZGVmYXVs dCkiCi0gI2VuZGlmCi0gCi0gI2lmbmRlZiBDQzFfQ1BVX1NQRUMKLUBAIC0yNDAsNiArMjQ4LDE0 IEBAIGV4dGVybiBjb25zdCBjaGFyICpob3N0X2RldGVjdF9sb2NhbF9jcHUKLSAjZGVmaW5lIFRB UkdFVF9ERlAgMAotICNlbmRpZgotIAotKy8qIERlZmluZSBUQVJHRVRfUE9QQ05URCBpZiB0aGUg dGFyZ2V0IGFzc2VtYmxlciBkb2VzIG5vdCBzdXBwb3J0IHRoZQotKyAgIHBvcGNvdW50IHdvcmQg YW5kIGRvdWJsZSB3b3JkIGluc3RydWN0aW9ucy4gICovCi0rCi0rI2lmbmRlZiBIQVZFX0FTX1BP UENOVEQKLSsjdW5kZWYgIFRBUkdFVF9QT1BDTlRECi0rI2RlZmluZSBUQVJHRVRfUE9QQ05URCAw Ci0rI2VuZGlmCi0rCi0gI2lmbmRlZiBUQVJHRVRfU0VDVVJFX1BMVAotICNkZWZpbmUgVEFSR0VU X1NFQ1VSRV9QTFQgMAotICNlbmRpZgotQEAgLTI5NSw2ICszMTEsNyBAQCBlbnVtIHByb2Nlc3Nv cl90eXBlCi0gICAgUFJPQ0VTU09SX1BPV0VSNCwKLSAgICBQUk9DRVNTT1JfUE9XRVI1LAotICAg IFBST0NFU1NPUl9QT1dFUjYsCi0rICAgUFJPQ0VTU09SX1BPV0VSNywKLSAgICBQUk9DRVNTT1Jf Q0VMTAotIH07Ci0gCi1AQCAtMzg4LDkgKzQwNSwxMyBAQCBleHRlcm4gc3RydWN0IHJzNjAwMF9j cHVfc2VsZWN0IHJzNjAwMF9zCi0gZXh0ZXJuIGNvbnN0IGNoYXIgKnJzNjAwMF9kZWJ1Z19uYW1l OwkvKiBOYW1lIGZvciAtbWRlYnVnLXh4eHggb3B0aW9uICovCi0gZXh0ZXJuIGludCByczYwMDBf ZGVidWdfc3RhY2s7CQkvKiBkZWJ1ZyBzdGFjayBhcHBsaWNhdGlvbnMgKi8KLSBleHRlcm4gaW50 IHJzNjAwMF9kZWJ1Z19hcmc7CQkvKiBkZWJ1ZyBhcmd1bWVudCBoYW5kbGluZyAqLwotK2V4dGVy biBpbnQgcnM2MDAwX2RlYnVnX3JlZzsJCS8qIGRlYnVnIHJlZ2lzdGVyIGhhbmRsaW5nICovCi0r ZXh0ZXJuIGludCByczYwMDBfZGVidWdfYWRkcjsJCS8qIGRlYnVnIG1lbW9yeSBhZGRyZXNzaW5n ICovCi0gCi0gI2RlZmluZQlUQVJHRVRfREVCVUdfU1RBQ0sJcnM2MDAwX2RlYnVnX3N0YWNrCi0g I2RlZmluZQlUQVJHRVRfREVCVUdfQVJHCXJzNjAwMF9kZWJ1Z19hcmcKLSsjZGVmaW5lIFRBUkdF VF9ERUJVR19SRUcJcnM2MDAwX2RlYnVnX3JlZwotKyNkZWZpbmUgVEFSR0VUX0RFQlVHX0FERFIJ cnM2MDAwX2RlYnVnX2FkZHIKLSAKLSBleHRlcm4gY29uc3QgY2hhciAqcnM2MDAwX3RyYWNlYmFj a19uYW1lOyAvKiBUeXBlIG9mIHRyYWNlYmFjayB0YWJsZS4gICovCi0gCi1AQCAtNDAxLDEzICs0 MjIsNjUgQEAgZXh0ZXJuIGludCByczYwMDBfaWVlZXF1YWQ7Ci0gZXh0ZXJuIGludCByczYwMDBf YWx0aXZlY19hYmk7Ci0gZXh0ZXJuIGludCByczYwMDBfc3BlX2FiaTsKLSBleHRlcm4gaW50IHJz NjAwMF9zcGU7Ci0tZXh0ZXJuIGludCByczYwMDBfaXNlbDsKLSBleHRlcm4gaW50IHJzNjAwMF9m bG9hdF9ncHJzOwotIGV4dGVybiBpbnQgcnM2MDAwX2FsaWdubWVudF9mbGFnczsKLSBleHRlcm4g Y29uc3QgY2hhciAqcnM2MDAwX3NjaGVkX2luc2VydF9ub3BzX3N0cjsKLSBleHRlcm4gZW51bSBy czYwMDBfbm9wX2luc2VydGlvbiByczYwMDBfc2NoZWRfaW5zZXJ0X25vcHM7Ci0gZXh0ZXJuIGlu dCByczYwMDBfeGlsaW54X2ZwdTsKLSAKLSsvKiBEZXNjcmliZSB3aGljaCB2ZWN0b3IgdW5pdCB0 byB1c2UgZm9yIGEgZ2l2ZW4gbWFjaGluZSBtb2RlLiAgKi8KLStlbnVtIHJzNjAwMF92ZWN0b3Ig ewotKyAgVkVDVE9SX05PTkUsCQkJLyogVHlwZSBpcyBub3QgIGEgdmVjdG9yIG9yIG5vdCBzdXBw b3J0ZWQgKi8KLSsgIFZFQ1RPUl9BTFRJVkVDLAkJLyogVXNlIGFsdGl2ZWMgZm9yIHZlY3RvciBw cm9jZXNzaW5nICovCi0rICBWRUNUT1JfVlNYLAkJCS8qIFVzZSBWU1ggZm9yIHZlY3RvciBwcm9j ZXNzaW5nICovCi0rICBWRUNUT1JfUEFJUkVELAkJLyogVXNlIHBhaXJlZCBmbG9hdGluZyBwb2lu dCBmb3IgdmVjdG9ycyAqLwotKyAgVkVDVE9SX1NQRSwJCQkvKiBVc2UgU1BFIGZvciB2ZWN0b3Ig cHJvY2Vzc2luZyAqLwotKyAgVkVDVE9SX09USEVSCQkJLyogU29tZSBvdGhlciB2ZWN0b3IgdW5p dCAqLwotK307Ci0rCi0rZXh0ZXJuIGVudW0gcnM2MDAwX3ZlY3RvciByczYwMDBfdmVjdG9yX3Vu aXRbXTsKLSsKLSsjZGVmaW5lIFZFQ1RPUl9VTklUX05PTkVfUChNT0RFKQkJCVwKLSsgIChyczYw MDBfdmVjdG9yX3VuaXRbKE1PREUpXSA9PSBWRUNUT1JfTk9ORSkKLSsKLSsjZGVmaW5lIFZFQ1RP Ul9VTklUX1ZTWF9QKE1PREUpCQkJCVwKLSsgIChyczYwMDBfdmVjdG9yX3VuaXRbKE1PREUpXSA9 PSBWRUNUT1JfVlNYKQotKwotKyNkZWZpbmUgVkVDVE9SX1VOSVRfQUxUSVZFQ19QKE1PREUpCQkJ XAotKyAgKHJzNjAwMF92ZWN0b3JfdW5pdFsoTU9ERSldID09IFZFQ1RPUl9BTFRJVkVDKQotKwot KyNkZWZpbmUgVkVDVE9SX1VOSVRfQUxUSVZFQ19PUl9WU1hfUChNT0RFKQkJXAotKyAgKHJzNjAw MF92ZWN0b3JfdW5pdFsoTU9ERSldID09IFZFQ1RPUl9BTFRJVkVDIAlcCi0rICAgfHwgcnM2MDAw X3ZlY3Rvcl91bml0WyhNT0RFKV0gPT0gVkVDVE9SX1ZTWCkKLSsKLSsvKiBEZXNjcmliZSB3aGV0 aGVyIHRvIHVzZSBWU1ggbG9hZHMgb3IgQWx0aXZlYyBsb2Fkcy4gIEZvciBub3csIGp1c3QgdXNl IHRoZQotKyAgIHNhbWUgdW5pdCBhcyB0aGUgdmVjdG9yIHVuaXQgd2UgYXJlIHVzaW5nLCBidXQg d2UgbWF5IHdhbnQgdG8gbWlncmF0ZSB0bwotKyAgIHVzaW5nIFZTWCBzdHlsZSBsb2FkcyBldmVu IGZvciB0eXBlcyBoYW5kbGVkIGJ5IGFsdGl2ZWMuICAqLwotK2V4dGVybiBlbnVtIHJzNjAwMF92 ZWN0b3IgcnM2MDAwX3ZlY3Rvcl9tZW1bXTsKLSsKLSsjZGVmaW5lIFZFQ1RPUl9NRU1fTk9ORV9Q KE1PREUpCQkJCVwKLSsgIChyczYwMDBfdmVjdG9yX21lbVsoTU9ERSldID09IFZFQ1RPUl9OT05F KQotKwotKyNkZWZpbmUgVkVDVE9SX01FTV9WU1hfUChNT0RFKQkJCQlcCi0rICAocnM2MDAwX3Zl Y3Rvcl9tZW1bKE1PREUpXSA9PSBWRUNUT1JfVlNYKQotKwotKyNkZWZpbmUgVkVDVE9SX01FTV9B TFRJVkVDX1AoTU9ERSkJCQlcCi0rICAocnM2MDAwX3ZlY3Rvcl9tZW1bKE1PREUpXSA9PSBWRUNU T1JfQUxUSVZFQykKLSsKLSsjZGVmaW5lIFZFQ1RPUl9NRU1fQUxUSVZFQ19PUl9WU1hfUChNT0RF KQkJXAotKyAgKHJzNjAwMF92ZWN0b3JfbWVtWyhNT0RFKV0gPT0gVkVDVE9SX0FMVElWRUMgCVwK LSsgICB8fCByczYwMDBfdmVjdG9yX21lbVsoTU9ERSldID09IFZFQ1RPUl9WU1gpCi0rCi0rLyog UmV0dXJuIHRoZSBhbGlnbm1lbnQgb2YgYSBnaXZlbiB2ZWN0b3IgdHlwZSwgd2hpY2ggaXMgc2V0 IGJhc2VkIG9uIHRoZQotKyAgIHZlY3RvciB1bml0IHVzZS4gIFZTWCBmb3IgaW5zdGFuY2UgY2Fu IGxvYWQgMzIgb3IgNjQgYml0IGFsaWduZWQgd29yZHMKLSsgICB3aXRob3V0IHByb2JsZW1zLCB3 aGlsZSBBbHRpdmVjIHJlcXVpcmVzIDEyOC1iaXQgYWxpZ25lZCB2ZWN0b3JzLiAgKi8KLStleHRl cm4gaW50IHJzNjAwMF92ZWN0b3JfYWxpZ25bXTsKLSsKLSsjZGVmaW5lIFZFQ1RPUl9BTElHTihN T0RFKQkJCQkJCVwKLSsgICgocnM2MDAwX3ZlY3Rvcl9hbGlnblsoTU9ERSldICE9IDApCQkJCQlc Ci0rICAgPyByczYwMDBfdmVjdG9yX2FsaWduWyhNT0RFKV0JCQkJCVwKLSsgICA6IChpbnQpR0VU X01PREVfQklUU0laRSAoKE1PREUpKSkKLSsKLSAvKiBBbGlnbm1lbnQgb3B0aW9ucyBmb3IgZmll bGRzIGluIHN0cnVjdHVyZXMgZm9yIHN1Yi10YXJnZXRzIGZvbGxvd2luZwotICAgIEFJWC1saWtl IEFCSS4KLSAgICBBTElHTl9QT1dFUiB3b3JkLWFsaWducyBGUCBkb3VibGVzIChkZWZhdWx0IEFJ WCBBQkkpLgotQEAgLTQzMiw3ICs1MDUsNyBAQCBleHRlcm4gaW50IHJzNjAwMF94aWxpbnhfZnB1 OwotICNkZWZpbmUgVEFSR0VUX1NQRV9BQkkgMAotICNkZWZpbmUgVEFSR0VUX1NQRSAwCi0gI2Rl ZmluZSBUQVJHRVRfRTUwMCAwCi0tI2RlZmluZSBUQVJHRVRfSVNFTCByczYwMDBfaXNlbAotKyNk ZWZpbmUgVEFSR0VUX0lTRUw2NCAoVEFSR0VUX0lTRUwgJiYgVEFSR0VUX1BPV0VSUEM2NCkKLSAj ZGVmaW5lIFRBUkdFVF9GUFJTIDEKLSAjZGVmaW5lIFRBUkdFVF9FNTAwX1NJTkdMRSAwCi0gI2Rl ZmluZSBUQVJHRVRfRTUwMF9ET1VCTEUgMAotQEAgLTUzMCw2ICs2MDMsNyBAQCBleHRlcm4gaW50 IHJzNjAwMF94aWxpbnhfZnB1OwotICNlbmRpZgotICNkZWZpbmUgVU5JVFNfUEVSX0ZQX1dPUkQg OAotICNkZWZpbmUgVU5JVFNfUEVSX0FMVElWRUNfV09SRCAxNgotKyNkZWZpbmUgVU5JVFNfUEVS X1ZTWF9XT1JEIDE2Ci0gI2RlZmluZSBVTklUU19QRVJfU1BFX1dPUkQgOAotICNkZWZpbmUgVU5J VFNfUEVSX1BBSVJFRF9XT1JEIDgKLSAKLUBAIC02MDAsOCArNjc0LDkgQEAgZXh0ZXJuIGludCBy czYwMDBfeGlsaW54X2ZwdTsKLSAjZGVmaW5lIFBBUk1fQk9VTkRBUlkgKFRBUkdFVF8zMkJJVCA/ IDMyIDogNjQpCi0gCi0gLyogQm91bmRhcnkgKGluICpiaXRzKikgb24gd2hpY2ggc3RhY2sgcG9p bnRlciBzaG91bGQgYmUgYWxpZ25lZC4gICovCi0tI2RlZmluZSBTVEFDS19CT1VOREFSWSBcCi0t ICAoKFRBUkdFVF8zMkJJVCAmJiAhVEFSR0VUX0FMVElWRUMgJiYgIVRBUkdFVF9BTFRJVkVDX0FC SSkgPyA2NCA6IDEyOCkKLSsjZGVmaW5lIFNUQUNLX0JPVU5EQVJZCVwKLSsgICgoVEFSR0VUXzMy QklUICYmICFUQVJHRVRfQUxUSVZFQyAmJiAhVEFSR0VUX0FMVElWRUNfQUJJICYmICFUQVJHRVRf VlNYKSBcCi0rICAgID8gNjQgOiAxMjgpCi0gCi0gLyogQWxsb2NhdGlvbiBib3VuZGFyeSAoaW4g KmJpdHMqKSBmb3IgdGhlIGNvZGUgb2YgYSBmdW5jdGlvbi4gICovCi0gI2RlZmluZSBGVU5DVElP Tl9CT1VOREFSWSAzMgotQEAgLTYxMywxMCArNjg4LDExIEBAIGV4dGVybiBpbnQgcnM2MDAwX3hp bGlueF9mcHU7Ci0gICAgbG9jYWwgc3RvcmUuICBUWVBFIGlzIHRoZSBkYXRhIHR5cGUsIGFuZCBB TElHTiBpcyB0aGUgYWxpZ25tZW50Ci0gICAgdGhhdCB0aGUgb2JqZWN0IHdvdWxkIG9yZGluYXJp bHkgaGF2ZS4gICovCi0gI2RlZmluZSBMT0NBTF9BTElHTk1FTlQoVFlQRSwgQUxJR04pCQkJCVwK LS0gICgoVEFSR0VUX0FMVElWRUMgJiYgVFJFRV9DT0RFIChUWVBFKSA9PSBWRUNUT1JfVFlQRSkg PyAxMjggOglcCi0rICAoKChUQVJHRVRfQUxUSVZFQyB8fCBUQVJHRVRfVlNYKQkJCQlcCi0rICAg ICYmIFRSRUVfQ09ERSAoVFlQRSkgPT0gVkVDVE9SX1RZUEUpID8gMTI4IDoJCQlcCi0gICAgIChU QVJHRVRfRTUwMF9ET1VCTEUJCQkJCQlcCi0tICAgICAmJiBUWVBFX01PREUgKFRZUEUpID09IERG bW9kZSkgPyA2NCA6IFwKLS0gICAgKChUQVJHRVRfU1BFICYmIFRSRUVfQ09ERSAoVFlQRSkgPT0g VkVDVE9SX1RZUEUgXAotKyAgICAgJiYgVFlQRV9NT0RFIChUWVBFKSA9PSBERm1vZGUpID8gNjQg OgkJCVwKLSsgICAgKChUQVJHRVRfU1BFICYmIFRSRUVfQ09ERSAoVFlQRSkgPT0gVkVDVE9SX1RZ UEUJCVwKLSAgICAgICYmIFNQRV9WRUNUT1JfTU9ERSAoVFlQRV9NT0RFIChUWVBFKSkpIHx8IChU QVJHRVRfUEFJUkVEX0ZMT0FUIFwKLSAgICAgICAgICYmIFRSRUVfQ09ERSAoVFlQRSkgPT0gVkVD VE9SX1RZUEUgXAotICAgICAgICAgJiYgUEFJUkVEX1ZFQ1RPUl9NT0RFIChUWVBFX01PREUgKFRZ UEUpKSkpID8gNjQgOiBBTElHTikKLUBAIC02NzQsMTUgKzc1MCwxNyBAQCBleHRlcm4gaW50IHJz NjAwMF94aWxpbnhfZnB1OwotIC8qIERlZmluZSB0aGlzIG1hY3JvIHRvIGJlIHRoZSB2YWx1ZSAx IGlmIHVuYWxpZ25lZCBhY2Nlc3NlcyBoYXZlIGEgY29zdAotICAgIG1hbnkgdGltZXMgZ3JlYXRl ciB0aGFuIGFsaWduZWQgYWNjZXNzZXMsIGZvciBleGFtcGxlIGlmIHRoZXkgYXJlCi0gICAgZW11 bGF0ZWQgaW4gYSB0cmFwIGhhbmRsZXIuICAqLwotLS8qIEFsdGl2ZWMgdmVjdG9yIG1lbW9yeSBp bnN0cnVjdGlvbnMgc2ltcGx5IGlnbm9yZSB0aGUgbG93IGJpdHM7IFNQRQotLSAgIHZlY3RvciBt ZW1vcnkgaW5zdHJ1Y3Rpb25zIHRyYXAgb24gdW5hbGlnbmVkIGFjY2Vzc2VzLiAgKi8KLSsvKiBB bHRpdmVjIHZlY3RvciBtZW1vcnkgaW5zdHJ1Y3Rpb25zIHNpbXBseSBpZ25vcmUgdGhlIGxvdyBi aXRzOyBTUEUgdmVjdG9yCi0rICAgbWVtb3J5IGluc3RydWN0aW9ucyB0cmFwIG9uIHVuYWxpZ25l ZCBhY2Nlc3NlczsgVlNYIG1lbW9yeSBpbnN0cnVjdGlvbnMgYXJlCi0rICAgYWxpZ25lZCB0byA0 IG9yIDggYnl0ZXMuICAqLwotICNkZWZpbmUgU0xPV19VTkFMSUdORURfQUNDRVNTKE1PREUsIEFM SUdOKQkJCQlcCi0gICAoU1RSSUNUX0FMSUdOTUVOVAkJCQkJCQlcCi0gICAgfHwgKCgoTU9ERSkg PT0gU0Ztb2RlIHx8IChNT0RFKSA9PSBERm1vZGUgfHwgKE1PREUpID09IFRGbW9kZQlcCi0gCXx8 IChNT0RFKSA9PSBTRG1vZGUgfHwgKE1PREUpID09IEREbW9kZSB8fCAoTU9ERSkgPT0gVERtb2Rl CVwKLSAJfHwgKE1PREUpID09IERJbW9kZSkJCQkJCQlcCi0gICAgICAgICYmIChBTElHTikgPCAz MikJCQkJCQkJXAotLSAgIHx8IChWRUNUT1JfTU9ERV9QICgoTU9ERSkpICYmIChBTElHTikgPCBH RVRfTU9ERV9CSVRTSVpFICgoTU9ERSkpKSkKLSsgICB8fCAoVkVDVE9SX01PREVfUCAoKE1PREUp KSAmJiAoKChpbnQpKEFMSUdOKSkgPCBWRUNUT1JfQUxJR04gKE1PREUpKSkpCi0rCi0gDAotIC8q IFN0YW5kYXJkIHJlZ2lzdGVyIHVzYWdlLiAgKi8KLSAKLUBAIC05MDksMTYgKzk4Nyw2MCBAQCBl eHRlcm4gaW50IHJzNjAwMF94aWxpbnhfZnB1OwotIC8qIFRydWUgaWYgcmVnaXN0ZXIgaXMgYW4g QWx0aVZlYyByZWdpc3Rlci4gICovCi0gI2RlZmluZSBBTFRJVkVDX1JFR05PX1AoTikgKChOKSA+ PSBGSVJTVF9BTFRJVkVDX1JFR05PICYmIChOKSA8PSBMQVNUX0FMVElWRUNfUkVHTk8pCi0gCi0r LyogVHJ1ZSBpZiByZWdpc3RlciBpcyBhIFZTWCByZWdpc3Rlci4gICovCi0rI2RlZmluZSBWU1hf UkVHTk9fUChOKSAoRlBfUkVHTk9fUCAoTikgfHwgQUxUSVZFQ19SRUdOT19QIChOKSkKLSsKLSsv KiBBbHRlcm5hdGUgbmFtZSBmb3IgYW55IHZlY3RvciByZWdpc3RlciBzdXBwb3J0aW5nIGZsb2F0 aW5nIHBvaW50LCBubyBtYXR0ZXIKLSsgICB3aGljaCBpbnN0cnVjdGlvbiBzZXQocykgYXJlIGF2 YWlsYWJsZS4gICovCi0rI2RlZmluZSBWRkxPQVRfUkVHTk9fUChOKSBcCi0rICAoQUxUSVZFQ19S RUdOT19QIChOKSB8fCAoVEFSR0VUX1ZTWCAmJiBGUF9SRUdOT19QIChOKSkpCi0rCi0rLyogQWx0 ZXJuYXRlIG5hbWUgZm9yIGFueSB2ZWN0b3IgcmVnaXN0ZXIgc3VwcG9ydGluZyBpbnRlZ2VyLCBu byBtYXR0ZXIgd2hpY2gKLSsgICBpbnN0cnVjdGlvbiBzZXQocykgYXJlIGF2YWlsYWJsZS4gICov Ci0rI2RlZmluZSBWSU5UX1JFR05PX1AoTikgQUxUSVZFQ19SRUdOT19QIChOKQotKwotKy8qIEFs dGVybmF0ZSBuYW1lIGZvciBhbnkgdmVjdG9yIHJlZ2lzdGVyIHN1cHBvcnRpbmcgbG9naWNhbCBv cGVyYXRpb25zLCBubwotKyAgIG1hdHRlciB3aGljaCBpbnN0cnVjdGlvbiBzZXQocykgYXJlIGF2 YWlsYWJsZS4gICovCi0rI2RlZmluZSBWTE9HSUNBTF9SRUdOT19QKE4pIFZGTE9BVF9SRUdOT19Q IChOKQotKwotIC8qIFJldHVybiBudW1iZXIgb2YgY29uc2VjdXRpdmUgaGFyZCByZWdzIG5lZWRl ZCBzdGFydGluZyBhdCByZWcgUkVHTk8KLSAgICB0byBob2xkIHNvbWV0aGluZyBvZiBtb2RlIE1P REUuICAqLwotIAotLSNkZWZpbmUgSEFSRF9SRUdOT19OUkVHUyhSRUdOTywgTU9ERSkgcnM2MDAw X2hhcmRfcmVnbm9fbnJlZ3MgKChSRUdOTyksIChNT0RFKSkKLSsjZGVmaW5lIEhBUkRfUkVHTk9f TlJFR1MoUkVHTk8sIE1PREUpIHJzNjAwMF9oYXJkX3JlZ25vX25yZWdzWyhNT0RFKV1bKFJFR05P KV0KLSAKLSAjZGVmaW5lIEhBUkRfUkVHTk9fQ0FMTF9QQVJUX0NMT0JCRVJFRChSRUdOTywgTU9E RSkJXAotICAgKChUQVJHRVRfMzJCSVQgJiYgVEFSR0VUX1BPV0VSUEM2NAkJCVwKLSAgICAgJiYg KEdFVF9NT0RFX1NJWkUgKE1PREUpID4gNCkgIFwKLSAgICAgJiYgSU5UX1JFR05PX1AgKFJFR05P KSkgPyAxIDogMCkKLSAKLSsjZGVmaW5lIFZTWF9WRUNUT1JfTU9ERShNT0RFKQkJXAotKwkgKChN T0RFKSA9PSBWNFNGbW9kZQkJXAotKwkgIHx8IChNT0RFKSA9PSBWMkRGbW9kZSkJXAotKwotKyNk ZWZpbmUgVlNYX1ZFQ1RPUl9NT1ZFX01PREUoTU9ERSkJXAotKwkgKChNT0RFKSA9PSBWMTZRSW1v ZGUJCVwKLSsJICB8fCAoTU9ERSkgPT0gVjhISW1vZGUJCVwKLSsJICB8fCAoTU9ERSkgPT0gVjRT SW1vZGUJCVwKLSsJICB8fCAoTU9ERSkgPT0gVjJESW1vZGUJCVwKLSsJICB8fCAoTU9ERSkgPT0g VjRTRm1vZGUJCVwKLSsJICB8fCAoTU9ERSkgPT0gVjJERm1vZGUpCVwKLSsKLSsjZGVmaW5lIFZT WF9TQ0FMQVJfTU9ERShNT0RFKQkJXAotKwkoKE1PREUpID09IERGbW9kZSkKLSsKLSsjZGVmaW5l IFZTWF9NT0RFKE1PREUpCQkJXAotKwkoVlNYX1ZFQ1RPUl9NT0RFIChNT0RFKQkJXAotKwkgfHwg VlNYX1NDQUxBUl9NT0RFIChNT0RFKSkKLSsKLSsjZGVmaW5lIFZTWF9NT1ZFX01PREUoTU9ERSkJ CVwKLSsJKFZTWF9WRUNUT1JfTU9WRV9NT0RFIChNT0RFKQlcCi0rCSB8fCBWU1hfU0NBTEFSX01P REUoTU9ERSkJXAotKwkgfHwgKE1PREUpID09IFYxNlFJbW9kZQkJXAotKwkgfHwgKE1PREUpID09 IFY4SEltb2RlCQlcCi0rCSB8fCAoTU9ERSkgPT0gVjRTSW1vZGUJCVwKLSsJIHx8IChNT0RFKSA9 PSBWMkRJbW9kZQkJXAotKwkgfHwgKE1PREUpID09IFRJbW9kZSkKLSsKLSAjZGVmaW5lIEFMVElW RUNfVkVDVE9SX01PREUoTU9ERSkJXAotIAkgKChNT0RFKSA9PSBWMTZRSW1vZGUJCVwKLSAJICB8 fCAoTU9ERSkgPT0gVjhISW1vZGUJCVwKLUBAIC05MzQsMTAgKzEwNTYsMTIgQEAgZXh0ZXJuIGlu dCByczYwMDBfeGlsaW54X2ZwdTsKLSAjZGVmaW5lIFBBSVJFRF9WRUNUT1JfTU9ERShNT0RFKSAg ICAgICAgXAotICAgICAgICAgICgoTU9ERSkgPT0gVjJTRm1vZGUpICAgICAgICAgICAgCi0gCi0t I2RlZmluZSBVTklUU19QRVJfU0lNRF9XT1JEKE1PREUpCQkJCSAgICAgXAotLQkoVEFSR0VUX0FM VElWRUMgPyBVTklUU19QRVJfQUxUSVZFQ19XT1JECQkgICAgIFwKLS0JIDogKFRBUkdFVF9TUEUg PyBVTklUU19QRVJfU1BFX1dPUkQgOiAoVEFSR0VUX1BBSVJFRF9GTE9BVCA/IFwKLS0JIFVOSVRT X1BFUl9QQUlSRURfV09SRCA6IFVOSVRTX1BFUl9XT1JEKSkpCi0rI2RlZmluZSBVTklUU19QRVJf U0lNRF9XT1JEKE1PREUpCQkJCQlcCi0rCShUQVJHRVRfVlNYID8gVU5JVFNfUEVSX1ZTWF9XT1JE CQkJCVwKLSsJIDogKFRBUkdFVF9BTFRJVkVDID8gVU5JVFNfUEVSX0FMVElWRUNfV09SRAkJCVwK LSsJIDogKFRBUkdFVF9TUEUgPyBVTklUU19QRVJfU1BFX1dPUkQJCQkJXAotKwkgOiAoVEFSR0VU X1BBSVJFRF9GTE9BVCA/IFVOSVRTX1BFUl9QQUlSRURfV09SRAkJCVwKLSsJIDogVU5JVFNfUEVS X1dPUkQpKSkpCi0gCi0gLyogVmFsdWUgaXMgVFJVRSBpZiBoYXJkIHJlZ2lzdGVyIFJFR05PIGNh biBob2xkIGEgdmFsdWUgb2YKLSAgICBtYWNoaW5lLW1vZGUgTU9ERS4gICovCi1AQCAtOTY1LDYg KzEwODksMTAgQEAgZXh0ZXJuIGludCByczYwMDBfeGlsaW54X2ZwdTsKLSAgICA/IEFMVElWRUNf VkVDVE9SX01PREUgKE1PREUyKQkJXAotICAgIDogQUxUSVZFQ19WRUNUT1JfTU9ERSAoTU9ERTIp CQlcCi0gICAgPyBBTFRJVkVDX1ZFQ1RPUl9NT0RFIChNT0RFMSkJCVwKLSsgICA6IFZTWF9WRUNU T1JfTU9ERSAoTU9ERTEpCQkJXAotKyAgID8gVlNYX1ZFQ1RPUl9NT0RFIChNT0RFMikJCQlcCi0r ICAgOiBWU1hfVkVDVE9SX01PREUgKE1PREUyKQkJCVwKLSsgICA/IFZTWF9WRUNUT1JfTU9ERSAo TU9ERTEpCQkJXAotICAgIDogMSkKLSAKLSAvKiBQb3N0LXJlbG9hZCwgd2UgY2FuJ3QgdXNlIGFu eSBuZXcgQWx0aVZlYyByZWdpc3RlcnMsIGFzIHdlIGFscmVhZHkKLUBAIC0xMDU2LDkgKzExODQs MTAgQEAgZXh0ZXJuIGludCByczYwMDBfeGlsaW54X2ZwdTsKLSAgICBGb3IgYW55IHR3byBjbGFz c2VzLCBpdCBpcyB2ZXJ5IGRlc2lyYWJsZSB0aGF0IHRoZXJlIGJlIGFub3RoZXIKLSAgICBjbGFz cyB0aGF0IHJlcHJlc2VudHMgdGhlaXIgdW5pb24uICAqLwotIAotLS8qIFRoZSBSUy82MDAwIGhh cyB0aHJlZSB0eXBlcyBvZiByZWdpc3RlcnMsIGZpeGVkLXBvaW50LCBmbG9hdGluZy1wb2ludCwK LS0gICBhbmQgY29uZGl0aW9uIHJlZ2lzdGVycywgcGx1cyB0aHJlZSBzcGVjaWFsIHJlZ2lzdGVy cywgTVEsIENUUiwgYW5kIHRoZQotLSAgIGxpbmsgcmVnaXN0ZXIuICBBbHRpVmVjIGFkZHMgYSB2 ZWN0b3IgcmVnaXN0ZXIgY2xhc3MuCi0rLyogVGhlIFJTLzYwMDAgaGFzIHRocmVlIHR5cGVzIG9m IHJlZ2lzdGVycywgZml4ZWQtcG9pbnQsIGZsb2F0aW5nLXBvaW50LCBhbmQKLSsgICBjb25kaXRp b24gcmVnaXN0ZXJzLCBwbHVzIHRocmVlIHNwZWNpYWwgcmVnaXN0ZXJzLCBNUSwgQ1RSLCBhbmQg dGhlIGxpbmsKLSsgICByZWdpc3Rlci4gIEFsdGlWZWMgYWRkcyBhIHZlY3RvciByZWdpc3RlciBj bGFzcy4gIFZTWCByZWdpc3RlcnMgb3ZlcmxhcCB0aGUKLSsgICBGUFIgcmVnaXN0ZXJzIGFuZCB0 aGUgQWx0aXZlYyByZWdpc3RlcnMuCi0gCi0gICAgSG93ZXZlciwgcjAgaXMgc3BlY2lhbCBpbiB0 aGF0IGl0IGNhbm5vdCBiZSB1c2VkIGFzIGEgYmFzZSByZWdpc3Rlci4KLSAgICBTbyBtYWtlIGEg Y2xhc3MgZm9yIHJlZ2lzdGVycyB2YWxpZCBhcyBiYXNlIHJlZ2lzdGVycy4KLUBAIC0xMDczLDYg KzEyMDIsNyBAQCBlbnVtIHJlZ19jbGFzcwotICAgR0VORVJBTF9SRUdTLAotICAgRkxPQVRfUkVH UywKLSAgIEFMVElWRUNfUkVHUywKLSsgIFZTWF9SRUdTLAotICAgVlJTQVZFX1JFR1MsCi0gICBW U0NSX1JFR1MsCi0gICBTUEVfQUNDX1JFR1MsCi1AQCAtMTEwMyw2ICsxMjMzLDcgQEAgZW51bSBy ZWdfY2xhc3MKLSAgICJHRU5FUkFMX1JFR1MiLAkJCQkJCQlcCi0gICAiRkxPQVRfUkVHUyIsCQkJ CQkJCQlcCi0gICAiQUxUSVZFQ19SRUdTIiwJCQkJCQkJXAotKyAgIlZTWF9SRUdTIiwJCQkJCQkJ CVwKLSAgICJWUlNBVkVfUkVHUyIsCQkJCQkJCVwKLSAgICJWU0NSX1JFR1MiLAkJCQkJCQkJXAot ICAgIlNQRV9BQ0NfUkVHUyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLUBAIC0xMTMyLDYgKzEyNjMsNyBAQCBlbnVtIHJlZ19jbGFzcwot ICAgeyAweGZmZmZmZmZmLCAweDAwMDAwMDAwLCAweDAwMDAwMDA4LCAweDAwMDIwMDAwIH0sIC8q IEdFTkVSQUxfUkVHUyAqLyAgICAgXAotICAgeyAweDAwMDAwMDAwLCAweGZmZmZmZmZmLCAweDAw MDAwMDAwLCAweDAwMDAwMDAwIH0sIC8qIEZMT0FUX1JFR1MgKi8gICAgICAgXAotICAgeyAweDAw MDAwMDAwLCAweDAwMDAwMDAwLCAweGZmZmZlMDAwLCAweDAwMDAxZmZmIH0sIC8qIEFMVElWRUNf UkVHUyAqLyAgICAgXAotKyAgeyAweDAwMDAwMDAwLCAweGZmZmZmZmZmLCAweGZmZmZlMDAwLCAw eDAwMDAxZmZmIH0sIC8qIFZTWF9SRUdTICovCSAgICAgXAotICAgeyAweDAwMDAwMDAwLCAweDAw MDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAyMDAwIH0sIC8qIFZSU0FWRV9SRUdTICovCSAgICAg XAotICAgeyAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDA0MDAwIH0s IC8qIFZTQ1JfUkVHUyAqLwkgICAgIFwKLSAgIHsgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgw MDAwMDAwMCwgMHgwMDAwODAwMCB9LCAvKiBTUEVfQUNDX1JFR1MgKi8gICAgIFwKLUBAIC0xMTc5 LDggKzEzMTEsOCBAQCBlbnVtIHJlZ19jbGFzcwotICAgOiAoUkVHTk8pID09IENSMF9SRUdOTyA/ IENSMF9SRUdTCQlcCi0gICA6IENSX1JFR05PX1AgKFJFR05PKSA/IENSX1JFR1MJCVwKLSAgIDog KFJFR05PKSA9PSBNUV9SRUdOTyA/IE1RX1JFR1MJCVwKLS0gIDogKFJFR05PKSA9PSBMUl9SRUdO TyA/IExJTktfUkVHUwlcCi0tICA6IChSRUdOTykgPT0gQ1RSX1JFR05PID8gQ1RSX1JFR1MJXAot KyAgOiAoUkVHTk8pID09IExSX1JFR05PID8gTElOS19SRUdTCQlcCi0rICA6IChSRUdOTykgPT0g Q1RSX1JFR05PID8gQ1RSX1JFR1MJCVwKLSAgIDogKFJFR05PKSA9PSBBUkdfUE9JTlRFUl9SRUdO VU0gPyBCQVNFX1JFR1MJXAotICAgOiAoUkVHTk8pID09IFhFUl9SRUdOTyA/IFhFUl9SRUdTCQlc Ci0gICA6IChSRUdOTykgPT0gVlJTQVZFX1JFR05PID8gVlJTQVZFX1JFR1MJXAotQEAgLTExOTAs MTAgKzEzMjIsMTggQEAgZW51bSByZWdfY2xhc3MKLSAgIDogKFJFR05PKSA9PSBGUkFNRV9QT0lO VEVSX1JFR05VTSA/IEJBU0VfUkVHUwlcCi0gICA6IE5PX1JFR1MpCi0gCi0rLyogVlNYIHJlZ2lz dGVyIGNsYXNzZXMuICAqLwotK2V4dGVybiBlbnVtIHJlZ19jbGFzcyByczYwMDBfdmVjdG9yX3Jl Z19jbGFzc1tdOwotK2V4dGVybiBlbnVtIHJlZ19jbGFzcyByczYwMDBfdnN4X3JlZ19jbGFzczsK LSsKLSAvKiBUaGUgY2xhc3MgdmFsdWUgZm9yIGluZGV4IHJlZ2lzdGVycywgYW5kIHRoZSBvbmUg Zm9yIGJhc2UgcmVncy4gICovCi0gI2RlZmluZSBJTkRFWF9SRUdfQ0xBU1MgR0VORVJBTF9SRUdT Ci0gI2RlZmluZSBCQVNFX1JFR19DTEFTUyBCQVNFX1JFR1MKLSAKLSsvKiBSZXR1cm4gd2hldGhl ciBhIGdpdmVuIHJlZ2lzdGVyIGNsYXNzIGNhbiBob2xkIFZTWCBvYmplY3RzLiAgKi8KLSsjZGVm aW5lIFZTWF9SRUdfQ0xBU1NfUChDTEFTUykJCQlcCi0rICAoKENMQVNTKSA9PSBWU1hfUkVHUyB8 fCAoQ0xBU1MpID09IEZMT0FUX1JFR1MgfHwgKENMQVNTKSA9PSBBTFRJVkVDX1JFR1MpCi0rCi0g LyogR2l2ZW4gYW4gcnR4IFggYmVpbmcgcmVsb2FkZWQgaW50byBhIHJlZyByZXF1aXJlZCB0byBi ZQotICAgIGluIGNsYXNzIENMQVNTLCByZXR1cm4gdGhlIGNsYXNzIG9mIHJlZyB0byBhY3R1YWxs eSB1c2UuCi0gICAgSW4gZ2VuZXJhbCB0aGlzIGlzIGp1c3QgQ0xBU1M7IGJ1dCBvbiBzb21lIG1h Y2hpbmVzCi1AQCAtMTIxMywxMyArMTM1Myw3IEBAIGVudW0gcmVnX2NsYXNzCi0gICovCi0gCi0g I2RlZmluZSBQUkVGRVJSRURfUkVMT0FEX0NMQVNTKFgsQ0xBU1MpCQkJXAotLSAgKChDT05TVEFO VF9QIChYKQkJCQkJXAotLSAgICAmJiByZWdfY2xhc3Nlc19pbnRlcnNlY3RfcCAoKENMQVNTKSwg RkxPQVRfUkVHUykpCVwKLS0gICA/IE5PX1JFR1MgCQkJCQkJXAotLSAgIDogKEdFVF9NT0RFX0NM QVNTIChHRVRfTU9ERSAoWCkpID09IE1PREVfSU5UIAlcCi0tICAgICAgJiYgKENMQVNTKSA9PSBO T05fU1BFQ0lBTF9SRUdTKQkJCVwKLS0gICA/IEdFTkVSQUxfUkVHUwkJCQkJXAotLSAgIDogKENM QVNTKSkKLSsgIHJzNjAwMF9wcmVmZXJyZWRfcmVsb2FkX2NsYXNzIChYLCBDTEFTUykKLSAKLSAv KiBSZXR1cm4gdGhlIHJlZ2lzdGVyIGNsYXNzIG9mIGEgc2NyYXRjaCByZWdpc3RlciBuZWVkZWQg dG8gY29weSBJTiBpbnRvCi0gICAgb3Igb3V0IG9mIGEgcmVnaXN0ZXIgaW4gQ0xBU1MgaW4gTU9E RS4gIElmIGl0IGNhbiBiZSBkb25lIGRpcmVjdGx5LAotQEAgLTEyMzQsMTggKzEzNjgsNyBAQCBl bnVtIHJlZ19jbGFzcwotICAgIGFyZSBhdmFpbGFibGUuKi8KLSAKLSAjZGVmaW5lIFNFQ09OREFS WV9NRU1PUllfTkVFREVEKENMQVNTMSxDTEFTUzIsTU9ERSkJCQlcCi0tICgoQ0xBU1MxKSAhPSAo Q0xBU1MyKSAmJiAoKChDTEFTUzEpID09IEZMT0FUX1JFR1MJCQlcCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICYmICghVEFSR0VUX01GUEdQUiB8fCAhVEFSR0VUX1BPV0VSUEM2NAlcCi0t CQkJCXx8ICgoTU9ERSAhPSBERm1vZGUpCQkJXAotLQkJCQkgICAgJiYgKE1PREUgIT0gRERtb2Rl KQkJCVwKLS0JCQkJICAgICYmIChNT0RFICE9IERJbW9kZSkpKSkJCVwKLS0JCQkgICB8fCAoKENM QVNTMikgPT0gRkxPQVRfUkVHUwkJCVwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JiYgKCFUQVJHRVRfTUZQR1BSIHx8ICFUQVJHRVRfUE9XRVJQQzY0CVwKLS0JCQkJICAgfHwgKChN T0RFICE9IERGbW9kZSkJCQlcCi0tCQkJCSAgICAgICAmJiAoTU9ERSAhPSBERG1vZGUpCQlcCi0t CQkJCSAgICAgICAmJiAoTU9ERSAhPSBESW1vZGUpKSkpCQlcCi0tCQkJICAgfHwgKENMQVNTMSkg PT0gQUxUSVZFQ19SRUdTCQkJXAotLQkJCSAgIHx8IChDTEFTUzIpID09IEFMVElWRUNfUkVHUykp Ci0rICByczYwMDBfc2Vjb25kYXJ5X21lbW9yeV9uZWVkZWQgKENMQVNTMSwgQ0xBU1MyLCBNT0RF KQotIAotIC8qIEZvciBjcHVzIHRoYXQgY2Fubm90IGxvYWQvc3RvcmUgU0Rtb2RlIHZhbHVlcyBm cm9tIHRoZSA2NC1iaXQKLSAgICBGUCByZWdpc3RlcnMgd2l0aG91dCB1c2luZyBhIGZ1bGwgNjQt Yml0IGxvYWQvc3RvcmUsIHdlIG5lZWQKLUBAIC0xMjU3LDMyICsxMzgwLDE1IEBAIGVudW0gcmVn X2NsYXNzCi0gLyogUmV0dXJuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zZWN1dGl2ZSByZWdp c3RlcnMKLSAgICBuZWVkZWQgdG8gcmVwcmVzZW50IG1vZGUgTU9ERSBpbiBhIHJlZ2lzdGVyIG9m IGNsYXNzIENMQVNTLgotIAotLSAgIE9uIFJTLzYwMDAsIHRoaXMgaXMgdGhlIHNpemUgb2YgTU9E RSBpbiB3b3JkcywKLS0gICBleGNlcHQgaW4gdGhlIEZQIHJlZ3MsIHdoZXJlIGEgc2luZ2xlIHJl ZyBpcyBlbm91Z2ggZm9yIHR3byB3b3Jkcy4gICovCi0tI2RlZmluZSBDTEFTU19NQVhfTlJFR1Mo Q0xBU1MsIE1PREUpCQkJCQlcCi0tICgoKENMQVNTKSA9PSBGTE9BVF9SRUdTKSAJCQkJCQlcCi0t ICA/ICgoR0VUX01PREVfU0laRSAoTU9ERSkgKyBVTklUU19QRVJfRlBfV09SRCAtIDEpIC8gVU5J VFNfUEVSX0ZQX1dPUkQpIFwKLS0gIDogKFRBUkdFVF9FNTAwX0RPVUJMRSAmJiAoQ0xBU1MpID09 IEdFTkVSQUxfUkVHUwkJCVwKLS0gICAgICYmIChNT0RFKSA9PSBERm1vZGUpCQkJCVwKLS0gID8g MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0tICA6ICgoR0VUX01PREVfU0laRSAoTU9ERSkgKyBVTklUU19QRVJfV09S RCAtIDEpIC8gVU5JVFNfUEVSX1dPUkQpKQotKyAgIE9uIFJTLzYwMDAsIHRoaXMgaXMgdGhlIHNp emUgb2YgTU9ERSBpbiB3b3JkcywgZXhjZXB0IGluIHRoZSBGUCByZWdzLCB3aGVyZQotKyAgIGEg c2luZ2xlIHJlZyBpcyBlbm91Z2ggZm9yIHR3byB3b3JkcywgdW5sZXNzIHdlIGhhdmUgVlNYLCB3 aGVyZSB0aGUgRlAKLSsgICByZWdpc3RlcnMgY2FuIGhvbGQgMTI4IGJpdHMuICAqLwotKyNkZWZp bmUgQ0xBU1NfTUFYX05SRUdTKENMQVNTLCBNT0RFKSByczYwMDBfY2xhc3NfbWF4X25yZWdzWyhN T0RFKV1bKENMQVNTKV0KLSAKLSAvKiBSZXR1cm4gbm9uemVybyBpZiBmb3IgQ0xBU1MgYSBtb2Rl IGNoYW5nZSBmcm9tIEZST00gdG8gVE8gaXMgaW52YWxpZC4gICovCi0gCi0gI2RlZmluZSBDQU5O T1RfQ0hBTkdFX01PREVfQ0xBU1MoRlJPTSwgVE8sIENMQVNTKQkJCVwKLS0gIChHRVRfTU9ERV9T SVpFIChGUk9NKSAhPSBHRVRfTU9ERV9TSVpFIChUTykJCQkJXAotLSAgID8gKChHRVRfTU9ERV9T SVpFIChGUk9NKSA8IDggfHwgR0VUX01PREVfU0laRSAoVE8pIDwgOAkJXAotLSAgICAgICB8fCBU QVJHRVRfSUVFRVFVQUQpCQkJCQkJXAotLSAgICAgICYmIHJlZ19jbGFzc2VzX2ludGVyc2VjdF9w IChGTE9BVF9SRUdTLCBDTEFTUykpCQkJXAotLSAgIDogKCgoVEFSR0VUX0U1MDBfRE9VQkxFCQkJ CQkJXAotLQkmJiAoKCgoVE8pID09IERGbW9kZSkgKyAoKEZST00pID09IERGbW9kZSkpID09IDEJ CVwKLS0JICAgIHx8ICgoKFRPKSA9PSBURm1vZGUpICsgKChGUk9NKSA9PSBURm1vZGUpKSA9PSAx CQlcCi0tCSAgICB8fCAoKChUTykgPT0gRERtb2RlKSArICgoRlJPTSkgPT0gRERtb2RlKSkgPT0g MQkJXAotLQkgICAgfHwgKCgoVE8pID09IFREbW9kZSkgKyAoKEZST00pID09IFREbW9kZSkpID09 IDEJCVwKLS0JICAgIHx8ICgoKFRPKSA9PSBESW1vZGUpICsgKChGUk9NKSA9PSBESW1vZGUpKSA9 PSAxKSkJCVwKLS0gICAgICAgfHwgKFRBUkdFVF9TUEUJCQkJCQkJXAotLQkgICAmJiAoU1BFX1ZF Q1RPUl9NT0RFIChGUk9NKSArIFNQRV9WRUNUT1JfTU9ERSAoVE8pKSA9PSAxKSkJXAotLSAgICAg ICYmIHJlZ19jbGFzc2VzX2ludGVyc2VjdF9wIChHRU5FUkFMX1JFR1MsIENMQVNTKSkpCi0rICBy czYwMDBfY2Fubm90X2NoYW5nZV9tb2RlX2NsYXNzIChGUk9NLCBUTywgQ0xBU1MpCi0gCi0gLyog U3RhY2sgbGF5b3V0OyBmdW5jdGlvbiBlbnRyeSwgZXhpdCBhbmQgY2FsbGluZy4gICovCi0gCi1A QCAtMTM0Myw4ICsxNDQ5LDggQEAgZXh0ZXJuIGVudW0gcnM2MDAwX2FiaSByczYwMDBfY3VycmVu dF9hYgotICNkZWZpbmUgU1RBUlRJTkdfRlJBTUVfT0ZGU0VUCQkJCQkJXAotICAgKEZSQU1FX0dS T1dTX0RPV05XQVJECQkJCQkJCVwKLSAgICA/IDAJCQkJCQkJCQlcCi0tICAgOiAoUlM2MDAwX0FM SUdOIChjcnRsLT5vdXRnb2luZ19hcmdzX3NpemUsCQlcCi0tCQkgICAgVEFSR0VUX0FMVElWRUMg PyAxNiA6IDgpCQkJCVwKLSsgICA6IChSUzYwMDBfQUxJR04gKGNydGwtPm91dGdvaW5nX2FyZ3Nf c2l6ZSwJCQkJXAotKwkJICAgIChUQVJHRVRfQUxUSVZFQyB8fCBUQVJHRVRfVlNYKSA/IDE2IDog OCkJCVwKLSAgICAgICArIFJTNjAwMF9TQVZFX0FSRUEpKQotIAotIC8qIE9mZnNldCBmcm9tIHRo ZSBzdGFjayBwb2ludGVyIHJlZ2lzdGVyIHRvIGFuIGl0ZW0gZHluYW1pY2FsbHkKLUBAIC0xMzU0 LDggKzE0NjAsOCBAQCBleHRlcm4gZW51bSByczYwMDBfYWJpIHJzNjAwMF9jdXJyZW50X2FiCi0g ICAgbGVuZ3RoIG9mIHRoZSBvdXRnb2luZyBhcmd1bWVudHMuICBUaGUgZGVmYXVsdCBpcyBjb3Jy ZWN0IGZvciBtb3N0Ci0gICAgbWFjaGluZXMuICBTZWUgYGZ1bmN0aW9uLmMnIGZvciBkZXRhaWxz LiAgKi8KLSAjZGVmaW5lIFNUQUNLX0RZTkFNSUNfT0ZGU0VUKEZVTkRFQ0wpCQkJCQlcCi0tICAo UlM2MDAwX0FMSUdOIChjcnRsLT5vdXRnb2luZ19hcmdzX3NpemUsCQkJXAotLQkJIFRBUkdFVF9B TFRJVkVDID8gMTYgOiA4KQkJCQlcCi0rICAoUlM2MDAwX0FMSUdOIChjcnRsLT5vdXRnb2luZ19h cmdzX3NpemUsCQkJCVwKLSsJCSAoVEFSR0VUX0FMVElWRUMgfHwgVEFSR0VUX1ZTWCkgPyAxNiA6 IDgpCQlcCi0gICAgKyAoU1RBQ0tfUE9JTlRFUl9PRkZTRVQpKQotIAotIC8qIElmIHdlIGdlbmVy YXRlIGFuIGluc24gdG8gcHVzaCBCWVRFUyBieXRlcywKLUBAIC0xNjA1LDcgKzE3MTEsNyBAQCB0 eXBlZGVmIHN0cnVjdCByczYwMDBfYXJncwotICNkZWZpbmUJRVBJTE9HVUVfVVNFUyhSRUdOTykJ CQkJCVwKLSAgICgocmVsb2FkX2NvbXBsZXRlZCAmJiAoUkVHTk8pID09IExSX1JFR05PKQkJCVwK LSAgICB8fCAoVEFSR0VUX0FMVElWRUMgJiYgKFJFR05PKSA9PSBWUlNBVkVfUkVHTk8pCQlcCi0t ICAgfHwgKGNydGwtPmNhbGxzX2VoX3JldHVybgkJCQlcCi0rICAgfHwgKGNydGwtPmNhbGxzX2Vo X3JldHVybgkJCQkJXAotICAgICAgICAmJiBUQVJHRVRfQUlYCQkJCQkJXAotICAgICAgICAmJiAo UkVHTk8pID09IDIpKQotIAotQEAgLTIzMTYsNyArMjQyMiwyNCBAQCBleHRlcm4gY2hhciByczYw MDBfcmVnX25hbWVzW11bOF07CS8qIHJlCi0gICAvKiBubyBhZGRpdGlvbmFsIG5hbWVzIGZvcjog bXEsIGxyLCBjdHIsIGFwICovCQlcCi0gICB7ImNyMCIsICA2OH0sIHsiY3IxIiwgIDY5fSwgeyJj cjIiLCAgNzB9LCB7ImNyMyIsICA3MX0sCVwKLSAgIHsiY3I0IiwgIDcyfSwgeyJjcjUiLCAgNzN9 LCB7ImNyNiIsICA3NH0sIHsiY3I3IiwgIDc1fSwJXAotLSAgeyJjYyIsICAgNjh9LCB7InNwIiwg ICAgMX0sIHsidG9jIiwgICAyfSB9Ci0rICB7ImNjIiwgICA2OH0sIHsic3AiLCAgICAxfSwgeyJ0 b2MiLCAgIDJ9LAkJCVwKLSsgIC8qIFZTWCByZWdpc3RlcnMgb3ZlcmxhaWQgb24gdG9wIG9mIEZS LCBBbHRpdmVjIHJlZ2lzdGVycyAqLwlcCi0rICB7InZzMCIsICAzMn0sIHsidnMxIiwgIDMzfSwg eyJ2czIiLCAgMzR9LCB7InZzMyIsICAzNX0sCVwKLSsgIHsidnM0IiwgIDM2fSwgeyJ2czUiLCAg Mzd9LCB7InZzNiIsICAzOH0sIHsidnM3IiwgIDM5fSwJXAotKyAgeyJ2czgiLCAgNDB9LCB7InZz OSIsICA0MX0sIHsidnMxMCIsIDQyfSwgeyJ2czExIiwgNDN9LAlcCi0rICB7InZzMTIiLCA0NH0s IHsidnMxMyIsIDQ1fSwgeyJ2czE0IiwgNDZ9LCB7InZzMTUiLCA0N30sCVwKLSsgIHsidnMxNiIs IDQ4fSwgeyJ2czE3IiwgNDl9LCB7InZzMTgiLCA1MH0sIHsidnMxOSIsIDUxfSwJXAotKyAgeyJ2 czIwIiwgNTJ9LCB7InZzMjEiLCA1M30sIHsidnMyMiIsIDU0fSwgeyJ2czIzIiwgNTV9LAlcCi0r ICB7InZzMjQiLCA1Nn0sIHsidnMyNSIsIDU3fSwgeyJ2czI2IiwgNTh9LCB7InZzMjciLCA1OX0s CVwKLSsgIHsidnMyOCIsIDYwfSwgeyJ2czI5IiwgNjF9LCB7InZzMzAiLCA2Mn0sIHsidnMzMSIs IDYzfSwJXAotKyAgeyJ2czMyIiwgNzd9LCB7InZzMzMiLCA3OH0sIHsidnMzNCIsIDc5fSwgeyJ2 czM1IiwgODB9LCAgICAgICBcCi0rICB7InZzMzYiLCA4MX0sIHsidnMzNyIsIDgyfSwgeyJ2czM4 IiwgODN9LCB7InZzMzkiLCA4NH0sICAgICAgIFwKLSsgIHsidnM0MCIsIDg1fSwgeyJ2czQxIiwg ODZ9LCB7InZzNDIiLCA4N30sIHsidnM0MyIsIDg4fSwgICAgICAgXAotKyAgeyJ2czQ0IiwgODl9 LCB7InZzNDUiLCA5MH0sIHsidnM0NiIsIDkxfSwgeyJ2czQ3IiwgOTJ9LCAgICAgICBcCi0rICB7 InZzNDgiLCA5M30sIHsidnM0OSIsIDk0fSwgeyJ2czUwIiwgOTV9LCB7InZzNTEiLCA5Nn0sICAg ICAgIFwKLSsgIHsidnM1MiIsIDk3fSwgeyJ2czUzIiwgOTh9LCB7InZzNTQiLCA5OX0sIHsidnM1 NSIsIDEwMH0sCVwKLSsgIHsidnM1NiIsIDEwMX0seyJ2czU3IiwgMTAyfSx7InZzNTgiLCAxMDN9 LHsidnM1OSIsIDEwNH0sICAgICAgXAotKyAgeyJ2czYwIiwgMTA1fSx7InZzNjEiLCAxMDZ9LHsi dnM2MiIsIDEwN30seyJ2czYzIiwgMTA4fSB9Ci0gCi0gLyogVGV4dCB0byB3cml0ZSBvdXQgYWZ0 ZXIgYSBDQUxMIHRoYXQgbWF5IGJlIHJlcGxhY2VkIGJ5IGdsdWUgY29kZSBieQotICAgIHRoZSBs b2FkZXIuICBUaGlzIGRlcGVuZHMgb24gdGhlIEFJWCB2ZXJzaW9uLiAgKi8KLUBAIC0yNDgwLDEw ICsyNjAzLDE0IEBAIGVudW0gcnM2MDAwX2J1aWx0aW5zCi0gICBBTFRJVkVDX0JVSUxUSU5fVlNF TF80U0YsCi0gICBBTFRJVkVDX0JVSUxUSU5fVlNFTF84SEksCi0gICBBTFRJVkVDX0JVSUxUSU5f VlNFTF8xNlFJLAotKyAgQUxUSVZFQ19CVUlMVElOX1ZTRUxfMkRGLAkJLyogbmVlZGVkIGZvciBW U1ggKi8KLSsgIEFMVElWRUNfQlVJTFRJTl9WU0VMXzJESSwJCS8qIG5lZWRlZCBmb3IgVlNYICov Ci0gICBBTFRJVkVDX0JVSUxUSU5fVlBFUk1fNFNJLAotICAgQUxUSVZFQ19CVUlMVElOX1ZQRVJN XzRTRiwKLSAgIEFMVElWRUNfQlVJTFRJTl9WUEVSTV84SEksCi0gICBBTFRJVkVDX0JVSUxUSU5f VlBFUk1fMTZRSSwKLSsgIEFMVElWRUNfQlVJTFRJTl9WUEVSTV8yREYsCQkvKiBuZWVkZWQgZm9y IFZTWCAqLwotKyAgQUxUSVZFQ19CVUlMVElOX1ZQRVJNXzJESSwJCS8qIG5lZWRlZCBmb3IgVlNY ICovCi0gICBBTFRJVkVDX0JVSUxUSU5fVlBLVUhVTSwKLSAgIEFMVElWRUNfQlVJTFRJTl9WUEtV V1VNLAotICAgQUxUSVZFQ19CVUlMVElOX1ZQS1BYLAotQEAgLTMxMTAsNiArMzIzNywxNjMgQEAg ZW51bSByczYwMDBfYnVpbHRpbnMKLSAgIFJTNjAwMF9CVUlMVElOX1JFQ0lQRiwKLSAgIFJTNjAw MF9CVUlMVElOX1JTUVJURiwKLSAKLSsgIC8qIFZTWCBidWlsdGlucy4gICovCi0rICBWU1hfQlVJ TFRJTl9MWFNEVVgsCi0rICBWU1hfQlVJTFRJTl9MWFNEWCwKLSsgIFZTWF9CVUlMVElOX0xYVkQy VVgsCi0rICBWU1hfQlVJTFRJTl9MWFZEMlgsCi0rICBWU1hfQlVJTFRJTl9MWFZEU1gsCi0rICBW U1hfQlVJTFRJTl9MWFZXNFVYLAotKyAgVlNYX0JVSUxUSU5fTFhWVzRYLAotKyAgVlNYX0JVSUxU SU5fU1RYU0RVWCwKLSsgIFZTWF9CVUlMVElOX1NUWFNEWCwKLSsgIFZTWF9CVUlMVElOX1NUWFZE MlVYLAotKyAgVlNYX0JVSUxUSU5fU1RYVkQyWCwKLSsgIFZTWF9CVUlMVElOX1NUWFZXNFVYLAot KyAgVlNYX0JVSUxUSU5fU1RYVlc0WCwKLSsgIFZTWF9CVUlMVElOX1hTQUJTRFAsCi0rICBWU1hf QlVJTFRJTl9YU0FERERQLAotKyAgVlNYX0JVSUxUSU5fWFNDTVBPRFAsCi0rICBWU1hfQlVJTFRJ Tl9YU0NNUFVEUCwKLSsgIFZTWF9CVUlMVElOX1hTQ1BTR05EUCwKLSsgIFZTWF9CVUlMVElOX1hT Q1ZEUFNQLAotKyAgVlNYX0JVSUxUSU5fWFNDVkRQU1hEUywKLSsgIFZTWF9CVUlMVElOX1hTQ1ZE UFNYV1MsCi0rICBWU1hfQlVJTFRJTl9YU0NWRFBVWERTLAotKyAgVlNYX0JVSUxUSU5fWFNDVkRQ VVhXUywKLSsgIFZTWF9CVUlMVElOX1hTQ1ZTUERQLAotKyAgVlNYX0JVSUxUSU5fWFNDVlNYRERQ LAotKyAgVlNYX0JVSUxUSU5fWFNDVlVYRERQLAotKyAgVlNYX0JVSUxUSU5fWFNESVZEUCwKLSsg IFZTWF9CVUlMVElOX1hTTUFEREFEUCwKLSsgIFZTWF9CVUlMVElOX1hTTUFERE1EUCwKLSsgIFZT WF9CVUlMVElOX1hTTUFYRFAsCi0rICBWU1hfQlVJTFRJTl9YU01JTkRQLAotKyAgVlNYX0JVSUxU SU5fWFNNT1ZEUCwKLSsgIFZTWF9CVUlMVElOX1hTTVNVQkFEUCwKLSsgIFZTWF9CVUlMVElOX1hT TVNVQk1EUCwKLSsgIFZTWF9CVUlMVElOX1hTTVVMRFAsCi0rICBWU1hfQlVJTFRJTl9YU05BQlNE UCwKLSsgIFZTWF9CVUlMVElOX1hTTkVHRFAsCi0rICBWU1hfQlVJTFRJTl9YU05NQUREQURQLAot KyAgVlNYX0JVSUxUSU5fWFNOTUFERE1EUCwKLSsgIFZTWF9CVUlMVElOX1hTTk1TVUJBRFAsCi0r ICBWU1hfQlVJTFRJTl9YU05NU1VCTURQLAotKyAgVlNYX0JVSUxUSU5fWFNSRFBJLAotKyAgVlNY X0JVSUxUSU5fWFNSRFBJQywKLSsgIFZTWF9CVUlMVElOX1hTUkRQSU0sCi0rICBWU1hfQlVJTFRJ Tl9YU1JEUElQLAotKyAgVlNYX0JVSUxUSU5fWFNSRFBJWiwKLSsgIFZTWF9CVUlMVElOX1hTUkVE UCwKLSsgIFZTWF9CVUlMVElOX1hTUlNRUlRFRFAsCi0rICBWU1hfQlVJTFRJTl9YU1NRUlREUCwK LSsgIFZTWF9CVUlMVElOX1hTU1VCRFAsCi0rICBWU1hfQlVJTFRJTl9YU1RESVZEUCwKLSsgIFZT WF9CVUlMVElOX1hTVFNRUlREUCwKLSsgIFZTWF9CVUlMVElOX1hWQUJTRFAsCi0rICBWU1hfQlVJ TFRJTl9YVkFCU1NQLAotKyAgVlNYX0JVSUxUSU5fWFZBREREUCwKLSsgIFZTWF9CVUlMVElOX1hW QUREU1AsCi0rICBWU1hfQlVJTFRJTl9YVkNNUEVRRFAsCi0rICBWU1hfQlVJTFRJTl9YVkNNUEVR U1AsCi0rICBWU1hfQlVJTFRJTl9YVkNNUEdFRFAsCi0rICBWU1hfQlVJTFRJTl9YVkNNUEdFU1As Ci0rICBWU1hfQlVJTFRJTl9YVkNNUEdURFAsCi0rICBWU1hfQlVJTFRJTl9YVkNNUEdUU1AsCi0r ICBWU1hfQlVJTFRJTl9YVkNQU0dORFAsCi0rICBWU1hfQlVJTFRJTl9YVkNQU0dOU1AsCi0rICBW U1hfQlVJTFRJTl9YVkNWRFBTUCwKLSsgIFZTWF9CVUlMVElOX1hWQ1ZEUFNYRFMsCi0rICBWU1hf QlVJTFRJTl9YVkNWRFBTWFdTLAotKyAgVlNYX0JVSUxUSU5fWFZDVkRQVVhEUywKLSsgIFZTWF9C VUlMVElOX1hWQ1ZEUFVYV1MsCi0rICBWU1hfQlVJTFRJTl9YVkNWU1BEUCwKLSsgIFZTWF9CVUlM VElOX1hWQ1ZTUFNYRFMsCi0rICBWU1hfQlVJTFRJTl9YVkNWU1BTWFdTLAotKyAgVlNYX0JVSUxU SU5fWFZDVlNQVVhEUywKLSsgIFZTWF9CVUlMVElOX1hWQ1ZTUFVYV1MsCi0rICBWU1hfQlVJTFRJ Tl9YVkNWU1hERFAsCi0rICBWU1hfQlVJTFRJTl9YVkNWU1hEU1AsCi0rICBWU1hfQlVJTFRJTl9Y VkNWU1hXRFAsCi0rICBWU1hfQlVJTFRJTl9YVkNWU1hXU1AsCi0rICBWU1hfQlVJTFRJTl9YVkNW VVhERFAsCi0rICBWU1hfQlVJTFRJTl9YVkNWVVhEU1AsCi0rICBWU1hfQlVJTFRJTl9YVkNWVVhX RFAsCi0rICBWU1hfQlVJTFRJTl9YVkNWVVhXU1AsCi0rICBWU1hfQlVJTFRJTl9YVkRJVkRQLAot KyAgVlNYX0JVSUxUSU5fWFZESVZTUCwKLSsgIFZTWF9CVUlMVElOX1hWTUFEREFEUCwKLSsgIFZT WF9CVUlMVElOX1hWTUFEREFTUCwKLSsgIFZTWF9CVUlMVElOX1hWTUFERE1EUCwKLSsgIFZTWF9C VUlMVElOX1hWTUFERE1TUCwKLSsgIFZTWF9CVUlMVElOX1hWTUFYRFAsCi0rICBWU1hfQlVJTFRJ Tl9YVk1BWFNQLAotKyAgVlNYX0JVSUxUSU5fWFZNSU5EUCwKLSsgIFZTWF9CVUlMVElOX1hWTUlO U1AsCi0rICBWU1hfQlVJTFRJTl9YVk1PVkRQLAotKyAgVlNYX0JVSUxUSU5fWFZNT1ZTUCwKLSsg IFZTWF9CVUlMVElOX1hWTVNVQkFEUCwKLSsgIFZTWF9CVUlMVElOX1hWTVNVQkFTUCwKLSsgIFZT WF9CVUlMVElOX1hWTVNVQk1EUCwKLSsgIFZTWF9CVUlMVElOX1hWTVNVQk1TUCwKLSsgIFZTWF9C VUlMVElOX1hWTVVMRFAsCi0rICBWU1hfQlVJTFRJTl9YVk1VTFNQLAotKyAgVlNYX0JVSUxUSU5f WFZOQUJTRFAsCi0rICBWU1hfQlVJTFRJTl9YVk5BQlNTUCwKLSsgIFZTWF9CVUlMVElOX1hWTkVH RFAsCi0rICBWU1hfQlVJTFRJTl9YVk5FR1NQLAotKyAgVlNYX0JVSUxUSU5fWFZOTUFEREFEUCwK LSsgIFZTWF9CVUlMVElOX1hWTk1BRERBU1AsCi0rICBWU1hfQlVJTFRJTl9YVk5NQURETURQLAot KyAgVlNYX0JVSUxUSU5fWFZOTUFERE1TUCwKLSsgIFZTWF9CVUlMVElOX1hWTk1TVUJBRFAsCi0r ICBWU1hfQlVJTFRJTl9YVk5NU1VCQVNQLAotKyAgVlNYX0JVSUxUSU5fWFZOTVNVQk1EUCwKLSsg IFZTWF9CVUlMVElOX1hWTk1TVUJNU1AsCi0rICBWU1hfQlVJTFRJTl9YVlJEUEksCi0rICBWU1hf QlVJTFRJTl9YVlJEUElDLAotKyAgVlNYX0JVSUxUSU5fWFZSRFBJTSwKLSsgIFZTWF9CVUlMVElO X1hWUkRQSVAsCi0rICBWU1hfQlVJTFRJTl9YVlJEUElaLAotKyAgVlNYX0JVSUxUSU5fWFZSRURQ LAotKyAgVlNYX0JVSUxUSU5fWFZSRVNQLAotKyAgVlNYX0JVSUxUSU5fWFZSU1BJLAotKyAgVlNY X0JVSUxUSU5fWFZSU1BJQywKLSsgIFZTWF9CVUlMVElOX1hWUlNQSU0sCi0rICBWU1hfQlVJTFRJ Tl9YVlJTUElQLAotKyAgVlNYX0JVSUxUSU5fWFZSU1BJWiwKLSsgIFZTWF9CVUlMVElOX1hWUlNR UlRFRFAsCi0rICBWU1hfQlVJTFRJTl9YVlJTUVJURVNQLAotKyAgVlNYX0JVSUxUSU5fWFZTUVJU RFAsCi0rICBWU1hfQlVJTFRJTl9YVlNRUlRTUCwKLSsgIFZTWF9CVUlMVElOX1hWU1VCRFAsCi0r ICBWU1hfQlVJTFRJTl9YVlNVQlNQLAotKyAgVlNYX0JVSUxUSU5fWFZURElWRFAsCi0rICBWU1hf QlVJTFRJTl9YVlRESVZTUCwKLSsgIFZTWF9CVUlMVElOX1hWVFNRUlREUCwKLSsgIFZTWF9CVUlM VElOX1hWVFNRUlRTUCwKLSsgIFZTWF9CVUlMVElOX1hYTEFORCwKLSsgIFZTWF9CVUlMVElOX1hY TEFOREMsCi0rICBWU1hfQlVJTFRJTl9YWExOT1IsCi0rICBWU1hfQlVJTFRJTl9YWExPUiwKLSsg IFZTWF9CVUlMVElOX1hYTFhPUiwKLSsgIFZTWF9CVUlMVElOX1hYTVJHSEQsCi0rICBWU1hfQlVJ TFRJTl9YWE1SR0hXLAotKyAgVlNYX0JVSUxUSU5fWFhNUkdMRCwKLSsgIFZTWF9CVUlMVElOX1hY TVJHTFcsCi0rICBWU1hfQlVJTFRJTl9YWFBFUk1ESSwKLSsgIFZTWF9CVUlMVElOX1hYU0VMLAot KyAgVlNYX0JVSUxUSU5fWFhTTERXSSwKLSsgIFZTWF9CVUlMVElOX1hYU1BMVEQsCi0rICBWU1hf QlVJTFRJTl9YWFNQTFRXLAotKyAgVlNYX0JVSUxUSU5fWFhTV0FQRCwKLSsKLSsgIC8qIENvbWJp bmUgVlNYL0FsdGl2ZWMgYnVpbHRpbnMuICAqLwotKyAgVkVDVE9SX0JVSUxUSU5fRkxPQVRfVjRT SV9WNFNGLAotKyAgVkVDVE9SX0JVSUxUSU5fVU5TRkxPQVRfVjRTSV9WNFNGLAotKyAgVkVDVE9S X0JVSUxUSU5fRklYX1Y0U0ZfVjRTSSwKLSsgIFZFQ1RPUl9CVUlMVElOX0ZJWFVOU19WNFNGX1Y0 U0ksCi0rCi0gICBSUzYwMDBfQlVJTFRJTl9DT1VOVAotIH07Ci0gCi1AQCAtMzEyMyw2ICszNDA3 LDggQEAgZW51bSByczYwMDBfYnVpbHRpbl90eXBlX2luZGV4Ci0gICBSUzYwMDBfQlRJX1YxNlFJ LAotICAgUlM2MDAwX0JUSV9WMlNJLAotICAgUlM2MDAwX0JUSV9WMlNGLAotKyAgUlM2MDAwX0JU SV9WMkRJLAotKyAgUlM2MDAwX0JUSV9WMkRGLAotICAgUlM2MDAwX0JUSV9WNEhJLAotICAgUlM2 MDAwX0JUSV9WNFNJLAotICAgUlM2MDAwX0JUSV9WNFNGLAotQEAgLTMxNDYsNyArMzQzMiwxMCBA QCBlbnVtIHJzNjAwMF9idWlsdGluX3R5cGVfaW5kZXgKLSAgIFJTNjAwMF9CVElfVUlOVEhJLAkJ IC8qIHVuc2lnbmVkX2ludEhJX3R5cGVfbm9kZSAqLwotICAgUlM2MDAwX0JUSV9JTlRTSSwJCSAv KiBpbnRTSV90eXBlX25vZGUgKi8KLSAgIFJTNjAwMF9CVElfVUlOVFNJLAkJIC8qIHVuc2lnbmVk X2ludFNJX3R5cGVfbm9kZSAqLwotKyAgUlM2MDAwX0JUSV9JTlRESSwJCSAvKiBpbnRESV90eXBl X25vZGUgKi8KLSsgIFJTNjAwMF9CVElfVUlOVERJLAkJIC8qIHVuc2lnbmVkX2ludERJX3R5cGVf bm9kZSAqLwotICAgUlM2MDAwX0JUSV9mbG9hdCwJICAgICAgICAgLyogZmxvYXRfdHlwZV9ub2Rl ICovCi0rICBSUzYwMDBfQlRJX2RvdWJsZSwJICAgICAgICAgLyogZG91YmxlX3R5cGVfbm9kZSAq LwotICAgUlM2MDAwX0JUSV92b2lkLAkgICAgICAgICAvKiB2b2lkX3R5cGVfbm9kZSAqLwotICAg UlM2MDAwX0JUSV9NQVgKLSB9OwotQEAgLTMxNTcsNiArMzQ0Niw4IEBAIGVudW0gcnM2MDAwX2J1 aWx0aW5fdHlwZV9pbmRleAotICNkZWZpbmUgb3BhcXVlX3BfVjJTSV90eXBlX25vZGUgICAgICAg KHJzNjAwMF9idWlsdGluX3R5cGVzW1JTNjAwMF9CVElfb3BhcXVlX3BfVjJTSV0pCi0gI2RlZmlu ZSBvcGFxdWVfVjRTSV90eXBlX25vZGUgICAgICAgICAocnM2MDAwX2J1aWx0aW5fdHlwZXNbUlM2 MDAwX0JUSV9vcGFxdWVfVjRTSV0pCi0gI2RlZmluZSBWMTZRSV90eXBlX25vZGUgICAgICAgICAg ICAgICAocnM2MDAwX2J1aWx0aW5fdHlwZXNbUlM2MDAwX0JUSV9WMTZRSV0pCi0rI2RlZmluZSBW MkRJX3R5cGVfbm9kZSAgICAgICAgICAgICAgICAocnM2MDAwX2J1aWx0aW5fdHlwZXNbUlM2MDAw X0JUSV9WMkRJXSkKLSsjZGVmaW5lIFYyREZfdHlwZV9ub2RlICAgICAgICAgICAgICAgIChyczYw MDBfYnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJX1YyREZdKQotICNkZWZpbmUgVjJTSV90eXBlX25v ZGUgICAgICAgICAgICAgICAgKHJzNjAwMF9idWlsdGluX3R5cGVzW1JTNjAwMF9CVElfVjJTSV0p Ci0gI2RlZmluZSBWMlNGX3R5cGVfbm9kZSAgICAgICAgICAgICAgICAocnM2MDAwX2J1aWx0aW5f dHlwZXNbUlM2MDAwX0JUSV9WMlNGXSkKLSAjZGVmaW5lIFY0SElfdHlwZV9ub2RlICAgICAgICAg ICAgICAgIChyczYwMDBfYnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJX1Y0SEldKQotQEAgLTMxODMs NyArMzQ3NCwxMCBAQCBlbnVtIHJzNjAwMF9idWlsdGluX3R5cGVfaW5kZXgKLSAjZGVmaW5lIHVp bnRISV90eXBlX2ludGVybmFsX25vZGUJIChyczYwMDBfYnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJ X1VJTlRISV0pCi0gI2RlZmluZSBpbnRTSV90eXBlX2ludGVybmFsX25vZGUJIChyczYwMDBfYnVp bHRpbl90eXBlc1tSUzYwMDBfQlRJX0lOVFNJXSkKLSAjZGVmaW5lIHVpbnRTSV90eXBlX2ludGVy bmFsX25vZGUJIChyczYwMDBfYnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJX1VJTlRTSV0pCi0rI2Rl ZmluZSBpbnRESV90eXBlX2ludGVybmFsX25vZGUJIChyczYwMDBfYnVpbHRpbl90eXBlc1tSUzYw MDBfQlRJX0lOVERJXSkKLSsjZGVmaW5lIHVpbnRESV90eXBlX2ludGVybmFsX25vZGUJIChyczYw MDBfYnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJX1VJTlRESV0pCi0gI2RlZmluZSBmbG9hdF90eXBl X2ludGVybmFsX25vZGUJIChyczYwMDBfYnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJX2Zsb2F0XSkK LSsjZGVmaW5lIGRvdWJsZV90eXBlX2ludGVybmFsX25vZGUJIChyczYwMDBfYnVpbHRpbl90eXBl c1tSUzYwMDBfQlRJX2RvdWJsZV0pCi0gI2RlZmluZSB2b2lkX3R5cGVfaW50ZXJuYWxfbm9kZQkJ IChyczYwMDBfYnVpbHRpbl90eXBlc1tSUzYwMDBfQlRJX3ZvaWRdKQotIAotIGV4dGVybiBHVFko KCkpIHRyZWUgcnM2MDAwX2J1aWx0aW5fdHlwZXNbUlM2MDAwX0JUSV9NQVhdOwotLS0tIGdjYy9j b25maWcvcnM2MDAwL2FsdGl2ZWMubWQJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NDU1NykKLSsr KyBnY2MvY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kCSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1t ZWlzc25lcikJKHJldmlzaW9uIDE0NDY5MikKLUBAIC0yMSwxOCArMjEsNyBAQAotIAotIChkZWZp bmVfY29uc3RhbnRzCi0gICBbKFVOU1BFQ19WQ01QQkZQICAgICAgIDUwKQotLSAgIChVTlNQRUNf VkNNUEVRVUIgICAgICA1MSkKLS0gICAoVU5TUEVDX1ZDTVBFUVVIICAgICAgNTIpCi0tICAgKFVO U1BFQ19WQ01QRVFVVyAgICAgIDUzKQotLSAgIChVTlNQRUNfVkNNUEVRRlAgICAgICA1NCkKLS0g ICAoVU5TUEVDX1ZDTVBHRUZQICAgICAgNTUpCi0tICAgKFVOU1BFQ19WQ01QR1RVQiAgICAgIDU2 KQotLSAgIChVTlNQRUNfVkNNUEdUU0IgICAgICA1NykKLS0gICAoVU5TUEVDX1ZDTVBHVFVIICAg ICAgNTgpCi0tICAgKFVOU1BFQ19WQ01QR1RTSCAgICAgIDU5KQotLSAgIChVTlNQRUNfVkNNUEdU VVcgICAgICA2MCkKLS0gICAoVU5TUEVDX1ZDTVBHVFNXICAgICAgNjEpCi0tICAgKFVOU1BFQ19W Q01QR1RGUCAgICAgIDYyKQotKyAgIDs7IDUxLTYyIGRlbGV0ZWQKLSAgICAoVU5TUEVDX1ZNU1VN VSAgICAgICAgNjUpCi0gICAgKFVOU1BFQ19WTVNVTU0gICAgICAgIDY2KQotICAgIChVTlNQRUNf Vk1TVU1TSE0gICAgICA2OCkKLUBAIC04NywxMCArNzYsNyBAQCAoZGVmaW5lX2NvbnN0YW50cwot ICAgIChVTlNQRUNfVkVYUFRFRlAgICAgIDE1NikKLSAgICAoVU5TUEVDX1ZSU1FSVEVGUCAgICAx NTcpCi0gICAgKFVOU1BFQ19WUkVGUCAgICAgICAgMTU4KQotLSAgIChVTlNQRUNfVlNFTDRTSSAg ICAgIDE1OSkKLS0gICAoVU5TUEVDX1ZTRUw0U0YgICAgICAxNjApCi0tICAgKFVOU1BFQ19WU0VM OEhJICAgICAgMTYxKQotLSAgIChVTlNQRUNfVlNFTDE2UUkgICAgIDE2MikKLSsgICA7OyAxNTkt MTYyIGRlbGV0ZWQKLSAgICAoVU5TUEVDX1ZMU0RPSSAgICAgICAxNjMpCi0gICAgKFVOU1BFQ19W VVBLSFNCICAgICAgMTY3KQotICAgIChVTlNQRUNfVlVQS0hQWCAgICAgIDE2OCkKLUBAIC0xMjUs MTEgKzExMSwxMSBAQCAoZGVmaW5lX2NvbnN0YW50cwotICAgIChVTlNQRUNfSU5URVJISV9WNFNJ IDIyOCkKLSAgICAoVU5TUEVDX0lOVEVSSElfVjhISSAyMjkpCi0gICAgKFVOU1BFQ19JTlRFUkhJ X1YxNlFJIDIzMCkKLS0gICAoVU5TUEVDX0lOVEVSSElfVjRTRiAyMzEpCi0rICAgOzsgZGVsZXRl IDIzMQotICAgIChVTlNQRUNfSU5URVJMT19WNFNJIDIzMikKLSAgICAoVU5TUEVDX0lOVEVSTE9f VjhISSAyMzMpCi0gICAgKFVOU1BFQ19JTlRFUkxPX1YxNlFJIDIzNCkKLS0gICAoVU5TUEVDX0lO VEVSTE9fVjRTRiAyMzUpCi0rICAgOzsgZGVsZXRlIDIzNQotICAgIChVTlNQRUNfTFZMWCAgICAg ICAgIDIzNikKLSAgICAoVU5TUEVDX0xWTFhMICAgICAgICAyMzcpCi0gICAgKFVOU1BFQ19MVlJY ICAgICAgICAgMjM4KQotQEAgLTE3NiwzOSArMTYyLDE3IEBAIChkZWZpbmVfbW9kZV9pdGVyYXRv ciBWSXNob3J0IFtWOEhJIFYxNlEKLSAoZGVmaW5lX21vZGVfaXRlcmF0b3IgVkYgW1Y0U0ZdKQot IDs7IFZlYyBtb2RlcywgcGl0eSBtb2RlIGl0ZXJhdG9ycyBhcmUgbm90IGNvbXBvc2FibGUKLSAo ZGVmaW5lX21vZGVfaXRlcmF0b3IgViBbVjRTSSBWOEhJIFYxNlFJIFY0U0ZdKQotKzs7IFZlYyBt b2RlcyBmb3IgbW92ZS9sb2dpY2FsL3Blcm11dGUgb3BzLCBpbmNsdWRlIHZlY3RvciB0eXBlcyBm b3IgbW92ZSBub3QKLSs7OyBvdGhlcndpc2UgaGFuZGxlZCBieSBhbHRpdmVjICh2MmRmLCB2MmRp LCB0aSkKLSsoZGVmaW5lX21vZGVfaXRlcmF0b3IgVk0gW1Y0U0kgVjhISSBWMTZRSSBWNFNGIFYy REYgVjJESSBUSV0pCi0gCi0gKGRlZmluZV9tb2RlX2F0dHIgVklfY2hhciBbKFY0U0kgInciKSAo VjhISSAiaCIpIChWMTZRSSAiYiIpXSkKLSAKLS07OyBHZW5lcmljIExWWCBsb2FkIGluc3RydWN0 aW9uLgotLShkZWZpbmVfaW5zbiAiYWx0aXZlY19sdnhfPG1vZGU+IgotLSAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6ViAwICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0tCShtYXRjaF9v cGVyYW5kOlYgMSAibWVtb3J5X29wZXJhbmQiICJaIikpXQotLSAgIlRBUkdFVF9BTFRJVkVDIgot LSAgImx2eCAlMCwleTEiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAidmVjbG9hZCIpXSkKLS0KLS07 OyBHZW5lcmljIFNUVlggc3RvcmUgaW5zdHJ1Y3Rpb24uCi0tKGRlZmluZV9pbnNuICJhbHRpdmVj X3N0dnhfPG1vZGU+IgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6ViAwICJtZW1vcnlfb3BlcmFu ZCIgIj1aIikKLS0JKG1hdGNoX29wZXJhbmQ6ViAxICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQi ICJ2IikpXQotLSAgIlRBUkdFVF9BTFRJVkVDIgotLSAgInN0dnggJTEsJXkwIgotLSAgWyhzZXRf YXR0ciAidHlwZSIgInZlY3N0b3JlIildKQotLQotIDs7IFZlY3RvciBtb3ZlIGluc3RydWN0aW9u cy4KLS0oZGVmaW5lX2V4cGFuZCAibW92PG1vZGU+IgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 ViAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIiIpCi0tCShtYXRjaF9vcGVyYW5kOlYgMSAiYW55 X29wZXJhbmQiICIiKSldCi0tICAiVEFSR0VUX0FMVElWRUMiCi0tewotLSAgcnM2MDAwX2VtaXRf bW92ZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCA8TU9ERT5tb2RlKTsKLS0gIERPTkU7Ci0t fSkKLS0KLS0oZGVmaW5lX2luc24gIiptb3Y8bW9kZT5faW50ZXJuYWwiCi0tICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAiPVosdix2LG8scixyLHYiKQot LQkobWF0Y2hfb3BlcmFuZDpWIDEgImlucHV0X29wZXJhbmQiICJ2LFosdixyLG8scixXIikpXQot LSAgIlRBUkdFVF9BTFRJVkVDIAotKyhkZWZpbmVfaW5zbiAiKmFsdGl2ZWNfbW92PG1vZGU+Igot KyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6ViAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIj1aLHYs diwqbywqciwqcix2LHYiKQotKwkobWF0Y2hfb3BlcmFuZDpWIDEgImlucHV0X29wZXJhbmQiICJ2 LFosdixyLG8scixqLFciKSldCi0rICAiVkVDVE9SX01FTV9BTFRJVkVDX1AgKDxNT0RFPm1vZGUp Ci0gICAgJiYgKHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzBdLCA8TU9ERT5tb2RlKSAKLSAg ICAgICAgfHwgcmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNbMV0sIDxNT0RFPm1vZGUpKSIKLSB7 Ci1AQCAtMjIwLDUyICsxODQsMTcgQEAgKGRlZmluZV9pbnNuICIqbW92PG1vZGU+X2ludGVybmFs IgotICAgICBjYXNlIDM6IHJldHVybiAiIyI7Ci0gICAgIGNhc2UgNDogcmV0dXJuICIjIjsKLSAg ICAgY2FzZSA1OiByZXR1cm4gIiMiOwotLSAgICBjYXNlIDY6IHJldHVybiBvdXRwdXRfdmVjX2Nv bnN0X21vdmUgKG9wZXJhbmRzKTsKLSsgICAgY2FzZSA2OiByZXR1cm4gInZ4b3IgJTAsJTAsJTAi OwotKyAgICBjYXNlIDc6IHJldHVybiBvdXRwdXRfdmVjX2NvbnN0X21vdmUgKG9wZXJhbmRzKTsK LSAgICAgZGVmYXVsdDogZ2NjX3VucmVhY2hhYmxlICgpOwotICAgICB9Ci0gfQotLSAgWyhzZXRf YXR0ciAidHlwZSIgInZlY3N0b3JlLHZlY2xvYWQsdmVjc2ltcGxlLHN0b3JlLGxvYWQsKiwqIild KQotLQotLShkZWZpbmVfc3BsaXQKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0kgMCAibm9u aW1tZWRpYXRlX29wZXJhbmQiICIiKQotLSAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTSSAxICJp bnB1dF9vcGVyYW5kIiAiIikpXQotLSAgIlRBUkdFVF9BTFRJVkVDICYmIHJlbG9hZF9jb21wbGV0 ZWQKLS0gICAmJiBncHJfb3JfZ3ByX3AgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSkiCi0tICBb KHBjKV0KLS17Ci0tICByczYwMDBfc3BsaXRfbXVsdGlyZWdfbW92ZSAob3BlcmFuZHNbMF0sIG9w ZXJhbmRzWzFdKTsgRE9ORTsKLS19KQotLQotLShkZWZpbmVfc3BsaXQKLS0gIFsoc2V0IChtYXRj aF9vcGVyYW5kOlY4SEkgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICIiKQotLSAgICAgICAgKG1h dGNoX29wZXJhbmQ6VjhISSAxICJpbnB1dF9vcGVyYW5kIiAiIikpXQotLSAgIlRBUkdFVF9BTFRJ VkVDICYmIHJlbG9hZF9jb21wbGV0ZWQKLS0gICAmJiBncHJfb3JfZ3ByX3AgKG9wZXJhbmRzWzBd LCBvcGVyYW5kc1sxXSkiCi0tICBbKHBjKV0KLS17IHJzNjAwMF9zcGxpdF9tdWx0aXJlZ19tb3Zl IChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0pOyBET05FOyB9KQotKyAgWyhzZXRfYXR0ciAidHlw ZSIgInZlY3N0b3JlLHZlY2xvYWQsdmVjc2ltcGxlLHN0b3JlLGxvYWQsKix2ZWNzaW1wbGUsKiIp XSkKLSAKLSAoZGVmaW5lX3NwbGl0Ci0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMTZRSSAwICJu b25pbW1lZGlhdGVfb3BlcmFuZCIgIiIpCi0tICAgICAgICAobWF0Y2hfb3BlcmFuZDpWMTZRSSAx ICJpbnB1dF9vcGVyYW5kIiAiIikpXQotLSAgIlRBUkdFVF9BTFRJVkVDICYmIHJlbG9hZF9jb21w bGV0ZWQKLS0gICAmJiBncHJfb3JfZ3ByX3AgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSkiCi0t ICBbKHBjKV0KLS17IHJzNjAwMF9zcGxpdF9tdWx0aXJlZ19tb3ZlIChvcGVyYW5kc1swXSwgb3Bl cmFuZHNbMV0pOyBET05FOyB9KQotLQotLShkZWZpbmVfc3BsaXQKLS0gIFsoc2V0IChtYXRjaF9v cGVyYW5kOlY0U0YgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICIiKQotLSAgICAgICAgKG1hdGNo X29wZXJhbmQ6VjRTRiAxICJpbnB1dF9vcGVyYW5kIiAiIikpXQotLSAgIlRBUkdFVF9BTFRJVkVD ICYmIHJlbG9hZF9jb21wbGV0ZWQKLS0gICAmJiBncHJfb3JfZ3ByX3AgKG9wZXJhbmRzWzBdLCBv cGVyYW5kc1sxXSkiCi0tICBbKHBjKV0KLS17Ci0tICByczYwMDBfc3BsaXRfbXVsdGlyZWdfbW92 ZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsgRE9ORTsKLS19KQotLQotLShkZWZpbmVfc3Bs aXQKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYgMCAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5k IiAiIikKLS0JKG1hdGNoX29wZXJhbmQ6ViAxICJlYXN5X3ZlY3Rvcl9jb25zdGFudF9hZGRfc2Vs ZiIgIiIpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyAmJiByZWxvYWRfY29tcGxldGVkIgotKyAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6Vk0gMCAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAiIikKLSsJ KG1hdGNoX29wZXJhbmQ6Vk0gMSAiZWFzeV92ZWN0b3JfY29uc3RhbnRfYWRkX3NlbGYiICIiKSld Ci0rICAiVkVDVE9SX1VOSVRfQUxUSVZFQ19QICg8TU9ERT5tb2RlKSAmJiByZWxvYWRfY29tcGxl dGVkIgotICAgWyhzZXQgKG1hdGNoX2R1cCAwKSAobWF0Y2hfZHVwIDMpKQotICAgIChzZXQgKG1h dGNoX2R1cCAwKSAobWF0Y2hfZHVwIDQpKV0KLSB7Ci1AQCAtMzQ2LDExICsyNzUsMTEgQEAgKGRl ZmluZV9pbnNuICJhZGQ8bW9kZT4zIgotICAgInZhZGR1PFZJX2NoYXI+bSAlMCwlMSwlMiIKLSAg IFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCi0gCi0tKGRlZmluZV9pbnNuICJhZGR2 NHNmMyIKLSsoZGVmaW5lX2luc24gIiphbHRpdmVjX2FkZHY0c2YzIgotICAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6VjRTRiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotICAgICAgICAgKHBsdXM6 VjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLSAJIAkg ICAobWF0Y2hfb3BlcmFuZDpWNFNGIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpKV0KLS0gICJU QVJHRVRfQUxUSVZFQyIKLSsgICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKFY0U0Ztb2RlKSIKLSAg ICJ2YWRkZnAgJTAsJTEsJTIiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjZmxvYXQiKV0pCi0g Ci1AQCAtMzkyLDExICszMjEsMTEgQEAgKGRlZmluZV9pbnNuICJzdWI8bW9kZT4zIgotICAgInZz dWJ1PFZJX2NoYXI+bSAlMCwlMSwlMiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUi KV0pCi0gCi0tKGRlZmluZV9pbnNuICJzdWJ2NHNmMyIKLSsoZGVmaW5lX2luc24gIiphbHRpdmVj X3N1YnY0c2YzIgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAwICJyZWdpc3Rlcl9vcGVy YW5kIiAiPXYiKQotICAgICAgICAgKG1pbnVzOlY0U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJy ZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0gICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFu ZDpWNFNGIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIK LSsgICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKFY0U0Ztb2RlKSIKLSAgICJ2c3ViZnAgJTAsJTEs JTIiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjZmxvYXQiKV0pCi0gCi1AQCAtNDU3LDEzMSAr Mzg2LDgxIEBAIChkZWZpbmVfaW5zbiAiYWx0aXZlY192Y21wYmZwIgotICAgInZjbXBiZnAgJTAs JTEsJTIiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjY21wIildKQotIAotLShkZWZpbmVfaW5z biAiYWx0aXZlY192Y21wZXF1YiIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlYxNlFJIDAgInJl Z2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAgICAgICAodW5zcGVjOlYxNlFJIFsobWF0Y2hfb3Bl cmFuZDpWMTZRSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0tICAgICAgICAgICAgICAgICAg ICAgICAobWF0Y2hfb3BlcmFuZDpWMTZRSSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSAKLS0g ICAgICAgICAgICAgICAgICAgICAgIFVOU1BFQ19WQ01QRVFVQikpXQotKyhkZWZpbmVfaW5zbiAi KmFsdGl2ZWNfZXE8bW9kZT4iCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWSSAwICJhbHRpdmVj X3JlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0rCShlcTpWSSAobWF0Y2hfb3BlcmFuZDpWSSAxICJh bHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICJ2IikKLSsJICAgICAgIChtYXRjaF9vcGVyYW5kOlZJ IDIgImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpXQotICAgIlRBUkdFVF9BTFRJVkVD IgotLSAgInZjbXBlcXViICUwLCUxLCUyIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBs ZSIpXSkKLSsgICJ2Y21wZXF1PFZJX2NoYXI+ICUwLCUxLCUyIgotKyAgWyhzZXRfYXR0ciAidHlw ZSIgInZlY2NtcCIpXSkKLSAKLS0oZGVmaW5lX2luc24gImFsdGl2ZWNfdmNtcGVxdWgiCi0tICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWOEhJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAg ICAgICAodW5zcGVjOlY4SEkgWyhtYXRjaF9vcGVyYW5kOlY4SEkgMSAicmVnaXN0ZXJfb3BlcmFu ZCIgInYiKQotLSAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWOEhJIDIgInJl Z2lzdGVyX29wZXJhbmQiICJ2IildIAotLSAgICAgICAgICAgICAgICAgICAgICBVTlNQRUNfVkNN UEVRVUgpKV0KLSsoZGVmaW5lX2luc24gIiphbHRpdmVjX2d0PG1vZGU+IgotKyAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6VkkgMCAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotKwkoZ3Q6 VkkgKG1hdGNoX29wZXJhbmQ6VkkgMSAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0r CSAgICAgICAobWF0Y2hfb3BlcmFuZDpWSSAyICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICJ2 IikpKV0KLSAgICJUQVJHRVRfQUxUSVZFQyIKLS0gICJ2Y21wZXF1aCAlMCwlMSwlMiIKLS0gIFso c2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCi0rICAidmNtcGd0czxWSV9jaGFyPiAlMCwl MSwlMiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNjbXAiKV0pCi0gCi0tKGRlZmluZV9pbnNu ICJhbHRpdmVjX3ZjbXBlcXV3IgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTSSAwICJyZWdp c3Rlcl9vcGVyYW5kIiAiPXYiKQotLSAgICAgICAgKHVuc3BlYzpWNFNJIFsobWF0Y2hfb3BlcmFu ZDpWNFNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAgICAgICAgICAg KG1hdGNoX29wZXJhbmQ6VjRTSSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSAKLS0JICAgICAg ICAgICAgICBVTlNQRUNfVkNNUEVRVVcpKV0KLSsoZGVmaW5lX2luc24gIiphbHRpdmVjX2d0dTxt b2RlPiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZJIDAgImFsdGl2ZWNfcmVnaXN0ZXJfb3Bl cmFuZCIgIj12IikKLSsJKGd0dTpWSSAobWF0Y2hfb3BlcmFuZDpWSSAxICJhbHRpdmVjX3JlZ2lz dGVyX29wZXJhbmQiICJ2IikKLSsJCShtYXRjaF9vcGVyYW5kOlZJIDIgImFsdGl2ZWNfcmVnaXN0 ZXJfb3BlcmFuZCIgInYiKSkpXQotICAgIlRBUkdFVF9BTFRJVkVDIgotLSAgInZjbXBlcXV3ICUw LCUxLCUyIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKLSsgICJ2Y21wZ3R1 PFZJX2NoYXI+ICUwLCUxLCUyIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2NtcCIpXSkKLSAK LS0oZGVmaW5lX2luc24gImFsdGl2ZWNfdmNtcGVxZnAiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFu ZDpWNFNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAgICAgICAodW5zcGVjOlY0U0kg WyhtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotLSAgICAgICAg ICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNGIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2 IildIAotLQkgICAgICAgICAgICAgIFVOU1BFQ19WQ01QRVFGUCkpXQotLSAgIlRBUkdFVF9BTFRJ VkVDIgotKyhkZWZpbmVfaW5zbiAiKmFsdGl2ZWNfZXF2NHNmIgotKyAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6VjRTRiAwICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0rCShlcTpWNFNG IChtYXRjaF9vcGVyYW5kOlY0U0YgMSAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0r CQkgKG1hdGNoX29wZXJhbmQ6VjRTRiAyICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICJ2Iikp KV0KLSsgICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKFY0U0Ztb2RlKSIKLSAgICJ2Y21wZXFmcCAl MCwlMSwlMiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNjbXAiKV0pCi0gCi0tKGRlZmluZV9p bnNuICJhbHRpdmVjX3ZjbXBnZWZwIgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTSSAwICJy ZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotLSAgICAgICAgKHVuc3BlYzpWNFNJIFsobWF0Y2hfb3Bl cmFuZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAgICAgICAg ICAgKG1hdGNoX29wZXJhbmQ6VjRTRiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSAKLS0JCSAg ICAgVU5TUEVDX1ZDTVBHRUZQKSldCi0tICAiVEFSR0VUX0FMVElWRUMiCi0tICAidmNtcGdlZnAg JTAsJTEsJTIiCi0rKGRlZmluZV9pbnNuICIqYWx0aXZlY19ndHY0c2YiCi0rICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWNFNGIDAgImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKLSsJKGd0 OlY0U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICJ2 IikKLSsJCSAobWF0Y2hfb3BlcmFuZDpWNFNGIDIgImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIg InYiKSkpXQotKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfUCAoVjRTRm1vZGUpIgotKyAgInZjbXBn dGZwICUwLCUxLCUyIgotICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2NtcCIpXSkKLSAKLS0oZGVm aW5lX2luc24gImFsdGl2ZWNfdmNtcGd0dWIiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMTZR SSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotLSAgICAgICAgKHVuc3BlYzpWMTZRSSBbKG1h dGNoX29wZXJhbmQ6VjE2UUkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotLSAgICAgICAgICAg ICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjE2UUkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYi KV0gCi0tCQkgICAgICBVTlNQRUNfVkNNUEdUVUIpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLS0g ICJ2Y21wZ3R1YiAlMCwlMSwlMiIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0p Ci0tCi0tKGRlZmluZV9pbnNuICJhbHRpdmVjX3ZjbXBndHNiIgotLSAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6VjE2UUkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKLS0gICAgICAgICh1bnNwZWM6 VjE2UUkgWyhtYXRjaF9vcGVyYW5kOlYxNlFJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0g ICAgICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlYxNlFJIDIgInJlZ2lzdGVyX29w ZXJhbmQiICJ2IildIAotLQkJICAgICAgVU5TUEVDX1ZDTVBHVFNCKSldCi0tICAiVEFSR0VUX0FM VElWRUMiCi0tICAidmNtcGd0c2IgJTAsJTEsJTIiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAidmVj c2ltcGxlIildKQotLQotLShkZWZpbmVfaW5zbiAiYWx0aXZlY192Y21wZ3R1aCIKLS0gIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlY4SEkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKLS0gICAgICAg ICh1bnNwZWM6VjhISSBbKG1hdGNoX29wZXJhbmQ6VjhISSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAi diIpCi0tICAgICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY4SEkgMiAicmVnaXN0 ZXJfb3BlcmFuZCIgInYiKV0gCi0tCQkgICAgIFVOU1BFQ19WQ01QR1RVSCkpXQotLSAgIlRBUkdF VF9BTFRJVkVDIgotLSAgInZjbXBndHVoICUwLCUxLCUyIgotLSAgWyhzZXRfYXR0ciAidHlwZSIg InZlY3NpbXBsZSIpXSkKLS0KLS0oZGVmaW5lX2luc24gImFsdGl2ZWNfdmNtcGd0c2giCi0tICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWOEhJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAg ICAgICAodW5zcGVjOlY4SEkgWyhtYXRjaF9vcGVyYW5kOlY4SEkgMSAicmVnaXN0ZXJfb3BlcmFu ZCIgInYiKQotLSAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWOEhJIDIgInJl Z2lzdGVyX29wZXJhbmQiICJ2IildIAotLQkJICAgICBVTlNQRUNfVkNNUEdUU0gpKV0KLS0gICJU QVJHRVRfQUxUSVZFQyIKLS0gICJ2Y21wZ3RzaCAlMCwlMSwlMiIKLS0gIFsoc2V0X2F0dHIgInR5 cGUiICJ2ZWNzaW1wbGUiKV0pCi0tCi0tKGRlZmluZV9pbnNuICJhbHRpdmVjX3ZjbXBndHV3Igot LSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQot LSAgICAgICAgKHVuc3BlYzpWNFNJIFsobWF0Y2hfb3BlcmFuZDpWNFNJIDEgInJlZ2lzdGVyX29w ZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTSSAy ICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSAKLS0JCSAgICAgVU5TUEVDX1ZDTVBHVFVXKSldCi0t ICAiVEFSR0VUX0FMVElWRUMiCi0tICAidmNtcGd0dXcgJTAsJTEsJTIiCi0tICBbKHNldF9hdHRy ICJ0eXBlIiAidmVjc2ltcGxlIildKQotLQotLShkZWZpbmVfaW5zbiAiYWx0aXZlY192Y21wZ3Rz dyIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12 IikKLS0gICAgICAgICh1bnNwZWM6VjRTSSBbKG1hdGNoX29wZXJhbmQ6VjRTSSAxICJyZWdpc3Rl cl9vcGVyYW5kIiAidiIpCi0tICAgICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY0 U0kgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKV0gCi0tCQkgICAgIFVOU1BFQ19WQ01QR1RTVykp XQotLSAgIlRBUkdFVF9BTFRJVkVDIgotLSAgInZjbXBndHN3ICUwLCUxLCUyIgotLSAgWyhzZXRf YXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKLS0KLS0oZGVmaW5lX2luc24gImFsdGl2ZWNfdmNt cGd0ZnAiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNJIDAgInJlZ2lzdGVyX29wZXJhbmQi ICI9diIpCi0tICAgICAgICAodW5zcGVjOlY0U0kgWyhtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVn aXN0ZXJfb3BlcmFuZCIgInYiKQotLSAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFu ZDpWNFNGIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IildIAotLQkJICAgICBVTlNQRUNfVkNNUEdU RlApKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLS0gICJ2Y21wZ3RmcCAlMCwlMSwlMiIKLSsoZGVm aW5lX2luc24gIiphbHRpdmVjX2dldjRzZiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0Yg MCAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotKwkoZ2U6VjRTRiAobWF0Y2hfb3Bl cmFuZDpWNFNGIDEgImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotKwkJIChtYXRjaF9v cGVyYW5kOlY0U0YgMiAiYWx0aXZlY19yZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCi0rICAiVkVD VE9SX1VOSVRfQUxUSVZFQ19QIChWNFNGbW9kZSkiCi0rICAidmNtcGdlZnAgJTAsJTEsJTIiCi0g ICBbKHNldF9hdHRyICJ0eXBlIiAidmVjY21wIildKQotIAotKyhkZWZpbmVfaW5zbiAiYWx0aXZl Y192c2VsPG1vZGU+IgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vk0gMCAiYWx0aXZlY19yZWdp c3Rlcl9vcGVyYW5kIiAiPXYiKQotKwkoaWZfdGhlbl9lbHNlOlZNIChuZSAobWF0Y2hfb3BlcmFu ZDpWTSAxICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJhbmQiICJ2IikKLSsJCQkgICAgIChjb25zdF9p bnQgMCkpCi0rCQkJIChtYXRjaF9vcGVyYW5kOlZNIDIgImFsdGl2ZWNfcmVnaXN0ZXJfb3BlcmFu ZCIgInYiKQotKwkJCSAobWF0Y2hfb3BlcmFuZDpWTSAzICJhbHRpdmVjX3JlZ2lzdGVyX29wZXJh bmQiICJ2IikpKV0KLSsgICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKDxNT0RFPm1vZGUpIgotKyAg InZzZWwgJTAsJTMsJTIsJTEiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKLSsK LSA7OyBGdXNlZCBtdWx0aXBseSBhZGQKLSAoZGVmaW5lX2luc24gImFsdGl2ZWNfdm1hZGRmcCIK LSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikK LSAJKHBsdXM6VjRTRiAobXVsdDpWNFNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJf b3BlcmFuZCIgInYiKQotIAkJCSAgICAgIChtYXRjaF9vcGVyYW5kOlY0U0YgMiAicmVnaXN0ZXJf b3BlcmFuZCIgInYiKSkKLSAJICAJICAgKG1hdGNoX29wZXJhbmQ6VjRTRiAzICJyZWdpc3Rlcl9v cGVyYW5kIiAidiIpKSldCi0tICAiVEFSR0VUX0FMVElWRUMiCi0rICAiVkVDVE9SX1VOSVRfQUxU SVZFQ19QIChWNFNGbW9kZSkiCi0gICAidm1hZGRmcCAlMCwlMSwlMiwlMyIKLSAgIFsoc2V0X2F0 dHIgInR5cGUiICJ2ZWNmbG9hdCIpXSkKLSAKLSA7OyBXZSBkbyBtdWx0aXBseSBhcyBhIGZ1c2Vk IG11bHRpcGx5LWFkZCB3aXRoIGFuIGFkZCBvZiBhIC0wLjAgdmVjdG9yLgotIAotLShkZWZpbmVf ZXhwYW5kICJtdWx2NHNmMyIKLSsoZGVmaW5lX2V4cGFuZCAiYWx0aXZlY19tdWx2NHNmMyIKLSAg IFsodXNlIChtYXRjaF9vcGVyYW5kOlY0U0YgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpKQotICAg ICh1c2UgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikpCi0gICAg KHVzZSAobWF0Y2hfb3BlcmFuZDpWNFNGIDIgInJlZ2lzdGVyX29wZXJhbmQiICIiKSldCi0tICAi VEFSR0VUX0FMVElWRUMgJiYgVEFSR0VUX0ZVU0VEX01BREQiCi0rICAiVkVDVE9SX1VOSVRfQUxU SVZFQ19QIChWNFNGbW9kZSkgJiYgVEFSR0VUX0ZVU0VEX01BREQiCi0gICAiCi0gewotICAgcnR4 IG5lZzA7Ci1AQCAtNjg0LDcgKzU2Myw3IEBAIChkZWZpbmVfaW5zbiAiYWx0aXZlY192bm1zdWJm cCIKLSAJKG5lZzpWNFNGIChtaW51czpWNFNGIChtdWx0OlY0U0YgKG1hdGNoX29wZXJhbmQ6VjRT RiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0gCQkJICAgICAgIChtYXRjaF9vcGVyYW5kOlY0 U0YgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkKLSAJICAJICAgIChtYXRjaF9vcGVyYW5kOlY0 U0YgMyAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLSsg ICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKFY0U0Ztb2RlKSIKLSAgICJ2bm1zdWJmcCAlMCwlMSwl MiwlMyIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNmbG9hdCIpXSkKLSAKLUBAIC03NTgsMTEg KzYzNywxMSBAQCAoZGVmaW5lX2luc24gInNtYXg8bW9kZT4zIgotICAgInZtYXhzPFZJX2NoYXI+ ICUwLCUxLCUyIgotICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKLSAKLS0oZGVm aW5lX2luc24gInNtYXh2NHNmMyIKLSsoZGVmaW5lX2luc24gIiphbHRpdmVjX3NtYXh2NHNmMyIK LSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikK LSAgICAgICAgIChzbWF4OlY0U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rlcl9vcGVy YW5kIiAidiIpCi0gICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY0U0YgMiAicmVn aXN0ZXJfb3BlcmFuZCIgInYiKSkpXQotLSAgIlRBUkdFVF9BTFRJVkVDIgotKyAgIlZFQ1RPUl9V TklUX0FMVElWRUNfUCAoVjRTRm1vZGUpIgotICAgInZtYXhmcCAlMCwlMSwlMiIKLSAgIFsoc2V0 X2F0dHIgInR5cGUiICJ2ZWNjbXAiKV0pCi0gCi1AQCAtNzgyLDExICs2NjEsMTEgQEAgKGRlZmlu ZV9pbnNuICJzbWluPG1vZGU+MyIKLSAgICJ2bWluczxWSV9jaGFyPiAlMCwlMSwlMiIKLSAgIFso c2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCi0gCi0tKGRlZmluZV9pbnNuICJzbWludjRz ZjMiCi0rKGRlZmluZV9pbnNuICIqYWx0aXZlY19zbWludjRzZjMiCi0gICBbKHNldCAobWF0Y2hf b3BlcmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0gICAgICAgICAoc21pbjpW NFNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotICAgICAg ICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNGIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2 IikpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLSsgICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKFY0 U0Ztb2RlKSIKLSAgICJ2bWluZnAgJTAsJTEsJTIiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVj Y21wIildKQotIAotQEAgLTkwNSw3ICs3ODQsNyBAQCAoZGVmaW5lX2luc24gImFsdGl2ZWNfdm1y Z2h3IgotICAgInZtcmdodyAlMCwlMSwlMiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJt IildKQotIAotLShkZWZpbmVfaW5zbiAiYWx0aXZlY192bXJnaHNmIgotKyhkZWZpbmVfaW5zbiAi KmFsdGl2ZWNfdm1yZ2hzZiIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAicmVnaXN0 ZXJfb3BlcmFuZCIgIj12IikKLSAgICAgICAgICh2ZWNfbWVyZ2U6VjRTRiAodmVjX3NlbGVjdDpW NFNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcmFsbGVsIFsoY29uc3RfaW50 IDApCi1AQCAtOTE4LDcgKzc5Nyw3IEBAIChkZWZpbmVfaW5zbiAiYWx0aXZlY192bXJnaHNmIgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29u c3RfaW50IDMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChjb25zdF9pbnQgMSldKSkKLSAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0X2lu dCA1KSkpXQotLSAgIlRBUkdFVF9BTFRJVkVDIgotKyAgIlZFQ1RPUl9VTklUX0FMVElWRUNfUCAo VjRTRm1vZGUpIgotICAgInZtcmdodyAlMCwlMSwlMiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2 ZWNwZXJtIildKQotIAotQEAgLTk5MCwzNSArODY5LDM3IEBAIChkZWZpbmVfaW5zbiAiYWx0aXZl Y192bXJnbGgiCi0gCi0gKGRlZmluZV9pbnNuICJhbHRpdmVjX3ZtcmdsdyIKLSAgIFsoc2V0ICht YXRjaF9vcGVyYW5kOlY0U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKLS0gICAgICAgICh2 ZWNfbWVyZ2U6VjRTSSAodmVjX3NlbGVjdDpWNFNJIChtYXRjaF9vcGVyYW5kOlY0U0kgMSAicmVn aXN0ZXJfb3BlcmFuZCIgInYiKQotLQkJCQkJIChwYXJhbGxlbCBbKGNvbnN0X2ludCAyKQotLQkJ CQkJIAkgICAgKGNvbnN0X2ludCAwKQotLQkJCQkJCSAgICAoY29uc3RfaW50IDMpCi0tCQkJCQkJ ICAgIChjb25zdF9pbnQgMSldKSkKLS0gICAgICAgICAgICAgICAgICAgICAgICAodmVjX3NlbGVj dDpWNFNJIChtYXRjaF9vcGVyYW5kOlY0U0kgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotLQkJ CQkJIChwYXJhbGxlbCBbKGNvbnN0X2ludCAwKQotLQkJCQkJIAkgICAgKGNvbnN0X2ludCAyKQot LQkJCQkJCSAgICAoY29uc3RfaW50IDEpCi0tCQkJCQkJICAgIChjb25zdF9pbnQgMyldKSkKLS0J CSAgICAgIChjb25zdF9pbnQgNSkpKV0KLSsgICAgICAgICh2ZWNfbWVyZ2U6VjRTSQotKwkgKHZl Y19zZWxlY3Q6VjRTSSAobWF0Y2hfb3BlcmFuZDpWNFNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2 IikKLSsJCQkgIChwYXJhbGxlbCBbKGNvbnN0X2ludCAyKQotKwkJCQkgICAgIChjb25zdF9pbnQg MCkKLSsJCQkJICAgICAoY29uc3RfaW50IDMpCi0rCQkJCSAgICAgKGNvbnN0X2ludCAxKV0pKQot KwkgKHZlY19zZWxlY3Q6VjRTSSAobWF0Y2hfb3BlcmFuZDpWNFNJIDIgInJlZ2lzdGVyX29wZXJh bmQiICJ2IikKLSsJCQkgIChwYXJhbGxlbCBbKGNvbnN0X2ludCAwKQotKwkJCQkgICAgIChjb25z dF9pbnQgMikKLSsJCQkJICAgICAoY29uc3RfaW50IDEpCi0rCQkJCSAgICAgKGNvbnN0X2ludCAz KV0pKQotKwkgKGNvbnN0X2ludCA1KSkpXQotICAgIlRBUkdFVF9BTFRJVkVDIgotICAgInZtcmds dyAlMCwlMSwlMiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtIildKQotIAotLShkZWZp bmVfaW5zbiAiYWx0aXZlY192bXJnbHNmIgotKyhkZWZpbmVfaW5zbiAiKmFsdGl2ZWNfdm1yZ2xz ZiIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12 IikKLS0gICAgICAgICh2ZWNfbWVyZ2U6VjRTRiAodmVjX3NlbGVjdDpWNFNGIChtYXRjaF9vcGVy YW5kOlY0U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHBhcmFsbGVsIFsoY29uc3RfaW50IDIpCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdF9pbnQgMCkK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNv bnN0X2ludCAzKQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY29uc3RfaW50IDEpXSkpCi0tICAgICAgICAgICAgICAgICAgICAgICAgKHZlY19z ZWxlY3Q6VjRTRiAobWF0Y2hfb3BlcmFuZDpWNFNGIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJhbGxlbCBbKGNv bnN0X2ludCAwKQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY29uc3RfaW50IDIpCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChjb25zdF9pbnQgMSkKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0X2ludCAzKV0pKQotLSAgICAgICAg ICAgICAgICAgICAgICAoY29uc3RfaW50IDUpKSldCi0tICAiVEFSR0VUX0FMVElWRUMiCi0rICAg ICAgICAodmVjX21lcmdlOlY0U0YKLSsJICh2ZWNfc2VsZWN0OlY0U0YgKG1hdGNoX29wZXJhbmQ6 VjRTRiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0rCQkJICAocGFyYWxsZWwgWyhjb25zdF9p bnQgMikKLSsJCQkJICAgICAoY29uc3RfaW50IDApCi0rCQkJCSAgICAgKGNvbnN0X2ludCAzKQot KwkJCQkgICAgIChjb25zdF9pbnQgMSldKSkKLSsJICh2ZWNfc2VsZWN0OlY0U0YgKG1hdGNoX29w ZXJhbmQ6VjRTRiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0rCQkJICAocGFyYWxsZWwgWyhj b25zdF9pbnQgMCkKLSsJCQkJICAgICAoY29uc3RfaW50IDIpCi0rCQkJCSAgICAgKGNvbnN0X2lu dCAxKQotKwkJCQkgICAgIChjb25zdF9pbnQgMyldKSkKLSsJIChjb25zdF9pbnQgNSkpKV0KLSsg ICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKFY0U0Ztb2RlKSIKLSAgICJ2bXJnbHcgJTAsJTEsJTIi Ci0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKLSAKLUBAIC0xMDk1LDY4ICs5NzYs NTMgQEAgKGRlZmluZV9pbnNuICJhbHRpdmVjX3ZtdWxvc2giCi0gICBbKHNldF9hdHRyICJ0eXBl IiAidmVjY29tcGxleCIpXSkKLSAKLSAKLS07OyBsb2dpY2FsIG9wcwotKzs7IGxvZ2ljYWwgb3Bz LiAgSGF2ZSB0aGUgbG9naWNhbCBvcHMgZm9sbG93IHRoZSBtZW1vcnkgb3BzIGluCi0rOzsgdGVy bXMgb2Ygd2hldGhlciB0byBwcmVmZXIgVlNYIG9yIEFsdGl2ZWMKLSAKLS0oZGVmaW5lX2luc24g ImFuZDxtb2RlPjMiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWSSAwICJyZWdpc3Rlcl9vcGVy YW5kIiAiPXYiKQotLSAgICAgICAgKGFuZDpWSSAobWF0Y2hfb3BlcmFuZDpWSSAxICJyZWdpc3Rl cl9vcGVyYW5kIiAidiIpCi0tICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlZJIDIgInJl Z2lzdGVyX29wZXJhbmQiICJ2IikpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLSsoZGVmaW5lX2lu c24gIiphbHRpdmVjX2FuZDxtb2RlPjMiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWTSAwICJy ZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotKyAgICAgICAgKGFuZDpWTSAobWF0Y2hfb3BlcmFuZDpW TSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0rCQkobWF0Y2hfb3BlcmFuZDpWTSAyICJyZWdp c3Rlcl9vcGVyYW5kIiAidiIpKSldCi0rICAiVkVDVE9SX01FTV9BTFRJVkVDX1AgKDxNT0RFPm1v ZGUpIgotICAgInZhbmQgJTAsJTEsJTIiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc2ltcGxl IildKQotIAotLShkZWZpbmVfaW5zbiAiaW9yPG1vZGU+MyIKLS0gIFsoc2V0IChtYXRjaF9vcGVy YW5kOlZJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAgICAgICAoaW9yOlZJIChtYXRj aF9vcGVyYW5kOlZJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAgICAg KG1hdGNoX29wZXJhbmQ6VkkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpXQotLSAgIlRBUkdF VF9BTFRJVkVDIgotKyhkZWZpbmVfaW5zbiAiKmFsdGl2ZWNfaW9yPG1vZGU+MyIKLSsgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlZNIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0rICAgICAgICAo aW9yOlZNIChtYXRjaF9vcGVyYW5kOlZNIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLSsJCSht YXRjaF9vcGVyYW5kOlZNIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpKV0KLSsgICJWRUNUT1Jf TUVNX0FMVElWRUNfUCAoPE1PREU+bW9kZSkiCi0gICAidm9yICUwLCUxLCUyIgotICAgWyhzZXRf YXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKLSAKLS0oZGVmaW5lX2luc24gInhvcjxtb2RlPjMi Ci0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQot LSAgICAgICAgKHhvcjpWSSAobWF0Y2hfb3BlcmFuZDpWSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAi diIpCi0tICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlZJIDIgInJlZ2lzdGVyX29wZXJh bmQiICJ2IikpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLSsoZGVmaW5lX2luc24gIiphbHRpdmVj X3hvcjxtb2RlPjMiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWTSAwICJyZWdpc3Rlcl9vcGVy YW5kIiAiPXYiKQotKyAgICAgICAgKHhvcjpWTSAobWF0Y2hfb3BlcmFuZDpWTSAxICJyZWdpc3Rl cl9vcGVyYW5kIiAidiIpCi0rCQkobWF0Y2hfb3BlcmFuZDpWTSAyICJyZWdpc3Rlcl9vcGVyYW5k IiAidiIpKSldCi0rICAiVkVDVE9SX01FTV9BTFRJVkVDX1AgKDxNT0RFPm1vZGUpIgotICAgInZ4 b3IgJTAsJTEsJTIiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc2ltcGxlIildKQotIAotLShk ZWZpbmVfaW5zbiAieG9ydjRzZjMiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNGIDAgInJl Z2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAgICAgICAoeG9yOlY0U0YgKG1hdGNoX29wZXJhbmQ6 VjRTRiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0tICAgICAgICAgICAgICAgICAgKG1hdGNo X29wZXJhbmQ6VjRTRiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCi0tICAiVEFSR0VUX0FM VElWRUMiCi0tICAidnhvciAlMCwlMSwlMiIgCi0tICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc2lt cGxlIildKQotLQotLShkZWZpbmVfaW5zbiAib25lX2NtcGw8bW9kZT4yIgotLSAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6VkkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKLS0gICAgICAgIChub3Q6 VkkgKG1hdGNoX29wZXJhbmQ6VkkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpXQotLSAgIlRB UkdFVF9BTFRJVkVDIgotKyhkZWZpbmVfaW5zbiAiKmFsdGl2ZWNfb25lX2NtcGw8bW9kZT4yIgot KyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vk0gMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKLSsg ICAgICAgIChub3Q6Vk0gKG1hdGNoX29wZXJhbmQ6Vk0gMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYi KSkpXQotKyAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19QICg8TU9ERT5tb2RlKSIKLSAgICJ2bm9yICUw LCUxLCUxIgotICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKLSAgIAotLShkZWZp bmVfaW5zbiAiYWx0aXZlY19ub3I8bW9kZT4zIgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vkkg MCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKLS0gICAgICAgIChub3Q6VkkgKGlvcjpWSSAobWF0 Y2hfb3BlcmFuZDpWSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0tICAgICAgICAgICAgICAg ICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VkkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpKV0K LS0gICJUQVJHRVRfQUxUSVZFQyIKLSsoZGVmaW5lX2luc24gIiphbHRpdmVjX25vcjxtb2RlPjMi Ci0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWTSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQot KyAgICAgICAgKG5vdDpWTSAoaW9yOlZNIChtYXRjaF9vcGVyYW5kOlZNIDEgInJlZ2lzdGVyX29w ZXJhbmQiICJ2IikKLSsJCQkobWF0Y2hfb3BlcmFuZDpWTSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAi diIpKSkpXQotKyAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19QICg8TU9ERT5tb2RlKSIKLSAgICJ2bm9y ICUwLCUxLCUyIgotICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY3NpbXBsZSIpXSkKLSAKLS0oZGVm aW5lX2luc24gImFuZGM8bW9kZT4zIgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkkgMCAicmVn aXN0ZXJfb3BlcmFuZCIgIj12IikKLS0gICAgICAgIChhbmQ6VkkgKG5vdDpWSSAobWF0Y2hfb3Bl cmFuZDpWSSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKQotLSAgICAgICAgICAgICAgICAobWF0 Y2hfb3BlcmFuZDpWSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCi0tICAiVEFSR0VUX0FM VElWRUMiCi0tICAidmFuZGMgJTAsJTEsJTIiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc2lt cGxlIildKQotLQotLShkZWZpbmVfaW5zbiAiKmFuZGMzX3Y0c2YiCi0tICBbKHNldCAobWF0Y2hf b3BlcmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAgICAgICAoYW5kOlY0 U0YgKG5vdDpWNFNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYi KSkKLS0gICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lzdGVyX29w ZXJhbmQiICJ2IikpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLSsoZGVmaW5lX2luc24gIiphbHRp dmVjX2FuZGM8bW9kZT4zIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vk0gMCAicmVnaXN0ZXJf b3BlcmFuZCIgIj12IikKLSsgICAgICAgIChhbmQ6Vk0gKG5vdDpWTSAobWF0Y2hfb3BlcmFuZDpW TSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKQotKwkJKG1hdGNoX29wZXJhbmQ6Vk0gMSAicmVn aXN0ZXJfb3BlcmFuZCIgInYiKSkpXQotKyAgIlZFQ1RPUl9NRU1fQUxUSVZFQ19QICg8TU9ERT5t b2RlKSIKLSAgICJ2YW5kYyAlMCwlMSwlMiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1w bGUiKV0pCi0gCi1AQCAtMTM5Miw3ICsxMjU4LDcgQEAgKGRlZmluZV9pbnNuICIqYWx0aXZlY192 c3BsdHNmIgotIAkgKHZlY19zZWxlY3Q6U0YgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rl cl9vcGVyYW5kIiAidiIpCi0gCQkJKHBhcmFsbGVsCi0gCQkJIFsobWF0Y2hfb3BlcmFuZDpRSSAy ICJ1NWJpdF9jaW50X29wZXJhbmQiICJpIildKSkpKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLSsg ICJWRUNUT1JfVU5JVF9BTFRJVkVDX1AgKFY0U0Ztb2RlKSIKLSAgICJ2c3BsdHcgJTAsJTEsJTIi Ci0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKLSAKLUBAIC0xNDA0LDE5ICsxMjcw LDE5IEBAIChkZWZpbmVfaW5zbiAiYWx0aXZlY192c3BsdGlzPFZJX2NoYXI+IgotICAgInZzcGx0 aXM8VklfY2hhcj4gJTAsJTEiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKLSAK LS0oZGVmaW5lX2luc24gImZ0cnVuY3Y0c2YyIgotKyhkZWZpbmVfaW5zbiAiKmFsdGl2ZWNfZnRy dW5jdjRzZjIiCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJh bmQiICI9diIpCi0gICAJKGZpeDpWNFNGIChtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJf b3BlcmFuZCIgInYiKSkpXQotLSAgIlRBUkdFVF9BTFRJVkVDIgotKyAgIlZFQ1RPUl9VTklUX0FM VElWRUNfUCAoVjRTRm1vZGUpIgotICAgInZyZml6ICUwLCUxIgotICAgWyhzZXRfYXR0ciAidHlw ZSIgInZlY2Zsb2F0IildKQotIAotIChkZWZpbmVfaW5zbiAiYWx0aXZlY192cGVybV88bW9kZT4i Ci0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0t CSh1bnNwZWM6ViBbKG1hdGNoX29wZXJhbmQ6ViAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0t CQkgICAobWF0Y2hfb3BlcmFuZDpWIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0JCSAgICht YXRjaF9vcGVyYW5kOlYxNlFJIDMgInJlZ2lzdGVyX29wZXJhbmQiICJ2IildCi0tCQkgIFVOU1BF Q19WUEVSTSkpXQotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6Vk0gMCAicmVnaXN0ZXJfb3BlcmFu ZCIgIj12IikKLSsJKHVuc3BlYzpWTSBbKG1hdGNoX29wZXJhbmQ6Vk0gMSAicmVnaXN0ZXJfb3Bl cmFuZCIgInYiKQotKwkJICAgIChtYXRjaF9vcGVyYW5kOlZNIDIgInJlZ2lzdGVyX29wZXJhbmQi ICJ2IikKLSsJCSAgICAobWF0Y2hfb3BlcmFuZDpWMTZRSSAzICJyZWdpc3Rlcl9vcGVyYW5kIiAi diIpXQotKwkJICAgVU5TUEVDX1ZQRVJNKSldCi0gICAiVEFSR0VUX0FMVElWRUMiCi0gICAidnBl cm0gJTAsJTEsJTIsJTMiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKLUBAIC0x NTE1LDE4MCArMTM4MSw2IEBAIChkZWZpbmVfaW5zbiAiYWx0aXZlY192cmVmcCIKLSAgICJ2cmVm cCAlMCwlMSIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNmbG9hdCIpXSkKLSAKLS0oZGVmaW5l X2V4cGFuZCAidmNvbmR2NHNpIgotLSAgICAgICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTSSAw ICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotLSAgICAgICAgICAgICAgKGlmX3RoZW5fZWxzZTpW NFNJCi0tICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYXRvciAzICJjb21wYXJpc29uX29wZXJh dG9yIgotLSAgICAgICAgICAgICAgICAgIFsobWF0Y2hfb3BlcmFuZDpWNFNJIDQgInJlZ2lzdGVy X29wZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTSSA1 ICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSkKLS0gICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFu ZDpWNFNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAgICAobWF0Y2hf b3BlcmFuZDpWNFNJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpKV0KLS0JIlRBUkdFVF9BTFRJ VkVDIgotLQkiCi0tewotLQlpZiAocnM2MDAwX2VtaXRfdmVjdG9yX2NvbmRfZXhwciAob3BlcmFu ZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSwKLS0JCQkJCSAgb3BlcmFuZHNbM10sIG9w ZXJhbmRzWzRdLCBvcGVyYW5kc1s1XSkpCi0tCURPTkU7Ci0tCWVsc2UKLS0JRkFJTDsKLS19Ci0t CSIpCi0tCi0tKGRlZmluZV9leHBhbmQgInZjb25kdXY0c2kiCi0tICAgICAgICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpWNFNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIpCi0tICAgICAgICAgICAg ICAoaWZfdGhlbl9lbHNlOlY0U0kKLS0gICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhdG9yIDMg ImNvbXBhcmlzb25fb3BlcmF0b3IiCi0tICAgICAgICAgICAgICAgICAgWyhtYXRjaF9vcGVyYW5k OlY0U0kgNCAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotLSAgICAgICAgICAgICAgICAgICAobWF0 Y2hfb3BlcmFuZDpWNFNJIDUgInJlZ2lzdGVyX29wZXJhbmQiICJ2IildKQotLSAgICAgICAgICAg ICAgIChtYXRjaF9vcGVyYW5kOlY0U0kgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotLSAgICAg ICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY0U0kgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkp XQotLQkiVEFSR0VUX0FMVElWRUMiCi0tCSIKLS17Ci0tCWlmIChyczYwMDBfZW1pdF92ZWN0b3Jf Y29uZF9leHByIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJdLAotLQkJCQkJ ICBvcGVyYW5kc1szXSwgb3BlcmFuZHNbNF0sIG9wZXJhbmRzWzVdKSkKLS0JRE9ORTsKLS0JZWxz ZQotLQlGQUlMOwotLX0KLS0JIikKLS0KLS0oZGVmaW5lX2V4cGFuZCAidmNvbmR2NHNmIgotLSAg ICAgICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRTRiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYi KQotLSAgICAgICAgICAgICAgKGlmX3RoZW5fZWxzZTpWNFNGCi0tICAgICAgICAgICAgICAgICht YXRjaF9vcGVyYXRvciAzICJjb21wYXJpc29uX29wZXJhdG9yIgotLSAgICAgICAgICAgICAgICAg IFsobWF0Y2hfb3BlcmFuZDpWNFNGIDQgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0gICAgICAg ICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTRiA1ICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIp XSkKLS0gICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNGIDEgInJlZ2lzdGVyX29wZXJh bmQiICJ2IikKLS0gICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNGIDIgInJlZ2lzdGVy X29wZXJhbmQiICJ2IikpKV0KLS0JIlRBUkdFVF9BTFRJVkVDIgotLQkiCi0tewotLQlpZiAocnM2 MDAwX2VtaXRfdmVjdG9yX2NvbmRfZXhwciAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVy YW5kc1syXSwKLS0JCQkJCSAgb3BlcmFuZHNbM10sIG9wZXJhbmRzWzRdLCBvcGVyYW5kc1s1XSkp Ci0tCURPTkU7Ci0tCWVsc2UKLS0JRkFJTDsKLS19Ci0tCSIpCi0tCi0tKGRlZmluZV9leHBhbmQg InZjb25kdjhoaSIKLS0gICAgICAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY4SEkgMCAicmVnaXN0 ZXJfb3BlcmFuZCIgIj12IikKLS0gICAgICAgICAgICAgIChpZl90aGVuX2Vsc2U6VjhISQotLSAg ICAgICAgICAgICAgICAobWF0Y2hfb3BlcmF0b3IgMyAiY29tcGFyaXNvbl9vcGVyYXRvciIKLS0g ICAgICAgICAgICAgICAgICBbKG1hdGNoX29wZXJhbmQ6VjhISSA0ICJyZWdpc3Rlcl9vcGVyYW5k IiAidiIpCi0tICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY4SEkgNSAicmVnaXN0 ZXJfb3BlcmFuZCIgInYiKV0pCi0tICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjhISSAx ICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0tICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6 VjhISSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpKSldCi0tCSJUQVJHRVRfQUxUSVZFQyIKLS0J IgotLXsKLS0JaWYgKHJzNjAwMF9lbWl0X3ZlY3Rvcl9jb25kX2V4cHIgKG9wZXJhbmRzWzBdLCBv cGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0sCi0tCQkJCQkgIG9wZXJhbmRzWzNdLCBvcGVyYW5kc1s0 XSwgb3BlcmFuZHNbNV0pKQotLQlET05FOwotLQllbHNlCi0tCUZBSUw7Ci0tfQotLQkiKQotLQot LShkZWZpbmVfZXhwYW5kICJ2Y29uZHV2OGhpIgotLSAgICAgICAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6VjhISSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotLSAgICAgICAgICAgICAgKGlmX3Ro ZW5fZWxzZTpWOEhJCi0tICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYXRvciAzICJjb21wYXJp c29uX29wZXJhdG9yIgotLSAgICAgICAgICAgICAgICAgIFsobWF0Y2hfb3BlcmFuZDpWOEhJIDQg InJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAgICAgICAgKG1hdGNoX29wZXJh bmQ6VjhISSA1ICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSkKLS0gICAgICAgICAgICAgICAobWF0 Y2hfb3BlcmFuZDpWOEhJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAg ICAobWF0Y2hfb3BlcmFuZDpWOEhJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikpKV0KLS0JIlRB UkdFVF9BTFRJVkVDIgotLQkiCi0tewotLQlpZiAocnM2MDAwX2VtaXRfdmVjdG9yX2NvbmRfZXhw ciAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSwKLS0JCQkJCSAgb3BlcmFu ZHNbM10sIG9wZXJhbmRzWzRdLCBvcGVyYW5kc1s1XSkpCi0tCURPTkU7Ci0tCWVsc2UKLS0JRkFJ TDsKLS19Ci0tCSIpCi0tCi0tKGRlZmluZV9leHBhbmQgInZjb25kdjE2cWkiCi0tICAgICAgICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWMTZRSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotLSAg ICAgICAgICAgICAgKGlmX3RoZW5fZWxzZTpWMTZRSQotLSAgICAgICAgICAgICAgICAobWF0Y2hf b3BlcmF0b3IgMyAiY29tcGFyaXNvbl9vcGVyYXRvciIKLS0gICAgICAgICAgICAgICAgICBbKG1h dGNoX29wZXJhbmQ6VjE2UUkgNCAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKQotLSAgICAgICAgICAg ICAgICAgICAobWF0Y2hfb3BlcmFuZDpWMTZRSSA1ICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSkK LS0gICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWMTZRSSAxICJyZWdpc3Rlcl9vcGVyYW5k IiAidiIpCi0tICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjE2UUkgMiAicmVnaXN0ZXJf b3BlcmFuZCIgInYiKSkpXQotLQkiVEFSR0VUX0FMVElWRUMiCi0tCSIKLS17Ci0tCWlmIChyczYw MDBfZW1pdF92ZWN0b3JfY29uZF9leHByIChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIG9wZXJh bmRzWzJdLAotLQkJCQkJICBvcGVyYW5kc1szXSwgb3BlcmFuZHNbNF0sIG9wZXJhbmRzWzVdKSkK LS0JRE9ORTsKLS0JZWxzZQotLQlGQUlMOwotLX0KLS0JIikKLS0KLS0oZGVmaW5lX2V4cGFuZCAi dmNvbmR1djE2cWkiCi0tICAgICAgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWMTZRSSAwICJyZWdp c3Rlcl9vcGVyYW5kIiAiPXYiKQotLSAgICAgICAgICAgICAgKGlmX3RoZW5fZWxzZTpWMTZRSQot LSAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmF0b3IgMyAiY29tcGFyaXNvbl9vcGVyYXRvciIK LS0gICAgICAgICAgICAgICAgICBbKG1hdGNoX29wZXJhbmQ6VjE2UUkgNCAicmVnaXN0ZXJfb3Bl cmFuZCIgInYiKQotLSAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWMTZRSSA1ICJy ZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSkKLS0gICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpW MTZRSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0tICAgICAgICAgICAgICAgKG1hdGNoX29w ZXJhbmQ6VjE2UUkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKSkpXQotLQkiVEFSR0VUX0FMVElW RUMiCi0tCSIKLS17Ci0tCWlmIChyczYwMDBfZW1pdF92ZWN0b3JfY29uZF9leHByIChvcGVyYW5k c1swXSwgb3BlcmFuZHNbMV0sIG9wZXJhbmRzWzJdLAotLQkJCQkJICBvcGVyYW5kc1szXSwgb3Bl cmFuZHNbNF0sIG9wZXJhbmRzWzVdKSkKLS0JRE9ORTsKLS0JZWxzZQotLQlGQUlMOwotLX0KLS0J IikKLS0KLS0KLS0oZGVmaW5lX2luc24gImFsdGl2ZWNfdnNlbF92NHNpIgotLSAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6VjRTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotLSAgICAgICAgKHVu c3BlYzpWNFNJIFsobWF0Y2hfb3BlcmFuZDpWNFNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikK LS0gICAgICAgICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTSSAyICJyZWdpc3Rlcl9v cGVyYW5kIiAidiIpCi0tICAgICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY0U0kg MyAicmVnaXN0ZXJfb3BlcmFuZCIgInYiKV0gCi0tCQkgICAgIFVOU1BFQ19WU0VMNFNJKSldCi0t ICAiVEFSR0VUX0FMVElWRUMiCi0tICAidnNlbCAlMCwlMSwlMiwlMyIKLS0gIFsoc2V0X2F0dHIg InR5cGUiICJ2ZWNwZXJtIildKQotLQotLShkZWZpbmVfaW5zbiAiYWx0aXZlY192c2VsX3Y0c2Yi Ci0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9diIp Ci0tICAgICAgICAodW5zcGVjOlY0U0YgWyhtYXRjaF9vcGVyYW5kOlY0U0YgMSAicmVnaXN0ZXJf b3BlcmFuZCIgInYiKQotLSAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpWNFNG IDIgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAgICAgICAgICAgKG1hdGNo X29wZXJhbmQ6VjRTSSAzICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpXSAKLS0JICAgICAgICAgICAg ICBVTlNQRUNfVlNFTDRTRikpXQotLSAgIlRBUkdFVF9BTFRJVkVDIgotLSAgInZzZWwgJTAsJTEs JTIsJTMiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAidmVjcGVybSIpXSkKLS0KLS0oZGVmaW5lX2lu c24gImFsdGl2ZWNfdnNlbF92OGhpIgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjhISSAwICJy ZWdpc3Rlcl9vcGVyYW5kIiAiPXYiKQotLSAgICAgICAgKHVuc3BlYzpWOEhJIFsobWF0Y2hfb3Bl cmFuZDpWOEhJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAgICAgICAg ICAgKG1hdGNoX29wZXJhbmQ6VjhISSAyICJyZWdpc3Rlcl9vcGVyYW5kIiAidiIpCi0tICAgICAg ICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlY4SEkgMyAicmVnaXN0ZXJfb3BlcmFuZCIg InYiKV0gCi0tCQkgICAgIFVOU1BFQ19WU0VMOEhJKSldCi0tICAiVEFSR0VUX0FMVElWRUMiCi0t ICAidnNlbCAlMCwlMSwlMiwlMyIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNwZXJtIildKQot LQotLShkZWZpbmVfaW5zbiAiYWx0aXZlY192c2VsX3YxNnFpIgotLSAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6VjE2UUkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj12IikKLS0gICAgICAgICh1bnNwZWM6 VjE2UUkgWyhtYXRjaF9vcGVyYW5kOlYxNlFJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJ2IikKLS0g ICAgICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlYxNlFJIDIgInJlZ2lzdGVyX29w ZXJhbmQiICJ2IikKLS0gICAgICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOlYxNlFJ IDMgInJlZ2lzdGVyX29wZXJhbmQiICJ2IildIAotLQkJICAgICAgVU5TUEVDX1ZTRUwxNlFJKSld Ci0tICAiVEFSR0VUX0FMVElWRUMiCi0tICAidnNlbCAlMCwlMSwlMiwlMyIKLS0gIFsoc2V0X2F0 dHIgInR5cGUiICJ2ZWNwZXJtIildKQotLQotIChkZWZpbmVfaW5zbiAiYWx0aXZlY192c2xkb2lf PG1vZGU+IgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6ViAwICJyZWdpc3Rlcl9vcGVyYW5kIiAi PXYiKQotICAgICAgICAgKHVuc3BlYzpWIFsobWF0Y2hfb3BlcmFuZDpWIDEgInJlZ2lzdGVyX29w ZXJhbmQiICJ2IikKLUBAIC0xODc4LDYgKzE1NzAsMTQgQEAgKGRlZmluZV9leHBhbmQgImJ1aWxk X3ZlY3Rvcl9tYXNrX2Zvcl9sbwotICAgZ2NjX2Fzc2VydCAoR0VUX0NPREUgKG9wZXJhbmRzWzFd KSA9PSBNRU0pOwotIAotICAgYWRkciA9IFhFWFAgKG9wZXJhbmRzWzFdLCAwKTsKLSsgIGlmIChW RUNUT1JfTUVNX1ZTWF9QIChHRVRfTU9ERSAob3BlcmFuZHNbMV0pKSkKLSsgICAgewotKyAgICAg IC8qIFZTWCBkb2Vzbid0IGFuZCBvZmYgdGhlIGJvdHRvbSBhZGRyZXNzIGJpdHMsIGFuZCBtZW1v cnkKLSsJIG9wZXJhdGlvbnMgYXJlIGFsaWduZWQgdG8gdGhlIG5hdHVyYWwgZGF0YSB0eXBlLiAg Ki8KLSsgICAgICBlbWl0X2luc24gKGdlbl9ydHhfU0VUIChWT0lEbW9kZSwgb3BlcmFuZHNbMF0s IG9wZXJhbmRzWzFdKSk7Ci0rICAgICAgRE9ORTsKLSsgICAgfQotKwotICAgdGVtcCA9IGdlbl9y ZWdfcnR4IChHRVRfTU9ERSAoYWRkcikpOwotICAgZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAoVk9J RG1vZGUsIHRlbXAsIAotIAkJCSAgZ2VuX3J0eF9ORUcgKEdFVF9NT0RFIChhZGRyKSwgYWRkcikp KTsKLUBAIC0xOTU5LDk1ICsxNjU5LDYgQEAgKGRlZmluZV9pbnNuICIqYWx0aXZlY19zdHZlc2Z4 IgotICAgInN0dmV3eCAlMSwleTAiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAidmVjc3RvcmUiKV0p Ci0gCi0tKGRlZmluZV9leHBhbmQgInZlY19pbml0PG1vZGU+IgotLSAgWyhtYXRjaF9vcGVyYW5k OlYgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0tICAgKG1hdGNoX29wZXJhbmQgMSAiIiAiIild Ci0tICAiVEFSR0VUX0FMVElWRUMiCi0tewotLSAgcnM2MDAwX2V4cGFuZF92ZWN0b3JfaW5pdCAo b3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsKLS0gIERPTkU7Ci0tfSkKLS0KLS0oZGVmaW5lX2V4 cGFuZCAidmVjX3NldHY0c2kiCi0tICBbKG1hdGNoX29wZXJhbmQ6VjRTSSAwICJyZWdpc3Rlcl9v cGVyYW5kIiAiIikKLS0gICAobWF0Y2hfb3BlcmFuZDpTSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAi IikKLS0gICAobWF0Y2hfb3BlcmFuZCAyICJjb25zdF9pbnRfb3BlcmFuZCIgIiIpXQotLSAgIlRB UkdFVF9BTFRJVkVDIgotLXsKLS0gIHJzNjAwMF9leHBhbmRfdmVjdG9yX3NldCAob3BlcmFuZHNb MF0sIG9wZXJhbmRzWzFdLCBJTlRWQUwgKG9wZXJhbmRzWzJdKSk7Ci0tICBET05FOwotLX0pCi0t Ci0tKGRlZmluZV9leHBhbmQgInZlY19zZXR2OGhpIgotLSAgWyhtYXRjaF9vcGVyYW5kOlY4SEkg MCAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0tICAgKG1hdGNoX29wZXJhbmQ6SEkgMSAicmVnaXN0 ZXJfb3BlcmFuZCIgIiIpCi0tICAgKG1hdGNoX29wZXJhbmQgMiAiY29uc3RfaW50X29wZXJhbmQi ICIiKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLS17Ci0tICByczYwMDBfZXhwYW5kX3ZlY3Rvcl9z ZXQgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgSU5UVkFMIChvcGVyYW5kc1syXSkpOwotLSAg RE9ORTsKLS19KQotLQotLShkZWZpbmVfZXhwYW5kICJ2ZWNfc2V0djE2cWkiCi0tICBbKG1hdGNo X29wZXJhbmQ6VjE2UUkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0tICAgKG1hdGNoX29wZXJh bmQ6UUkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0tICAgKG1hdGNoX29wZXJhbmQgMiAiY29u c3RfaW50X29wZXJhbmQiICIiKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLS17Ci0tICByczYwMDBf ZXhwYW5kX3ZlY3Rvcl9zZXQgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgSU5UVkFMIChvcGVy YW5kc1syXSkpOwotLSAgRE9ORTsKLS19KQotLQotLShkZWZpbmVfZXhwYW5kICJ2ZWNfc2V0djRz ZiIKLS0gIFsobWF0Y2hfb3BlcmFuZDpWNFNGIDAgInJlZ2lzdGVyX29wZXJhbmQiICIiKQotLSAg IChtYXRjaF9vcGVyYW5kOlNGIDEgInJlZ2lzdGVyX29wZXJhbmQiICIiKQotLSAgIChtYXRjaF9v cGVyYW5kIDIgImNvbnN0X2ludF9vcGVyYW5kIiAiIildCi0tICAiVEFSR0VUX0FMVElWRUMiCi0t ewotLSAgcnM2MDAwX2V4cGFuZF92ZWN0b3Jfc2V0IChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0s IElOVFZBTCAob3BlcmFuZHNbMl0pKTsKLS0gIERPTkU7Ci0tfSkKLS0KLS0oZGVmaW5lX2V4cGFu ZCAidmVjX2V4dHJhY3R2NHNpIgotLSAgWyhtYXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29w ZXJhbmQiICIiKQotLSAgIChtYXRjaF9vcGVyYW5kOlY0U0kgMSAicmVnaXN0ZXJfb3BlcmFuZCIg IiIpCi0tICAgKG1hdGNoX29wZXJhbmQgMiAiY29uc3RfaW50X29wZXJhbmQiICIiKV0KLS0gICJU QVJHRVRfQUxUSVZFQyIKLS17Ci0tICByczYwMDBfZXhwYW5kX3ZlY3Rvcl9leHRyYWN0IChvcGVy YW5kc1swXSwgb3BlcmFuZHNbMV0sIElOVFZBTCAob3BlcmFuZHNbMl0pKTsKLS0gIERPTkU7Ci0t fSkKLS0KLS0oZGVmaW5lX2V4cGFuZCAidmVjX2V4dHJhY3R2OGhpIgotLSAgWyhtYXRjaF9vcGVy YW5kOkhJIDAgInJlZ2lzdGVyX29wZXJhbmQiICIiKQotLSAgIChtYXRjaF9vcGVyYW5kOlY4SEkg MSAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0tICAgKG1hdGNoX29wZXJhbmQgMiAiY29uc3RfaW50 X29wZXJhbmQiICIiKV0KLS0gICJUQVJHRVRfQUxUSVZFQyIKLS17Ci0tICByczYwMDBfZXhwYW5k X3ZlY3Rvcl9leHRyYWN0IChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sIElOVFZBTCAob3BlcmFu ZHNbMl0pKTsKLS0gIERPTkU7Ci0tfSkKLS0KLS0oZGVmaW5lX2V4cGFuZCAidmVjX2V4dHJhY3R2 MTZxaSIKLS0gIFsobWF0Y2hfb3BlcmFuZDpRSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKLS0g ICAobWF0Y2hfb3BlcmFuZDpWMTZRSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKLS0gICAobWF0 Y2hfb3BlcmFuZCAyICJjb25zdF9pbnRfb3BlcmFuZCIgIiIpXQotLSAgIlRBUkdFVF9BTFRJVkVD IgotLXsKLS0gIHJzNjAwMF9leHBhbmRfdmVjdG9yX2V4dHJhY3QgKG9wZXJhbmRzWzBdLCBvcGVy YW5kc1sxXSwgSU5UVkFMIChvcGVyYW5kc1syXSkpOwotLSAgRE9ORTsKLS19KQotLQotLShkZWZp bmVfZXhwYW5kICJ2ZWNfZXh0cmFjdHY0c2YiCi0tICBbKG1hdGNoX29wZXJhbmQ6U0YgMCAicmVn aXN0ZXJfb3BlcmFuZCIgIiIpCi0tICAgKG1hdGNoX29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rlcl9v cGVyYW5kIiAiIikKLS0gICAobWF0Y2hfb3BlcmFuZCAyICJjb25zdF9pbnRfb3BlcmFuZCIgIiIp XQotLSAgIlRBUkdFVF9BTFRJVkVDIgotLXsKLS0gIHJzNjAwMF9leHBhbmRfdmVjdG9yX2V4dHJh Y3QgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgSU5UVkFMIChvcGVyYW5kc1syXSkpOwotLSAg RE9ORTsKLS19KQotLQotIDs7IEdlbmVyYXRlCi0gOzsgICAgdnNwbHRpcz8gU0NSQVRDSDAsMAot IDs7ICAgIHZzdWJ1P20gU0NSQVRDSDIsU0NSQVRDSDEsJTEKLUBAIC0yMDY5LDcgKzE2ODAsNyBA QCAoZGVmaW5lX2V4cGFuZCAiYWJzPG1vZGU+MiIKLSA7OyAgICB2c3BsdGlzdyBTQ1JBVENIMSwt MQotIDs7ICAgIHZzbHcgU0NSQVRDSDIsU0NSQVRDSDEsU0NSQVRDSDEKLSA7OyAgICB2YW5kYyAl MCwlMSxTQ1JBVENIMgotLShkZWZpbmVfZXhwYW5kICJhYnN2NHNmMiIKLSsoZGVmaW5lX2V4cGFu ZCAiYWx0aXZlY19hYnN2NHNmMiIKLSAgIFsoc2V0IChtYXRjaF9kdXAgMikKLSAJKHZlY19kdXBs aWNhdGU6VjRTSSAoY29uc3RfaW50IC0xKSkpCi0gICAgKHNldCAobWF0Y2hfZHVwIDMpCi1AQCAt MjEzMiw3ICsxNzQzLDcgQEAgKGRlZmluZV9leHBhbmQgInZlY19zaGxfPG1vZGU+IgotICAgRE9O RTsKLSB9IikKLSAKLS07OyBWZWN0b3Igc2hpZnQgbGVmdCBpbiBiaXRzLiBDdXJyZW50bHkgc3Vw cG9ydGVkIG9ueSBmb3Igc2hpZnQKLSs7OyBWZWN0b3Igc2hpZnQgcmlnaHQgaW4gYml0cy4gQ3Vy cmVudGx5IHN1cHBvcnRlZCBvbnkgZm9yIHNoaWZ0Ci0gOzsgYW1vdW50cyB0aGF0IGNhbiBiZSBl eHByZXNzZWQgYXMgYnl0ZSBzaGlmdHMgKGRpdmlzaWJsZSBieSA4KS4KLSA7OyBHZW5lcmFsIHNo aWZ0IGFtb3VudHMgY2FuIGJlIHN1cHBvcnRlZCB1c2luZyB2c3JvICsgdnNyLiBXZSdyZQotIDs7 IG5vdCBleHBlY3RpbmcgdG8gc2VlIHRoZXNlIHlldCAodGhlIHZlY3Rvcml6ZXIgY3VycmVudGx5 Ci1AQCAtMjY2NSw3ICsyMjc2LDcgQEAgKGRlZmluZV9leHBhbmQgInZlY19wYWNrX3RydW5jX3Y0 c2kiCi0gICBET05FOwotIH0iKQotIAotLShkZWZpbmVfZXhwYW5kICJuZWd2NHNmMiIKLSsoZGVm aW5lX2V4cGFuZCAiYWx0aXZlY19uZWd2NHNmMiIKLSAgIFsodXNlIChtYXRjaF9vcGVyYW5kOlY0 U0YgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpKQotICAgICh1c2UgKG1hdGNoX29wZXJhbmQ6VjRT RiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikpXQotICAgIlRBUkdFVF9BTFRJVkVDIgotQEAgLTI5 OTQsMjkgKzI2MDUsNiBAQCAoZGVmaW5lX2V4cGFuZCAidmVjX2V4dHJhY3Rfb2RkdjE2cWkiCi0g ICBlbWl0X2luc24gKGdlbl92cGt1aHVtX25vbW9kZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFd LCBvcGVyYW5kc1syXSkpOwotICAgRE9ORTsKLSB9IikKLS0oZGVmaW5lX2V4cGFuZCAidmVjX2lu dGVybGVhdmVfaGlnaHY0c2YiCi0tIFsoc2V0IChtYXRjaF9vcGVyYW5kOlY0U0YgMCAicmVnaXN0 ZXJfb3BlcmFuZCIgIiIpCi0tICAgICAgICAodW5zcGVjOlY0U0YgWyhtYXRjaF9vcGVyYW5kOlY0 U0YgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpCi0tICAgICAgICAgICAgICAgICAgICAgIChtYXRj aF9vcGVyYW5kOlY0U0YgMiAicmVnaXN0ZXJfb3BlcmFuZCIgIiIpXQotLSAgICAgICAgICAgICAg ICAgICAgICBVTlNQRUNfSU5URVJISV9WNFNGKSldCi0tICAiVEFSR0VUX0FMVElWRUMiCi0tICAi Ci0teyAKLS0gIGVtaXRfaW5zbiAoZ2VuX2FsdGl2ZWNfdm1yZ2hzZiAob3BlcmFuZHNbMF0sIG9w ZXJhbmRzWzFdLCBvcGVyYW5kc1syXSkpOwotLSAgRE9ORTsKLS19IikKLS0KLS0oZGVmaW5lX2V4 cGFuZCAidmVjX2ludGVybGVhdmVfbG93djRzZiIKLS0gWyhzZXQgKG1hdGNoX29wZXJhbmQ6VjRT RiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKLS0gICAgICAgICh1bnNwZWM6VjRTRiBbKG1hdGNo X29wZXJhbmQ6VjRTRiAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiIikKLS0gICAgICAgICAgICAgICAg ICAgICAgKG1hdGNoX29wZXJhbmQ6VjRTRiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiIildCi0tICAg ICAgICAgICAgICAgICAgICAgIFVOU1BFQ19JTlRFUkxPX1Y0U0YpKV0KLS0gICJUQVJHRVRfQUxU SVZFQyIKLS0gICIKLS17Ci0tICBlbWl0X2luc24gKGdlbl9hbHRpdmVjX3Ztcmdsc2YgKG9wZXJh bmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pKTsKLS0gIERPTkU7Ci0tfSIpCi0gCi0g KGRlZmluZV9leHBhbmQgInZlY19pbnRlcmxlYXZlX2hpZ2g8bW9kZT4iCi0gIFsoc2V0IChtYXRj aF9vcGVyYW5kOlZJIDAgInJlZ2lzdGVyX29wZXJhbmQiICIiKQotLS0tIGdjYy9jb25maWcvcnM2 MDAwL2FpeDYxLmgJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NDU1NykKLSsrKyBnY2MvY29uZmln L3JzNjAwMC9haXg2MS5oCSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25lcikJKHJldmlz aW9uIDE0NDY5MikKLUBAIC01NywyMCArNTcsMjQgQEAgZG8gewkJCQkJCQkJCVwKLSAjdW5kZWYg QVNNX1NQRUMKLSAjZGVmaW5lIEFTTV9TUEVDICItdSAle21haXg2NDotYTY0ICV7IW1jcHUqOi1t cHBjNjR9fSAlKGFzbV9jcHUpIgotIAotLS8qIENvbW1vbiBBU00gZGVmaW5pdGlvbnMgdXNlZCBi eSBBU01fU1BFQyBhbW9uZ3N0IHRoZSB2YXJpb3VzIHRhcmdldHMKLS0gICBmb3IgaGFuZGxpbmcg LW1jcHU9eHh4IHN3aXRjaGVzLiAgKi8KLSsvKiBDb21tb24gQVNNIGRlZmluaXRpb25zIHVzZWQg YnkgQVNNX1NQRUMgYW1vbmdzdCB0aGUgdmFyaW91cyB0YXJnZXRzIGZvcgotKyAgIGhhbmRsaW5n IC1tY3B1PXh4eCBzd2l0Y2hlcy4gIFRoZXJlIGlzIGEgcGFyYWxsZWwgbGlzdCBpbiBkcml2ZXIt cnM2MDAwLmMgdG8KLSsgICBwcm92aWRlIHRoZSBkZWZhdWx0IGFzc2VtYmxlciBvcHRpb25zIGlm IHRoZSB1c2VyIHVzZXMgLW1jcHU9bmF0aXZlLCBzbyBpZgotKyAgIHlvdSBtYWtlIGNoYW5nZXMg aGVyZSwgbWFrZSB0aGVtIHRoZXJlIGFsc28uICAqLwotICN1bmRlZiBBU01fQ1BVX1NQRUMKLSAj ZGVmaW5lIEFTTV9DUFVfU1BFQyBcCi0gIiV7IW1jcHUqOiAleyFtYWl4NjQ6IFwKLSAgICV7bXBv d2VycGM2NDogLW1wcGM2NH0gXAotICAgJXttYWx0aXZlYzogLW05NzB9IFwKLSAgICV7IW1hbHRp dmVjOiAleyFtcG93ZXI2NDogJShhc21fZGVmYXVsdCl9fX19IFwKLSsle21jcHU9bmF0aXZlOiAl KGFzbV9jcHVfbmF0aXZlKX0gXAotICV7bWNwdT1wb3dlcjM6IC1tNjIwfSBcCi0gJXttY3B1PXBv d2VyNDogLW1wd3I0fSBcCi0gJXttY3B1PXBvd2VyNTogLW1wd3I1fSBcCi0gJXttY3B1PXBvd2Vy NSs6IC1tcHdyNXh9IFwKLSAle21jcHU9cG93ZXI2OiAtbXB3cjZ9IFwKLSAle21jcHU9cG93ZXI2 eDogLW1wd3I2fSBcCi0rJXttY3B1PXBvd2VyNzogLW1wd3I3fSBcCi0gJXttY3B1PXBvd2VycGM6 IC1tcHBjfSBcCi0gJXttY3B1PXJzNjRhOiAtbXBwY30gXAotICV7bWNwdT02MDM6IC1tNjAzfSBc Ci0tLS0gZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kCSguLi4vdHJ1bmspCShyZXZpc2lvbiAx NDQ1NTcpCi0rKysgZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kCSguLi4vYnJhbmNoZXMvaWJt L3Bvd2VyNy1tZWlzc25lcikJKHJldmlzaW9uIDE0NDY5MikKLUBAIC0xMzgsNyArMTM4LDcgQEAg KGRlZmluZV9hdHRyICJsZW5ndGgiICIiCi0gOzsgUHJvY2Vzc29yIHR5cGUgLS0gdGhpcyBhdHRy aWJ1dGUgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBwcm9jZXNzb3JfdHlwZQotIDs7IGVudW1lcmF0 aW9uIGluIHJzNjAwMC5oLgotIAotLShkZWZpbmVfYXR0ciAiY3B1IiAicmlvczEscmlvczIscnM2 NGEsbXBjY29yZSxwcGM0MDMscHBjNDA1LHBwYzQ0MCxwcGM2MDEscHBjNjAzLHBwYzYwNCxwcGM2 MDRlLHBwYzYyMCxwcGM2MzAscHBjNzUwLHBwYzc0MDAscHBjNzQ1MCxwcGM4NTQwLHBwY2UzMDBj MixwcGNlMzAwYzMscHBjZTUwMG1jLHBvd2VyNCxwb3dlcjUscG93ZXI2LGNlbGwiCi0rKGRlZmlu ZV9hdHRyICJjcHUiICJyaW9zMSxyaW9zMixyczY0YSxtcGNjb3JlLHBwYzQwMyxwcGM0MDUscHBj NDQwLHBwYzYwMSxwcGM2MDMscHBjNjA0LHBwYzYwNGUscHBjNjIwLHBwYzYzMCxwcGM3NTAscHBj NzQwMCxwcGM3NDUwLHBwYzg1NDAscHBjZTMwMGMyLHBwY2UzMDBjMyxwcGNlNTAwbWMscG93ZXI0 LHBvd2VyNSxwb3dlcjYscG93ZXI3LGNlbGwiCi0gICAoY29uc3QgKHN5bWJvbF9yZWYgInJzNjAw MF9jcHVfYXR0ciIpKSkKLSAKLSAKLUBAIC0xNjcsNiArMTY3LDcgQEAgKGRlZmluZV9hdHRyICJj ZWxsX21pY3JvIiAibm90LGNvbmRpdGlvbgotIChpbmNsdWRlICJwb3dlcjQubWQiKQotIChpbmNs dWRlICJwb3dlcjUubWQiKQotIChpbmNsdWRlICJwb3dlcjYubWQiKQotKyhpbmNsdWRlICJwb3dl cjcubWQiKQotIChpbmNsdWRlICJjZWxsLm1kIikKLSAoaW5jbHVkZSAieGZwdS5tZCIpCi0gCi1A QCAtMjE4LDYgKzIxOSw5IEBAIChkZWZpbmVfbW9kZV9hdHRyIHdkIFsoUUkgImIiKSAoSEkgImgi KSAKLSA7IERJbW9kZSBiaXRzCi0gKGRlZmluZV9tb2RlX2F0dHIgZGJpdHMgWyhRSSAiNTYiKSAo SEkgIjQ4IikgKFNJICIzMiIpXSkKLSAKLSs7OyBJU0VML0lTRUw2NCB0YXJnZXQgc2VsZWN0aW9u Ci0rKGRlZmluZV9tb2RlX2F0dHIgc2VsIFsoU0kgIiIpIChESSAiNjQiKV0pCi0rCi0gDAotIDs7 IFN0YXJ0IHdpdGggZml4ZWQtcG9pbnQgbG9hZCBhbmQgc3RvcmUgaW5zbnMuICBIZXJlIHdlIHB1 dCBvbmx5IHRoZSBtb3JlCi0gOzsgY29tcGxleCBmb3Jtcy4gIEJhc2ljIGRhdGEgdHJhbnNmZXIg aXMgZG9uZSBsYXRlci4KLUBAIC01MjAsNyArNTI0LDcgQEAgKGRlZmluZV9pbnNuICIiCi0gICAi QAotICAgIHthbmRpbC58YW5kaS59ICUyLCUxLDB4ZmYKLSAgICAjIgotLSAgWyhzZXRfYXR0ciAi dHlwZSIgImNvbXBhcmUiKQotKyAgWyhzZXRfYXR0ciAidHlwZSIgImZhc3RfY29tcGFyZSxjb21w YXJlIikKLSAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsOCIpXSkKLSAKLSAoZGVmaW5lX3NwbGl0 Ci1AQCAtNTQ2LDcgKzU1MCw3IEBAIChkZWZpbmVfaW5zbiAiIgotICAgIkAKLSAgICB7YW5kaWwu fGFuZGkufSAlMCwlMSwweGZmCi0gICAgIyIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJjb21wYXJl IikKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsY29tcGFyZSIpCi0gICAgKHNl dF9hdHRyICJsZW5ndGgiICI0LDgiKV0pCi0gCi0gKGRlZmluZV9zcGxpdAotQEAgLTY4Nyw3ICs2 OTEsNyBAQCAoZGVmaW5lX2luc24gIiIKLSAgICJACi0gICAge2FuZGlsLnxhbmRpLn0gJTIsJTEs MHhmZgotICAgICMiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAiY29tcGFyZSIpCi0rICBbKHNldF9h dHRyICJ0eXBlIiAiZmFzdF9jb21wYXJlLGNvbXBhcmUiKQotICAgIChzZXRfYXR0ciAibGVuZ3Ro IiAiNCw4IildKQotIAotIChkZWZpbmVfc3BsaXQKLUBAIC03MTMsNyArNzE3LDcgQEAgKGRlZmlu ZV9pbnNuICIiCi0gICAiQAotICAgIHthbmRpbC58YW5kaS59ICUwLCUxLDB4ZmYKLSAgICAjIgot LSAgWyhzZXRfYXR0ciAidHlwZSIgImNvbXBhcmUiKQotKyAgWyhzZXRfYXR0ciAidHlwZSIgImZh c3RfY29tcGFyZSxjb21wYXJlIikKLSAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsOCIpXSkKLSAK LSAoZGVmaW5lX3NwbGl0Ci1AQCAtODU2LDcgKzg2MCw3IEBAIChkZWZpbmVfaW5zbiAiIgotICAg IkAKLSAgICB7YW5kaWwufGFuZGkufSAlMiwlMSwweGZmZmYKLSAgICAjIgotLSAgWyhzZXRfYXR0 ciAidHlwZSIgImNvbXBhcmUiKQotKyAgWyhzZXRfYXR0ciAidHlwZSIgImZhc3RfY29tcGFyZSxj b21wYXJlIikKLSAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsOCIpXSkKLSAKLSAoZGVmaW5lX3Nw bGl0Ci1AQCAtODgyLDcgKzg4Niw3IEBAIChkZWZpbmVfaW5zbiAiIgotICAgIkAKLSAgICB7YW5k aWwufGFuZGkufSAlMCwlMSwweGZmZmYKLSAgICAjIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImNv bXBhcmUiKQotKyAgWyhzZXRfYXR0ciAidHlwZSIgImZhc3RfY29tcGFyZSxjb21wYXJlIikKLSAg ICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsOCIpXSkKLSAKLSAoZGVmaW5lX3NwbGl0Ci1AQCAtMTY3 MCw3ICsxNjc0LDcgQEAgKGRlZmluZV9pbnNuICIiCi0gICAiQAotICAgIG5vci4gJTIsJTEsJTEK LSAgICAjIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImNvbXBhcmUiKQotKyAgWyhzZXRfYXR0ciAi dHlwZSIgImZhc3RfY29tcGFyZSxjb21wYXJlIikKLSAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQs OCIpXSkKLSAKLSAoZGVmaW5lX3NwbGl0Ci1AQCAtMTY5Niw3ICsxNzAwLDcgQEAgKGRlZmluZV9p bnNuICIiCi0gICAiQAotICAgIG5vci4gJTAsJTEsJTEKLSAgICAjIgotLSAgWyhzZXRfYXR0ciAi dHlwZSIgImNvbXBhcmUiKQotKyAgWyhzZXRfYXR0ciAidHlwZSIgImZhc3RfY29tcGFyZSxjb21w YXJlIikKLSAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsOCIpXSkKLSAKLSAoZGVmaW5lX3NwbGl0 Ci1AQCAtMjIyMSwxMCArMjIyNSwyMiBAQCAoZGVmaW5lX2luc24gInBvcGNudGI8bW9kZT4yIgot ICAgIlRBUkdFVF9QT1BDTlRCIgotICAgInBvcGNudGIgJTAsJTEiKQotIAotKyhkZWZpbmVfaW5z biAicG9wY250d3NpMiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3Bl cmFuZCIgIj1yIikKLSsJKHBvcGNvdW50OlNJIChtYXRjaF9vcGVyYW5kOlNJIDEgImdwY19yZWdf b3BlcmFuZCIgInIiKSkpXQotKyAgIlRBUkdFVF9QT1BDTlREIgotKyAgInBvcGNudHcgJTAsJTEi KQotKwotKyhkZWZpbmVfaW5zbiAicG9wY250ZGRpMiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5k OkRJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yIikKLSsJKHBvcGNvdW50OkRJIChtYXRjaF9vcGVy YW5kOkRJIDEgImdwY19yZWdfb3BlcmFuZCIgInIiKSkpXQotKyAgIlRBUkdFVF9QT1BDTlREICYm IFRBUkdFVF9QT1dFUlBDNjQiCi0rICAicG9wY250ZCAlMCwlMSIpCi0rCi0gKGRlZmluZV9leHBh bmQgInBvcGNvdW50PG1vZGU+MiIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkdQUiAwICJncGNf cmVnX29wZXJhbmQiICIiKQotIAkocG9wY291bnQ6R1BSIChtYXRjaF9vcGVyYW5kOkdQUiAxICJn cGNfcmVnX29wZXJhbmQiICIiKSkpXQotLSAgIlRBUkdFVF9QT1BDTlRCIgotKyAgIlRBUkdFVF9Q T1BDTlRCIHx8IFRBUkdFVF9QT1BDTlREIgotICAgewotICAgICByczYwMDBfZW1pdF9wb3Bjb3Vu dCAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKTsKLSAgICAgRE9ORTsKLUBAIC0yODUyLDcgKzI4 NjgsNyBAQCAoZGVmaW5lX2luc24gImFuZHNpM19tYyIKLSAgICB7cmxpbm18cmx3aW5tfSAlMCwl MSwwLCVtMiwlTTIKLSAgICB7YW5kaWwufGFuZGkufSAlMCwlMSwlYjIKLSAgICB7YW5kaXUufGFu ZGlzLn0gJTAsJTEsJXUyIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgIiosKixjb21wYXJlLGNvbXBh cmUiKV0pCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiKiwqLGZhc3RfY29tcGFyZSxmYXN0X2NvbXBh cmUiKV0pCi0gCi0gKGRlZmluZV9pbnNuICJhbmRzaTNfbm9tYyIKLSAgIFsoc2V0IChtYXRjaF9v cGVyYW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yLHIiKQotQEAgLTI4OTUsNyArMjkxMSw4 IEBAIChkZWZpbmVfaW5zbiAiKmFuZHNpM19pbnRlcm5hbDJfbWMiCi0gICAgIwotICAgICMKLSAg ICAjIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImNvbXBhcmUsY29tcGFyZSxjb21wYXJlLGRlbGF5 ZWRfY29tcGFyZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlIikKLSsgIFsoc2V0X2F0 dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsZmFzdF9jb21wYXJlLGZhc3RfY29tcGFyZSxkZWxheWVk X2NvbXBhcmUsXAotKwkJICAgICBjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlIikKLSAg ICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsNCw0LDQsOCw4LDgsOCIpXSkKLSAKLSAoZGVmaW5lX2lu c24gIiphbmRzaTNfaW50ZXJuYWwzX21jIgotQEAgLTI5MTUsNyArMjkzMiw4IEBAIChkZWZpbmVf aW5zbiAiKmFuZHNpM19pbnRlcm5hbDNfbWMiCi0gICAgIwotICAgICMKLSAgICAjIgotLSAgWyhz ZXRfYXR0ciAidHlwZSIgImNvbXBhcmUsY29tcGFyZSxjb21wYXJlLGRlbGF5ZWRfY29tcGFyZSxj b21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlIikKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJj b21wYXJlLGZhc3RfY29tcGFyZSxmYXN0X2NvbXBhcmUsZGVsYXllZF9jb21wYXJlLGNvbXBhcmUs XAotKwkJICAgICBjb21wYXJlLGNvbXBhcmUsY29tcGFyZSIpCi0gICAgKHNldF9hdHRyICJsZW5n dGgiICI4LDQsNCw0LDgsOCw4LDgiKV0pCi0gCi0gKGRlZmluZV9zcGxpdAotQEAgLTI5NzQsNyAr Mjk5Miw4IEBAIChkZWZpbmVfaW5zbiAiKmFuZHNpM19pbnRlcm5hbDQiCi0gICAgIwotICAgICMK LSAgICAjIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImNvbXBhcmUsY29tcGFyZSxjb21wYXJlLGRl bGF5ZWRfY29tcGFyZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlIikKLSsgIFsoc2V0 X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsZmFzdF9jb21wYXJlLGZhc3RfY29tcGFyZSxkZWxh eWVkX2NvbXBhcmUsXAotKwkJICAgICBjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlIikK LSAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsNCw0LDQsOCw4LDgsOCIpXSkKLSAKLSAoZGVmaW5l X2luc24gIiphbmRzaTNfaW50ZXJuYWw1X21jIgotQEAgLTI5OTYsNyArMzAxNSw4IEBAIChkZWZp bmVfaW5zbiAiKmFuZHNpM19pbnRlcm5hbDVfbWMiCi0gICAgIwotICAgICMKLSAgICAjIgotLSAg WyhzZXRfYXR0ciAidHlwZSIgImNvbXBhcmUsY29tcGFyZSxjb21wYXJlLGRlbGF5ZWRfY29tcGFy ZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlIikKLSsgIFsoc2V0X2F0dHIgInR5cGUi ICJjb21wYXJlLGZhc3RfY29tcGFyZSxmYXN0X2NvbXBhcmUsZGVsYXllZF9jb21wYXJlLGNvbXBh cmUsXAotKwkJICAgICBjb21wYXJlLGNvbXBhcmUsY29tcGFyZSIpCi0gICAgKHNldF9hdHRyICJs ZW5ndGgiICI4LDQsNCw0LDgsOCw4LDgiKV0pCi0gCi0gKGRlZmluZV9pbnNuICIqYW5kc2kzX2lu dGVybmFsNV9ub21jIgotQEAgLTMxNDEsNyArMzE2MSw3IEBAIChkZWZpbmVfaW5zbiAiKmJvb2xz aTNfaW50ZXJuYWwyIgotICAgIkAKLSAgICAlcTQuICUzLCUxLCUyCi0gICAgIyIKLS0gIFsoc2V0 X2F0dHIgInR5cGUiICJjb21wYXJlIikKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBh cmUsY29tcGFyZSIpCi0gICAgKHNldF9hdHRyICJsZW5ndGgiICI0LDgiKV0pCi0gCi0gKGRlZmlu ZV9zcGxpdAotQEAgLTMxNzAsNyArMzE5MCw3IEBAIChkZWZpbmVfaW5zbiAiKmJvb2xzaTNfaW50 ZXJuYWwzIgotICAgIkAKLSAgICAlcTQuICUwLCUxLCUyCi0gICAgIyIKLS0gIFsoc2V0X2F0dHIg InR5cGUiICJjb21wYXJlIikKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsY29t cGFyZSIpCi0gICAgKHNldF9hdHRyICJsZW5ndGgiICI0LDgiKV0pCi0gCi0gKGRlZmluZV9zcGxp dAotQEAgLTMyOTUsNyArMzMxNSw3IEBAIChkZWZpbmVfaW5zbiAiKmJvb2xjY3NpM19pbnRlcm5h bDIiCi0gICAiQAotICAgICVxNC4gJTMsJTEsJTIKLSAgICAjIgotLSAgWyhzZXRfYXR0ciAidHlw ZSIgImNvbXBhcmUiKQotKyAgWyhzZXRfYXR0ciAidHlwZSIgImZhc3RfY29tcGFyZSxjb21wYXJl IikKLSAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsOCIpXSkKLSAKLSAoZGVmaW5lX3NwbGl0Ci1A QCAtMzMyNCw3ICszMzQ0LDcgQEAgKGRlZmluZV9pbnNuICIqYm9vbGNjc2kzX2ludGVybmFsMyIK LSAgICJACi0gICAgJXE0LiAlMCwlMSwlMgotICAgICMiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAi Y29tcGFyZSIpCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiZmFzdF9jb21wYXJlLGNvbXBhcmUiKQot ICAgIChzZXRfYXR0ciAibGVuZ3RoIiAiNCw4IildKQotIAotIChkZWZpbmVfc3BsaXQKLUBAIC01 MzE3LDcgKzUzMzcsNyBAQCAoZGVmaW5lX2luc24gImZyZXMiCi0gICAiZnJlcyAlMCwlMSIKLSAg IFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkKLSAKLS0oZGVmaW5lX2luc24gIiIKLSsoZGVmaW5l X2luc24gIipmbWFkZHNmNF9wb3dlcnBjIgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0YgMCAi Z3BjX3JlZ19vcGVyYW5kIiAiPWYiKQotIAkocGx1czpTRiAobXVsdDpTRiAobWF0Y2hfb3BlcmFu ZDpTRiAxICJncGNfcmVnX29wZXJhbmQiICIlZiIpCi0gCQkJICAobWF0Y2hfb3BlcmFuZDpTRiAy ICJncGNfcmVnX29wZXJhbmQiICJmIikpCi1AQCAtNTMyOCw3ICs1MzQ4LDcgQEAgKGRlZmluZV9p bnNuICIiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKQotICAgIChzZXRfYXR0ciAiZnBfdHlw ZSIgImZwX21hZGRzdWJfcyIpXSkKLSAKLS0oZGVmaW5lX2luc24gIiIKLSsoZGVmaW5lX2luc24g IipmbWFkZHNmNF9wb3dlciIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNGIDAgImdwY19yZWdf b3BlcmFuZCIgIj1mIikKLSAJKHBsdXM6U0YgKG11bHQ6U0YgKG1hdGNoX29wZXJhbmQ6U0YgMSAi Z3BjX3JlZ19vcGVyYW5kIiAiJWYiKQotIAkJCSAgKG1hdGNoX29wZXJhbmQ6U0YgMiAiZ3BjX3Jl Z19vcGVyYW5kIiAiZiIpKQotQEAgLTUzMzcsNyArNTM1Nyw3IEBAIChkZWZpbmVfaW5zbiAiIgot ICAgIntmbWF8Zm1hZGR9ICUwLCUxLCUyLCUzIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImRtdWwi KV0pCi0gCi0tKGRlZmluZV9pbnNuICIiCi0rKGRlZmluZV9pbnNuICIqZm1zdWJzZjRfcG93ZXJw YyIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikK LSAJKG1pbnVzOlNGIChtdWx0OlNGIChtYXRjaF9vcGVyYW5kOlNGIDEgImdwY19yZWdfb3BlcmFu ZCIgIiVmIikKLSAJCQkgICAobWF0Y2hfb3BlcmFuZDpTRiAyICJncGNfcmVnX29wZXJhbmQiICJm IikpCi1AQCAtNTM0OCw3ICs1MzY4LDcgQEAgKGRlZmluZV9pbnNuICIiCi0gICBbKHNldF9hdHRy ICJ0eXBlIiAiZnAiKQotICAgIChzZXRfYXR0ciAiZnBfdHlwZSIgImZwX21hZGRzdWJfcyIpXSkK LSAKLS0oZGVmaW5lX2luc24gIiIKLSsoZGVmaW5lX2luc24gIipmbXN1YnNmNF9wb3dlciIKLSAg IFsoc2V0IChtYXRjaF9vcGVyYW5kOlNGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikKLSAJKG1p bnVzOlNGIChtdWx0OlNGIChtYXRjaF9vcGVyYW5kOlNGIDEgImdwY19yZWdfb3BlcmFuZCIgIiVm IikKLSAJCQkgICAobWF0Y2hfb3BlcmFuZDpTRiAyICJncGNfcmVnX29wZXJhbmQiICJmIikpCi1A QCAtNTM1Nyw3ICs1Mzc3LDcgQEAgKGRlZmluZV9pbnNuICIiCi0gICAie2Ztc3xmbXN1Yn0gJTAs JTEsJTIsJTMiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiZG11bCIpXSkKLSAKLS0oZGVmaW5lX2lu c24gIiIKLSsoZGVmaW5lX2luc24gIipmbm1hZGRzZjRfcG93ZXJwY18xIgotICAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6U0YgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQotIAkobmVnOlNGIChwbHVz OlNGIChtdWx0OlNGIChtYXRjaF9vcGVyYW5kOlNGIDEgImdwY19yZWdfb3BlcmFuZCIgIiVmIikK LSAJCQkJICAobWF0Y2hfb3BlcmFuZDpTRiAyICJncGNfcmVnX29wZXJhbmQiICJmIikpCi1AQCAt NTM2OCw3ICs1Mzg4LDcgQEAgKGRlZmluZV9pbnNuICIiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAi ZnAiKQotICAgIChzZXRfYXR0ciAiZnBfdHlwZSIgImZwX21hZGRzdWJfcyIpXSkKLSAKLS0oZGVm aW5lX2luc24gIiIKLSsoZGVmaW5lX2luc24gIipmbm1hZGRzZjRfcG93ZXJwY18yIgotICAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6U0YgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQotIAkobWludXM6 U0YgKG11bHQ6U0YgKG5lZzpTRiAobWF0Y2hfb3BlcmFuZDpTRiAxICJncGNfcmVnX29wZXJhbmQi ICJmIikpCi0gCQkJICAgKG1hdGNoX29wZXJhbmQ6U0YgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIp KQotQEAgLTUzNzksNyArNTM5OSw3IEBAIChkZWZpbmVfaW5zbiAiIgotICAgWyhzZXRfYXR0ciAi dHlwZSIgImZwIikKLSAgICAoc2V0X2F0dHIgImZwX3R5cGUiICJmcF9tYWRkc3ViX3MiKV0pCi0g Ci0tKGRlZmluZV9pbnNuICIiCi0rKGRlZmluZV9pbnNuICIqZm5tYWRkc2Y0X3Bvd2VyXzEiCi0g ICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTRiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCi0gCShu ZWc6U0YgKHBsdXM6U0YgKG11bHQ6U0YgKG1hdGNoX29wZXJhbmQ6U0YgMSAiZ3BjX3JlZ19vcGVy YW5kIiAiJWYiKQotIAkJCQkgIChtYXRjaF9vcGVyYW5kOlNGIDIgImdwY19yZWdfb3BlcmFuZCIg ImYiKSkKLUBAIC01Mzg4LDcgKzU0MDgsNyBAQCAoZGVmaW5lX2luc24gIiIKLSAgICJ7Zm5tYXxm bm1hZGR9ICUwLCUxLCUyLCUzIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImRtdWwiKV0pCi0gCi0t KGRlZmluZV9pbnNuICIiCi0rKGRlZmluZV9pbnNuICIqZm5tYWRkc2Y0X3Bvd2VyXzIiCi0gICBb KHNldCAobWF0Y2hfb3BlcmFuZDpTRiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCi0gCShtaW51 czpTRiAobXVsdDpTRiAobmVnOlNGIChtYXRjaF9vcGVyYW5kOlNGIDEgImdwY19yZWdfb3BlcmFu ZCIgImYiKSkKLSAJCQkgICAobWF0Y2hfb3BlcmFuZDpTRiAyICJncGNfcmVnX29wZXJhbmQiICJm IikpCi1AQCAtNTM5OCw3ICs1NDE4LDcgQEAgKGRlZmluZV9pbnNuICIiCi0gICAie2ZubWF8Zm5t YWRkfSAlMCwlMSwlMiwlMyIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJkbXVsIildKQotIAotLShk ZWZpbmVfaW5zbiAiIgotKyhkZWZpbmVfaW5zbiAiKmZubXN1YnNmNF9wb3dlcnBjXzEiCi0gICBb KHNldCAobWF0Y2hfb3BlcmFuZDpTRiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCi0gCShuZWc6 U0YgKG1pbnVzOlNGIChtdWx0OlNGIChtYXRjaF9vcGVyYW5kOlNGIDEgImdwY19yZWdfb3BlcmFu ZCIgIiVmIikKLSAJCQkJICAgKG1hdGNoX29wZXJhbmQ6U0YgMiAiZ3BjX3JlZ19vcGVyYW5kIiAi ZiIpKQotQEAgLTU0MDksNyArNTQyOSw3IEBAIChkZWZpbmVfaW5zbiAiIgotICAgWyhzZXRfYXR0 ciAidHlwZSIgImZwIikKLSAgICAoc2V0X2F0dHIgImZwX3R5cGUiICJmcF9tYWRkc3ViX3MiKV0p Ci0gCi0tKGRlZmluZV9pbnNuICIiCi0rKGRlZmluZV9pbnNuICIqZm5tc3Vic2Y0X3Bvd2VycGNf MiIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikK LSAJKG1pbnVzOlNGIChtYXRjaF9vcGVyYW5kOlNGIDMgImdwY19yZWdfb3BlcmFuZCIgImYiKQot IAkJICAobXVsdDpTRiAobWF0Y2hfb3BlcmFuZDpTRiAxICJncGNfcmVnX29wZXJhbmQiICIlZiIp Ci1AQCAtNTQyMCw3ICs1NDQwLDcgQEAgKGRlZmluZV9pbnNuICIiCi0gICBbKHNldF9hdHRyICJ0 eXBlIiAiZnAiKQotICAgIChzZXRfYXR0ciAiZnBfdHlwZSIgImZwX21hZGRzdWJfcyIpXSkKLSAK LS0oZGVmaW5lX2luc24gIiIKLSsoZGVmaW5lX2luc24gIipmbm1zdWJzZjRfcG93ZXJfMSIKLSAg IFsoc2V0IChtYXRjaF9vcGVyYW5kOlNGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikKLSAJKG5l ZzpTRiAobWludXM6U0YgKG11bHQ6U0YgKG1hdGNoX29wZXJhbmQ6U0YgMSAiZ3BjX3JlZ19vcGVy YW5kIiAiJWYiKQotIAkJCQkgICAobWF0Y2hfb3BlcmFuZDpTRiAyICJncGNfcmVnX29wZXJhbmQi ICJmIikpCi1AQCAtNTQyOSw3ICs1NDQ5LDcgQEAgKGRlZmluZV9pbnNuICIiCi0gICAie2ZubXN8 Zm5tc3VifSAlMCwlMSwlMiwlMyIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJkbXVsIildKQotIAot LShkZWZpbmVfaW5zbiAiIgotKyhkZWZpbmVfaW5zbiAiKmZubXN1YnNmNF9wb3dlcl8yIgotICAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6U0YgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQotIAkobWlu dXM6U0YgKG1hdGNoX29wZXJhbmQ6U0YgMyAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpCi0gCQkgICht dWx0OlNGIChtYXRjaF9vcGVyYW5kOlNGIDEgImdwY19yZWdfb3BlcmFuZCIgIiVmIikKLUBAIC01 NTEwLDkgKzU1MzAsMTggQEAgKGRlZmluZV9leHBhbmQgImNvcHlzaWduZGYzIgotIAkgICAgICAg ICAgICAgICAgICAgICAobWF0Y2hfZHVwIDUpKQotIAkJCSAobWF0Y2hfZHVwIDMpCi0gCQkJICht YXRjaF9kdXAgNCkpKV0KLS0gICJUQVJHRVRfUFBDX0dGWE9QVCAmJiBUQVJHRVRfSEFSRF9GTE9B VCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUCi0tICAgJiYgIUhPTk9SX05B TlMgKERGbW9kZSkgJiYgIUhPTk9SX1NJR05FRF9aRVJPUyAoREZtb2RlKSIKLSsgICJUQVJHRVRf SEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUCi0rICAgJiYg KChUQVJHRVRfUFBDX0dGWE9QVAotKyAgICAgICAgJiYgIUhPTk9SX05BTlMgKERGbW9kZSkKLSsg ICAgICAgICYmICFIT05PUl9TSUdORURfWkVST1MgKERGbW9kZSkpCi0rICAgICAgIHx8IFZFQ1RP Ul9VTklUX1ZTWF9QIChERm1vZGUpKSIKLSAgIHsKLSsgICAgIGlmIChWRUNUT1JfVU5JVF9WU1hf UCAoREZtb2RlKSkKLSsgICAgICAgewotKwkgZW1pdF9pbnNuIChnZW5fdnN4X2NvcHlzaWduZGYz IChvcGVyYW5kc1swXSwgb3BlcmFuZHNbMV0sCi0rCQkJCQkgb3BlcmFuZHNbMl0pKTsKLSsJIERP TkU7Ci0rICAgICAgIH0KLSAgICAgIG9wZXJhbmRzWzNdID0gZ2VuX3JlZ19ydHggKERGbW9kZSk7 Ci0gICAgICBvcGVyYW5kc1s0XSA9IGdlbl9yZWdfcnR4IChERm1vZGUpOwotICAgICAgb3BlcmFu ZHNbNV0gPSBDT05TVDBfUlRYIChERm1vZGUpOwotQEAgLTU1NTYsMTIgKzU1ODUsMTIgQEAgKGRl ZmluZV9zcGxpdAotICAgRE9ORTsKLSB9IikKLSAKLS0oZGVmaW5lX2V4cGFuZCAibW92c2ljYyIK LS0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICIiKQotLQkg KGlmX3RoZW5fZWxzZTpTSSAobWF0Y2hfb3BlcmFuZCAxICJjb21wYXJpc29uX29wZXJhdG9yIiAi IikKLS0JCQkgIChtYXRjaF9vcGVyYW5kOlNJIDIgImdwY19yZWdfb3BlcmFuZCIgIiIpCi0tCQkJ ICAobWF0Y2hfb3BlcmFuZDpTSSAzICJncGNfcmVnX29wZXJhbmQiICIiKSkpXQotLSAgIlRBUkdF VF9JU0VMIgotKyhkZWZpbmVfZXhwYW5kICJtb3Y8bW9kZT5jYyIKLSsgICBbKHNldCAobWF0Y2hf b3BlcmFuZDpHUFIgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiIikKLSsJIChpZl90aGVuX2Vsc2U6R1BS IChtYXRjaF9vcGVyYW5kIDEgImNvbXBhcmlzb25fb3BlcmF0b3IiICIiKQotKwkJCSAgIChtYXRj aF9vcGVyYW5kOkdQUiAyICJncGNfcmVnX29wZXJhbmQiICIiKQotKwkJCSAgIChtYXRjaF9vcGVy YW5kOkdQUiAzICJncGNfcmVnX29wZXJhbmQiICIiKSkpXQotKyAgIlRBUkdFVF9JU0VMPHNlbD4i Ci0gICAiCi0gewotICAgaWYgKHJzNjAwMF9lbWl0X2Ntb3ZlIChvcGVyYW5kc1swXSwgb3BlcmFu ZHNbMV0sIG9wZXJhbmRzWzJdLCBvcGVyYW5kc1szXSkpCi1AQCAtNTU3OCwyOCArNTYwNywyOCBA QCAoZGVmaW5lX2V4cGFuZCAibW92c2ljYyIKLSA7OyBsZWF2ZSBvdXQgdGhlIG1vZGUgaW4gb3Bl cmFuZCA0IGFuZCB1c2Ugb25lIHBhdHRlcm4sIGJ1dCByZWxvYWQgY2FuCi0gOzsgY2hhbmdlIHRo ZSBtb2RlIHVuZGVybmVhdGggb3VyIGZlZXQgYW5kIHRoZW4gZ2V0cyBjb25mdXNlZCB0cnlpbmcK LSA7OyB0byByZWxvYWQgdGhlIHZhbHVlLgotLShkZWZpbmVfaW5zbiAiaXNlbF9zaWduZWQiCi0t ICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0tCShp Zl90aGVuX2Vsc2U6U0kKLSsoZGVmaW5lX2luc24gImlzZWxfc2lnbmVkXzxtb2RlPiIKLSsgIFso c2V0IChtYXRjaF9vcGVyYW5kOkdQUiAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0rCShpZl90 aGVuX2Vsc2U6R1BSCi0gCSAobWF0Y2hfb3BlcmF0b3IgMSAiY29tcGFyaXNvbl9vcGVyYXRvciIK LSAJCQkgWyhtYXRjaF9vcGVyYW5kOkNDIDQgImNjX3JlZ19vcGVyYW5kIiAieSIpCi0gCQkJICAo Y29uc3RfaW50IDApXSkKLS0JIChtYXRjaF9vcGVyYW5kOlNJIDIgImdwY19yZWdfb3BlcmFuZCIg ImIiKQotLQkgKG1hdGNoX29wZXJhbmQ6U0kgMyAiZ3BjX3JlZ19vcGVyYW5kIiAiYiIpKSldCi0t ICAiVEFSR0VUX0lTRUwiCi0rCSAobWF0Y2hfb3BlcmFuZDpHUFIgMiAiZ3BjX3JlZ19vcGVyYW5k IiAiYiIpCi0rCSAobWF0Y2hfb3BlcmFuZDpHUFIgMyAiZ3BjX3JlZ19vcGVyYW5kIiAiYiIpKSld Ci0rICAiVEFSR0VUX0lTRUw8c2VsPiIKLSAgICIqCi0geyByZXR1cm4gb3V0cHV0X2lzZWwgKG9w ZXJhbmRzKTsgfSIKLSAgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjQiKV0pCi0gCi0tKGRlZmluZV9p bnNuICJpc2VsX3Vuc2lnbmVkIgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAiZ3BjX3Jl Z19vcGVyYW5kIiAiPXIiKQotLQkoaWZfdGhlbl9lbHNlOlNJCi0rKGRlZmluZV9pbnNuICJpc2Vs X3Vuc2lnbmVkXzxtb2RlPiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkdQUiAwICJncGNfcmVn X29wZXJhbmQiICI9ciIpCi0rCShpZl90aGVuX2Vsc2U6R1BSCi0gCSAobWF0Y2hfb3BlcmF0b3Ig MSAiY29tcGFyaXNvbl9vcGVyYXRvciIKLSAJCQkgWyhtYXRjaF9vcGVyYW5kOkNDVU5TIDQgImNj X3JlZ19vcGVyYW5kIiAieSIpCi0gCQkJICAoY29uc3RfaW50IDApXSkKLS0JIChtYXRjaF9vcGVy YW5kOlNJIDIgImdwY19yZWdfb3BlcmFuZCIgImIiKQotLQkgKG1hdGNoX29wZXJhbmQ6U0kgMyAi Z3BjX3JlZ19vcGVyYW5kIiAiYiIpKSldCi0tICAiVEFSR0VUX0lTRUwiCi0rCSAobWF0Y2hfb3Bl cmFuZDpHUFIgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiYiIpCi0rCSAobWF0Y2hfb3BlcmFuZDpHUFIg MyAiZ3BjX3JlZ19vcGVyYW5kIiAiYiIpKSldCi0rICAiVEFSR0VUX0lTRUw8c2VsPiIKLSAgICIq Ci0geyByZXR1cm4gb3V0cHV0X2lzZWwgKG9wZXJhbmRzKTsgfSIKLSAgIFsoc2V0X2F0dHIgImxl bmd0aCIgIjQiKV0pCi1AQCAtNTY0Nyw3ICs1Njc2LDggQEAgKGRlZmluZV9leHBhbmQgIm5lZ2Rm MiIKLSAoZGVmaW5lX2luc24gIipuZWdkZjJfZnByIgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 REYgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQotIAkobmVnOkRGIChtYXRjaF9vcGVyYW5kOkRG IDEgImdwY19yZWdfb3BlcmFuZCIgImYiKSkpXQotLSAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRB UkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQiCi0rICAiVEFSR0VUX0hBUkRfRkxPQVQg JiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVAotKyAgICYmICFWRUNUT1JfVU5J VF9WU1hfUCAoREZtb2RlKSIKLSAgICJmbmVnICUwLCUxIgotICAgWyhzZXRfYXR0ciAidHlwZSIg ImZwIildKQotIAotQEAgLTU2NjAsMTQgKzU2OTAsMTYgQEAgKGRlZmluZV9leHBhbmQgImFic2Rm MiIKLSAoZGVmaW5lX2luc24gIiphYnNkZjJfZnByIgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 REYgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQotIAkoYWJzOkRGIChtYXRjaF9vcGVyYW5kOkRG IDEgImdwY19yZWdfb3BlcmFuZCIgImYiKSkpXQotLSAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRB UkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQiCi0rICAiVEFSR0VUX0hBUkRfRkxPQVQg JiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVAotKyAgICYmICFWRUNUT1JfVU5J VF9WU1hfUCAoREZtb2RlKSIKLSAgICJmYWJzICUwLCUxIgotICAgWyhzZXRfYXR0ciAidHlwZSIg ImZwIildKQotIAotIChkZWZpbmVfaW5zbiAiKm5hYnNkZjJfZnByIgotICAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6REYgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQotIAkobmVnOkRGIChhYnM6REYg KG1hdGNoX29wZXJhbmQ6REYgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKSkpXQotLSAgIlRBUkdF VF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQiCi0rICAi VEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVAot KyAgICYmICFWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSIKLSAgICJmbmFicyAlMCwlMSIKLSAg IFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkKLSAKLUBAIC01NjgyLDcgKzU3MTQsOCBAQCAoZGVm aW5lX2luc24gIiphZGRkZjNfZnByIgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAiZ3Bj X3JlZ19vcGVyYW5kIiAiPWYiKQotIAkocGx1czpERiAobWF0Y2hfb3BlcmFuZDpERiAxICJncGNf cmVnX29wZXJhbmQiICIlZiIpCi0gCQkgKG1hdGNoX29wZXJhbmQ6REYgMiAiZ3BjX3JlZ19vcGVy YW5kIiAiZiIpKSldCi0tICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFS R0VUX0RPVUJMRV9GTE9BVCIKLSsgICJUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAm JiBUQVJHRVRfRE9VQkxFX0ZMT0FUCi0rICAgJiYgIVZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUp IgotICAgIntmYXxmYWRkfSAlMCwlMSwlMiIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpCi0g ICAgKHNldF9hdHRyICJmcF90eXBlIiAiZnBfYWRkc3ViX2QiKV0pCi1AQCAtNTY5OCw3ICs1NzMx LDggQEAgKGRlZmluZV9pbnNuICIqc3ViZGYzX2ZwciIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5k OkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikKLSAJKG1pbnVzOkRGIChtYXRjaF9vcGVyYW5k OkRGIDEgImdwY19yZWdfb3BlcmFuZCIgImYiKQotIAkJICAobWF0Y2hfb3BlcmFuZDpERiAyICJn cGNfcmVnX29wZXJhbmQiICJmIikpKV0KLS0gICJUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRf RlBSUyAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUIgotKyAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRB UkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQKLSsgICAmJiAhVkVDVE9SX1VOSVRfVlNY X1AgKERGbW9kZSkiCi0gICAie2ZzfGZzdWJ9ICUwLCUxLCUyIgotICAgWyhzZXRfYXR0ciAidHlw ZSIgImZwIikKLSAgICAoc2V0X2F0dHIgImZwX3R5cGUiICJmcF9hZGRzdWJfZCIpXSkKLUBAIC01 NzE0LDcgKzU3NDgsOCBAQCAoZGVmaW5lX2luc24gIiptdWxkZjNfZnByIgotICAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6REYgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQotIAkobXVsdDpERiAobWF0 Y2hfb3BlcmFuZDpERiAxICJncGNfcmVnX29wZXJhbmQiICIlZiIpCi0gCQkgKG1hdGNoX29wZXJh bmQ6REYgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKSldCi0tICAiVEFSR0VUX0hBUkRfRkxPQVQg JiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVCIKLSsgICJUQVJHRVRfSEFSRF9G TE9BVCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUCi0rICAgJiYgIVZFQ1RP Ul9VTklUX1ZTWF9QIChERm1vZGUpIgotICAgIntmbXxmbXVsfSAlMCwlMSwlMiIKLSAgIFsoc2V0 X2F0dHIgInR5cGUiICJkbXVsIikKLSAgICAoc2V0X2F0dHIgImZwX3R5cGUiICJmcF9tdWxfZCIp XSkKLUBAIC01NzMyLDcgKzU3NjcsOCBAQCAoZGVmaW5lX2luc24gIipkaXZkZjNfZnByIgotICAg WyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQotIAkoZGl2 OkRGIChtYXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgImYiKQotIAkJKG1hdGNo X29wZXJhbmQ6REYgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKSldCi0tICAiVEFSR0VUX0hBUkRf RkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVCAmJiAhVEFSR0VUX1NJ TVBMRV9GUFUiCi0rICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VU X0RPVUJMRV9GTE9BVCAmJiAhVEFSR0VUX1NJTVBMRV9GUFUKLSsgICAmJiAhVkVDVE9SX1VOSVRf VlNYX1AgKERGbW9kZSkiCi0gICAie2ZkfGZkaXZ9ICUwLCUxLCUyIgotICAgWyhzZXRfYXR0ciAi dHlwZSIgImRkaXYiKV0pCi0gCi1AQCAtNTc0OCw3MyArNTc4NCw4MSBAQCAoZGVmaW5lX2V4cGFu ZCAicmVjaXBkZjMiCi0gICAgRE9ORTsKLSB9KQotIAotLShkZWZpbmVfaW5zbiAiZnJlZCIKLSso ZGVmaW5lX2V4cGFuZCAiZnJlZCIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19y ZWdfb3BlcmFuZCIgIj1mIikKLSsJKHVuc3BlYzpERiBbKG1hdGNoX29wZXJhbmQ6REYgMSAiZ3Bj X3JlZ19vcGVyYW5kIiAiZiIpXSBVTlNQRUNfRlJFUykpXQotKyAgIihUQVJHRVRfUE9QQ05UQiB8 fCBWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSkgJiYgZmxhZ19maW5pdGVfbWF0aF9vbmx5Igot KyAgIiIpCi0rCi0rKGRlZmluZV9pbnNuICIqZnJlZF9mcHIiCi0gICBbKHNldCAobWF0Y2hfb3Bl cmFuZDpERiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCi0gCSh1bnNwZWM6REYgWyhtYXRjaF9v cGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgImYiKV0gVU5TUEVDX0ZSRVMpKV0KLS0gICJU QVJHRVRfUE9QQ05UQiAmJiBmbGFnX2Zpbml0ZV9tYXRoX29ubHkiCi0rICAiVEFSR0VUX1BPUENO VEIgJiYgZmxhZ19maW5pdGVfbWF0aF9vbmx5ICYmICFWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2Rl KSIKLSAgICJmcmUgJTAsJTEiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKV0pCi0gCi0tKGRl ZmluZV9pbnNuICIiCi0rKGRlZmluZV9pbnNuICIqZm1hZGRkZjRfZnByIgotICAgWyhzZXQgKG1h dGNoX29wZXJhbmQ6REYgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQotIAkocGx1czpERiAobXVs dDpERiAobWF0Y2hfb3BlcmFuZDpERiAxICJncGNfcmVnX29wZXJhbmQiICIlZiIpCi0gCQkJICAo bWF0Y2hfb3BlcmFuZDpERiAyICJncGNfcmVnX29wZXJhbmQiICJmIikpCi0gCQkgKG1hdGNoX29w ZXJhbmQ6REYgMyAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKSldCi0tICAiVEFSR0VUX0hBUkRfRkxP QVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0ZVU0VEX01BREQgJiYgVEFSR0VUX0RPVUJMRV9G TE9BVCIKLSsgICJUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJHRVRfRlVT RURfTUFERCAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FUCi0rICAgJiYgVkVDVE9SX1VOSVRfTk9ORV9Q IChERm1vZGUpIgotICAgIntmbWF8Zm1hZGR9ICUwLCUxLCUyLCUzIgotICAgWyhzZXRfYXR0ciAi dHlwZSIgImRtdWwiKQotICAgIChzZXRfYXR0ciAiZnBfdHlwZSIgImZwX21hZGRzdWJfZCIpXSkK LSAKLS0oZGVmaW5lX2luc24gIiIKLSsoZGVmaW5lX2luc24gIipmbXN1YmRmNF9mcHIiCi0gICBb KHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCi0gCShtaW51 czpERiAobXVsdDpERiAobWF0Y2hfb3BlcmFuZDpERiAxICJncGNfcmVnX29wZXJhbmQiICIlZiIp Ci0gCQkJICAgKG1hdGNoX29wZXJhbmQ6REYgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKQotIAkJ ICAobWF0Y2hfb3BlcmFuZDpERiAzICJncGNfcmVnX29wZXJhbmQiICJmIikpKV0KLS0gICJUQVJH RVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUyAmJiBUQVJHRVRfRlVTRURfTUFERCAmJiBUQVJH RVRfRE9VQkxFX0ZMT0FUIgotKyAgIlRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYm IFRBUkdFVF9GVVNFRF9NQUREICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQKLSsgICAmJiBWRUNUT1Jf VU5JVF9OT05FX1AgKERGbW9kZSkiCi0gICAie2Ztc3xmbXN1Yn0gJTAsJTEsJTIsJTMiCi0gICBb KHNldF9hdHRyICJ0eXBlIiAiZG11bCIpCi0gICAgKHNldF9hdHRyICJmcF90eXBlIiAiZnBfbWFk ZHN1Yl9kIildKQotIAotLShkZWZpbmVfaW5zbiAiIgotKyhkZWZpbmVfaW5zbiAiKmZubWFkZGRm NF9mcHJfMSIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdfb3BlcmFuZCIg Ij1mIikKLSAJKG5lZzpERiAocGx1czpERiAobXVsdDpERiAobWF0Y2hfb3BlcmFuZDpERiAxICJn cGNfcmVnX29wZXJhbmQiICIlZiIpCi0gCQkJCSAgKG1hdGNoX29wZXJhbmQ6REYgMiAiZ3BjX3Jl Z19vcGVyYW5kIiAiZiIpKQotIAkJCSAobWF0Y2hfb3BlcmFuZDpERiAzICJncGNfcmVnX29wZXJh bmQiICJmIikpKSldCi0gICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFS R0VUX0ZVU0VEX01BREQgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVAotLSAgICYmIEhPTk9SX1NJR05F RF9aRVJPUyAoREZtb2RlKSIKLSsgICAmJiBIT05PUl9TSUdORURfWkVST1MgKERGbW9kZSkgJiYg VkVDVE9SX1VOSVRfTk9ORV9QIChERm1vZGUpIgotICAgIntmbm1hfGZubWFkZH0gJTAsJTEsJTIs JTMiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiZG11bCIpCi0gICAgKHNldF9hdHRyICJmcF90eXBl IiAiZnBfbWFkZHN1Yl9kIildKQotIAotLShkZWZpbmVfaW5zbiAiIgotKyhkZWZpbmVfaW5zbiAi KmZubWFkZGRmNF9mcHJfMiIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdf b3BlcmFuZCIgIj1mIikKLSAJKG1pbnVzOkRGIChtdWx0OkRGIChuZWc6REYgKG1hdGNoX29wZXJh bmQ6REYgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKQotIAkJCSAgIChtYXRjaF9vcGVyYW5kOkRG IDIgImdwY19yZWdfb3BlcmFuZCIgImYiKSkKLSAJCSAgKG1hdGNoX29wZXJhbmQ6REYgMyAiZ3Bj X3JlZ19vcGVyYW5kIiAiZiIpKSldCi0gICAiVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQ UlMgJiYgVEFSR0VUX0ZVU0VEX01BREQgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVAotLSAgICYmICEg SE9OT1JfU0lHTkVEX1pFUk9TIChERm1vZGUpIgotKyAgICYmICEgSE9OT1JfU0lHTkVEX1pFUk9T IChERm1vZGUpICYmIFZFQ1RPUl9VTklUX05PTkVfUCAoREZtb2RlKSIKLSAgICJ7Zm5tYXxmbm1h ZGR9ICUwLCUxLCUyLCUzIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImRtdWwiKQotICAgIChzZXRf YXR0ciAiZnBfdHlwZSIgImZwX21hZGRzdWJfZCIpXSkKLSAKLS0oZGVmaW5lX2luc24gIiIKLSso ZGVmaW5lX2luc24gIipmbm1zdWJkZjRfZnByXzEiCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpE RiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCi0gCShuZWc6REYgKG1pbnVzOkRGIChtdWx0OkRG IChtYXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgIiVmIikKLSAJCQkJICAgKG1h dGNoX29wZXJhbmQ6REYgMiAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKQotIAkJCSAgKG1hdGNoX29w ZXJhbmQ6REYgMyAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIpKSkpXQotICAgIlRBUkdFVF9IQVJEX0ZM T0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9GVVNFRF9NQUREICYmIFRBUkdFVF9ET1VCTEVf RkxPQVQKLS0gICAmJiBIT05PUl9TSUdORURfWkVST1MgKERGbW9kZSkiCi0rICAgJiYgSE9OT1Jf U0lHTkVEX1pFUk9TIChERm1vZGUpICYmIFZFQ1RPUl9VTklUX05PTkVfUCAoREZtb2RlKSIKLSAg ICJ7Zm5tc3xmbm1zdWJ9ICUwLCUxLCUyLCUzIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImRtdWwi KQotICAgIChzZXRfYXR0ciAiZnBfdHlwZSIgImZwX21hZGRzdWJfZCIpXSkKLSAKLS0oZGVmaW5l X2luc24gIiIKLSsoZGVmaW5lX2luc24gIipmbm1zdWJkZjRfZnByXzIiCi0gICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpERiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCi0gCShtaW51czpERiAobWF0 Y2hfb3BlcmFuZDpERiAzICJncGNfcmVnX29wZXJhbmQiICJmIikKLSAJICAgICAgICAgIChtdWx0 OkRGIChtYXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgIiVmIikKLSAJCQkgICAo bWF0Y2hfb3BlcmFuZDpERiAyICJncGNfcmVnX29wZXJhbmQiICJmIikpKSldCi0gICAiVEFSR0VU X0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0ZVU0VEX01BREQgJiYgVEFSR0VU X0RPVUJMRV9GTE9BVAotLSAgICYmICEgSE9OT1JfU0lHTkVEX1pFUk9TIChERm1vZGUpIgotKyAg ICYmICEgSE9OT1JfU0lHTkVEX1pFUk9TIChERm1vZGUpICYmIFZFQ1RPUl9VTklUX05PTkVfUCAo REZtb2RlKSIKLSAgICJ7Zm5tc3xmbm1zdWJ9ICUwLCUxLCUyLCUzIgotICAgWyhzZXRfYXR0ciAi dHlwZSIgImRtdWwiKQotICAgIChzZXRfYXR0ciAiZnBfdHlwZSIgImZwX21hZGRzdWJfZCIpXSkK LUBAIC01ODIzLDcgKzU4NjcsOCBAQCAoZGVmaW5lX2luc24gInNxcnRkZjIiCi0gICBbKHNldCAo bWF0Y2hfb3BlcmFuZDpERiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCi0gCShzcXJ0OkRGICht YXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgImYiKSkpXQotICAgIihUQVJHRVRf UFBDX0dQT1BUIHx8IFRBUkdFVF9QT1dFUjIpICYmIFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdF VF9GUFJTIAotLSAgICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQiCi0rICAgJiYgVEFSR0VUX0RPVUJM RV9GTE9BVAotKyAgICYmICFWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSIKLSAgICJmc3FydCAl MCwlMSIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJkc3FydCIpXSkKLSAKLUBAIC01OTEyLDYgKzU5 NTcsMTggQEAgKGRlZmluZV9leHBhbmQgImZpeF90cnVuY3Nmc2kyIgotICAiVEFSR0VUX0hBUkRf RkxPQVQgJiYgIVRBUkdFVF9GUFJTICYmIFRBUkdFVF9TSU5HTEVfRkxPQVQiCi0gICIiKQotIAot KyhkZWZpbmVfZXhwYW5kICJmaXh1bnNfdHJ1bmNkZnNpMiIKLSsgIFsoc2V0IChtYXRjaF9vcGVy YW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIiIpCi0rCSh1bnNpZ25lZF9maXg6U0kgKG1hdGNo X29wZXJhbmQ6REYgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiIikpKV0KLSsgICJUQVJHRVRfSEFSRF9G TE9BVCAmJiBUQVJHRVRfRTUwMF9ET1VCTEUiCi0rICAiIikKLSsKLSsoZGVmaW5lX2V4cGFuZCAi Zml4dW5zX3RydW5jZGZkaTIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJyZWdpc3Rl cl9vcGVyYW5kIiAiIikKLSsJKHVuc2lnbmVkX2ZpeDpESSAobWF0Y2hfb3BlcmFuZDpERiAxICJy ZWdpc3Rlcl9vcGVyYW5kIiAiIikpKV0KLSsgICJUQVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRf VlNYIgotKyAgIiIpCi0rCi0gOyBGb3IgZWFjaCBvZiB0aGVzZSBjb252ZXJzaW9ucywgdGhlcmUg aXMgYSBkZWZpbmVfZXhwYW5kLCBhIGRlZmluZV9pbnNuCi0gOyB3aXRoIGEgJyMnIHRlbXBsYXRl LCBhbmQgYSBkZWZpbmVfc3BsaXQgKHdpdGggQyBjb2RlKS4gIFRoZSBpZGVhIGlzCi0gOyB0byBh bGxvdyBjb25zdGFudCBmb2xkaW5nIHdpdGggdGhlIHRlbXBsYXRlIG9mIHRoZSBkZWZpbmVfaW5z biwKLUBAIC02MTUzLDEwICs2MjEwLDE3IEBAIChkZWZpbmVfaW5zbiAiZmN0aXd6IgotICAgIntm Y2lyenxmY3Rpd3p9ICUwLCUxIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImZwIildKQotIAotLShk ZWZpbmVfaW5zbiAiYnRydW5jZGYyIgotKyhkZWZpbmVfZXhwYW5kICJidHJ1bmNkZjIiCi0gICBb KHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCi0gCSh1bnNw ZWM6REYgWyhtYXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgImYiKV0gVU5TUEVD X0ZSSVopKV0KLSAgICJUQVJHRVRfRlBSTkQgJiYgVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VU X0ZQUlMgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVCIKLSsgICIiKQotKwotKyhkZWZpbmVfaW5zbiAi KmJ0cnVuY2RmMl9mcHJzIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAiZ3BjX3JlZ19v cGVyYW5kIiAiPWYiKQotKwkodW5zcGVjOkRGIFsobWF0Y2hfb3BlcmFuZDpERiAxICJncGNfcmVn X29wZXJhbmQiICJmIildIFVOU1BFQ19GUklaKSldCi0rICAiVEFSR0VUX0ZQUk5EICYmIFRBUkdF VF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQKLSsgICAm JiAhVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkiCi0gICAiZnJpeiAlMCwlMSIKLSAgIFsoc2V0 X2F0dHIgInR5cGUiICJmcCIpXSkKLSAKLUBAIC02MTY3LDEwICs2MjMxLDE3IEBAIChkZWZpbmVf aW5zbiAiYnRydW5jc2YyIgotICAgImZyaXogJTAsJTEiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAi ZnAiKV0pCi0gCi0tKGRlZmluZV9pbnNuICJjZWlsZGYyIgotKyhkZWZpbmVfZXhwYW5kICJjZWls ZGYyIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiIikK LSsJKHVuc3BlYzpERiBbKG1hdGNoX29wZXJhbmQ6REYgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiIild IFVOU1BFQ19GUklQKSldCi0rICAiVEFSR0VUX0ZQUk5EICYmIFRBUkdFVF9IQVJEX0ZMT0FUICYm IFRBUkdFVF9GUFJTICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQiCi0rICAiIikKLSsKLSsoZGVmaW5l X2luc24gIipjZWlsZGYyX2ZwcnMiCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJncGNf cmVnX29wZXJhbmQiICI9ZiIpCi0gCSh1bnNwZWM6REYgWyhtYXRjaF9vcGVyYW5kOkRGIDEgImdw Y19yZWdfb3BlcmFuZCIgImYiKV0gVU5TUEVDX0ZSSVApKV0KLS0gICJUQVJHRVRfRlBSTkQgJiYg VEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVCIK LSsgICJUQVJHRVRfRlBSTkQgJiYgVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYg VEFSR0VUX0RPVUJMRV9GTE9BVAotKyAgICYmICFWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSIK LSAgICJmcmlwICUwLCUxIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImZwIildKQotIAotQEAgLTYx ODEsMTAgKzYyNTIsMTcgQEAgKGRlZmluZV9pbnNuICJjZWlsc2YyIgotICAgImZyaXAgJTAsJTEi Ci0gICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKV0pCi0gCi0tKGRlZmluZV9pbnNuICJmbG9vcmRm MiIKLSsoZGVmaW5lX2V4cGFuZCAiZmxvb3JkZjIiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpE RiAwICJncGNfcmVnX29wZXJhbmQiICIiKQotKwkodW5zcGVjOkRGIFsobWF0Y2hfb3BlcmFuZDpE RiAxICJncGNfcmVnX29wZXJhbmQiICIiKV0gVU5TUEVDX0ZSSU0pKV0KLSsgICJUQVJHRVRfRlBS TkQgJiYgVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0RPVUJMRV9G TE9BVCIKLSsgICIiKQotKwotKyhkZWZpbmVfaW5zbiAiKmZsb29yZGYyX2ZwcnMiCi0gICBbKHNl dCAobWF0Y2hfb3BlcmFuZDpERiAwICJncGNfcmVnX29wZXJhbmQiICI9ZiIpCi0gCSh1bnNwZWM6 REYgWyhtYXRjaF9vcGVyYW5kOkRGIDEgImdwY19yZWdfb3BlcmFuZCIgImYiKV0gVU5TUEVDX0ZS SU0pKV0KLS0gICJUQVJHRVRfRlBSTkQgJiYgVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQ UlMgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVCIKLSsgICJUQVJHRVRfRlBSTkQgJiYgVEFSR0VUX0hB UkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVAotKyAgICYmICFW RUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSIKLSAgICJmcmltICUwLCUxIgotICAgWyhzZXRfYXR0 ciAidHlwZSIgImZwIildKQotIAotQEAgLTYxOTUsNiArNjI3Myw3IEBAIChkZWZpbmVfaW5zbiAi Zmxvb3JzZjIiCi0gICAiZnJpbSAlMCwlMSIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJmcCIpXSkK LSAKLSs7OyBObyBWU1ggZXF1aXZhbGVudCB0byBmcmluCi0gKGRlZmluZV9pbnNuICJyb3VuZGRm MiIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgImdwY19yZWdfb3BlcmFuZCIgIj1mIikK LSAJKHVuc3BlYzpERiBbKG1hdGNoX29wZXJhbmQ6REYgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiZiIp XSBVTlNQRUNfRlJJTikpXQotQEAgLTYyMDksNiArNjI4OCwxMiBAQCAoZGVmaW5lX2luc24gInJv dW5kc2YyIgotICAgImZyaW4gJTAsJTEiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiZnAiKV0pCi0g Ci0rKGRlZmluZV9leHBhbmQgImZ0cnVuY2RmMiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRG IDAgImdwY19yZWdfb3BlcmFuZCIgIiIpCi0rICAJKGZpeDpERiAobWF0Y2hfb3BlcmFuZDpERiAx ICJncGNfcmVnX29wZXJhbmQiICIiKSkpXQotKyAgIlZFQ1RPUl9VTklUX1ZTWF9QIChERm1vZGUp IgotKyAgIiIpCi0rCi0gOyBBbiBVTlNQRUMgaXMgdXNlZCBzbyB3ZSBkb24ndCBoYXZlIHRvIHN1 cHBvcnQgU0ltb2RlIGluIEZQIHJlZ2lzdGVycy4KLSAoZGVmaW5lX2luc24gInN0Zml3eCIKLSAg IFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgIm1lbW9yeV9vcGVyYW5kIiAiPVoiKQotQEAgLTYy MjQsMTcgKzYzMDksNDAgQEAgKGRlZmluZV9leHBhbmQgImZsb2F0c2lzZjIiCi0gICAiVEFSR0VU X0hBUkRfRkxPQVQgJiYgIVRBUkdFVF9GUFJTIgotICAgIiIpCi0gCi0tKGRlZmluZV9pbnNuICJm bG9hdGRpZGYyIgotKyhkZWZpbmVfZXhwYW5kICJmbG9hdGRpZGYyIgotKyAgWyhzZXQgKG1hdGNo X29wZXJhbmQ6REYgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiIikKLSsJKGZsb2F0OkRGIChtYXRjaF9v cGVyYW5kOkRJIDEgImdwY19yZWdfb3BlcmFuZCIgIiIpKSldCi0rICAiKFRBUkdFVF9QT1dFUlBD NjQgfHwgVEFSR0VUX1hJTElOWF9GUFUgfHwgVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9kZSkpCi0r ICAgJiYgVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVCAmJiBUQVJHRVRf RlBSUyIKLSsgICIiKQotKwotKyhkZWZpbmVfaW5zbiAiKmZsb2F0ZGlkZjJfZnByIgotICAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPWYiKQotIAkoZmxvYXQ6 REYgKG1hdGNoX29wZXJhbmQ6REkgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiIWYjciIpKSldCi0tICAi KFRBUkdFVF9QT1dFUlBDNjQgfHwgVEFSR0VUX1hJTElOWF9GUFUpICYmIFRBUkdFVF9IQVJEX0ZM T0FUICYmIFRBUkdFVF9ET1VCTEVfRkxPQVQgJiYgVEFSR0VUX0ZQUlMiCi0rICAiKFRBUkdFVF9Q T1dFUlBDNjQgfHwgVEFSR0VUX1hJTElOWF9GUFUpCi0rICAgJiYgVEFSR0VUX0hBUkRfRkxPQVQg JiYgVEFSR0VUX0RPVUJMRV9GTE9BVCAmJiBUQVJHRVRfRlBSUwotKyAgICYmICFWRUNUT1JfVU5J VF9WU1hfUCAoREZtb2RlKSIKLSAgICJmY2ZpZCAlMCwlMSIKLSAgIFsoc2V0X2F0dHIgInR5cGUi ICJmcCIpXSkKLSAKLS0oZGVmaW5lX2luc24gImZpeF90cnVuY2RmZGkyIgotKyhkZWZpbmVfZXhw YW5kICJmbG9hdHVuc2RpZGYyIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAiZ3BjX3Jl Z19vcGVyYW5kIiAiIikKLSsJKHVuc2lnbmVkX2Zsb2F0OkRGIChtYXRjaF9vcGVyYW5kOkRJIDEg ImdwY19yZWdfb3BlcmFuZCIgIiIpKSldCi0rICAiVEFSR0VUX1ZTWCIKLSsgICIiKQotKwotKyhk ZWZpbmVfZXhwYW5kICJmaXhfdHJ1bmNkZmRpMiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRJ IDAgImdwY19yZWdfb3BlcmFuZCIgIiIpCi0rCShmaXg6REkgKG1hdGNoX29wZXJhbmQ6REYgMSAi Z3BjX3JlZ19vcGVyYW5kIiAiIikpKV0KLSsgICIoVEFSR0VUX1BPV0VSUEM2NCB8fCBUQVJHRVRf WElMSU5YX0ZQVSB8fCBWRUNUT1JfVU5JVF9WU1hfUCAoREZtb2RlKSkKLSsgICAgJiYgVEFSR0VU X0hBUkRfRkxPQVQgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVCAmJiBUQVJHRVRfRlBSUyIKLSsgICIi KQotKwotKyhkZWZpbmVfaW5zbiAiKmZpeF90cnVuY2RmZGkyX2ZwciIKLSAgIFsoc2V0IChtYXRj aF9vcGVyYW5kOkRJIDAgImdwY19yZWdfb3BlcmFuZCIgIj0hZiNyIikKLSAJKGZpeDpESSAobWF0 Y2hfb3BlcmFuZDpERiAxICJncGNfcmVnX29wZXJhbmQiICJmIikpKV0KLS0gICIoVEFSR0VUX1BP V0VSUEM2NCB8fCBUQVJHRVRfWElMSU5YX0ZQVSkgJiYgVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFS R0VUX0RPVUJMRV9GTE9BVCAmJiBUQVJHRVRfRlBSUyIKLSsgICIoVEFSR0VUX1BPV0VSUEM2NCB8 fCBUQVJHRVRfWElMSU5YX0ZQVSkgJiYgVEFSR0VUX0hBUkRfRkxPQVQKLSsgICAgJiYgVEFSR0VU X0RPVUJMRV9GTE9BVCAmJiBUQVJHRVRfRlBSUyAmJiAhVkVDVE9SX1VOSVRfVlNYX1AgKERGbW9k ZSkiCi0gICAiZmN0aWR6ICUwLCUxIgotICAgWyhzZXRfYXR0ciAidHlwZSIgImZwIildKQotIAot QEAgLTc2MjMsNyArNzczMSw3IEBAIChkZWZpbmVfaW5zbiAiYW5kZGkzX21jIgotICAgIGFuZGku ICUwLCUxLCViMgotICAgIGFuZGlzLiAlMCwlMSwldTIKLSAgICAjIgotLSAgWyhzZXRfYXR0ciAi dHlwZSIgIiosKiwqLGNvbXBhcmUsY29tcGFyZSwqIikKLSsgIFsoc2V0X2F0dHIgInR5cGUiICIq LCosKixmYXN0X2NvbXBhcmUsZmFzdF9jb21wYXJlLCoiKQotICAgIChzZXRfYXR0ciAibGVuZ3Ro IiAiNCw0LDQsNCw0LDgiKV0pCi0gCi0gKGRlZmluZV9pbnNuICJhbmRkaTNfbm9tYyIKLUBAIC03 NjgxLDcgKzc3ODksOSBAQCAoZGVmaW5lX2luc24gIiphbmRkaTNfaW50ZXJuYWwyX21jIgotICAg ICMKLSAgICAjCi0gICAgIyIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJjb21wYXJlLGNvbXBhcmUs ZGVsYXllZF9jb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxj b21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlIikKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJm YXN0X2NvbXBhcmUsY29tcGFyZSxkZWxheWVkX2NvbXBhcmUsZmFzdF9jb21wYXJlLFwKLSsJCSAg ICAgZmFzdF9jb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxc Ci0rCQkgICAgIGNvbXBhcmUsY29tcGFyZSIpCi0gICAgKHNldF9hdHRyICJsZW5ndGgiICI0LDQs NCw0LDQsOCw4LDgsOCw4LDgsMTIiKV0pCi0gCi0gKGRlZmluZV9pbnNuICIqYW5kZGkzX2ludGVy bmFsMl9ub21jIgotQEAgLTc3NDQsNyArNzg1NCw5IEBAIChkZWZpbmVfaW5zbiAiKmFuZGRpM19p bnRlcm5hbDNfbWMiCi0gICAgIwotICAgICMKLSAgICAjIgotLSAgWyhzZXRfYXR0ciAidHlwZSIg ImNvbXBhcmUsY29tcGFyZSxkZWxheWVkX2NvbXBhcmUsY29tcGFyZSxjb21wYXJlLGNvbXBhcmUs Y29tcGFyZSxjb21wYXJlLGNvbXBhcmUsY29tcGFyZSxjb21wYXJlLGNvbXBhcmUiKQotKyAgWyhz ZXRfYXR0ciAidHlwZSIgImZhc3RfY29tcGFyZSxjb21wYXJlLGRlbGF5ZWRfY29tcGFyZSxmYXN0 X2NvbXBhcmUsXAotKwkJICAgICBmYXN0X2NvbXBhcmUsY29tcGFyZSxjb21wYXJlLGNvbXBhcmUs Y29tcGFyZSxjb21wYXJlLFwKLSsJCSAgICAgY29tcGFyZSxjb21wYXJlIikKLSAgICAoc2V0X2F0 dHIgImxlbmd0aCIgIjQsNCw0LDQsNCw4LDgsOCw4LDgsOCwxMiIpXSkKLSAKLSAoZGVmaW5lX2lu c24gIiphbmRkaTNfaW50ZXJuYWwzX25vbWMiCi1AQCAtNzg5Niw3ICs4MDA4LDcgQEAgKGRlZmlu ZV9pbnNuICIqYm9vbGRpM19pbnRlcm5hbDIiCi0gICAiQAotICAgICVxNC4gJTMsJTEsJTIKLSAg ICAjIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImNvbXBhcmUiKQotKyAgWyhzZXRfYXR0ciAidHlw ZSIgImZhc3RfY29tcGFyZSxjb21wYXJlIikKLSAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsOCIp XSkKLSAKLSAoZGVmaW5lX3NwbGl0Ci1AQCAtNzkyNSw3ICs4MDM3LDcgQEAgKGRlZmluZV9pbnNu ICIqYm9vbGRpM19pbnRlcm5hbDMiCi0gICAiQAotICAgICVxNC4gJTAsJTEsJTIKLSAgICAjIgot LSAgWyhzZXRfYXR0ciAidHlwZSIgImNvbXBhcmUiKQotKyAgWyhzZXRfYXR0ciAidHlwZSIgImZh c3RfY29tcGFyZSxjb21wYXJlIikKLSAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsOCIpXSkKLSAK LSAoZGVmaW5lX3NwbGl0Ci1AQCAtNzk5Niw3ICs4MTA4LDcgQEAgKGRlZmluZV9pbnNuICIqYm9v bGNkaTNfaW50ZXJuYWwyIgotICAgIkAKLSAgICAlcTQuICUzLCUyLCUxCi0gICAgIyIKLS0gIFso c2V0X2F0dHIgInR5cGUiICJjb21wYXJlIikKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2Nv bXBhcmUsY29tcGFyZSIpCi0gICAgKHNldF9hdHRyICJsZW5ndGgiICI0LDgiKV0pCi0gCi0gKGRl ZmluZV9zcGxpdAotQEAgLTgwMjUsNyArODEzNyw3IEBAIChkZWZpbmVfaW5zbiAiKmJvb2xjZGkz X2ludGVybmFsMyIKLSAgICJACi0gICAgJXE0LiAlMCwlMiwlMQotICAgICMiCi0tICBbKHNldF9h dHRyICJ0eXBlIiAiY29tcGFyZSIpCi0rICBbKHNldF9hdHRyICJ0eXBlIiAiZmFzdF9jb21wYXJl LGNvbXBhcmUiKQotICAgIChzZXRfYXR0ciAibGVuZ3RoIiAiNCw4IildKQotIAotIChkZWZpbmVf c3BsaXQKLUBAIC04MDYyLDcgKzgxNzQsNyBAQCAoZGVmaW5lX2luc24gIipib29sY2NkaTNfaW50 ZXJuYWwyIgotICAgIkAKLSAgICAlcTQuICUzLCUxLCUyCi0gICAgIyIKLS0gIFsoc2V0X2F0dHIg InR5cGUiICJjb21wYXJlIikKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJmYXN0X2NvbXBhcmUsY29t cGFyZSIpCi0gICAgKHNldF9hdHRyICJsZW5ndGgiICI0LDgiKV0pCi0gCi0gKGRlZmluZV9zcGxp dAotQEAgLTgwOTEsNyArODIwMyw3IEBAIChkZWZpbmVfaW5zbiAiKmJvb2xjY2RpM19pbnRlcm5h bDMiCi0gICAiQAotICAgICVxNC4gJTAsJTEsJTIKLSAgICAjIgotLSAgWyhzZXRfYXR0ciAidHlw ZSIgImNvbXBhcmUiKQotKyAgWyhzZXRfYXR0ciAidHlwZSIgImZhc3RfY29tcGFyZSxjb21wYXJl IikKLSAgICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsOCIpXSkKLSAKLSAoZGVmaW5lX3NwbGl0Ci1A QCAtODEwOCw2ICs4MjIwLDUxIEBAIChkZWZpbmVfc3BsaXQKLSAJKGNvbXBhcmU6Q0MgKG1hdGNo X2R1cCAwKQotIAkJICAgIChjb25zdF9pbnQgMCkpKV0KLSAgICIiKQotKwotKyhkZWZpbmVfZXhw YW5kICJzbWluZGkzIgotKyAgWyhtYXRjaF9vcGVyYW5kOkRJIDAgImdwY19yZWdfb3BlcmFuZCIg IiIpCi0rICAgKG1hdGNoX29wZXJhbmQ6REkgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiIikKLSsgICAo bWF0Y2hfb3BlcmFuZDpESSAyICJncGNfcmVnX29wZXJhbmQiICIiKV0KLSsgICJUQVJHRVRfSVNF TDY0IgotKyAgIgotK3sKLSsgIHJzNjAwMF9lbWl0X21pbm1heCAob3BlcmFuZHNbMF0sIFNNSU4s IG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSk7Ci0rICBET05FOwotK30iKQotKwotKyhkZWZpbmVf ZXhwYW5kICJzbWF4ZGkzIgotKyAgWyhtYXRjaF9vcGVyYW5kOkRJIDAgImdwY19yZWdfb3BlcmFu ZCIgIiIpCi0rICAgKG1hdGNoX29wZXJhbmQ6REkgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiIikKLSsg ICAobWF0Y2hfb3BlcmFuZDpESSAyICJncGNfcmVnX29wZXJhbmQiICIiKV0KLSsgICJUQVJHRVRf SVNFTDY0IgotKyAgIgotK3sKLSsgIHJzNjAwMF9lbWl0X21pbm1heCAob3BlcmFuZHNbMF0sIFNN QVgsIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSk7Ci0rICBET05FOwotK30iKQotKwotKyhkZWZp bmVfZXhwYW5kICJ1bWluZGkzIgotKyAgWyhtYXRjaF9vcGVyYW5kOkRJIDAgImdwY19yZWdfb3Bl cmFuZCIgIiIpCi0rICAgKG1hdGNoX29wZXJhbmQ6REkgMSAiZ3BjX3JlZ19vcGVyYW5kIiAiIikK LSsgICAobWF0Y2hfb3BlcmFuZDpESSAyICJncGNfcmVnX29wZXJhbmQiICIiKV0KLSsgICJUQVJH RVRfSVNFTDY0IgotKyAgIgotK3sKLSsgIHJzNjAwMF9lbWl0X21pbm1heCAob3BlcmFuZHNbMF0s IFVNSU4sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSk7Ci0rICBET05FOwotK30iKQotKwotKyhk ZWZpbmVfZXhwYW5kICJ1bWF4ZGkzIgotKyAgWyhtYXRjaF9vcGVyYW5kOkRJIDAgImdwY19yZWdf b3BlcmFuZCIgIiIpCi0rICAgKG1hdGNoX29wZXJhbmQ6REkgMSAiZ3BjX3JlZ19vcGVyYW5kIiAi IikKLSsgICAobWF0Y2hfb3BlcmFuZDpESSAyICJncGNfcmVnX29wZXJhbmQiICIiKV0KLSsgICJU QVJHRVRfSVNFTDY0IgotKyAgIgotK3sKLSsgIHJzNjAwMF9lbWl0X21pbm1heCAob3BlcmFuZHNb MF0sIFVNQVgsIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXSk7Ci0rICBET05FOwotK30iKQotKwot IAwKLSA7OyBOb3cgZGVmaW5lIHdheXMgb2YgbW92aW5nIGRhdGEgYXJvdW5kLgotIAotQEAgLTg1 MTEsOCArODY2OCw4IEBAIChkZWZpbmVfc3BsaXQKLSA7OyBUaGUgIj8/IiBpcyBhIGtsdWRnZSB1 bnRpbCB3ZSBjYW4gZmlndXJlIG91dCBhIG1vcmUgcmVhc29uYWJsZSB3YXkKLSA7OyBvZiBoYW5k bGluZyB0aGVzZSBub24tb2Zmc2V0dGFibGUgdmFsdWVzLgotIChkZWZpbmVfaW5zbiAiKm1vdmRm X2hhcmRmbG9hdDMyIgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REYgMCAibm9uaW1tZWRpYXRl X29wZXJhbmQiICI9IXIsPz9yLG0sZixmLG0sIXIsIXIsIXIiKQotLQkobWF0Y2hfb3BlcmFuZDpE RiAxICJpbnB1dF9vcGVyYW5kIiAicixtLHIsZixtLGYsRyxILEYiKSldCi0rICBbKHNldCAobWF0 Y2hfb3BlcmFuZDpERiAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIj0hciwgPz9yLCBtLCB3cywg P3dhLCB3cywgP3dhLCAgWiwgP1osIGYsIGYsIG0sIHdhLCAhciwgIXIsICFyIikKLSsJKG1hdGNo X29wZXJhbmQ6REYgMSAiaW5wdXRfb3BlcmFuZCIgICAgICAgICAgInIsICAgbSwgciwgd3MsICB3 YSwgIFosICAgWiwgd3MsIHdhLCBmLCBtLCBmLCAgaiwgIEcsICBILCAgRiIpKV0KLSAgICIhIFRB UkdFVF9QT1dFUlBDNjQgJiYgVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMgJiYgVEFS R0VUX0RPVUJMRV9GTE9BVCAKLSAgICAmJiAoZ3BjX3JlZ19vcGVyYW5kIChvcGVyYW5kc1swXSwg REZtb2RlKQotICAgICAgICB8fCBncGNfcmVnX29wZXJhbmQgKG9wZXJhbmRzWzFdLCBERm1vZGUp KSIKLUBAIC04NTkxLDE5ICs4NzQ4LDMwIEBAIChkZWZpbmVfaW5zbiAiKm1vdmRmX2hhcmRmbG9h dDMyIgotIAkgIHJldHVybiBcIlwiOwotIAl9Ci0gICAgIGNhc2UgMzoKLS0gICAgICByZXR1cm4g XCJmbXIgJTAsJTFcIjsKLSAgICAgY2FzZSA0OgotLSAgICAgIHJldHVybiBcImxmZCVVMSVYMSAl MCwlMVwiOwotKyAgICAgIHJldHVybiBcInhzY3BzZ25kcCAleDAsJXgxLCV4MVwiOwotICAgICBj YXNlIDU6Ci0tICAgICAgcmV0dXJuIFwic3RmZCVVMCVYMCAlMSwlMFwiOwotICAgICBjYXNlIDY6 Ci0rICAgICAgcmV0dXJuIFwibHhzZCVVMXggJXgwLCV5MVwiOwotICAgICBjYXNlIDc6Ci0gICAg IGNhc2UgODoKLSsgICAgICByZXR1cm4gXCJzdHhzZCVVMHggJXgxLCV5MFwiOwotKyAgICBjYXNl IDk6Ci0rICAgICAgcmV0dXJuIFwiZm1yICUwLCUxXCI7Ci0rICAgIGNhc2UgMTA6Ci0rICAgICAg cmV0dXJuIFwibGZkJVUxJVgxICUwLCUxXCI7Ci0rICAgIGNhc2UgMTE6Ci0rICAgICAgcmV0dXJu IFwic3RmZCVVMCVYMCAlMSwlMFwiOwotKyAgICBjYXNlIDEyOgotKyAgICAgIHJldHVybiBcInh4 bHhvciAleDAsJXgwLCV4MFwiOwotKyAgICBjYXNlIDEzOgotKyAgICBjYXNlIDE0OgotKyAgICBj YXNlIDE1OgotICAgICAgIHJldHVybiBcIiNcIjsKLSAgICAgfQotIH0iCi0tICBbKHNldF9hdHRy ICJ0eXBlIiAidHdvLGxvYWQsc3RvcmUsZnAsZnBsb2FkLGZwc3RvcmUsKiwqLCoiKQotLSAgIChz ZXRfYXR0ciAibGVuZ3RoIiAiOCwxNiwxNiw0LDQsNCw4LDEyLDE2IildKQotKyAgWyhzZXRfYXR0 ciAidHlwZSIgInR3bywgbG9hZCwgc3RvcmUsIGZwLCBmcCwgZnBsb2FkLCBmcGxvYWQsIGZwc3Rv cmUsIGZwc3RvcmUsIGZwLCBmcGxvYWQsIGZwc3RvcmUsIHZlY3NpbXBsZSwgKiwgICosICAqIikK LSsgICAoc2V0X2F0dHIgImxlbmd0aCIgIjgsICAgMTYsICAgIDE2LCAgNCwgIDQsICAgICAgNCwg ICAgICA0LCAgICAgICA0LCAgICAgICA0LCAgNCwgICAgICA0LCAgICAgICA0LCAgICAgICAgIDQs IDgsIDEyLCAxNiIpXSkKLSAKLSAoZGVmaW5lX2luc24gIiptb3ZkZl9zb2Z0ZmxvYXQzMiIKLSAg IFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIiAiPXIscixt LHIscixyIikKLUBAIC04NjUxLDE5ICs4ODE5LDI2IEBAIChkZWZpbmVfaW5zbiAiKm1vdmRmX3Nv ZnRmbG9hdDMyIgotIDsgbGQvc3RkIHJlcXVpcmUgd29yZC1hbGlnbmVkIGRpc3BsYWNlbWVudHMg LT4gJ1knIGNvbnN0cmFpbnQuCi0gOyBMaXN0IFktPnIgYW5kIHItPlkgYmVmb3JlIHItPnIgZm9y IHJlbG9hZC4KLSAoZGVmaW5lX2luc24gIiptb3ZkZl9oYXJkZmxvYXQ2NF9tZnBncHIiCi0tICBb KHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJub25pbW1lZGlhdGVfb3BlcmFuZCIgIj1ZLHIsIXIs ZixmLG0sKmMqbCwhciwqaCwhciwhciwhcixyLGYiKQotLQkobWF0Y2hfb3BlcmFuZDpERiAxICJp bnB1dF9vcGVyYW5kIiAicixZLHIsZixtLGYscixoLDAsRyxILEYsZixyIikpXQotKyAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6REYgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICI9WSwgciwgIXIsIHdz LCA/d2EsIHdzLCA/d2EsICBaLCA/WiwgZiwgZiwgbSwgd2EsICpjKmwsICFyLCAqaCwgIXIsICFy LCAhciwgciwgZiIpCi0rCShtYXRjaF9vcGVyYW5kOkRGIDEgImlucHV0X29wZXJhbmQiICAgICAg ICAgInIsIFksICByLCB3cywgP3dhLCAgWiwgICBaLCB3cywgd2EsIGYsIG0sIGYsICBqLCAgICBy LCAgaCwgIDAsICBHLCAgSCwgIEYsIGYsIHIiKSldCi0gICAiVEFSR0VUX1BPV0VSUEM2NCAmJiBU QVJHRVRfTUZQR1BSICYmIFRBUkdFVF9IQVJEX0ZMT0FUICYmIFRBUkdFVF9GUFJTIAotLSAgICYm IFRBUkdFVF9ET1VCTEVfRkxPQVQgCi0rICAgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVAotICAgICYm IChncGNfcmVnX29wZXJhbmQgKG9wZXJhbmRzWzBdLCBERm1vZGUpCi0gICAgICAgIHx8IGdwY19y ZWdfb3BlcmFuZCAob3BlcmFuZHNbMV0sIERGbW9kZSkpIgotICAgIkAKLSAgICBzdGQlVTAlWDAg JTEsJTAKLSAgICBsZCVVMSVYMSAlMCwlMQotICAgIG1yICUwLCUxCi0rICAgeHNjcHNnbmRwICV4 MCwleDEsJXgxCi0rICAgeHNjcHNnbmRwICV4MCwleDEsJXgxCi0rICAgbHhzZCVVMXggJXgwLCV5 MQotKyAgIGx4c2QlVTF4ICV4MCwleTEKLSsgICBzdHhzZCVVMHggJXgxLCV5MAotKyAgIHN0eHNk JVUweCAleDEsJXkwCi0gICAgZm1yICUwLCUxCi0gICAgbGZkJVUxJVgxICUwLCUxCi0gICAgc3Rm ZCVVMCVYMCAlMSwlMAotKyAgIHh4bHhvciAleDAsJXgwLCV4MAotICAgIG10JTAgJTEKLSAgICBt ZiUxICUwCi0gICAge2Nyb3IgMCwwLDB8bm9wfQotQEAgLTg2NzIsMzMgKzg4NDcsNDAgQEAgKGRl ZmluZV9pbnNuICIqbW92ZGZfaGFyZGZsb2F0NjRfbWZwZ3ByIgotICAgICMKLSAgICBtZnRncHIg JTAsJTEKLSAgICBtZmZncHIgJTAsJTEiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAic3RvcmUsbG9h ZCwqLGZwLGZwbG9hZCxmcHN0b3JlLG10am1wcixtZmptcHIsKiwqLCosKixtZnRncHIsbWZmZ3By IikKLS0gICAoc2V0X2F0dHIgImxlbmd0aCIgIjQsNCw0LDQsNCw0LDQsNCw0LDgsMTIsMTYsNCw0 IildKQotKyAgWyhzZXRfYXR0ciAidHlwZSIgInN0b3JlLCBsb2FkLCAqLCBmcCwgZnAsIGZwbG9h ZCwgZnBsb2FkLCBmcHN0b3JlLCBmcHN0b3JlLCBmcCwgZnBsb2FkLCBmcHN0b3JlLCB2ZWNzaW1w bGUsIG10am1wciwgbWZqbXByLCAqLCAqLCAgKiwgICosIG1mdGdwciwgbWZmZ3ByIikKLSsgICAo c2V0X2F0dHIgImxlbmd0aCIgICAiNCwgICAgNCwgNCwgIDQsICA0LCAgICAgIDQsICAgICAgNCwg ICAgICAgNCwgICAgICAgNCwgIDQsICAgICAgNCwgICAgICAgNCwgICAgICAgICA0LCAgICAgIDQs ICAgICAgNCwgNCwgOCwgMTIsIDE2LCAgICAgIDQsICAgICAgNCIpXSkKLSAKLSA7IGxkL3N0ZCBy ZXF1aXJlIHdvcmQtYWxpZ25lZCBkaXNwbGFjZW1lbnRzIC0+ICdZJyBjb25zdHJhaW50LgotIDsg TGlzdCBZLT5yIGFuZCByLT5ZIGJlZm9yZSByLT5yIGZvciByZWxvYWQuCi0gKGRlZmluZV9pbnNu ICIqbW92ZGZfaGFyZGZsb2F0NjQiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpERiAwICJub25p bW1lZGlhdGVfb3BlcmFuZCIgIj1ZLHIsIXIsZixmLG0sKmMqbCwhciwqaCwhciwhciwhciIpCi0t CShtYXRjaF9vcGVyYW5kOkRGIDEgImlucHV0X29wZXJhbmQiICJyLFkscixmLG0sZixyLGgsMCxH LEgsRiIpKV0KLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgIm5vbmltbWVkaWF0ZV9vcGVy YW5kIiAiPVksIHIsICFyLCB3cywgP3dhLCB3cywgP3dhLCAgWiwgP1osIGYsIGYsIG0sIHdhLCAq YypsLCAhciwgKmgsICFyLCAhciwgIXIiKQotKwkobWF0Y2hfb3BlcmFuZDpERiAxICJpbnB1dF9v cGVyYW5kIiAgICAgICAgICJyLCBZLCAgciwgd3MsICB3YSwgIFosICAgWiwgd3MsIHdhLCBmLCBt LCBmLCAgaiwgICAgciwgIGgsICAwLCAgRywgIEgsICBGIikpXQotICAgIlRBUkdFVF9QT1dFUlBD NjQgJiYgIVRBUkdFVF9NRlBHUFIgJiYgVEFSR0VUX0hBUkRfRkxPQVQgJiYgVEFSR0VUX0ZQUlMg Ci0tICAgJiYgVEFSR0VUX0RPVUJMRV9GTE9BVCAKLSsgICAmJiBUQVJHRVRfRE9VQkxFX0ZMT0FU Ci0gICAgJiYgKGdwY19yZWdfb3BlcmFuZCAob3BlcmFuZHNbMF0sIERGbW9kZSkKLSAgICAgICAg fHwgZ3BjX3JlZ19vcGVyYW5kIChvcGVyYW5kc1sxXSwgREZtb2RlKSkiCi0gICAiQAotICAgIHN0 ZCVVMCVYMCAlMSwlMAotICAgIGxkJVUxJVgxICUwLCUxCi0gICAgbXIgJTAsJTEKLSsgICB4c2Nw c2duZHAgJXgwLCV4MSwleDEKLSsgICB4c2Nwc2duZHAgJXgwLCV4MSwleDEKLSsgICBseHNkJVUx eCAleDAsJXkxCi0rICAgbHhzZCVVMXggJXgwLCV5MQotKyAgIHN0eHNkJVUweCAleDEsJXkwCi0r ICAgc3R4c2QlVTB4ICV4MSwleTAKLSAgICBmbXIgJTAsJTEKLSAgICBsZmQlVTElWDEgJTAsJTEK LSAgICBzdGZkJVUwJVgwICUxLCUwCi0rICAgeHhseG9yICV4MCwleDAsJXgwCi0gICAgbXQlMCAl MQotICAgIG1mJTEgJTAKLSAgICB7Y3JvciAwLDAsMHxub3B9Ci0gICAgIwotICAgICMKLSAgICAj IgotLSAgWyhzZXRfYXR0ciAidHlwZSIgInN0b3JlLGxvYWQsKixmcCxmcGxvYWQsZnBzdG9yZSxt dGptcHIsbWZqbXByLCosKiwqLCoiKQotLSAgIChzZXRfYXR0ciAibGVuZ3RoIiAiNCw0LDQsNCw0 LDQsNCw0LDQsOCwxMiwxNiIpXSkKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJzdG9yZSwgbG9hZCwg KiwgZnAsIGZwLCBmcGxvYWQsIGZwbG9hZCwgZnBzdG9yZSwgZnBzdG9yZSwgZnAsIGZwbG9hZCwg ZnBzdG9yZSwgdmVjc2ltcGxlLCBtdGptcHIsIG1mam1wciwgICosICAqLCAgKiwgICoiKQotKyAg IChzZXRfYXR0ciAibGVuZ3RoIiAiICA0LCAgICA0LCA0LCAgNCwgIDQsICAgICAgNCwgICAgICA0 LCAgICAgICA0LCAgICAgICA0LCAgNCwgICAgICA0LCAgICAgICA0LCAgICAgICAgIDQsICAgICAg NCwgICAgICA0LCAgNCwgIDgsIDEyLCAxNiIpXSkKLSAKLSAoZGVmaW5lX2luc24gIiptb3ZkZl9z b2Z0ZmxvYXQ2NCIKLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRGIDAgIm5vbmltbWVkaWF0ZV9v cGVyYW5kIiAiPXIsWSxyLGNsLHIscixyLHIsKmgiKQotQEAgLTkyNzUsMTUgKzk0NTcsMTYgQEAg KGRlZmluZV9pbnNuICIqbW92dGlfc3RyaW5nIgotIChkZWZpbmVfaW5zbiAiKm1vdnRpX3BwYzY0 IgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VEkgMCAibm9uaW1tZWRpYXRlX29wZXJhbmQiICI9 cixvPD4sciIpCi0gCShtYXRjaF9vcGVyYW5kOlRJIDEgImlucHV0X29wZXJhbmQiICJyLHIsbSIp KV0KLS0gICJUQVJHRVRfUE9XRVJQQzY0ICYmIChncGNfcmVnX29wZXJhbmQgKG9wZXJhbmRzWzBd LCBUSW1vZGUpCi0tICAgfHwgZ3BjX3JlZ19vcGVyYW5kIChvcGVyYW5kc1sxXSwgVEltb2RlKSki Ci0rICAiKFRBUkdFVF9QT1dFUlBDNjQgJiYgKGdwY19yZWdfb3BlcmFuZCAob3BlcmFuZHNbMF0s IFRJbW9kZSkKLSsgICAgfHwgZ3BjX3JlZ19vcGVyYW5kIChvcGVyYW5kc1sxXSwgVEltb2RlKSkp Ci0rICAgJiYgVkVDVE9SX01FTV9OT05FX1AgKFRJbW9kZSkiCi0gICAiIyIKLSAgIFsoc2V0X2F0 dHIgInR5cGUiICIqLGxvYWQsc3RvcmUiKV0pCi0gCi0gKGRlZmluZV9zcGxpdAotICAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6VEkgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiIikKLSAJKG1hdGNoX29wZXJh bmQ6VEkgMSAiY29uc3RfZG91YmxlX29wZXJhbmQiICIiKSldCi0tICAiVEFSR0VUX1BPV0VSUEM2 NCIKLSsgICJUQVJHRVRfUE9XRVJQQzY0ICYmIFZFQ1RPUl9NRU1fTk9ORV9QIChUSW1vZGUpIgot ICAgWyhzZXQgKG1hdGNoX2R1cCAyKSAobWF0Y2hfZHVwIDQpKQotICAgIChzZXQgKG1hdGNoX2R1 cCAzKSAobWF0Y2hfZHVwIDUpKV0KLSAgICIKLUBAIC05MzA5LDcgKzk0OTIsNyBAQCAoZGVmaW5l X3NwbGl0Ci0gKGRlZmluZV9zcGxpdAotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VEkgMCAibm9u aW1tZWRpYXRlX29wZXJhbmQiICIiKQotICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VEkgMSAiaW5w dXRfb3BlcmFuZCIgIiIpKV0KLS0gICJyZWxvYWRfY29tcGxldGVkCi0rICAicmVsb2FkX2NvbXBs ZXRlZCAmJiBWRUNUT1JfTUVNX05PTkVfUCAoVEltb2RlKQotICAgICYmIGdwcl9vcl9ncHJfcCAo b3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdKSIKLSAgIFsocGMpXQotIHsgcnM2MDAwX3NwbGl0X211 bHRpcmVnX21vdmUgKG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSk7IERPTkU7IH0pCi1AQCAtMTQ5 MjksNiArMTUxMTIsOCBAQCAoZGVmaW5lX2luc24gInByZWZldGNoIgotIAwKLSAKLSAoaW5jbHVk ZSAic3luYy5tZCIpCi0rKGluY2x1ZGUgInZlY3Rvci5tZCIpCi0rKGluY2x1ZGUgInZzeC5tZCIp Ci0gKGluY2x1ZGUgImFsdGl2ZWMubWQiKQotIChpbmNsdWRlICJzcGUubWQiKQotIChpbmNsdWRl ICJkZnAubWQiKQotLS0tIGdjYy9jb25maWcvcnM2MDAwL2U1MDAuaAkoLi4uL3RydW5rKQkocmV2 aXNpb24gMTQ0NTU3KQotKysrIGdjYy9jb25maWcvcnM2MDAwL2U1MDAuaAkoLi4uL2JyYW5jaGVz L2libS9wb3dlcjctbWVpc3NuZXIpCShyZXZpc2lvbiAxNDQ2OTIpCi1AQCAtMzcsNiArMzcsOCBA QAotICAgICAgIHsJCQkJCQkJCQlcCi0gCWlmIChUQVJHRVRfQUxUSVZFQykJCQkJCQlcCi0gCSAg ZXJyb3IgKCJBbHRpVmVjIGFuZCBFNTAwIGluc3RydWN0aW9ucyBjYW5ub3QgY29leGlzdCIpOwlc Ci0rCWlmIChUQVJHRVRfVlNYKQkJCQkJCQlcCi0rCSAgZXJyb3IgKCJWU1ggYW5kIEU1MDAgaW5z dHJ1Y3Rpb25zIGNhbm5vdCBjb2V4aXN0Iik7CQlcCi0gCWlmIChUQVJHRVRfNjRCSVQpCQkJCQkJ XAotIAkgIGVycm9yICgiNjQtYml0IEU1MDAgbm90IHN1cHBvcnRlZCIpOwkJCQlcCi0gCWlmIChU QVJHRVRfSEFSRF9GTE9BVCAmJiBUQVJHRVRfRlBSUykJCQkJXAotLS0tIGdjYy9jb25maWcvcnM2 MDAwL2RyaXZlci1yczYwMDAuYwkoLi4uL3RydW5rKQkocmV2aXNpb24gMTQ0NTU3KQotKysrIGdj Yy9jb25maWcvcnM2MDAwL2RyaXZlci1yczYwMDAuYwkoLi4uL2JyYW5jaGVzL2libS9wb3dlcjct bWVpc3NuZXIpCShyZXZpc2lvbiAxNDQ2OTIpCi1AQCAtMzQzLDExICszNDMsMTE1IEBAIGRldGVj dF9wcm9jZXNzb3JfYWl4ICh2b2lkKQotICNlbmRpZiAvKiBfQUlYICovCi0gCi0gCi0rLyoKLSsg KiBBcnJheSB0byBtYXAgLW1jcHU9bmF0aXZlIG5hbWVzIHRvIHRoZSBzd2l0Y2hlcyBwYXNzZWQg dG8gdGhlIGFzc2VtYmxlci4KLSsgKiBUaGlzIGxpc3QgbWlycm9ycyB0aGUgc3BlY3MgaW4gQVNN X0NQVV9TUEVDLCBhbmQgYW55IGNoYW5nZXMgbWFkZSBoZXJlCi0rICogc2hvdWxkIGJlIG1hZGUg dGhlcmUgYXMgd2VsbC4KLSsgKi8KLSsKLStzdHJ1Y3QgYXNtX25hbWUgewotKyAgY29uc3QgY2hh ciAqY3B1OwotKyAgY29uc3QgY2hhciAqYXNtX3N3OwotK307Ci0rCi0rc3RhdGljIGNvbnN0Ci0r c3RydWN0IGFzbV9uYW1lIGFzbV9uYW1lc1tdID0gewotKyNpZiBkZWZpbmVkIChfQUlYKQotKyAg eyAicG93ZXIzIiwJIi1tNjIwIiB9LAotKyAgeyAicG93ZXI0IiwJIi1tcHdyNCIgfSwKLSsgIHsg InBvd2VyNSIsCSItbXB3cjUiIH0sCi0rICB7ICJwb3dlcjUrIiwJIi1tcHdyNXgiIH0sCi0rICB7 ICJwb3dlcjYiLAkiLW1wd3I2IiB9LAotKyAgeyAicG93ZXI2eCIsCSItbXB3cjYiIH0sCi0rICB7 ICJwb3dlcjciLAkiLW1wd3I3IiB9LAotKyAgeyAicG93ZXJwYyIsCSItbXBwYyIgfSwKLSsgIHsg InJzNjRhIiwJIi1tcHBjIiB9LAotKyAgeyAiNjAzIiwJIi1tNjAzIiB9LAotKyAgeyAiNjAzZSIs CSItbTYwMyIgfSwKLSsgIHsgIjYwNCIsCSItbTYwNCIgfSwKLSsgIHsgIjYwNGUiLAkiLW02MDQi IH0sCi0rICB7ICI2MjAiLAkiLW02MjAiIH0sCi0rICB7ICI2MzAiLAkiLW02MjAiIH0sCi0rICB7 ICI5NzAiLAkiLW05NzAiIH0sCi0rICB7ICJHNSIsCSItbTk3MCIgfSwKLSsgIHsgTlVMTCwJIlwK LSsleyFtYWl4NjQ6IFwKLSsle21wb3dlcnBjNjQ6IC1tcHBjNjR9IFwKLSsle21hbHRpdmVjOiAt bTk3MH0gXAotKyV7IW1hbHRpdmVjOiAleyFtcG93ZXI2NDogJShhc21fZGVmYXVsdCl9fX0iIH0s Ci0rCi0rI2Vsc2UKLSsgIHsgImNvbW1vbiIsCSItbWNvbSIgfSwKLSsgIHsgImNlbGwiLAkiLW1j ZWxsIiB9LAotKyAgeyAicG93ZXIiLAkiLW1wd3IiIH0sCi0rICB7ICJwb3dlcjIiLAkiLW1wd3J4 IiB9LAotKyAgeyAicG93ZXIzIiwJIi1tcHBjNjQiIH0sCi0rICB7ICJwb3dlcjQiLAkiLW1wb3dl cjQiIH0sCi0rICB7ICJwb3dlcjUiLAkiJShhc21fY3B1X3Bvd2VyNSkiIH0sCi0rICB7ICJwb3dl cjUrIiwJIiUoYXNtX2NwdV9wb3dlcjUpIiB9LAotKyAgeyAicG93ZXI2IiwJIiUoYXNtX2NwdV9w b3dlcjYpIC1tYWx0aXZlYyIgfSwKLSsgIHsgInBvd2VyNngiLAkiJShhc21fY3B1X3Bvd2VyNikg LW1hbHRpdmVjIiB9LAotKyAgeyAicG93ZXI3IiwJIiUoYXNtX2NwdV9wb3dlcjcpIiB9LAotKyAg eyAicG93ZXJwYyIsCSItbXBwYyIgfSwKLSsgIHsgInJpb3MiLAkiLW1wd3IiIH0sCi0rICB7ICJy aW9zMSIsCSItbXB3ciIgfSwKLSsgIHsgInJpb3MyIiwJIi1tcHdyeCIgfSwKLSsgIHsgInJzYyIs CSItbXB3ciIgfSwKLSsgIHsgInJzYzEiLAkiLW1wd3IiIH0sCi0rICB7ICJyczY0YSIsCSItbXBw YzY0IiB9LAotKyAgeyAiNDAxIiwJIi1tcHBjIiB9LAotKyAgeyAiNDAzIiwJIi1tNDAzIiB9LAot KyAgeyAiNDA1IiwJIi1tNDA1IiB9LAotKyAgeyAiNDA1ZnAiLAkiLW00MDUiIH0sCi0rICB7ICI0 NDAiLAkiLW00NDAiIH0sCi0rICB7ICI0NDBmcCIsCSItbTQ0MCIgfSwKLSsgIHsgIjQ2NCIsCSIt bTQ0MCIgfSwKLSsgIHsgIjQ2NGZwIiwJIi1tNDQwIiB9LAotKyAgeyAiNTA1IiwJIi1tcHBjIiB9 LAotKyAgeyAiNjAxIiwJIi1tNjAxIiB9LAotKyAgeyAiNjAyIiwJIi1tcHBjIiB9LAotKyAgeyAi NjAzIiwJIi1tcHBjIiB9LAotKyAgeyAiNjAzZSIsCSItbXBwYyIgfSwKLSsgIHsgImVjNjAzZSIs CSItbXBwYyIgfSwKLSsgIHsgIjYwNCIsCSItbXBwYyIgfSwKLSsgIHsgIjYwNGUiLAkiLW1wcGMi IH0sCi0rICB7ICI2MjAiLAkiLW1wcGM2NCIgfSwKLSsgIHsgIjYzMCIsCSItbXBwYzY0IiB9LAot KyAgeyAiNzQwIiwJIi1tcHBjIiB9LAotKyAgeyAiNzUwIiwJIi1tcHBjIiB9LAotKyAgeyAiRzMi LAkiLW1wcGMiIH0sCi0rICB7ICI3NDAwIiwJIi1tcHBjIC1tYWx0aXZlYyIgfSwKLSsgIHsgIjc0 NTAiLAkiLW1wcGMgLW1hbHRpdmVjIiB9LAotKyAgeyAiRzQiLAkiLW1wcGMgLW1hbHRpdmVjIiB9 LAotKyAgeyAiODAxIiwJIi1tcHBjIiB9LAotKyAgeyAiODIxIiwJIi1tcHBjIiB9LAotKyAgeyAi ODIzIiwJIi1tcHBjIiB9LAotKyAgeyAiODYwIiwJIi1tcHBjIiB9LAotKyAgeyAiOTcwIiwJIi1t cG93ZXI0IC1tYWx0aXZlYyIgfSwKLSsgIHsgIkc1IiwJIi1tcG93ZXI0IC1tYWx0aXZlYyIgfSwK LSsgIHsgIjg1NDAiLAkiLW1lNTAwIiB9LAotKyAgeyAiODU0OCIsCSItbWU1MDAiIH0sCi0rICB7 ICJlMzAwYzIiLAkiLW1lMzAwIiB9LAotKyAgeyAiZTMwMGMzIiwJIi1tZTMwMCIgfSwKLSsgIHsg ImU1MDBtYyIsCSItbWU1MDBtYyIgfSwKLSsgIHsgTlVMTCwJIlwKLSsle21wb3dlcjogJXshbXBv d2VyMjogLW1wd3J9fSBcCi0rJXttcG93ZXIyOiAtbXB3cnh9IFwKLSsle21wb3dlcnBjNjQqOiAt bXBwYzY0fSBcCi0rJXshbXBvd2VycGM2NCo6ICV7bXBvd2VycGMqOiAtbXBwY319IFwKLSsle21u by1wb3dlcjogJXshbXBvd2VycGMqOiAtbWNvbX19IFwKLSsleyFtbm8tcG93ZXI6ICV7IW1wb3dl cio6ICUoYXNtX2RlZmF1bHQpfX0iIH0sCi0rI2VuZGlmCi0rfTsKLSsKLSAvKiBUaGlzIHdpbGwg YmUgY2FsbGVkIGJ5IHRoZSBzcGVjIHBhcnNlciBpbiBnY2MuYyB3aGVuIGl0IHNlZXMKLSAgICBh ICU6bG9jYWxfY3B1X2RldGVjdChhcmdzKSBjb25zdHJ1Y3QuICBDdXJyZW50bHkgaXQgd2lsbCBi ZSBjYWxsZWQKLSAgICB3aXRoIGVpdGhlciAiYXJjaCIgb3IgInR1bmUiIGFzIGFyZ3VtZW50IGRl cGVuZGluZyBvbiBpZiAtbWFyY2g9bmF0aXZlCi0gICAgb3IgLW10dW5lPW5hdGl2ZSBpcyB0byBi ZSBzdWJzdGl0dXRlZC4KLSAKLSsgICBBZGRpdGlvbmFsbHkgaXQgd2lsbCBiZSBjYWxsZWQgd2l0 aCAiYXNtIiB0byBzZWxlY3QgdGhlIGFwcHJvcHJpYXRlIGZsYWdzCi0rICAgZm9yIHRoZSBhc3Nl bWJsZXIuCi0rCi0gICAgSXQgcmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIG5ldyBjb21tYW5k IGxpbmUgcGFyYW1ldGVycyB0byBiZQotICAgIHB1dCBhdCB0aGUgcGxhY2Ugb2YgdGhlIGFib3Zl IHR3byBvcHRpb25zLCBkZXBlbmRpbmcgb24gd2hhdCBDUFUKLSAgICB0aGlzIGlzIGV4ZWN1dGVk LgotQEAgLTM2MSwyOSArNDY1LDM1IEBAIGNvbnN0IGNoYXIKLSAgIGNvbnN0IGNoYXIgKmNhY2hl ID0gIiI7Ci0gICBjb25zdCBjaGFyICpvcHRpb25zID0gIiI7Ci0gICBib29sIGFyY2g7Ci0rICBi b29sIGFzc2VtYmxlcjsKLSsgIHNpemVfdCBpOwotIAotICAgaWYgKGFyZ2MgPCAxKQotICAgICBy ZXR1cm4gTlVMTDsKLSAKLSAgIGFyY2ggPSBzdHJjbXAgKGFyZ3ZbMF0sICJjcHUiKSA9PSAwOwot LSAgaWYgKCFhcmNoICYmIHN0cmNtcCAoYXJndlswXSwgInR1bmUiKSkKLSsgIGFzc2VtYmxlciA9 ICghYXJjaCAmJiBzdHJjbXAgKGFyZ3ZbMF0sICJhc20iKSA9PSAwKTsKLSsgIGlmICghYXJjaCAm JiAhYXNzZW1ibGVyICYmIHN0cmNtcCAoYXJndlswXSwgInR1bmUiKSkKLSAgICAgcmV0dXJuIE5V TEw7Ci0gCi0rICBpZiAoISBhc3NlbWJsZXIpCi0rICAgIHsKLSAjaWYgZGVmaW5lZCAoX0FJWCkK LS0gIGNhY2hlID0gZGV0ZWN0X2NhY2hlc19haXggKCk7Ci0rICAgICAgY2FjaGUgPSBkZXRlY3Rf Y2FjaGVzX2FpeCAoKTsKLSAjZWxpZiBkZWZpbmVkIChfX0FQUExFX18pCi0tICBjYWNoZSA9IGRl dGVjdF9jYWNoZXNfZGFyd2luICgpOwotKyAgICAgIGNhY2hlID0gZGV0ZWN0X2NhY2hlc19kYXJ3 aW4gKCk7Ci0gI2VsaWYgZGVmaW5lZCAoX19GcmVlQlNEX18pCi0tICBjYWNoZSA9IGRldGVjdF9j YWNoZXNfZnJlZWJzZCAoKTsKLS0gIC8qIEZyZWVCU0QgUFBDIGRvZXMgbm90IHByb3ZpZGUgYW55 IGNhY2hlIGluZm9ybWF0aW9uIHlldC4gICovCi0tICBjYWNoZSA9ICIiOwotKyAgICAgIGNhY2hl ID0gZGV0ZWN0X2NhY2hlc19mcmVlYnNkICgpOwotKyAgICAgIC8qIEZyZWVCU0QgUFBDIGRvZXMg bm90IHByb3ZpZGUgYW55IGNhY2hlIGluZm9ybWF0aW9uIHlldC4gICovCi0rICAgICAgY2FjaGUg PSAiIjsKLSAjZWxpZiBkZWZpbmVkIChfX2xpbnV4X18pCi0tICBjYWNoZSA9IGRldGVjdF9jYWNo ZXNfbGludXggKCk7Ci0tICAvKiBQUEMgTGludXggZG9lcyBub3QgcHJvdmlkZSBhbnkgY2FjaGUg aW5mb3JtYXRpb24geWV0LiAgKi8KLS0gIGNhY2hlID0gIiI7Ci0rICAgICAgY2FjaGUgPSBkZXRl Y3RfY2FjaGVzX2xpbnV4ICgpOwotKyAgICAgIC8qIFBQQyBMaW51eCBkb2VzIG5vdCBwcm92aWRl IGFueSBjYWNoZSBpbmZvcm1hdGlvbiB5ZXQuICAqLwotKyAgICAgIGNhY2hlID0gIiI7Ci0gI2Vs c2UKLS0gIGNhY2hlID0gIiI7Ci0rICAgICAgY2FjaGUgPSAiIjsKLSAjZW5kaWYKLSsgICAgfQot IAotICNpZiBkZWZpbmVkIChfQUlYKQotICAgY3B1ID0gZGV0ZWN0X3Byb2Nlc3Nvcl9haXggKCk7 Ci1AQCAtMzk3LDYgKzUwNywxNyBAQCBjb25zdCBjaGFyCi0gICBjcHUgPSAicG93ZXJwYyI7Ci0g I2VuZGlmCi0gCi0rICBpZiAoYXNzZW1ibGVyKQotKyAgICB7Ci0rICAgICAgZm9yIChpID0gMDsg aSA8IHNpemVvZiAoYXNtX25hbWVzKSAvIHNpemVvZiAoYXNtX25hbWVzWzBdKTsgaSsrKQotKwl7 Ci0rCSAgaWYgKCFhc21fbmFtZXNbaV0uY3B1IHx8ICFzdHJjbXAgKGFzbV9uYW1lc1tpXS5jcHUs IGNwdSkpCi0rCSAgICByZXR1cm4gYXNtX25hbWVzW2ldLmFzbV9zdzsKLSsJfQotKwotKyAgICAg IHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0gICByZXR1cm4gY29uY2F0IChjYWNoZSwgIi1tIiwg YXJndlswXSwgIj0iLCBjcHUsICIgIiwgb3B0aW9ucywgTlVMTCk7Ci0gfQotIAotLS0tIGdjYy9j b25maWcvcnM2MDAwL3N5c3Y0LmgJKC4uLi90cnVuaykJKHJldmlzaW9uIDE0NDU1NykKLSsrKyBn Y2MvY29uZmlnL3JzNjAwMC9zeXN2NC5oCSguLi4vYnJhbmNoZXMvaWJtL3Bvd2VyNy1tZWlzc25l cikJKHJldmlzaW9uIDE0NDY5MikKLUBAIC0xMTksOSArMTE5LDkgQEAgZG8gewkJCQkJCQkJCVwK LSAgIGVsc2UgaWYgKCFzdHJjbXAgKHJzNjAwMF9hYmlfbmFtZSwgImk5NjAtb2xkIikpCQkJXAot ICAgICB7CQkJCQkJCQkJXAotICAgICAgIHJzNjAwMF9jdXJyZW50X2FiaSA9IEFCSV9WNDsJCQkJ CVwKLS0gICAgICB0YXJnZXRfZmxhZ3MgfD0gKE1BU0tfTElUVExFX0VORElBTiB8IE1BU0tfRUFC SQkJCVwKLS0JCSAgICAgICB8IE1BU0tfTk9fQklURklFTERfV09SRCk7CQkJXAotKyAgICAgIHRh cmdldF9mbGFncyB8PSAoTUFTS19MSVRUTEVfRU5ESUFOIHwgTUFTS19FQUJJKTsJCQlcCi0gICAg ICAgdGFyZ2V0X2ZsYWdzICY9IH5NQVNLX1NUUklDVF9BTElHTjsJCQkJXAotKyAgICAgIFRBUkdF VF9OT19CSVRGSUVMRF9XT1JEID0gMTsJCQkJCVwKLSAgICAgfQkJCQkJCQkJCVwKLSAgIGVsc2UJ CQkJCQkJCQlcCi0gICAgIHsJCQkJCQkJCQlcCi0KCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291 cmNlcwppbmRleCAyNjc0ZjQyLi5kNzhkNjE3IDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3Nv dXJjZXMKQEAgLTEsMyArMSwzIEBACiAyNjU5ZjA5YzJlNDNlZjhiN2Q0NDA2MzIxNzUzZjFiMiAg ZmFzdGphci0wLjk3LnRhci5negotNzVmMmU0YWI5NzE3MzQyZjEzMTQ2MjQ1ZDU4ZmExNjAgIGdj Yy00LjQuMC0yMDA5MDMwNC50YXIuYnoyCis3OWVlOThhNzNjMGNiYWIzMjkzOGJiZjVkODVmMDg2 YiAgZ2NjLTQuNC4wLTIwMDkwMzA3LnRhci5iejIKIDcxNmI3YTA4MjNmOTZjOWQwMmMxNzAzYTlj NDdkMzg3ICBjbG9vZy1wcGwtMC4xNS50YXIuZ3oK