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: Mattias Ellert To: git-commits@fedoraproject.org Subject: [rpms/globus-gridftp-server] rawhide: Fix compiler warnings Date: Sun, 14 Jun 2026 08:47:55 GMT Message-ID: <178142687538.1.13426911557173361258.rpms-globus-gridftp-server-9ddaecef6e4f@fedoraproject.org> List-ID: X-Git-Repo: rpms/globus-gridftp-server X-Git-Branch: rawhide X-Git-Rev: 9ddaecef6e4f57c9561462a6c16c4047132fbd31 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2xvYnVzLWdyaWRm dHAtc2VydmVyCkJyYW5jaCA6IHJhd2hpZGUKQ29tbWl0IDogOWRkYWVjZWY2ZTRmNTdjOTU2MTQ2 MmE2YzE2YzQwNDcxMzJmYmQzMQpBdXRob3IgOiBNYXR0aWFzIEVsbGVydCA8bWF0dGlhcy5lbGxl cnRAcGh5c2ljcy51dS5zZT4KRGF0ZSAgIDogMjAyNi0wNi0xNFQxMDozOToxMyswMjowMApTdGF0 cyAgOiArMTIwMTgvLTEgaW4gMyBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXBy b2plY3Qub3JnL3JwbXMvZ2xvYnVzLWdyaWRmdHAtc2VydmVyL2MvOWRkYWVjZWY2ZTRmNTdjOTU2 MTQ2MmE2YzE2YzQwNDcxMzJmYmQzMT9icmFuY2g9cmF3aGlkZQoKTG9nOgpGaXggY29tcGlsZXIg d2FybmluZ3MKCi0tLQpkaWZmIC0tZ2l0IGEvMDAwMS1VbnRhYmlmeS1hbmQtcmVtb3ZlLXRyYWls aW5nLXdoaXRlLXNwYWNlLnBhdGNoIGIvMDAwMS1VbnRhYmlmeS1hbmQtcmVtb3ZlLXRyYWlsaW5n LXdoaXRlLXNwYWNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhm NTg5N2MKLS0tIC9kZXYvbnVsbAorKysgYi8wMDAxLVVudGFiaWZ5LWFuZC1yZW1vdmUtdHJhaWxp bmctd2hpdGUtc3BhY2UucGF0Y2gKQEAgLTAsMCArMSwxMTY4OSBAQAorRnJvbSAzY2NkYWEwMjM2 MjMwYmJjYmNiZjMzOWU3ZGZkZmFmMjNjMTBiZDZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogTWF0dGlhcyBFbGxlcnQgPG1hdHRpYXMuZWxsZXJ0QHBoeXNpY3MudXUuc2U+CitEYXRl OiBXZWQsIDIwIE1heSAyMDI2IDAwOjE1OjM3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBV bnRhYmlmeSBhbmQgcmVtb3ZlIHRyYWlsaW5nIHdoaXRlLXNwYWNlCisKKy0tLQorIGdyaWRmdHAv c2VydmVyL3NyYy9nZnNfZHluYmVfY2xpZW50LmMgICAgICAgICB8ICAgIDQgKy0KKyBncmlkZnRw L3NlcnZlci9zcmMvZ2ZzX2dmb3JrX21hc3Rlci5jICAgICAgICAgfCAgIDQ0ICstCisgZ3JpZGZ0 cC9zZXJ2ZXIvc3JjL2dsb2J1c19pX2dmc19jb25maWcuYyAgICAgIHwgIDU5MCArKystLS0tCisg Z3JpZGZ0cC9zZXJ2ZXIvc3JjL2dsb2J1c19pX2dmc19jb250cm9sLmMgICAgIHwgIDMxNCArKy0t CisgZ3JpZGZ0cC9zZXJ2ZXIvc3JjL2dsb2J1c19pX2dmc19kYXRhLmMgICAgICAgIHwgMTQ2OCAr KysrKysrKy0tLS0tLS0tLQorIC4uLi9zZXJ2ZXIvc3JjL2dsb2J1c19pX2dmc19kZWZhdWx0X2Jy YWluLmMgICB8ICAgMzYgKy0KKyAuLi4vbW9kdWxlcy9maWxlL2dsb2J1c19ncmlkZnRwX3NlcnZl cl9maWxlLmMgfCAgNjkyICsrKystLS0tCisgLi4uL3JlbW90ZS9nbG9idXNfZ3JpZGZ0cF9zZXJ2 ZXJfcmVtb3RlLmMgICAgIHwgIDM0MiArKy0tCisgOCBmaWxlcyBjaGFuZ2VkLCAxNzQ1IGluc2Vy dGlvbnMoKyksIDE3NDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ncmlkZnRwL3NlcnZl ci9zcmMvZ2ZzX2R5bmJlX2NsaWVudC5jIGIvZ3JpZGZ0cC9zZXJ2ZXIvc3JjL2dmc19keW5iZV9j bGllbnQuYworaW5kZXggNjIxMzRlMGE2Li45YzEzMmQ1ZjYgMTAwNjQ0CistLS0gYS9ncmlkZnRw L3NlcnZlci9zcmMvZ2ZzX2R5bmJlX2NsaWVudC5jCisrKysgYi9ncmlkZnRwL3NlcnZlci9zcmMv Z2ZzX2R5bmJlX2NsaWVudC5jCitAQCAtNDAsNyArNDAsNyBAQAorICAgICAgICAgICAgICIlcyIs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgICAgICAgICAgKGVycm9yX21zZykpKQorIAorLWVudW0gCisrZW51bQorIHsKKyAg ICAgR0xPQlVTX0RZTkNMSUVOVF9FUlJPUl9QQVJNID0gMQorIH07CitAQCAtMjE5LDcgKzIxOSw3 IEBAIG1haW4oCisgICAgICAgICBnb3RvIGVycm9yX29wZW47CisgICAgIH0KKyAgICAgcmVzdWx0 ID0gZ2xvYnVzX3hpb193cml0ZSgKKy0gICAgICAgIGdfeGlvX2hhbmRsZSwgYnVmZmVyLCAKKysg ICAgICAgIGdfeGlvX2hhbmRsZSwgYnVmZmVyLAorICAgICAgICAgR0ZfRFlOX1BBQ0tFVF9MRU4s IEdGX0RZTl9QQUNLRVRfTEVOLCAmbmJ5dGVzLCBOVUxMKTsKKyAgICAgaWYocmVzdWx0ICE9IEdM T0JVU19TVUNDRVNTKQorICAgICB7CitkaWZmIC0tZ2l0IGEvZ3JpZGZ0cC9zZXJ2ZXIvc3JjL2dm c19nZm9ya19tYXN0ZXIuYyBiL2dyaWRmdHAvc2VydmVyL3NyYy9nZnNfZ2ZvcmtfbWFzdGVyLmMK K2luZGV4IGFjNDllN2QyNC4uOTFiMjAxNDU5IDEwMDY0NAorLS0tIGEvZ3JpZGZ0cC9zZXJ2ZXIv c3JjL2dmc19nZm9ya19tYXN0ZXIuYworKysrIGIvZ3JpZGZ0cC9zZXJ2ZXIvc3JjL2dmc19nZm9y a19tYXN0ZXIuYworQEAgLTE3LDcgKzE3LDcgQEAKKyAvKiBUaGlzIGlzIG1lbnQgdG8gYmUgYSBm YWlybHkgc2ltcGxlIHByb2dyYW0uICBJZiBpdCBzdGFydHMgY3JlZXBpbmcgdG9vCisgICAgIG11 Y2ggd2UgbmVlZCB0byByZWNvbnNpZGVyIGl0ICovCisgCistLyogVE9ETzogCisrLyogVE9ETzoK KyAgICAxKSBtZW1vcnkgbGltaXRhdGlvbiwgcGVyaGFwcyBqdXN0IGltcGxlbWVudGVkIGluIGJy YWluIGJhc2VkIG9uCisgICAgICAgY29ubmVjdGlvbiBjb3VudD8KKyAKK0BAIC01MCw3ICs1MCw3 IEBACisgI2RlZmluZSBHRlNHRm9ya0Z1bmNOYW1lKGZ1bmMpIHN0YXRpYyBjb25zdCBjaGFyICog X2dmc19nZm9ya19mdW5jX25hbWUgPSAjZnVuYworICNlbmRpZgorIAorLSNkZWZpbmUgR0ZTR2Zv cmtUb3BOaWNlU2hhcmUoX3ZhbCkgKChfdmFsICogOSkgLyAxMCkgCisrI2RlZmluZSBHRlNHZm9y a1RvcE5pY2VTaGFyZShfdmFsKSAoKF92YWwgKiA5KSAvIDEwKQorIAorICNkZWZpbmUgR0ZTR2Zv cmtTaXplT2ZJZGxlU2VydmVyICAgICAgICAoMioxMDI0KjEwMjQpCisgCitAQCAtMTM4LDcgKzEz OCw3IEBAIHR5cGVkZWYgc3RydWN0IGdmc19sX2dmb3JrX21hc3Rlcl9lbnRyeV9zCisgCisgCisg c3RhdGljCistdm9pZCAKKyt2b2lkCisgZ2ZzX2xfZ2Zvcmtfd3JpdGVfY2xvc2VfY2IoCisgICAg IGdsb2J1c194aW9faGFuZGxlX3QgICAgICAgICAgICAgICAgIGhhbmRsZSwKKyAgICAgZ2xvYnVz X3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LAorQEAgLTE3OCw3ICsxNzgsNyBA QCBnZnNfbF9nZm9ya19sb2coCisgICAgIGZmbHVzaChnX2xvZ19mcHRyKTsKKyB9CisgCistc3Rh dGljIAorK3N0YXRpYworIHZvaWQKKyBnZnNfbF9nZm9ya190aW1lb3V0KAorICAgICB2b2lkICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2FyZykKK0BAIC00MDQsNyArNDA0LDcg QEAgZ2ZzX2xfZ2ZvcmtfcmVhZF9keW5iZV9iY19jYigKKyAgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaTsKKyAKKyAgICAgZm9yKGkgPSAwOyBpIDwgY291bnQ7IGkrKykK Ky0gICAgeyAKKysgICAgeworICAgICAgICAgZ2xvYnVzX2ZyZWUoaW92ZWNbaV0uaW92X2Jhc2Up OworICAgICB9CisgfQorQEAgLTQ4Myw3ICs0ODMsNyBAQCBnZnNfbF9nZm9ya19yZWFkX2R5bmJl KAorICAgICAgICAgJmdfZ2ZvcmtfYmVfdGFibGUsIHRhYmxlX2tleSk7CisgICAgIGlmKGVudF9i dWYgPT0gTlVMTCkKKyAgICAgeworLSAgICAgICAgZW50X2J1ZiA9IChnZnNfbF9nZm9ya19tYXN0 ZXJfZW50cnlfdCAqKSAKKysgICAgICAgIGVudF9idWYgPSAoZ2ZzX2xfZ2ZvcmtfbWFzdGVyX2Vu dHJ5X3QgKikKKyAgICAgICAgICAgICBnbG9idXNfY2FsbG9jKDEsIHNpemVvZihnZnNfbF9nZm9y a19tYXN0ZXJfZW50cnlfdCkpOworICAgICAgICAgbWVtY3B5KGVudF9idWYtPmJ1ZmZlciwgYnVm ZmVyLCBHRl9EWU5fUEFDS0VUX0xFTik7CisgCitAQCAtNTI3LDcgKzUyNyw3IEBAIGdmc19sX2dm b3JrX3JlYWRfZHluYmUoCisgICAgICAgICAgICAgZ2ZzX2xfZ2Zvcmtfd3JpdGVfY2xvc2VfY2Is CisgICAgICAgICAgICAgYnVmZmVyKTsKKyAgICAgICAgIGdsb2J1c19mcmVlKGJ1ZmZlcik7Cist ICAgICAgICBnb3RvIGVycm9yX2NzOyAgIAorKyAgICAgICAgZ290byBlcnJvcl9jczsKKyAgICAg fQorICAgICBpb3ZbMF0uaW92X2Jhc2UgPSBtYWxsb2MoR0ZfRFlOX1BBQ0tFVF9MRU4pOworICAg ICBtZW1jcHkoaW92WzBdLmlvdl9iYXNlLCBidWZmZXIsIEdGX0RZTl9QQUNLRVRfTEVOKTsKK0BA IC04ODIsNyArODgyLDcgQEAgZ2ZzX2xfZ2ZvcmtfZHluX2JlX29wZW4oCisgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICAvKiBhIGdvb2QgYnVmZmVyICovCisgCistICAgICAgICAgICAg ICAgIC8qIHRlbXBhcmlseSBhc3NpZ24gZW50X2J1ZiBoZXJlLCB3ZSB1bHRpbWF0YWxlIAorKyAg ICAgICAgICAgICAgICAvKiB0ZW1wYXJpbHkgYXNzaWduIGVudF9idWYgaGVyZSwgd2UgdWx0aW1h dGFsZQorICAgICAgICAgICAgICAgICAgICAgd2FudCBlbnRfYnVmLT4gYnVmZmVyICovCisgICAg ICAgICAgICAgICAgIGlvdltpXS5pb3ZfYmFzZSA9IGVudF9idWY7CisgICAgICAgICAgICAgICAg IGlvdltpXS5pb3ZfbGVuID0gR0ZfRFlOX1BBQ0tFVF9MRU47CitAQCAtMTExMiw3ICsxMTEyLDcg QEAgZ2ZzX2xfZ2ZvcmtfcmVhZHlfc2VuZCgKKyAgICAgICAgIGhhbmRsZSwKKyAgICAgICAgIHRv X3BpZCwKKyAgICAgICAgICZpb3YsCistICAgICAgICAxLCAKKysgICAgICAgIDEsCisgICAgICAg ICBnZnNfbF9nZm9ya19mcmVlX3dyaXRlX2NiLAorICAgICAgICAgTlVMTCk7CisgICAgIGlmKHJl c3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKK0BAIC0xMTIxLDcgKzExMjEsNyBAQCBnZnNfbF9nZm9y a19yZWFkeV9zZW5kKAorICAgICAgICAgICAgIHJlc3VsdCwgMywgImZhaWxlZCB0byBzZW5kIHRv ICVkXG4iLCB0b19waWQpOworICAgICB9CisgfQorLSAgIAorKworIHN0YXRpYworIHZvaWQKKyBn ZnNfbF9nZm9ya19tZW1fdHJ5KAorQEAgLTExNjYsNyArMTE2Niw3IEBAIGdmc19sX2dmb3JrX21l bV90cnkoCisgCisgICAgICAgICBlbnRyeS0+bWVtX3NpemUgKz0gbWVtX2dpdmVuOworICAgICAg ICAgZW50cnktPnRjcF9idWZmZXJfbWVtID0gbWVtX2dpdmVuIC8gMzsKKy0gICAgCisrCisgICAg ICAgICBnbG9idXNfaGFzaHRhYmxlX2luc2VydCgKKyAgICAgICAgICAgICAmZ2ZzX2xfbWVtbGlt aXRfdGFibGUsICh2b2lkICopIChpbnRwdHJfdCkgZW50cnktPnBpZCwgZW50cnkpOworIAorQEAg LTEzNDgsNyArMTM0OCw3IEBAIGdmc19sX2dmb3JrX2luY29taW5nX2NiKAorICAgICB7CisgICAg ICAgICBpZihidWZmZXJbR0ZfVkVSU0lPTl9ORFhdICE9IEdGX1ZFUlNJT04pCisgICAgICAgICB7 CistICAgICAgICAgICAgZ2ZzX2xfZ2ZvcmtfbG9nKEdMT0JVU19TVUNDRVNTLCAwLCAKKysgICAg ICAgICAgICBnZnNfbF9nZm9ya19sb2coR0xPQlVTX1NVQ0NFU1MsIDAsCisgICAgICAgICAgICAg ICAgICJJbmNvbWluZyBtZXNzYWdlIHdpdGggYmFkIHZlcnNpb24sIGlnbm9yaW5nLiIpOworICAg ICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICB9CitAQCAtMTM1Nyw3ICsxMzU3LDcgQEAg Z2ZzX2xfZ2ZvcmtfaW5jb21pbmdfY2IoCisgICAgICAgICAgICAgJmdmc19sX21lbWxpbWl0X3Rh YmxlLCAodm9pZCAqKSAoaW50cHRyX3QpIGZyb21fcGlkKTsKKyAgICAgICAgIGlmKGVudHJ5ID09 IE5VTEwpCisgICAgICAgICB7CistICAgICAgICAgICAgZ2ZzX2xfZ2ZvcmtfbG9nKEdMT0JVU19T VUNDRVNTLCAwLCAKKysgICAgICAgICAgICBnZnNfbF9nZm9ya19sb2coR0xPQlVTX1NVQ0NFU1Ms IDAsCisgICAgICAgICAgICAgICAgICJJbmNvbWluZyBtZXNzYWdlIGZyb20gdW5rbm93biBwaWQg JWQiLCBmcm9tX3BpZCk7CisgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgIH0KK0BA IC0xMzY2LDExICsxMzY2LDExIEBAIGdmc19sX2dmb3JrX2luY29taW5nX2NiKAorICAgICAgICAg eworICAgICAgICAgICAgIGNhc2UgR0ZTX0dGT1JLX01TR19UWVBFX1JFTEVBU0U6CisgCistICAg ICAgICAgICAgICAgIG1lbWNweSgmdG1wMzIsIAorKyAgICAgICAgICAgICAgICBtZW1jcHkoJnRt cDMyLAorICAgICAgICAgICAgICAgICAgICAgJmJ1ZmZlcltHRl9SRUxFQVNFX0NPVU5UX05EWF0s IEdGX1JFTEVBU0VfQ09VTlRfTEVOKTsKKyAgICAgICAgICAgICAgICAgaWYodG1wMzIgPiAwKQor ICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICBnZnNfbF9nZm9ya19sb2co R0xPQlVTX1NVQ0NFU1MsIDAsIAorKyAgICAgICAgICAgICAgICAgICAgZ2ZzX2xfZ2ZvcmtfbG9n KEdMT0JVU19TVUNDRVNTLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICJQaWQgJWQgcmV0 dXJuaW5nICVkIGJ5dGVzLlxuIiwgZnJvbV9waWQsIChpbnQpdG1wMzIpOworIAorICAgICAgICAg ICAgICAgICAgICAgZGlmZiA9IGVudHJ5LT50Y3BfYnVmZmVyX21lbSAtIHRtcDMyOworQEAgLTE3 MjYsNyArMTcyNiw3IEBAIG1haW4oCisgICAgIGdfZG9uZSA9IEdMT0JVU19GQUxTRTsKKyAKKyAg ICAgZ2xvYnVzX2hhc2h0YWJsZV9pbml0KAorLSAgICAgICAgJmdfZ2ZvcmtfYmVfdGFibGUsIAor KyAgICAgICAgJmdfZ2ZvcmtfYmVfdGFibGUsCisgICAgICAgICAyNTYsCisgICAgICAgICBnbG9i dXNfaGFzaHRhYmxlX3N0cmluZ19oYXNoLAorICAgICAgICAgZ2xvYnVzX2hhc2h0YWJsZV9zdHJp bmdfa2V5ZXEpOworQEAgLTIwMDgsNyArMjAwOCw3IEBAIGdmc19sX2dmb3JrX29wdHNfdXBkYXRl dGltZSgKKyAgICAgY2hhciAqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0LAorICAg ICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsCisgICAgIGludCAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9wYXJtc191c2VkKQorLXsgICAKKyt7Cisg ICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsKKyAgICAgaW50 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2M7CisgICAgIGludCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRtOworQEAgLTIxMDcsNyArMjEwNyw3IEBAIGdmc19sX2dm b3JrX29wdHNfbmljZV9zaGFyZSgKKyAgICAgY2hhciAqKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3B0LAorICAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcs CisgICAgIGludCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9wYXJtc191c2Vk KQorLXsgICAKKyt7CisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJl c3VsdDsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2M7CisgICAg IGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG47CitAQCAtMjEyMCwxNCArMjEy MCwxNCBAQCBnZnNfbF9nZm9ya19vcHRzX25pY2Vfc2hhcmUoCisgICAgICAgICAgICAgR0ZTX0dG T1JLX0VSUk9SX1BBUkFNRVRFUik7CisgICAgICAgICBnb3RvIGVycm9yX2Zvcm1hdDsKKyAgICAg fQorLSAgICAKKysKKyAgICAgZ2ZzX2xfZ2ZvcmtfbmljZV9zaGFyZV9jb3VudCA9IG47CisgICAg ICpvdXRfcGFybXNfdXNlZCA9IDE7CistICAgIAorKworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NF U1M7CisgZXJyb3JfZm9ybWF0OgorICAgICByZXR1cm4gcmVzdWx0OworLSAgICAKKysKKyB9Cisg CisgCitAQCAtMjIwNCw3ICsyMjA0LDcgQEAgZ2ZzX2dmb3JrX21hc3Rlcl9vcHRpb25zKAorICAg ICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAgIGludCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjOworICAgICBjaGFyICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlbnZfczsKKy0gICAgCisrCisgICAgIEdGU0dGb3JrRnVuY05h bWUoZ2ZzX2dmb3JrX21hc3Rlcl9vcHRpb25zKTsKKyAKKyAgICAgZ2xvYnVzX29wdGlvbnNfaW5p dCgKK2RpZmYgLS1naXQgYS9ncmlkZnRwL3NlcnZlci9zcmMvZ2xvYnVzX2lfZ2ZzX2NvbmZpZy5j IGIvZ3JpZGZ0cC9zZXJ2ZXIvc3JjL2dsb2J1c19pX2dmc19jb25maWcuYworaW5kZXggZDVlZTlh OWE3Li41NzM2N2FjNjQgMTAwNjQ0CistLS0gYS9ncmlkZnRwL3NlcnZlci9zcmMvZ2xvYnVzX2lf Z2ZzX2NvbmZpZy5jCisrKysgYi9ncmlkZnRwL3NlcnZlci9zcmMvZ2xvYnVzX2lfZ2ZzX2NvbmZp Zy5jCitAQCAtMTAzLDggKzEwMyw4IEBAIHR5cGVkZWYgc3RydWN0CisgCisgc3RhdGljIGdsb2J1 c19tdXRleF90ICAgICAgICAgICAgICAgICAgIGdsb2J1c19pX2dmc19jb25maWdfbXV0ZXg7Cisg Cistc3RhdGljIGNvbnN0IGdsb2J1c19sX2dmc19jb25maWdfb3B0aW9uX3Qgb3B0aW9uX2xpc3Rb XSA9IAorLXsgCisrc3RhdGljIGNvbnN0IGdsb2J1c19sX2dmc19jb25maWdfb3B0aW9uX3Qgb3B0 aW9uX2xpc3RbXSA9CisreworIHtOVUxMLCAiSW5mb3JtYXRpb25hbCBPcHRpb25zIiwgTlVMTCwg TlVMTCwgTlVMTCwgMCwgMCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgR0xPQlVTX0ZBTFNFLCBO VUxMfSwKKyAgeyJoZWxwIiwgImhlbHAiLCBOVUxMLCAiaGVscCIsICJoIiwgR0xPQlVTX0xfR0ZT X0NPTkZJR19CT09MLCBHTE9CVVNfRkFMU0UsIE5VTEwsCisgICAgICJTaG93IHVzYWdlIGluZm9y bWF0aW9uIGFuZCBleGl0LiIsIE5VTEwsIE5VTEwsR0xPQlVTX0ZBTFNFLCBOVUxMfSwKK0BAIC0x MzMsNyArMTMzLDcgQEAgc3RhdGljIGNvbnN0IGdsb2J1c19sX2dmc19jb25maWdfb3B0aW9uX3Qg b3B0aW9uX2xpc3RbXSA9CisgICAgICJEaXJlY3RvcnkgdG8gY2hkaXIgdG8gYWZ0ZXIgc3RhcnRp bmcuICBXaWxsIHVzZSAvIGlmIG5vdCBzZXQuICBOb3RlIHRoYXQgdGhpcyBpcyB0aGUgIgorICAg ICAiZGlyZWN0b3J5IG9mIHRoZSBwcm9jZXNzLCBub3QgdGhlIGNsaWVudCdzIGhvbWUgZGlyZWN0 b3J5LiIsIE5VTEwsIE5VTEwsR0xPQlVTX0ZBTFNFLCBOVUxMfSwKKyAgeyJ0aHJlYWRzIiwgInRo cmVhZHMiLCBOVUxMLCAidGhyZWFkcyIsIE5VTEwsIEdMT0JVU19MX0dGU19DT05GSUdfSU5ULCAw LCBOVUxMLAorLSAgICAiRW5hYmxlIHRocmVhZGVkIG9wZXJhdGlvbiBhbmQgc2V0IHRoZSBudW1i ZXIgb2YgdGhyZWFkcy4gIFRoZSBkZWZhdWx0IGlzIDAsIHdoaWNoICIgCisrICAgICJFbmFibGUg dGhyZWFkZWQgb3BlcmF0aW9uIGFuZCBzZXQgdGhlIG51bWJlciBvZiB0aHJlYWRzLiAgVGhlIGRl ZmF1bHQgaXMgMCwgd2hpY2ggIgorICAgICAiaXMgbm9uLXRocmVhZGVkLiAgV2hlbiB0aHJlYWRp bmcgaXMgcmVxdWlyZWQsIGEgdGhyZWFkIGNvdW50IG9mIDEgb3IgMiBzaG91bGQgIgorICAgICAi YmUgc3VmZmljaWVudC4iLCBOVUxMLCBOVUxMLCBHTE9CVVNfVFJVRSwgTlVMTH0sCisgIHsiZm9y ayIsICJmb3JrIiwgTlVMTCwgImZvcmsiLCAiZiIsIEdMT0JVU19MX0dGU19DT05GSUdfQk9PTCwg R0xPQlVTX1RSVUUsIE5VTEwsCitAQCAtMTQyLDkgKzE0Miw5IEBAIHN0YXRpYyBjb25zdCBnbG9i dXNfbF9nZnNfY29uZmlnX29wdGlvbl90IG9wdGlvbl9saXN0W10gPQorICAgICAiYWNjZXB0IGEg c2luZ2xlIGNvbm5lY3Rpb24sIGFuZCB0aGVuIGV4aXQuIiwgTlVMTCwgTlVMTCxHTE9CVVNfRkFM U0UsIE5VTEx9LAorICB7ImZvcmtfZmFsbGJhY2siLCAiZm9ya19mYWxsYmFjayIsIE5VTEwsICJm b3JrLWZhbGxiYWNrIiwgTlVMTCwgR0xPQlVTX0xfR0ZTX0NPTkZJR19CT09MLCBHTE9CVVNfRkFM U0UsIE5VTEwsCisgICAgIE5VTEwgLyogYXR0ZW1wdCB0byBydW4gbm9uLWZvcmtlZCBpZiBmb3Jr IGZhaWxzICovLCBOVUxMLCBOVUxMLCBHTE9CVVNfRkFMU0UsIE5VTEx9LAorLSB7InNpbmdsZSIs ICJzaW5nbGUiLCBOVUxMLCAic2luZ2xlIiwgIjEiLCBHTE9CVVNfTF9HRlNfQ09ORklHX0JPT0ws IEdMT0JVU19GQUxTRSwgTlVMTCwgCisrIHsic2luZ2xlIiwgInNpbmdsZSIsIE5VTEwsICJzaW5n bGUiLCAiMSIsIEdMT0JVU19MX0dGU19DT05GSUdfQk9PTCwgR0xPQlVTX0ZBTFNFLCBOVUxMLAor ICAgICAiRXhpdCBhZnRlciBhIHNpbmdsZSBjb25uZWN0aW9uLiIsIE5VTEwsIE5VTEwsR0xPQlVT X0ZBTFNFLCBOVUxMfSwKKy0geyJjaHJvb3RfcGF0aCIsICJjaHJvb3RfcGF0aCIsIE5VTEwsICJj aHJvb3QtcGF0aCIsIE5VTEwsIEdMT0JVU19MX0dGU19DT05GSUdfU1RSSU5HLCAwLCBOVUxMLCAK KysgeyJjaHJvb3RfcGF0aCIsICJjaHJvb3RfcGF0aCIsIE5VTEwsICJjaHJvb3QtcGF0aCIsIE5V TEwsIEdMT0JVU19MX0dGU19DT05GSUdfU1RSSU5HLCAwLCBOVUxMLAorICAgICAiUGF0aCB0byBi ZWNvbWUgdGhlIG5ldyByb290IGFmdGVyIGF1dGhlbnRpY2F0aW9uLiAgVGhpcyBwYXRoIG11c3Qg Y29udGFpbiBhIHZhbGlkICIKKyAgICAgImNlcnRpZmljYXRlIHN0cnVjdHVyZSwgL2V0Yy9wYXNz d2QsIGFuZCAvZXRjL2dyb3VwLiAgVGhlIGNvbW1hbmQgIgorICAgICAiZ2xvYnVzLWdyaWRmdHAt c2VydmVyLXNldHVwLWNocm9vdCBjYW4gaGVscCBjcmVhdGUgYSBzdWl0YWJsZSBkaXJlY3Rvcnkg c3RydWN0dXJlLiIsIE5VTEwsIE5VTEwsR0xPQlVTX0ZBTFNFLCBOVUxMfSwKK0BAIC0yODIsNyAr MjgyLDcgQEAgc3RhdGljIGNvbnN0IGdsb2J1c19sX2dmc19jb25maWdfb3B0aW9uX3Qgb3B0aW9u X2xpc3RbXSA9CisgICAgICJyZXBsYWNlZCBieSB0aGUgYXV0aGVudGljYXRlZCB1c2VyJ3MgaG9t ZSBkaXJlY3RvcnksIG9yIHRoZSAnLWhvbWUtZGlyJyBvcHRpb24sIGlmIHVzZWQuICIKKyAgICAg Ik5vdGUgdGhhdCBpZiB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgbm90IGFjY2Vzc2libGUsICd+JyB3 aWxsIGJlIHNldCB0byAnLycuICAiCisgICAgICJCeSBkZWZhdWx0IGFsbCBwYXRocyBhcmUgYWxs b3dlZCwgYW5kIGFjY2VzcyBjb250cm9sIGlzIGhhbmRsZWQgYnkgdGhlIE9TLiAiCistICAgICJJ biBhIHN0cmlwZWQgb3Igc3BsaXQgcHJvY2VzcyBjb25maWd1cmF0aW9uLCB0aGlzIHNob3VsZCBi ZSBzZXQgb24gYm90aCB0aGUgZnJvbnRlbmQgYW5kIGRhdGEgbm9kZXMuIiwgCisrICAgICJJbiBh IHN0cmlwZWQgb3Igc3BsaXQgcHJvY2VzcyBjb25maWd1cmF0aW9uLCB0aGlzIHNob3VsZCBiZSBz ZXQgb24gYm90aCB0aGUgZnJvbnRlbmQgYW5kIGRhdGEgbm9kZXMuIiwKKyAgICAgTlVMTCwgTlVM TCxHTE9CVVNfRkFMU0UsIE5VTEx9LAorICB7InJwX2ZvbGxvd19zeW1saW5rcyIsICJycF9mb2xs b3dfc3ltbGlua3MiLCBOVUxMLCAicnAtZm9sbG93LXN5bWxpbmtzIiwgTlVMTCwgR0xPQlVTX0xf R0ZTX0NPTkZJR19CT09MLCBHTE9CVVNfRkFMU0UsIE5VTEwsCisgICAgICJEbyBub3QgdmVyaWZ5 IHRoYXQgYSBzeW1saW5rIHBvaW50cyB0byBhbiBhbGxvd2VkIHBhdGggYmVmb3JlIGZvbGxvd2lu Zy4gIEJ5IGRlZmF1bHQsIHN5bWxpbmtzIGFyZSAiCitAQCAtMjkwLDcgKzI5MCw3IEBAIHN0YXRp YyBjb25zdCBnbG9idXNfbF9nZnNfY29uZmlnX29wdGlvbl90IG9wdGlvbl9saXN0W10gPQorICAg ICAid2lsbCBiZSBmb2xsb3dlZCBldmVuIGlmIHRoZXkgcG9pbnQgdG8gYSBwYXRoIHRoYXQgaXMg b3RoZXJ3aXNlIHJlc3RyaWN0ZWQuIiwgTlVMTCwgTlVMTCxHTE9CVVNfRkFMU0UsIE5VTEx9LAor ICB7ImFjbCIsICJhY2wiLCBOVUxMLCAiYWNsIiwgImVtIiwgR0xPQlVTX0xfR0ZTX0NPTkZJR19T VFJJTkcsIDAsIE5VTEwsCisgICAgICJBIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIEFDTCBvciBl dmVudCBtb2R1bGVzIHRvIGxvYWQuIiwKKy0gICAgTlVMTCwgTlVMTCxHTE9CVVNfRkFMU0UsIE5V TEx9LCAKKysgICAgTlVMTCwgTlVMTCxHTE9CVVNfRkFMU0UsIE5VTEx9LAorIHtOVUxMLCAiTG9n Z2luZyBPcHRpb25zIiwgTlVMTCwgTlVMTCwgTlVMTCwgMCwgMCwgTlVMTCwgTlVMTCwgTlVMTCwg TlVMTCxHTE9CVVNfRkFMU0UsIE5VTEx9LAorICB7ImxvZ19sZXZlbCIsICJsb2dfbGV2ZWwiLCBO VUxMLCAibG9nLWxldmVsIiwgImQiLCBHTE9CVVNfTF9HRlNfQ09ORklHX1NUUklORywgMCwgIkVS Uk9SIiwKKyAgICAgIkxvZyBsZXZlbC4gQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBsZXZlbHMg ZnJvbTogJ0VSUk9SLCBXQVJOLCBJTkZPLCBUUkFOU0ZFUiwgRFVNUCwgQUxMJy4gIgorQEAgLTQy Niw3ICs0MjYsNyBAQCBzdGF0aWMgY29uc3QgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19vcHRpb25fdCBv cHRpb25fbGlzdFtdID0KKyAgICAgInRvIHVuYXV0aGVudGljYXRlZCBjbGllbnRzLiIsIE5VTEws IE5VTEwsR0xPQlVTX0ZBTFNFLCBOVUxMfSwKKyAgeyJiYW5uZXJfYXBwZW5kIiwgImJhbm5lcl9h cHBlbmQiLCBOVUxMLCAiYmFubmVyLWFwcGVuZCIsIE5VTEwsIEdMT0JVU19MX0dGU19DT05GSUdf Qk9PTCwgR0xPQlVTX0ZBTFNFLCBOVUxMLAorICAgICAiV2hlbiB0aGlzIGlzIHNldCwgdGhlIG1l c3NhZ2Ugc2V0IGluIHRoZSAnYmFubmVyJyBvciAnYmFubmVyX2ZpbGUnIG9wdGlvbiAiCistICAg ICJ3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBkZWZhdWx0IGJhbm5lciBtZXNzYWdlIHJhdGhlciB0 aGFuIHJlcGxhY2luZyBpdC4iLCAKKysgICAgIndpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIGRlZmF1 bHQgYmFubmVyIG1lc3NhZ2UgcmF0aGVyIHRoYW4gcmVwbGFjaW5nIGl0LiIsCisgICAgIE5VTEws IE5VTEwsR0xPQlVTX0ZBTFNFLCBOVUxMfSwKKyAgeyJ2ZXJzaW9uX3RhZyIsICJ2ZXJzaW9uX3Rh ZyIsIE5VTEwsICJ2ZXJzaW9uLXRhZyIsIE5VTEwsIEdMT0JVU19MX0dGU19DT05GSUdfU1RSSU5H LCAwLCBOVUxMLAorICAgICAiQWRkIGFuIGlkZW50aWZ5aW5nIHN0cmluZyB0byB0aGUgZXhpc3Rp bmcgdG9vbGtpdCB2ZXJzaW9uLiAgVGhpcyBpcyBkaXNwbGF5ZWQgaW4gdGhlIGRlZmF1bHQgIgor QEAgLTQzOSwxMiArNDM5LDEyIEBAIHN0YXRpYyBjb25zdCBnbG9idXNfbF9nZnNfY29uZmlnX29w dGlvbl90IG9wdGlvbl9saXN0W10gPQorICB7ImxvYWRfZHNpX21vZHVsZSIsICJsb2FkX2RzaV9t b2R1bGUiLCBOVUxMLCAiZHNpIiwgTlVMTCwgR0xPQlVTX0xfR0ZTX0NPTkZJR19TVFJJTkcsIDAs IE5VTEwsCisgICAgICJEYXRhIFN0b3JhZ2UgSW50ZXJmYWNlIG1vZHVsZSB0byBsb2FkLiBGaWxl IGFuZCByZW1vdGUgbW9kdWxlcyBhcmUgZGVmaW5lZCBieSB0aGUgc2VydmVyLiAiCisgICAgICJJ ZiBub3Qgc2V0LCB0aGUgZmlsZSBtb2R1bGUgaXMgbG9hZGVkLCB1bmxlc3MgdGhlICdyZW1vdGUn IG9wdGlvbiBpcyBzcGVjaWZpZWQsIGluIHdoaWNoIGNhc2UgdGhlIHJlbW90ZSAiCistICAgICJt b2R1bGUgaXMgbG9hZGVkLiAgQW4gYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIHN0cmluZyBjYW4g YmUgcGFzc2VkIHRvIHRoZSBEU0kgdXNpbmcgdGhlIGZvcm1hdCAiIAorKyAgICAibW9kdWxlIGlz IGxvYWRlZC4gIEFuIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBzdHJpbmcgY2FuIGJlIHBhc3Nl ZCB0byB0aGUgRFNJIHVzaW5nIHRoZSBmb3JtYXQgIgorICAgICAiW21vZHVsZSBuYW1lXTpbY29u ZmlndXJhdGlvbiBzdHJpbmddIHRvIHRoaXMgb3B0aW9uLiAgVGhlIGZvcm1hdCBvZiB0aGUgY29u ZmlndXJhdGlvbiAiCisgICAgICJzdHJpbmcgaXMgZGVmaW5lZCBieSB0aGUgRFNJIGJlaW5nIGxv YWRlZC4iLCBOVUxMLCBOVUxMLEdMT0JVU19GQUxTRSwgTlVMTH0sCisgIHsiYWxsb3dlZF9tb2R1 bGVzIiwgImFsbG93ZWRfbW9kdWxlcyIsIE5VTEwsICJhbGxvd2VkLW1vZHVsZXMiLCBOVUxMLCBH TE9CVVNfTF9HRlNfQ09ORklHX1NUUklORywgMCwgTlVMTCwKKyAgICAgIkNvbW1hIHNlcGFyYXRl ZCBsaXN0IG9mIEVSRVQvRVNUTyBtb2R1bGVzIHRvIGFsbG93LCBhbmQgb3B0aW9uYWxseSBzcGVj aWZ5IGFuIGFsaWFzIGZvci4gIgorLSAgICAiRXhhbXBsZTogbW9kdWxlMSxhbGlhczI6bW9kdWxl Mixtb2R1bGUzIChtb2R1bGUyIHdpbGwgYmUgbG9hZGVkIHdoZW4gYSBjbGllbnQgYXNrcyBmb3Ig YWxpYXMyKS4iLCBOVUxMLCBOVUxMLEdMT0JVU19GQUxTRSwgTlVMTH0sIAorKyAgICAiRXhhbXBs ZTogbW9kdWxlMSxhbGlhczI6bW9kdWxlMixtb2R1bGUzIChtb2R1bGUyIHdpbGwgYmUgbG9hZGVk IHdoZW4gYSBjbGllbnQgYXNrcyBmb3IgYWxpYXMyKS4iLCBOVUxMLCBOVUxMLEdMT0JVU19GQUxT RSwgTlVMTH0sCisgIHsiZGNfd2hpdGVsaXN0IiwgImRjX3doaXRlbGlzdCIsIE5VTEwsICJkYy13 aGl0ZWxpc3QiLCBOVUxMLCBHTE9CVVNfTF9HRlNfQ09ORklHX1NUUklORywgMCwgTlVMTCwKKyAg ICAgIkEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZHJpdmVycyBhbGxvd2VkIG9uIHRoZSBuZXR3 b3JrIHN0YWNrLiIsIE5VTEwsIE5VTEwsR0xPQlVTX0ZBTFNFLCBOVUxMfSwKKyAgeyJmc193aGl0 ZWxpc3QiLCAiZnNfd2hpdGVsaXN0IiwgTlVMTCwgImZzLXdoaXRlbGlzdCIsIE5VTEwsIEdMT0JV U19MX0dGU19DT05GSUdfU1RSSU5HLCAwLCBOVUxMLAorQEAgLTQ4NCw3ICs0ODQsNyBAQCBzdGF0 aWMgY29uc3QgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19vcHRpb25fdCBvcHRpb25fbGlzdFtdID0KKyAg ICAgIlNldHMgb3B0aW9ucyB0aGF0IG1ha2Ugc2VydmVyIGVhc2llciB0byBkZWJ1Zy4gIEZvcmNl cyBuby1mb3JrLCBuby1jaGRpciwgIgorICAgICAiYW5kIGFsbG93cyBjb3JlIGR1bXBzIG9uIGJh ZCBzaWduYWxzIGluc3RlYWQgb2YgZXhpdGluZyBjbGVhbmx5LiAiCisgICAgICJOb3QgcmVjb21t ZW5kZWQgZm9yIHByb2R1Y3Rpb24gc2VydmVycy4gIE5vdGUgdGhhdCBub24tZm9ya2VkIHNlcnZl cnMgcnVubmluZyAiCistICAgICJhcyAncm9vdCcgd2lsbCBvbmx5IGFjY2VwdCBhIHNpbmdsZSBj b25uZWN0aW9uLCBhbmQgdGhlbiBleGl0LiIsIE5VTEwsIE5VTEwsR0xPQlVTX0ZBTFNFLCBOVUxM fSwgCisrICAgICJhcyAncm9vdCcgd2lsbCBvbmx5IGFjY2VwdCBhIHNpbmdsZSBjb25uZWN0aW9u LCBhbmQgdGhlbiBleGl0LiIsIE5VTEwsIE5VTEwsR0xPQlVTX0ZBTFNFLCBOVUxMfSwKKyAgeyJw aWRmaWxlIiwgInBpZGZpbGUiLCBOVUxMLCAicGlkZmlsZSIsIE5VTEwsIEdMT0JVU19MX0dGU19D T05GSUdfU1RSSU5HLCAwLCBOVUxMLAorICAgICAiV3JpdGUgUElEIG9mIHRoZSBHcmlkRlRQIHNl cnZlciB0byB0aGlzIHBhdGguIE1heSBjb250YWluIHZhcmlhYmxlIHJlZmVyZW5jZXMgdG8gJHts b2NhbHN0YXRlZGlyfSIsIE5VTEwsIE5VTEwsIEdMT0JVU19GQUxTRSwgTlVMTH0sCisgCitAQCAt NDk4LDcgKzQ5OCw3IEBAIHN0YXRpYyBjb25zdCBnbG9idXNfbF9nZnNfY29uZmlnX29wdGlvbl90 IG9wdGlvbl9saXN0W10gPQorICB7InNsb3dfZGlybGlzdCIsICJzbG93X2Rpcmxpc3QiLCBOVUxM LCBOVUxMLCBOVUxMLCBHTE9CVVNfTF9HRlNfQ09ORklHX0lOVCwgMCwgTlVMTCwKKyAgICAgTlVM TCwgTlVMTCwgTlVMTCxHTE9CVVNfRkFMU0UsIE5VTEx9LCAvKiBmYWtlIHN0YXQgcmVzcG9uc2Vz IG9uIGRpcnMgd2l0aCBtb3JlIHRoYW4gdGhpcyBtYW55IGVudHJpZXMgKi8KKyAgeyJjaGVja3N1 bV90aHJvdHRsZSIsICJjaGVja3N1bV90aHJvdHRsZSIsIE5VTEwsIE5VTEwsIE5VTEwsIEdMT0JV U19MX0dGU19DT05GSUdfSU5ULCAwLCBOVUxMLAorLSAgICBOVUxMLCBOVUxMLCBOVUxMLEdMT0JV U19GQUxTRSwgTlVMTH0sIC8qIGRlbGF5IGNoZWNrc3VtIHJlYWRzIGJ5IHRoaXMgbWFueSBtaWNy b3NlY29uZHMgcGVyIGJsb2Nrc2l6ZSdkIHJlYWQsIAorKyAgICBOVUxMLCBOVUxMLCBOVUxMLEdM T0JVU19GQUxTRSwgTlVMTH0sIC8qIGRlbGF5IGNoZWNrc3VtIHJlYWRzIGJ5IHRoaXMgbWFueSBt aWNyb3NlY29uZHMgcGVyIGJsb2Nrc2l6ZSdkIHJlYWQsCisgICAgICogZWZmZWN0aXZlbHkgc2V0 dGluZyBhIGZsb29yIG9uIHRoZSBjaGVja3N1bSByYXRlIHRvIHNpemUvYmxvY2tzaXplKmRlbGF5 IHBlciBzaXplICovCisgIHsidGVzdF9hY2wiLCBOVUxMLCBOVUxMLCBOVUxMLCAidGVzdGFjbCIs IEdMT0JVU19MX0dGU19DT05GSUdfU1RSSU5HLCAwLCBOVUxMLAorICAgICBOVUxMIC8qIGxvYWQg YW5kIHBhc3MgYXJndW1lbnRzIHRvIHRoZSB0ZXN0IGFjbCBtb2R1bGUuIHRoZSBzdHJpbmcKK0BA IC01NTQsMTMgKzU1NCwxMyBAQCBzdGF0aWMgY29uc3QgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19vcHRp b25fdCBvcHRpb25fbGlzdFtdID0KKyAgICAgTlVMTCAvKiBEYXRhIG5vZGUgY29ubmVjdGlvbiBj b3VudC4gKi8sIE5VTEwsIE5VTEwsIEdMT0JVU19UUlVFLCBOVUxMfSwKKyAgeyJ0Y3BfbWVtX2xp bWl0IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgR0xPQlVTX0xfR0ZTX0NPTkZJR19JTlQsIDAs IE5VTEwsCisgICAgIE5VTEwgLyogVENQIG1lbW9yeSBsaW1pdCAqLywgTlVMTCwgTlVMTCwgR0xP QlVTX1RSVUUsIE5VTEx9LAorLSB7Im1heF9idyIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIEdM T0JVU19MX0dGU19DT05GSUdfSU5ULCAwLCBOVUxMLCAKKysgeyJtYXhfYnciLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMLCBHTE9CVVNfTF9HRlNfQ09ORklHX0lOVCwgMCwgTlVMTCwKKyAgICAgTlVM TCwgTlVMTCwgTlVMTCwgR0xPQlVTX1RSVUUsIE5VTEx9LAorLSB7ImN1cnJlbnRfYnciLCBOVUxM LCBOVUxMLCBOVUxMLCBOVUxMLCBHTE9CVVNfTF9HRlNfQ09ORklHX0lOVCwgMCwgTlVMTCwgCisr IHsiY3VycmVudF9idyIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIEdMT0JVU19MX0dGU19DT05G SUdfSU5ULCAwLCBOVUxMLAorICAgICBOVUxMLCBOVUxMLCBOVUxMLCBHTE9CVVNfVFJVRSwgTlVM TH0sCisgIHsiZmlsZV90cmFuc2Zlcl9jb3VudCIsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIEdM T0JVU19MX0dGU19DT05GSUdfSU5ULCAwLCBOVUxMLAorICAgICBOVUxMLCBOVUxMLCBOVUxMLCBH TE9CVVNfVFJVRSwgTlVMTH0sCistIHsiYnl0ZV90cmFuc2Zlcl9jb3VudCIsIE5VTEwsIE5VTEws IE5VTEwsIE5VTEwsIEdMT0JVU19MX0dGU19DT05GSUdfU1RSSU5HLCAwLCBOVUxMLCAKKysgeyJi eXRlX3RyYW5zZmVyX2NvdW50IiwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgR0xPQlVTX0xfR0ZT X0NPTkZJR19TVFJJTkcsIDAsIE5VTEwsCisgICAgIE5VTEwsIE5VTEwsIE5VTEwsIEdMT0JVU19U UlVFLCBOVUxMfSwKKyB7TlVMTCwgLyogRU5EICovIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIDAs IDAsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsR0xPQlVTX0ZBTFNFLCBOVUxMfQorIH07CitAQCAt NTczLDcgKzU3Myw3IEBAIHN0YXRpYyBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICBn bG9idXNfbF9nZnNfcG9ydF9yYW5nZSA9IE5VTEw7Cisgc3RhdGljIGdsb2J1c19ib29sX3QgICAg ICAgICAgICAgICAgICAgIGdsb2J1c19sX2dmc19jb21tb25fbG9hZGVkID0gR0xPQlVTX0ZBTFNF OworIHN0YXRpYyBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAgICBnbG9idXNfbF9nZnNf aXNfd29ya2VyID0gR0xPQlVTX0ZBTFNFOworIAorLS8qIGZvciBzdHJpbmcgb3B0aW9ucywgc2V0 dGluZyB3aXRoIGFuIGludF92YWwgb2YgMSB3aWxsIGZyZWUgdGhlIG9sZCBvbmUgKi8gCisrLyog Zm9yIHN0cmluZyBvcHRpb25zLCBzZXR0aW5nIHdpdGggYW4gaW50X3ZhbCBvZiAxIHdpbGwgZnJl ZSB0aGUgb2xkIG9uZSAqLworIHN0YXRpYworIGludAorIGdsb2J1c19sX2dmc19jb25maWdfc2V0 KAorQEAgLTU4MywyNCArNTgzLDI0IEBAIGdsb2J1c19sX2dmc19jb25maWdfc2V0KAorIHsKKyAg ICAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19vcHRpb25fdCAqICAgICAgb3B0aW9uOworICAgICBpbnQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOworLSAgICBpbnQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByYzsgCisrICAgIGludCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJjOworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dmc19jb25maWdfc2V0 KTsKKyAgICAgR2xvYnVzR0ZTRGVidWdFbnRlcigpOworIAorICAgICBvcHRpb24gPSAoZ2xvYnVz X2xfZ2ZzX2NvbmZpZ19vcHRpb25fdCAqKSBnbG9idXNfaGFzaHRhYmxlX3JlbW92ZSgKKy0gICAg ICAgICAgICAmb3B0aW9uX3RhYmxlLCBvcHRpb25fbmFtZSk7ICAgCisrICAgICAgICAgICAgJm9w dGlvbl90YWJsZSwgb3B0aW9uX25hbWUpOworICAgICBpZighb3B0aW9uKQorICAgICB7CisgICAg ICAgICBvcHRpb24gPSAoZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19vcHRpb25fdCAqKQorICAgICAgICAg ICAgIGdsb2J1c19jYWxsb2MoMSwgc2l6ZW9mKGdsb2J1c19sX2dmc19jb25maWdfb3B0aW9uX3Qp KTsKKy0gICAgICAgIGZvcihpID0gMDsgCisrICAgICAgICBmb3IoaSA9IDA7CisgICAgICAgICAg ICAgaSA8IG9wdGlvbl9jb3VudCAmJiBvcHRpb25fbGlzdFtpXS5vcHRpb25fbmFtZSAmJgorLSAg ICAgICAgICAgICAgICBzdHJjbXAob3B0aW9uX25hbWUsIG9wdGlvbl9saXN0W2ldLm9wdGlvbl9u YW1lKTsgCisrICAgICAgICAgICAgICAgIHN0cmNtcChvcHRpb25fbmFtZSwgb3B0aW9uX2xpc3Rb aV0ub3B0aW9uX25hbWUpOworICAgICAgICAgICAgIGkrKyk7CisgICAgICAgICBpZihpID09IG9w dGlvbl9jb3VudCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBnb3RvIGVycm9yOworLSAgICAg ICAgfSAgICAKKysgICAgICAgIH0KKyAgICAgICAgIG1lbWNweShvcHRpb24sICZvcHRpb25fbGlz dFtpXSwgc2l6ZW9mKGdsb2J1c19sX2dmc19jb25maWdfb3B0aW9uX3QpKTsKKyAgICAgfQorICAg ICBzd2l0Y2gob3B0aW9uLT50eXBlKQorQEAgLTYzNiw3ICs2MzYsNyBAQCBnbG9idXNfbF9nZnNf Y29uZmlnX3NldCgKKyBlcnJvcjoKKyAgICAgZ2xvYnVzX2ZyZWUob3B0aW9uKTsKKyAgICAgR2xv YnVzR0ZTRGVidWdFeGl0V2l0aEVycm9yKCk7CistICAgIHJldHVybiAxOyAgICAgICAgICAgICAK KysgICAgcmV0dXJuIDE7CisgfQorIAorICNkZWZpbmUgR0xPQlVTX0xfR0ZTX0xJTkVCVUZMRU4g MTAyNAorQEAgLTY2OCw3ICs2NjgsNyBAQCBnbG9idXNfbF9nZnNfY29uZmlnX2xvYWRfY29uZmln X2ZpbGUoCisgICAgICAgICBHbG9idXNHRlNEZWJ1Z0V4aXRXaXRoRXJyb3IoKTsKKyAgICAgICAg IHJldHVybiAtMjsgLyogWFhYIGNvbnN0cnVjdCByZWFsIGVycm9yICovCisgICAgIH0KKy0gICAg Z2xvYnVzX2xfZ2ZzX2NvbmZpZ19zZXQoImxvYWRlZF9jb25maWciLCAwLCBnbG9idXNfbGliY19z dHJkdXAoZmlsZW5hbWUpKTsgIAorKyAgICBnbG9idXNfbF9nZnNfY29uZmlnX3NldCgibG9hZGVk X2NvbmZpZyIsIDAsIGdsb2J1c19saWJjX3N0cmR1cChmaWxlbmFtZSkpOworIAorICAgICBsaW5l X251bSA9IDA7CisgICAgIGxpbmVidWYgPSBnbG9idXNfbWFsbG9jKGxpbmVidWZsZW4pOworQEAg LTY4Niw3ICs2ODYsNyBAQCBnbG9idXNfbF9nZnNfY29uZmlnX2xvYWRfY29uZmlnX2ZpbGUoCisg ICAgIHsKKyAgICAgICAgIGdvdG8gZXJyb3JfbWVtOworICAgICB9CistICAgIAorKworICAgICB3 aGlsZShmZ2V0cyhsaW5lYnVmLCBsaW5lYnVmbGVuLCBmcHRyKSAhPSBOVUxMKQorICAgICB7Cisg ICAgICAgICBwID0gbGluZWJ1ZjsKK0BAIC03MDQsNyArNzA0LDcgQEAgZ2xvYnVzX2xfZ2ZzX2Nv bmZpZ19sb2FkX2NvbmZpZ19maWxlKAorICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9t ZW07CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgc3RybmNhdChsaW5lYnVm LCBwYXJ0X2xpbmUsIGxpbmVidWZsZW4pOworLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAg ICAgICAgICAgb3B0aW9uYnVmID0gZ2xvYnVzX3JlYWxsb2Mob3B0aW9uYnVmLCBsaW5lYnVmbGVu KTsKKyAgICAgICAgICAgICAgICAgaWYoIW9wdGlvbmJ1ZikKKyAgICAgICAgICAgICAgICAgewor QEAgLTcxOSw3ICs3MTksNyBAQCBnbG9idXNfbF9nZnNfY29uZmlnX2xvYWRfY29uZmlnX2ZpbGUo CisgICAgICAgICB9CisgICAgICAgICBsaW5lX251bSsrOworICAgICAgICAgcCA9IGxpbmVidWY7 CistICAgICAgICBvcHRsZW4gPSAwOyAgICAgICAgICAgICAgIAorKyAgICAgICAgb3B0bGVuID0g MDsKKyAgICAgICAgIHdoaWxlKCpwICYmIGlzc3BhY2UoKnApKQorICAgICAgICAgeworICAgICAg ICAgICAgIHArKzsKK0BAIC03MzEsMTEgKzczMSwxMSBAQCBnbG9idXNfbF9nZnNfY29uZmlnX2xv YWRfY29uZmlnX2ZpbGUoCisgICAgICAgICBpZigqcCA9PSAnIycpCisgICAgICAgICB7CisgICAg ICAgICAgICAgY29udGludWU7CistICAgICAgICB9ICAgICAgICAKKysgICAgICAgIH0KKyAgICAg ICAgIGlmKCpwID09ICckJykKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBjb250aW51ZTsKKy0g ICAgICAgIH0gICAgICAgIAorKyAgICAgICAgfQorIAorICAgICAgICAgaWYoKnAgPT0gJyInKQor ICAgICAgICAgeworQEAgLTc0NSwxNCArNzQ1LDE0IEBAIGdsb2J1c19sX2dmc19jb25maWdfbG9h ZF9jb25maWdfZmlsZSgKKyAgICAgICAgIGVsc2UKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBy YyA9IHNzY2FuZihwLCAiJXMiLCBvcHRpb25idWYpOworLSAgICAgICAgfSAgICAgICAgCisrICAg ICAgICB9CisgICAgICAgICBpZihyYyAhPSAxKQorLSAgICAgICAgeyAgIAorKyAgICAgICAgewor ICAgICAgICAgICAgIGdvdG8gZXJyb3JfcGFyc2U7CisgICAgICAgICB9CisgICAgICAgICBvcHRs ZW4gKz0gc3RybGVuKG9wdGlvbmJ1Zik7CisgICAgICAgICBwID0gcCArIG9wdGxlbjsKKy0gICAg ICAgICAgICAgICAKKysKKyAgICAgICAgIG9wdGxlbiA9IDA7CisgICAgICAgICB3aGlsZSgqcCAm JiBpc3NwYWNlKCpwKSkKKyAgICAgICAgIHsKK0BAIC03NjYsMTMgKzc2NiwxMyBAQCBnbG9idXNf bF9nZnNfY29uZmlnX2xvYWRfY29uZmlnX2ZpbGUoCisgICAgICAgICBlbHNlCisgICAgICAgICB7 CisgICAgICAgICAgICAgcmMgPSBzc2NhbmYocCwgIiVzIiwgdmFsdWVidWYpOworLSAgICAgICAg fSAgICAgICAgCisrICAgICAgICB9CisgICAgICAgICBpZihyYyAhPSAxKQorLSAgICAgICAgeyAg IAorKyAgICAgICAgeworICAgICAgICAgICAgIGdvdG8gZXJyb3JfcGFyc2U7CistICAgICAgICB9 ICAgICAgICAKKysgICAgICAgIH0KKyAgICAgICAgIG9wdGxlbiArPSBzdHJsZW4odmFsdWVidWYp OworLSAgICAgICAgcCA9IHAgKyBvcHRsZW47ICAgICAgICAKKysgICAgICAgIHAgPSBwICsgb3B0 bGVuOworICAgICAgICAgd2hpbGUoKnAgJiYgaXNzcGFjZSgqcCkpCisgICAgICAgICB7CisgICAg ICAgICAgICAgcCsrOworQEAgLTc4MSw3ICs3ODEsNyBAQCBnbG9idXNfbF9nZnNfY29uZmlnX2xv YWRfY29uZmlnX2ZpbGUoCisgICAgICAgICB7CisgICAgICAgICAgICAgZ290byBlcnJvcl9wYXJz ZTsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgZm91bmQgPSBHTE9CVVNfRkFM U0U7CisgICAgICAgICBmb3IoaSA9IDA7ICFmb3VuZCAmJiBpIDwgb3B0aW9uX2NvdW50OyBpKysp CisgICAgICAgICB7CitAQCAtNzg5LDE2ICs3ODksMTYgQEAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19s b2FkX2NvbmZpZ19maWxlKAorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgY29udGlu dWU7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGlmKCFvcHRpb25fbGlzdFtpXS5jb25m aWdmaWxlX29wdGlvbiB8fCAKKysgICAgICAgICAgICBpZighb3B0aW9uX2xpc3RbaV0uY29uZmln ZmlsZV9vcHRpb24gfHwKKyAgICAgICAgICAgICAgICAgc3RyY21wKG9wdGlvbmJ1Ziwgb3B0aW9u X2xpc3RbaV0uY29uZmlnZmlsZV9vcHRpb24pKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIAorKworICAgICAg ICAgICAgIGZvdW5kID0gR0xPQlVTX1RSVUU7CistICAgICAgICAgICAgCisrCisgICAgICAgICAg ICAgb3B0aW9uID0gKGdsb2J1c19sX2dmc19jb25maWdfb3B0aW9uX3QgKikgZ2xvYnVzX2hhc2h0 YWJsZV9yZW1vdmUoCistICAgICAgICAgICAgICAgICAgICAmb3B0aW9uX3RhYmxlLCBvcHRpb25f bGlzdFtpXS5vcHRpb25fbmFtZSk7ICAgCisrICAgICAgICAgICAgICAgICAgICAmb3B0aW9uX3Rh YmxlLCBvcHRpb25fbGlzdFtpXS5vcHRpb25fbmFtZSk7CisgICAgICAgICAgICAgaWYoIW9wdGlv bikKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIG9wdGlvbiA9IChnbG9idXNfbF9n ZnNfY29uZmlnX29wdGlvbl90ICopCitAQCAtODE4LDE5ICs4MTgsMTkgQEAgZ2xvYnVzX2xfZ2Zz X2NvbmZpZ19sb2FkX2NvbmZpZ19maWxlKAorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgZ2xv YnVzX2dmc19sb2dfZXhpdF9tZXNzYWdlKCJWYWx1ZSBmb3IgJXMgbXVzdCBiZSAwIG9yIDEuXG4i LCAKKysgICAgICAgICAgICAgICAgICAgIGdsb2J1c19nZnNfbG9nX2V4aXRfbWVzc2FnZSgiVmFs dWUgZm9yICVzIG11c3QgYmUgMCBvciAxLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBv cHRpb25fbGlzdFtpXS5vcHRpb25fbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICBnb3RvIGVy cm9yX3BhcnNlOworLSAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAKKysgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgIGNh c2UgR0xPQlVTX0xfR0ZTX0NPTkZJR19JTlQ6CisgICAgICAgICAgICAgICAgIHJjID0gZ2xvYnVz X2FyZ3NfYnl0ZXN0cl90b19udW0odmFsdWVidWYsICZ0bXBfb2ZmKTsKKyAgICAgICAgICAgICAg ICAgaWYocmMgIT0gMCkKKyAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAg Z2xvYnVzX2dmc19sb2dfZXhpdF9tZXNzYWdlKCJJbnZhbGlkIHZhbHVlIGZvciAlc1xuIiwgCisr ICAgICAgICAgICAgICAgICAgICBnbG9idXNfZ2ZzX2xvZ19leGl0X21lc3NhZ2UoIkludmFsaWQg dmFsdWUgZm9yICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbl9saXN0W2ld Lm9wdGlvbl9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfcGFyc2U7Cist ICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAKKysgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgICBvcHRpb24tPmludF92YWx1ZSA9IChpbnQpIHRtcF9vZmY7CisgICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgY2FzZSBHTE9CVVNfTF9HRlNfQ09O RklHX1NUUklORzoKK0BAIC04NDIsNyArODQyLDcgQEAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19sb2Fk X2NvbmZpZ19maWxlKAorICAgICAgICAgICAgIHJjID0gZ2xvYnVzX2hhc2h0YWJsZV9pbnNlcnQo Jm9wdGlvbl90YWJsZSwKKyAgICAgICAgICAgICAgICAgb3B0aW9uLT5vcHRpb25fbmFtZSwKKyAg ICAgICAgICAgICAgICAgKHZvaWQgKikgb3B0aW9uKTsKKy0gICAgICAgICAgICAKKysKKyAgICAg ICAgICAgICBpZihyYykKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIC8qIFhYWCBl cnJvciwgbG9nIHNvbWV0aGluZyAqLworQEAgLTg1MSwyNCArODUxLDI0IEBAIGdsb2J1c19sX2dm c19jb25maWdfbG9hZF9jb25maWdfZmlsZSgKKyAgICAgICAgIGlmKCFmb3VuZCkKKyAgICAgICAg IHsKKyAgICAgICAgICAgICBnbG9idXNfZ2ZzX2xvZ19leGl0X21lc3NhZ2UoIlByb2JsZW0gcGFy c2luZyBjb25maWcgZmlsZSAlczogbGluZSAlZC4gIgorLSAgICAgICAgICAgICAgICAiVW5rbm93 biBvcHRpb24gJyVzJy5cbiIsIAorKyAgICAgICAgICAgICAgICAiVW5rbm93biBvcHRpb24gJyVz Jy5cbiIsCisgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lX251bSwgb3B0aW9uYnVmKTsK KyAgICAgICAgICAgICBnb3RvIGVycm9yX3BhcmFtOworICAgICAgICAgfQorICAgICB9CisgCisg ICAgIGZjbG9zZShmcHRyKTsKKy0gICAgCisrCisgICAgIGdsb2J1c19mcmVlKGxpbmVidWYpOwor ICAgICBnbG9idXNfZnJlZSh2YWx1ZWJ1Zik7CisgICAgIGdsb2J1c19mcmVlKG9wdGlvbmJ1Zik7 CistICAgIAorKworICAgICBHbG9idXNHRlNEZWJ1Z0V4aXQoKTsKKyAgICAgcmV0dXJuIEdMT0JV U19TVUNDRVNTOworIAorIGVycm9yX3BhcnNlOgorICAgICBmY2xvc2UoZnB0cik7CistICAgIGds b2J1c19nZnNfbG9nX2V4aXRfbWVzc2FnZSgiUHJvYmxlbSBwYXJzaW5nIGNvbmZpZyBmaWxlICVz OiBsaW5lICVkLlxuIiwgCisrICAgIGdsb2J1c19nZnNfbG9nX2V4aXRfbWVzc2FnZSgiUHJvYmxl bSBwYXJzaW5nIGNvbmZpZyBmaWxlICVzOiBsaW5lICVkLlxuIiwKKyAgICAgICAgIGZpbGVuYW1l LCBsaW5lX251bSk7CisgZXJyb3JfcGFyYW06CisgZXJyb3JfbWVtOgorQEAgLTg3OCw5ICs4Nzgs OSBAQCBlcnJvcl9tZW06CisgCisgfQorIAorLS8qIGhhbmRsZSBvcHRpb25zIG5lZWRlZCBiZWZv cmUgbW9kdWxlIGluaXRzLiAgCisrLyogaGFuZGxlIG9wdGlvbnMgbmVlZGVkIGJlZm9yZSBtb2R1 bGUgaW5pdHMuCisgICAgIG5vIHJldHVybiAtIGVycm9ycyBnZXQgY2F1Z2h0IG9uIG5leHQgcGFz cyAqLworLXN0YXRpYyAKKytzdGF0aWMKKyB2b2lkCisgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19wYXJz ZV9wcmVpbml0X29wdCgKKyAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGluZSwKK0BAIC04ODksMTUgKzg4OSwxNSBAQCBnbG9idXNfbF9nZnNfY29uZmlnX3BhcnNlX3By ZWluaXRfb3B0KAorIHsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cmM7CisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBsaW5lOwor LSAgICAKKysKKyAgICAgaWYoKHJjID0gc3NjYW5mKHAsICIlcyIsIG9wdGlvbmJ1ZikpID09IDEp CisgICAgIHsKKy0gICAgICAgIGlmKCFnbG9idXNfbF9nZnNfaXNfd29ya2VyICYmIAorKyAgICAg ICAgaWYoIWdsb2J1c19sX2dmc19pc193b3JrZXIgJiYKKyAgICAgICAgICAgICAoIXN0cmNtcChv cHRpb25idWYsICJpbmV0ZCIpIHx8ICFzdHJjbXAob3B0aW9uYnVmLCAiZGVidWciKSB8fAorICAg ICAgICAgICAgICFzdHJjbXAob3B0aW9uYnVmLCAic3NoIikgfHwgIXN0cmNtcChvcHRpb25idWYs ICJmb3JrIikpKQorICAgICAgICAgeworICAgICAgICAgICAgIHAgPSBwICsgc3RybGVuKG9wdGlv bmJ1Zik7CistICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgIHdoaWxlKCpwICYm IGlzc3BhY2UoKnApKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgcCsrOworQEAg LTkwOSw3ICs5MDksNyBAQCBnbG9idXNfbF9nZnNfY29uZmlnX3BhcnNlX3ByZWluaXRfb3B0KAor ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHJjID0g c3NjYW5mKHAsICIlcyIsIHZhbHVlYnVmKTsKKy0gICAgICAgICAgICB9ICAKKysgICAgICAgICAg ICB9CisgICAgICAgICAgICAgaWYocmMgPT0gMSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgIGdsb2J1c19sX2dmc19pc193b3JrZXIgPSBhdG9pKHZhbHVlYnVmKTsKK0BAIC05MjIs NyArOTIyLDcgQEAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19wYXJzZV9wcmVpbml0X29wdCgKKyAgICAg ICAgIGlmKGdsb2J1c19sX2dmc19udW1fdGhyZWFkcyA9PSAtMSAmJiAhc3RyY21wKG9wdGlvbmJ1 ZiwgInRocmVhZHMiKSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBwID0gcCArIHN0cmxlbihv cHRpb25idWYpOworLSAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICB3aGlsZSgq cCAmJiBpc3NwYWNlKCpwKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHArKzsK K0BAIC05MzQsNyArOTM0LDcgQEAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19wYXJzZV9wcmVpbml0X29w dCgKKyAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBy YyA9IHNzY2FuZihwLCAiJXMiLCB2YWx1ZWJ1Zik7CistICAgICAgICAgICAgfSAgCisrICAgICAg ICAgICAgfQorICAgICAgICAgICAgIGlmKHJjID09IDEpCisgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICBnbG9idXNfbF9nZnNfbnVtX3RocmVhZHMgPSBhdG9pKHZhbHVlYnVmKTsKK0BA IC05NDMsNyArOTQzLDcgQEAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19wYXJzZV9wcmVpbml0X29wdCgK KyAgICAgICAgIGlmKCFnbG9idXNfbF9nZnNfcG9ydF9yYW5nZSAmJiAhc3RyY21wKG9wdGlvbmJ1 ZiwgInBvcnRfcmFuZ2UiKSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBwID0gcCArIHN0cmxl bihvcHRpb25idWYpOworLSAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICB3aGls ZSgqcCAmJiBpc3NwYWNlKCpwKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHAr KzsKK0BAIC05NTUsNyArOTU1LDcgQEAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19wYXJzZV9wcmVpbml0 X29wdCgKKyAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICByYyA9IHNzY2FuZihwLCAiJXMiLCB2YWx1ZWJ1Zik7CistICAgICAgICAgICAgfSAgCisrICAg ICAgICAgICAgfQorICAgICAgICAgICAgIGlmKHJjID09IDEpCisgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICBzZXRlbnYoIkdMT0JVU19UQ1BfUE9SVF9SQU5HRSIsIHZhbHVlYnVmLCAx KTsKK0BAIC0xMDIyLDcgKzEwMjIsNyBAQCBnbG9idXNfbF9nZnNfY29uZmlnX2xvYWRfZW52c19m cm9tX2ZpbGUoCisgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX21lbTsKKyAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICBzdHJuY2F0KGxpbmVidWYsIHBhcnRfbGluZSwg bGluZWJ1Zmxlbik7CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICBvcHRp b25idWYgPSByZWFsbG9jKG9wdGlvbmJ1ZiwgbGluZWJ1Zmxlbik7CisgICAgICAgICAgICAgICAg IGlmKCFvcHRpb25idWYpCisgICAgICAgICAgICAgICAgIHsKK0BAIC0xMDM3LDEyICsxMDM3LDEy IEBAIGdsb2J1c19sX2dmc19jb25maWdfbG9hZF9lbnZzX2Zyb21fZmlsZSgKKyAgICAgICAgIH0K KyAgICAgICAgIGxpbmVfbnVtKys7CisgICAgICAgICBwID0gbGluZWJ1ZjsKKy0gICAgICAgIG9w dGxlbiA9IDA7ICAgICAgICAgICAgICAgCisrICAgICAgICBvcHRsZW4gPSAwOworICAgICAgICAg d2hpbGUoKnAgJiYgaXNzcGFjZSgqcCkpCisgICAgICAgICB7CisgICAgICAgICAgICAgcCsrOwor ICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgIC8qIHBhcnNlIHNvbWUg bm9uLWVudiBvcHRpb25zICovCisgICAgICAgICBpZigqcCAhPSAnJCcpCisgICAgICAgICB7CitA QCAtMTA1MCwxNSArMTA1MCwxNSBAQCBnbG9idXNfbF9nZnNfY29uZmlnX2xvYWRfZW52c19mcm9t X2ZpbGUoCisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9CisgICAgICAgICBwKys7 CistICAgICAgICAKKysKKyAgICAgICAgIHJjID0gc3NjYW5mKHAsICIlcyIsIG9wdGlvbmJ1Zik7 CisgICAgICAgICBpZihyYyAhPSAxKQorLSAgICAgICAgeyAgIAorKyAgICAgICAgeworICAgICAg ICAgICAgIGdvdG8gZXJyb3JfcGFyc2U7CisgICAgICAgICB9CisgICAgICAgICBvcHRsZW4gKz0g c3RybGVuKG9wdGlvbmJ1Zik7CisgICAgICAgICBwID0gcCArIG9wdGxlbjsKKy0gICAgICAgICAg ICAgICAKKysKKyAgICAgICAgIG9wdGxlbiA9IDA7CisgICAgICAgICB3aGlsZSgqcCAmJiBpc3Nw YWNlKCpwKSkKKyAgICAgICAgIHsKK0BAIC0xMDcyLDEzICsxMDcyLDEzIEBAIGdsb2J1c19sX2dm c19jb25maWdfbG9hZF9lbnZzX2Zyb21fZmlsZSgKKyAgICAgICAgIGVsc2UKKyAgICAgICAgIHsK KyAgICAgICAgICAgICByYyA9IHNzY2FuZihwLCAiJXMiLCB2YWx1ZWJ1Zik7CistICAgICAgICB9 ICAgICAgICAKKysgICAgICAgIH0KKyAgICAgICAgIGlmKHJjICE9IDEpCistICAgICAgICB7ICAg CisrICAgICAgICB7CisgICAgICAgICAgICAgZ290byBlcnJvcl9wYXJzZTsKKy0gICAgICAgIH0g ICAgICAgIAorKyAgICAgICAgfQorICAgICAgICAgb3B0bGVuICs9IHN0cmxlbih2YWx1ZWJ1Zik7 CistICAgICAgICBwID0gcCArIG9wdGxlbjsgICAgICAgIAorKyAgICAgICAgcCA9IHAgKyBvcHRs ZW47CisgICAgICAgICB3aGlsZSgqcCAmJiBpc3NwYWNlKCpwKSkKKyAgICAgICAgIHsKKyAgICAg ICAgICAgICBwKys7CitAQCAtMTA4NywxNCArMTA4NywxNCBAQCBnbG9idXNfbF9nZnNfY29uZmln X2xvYWRfZW52c19mcm9tX2ZpbGUoCisgICAgICAgICB7CisgICAgICAgICAgICAgZ290byBlcnJv cl9wYXJzZTsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgcmMgPSBnbG9idXNf bGliY19zZXRlbnYob3B0aW9uYnVmLCB2YWx1ZWJ1ZiwgMSk7CisgICAgICAgICBpZihyYyA8IDAp CisgICAgICAgICB7CisgICAgICAgICAgICAgY2hhciAgICAgICAgICAgICAgICAgICAgICAgIGVy cnN0cltQQVRIX01BWF07CisgICAgICAgICAgICAgc25wcmludGYoCisgICAgICAgICAgICAgICAg IGVycnN0ciwgUEFUSF9NQVgsCistICAgICAgICAgICAgICAgICJQcm9ibGVtIGxvYWRpbmcgZW52 aXJvbm1lbnQgZnJvbSBjb25maWcgZmlsZSAlczogbGluZSAlZC5cbiIsIAorKyAgICAgICAgICAg ICAgICAiUHJvYmxlbSBsb2FkaW5nIGVudmlyb25tZW50IGZyb20gY29uZmlnIGZpbGUgJXM6IGxp bmUgJWQuXG4iLAorICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZV9udW0pOworICAgICAg ICAgICAgIHBlcnJvcihlcnJzdHIpOworICAgICAgICAgfQorQEAgLTExMDUsMjAgKzExMDUsMjAg QEAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19sb2FkX2VudnNfZnJvbV9maWxlKAorICAgICBmcmVlKGxp bmVidWYpOworICAgICBmcmVlKHZhbHVlYnVmKTsKKyAgICAgZnJlZShvcHRpb25idWYpOworLSAg IAorKworICAgICByZXR1cm4gMDsKKyAKKyBlcnJvcl9wYXJzZToKKyAgICAgaWYoZ2xvYnVzX2xf Z2ZzX2NvbW1vbl9sb2FkZWQpCisgICAgIHsKKy0gICAgICAgIGdsb2J1c19nZnNfbG9nX2V4aXRf bWVzc2FnZSgiUHJvYmxlbSBwYXJzaW5nIGVudmlyb25tZW50IGZyb20gY29uZmlnIGZpbGUgJXM6 IGxpbmUgJWQuXG4iLCAKKysgICAgICAgIGdsb2J1c19nZnNfbG9nX2V4aXRfbWVzc2FnZSgiUHJv YmxlbSBwYXJzaW5nIGVudmlyb25tZW50IGZyb20gY29uZmlnIGZpbGUgJXM6IGxpbmUgJWQuXG4i LAorICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lX251bSk7CisgICAgIH0KKyAgICAgZWxzZQor ICAgICB7CisgICAgICAgICBmcHJpbnRmKAorICAgICAgICAgICAgIHN0ZGVyciwKKy0gICAgICAg ICAgICAiUHJvYmxlbSBwYXJzaW5nIGVudmlyb25tZW50IGZyb20gY29uZmlnIGZpbGUgJXM6IGxp bmUgJWQuIFxuIiwgCisrICAgICAgICAgICAgIlByb2JsZW0gcGFyc2luZyBlbnZpcm9ubWVudCBm cm9tIGNvbmZpZyBmaWxlICVzOiBsaW5lICVkLiBcbiIsCisgICAgICAgICAgICAgZmlsZW5hbWUs IGxpbmVfbnVtKTsKKyAgICAgfQorIAorQEAgLTEyMDUsNyArMTIwNSw3IEBAIGdsb2J1c19sX2dm c19jb25maWdfbG9hZF9jb25maWdfZGlyKAorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgfQorICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX2dmc19jb25maWdfbG9hZF9lbnZz X2Zyb21fZmlsZShmdWxsX3BhdGgpOworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIGZy ZWUoZW50cmllc1tpXSk7CisgICAgICAgICAgICAgZnJlZShmdWxsX3BhdGgpOworICAgICAgICAg fQorQEAgLTEyMzMsNyArMTIzMyw3IEBAIGdsb2J1c19sX2dmc19jb25maWdfbG9hZF9jb25maWdf ZW52KCkKKyAgICAgZ2xvYnVzX29mZl90ICAgICAgICAgICAgICAgICAgICAgICAgdG1wX29mZjsK KyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9nZnNfY29uZmlnX2xvYWRfY29uZmlnX2Vudik7 CisgICAgIEdsb2J1c0dGU0RlYnVnRW50ZXIoKTsKKy0gICAgCisrCisgCisgICAgIGZvcihpID0g MDsgaSA8IG9wdGlvbl9jb3VudDsgaSsrKQorICAgICB7CitAQCAtMTI0NywxNCArMTI0NywxNCBA QCBnbG9idXNfbF9nZnNfY29uZmlnX2xvYWRfY29uZmlnX2VudigpCisgICAgICAgICB9CisgCisg ICAgICAgICB2YWx1ZSA9IGdldGVudihvcHRpb25fbGlzdFtpXS5lbnZfdmFyX29wdGlvbik7Cist ICAgICAgICAKKysKKyAgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICB7CisgICAgICAgICAg ICAgY29udGludWU7CisgICAgICAgICB9CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor KworICAgICAgICAgb3B0aW9uID0gKGdsb2J1c19sX2dmc19jb25maWdfb3B0aW9uX3QgKikgZ2xv YnVzX2hhc2h0YWJsZV9yZW1vdmUoCistICAgICAgICAgICAgICAgICZvcHRpb25fdGFibGUsIG9w dGlvbl9saXN0W2ldLm9wdGlvbl9uYW1lKTsgICAKKysgICAgICAgICAgICAgICAgJm9wdGlvbl90 YWJsZSwgb3B0aW9uX2xpc3RbaV0ub3B0aW9uX25hbWUpOworICAgICAgICAgaWYoIW9wdGlvbikK KyAgICAgICAgIHsKKyAgICAgICAgICAgICBvcHRpb24gPSAoZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19v cHRpb25fdCAqKQorQEAgLTEyNzUsMTAgKzEyNzUsMTAgQEAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19s b2FkX2NvbmZpZ19lbnYoKQorICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBlbHNlCisgICAg ICAgICAgICAgeworLSAgICAgICAgICAgICAgICBnbG9idXNfZ2ZzX2xvZ19leGl0X21lc3NhZ2Uo IlZhbHVlIGZvciAlcyBtdXN0IGJlIDAgb3IgMS5cbiIsIAorKyAgICAgICAgICAgICAgICBnbG9i dXNfZ2ZzX2xvZ19leGl0X21lc3NhZ2UoIlZhbHVlIGZvciAlcyBtdXN0IGJlIDAgb3IgMS5cbiIs CisgICAgICAgICAgICAgICAgICAgICBvcHRpb25fbGlzdFtpXS5vcHRpb25fbmFtZSk7CisgICAg ICAgICAgICAgICAgIHJldHVybiAtMTsKKy0gICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAg ICAKKysgICAgICAgICAgICB9CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgIGNhc2Ug R0xPQlVTX0xfR0ZTX0NPTkZJR19JTlQ6CisgICAgICAgICAgICAgcmMgPSBnbG9idXNfYXJnc19i eXRlc3RyX3RvX251bSh2YWx1ZSwgJnRtcF9vZmYpOworQEAgLTEyODgsMTAgKzEyODgsMTAgQEAg Z2xvYnVzX2xfZ2ZzX2NvbmZpZ19sb2FkX2NvbmZpZ19lbnYoKQorICAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAgICBmcmVlKG9wdGlvbik7CisgICAgICAgICAgICAgICAgIH0K Ky0gICAgICAgICAgICAgICAgZ2xvYnVzX2dmc19sb2dfZXhpdF9tZXNzYWdlKCJJbnZhbGlkIHZh bHVlIGZvciAlc1xuIiwgCisrICAgICAgICAgICAgICAgIGdsb2J1c19nZnNfbG9nX2V4aXRfbWVz c2FnZSgiSW52YWxpZCB2YWx1ZSBmb3IgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICBvcHRp b25fbGlzdFtpXS5vcHRpb25fbmFtZSk7CisgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKy0g ICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgCisrICAgICAgICAgICAgfQorICAgICAgICAg ICAgIG9wdGlvbi0+aW50X3ZhbHVlID0gKGludCkgdG1wX29mZjsKKyAgICAgICAgICAgICBicmVh azsKKyAgICAgICAgICAgY2FzZSBHTE9CVVNfTF9HRlNfQ09ORklHX1NUUklORzoKK0BAIC0xMzAz LDEyICsxMzAzLDEyIEBAIGdsb2J1c19sX2dmc19jb25maWdfbG9hZF9jb25maWdfZW52KCkKKyAg ICAgICAgIHJjID0gZ2xvYnVzX2hhc2h0YWJsZV9pbnNlcnQoJm9wdGlvbl90YWJsZSwKKyAgICAg ICAgICAgICBvcHRpb24tPm9wdGlvbl9uYW1lLAorICAgICAgICAgICAgICh2b2lkICopIG9wdGlv bik7CistICAgICAgICAKKysKKyAgICAgICAgIGlmKHJjKQorICAgICAgICAgeworICAgICAgICAg ICAgIC8qIFhYWCBlcnJvciwgbG9nIHNvbWV0aGluZyAqLworICAgICAgICAgfQorLSAgICB9ICAg ICAgIAorKyAgICB9CisgCisgICAgIEdsb2J1c0dGU0RlYnVnRXhpdCgpOworICAgICByZXR1cm4g R0xPQlVTX1NVQ0NFU1M7CitAQCAtMTMzMyw3ICsxMzMzLDcgQEAgZ2xvYnVzX2xfZ2ZzX2NvbmZp Z19sb2FkX2NvbW1hbmRsaW5lKAorICAgICBnbG9idXNfb2ZmX3QgICAgICAgICAgICAgICAgICAg ICAgICB0bXBfb2ZmOworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dmc19jb25maWdfbG9h ZF9jb21tYW5kbGluZSk7CisgICAgIEdsb2J1c0dGU0RlYnVnRW50ZXIoKTsKKy0gICAgCisrCisg ICAgIGZvcihhcmdfbnVtID0gMTsgYXJnX251bSA8IGFyZ2M7ICsrYXJnX251bSkKKyAgICAgewor ICAgICAgICAgZm91bmQgPSBHTE9CVVNfRkFMU0U7CitAQCAtMTM0MSw3ICsxMzQxLDcgQEAgZ2xv YnVzX2xfZ2ZzX2NvbmZpZ19sb2FkX2NvbW1hbmRsaW5lKAorIAorICAgICAgICAgYXJncCA9IGFy Z3ZbYXJnX251bV07CisgICAgICAgICBsZW4gPSBzdHJsZW4oYXJncCk7CistICAgICAgICAKKysK KyAgICAgICAgIGlmKGxlbiAmJiAqYXJncCA9PSAnLScpCisgICAgICAgICB7CisgICAgICAgICAg ICAgYXJncCsrOworQEAgLTEzNjQsMjUgKzEzNjQsMjUgQEAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19s b2FkX2NvbW1hbmRsaW5lKAorICAgICAgICAgICAgIGxlbi0tOworICAgICAgICAgICAgIG5lZ2F0 ZSA9IEdMT0JVU19UUlVFOworICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBmb3Io aSA9IDA7IGkgPCBvcHRpb25fY291bnQgJiYgIWZvdW5kICYmIGxlbjsgaSsrKQorICAgICAgICAg eworICAgICAgICAgICAgIGlmKG9wdGlvbl9saXN0W2ldLm9wdGlvbl9uYW1lID09IE5VTEwpCisg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICB9 CistICAgICAgICAgICAgaWYoKCFvcHRpb25fbGlzdFtpXS5zaG9ydF9jbWRsaW5lX29wdGlvbiB8 fCAKKy0gICAgICAgICAgICAgICAgc3RyY21wKGFyZ3AsIG9wdGlvbl9saXN0W2ldLnNob3J0X2Nt ZGxpbmVfb3B0aW9uKSkgJiYgCistICAgICAgICAgICAgICAgICghb3B0aW9uX2xpc3RbaV0ubG9u Z19jbWRsaW5lX29wdGlvbiB8fCAKKysgICAgICAgICAgICBpZigoIW9wdGlvbl9saXN0W2ldLnNo b3J0X2NtZGxpbmVfb3B0aW9uIHx8CisrICAgICAgICAgICAgICAgIHN0cmNtcChhcmdwLCBvcHRp b25fbGlzdFtpXS5zaG9ydF9jbWRsaW5lX29wdGlvbikpICYmCisrICAgICAgICAgICAgICAgICgh b3B0aW9uX2xpc3RbaV0ubG9uZ19jbWRsaW5lX29wdGlvbiB8fAorICAgICAgICAgICAgICAgICBz dHJjbXAoYXJncCwgb3B0aW9uX2xpc3RbaV0ubG9uZ19jbWRsaW5lX29wdGlvbikpICkKKyAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgIH0KKy0g ICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBmb3VuZCA9IEdMT0JVU19UUlVFOworLSAgICAg ICAgICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgb3B0aW9uID0gKGdsb2J1c19sX2dm c19jb25maWdfb3B0aW9uX3QgKikgZ2xvYnVzX2hhc2h0YWJsZV9yZW1vdmUoCistICAgICAgICAg ICAgICAgICAgICAmb3B0aW9uX3RhYmxlLCBvcHRpb25fbGlzdFtpXS5vcHRpb25fbmFtZSk7ICAg CisrICAgICAgICAgICAgICAgICAgICAmb3B0aW9uX3RhYmxlLCBvcHRpb25fbGlzdFtpXS5vcHRp b25fbmFtZSk7CisgICAgICAgICAgICAgaWYoIW9wdGlvbikKKyAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgIG9wdF9pc19uZXcgPSBHTE9CVVNfVFJVRTsKK0BAIC0xNDE5LDEwICsxNDE5 LDEwIEBAIGdsb2J1c19sX2dmc19jb25maWdfbG9hZF9jb21tYW5kbGluZSgKKyAgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19nZnNfbG9nX2V4aXRfbWVz c2FnZSgiSW52YWxpZCB2YWx1ZSBmb3IgJXNcbiIsIGFyZ3ApOworICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIC0xOworLSAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgCisrICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgb3B0aW9uLT5pbnRfdmFsdWUgPSAoaW50 KSB0bXBfb2ZmOworICAgICAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgICAgICAgICAgCisr CisgICAgICAgICAgICAgICBjYXNlIEdMT0JVU19MX0dGU19DT05GSUdfU1RSSU5HOgorICAgICAg ICAgICAgICAgICBpZigrK2FyZ19udW0gPj0gYXJnYykKKyAgICAgICAgICAgICAgICAgeworQEAg LTE0NDMsMTQgKzE0NDMsMTQgQEAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19sb2FkX2NvbW1hbmRsaW5l KAorICAgICAgICAgICAgIHJjID0gZ2xvYnVzX2hhc2h0YWJsZV9pbnNlcnQoJm9wdGlvbl90YWJs ZSwKKyAgICAgICAgICAgICAgICAgb3B0aW9uLT5vcHRpb25fbmFtZSwKKyAgICAgICAgICAgICAg ICAgKHZvaWQgKikgb3B0aW9uKTsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBpZihy YykKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIC8qIFhYWCBlcnJvciwgbG9nIHNv bWV0aGluZyAqLworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAKKysKKyAgICAgICAgIH0K Ky0gICAgICAgIAorKworICAgICAgICAgaWYoIWZvdW5kKQorICAgICAgICAgeworICAgICAgICAg ICAgIGlmKG9wdF9pc19uZXcpCitAQCAtMTQ2Miw3ICsxNDYyLDcgQEAgZ2xvYnVzX2xfZ2ZzX2Nv bmZpZ19sb2FkX2NvbW1hbmRsaW5lKAorICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAg IH0KKyAgICAgfQorLSAgICAgIAorKworICAgICBHbG9idXNHRlNEZWJ1Z0V4aXQoKTsKKyAgICAg cmV0dXJuIEdMT0JVU19TVUNDRVNTOworIAorQEAgLTE0NzgsOSArMTQ3OCw5IEBAIGdsb2J1c19s X2dmc19jb25maWdfbG9hZF9kZWZhdWx0cygpCisgICAgIGdsb2J1c19sX2dmc19jb25maWdfb3B0 aW9uX3QgKiAgICAgIG9wdGlvbjsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9nZnNfY29u ZmlnX2xvYWRfZGVmYXVsdHMpOworICAgICBHbG9idXNHRlNEZWJ1Z0VudGVyKCk7CistICAgIAor KworICAgICBmb3IoaSA9IDA7IGkgPCBvcHRpb25fY291bnQ7IGkrKykKKy0gICAgeyAgICAgICAg CisrICAgIHsKKyAgICAgICAgIGlmKG9wdGlvbl9saXN0W2ldLm9wdGlvbl9uYW1lID09IE5VTEwp CisgICAgICAgICB7CisgICAgICAgICAgICAgY29udGludWU7CitAQCAtMTQ4OCwxMSArMTQ4OCwx MSBAQCBnbG9idXNfbF9nZnNfY29uZmlnX2xvYWRfZGVmYXVsdHMoKQorICAgICAgICAgb3B0aW9u ID0gKGdsb2J1c19sX2dmc19jb25maWdfb3B0aW9uX3QgKikKKyAgICAgICAgICAgICBnbG9idXNf bWFsbG9jKHNpemVvZihnbG9idXNfbF9nZnNfY29uZmlnX29wdGlvbl90KSk7CisgICAgICAgICBt ZW1jcHkob3B0aW9uLCAmb3B0aW9uX2xpc3RbaV0sIHNpemVvZihnbG9idXNfbF9nZnNfY29uZmln X29wdGlvbl90KSk7CistICAgICAgICAKKy0gICAgICAgIHJjID0gZ2xvYnVzX2hhc2h0YWJsZV9p bnNlcnQoJm9wdGlvbl90YWJsZSwgCistICAgICAgICAgICAgb3B0aW9uLT5vcHRpb25fbmFtZSwg CisrCisrICAgICAgICByYyA9IGdsb2J1c19oYXNodGFibGVfaW5zZXJ0KCZvcHRpb25fdGFibGUs CisrICAgICAgICAgICAgb3B0aW9uLT5vcHRpb25fbmFtZSwKKyAgICAgICAgICAgICAodm9pZCAq KSBvcHRpb24pOworLSAgICAgICAgCisrCisgICAgICAgICBpZihyYykKKyAgICAgICAgIHsKKyAg ICAgICAgICAgICAvKiBYWFggZXJyb3IsIGxvZyBzb21ldGhpbmcgKi8KK0BAIC0xNTAwLDcgKzE1 MDAsNyBAQCBnbG9idXNfbF9nZnNfY29uZmlnX2xvYWRfZGVmYXVsdHMoKQorICAgICB9CisgCisg ICAgIEdsb2J1c0dGU0RlYnVnRXhpdCgpOworLSAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7IAor KyAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgfQorIAorIHN0YXRpYworQEAgLTE1MTQsMTgg KzE1MTQsMTggQEAgZ2xvYnVzX2xfY29uZmlnX2xvYWRmaWxlKAorICAgICBjaGFyICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvdXRfYnVmOworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1 c19sX2NvbmZpZ19sb2FkZmlsZSk7CisgICAgIEdsb2J1c0dGU0RlYnVnRW50ZXIoKTsKKy0gICAg IAorKworICAgICBmaWxlID0gZm9wZW4oZmlsZW5hbWUsICJyIik7CisgICAgIGlmKCFmaWxlKQor ICAgICB7CisgICAgICAgICBnb3RvIGVycm9yOworICAgICB9CistICAgICAgICAgCisrCisgICAg IGZzZWVrKGZpbGUsIDBMLCBTRUVLX0VORCk7CisgICAgIGZpbGVfbGVuID0gZnRlbGwoZmlsZSk7 CistICAgIGZzZWVrKGZpbGUsIDBMLCBTRUVLX1NFVCk7CQorKyAgICBmc2VlayhmaWxlLCAwTCwg U0VFS19TRVQpOworIAorLSAgICBvdXRfYnVmID0gKGNoYXIgKikgbWFsbG9jKChmaWxlX2xlbiAr IDEpICogc2l6ZW9mKGNoYXIpKTsJCisrICAgIG91dF9idWYgPSAoY2hhciAqKSBtYWxsb2MoKGZp bGVfbGVuICsgMSkgKiBzaXplb2YoY2hhcikpOworICAgICBpZighb3V0X2J1ZikKKyAgICAgewor ICAgICAgICAgZmNsb3NlKGZpbGUpOworQEAgLTE1MzcsNyArMTUzNyw3IEBAIGdsb2J1c19sX2Nv bmZpZ19sb2FkZmlsZSgKKyAgICAgb3V0X2J1ZltmaWxlX2xlbl0gPSAnXDAnOworIAorICAgICAq ZGF0YV9vdXQgPSBvdXRfYnVmOworLSAgICAgICAgIAorKworICAgICBHbG9idXNHRlNEZWJ1Z0V4 aXQoKTsKKyAgICAgcmV0dXJuIDA7CisgCitAQCAtMTU1NCwxOCArMTU1NCwxOCBAQCBnbG9idXNf bF9nZnNfY29uZmlnX2Rpc3BsYXlfaHRtbF91c2FnZSgpCisgICAgIGdsb2J1c19sX2dmc19jb25m aWdfb3B0aW9uX3QgKiAgICAgIG87CisgICAgIEdsb2J1c0dGU05hbWUoZ2xvYnVzX2xfZ2ZzX2Nv bmZpZ19kaXNwbGF5X2h0bWxfdXNhZ2UpOworICAgICBHbG9idXNHRlNEZWJ1Z0VudGVyKCk7Cist ICAgIAorKworICAgICBwcmludGYoIjwhLS0gZ2VuZXJhdGVkIGJ5IGdsb2J1cy1ncmlkZnRwLXNl cnZlciAtaGVscCAtaHRtbCAtLT5cbiIpOworICAgICBwcmludGYoIjxwPlxuIgorLSAgICAgICAg IlRoZSB0YWJsZSBiZWxvdyBsaXN0cyBjb25maWcgZmlsZSBvcHRpb25zLCBhc3NvY2lhdGVkIGNv bW1hbmQgbGluZSAiIAorKyAgICAgICAgIlRoZSB0YWJsZSBiZWxvdyBsaXN0cyBjb25maWcgZmls ZSBvcHRpb25zLCBhc3NvY2lhdGVkIGNvbW1hbmQgbGluZSAiCisgICAgICAgICAib3B0aW9ucyAo aWYgYXZhaWxhYmxlKSBhbmQgZGVzY3JpcHRpb25zLiBOb3RlIHRoYXQgYW55IGJvb2xlYW4gIgor LSAgICAgICAgIm9wdGlvbiBjYW4gYmUgbmVnYXRlZCBvbiB0aGUgY29tbWFuZCBsaW5lIGJ5IHBy ZWNlZGluZyB0aGUgc3BlY2lmaWVkICIgCisrICAgICAgICAib3B0aW9uIGNhbiBiZSBuZWdhdGVk IG9uIHRoZSBjb21tYW5kIGxpbmUgYnkgcHJlY2VkaW5nIHRoZSBzcGVjaWZpZWQgIgorICAgICAg ICAgIm9wdGlvbiB3aXRoICctbm8tJyBvciAnLW4nLiAgRXhhbXBsZTogLW5vLWNhcyBvciAtbmYu XG4iCisgICAgICAgICAiPC9wPlxuIik7CisgCisgICAgIHByaW50ZigiPHVsPlxuIik7CisgICAg IGZvcihpID0gMDsgaSA8IG9wdGlvbl9jb3VudDsgaSsrKQorLSAgICB7ICAgICAgICAKKysgICAg eworICAgICAgICAgbyA9IChnbG9idXNfbF9nZnNfY29uZmlnX29wdGlvbl90ICopICZvcHRpb25f bGlzdFtpXTsKKyAgICAgICAgIGlmKG8tPm9wdGlvbl9uYW1lID09IE5VTEwgJiYgby0+Y29uZmln ZmlsZV9vcHRpb24gIT0gTlVMTCkKKyAgICAgICAgIHsKK0BAIC0xNTc5LDEyICsxNTc5LDEyIEBA IGdsb2J1c19sX2dmc19jb25maWdfZGlzcGxheV9odG1sX3VzYWdlKCkKKyAKKyAgICAgcHJpbnRm KCI8dGFibGUgYm9yZGVyPVwiMVwiIGNlbGxwYWRkaW5nPVwiNVwiPlxuIik7CisgICAgIGZvcihp ID0gMDsgaSA8IG9wdGlvbl9jb3VudDsgaSsrKQorLSAgICB7ICAgICAgICAKKysgICAgeworICAg ICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydGZsYWc7CisgICAgICAg ICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdmbGFnOworICAgICAgICAgY2hh ciAqICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTsKKyAgICAgICAgIGNoYXIgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgZGVmdmFsOworLSAgICAgICAgCisrCisgICAgICAgICBvID0g KGdsb2J1c19sX2dmc19jb25maWdfb3B0aW9uX3QgKikgJm9wdGlvbl9saXN0W2ldOworICAgICAg ICAgaWYoby0+b3B0aW9uX25hbWUgPT0gTlVMTCAmJiBvLT5jb25maWdmaWxlX29wdGlvbiAhPSBO VUxMKQorICAgICAgICAgeworQEAgLTE2MDYsMjYgKzE2MDYsMjYgQEAgZ2xvYnVzX2xfZ2ZzX2Nv bmZpZ19kaXNwbGF5X2h0bWxfdXNhZ2UoKQorICAgICAgICAgICBjYXNlIEdMT0JVU19MX0dGU19D T05GSUdfQk9PTDoKKyAgICAgICAgICAgICBzaG9ydGZsYWcgPSAiLSI7CisgICAgICAgICAgICAg bG9uZ2ZsYWcgPSAiLSI7CistICAgICAgICAgICAgdmFsdWUgPSAiICZsdDswfDEmZ3Q7IjsgCisr ICAgICAgICAgICAgdmFsdWUgPSAiICZsdDswfDEmZ3Q7IjsKKyAgICAgICAgICAgICBkZWZ2YWwg PSBvLT5pbnRfdmFsdWUgPyAiVFJVRSIgOiAiRkFMU0UiOworICAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICAgICBjYXNlIEdMT0JVU19MX0dGU19DT05GSUdfSU5UOgorICAgICAgICAgICAgIHNo b3J0ZmxhZyA9ICItIjsKKyAgICAgICAgICAgICBsb25nZmxhZyA9ICItIjsKKy0gICAgICAgICAg ICB2YWx1ZSA9ICIgJmx0O251bWJlciZndDsiOyAKKy0gICAgICAgICAgICBkZWZ2YWwgPSBvLT5p bnRfdmFsdWUgPiAwID8gCisrICAgICAgICAgICAgdmFsdWUgPSAiICZsdDtudW1iZXImZ3Q7IjsK KysgICAgICAgICAgICBkZWZ2YWwgPSBvLT5pbnRfdmFsdWUgPiAwID8KKyAgICAgICAgICAgICAg ICAgZ2xvYnVzX2NvbW1vbl9jcmVhdGVfc3RyaW5nKCIlZCIsIG8tPmludF92YWx1ZSkgOiAibm90 IHNldCI7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgIGNhc2UgR0xPQlVTX0xfR0ZT X0NPTkZJR19TVFJJTkc6CisgICAgICAgICAgICAgc2hvcnRmbGFnID0gIi0iOworICAgICAgICAg ICAgIGxvbmdmbGFnID0gIi0iOworLSAgICAgICAgICAgIHZhbHVlID0gIiAmbHQ7c3RyaW5nJmd0 OyI7IAorKyAgICAgICAgICAgIHZhbHVlID0gIiAmbHQ7c3RyaW5nJmd0OyI7CisgICAgICAgICAg ICAgZGVmdmFsID0gby0+dmFsdWUgPyBvLT52YWx1ZSA6ICJub3Qgc2V0IjsKKyAgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICBzaG9ydGZsYWcgPSAi IjsKKyAgICAgICAgICAgICBsb25nZmxhZyA9ICIiOworLSAgICAgICAgICAgIHZhbHVlID0gIiI7 IAorKyAgICAgICAgICAgIHZhbHVlID0gIiI7CisgICAgICAgICAgICAgZGVmdmFsID0gby0+dmFs dWUgPyBvLT52YWx1ZSA6ICJub3Qgc2V0IjsKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg IH0KK0BAIC0xNjM4LDE3ICsxNjM4LDE3IEBAIGdsb2J1c19sX2dmc19jb25maWdfZGlzcGxheV9o dG1sX3VzYWdlKCkKKyAgICAgICAgICAgICAiICAgICA8L3RhYmxlPlxuIgorICAgICAgICAgICAg ICIgICAgPC90ZD5cbiIKKyAgICAgICAgICAgICAiICAgIDx0ZCB2YWxpZ249XCJ0b3BcIj48cD4l czwvcD48cD5EZWZhdWx0IHZhbHVlOiAlczwvcD48L3RkPlxuIgorLSAgICAgICAgICAgICIgIDwv dHI+XG4iLCAKKy0gICAgICAgICAgICBvLT5jb25maWdmaWxlX29wdGlvbiwgCisrICAgICAgICAg ICAgIiAgPC90cj5cbiIsCisrICAgICAgICAgICAgby0+Y29uZmlnZmlsZV9vcHRpb24sCisgICAg ICAgICAgICAgdmFsdWUsCistICAgICAgICAgICAgby0+c2hvcnRfY21kbGluZV9vcHRpb24gPyBz aG9ydGZsYWcgOiAiIiwgCisrICAgICAgICAgICAgby0+c2hvcnRfY21kbGluZV9vcHRpb24gPyBz aG9ydGZsYWcgOiAiIiwKKyAgICAgICAgICAgICBvLT5zaG9ydF9jbWRsaW5lX29wdGlvbiA/IG8t PnNob3J0X2NtZGxpbmVfb3B0aW9uIDogIiIsCistICAgICAgICAgICAgby0+dHlwZSAhPSBHTE9C VVNfTF9HRlNfQ09ORklHX0JPT0wgJiYgCisrICAgICAgICAgICAgby0+dHlwZSAhPSBHTE9CVVNf TF9HRlNfQ09ORklHX0JPT0wgJiYKKyAgICAgICAgICAgICAgICAgby0+c2hvcnRfY21kbGluZV9v cHRpb24gPyB2YWx1ZSA6ICIiLAorLSAgICAgICAgICAgIG8tPnNob3J0X2NtZGxpbmVfb3B0aW9u ID8gIlxuIiA6ICIiLCAKKysgICAgICAgICAgICBvLT5zaG9ydF9jbWRsaW5lX29wdGlvbiA/ICJc biIgOiAiIiwKKyAgICAgICAgICAgICBvLT5sb25nX2NtZGxpbmVfb3B0aW9uID8gbG9uZ2ZsYWcg OiAiIiwKKyAgICAgICAgICAgICBvLT5sb25nX2NtZGxpbmVfb3B0aW9uID8gby0+bG9uZ19jbWRs aW5lX29wdGlvbiA6ICIiLAorLSAgICAgICAgICAgIG8tPnR5cGUgIT0gR0xPQlVTX0xfR0ZTX0NP TkZJR19CT09MICYmIAorKyAgICAgICAgICAgIG8tPnR5cGUgIT0gR0xPQlVTX0xfR0ZTX0NPTkZJ R19CT09MICYmCisgICAgICAgICAgICAgICAgIG8tPmxvbmdfY21kbGluZV9vcHRpb24gPyB2YWx1 ZSA6ICIiLAorICAgICAgICAgICAgIG8tPnVzYWdlLAorICAgICAgICAgICAgIGRlZnZhbCk7CitA QCAtMTY4MCw3ICsxNjgwLDcgQEAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19kaXNwbGF5X3dzZGwoKQor ICAgICAgICAgb3V0ID0gc3Rkb3V0OworICAgICB9CisgICAgIGZvcihpID0gMDsgaSA8IG9wdGlv bl9jb3VudDsgaSsrKQorLSAgICB7ICAgICAgICAKKysgICAgeworICAgICAgICAgbyA9IChnbG9i dXNfbF9nZnNfY29uZmlnX29wdGlvbl90ICopICZvcHRpb25fbGlzdFtpXTsKKyAgICAgICAgIGlm KG8tPm9wdGlvbl9uYW1lICE9IE5VTEwgJiYgby0+cHVibGljKQorICAgICAgICAgeworQEAgLTE3 MDksNyArMTcwOSw3IEBAIGdsb2J1c19sX2dmc19jb25maWdfZGlzcGxheV93c2RsKCkKKyAgICAg ZnByaW50ZihvdXQsICIgICAgPHhzZDpjb21wbGV4VHlwZT48eHNkOnNlcXVlbmNlPlxuIik7Cisg CisgICAgIGZvcihpID0gMDsgaSA8IG9wdGlvbl9jb3VudDsgaSsrKQorLSAgICB7ICAgICAgICAK KysgICAgeworICAgICAgICAgbyA9IChnbG9idXNfbF9nZnNfY29uZmlnX29wdGlvbl90ICopICZv cHRpb25fbGlzdFtpXTsKKyAgICAgICAgIGlmKG8tPm9wdGlvbl9uYW1lICE9IE5VTEwgJiYgby0+ cHVibGljKQorICAgICAgICAgeworQEAgLTE3NTAsNyArMTc1MCw3IEBAIGdsb2J1c19sX2dmc19j b25maWdfZGlzcGxheV9jX3NlcnZpY2UoKQorICAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAg ICAgICAgICAgICBjbG9zZSA9IEdMT0JVU19UUlVFOworICAgICBjaGFyICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjX2ZpbGU7CisgICAgIEdsb2J1c0dGU0RlYnVnRW50ZXIoKTsKKy0g ICAgCisrCisgICAgIGNfZmlsZSA9IGdsb2J1c19jb21tb25fY3JlYXRlX3N0cmluZygiJXMuYyIs CisgICAgICAgICBnbG9idXNfaV9nZnNfY29uZmlnX3N0cmluZygid3NkbCIpKTsKKyAgICAgb3V0 ID0gZm9wZW4oY19maWxlLCAidyIpOworQEAgLTE3NjAsNyArMTc2MCw3IEBAIGdsb2J1c19sX2dm c19jb25maWdfZGlzcGxheV9jX3NlcnZpY2UoKQorICAgICAgICAgb3V0ID0gc3Rkb3V0OworICAg ICB9CisgICAgIGZvcihpID0gMDsgaSA8IG9wdGlvbl9jb3VudDsgaSsrKQorLSAgICB7ICAgICAg ICAKKysgICAgeworICAgICAgICAgbyA9IChnbG9idXNfbF9nZnNfY29uZmlnX29wdGlvbl90ICop ICZvcHRpb25fbGlzdFtpXTsKKyAgICAgICAgIGlmKG8tPm9wdGlvbl9uYW1lICE9IE5VTEwgJiYg by0+cHVibGljKQorICAgICAgICAgeworQEAgLTE3ODcsNyArMTc4Nyw3IEBAIGdsb2J1c19sX2dm c19jb25maWdfZGlzcGxheV9jX3NlcnZpY2UoKQorICAgICBmcHJpbnRmKG91dCwgIiAgICBnbG9i dXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7XG4iKTsKKyAgICAgZnByaW50 ZihvdXQsICIgICAgZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19vcHRpb25fY2JfZW50X3QgKiBjYl9oYW5k bGU7XG4iKTsKKyAgICAgZm9yKGkgPSAwOyBpIDwgb3B0aW9uX2NvdW50OyBpKyspCistICAgIHsg ICAgICAgIAorKyAgICB7CisgICAgICAgICBvID0gKGdsb2J1c19sX2dmc19jb25maWdfb3B0aW9u X3QgKikgJm9wdGlvbl9saXN0W2ldOworICAgICAgICAgaWYoby0+b3B0aW9uX25hbWUgIT0gTlVM TCAmJiBvLT5wdWJsaWMpCisgICAgICAgICB7CitAQCAtMTg2Nyw3ICsxODY3LDcgQEAgZ2xvYnVz X2xfZ2ZzX2NvbmZpZ19kaXNwbGF5X2RvY2Jvb2tfdXNhZ2UoKQorICAgICBnbG9idXNfbF9nZnNf Y29uZmlnX29wdGlvbl90ICogICAgICBvOworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dm c19jb25maWdfZGlzcGxheV9kb2Nib29rX3VzYWdlKTsKKyAgICAgR2xvYnVzR0ZTRGVidWdFbnRl cigpOworLSAgICAKKysKKyAgICAgcHJpbnRmKCI8IS0tIGdlbmVyYXRlZCBieSBnbG9idXMtZ3Jp ZGZ0cC1zZXJ2ZXIgLWhlbHAgLWRvY2Jvb2sgLS0+XG4iKTsKKyAgICAgcHJpbnRmKCI8cGFyYT5c biIKKyAgICAgICAgICJUaGUgbGlzdCBiZWxvdyBjb250YWlucyB0aGUgY29tbWFuZC1saW5lIG9w dGlvbnMgZm9yIHRoZSBzZXJ2ZXIsICIKK0BAIC0xODc5LDEwICsxODc5LDEwIEBAIGdsb2J1c19s X2dmc19jb25maWdfZGlzcGxheV9kb2Nib29rX3VzYWdlKCkKKyAgICAgICAgICI8L3JlZnNlY3Qx PlxuIik7CisgCisgICAgIGZvcihpID0gMDsgaSA8IG9wdGlvbl9jb3VudDsgaSsrKQorLSAgICB7 ICAgICAgICAKKysgICAgeworICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAg ICB2YWx1ZTsKKyAgICAgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmdmFs OworLSAgICAgICAgCisrCisgICAgICAgICBvID0gKGdsb2J1c19sX2dmc19jb25maWdfb3B0aW9u X3QgKikgJm9wdGlvbl9saXN0W2ldOworICAgICAgICAgaWYoby0+b3B0aW9uX25hbWUgPT0gTlVM TCAmJiBvLT5jb25maWdmaWxlX29wdGlvbiAhPSBOVUxMKQorICAgICAgICAgeworQEAgLTE5MTEs OCArMTkxMSw4IEBAIGdsb2J1c19sX2dmc19jb25maWdfZGlzcGxheV9kb2Nib29rX3VzYWdlKCkK KyAgICAgICAgICAgICBkZWZ2YWwgPSBvLT5pbnRfdmFsdWUgPyAiVFJVRSIgOiAiRkFMU0UiOwor ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICBjYXNlIEdMT0JVU19MX0dGU19DT05GSUdf SU5UOgorLSAgICAgICAgICAgIHZhbHVlID0gIm51bWJlciI7IAorLSAgICAgICAgICAgIGRlZnZh bCA9IG8tPmludF92YWx1ZSA+IDAgPyAKKysgICAgICAgICAgICB2YWx1ZSA9ICJudW1iZXIiOwor KyAgICAgICAgICAgIGRlZnZhbCA9IG8tPmludF92YWx1ZSA+IDAgPworICAgICAgICAgICAgICAg ICBnbG9idXNfY29tbW9uX2NyZWF0ZV9zdHJpbmcoIiVkIiwgby0+aW50X3ZhbHVlKSA6IE5VTEw7 CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgIGNhc2UgR0xPQlVTX0xfR0ZTX0NPTkZJ R19TVFJJTkc6CitAQCAtMTkyMCwxMSArMTkyMCwxMSBAQCBnbG9idXNfbF9nZnNfY29uZmlnX2Rp c3BsYXlfZG9jYm9va191c2FnZSgpCisgICAgICAgICAgICAgZGVmdmFsID0gby0+dmFsdWUgPyBv LT52YWx1ZSA6IE5VTEw7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgIGRlZmF1bHQ6 CistICAgICAgICAgICAgdmFsdWUgPSAiIjsgCisrICAgICAgICAgICAgdmFsdWUgPSAiIjsKKyAg ICAgICAgICAgICBkZWZ2YWwgPSBvLT52YWx1ZSA/IG8tPnZhbHVlIDogTlVMTDsKKyAgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgcHJpbnRmKCIg IDx2YXJsaXN0ZW50cnk+XG4iKTsKKyAgICAgICAgIGlmIChvLT5zaG9ydF9jbWRsaW5lX29wdGlv bikKKyAgICAgICAgIHsKK0BAIC0xOTc5LDcgKzE5NzksNyBAQCBnbG9idXNfbF9nZnNfY29uZmln X2Rpc3BsYXlfYXNjaWlkb2NfdXNhZ2UoKQorICAgICBnbG9idXNfbF9nZnNfY29uZmlnX29wdGlv bl90ICogICAgICBvOworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dmc19jb25maWdfZGlz cGxheV9kb2Nib29rX3VzYWdlKTsKKyAgICAgR2xvYnVzR0ZTRGVidWdFbnRlcigpOworLSAgICAK KysKKyAgICAgcHJpbnRmKCIvLy8vXG5nZW5lcmF0ZWQgYnkgZ2xvYnVzLWdyaWRmdHAtc2VydmVy IC1oZWxwIC1hc2NpaWRvY1xuLy8vL1xuIik7CisgICAgIHByaW50ZigiVGhlIGxpc3QgYmVsb3cg Y29udGFpbnMgdGhlIGNvbW1hbmQtbGluZSBvcHRpb25zIGZvciB0aGUgc2VydmVyLCAiCisgICAg ICAgICAiYW5kIGFsc28gdGhlIG5hbWUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBlbnRyeSB0 aGF0IGltcGxlbWVudHMgIgorQEAgLTE5ODksMTAgKzE5ODksMTAgQEAgZ2xvYnVzX2xfZ2ZzX2Nv bmZpZ19kaXNwbGF5X2FzY2lpZG9jX3VzYWdlKCkKKyAgICAgICAgICJcbiIpOworIAorICAgICBm b3IoaSA9IDA7IGkgPCBvcHRpb25fY291bnQ7IGkrKykKKy0gICAgeyAgICAgICAgCisrICAgIHsK KyAgICAgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU7CisgICAgICAg ICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgIGRlZnZhbDsKKy0gICAgICAgIAorKwor ICAgICAgICAgbyA9IChnbG9idXNfbF9nZnNfY29uZmlnX29wdGlvbl90ICopICZvcHRpb25fbGlz dFtpXTsKKyAgICAgICAgIGlmKG8tPm9wdGlvbl9uYW1lID09IE5VTEwgJiYgby0+Y29uZmlnZmls ZV9vcHRpb24gIT0gTlVMTCkKKyAgICAgICAgIHsKK0BAIC0yMDI2LDggKzIwMjYsOCBAQCBnbG9i dXNfbF9nZnNfY29uZmlnX2Rpc3BsYXlfYXNjaWlkb2NfdXNhZ2UoKQorICAgICAgICAgICAgIGRl ZnZhbCA9IG8tPmludF92YWx1ZSA/ICJUUlVFIiA6ICJGQUxTRSI7CisgICAgICAgICAgICAgYnJl YWs7CisgICAgICAgICAgIGNhc2UgR0xPQlVTX0xfR0ZTX0NPTkZJR19JTlQ6CistICAgICAgICAg ICAgdmFsdWUgPSAibnVtYmVyIjsgCistICAgICAgICAgICAgZGVmdmFsID0gby0+aW50X3ZhbHVl ID4gMCA/IAorKyAgICAgICAgICAgIHZhbHVlID0gIm51bWJlciI7CisrICAgICAgICAgICAgZGVm dmFsID0gby0+aW50X3ZhbHVlID4gMCA/CisgICAgICAgICAgICAgICAgIGdsb2J1c19jb21tb25f Y3JlYXRlX3N0cmluZygiJWQiLCBvLT5pbnRfdmFsdWUpIDogTlVMTDsKKyAgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgICAgY2FzZSBHTE9CVVNfTF9HRlNfQ09ORklHX1NUUklORzoKK0BAIC0y MDM1LDExICsyMDM1LDExIEBAIGdsb2J1c19sX2dmc19jb25maWdfZGlzcGxheV9hc2NpaWRvY191 c2FnZSgpCisgICAgICAgICAgICAgZGVmdmFsID0gby0+dmFsdWUgPyBvLT52YWx1ZSA6IE5VTEw7 CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgIGRlZmF1bHQ6CistICAgICAgICAgICAg dmFsdWUgPSAiIjsgCisrICAgICAgICAgICAgdmFsdWUgPSAiIjsKKyAgICAgICAgICAgICBkZWZ2 YWwgPSBvLT52YWx1ZSA/IG8tPnZhbHVlIDogTlVMTDsKKyAgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgcHJpbnRmKCIqIik7CisgICAgICAgICBp ZiAoby0+c2hvcnRfY21kbGluZV9vcHRpb24pCisgICAgICAgICB7CitAQCAtMjEyMywxNiArMjEy MywxNiBAQCBnbG9idXNfaV9nZnNfY29uZmlnX2Rpc3BsYXlfbG9uZ191c2FnZSgpCisgICAgICAg ICBnbG9idXNfbF9nZnNfY29uZmlnX2Rpc3BsYXlfY19zZXJ2aWNlKCk7CisgICAgIH0KKyAgICAg ZWxzZQorLSAgICB7ICAgICAgICAKKysgICAgeworICAgICAgICAgZm9yKGkgPSAwOyBpIDwgb3B0 aW9uX2NvdW50OyBpKyspCistICAgICAgICB7ICAgICAgICAKKysgICAgICAgIHsKKyAgICAgICAg ICAgICBvID0gKGdsb2J1c19sX2dmc19jb25maWdfb3B0aW9uX3QgKikgJm9wdGlvbl9saXN0W2ld OworICAgICAgICAgICAgIGlmKG8tPnVzYWdlID09IE5VTEwpCisgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgCist ICAgICAgICAgICAgcHJpbnRmKCIlLTE0cyAgICAlc1xuJS0xNHMgICAgJXNDb21tYW5kIGxpbmUg b3IgRU5WIGFyZ3M6IiwgCisrCisrICAgICAgICAgICAgcHJpbnRmKCIlLTE0cyAgICAlc1xuJS0x NHMgICAgJXNDb21tYW5kIGxpbmUgb3IgRU5WIGFyZ3M6IiwKKyAgICAgICAgICAgICAgICAgby0+ b3B0aW9uX25hbWUsIG8tPnVzYWdlLCAiIiwKKyAgICAgICAgICAgICAgICAgby0+dHlwZSA9PSBH TE9CVVNfTF9HRlNfQ09ORklHX0JPT0wgPyAiKEZMQUcpICAiIDogIiIpOworICAgICAgICAgICAg IGlmKG8tPnNob3J0X2NtZGxpbmVfb3B0aW9uKQorQEAgLTIxNzIsMTUgKzIxNzIsMTUgQEAgZ2xv YnVzX2xfZ2ZzX2NvbmZpZ19mb3JtYXRfbGluZSgKKyAgICAgaW50ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY291bnQ7CisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxhc3Q7CisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJs YW5rczsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorKworICAgICBsZW4g PSBzdHJsZW4oaW5fc3RyKTsKKyAgICAgY291bnQgPSAwOworICAgICBsYXN0ID0gMDsKKyAgICAg bWVtc2V0KG91dF9idWZmZXIsIDAsIHJvd3MgKiBjb2x1bW5zKTsKKy0gICAgCisrCisgICAgIGZv cihpID0gMDsgaSA8IHJvd3MgJiYgY291bnQgPCBsZW47IGkrKykKKyAgICAgeworLSAgICAgICAg Zm9yKGogPSAwOyBqIDwgY29sdW1ucyAtIDEgJiYgY291bnQgPCBsZW47IGorKywgY291bnQrKykg CisrICAgICAgICBmb3IoaiA9IDA7IGogPCBjb2x1bW5zIC0gMSAmJiBjb3VudCA8IGxlbjsgaisr LCBjb3VudCsrKQorICAgICAgICAgeworICAgICAgICAgICAgIGlmKGluX3N0cltjb3VudF0gPT0g JyAnKQorICAgICAgICAgICAgIHsKK0BAIC0yMjA1LDEyICsyMjA1LDEyIEBAIGdsb2J1c19sX2dm c19jb25maWdfZm9ybWF0X2xpbmUoCisgICAgICAgICB3aGlsZShjb3VudCA8IGxlbiAmJiBpbl9z dHJbY291bnRdID09ICcgJykKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBjb3VudCsrOworLSAg ICAgICAgfSAgCisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgcmV0dXJuIDA7CisgfQorLSAg ICAgICAgCisrCisgdm9pZAorIGdsb2J1c19pX2dmc19jb25maWdfZGlzcGxheV91c2FnZSgpCisg eworQEAgLTIyMTgsNyArMjIxOCw3IEBAIGdsb2J1c19pX2dmc19jb25maWdfZGlzcGxheV91c2Fn ZSgpCisgICAgIGdsb2J1c19sX2dmc19jb25maWdfb3B0aW9uX3QgKiAgICAgIG87CisgICAgIEds b2J1c0dGU05hbWUoZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19kaXNwbGF5X3Nob3J0X3VzYWdlKTsKKyAg ICAgR2xvYnVzR0ZTRGVidWdFbnRlcigpOworLSAgICAKKysKKyAgICAgaWYoZ2xvYnVzX2lfZ2Zz X2NvbmZpZ19ib29sKCJodG1sIikpCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19sX2dmc19jb25m aWdfZGlzcGxheV9odG1sX3VzYWdlKCk7CitAQCAtMjIzNyw3ICsyMjM3LDcgQEAgZ2xvYnVzX2lf Z2ZzX2NvbmZpZ19kaXNwbGF5X3VzYWdlKCkKKyAgICAgICAgIGdsb2J1c19sX2dmc19jb25maWdf ZGlzcGxheV9jX3NlcnZpY2UoKTsKKyAgICAgfQorICAgICBlbHNlCistICAgIHsgICAgICAgIAor KyAgICB7CisgICAgICAgICBmb3IoaSA9IDA7IGkgPCBvcHRpb25fY291bnQ7IGkrKykKKyAgICAg ICAgIHsKKyAgICAgICAgICAgICBjaGFyICAgICAgIGxpbmVidWZmZXJbR0xPQlVTX0dGU19IRUxQ X1JPV1MgKiBHTE9CVVNfR0ZTX0hFTFBfQ09MU107CitAQCAtMjI1Myw3ICsyMjUzLDcgQEAgZ2xv YnVzX2lfZ2ZzX2NvbmZpZ19kaXNwbGF5X3VzYWdlKCkKKyAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICAgcHJpbnRmKCJcbiIpOworLSAg ICAgICAgICAgICAgICBsZW4gPSBHTE9CVVNfR0ZTX0hFTFBfV0lEVEggLSAKKysgICAgICAgICAg ICAgICAgbGVuID0gR0xPQlVTX0dGU19IRUxQX1dJRFRIIC0KKyAgICAgICAgICAgICAgICAgICAg IChzdHJsZW4oby0+Y29uZmlnZmlsZV9vcHRpb24pICsgNCk7CisgICAgICAgICAgICAgICAgIGlm KGxlbiA+IDApCisgICAgICAgICAgICAgICAgIHsKK0BAIC0yMjgwLDE2ICsyMjgwLDE2IEBAIGds b2J1c19pX2dmc19jb25maWdfZGlzcGxheV91c2FnZSgpCisgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAKKysKKyAg ICAgICAgICAgICBzd2l0Y2goby0+dHlwZSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgIGNhc2UgR0xPQlVTX0xfR0ZTX0NPTkZJR19CT09MOgorLSAgICAgICAgICAgICAgICAgICAg dmFsdWUgPSAiIjsgCisrICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9ICIiOworICAgICAgICAg ICAgICAgICAgICAgc3ByaW50ZihkZWZ2YWwsICIlcyIsIG8tPmludF92YWx1ZSA/ICJUUlVFIiA6 ICJGQUxTRSIpOworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg IGNhc2UgR0xPQlVTX0xfR0ZTX0NPTkZJR19JTlQ6CistICAgICAgICAgICAgICAgICAgICB2YWx1 ZSA9ICI8bnVtYmVyPiI7IAorLSAgICAgICAgICAgICAgICAgICAgaWYoby0+aW50X3ZhbHVlID4g MCkgCisrICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9ICI8bnVtYmVyPiI7CisrICAgICAgICAg ICAgICAgICAgICBpZihvLT5pbnRfdmFsdWUgPiAwKQorICAgICAgICAgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICAgICAgICAgIHNwcmludGYoZGVmdmFsLCAiJWQiLCBvLT5pbnRfdmFs dWUpOworICAgICAgICAgICAgICAgICAgICAgfQorQEAgLTIyOTksMTYgKzIyOTksMTYgQEAgZ2xv YnVzX2lfZ2ZzX2NvbmZpZ19kaXNwbGF5X3VzYWdlKCkKKyAgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICBjYXNlIEdMT0JV U19MX0dGU19DT05GSUdfU1RSSU5HOgorLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAiPHN0 cmluZz4iOyAKKy0gICAgICAgICAgICAgICAgICAgIHNwcmludGYoZGVmdmFsLCAiJXMiLCAKKysg ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gIjxzdHJpbmc+IjsKKysgICAgICAgICAgICAgICAg ICAgIHNwcmludGYoZGVmdmFsLCAiJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIG8tPnZh bHVlID8gKGNoYXIgKikgby0+dmFsdWUgOiAibm90IHNldCIpOworICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CistICAgICAgICAgICAgICAgICAg ICB2YWx1ZSA9ICIiOyAKKysgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gIiI7CisgICAgICAg ICAgICAgICAgICAgICBzcHJpbnRmKGRlZnZhbCwgIiVzIiwgIm5vdCBzZXQiKTsKKyAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAKKysKKyAg ICAgICAgICAgICBpZihvLT5zaG9ydF9jbWRsaW5lX29wdGlvbikKKyAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgIGNvdW50ICs9IHByaW50ZigiIC0lcyIsIG8tPnNob3J0X2NtZGxpbmVf b3B0aW9uKTsKK0BAIC0yMzMwLDE2ICsyMzMwLDE2IEBAIGdsb2J1c19pX2dmc19jb25maWdfZGlz cGxheV91c2FnZSgpCisgICAgICAgICAgICAgICAgIHVzYWdlLCBHTE9CVVNfR0ZTX0hFTFBfUk9X UywgR0xPQlVTX0dGU19IRUxQX0NPTFMsIGxpbmVidWZmZXIpOworIAorICAgICAgICAgICAgIGxl biA9IHN0cmxlbihsaW5lYnVmZmVyKTsKKy0gICAgICAgICAgICBmb3Iocm93ID0gMDsgcm93IDwg R0xPQlVTX0dGU19IRUxQX1JPV1MgJiYgCistICAgICAgICAgICAgICAgIGxpbmVidWZmZXJbcm93 ICogR0xPQlVTX0dGU19IRUxQX0NPTFNdOyAKKysgICAgICAgICAgICBmb3Iocm93ID0gMDsgcm93 IDwgR0xPQlVTX0dGU19IRUxQX1JPV1MgJiYKKysgICAgICAgICAgICAgICAgbGluZWJ1ZmZlclty b3cgKiBHTE9CVVNfR0ZTX0hFTFBfQ09MU107CisgICAgICAgICAgICAgICAgIHJvdysrKQorICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgaWYocm93ID09IDEpCisgICAgICAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IHByaW50ZigiICBEZWZhdWx0OiAl cyAiLCBkZWZ2YWwpOworICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIGZvcihj b2wgPSBjb3VudDsgCistICAgICAgICAgICAgICAgICAgICBjb2wgPCBHTE9CVVNfR0ZTX0hFTFBf V0lEVEggLSBHTE9CVVNfR0ZTX0hFTFBfQ09MUzsgCisrICAgICAgICAgICAgICAgIGZvcihjb2wg PSBjb3VudDsKKysgICAgICAgICAgICAgICAgICAgIGNvbCA8IEdMT0JVU19HRlNfSEVMUF9XSURU SCAtIEdMT0JVU19HRlNfSEVMUF9DT0xTOworICAgICAgICAgICAgICAgICAgICAgY29sKyspCisg ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICIpOworQEAg LTIzNzMsMTQgKzIzNzMsMTQgQEAgZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19ob3N0bmFtZV90b19hZGRy ZXNzX3N0cmluZygKKyAgICAgZ2xvYnVzX2FkZHJpbmZvX3QgICAgICAgICAgICAgICAgICAgaGlu dHM7CisgICAgIGdsb2J1c19hZGRyaW5mb190ICogICAgICAgICAgICAgICAgIGFkZHJpbmZvOwor ICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CistICAgIAor KworICAgICBtZW1zZXQoJmhpbnRzLCAwLCBzaXplb2YoZ2xvYnVzX2FkZHJpbmZvX3QpKTsKKyAg ICAgaGludHMuYWlfZmFtaWx5ID0gUEZfVU5TUEVDOworICAgICBoaW50cy5haV9zb2NrdHlwZSA9 IFNPQ0tfU1RSRUFNOworICAgICBoaW50cy5haV9wcm90b2NvbCA9IDA7CisgCisgICAgIHJlc3Vs dCA9IGdsb2J1c19saWJjX2dldGFkZHJpbmZvKGhvc3RuYW1lLCBOVUxMLCAmaGludHMsICZhZGRy aW5mbyk7CistICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUyB8fCBhZGRyaW5mbyA9PSBO VUxMIHx8IAorKyAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MgfHwgYWRkcmluZm8gPT0g TlVMTCB8fAorICAgICAgICAgYWRkcmluZm8tPmFpX2FkZHIgPT0gTlVMTCkKKyAgICAgeworICAg ICAgICAgZ290byBlcnJvcl9leGl0OworQEAgLTIzOTYsMTEgKzIzOTYsMTEgQEAgZ2xvYnVzX2lf Z2ZzX2NvbmZpZ19ob3N0bmFtZV90b19hZGRyZXNzX3N0cmluZygKKyAgICAgeworICAgICAgICAg Z2xvYnVzX2xpYmNfZnJlZWFkZHJpbmZvKGFkZHJpbmZvKTsKKyAgICAgICAgIGdvdG8gZXJyb3Jf ZXhpdDsKKy0gICAgfSAgICAgICAKKy0gICAgZ2xvYnVzX2xpYmNfZnJlZWFkZHJpbmZvKGFkZHJp bmZvKTsgICAgCistICAgIAorKyAgICB9CisrICAgIGdsb2J1c19saWJjX2ZyZWVhZGRyaW5mbyhh ZGRyaW5mbyk7CisrCisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKy0gICAgCisrCisgZXJy b3JfZXhpdDoKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CitAQCAtMjQ2Miw5ICsyNDYyLDkgQEAg Z2xvYnVzX2xfZ2ZzX2NvbmZpZ19taXNjKCkKKyAKKyAjaWZkZWYgV0lOMzIKKyAgICAgZ2xvYnVz X2xfZ2ZzX2NvbmZpZ19zZXQoImZvcmsiLCBHTE9CVVNfRkFMU0UsIE5VTEwpOworLSNlbmRpZiAg ICAKKysjZW5kaWYKKyAKKy0gICAgaWYoZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19ib29sKCJkZXRhY2gi KSAmJiAKKysgICAgaWYoZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19ib29sKCJkZXRhY2giKSAmJgorICAg ICAgICAgIWdsb2J1c19pX2dmc19jb25maWdfYm9vbCgiZGFlbW9uIikpCisgICAgIHsKKyAgICAg ICAgIGdsb2J1c19sX2dmc19jb25maWdfc2V0KCJkYWVtb24iLCBHTE9CVVNfVFJVRSwgTlVMTCk7 CitAQCAtMjUxMCw4ICsyNTEwLDggQEAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19taXNjKCkKKyAgICAg ICAgIGVsc2UgaWYoc3RyY2hyKHZhbHVlLCAnOicpID09IE5VTEwpCisgICAgICAgICB7CisgICAg ICAgICAgICAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19zZXQoCistICAgICAgICAgICAgICAgICJsb2df bW9kdWxlIiwgCistICAgICAgICAgICAgICAgIDAsIAorKyAgICAgICAgICAgICAgICAibG9nX21v ZHVsZSIsCisrICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgIGdsb2J1c19jb21t b25fY3JlYXRlX3N0cmluZygiJXM6YnVmZmVyPTAiLCB2YWx1ZSkpOworICAgICAgICAgICAgIGds b2J1c19mcmVlKHZhbHVlKTsKKyAgICAgICAgIH0KK0BAIC0yNTQ2LDI5ICsyNTQ2LDI5IEBAIGds b2J1c19sX2dmc19jb25maWdfbWlzYygpCisgICAgICAgICAgICAgICAgICJjb250cm9sX2ludGVy ZmFjZSIsIDAsIGdsb2J1c19saWJjX3N0cmR1cChpZmFjZSkpOworICAgICAgICAgfQorICAgICB9 CistICAgIAorLSAgICBpZigodmFsdWUgPSAKKysKKysgICAgaWYoKHZhbHVlID0KKyAgICAgICAg IGdsb2J1c19pX2dmc19jb25maWdfc3RyaW5nKCJjb250cm9sX2ludGVyZmFjZSIpKSAhPSBHTE9C VVNfTlVMTCkKKy0gICAgeyAgICAgICAgCisrICAgIHsKKyAgICAgICAgIG1lbXNldChpcGFkZHIs IDAsIHNpemVvZihpcGFkZHIpKTsKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19pX2dmc19jb25m aWdfaG9zdG5hbWVfdG9fYWRkcmVzc19zdHJpbmcoCistICAgICAgICAgICAgdmFsdWUsIGlwYWRk ciwgc2l6ZW9mKGlwYWRkcikpOyAgCisrICAgICAgICAgICAgdmFsdWUsIGlwYWRkciwgc2l6ZW9m KGlwYWRkcikpOworICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorLSAgICAg ICAgeyAgIAorKyAgICAgICAgeworICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAg ICAgIH0KKyAgICAgICAgIGdsb2J1c19sX2dmc19jb25maWdfc2V0KAorICAgICAgICAgICAgICJj b250cm9sX2ludGVyZmFjZSIsIDEsIGdsb2J1c19saWJjX3N0cmR1cChpcGFkZHIpKTsKKyAgICAg fQorIAorLSAgICBpZigodmFsdWUgPSAKKysgICAgaWYoKHZhbHVlID0KKyAgICAgICAgIGdsb2J1 c19pX2dmc19jb25maWdfc3RyaW5nKCJkYXRhX2ludGVyZmFjZSIpKSAhPSBHTE9CVVNfTlVMTCkK Ky0gICAgeyAgICAgICAgCisrICAgIHsKKyAgICAgICAgIG1lbXNldChpcGFkZHIsIDAsIHNpemVv ZihpcGFkZHIpKTsKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19pX2dmc19jb25maWdfaG9zdG5h bWVfdG9fYWRkcmVzc19zdHJpbmcoCistICAgICAgICAgICAgdmFsdWUsIGlwYWRkciwgc2l6ZW9m KGlwYWRkcikpOyAgCisrICAgICAgICAgICAgdmFsdWUsIGlwYWRkciwgc2l6ZW9mKGlwYWRkcikp OworICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorLSAgICAgICAgeyAgIAor KyAgICAgICAgeworICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAgICAgIH0KKyAg ICAgICAgIGdsb2J1c19sX2dmc19jb25maWdfc2V0KAorQEAgLTI1NzgsMTUgKzI1NzgsMTUgQEAg Z2xvYnVzX2xfZ2ZzX2NvbmZpZ19taXNjKCkKKyAgICAgaWYoKHZhbHVlID0gZ2xvYnVzX2lfZ2Zz X2NvbmZpZ19zdHJpbmcoImhvc3RuYW1lIikpICE9IEdMT0JVU19OVUxMKQorICAgICB7CisgICAg ICAgICBnbG9idXNfbF9nZnNfY29uZmlnX3NldCgiZnFkbiIsIDAsIGdsb2J1c19saWJjX3N0cmR1 cCh2YWx1ZSkpOworLSAgICAgICAgCisrCisgICAgICAgICBtZW1zZXQoaXBhZGRyLCAwLCBzaXpl b2YoaXBhZGRyKSk7CisgICAgICAgICByZXN1bHQgPSBnbG9idXNfaV9nZnNfY29uZmlnX2hvc3Ru YW1lX3RvX2FkZHJlc3Nfc3RyaW5nKAorLSAgICAgICAgICAgIHZhbHVlLCBpcGFkZHIsIHNpemVv ZihpcGFkZHIpKTsgIAorKyAgICAgICAgICAgIHZhbHVlLCBpcGFkZHIsIHNpemVvZihpcGFkZHIp KTsKKyAgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKy0gICAgICAgIHsgICAK KysgICAgICAgIHsKKyAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgICAgICB9Cist ICAgICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAgaWYoZ2xvYnVzX2lfZ2ZzX2NvbmZp Z19zdHJpbmcoImNvbnRyb2xfaW50ZXJmYWNlIikgPT0gTlVMTCkKKyAgICAgICAgIHsKKyAgICAg ICAgICAgICBnbG9idXNfbF9nZnNfY29uZmlnX3NldCgKK0BAIC0yNjA1LDE4ICsyNjA1LDE4IEBA IGdsb2J1c19sX2dmc19jb25maWdfbWlzYygpCisgICAgICAgICBnbG9idXNfbGliY19nZXRob3N0 bmFtZShob3N0bmFtZSwgMTAyNCk7CisgICAgICAgICBnbG9idXNfbF9nZnNfY29uZmlnX3NldCgi ZnFkbiIsIDAsIGdsb2J1c19saWJjX3N0cmR1cChob3N0bmFtZSkpOworICAgICAgICAgZ2xvYnVz X2ZyZWUoaG9zdG5hbWUpOworLSAgICB9ICAgICAgICAgICAgCisrICAgIH0KKyAKKyAgICAgaWYo KHZhbHVlID0gZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19zdHJpbmcoInZlcnNpb25fdGFnIikpICE9IE5V TEwpCisgICAgIHsKKy0gICAgICAgIHRvb2xraXRfdmVyc2lvbiA9IAorKyAgICAgICAgdG9vbGtp dF92ZXJzaW9uID0KKyAgICAgICAgICAgICBnbG9idXNfY29tbW9uX2NyZWF0ZV9zdHJpbmcoIiVz ICVzIiwgdG9vbGtpdF9pZCwgdmFsdWUpOworICAgICB9CisgICAgIGVsc2UKKyAgICAgeworICAg ICAgICAgdG9vbGtpdF92ZXJzaW9uID0gZ2xvYnVzX2xpYmNfc3RyZHVwKHRvb2xraXRfaWQpOwor ICAgICB9CistICAgICAgICAKKysKKyAgICAgZGVmYXVsdF9iYW5uZXIgPSBnbG9idXNfY29tbW9u X2NyZWF0ZV9zdHJpbmcoCisgICAgICAgICAiJXMgR3JpZEZUUCBTZXJ2ZXIgJWQuJWQgKCVzLCAl ZC0lZCkgWyVzXSByZWFkeS4iLAorICAgICAgICAgZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19zdHJpbmco ImZxZG4iKSwKK0BAIC0yNjI2LDExICsyNjI2LDExIEBAIGdsb2J1c19sX2dmc19jb25maWdfbWlz YygpCisgICAgICAgICBsb2NhbF92ZXJzaW9uLnRpbWVzdGFtcCwKKyAgICAgICAgIGxvY2FsX3Zl cnNpb24uYnJhbmNoX2lkLAorICAgICAgICAgdG9vbGtpdF92ZXJzaW9uKTsKKy0gICAgICAgIAor KworICAgICBkYXRhID0gTlVMTDsKKyAgICAgaWYoZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19ib29sKCJi YW5uZXJfdGVyc2UiKSkKKyAgICAgeworLSAgICAgICAgZGF0YSA9IGdsb2J1c19saWJjX3N0cmR1 cCgiIik7ICAgICAgICAgICAgICAgIAorKyAgICAgICAgZGF0YSA9IGdsb2J1c19saWJjX3N0cmR1 cCgiIik7CisgICAgIH0KKyAgICAgZWxzZSBpZigodmFsdWUgPSBnbG9idXNfaV9nZnNfY29uZmln X3N0cmluZygiYmFubmVyX2ZpbGUiKSkgIT0gR0xPQlVTX05VTEwpCisgICAgIHsKK0BAIC0yNjQw LDEzICsyNjQwLDEzIEBAIGdsb2J1c19sX2dmc19jb25maWdfbWlzYygpCisgICAgIHsKKyAgICAg ICAgIGRhdGEgPSBnbG9idXNfbGliY19zdHJkdXAodmFsdWUpOworICAgICB9CistICAgIAorKwor ICAgICBpZihkYXRhICE9IE5VTEwpCisgICAgIHsKKyAgICAgICAgIGlmKGdsb2J1c19pX2dmc19j b25maWdfYm9vbCgiYmFubmVyX2FwcGVuZCIpKQorICAgICAgICAgeworICAgICAgICAgICAgIGNo YXIgKiAgICAgICAgICAgICAgICAgICAgICBiYW5uZXI7CistICAgICAgICAgICAgYmFubmVyID0g CisrICAgICAgICAgICAgYmFubmVyID0KKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2NvbW1vbl9j cmVhdGVfc3RyaW5nKCIlcyAlcyIsIGRlZmF1bHRfYmFubmVyLCBkYXRhKTsKKyAgICAgICAgICAg ICBnbG9idXNfZnJlZShkYXRhKTsKKyAgICAgICAgICAgICBkYXRhID0gYmFubmVyOworQEAgLTI2 NTcsOCArMjY1Nyw4IEBAIGdsb2J1c19sX2dmc19jb25maWdfbWlzYygpCisgICAgIHsKKyAgICAg ICAgIGRhdGEgPSBkZWZhdWx0X2Jhbm5lcjsKKyAgICAgfQorLSAgICBnbG9idXNfbF9nZnNfY29u ZmlnX3NldCgiYmFubmVyIiwgMSwgZGF0YSk7ICAgICAgICAgICAgICAgIAorLSAgICAgICAKKysg ICAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19zZXQoImJhbm5lciIsIDEsIGRhdGEpOworKworICAgICBk YXRhID0gZ2xvYnVzX2NvbW1vbl9jcmVhdGVfc3RyaW5nKAorICAgICAgICAgICAgICIlZC4lZCAo JXMsICVkLSVkKSBbJXNdIiwKKyAgICAgICAgICAgICBsb2NhbF92ZXJzaW9uLm1ham9yLAorQEAg LTI2NzMsMTQgKzI2NzMsMTQgQEAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19taXNjKCkKKyAgICAgaWYo KHZhbHVlID0gZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19zdHJpbmcoImxvZ2luX21zZ19maWxlIikpICE9 IEdMT0JVU19OVUxMKQorICAgICB7CisgICAgICAgICByYyA9IGdsb2J1c19sX2NvbmZpZ19sb2Fk ZmlsZSh2YWx1ZSwgJmRhdGEpOworLSAgICAgICAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19zZXQoImxv Z2luX21zZyIsIDAsIGRhdGEpOyAgICAgICAgICAgICAgICAKKysgICAgICAgIGdsb2J1c19sX2dm c19jb25maWdfc2V0KCJsb2dpbl9tc2ciLCAwLCBkYXRhKTsKKyAgICAgfQorIAorICAgICB2YWx1 ZSA9IGdsb2J1c19pX2dmc19jb25maWdfc3RyaW5nKCJsb2FkX2RzaV9tb2R1bGUiKTsKKyAgICAg aWYodmFsdWUgIT0gTlVMTCkKKyAgICAgeworICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAg ICAgICAgICAgICBwdHI7CistICAgICAgICAKKysKKyAgICAgICAgIHB0ciA9IHN0cmNocih2YWx1 ZSwgJzonKTsKKyAgICAgICAgIGlmKHB0cikKKyAgICAgICAgIHsKK0BAIC0yNzAwLDI2ICsyNzAw LDI2IEBAIGdsb2J1c19sX2dmc19jb25maWdfbWlzYygpCisgICAgICAgICBpZih2YWx1ZSkKKyAg ICAgICAgIHsKKyAgICAgICAgICAgICBpZihnbG9idXNfaV9nZnNfY29uZmlnX3N0cmluZygibG9h ZF9kc2lfbW9kdWxlIikgPT0gTlVMTCAmJgorLSAgICAgICAgICAgICAgICAhZ2xvYnVzX2lfZ2Zz X2NvbmZpZ19ib29sKCJkYXRhX25vZGUiKSAmJiAKKysgICAgICAgICAgICAgICAgIWdsb2J1c19p X2dmc19jb25maWdfYm9vbCgiZGF0YV9ub2RlIikgJiYKKyAgICAgICAgICAgICAgICAgIWdsb2J1 c19pX2dmc19jb25maWdfYm9vbCgiaHlicmlkIikpCisgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICBnbG9idXNfbF9nZnNfY29uZmlnX3NldCgKKy0gICAgICAgICAgICAgICAgICAgICJs b2FkX2RzaV9tb2R1bGUiLCAwLCBnbG9idXNfbGliY19zdHJkdXAoInJlbW90ZSIpKTsgICAgCisr ICAgICAgICAgICAgICAgICAgICAibG9hZF9kc2lfbW9kdWxlIiwgMCwgZ2xvYnVzX2xpYmNfc3Ry ZHVwKCJyZW1vdGUiKSk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIAorLSAgICAgICAg ICAgIC8qIGlmIHN0cmlwZV9jb3VudCB3YXNuJ3Qgc2V0LCBzZXQgaXQgdG8gdGhlIG51bWJlciBv ZiAKKysKKysgICAgICAgICAgICAvKiBpZiBzdHJpcGVfY291bnQgd2Fzbid0IHNldCwgc2V0IGl0 IHRvIHRoZSBudW1iZXIgb2YKKyAgICAgICAgICAgICAgKiBub2RlcyBjb25maWd1cmVkICovCisg ICAgICAgICAgICAgaWYoZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19pbnQoInN0cmlwZV9jb3VudCIpID09 IC0xKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgICAgIG5vZGVfY291bnQgPSAxOworICAgICAgICAgICAgICAgICBjaGFyICogICAgICAg ICAgICAgICAgICAgICAgcHRyOworLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAg ICAgcHRyID0gdmFsdWU7CisgICAgICAgICAgICAgICAgIHdoaWxlKHB0ciAmJiAqcHRyICYmIChw dHIgPSBzdHJjaHIocHRyLCAnLCcpKSAhPSBOVUxMKQorICAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgICAgICAgICAgICAgIG5vZGVfY291bnQr KzsKKy0gICAgICAgICAgICAgICAgfSAgICAgICAgICAgIAorKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgIGdsb2J1c19sX2dmc19jb25maWdfc2V0KCJzdHJpcGVfY291bnQiLCBu b2RlX2NvdW50LCBOVUxMKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CitAQCAtMjczMSw5 ICsyNzMxLDkgQEAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19taXNjKCkKKyAgICAgICAgICAgICAgICAg Z2xvYnVzX2xfZ2ZzX2NvbmZpZ19zZXQoInN0cmlwZV9jb3VudCIsIDEsIE5VTEwpOworICAgICAg ICAgICAgIH0KKyAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgICAgIAorKworICAgICB9 CistICAgIAorKworICAgICB2YWx1ZSA9IGdsb2J1c19saWJjX3N0cmR1cChnbG9idXNfaV9nZnNf Y29uZmlnX3N0cmluZygicG9wZW5fd2hpdGVsaXN0IikpOworICAgICBpZih2YWx1ZSAhPSBOVUxM KQorICAgICB7CitAQCAtMjc0MSwyMSArMjc0MSwyMSBAQCBnbG9idXNfbF9nZnNfY29uZmlnX21p c2MoKQorICAgICAgICAgd2hpbGUoKHB0ciA9IHN0cmNocihtb2R1bGUsICcsJykpICE9IE5VTEwp CisgICAgICAgICB7CisgICAgICAgICAgICAgKnB0ciA9ICdcMCc7CistICAgICAgICAgICAgZ2xv YnVzX2xpc3RfaW5zZXJ0KCZwb3Blbl9saXN0LCBnbG9idXNfbGliY19zdHJkdXAobW9kdWxlKSk7 IAorKyAgICAgICAgICAgIGdsb2J1c19saXN0X2luc2VydCgmcG9wZW5fbGlzdCwgZ2xvYnVzX2xp YmNfc3RyZHVwKG1vZHVsZSkpOworICAgICAgICAgICAgIG1vZHVsZSA9IHB0ciArIDE7CisgICAg ICAgICB9CisgICAgICAgICBpZihwdHIgPT0gTlVMTCkKKyAgICAgICAgIHsKKy0gICAgICAgICAg ICBnbG9idXNfbGlzdF9pbnNlcnQoJnBvcGVuX2xpc3QsIGdsb2J1c19saWJjX3N0cmR1cChtb2R1 bGUpKTsgCistICAgICAgICB9ICAgICAgICAgICAgICAgCistICAgICAgICBnbG9idXNfZnJlZSh2 YWx1ZSk7ICAgICAgICAgICAgIAorKyAgICAgICAgICAgIGdsb2J1c19saXN0X2luc2VydCgmcG9w ZW5fbGlzdCwgZ2xvYnVzX2xpYmNfc3RyZHVwKG1vZHVsZSkpOworKyAgICAgICAgfQorKyAgICAg ICAgZ2xvYnVzX2ZyZWUodmFsdWUpOworICAgICB9CistICAgIGdsb2J1c19sX2dmc19jb25maWdf c2V0KCJwb3Blbl9saXN0IiwgMCwgcG9wZW5fbGlzdCk7ICAgCisrICAgIGdsb2J1c19sX2dmc19j b25maWdfc2V0KCJwb3Blbl9saXN0IiwgMCwgcG9wZW5fbGlzdCk7CisgCisgICAgIGlmKGdsb2J1 c19pX2dmc19jb25maWdfc3RyaW5nKCJsb2FkX2RzaV9tb2R1bGUiKSA9PSBOVUxMKQorICAgICB7 CistICAgICAgICBnbG9idXNfbF9nZnNfY29uZmlnX3NldCgibG9hZF9kc2lfbW9kdWxlIiwgMCwg Z2xvYnVzX2xpYmNfc3RyZHVwKCJmaWxlIikpOyAgICAKKy0gICAgfSAKKysgICAgICAgIGdsb2J1 c19sX2dmc19jb25maWdfc2V0KCJsb2FkX2RzaV9tb2R1bGUiLCAwLCBnbG9idXNfbGliY19zdHJk dXAoImZpbGUiKSk7CisrICAgIH0KKyAKKyAgICAgdmFsdWUgPSBnbG9idXNfbGliY19zdHJkdXAo Z2xvYnVzX2lfZ2ZzX2NvbmZpZ19zdHJpbmcoImFsbG93ZWRfbW9kdWxlcyIpKTsKKyAgICAgaWYo dmFsdWUgIT0gTlVMTCkKK0BAIC0yNzY0LDE3ICsyNzY0LDE3IEBAIGdsb2J1c19sX2dmc19jb25m aWdfbWlzYygpCisgICAgICAgICB3aGlsZSgocHRyID0gc3RyY2hyKG1vZHVsZSwgJywnKSkgIT0g TlVMTCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICAqcHRyID0gJ1wwJzsKKy0gICAgICAgICAg ICBnbG9idXNfbGlzdF9pbnNlcnQoJm1vZHVsZV9saXN0LCBnbG9idXNfbGliY19zdHJkdXAobW9k dWxlKSk7IAorKyAgICAgICAgICAgIGdsb2J1c19saXN0X2luc2VydCgmbW9kdWxlX2xpc3QsIGds b2J1c19saWJjX3N0cmR1cChtb2R1bGUpKTsKKyAgICAgICAgICAgICBtb2R1bGUgPSBwdHIgKyAx OworICAgICAgICAgfQorICAgICAgICAgaWYocHRyID09IE5VTEwpCisgICAgICAgICB7CistICAg ICAgICAgICAgZ2xvYnVzX2xpc3RfaW5zZXJ0KCZtb2R1bGVfbGlzdCwgZ2xvYnVzX2xpYmNfc3Ry ZHVwKG1vZHVsZSkpOyAKKy0gICAgICAgIH0gICAgICAgICAgICAgICAKKy0gICAgICAgIGdsb2J1 c19mcmVlKHZhbHVlKTsgICAgICAgICAgICAgCisrICAgICAgICAgICAgZ2xvYnVzX2xpc3RfaW5z ZXJ0KCZtb2R1bGVfbGlzdCwgZ2xvYnVzX2xpYmNfc3RyZHVwKG1vZHVsZSkpOworKyAgICAgICAg fQorKyAgICAgICAgZ2xvYnVzX2ZyZWUodmFsdWUpOworICAgICB9CistICAgIGdsb2J1c19sX2dm c19jb25maWdfc2V0KCJtb2R1bGVfbGlzdCIsIDAsIG1vZHVsZV9saXN0KTsgICAKKy0gICAgCisr ICAgIGdsb2J1c19sX2dmc19jb25maWdfc2V0KCJtb2R1bGVfbGlzdCIsIDAsIG1vZHVsZV9saXN0 KTsKKysKKyAgICAgLyogaWYgYXV0aF9sZXZlbCBpcyAtMSBpdCBtZWFucyBpdCBoYXMgbm90IHll dCBiZWVuIHRvdWNoZWQgKi8KKyAgICAgc3dpdGNoKGdsb2J1c19pX2dmc19jb25maWdfaW50KCJh dXRoX2xldmVsIikpCisgICAgIHsKK0BAIC0yODIwLDcgKzI4MjAsNyBAQCBnbG9idXNfbF9nZnNf Y29uZmlnX21pc2MoKQorICAgICAgICAgaWYoZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19ib29sKCJmb3Jr IikpCisgICAgICAgICB7CisgICAgICAgICAgICAgLyogc2hvdWxkIGxvZyBhbiBlcnJvciAqLwor LSAgICAgICAgICAgIGdsb2J1c19sX2dmc19jb25maWdfc2V0KCJmb3JrIiwgR0xPQlVTX0ZBTFNF LCBOVUxMKTsgICAKKysgICAgICAgICAgICBnbG9idXNfbF9nZnNfY29uZmlnX3NldCgiZm9yayIs IEdMT0JVU19GQUxTRSwgTlVMTCk7CisgICAgICAgICB9CisgCisgICAgICAgICAvKiBzZXQgdGhl IGNvbnZlbmllbmNlIGNvbmYgb3B0ICovCitAQCAtMjg0MCw5ICsyODQwLDkgQEAgZ2xvYnVzX2xf Z2ZzX2NvbmZpZ19taXNjKCkKKyAgICAgICAgICAgICBnbG9idXNfbF9nZnNfY29uZmlnX3NldCgi aXBjX2RlbnlfZnJvbSIsIDAsIHN0cik7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCistICAg IGlmKGdsb2J1c19pX2dmc19jb25maWdfc3RyaW5nKCJyZW1vdGVfbm9kZXMiKSAmJiAKKy0gICAg ICAgICFnbG9idXNfaV9nZnNfY29uZmlnX2Jvb2woImRhdGFfbm9kZSIpICYmIAorKworKyAgICBp ZihnbG9idXNfaV9nZnNfY29uZmlnX3N0cmluZygicmVtb3RlX25vZGVzIikgJiYKKysgICAgICAg ICFnbG9idXNfaV9nZnNfY29uZmlnX2Jvb2woImRhdGFfbm9kZSIpICYmCisgICAgICAgICBnbG9i dXNfaV9nZnNfY29uZmlnX3N0cmluZygiaXBjX3N1YmplY3QiKSkKKyAgICAgeworICAgICAgICAg Y2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICBpcGNfZG47CitAQCAtMjg1MSw3ICsyODUx LDcgQEAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19taXNjKCkKKyAgICAgICAgIE9NX3VpbnQzMiAgICAg ICAgICAgICAgICAgICAgICAgbWFqX3N0YXQ7CisgICAgICAgICBnc3NfbmFtZV90ICAgICAgICAg ICAgICAgICAgICAgIGNyZWRfbmFtZTsKKyAgICAgICAgIGdzc19jcmVkX2lkX3QgICAgICAgICAg ICAgICAgICAgY3JlZDsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAgIGlwY19kbiA9IGdsb2J1 c19pX2dmc19jb25maWdfc3RyaW5nKCJpcGNfc3ViamVjdCIpOworIAorICAgICAgICAgaWYoc3Ry Y2FzZWNtcChpcGNfZG4sICJhdXRvIikgPT0gMCkKK0BAIC0yODg4LDExICsyODg4LDExIEBAIGds b2J1c19sX2dmc19jb25maWdfbWlzYygpCisgICAgICAgICAgICAgcmVzdWx0ID0gbWluX3N0YXQ7 CisgICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgICAgICAgfQorLSAgICAgICAgZ2xv YnVzX2xfZ2ZzX2NvbmZpZ19zZXQoImlwY19jcmVkIiwgMCwgY3JlZCk7ICAgICAgICAgICAgCisr ICAgICAgICBnbG9idXNfbF9nZnNfY29uZmlnX3NldCgiaXBjX2NyZWQiLCAwLCBjcmVkKTsKKyAg ICAgfQorLSAgICAKKy0gICAgZWxzZSBpZihnbG9idXNfaV9nZnNfY29uZmlnX3N0cmluZygicmVt b3RlX25vZGVzIikgJiYgCistICAgICAgICAhZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19ib29sKCJkYXRh X25vZGUiKSAmJiAKKysKKysgICAgZWxzZSBpZihnbG9idXNfaV9nZnNfY29uZmlnX3N0cmluZygi cmVtb3RlX25vZGVzIikgJiYKKysgICAgICAgICFnbG9idXNfaV9nZnNfY29uZmlnX2Jvb2woImRh dGFfbm9kZSIpICYmCisgICAgICAgICBnbG9idXNfaV9nZnNfY29uZmlnX3N0cmluZygiaXBjX2Ny ZWRlbnRpYWwiKSkKKyAgICAgeworICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAg ICAgICBjcmVkX2ZpbGU7CitAQCAtMjkwMCwxMyArMjkwMCwxMyBAQCBnbG9idXNfbF9nZnNfY29u ZmlnX21pc2MoKQorICAgICAgICAgT01fdWludDMyICAgICAgICAgICAgICAgICAgICAgICBtaW5f c3RhdDsKKyAgICAgICAgIE9NX3VpbnQzMiAgICAgICAgICAgICAgICAgICAgICAgbWFqX3N0YXQ7 CisgICAgICAgICBnc3NfY3JlZF9pZF90ICAgICAgICAgICAgICAgICAgIGNyZWQ7CistICAgICAg ICAKKysKKyAgICAgICAgIGNyZWRfZmlsZSA9IGdsb2J1c19pX2dmc19jb25maWdfc3RyaW5nKCJp cGNfY3JlZGVudGlhbCIpOworIAorICAgICAgICAgYnVmLnZhbHVlID0gZ2xvYnVzX2NvbW1vbl9j cmVhdGVfc3RyaW5nKAorICAgICAgICAgICAgICJYNTA5X1VTRVJfUFJPWFk9JXMiLCBjcmVkX2Zp bGUpOworICAgICAgICAgYnVmLmxlbmd0aCA9IHN0cmxlbihidWYudmFsdWUpOworLSAgICAKKysK KyAgICAgICAgIG1hal9zdGF0ID0gZ3NzX2ltcG9ydF9jcmVkKAorICAgICAgICAgICAgICZtaW5f c3RhdCwKKyAgICAgICAgICAgICAmY3JlZCwKK0BAIC0yOTIwLDIwICsyOTIwLDIwIEBAIGdsb2J1 c19sX2dmc19jb25maWdfbWlzYygpCisgICAgICAgICAgICAgcmVzdWx0ID0gbWluX3N0YXQ7Cisg ICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgICAgICAgfQorLSAgICAKKysKKyAgICAg ICAgIGdsb2J1c19mcmVlKGJ1Zi52YWx1ZSk7CistICAgICAgICAgICAgCistICAgICAgICBnbG9i dXNfbF9nZnNfY29uZmlnX3NldCgiaXBjX2NyZWQiLCAwLCBjcmVkKTsgICAgICAgICAgICAKKysK KysgICAgICAgIGdsb2J1c19sX2dmc19jb25maWdfc2V0KCJpcGNfY3JlZCIsIDAsIGNyZWQpOwor ICAgICB9CistICAgICAgICAKKysKKyAgICAgR2xvYnVzR0ZTRGVidWdFeGl0KCk7CisgICAgIHJl dHVybiBHTE9CVVNfU1VDQ0VTUzsKKy0gICAgCisrCisgZXJyb3JfZXhpdDoKKyAgICAgR2xvYnVz R0ZTRGVidWdFeGl0V2l0aEVycm9yKCk7CisgICAgIHJldHVybiByZXN1bHQ7CisgfQorLSAgICAK KysKKyAKKyAvKiBsb2dnaW5nIGlzIGF2YWlsYWJsZSBpbiB0aGlzIGZ1bmMgKi8KKyB2b2lkCitA QCAtMjk0NCw3ICsyOTQ0LDcgQEAgZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19wb3N0X2luaXQoKQorIAor ICAgICBpZihnbG9idXNfaV9nZnNfY29uZmlnX2Jvb2woImFsbG93X3VkdCIpICYmIGdsb2J1c19s X2dmc19udW1fdGhyZWFkcyA8IDEpCisgICAgIHsKKy0gICAgICAgIGdsb2J1c19nZnNfbG9nX21l c3NhZ2UoR0xPQlVTX0dGU19MT0dfV0FSTiwgCisrICAgICAgICBnbG9idXNfZ2ZzX2xvZ19tZXNz YWdlKEdMT0JVU19HRlNfTE9HX1dBUk4sCisgICAgICAgICAgICAgIkRpc2FibGluZyBVRFQ6IHRo cmVhZHMgbXVzdCBiZSBlbmFibGVkIGZvciBVRFQgdG8gZnVuY3Rpb24uXG4iKTsKKyAKKyAgICAg ICAgIGdsb2J1c19sX2dmc19jb25maWdfc2V0KCJhbGxvd191ZHQiLCBHTE9CVVNfRkFMU0UsIE5V TEwpOworQEAgLTI5NTQsMTMgKzI5NTQsMTMgQEAgZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19wb3N0X2lu aXQoKQorIH0KKyAKKyAvKioKKy0gKiBsb2FkIGNvbmZpZ3VyYXRpb24uICByZWFkIGZyb20gZGVm YXVsdHMsIGZpbGUsIGVudiwgYW5kIGNvbW1hbmQgbGluZSAKKysgKiBsb2FkIGNvbmZpZ3VyYXRp b24uICByZWFkIGZyb20gZGVmYXVsdHMsIGZpbGUsIGVudiwgYW5kIGNvbW1hbmQgbGluZQorICAq IGFyZ3VtZW50cy4gZWFjaCBvdmVycmlkaW5nIHRoZSBvdGhlci4KKyAgKiB0aGlzIGZ1bmN0aW9u IHdpbGwgbG9nIGVycm9yIG1lc3NhZ2VzIGFuZCBleGl0IHRoZSBzZXJ2ZXIgaWYgYW55CisgICog ZXJyb3JzIG9jY3VyLgorICAqIFhYWCBuZWVkIHRvIGFsbG93IGNvbmZpZyBlcnJvcnMgdG8gbG9n IHRvIHN5c2xvZywgc3RkZXJyLCBldGMKKyAgKi8KKy0gCisrCisgaW50CisgZ2xvYnVzX2lfZ2Zz X2NvbmZpZ19pbml0X2VudnMoCisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFyZ2MsCitAQCAtMjk4OCw4ICsyOTg4LDggQEAgZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19pbml0 X2VudnMoCisgICAgIHsKKyAgICAgICAgIHRtcF9hcmd2ID0gYXJndjsKKyAgICAgfQorLSAgICAK Ky0gICAgR0xPQlVTX0dTSV9TWVNDT05GSUdfR0VUX0NVUlJFTlRfV09SS0lOR19ESVIoJmN3ZF9z dHIpOyAKKysKKysgICAgR0xPQlVTX0dTSV9TWVNDT05GSUdfR0VUX0NVUlJFTlRfV09SS0lOR19E SVIoJmN3ZF9zdHIpOworIAorICAgICBnbG9iYWxfY29uZmlnX2ZpbGUgPSAiL2V0Yy9ncmlkLXNl Y3VyaXR5L2dyaWRmdHAuY29uZiI7CisgICAgIGxvY2FsX2NvbmZpZ19maWxlID0gTlVMTDsKK0BA IC0zMDAyLDE0ICszMDAyLDE0IEBAIGdsb2J1c19pX2dmc19jb25maWdfaW5pdF9lbnZzKAorICAg ICAgICAgeworICAgICAgICAgICAgIGFyZ3ArKzsKKyAgICAgICAgIH0KKy0gICAgICAgIGlmKGFy Z3BbMF0gPT0gJ2MnICYmIGFyZ3BbMV0gPT0gJ1wwJyAKKysgICAgICAgIGlmKGFyZ3BbMF0gPT0g J2MnICYmIGFyZ3BbMV0gPT0gJ1wwJworICAgICAgICAgICAgICYmIHRtcF9hcmd2W2FyZ19udW0g KyAxXSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBsb2NhbF9jb25maWdfZmlsZSA9IHN0cmR1 cCh0bXBfYXJndlthcmdfbnVtICsgMV0pOworICAgICAgICAgICAgIGFyZ19udW0rKzsKKyAgICAg ICAgICAgICBjbWRsaW5lX2NvbmZpZyA9IDE7CisgICAgICAgICB9CistICAgICAgICBlbHNlIGlm KGFyZ3BbMF0gPT0gJ0MnICYmIGFyZ3BbMV0gPT0gJ1wwJyAmJiAKKysgICAgICAgIGVsc2UgaWYo YXJncFswXSA9PSAnQycgJiYgYXJncFsxXSA9PSAnXDAnICYmCisgICAgICAgICAgICAgdG1wX2Fy Z3ZbYXJnX251bSArIDFdKQorICAgICAgICAgeworICAgICAgICAgICAgIGNvbmZfZGlyID0gc3Ry ZHVwKHRtcF9hcmd2W2FyZ19udW0gKyAxXSk7CitAQCAtMzAyMSwxNCArMzAyMSwxNCBAQCBnbG9i dXNfaV9nZnNfY29uZmlnX2luaXRfZW52cygKKyAgICAgICAgICAgICBhcmdfbnVtKys7CisgICAg ICAgICB9CisgICAgICAgICBlbHNlIGlmKCFzdHJjbXAoYXJncCwgInRocmVhZHMiKSAmJiB0bXBf YXJndlthcmdfbnVtICsgMV0pCistICAgICAgICB7ICAgICAgICAgICAgCisrICAgICAgICB7Cisg ICAgICAgICAgICAgZ2xvYnVzX2xfZ2ZzX251bV90aHJlYWRzID0gYXRvaSh0bXBfYXJndlthcmdf bnVtICsgMV0pOworICAgICAgICAgICAgIGFyZ19udW0rKzsKKyAgICAgICAgIH0KKyAgICAgICAg IGVsc2UgaWYoIXN0cmNtcChhcmdwLCAiaW5ldGQiKSB8fCAhc3RyY21wKGFyZ3AsICJkZWJ1ZyIp IHx8CistICAgICAgICAgICAgICAgICFzdHJjbXAoYXJncCwgImkiKSB8fCAhc3RyY21wKGFyZ3As ICJzc2giKSB8fCAKKysgICAgICAgICAgICAgICAgIXN0cmNtcChhcmdwLCAiaSIpIHx8ICFzdHJj bXAoYXJncCwgInNzaCIpIHx8CisgICAgICAgICAgICAgICAgICFzdHJjbXAoYXJncCwgIm5vLWZv cmsiKSkKKy0gICAgICAgIHsgICAgICAgICAgICAKKysgICAgICAgIHsKKyAgICAgICAgICAgICBn bG9idXNfbF9nZnNfaXNfd29ya2VyID0gR0xPQlVTX1RSVUU7CisgICAgICAgICB9CisgICAgICAg ICBlbHNlIGlmKCFzdHJjbXAoYXJncCwgInBvcnQtcmFuZ2UiKSAmJiB0bXBfYXJndlthcmdfbnVt ICsgMV0pCitAQCAtMzA0Miw3ICszMDQyLDcgQEAgZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19pbml0X2Vu dnMoCisgICAgIGlmKGxvY2FsX2NvbmZpZ19maWxlID09IE5VTEwpCisgICAgIHsKKyAgICAgICAg IGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wX2dsOworLSAgICAgICAgCisrCisg ICAgICAgICB0bXBfc3RyID0gbWFsbG9jKFBBVEhfTUFYKTsKKyAgICAgICAgIHRtcF9nbCA9IGdl dGVudigiR0xPQlVTX0xPQ0FUSU9OIik7CisgICAgICAgICBpZih0bXBfZ2wpCitAQCAtMzA1MSwx MCArMzA1MSwxMCBAQCBnbG9idXNfaV9nZnNfY29uZmlnX2luaXRfZW52cygKKyAgICAgICAgICAg ICBpZihyYyA+IDApCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBsb2NhbF9jb25m aWdfZmlsZSA9IHRtcF9zdHI7CistICAgICAgICAgICAgfSAgICAgICAgICAKKysgICAgICAgICAg ICB9CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKGJhc2Vfc3RyKQorICAg ICB7CisgICAgICAgICBmcmVlKGN3ZF9zdHIpOworQEAgLTMxMTAsNyArMzExMCw3IEBAIGdsb2J1 c19pX2dmc19jb25maWdfaW5pdF9lbnZzKAorICAgICB7CisgICAgICAgICByYyA9IGdsb2J1c19s X2dmc19jb25maWdfbG9hZF9lbnZzX2Zyb21fZmlsZShnbG9iYWxfY29uZmlnX2ZpbGUpOworICAg ICB9CistICAgIAorKworICAgICBpZihnbG9idXNfbF9nZnNfcG9ydF9yYW5nZSkKKyAgICAgewor ICAgICAgICAgc2V0ZW52KCJHTE9CVVNfVENQX1BPUlRfUkFOR0UiLCBnbG9idXNfbF9nZnNfcG9y dF9yYW5nZSwgMSk7CitAQCAtMzEyNSw3ICszMTI1LDcgQEAgZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19p bml0X2VudnMoCisgICAgICAgICBzZXRlbnYoIkdMT0JVU19DQUxMQkFDS19QT0xMSU5HX1RIUkVB RFMiLCBudGhyZWFkcywgMSk7CisgICAgICAgICBnbG9idXNfdGhyZWFkX3NldF9tb2RlbCgicHRo cmVhZCIpOworICAgICB9CistICAgIAorKworICAgICBpZihsb2NhbF9jb25maWdfZmlsZSAhPSBO VUxMKQorICAgICB7CisgICAgICAgICBmcmVlKGxvY2FsX2NvbmZpZ19maWxlKTsKK0BAIC0zMTM4 LDcgKzMxMzgsNyBAQCBnbG9idXNfaV9nZnNfY29uZmlnX2luaXRfZW52cygKKyAgICAgeworICAg ICAgICAgZnJlZShiYXNlX3N0cik7CisgICAgIH0KKy0gICAgCisrCisgICAgIHJldHVybiAwOwor IAorIGVycm9yOgorQEAgLTMxNjYsOSArMzE2Niw5IEBAIGdsb2J1c19pX2dmc19jb25maWdfaW5p dCgKKyAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZV9zdHIgPSBO VUxMOworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19pX2dmc19jb25maWdfaW5pdCk7CisgICAg IEdsb2J1c0dGU0RlYnVnRW50ZXIoKTsKKy0gICAgCisrCisgICAgIGdsb2J1c19sX2dmc19jb21t b25fbG9hZGVkID0gR0xPQlVTX1RSVUU7CistICAgIAorKworICAgICBnbG9idXNfaGFzaHRhYmxl X2luaXQoCisgICAgICAgICAmb3B0aW9uX3RhYmxlLAorICAgICAgICAgMjU2LAorQEAgLTMxODUs OSArMzE4NSw5IEBAIGdsb2J1c19pX2dmc19jb25maWdfaW5pdCgKKyAgICAgeworICAgICAgICAg dG1wX2FyZ3YgPSBhcmd2OworICAgICB9CistICAgCistICAgIEdMT0JVU19HU0lfU1lTQ09ORklH X0dFVF9DVVJSRU5UX1dPUktJTkdfRElSKCZjd2Rfc3RyKTsgCistICAgIAorKworKyAgICBHTE9C VVNfR1NJX1NZU0NPTkZJR19HRVRfQ1VSUkVOVF9XT1JLSU5HX0RJUigmY3dkX3N0cik7CisrCisg ICAgIGV4ZWNfbmFtZSA9IHRtcF9hcmd2WzBdOworICAgICAvKiBzZXQgZGVmYXVsdCBleGUgbmFt ZSAqLworICAgICBnbG9idXNfbG9jYXRpb24oJnRtcF9zdHIpOworQEAgLTMyMTEsNyArMzIxMSw3 IEBAIGdsb2J1c19pX2dmc19jb25maWdfaW5pdCgKKyAgICAgZ2xvYmFsX2NvbmZpZ19maWxlID0g Ii9ldGMvZ3JpZC1zZWN1cml0eS9ncmlkZnRwLmNvbmYiOworICAgICBsb2NhbF9jb25maWdfZmls ZSA9IE5VTEw7CisgICAgIGNvbmZfZGlyID0gTlVMTDsKKy0gICAgCisrCisgICAgIGZvcihhcmdf bnVtID0gMDsgYXJnX251bSA8IGFyZ2M7IGFyZ19udW0rKykKKyAgICAgeworICAgICAgICAgYXJn cCA9IHRtcF9hcmd2W2FyZ19udW1dOworQEAgLTMyMjMsNyArMzIyMyw3IEBAIGdsb2J1c19pX2dm c19jb25maWdfaW5pdCgKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBhcmdwKys7CisgICAgICAg ICB9CistICAgICAgICAKKysKKyAgICAgICAgIGlmKGFyZ3BbMF0gPT0gJ2MnICYmIGFyZ3BbMV0g PT0gJ1wwJyAmJiB0bXBfYXJndlthcmdfbnVtICsgMV0pCisgICAgICAgICB7CisgICAgICAgICAg ICAgbG9jYWxfY29uZmlnX2ZpbGUgPSBnbG9idXNfbGliY19zdHJkdXAodG1wX2FyZ3ZbYXJnX251 bSArIDFdKTsKK0BAIC0zMjMxLDcgKzMyMzEsNyBAQCBnbG9idXNfaV9nZnNfY29uZmlnX2luaXQo CisgICAgICAgICAgICAgYXJnX251bSsrOworICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg ICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBpZihhcmdwWzBdID09ICdDJyAmJiBhcmdwWzFd ID09ICdcMCcgJiYgdG1wX2FyZ3ZbYXJnX251bSArIDFdKQorICAgICAgICAgeworICAgICAgICAg ICAgIGNvbmZfZGlyID0gZ2xvYnVzX2xpYmNfc3RyZHVwKHRtcF9hcmd2W2FyZ19udW0gKyAxXSk7 CitAQCAtMzI0NSwxNCArMzI0NSwxNCBAQCBnbG9idXNfaV9nZnNfY29uZmlnX2luaXQoCisgICAg ICAgICAgICAgY29udGludWU7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCisrCisgICAgIGlm KGxvY2FsX2NvbmZpZ19maWxlID09IE5VTEwgJiYgIWFyZ3Zfb25seSkKKyAgICAgeworICAgICAg ICAgZ2xvYnVzX2V2YWxfcGF0aCgiJHtzeXNjb25mZGlyfS9ncmlkZnRwLmNvbmYiLCAmbG9jYWxf Y29uZmlnX2ZpbGUpOworICAgICB9CisgCisgICAgIGdsb2J1c19sX2dmc19jb25maWdfbG9hZF9k ZWZhdWx0cygpOworLSAgICAgICAgCisrCisgICAgIGlmKGJhc2Vfc3RyKQorICAgICB7CisgICAg ICAgICBnbG9idXNfZnJlZShjd2Rfc3RyKTsKK0BAIC0zMjc5LDcgKzMyNzksNyBAQCBnbG9idXNf aV9nZnNfY29uZmlnX2luaXQoCisgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgIH0K KyAgICAgfQorLSAgICAKKysKKyAgICAgaWYobG9jYWxfY29uZmlnX2ZpbGUgIT0gTlVMTCkKKyAg ICAgeworICAgICAgICAgaWYoKmxvY2FsX2NvbmZpZ19maWxlICE9ICcvJykKK0BAIC0zMzAzLDcg KzMzMDMsNyBAQCBnbG9idXNfaV9nZnNfY29uZmlnX2luaXQoCisgICAgIHsKKyAgICAgICAgIHJj ID0gZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19sb2FkX2VudnNfZnJvbV9maWxlKGdsb2JhbF9jb25maWdf ZmlsZSk7CisgICAgIH0KKy0gICAgICAgIAorKworICAgICBpZighYXJndl9vbmx5KQorICAgICB7 CisgICAgICAgICBnbG9idXNfbF9nZnNfY29uZmlnX2xvYWRfY29uZmlnX2VudigpOworQEAgLTMz MTMsMTUgKzMzMTMsMTUgQEAgZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19pbml0KAorICAgICB7CisgICAg ICAgICBnb3RvIGVycm9yOworICAgICB9CistICAgIAorKworICAgICByZXN1bHQgPSBnbG9idXNf bF9nZnNfY29uZmlnX21pc2MoKTsKKyAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQor ICAgICB7CistICAgICAgICBnbG9idXNfZ2ZzX2xvZ19leGl0X21lc3NhZ2UoIkVycm9yIGluIHBv c3QgY29uZmlnIHNldHVwOlxuICVzIiwgCisrICAgICAgICBnbG9idXNfZ2ZzX2xvZ19leGl0X21l c3NhZ2UoIkVycm9yIGluIHBvc3QgY29uZmlnIHNldHVwOlxuICVzIiwKKyAgICAgICAgICAgICBn bG9idXNfZXJyb3JfcHJpbnRfZnJpZW5kbHkoZ2xvYnVzX2Vycm9yX3BlZWsocmVzdWx0KSkpOwor ICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgfQorLSAgICAKKysKKyAgICAgZ2xvYnVzX2xfZ2Zz X2NvbmZpZ19zZXQoImV4ZWNfbmFtZSIsIDAsIGV4ZWNfbmFtZSk7CisgICAgIGdsb2J1c19sX2dm c19jb25maWdfc2V0KCJhcmd2IiwgMCwgdG1wX2FyZ3YpOworICAgICBnbG9idXNfbF9nZnNfY29u ZmlnX3NldCgiYXJnYyIsIGFyZ2MsIE5VTEwpOworQEAgLTMzMzgsNyArMzMzOCw3IEBAIGdsb2J1 c19pX2dmc19jb25maWdfaW5pdCgKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2ZyZWUoYmFzZV9z dHIpOworICAgICB9CistICAgIAorKworICAgICBnbG9idXNfbXV0ZXhfaW5pdCgmZ2xvYnVzX2lf Z2ZzX2NvbmZpZ19tdXRleCwgTlVMTCk7CisgCisgICAgIEdsb2J1c0dGU0RlYnVnRXhpdCgpOwor QEAgLTMzNTQsMTUgKzMzNTQsMTUgQEAgZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19pbnQoCisgICAgIGNv bnN0IGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbl9uYW1lKQorIHsKKyAgICAg Z2xvYnVzX2xfZ2ZzX2NvbmZpZ19vcHRpb25fdCAqICAgICAgb3B0aW9uOworLSAgICBpbnQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7ICAgIAorKyAgICBpbnQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IDA7CisgICAgIEdsb2J1c0dGU05h bWUoZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19pbnQpOworICAgICBHbG9idXNHRlNEZWJ1Z0VudGVyKCk7 CistICAgIAorLSAgICBvcHRpb24gPSAoZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19vcHRpb25fdCAqKSAK KysKKysgICAgb3B0aW9uID0gKGdsb2J1c19sX2dmc19jb25maWdfb3B0aW9uX3QgKikKKyAgICAg ICAgIGdsb2J1c19oYXNodGFibGVfbG9va3VwKCZvcHRpb25fdGFibGUsICh2b2lkICopIG9wdGlv bl9uYW1lKTsKKy0gICAgICAgIAorKworICAgICBpZihvcHRpb24pCistICAgIHsgICAgICAgIAor KyAgICB7CisgICAgICAgICB2YWx1ZSA9IG9wdGlvbi0+aW50X3ZhbHVlOworICAgICB9CisgCitA QCAtMzM3NiwxNSArMzM3NiwxNSBAQCBnbG9idXNfaV9nZnNfY29uZmlnX2dldCgKKyAgICAgY29u c3QgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uX25hbWUpCisgeworICAgICBn bG9idXNfbF9nZnNfY29uZmlnX29wdGlvbl90ICogICAgICBvcHRpb247CistICAgIHZvaWQgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTlVMTDsgICAgCisrICAgIHZvaWQg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTlVMTDsKKyAgICAgR2xvYnVz R0ZTTmFtZShnbG9idXNfaV9nZnNfY29uZmlnX2dldCk7CisgICAgIEdsb2J1c0dGU0RlYnVnRW50 ZXIoKTsKKy0gICAgCistICAgIG9wdGlvbiA9IChnbG9idXNfbF9nZnNfY29uZmlnX29wdGlvbl90 ICopIAorKworKyAgICBvcHRpb24gPSAoZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19vcHRpb25fdCAqKQor ICAgICAgICAgZ2xvYnVzX2hhc2h0YWJsZV9sb29rdXAoJm9wdGlvbl90YWJsZSwgKHZvaWQgKikg b3B0aW9uX25hbWUpOworLSAgICAgICAgCisrCisgICAgIGlmKG9wdGlvbiAmJiBvcHRpb24tPnZh bHVlKQorLSAgICB7ICAgICAgICAKKysgICAgeworICAgICAgICAgdmFsdWUgPSBvcHRpb24tPnZh bHVlOworICAgICB9CisgCitAQCAtMzQxOCw3ICszNDE4LDcgQEAgZ2xvYnVzX2lfZ2ZzX2NvbmZp Z19pc19hbm9ueW1vdXMoCisgICAgICAgICAgICAgdmFsaWQgPSBHTE9CVVNfVFJVRTsKKyAgICAg ICAgIH0KKyAgICAgfQorLSAgICAKKysKKyAgICAgR2xvYnVzR0ZTRGVidWdFeGl0KCk7CisgICAg IHJldHVybiB2YWxpZDsKKyB9CitAQCAtMzQ0NCw3ICszNDQ0LDcgQEAgZ2xvYnVzX2lfZ2ZzX2Nv bmZpZ19hbGxvd19hZGRyKAorICAgICAgICAgICAgIGdsb2J1c19pX2dmc19jb25maWdfc3RyaW5n KCJpcGNfZGVueV9mcm9tIikpOworICAgICB9CisgICAgIGVsc2UKKy0gICAgeyAKKysgICAgewor ICAgICAgICAgYWxsb3dfbGlzdCA9IGdsb2J1c19saWJjX3N0cmR1cCgKKyAgICAgICAgICAgICBn bG9idXNfaV9nZnNfY29uZmlnX3N0cmluZygiYWxsb3dfZnJvbSIpKTsKKyAgICAgICAgIGRlbnlf bGlzdCA9IGdsb2J1c19saWJjX3N0cmR1cCgKK0BAIC0zNTE3LDcgKzM1MTcsNyBAQCBnbG9idXNf aV9nZnNfY29uZmlnX2dldF9tb2R1bGVfbmFtZSgKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNf aV9nZnNfY29uZmlnX2dldF9tb2R1bGVfbmFtZSk7CisgICAgIEdsb2J1c0dGU0RlYnVnRW50ZXIo KTsKKyAKKy0gICAgbW9kdWxlX2xpc3QgPSAoZ2xvYnVzX2xpc3RfdCAqKSBnbG9idXNfaV9nZnNf Y29uZmlnX2dldCgibW9kdWxlX2xpc3QiKTsgIAorKyAgICBtb2R1bGVfbGlzdCA9IChnbG9idXNf bGlzdF90ICopIGdsb2J1c19pX2dmc19jb25maWdfZ2V0KCJtb2R1bGVfbGlzdCIpOworICAgICBm b3IobGlzdCA9IG1vZHVsZV9saXN0OworICAgICAgICAgIWdsb2J1c19saXN0X2VtcHR5KGxpc3Qp ICYmICFmb3VuZDsKKyAgICAgICAgIGxpc3QgPSBnbG9idXNfbGlzdF9yZXN0KGxpc3QpKQorQEAg LTM1MzksNyArMzUzOSw3IEBAIGdsb2J1c19pX2dmc19jb25maWdfZ2V0X21vZHVsZV9uYW1lKAor ICAgICAgICAgeworICAgICAgICAgICAgIGZvdW5kID0gR0xPQlVTX1RSVUU7CisgICAgICAgICB9 CistICAgIH0gCisrICAgIH0KKyAgICAgaWYoZm91bmQpCisgICAgIHsKKyAgICAgICAgIG91dF9t b2R1bGUgPSBtb2R1bGU7CitAQCAtMzU2MCw3ICszNTYwLDcgQEAgZ2xvYnVzX2dmc19jb25maWdf Z2V0X2Jvb2woCisgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgIHJjOwor IAorICAgICBnbG9idXNfbXV0ZXhfbG9jaygmZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19tdXRleCk7Cist ICAgIHJjID0gZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19ib29sKG9wdGlvbl9uYW1lKTsgICAgCisrICAg IHJjID0gZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19ib29sKG9wdGlvbl9uYW1lKTsKKyAgICAgZ2xvYnVz X211dGV4X3VubG9jaygmZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19tdXRleCk7CisgICAgIHJldHVybiBy YzsKKyB9CitAQCAtMzU3Miw3ICszNTcyLDcgQEAgZ2xvYnVzX2dmc19jb25maWdfZ2V0X3N0cmlu ZygKKyAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmM7CisgCisgICAg IGdsb2J1c19tdXRleF9sb2NrKCZnbG9idXNfaV9nZnNfY29uZmlnX211dGV4KTsKKy0gICAgcmMg PSBnbG9idXNfaV9nZnNfY29uZmlnX3N0cmluZyhvcHRpb25fbmFtZSk7ICAgIAorKyAgICByYyA9 IGdsb2J1c19pX2dmc19jb25maWdfc3RyaW5nKG9wdGlvbl9uYW1lKTsKKyAgICAgZ2xvYnVzX211 dGV4X3VubG9jaygmZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19tdXRleCk7CisgICAgIHJldHVybiByYzsK KyB9CitAQCAtMzU4NCw3ICszNTg0LDcgQEAgZ2xvYnVzX2dmc19jb25maWdfZ2V0X2xpc3QoCisg ICAgIGdsb2J1c19saXN0X3QgKiAgICAgICAgICAgICAgICAgICAgIHJjOworIAorICAgICBnbG9i dXNfbXV0ZXhfbG9jaygmZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19tdXRleCk7CistICAgIHJjID0gZ2xv YnVzX2lfZ2ZzX2NvbmZpZ19saXN0KG9wdGlvbl9uYW1lKTsgICAgCisrICAgIHJjID0gZ2xvYnVz X2lfZ2ZzX2NvbmZpZ19saXN0KG9wdGlvbl9uYW1lKTsKKyAgICAgZ2xvYnVzX211dGV4X3VubG9j aygmZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19tdXRleCk7CisgICAgIHJldHVybiByYzsKKyB9CitAQCAt MzU5Niw3ICszNTk2LDcgQEAgZ2xvYnVzX2dmc19jb25maWdfZ2V0KAorICAgICB2b2lkICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByYzsKKyAKKyAgICAgZ2xvYnVzX211dGV4X2xvY2so Jmdsb2J1c19pX2dmc19jb25maWdfbXV0ZXgpOworLSAgICByYyA9IGdsb2J1c19pX2dmc19jb25m aWdfZ2V0KG9wdGlvbl9uYW1lKTsgICAgCisrICAgIHJjID0gZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19n ZXQob3B0aW9uX25hbWUpOworICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZnbG9idXNfaV9nZnNf Y29uZmlnX211dGV4KTsKKyAgICAgcmV0dXJuIHJjOworIH0KK0BAIC0zNjA4LDcgKzM2MDgsNyBA QCBnbG9idXNfZ2ZzX2NvbmZpZ19nZXRfaW50KAorICAgICBpbnQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByYzsKKyAKKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJmdsb2J1c19pX2dm c19jb25maWdfbXV0ZXgpOworLSAgICByYyA9IGdsb2J1c19pX2dmc19jb25maWdfaW50KG9wdGlv bl9uYW1lKTsgICAgCisrICAgIHJjID0gZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19pbnQob3B0aW9uX25h bWUpOworICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZnbG9idXNfaV9nZnNfY29uZmlnX211dGV4 KTsKKyAgICAgcmV0dXJuIHJjOworIH0KK2RpZmYgLS1naXQgYS9ncmlkZnRwL3NlcnZlci9zcmMv Z2xvYnVzX2lfZ2ZzX2NvbnRyb2wuYyBiL2dyaWRmdHAvc2VydmVyL3NyYy9nbG9idXNfaV9nZnNf Y29udHJvbC5jCitpbmRleCBlMTg5NTNiZWMuLjZjMzY5YzFkMSAxMDA2NDQKKy0tLSBhL2dyaWRm dHAvc2VydmVyL3NyYy9nbG9idXNfaV9nZnNfY29udHJvbC5jCisrKysgYi9ncmlkZnRwL3NlcnZl ci9zcmMvZ2xvYnVzX2lfZ2ZzX2NvbnRyb2wuYworQEAgLTkxLDcgKzkxLDcgQEAgdHlwZWRlZiBz dHJ1Y3QKKyAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWU7 CisgICAgIGdsb2J1c19ncmlkZnRwX3NlcnZlcl9jb250cm9sX3QgICAgIHNlcnZlcl9oYW5kbGU7 CisgICAgIGdsb2J1c19vYmplY3RfdCAqICAgICAgICAgICAgICAgICAgIGNsb3NlX2Vycm9yOwor LSAgICAKKysKKyAgICAgZ2xvYnVzX2hhc2h0YWJsZV90ICAgICAgICAgICAgICAgICAgY3VzdG9t X2NtZF90YWJsZTsKKyB9IGdsb2J1c19sX2dmc19zZXJ2ZXJfaW5zdGFuY2VfdDsKKyAKK0BAIC0x MDUsNyArMTA1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKKyAKKyAgICAgZ2xvYnVzX2dmc19vcGVyYXRp b25fdHlwZV90ICAgICAgICAgYm91bmNlX3R5cGU7CisgICAgIGdsb2J1c19pX2dmc19kYXRhX2Nh bGxiYWNrX3QgICAgICAgIGJvdW5jZV9jYjsKKy0gICAgdm9pZCAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYm91bmNlX2luZm87IAorKyAgICB2b2lkICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBib3VuY2VfaW5mbzsKKyB9IGdsb2J1c19sX2dmc19yZXF1ZXN0X2luZm9fdDsK KyAKKyB0eXBlZGVmIHN0cnVjdCBnbG9idXNfbF9nZnNfYXV0aF9pbmZvX3MKK0BAIC0xMjMsNyAr MTIzLDcgQEAgc3RhdGljIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgIGdsb2J1c19s X2dmc19jb250cm9sX3Nob3VsZF9iZV9nb25lID0gR0wKKyBjaGFyICoKKyBnbG9idXNfaV9nc2Nf c3RyaW5nX3RvXzk1OSgKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29kZSwKKy0gICAgY29uc3QgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgaW5fc3RyLCAK KysgICAgY29uc3QgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgaW5fc3RyLAorICAgICBj b25zdCBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICBwcmVsaW5lKTsKKyAKKyBzdGF0aWMK K0BAIC0xMzMsNyArMTMzLDcgQEAgZ2xvYnVzX2xfZ2ZzX2NvbnRyb2xfbG9nKAorICAgICBjb25z dCBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLAorICAgICBpbnQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLAorICAgICB2b2lkICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1c2VyX2FyZyk7CistICAgIAorKworIHN0YXRpYworIHZvaWQKKyBn bG9idXNfbF9nZnNfcmVxdWVzdF9jdXN0b21fY29tbWFuZCgKK0BAIC0xNDcsNyArMTQ3LDcgQEAg c3RhdGljIGludAorIGdsb2J1c19sX2dmc19hY3RpdmF0ZSgpCisgeworICAgICBpbnQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByYyA9IDA7CistICAgICAgICAKKysKKyAgICAgcmMg PSBnbG9idXNfbW9kdWxlX2FjdGl2YXRlKEdMT0JVU19YSU9fTU9EVUxFKTsKKyAgICAgaWYocmMg IT0gMCkKKyAgICAgeworQEAgLTE2OCw3ICsxNjgsNyBAQCBnbG9idXNfbF9nZnNfYWN0aXZhdGUo KQorICAgICB7CisgICAgICAgICByZXR1cm4gcmM7CisgICAgIH0KKy0gICAgCisrCisgICAgIEds b2J1c0RlYnVnSW5pdChHTE9CVVNfR1JJREZUUF9TRVJWRVIsCisgICAgICAgICBFUlJPUiBXQVJO SU5HIFRSQUNFIElOVEVSTkFMX1RSQUNFIElORk8gU1RBVEUgSU5GT19WRVJCT1NFKTsKKyAKK0BA IC0yNDgsNyArMjQ4LDcgQEAgZ2xvYnVzX2lfZ2ZzX2NvbnRyb2xfaW5pdCgpCisgICAgICAgICAi Y29ubmVjdGlvbnNfbWF4IiwKKyAgICAgICAgIGdsb2J1c19sX2dmc19jb25uX21heF9jaGFuZ2Vf Y2IsCisgICAgICAgICBOVUxMKTsKKy0gICAgICAgICAKKysKKyAgICAgR2xvYnVzR0ZTRGVidWdF eGl0KCk7CisgfQorIAorQEAgLTI2NCwxMiArMjY0LDEyIEBAIGdsb2J1c19pX2dmc19jb250cm9s X3N0b3AoKQorICAgICB7CisgICAgICAgICBnbG9idXNfbF9nZnNfY29udHJvbF9hY3RpdmUgPSBH TE9CVVNfRkFMU0U7CisgICAgICAgICBnbG9idXNfbF9nZnNfY29udHJvbF9zaG91bGRfYmVfZ29u ZSA9IEdMT0JVU19UUlVFOworLSAgICAgICAgCisrCisgICAgICAgICBmb3IobGlzdCA9IGdsb2J1 c19sX2dmc19zZXJ2ZXJfaGFuZGxlX2xpc3Q7CisgICAgICAgICAgICAgIWdsb2J1c19saXN0X2Vt cHR5KGxpc3QpOworICAgICAgICAgICAgIGxpc3QgPSBnbG9idXNfbGlzdF9yZXN0KGxpc3QpKQor ICAgICAgICAgeworLSAgICAgICAgICAgIGluc3RhbmNlID0gKGdsb2J1c19sX2dmc19zZXJ2ZXJf aW5zdGFuY2VfdCAqKSAKKysgICAgICAgICAgICBpbnN0YW5jZSA9IChnbG9idXNfbF9nZnNfc2Vy dmVyX2luc3RhbmNlX3QgKikKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2xpc3RfZmlyc3QobGlz dCk7CisgCisgICAgICAgICAgICAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2NvbnRyb2xfc3RvcChp bnN0YW5jZS0+c2VydmVyX2hhbmRsZSk7CitAQCAtMzAwLDcgKzMwMCw3IEBAIGdsb2J1c19sX2dm c19yZXF1ZXN0X2luZm9faW5pdCgKKyAgICAgICAgIHJlc3VsdCA9IEdsb2J1c0dGU0Vycm9yTWVt b3J5KCJyZXF1ZXN0Iik7CisgICAgICAgICBnb3RvIGVycm9yOworICAgICB9CistICAgIAorKwor ICAgICByZXF1ZXN0LT5jb250cm9sX29wID0gY29udHJvbF9vcDsKKyAgICAgcmVxdWVzdC0+aW5z dGFuY2UgPSBpbnN0YW5jZTsKKyAgICAgcmVxdWVzdC0+aW5mbyA9IGluZm9fc3RydWN0OworQEAg LTQxMSwxMyArNDExLDEzIEBAIGdsb2J1c19sX2dmc19rdnN0cl9wYXRoKAorICAgICB7CisgICAg ICAgICBuZXdfa3ZzdHIgPSBnbG9idXNfbGliY19zdHJkdXAoa3ZzdHIpOworICAgICB9CistICAg IAorKworICAgICBnbG9idXNfZnJlZShjaGtfcGF0aCk7CisgICAgIGdsb2J1c19mcmVlKHJlYWxf cGF0aCk7CistICAgIAorKworICAgICAqb3V0X2t2c3RyID0gbmV3X2t2c3RyOworICAgICByZXR1 cm4gR0xPQlVTX1NVQ0NFU1M7CistICAgIAorKworIGVycjoKKyAgICAgaWYoY2hrX3BhdGgpCisg ICAgIHsKK0BAIC00MjcsOCArNDI3LDggQEAgZXJyOgorICAgICB7CisgICAgICAgICBnbG9idXNf ZnJlZShyZWFsX3BhdGgpOworICAgICB9CistICAgICAgICAKKy0gICAgcmV0dXJuIHJlc3VsdDsg ICAgCisrCisrICAgIHJldHVybiByZXN1bHQ7CisgfQorIAorIAorQEAgLTQ2NSw3ICs0NjUsNyBA QCBnbG9idXNfbF9nZnNfY2hhbm5lbF9jbG9zZV9jYigKKyAgICAgeworICAgICAgICAgaW5zdGFu Y2UtPmNsb3NlX2Z1bmMoaW5zdGFuY2UtPmNsb3NlX2FyZywgaW5zdGFuY2UtPmNsb3NlX2Vycm9y KTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaWYoaW5zdGFuY2UtPmhvbWVfZGlyKQorICAgICB7 CisgICAgICAgICBnbG9idXNfZnJlZShpbnN0YW5jZS0+aG9tZV9kaXIpOworQEAgLTUwNSw3ICs1 MDUsNyBAQCBnbG9idXNfbF9nZnNfZG9uZV9jYigKKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJmds b2J1c19sX2dmc19jb250cm9sX211dGV4KTsKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2xfZ2Zz X2NvbnRyb2xfc2hvdWxkX2JlX2dvbmUgPSBHTE9CVVNfVFJVRTsKKy0gICAgICAgIAorKworICAg ICAgICAgZ2xvYnVzX2xpc3RfcmVtb3ZlKCZnbG9idXNfbF9nZnNfc2VydmVyX2hhbmRsZV9saXN0 LAorICAgICAgICAgICAgIGdsb2J1c19saXN0X3NlYXJjaChnbG9idXNfbF9nZnNfc2VydmVyX2hh bmRsZV9saXN0LCBpbnN0YW5jZSkpOworICAgICB9CitAQCAtNTEzLDcgKzUxMyw3IEBAIGdsb2J1 c19sX2dmc19kb25lX2NiKAorIAorICAgICBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfY29udHJvbF9k ZXN0cm95KGluc3RhbmNlLT5zZXJ2ZXJfaGFuZGxlKTsKKyAKKy0gICAgaW5zdGFuY2UtPmNsb3Nl X2Vycm9yID0gCisrICAgIGluc3RhbmNlLT5jbG9zZV9lcnJvciA9CisgICAgICAgICAocmVzdWx0 ID09IEdMT0JVU19TVUNDRVNTID8gTlVMTCA6IGdsb2J1c19lcnJvcl9nZXQocmVzdWx0KSk7Cisg ICAgIHJlc3VsdCA9IGdsb2J1c194aW9fcmVnaXN0ZXJfY2xvc2UoCisgICAgICAgICBpbnN0YW5j ZS0+eGlvX2hhbmRsZSwKK0BAIC01NzQsNTQgKzU3NCw1NCBAQCBnbG9idXNfbF9nZnNfYXV0aF9z ZXNzaW9uX2NiKAorICAgICAgICAgICAgICJVc2VyICVzIHN1Y2Nlc3NmdWxseSBhdXRob3JpemVk LlxuIiwKKyAgICAgICAgICAgICByZXBseS0+aW5mby5zZXNzaW9uLnVzZXJuYW1lKTsKKyAKKy0g ICAgICAgIGlmKHJlcGx5LT5pbmZvLnNlc3Npb24uaG9tZV9kaXIgIT0gTlVMTCAmJiAKKysgICAg ICAgIGlmKHJlcGx5LT5pbmZvLnNlc3Npb24uaG9tZV9kaXIgIT0gTlVMTCAmJgorICAgICAgICAg ICAgIGdsb2J1c19pX2dmc19jb25maWdfYm9vbCgidXNlX2hvbWVfZGlycyIpKQorICAgICAgICAg eworLSNpZmRlZiBXSU4zMiAgICAgICAgICAgIAorLSAgICAgICAgICAgIGlmKGlzYWxwaGEocmVw bHktPmluZm8uc2Vzc2lvbi5ob21lX2RpclswXSkgJiYgCisrI2lmZGVmIFdJTjMyCisrICAgICAg ICAgICAgaWYoaXNhbHBoYShyZXBseS0+aW5mby5zZXNzaW9uLmhvbWVfZGlyWzBdKSAmJgorICAg ICAgICAgICAgICAgICByZXBseS0+aW5mby5zZXNzaW9uLmhvbWVfZGlyWzFdID09ICc6JykKKyAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHJlcGx5LT5pbmZvLnNlc3Npb24uaG9tZV9k aXJbMV0gPSByZXBseS0+aW5mby5zZXNzaW9uLmhvbWVfZGlyWzBdOworICAgICAgICAgICAgICAg ICByZXBseS0+aW5mby5zZXNzaW9uLmhvbWVfZGlyWzBdID0gJy8nOworLSAgICAgICAgICAgIH0g CistI2VuZGlmICAgICAgICAgICAgCisrICAgICAgICAgICAgfQorKyNlbmRpZgorICAgICAgICAg ICAgIGdsb2J1c19ncmlkZnRwX3NlcnZlcl9jb250cm9sX3NldF9jd2QoCisgICAgICAgICAgICAg ICAgIGF1dGhfaW5mby0+aW5zdGFuY2UtPnNlcnZlcl9oYW5kbGUsCisgICAgICAgICAgICAgICAg IHJlcGx5LT5pbmZvLnNlc3Npb24uaG9tZV9kaXIpOworICAgICAgICAgfQorLSAgICAgICAgCisr CisgICAgICAgICBpZihyZXBseS0+aW5mby5zZXNzaW9uLmhvbWVfZGlyKQorICAgICAgICAgewor LSAgICAgICAgICAgIGF1dGhfaW5mby0+aW5zdGFuY2UtPmhvbWVfZGlyID0gCisrICAgICAgICAg ICAgYXV0aF9pbmZvLT5pbnN0YW5jZS0+aG9tZV9kaXIgPQorICAgICAgICAgICAgICAgICBnbG9i dXNfbGliY19zdHJkdXAocmVwbHktPmluZm8uc2Vzc2lvbi5ob21lX2Rpcik7CisgICAgICAgICB9 CistICAgICAgICAvKiAgICAgIAorKyAgICAgICAgLyoKKyAgICAgICAgIGVsc2UKKyAgICAgICAg IHsKKyAgICAgICAgICAgICBhdXRoX2luZm8tPmluc3RhbmNlLT5ob21lX2RpciA9IGdsb2J1c19s aWJjX3N0cmR1cCgiLyIpOworICAgICAgICAgfQorICAgICAgICAgKi8KKy0gICAgICAgIGF1dGhf aW5mby0+aW5zdGFuY2UtPnVzZXJuYW1lID0gCisrICAgICAgICBhdXRoX2luZm8tPmluc3RhbmNl LT51c2VybmFtZSA9CisgICAgICAgICAgICAgZ2xvYnVzX2xpYmNfc3RyZHVwKHJlcGx5LT5pbmZv LnNlc3Npb24udXNlcm5hbWUpOworLSAgICAgICAgCistICAgICAgICBpZihyZXBseS0+b3BfaW5m byAmJiAKKysKKysgICAgICAgIGlmKHJlcGx5LT5vcF9pbmZvICYmCisgICAgICAgICAgICAgIWds b2J1c19oYXNodGFibGVfZW1wdHkoJnJlcGx5LT5vcF9pbmZvLT5jdXN0b21fY29tbWFuZF90YWJs ZSkpCisgICAgICAgICB7CisgICAgICAgICAgICAgZ2xvYnVzX2xpc3RfdCAqICAgICAgICAgICAg IGxpc3Q7CisgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIHJjOworICAg ICAgICAgICAgIGdsb2J1c19pX2dmc19jbWRfZW50X3QgKiAgICBjbWRfZW50OworLSAgICAgICAg ICAgIAorLSAgICAgICAgICAgIGF1dGhfaW5mby0+aW5zdGFuY2UtPmN1c3RvbV9jbWRfdGFibGUg PSAKKysKKysgICAgICAgICAgICBhdXRoX2luZm8tPmluc3RhbmNlLT5jdXN0b21fY21kX3RhYmxl ID0KKyAgICAgICAgICAgICAgICAgcmVwbHktPm9wX2luZm8tPmN1c3RvbV9jb21tYW5kX3RhYmxl OworLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICByYyA9IGdsb2J1c19oYXNodGFi bGVfdG9fbGlzdCgKKyAgICAgICAgICAgICAgICAgJnJlcGx5LT5vcF9pbmZvLT5jdXN0b21fY29t bWFuZF90YWJsZSwgJmxpc3QpOworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIHdoaWxl KCFnbG9idXNfbGlzdF9lbXB0eShsaXN0KSkKKyAgICAgICAgICAgICB7CistICAgICAgICAgICAg ICAgIGNtZF9lbnQgPSAoZ2xvYnVzX2lfZ2ZzX2NtZF9lbnRfdCAqKSAKKysgICAgICAgICAgICAg ICAgY21kX2VudCA9IChnbG9idXNfaV9nZnNfY21kX2VudF90ICopCisgICAgICAgICAgICAgICAg ICAgICBnbG9idXNfbGlzdF9yZW1vdmUoJmxpc3QsIGxpc3QpOworLSAgICAgICAgICAgICAgICAg ICAgCisrCisgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19nc2NfOTU5X2NvbW1hbmRf YWRkKAorICAgICAgICAgICAgICAgICAgICAgYXV0aF9pbmZvLT5pbnN0YW5jZS0+c2VydmVyX2hh bmRsZSwKKyAgICAgICAgICAgICAgICAgICAgIGNtZF9lbnQtPmNtZF9uYW1lLAorQEAgLTYzNiw3 ICs2MzYsNyBAQCBnbG9idXNfbF9nZnNfYXV0aF9zZXNzaW9uX2NiKAorICAgICAgICAgICAgICAg ICAgICAgY2hhciAqICAgICAgICAgICAgICB0bXBfbXNnOworICAgICAgICAgICAgICAgICAgICAg dG1wX21zZyA9IGdsb2J1c19lcnJvcl9wcmludF9mcmllbmRseSgKKyAgICAgICAgICAgICAgICAg ICAgICAgICBnbG9idXNfZXJyb3JfcGVlayhyZXN1bHQpKTsKKy0gICAgICAgICAgICAgICAgICAg ICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19nZnNfbG9nX21lc3NhZ2UoCisg ICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0dGU19MT0dfRVJSLAorICAgICAgICAgICAg ICAgICAgICAgICAgICJDb3VsZCBub3QgcmVnaXN0ZXIgY29tbWFuZCAnJXMnOlxuJXMiLAorQEAg LTcyOSw3ICs3MjksNyBAQCBnbG9idXNfbF9nZnNfcmVxdWVzdF9hdXRoKAorICAgICAgICAgInNl c3Npb24uYXV0aG4iLAorICAgICAgICAgMCwKKyAgICAgICAgICJ1c2VyPSVzIEROPVwiJXNcIiIs CistICAgICAgICB1c2VyX25hbWUsIAorKyAgICAgICAgdXNlcl9uYW1lLAorICAgICAgICAgc3Vi amVjdCA/IHN1YmplY3QgOiAiIik7CisgCisgICAgIHJlc3VsdCA9IGdsb2J1c19ncmlkZnRwX3Nl cnZlcl9jb250cm9sX2dldF9kYXRhX2F1dGgoCitAQCAtNzc1LDcgKzc3NSw3IEBAIGdsb2J1c19s X2dmc19yZXF1ZXN0X2F1dGgoCisgICAgICAgICAgICAgZ290byB1c2VyX2Vycm9yOworICAgICAg ICAgfQorICAgICB9CistICAgICAgIAorKworICAgICBhdXRoX2luZm8gPSAoZ2xvYnVzX2xfZ2Zz X2F1dGhfaW5mb190ICopIGNhbGxvYygxLAorICAgICAgICAgc2l6ZW9mKGdsb2J1c19sX2dmc19h dXRoX2luZm9fdCkpOworICAgICBpZihhdXRoX2luZm8gPT0gTlVMTCkKK0BAIC04MzIsNyArODMy LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfc3RhdF9jYigKKyAgICAgaWYocmVwbHktPnJlc3VsdCAh PSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmdHBfY29kZTsKKy0gICAgICAgIAorKworICAgICAgICAgLyogdXNlIGNvZGUg YW5kIG1lc3NhZ2UgZnJvbSByZXBseSBpZiBzZXQgKi8KKyAgICAgICAgIGlmKHJlcGx5LT5jb2Rl ICYmIHJlcGx5LT5tc2cpCisgICAgICAgICB7CitAQCAtODgxLDcgKzg4MSw3IEBAIGdsb2J1c19s X2dmc19kYXRhX3N0YXRfY2IoCisgICAgICAgICAgICAgR0xPQlVTX0dSSURGVFBfU0VSVkVSX0NP TlRST0xfUkVTUE9OU0VfU1VDQ0VTUywKKyAgICAgICAgICAgICBHTE9CVVNfTlVMTCk7CisgICAg IH0KKy0gICAgCisrCisgICAgIGlmKHJlcGx5LT5jb2RlIC8gMTAwICE9IDEpCisgICAgIHsKKyAg ICAgaW5mbyA9IChnbG9idXNfZ2ZzX3N0YXRfaW5mb190ICopIHJlcXVlc3QtPmluZm87CitAQCAt OTE3LDcgKzkxNyw3IEBAIGdsb2J1c19sX2dmc19yZXF1ZXN0X3N0YXQoCisgCisgICAgIGluc3Rh bmNlID0gKGdsb2J1c19sX2dmc19zZXJ2ZXJfaW5zdGFuY2VfdCAqKSB1c2VyX2FyZzsKKyAKKy0g ICAgc3RhdF9pbmZvID0gKGdsb2J1c19nZnNfc3RhdF9pbmZvX3QgKikgCisrICAgIHN0YXRfaW5m byA9IChnbG9idXNfZ2ZzX3N0YXRfaW5mb190ICopCisgICAgICAgICBnbG9idXNfY2FsbG9jKDEs IHNpemVvZihnbG9idXNfZ2ZzX3N0YXRfaW5mb190KSk7CisgCisgICAgIHJlc3VsdCA9IGdsb2J1 c19sX2dmc19yZXF1ZXN0X2luZm9faW5pdCgKK0BAIC05NDcsMTEgKzk0NywxMSBAQCBnbG9idXNf bF9nZnNfcmVxdWVzdF9zdGF0KAorIAorICAgICBHbG9idXNHRlNEZWJ1Z0V4aXQoKTsKKyAgICAg cmV0dXJuOworLSAgICAKKysKKyBlcnJvcl9pbml0OgorICAgICB7CisgICAgICAgICBpbnQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZ0cF9jb2RlOworLSAgICAgICAgCisrCisgICAgICAg ICAvKiBwdWxsIHJlc3BvbnNlIGNvZGUgZnJvbSBlcnJvciAqLworICAgICAgICAgaWYoKGZ0cF9j b2RlID0gZ2xvYnVzX2dmc19lcnJvcl9nZXRfZnRwX3Jlc3BvbnNlX2NvZGUoCisgICAgICAgICAg ICAgZ2xvYnVzX2Vycm9yX3BlZWsocmVzdWx0KSkpID09IDApCitAQCAtMTAyMiw3ICsxMDIyLDcg QEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfY29tbWFuZF9jYigKKyAgICAgICAgICAgICBnbG9idXNfZ3Nj Xzk1OV9maW5pc2hlZF9jb21tYW5kKG9wLCBtc2cpOworICAgICAgICAgICAgIGdsb2J1c19mcmVl KG1zZyk7CisgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICAgICAgCisrCisgICAgICAgICAg IGNhc2UgR0xPQlVTX0dGU19DTURfU0lURV9DSFJPT1Q6CisgICAgICAgICAgICAgaWYocmVxdWVz dC0+aW5zdGFuY2UtPmhvbWVfZGlyKQorICAgICAgICAgICAgIHsKK0BAIC0xMDg1LDE0ICsxMDg1 LDE0IEBAIGdsb2J1c19sX2dmc19kYXRhX2NvbW1hbmRfY2IoCisgICAgICAgICAgICAgZ2xvYnVz X2dzY185NTlfZmluaXNoZWRfY29tbWFuZChvcCwgbXNnKTsKKyAgICAgICAgICAgICBnbG9idXNf ZnJlZShtc2cpOworICAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgICAgIAorKworICAgICAg ICAgICBjYXNlIEdMT0JVU19HRlNfQ01EX0hUVFBfUFVUOgorICAgICAgICAgICBjYXNlIEdMT0JV U19HRlNfQ01EX0hUVFBfR0VUOgorICAgICAgICAgICAgIGlmKHJlcGx5LT5jb2RlIC8gMTAwID09 IDEpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAgICAg ICAgICAgICAgICAgICAgICAgICAgbm93OworICAgICAgICAgICAgICAgICBnZXR0aW1lb2ZkYXko Jm5vdywgTlVMTCk7CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICBzd2l0 Y2gocmVwbHktPmNvZGUpCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICBj YXNlIDExMjoKK0BAIC0xMTA5LDcgKzExMDksNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9jb21tYW5k X2NiKAorICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICBy ZXR1cm47CisgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgICAgICAKKysK KyAgICAgICAgICAgICAgICAgZ2xvYnVzX2lfZ3NjX2NtZF9pbnRlcm1lZGlhdGVfcmVwbHkob3As IG1zZyk7CisgICAgICAgICAgICAgICAgIGdsb2J1c19mcmVlKG1zZyk7CisgICAgICAgICAgICAg fQorQEAgLTExMjEsNyArMTEyMSw3IEBAIGdsb2J1c19sX2dmc19kYXRhX2NvbW1hbmRfY2IoCisg ICAgICAgICAgICAgICAgICAgICBfdG1wID0gZ2xvYnVzX2NvbW1vbl9jcmVhdGVfc3RyaW5nKAor ICAgICAgICAgICAgICAgICAgICAgICAgICJPSy5cbiVzIiwgcmVwbHktPm1zZyk7CisgICAgICAg ICAgICAgICAgICAgICBtc2cgPSBnbG9idXNfZ3NjX3N0cmluZ190b185NTkoMjAwLCBfdG1wLCBO VUxMKTsKKy0gICAgICAgICAgICAgICAgfSAKKysgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIG1z ZyA9IHN0cmR1cCgiMjAwIE9LLlxyXG4iKTsKK0BAIC0xMTQxLDcgKzExNDEsNyBAQCBnbG9idXNf bF9nZnNfZGF0YV9jb21tYW5kX2NiKAorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg fQorICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAK KysgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGdsb2J1c19nc2NfOTU5X2ZpbmlzaGVk X2NvbW1hbmQob3AsICIyNTAgT0suXHJcbiIpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICBicmVhazsKK0BAIC0xMTc3LDEwICsxMTc3LDEwIEBAIGdsb2J1c19sX2dmc19kYXRhX2NvbW1h bmRfY2IoCisgICAgICAgICBnbG9idXNfZnJlZSh0bXBfbXNnKTsKKyAgICAgICAgIGdsb2J1c19m cmVlKG1zZyk7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKHJlcGx5LT5jb2RlIC8gMTAwID09 IDEpCisgICAgICAgICByZXR1cm47CistICAgICAgICAKKysKKyAgICAgaWYoaW5mbykKKyAgICAg eworICAgICAgICAgaWYoaW5mby0+cGF0aG5hbWUpCitAQCAtMTIxMiw3ICsxMjEyLDcgQEAgZ2xv YnVzX2xfZ2ZzX2RhdGFfY29tbWFuZF9jYigKKyAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19m cmVlKGluZm8tPm9wX2luZm8tPmFyZ3ZbY3RyXSk7CisgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAgZ2xvYnVzX2ZyZWUoaW5mby0+b3BfaW5mby0+YXJndik7CistICAgICAgICAg ICAgfSAgICAgICAgICAgCisrICAgICAgICAgICAgfQorICAgICAgICAgICAgIGdsb2J1c19mcmVl KGluZm8tPm9wX2luZm8pOworICAgICAgICAgfQorICAgICAgICAgZ2xvYnVzX2ZyZWUoaW5mbyk7 CitAQCAtMTI1NCwyMCArMTI1NCwyMCBAQCBnbG9idXNfbF9nZnNfZGF0YV9pbnRlcm5hbF9zdGF0 X2NiKAorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2dmc19jb21tYW5k X2luZm9fdCAqIGNvbW1hbmRfaW5mbzsKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2dmc19kYXRh X3JlcGx5X3QgICAgIGNvbW1hbmRfcmVwbHk7CistICAgICAgICAgICAgICAgIAorKworICAgICAg ICAgICAgICAgICBtZW1zZXQoJmNvbW1hbmRfcmVwbHksIDAsIHNpemVvZihnbG9idXNfZ2ZzX2Rh dGFfcmVwbHlfdCkpOworICAgICAgICAgICAgICAgICBjb21tYW5kX2luZm8gPSAoZ2xvYnVzX2dm c19jb21tYW5kX2luZm9fdCAqKSByZXF1ZXN0LT5pbmZvOworICAgICAgICAgICAgICAgICBjb21t YW5kX3JlcGx5LmluZm8uY29tbWFuZC5jb21tYW5kID0gY29tbWFuZF9pbmZvLT5jb21tYW5kOwor ICAgICAgICAgICAgICAgICBjb21tYW5kX3JlcGx5LnJlc3VsdCA9IHJlcGx5LT5yZXN1bHQ7Cist ICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICByZXF1ZXN0LT5ib3VuY2VfY2Io JmNvbW1hbmRfcmVwbHksIHJlcXVlc3QpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBi cmVhazsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg YnJlYWs7CisgICAgIH0KKy0gICAgCisrCisgICAgIEdsb2J1c0dGU0RlYnVnRXhpdCgpOworIH0K KyAKK0BAIC0xMjk3LDcgKzEyOTcsNyBAQCBnbG9idXNfbF9nZnNfcmVxdWVzdF9jdXN0b21fY29t bWFuZCgKKyAKKyAgICAgaW5zdGFuY2UgPSAoZ2xvYnVzX2xfZ2ZzX3NlcnZlcl9pbnN0YW5jZV90 ICopIHVzZXJfYXJnOworIAorLSAgICBjb21tYW5kX2luZm8gPSAoZ2xvYnVzX2dmc19jb21tYW5k X2luZm9fdCAqKSAKKysgICAgY29tbWFuZF9pbmZvID0gKGdsb2J1c19nZnNfY29tbWFuZF9pbmZv X3QgKikKKyAgICAgICAgIGdsb2J1c19jYWxsb2MoMSwgc2l6ZW9mKGdsb2J1c19nZnNfY29tbWFu ZF9pbmZvX3QpKTsKKyAKKyAgICAgcmVzdWx0ID0gZ2xvYnVzX2xfZ2ZzX3JlcXVlc3RfaW5mb19p bml0KAorQEAgLTEzMTAsMjIgKzEzMTAsMjIgQEAgZ2xvYnVzX2xfZ2ZzX3JlcXVlc3RfY3VzdG9t X2NvbW1hbmQoCisgICAgIGlmKHN0cmNtcChjbWRfYXJyYXlbMF0sICJTSVRFIikgPT0gMCkKKyAg ICAgeworICAgICAgICAgY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlbMTAyNF07 CistICAgICAgICAKKysKKyAgICAgICAgIHNucHJpbnRmKGtleSwgc2l6ZW9mKGtleSksICIlcyAl cyIsIGNtZF9hcnJheVswXSwgY21kX2FycmF5WzFdKTsKKyAgICAgICAgIGNtZF9lbnQgPSBnbG9i dXNfaGFzaHRhYmxlX2xvb2t1cCgKKyAgICAgICAgICAgICAmaW5zdGFuY2UtPmN1c3RvbV9jbWRf dGFibGUsIGtleSk7CisgICAgIH0KKyAgICAgZWxzZQorLSAgICB7ICAgIAorKyAgICB7CisgICAg ICAgICBjbWRfZW50ID0gZ2xvYnVzX2hhc2h0YWJsZV9sb29rdXAoCisgICAgICAgICAgICAgJmlu c3RhbmNlLT5jdXN0b21fY21kX3RhYmxlLCBjbWRfYXJyYXlbMF0pOworICAgICB9CistICAgIAor KworICAgICBpZihjbWRfZW50KQorICAgICB7CisgICAgICAgICBjb21tYW5kX2luZm8tPmNvbW1h bmQgPSBjbWRfZW50LT5jbWRfaWQ7CisgICAgICAgICBpZihjbWRfZW50LT5oYXNfcGF0aG5hbWUp CistICAgICAgICB7ICAgCisrICAgICAgICB7CisgICAgICAgICAgICAgc3dpdGNoKGNtZF9lbnQt PmFjY2Vzc190eXBlKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgY2FzZSBHRlNf QUNMX0FDVElPTl9SRUFEOgorQEAgLTEzNDAsMTEgKzEzNDAsMTEgQEAgZ2xvYnVzX2xfZ2ZzX3Jl cXVlc3RfY3VzdG9tX2NvbW1hbmQoCisgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg ICAgICAgICAgICAgICBhY2MgPSBHRlNfTF9XUklURTsKKyAgICAgICAgICAgICAgICAgICAgIGJy ZWFrOworLSAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgCisrICAgICAgICAgICAgfQorICAg ICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX2dmc19nZXRfZnVsbF9wYXRoKAorLSAgICAgICAg ICAgICAgICBpbnN0YW5jZSwgCistICAgICAgICAgICAgICAgIGNtZF9hcnJheVthcmdjIC0gMV0s IAorLSAgICAgICAgICAgICAgICAmY29tbWFuZF9pbmZvLT5wYXRobmFtZSwgCisrICAgICAgICAg ICAgICAgIGluc3RhbmNlLAorKyAgICAgICAgICAgICAgICBjbWRfYXJyYXlbYXJnYyAtIDFdLAor KyAgICAgICAgICAgICAgICAmY29tbWFuZF9pbmZvLT5wYXRobmFtZSwKKyAgICAgICAgICAgICAg ICAgYWNjKTsKKyAgICAgICAgICAgICBpZihjb21tYW5kX2luZm8tPnBhdGhuYW1lID09IE5VTEwp CisgICAgICAgICAgICAgeworQEAgLTEzNTYsNyArMTM1Niw3IEBAIGdsb2J1c19sX2dmc19yZXF1 ZXN0X2N1c3RvbV9jb21tYW5kKAorICAgICAgICAgICAgIGNvbW1hbmRfaW5mby0+cGF0aG5hbWUg PSBnbG9idXNfbGliY19zdHJkdXAoY21kX2FycmF5W2FyZ2MgLSAxXSk7CisgICAgICAgICB9Cisg CistICAgICAgICBjb21tYW5kX2luZm8tPm9wX2luZm8gPSAKKysgICAgICAgIGNvbW1hbmRfaW5m by0+b3BfaW5mbyA9CisgICAgICAgICAgICAgZ2xvYnVzX2NhbGxvYygxLCBzaXplb2YoZ2xvYnVz X2lfZ2ZzX29wX2luZm9fdCkpOworIAorICAgICAgICAgY29tbWFuZF9pbmZvLT5vcF9pbmZvLT5j bWRfZW50ID0gY21kX2VudDsKK0BAIC0xMzY0LDcgKzEzNjQsNyBAQCBnbG9idXNfbF9nZnNfcmVx dWVzdF9jdXN0b21fY29tbWFuZCgKKyAgICAgICAgIGNvbW1hbmRfaW5mby0+b3BfaW5mby0+YXJn diA9IGdsb2J1c19jYWxsb2MoYXJnYywgc2l6ZW9mKGNoYXIgKikpOworICAgICAgICAgZm9yKGkg PSAwOyBpIDwgYXJnYzsgaSsrKQorICAgICAgICAgeworLSAgICAgICAgICAgIGNvbW1hbmRfaW5m by0+b3BfaW5mby0+YXJndltpXSA9IAorKyAgICAgICAgICAgIGNvbW1hbmRfaW5mby0+b3BfaW5m by0+YXJndltpXSA9CisgICAgICAgICAgICAgICAgIGdsb2J1c19saWJjX3N0cmR1cChjbWRfYXJy YXlbaV0pOworICAgICAgICAgfQorIAorQEAgLTEzODgsMjMgKzEzODgsMjMgQEAgZ2xvYnVzX2xf Z2ZzX3JlcXVlc3RfY3VzdG9tX2NvbW1hbmQoCisgICAgIGdsb2J1c19sX2dmc19jb250cm9sX2xv ZyhpbnN0YW5jZS0+c2VydmVyX2hhbmRsZSwgbXNnX2Zvcl9sb2csCisgICAgICAgICB0eXBlLCBp bnN0YW5jZSk7CisgICAgIGZyZWUobXNnX2Zvcl9sb2cpOworLSAgICAKKysKKyAgICAgR2xvYnVz R0ZTRGVidWdFeGl0KCk7CisgICAgIHJldHVybjsKKyAKKy1lcnI6ICAgCisrZXJyOgorIGVycm9y X2luaXQ6CisgCisgICAgIGdsb2J1c19sX2dmc19jb250cm9sX2xvZyhpbnN0YW5jZS0+c2VydmVy X2hhbmRsZSwgbXNnX2Zvcl9sb2csCisgICAgICAgICBHTE9CVVNfR1JJREZUUF9TRVJWRVJfQ09O VFJPTF9MT0dfRVJST1IsIGluc3RhbmNlKTsKKyAgICAgZnJlZShtc2dfZm9yX2xvZyk7CistICAg IAorKworICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAg IGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgZnRwX3N0cjsKKyAgICAgICAgIGNoYXIg KiAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wX3N0cjsKKyAgICAgICAgIGludCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZnRwX2NvZGU7CistICAgICAgICAKKysKKyAgICAgICAgIC8q IHB1bGwgcmVzcG9uc2UgY29kZSBmcm9tIGVycm9yICovCisgICAgICAgICBpZigoZnRwX2NvZGUg PSBnbG9idXNfZ2ZzX2Vycm9yX2dldF9mdHBfcmVzcG9uc2VfY29kZSgKKyAgICAgICAgICAgICBn bG9idXNfZXJyb3JfcGVlayhyZXN1bHQpKSkgPT0gMCkKK0BAIC0xNDUwLDcgKzE0NTAsNyBAQCBn bG9idXNfbF9nZnNfcmVxdWVzdF9jb21tYW5kKAorIAorICAgICBpbnN0YW5jZSA9IChnbG9idXNf bF9nZnNfc2VydmVyX2luc3RhbmNlX3QgKikgdXNlcl9hcmc7CisgCistICAgIGNvbW1hbmRfaW5m byA9IChnbG9idXNfZ2ZzX2NvbW1hbmRfaW5mb190ICopIAorKyAgICBjb21tYW5kX2luZm8gPSAo Z2xvYnVzX2dmc19jb21tYW5kX2luZm9fdCAqKQorICAgICAgICAgZ2xvYnVzX2NhbGxvYygxLCBz aXplb2YoZ2xvYnVzX2dmc19jb21tYW5kX2luZm9fdCkpOworIAorICAgICByZXN1bHQgPSBnbG9i dXNfbF9nZnNfcmVxdWVzdF9pbmZvX2luaXQoCitAQCAtMTQ5Niw3ICsxNDk2LDcgQEAgZ2xvYnVz X2xfZ2ZzX3JlcXVlc3RfY29tbWFuZCgKKyAgICAgZWxzZSBpZihzdHJjbXAoY21kX2FycmF5WzBd LCAiUk5GUiIpID09IDApCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19nZnNfc3RhdF9pbmZvX3Qg KiAgICAgICAgICAgIHN0YXRfaW5mbzsKKy0gICAgCisrCisgICAgICAgICBjb21tYW5kX2luZm8t PmNvbW1hbmQgPSBHTE9CVVNfR0ZTX0NNRF9STkZSOworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVz X2xfZ2ZzX2dldF9mdWxsX3BhdGgoCisgICAgICAgICAgICAgaW5zdGFuY2UsIGNtZF9hcnJheVsx XSwgJmNvbW1hbmRfaW5mby0+cGF0aG5hbWUsIEdGU19MX1dSSVRFKTsKK0BAIC0xNTA0LDggKzE1 MDQsOCBAQCBnbG9idXNfbF9nZnNfcmVxdWVzdF9jb21tYW5kKAorICAgICAgICAgeworICAgICAg ICAgICAgIGdvdG8gZXJyOworICAgICAgICAgfQorLSAgICAgICAgCistICAgICAgICBzdGF0X2lu Zm8gPSAoZ2xvYnVzX2dmc19zdGF0X2luZm9fdCAqKSAKKysKKysgICAgICAgIHN0YXRfaW5mbyA9 IChnbG9idXNfZ2ZzX3N0YXRfaW5mb190ICopCisgICAgICAgICAgICAgZ2xvYnVzX2NhbGxvYygx LCBzaXplb2YoZ2xvYnVzX2dmc19zdGF0X2luZm9fdCkpOworIAorICAgICAgICAgc3RhdF9pbmZv LT5maWxlX29ubHkgPSBHTE9CVVNfVFJVRTsKK0BAIC0xNTQ1LDcgKzE1NDUsNyBAQCBnbG9idXNf bF9nZnNfcmVxdWVzdF9jb21tYW5kKAorICAgICAgICAgY29tbWFuZF9pbmZvLT5jb21tYW5kID0g R0xPQlVTX0dGU19DTURfRENTQzsKKyAgICAgICAgIGNvbW1hbmRfaW5mby0+Y2tzbV9hbGcgPSBn bG9idXNfbGliY19zdHJkdXAoY21kX2FycmF5WzFdKTsKKyAgICAgICAgIGNvbW1hbmRfaW5mby0+ cGF0aG5hbWUgPSBnbG9idXNfbGliY19zdHJkdXAoY21kX2FycmF5WzJdKTsKKy0gICAgICAgIGlm KGNvbW1hbmRfaW5mby0+cGF0aG5hbWUgPT0gTlVMTCAmJiAKKysgICAgICAgIGlmKGNvbW1hbmRf aW5mby0+cGF0aG5hbWUgPT0gTlVMTCAmJgorICAgICAgICAgICAgIHN0cmNhc2VjbXAoY29tbWFu ZF9pbmZvLT5ja3NtX2FsZywgImQiKSAhPSAwKQorICAgICAgICAgeworICAgICAgICAgICAgIGdv dG8gZXJyOworQEAgLTE1NTYsNyArMTU1Niw3IEBAIGdsb2J1c19sX2dmc19yZXF1ZXN0X2NvbW1h bmQoCisgICAgIHsKKyAgICAgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgZnJl cTsKKyAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZWQ7Cist ICAgICAgICAKKysKKyAgICAgICAgIGNvbW1hbmRfaW5mby0+Y29tbWFuZCA9IEdMT0JVU19HRlNf Q01EX0NLU007CisgICAgICAgICByZXN1bHQgPSBnbG9idXNfbF9nZnNfZ2V0X2Z1bGxfcGF0aCgK KyAgICAgICAgICAgICBpbnN0YW5jZSwgY21kX2FycmF5WzRdLCAmY29tbWFuZF9pbmZvLT5wYXRo bmFtZSwgR0ZTX0xfUkVBRCk7CitAQCAtMTU3MCw3ICsxNTcwLDcgQEAgZ2xvYnVzX2xfZ2ZzX3Jl cXVlc3RfY29tbWFuZCgKKyAgICAgICAgICAgICBjbWRfYXJyYXlbMl0sCisgICAgICAgICAgICAg JmNvbW1hbmRfaW5mby0+Y2tzbV9vZmZzZXQsCisgICAgICAgICAgICAgJmNvbnN1bWVkKTsKKy0g ICAgICAgIGlmKHJjIDwgMSB8fCAqKGNtZF9hcnJheVsyXSArIGNvbnN1bWVkKSAhPSAnXDAnIHx8 IAorKyAgICAgICAgaWYocmMgPCAxIHx8ICooY21kX2FycmF5WzJdICsgY29uc3VtZWQpICE9ICdc MCcgfHwKKyAgICAgICAgICAgICBjb21tYW5kX2luZm8tPmNrc21fb2Zmc2V0IDwgMCkKKyAgICAg ICAgIHsKKyAgICAgICAgICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJvckdlbmVyaWMoIkludmFs aWQgb2Zmc2V0LiIpOworQEAgLTE1ODEsNyArMTU4MSw3IEBAIGdsb2J1c19sX2dmc19yZXF1ZXN0 X2NvbW1hbmQoCisgICAgICAgICAgICAgY21kX2FycmF5WzNdLAorICAgICAgICAgICAgICZjb21t YW5kX2luZm8tPmNrc21fbGVuZ3RoLAorICAgICAgICAgICAgICZjb25zdW1lZCk7CistICAgICAg ICBpZihyYyA8IDEgfHwgKihjbWRfYXJyYXlbM10gKyBjb25zdW1lZCkgIT0gJ1wwJyB8fCAKKysg ICAgICAgIGlmKHJjIDwgMSB8fCAqKGNtZF9hcnJheVszXSArIGNvbnN1bWVkKSAhPSAnXDAnIHx8 CisgICAgICAgICAgICAgY29tbWFuZF9pbmZvLT5ja3NtX2xlbmd0aCA8IC0xKQorICAgICAgICAg eworICAgICAgICAgICAgIHJlc3VsdCA9IEdsb2J1c0dGU0Vycm9yR2VuZXJpYygiSW52YWxpZCBs ZW5ndGguIik7CitAQCAtMTU4OSw3ICsxNTg5LDcgQEAgZ2xvYnVzX2xfZ2ZzX3JlcXVlc3RfY29t bWFuZCgKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIHR5cGUgPSBHTE9CVVNfR1JJREZUUF9TRVJW RVJfQ09OVFJPTF9MT0dfRklMRV9DT01NQU5EUzsKKy0gICAgICAgIAorKworICAgICAgICAgaWYo KGZyZXEgPSBnZXRlbnYoIkdGU19DS1NNX01BUktFUlMiKSkgIT0gTlVMTCkKKyAgICAgICAgIHsK KyAgICAgICAgICAgICBjb21tYW5kX2luZm8tPmNobW9kX21vZGUgPSBzdHJ0b2woZnJlcSwgTlVM TCwgMTApOworQEAgLTE2MjYsMTMgKzE2MjYsMTMgQEAgZ2xvYnVzX2xfZ2ZzX3JlcXVlc3RfY29t bWFuZCgKKyAgICAgICAgIH0KKyAgICAgICAgIGlmIChzdHJsZW4oY21kX2FycmF5WzFdKSA8IDE0 KQorICAgICAgICAgeworLSAgICAgICAgICAgIGdvdG8gZXJyOyAgIAorKyAgICAgICAgICAgIGdv dG8gZXJyOworICAgICAgICAgfQorICAgICAgICAgeworICAgICAgICAgICAgIGNoYXIqIHR6Owor ICAgICAgICAgICAgIHN0cnVjdCB0bSBtb2R0aW1lOworICAgICAgICAgICAgIG1lbXNldCgmbW9k dGltZSwgMCwgc2l6ZW9mKG1vZHRpbWUpKTsKKy0gICAgICAgICAgICBpZiAoc3NjYW5mKGNtZF9h cnJheVsxXSwgIiU0ZCUyZCUyZCUyZCUyZCUyZCIsIAorKyAgICAgICAgICAgIGlmIChzc2NhbmYo Y21kX2FycmF5WzFdLCAiJTRkJTJkJTJkJTJkJTJkJTJkIiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAmbW9kdGltZS50bV95ZWFyLCAmbW9kdGltZS50bV9tb24sICZtb2R0aW1lLnRtX21kYXks CisgICAgICAgICAgICAgICAgICAgICAgICAgJm1vZHRpbWUudG1faG91ciwgJm1vZHRpbWUudG1f bWluLCAmbW9kdGltZS50bV9zZWMpICE9IDYpCisgICAgICAgICAgICAgeworQEAgLTE2NTUsNyAr MTY1NSw3IEBAIGdsb2J1c19sX2dmc19yZXF1ZXN0X2NvbW1hbmQoCisgICAgICAgICAgICAgaWYg KGNvbW1hbmRfaW5mby0+dXRpbWVfdGltZSA8IDApCisgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICBnb3RvIGVycjsKKy0gICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAg CisrICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICAgICAgdHlwZSA9IEdMT0JVU19HUklE RlRQX1NFUlZFUl9DT05UUk9MX0xPR19TSVRFOworICAgICB9CitAQCAtMTcwNyw3ICsxNzA3LDcg QEAgZ2xvYnVzX2xfZ2ZzX3JlcXVlc3RfY29tbWFuZCgKKyAgICAgICAgIGVsc2UgaWYoc3RyY21w KGNtZF9hcnJheVsxXSwgIlZFUlNJT04iKSA9PSAwKQorICAgICAgICAgeworICAgICAgICAgICAg IGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9zdHJpbmdbMTAyNF07Cist ICAgIAorKworICAgICAgICAgICAgIHR5cGUgPSBHTE9CVVNfR1JJREZUUF9TRVJWRVJfQ09OVFJP TF9MT0dfU0lURTsKKyAgICAgICAgICAgICBzbnByaW50Zih2ZXJzaW9uX3N0cmluZywgc2l6ZW9m KHZlcnNpb25fc3RyaW5nKSwKKyAgICAgICAgICAgICAgICAgIjIwMCAlc1xyXG4iLCBnbG9idXNf aV9nZnNfY29uZmlnX3N0cmluZygidmVyc2lvbl9zdHJpbmciKSk7CitAQCAtMTc2OSwxMyArMTc2 OSwxMyBAQCBnbG9idXNfbF9nZnNfcmVxdWVzdF9jb21tYW5kKAorICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICBpZiAoc3RybGVuKGNtZF9hcnJheVsyXSkgPCAxNCkKKyAgICAgICAgICAgICB7 CistICAgICAgICAgICAgICAgIGdvdG8gZXJyOyAgIAorKyAgICAgICAgICAgICAgICBnb3RvIGVy cjsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBjaGFy KiB0ejsKKyAgICAgICAgICAgICAgICAgc3RydWN0IHRtIG1vZHRpbWU7CisgICAgICAgICAgICAg ICAgIG1lbXNldCgmbW9kdGltZSwgMCwgc2l6ZW9mKG1vZHRpbWUpKTsKKy0gICAgICAgICAgICAg ICAgaWYgKHNzY2FuZihjbWRfYXJyYXlbMl0sICIlNGQlMmQlMmQlMmQlMmQlMmQiLCAKKysgICAg ICAgICAgICAgICAgaWYgKHNzY2FuZihjbWRfYXJyYXlbMl0sICIlNGQlMmQlMmQlMmQlMmQlMmQi LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbW9kdGltZS50bV95ZWFyLCAmbW9kdGlt ZS50bV9tb24sICZtb2R0aW1lLnRtX21kYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZtb2R0aW1lLnRtX2hvdXIsICZtb2R0aW1lLnRtX21pbiwgJm1vZHRpbWUudG1fc2VjKSAhPSA2 KQorICAgICAgICAgICAgICAgICB7CitAQCAtMTgwMiwxNCArMTgwMiwxNCBAQCBnbG9idXNfbF9n ZnNfcmVxdWVzdF9jb21tYW5kKAorICAgICAgICAgICAgICAgICBpZiAoY29tbWFuZF9pbmZvLT51 dGltZV90aW1lIDwgMCkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg Z290byBlcnI7CistICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAKKysg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB0eXBlID0gR0xP QlVTX0dSSURGVFBfU0VSVkVSX0NPTlRST0xfTE9HX1NJVEU7CisgICAgICAgICB9CisgICAgICAg ICBlbHNlIGlmKHN0cmNtcChjbWRfYXJyYXlbMV0sICJTWU1MSU5LRlJPTSIpID09IDApCistICAg ICAgICB7ICAgICAgICAgICAgCisrICAgICAgICB7CisgICAgICAgICAgICAgZ2xvYnVzX2dmc19z dGF0X2luZm9fdCAqICAgICAgICAgICAgc3RhdF9pbmZvOworLSAgICAgICAgCisrCisgICAgICAg ICAgICAgY29tbWFuZF9pbmZvLT5jb21tYW5kID0gR0xPQlVTX0dGU19DTURfU0lURV9TWU1MSU5L RlJPTTsKKyAgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNfbF9nZnNfZ2V0X2Z1bGxfcGF0aCgK KyAgICAgICAgICAgICAgICAgaW5zdGFuY2UsIGNtZF9hcnJheVsyXSwgJmNvbW1hbmRfaW5mby0+ cGF0aG5hbWUsIEdGU19MX1JFQUQpOworQEAgLTE4MTcsMTAgKzE4MTcsMTAgQEAgZ2xvYnVzX2xf Z2ZzX3JlcXVlc3RfY29tbWFuZCgKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGdv dG8gZXJyOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAKKy0gICAgICAgICAgICBzdGF0 X2luZm8gPSAoZ2xvYnVzX2dmc19zdGF0X2luZm9fdCAqKSAKKysKKysgICAgICAgICAgICBzdGF0 X2luZm8gPSAoZ2xvYnVzX2dmc19zdGF0X2luZm9fdCAqKQorICAgICAgICAgICAgICAgICBnbG9i dXNfY2FsbG9jKDEsIHNpemVvZihnbG9idXNfZ2ZzX3N0YXRfaW5mb190KSk7CistICAgIAorKwor ICAgICAgICAgICAgIHN0YXRfaW5mby0+ZmlsZV9vbmx5ID0gR0xPQlVTX1RSVUU7CisgICAgICAg ICAgICAgc3RhdF9pbmZvLT5wYXRobmFtZSA9IGdsb2J1c19saWJjX3N0cmR1cChjb21tYW5kX2lu Zm8tPnBhdGhuYW1lKTsKKyAgICAgICAgICAgICByZXF1ZXN0LT5ib3VuY2VfaW5mbyA9IHN0YXRf aW5mbzsKK0BAIC0xODkwLDcgKzE4OTAsNyBAQCBnbG9idXNfbF9nZnNfcmVxdWVzdF9jb21tYW5k KAorICAgICAgICAgICAgICAgICAgICAgIiVzICVzIiwgY21kX2FycmF5WzJdLCB0bXBfcGF0aCk7 CisgICAgICAgICAgICAgICAgIGdsb2J1c19mcmVlKHRtcF9wYXRoKTsKKyAgICAgICAgICAgICB9 CistICAgICAgICAgICAgZWxzZSBpZihzdHJjYXNlY21wKGNtZF9hcnJheVsyXSwgIkNSRUFURSIp ID09IDApIAorKyAgICAgICAgICAgIGVsc2UgaWYoc3RyY2FzZWNtcChjbWRfYXJyYXlbMl0sICJD UkVBVEUiKSA9PSAwKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgY2hhciAqICAg ICAgICAgICAgICAgICAgdG1wX2FyZ3N0cjsKKyAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2xv YnVzX2xfZ2ZzX2t2c3RyX3BhdGgoCitAQCAtMTkwMywxMiArMTkwMywxMiBAQCBnbG9idXNfbF9n ZnNfcmVxdWVzdF9jb21tYW5kKAorICAgICAgICAgICAgICAgICAgICAgIiVzICVzIiwgY21kX2Fy cmF5WzJdLCB0bXBfYXJnc3RyKTsKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2ZyZWUodG1wX2Fy Z3N0cik7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGVsc2UgaWYoc3RyY2FzZWNtcChj bWRfYXJyYXlbMl0sICJERUxFVEUiKSA9PSAwKSAKKysgICAgICAgICAgICBlbHNlIGlmKHN0cmNh c2VjbXAoY21kX2FycmF5WzJdLCAiREVMRVRFIikgPT0gMCkKKyAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgIGNvbW1hbmRfaW5mby0+cGF0aG5hbWUgPSBnbG9idXNfY29tbW9uX2NyZWF0 ZV9zdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAiJXMgJXMiLCBjbWRfYXJyYXlbMl0sIGNt ZF9hcnJheVszXSk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAKKysKKyAgICAg ICAgICAgICBpZihjb21tYW5kX2luZm8tPnBhdGhuYW1lID09IE5VTEwpCisgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICBnb3RvIGVycjsKK0BAIC0xOTE5LDE0ICsxOTE5LDE0IEBAIGds b2J1c19sX2dmc19yZXF1ZXN0X2NvbW1hbmQoCisgICAgICAgICB7CisgICAgICAgICAgICAgY29t bWFuZF9pbmZvLT5jb21tYW5kID0gR0xPQlVTX0dGU19DTURfVVBBUzsKKyAgICAgICAgICAgICBj b21tYW5kX2luZm8tPnBhdGhuYW1lID0gZ2xvYnVzX2xpYmNfc3RyZHVwKGNtZF9hcnJheVsyXSk7 CistICAgIAorKworICAgICAgICAgICAgIHR5cGUgPSBHTE9CVVNfR1JJREZUUF9TRVJWRVJfQ09O VFJPTF9MT0dfVFJBTlNGRVJfU1RBVEU7CisgICAgICAgICB9CisgICAgICAgICBlbHNlIGlmKHN0 cmNtcChjbWRfYXJyYXlbMV0sICJVUFJUIikgPT0gMCkKKyAgICAgICAgIHsKKyAgICAgICAgICAg ICBjb21tYW5kX2luZm8tPmNvbW1hbmQgPSBHTE9CVVNfR0ZTX0NNRF9VUFJUOworICAgICAgICAg ICAgIGNvbW1hbmRfaW5mby0+cGF0aG5hbWUgPSBnbG9idXNfbGliY19zdHJkdXAoY21kX2FycmF5 WzJdKTsKKy0gICAgCisrCisgICAgICAgICAgICAgdHlwZSA9IEdMT0JVU19HUklERlRQX1NFUlZF Ul9DT05UUk9MX0xPR19UUkFOU0ZFUl9TVEFURTsKKyAgICAgICAgIH0KKyAgICAgICAgIGVsc2Ug aWYoc3RyY21wKGNtZF9hcnJheVsxXSwgIkhUVFAiKSA9PSAwKQorQEAgLTE5NDAsOCArMTk0MCw4 IEBAIGdsb2J1c19sX2dmc19yZXF1ZXN0X2NvbW1hbmQoCisgICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICAgICAgICAgICB9CistICAgICAg ICAgICAgfSAKKy0gICAgICAgICAgICBlbHNlIGlmKHN0cmNhc2VjbXAoY21kX2FycmF5WzJdLCAi RE9XTkxPQUQiKSA9PSAwKSAgIAorKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBlbHNlIGlm KHN0cmNhc2VjbXAoY21kX2FycmF5WzJdLCAiRE9XTkxPQUQiKSA9PSAwKQorICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgY29tbWFuZF9pbmZvLT5jb21tYW5kID0gR0xPQlVTX0dGU19D TURfSFRUUF9HRVQ7CisgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX2dmc19rdnN0 cl9wYXRoKAorQEAgLTE5NTEsNyArMTk1MSw3IEBAIGdsb2J1c19sX2dmc19yZXF1ZXN0X2NvbW1h bmQoCisgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBlbHNlIGlmKHN0cmNhc2VjbXAoY21kX2FycmF5 WzJdLCAiQ09ORklHIikgPT0gMCkgICAKKysgICAgICAgICAgICBlbHNlIGlmKHN0cmNhc2VjbXAo Y21kX2FycmF5WzJdLCAiQ09ORklHIikgPT0gMCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgIGNvbW1hbmRfaW5mby0+Y29tbWFuZCA9IEdMT0JVU19HRlNfQ01EX0hUVFBfQ09ORklH OworICAgICAgICAgICAgICAgICBjb21tYW5kX2luZm8tPnBhdGhuYW1lID0gZ2xvYnVzX2xpYmNf c3RyZHVwKGNtZF9hcnJheVszXSk7CitAQCAtMTk3MiwxMiArMTk3MiwxMiBAQCBnbG9idXNfbF9n ZnNfcmVxdWVzdF9jb21tYW5kKAorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgZ290 byBlcnI7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIHJj ID0gZ2xvYnVzX2xpYmNfc2Nhbl9vZmZfdCgKKyAgICAgICAgICAgICAgICAgY21kX2FycmF5WzJd LAorICAgICAgICAgICAgICAgICAmY29tbWFuZF9pbmZvLT5ja3NtX29mZnNldCwKKyAgICAgICAg ICAgICAgICAgJmNvbnN1bWVkKTsKKy0gICAgICAgICAgICBpZihyYyA8IDEgfHwgKihjbWRfYXJy YXlbMl0gKyBjb25zdW1lZCkgIT0gJ1wwJyB8fCAKKysgICAgICAgICAgICBpZihyYyA8IDEgfHwg KihjbWRfYXJyYXlbMl0gKyBjb25zdW1lZCkgIT0gJ1wwJyB8fAorICAgICAgICAgICAgICAgICBj b21tYW5kX2luZm8tPmNrc21fb2Zmc2V0IDwgMCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgIHJlc3VsdCA9IEdsb2J1c0dGU0Vycm9yR2VuZXJpYygiSW52YWxpZCBsZW5ndGguIik7 CitAQCAtMjAzNSw3ICsyMDM1LDcgQEAgZ2xvYnVzX2xfZ2ZzX3JlcXVlc3RfY29tbWFuZCgKKyAg ICAgZ2xvYnVzX2xfZ2ZzX2NvbnRyb2xfbG9nKGluc3RhbmNlLT5zZXJ2ZXJfaGFuZGxlLCBtc2df Zm9yX2xvZywKKyAgICAgICAgIHR5cGUsIGluc3RhbmNlKTsKKyAgICAgZnJlZShtc2dfZm9yX2xv Zyk7CistICAgIAorKworICAgICBHbG9idXNHRlNEZWJ1Z0V4aXQoKTsKKyAgICAgcmV0dXJuOwor IAorQEAgLTIwNDcsMjAgKzIwNDcsMjAgQEAgZXJyb3JfaW5pdDoKKyAgICAgZ2xvYnVzX2xfZ2Zz X2NvbnRyb2xfbG9nKGluc3RhbmNlLT5zZXJ2ZXJfaGFuZGxlLCBtc2dfZm9yX2xvZywKKyAgICAg ICAgIEdMT0JVU19HUklERlRQX1NFUlZFUl9DT05UUk9MX0xPR19FUlJPUiwgaW5zdGFuY2UpOwor ICAgICBmcmVlKG1zZ19mb3JfbG9nKTsKKy0gICAgCisrCisgICAgIGlmKHJlc3VsdCAhPSBHTE9C VVNfU1VDQ0VTUykKKyAgICAgeworICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAg ICAgICBmdHBfc3RyOworICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICB0 bXBfc3RyOworICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdHBfY29k ZTsKKy0gICAgICAgIAorKworICAgICAgICAgLyogcHVsbCByZXNwb25zZSBjb2RlIGZyb20gZXJy b3IgKi8KKyAgICAgICAgIGlmKChmdHBfY29kZSA9IGdsb2J1c19nZnNfZXJyb3JfZ2V0X2Z0cF9y ZXNwb25zZV9jb2RlKAorICAgICAgICAgICAgIGdsb2J1c19lcnJvcl9wZWVrKHJlc3VsdCkpKSA9 PSAwKQorICAgICAgICAgeworICAgICAgICAgICAgIGZ0cF9jb2RlID0gNTAwOworICAgICAgICAg fQorLSAgICAgICAgdG1wX3N0ciA9IGdsb2J1c19lcnJvcl9wcmludF9mcmllbmRseShnbG9idXNf ZXJyb3JfcGVlayhyZXN1bHQpKTsgICAgICAgIAorKyAgICAgICAgdG1wX3N0ciA9IGdsb2J1c19l cnJvcl9wcmludF9mcmllbmRseShnbG9idXNfZXJyb3JfcGVlayhyZXN1bHQpKTsKKyAgICAgICAg IGZ0cF9zdHIgPSBnbG9idXNfZ3NjX3N0cmluZ190b185NTkoZnRwX2NvZGUsIHRtcF9zdHIsIE5V TEwpOworICAgICAgICAgZ2xvYnVzX2dzY185NTlfZmluaXNoZWRfY29tbWFuZChvcCwgZnRwX3N0 cik7CisgICAgICAgICBnbG9idXNfZnJlZSh0bXBfc3RyKTsKK0BAIC0yMTg4LDcgKzIxODgsNyBA QCBnbG9idXNfbF9nZnNfZ2V0X2V2ZW50X21hc2soCisgICAgIH0KKyAgICAgaWYoaW5fZXZlbnRf bWFzayAmIEdMT0JVU19HRlNfRVZFTlRfVFJBTlNGRVJfQ09NUExFVEUpCisgICAgIHsKKy0gICAg ICAgIG91dF9ldmVudF9tYXNrIHw9IAorKyAgICAgICAgb3V0X2V2ZW50X21hc2sgfD0KKyAgICAg ICAgICAgICBHTE9CVVNfR1JJREZUUF9TRVJWRVJfQ09OVFJPTF9FVkVOVF9UUkFOU0ZFUl9DT01Q TEVURTsKKyAgICAgfQorIAorQEAgLTIyMTUsNyArMjIxNSw3IEBAIGdsb2J1c19sX2dmc19kYXRh X2V2ZW50X2NiKAorICAgICB7CisgICAgICAgICBjYXNlIEdMT0JVU19HRlNfRVZFTlRfVFJBTlNG RVJfQkVHSU46CisgICAgICAgICAgICAgcmVxdWVzdC0+ZXZlbnRfYXJnID0gcmVwbHktPmV2ZW50 X2FyZzsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICByZXF1ZXN0LT50cmFuc2Zlcl9l dmVudHMgPSBHTE9CVVNfVFJVRTsKKyAgICAgICAgICAgICBldmVudF9tYXNrID0gZ2xvYnVzX2xf Z2ZzX2dldF9ldmVudF9tYXNrKHJlcGx5LT5ldmVudF9tYXNrKTsKKyAgICAgICAgICAgICByZXN1 bHQgPSBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfY29udHJvbF9ldmVudHNfZW5hYmxlKAorQEAgLTIy MjksMjcgKzIyMjksMjcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfZXZlbnRfY2IoCisgICAgICAgICAg ICAgICAgIC8qIFRPRE86IGNhbiB3ZSBpZ25vcmUgdGhpcyAqLworICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICBicmVhazsKKy0gICAgICAgIAorKworICAgICAgICAgY2FzZSBHTE9CVVNfR0ZT X0VWRU5UX1RSQU5TRkVSX0NPTk5FQ1RFRDoKKyAgICAgICAgICAgICBnbG9idXNfZ3JpZGZ0cF9z ZXJ2ZXJfY29udHJvbF9iZWdpbl90cmFuc2ZlcihvcCk7CisgICAgICAgICAgICAgYnJlYWs7Cist ICAgICAgICAKKysKKyAgICAgICAgIGNhc2UgR0xPQlVTX0dGU19FVkVOVF9ESVNDT05ORUNURUQ6 CisgICAgICAgICAgICAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2NvbnRyb2xfZGlzY29ubmVjdGVk KAorLSAgICAgICAgICAgICAgICByZXF1ZXN0LT5pbnN0YW5jZS0+c2VydmVyX2hhbmRsZSwgCisr ICAgICAgICAgICAgICAgIHJlcXVlc3QtPmluc3RhbmNlLT5zZXJ2ZXJfaGFuZGxlLAorICAgICAg ICAgICAgICAgICByZXBseS0+ZGF0YV9hcmcpOworICAgICAgICAgICAgIGJyZWFrOworLSAgICAg ICAgCisrCisgICAgICAgICBjYXNlIEdMT0JVU19HRlNfRVZFTlRfQllURVNfUkVDVkQ6CisgICAg ICAgICAgICAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2NvbnRyb2xfZXZlbnRfc2VuZF9wZXJmKAor ICAgICAgICAgICAgICAgICBvcCwgcmVwbHktPm5vZGVfbmR4LCByZXBseS0+cmVjdmRfYnl0ZXMp OworICAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgCisrCisgICAgICAgICBjYXNlIEdMT0JV U19HRlNfRVZFTlRfUkFOR0VTX1JFQ1ZEOgorICAgICAgICAgICAgIGdsb2J1c19ncmlkZnRwX3Nl cnZlcl9jb250cm9sX2V2ZW50X3NlbmRfcmVzdGFydCgKKyAgICAgICAgICAgICAgICBvcCwgcmVw bHktPnJlY3ZkX3Jhbmdlcyk7CisgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICAKKysKKyAg ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgZ2xvYnVzX2Fzc2VydCgwICYmICJVbmV4cGVj dGVkIGV2ZW50IHR5cGUiKTsKKyAgICAgICAgICAgICBicmVhazsKK0BAIC0yMjczLDcgKzIyNzMs NyBAQCBnbG9idXNfbF9nZnNfZGF0YV90cmFuc2Zlcl9jYigKKyAKKyAgICAgcmVxdWVzdCA9IChn bG9idXNfbF9nZnNfcmVxdWVzdF9pbmZvX3QgKikgdXNlcl9hcmc7CisgICAgIG9wID0gcmVxdWVz dC0+Y29udHJvbF9vcDsKKy0gICAgCisrCisgCisgICAgIGRlc3Ryb3lfcmVxID0gIXJlcXVlc3Qt PnRyYW5zZmVyX2V2ZW50czsKKyAgICAgaWYocmVwbHktPnJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VT UykKK0BAIC0yMjgxLDcgKzIyODEsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV90cmFuc2Zlcl9jYigK KyAgICAgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnOworICAgICAgICAg Z2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAgICAgICBpbnQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZ0cF9jb2RlOworLSAgICAgICAgCisrCisgICAgICAg ICAvKiB1c2UgY29kZSBhbmQgbWVzc2FnZSBmcm9tIHJlcGx5IGlmIHNldCAqLworICAgICAgICAg aWYocmVwbHktPmNvZGUgJiYgcmVwbHktPm1zZykKKyAgICAgICAgIHsKK0BAIC0yNDM1LDExICsy NDM1LDExIEBAIGdsb2J1c19sX2dmc19yZXF1ZXN0X3NlbmQoCisgCisgICAgIEdsb2J1c0dGU0Rl YnVnRXhpdCgpOworICAgICByZXR1cm47CistICAgIAorKworIGVycm9yX2luaXQ6CisgICAgIHsK KyAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnRwX2NvZGU7CistICAg ICAgICAKKysKKyAgICAgICAgIC8qIHB1bGwgcmVzcG9uc2UgY29kZSBmcm9tIGVycm9yICovCisg ICAgICAgICBpZigoZnRwX2NvZGUgPSBnbG9idXNfZ2ZzX2Vycm9yX2dldF9mdHBfcmVzcG9uc2Vf Y29kZSgKKyAgICAgICAgICAgICBnbG9idXNfZXJyb3JfcGVlayhyZXN1bHQpKSkgPT0gMCkKK0BA IC0yNDk2LDcgKzI0OTYsNyBAQCBnbG9idXNfbF9nZnNfcmVxdWVzdF9yZWN2KAorICAgICB7Cisg ICAgICAgICBnb3RvIGVycm9yX2luaXQ7CisgICAgIH0KKy0gICAgCisrCisgICAgIC8qIGlmIHJl c3RhcnQgcmFuZ2UgaXMgYW55dGhpbmcgYnV0IDAtTUFYIHRoZW4gd2UgZG9uJ3QgdHJ1bmMgdGhl IGZpbGUgKi8KKyAgICAgaWYoZ2xvYnVzX3JhbmdlX2xpc3Rfc2l6ZShyYW5nZV9saXN0KSkKKyAg ICAgeworQEAgLTI1MTQsOSArMjUxNCw5IEBAIGdsb2J1c19sX2dmc19yZXF1ZXN0X3JlY3YoCisg ICAgICAgICAgICAgIiUiR0xPQlVTX09GRl9UX0ZPUk1BVCwKKyAgICAgICAgICAgICAmcmVjdl9p bmZvLT5wYXJ0aWFsX29mZnNldCk7CisgICAgICAgICByZWN2X2luZm8tPnBhcnRpYWxfbGVuZ3Ro ID0gLTE7CistICAgICAgICAKKysKKyAgICAgICAgIC8qICBFU1RPIEEgMCAvZmlsZSBpcyBub3Qg dGhlIHNhbWUgYXMgU1RPUiAvZmlsZQorLSAgICAgICAgICAgIEVTVE8gZG9lc24ndCB0cnVuY2F0 ZSB0aGUgZmlsZS4gCisrICAgICAgICAgICAgRVNUTyBkb2Vzbid0IHRydW5jYXRlIHRoZSBmaWxl LgorICAgICAgICAgKi8KKyAgICAgICAgIHJlY3ZfaW5mby0+dHJ1bmNhdGUgPSBHTE9CVVNfRkFM U0U7CisgCitAQCAtMjUyNiw3ICsyNTI2LDcgQEAgZ2xvYnVzX2xfZ2ZzX3JlcXVlc3RfcmVjdigK KyAgICAgeworICAgICAgICAgcmVjdl9pbmZvLT5wYXJ0aWFsX29mZnNldCA9IDA7CisgICAgICAg ICByZWN2X2luZm8tPnBhcnRpYWxfbGVuZ3RoID0gLTE7CistICAgICAgICAKKysKKyAgICAgICAg IGlmKG1vZF9uYW1lICE9IE5VTEwpCisgICAgICAgICB7CisgICAgICAgICAgICAgcmVjdl9pbmZv LT5tb2R1bGVfbmFtZSA9IGdsb2J1c19saWJjX3N0cmR1cChtb2RfbmFtZSk7CitAQCAtMjU0NCw3 ICsyNTQ0LDcgQEAgZ2xvYnVzX2xfZ2ZzX3JlcXVlc3RfcmVjdigKKyAgICAgfQorIAorICAgICB9 CistICAgICAgICAKKysKKyAgICAgcmVzdWx0ID0gZ2xvYnVzX2xfZ2ZzX2dldF9mdWxsX3BhdGgo CisgICAgICAgICBpbnN0YW5jZSwgcGF0aCwgJnJlY3ZfaW5mby0+cGF0aG5hbWUsIEdGU19MX1dS SVRFKTsKKyAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorQEAgLTI1NTUsNyArMjU1 NSw3IEBAIGdsb2J1c19sX2dmc19yZXF1ZXN0X3JlY3YoCisgICAgIHJlY3ZfaW5mby0+c3RyaXBl X2NvdW50ID0gMTsKKyAgICAgcmVjdl9pbmZvLT5ub2RlX2NvdW50ID0gMTsKKyAgICAgcmVjdl9p bmZvLT5kYXRhX2FyZyA9IGRhdGFfaGFuZGxlOworLSAgICAgICAgCisrCisgICAgIGdsb2J1c19p X2dmc19kYXRhX3JlcXVlc3RfcmVjdigKKyAgICAgICAgIE5VTEwsCisgICAgICAgICBpbnN0YW5j ZS0+c2Vzc2lvbl9hcmcsCitAQCAtMjU2NywxMSArMjU2NywxMSBAQCBnbG9idXNfbF9nZnNfcmVx dWVzdF9yZWN2KAorIAorICAgICBHbG9idXNHRlNEZWJ1Z0V4aXQoKTsKKyAgICAgcmV0dXJuOwor LSAgICAKKysKKyBlcnJvcl9pbml0OgorICAgICB7CisgICAgICAgICBpbnQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGZ0cF9jb2RlOworLSAgICAgICAgCisrCisgICAgICAgICAvKiBwdWxs IHJlc3BvbnNlIGNvZGUgZnJvbSBlcnJvciAqLworICAgICAgICAgaWYoKGZ0cF9jb2RlID0gZ2xv YnVzX2dmc19lcnJvcl9nZXRfZnRwX3Jlc3BvbnNlX2NvZGUoCisgICAgICAgICAgICAgZ2xvYnVz X2Vycm9yX3BlZWsocmVzdWx0KSkpID09IDApCitAQCAtMjY0MywxMSArMjY0MywxMSBAQCBnbG9i dXNfbF9nZnNfcmVxdWVzdF9saXN0KAorIAorICAgICBHbG9idXNHRlNEZWJ1Z0V4aXQoKTsKKyAg ICAgcmV0dXJuOworLSAgICAKKysKKyBlcnJvcl9pbml0OgorICAgICB7CisgICAgICAgICBpbnQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ0cF9jb2RlOworLSAgICAgICAgCisrCisgICAg ICAgICAvKiBwdWxsIHJlc3BvbnNlIGNvZGUgZnJvbSBlcnJvciAqLworICAgICAgICAgaWYoKGZ0 cF9jb2RlID0gZ2xvYnVzX2dmc19lcnJvcl9nZXRfZnRwX3Jlc3BvbnNlX2NvZGUoCisgICAgICAg ICAgICAgZ2xvYnVzX2Vycm9yX3BlZWsocmVzdWx0KSkpID09IDApCitAQCAtMjc3NiwyNSArMjc3 NiwyNSBAQCBnbG9idXNfbF9nZnNfZ2V0X2RhdGFfaW5mbygKKyAgICAgICAgIE5VTEwpOworICAg ICBnbG9idXNfYXNzZXJ0KHJlc3VsdCA9PSBHTE9CVVNfU1VDQ0VTUyk7CisgCistICAgIHJlc3Vs dCA9IGdsb2J1c19ncmlkZnRwX3NlcnZlcl9jb250cm9sX2dldF9sYXlvdXQoICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisrICAgIHJlc3VsdCA9IGdsb2J1c19ncmlkZnRw X3NlcnZlcl9jb250cm9sX2dldF9sYXlvdXQoCisgICAgICAgICBvcCwKKyAgICAgICAgIChnbG9i dXNfZ3NjX2xheW91dF90ICopICZkYXRhX2luZm8tPnN0cmlwZV9sYXlvdXQsCisgICAgICAgICAm ZGF0YV9pbmZvLT5zdHJpcGVfYmxvY2tzaXplKTsKKyAgICAgZ2xvYnVzX2Fzc2VydChyZXN1bHQg PT0gR0xPQlVTX1NVQ0NFU1MpOworLSAgICAKKy0gICAgaWYoZGF0YV9pbmZvLT5zdHJpcGVfYmxv Y2tzaXplID09IDAgfHwgCisrCisrICAgIGlmKGRhdGFfaW5mby0+c3RyaXBlX2Jsb2Nrc2l6ZSA9 PSAwIHx8CisgICAgICAgICBnbG9idXNfaV9nZnNfY29uZmlnX2Jvb2woInN0cmlwZV9ibG9ja3Np emVfbG9ja2VkIikpCisgICAgIHsKKy0gICAgICAgIGRhdGFfaW5mby0+c3RyaXBlX2Jsb2Nrc2l6 ZSA9IAorKyAgICAgICAgZGF0YV9pbmZvLT5zdHJpcGVfYmxvY2tzaXplID0KKyAgICAgICAgICAg ICBnbG9idXNfaV9nZnNfY29uZmlnX2ludCgic3RyaXBlX2Jsb2Nrc2l6ZSIpOworICAgICB9Cisg ICAgIGlmKGdsb2J1c19pX2dmc19jb25maWdfaW50KCJzdHJpcGVfbGF5b3V0X2xvY2tlZCIpKQor ICAgICB7CistICAgICAgICBkYXRhX2luZm8tPnN0cmlwZV9sYXlvdXQgPSAKKysgICAgICAgIGRh dGFfaW5mby0+c3RyaXBlX2xheW91dCA9CisgICAgICAgICAgICAgZ2xvYnVzX2lfZ2ZzX2NvbmZp Z19pbnQoInN0cmlwZV9sYXlvdXQiKTsKKyAgICAgfQorICAgICBlbHNlCistICAgIHsgICAgICAg IAorKyAgICB7CisgICAgICAgICBzd2l0Y2goZGF0YV9pbmZvLT5zdHJpcGVfbGF5b3V0KQorICAg ICAgICAgeworICAgICAgICAgICAgIGNhc2UgR0xPQlVTX0dTQ19MQVlPVVRfVFlQRV9QQVJUSVRJ T05FRDoKK0BAIC0yODA1LDEyICsyODA1LDEyIEBAIGdsb2J1c19sX2dmc19nZXRfZGF0YV9pbmZv KAorICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICBjYXNlIEdMT0JVU19HU0Nf TEFZT1VUX1RZUEVfTk9ORToKKyAgICAgICAgICAgICBkZWZhdWx0OgorLSAgICAgICAgICAgICAg ICBkYXRhX2luZm8tPnN0cmlwZV9sYXlvdXQgPSAKKysgICAgICAgICAgICAgICAgZGF0YV9pbmZv LT5zdHJpcGVfbGF5b3V0ID0KKyAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19pX2dmc19jb25m aWdfaW50KCJzdHJpcGVfbGF5b3V0Iik7CisgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg ICAgfQorICAgICB9CistICAgIAorKworICAgICBkYXRhX2luZm8tPmJsb2Nrc2l6ZSA9IGdsb2J1 c19pX2dmc19jb25maWdfaW50KCJibG9ja3NpemUiKTsKKyAKKyAgICAgR2xvYnVzR0ZTRGVidWdF eGl0KCk7CitAQCAtMjg1MCwyOSArMjg1MCwyOSBAQCBnbG9idXNfbF9nZnNfcmVxdWVzdF9wYXNz aXZlX2RhdGEoCisgCisgICAgIGdsb2J1c19sX2dmc19nZXRfZGF0YV9pbmZvKG9wLCBkYXRhX2lu Zm8sIG5ldF9wcnQpOworIAorLSAgICBpZihnbG9idXNfaV9nZnNfY29uZmlnX2Jvb2woImVuY3J5 cHRfZGF0YSIpICYmIAorKyAgICBpZihnbG9idXNfaV9nZnNfY29uZmlnX2Jvb2woImVuY3J5cHRf ZGF0YSIpICYmCisgICAgICAgICAoZGF0YV9pbmZvLT5wcm90ICE9ICdQJyB8fCBkYXRhX2luZm8t PmRjYXUgPT0gJ04nKSkKKyAgICAgeworICAgICAgICAgdG1wX3N0ciA9IHN0cmR1cCgiRW5jcnlw dGlvbiBpcyByZXF1aXJlZC4iKTsKKyAgICAgICAgIGVycl9jb2RlID0gR0xPQlVTX0dSSURGVFBf U0VSVkVSX0NPTlRST0xfUkVTUE9OU0VfREFUQV9DT05OX0FVVEg7CisgICAgICAgICBnb3RvIGVy cm9yX3Bvc3Rpbml0OworICAgICB9CistICAgIAorKworICAgICBpZihwYXRobmFtZSkKKyAgICAg eworLSAgICAgICAgLyogZGVsYXllZCBwYXN2LCBmaW5hbCBwZXJtIGNoZWNrIHdpbGwgaGFwcGVu IG9uIHRoZSBzdG9yL3JldHIgKi8gCisrICAgICAgICAvKiBkZWxheWVkIHBhc3YsIGZpbmFsIHBl cm0gY2hlY2sgd2lsbCBoYXBwZW4gb24gdGhlIHN0b3IvcmV0ciAqLworICAgICAgICAgcmVzdWx0 ID0gZ2xvYnVzX2xfZ2ZzX2dldF9mdWxsX3BhdGgoCisgICAgICAgICAgICAgaW5zdGFuY2UsIHBh dGhuYW1lLCAmZGF0YV9pbmZvLT5wYXRobmFtZSwgR0ZTX0xfTElTVCk7CisgICAgICAgICBpZihy ZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICB7CisgICAgICAgICAgICAgZXJyX2Nv ZGUgPSBHTE9CVVNfR1JJREZUUF9TRVJWRVJfQ09OVFJPTF9SRVNQT05TRV9BQ1RJT05fRkFJTEVE OworICAgICAgICAgICAgIGdvdG8gZXJyb3JfcG9zdGluaXQ7CistICAgICAgICB9ICAgICAgICAK KysgICAgICAgIH0KKyAgICAgfQorICAgICBnbG9idXNfeGlvX2NvbnRhY3RfcGFyc2UoJnBhcnNl ZF9jb250YWN0LCBpbnN0YW5jZS0+bG9jYWxfY29udGFjdCk7CisgICAgIGRhdGFfaW5mby0+bWF4 X2NzID0gbWF4OworICAgICBkYXRhX2luZm8tPmludGVyZmFjZSA9IGdsb2J1c19saWJjX3N0cmR1 cChwYXJzZWRfY29udGFjdC5ob3N0KTsKKy0gICAgCisrCisgICAgIGdsb2J1c194aW9fY29udGFj dF9kZXN0cm95KCZwYXJzZWRfY29udGFjdCk7CisgCisgICAgIGdsb2J1c19pX2dmc19kYXRhX3Jl cXVlc3RfcGFzc2l2ZSgKK0BAIC0yODg1LDcgKzI4ODUsNyBAQCBnbG9idXNfbF9nZnNfcmVxdWVz dF9wYXNzaXZlX2RhdGEoCisgCisgICAgIEdsb2J1c0dGU0RlYnVnRXhpdCgpOworICAgICByZXR1 cm47CistICAgIAorKworIGVycm9yX3Bvc3Rpbml0OgorICAgICBnbG9idXNfbF9nZnNfcmVxdWVz dF9pbmZvX2Rlc3Ryb3kocmVxdWVzdCk7CisgZXJyb3JfaW5pdDoKK0BAIC0yOTk5LDcgKzI5OTks NyBAQCBnbG9idXNfbF9nZnNfcmVxdWVzdF9hY3RpdmVfZGF0YSgKKyAgICAgfQorIAorICAgICBn bG9idXNfbF9nZnNfZ2V0X2RhdGFfaW5mbyhvcCwgZGF0YV9pbmZvLCBuZXRfcHJ0KTsKKy0gICAg aWYoZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19ib29sKCJlbmNyeXB0X2RhdGEiKSAmJiAKKysgICAgaWYo Z2xvYnVzX2lfZ2ZzX2NvbmZpZ19ib29sKCJlbmNyeXB0X2RhdGEiKSAmJgorICAgICAgICAgKGRh dGFfaW5mby0+cHJvdCAhPSAnUCcgfHwgZGF0YV9pbmZvLT5kY2F1ID09ICdOJykpCisgICAgIHsK KyAgICAgICAgIHRtcF9zdHIgPSBzdHJkdXAoIkVuY3J5cHRpb24gaXMgcmVxdWlyZWQuIik7CitA QCAtMzAxMiw5ICszMDEyLDkgQEAgZ2xvYnVzX2xfZ2ZzX3JlcXVlc3RfYWN0aXZlX2RhdGEoCisg ICAgIGRhdGFfaW5mby0+Y29udGFjdF9zdHJpbmdzID0gY3M7CisgICAgIGRhdGFfaW5mby0+Y3Nf Y291bnQgPSBjc19jb3VudDsKKyAgICAgZGF0YV9pbmZvLT5pbnRlcmZhY2UgPSBnbG9idXNfbGli Y19zdHJkdXAocGFyc2VkX2NvbnRhY3QuaG9zdCk7CistICAgIAorKworICAgICBnbG9idXNfeGlv X2NvbnRhY3RfZGVzdHJveSgmcGFyc2VkX2NvbnRhY3QpOworLSAgICAKKysKKyAgICAgZ2xvYnVz X2lfZ2ZzX2RhdGFfcmVxdWVzdF9hY3RpdmUoCisgICAgICAgICBOVUxMLAorICAgICAgICAgaW5z dGFuY2UtPnNlc3Npb25fYXJnLAorQEAgLTMwMjUsNyArMzAyNSw3IEBAIGdsb2J1c19sX2dmc19y ZXF1ZXN0X2FjdGl2ZV9kYXRhKAorIAorICAgICBHbG9idXNHRlNEZWJ1Z0V4aXQoKTsKKyAgICAg cmV0dXJuOworLSAgCisrCisgZXJyb3JfcG9zdGluaXQ6CisgICAgIGdsb2J1c19sX2dmc19yZXF1 ZXN0X2luZm9fZGVzdHJveShyZXF1ZXN0KTsKKyBlcnJvcl9pbml0OgorQEAgLTMwODUsNyArMzA4 NSw3IEBAIGdsb2J1c19sX2dmc19jb250cm9sX2xvZygKKyAgICAgbXNnID0gZ2xvYnVzX2xpYmNf c3RyZHVwKG1lc3NhZ2UpOworICAgICBnbG9idXNfaV9nZnNfbG9nX3RyKG1zZywgJ1wiJywgJ1wn Jyk7CisgICAgIGdsb2J1c19pX2dmc19sb2dfdHIobXNnLCAnXHInLCAnICcpOworLSAgICAKKysK KyAgICAgc3dpdGNoKHR5cGUpCisgICAgIHsKKyAgICAgICBjYXNlIEdMT0JVU19HUklERlRQX1NF UlZFUl9DT05UUk9MX0xPR19SRVBMWToKK0BAIC0zMTI0LDcgKzMxMjQsNyBAQCBnbG9idXNfbF9n ZnNfY29udHJvbF9sb2coCisgICAgICAgICAgICAgbXNnKTsKKyAgICAgICAgIGJyZWFrOworICAg ICB9CistICAgIAorKworICAgICBnbG9idXNfZnJlZShtc2cpOworIAorICAgICBHbG9idXNHRlNE ZWJ1Z0V4aXQoKTsKK0BAIC0zNTM4LDcgKzM1MzgsNyBAQCBnbG9idXNfbF9nZnNfYWRkX2NvbW1h bmRzKAorICAgICB7CisgICAgICAgICBnb3RvIGVycm9yOworICAgICB9CistICAgIAorKworICAg ICBpZihnbG9idXNfaV9nZnNfY29uZmlnX2Jvb2woImFsbG93X3VkdCIpKQorICAgICB7CisgICAg ICAgICByZXN1bHQgPSBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfY29udHJvbF9hZGRfZmVhdHVyZSgK K0BAIC0zNjAxLDcgKzM2MDEsNyBAQCBnbG9idXNfbF9nZnNfYWRkX2NvbW1hbmRzKAorICAgICBp Zihkc2lfdmVyKQorICAgICB7CisgICAgICAgICBmZWF0X3N0ciA9IGdsb2J1c19jb21tb25fY3Jl YXRlX3N0cmluZygiRFNJICVzIiwgZHNpX3Zlcik7CistICAgICAgICAKKysKKyAgICAgICAgIHJl c3VsdCA9IGdsb2J1c19ncmlkZnRwX3NlcnZlcl9jb250cm9sX2FkZF9mZWF0dXJlKAorICAgICAg ICAgICAgIGNvbnRyb2xfaGFuZGxlLCBmZWF0X3N0cik7CisgICAgICAgICBnbG9idXNfZnJlZShm ZWF0X3N0cik7CitAQCAtMzY5NywxMSArMzY5NywxMSBAQCBnbG9idXNfbF9nZnNfY29udHJvbF93 YXRjaGRvZ19jaGVjaygKKyAgICAgICAgIH0KKyAgICAgfQorICAgICBnbG9idXNfbXV0ZXhfdW5s b2NrKCZnbG9idXNfbF9nZnNfY29udHJvbF9tdXRleCk7CistICAgIAorKworICAgICBpZihjYW5f a2lsbCkKKyAgICAgeworICAgICAgICAgZ2xvYnVzX3JlbHRpbWVfdCAgICAgICAgICAgICAgICAg ICAgdGltZXI7CistICAgICAgICAKKysKKyAgICAgICAgIEdsb2J1c1RpbWVSZWx0aW1lU2V0KHRp bWVyLCA2MCwgMCk7CisgICAgICAgICBnbG9idXNfY2FsbGJhY2tfcmVnaXN0ZXJfb25lc2hvdCgK KyAgICAgICAgICAgICBOVUxMLAorQEAgLTM3OTgsNyArMzc5OCw3IEBAIGdsb2J1c19pX2dmc19j b250cm9sX3N0YXJ0KAorIAorICAgICBpZGxlX3RpbWVvdXQgPSBnbG9idXNfaV9nZnNfY29uZmln X2ludCgiY29udHJvbF9pZGxlX3RpbWVvdXQiKTsKKyAgICAgcHJlYXV0aF90aW1lb3V0ID0gZ2xv YnVzX2lfZ2ZzX2NvbmZpZ19pbnQoImNvbnRyb2xfcHJlYXV0aF90aW1lb3V0Iik7CistICAgIAor KworICAgICByZXN1bHQgPSBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfY29udHJvbF9hdHRyX3NldF9p ZGxlX3RpbWUoCisgICAgICAgICBhdHRyLCBpZGxlX3RpbWVvdXQsIHByZWF1dGhfdGltZW91dCk7 CisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKK0BAIC0zODcwLDcgKzM4NzAsNyBA QCBnbG9idXNfaV9nZnNfY29udHJvbF9zdGFydCgKKyAgICAgICAgIGdvdG8gZXJyb3JfYXR0cl9z ZXR1cDsKKyAgICAgfQorIAorLSAgICBtb2R1bGVfbGlzdCA9IChnbG9idXNfbGlzdF90ICopIGds b2J1c19pX2dmc19jb25maWdfZ2V0KCJtb2R1bGVfbGlzdCIpOyAgCisrICAgIG1vZHVsZV9saXN0 ID0gKGdsb2J1c19saXN0X3QgKikgZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19nZXQoIm1vZHVsZV9saXN0 Iik7CisgICAgIGZvcihsaXN0ID0gbW9kdWxlX2xpc3Q7CisgICAgICAgICAhZ2xvYnVzX2xpc3Rf ZW1wdHkobGlzdCk7CisgICAgICAgICBsaXN0ID0gZ2xvYnVzX2xpc3RfcmVzdChsaXN0KSkKK0BA IC0zODk1LDcgKzM4OTUsNyBAQCBnbG9idXNfaV9nZnNfY29udHJvbF9zdGFydCgKKyAgICAgICAg ICAgICBnb3RvIGVycm9yX2F0dHJfc2V0dXA7CisgICAgICAgICB9CisgICAgICAgICBnbG9idXNf ZnJlZShhbGlhcyk7CistICAgIH0gCisrICAgIH0KKyAKKyAgICAgcmVzdWx0ID0gZ2xvYnVzX2dy aWRmdHBfc2VydmVyX2NvbnRyb2xfYXR0cl9zZXRfbGlzdCgKKyAgICAgICAgIGF0dHIsIGdsb2J1 c19sX2dmc19yZXF1ZXN0X2xpc3QsIGluc3RhbmNlKTsKK0BAIC0zOTM5LDcgKzM5MzksNyBAQCBn bG9idXNfaV9nZnNfY29udHJvbF9zdGFydCgKKyAgICAgICAgIGdvdG8gZXJyb3JfYWRkX2NvbW1h bmRzOworICAgICB9CisgCistICAgIAorKworIAorICAgICAvKiBkaXNhYmxlIGNvbW1hbmRzIGlm IHRoZSB1c2VyIHNheXMgdG8gKi8KKyAgICAgaWYoKHZhbHVlID0gZ2xvYnVzX2lfZ2ZzX2NvbmZp Z19zdHJpbmcoImRpc2FibGVfY29tbWFuZF9saXN0IikpICE9IE5VTEwpCitAQCAtMzk2Miw3ICsz OTYyLDcgQEAgZ2xvYnVzX2lfZ2ZzX2NvbnRyb2xfc3RhcnQoCisgICAgICAgICB7CisgICAgICAg ICAgICAgZ290byBlcnJvcl9zdGFydDsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAg ICAgZ2xvYnVzX2dmc19sb2dfZXZlbnQoCisgICAgICAgICAgICAgR0xPQlVTX0dGU19MT0dfSU5G TywKKyAgICAgICAgICAgICBHTE9CVVNfR0ZTX0xPR19FVkVOVF9TVEFSVCwKK2RpZmYgLS1naXQg YS9ncmlkZnRwL3NlcnZlci9zcmMvZ2xvYnVzX2lfZ2ZzX2RhdGEuYyBiL2dyaWRmdHAvc2VydmVy L3NyYy9nbG9idXNfaV9nZnNfZGF0YS5jCitpbmRleCAwYmYwZWE0MzYuLmIyYmU3NWU0ZiAxMDA2 NDQKKy0tLSBhL2dyaWRmdHAvc2VydmVyL3NyYy9nbG9idXNfaV9nZnNfZGF0YS5jCisrKysgYi9n cmlkZnRwL3NlcnZlci9zcmMvZ2xvYnVzX2lfZ2ZzX2RhdGEuYworQEAgLTIxOCwxMCArMjE4LDEw IEBAIHR5cGVkZWYgc3RydWN0CisgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAg ICAgIGZpbmFsOworIH0gZ2xvYnVzX2xfZ2ZzX2RhdGFfYm91bmNlX3Q7CisgCistdHlwZWRlZiBz dHJ1Y3QgCisrdHlwZWRlZiBzdHJ1Y3QKKyB7CisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFsbDsKKy0gICAgCisrCisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1vZGlmeTsKKyAgICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAg ICAgICAgbW9kaWZ5X3NlZW47CisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNoZWNrc3VtX21kNTsKK0BAIC0yNzEsMjEgKzI3MSwyMSBAQCB0eXBlZGVmIHN0cnVjdAor ICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfYXBwdmVyOwor ICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfc2NoZW1lOwor ICAgICBnc3NfY3JlZF9pZF90ICAgICAgICAgICAgICAgICAgICAgICBkY3NjX2NyZWQ7CistICAg IAorKworICAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAgICAgICB1cGFzOworICAg ICBnbG9idXNfZnRwX2NvbnRyb2xfaGFuZGxlX3QgICAgICAgICB1ZHRfZGF0YV9jaGFubmVsOwor ICAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAgICAgICB1ZHRfZGF0YV9jaGFubmVs X2ludXNlOworLSAgICAKKysKKyAgICAgZ2xvYnVzX2xpc3RfdCAqKiAgICAgICAgICAgICAgICAg ICAgYWN0aXZlX3JwX2xpc3Q7CisgICAgIGdsb2J1c19saXN0X3QgKiAgICAgICAgICAgICAgICAg ICAgIHJwX2xpc3Q7CistICAgIAorKworICAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAg ICAgICAgICBzaGFyaW5nOworICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaGFyaW5nX3N0YXRlX2RpcjsKKyAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2hhcmluZ19pZDsKKyAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2hhcmluZ19zaGFyZWU7CistICAgIAorKworICAgICBjaGFyICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0YXNraWQ7CistICAgIAorKworICAgICBjaGFyICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzM2lkOworICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzM2tleTsKKyAgICAgZ3NzX2NyZWRfaWRfdCAgICAgICAgICAgICAgICAgICAgICAg aHR0cF9jcmVkOworQEAgLTI5NywxNiArMjk3LDE2IEBAIHR5cGVkZWYgc3RydWN0CisgICAgIGds b2J1c194aW9fZHJpdmVyX3QgICAgICAgICAgICAgICAgIGh0dHBfZHJpdmVyOworIAorICAgICBj aGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYXR0cl9zdHI7CistICAgIAor KworICAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAgICAgICBvcmRlcl9kYXRhOwor LSAgICAKKysKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9h Y3RpdmU7CisgICAgIGdsb2J1c19vZmZfdCAgICAgICAgICAgICAgICAgICAgICAgIHdhdGNoX3Vw ZGF0ZXM7CisgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgIHdhdGNoOwor ICAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAgICAgICB3YXRjaF9hYm9ydGVkOwor ICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXRjaF9vcDsKKyAgICAg Z2xvYnVzX2NhbGxiYWNrX2hhbmRsZV90ICAgICAgICAgICAgd2F0Y2hfaGFuZGxlOworLSAgICAK KysKKyAgICAgZ2xvYnVzX2hhc2h0YWJsZV90ICAgICAgICAgICAgICAgICAgY3VzdG9tX2NtZF90 YWJsZTsKKyB9IGdsb2J1c19sX2dmc19kYXRhX3Nlc3Npb25fdDsKKyAKK0BAIC0zNTcsNyArMzU3 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2xvYnVzX2xfZ2ZzX2RhdGFfb3BlcmF0aW9uX3MKKyAgICAg aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9kZXB0aDsKKyAgICAgaW50 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhdmVyc2FsX29wdGlvbnM7CisgICAg IGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIGRlbGF5ZWRfZXJyb3I7CistICAg IAorKworICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX21zZzsK KyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9jb2RlOworIAor QEAgLTM2Nyw3ICszNjcsNyBAQCB0eXBlZGVmIHN0cnVjdCBnbG9idXNfbF9nZnNfZGF0YV9vcGVy YXRpb25fcworICAgICBnbG9idXNfcmFuZ2VfbGlzdF90ICAgICAgICAgICAgICAgICByZWN2ZF9y YW5nZXM7CisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJfbWFy a2VyczsKKyAgICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyczsK Ky0gICAgCisrCisgICAgIGdsb2J1c19sX2dmc19kYXRhX3BhdGhfbGlzdF90ICogICAgIHBhdGhf bGlzdDsKKyAgICAgZ2xvYnVzX2xfZ2ZzX2RhdGFfcGF0aF9saXN0X3QgKiAgICAgY3VycmVudF9w YXRoOworICAgICBnbG9idXNfbF9nZnNfZGF0YV9wYXRoX2xpc3RfdCAqICAgICByb290X3BhdGhz OworQEAgLTQwMywxMiArNDAzLDEyIEBAIHR5cGVkZWYgc3RydWN0IGdsb2J1c19sX2dmc19kYXRh X29wZXJhdGlvbl9zCisgICAgIC8qKi8KKyAKKyAgICAgZ2xvYnVzX2xfZ2ZzX3N0b3JhdHRyX3Qg KiAgICAgICAgICAgc3RvcmF0dHI7CistICAgIAorKworICAgICBjaGFyICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlX3N0cjsKKyAgICAgY2hhciAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaHR0cF9pcDsKKyAKKyAgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdXBkYXRlX2ludGVydmFsOworLSAgICAKKysKKyAgICAgdm9pZCAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfYXJnOworICAgICBpbnQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudF9tYXNrOworIAorQEAgLTU3MCw3ICs1NzAs NyBAQCBzdGF0aWMKKyB2b2lkCisgZ2xvYnVzX2xfZ2ZzX2RhdGFfYWN0aXZlX2tpY2tvdXQoCisg ICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfYXJnKTsKKy0gICAg CisrCisgc3RhdGljCisgdm9pZAorIGdsb2J1c19sX2dmc19kYXRhX3Bhc3NpdmVfa2lja291dCgK K0BAIC01OTQsMjQgKzU5NCwyNCBAQCBnbG9idXNfbF9nZnNfZGF0YV9icmFpbl9yZWFkeV9kZWxh eV9jYigKKyAKKyB2b2lkCisgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF9yZWFkX2NiKAorLSAgICBn bG9idXNfeGlvX2hhbmRsZV90ICAgICAgICAgICAgICAgICB4aW9faGFuZGxlLCAKKysgICAgZ2xv YnVzX3hpb19oYW5kbGVfdCAgICAgICAgICAgICAgICAgeGlvX2hhbmRsZSwKKyAgICAgZ2xvYnVz X3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LAorICAgICBnbG9idXNfYnl0ZV90 ICogICAgICAgICAgICAgICAgICAgICBidWZmZXIsCisgICAgIGdsb2J1c19zaXplX3QgICAgICAg ICAgICAgICAgICAgICAgIGxlbmd0aCwKKy0gICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAg ICAgICAgICAgbmJ5dGVzLCAKKysgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAg ICAgbmJ5dGVzLAorICAgICBnbG9idXNfeGlvX2RhdGFfZGVzY3JpcHRvcl90ICAgICAgICBkYXRh X2Rlc2MsCisgICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfYXJn KTsKKyB2b2lkCisgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF93cml0ZV9jYigKKy0gICAgZ2xvYnVz X3hpb19oYW5kbGVfdCAgICAgICAgICAgICAgICAgeGlvX2hhbmRsZSwgCisrICAgIGdsb2J1c194 aW9faGFuZGxlX3QgICAgICAgICAgICAgICAgIHhpb19oYW5kbGUsCisgICAgIGdsb2J1c19yZXN1 bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwKKyAgICAgZ2xvYnVzX2J5dGVfdCAqICAg ICAgICAgICAgICAgICAgICAgYnVmZmVyLAorICAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAg ICAgICAgICAgICBsZW5ndGgsCistICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAg ICAgIG5ieXRlcywgCisrICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgIG5i eXRlcywKKyAgICAgZ2xvYnVzX3hpb19kYXRhX2Rlc2NyaXB0b3JfdCAgICAgICAgZGF0YV9kZXNj LAorICAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2FyZyk7Cisg CistZ2xvYnVzX3Jlc3VsdF90IAorK2dsb2J1c19yZXN1bHRfdAorIGdsb2J1c19pX2dmc19kYXRh X2h0dHBfZ2V0KAorICAgICBnbG9idXNfbF9nZnNfZGF0YV9vcGVyYXRpb25fdCAqICAgICBvcCwK KyAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwKK0BAIC02NjEs NyArNjYxLDcgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF9wcmludF9yZXNwb25zZSgKKyAgICAg Y2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYjY0X2hlYWRlciA9IE5VTEw7Cisg ICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGI2NF9ib2R5ID0gTlVMTDsK KyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keV9sZW4gPSAwOwor LSAgICAKKysKKyAgICAgcmMgPSBnbG9idXNfaGFzaHRhYmxlX3RvX2xpc3QoaGVhZGVyX3RhYmxl LCAmaGVhZGVyX2xpc3QpOworIAorICAgICBoZWFkZXJfc3RyID0gc3RyZHVwKCIiKTsKK0BAIC02 ODEsMTAgKzY4MSwxMCBAQCBnbG9idXNfaV9nZnNfZGF0YV9odHRwX3ByaW50X3Jlc3BvbnNlKAor ICAgICAgICAgICAgIGJvZHksIGJvZHlfbGVuLCAoZ2xvYnVzX2J5dGVfdCAqKSBiNjRfYm9keSwg TlVMTCk7CisgICAgICAgICBnbG9idXNfYXNzZXJ0KHJlc3VsdCA9PSBHTE9CVVNfU1VDQ0VTUyk7 CisgICAgIH0KKy0gICAgCisrCisgICAgIGI2NF9oZWFkZXIgPSBtYWxsb2Moc3RybGVuKGhlYWRl cl9zdHIpICogNCAvIDMgKyA0KTsKKyAgICAgcmVzdWx0ID0gZ2xvYnVzX2xfZ2ZzX2Jhc2U2NF9l bmNvZGUoCistICAgICAgICAoZ2xvYnVzX2J5dGVfdCAqKSBoZWFkZXJfc3RyLCBzdHJsZW4oaGVh ZGVyX3N0ciksIAorKyAgICAgICAgKGdsb2J1c19ieXRlX3QgKikgaGVhZGVyX3N0ciwgc3RybGVu KGhlYWRlcl9zdHIpLAorICAgICAgICAgKGdsb2J1c19ieXRlX3QgKikgYjY0X2hlYWRlciwgTlVM TCk7CisgICAgIGdsb2J1c19hc3NlcnQocmVzdWx0ID09IEdMT0JVU19TVUNDRVNTKTsKKyAKK0BA IC03MTIsOCArNzEyLDggQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF9wcmludF9yZXNwb25zZSgK KyAgICAgICAgICAgICByZXNwb25zZV9jb2RlLAorICAgICAgICAgICAgIGI2NF9oZWFkZXIpOwor ICAgICB9CistICAgICAgICAgICAgCistICAgIGdsb2J1c19mcmVlKGhlYWRlcl9zdHIpOyAgICAg ICAgCisrCisrICAgIGdsb2J1c19mcmVlKGhlYWRlcl9zdHIpOworICAgICBnbG9idXNfZnJlZShi NjRfaGVhZGVyKTsKKyAgICAgaWYoYjY0X2JvZHkpCisgICAgIHsKK0BAIC03MjcsNyArNzI3LDcg QEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF9wcmludF9yZXNwb25zZSgKKyBzdGF0aWMgY2hhciAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZ2ZzX2Jhc2U2NF9wYWQgPSAnPSc7 Cisgc3RhdGljIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19sX2dmc19i YXNlNjRfbiA9CisgICAgICAgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlq a2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7Cistc3RhdGljIAorK3N0YXRpYworIGdsb2J1 c19yZXN1bHRfdAorIGdsb2J1c19sX2dmc19iYXNlNjRfZGVjb2RlKAorICAgICBjb25zdCB1bnNp Z25lZCBjaGFyICAqICAgICAgICAgICAgICBpbmJ1ZiwKK0BAIC03NDUsNyArNzQ1LDcgQEAgZ2xv YnVzX2xfZ2ZzX2Jhc2U2NF9kZWNvZGUoCisgICAgIHsKKyAgICAgICAgIGlmKChwID0gc3RyY2hy KGdsb2J1c19sX2dmc19iYXNlNjRfbiwgaW5idWZbaV0pKSA9PSBOVUxMKQorICAgICAgICAgewor LQkgICAgZ290byBlcnI7CisrICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgICB9CisgICAg ICAgICBEID0gcCAtIGdsb2J1c19sX2dmc19iYXNlNjRfbjsKKyAgICAgICAgIHN3aXRjaChpJjMp CitAQCAtNzcyLDI3ICs3NzIsMjcgQEAgZ2xvYnVzX2xfZ2ZzX2Jhc2U2NF9kZWNvZGUoCisgICAg IHN3aXRjaChpJjMpCisgICAgIHsKKyAgICAgICAgIGNhc2UgMToKKy0JICAgIGdvdG8gZXJyOwor LSAKKysgICAgICAgICAgICBnb3RvIGVycjsKKysKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAg ICAgIGlmKEQmMTUpCisgICAgICAgICAgICAgeworLQkgICAgICAgIGdvdG8gZXJyOworKyAgICAg ICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgaWYoc3Ry Y21wKChjaGFyICopICZpbmJ1ZltpXSwgIj09IikpCisgICAgICAgICAgICAgeworLQkgICAgICAg IGdvdG8gZXJyOworKyAgICAgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgaWYo RCYzKQorICAgICAgICAgICAgIHsKKy0JICAgICAgICBnb3RvIGVycjsKKysgICAgICAgICAgICAg ICAgZ290byBlcnI7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGlmKHN0cmNtcCgoY2hh ciAqKSAmaW5idWZbaV0sICI9IikpCisgICAgICAgICAgICAgeworLQkgICAgICAgIGdvdG8gZXJy OworKyAgICAgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgYnJlYWs7CisgCitAQCAtODE0LDcgKzgxNCw3IEBAIGNoYXIgKgorIGdsb2J1c19sX2dmc19k ZWZhdWx0aG9tZSgpCisgeworICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBob21lX2RpcjsKKy0jaWZkZWYgV0lOMzIgICAKKysjaWZkZWYgV0lOMzIKKyAgICAgY2hhciAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyOworIAorICAgICBpZihnZXRlbnYoIkhP TUVEUklWRSIpICYmIGdldGVudigiSE9NRVBBVEgiKSkKK0BAIC04NTEsNyArODUxLDcgQEAgZ2xv YnVzX2xfZ2ZzX2RlZmF1bHRob21lKCkKKyAgKiBmb3IgZGlzYWJsZWQgYWNjb3VudHMuICBSZXR1 cm5zIGFuIGVycm9yIGdsb2J1c19yZXN1bHRfdCBvdGhlcndpc2UuCisgICogQXNzdW1lcyBjYWxs ZXIgaGFzIGNoZWNrZWQgdmFsdWUgb2YgcHcgKGkuZS4gcHcgaXMgbm90IE5VTEwpLgorICAqLwor LSAKKysKKyBzdGF0aWMKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfbF9nZnNfdmFsaWRhdGVf cHdlbnQoCitAQCAtODc2LDcgKzg3Niw3IEBAIGdsb2J1c19sX2dmc192YWxpZGF0ZV9wd2VudCgK KyAgICAgICAgICAgICAoInNoZWxsIGlzIG5vdCBhIHJlZ3VsYXIgZmlsZTogJXMiLCBwdy0+cHdf c2hlbGwpKTsKKyAgICAgICAgIGdvdG8gZXJyOworICAgICB9CistICAgIAorKworICAgICAvKiBz aGVsbCBleGVjdXRhYmxlPyAqLworICAgICBpZigoc3RhdGJ1Zi5zdF9tb2RlICYgKFNfSVhVU1Ig fCBTX0lYR1JQIHwgU19JWE9USCkpID09IDApCisgICAgIHsKK0BAIC04ODcsNyArODg3LDcgQEAg Z2xvYnVzX2xfZ2ZzX3ZhbGlkYXRlX3B3ZW50KAorIAorICAgICBHbG9idXNHRlNEZWJ1Z0V4aXQo KTsKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworLSAgICAKKysKKyBlcnI6CisgICAgIEds b2J1c0dGU0RlYnVnRXhpdFdpdGhFcnJvcigpOworICAgICByZXR1cm4gcmVzdWx0OworQEAgLTk4 Nyw5ICs5ODcsOSBAQCBnbG9idXNfbF9nZnNfZGF0YV93YXRjaGRvZ19jaGVjaygKKyAgICAgdm9p ZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnKQorIHsKKyAgICAgZ2xvYnVzX2xf Z2ZzX2RhdGFfc2Vzc2lvbl90ICogICAgICAgc2Vzc2lvbl9oYW5kbGU7CistICAgIAorKworICAg ICBzZXNzaW9uX2hhbmRsZSA9IChnbG9idXNfbF9nZnNfZGF0YV9zZXNzaW9uX3QgKikgYXJnOwor LSAgICAKKysKKyAgICAgaWYoIXNlc3Npb25faGFuZGxlKQorICAgICB7CisgICAgICAgICBnbG9i dXNfZ2ZzX2xvZ19tZXNzYWdlKEdMT0JVU19HRlNfTE9HX0VSUiwKK0BAIC05OTgsNyArOTk4LDcg QEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfd2F0Y2hkb2dfY2hlY2soCisgICAgIH0KKyAgICAgZWxzZSBp ZihzZXNzaW9uX2hhbmRsZS0+d2F0Y2ggJiYgc2Vzc2lvbl9oYW5kbGUtPndhdGNoX2Fib3J0ZWQp CisgICAgIHsKKy0gICAgICAgIGlmKHRpbWUoTlVMTCkgPiAKKysgICAgICAgIGlmKHRpbWUoTlVM TCkgPgorICAgICAgICAgICAgIHNlc3Npb25faGFuZGxlLT5sYXN0X2FjdGl2ZSArIGdsb2J1c19s X2dmc193YXRjaGRvZ19saW1pdCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBjaGFyICogbXNn ID0gZ2xvYnVzX2NvbW1vbl9jcmVhdGVfc3RyaW5nKAorQEAgLTEwMzIsNyArMTAzMiw3IEBAIGds b2J1c19sX2dmc19kYXRhX3Jlc2V0X3dhdGNoZG9nKAorICAgICAgICAgc2Vzc2lvbl9oYW5kbGUt PndhdGNoX29wID0gb3BlcmF0aW9uOworICAgICAgICAgc2Vzc2lvbl9oYW5kbGUtPndhdGNoX3Vw ZGF0ZXMgPSAwOworICAgICAgICAgc2Vzc2lvbl9oYW5kbGUtPndhdGNoX2Fib3J0ZWQgPSBHTE9C VVNfRkFMU0U7CistICAgICAgICAKKysKKyAgICAgICAgIGlmKHNlc3Npb25faGFuZGxlLT53YXRj aCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpZihzZXNzaW9uX2hhbmRsZS0+d2F0Y2hfaGFu ZGxlID09IDApCitAQCAtMTE2OSw3ICsxMTY5LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfcG9zdF90 cmFuc2Zlcl9ldmVudF9jYigKKyAgICAgfQorIAorICAgICByZXR1cm4gcmVtb3RlX2RhdGFfYXJn OworLX0gICAgCisrfQorIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19pX2dmc19kYXRhX3Zp cnR1YWxpemVfcGF0aCgKK0BAIC0xMTgwLDI4ICsxMTgwLDI4IEBAIGdsb2J1c19pX2dmc19kYXRh X3ZpcnR1YWxpemVfcGF0aCgKKyAgICAgZ2xvYnVzX2xfZ2ZzX2RhdGFfc2Vzc2lvbl90ICogICAg ICAgc2Vzc2lvbl9oYW5kbGU7CisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRtcF9wdHI7CisgICAgIHNlc3Npb25faGFuZGxlID0gKGdsb2J1c19sX2dmc19kYXRhX3Nl c3Npb25fdCAqKSBzZXNzaW9uX2FyZzsKKy0gICAgCisrCisgICAgIGlmKCFzZXNzaW9uX2hhbmRs ZS0+Y2hyb290X3BhdGgpCisgICAgIHsKKyAgICAgICAgICpyZXRfc3RyaW5nID0gTlVMTDsKKyAg ICAgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAgICAgfQorLSAgICAKKysKKyAgICAgdG1w X3B0ciA9IHN0cnN0cihpbl9zdHJpbmcsIHNlc3Npb25faGFuZGxlLT5jaHJvb3RfcGF0aCk7Cist ICAgIAorKworICAgICBpZighdG1wX3B0cikKKyAgICAgeworICAgICAgICAgKnJldF9zdHJpbmcg PSBOVUxMOworICAgICAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworICAgICB9CistICAgIAor KworICAgICAqcmV0X3N0cmluZyA9IGdsb2J1c19tYWxsb2MoCisgICAgICAgICBzdHJsZW4oaW5f c3RyaW5nKSArIHN0cmxlbihzZXNzaW9uX2hhbmRsZS0+Y2hyb290X3BhdGgpKTsKKy0gICAgICAg IAorKworICAgICBzdHJuY3B5KCpyZXRfc3RyaW5nLCBpbl9zdHJpbmcsIHRtcF9wdHIgLSBpbl9z dHJpbmcpOworLSAgICBzdHJjcHkoKnJldF9zdHJpbmcgKyAodG1wX3B0ciAtIGluX3N0cmluZyks IAorKyAgICBzdHJjcHkoKnJldF9zdHJpbmcgKyAodG1wX3B0ciAtIGluX3N0cmluZyksCisgICAg ICAgICB0bXBfcHRyICsgc3RybGVuKChzZXNzaW9uX2hhbmRsZS0+Y2hyb290X3BhdGgpKSk7Cist ICAgIAorKworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgfQorIAorQEAgLTEzMzEsNyAr MTMzMSw3IEBAIGdsb2J1c19pX2dmc19nZXRfZnVsbF9wYXRoKAorICAgICAgICAgcmVzdWx0ID0g R2xvYnVzR0ZTRXJyb3JHZW5lcmljKCJpbnZhbGlkIHBhdGhuYW1lIik7CisgICAgICAgICBnb3Rv IGRvbmU7CisgICAgIH0KKy0gICAgCisrCisgI2lmZGVmIFdJTjMyCisgI2RlZmluZSBXSU5fQ0hB UlNfTk9UX0FMTE9XRUQgIjoqP1wiPD58IgorICAgICB0bXBfcGF0aCA9IGluX3BhdGg7CitAQCAt MTM0OCwxMCArMTM0OCwxMCBAQCBnbG9idXNfaV9nZnNfZ2V0X2Z1bGxfcGF0aCgKKyAgICAgICAg IHJlc3VsdCA9IEdsb2J1c0dGU0Vycm9yR2VuZXJpYygKKyAgICAgICAgICAgICAiQSBmaWxlbmFt ZSBjYW5ub3QgY29udGFpbiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiAiCisgICAg ICAgICAgICAgIlxcIC8gOiAqID8gXCIgPCA+IHwiKTsKKy0gICAgICAgICAgICBnb3RvIGRvbmU7 ICAKKy0gICAgfSAgICAgICAgICAKKysgICAgICAgICAgICBnb3RvIGRvbmU7CisrICAgIH0KKyAj ZW5kaWYKKy0gCisrCisgICAgIGlmKCppbl9wYXRoID09ICcvJykKKyAgICAgeworICAgICAgICAg c3RybmNweShwYXRoLCBpbl9wYXRoLCBzaXplb2YocGF0aCkpOworQEAgLTEzNjIsNyArMTM2Miw3 IEBAIGdsb2J1c19pX2dmc19nZXRfZnVsbF9wYXRoKAorICAgICAgICAgeworICAgICAgICAgICAg IHJlc3VsdCA9IEdsb2J1c0dGU0Vycm9yR2VuZXJpYygKKyAgICAgICAgICAgICAgICAgIk5vIGhv bWUgZGlyZWN0b3J5LCBjYW5ub3QgZXhwYW5kIH4iKTsKKy0gICAgICAgICAgICBnb3RvIGRvbmU7 ICAgICAgICAgICAgCisrICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgfQorICAgICAg ICAgaW5fcGF0aCsrOworICAgICAgICAgaWYoKmluX3BhdGggPT0gJy8nKQorQEAgLTE0MDMsMTEg KzE0MDMsMTEgQEAgZ2xvYnVzX2lfZ2ZzX2dldF9mdWxsX3BhdGgoCisgICAgICAgICAgICAgICAg IC8qIFhYWCBleHBhbmQgb3RoZXIgdXNlcm5hbWVzIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAg cmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JHZW5lcmljKAorICAgICAgICAgICAgICAgICAgICAgIkNh bm5vdCBleHBhbmQgfiIpOworLSAgICAgICAgICAgICAgICBnb3RvIGRvbmU7ICAKKysgICAgICAg ICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAg ICAgCisrCisgICAgICAgICAgICAgY3dkID0gZ2xvYnVzX2xpYmNfc3RyZHVwKHJlc19wd2QtPnB3 X2Rpcik7CistICAgICAgICB9IAorKyAgICAgICAgfQorICAgICAgICAgY3dkX2xlbiA9IHN0cmxl bihjd2QpOworICAgICAgICAgaWYoY3dkX2xlbiA+IDEgJiYgY3dkW2N3ZF9sZW4gLSAxXSA9PSAn LycpCisgICAgICAgICB7CitAQCAtMTQ0MSw3ICsxNDQxLDcgQEAgZ2xvYnVzX2lfZ2ZzX2dldF9m dWxsX3BhdGgoCisgICAgIH0KKyAKKyAgICAgRHJpdmVMZXR0ZXJUb1dpbihub3JtX3BhdGgpOwor LSAgICAKKysKKyAgICAgcmVzdWx0ID0gZ2xvYnVzX2lfZ2ZzX2RhdGFfY2hlY2tfcGF0aCgKKyAg ICAgICAgIHNlc3Npb25fYXJnLCBub3JtX3BhdGgsIHJldF9wYXRoLCBhY2Nlc3NfdHlwZSwgMSk7 CisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKK0BAIC0xNDk1LDcgKzE0OTUsNyBA QCBnbG9idXNfaV9nZnNfZGF0YV9jaGVja19wYXRoKAorICAgICBnbG9idXNfbGlzdF90ICogICAg ICAgICAgICAgICAgICAgICBycF9saXN0OworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19pX2dm c19kYXRhX2NoZWNrX3BhdGgpOworICAgICBHbG9idXNHRlNEZWJ1Z0VudGVyKCk7CistICAgIAor KworICAgICBzZXNzaW9uX2hhbmRsZSA9IChnbG9idXNfbF9nZnNfZGF0YV9zZXNzaW9uX3QgKikg c2Vzc2lvbl9hcmc7CisgCisgICAgIGlmKGdsb2J1c19saXN0X2VtcHR5KCpzZXNzaW9uX2hhbmRs ZS0+YWN0aXZlX3JwX2xpc3QpICYmCitAQCAtMTUwMyw3ICsxNTAzLDcgQEAgZ2xvYnVzX2lfZ2Zz X2RhdGFfY2hlY2tfcGF0aCgKKyAgICAgeworICAgICAgICAgYWxsb3dlZCA9IEdMT0JVU19UUlVF OworICAgICB9CistICAgIAorKworICAgICBpZihpc192aXJ0dWFsICYmIHNlc3Npb25faGFuZGxl LT5jaHJvb3RfcGF0aCkKKyAgICAgeworICAgICAgICAgaWYoaW5fcGF0aFswXSA9PSAnLycgJiYg aW5fcGF0aFsxXSA9PSAnXDAnKQorQEAgLTE1MjAsMTQgKzE1MjAsMTQgQEAgZ2xvYnVzX2lfZ2Zz X2RhdGFfY2hlY2tfcGF0aCgKKyAgICAgeworICAgICAgICAgc3RhcnRfcGF0aCA9IGluX3BhdGg7 CisgICAgIH0KKy0gICAgICAgIAorKworICAgICBpZighYWxsb3dlZCkKKyAgICAgeworICAgICAg ICAgaWYoc2Vzc2lvbl9oYW5kbGUtPmRzaS0+ZGVzY3JpcHRvciAmIEdMT0JVU19HRlNfRFNJX0RF U0NSSVBUT1JfSEFTX1JFQUxQQVRIICYmCistICAgICAgICAgICAgIWdsb2J1c19pX2dmc19jb25m aWdfYm9vbCgicnBfZm9sbG93X3N5bWxpbmtzIikgJiYgCistICAgICAgICAgICAgc3RyY21wKHN0 YXJ0X3BhdGgsICIvIikgIT0gMCAmJiAKKysgICAgICAgICAgICAhZ2xvYnVzX2lfZ2ZzX2NvbmZp Z19ib29sKCJycF9mb2xsb3dfc3ltbGlua3MiKSAmJgorKyAgICAgICAgICAgIHN0cmNtcChzdGFy dF9wYXRoLCAiLyIpICE9IDAgJiYKKyAgICAgICAgICAgICBzZXNzaW9uX2hhbmRsZS0+ZHNpLT5y ZWFscGF0aF9mdW5jICE9IE5VTEwpCistICAgICAgICB7ICAgICAgICAgICAgCisrICAgICAgICB7 CisgICAgICAgICAgICAgcmVzdWx0ID0gc2Vzc2lvbl9oYW5kbGUtPmRzaS0+cmVhbHBhdGhfZnVu YygKKyAgICAgICAgICAgICAgICAgc3RhcnRfcGF0aCwgJnRydWVfcGF0aCwgc2Vzc2lvbl9oYW5k bGUtPnNlc3Npb25fYXJnKTsKKyAgICAgICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NF U1MpCitAQCAtMTUzNSwyMCArMTUzNSwyMCBAQCBnbG9idXNfaV9nZnNfZGF0YV9jaGVja19wYXRo KAorICAgICAgICAgICAgICAgICBjaGFyICogICAgICAgICAgICAgICAgICB0cnVlX2Jhc2U7Cisg ICAgICAgICAgICAgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgIGVuZF9zbGFzaCA9ICIiOwor ICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBwYXRoX2xlbjsKKy0gICAg ICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgIHN0cm5jcHkocGF0aCwgc3RhcnRfcGF0 aCwgc2l6ZW9mKHBhdGgpKTsKKyAgICAgICAgICAgICAgICAgcGF0aFtNQVhQQVRITEVOIC0gMV0g PSAnXDAnOworLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgcGF0aF9sZW4g PSBzdHJsZW4ocGF0aCk7CisgICAgICAgICAgICAgICAgIGlmKHBhdGhbcGF0aF9sZW4gLSAxXSA9 PSAnLycpCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIHBhdGhbLS1w YXRoX2xlbl0gPSAnXDAnOworICAgICAgICAgICAgICAgICAgICAgZW5kX3NsYXNoID0gIi8iOwor ICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAg ICB0bXBfcHRyID0gc3RycmNocihwYXRoLCAnLycpOworICAgICAgICAgICAgICAgICAqKHRtcF9w dHIrKykgPSAnXDAnOworLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgaWYo KnBhdGggPT0gJ1wwJykKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg cmVzdWx0ID0gR0xPQlVTX0ZBSUxVUkU7CitAQCAtMTU1OCw3ICsxNTU4LDcgQEAgZ2xvYnVzX2lf Z2ZzX2RhdGFfY2hlY2tfcGF0aCgKKyAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlc3Np b25faGFuZGxlLT5kc2ktPnJlYWxwYXRoX2Z1bmMoCisgICAgICAgICAgICAgICAgICAgICAgICAg cGF0aCwgJnRydWVfYmFzZSwgc2Vzc2lvbl9oYW5kbGUtPnNlc3Npb25fYXJnKTsKKyAgICAgICAg ICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgaWYocmVz dWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICAgICByZXN1bHQgPSBHTE9CVVNfU1VDQ0VTUzsKK0BAIC0xNTg4LDcgKzE1ODgsNyBAQCBn bG9idXNfaV9nZnNfZGF0YV9jaGVja19wYXRoKAorICAgICAgICAgICAgICpyZXRfcGF0aCA9IE5V TEw7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgICAgIAorKworICAgICBpZih0cnVlX3BhdGgp CisgICAgIHsKKyAKK0BAIC0xNjA4LDI2ICsxNjA4LDI2IEBAIGdsb2J1c19pX2dmc19kYXRhX2No ZWNrX3BhdGgoCisgICAgICAgICAgICAgcnBfbGlzdCA9IHNlc3Npb25faGFuZGxlLT5ycF9saXN0 OworICAgICAgICAgfQorIAorLSAgICAgICAgCisrCisgICAgICAgICB3aGlsZSghZ2xvYnVzX2xp c3RfZW1wdHkocnBfbGlzdCkpCisgICAgICAgICB7CisgICAgICAgICAgICAgY2hlY2tfcGF0aCA9 IHRydWVfcGF0aDsKKyAgICAgICAgICAgICBkbworICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgaW5fcGF0aF9sZW4gPSBzdHJsZW4oY2hlY2tfcGF0aCk7CistICAgICAgICAgICAgICAg IAorKworICAgICAgICAgICAgICAgICBmb3IobGlzdCA9IHJwX2xpc3Q7CisgICAgICAgICAgICAg ICAgICAgICAhZ2xvYnVzX2xpc3RfZW1wdHkobGlzdCkgJiYgIWFsbG93ZWQgJiYgIWRpc2FsbG93 ZWQ7CisgICAgICAgICAgICAgICAgICAgICBsaXN0ID0gZ2xvYnVzX2xpc3RfcmVzdChsaXN0KSkK Ky0gICAgICAgICAgICAgICAgeyAgICAgICAgICAgIAorKyAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgICBhbGlhc19lbnQgPSBnbG9idXNfbGlzdF9maXJzdChsaXN0KTsKKy0g ICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAgICAgLyogZGlzYWxsb3cg aWYgdGhpcyBhIGRpciBjaGVjayBhbmQgYW55IGNvbnRlbnRzIGFyZSBkZW5pZWQgKi8KKyAgICAg ICAgICAgICAgICAgICAgIGlmKGFjY2Vzc190eXBlICYgR0ZTX0xfRElSICYmIGFsaWFzX2VudC0+ YWNjZXNzICYgR0ZTX0xfTk9ORSkKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICBpZihzdHJuY21wKGNoZWNrX3BhdGgsIGFsaWFzX2VudC0+YWxpYXMsIGlu X3BhdGhfbGVuKSA9PSAwICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGVja19w YXRoW2luX3BhdGhfbGVuIC0gMV0gPT0gJy8nIHx8CistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhbGlhc19lbnQtPmFsaWFzW2luX3BhdGhfbGVuXSA9PSAnXDAnIHx8IAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXNfZW50LT5hbGlhc1tpbl9wYXRoX2xlbl0g PT0gJ1wwJyB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXNfZW50LT5h bGlhc1tpbl9wYXRoX2xlbl0gPT0gJy8nKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FsbG93ZWQgPSBHTE9CVVNfVFJVRTsKK0BA IC0xNjM5LDcgKzE2MzksNyBAQCBnbG9idXNfaV9nZnNfZGF0YV9jaGVja19wYXRoKAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAgICAgICAg ICAgICAgIC8qIGNoZWNrIGlmIHdlIGhhdmUgYW4gZXhhY3QgbWF0Y2ggKi8KKyAgICAgICAgICAg ICAgICAgICAgIGlmKHN0cmNzcG4oYWxpYXNfZW50LT5hbGlhcywgIlsqPyIpICE9IGFsaWFzX2Vu dC0+YWxpYXNfbGVuKQorICAgICAgICAgICAgICAgICAgICAgeworQEAgLTE2NTgsNyArMTY1OCw3 IEBAIGdsb2J1c19pX2dmc19kYXRhX2NoZWNrX3BhdGgoCisgICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKHN0cm5jbXAoY2hlY2tfcGF0aCwgYWxpYXNf ZW50LT5hbGlhcywgYWxpYXNfZW50LT5hbGlhc19sZW4pID09IDAgJiYKKyAgICAgICAgICAgICAg ICAgICAgICAgICAoYWxpYXNfZW50LT5hbGlhc1thbGlhc19lbnQtPmFsaWFzX2xlbiAtIDFdID09 ICcvJyB8fAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19wYXRoW2FsaWFzX2Vu dC0+YWxpYXNfbGVuXSA9PSAnXDAnIHx8IAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj aGVja19wYXRoW2FsaWFzX2VudC0+YWxpYXNfbGVuXSA9PSAnXDAnIHx8CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNoZWNrX3BhdGhbYWxpYXNfZW50LT5hbGlhc19sZW5dID09ICcvJykp CisgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYWxp YXNfZW50LT5hY2Nlc3MgJiBhY2Nlc3NfdHlwZSkKK0BAIC0xNjcwLDEzICsxNjcwLDEzIEBAIGds b2J1c19pX2dmc19kYXRhX2NoZWNrX3BhdGgoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRpc2FsbG93ZWQgPSBHTE9CVVNfVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAg ICAgICAgICAgICAgIC8qIGNoZWNrIGlmIHdlIGFyZSBhIHBhcmVudCBvZiBhbiBleGFjdCBtYXRj aCAqLworICAgICAgICAgICAgICAgICAgICAgaWYoIWFsbG93ZWQgJiYgIWRpc2FsbG93ZWQgJiYg YWNjZXNzX3R5cGUgJiBHRlNfTF9MSVNUKQorICAgICAgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICAgICAgIGlmKHN0cm5jbXAoY2hlY2tfcGF0aCwgYWxpYXNfZW50LT5hbGlh cywgaW5fcGF0aF9sZW4pID09IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNo ZWNrX3BhdGhbaW5fcGF0aF9sZW4gLSAxXSA9PSAnLycgfHwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFsaWFzX2VudC0+YWxpYXNbaW5fcGF0aF9sZW5dID09ICdcMCcgfHwgCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlhc19lbnQtPmFsaWFzW2luX3BhdGhf bGVuXSA9PSAnXDAnIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlhc19l bnQtPmFsaWFzW2luX3BhdGhfbGVuXSA9PSAnLycpKQorICAgICAgICAgICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoYWxpYXNfZW50LT5hY2Nlc3MgJiBh Y2Nlc3NfdHlwZSkKK0BAIC0xNzA4LDE3ICsxNzA4LDE3IEBAIGdsb2J1c19pX2dmc19kYXRhX2No ZWNrX3BhdGgoCisgICAgICAgICAgICAgICAgICAgICBjaGVja19hZ2FpbiA9IEdMT0JVU19GQUxT RTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0gd2hpbGUoY2hlY2tfYWdhaW4p OworLSAgICAKKysKKyAgICAgICAgICAgICBpZighYWxsb3dlZCkKKyAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgIHJlc3VsdCA9IEdsb2J1c0dGU0Vycm9yR2VuZXJpYygKKyAgICAgICAg ICAgICAgICAgICAgICJQYXRoIG5vdCBhbGxvd2VkLiIpOworLSAgICAgICAgICAgICAgICAgICAg CisrCisgICAgICAgICAgICAgICAgIHJwX2xpc3QgPSBOVUxMOworICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBpZihycF9s aXN0ID09ICpzZXNzaW9uX2hhbmRsZS0+YWN0aXZlX3JwX2xpc3QgJiYgCisrICAgICAgICAgICAg ICAgIGlmKHJwX2xpc3QgPT0gKnNlc3Npb25faGFuZGxlLT5hY3RpdmVfcnBfbGlzdCAmJgorICAg ICAgICAgICAgICAgICAgICAgIWdsb2J1c19saXN0X2VtcHR5KHNlc3Npb25faGFuZGxlLT5ycF9s aXN0KSkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgcnBfbGlzdCA9 IHNlc3Npb25faGFuZGxlLT5ycF9saXN0OworQEAgLTE3MjgsMTUgKzE3MjgsMTUgQEAgZ2xvYnVz X2lfZ2ZzX2RhdGFfY2hlY2tfcGF0aCgKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgICAgcnBfbGlzdCA9IE5VTEw7CisgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAg ICAgICAgCisrCisgICAgICAgICAgICAgICAgIGlmKCFycF9saXN0ICYmIHJldF9wYXRoKQorICAg ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBpZihhbGlhc19lbnQgJiYgYWxp YXNfZW50LT5yZWFscGF0aCkKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJuY3B5KHBhdGgsIGFsaWFzX2VudC0+cmVhbHBhdGgsIGFsaWFzX2VudC0+ cmVhbHBhdGhfbGVuKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHkocGF0aCArIGFs aWFzX2VudC0+cmVhbHBhdGhfbGVuLCAKKysgICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHko cGF0aCArIGFsaWFzX2VudC0+cmVhbHBhdGhfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0cnVlX3BhdGggKyBhbGlhc19lbnQtPmFsaWFzX2xlbik7CistICAgICAgICAgICAgCisr CisgICAgICAgICAgICAgICAgICAgICAgICAgKnJldF9wYXRoID0gZ2xvYnVzX2xpYmNfc3RyZHVw KHBhdGgpOworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgZWxz ZSBpZihzZXNzaW9uX2hhbmRsZS0+Y2hyb290X3BhdGgpCitAQCAtMTc1MCwxMSArMTc1MCwxMSBA QCBnbG9idXNfaV9nZnNfZGF0YV9jaGVja19wYXRoKAorICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgfQorICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBnbG9idXNfZnJl ZSh0cnVlX3BhdGgpOworICAgICB9CisgCistICAgIAorKworICAgICBpZihpc192aXJ0dWFsICYm IHNlc3Npb25faGFuZGxlLT5jaHJvb3RfcGF0aCkKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2Zy ZWUoc3RhcnRfcGF0aCk7CitAQCAtMTk3OSw3ICsxOTc5LDcgQEAgZ2xvYnVzX2xfZ2ZzX2ZyZWVf c2Vzc2lvbl9oYW5kbGUoCisgICAgICAgICB9CisgICAgICAgICBnbG9idXNfZnJlZShzZXNzaW9u X2hhbmRsZS0+c2Vzc2lvbl9pbmZvX2NvcHkpOworICAgICB9CistICAgIAorKworICAgICBpZihz ZXNzaW9uX2hhbmRsZS0+Y3VzdG9tX2NtZF90YWJsZSkKKyAgICAgeworICAgICAgICAgZ2xvYnVz X2xpc3RfdCAqICAgICAgICAgICAgICAgICBsaXN0OworQEAgLTIwMDQsNyArMjAwNCw3IEBAIGds b2J1c19sX2dmc19mcmVlX3Nlc3Npb25faGFuZGxlKAorICAgICAgICAgfQorICAgICAgICAgZ2xv YnVzX2hhc2h0YWJsZV9kZXN0cm95KCZzZXNzaW9uX2hhbmRsZS0+Y3VzdG9tX2NtZF90YWJsZSk7 CisgICAgIH0KKy0gICAgICAgIAorKworICAgICBpZihzZXNzaW9uX2hhbmRsZS0+aHR0cHNfc3Rh Y2spCisgICAgIHsKKyAgICAgICAgIGdsb2J1c194aW9fc3RhY2tfZGVzdHJveShzZXNzaW9uX2hh bmRsZS0+aHR0cHNfc3RhY2spOworQEAgLTIxOTgsMTMgKzIxOTgsMTMgQEAgZ2xvYnVzX2lfZ2Zz X2t2X2dldHZhbCgKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5 bGVuOworICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBfdmFsID0g TlVMTDsKKyAgICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IEdM T0JVU19GQUxTRTsKKy0gICAgCisrCisgICAgIGtleWxlbiA9IHN0cmxlbihrZXkpOworICAgICBr ZXlzdGFydCA9IGt2c3RyaW5nOworICAgICBrZXllbmQgPSBzdHJjaHIoa3ZzdHJpbmcsICc9Jyk7 CisgICAgIHdoaWxlKGtleWVuZCAmJiBrZXlzdGFydCAmJiAhZG9uZSkKKyAgICAgeworLSAgICAg ICAgaWYoKGtleWxlbiA9PSBrZXllbmQgLSBrZXlzdGFydCkgJiYgCisrICAgICAgICBpZigoa2V5 bGVuID09IGtleWVuZCAtIGtleXN0YXJ0KSAmJgorICAgICAgICAgICAgIHN0cm5jYXNlY21wKGtl eSwga2V5c3RhcnQsIGtleWVuZCAtIGtleXN0YXJ0KSA9PSAwKQorICAgICAgICAgeworICAgICAg ICAgICAgIGRvbmUgPSBHTE9CVVNfVFJVRTsKK0BAIC0yMjMwLDcgKzIyMzAsNyBAQCBnbG9idXNf aV9nZnNfa3ZfZ2V0dmFsKAorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgc3RybmNw eSh0bXBfdmFsLCB2YWxzdGFydCwgdmFsZW5kIC0gdmFsc3RhcnQpOworICAgICAgICAgICAgICAg ICB0bXBfdmFsW3ZhbGVuZCAtIHZhbHN0YXJ0XSA9ICdcMCc7CistICAgICAgICAgICAgICAgIAor KworICAgICAgICAgICAgICAgICBpZih1cmxkZWNvZGUpCisgICAgICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgICAgIGdsb2J1c191cmxfc3RyaW5nX2hleF9kZWNvZGUodG1wX3ZhbCk7 CitAQCAtMjIzOCw3ICsyMjM4LDcgQEAgZ2xvYnVzX2lfZ2ZzX2t2X2dldHZhbCgKKyAgICAgICAg ICAgICB9CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCisrCisgICAgIHJldHVybiB0bXBfdmFs OworIH0KKyAKK0BAIC0yMjU4LDcgKzIyNTgsNyBAQCBnbG9idXNfaV9nZnNfa3ZfcmVwbGFjZXZh bCgKKyAgICAgY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZTsKKyAgICAg Y2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jX3ZhbDsKKyAgICAgZ2xvYnVz X2Jvb2xfdCAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IEdMT0JVU19GQUxTRTsKKy0gICAg ICAgIAorKworICAgICBpZihlbmNvZGUpCisgICAgIHsKKyAgICAgICAgIGVuY192YWwgPSBnbG9i dXNfdXJsX3N0cmluZ19oZXhfZW5jb2RlKG5ld192YWwsICI7Iik7CitAQCAtMjI3MSwxMyArMjI3 MSwxMyBAQCBnbG9idXNfaV9nZnNfa3ZfcmVwbGFjZXZhbCgKKyAgICAgICAgIH0KKyAgICAgICAg IGVuY192YWwgPSBuZXdfdmFsOworICAgICB9CistICAgICAgICAgICAgCisrCisgICAgIGtleWxl biA9IHN0cmxlbihrZXkpOworICAgICBrZXlzdGFydCA9IGt2c3RyaW5nOworICAgICBrZXllbmQg PSBzdHJjaHIoa2V5c3RhcnQsICc9Jyk7CisgICAgIHdoaWxlKGtleWVuZCAmJiBrZXlzdGFydCAm JiAhZG9uZSkKKyAgICAgeworLSAgICAgICAgaWYoKGtleWxlbiA9PSBrZXllbmQgLSBrZXlzdGFy dCkgJiYgCisrICAgICAgICBpZigoa2V5bGVuID09IGtleWVuZCAtIGtleXN0YXJ0KSAmJgorICAg ICAgICAgICAgIHN0cm5jYXNlY21wKGtleSwga2V5c3RhcnQsIGtleWVuZCAtIGtleXN0YXJ0KSA9 PSAwKQorICAgICAgICAgeworICAgICAgICAgICAgIGRvbmUgPSBHTE9CVVNfVFJVRTsKK0BAIC0y MzA1LDcgKzIzMDUsNyBAQCBnbG9idXNfaV9nZnNfa3ZfcmVwbGFjZXZhbCgKKyAgICAgICAgICAg ICAqdmFsc3RhcnQgPSBzYXZlOworICAgICAgICAgfQorICAgICB9CistICAgIAorKworICAgICBp ZihlbmNvZGUpCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19mcmVlKGVuY192YWwpOworQEAgLTI0 MjMsMTYgKzI0MjMsMTYgQEAgZ2xvYnVzX2xfZ2ZzX2F1dGhvcml6ZV9jYigKKyAgICAgICAgIHsK KyAgICAgICAgICAgICBnbG9idXNfZ2ZzX2ZpbmlzaGVkX2luZm9fdCAgICAgIGZpbmlzaGVkX2lu Zm87CisgICAgICAgICAgICAgZ2xvYnVzX2xfZ2ZzX2RhdGFfb3BlcmF0aW9uX3QgKiBvcDsKKy0g ICAgCisrCisgICAgICAgICAgICAgb3AgPSAoZ2xvYnVzX2xfZ2ZzX2RhdGFfb3BlcmF0aW9uX3Qg KikgdXNlcl9hcmc7CisgICAgICAgICAgICAgbWVtc2V0KCZmaW5pc2hlZF9pbmZvLCAnXDAnLCBz aXplb2YoZ2xvYnVzX2dmc19maW5pc2hlZF9pbmZvX3QpKTsKKy0gICAgCisrCisgICAgICAgICAg ICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JXcmFwRmFpbGVkKAorICAgICAgICAgICAgICAgICAi YXV0aG9yaXphdGlvbiIsIHJlc3VsdCk7CisgICAgICAgICAgICAgZmluaXNoZWRfaW5mby5yZXN1 bHQgPSByZXN1bHQ7CisgICAgICAgICAgICAgZmluaXNoZWRfaW5mby50eXBlID0gb3AtPnR5cGU7 CisgICAgICAgICAgICAgZmluaXNoZWRfaW5mby5pZCA9IG9wLT5pZDsKKy0gICAgCisrCisgICAg ICAgICAgICAgaWYob3AtPmNhbGxiYWNrID09IE5VTEwpCisgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICBnbG9idXNfZ2ZzX2lwY19yZXBseV9maW5pc2hlZCgKK0BAIC0yNDQ0LDcgKzI0 NDQsNyBAQCBnbG9idXNfbF9nZnNfYXV0aG9yaXplX2NiKAorICAgICAgICAgICAgICAgICAgICAg JmZpbmlzaGVkX2luZm8sCisgICAgICAgICAgICAgICAgICAgICBvcC0+dXNlcl9hcmcpOworICAg ICAgICAgICAgIH0KKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBnbG9idXNfbXV0ZXhf bG9jaygmb3AtPnNlc3Npb25faGFuZGxlLT5tdXRleCk7CisgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICBpZihvcC0+ZGF0YV9oYW5kbGUgIT0gTlVMTCkKK0BAIC0yNDU1LDE5ICsyNDU1 LDE5IEBAIGdsb2J1c19sX2dmc19hdXRob3JpemVfY2IoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9wLT5kYXRhX2hhbmRsZS0+c3RhdGUgPQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR0xPQlVTX0xfR0ZTX0RBVEFfSEFORExFX1ZBTElEOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBicmVhazsKKy0gICAgCisrCisgICAgICAgICAgICAgICAgICAgICAgICAg Y2FzZSBHTE9CVVNfTF9HRlNfREFUQV9IQU5ETEVfQ0xPU0lORzoKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CistICAgIAorKworICAgICAgICAgICAgICAgICAgICAgICAgIGNh c2UgR0xPQlVTX0xfR0ZTX0RBVEFfSEFORExFX0NMT1NFRDoKKyAgICAgICAgICAgICAgICAgICAg ICAgICBjYXNlIEdMT0JVU19MX0dGU19EQVRBX0hBTkRMRV9DTE9TSU5HX0FORF9ERVNUUk9ZRUQ6 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCFvcC0+ZGF0YV9oYW5kbGUtPmlzX21p bmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJlbW90ZV9kYXRhX2FyZyA9IAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVtb3RlX2RhdGFfYXJnID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvcC0+ZGF0YV9oYW5kbGUtPnJlbW90ZV9kYXRhX2FyZzsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKy0g ICAgCisrCisgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBHTE9CVVNfTF9HRlNfREFUQV9I QU5ETEVfVEVfUFJFX0NMT1NFRDoKKyAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEdMT0JV U19MX0dGU19EQVRBX0hBTkRMRV9URV9QUkVfQU5EX0RFU1RST1lFRDoKKyAgICAgICAgICAgICAg ICAgICAgICAgICBjYXNlIEdMT0JVU19MX0dGU19EQVRBX0hBTkRMRV9WQUxJRDoKK0BAIC0yNDgw LDkgKzI0ODAsOSBAQCBnbG9idXNfbF9nZnNfYXV0aG9yaXplX2NiKAorICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZvcC0+c2Vzc2lvbl9oYW5kbGUtPm11 dGV4KTsKKyAgICAgICAgICAgICBnbG9idXNfYXNzZXJ0KGRlc3Ryb3lfb3ApOworLSAgICAKKysK KyAgICAgICAgICAgICBnbG9idXNfbF9nZnNfZGF0YV9maXJlX2NiKG9wLCByZW1vdGVfZGF0YV9h cmcsIGRlc3Ryb3lfc2Vzc2lvbik7CistICAgIAorKworICAgICAgICAgICAgIGdsb2J1c19sX2dm c19kYXRhX29wZXJhdGlvbl9kZXN0cm95KG9wKTsKKyAgICAgICAgIH0KKyAgICAgfQorQEAgLTI2 MTgsNyArMjYxOCw3IEBAIGdsb2J1c19pX2dmc19kYXRhX25ld19kc2koCisgICAgIGdsb2J1c19y ZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEdMT0JVU19TVUNDRVNTOworICAg ICBHbG9idXNHRlNOYW1lKGdsb2J1c19pX2dmc19kYXRhX25ld19kc2kpOworICAgICBHbG9idXNH RlNEZWJ1Z0VudGVyKCk7CistICAgIAorKworICAgICBpZihjaGVja19uYW1lKQorICAgICB7Cisg ICAgICAgICBtb2R1bGVfbmFtZSA9IGdsb2J1c19pX2dmc19jb25maWdfZ2V0X21vZHVsZV9uYW1l KGRzaV9uYW1lKTsKK0BAIC0yNjUyLDcgKzI2NTIsNyBAQCBnbG9idXNfaV9nZnNfZGF0YV9uZXdf ZHNpKAorICAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICAgfQorICAgICB9CistICAgIAor KworICAgICAvKiBjaGVjayBhZ2FpbiAqLworICAgICBuZXdfZHNpID0gKGdsb2J1c19nZnNfc3Rv cmFnZV9pZmFjZV90ICopIGdsb2J1c19leHRlbnNpb25fbG9va3VwKAorICAgICAgICAgZHNpX2hh bmRsZSwgR0xPQlVTX0dGU19EU0lfUkVHSVNUUlksICh2b2lkICopIG1vZHVsZV9uYW1lKTsKK0BA IC0yNjY1LDcgKzI2NjUsNyBAQCBnbG9idXNfaV9nZnNfZGF0YV9uZXdfZHNpKAorIAorICAgICAq ZHNpX2lmYWNlID0gbmV3X2RzaTsKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworLSAgICAK KysKKyBlcnI6CisgICAgICpkc2lfaWZhY2UgPSBOVUxMOworICAgICBHbG9idXNHRlNEZWJ1Z0V4 aXQoKTsKK0BAIC0yODEzLDcgKzI4MTMsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9icmFpbl9yZWFk eV9kZWxheV9jYigKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2ZyZWUob3AtPnNlc3Npb25faGFu ZGxlLT5ob21lX2Rpcik7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIG9wLT5zZXNzaW9u X2hhbmRsZS0+aG9tZV9kaXIgPSBzdHJkdXAoIi8iKTsKKy0gICAgICAgIH0gIAorKyAgICAgICAg fQorIAorICAgICAgICAgZmluaXNoZWRfaW5mby5pbmZvLnNlc3Npb24uaG9tZV9kaXIgPSBvcC0+ c2Vzc2lvbl9oYW5kbGUtPmhvbWVfZGlyOworIAorQEAgLTI4MzAsNyArMjgzMCw3IEBAIGdsb2J1 c19sX2dmc19kYXRhX2JyYWluX3JlYWR5X2RlbGF5X2NiKAorICAgICAgICAgICAgICAgICBvcC0+ dXNlcl9hcmcpOworICAgICAgICAgfQorICAgICAgICAgZ2xvYnVzX2xfZ2ZzX2RhdGFfcmVzZXRf d2F0Y2hkb2cob3AtPnNlc3Npb25faGFuZGxlLCBOVUxMKTsKKy0gICAgICAgIAorKworICAgICAg ICAgZ2xvYnVzX211dGV4X2xvY2soJm9wLT5zZXNzaW9uX2hhbmRsZS0+bXV0ZXgpOworICAgICAg ICAgeworICAgICAgICAgICAgIEdGU0RhdGFPcERlYyhvcCwgZGVzdHJveV9vcCwgZGVzdHJveV9z ZXNzaW9uKTsKK0BAIC0yOTQyLDkgKzI5NDIsOSBAQCBnbG9idXNfbF9saWJjX2luaXRncm91cHNf Y2IoCisgeworICAgICBnbG9idXNfbF9saWJjX2luaXRncm91cHNfaW5mb190ICogICBpbmZvOwor ICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYzsKKy0gICAgCisrCisg ICAgIGluZm8gPSAoZ2xvYnVzX2xfbGliY19pbml0Z3JvdXBzX2luZm9fdCAqKSB1c2VyX2FyZzsK Ky0gICAgCisrCisgICAgIGdsb2J1c19tdXRleF9sb2NrKCZpbmZvLT5tdXRleCk7CisgICAgIHsK KyAgICAgICAgIHJjID0gaW5pdGdyb3VwcyhpbmZvLT51c2VybmFtZSwgaW5mby0+Z2lkKTsKK0BA IC0yOTUyLDcgKzI5NTIsNyBAQCBnbG9idXNfbF9saWJjX2luaXRncm91cHNfY2IoCisgICAgICAg ICB7CisgICAgICAgICAgICAgaW5mby0+cmMgPSByYzsKKyAgICAgICAgIH0KKy0gICAgICAgIAor KworICAgICAgICAgaW5mby0+Y291bnQtLTsKKyAgICAgICAgIGlmKGluZm8tPmNvdW50ID09IDAp CisgICAgICAgICB7CitAQCAtMjk3Nyw3ICsyOTc3LDcgQEAgZ2xvYnVzX2xpYmNfaW5pdGdyb3Vw cygKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkczsKKyAg ICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wOworIAorLSAgICB0aHJl YWRzID0gMjsgLyogWFhYIGluY2x1ZGUgZ2xvYnVzX2NhbGxiYWNrX3RocmVhZHMuYyB0byBnZXQg I2RlZmluZT8gKi8gICAgCisrICAgIHRocmVhZHMgPSAyOyAvKiBYWFggaW5jbHVkZSBnbG9idXNf Y2FsbGJhY2tfdGhyZWFkcy5jIHRvIGdldCAjZGVmaW5lPyAqLworICAgICBpZigodG1wID0gZ2xv YnVzX21vZHVsZV9nZXRlbnYoIkdMT0JVU19DQUxMQkFDS19QT0xMSU5HX1RIUkVBRFMiKSkgIT0g TlVMTCkKKyAgICAgeworICAgICAgICAgcmMgPSBhdG9pKHRtcCk7CitAQCAtMjk4Nyw3ICsyOTg3 LDcgQEAgZ2xvYnVzX2xpYmNfaW5pdGdyb3VwcygKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAg ICBpbmZvID0gKGdsb2J1c19sX2xpYmNfaW5pdGdyb3Vwc19pbmZvX3QgKikgCisrICAgIGluZm8g PSAoZ2xvYnVzX2xfbGliY19pbml0Z3JvdXBzX2luZm9fdCAqKQorICAgICAgICAgZ2xvYnVzX21h bGxvYyhzaXplb2YoZ2xvYnVzX2xfbGliY19pbml0Z3JvdXBzX2luZm9fdCkpOworIAorICAgICBn bG9idXNfbXV0ZXhfaW5pdCgmaW5mby0+bXV0ZXgsIE5VTEwpOworQEAgLTMwMDgsMTQgKzMwMDgs MTQgQEAgZ2xvYnVzX2xpYmNfaW5pdGdyb3VwcygKKyAgICAgICAgICAgICAgICAgaW5mbyk7Cisg ICAgICAgICAgICAgaW5mby0+Y291bnQrKzsKKyAgICAgICAgIH0KKy0gICAgCisrCisgICAgICAg ICB3aGlsZShpbmZvLT5jb3VudCA+IDApCisgICAgICAgICB7CisgICAgICAgICAgICAgZ2xvYnVz X2NvbmRfd2FpdCgmaW5mby0+Y29uZCwgJmluZm8tPm11dGV4KTsKKyAgICAgICAgIH0KKyAgICAg fQorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZpbmZvLT5tdXRleCk7CistICAgIAorKworICAg ICB0bXByYyA9IGluZm8tPnJjOworICAgICBnbG9idXNfbXV0ZXhfZGVzdHJveSgmaW5mby0+bXV0 ZXgpOworICAgICBnbG9idXNfY29uZF9kZXN0cm95KCZpbmZvLT5jb25kKTsKK0BAIC0zMDI4LDEz ICszMDI4LDEzIEBAIGdsb2J1c19saWJjX2luaXRncm91cHMoCisgICAgIHsKKyAgICAgICAgIHJj ID0gdG1wcmM7CisgICAgIH0KKy0gICAgCisrCisgICAgIHJldHVybiByYzsKKyB9CisgCisgaW50 CisgZ2xvYnVzX2xpc3RfY21wX2FsaWFzX2VudCgKKy0gICAgdm9pZCAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYSwgCisrICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGEsCisgICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIsCisgICAg IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZykKKyB7CitAQCAtMzA0NSw3 ICszMDQ1LDcgQEAgZ2xvYnVzX2xpc3RfY21wX2FsaWFzX2VudCgKKyAgICAgY2hhciAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYl90bXBbYl9lbnQtPmFsaWFzX2xlbisxXTsKKyAgICAg c2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYV9pOworICAgICBzaXplX3QgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBiX2k7CistICAgIAorKworIAorICAgICBzdHJjcHko YV90bXAsIGFfZW50LT5hbGlhcyA/IGFfZW50LT5hbGlhcyA6ICIiKTsKKyAgICAgc3RyY3B5KGJf dG1wLCBiX2VudC0+YWxpYXMgPyBiX2VudC0+YWxpYXMgOiAiIik7CitAQCAtMzA2MCwxNCArMzA2 MCwxNCBAQCBnbG9idXNfbGlzdF9jbXBfYWxpYXNfZW50KAorICAgICAgICAgICAgIGNhc2UgJyon OgorICAgICAgICAgICAgICAgICBhX3RtcFthX2ldID0gMTsKKyAgICAgICAgICAgICAgICAgYnJl YWs7CistICAgICAgICAgICAgY2FzZSAnPyc6IAorKyAgICAgICAgICAgIGNhc2UgJz8nOgorICAg ICAgICAgICAgICAgICBhX3RtcFthX2ldID0gMjsKKyAgICAgICAgICAgICAgICAgYnJlYWs7Cist ICAgICAgICAgICAgY2FzZSAnWyc6IAorKyAgICAgICAgICAgIGNhc2UgJ1snOgorICAgICAgICAg ICAgICAgICBhX3RtcFthX2ldID0gMzsKKyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg ICB9CistICAgIH0gCisrICAgIH0KKyAKKyAgICAgYl9pID0gc3RyY3NwbihiX3RtcCwgIlsqPyIp OworICAgICBpZihiX2kgPCBiX2VudC0+YWxpYXNfbGVuKQorQEAgLTMwNzcsMTUgKzMwNzcsMTUg QEAgZ2xvYnVzX2xpc3RfY21wX2FsaWFzX2VudCgKKyAgICAgICAgICAgICBjYXNlICcqJzoKKyAg ICAgICAgICAgICAgICAgYl90bXBbYl9pXSA9IDE7CisgICAgICAgICAgICAgICAgIGJyZWFrOwor LSAgICAgICAgICAgIGNhc2UgJz8nOiAKKysgICAgICAgICAgICBjYXNlICc/JzoKKyAgICAgICAg ICAgICAgICAgYl90bXBbYl9pXSA9IDI7CisgICAgICAgICAgICAgICAgIGJyZWFrOworLSAgICAg ICAgICAgIGNhc2UgJ1snOiAKKysgICAgICAgICAgICBjYXNlICdbJzoKKyAgICAgICAgICAgICAg ICAgYl90bXBbYl9pXSA9IDM7CisgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQor ICAgICB9CistICAgIAorKworICAgICByZXR1cm4gc3RyY21wKGFfdG1wLCBiX3RtcCkgPj0gMDsK KyB9CisgCitAQCAtMzEwMiw3ICszMTAyLDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfdXBkYXRlX3Zh cl9wYXRoKAorICAgICBHbG9idXNHRlNEZWJ1Z0VudGVyKCk7CisgCisgICAgIHBhdGggPSBnbG9i dXNfbGliY19zdHJkdXAoaW5fcGF0aCk7CistICAgIAorKworICAgICBpZigodmFyID0gc3Ryc3Ry KHBhdGgsICIkVVNFUiIpKSAhPSBOVUxMKQorICAgICB7CisgICAgICAgICAqdmFyID0gJ1wwJzsK K0BAIC0zMTIzLDkgKzMxMjMsOSBAQCBnbG9idXNfbF9nZnNfZGF0YV91cGRhdGVfdmFyX3BhdGgo CisgICAgIH0KKyAgICAgaWYoKHZhciA9IHN0cnN0cihwYXRoLCAifiIpKSAhPSBOVUxMKQorICAg ICB7CistICAgICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgIHRtcF9ob21lOyAK Ky0gICAgICAgIAorLSAgICAgICAgdG1wX2hvbWUgPSBzZXNzaW9uX2hhbmRsZS0+aG9tZV9kaXIg PyAKKysgICAgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wX2hvbWU7Cisr CisrICAgICAgICB0bXBfaG9tZSA9IHNlc3Npb25faGFuZGxlLT5ob21lX2RpciA/CisgICAgICAg ICAgICAgc2Vzc2lvbl9oYW5kbGUtPmhvbWVfZGlyIDogc2Vzc2lvbl9oYW5kbGUtPnRydWVfaG9t ZTsKKyAgICAgICAgICp2YXIgPSAnXDAnOworICAgICAgICAgdmFyICs9IDE7CitAQCAtMzEzNCwx MCArMzEzNCwxMCBAQCBnbG9idXNfbF9nZnNfZGF0YV91cGRhdGVfdmFyX3BhdGgoCisgICAgICAg ICBnbG9idXNfZnJlZShwYXRoKTsKKyAgICAgICAgIHBhdGggPSBuZXdfcGF0aDsKKyAgICAgfQor LSAgICAgICAgCisrCisgICAgIHJldHVybiBwYXRoOworLX0gICAgCistICAgCisrfQorKworIHN0 YXRpYworIHZvaWQKKyBnbG9idXNfbF9nZnNfZGF0YV91cGRhdGVfcmVzdHJpY3RlZF9wYXRocygK K0BAIC0zMTUwLDI3ICszMTUwLDI3IEBAIGdsb2J1c19sX2dmc19kYXRhX3VwZGF0ZV9yZXN0cmlj dGVkX3BhdGhzKAorICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJf cGF0aDsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9nZnNfZGF0YV91cGRhdGVfcmVzdHJp Y3RlZF9wYXRocyk7CisgICAgIEdsb2J1c0dGU0RlYnVnRW50ZXIoKTsKKy0gICAgCistICAgIAor KworKworICAgICBpZighZ2xvYnVzX2xpc3RfZW1wdHkoKnJwX2xpc3QpKQorLSAgICB7ICAgCisr ICAgIHsKKyAgICAgICAgIGZvcihsaXN0ID0gKnJwX2xpc3Q7CisgICAgICAgICAgICAgIWdsb2J1 c19saXN0X2VtcHR5KGxpc3QpOworICAgICAgICAgICAgIGxpc3QgPSBnbG9idXNfbGlzdF9yZXN0 KGxpc3QpKQorLSAgICAgICAgeyAgICAgICAgICAgIAorKyAgICAgICAgeworICAgICAgICAgICAg IGFsaWFzX2VudCA9IGdsb2J1c19saXN0X2ZpcnN0KGxpc3QpOworLSAgICAgICAgICAgIAorKwor ICAgICAgICAgICAgIGlmKGFsaWFzX2VudC0+YWxpYXNbMF0gPT0gJ34nIHx8IHN0cmNocihhbGlh c19lbnQtPmFsaWFzLCAnJCcpKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgdmFy X3BhdGggPSBnbG9idXNfbF9nZnNfZGF0YV91cGRhdGVfdmFyX3BhdGgoCisgICAgICAgICAgICAg ICAgICAgICBzZXNzaW9uX2hhbmRsZSwgYWxpYXNfZW50LT5hbGlhcyk7CistICAgICAgICAgICAg ICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2ZyZWUoYWxpYXNfZW50LT5hbGlh cyk7CistICAgICAgICAgICAgICAgIGFsaWFzX2VudC0+YWxpYXMgPSB2YXJfcGF0aDsgICAgICAg ICAgICAgICAKKysgICAgICAgICAgICAgICAgYWxpYXNfZW50LT5hbGlhcyA9IHZhcl9wYXRoOwor ICAgICAgICAgICAgICAgICBhbGlhc19lbnQtPmFsaWFzX2xlbiA9IHN0cmxlbihhbGlhc19lbnQt PmFsaWFzKTsKKyAKKyAgICAgICAgICAgICAgICAgcmVzb3J0ID0gR0xPQlVTX1RSVUU7CistICAg ICAgICAgICAgICAgIAorKworICNpZmRlZiBXSU4zMgorICAgICAgICAgICAgICAgICBmb3IodmFy X3BhdGggPSBhbGlhc19lbnQtPmFsaWFzOyAqdmFyX3BhdGggIT0gJ1wwJzsgdmFyX3BhdGgrKykK KyAgICAgICAgICAgICAgICAgeworQEAgLTMxNzksMTUgKzMxNzksMTUgQEAgZ2xvYnVzX2xfZ2Zz X2RhdGFfdXBkYXRlX3Jlc3RyaWN0ZWRfcGF0aHMoCisgI2VuZGlmCisgICAgICAgICAgICAgfQor IAorLSAgICAgICAgICAgIGlmKGFsaWFzX2VudC0+cmVhbHBhdGggJiYgCisrICAgICAgICAgICAg aWYoYWxpYXNfZW50LT5yZWFscGF0aCAmJgorICAgICAgICAgICAgICAgICAoYWxpYXNfZW50LT5y ZWFscGF0aFswXSA9PSAnficgfHwgc3RyY2hyKGFsaWFzX2VudC0+cmVhbHBhdGgsICckJykpKQor ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgdmFyX3BhdGggPSBnbG9idXNfbF9nZnNf ZGF0YV91cGRhdGVfdmFyX3BhdGgoCisgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2hhbmRs ZSwgYWxpYXNfZW50LT5yZWFscGF0aCk7CistICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAg ICAgICAgICAgICAgZ2xvYnVzX2ZyZWUoYWxpYXNfZW50LT5yZWFscGF0aCk7CistICAgICAgICAg ICAgICAgIGFsaWFzX2VudC0+cmVhbHBhdGggPSB2YXJfcGF0aDsgICAgICAgICAgICAgICAKKy0g ICAgICAgICAgICAgICAgYWxpYXNfZW50LT5yZWFscGF0aF9sZW4gPSBzdHJsZW4oYWxpYXNfZW50 LT5yZWFscGF0aCk7IAorKyAgICAgICAgICAgICAgICBhbGlhc19lbnQtPnJlYWxwYXRoID0gdmFy X3BhdGg7CisrICAgICAgICAgICAgICAgIGFsaWFzX2VudC0+cmVhbHBhdGhfbGVuID0gc3RybGVu KGFsaWFzX2VudC0+cmVhbHBhdGgpOworIAorICNpZmRlZiBXSU4zMgorICAgICAgICAgICAgICAg ICBmb3IodmFyX3BhdGggPSBhbGlhc19lbnQtPnJlYWxwYXRoOyAqdmFyX3BhdGggIT0gJ1wwJzsg dmFyX3BhdGgrKykKK0BAIC0zMTk3LDcgKzMxOTcsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV91cGRh dGVfcmVzdHJpY3RlZF9wYXRocygKKyAjZW5kaWYKKyAgICAgICAgICAgICB9CisgICAgICAgICB9 CistICAgICAgICAKKysKKyAgICAgICAgIGlmKHJlc29ydCkKKyAgICAgICAgIHsKKyAgICAgICAg ICAgICAqcnBfbGlzdCA9IGdsb2J1c19saXN0X3NvcnRfZGVzdHJ1Y3RpdmUoCitAQCAtMzIxOCwz MSArMzIxOCwzMSBAQCBnbG9idXNfbF9nZnNfZGF0YV91cGRhdGVfcmVzdHJpY3RlZF9wYXRoc19z eW1saW5rcygKKyAgICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICAgICAgcmVzb3J0 ID0gR0xPQlVTX0ZBTFNFOworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dmc19kYXRhX3Vw ZGF0ZV9yZXN0cmljdGVkX3BhdGhzKTsKKyAgICAgR2xvYnVzR0ZTRGVidWdFbnRlcigpOworLSAg ICAKKysKKyAgICAgaWYoIWdsb2J1c19pX2dmc19jb25maWdfYm9vbCgicnBfZm9sbG93X3N5bWxp bmtzIikgJiYgc2Vzc2lvbl9oYW5kbGUgJiYKKyAgICAgICAgIHNlc3Npb25faGFuZGxlLT5kc2kt PmRlc2NyaXB0b3IgJiBHTE9CVVNfR0ZTX0RTSV9ERVNDUklQVE9SX0hBU19SRUFMUEFUSCAmJgor ICAgICAgICAgc2Vzc2lvbl9oYW5kbGUtPmRzaS0+cmVhbHBhdGhfZnVuYykKKyAgICAgeworICAg ICAgICAgaWYoIWdsb2J1c19saXN0X2VtcHR5KCpycF9saXN0KSkKKy0gICAgICAgIHsgICAKKysg ICAgICAgIHsKKyAgICAgICAgICAgICBmb3IobGlzdCA9ICpycF9saXN0OworICAgICAgICAgICAg ICAgICAhZ2xvYnVzX2xpc3RfZW1wdHkobGlzdCk7CisgICAgICAgICAgICAgICAgIGxpc3QgPSBn bG9idXNfbGlzdF9yZXN0KGxpc3QpKQorLSAgICAgICAgICAgIHsgICAgICAgIAorKyAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgcmVhbF9wYXRo ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAgICAgcmVzdWx0 OworLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgYWxpYXNfZW50ID0gZ2xv YnVzX2xpc3RfZmlyc3QobGlzdCk7CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAg ICAgICByZXN1bHQgPSBzZXNzaW9uX2hhbmRsZS0+ZHNpLT5yZWFscGF0aF9mdW5jKAorICAgICAg ICAgICAgICAgICAgICAgYWxpYXNfZW50LT5hbGlhcywgJnJlYWxfcGF0aCwgc2Vzc2lvbl9oYW5k bGUtPnNlc3Npb25fYXJnKTsKKy0gICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAg IGlmKHJlc3VsdCA9PSBHTE9CVVNfU1VDQ0VTUyAmJiByZWFsX3BhdGgpCisgICAgICAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIGlmKHN0cmNtcChyZWFsX3BhdGgsIGFsaWFzX2Vu dC0+YWxpYXMpICE9IDApCisgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ICAgICAgICAgZ2xvYnVzX2xfZ2ZzX2FsaWFzX2VudF90ICogICAgICBuZXdfZW50OworLSAgICAg ICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19lbnQg PSAoZ2xvYnVzX2xfZ2ZzX2FsaWFzX2VudF90ICopCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdsb2J1c19jYWxsb2MoMSwgc2l6ZW9mKGdsb2J1c19sX2dmc19hbGlhc19lbnRfdCkpOwor ICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19lbnQtPmFjY2VzcyA9IGFsaWFzX2VudC0+YWNj ZXNzOworQEAgLTMyNTMsOSArMzI1Myw5IEBAIGdsb2J1c19sX2dmc19kYXRhX3VwZGF0ZV9yZXN0 cmljdGVkX3BhdGhzX3N5bWxpbmtzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdf ZW50LT5yZWFscGF0aCA9IHN0cmR1cChhbGlhc19lbnQtPnJlYWxwYXRoKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmV3X2VudC0+cmVhbHBhdGhfbGVuID0gYWxpYXNfZW50LT5yZWFs cGF0aF9sZW47CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAg ICAgICAgIAorKworICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19saXN0X2luc2VydCgm bmV3X2xpc3QsIG5ld19lbnQpOworLSAgICAgICAgICAgICAgICAgICAgICAgIAorKworICAgICAg ICAgICAgICAgICAgICAgICAgIHJlc29ydCA9IEdMT0JVU19UUlVFOworICAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgZWxzZQorQEAgLTMyNjMsMTUgKzMyNjMsMTUg QEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfdXBkYXRlX3Jlc3RyaWN0ZWRfcGF0aHNfc3ltbGlua3MoCisg ICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2ZyZWUocmVhbF9wYXRoKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICByZWFsX3BhdGggPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAg fQorLSAgICAgICAgICAgICAgICB9ICAgIAorKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgfQorLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIGlmKHJlc29ydCkKKyAgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgIHdoaWxlKCFnbG9idXNfbGlzdF9lbXB0eShuZXdfbGlz dCkpCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19saXN0 X2luc2VydCgKKy0gICAgICAgICAgICAgICAgICAgICAgICBycF9saXN0LCAKKysgICAgICAgICAg ICAgICAgICAgICAgICBycF9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19s aXN0X3JlbW92ZSgmbmV3X2xpc3QsIG5ld19saXN0KSk7CisgICAgICAgICAgICAgICAgIH0KKyAK K0BAIC0zMjk4LDIwICszMjk4LDIwIEBAIGdsb2J1c19sX2dmc19kYXRhX3BhcnNlX3Jlc3RyaWN0 ZWRfcGF0aHMoCisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNocm9v dF9wYXRoX2VzYyA9IE5VTEw7CisgICAgIEdsb2J1c0dGU05hbWUoZ2xvYnVzX2xfZ2ZzX2RhdGFf cGFyc2VfcmVzdHJpY3RlZF9wYXRocyk7CisgICAgIEdsb2J1c0dGU0RlYnVnRW50ZXIoKTsKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisrCisgICAgIGxpc3QgPSBn bG9idXNfbGlzdF9mcm9tX3N0cmluZyhyZXN0cmljdF9wYXRocywgJywnLCBOVUxMKTsKKy0gICAg CisrCisgICAgIC8qIGVzY2FwZSBnbG9iIGNoYXJzIGluIGNocm9vdCAqLworICAgICBpZihpc192 aXJ0dWFsICYmIHNlc3Npb25faGFuZGxlICYmIHNlc3Npb25faGFuZGxlLT5jaHJvb3RfcGF0aCAm JgorLSAgICAgICAgc3RyY3NwbihzZXNzaW9uX2hhbmRsZS0+Y2hyb290X3BhdGgsICJbKj8iKSAh PSAKKysgICAgICAgIHN0cmNzcG4oc2Vzc2lvbl9oYW5kbGUtPmNocm9vdF9wYXRoLCAiWyo/Iikg IT0KKyAgICAgICAgICAgICBzdHJsZW4oc2Vzc2lvbl9oYW5kbGUtPmNocm9vdF9wYXRoKSkKKyAg ICAgeworICAgICAgICAgY2hhciAqIHB0cjsKKyAgICAgICAgIGNoYXIgKiBwdHJfZXNjOworLSAg ICAgICAgCistICAgICAgICBjaHJvb3RfcGF0aF9lc2MgPSAKKysKKysgICAgICAgIGNocm9vdF9w YXRoX2VzYyA9CisgICAgICAgICAgICAgKGNoYXIgKikgbWFsbG9jKDIgKiBzdHJsZW4oc2Vzc2lv bl9oYW5kbGUtPmNocm9vdF9wYXRoKSArIDEpOworLSAgICAgICAgCisrCisgICAgICAgICBwdHIg PSBzZXNzaW9uX2hhbmRsZS0+Y2hyb290X3BhdGg7CisgICAgICAgICBwdHJfZXNjID0gY2hyb290 X3BhdGhfZXNjOworICAgICAgICAgd2hpbGUoKnB0cikKK0BAIC0zMzI0LDcgKzMzMjQsNyBAQCBn bG9idXNfbF9nZnNfZGF0YV9wYXJzZV9yZXN0cmljdGVkX3BhdGhzKAorICAgICAgICAgICAgICAg ICBjYXNlICddJzoKKyAgICAgICAgICAgICAgICAgY2FzZSAnXFwnOgorICAgICAgICAgICAgICAg ICAgICAgKnB0cl9lc2MrKyA9ICdcXCc7CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAg ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgKnB0cl9lc2MrKyA9ICpwdHIr KzsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworQEAgLTMzNDQsMTMgKzMzNDQsMTMgQEAg Z2xvYnVzX2xfZ2ZzX2RhdGFfcGFyc2VfcmVzdHJpY3RlZF9wYXRocygKKyAgICAgICAgIGNoYXIg KiAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyOworICAgICAgICAgY2hhciAqICAgICAgICAg ICAgICAgICAgICAgICAgICBhbGlhczsKKyAgICAgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAg ICAgICAgICAgZG9uZTsKKy0gICAgICAgIAorKworICAgICAgICAgZW50ID0gKGdsb2J1c19sX2dm c19hbGlhc19lbnRfdCAqKQorICAgICAgICAgICAgIGdsb2J1c19tYWxsb2Moc2l6ZW9mKGdsb2J1 c19sX2dmc19hbGlhc19lbnRfdCkpOworICAgICAgICAgZW50LT5hY2Nlc3MgPSAwOworLSAgICAg ICAgCistICAgICAgICBlbnRfc3RyID0gKGNoYXIgKikgZ2xvYnVzX2xpc3RfcmVtb3ZlKCZsaXN0 LCBsaXN0KTsgICAgCistICAgICAgICAgICAgICAgIAorKworKyAgICAgICAgZW50X3N0ciA9IChj aGFyICopIGdsb2J1c19saXN0X3JlbW92ZSgmbGlzdCwgbGlzdCk7CisrCisgICAgICAgICBwdHIg PSBlbnRfc3RyOworICAgICAgICAgZG9uZSA9IEdMT0JVU19GQUxTRTsKKyAgICAgICAgIHdoaWxl KCpwdHIgJiYgIWRvbmUpCitAQCAtMzM2Miw3ICszMzYyLDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFf cGFyc2VfcmVzdHJpY3RlZF9wYXRocygKKyAgICAgICAgICAgICAgICAgICAgIGVudC0+YWNjZXNz IHw9IEdGU19MX1JFQUQ7CisgICAgICAgICAgICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOworLSAgICAgICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAg ICAgIGNhc2UgJ3cnOgorICAgICAgICAgICAgICAgICBjYXNlICdXJzoKKyAgICAgICAgICAgICAg ICAgICAgIGVudC0+YWNjZXNzIHw9IEdGU19MX1dSSVRFOworQEAgLTMzNzQsNyArMzM3NCw3IEBA IGdsb2J1c19sX2dmc19kYXRhX3BhcnNlX3Jlc3RyaWN0ZWRfcGF0aHMoCisgICAgICAgICAgICAg ICAgICAgICBlbnQtPmFjY2VzcyB8PSBHRlNfTF9OT05FOworICAgICAgICAgICAgICAgICAgICAg cHRyKys7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgICAgICAgICAgICAg IAorKworICAgICAgICAgICAgICAgICBjYXNlICcvJzoKKyAgICAgICAgICAgICAgICAgY2FzZSAn fic6CisgICAgICAgICAgICAgICAgIGNhc2UgJyQnOgorQEAgLTMzODcsNyArMzM4Nyw3IEBAIGds b2J1c19sX2dmc19kYXRhX3BhcnNlX3Jlc3RyaWN0ZWRfcGF0aHMoCisgICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICAgICBkb25lID0gR0xPQlVTX1RSVUU7CisgICAgICAg ICAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAg ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IEdMT0JVU19UUlVF OworICAgICAgICAgICAgICAgICAgICAgR2xvYnVzR0ZTRXJyb3JHZW5lcmljU3RyKHJlc3VsdCwK K0BAIC0zMzk2LDI0ICszMzk2LDI0IEBAIGdsb2J1c19sX2dmc19kYXRhX3BhcnNlX3Jlc3RyaWN0 ZWRfcGF0aHMoCisgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBlbnRyeSAnJXMnIGlzIGlu dmFsaWQuXG4iLCBlbnRfc3RyKSk7CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0 OworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICAgICAgfSAgICAgICAgICAg ICAgICAKKysgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICBlbnQtPmFjY2VzcyB8 PSBHRlNfTF9MSVNUOworLSAgICAgICAgCisrCisgICAgICAgICBpZihlbnQtPmFjY2VzcyAmIEdG U19MX05PTkUpCisgICAgICAgICB7CisgICAgICAgICAgICAgZW50LT5hY2Nlc3MgPSBHRlNfTF9O T05FOworICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBpZigoYWxpYXMgPSBzdHJj aHIocHRyLCAnOicpKSAhPSBOVUxMKQorICAgICAgICAgeworICAgICAgICAgICAgICphbGlhcyA9 ICdcMCc7CisgICAgICAgICAgICAgYWxpYXMrKzsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAg ICAgICBlbnQtPmFsaWFzID0gZ2xvYnVzX2xpYmNfc3RyZHVwKGFsaWFzKTsKKyAgICAgICAgICAg ICBnbG9idXNfdXJsX3N0cmluZ19oZXhfZGVjb2RlKGVudC0+YWxpYXMpOworICAgICAgICAgICAg IGVudC0+YWxpYXNfbGVuID0gc3RybGVuKGVudC0+YWxpYXMpOworLSAgICAgICAgICAgIAorKwor ICAgICAgICAgICAgIGVudC0+cmVhbHBhdGggPSBnbG9idXNfbGliY19zdHJkdXAocHRyKTsKKyAg ICAgICAgICAgICBnbG9idXNfdXJsX3N0cmluZ19oZXhfZGVjb2RlKGVudC0+cmVhbHBhdGgpOwor ICAgICAgICAgICAgIGVudC0+cmVhbHBhdGhfbGVuID0gc3RybGVuKGVudC0+cmVhbHBhdGgpOwor QEAgLTM0MjMsNyArMzQyMyw3IEBAIGdsb2J1c19sX2dmc19kYXRhX3BhcnNlX3Jlc3RyaWN0ZWRf cGF0aHMoCisgICAgICAgICAgICAgZW50LT5hbGlhcyA9IGdsb2J1c19saWJjX3N0cmR1cChwdHIp OworICAgICAgICAgICAgIGdsb2J1c191cmxfc3RyaW5nX2hleF9kZWNvZGUoZW50LT5hbGlhcyk7 CisgICAgICAgICAgICAgZW50LT5hbGlhc19sZW4gPSBzdHJsZW4oZW50LT5hbGlhcyk7CistICAg ICAgICAgICAgCisrCisgICAgICAgICAgICAgZW50LT5yZWFscGF0aCA9IE5VTEw7CisgICAgICAg ICAgICAgZW50LT5yZWFscGF0aF9sZW4gPSAwOworICAgICAgICAgfQorQEAgLTM0MzEsNyArMzQz MSw3IEBAIGdsb2J1c19sX2dmc19kYXRhX3BhcnNlX3Jlc3RyaWN0ZWRfcGF0aHMoCisgCisgICAg ICAgICBpZihzdHJjaHIoR0ZTX1JQX0xFQURfQ0hBUlMsICplbnQtPmFsaWFzKSA9PSBOVUxMIHx8 CisgICAgICAgICAgICAgKGVudC0+cmVhbHBhdGggJiYgc3RyY2hyKEdGU19SUF9MRUFEX0NIQVJT LCAqZW50LT5hbGlhcykgPT0gTlVMTCkpCistICAgICAgICB7ICAgICAgICAgICAgICAgIAorKyAg ICAgICAgeworICAgICAgICAgICAgIGdsb2J1c19mcmVlKGVudC0+YWxpYXMpOworICAgICAgICAg ICAgIGlmKGVudC0+cmVhbHBhdGgpCisgICAgICAgICAgICAgeworQEAgLTM0NDIsMjIgKzM0NDIs MjIgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfcGFyc2VfcmVzdHJpY3RlZF9wYXRocygKKyAgICAgICAg IGVsc2UKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpZihpc192aXJ0dWFsKQorLSAgICAgICAg ICAgIHsgICAKKysgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGNoYXIgKiAgICAgICAg ICAgICAgICAgIHRtcF9wYXRoOworLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAg ICAgaWYoZW50LT5yZWFscGF0aCkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICAgICAgZ2xvYnVzX2ZyZWUoZW50LT5yZWFscGF0aCk7CisgICAgICAgICAgICAgICAgICAgICBl bnQtPnJlYWxwYXRoID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgIGVudC0+cmVhbHBhdGhf bGVuID0gMDsKKyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAKKysKKyAgICAg ICAgICAgICAgICAgaWYoZW50LT5hbGlhc1swXSA9PSAnficpCisgICAgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICAgICAgIHRtcF9wYXRoID0gZ2xvYnVzX2NvbW1vbl9jcmVhdGVfc3Ry aW5nKAorLSAgICAgICAgICAgICAgICAgICAgICAgICIlcyVzIiwgCistICAgICAgICAgICAgICAg ICAgICAgICAgY2hyb290X3BhdGhfZXNjID8gCistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICIvIiA6IHNlc3Npb25faGFuZGxlLT5ob21lX2RpciwgCisrICAgICAgICAgICAgICAgICAgICAg ICAgIiVzJXMiLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGNocm9vdF9wYXRoX2VzYyA/Cisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIiA6IHNlc3Npb25faGFuZGxlLT5ob21lX2Rp ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBlbnQtPmFsaWFzICsgMSk7CisgICAgICAgICAg ICAgICAgICAgICBnbG9idXNfZnJlZShlbnQtPmFsaWFzKTsKKyAgICAgICAgICAgICAgICAgICAg IGVudC0+YWxpYXMgPSB0bXBfcGF0aDsKK0BAIC0zNDY2LDE1ICszNDY2LDE1IEBAIGdsb2J1c19s X2dmc19kYXRhX3BhcnNlX3Jlc3RyaWN0ZWRfcGF0aHMoCisgICAgICAgICAgICAgICAgIGVsc2UK KyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgaWYoY2hyb290X3BhdGhf ZXNjKQorLSAgICAgICAgICAgICAgICAgICAgeyAgIAorLSAgICAgICAgICAgICAgICAgICAgICAg IHRtcF9wYXRoID0gZ2xvYnVzX2NvbW1vbl9jcmVhdGVfc3RyaW5nKCIlcyVzIiwgCisrICAgICAg ICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgdG1wX3BhdGggPSBnbG9i dXNfY29tbW9uX2NyZWF0ZV9zdHJpbmcoIiVzJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjaHJvb3RfcGF0aF9lc2MsIGVudC0+YWxpYXMpOworICAgICAgICAgICAgICAgICAgICAg ICAgIGdsb2J1c19mcmVlKGVudC0+YWxpYXMpOworICAgICAgICAgICAgICAgICAgICAgICAgIGVu dC0+YWxpYXMgPSB0bXBfcGF0aDsKKyAgICAgICAgICAgICAgICAgICAgICAgICBlbnQtPmFsaWFz X2xlbiA9IHN0cmxlbihlbnQtPmFsaWFzKTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgaWYo ZW50LT5hbGlhc19sZW4gPiAxICYmIGVudC0+YWxpYXNbZW50LT5hbGlhc19sZW4gLSAxXSA9PSAn LycpCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIGVudC0+YWxpYXNb ZW50LT5hbGlhc19sZW4gLSAxXSA9ICdcMCc7CitAQCAtMzQ4NSwxMiArMzQ4NSwxMiBAQCBnbG9i dXNfbF9nZnNfZGF0YV9wYXJzZV9yZXN0cmljdGVkX3BhdGhzKAorICNpZmRlZiBXSU4zMgorICAg ICAgICAgICAgICAgICBnbG9idXNfbF9nZnNfYWxpYXNfZW50X3QgKiAgbmV3X2VudDsKKyAgICAg ICAgICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgIHRtcF9wdHI7CistICAgIAor KworICAgICAgICAgICAgICAgICBmb3IodG1wX3B0ciA9IGVudC0+YWxpYXM7ICp0bXBfcHRyICE9 ICdcMCc7IHRtcF9wdHIrKykKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg ICAgKnRtcF9wdHIgPSB0b2xvd2VyKCp0bXBfcHRyKTsKKyAgICAgICAgICAgICAgICAgfQorLSAg ICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgaWYoZW50LT5yZWFscGF0aCkKKyAg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgZm9yKHRtcF9wdHIgPSBlbnQt PnJlYWxwYXRoOyAqdG1wX3B0ciAhPSAnXDAnOyB0bXBfcHRyKyspCitAQCAtMzUwMCw3ICszNTAw LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfcGFyc2VfcmVzdHJpY3RlZF9wYXRocygKKyAgICAgICAg ICAgICAgICAgfQorICNlbmRpZgorICAgICAgICAgICAgICAgICBnbG9idXNfbGlzdF9pbnNlcnQo JnRtcF9saXN0LCBlbnQpOworLSAgICAgICAgICAgICAgICAKKysKKyAjaWZkZWYgV0lOMzIKKyAg ICAgICAgICAgICAgICAgLyogbm93IHN0b3JlIGRyaXZlbGV0dGVyOi9wYXRoIGZvcm0gb2YgdGhl IGVudCAqLworICAgICAgICAgICAgICAgICBpZihlbnQtPmFsaWFzWzBdID09ICcvJyAmJiBlbnQt PmFsaWFzWzFdID09ICdcMCcpCitAQCAtMzUwOCw3ICszNTA4LDcgQEAgZ2xvYnVzX2xfZ2ZzX2Rh dGFfcGFyc2VfcmVzdHJpY3RlZF9wYXRocygKKyAgICAgICAgICAgICAgICAgICAgIC8qIHRoZSBy b290IHBhdGggbmVlZHMgdG8gbWVhbiBldmVyeSBkcml2ZSBsZXR0ZXIgKi8KKyAgICAgICAgICAg ICAgICAgICAgIERXT1JEIGRyaXZlbWFzazsKKyAgICAgICAgICAgICAgICAgICAgIGNoYXIgZHJp dmVbXSA9ICJhIjsKKy0gICAgCisrCisgICAgICAgICAgICAgICAgICAgICBkcml2ZW1hc2sgPSBH ZXRMb2dpY2FsRHJpdmVzKCk7CisgICAgICAgICAgICAgICAgICAgICB3aGlsZShkcml2ZW1hc2sg JiYgKmRyaXZlIDw9ICd6JykKKyAgICAgICAgICAgICAgICAgICAgIHsKK0BAIC0zNTIwLDcgKzM1 MjAsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9wYXJzZV9yZXN0cmljdGVkX3BhdGhzKAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBuZXdfZW50LT5hbGlhc19sZW4gPSBzdHJsZW4oIl86LyIp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfZW50LT5hbGlhcyA9IHN0cmR1cCgi XzovIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19lbnQtPmFsaWFzWzBdID0g KmRyaXZlOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2xvYnVzX2xpc3RfaW5zZXJ0KCZ0bXBfbGlzdCwgbmV3X2VudCk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICgqZHJp dmUpKys7CitAQCAtMzUzNSw3ICszNTM1LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfcGFyc2VfcmVz dHJpY3RlZF9wYXRocygKKyAgICAgICAgICAgICAgICAgICAgIG5ld19lbnQtPmFsaWFzID0gZ2xv YnVzX2xpYmNfc3RyZHVwKGVudC0+YWxpYXMpOworICAgICAgICAgICAgICAgICAgICAgbmV3X2Vu dC0+cmVhbHBhdGggPSBnbG9idXNfbGliY19zdHJkdXAoZW50LT5yZWFscGF0aCk7CisgICAgICAg ICAgICAgICAgICAgICBlbnQgPSBuZXdfZW50OworLSAgICAgICAgCisrCisgICAgICAgICAgICAg ICAgICAgICBpZighZW50LT5yZWFscGF0aCAmJiBlbnQtPmFsaWFzWzBdID09ICcvJyAmJgorICAg ICAgICAgICAgICAgICAgICAgICAgIGlzYWxwaGEoZW50LT5hbGlhc1sxXSkpCisgICAgICAgICAg ICAgICAgICAgICB7CitAQCAtMzU0OSw3ICszNTQ5LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfcGFy c2VfcmVzdHJpY3RlZF9wYXRocygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50LT5h bGlhc19sZW4gPSAzOworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAgICAg aWYoZW50LT5yZWFscGF0aCAmJiBlbnQtPnJlYWxwYXRoWzBdID09ICcvJyAmJgorICAgICAgICAg ICAgICAgICAgICAgICAgIGlzYWxwaGEoZW50LT5yZWFscGF0aFsxXSkpCisgICAgICAgICAgICAg ICAgICAgICB7CitAQCAtMzU2NiwxMSArMzU2NiwxMSBAQCBnbG9idXNfbF9nZnNfZGF0YV9wYXJz ZV9yZXN0cmljdGVkX3BhdGhzKAorICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xpc3RfaW5z ZXJ0KCZ0bXBfbGlzdCwgZW50KTsKKyAgICAgICAgICAgICAgICAgfQorICNlbmRpZgorLSAgICAg ICAgICAgIH0gICAgICAgICAgICAgIAorKyAgICAgICAgICAgIH0KKyAKKyAgICAgICAgIH0KKyAg ICAgfQorLSAgICAKKysKKyAgICAgaWYoIWdsb2J1c19saXN0X2VtcHR5KHRtcF9saXN0KSkKKyAg ICAgeworICAgICAgICAgKm91dF9saXN0ID0gZ2xvYnVzX2xpc3Rfc29ydF9kZXN0cnVjdGl2ZSgK K0BAIC0zNTgwLDcgKzM1ODAsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9wYXJzZV9yZXN0cmljdGVk X3BhdGhzKAorICAgICB7CisgICAgICAgICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JHZW5lcmlj KCJObyB2YWxpZCBwYXRocyBhZGRlZCB0byByZXN0cmljdGVkIGxpc3QuIik7CisgICAgIH0KKy0g ICAgCisrCisgICAgIEdsb2J1c0dGU0RlYnVnRXhpdCgpOworICAgICByZXR1cm4gcmVzdWx0Owor IH0KK0BAIC0zNjMxLDcgKzM2MzEsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9yZWFkX3NoYXJlX2Zp bGUoCisgICAgICAgICByZXMgPSBHbG9idXNHRlNFcnJvckdlbmVyaWMoIlByb2JsZW0gYWxsb2Nh dGluZyBtZW1vcnkuXG4iKTsKKyAgICAgICAgIGdvdG8gZXJyb3JfbWVtOworICAgICB9CistICAg IAorKworICAgICB3aGlsZShmZ2V0cyhsaW5lYnVmLCBsaW5lYnVmbGVuLCBmcHRyKSAhPSBOVUxM KQorICAgICB7CisgICAgICAgICBwID0gbGluZWJ1ZjsKK0BAIC0zNjUwLDcgKzM2NTAsNyBAQCBn bG9idXNfbF9nZnNfZGF0YV9yZWFkX3NoYXJlX2ZpbGUoCisgICAgICAgICAgICAgICAgICAgICBn b3RvIGVycm9yX21lbTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBzdHJu Y2F0KGxpbmVidWYsIHBhcnRfbGluZSwgbGluZWJ1Zmxlbik7CistICAgICAgICAgICAgICAgIAor KworICAgICAgICAgICAgICAgICBvcHRpb25idWYgPSBnbG9idXNfcmVhbGxvYyhvcHRpb25idWYs IGxpbmVidWZsZW4pOworICAgICAgICAgICAgICAgICBpZighb3B0aW9uYnVmKQorICAgICAgICAg ICAgICAgICB7CitAQCAtMzY2Nyw3ICszNjY3LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfcmVhZF9z aGFyZV9maWxlKAorICAgICAgICAgfQorICAgICAgICAgbGluZV9udW0rKzsKKyAgICAgICAgIHAg PSBsaW5lYnVmOworLSAgICAgICAgb3B0bGVuID0gMDsgICAgICAgICAgICAgICAKKysgICAgICAg IG9wdGxlbiA9IDA7CisgICAgICAgICB3aGlsZSgqcCAmJiBpc3NwYWNlKCpwKSkKKyAgICAgICAg IHsKKyAgICAgICAgICAgICBwKys7CitAQCAtMzY3OSw3ICszNjc5LDcgQEAgZ2xvYnVzX2xfZ2Zz X2RhdGFfcmVhZF9zaGFyZV9maWxlKAorICAgICAgICAgaWYoKnAgPT0gJyMnKQorICAgICAgICAg eworICAgICAgICAgICAgIGNvbnRpbnVlOworLSAgICAgICAgfSAgICAgICAgCisrICAgICAgICB9 CisgCisgICAgICAgICBpZigqcCA9PSAnIicpCisgICAgICAgICB7CitAQCAtMzY4OSwxNCArMzY4 OSwxNCBAQCBnbG9idXNfbF9nZnNfZGF0YV9yZWFkX3NoYXJlX2ZpbGUoCisgICAgICAgICBlbHNl CisgICAgICAgICB7CisgICAgICAgICAgICAgcmMgPSBzc2NhbmYocCwgIiVzIiwgb3B0aW9uYnVm KTsKKy0gICAgICAgIH0gICAgICAgIAorKyAgICAgICAgfQorICAgICAgICAgaWYocmMgIT0gMSkK Ky0gICAgICAgIHsgICAKKysgICAgICAgIHsKKyAgICAgICAgICAgICBnb3RvIGVycm9yX3BhcnNl OworICAgICAgICAgfQorICAgICAgICAgb3B0bGVuICs9IHN0cmxlbihvcHRpb25idWYpOworICAg ICAgICAgcCA9IHAgKyBvcHRsZW47CistICAgICAgICAgICAgICAgCisrCisgICAgICAgICBvcHRs ZW4gPSAwOworICAgICAgICAgd2hpbGUoKnAgJiYgaXNzcGFjZSgqcCkpCisgICAgICAgICB7CitA QCAtMzcxMCwxMyArMzcxMCwxMyBAQCBnbG9idXNfbF9nZnNfZGF0YV9yZWFkX3NoYXJlX2ZpbGUo CisgICAgICAgICBlbHNlCisgICAgICAgICB7CisgICAgICAgICAgICAgcmMgPSBzc2NhbmYocCwg IiVzIiwgdmFsdWVidWYpOworLSAgICAgICAgfSAgICAgICAgCisrICAgICAgICB9CisgICAgICAg ICBpZihyYyAhPSAxKQorLSAgICAgICAgeyAgIAorKyAgICAgICAgeworICAgICAgICAgICAgIGdv dG8gZXJyb3JfcGFyc2U7CistICAgICAgICB9ICAgICAgICAKKysgICAgICAgIH0KKyAgICAgICAg IG9wdGxlbiArPSBzdHJsZW4odmFsdWVidWYpOworLSAgICAgICAgcCA9IHAgKyBvcHRsZW47ICAg ICAgICAKKysgICAgICAgIHAgPSBwICsgb3B0bGVuOworICAgICAgICAgd2hpbGUoKnAgJiYgaXNz cGFjZSgqcCkpCisgICAgICAgICB7CisgICAgICAgICAgICAgcCsrOworQEAgLTM3MjUsNyArMzcy NSw3IEBAIGdsb2J1c19sX2dmc19kYXRhX3JlYWRfc2hhcmVfZmlsZSgKKyAgICAgICAgIHsKKyAg ICAgICAgICAgICBnb3RvIGVycm9yX3BhcnNlOworICAgICAgICAgfQorLSAgICAgICAgCisrCisg ICAgICAgICBpZighc3RyY21wKG9wdGlvbmJ1ZiwgInNoYXJlX3BhdGgiKSkKKyAgICAgICAgIHsK KyAgICAgICAgICAgICAqc2hhcmVfcGF0aCA9IHN0cmR1cCh2YWx1ZWJ1Zik7CitAQCAtMzczNCwx MSArMzczNCwxMSBAQCBnbG9idXNfbF9nZnNfZGF0YV9yZWFkX3NoYXJlX2ZpbGUoCisgICAgIH0K KyAKKyAgICAgZmNsb3NlKGZwdHIpOworLSAgICAKKysKKyAgICAgZ2xvYnVzX2ZyZWUobGluZWJ1 Zik7CisgICAgIGdsb2J1c19mcmVlKHZhbHVlYnVmKTsKKyAgICAgZ2xvYnVzX2ZyZWUob3B0aW9u YnVmKTsKKy0gICAgCisrCisgICAgIEdsb2J1c0dGU0RlYnVnRXhpdCgpOworICAgICByZXR1cm4g R0xPQlVTX1NVQ0NFU1M7CisgCitAQCAtMzc2OSw3ICszNzY5LDcgQEAgZ2xvYnVzX2xfZ2ZzX2Rh dGFfY2hlY2tfc2hhcmluZ19wZXJtcygKKyAgICAgICAgICAgIG93bmVkIGJ5IHVzZXI7IG11c3Qg aGF2ZSBubyBncm91cCBhbmQgd29ybGQgcGVybXMgKi8KKyAgICAgICAgIGlmKHN0YXRidWYuc3Rf dWlkID09IHNlc3Npb25faGFuZGxlLT51aWQpCisgICAgICAgICB7CistICAgICAgICAgICAgaWYo KHN0YXRidWYuc3RfbW9kZSAmIAorKyAgICAgICAgICAgIGlmKChzdGF0YnVmLnN0X21vZGUgJgor ICAgICAgICAgICAgICAgICAoU19JUkdSUCB8IFNfSVhHUlAgfCBTX0lXR1JQIHwgU19JUk9USCB8 IFNfSVdPVEggfCBTX0lYT1RIKSkgPT0gMCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgIHJjID0gMDsKK0BAIC0zNzgzLDcgKzM3ODMsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9jaGVj a19zaGFyaW5nX3Blcm1zKAorICAgICAgICAgICAgICAgICAgICAgZGlyKTsKKyAgICAgICAgICAg ICB9CisgICAgICAgICB9CistICAgIAorKworICAgICAgICAgLyogY2FzZSAyOiBjb21tdW5pdHkg c3RhdGUgZGlyZWN0b3J5CisgICAgICAgICAgICB3b3JsZCBvciBncm91cCB3cml0YWJsZQorICAg ICAgICAgICAgbm90IHdvcmxkIG9yIGdyb3VwIHJlYWRhYmxlCitAQCAtMzc5MSw3ICszNzkxLDcg QEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfY2hlY2tfc2hhcmluZ19wZXJtcygKKyAjaWZuZGVmIFdJTjMy CisgICAgICAgICBlbHNlIGlmKChzdGF0YnVmLnN0X21vZGUgJiAoU19JV0dSUCB8IFNfSVdPVEgp KSAhPSAwKQorICAgICAgICAgeworLSAgICAgICAgICAgIGlmKHN0YXRidWYuc3RfdWlkID09IDAg JiYgKChzdGF0YnVmLnN0X21vZGUgJiBTX0lTVlRYKSAhPSAwKSAmJiAKKysgICAgICAgICAgICBp ZihzdGF0YnVmLnN0X3VpZCA9PSAwICYmICgoc3RhdGJ1Zi5zdF9tb2RlICYgU19JU1ZUWCkgIT0g MCkgJiYKKyAgICAgICAgICAgICAgICAgKChzdGF0YnVmLnN0X21vZGUgJiAoU19JUkdSUCB8IFNf SVJPVEgpKSA9PSAwKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHJjID0gMDsK K0BAIC0zODI1LDcgKzM4MjUsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9jaGVja19zaGFyaW5nX3Bl cm1zKAorICAgICAgICAgICAgICJhY2Nlc3NlZC5cbiIsCisgICAgICAgICAgICAgZGlyKTsKKyAg ICAgfQorLSAgICAKKysKKyAgICAgcmV0dXJuIHJjOworIH0KKyAKK0BAIC0zODYxLDcgKzM4NjEs NyBAQCBnbG9idXNfbF9nZnNfZGF0YV9jaGVja19zaGFyaW5nX2FsbG93ZWQoCisgICAgICAqIGlm IHRoZSBkZW55IGxpc3QgaW5jbHVkZXMgdGhlIHVzZXIsIGhlIGlzIGltbWVkaWF0ZWx5IGRlbmll ZC4KKyAgICAgICogaWYgdGhlIGFsbG93IGxpc3QgaW5jbHVkZXMgdGhlIHVzZXIsIGhlIGlzIGlt bWVkaWF0ZWx5IGFsbG93ZWQuCisgICAgICAqIGlmIHRoZSBhbGxvdyBsaXN0IGlzIHVuc2V0LCBo ZSBpcyBhbGxvd2VkIHBlbmRpbmcgdGhlIGdyb3VwIGNoZWNrLgorLSAgICAgKiBpZiB0aGUgYWxs b3cgbGlzdCBpcyBzZXQgYW5kIGRvZXMgbm90IGluY2x1ZGUgdGhlIHVzZXIsIGhlIGlzIGRlbmll ZCAKKysgICAgICogaWYgdGhlIGFsbG93IGxpc3QgaXMgc2V0IGFuZCBkb2VzIG5vdCBpbmNsdWRl IHRoZSB1c2VyLCBoZSBpcyBkZW5pZWQKKyAgICAgICAgcGVuZGluZyB0aGUgZ3JvdXAgY2hlY2su CisgICAgICAqLworICAgICBpZih1c2VyX2FsbG93ID09IE5VTEwpCitAQCAtMzg3Myw3ICszODcz LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfY2hlY2tfc2hhcmluZ19hbGxvd2VkKAorICAgICB7Cisg ICAgICAgICBhbGxvd2VkID0gR0xPQlVTX0ZBTFNFOworICAgICAgICAgZXhwbGljaXRseSA9IEdM T0JVU19GQUxTRTsKKy0gICAgICAgIAorKworICAgICAgICAgdXNlciA9IHVzZXJfYWxsb3c7Cisg ICAgICAgICB3aGlsZSgocHRyID0gc3RyY2hyKHVzZXIsICcsJykpICE9IE5VTEwgJiYgIWFsbG93 ZWQpCisgICAgICAgICB7CitAQCAtMzkxNywxMyArMzkxNywxMyBAQCBnbG9idXNfbF9nZnNfZGF0 YV9jaGVja19zaGFyaW5nX2FsbG93ZWQoCisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAg ICAgICAgZ2xvYnVzX2ZyZWUodXNlcl9kZW55KTsKKy0gICAgfSAgICAgICAgICAgIAorKyAgICB9 CisgCisgICAgIGlmKGV4cGxpY2l0bHkpCisgICAgIHsKKyAgICAgICAgIGdvdG8gZmluaXNoOwor ICAgICB9CistICAgIAorKworIAorICAgICBncm91cF9kZW55ID0gZ2xvYnVzX2xpYmNfc3RyZHVw KAorICAgICAgICAgZ2xvYnVzX2dmc19jb25maWdfZ2V0X3N0cmluZygic2hhcmluZ19ncm91cHNf ZGVueSIpKTsKK0BAIC0zOTQyLDcgKzM5NDIsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9jaGVja19z aGFyaW5nX2FsbG93ZWQoCisgICAgICAgICB3aGlsZSgocHRyID0gc3RyY2hyKGdyb3VwLCAnLCcp KSAhPSBOVUxMICYmICFhbGxvd2VkKQorICAgICAgICAgeworICAgICAgICAgICAgICpwdHIgPSAn XDAnOworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIGdyZW50ID0gZ2V0Z3JuYW0oZ3Jv dXApOworICAgICAgICAgICAgIGlmKGdyZW50KQorICAgICAgICAgICAgIHsKK0BAIC00MDIxLDcg KzQwMjEsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9jaGVja19zaGFyaW5nX2FsbG93ZWQoCisgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAgICAgICB9CistICAgIH0gICAgCisr ICAgIH0KKyAgICAgaWYoZ3JvdXBfZGVueSkKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2ZyZWUo Z3JvdXBfZGVueSk7CitAQCAtNDA3OCwxOCArNDA3OCwxOCBAQCBnbG9idXNfbF9nZnNfZGF0YV9h dXRob3JpemUoCisgICAgIGF1dGhfbGV2ZWwgPSBnbG9idXNfaV9nZnNfY29uZmlnX2ludCgiYXV0 aF9sZXZlbCIpOworICAgICBwd19maWxlID0gKGNoYXIgKikgZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19z dHJpbmcoInB3X2ZpbGUiKTsKKyAgICAgcHJvY2Vzc191c2VybmFtZSA9IGdsb2J1c19pX2dmc19j b25maWdfc3RyaW5nKCJwcm9jZXNzX3VzZXIiKTsKKy0gICAgLyogaWYgdGhlcmUgaXMgYSBzdWJq ZWN0IG9yIGRlbCBjcmVkIHdlIGFyZSB1c2luZyBnc2ksIAorKyAgICAvKiBpZiB0aGVyZSBpcyBh IHN1YmplY3Qgb3IgZGVsIGNyZWQgd2UgYXJlIHVzaW5nIGdzaSwKKyAgICAgICAgIGxvb2sgaXQg dXAgaW4gdGhlIGdyaWRtYXAgKi8KKyAgICAgc2hhcmluZ19kbiA9IGdsb2J1c19pX2dmc19jb25m aWdfc3RyaW5nKCJzaGFyaW5nX2RuIik7CisgICAgIG9wLT5zZXNzaW9uX2hhbmRsZS0+c2hhcmlu ZyA9IChzaGFyaW5nX2RuICE9IE5VTEwpOworLSAgICAKKysKKyAgICAgaWYoc2Vzc2lvbl9pbmZv LT5zdWJqZWN0ICE9IE5VTEwgfHwgc2Vzc2lvbl9pbmZvLT5kZWxfY3JlZCAhPSBOVUxMKQorICAg ICB7CisgICAgICAgICBpZihzaGFyaW5nX2RuICYmICFzdHJjbXAoc2hhcmluZ19kbiwgc2Vzc2lv bl9pbmZvLT5zdWJqZWN0KSkKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBpZihzZXNzaW9uX2lu Zm8tPnVzZXJuYW1lICYmIAorLSAgICAgICAgICAgICAgICBzdHJuY21wKHNlc3Npb25faW5mby0+ dXNlcm5hbWUsIAorLSAgICAgICAgICAgICAgICAgICAgR0xPQlVTX1NIQVJJTkdfUFJFRklYLCAK KysgICAgICAgICAgICBpZihzZXNzaW9uX2luZm8tPnVzZXJuYW1lICYmCisrICAgICAgICAgICAg ICAgIHN0cm5jbXAoc2Vzc2lvbl9pbmZvLT51c2VybmFtZSwKKysgICAgICAgICAgICAgICAgICAg IEdMT0JVU19TSEFSSU5HX1BSRUZJWCwKKyAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihHTE9C VVNfU0hBUklOR19QUkVGSVgpKSA9PSAwKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgY2hhciAqICAgICAgICAgICAgICAgICAgdXNyX3RtcDsKK0BAIC00MDk5LDEzICs0MDk5LDEz IEBAIGdsb2J1c19sX2dmc19kYXRhX2F1dGhvcml6ZSgKKyAgICAgICAgICAgICAgICAgZ2xvYnVz X3NpemVfdCAgICAgICAgICAgY2VydF9sZW4gPSAwOworICAgICAgICAgICAgICAgICBjaGFyICog ICAgICAgICAgICAgICAgICB0bXA7CisgICAgICAgICAgICAgICAgIGdsb2J1c19nc2lfY3JlZF9o YW5kbGVfdCB0bXBfY3JlZF9oYW5kbGU7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0gICAgICAgICAgICAgICAgc2hhcmVkX3VzZXJf c3RyID0gCisrCisrICAgICAgICAgICAgICAgIHNoYXJlZF91c2VyX3N0ciA9CisgICAgICAgICAg ICAgICAgICAgICBzZXNzaW9uX2luZm8tPnVzZXJuYW1lICsgc3RybGVuKEdMT0JVU19TSEFSSU5H X1BSRUZJWCk7CisgICAgICAgICAgICAgICAgIHB0ciA9IHNoYXJlZF91c2VyX3N0cjsKKy0gICAg ICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgIGlmKCh1c3JfdG1wID0gZ2xvYnVzX2lf Z2ZzX2t2X2dldHZhbChwdHIsICJVU0VSIiwgMSkpICE9IE5VTEwpCistICAgICAgICAgICAgICAg IHsgICAKKysgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9p bmZvLT5tYXBfdXNlciA9IEdMT0JVU19GQUxTRTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgICBlbHNlCitAQCAtNDExNCw3ICs0MTE0LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFf YXV0aG9yaXplKAorICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9pbmZvLT5tYXBfdXNlciA9 IEdMT0JVU19UUlVFOworICAgICAgICAgICAgICAgICB9CisgCistICAgICAgICAgICAgICAgIGlm KChvcC0+c2Vzc2lvbl9oYW5kbGUtPnNoYXJpbmdfaWQgPSAKKysgICAgICAgICAgICAgICAgaWYo KG9wLT5zZXNzaW9uX2hhbmRsZS0+c2hhcmluZ19pZCA9CisgICAgICAgICAgICAgICAgICAgICBn bG9idXNfaV9nZnNfa3ZfZ2V0dmFsKHB0ciwgIklEIiwgMSkpID09IE5VTEwpCisgICAgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIHJlcyA9IEdsb2J1c0dGU0Vycm9yR2VuZXJp YygKK0BAIC00MTM1LDcgKzQxMzUsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9hdXRob3JpemUoCisg ICAgICAgICAgICAgICAgIH0KKyAKKyAgICAgICAgICAgICAgICAgaWYoKGNydF90bXAgPSBnbG9i dXNfaV9nZnNfa3ZfZ2V0dmFsKHB0ciwgIkNFUlQiLCAwKSkgIT0gTlVMTCkKKy0gICAgICAgICAg ICAgICAgeyAgIAorKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBkZXNp cmVkX3VzZXJfY2VydCA9IG1hbGxvYyhzdHJsZW4oY3J0X3RtcCArIDEpKTsKKyAgICAgICAgICAg ICAgICAgICAgIHJlcyA9IGdsb2J1c19sX2dmc19iYXNlNjRfZGVjb2RlKAorICAgICAgICAgICAg ICAgICAgICAgICAgIChnbG9idXNfYnl0ZV90ICopIGNydF90bXAsCitAQCAtNDE1OCw3ICs0MTU4 LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfYXV0aG9yaXplKAorICAgICAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgICAgICBnb3RvIHB3ZW50X2Vycm9yOworICAgICAgICAgICAgICAgICB9 CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICBnbG9idXNfZ2ZzX2xvZ19t ZXNzYWdlKAorICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0dGU19MT0dfSU5GTywKKyAgICAg ICAgICAgICAgICAgICAgICJETiAlcyBoYXMgcHJvdmlkZWQgc2hhcmluZyBjcmVkZW50aWFscyBm b3IgRE4gJXMuXG4iLAorQEAgLTQxODIsMzEgKzQxODIsMzEgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFf YXV0aG9yaXplKAorICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGFyZ3VtZW50cyBm b3IgIiBHTE9CVVNfU0hBUklOR19QUkVGSVggIi4gTWlzc2luZyBTSEFSRUUuIik7CisgICAgICAg ICAgICAgICAgICAgICBnb3RvIHB3ZW50X2Vycm9yOworICAgICAgICAgICAgICAgICB9CistICAg ICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICBnbG9idXNfZnJlZShzZXNzaW9uX2lu Zm8tPnVzZXJuYW1lKTsKKyAgICAgICAgICAgICAgICAgc2Vzc2lvbl9pbmZvLT51c2VybmFtZSA9 IHVzcl90bXA7CisgCisgICAgICAgICAgICAgICAgIHNoYXJpbmdfYXR0ZW1wdGVkID0gR0xPQlVT X1RSVUU7CistICAgICAgICAgICAgfSAgIAorKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAK Ky0gICAgICAgIGlmKCFzaGFyaW5nX2F0dGVtcHRlZCAmJiBzZXNzaW9uX2luZm8tPnVzZXJuYW1l ICYmIAorLSAgICAgICAgICAgICAgICBzdHJuY21wKHNlc3Npb25faW5mby0+dXNlcm5hbWUsIAor LSAgICAgICAgICAgICAgICAgICAgR0xPQlVTX1NIQVJJTkdfUFJFRklYLCAKKysgICAgICAgIGlm KCFzaGFyaW5nX2F0dGVtcHRlZCAmJiBzZXNzaW9uX2luZm8tPnVzZXJuYW1lICYmCisrICAgICAg ICAgICAgICAgIHN0cm5jbXAoc2Vzc2lvbl9pbmZvLT51c2VybmFtZSwKKysgICAgICAgICAgICAg ICAgICAgIEdMT0JVU19TSEFSSU5HX1BSRUZJWCwKKyAgICAgICAgICAgICAgICAgICAgIHN0cmxl bihHTE9CVVNfU0hBUklOR19QUkVGSVgpKSA9PSAwKQorICAgICAgICAgeworICAgICAgICAgICAg IEdsb2J1c0dGU0Vycm9yR2VuZXJpY1N0cihyZXMsCisgICAgICAgICAgICAgICAgICgiU2hhcmlu ZyBub3QgYWxsb3dlZCB3aXRoIEROICVzIiwgc2Vzc2lvbl9pbmZvLT5zdWJqZWN0KSk7CisgICAg ICAgICAgICAgZ290byBwd2VudF9lcnJvcjsKKyAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAg CisrCisgICAgICAgICBpZighKGF1dGhfbGV2ZWwgJiBHTE9CVVNfTF9HRlNfQVVUSF9OT0dSSURN QVApKQorICAgICAgICAgeworLSAgICAgICAgICAgIGlmKGdsb2J1c19pX2dmc19jb25maWdfYm9v bCgiY2FzIikgJiYgCisrICAgICAgICAgICAgaWYoZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19ib29sKCJj YXMiKSAmJgorICAgICAgICAgICAgICAgICAoY29udGV4dCB8fCBzaGFyaW5nX2F0dGVtcHRlZCkp CisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBnbG9idXNfYm9vbF90ICAgICAgICAg ICBmcmVlX3VzciA9IEdMT0JVU19GQUxTRTsKKy0gICAgICAgICAgICAgICAgCisrCisgICAgICAg ICAgICAgICAgIGlmKHNlc3Npb25faW5mby0+bWFwX3VzZXIpCisgICAgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICAgICAgIHVzciA9IE5VTEw7CitAQCAtNDIxNyw3ICs0MjE3LDcgQEAg Z2xvYnVzX2xfZ2ZzX2RhdGFfYXV0aG9yaXplKAorICAgICAgICAgICAgICAgICB9CisgCisgICAg ICAgICAgICAgICAgICphdXRoel91c3IgPSAnXDAnOworLSAgICAgICAgICAgICAgICAKKysKKyAg ICAgICAgICAgICAgICAgaWYoc2hhcmluZ19hdHRlbXB0ZWQpCisgICAgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICAgICAgIHJlcyA9IGdsb2J1c19nc3NfYXNzaXN0X21hcF9hbmRfYXV0 aG9yaXplX3NoYXJpbmcoCitAQCAtNDIyNiw3ICs0MjI2LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFf YXV0aG9yaXplKAorICAgICAgICAgICAgICAgICAgICAgICAgIHVzciwKKyAgICAgICAgICAgICAg ICAgICAgICAgICBhdXRoel91c3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgVVNFUl9OQU1F X01BWCk7CistICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAgIGds b2J1c19mcmVlKGRlc2lyZWRfdXNlcl9jZXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgIGRlc2ly ZWRfdXNlcl9jZXJ0ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgfQorQEAgLTQ1MTUsNyArNDUx NSw3IEBAIGdsb2J1c19sX2dmc19kYXRhX2F1dGhvcml6ZSgKKyAgICAgICAgIHJlcyA9IEdsb2J1 c0dGU0Vycm9yR2VuZXJpYygiQWNjZXNzIGRlbmllZCBieSBjb25maWd1cmF0aW9uLiIpOworICAg ICAgICAgZ290byBwd2VudF9lcnJvcjsKKyAgICAgfQorLSAgICAKKysKKyAgICAgLyogY2hlY2sg dGhhdCBhY2NvdW50IGlzIG5vdCBkaXNhYmxlZCAqLworICAgICBpZihwd2VudCAmJiAhZ2xvYnVz X2lfZ2ZzX2NvbmZpZ19ib29sKCJhbGxvd19kaXNhYmxlZF9sb2dpbiIpKQorICAgICB7CitAQCAt NDUyNiw3ICs0NTI2LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfYXV0aG9yaXplKAorICAgICAgICAg ICAgIGVycm1zZyA9IGdsb2J1c19lcnJvcl9wcmludF9mcmllbmRseShnbG9idXNfZXJyb3JfcGVl ayhyZXMpKTsKKyAgICAgICAgICAgICBnbG9idXNfZ2ZzX2xvZ19tZXNzYWdlKAorICAgICAgICAg ICAgICAgICBHTE9CVVNfR0ZTX0xPR19FUlIsCistICAgICAgICAgICAgICAgICJBY2Nlc3MgZGVu aWVkIGZvciB1c2VyICclcyc6ICVzXG4iLCAKKysgICAgICAgICAgICAgICAgIkFjY2VzcyBkZW5p ZWQgZm9yIHVzZXIgJyVzJzogJXNcbiIsCisgICAgICAgICAgICAgICAgIHNlc3Npb25faW5mby0+ dXNlcm5hbWUsIGVycm1zZyk7CisgICAgICAgICAgICAgZ2xvYnVzX2ZyZWUoZXJybXNnKTsKKyAg ICAgICAgICAgICByZXMgPSBHbG9idXNHRlNFcnJvckdlbmVyaWMoCitAQCAtNDU2Niw3ICs0NTY2 LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfYXV0aG9yaXplKAorICAgICAgICAgICAgICAgICBnb3Rv IHVpZF9lcnJvcjsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CistICAgICAgICAKKysKKyAK KyAgICAgICAgIGlmKHB3ZW50LT5wd191aWQgPT0gMCAmJiAhZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19i b29sKCJhbGxvd19yb290IikpCisgICAgICAgICB7CitAQCAtNDYyNiwyMyArNDYyNiwyMyBAQCBn bG9idXNfbF9nZnNfZGF0YV9hdXRob3JpemUoCisgCisgICAgICAgICB2YXJfZGlyID0gZ2xvYnVz X2xfZ2ZzX2RhdGFfdXBkYXRlX3Zhcl9wYXRoKAorICAgICAgICAgICAgIG9wLT5zZXNzaW9uX2hh bmRsZSwgY3VzdG9tX2hvbWVfZGlyKTsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAgIG9wLT5z ZXNzaW9uX2hhbmRsZS0+aG9tZV9kaXIgPSB2YXJfZGlyOworICAgICB9CisgICAgIGVsc2UKKyAg ICAgeworLSAgICAgICAgb3AtPnNlc3Npb25faGFuZGxlLT5ob21lX2RpciA9IAorKyAgICAgICAg b3AtPnNlc3Npb25faGFuZGxlLT5ob21lX2RpciA9CisgICAgICAgICAgICAgZ2xvYnVzX2xpYmNf c3RyZHVwKG9wLT5zZXNzaW9uX2hhbmRsZS0+dHJ1ZV9ob21lKTsKKyAgICAgfQorLSAgICAKKysK KyAgICAgaWYoc2hhcmluZ19kbikKKyAgICAgeworICAgICAgICAgY2hhciAqICAgICAgICAgICAg ICAgICAgICAgIHNoYXJpbmdfc3RhdGU7CistICAgICAgICAKKysKKyAgICAgICAgIHNoYXJpbmdf c3RhdGUgPSBnbG9idXNfaV9nZnNfY29uZmlnX3N0cmluZygic2hhcmluZ19zdGF0ZV9kaXIiKTsK Ky0gICAgICAgIG9wLT5zZXNzaW9uX2hhbmRsZS0+c2hhcmluZ19zdGF0ZV9kaXIgPSAKKysgICAg ICAgIG9wLT5zZXNzaW9uX2hhbmRsZS0+c2hhcmluZ19zdGF0ZV9kaXIgPQorICAgICAgICAgICAg IGdsb2J1c19sX2dmc19kYXRhX3VwZGF0ZV92YXJfcGF0aCgKKy0gICAgICAgICAgICAgICAgb3At PnNlc3Npb25faGFuZGxlLCAKKysgICAgICAgICAgICAgICAgb3AtPnNlc3Npb25faGFuZGxlLAor ICAgICAgICAgICAgICAgICBzaGFyaW5nX3N0YXRlID8gc2hhcmluZ19zdGF0ZSA6ICIkSE9NRS8u Z2xvYnVzL3NoYXJpbmciKTsKKyAKKyAgICAgICAgIGlmKCFvcC0+c2Vzc2lvbl9oYW5kbGUtPnNo YXJpbmdfc3RhdGVfZGlyKQorQEAgLTQ2NTAsNyArNDY1MCw3IEBAIGdsb2J1c19sX2dmc19kYXRh X2F1dGhvcml6ZSgKKyAgICAgICAgICAgICByZXMgPSBHbG9idXNHRlNFcnJvck1lbW9yeSgic2hh cmluZyBzdGF0ZSBkaXIiKTsKKyAgICAgICAgICAgICBnb3RvIHB3ZW50X2Vycm9yOworICAgICAg ICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBpZihzaGFyaW5nX2F0dGVtcHRlZCkKKyAgICAg ICAgIHsKKyAgICAgICAgICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgc2hhcmVfcGF0 aCA9IE5VTEw7CitAQCAtNDY2NSw3ICs0NjY1LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfYXV0aG9y aXplKAorICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9pbmZvLT51c2VybmFtZSkpOworICAg ICAgICAgICAgICAgICBnb3RvIHB3ZW50X2Vycm9yOworICAgICAgICAgICAgIH0KKy0gICAgIAor KworICAgICAgICAgICAgIHNoYXJlX2ZpbGUgPSBnbG9idXNfY29tbW9uX2NyZWF0ZV9zdHJpbmco CisgICAgICAgICAgICAgICAgICIlcy9zaGFyZS0lcyIsCisgICAgICAgICAgICAgICAgIG9wLT5z ZXNzaW9uX2hhbmRsZS0+c2hhcmluZ19zdGF0ZV9kaXIsCitAQCAtNDc0NSwxNiArNDc0NSwxNiBA QCBnbG9idXNfbF9nZnNfZGF0YV9hdXRob3JpemUoCisgICAgICAgICAgICAgfQorICAgICAgICAg ICAgIGdsb2J1c19mcmVlKHNoYXJlX2ZpbGUpOworICAgICAgICAgICAgIHNoYXJlX2ZpbGUgPSBO VUxMOworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIGdsb2J1c19nZnNfbG9nX21lc3Nh Z2UoCisgICAgICAgICAgICAgICAgIEdMT0JVU19HRlNfTE9HX0lORk8sCisgICAgICAgICAgICAg ICAgICJBY2Nlc3MgYWxsb3dlZCBmb3Igc2hhcmluZyBvZiB1c2VyICclcycgZnJvbSBzaGFyZSBp ZCAnJXMnLiAgIgorICAgICAgICAgICAgICAgICAiU2hhcmVlICclcycgaXMgcmVzdHJpY3RlZCB0 byAnJXMnLlxuIiwKKy0gICAgICAgICAgICAgICAgc2Vzc2lvbl9pbmZvLT51c2VybmFtZSwgCist ICAgICAgICAgICAgICAgIG9wLT5zZXNzaW9uX2hhbmRsZS0+c2hhcmluZ19pZCwgCistICAgICAg ICAgICAgICAgIG9wLT5zZXNzaW9uX2hhbmRsZS0+c2hhcmluZ19zaGFyZWUsIAorKyAgICAgICAg ICAgICAgICBzZXNzaW9uX2luZm8tPnVzZXJuYW1lLAorKyAgICAgICAgICAgICAgICBvcC0+c2Vz c2lvbl9oYW5kbGUtPnNoYXJpbmdfaWQsCisrICAgICAgICAgICAgICAgIG9wLT5zZXNzaW9uX2hh bmRsZS0+c2hhcmluZ19zaGFyZWUsCisgICAgICAgICAgICAgICAgIG9wLT5zZXNzaW9uX2hhbmRs ZS0+Y2hyb290X3BhdGgpOworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIGlmKG9wLT5z ZXNzaW9uX2hhbmRsZS0+Y2hyb290X3BhdGhbMV0gPT0gJ1wwJykKKyAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgIGdsb2J1c19mcmVlKG9wLT5zZXNzaW9uX2hhbmRsZS0+Y2hyb290X3Bh dGgpOworQEAgLTQ3NzIsMTMgKzQ3NzIsMTMgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfYXV0aG9yaXpl KAorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgdG1wX3Jlc3RyaWN0ID0gZ2xvYnVz X2NvbW1vbl9jcmVhdGVfc3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgIlJXLyxOJXMsTn4v LioiLCBvcC0+c2Vzc2lvbl9oYW5kbGUtPnNoYXJpbmdfc3RhdGVfZGlyKTsKKy0gICAgICAgICAg ICB9ICAgIAorKyAgICAgICAgICAgIH0KKyAjaWZkZWYgV0lOMzIKKyAgICAgICAgICAgICBpZihz dHJzdHIodG1wX3Jlc3RyaWN0LCAiOi8iKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgIHRwOworICAgICAgICAgICAgICAgICB0cCA9IHN0 cnN0cih0bXBfcmVzdHJpY3QsICI6LyIpOworLSAgICAgICAgICAgICAgICB0cC0tOyAKKysgICAg ICAgICAgICAgICAgdHAtLTsKKyAgICAgICAgICAgICAgICAgdHBbMV0gPSB0cFswXTsKKyAgICAg ICAgICAgICAgICAgdHBbMF0gPSAnLyc7CisgICAgICAgICAgICAgfQorQEAgLTQ3ODgsMTggKzQ3 ODgsMTggQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfYXV0aG9yaXplKAorICAgICAgICAgICAgIHdoaWxl KCFnbG9idXNfbGlzdF9lbXB0eSh0bXBfbGlzdCkpCisgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICBnbG9idXNfbGlzdF9pbnNlcnQoCistICAgICAgICAgICAgICAgICAgICAmZ2xvYnVz X2xfZ2ZzX3BhdGhfYWxpYXNfbGlzdF9zaGFyaW5nLCAKKysgICAgICAgICAgICAgICAgICAgICZn bG9idXNfbF9nZnNfcGF0aF9hbGlhc19saXN0X3NoYXJpbmcsCisgICAgICAgICAgICAgICAgICAg ICBnbG9idXNfbGlzdF9yZW1vdmUoJnRtcF9saXN0LCB0bXBfbGlzdCkpOworICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICBnbG9idXNfZnJlZSh0bXBfcmVzdHJpY3QpOworLSAgICAgICAgICAg IAorKworICAgICAgICAgICAgIGlmKHJlcyAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgIGdvdG8gcHdlbnRfZXJyb3I7CisgICAgICAgICAgICAgfQor ICAgICAgICAgfQorICAgICB9CistICAgIAorKworICAgICBnbG9idXNfbF9nZnNfZGF0YV91cGRh dGVfcmVzdHJpY3RlZF9wYXRocygKKyAgICAgICAgIG9wLT5zZXNzaW9uX2hhbmRsZSwgJmdsb2J1 c19sX2dmc19wYXRoX2FsaWFzX2xpc3RfYmFzZSk7CisgICAgIGdsb2J1c19sX2dmc19kYXRhX3Vw ZGF0ZV9yZXN0cmljdGVkX3BhdGhzKAorQEAgLTQ4MjEsOCArNDgyMSw4IEBAIGdsb2J1c19sX2dm c19kYXRhX2F1dGhvcml6ZSgKKyAgICAgeworICAgICAgICAgb3AtPnNlc3Npb25faGFuZGxlLT5h Y3RpdmVfcnBfbGlzdCA9ICZnbG9idXNfbF9nZnNfcGF0aF9hbGlhc19saXN0X2Jhc2U7CisgICAg IH0KKy0gICAgICAgCistICAgIGlmKCFnbG9idXNfaV9nZnNfY29uZmlnX2Jvb2woInVzZV9ob21l X2RpcnMiKSB8fCAKKysKKysgICAgaWYoIWdsb2J1c19pX2dmc19jb25maWdfYm9vbCgidXNlX2hv bWVfZGlycyIpIHx8CisgICAgICAgICBvcC0+c2Vzc2lvbl9oYW5kbGUtPmhvbWVfZGlyID09IE5V TEwpCisgICAgIHsKKyAgICAgICAgIGlmKG9wLT5zZXNzaW9uX2hhbmRsZS0+aG9tZV9kaXIpCitA QCAtNDgzMCwyMiArNDgzMCwyMiBAQCBnbG9idXNfbF9nZnNfZGF0YV9hdXRob3JpemUoCisgICAg ICAgICAgICAgZ2xvYnVzX2ZyZWUob3AtPnNlc3Npb25faGFuZGxlLT5ob21lX2Rpcik7CisgICAg ICAgICB9CisgICAgICAgICBvcC0+c2Vzc2lvbl9oYW5kbGUtPmhvbWVfZGlyID0gc3RyZHVwKCIv Iik7CistICAgIH0gIAorKyAgICB9CisgCisgICAgIGlmKG9wLT5zZXNzaW9uX2hhbmRsZS0+cmVh bF91c2VybmFtZSA9PSBOVUxMKQorICAgICB7CistCWlmKHB3ZW50KQorKyAgICAgICAgaWYocHdl bnQpCisgICAgICAgICB7CistICAgICAgICAgICAgb3AtPnNlc3Npb25faGFuZGxlLT5yZWFsX3Vz ZXJuYW1lID0gCisrICAgICAgICAgICAgb3AtPnNlc3Npb25faGFuZGxlLT5yZWFsX3VzZXJuYW1l ID0KKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2xpYmNfc3RyZHVwKHB3ZW50LT5wd19uYW1lKTsK KyAgICAgICAgIH0KKyAgICAgICAgIGVsc2UKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBvcC0+ c2Vzc2lvbl9oYW5kbGUtPnJlYWxfdXNlcm5hbWUgPSAKKysgICAgICAgICAgICBvcC0+c2Vzc2lv bl9oYW5kbGUtPnJlYWxfdXNlcm5hbWUgPQorICAgICAgICAgICAgICAgICBnbG9idXNfbGliY19z dHJkdXAob3AtPnNlc3Npb25faGFuZGxlLT51c2VybmFtZSk7CisgICAgICAgICB9CisgICAgIH0K Ky0gICAgCQorKworICAgICBnbG9idXNfZ2ZzX2xvZ19ldmVudCgKKyAgICAgICAgIEdMT0JVU19H RlNfTE9HX0lORk8sCisgICAgICAgICBHTE9CVVNfR0ZTX0xPR19FVkVOVF9FTkQsCitAQCAtNDk5 Miw3ICs0OTkyLDcgQEAgZ2xvYnVzX2xfZ2ZzX2xvYWRfc2FmZSgKKyAgICAgICAgICAgICAgICAg R0xPQlVTX0dGU19MT0dfRVJSLAorICAgICAgICAgICAgICAgICAiU29tZSBuZXR3b3JrIHN0YWNr IGRyaXZlcnMgZmFpbGVkIHRvIGxvYWQ6ICVzXG4iLAorICAgICAgICAgICAgICAgICBtc2cgPSBn bG9idXNfZXJyb3JfcHJpbnRfZnJpZW5kbHkoZ2xvYnVzX2Vycm9yX3BlZWsocmVzdWx0KSkpOwor LSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBpZihtc2cpCisgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICBnbG9idXNfZnJlZShtc2cpOworQEAgLTUwNzEsNyArNTA3MSw3 IEBAIGdsb2J1c19pX2dmc19kYXRhX2RzaV9jaGVja3N1bV9zdXBwb3J0KAorIH0KKyAKKyAKKy1j aGFyICogICAgCisrY2hhciAqCisgZ2xvYnVzX2lfZ2ZzX2RhdGFfZHNpX3ZlcnNpb24oKQorIHsK KyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmM7CitAQCAtNTA4MCwx NSArNTA4MCwxNSBAQCBnbG9idXNfaV9nZnNfZGF0YV9kc2lfdmVyc2lvbigpCisgICAgIEdsb2J1 c0dGU05hbWUoZ2xvYnVzX2lfZ2ZzX2RhdGFfaW5pdCk7CisgICAgIEdsb2J1c0dGU0RlYnVnRW50 ZXIoKTsKKyAKKy0gICAgCisrCisgICAgIHJjID0gZ2xvYnVzX2V4dGVuc2lvbl9nZXRfbW9kdWxl X3ZlcnNpb24oCisgICAgICAgICBnbG9idXNfbF9nZnNfYWN0aXZlX2RzaV9oYW5kbGUsICZ2ZXJz aW9uKTsKKyAgICAgaWYocmMgPT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIHN0 ciA9IGdsb2J1c19jb21tb25fY3JlYXRlX3N0cmluZygKKy0gICAgICAgICAgICAiJXMtJWQuJWQi LCAKKy0gICAgICAgICAgICBnbG9idXNfbF9nZnNfYWN0aXZlX2RzaV9uYW1lLCAKKy0gICAgICAg ICAgICB2ZXJzaW9uLm1ham9yLCAKKysgICAgICAgICAgICAiJXMtJWQuJWQiLAorKyAgICAgICAg ICAgIGdsb2J1c19sX2dmc19hY3RpdmVfZHNpX25hbWUsCisrICAgICAgICAgICAgdmVyc2lvbi5t YWpvciwKKyAgICAgICAgICAgICB2ZXJzaW9uLm1pbm9yKTsKKyAgICAgfQorIAorQEAgLTUxMDcs MTkgKzUxMDcsMTkgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfaW5pdCgpCisgCisgICAgIGdsb2J1c19l eHRlbnNpb25fcmVnaXN0ZXJfYnVpbHRpbnMobG9jYWxfZXh0ZW5zaW9ucyk7CisgCistICAgIGds b2J1c19sX2dmc19hY3RpdmVfZHNpX25hbWUgPSAKKysgICAgZ2xvYnVzX2xfZ2ZzX2FjdGl2ZV9k c2lfbmFtZSA9CisgICAgICAgICBnbG9idXNfaV9nZnNfY29uZmlnX3N0cmluZygibG9hZF9kc2lf bW9kdWxlIik7CisgCisgICAgIHJlc3VsdCA9IGdsb2J1c19pX2dmc19kYXRhX25ld19kc2koCist ICAgICAgICAmZ2xvYnVzX2xfZ2ZzX2FjdGl2ZV9kc2lfaGFuZGxlLCAKKysgICAgICAgICZnbG9i dXNfbF9nZnNfYWN0aXZlX2RzaV9oYW5kbGUsCisgICAgICAgICBnbG9idXNfbF9nZnNfYWN0aXZl X2RzaV9uYW1lLAorLSAgICAgICAgJmdsb2J1c19sX2dmc19kc2ksIAorKyAgICAgICAgJmdsb2J1 c19sX2dmc19kc2ksCisgICAgICAgICBHTE9CVVNfRkFMU0UpOworIAorICAgICBpZihyZXN1bHQg IT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19nZnNfbG9nX2V4aXRf bWVzc2FnZSgKKy0gICAgICAgICAgICJDb3VsZG4ndCBsb2FkICclcycuICVzXG4iLCBnbG9idXNf bF9nZnNfYWN0aXZlX2RzaV9uYW1lLCAKKysgICAgICAgICAgICJDb3VsZG4ndCBsb2FkICclcycu ICVzXG4iLCBnbG9idXNfbF9nZnNfYWN0aXZlX2RzaV9uYW1lLAorICAgICAgICAgICAgICAgICBn bG9idXNfZXJyb3JfcHJpbnRfZnJpZW5kbHkoZ2xvYnVzX2Vycm9yX3BlZWsocmVzdWx0KSkpOwor ICAgICAgICAgZXhpdCgxKTsKKyAgICAgfQorQEAgLTUxNTgsNyArNTE1OCw3IEBAIGdsb2J1c19p X2dmc19kYXRhX2luaXQoKQorICAgICB7CisgICAgICAgICByZXN1bHQgPSBnbG9idXNfbF9nZnNf ZGF0YV9wYXJzZV9yZXN0cmljdGVkX3BhdGhzKAorICAgICAgICAgICAgIE5VTEwsIHJlc3RyaWN0 X3BhdGgsICZnbG9idXNfbF9nZnNfcGF0aF9hbGlhc19saXN0X3NoYXJpbmcsIDApOworLSAgICAg ICAgICAgIAorKworICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICAg ICAgeworICAgICAgICAgICAgIGdsb2J1c19nZnNfbG9nX2V4aXRfcmVzdWx0KCJFcnJvciBwYXJz aW5nIHNoYXJpbmcgcmVzdHJpY3RlZCBwYXRocyIsIHJlc3VsdCk7CitAQCAtNTE3MSw3ICs1MTcx LDcgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfaW5pdCgpCisgICAgICAgICB7CisgICAgICAgICAgICAg cmVzdWx0ID0gZ2xvYnVzX2xfZ2ZzX2RhdGFfcGFyc2VfcmVzdHJpY3RlZF9wYXRocygKKyAgICAg ICAgICAgICAgICAgTlVMTCwgcmVzdHJpY3RfcGF0aCwgJmdsb2J1c19sX2dmc19wYXRoX2FsaWFz X2xpc3Rfc2hhcmluZywgMCk7CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgIGlm KHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgIGdsb2J1c19nZnNfbG9nX2V4aXRfcmVzdWx0KCJFcnJvciBwYXJzaW5nIHJlc3RyaWN0ZWQg cGF0aHMiLCByZXN1bHQpOworQEAgLTUxODQsMTQgKzUxODQsMTQgQEAgZ2xvYnVzX2lfZ2ZzX2Rh dGFfaW5pdCgpCisgICAgIHsKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX2dmc19kYXRhX3Bh cnNlX3Jlc3RyaWN0ZWRfcGF0aHMoCisgICAgICAgICAgICAgTlVMTCwgcmVzdHJpY3RfcGF0aCwg Jmdsb2J1c19sX2dmc19wYXRoX2FsaWFzX2xpc3RfYmFzZSwgMCk7CistICAgICAgICAgICAgCisr CisgICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICB7CisgICAg ICAgICAgICAgZ2xvYnVzX2dmc19sb2dfZXhpdF9yZXN1bHQoIkVycm9yIHBhcnNpbmcgcmVzdHJp Y3RlZCBwYXRocyIsIHJlc3VsdCk7CisgICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgIH0K KyAgICAgfQorLSAgICAKKysKKyAgICAgaWYoZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19ib29sKCJpbmV0 ZCIpKQorICAgICB7CisgICAgICAgICBnbG9idXNfbF9nZnNfd2F0Y2hkb2dfbGltaXQgPSBnbG9i dXNfaV9nZnNfY29uZmlnX2ludCgiY29udHJvbF9pZGxlX3RpbWVvdXQiKTsKK0BAIC01MjAwLDMw ICs1MjAwLDMwIEBAIGdsb2J1c19pX2dmc19kYXRhX2luaXQoKQorICAgICAgICAgICAgIGdsb2J1 c19sX2dmc193YXRjaGRvZ19saW1pdCA9IDMwMDsKKyAgICAgICAgIH0KKyAgICAgfQorLSAgICAK KysKKyAgICAgaWYoZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19ib29sKCJhbGxvd191ZHQiKSkKKyAgICAg eworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19kcml2ZXJfbG9hZCgidWR0IiwgJmdsb2J1 c19sX2dmc191ZHRfZHJpdmVyX3ByZWxvYWQpOworICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JV U19TVUNDRVNTKQorICAgICAgICAgeworICAgICAgICAgICAgIGdsb2J1c19nZnNfbG9nX3Jlc3Vs dCgKKy0gICAgICAgICAgICAgICAgR0xPQlVTX0dGU19MT0dfSU5GTywgCisrICAgICAgICAgICAg ICAgIEdMT0JVU19HRlNfTE9HX0lORk8sCisgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gbG9h ZCBVRFQgZHJpdmVyIiwgcmVzdWx0KTsKKyAgICAgICAgICAgICBnbG9idXNfZ2ZzX2NvbmZpZ19z ZXRfYm9vbCgiYWxsb3dfdWR0IiwgR0xPQlVTX0ZBTFNFKTsKKyAgICAgICAgIH0KKyAgICAgfQor LSAgICAKKysKKyAgICAgaWYoKGdsb2J1c19pX2dmc19jb25maWdfc3RyaW5nKCJuZXRtZ3IiKSkg IT0gTlVMTCkKKyAgICAgeworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19kcml2ZXJfbG9h ZCgibmV0X21hbmFnZXIiLCAmZ2xvYnVzX2xfZ2ZzX25ldG1ncl9kcml2ZXIpOworICAgICAgICAg aWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICAgICAgeworICAgICAgICAgICAgIGds b2J1c19nZnNfbG9nX3Jlc3VsdCgKKy0gICAgICAgICAgICAgICAgR0xPQlVTX0dGU19MT0dfSU5G TywgCisrICAgICAgICAgICAgICAgIEdMT0JVU19HRlNfTE9HX0lORk8sCisgICAgICAgICAgICAg ICAgICJVbmFibGUgdG8gbG9hZCBOZXR3b3JrIE1hbmFnZXIgZHJpdmVyIiwgcmVzdWx0KTsKKyAg ICAgICAgIH0KKy0gICAgfSAgICAKKy0gICAgCisrICAgIH0KKysKKyAgICAgR2xvYnVzR0ZTRGVi dWdFeGl0KCk7CisgfQorIAorQEAgLTU0NTQsNyArNTQ1NCw3IEBAIGdsb2J1c19sX2dmc19kYXRh X3N0YXRfa2lja291dCgKKyAgICAgeworICAgICAgICAgcmVwbHkuY29kZSA9IDEwMDsKKyAgICAg fQorLSAgICAgICAgCisrCisgICAgIHJlcGx5LnR5cGUgPSBHTE9CVVNfR0ZTX09QX1NUQVQ7Cisg ICAgIHJlcGx5LmlkID0gYm91bmNlX2luZm8tPm9wLT5pZDsKKyAgICAgcmVwbHkucmVzdWx0ID0g Ym91bmNlX2luZm8tPmVycm9yID8KK0BAIC01NDY2LDcgKzU0NjYsNyBAQCBnbG9idXNfbF9nZnNf ZGF0YV9zdGF0X2tpY2tvdXQoCisgICAgIHJlcGx5LmluZm8uc3RhdC5naWRfYXJyYXkgPSAoaW50 ICopYm91bmNlX2luZm8tPm9wLT5zZXNzaW9uX2hhbmRsZS0+Z2lkX2FycmF5OworIAorICAgICAv KiBwdWxsIHJlc3BvbnNlIGNvZGUgZnJvbSBlcnJvciAqLworLSAgICBpZihib3VuY2VfaW5mby0+ ZmluYWxfc3RhdCAmJiByZXBseS5yZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MgJiYgCisrICAgIGlm KGJvdW5jZV9pbmZvLT5maW5hbF9zdGF0ICYmIHJlcGx5LnJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VT UyAmJgorICAgICAgICAgKGNvZGUgPSBnbG9idXNfZ2ZzX2Vycm9yX2dldF9mdHBfcmVzcG9uc2Vf Y29kZSgKKyAgICAgICAgICAgICBnbG9idXNfZXJyb3JfcGVlayhyZXBseS5yZXN1bHQpKSkgIT0g MCkKKyAgICAgeworQEAgLTU0OTksMTMgKzU0OTksMTMgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfc3Rh dF9raWNrb3V0KAorICAgICAgICAgICAgICAgICBib3VuY2VfaW5mby0+b3AtPnNlc3Npb25faGFu ZGxlLCBib3VuY2VfaW5mby0+b3AtPmRhdGFfaGFuZGxlKTsKKyAgICAgICAgIH0KKyAgICAgICAg IGdsb2J1c19tdXRleF91bmxvY2soJmJvdW5jZV9pbmZvLT5vcC0+c2Vzc2lvbl9oYW5kbGUtPm11 dGV4KTsKKy0gICAgCisrCisgICAgICAgICBnbG9idXNfYXNzZXJ0KGRlc3Ryb3lfb3ApOworICAg ICAgICAgZ2xvYnVzX2xfZ2ZzX2RhdGFfZmlyZV9jYigKKyAgICAgICAgICAgICBib3VuY2VfaW5m by0+b3AsIHJlbW90ZV9kYXRhX2FyZywgZGVzdHJveV9zZXNzaW9uKTsKKyAgICAgICAgIGdsb2J1 c19sX2dmc19kYXRhX29wZXJhdGlvbl9kZXN0cm95KGJvdW5jZV9pbmZvLT5vcCk7CisgICAgIH0K Ky0gICAgCisrCisgICAgIGlmKGJvdW5jZV9pbmZvLT5zdGF0X2FycmF5KQorICAgICB7CisgICAg ICAgICBmb3IoaSA9IDA7IGkgPCBib3VuY2VfaW5mby0+c3RhdF9jb3VudDsgaSsrKQorQEAgLTU1 NjMsNyArNTU2Myw3IEBAIGdsb2J1c19sX2dmc19kYXRhX2FwcHJvdmVfcG9wZW4oCisgICAgICAg ICAgICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JHZW5lcmljKCJzbWFsbCBtYWxsb2MgZmFpbHVy ZS4iKTsKKyAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgfQorLSAgICAgICAgCisr CisgICAgICAgICBlbmQgPSBjbWQ7CisgICAgICAgICB3aGlsZShlbmQgJiYgKHB0ciA9IHN0cnN0 cihlbmQsICJwb3BlbjoiKSkpCisgICAgICAgICB7CitAQCAtNTU3NCwyMyArNTU3NCwyMyBAQCBn bG9idXNfbF9nZnNfZGF0YV9hcHByb3ZlX3BvcGVuKAorICAgICAgICAgICAgICAgICByZXN1bHQg PSBHbG9idXNHRlNFcnJvckdlbmVyaWMoInBvcGVuIGFyZ3Ygbm90IHN1cHBsaWVkLiIpOworICAg ICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAg ICAgCisrCisgICAgICAgICAgICAgcHRyICs9IDU7CistICAgIAorKworICAgICAgICAgICAgIGRl bGltID0gKnB0cjsKKy0gICAgICAgICAgICAqcHRyID0gJ1wwJzsgICAgICAgIAorKyAgICAgICAg ICAgICpwdHIgPSAnXDAnOworICAgICAgICAgICAgIHB0cisrOworLSAgICAgICAgCisrCisgICAg ICAgICAgICAgZW5kY2hhcnNbMF0gPSBkZWxpbTsKKyAgICAgICAgICAgICBlbmQgPSBzdHJwYnJr KHB0ciwgZW5kY2hhcnMpOworLSAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgaWYoZW5k ICE9IE5VTEwpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBlbmRfZGVsaW0gPSAq ZW5kOworICAgICAgICAgICAgICAgICAqZW5kID0gJ1wwJzsKKyAgICAgICAgICAgICAgICAgZW5k Kys7CisgICAgICAgICAgICAgfQorLSAgICAKKysKKyAgICAgICAgICAgICBmb3IoZm91bmQgPSBH TE9CVVNfRkFMU0UsCisgICAgICAgICAgICAgICAgIGxpc3QgPSAoZ2xvYnVzX2xpc3RfdCAqKSBn bG9idXNfaV9nZnNfY29uZmlnX2dldCgicG9wZW5fbGlzdCIpOworICAgICAgICAgICAgICAgICAh Z2xvYnVzX2xpc3RfZW1wdHkobGlzdCkgJiYgIWZvdW5kOworQEAgLTU2MDgsMTQgKzU2MDgsMTQg QEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfYXBwcm92ZV9wb3BlbigKKyAgICAgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IHN0cmxlbihhbGlhcyk7CisgICAgICAgICAgICAg ICAgICAgICBwcm9nID0gYWxpYXM7CistICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgICBpZigoc3RybmNtcChhbGlhcywgcHRyLCBzaXpl KSA9PSAwICYmIHN0cmxlbihwdHIpID09IHNpemUpIHx8CisgICAgICAgICAgICAgICAgICAgICBz dHJjbXAocHJvZywgcHRyKSA9PSAwKQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICAgICBmb3VuZCA9IEdMT0JVU19UUlVFOworICAgICAgICAgICAgICAgICB9CistICAgICAg ICAgICAgfSAKKysgICAgICAgICAgICB9CisgICAgICAgICAgICAgaWYoZm91bmQpCisgICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgICBpZihhY2Nlc3MocHJvZywgUl9PSyB8IFhfT0spIDwg MCkKK0BAIC01NjM5LDcgKzU2MzksNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9hcHByb3ZlX3BvcGVu KAorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg ICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgdG1wID0gZ2xvYnVzX2NvbW1vbl9jcmVhdGVf c3RyaW5nKCIlcyVzJWMlcyIsIAorKyAgICAgICAgICAgICAgICAgICAgdG1wID0gZ2xvYnVzX2Nv bW1vbl9jcmVhdGVfc3RyaW5nKCIlcyVzJWMlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg b3V0ID8gb3V0IDogIiIsIHN0YXJ0LCBkZWxpbSwgcHJvZyk7CisgICAgICAgICAgICAgICAgICAg ICBpZihvdXQpCisgICAgICAgICAgICAgICAgICAgICB7CitAQCAtNTY2OCw5ICs1NjY4LDkgQEAg Z2xvYnVzX2xfZ2ZzX2RhdGFfYXBwcm92ZV9wb3BlbigKKyAKKyAgICAgICAgIGdsb2J1c19mcmVl KGNtZCk7CisgICAgIH0KKy0gICAgCisrCisgICAgICpvdXRfY21kID0gb3V0OworLSAgICAKKysK KyAgICAgR2xvYnVzR0ZTRGVidWdFeGl0KCk7CisgICAgIHJldHVybiByZXN1bHQ7CisgCitAQCAt NTcwMiw3ICs1NzAyLDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfbG9hZF9zdGFjaygKKyAgICAgZ2xv YnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gR0xPQlVTX1NVQ0NFU1M7 CisgICAgIEdsb2J1c0dGU05hbWUoZ2xvYnVzX2xfZ2ZzX2RhdGFfbG9hZF9zdGFjayk7CisgICAg IEdsb2J1c0dGU0RlYnVnRW50ZXIoKTsKKy0gICAgCisrCisgICAgIGlmKCpkcml2ZXJfbGlzdF9v dXQpCisgICAgIHsKKyAgICAgICAgIGdsb2J1c194aW9fZHJpdmVyX2xpc3RfZGVzdHJveSgqZHJp dmVyX2xpc3Rfb3V0LCBHTE9CVVNfRkFMU0UpOworQEAgLTU3MTAsMTQgKzU3MTAsMTQgQEAgZ2xv YnVzX2xfZ2ZzX2RhdGFfbG9hZF9zdGFjaygKKyAgICAgfQorIAorICAgICBpZihzdHJjYXNlY21w KGRyaXZlcl9zdHJpbmdfaW4sICJkZWZhdWx0IikgPT0gMCkKKy0gICAgeyAgICAgICAgCisrICAg IHsKKyAgICAgICAgIGRyaXZlcl9zdHJpbmcgPSBkZWZhdWx0X3N0YWNrOworICAgICB9CisgICAg IGVsc2UKKyAgICAgeworICAgICAgICAgZHJpdmVyX3N0cmluZyA9IGRyaXZlcl9zdHJpbmdfaW47 CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKGRyaXZlcl9zdHJpbmcpCisgICAgIHsKKyAgICAg ICAgIHJlc3VsdCA9IGdsb2J1c19sX2dmc19kYXRhX2FwcHJvdmVfcG9wZW4oCitAQCAtNTczMyw5 ICs1NzMzLDkgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfbG9hZF9zdGFjaygKKyAgICAgICAgICAgICAg ICAgcGFyc2VkX2RyaXZlcl9zdHJpbmcsCisgICAgICAgICAgICAgICAgIGRyaXZlcl9saXN0X291 dCwKKyAgICAgICAgICAgICAgICAgYWxsb3dlZF9kcml2ZXJzKTsKKy0gICAgICAgICAgICAKKysK KyAgICAgICAgICAgICBnbG9idXNfZnJlZShwYXJzZWRfZHJpdmVyX3N0cmluZyk7CistICAgICAg ICAgICAgCisrCisgICAgICAgICAgICAgaWYoc3Vic3RfaW9fZHJpdmVycykKKyAgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgIGdsb2J1c194aW9fZHJpdmVyX2xpc3RfZW50X3QgKiAgICAg IGVudDsKK0BAIC01NzY0LDcgKzU3NjQsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9sb2FkX3N0YWNr KAorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQorLSAgICAKKysKKyAgICAgR2xv YnVzR0ZTRGVidWdFeGl0KCk7CisgICAgIHJldHVybiByZXN1bHQ7CisgfQorQEAgLTU4NjcsMTQg KzU4NjcsMTQgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfcmVxdWVzdF9jb21tYW5kKAorICAgICAgICAg ICAgIGVsc2UgaWYoc3RyY2FzZWNtcChjbWRfaW5mby0+Y2tzbV9hbGcsICJQIikgPT0gMCkKKyAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgIGRj c2NfbGVuOworLSAgICAgICAgICAgICAgICBPTV91aW50MzIgICAgICAgICAgICAgICBtYWpvcl9z dGF0dXM7IAorKyAgICAgICAgICAgICAgICBPTV91aW50MzIgICAgICAgICAgICAgICBtYWpvcl9z dGF0dXM7CisgICAgICAgICAgICAgICAgIE9NX3VpbnQzMiAgICAgICAgICAgICAgIG1pbm9yX3N0 YXR1czsKKy0gICAgICAgICAgICAgICAgZ3NzX2J1ZmZlcl9kZXNjICAgICAgICAgYnVmOyAKKysg ICAgICAgICAgICAgICAgZ3NzX2J1ZmZlcl9kZXNjICAgICAgICAgYnVmOworICAgICAgICAgICAg ICAgICBnc3NfY3JlZF9pZF90ICAgICAgICAgICBjcmVkOworLSAgICAgICAgICAgICAgICAKKysK KyAgICAgICAgICAgICAgICAgZGNzY19sZW4gPSBzdHJsZW4oY21kX2luZm8tPnBhdGhuYW1lKTsK KyAgICAgICAgICAgICAgICAgYnVmLnZhbHVlID0gY2FsbG9jKDEsIGRjc2NfbGVuKTsKKy0gICAg ICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgIHJjID0gZ2xvYnVzX2xfZ2ZzX2Jhc2U2 NF9kZWNvZGUoCisgICAgICAgICAgICAgICAgICAgICAoZ2xvYnVzX2J5dGVfdCAqKSBjbWRfaW5m by0+cGF0aG5hbWUsIGJ1Zi52YWx1ZSwgJmRjc2NfbGVuKTsKKyAgICAgICAgICAgICAgICAgaWYo cmMgIT0gR0xPQlVTX1NVQ0NFU1MpCitAQCAtNTg4NCw3ICs1ODg0LDcgQEAgZ2xvYnVzX2lfZ2Zz X2RhdGFfcmVxdWVzdF9jb21tYW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlk IGJhc2U2NCBpbnB1dCBmb3IgY3JlZGVudGlhbCB0eXBlIFAuIik7CisgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICB7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg ICBidWYubGVuZ3RoID0gc3RybGVuKGJ1Zi52YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICBt YWpvcl9zdGF0dXMgPSBnc3NfaW1wb3J0X2NyZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAg Jm1pbm9yX3N0YXR1cywKK0BAIC01OTA4LDcgKzU5MDgsNyBAQCBnbG9idXNfaV9nZnNfZGF0YV9y ZXF1ZXN0X2NvbW1hbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzc19yZWxlYXNl X2NyZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWluX3JjLCAmb3AtPnNl c3Npb25faGFuZGxlLT5kY3NjX2NyZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKy0g ICAgICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcC0+ c2Vzc2lvbl9oYW5kbGUtPmRjc2NfY3JlZCA9IGNyZWQ7CisgICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgIH0KK0BAIC01OTI2LDcgKzU5MjYsNyBAQCBnbG9idXNfaV9nZnNf ZGF0YV9yZXF1ZXN0X2NvbW1hbmQoCisgICAgICAgICAgICAgZ2xvYnVzX2J5dGVfdCAqICAgICAg ICAgICAgICAgICAgICAgdG1wX3ZhbDsKKyAgICAgICAgICAgICBnbG9idXNfYnl0ZV90ICogICAg ICAgICAgICAgICAgICAgICBjYV9wZW0gPSBOVUxMOworICAgICAgICAgICAgIGdsb2J1c19zaXpl X3QgICAgICAgICAgICAgICAgICAgICAgIGNhX3BlbV9sZW4gPSAwOworLSAgICAgICAgICAgIAor KworICAgICAgICAgICAgIG9wLT5zZXNzaW9uX2hhbmRsZS0+aHR0cF9jb25maWdfY2FsbGVkID0g R0xPQlVTX1RSVUU7CisgICAgICAgICAgICAgaWYoKHRtcF92YWwgPSAoZ2xvYnVzX2J5dGVfdCAq KQorICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19pX2dmc19rdl9nZXR2YWwoCitAQCAt NTk0Myw4ICs1OTQzLDggQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfcmVxdWVzdF9jb21tYW5kKAorICAg ICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGJhc2U2NCBpbnB1dCBmb3IgQ0FfQ0VSVFMu Iik7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAg ICAgICAgICB7ICAgICAgICAgICAgICAgCistICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBH TE9CVVNfU1VDQ0VTUzsgICAgIAorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAg ICAgICByZXN1bHQgPSBHTE9CVVNfU1VDQ0VTUzsKKyAgICAgICAgICAgICAgICAgICAgIGlmKG9w LT5zZXNzaW9uX2hhbmRsZS0+aHR0cF9jYV9jZXJ0cykKKyAgICAgICAgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNfZnJlZShvcC0+c2Vzc2lvbl9oYW5kbGUt Pmh0dHBfY2FfY2VydHMpOworQEAgLTU5NTIsMjAgKzU5NTIsMjAgQEAgZ2xvYnVzX2lfZ2ZzX2Rh dGFfcmVxdWVzdF9jb21tYW5kKAorICAgICAgICAgICAgICAgICAgICAgb3AtPnNlc3Npb25faGFu ZGxlLT5odHRwX2NhX2NlcnRzID0gKGNoYXIgKikgY2FfcGVtOworICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIGNhbGwgPSBH TE9CVVNfRkFMU0U7CisgICAgICAgICAgICAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2ZpbmlzaGVk X2NvbW1hbmQob3AsIHJlc3VsdCwgTlVMTCk7CisgICAgICAgICAgICAgYnJlYWs7CisgCisgICAg ICAgICAgIH0KKy0gICAgICAgICAgCisrCisgICAgICAgICBjYXNlIEdMT0JVU19HRlNfQ01EX0hU VFBfUFVUOgorLSAgICAgICAgICB7IAorKyAgICAgICAgICB7CisgICAgICAgICAgICAgY2hhciAq ICAgICAgICAgICAgICAgICAgcmVxdWVzdDsKKyAgICAgICAgICAgICBjaGFyICogICAgICAgICAg ICAgICAgICBwYXRoOworICAgICAgICAgICAgIGdsb2J1c19vZmZfdCAgICAgICAgICAgIG9mZnNl dDsKKy0gICAgICAgICAgICBnbG9idXNfb2ZmX3QgICAgICAgICAgICBsZW5ndGg7ICAgICAgICAg ICAgICAgIAorLSAgICAgICAgICAgIAorKyAgICAgICAgICAgIGdsb2J1c19vZmZfdCAgICAgICAg ICAgIGxlbmd0aDsKKysKKyAgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNfaV9nZnNfZGF0YV9o dHRwX3BhcnNlX2FyZ3MoCisgICAgICAgICAgICAgICAgIGNtZF9pbmZvLT5wYXRobmFtZSwgJnBh dGgsICZyZXF1ZXN0LCAmb2Zmc2V0LCAmbGVuZ3RoKTsKKyAgICAgICAgICAgICBpZihyZXN1bHQg PT0gR0xPQlVTX1NVQ0NFU1MpCitAQCAtNTk4MiwxMiArNTk4MiwxMiBAQCBnbG9idXNfaV9nZnNf ZGF0YV9yZXF1ZXN0X2NvbW1hbmQoCisgICAgICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICBj YXNlIEdMT0JVU19HRlNfQ01EX0hUVFBfR0VUOgorLSAgICAgICAgICB7IAorKyAgICAgICAgICB7 CisgICAgICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgcmVxdWVzdDsKKyAgICAgICAg ICAgICBjaGFyICogICAgICAgICAgICAgICAgICBwYXRoOworICAgICAgICAgICAgIGdsb2J1c19v ZmZfdCAgICAgICAgICAgIG9mZnNldDsKKy0gICAgICAgICAgICBnbG9idXNfb2ZmX3QgICAgICAg ICAgICBsZW5ndGg7ICAgICAgICAgICAgICAgIAorLSAgICAgICAgICAgIAorKyAgICAgICAgICAg IGdsb2J1c19vZmZfdCAgICAgICAgICAgIGxlbmd0aDsKKysKKyAgICAgICAgICAgICByZXN1bHQg PSBnbG9idXNfaV9nZnNfZGF0YV9odHRwX3BhcnNlX2FyZ3MoCisgICAgICAgICAgICAgICAgIGNt ZF9pbmZvLT5wYXRobmFtZSwgJnBhdGgsICZyZXF1ZXN0LCAmb2Zmc2V0LCAmbGVuZ3RoKTsKKyAg ICAgICAgICAgICBpZihyZXN1bHQgPT0gR0xPQlVTX1NVQ0NFU1MpCitAQCAtNjAzMCw3ICs2MDMw LDcgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfcmVxdWVzdF9jb21tYW5kKAorICAgICAgICAgICAgIGJy ZWFrOworIAorICAgICAgICAgY2FzZSBHTE9CVVNfR0ZTX0NNRF9TSVRFX1NFVERJU0tTVEFDSzoK Ky0gICAgICAgICAgICBpZihzZXNzaW9uX2hhbmRsZS0+ZHNpLT5kZXNjcmlwdG9yICYgCisrICAg ICAgICAgICAgaWYoc2Vzc2lvbl9oYW5kbGUtPmRzaS0+ZGVzY3JpcHRvciAmCisgICAgICAgICAg ICAgICAgIEdMT0JVU19HRlNfRFNJX0RFU0NSSVBUT1JfU0VOREVSKQorICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX2dmc19kYXRhX2xvYWRfc3RhY2so CitAQCAtNjA2OCwxNCArNjA2OCwxNCBAQCBnbG9idXNfaV9nZnNfZGF0YV9yZXF1ZXN0X2NvbW1h bmQoCisgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEdsb2J1c0dGU0Vycm9yR2VuZXJpYygKKyAg ICAgICAgICAgICAgICAgICAgICJTaGFyaW5nIGNvbnRyb2wgaXMgbm90IGFsbG93ZWQuIik7Cisg ICAgICAgICAgICAgfQorLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIGVsc2UgaWYoIXN0 cm5jYXNlY21wKGNtZF9pbmZvLT5wYXRobmFtZSwgIkNSRUFURSIsIDYpKQorICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgc2hhcmVfYXJnczsK KyAgICAgICAgICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgc2hhcmVfcGF0aCA9IE5V TEw7CisgICAgICAgICAgICAgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgIHNoYXJlX2lkID0g TlVMTDsKKyAgICAgICAgICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgc2hhcmVfZmls ZSA9IE5VTEw7CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICBzaGFyZV9h cmdzID0gc3RyY2hyKGNtZF9pbmZvLT5wYXRobmFtZSwgJyAnKTsKKyAgICAgICAgICAgICAgICAg aWYoIXNoYXJlX2FyZ3MpCisgICAgICAgICAgICAgICAgIHsKK0BAIC02MDgzLDcgKzYwODMsNyBA QCBnbG9idXNfaV9nZnNfZGF0YV9yZXF1ZXN0X2NvbW1hbmQoCisgICAgICAgICAgICAgICAgICAg ICBnb3RvIHNoYXJlX2NyZWF0ZV9lcnJvcjsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICBzaGFyZV9hcmdzKys7CistICAgICAgICAgICAgICAgIGlmKChzaGFyZV9pZCA9IAor KyAgICAgICAgICAgICAgICBpZigoc2hhcmVfaWQgPQorICAgICAgICAgICAgICAgICAgICAgZ2xv YnVzX2lfZ2ZzX2t2X2dldHZhbChzaGFyZV9hcmdzLCAiSUQiLCAxKSkgPT0gTlVMTCkKKyAgICAg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJy b3JHZW5lcmljKAorQEAgLTYxMDIsNyArNjEwMiw3IEBAIGdsb2J1c19pX2dmc19kYXRhX3JlcXVl c3RfY29tbWFuZCgKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg IHRtcCsrOworICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIGlmKChzaGFyZV9w YXRoID0gCisrICAgICAgICAgICAgICAgIGlmKChzaGFyZV9wYXRoID0KKyAgICAgICAgICAgICAg ICAgICAgIGdsb2J1c19pX2dmc19rdl9nZXR2YWwoc2hhcmVfYXJncywgIlBBVEgiLCAxKSkgPT0g TlVMTCkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0g R2xvYnVzR0ZTRXJyb3JHZW5lcmljKAorQEAgLTYxMTcsMTIgKzYxMTcsMTIgQEAgZ2xvYnVzX2lf Z2ZzX2RhdGFfcmVxdWVzdF9jb21tYW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICJTaGFy aW5nIGlzIG5vdCBhbGxvd2VkIGZvciB0aGUgY3VycmVudCB1c2VyLiIpOworICAgICAgICAgICAg ICAgICAgICAgZ290byBzaGFyZV9jcmVhdGVfZXJyb3I7CisgICAgICAgICAgICAgICAgIH0KKy0g ICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgIHNoYXJlX2ZpbGUgPSBnbG9idXNf Y29tbW9uX2NyZWF0ZV9zdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAiJXMvc2hhcmUtJXMi LAorICAgICAgICAgICAgICAgICAgICAgb3AtPnNlc3Npb25faGFuZGxlLT5zaGFyaW5nX3N0YXRl X2RpciwKKyAgICAgICAgICAgICAgICAgICAgIHNoYXJlX2lkKTsKKy0gICAgICAgICAgICAgICAg CisrCisgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIHBhdGggd2lsbCBiZSBhY2Nlc3NpYmxl ICovCisgICAgICAgICAgICAgICAgIGlmKHJlc3VsdCA9PSBHTE9CVVNfU1VDQ0VTUykKKyAgICAg ICAgICAgICAgICAgeworQEAgLTYxNjIsMTQgKzYxNjIsMTQgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFf cmVxdWVzdF9jb21tYW5kKAorICAgICAgICAgICAgICAgICAgICAgaWYoYWNjZXNzKHNoYXJlX2Zp bGUsIEZfT0spIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgICBpbnQgICAgICAgICAgICAgICAgIHNoYXJpbmdmZDsKKy0gICAgICAgICAgICAgICAg ICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjcmVhdGUgc3RhdGUgZGly IGlmIGRlZmF1bHQgYW5kIGRvZXNuJ3QgZXhpc3QgKi8KKy0gICAgICAgICAgICAgICAgICAgICAg ICBpZihzdHJzdHIob3AtPnNlc3Npb25faGFuZGxlLT5zaGFyaW5nX3N0YXRlX2RpciwgIi8uZ2xv YnVzL3NoYXJpbmciKSAmJiAKKysgICAgICAgICAgICAgICAgICAgICAgICBpZihzdHJzdHIob3At PnNlc3Npb25faGFuZGxlLT5zaGFyaW5nX3N0YXRlX2RpciwgIi8uZ2xvYnVzL3NoYXJpbmciKSAm JgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3Mob3AtPnNlc3Npb25faGFuZGxl LT5zaGFyaW5nX3N0YXRlX2RpciwgRl9PSykgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqICAgICAgdG1wX2RpcjsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqICAgICAgcHRyOworLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wX2Rp ciA9IHN0cmR1cChvcC0+c2Vzc2lvbl9oYW5kbGUtPnNoYXJpbmdfc3RhdGVfZGlyKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcHRyID0gc3RycmNocih0bXBfZGlyLCAnLycpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZihwdHIpCitAQCAtNjE4MSwxNSArNjE4MSwxNSBA QCBnbG9idXNfaV9nZnNfZGF0YV9yZXF1ZXN0X2NvbW1hbmQoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1rZGlyKHRtcF9kaXIsIDA3MDApOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmcmVlKHRtcF9kaXIpOworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAg ICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZihnbG9idXNf bF9nZnNfZGF0YV9jaGVja19zaGFyaW5nX3Blcm1zKG9wLT5zZXNzaW9uX2hhbmRsZSkgIT0gMCkK KyAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlc3VsdCA9IEdsb2J1c0dGU0Vycm9yR2VuZXJpYygKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJTaGFyaW5nIHN0YXRlIGRpciBoYXMgaW52YWxpZCBwZXJtaXNzaW9ucy4iKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBzaGFyZV9jcmVhdGVfZXJyb3I7Cist ICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKysg ICAgICAgICAgICAgICAgICAgICAgICB9CisgCistICAgICAgICAgICAgICAgICAgICAgICAgc2hh cmluZ2ZkID0gCisrICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmluZ2ZkID0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3BlbihzaGFyZV9maWxlLCBPX1dST05MWSB8IE9fQ1JFQVQs IFNfSVJVU1IgfCBTX0lXVVNSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZihzaGFyaW5n ZmQgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgIHsKK0BAIC02MjAxLDcgKzYyMDEsNyBA QCBnbG9idXNfaV9nZnNfZGF0YV9yZXF1ZXN0X2NvbW1hbmQoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNoYXIgKiAgICAgIHRtcF9jb250ZW50OworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjaGFyICogICAgICB0bXBfZW5jOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgICAgICAgICBzYXZlX3JjID0gMDsKKy0jaWZkZWYgV0lOMzIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisrI2lmZGVmIFdJTjMyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlmKGlzYWxwaGEoc2hhcmVfcGF0aFswXSkgJiYgc2hhcmVfcGF0aFsxXSA9PSAnOicpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNoYXJlX3BhdGhbMV0gPSBzaGFyZV9wYXRoWzBdOworQEAgLTYyMTMsOCArNjIxMyw4IEBA IGdsb2J1c19pX2dmc19kYXRhX3JlcXVlc3RfY29tbWFuZCgKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfQorICNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBfZW5j ID0gZ2xvYnVzX3VybF9zdHJpbmdfaGV4X2VuY29kZShzaGFyZV9wYXRoLCAiXCIiKTsKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRt cF9jb250ZW50ID0gZ2xvYnVzX2NvbW1vbl9jcmVhdGVfc3RyaW5nKCAKKysKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdG1wX2NvbnRlbnQgPSBnbG9idXNfY29tbW9uX2NyZWF0ZV9zdHJp bmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiI1xuIyBUaGlzIGZpbGUgaXMg cmVxdWlyZWQgaW4gb3JkZXIgdG8gZW5hYmxlIEdyaWRGVFAgZmlsZSBzaGFyaW5nLlxuIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiMgSWYgeW91IHJlbW92ZSB0aGlzIGZpbGUs IGZpbGUgc2hhcmluZyB3aWxsIG5vIGxvbmdlciB3b3JrLlxuI1xuXG4iCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAic2hhcmVfcGF0aCBcIiVzXCJcbiIsIHRtcF9lbmMpOworQEAg LTYyMzMsMTQgKzYyMzMsMTQgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfcmVxdWVzdF9jb21tYW5kKAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbmFibGluZyBzaGFyaW5nIChj bG9zZSkiLCBlcnJubyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlX3Jj ID0gcmM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gY2htb2Qo c2hhcmVfZmlsZSwgU19JUlVTUik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJj IDwgMCAmJiAhc2F2ZV9yYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JTeXN0ZW1F cnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW5hYmxpbmcgc2hh cmluZyAoY2htb2QpIiwgZXJybm8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cist ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnbG9idXNfZnJlZSh0bXBfZW5jKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2xvYnVzX2ZyZWUodG1wX2NvbnRlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgIH0KK0BA IC02MjcwLDcgKzYyNzAsNyBAQCBzaGFyZV9jcmVhdGVfZXJyb3I6CisgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICBjaGFyICogICAgICAgICAgICAgICAgICBzaGFyZV9maWxlID0gTlVM TDsKKyAgICAgICAgICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgc2hhcmVfaWQgPSBO VUxMOworLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgc2hhcmVfaWQgPSBz dHJjaHIoY21kX2luZm8tPnBhdGhuYW1lLCAnICcpOworICAgICAgICAgICAgICAgICBpZighc2hh cmVfaWQpCisgICAgICAgICAgICAgICAgIHsKK0BAIC02MjkwLDcgKzYyOTAsNyBAQCBzaGFyZV9j cmVhdGVfZXJyb3I6CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg ICB0bXArKzsKKyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAKKysKKyAgICAg ICAgICAgICAgICAgc2hhcmVfZmlsZSA9IGdsb2J1c19jb21tb25fY3JlYXRlX3N0cmluZygKKyAg ICAgICAgICAgICAgICAgICAgICIlcy9zaGFyZS0lcyIsCisgICAgICAgICAgICAgICAgICAgICBv cC0+c2Vzc2lvbl9oYW5kbGUtPnNoYXJpbmdfc3RhdGVfZGlyLAorQEAgLTYzNDAsOSArNjM0MCw5 IEBAIHNoYXJlX2RlbGV0ZV9lcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEds b2J1c0dGU0Vycm9yR2VuZXJpYygiTWlzc2luZyBwYXRoIGFyZ3VtZW50LiIpOworICAgICAgICAg ICAgICAgICAgICAgZ290byBzaGFyZV90ZXN0X2Vycm9yOworICAgICAgICAgICAgICAgICB9Cist ICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICBzaGFyZV9wYXRoKys7CistICAg ICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAvKiogY2hlY2sgaWYgc2hhcmluZyBj YW4gYmUgZW5hYmxlZCAqKi8KKyAgICAgICAgICAgICAgICAgLyogY3JlYXRpb24gZGlzYWJsZWQg Ki8KKyAgICAgICAgICAgICAgICAgaWYoIWdsb2J1c19pX2dmc19jb25maWdfYm9vbCgic2hhcmlu Z19jb250cm9sIikpCitAQCAtNjM1MCw3ICs2MzUwLDcgQEAgc2hhcmVfZGVsZXRlX2Vycm9yOgor ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JHZW5lcmljKAorICAg ICAgICAgICAgICAgICAgICAgICAgICJTaGFyaW5nIGNvbnRyb2wgaXMgbm90IGVuYWJsZWQuIik7 CisgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAg ICAgIC8qIGNoZWNrIGFsbG93L2RlbnkgY29uZmlnICovCisgICAgICAgICAgICAgICAgIGVsc2Ug aWYoIWdsb2J1c19sX2dmc19kYXRhX2NoZWNrX3NoYXJpbmdfYWxsb3dlZChvcC0+c2Vzc2lvbl9o YW5kbGUpKQorICAgICAgICAgICAgICAgICB7CitAQCAtNjM2MiwxMiArNjM2MiwxMiBAQCBzaGFy ZV9kZWxldGVfZXJyb3I6CisgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICAgICAgLyogY3JlYXRlIHN0YXRlIGRpciBpZiBkZWZhdWx0IGFu ZCBkb2Vzbid0IGV4aXN0ICovCistICAgICAgICAgICAgICAgICAgICBpZihzdHJzdHIob3AtPnNl c3Npb25faGFuZGxlLT5zaGFyaW5nX3N0YXRlX2RpciwgIi8uZ2xvYnVzL3NoYXJpbmciKSAmJiAK KysgICAgICAgICAgICAgICAgICAgIGlmKHN0cnN0cihvcC0+c2Vzc2lvbl9oYW5kbGUtPnNoYXJp bmdfc3RhdGVfZGlyLCAiLy5nbG9idXMvc2hhcmluZyIpICYmCisgICAgICAgICAgICAgICAgICAg ICAgICAgYWNjZXNzKG9wLT5zZXNzaW9uX2hhbmRsZS0+c2hhcmluZ19zdGF0ZV9kaXIsIEZfT0sp IDwgMCkKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBj aGFyICogICAgICB0bXBfZGlyOworICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiAgICAg IHB0cjsKKy0gICAgICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAg ICAgICB0bXBfZGlyID0gc3RyZHVwKG9wLT5zZXNzaW9uX2hhbmRsZS0+c2hhcmluZ19zdGF0ZV9k aXIpOworICAgICAgICAgICAgICAgICAgICAgICAgIHB0ciA9IHN0cnJjaHIodG1wX2RpciwgJy8n KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZihwdHIpCitAQCAtNjM3OSwxNCArNjM3OSwx NCBAQCBzaGFyZV9kZWxldGVfZXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgbWtkaXIo dG1wX2RpciwgMDcwMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZSh0bXBfZGlyKTsK KyAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAgCisrCisgICAgICAg ICAgICAgICAgICAgICBpZihnbG9idXNfbF9nZnNfZGF0YV9jaGVja19zaGFyaW5nX3Blcm1zKG9w LT5zZXNzaW9uX2hhbmRsZSkgIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJvckdlbmVyaWMoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJTaGFyaW5nIHN0YXRlIGRpciBoYXMgaW52YWxpZCBwZXJt aXNzaW9ucy4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHNoYXJlX3Rlc3RfZXJy b3I7CistICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LSAgICAgICAgICAgICAgICAgICAgCisrICAgICAgICAgICAgICAgICAgICB9CisrCisgICAgICAg ICAgICAgICAgICAgICBpZihhY2Nlc3Mob3AtPnNlc3Npb25faGFuZGxlLT5zaGFyaW5nX3N0YXRl X2RpciwgV19PSykgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgICByZXN1bHQgPSBHTE9CVVNfU1VDQ0VTUzsKK0BAIC02NDI3LDkgKzY0MjcsOSBA QCBzaGFyZV90ZXN0X2Vycm9yOgorICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBnbG9idXNf Z3JpZGZ0cF9zZXJ2ZXJfZmluaXNoZWRfY29tbWFuZChvcCwgcmVzdWx0LCBOVUxMKTsKKyAgICAg ICAgICAgICBjYWxsID0gR0xPQlVTX0ZBTFNFOworLSAgICAgICAgICAgIAorKworICAgICAgICAg ICAgIGJyZWFrOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgIGNh c2UgR0xPQlVTX0dGU19DTURfU0lURV9SRVNUUklDVDoKKyAgICAgICAgICAgICBpZighZ2xvYnVz X2xpc3RfZW1wdHkoc2Vzc2lvbl9oYW5kbGUtPnJwX2xpc3QpKQorICAgICAgICAgICAgIHsKK0BA IC02NDQxLDEwICs2NDQxLDEwIEBAIHNoYXJlX3Rlc3RfZXJyb3I6CisgICAgICAgICAgICAgICAg IHJlc3VsdCA9IGdsb2J1c19sX2dmc19kYXRhX3BhcnNlX3Jlc3RyaWN0ZWRfcGF0aHMoCisgICAg ICAgICAgICAgICAgICAgICBzZXNzaW9uX2hhbmRsZSwgY21kX2luZm8tPnBhdGhuYW1lLCAmc2Vz c2lvbl9oYW5kbGUtPnJwX2xpc3QsIDEpOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAK KysKKyAgICAgICAgICAgICBnbG9idXNfbF9nZnNfZGF0YV91cGRhdGVfcmVzdHJpY3RlZF9wYXRo c19zeW1saW5rcygKKyAgICAgICAgICAgICAgICAgc2Vzc2lvbl9oYW5kbGUsICZzZXNzaW9uX2hh bmRsZS0+cnBfbGlzdCk7CistICAgICAgICAgICAgICAgIAorKworIAorICAgICAgICAgICAgIGds b2J1c19ncmlkZnRwX3NlcnZlcl9maW5pc2hlZF9jb21tYW5kKG9wLCByZXN1bHQsIE5VTEwpOwor IAorQEAgLTY0NjMsMTEgKzY0NjMsMTEgQEAgc2hhcmVfdGVzdF9lcnJvcjoKKyAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAg c2Vzc2lvbl9oYW5kbGUtPmNocm9vdF9wYXRoID0gCisrICAgICAgICAgICAgICAgIHNlc3Npb25f aGFuZGxlLT5jaHJvb3RfcGF0aCA9CisgICAgICAgICAgICAgICAgICAgICBnbG9idXNfbGliY19z dHJkdXAoY21kX2luZm8tPnBhdGhuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9 IEdMT0JVU19TVUNDRVNTOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAKKysKKyAgICAg ICAgICAgICBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmluaXNoZWRfY29tbWFuZChvcCwgcmVzdWx0 LCBOVUxMKTsKKyAKKyAgICAgICAgICAgICBjYWxsID0gR0xPQlVTX0ZBTFNFOworQEAgLTY0Nzks NyArNjQ3OSw3IEBAIHNoYXJlX3Rlc3RfZXJyb3I6CisgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJvckdlbmVyaWMoCisgICAgICAgICAgICAgICAg ICAgICAiQ29udHJvbGxlciBwYXJhbWV0ZXIgbXVzdCBiZSAwIG9yIDEuIik7CistICAgICAgICAg ICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2Zp bmlzaGVkX2NvbW1hbmQob3AsIHJlc3VsdCwgTlVMTCk7CisgCisgICAgICAgICAgICAgfQorQEAg LTY0ODksMTMgKzY0ODksMTMgQEAgc2hhcmVfdGVzdF9lcnJvcjoKKyAgICAgICAgICAgICAgICAg Y2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICBzdHVuc2VydmVyOworICAgICAgICAgICAg ICAgICBnbG9idXNfeGlvX2RyaXZlcl9saXN0X2VudF90ICogIGVudDsKKyAgICAgICAgICAgICAg ICAgZ2xvYnVzX3hpb19hdHRyX3QgICAgICAgICAgICAgICB4aW9fYXR0cjsKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICBpZihzZXNzaW9uX2hh bmRsZS0+bmV0X3N0YWNrX2xpc3QgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2xfZ2ZzX2RhdGFfbG9hZF9zdGFjaygKKyAg ICAgICAgICAgICAgICAgICAgICAgICBvcC0+c2Vzc2lvbl9oYW5kbGUtPnN1YmplY3QgPyAidWR0 LGdzaSIgOiAidWR0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmb3AtPnNlc3Npb25faGFu ZGxlLT5uZXRfc3RhY2tfbGlzdCwKKy0gICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNfaV9n ZnNfY29uZmlnX2Jvb2woImFsbG93X3VkdCIpID8gCisrICAgICAgICAgICAgICAgICAgICAgICAg Z2xvYnVzX2lfZ2ZzX2NvbmZpZ19ib29sKCJhbGxvd191ZHQiKSA/CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE5VTEwgOiAmZ2ZzX2xfZGF0YV9uZXRfYWxsb3dlZF9kcml2ZXJzLAorICAg ICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xP QlVTX1RSVUUpOworQEAgLTY1MDUsMTAgKzY1MDUsMTAgQEAgc2hhcmVfdGVzdF9lcnJvcjoKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNldHRpbmcgZGF0YSBjaGFubmVsIGRyaXZlciBz dGFjayIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg IH0KKy0gICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgIGVudCA9IGdsb2J1c194 aW9fZHJpdmVyX2xpc3RfZmluZF9kcml2ZXIoCisgICAgICAgICAgICAgICAgICAgICBzZXNzaW9u X2hhbmRsZS0+bmV0X3N0YWNrX2xpc3QsICJ1ZHQiKTsKKy0gICAgICAgICAgICAgICAgCisrCisg ICAgICAgICAgICAgICAgIGlmKGVudCkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgICAgaWYoc2Vzc2lvbl9oYW5kbGUtPnVkdF9kYXRhX2NoYW5uZWxfaW51c2UpCitAQCAt NjUxNyw3ICs2NTE3LDcgQEAgc2hhcmVfdGVzdF9lcnJvcjoKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnNlc3Npb25faGFuZGxlLT51ZHRfZGF0YV9jaGFubmVsKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICBzZXNzaW9uX2hhbmRsZS0+dWR0X2RhdGFfY2hhbm5lbF9pbnVzZSA9IEdM T0JVU19GQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgICAg IAorKworICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jb250cm9sX2hh bmRsZV9pbml0KAorICAgICAgICAgICAgICAgICAgICAgICAgICZzZXNzaW9uX2hhbmRsZS0+dWR0 X2RhdGFfY2hhbm5lbCk7CisgICAgICAgICAgICAgICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVT X1NVQ0NFU1MpCitAQCAtNjUyNyw3ICs2NTI3LDcgQEAgc2hhcmVfdGVzdF9lcnJvcjoKKyAgICAg ICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX3VwYXM7CisgICAgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2hhbmRsZS0+dWR0X2RhdGFfY2hhbm5l bF9pbnVzZSA9IEdMT0JVU19UUlVFOworLSAgICAgICAgICAgICAgICAgICAgCisrCisgICAgICAg ICAgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNfaV9mdHBfY29udHJvbF9kYXRhX2dldF9hdHRy KAorICAgICAgICAgICAgICAgICAgICAgICAgICZzZXNzaW9uX2hhbmRsZS0+dWR0X2RhdGFfY2hh bm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmeGlvX2F0dHIpOworQEAgLTY1NTcsNyAr NjU1Nyw3IEBAIHNoYXJlX3Rlc3RfZXJyb3I6CisgZXJyb3JfdXBhczoKKyAgICAgICAgICAgICAg ICAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2ZpbmlzaGVkX2NvbW1hbmQob3AsIHJlc3VsdCwgY2Fu ZGlkYXRlcyk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIAorKworICAgICAgICAgICAg IGNhbGwgPSBHTE9CVVNfRkFMU0U7CisgICAgICAgICAgICAgYnJlYWs7CisgCitAQCAtNjU2NSw3 ICs2NTY1LDcgQEAgZXJyb3JfdXBhczoKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg IGdsb2J1c194aW9fZHJpdmVyX2xpc3RfZW50X3QgKiAgZW50OworICAgICAgICAgICAgICAgICBn bG9idXNfeGlvX2F0dHJfdCAgICAgICAgICAgICAgIHhpb19hdHRyOworLSAgICAgICAgICAgICAg ICAKKysKKyAgICAgICAgICAgICAgICAgZW50ID0gZ2xvYnVzX3hpb19kcml2ZXJfbGlzdF9maW5k X2RyaXZlcigKKyAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25faGFuZGxlLT5uZXRfc3RhY2tf bGlzdCwgInVkdCIpOworICAgICAgICAgICAgICAgICBpZihlbnQpCitAQCAtNjU3NywyNSArNjU3 NywyNSBAQCBlcnJvcl91cGFzOgorICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgICAgICAgIGdvdG8gZXJyb3JfdXBydDsKKyAgICAgICAgICAgICAgICAgICAgIH0KKy0g ICAgCisrCisgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNfeGlvX2F0dHJfY250 bCgKKyAgICAgICAgICAgICAgICAgICAgICAgICB4aW9fYXR0ciwKKyAgICAgICAgICAgICAgICAg ICAgICAgICBlbnQtPmRyaXZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAxOCAvKiBHTE9C VVNfWElPX1VEVF9TRVRfUkVNT1RFX0NBTkRJREFURVMgKi8sCisgICAgICAgICAgICAgICAgICAg ICAgICAgY21kX2luZm8tPnBhdGhuYW1lKTsKKy0gICAgICAgICAgICAgICAgICAgIAorKworICAg ICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9oYW5kbGUtPnVwYXMgPSBHTE9CVVNfVFJVRTsKKyAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEdsb2J1c0dGU0Vycm9yV3JhcEZhaWxl ZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAiU2V0dGluZyBkYXRhIGNoYW5uZWwgZHJpdmVy IHN0YWNrIiwgcmVzdWx0KTsKKy0gICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAg CisrICAgICAgICAgICAgICAgIH0KKyBlcnJvcl91cHJ0OgorICAgICAgICAgICAgICAgICBnbG9i dXNfZ3JpZGZ0cF9zZXJ2ZXJfZmluaXNoZWRfY29tbWFuZChvcCwgcmVzdWx0LCBOVUxMKTsKKyAK KyAgICAgICAgICAgICB9CistICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgY2FsbCA9IEdM T0JVU19GQUxTRTsKKyAgICAgICAgICAgICBicmVhazsKKyAKK0BAIC02NjgyLDcgKzY2ODIsNyBA QCBlcnJvcl91cHJ0OgorICAgICAgICAgICAgIGNhbGwgPSBHTE9CVVNfRkFMU0U7CisgICAgICAg ICAgICAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2ZpbmlzaGVkX2NvbW1hbmQob3AsIHJlc3VsdCwg TlVMTCk7CisgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICAgICAgCisrCisgICAgICAgICBj YXNlIEdMT0JVU19HRlNfQ01EX1NJVEVfVEFTS0lEOgorICAgICAgICAgICAgIGlmKG9wLT5zZXNz aW9uX2hhbmRsZS0+dGFza2lkKQorICAgICAgICAgICAgIHsKK0BAIC02Njk5LDcgKzY2OTksNyBA QCBlcnJvcl91cHJ0OgorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2Zy ZWUob3AtPnNlc3Npb25faGFuZGxlLT5zdG9yYXR0cl9zdHIpOworICAgICAgICAgICAgIH0KKy0g ICAgICAgICAgICBvcC0+c2Vzc2lvbl9oYW5kbGUtPnN0b3JhdHRyX3N0ciA9IAorKyAgICAgICAg ICAgIG9wLT5zZXNzaW9uX2hhbmRsZS0+c3RvcmF0dHJfc3RyID0KKyAgICAgICAgICAgICAgICAg Z2xvYnVzX2xpYmNfc3RyZHVwKGNtZF9pbmZvLT5wYXRobmFtZSk7CisgCisgICAgICAgICAgICAg Y2FsbCA9IEdMT0JVU19GQUxTRTsKK0BAIC02NzQ5LDE1ICs2NzQ5LDE1IEBAIGVycm9yX3VwcnQ6 CisgICAgICAgICBjYXNlIEdMT0JVU19HRlNfQ01EX1NJVEVfQ0hHUlA6CisgICAgICAgICAgICAg YWN0aW9uID0gR0ZTX0FDTF9BQ1RJT05fV1JJVEU7CisgICAgICAgICAgICAgYnJlYWs7CistICAg ICAgICAKKysKKyAgICAgICAgIGNhc2UgR0xPQlVTX0dGU19DTURfU0lURV9VVElNRToKKyAgICAg ICAgICAgICBhY3Rpb24gPSBHRlNfQUNMX0FDVElPTl9XUklURTsKKyAgICAgICAgICAgICBicmVh azsKKy0gICAgICAgIAorKworICAgICAgICAgY2FzZSBHTE9CVVNfR0ZTX0NNRF9TSVRFX1NZTUxJ Tks6CisgICAgICAgICAgICAgYWN0aW9uID0gR0ZTX0FDTF9BQ1RJT05fQ1JFQVRFOworICAgICAg ICAgICAgIGJyZWFrOworLSAgICAgICAgICAgIAorKworICAgICAgICAgY2FzZSBHTE9CVVNfR0ZT X0NNRF9TSVRFX0FVVEhaX0FTU0VSVDoKKyAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAq IEEgbmV3IGFjdGlvbiB0byBwcm92aWRlIGF1dGhvcml6YXRpb24gYXNzZXJ0aW9ucyByZWNlaXZl ZAorQEAgLTY3ODMsNyArNjc4Myw3IEBAIGVycm9yX3VwcnQ6CisgICAgICAgICBkZWZhdWx0Ogor ICAgICAgICAgICAgIGlmKGNtZF9pbmZvLT5jb21tYW5kID49IEdMT0JVU19HRlNfTUlOX0NVU1RP TV9DTUQpCisgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBpZihjbWRfaW5mby0+b3Bf aW5mbyAmJiBjbWRfaW5mby0+b3BfaW5mby0+Y21kX2VudCAmJiAKKysgICAgICAgICAgICAgICAg aWYoY21kX2luZm8tPm9wX2luZm8gJiYgY21kX2luZm8tPm9wX2luZm8tPmNtZF9lbnQgJiYKKyAg ICAgICAgICAgICAgICAgICAgIGNtZF9pbmZvLT5vcF9pbmZvLT5jbWRfZW50LT5hY2Nlc3NfdHlw ZSkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gY21k X2luZm8tPm9wX2luZm8tPmNtZF9lbnQtPmFjY2Vzc190eXBlOworQEAgLTY4OTAsMTIgKzY4OTAs MTIgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfaGFuZGxlX2luaXQoCisgCisgICAgIGlmKHNlc3Npb25f aGFuZGxlLT51ZHRfZGF0YV9jaGFubmVsX2ludXNlKQorICAgICB7CistICAgICAgICBtZW1jcHko JmhhbmRsZS0+ZGF0YV9jaGFubmVsLCAmc2Vzc2lvbl9oYW5kbGUtPnVkdF9kYXRhX2NoYW5uZWws IAorKyAgICAgICAgbWVtY3B5KCZoYW5kbGUtPmRhdGFfY2hhbm5lbCwgJnNlc3Npb25faGFuZGxl LT51ZHRfZGF0YV9jaGFubmVsLAorICAgICAgICAgICAgIHNpemVvZihnbG9idXNfZnRwX2NvbnRy b2xfaGFuZGxlX3QpKTsKKyAgICAgICAgIHNlc3Npb25faGFuZGxlLT51ZHRfZGF0YV9jaGFubmVs X2ludXNlID0gR0xPQlVTX0ZBTFNFOworICAgICB9CisgICAgIGVsc2UKKy0gICAgeyAgICAgICAg CisrICAgIHsKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfaW5p dCgmaGFuZGxlLT5kYXRhX2NoYW5uZWwpOworICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19T VUNDRVNTKQorICAgICAgICAgeworQEAgLTY5NjQsNyArNjk2NCw3IEBAIGdsb2J1c19sX2dmc19k YXRhX2hhbmRsZV9pbml0KAorICAgICB7CisgICAgICAgICBoYW5kbGUtPmluZm8ubnN0cmVhbXMg PSAxOworICAgICB9CistICAgIAorKworICAgICBpZihoYW5kbGUtPmluZm8ubW9kZSA9PSAnUycp CisgICAgIHsKKyAgICAgICAgIGhhbmRsZS0+aW5mby5uc3RyZWFtcyA9IDE7CitAQCAtNzAzMiw3 ICs3MDMyLDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfaGFuZGxlX2luaXQoCisgICAgIGRjYXUubW9k ZSA9IGhhbmRsZS0+aW5mby5kY2F1OworICAgICBkY2F1LnN1YmplY3QubW9kZSA9IGhhbmRsZS0+ aW5mby5kY2F1OworICAgICBkY2F1LnN1YmplY3Quc3ViamVjdCA9IGhhbmRsZS0+aW5mby5zdWJq ZWN0OworLSAgICAKKysKKyAgICAgaWYoc2Vzc2lvbl9oYW5kbGUtPmRjc2NfY3JlZCAhPSBHU1Nf Q19OT19DUkVERU5USUFMKQorICAgICB7CisgICAgICAgICBnbG9idXNfeGlvX2F0dHJfdCAgICAg ICAgICAgICAgIHhpb19hdHRyOworQEAgLTcwNjgsNyArNzA2OCw3IEBAIGdsb2J1c19sX2dmc19k YXRhX2hhbmRsZV9pbml0KAorICAgICB7CisgICAgICAgICBjcmVkID0gaGFuZGxlLT5pbmZvLmRl bF9jcmVkOworICAgICB9CistICAgIAorKworICAgICByZXN1bHQgPSBnbG9idXNfZnRwX2NvbnRy b2xfbG9jYWxfZGNhdSgKKyAgICAgICAgICZoYW5kbGUtPmRhdGFfY2hhbm5lbCwgJmRjYXUsIGNy ZWQpOworICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCitAQCAtNzA5OSwxMyArNzA5 OSwxMyBAQCBnbG9idXNfbF9nZnNfZGF0YV9oYW5kbGVfaW5pdCgKKyAgICAgICAgICAgICBnb3Rv IGVycm9yX2NvbnRyb2w7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCisrCisgICAgIC8qIGNy ZWF0ZSBhIGRlZmF1bHQgc3RhY2sgdGhhdCB3ZSBjYW4gYWRkIHRoZSBuZXRtZ3IgZHJpdmVyIHRv ICovCisgICAgIGlmKGdsb2J1c19sX2dmc19uZXRtZ3JfZHJpdmVyICYmIGdsb2J1c19saXN0X2Vt cHR5KG5ldF9zdGFja19saXN0KSkKKyAgICAgeworICAgICAgICAgZ2xvYnVzX3hpb19kcml2ZXJf bGlzdF9lbnRfdCAqICBlbnQ7CisgICAgICAgICBnbG9idXNfbGlzdF90ICoqICAgICAgICAgICAg ICAgIHRhaWxwID0gJm5ldF9zdGFja19saXN0OworLSAgICAgICAgCisrCisgICAgICAgICBlbnQg PSBtYWxsb2Moc2l6ZW9mKGdsb2J1c194aW9fZHJpdmVyX2xpc3RfZW50X3QpKTsKKyAgICAgICAg IGVudC0+ZHJpdmVyID0gZ2xvYnVzX2lvX2NvbXBhdF9nZXRfdGNwX2RyaXZlcigpOworICAgICAg ICAgZW50LT5kcml2ZXJfbmFtZSA9IHN0cmR1cCgidGNwIik7CitAQCAtNzExNCw3ICs3MTE0LDcg QEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfaGFuZGxlX2luaXQoCisgICAgICAgICBlbnQtPmxvYWRlZCA9 IEdMT0JVU19UUlVFOworICAgICAgICAgZ2xvYnVzX2xpc3RfaW5zZXJ0KHRhaWxwLCBlbnQpOwor ICAgICAgICAgdGFpbHAgPSBnbG9idXNfbGlzdF9yZXN0X3JlZigqdGFpbHApOworLSAgICAgICAg CisrCisgICAgICAgICBlbnQgPSBtYWxsb2Moc2l6ZW9mKGdsb2J1c194aW9fZHJpdmVyX2xpc3Rf ZW50X3QpKTsKKyAgICAgICAgIGVudC0+ZHJpdmVyID0gZ2xvYnVzX2lvX2NvbXBhdF9nZXRfZ3Np X2RyaXZlcigpOworICAgICAgICAgZW50LT5kcml2ZXJfbmFtZSA9IHN0cmR1cCgiZ3NpIik7CitA QCAtNzEyNCw3ICs3MTI0LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfaGFuZGxlX2luaXQoCisgICAg ICAgICBnbG9idXNfbGlzdF9pbnNlcnQodGFpbHAsIGVudCk7CisgICAgICAgICB0YWlscCA9IGds b2J1c19saXN0X3Jlc3RfcmVmKCp0YWlscCk7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKCFn bG9idXNfbGlzdF9lbXB0eShuZXRfc3RhY2tfbGlzdCkpCisgICAgIHsKKyAgICAgICAgIGdsb2J1 c194aW9fc3RhY2tfdCAgICAgICAgICAgICAgc3RhY2s7CitAQCAtNzE0NCw3ICs3MTQ0LDcgQEAg Z2xvYnVzX2xfZ2ZzX2RhdGFfaGFuZGxlX2luaXQoCisgICAgICAgICAgICAgICAgIGdsb2J1c19l cnJvcl9wcmludF9mcmllbmRseShnbG9idXNfZXJyb3JfcGVlayhyZXN1bHQpKSk7CisgICAgICAg ICAgICAgZ290byBlcnJvcl9jb250cm9sOworICAgICAgICAgfQorLSAgICAgICAgCisrCisgCisg ICAgICAgICBmb3IgKHAgPSBuZXRfc3RhY2tfbGlzdDsgIWdsb2J1c19saXN0X2VtcHR5KHApOyBw ID0gZ2xvYnVzX2xpc3RfcmVzdChwKSkKKyAgICAgICAgIHsKK0BAIC03MTYwLDcgKzcxNjAsNyBA QCBnbG9idXNfbF9nZnNfZGF0YV9oYW5kbGVfaW5pdCgKKyAgICAgICAgIH0KKyAKKyAgICAgICAg IGdsb2J1c194aW9fc3RhY2tfaW5pdCgmc3RhY2ssIE5VTEwpOworLSAgICAgICAgCisrCisgICAg ICAgICByZXN1bHQgPSBnbG9idXNfeGlvX2RyaXZlcl9saXN0X3RvX3N0YWNrX2F0dHIoCisgICAg ICAgICAgICAgbmV3X25ldF9zdGFja19saXN0LCBzdGFjaywgeGlvX2F0dHIpOworICAgICAgICAg Z2xvYnVzX2xpc3RfZnJlZShuZXdfbmV0X3N0YWNrX2xpc3QpOworQEAgLTcxNzksMTAgKzcxNzks MTAgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfaGFuZGxlX2luaXQoCisgICAgICAgICAgICAgY2hhciAq ICAgICAgICAgICAgICAgICAgb3B0X3N0cjsKKyAKKyAgICAgICAgICAgICBnbG9idXNfeGlvX3N0 YWNrX3B1c2hfZHJpdmVyKHN0YWNrLCBnbG9idXNfbF9nZnNfbmV0bWdyX2RyaXZlcik7CistICAg IAorKworICAgICAgICAgICAgIG9wdF9zdHIgPSBnbG9idXNfY29tbW9uX2NyZWF0ZV9zdHJpbmco CistICAgICAgICAgICAgICAgICJzZXJ2aWNlPWdyaWRmdHAtZGF0YTt0YXNrLWlkPSVzOyVzIiwg CistICAgICAgICAgICAgICAgIHNlc3Npb25faGFuZGxlLT50YXNraWQgPyBzZXNzaW9uX2hhbmRs ZS0+dGFza2lkIDogIm5vbmUiLCAKKysgICAgICAgICAgICAgICAgInNlcnZpY2U9Z3JpZGZ0cC1k YXRhO3Rhc2staWQ9JXM7JXMiLAorKyAgICAgICAgICAgICAgICBzZXNzaW9uX2hhbmRsZS0+dGFz a2lkID8gc2Vzc2lvbl9oYW5kbGUtPnRhc2tpZCA6ICJub25lIiwKKyAgICAgICAgICAgICAgICAg Z2xvYnVzX2lfZ2ZzX2NvbmZpZ19zdHJpbmcoIm5ldG1nciIpKTsKKyAKKyAgICAgICAgICAgICBy ZXN1bHQgPSBnbG9idXNfeGlvX2F0dHJfY250bCgKK0BAIC03MTk3LDEzICs3MTk3LDEzIEBAIGds b2J1c19sX2dmc19kYXRhX2hhbmRsZV9pbml0KAorICAgICAgICAgICAgICAgICAgICAgIlNldHRp bmcgbmV0d29yayBtYW5hZ2VyIG9wdGlvbnMgXCIlc1wiOiAlc1xuIiwKKyAgICAgICAgICAgICAg ICAgICAgIG9wdF9zdHIsCisgICAgICAgICAgICAgICAgICAgICBnbG9idXNfZXJyb3JfcHJpbnRf ZnJpZW5kbHkoZ2xvYnVzX2Vycm9yX3BlZWsocmVzdWx0KSkpOworLSAgICAgICAgICAgICAgICBn bG9idXNfZnJlZShvcHRfc3RyKTsgICAgCisrICAgICAgICAgICAgICAgIGdsb2J1c19mcmVlKG9w dF9zdHIpOworICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2NvbnRyb2w7CisgICAgICAgICAg ICAgfQorIAorICAgICAgICAgICAgIGdsb2J1c19mcmVlKG9wdF9zdHIpOworICAgICAgICAgfQor LSAgICAgICAgCisrCisgICAgICAgICByZXN1bHQgPSBnbG9idXNfaV9mdHBfY29udHJvbF9kYXRh X3NldF9zdGFjaygKKyAgICAgICAgICAgICAmaGFuZGxlLT5kYXRhX2NoYW5uZWwsIHN0YWNrKTsK KyAgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKK0BAIC03NzIwLDcgKzc3MjAs NyBAQCBnbG9idXNfbF9nZnNfZGF0YV9oeWJyaWRfc2Vzc2lvbl9zdGFydF9jYigKKyB7CisgICAg IGdsb2J1c19sX2dmc19kYXRhX29wZXJhdGlvbl90ICogICAgIG9wOworICAgICBnbG9idXNfbF9n ZnNfZGF0YV9vcGVyYXRpb25fdCAqICAgICBoeWJyaWRfb3A7CistICAgIAorKworICAgICBvcCA9 IHVzZXJfYXJnOworICAgICBpZihvcCAmJiBvcC0+aHlicmlkX29wKQorICAgICB7CitAQCAtNzc1 NCw3ICs3NzU0LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfaHlicmlkX3Nlc3Npb25fc3RhcnRfY2Io CisgICAgICAgICAgICAgICAgIGdsb2J1c19sX2dmc19kYXRhX3Bhc3NpdmVfa2lja291dCwKKyAg ICAgICAgICAgICAgICAgYm91bmNlX2luZm8pOworICAgICAgICAgfQorLSAgICAKKysKKyAgICAg ICAgIGVsc2UKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBnbG9idXNfaV9nZnNfZGF0YV9yZXF1 ZXN0X3Bhc3NpdmUoCitAQCAtNzc5MCw3ICs3NzkwLDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfaHli cmlkX3Nlc3Npb25fc3RhcnRfY2IoCisgICAgICAgICAgICAgICAgIGdsb2J1c19sX2dmc19kYXRh X2FjdGl2ZV9raWNrb3V0LAorICAgICAgICAgICAgICAgICBib3VuY2VfaW5mbyk7CisgICAgICAg ICB9CistICAgIAorKworICAgICAgICAgZWxzZQorICAgICAgICAgeworICAgICAgICAgICAgIGds b2J1c19pX2dmc19kYXRhX3JlcXVlc3RfYWN0aXZlKAorQEAgLTc4MzYsNyArNzgzNiw3IEBAIGds b2J1c19sX2dmc19kYXRhX3Bhc3NpdmVfa2lja291dCgKKyAgICAgICAgIGJvdW5jZV9pbmZvLT5o YW5kbGUtPmlzX21pbmUgPSBHTE9CVVNfVFJVRTsKKyAgICAgICAgIGJvdW5jZV9pbmZvLT5oYW5k bGUtPnN0YXRlID0gR0xPQlVTX0xfR0ZTX0RBVEFfSEFORExFX1ZBTElEOworIAorLSAgICAgICAg cmVwbHkuaW5mby5kYXRhLmRhdGFfYXJnID0gKHZvaWQgKikgKGludHB0cl90KSAKKysgICAgICAg IHJlcGx5LmluZm8uZGF0YS5kYXRhX2FyZyA9ICh2b2lkICopIChpbnRwdHJfdCkKKyAgICAgICAg ICAgICBnbG9idXNfaGFuZGxlX3RhYmxlX2luc2VydCgKKyAgICAgICAgICAgICAgICAgJmJvdW5j ZV9pbmZvLT5oYW5kbGUtPnNlc3Npb25faGFuZGxlLT5oYW5kbGVfdGFibGUsCisgICAgICAgICAg ICAgICAgIGJvdW5jZV9pbmZvLT5oYW5kbGUsCitAQCAtNzkwMSwxNiArNzkwMSwxNiBAQCBnbG9i dXNfaV9nZnNfZGF0YV9yZXF1ZXN0X3Bhc3NpdmUoCisgICAgIHNlc3Npb25faGFuZGxlID0gKGds b2J1c19sX2dmc19kYXRhX3Nlc3Npb25fdCAqKSBzZXNzaW9uX2FyZzsKKyAgICAgZ2xvYnVzX2xf Z2ZzX2RhdGFfcmVzZXRfd2F0Y2hkb2coc2Vzc2lvbl9oYW5kbGUsIE5VTEwpOworIAorLSAgICBp ZihzZXNzaW9uX2hhbmRsZS0+aHlicmlkICYmIGRhdGFfaW5mby0+bWF4X2NzICE9IDEgJiYgCisr ICAgIGlmKHNlc3Npb25faGFuZGxlLT5oeWJyaWQgJiYgZGF0YV9pbmZvLT5tYXhfY3MgIT0gMSAm JgorICAgICAgICAgc2Vzc2lvbl9oYW5kbGUtPmRzaSAhPSBnbG9idXNfbF9nZnNfZHNpX2h5YnJp ZCkKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2xfZ2ZzX2RhdGFfb3BlcmF0aW9uX3QgKiAgICAg aHlicmlkX29wOworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2lfZ2ZzX2RhdGFfbmV3X2RzaSgK Ky0gICAgICAgICAgICAmZ2xvYnVzX2xfZ2ZzX2FjdGl2ZV9kc2lfaGFuZGxlLCAKKy0gICAgICAg ICAgICAicmVtb3RlIiwgCistICAgICAgICAgICAgJmdsb2J1c19sX2dmc19kc2lfaHlicmlkLCAK KysgICAgICAgICAgICAmZ2xvYnVzX2xfZ2ZzX2FjdGl2ZV9kc2lfaGFuZGxlLAorKyAgICAgICAg ICAgICJyZW1vdGUiLAorKyAgICAgICAgICAgICZnbG9idXNfbF9nZnNfZHNpX2h5YnJpZCwKKyAg ICAgICAgICAgICBHTE9CVVNfRkFMU0UpOworLSAgICAgICAgCisrCisgICAgICAgICBpZighZ2xv YnVzX2xfZ2ZzX2RzaV9oeWJyaWQpCisgICAgICAgICB7CisgICAgICAgICAgICAgZ290byBlcnJv cl9vcDsKK0BAIC03OTI1LDcgKzc5MjUsNyBAQCBnbG9idXNfaV9nZnNfZGF0YV9yZXF1ZXN0X3Bh c3NpdmUoCisgICAgICAgICB9CisgCisgICAgICAgICBzZXNzaW9uX2hhbmRsZS0+ZHNpID0gZ2xv YnVzX2xfZ2ZzX2RzaV9oeWJyaWQ7CistICAgICAgICAKKysKKyAgICAgICAgIHJlc3VsdCA9IGds b2J1c19sX2dmc19kYXRhX29wZXJhdGlvbl9pbml0KCZvcCwgc2Vzc2lvbl9oYW5kbGUpOworICAg ICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICAgICAgeworQEAgLTc5MzMs NyArNzkzMyw3IEBAIGdsb2J1c19pX2dmc19kYXRhX3JlcXVlc3RfcGFzc2l2ZSgKKyAgICAgICAg ICAgICAgICAgImdsb2J1c19sX2dmc19kYXRhX29wZXJhdGlvbl9pbml0IiwgcmVzdWx0KTsKKyAg ICAgICAgICAgICBnb3RvIGVycm9yX29wOworICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAg ICAgICByZXN1bHQgPSBnbG9idXNfbF9nZnNfZGF0YV9vcGVyYXRpb25faW5pdCgKKyAgICAgICAg ICAgICAoZ2xvYnVzX2xfZ2ZzX2RhdGFfb3BlcmF0aW9uX3QgKiopICZvcC0+aHlicmlkX29wLCBz ZXNzaW9uX2hhbmRsZSk7CisgICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCitA QCAtNzk1Miw4ICs3OTUyLDggQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfcmVxdWVzdF9wYXNzaXZlKAor ICAgICAgICAgaHlicmlkX29wLT5zZXNzaW9uX2hhbmRsZSA9IHNlc3Npb25faGFuZGxlOworICAg ICAgICAgaHlicmlkX29wLT5pbmZvX3N0cnVjdCA9IGRhdGFfaW5mbzsKKyAKKy0gICAgICAgIAor LSAgICAgICAgCisrCisrCisgICAgICAgICBvcC0+Y2FsbGJhY2sgPSBnbG9idXNfbF9nZnNfZGF0 YV9oeWJyaWRfc2Vzc2lvbl9zdGFydF9jYjsKKyAgICAgICAgIG9wLT51c2VyX2FyZyA9IG9wOwor ICAgICAgICAgb3AtPnNlc3Npb25faGFuZGxlID0gc2Vzc2lvbl9oYW5kbGU7CitAQCAtNzk2Miwx MCArNzk2MiwxMCBAQCBnbG9idXNfaV9nZnNfZGF0YV9yZXF1ZXN0X3Bhc3NpdmUoCisgICAgICAg ICBvcC0+dHlwZSA9IEdMT0JVU19MX0dGU19EQVRBX0lORk9fVFlQRV9QQVNTSVZFOworICAgICAg ICAgZ2xvYnVzX2xfZ2ZzX2RhdGFfYXV0aF9pbml0X2NiKAorICAgICAgICAgICAgICAgICBOVUxM LCBHRlNfQUNMX0FDVElPTl9JTklULCBvcCwgR0xPQlVTX1NVQ0NFU1MpOworLSAgICAgICAgCisr CisgICAgICAgICByZXR1cm47CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKHNlc3Npb25faGFu ZGxlLT5kc2ktPnBhc3NpdmVfZnVuYyAhPSBOVUxMKQorICAgICB7CisgICAgICAgICByZXN1bHQg PSBnbG9idXNfbF9nZnNfZGF0YV9vcGVyYXRpb25faW5pdCgmb3AsIHNlc3Npb25faGFuZGxlKTsK K0BAIC04MDA5LDcgKzgwMDksNyBAQCBnbG9idXNfaV9nZnNfZGF0YV9yZXF1ZXN0X3Bhc3NpdmUo CisgICAgICAgICAgICAgZGF0YV9pbmZvLT5kZWxfY3JlZCA9IHNlc3Npb25faGFuZGxlLT5kZWxf Y3JlZDsKKyAgICAgICAgIH0KKyAgICAgICAgIGVsc2UKKy0gICAgICAgIHsgICAKKysgICAgICAg IHsKKyAgICAgICAgICAgICBzZXNzaW9uX2hhbmRsZS0+ZGNzY19jcmVkID0gZGF0YV9pbmZvLT5k ZWxfY3JlZDsKKyAgICAgICAgICAgICBkYXRhX2luZm8tPmRlbF9jcmVkID0gTlVMTDsKKyAgICAg ICAgIH0KK0BAIC04MDM1LDcgKzgwMzUsNyBAQCBnbG9idXNfaV9nZnNfZGF0YV9yZXF1ZXN0X3Bh c3NpdmUoCisgICAgICAgICAgICAgICAgICJnbG9idXNfZnRwX2NvbnRyb2xfbG9jYWxfcGFzdiIs IHJlc3VsdCk7CisgICAgICAgICAgICAgZ290byBlcnJvcl9jb250cm9sOworICAgICAgICAgfQor LSAgICAgICAgCisrCisgCisgICAgICAgICAvKiBYWFggVGhpcyBuZWVkcyB0byBiZSBzbWFydGVy LiAgVGhlIGFkZHJlc3Mgc2hvdWxkIGJlIHRoZSBzYW1lIG9uZQorICAgICAgICAgICogdGhlIHVz ZXIgaXMgY29ubmVjdGVkIHRvIG9uIHRoZSBjb250cm9sIGNoYW5uZWwgKGF0IGxlYXN0IHdoZW4K K0BAIC04MjMyLDE3ICs4MjMyLDE3IEBAIGdsb2J1c19pX2dmc19kYXRhX3JlcXVlc3RfYWN0aXZl KAorICAgICBzZXNzaW9uX2hhbmRsZSA9IChnbG9idXNfbF9nZnNfZGF0YV9zZXNzaW9uX3QgKikg c2Vzc2lvbl9hcmc7CisgICAgIGdsb2J1c19sX2dmc19kYXRhX3Jlc2V0X3dhdGNoZG9nKHNlc3Np b25faGFuZGxlLCBOVUxMKTsKKyAKKy0gICAgaWYoc2Vzc2lvbl9oYW5kbGUtPmh5YnJpZCAmJiBk YXRhX2luZm8tPmNzX2NvdW50ICE9IDEgJiYgCisrICAgIGlmKHNlc3Npb25faGFuZGxlLT5oeWJy aWQgJiYgZGF0YV9pbmZvLT5jc19jb3VudCAhPSAxICYmCisgICAgICAgICBzZXNzaW9uX2hhbmRs ZS0+ZHNpICE9IGdsb2J1c19sX2dmc19kc2lfaHlicmlkKQorICAgICB7CisgICAgICAgICBnbG9i dXNfbF9nZnNfZGF0YV9vcGVyYXRpb25fdCAqICAgICBoeWJyaWRfb3A7CistICAgICAgICAKKysK KyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19pX2dmc19kYXRhX25ld19kc2koCisgICAgICAgICAg ICAgJmdsb2J1c19sX2dmc19hY3RpdmVfZHNpX2hhbmRsZSwKKyAgICAgICAgICAgICAicmVtb3Rl IiwKKyAgICAgICAgICAgICAmZ2xvYnVzX2xfZ2ZzX2RzaV9oeWJyaWQsCisgICAgICAgICAgICAg R0xPQlVTX0ZBTFNFKTsKKy0gICAgICAgIAorKworICAgICAgICAgaWYoIWdsb2J1c19sX2dmc19k c2lfaHlicmlkKQorICAgICAgICAgeworICAgICAgICAgICAgIGdvdG8gZXJyb3Jfb3A7CitAQCAt ODI1Nyw3ICs4MjU3LDcgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfcmVxdWVzdF9hY3RpdmUoCisgICAg ICAgICB9CisgCisgICAgICAgICBzZXNzaW9uX2hhbmRsZS0+ZHNpID0gZ2xvYnVzX2xfZ2ZzX2Rz aV9oeWJyaWQ7CistICAgICAgICAKKysKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX2dmc19k YXRhX29wZXJhdGlvbl9pbml0KCZvcCwgc2Vzc2lvbl9oYW5kbGUpOworICAgICAgICAgaWYocmVz dWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICAgICAgeworQEAgLTgyNjUsNyArODI2NSw3IEBA IGdsb2J1c19pX2dmc19kYXRhX3JlcXVlc3RfYWN0aXZlKAorICAgICAgICAgICAgICAgICAiZ2xv YnVzX2xfZ2ZzX2RhdGFfb3BlcmF0aW9uX2luaXQiLCByZXN1bHQpOworICAgICAgICAgICAgIGdv dG8gZXJyb3Jfb3A7CisgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAgIHJlc3VsdCA9 IGdsb2J1c19sX2dmc19kYXRhX29wZXJhdGlvbl9pbml0KAorICAgICAgICAgICAgIChnbG9idXNf bF9nZnNfZGF0YV9vcGVyYXRpb25fdCAqKikgJm9wLT5oeWJyaWRfb3AsIHNlc3Npb25faGFuZGxl KTsKKyAgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKK0BAIC04Mjg0LDggKzgy ODQsOCBAQCBnbG9idXNfaV9nZnNfZGF0YV9yZXF1ZXN0X2FjdGl2ZSgKKyAgICAgICAgIGh5YnJp ZF9vcC0+c2Vzc2lvbl9oYW5kbGUgPSBzZXNzaW9uX2hhbmRsZTsKKyAgICAgICAgIGh5YnJpZF9v cC0+aW5mb19zdHJ1Y3QgPSBkYXRhX2luZm87CisgCistICAgICAgICAKKy0gICAgICAgIAorKwor KworICAgICAgICAgb3AtPmNhbGxiYWNrID0gZ2xvYnVzX2xfZ2ZzX2RhdGFfaHlicmlkX3Nlc3Np b25fc3RhcnRfY2I7CisgICAgICAgICBvcC0+dXNlcl9hcmcgPSBvcDsKKyAgICAgICAgIG9wLT5z ZXNzaW9uX2hhbmRsZSA9IHNlc3Npb25faGFuZGxlOworQEAgLTgyOTQsMTAgKzgyOTQsMTAgQEAg Z2xvYnVzX2lfZ2ZzX2RhdGFfcmVxdWVzdF9hY3RpdmUoCisgICAgICAgICBvcC0+dHlwZSA9IEdM T0JVU19MX0dGU19EQVRBX0lORk9fVFlQRV9BQ1RJVkU7CisgICAgICAgICBnbG9idXNfbF9nZnNf ZGF0YV9hdXRoX2luaXRfY2IoCisgICAgICAgICAgICAgICAgIE5VTEwsIEdGU19BQ0xfQUNUSU9O X0lOSVQsIG9wLCBHTE9CVVNfU1VDQ0VTUyk7CistICAgICAgICAKKysKKyAgICAgICAgIHJldHVy bjsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaWYoc2Vzc2lvbl9oYW5kbGUtPmRzaS0+YWN0aXZl X2Z1bmMgIT0gTlVMTCkKKyAgICAgeworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2xfZ2ZzX2Rh dGFfb3BlcmF0aW9uX2luaXQoJm9wLCBzZXNzaW9uX2hhbmRsZSk7CitAQCAtODQ4OSw3ICs4NDg5 LDcgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfcmVxdWVzdF9yZWN2KAorIAorICAgICBzZXNzaW9uX2hh bmRsZSA9IChnbG9idXNfbF9nZnNfZGF0YV9zZXNzaW9uX3QgKikgc2Vzc2lvbl9hcmc7CisgICAg IGdsb2J1c19sX2dmc19kYXRhX3Jlc2V0X3dhdGNoZG9nKHNlc3Npb25faGFuZGxlLCAiUkVDViIp OworLSAgICAKKysKKyAgICAgLyogWU9VIEFSRSBFTlRFUklORyBUSEUgVUdMWSBIQUNLIFpPTkUg Ki8KKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJnNlc3Npb25faGFuZGxlLT5tdXRleCk7CisgICAg IHsKK0BAIC04NTE3LDcgKzg1MTcsNyBAQCBnbG9idXNfaV9nZnNfZGF0YV9yZXF1ZXN0X3JlY3Yo CisgICAgICAgICAgICAgImdsb2J1c19sX2dmc19kYXRhX29wZXJhdGlvbl9pbml0IiwgcmVzdWx0 KTsKKyAgICAgICAgIGdvdG8gZXJyb3Jfb3A7CisgICAgIH0KKy0gCisrCisgICAgIG9wLT5pcGNf aGFuZGxlID0gaXBjX2hhbmRsZTsKKyAgICAgb3AtPnNlc3Npb25faGFuZGxlID0gc2Vzc2lvbl9o YW5kbGU7CisgICAgIG9wLT50eXBlID0gR0xPQlVTX0xfR0ZTX0RBVEFfSU5GT19UWVBFX1JFQ1Y7 CitAQCAtODUzOSwxNCArODUzOSwxNCBAQCBnbG9idXNfaV9nZnNfZGF0YV9yZXF1ZXN0X3JlY3Yo CisgICAgIG9wLT5tYXJrZXJzID0gZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19ib29sKCJhbHdheXNfc2Vu ZF9tYXJrZXJzIik7CisgICAgIGlmKHNlc3Npb25faGFuZGxlLT5zdG9yYXR0cl9zdHIpCisgICAg IHsKKy0gICAgICAgIG9wLT5zdG9yYXR0ciA9IChnbG9idXNfbF9nZnNfc3RvcmF0dHJfdCAqKSAK KysgICAgICAgIG9wLT5zdG9yYXR0ciA9IChnbG9idXNfbF9nZnNfc3RvcmF0dHJfdCAqKQorICAg ICAgICAgICAgIGdsb2J1c19jYWxsb2MoMSwgc2l6ZW9mKGdsb2J1c19sX2dmc19zdG9yYXR0cl90 KSk7CisgICAgICAgICBvcC0+c3RvcmF0dHItPmFsbCA9IHNlc3Npb25faGFuZGxlLT5zdG9yYXR0 cl9zdHI7CisgICAgICAgICBzZXNzaW9uX2hhbmRsZS0+c3RvcmF0dHJfc3RyID0gTlVMTDsKKyAK KyAgICAgICAgIG9wLT5zdG9yYXR0ci0+bW9kaWZ5ID0gZ2xvYnVzX2lfZ2ZzX2t2X2dldHZhbCgK KyAgICAgICAgICAgICBvcC0+c3RvcmF0dHItPmFsbCwgIm1vZGlmeSIsIDApOworLSAgICAgICAg ICAgIAorKworICAgICAgICAgb3AtPnN0b3JhdHRyLT5jaGVja3N1bV9tZDUgPSBnbG9idXNfaV9n ZnNfa3ZfZ2V0dmFsKAorICAgICAgICAgICAgIG9wLT5zdG9yYXR0ci0+YWxsLCAieC5jaGVja3N1 bS5tZDUiLCAwKTsKKyAgICAgICAgIGlmKCFvcC0+c3RvcmF0dHItPmNoZWNrc3VtX21kNSkKK0BA IC04NTU0LDExICs4NTU0LDExIEBAIGdsb2J1c19pX2dmc19kYXRhX3JlcXVlc3RfcmVjdigKKyAg ICAgICAgICAgICBvcC0+c3RvcmF0dHItPmNoZWNrc3VtX21kNSA9IGdsb2J1c19pX2dmc19rdl9n ZXR2YWwoCisgICAgICAgICAgICAgICAgIG9wLT5zdG9yYXR0ci0+YWxsLCAiY2hlY2tzdW0ubWQ1 IiwgMCk7CisgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAgIGlmKG9wLT5zdG9yYXR0 ci0+Y2hlY2tzdW1fbWQ1ICYmICFyZWN2X2luZm8tPmV4cGVjdGVkX2NoZWNrc3VtKQorICAgICAg ICAgeworICAgICAgICAgICAgIHJlY3ZfaW5mby0+ZXhwZWN0ZWRfY2hlY2tzdW1fYWxnID0gZ2xv YnVzX2xpYmNfc3RyZHVwKCJtZDUiKTsKKy0gICAgICAgICAgICByZWN2X2luZm8tPmV4cGVjdGVk X2NoZWNrc3VtID0gCisrICAgICAgICAgICAgcmVjdl9pbmZvLT5leHBlY3RlZF9jaGVja3N1bSA9 CisgICAgICAgICAgICAgICAgIGdsb2J1c19saWJjX3N0cmR1cChvcC0+c3RvcmF0dHItPmNoZWNr c3VtX21kNSk7CisgICAgICAgICB9CisgICAgIH0KK0BAIC04NTY4LDcgKzg1NjgsNyBAQCBnbG9i dXNfaV9nZnNfZGF0YV9yZXF1ZXN0X3JlY3YoCisgICAgIHsKKyAgICAgICAgIC8qIGdsb2J1c19h c3NlcnQoZGF0YV9oYW5kbGUtPm91dHN0YW5kaW5nX29wID09IE5VTEwpOyAqLworICAgICAgICAg ZGF0YV9oYW5kbGUtPm91dHN0YW5kaW5nX29wID0gb3A7CistICAgIGdsb2J1c19hc3NlcnQoZGF0 YV9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19MX0dGU19EQVRBX0hBTkRMRV9WQUxJRCB8fCAKKysg ICAgZ2xvYnVzX2Fzc2VydChkYXRhX2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0xfR0ZTX0RBVEFf SEFORExFX1ZBTElEIHx8CisgICAgICAgICBkYXRhX2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0xf R0ZTX0RBVEFfSEFORExFX1RFX1ZBTElEKTsKKyAgICAgZGF0YV9oYW5kbGUtPnN0YXRlID0gR0xP QlVTX0xfR0ZTX0RBVEFfSEFORExFX0lOVVNFOworICAgICB9CitAQCAtODU3Nyw3ICs4NTc3LDcg QEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfcmVxdWVzdF9yZWN2KAorICAgICB7CisgICAgICAgICBvcC0+ aHR0cF9pcCA9IGRhdGFfaGFuZGxlLT5odHRwX2lwOworICAgICAgICAgZGF0YV9oYW5kbGUtPmh0 dHBfaXAgPSBOVUxMOworLSAgICAgICAgCisrCisgICAgICAgICBvcC0+b3BfaW5mb19pZCA9IGds b2J1c19sX2dmc19vcF9pbmZvX2N0cisrOworICAgICAgICAgaWYoIXJlY3ZfaW5mby0+b3BfaW5m bykKKyAgICAgICAgIHsKK0BAIC04NzQ4LDcgKzg3NDgsNyBAQCBnbG9idXNfaV9nZnNfZGF0YV9y ZXF1ZXN0X3NlbmQoCisgICAgIHsKKyAgICAgICAgIC8qZ2xvYnVzX2Fzc2VydChkYXRhX2hhbmRs ZS0+b3V0c3RhbmRpbmdfb3AgPT0gTlVMTCk7ICovCisgICAgICAgICBkYXRhX2hhbmRsZS0+b3V0 c3RhbmRpbmdfb3AgPSBvcDsKKy0gICAgZ2xvYnVzX2Fzc2VydChkYXRhX2hhbmRsZS0+c3RhdGUg PT0gR0xPQlVTX0xfR0ZTX0RBVEFfSEFORExFX1ZBTElEIHx8IAorKyAgICBnbG9idXNfYXNzZXJ0 KGRhdGFfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfTF9HRlNfREFUQV9IQU5ETEVfVkFMSUQgfHwK KyAgICAgICAgIGRhdGFfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfTF9HRlNfREFUQV9IQU5ETEVf VEVfVkFMSUQpOworICAgICBkYXRhX2hhbmRsZS0+c3RhdGUgPSBHTE9CVVNfTF9HRlNfREFUQV9I QU5ETEVfSU5VU0U7CisgICAgIH0KK0BAIC04NzU3LDcgKzg3NTcsNyBAQCBnbG9idXNfaV9nZnNf ZGF0YV9yZXF1ZXN0X3NlbmQoCisgICAgIHsKKyAgICAgICAgIG9wLT5odHRwX2lwID0gZGF0YV9o YW5kbGUtPmh0dHBfaXA7CisgICAgICAgICBkYXRhX2hhbmRsZS0+aHR0cF9pcCA9IE5VTEw7Cist ICAgICAgICAKKysKKyAgICAgICAgIG9wLT5vcF9pbmZvX2lkID0gZ2xvYnVzX2xfZ2ZzX29wX2lu Zm9fY3RyKys7CisgICAgICAgICBpZighc2VuZF9pbmZvLT5vcF9pbmZvKQorICAgICAgICAgewor QEAgLTg3NzQsNyArODc3NCw3IEBAIGdsb2J1c19pX2dmc19kYXRhX3JlcXVlc3Rfc2VuZCgKKyAg ICAgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF9wYXRobmFtZSA9IE5V TEw7CisgCisgICAgICAgICBjaGRpcl90byA9IGdsb2J1c19pX2dmc19jb25maWdfc3RyaW5nKCJj aGRpcl90byIpOworLSAgICAgICAgCisrCisgICAgICAgICByZXN1bHQgPSBnbG9idXNfaV9nZnNf Z2V0X2Z1bGxfcGF0aCgKKyAgICAgICAgICAgICBzZXNzaW9uX2hhbmRsZS0+aG9tZV9kaXIsCisg ICAgICAgICAgICAgY2hkaXJfdG8gPyBjaGRpcl90byA6ICIvIiwgLy8gWFhYCitAQCAtODg1Myw3 ICs4ODUzLDcgQEAgZXJyb3JfaGFuZGxlOgorIHN0YXRpYworIHZvaWQKKyBnbG9idXNfbF9nZnNf ZGF0YV9saXN0X2RvbmUoCistICAgIGdsb2J1c19sX2dmc19kYXRhX29wZXJhdGlvbl90KiAgICAg IG9wLCAKKysgICAgZ2xvYnVzX2xfZ2ZzX2RhdGFfb3BlcmF0aW9uX3QqICAgICAgb3AsCisgICAg IGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCkKKyB7CisgICAgIHdo aWxlKG9wLT5wYXRoX2xpc3QpCitAQCAtODg3MSw3ICs4ODcxLDcgQEAgZ2xvYnVzX2xfZ2ZzX2Rh dGFfbGlzdF9kb25lKAorICAgICAgICAgZ2xvYnVzX2ZyZWUodG9mcmVlLT5wYXRobmFtZSk7Cisg ICAgICAgICBnbG9idXNfZnJlZSh0b2ZyZWUpOworICAgICB9CistICAgICAgICAKKysKKyAgICAg b3AtPmN1cnJlbnRfcGF0aCA9IE5VTEw7CisgICAgIGdsb2J1c19mcmVlKG9wLT5zdGF0X3dyYXBw ZXIpOworICAgICBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmluaXNoZWRfdHJhbnNmZXIob3AsIHJl c3VsdCk7CitAQCAtODg5OSwxOCArODg5OSwxOCBAQCBnbG9idXNfbF9nZnNfZGF0YV9yZXF1ZXN0 X25leHRfcGF0aCgKKyAgICAgICAgIG9yaWdfb3AtPmN1cnJlbnRfcGF0aCA9IE5VTEw7CisgICAg ICAgICBmcmVlKHN0YXRfaW5mby0+cGF0aG5hbWUpOworICAgICB9CistIAorKworICAgICBuZXh0 cGF0aCA9IG9yaWdfb3AtPnBhdGhfbGlzdDsKKyAgICAgaWYobmV4dHBhdGgpCisgICAgIHsKKyAg ICAgICAgIG9yaWdfb3AtPnBhdGhfbGlzdCA9IG5leHRwYXRoLT5uZXh0OworLSAgICAgICAgCisr CisgICAgICAgICByZXN1bHQgPSBnbG9idXNfbF9nZnNfZGF0YV9vcGVyYXRpb25faW5pdCgmb3As IG9yaWdfb3AtPnNlc3Npb25faGFuZGxlKTsKKyAgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNf U1VDQ0VTUykKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBnb3RvIGVycm9yX29wOworLSAgICAg ICAgfSAgICAKKy0gICAgICAgIAorKyAgICAgICAgfQorKworICAgICAgICAgb3AtPnVpZCA9IGdl dHVpZCgpOworICAgICAgICAgb3AtPnN0YXRlID0gR0xPQlVTX0xfR0ZTX0RBVEFfUkVRVUVTVElO RzsKKyAgICAgICAgIG9wLT5jYWxsYmFjayA9IGdsb2J1c19sX2dmc19kYXRhX2xpc3Rfc3RhdF9j YjsKK0BAIC04OTE4LDE1ICs4OTE4LDE1IEBAIGdsb2J1c19sX2dmc19kYXRhX3JlcXVlc3RfbmV4 dF9wYXRoKAorICAgICAgICAgb3AtPnNlc3Npb25faGFuZGxlID0gb3JpZ19vcC0+c2Vzc2lvbl9o YW5kbGU7CisgICAgICAgICBvcC0+aW5mb19zdHJ1Y3QgPSBvcmlnX29wLT5zdGF0X3dyYXBwZXI7 CisgICAgICAgICBvcC0+dHlwZSA9IEdMT0JVU19MX0dGU19EQVRBX0lORk9fVFlQRV9TVEFUOwor LSAgICAKKysKKyAgICAgICAgIHN0YXRfaW5mby0+cGF0aG5hbWUgPSBuZXh0cGF0aC0+cGF0aG5h bWU7CistICAgICAgICAKKysKKyAgICAgICAgIGdsb2J1c19jYWxsYmFja19yZWdpc3Rlcl9vbmVz aG90KAorICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAg ICBnbG9idXNfbF9nZnNfYmxvY2tpbmdfZGlzcGF0Y2hfa2lja291dCwKKyAgICAgICAgICAgICBv cCk7CistICAgICAgICAgICAgCisrCisgICAgICAgICBvcmlnX29wLT5jdXJyZW50X3BhdGggPSBu ZXh0cGF0aDsKKyAgICAgfQorIAorQEAgLTg5NjUsMjEgKzg5NjUsMjEgQEAgZ2xvYnVzX2xfZ2Zz X2RhdGFfbGlzdF93cml0ZV9jYigKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2ZyZWUoYm91bmNl X2luZm8tPmxpc3RfcmVzcG9uc2UpOworICAgICB9CistICAgIAorKworICAgICBnbG9idXNfbXV0 ZXhfbG9jaygmb3AtPnN0YXRfbG9jayk7CisgICAgIGlmKGJvdW5jZV9pbmZvLT5maW5hbF9zdGF0 ICYmICFnbG9idXNfbF9nZnNfZGF0YV9yZXF1ZXN0X25leHRfcGF0aChvcCkpCisgICAgIHsKKyAg ICAgICAgIGZpbmlzaCA9IEdMT0JVU19UUlVFOworICAgICB9CisgICAgIGdsb2J1c19tdXRleF91 bmxvY2soJm9wLT5zdGF0X2xvY2spOworLSAgICAKKysKKyAgICAgZ2xvYnVzX2ZyZWUoYm91bmNl X2luZm8pOworIAorICAgICBpZihvcC0+ZGVsYXllZF9lcnJvciAhPSBHTE9CVVNfU1VDQ0VTUykK KyAgICAgeworICAgICAgICAgcmVzdWx0ID0gb3AtPmRlbGF5ZWRfZXJyb3I7CisgICAgIH0KKy0g ICAgCisrCisgICAgIGlmKGZpbmlzaCkKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2xfZ2ZzX2Rh dGFfbGlzdF9kb25lKG9wLCByZXN1bHQpOworQEAgLTkwMDcsNyArOTAwNyw3IEBAIGdsb2J1c19s X2dmc19kYXRhX2xpc3Rfc3RhdF9jYigKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaTsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGly bGVuOworICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbGVuOwor LSAgICAKKysKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9nZnNfZGF0YV9saXN0X3N0YXRf Y2IpOworICAgICBHbG9idXNHRlNEZWJ1Z0VudGVyKCk7CisgCitAQCAtOTAyNSw3ICs5MDI1LDcg QEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfbGlzdF9zdGF0X2NiKAorICAgICAgICAgcmVzdWx0ID0gcmVw bHktPnJlc3VsdDsKKyAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgIH0KKy0gICAgICAgIGlmICgh KG9wLT50cmF2ZXJzYWxfb3B0aW9ucyAmIEdMT0JVU19HRlNfVFJBVkVSU0FMX0NPTlRJTlVFKSkg CisrICAgICAgICBpZiAoIShvcC0+dHJhdmVyc2FsX29wdGlvbnMgJiBHTE9CVVNfR0ZTX1RSQVZF UlNBTF9DT05USU5VRSkpCisgICAgICAgICB7CisgICAgICAgICAgICAgLyoqIE1MU1IgZmFpbHVy ZS4gIFdlIHdhbnQgdG8gd3JpdGUgb3V0IHRoZSBpbmZvcm1hdGlvbiBmb3IKKyAgICAgICAgICAg ICAgKiAgdGhpcyBkaXJlY3RvcnkgYW5kIHRoZW4gZmFpbC4gKi8KK0BAIC05MDM2LDEzICs5MDM2 LDEzIEBAIGdsb2J1c19sX2dmc19kYXRhX2xpc3Rfc3RhdF9jYigKKyAgICAgc3RhdF9hcnJheSA9 IHJlcGx5LT5pbmZvLnN0YXQuc3RhdF9hcnJheTsKKyAgICAgc3RhdF9jb3VudCA9IHJlcGx5LT5p bmZvLnN0YXQuc3RhdF9jb3VudDsKKyAgICAgZmlsZV9jb3VudCA9IHN0YXRfY291bnQ7CistICAg IAorKworICAgICBpZihvcC0+bGlzdF9kZXB0aCAhPSAwKQorICAgICB7CisgICAgICAgICAvKiog U2tpcCB0aGUgZmlyc3QgZW50cnkgaWYgd2UgYXJlIGluY2x1ZGluZyB0aGUgZGlyZWN0b3J5IGl0 c2VsZiBpbiB0aGUgbGlzdGluZyAqLworICAgICAgICAgaW50IGJhc2VfZW50cnkgPSAwOworLSAg ICAgICAgICAgCistICAgICAgICAvKiogQ29ycmVjdCBmb3IgcGF0aCB3aGljaCBwb2ludGVkIHRv IGEgc2luZ2xlIGZpbGUgKi8gICAgIAorKworKyAgICAgICAgLyoqIENvcnJlY3QgZm9yIHBhdGgg d2hpY2ggcG9pbnRlZCB0byBhIHNpbmdsZSBmaWxlICovCisgICAgICAgICBpZihzdGF0X2NvdW50 ID09IDEgJiYgb3AtPmN1cnJlbnRfcGF0aCAmJiBvcC0+Y3VycmVudF9wYXRoLT5zdWJwYXRoKQor ICAgICAgICAgeworICAgICAgICAgICAgIGludCBwbGVuID0gc3RybGVuKG9wLT5jdXJyZW50X3Bh dGgtPnN1YnBhdGgpOworQEAgLTkwNTAsMTIgKzkwNTAsMTIgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFf bGlzdF9zdGF0X2NiKAorICAgICAgICAgICAgIGlmKHBsZW4gPiBubGVuICYmIHN0cmNtcCgmb3At PmN1cnJlbnRfcGF0aC0+c3VicGF0aFtwbGVuLW5sZW5dLCBzdGF0X2FycmF5WzBdLm5hbWUpID09 IDApCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBvcC0+Y3VycmVudF9wYXRoLT5z dWJwYXRoW3BsZW4tbmxlbi0xXSA9ICdcMCc7CistICAgICAgICAgICAgfSAgICAKKysgICAgICAg ICAgICB9CisgICAgICAgICB9CisgCisgICAgICAgICBpZiAoc3RhdF9pbmZvLT5pbmNsdWRlX3Bh dGhfc3RhdCAmJiBzdGF0X2NvdW50ID4gMCAmJiBTX0lTRElSKHN0YXRfYXJyYXlbMF0ubW9kZSkp CisgICAgICAgICB7CistICAgICAgICAgICAgaWYgKG9wLT5jdXJyZW50X3BhdGgpIAorKyAgICAg ICAgICAgIGlmIChvcC0+Y3VycmVudF9wYXRoKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgc3RhdF9hcnJheVswXS5uYW1lWzBdID0gJ1wwJzsKKyAgICAgICAgICAgICB9CitAQCAt OTA2NiwxMSArOTA2NiwxMSBAQCBnbG9idXNfbF9nZnNfZGF0YV9saXN0X3N0YXRfY2IoCisgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICsrYmFzZV9lbnRyeTsKKyAgICAgICAgIH0KKy0gICAg ICAgIAorKworICAgICAgICAgLyoqIE1vdmUgdW53YW50ZWQgZGlyZWN0b3J5IGVudHJpZXMgdG8g dGhlIGVuZCBhbmQgYWRkIHRoZW0gdG8gdGhlIHBhdGggKi8KKyAgICAgICAgIGZvciAoaSA9IGJh c2VfZW50cnk7IGkgPCBmaWxlX2NvdW50OykKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBpZiAo U19JU0RJUihzdGF0X2FycmF5W2ldLm1vZGUpICYmIAorKyAgICAgICAgICAgIGlmIChTX0lTRElS KHN0YXRfYXJyYXlbaV0ubW9kZSkgJiYKKyAgICAgICAgICAgICAgICAgKHN0YXRfaW5mby0+aW5j bHVkZV9wYXRoX3N0YXQgfHwKKyAgICAgICAgICAgICAgICAgICAgIChzdGF0X2FycmF5W2ldLm5h bWVbMF0gPT0gJy4nICYmCisgICAgICAgICAgICAgICAgICAgICAgKHN0YXRfYXJyYXlbaV0ubmFt ZVsxXSA9PSAnXDAnIHx8IChzdGF0X2FycmF5W2ldLm5hbWVbMV0gPT0gJy4nICYmIHN0YXRfYXJy YXlbaV0ubmFtZVsyXSA9PSAnXDAnKSkpKSkKK0BAIC05MDgxLDI5ICs5MDgxLDI5IEBAIGdsb2J1 c19sX2dmc19kYXRhX2xpc3Rfc3RhdF9jYigKKyAgICAgICAgICAgICAgICAgbWVtY3B5KCZzdGF0 X2FycmF5W2ldLCAmc3RhdF9hcnJheVtmaWxlX2NvdW50LTFdLCBzaXplb2YoZ2xvYnVzX2dmc19z dGF0X3QpKTsKKyAgICAgICAgICAgICAgICAgbWVtY3B5KCZzdGF0X2FycmF5W2ZpbGVfY291bnQt MV0sICZzdGF0X3RlbXAsIHNpemVvZihnbG9idXNfZ2ZzX3N0YXRfdCkpOworICAgICAgICAgICAg ICAgICAvKiogRGVjcmVtZW50IGVmZmVjdGl2ZSBjb3VudCAqLworLSAgICAgICAgICAgICAgICAt LWZpbGVfY291bnQ7ICAgIAorKyAgICAgICAgICAgICAgICAtLWZpbGVfY291bnQ7CisgICAgICAg ICAgICAgfQorICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICsraTsKKy0gICAgICAgICAgICB9ICAgCisrICAgICAgICAgICAgfQorICAgICAgICAgfQor LSAgICAgICAgCisrCisgICAgICAgICBkaXJsZW4gPSBzdHJsZW4oc3RhdF9pbmZvLT5wYXRobmFt ZSk7CistICAgICAgICBiYXNlbGVuID0gb3AtPmN1cnJlbnRfcGF0aCA/IAorLSAgICAgICAgICAg IChzdHJsZW4ob3AtPmN1cnJlbnRfcGF0aC0+cGF0aG5hbWUpIC0gc3RybGVuKG9wLT5jdXJyZW50 X3BhdGgtPnN1YnBhdGgpKSA6IAorKyAgICAgICAgYmFzZWxlbiA9IG9wLT5jdXJyZW50X3BhdGgg PworKyAgICAgICAgICAgIChzdHJsZW4ob3AtPmN1cnJlbnRfcGF0aC0+cGF0aG5hbWUpIC0gc3Ry bGVuKG9wLT5jdXJyZW50X3BhdGgtPnN1YnBhdGgpKSA6CisgICAgICAgICAgICAgKGRpcmxlbiAr IDEpOworLSAgICAgICAgCisrCisgICAgICAgICAvKiogQWRkIGRpcmVjdG9yaWVzLCBtaW51cyB0 aGUgY3VycmVudCAoLikgYW5kIHBhcmVudCAoLi4pLCB0byB0aGUgbGlzdAorICAgICAgICAgICog IG9mIHBhdGhzIHRvIGJlIGV4cGxvcmVkLiAgUGF0aHMgc2hvdWxkIGJlIGFkZGVkIGF0IHRoZSBl bmQgb2YgdGhlIGxpc3QuICovCisgICAgICAgICBmb3IgKGkgPSBiYXNlX2VudHJ5OyBpIDwgc3Rh dF9jb3VudDsgKytpKQorICAgICAgICAgeworICAgICAgICAgICAgIGdsb2J1c19sX2dmc19kYXRh X3BhdGhfbGlzdF90KiBuZXdwYXRoID0gTlVMTDsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAg ICAgICAvKiogSWYgd2UgYXJlIHRvIGZvbGxvdyBzeW1ib2xpYyBsaW5rcywgY3JlYXRlIGEgbmV3 IHRyYXZlcnNhbCBwYXRoIGZvciBlYWNoICovCistICAgICAgICAgICAgaWYgKChvcC0+dHJhdmVy c2FsX29wdGlvbnMgJiBHTE9CVVNfR0ZTX1RSQVZFUlNBTF9GT0xMT1dfU1lNTElOS1MpICYmIAor KyAgICAgICAgICAgIGlmICgob3AtPnRyYXZlcnNhbF9vcHRpb25zICYgR0xPQlVTX0dGU19UUkFW RVJTQUxfRk9MTE9XX1NZTUxJTktTKSAmJgorICAgICAgICAgICAgICAgICBzdGF0X2FycmF5W2ld LnN5bWxpbmtfdGFyZ2V0ICYmCistICAgICAgICAgICAgICAgIHN0YXRfYXJyYXlbaV0uZXJyb3Ig IT0gR0xPQlVTX0dSSURGVFBfU0VSVkVSX0NPTlRST0xfU1RBVF9JTlZBTElETElOSykgCisrICAg ICAgICAgICAgICAgIHN0YXRfYXJyYXlbaV0uZXJyb3IgIT0gR0xPQlVTX0dSSURGVFBfU0VSVkVS X0NPTlRST0xfU1RBVF9JTlZBTElETElOSykKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgIG5ld3BhdGggPSAoZ2xvYnVzX2xfZ2ZzX2RhdGFfcGF0aF9saXN0X3QqKWdsb2J1c19tYWxs b2Moc2l6ZW9mKGdsb2J1c19sX2dmc19kYXRhX3BhdGhfbGlzdF90KSk7CisgICAgICAgICAgICAg ICAgIGlmIChuZXdwYXRoKQorQEAgLTkxMTQsMTkgKzkxMTQsMTkgQEAgZ2xvYnVzX2xfZ2ZzX2Rh dGFfbGlzdF9zdGF0X2NiKAorICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CistICAgICAgICAgICAgICAgIH0g ICAgICAgICAgICAgICAgICAKKy0gICAgICAgICAgICB9IAorKyAgICAgICAgICAgICAgICB9Cisr ICAgICAgICAgICAgfQorICAgICAgICAgICAgIC8qKiBDcmVhdGUgbmV3IHRyYXZlcnNhbCBwYXRo cyBmb3Igc3ViZGlyZWN0b3JpZXMgKGlnbm9yZSAuIGFuZCAuLikgKi8KKyAgICAgICAgICAgICBl bHNlIGlmIChTX0lTRElSKHN0YXRfYXJyYXlbaV0ubW9kZSkgJiYKKy0gICAgICAgICAgICAgICAg KHN0YXRfYXJyYXlbaV0ubmFtZVswXSAhPSAnLicgfHwgCisrICAgICAgICAgICAgICAgIChzdGF0 X2FycmF5W2ldLm5hbWVbMF0gIT0gJy4nIHx8CisgICAgICAgICAgICAgICAgICAoc3RhdF9hcnJh eVtpXS5uYW1lWzFdICE9ICdcMCcgJiYgKHN0YXRfYXJyYXlbaV0ubmFtZVsxXSAhPSAnLicgfHwg c3RhdF9hcnJheVtpXS5uYW1lWzJdICE9ICdcMCcpKSkpCisgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICBuZXdwYXRoID0gKGdsb2J1c19sX2dmc19kYXRhX3BhdGhfbGlzdF90KilnbG9i dXNfbWFsbG9jKHNpemVvZihnbG9idXNfbF9nZnNfZGF0YV9wYXRoX2xpc3RfdCkpOworICAgICAg ICAgICAgICAgICBpZiAobmV3cGF0aCkKKyAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAg ICAgICAgICAgbmV3cGF0aC0+cGF0aG5hbWUgPSAoY2hhciAqKWdsb2J1c19tYWxsb2MoZGlybGVu ICsgc3RybGVuKHN0YXRfYXJyYXlbaV0ubmFtZSkgKyAyKTsgICAgICAgICAgICAgICAgICAgIAor KyAgICAgICAgICAgICAgICAgICAgbmV3cGF0aC0+cGF0aG5hbWUgPSAoY2hhciAqKWdsb2J1c19t YWxsb2MoZGlybGVuICsgc3RybGVuKHN0YXRfYXJyYXlbaV0ubmFtZSkgKyAyKTsKKyAgICAgICAg ICAgICAgICAgICAgIHNwcmludGYobmV3cGF0aC0+cGF0aG5hbWUsICIlcy8lcyIsIHN0YXRfaW5m by0+cGF0aG5hbWUsIHN0YXRfYXJyYXlbaV0ubmFtZSk7CistICAgICAgICAgICAgICAgICAgICBu ZXdwYXRoLT5zdWJwYXRoID0gJm5ld3BhdGgtPnBhdGhuYW1lW2Jhc2VsZW5dOyAKKysgICAgICAg ICAgICAgICAgICAgIG5ld3BhdGgtPnN1YnBhdGggPSAmbmV3cGF0aC0+cGF0aG5hbWVbYmFzZWxl bl07CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg ICAgICAgICB7CitAQCAtOTEzNCwyMCArOTEzNCwyMCBAQCBnbG9idXNfbF9nZnNfZGF0YV9saXN0 X3N0YXRfY2IoCisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgCistICAgICAg ICAgICAgaWYgKG5ld3BhdGgpIAorKyAgICAgICAgICAgIGlmIChuZXdwYXRoKQorICAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICogVGhpcyBzZWN0 aW9uIGRvZXMgY3ljbGUgYW5kIGR1cGxpY2F0ZSBwYXRoIGRldGVjdGlvbi4gIFdlIG9ubHkgbmVl ZCB0byBkbworICAgICAgICAgICAgICAgICAgKiB0aGlzIHdoZW4gc3ltYm9saWMgbGluayB0cmF2 ZXJzYWwgaXMgb24gKHNob3VsZG4ndCBoYXBwZW4gb3RoZXJ3aXNlLCB1bmxlc3MKKyAgICAgICAg ICAgICAgICAgICogc29tZW9uZSdzIGRvbmUgc29tZXRoaW5nIG5hc3R5IHdpdGggaGFyZCBsaW5r cykuCistICAgICAgICAgICAgICAgICAqIAorKyAgICAgICAgICAgICAgICAgKgorICAgICAgICAg ICAgICAgICAgKiBXZSBjaGVjayBzeW1ib2xpYyBsaW5rIHRhcmdldHMgYWdhaW5zdCBhIHNldCBv ZiAicm9vdCBwYXRocyIsIHdoaWNoIGFyZSBlaXRoZXIKKy0gICAgICAgICAgICAgICAgICogdGhl IGJhc2Ugcm9vdCB0aGUgTUxTUiB3YXMgc3RhcnRlZCB3aXRoLCBvciBvdGhlciBsaW5rIHRhcmdl dHMuICBJZiBhIHJvb3QgaXMgCisrICAgICAgICAgICAgICAgICAqIHRoZSBiYXNlIHJvb3QgdGhl IE1MU1Igd2FzIHN0YXJ0ZWQgd2l0aCwgb3Igb3RoZXIgbGluayB0YXJnZXRzLiAgSWYgYSByb290 IGlzCisgICAgICAgICAgICAgICAgICAqIGVudGlyZWx5IGNvbnRhaW5lZCBpbiBhIHRhcmdldCwg d2UnbGwgYWxyZWFkeSBjYXRjaCBpdCwgc28gbm8gbmVlZCB0byBhZGQgaXQuCistICAgICAgICAg ICAgICAgICAqIAorLSAgICAgICAgICAgICAgICAgKiBJZiB0aGUgdGFyZ2V0IGlzIGVudGlyZWx5 IGNvbnRhaW5lZCBpbiBhIHJvb3QsIHRoZW4gd2UgaGF2ZSBhIGN5Y2xlLCBhbmQgd2UgCistICAg ICAgICAgICAgICAgICAqIG1hcmsgdGhlIHBhdGggYXMgc3VjaC4gIAorLSAgICAgICAgICAgICAg ICAgKiAKKysgICAgICAgICAgICAgICAgICoKKysgICAgICAgICAgICAgICAgICogSWYgdGhlIHRh cmdldCBpcyBlbnRpcmVseSBjb250YWluZWQgaW4gYSByb290LCB0aGVuIHdlIGhhdmUgYSBjeWNs ZSwgYW5kIHdlCisrICAgICAgICAgICAgICAgICAqIG1hcmsgdGhlIHBhdGggYXMgc3VjaC4KKysg ICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgICogV2hlbiBleHBhbmRpbmcgZGly ZWN0b3JpZXMsIGlmIHRoZSBwYXJlbnQgaXMgbWFya2VkIGFzIGhhdmluZyBhIGN5Y2xlLCB3ZQor ICAgICAgICAgICAgICAgICAgKiBjaGVjayB0aGUgc3ViZGlyZWN0b3J5LiAgSWYgdGhlIHN1YmRp cmVjdG9yeSBzdGlsbCBoYXMgYSBjeWNsZSwgaXQgaXMgbWFya2VkCisgICAgICAgICAgICAgICAg ICAqIGFzIHN1Y2gtLWhvd2V2ZXIsIGlmIGl0IGRvZXNuJ3QgdGhlbiB3ZSBjYW4gYXZvaWQgdGhl IGN5Y2xlIGNoZWNrIGZvciBmdXR1cmUKK0BAIC05MTU4LDExICs5MTU4LDExIEBAIGdsb2J1c19s X2dmc19kYXRhX2xpc3Rfc3RhdF9jYigKKyAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAg ICAgICAgIGlmIChvcC0+dHJhdmVyc2FsX29wdGlvbnMgJiBHTE9CVVNfR0ZTX1RSQVZFUlNBTF9G T0xMT1dfU1lNTElOS1MpCisgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAg IGdsb2J1c19sX2dmc19kYXRhX3BhdGhfbGlzdF90KiBpdGVyOyAKKy0gICAgICAgICAgICAgICAg ICAgIGludCBuZXdwYXRobGVuID0gc3RybGVuKG5ld3BhdGgtPnBhdGhuYW1lKTsgICAgICAgICAg ICAgICAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKysgICAgICAgICAg ICAgICAgICAgIGdsb2J1c19sX2dmc19kYXRhX3BhdGhfbGlzdF90KiBpdGVyOworKyAgICAgICAg ICAgICAgICAgICAgaW50IG5ld3BhdGhsZW4gPSBzdHJsZW4obmV3cGF0aC0+cGF0aG5hbWUpOwor KworICAgICAgICAgICAgICAgICAgICAgbmV3cGF0aC0+aGFzX2N5Y2xlID0gR0xPQlVTX0ZBTFNF OworLSAgICAgICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgICAgICAvKiogRm9y IHN5bWJvbGljIGxpbmtzLCB2YWxpZGF0ZSB0aGUgcGF0aC0td2UgZG9uJ3Qgd2FudCBhbnkgZHVw bGljYXRlZCBwYXRocyAqLworICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRfYXJyYXlbaV0u c3ltbGlua190YXJnZXQpCisgICAgICAgICAgICAgICAgICAgICB7CitAQCAtOTE4MSw3ICs5MTgx LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfbGlzdF9zdGF0X2NiKAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGl0ZXItPnBhdGhuYW1lW25ld3BhdGhsZW5dID09ICcvJyB8fCBpdGVy LT5wYXRobmFtZVtuZXdwYXRobGVuXSA9PSAnXDAnKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqIFRoaXMgdGFyZ2V0 IGhhcyBhIGN5Y2xlICovCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdwYXRo LT5oYXNfY3ljbGUgPSBHTE9CVVNfVFJVRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdwYXRoLT5oYXNfY3ljbGUgPSBHTE9C VVNfVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIH0KK0BAIC05MTk2LDcgKzkxOTYsNyBA QCBnbG9idXNfbF9nZnNfZGF0YV9saXN0X3N0YXRfY2IoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnbG9idXNfZnJlZShuZXdwYXRoLT5wYXRobmFtZSk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnbG9idXNfZnJlZShuZXdwYXRoKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5ld3BhdGggPSBOVUxMOworLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICB9IAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVsc2UgaWYoc3RybmNtcChpdGVyLT5wYXRobmFtZSwgbmV3cGF0aC0+ cGF0aG5hbWUsIG5ld3BhdGhsZW4pID09IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChpdGVyLT5wYXRobmFtZVtuZXdwYXRobGVuXSA9PSAnLycgfHwgaXRlci0+cGF0aG5h bWVbbmV3cGF0aGxlbl0gPT0gJ1wwJykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK K0BAIC05MjA1LDE5ICs5MjA1LDE5IEBAIGdsb2J1c19sX2dmc19kYXRhX2xpc3Rfc3RhdF9jYigK KyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgIC8q KiBBZGQgdGhlIHBhdGggdG8gdGhlIHRyYXZlcnNhbCBsaXN0ICovCistICAgICAgICAgICAgICAg IGlmIChuZXdwYXRoKSAKKysgICAgICAgICAgICAgICAgaWYgKG5ld3BhdGgpCisgICAgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0X2FycmF5W2ldLnN5bWxpbmtf dGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAg IGdsb2J1c19sX2dmc19kYXRhX3BhdGhfbGlzdF90KiogcHBpdGVyOworLSAgICAgICAgICAgICAg ICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBBcHBlbmQgc3ltbGlu ayB0YXJnZXRzIHRvIHRoZSBlbmQgb2YgdGhlIHRyYXZlcnNhbCBxdWV1ZSAqLworLSAgICAgICAg ICAgICAgICAgICAgICAgIG5ld3BhdGgtPm5leHQgPSBOVUxMOyAgICAgICAgICAgICAgICAgCisr ICAgICAgICAgICAgICAgICAgICAgICAgbmV3cGF0aC0+bmV4dCA9IE5VTEw7CisgICAgICAgICAg ICAgICAgICAgICAgICAgZm9yIChwcGl0ZXIgPSAmb3AtPnBhdGhfbGlzdDsgKnBwaXRlcjsgcHBp dGVyID0gJigoKnBwaXRlciktPm5leHQpKSA7CistICAgICAgICAgICAgICAgICAgICAgICAgKnBw aXRlciA9IG5ld3BhdGg7ICAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgCisrICAgICAgICAg ICAgICAgICAgICAgICAgKnBwaXRlciA9IG5ld3BhdGg7CisrCisgICAgICAgICAgICAgICAgICAg ICAgICAgLyoqIFN5bWJvbGljIGxpbmtzIHRvIGRpcmVjdG9yaWVzIHNob3VsZCBiZSBhZGRlZCB0 byB0aGUgcm9vdCBsaXN0LiAqLworICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTX0lTRElS KHN0YXRfYXJyYXlbaV0ubGlua19tb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICB7CitA QCAtOTIyOCwzNyArOTIyOCwzNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9saXN0X3N0YXRfY2IoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdyb290LT5wYXRobmFtZSA9IGdsb2J1 c19saWJjX3N0cmR1cChuZXdwYXRoLT5wYXRobmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBuZXdyb290LT5zdWJwYXRoID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5ld3Jvb3QtPm5leHQgPSBvcC0+cm9vdF9wYXRoczsKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9wLT5yb290X3BhdGhzID0gbmV3cm9vdDsgCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0gCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBvcC0+cm9vdF9wYXRocyA9IG5ld3Jvb3Q7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9y OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAg ICAgfQorLSAgICAgICAgICAgICAgICAgICAgfSAKKy0gICAgICAgICAgICAgICAgICAgIGVsc2Ug CisrICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAg ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgLyoqIFByZXBlbmQg ZGlyZWN0b3J5IGV4cGFuc2lvbiB0YXJnZXRzIHRvIHRoZSBoZWFkIG9mIHRoZSBxdWV1ZSAqLwor ICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3BhdGgtPm5leHQgPSBvcC0+cGF0aF9saXN0Owor ICAgICAgICAgICAgICAgICAgICAgICAgIG9wLT5wYXRoX2xpc3QgPSBuZXdwYXRoOworICAgICAg ICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgCisrICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgIH0KKy0gICAg CisrCisgICAgIGdsb2J1c19tdXRleF9sb2NrKCZvcC0+c3RhdF9sb2NrKTsKKyAgICAgaWYoIW9w LT5iZWdpbl9jYWxsZWQpCisgICAgIHsKKyAgICAgICAgIG9wLT5iZWdpbl9jYWxsZWQgPSBHTE9C VVNfVFJVRTsKKyAgICAgICAgIGdsb2J1c19ncmlkZnRwX3NlcnZlcl9iZWdpbl90cmFuc2Zlcihv cCwgMCwgTlVMTCk7CisgICAgIH0KKy0gICAgCisrCisgICAgIGxpc3RfYnVmZmVyID0gTlVMTDsK KyAgICAgYnVmZmVyX2xlbiA9IDA7CistICAgIAorLSAgICBpZihmaWxlX2NvdW50ID4gMCkgCist ICAgIHsgCisrCisrICAgIGlmKGZpbGVfY291bnQgPiAwKQorKyAgICB7CisgICAgICAgICByZXN1 bHQgPSBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfY29udHJvbF9saXN0X2J1ZmZlcl9hbGxvYygKKyAg ICAgICAgICAgICAgICAgb3AtPmxpc3RfdHlwZSwKKyAgICAgICAgICAgICAgICAgb3AtPnVpZCwK K0BAIC05MjczLDcgKzkyNzMsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9saXN0X3N0YXRfY2IoCisg ICAgICAgICAgICAgICAgImdsb2J1c19ncmlkZnRwX3NlcnZlcl9jb250cm9sX2xpc3RfYnVmZmVy X2FsbG9jIiwgcmVzdWx0KTsKKyAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgfQor LSAgICB9IAorKyAgICB9CisgICAgIGVsc2UgaWYob3AtPmRlbGF5ZWRfZXJyb3IgIT0gR0xPQlVT X1NVQ0NFU1MgfHwgIWdsb2J1c19sX2dmc19kYXRhX3JlcXVlc3RfbmV4dF9wYXRoKG9wKSkKKyAg ICAgeworICAgICAgICAgbGlzdF9idWZmZXIgPSAoZ2xvYnVzX2J5dGVfdCAqKSBnbG9idXNfbGli Y19zdHJkdXAoIlxyIik7CitAQCAtOTI4OSwxMiArOTI4OSwxMiBAQCBnbG9idXNfbF9nZnNfZGF0 YV9saXN0X3N0YXRfY2IoCisgICAgICAgICAgICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JNZW1v cnkoImJvdW5jZV9pbmZvIik7CisgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgIH0K Ky0gICAgICAgIAorKworICAgICAgICAgaWYocmVwbHktPmNvZGUgIT0gMTAwKQorICAgICAgICAg eworICAgICAgICAgICAgIGJvdW5jZV9pbmZvLT5maW5hbF9zdGF0ID0gR0xPQlVTX1RSVUU7Cisg ICAgICAgICB9CistICAgIAorKworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2dyaWRmdHBfc2Vy dmVyX3JlZ2lzdGVyX3dyaXRlKAorICAgICAgICAgICAgIG9wLAorICAgICAgICAgICAgIGxpc3Rf YnVmZmVyLAorQEAgLTkzMTIsOCArOTMxMiw4IEBAIGdsb2J1c19sX2dmc19kYXRhX2xpc3Rfc3Rh dF9jYigKKyAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgfQorICAgICAgICAgb3At Pmxpc3RfYnVmZmVyX29mZnNldCArPSBidWZmZXJfbGVuOworLSAgICB9IAorLSAgICAKKysgICAg fQorKworICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZvcC0+c3RhdF9sb2NrKTsKKyAKKyAgICAg R2xvYnVzR0ZTRGVidWdFeGl0KCk7CitAQCAtOTM1NSw3ICs5MzU1LDcgQEAgZ2xvYnVzX2dyaWRm dHBfc2VydmVyX2ZpbmlzaGVkX3N0YXRfY3VzdG9tX2xpc3QoCisgICAgICAgICByZXN1bHQgPSBH bG9idXNHRlNFcnJvck1lbW9yeSgiYm91bmNlX2luZm8iKTsKKyAgICAgICAgIGdvdG8gZXJyb3I7 CisgICAgIH0KKy0gICAgCisrCisgICAgIGJvdW5jZV9pbmZvLT5jdXN0b21fbGlzdCA9IEdMT0JV U19UUlVFOworICAgICBib3VuY2VfaW5mby0+ZnJlZV9idWZmZXIgPSBmcmVlX2J1ZmZlcjsKKyAg ICAgaWYoZnJlZV9idWZmZXIpCitAQCAtOTUxOSw3ICs5NTE5LDcgQEAgZ2xvYnVzX2lfZ2ZzX2Rh dGFfcmVxdWVzdF9saXN0KAorICAgICAgICAgc3RhdF9pbmZvLT5wYXRobmFtZSA9IGxpc3RfaW5m by0+cGF0aG5hbWU7CisgICAgICAgICBzdGF0X2luZm8tPmZpbGVfb25seSA9IEdMT0JVU19GQUxT RTsKKyAgICAgICAgIHN0YXRfaW5mby0+dXNlX3N5bWxpbmtfaW5mbyA9IGRhdGFfb3AtPmxpc3Rf ZGVwdGggIT0gMDsKKy0gICAgICAgIHN0YXRfaW5mby0+aW5jbHVkZV9wYXRoX3N0YXQgPSBkYXRh X29wLT5saXN0X2RlcHRoICE9IDA7ICAgICAgICAKKysgICAgICAgIHN0YXRfaW5mby0+aW5jbHVk ZV9wYXRoX3N0YXQgPSBkYXRhX29wLT5saXN0X2RlcHRoICE9IDA7CisgCisgICAgICAgICBkYXRh X29wLT5pbmZvX3N0cnVjdCA9IGxpc3RfaW5mbzsKKyAgICAgICAgIGRhdGFfb3AtPnN0YXRfd3Jh cHBlciA9IHN0YXRfaW5mbzsKK0BAIC05NTM2LDcgKzk1MzYsNyBAQCBnbG9idXNfaV9nZnNfZGF0 YV9yZXF1ZXN0X2xpc3QoCisgCisgICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKioqIFRy aW0gYW55IHRyYWlsaW5nICcvJworLSAgICAgICAgICAgICoqLyAgICAgICAgICAgIAorKyAgICAg ICAgICAgICoqLworICAgICAgICAgICAgIGxlbiA9IHN0cmxlbihzdGF0X2luZm8tPnBhdGhuYW1l KTsKKyAgICAgICAgICAgICBpZihsZW4gPiAwICYmIHN0YXRfaW5mby0+cGF0aG5hbWVbbGVuIC0g MV0gPT0gJy8nKQorICAgICAgICAgICAgIHsKK0BAIC05ODAxLDcgKzk4MDEsNyBAQCBnbG9idXNf bF9nZnNfZGF0YV9iZWdpbl9jYigKKyAgICAgICAgICAgICAgICAgICAgIG9wLT5kYXRhX2hhbmRs ZS0+aW5mby50Y3BfYnVmc2l6ZSA9IHNuZGJ1ZjsKKyAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgIH0KKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBnbG9idXNfZ2ZzX2xvZ19t ZXNzYWdlKAorICAgICAgICAgICAgICAgICBHTE9CVVNfR0ZTX0xPR19JTkZPLAorICAgICAgICAg ICAgICAgICAiU3RhcnRpbmcgdG8gdHJhbnNmZXIgXCIlc1wiLlxuIiwKK0BAIC05ODM1LDcgKzk4 MzUsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9iZWdpbl9jYigKKyAgICAgICAgIGV2ZW50X3JlcGx5 LnR5cGUgPSBHTE9CVVNfR0ZTX0VWRU5UX1RSQU5TRkVSX0NPTk5FQ1RFRDsKKyAgICAgICAgIGV2 ZW50X3JlcGx5LmlkID0gb3AtPmlkOworICAgICAgICAgZXZlbnRfcmVwbHkuZXZlbnRfYXJnID0g b3A7CistICAgICAgICAKKysKKyAgICAgICAgIGlmKG9wLT5ldmVudF9jYWxsYmFjayAhPSBOVUxM KQorICAgICAgICAgeworICAgICAgICAgICAgIG9wLT5ldmVudF9jYWxsYmFjaygmZXZlbnRfcmVw bHksIG9wLT51c2VyX2FyZyk7CitAQCAtOTg0NiwxNCArOTg0NiwxNCBAQCBnbG9idXNfbF9nZnNf ZGF0YV9iZWdpbl9jYigKKyAgICAgICAgICAgICBldmVudF9yZXBseS5vcF9pbmZvLT5yZW1vdGVf aXAgPSBnbG9idXNfbGliY19zdHJkdXAob3AtPnJlbW90ZV9pcCk7CisgCisgICAgICAgICAgICAg Z2xvYnVzX2dmc19pcGNfcmVwbHlfZXZlbnQob3AtPmlwY19oYW5kbGUsICZldmVudF9yZXBseSk7 CistICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgaWYoZXZlbnRfcmVwbHkub3BfaW5mby0+ cmVtb3RlX2lwKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2ZyZWUo ZXZlbnRfcmVwbHkub3BfaW5mby0+cmVtb3RlX2lwKTsKKyAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgZ2xvYnVzX2ZyZWUoZXZlbnRfcmVwbHkub3BfaW5mbyk7CisgICAgICAgICB9CistICAg ICAgICAKKysKKyAgICAgICAgIGlmKCghb3AtPndyaXRpbmcgfHwgb3AtPnJldHJfbWFya2VycykK KyAgICAgICAgICAgICAmJiAob3AtPmRhdGFfaGFuZGxlLT5pbmZvLm1vZGUgPT0gJ0UnIHx8IG9w LT5tYXJrZXJzKSkKKyAgICAgICAgIHsKK0BAIC0xMDA0MSw3ICsxMDA0MSw3IEBAIGdsb2J1c19s X2dmc19kYXRhX2VuZF90cmFuc2Zlcl9raWNrb3V0KAorICAgICBtZW1zZXQoJnJlcGx5LCAnXDAn LCBzaXplb2YoZ2xvYnVzX2dmc19maW5pc2hlZF9pbmZvX3QpKTsKKyAKKyAKKy0gICAgaWYob3At PmNhY2hlZF9yZXMgPT0gR0xPQlVTX1NVQ0NFU1MgJiYgCisrICAgIGlmKG9wLT5jYWNoZWRfcmVz ID09IEdMT0JVU19TVUNDRVNTICYmCisgICAgICAgICBvcC0+d3JpdGluZyAmJiBvcC0+ZGF0YV9o YW5kbGUtPmh0dHBfaGFuZGxlKQorICAgICB7CisgICAgICAgICBnbG9idXNfeGlvX2RhdGFfZGVz Y3JpcHRvcl90ICAgICAgICBkZXNjcmlwdG9yOworQEAgLTEwMDU0LDEyICsxMDA1NCwxMiBAQCBn bG9idXNfbF9nZnNfZGF0YV9lbmRfdHJhbnNmZXJfa2lja291dCgKKyAgICAgICAgIGdsb2J1c19o YXNodGFibGVfdCAgICAgICAgICAgICAgICAgIGhlYWRlcl90YWJsZSA9IE5VTEw7CisgICAgICAg ICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAgICAgICBlb2YgPSAwOworIAorLSAgICAg ICAgCisrCisgICAgICAgICBnbG9idXNfeGlvX2hhbmRsZV9jbnRsKAorICAgICAgICAgICAgIGhh bmRsZSwKKyAgICAgICAgICAgICBvcC0+c2Vzc2lvbl9oYW5kbGUtPmh0dHBfZHJpdmVyLAorICAg ICAgICAgICAgIEdMT0JVU19YSU9fSFRUUF9IQU5ETEVfU0VUX0VORF9PRl9FTlRJVFkpOworLSAg ICAgICAgICAgIAorKworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19kYXRhX2Rlc2NyaXB0 b3JfaW5pdCgmZGVzY3JpcHRvciwgaGFuZGxlKTsKKyAgICAgICAgIGdsb2J1c19hc3NlcnQocmVz dWx0ID09IEdMT0JVU19TVUNDRVNTKTsKKyAKK0BAIC0xMDEwNCw3ICsxMDEwNCw3IEBAIGdsb2J1 c19sX2dmc19kYXRhX2VuZF90cmFuc2Zlcl9raWNrb3V0KAorIAorICAgICAgICAgICAgIGJvZHlf YnVmZmVyID0gbWFsbG9jKGJ1ZmxlbisxKTsKKyAgICAgICAgICAgICBkbworLSAgICAgICAgICAg IHsgICAKKysgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGJvZHlfbmJ5dGVzID0gMDsK KyAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19yZWFkKAorICAgICAgICAgICAg ICAgICAgICAgaGFuZGxlLAorQEAgLTEwMTMxLDEzICsxMDEzMSwxMyBAQCBnbG9idXNfbF9nZnNf ZGF0YV9lbmRfdHJhbnNmZXJfa2lja291dCgKKyAgICAgICAgICAgICAgICAgZWxzZQorICAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICB3YWl0Zm9yID0gR0xPQlVTX01JTigx MDI0LCBidWZsZW4tdG90YWxfbmJ5dGVzKTsKKy0gICAgICAgICAgICAgICAgfSAgICAgICAgICAg CisrICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9IHdoaWxlKCFlb2YpOworLSAgICAg ICAgICAgIAorKworICAgICAgICAgICAgIGJvZHlfYnVmZmVyW3RvdGFsX25ieXRlc10gPSAnXDAn OworICAgICAgICAgICAgIGdsb2J1c19pX2dmc19kYXRhX2h0dHBfcHJpbnRfcmVzcG9uc2UoCisg ICAgICAgICAgICAgICAgIHN0YXR1c19jb2RlLCAmaGVhZGVyX3RhYmxlLCBib2R5X2J1ZmZlciwg JmhlYWRlcl9zdHIpOworLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBlcnJfc3Ry ID0gZ2xvYnVzX2NvbW1vbl9jcmVhdGVfc3RyaW5nKAorICAgICAgICAgICAgICAgICAiSFRUUCBQ VVQgZmFpbGVkIHdpdGggXCIlMDNkICVzXCJcbiVzIiwKKyAgICAgICAgICAgICAgICAgc3RhdHVz X2NvZGUsCitAQCAtMTAxNDUsNyArMTAxNDUsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9lbmRfdHJh bnNmZXJfa2lja291dCgKKyAgICAgICAgICAgICAgICAgaGVhZGVyX3N0cik7CisgCisgICAgICAg ICAgICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JHZW5lcmljKGVycl9zdHIpOworLSAgICAgICAg ICAgICAgICAKKysKKyAgICAgICAgICAgICBnbG9idXNfZnJlZShlcnJfc3RyKTsKKyAgICAgICAg ICAgICBnbG9idXNfZnJlZShoZWFkZXJfc3RyKTsKKyAgICAgICAgICAgICBnbG9idXNfZnJlZShi b2R5X2J1ZmZlcik7CitAQCAtMTAxODEsNyArMTAxODEsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9l bmRfdHJhbnNmZXJfa2lja291dCgKKyAgICAgICAgICAgICAgICAgICAgIGVvZiA9IEdMT0JVU19U UlVFOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIHRvdGFsX25ieXRlcyAr PSBib2R5X25ieXRlczsKKy0gICAgCisrCisgICAgICAgICAgICAgICAgIGlmKGJvZHlfbmJ5dGVz ID09IDAgfHwgdG90YWxfbmJ5dGVzID09IGJ1ZmxlbikKKyAgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgICAgZW9mID0gR0xPQlVTX1RSVUU7CitAQCAtMTAxODksMTQgKzEwMTg5 LDE0IEBAIGdsb2J1c19sX2dmc19kYXRhX2VuZF90cmFuc2Zlcl9raWNrb3V0KAorICAgICAgICAg ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIHdh aXRmb3IgPSBHTE9CVVNfTUlOKDEwMjQsIGJ1Zmxlbi10b3RhbF9uYnl0ZXMpOworLSAgICAgICAg ICAgICAgICB9ICAgICAgICAgICAKKysgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICByZXN1bHQgPSBHTE9CVVNfU1VDQ0VTUzsKKyAgICAgICAgICAgICBnbG9i dXNfZnJlZShib2R5X2J1ZmZlcik7CisgICAgICAgICAgICAgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0 cF9wcmludF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgc3RhdHVzX2NvZGUsICZoZWFkZXJf dGFibGUsIE5VTEwsICZvcC0+ZGF0YV9oYW5kbGUtPmh0dHBfcmVzcG9uc2Vfc3RyKTsKKyAgICAg ICAgIH0KKy0gICAgICAgIAorKworICAgICB9CisgcmVzcG9uc2VfZXhpdDoKKyAgICAgaWYob3At PmNhY2hlZF9yZXMgPT0gR0xPQlVTX1NVQ0NFU1MpCitAQCAtMTA0NTAsNyArMTA0NTAsNyBAQCBy ZXNwb25zZV9leGl0OgorICAgICB7CisgICAgICAgICBnbG9idXNfZnJlZShyZXRyYW5zbWl0X3N0 cik7CisgICAgIH0KKy0gICAgCisrCisgICAgIC8qIFhYWCBzYyBwcm9jZXNzIGJ5dGVzIHRyYW5z ZmVycmVkIGNvdW50ICovCisgICAgIHsKKyAgICAgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgbmFtZXNbNV0gPQorQEAgLTEwNDk1LDcgKzEwNDk1LDcgQEAgcmVzcG9uc2VfZXhp dDoKKyAgICAgcmVwbHkucmVzdWx0ID0gb3AtPmNhY2hlZF9yZXM7CisgCisgICAgIC8qIHB1bGwg cmVzcG9uc2UgY29kZSBmcm9tIGVycm9yICovCistICAgIGlmKHJlcGx5LnJlc3VsdCAhPSBHTE9C VVNfU1VDQ0VTUyAmJiAKKysgICAgaWYocmVwbHkucmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTICYm CisgICAgICAgICAocmVwbHkuY29kZSA9IGdsb2J1c19nZnNfZXJyb3JfZ2V0X2Z0cF9yZXNwb25z ZV9jb2RlKAorICAgICAgICAgICAgIGdsb2J1c19lcnJvcl9wZWVrKHJlcGx5LnJlc3VsdCkpKSAh PSAwKQorICAgICB7CitAQCAtMTA1MDYsOSArMTA1MDYsOSBAQCByZXNwb25zZV9leGl0OgorICAg ICB7CisgICAgICAgICByZXBseS5jb2RlID0gb3AtPnVzZXJfY29kZTsKKyAKKy0gICAgICAgIC8q IERPIE5FVExPR0dFUiBTVFVGRiAKKysgICAgICAgIC8qIERPIE5FVExPR0dFUiBTVFVGRgorICAg ICAgICAgICogWFhYIHVubGVzcyB1c2VyIGhhcyBhIG1lc3NhZ2UgLS0gd2lsbCBvbmx5IGJlIGEg cHJvYmxlbSBpZiBhIERTSQorLSAgICAgICAgICogaXMgc2VuZGluZyBtZXNzYWdlcyB0byB0aGUg Y29udHJvbCBjaGFubmVsLCBpbiB3aGljaCBjYXNlIHRoZXkgCisrICAgICAgICAgKiBpcyBzZW5k aW5nIG1lc3NhZ2VzIHRvIHRoZSBjb250cm9sIGNoYW5uZWwsIGluIHdoaWNoIGNhc2UgdGhleQor ICAgICAgICAgICoganVzdCBhcmVuJ3QgY29tcGF0aWJsZSB3aXRoIHRoZSBuZXRsb2dnZXIgYm90 dGxlbmVjayByZXBvcnRpbmcKKyAgICAgICAgICAqLworICAgICAgICAgaWYob3AtPnVzZXJfbXNn ID09IE5VTEwpCitAQCAtMTA1MzMsNyArMTA1MzMsNyBAQCByZXNwb25zZV9leGl0OgorICAgICAg ICAgICAgICZyZXBseSk7CisgICAgIH0KKyAgICAgZ2xvYnVzX2xfZ2ZzX2RhdGFfcmVzZXRfd2F0 Y2hkb2cob3AtPnNlc3Npb25faGFuZGxlLCBOVUxMKTsKKy0gICAgCisrCisgICAgIC8qIHJlbW92 ZSB0aGUgcmVmZXJlbmNlIGZvciB0aGlzIGNhbGxiYWNrLiAgSXQgaXMgcG9zc2libGUgdGhhdCBi ZWZvcmUKKyAgICAgICAgIGFjcXVpcmluZyB0aGlzIGxvY2sgdGhlIGNvbXBsZXRpbmcgc3RhdGUg b2NjdXJyZWQgYW5kIHdlIGFyZQorICAgICAgICAgcmVhZHkgdG8gZmluaXNoICovCitAQCAtMTA2 ODgsNyArMTA2ODgsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9lbmRfcmVhZF9raWNrb3V0KAorICAg ICB9CisgCisgICAgIGdsb2J1c19tdXRleF9sb2NrKCZvcC0+c2Vzc2lvbl9oYW5kbGUtPm11dGV4 KTsKKy0gICAgeyAgICAgICAgCisrICAgIHsKKyAgICAgICAgIHN3aXRjaChvcC0+ZGF0YV9oYW5k bGUtPnN0YXRlKQorICAgICAgICAgeworICAgICAgICAgICAgIGNhc2UgR0xPQlVTX0xfR0ZTX0RB VEFfSEFORExFX0lOVVNFOgorQEAgLTEwNzE1LDcgKzEwNzE1LDcgQEAgZ2xvYnVzX2xfZ2ZzX2Rh dGFfZW5kX3JlYWRfa2lja291dCgKKyAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgcmVjdl9pbmZv ID0gb3AtPmluZm9fc3RydWN0OworICAgICAgICAgb2JqZWN0Lm5hbWUgPSByZWN2X2luZm8tPnBh dGhuYW1lOworICAgICAgICAgb2JqZWN0LnNpemUgPSBvcC0+Ynl0ZXNfdHJhbnNmZXJyZWQ7CitA QCAtMTA3ODgsNyArMTA3ODgsNyBAQCB2b2lkCisgZ2xvYnVzX2xfZ2ZzX2RhdGFfc2VuZF9lb2Zf Y2IoCisgICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrX2Fy ZywKKyAgICAgc3RydWN0IGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfcyAqIGhhbmRsZSwKKy0g ICAgZ2xvYnVzX29iamVjdF90ICoJCQllcnJvcikKKysgICAgZ2xvYnVzX29iamVjdF90ICogICAg ICAgICAgICAgICAgICAgZXJyb3IpCisgeworICAgICBnbG9idXNfbF9nZnNfZGF0YV9vcGVyYXRp b25fdCAqICAgICBvcDsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9nZnNfZGF0YV9zZW5k X2VvZl9jYik7CitAQCAtMTExMDIsNyArMTExMDIsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV90cmV2 X2tpY2tvdXQoCisgICAgICAgICAgICAgICAgICAgICBib3VuY2VfaW5mby0+b3AtPnJlY3ZkX2J5 dGVzID0gMDsKKyAgICAgICAgICAgICAgICAgICAgIGV2ZW50X3JlcGx5LT50eXBlID0gR0xPQlVT X0dGU19FVkVOVF9CWVRFU19SRUNWRDsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworLSAg ICAKKysKKyAgICAgICAgICAgICAgICAgY2FzZSBHTE9CVVNfR0ZTX0VWRU5UX1JBTkdFU19SRUNW RDoKKyAgICAgICAgICAgICAgICAgICAgIGV2ZW50X3JlcGx5LT50eXBlID0gR0xPQlVTX0dGU19F VkVOVF9SQU5HRVNfUkVDVkQ7CisgICAgICAgICAgICAgICAgICAgICBnbG9idXNfcmFuZ2VfbGlz dF9jb3B5KAorQEAgLTExMTExLDcgKzExMTExLDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfdHJldl9r aWNrb3V0KAorICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX3JhbmdlX2xpc3RfcmVtb3ZlKAor ICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5jZV9pbmZvLT5vcC0+cmVjdmRfcmFuZ2VzLCAw LCBHTE9CVVNfUkFOR0VfTElTVF9NQVgpOworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cist ICAgIAorKworICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAg Z2xvYnVzX2Fzc2VydCgwICYmICJpbnZhbGlkIHN0YXRlLCBub3QgcG9zc2libGUiKTsKKyAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOworQEAgLTExMzc4LDcgKzExMzc4LDcgQEAgZ2xvYnVzX2lf Z2ZzX2RhdGFfcmVxdWVzdF90cmFuc2Zlcl9ldmVudCgKKyAgICAgR2xvYnVzR0ZTRGVidWdFbnRl cigpOworIAorICAgICBzZXNzaW9uX2hhbmRsZSA9IChnbG9idXNfbF9nZnNfZGF0YV9zZXNzaW9u X3QgKikgc2Vzc2lvbl9hcmc7CistICAgIG9wID0gKGdsb2J1c19sX2dmc19kYXRhX29wZXJhdGlv bl90ICopIAorKyAgICBvcCA9IChnbG9idXNfbF9nZnNfZGF0YV9vcGVyYXRpb25fdCAqKQorICAg ICAgICAgZ2xvYnVzX2hhbmRsZV90YWJsZV9sb29rdXAoCisgICAgICAgICAgICAgJnNlc3Npb25f aGFuZGxlLT5oYW5kbGVfdGFibGUsIChpbnRwdHJfdCkgZXZlbnRfaW5mby0+ZXZlbnRfYXJnKTsK KyAgICAgaWYob3AgPT0gTlVMTCkKK0BAIC0xMTU2MSw3ICsxMTU2MSw3IEBAIGdsb2J1c19pX2dm c19kYXRhX3JlcXVlc3RfdHJhbnNmZXJfZXZlbnQoCisgICAgICAgICAgICAgICAgIGdsb2J1c19t dXRleF91bmxvY2soJm9wLT5zZXNzaW9uX2hhbmRsZS0+bXV0ZXgpOworIAorIC8qCistICAgICAg ICAgICAgaWYoZXZlbnRfaW5mby0+dHlwZSA9PSBHTE9CVVNfR0ZTX0VWRU5UX1RSQU5TRkVSX0NP TVBMRVRFICYmIAorKyAgICAgICAgICAgIGlmKGV2ZW50X2luZm8tPnR5cGUgPT0gR0xPQlVTX0dG U19FVkVOVF9UUkFOU0ZFUl9DT01QTEVURSAmJgorICAgICAgICAgICAgICAgICBvcC0+ZGF0YV9o YW5kbGUtPnN0YXRlID09IEdMT0JVU19MX0dGU19EQVRBX0hBTkRMRV9URV9WQUxJRCkKKyAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgIG9wLT5kYXRhX2hhbmRsZS0+c3RhdGUgPSBHTE9C VVNfTF9HRlNfREFUQV9IQU5ETEVfVkFMSUQ7CitAQCAtMTE2MDMsNyArMTE2MDMsNyBAQCBnbG9i dXNfaV9nZnNfZGF0YV9zZXNzaW9uX3N0YXJ0KAorICAgICBzZXNzaW9uX2hhbmRsZS0+ZGVsX2Ny ZWQgPSBzZXNzaW9uX2luZm8tPmRlbF9jcmVkOworICAgICBzZXNzaW9uX2hhbmRsZS0+Y29udGV4 dCA9IGNvbnRleHQ7CisgICAgIHNlc3Npb25faGFuZGxlLT5kY3NjX2NyZWQgPSBHU1NfQ19OT19D UkVERU5USUFMOworLSAgICBzZXNzaW9uX2hhbmRsZS0+b3JkZXJfZGF0YSA9IHNlc3Npb25faGFu ZGxlLT5kc2ktPmRlc2NyaXB0b3IgJiAKKysgICAgc2Vzc2lvbl9oYW5kbGUtPm9yZGVyX2RhdGEg PSBzZXNzaW9uX2hhbmRsZS0+ZHNpLT5kZXNjcmlwdG9yICYKKyAgICAgICAgIEdMT0JVU19HRlNf RFNJX0RFU0NSSVBUT1JfUkVRVUlSRVNfT1JERVJFRF9EQVRBOworICAgICByZXN1bHQgPSBnbG9i dXNfbF9nZnNfZGF0YV9vcGVyYXRpb25faW5pdCgmb3AsIHNlc3Npb25faGFuZGxlKTsKKyAgICAg aWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorQEAgLTExNjE5LDcgKzExNjE5LDcgQEAgZ2xv YnVzX2lfZ2ZzX2RhdGFfc2Vzc2lvbl9zdGFydCgKKyAgICAgb3AtPmNhbGxiYWNrID0gY2I7Cisg ICAgIG9wLT51c2VyX2FyZyA9IHVzZXJfYXJnOworICAgICBvcC0+aW5mb19zdHJ1Y3QgPSBzZXNz aW9uX2luZm87CistICAgICAgICAgICAgICAgIAorKworICAgICByZXN1bHQgPSBnbG9idXNfbF9n ZnNfZGF0YV9sb2FkX3N0YWNrKAorICAgICAgICAgImRlZmF1bHQiLAorICAgICAgICAgJm9wLT5z ZXNzaW9uX2hhbmRsZS0+bmV0X3N0YWNrX2xpc3QsCitAQCAtMTE2NTcsMTEgKzExNjU3LDExIEBA IGdsb2J1c19pX2dmc19kYXRhX3Nlc3Npb25fc3RhcnQoCisgICAgIGlmKGdsb2J1c19pX2dmc19j b25maWdfaW50KCJhdXRoX2xldmVsIikgJiBHTE9CVVNfTF9HRlNfQVVUSF9JREVOVElGWSkKKyAg ICAgeworICAgICAgICAgZ2xvYnVzX2xfZ2ZzX2RhdGFfYXV0aG9yaXplKG9wLCBjb250ZXh0LCBz ZXNzaW9uX2luZm8pOworLSAgICAgICAgCisrCisgICAgICAgICBpZihnbG9idXNfaV9nZnNfY29u ZmlnX2Jvb2woImh5YnJpZCIpKQorICAgICAgICAgeworICAgICAgICAgICAgIGdsb2J1c19nZnNf c2Vzc2lvbl9pbmZvX3QgKiAgICAgc2Vzc2lvbl9pbmZvX2NvcHk7CistICAgICAgICAgICAgCisr CisgICAgICAgICAgICAgc2Vzc2lvbl9pbmZvX2NvcHkgPSAoZ2xvYnVzX2dmc19zZXNzaW9uX2lu Zm9fdCAqKQorICAgICAgICAgICAgICAgICBnbG9idXNfbWFsbG9jKHNpemVvZihnbG9idXNfZ2Zz X3Nlc3Npb25faW5mb190KSk7CisgICAgICAgICAgICAgc2Vzc2lvbl9pbmZvX2NvcHktPmRlbF9j cmVkID0gc2Vzc2lvbl9pbmZvLT5kZWxfY3JlZDsKK0BAIC0xMTY3Miw3ICsxMTY3Miw3IEBAIGds b2J1c19pX2dmc19kYXRhX3Nlc3Npb25fc3RhcnQoCisgICAgICAgICAgICAgc2Vzc2lvbl9pbmZv X2NvcHktPnN1YmplY3QgPSBnbG9idXNfbGliY19zdHJkdXAoc2Vzc2lvbl9pbmZvLT5zdWJqZWN0 KTsKKyAgICAgICAgICAgICBzZXNzaW9uX2luZm9fY29weS0+Y29va2llID0gZ2xvYnVzX2xpYmNf c3RyZHVwKHNlc3Npb25faW5mby0+Y29va2llKTsKKyAgICAgICAgICAgICBzZXNzaW9uX2luZm9f Y29weS0+aG9zdF9pZCA9IGdsb2J1c19saWJjX3N0cmR1cChzZXNzaW9uX2luZm8tPmhvc3RfaWQp OworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIHNlc3Npb25faGFuZGxlLT5zZXNzaW9u X2luZm9fY29weSA9IHNlc3Npb25faW5mb19jb3B5OworICAgICAgICAgICAgIHNlc3Npb25faGFu ZGxlLT5oeWJyaWQgPSBHTE9CVVNfVFJVRTsKKyAgICAgICAgIH0KK0BAIC0xMTY5NCw3ICsxMTY5 NCw3IEBAIGdsb2J1c19pX2dmc19kYXRhX3Nlc3Npb25fc3RhcnQoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBvcC0+c2Vzc2lvbl9oYW5kbGUtPmdpZF9hcnJheSk7CisgICAgICAgICB9Cisg CistICAgICAgICBvcC0+c2Vzc2lvbl9oYW5kbGUtPnVzZXJuYW1lID0gCisrICAgICAgICBvcC0+ c2Vzc2lvbl9oYW5kbGUtPnVzZXJuYW1lID0KKyAgICAgICAgICAgICBnbG9idXNfbGliY19zdHJk dXAoc2Vzc2lvbl9pbmZvLT51c2VybmFtZSk7CisgCisgICAgICAgICBwd2VudCA9IGdldHB3dWlk KG9wLT5zZXNzaW9uX2hhbmRsZS0+dWlkKTsKK0BAIC0xMTcwNiwzMCArMTE3MDYsMzAgQEAgZ2xv YnVzX2lfZ2ZzX2RhdGFfc2Vzc2lvbl9zdGFydCgKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBv cC0+c2Vzc2lvbl9oYW5kbGUtPnRydWVfaG9tZSA9IGdsb2J1c19sX2dmc19kZWZhdWx0aG9tZSgp OworICAgICAgICAgfQorLSAgICAKKysKKyAgICAgICAgIGN1c3RvbV9ob21lX2RpciA9IGdsb2J1 c19pX2dmc19jb25maWdfc3RyaW5nKCJob21lX2RpciIpOworICAgICAgICAgaWYoY3VzdG9tX2hv bWVfZGlyKQorICAgICAgICAgeworICAgICAgICAgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgdmFyX2RpcjsKKy0gICAgCisrCisgICAgICAgICAgICAgdmFyX2RpciA9IGdsb2J1 c19sX2dmc19kYXRhX3VwZGF0ZV92YXJfcGF0aCgKKyAgICAgICAgICAgICAgICAgb3AtPnNlc3Np b25faGFuZGxlLCBjdXN0b21faG9tZV9kaXIpOworLSAgICAgICAgICAgICAgICAKKysKKyAgICAg ICAgICAgICBvcC0+c2Vzc2lvbl9oYW5kbGUtPmhvbWVfZGlyID0gdmFyX2RpcjsKKyAgICAgICAg IH0KKyAgICAgICAgIGVsc2UKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBvcC0+c2Vzc2lvbl9o YW5kbGUtPmhvbWVfZGlyID0gCisrICAgICAgICAgICAgb3AtPnNlc3Npb25faGFuZGxlLT5ob21l X2RpciA9CisgICAgICAgICAgICAgICAgIGdsb2J1c19saWJjX3N0cmR1cChvcC0+c2Vzc2lvbl9o YW5kbGUtPnRydWVfaG9tZSk7CisgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAgIGds b2J1c19sX2dmc19kYXRhX3VwZGF0ZV9yZXN0cmljdGVkX3BhdGhzKAorICAgICAgICAgICAgIG9w LT5zZXNzaW9uX2hhbmRsZSwgJmdsb2J1c19sX2dmc19wYXRoX2FsaWFzX2xpc3RfYmFzZSk7Cisg ICAgICAgICBnbG9idXNfbF9nZnNfZGF0YV91cGRhdGVfcmVzdHJpY3RlZF9wYXRocygKKyAgICAg ICAgICAgICBvcC0+c2Vzc2lvbl9oYW5kbGUsICZnbG9idXNfbF9nZnNfcGF0aF9hbGlhc19saXN0 X3NoYXJpbmcpOworICAgICAgICAgb3AtPnNlc3Npb25faGFuZGxlLT5hY3RpdmVfcnBfbGlzdCA9 ICZnbG9idXNfbF9nZnNfcGF0aF9hbGlhc19saXN0X2Jhc2U7CistICAgICAgICAKKy0gICAgICAg IGlmKCFnbG9idXNfaV9nZnNfY29uZmlnX2Jvb2woInVzZV9ob21lX2RpcnMiKSB8fCAKKysKKysg ICAgICAgIGlmKCFnbG9idXNfaV9nZnNfY29uZmlnX2Jvb2woInVzZV9ob21lX2RpcnMiKSB8fAor ICAgICAgICAgICAgIG9wLT5zZXNzaW9uX2hhbmRsZS0+aG9tZV9kaXIgPT0gTlVMTCkKKyAgICAg ICAgIHsKKyAgICAgICAgICAgICBpZihvcC0+c2Vzc2lvbl9oYW5kbGUtPmhvbWVfZGlyKQorQEAg LTExNzM3LDEyICsxMTczNywxMiBAQCBnbG9idXNfaV9nZnNfZGF0YV9zZXNzaW9uX3N0YXJ0KAor ICAgICAgICAgICAgICAgICBnbG9idXNfZnJlZShvcC0+c2Vzc2lvbl9oYW5kbGUtPmhvbWVfZGly KTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgb3AtPnNlc3Npb25faGFuZGxlLT5ob21l X2RpciA9IHN0cmR1cCgiLyIpOworLSAgICAgICAgfSAgCisrICAgICAgICB9CisgCisgICAgICAg ICBpZihnbG9idXNfaV9nZnNfY29uZmlnX2Jvb2woImh5YnJpZCIpKQorICAgICAgICAgeworICAg ICAgICAgICAgIGdsb2J1c19nZnNfc2Vzc2lvbl9pbmZvX3QgKiAgICAgc2Vzc2lvbl9pbmZvX2Nv cHk7CistICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgc2Vzc2lvbl9pbmZvX2NvcHkgPSAo Z2xvYnVzX2dmc19zZXNzaW9uX2luZm9fdCAqKQorICAgICAgICAgICAgICAgICBnbG9idXNfbWFs bG9jKHNpemVvZihnbG9idXNfZ2ZzX3Nlc3Npb25faW5mb190KSk7CisgICAgICAgICAgICAgc2Vz c2lvbl9pbmZvX2NvcHktPmRlbF9jcmVkID0gc2Vzc2lvbl9pbmZvLT5kZWxfY3JlZDsKK0BAIC0x MTc1MywxOCArMTE3NTMsMTggQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfc2Vzc2lvbl9zdGFydCgKKyAg ICAgICAgICAgICBzZXNzaW9uX2luZm9fY29weS0+c3ViamVjdCA9IGdsb2J1c19saWJjX3N0cmR1 cChzZXNzaW9uX2luZm8tPnN1YmplY3QpOworICAgICAgICAgICAgIHNlc3Npb25faW5mb19jb3B5 LT5jb29raWUgPSBnbG9idXNfbGliY19zdHJkdXAoc2Vzc2lvbl9pbmZvLT5jb29raWUpOworICAg ICAgICAgICAgIHNlc3Npb25faW5mb19jb3B5LT5ob3N0X2lkID0gZ2xvYnVzX2xpYmNfc3RyZHVw KHNlc3Npb25faW5mby0+aG9zdF9pZCk7CistICAgICAgICAgICAgCisrCisgICAgICAgICAgICAg c2Vzc2lvbl9oYW5kbGUtPnNlc3Npb25faW5mb19jb3B5ID0gc2Vzc2lvbl9pbmZvX2NvcHk7Cisg ICAgICAgICAgICAgc2Vzc2lvbl9oYW5kbGUtPmh5YnJpZCA9IEdMT0JVU19UUlVFOworICAgICAg ICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBnbG9idXNfbF9nZnNfZGF0YV9hdXRoX2luaXRf Y2IoCisgICAgICAgICAgICAgTlVMTCwgR0ZTX0FDTF9BQ1RJT05fSU5JVCwgb3AsIEdMT0JVU19T VUNDRVNTKTsKKyAgICAgfQorIAorICAgICBHbG9idXNHRlNEZWJ1Z0V4aXQoKTsKKyB9CistICAg ICAgICAgICAgCisrCisgdm9pZAorIGdsb2J1c19pX2dmc19kYXRhX3Nlc3Npb25fc3RvcCgKKyAg ICAgZ2xvYnVzX2dmc19pcGNfaGFuZGxlX3QgICAgICAgICAgICAgaXBjX2hhbmRsZSwKK0BAIC0x MTgzMCw3ICsxMTgzMCw3IEBAIGdsb2J1c19pX2dmc19kYXRhX3Nlc3Npb25fc3RvcCgKKyAgICAg ICAgICAgICBnbG9idXNfZ2ZzX2xvZ19tZXNzYWdlKAorICAgICAgICAgICAgICAgICBHTE9CVVNf R0ZTX0xPR19JTkZPLAorICAgICAgICAgICAgICAgICAiQ2FsbGVkIG1haW4gc2Vzc2lvbl9zdG9w IGFmdGVyICVkIHRpY2tzLlxuIiwgd2FpdGNudCAtIDEpOworLSAgICAgICAgfSAgICAKKysgICAg ICAgIH0KKyAgICAgfQorIAorICAgICBpZihnbG9idXNfbF9nZnNfd2F0Y2hkb2dfbGltaXQpCitA QCAtMTE4NjAsNyArMTE4NjAsNyBAQCBnbG9idXNfbF9nZnNfZmluaXNoZWRfY29tbWFuZF9raWNr b3V0KAorIAorICAgICBib3VuY2UgPSAoZ2xvYnVzX2xfZ2ZzX2RhdGFfY21kX2JvdW5jZV90ICop IHVzZXJfYXJnOworICAgICBvcCA9IGJvdW5jZS0+b3A7CistICAgCisrCisgICAgIGlmKG9wLT5j YWxsYmFjayAhPSBOVUxMKQorICAgICB7CisgICAgICAgICBvcC0+Y2FsbGJhY2soCitAQCAtMTE4 NzMsNyArMTE4NzMsNyBAQCBnbG9idXNfbF9nZnNfZmluaXNoZWRfY29tbWFuZF9raWNrb3V0KAor ICAgICAgICAgICAgIG9wLT5pcGNfaGFuZGxlLAorICAgICAgICAgICAgICZib3VuY2UtPnJlcGx5 KTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaWYoYm91bmNlLT5yZXBseS5pbmZvLmNvbW1hbmQu Y2hlY2tzdW0pCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19mcmVlKGJvdW5jZS0+cmVwbHkuaW5m by5jb21tYW5kLmNoZWNrc3VtKTsKK0BAIC0xMTkwNiw3ICsxMTkwNiw3IEBAIGdsb2J1c19sX2dm c19maW5pc2hlZF9jb21tYW5kX2tpY2tvdXQoCisgICAgIGdsb2J1c19hc3NlcnQoZGVzdHJveV9v cCk7CisgICAgIGdsb2J1c19sX2dmc19kYXRhX2ZpcmVfY2Iob3AsIHJlbW90ZV9kYXRhX2FyZywg ZGVzdHJveV9zZXNzaW9uKTsKKyAgICAgZ2xvYnVzX2xfZ2ZzX2RhdGFfb3BlcmF0aW9uX2Rlc3Ry b3kob3ApOworLSAgICAKKysKKyAgICAgZ2xvYnVzX2ZyZWUoYm91bmNlKTsKKyB9CisgCitAQCAt MTE5NjksNyArMTE5NjksNyBAQCBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmluaXNoZWRfY29tbWFu ZCgKKyAgICAgfQorICAgICBvcC0+Y2FjaGVkX3JlcyA9IHJlc3VsdDsKKyAKKy0gICAgYm91bmNl ID0gKGdsb2J1c19sX2dmc19kYXRhX2NtZF9ib3VuY2VfdCAqKSAKKysgICAgYm91bmNlID0gKGds b2J1c19sX2dmc19kYXRhX2NtZF9ib3VuY2VfdCAqKQorICAgICAgICAgZ2xvYnVzX2NhbGxvYygx LCBzaXplb2YoZ2xvYnVzX2xfZ2ZzX2RhdGFfY21kX2JvdW5jZV90KSk7CisgCisgICAgIGJvdW5j ZS0+b3AgPSBvcDsKK0BAIC0xMTk4MCw3ICsxMTk4MCw3IEBAIGdsb2J1c19ncmlkZnRwX3NlcnZl cl9maW5pc2hlZF9jb21tYW5kKAorICAgICBib3VuY2UtPnJlcGx5LmluZm8uY29tbWFuZC5jaGVj a3N1bSA9IGdsb2J1c19saWJjX3N0cmR1cChvcC0+Y2tzbV9yZXNwb25zZSk7CisgCisgICAgIC8q IHB1bGwgcmVzcG9uc2UgY29kZSBmcm9tIGVycm9yICovCistICAgIGlmKHJlc3VsdCAhPSBHTE9C VVNfU1VDQ0VTUyAmJiAKKysgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTICYmCisgICAg ICAgICAoY29kZSA9IGdsb2J1c19nZnNfZXJyb3JfZ2V0X2Z0cF9yZXNwb25zZV9jb2RlKAorICAg ICAgICAgICAgIGdsb2J1c19lcnJvcl9wZWVrKHJlc3VsdCkpKSAhPSAwKQorICAgICB7CitAQCAt MTIwMDMsNyArMTIwMDMsNyBAQCBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmluaXNoZWRfY29tbWFu ZCgKKyAgICAgICAgICAgICBib3VuY2UtPnJlcGx5LmluZm8uY29tbWFuZC5jcmVhdGVkX2RpciA9 IGdsb2J1c19saWJjX3N0cmR1cChvcC0+cGF0aG5hbWUpOworICAgICAgICAgfQorICAgICB9Cist ICAgIAorKworICAgICByZXN1bHQgPSBnbG9idXNfY2FsbGJhY2tfcmVnaXN0ZXJfb25lc2hvdCgK KyAgICAgICAgIE5VTEwsCisgICAgICAgICBOVUxMLAorQEAgLTEyMDM4LDkgKzEyMDM4LDkgQEAg Z2xvYnVzX2dyaWRmdHBfc2VydmVyX2ZpbmlzaGVkX3N0YXRfcGFydGlhbCgKKyAKKyAgICAgZ2xv YnVzX211dGV4X2xvY2soJm9wLT5zdGF0X2xvY2spOworICAgICBpZihyZXN1bHQgPT0gR0xPQlVT X1NVQ0NFU1MpCistICAgIHsgICAgICAgIAorKyAgICB7CisgICAgICAgICBzdGF0X2luZm8gPSAo Z2xvYnVzX2dmc19zdGF0X2luZm9fdCAqKSBvcC0+aW5mb19zdHJ1Y3Q7CistICAgICAgICAKKysK KyAgICAgICAgIHN0YXRfY29weSA9IChnbG9idXNfZ2ZzX3N0YXRfdCAqKQorICAgICAgICAgICAg IGdsb2J1c19tYWxsb2Moc2l6ZW9mKGdsb2J1c19nZnNfc3RhdF90KSAqIHN0YXRfY291bnQpOwor ICAgICAgICAgaWYoc3RhdF9jb3B5ID09IE5VTEwpCitAQCAtMTIwNDgsOSArMTIwNDgsOSBAQCBn bG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmluaXNoZWRfc3RhdF9wYXJ0aWFsKAorICAgICAgICAgICAg IHJlc3VsdCA9IEdsb2J1c0dGU0Vycm9yTWVtb3J5KCJzdGF0X2NvcHkiKTsKKyAgICAgICAgIH0K KyAgICAgfQorLSAgICAKKysKKyAgICAgaWYocmVzdWx0ID09IEdMT0JVU19TVUNDRVNTKQorLSAg ICB7ICAgICAgICAKKysgICAgeworICAgICAgICAgYmFzZV9wYXRoID0gc3RhdF9pbmZvLT5wYXRo bmFtZTsKKyAgICAgICAgIC8qIGlmIHdlIGhhdmUgZXhwbGljaXQgYWNjZXNzIG9uIHRoZSBiYXNl IHBhdGgsIG5vIG5lZWQgdG8gcHJ1bmUgKi8KKyAgICAgICAgIGlmKHN0YXRfaW5mby0+ZmlsZV9v bmx5IHx8IGdsb2J1c19pX2dmc19kYXRhX2NoZWNrX3BhdGgob3AtPnNlc3Npb25faGFuZGxlLAor QEAgLTEyMDgyLDcgKzEyMDgyLDcgQEAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2ZpbmlzaGVkX3N0 YXRfcGFydGlhbCgKKyAgICAgICAgICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgbmFt OworICAgICAgICAgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICBmdWxsX3BhdGg7Cisg ICAgICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgIHNsYXNoOworLSAgICAgICAg ICAgIAorKworICAgICAgICAgICAgIGlmKGJhc2VfcGF0aFtzdHJsZW4oYmFzZV9wYXRoKSAtIDFd ICE9ICcvJykKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHNsYXNoID0gIi8iOwor QEAgLTEyMDk2LDIxICsxMjA5NiwyMSBAQCBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmluaXNoZWRf c3RhdF9wYXJ0aWFsKAorICAgICAgICAgICAgICAgICBuYW0gPSBzdGF0X2FycmF5W2ldLm5hbWU7 CisgICAgICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IGdsb2J1c19jb21tb25fY3JlYXRlX3N0cmlu ZygKKyAgICAgICAgICAgICAgICAgICAgICIlcyVzJXMiLCBiYXNlX3BhdGgsIHNsYXNoLCBuYW0p OworLSAgICAgICAgICAgICAgICBpZihuYW0gJiYgKChuYW1bMF0gPT0gJy4nICYmIAorKyAgICAg ICAgICAgICAgICBpZihuYW0gJiYgKChuYW1bMF0gPT0gJy4nICYmCisgICAgICAgICAgICAgICAg ICAgICAobmFtWzFdID09ICdcMCcgfHwgKG5hbVsxXSA9PSAnLicgJiYgbmFtWzJdID09ICdcMCcp KSkgfHwKKyAgICAgICAgICAgICAgICAgICAgIChnbG9idXNfaV9nZnNfZGF0YV9jaGVja19wYXRo KG9wLT5zZXNzaW9uX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgIGZ1bGxfcGF0aCwgTlVM TCwgR0ZTX0xfTElTVCwgMCkgPT0gR0xPQlVTX1NVQ0NFU1MpKSkKKyAgICAgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KAorLSAgICAgICAgICAgICAgICAgICAgICAg ICZzdGF0X2NvcHlbcHJ1bmVkX3N0YXRfY291bnRdLCAKKysgICAgICAgICAgICAgICAgICAgICAg ICAmc3RhdF9jb3B5W3BydW5lZF9zdGF0X2NvdW50XSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAmc3RhdF9hcnJheVtpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZ2xvYnVz X2dmc19zdGF0X3QpKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICAKKy0gICAgICAgICAgICAg ICAgICAgIHN0YXRfY29weVtwcnVuZWRfc3RhdF9jb3VudF0ubmFtZSA9IAorKworKyAgICAgICAg ICAgICAgICAgICAgc3RhdF9jb3B5W3BydW5lZF9zdGF0X2NvdW50XS5uYW1lID0KKyAgICAgICAg ICAgICAgICAgICAgICAgICBnbG9idXNfbGliY19zdHJkdXAoc3RhdF9hcnJheVtpXS5uYW1lKTsK KyAgICAgICAgICAgICAgICAgICAgIHN0YXRfY29weVtwcnVuZWRfc3RhdF9jb3VudF0uc3ltbGlu a190YXJnZXQgPQorICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19saWJjX3N0cmR1cChz dGF0X2FycmF5W2ldLnN5bWxpbmtfdGFyZ2V0KTsKKy0gICAgICAgICAgICAgICAgICAgIAorKwor ICAgICAgICAgICAgICAgICAgICAgcHJ1bmVkX3N0YXRfY291bnQrKzsKKyAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICBnbG9idXNfZnJlZShmdWxsX3BhdGgpOworQEAgLTEyMTIx LDcgKzEyMTIxLDcgQEAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2ZpbmlzaGVkX3N0YXRfcGFydGlh bCgKKyAgICAgICAgICAgICAgICAgc3RhdF9jb3B5WzBdLm5saW5rID0gcHJ1bmVkX3N0YXRfY291 bnQ7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorLSAgICAgICAgICAgIAorKworICAgICB9 CisgICAgIGVsc2UKKyAgICAgeworQEAgLTEyMTQzLDcgKzEyMTQzLDcgQEAgZ2xvYnVzX2dyaWRm dHBfc2VydmVyX2ZpbmlzaGVkX3N0YXRfcGFydGlhbCgKKyAgICAgYm91bmNlX2luZm8tPnN0YXRf Y291bnQgPSBzdGF0X2NvdW50OworICAgICBib3VuY2VfaW5mby0+c3RhdF9hcnJheSA9IHN0YXRf Y29weTsKKyAgICAgYm91bmNlX2luZm8tPmZpbmFsX3N0YXQgPSBHTE9CVVNfRkFMU0U7CistICAg IAorKworICAgICByZXN1bHQgPSBnbG9idXNfY2FsbGJhY2tfcmVnaXN0ZXJfb25lc2hvdCgKKyAg ICAgICAgIEdMT0JVU19OVUxMLAorICAgICAgICAgR0xPQlVTX05VTEwsCitAQCAtMTIxNTgsNyAr MTIxNTgsNyBAQCBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmluaXNoZWRfc3RhdF9wYXJ0aWFsKAor ICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZvcC0+c3RhdF9sb2NrKTsKKyAKKyAgICAgZ2xvYnVz X3BvbGwoKTsKKy0gICAgCisrCisgICAgIEdsb2J1c0dGU0RlYnVnRXhpdCgpOworICAgICByZXR1 cm47CisgCitAQCAtMTIxODUsNyArMTIxODUsNyBAQCBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfaW50 ZXJtZWRpYXRlX2NvbW1hbmQoCisgCisgICAgIGdsb2J1c19sX2dmc19kYXRhX2FsaXZlKG9wLT5z ZXNzaW9uX2hhbmRsZSk7CisgCistICAgIGJvdW5jZSA9IChnbG9idXNfbF9nZnNfZGF0YV9jbWRf Ym91bmNlX3QgKikgCisrICAgIGJvdW5jZSA9IChnbG9idXNfbF9nZnNfZGF0YV9jbWRfYm91bmNl X3QgKikKKyAgICAgICAgIGdsb2J1c19jYWxsb2MoMSwgc2l6ZW9mKGdsb2J1c19sX2dmc19kYXRh X2NtZF9ib3VuY2VfdCkpOworIAorICAgICBzd2l0Y2gob3AtPmNvbW1hbmQpCitAQCAtMTIxOTQs NyArMTIxOTQsNyBAQCBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfaW50ZXJtZWRpYXRlX2NvbW1hbmQo CisgICAgICAgICBib3VuY2UtPnJlcGx5LmluZm8uY29tbWFuZC5jaGVja3N1bSA9IGdsb2J1c19s aWJjX3N0cmR1cChjb21tYW5kX2RhdGEpOworICAgICAgICAgYm91bmNlLT5yZXBseS5jb2RlID0g MTEzOworICAgICAgICAgYnJlYWs7CistICAgICAgICAKKysKKyAgICAgICBjYXNlIEdMT0JVU19H RlNfQ01EX0hUVFBfUFVUOgorICAgICAgIGNhc2UgR0xPQlVTX0dGU19DTURfSFRUUF9HRVQ6Cisg ICAgICAgICBib3VuY2UtPnJlcGx5LmluZm8uY29tbWFuZC5jaGVja3N1bSA9IGdsb2J1c19saWJj X3N0cmR1cChjb21tYW5kX2RhdGEpOworQEAgLTEyMjQ4LDcgKzEyMjQ4LDcgQEAgZ2xvYnVzX2dy aWRmdHBfc2VydmVyX2ZpbmlzaGVkX3N0YXQoCisgICAgIEdsb2J1c0dGU0RlYnVnRW50ZXIoKTsK KyAKKyAgICAgZ2xvYnVzX2xfZ2ZzX2RhdGFfYWxpdmUob3AtPnNlc3Npb25faGFuZGxlKTsKKy0g ICAgCisrCisgICAgIGdsb2J1c19tdXRleF9sb2NrKCZvcC0+c3RhdF9sb2NrKTsKKyAgICAgaWYo c3RhdF9hcnJheSAhPSBOVUxMICYmIHN0YXRfY291bnQgPiAwKQorICAgICB7CitAQCAtMTIyNjEs NyArMTIyNjEsNyBAQCBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmluaXNoZWRfc3RhdCgKKyAgICAg ICAgICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJvck1lbW9yeSgic3RhdF9jb3B5Iik7CisgICAg ICAgICAgICAgZ290byBlcnJvcl9hbGxvYzsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAg ICAgICAgYmFzZV9wYXRoID0gc3RhdF9pbmZvLT5wYXRobmFtZTsKKyAgICAgICAgIC8qIGlmIHdl IGhhdmUgZXhwbGljaXQgYWNjZXNzIG9uIHRoZSBiYXNlIHBhdGgsIG5vIG5lZWQgdG8gcHJ1bmUg Ki8KKyAgICAgICAgIGlmKHN0YXRfaW5mby0+ZmlsZV9vbmx5IHx8IGdsb2J1c19pX2dmc19kYXRh X2NoZWNrX3BhdGgob3AtPnNlc3Npb25faGFuZGxlLAorQEAgLTEyMjkzLDcgKzEyMjkzLDcgQEAg Z2xvYnVzX2dyaWRmdHBfc2VydmVyX2ZpbmlzaGVkX3N0YXQoCisgICAgICAgICAgICAgY2hhciAq ICAgICAgICAgICAgICAgICAgICAgIG5hbTsKKyAgICAgICAgICAgICBjaGFyICogICAgICAgICAg ICAgICAgICAgICAgZnVsbF9wYXRoOworICAgICAgICAgICAgIGNoYXIgKiAgICAgICAgICAgICAg ICAgICAgICBzbGFzaDsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBpZihiYXNlX3Bh dGhbc3RybGVuKGJhc2VfcGF0aCkgLSAxXSAhPSAnLycpCisgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICBzbGFzaCA9ICIvIjsKK0BAIC0xMjMwNywyMSArMTIzMDcsMjEgQEAgZ2xvYnVz X2dyaWRmdHBfc2VydmVyX2ZpbmlzaGVkX3N0YXQoCisgICAgICAgICAgICAgICAgIG5hbSA9IHN0 YXRfYXJyYXlbaV0ubmFtZTsKKyAgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gZ2xvYnVzX2Nv bW1vbl9jcmVhdGVfc3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgIiVzJXMlcyIsIGJhc2Vf cGF0aCwgc2xhc2gsIG5hbSk7CistICAgICAgICAgICAgICAgIGlmKG5hbSAmJiAoKG5hbVswXSA9 PSAnLicgJiYgCisrICAgICAgICAgICAgICAgIGlmKG5hbSAmJiAoKG5hbVswXSA9PSAnLicgJiYK KyAgICAgICAgICAgICAgICAgICAgIChuYW1bMV0gPT0gJ1wwJyB8fCAobmFtWzFdID09ICcuJyAm JiBuYW1bMl0gPT0gJ1wwJykpKSB8fAorICAgICAgICAgICAgICAgICAgICAgKGdsb2J1c19pX2dm c19kYXRhX2NoZWNrX3BhdGgob3AtPnNlc3Npb25faGFuZGxlLAorICAgICAgICAgICAgICAgICAg ICAgZnVsbF9wYXRoLCBOVUxMLCBHRlNfTF9MSVNULCAwKSA9PSBHTE9CVVNfU1VDQ0VTUykpKQor ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBtZW1jcHkoCistICAgICAg ICAgICAgICAgICAgICAgICAgJnN0YXRfY29weVtwcnVuZWRfc3RhdF9jb3VudF0sIAorKyAgICAg ICAgICAgICAgICAgICAgICAgICZzdGF0X2NvcHlbcHJ1bmVkX3N0YXRfY291bnRdLAorICAgICAg ICAgICAgICAgICAgICAgICAgICZzdGF0X2FycmF5W2ldLAorICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVvZihnbG9idXNfZ2ZzX3N0YXRfdCkpOworLSAgICAgICAgICAgICAgICAgICAgICAg IAorLSAgICAgICAgICAgICAgICAgICAgc3RhdF9jb3B5W3BydW5lZF9zdGF0X2NvdW50XS5uYW1l ID0gCisrCisrICAgICAgICAgICAgICAgICAgICBzdGF0X2NvcHlbcHJ1bmVkX3N0YXRfY291bnRd Lm5hbWUgPQorICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19saWJjX3N0cmR1cChzdGF0 X2FycmF5W2ldLm5hbWUpOworICAgICAgICAgICAgICAgICAgICAgc3RhdF9jb3B5W3BydW5lZF9z dGF0X2NvdW50XS5zeW1saW5rX3RhcmdldCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgZ2xv YnVzX2xpYmNfc3RyZHVwKHN0YXRfYXJyYXlbaV0uc3ltbGlua190YXJnZXQpOworLSAgICAgICAg ICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgICAgICBwcnVuZWRfc3RhdF9jb3VudCsr OworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGdsb2J1c19mcmVlKGZ1bGxf cGF0aCk7CitAQCAtMTIzMzIsNyArMTIzMzIsNyBAQCBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmlu aXNoZWRfc3RhdCgKKyAgICAgICAgICAgICAgICAgc3RhdF9jb3B5WzBdLm5saW5rID0gcHJ1bmVk X3N0YXRfY291bnQ7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorLSAgICAgICAgICAgIAor KworICAgICB9CisgICAgIGVsc2UKKyAgICAgeworQEAgLTEyMzU0LDcgKzEyMzU0LDcgQEAgZ2xv YnVzX2dyaWRmdHBfc2VydmVyX2ZpbmlzaGVkX3N0YXQoCisgICAgIGJvdW5jZV9pbmZvLT5zdGF0 X2NvdW50ID0gc3RhdF9jb3VudDsKKyAgICAgYm91bmNlX2luZm8tPnN0YXRfYXJyYXkgPSBzdGF0 X2NvcHk7CisgICAgIGJvdW5jZV9pbmZvLT5maW5hbF9zdGF0ID0gR0xPQlVTX1RSVUU7CistICAg IAorKworICAgICByZXN1bHQgPSBnbG9idXNfY2FsbGJhY2tfcmVnaXN0ZXJfb25lc2hvdCgKKyAg ICAgICAgIEdMT0JVU19OVUxMLAorICAgICAgICAgR0xPQlVTX05VTEwsCitAQCAtMTI0NzcsNyAr MTI0NzcsNyBAQCBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfYmVnaW5fdHJhbnNmZXIoCisgICAgICAg ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgR2xvYnVzR0ZTRGVidWdJ bmZvKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xvYnVzX2Z0cF9jb250cm9sX2Rh dGFfY29ubmVjdF9yZWFkIik7CistICAgICAgICAgICAgICAgICAgICAgICAgCisrCisgICAgICAg ICAgICAgICAgICAgICAgICAgaWYob3AtPm9yZGVyX2RhdGEgJiYgb3AtPmRhdGFfaGFuZGxlLT5p bmZvLm1vZGUgPT0gJ0UnKQorICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jb250cm9sX3NldF9mb3JjZV9v cmRlcigKK0BAIC0xMjc0OCw3ICsxMjc0OCw3IEBAIGdsb2J1c19sX2dmc19vcGVyYXRpb25fZmlu aXNoZWRfa2lja291dCgKKyAgICAgaWYoYm91bmNlLT5maW5pc2hlZF9pbmZvLT50eXBlID09IEdM T0JVU19HRlNfT1BfU0VTU0lPTl9TVEFSVCkKKyAgICAgeworICAgICAgICAgLyogdXBkYXRlIGhv bWUgZGlyIGJhc2VkIG9uIHJlc3RyaWN0ZWQgcGF0aHMgKi8KKy0gICAgICAgIAorKworICAgICAg ICAgLyogcmVzZXQgaG9tZSBkaXIgdG8gLyBpZiBjaHJvb3QuICovCisgICAgICAgICBpZihvcC0+ c2Vzc2lvbl9oYW5kbGUtPmNocm9vdF9wYXRoKQorICAgICAgICAgeworQEAgLTEyNzc1LDcgKzEy Nzc1LDcgQEAgZ2xvYnVzX2xfZ2ZzX29wZXJhdGlvbl9maW5pc2hlZF9raWNrb3V0KAorICAgICAg ICAgICAgICAgICBnbG9idXNfZnJlZShvcC0+c2Vzc2lvbl9oYW5kbGUtPmhvbWVfZGlyKTsKKyAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgb3AtPnNlc3Npb25faGFuZGxlLT5ob21lX2RpciA9 IHN0cmR1cCgiLyIpOworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIGJvdW5jZS0+Zmlu aXNoZWRfaW5mby0+aW5mby5zZXNzaW9uLmhvbWVfZGlyID0KKyAgICAgICAgICAgICAgICAgb3At PnNlc3Npb25faGFuZGxlLT5ob21lX2RpcjsKKyAgICAgICAgIH0KK0BAIC0xMjg2MSw5ICsxMjg2 MSw5IEBAIGdsb2J1c19ncmlkZnRwX3NlcnZlcl9vcGVyYXRpb25fZmluaXNoZWQoCisgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgIGNhc2UgR0xPQlVTX0dGU19PUF9TVEFUOgorICAgICAg ICAgICAgIGdsb2J1c19ncmlkZnRwX3NlcnZlcl9maW5pc2hlZF9zdGF0X3BhcnRpYWwoCistICAg ICAgICAgICAgICAgIG9wLCAKKy0gICAgICAgICAgICAgICAgcmVzdWx0LCAKKy0gICAgICAgICAg ICAgICAgZmluaXNoZWRfaW5mby0+aW5mby5zdGF0LnN0YXRfYXJyYXksIAorKyAgICAgICAgICAg ICAgICBvcCwKKysgICAgICAgICAgICAgICAgcmVzdWx0LAorKyAgICAgICAgICAgICAgICBmaW5p c2hlZF9pbmZvLT5pbmZvLnN0YXQuc3RhdF9hcnJheSwKKyAgICAgICAgICAgICAgICAgZmluaXNo ZWRfaW5mby0+aW5mby5zdGF0LnN0YXRfY291bnQpOworICAgICAgICAgICAgIHJldHVybjsKKyAg ICAgICAgICAgZGVmYXVsdDoKK0BAIC0xMjg4MSwxMyArMTI4ODEsMTMgQEAgZ2xvYnVzX2dyaWRm dHBfc2VydmVyX29wZXJhdGlvbl9maW5pc2hlZCgKKyAKKyAgICAgZmluaXNoZWRfaW5mby0+aWQg PSBvcC0+aWQ7CisgICAgIGZpbmlzaGVkX2luZm8tPnJlc3VsdCA9IHJlc3VsdDsKKy0gICAgCisr CisgICAgIGlmKGZpbmlzaGVkX2luZm8tPm1zZyAhPSBOVUxMKQorICAgICB7CisgICAgICAgICBv cC0+dXNlcl9tc2cgPSBnbG9idXNfbGliY19zdHJkdXAoZmluaXNoZWRfaW5mby0+bXNnKTsKKyAg ICAgfQorICAgICBvcC0+dXNlcl9jb2RlID0gZmluaXNoZWRfaW5mby0+Y29kZTsKKy0gICAgCisr CisgICAgIHN3aXRjaChmaW5pc2hlZF9pbmZvLT50eXBlKQorICAgICB7CisgICAgICAgICBjYXNl IEdMT0JVU19HRlNfT1BfUkVDVjoKK0BAIC0xMjkyNSwyMyArMTI5MjUsMjMgQEAgZ2xvYnVzX2dy aWRmdHBfc2VydmVyX29wZXJhdGlvbl9maW5pc2hlZCgKKyAgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgICAgZ2xvYnVzX2ZyZWUob3AtPnNlc3Npb25faGFuZGxlLT5ob21lX2Rp cik7CisgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgb3AtPnNlc3Npb25faGFu ZGxlLT5ob21lX2RpciA9IAorKyAgICAgICAgICAgICAgICBvcC0+c2Vzc2lvbl9oYW5kbGUtPmhv bWVfZGlyID0KKyAgICAgICAgICAgICAgICAgICAgIHN0cmR1cChmaW5pc2hlZF9pbmZvLT5pbmZv LnNlc3Npb24uaG9tZV9kaXIpOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAKKysKKyAg ICAgICAgICAgICBpZihnbG9idXNfaGFzaHRhYmxlX2VtcHR5KCZvcC0+c2Vzc2lvbl9oYW5kbGUt PmN1c3RvbV9jbWRfdGFibGUpKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgZmlu aXNoZWRfaW5mby0+b3BfaW5mbyA9IE5VTEw7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAg IGlmKG9wLT5jYWxsYmFjayAhPSBOVUxMICYmIAorKyAgICAgICAgICAgIGlmKG9wLT5jYWxsYmFj ayAhPSBOVUxMICYmCisgICAgICAgICAgICAgICAgICFnbG9idXNfaGFzaHRhYmxlX2VtcHR5KAor ICAgICAgICAgICAgICAgICAgICAgJm9wLT5zZXNzaW9uX2hhbmRsZS0+Y3VzdG9tX2NtZF90YWJs ZSkpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBmaW5pc2hlZF9pbmZvLT5vcF9p bmZvID0gZ2xvYnVzX2NhbGxvYygxLCBzaXplb2YoZ2xvYnVzX2lfZ2ZzX29wX2luZm9fdCkpOwor LSAgICAgICAgICAgICAgICBmaW5pc2hlZF9pbmZvLT5vcF9pbmZvLT5jdXN0b21fY29tbWFuZF90 YWJsZSA9IAorKyAgICAgICAgICAgICAgICBmaW5pc2hlZF9pbmZvLT5vcF9pbmZvLT5jdXN0b21f Y29tbWFuZF90YWJsZSA9CisgICAgICAgICAgICAgICAgICAgICBvcC0+c2Vzc2lvbl9oYW5kbGUt PmN1c3RvbV9jbWRfdGFibGU7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIAorKworICAg ICAgICAgICAgIGJyZWFrOworIAorICAgICAgICAgY2FzZSBHTE9CVVNfR0ZTX09QX1BBU1NJVkU6 CitAQCAtMTMwNzEsNyArMTMwNzEsNyBAQCBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfdXBkYXRlX2J5 dGVzX3JlY3ZkKAorICAgICBnbG9idXNfbXV0ZXhfbG9jaygmb3AtPnNlc3Npb25faGFuZGxlLT5t dXRleCk7CisgICAgIHsKKyAgICAgICAgIG9wLT5yZWN2ZF9ieXRlcyArPSBsZW5ndGg7CistICAg ICAgICAgICAgCisrCisgICAgICAgICBpZihvcC0+ZGF0YV9oYW5kbGUtPmh0dHBfaGFuZGxlKQor ICAgICAgICAgeworICAgICAgICAgICAgIG9wLT5kYXRhX2hhbmRsZS0+aHR0cF90cmFuc2ZlcnJl ZCArPSBsZW5ndGg7CitAQCAtMTMxMTksNyArMTMxMTksNyBAQCBnbG9idXNfZ3JpZGZ0cF9zZXJ2 ZXJfdXBkYXRlX2J5dGVzX3dyaXR0ZW4oCisgICAgICAgICBvcC0+cmVjdmRfYnl0ZXMgKz0gbGVu Z3RoOworICAgICAgICAgZ2xvYnVzX3JhbmdlX2xpc3RfaW5zZXJ0KAorICAgICAgICAgICAgIG9w LT5yZWN2ZF9yYW5nZXMsIG9mZnNldCArIG9wLT50cmFuc2Zlcl9kZWx0YSwgbGVuZ3RoKTsKKy0g ICAgICAgICAgICAKKysKKyAgICAgICAgIGlmKG9wLT5kYXRhX2hhbmRsZS0+aHR0cF9oYW5kbGUp CisgICAgICAgICB7CisgICAgICAgICAgICAgb3AtPmRhdGFfaGFuZGxlLT5odHRwX3RyYW5zZmVy cmVkICs9IGxlbmd0aDsKK0BAIC0xMzE0NCw5ICsxMzE0NCw5IEBAIGdsb2J1c19ncmlkZnRwX3Nl cnZlcl9nZXRfb3B0aW1hbF9jb25jdXJyZW5jeSgKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQor ICAgICBpZighb3AtPndyaXRpbmcpCistICAgIHsgICAgCisrICAgIHsKKyAgICAgICAgIGdsb2J1 c19tdXRleF9sb2NrKCZvcC0+c2Vzc2lvbl9oYW5kbGUtPm11dGV4KTsKKy0gICAgICAgIGlmKG9w LT5kYXRhX2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0xfR0ZTX0RBVEFfSEFORExFX0lOVVNFICYm IAorKyAgICAgICAgaWYob3AtPmRhdGFfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfTF9HRlNfREFU QV9IQU5ETEVfSU5VU0UgJiYKKyAgICAgICAgICAgICBvcC0+ZGF0YV9oYW5kbGUtPmlzX21pbmUp CisgICAgICAgICB7CisgICAgICAgICAgICAgdW5zaWduZWQgaW50IG51bV9zdHJlYW1zOworQEAg LTEzMzUzLDcgKzEzMzUzLDcgQEAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX3F1ZXJ5X29wX2luZm8o CisgeworICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXMgPSBHTE9C VVNfU1VDQ0VTUzsKKyAgICAgdmFfbGlzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXA7 CistICAgIAorKworICAgICBjaGFyICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd2 OworICAgICBpbnQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdjOworICAgICBH bG9idXNHRlNOYW1lKGdsb2J1c19ncmlkZnRwX3NlcnZlcl9xdWVyeV9vcF9pbmZvKTsKK0BAIC0x MzM3NCwxNiArMTMzNzQsMTYgQEAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX3F1ZXJ5X29wX2luZm8o CisgICAgICAgICBjYXNlIEdMT0JVU19HRlNfT1BfSU5GT19DTURfQVJHUzoKKyAgICAgICAgICAg ICBhcmd2ID0gdmFfYXJnKGFwLCBjaGFyICoqKik7CisgICAgICAgICAgICAgYXJnYyA9IHZhX2Fy ZyhhcCwgaW50ICopOworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgICphcmd2ID0gb3Bf aW5mby0+YXJndjsKKyAgICAgICAgICAgICAqYXJnYyA9IG9wX2luZm8tPmFyZ2M7CisgICAgICAg ICAgICAgYnJlYWs7CistICAgICAgICAKKysKKyAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg ICAgICAgICAgICByZXMgPSBHbG9idXNHRlNFcnJvckdlbmVyaWMoIkludmFsaWQgcXVlcnkgcGFy YW1ldGVyLiIpOworICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgfQorLSAgICAKKysKKyAg ICAgdmFfZW5kKGFwKTsKKyAKKyAgICAgaWYocmVzICE9IEdMT0JVU19TVUNDRVNTKQorQEAgLTEz Mzk3LDcgKzEzMzk3LDcgQEAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX3F1ZXJ5X29wX2luZm8oCisg ZXJyOgorICAgICBHbG9idXNHRlNEZWJ1Z0V4aXRXaXRoRXJyb3IoKTsKKyAgICAgcmV0dXJuIHJl czsKKy19ICAgICAgICAKKyt9CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2dyaWRmdHBf c2VydmVyX3NldF9jaGVja3N1bV9zdXBwb3J0KAorQEAgLTEzNDQxLDcgKzEzNDQxLDcgQEAgZ2xv YnVzX2dyaWRmdHBfc2VydmVyX2FkZF9jb21tYW5kKAorICAgICAgICAgcmVzdWx0ID0gR2xvYnVz R0ZTRXJyb3JHZW5lcmljKCJJbnZhbGlkIGNtZF9pZC4iKTs7CisgICAgICAgICBnb3RvIGVycjsK KyAgICAgfQorLSAgICAKKysKKyAgICAgaWYob3AtPnNlc3Npb25faGFuZGxlLT5jdXN0b21fY21k X3RhYmxlID09IE5VTEwpCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19oYXNodGFibGVfaW5pdCgK K0BAIC0xMzQ1MCwxMCArMTM0NTAsMTAgQEAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2FkZF9jb21t YW5kKAorICAgICAgICAgICAgIGdsb2J1c19oYXNodGFibGVfc3RyaW5nX2hhc2gsCisgICAgICAg ICAgICAgZ2xvYnVzX2hhc2h0YWJsZV9zdHJpbmdfa2V5ZXEpOworICAgICB9CistICAgIAorKwor ICAgICBjbWRfZW50ID0gKGdsb2J1c19pX2dmc19jbWRfZW50X3QgKikKKyAgICAgICAgIGdsb2J1 c19jYWxsb2MoMSwgc2l6ZW9mKGdsb2J1c19pX2dmc19jbWRfZW50X3QpKTsKKy0gICAgCisrCisg ICAgIGNtZF9lbnQtPmNtZF9uYW1lID0gZ2xvYnVzX2xpYmNfc3RyZHVwKGNvbW1hbmRfbmFtZSk7 CisgICAgIHB0ciA9IGNtZF9lbnQtPmNtZF9uYW1lOworICAgICB3aGlsZShwdHIgJiYgKnB0cikK K0BAIC0xMzQ2Nyw3ICsxMzQ2Nyw3IEBAIGdsb2J1c19ncmlkZnRwX3NlcnZlcl9hZGRfY29tbWFu ZCgKKyAgICAgY21kX2VudC0+aGVscF9zdHIgPSBnbG9idXNfbGliY19zdHJkdXAoaGVscF9zdHJp bmcpOworICAgICBjbWRfZW50LT5oYXNfcGF0aG5hbWUgPSBoYXNfcGF0aG5hbWU7CisgICAgIGNt ZF9lbnQtPmFjY2Vzc190eXBlID0gYWNjZXNzX3R5cGU7CistICAgIAorKworICAgICByYyA9IGds b2J1c19oYXNodGFibGVfaW5zZXJ0KAorICAgICAgICAgJm9wLT5zZXNzaW9uX2hhbmRsZS0+Y3Vz dG9tX2NtZF90YWJsZSwgY21kX2VudC0+Y21kX25hbWUsIGNtZF9lbnQpOworIAorQEAgLTEzNDc2 LDE1ICsxMzQ3NiwxNSBAQCBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfYWRkX2NvbW1hbmQoCisgICAg ICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJvckdlbmVyaWMoIkNvdWxkIG5vdCBzdG9yZSBjb21t YW5kIGVudHJ5LiIpOworICAgICAgICAgZ290byBlcnI7CisgICAgIH0KKy0gICAgCistICAgIEds b2J1c0dGU0RlYnVnRXhpdCgpOyAgIAorKworKyAgICBHbG9idXNHRlNEZWJ1Z0V4aXQoKTsKKyAg ICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworLSAgICAKKysKKyBlcnI6CistICAgIEdsb2J1c0dG U0RlYnVnRXhpdFdpdGhFcnJvcigpOyAgIAorKyAgICBHbG9idXNHRlNEZWJ1Z0V4aXRXaXRoRXJy b3IoKTsKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CistICAgIAorKworIAorIC8qIHRoaXMgaXMg dXNlZCB0byB0cmFuc2xhdGUgdGhlIHJlc3RhcnQgYW5kIHBhcnRpYWwgb2Zmc2V0L2xlbmd0aHMg aW50bworICAgICBhIHNldHMgb2YgcmFuZ2VzIHRvIHRyYW5zZmVyLi4uIHN0b3JhZ2UgaW50ZXJm YWNlIHNob3VsZG4ndCBrbm93IGFib3V0CitAQCAtMTM1NjEsOSArMTM1NjEsOSBAQCBnbG9idXNf Z3JpZGZ0cF9zZXJ2ZXJfZ2V0X3JlYWRfcmFuZ2UoCisgICAgIGdsb2J1c19vZmZfdCAgICAgICAg ICAgICAgICAgICAgICAgIHBhcnRfc2l6ZTsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfZ3Jp ZGZ0cF9zZXJ2ZXJfZ2V0X3JlYWRfcmFuZ2UpOworICAgICBHbG9idXNHRlNEZWJ1Z0VudGVyKCk7 CistIAorKworICAgICBnbG9idXNfbF9nZnNfZGF0YV9hbGl2ZShvcC0+c2Vzc2lvbl9oYW5kbGUp OworLSAgICAKKysKKyAgICAgLyogdGhpcyB3aG9sZSBmdW5jdGlvbiBpcyBjcmF6eSB1Z2x5IGFu ZCBpbm5lZmZpZWNpZW50Li4uCisgICAgICAgIG5lZWRzIHJldGhpbmtpbmcgKi8KKyAgICAgZ2xv YnVzX211dGV4X2xvY2soJm9wLT5zZXNzaW9uX2hhbmRsZS0+bXV0ZXgpOworQEAgLTEzNzMzLDcg KzEzNzMzLDcgQEAgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2dldF9y ZWN2X21vZGlmaWNhdGlvbl90aW1lKAorICAgICBnbG9idXNfZ2ZzX29wZXJhdGlvbl90ICAgICAg ICAgICAgICBvcCwKKyAgICAgdGltZV90ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0 X3RpbWUpCisteyAgICAKKyt7CisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAg ICAgIHJlc3VsdDsKKyAgICAgdGltZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1w X3RpbWUgPSAtMTsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZ2V0 X3JlY3ZfbW9kaWZpY2F0aW9uX3RpbWUpOworQEAgLTEzNzQ0LDEzICsxMzc0NCwxMyBAQCBnbG9i dXNfZ3JpZGZ0cF9zZXJ2ZXJfZ2V0X3JlY3ZfbW9kaWZpY2F0aW9uX3RpbWUoCisgICAgICAgICBy ZXN1bHQgPSBHbG9idXNHRlNFcnJvckdlbmVyaWMoIkludmFsaWQgcGFyYW1ldGVycy4iKTsKKyAg ICAgICAgIGdvdG8gZXJyb3I7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKG9wLT5zdG9yYXR0 ciAmJiBvcC0+c3RvcmF0dHItPm1vZGlmeSkKKyAgICAgeworICAgICAgICAgY2hhciogdHo7Cisg ICAgICAgICBzdHJ1Y3QgdG0gbW9kdGltZTsKKyAgICAgICAgIG1lbXNldCgmbW9kdGltZSwgMCwg c2l6ZW9mKG1vZHRpbWUpKTsKKy0gICAgICAgIGlmIChzc2NhbmYob3AtPnN0b3JhdHRyLT5tb2Rp ZnksICIlNGQlMmQlMmQlMmQlMmQlMmQiLCAKKysgICAgICAgIGlmIChzc2NhbmYob3AtPnN0b3Jh dHRyLT5tb2RpZnksICIlNGQlMmQlMmQlMmQlMmQlMmQiLAorICAgICAgICAgICAgICAgICAgICAg Jm1vZHRpbWUudG1feWVhciwgJm1vZHRpbWUudG1fbW9uLCAmbW9kdGltZS50bV9tZGF5LAorICAg ICAgICAgICAgICAgICAgICAgJm1vZHRpbWUudG1faG91ciwgJm1vZHRpbWUudG1fbWluLCAmbW9k dGltZS50bV9zZWMpICE9IDYpCisgICAgICAgICB7CitAQCAtMTM3NzEsMTEgKzEzNzcxLDExIEBA IGdsb2J1c19ncmlkZnRwX3NlcnZlcl9nZXRfcmVjdl9tb2RpZmljYXRpb25fdGltZSgKKyAgICAg ICAgIGVsc2UKKyAgICAgICAgICAgICBnbG9idXNfbGliY191bnNldGVudigiVFoiKTsKKyAgICAg ICAgIHR6c2V0KCk7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAg ICAgIG9wLT5zdG9yYXR0ci0+bW9kaWZ5X3NlZW4gPSBHTE9CVVNfVFJVRTsKKyAgICAgfQorICAg ICAqb3V0X3RpbWUgPSB0bXBfdGltZTsKKy0gICAgCisrCisgICAgIEdsb2J1c0dGU0RlYnVnRXhp dCgpOworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgCitAQCAtMTM3ODQsOCArMTM3ODQs OCBAQCBlcnJvcjoKKyAgICAgKm91dF90aW1lID0gLTE7CisgICAgIHJldHVybiByZXN1bHQ7Cisg fQorLSAgICAKKy0gICAgCisrCisrCisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2dyaWRm dHBfc2VydmVyX2dldF9yZWN2X2F0dHJfc3RyaW5nKAorQEAgLTEzODA0LDcgKzEzODA0LDcgQEAg Z2xvYnVzX2dyaWRmdHBfc2VydmVyX2dldF9yZWN2X2F0dHJfc3RyaW5nKAorICAgICAgICAgcmVz dWx0ID0gR2xvYnVzR0ZTRXJyb3JHZW5lcmljKCJJbnZhbGlkIHBhcmFtZXRlcnMuIik7CisgICAg ICAgICBnb3RvIGVycm9yOworICAgICB9CistICAgIAorKworICAgICBpZihvcC0+c3RvcmF0dHIp CisgICAgIHsKKyAgICAgICAgIGlmKHJlcXVlc3RlZF9hdHRyKQorQEAgLTEzODM4LDcgKzEzODM4 LDcgQEAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2dldF9yZWN2X2F0dHJfc3RyaW5nKAorICAgICAg ICAgfQorICAgICB9CisgICAgICpvdXRfdmFsdWUgPSB0bXBfdmFsOworLSAgICAKKysKKyAgICAg R2xvYnVzR0ZTRGVidWdFeGl0KCk7CisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAKK0BA IC0xMzg0Niw3ICsxMzg0Niw3IEBAIGVycm9yOgorICAgICBHbG9idXNHRlNEZWJ1Z0V4aXRXaXRo RXJyb3IoKTsKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CistICAgIAorKworIAorIGdsb2J1c19y ZXN1bHRfdAorIGdsb2J1c19ncmlkZnRwX3NlcnZlcl9yZWdpc3Rlcl9yZWFkKAorQEAgLTE0MDQ2 LDcgKzE0MDQ2LDcgQEAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2ZpbmlzaGVkX3Nlc3Npb25fc3Rh cnQoCisgICAgIGZpbmlzaGVkX2luZm8uaW5mby5zZXNzaW9uLmhvbWVfZGlyID0gaG9tZV9kaXI7 CisgCisgICAgIC8qIHB1bGwgcmVzcG9uc2UgY29kZSBmcm9tIGVycm9yICovCistICAgIGlmKHJl c3VsdCAhPSBHTE9CVVNfU1VDQ0VTUyAmJiAKKysgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUND RVNTICYmCisgICAgICAgICAoY29kZSA9IGdsb2J1c19nZnNfZXJyb3JfZ2V0X2Z0cF9yZXNwb25z ZV9jb2RlKAorICAgICAgICAgICAgIGdsb2J1c19lcnJvcl9wZWVrKHJlc3VsdCkpKSAhPSAwKQor ICAgICB7CitAQCAtMTQwODQsNyArMTQwODQsNyBAQCBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmlu aXNoZWRfYWN0aXZlX2RhdGEoCisgICAgIGZpbmlzaGVkX2luZm8uaW5mby5kYXRhLmJpX2RpcmVj dGlvbmFsID0gYmlfZGlyZWN0aW9uYWw7CisgCisgICAgIC8qIHB1bGwgcmVzcG9uc2UgY29kZSBm cm9tIGVycm9yICovCistICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUyAmJiAKKysgICAg aWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTICYmCisgICAgICAgICAoY29kZSA9IGdsb2J1c19n ZnNfZXJyb3JfZ2V0X2Z0cF9yZXNwb25zZV9jb2RlKAorICAgICAgICAgICAgIGdsb2J1c19lcnJv cl9wZWVrKHJlc3VsdCkpKSAhPSAwKQorICAgICB7CitAQCAtMTQxMjYsNyArMTQxMjYsNyBAQCBn bG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmluaXNoZWRfcGFzc2l2ZV9kYXRhKAorICAgICBmaW5pc2hl ZF9pbmZvLmluZm8uZGF0YS5jc19jb3VudCA9IGNzX2NvdW50OworIAorICAgICAvKiBwdWxsIHJl c3BvbnNlIGNvZGUgZnJvbSBlcnJvciAqLworLSAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NF U1MgJiYgCisrICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUyAmJgorICAgICAgICAgKGNv ZGUgPSBnbG9idXNfZ2ZzX2Vycm9yX2dldF9mdHBfcmVzcG9uc2VfY29kZSgKKyAgICAgICAgICAg ICBnbG9idXNfZXJyb3JfcGVlayhyZXN1bHQpKSkgIT0gMCkKKyAgICAgeworQEAgLTE0MTU1LDcg KzE0MTU1LDcgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfcmVxdWVzdF9zZXRfY3JlZCgKKyAKKyAgICAg c2Vzc2lvbl9oYW5kbGUgPSAoZ2xvYnVzX2xfZ2ZzX2RhdGFfc2Vzc2lvbl90ICopIHNlc3Npb25f YXJnOworICAgICBnbG9idXNfbF9nZnNfZGF0YV9yZXNldF93YXRjaGRvZyhzZXNzaW9uX2hhbmRs ZSwgTlVMTCk7CistICAgIAorKworICAgICBpZihkZWxfY3JlZCAhPSBOVUxMKQorICAgICB7Cisg ICAgICAgICBzZXNzaW9uX2hhbmRsZS0+ZGVsX2NyZWQgPSBkZWxfY3JlZDsKK0BAIC0xNDE4Niw3 ICsxNDE4Niw3IEBAIGdsb2J1c19pX2dmc19kYXRhX3JlcXVlc3RfYnVmZmVyX3NlbmQoCisgCisg ICAgIHNlc3Npb25faGFuZGxlID0gKGdsb2J1c19sX2dmc19kYXRhX3Nlc3Npb25fdCAqKSBzZXNz aW9uX2FyZzsKKyAgICAgZ2xvYnVzX2xfZ2ZzX2RhdGFfcmVzZXRfd2F0Y2hkb2coc2Vzc2lvbl9o YW5kbGUsIE5VTEwpOworLSAgICAKKysKKyAgICAgaWYoYnVmZmVyX3R5cGUgJiBHTE9CVVNfR0ZT X0JVRkZFUl9TRVJWRVJfREVGSU5FRCkKKyAgICAgeworICAgICAgICAgc3dpdGNoKGJ1ZmZlcl90 eXBlKQorQEAgLTE0MjE1LDExICsxNDIxNSwxMSBAQCBnbG9idXNfaV9nZnNfZGF0YV9yZXF1ZXN0 X2J1ZmZlcl9zZW5kKAorIAorIHZvaWQKKyBnbG9idXNfaV9nZnNfZGF0YV9odHRwX3JlYWRfY2Io CistICAgIGdsb2J1c194aW9faGFuZGxlX3QgICAgICAgICAgICAgICAgIHhpb19oYW5kbGUsIAor KyAgICBnbG9idXNfeGlvX2hhbmRsZV90ICAgICAgICAgICAgICAgICB4aW9faGFuZGxlLAorICAg ICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQsCisgICAgIGdsb2J1 c19ieXRlX3QgKiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwKKyAgICAgZ2xvYnVzX3NpemVf dCAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLAorLSAgICBnbG9idXNfc2l6ZV90ICAgICAg ICAgICAgICAgICAgICAgICBuYnl0ZXMsIAorKyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAg ICAgICAgICAgICBuYnl0ZXMsCisgICAgIGdsb2J1c194aW9fZGF0YV9kZXNjcmlwdG9yX3QgICAg ICAgIGRhdGFfZGVzYywKKyAgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dXNlcl9hcmcpCisgeworQEAgLTE0MjMyLDExICsxNDIzMiwxMSBAQCBnbG9idXNfaV9nZnNfZGF0 YV9odHRwX3JlYWRfY2IoCisgCisgICAgIG9mZnNldCA9IGJvdW5jZV9pbmZvLT5vcC0+Ynl0ZXNf dHJhbnNmZXJyZWQ7CisgICAgIGJvdW5jZV9pbmZvLT5vcC0+Ynl0ZXNfdHJhbnNmZXJyZWQgKz0g bmJ5dGVzOworLSAgICAKKysKKyAgICAgZW9mID0gZ2xvYnVzX3hpb19lcnJvcl9pc19lb2YocmVz dWx0KTsKKyAgICAgaWYoZW9mKQorLSAgICB7ICAgICAgICAKKy0gICAgICAgIGlmKGJvdW5jZV9p bmZvLT5vcC0+Ynl0ZXNfdHJhbnNmZXJyZWQgPCAKKysgICAgeworKyAgICAgICAgaWYoYm91bmNl X2luZm8tPm9wLT5ieXRlc190cmFuc2ZlcnJlZCA8CisgICAgICAgICAgICAgYm91bmNlX2luZm8t Pm9wLT5kYXRhX2hhbmRsZS0+aHR0cF9sZW5ndGgpCisgICAgICAgICB7CisgICAgICAgICAgICAg cmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JHZW5lcmljKAorQEAgLTE0MjQ3LDcgKzE0MjQ3LDcgQEAg Z2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF9yZWFkX2NiKAorICAgICAgICAgICAgIHJlc3VsdCA9IEdM T0JVU19TVUNDRVNTOworICAgICAgICAgfQorICAgICB9CistICAgIGlmKGJvdW5jZV9pbmZvLT5v cC0+Ynl0ZXNfdHJhbnNmZXJyZWQgPiAKKysgICAgaWYoYm91bmNlX2luZm8tPm9wLT5ieXRlc190 cmFuc2ZlcnJlZCA+CisgICAgICAgICBib3VuY2VfaW5mby0+b3AtPmRhdGFfaGFuZGxlLT5odHRw X2xlbmd0aCkKKyAgICAgeworICAgICAgICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JHZW5lcmlj KAorQEAgLTE0MjcxLDExICsxNDI3MSwxMSBAQCBnbG9idXNfaV9nZnNfZGF0YV9odHRwX3JlYWRf Y2IoCisgCisgdm9pZAorIGdsb2J1c19pX2dmc19kYXRhX2h0dHBfd3JpdGVfY2IoCistICAgIGds b2J1c194aW9faGFuZGxlX3QgICAgICAgICAgICAgICAgIHhpb19oYW5kbGUsIAorKyAgICBnbG9i dXNfeGlvX2hhbmRsZV90ICAgICAgICAgICAgICAgICB4aW9faGFuZGxlLAorICAgICBnbG9idXNf cmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQsCisgICAgIGdsb2J1c19ieXRlX3Qg KiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwKKyAgICAgZ2xvYnVzX3NpemVfdCAgICAgICAg ICAgICAgICAgICAgICAgbGVuZ3RoLAorLSAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAg ICAgICAgICBuYnl0ZXMsIAorKyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAg ICBuYnl0ZXMsCisgICAgIGdsb2J1c194aW9fZGF0YV9kZXNjcmlwdG9yX3QgICAgICAgIGRhdGFf ZGVzYywKKyAgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9hcmcp CisgeworQEAgLTE0MzE2LDkgKzE0MzE2LDkgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfaHR0cF9wZXJm KAorICAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcpCisgeworICAg ICBnbG9idXNfbF9nZnNfZGF0YV9vcGVyYXRpb25fdCAqICAgICAgIG9wOworLSAgICAKKysKKyAg ICAgb3AgPSAoZ2xvYnVzX2xfZ2ZzX2RhdGFfb3BlcmF0aW9uX3QgKikgYXJnOworLSAgICAKKysK KyAgICAgaWYob3AtPmRhdGFfaGFuZGxlKQorICAgICB7CisgICAgICAgICBnbG9idXNfZ2ZzX2V2 ZW50X2luZm9fdCAgICAgICAgZXZlbnRfcmVwbHk7CitAQCAtMTQzNTAsMTQgKzE0MzUwLDE0IEBA IGdsb2J1c19sX2dmc19kYXRhX2h0dHBfdHJhbnNmZXJfY2IoCisgICAgICAgICBnbG9idXNfbXV0 ZXhfdW5sb2NrKCZvcC0+c2Vzc2lvbl9oYW5kbGUtPm11dGV4KTsKKyAgICAgICAgIGdsb2J1c19h c3NlcnQoIWRlc3Ryb3lfb3ApOworICAgICB9CistICAgIAorKworICAgICBpZihvcC0+ZGF0YV9o YW5kbGUtPnBlcmZfaGFuZGxlICE9IEdMT0JVU19OVUxMX0hBTkRMRSkKKyAgICAgeworICAgICAg ICAgZ2xvYnVzX2NhbGxiYWNrX3VucmVnaXN0ZXIoCisgICAgICAgICAgICAgb3AtPmRhdGFfaGFu ZGxlLT5wZXJmX2hhbmRsZSwgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAgICAgICBvcC0+ZGF0YV9o YW5kbGUtPnBlcmZfaGFuZGxlID0gR0xPQlVTX05VTExfSEFORExFOworICAgICB9CistICAgIAor KworICAgICBnbG9idXNfeGlvX2Nsb3NlKG9wLT5kYXRhX2hhbmRsZS0+aHR0cF9oYW5kbGUsIE5V TEwpOworICAgICBnbG9idXNfbGliY191bnNldGVudigiR0xPQlVTX0dGU19FWFRSQV9DQV9DRVJU UyIpOworIAorQEAgLTE0MzY5LDcgKzE0MzY5LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfaHR0cF90 cmFuc2Zlcl9jYigKKyAgICAgeworICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAg ICAgICBjb3VudDsKKyAgICAgICAgIGdsb2J1c19tdXRleF9sb2NrKCZvcC0+c2Vzc2lvbl9oYW5k bGUtPm11dGV4KTsKKy0gICAgICAgIHsgICAgICAgICAgICAKKysgICAgICAgIHsKKyAgICAgICAg ICAgICBjb3VudCA9IGdsb2J1c19jb21tb25fY3JlYXRlX3N0cmluZygiJSJHTE9CVVNfT0ZGX1Rf Rk9STUFULAorICAgICAgICAgICAgICAgICBvcC0+ZGF0YV9oYW5kbGUtPmh0dHBfdHJhbnNmZXJy ZWQpOworICAgICAgICAgICAgIG9wLT5kYXRhX2hhbmRsZS0+aHR0cF90cmFuc2ZlcnJlZCA9IDA7 CitAQCAtMTQzOTMsNyArMTQzOTMsNyBAQCBnbG9idXNfbF9nZnNfZGF0YV9odHRwX2V2ZW50X2Ni KAorICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBHTE9C VVNfU1VDQ0VTUzsKKyAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291 bnQ7CisgICAgIGdsb2J1c19sX2dmc19kYXRhX29wZXJhdGlvbl90ICogICAgIG9wOworLSAgICAK KysKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9nZnNfZGF0YV9odHRwX2V2ZW50X2NiKTsK KyAgICAgR2xvYnVzR0ZTRGVidWdFbnRlcigpOworIAorQEAgLTE0NDAzLDcgKzE0NDAzLDcgQEAg Z2xvYnVzX2xfZ2ZzX2RhdGFfaHR0cF9ldmVudF9jYigKKyAgICAgeworICAgICAgICAgY2FzZSBH TE9CVVNfR0ZTX0VWRU5UX1RSQU5TRkVSX0JFR0lOOgorICAgICAgICAgICAgIGdsb2J1c19ncmlk ZnRwX3NlcnZlcl9pbnRlcm1lZGlhdGVfY29tbWFuZChvcCwgcmVzdWx0LCAiMCIpOworLSAgICAg ICAKKysKKyAgICAgICAgICAgICBpZihvcC0+ZGF0YV9oYW5kbGUtPnBlcmZfaGFuZGxlID09IEdM T0JVU19OVUxMX0hBTkRMRSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGdsb2J1 c19yZWx0aW1lX3QgICAgICAgICAgICAgICAgdGltZXI7CitAQCAtMTQ0MTYsMTYgKzE0NDE2LDE2 IEBAIGdsb2J1c19sX2dmc19kYXRhX2h0dHBfZXZlbnRfY2IoCisgICAgICAgICAgICAgICAgICAg ICAodm9pZCAqKSBvcCk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGJyZWFrOworLSAg ICAgICAgCisrCisgICAgICAgICBjYXNlIEdMT0JVU19HRlNfRVZFTlRfVFJBTlNGRVJfQ09OTkVD VEVEOgorICAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgCisrCisgICAgICAgICBjYXNlIEdM T0JVU19HRlNfRVZFTlRfRElTQ09OTkVDVEVEOgorICAgICAgICAgICAgIGJyZWFrOworLSAgICAg ICAgCisrCisgICAgICAgICBjYXNlIEdMT0JVU19HRlNfRVZFTlRfQllURVNfUkVDVkQ6CisgICAg ICAgICAgICAgZ2xvYnVzX211dGV4X2xvY2soJm9wLT5zZXNzaW9uX2hhbmRsZS0+bXV0ZXgpOwor LSAgICAgICAgICAgIHsgICAgICAgICAgICAKKysgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgIGNvdW50ID0gZ2xvYnVzX2NvbW1vbl9jcmVhdGVfc3RyaW5nKCIlIkdMT0JVU19PRkZfVF9G T1JNQVQsCisgICAgICAgICAgICAgICAgICAgICBvcC0+ZGF0YV9oYW5kbGUtPmh0dHBfdHJhbnNm ZXJyZWQpOworICAgICAgICAgICAgIH0KK0BAIC0xNDQzNSwxMCArMTQ0MzUsMTAgQEAgZ2xvYnVz X2xfZ2ZzX2RhdGFfaHR0cF9ldmVudF9jYigKKyAgICAgICAgICAgICBnbG9idXNfZnJlZShjb3Vu dCk7CisgCisgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICAKKysKKyAgICAgICAgIGNhc2Ug R0xPQlVTX0dGU19FVkVOVF9SQU5HRVNfUkVDVkQ6CisgICAgICAgICAgICAgYnJlYWs7CistICAg ICAgICAKKysKKyAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgZ2xvYnVzX2Fzc2VydCgw ICYmICJVbmV4cGVjdGVkIGV2ZW50IHR5cGUiKTsKKyAgICAgICAgICAgICBicmVhazsKK0BAIC0x NDQ2Niw3ICsxNDQ2Niw3IEBAIGdsb2J1c19pX2dmc19kYXRhX2h0dHBfcGFyc2VfYXJncygKKyAg ICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wX2NvbnN1bWU7CisgICAg IEdsb2J1c0dGU05hbWUoZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF9wYXJzZV9hcmdzKTsKKyAgICAg R2xvYnVzR0ZTRGVidWdFbnRlcigpOworLSAgICAgICAgCisrCisgICAgIGlmKCh0bXBfdmFsID0g Z2xvYnVzX2lfZ2ZzX2t2X2dldHZhbChhcmdzdHJpbmcsICJPRkZTRVQiLCAwKSkgPT0gTlVMTCkK KyAgICAgeworICAgICAgICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JHZW5lcmljKAorQEAgLTE0 NDgwLDcgKzE0NDgwLDcgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF9wYXJzZV9hcmdzKAorICAg ICAgICAgICAgICJJbnZhbGlkIGFyZ3VtZW50czogSW52YWxpZCBPRkZTRVQuIik7CisgICAgICAg ICBnb3RvIGVycjsKKyAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgCisrCisgICAgIGlmKCh0 bXBfdmFsID0gZ2xvYnVzX2lfZ2ZzX2t2X2dldHZhbChhcmdzdHJpbmcsICJMRU5HVEgiLCAwKSkg PT0gTlVMTCkKKyAgICAgeworICAgICAgICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JHZW5lcmlj KAorQEAgLTE0NTE1LDcgKzE0NTE1LDcgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF9wYXJzZV9h cmdzKAorICAgICAqbGVuZ3RoID0gdG1wX2xlbjsKKyAgICAgKnJlcXVlc3QgPSB0bXBfcmVxOwor ICAgICAqcGF0aCA9IHRtcF9wYXRoOworLSAgICAKKysKKyAgICAgR2xvYnVzR0ZTRGVidWdFeGl0 KCk7CisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAKK0BAIC0xNDU1Myw3ICsxNDU1Myw3 IEBAIGdsb2J1c19pX2dmc19kYXRhX2h0dHBfaW5pdCgKKyAgICAgZ2xvYnVzX2xfZ2ZzX2RhdGFf c2Vzc2lvbl90ICogICAgICAgc2Vzc2lvbl9oYW5kbGUsCisgICAgIGdsb2J1c19ib29sX3QgICAg ICAgICAgICAgICAgICAgICAgIGh0dHBzLAorICAgICBnbG9idXNfeGlvX2hhbmRsZV90ICogICAg ICAgICAgICAgICBoYW5kbGUsCistICAgIGdsb2J1c194aW9fYXR0cl90ICogICAgICAgICAgICAg ICAgIGF0dHIsIAorKyAgICBnbG9idXNfeGlvX2F0dHJfdCAqICAgICAgICAgICAgICAgICBhdHRy LAorICAgICBnbG9idXNfeGlvX2RhdGFfZGVzY3JpcHRvcl90ICogICAgICBkZXNjcmlwdG9yKQor IHsKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OworQEAg LTE0NTgzLDcgKzE0NTgzLDcgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF9pbml0KAorICAgICBp Zighc2Vzc2lvbl9oYW5kbGUtPmh0dHBfc3RhY2spCisgICAgIHsKKyAgICAgICAgIGdsb2J1c194 aW9fc3RhY2tfaW5pdCgmc2Vzc2lvbl9oYW5kbGUtPmh0dHBfc3RhY2ssIE5VTEwpOworLSAgICAK KysKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c194aW9fc3RhY2tfcHVzaF9kcml2ZXIoCisgICAg ICAgICAgICAgICAgIHNlc3Npb25faGFuZGxlLT5odHRwX3N0YWNrLAorICAgICAgICAgICAgICAg ICBnZnNfbF90Y3BfZHJpdmVyKTsKK0BAIC0xNDYwMCw3ICsxNDYwMCw3IEBAIGdsb2J1c19pX2dm c19kYXRhX2h0dHBfaW5pdCgKKyAgICAgaWYoIXNlc3Npb25faGFuZGxlLT5odHRwc19zdGFjaykK KyAgICAgeworICAgICAgICAgZ2xvYnVzX3hpb19zdGFja19pbml0KCZzZXNzaW9uX2hhbmRsZS0+ aHR0cHNfc3RhY2ssIE5VTEwpOworLSAgICAKKysKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c194 aW9fc3RhY2tfcHVzaF9kcml2ZXIoCisgICAgICAgICAgICAgICAgIHNlc3Npb25faGFuZGxlLT5o dHRwc19zdGFjaywKKyAgICAgICAgICAgICAgICAgZ2ZzX2xfdGNwX2RyaXZlcik7CitAQCAtMTQ2 MzAsNyArMTQ2MzAsNyBAQCBnbG9idXNfaV9nZnNfZGF0YV9odHRwX2luaXQoCisgICAgICAgICAg ICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19oYW5kbGVfY3JlYXRlKAorICAgICAgICAgICAgICAgICBo YW5kbGUsIHNlc3Npb25faGFuZGxlLT5odHRwX3N0YWNrKTsKKyAgICAgICAgIH0KKy0gICAgICAg ICAgICAKKysKKyAgICAgICAgIGdsb2J1c19hc3NlcnQocmVzdWx0ID09IEdMT0JVU19TVUNDRVNT KTsKKyAgICAgfQorICAgICBpZihhdHRyKQorQEAgLTE0NjQ2LDI1ICsxNDY0NiwyNSBAQCBnbG9i dXNfaV9nZnNfZGF0YV9odHRwX2luaXQoCisgICAgICAgICBpZihodHRwcykKKyAgICAgICAgIHsK KyAgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNfeGlvX2F0dHJfY250bCgKKy0gICAgICAgICAg ICAgICAgKmF0dHIsIAorLSAgICAgICAgICAgICAgICBnZnNfbF9nc2lfZHJpdmVyLCAKKysgICAg ICAgICAgICAgICAgKmF0dHIsCisrICAgICAgICAgICAgICAgIGdmc19sX2dzaV9kcml2ZXIsCisg ICAgICAgICAgICAgICAgIEdMT0JVU19YSU9fR1NJX1NFVF9TU0xfQ09NUEFUSUJMRSwKKyAgICAg ICAgICAgICAgICAgR0xPQlVTX1RSVUUpOworICAgICAgICAgICAgIGdsb2J1c19hc3NlcnQocmVz dWx0ID09IEdMT0JVU19TVUNDRVNTKTsKKyAgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNfeGlv X2F0dHJfY250bCgKKy0gICAgICAgICAgICAgICAgKmF0dHIsIAorLSAgICAgICAgICAgICAgICBn ZnNfbF9nc2lfZHJpdmVyLCAKKysgICAgICAgICAgICAgICAgKmF0dHIsCisrICAgICAgICAgICAg ICAgIGdmc19sX2dzaV9kcml2ZXIsCisgICAgICAgICAgICAgICAgIEdMT0JVU19YSU9fR1NJX1NF VF9QUk9URUNUSU9OX0xFVkVMLAorICAgICAgICAgICAgICAgICBHTE9CVVNfWElPX0dTSV9QUk9U RUNUSU9OX0xFVkVMX1BSSVZBQ1kpOworICAgICAgICAgICAgIGdsb2J1c19hc3NlcnQocmVzdWx0 ID09IEdMT0JVU19TVUNDRVNTKTsKKyAgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNfeGlvX2F0 dHJfY250bCgKKy0gICAgICAgICAgICAgICAgKmF0dHIsIAorLSAgICAgICAgICAgICAgICBnZnNf bF9nc2lfZHJpdmVyLCAKKysgICAgICAgICAgICAgICAgKmF0dHIsCisrICAgICAgICAgICAgICAg IGdmc19sX2dzaV9kcml2ZXIsCisgICAgICAgICAgICAgICAgIEdMT0JVU19YSU9fR1NJX1NFVF9B Tk9OKTsKKyAgICAgICAgICAgICBnbG9idXNfYXNzZXJ0KHJlc3VsdCA9PSBHTE9CVVNfU1VDQ0VT Uyk7CisgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19hdHRyX2NudGwoCistICAgICAg ICAgICAgICAgICphdHRyLCAKKy0gICAgICAgICAgICAgICAgZ2ZzX2xfZ3NpX2RyaXZlciwgCisr ICAgICAgICAgICAgICAgICphdHRyLAorKyAgICAgICAgICAgICAgICBnZnNfbF9nc2lfZHJpdmVy LAorICAgICAgICAgICAgICAgICBHTE9CVVNfWElPX0dTSV9TRVRfQUxMT1dfTUlTU0lOR19TSUdO SU5HX1BPTElDWSwKKyAgICAgICAgICAgICAgICAgR0xPQlVTX1RSVUUpOworICAgICAgICAgICAg IGdsb2J1c19hc3NlcnQocmVzdWx0ID09IEdMT0JVU19TVUNDRVNTKTsKK0BAIC0xNDY3NCw3ICsx NDY3NCw3IEBAIGdsb2J1c19pX2dmc19kYXRhX2h0dHBfaW5pdCgKKyAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgZWxzZSBpZihzZXNzaW9uX2hhbmRsZS0+aHR0cF9jYV9jZXJ0cykKKyAgICAg ICAgICAgICB7CistICAgICAgICAgICAgICAgIGdsb2J1c19saWJjX3NldGVudigiR0xPQlVTX0dG U19FWFRSQV9DQV9DRVJUUyIsIAorKyAgICAgICAgICAgICAgICBnbG9idXNfbGliY19zZXRlbnYo IkdMT0JVU19HRlNfRVhUUkFfQ0FfQ0VSVFMiLAorICAgICAgICAgICAgICAgICAgICAgc2Vzc2lv bl9oYW5kbGUtPmh0dHBfY2FfY2VydHMsIDEpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0K K0BAIC0xNDY4Miw3ICsxNDY4Miw3IEBAIGdsb2J1c19pX2dmc19kYXRhX2h0dHBfaW5pdCgKKyAK KyAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19kYXRhX2Rlc2NyaXB0b3JfaW5pdChkZXNjcmlwdG9y LCAqaGFuZGxlKTsKKyAgICAgZ2xvYnVzX2Fzc2VydChyZXN1bHQgPT0gR0xPQlVTX1NVQ0NFU1Mp OworLSAgICAKKysKKyAgICAgR2xvYnVzR0ZTRGVidWdFeGl0KCk7CisgICAgIHJldHVybiBHTE9C VVNfU1VDQ0VTUzsKKyB9CitAQCAtMTQ2OTUsNyArMTQ2OTUsNyBAQCBnbG9idXNfaV9nZnNfaHR0 cF9kYXRhX3BhcnNlX3JlcXVlc3QoCisgICAgIGdsb2J1c19ib29sX3QgKiAgICAgICAgICAgICAg ICAgICAgIGh0dHBzLAorICAgICBpbnQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo dHRwX3ZlciwKKyAgICAgY2hhciAqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9k LAorLSAgICBnbG9idXNfeGlvX2h0dHBfaGVhZGVyX3QgKiogICAgICAgICBoZWFkZXJzLCAKKysg ICAgZ2xvYnVzX3hpb19odHRwX2hlYWRlcl90ICoqICAgICAgICAgaGVhZGVycywKKyAgICAgaW50 ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQpCisgeworICAgICBnbG9idXNf cmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXM7CitAQCAtMTQ3MjUsMTEgKzE0NzI1LDEx IEBAIGdsb2J1c19pX2dmc19odHRwX2RhdGFfcGFyc2VfcmVxdWVzdCgKKyAgICAgICAgIHJlcyA9 IEdsb2J1c0dGU0Vycm9yR2VuZXJpYygiQ291bGQgbm90IGRlY29kZS4iKTsKKyAgICAgICAgIGdv dG8gZXJyOworICAgICB9CistICAgIAorKworICAgICByZXMgPSAtMTsKKy0gICAgCistICAgIC8q IAorLSAgICBwYXJzZSBmcm9tIAorKworKyAgICAvKgorKyAgICBwYXJzZSBmcm9tCisgICAgICAg VkVSQiB7aHR0cHxodHRwc306Ly9ob3N0bmFtZVs6cG9ydF0vdXJsLWVuY29kZWQtcGF0aFs/cXNd IEhUVFAvMS4xXHJcbgorICAgICAqLworICAgICBsaW5lID0gZF9yZXE7CitAQCAtMTQ3NDYsNyAr MTQ3NDYsNyBAQCBnbG9idXNfaV9nZnNfaHR0cF9kYXRhX3BhcnNlX3JlcXVlc3QoCisgICAgICAg ICBnb3RvIGVycjsKKyAgICAgfQorICAgICAqcHRyKysgPSAwOworLSAgICB0bXBfbWV0aG9kID0g c3RyZHVwKGxpbmUpOyAgICAKKysgICAgdG1wX21ldGhvZCA9IHN0cmR1cChsaW5lKTsKKyAgICAg dG1wX3VybCA9IHN0cmR1cChwdHIpOworICAgICBwdHIgPSBzdHJjaHIodG1wX3VybCwgJyAnKTsK KyAgICAgaWYoIXB0cikKK0BAIC0xNDc1OSw3ICsxNDc1OSw3IEBAIGdsb2J1c19pX2dmc19odHRw X2RhdGFfcGFyc2VfcmVxdWVzdCgKKyAgICAgeworICAgICAgICAgdG1wX3ZlciA9IEdMT0JVU19Y SU9fSFRUUF9WRVJTSU9OXzFfMTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgdG1wX2hlYWRlcnMg PSBnbG9idXNfbWFsbG9jKGNudCAqIHNpemVvZihnbG9idXNfeGlvX2h0dHBfaGVhZGVyX3QpKTsK KyAgICAgLyogcGFyc2UgaGVhZGVycworICAgICAgIEhlYWRlci0xOiBmb28gXHJcbgorQEAgLTE0 NzgxLDcgKzE0NzgxLDcgQEAgZ2xvYnVzX2lfZ2ZzX2h0dHBfZGF0YV9wYXJzZV9yZXF1ZXN0KAor ICAgICAgICAgICAgICpwdHIgPSAwOworICAgICAgICAgICAgIG5leHRfbGluZSA9IHB0ciArIDI7 CisgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAgIHB0ciA9IHN0cmNocihsaW5lLCAn OicpOworICAgICAgICAgaWYoIXB0cikKKyAgICAgICAgIHsKK0BAIC0xNDc5MywxOSArMTQ3OTMs MTkgQEAgZ2xvYnVzX2lfZ2ZzX2h0dHBfZGF0YV9wYXJzZV9yZXF1ZXN0KAorICAgICAgICAgcHRy Kys7CisgICAgICAgICB0bXBfaG5hbWUgPSBzdHJkdXAobGluZSk7CisgICAgICAgICB0bXBfaHZh bCA9IHN0cmR1cChwdHIpOworLSAgICAgICAgCisrCisgICAgICAgICBpZihpID49IGNudCkKKyAg ICAgICAgIHsKKyAgICAgICAgICAgICBjbnQgKz0gMjA7CisgICAgICAgICAgICAgdG1wX2hlYWRl cnMgPSBnbG9idXNfcmVhbGxvYygKKyAgICAgICAgICAgICAgICAgdG1wX2hlYWRlcnMsIGNudCAq IHNpemVvZihnbG9idXNfeGlvX2h0dHBfaGVhZGVyX3QpKTsKKyAgICAgICAgIH0KKy0gICAgICAg ICAgICAgICAgICAgIAorKworICAgICAgICAgdG1wX2hlYWRlcnNbaV0ubmFtZSA9IHRtcF9obmFt ZTsKKyAgICAgICAgIHRtcF9oZWFkZXJzW2ldLnZhbHVlID0gdG1wX2h2YWw7CisgICAgICAgICBp Kys7CistICAgICAgICAKKy0gICAgICAgIAorKworKworICAgICAgICAgbGluZSA9IG5leHRfbGlu ZTsKKyAgICAgfQorIAorQEAgLTE0ODE3LDcgKzE0ODE3LDcgQEAgZ2xvYnVzX2lfZ2ZzX2h0dHBf ZGF0YV9wYXJzZV9yZXF1ZXN0KAorICAgICB7CisgICAgICAgICAqaHR0cHMgPSBHTE9CVVNfRkFM U0U7CisgICAgIH0KKy0gICAgCisrCisgICAgIC8qIGZpbmQgdGhpcmQgLyBpbiBzY2hlbWU6Ly9o b3N0LyB0byBnZXQgcGF0aCAqLworICAgICBwdHIgPSBzdHJjaHIodG1wX3VybCwgJy8nKTsKKyAg ICAgaWYoIXB0cikKK0BAIC0xNDgzOSw3ICsxNDgzOSw3IEBAIGdsb2J1c19pX2dmc19odHRwX2Rh dGFfcGFyc2VfcmVxdWVzdCgKKyAgICAgICAgIHJlcyA9IEdsb2J1c0dGU0Vycm9yR2VuZXJpYygi SW52YWxpZCBVUkkuIik7CisgICAgICAgICBnb3RvIGVycjsKKyAgICAgfQorLSAgICAKKysKKyAg ICAgLyogdXJsZW5jb2RlIHBhdGggaW4gYmVjYXVzZSB4aW8gd2lsbCBkZWNvZGUgaXQgKi8KKyAg ICAgZW5jX3BhdGggPSBnbG9idXNfdXJsX3N0cmluZ19oZXhfZW5jb2RlKHB0ciwgIjw+OkAiKTsK KyAgICAgKnB0ciA9IDA7CitAQCAtMTQ4NTAsMjAgKzE0ODUwLDIwIEBAIGdsb2J1c19pX2dmc19o dHRwX2RhdGFfcGFyc2VfcmVxdWVzdCgKKyAgICAgKmNvdW50ID0gaTsKKyAgICAgKm1ldGhvZCA9 IHRtcF9tZXRob2Q7CisgICAgICpodHRwX3ZlciA9IHRtcF92ZXI7CistICAgIAorKworICAgICBn bG9idXNfZnJlZSh0bXBfdXJsKTsKKyAgICAgZ2xvYnVzX2ZyZWUoZF9yZXEpOworIAorICAgICBH bG9idXNHRlNEZWJ1Z0V4aXQoKTsKKy0gICAgCisrCisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VT UzsKKyBlcnI6CisgICAgIEdsb2J1c0dGU0RlYnVnRXhpdFdpdGhFcnJvcigpOworLSAgICByZXR1 cm4gcmVzOyAgIAorKyAgICByZXR1cm4gcmVzOworIH0KKyAKKyAKKy1nbG9idXNfcmVzdWx0X3Qg CisrZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF9nZXQoCisgICAgIGds b2J1c19sX2dmc19kYXRhX29wZXJhdGlvbl90ICogICAgIG9wLAorICAgICBjaGFyICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwYXRoLAorQEAgLTE0ODk2LDcgKzE0ODk2LDcgQEAgZ2xv YnVzX2lfZ2ZzX2RhdGFfaHR0cF9nZXQoCisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHB0cjsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9nZnNfZGF0YV9odHRw X2dldCk7CisgICAgIEdsb2J1c0dGU0RlYnVnRW50ZXIoKTsKKy0gICAgCisrCisgICAgIC8qIHBh cnNlIHVybCwgaGVhZGVycyAqLworICAgICByZXN1bHQgPSBnbG9idXNfaV9nZnNfaHR0cF9kYXRh X3BhcnNlX3JlcXVlc3QoCisgICAgICAgICByZXF1ZXN0LCAmdXJsLCAmaHR0cHMsICZodHRwX3Zl ciwgJm1ldGhvZCwgJmhlYWRlcnMsICZjb3VudCk7CitAQCAtMTQ5MDUsNyArMTQ5MDUsNyBAQCBn bG9idXNfaV9nZnNfZGF0YV9odHRwX2dldCgKKyAgICAgICAgIHJlc3VsdCA9IEdsb2J1c0dGU0Vy cm9yV3JhcEZhaWxlZCgiSW52YWxpZCByZXF1ZXN0LiBQYXJzaW5nIiwgcmVzdWx0KTsKKyAgICAg ICAgIGdvdG8gcmVzcG9uc2VfZXhpdDsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaGFuZGxlID0g b3AtPnNlc3Npb25faGFuZGxlLT5odHRwX2hhbmRsZTsKKyAgICAgcmVzdWx0ID0gZ2xvYnVzX2lf Z2ZzX2RhdGFfaHR0cF9pbml0KG9wLT5zZXNzaW9uX2hhbmRsZSwKKyAgICAgICAgIGh0dHBzLCAm aGFuZGxlLCAmYXR0ciwgJmRlc2NyaXB0b3IpOworQEAgLTE0OTEzLDcgKzE0OTEzLDcgQEAgZ2xv YnVzX2lfZ2ZzX2RhdGFfaHR0cF9nZXQoCisgICAgIHsKKyAgICAgICAgIGdvdG8gcmVzcG9uc2Vf ZXhpdDsKKyAgICAgfQorLSAgICAKKysKKyAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19hdHRyX2Nu dGwoCisgICAgICAgICBhdHRyLAorICAgICAgICAgb3AtPnNlc3Npb25faGFuZGxlLT5odHRwX2Ry aXZlciwKK0BAIC0xNDkzMyw4ICsxNDkzMyw4IEBAIGdsb2J1c19pX2dmc19kYXRhX2h0dHBfZ2V0 KAorICAgICB7CisgICAgICAgICBnb3RvIHJlc3BvbnNlX2V4aXQ7CisgICAgIH0KKy0gICAgICAg IAorLSAgICAvKiBzZXQgaW5kaXZpZHVhbCBoZWFkZXJzICovICAgIAorKworKyAgICAvKiBzZXQg aW5kaXZpZHVhbCBoZWFkZXJzICovCisgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQor ICAgICB7CisgICAgICAgICByZXN1bHQgPSBnbG9idXNfeGlvX2F0dHJfY250bCgKK0BAIC0xNDk1 NCw5ICsxNDk1NCw5IEBAIGdsb2J1c19pX2dmc19kYXRhX2h0dHBfZ2V0KAorICAgICB7CisgICAg ICAgICByZXRyeSA9IGRvX3JldHJ5ICYmIChnbG9idXNfZXJyb3JfZ2V0X3R5cGUoZ2xvYnVzX2Vy cm9yX3BlZWsocmVzdWx0KSkgPT0KKyAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19YSU9fSFRU UF9FUlJPUl9QRVJTSVNURU5UX0NPTk5FQ1RJT05fRFJPUFBFRCk7CistICAgICAgICAgICAgCisr CisgICAgICAgICBpZighcmV0cnkpCistICAgICAgICB7ICAgICAgICAKKysgICAgICAgIHsKKyAg ICAgICAgICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJvcldyYXBGYWlsZWQoIkhUVFAgY29ubmVj dGlvbiIsIHJlc3VsdCk7CisgICAgICAgICAgICAgZ290byByZXNwb25zZV9leGl0OworICAgICAg ICAgfQorQEAgLTE0OTkwLDcgKzE0OTkwLDcgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF9nZXQo CisgICAgIHsKKyAgICAgICAgICpwdHIgPSAnXDAnOworICAgICB9CistICAgIAorKworICAgICAv KiByZWFkIHJlc3BvbnNlLCBubyBkYXRhICovCisgICAgIHJlc3VsdCA9IGdsb2J1c194aW9fcmVh ZCgKKyAgICAgICAgICAgICBoYW5kbGUsCitAQCAtMTUwMDksNyArMTUwMDksNyBAQCBnbG9idXNf aV9nZnNfZGF0YV9odHRwX2dldCgKKyAgICAgICAgICAgICByZXN1bHQgPSBHTE9CVVNfU1VDQ0VT UzsKKyAgICAgICAgIH0KKyAgICAgfQorLSAgICAKKysKKyAgICAgaWYocmV0cnkpCisgICAgIHsK KyAgICAgICAgIGdsb2J1c194aW9fY2xvc2Uob3AtPnNlc3Npb25faGFuZGxlLT5odHRwX2hhbmRs ZSwgTlVMTCk7CitAQCAtMTUwMzAsNyArMTUwMzAsNyBAQCBnbG9idXNfaV9nZnNfZGF0YV9odHRw X2dldCgKKyAgICAgICAgIHJldHVybiBnbG9idXNfaV9nZnNfZGF0YV9odHRwX2dldCgKKyAgICAg ICAgICAgICBvcCwgcGF0aCwgcmVxdWVzdCwgb2Zmc2V0LCBsZW5ndGgsIEdMT0JVU19GQUxTRSk7 CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAg ICAgeworICAgICAgICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JXcmFwRmFpbGVkKCJCZWZvcmUg Z2V0dGluZyByZXNwb25zZSwgSFRUUCBjb25uZWN0aW9uIiwgcmVzdWx0KTsKK0BAIC0xNTA5MCw5 ICsxNTA5MCw5IEBAIGdsb2J1c19pX2dmc19kYXRhX2h0dHBfZ2V0KAorICAgICAgICAgICAgIGVs c2UKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHdhaXRmb3IgPSBHTE9CVVNfTUlO KDEwMjQsIGJ1Zmxlbi10b3RhbF9uYnl0ZXMpOworLSAgICAgICAgICAgIH0gICAgICAgICAgIAor KyAgICAgICAgICAgIH0KKyAgICAgICAgIH0gd2hpbGUoIWVvZik7CistICAgICAgICAKKysKKyAg ICAgICAgIGJvZHlfYnVmZmVyW3RvdGFsX25ieXRlc10gPSAnXDAnOworICAgICAgICAgZ2xvYnVz X2lfZ2ZzX2RhdGFfaHR0cF9wcmludF9yZXNwb25zZSgKKyAgICAgICAgICAgICBzdGF0dXNfY29k ZSwgJmhlYWRlcl90YWJsZSwgYm9keV9idWZmZXIsICZoZWFkZXJfc3RyKTsKK0BAIC0xNTEwNCw3 ICsxNTEwNCw3IEBAIGdsb2J1c19pX2dmc19kYXRhX2h0dHBfZ2V0KAorICAgICAgICAgICAgIGhl YWRlcl9zdHIpOworIAorICAgICAgICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JHZW5lcmljKGVy cl9zdHIpOworLSAgICAgICAgICAgIAorKworICAgICAgICAgZ2xvYnVzX2ZyZWUoZXJyX3N0cik7 CisgICAgICAgICBnbG9idXNfZnJlZShoZWFkZXJfc3RyKTsKKyAgICAgICAgIGdsb2J1c19mcmVl KGJvZHlfYnVmZmVyKTsKK0BAIC0xNTExNSwxMCArMTUxMTUsMTAgQEAgZ2xvYnVzX2lfZ2ZzX2Rh dGFfaHR0cF9nZXQoCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19pX2dmc19kYXRhX2h0dHBfcHJp bnRfcmVzcG9uc2UoCisgICAgICAgICAgICAgc3RhdHVzX2NvZGUsICZoZWFkZXJfdGFibGUsIE5V TEwsICZvcC0+dXNlcl9tc2cpOworLSAgICB9ICAgICAgICAKKy0gICAgCistICAgIAorLSAgICAv KiBzZXQgdXAgaW50ZXJuYWwgZmlsZSByZWN2IHJlcXVlc3QgKi8gICAgCisrICAgIH0KKysKKysK KysgICAgLyogc2V0IHVwIGludGVybmFsIGZpbGUgcmVjdiByZXF1ZXN0ICovCisgICAgIHJlY3Zf aW5mbyA9IChnbG9idXNfZ2ZzX3RyYW5zZmVyX2luZm9fdCAqKQorICAgICAgICAgZ2xvYnVzX2Nh bGxvYygxLCBzaXplb2YoZ2xvYnVzX2dmc190cmFuc2Zlcl9pbmZvX3QpKTsKKyAgICAgcmVjdl9p bmZvLT5hbGxvY19zaXplID0gbGVuZ3RoOworQEAgLTE1MTQ4LDcgKzE1MTQ4LDcgQEAgZ2xvYnVz X2lfZ2ZzX2RhdGFfaHR0cF9nZXQoCisgICAgICAgICAgICAgJmRhdGFfaGFuZGxlLT5zZXNzaW9u X2hhbmRsZS0+aGFuZGxlX3RhYmxlLAorICAgICAgICAgICAgIGRhdGFfaGFuZGxlLAorICAgICAg ICAgICAgIDEpOworLSAgICAgICAgICAgIAorKworICAgICBkYXRhX2hhbmRsZS0+aHR0cF9oYW5k bGUgPSBoYW5kbGU7CisgICAgIGRhdGFfaGFuZGxlLT5odHRwX2xlbmd0aCA9IGxlbmd0aDsKKyAg ICAgZGF0YV9oYW5kbGUtPmh0dHBfaXAgPSBnbG9idXNfbGliY19zdHJkdXAob3AtPmh0dHBfaXAp OworQEAgLTE1MTYzLDggKzE1MTYzLDggQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF9nZXQoCisg ICAgICAgICBnbG9idXNfbF9nZnNfZGF0YV9odHRwX3RyYW5zZmVyX2NiLAorICAgICAgICAgZ2xv YnVzX2xfZ2ZzX2RhdGFfaHR0cF9ldmVudF9jYiwKKyAgICAgICAgIG9wKTsKKy0gICAgICAgIAor LSAgICAKKysKKysKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworIAorIG9wZW5fZXhpdDoK K0BAIC0xNTE3MywxMCArMTUxNzMsMTAgQEAgcmVzcG9uc2VfZXhpdDoKKyAKKyAgICAgR2xvYnVz R0ZTRGVidWdFeGl0KCk7CisgICAgIHJldHVybiByZXN1bHQ7CistICAgIAorKworIH0KKyAKKy1n bG9idXNfcmVzdWx0X3QgCisrZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0 cF9wdXQoCisgICAgIGdsb2J1c19sX2dmc19kYXRhX29wZXJhdGlvbl90ICogICAgIG9wLAorICAg ICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLAorQEAgLTE1MjA5LDcg KzE1MjA5LDcgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF9wdXQoCisgICAgIGNoYXIgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHB0cjsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNf bF9nZnNfZGF0YV9odHRwX3B1dCk7CisgICAgIEdsb2J1c0dGU0RlYnVnRW50ZXIoKTsKKy0gICAg CisrCisgICAgIC8qIHBhcnNlIHVybCwgaGVhZGVycyAqLworICAgICByZXN1bHQgPSBnbG9idXNf aV9nZnNfaHR0cF9kYXRhX3BhcnNlX3JlcXVlc3QoCisgICAgICAgICByZXF1ZXN0LCAmdXJsLCAm aHR0cHMsICZodHRwX3ZlciwgJm1ldGhvZCwgJmhlYWRlcnMsICZjb3VudCk7CitAQCAtMTUyMjYs NyArMTUyMjYsNyBAQCBnbG9idXNfaV9nZnNfZGF0YV9odHRwX3B1dCgKKyAgICAgeworICAgICAg ICAgZ290byByZXNwb25zZV9leGl0OworICAgICB9CistICAgIAorKworICAgICByZXN1bHQgPSBn bG9idXNfeGlvX2F0dHJfY250bCgKKyAgICAgICAgIGF0dHIsCisgICAgICAgICBvcC0+c2Vzc2lv bl9oYW5kbGUtPmh0dHBfZHJpdmVyLAorQEAgLTE1MjQ2LDggKzE1MjQ2LDggQEAgZ2xvYnVzX2lf Z2ZzX2RhdGFfaHR0cF9wdXQoCisgICAgIHsKKyAgICAgICAgIGdvdG8gcmVzcG9uc2VfZXhpdDsK KyAgICAgfQorLSAgICAgICAKKy0gICAgLyogc2V0IGluZGl2aWR1YWwgaGVhZGVycyAqLyAgICAK KysKKysgICAgLyogc2V0IGluZGl2aWR1YWwgaGVhZGVycyAqLworICAgICBmb3IgKGkgPSAwOyBp IDwgY291bnQ7IGkrKykKKyAgICAgeworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19hdHRy X2NudGwoCitAQCAtMTUyODksNyArMTUyODksNyBAQCBnbG9idXNfaV9nZnNfZGF0YV9odHRwX3B1 dCgKKyAgICAgICAgICAgICBnb3RvIHJlc3BvbnNlX2V4aXQ7CisgICAgICAgICB9CisgICAgIH0K Ky0gICAgCisrCisgICAgIHJlc3VsdCA9IGdsb2J1c194aW9fb3BlbihoYW5kbGUsIHVybCwgYXR0 cik7CisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworQEAgLTE1MzI3 LDcgKzE1MzI3LDcgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF9wdXQoCisgICAgICAgICAgICAg ICAgIHJlc3VsdCA9IEdMT0JVU19TVUNDRVNTOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0K Ky0gICAgICAgIAorKworICAgICAgICAgaWYocmV0cnkpCisgICAgICAgICB7CisgICAgICAgICAg ICAgZ2xvYnVzX3hpb19jbG9zZShvcC0+c2Vzc2lvbl9oYW5kbGUtPmh0dHBfaGFuZGxlLCBOVUxM KTsKK0BAIC0xNTM0Nyw3ICsxNTM0Nyw3IEBAIGdsb2J1c19pX2dmc19kYXRhX2h0dHBfcHV0KAor ICAgICAgICAgICAgIHJldHVybiBnbG9idXNfaV9nZnNfZGF0YV9odHRwX3B1dCgKKyAgICAgICAg ICAgICAgICAgb3AsIHBhdGgsIHJlcXVlc3QsIG9mZnNldCwgbGVuZ3RoLCBHTE9CVVNfRkFMU0Up OworICAgICAgICAgfQorLSAgICAKKysKKyAgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VD Q0VTUykKKyAgICAgICAgIHsKKyAgICAgICAgICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJvcldy YXBGYWlsZWQoIkJlZm9yZSBnZXR0aW5nIHJlc3BvbnNlLCBIVFRQIGNvbm5lY3Rpb24iLCByZXN1 bHQpOworQEAgLTE1Mzc2LDcgKzE1Mzc2LDcgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF9wdXQo CisgICAgICAgICAgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICB0b3RhbF9uYnl0 ZXMgPSAwOworICAgICAgICAgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgZW9m OworICAgICAgICAgICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgd2FpdGZvciA9 IDA7CistICAgIAorKworICAgICAgICAgICAgIGJvZHlfYnVmZmVyID0gbWFsbG9jKGJ1Zmxlbisx KTsKKyAgICAgICAgICAgICBkbworICAgICAgICAgICAgIHsKK0BAIC0xNTM5OSw3ICsxNTM5OSw3 IEBAIGdsb2J1c19pX2dmc19kYXRhX2h0dHBfcHV0KAorICAgICAgICAgICAgICAgICAgICAgZW9m ID0gR0xPQlVTX1RSVUU7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgdG90 YWxfbmJ5dGVzICs9IGJvZHlfbmJ5dGVzOworLSAgICAKKysKKyAgICAgICAgICAgICAgICAgaWYo Ym9keV9uYnl0ZXMgPT0gMCB8fCB0b3RhbF9uYnl0ZXMgPT0gYnVmbGVuKQorICAgICAgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgICAgICBlb2YgPSBHTE9CVVNfVFJVRTsKK0BAIC0xNTQw NywyNSArMTU0MDcsMjUgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF9wdXQoCisgICAgICAgICAg ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgd2Fp dGZvciA9IEdMT0JVU19NSU4oMTAyNCwgYnVmbGVuLXRvdGFsX25ieXRlcyk7CistICAgICAgICAg ICAgICAgIH0gICAgICAgICAgIAorKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfSB3 aGlsZSghZW9mKTsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBib2R5X2J1ZmZlclt0 b3RhbF9uYnl0ZXNdID0gJ1wwJzsKKyAgICAgICAgICAgICBnbG9idXNfaV9nZnNfZGF0YV9odHRw X3ByaW50X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICBzdGF0dXNfY29kZSwgJmhlYWRlcl90 YWJsZSwgYm9keV9idWZmZXIsICZoZWFkZXJfc3RyKTsKKy0gICAgCisrCisgICAgICAgICAgICAg ZXJyX3N0ciA9IGdsb2J1c19jb21tb25fY3JlYXRlX3N0cmluZygKKyAgICAgICAgICAgICAgICAg IkhUVFAgUFVUIGZhaWxlZCB3aXRoIFwiJTAzZCAlc1wiXG4lcyIsCisgICAgICAgICAgICAgICAg IHN0YXR1c19jb2RlLAorICAgICAgICAgICAgICAgICByZWFzb25fcGhyYXNlLAorICAgICAgICAg ICAgICAgICBoZWFkZXJfc3RyKTsKKy0gICAgCisrCisgICAgICAgICAgICAgcmVzdWx0ID0gR2xv YnVzR0ZTRXJyb3JHZW5lcmljKGVycl9zdHIpOworLSAgICAgICAgICAgICAgICAKKysKKyAgICAg ICAgICAgICBnbG9idXNfZnJlZShlcnJfc3RyKTsKKyAgICAgICAgICAgICBnbG9idXNfZnJlZSho ZWFkZXJfc3RyKTsKKyAgICAgICAgICAgICBnbG9idXNfZnJlZShib2R5X2J1ZmZlcik7CistICAg IAorKworICAgICAgICAgICAgIGdvdG8gb3Blbl9leGl0OworICAgICAgICAgfQorICAgICB9CitA QCAtMTU0NjAsMTIgKzE1NDYwLDEyIEBAIGdsb2J1c19pX2dmc19kYXRhX2h0dHBfcHV0KAorICAg ICAgICAgICAgICZkYXRhX2hhbmRsZS0+c2Vzc2lvbl9oYW5kbGUtPmhhbmRsZV90YWJsZSwKKyAg ICAgICAgICAgICBkYXRhX2hhbmRsZSwKKyAgICAgICAgICAgICAxKTsKKy0gICAgICAgICAgICAK KysKKyAgICAgZGF0YV9oYW5kbGUtPmh0dHBfaGFuZGxlID0gaGFuZGxlOworICAgICBkYXRhX2hh bmRsZS0+aHR0cF9sZW5ndGggPSBsZW5ndGg7CisgICAgIGRhdGFfaGFuZGxlLT5odHRwX2lwID0g Z2xvYnVzX2xpYmNfc3RyZHVwKG9wLT5odHRwX2lwKTsKKyAgICAgb3AtPmRhdGFfaGFuZGxlID0g ZGF0YV9oYW5kbGU7CistICAgIAorKworICAgICBvcC0+cmVmKys7CisgICAgIGdsb2J1c19pX2dm c19kYXRhX3JlcXVlc3Rfc2VuZCgKKyAgICAgICAgIE5VTEwsCitAQCAtMTU0NzUsMTEgKzE1NDc1 LDExIEBAIGdsb2J1c19pX2dmc19kYXRhX2h0dHBfcHV0KAorICAgICAgICAgZ2xvYnVzX2xfZ2Zz X2RhdGFfaHR0cF90cmFuc2Zlcl9jYiwKKyAgICAgICAgIGdsb2J1c19sX2dmc19kYXRhX2h0dHBf ZXZlbnRfY2IsCisgICAgICAgICBvcCk7CistICAgCistICAgIAorKworKworICAgICByZXR1cm4g R0xPQlVTX1NVQ0NFU1M7CisgCistb3Blbl9leGl0OiAgICAgICAgICAKKytvcGVuX2V4aXQ6Cisg cmVzcG9uc2VfZXhpdDoKKyAgICAgR2xvYnVzR0ZTRGVidWdFeGl0KCk7CisgICAgIHJldHVybiBy ZXN1bHQ7CitkaWZmIC0tZ2l0IGEvZ3JpZGZ0cC9zZXJ2ZXIvc3JjL2dsb2J1c19pX2dmc19kZWZh dWx0X2JyYWluLmMgYi9ncmlkZnRwL3NlcnZlci9zcmMvZ2xvYnVzX2lfZ2ZzX2RlZmF1bHRfYnJh aW4uYworaW5kZXggZDQ3NmQyMjRkLi5kMTFhZTkyZmIgMTAwNjQ0CistLS0gYS9ncmlkZnRwL3Nl cnZlci9zcmMvZ2xvYnVzX2lfZ2ZzX2RlZmF1bHRfYnJhaW4uYworKysrIGIvZ3JpZGZ0cC9zZXJ2 ZXIvc3JjL2dsb2J1c19pX2dmc19kZWZhdWx0X2JyYWluLmMKK0BAIC04NCw3ICs4NCw3IEBAIGdm c19sX2RiX25vZGVfY21wKAorICAgICB9CisgICAgIC8qIGlmIHRoZSB0b3RhbCBudW1iZXIgb2Yg Y29ubmVjdGlvbnMgaXMgY2FwcGVkIGFuZCB3ZSBoYXZlIGV4Y2VkZWQKKyAgICAgICAgIHRoZSBj YXAgc2VuZCBpdCB0byB0aGUgYmFjayAqLworLSAgICBpZihuMS0+dG90YWxfbWF4X2Nvbm5lY3Rp b25zID4gMCAKKysgICAgaWYobjEtPnRvdGFsX21heF9jb25uZWN0aW9ucyA+IDAKKyAgICAgICAg ICYmIG4xLT50b3RhbF9jb25uZWN0aW9ucyA+PSBuMS0+dG90YWxfbWF4X2Nvbm5lY3Rpb25zKQor ICAgICB7CisgICAgICAgICByZXR1cm4gMTsKK0BAIC0xMjEsNyArMTIxLDcgQEAgZ2ZzX2xfZGJf cGFyc2Vfc3RyaW5nX2xpc3QoCisgICAgIHsKKyAgICAgICAgIHJldHVybiBOVUxMOworICAgICB9 CistICAgIAorKworICAgICB0bXBfc3RyID0gZ2xvYnVzX2xpYmNfc3RyZHVwKHN0cl9saXN0KTsK KyAgICAgbGFzdF9zdHIgPSB0bXBfc3RyOworICAgICB3aGlsZSgocCA9IHN0cmNocihsYXN0X3N0 ciwgJywnKSkgIT0gTlVMTCkKK0BAIC0xMzEsNyArMTMxLDcgQEAgZ2ZzX2xfZGJfcGFyc2Vfc3Ry aW5nX2xpc3QoCisgICAgICAgICBsYXN0X3N0ciA9IHAgKyAxOworICAgICB9CisgICAgIGdsb2J1 c19saXN0X2luc2VydCgmbGlzdCwgc3RyZHVwKGxhc3Rfc3RyKSk7CistICAgIAorKworICAgICBn bG9idXNfZnJlZSh0bXBfc3RyKTsKKyAKKyAgICAgcmV0dXJuIGxpc3Q7CitAQCAtMTU2LDcgKzE1 Niw3IEBAIGdsb2J1c19sX2JyYWluX2xvZ19zb2NrZXQoCisgICAgIHsKKyAgICAgICAgIHBlZXJf Y29udGFjdCA9IHN0cmR1cCgiY291bGQgZ2V0IHBlZXIgYWRkciIpOworICAgICB9CistICAgIAor KworICAgICBnbG9idXNfZ2ZzX2xvZ19tZXNzYWdlKAorICAgICAgICAgR0xPQlVTX0dGU19MT0df V0FSTiwKKyAgICAgICAgICJbJXNdICAlcyIsIHBlZXJfY29udGFjdCwgbXNnKTsKK0BAIC0yNDIs NyArMjQyLDcgQEAgZ2xvYnVzX2xfZ2ZzX2dmb3JrX2R5bl9yZWcoCisgICAgICAgICByZXBvID0g KGdmc19sX2RiX3JlcG9fdCAqKSBjYWxsb2MoMSwgc2l6ZW9mKGdmc19sX2RiX3JlcG9fdCkpOwor ICAgICAgICAgZ2xvYnVzX3ByaW9yaXR5X3FfaW5pdCgmcmVwby0+bm9kZV9xLCBnZnNfbF9kYl9u b2RlX2NtcCk7CisgICAgICAgICBnbG9idXNfaGFzaHRhYmxlX2luaXQoCistICAgICAgICAgICAg JnJlcG8tPm5vZGVfdGFibGUsIAorKyAgICAgICAgICAgICZyZXBvLT5ub2RlX3RhYmxlLAorICAg ICAgICAgICAgIDMyLAorICAgICAgICAgICAgIGdsb2J1c19oYXNodGFibGVfc3RyaW5nX2hhc2gs CisgICAgICAgICAgICAgZ2xvYnVzX2hhc2h0YWJsZV9zdHJpbmdfa2V5ZXEpOworQEAgLTI1Nyw3 ICsyNTcsNyBAQCBnbG9idXNfbF9nZnNfZ2ZvcmtfZHluX3JlZygKKyAgICAgfQorIAorICAgICBp Zihub2RlID09IE5VTEwpCistICAgIHsgCisrICAgIHsKKyAgICAgICAgIG5vZGUgPSAoZ2ZzX2xf ZGJfbm9kZV90KilnbG9idXNfY2FsbG9jKDEsIHNpemVvZihnZnNfbF9kYl9ub2RlX3QpKTsKKyAg ICAgICAgIG5vZGUtPmhvc3RfaWQgPSBzdHJkdXAoY3MpOworICAgICAgICAgbm9kZS0+Y29va2ll X2lkID0gY29va2llX2lkOworQEAgLTQwNywxNCArNDA3LDE0IEBAIGdsb2J1c19sX2dmc19nZm9y a19pbmNvbWluZ19jYigKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgICBnbG9idXNfZ2ZzX2xvZ19tZXNzYWdlKAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHTE9CVVNfR0ZTX0xPR19FUlIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICJb JXNdIGVycm9yIGluIGR5biByZWcgc2l6ZVxuIiwgCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJbJXNdIGVycm9yIGluIGR5biByZWcgc2l6ZVxuIiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImdsb2J1c19sX2dmc19nZm9ya19pbmNvbWluZ19jYigpIik7CisgICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2dmc19sb2dfbWVzc2FnZSgK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0dGU19MT0dfSU5GTywKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgIlslc10gcmVnaXN0ZXJpbmcgYSBuZXcgYmFja2VuZCAl ZFxuIiwgCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbJXNdIHJlZ2lzdGVyaW5nIGEg bmV3IGJhY2tlbmQgJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbG9idXNf bF9nZnNfZ2ZvcmtfaW5jb21pbmdfY2IoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG4zMik7CisgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZ2ZzX2dmb3JrX2R5bl9y ZWcoCitAQCAtNDc2LDkgKzQ3Niw5IEBAIGdsb2J1c19sX2dmc19nZm9ya19pbmNvbWluZ19jYigK KyAKKyAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGdsb2J1c19nZnNfbG9n X21lc3NhZ2UoCistICAgICAgICAgICAgICAgICAgICBHTE9CVVNfR0ZTX0xPR19XQVJOLCAKKysg ICAgICAgICAgICAgICAgICAgIEdMT0JVU19HRlNfTE9HX1dBUk4sCisgICAgICAgICAgICAgICAg ICAgICAiVW5rbm93biBHRm9yayBtZXNzYWdlIHR5cGUgcmVjZWl2ZWQuXG4iKTsKKy0gICAgICAg ICAgICAgICAgYnJlYWs7IAorKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KKyAg ICAgfQorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZnbG9idXNfbF9icmFpbl9tdXRleCk7CitA QCAtNTIwLDcgKzUyMCw3IEBAIGdsb2J1c19sX2dmc19kZWZhdWx0X2JyYWluX2luaXQoCisgICAg ICAgICAgICAgR0ZTX0RCX1JFUE9fU0laRSwKKyAgICAgICAgICAgICBnbG9idXNfaGFzaHRhYmxl X3N0cmluZ19oYXNoLAorICAgICAgICAgICAgIGdsb2J1c19oYXNodGFibGVfc3RyaW5nX2tleWVx KTsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAgIHJlbW90ZV9saXN0ID0gZ2xvYnVzX2lfZ2Zz X2NvbmZpZ19zdHJpbmcoInJlbW90ZV9ub2RlcyIpOworICAgICAgICAgbGlzdCA9IGdmc19sX2Ri X3BhcnNlX3N0cmluZ19saXN0KHJlbW90ZV9saXN0KTsKKyAKK0BAIC01MzEsNyArNTMxLDcgQEAg Z2xvYnVzX2xfZ2ZzX2RlZmF1bHRfYnJhaW5faW5pdCgKKyAgICAgICAgIGdsb2J1c19wcmlvcml0 eV9xX2luaXQoJmRlZmF1bHRfcmVwby0+bm9kZV9xLCBnZnNfbF9kYl9ub2RlX2NtcCk7CisgCisg ICAgICAgICBnbG9idXNfaGFzaHRhYmxlX2luaXQoCistICAgICAgICAgICAgJmdmc19sX2RiX2Rl ZmF1bHRfcmVwby0+bm9kZV90YWJsZSwgCisrICAgICAgICAgICAgJmdmc19sX2RiX2RlZmF1bHRf cmVwby0+bm9kZV90YWJsZSwKKyAgICAgICAgICAgICAzMiwKKyAgICAgICAgICAgICBnbG9idXNf aGFzaHRhYmxlX3N0cmluZ19oYXNoLAorICAgICAgICAgICAgIGdsb2J1c19oYXNodGFibGVfc3Ry aW5nX2tleWVxKTsKK0BAIC01NzQsNyArNTc0LDcgQEAgZ2xvYnVzX2xfZ2ZzX2RlZmF1bHRfYnJh aW5faW5pdCgKKyAgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAg IHsKKyAgICAgICAgICAgICBnbG9idXNfZ2ZzX2xvZ19yZXN1bHQoCistICAgICAgICAgICAgICAg IEdMT0JVU19HRlNfTE9HX0RVTVAsIAorKyAgICAgICAgICAgICAgICBHTE9CVVNfR0ZTX0xPR19E VU1QLAorICAgICAgICAgICAgICAgICAiR0ZvcmsgZnVuY3Rpb25hbGl0eSBub3QgZW5hYmxlZC4i LAorICAgICAgICAgICAgICAgICByZXN1bHQpOworIAorQEAgLTYxNSw3ICs2MTUsNyBAQCBnbG9i dXNfbF9nZnNfZGVmYXVsdF9icmFpbl9hdmFpbGFibGUoCisgICAgIGludCAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvdW50KQorIHsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZTsKKy0gICAgCisrCisgICAgIHNpemUgPSBnbG9idXNfcHJpb3Jp dHlfcV9zaXplKCZnZnNfbF9kYl9kZWZhdWx0X3JlcG8tPm5vZGVfcSk7CisgICAgICpjb3VudCA9 IHNpemU7CisgCitAQCAtNjkwLDcgKzY5MCw3IEBAIGdsb2J1c19sX2dmc19kZWZhdWx0X2JyYWlu X3NlbGVjdF9ub2RlcygKKyAgICAgICAgIH0KKyAgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAg IGVfY291bnQgPSBjb3VudDsKKy0gICAgIAorKworICAgICAgICAgZG8KKyAgICAgICAgIHsKKyAg ICAgICAgICAgICBsb29wX2NvdW50ID0gMDsKK0BAIC03MDksNyArNzA5LDcgQEAgZ2xvYnVzX2xf Z2ZzX2RlZmF1bHRfYnJhaW5fc2VsZWN0X25vZGVzKAorICAgICAgICAgICAgICAgICBlbHNlIGlm KAorICAgICAgICAgICAgICAgICAgICAgKG5vZGUtPmN1cnJlbnRfY29ubmVjdGlvbiA+PSBub2Rl LT5tYXhfY29ubmVjdGlvbiAmJgorICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm1heF9jb25u ZWN0aW9uIDwgMCkgfHwKKy0gICAgICAgICAgICAgICAgICAgIChub2RlLT50b3RhbF9tYXhfY29u bmVjdGlvbnMgPiAwICYmIAorKyAgICAgICAgICAgICAgICAgICAgKG5vZGUtPnRvdGFsX21heF9j b25uZWN0aW9ucyA+IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT50b3RhbF9j b25uZWN0aW9ucyA+PSBub2RlLT50b3RhbF9tYXhfY29ubmVjdGlvbnMpKQorICAgICAgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgICAgICAvKiBuZWVkIHRvIHVwIGV2ZXJ5dGhpbmcgZm9y IHNha2Ugb2YgbmljZSBjbGVhbiB1cCovCitAQCAtNzMzLDggKzczMyw4IEBAIGdsb2J1c19sX2dm c19kZWZhdWx0X2JyYWluX3NlbGVjdF9ub2RlcygKKyAgICAgICAgICAgICAgICAgICAgIEdsb2J1 c0dGU0Vycm9yT2JqUGFyYW1ldGVyKCJObyBub2RlcyBhdmFpbGFibGUuIikpOworICAgICAgICAg ICAgICAgICBnb3RvIGVycm9yX3Nob3J0OworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAK Ky0gICAgICAgICAgIC8qIGlmIHdlIGFyZSBoZXJlIHdlIHdlcmUgc3VjY2Vzc2Z1bCBhbmQgbXVz dCByZS1lbnF1ZXVlIHRoZSBub2RlcyAKKysKKysgICAgICAgICAgIC8qIGlmIHdlIGFyZSBoZXJl IHdlIHdlcmUgc3VjY2Vzc2Z1bCBhbmQgbXVzdCByZS1lbnF1ZXVlIHRoZSBub2RlcworICAgICAg ICAgICAgICogd2UganVzdCB0b29rIG91dCB3aXRoIG5ldyBvcmRlciAqLworICAgICAgICAgICAg IGZvcihpID0gY291bnQgLSBsb29wX2NvdW50OyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAg ICB7CitkaWZmIC0tZ2l0IGEvZ3JpZGZ0cC9zZXJ2ZXIvc3JjL21vZHVsZXMvZmlsZS9nbG9idXNf Z3JpZGZ0cF9zZXJ2ZXJfZmlsZS5jIGIvZ3JpZGZ0cC9zZXJ2ZXIvc3JjL21vZHVsZXMvZmlsZS9n bG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmlsZS5jCitpbmRleCAyY2U0YzdmYWUuLjAzMjVjZDMwYiAx MDA2NDQKKy0tLSBhL2dyaWRmdHAvc2VydmVyL3NyYy9tb2R1bGVzL2ZpbGUvZ2xvYnVzX2dyaWRm dHBfc2VydmVyX2ZpbGUuYworKysrIGIvZ3JpZGZ0cC9zZXJ2ZXIvc3JjL21vZHVsZXMvZmlsZS9n bG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmlsZS5jCitAQCAtNTgsNyArNTgsNyBAQCBHbG9idXNEZWJ1 Z0RlY2xhcmUoR0xPQlVTX0dSSURGVFBfU0VSVkVSX0ZJTEUpOworICAgICBHbG9idXNHRlNGaWxl RGVidWdQcmludGYoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAorICAgICAgICAgR0xPQlVTX0dGU19ERUJVR19UUkFDRSwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgKCJbJXNdIEVudGVyaW5nXG4i LCBfZ2ZzX25hbWUpKQorLSAgICAgICAgCisrCisgI2RlZmluZSBHbG9idXNHRlNGaWxlRGVidWdF eGl0KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg IEdsb2J1c0dGU0ZpbGVEZWJ1Z1ByaW50ZiggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgICAgICBHTE9CVVNfR0ZTX0RFQlVHX1RSQUNFLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitAQCAtOTgsNyArOTgs NyBAQCB0eXBlZGVmIHN0cnVjdCBnbG9idXNfbF9nZnNfZmlsZV9ja3NtX21vbml0b3JfcworICAg ICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICBibG9ja19zaXplOworICAgICBn bG9idXNfbF9nZnNfZmlsZV9ja3NtX2NiX3QgICAgICAgICBpbnRlcm5hbF9jYjsKKyAgICAgdm9p ZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxfY2JfYXJnOworLSAgICAK KysKKyAgICAgZ2xvYnVzX2NhbGxiYWNrX2hhbmRsZV90ICAgICAgICAgICAgbWFya2VyX2hhbmRs ZTsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyX2ZyZXE7 CisgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfbWFya2VyOwor QEAgLTExNiw3ICsxMTYsNyBAQCB0eXBlZGVmIHN0cnVjdCBnbG9idXNfbF9nZnNfZmlsZV9ja3Nt X21vbml0b3JfcworICAgICBnbG9idXNfYnl0ZV90ICAgICAgICAgICAgICAgICAgICAgICBidWZm ZXJbXTsKKyB9IGdsb2J1c19sX2dmc19maWxlX2Nrc21fbW9uaXRvcl90OworIAorLXR5cGVkZWYg c3RydWN0IAorK3R5cGVkZWYgc3RydWN0CisgeworICAgICBnc3NfY3JlZF9pZF90ICAgICAgICAg ICAgICAgICAgICAgICBjcmVkOworICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzYmo7CitAQCAtMTkwLDcgKzE5MCw3IEBAIGdsb2J1c19sX2dmc19maWxlX2Nrc20oCisg ICAgIGdsb2J1c19vZmZfdCAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCwKKyAgICAgZ2xv YnVzX2xfZ2ZzX2ZpbGVfY2tzbV9jYl90ICAgICAgICAgaW50ZXJuYWxfY2IsCisgICAgIHZvaWQg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsX2NiX2FyZyk7CistICAgIAor KworIHN0YXRpYworIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19sX2dmc19maWxlX21ha2Vfc3Rh Y2soCitAQCAtMjc5LDcgKzI3OSw3IEBAIGVycm9yX3B1c2g6CisgICogZWxzZSBpZiBwcmlvcml0 eV8xIGNvbWVzIGJlZm9yZSBwcmlvcml0eV8yLCByZXR1cm4gPCAwCisgICogZWxzZSByZXR1cm4g MAorICAqLworLSAKKysKKyBzdGF0aWMKKyBpbnQKKyBnbG9idXNfbF9nZnNfZmlsZV9xdWV1ZV9j b21wYXJlKAorQEAgLTI5NCw3ICsyOTQsNyBAQCBnbG9idXNfbF9nZnNfZmlsZV9xdWV1ZV9jb21w YXJlKAorIAorICAgICBidWZfaW5mbzEgPSAoZ2xvYnVzX2xfYnVmZmVyX2luZm9fdCAqKSBwcmlv cml0eV8xOworICAgICBidWZfaW5mbzIgPSAoZ2xvYnVzX2xfYnVmZmVyX2luZm9fdCAqKSBwcmlv cml0eV8yOworLSAgICAKKysKKyAgICAgLyogdGhlIHZvaWQgKiBhcmUgcmVhbGx5IGp1c3Qgb2Zm c2V0cyAqLworICAgICBpZihidWZfaW5mbzEtPm9mZnNldCA+IGJ1Zl9pbmZvMi0+b2Zmc2V0KQor ICAgICB7CitAQCAtMzA0LDcgKzMwNCw3IEBAIGdsb2J1c19sX2dmc19maWxlX3F1ZXVlX2NvbXBh cmUoCisgICAgIHsKKyAgICAgICAgIHJjID0gLTE7CisgICAgIH0KKy0gICAgCisrCisgICAgIEds b2J1c0dGU0ZpbGVEZWJ1Z0V4aXQoKTsKKyAgICAgcmV0dXJuIHJjOworIH0KK0BAIC0zMjEsNyAr MzIxLDcgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfbW9uaXRvcl9pbml0KAorICAgICBpbnQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByYzsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNf bF9nZnNfZmlsZV9tb25pdG9yX2luaXQpOworICAgICBHbG9idXNHRlNGaWxlRGVidWdFbnRlcigp OworLSAgICAgICAgCisrCisgICAgIG1vbml0b3IgPSAoZ2xvYnVzX2xfZmlsZV9tb25pdG9yX3Qg KikgZ2xvYnVzX21hbGxvYygKKyAgICAgICAgIHNpemVvZihnbG9idXNfbF9maWxlX21vbml0b3Jf dCkpOworICAgICBpZighbW9uaXRvcikKK0BAIC0zMjksMTUgKzMyOSwxNSBAQCBnbG9idXNfbF9n ZnNfZmlsZV9tb25pdG9yX2luaXQoCisgICAgICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJvck1l bW9yeSgibW9uaXRvciIpOworICAgICAgICAgZ290byBlcnJvcl9hbGxvYzsKKyAgICAgfQorLSAg ICAgICAKKysKKyAgICAgcmMgPSBnbG9idXNfbWVtb3J5X2luaXQoJm1vbml0b3ItPm1lbSwgYmxv Y2tfc2l6ZSwgb3B0aW1hbF9jb3VudCk7CisgICAgIGlmKCFyYykKKyAgICAgeworICAgICAgICAg Z2xvYnVzX2ZyZWUobW9uaXRvcik7CisgICAgICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJvck1l bW9yeSgiYnVmZmVyIik7CisgICAgICAgICBnb3RvIGVycm9yX2FsbG9jOworLSAgICB9IAorLSAg ICAKKysgICAgfQorKworICAgICBnbG9idXNfbXV0ZXhfaW5pdCgmbW9uaXRvci0+bG9jaywgTlVM TCk7CisgICAgIGdsb2J1c19wcmlvcml0eV9xX2luaXQoCisgICAgICAgICAmbW9uaXRvci0+cXVl dWUsIGdsb2J1c19sX2dmc19maWxlX3F1ZXVlX2NvbXBhcmUpOworQEAgLTM2MCw3ICszNjAsNyBA QCBnbG9idXNfbF9nZnNfZmlsZV9tb25pdG9yX2luaXQoCisgICAgIG1vbml0b3ItPnBhdGhuYW1l ID0gTlVMTDsKKyAKKyAgICAgKnVfbW9uaXRvciA9IG1vbml0b3I7CistICAgIAorKworICAgICBH bG9idXNHRlNGaWxlRGVidWdFeGl0KCk7CisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAK K0BAIC0zNzksNyArMzc5LDcgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfbW9uaXRvcl9kZXN0cm95KAor ICAgICBnbG9idXNfYnl0ZV90ICogICAgICAgICAgICAgICAgICAgICBidWZmZXI7CisgICAgIEds b2J1c0dGU05hbWUoZ2xvYnVzX2xfZ2ZzX2ZpbGVfbW9uaXRvcl9kZXN0cm95KTsKKyAgICAgR2xv YnVzR0ZTRmlsZURlYnVnRW50ZXIoKTsKKy0gICAgCisrCisgICAgIHdoaWxlKCFnbG9idXNfcHJp b3JpdHlfcV9lbXB0eSgmbW9uaXRvci0+cXVldWUpKQorICAgICB7CisgICAgICAgICBidWZfaW5m byA9IChnbG9idXNfbF9idWZmZXJfaW5mb190ICopCitAQCAtMzkzLDcgKzM5Myw3IEBAIGdsb2J1 c19sX2dmc19maWxlX21vbml0b3JfZGVzdHJveSgKKyAgICAgICAgICAgICBnbG9idXNfZnJlZShi dWZfaW5mbyk7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCisrCisgICAgIGZvcihsaXN0ID0g bW9uaXRvci0+YnVmZmVyX2xpc3Q7CisgICAgICAgICAhZ2xvYnVzX2xpc3RfZW1wdHkobGlzdCk7 CisgICAgICAgICBsaXN0ID0gZ2xvYnVzX2xpc3RfcmVzdChsaXN0KSkKK0BAIC00MDEsMTIgKzQw MSwxMiBAQCBnbG9idXNfbF9nZnNfZmlsZV9tb25pdG9yX2Rlc3Ryb3koCisgICAgICAgICBidWZm ZXIgPSAoZ2xvYnVzX2J5dGVfdCAqKSBnbG9idXNfbGlzdF9maXJzdChsaXN0KTsKKyAgICAgICAg IGdsb2J1c19tZW1vcnlfcHVzaF9ub2RlKCZtb25pdG9yLT5tZW0sIGJ1ZmZlcik7CisgICAgIH0K Ky0gICAgCisrCisgICAgIGlmKG1vbml0b3ItPnBhdGhuYW1lKQorICAgICB7CisgICAgICAgICBn bG9idXNfZnJlZShtb25pdG9yLT5wYXRobmFtZSk7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlm KG1vbml0b3ItPmV4cGVjdGVkX2Nrc20pCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19mcmVlKG1v bml0b3ItPmV4cGVjdGVkX2Nrc20pOworQEAgLTQxNSw3ICs0MTUsNyBAQCBnbG9idXNfbF9nZnNf ZmlsZV9tb25pdG9yX2Rlc3Ryb3koCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19mcmVlKG1vbml0 b3ItPmV4cGVjdGVkX2Nrc21fYWxnKTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgZ2xvYnVzX3By aW9yaXR5X3FfZGVzdHJveSgmbW9uaXRvci0+cXVldWUpOworICAgICBnbG9idXNfbGlzdF9mcmVl KG1vbml0b3ItPmJ1ZmZlcl9saXN0KTsKKyAgICAgZ2xvYnVzX21lbW9yeV9kZXN0cm95KCZtb25p dG9yLT5tZW0pOworQEAgLTQzNiwxMiArNDM2LDEyIEBAIGdsb2J1c19sX2dmc19maWxlX2Nrc21f dmVyaWZ5KAorICAgICBnbG9idXNfbF9maWxlX21vbml0b3JfdCAqICAgICAgICAgICBtb25pdG9y OworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dmc19maWxlX2Nrc21fdmVyaWZ5KTsKKyAg ICAgR2xvYnVzR0ZTRmlsZURlYnVnRW50ZXIoKTsKKy0gICAgCisrCisgICAgIG1vbml0b3IgPSAo Z2xvYnVzX2xfZmlsZV9tb25pdG9yX3QgKikgdXNlcl9hcmc7CistICAgIAorKworICAgICBpZihy ZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKy0gICAgICAgIG1vbml0b3ItPmZpbmlz aF9yZXN1bHQgPSAKKysgICAgICAgIG1vbml0b3ItPmZpbmlzaF9yZXN1bHQgPQorICAgICAgICAg ICAgIEdsb2J1c0dGU0Vycm9yV3JhcEZhaWxlZCgiY2hlY2tzdW0gdmVyaWZpY2F0aW9uIiwgcmVz dWx0KTsKKyAgICAgfQorICAgICBlbHNlIGlmKHN0cmNtcChtb25pdG9yLT5leHBlY3RlZF9ja3Nt LCBja3NtKSAhPSAwKQorQEAgLTQ1MiwxMyArNDUyLDEzIEBAIGdsb2J1c19sX2dmc19maWxlX2Nr c21fdmVyaWZ5KAorIAorICAgICBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmluaXNoZWRfdHJhbnNm ZXIoCisgICAgICAgICBtb25pdG9yLT5vcCwgbW9uaXRvci0+ZmluaXNoX3Jlc3VsdCk7CistICAg IAorKworICAgICBnbG9idXNfbF9nZnNfZmlsZV9tb25pdG9yX2Rlc3Ryb3kobW9uaXRvcik7Cisg CisgICAgIEdsb2J1c0dGU0ZpbGVEZWJ1Z0V4aXQoKTsKKyB9CisgCistc3RhdGljIAorK3N0YXRp YworIGdsb2J1c19ib29sX3QKKyBnbG9idXNfbF9nZnNfZmlsZV90aW1lb3V0X2NiKAorICAgICBn bG9idXNfeGlvX2hhbmRsZV90ICAgICAgICAgICAgICAgICBoYW5kbGUsCitAQCAtNDcyLDcgKzQ3 Miw3IEBAIGdsb2J1c19sX2dmc19maWxlX3RpbWVvdXRfY2IoCisgICAgIGdsb2J1c19nZnNfbG9n X21lc3NhZ2UoCisgICAgICAgICBHTE9CVVNfR0ZTX0xPR19XQVJOLAorICAgICAgICAgIkEgZmls ZSBhY2Nlc3MgdGltZW91dCBoYXMgb2NjdXJyZWQuXG4iKTsKKy0gICAKKysKKyAgICAgR2xvYnVz R0ZTRmlsZURlYnVnRXhpdCgpOworIAorICAgICByZXR1cm4gR0xPQlVTX1RSVUU7CitAQCAtNDkx LDEwICs0OTEsMTAgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfY2xvc2VfY2IoCisgICAgIG1vbml0b3Ig PSAoZ2xvYnVzX2xfZmlsZV9tb25pdG9yX3QgKikgdXNlcl9hcmc7CisgCisgICAgIEdsb2J1c0dG U0ZpbGVEZWJ1Z0VudGVyKCk7CistICAgIAorKworICAgICBpZihtb25pdG9yICE9IE5VTEwpCisg ICAgIHsKKy0gICAgICAgIC8qIG11c3QgbG9jay91bmxvY2sgb3Igd2UgY2FuIGdldCB0byB0aGUg ZGVzdHJveSBiZWZvcmUgdGhlIAorKyAgICAgICAgLyogbXVzdCBsb2NrL3VubG9jayBvciB3ZSBj YW4gZ2V0IHRvIHRoZSBkZXN0cm95IGJlZm9yZSB0aGUKKyAgICAgICAgICAgIHJlZ2lzdGVyYXRp b24gbG9jYWsgaGFzIGFjdHVhbGx5IHJlbGVhc2VkLi4uIGNyYXp5IHRocmVhZHMgKi8KKyAgICAg ICAgIGdsb2J1c19tdXRleF9sb2NrKCZtb25pdG9yLT5sb2NrKTsKKyAgICAgICAgIHsKK0BAIC01 MDUsMjAgKzUwNSwyMCBAQCBnbG9idXNfbF9nZnNfZmlsZV9jbG9zZV9jYigKKyAgICAgICAgIH0K KyAgICAgICAgIGdsb2J1c19tdXRleF91bmxvY2soJm1vbml0b3ItPmxvY2spOworIAorLSAgICAg ICAgaWYobW9uaXRvci0+ZmluaXNoX3Jlc3VsdCA9PSBHTE9CVVNfU1VDQ0VTUyAmJiAKKysgICAg ICAgIGlmKG1vbml0b3ItPmZpbmlzaF9yZXN1bHQgPT0gR0xPQlVTX1NVQ0NFU1MgJiYKKyAgICAg ICAgICAgICBtb25pdG9yLT51dGltZSA+PSAwKQorICAgICAgICAgeworICAgICAgICAgICAgIG1v bml0b3ItPmZpbmlzaF9yZXN1bHQgPSBnbG9idXNfbF9nZnNfZmlsZV91dGltZSgKKyAgICAgICAg ICAgICAgICAgTlVMTCwgbW9uaXRvci0+cGF0aG5hbWUsIG1vbml0b3ItPnV0aW1lKTsKKyAgICAg ICAgIH0KKy0gICAgICAgIAorLSAgICAgICAgaWYobW9uaXRvci0+ZmluaXNoX3Jlc3VsdCA9PSBH TE9CVVNfU1VDQ0VTUyAmJiAKKysKKysgICAgICAgIGlmKG1vbml0b3ItPmZpbmlzaF9yZXN1bHQg PT0gR0xPQlVTX1NVQ0NFU1MgJiYKKyAgICAgICAgICAgICBtb25pdG9yLT5leHBlY3RlZF9ja3Nt ICE9IE5VTEwpCisgICAgICAgICB7CisgICAgICAgICAgICAgLyogdmVyaWZ5IGZpbGUgYmVmb3Jl IGZpbmlzaGluZyAqLworICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX2dmc19maWxlX2Nr c20oCistICAgICAgICAgICAgICAgIE5VTEwsIAorLSAgICAgICAgICAgICAgICBtb25pdG9yLT5w YXRobmFtZSwgCisrICAgICAgICAgICAgICAgIE5VTEwsCisrICAgICAgICAgICAgICAgIG1vbml0 b3ItPnBhdGhuYW1lLAorICAgICAgICAgICAgICAgICBtb25pdG9yLT5leHBlY3RlZF9ja3NtX2Fs ZywKKyAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgLTEsCitAQCAtNTI5LDcg KzUyOSw3IEBAIGdsb2J1c19sX2dmc19maWxlX2Nsb3NlX2NiKAorICAgICAgICAgeworICAgICAg ICAgICAgIGdsb2J1c19ncmlkZnRwX3NlcnZlcl9maW5pc2hlZF90cmFuc2ZlcigKKyAgICAgICAg ICAgICAgICAgbW9uaXRvci0+b3AsIG1vbml0b3ItPmZpbmlzaF9yZXN1bHQpOworLSAgICAgICAg CisrCisgICAgICAgICAgICAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfbW9uaXRvcl9kZXN0cm95KG1vbml0 b3IpOworICAgICAgICAgfQorICAgICB9CitAQCAtNTk3LDggKzU5Nyw4IEBAIGdsb2J1c19sX2dm c19maWxlX2Nsb3NlKAorIC8qKgorICAqIHN0YXQgY2FsbHMKKyAgKi8KKy0gCistLyogYmFzZXBh dGggYW5kIGZpbGVuYW1lIG11c3QgYmUgTUFYUEFUSExFTiBsb25nIAorKworKy8qIGJhc2VwYXRo IGFuZCBmaWxlbmFtZSBtdXN0IGJlIE1BWFBBVEhMRU4gbG9uZworICAqIHRoZSBwYXRobmFtZSBt YXkgYmUgYWJzb2x1dGUgb3IgcmVsYXRpdmUsIGJhc2VwYXRoIHdpbGwgYmUgdGhlIHNhbWUgKi8K KyBzdGF0aWMKKyB2b2lkCitAQCAtNjExLDEyICs2MTEsMTIgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVf cGFydGl0aW9uX3BhdGgoCisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZpbGVwYXJ0OworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dmc19maWxlX3BhcnRpdGlv bl9wYXRoKTsKKyAgICAgR2xvYnVzR0ZTRmlsZURlYnVnRW50ZXIoKTsKKy0gICAgCisrCisgICAg IHN0cm5jcHkoYnVmLCBwYXRobmFtZSwgTUFYUEFUSExFTik7CisgICAgIGJ1ZltNQVhQQVRITEVO IC0gMV0gPSAnXDAnOworLSAgICAKKysKKyAgICAgZmlsZXBhcnQgPSBzdHJyY2hyKGJ1ZiwgJy8n KTsKKy0gICAgCisrCisgI2lmZGVmIFdJTjMyCisgCisgCitAQCAtNjUyLDE1ICs2NTIsMTUgQEAg Z2xvYnVzX2xfZ2ZzX2ZpbGVfcGFydGl0aW9uX3BhdGgoCisgICAgICAgICAgICAgfQorICAgICAg ICAgfQorICAgICAgICAgZWxzZQorLSAgICAgICAgeyAgICAgICAgICAgICAgICAKKysgICAgICAg IHsKKyAgICAgICAgICAgICAqZmlsZXBhcnQrKyA9ICdcMCc7CisgICAgICAgICAgICAgc3RyY3B5 KGJhc2VwYXRoLCBidWYpOworICAgICAgICAgICAgIHN0cmNweShmaWxlbmFtZSwgZmlsZXBhcnQp OworICAgICAgICAgfQorLSAgICB9ICAgIAorKyAgICB9CisgCisgICAgIGlmKGZpbGVuYW1lWzBd ID09IDApCistICAgIHsgCisrICAgIHsKKyAgICAgICAgIGZpbGVuYW1lWzBdID0gJy8nOworICAg ICAgICAgZmlsZW5hbWVbMV0gPSAwOworICAgICB9CitAQCAtNjc4LDcgKzY3OCw3IEBAIGdsb2J1 c19sX2dmc19maWxlX3JlYWxwYXRoKAorICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByZXNvbHZlZFtNQVhQQVRITEVOXTsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNf bF9nZnNfZmlsZV9zdGF0KTsKKyAgICAgR2xvYnVzR0ZTRmlsZURlYnVnRW50ZXIoKTsKKy0gICAg CisrCisgICAgIGlmKHJlYWxwYXRoKGluX3BhdGgsIHJlc29sdmVkKSA9PSBOVUxMKQorICAgICB7 CisgICAgICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJvclN5c3RlbUVycm9yKCJyZWFscGF0aCIs IGVycm5vKTsKK0BAIC03MTksNyArNzE5LDcgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfY29weV9zdGF0 KAorICAgICBzdGF0X29iamVjdC0+aW5vICAgICAgPSBzdGF0X2J1Zi0+c3RfaW5vOworICAgICBz dGF0X29iamVjdC0+bGlua19tb2RlID0gbGlua19tb2RlOworICAgICBzdGF0X29iamVjdC0+ZXJy b3IgICAgPSBlcnJvcjsKKy0gICAgCisrCisgICAgIGlmKGZpbGVuYW1lICYmICpmaWxlbmFtZSkK KyAgICAgeworICAgICAgICAgc3RhdF9vYmplY3QtPm5hbWUgPSBnbG9idXNfbGliY19zdHJkdXAo ZmlsZW5hbWUpOworQEAgLTc0OCwyMyArNzQ4LDIzIEBAIGdsb2J1c19sX2dmc19maWxlX2Rlc3Ry b3lfc3RhdCgKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTsKKyAg ICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9nZnNfZmlsZV9kZXN0cm95X3N0YXQpOworICAgICBH bG9idXNHRlNGaWxlRGVidWdFbnRlcigpOworLSAgICAgICAgCisrCisgICAgIGZvcihpID0gMDsg aSA8IHN0YXRfY291bnQ7IGkrKykKKyAgICAgeworICAgICAgICAgaWYoc3RhdF9hcnJheVtpXS5u YW1lICE9IE5VTEwpCisgICAgICAgICB7CisgICAgICAgICAgICAgZ2xvYnVzX2ZyZWUoc3RhdF9h cnJheVtpXS5uYW1lKTsKKy0gICAgICAgIH0gICAgICAgIAorKyAgICAgICAgfQorICAgICAgICAg aWYoc3RhdF9hcnJheVtpXS5zeW1saW5rX3RhcmdldCAhPSBOVUxMKQorICAgICAgICAgeworICAg ICAgICAgICAgIGdsb2J1c19mcmVlKHN0YXRfYXJyYXlbaV0uc3ltbGlua190YXJnZXQpOworICAg ICAgICAgfQorICAgICB9CistICAgIGdsb2J1c19mcmVlKHN0YXRfYXJyYXkpOyAgICAgCisrICAg IGdsb2J1c19mcmVlKHN0YXRfYXJyYXkpOworIAorICAgICBHbG9idXNHRlNGaWxlRGVidWdFeGl0 KCk7CisgfQorLSAgICAKKysKKyAKKyAjZGVmaW5lIEdGU19TVEFUX0NPVU5UX0NIRUNLIDEwMAor ICNkZWZpbmUgR0ZTX1NUQVRfQ09VTlRfTUFYIDEwMDAKK0BAIC03ODcsMzkgKzc4NywzOSBAQCBn bG9idXNfbF9nZnNfZmlsZV9zdGF0KAorICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmaWxlbmFtZVtNQVhQQVRITEVOXTsKKyAgICAgY2hhciAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3ltbGlua190YXJnZXRbTUFYUEFUSExFTl07CisgICAgIGdsb2J1c19n cmlkZnRwX3NlcnZlcl9jb250cm9sX3N0YXRfZXJyb3JfdCAgYmFzZV9lcnJvciA9IEdMT0JVU19H UklERlRQX1NFUlZFUl9DT05UUk9MX1NUQVRfU1VDQ0VTUzsKKy0gICAgCisrCisgICAgIEdsb2J1 c0dGU05hbWUoZ2xvYnVzX2xfZ2ZzX2ZpbGVfc3RhdCk7CisgICAgIEdsb2J1c0dGU0ZpbGVEZWJ1 Z0VudGVyKCk7CistICAgIAorKworICAgICAvKiBsc3RhdCBpcyB0aGUgc2FtZSBhcyBzdGF0IHdo ZW4gbm90IG9wZXJhdGluZyBvbiBhIGxpbmsgKi8KKyAgICAgaWYobHN0YXQoc3RhdF9pbmZvLT5w YXRobmFtZSwgJnN0YXRfYnVmKSAhPSAwKQorICAgICB7CisgICAgICAgICByZXN1bHQgPSBHbG9i dXNHRlNFcnJvclN5c3RlbUVycm9yKCJzdGF0IiwgZXJybm8pOworICAgICAgICAgZ290byBlcnJv cl9zdGF0MTsKKyAgICAgfQorLSAgICAvKiBpZiB0aGlzIGlzIGEgbGluayB3ZSBzdGlsbCBuZWVk IHRvIHN0YXQgdG8gZ2V0IHRoZSBpbmZvIHdlIGFyZSAKKy0gICAgICAgIGludGVyZXN0ZWQgaW4g YW5kIHRoZW4gdXNlIHJlYWxwYXRoKCkgdG8gZ2V0IHRoZSBmdWxsIHBhdGggb2YgCisrICAgIC8q IGlmIHRoaXMgaXMgYSBsaW5rIHdlIHN0aWxsIG5lZWQgdG8gc3RhdCB0byBnZXQgdGhlIGluZm8g d2UgYXJlCisrICAgICAgICBpbnRlcmVzdGVkIGluIGFuZCB0aGVuIHVzZSByZWFscGF0aCgpIHRv IGdldCB0aGUgZnVsbCBwYXRoIG9mCisgICAgICAgICB0aGUgc3ltbGluayB0YXJnZXQgKi8KKyAg ICAgKnN5bWxpbmtfdGFyZ2V0ID0gJ1wwJzsKKyAgICAgaWYoU19JU0xOSyhzdGF0X2J1Zi5zdF9t b2RlKSkKKyAgICAgeworICAgICAgICAgaW50IHN0YXRfcmVzdWx0ID0gMDsKKy0gICAgICAgIAor KworICAgICAgICAgaWYoc3RhdF9pbmZvLT51c2Vfc3ltbGlua19pbmZvKQorICAgICAgICAgewor ICAgICAgICAgICAgIG1lbXNldCgmbGlua19zdGF0X2J1ZiwgMCwgc2l6ZW9mKHN0cnVjdCBzdGF0 KSk7CisgICAgICAgICAgICAgc3RhdF9yZXN1bHQgPSBzdGF0KHN0YXRfaW5mby0+cGF0aG5hbWUs ICZsaW5rX3N0YXRfYnVmKTsKKy0gICAgICAgIH0gCisrICAgICAgICB9CisgICAgICAgICBlbHNl IGlmKHN0YXQoc3RhdF9pbmZvLT5wYXRobmFtZSwgJnN0YXRfYnVmKSAhPSAwKQorICAgICAgICAg eworICAgICAgICAgICAgIHJlc3VsdCA9IEdsb2J1c0dGU0Vycm9yU3lzdGVtRXJyb3IoInN0YXQi LCBlcnJubyk7CisgICAgICAgICAgICAgZ290byBlcnJvcl9zdGF0MTsKKyAgICAgICAgIH0KKy0g ICAgICAgIAorKworICAgICAgICAgaWYoc3RhdF9yZXN1bHQgPCAwIHx8IHJlYWxwYXRoKHN0YXRf aW5mby0+cGF0aG5hbWUsIHN5bWxpbmtfdGFyZ2V0KSA9PSBOVUxMKQorICAgICAgICAgeworICAg ICAgICAgICAgIGludCBuY2hhcnMgPSByZWFkbGluayhzdGF0X2luZm8tPnBhdGhuYW1lLCBzeW1s aW5rX3RhcmdldCwgTUFYUEFUSExFTik7CistICAgICAgICAgICAgaWYgKG5jaGFycyA8IDApIAor KyAgICAgICAgICAgIGlmIChuY2hhcnMgPCAwKQorICAgICAgICAgeworICAgICAgICAgICAgIHJl c3VsdCA9IEdsb2J1c0dGU0Vycm9yU3lzdGVtRXJyb3IoInJlYWxwYXRoIiwgZXJybm8pOworICAg ICAgICAgICAgIGdvdG8gZXJyb3Jfc3RhdDE7CitAQCAtODI3LDkgKzgyNyw5IEBAIGdsb2J1c19s X2dmc19maWxlX3N0YXQoCisgICAgICAgICAgICAgc3ltbGlua190YXJnZXRbbmNoYXJzXSA9ICdc MCc7CisgICAgICAgICAgICAgYmFzZV9lcnJvciA9IEdMT0JVU19HUklERlRQX1NFUlZFUl9DT05U Uk9MX1NUQVRfSU5WQUxJRExJTks7CisgICAgICAgICB9CistICAgIH0gICAgCisrICAgIH0KKyAg ICAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfcGFydGl0aW9uX3BhdGgoc3RhdF9pbmZvLT5wYXRobmFtZSwg YmFzZXBhdGgsIGZpbGVuYW1lKTsKKy0gICAgCisrCisgICAgIGlmKCFTX0lTRElSKHN0YXRfYnVm LnN0X21vZGUpIHx8IHN0YXRfaW5mby0+ZmlsZV9vbmx5KQorICAgICB7CisgICAgICAgICBzdGF0 X2FycmF5ID0gKGdsb2J1c19nZnNfc3RhdF90ICopCitAQCAtODM5LDcgKzgzOSw3IEBAIGdsb2J1 c19sX2dmc19maWxlX3N0YXQoCisgICAgICAgICAgICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JN ZW1vcnkoInN0YXRfYXJyYXkiKTsKKyAgICAgICAgICAgICBnb3RvIGVycm9yX2FsbG9jMTsKKyAg ICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfY29weV9z dGF0KAorICAgICAgICAgICAgIHN0YXRfYXJyYXksICZzdGF0X2J1ZiwgZmlsZW5hbWUsIHN5bWxp bmtfdGFyZ2V0LCBsaW5rX3N0YXRfYnVmLnN0X21vZGUsIGJhc2VfZXJyb3IpOworICAgICAgICAg c3RhdF9jb3VudCA9IDE7CitAQCAtODU5LDE3ICs4NTksMTcgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVf c3RhdCgKKyAgICAgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgY2hlY2tfY2Rp ciA9IEdMT0JVU19UUlVFOworIAorICAgICAgICAgc3RhdF9saW1pdF90aW1lID0gdGltZShOVUxM KSArIEdGU19TVEFUX1RJTUU7CistICAgIAorKworICAgICAgICAgc3RhdF9jb3VudCA9IHN0YXRf aW5mby0+aW5jbHVkZV9wYXRoX3N0YXQgPyAxIDogMDsKKyAKKy0gICAgCisrCisgICAgICAgICB7 CistICAgICAgICAgICAgaWYoc3RhdF9pbmZvLT5wYXRobmFtZSAmJiAKKysgICAgICAgICAgICBp ZihzdGF0X2luZm8tPnBhdGhuYW1lICYmCisgICAgICAgICAgICAgc3RhdF9pbmZvLT5wYXRobmFt ZVswXSA9PSAnLycgJiYgc3RhdF9pbmZvLT5wYXRobmFtZVsxXSA9PSAwKQorICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgRFdPUkQgZHJpdmVtYXNrOworICAgICAgICAgICAgICAgICBj aGFyIGRyaXZlW10gPSAiQSI7CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAg ICBzdGF0X2FycmF5ID0gKGdsb2J1c19nZnNfc3RhdF90ICopCisgICAgICAgICAgICAgICAgICAg ICBnbG9idXNfbWFsbG9jKHNpemVvZihnbG9idXNfZ2ZzX3N0YXRfdCkgKiAzMCk7CisgICAgICAg ICAgICAgICAgIGlmKCFzdGF0X2FycmF5KQorQEAgLTg5Miw3ICs4OTIsNyBAQCBnbG9idXNfbF9n ZnNfZmlsZV9zdGF0KAorICAgICAgICAgICAgICAgICB9CisgCisgICAgICAgICAgICAgICAgIGdv dG8gZG9uZV9mYWtlOworLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICB9CisgICAg ICAgICB9CisgCitAQCAtOTA0LDcgKzkwNCw3IEBAIGdsb2J1c19sX2dmc19maWxlX3N0YXQoCisg ICAgICAgICAgICAgaWYgKCFzdGF0X2luZm8tPmluY2x1ZGVfcGF0aF9zdGF0KQorICAgICAgICAg ICAgIGdvdG8gZXJyb3Jfb3BlbjsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAg dG90YWxfc3RhdF9jb3VudCA9IDA7CisgCisgICAgICAgICB3aGlsZShnbG9idXNfbGliY19yZWFk ZGlyX3IoZGlyLCAmZGlyX2VudHJ5KSA9PSAwICYmIGRpcl9lbnRyeSkKK0BAIC05MTIsNDYgKzkx Miw0NiBAQCBnbG9idXNfbF9nZnNfZmlsZV9zdGF0KAorICAgICAgICAgICAgIHRvdGFsX3N0YXRf Y291bnQrKzsKKyAgICAgICAgICAgICBnbG9idXNfZnJlZShkaXJfZW50cnkpOworICAgICAgICAg fQorLSAgICAgICAgCisrCisgICAgICAgICBnbG9idXNfbGliY19yZXdpbmRkaXIoZGlyKTsKKyAK KyAgICAgICAgIHN0YXRfYXJyYXkgPSAoZ2xvYnVzX2dmc19zdGF0X3QgKikgZ2xvYnVzX21hbGxv YygKKy0gICAgICAgICAgICBzaXplb2YoZ2xvYnVzX2dmc19zdGF0X3QpICogCisrICAgICAgICAg ICAgc2l6ZW9mKGdsb2J1c19nZnNfc3RhdF90KSAqCisgICAgICAgICAgICAgKEdMT0JVU19NSU4o c3RhdF9saW1pdF9tYXgsIHRvdGFsX3N0YXRfY291bnQpICsgMSkpOworICAgICAgICAgaWYoIXN0 YXRfYXJyYXkpCisgICAgICAgICB7CisgICAgICAgICAgICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJy b3JNZW1vcnkoInN0YXRfYXJyYXkiKTsKKyAgICAgICAgICAgICBnb3RvIGVycm9yX2FsbG9jMjsK KyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgc25wcmludGYoCistICAgICAgICAg ICAgZGlyX3BhdGgsIAorLSAgICAgICAgICAgIHNpemVvZihkaXJfcGF0aCksIAorLSAgICAgICAg ICAgICIlcy8lcyIsIAorLSAgICAgICAgICAgIChiYXNlcGF0aFswXSAhPSAnLycgfHwgYmFzZXBh dGhbMV0gIT0gJ1wwJykgPyBiYXNlcGF0aCA6ICIiLCAKKysgICAgICAgICAgICBkaXJfcGF0aCwK KysgICAgICAgICAgICBzaXplb2YoZGlyX3BhdGgpLAorKyAgICAgICAgICAgICIlcy8lcyIsCisr ICAgICAgICAgICAgKGJhc2VwYXRoWzBdICE9ICcvJyB8fCBiYXNlcGF0aFsxXSAhPSAnXDAnKSA/ IGJhc2VwYXRoIDogIiIsCisgICAgICAgICAgICAgZmlsZW5hbWUpOworLSAgICAgICAgICAgIAor KworICAgICAgICAgZGlyX3BhdGhbbWF4cGF0aGxlbiAtIDFdID0gJ1wwJzsKKyAgICAgICAgIGlm KCFiYXNlcGF0aFswXSAmJiBmaWxlbmFtZVswXSA9PSAnLycpCisgICAgICAgICB7CisgICAgICAg ICAgICAgZGlyX3BhdGhbMF0gPSAwOworICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAg ICBpID0gMDsKKy0gICAgICAgIGlmKHN0YXRfaW5mby0+aW5jbHVkZV9wYXRoX3N0YXQpIAorKyAg ICAgICAgaWYoc3RhdF9pbmZvLT5pbmNsdWRlX3BhdGhfc3RhdCkKKyAgICAgICAgIHsKKyAgICAg ICAgICAgICBnbG9idXNfbF9nZnNfZmlsZV9jb3B5X3N0YXQoJnN0YXRfYXJyYXlbaSsrXSwgJnN0 YXRfYnVmLCBmaWxlbmFtZSwgTlVMTCwgMCwKKyAgICAgICAgICAgICAgICAgZGlyID8gR0xPQlVT X0dSSURGVFBfU0VSVkVSX0NPTlRST0xfU1RBVF9TVUNDRVNTIDogR0xPQlVTX0dSSURGVFBfU0VS VkVSX0NPTlRST0xfU1RBVF9PUEVORkFJTEVEKTsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKwor ICAgICAgICAgd2hpbGUoZ2xvYnVzX2xpYmNfcmVhZGRpcl9yKGRpciwgJmRpcl9lbnRyeSkgPT0g MCAmJiBkaXJfZW50cnkpCisgICAgICAgICB7CisgICAgICAgICAgICAgY2hhciAgICAgICAgICAg ICAgICAgICAgICAgIHBhdGhbbWF4cGF0aGxlbl07CistICAgICAgICAgICAgICAgIAorKworICAg ICAgICAgICAgIGJhc2VfZXJyb3IgPSBHTE9CVVNfR1JJREZUUF9TRVJWRVJfQ09OVFJPTF9TVEFU X1NVQ0NFU1M7CisgICAgICAgICAgICAgc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLCAiJXMv JXMiLCBkaXJfcGF0aCwgZGlyX2VudHJ5LT5kX25hbWUpOworICAgICAgICAgICAgIHBhdGhbbWF4 cGF0aGxlbiAtIDFdID0gJ1wwJzsKKy0gICAgICAgIAorKworICAgICAgICAgICAgIGlmKHN0YXQo cGF0aCwgJnN0YXRfYnVmKSAhPSAwKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg Lyogc3RhdCgpIGRvZXNuJ3QgcmV0dXJuIGEgdXNlZnVsIGVycm9yICovCitAQCAtOTgwLDcgKzk4 MCw3IEBAIGdsb2J1c19sX2dmc19maWxlX3N0YXQoCisgICAgICAgICAgICAgICAgICAgICAmc3Rh dF9hcnJheVtpXSwgJnN0YXRfYnVmLCBkaXJfZW50cnktPmRfbmFtZSwgc3ltbGlua190YXJnZXQs IGxpbmtfc3RhdF9idWYuc3RfbW9kZSwgYmFzZV9lcnJvcik7CisgCisgICAgICAgICAgICAgLyog c2V0IG5saW5rIHRvIHRvdGFsIGZpbGVzIGluIGRpciBmb3IgLiBlbnRyeSAqLworLSAgICAgICAg ICAgIGlmKGNoZWNrX2NkaXIgJiYgZGlyX2VudHJ5LT5kX25hbWUgJiYgCisrICAgICAgICAgICAg aWYoY2hlY2tfY2RpciAmJiBkaXJfZW50cnktPmRfbmFtZSAmJgorICAgICAgICAgICAgICAgICBk aXJfZW50cnktPmRfbmFtZVswXSA9PSAnLicgJiYgZGlyX2VudHJ5LT5kX25hbWVbMV0gPT0gJ1ww JykKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGNoZWNrX2NkaXIgPSBHTE9CVVNf RkFMU0U7CitAQCAtOTkwLDcgKzk5MCw3IEBAIGdsb2J1c19sX2dmc19maWxlX3N0YXQoCisgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICAgICAgICAgICAgICAg ICAgICAgICBoID0gMDsKKyAgICAgICAgICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAga2V5OworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICBrZXkg PSBwYXRoOworICAgICAgICAgICAgICAgICB3aGlsZSgqa2V5KQorICAgICAgICAgICAgICAgICB7 CitAQCAtMTAwMSwxMyArMTAwMSwxMyBAQCBnbG9idXNfbF9nZnNfZmlsZV9zdGF0KAorIAorICAg ICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICBnbG9idXNfZnJlZShkaXJfZW50cnkpOworLSAg ICAgICAgICAgIAorKworICAgICAgICAgICAgIC8qIHNlbmQgdXBkYXRlcyBldmVyeSBHRlNfU1RB VF9USU1FLCBjaGVja2VkIGV2ZXJ5IEdGU19TVEFUX0NIRUNLICovCisgICAgICAgICAgICAgaWYo aSA+PSBzdGF0X2xpbWl0X2NoZWNrKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg dGltZV90ICAgICAgICAgICAgICAgICAgdG1wX3RpbWU7CisgICAgICAgICAgICAgICAgIGdsb2J1 c19ib29sX3QgICAgICAgICAgIHNlbmRfc3RhdHMgPSBHTE9CVVNfRkFMU0U7CistICAgICAgICAg ICAgICAgIAorKworICAgICAgICAgICAgICAgICB0bXBfdGltZSA9IHRpbWUoTlVMTCk7CisgICAg ICAgICAgICAgICAgIGlmKGkgPj0gc3RhdF9saW1pdF9tYXggfHwgdG1wX3RpbWUgPiBzdGF0X2xp bWl0X3RpbWUpCisgICAgICAgICAgICAgICAgIHsKK0BAIC0xMDE3LDcgKzEwMTcsNyBAQCBnbG9i dXNfbF9nZnNfZmlsZV9zdGF0KAorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ICAgICBzdGF0X2xpbWl0X2NoZWNrICs9IEdGU19TVEFUX0NPVU5UX0NIRUNLOworICAgICAgICAg ICAgICAgICB9CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICBpZihzZW5k X3N0YXRzKQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBzdGF0X2Nv dW50ID0gaTsKK0BAIC0xMDI1LDEyICsxMDI1LDEyIEBAIGdsb2J1c19sX2dmc19maWxlX3N0YXQo CisgICAgICAgICAgICAgICAgICAgICBzdGF0X2xpbWl0X3RpbWUgPSB0bXBfdGltZSArIEdGU19T VEFUX1RJTUU7CisgCisgICAgICAgICAgICAgICAgICAgICBpID0gMDsKKy0gICAgICAgICAgICAg ICAgICAgIAorKworICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2Zp bmlzaGVkX3N0YXRfcGFydGlhbCgKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcCwgR0xPQlVT X1NVQ0NFU1MsIHN0YXRfYXJyYXksIHN0YXRfY291bnQpOworLSAgICAgICAgICAgICAgICAgICAg ICAgIAorKworICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfZGVzdHJveV9z dGF0KHN0YXRfYXJyYXksIHN0YXRfY291bnQpOworLSAgICAgICAgICAgICAgICAgICAgCisrCisg ICAgICAgICAgICAgICAgICAgICBzdGF0X2FycmF5ID0gKGdsb2J1c19nZnNfc3RhdF90ICopIGds b2J1c19tYWxsb2MoCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGdsb2J1c19nZnNf c3RhdF90KSAqIChzdGF0X2xpbWl0X21heCArIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgIGlm KCFzdGF0X2FycmF5KQorQEAgLTEwMzgsMTMgKzEwMzgsMTMgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVf c3RhdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJvck1l bW9yeSgic3RhdF9hcnJheSIpOworICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3Jf YWxsb2MyOworICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgCisr CisgICAgICAgICAgICAgICAgICAgICBzdGF0X2NvdW50ID0gMDsKKyAgICAgICAgICAgICAgICAg fQorLSAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgCisrICAgICAgICAgICAgfQorICAgICAg ICAgfQorICAgICAgICAgc3RhdF9jb3VudCA9IGk7CistICAgICAgICAKKysKKyAgICAgICAgIGNs b3NlZGlyKGRpcik7CisgICAgICAgICBnb3RvIGRvbmVfZmFrZTsKKyAKK0BAIC0xMDcxLDExICsx MDcxLDExIEBAIGRvbmVfZmFrZToKKyAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2xvd19saXN0aW5nX3RocmVzaDsKKyAKKyAgICAgICAgIHN0YXRfbGltaXRfdGltZSA9 IHRpbWUoTlVMTCkgKyBHRlNfU1RBVF9USU1FOworLSAgICAgICAgCisrCisgICAgICAgICB0b3Rh bF9zdGF0X2NvdW50ID0gc2NhbmRpcigKKy0gICAgICAgICAgICBzdGF0X2luZm8tPnBhdGhuYW1l LCAKKy0gICAgICAgICAgICAmZW50cmllcywgCistICAgICAgICAgICAgTlVMTCwgCisrICAgICAg ICAgICAgc3RhdF9pbmZvLT5wYXRobmFtZSwKKysgICAgICAgICAgICAmZW50cmllcywKKysgICAg ICAgICAgICBOVUxMLAorICAgICAgICAgICAgIChnZXRlbnYoIkZUUE5PU09SVCIpID8gTlVMTCA6 IGFscGhhc29ydCkpOworICAgICAgICAgaWYodG90YWxfc3RhdF9jb3VudCA8IDApCisgICAgICAg ICB7CitAQCAtMTA5MCwzMyArMTA5MCwzMyBAQCBkb25lX2Zha2U6CisgICAgICAgICB9CisgCisg ICAgICAgICBzdGF0X2FycmF5ID0gKGdsb2J1c19nZnNfc3RhdF90ICopIGdsb2J1c19tYWxsb2Mo CistICAgICAgICAgICAgc2l6ZW9mKGdsb2J1c19nZnNfc3RhdF90KSAqIAorKyAgICAgICAgICAg IHNpemVvZihnbG9idXNfZ2ZzX3N0YXRfdCkgKgorICAgICAgICAgICAgIChHTE9CVVNfTUlOKHN0 YXRfbGltaXRfbWF4LCB0b3RhbF9zdGF0X2NvdW50KSArIDEpKTsKKyAgICAgICAgIGlmKCFzdGF0 X2FycmF5KQorICAgICAgICAgeworICAgICAgICAgICAgIHJlc3VsdCA9IEdsb2J1c0dGU0Vycm9y TWVtb3J5KCJzdGF0X2FycmF5Iik7CisgICAgICAgICAgICAgZ290byBlcnJvcl9vcGVuOworICAg ICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBzbnByaW50ZigKKy0gICAgICAgICAgICBk aXJfcGF0aCwgCistICAgICAgICAgICAgc2l6ZW9mKGRpcl9wYXRoKSwgCistICAgICAgICAgICAg IiVzLyVzIiwgCistICAgICAgICAgICAgKGJhc2VwYXRoWzBdICE9ICcvJyB8fCBiYXNlcGF0aFsx XSAhPSAnXDAnKSA/IGJhc2VwYXRoIDogIiIsIAorKyAgICAgICAgICAgIGRpcl9wYXRoLAorKyAg ICAgICAgICAgIHNpemVvZihkaXJfcGF0aCksCisrICAgICAgICAgICAgIiVzLyVzIiwKKysgICAg ICAgICAgICAoYmFzZXBhdGhbMF0gIT0gJy8nIHx8IGJhc2VwYXRoWzFdICE9ICdcMCcpID8gYmFz ZXBhdGggOiAiIiwKKyAgICAgICAgICAgICBmaWxlbmFtZSk7CistICAgICAgICAgICAgCisrCisg ICAgICAgICBkaXJfcGF0aFtNQVhQQVRITEVOIC0gMV0gPSAnXDAnOworLSAgICAgICAgCisrCisg ICAgICAgICBpID0gMDsKKyAgICAgICAgIGogPSAwOworICAgICAgICAgd2hpbGUoaiA8IHRvdGFs X3N0YXRfY291bnQpCistICAgICAgICB7ICAgICAgICAgICAgCisrICAgICAgICB7CisgICAgICAg ICAgICAgY2hhciAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhbTUFYUEFUSExFTl07CistICAg ICAgICAgICAgCisrCisgICAgICAgICAgICAgZGlyX2VudHJ5ID0gZW50cmllc1tqKytdOworICAg ICAgICAgICAgIHNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgIiVzLyVzIiwgZGlyX3BhdGgs IGRpcl9lbnRyeS0+ZF9uYW1lKTsKKyAgICAgICAgICAgICBwYXRoW01BWFBBVEhMRU4gLSAxXSA9 ICdcMCc7CistICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgLyogZmFrZSBhIHN0YXQgcmVz cG9uc2UgaWYgc3RhdHMgYXJlIHNsb3csIGRfdHlwZSBpcyB2YWxpZCwKKyAgICAgICAgICAgICAg KiBhbmQgaW5kaWNhdGVzIGEgZmlsZSBvciBkaXIgKi8KKyAjaWZuZGVmIF9ESVJFTlRfSEFWRV9E X1RZUEUKK0BAIC0xMTg2LDcgKzExODYsNyBAQCBkb25lX2Zha2U6CisgICAgICAgICAgICAgfQor ICAgICAgICAgICAgIGdsb2J1c19sX2dmc19maWxlX2NvcHlfc3RhdCgKKyAgICAgICAgICAgICAg ICAgICAgICZzdGF0X2FycmF5W2ldLCAmc3RhdF9idWYsIGRpcl9lbnRyeS0+ZF9uYW1lLCBzeW1s aW5rX3RhcmdldCwgbGlua19zdGF0X2J1Zi5zdF9tb2RlLCBiYXNlX2Vycm9yKTsKKy0gICAgICAg ICAgICAKKysKKyAgICAgICAgICAgICAvKiBzZXQgbmxpbmsgdG8gdG90YWwgZmlsZXMgaW4gZGly IGZvciAuIGVudHJ5ICovCisgICAgICAgICAgICAgaWYoY2hlY2tfY2RpciAmJgorICAgICAgICAg ICAgICAgICBkaXJfZW50cnktPmRfbmFtZVswXSA9PSAnLicgJiYgZGlyX2VudHJ5LT5kX25hbWVb MV0gPT0gJ1wwJykKK0BAIC0xMjA0LDcgKzEyMDQsNyBAQCBkb25lX2Zha2U6CisgICAgICAgICAg ICAgeworICAgICAgICAgICAgICAgICB0aW1lX3QgICAgICAgICAgICAgICAgICB0bXBfdGltZTsK KyAgICAgICAgICAgICAgICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAgICAgc2VuZF9zdGF0cyA9IEdM T0JVU19GQUxTRTsKKy0gICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgIHRtcF90 aW1lID0gdGltZShOVUxMKTsKKyAgICAgICAgICAgICAgICAgaWYoaSA+PSBzdGF0X2xpbWl0X21h eCB8fCB0bXBfdGltZSA+PSBzdGF0X2xpbWl0X3RpbWUpCisgICAgICAgICAgICAgICAgIHsKK0BA IC0xMjE0LDcgKzEyMTQsNyBAQCBkb25lX2Zha2U6CisgICAgICAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICAgICAgIHN0YXRfbGltaXRfY2hlY2sgKz0gR0ZTX1NUQVRfQ09VTlRfQ0hFQ0s7 CisgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAg ICAgIGlmKHNlbmRfc3RhdHMpCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg ICAgIHN0YXRfY291bnQgPSBpOworQEAgLTEyMjcsNyArMTIyNyw3IEBAIGRvbmVfZmFrZToKKyAg ICAgICAgICAgICAgICAgICAgICAgICBvcCwgR0xPQlVTX1NVQ0NFU1MsIHN0YXRfYXJyYXksIHN0 YXRfY291bnQpOworIAorICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfZGVz dHJveV9zdGF0KHN0YXRfYXJyYXksIHN0YXRfY291bnQpOworLSAgICAgICAgICAgICAgICAgICAg CisrCisgICAgICAgICAgICAgICAgICAgICBzdGF0X2FycmF5ID0gKGdsb2J1c19nZnNfc3RhdF90 ICopIGdsb2J1c19tYWxsb2MoCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGdsb2J1 c19nZnNfc3RhdF90KSAqIChzdGF0X2xpbWl0X21heCArIDEpKTsKKyAgICAgICAgICAgICAgICAg ICAgIGlmKCFzdGF0X2FycmF5KQorQEAgLTEyMzUsMTMgKzEyMzUsMTMgQEAgZG9uZV9mYWtlOgor ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEdsb2J1c0dGU0Vycm9yTWVtb3J5KCJz dGF0X2FycmF5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9vcGVuOwor ICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgCisrCisgICAgICAg ICAgICAgICAgICAgICBzdGF0X2NvdW50ID0gMDsKKyAgICAgICAgICAgICAgICAgfQorLSAgICAg ICAgICAgIH0gICAgICAgICAgICAgICAgCisrICAgICAgICAgICAgfQorICAgICAgICAgfQorICAg ICAgICAgc3RhdF9jb3VudCA9IGk7CistICAgICAgICAKKysKKyAgICAgICAgIGlmKGVudHJpZXMp CisgICAgICAgICB7CisgICAgICAgICAgICAgZ2xvYnVzX2ZyZWUoZW50cmllcyk7CitAQCAtMTI1 Miw3ICsxMjUyLDcgQEAgZG9uZV9mYWtlOgorICAgICBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmlu aXNoZWRfc3RhdCgKKyAgICAgICAgIG9wLCByZXN1bHQsIHN0YXRfYXJyYXksIHN0YXRfY291bnQp OworICAgICBnbG9idXNfbF9nZnNfZmlsZV9kZXN0cm95X3N0YXQoc3RhdF9hcnJheSwgc3RhdF9j b3VudCk7CistICAgIAorKworICAgICBHbG9idXNHRlNGaWxlRGVidWdFeGl0KCk7CisgICAgIHJl dHVybjsKKyAKK0BAIC0xMjc2LDEyICsxMjc2LDEyIEBAIGdsb2J1c19sX2dmc19maWxlX3RydW5j YXRlKAorICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7Cisg ICAgIGdsb2J1c194aW9fc3lzdGVtX2ZpbGVfdCAgICAgICAgICAgIGZkOworICAgICBzdHJ1Y3Qg c3RhdCAgICAgICAgICAgICAgICAgICAgICAgICBzYnVmOworLSAgICAKKysKKyAgICAgR2xvYnVz R0ZTTmFtZShnbG9idXNfbF9nZnNfZmlsZV90cnVuY2F0ZSk7CisgICAgIEdsb2J1c0dGU0ZpbGVE ZWJ1Z0VudGVyKCk7CisgCisgICAgIHJlc3VsdCA9IGdsb2J1c194aW9fc3lzdGVtX2ZpbGVfb3Bl bigKKy0gICAgICAgICZmZCwgcGF0aG5hbWUsIAorKyAgICAgICAgJmZkLCBwYXRobmFtZSwKKyAg ICAgICAgIEdMT0JVU19YSU9fRklMRV9SRFdSIHwgR0xPQlVTX1hJT19GSUxFX0JJTkFSWSwgMCk7 CisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworQEAgLTEyODksMTYg KzEyODksMTYgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfdHJ1bmNhdGUoCisgICAgIH0KKyAKKyAjaWZk ZWYgV0lOMzIKKy0gICAgcmMgPSBzdGF0KHBhdGhuYW1lLCAmc2J1Zik7ICAgIAorKyAgICByYyA9 IHN0YXQocGF0aG5hbWUsICZzYnVmKTsKKyAjZWxzZQorICAgICByYyA9IGZzdGF0KGZkLCAmc2J1 Zik7CistI2VuZGlmICAgIAorKyNlbmRpZgorICAgICBpZihyYyAhPSAwKQorICAgICB7CisgICAg ICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJvclN5c3RlbUVycm9yKCJzdGF0IiwgZXJybm8pOwor ICAgICAgICAgZ290byBlcnJvcl9jbG9zZTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaWYob2Zm c2V0ID4gc2J1Zi5zdF9zaXplKQorICAgICB7CisgICAgICAgICByZXN1bHQgPSBHbG9idXNHRlNF cnJvckdlbmVyaWMoCitAQCAtMTMxMSwxNSArMTMxMSwxNSBAQCBnbG9idXNfbF9nZnNfZmlsZV90 cnVuY2F0ZSgKKyAgICAgeworICAgICAgICAgZ290byBlcnJvcl9jbG9zZTsKKyAgICAgfQorLSAg ICAKKysKKyAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19zeXN0ZW1fZmlsZV9jbG9zZShmZCk7Cisg ICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworICAgICAgICAgZ290byBl cnJvcjsKKyAgICAgfQorLSAgICAgICAgCisrCisgICAgIGdsb2J1c19ncmlkZnRwX3NlcnZlcl9m aW5pc2hlZF9jb21tYW5kKG9wLCBHTE9CVVNfU1VDQ0VTUywgTlVMTCk7CistICAgICAgICAKKysK KyAgICAgR2xvYnVzR0ZTRmlsZURlYnVnRXhpdCgpOworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NF U1M7CisgCitAQCAtMTM0NywxMiArMTM0NywxMiBAQCBnbG9idXNfbF9nZnNfZmlsZV9ta2RpcigK KyAgICAgICAgIHJlc3VsdCA9IEdsb2J1c0dGU0Vycm9yU3lzdGVtRXJyb3IoIm1rZGlyIiwgZXJy bm8pOworICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgfQorLSAgICAKKysKKyAgICAgZ2xvYnVz X2dyaWRmdHBfc2VydmVyX2ZpbmlzaGVkX2NvbW1hbmQob3AsIEdMT0JVU19TVUNDRVNTLCBOVUxM KTsKKy0gICAgICAgIAorKworICAgICBHbG9idXNHRlNGaWxlRGVidWdFeGl0KCk7CisgICAgIHJl dHVybiBHTE9CVVNfU1VDQ0VTUzsKKy0gICAgCisrCisgZXJyb3I6CisgICAgIEdsb2J1c0dGU0Zp bGVEZWJ1Z0V4aXRXaXRoRXJyb3IoKTsKKyAgICAgcmV0dXJuIHJlc3VsdDsKK0BAIC0xMzc1LDEy ICsxMzc1LDEyIEBAIGdsb2J1c19sX2dmc19maWxlX3JtZGlyKAorICAgICAgICAgcmVzdWx0ID0g R2xvYnVzR0ZTRXJyb3JTeXN0ZW1FcnJvcigicm1kaXIiLCBlcnJubyk7CisgICAgICAgICBnb3Rv IGVycm9yOworICAgICB9CistICAgIAorKworICAgICBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmlu aXNoZWRfY29tbWFuZChvcCwgR0xPQlVTX1NVQ0NFU1MsIE5VTEwpOworLSAgICAgICAgCisrCisg ICAgIEdsb2J1c0dGU0ZpbGVEZWJ1Z0V4aXQoKTsKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNT OworLSAgICAKKysKKyBlcnJvcjoKKyAgICAgR2xvYnVzR0ZTRmlsZURlYnVnRXhpdFdpdGhFcnJv cigpOworICAgICByZXR1cm4gcmVzdWx0OworQEAgLTE0MDEsMTggKzE0MDEsMTggQEAgZ2xvYnVz X2xfZ2ZzX2ZpbGVfZGVsZXRlX2RpcigKKyAgICAgY2hhciAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGF0aFtNQVhQQVRITEVOXTsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9n ZnNfZmlsZV9kZWxldGVfZGlyKTsKKyAgICAgR2xvYnVzR0ZTRmlsZURlYnVnRW50ZXIoKTsKKy0g ICAgCisrCisgICAgIC8qIGxzdGF0IGlzIHRoZSBzYW1lIGFzIHN0YXQgd2hlbiBub3Qgb3BlcmF0 aW5nIG9uIGEgbGluayAqLworICAgICBpZihsc3RhdChwYXRobmFtZSwgJnN0YXRfYnVmKSAhPSAw KQorICAgICB7CisgICAgICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJvclN5c3RlbUVycm9yKCJz dGF0IiwgZXJybm8pOworICAgICAgICAgZ290byBlcnJvcl9zdGF0OworICAgICB9CistICAgIAor KworICAgICBpZighU19JU0RJUihzdGF0X2J1Zi5zdF9tb2RlKSkKKyAgICAgeworICAgICAgICAg LyogcmVtb3ZlIGFueXRoaW5nIHRoYXQgaXNuJ3QgYSBkaXIgLS0gZG9uJ3QgZm9sbG93IGxpbmtz ICovCistICAgICAgICByYyA9IHVubGluayhwYXRobmFtZSk7ICAgICAgIAorKyAgICAgICAgcmMg PSB1bmxpbmsocGF0aG5hbWUpOworICAgICAgICAgaWYocmMgIT0gMCkKKyAgICAgICAgIHsKKyAg ICAgICAgICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJvclN5c3RlbUVycm9yKCJ1bmxpbmsiLCBl cnJubyk7CitAQCAtMTQyNywxMyArMTQyNywxMyBAQCBnbG9idXNfbF9nZnNfZmlsZV9kZWxldGVf ZGlyKAorICAgICAgICAgICAgIHJlc3VsdCA9IEdsb2J1c0dGU0Vycm9yU3lzdGVtRXJyb3IoIm9w ZW5kaXIiLCBlcnJubyk7CisgICAgICAgICAgICAgZ290byBlcnJvcl9vcGVuOworICAgICAgICAg fQorLSAgICAgICAgCisrCisgICAgICAgICBmb3IoaSA9IDA7CisgICAgICAgICAgICAgZ2xvYnVz X2xpYmNfcmVhZGRpcl9yKGRpciwgJmRpcl9lbnRyeSkgPT0gMCAmJiBkaXJfZW50cnk7CisgICAg ICAgICAgICAgaSsrKQorLSAgICAgICAgeyAgIAorLSAgICAgICAgICAgIGlmKGRpcl9lbnRyeS0+ ZF9uYW1lWzBdID09ICcuJyAmJiAKKy0gICAgICAgICAgICAgICAgKGRpcl9lbnRyeS0+ZF9uYW1l WzFdID09ICdcMCcgfHwgCisrICAgICAgICB7CisrICAgICAgICAgICAgaWYoZGlyX2VudHJ5LT5k X25hbWVbMF0gPT0gJy4nICYmCisrICAgICAgICAgICAgICAgIChkaXJfZW50cnktPmRfbmFtZVsx XSA9PSAnXDAnIHx8CisgICAgICAgICAgICAgICAgIChkaXJfZW50cnktPmRfbmFtZVsxXSA9PSAn LicgJiYgZGlyX2VudHJ5LT5kX25hbWVbMl0gPT0gJ1wwJykpKQorICAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAgZ2xvYnVzX2ZyZWUoZGlyX2VudHJ5KTsKK0BAIC0xNDQxLDcgKzE0NDEs NyBAQCBnbG9idXNfbF9nZnNfZmlsZV9kZWxldGVfZGlyKAorICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICBzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksICIlcy8lcyIsIHBhdGhuYW1lLCBk aXJfZW50cnktPmRfbmFtZSk7CisgICAgICAgICAgICAgcGF0aFtNQVhQQVRITEVOIC0gMV0gPSAn XDAnOworLSAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgLyogbHN0YXQgaXMgdGhlIHNh bWUgYXMgc3RhdCB3aGVuIG5vdCBvcGVyYXRpbmcgb24gYSBsaW5rICovCisgICAgICAgICAgICAg aWYobHN0YXQocGF0aCwgJnN0YXRfYnVmKSAhPSAwKQorICAgICAgICAgICAgIHsKK0BAIC0xNDUw LDExICsxNDUwLDExIEBAIGdsb2J1c19sX2dmc19maWxlX2RlbGV0ZV9kaXIoCisgICAgICAgICAg ICAgICAgIC8qIGp1c3Qgc2tpcCBpbnZhbGlkIGVudHJpZXMgKi8KKyAgICAgICAgICAgICAgICAg Y29udGludWU7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIAorKworICAgICAgICAgICAg IGlmKCFTX0lTRElSKHN0YXRfYnVmLnN0X21vZGUpKQorICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgLyogcmVtb3ZlIGFueXRoaW5nIHRoYXQgaXNuJ3QgYSBkaXIgLS0gZG9uJ3QgZm9s bG93IGxpbmtzICovCistICAgICAgICAgICAgICAgIHJjID0gdW5saW5rKHBhdGgpOyAgICAgICAK KysgICAgICAgICAgICAgICAgcmMgPSB1bmxpbmsocGF0aCk7CisgICAgICAgICAgICAgICAgIGlm KHJjICE9IDApCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIHJlc3Vs dCA9IEdsb2J1c0dGU0Vycm9yU3lzdGVtRXJyb3IoInVubGluayIsIGVycm5vKTsKK0BAIC0xNDgw LDIzICsxNDgwLDIzIEBAIGdsb2J1c19sX2dmc19maWxlX2RlbGV0ZV9kaXIoCisgICAgICAgICAg ICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JTeXN0ZW1FcnJvcigicm1kaXIiLCBlcnJubyk7Cisg ICAgICAgICAgICAgZ290byBlcnJvcl9ybWRpcjsKKyAgICAgICAgIH0KKy0gICAgfSAKKy0gICAg CisrICAgIH0KKysKKyAgICAgR2xvYnVzR0ZTRmlsZURlYnVnRXhpdCgpOworICAgICByZXR1cm4g R0xPQlVTX1NVQ0NFU1M7CisgCisgZXJyb3JfcmVjdXJzZToKKyBlcnJvcl91bmxpbmsyOgorLSAg ICAgICAgY2xvc2VkaXIoZGlyKTsKKy0gICAgICAgIGdsb2J1c19mcmVlKGRpcl9lbnRyeSk7Cist ZXJyb3Jfb3BlbjogCisrICAgIGNsb3NlZGlyKGRpcik7CisrICAgIGdsb2J1c19mcmVlKGRpcl9l bnRyeSk7CisrZXJyb3Jfb3BlbjoKKyBlcnJvcl9zdGF0OgorIGVycm9yX3VubGluazE6CistZXJy b3Jfcm1kaXI6ICAgIAorK2Vycm9yX3JtZGlyOgorICAgICBHbG9idXNHRlNGaWxlRGVidWdFeGl0 V2l0aEVycm9yKCk7CistICAgIHJldHVybiByZXN1bHQ7IAorKyAgICByZXR1cm4gcmVzdWx0Owor IH0KKy0gICAgCisrCisgc3RhdGljCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2xfZ2ZzX2Zp bGVfZGVsZXRlKAorQEAgLTE1MjcsMTIgKzE1MjcsMTIgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfZGVs ZXRlKAorICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICB9CisgICAgIH0KKy0gICAg CisrCisgICAgIGdsb2J1c19ncmlkZnRwX3NlcnZlcl9maW5pc2hlZF9jb21tYW5kKG9wLCBHTE9C VVNfU1VDQ0VTUywgTlVMTCk7CistICAgICAgICAKKysKKyAgICAgR2xvYnVzR0ZTRmlsZURlYnVn RXhpdCgpOworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CistICAgIAorKworIGVycm9yOgor ICAgICBHbG9idXNHRlNGaWxlRGVidWdFeGl0V2l0aEVycm9yKCk7CisgICAgIHJldHVybiByZXN1 bHQ7CitAQCAtMTU1NiwxMiArMTU1NiwxMiBAQCBnbG9idXNfbF9nZnNfZmlsZV9yZW5hbWUoCisg ICAgICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJvclN5c3RlbUVycm9yKCJyZW5hbWUiLCBlcnJu byk7CisgICAgICAgICBnb3RvIGVycm9yOworICAgICB9CistICAgIAorKworICAgICBnbG9idXNf Z3JpZGZ0cF9zZXJ2ZXJfZmluaXNoZWRfY29tbWFuZChvcCwgR0xPQlVTX1NVQ0NFU1MsIE5VTEwp OworLSAgICAgICAgCisrCisgICAgIEdsb2J1c0dGU0ZpbGVEZWJ1Z0V4aXQoKTsKKyAgICAgcmV0 dXJuIEdMT0JVU19TVUNDRVNTOworLSAgICAKKysKKyBlcnJvcjoKKyAgICAgR2xvYnVzR0ZTRmls ZURlYnVnRXhpdFdpdGhFcnJvcigpOworICAgICByZXR1cm4gcmVzdWx0OworQEAgLTE1NzksNyAr MTU3OSw3IEBAIGdsb2J1c19sX2dmc19maWxlX2NoZ3JwKAorICAgICBzdHJ1Y3QgZ3JvdXAgKiAg ICAgICAgICAgICAgICAgICAgICBncnBfaW5mbzsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ3JwX2lkOworICAgICBjaGFyKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbmRwdDsKKy0gICAgCisrCisgICAgIEdsb2J1c0dGU05hbWUoZ2xvYnVzX2xfZ2Zz X2ZpbGVfY2hncnApOworICAgICBHbG9idXNHRlNGaWxlRGVidWdFbnRlcigpOworIAorQEAgLTE1 ODcsNyArMTU4Nyw3IEBAIGdsb2J1c19sX2dmc19maWxlX2NoZ3JwKAorICAgICBpZihncnBfaW5m byAhPSBOVUxMKQorICAgICB7CisgICAgICAgICBncnBfaWQgPSBncnBfaW5mby0+Z3JfZ2lkOwor LSAgICB9IAorKyAgICB9CisgICAgIGVsc2UKKyAgICAgeworICAgICAgICAgZ3JwX2lkID0gc3Ry dG9sKGdyb3VwLCAmZW5kcHQsIDEwKTsKK0BAIC0xNTk3LDI1ICsxNTk3LDI1IEBAIGdsb2J1c19s X2dmc19maWxlX2NoZ3JwKAorICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICB9Cisg ICAgIH0KKy0gICAgCisrCisgICAgIGlmKGdycF9pZCA8IDApCisgICAgIHsKKyAgICAgICAgIHJl c3VsdCA9IEdsb2J1c0dGU0Vycm9yU3lzdGVtRXJyb3IoImNoZ3JwIiwgRVBFUk0pOworICAgICAg ICAgZ290byBlcnJvcjsKKyAgICAgfQorLSAgICAKKysKKyAgICAgcmMgPSBjaG93bihwYXRobmFt ZSwgLTEsIGdycF9pZCk7CisgICAgIGlmKHJjICE9IDApCisgICAgIHsKKyAgICAgICAgIHJlc3Vs dCA9IEdsb2J1c0dGU0Vycm9yU3lzdGVtRXJyb3IoImNoZ3JwIiwgZXJybm8pOworICAgICAgICAg Z290byBlcnJvcjsKKyAgICAgfQorLSAgICAKKysKKyAgICAgZ2xvYnVzX2dyaWRmdHBfc2VydmVy X2ZpbmlzaGVkX2NvbW1hbmQob3AsIEdMT0JVU19TVUNDRVNTLCBOVUxMKTsKKy0gICAgICAgIAor KworICAgICBHbG9idXNHRlNGaWxlRGVidWdFeGl0KCk7CisgICAgIHJldHVybiBHTE9CVVNfU1VD Q0VTUzsKKy0gICAgCisrCisgZXJyb3I6CisgICAgIEdsb2J1c0dGU0ZpbGVEZWJ1Z0V4aXRXaXRo RXJyb3IoKTsKKyAgICAgcmV0dXJuIHJlc3VsdDsKK0BAIC0xNjI0LDE3ICsxNjI0LDE3IEBAIGVy cm9yOgorICNpZmRlZiBXSU4zMgorIAorIC8qIHV0aW1lIG9uIHdpbjMyIGRvZXMgbm90IHdvcmsg d2l0aCBkaXJlY3Rvcmllcy4KKy0gICAgd2UgY2FuIHdvcmsgYXJvdW5kIHRoYXQgYnkgb3Blbmlu ZyBhIEhBTkRMRSB3aXRoIHRoZSAKKy0gICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MgZmxh ZywgZ2V0dGluZyB0aGUgZmQgZnJvbSB0aGF0LCBhbmQgY2FsbGluZyAKKysgICAgd2UgY2FuIHdv cmsgYXJvdW5kIHRoYXQgYnkgb3BlbmluZyBhIEhBTkRMRSB3aXRoIHRoZQorKyAgICBGSUxFX0ZM QUdfQkFDS1VQX1NFTUFOVElDUyBmbGFnLCBnZXR0aW5nIHRoZSBmZCBmcm9tIHRoYXQsIGFuZCBj YWxsaW5nCisgICAgIF9mdXRpbWUgb24gdGhhdCBmZC4KKyAKKy0gICAgd2UgY291bGQgY2FsbCBT ZXRGaWxlVGltZSgpIHdpdGggdGhlIEhBTkRMRSwgYnV0IHRoZXJlIGFyZSBxdWlya3Mgd2l0aCAK KysgICAgd2UgY291bGQgY2FsbCBTZXRGaWxlVGltZSgpIHdpdGggdGhlIEhBTkRMRSwgYnV0IHRo ZXJlIGFyZSBxdWlya3Mgd2l0aAorICAgICBEU1QgdGhhdCByZXN1bHQgaW4gdGhlIHRpbWUgcmV0 dXJuZWQgYnkgc3RhdCgpIGJlaW5nIGRpZmZlcmVudCB0aGFuIHRoZQorICAgICBzZXQgdGltZSBk ZXBlbmRpbmcgb24gdGhlIGRhdGUgYW5kIGN1cnJlbnQgRFNUIHN0YXRlLiAgdGhlIHBlcmwgbW9k dWxlCisgICAgIFdpbjMyLVVUQ0ZpbGVUaW1lIGRvY3VtZW50cyB0aGF0IGJpdCBvZiBmdW4uCisg Ki8KKy0gICAgCistc3RhdGljIEJPT0wgCisrCisrc3RhdGljIEJPT0wKKyB1dGltZV93aW4oCisg ICAgIGNvbnN0IGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsCisgICAgIHN0cnVj dCB1dGltYnVmICogICAgICAgICAgICAgICAgICAgIHVidWYpCitAQCAtMTY0Myw3ICsxNjQzLDcg QEAgdXRpbWVfd2luKAorICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy YzsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQ7CisgICAgIGhG aWxlID0gQ3JlYXRlRmlsZSgKKy0gICAgICAgIHBhdGgsIEZJTEVfV1JJVEVfQVRUUklCVVRFUywg RklMRV9TSEFSRV9XUklURSwgMCwgCisrICAgICAgICBwYXRoLCBGSUxFX1dSSVRFX0FUVFJJQlVU RVMsIEZJTEVfU0hBUkVfV1JJVEUsIDAsCisgICAgICAgICBPUEVOX0VYSVNUSU5HLCBGSUxFX0ZM QUdfQkFDS1VQX1NFTUFOVElDUywgMCk7CisgICAgIGlmIChoRmlsZSA9PSBJTlZBTElEX0hBTkRM RV9WQUxVRSkKKyAgICAgeworQEAgLTE2NzYsNyArMTY3Niw3IEBAIGdsb2J1c19sX2dmc19maWxl X3V0aW1lKAorIAorICNpZmRlZiBXSU4zMgorICAgICByYyA9IHV0aW1lX3dpbihwYXRobmFtZSwg JnVidWYpOworLSNlbHNlICAgCisrI2Vsc2UKKyAgICAgcmMgPSB1dGltZShwYXRobmFtZSwgJnVi dWYpOworICNlbmRpZgorICAgICBpZihyYyAhPSAwKQorQEAgLTE2ODQsMTUgKzE2ODQsMTUgQEAg Z2xvYnVzX2xfZ2ZzX2ZpbGVfdXRpbWUoCisgICAgICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJv clN5c3RlbUVycm9yKCJ1dGltZSIsIGVycm5vKTsKKyAgICAgICAgIGdvdG8gZXJyb3I7CisgICAg IH0KKy0gICAgCisrCisgICAgIGlmKG9wKQorICAgICB7CisgICAgICAgICBnbG9idXNfZ3JpZGZ0 cF9zZXJ2ZXJfZmluaXNoZWRfY29tbWFuZChvcCwgR0xPQlVTX1NVQ0NFU1MsIE5VTEwpOworICAg ICB9CistICAgIAorKworICAgICBHbG9idXNHRlNGaWxlRGVidWdFeGl0KCk7CisgICAgIHJldHVy biBHTE9CVVNfU1VDQ0VTUzsKKy0gICAgCisrCisgZXJyb3I6CisgICAgIEdsb2J1c0dGU0ZpbGVE ZWJ1Z0V4aXRXaXRoRXJyb3IoKTsKKyAgICAgcmV0dXJuIHJlc3VsdDsKK0BAIC0xNzE2LDEyICsx NzE2LDEyIEBAIGdsb2J1c19sX2dmc19maWxlX3N5bWxpbmsoCisgICAgICAgICByZXN1bHQgPSBH bG9idXNHRlNFcnJvclN5c3RlbUVycm9yKCJzeW1saW5rIiwgZXJybm8pOworICAgICAgICAgZ290 byBlcnJvcjsKKyAgICAgfQorLSAgICAKKysKKyAgICAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2Zp bmlzaGVkX2NvbW1hbmQob3AsIEdMT0JVU19TVUNDRVNTLCBOVUxMKTsKKy0gICAgICAgIAorKwor ICAgICBHbG9idXNHRlNGaWxlRGVidWdFeGl0KCk7CisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VT UzsKKy0gICAgCisrCisgZXJyb3I6CisgICAgIEdsb2J1c0dGU0ZpbGVEZWJ1Z0V4aXRXaXRoRXJy b3IoKTsKKyAgICAgcmV0dXJuIHJlc3VsdDsKK0BAIC0xNzQ1LDEyICsxNzQ1LDEyIEBAIGdsb2J1 c19sX2dmc19maWxlX2NobW9kKAorICAgICAgICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JTeXN0 ZW1FcnJvcigiY2htb2QiLCBlcnJubyk7CisgICAgICAgICBnb3RvIGVycm9yOworICAgICB9Cist ICAgIAorKworICAgICBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmluaXNoZWRfY29tbWFuZChvcCwg R0xPQlVTX1NVQ0NFU1MsIE5VTEwpOworLSAgICAgICAgCisrCisgICAgIEdsb2J1c0dGU0ZpbGVE ZWJ1Z0V4aXQoKTsKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworLSAgICAKKysKKyBlcnJv cjoKKyAgICAgR2xvYnVzR0ZTRmlsZURlYnVnRXhpdFdpdGhFcnJvcigpOworICAgICByZXR1cm4g cmVzdWx0OworQEAgLTE3NTksMTEgKzE3NTksMTEgQEAgZXJyb3I6Cisgc3RhdGljCisgdm9pZAor IGdsb2J1c19sX2dmc19maWxlX2Nrc21fcmVhZF9jYigKKy0gICAgZ2xvYnVzX3hpb19oYW5kbGVf dCAgICAgICAgICAgICAgICAgaGFuZGxlLCAKKysgICAgZ2xvYnVzX3hpb19oYW5kbGVfdCAgICAg ICAgICAgICAgICAgaGFuZGxlLAorICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAg ICAgICByZXN1bHQsCisgICAgIGdsb2J1c19ieXRlX3QgKiAgICAgICAgICAgICAgICAgICAgIGJ1 ZmZlciwKKyAgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgbGVuLAorLSAg ICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICBuYnl0ZXMsIAorKyAgICBnbG9i dXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICBuYnl0ZXMsCisgICAgIGdsb2J1c194aW9f ZGF0YV9kZXNjcmlwdG9yX3QgICAgICAgIGRhdGFfZGVzYywKKyAgICAgdm9pZCAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdXNlcl9hcmcpCisgeworQEAgLTE3NzcsMTEgKzE3NzcsMTEg QEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfY2tzbV9yZWFkX2NiKAorICAgICB1bnNpZ25lZCBjaGFyICAg ICAgICAgICAgICAgICAgICAgICBzaGFbU0hBNTEyX0RJR0VTVF9MRU5HVEhdOworICAgICBjaGFy ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFzdW1bU0hBNTEyX0RJR0VTVF9MRU5H VEggKiAyICsgMV0gPSB7MH07CisgICAgIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFkbGVyMzJfaHVtYW5bMipzaXplb2YodWludDMyX3QpKzFdOworLSAgICBpbnQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpOyAgICAKKysgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaTsKKyAKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9nZnNf ZmlsZV9ja3NtX3JlYWRfY2IpOworICAgICBHbG9idXNHRlNGaWxlRGVidWdFbnRlcigpOworLSAg ICAKKysKKyAgICAgbW9uaXRvciA9IChnbG9idXNfbF9nZnNfZmlsZV9ja3NtX21vbml0b3JfdCAq KSB1c2VyX2FyZzsKKyAKKyAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorQEAgLTE3 OTYsMTEgKzE3OTYsMTEgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfY2tzbV9yZWFkX2NiKAorICAgICAg ICAgICAgICAgICAiY2hlY2tzdW0gcmVhZCBjYWxsYmFjayIsIHJlc3VsdCk7CisgICAgICAgICAg ICAgZ290byBlcnJvcl9yZWFkOworICAgICAgICAgfQorLSAgICB9ICAgICAgICAKKysgICAgfQor ICAgICBpZihtb25pdG9yLT5sZW5ndGggPj0gMCkKKyAgICAgeworICAgICAgICAgbW9uaXRvci0+ cmVhZF9sZWZ0IC09IG5ieXRlczsKKy0gICAgICAgIG1vbml0b3ItPmNvdW50ID0gKG1vbml0b3It PnJlYWRfbGVmdCA+IG1vbml0b3ItPmJsb2NrX3NpemUpID8gCisrICAgICAgICBtb25pdG9yLT5j b3VudCA9IChtb25pdG9yLT5yZWFkX2xlZnQgPiBtb25pdG9yLT5ibG9ja19zaXplKSA/CisgICAg ICAgICAgICAgbW9uaXRvci0+YmxvY2tfc2l6ZSA6IG1vbml0b3ItPnJlYWRfbGVmdDsKKyAgICAg ICAgIGlmKG1vbml0b3ItPnJlYWRfbGVmdCA9PSAwKQorICAgICAgICAgeworQEAgLTE4MzUsMTAg KzE4MzUsMTAgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfY2tzbV9yZWFkX2NiKAorICAgICAgICAgaWYo bW9uaXRvci0+c2VuZF9tYXJrZXIpCisgICAgICAgICB7CisgICAgICAgICAgICAgbW9uaXRvci0+ c2VuZF9tYXJrZXIgPSBHTE9CVVNfRkFMU0U7CistICAgICAgICAgICAgCisrCisgICAgICAgICAg ICAgY2hhciAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50WzEyOF07CisgICAgICAgICAgICAg c3ByaW50Zihjb3VudCwgIiUiR0xPQlVTX09GRl9UX0ZPUk1BVCwgbW9uaXRvci0+dG90YWxfYnl0 ZXMpOworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIGdsb2J1c19ncmlkZnRwX3NlcnZl cl9pbnRlcm1lZGlhdGVfY29tbWFuZCgKKyAgICAgICAgICAgICAgICAgbW9uaXRvci0+b3AsIEdM T0JVU19TVUNDRVNTLCBjb3VudCk7CisgICAgICAgICB9CitAQCAtMTg3NCw3ICsxODc0LDcgQEAg Z2xvYnVzX2xfZ2ZzX2ZpbGVfY2tzbV9yZWFkX2NiKAorICAgICAgICAgICAgICAgICBOVUxMKTsK KyAgICAgICAgICAgICBtb25pdG9yLT5tYXJrZXJfaGFuZGxlID0gR0xPQlVTX05VTExfSEFORExF OworICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBnbG9idXNfeGlvX3JlZ2lzdGVy X2Nsb3NlKAorICAgICAgICAgICAgIGhhbmRsZSwKKyAgICAgICAgICAgICBOVUxMLAorQEAgLTE5 MzcsMjIgKzE5MzcsMjIgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfY2tzbV9yZWFkX2NiKAorICAgICAg ICAgeworICAgICAgICAgICAgIGdsb2J1c19ncmlkZnRwX3NlcnZlcl9maW5pc2hlZF9jb21tYW5k KAorICAgICAgICAgICAgICAgICBtb25pdG9yLT5vcCwgR0xPQlVTX1NVQ0NFU1MsIGNrc21wdHIp OworLSAgICAgICAgfSAgIAorLSAgICAgICAgCisrICAgICAgICB9CisrCisgICAgICAgICBnbG9i dXNfZnJlZShtb25pdG9yKTsKKy0gICAgICAgICAgICAKKy0gICAgfSAgICAgICAgCisrCisrICAg IH0KKyAgICAgR2xvYnVzR0ZTRmlsZURlYnVnRXhpdCgpOworICAgICByZXR1cm47CistICAgICAg ICAKKysKKyAKKyBlcnJvcl9yZWdpc3RlcjoKKyBlcnJvcl9yZWFkOgorICAgICBnbG9idXNfeGlv X3JlZ2lzdGVyX2Nsb3NlKGhhbmRsZSwgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAgIGhhbmRsZSA9 IE5VTEw7CistICAgIGdsb2J1c19ncmlkZnRwX3NlcnZlcl9maW5pc2hlZF9jb21tYW5kKG1vbml0 b3ItPm9wLCByZXN1bHQsIE5VTEwpOyAgICAKKysgICAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2Zp bmlzaGVkX2NvbW1hbmQobW9uaXRvci0+b3AsIHJlc3VsdCwgTlVMTCk7CisgICAgIGdsb2J1c19m cmVlKG1vbml0b3IpOworLSAgICAKKysKKyAgICAgR2xvYnVzR0ZTRmlsZURlYnVnRXhpdFdpdGhF cnJvcigpOworIH0KKyAKK0BAIC0xOTYyLDcgKzE5NjIsNyBAQCBnbG9idXNfbF9nZnNfZmlsZV9t YXJrZXJfY2IoCisgICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJf YXJnKQorIHsKKyAgICAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfY2tzbV9tb25pdG9yX3QgKiAgbW9uaXRv cjsKKy0gICAgCisrCisgICAgIG1vbml0b3IgPSAoZ2xvYnVzX2xfZ2ZzX2ZpbGVfY2tzbV9tb25p dG9yX3QgKikgdXNlcl9hcmc7CisgICAgIG1vbml0b3ItPnNlbmRfbWFya2VyID0gR0xPQlVTX1RS VUU7CisgfQorQEAgLTE5NzMsMjAgKzE5NzMsMjAgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfb3Blbl9j a3NtX2NiKAorICAgICBnbG9idXNfeGlvX2hhbmRsZV90ICAgICAgICAgICAgICAgICBoYW5kbGUs CisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwKKyAgICAg dm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9hcmcpCisteyAgCisrewor ICAgICBnbG9idXNfbF9nZnNfZmlsZV9ja3NtX21vbml0b3JfdCAqICBtb25pdG9yOworICAgICBH bG9idXNHRlNOYW1lKGdsb2J1c19sX2dmc19maWxlX29wZW5fY2tzbV9jYik7CisgICAgIEdsb2J1 c0dGU0ZpbGVEZWJ1Z0VudGVyKCk7CistICAgIAorKworICAgICBtb25pdG9yID0gKGdsb2J1c19s X2dmc19maWxlX2Nrc21fbW9uaXRvcl90ICopIHVzZXJfYXJnOworIAorICAgICBpZihyZXN1bHQg IT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIHJlc3VsdCA9IEdsb2J1c0dGU0Vy cm9yV3JhcEZhaWxlZCgKKyAgICAgICAgICAgICAib3BlbiIsIHJlc3VsdCk7CistICAgICAgICBn b3RvIGVycm9yX29wZW47ICAKKy0gICAgfSAgCistICAgIAorKyAgICAgICAgZ290byBlcnJvcl9v cGVuOworKyAgICB9CisrCisgICAgIGlmKG1vbml0b3ItPm9wKQorICAgICB7CisgICAgICAgICBn bG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZ2V0X3VwZGF0ZV9pbnRlcnZhbCgKK0BAIC0xOTk3LDcgKzE5 OTcsNyBAQCBnbG9idXNfbF9nZnNfZmlsZV9vcGVuX2Nrc21fY2IoCisgICAgIHsKKyAgICAgICAg IGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlczsKKyAgICAgICAgIGdsb2J1 c19yZWx0aW1lX3QgICAgICAgICAgICAgICAgICAgIGRlbGF5OworLSAgICAgICAgCisrCisgICAg ICAgICBHbG9idXNUaW1lUmVsdGltZVNldChkZWxheSwgbW9uaXRvci0+bWFya2VyX2ZyZXEsIDAp OworICAgICAgICAgcmVzID0gZ2xvYnVzX2NhbGxiYWNrX3JlZ2lzdGVyX3BlcmlvZGljKAorICAg ICAgICAgICAgICZtb25pdG9yLT5tYXJrZXJfaGFuZGxlLAorQEAgLTIwMDcsMjEgKzIwMDcsMjEg QEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfb3Blbl9ja3NtX2NiKAorICAgICAgICAgICAgIG1vbml0b3Ip OworICAgICAgICAgaWYocmVzICE9IEdMT0JVU19TVUNDRVNTKQorICAgICAgICAgeworLSAgICAg ICAgICAgIAorKworICAgICAgICAgfQorICAgICB9CistICAgIAorKworICAgICBpZihtb25pdG9y LT5sZW5ndGggPj0gMCkKKyAgICAgeworICAgICAgICAgbW9uaXRvci0+cmVhZF9sZWZ0ID0gbW9u aXRvci0+bGVuZ3RoOworLSAgICAgICAgbW9uaXRvci0+Y291bnQgPSAobW9uaXRvci0+cmVhZF9s ZWZ0ID4gbW9uaXRvci0+YmxvY2tfc2l6ZSkgPyAKKysgICAgICAgIG1vbml0b3ItPmNvdW50ID0g KG1vbml0b3ItPnJlYWRfbGVmdCA+IG1vbml0b3ItPmJsb2NrX3NpemUpID8KKyAgICAgICAgICAg ICBtb25pdG9yLT5ibG9ja19zaXplIDogbW9uaXRvci0+cmVhZF9sZWZ0OworICAgICB9CisgICAg IGVsc2UKKyAgICAgeworICAgICAgICAgbW9uaXRvci0+Y291bnQgPSBtb25pdG9yLT5ibG9ja19z aXplOworICAgICB9CistICAgIAorKworICAgICBpZihtb25pdG9yLT5vZmZzZXQgPiAwKQorICAg ICB7CisgICAgICAgICByZXN1bHQgPSBnbG9idXNfeGlvX2hhbmRsZV9jbnRsKAorQEAgLTIwNTgs OCArMjA1OCw4IEBAIGdsb2J1c19sX2dmc19maWxlX29wZW5fY2tzbV9jYigKKyAgICAgeworICAg ICAgICAgbW9uaXRvci0+YWRsZXIzMmN0eCA9IGFkbGVyMzIoMCwgTlVMTCwgMCk7CisgICAgIH0K Ky0gICAgCistICAgIAorKworKworICAgICByZXN1bHQgPSBnbG9idXNfeGlvX3JlZ2lzdGVyX3Jl YWQoCisgICAgICAgICBoYW5kbGUsCisgICAgICAgICBtb25pdG9yLT5idWZmZXIsCitAQCAtMjA3 Nyw3ICsyMDc3LDcgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfb3Blbl9ja3NtX2NiKAorIAorICAgICBH bG9idXNHRlNGaWxlRGVidWdFeGl0KCk7CisgICAgIHJldHVybjsKKy0gICAgICAgIAorKworIGVy cm9yX3JlZ2lzdGVyOgorIGVycm9yX3NlZWs6CisgZXJyb3Jfb3BlbjoKK0BAIC0yMDkwLDkgKzIw OTAsOSBAQCBlcnJvcl9vcGVuOgorICAgICBlbHNlCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19n cmlkZnRwX3NlcnZlcl9maW5pc2hlZF9jb21tYW5kKG1vbml0b3ItPm9wLCByZXN1bHQsIE5VTEwp OworLSAgICB9ICAgCisrICAgIH0KKyAgICAgZ2xvYnVzX2ZyZWUobW9uaXRvcik7CistICAgIAor KworICAgICBHbG9idXNHRlNGaWxlRGVidWdFeGl0V2l0aEVycm9yKCk7CisgfQorIAorQEAgLTIx MTgsNyArMjExOCw3IEBAIGdsb2J1c19sX2dmc19maWxlX2Nrc20oCisgICAgIGludCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNrc21fdHlwZSA9IDA7CisgICAgIEdsb2J1c0dGU05h bWUoZ2xvYnVzX2xfZ2ZzX2ZpbGVfY2tzbSk7CisgICAgIEdsb2J1c0dGU0ZpbGVEZWJ1Z0VudGVy KCk7CistICAgIAorKworICAgICBpZihvZmZzZXQgPCAwKQorICAgICB7CisgICAgICAgICByZXN1 bHQgPSBHbG9idXNHRlNFcnJvckdlbmVyaWMoIkludmFsaWQgb2Zmc2V0LiIpOworQEAgLTIxODYs MTggKzIxODYsMTggQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfY2tzbSgKKyAgICAgICAgIHsKKyAgICAg ICAgICAgICBnbG9idXNfZ2ZzX2xvZ19tZXNzYWdlKAorICAgICAgICAgICAgICAgICBHTE9CVVNf R0ZTX0xPR19XQVJOLAorLSAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIHNldCBmaWxlIGFjY2Vz cyB0aW1lb3V0IG9mICVkIHNlY29uZHNcbiIsIAorKyAgICAgICAgICAgICAgICAiVW5hYmxlIHRv IHNldCBmaWxlIGFjY2VzcyB0aW1lb3V0IG9mICVkIHNlY29uZHNcbiIsCisgICAgICAgICAgICAg ICAgIHRpbWVvdXQpOworICAgICAgICAgfQorICAgICB9CistICAgIAorKworICAgICByZXN1bHQg PSBnbG9idXNfeGlvX3N0YWNrX2luaXQoJnN0YWNrLCBOVUxMKTsKKyAgICAgaWYocmVzdWx0ICE9 IEdMT0JVU19TVUNDRVNTKQorICAgICB7CisgICAgICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJv cldyYXBGYWlsZWQoImdsb2J1c194aW9fc3RhY2tfaW5pdCIsIHJlc3VsdCk7CisgICAgICAgICBn b3RvIGVycm9yX3N0YWNrOworICAgICB9CistICAgIAorKworICAgICByZXN1bHQgPSBnbG9idXNf eGlvX3N0YWNrX3B1c2hfZHJpdmVyKHN0YWNrLCBnbG9idXNfbF9nZnNfZmlsZV9kcml2ZXIpOwor ICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKK0BAIC0yMjIyLDcgKzIy MjIsNyBAQCBnbG9idXNfbF9nZnNfZmlsZV9ja3NtKAorICAgICAgICAgcmVzdWx0ID0gR2xvYnVz R0ZTRXJyb3JNZW1vcnkoImNoZWNrc3VtIGJ1ZmZlciIpOworICAgICAgICAgZ290byBlcnJvcl9t ZW07CisgICAgIH0KKy0gICAgCisrCisgICAgIG1vbml0b3ItPm9wID0gb3A7CisgICAgIG1vbml0 b3ItPm9mZnNldCA9IG9mZnNldDsKKyAgICAgbW9uaXRvci0+bGVuZ3RoID0gbGVuZ3RoOworQEAg LTIyNDYsNyArMjI0Niw3IEBAIGdsb2J1c19sX2dmc19maWxlX2Nrc20oCisgCisgICAgIGdsb2J1 c194aW9fYXR0cl9kZXN0cm95KGF0dHIpOworICAgICBnbG9idXNfeGlvX3N0YWNrX2Rlc3Ryb3ko c3RhY2spOworLSAgICAKKysKKyAgICAgR2xvYnVzR0ZTRmlsZURlYnVnRXhpdCgpOworICAgICBy ZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgCitAQCAtMjI1NCwyMiArMjI1NCwyMiBAQCBlcnJvcl9y ZWdpc3RlcjoKKyAgICAgZ2xvYnVzX3hpb19yZWdpc3Rlcl9jbG9zZShmaWxlX2hhbmRsZSwgTlVM TCwgTlVMTCwgTlVMTCk7CisgICAgIGZpbGVfaGFuZGxlID0gTlVMTDsKKyAgICAgZ2xvYnVzX2Zy ZWUobW9uaXRvcik7CistICAgIAorKworIGVycm9yX21lbToKKyBlcnJvcl9jcmVhdGU6CisgZXJy b3JfcHVzaDoKKyAgICAgZ2xvYnVzX3hpb19zdGFja19kZXN0cm95KHN0YWNrKTsKKy0gICAgCisr CisgZXJyb3Jfc3RhY2s6CistZXJyb3JfY250bDogICAgCisrZXJyb3JfY250bDoKKyAgICAgZ2xv YnVzX3hpb19hdHRyX2Rlc3Ryb3koYXR0cik7CistICAgIAorKworIGVycm9yX2F0dHI6CisgYWxn X2Vycm9yOgorIHBhcmFtX2Vycm9yOgorICAgICBHbG9idXNHRlNGaWxlRGVidWdFeGl0V2l0aEVy cm9yKCk7CisgICAgIHJldHVybiByZXN1bHQ7CistfSAgICAgCisrfQorIAorIHN0YXRpYworIHZv aWQKK0BAIC0yMzI0LDE1ICsyMzI0LDE1IEBAIGdsb2J1c19sX2dmc19maWxlX2NvbW1hbmQoCisg ICAgICAgICBicmVhazsKKyAgICAgICBjYXNlIEdMT0JVU19HRlNfQ01EX0NLU006CisgICAgICAg ICByZXN1bHQgPSBnbG9idXNfbF9nZnNfZmlsZV9ja3NtKAorLSAgICAgICAgICAgIG9wLCAKKy0g ICAgICAgICAgICBjbWRfaW5mby0+cGF0aG5hbWUsIAorKyAgICAgICAgICAgIG9wLAorKyAgICAg ICAgICAgIGNtZF9pbmZvLT5wYXRobmFtZSwKKyAgICAgICAgICAgICBjbWRfaW5mby0+Y2tzbV9h bGcsCisgICAgICAgICAgICAgY21kX2luZm8tPmNrc21fb2Zmc2V0LAorICAgICAgICAgICAgIGNt ZF9pbmZvLT5ja3NtX2xlbmd0aCwKKyAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgIE5V TEwpOworICAgICAgICAgYnJlYWs7CistICAgICAgCisrCisgICAgICAgZGVmYXVsdDoKKyAgICAg ICAgIHJlc3VsdCA9IEdMT0JVU19GQUlMVVJFOworICAgICAgICAgYnJlYWs7CitAQCAtMjM0Miwx MiArMjM0MiwxMiBAQCBnbG9idXNfbF9nZnNfZmlsZV9jb21tYW5kKAorICAgICB7CisgICAgICAg ICBnb3RvIGVycm9yOworICAgICB9CistICAgIAorKworICAgICBHbG9idXNHRlNGaWxlRGVidWdF eGl0KCk7CisgICAgIHJldHVybjsKKyAKKyBlcnJvcjoKKy0gICAgZ2xvYnVzX2dyaWRmdHBfc2Vy dmVyX2ZpbmlzaGVkX2NvbW1hbmQob3AsIHJlc3VsdCwgTlVMTCk7ICAgIAorKyAgICBnbG9idXNf Z3JpZGZ0cF9zZXJ2ZXJfZmluaXNoZWRfY29tbWFuZChvcCwgcmVzdWx0LCBOVUxMKTsKKyAKKyAg ICAgR2xvYnVzR0ZTRmlsZURlYnVnRXhpdFdpdGhFcnJvcigpOworIH0KK0BAIC0yMzcxLDI5ICsy MzcxLDI5IEBAIHN0YXRpYworIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19sX2dmc19maWxlX2Rp c3BhdGNoX3dyaXRlKAorICAgICBnbG9idXNfbF9maWxlX21vbml0b3JfdCAqICAgICAgICAgICBt b25pdG9yKTsKKy0gICAgCisrCisgc3RhdGljCisgdm9pZAorIGdsb2J1c19sX2dmc19maWxlX3dy aXRlX2NiKAorLSAgICBnbG9idXNfeGlvX2hhbmRsZV90ICAgICAgICAgICAgICAgICB4aW9faGFu ZGxlLCAKKysgICAgZ2xvYnVzX3hpb19oYW5kbGVfdCAgICAgICAgICAgICAgICAgeGlvX2hhbmRs ZSwKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LAorICAg ICBnbG9idXNfYnl0ZV90ICogICAgICAgICAgICAgICAgICAgICBidWZmZXIsCisgICAgIGdsb2J1 c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgIGxlbiwKKy0gICAgZ2xvYnVzX3NpemVfdCAg ICAgICAgICAgICAgICAgICAgICAgbmJ5dGVzLCAKKysgICAgZ2xvYnVzX3NpemVfdCAgICAgICAg ICAgICAgICAgICAgICAgbmJ5dGVzLAorICAgICBnbG9idXNfeGlvX2RhdGFfZGVzY3JpcHRvcl90 ICAgICAgICBkYXRhX2Rlc2MsCisgICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVzZXJfYXJnKQorIHsKKyAgICAgZ2xvYnVzX2xfZmlsZV9tb25pdG9yX3QgKiAgICAgICAg ICAgbW9uaXRvcjsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9nZnNfZmlsZV93cml0ZV9j Yik7CisgICAgIEdsb2J1c0dGU0ZpbGVEZWJ1Z0VudGVyKCk7CistICAgIAorKworICAgICBtb25p dG9yID0gKGdsb2J1c19sX2ZpbGVfbW9uaXRvcl90ICopIHVzZXJfYXJnOworLSAgICAKKysKKyAg ICAgZ2xvYnVzX211dGV4X2xvY2soJm1vbml0b3ItPmxvY2spOworLSAgICB7IAorKyAgICB7Cisg ICAgICAgICBtb25pdG9yLT5wZW5kaW5nX3dyaXRlcy0tOworICAgICAgICAgZ2xvYnVzX2dyaWRm dHBfc2VydmVyX3VwZGF0ZV9ieXRlc193cml0dGVuKAorLSAgICAgICAgICAgIG1vbml0b3ItPm9w LCAKKysgICAgICAgICAgICBtb25pdG9yLT5vcCwKKyAgICAgICAgICAgICBtb25pdG9yLT5maWxl X29mZnNldCwKKyAgICAgICAgICAgICBuYnl0ZXMpOworICAgICAgICAgbW9uaXRvci0+ZmlsZV9v ZmZzZXQgKz0gbmJ5dGVzOworQEAgLTI0MDYsNyArMjQwNiw3IEBAIGdsb2J1c19sX2dmc19maWxl X3dyaXRlX2NiKAorICAgICAgICAgeworICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAg ICB9CistICAgICAgICAKKysKKyAgICAgICAgIGlmKCFtb25pdG9yLT5lb2YpCisgICAgICAgICB7 CisgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2dyaWRmdHBfc2VydmVyX3JlZ2lzdGVyX3Jl YWQoCitAQCAtMjQyMSwxNCArMjQyMSwxNCBAQCBnbG9idXNfbF9nZnNfZmlsZV93cml0ZV9jYigK KyAgICAgICAgICAgICAgICAgICAgICJnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfcmVnaXN0ZXJfcmVh ZCIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAg fQorLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIG1vbml0b3ItPnBlbmRpbmdfcmVhZHMr KzsKKyAgICAgICAgIH0KKyAgICAgICAgIGVsc2UKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBn bG9idXNfbWVtb3J5X3B1c2hfbm9kZSgmbW9uaXRvci0+bWVtLCBidWZmZXIpOworICAgICAgICAg fQorLSAgICAgICAgCisrCisgICAgICAgICByZXN1bHQgPSBnbG9idXNfbF9nZnNfZmlsZV9kaXNw YXRjaF93cml0ZShtb25pdG9yKTsKKyAgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VT UykKKyAgICAgICAgIHsKK0BAIC0yNDM2LDcgKzI0MzYsNyBAQCBnbG9idXNfbF9nZnNfZmlsZV93 cml0ZV9jYigKKyAgICAgICAgICAgICAgICAgImdsb2J1c19sX2dmc19maWxlX2Rpc3BhdGNoX3dy aXRlIiwgcmVzdWx0KTsKKyAgICAgICAgICAgICBnb3RvIGVycm9yX2Rpc3BhdGNoOworICAgICAg ICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBpZihtb25pdG9yLT5wZW5kaW5nX3JlYWRzID09 IDAgJiYgbW9uaXRvci0+cGVuZGluZ193cml0ZXMgPT0gMCkKKyAgICAgICAgIHsKKyAgICAgICAg ICAgICBnbG9idXNfYXNzZXJ0KG1vbml0b3ItPmVvZiB8fCBtb25pdG9yLT5hYm9ydGVkKTsKK0BA IC0yNDUwLDcgKzI0NTAsNyBAQCBnbG9idXNfbF9nZnNfZmlsZV93cml0ZV9jYigKKyAgICAgICAg IH0KKyAgICAgfQorICAgICAvKiBhbHJlYWR5IHVubG9ja2VkICovCistICAgIAorKworICAgICBH bG9idXNHRlNGaWxlRGVidWdFeGl0KCk7CisgICAgIHJldHVybjsKKyAKK0BAIC0yNDYxLDcgKzI0 NjEsNyBAQCBlcnJvcl9kaXNwYXRjaDoKKyAgICAgeworICAgICAgICAgLyogdGhlcmUgYXJlIHN0 aWxsIG91dHN0YW5kaW5nIGNhbGxiYWNrcywgd2FpdCBmb3IgdGhlbSAqLworICAgICAgICAgZ2xv YnVzX211dGV4X3VubG9jaygmbW9uaXRvci0+bG9jayk7CistICAgIAorKworICAgICAgICAgR2xv YnVzR0ZTRmlsZURlYnVnRXhpdFdpdGhFcnJvcigpOworICAgICAgICAgcmV0dXJuOworICAgICB9 CitAQCAtMjQ4Miw3ICsyNDgyLDcgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfZGlzcGF0Y2hfd3JpdGUo CisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsKKyAgICAg R2xvYnVzR0ZTTmFtZShnbG9idXNfbF9nZnNfZmlsZV9kaXNwYXRjaF93cml0ZSk7CisgICAgIEds b2J1c0dGU0ZpbGVEZWJ1Z0VudGVyKCk7CistICAgIAorKworICAgICBpZihtb25pdG9yLT5wZW5k aW5nX3dyaXRlcyA9PSAwICYmICFtb25pdG9yLT5hYm9ydGVkKQorICAgICB7CisgICAgICAgICBi dWZfaW5mbyA9IChnbG9idXNfbF9idWZmZXJfaW5mb190ICopCitAQCAtMjQ5MCw3ICsyNDkwLDcg QEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfZGlzcGF0Y2hfd3JpdGUoCisgICAgICAgICBpZihidWZfaW5m bykKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpZihidWZfaW5mby0+b2Zmc2V0ICE9IG1vbml0 b3ItPmZpbGVfb2Zmc2V0KQorLSAgICAgICAgICAgIHsgCisrICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICBnbG9idXNfb2ZmX3QgICAgICAgICAgICBzZWVrX3RtcDsKKyAKKyAgICAgICAg ICAgICAgICAgbW9uaXRvci0+ZmlsZV9vZmZzZXQgPSBidWZfaW5mby0+b2Zmc2V0OworQEAgLTI1 MDksNyArMjUwOSw3IEBAIGdsb2J1c19sX2dmc19maWxlX2Rpc3BhdGNoX3dyaXRlKAorICAgICAg ICAgICAgICAgICAgICAgZ290byBlcnJvcl9zZWVrOworICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgfQorLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1 c194aW9fcmVnaXN0ZXJfd3JpdGUoCisgICAgICAgICAgICAgICAgIG1vbml0b3ItPmZpbGVfaGFu ZGxlLAorICAgICAgICAgICAgICAgICBidWZfaW5mby0+YnVmZmVyLAorQEAgLTI1MjQsMTMgKzI1 MjQsMTMgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfZGlzcGF0Y2hfd3JpdGUoCisgICAgICAgICAgICAg ICAgICAgICAiZ2xvYnVzX3hpb19yZWdpc3Rlcl93cml0ZSIsIHJlc3VsdCk7CisgICAgICAgICAg ICAgICAgIGdvdG8gZXJyb3JfcmVnaXN0ZXI7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAg IAorKworICAgICAgICAgICAgIG1vbml0b3ItPnBlbmRpbmdfd3JpdGVzKys7CistICAgICAgICAg ICAgCisrCisgICAgICAgICAgICAgZ2xvYnVzX2ZyZWUoYnVmX2luZm8pOworICAgICAgICAgfQor ICAgICB9CistICAgIAorKworICAgICBHbG9idXNHRlNGaWxlRGVidWdFeGl0KCk7CisgICAgIHJl dHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAKK0BAIC0yNTU3LDcgKzI1NTcsNyBAQCBnbG9idXNfbF9n ZnNfZmlsZV91cGRhdGVfY29uY3VycmVuY3koCisgICAgIGludCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGV4dHJhOworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dmc19maWxl X3VwZGF0ZV9jb25jdXJyZW5jeSk7CisgICAgIEdsb2J1c0dGU0ZpbGVEZWJ1Z0VudGVyKCk7Cist ICAgIAorKworICAgICBpZighbW9uaXRvci0+ZW9mKQorICAgICB7CisgICAgICAgICBtb25pdG9y LT5jb25jdXJyZW5jeV9jaGVjayA9IG1vbml0b3ItPmNvbmN1cnJlbmN5X2NoZWNrX2ludGVydmFs OworQEAgLTI1NjYsMTYgKzI1NjYsMTYgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfdXBkYXRlX2NvbmN1 cnJlbmN5KAorICAgICAgICAgeworICAgICAgICAgICAgIG1vbml0b3ItPmNvbmN1cnJlbmN5X2No ZWNrX2ludGVydmFsID0gMTAyNDsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAg Z2xvYnVzX2dyaWRmdHBfc2VydmVyX2dldF9vcHRpbWFsX2NvbmN1cnJlbmN5KAorICAgICAgICAg ICAgIG1vbml0b3ItPm9wLCAmb3B0aW1hbF9jb3VudCk7CisgICAgICAgICBleHRyYSA9IG9wdGlt YWxfY291bnQgLSBtb25pdG9yLT5vcHRpbWFsX2NvdW50OworLSAgICAgICAgICAgIAorKworICAg ICAgICAgbW9uaXRvci0+b3B0aW1hbF9jb3VudCA9IG9wdGltYWxfY291bnQ7CisgICAgICAgICB3 aGlsZShleHRyYS0tID4gMCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBnbG9idXNfYnl0ZV90 ICogICAgICAgICAgICAgYnVmZmVyOworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIGJ1 ZmZlciA9IGdsb2J1c19tZW1vcnlfcG9wX25vZGUoJm1vbml0b3ItPm1lbSk7CisgICAgICAgICAg ICAgcmVzdWx0ID0gZ2xvYnVzX2dyaWRmdHBfc2VydmVyX3JlZ2lzdGVyX3JlYWQoCisgICAgICAg ICAgICAgICAgIG1vbml0b3ItPm9wLAorQEAgLTI1OTAsMTEgKzI1OTAsMTEgQEAgZ2xvYnVzX2xf Z2ZzX2ZpbGVfdXBkYXRlX2NvbmN1cnJlbmN5KAorICAgICAgICAgICAgICAgICAgICAgImdsb2J1 c19ncmlkZnRwX3NlcnZlcl9yZWdpc3Rlcl9yZWFkIiwgcmVzdWx0KTsKKyAgICAgICAgICAgICAg ICAgZ290byBlcnJvcl9yZWdpc3RlcjsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgCisr CisgICAgICAgICAgICAgbW9uaXRvci0+cGVuZGluZ19yZWFkcysrOworICAgICAgICAgfQorICAg ICB9CistICAgIAorKworICAgICBHbG9idXNHRlNGaWxlRGVidWdFeGl0KCk7CisgICAgIHJldHVy bjsKKyAKK0BAIC0yNjE4LDkgKzI2MTgsOSBAQCBnbG9idXNfbF9nZnNfZmlsZV9zZXJ2ZXJfcmVh ZF9jYigKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmM7CisgICAg IEdsb2J1c0dGU05hbWUoZ2xvYnVzX2xfZ2ZzX2ZpbGVfc2VydmVyX3JlYWRfY2IpOworICAgICBH bG9idXNHRlNGaWxlRGVidWdFbnRlcigpOworLSAgICAKKysKKyAgICAgbW9uaXRvciA9IChnbG9i dXNfbF9maWxlX21vbml0b3JfdCAqKSB1c2VyX2FyZzsKKy0gICAgCisrCisgICAgIGdsb2J1c19t dXRleF9sb2NrKCZtb25pdG9yLT5sb2NrKTsKKyAgICAgeworICAgICAgICAgbW9uaXRvci0+cGVu ZGluZ19yZWFkcy0tOworQEAgLTI2MzIsMjAgKzI2MzIsMjAgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVf c2VydmVyX3JlYWRfY2IoCisgICAgICAgICB7CisgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAg ICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgaWYoZW9mKQorICAgICAgICAgeworICAg ICAgICAgICAgIG1vbml0b3ItPmVvZiA9IEdMT0JVU19UUlVFOworICAgICAgICAgfQorLSAgICAg ICAgCistICAgICAgICBidWZfaW5mbyA9IChnbG9idXNfbF9idWZmZXJfaW5mb190ICopIAorKwor KyAgICAgICAgYnVmX2luZm8gPSAoZ2xvYnVzX2xfYnVmZmVyX2luZm9fdCAqKQorICAgICAgICAg ICAgIGdsb2J1c19tYWxsb2Moc2l6ZW9mKGdsb2J1c19sX2J1ZmZlcl9pbmZvX3QpKTsKKyAgICAg ICAgIGlmKCFidWZfaW5mbykKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBtb25pdG9yLT5lcnJv ciA9IEdsb2J1c0dGU0Vycm9yT2JqTWVtb3J5KCJidWZfaW5mbyIpOworICAgICAgICAgICAgIGdv dG8gZXJyb3JfYWxsb2M7CisgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAgIC8qIFhY WCBvZmZzZXQgbWF5IG5lZWQgc29tZSBpbnRlcnByZXRhdGlvbiBoZXJlIGRlcGVuZGluZyBvbiB0 eXBlIG9mCisgICAgICAgICAgKiB0cmFuc2ZlciAobWF5IG5lZWQgdG8gcmVtZW1iZXIgb3JpZ2lu YWwgc3RhcnQgb2Zmc2V0KQorICAgICAgICAgICovCitAQCAtMjY1Niw4ICsyNjU2LDggQEAgZ2xv YnVzX2xfZ2ZzX2ZpbGVfc2VydmVyX3JlYWRfY2IoCisgICAgICAgICBpZihtb25pdG9yLT5jb25j dXJyZW5jeV9jaGVjayA9PSAwICYmICFlb2YpCisgICAgICAgICB7CisgICAgICAgICAgICAgZ2xv YnVzX2xfZ2ZzX2ZpbGVfdXBkYXRlX2NvbmN1cnJlbmN5KG1vbml0b3IpOworLSAgICAgICAgfSAg ICAgICAgCistICAgICAgICAKKysgICAgICAgIH0KKysKKyAgICAgICAgIHJjID0gZ2xvYnVzX3By aW9yaXR5X3FfZW5xdWV1ZSgKKyAgICAgICAgICAgICAmbW9uaXRvci0+cXVldWUsIGJ1Zl9pbmZv LCBidWZfaW5mbyk7CisgICAgICAgICBpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKK0BAIC0yNjc3 LDE1ICsyNjc3LDE1IEBAIGdsb2J1c19sX2dmc19maWxlX3NlcnZlcl9yZWFkX2NiKAorIAorICAg ICB9CisgICAgIGdsb2J1c19tdXRleF91bmxvY2soJm1vbml0b3ItPmxvY2spOworLSAgICAKKysK KyAgICAgR2xvYnVzR0ZTRmlsZURlYnVnRXhpdCgpOworICAgICByZXR1cm47CistICAgIAorKwor IGVycm9yX2VucXVldWU6CisgZXJyb3JfZGlzcGF0Y2g6CisgICAgIC8qIGNhbid0IGZyZWUgYnVm X2luZm8sIGl0cyBpbiBxdWV1ZSAqLworICAgICBnbG9idXNfZnJlZShidWZfaW5mbyk7CistICAg IAorKworIGVycm9yX2FsbG9jOgorIGVycm9yOgorICAgICBnbG9idXNfbWVtb3J5X3B1c2hfbm9k ZSgmbW9uaXRvci0+bWVtLCBidWZmZXIpOworQEAgLTI3MTMsNyArMjcxMyw3IEBAIGdsb2J1c19s X2dmc19maWxlX29wZW5fd3JpdGVfY2IoCisgICAgIGdsb2J1c19sX2ZpbGVfbW9uaXRvcl90ICog ICAgICAgICAgIG1vbml0b3I7CisgICAgIEdsb2J1c0dGU05hbWUoZ2xvYnVzX2xfZ2ZzX2ZpbGVf b3Blbl93cml0ZV9jYik7CisgICAgIEdsb2J1c0dGU0ZpbGVEZWJ1Z0VudGVyKCk7CistICAgIAor KworICAgICBtb25pdG9yID0gKGdsb2J1c19sX2ZpbGVfbW9uaXRvcl90ICopIHVzZXJfYXJnOwor ICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKK0BAIC0yNzI1LDE4ICsy NzI1LDE4IEBAIGdsb2J1c19sX2dmc19maWxlX29wZW5fd3JpdGVfY2IoCisgCisgICAgIGdsb2J1 c19ncmlkZnRwX3NlcnZlcl9iZWdpbl90cmFuc2ZlcigKKyAgICAgICAgIG1vbml0b3ItPm9wLCBH TE9CVVNfR0ZTX0VWRU5UX1RSQU5TRkVSX0FCT1JULCBtb25pdG9yKTsKKy0gICAgCisrCisgICAg IGdsb2J1c19tdXRleF9sb2NrKCZtb25pdG9yLT5sb2NrKTsKKyAgICAgeworICAgICAgICAgaW50 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWFsX2NvdW50OworICAgICAgICAgZ2xv YnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICBibG9ja19zaXplOworLSAgICAgICAgCisrCisg ICAgICAgICBvcHRpbWFsX2NvdW50ID0gbW9uaXRvci0+b3B0aW1hbF9jb3VudDsKKyAgICAgICAg IGJsb2NrX3NpemUgPSBtb25pdG9yLT5ibG9ja19zaXplOworICAgICAgICAgd2hpbGUob3B0aW1h bF9jb3VudC0tKQorICAgICAgICAgeworICAgICAgICAgICAgIGdsb2J1c19ieXRlX3QgKiAgICAg ICAgICAgICBidWZmZXI7CistICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgYnVmZmVyID0g Z2xvYnVzX21lbW9yeV9wb3Bfbm9kZSgmbW9uaXRvci0+bWVtKTsKKyAgICAgICAgICAgICByZXN1 bHQgPSBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfcmVnaXN0ZXJfcmVhZCgKKyAgICAgICAgICAgICAg ICAgbW9uaXRvci0+b3AsCitAQCAtMjc1MSwxMiArMjc1MSwxMiBAQCBnbG9idXNfbF9nZnNfZmls ZV9vcGVuX3dyaXRlX2NiKAorICAgICAgICAgICAgICAgICAgICAgImdsb2J1c19ncmlkZnRwX3Nl cnZlcl9yZWdpc3Rlcl9yZWFkIiwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgZ290byBlcnJv cl9yZWdpc3RlcjsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgCisrCisgICAgICAgICAg ICAgbW9uaXRvci0+cGVuZGluZ19yZWFkcysrOworICAgICAgICAgfQorICAgICB9CisgICAgIGds b2J1c19tdXRleF91bmxvY2soJm1vbml0b3ItPmxvY2spOworLSAgICAKKysKKyAgICAgR2xvYnVz R0ZTRmlsZURlYnVnRXhpdCgpOworICAgICByZXR1cm47CisgCitAQCAtMjc4NSw3ICsyNzg1LDcg QEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfb3Blbl9yZWFkX2NiKAorICAgICBnbG9idXNfeGlvX2hhbmRs ZV90ICAgICAgICAgICAgICAgICBoYW5kbGUsCisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAg ICAgICAgICAgICAgIHJlc3VsdCwKKyAgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdXNlcl9hcmcpOworLSAgICAKKysKKyBzdGF0aWMKKyBnbG9idXNfcmVzdWx0X3QKKyBn bG9idXNfbF9nZnNfZmlsZV9vcGVuKAorQEAgLTI4MDQsNyArMjgwNCw3IEBAIGdsb2J1c19sX2dm c19maWxlX29wZW4oCisgICAgIEdsb2J1c0dGU0ZpbGVEZWJ1Z0VudGVyKCk7CisgCisgICAgIG1v bml0b3IgPSAoZ2xvYnVzX2xfZmlsZV9tb25pdG9yX3QgKikgYXJnOworLSAgICAKKysKKyAgICAg cmVzdWx0ID0gZ2xvYnVzX3hpb19hdHRyX2luaXQoJmF0dHIpOworICAgICBpZihyZXN1bHQgIT0g R0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKK0BAIC0yODE2LDcgKzI4MTYsNyBAQCBnbG9idXNfbF9n ZnNfZmlsZV9vcGVuKAorICAgICBpZihnbG9idXNfZ2ZzX2NvbmZpZ19nZXRfYm9vbCgiZGlyZWN0 X2lvIikpCisgICAgIHsKKyAgICAgICAgIG9wZW5fZmxhZ3MgfD0gT19ESVJFQ1Q7CistICAgIH0g ICAgCisrICAgIH0KKyAjZW5kaWYKKyAKKyAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19hdHRyX2Nu dGwoCitAQCAtMjgzNiw5ICsyODM2LDkgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfb3BlbigKKyAgICAg ICAgIGlmKHBlcm1zICE9IE5VTEwpCisgICAgICAgICB7CisgICAgICAgICAgICAgaW50ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwID0gMDsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAg ICAgICBwID0gc3RydG91bChwZXJtcywgTlVMTCwgOCk7CistICAgICAgICAgICAgaWYocCA+IDAg fHwgCisrICAgICAgICAgICAgaWYocCA+IDAgfHwKKyAgICAgICAgICAgICAgICAgKHBlcm1zWzBd ID09ICcwJyAmJiBwZXJtc1sxXSA9PSAnXDAnKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgIHJlc3VsdCA9IGdsb2J1c194aW9fYXR0cl9jbnRsKAorQEAgLTI4NzksMTIgKzI4Nzks MTIgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfb3BlbigKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBn bG9idXNfZ2ZzX2xvZ19tZXNzYWdlKAorICAgICAgICAgICAgICAgICBHTE9CVVNfR0ZTX0xPR19X QVJOLAorLSAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIHNldCBmaWxlIGFjY2VzcyB0aW1lb3V0 IG9mICVkIHNlY29uZHNcbiIsIAorKyAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIHNldCBmaWxl IGFjY2VzcyB0aW1lb3V0IG9mICVkIHNlY29uZHNcbiIsCisgICAgICAgICAgICAgICAgIHRpbWVv dXQpOworICAgICAgICAgfQorICAgICB9CistICAgIAorLSAgICAKKysKKysKKyAgICAgcmVzdWx0 ID0gZ2xvYnVzX3hpb19zdGFja19pbml0KCZzdGFjaywgTlVMTCk7CisgICAgIGlmKHJlc3VsdCAh PSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworQEAgLTI5MDQsMTMgKzI5MDQsMTMgQEAgZ2xvYnVz X2xfZ2ZzX2ZpbGVfb3BlbigKKyAgICAgICAgIHJlc3VsdCA9IEdsb2J1c0dGU0Vycm9yV3JhcEZh aWxlZCgiZ2xvYnVzX3hpb19oYW5kbGVfY3JlYXRlIiwgcmVzdWx0KTsKKyAgICAgICAgIGdvdG8g ZXJyb3JfY3JlYXRlOworICAgICB9CistICAgIAorKworICAgICByZXN1bHQgPSBnbG9idXNfeGlv X3JlZ2lzdGVyX29wZW4oCisgICAgICAgICAqZmlsZV9oYW5kbGUsCisgICAgICAgICBwYXRobmFt ZSwKKyAgICAgICAgIGF0dHIsCistICAgICAgICAob3Blbl9mbGFncyAmIEdMT0JVU19YSU9fRklM RV9DUkVBVCkgPyAKKy0gICAgICAgICAgICBnbG9idXNfbF9nZnNfZmlsZV9vcGVuX3dyaXRlX2Ni IDogCisrICAgICAgICAob3Blbl9mbGFncyAmIEdMT0JVU19YSU9fRklMRV9DUkVBVCkgPworKyAg ICAgICAgICAgIGdsb2J1c19sX2dmc19maWxlX29wZW5fd3JpdGVfY2IgOgorICAgICAgICAgICAg IGdsb2J1c19sX2dmc19maWxlX29wZW5fcmVhZF9jYiwKKyAgICAgICAgIGFyZyk7CisgICAgIGlm KHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKK0BAIC0yOTE4LDExICsyOTE4LDExIEBAIGdsb2J1 c19sX2dmc19maWxlX29wZW4oCisgICAgICAgICByZXN1bHQgPSBHbG9idXNHRlNFcnJvcldyYXBG YWlsZWQoImdsb2J1c194aW9fcmVnaXN0ZXJfb3BlbiIsIHJlc3VsdCk7CisgICAgICAgICBnb3Rv IGVycm9yX3JlZ2lzdGVyOworICAgICB9CistICAgIAorLSAgICAKKysKKysKKyAgICAgZ2xvYnVz X3hpb19hdHRyX2Rlc3Ryb3koYXR0cik7CisgICAgIGdsb2J1c194aW9fc3RhY2tfZGVzdHJveShz dGFjayk7CistICAgIAorKworICAgICBHbG9idXNHRlNGaWxlRGVidWdFeGl0KCk7CisgICAgIHJl dHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAKK0BAIC0yOTMyLDExICsyOTMyLDExIEBAIGVycm9yX3Jl Z2lzdGVyOgorIGVycm9yX2NyZWF0ZToKKyBlcnJvcl9wdXNoOgorICAgICBnbG9idXNfeGlvX3N0 YWNrX2Rlc3Ryb3koc3RhY2spOworLSAgICAKKysKKyBlcnJvcl9zdGFjazoKKy1lcnJvcl9jbnRs OiAgICAKKytlcnJvcl9jbnRsOgorICAgICBnbG9idXNfeGlvX2F0dHJfZGVzdHJveShhdHRyKTsK Ky0gICAgCisrCisgZXJyb3JfYXR0cjoKKyAgICAgR2xvYnVzR0ZTRmlsZURlYnVnRXhpdFdpdGhF cnJvcigpOworICAgICByZXR1cm4gcmVzdWx0OworQEAgLTI5NzIsNyArMjk3Miw3IEBAIGdsb2J1 c19sX2dmc19maWxlX3JlY3YoCisgICAgICAgICBnb3RvIGVycm9yX2FsbG9jOworICAgICB9Cisg ICAgIG1vbml0b3ItPnNlc3Npb24gPSAoZ2ZzX2xfZmlsZV9zZXNzaW9uX3QgKikgdXNlcl9hcmc7 CistICAgIAorKworICAgICBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZ2V0X3dyaXRlX3JhbmdlKAor ICAgICAgICAgb3AsCisgICAgICAgICAmb2Zmc2V0LAorQEAgLTI5ODcsMjkgKzI5ODcsMjkgQEAg Z2xvYnVzX2xfZ2ZzX2ZpbGVfcmVjdigKKyAgICAgICAgICAgICAiZ2xvYnVzX2dyaWRmdHBfc2Vy dmVyX2dldF9yZWN2X21vZGlmaWNhdGlvbl90aW1lIiwgcmVzdWx0KTsKKyAgICAgICAgIGdvdG8g ZXJyb3JfYWxsb2M7CisgICAgIH0KKy0gICAgICAgIAorKworICAgICBtb25pdG9yLT5vcCA9IG9w OworICAgICBtb25pdG9yLT5wYXRobmFtZSA9IGdsb2J1c19saWJjX3N0cmR1cCh0cmFuc2Zlcl9p bmZvLT5wYXRobmFtZSk7CistICAgIAorLSAgICBvcGVuX2ZsYWdzID0gR0xPQlVTX1hJT19GSUxF X0JJTkFSWSB8IAorLSAgICAgICAgR0xPQlVTX1hJT19GSUxFX0NSRUFUIHwgCisrCisrICAgIG9w ZW5fZmxhZ3MgPSBHTE9CVVNfWElPX0ZJTEVfQklOQVJZIHwKKysgICAgICAgIEdMT0JVU19YSU9f RklMRV9DUkVBVCB8CisgICAgICAgICBHTE9CVVNfWElPX0ZJTEVfV1JPTkxZOworICAgICBpZih0 cmFuc2Zlcl9pbmZvLT50cnVuY2F0ZSkKKyAgICAgeworICAgICAgICAgb3Blbl9mbGFncyB8PSBH TE9CVVNfWElPX0ZJTEVfVFJVTkM7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKHRyYW5zZmVy X2luZm8tPmV4cGVjdGVkX2NoZWNrc3VtKQorICAgICB7CistICAgICAgICBtb25pdG9yLT5leHBl Y3RlZF9ja3NtID0gCisrICAgICAgICBtb25pdG9yLT5leHBlY3RlZF9ja3NtID0KKyAgICAgICAg ICAgICBnbG9idXNfbGliY19zdHJkdXAodHJhbnNmZXJfaW5mby0+ZXhwZWN0ZWRfY2hlY2tzdW0p OworICAgICB9CisgICAgIGlmKHRyYW5zZmVyX2luZm8tPmV4cGVjdGVkX2NoZWNrc3VtX2FsZykK KyAgICAgeworLSAgICAgICAgbW9uaXRvci0+ZXhwZWN0ZWRfY2tzbV9hbGcgPSAKKysgICAgICAg IG1vbml0b3ItPmV4cGVjdGVkX2Nrc21fYWxnID0KKyAgICAgICAgICAgICBnbG9idXNfbGliY19z dHJkdXAodHJhbnNmZXJfaW5mby0+ZXhwZWN0ZWRfY2hlY2tzdW1fYWxnKTsKKyAgICAgfQorLSAg ICAKKysKKyAgICAgcmVzdWx0ID0gZ2xvYnVzX2xfZ2ZzX2ZpbGVfb3BlbigKKyAgICAgICAgICZt b25pdG9yLT5maWxlX2hhbmRsZSwgdHJhbnNmZXJfaW5mby0+cGF0aG5hbWUsIG9wZW5fZmxhZ3Ms IG1vbml0b3IpOworICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCitAQCAtMzAxNywx MyArMzAxNywxMyBAQCBnbG9idXNfbF9nZnNfZmlsZV9yZWN2KAorICAgICAgICAgcmVzdWx0ID0g R2xvYnVzR0ZTRXJyb3JXcmFwRmFpbGVkKCJnbG9idXNfbF9nZnNfZmlsZV9vcGVuIiwgcmVzdWx0 KTsKKyAgICAgICAgIGdvdG8gZXJyb3Jfb3BlbjsKKyAgICAgfQorLSAgICAKKysKKyAgICAgR2xv YnVzR0ZTRmlsZURlYnVnRXhpdCgpOworICAgICByZXR1cm47CisgCisgZXJyb3Jfb3BlbjoKKyAg ICAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfbW9uaXRvcl9kZXN0cm95KG1vbml0b3IpOworLSAgICAKKysK KyBlcnJvcl9hbGxvYzoKKyAgICAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2ZpbmlzaGVkX3RyYW5z ZmVyKG9wLCByZXN1bHQpOworIAorQEAgLTMwMzcsMTQgKzMwMzcsMTQgQEAgZXJyb3JfYWxsb2M6 Cisgc3RhdGljCisgdm9pZAorIGdsb2J1c19sX2dmc19maWxlX3JlYWRfY2IoCistICAgIGdsb2J1 c194aW9faGFuZGxlX3QgICAgICAgICAgICAgICAgIHhpb19oYW5kbGUsIAorKyAgICBnbG9idXNf eGlvX2hhbmRsZV90ICAgICAgICAgICAgICAgICB4aW9faGFuZGxlLAorICAgICBnbG9idXNfcmVz dWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQsCisgICAgIGdsb2J1c19ieXRlX3QgKiAg ICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwKKyAgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAg ICAgICAgICAgICAgbGVuLAorLSAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAg ICBuYnl0ZXMsIAorKyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICBuYnl0 ZXMsCisgICAgIGdsb2J1c194aW9fZGF0YV9kZXNjcmlwdG9yX3QgICAgICAgIGRhdGFfZGVzYywK KyAgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9hcmcpOworLSAg ICAKKysKKyAvKiBjYWxsZWQgTE9DS0VEICovCisgc3RhdGljCisgZ2xvYnVzX3Jlc3VsdF90CitA QCAtMzA1Niw4ICszMDU2LDggQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfZGlzcGF0Y2hfcmVhZCgKKyAg ICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9sZW5ndGg7CisgICAg IEdsb2J1c0dGU05hbWUoZ2xvYnVzX2xfZ2ZzX2ZpbGVfZGlzcGF0Y2hfcmVhZCk7CisgICAgIEds b2J1c0dGU0ZpbGVEZWJ1Z0VudGVyKCk7CistICAgIAorLSAgICBpZihtb25pdG9yLT5maXJzdF9y ZWFkICYmIG1vbml0b3ItPnBlbmRpbmdfcmVhZHMgPT0gMCAmJiAKKysKKysgICAgaWYobW9uaXRv ci0+Zmlyc3RfcmVhZCAmJiBtb25pdG9yLT5wZW5kaW5nX3JlYWRzID09IDAgJiYKKyAgICAgICAg ICFtb25pdG9yLT5lb2YgJiYgIWdsb2J1c19saXN0X2VtcHR5KG1vbml0b3ItPmJ1ZmZlcl9saXN0 KSAmJgorICAgICAgICAgIW1vbml0b3ItPmFib3J0ZWQpCisgICAgIHsKK0BAIC0zMDcwLDE5ICsz MDcwLDE5IEBAIGdsb2J1c19sX2dmc19maWxlX2Rpc3BhdGNoX3JlYWQoCisgICAgICAgICAgICAg bW9uaXRvci0+ZW9mID0gR0xPQlVTX1RSVUU7CisgICAgICAgICB9CisgICAgICAgICBlbHNlCist ICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorKyAgICAg ICAgeworICAgICAgICAgICAgIGlmIChtb25pdG9yLT5maWxlX29mZnNldCAhPSBtb25pdG9yLT5y ZWFkX29mZnNldCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGdsb2J1c19vZmZf dCAgICAgICAgICAgIHNlZWtfdG1wOworICAgICAgICAgICAgICAgICBzZWVrX3RtcCA9IG1vbml0 b3ItPnJlYWRfb2Zmc2V0OworLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAg cmVzdWx0ID0gZ2xvYnVzX3hpb19oYW5kbGVfY250bCgKKyAgICAgICAgICAgICAgICAgICAgIG1v bml0b3ItPmZpbGVfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX1hJT19RVUVS WSwKKyAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19YSU9fU0VFSywKKyAgICAgICAgICAgICAg ICAgICAgIHNlZWtfdG1wLAorICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX1hJT19GSUxFX1NF RUtfU0VUKTsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgaWYocmVzdWx0ICE9 IEdMT0JVU19TVUNDRVNTKQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg ICByZXN1bHQgPSBHbG9idXNHRlNFcnJvcldyYXBGYWlsZWQoCitAQCAtMzA5MSwxOSArMzA5MSwx OSBAQCBnbG9idXNfbF9nZnNfZmlsZV9kaXNwYXRjaF9yZWFkKAorICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgIG1vbml0b3ItPmZpbGVfb2Zmc2V0ID0gbW9uaXRvci0+cmVhZF9v ZmZzZXQ7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIAorKworICAgICAgICAgfQorICAg ICAgICAgbW9uaXRvci0+Zmlyc3RfcmVhZCA9IEdMT0JVU19GQUxTRTsKKy0gICAgfSAgICAgICAg ICAgICAKKysgICAgfQorIAorLSAgICBpZihtb25pdG9yLT5wZW5kaW5nX3JlYWRzID09IDAgJiYg IW1vbml0b3ItPmVvZiAmJiAKKysgICAgaWYobW9uaXRvci0+cGVuZGluZ19yZWFkcyA9PSAwICYm ICFtb25pdG9yLT5lb2YgJiYKKyAgICAgICAgICFnbG9idXNfbGlzdF9lbXB0eShtb25pdG9yLT5i dWZmZXJfbGlzdCkgJiYgIW1vbml0b3ItPmFib3J0ZWQpCisgICAgIHsKKyAgICAgICAgIGJ1ZmZl ciA9IGdsb2J1c19saXN0X3JlbW92ZSgKKyAgICAgICAgICAgICAmbW9uaXRvci0+YnVmZmVyX2xp c3QsIG1vbml0b3ItPmJ1ZmZlcl9saXN0KTsKKyAgICAgICAgIGdsb2J1c19hc3NlcnQoYnVmZmVy KTsKKy0gICAgICAgICAgICAgCistICAgICAgICBpZihtb25pdG9yLT5yZWFkX2xlbmd0aCAhPSAt MSAmJiAKKysKKysgICAgICAgIGlmKG1vbml0b3ItPnJlYWRfbGVuZ3RoICE9IC0xICYmCisgICAg ICAgICAgICAgbW9uaXRvci0+YmxvY2tfc2l6ZSA+IG1vbml0b3ItPnJlYWRfbGVuZ3RoKQorICAg ICAgICAgeworICAgICAgICAgICAgIHJlYWRfbGVuZ3RoID0gbW9uaXRvci0+cmVhZF9sZW5ndGg7 CitAQCAtMzExMiw3ICszMTEyLDcgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfZGlzcGF0Y2hfcmVhZCgK KyAgICAgICAgIHsKKyAgICAgICAgICAgICByZWFkX2xlbmd0aCA9IG1vbml0b3ItPmJsb2NrX3Np emU7CisgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c194 aW9fcmVnaXN0ZXJfcmVhZCgKKyAgICAgICAgICAgICBtb25pdG9yLT5maWxlX2hhbmRsZSwKKyAg ICAgICAgICAgICBidWZmZXIsCitAQCAtMzEyOCwxMCArMzEyOCwxMCBAQCBnbG9idXNfbF9nZnNf ZmlsZV9kaXNwYXRjaF9yZWFkKAorICAgICAgICAgICAgICAgICAiZ2xvYnVzX3hpb19yZWdpc3Rl cl9yZWFkIiwgcmVzdWx0KTsKKyAgICAgICAgICAgICBnb3RvIGVycm9yX3JlZ2lzdGVyOworICAg ICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBtb25pdG9yLT5wZW5kaW5nX3JlYWRzKys7 CisgICAgIH0KKy0gICAgCisrCisgICAgIEdsb2J1c0dGU0ZpbGVEZWJ1Z0V4aXQoKTsKKyAgICAg cmV0dXJuIEdMT0JVU19TVUNDRVNTOworIAorQEAgLTMxNTMsMTEgKzMxNTMsMTEgQEAgZ2xvYnVz X2xfZ2ZzX2ZpbGVfc2VydmVyX3dyaXRlX2NiKAorICAgICBnbG9idXNfbF9maWxlX21vbml0b3Jf dCAqICAgICAgICAgICBtb25pdG9yOworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dmc19m aWxlX3NlcnZlcl93cml0ZV9jYik7CisgICAgIEdsb2J1c0dGU0ZpbGVEZWJ1Z0VudGVyKCk7Cist ICAgIAorKworICAgICBtb25pdG9yID0gKGdsb2J1c19sX2ZpbGVfbW9uaXRvcl90ICopIHVzZXJf YXJnOworLSAgICAKKysKKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJm1vbml0b3ItPmxvY2spOwor LSAgICB7IAorKyAgICB7CisgICAgICAgICBtb25pdG9yLT5wZW5kaW5nX3dyaXRlcy0tOworICAg ICAgICAgZ2xvYnVzX2xpc3RfaW5zZXJ0KCZtb25pdG9yLT5idWZmZXJfbGlzdCwgYnVmZmVyKTsK KyAKK0BAIC0zMTY5LDcgKzMxNjksNyBAQCBnbG9idXNfbF9nZnNfZmlsZV9zZXJ2ZXJfd3JpdGVf Y2IoCisgICAgICAgICB7CisgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgIH0KKy0g ICAgICAgIAorKworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2xfZ2ZzX2ZpbGVfZGlzcGF0Y2hf cmVhZChtb25pdG9yKTsKKyAgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAg ICAgICAgIHsKK0BAIC0zMTc3LDcgKzMxNzcsNyBAQCBnbG9idXNfbF9nZnNfZmlsZV9zZXJ2ZXJf d3JpdGVfY2IoCisgICAgICAgICAgICAgICAgICJnbG9idXNfbF9nZnNfZmlsZV9kaXNwYXRjaF9y ZWFkIiwgcmVzdWx0KTsKKyAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgfQorLSAg ICAgICAgCisrCisgICAgICAgICBpZihtb25pdG9yLT5wZW5kaW5nX3JlYWRzID09IDAgJiYgbW9u aXRvci0+cGVuZGluZ193cml0ZXMgPT0gMCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBnbG9i dXNfYXNzZXJ0KG1vbml0b3ItPmVvZiB8fCBtb25pdG9yLT5hYm9ydGVkKTsKK0BAIC0zMTkwLDcg KzMxOTAsNyBAQCBnbG9idXNfbF9nZnNfZmlsZV9zZXJ2ZXJfd3JpdGVfY2IoCisgICAgICAgICB9 CisgICAgIH0KKyAgICAgLyogYWxyZWFkeSB1bmxvY2tlZCAqLworLSAgICAKKysKKyAgICAgR2xv YnVzR0ZTRmlsZURlYnVnRXhpdCgpOworICAgICByZXR1cm47CisgCitAQCAtMzE5OSw3ICszMTk5 LDcgQEAgZXJyb3I6CisgICAgIHsKKyAgICAgICAgIC8qIHRoZXJlIGFyZSBzdGlsbCBvdXRzdGFu ZGluZyBjYWxsYmFja3MsIHdhaXQgZm9yIHRoZW0gKi8KKyAgICAgICAgIGdsb2J1c19tdXRleF91 bmxvY2soJm1vbml0b3ItPmxvY2spOworLSAgICAKKysKKyAgICAgICAgIEdsb2J1c0dGU0ZpbGVE ZWJ1Z0V4aXRXaXRoRXJyb3IoKTsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorQEAgLTMyMTIs MjAgKzMyMTIsMjAgQEAgZXJyb3I6Cisgc3RhdGljCisgdm9pZAorIGdsb2J1c19sX2dmc19maWxl X3JlYWRfY2IoCistICAgIGdsb2J1c194aW9faGFuZGxlX3QgICAgICAgICAgICAgICAgIHhpb19o YW5kbGUsIAorKyAgICBnbG9idXNfeGlvX2hhbmRsZV90ICAgICAgICAgICAgICAgICB4aW9faGFu ZGxlLAorICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQsCisg ICAgIGdsb2J1c19ieXRlX3QgKiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwKKyAgICAgZ2xv YnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgbGVuLAorLSAgICBnbG9idXNfc2l6ZV90 ICAgICAgICAgICAgICAgICAgICAgICBuYnl0ZXMsIAorKyAgICBnbG9idXNfc2l6ZV90ICAgICAg ICAgICAgICAgICAgICAgICBuYnl0ZXMsCisgICAgIGdsb2J1c194aW9fZGF0YV9kZXNjcmlwdG9y X3QgICAgICAgIGRhdGFfZGVzYywKKyAgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdXNlcl9hcmcpCisgeworICAgICBnbG9idXNfbF9maWxlX21vbml0b3JfdCAqICAgICAg ICAgICBtb25pdG9yOworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dmc19maWxlX3JlYWRf Y2IpOworICAgICBHbG9idXNHRlNGaWxlRGVidWdFbnRlcigpOworLSAgICAKKysKKyAgICAgbW9u aXRvciA9IChnbG9idXNfbF9maWxlX21vbml0b3JfdCAqKSB1c2VyX2FyZzsKKy0gICAgCisrCisg ICAgIGdsb2J1c19tdXRleF9sb2NrKCZtb25pdG9yLT5sb2NrKTsKKyAgICAgeworICAgICAgICAg bW9uaXRvci0+cGVuZGluZ19yZWFkcy0tOworQEAgLTMyNDYsNyArMzI0Niw3IEBAIGdsb2J1c19s X2dmc19maWxlX3JlYWRfY2IoCisgICAgICAgICAgICAgZ2xvYnVzX2xpc3RfaW5zZXJ0KCZtb25p dG9yLT5idWZmZXJfbGlzdCwgYnVmZmVyKTsKKyAgICAgICAgICAgICBnb3RvIGVycm9yOworICAg ICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBpZihuYnl0ZXMgPiAwKQorICAgICAgICAg eworICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19ncmlkZnRwX3NlcnZlcl9yZWdpc3Rlcl93 cml0ZSgKK0BAIC0zMjY0LDcgKzMyNjQsNyBAQCBnbG9idXNfbF9nZnNfZmlsZV9yZWFkX2NiKAor ICAgICAgICAgICAgICAgICAgICAgImdsb2J1c19ncmlkZnRwX3NlcnZlcl9yZWdpc3Rlcl93cml0 ZSIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAg fQorLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIG1vbml0b3ItPnBlbmRpbmdfd3JpdGVz Kys7CisgICAgICAgICAgICAgbW9uaXRvci0+ZmlsZV9vZmZzZXQgKz0gbmJ5dGVzOworICAgICAg ICAgICAgIGlmKG1vbml0b3ItPnJlYWRfbGVuZ3RoICE9IC0xKQorQEAgLTMyNzYsMTIgKzMyNzYs MTIgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfcmVhZF9jYigKKyAgICAgICAgIHsKKyAgICAgICAgICAg ICBnbG9idXNfbGlzdF9pbnNlcnQoJm1vbml0b3ItPmJ1ZmZlcl9saXN0LCBidWZmZXIpOworICAg ICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgCisrCisgICAgICAgICBpZihtb25pdG9yLT5y ZWFkX2xlbmd0aCA9PSAwKQorICAgICAgICAgeworICAgICAgICAgICAgIG1vbml0b3ItPmZpcnN0 X3JlYWQgPSBHTE9CVVNfVFJVRTsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAg cmVzdWx0ID0gZ2xvYnVzX2xfZ2ZzX2ZpbGVfZGlzcGF0Y2hfcmVhZChtb25pdG9yKTsKKyAgICAg ICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgIHsKK0BAIC0zMjg5LDcg KzMyODksNyBAQCBnbG9idXNfbF9nZnNfZmlsZV9yZWFkX2NiKAorICAgICAgICAgICAgICAgICAi Z2xvYnVzX2xfZ2ZzX2ZpbGVfZGlzcGF0Y2hfcmVhZCIsIHJlc3VsdCk7CisgICAgICAgICAgICAg Z290byBlcnJvcjsKKyAgICAgICAgIH0KKy0gICAgICAgCisrCisgICAgICAgICBpZihtb25pdG9y LT5wZW5kaW5nX3JlYWRzID09IDAgJiYgbW9uaXRvci0+cGVuZGluZ193cml0ZXMgPT0gMCkKKyAg ICAgICAgIHsKKyAgICAgICAgICAgICBnbG9idXNfYXNzZXJ0KG1vbml0b3ItPmVvZiB8fCBtb25p dG9yLT5hYm9ydGVkKTsKK0BAIC0zMzEyLDcgKzMzMTIsNyBAQCBlcnJvcjoKKyAgICAgeworICAg ICAgICAgLyogdGhlcmUgYXJlIHN0aWxsIG91dHN0YW5kaW5nIGNhbGxiYWNrcywgd2FpdCBmb3Ig dGhlbSAqLworICAgICAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmbW9uaXRvci0+bG9jayk7Cist ICAgIAorKworICAgICAgICAgR2xvYnVzR0ZTRmlsZURlYnVnRXhpdFdpdGhFcnJvcigpOworICAg ICAgICAgcmV0dXJuOworICAgICB9CitAQCAtMzMzMiw3ICszMzMyLDcgQEAgZ2xvYnVzX2xfZ2Zz X2ZpbGVfb3Blbl9yZWFkX2NiKAorICAgICBnbG9idXNfbF9maWxlX21vbml0b3JfdCAqICAgICAg ICAgICBtb25pdG9yOworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dmc19maWxlX29wZW5f cmVhZF9jYik7CisgICAgIEdsb2J1c0dGU0ZpbGVEZWJ1Z0VudGVyKCk7CistICAgIAorKworICAg ICBtb25pdG9yID0gKGdsb2J1c19sX2ZpbGVfbW9uaXRvcl90ICopIHVzZXJfYXJnOworICAgICBp ZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKK0BAIC0zMzQxLDEwICszMzQxLDEw IEBAIGdsb2J1c19sX2dmc19maWxlX29wZW5fcmVhZF9jYigKKyAgICAgICAgIG1vbml0b3ItPmZp bGVfaGFuZGxlID0gTlVMTDsKKyAgICAgICAgIGdvdG8gZXJyb3Jfb3BlbjsKKyAgICAgfQorLSAg ICAKKysKKyAgICAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2JlZ2luX3RyYW5zZmVyKAorICAgICAg ICAgbW9uaXRvci0+b3AsIEdMT0JVU19HRlNfRVZFTlRfVFJBTlNGRVJfQUJPUlQsIG1vbml0b3Ip OworLSAgICAKKysKKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJm1vbml0b3ItPmxvY2spOworICAg ICBtb25pdG9yLT5maXJzdF9yZWFkID0gR0xPQlVTX1RSVUU7CisgICAgIHJlc3VsdCA9IGdsb2J1 c19sX2dmc19maWxlX2Rpc3BhdGNoX3JlYWQobW9uaXRvcik7CitAQCAtMzM1NCw3ICszMzU0LDcg QEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfb3Blbl9yZWFkX2NiKAorICAgICAgICAgICAgICJnbG9idXNf bF9nZnNfZmlsZV9kaXNwYXRjaF9yZWFkIiwgcmVzdWx0KTsKKyAgICAgICAgIGdvdG8gZXJyb3Jf ZGlzcGF0Y2g7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKG1vbml0b3ItPnBlbmRpbmdfcmVh ZHMgPT0gMCAmJiBtb25pdG9yLT5wZW5kaW5nX3dyaXRlcyA9PSAwKQorICAgICB7CisgICAgICAg ICBnbG9idXNfYXNzZXJ0KG1vbml0b3ItPmVvZiB8fCBtb25pdG9yLT5hYm9ydGVkKTsKK0BAIC0z MzY2LDcgKzMzNjYsNyBAQCBnbG9idXNfbF9nZnNfZmlsZV9vcGVuX3JlYWRfY2IoCisgICAgIHsK KyAgICAgICAgIGdsb2J1c19tdXRleF91bmxvY2soJm1vbml0b3ItPmxvY2spOworICAgICB9Cist ICAgIAorKworICAgICBHbG9idXNHRlNGaWxlRGVidWdFeGl0KCk7CisgICAgIHJldHVybjsKKyAK K0BAIC0zMzk0LDExICszMzk0LDExIEBAIGdsb2J1c19sX2dmc19maWxlX3NlbmQoCisgICAgIGds b2J1c194aW9fZmlsZV9mbGFnX3QgICAgICAgICAgICAgIG9wZW5fZmxhZ3M7CisgICAgIEdsb2J1 c0dGU05hbWUoZ2xvYnVzX2xfZ2ZzX2ZpbGVfc2VuZCk7CisgICAgIEdsb2J1c0dGU0ZpbGVEZWJ1 Z0VudGVyKCk7CistICAgIAorKworICAgICBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZ2V0X29wdGlt YWxfY29uY3VycmVuY3kob3AsICZvcHRpbWFsX2NvdW50KTsKKyAgICAgZ2xvYnVzX2dyaWRmdHBf c2VydmVyX2dldF9ibG9ja19zaXplKG9wLCAmYmxvY2tfc2l6ZSk7CisgICAgIGdsb2J1c19hc3Nl cnQob3B0aW1hbF9jb3VudCA+IDAgJiYgYmxvY2tfc2l6ZSA+IDApOworLSAgICAKKysKKyAgICAg cmVzdWx0ID0gZ2xvYnVzX2xfZ2ZzX2ZpbGVfbW9uaXRvcl9pbml0KAorICAgICAgICAgJm1vbml0 b3IsIGJsb2NrX3NpemUsIG9wdGltYWxfY291bnQpOworICAgICBpZihyZXN1bHQgIT0gR0xPQlVT X1NVQ0NFU1MpCitAQCAtMzQwNyw3ICszNDA3LDcgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfc2VuZCgK KyAgICAgICAgICAgICAiZ2xvYnVzX2xfZ2ZzX2ZpbGVfbW9uaXRvcl9pbml0IiwgcmVzdWx0KTsK KyAgICAgICAgIGdvdG8gZXJyb3JfYWxsb2M7CisgICAgIH0KKy0gICAgICAgICAgCisrCisgICAg IHdoaWxlKG9wdGltYWxfY291bnQtLSkKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2J5dGVfdCAq ICAgICAgICAgICAgICAgICBidWZmZXI7CitAQCAtMzQyOCwxNCArMzQyOCwxNCBAQCBnbG9idXNf bF9nZnNfZmlsZV9zZW5kKAorICAgICAgICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JXcmFwRmFp bGVkKCJnbG9idXNfbF9nZnNfZmlsZV9vcGVuIiwgcmVzdWx0KTsKKyAgICAgICAgIGdvdG8gZXJy b3Jfb3BlbjsKKyAgICAgfQorLSAgICAKKysKKyAgICAgR2xvYnVzR0ZTRmlsZURlYnVnRXhpdCgp OworICAgICByZXR1cm47CisgCisgZXJyb3Jfb3BlbjoKKyAgICAgZ2xvYnVzX2xfZ2ZzX2ZpbGVf bW9uaXRvcl9kZXN0cm95KG1vbml0b3IpOworLSAgICAKKy1lcnJvcl9hbGxvYzogIAorKworK2Vy cm9yX2FsbG9jOgorICAgICBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZmluaXNoZWRfdHJhbnNmZXIo b3AsIHJlc3VsdCk7CisgCisgICAgIEdsb2J1c0dGU0ZpbGVEZWJ1Z0V4aXRXaXRoRXJyb3IoKTsK K0BAIC0zNDUwLDcgKzM0NTAsNyBAQCBnbG9idXNfbF9nZnNfZmlsZV9ldmVudCgKKyAgICAgZ2xv YnVzX2xfZmlsZV9tb25pdG9yX3QgKiAgICAgICAgICAgbW9uaXRvcjsKKyAgICAgR2xvYnVzR0ZT TmFtZShnbG9idXNfbF9nZnNfZmlsZV9ldmVudCk7CisgICAgIEdsb2J1c0dGU0ZpbGVEZWJ1Z0Vu dGVyKCk7CistICAgICAgICAKKysKKyAgICAgbW9uaXRvciA9IChnbG9idXNfbF9maWxlX21vbml0 b3JfdCAqKSBldmVudF9pbmZvLT5ldmVudF9hcmc7CisgCisgICAgIHN3aXRjaChldmVudF9pbmZv LT50eXBlKQorQEAgLTM0NjEsMTggKzM0NjEsMTggQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfZXZlbnQo CisgICAgICAgICAgICAgICAgIG1vbml0b3ItPmFib3J0ZWQgPSBHTE9CVVNfVFJVRTsKKyAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmbW9uaXRvci0+bG9j ayk7CistICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgZ2xvYnVzX3hpb19oYW5kbGVfY2Fu Y2VsX29wZXJhdGlvbnMoCisgICAgICAgICAgICAgICAgIG1vbml0b3ItPmZpbGVfaGFuZGxlLAor LSAgICAgICAgICAgICAgICBHTE9CVVNfWElPX0NBTkNFTF9PUEVOIHwgCisrICAgICAgICAgICAg ICAgIEdMT0JVU19YSU9fQ0FOQ0VMX09QRU4gfAorICAgICAgICAgICAgICAgICBHTE9CVVNfWElP X0NBTkNFTF9SRUFEIHwKKyAgICAgICAgICAgICAgICAgR0xPQlVTX1hJT19DQU5DRUxfV1JJVEUp OworICAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgICAgIAorKworICAgICAgICAgZGVmYXVs dDoKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgfQorLSAgICAKKysKKyAgICAgR2xvYnVzR0ZT RmlsZURlYnVnRXhpdCgpOworIH0KKyAKK0BAIC0zNTQwLDcgKzM1NDAsNyBAQCBzdGF0aWMKKyBp bnQKKyBnbG9idXNfbF9nZnNfZmlsZV9kZWFjdGl2YXRlKHZvaWQpOworIAorLXN0YXRpYyBnbG9i dXNfZ2ZzX3N0b3JhZ2VfaWZhY2VfdCAgICAgICBnbG9idXNfbF9nZnNfZmlsZV9kc2lfaWZhY2Ug PSAKKytzdGF0aWMgZ2xvYnVzX2dmc19zdG9yYWdlX2lmYWNlX3QgICAgICAgZ2xvYnVzX2xfZ2Zz X2ZpbGVfZHNpX2lmYWNlID0KKyB7CisgICAgIEdMT0JVU19HRlNfRFNJX0RFU0NSSVBUT1JfU0VO REVSIHwgR0xPQlVTX0dGU19EU0lfREVTQ1JJUFRPUl9IQVNfUkVBTFBBVEgsCisgICAgIGdsb2J1 c19sX2dmc19maWxlX2luaXQsCitAQCAtMzU1Miw3ICszNTUyLDcgQEAgc3RhdGljIGdsb2J1c19n ZnNfc3RvcmFnZV9pZmFjZV90ICAgICAgIGdsb2J1c19sX2dmc19maWxlX2RzaV9pZmFjZSA9Cisg ICAgIE5VTEwsIC8qIGFjdGl2ZSAqLworICAgICBOVUxMLCAvKiBwYXNzaXZlICovCisgICAgIE5V TEwsIC8qIGRhdGEgZGVzdHJveSAqLworLSAgICBnbG9idXNfbF9nZnNfZmlsZV9jb21tYW5kLCAK KysgICAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfY29tbWFuZCwKKyAgICAgZ2xvYnVzX2xfZ2ZzX2ZpbGVf c3RhdCwKKyAgICAgTlVMTCwKKyAgICAgTlVMTCwKK0BAIC0zNTc3LDEzICszNTc3LDEzIEBAIGds b2J1c19sX2dmc19maWxlX2FjdGl2YXRlKHZvaWQpCisgICAgIHsKKyAgICAgICAgIGdvdG8gZXJy b3JfYWN0aXZhdGU7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKGdsb2J1c194aW9fZHJpdmVy X2xvYWQoCisgICAgICAgICAiZmlsZSIsICZnbG9idXNfbF9nZnNfZmlsZV9kcml2ZXIpICE9IEdM T0JVU19TVUNDRVNTKQorICAgICB7CisgICAgICAgICBnb3RvIGVycm9yX2xvYWRfZmlsZTsKKyAg ICAgfQorLSAgICAKKysKKyAgICAgZ2xvYnVzX2V4dGVuc2lvbl9yZWdpc3RyeV9hZGQoCisgICAg ICAgICBHTE9CVVNfR0ZTX0RTSV9SRUdJU1RSWSwKKyAgICAgICAgICJmaWxlIiwKK0BAIC0zNTky LDEyICszNTkyLDEyIEBAIGdsb2J1c19sX2dmc19maWxlX2FjdGl2YXRlKHZvaWQpCisgCisgICAg IEdsb2J1c0RlYnVnSW5pdChHTE9CVVNfR1JJREZUUF9TRVJWRVJfRklMRSwKKyAgICAgICAgIEVS Uk9SIFdBUk5JTkcgVFJBQ0UgSU5URVJOQUxfVFJBQ0UgSU5GTyBTVEFURSBJTkZPX1ZFUkJPU0Up OworLSAgICAKKysKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworLSAgICAKKysKKyBlcnJv cl9sb2FkX2ZpbGU6CisgICAgIGdsb2J1c19tb2R1bGVfZGVhY3RpdmF0ZShHTE9CVVNfWElPX01P RFVMRSk7CistICAgIAorKworIGVycm9yX2FjdGl2YXRlOgorICAgICByZXR1cm4gR0xPQlVTX0ZB SUxVUkU7CisgfQorQEAgLTM2MDgsOCArMzYwOCw4IEBAIGdsb2J1c19sX2dmc19maWxlX2RlYWN0 aXZhdGUodm9pZCkKKyB7CisgICAgIGdsb2J1c19leHRlbnNpb25fcmVnaXN0cnlfcmVtb3ZlKAor ICAgICAgICAgR0xPQlVTX0dGU19EU0lfUkVHSVNUUlksICJmaWxlIik7CistICAgICAgICAKKysK KyAgICAgZ2xvYnVzX3hpb19kcml2ZXJfdW5sb2FkKGdsb2J1c19sX2dmc19maWxlX2RyaXZlcik7 CistICAgIAorKworICAgICByZXR1cm4gZ2xvYnVzX21vZHVsZV9kZWFjdGl2YXRlKEdMT0JVU19Y SU9fTU9EVUxFKTsKKyB9CitkaWZmIC0tZ2l0IGEvZ3JpZGZ0cC9zZXJ2ZXIvc3JjL21vZHVsZXMv cmVtb3RlL2dsb2J1c19ncmlkZnRwX3NlcnZlcl9yZW1vdGUuYyBiL2dyaWRmdHAvc2VydmVyL3Ny Yy9tb2R1bGVzL3JlbW90ZS9nbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfcmVtb3RlLmMKK2luZGV4IDk5 NzIxZGRhMi4uMzI0ZjhmNTg1IDEwMDY0NAorLS0tIGEvZ3JpZGZ0cC9zZXJ2ZXIvc3JjL21vZHVs ZXMvcmVtb3RlL2dsb2J1c19ncmlkZnRwX3NlcnZlcl9yZW1vdGUuYworKysrIGIvZ3JpZGZ0cC9z ZXJ2ZXIvc3JjL21vZHVsZXMvcmVtb3RlL2dsb2J1c19ncmlkZnRwX3NlcnZlcl9yZW1vdGUuYwor QEAgLTIyLDE4ICsyMiwxOCBAQCBHbG9idXNEZWJ1Z0RlY2xhcmUoR0xPQlVTX0dSSURGVFBfU0VS VkVSX1JFTU9URSk7CisgI2RlZmluZSBCUkFJTl9SRVRSWSAyNTYKKyAKKyAjZGVmaW5lIEdsb2J1 c0dGU1JlbW90ZURlYnVnUHJpbnRmKGxldmVsLCBtZXNzYWdlKSAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorLSAgICBHbG9idXNEZWJ1Z1ByaW50ZihHTE9CVVNfR1JJREZUUF9TRVJWRVJfUkVN T1RFLCBsZXZlbCwgbWVzc2FnZSkgICAgICAgICAgCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKysg ICAgR2xvYnVzRGVidWdQcmludGYoR0xPQlVTX0dSSURGVFBfU0VSVkVSX1JFTU9URSwgbGV2ZWws IG1lc3NhZ2UpCisrCisgI2RlZmluZSBHbG9idXNHRlNSZW1vdGVEZWJ1Z0VudGVyKCkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgR2xvYnVzR0ZTUmVtb3Rl RGVidWdQcmludGYoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgICAgICAgR0xPQlVTX0dGU19ERUJVR19UUkFDRSwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCistICAgICAgICAoIlslc10gRW50ZXJpbmdcbiIsIF9n ZnNfbmFtZSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorKyAgICAgICAgKCJbJXNdIEVudGVyaW5nXG4iLCBfZ2ZzX25hbWUpKQor KworICNkZWZpbmUgR2xvYnVzR0ZTUmVtb3RlRGVidWdFeGl0KCkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIEdsb2J1c0dGU1JlbW90ZURlYnVnUHJpbnRm KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg IEdMT0JVU19HRlNfREVCVUdfVFJBQ0UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorLSAgICAgICAgKCJbJXNdIEV4aXRpbmdcbiIsIF9nZnNfbmFtZSkpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKysgICAgICAgICgiWyVzXSBFeGl0aW5nXG4iLCBfZ2ZzX25hbWUpKQorKworICNkZWZpbmUg R2xvYnVzR0ZTUmVtb3RlRGVidWdFeGl0V2l0aEVycm9yKCkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisgICAgIEdsb2J1c0dGU1JlbW90ZURlYnVnUHJpbnRmKCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgIEdMT0JVU19HRlNf REVCVUdfVFJBQ0UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorQEAgLTcxLDcgKzcxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9p cGNfYm91bmNlX3MKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVn aW5fZXZlbnRfcGVuZGluZzsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZXZlbnRfcGVuZGluZzsKKyAgICAgaW50ICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZW9mX2NvdW50OworLSAgICBnbG9idXNfbF9nZnNfcmVtb3RlX25vZGVfaGFuZGxlX3QgKiBu b2RlX2hhbmRsZTsgIAorKyAgICBnbG9idXNfbF9nZnNfcmVtb3RlX25vZGVfaGFuZGxlX3QgKiBu b2RlX2hhbmRsZTsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFy dGlhbF9lb2ZfY291bnRzOworICAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAgICAg ICByZWN2X3BlbmRpbmc7CisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5vZGVzX3JlcXVlc3Rpbmc7CitAQCAtOTMsNyArOTMsNyBAQCB0eXBlZGVmIHZvaWQKKyB0eXBl ZGVmIHN0cnVjdCBnbG9idXNfbF9nZnNfcmVtb3RlX25vZGVfaW5mb19zCisgeworICAgICBnbG9i dXNfZ2ZzX2lwY19oYW5kbGVfdCAgICAgICAgICAgICBpcGNfaGFuZGxlOworLSAgICBnbG9idXNf bF9nZnNfcmVtb3RlX25vZGVfaGFuZGxlX3QgKiBub2RlX2hhbmRsZTsgIAorKyAgICBnbG9idXNf bF9nZnNfcmVtb3RlX25vZGVfaGFuZGxlX3QgKiBub2RlX2hhbmRsZTsKKyAgICAgc3RydWN0IGds b2J1c19sX2dmc19yZW1vdGVfaXBjX2JvdW5jZV9zICogYm91bmNlOworICAgICBjaGFyICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjczsKKyAgICAgdm9pZCAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGF0YV9hcmc7CitAQCAtMTI3LDcgKzEyNyw3IEBAIHR5cGVkZWYgZW51 bQorICAgICBHTE9CVVNfTF9HRlNfUkVNT1RFX1NUUklQRURfT05FX1RPX09ORSA9IDEsCisgICAg IEdMT0JVU19MX0dGU19SRU1PVEVfU1RSSVBFRF9BTExfVE9fQUxMCisgfSBnbG9idXNfbF9nZnNf cmVtb3RlX3N0cmlwZWRfbW9kZV90OworLSAgICAKKysKKyB0eXBlZGVmIHN0cnVjdCBnbG9idXNf bF9nZnNfcmVtb3RlX2NvbnRyb2xfbm9kZV9ib3VuY2VfcworIHsKKyAgICAgZ2xvYnVzX2xfZ2Zz X3JlbW90ZV9oYW5kbGVfdCAqICAgICAgbXlfaGFuZGxlOworQEAgLTE1Niw3ICsxNTYsNyBAQCBk byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgX29wLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICBfcmVz dWx0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKKyAgICAgICAgICZfZmluaXNoZWRfaW5mbyk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLX0gd2hpbGUoMCkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyt9 IHdoaWxlKDApCisgCisgc3RhdGljCisgdm9pZAorQEAgLTE3Niw3ICsxNzYsNyBAQCBnbG9idXNf bF9nZnNfcmVtb3RlX25vZGVfcmVsZWFzZSgKKyB7CisgICAgIEdsb2J1c0dGU05hbWUoZ2xvYnVz X2xfZ2ZzX3JlbW90ZV9ub2RlX3JlbGVhc2UpOworICAgICBHbG9idXNHRlNSZW1vdGVEZWJ1Z0Vu dGVyKCk7CistICAgIAorKworICAgICBpZihub2RlX2luZm8tPm15X2hhbmRsZS0+Y29udHJvbF9u b2RlICE9IG5vZGVfaW5mbykKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2dmc19icmFpbl9yZWxl YXNlX25vZGUoCitAQCAtMjAwLDcgKzIwMCw3IEBAIGdsb2J1c19sX2dmc19yZW1vdGVfbm9kZV9y ZWxlYXNlKAorIAorICAgICBHbG9idXNHRlNSZW1vdGVEZWJ1Z0V4aXQoKTsKKyAgICAgcmV0dXJu IEdMT0JVU19TVUNDRVNTOworLX0gIAorK30KKyAKKyBzdGF0aWMKKyB2b2lkCitAQCAtMjMzLDcg KzIzMyw3IEBAIGdsb2J1c19sX2dmc19yZW1vdGVfbm9kZV9yZXF1ZXN0X2tpY2tvdXQoCisgICAg IGdsb2J1c19sX2dmc19yZW1vdGVfbm9kZV9pbmZvX3QgKiAgIG5vZGVfaW5mbzsKKyAgICAgR2xv YnVzR0ZTTmFtZShnbG9idXNfbF9nZnNfcmVtb3RlX25vZGVfcmVxdWVzdF9raWNrb3V0KTsKKyAg ICAgR2xvYnVzR0ZTUmVtb3RlRGVidWdFbnRlcigpOworLSAgICAKKysKKyAgICAgbm9kZV9pbmZv ID0gKGdsb2J1c19sX2dmc19yZW1vdGVfbm9kZV9pbmZvX3QgKikgdXNlcl9hcmc7CisgCisgLyog TE9DS1MhICovCitAQCAtMjY5LDcgKzI2OSw3IEBAIGdsb2J1c19sX2dmc19yZW1vdGVfbm9kZV9y ZXF1ZXN0X2tpY2tvdXQoCisgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjc19sZW4gPSAxOworICAgICAgICAgICAgIGdsb2J1c19pX2dmc19icmFpbl9ub2RlX3Qg KiogICAgYnJhaW5fbm9kZV9hcnJheTsKKyAgICAgICAgICAgICBnbG9idXNfZ2ZzX2xvZ19yZXN1 bHQoCistICAgICAgICAgICAgICAgIEdMT0JVU19HRlNfTE9HX1dBUk4sIAorKyAgICAgICAgICAg ICAgICBHTE9CVVNfR0ZTX0xPR19XQVJOLAorICAgICAgICAgICAgICAgICAiY291bGQgbm90IGdl dCBpbml0aWFsbHkgcmVxdWVzdGVkIG5vZGUsIHRyeWluZyBhbm90aGVyIiwKKyAgICAgICAgICAg ICAgICAgcmVzdWx0KTsKKyAgICAgICAgICAgICAvKiBzZWxlY3QgYSBuZXcgc2V0IG9mIG5vZGVz ICovCitAQCAtMzAyLDEzICszMDIsMTMgQEAgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9ub2RlX3JlcXVl c3Rfa2lja291dCgKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgY2Fs bGJhY2sgPSBHTE9CVVNfVFJVRTsKKyAgICAgICAgICAgICAgICAgfQorLQkJICAgICAgICBnbG9i dXNfZnJlZShicmFpbl9ub2RlX2FycmF5KTsKKysgICAgICAgICAgICAgICAgZ2xvYnVzX2ZyZWUo YnJhaW5fbm9kZV9hcnJheSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICB9Cisg CisgICAgIGlmKGNhbGxiYWNrKQorLSAgICB7IAorKyAgICB7CisgICAgICAgICBub2RlX2luZm8t PmNhbGxiYWNrKAorICAgICAgICAgICAgIG5vZGVfaW5mbywKKyAgICAgICAgICAgICByZXN1bHQs CitAQCAtMzQ3LDE2ICszNDcsMTYgQEAgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9ub2RlX3JlcXVlc3Rf ZmFrZV9raWNrb3V0KAorICAgICBnbG9idXNfbF9nZnNfcmVtb3RlX2NvbnRyb2xfbm9kZV9ib3Vu Y2VfdCAqIGJvdW5jZTsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9nZnNfcmVtb3RlX25v ZGVfcmVxdWVzdF9mYWtlX2tpY2tvdXQpOworICAgICBHbG9idXNHRlNSZW1vdGVEZWJ1Z0VudGVy KCk7CistICAgIAorKworICAgICBib3VuY2UgPSAoZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9jb250cm9s X25vZGVfYm91bmNlX3QgKikgdXNlcl9hcmc7CistICAgIAorKworICAgICBib3VuY2UtPmNhbGxi YWNrKAorICAgICAgICAgYm91bmNlLT5teV9oYW5kbGUtPmNvbnRyb2xfbm9kZSwKKyAgICAgICAg IEdMT0JVU19TVUNDRVNTLAorICAgICAgICAgYm91bmNlLT51c2VyX2FyZyk7CisgCisgICAgIGds b2J1c19mcmVlKGJvdW5jZSk7CistICAgIAorKworICAgICBHbG9idXNHRlNSZW1vdGVEZWJ1Z0V4 aXQoKTsKKyB9CisgCitAQCAtNDY1LDcgKzQ2NSw3IEBAIGdsb2J1c19sX2dmc19yZW1vdGVfc2Vs ZWN0X25vZGVzKAorICAgICAgICAgICAgIG5vZGVfaW5mby0+dXNlcl9hcmcgPSB1c2VyX2FyZzsK KyAgICAgICAgICAgICBub2RlX2luZm8tPm15X2hhbmRsZSA9IG15X2hhbmRsZTsKKyAgICAgICAg ICAgICBib3VuY2UtPm5keF9vZmZzZXQrKzsKKy0gICAgCisrCisgICAgICAgICAgICAgbXlfaGFu ZGxlLT5zZXNzaW9uX2luZm8uaG9zdF9pZCA9IG5vZGVfaW5mby0+YnJhaW5fbm9kZS0+aG9zdF9p ZDsKKyAgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNfZ2ZzX2lwY19oYW5kbGVfb2J0YWluKAor ICAgICAgICAgICAgICAgICAmbXlfaGFuZGxlLT5zZXNzaW9uX2luZm8sCitAQCAtNDk3LDcgKzQ5 Nyw3IEBAIGdsb2J1c19sX2dmc19yZW1vdGVfc2VsZWN0X25vZGVzKAorIAorIAorIHN0YXRpYwor LWdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgCisrZ2xvYnVzX3Jlc3VsdF90Cisg Z2xvYnVzX2xfZ2ZzX3JlbW90ZV9ub2RlX3JlcXVlc3QoCisgICAgIGdsb2J1c19sX2dmc19yZW1v dGVfaGFuZGxlX3QgKiAgICAgIG15X2hhbmRsZSwKKyAgICAgaW50ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbnVtX25vZGVzLAorQEAgLTUyNyw3ICs1MjcsNyBAQCBnbG9idXNfbF9n ZnNfcmVtb3RlX25vZGVfcmVxdWVzdCgKKyAKKyAgICAgICAgIG5vZGVzX2NyZWF0ZWQgPSAxOwor ICAgICAgICAgbmR4X29mZnNldCA9IDE7CistICAgICAgICAKKysKKyAgICAgICAgIHJlc3VsdCA9 IGdsb2J1c19jYWxsYmFja19yZWdpc3Rlcl9vbmVzaG90KAorICAgICAgICAgICAgIE5VTEwsCisg ICAgICAgICAgICAgTlVMTCwKK0BAIC01NDAsOSArNTQwLDkgQEAgZ2xvYnVzX2xfZ2ZzX3JlbW90 ZV9ub2RlX3JlcXVlc3QoCisgICAgICAgICB9CisgICAgIH0KKyAgICAgbnVtX25vZGVzIC09IG5v ZGVzX2NyZWF0ZWQ7CistICAgIAorKworICAgICBpZihudW1fbm9kZXMgPiAwIHx8IG5vZGVzX2Ny ZWF0ZWQgPT0gMCkKKy0gICAgeyAgIAorKyAgICB7CisgICAgICAgICBib3VuY2UgPSAoZ2xvYnVz X2xfZ2ZzX3JlbW90ZV9jb250cm9sX25vZGVfYm91bmNlX3QgKikgZ2xvYnVzX2NhbGxvYygKKyAg ICAgICAgICAgICAxLCBzaXplb2YoZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9jb250cm9sX25vZGVfYm91 bmNlX3QpKTsKKyAgICAgICAgIGJvdW5jZS0+bXlfaGFuZGxlID0gbXlfaGFuZGxlOworQEAgLTU2 Miw3ICs1NjIsNyBAQCBnbG9idXNfbF9nZnNfcmVtb3RlX25vZGVfcmVxdWVzdCgKKyBlcnJvcjoK KyAgICAgR2xvYnVzR0ZTUmVtb3RlRGVidWdFeGl0V2l0aEVycm9yKCk7CisgICAgIHJldHVybiBy ZXN1bHQ7CistfSAgICAKKyt9CisgCisgc3RhdGljCisgdm9pZAorQEAgLTU3NSw3ICs1NzUsNyBA QCBnbG9idXNfbF9nZnNfaXBjX2ZpbmlzaGVkX2NiKAorICAgICBnbG9idXNfbF9nZnNfcmVtb3Rl X2lwY19ib3VuY2VfdCAqICBib3VuY2VfaW5mbzsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNf bF9nZnNfaXBjX2ZpbmlzaGVkX2NiKTsKKyAgICAgR2xvYnVzR0ZTUmVtb3RlRGVidWdFbnRlcigp OworLSAgICAKKysKKyAgICAgYm91bmNlX2luZm8gPSAoZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9pcGNf Ym91bmNlX3QgKikgIHVzZXJfYXJnOworIAorICAgICBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfb3Bl cmF0aW9uX2ZpbmlzaGVkKAorQEAgLTYwOSw3ICs2MDksNyBAQCBnbG9idXNfbF9nZnNfaXBjX3Bh c3NpdmVfY2IoCisgICAgIEdsb2J1c0dGU05hbWUoZ2xvYnVzX2xfZ2ZzX2lwY19wYXNzaXZlX2Ni KTsKKyAgICAgR2xvYnVzR0ZTUmVtb3RlRGVidWdFbnRlcigpOworIAorLSAgICBub2RlX2luZm8g PSAoZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9ub2RlX2luZm9fdCAqKSB1c2VyX2FyZzsgICAgCisrICAg IG5vZGVfaW5mbyA9IChnbG9idXNfbF9nZnNfcmVtb3RlX25vZGVfaW5mb190ICopIHVzZXJfYXJn OworICAgICBib3VuY2VfaW5mbyA9IG5vZGVfaW5mby0+Ym91bmNlOworICAgICBteV9oYW5kbGUg PSBib3VuY2VfaW5mby0+bXlfaGFuZGxlOworIAorQEAgLTYxOCw3ICs2MTgsNyBAQCBnbG9idXNf bF9nZnNfaXBjX3Bhc3NpdmVfY2IoCisgICAgICAgICBib3VuY2VfaW5mby0+Y2FjaGVkX3Jlc3Vs dCA9IHJlcGx5LT5yZXN1bHQ7CisgICAgIH0KKyAgICAgZWxzZQorLSAgICB7ICAgIAorKyAgICB7 CisgICAgICAgICAvKiBYWFggdGhpcyBpcyBzdXNwZWN0IGlmIHdlIGNoYWluIERTSXMgYW5vdGhl ciBzdGVwICovCisgICAgICAgICBub2RlX2luZm8tPmNzID0gZ2xvYnVzX2xpYmNfc3RyZHVwKAor ICAgICAgICAgICAgIHJlcGx5LT5pbmZvLmRhdGEuY29udGFjdF9zdHJpbmdzWzBdKTsKK0BAIC02 MzMsNyArNjMzLDcgQEAgZ2xvYnVzX2xfZ2ZzX2lwY19wYXNzaXZlX2NiKAorICAgICAgICAgICAg IGJvdW5jZV9pbmZvLT5ub2Rlc19vYnRhaW5lZCsrOworICAgICAgICAgfQorIAorLSAgICAgICAg LyogaWYgd2UgZ290ICdlbSBhbGwgKi8gCisrICAgICAgICAvKiBpZiB3ZSBnb3QgJ2VtIGFsbCAq LworICAgICAgICAgaWYoIWJvdW5jZV9pbmZvLT5ub2Rlc19wZW5kaW5nICYmICFib3VuY2VfaW5m by0+bm9kZXNfcmVxdWVzdGluZykKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBnbG9idXNfbF9n ZnNfcmVtb3RlX25vZGVfaW5mb190ICoqICBub2RlX2FycmF5OworQEAgLTY0NCwxMCArNjQ0LDEw IEBAIGdsb2J1c19sX2dmc19pcGNfcGFzc2l2ZV9jYigKKyAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgCisrCisg ICAgICAgICAgICAgbWVtY3B5KCZmaW5pc2hlZF9pbmZvLCByZXBseSwgc2l6ZW9mKGdsb2J1c19n ZnNfZmluaXNoZWRfaW5mb190KSk7CisgCistICAgICAgICAgICAgZmluaXNoZWRfaW5mby5pbmZv LmRhdGEuZGF0YV9hcmcgPSBib3VuY2VfaW5mby0+bm9kZV9oYW5kbGU7IAorKyAgICAgICAgICAg IGZpbmlzaGVkX2luZm8uaW5mby5kYXRhLmRhdGFfYXJnID0gYm91bmNlX2luZm8tPm5vZGVfaGFu ZGxlOworICAgICAgICAgICAgIGZpbmlzaGVkX2luZm8uaW5mby5kYXRhLmNzX2NvdW50ID0gYm91 bmNlX2luZm8tPm5vZGVzX29idGFpbmVkOworIAorICAgICAgICAgICAgIC8qIGdvdHRhIGRvIHNv bWUgc211c2hpbicgKi8KK0BAIC02NTksMjcgKzY1OSwyNyBAQCBnbG9idXNfbF9nZnNfaXBjX3Bh c3NpdmVfY2IoCisgICAgICAgICAgICAgICAgICAgICBmaW5pc2hlZF9pbmZvLmluZm8uZGF0YS5j c19jb3VudCk7CisgICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgYm91bmNlX2luZm8tPm5vZGVf aGFuZGxlLT5jb3VudDsgaSsrKQorICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgbm9k ZV9pbmZvID0gKGdsb2J1c19sX2dmc19yZW1vdGVfbm9kZV9pbmZvX3QgKikgCisrICAgICAgICAg ICAgICAgIG5vZGVfaW5mbyA9IChnbG9idXNfbF9nZnNfcmVtb3RlX25vZGVfaW5mb190ICopCisg ICAgICAgICAgICAgICAgICAgICBib3VuY2VfaW5mby0+bm9kZV9oYW5kbGUtPm5vZGVzW2ldOwor ICAgICAgICAgICAgICAgICBpZihub2RlX2luZm8gIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAg eworLSAgICAgICAgICAgICAgICAgICAgaWYoYm91bmNlX2luZm8tPm15X2hhbmRsZS0+c3RyaXBl ZF9tb2RlID09IAorKyAgICAgICAgICAgICAgICAgICAgaWYoYm91bmNlX2luZm8tPm15X2hhbmRs ZS0+c3RyaXBlZF9tb2RlID09CisgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0xfR0ZT X1JFTU9URV9TVFJJUEVEX09ORV9UT19PTkUpCisgICAgICAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgICAgICAgbm9kZV9pbmZvLT5zdHJpcGVfY291bnQgPSAxOworICAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg ICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVfaW5mby0+c3RyaXBlX2Nv dW50ID0gCisrICAgICAgICAgICAgICAgICAgICAgICAgbm9kZV9pbmZvLT5zdHJpcGVfY291bnQg PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hlZF9pbmZvLmluZm8uZGF0YS5j c19jb3VudDsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAKKyAgICAgICAgICAgICAgICAgICAg IC8qIFhYWCBoYW5kbGUgY2FzZSB3aGVyZSBjc19jb3VudCBmcm9tIGEgc2luZ2xlIG5vZGUgPiAx ICovCisgICAgICAgICAgICAgICAgICAgICBub2RlX2FycmF5W25keF0gPSBub2RlX2luZm87Cist ICAgICAgICAgICAgICAgICAgICBmaW5pc2hlZF9pbmZvLmluZm8uZGF0YS5jb250YWN0X3N0cmlu Z3NbbmR4XSA9IAorKyAgICAgICAgICAgICAgICAgICAgZmluaXNoZWRfaW5mby5pbmZvLmRhdGEu Y29udGFjdF9zdHJpbmdzW25keF0gPQorICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVfaW5m by0+Y3M7CisgICAgICAgICAgICAgICAgICAgICBub2RlX2luZm8tPmNzID0gTlVMTDsKKy0gICAg ICAgIAorKworICAgICAgICAgICAgICAgICAgICAgaWYobm9kZV9pbmZvLT5pbmZvICYmIG5vZGVf aW5mby0+aW5mb19uZWVkc19mcmVlKQorICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICAgICAgICAgIGdsb2J1c19mcmVlKG5vZGVfaW5mby0+aW5mbyk7CitAQCAtNjk2LDcg KzY5Niw3IEBAIGdsb2J1c19sX2dmc19pcGNfcGFzc2l2ZV9jYigKKyAgICAgICAgIH0KKyAgICAg fQorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZteV9oYW5kbGUtPm11dGV4KTsKKy0gICAgICAg IAorKworIAorICAgICBpZihmaW5pc2hlZCkKKyAgICAgeworQEAgLTcwOSwxMiArNzA5LDEyIEBA IGdsb2J1c19sX2dmc19pcGNfcGFzc2l2ZV9jYigKKyAgICAgICAgIGZvcihuZHggPSAwOyBuZHgg PCBmaW5pc2hlZF9pbmZvLmluZm8uZGF0YS5jc19jb3VudDsgbmR4KyspCisgICAgICAgICB7Cisg ICAgICAgICAgICAgZ2xvYnVzX2ZyZWUoKHZvaWQgKikgZmluaXNoZWRfaW5mby5pbmZvLmRhdGEu Y29udGFjdF9zdHJpbmdzW25keF0pOworLSAgICAgICAgfSAgICAgICAgCisrICAgICAgICB9Cisg ICAgICAgICBnbG9idXNfZnJlZShmaW5pc2hlZF9pbmZvLmluZm8uZGF0YS5jb250YWN0X3N0cmlu Z3MpOworLSAgICAgICAgICAgIAorKworICAgICAgICAgZ2xvYnVzX2ZyZWUoYm91bmNlX2luZm8p OworICAgICB9CistICAgICAgIAorKworICAgICBHbG9idXNHRlNSZW1vdGVEZWJ1Z0V4aXQoKTsK KyAgICAgcmV0dXJuOworIGVycm9yOgorQEAgLTc0MywxOSArNzQzLDE5IEBAIGdsb2J1c19sX2dm c19pcGNfYWN0aXZlX2NiKAorIAorICAgICBHbG9idXNHRlNSZW1vdGVEZWJ1Z0VudGVyKCk7Cisg CistICAgIG5vZGVfaW5mbyA9IChnbG9idXNfbF9nZnNfcmVtb3RlX25vZGVfaW5mb190ICopIHVz ZXJfYXJnOyAgICAKKysgICAgbm9kZV9pbmZvID0gKGdsb2J1c19sX2dmc19yZW1vdGVfbm9kZV9p bmZvX3QgKikgdXNlcl9hcmc7CisgICAgIGJvdW5jZV9pbmZvID0gbm9kZV9pbmZvLT5ib3VuY2U7 CisgICAgIG5vZGVfaW5mby0+ZGF0YV9hcmcgPSByZXBseS0+aW5mby5kYXRhLmRhdGFfYXJnOwor ICAgICBteV9oYW5kbGUgPSBib3VuY2VfaW5mby0+bXlfaGFuZGxlOworIAorLSAgICBpZihib3Vu Y2VfaW5mby0+bXlfaGFuZGxlLT5zdHJpcGVkX21vZGUgPT0gCisrICAgIGlmKGJvdW5jZV9pbmZv LT5teV9oYW5kbGUtPnN0cmlwZWRfbW9kZSA9PQorICAgICAgICAgR0xPQlVTX0xfR0ZTX1JFTU9U RV9TVFJJUEVEX09ORV9UT19PTkUpCisgICAgIHsKKyAgICAgICAgIG5vZGVfaW5mby0+c3RyaXBl X2NvdW50ID0gMTsKKyAgICAgfQorICAgICBlbHNlCisgICAgIHsKKy0gICAgICAgIG5vZGVfaW5m by0+c3RyaXBlX2NvdW50ID0gCisrICAgICAgICBub2RlX2luZm8tPnN0cmlwZV9jb3VudCA9Cisg ICAgICAgICAgICAgKChnbG9idXNfZ2ZzX2RhdGFfaW5mb190ICopIGJvdW5jZV9pbmZvLT5zdGF0 ZSktPmNzX2NvdW50OworICAgICB9CisgCitAQCAtNzY2LDcgKzc2Niw3IEBAIGdsb2J1c19sX2dm c19pcGNfYWN0aXZlX2NiKAorICAgICAgICAgeworICAgICAgICAgICAgIGJvdW5jZV9pbmZvLT5u b2Rlc19vYnRhaW5lZCsrOworICAgICAgICAgfQorLSAgICAgICAgLyogaW4gdGhlIGZhaWx1cmUg Y2FzZSBpdCBpcyBqdXN0IGFuIHVub2J0YWluZWQgbm9kZSwgaWYgd2UgCisrICAgICAgICAvKiBp biB0aGUgZmFpbHVyZSBjYXNlIGl0IGlzIGp1c3QgYW4gdW5vYnRhaW5lZCBub2RlLCBpZiB3ZQor ICAgICAgICAgICAgIGdvdCAwIGl0IHdpbGwgYmUgYW4gZXJyb3IgKi8KKyAKKyAgICAgICAgIC8q IGlmIHRoaXMgaXMgdGhlIGxhc3Qgb25lICovCitAQCAtNzc0LDcgKzc3NCw3IEBAIGdsb2J1c19s X2dmc19pcGNfYWN0aXZlX2NiKAorICAgICAgICAgICAgICYmIGJvdW5jZV9pbmZvLT5ub2Rlc19y ZXF1ZXN0aW5nID09IDApCisgICAgICAgICB7CisgICAgICAgICAgICAgZmluaXNoZWQgPSBHTE9C VVNfVFJVRTsKKy0gICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgLyogaWYgd2UgZmFp bGVkIHRvIGdldCBhbnkgc3VjY2VzZnVsbHkgKi8KKyAgICAgICAgICAgICBpZihib3VuY2VfaW5m by0+bm9kZXNfb2J0YWluZWQgPT0gMCkKKyAgICAgICAgICAgICB7CitAQCAtODAxLDcgKzgwMSw3 IEBAIGdsb2J1c19sX2dmc19pcGNfYWN0aXZlX2NiKAorICAgICAgICAgICAgICAgICAgICAgZ2xv YnVzX2ZyZWUobm9kZV9pbmZvLT5pbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgIG5vZGVfaW5m by0+aW5mbyA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgICBub2RlX2luZm8tPmluZm9fbmVl ZHNfZnJlZSA9IEdMT0JVU19GQUxTRTsKKy0gICAgICAgICAgICAgICAgfSAgIAorKyAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorICAgICB9CitAQCAtODEzLDcg KzgxMyw3IEBAIGdsb2J1c19sX2dmc19pcGNfYWN0aXZlX2NiKAorICAgICAgICAgZ2xvYnVzX2dy aWRmdHBfc2VydmVyX29wZXJhdGlvbl9maW5pc2hlZCgKKyAgICAgICAgICAgICBib3VuY2VfaW5m by0+b3AsCisgICAgICAgICAgICAgZmluaXNoZWRfaW5mby5yZXN1bHQsCistICAgICAgICAgICAg JmZpbmlzaGVkX2luZm8pOyAgICAgICAgICAgCisrICAgICAgICAgICAgJmZpbmlzaGVkX2luZm8p OworIAorICAgICAgICAgZ2xvYnVzX2ZyZWUoYm91bmNlX2luZm8pOworICAgICB9CitAQCAtODQ5 LDcgKzg0OSw3IEBAIGdsb2J1c19sX2dmc19pcGNfdHJhbnNmZXJfY2IoCisgICAgIG5vZGVfaW5m byA9IChnbG9idXNfbF9nZnNfcmVtb3RlX25vZGVfaW5mb190ICopIHVzZXJfYXJnOworICAgICBi b3VuY2VfaW5mbyA9IG5vZGVfaW5mby0+Ym91bmNlOworICAgICBteV9oYW5kbGUgPSBib3VuY2Vf aW5mby0+bXlfaGFuZGxlOworLSAgICAKKysKKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJm15X2hh bmRsZS0+bXV0ZXgpOworICAgICB7CisgICAgICAgICBib3VuY2VfaW5mby0+bm9kZXNfcGVuZGlu Zy0tOworQEAgLTg1NywxMyArODU3LDEzIEBAIGdsb2J1c19sX2dmc19pcGNfdHJhbnNmZXJfY2Io CisgICAgICAgICB7CisgICAgICAgICAgICAgYm91bmNlX2luZm8tPmNhY2hlZF9yZXN1bHQgPSBy ZXBseS0+cmVzdWx0OworICAgICAgICAgfQorLSAgICAKKysKKyAgICAgICAgIC8qIHdhaXQgZm9y IGFsbCB0aGUgbm9kZXMgdG8gcmV0dXJuLCBvciBpZiByZWN2aW5nIGFuZCB3ZSBnZXQgYW4gZXJy b3IKKy0gICAgICAgICAgICBiZWZvcmUgdGhlIGZpcnN0IGJlZ2luX2NiIHdlIHF1aXQgcmlnaHQg bm93ICovICAgIAorLSAgICAgICAgaWYoKCFib3VuY2VfaW5mby0+bm9kZXNfcGVuZGluZyAmJiAh Ym91bmNlX2luZm8tPm5vZGVzX3JlcXVlc3RpbmcpIHx8IAorKyAgICAgICAgICAgIGJlZm9yZSB0 aGUgZmlyc3QgYmVnaW5fY2Igd2UgcXVpdCByaWdodCBub3cgKi8KKysgICAgICAgIGlmKCghYm91 bmNlX2luZm8tPm5vZGVzX3BlbmRpbmcgJiYgIWJvdW5jZV9pbmZvLT5ub2Rlc19yZXF1ZXN0aW5n KSB8fAorICAgICAgICAgICAgIChib3VuY2VfaW5mby0+Y2FjaGVkX3Jlc3VsdCAhPSBHTE9CVVNf U1VDQ0VTUyAmJgorICAgICAgICAgICAgICAgICBib3VuY2VfaW5mby0+cmVjdl9wZW5kaW5nKSkK Ky0gICAgICAgIHsgICAgICAgIAorKyAgICAgICAgeworICAgICAgICAgICAgIG1lbXNldCgmZmlu aXNoZWRfaW5mbywgJ1wwJywgc2l6ZW9mKGdsb2J1c19nZnNfZmluaXNoZWRfaW5mb190KSk7Cisg ICAgICAgICAgICAgZmluaXNoZWRfaW5mby50eXBlID0gcmVwbHktPnR5cGU7CisgICAgICAgICAg ICAgZmluaXNoZWRfaW5mby5pZCA9IHJlcGx5LT5pZDsKK0BAIC04NzIsMTUgKzg3MiwxNSBAQCBn bG9idXNfbF9nZnNfaXBjX3RyYW5zZmVyX2NiKAorICAgICAgICAgICAgIGZpbmlzaGVkX2luZm8u cmVzdWx0ID0gYm91bmNlX2luZm8tPmNhY2hlZF9yZXN1bHQ7CisgICAgICAgICAgICAgZmluaXNo ID0gR0xPQlVTX1RSVUU7CisgICAgICAgICAgICAgb3AgPSBib3VuY2VfaW5mby0+b3A7CistICAg ICAgICAKKysKKyAgICAgICAgICAgICBpZighYm91bmNlX2luZm8tPmV2ZW50c19lbmFibGVkKQor ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9ub2Rl X2luZm9fdCAqIG5vZGVfaW5mbzsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAg Zm9yKGkgPSAwOyBpIDwgYm91bmNlX2luZm8tPm5vZGVfaGFuZGxlLT5jb3VudDsgaSsrKQorICAg ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBub2RlX2luZm8gPSBib3VuY2Vf aW5mby0+bm9kZV9oYW5kbGUtPm5vZGVzW2ldOworLSAKKysKKyAgICAgICAgICAgICAgICAgICAg IGlmKG5vZGVfaW5mby0+aW5mbyAmJiBub2RlX2luZm8tPmluZm9fbmVlZHNfZnJlZSkKKyAgICAg ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNfZnJlZShu b2RlX2luZm8tPmluZm8pOworQEAgLTg5MywxNyArODkzLDE3IEBAIGdsb2J1c19sX2dmc19pcGNf dHJhbnNmZXJfY2IoCisgICAgICAgICAgICAgICAgICAgICBnbG9idXNfZnJlZShib3VuY2VfaW5m by0+ZW9mX2NvdW50KTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBnbG9i dXNfZnJlZShib3VuY2VfaW5mbyk7CistICAgICAgICAgICAgfSAgICAgICAgCisrICAgICAgICAg ICAgfQorICAgICAgICAgfQorICAgICB9CisgICAgIGdsb2J1c19tdXRleF91bmxvY2soJm15X2hh bmRsZS0+bXV0ZXgpOworLSAgICAKKysKKyAgICAgaWYoZmluaXNoKQorICAgICB7CisgICAgICAg ICBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfb3BlcmF0aW9uX2ZpbmlzaGVkKAorICAgICAgICAgICAg IG9wLAorICAgICAgICAgICAgIGZpbmlzaGVkX2luZm8ucmVzdWx0LAorLSAgICAgICAgICAgICZm aW5pc2hlZF9pbmZvKTsgCisrICAgICAgICAgICAgJmZpbmlzaGVkX2luZm8pOworICAgICB9Cisg CisgICAgIEdsb2J1c0dGU1JlbW90ZURlYnVnRXhpdCgpOworQEAgLTkzMCw4ICs5MzAsOCBAQCBn bG9idXNfbF9nZnNfaXBjX2V2ZW50X2NiKAorICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjdHI7CisgICAgIEdsb2J1c0dGU05hbWUoZ2xvYnVzX2xfZ2ZzX2lwY19ldmVu dF9jYik7CisgICAgIEdsb2J1c0dGU1JlbW90ZURlYnVnRW50ZXIoKTsKKy0gICAgCistICAgIG5v ZGVfaW5mbyA9IChnbG9idXNfbF9nZnNfcmVtb3RlX25vZGVfaW5mb190ICopIHVzZXJfYXJnOyAg ICAKKysKKysgICAgbm9kZV9pbmZvID0gKGdsb2J1c19sX2dmc19yZW1vdGVfbm9kZV9pbmZvX3Qg KikgdXNlcl9hcmc7CisgICAgIGJvdW5jZV9pbmZvID0gbm9kZV9pbmZvLT5ib3VuY2U7CisgICAg IG15X2hhbmRsZSA9IGJvdW5jZV9pbmZvLT5teV9oYW5kbGU7CisgCitAQCAtOTU0LDEyICs5NTQs MTIgQEAgZ2xvYnVzX2xfZ2ZzX2lwY19ldmVudF9jYigKKyAgICAgICAgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICAgICAgICAgICBib3VuY2VfaW5mby0+ZXZlbnRzX2VuYWJsZWQgPSBH TE9CVVNfVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXBseS0+ZXZlbnRfYXJnID0g Ym91bmNlX2luZm87CistICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHktPmV2ZW50X21hc2sg PSAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0dGU19FVkVOVF9UUkFOU0ZF Ul9BQk9SVCB8IAorKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5LT5ldmVudF9tYXNrID0K KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0dGU19FVkVOVF9UUkFOU0ZFUl9B Qk9SVCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19HRlNfRVZFTlRfVFJB TlNGRVJfQ09NUExFVEUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfR0ZT X0VWRU5UX0JZVEVTX1JFQ1ZEIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVT X0dGU19FVkVOVF9SQU5HRVNfUkVDVkQ7CistICAgICAgICAgICAgCisrCisgICAgICAgICAgICAg ICAgICAgICAgICAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX29wZXJhdGlvbl9ldmVudCgKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYm91bmNlX2luZm8tPm9wLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHTE9CVVNfU1VDQ0VTUywKK0BAIC05NjksNyArOTY5LDcgQEAgZ2xvYnVz X2xfZ2ZzX2lwY19ldmVudF9jYigKKyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg ICAgY2FzZSBHTE9CVVNfR0ZTX0VWRU5UX1RSQU5TRkVSX0NPTk5FQ1RFRDoKKyAgICAgICAgICAg ICAgICAgYm91bmNlX2luZm8tPmV2ZW50X3BlbmRpbmctLTsKKy0gICAgICAgICAgICAgICAgaWYo IWJvdW5jZV9pbmZvLT5ldmVudF9wZW5kaW5nICYmIAorKyAgICAgICAgICAgICAgICBpZighYm91 bmNlX2luZm8tPmV2ZW50X3BlbmRpbmcgJiYKKyAgICAgICAgICAgICAgICAgICAgICFib3VuY2Vf aW5mby0+cmVjdl9wZW5kaW5nICYmCisgICAgICAgICAgICAgICAgICAgICAhYm91bmNlX2luZm8t Pm5vZGVzX3JlcXVlc3RpbmcpCisgICAgICAgICAgICAgICAgIHsKK0BAIC05ODIsNyArOTgyLDcg QEAgZ2xvYnVzX2xfZ2ZzX2lwY19ldmVudF9jYigKKyAgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICAgbm9kZV9pbmZvID0gYm91bmNlX2luZm8tPm5vZGVfaGFuZGxlLT5ub2Rl c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgIGluZm8gPSAoZ2xvYnVzX2dmc190cmFuc2Zlcl9p bmZvX3QgKikgbm9kZV9pbmZvLT5pbmZvOworLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAg ICAgICAgICAgICAgIGlmKG5vZGVfaW5mby0+aXBjX2hhbmRsZSA9PSBpcGNfaGFuZGxlKQorICAg ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19hc3Nl cnQoCitAQCAtOTk2LDExICs5OTYsMTEgQEAgZ2xvYnVzX2xfZ2ZzX2lwY19ldmVudF9jYigKKyAg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICBmb3IoY3RyID0gMDsgY3RyIDwgcmVwbHktPm5vZGVfY291bnQ7IGN0cisrKQorLSAgICAgICAg ICAgICAgICB7IAorKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBib3Vu Y2VfaW5mby0+ZW9mX2NvdW50W2N0cl0gKz0gcmVwbHktPmVvZl9jb3VudFtjdHJdOworICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGJvdW5jZV9pbmZvLT5wYXJ0aWFsX2VvZl9j b3VudHMrKzsKKy0gICAgICAgICAgICAgICAgaWYoYm91bmNlX2luZm8tPnBhcnRpYWxfZW9mX2Nv dW50cyArIDEgPT0gCisrICAgICAgICAgICAgICAgIGlmKGJvdW5jZV9pbmZvLT5wYXJ0aWFsX2Vv Zl9jb3VudHMgKyAxID09CisgICAgICAgICAgICAgICAgICAgICBib3VuY2VfaW5mby0+bm9kZV9j b3VudCAmJiAhYm91bmNlX2luZm8tPmZpbmlzaGVkKQorICAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgICBtZW1zZXQoJmV2ZW50X2luZm8sICdcMCcsIHNpemVvZihnbG9idXNf Z2ZzX2V2ZW50X2luZm9fdCkpOworQEAgLTEwMTIsMTAgKzEwMTIsMTAgQEAgZ2xvYnVzX2xfZ2Zz X2lwY19ldmVudF9jYigKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYXN0ZXJfbm9kZS0+aXBj X2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmZXZlbnRfaW5mbyk7CisgICAgICAg ICAgICAgICAgICAgICBib3VuY2VfaW5mby0+ZmluYWxfZW9mKys7CistICAgICAgICAgICAgICAg IH0gICAKKysgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgICAgICBkZWZhdWx0OgorLSAgICAgICAgICAgICAgICBpZighYm91bmNlX2luZm8tPmV2ZW50 X3BlbmRpbmcgfHwgCisrICAgICAgICAgICAgICAgIGlmKCFib3VuY2VfaW5mby0+ZXZlbnRfcGVu ZGluZyB8fAorICAgICAgICAgICAgICAgICAgICAgcmVwbHktPnR5cGUgPT0gR0xPQlVTX0dGU19F VkVOVF9CWVRFU19SRUNWRCB8fAorICAgICAgICAgICAgICAgICAgICAgcmVwbHktPnR5cGUgPT0g R0xPQlVTX0dGU19FVkVOVF9SQU5HRVNfUkVDVkQpCisgICAgICAgICAgICAgICAgIHsKK0BAIC0x MDI3LDE0ICsxMDI3LDE0IEBAIGdsb2J1c19sX2dmc19pcGNfZXZlbnRfY2IoCisgICAgIGdsb2J1 c19tdXRleF91bmxvY2soJm15X2hhbmRsZS0+bXV0ZXgpOworIAorICAgICBpZihmaW5pc2gpCist ICAgIHsgICAgICAgIAorKyAgICB7CisgICAgICAgICByZXBseS0+ZXZlbnRfYXJnID0gYm91bmNl X2luZm87CisgICAgICAgICBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfb3BlcmF0aW9uX2V2ZW50KAor ICAgICAgICAgICAgIGJvdW5jZV9pbmZvLT5vcCwKKyAgICAgICAgICAgICBHTE9CVVNfU1VDQ0VT UywKKyAgICAgICAgICAgICByZXBseSk7CisgICAgIH0KKy0gICAgICAgCisrCisgICAgIEdsb2J1 c0dGU1JlbW90ZURlYnVnRXhpdCgpOworIH0KKyAKK0BAIC0xMDUwLDcgKzEwNTAsNyBAQCBnbG9i dXNfbF9nZnNfcmVtb3RlX2luaXRfYm91bmNlX2luZm8oCisgICAgIGdsb2J1c19yZXN1bHRfdCAg ICAgICAgICAgICAgICAgICAgIHJlc3VsdDsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9n ZnNfcmVtb3RlX2luaXRfYm91bmNlX2luZm8pOworICAgICBHbG9idXNHRlNSZW1vdGVEZWJ1Z0Vu dGVyKCk7CistICAgIAorKworICAgICBib3VuY2VfaW5mbyA9IChnbG9idXNfbF9nZnNfcmVtb3Rl X2lwY19ib3VuY2VfdCAqKQorICAgICAgICAgZ2xvYnVzX2NhbGxvYygxLCBzaXplb2YoZ2xvYnVz X2xfZ2ZzX3JlbW90ZV9pcGNfYm91bmNlX3QpKTsKKyAgICAgaWYoIWJvdW5jZV9pbmZvKQorQEAg LTEwNTgsMTIgKzEwNTgsMTIgQEAgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9pbml0X2JvdW5jZV9pbmZv KAorICAgICAgICAgcmVzdWx0ID0gR2xvYnVzR0ZTRXJyb3JNZW1vcnkoImJvdW5jZV9pbmZvIik7 CisgICAgICAgICBnb3RvIGVycm9yX2FsbG9jOworICAgICB9CistICAgIAorKworICAgICBib3Vu Y2VfaW5mby0+b3AgPSBvcDsKKyAgICAgYm91bmNlX2luZm8tPnN0YXRlID0gc3RhdGU7CisgICAg IGJvdW5jZV9pbmZvLT5teV9oYW5kbGUgPSBteV9oYW5kbGU7CisgICAgICpib3VuY2UgPSBib3Vu Y2VfaW5mbzsKKy0gICAgCisrCisgICAgIEdsb2J1c0dGU1JlbW90ZURlYnVnRXhpdCgpOworICAg ICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgCitAQCAtMTA4NCw5ICsxMDg0LDkgQEAgZ2xvYnVz X2xfZ2ZzX3JlbW90ZV9zdGF0KAorICAgICBnbG9idXNfbF9nZnNfcmVtb3RlX2hhbmRsZV90ICog ICAgICBteV9oYW5kbGU7CisgICAgIEdsb2J1c0dGU05hbWUoZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9z dGF0KTsKKyAgICAgR2xvYnVzR0ZTUmVtb3RlRGVidWdFbnRlcigpOworLSAgICAKKysKKyAgICAg bXlfaGFuZGxlID0gKGdsb2J1c19sX2dmc19yZW1vdGVfaGFuZGxlX3QgKikgdXNlcl9hcmc7Cist ICAgIAorKworICAgICByZXN1bHQgPSBnbG9idXNfbF9nZnNfcmVtb3RlX2luaXRfYm91bmNlX2lu Zm8oCisgICAgICAgICAmYm91bmNlX2luZm8sIG9wLCBzdGF0X2luZm8sIG15X2hhbmRsZSk7Cisg CitAQCAtMTExOSw3ICsxMTE5LDcgQEAgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9jb21tYW5kKAorICAg ICBHbG9idXNHRlNSZW1vdGVEZWJ1Z0VudGVyKCk7CisgCisgICAgIG15X2hhbmRsZSA9IChnbG9i dXNfbF9nZnNfcmVtb3RlX2hhbmRsZV90ICopIHVzZXJfYXJnOworLSAgICAKKysKKyAgICAgcmVz dWx0ID0gZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9pbml0X2JvdW5jZV9pbmZvKAorICAgICAgICAgJmJv dW5jZV9pbmZvLCBvcCwgY29tbWFuZF9pbmZvLCBteV9oYW5kbGUpOworIAorQEAgLTExNTEsMjAg KzExNTEsMjAgQEAgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9saXN0KAorICAgICBnbG9idXNfbF9nZnNf cmVtb3RlX25vZGVfaW5mb190ICogICBub2RlX2luZm87CisgICAgIEdsb2J1c0dGU05hbWUoZ2xv YnVzX2xfZ2ZzX3JlbW90ZV9saXN0KTsKKyAgICAgR2xvYnVzR0ZTUmVtb3RlRGVidWdFbnRlcigp OworLSAgICAKKysKKyAgICAgbXlfaGFuZGxlID0gKGdsb2J1c19sX2dmc19yZW1vdGVfaGFuZGxl X3QgKikgdXNlcl9hcmc7CisgCistICAgIC8qIFhYWCBpdCBhcHBlYXJzIG5vIGxvY2sgaXMgbmVl ZGVkIGhlcmUgKi8gCisrICAgIC8qIFhYWCBpdCBhcHBlYXJzIG5vIGxvY2sgaXMgbmVlZGVkIGhl cmUgKi8KKyAgICAgcmVzdWx0ID0gZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9pbml0X2JvdW5jZV9pbmZv KAorICAgICAgICAgJmJvdW5jZV9pbmZvLCBvcCwgdHJhbnNmZXJfaW5mbywgbXlfaGFuZGxlKTsK Ky0gICAgZ2xvYnVzX2ZyZWUoYm91bmNlX2luZm8tPm5vZGVfaGFuZGxlKTsgICAKKy0gICAgICAg ICAKKy0gICAgYm91bmNlX2luZm8tPm5vZGVfaGFuZGxlID0gKGdsb2J1c19sX2dmc19yZW1vdGVf bm9kZV9oYW5kbGVfdCAqKSAKKysgICAgZ2xvYnVzX2ZyZWUoYm91bmNlX2luZm8tPm5vZGVfaGFu ZGxlKTsKKysKKysgICAgYm91bmNlX2luZm8tPm5vZGVfaGFuZGxlID0gKGdsb2J1c19sX2dmc19y ZW1vdGVfbm9kZV9oYW5kbGVfdCAqKQorICAgICAgICAgdHJhbnNmZXJfaW5mby0+ZGF0YV9hcmc7 CisgICAgIGJvdW5jZV9pbmZvLT5ub2RlX2hhbmRsZS0+ZGVzdHJveSsrOworLSAgICAgICAgICAg ICAgICAgCisrCisgICAgIG5vZGVfaW5mbyA9IGJvdW5jZV9pbmZvLT5ub2RlX2hhbmRsZS0+bm9k ZXNbMF07CistICAgICAgICAKKysKKyAgICAgdHJhbnNmZXJfaW5mby0+ZGF0YV9hcmcgPSBub2Rl X2luZm8tPmRhdGFfYXJnOworICAgICB0cmFuc2Zlcl9pbmZvLT5zdHJpcGVfY291bnQgPSAxOwor ICAgICB0cmFuc2Zlcl9pbmZvLT5ub2RlX25keCA9IDA7CitAQCAtMTE3NiwxMyArMTE3NiwxMyBA QCBnbG9idXNfbF9nZnNfcmVtb3RlX2xpc3QoCisgICAgIG5vZGVfaW5mby0+aW5mbyA9IE5VTEw7 CisgICAgIG5vZGVfaW5mby0+aW5mb19uZWVkc19mcmVlID0gR0xPQlVTX0ZBTFNFOworICAgICBu b2RlX2luZm8tPmJvdW5jZSA9IGJvdW5jZV9pbmZvOworLSAgICAKKysKKyAgICAgcmVzdWx0ID0g Z2xvYnVzX2dmc19pcGNfcmVxdWVzdF9saXN0KAorICAgICAgICAgbm9kZV9pbmZvLT5pcGNfaGFu ZGxlLAorICAgICAgICAgdHJhbnNmZXJfaW5mbywKKyAgICAgICAgIGdsb2J1c19sX2dmc19pcGNf dHJhbnNmZXJfY2IsCisgICAgICAgICBnbG9idXNfbF9nZnNfaXBjX2V2ZW50X2NiLAorLSAgICAg ICAgbm9kZV9pbmZvKTsgCisrICAgICAgICBub2RlX2luZm8pOworICAgICBpZihyZXN1bHQgIT0g R0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIEdsb2J1c0dGU0Vycm9yT3BGaW5pc2hl ZCgKK0BAIC0xMjA3LDIxICsxMjA3LDIxIEBAIGdsb2J1c19sX2dmc19yZW1vdGVfcmVjdl9uZXh0 KAorICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZHggPSAxOworICAg ICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dmc19yZW1vdGVfcmVjdl9uZXh0KTsKKyAgICAgR2xv YnVzR0ZTUmVtb3RlRGVidWdFbnRlcigpOworLSAgICAgICAgICAgICAgIAorKworICAgICAvKiBh bHJlYWR5IHNlbnQgcmVjdiB0byBub2RlIDAsIG5vdyBzZW5kIHRoZSByZXN0ICovCisgICAgIHRy YW5zZmVyX2luZm8gPSAoZ2xvYnVzX2dmc190cmFuc2Zlcl9pbmZvX3QgKikgYm91bmNlX2luZm8t PnN0YXRlOworLSAgICAKKysKKyAgICAgbm9kZV9jb3VudCA9IGJvdW5jZV9pbmZvLT5ub2RlX2hh bmRsZS0+Y291bnQ7CistICAgIAorKworICAgICBmb3IoaSA9IDE7IGkgPCBib3VuY2VfaW5mby0+ bm9kZV9oYW5kbGUtPmNvdW50OyBpKyspCisgICAgIHsKKyAgICAgICAgIG5vZGVfaW5mbyA9IGJv dW5jZV9pbmZvLT5ub2RlX2hhbmRsZS0+bm9kZXNbaV07CistICAgICAgICAKKysKKyAgICAgICAg IG5ld190cmFuc2Zlcl9pbmZvID0gKGdsb2J1c19nZnNfdHJhbnNmZXJfaW5mb190ICopCisgICAg ICAgICAgICAgZ2xvYnVzX2NhbGxvYygxLCBzaXplb2YoZ2xvYnVzX2dmc190cmFuc2Zlcl9pbmZv X3QpKTsKKy0gICAgICAgIG1lbWNweShuZXdfdHJhbnNmZXJfaW5mbywgdHJhbnNmZXJfaW5mbywg CisrICAgICAgICBtZW1jcHkobmV3X3RyYW5zZmVyX2luZm8sIHRyYW5zZmVyX2luZm8sCisgICAg ICAgICAgICAgc2l6ZW9mKGdsb2J1c19nZnNfdHJhbnNmZXJfaW5mb190KSk7CistICAgICAgICAK KysKKyAgICAgICAgIG5ld190cmFuc2Zlcl9pbmZvLT50cnVuY2F0ZSA9IEdMT0JVU19GQUxTRTsK KyAgICAgICAgIG5ld190cmFuc2Zlcl9pbmZvLT5kYXRhX2FyZyA9IG5vZGVfaW5mby0+ZGF0YV9h cmc7CisgICAgICAgICBuZXdfdHJhbnNmZXJfaW5mby0+bm9kZV9jb3VudCA9IG5vZGVfY291bnQ7 CitAQCAtMTIzOCw3ICsxMjM4LDcgQEAgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9yZWN2X25leHQoCisg ICAgICAgICAgICAgbmV3X3RyYW5zZmVyX2luZm8sCisgICAgICAgICAgICAgZ2xvYnVzX2xfZ2Zz X2lwY190cmFuc2Zlcl9jYiwKKyAgICAgICAgICAgICBnbG9idXNfbF9nZnNfaXBjX2V2ZW50X2Ni LAorLSAgICAgICAgICAgIG5vZGVfaW5mbyk7IAorKyAgICAgICAgICAgIG5vZGVfaW5mbyk7Cisg ICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICB7CisgICAgICAg ICAgICAgaWYoYm91bmNlX2luZm8tPm5vZGVzX3BlbmRpbmcgPiAwKQorQEAgLTEyNTYsNyArMTI1 Niw3IEBAIGdsb2J1c19sX2dmc19yZW1vdGVfcmVjdl9uZXh0KAorICAgICAgICAgYm91bmNlX2lu Zm8tPmV2ZW50X3BlbmRpbmcrKzsKKyAgICAgICAgIGJvdW5jZV9pbmZvLT5iZWdpbl9ldmVudF9w ZW5kaW5nKys7CisgICAgIH0KKy0gICAgCisrCisgICAgIGJvdW5jZV9pbmZvLT5yZWN2X3BlbmRp bmcgPSBHTE9CVVNfRkFMU0U7CisgCisgICAgIEdsb2J1c0dGU1JlbW90ZURlYnVnRXhpdCgpOwor QEAgLTEyODAsMjMgKzEyODAsMjMgQEAgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9yZWN2KAorICAgICBp bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlX2NvdW50OworICAgICBHbG9i dXNHRlNOYW1lKGdsb2J1c19sX2dmc19yZW1vdGVfcmVjdik7CisgICAgIEdsb2J1c0dGU1JlbW90 ZURlYnVnRW50ZXIoKTsKKy0gICAgCisrCisgICAgIG15X2hhbmRsZSA9IChnbG9idXNfbF9nZnNf cmVtb3RlX2hhbmRsZV90ICopIHVzZXJfYXJnOworIAorICAgICBnbG9idXNfbXV0ZXhfbG9jaygm bXlfaGFuZGxlLT5tdXRleCk7CisgICAgIHsKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX2dm c19yZW1vdGVfaW5pdF9ib3VuY2VfaW5mbygKKyAgICAgICAgICAgICAmYm91bmNlX2luZm8sIG9w LCB0cmFuc2Zlcl9pbmZvLCBteV9oYW5kbGUpOworLSAgICAKKy0gICAgICAgIGJvdW5jZV9pbmZv LT5ub2RlX2hhbmRsZSA9IChnbG9idXNfbF9nZnNfcmVtb3RlX25vZGVfaGFuZGxlX3QgKikgCisr CisrICAgICAgICBib3VuY2VfaW5mby0+bm9kZV9oYW5kbGUgPSAoZ2xvYnVzX2xfZ2ZzX3JlbW90 ZV9ub2RlX2hhbmRsZV90ICopCisgICAgICAgICAgICAgdHJhbnNmZXJfaW5mby0+ZGF0YV9hcmc7 CisgCisgICAgICAgICAvKiBvbmx5IGdvaW5nIHRvIGRvIHRoZSBmaXJzdCByZWN2IHJlcXVlc3Qg aGVyZSwgdGhlIG90aGVycworLSAgICAgICAgICAgd2lsbCBiZSBzZW50IGFmdGVyIHRoaXMgb25l IHJlc3BvbmRzIHdpdGggdGhlIGJlZ2luIGV2ZW50IAorLSAgICAKKy0gICAgICAgICAgIHdlIG5l ZWQgdG8gZG8gdGhpcyBwcmltYXJpbHkgdG8gbWFrZSBzdXJlIHRoZSBmaWxlIGlzIG9wZW5lZCAK KysgICAgICAgICAgIHdpbGwgYmUgc2VudCBhZnRlciB0aGlzIG9uZSByZXNwb25kcyB3aXRoIHRo ZSBiZWdpbiBldmVudAorKworKyAgICAgICAgICAgd2UgbmVlZCB0byBkbyB0aGlzIHByaW1hcmls eSB0byBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgb3BlbmVkCisgICAgICAgICAgICBpbiBUUlVOQyBt b2RlIG9ubHkgdGhlIGZpcnN0IHRpbWUgKi8KKy0gICAgICAgCisrCisgICAgICAgICBib3VuY2Vf aW5mby0+bm9kZV9oYW5kbGUtPmRlc3Ryb3krKzsKKyAgICAgICAgIG5vZGVfY291bnQgPSBib3Vu Y2VfaW5mby0+bm9kZV9oYW5kbGUtPmNvdW50OworICAgICAgICAgaWYobm9kZV9jb3VudCA+IDEp CitAQCAtMTMwNSw5ICsxMzA1LDkgQEAgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9yZWN2KAorICAgICAg ICAgfQorICAgICAgICAgYm91bmNlX2luZm8tPm5vZGVzX3JlcXVlc3RpbmcgPSBub2RlX2NvdW50 OworICAgICAgICAgYm91bmNlX2luZm8tPm5vZGVfY291bnQgPSBub2RlX2NvdW50OworLSAgICAg ICAgICAgIAorKworICAgICAgICAgbm9kZV9pbmZvID0gYm91bmNlX2luZm8tPm5vZGVfaGFuZGxl LT5ub2Rlc1swXTsKKy0gICAgCisrCisgICAgICAgICBuZXdfdHJhbnNmZXJfaW5mbyA9IChnbG9i dXNfZ2ZzX3RyYW5zZmVyX2luZm9fdCAqKQorICAgICAgICAgICAgIGdsb2J1c19jYWxsb2MoMSwg c2l6ZW9mKGdsb2J1c19nZnNfdHJhbnNmZXJfaW5mb190KSk7CisgICAgICAgICBtZW1jcHkobmV3 X3RyYW5zZmVyX2luZm8sdHJhbnNmZXJfaW5mbywKK0BAIC0xMzI2LDE0ICsxMzI2LDE0IEBAIGds b2J1c19sX2dmc19yZW1vdGVfcmVjdigKKyAgICAgICAgICAgICBuZXdfdHJhbnNmZXJfaW5mbywK KyAgICAgICAgICAgICBnbG9idXNfbF9nZnNfaXBjX3RyYW5zZmVyX2NiLAorICAgICAgICAgICAg IGdsb2J1c19sX2dmc19pcGNfZXZlbnRfY2IsCistICAgICAgICAgICAgbm9kZV9pbmZvKTsgCisr ICAgICAgICAgICAgbm9kZV9pbmZvKTsKKyAgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VD Q0VTUykKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgfQor ICAgICAgICAgLyogY291bGQgbWF5YmUgZ2V0IGF3YXkgd2l0aCBubyBsb2NrIGlmIHdlIG1vdmVk IHRoZSBuZXh0IGZldyBsaW5lcworLSAgICAgICAgICAgIGFib3ZlIHRoZSByZXF1ZXN0LiAgd2Ug d291bGQgaGF2ZSB0byB0aGVuIGFzc3VtZSB0aGF0IHRoZSAKKy0gICAgICAgICAgICB2YWx1ZXMg d2VyZSBtZWFuaW5nbGVzcyB1bmRlciBlcnJvci4gIFRoaXMgd2F5IGlzIG1vcmUgCisrICAgICAg ICAgICAgYWJvdmUgdGhlIHJlcXVlc3QuICB3ZSB3b3VsZCBoYXZlIHRvIHRoZW4gYXNzdW1lIHRo YXQgdGhlCisrICAgICAgICAgICAgdmFsdWVzIHdlcmUgbWVhbmluZ2xlc3MgdW5kZXIgZXJyb3Iu ICBUaGlzIHdheSBpcyBtb3JlCisgICAgICAgICAgICAgY29uc2lzdGFudCBhbmQgdGhlIGxvY2sg aXMgbm90IHZlcnkgY29zdGx5ICovCisgICAgICAgICBib3VuY2VfaW5mby0+bm9kZXNfcGVuZGlu ZysrOworICAgICAgICAgYm91bmNlX2luZm8tPmV2ZW50X3BlbmRpbmcrKzsKK0BAIC0xMzY4LDIx ICsxMzY4LDIxIEBAIGdsb2J1c19sX2dmc19yZW1vdGVfc2VuZCgKKyAgICAgaW50ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaTsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9n ZnNfcmVtb3RlX3NlbmQpOworICAgICBHbG9idXNHRlNSZW1vdGVEZWJ1Z0VudGVyKCk7CistICAg IAorKworICAgICBteV9oYW5kbGUgPSAoZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9oYW5kbGVfdCAqKSB1 c2VyX2FyZzsKKyAKKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJm15X2hhbmRsZS0+bXV0ZXgpOwor ICAgICB7CisgICAgICAgICByZXN1bHQgPSBnbG9idXNfbF9nZnNfcmVtb3RlX2luaXRfYm91bmNl X2luZm8oCisgICAgICAgICAgICAgJmJvdW5jZV9pbmZvLCBvcCwgdHJhbnNmZXJfaW5mbywgbXlf aGFuZGxlKTsKKy0gICAgCisrCisgICAgICAgICBib3VuY2VfaW5mby0+bm9kZV9oYW5kbGUgPSAo Z2xvYnVzX2xfZ2ZzX3JlbW90ZV9ub2RlX2hhbmRsZV90ICopCisgICAgICAgICAgICAgdHJhbnNm ZXJfaW5mby0+ZGF0YV9hcmc7CisgICAgICAgICBib3VuY2VfaW5mby0+bm9kZV9oYW5kbGUtPmRl c3Ryb3krKzsKKyAKKyAgICAgICAgIG5vZGVfY291bnQgPSBib3VuY2VfaW5mby0+bm9kZV9oYW5k bGUtPmNvdW50OworIAorLSAgICAgICAgYm91bmNlX2luZm8tPmVvZl9jb3VudCA9IChpbnQgKikg CisrICAgICAgICBib3VuY2VfaW5mby0+ZW9mX2NvdW50ID0gKGludCAqKQorICAgICAgICAgICAg IGdsb2J1c19jYWxsb2MoMSwgbm9kZV9jb3VudCAqIHNpemVvZihpbnQpICsgMSk7CisgCisgICAg ICAgICBib3VuY2VfaW5mby0+bm9kZXNfcmVxdWVzdGluZyA9IG5vZGVfY291bnQ7CitAQCAtMTM5 MSwxMiArMTM5MSwxMiBAQCBnbG9idXNfbF9nZnNfcmVtb3RlX3NlbmQoCisgICAgICAgICBmb3Io aSA9IDA7IGkgPCBib3VuY2VfaW5mby0+bm9kZV9oYW5kbGUtPmNvdW50OyBpKyspCisgICAgICAg ICB7CisgICAgICAgICAgICAgbm9kZV9pbmZvID0gYm91bmNlX2luZm8tPm5vZGVfaGFuZGxlLT5u b2Rlc1tpXTsKKy0gICAgICAgIAorKworICAgICAgICAgICAgIG5ld190cmFuc2Zlcl9pbmZvID0g KGdsb2J1c19nZnNfdHJhbnNmZXJfaW5mb190ICopCisgICAgICAgICAgICAgICAgIGdsb2J1c19j YWxsb2MoMSwgc2l6ZW9mKGdsb2J1c19nZnNfdHJhbnNmZXJfaW5mb190KSk7CisgICAgICAgICAg ICAgbWVtY3B5KG5ld190cmFuc2Zlcl9pbmZvLAorICAgICAgICAgICAgICAgICB0cmFuc2Zlcl9p bmZvLCBzaXplb2YoZ2xvYnVzX2dmc190cmFuc2Zlcl9pbmZvX3QpKTsKKy0gICAgICAgICAgICAK KysKKyAgICAgICAgICAgICBuZXdfdHJhbnNmZXJfaW5mby0+ZGF0YV9hcmcgPSBub2RlX2luZm8t PmRhdGFfYXJnOworICAgICAgICAgICAgIG5ld190cmFuc2Zlcl9pbmZvLT5ub2RlX2NvdW50ID0g bm9kZV9jb3VudDsKKyAgICAgICAgICAgICBuZXdfdHJhbnNmZXJfaW5mby0+c3RyaXBlX2NvdW50 ID0gbm9kZV9pbmZvLT5zdHJpcGVfY291bnQ7CitAQCAtMTQwNCwxNyArMTQwNCwxNyBAQCBnbG9i dXNfbF9nZnNfcmVtb3RlX3NlbmQoCisgICAgICAgICAgICAgbm9kZV9pbmZvLT5pbmZvID0gbmV3 X3RyYW5zZmVyX2luZm87CisgICAgICAgICAgICAgbm9kZV9pbmZvLT5pbmZvX25lZWRzX2ZyZWUg PSBHTE9CVVNfVFJVRTsKKyAgICAgICAgICAgICBub2RlX2luZm8tPmJvdW5jZSA9IGJvdW5jZV9p bmZvOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAg ICAgIGJvdW5jZV9pbmZvLT5ub2Rlc19wZW5kaW5nKys7CisgICAgICAgICAgICAgYm91bmNlX2lu Zm8tPmV2ZW50X3BlbmRpbmcrKzsKKyAgICAgICAgICAgICBib3VuY2VfaW5mby0+YmVnaW5fZXZl bnRfcGVuZGluZysrOworLSAgICAgICAgCisrCisgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVz X2dmc19pcGNfcmVxdWVzdF9zZW5kKAorICAgICAgICAgICAgICAgICBub2RlX2luZm8tPmlwY19o YW5kbGUsCisgICAgICAgICAgICAgICAgIG5ld190cmFuc2Zlcl9pbmZvLAorICAgICAgICAgICAg ICAgICBnbG9idXNfbF9nZnNfaXBjX3RyYW5zZmVyX2NiLAorICAgICAgICAgICAgICAgICBnbG9i dXNfbF9nZnNfaXBjX2V2ZW50X2NiLAorLSAgICAgICAgICAgICAgICBub2RlX2luZm8pOyAKKysg ICAgICAgICAgICAgICAgbm9kZV9pbmZvKTsKKyAgICAgICAgICAgICBpZihyZXN1bHQgIT0gR0xP QlVTX1NVQ0NFU1MpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAvKiBpZiBzb21l IGNhbGxiYWNrcyBhcmUgcGVuZGluZyB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZQorQEAgLTE0NzMs MTcgKzE0NzMsMTcgQEAgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9hY3RpdmVfa2lja291dCgKKyAKKyAg ICAgICAgIG5ld19kYXRhX2luZm8gPSAoZ2xvYnVzX2dmc19kYXRhX2luZm9fdCAqKQorICAgICAg ICAgICAgIGdsb2J1c19jYWxsb2MoMSwgc2l6ZW9mKGdsb2J1c19nZnNfZGF0YV9pbmZvX3QpKTsK Ky0gICAgCisrCisgICAgICAgICBtZW1jcHkoCisgICAgICAgICAgICAgbmV3X2RhdGFfaW5mbywg Ym91bmNlX2luZm8tPnN0YXRlLCBzaXplb2YoZ2xvYnVzX2dmc19kYXRhX2luZm9fdCkpOworIAor LSAgICAgICAgaWYoYm91bmNlX2luZm8tPm15X2hhbmRsZS0+c3RyaXBlZF9tb2RlID09IAorKyAg ICAgICAgaWYoYm91bmNlX2luZm8tPm15X2hhbmRsZS0+c3RyaXBlZF9tb2RlID09CisgICAgICAg ICAgICAgR0xPQlVTX0xfR0ZTX1JFTU9URV9TVFJJUEVEX09ORV9UT19PTkUpCisgICAgICAgICB7 CisgICAgICAgICAgICAgbmV3X2RhdGFfaW5mby0+Y3NfY291bnQgPSAxOworLSAgICAgICAgICAg IG5ld19kYXRhX2luZm8tPmNvbnRhY3Rfc3RyaW5ncyA9IAorKyAgICAgICAgICAgIG5ld19kYXRh X2luZm8tPmNvbnRhY3Rfc3RyaW5ncyA9CisgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICoq KSBjYWxsb2MoMSwgc2l6ZW9mKGNoYXIgKikpOworLSAgICAgICAgICAgIG5ld19kYXRhX2luZm8t PmNvbnRhY3Rfc3RyaW5nc1swXSA9IAorKyAgICAgICAgICAgIG5ld19kYXRhX2luZm8tPmNvbnRh Y3Rfc3RyaW5nc1swXSA9CisgICAgICAgICAgICAgICAgIGdsb2J1c19saWJjX3N0cmR1cCgKKyAg ICAgICAgICAgICAgICAgZGF0YV9pbmZvLT5jb250YWN0X3N0cmluZ3NbYm91bmNlX2luZm8tPm5v ZGVfbmR4XSk7CisgICAgICAgICB9CitAQCAtMTQ5NCw3ICsxNDk0LDcgQEAgZ2xvYnVzX2xfZ2Zz X3JlbW90ZV9hY3RpdmVfa2lja291dCgKKyAgICAgICAgICAgICBub2RlX2luZm8tPmlwY19oYW5k bGUsCisgICAgICAgICAgICAgbmV3X2RhdGFfaW5mbywKKyAgICAgICAgICAgICBnbG9idXNfbF9n ZnNfaXBjX2FjdGl2ZV9jYiwKKy0gICAgICAgICAgICBub2RlX2luZm8pOyAKKysgICAgICAgICAg ICBub2RlX2luZm8pOworICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAg ICAgICAgeworICAgICAgICAgICAgIGdvdG8gZXJyb3I7CitAQCAtMTU0MCwxNCArMTU0MCwxNCBA QCBnbG9idXNfbF9nZnNfcmVtb3RlX2FjdGl2ZSgKKyAgICAgaW50ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbnVtX25vZGVzOworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dm c19yZW1vdGVfYWN0aXZlKTsKKyAgICAgR2xvYnVzR0ZTUmVtb3RlRGVidWdFbnRlcigpOworLSAg ICAKKysKKyAgICAgbXlfaGFuZGxlID0gKGdsb2J1c19sX2dmc19yZW1vdGVfaGFuZGxlX3QgKikg dXNlcl9hcmc7CisgCisgICAgIGdsb2J1c19tdXRleF9sb2NrKCZteV9oYW5kbGUtPm11dGV4KTsK Ky0gICAgeyAgICAKKysgICAgeworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2xfZ2ZzX3JlbW90 ZV9pbml0X2JvdW5jZV9pbmZvKAorICAgICAgICAgICAgICZib3VuY2VfaW5mbywgb3AsIGRhdGFf aW5mbywgbXlfaGFuZGxlKTsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAgIG51bV9ub2RlcyA9 IGRhdGFfaW5mby0+Y3NfY291bnQ7CisgCisgICAgICAgICBib3VuY2VfaW5mby0+bm9kZV9oYW5k bGUgPSAoZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9ub2RlX2hhbmRsZV90ICopCitAQCAtMTU2Myw3ICsx NTYzLDcgQEAgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9hY3RpdmUoCisgICAgICAgICAgICAgbnVtX25v ZGVzLAorICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgZ2xvYnVzX2xfZ2ZzX3JlbW90 ZV9hY3RpdmVfa2lja291dCwKKy0gICAgICAgICAgICBib3VuY2VfaW5mbyk7ICAgICAgICAgICAg ICAgICAgICAKKysgICAgICAgICAgICBib3VuY2VfaW5mbyk7CisgICAgICAgICBpZihyZXN1bHQg IT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICB7CisgICAgICAgICAgICAgZ290byBlcnJvcjsK K0BAIC0xNTkyLDEyICsxNTkyLDEyIEBAIGdsb2J1c19sX2dmc19yZW1vdGVfcGFzc2l2ZV9raWNr b3V0KAorICAgICBnbG9idXNfbF9nZnNfcmVtb3RlX2lwY19ib3VuY2VfdCAqICBib3VuY2VfaW5m bzsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9nZnNfcmVtb3RlX3Bhc3NpdmVfa2lja291 dCk7CisgICAgIEdsb2J1c0dGU1JlbW90ZURlYnVnRW50ZXIoKTsKKy0gICAgCisrCisgICAgIGJv dW5jZV9pbmZvID0gKGdsb2J1c19sX2dmc19yZW1vdGVfaXBjX2JvdW5jZV90ICopICB1c2VyX2Fy ZzsKKyAgICAgbXlfaGFuZGxlID0gKGdsb2J1c19sX2dmc19yZW1vdGVfaGFuZGxlX3QgKikgYm91 bmNlX2luZm8tPm15X2hhbmRsZTsKKyAKKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJm15X2hhbmRs ZS0+bXV0ZXgpOworLSAgICB7ICAgIAorKyAgICB7CisgICAgICAgICBib3VuY2VfaW5mby0+bm9k ZXNfcmVxdWVzdGluZy0tOworICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQor ICAgICAgICAgeworQEAgLTE2NTEsOSArMTY1MSw5IEBAIGdsb2J1c19sX2dmc19yZW1vdGVfcGFz c2l2ZSgKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX25vZGVz OworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dmc19yZW1vdGVfcGFzc2l2ZSk7CisgICAg IEdsb2J1c0dGU1JlbW90ZURlYnVnRW50ZXIoKTsKKy0gICAgCisrCisgICAgIG15X2hhbmRsZSA9 IChnbG9idXNfbF9nZnNfcmVtb3RlX2hhbmRsZV90ICopIHVzZXJfYXJnOworLSAgICAKKysKKyAg ICAgcmVzdWx0ID0gZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9pbml0X2JvdW5jZV9pbmZvKAorICAgICAg ICAgJmJvdW5jZV9pbmZvLCBvcCwgZGF0YV9pbmZvLCBteV9oYW5kbGUpOworIAorQEAgLTE2Nzcs NyArMTY3Nyw3IEBAIGdsb2J1c19sX2dmc19yZW1vdGVfcGFzc2l2ZSgKKyAgICAgICAgICAgICBi b3VuY2VfaW5mby0+bm9kZXNfcmVxdWVzdGluZywKKyAgICAgICAgICAgICBOVUxMLAorICAgICAg ICAgICAgIGdsb2J1c19sX2dmc19yZW1vdGVfcGFzc2l2ZV9raWNrb3V0LAorLSAgICAgICAgICAg IGJvdW5jZV9pbmZvKTsgICAgICAgICAgICAgICAgICAgIAorKyAgICAgICAgICAgIGJvdW5jZV9p bmZvKTsKKyAgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgIHsK KyAgICAgICAgICAgICBnb3RvIGVycm9yOworQEAgLTE3MTMsMjQgKzE3MTMsMjQgQEAgZ2xvYnVz X2xfZ2ZzX3JlbW90ZV9kYXRhX2Rlc3Ryb3koCisgICAgIGdsb2J1c19sX2dmc19yZW1vdGVfbm9k ZV9oYW5kbGVfdCAqIG5vZGVfaGFuZGxlOworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dm c19yZW1vdGVfZGF0YV9kZXN0cm95KTsKKyAgICAgR2xvYnVzR0ZTUmVtb3RlRGVidWdFbnRlcigp OworLSAgICAKKysKKyAgICAgbXlfaGFuZGxlID0gKGdsb2J1c19sX2dmc19yZW1vdGVfaGFuZGxl X3QgKikgdXNlcl9hcmc7CisgICAgIG5vZGVfaGFuZGxlID0gKGdsb2J1c19sX2dmc19yZW1vdGVf bm9kZV9oYW5kbGVfdCAqKSBkYXRhX2FyZzsKKyAKKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJm15 X2hhbmRsZS0+bXV0ZXgpOworLSAgICB7ICAgIAorKyAgICB7CisgICAgICAgICBmb3IoaSA9IDA7 IGkgPCBub2RlX2hhbmRsZS0+Y291bnQ7IGkrKykKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBu b2RlX2luZm8gPSAoZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9ub2RlX2luZm9fdCAqKQorICAgICAgICAg ICAgICAgICBub2RlX2hhbmRsZS0+bm9kZXNbaV07CistICAKKysKKyAgICAgICAgICAgICByZXN1 bHQgPSBnbG9idXNfZ2ZzX2lwY19yZXF1ZXN0X2RhdGFfZGVzdHJveSgKKyAgICAgICAgICAgICAg ICAgbm9kZV9pbmZvLT5pcGNfaGFuZGxlLAorLSAgICAgICAgICAgICAgICBub2RlX2luZm8tPmRh dGFfYXJnKTsgCisrICAgICAgICAgICAgICAgIG5vZGVfaW5mby0+ZGF0YV9hcmcpOworICAgICAg ICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgIGdsb2J1c19nZnNfbG9nX3Jlc3VsdCgKKy0gICAgICAgICAgICAgICAgICAg IEdMT0JVU19HRlNfTE9HX0VSUiwgCisrICAgICAgICAgICAgICAgICAgICBHTE9CVVNfR0ZTX0xP R19FUlIsCisgICAgICAgICAgICAgICAgICAgICAiSVBDIEVSUk9SOiByZW1vdGVfZGF0YV9kZXN0 cm95OiBpcGMgY2FsbCIsIHJlc3VsdCk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGlm KG5vZGVfaW5mby0+Y3MgIT0gTlVMTCkKK0BAIC0xNzYxLDcgKzE3NjEsNyBAQCBnbG9idXNfbF9n ZnNfcmVtb3RlX2RhdGFfZGVzdHJveSgKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2ZyZWUobm9k ZV9oYW5kbGUtPm5vZGVzKTsKKyAgICAgICAgIGdsb2J1c19mcmVlKG5vZGVfaGFuZGxlKTsKKy0g ICAgfSAgICAgICAgICAgICAgICAKKysgICAgfQorICAgICBHbG9idXNHRlNSZW1vdGVEZWJ1Z0V4 aXQoKTsKKyB9CisgCitAQCAtMTc4MiwxMSArMTc4MiwxMSBAQCBnbG9idXNfbF9nZnNfcmVtb3Rl X3RyZXYoCisgICAgIGdsb2J1c19sX2dmc19yZW1vdGVfbm9kZV9oYW5kbGVfdCAqIGZyZWVfbmgg PSBOVUxMOworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dmc19yZW1vdGVfdHJldik7Cisg ICAgIEdsb2J1c0dGU1JlbW90ZURlYnVnRW50ZXIoKTsKKy0gICAgCisrCisgICAgIGJvdW5jZV9p bmZvID0gKGdsb2J1c19sX2dmc19yZW1vdGVfaXBjX2JvdW5jZV90ICopIGV2ZW50X2luZm8tPmV2 ZW50X2FyZzsKKy0gICAgCisrCisgICAgIG15X2hhbmRsZSA9IChnbG9idXNfbF9nZnNfcmVtb3Rl X2hhbmRsZV90ICopIHVzZXJfYXJnOworLSAgICAgICAgCisrCisgICAgIG1lbXNldCgmbmV3X2V2 ZW50X2luZm8sICdcMCcsIHNpemVvZihnbG9idXNfZ2ZzX2V2ZW50X2luZm9fdCkpOworICAgICBu ZXdfZXZlbnRfaW5mby50eXBlID0gZXZlbnRfaW5mby0+dHlwZTsKKyAKK0BAIC0xNzk5LDkgKzE3 OTksOSBAQCBnbG9idXNfbF9nZnNfcmVtb3RlX3RyZXYoCisgICAgICAgICAgICAgbm9kZV9pbmZv LT5pcGNfaGFuZGxlLAorICAgICAgICAgICAgICZuZXdfZXZlbnRfaW5mbyk7CisgICAgIH0KKy0g ICAgCisrCisgICAgIGdsb2J1c19tdXRleF9sb2NrKCZteV9oYW5kbGUtPm11dGV4KTsKKy0gICAg eyAgICAKKysgICAgeworICAgICAgICAgaWYoZXZlbnRfaW5mby0+dHlwZSA9PSBHTE9CVVNfR0ZT X0VWRU5UX1RSQU5TRkVSX0NPTVBMRVRFKQorICAgICAgICAgeworICAgICAgICAgICAgIGZvcihp ID0gMDsgaSA8IGJvdW5jZV9pbmZvLT5ub2RlX2hhbmRsZS0+Y291bnQ7IGkrKykKK0BAIC0xODQ4 LDcgKzE4NDgsNyBAQCBnbG9idXNfbF9nZnNfcmVtb3RlX3Nlc3Npb25fc3RhcnRfa2lja291dCgK KyAgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9hcmcpCisgewor ICAgICBnbG9idXNfbF9nZnNfcmVtb3RlX2hhbmRsZV90ICogICAgICBteV9oYW5kbGU7CistICAg IGdsb2J1c19nZnNfZmluaXNoZWRfaW5mb190ICAgICAgICAgIGZpbmlzaGVkX2luZm87ICAgICAg ICAgICAgICAgICAgICAgICAgIAorKyAgICBnbG9idXNfZ2ZzX2ZpbmlzaGVkX2luZm9fdCAgICAg ICAgICBmaW5pc2hlZF9pbmZvOworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dmc19yZW1v dGVfc2Vzc2lvbl9zdGFydF9raWNrb3V0KTsKKyAgICAgR2xvYnVzR0ZTUmVtb3RlRGVidWdFbnRl cigpOworIAorQEAgLTE4NTYsNDAgKzE4NTYsNDAgQEAgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9zZXNz aW9uX3N0YXJ0X2tpY2tvdXQoCisgICAgICAgICB3aXRoIHRoaXMgaGFuZGxlIHVudGlsIHdlIHNp Z25hbCBpdCBoYXMgc3RhcnRlZCAqLworIAorICAgICBteV9oYW5kbGUgPSAoZ2xvYnVzX2xfZ2Zz X3JlbW90ZV9oYW5kbGVfdCAqKSB1c2VyX2FyZzsKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorKworICAgICBpZihy ZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGdvdG8gZXJyb3I7Cisg ICAgIH0KKyAKKyAgICAgbWVtc2V0KCZmaW5pc2hlZF9pbmZvLCAnXDAnLCBzaXplb2YoZ2xvYnVz X2dmc19maW5pc2hlZF9pbmZvX3QpKTsKKy0gICAgZmluaXNoZWRfaW5mby50eXBlID0gR0xPQlVT X0dGU19PUF9TRVNTSU9OX1NUQVJUOyAgICAgICAgICAKKy0gICAgZmluaXNoZWRfaW5mby5yZXN1 bHQgPSByZXN1bHQ7ICAgICAgICAgIAorKyAgICBmaW5pc2hlZF9pbmZvLnR5cGUgPSBHTE9CVVNf R0ZTX09QX1NFU1NJT05fU1RBUlQ7CisrICAgIGZpbmlzaGVkX2luZm8ucmVzdWx0ID0gcmVzdWx0 OworICAgICBmaW5pc2hlZF9pbmZvLmluZm8uc2Vzc2lvbi5zZXNzaW9uX2FyZyA9IG15X2hhbmRs ZTsKKy0gICAgZmluaXNoZWRfaW5mby5pbmZvLnNlc3Npb24udXNlcm5hbWUgPSBub2RlX2luZm8t PnVzZXJuYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgCistICAgIGZpbmlzaGVkX2luZm8u aW5mby5zZXNzaW9uLmhvbWVfZGlyID0gbm9kZV9pbmZvLT5ob21lX2RpcjsgICAgICAgICAgICAg ICAgICAgICAgICAgIAorKyAgICBmaW5pc2hlZF9pbmZvLmluZm8uc2Vzc2lvbi51c2VybmFtZSA9 IG5vZGVfaW5mby0+dXNlcm5hbWU7CisrICAgIGZpbmlzaGVkX2luZm8uaW5mby5zZXNzaW9uLmhv bWVfZGlyID0gbm9kZV9pbmZvLT5ob21lX2RpcjsKKyAgICAgbXlfaGFuZGxlLT5jb250cm9sX25v ZGUgPSBub2RlX2luZm87CisgCistICAgIGdsb2J1c19ncmlkZnRwX3NlcnZlcl9vcGVyYXRpb25f ZmluaXNoZWQoICAgICAgICAgICAgICAgICAKKy0gICAgICAgIG15X2hhbmRsZS0+b3AsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistICAgICAgICBy ZXN1bHQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKysg ICAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX29wZXJhdGlvbl9maW5pc2hlZCgKKysgICAgICAgIG15 X2hhbmRsZS0+b3AsCisrICAgICAgICByZXN1bHQsCisgICAgICAgICAmZmluaXNoZWRfaW5mbyk7 CisgCisgICAgIEdsb2J1c0dGU1JlbW90ZURlYnVnRXhpdCgpOworICAgICByZXR1cm47CistICAg IAorLWVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCisrCisrZXJyb3I6CisgICAgIG1lbXNldCgmZmluaXNoZWRfaW5mbywg J1wwJywgc2l6ZW9mKGdsb2J1c19nZnNfZmluaXNoZWRfaW5mb190KSk7CisgICAgIGZpbmlzaGVk X2luZm8udHlwZSA9IEdMT0JVU19HRlNfT1BfU0VTU0lPTl9TVEFSVDsKKyAgICAgZmluaXNoZWRf aW5mby5yZXN1bHQgPSByZXN1bHQ7CisgCistICAgIGdsb2J1c19ncmlkZnRwX3NlcnZlcl9vcGVy YXRpb25fZmluaXNoZWQoICAgICAgICAgICAgICAgICAKKy0gICAgICAgIG15X2hhbmRsZS0+b3As ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistICAg ICAgICBmaW5pc2hlZF9pbmZvLnJlc3VsdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorKyAgICBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfb3BlcmF0aW9uX2Zp bmlzaGVkKAorKyAgICAgICAgbXlfaGFuZGxlLT5vcCwKKysgICAgICAgIGZpbmlzaGVkX2luZm8u cmVzdWx0LAorICAgICAgICAgJmZpbmlzaGVkX2luZm8pOworLSAgICAKKysKKyAgICAgR2xvYnVz R0ZTUmVtb3RlRGVidWdFeGl0V2l0aEVycm9yKCk7CistfSAgIAorK30KKyAKKyBzdGF0aWMKKyB2 b2lkCitAQCAtMTkwMiw4ICsxOTAyLDggQEAgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9zZXNzaW9uX3N0 YXJ0KAorICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rlc19yZXF1 ZXN0aW5nID0gMTsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9nZnNfcmVtb3RlX3Nlc3Np b25fc3RhcnQpOworICAgICBHbG9idXNHRlNSZW1vdGVEZWJ1Z0VudGVyKCk7CistICAgIAorLSAg ICBteV9oYW5kbGUgPSAoZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9oYW5kbGVfdCAqKSAKKysKKysgICAg bXlfaGFuZGxlID0gKGdsb2J1c19sX2dmc19yZW1vdGVfaGFuZGxlX3QgKikKKyAgICAgICAgIGds b2J1c19jYWxsb2MoMSwgc2l6ZW9mKGdsb2J1c19sX2dmc19yZW1vdGVfaGFuZGxlX3QpKTsKKyAg ICAgZ2xvYnVzX211dGV4X2luaXQoJm15X2hhbmRsZS0+bXV0ZXgsIE5VTEwpOworICAgICBteV9o YW5kbGUtPmlwY19yZWxlYXNlX3JlYXNvbiA9IEdMT0JVU19HRlNfQlJBSU5fUkVBU09OX0NPTVBM RVRFOworQEAgLTE5MzUsNyArMTkzNSw3IEBAIGdsb2J1c19sX2dmc19yZW1vdGVfc2Vzc2lvbl9z dGFydCgKKyAgICAgeworICAgICAgICAgR2xvYnVzR0ZTRXJyb3JPcEZpbmlzaGVkKG9wLCBHTE9C VVNfR0ZTX09QX1NFU1NJT05fU1RBUlQsIHJlc3VsdCk7CisgICAgIH0KKy0gICAgCisrCisgICAg IEdsb2J1c0dGU1JlbW90ZURlYnVnRXhpdCgpOworIH0KKyAKK0BAIC0xOTUyLDcgKzE5NTIsNyBA QCBnbG9idXNfbF9nZnNfcmVtb3RlX3Nlc3Npb25fZW5kKAorICAgICBHbG9idXNHRlNSZW1vdGVE ZWJ1Z0VudGVyKCk7CisgCisgICAgIG15X2hhbmRsZSA9IChnbG9idXNfbF9nZnNfcmVtb3RlX2hh bmRsZV90ICopIHVzZXJfYXJnOworLSAgICAKKysKKyAgICAgaWYobXlfaGFuZGxlID09IE5VTEwp CisgICAgIHsKKyAgICAgICAgIGdvdG8gZXJyb3I7CitAQCAtMTk2NSwxMCArMTk2NSwxMCBAQCBn bG9idXNfbF9nZnNfcmVtb3RlX3Nlc3Npb25fZW5kKAorICAgICBpZihyZXN1bHQgIT0gR0xPQlVT X1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19nZnNfbG9nX3Jlc3VsdCgKKy0gICAg ICAgICAgICBHTE9CVVNfR0ZTX0xPR19FUlIsIAorKyAgICAgICAgICAgIEdMT0JVU19HRlNfTE9H X0VSUiwKKyAgICAgICAgICAgICAiRVJST1I6IHJlbW90ZV9kYXRhX2Rlc3Ryb3k6IGhhbmRsZV9y ZWxlYXNlIiwgcmVzdWx0KTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaWYobXlfaGFuZGxlLT5z ZXNzaW9uX2luZm8udXNlcm5hbWUgIT0gTlVMTCkKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2Zy ZWUobXlfaGFuZGxlLT5zZXNzaW9uX2luZm8udXNlcm5hbWUpOworQEAgLTE5ODMsMTAgKzE5ODMs MTAgQEAgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9zZXNzaW9uX2VuZCgKKyAgICAgfQorICAgICBnbG9i dXNfbXV0ZXhfZGVzdHJveSgmbXlfaGFuZGxlLT5tdXRleCk7CisgICAgIGdsb2J1c19mcmVlKG15 X2hhbmRsZSk7CistICAgIAorKworICAgICBHbG9idXNHRlNSZW1vdGVEZWJ1Z0V4aXQoKTsKKyAg ICAgcmV0dXJuOworLSAgICAKKysKKyBlcnJvcjoKKyAgICAgR2xvYnVzR0ZTUmVtb3RlRGVidWdF eGl0V2l0aEVycm9yKCk7CisgfQorQEAgLTE5OTksNyArMTk5OSw3IEBAIHN0YXRpYworIGludAor IGdsb2J1c19sX2dmc19yZW1vdGVfZGVhY3RpdmF0ZSh2b2lkKTsKKyAKKy1zdGF0aWMgZ2xvYnVz X2dmc19zdG9yYWdlX2lmYWNlX3QgICAgICAgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9kc2lfaWZhY2Ug PSAKKytzdGF0aWMgZ2xvYnVzX2dmc19zdG9yYWdlX2lmYWNlX3QgICAgICAgZ2xvYnVzX2xfZ2Zz X3JlbW90ZV9kc2lfaWZhY2UgPQorIHsKKyAgICAgMCwKKyAgICAgZ2xvYnVzX2xfZ2ZzX3JlbW90 ZV9zZXNzaW9uX3N0YXJ0LAorQEAgLTIwMTEsNyArMjAxMSw3IEBAIHN0YXRpYyBnbG9idXNfZ2Zz X3N0b3JhZ2VfaWZhY2VfdCAgICAgICBnbG9idXNfbF9nZnNfcmVtb3RlX2RzaV9pZmFjZSA9Cisg ICAgIGdsb2J1c19sX2dmc19yZW1vdGVfYWN0aXZlLAorICAgICBnbG9idXNfbF9nZnNfcmVtb3Rl X3Bhc3NpdmUsCisgICAgIGdsb2J1c19sX2dmc19yZW1vdGVfZGF0YV9kZXN0cm95LAorLSAgICBn bG9idXNfbF9nZnNfcmVtb3RlX2NvbW1hbmQsIAorKyAgICBnbG9idXNfbF9nZnNfcmVtb3RlX2Nv bW1hbmQsCisgICAgIGdsb2J1c19sX2dmc19yZW1vdGVfc3RhdCwKKyAgICAgTlVMTCwKKyAgICAg TlVMTAorQEAgLTIwMzMsMTMgKzIwMzMsMTMgQEAgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9hY3RpdmF0 ZSh2b2lkKQorIHsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmM7 CisgICAgIEdsb2J1c0dGU05hbWUoZ2xvYnVzX2xfZ2ZzX3JlbW90ZV9hY3RpdmF0ZSk7CistICAg IAorKworICAgICByYyA9IGdsb2J1c19tb2R1bGVfYWN0aXZhdGUoR0xPQlVTX0NPTU1PTl9NT0RV TEUpOworICAgICBpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworICAgICAgICAgZ290 byBlcnJvcjsKKyAgICAgfQorLSAgICAKKysKKyAgICAgZ2xvYnVzX2V4dGVuc2lvbl9yZWdpc3Ry eV9hZGQoCisgICAgICAgICBHTE9CVVNfR0ZTX0RTSV9SRUdJU1RSWSwKKyAgICAgICAgICJyZW1v dGUiLAorQEAgLTIwNDgsNyArMjA0OCw3IEBAIGdsb2J1c19sX2dmc19yZW1vdGVfYWN0aXZhdGUo dm9pZCkKKyAKKyAgICAgR2xvYnVzRGVidWdJbml0KEdMT0JVU19HUklERlRQX1NFUlZFUl9SRU1P VEUsCisgICAgICAgICBFUlJPUiBXQVJOSU5HIFRSQUNFIElOVEVSTkFMX1RSQUNFIElORk8gU1RB VEUgSU5GT19WRVJCT1NFKTsKKy0gICAgCisrCisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsK KyAKKyBlcnJvcjoKK0BAIC0yMDYwLDExICsyMDYwLDExIEBAIGludAorIGdsb2J1c19sX2dmc19y ZW1vdGVfZGVhY3RpdmF0ZSh2b2lkKQorIHsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9n ZnNfcmVtb3RlX2RlYWN0aXZhdGUpOworLSAgICAKKysKKyAgICAgZ2xvYnVzX2V4dGVuc2lvbl9y ZWdpc3RyeV9yZW1vdmUoCisgICAgICAgICBHTE9CVVNfR0ZTX0RTSV9SRUdJU1RSWSwgInJlbW90 ZSIpOworLSAgICAgICAgCisrCisgICAgIGdsb2J1c19tb2R1bGVfZGVhY3RpdmF0ZShHTE9CVVNf Q09NTU9OX01PRFVMRSk7CistICAgIAorKworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7Cisg fQorLS0gCisyLjU0LjAKKwoKZGlmZiAtLWdpdCBhLzAwMDItRml4LWNvbXBpbGVyLWFuZC1kb3h5 Z2VuLXdhcm5pbmdzLnBhdGNoIGIvMDAwMi1GaXgtY29tcGlsZXItYW5kLWRveHlnZW4td2Fybmlu Z3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VhMTI2ZQotLS0g L2Rldi9udWxsCisrKyBiLzAwMDItRml4LWNvbXBpbGVyLWFuZC1kb3h5Z2VuLXdhcm5pbmdzLnBh dGNoCkBAIC0wLDAgKzEsMzIxIEBACitGcm9tIDRlZTA4ZDEzZTI5NjMzMDllMjA2M2RjNDVkZWRk MDY3MzM3ZDNiNzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0aWFzIEVsbGVy dCA8bWF0dGlhcy5lbGxlcnRAcGh5c2ljcy51dS5zZT4KK0RhdGU6IFdlZCwgMjAgTWF5IDIwMjYg MDA6MTU6MzcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIEZpeCBjb21waWxlciBhbmQgZG94 eWdlbiB3YXJuaW5ncworCistLS0KKyBncmlkZnRwL3NlcnZlci9zcmMvZ2ZzX2R5bmJlX2NsaWVu dC5jICAgICAgICAgfCAgMSArCisgZ3JpZGZ0cC9zZXJ2ZXIvc3JjL2dmc19nZm9ya19tYXN0ZXIu YyAgICAgICAgIHwgIDUgKysrKysKKyBncmlkZnRwL3NlcnZlci9zcmMvZ2xvYnVzX2lfZ2ZzX2Nv bmZpZy5jICAgICAgfCAgNyArKystLS0tCisgZ3JpZGZ0cC9zZXJ2ZXIvc3JjL2dsb2J1c19pX2dm c19jb250cm9sLmMgICAgIHwgIDMgKy0tCisgZ3JpZGZ0cC9zZXJ2ZXIvc3JjL2dsb2J1c19pX2dm c19kYXRhLmMgICAgICAgIHwgMjAgKysrKysrKystLS0tLS0tLS0tLQorIC4uLi9zZXJ2ZXIvc3Jj L2dsb2J1c19pX2dmc19kZWZhdWx0X2JyYWluLmMgICB8ICAzICstLQorIC4uLi9tb2R1bGVzL2Zp bGUvZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2ZpbGUuYyB8ICA1ICstLS0tCisgLi4uL3JlbW90ZS9n bG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfcmVtb3RlLmMgICAgIHwgIDYgKystLS0tCisgOCBmaWxlcyBj aGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBh L2dyaWRmdHAvc2VydmVyL3NyYy9nZnNfZHluYmVfY2xpZW50LmMgYi9ncmlkZnRwL3NlcnZlci9z cmMvZ2ZzX2R5bmJlX2NsaWVudC5jCitpbmRleCA5YzEzMmQ1ZjYuLjA5YmVlNjcyYSAxMDA2NDQK Ky0tLSBhL2dyaWRmdHAvc2VydmVyL3NyYy9nZnNfZHluYmVfY2xpZW50LmMKKysrKyBiL2dyaWRm dHAvc2VydmVyL3NyYy9nZnNfZHluYmVfY2xpZW50LmMKK0BAIC0zOTIsNiArMzkyLDcgQEAgZ2Zz X2xfZHluY2xpZW50X29wdHNfZ3NpKAorICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgfQor IAorK3N0YXRpYworIGdsb2J1c19vcHRpb25zX2VudHJ5X3QgICAgICAgICAgICAgICAgICAgZ2Zv cmtfbF9vcHRzX3RhYmxlW10gPQorIHsKKyAgICAgeyJxdWlldCIsICJxIiwgTlVMTCwgTlVMTCwK K2RpZmYgLS1naXQgYS9ncmlkZnRwL3NlcnZlci9zcmMvZ2ZzX2dmb3JrX21hc3Rlci5jIGIvZ3Jp ZGZ0cC9zZXJ2ZXIvc3JjL2dmc19nZm9ya19tYXN0ZXIuYworaW5kZXggOTFiMjAxNDU5Li5iMjJh ZTZmOTQgMTAwNjQ0CistLS0gYS9ncmlkZnRwL3NlcnZlci9zcmMvZ2ZzX2dmb3JrX21hc3Rlci5j CisrKysgYi9ncmlkZnRwL3NlcnZlci9zcmMvZ2ZzX2dmb3JrX21hc3Rlci5jCitAQCAtMTAzMyw2 ICsxMDMzLDcgQEAgZ2ZzX2xfZ2ZvcmtfbWVtX2xpbWl0X3NlbmQoCisgICAgIH0KKyB9CisgCisr LyoKKyBzdGF0aWMKKyB2b2lkCisgZ2ZzX2xfZ2Zvcmtfa2lsbF9zZW5kKAorQEAgLTEwNjksNiAr MTA3MCw3IEBAIGdmc19sX2dmb3JrX2tpbGxfc2VuZCgKKyAgICAgICAgICAgICByZXN1bHQsIDMs ICJmYWlsZWQgdG8gc2VuZCBraWxsIHRvICVkXG4iLCB0b19waWQpOworICAgICB9CisgfQorKyov CisgCisgc3RhdGljCisgdm9pZAorQEAgLTExNzYsNiArMTE3OCw3IEBAIGdmc19sX2dmb3JrX21l bV90cnkoCisgICAgIH0KKyB9CisgCisrLyoKKyBzdGF0aWMKKyB2b2lkCisgZ2ZzX2xfZ2Zvcmtf bWVtX3RyeV9jYigKK0BAIC0xMTk0LDYgKzExOTcsNyBAQCBnZnNfbF9nZm9ya19tZW1fdHJ5X2Ni KAorICAgICB9CisgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmdfbXV0ZXgpOworIH0KKysqLwor IAorIHN0YXRpYworIHZvaWQKK0BAIC0yMTMyLDYgKzIxMzYsNyBAQCBlcnJvcl9mb3JtYXQ6Cisg CisgCisgCisrc3RhdGljCisgZ2xvYnVzX29wdGlvbnNfZW50cnlfdCAgICAgICAgICAgICAgICAg ICBnZm9ya19sX29wdHNfdGFibGVbXSA9CisgeworICAgICB7ImhlbHAiLCAiaCIsIE5VTEwsIE5V TEwsCitkaWZmIC0tZ2l0IGEvZ3JpZGZ0cC9zZXJ2ZXIvc3JjL2dsb2J1c19pX2dmc19jb25maWcu YyBiL2dyaWRmdHAvc2VydmVyL3NyYy9nbG9idXNfaV9nZnNfY29uZmlnLmMKK2luZGV4IDU3MzY3 YWM2NC4uMGYxYTUzNTZiIDEwMDY0NAorLS0tIGEvZ3JpZGZ0cC9zZXJ2ZXIvc3JjL2dsb2J1c19p X2dmc19jb25maWcuYworKysrIGIvZ3JpZGZ0cC9zZXJ2ZXIvc3JjL2dsb2J1c19pX2dmc19jb25m aWcuYworQEAgLTI0MzksNyArMjQzOSw2IEBAIGdsb2J1c19sX2dmc19jb25maWdfbWlzYygpCisg ICAgIGdsb2J1c19saXN0X3QgKiAgICAgICAgICAgICAgICAgICAgIHBvcGVuX2xpc3QgPSBOVUxM OworICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGU7CisgICAg IGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cjsKKy0gICAgaW50ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmM7CisgICAgIGNoYXIgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZhbHVlOworICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhOworICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICBy ZXN1bHQ7CitAQCAtMjYzNCw3ICsyNjMzLDcgQEAgZ2xvYnVzX2xfZ2ZzX2NvbmZpZ19taXNjKCkK KyAgICAgfQorICAgICBlbHNlIGlmKCh2YWx1ZSA9IGdsb2J1c19pX2dmc19jb25maWdfc3RyaW5n KCJiYW5uZXJfZmlsZSIpKSAhPSBHTE9CVVNfTlVMTCkKKyAgICAgeworLSAgICAgICAgcmMgPSBn bG9idXNfbF9jb25maWdfbG9hZGZpbGUodmFsdWUsICZkYXRhKTsKKysgICAgICAgIGdsb2J1c19s X2NvbmZpZ19sb2FkZmlsZSh2YWx1ZSwgJmRhdGEpOworICAgICB9CisgICAgIGVsc2UgaWYoKHZh bHVlID0gZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19zdHJpbmcoImJhbm5lciIpKSAhPSBHTE9CVVNfTlVM TCkKKyAgICAgeworQEAgLTI2NzIsNyArMjY3MSw3IEBAIGdsb2J1c19sX2dmc19jb25maWdfbWlz YygpCisgCisgICAgIGlmKCh2YWx1ZSA9IGdsb2J1c19pX2dmc19jb25maWdfc3RyaW5nKCJsb2dp bl9tc2dfZmlsZSIpKSAhPSBHTE9CVVNfTlVMTCkKKyAgICAgeworLSAgICAgICAgcmMgPSBnbG9i dXNfbF9jb25maWdfbG9hZGZpbGUodmFsdWUsICZkYXRhKTsKKysgICAgICAgIGdsb2J1c19sX2Nv bmZpZ19sb2FkZmlsZSh2YWx1ZSwgJmRhdGEpOworICAgICAgICAgZ2xvYnVzX2xfZ2ZzX2NvbmZp Z19zZXQoImxvZ2luX21zZyIsIDAsIGRhdGEpOworICAgICB9CisgCitAQCAtMzEyMCw3ICszMTE5 LDcgQEAgZ2xvYnVzX2lfZ2ZzX2NvbmZpZ19pbml0X2VudnMoCisgICAgIC8qIG9ubHkgZW5hYmxl IHRocmVhZHMgZm9yIHJlYWwgcHJvY2Vzcywgbm90IGRhZW1vbiAqLworICAgICBpZihnbG9idXNf bF9nZnNfbnVtX3RocmVhZHMgPiAwICYmIGdsb2J1c19sX2dmc19pc193b3JrZXIpCisgICAgIHsK Ky0gICAgICAgIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnRocmVhZHNbOF07Cisr ICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgIG50aHJlYWRzWzExXTsKKyAg ICAgICAgIHNucHJpbnRmKG50aHJlYWRzLCBzaXplb2YobnRocmVhZHMpLCAiJWQiLCBnbG9idXNf bF9nZnNfbnVtX3RocmVhZHMpOworICAgICAgICAgc2V0ZW52KCJHTE9CVVNfQ0FMTEJBQ0tfUE9M TElOR19USFJFQURTIiwgbnRocmVhZHMsIDEpOworICAgICAgICAgZ2xvYnVzX3RocmVhZF9zZXRf bW9kZWwoInB0aHJlYWQiKTsKK2RpZmYgLS1naXQgYS9ncmlkZnRwL3NlcnZlci9zcmMvZ2xvYnVz X2lfZ2ZzX2NvbnRyb2wuYyBiL2dyaWRmdHAvc2VydmVyL3NyYy9nbG9idXNfaV9nZnNfY29udHJv bC5jCitpbmRleCA2YzM2OWMxZDEuLjQ5NmVmMTJkZiAxMDA2NDQKKy0tLSBhL2dyaWRmdHAvc2Vy dmVyL3NyYy9nbG9idXNfaV9nZnNfY29udHJvbC5jCisrKysgYi9ncmlkZnRwL3NlcnZlci9zcmMv Z2xvYnVzX2lfZ2ZzX2NvbnRyb2wuYworQEAgLTYwOCwxMyArNjA4LDEyIEBAIGdsb2J1c19sX2dm c19hdXRoX3Nlc3Npb25fY2IoCisgICAgICAgICAgICAgIWdsb2J1c19oYXNodGFibGVfZW1wdHko JnJlcGx5LT5vcF9pbmZvLT5jdXN0b21fY29tbWFuZF90YWJsZSkpCisgICAgICAgICB7CisgICAg ICAgICAgICAgZ2xvYnVzX2xpc3RfdCAqICAgICAgICAgICAgIGxpc3Q7CistICAgICAgICAgICAg aW50ICAgICAgICAgICAgICAgICAgICAgICAgIHJjOworICAgICAgICAgICAgIGdsb2J1c19pX2dm c19jbWRfZW50X3QgKiAgICBjbWRfZW50OworIAorICAgICAgICAgICAgIGF1dGhfaW5mby0+aW5z dGFuY2UtPmN1c3RvbV9jbWRfdGFibGUgPQorICAgICAgICAgICAgICAgICByZXBseS0+b3BfaW5m by0+Y3VzdG9tX2NvbW1hbmRfdGFibGU7CisgCistICAgICAgICAgICAgcmMgPSBnbG9idXNfaGFz aHRhYmxlX3RvX2xpc3QoCisrICAgICAgICAgICAgZ2xvYnVzX2hhc2h0YWJsZV90b19saXN0KAor ICAgICAgICAgICAgICAgICAmcmVwbHktPm9wX2luZm8tPmN1c3RvbV9jb21tYW5kX3RhYmxlLCAm bGlzdCk7CisgCisgICAgICAgICAgICAgd2hpbGUoIWdsb2J1c19saXN0X2VtcHR5KGxpc3QpKQor ZGlmZiAtLWdpdCBhL2dyaWRmdHAvc2VydmVyL3NyYy9nbG9idXNfaV9nZnNfZGF0YS5jIGIvZ3Jp ZGZ0cC9zZXJ2ZXIvc3JjL2dsb2J1c19pX2dmc19kYXRhLmMKK2luZGV4IGIyYmU3NWU0Zi4uNGZj Y2M5ZGZiIDEwMDY0NAorLS0tIGEvZ3JpZGZ0cC9zZXJ2ZXIvc3JjL2dsb2J1c19pX2dmc19kYXRh LmMKKysrKyBiL2dyaWRmdHAvc2VydmVyL3NyYy9nbG9idXNfaV9nZnNfZGF0YS5jCitAQCAtNjU2 LDEzICs2NTYsMTIgQEAgZ2xvYnVzX2lfZ2ZzX2RhdGFfaHR0cF9wcmludF9yZXNwb25zZSgKKyAg ICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX3N0ciA9IE5VTEw7 CisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl90bXA7Cisg ICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsKKy0gICAgaW50 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmM7CisgICAgIGdsb2J1c194aW9faHR0 cF9oZWFkZXJfdCAqICAgICAgICAgIGhlYWRlcjsKKyAgICAgY2hhciAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYjY0X2hlYWRlciA9IE5VTEw7CisgICAgIGNoYXIgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGI2NF9ib2R5ID0gTlVMTDsKKyAgICAgaW50ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYm9keV9sZW4gPSAwOworIAorLSAgICByYyA9IGdsb2J1c19o YXNodGFibGVfdG9fbGlzdChoZWFkZXJfdGFibGUsICZoZWFkZXJfbGlzdCk7CisrICAgIGdsb2J1 c19oYXNodGFibGVfdG9fbGlzdChoZWFkZXJfdGFibGUsICZoZWFkZXJfbGlzdCk7CisgCisgICAg IGhlYWRlcl9zdHIgPSBzdHJkdXAoIiIpOworICAgICB3aGlsZSghZ2xvYnVzX2xpc3RfZW1wdHko aGVhZGVyX2xpc3QpKQorQEAgLTI2NzksNyArMjY3OCw2IEBAIGdsb2J1c19sX2dmc19kYXRhX25l d19kc2koCisgICAgIGNvbnN0IGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgIGluX21vZHVs ZV9uYW1lKQorIHsKKyAgICAgY29uc3QgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgbW9k dWxlX25hbWU7CistICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3Vs dDsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfbF9nZnNfZGF0YV9uZXdfZHNpKTsKKyAgICAg R2xvYnVzR0ZTRGVidWdFbnRlcigpOworIAorQEAgLTI3MDgsNyArMjcwNiw3IEBAIGdsb2J1c19s X2dmc19kYXRhX25ld19kc2koCisgICAgICAgICAgICAgZ2xvYnVzX2V4dGVuc2lvbl9yZWxlYXNl KHNlc3Npb25faGFuZGxlLT5tb2RfZHNpX2hhbmRsZSk7CisgCisgICAgICAgICAgICAgc2Vzc2lv bl9oYW5kbGUtPm1vZF9kc2lfbmFtZSA9IGdsb2J1c19saWJjX3N0cmR1cChtb2R1bGVfbmFtZSk7 CistICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2lfZ2ZzX2RhdGFfbmV3X2RzaSgKKysgICAg ICAgICAgICBnbG9idXNfaV9nZnNfZGF0YV9uZXdfZHNpKAorICAgICAgICAgICAgICAgICAmc2Vz c2lvbl9oYW5kbGUtPm1vZF9kc2lfaGFuZGxlLAorICAgICAgICAgICAgICAgICBzZXNzaW9uX2hh bmRsZS0+bW9kX2RzaV9uYW1lLAorICAgICAgICAgICAgICAgICAmc2Vzc2lvbl9oYW5kbGUtPm1v ZF9kc2ksCitAQCAtMjcyMiw3ICsyNzIwLDcgQEAgZ2xvYnVzX2xfZ2ZzX2RhdGFfbmV3X2RzaSgK KyAgICAgZWxzZQorICAgICB7CisgICAgICAgICBzZXNzaW9uX2hhbmRsZS0+bW9kX2RzaV9uYW1l ID0gIGdsb2J1c19saWJjX3N0cmR1cChtb2R1bGVfbmFtZSk7CistICAgICAgICByZXN1bHQgPSBn bG9idXNfaV9nZnNfZGF0YV9uZXdfZHNpKAorKyAgICAgICAgZ2xvYnVzX2lfZ2ZzX2RhdGFfbmV3 X2RzaSgKKyAgICAgICAgICAgICAmc2Vzc2lvbl9oYW5kbGUtPm1vZF9kc2lfaGFuZGxlLAorICAg ICAgICAgICAgIHNlc3Npb25faGFuZGxlLT5tb2RfZHNpX25hbWUsCisgICAgICAgICAgICAgJnNl c3Npb25faGFuZGxlLT5tb2RfZHNpLAorQEAgLTEzNTAzLDcgKzEzNTAxLDYgQEAgZ2xvYnVzX2dy aWRmdHBfc2VydmVyX2dldF93cml0ZV9yYW5nZSgKKyAgICAgZ2xvYnVzX29mZl90ICAgICAgICAg ICAgICAgICAgICAgICAgdG1wX2xlbiA9IC0xOworICAgICBnbG9idXNfb2ZmX3QgICAgICAgICAg ICAgICAgICAgICAgICB0bXBfd3JpdGUgPSAwOworICAgICBnbG9idXNfb2ZmX3QgICAgICAgICAg ICAgICAgICAgICAgICB0bXBfdHJhbnNmZXIgPSAwOworLSAgICBpbnQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByYzsKKyAgICAgR2xvYnVzR0ZTTmFtZShnbG9idXNfZ3JpZGZ0cF9z ZXJ2ZXJfZ2V0X3dyaXRlX3JhbmdlKTsKKyAgICAgR2xvYnVzR0ZTRGVidWdFbnRlcigpOworIAor QEAgLTEzNTExLDcgKzEzNTA4LDcgQEAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2dldF93cml0ZV9y YW5nZSgKKyAKKyAgICAgaWYoZ2xvYnVzX3JhbmdlX2xpc3Rfc2l6ZShvcC0+cmFuZ2VfbGlzdCkp CisgICAgIHsKKy0gICAgICAgIHJjID0gZ2xvYnVzX3JhbmdlX2xpc3RfcmVtb3ZlX2F0KAorKyAg ICAgICAgZ2xvYnVzX3JhbmdlX2xpc3RfcmVtb3ZlX2F0KAorICAgICAgICAgICAgIG9wLT5yYW5n ZV9saXN0LAorICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgJnRtcF9vZmYsCitAQCAtMTM1 NTEsNyArMTM1NDgsNiBAQCBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZ2V0X3JlYWRfcmFuZ2UoCisg ICAgIGdsb2J1c19vZmZfdCAgICAgICAgICAgICAgICAgICAgICAgIHRtcF9vZmYgPSAwOworICAg ICBnbG9idXNfb2ZmX3QgICAgICAgICAgICAgICAgICAgICAgICB0bXBfbGVuID0gLTE7CisgICAg IGdsb2J1c19vZmZfdCAgICAgICAgICAgICAgICAgICAgICAgIHRtcF93cml0ZSA9IDA7CistICAg IGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjOworICAgICBnbG9idXNfb2Zm X3QgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF9vZmZzZXQ7CisgICAgIGdsb2J1c19vZmZf dCAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9vZmZzZXQ7CisgICAgIGdsb2J1c19vZmZfdCAg ICAgICAgICAgICAgICAgICAgICAgIHN0cmlwZV9ibG9ja19zaXplOworQEAgLTEzNjA0LDcgKzEz NjAwLDcgQEAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2dldF9yZWFkX3JhbmdlKAorIAorICAgICAg ICAgICAgIGlmKGdsb2J1c19yYW5nZV9saXN0X3NpemUob3AtPnN0cmlwZV9yYW5nZV9saXN0KSkK KyAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIHJjID0gZ2xvYnVzX3JhbmdlX2xpc3Rf cmVtb3ZlX2F0KAorKyAgICAgICAgICAgICAgICBnbG9idXNfcmFuZ2VfbGlzdF9yZW1vdmVfYXQo CisgICAgICAgICAgICAgICAgICAgICBvcC0+c3RyaXBlX3JhbmdlX2xpc3QsCisgICAgICAgICAg ICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgJnRtcF9vZmYsCitAQCAtMTM2MTYs NyArMTM2MTIsNyBAQCBnbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfZ2V0X3JlYWRfcmFuZ2UoCisgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBzaXplOyBpKyspCisg ICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIHJjID0gZ2xvYnVzX3Jhbmdl X2xpc3RfYXQoCisrICAgICAgICAgICAgICAgICAgICBnbG9idXNfcmFuZ2VfbGlzdF9hdCgKKyAg ICAgICAgICAgICAgICAgICAgICAgICBvcC0+cmFuZ2VfbGlzdCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICZ0bXBfb2ZmLAorQEAgLTEzNjU2 LDcgKzEzNjUyLDcgQEAgZ2xvYnVzX2dyaWRmdHBfc2VydmVyX2dldF9yZWFkX3JhbmdlKAorIAor ICAgICAgICAgICAgICAgICBpZihnbG9idXNfcmFuZ2VfbGlzdF9zaXplKG9wLT5zdHJpcGVfcmFu Z2VfbGlzdCkpCisgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIHJjID0g Z2xvYnVzX3JhbmdlX2xpc3RfcmVtb3ZlX2F0KAorKyAgICAgICAgICAgICAgICAgICAgZ2xvYnVz X3JhbmdlX2xpc3RfcmVtb3ZlX2F0KAorICAgICAgICAgICAgICAgICAgICAgICAgIG9wLT5zdHJp cGVfcmFuZ2VfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAg ICAgICAgICAgICAgICZ0bXBfb2ZmLAorQEAgLTEzNjc4LDcgKzEzNjc0LDcgQEAgZ2xvYnVzX2dy aWRmdHBfc2VydmVyX2dldF9yZWFkX3JhbmdlKAorICAgICAgICAgfQorICAgICAgICAgZWxzZSBp ZihnbG9idXNfcmFuZ2VfbGlzdF9zaXplKG9wLT5yYW5nZV9saXN0KSkKKyAgICAgICAgIHsKKy0g ICAgICAgICAgICByYyA9IGdsb2J1c19yYW5nZV9saXN0X3JlbW92ZV9hdCgKKysgICAgICAgICAg ICBnbG9idXNfcmFuZ2VfbGlzdF9yZW1vdmVfYXQoCisgICAgICAgICAgICAgICAgIG9wLT5yYW5n ZV9saXN0LAorICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAmdG1wX29mZiwK K2RpZmYgLS1naXQgYS9ncmlkZnRwL3NlcnZlci9zcmMvZ2xvYnVzX2lfZ2ZzX2RlZmF1bHRfYnJh aW4uYyBiL2dyaWRmdHAvc2VydmVyL3NyYy9nbG9idXNfaV9nZnNfZGVmYXVsdF9icmFpbi5jCitp bmRleCBkMTFhZTkyZmIuLmFlNDU2ZGE2NiAxMDA2NDQKKy0tLSBhL2dyaWRmdHAvc2VydmVyL3Ny Yy9nbG9idXNfaV9nZnNfZGVmYXVsdF9icmFpbi5jCisrKysgYi9ncmlkZnRwL3NlcnZlci9zcmMv Z2xvYnVzX2lfZ2ZzX2RlZmF1bHRfYnJhaW4uYworQEAgLTMyNiw3ICszMjYsNiBAQCBnbG9idXNf bF9nZnNfbWVtX2xpbWl0X3JlbGVhc2VfY2IoCisgICAgIHZvaWQgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVzZXJfYXJnKQorIHsKKyAgICAgZ2xvYnVzX3hpb19pb3ZlY190ICAgICAg ICAgICAgICAgICAgaW92WzFdOworLSAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAg ICAgICByZXN1bHQ7CisgICAgIGdsb2J1c19ieXRlX3QgKiAgICAgICAgICAgICAgICAgICAgIGJ1 ZmZlcjsKKyAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wMzI7Cisg CitAQCAtMzQzLDcgKzM0Miw3IEBAIGdsb2J1c19sX2dmc19tZW1fbGltaXRfcmVsZWFzZV9jYigK KyAgICAgICAgICAgICBpb3ZbMF0uaW92X2Jhc2UgPSBidWZmZXI7CisgICAgICAgICAgICAgaW92 WzBdLmlvdl9sZW4gPSBHRl9SRUxFQVNFX01TR19MRU47CisgCistICAgICAgICAgICAgcmVzdWx0 ID0gZ2xvYnVzX2dmb3JrX3NlbmQoCisrICAgICAgICAgICAgZ2xvYnVzX2dmb3JrX3NlbmQoCisg ICAgICAgICAgICAgICAgIGdsb2J1c19sX2dmc19nZm9ya19oYW5kbGUsCisgICAgICAgICAgICAg ICAgIC0xLCAvKiB0byB0aGUgbWFzdGVyICovCisgICAgICAgICAgICAgICAgIGlvdiwKK2RpZmYg LS1naXQgYS9ncmlkZnRwL3NlcnZlci9zcmMvbW9kdWxlcy9maWxlL2dsb2J1c19ncmlkZnRwX3Nl cnZlcl9maWxlLmMgYi9ncmlkZnRwL3NlcnZlci9zcmMvbW9kdWxlcy9maWxlL2dsb2J1c19ncmlk ZnRwX3NlcnZlcl9maWxlLmMKK2luZGV4IDAzMjVjZDMwYi4uMzYwNTgzNjQ0IDEwMDY0NAorLS0t IGEvZ3JpZGZ0cC9zZXJ2ZXIvc3JjL21vZHVsZXMvZmlsZS9nbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJf ZmlsZS5jCisrKysgYi9ncmlkZnRwL3NlcnZlci9zcmMvbW9kdWxlcy9maWxlL2dsb2J1c19ncmlk ZnRwX3NlcnZlcl9maWxlLmMKK0BAIC0xMzk3LDcgKzEzOTcsNiBAQCBnbG9idXNfbF9nZnNfZmls ZV9kZWxldGVfZGlyKAorICAgICBESVIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk aXI7CisgICAgIHN0cnVjdCBzdGF0ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRfYnVmOwor ICAgICBzdHJ1Y3QgZGlyZW50ICogICAgICAgICAgICAgICAgICAgICBkaXJfZW50cnk7CistICAg IGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk7CisgICAgIGNoYXIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhbTUFYUEFUSExFTl07CisgICAgIEdsb2J1c0dG U05hbWUoZ2xvYnVzX2xfZ2ZzX2ZpbGVfZGVsZXRlX2Rpcik7CisgICAgIEdsb2J1c0dGU0ZpbGVE ZWJ1Z0VudGVyKCk7CitAQCAtMTQyOCw5ICsxNDI3LDcgQEAgZ2xvYnVzX2xfZ2ZzX2ZpbGVfZGVs ZXRlX2RpcigKKyAgICAgICAgICAgICBnb3RvIGVycm9yX29wZW47CisgICAgICAgICB9CisgCist ICAgICAgICBmb3IoaSA9IDA7CistICAgICAgICAgICAgZ2xvYnVzX2xpYmNfcmVhZGRpcl9yKGRp ciwgJmRpcl9lbnRyeSkgPT0gMCAmJiBkaXJfZW50cnk7CistICAgICAgICAgICAgaSsrKQorKyAg ICAgICAgd2hpbGUoZ2xvYnVzX2xpYmNfcmVhZGRpcl9yKGRpciwgJmRpcl9lbnRyeSkgPT0gMCAm JiBkaXJfZW50cnkpCisgICAgICAgICB7CisgICAgICAgICAgICAgaWYoZGlyX2VudHJ5LT5kX25h bWVbMF0gPT0gJy4nICYmCisgICAgICAgICAgICAgICAgIChkaXJfZW50cnktPmRfbmFtZVsxXSA9 PSAnXDAnIHx8CitkaWZmIC0tZ2l0IGEvZ3JpZGZ0cC9zZXJ2ZXIvc3JjL21vZHVsZXMvcmVtb3Rl L2dsb2J1c19ncmlkZnRwX3NlcnZlcl9yZW1vdGUuYyBiL2dyaWRmdHAvc2VydmVyL3NyYy9tb2R1 bGVzL3JlbW90ZS9nbG9idXNfZ3JpZGZ0cF9zZXJ2ZXJfcmVtb3RlLmMKK2luZGV4IDMyNGY4ZjU4 NS4uODVkMDk2OWZhIDEwMDY0NAorLS0tIGEvZ3JpZGZ0cC9zZXJ2ZXIvc3JjL21vZHVsZXMvcmVt b3RlL2dsb2J1c19ncmlkZnRwX3NlcnZlcl9yZW1vdGUuYworKysrIGIvZ3JpZGZ0cC9zZXJ2ZXIv c3JjL21vZHVsZXMvcmVtb3RlL2dsb2J1c19ncmlkZnRwX3NlcnZlcl9yZW1vdGUuYworQEAgLTky Niw3ICs5MjYsNiBAQCBnbG9idXNfbF9nZnNfaXBjX2V2ZW50X2NiKAorICAgICBnbG9idXNfbF9n ZnNfcmVtb3RlX25vZGVfaW5mb190ICogICBub2RlX2luZm87CisgICAgIGdsb2J1c19nZnNfdHJh bnNmZXJfaW5mb190ICogICAgICAgIGluZm87CisgICAgIGdsb2J1c19nZnNfZXZlbnRfaW5mb190 ICAgICAgICAgICAgIGV2ZW50X2luZm87CistICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAg ICAgICAgICAgIHJlc3VsdDsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY3RyOworICAgICBHbG9idXNHRlNOYW1lKGdsb2J1c19sX2dmc19pcGNfZXZlbnRfY2IpOwor ICAgICBHbG9idXNHRlNSZW1vdGVEZWJ1Z0VudGVyKCk7CitAQCAtMTAwOCw3ICsxMDA3LDcgQEAg Z2xvYnVzX2xfZ2ZzX2lwY19ldmVudF9jYigKKyAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2lu Zm8uZXZlbnRfYXJnID0gbWFzdGVyX25vZGUtPmV2ZW50X2FyZzsKKyAgICAgICAgICAgICAgICAg ICAgIGV2ZW50X2luZm8uZW9mX2NvdW50ID0gYm91bmNlX2luZm8tPmVvZl9jb3VudDsKKyAgICAg ICAgICAgICAgICAgICAgIGV2ZW50X2luZm8ubm9kZV9jb3VudCA9IGJvdW5jZV9pbmZvLT5wYXJ0 aWFsX2VvZl9jb3VudHMgKyAxOworLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVz X2dmc19pcGNfcmVxdWVzdF90cmFuc2Zlcl9ldmVudCgKKysgICAgICAgICAgICAgICAgICAgIGds b2J1c19nZnNfaXBjX3JlcXVlc3RfdHJhbnNmZXJfZXZlbnQoCisgICAgICAgICAgICAgICAgICAg ICAgICAgbWFzdGVyX25vZGUtPmlwY19oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg JmV2ZW50X2luZm8pOworICAgICAgICAgICAgICAgICAgICAgYm91bmNlX2luZm8tPmZpbmFsX2Vv ZisrOworQEAgLTE3NzQsNyArMTc3Myw2IEBAIGdsb2J1c19sX2dmc19yZW1vdGVfdHJldigKKyB7 CisgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgIGZyZWVfbm9kZSA9IEdM T0JVU19GQUxTRTsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTsK Ky0gICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OworICAgICBn bG9idXNfbF9nZnNfcmVtb3RlX2hhbmRsZV90ICogICAgICBteV9oYW5kbGU7CisgICAgIGdsb2J1 c19sX2dmc19yZW1vdGVfbm9kZV9pbmZvX3QgKiAgIG5vZGVfaW5mbzsKKyAgICAgZ2xvYnVzX2dm c19ldmVudF9pbmZvX3QgICAgICAgICAgICAgbmV3X2V2ZW50X2luZm87CitAQCAtMTc5NSw3ICsx NzkzLDcgQEAgZ2xvYnVzX2xfZ2ZzX3JlbW90ZV90cmV2KAorICAgICAgICAgbm9kZV9pbmZvID0g Ym91bmNlX2luZm8tPm5vZGVfaGFuZGxlLT5ub2Rlc1tpXTsKKyAKKyAgICAgICAgIG5ld19ldmVu dF9pbmZvLmV2ZW50X2FyZyA9IG5vZGVfaW5mby0+ZXZlbnRfYXJnOworLSAgICAgICAgcmVzdWx0 ID0gZ2xvYnVzX2dmc19pcGNfcmVxdWVzdF90cmFuc2Zlcl9ldmVudCgKKysgICAgICAgIGdsb2J1 c19nZnNfaXBjX3JlcXVlc3RfdHJhbnNmZXJfZXZlbnQoCisgICAgICAgICAgICAgbm9kZV9pbmZv LT5pcGNfaGFuZGxlLAorICAgICAgICAgICAgICZuZXdfZXZlbnRfaW5mbyk7CisgICAgIH0KKy0t IAorMi41NC4wCisKCmRpZmYgLS1naXQgYS9nbG9idXMtZ3JpZGZ0cC1zZXJ2ZXIuc3BlYyBiL2ds b2J1cy1ncmlkZnRwLXNlcnZlci5zcGVjCmluZGV4IDQ5MTQzZGEuLmI1YWY5ZDggMTAwNjQ0Ci0t LSBhL2dsb2J1cy1ncmlkZnRwLXNlcnZlci5zcGVjCisrKyBiL2dsb2J1cy1ncmlkZnRwLXNlcnZl ci5zcGVjCkBAIC0zLDcgKzMsNyBAQAogTmFtZToJCWdsb2J1cy1ncmlkZnRwLXNlcnZlcgogJWds b2JhbCBfbmFtZSAlKHRyIC0gXyA8PDwgJXtuYW1lfSkKIFZlcnNpb246CTEzLjI4Ci1SZWxlYXNl OgkyJXs/ZGlzdH0KK1JlbGVhc2U6CTMlez9kaXN0fQogU3VtbWFyeToJR3JpZCBDb21tdW5pdHkg VG9vbGtpdCAtIEdsb2J1cyBHcmlkRlRQIFNlcnZlcgogCiBMaWNlbnNlOglBcGFjaGUtMi4wCkBA IC0xMiw2ICsxMiw4IEBAIFNvdXJjZToJCWh0dHBzOi8vcmVwby5ncmlkY2Yub3JnL2djdDYvc291 cmNlcy8le19uYW1lfS0le3ZlcnNpb259LnRhci5negogU291cmNlMToJJXtuYW1lfS5zZXJ2aWNl CiBTb3VyY2UyOglnbG9idXMtZ3JpZGZ0cC1zc2hmdHAuc2VydmljZQogU291cmNlODoJUkVBRE1F CitQYXRjaDA6CQkwMDAxLVVudGFiaWZ5LWFuZC1yZW1vdmUtdHJhaWxpbmctd2hpdGUtc3BhY2Uu cGF0Y2gKK1BhdGNoMToJCTAwMDItRml4LWNvbXBpbGVyLWFuZC1kb3h5Z2VuLXdhcm5pbmdzLnBh dGNoCiAKIEJ1aWxkUmVxdWlyZXM6CW1ha2UKIEJ1aWxkUmVxdWlyZXM6CWdjYwpAQCAtODgsNiAr OTAsOCBAQCBHbG9idXMgR3JpZEZUUCBTZXJ2ZXIgRGV2ZWxvcG1lbnQgRmlsZXMKIAogJXByZXAK ICVzZXR1cCAtcSAtbiAle19uYW1lfS0le3ZlcnNpb259CislcGF0Y2ggLVAwIC1wNAorJXBhdGNo IC1QMSAtcDQKIAogJWJ1aWxkCiAjIFJlZHVjZSBvdmVybGlua2luZwpAQCAtMTc4LDYgKzE4Miw5 IEBAIHJtICV7YnVpbGRyb290fSV7X3BrZ2RvY2Rpcn0vR0xPQlVTX0xJQ0VOU0UKICV7X2xpYmRp cn0vcGtnY29uZmlnLyV7bmFtZX0ucGMKIAogJWNoYW5nZWxvZworKiBTdW4gSnVuIDE0IDIwMjYg TWF0dGlhcyBFbGxlcnQgPG1hdHRpYXMuZWxsZXJ0QHBoeXNpY3MudXUuc2U+IC0gMTMuMjgtMwor LSBGaXggY29tcGlsZXIgd2FybmluZ3MKKwogKiBGcmkgSmFuIDE2IDIwMjYgRmVkb3JhIFJlbGVh c2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAxMy4yOC0yCiAtIFJl YnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfNDRfTWFzc19S ZWJ1aWxkCiAK