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-xio] rawhide: Fix compiler and doxygen warnings Date: Sun, 14 Jun 2026 08:55:28 GMT Message-ID: <178142732812.1.2249278470774679934.rpms-globus-xio-3ade60289d97@fedoraproject.org> List-ID: X-Git-Repo: rpms/globus-xio X-Git-Branch: rawhide X-Git-Rev: 3ade60289d979a7445ab1a328b31a4d63435fe58 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2xvYnVzLXhpbwpC cmFuY2ggOiByYXdoaWRlCkNvbW1pdCA6IDNhZGU2MDI4OWQ5NzlhNzQ0NWFiMWEzMjhiMzFhNGQ2 MzQzNWZlNTgKQXV0aG9yIDogTWF0dGlhcyBFbGxlcnQgPG1hdHRpYXMuZWxsZXJ0QHBoeXNpY3Mu dXUuc2U+CkRhdGUgICA6IDIwMjYtMDYtMTRUMTA6Mzk6MTMrMDI6MDAKU3RhdHMgIDogKzU2OTUv LTEgaW4gMyBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3Jw bXMvZ2xvYnVzLXhpby9jLzNhZGU2MDI4OWQ5NzlhNzQ0NWFiMWEzMjhiMzFhNGQ2MzQzNWZlNTg/ YnJhbmNoPXJhd2hpZGUKCkxvZzoKRml4IGNvbXBpbGVyIGFuZCBkb3h5Z2VuIHdhcm5pbmdzCgot LS0KZGlmZiAtLWdpdCBhLzAwMDEtVW50YWJpZnktYW5kLXJlbW92ZS10cmFpbGluZy13aGl0ZS1z cGFjZS5wYXRjaCBiLzAwMDEtVW50YWJpZnktYW5kLXJlbW92ZS10cmFpbGluZy13aGl0ZS1zcGFj ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjFlMjVjCi0tLSAv ZGV2L251bGwKKysrIGIvMDAwMS1VbnRhYmlmeS1hbmQtcmVtb3ZlLXRyYWlsaW5nLXdoaXRlLXNw YWNlLnBhdGNoCkBAIC0wLDAgKzEsNDkxMCBAQAorRnJvbSAzY2NkYWEwMjM2MjMwYmJjYmNiZjMz OWU3ZGZkZmFmMjNjMTBiZDZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dGlh cyBFbGxlcnQgPG1hdHRpYXMuZWxsZXJ0QHBoeXNpY3MudXUuc2U+CitEYXRlOiBXZWQsIDIwIE1h eSAyMDI2IDAwOjE1OjM3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBVbnRhYmlmeSBhbmQg cmVtb3ZlIHRyYWlsaW5nIHdoaXRlLXNwYWNlCisKKy0tLQorIHhpby9zcmMvYnVpbHRpbnMvaHR0 cC9nbG9idXNfaV94aW9faHR0cC5oICAgICB8ICAxNiArLQorIHhpby9zcmMvYnVpbHRpbnMvaHR0 cC9nbG9idXNfeGlvX2h0dHAuYyAgICAgICB8ICAxMiArLQorIHhpby9zcmMvYnVpbHRpbnMvaHR0 cC9nbG9idXNfeGlvX2h0dHBfYXR0ci5jICB8ICAgMiArLQorIC4uLi9idWlsdGlucy9odHRwL2ds b2J1c194aW9faHR0cF9jbGllbnQuYyAgICB8ICAzNCArLQorIC4uLi9idWlsdGlucy9odHRwL2ds b2J1c194aW9faHR0cF9oYW5kbGUuYyAgICB8ICAgNiArLQorIC4uLi9idWlsdGlucy9odHRwL2ds b2J1c194aW9faHR0cF9oZWFkZXIuYyAgICB8ICAgMiArLQorIC4uLi9odHRwL2dsb2J1c194aW9f aHR0cF9oZWFkZXJfaW5mby5jICAgICAgICB8ICAgNCArLQorIC4uLi9idWlsdGlucy9odHRwL2ds b2J1c194aW9faHR0cF9zZXJ2ZXIuYyAgICB8ICAxNCArLQorIC4uLi9idWlsdGlucy9odHRwL2ds b2J1c194aW9faHR0cF90YXJnZXQuYyAgICB8ICAgMiArLQorIC4uLi9idWlsdGlucy9odHRwL2ds b2J1c194aW9faHR0cF90cmFuc2Zvcm0uYyB8ICA2NiArLQorIC4uLi9tb2RlX2UvZ2xvYnVzX3hp b19tb2RlX2VfZHJpdmVyLmMgICAgICAgICB8IDQyMiArKysrKy0tLS0tLQorIHhpby9zcmMvZ2xv YnVzX3hpb19kcml2ZXIuYyAgICAgICAgICAgICAgICAgICB8IDE5OCArKy0tLQorIHhpby9zcmMv Z2xvYnVzX3hpb19zeXN0ZW1fc2VsZWN0LmMgICAgICAgICAgICB8IDI3MCArKystLS0tCisgeGlv L3NyYy90ZXN0L2RyaXZlcnMvZ2xvYnVzX3hpb19zbXRwLmMgICAgICAgIHwgIDEyICstCisgeGlv L3NyYy90ZXN0L2dsb2J1c191dHBfbWFpbi5jICAgICAgICAgICAgICAgIHwgNjkwICsrKysrKysr Ky0tLS0tLS0tLQorIDE1IGZpbGVzIGNoYW5nZWQsIDg3NSBpbnNlcnRpb25zKCspLCA4NzUgZGVs ZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS94aW8vc3JjL2J1aWx0aW5zL2h0dHAvZ2xvYnVzX2lf eGlvX2h0dHAuaCBiL3hpby9zcmMvYnVpbHRpbnMvaHR0cC9nbG9idXNfaV94aW9faHR0cC5oCitp bmRleCBiNGUzOTY4MTkuLjE1NWRmZGUzNCAxMDA2NDQKKy0tLSBhL3hpby9zcmMvYnVpbHRpbnMv aHR0cC9nbG9idXNfaV94aW9faHR0cC5oCisrKysgYi94aW8vc3JjL2J1aWx0aW5zL2h0dHAvZ2xv YnVzX2lfeGlvX2h0dHAuaAorQEAgLTEwMiw3ICsxMDIsNyBAQCB0eXBlZGVmIHN0cnVjdAorICAg ICAvKioKKyAgICAgICogYnVmZmVyIHRvIGhvbGQgdGhlIGNodW5rIHNpemUgbGluZQorICAgICAg Ki8KKy0gICAgZ2xvYnVzX2J5dGVfdCAgICAgICAgICAgICAgICAgICAgICAgY2h1bmtfc2l6ZV9i dWZmZXJbNjRdOyAgICAgICAgICAgICAKKysgICAgZ2xvYnVzX2J5dGVfdCAgICAgICAgICAgICAg ICAgICAgICAgY2h1bmtfc2l6ZV9idWZmZXJbNjRdOworIH0KKyBnbG9idXNfaV94aW9faHR0cF9v cGVyYXRpb25faW5mb190OworIAorQEAgLTMzNSwxMiArMzM1LDEyIEBAIHR5cGVkZWYgc3RydWN0 IGdsb2J1c19pX3hpb19odHRwX2hhbmRsZV9zCisgICAgICAqIGNvbnRhaW4gdW5wYXJzZWQgZGF0 YQorICAgICAgKi8KKyAgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgcmVh ZF9idWZmZXJfdmFsaWQ7CistICAgIAorKworICAgICAvKioKKyAgICAgICogT3BlcmF0aW9uIHVz ZWQgZm9yIGNsb3NpbmcsIHdoZW4gYW4gZXJyb3Igb2NjdXJzIGF0IG9wZW4gdGltZS4KKyAgICAg ICovCisgICAgIGdsb2J1c194aW9fb3BlcmF0aW9uX3QgICAgICAgICAgICAgIGNsb3NlX29wZXJh dGlvbjsKKy0gICAgCisrCisgICAgIC8qKgorICAgICAgKiBSZW1haW5pbmctdG8tYmUtcmVhZCBj aHVuay4KKyAgICAgICovCitAQCAtMzcyLDcgKzM3Miw3IEBAIHR5cGVkZWYgc3RydWN0IGdsb2J1 c19pX3hpb19odHRwX2hhbmRsZV9zCisgICAgICAqLworICAgICBnbG9idXNfeGlvX29wZXJhdGlv bl90ICAgICAgICAgICAgICByZXNwb25zZV9yZWFkX29wZXJhdGlvbjsKKyAKKy0gICAgCisrCisg ICAgIGdsb2J1c19pX3hpb19odHRwX29wZXJhdGlvbl9pbmZvX3QgIHJlYWRfb3BlcmF0aW9uOwor ICAgICBnbG9idXNfaV94aW9faHR0cF9vcGVyYXRpb25faW5mb190ICB3cml0ZV9vcGVyYXRpb247 CisgCitAQCAtNDAyLDcgKzQwMiw3IEBAIHR5cGVkZWYgc3RydWN0IGdsb2J1c19pX3hpb19odHRw X2hhbmRsZV9zCisgICAgICAqIGRyb3BzIHVzCisgICAgICAqLworICAgICBnbG9idXNfYm9vbF90 ICAgICAgICAgICAgICAgICAgICAgICByZW9wZW5faW5fcHJvZ3Jlc3M7CistICAgIAorKworICAg ICAvKiBlcnJvciBmcm9tIGludGVybmFsIHJlc3BvbnNlIHJlYWQsIHVzdWFsbHkgd2l0aCBhIGJy b2tlbiBwZXJzaXN0ZW50CisgICAgICAqIGNvbm5lY3Rpb24KKyAgICAgICovCitAQCAtNjYyLDcg KzY2Miw3IEBAIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19pX3hpb19odHRwX3NlcnZlcl9yZWFk X25leHRfcmVxdWVzdCgKKyAgICAgZ2xvYnVzX2lfeGlvX2h0dHBfaGFuZGxlX3QgKiAgICAgICAg aHR0cF9oYW5kbGUpOworIAorLS8qIGdsb2J1c194aW9faHR0cF90YXJnZXQuYyAqLyAKKysvKiBn bG9idXNfeGlvX2h0dHBfdGFyZ2V0LmMgKi8KKyBleHRlcm4KKyBnbG9idXNfcmVzdWx0X3QKKyBn bG9idXNfaV94aW9faHR0cF90YXJnZXRfaW5pdCgKK0BAIC03MTEsNyArNzExLDcgQEAgZ2xvYnVz X3Jlc3VsdF90CisgZ2xvYnVzX2xfeGlvX2h0dHBfY2xpZW50X3BhcnNlX3Jlc3BvbnNlKAorICAg ICBnbG9idXNfaV94aW9faHR0cF9oYW5kbGVfdCAqICAgICAgICBodHRwX2hhbmRsZSwKKyAgICAg Z2xvYnVzX2Jvb2xfdCAqICAgICAgICAgICAgICAgICAgICAgZG9uZSk7CistICAgIAorKworIHZv aWQKKyBnbG9idXNfbF94aW9faHR0cF9jbGllbnRfcmVhZF9yZXNwb25zZV9jYWxsYmFjaygKKyAg ICAgZ2xvYnVzX3hpb19vcGVyYXRpb25fdCAgICAgICAgICAgICAgb3AsCitAQCAtNzQ4LDcgKzc0 OCw3IEBAIGdsb2J1c19pX3hpb19odHRwX2Nsb3NlKAorICAgICB2b2lkICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhdHRyLAorICAgICBnbG9idXNfeGlvX29wZXJhdGlvbl90ICAgICAg ICAgICAgICBvcCk7CisgCistZXh0ZXJuIAorK2V4dGVybgorIGdsb2J1c19yZXN1bHRfdAorIGds b2J1c19pX3hpb19odHRwX2Nsb3NlX2ludGVybmFsKAorICAgICBnbG9idXNfaV94aW9faHR0cF9o YW5kbGVfdCAqICAgICAgICBodHRwX2hhbmRsZSk7CitkaWZmIC0tZ2l0IGEveGlvL3NyYy9idWls dGlucy9odHRwL2dsb2J1c194aW9faHR0cC5jIGIveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1 c194aW9faHR0cC5jCitpbmRleCAxYjdkNzFhMjQuLmMzNTM1ZTAyNCAxMDA2NDQKKy0tLSBhL3hp by9zcmMvYnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHAuYworKysrIGIveGlvL3NyYy9idWls dGlucy9odHRwL2dsb2J1c194aW9faHR0cC5jCitAQCAtNzEsNyArNzEsNyBAQCBnbG9idXNfbF94 aW9faHR0cF9pbml0KAorICAgICAgICAgZ2xvYnVzX2lfeGlvX2h0dHBfcmVhZCwKKyAgICAgICAg IGdsb2J1c19pX3hpb19odHRwX3dyaXRlLAorICAgICAgICAgZ2xvYnVzX2lfeGlvX2h0dHBfaGFu ZGxlX2NudGwsCistCU5VTEwpOworKyAgICAgICAgTlVMTCk7CisgCisgICAgIGdsb2J1c194aW9f ZHJpdmVyX3NldF9zZXJ2ZXIoCisgICAgICAgICBkcml2ZXIsCitAQCAtMjgwLDcgKzI4MCw3IEBA IGdsb2J1c19pX3hpb19odHRwX2ZpbmRfZW9sKAorICAgICBjaGFyICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXN1bHQ7CisgICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAg ICAgICAgIHNraXAgPSAwOworIAorLSAgICB3aGlsZSAoKChza2lwICsgMSkgPCBibG9iX2xlbmd0 aCkgJiYgCisrICAgIHdoaWxlICgoKHNraXAgKyAxKSA8IGJsb2JfbGVuZ3RoKSAmJgorICAgICAg ICAgKHJlc3VsdCA9IG1lbWNocihibG9iICsgc2tpcCwgJ1xyJywgYmxvYl9sZW5ndGgtc2tpcCkp ICE9IE5VTEwpCisgICAgIHsKKyAgICAgICAgIGlmIChyZXN1bHQrMSA9PSAoYmxvYiArIHNraXAg KyBibG9iX2xlbmd0aCkpCitAQCAtMjkxLDcgKzI5MSw3IEBAIGdsb2J1c19pX3hpb19odHRwX2Zp bmRfZW9sKAorICAgICAgICAgeworICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg ICB9CistICAgICAgICBlbHNlIAorKyAgICAgICAgZWxzZQorICAgICAgICAgeworICAgICAgICAg ICAgIHNraXAgKz0gKHJlc3VsdCAtIGJsb2IgKyAxKTsKKyAgICAgICAgIH0KK0BAIC0zNjgsNyAr MzY4LDcgQEAgZ2xvYnVzX2lfeGlvX2h0dHBfY2xlYW5fcmVhZF9idWZmZXIoCisgICAgICAgICAg ICAgKyBodHRwX2hhbmRsZS0+cmVhZF9idWZmZXJfb2Zmc2V0CisgICAgICAgICAgICAgKyBodHRw X2hhbmRsZS0+cmVhZF9idWZmZXJfdmFsaWQ7CisgCistICAgIGh0dHBfaGFuZGxlLT5yZWFkX2lv dmVjLmlvdl9sZW4gPSAKKysgICAgaHR0cF9oYW5kbGUtPnJlYWRfaW92ZWMuaW92X2xlbiA9Cisg ICAgICAgICBodHRwX2hhbmRsZS0+cmVhZF9idWZmZXIuaW92X2xlbgorICAgICAgICAgLSBodHRw X2hhbmRsZS0+cmVhZF9idWZmZXJfb2Zmc2V0CisgICAgICAgICAtIGh0dHBfaGFuZGxlLT5yZWFk X2J1ZmZlcl92YWxpZDsKK0BAIC00MDksOSArNDA5LDkgQEAgZ2xvYnVzX2xfeGlvX2h0dHBfZGVh Y3RpdmF0ZSh2b2lkKQorIHsKKyAgICAgZ2xvYnVzX2lfeGlvX2h0dHBfaGFuZGxlX3QgKiAgICAg ICAgaHR0cF9oYW5kbGU7CisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAg IHJlc3VsdDsKKy0gICAgCisrCisgICAgIEdsb2J1c1hJT1VuUmVnaXN0ZXJEcml2ZXIoaHR0cCk7 CistICAgIAorKworICAgICBnbG9idXNfbXV0ZXhfbG9jaygmZ2xvYnVzX2lfeGlvX2h0dHBfY2Fj aGVkX2hhbmRsZV9tdXRleCk7CisgICAgIHdoaWxlICghZ2xvYnVzX2xpc3RfZW1wdHkoZ2xvYnVz X2lfeGlvX2h0dHBfY2FjaGVkX2hhbmRsZXMpKQorICAgICB7CitkaWZmIC0tZ2l0IGEveGlvL3Ny Yy9idWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0cF9hdHRyLmMgYi94aW8vc3JjL2J1aWx0aW5z L2h0dHAvZ2xvYnVzX3hpb19odHRwX2F0dHIuYworaW5kZXggZTU4YThkYjc1Li4yZDNkM2Q3YmQg MTAwNjQ0CistLS0gYS94aW8vc3JjL2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX2F0dHIu YworKysrIGIveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0cF9hdHRyLmMKK0BA IC0zMSw3ICszMSw3IEBACisgICogZHJpdmVyIHZpYSBnbG9idXNfeGlvX2F0dHJfaW5pdCgpLgor ICAqCisgICogQHBhcmFtIG91dF9hdHRyCistICogICAgIFBvaW50ZXIgdmFsdWUgd2lsbCBiZSBz ZXQgdG8gcG9pbnQgdG8gYSAKKysgKiAgICAgUG9pbnRlciB2YWx1ZSB3aWxsIGJlIHNldCB0byBw b2ludCB0byBhCisgICogICAgIG5ld2x5IGFsbG9jYXRlZCBhbmQgaW5pdGlsaXplZCAjZ2xvYnVz X2lfeGlvX2h0dHBfYXR0cl90CisgICogICAgIHN0cnVjdHVyZS4KKyAgKgorZGlmZiAtLWdpdCBh L3hpby9zcmMvYnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHBfY2xpZW50LmMgYi94aW8vc3Jj L2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX2NsaWVudC5jCitpbmRleCBkYTZmYTIxOGIu Ljc1YTAxODE3MiAxMDA2NDQKKy0tLSBhL3hpby9zcmMvYnVpbHRpbnMvaHR0cC9nbG9idXNfeGlv X2h0dHBfY2xpZW50LmMKKysrKyBiL3hpby9zcmMvYnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0 dHBfY2xpZW50LmMKK0BAIC00NywxMyArNDcsMTMgQEAgZ2xvYnVzX2xfeGlvX2h0dHBfY2xlYW51 cF9jYW5jZWwoCisgICogSWYgdGhpcyBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIG9wZW4gd2lsbCBy ZW1haW4gdW5maW5pc2hlZCB1bnRpbCB0aGF0CisgICogd3JpdGUgY29tcGxldGVzLiBJZiBhbiBl cnJvciBoYXBwZW5zLCB0aGlzIGZ1bmN0aW9uIHdpbGwgY2xvc2UgdGhlIGhhbmRsZQorICAqIGlu dGVybmFsbHkgYW5kIGNhbGwgZ2xvYnVzX3hpb19kcml2ZXJfZmluaXNoZWRfb3BlbigpIGJlZm9y ZSByZXR1cm5pbmcuCistICogCisrICoKKyAgKiBAcGFyYW0gb3AKKyAgKiAgICAgb3BlcmF0aW9u IGFzc29jaWF0ZWQgd2l0aCB0aGUgb3BlbiBjYWxsLgorICAqIEBwYXJhbSByZXN1bHQKKyAgKiAg ICAgTG93ZXItbGV2ZWwgcHJvdG9jb2wgcmVzdWx0IGZyb20gb3Blbi4KKyAgKiBAcGFyYW0gdXNl cl9hcmcKKy0gKiAgICAgQSB2b2lkIHBvaW50ZXIgcG9pbnRpbmcgdG8gYSAjZ2xvYnVzX2lfeGlv X2h0dHBfZHJpdmVyX3QgCisrICogICAgIEEgdm9pZCBwb2ludGVyIHBvaW50aW5nIHRvIGEgI2ds b2J1c19pX3hpb19odHRwX2RyaXZlcl90CisgICoKKyAgKiBAcmV0dXJuIHZvaWQKKyAgKi8KK0BA IC0yOTEsNyArMjkxLDcgQEAgZ2xvYnVzX2lfeGlvX2h0dHBfY2xpZW50X3dyaXRlX3JlcXVlc3Qo CisgICAgICAgICAgICAgICAgIHN0cmxlbihodHRwX2hhbmRsZS0+dGFyZ2V0X2luZm8uaG9zdCks CisgICAgICAgICAgICAgICAgIGZyZWVfaW92ZWNzX2V4aXQpOworIAorLSAgICAgICAgaWYgKGh0 dHBfaGFuZGxlLT50YXJnZXRfaW5mby5wb3J0ICE9IDAgJiYgCisrICAgICAgICBpZiAoaHR0cF9o YW5kbGUtPnRhcmdldF9pbmZvLnBvcnQgIT0gMCAmJgorICAgICAgICAgICAgIGh0dHBfaGFuZGxl LT50YXJnZXRfaW5mby5wb3J0ICE9IDgwKQorICAgICAgICAgeworICAgICAgICAgICAgIGNoYXIg cG9ydF9idWZmZXJbN107CitAQCAtMzE2LDcgKzMxNiw3IEBAIGdsb2J1c19pX3hpb19odHRwX2Ns aWVudF93cml0ZV9yZXF1ZXN0KAorICAgICAgICAgICAgICZodHRwX2hhbmRsZS0+cmVxdWVzdF9p bmZvLmhlYWRlcnMpKQorICAgICB7CisgICAgICAgICBpZiAoKGh0dHBfaGFuZGxlLT5yZXF1ZXN0 X2luZm8uaHR0cF92ZXJzaW9uID09CistICAgICAgICAgICAgICAgIEdMT0JVU19YSU9fSFRUUF9W RVJTSU9OXzFfMCkgfHwgCisrICAgICAgICAgICAgICAgIEdMT0JVU19YSU9fSFRUUF9WRVJTSU9O XzFfMCkgfHwKKyAgICAgICAgICAgICAgICAgKChodHRwX2hhbmRsZS0+cmVxdWVzdF9pbmZvLmhl YWRlcnMudHJhbnNmZXJfZW5jb2RpbmcgPT0KKyAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19Y SU9fSFRUUF9UUkFOU0ZFUl9FTkNPRElOR19JREVOVElUWSkgJiYKKyAgICAgICAgICAgICAgICAg ICAgIEdMT0JVU19JX1hJT19IVFRQX0hFQURFUl9JU19DT05URU5UX0xFTkdUSF9TRVQoCitAQCAt MzM5LDcgKzMzOSw3IEBAIGdsb2J1c19pX3hpb19odHRwX2NsaWVudF93cml0ZV9yZXF1ZXN0KAor ICAgICAgICAgICAgIHNpemVfYnVmZmVyID0gZ2xvYnVzX2NvbW1vbl9jcmVhdGVfc3RyaW5nKAor ICAgICAgICAgICAgICAgICAgICAgIiUiR0xPQlVTX09GRl9UX0ZPUk1BVCJcclxuIiwKKyAgICAg ICAgICAgICAgICAgICAgICBodHRwX2hhbmRsZS0+cmVxdWVzdF9pbmZvLmhlYWRlcnMuY29udGVu dF9sZW5ndGgpOworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIGlmIChzaXplX2J1ZmZl ciA9PSBOVUxMKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgcmVzdWx0ID0gR2xv YnVzWElPRXJyb3JNZW1vcnkoImlvdmVjLmlvdl9iYXNlIik7CitAQCAtNDU3LDcgKzQ1Nyw3IEBA IGVycm9yX2V4aXQ6CisgLyogZ2xvYnVzX2lfeGlvX2h0dHBfY2xpZW50X3dyaXRlX3JlcXVlc3Qo KSAqLworIAorIC8qKgorLSAqIFJlcXVlc3QgV3JpdHRlbiBDYWxsYmFjayAKKysgKiBSZXF1ZXN0 IFdyaXR0ZW4gQ2FsbGJhY2sKKyAgKiBAaW5ncm91cCBnbG9idXNfaV94aW9faHR0cF93cml0ZV9y ZXF1ZXN0X2NhbGxiYWNrCisgICoKKyAgKiBDYWxsZWQgd2hlbiB0aGUgcmVzcG9uc2UgaGFzIGJl ZW4gY29tcGxldGVseSB3cml0dGVuIGJ5IHRoZSB0cmFuc3BvcnQuCitAQCAtNjk0LDcgKzY5NCw3 IEBAIGdsb2J1c19sX3hpb19odHRwX2NsaWVudF9yZWFkX3Jlc3BvbnNlX2NhbGxiYWNrKAorICAg ICAgICAgICAgIHJlc3BvbnNlX2Vycm9yID0gZ2xvYnVzX2Vycm9yX2dldChyZXN1bHQpOworIAor ICAgICAgICAgICAgIGh0dHBfaGFuZGxlLT5yZXNwb25zZV9pbmZvLnN0YXR1c19jb2RlID0gNTAw OworLSAgICAgICAgICAgIGh0dHBfaGFuZGxlLT5yZXNwb25zZV9pbmZvLnJlYXNvbl9waHJhc2Ug PSAKKysgICAgICAgICAgICBodHRwX2hhbmRsZS0+cmVzcG9uc2VfaW5mby5yZWFzb25fcGhyYXNl ID0KKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2Vycm9yX3ByaW50X2ZyaWVuZGx5KHJlc3BvbnNl X2Vycm9yKTsKKyAKKyAgICAgICAgICAgICBpZiAoaHR0cF9oYW5kbGUtPndyaXRlX29wZXJhdGlv bi5vcGVyYXRpb24gIT0gTlVMTCkKK0BAIC03MTYsNyArNzE2LDcgQEAgZ2xvYnVzX2xfeGlvX2h0 dHBfY2xpZW50X3JlYWRfcmVzcG9uc2VfY2FsbGJhY2soCisgICAgICAgICAgICAgaHR0cF9oYW5k bGUtPnBlbmRpbmdfZXJyb3IgPSBnbG9idXNfb2JqZWN0X2NvcHkocmVzcG9uc2VfZXJyb3IpOwor ICAgICAgICAgICAgIGh0dHBfaGFuZGxlLT5wYXJzZV9zdGF0ZSA9IEdMT0JVU19YSU9fSFRUUF9F T0Y7CisgICAgICAgICAgICAgaHR0cF9oYW5kbGUtPnNlbmRfc3RhdGUgPSBHTE9CVVNfWElPX0hU VFBfRU9GOworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIC8qIFNldCBtZXRhZGF0YSBv biB0aGlzIHJlYWQgdG8gY29udGFpbiB0aGUgcmVzcG9uc2UgaW5mbyAqLworICAgICAgICAgICAg IGRlc2NyaXB0b3IgPSBnbG9idXNfeGlvX29wZXJhdGlvbl9nZXRfZGF0YV9kZXNjcmlwdG9yKG9w LCBHTE9CVVNfVFJVRSk7CisgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IgIT0gTlVMTCkKK0BA IC03MjYsNyArNzI2LDcgQEAgZ2xvYnVzX2xfeGlvX2h0dHBfY2xpZW50X3JlYWRfcmVzcG9uc2Vf Y2FsbGJhY2soCisgICAgICAgICAgICAgICAgICAgICAgICAgJmRlc2NyaXB0b3ItPnJlc3BvbnNl LAorICAgICAgICAgICAgICAgICAgICAgICAgICZodHRwX2hhbmRsZS0+cmVzcG9uc2VfaW5mbyk7 CisgICAgICAgICAgICAgfQorLSAgICAKKysKKyAgICAgICAgICAgICAvKiBkb24ndCBnbyB0byBl cnJvciBleGl0IHlldCBiZWNhdXNlIHdlIG1heSBuZWVkIHRvIGNsZWFuIHVwCisgICAgICAgICAg ICAgICogdGhlIGNhbmNlbCBpbmZvCisgICAgICAgICAgICAgICovCitAQCAtODIzLDEzICs4MjMs MTMgQEAgZ2xvYnVzX2xfeGlvX2h0dHBfY2xpZW50X3JlYWRfcmVzcG9uc2VfY2FsbGJhY2soCisg ICAgICAgICB9CisgICAgIH0KKyAKKy0gICAgaWYoaHR0cF9oYW5kbGUtPnJlc3BvbnNlX2luZm8u c3RhdHVzX2NvZGUgPiAxOTkgfHwgCisrICAgIGlmKGh0dHBfaGFuZGxlLT5yZXNwb25zZV9pbmZv LnN0YXR1c19jb2RlID4gMTk5IHx8CisgICAgICAgICBodHRwX2hhbmRsZS0+cmVzcG9uc2VfaW5m by5zdGF0dXNfY29kZSA8IDEwMCkKKyAgICAgeworICAgICAgICAgZ2xvYnVzX3hpb19kcml2ZXJf b3BlcmF0aW9uX2Rlc3Ryb3koaHR0cF9oYW5kbGUtPnJlc3BvbnNlX3JlYWRfb3BlcmF0aW9uKTsK KyAgICAgICAgIGh0dHBfaGFuZGxlLT5yZXNwb25zZV9yZWFkX29wZXJhdGlvbiA9IE5VTEw7Cisg ICAgIH0KKy0gICAgICAgIAorKworICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZodHRwX2hhbmRs ZS0+bXV0ZXgpOworIAorICAgICBpZiAoZmluaXNoX3JlYWQpCitAQCAtOTM4LDcgKzkzOCw3IEBA IGVycm9yX2V4aXQ6CisgICogQGluZ3JvdXAgZ2xvYnVzX2lfeGlvX2h0dHBfY2xpZW50CisgICoK KyAgKiBQYXJzZXMgdGhlIHJlc3BvbnNlIGxpbmUgYW5kIHRoZW4gdXNlcyBnbG9idXNfaV94aW9f aHR0cF9oZWFkZXJfcGFyc2UoKSB0bworLSAqIHBhcnNlIHRoZSBoZWFkZXIgYmxvY2suIElmIHRo ZSBlbnRpcmUgcmVzcG9uc2UgaGVhZGVyIHNlY3Rpb24gaXMgcmVhZCwgCisrICogcGFyc2UgdGhl IGhlYWRlciBibG9jay4gSWYgdGhlIGVudGlyZSByZXNwb25zZSBoZWFkZXIgc2VjdGlvbiBpcyBy ZWFkLAorICAqIHRoZSBib29sZWFuIHBvaW50ZWQgdG8gYnkgQGEgZG9uZSB3aWxsIGJlIG1vZGlm aWVkIHRvIGJlIEdMT0JVU19UUlVFLgorICAqCisgICogQ2FsbGVkIHdpdGggbXV0ZXggbG9ja2Vk LgorQEAgLTk1MSw3ICs5NTEsNyBAQCBlcnJvcl9leGl0OgorICAqICAgICBnbG9idXNfaV94aW9f aHR0cF9oZWFkZXJfcGFyc2UoKS4KKyAgKiBAcmV0dmFsIEdMT0JVU19TVUNDRVNTCisgICogICAg IE5vIHBhcnNpbmcgZXJyb3JzIG9jY3VycmVkIHdoaWxlIHBhcnNpbmcgdGhlIHN0YXR1cyBsaW5l IG9yIGhlYWRlcnMuCistICogICAgIFBhcnNpbmcgbWF5IHN0aWxsIGJlIGluY29tcGxldGUsIGRl cGVuZGluZyBvbiB0aGUgZmluYWwgdmFsdWUgb2YgCisrICogICAgIFBhcnNpbmcgbWF5IHN0aWxs IGJlIGluY29tcGxldGUsIGRlcGVuZGluZyBvbiB0aGUgZmluYWwgdmFsdWUgb2YKKyAgKiAgICAg QGEgZG9uZS4KKyAgKiBAcmV0dmFsIDxkcml2ZXI+OjpHTE9CVVNfWElPX0hUVFBfRVJST1JfUEFS U0UKKyAgKiAgICAgUGFyc2UgZXJyb3IgcmVhZGluZyB0aGUgSFRUUCBTdGF0dXMgbGluZQorQEAg LTEwMDUsNyArMTAwNSw3IEBAIGdsb2J1c19sX3hpb19odHRwX2NsaWVudF9wYXJzZV9yZXNwb25z ZSgKKyAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgICAgICB9CisgCistICAgICAg ICBodHRwX2hhbmRsZS0+cmVzcG9uc2VfaW5mby5odHRwX3ZlcnNpb24gPSAKKysgICAgICAgIGh0 dHBfaGFuZGxlLT5yZXNwb25zZV9pbmZvLmh0dHBfdmVyc2lvbiA9CisgICAgICAgICAgICAgZ2xv YnVzX2lfeGlvX2h0dHBfZ3Vlc3NfdmVyc2lvbihodHRwX21ham9yLCBodHRwX21pbm9yKTsKKyAK KyAgICAgICAgIGN1cnJlbnRfb2Zmc2V0ICs9IHBhcnNlZDsKK0BAIC0xMDIzLDcgKzEwMjMsNyBA QCBnbG9idXNfbF94aW9faHR0cF9jbGllbnRfcGFyc2VfcmVzcG9uc2UoCisgCisgICAgICAgICAg ICAgZ290byBlcnJvcl9leGl0OworICAgICAgICAgfQorLSAgICAgICAKKysKKyAgICAgICAgIGN1 cnJlbnRfb2Zmc2V0ICs9IHBhcnNlZDsKKyAKKyAgICAgICAgIC8qIFJlYXNvbiBQaHJhc2UgKi8K K0BAIC0xMDU0LDcgKzEwNTQsNyBAQCBnbG9idXNfbF94aW9faHR0cF9jbGllbnRfcGFyc2VfcmVz cG9uc2UoCisgICAgIHsKKyAgICAgICAgIGh0dHBfaGFuZGxlLT5wYXJzZV9zdGF0ZSA9IEdMT0JV U19YSU9fSFRUUF9TVEFUVVNfTElORTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgcmV0dXJuIHJl c3VsdDsKKyAKKyBlcnJvcl9leGl0OgorQEAgLTExMjAsNyArMTEyMCw3IEBAIGdsb2J1c19sX3hp b19odHRwX2NsZWFudXBfY2FuY2VsKAorICAgICBlbHNlCisgICAgIHsKKyAgICAgICAgIC8qIENh bmNlbCBjYWxsYmFjayBvY2N1cnJlZCBpbiBhbm90aGVyIHRocmVhZC4gVGhhdCB0aHJlYWQgd2ls bAorLSAgICAgICAgICogdHJ5IHRvIGNhbmNlbCB0aGlzIG9wZXJhdGlvbi4gV2UgYXJlIG9ibGln ZWQgdG8gZnJlZSB0aGUgCisrICAgICAgICAgKiB0cnkgdG8gY2FuY2VsIHRoaXMgb3BlcmF0aW9u LiBXZSBhcmUgb2JsaWdlZCB0byBmcmVlIHRoZQorICAgICAgICAgICogY2FuY2VsIGluZm8uCisg ICAgICAgICAgKi8KKyAKK2RpZmYgLS1naXQgYS94aW8vc3JjL2J1aWx0aW5zL2h0dHAvZ2xvYnVz X3hpb19odHRwX2hhbmRsZS5jIGIveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0 cF9oYW5kbGUuYworaW5kZXggMTExMWFkMjc4Li4xMDRjZWUwZGIgMTAwNjQ0CistLS0gYS94aW8v c3JjL2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX2hhbmRsZS5jCisrKysgYi94aW8vc3Jj L2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX2hhbmRsZS5jCitAQCAtMjgyLDcgKzI4Miw3 IEBAIGdsb2J1c19pX3hpb19odHRwX2hhbmRsZV9kZXN0cm95KAorICAqIEByZXR2YWwgR0xPQlVT X1hJT19FUlJPUl9NRU1PUlkKKyAgKiAgICAgVGhlIGNvbW1hbmQgZmFpbGVkIGR1ZSB0byBtZW1v cnkgY29uc3RyYWludHMuCisgICogQHJldHZhbCBHTE9CVVNfWElPX0VSUk9SX1BBUkFNRVRFUgor LSAqICAgICBJbnZhbGlkIEBhIGNtZCBwYXJhbWV0ZXIgb3IgaW52bGFpZCB2YWx1ZSBvZiBjbWQt c3BlY2lmaWMgcGFyYW1ldGVycyAKKysgKiAgICAgSW52YWxpZCBAYSBjbWQgcGFyYW1ldGVyIG9y IGludmxhaWQgdmFsdWUgb2YgY21kLXNwZWNpZmljIHBhcmFtZXRlcnMKKyAgKiAgICAgaW4gQGEg YXAKKyAgKi8KKyBnbG9idXNfcmVzdWx0X3QKK0BAIC00NDgsNyArNDQ4LDcgQEAgZ2xvYnVzX2lf eGlvX2h0dHBfc2V0X2VuZF9vZl9lbnRpdHkoCisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAg ICAgICAgICAgICAgIHJlc3VsdCA9IEdMT0JVU19TVUNDRVNTOworICAgICBnbG9idXNfaV94aW9f aHR0cF9oZWFkZXJfaW5mb190ICogICBoZWFkZXJzOworICAgICBzdGF0aWMgZ2xvYnVzX3hpb19p b3ZlY190ICAgICAgICAgICBlbmRfb2ZfYm9keV9pb3ZlYyA9IHsKKy0gICAgICAgIC5pb3ZfYmFz ZSA9ICIwXHJcblxyXG4iLCAKKysgICAgICAgIC5pb3ZfYmFzZSA9ICIwXHJcblxyXG4iLAorICAg ICAgICAgLmlvdl9sZW4gPSA1CisgICAgIH07CisgICAgIEdsb2J1c1hJT05hbWUoZ2xvYnVzX2lf eGlvX2h0dHBfc2V0X2VuZF9vZl9lbnRpdHkpOworQEAgLTQ2Nyw3ICs0NjcsNyBAQCBnbG9idXNf aV94aW9faHR0cF9zZXRfZW5kX29mX2VudGl0eSgKKyAgICAgeworICAgICAgICAgaGVhZGVycyA9 ICZodHRwX2hhbmRsZS0+cmVzcG9uc2VfaW5mby5oZWFkZXJzOworICAgICB9CistICAgIAorKwor ICAgICBpZiAoaHR0cF9oYW5kbGUtPnNlbmRfc3RhdGUgPT0gR0xPQlVTX1hJT19IVFRQX1NUQVRV U19MSU5FKQorICAgICB7CisgICAgICAgICAvKiBUbyBzZW5kIGFuIGVtcHR5IHJlc3BvbnNlIGZy b20gc2VydmVyICovCitkaWZmIC0tZ2l0IGEveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1c194 aW9faHR0cF9oZWFkZXIuYyBiL3hpby9zcmMvYnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHBf aGVhZGVyLmMKK2luZGV4IGY1ODE5ZTc4My4uZDRjNjg3YTY1IDEwMDY0NAorLS0tIGEveGlvL3Ny Yy9idWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0cF9oZWFkZXIuYworKysrIGIveGlvL3NyYy9i dWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0cF9oZWFkZXIuYworQEAgLTI2NCw3ICsyNjQsNyBA QCBnbG9idXNfaV94aW9faHR0cF9oZWFkZXJfcGFyc2UoCisgICAgICAgICB7CisgICAgICAgICAg ICAgaHR0cF9oYW5kbGUtPnBhcnNlX3N0YXRlID0gR0xPQlVTX1hJT19IVFRQX0NIVU5LX0xJTkU7 CisgICAgICAgICB9CistICAgICAgICBlbHNlIGlmICgoaHR0cF9oYW5kbGUtPnRhcmdldF9pbmZv LmlzX2NsaWVudCAmJiAKKysgICAgICAgIGVsc2UgaWYgKChodHRwX2hhbmRsZS0+dGFyZ2V0X2lu Zm8uaXNfY2xpZW50ICYmCisgICAgICAgICAgICAgICAgIGh0dHBfaGFuZGxlLT5yZXNwb25zZV9p bmZvLmh0dHBfdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgPT0gR0xPQlVTX1hJT19IVFRQ X1ZFUlNJT05fMV8wKSB8fAorICAgICAgICAgICAgICAgICBHTE9CVVNfSV9YSU9fSFRUUF9IRUFE RVJfSVNfQ09OVEVOVF9MRU5HVEhfU0VUKGhlYWRlcnMpKQorZGlmZiAtLWdpdCBhL3hpby9zcmMv YnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHBfaGVhZGVyX2luZm8uYyBiL3hpby9zcmMvYnVp bHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHBfaGVhZGVyX2luZm8uYworaW5kZXggNjRjYTAxZTk3 Li43NTM2Nzg4N2IgMTAwNjQ0CistLS0gYS94aW8vc3JjL2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hp b19odHRwX2hlYWRlcl9pbmZvLmMKKysrKyBiL3hpby9zcmMvYnVpbHRpbnMvaHR0cC9nbG9idXNf eGlvX2h0dHBfaGVhZGVyX2luZm8uYworQEAgLTE0Miw3ICsxNDIsNyBAQCBlcnJvcl9leGl0Ogor ICAqIEFkZHMgYSBuZXcgaGVhZGVyIHRvIGEgaGVhZGVyIGluZm8gc3RydWN0dXJlLCBvciB1cGRh dGVzIHRoZSB2YWx1ZSBvZiBhbgorICAqIGV4aXN0aW5nIGhlYWRlci4gQ29waWVzIG9mIHRoZSBu YW1lIGFuZCB2YWx1ZSB3aWxsIGJlIHN0b3JlZCBpbiBhCisgICogI2dsb2J1c194aW9faHR0cF9o ZWFkZXJfdCBpbiBhIGhhc2h0YWJsZSBpbiB0aGUgaGVhZGVyIGluZm8gc3RydWN0dXJlLgorLSAq IAorKyAqCisgICogQHBhcmFtIGhlYWRlcnMKKyAgKiAgICAgUG9pbnRlciB0byB0aGUgaGVhZGVy IGluZm8gc3RydWN0dXJlLgorICAqIEBwYXJhbSBoZWFkZXJfbmFtZQorQEAgLTIyOSw3ICsyMjks NyBAQCBnbG9idXNfaV94aW9faHR0cF9oZWFkZXJfaW5mb19zZXRfaGVhZGVyKAorICAgICB7Cisg ICAgICAgICBzdG9yZSA9IEdMT0JVU19UUlVFOworICAgICB9CistICAgIAorKworICAgICBpZihz dG9yZSkKKyAgICAgeworICAgICAgICAgLyoKK2RpZmYgLS1naXQgYS94aW8vc3JjL2J1aWx0aW5z L2h0dHAvZ2xvYnVzX3hpb19odHRwX3NlcnZlci5jIGIveGlvL3NyYy9idWlsdGlucy9odHRwL2ds b2J1c194aW9faHR0cF9zZXJ2ZXIuYworaW5kZXggOTk3MzZiM2I1Li41ZDNhZDBhYjcgMTAwNjQ0 CistLS0gYS94aW8vc3JjL2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX3NlcnZlci5jCisr KysgYi94aW8vc3JjL2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX3NlcnZlci5jCitAQCAt NDgsNyArNDgsNyBAQCBnbG9idXNfbF94aW9faHR0cF9zZXJ2ZXJfd3JpdGVfcmVzcG9uc2VfY2Fs bGJhY2soCisgICogQWNjZXB0IGFuIEhUVFAgcmVxdWVzdAorICAqIEBpbmdyb3VwIGdsb2J1c19p X3hpb19odHRwX3NlcnZlcgorICAqCistICogUGFzc2VzIHRoZSByZXF1ZXN0IHRvIHRoZSB0cmFu c3BvcnQgZHJpdmVyLiBJbiB0aGUgY2FsbGJhY2ssIAorKyAqIFBhc3NlcyB0aGUgcmVxdWVzdCB0 byB0aGUgdHJhbnNwb3J0IGRyaXZlci4gSW4gdGhlIGNhbGxiYWNrLAorICAqIHRoZSByZXF1ZXN0 IHRhcmdldCBpbmZvcm1hdGlvbiB3aWxsIGJlIGdlbmVyYXRlZC4KKyAgKgorICAqIEBwYXJhbSBk cml2ZXJfc2VydmVyCitAQCAtMTAzLDcgKzEwMyw3IEBAIGdsb2J1c19sX3hpb19odHRwX2FjY2Vw dF9jYWxsYmFjaygKKyB7CisgICAgIGdsb2J1c19pX3hpb19odHRwX3RhcmdldF90ICogICAgICAg IHRhcmdldF9pbmZvID0gTlVMTDsKKyAgICAgR2xvYnVzWElPTmFtZShnbG9idXNfbF94aW9faHR0 cF9hY2NlcHRfY2FsbGJhY2spOworLSAgICAKKysKKyAgICAgaWYgKHJlc3VsdCA9PSBHTE9CVVNf U1VDQ0VTUykKKyAgICAgeworICAgICAgICAgdGFyZ2V0X2luZm8gPSBnbG9idXNfaV94aW9faHR0 cF90YXJnZXRfbmV3KCk7CitAQCAtMTk0LDcgKzE5NCw3IEBAIGdsb2J1c19pX3hpb19odHRwX3Nl cnZlcl9vcGVuX2NhbGxiYWNrKAorICAqCisgICogQHJldHZhbCBHTE9CVVNfU1VDQ0VTUworICAq ICAgICBSZXNwb25zZSB3YXMgcGFzc2VkIHRvIHRoZSB0cmFuc3BvcnQgZm9yIHdyaXRpbmcuIElm IHRoaXMgd2FzIGdlbmVyYXRlZAorLSAqICAgICBieSBhIHVzZXIgd3JpdGluZyBkYXRhLCB0aGVu IHRoZSB3cml0ZSB3aWxsIG9jY3VyIGFmdGVyIHRoZSAKKysgKiAgICAgYnkgYSB1c2VyIHdyaXRp bmcgZGF0YSwgdGhlbiB0aGUgd3JpdGUgd2lsbCBvY2N1ciBhZnRlciB0aGUKKyAgKiAgICAgZ2xv YnVzX2xfeGlvX2h0dHBfc2VydmVyX3dyaXRlX3Jlc3BvbnNlX2NhbGxiYWNrKCkgaGFzIGJlZW4g Y2FsbGVkLgorICAqIEByZXR2YWwgR0xPQlVTX1hJT19FUlJPUl9NRU1PUlkKKyAgKiAgICAgVW5h YmxlIHRvIGNvbXBvc2UgdGhlIHJlc3BvbnNlIGR1ZSB0byBtZW1vcnkgY29uc3RyYWludHMuCitA QCAtMjk5LDcgKzI5OSw3IEBAIGdsb2J1c19pX3hpb19odHRwX3NlcnZlcl93cml0ZV9yZXNwb25z ZSgKKyAgICAgICAgICAgICAgR0xPQlVTX0lfWElPX0hUVFBfSEVBREVSX0lTX0NPTlRFTlRfTEVO R1RIX1NFVCgKKyAgICAgICAgICAgICAgICAgJmh0dHBfaGFuZGxlLT5yZXNwb25zZV9pbmZvLmhl YWRlcnMpKSkKKyAgICAgeworLSAgICAgICAgaHR0cF9oYW5kbGUtPnJlc3BvbnNlX2luZm8uaGVh ZGVycy5mbGFncyB8PSAKKysgICAgICAgIGh0dHBfaGFuZGxlLT5yZXNwb25zZV9pbmZvLmhlYWRl cnMuZmxhZ3MgfD0KKyAgICAgICAgICAgICAgICAgR0xPQlVTX0lfWElPX0hUVFBfSEVBREVSX0NP Tk5FQ1RJT05fQ0xPU0U7CisgCisgICAgICAgICBHTE9CVVNfWElPX0hUVFBfQ09QWV9CTE9CKCZp b3ZlY3MsCitAQCAtNjgzLDcgKzY4Myw3IEBAIGdsb2J1c19sX3hpb19odHRwX3NlcnZlcl9wYXJz ZV9yZXF1ZXN0KAorICAgICAgICAgZ2xvYnVzX2Fzc2VydChyYyA9PSAxKTsKKyAKKyAgICAgICAg IGN1cnJlbnRfb2Zmc2V0ICs9IHBhcnNlZDsKKy0gICAgICAgIAorKworICAgICAgICAgcmMgPSBz c2NhbmYoY3VycmVudF9vZmZzZXQsICIlKnMgJW4iLCAmcGFyc2VkKTsKKyAgICAgICAgIGlmIChy YyA8IDApCisgICAgICAgICB7CitAQCAtODA5LDcgKzgwOSw3IEBAIGdsb2J1c19pX3hpb19odHRw X3NlcnZlcl9yZWFkX3JlcXVlc3RfY2FsbGJhY2soCisgICAgIGlmIChkZXNjcmlwdG9yID09IE5V TEwpCisgICAgIHsKKyAgICAgICAgIHJlc3VsdCA9IEdsb2J1c1hJT0Vycm9yTWVtb3J5KCJkZXNj cmlwdG9yIik7CistICAgICAgICAKKysKKyAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAg fQorICAgICBnbG9idXNfaV94aW9faHR0cF9yZXF1ZXN0X2Rlc3Ryb3koJmRlc2NyaXB0b3ItPnJl cXVlc3QpOworQEAgLTg0OCw3ICs4NDgsNyBAQCBnbG9idXNfaV94aW9faHR0cF9zZXJ2ZXJfcmVh ZF9yZXF1ZXN0X2NhbGxiYWNrKAorICAgICAgICAgaHR0cF9oYW5kbGUtPnJlYWRfb3BlcmF0aW9u Lm5ieXRlcyA9IDA7CisgCisgICAgICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZodHRwX2hhbmRs ZS0+bXV0ZXgpOworLSAgICAgICAgCisrCisgICAgICAgICBnbG9idXNfeGlvX2RyaXZlcl9maW5p c2hlZF9yZWFkKG9wLCByZXN1bHQsIG5ieXRlcyk7CisgCisgICAgICAgICByZXR1cm47CitkaWZm IC0tZ2l0IGEveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0cF90YXJnZXQuYyBi L3hpby9zcmMvYnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHBfdGFyZ2V0LmMKK2luZGV4IDU4 NzMyYWU3OC4uNmU4ZDIyZjM0IDEwMDY0NAorLS0tIGEveGlvL3NyYy9idWlsdGlucy9odHRwL2ds b2J1c194aW9faHR0cF90YXJnZXQuYworKysrIGIveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1 c194aW9faHR0cF90YXJnZXQuYworQEAgLTEwOCw3ICsxMDgsNyBAQCBnbG9idXNfaV94aW9faHR0 cF90YXJnZXRfaW5pdCgKKyAgICAgICAgIGVsc2UKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBy ZXMgPSBHbG9idXNYSU9FcnJvclBhcmFtZXRlcigicG9ydCIpOworLSAgICAKKysKKyAgICAgICAg ICAgICBnb3RvIGZyZWVfdGFyZ2V0X2V4aXQ7CisgICAgICAgICB9CisgICAgIH0KK2RpZmYgLS1n aXQgYS94aW8vc3JjL2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX3RyYW5zZm9ybS5jIGIv eGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0cF90cmFuc2Zvcm0uYworaW5kZXgg NmEzMWEzZTkwLi42YTQ1NTZkMjMgMTAwNjQ0CistLS0gYS94aW8vc3JjL2J1aWx0aW5zL2h0dHAv Z2xvYnVzX3hpb19odHRwX3RyYW5zZm9ybS5jCisrKysgYi94aW8vc3JjL2J1aWx0aW5zL2h0dHAv Z2xvYnVzX3hpb19odHRwX3RyYW5zZm9ybS5jCitAQCAtOTYsNyArOTYsNyBAQCBnbG9idXNfbF94 aW9faHR0cF9yZWFkX3RpbWVvdXRfY2FsbGJhY2soCisgCisgLyoqCisgICogT3BlbiBhbiBIVFRQ IFVSSQorLSAqIEBpbmdyb3VwIGdsb2J1c19pX3hpb19odHRwX3RyYW5zZm9ybSAKKysgKiBAaW5n cm91cCBnbG9idXNfaV94aW9faHR0cF90cmFuc2Zvcm0KKyAgKgorICAqIE9wZW5zIGEgbmV3IGNv bm5lY3Rpb24gdG8gaGFuZGxlIGFuIEhUVFAgcmVxdWVzdC4gQWxsb2NhdGVzIGEgaGFuZGxlCisg ICogYW5kIHRoZW4gcGFzc2VzIHRoZSBvcGVuIG9uIHRvIHRoZSB0cmFuc3BvcnQuIEluIHRoZSBj YWxsYmFjayBjYWxsZWQKK0BAIC0xMzEsNyArMTMxLDcgQEAgZ2xvYnVzX2lfeGlvX2h0dHBfb3Bl bigKKyAgICAgZ2xvYnVzX2lfeGlvX2h0dHBfdGFyZ2V0X3QgKiAgICAgICAgdGFyZ2V0ID0gTlVM TDsKKyAgICAgZ2xvYnVzX2lfeGlvX2h0dHBfaGFuZGxlX3QgKiAgICAgICAgaHR0cF9oYW5kbGU7 CisgICAgIEdsb2J1c1hJT05hbWUoZ2xvYnVzX2lfeGlvX2h0dHBfb3Blbik7CistICAgIAorKwor ICAgICBpZihsaW5rKQorICAgICB7CisgICAgICAgICB0YXJnZXQgPSAoZ2xvYnVzX2lfeGlvX2h0 dHBfdGFyZ2V0X3QgKikgbGluazsKK0BAIC0xNDQsNyArMTQ0LDcgQEAgZ2xvYnVzX2lfeGlvX2h0 dHBfb3BlbigKKyAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgfQorICAgICB9Cist ICAgIAorKworICAgICBodHRwX2hhbmRsZSA9IGdsb2J1c19sX3hpb19odHRwX2ZpbmRfY2FjaGVk X2hhbmRsZSh0YXJnZXQsIGF0dHIpOworIAorICAgICBpZiAoaHR0cF9oYW5kbGUgIT0gTlVMTCkK K0BAIC0xNTUsNyArMTU1LDcgQEAgZ2xvYnVzX2lfeGlvX2h0dHBfb3BlbigKKyAgICAgeworICAg ICAgICAgcmVzdWx0ID0gZ2xvYnVzX2xfeGlvX2h0dHBfb3Blbihjb250YWN0X2luZm8sIHRhcmdl dCwgYXR0ciwgb3ApOworICAgICB9CistICAgIAorKworICAgICBpZighbGluayAmJiB0YXJnZXQp CisgICAgIHsKKyAgICAgICAgIGdsb2J1c19pX3hpb19odHRwX3RhcmdldF9kZXN0cm95KHRhcmdl dCk7CitAQCAtMjc5LDExICsyNzksMTEgQEAgZ2xvYnVzX2xfeGlvX2h0dHBfb3BlbigKKyAgICAg ICAgIG9wZW5fY2FsbGJhY2sgPSBnbG9idXNfaV94aW9faHR0cF9zZXJ2ZXJfb3Blbl9jYWxsYmFj azsKKyAgICAgICAgIGh0dHBfaGFuZGxlLT5zZW5kX3N0YXRlID0gR0xPQlVTX1hJT19IVFRQX1NU QVRVU19MSU5FOworICAgICB9CistICAgIAorKworICAgICBtZW1jcHkoJm5ld19jb250YWN0X2lu Zm8sIGNvbnRhY3RfaW5mbywgc2l6ZW9mKG5ld19jb250YWN0X2luZm8pKTsKKyAgICAgc25wcmlu dGYocG9ydF9idWYsIHNpemVvZihwb3J0X2J1ZiksICIlaHUiLCBodHRwX2hhbmRsZS0+dGFyZ2V0 X2luZm8ucG9ydCk7CisgICAgIG5ld19jb250YWN0X2luZm8ucG9ydCA9IHBvcnRfYnVmOworLSAg ICAKKysKKyAgICAgaHR0cF9oYW5kbGUtPmhhbmRsZSA9IGdsb2J1c194aW9fb3BlcmF0aW9uX2dl dF9kcml2ZXJfaGFuZGxlKG9wKTsKKyAKKyAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19kcml2ZXJf cGFzc19vcGVuKAorQEAgLTM3Nyw3ICszNzcsNyBAQCBnbG9idXNfbF94aW9faHR0cF9maW5kX2Nh Y2hlZF9oYW5kbGUoCisgICogICAgIE9wZXJhdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHJlYWQu CisgICoKKyAgKiBAcmV0dXJuCistICogICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBHTE9CVVNf U1VDQ0VTUywgCisrICogICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBHTE9CVVNfU1VDQ0VTUywK KyAgKiAgICAgR0xPQlVTX1hJT19FUlJPUl9BTFJFQURZX1JFR0lTVEVSRUQsIGFuZCBHTE9CVVNf WElPX0VSUk9SX0VPRgorICAqICAgICBlcnJvcnMgZGlyZWN0bHkuCisgICoKK0BAIC00MjUsNyAr NDI1LDcgQEAgZ2xvYnVzX2lfeGlvX2h0dHBfcmVhZCgKKyAgICAgICAgICAgICBnbG9idXNfb2Jq ZWN0X2NvcHkoaHR0cF9oYW5kbGUtPnBlbmRpbmdfZXJyb3IpKTsKKyAgICAgICAgIGdvdG8gZXJy b3JfZXhpdDsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaWYgKGh0dHBfaGFuZGxlLT5yZWFkX29w ZXJhdGlvbi5vcGVyYXRpb24gIT0gTlVMTCkKKyAgICAgeworICAgICAgICAgLyogT25seSBvbmUg cmVhZCBpbiBwcm9ncmVzcyBwZXIgaGFuZGxlLCBzb3JyeSAqLworQEAgLTQ0Nyw3ICs0NDcsNyBA QCBnbG9idXNfaV94aW9faHR0cF9yZWFkKAorIAorICAgICBmb3IgKGkgPSAwOyBpIDwgaW92ZWNf Y291bnQ7IGkrKykKKyAgICAgeworLSAgICAgICAgaHR0cF9oYW5kbGUtPnJlYWRfb3BlcmF0aW9u LmlvdltpXS5pb3ZfYmFzZSA9IAorKyAgICAgICAgaHR0cF9oYW5kbGUtPnJlYWRfb3BlcmF0aW9u LmlvdltpXS5pb3ZfYmFzZSA9CisgICAgICAgICAgICAgaW92ZWNbaV0uaW92X2Jhc2U7CisgICAg ICAgICBodHRwX2hhbmRsZS0+cmVhZF9vcGVyYXRpb24uaW92W2ldLmlvdl9sZW4gPQorICAgICAg ICAgICAgIGlvdmVjW2ldLmlvdl9sZW47CitAQCAtNDc1LDcgKzQ3NSw3IEBAIGdsb2J1c19pX3hp b19odHRwX3JlYWQoCisgICAgICAgICB9CisgCisgICAgICAgICBodHRwX2hhbmRsZS0+Y2FuY2Vs bGF0aW9uLT51c2VyX3JlYWRfb3AgPSBvcDsKKy0gICAgICAgIGh0dHBfaGFuZGxlLT5jYW5jZWxs YXRpb24tPmludGVybmFsX29wID0gCisrICAgICAgICBodHRwX2hhbmRsZS0+Y2FuY2VsbGF0aW9u LT5pbnRlcm5hbF9vcCA9CisgICAgICAgICAgICAgICAgIGh0dHBfaGFuZGxlLT5yZXNwb25zZV9y ZWFkX29wZXJhdGlvbjsKKyAgICAgICAgIGh0dHBfaGFuZGxlLT5jYW5jZWxsYXRpb24tPmh0dHBf aGFuZGxlID0gaHR0cF9oYW5kbGU7CisgICAgICAgICBodHRwX2hhbmRsZS0+Y2FuY2VsbGF0aW9u LT5kcml2ZXJfaGFuZGxlID0KK0BAIC01MjMsNyArNTIzLDcgQEAgZ2xvYnVzX2lfeGlvX2h0dHBf cmVhZCgKKyAgICAgICAgICAgICBpZiAoaHR0cF9oYW5kbGUtPnJlYWRfYnVmZmVyLmlvdl9iYXNl ID09IE5VTEwpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICByZXN1bHQgPSBHbG9i dXNYSU9FcnJvck1lbW9yeSgicmVhZF9idWZmZXIiKTsKKy0gICAgCisrCisgICAgICAgICAgICAg ICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CitAQCAtNTM3 LDcgKzUzNyw3IEBAIGdsb2J1c19pX3hpb19odHRwX3JlYWQoCisgICAgICAgICAgICAgfQorICAg ICAgICAgICAgIGh0dHBfaGFuZGxlLT5wYXJzZV9zdGF0ZSA9IEdMT0JVU19YSU9fSFRUUF9SRVFV RVNUX0xJTkU7CisgICAgICAgICB9CistICAgIAorKworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVz X3hpb19kcml2ZXJfcGFzc19yZWFkKAorICAgICAgICAgICAgICAgICBvcCwKKyAgICAgICAgICAg ICAgICAgJmh0dHBfaGFuZGxlLT5yZWFkX2J1ZmZlciwKK0BAIC01NzgsNyArNTc4LDcgQEAgZ2xv YnVzX2lfeGlvX2h0dHBfcmVhZCgKKyAgICAgICAgIH0KKyAgICAgICAgIC8qCisgICAgICAgICAg KiBFaXRoZXIgd2UndmUgcmVhZCBlbm91Z2gsIGhpdCBlbmQgb2YgY2h1bmssIG5vIGVudGl0eSB3 YXMgcHJlc2VudCwKKy0gICAgICAgICAqIG9yIHBhc3MgdG8gdHJhbnNwb3J0IGZhaWxlZC4gQ2Fs bCBmaW5pc2hlZF9yZWFkIAorKyAgICAgICAgICogb3IgcGFzcyB0byB0cmFuc3BvcnQgZmFpbGVk LiBDYWxsIGZpbmlzaGVkX3JlYWQKKyAgICAgICAgICAqLworICAgICAgICAgb3AgPSBodHRwX2hh bmRsZS0+cmVhZF9vcGVyYXRpb24ub3BlcmF0aW9uOworIAorQEAgLTY0NSw3ICs2NDUsNyBAQCBl cnJvcl9leGl0OgorICAqIEBwYXJhbSByZWdpc3RlcmVkX2FnYWluCisgICogICAgIFNldCB0byBH TE9CVVNfVFJVRSBieSB0aGlzIGZ1bmN0aW9uIGlmIHRoZSByZWFkIG9wZXJhdGlvbiB3YXMgcGFz c2VkCisgICogICAgIGRvd24gYWdhaW4gYXMgYSByZXN1bHQgb2YgYSBwYXJ0aWFsIHJlYWQgb2Yg ZGF0YS4KKy0gKiAKKysgKgorICAqIEByZXR1cm4gdm9pZAorICAqLworIGdsb2J1c19yZXN1bHRf dAorQEAgLTY3MiwxMCArNjcyLDEwIEBAIGdsb2J1c19pX3hpb19odHRwX3BhcnNlX3Jlc2lkdWUo CisgICAgICAgICBoZWFkZXJzID0gJmh0dHBfaGFuZGxlLT5yZXF1ZXN0X2luZm8uaGVhZGVyczsK KyAgICAgfQorIAorLSAgICBpZiAoaHR0cF9oYW5kbGUtPnJlYWRfb3BlcmF0aW9uLmlvdmNudCA9 PSAwIHx8IAorKyAgICBpZiAoaHR0cF9oYW5kbGUtPnJlYWRfb3BlcmF0aW9uLmlvdmNudCA9PSAw IHx8CisgICAgICAgICBodHRwX2hhbmRsZS0+cGFyc2Vfc3RhdGUgPT0gR0xPQlVTX1hJT19IVFRQ X0VPRikKKyAgICAgeworLSAgICAgICAgaHR0cF9oYW5kbGUtPnJlYWRfb3BlcmF0aW9uLndhaXRf Zm9yID0gMDsgCisrICAgICAgICBodHRwX2hhbmRsZS0+cmVhZF9vcGVyYXRpb24ud2FpdF9mb3Ig PSAwOworICAgICAgICAgZ290byBmaW5pc2g7CisgICAgIH0KKyAKK0BAIC03NzksNyArNzc5LDcg QEAgZ2xvYnVzX2lfeGlvX2h0dHBfcGFyc2VfcmVzaWR1ZSgKKyAgICAgICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBuYnl0ZXMgPSBodHRwX2hhbmRsZS0+cmVhZF9v cGVyYXRpb24ud2FpdF9mb3I7CisgICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAg ICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c194aW9fZHJp dmVyX3Bhc3NfcmVhZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9oYW5kbGUt PnJlYWRfb3BlcmF0aW9uLm9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aHR0cF9oYW5kbGUtPnJlYWRfb3BlcmF0aW9uLmlvdiwKK0BAIC03OTAsOCArNzkwLDggQEAgZ2xv YnVzX2lfeGlvX2h0dHBfcGFyc2VfcmVzaWR1ZSgKKyAgICAgICAgICAgICAgICAgICAgIGlmIChy ZXN1bHQgPT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgICAgICAgICAgKnJlZ2lzdGVyZWRfYWdhaW4gPSBHTE9CVVNfVFJVRTsKKy0gICAg ICAgICAgICAgICAgICAgIH0gIAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgCisrICAgICAg ICAgICAgICAgICAgICB9CisrCisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgICAgY2FzZSBHTE9CVVNfWElPX0hUVFBfU1RBVFVTX0xJTkU6CitA QCAtODA4LDcgKzgwOCw3IEBAIGdsb2J1c19pX3hpb19odHRwX3BhcnNlX3Jlc2lkdWUoCisgICAg ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7 CisgICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAg ICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19kcml2ZXJfcGFzc19yZWFkKAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBodHRwX2hhbmRsZS0+cmVzcG9uc2VfcmVhZF9vcGVyYXRp b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZodHRwX2hhbmRsZS0+cmVhZF9pb3Zl YywKK0BAIC04MTYsNyArODE2LDcgQEAgZ2xvYnVzX2lfeGlvX2h0dHBfcGFyc2VfcmVzaWR1ZSgK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2xvYnVzX2xfeGlvX2h0dHBfY2xpZW50X3JlYWRfcmVzcG9uc2VfY2FsbGJhY2ssCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBfaGFuZGxlKTsKKy0gICAgICAgICAgICAg ICAgCisrCisgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNT KQorICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g ZmluaXNoOworQEAgLTExMTEsNyArMTExMSw3IEBAIGdsb2J1c19sX3hpb19odHRwX3JlYWRfY2h1 bmtfaGVhZGVyX2NhbGxiYWNrKAorICAgICAgICAgfQorICAgICAgICAgLyoKKyAgICAgICAgICAq IEVpdGhlciB3ZSd2ZSByZWFkIGVub3VnaCwgaGl0IGVuZCBvZiBjaHVuaywgbm8gZW50aXR5IHdh cyBwcmVzZW50LAorLSAgICAgICAgICogb3IgcGFzcyB0byB0cmFuc3BvcnQgZmFpbGVkLiBDYWxs IGZpbmlzaGVkX3JlYWQgCisrICAgICAgICAgKiBvciBwYXNzIHRvIHRyYW5zcG9ydCBmYWlsZWQu IENhbGwgZmluaXNoZWRfcmVhZAorICAgICAgICAgICovCisgICAgICAgICBvcCA9IGh0dHBfaGFu ZGxlLT5yZWFkX29wZXJhdGlvbi5vcGVyYXRpb247CisgCitAQCAtMTEzOCw3ICsxMTM4LDcgQEAg Z2xvYnVzX2xfeGlvX2h0dHBfcmVhZF9jaHVua19oZWFkZXJfY2FsbGJhY2soCisgICogQGluZ3Jv dXAgZ2xvYnVzX2lfeGlvX2h0dHBfdHJhbnNmb3JtCisgICoKKyAgKiBQYXJzZSB0aGUgY2h1bmsg c2l6ZSwgZW5kLW9mLWNodW5rIENSTEYsIG9yIGNodW5rIGZvb3RlcnMsIG91dCBvZiB0aGUKKy0g KiBoYW5kbGUncyByZWFkIGJ1ZmZlciwgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IHBhcnNlIHN0 YXRlLiAKKysgKiBoYW5kbGUncyByZWFkIGJ1ZmZlciwgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50 IHBhcnNlIHN0YXRlLgorICAqCisgICogQHBhcmFtIGh0dHBfaGFuZGxlCisgICogICAgIEhhbmRs ZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYXJzaW5nLgorQEAgLTEyMTEsNyArMTIxMSw3IEBAIGds b2J1c19sX3hpb19odHRwX3BhcnNlX2NodW5rX2hlYWRlcigKKyAKKyAgICAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIC8q IEZBTExTVEhST1VHSCAqLworICAgICAgICAgY2FzZSBHTE9CVVNfWElPX0hUVFBfQ0hVTktfTElO RToKKyAgICAgICAgICAgICAqZW9sID0gJ1wwJzsKK0BAIC0xMzY3LDcgKzEzNjcsNyBAQCBnbG9i dXNfbF94aW9faHR0cF9wYXJzZV9jaHVua19oZWFkZXIoCisgICogICAgIE9wZXJhdGlvbiBhc3Nv Y2lhdGVkIHdpdGggdGhlIHdyaXRlLgorICAqCisgICogQHJldHVybgorLSAqICAgICBUaGlzIGZ1 bmN0aW9uIHJldHVybnMgR0xPQlVTX1NVQ0NFU1MsIAorKyAqICAgICBUaGlzIGZ1bmN0aW9uIHJl dHVybnMgR0xPQlVTX1NVQ0NFU1MsCisgICogICAgIEdMT0JVU19YSU9fRVJST1JfQUxSRUFEWV9S RUdJU1RFUkVELCBhbmQgR0xPQlVTX1hJT19FUlJPUl9FT0YKKyAgKiAgICAgZXJyb3JzIGRpcmVj dGx5LiBPdGhlciBlcnJvcnMgbWF5IGJlIHJldHVybmVkIGZyb20KKyAgKiAgICAgZ2xvYnVzX2lf eGlvX2h0dHBfc2VydmVyX3dyaXRlX3Jlc3BvbnNlKCksCitAQCAtMTQxNCw3ICsxNDE0LDcgQEAg Z2xvYnVzX2lfeGlvX2h0dHBfd3JpdGUoCisgICAgIH0KKyAgICAgZWxzZQorICAgICB7CistICAg ICAgICAKKysKKyAgICAgICAgIHN3aXRjaCAoaHR0cF9oYW5kbGUtPnNlbmRfc3RhdGUpCisgICAg ICAgICB7CisgICAgICAgICAgICAgY2FzZSBHTE9CVVNfWElPX0hUVFBfU1RBVFVTX0xJTkU6CitA QCAtMTQyOCw3ICsxNDI4LDcgQEAgZ2xvYnVzX2lfeGlvX2h0dHBfd3JpdGUoCisgICAgICAgICAg ICAgY2FzZSBHTE9CVVNfWElPX0hUVFBfQ0xPU0U6CisgICAgICAgICAgICAgICAgIHJlc3VsdCA9 IEdsb2J1c1hJT0h0dHBFcnJvck5vRW50aXR5KCk7CisgICAgICAgICAgICAgICAgIGJyZWFrOwor LSAgICAKKysKKyAgICAgICAgICAgICBjYXNlIEdMT0JVU19YSU9fSFRUUF9DSFVOS19CT0RZOgor ICAgICAgICAgICAgICAgICBpZiAoaHR0cF9oYW5kbGUtPndyaXRlX29wZXJhdGlvbi5vcGVyYXRp b24gIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgeworQEAgLTE0NTUsMTMgKzE0NTUsMTMgQEAg Z2xvYnVzX2lfeGlvX2h0dHBfd3JpdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVz X2lfeGlvX2h0dHBfd3JpdGVfY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgaHR0 cF9oYW5kbGUpOworICAgICAgICAgICAgICAgICBicmVhazsKKy0gICAgCisrCisgICAgICAgICAg ICAgY2FzZSBHTE9CVVNfWElPX0hUVFBfUFJFX1JFUVVFU1RfTElORToKKyAgICAgICAgICAgICAg ICAgaWYoaHR0cF9oYW5kbGUtPmRlbGF5X3dyaXRlX2hlYWRlcikKKyAgICAgICAgICAgICAgICAg eworICAgICAgICAgICAgICAgICAgICAgaHR0cF9oYW5kbGUtPmZpcnN0X3dyaXRlX2lvdmVjID0g aW92ZWM7CisgICAgICAgICAgICAgICAgICAgICBodHRwX2hhbmRsZS0+Zmlyc3Rfd3JpdGVfaW92 ZWNfY291bnQgPSBpb3ZlY19jb3VudDsKKy0gICAgCisrCisgICAgICAgICAgICAgICAgICAgICBy ZXN1bHQgPSBnbG9idXNfaV94aW9faHR0cF9jbGllbnRfd3JpdGVfcmVxdWVzdCgKKyAgICAgICAg ICAgICAgICAgICAgICAgICBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBodHRwX2hhbmRs ZSk7CitAQCAtMTU1Miw3ICsxNTUyLDcgQEAgZ2xvYnVzX2lfeGlvX2h0dHBfd3JpdGVfY2h1bmso CisgICAgIH0KKyAgICAgaHR0cF9oYW5kbGUtPndyaXRlX29wZXJhdGlvbi5vcGVyYXRpb24gPSBv cDsKKyAgICAgaHR0cF9oYW5kbGUtPndyaXRlX29wZXJhdGlvbi5kcml2ZXJfaGFuZGxlID0gZ2xv YnVzX3hpb19vcGVyYXRpb25fZ2V0X2RyaXZlcl9oYW5kbGUob3ApOworLSAgICBodHRwX2hhbmRs ZS0+d3JpdGVfb3BlcmF0aW9uLmlvdiA9IGdsb2J1c19saWJjX21hbGxvYygoaW92ZWNfY291bnQg KyAyKSAqIAorKyAgICBodHRwX2hhbmRsZS0+d3JpdGVfb3BlcmF0aW9uLmlvdiA9IGdsb2J1c19s aWJjX21hbGxvYygoaW92ZWNfY291bnQgKyAyKSAqCisgICAgICAgICAgICAgc2l6ZW9mKGdsb2J1 c194aW9faW92ZWNfdCkpOworIAorICAgICBpZiAoaHR0cF9oYW5kbGUtPndyaXRlX29wZXJhdGlv bi5pb3YgPT0gTlVMTCkKK0BAIC0xNjE1LDcgKzE2MTUsNyBAQCBlcnJvcl9leGl0OgorICAqIElu IGNodW5rZWQgbW9kZSwgd2Ugd2lsbCBhZGp1c3QgdGhlIG5ieXRlcyB0byByZW1vdmUgdGhlIHNp emUgb2YgdGhlCisgICogY2h1bmsgZnJhbWluZywgb3RoZXJ3aXNlIHdlIHdpbGwgZmluaXNoIHRo ZSB3cml0ZSB3aXRoIHRoZSB2YWx1ZSBwYXNzZWQKKyAgKiB0byB0aGlzIGNhbGxiYWNrLgorLSAq IAorKyAqCisgICogQHBhcmFtIG9wCisgICogICAgIE9wZXJhdGlvbiBhc3NvY2lhdGVkIHdpdGgg dGhlIHdyaXRlLgorICAqIEBwYXJhbSByZXN1bHQKK0BAIC0xNjkyLDEwICsxNjkyLDEwIEBAIGds b2J1c19pX3hpb19odHRwX3dyaXRlX2NhbGxiYWNrKAorICAgICAgICAgZ2xvYnVzX29iamVjdF90 ICogICAgICAgICAgICAgICBlcnI7CisgCisgICAgICAgICBlcnIgPSBnbG9idXNfZXJyb3JfZ2V0 KHJlc3VsdCk7CistICAgICAgICAKKysKKyAgICAgICAgIGlmKGh0dHBfaGFuZGxlLT5yZW9wZW5f aW5fcHJvZ3Jlc3MpCisgICAgICAgICB7CistICAgICAgICAgICAgaHR0cF9oYW5kbGUtPnBlbmRp bmdfZXJyb3IgPSAKKysgICAgICAgICAgICBodHRwX2hhbmRsZS0+cGVuZGluZ19lcnJvciA9Cisg ICAgICAgICAgICAgICAgIEdsb2J1c1hJT0hUVFBFcnJvck9ialBlcnNpc3RlbnRDb25uZWN0aW9u RHJvcHBlZChlcnIpOworICAgICAgICAgfQorICAgICAgICAgZWxzZQorZGlmZiAtLWdpdCBhL3hp by9zcmMvYnVpbHRpbnMvbW9kZV9lL2dsb2J1c194aW9fbW9kZV9lX2RyaXZlci5jIGIveGlvL3Ny Yy9idWlsdGlucy9tb2RlX2UvZ2xvYnVzX3hpb19tb2RlX2VfZHJpdmVyLmMKK2luZGV4IDdmNGJh YTQxOS4uNjU5NTJhMDM2IDEwMDY0NAorLS0tIGEveGlvL3NyYy9idWlsdGlucy9tb2RlX2UvZ2xv YnVzX3hpb19tb2RlX2VfZHJpdmVyLmMKKysrKyBiL3hpby9zcmMvYnVpbHRpbnMvbW9kZV9lL2ds b2J1c194aW9fbW9kZV9lX2RyaXZlci5jCitAQCAtNzgsNyArNzgsNyBAQCB0eXBlZGVmIHN0cnVj dAorICAgICBnbG9idXNfeGlvX3N0YWNrX3QgICAgICAgICAgICAgICAgICBzdGFjazsKKyAgICAg aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2Nvbm5lY3Rpb25fY291bnQ7 CisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVvZF9jb3VudDsKKy0g ICAgZ2xvYnVzX3hpb19hdHRyX3QgICAgICAgICAgICAgICAgICAgeGlvX2F0dHI7ICAgICAgIAor KyAgICBnbG9idXNfeGlvX2F0dHJfdCAgICAgICAgICAgICAgICAgICB4aW9fYXR0cjsKKyAgICAg Z2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9lb2Q7CisgICAgIGdsb2J1 c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbF9lb2RjOworICAgICBnbG9idXNf b2ZmX3QgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ7CitAQCAtODksNyArODksNyBAQCBz dGF0aWMgZ2xvYnVzX2xfeGlvX21vZGVfZV9hdHRyX3QgICAgICAgZ2xvYnVzX2xfeGlvX21vZGVf ZV9hdHRyX2RlZmF1bHQgPQorIHsKKyAgICAgR0xPQlVTX05VTEwsCisgICAgIDEsCistICAgIDAs ICAKKysgICAgMCwKKyAgICAgR0xPQlVTX05VTEwsCisgICAgIEdMT0JVU19GQUxTRSwKKyAgICAg R0xPQlVTX0ZBTFNFLAorQEAgLTEwOSw3ICsxMDksNyBAQCB0eXBlZGVmIHN0cnVjdAorICAgICBn bG9idXNfeGlvX3NlcnZlcl90ICAgICAgICAgICAgICAgICBzZXJ2ZXI7CisgICAgIGdsb2J1c194 aW9faGFuZGxlX3QgICAgICAgICAgICAgICAgIGFjY2VwdGVkX2hhbmRsZTsKKyAgICAgZ2xvYnVz X2xfeGlvX21vZGVfZV9hdHRyX3QgKiAgICAgICAgYXR0cjsKKy0gICAgZ2xvYnVzX2lfeGlvX21v ZGVfZV9zdGF0ZV90ICAgICAgICAgc3RhdGU7ICAKKysgICAgZ2xvYnVzX2lfeGlvX21vZGVfZV9z dGF0ZV90ICAgICAgICAgc3RhdGU7CisgICAgIGdsb2J1c19tZW1vcnlfdCAgICAgICAgICAgICAg ICAgICAgIHJlcXVlc3Rvcl9tZW1vcnk7CisgICAgIGdsb2J1c19tZW1vcnlfdCAgICAgICAgICAg ICAgICAgICAgIGhlYWRlcl9tZW1vcnk7CisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNzOworQEAgLTEzNyw3ICsxMzcsNyBAQCB0eXBlZGVmIHN0cnVjdAorICAgICBn bG9idXNfb2JqZWN0X3QgKiAgICAgICAgICAgICAgICAgICBlcnJvcjsKKyB9IGdsb2J1c19sX3hp b19tb2RlX2VfaGFuZGxlX3Q7CisgCistdHlwZWRlZiBzdHJ1Y3QgCisrdHlwZWRlZiBzdHJ1Y3QK KyB7CisgICAgIGdsb2J1c194aW9fb3BlcmF0aW9uX3QgICAgICAgICAgICAgIG9wOworICAgICBn bG9idXNfeGlvX2lvdmVjX3QgKiAgICAgICAgICAgICAgICBpb3ZlYzsKK0BAIC0xNTQsMTEgKzE1 NCwxMSBAQCB0eXBlZGVmIHN0cnVjdAorICAgICBnbG9idXNfaV94aW9fbW9kZV9lX3JlcXVlc3Rv cl90ICogICByZXF1ZXN0b3I7CisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlvdmVjX2luZGV4OworICAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAg ICBpb3ZlY19pbmRleF9sZW47CistICAgIGdsb2J1c19vZmZfdCAgICAgICAgICAgICAgICAgICAg ICAgIG91dHN0YW5kaW5nX2RhdGFfbGVuOyAgICAKKy0gICAgZ2xvYnVzX29mZl90ICAgICAgICAg ICAgICAgICAgICAgICAgb3V0c3RhbmRpbmdfZGF0YV9vZmZzZXQ7ICAgIAorKyAgICBnbG9idXNf b2ZmX3QgICAgICAgICAgICAgICAgICAgICAgICBvdXRzdGFuZGluZ19kYXRhX2xlbjsKKysgICAg Z2xvYnVzX29mZl90ICAgICAgICAgICAgICAgICAgICAgICAgb3V0c3RhbmRpbmdfZGF0YV9vZmZz ZXQ7CisgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgIGVvZDsKKyAgICAg Z2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICAgICAgY2xvc2U7CistfSBnbG9idXNfbF94 aW9fbW9kZV9lX2Nvbm5lY3Rpb25faGFuZGxlX3Q7IAorK30gZ2xvYnVzX2xfeGlvX21vZGVfZV9j b25uZWN0aW9uX2hhbmRsZV90OworIAorIHN0YXRpYworIGludAorQEAgLTMwMiwxOCArMzAyLDE4 IEBAIGVycm9yX3hpb19zeXN0ZW1fYWN0aXZhdGU6Cisgc3RhdGljCisgaW50CisgZ2xvYnVzX2xf eGlvX21vZGVfZV9kZWFjdGl2YXRlKHZvaWQpCisteyAgIAorK3sKKyAgICAgaW50IHJjOworICAg ICBHbG9idXNYSU9OYW1lKGdsb2J1c19sX3hpb19tb2RlX2VfZGVhY3RpdmF0ZSk7CistICAgIAor KworICAgICBHbG9idXNYSU9Nb2RlRURlYnVnRW50ZXIoKTsKKyAgICAgR2xvYnVzWElPVW5SZWdp c3RlckRyaXZlcihtb2RlX2UpOworICAgICByYyA9IGdsb2J1c19tb2R1bGVfZGVhY3RpdmF0ZShH TE9CVVNfWElPX01PRFVMRSk7CisgICAgIGlmIChyYyAhPSBHTE9CVVNfU1VDQ0VTUykKKy0gICAg eyAgIAorKyAgICB7CisgICAgICAgICBnb3RvIGVycm9yX2RlYWN0aXZhdGU7CisgICAgIH0KKy0g ICAgCisrCisgICAgIEdsb2J1c1hJT01vZGVFRGVidWdFeGl0KCk7CisgICAgIEdsb2J1c0RlYnVn RGVzdHJveShHTE9CVVNfWElPX01PREVfRSk7CisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsK K0BAIC0zMzYsNyArMzM2LDcgQEAgZ2xvYnVzX2xfeGlvX21vZGVfZV9oYXNodGFibGVfb2Zmc2V0 X2hhc2goCisgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk7CisgICAg IGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgIHNpemU7CisgICAgIEdsb2J1c1hJ T05hbWUoZ2xvYnVzX2xfeGlvX21vZGVfZV9oYXNodGFibGVfb2Zmc2V0X2hhc2gpOworLSAgICAK KysKKyAgICAgR2xvYnVzWElPTW9kZUVEZWJ1Z0VudGVyKCk7CisgICAgIGtleSA9IChjaGFyICop IG9mZnNldHA7CisgICAgIHNpemUgPSBzaXplb2YoZ2xvYnVzX29mZl90KTsKK0BAIC0zNDcsOCAr MzQ3LDggQEAgZ2xvYnVzX2xfeGlvX21vZGVfZV9oYXNodGFibGVfb2Zmc2V0X2hhc2goCisgICAg ICAgICB7CisgICAgICAgICAgICAgaCBePSBnID4+IDI0OworICAgICAgICAgICAgIGggXj0gZzsK Ky0gICAgICAgIH0gICAKKy0gICAgfSAgIAorKyAgICAgICAgfQorKyAgICB9CisgICAgIEdsb2J1 c1hJT01vZGVFRGVidWdFeGl0KCk7CisgICAgIHJldHVybiBoICUgbGltaXQ7CisgfQorQEAgLTQz OCw3ICs0MzgsNyBAQCBnbG9idXNfaV94aW9fbW9kZV9lX2hlYWRlcl9lbmNvZGUoCisgICAgIEds b2J1c1hJT01vZGVFRGVidWdFbnRlcigpOworICAgICBvZmZzZXRfc2l6ZSA9IHNpemVvZihnbG9i dXNfb2ZmX3QpOworICAgICAvKgorLSAgICAgKiBidWZbMF0gY29udGFpbnMgbW9zdCBzaWduaWZp Y2FudCBieXRlIGFuZCBidWZbN10gY29udGFpbnMgdGhlIAorKyAgICAgKiBidWZbMF0gY29udGFp bnMgbW9zdCBzaWduaWZpY2FudCBieXRlIGFuZCBidWZbN10gY29udGFpbnMgdGhlCisgICAgICAq IGxlYXN0IHNpZ25pZmljYW50IGJ5dGUKKyAgICAgICovCisgICAgIGdsb2J1c19hc3NlcnQoR0xP QlVTX1hJT19NT0RFX0VfTUFYX09GRlNFVF9TSVpFID49IG9mZnNldF9zaXplKTsKK0BAIC00NzAs MTIgKzQ3MCwxMiBAQCBnbG9idXNfaV94aW9fbW9kZV9lX2hlYWRlcl9kZWNvZGUoCisgICAgIEds b2J1c1hJT01vZGVFRGVidWdFbnRlcigpOworICAgICBvZmZzZXRfc2l6ZSA9IHNpemVvZihnbG9i dXNfb2ZmX3QpOworICAgICBmb3IgKGkgPSBHTE9CVVNfWElPX01PREVfRV9NQVhfT0ZGU0VUX1NJ WkU7IGkgPiBvZmZzZXRfc2l6ZTsgaS0tKQorLSAgICB7ICAgCistICAgICAgICAvKiAKKysgICAg eworKyAgICAgICAgLyoKKyAgICAgICAgICAqIGlmIG9mZnNldF9zaXplIDwgTUFYX09GRlNFVF9T SVpFOyB0aGVuIHRoZSBtb3N0IHNpZ25pZmljYW50CisgICAgICAgICAgKiAoTUFYX09GRlNFVF9T SVpFIC0gb2Zmc2V0X3NpemUpIG51bWJlciBvZiBieXRlcyBzaG91bGQgYmUgemVybzsKKyAgICAg ICAgICAqIG90aGVyd2lzZSB0aGVyZSBpcyBhbiBvdmVyZmxvdworLSAgICAgICAgICovIAorKyAg ICAgICAgICovCisgICAgICAgICBpZiAoYnVmW0dMT0JVU19YSU9fTU9ERV9FX01BWF9PRkZTRVRf U0laRSAtIGldICE9IDApCisgICAgICAgICB7CisgICAgICAgICAgICAgcmVzdWx0ID0gR2xvYnVz WElPTW9kZUVIZWFkZXJFcnJvcigib2Zmc2V0IG92ZXJmbG93Iik7CitAQCAtNDg1LDcgKzQ4NSw3 IEBAIGdsb2J1c19pX3hpb19tb2RlX2VfaGVhZGVyX2RlY29kZSgKKyAgICAgaWYgKG9mZnNldF9z aXplID4gR0xPQlVTX1hJT19NT0RFX0VfTUFYX09GRlNFVF9TSVpFKQorICAgICB7CisgICAgICAg ICBvZmZzZXRfc2l6ZSA9IEdMT0JVU19YSU9fTU9ERV9FX01BWF9PRkZTRVRfU0laRTsKKy0gICAg fSAgICAgICAgICAgCisrICAgIH0KKyAgICAgZm9yIChpID0gMDsgaSA8IG9mZnNldF9zaXplOyBp KyspCisgICAgIHsKKyAgICAgICAgIHggKz0gKChnbG9idXNfb2ZmX3QpIGJ1ZltpXSkgPDwgKG9m ZnNldF9zaXplIC0gaSAtIDEpICogODsKK0BAIC01MDMsNyArNTAzLDcgQEAgb3ZlcmZsb3c6Cisg LyoKKyAgKiAgYWxsb2NhdGUgdGhlIG1lbW9yeSBmb3IgYW5kIGluaXRpYWxpemUgYW4gaW50ZXJu YWwgaGFuZGxlCisgICovCistc3RhdGljIAorK3N0YXRpYworIGdsb2J1c19yZXN1bHRfdAorIGds b2J1c19sX3hpb19tb2RlX2VfaGFuZGxlX2NyZWF0ZSgKKyAgICAgZ2xvYnVzX2xfeGlvX21vZGVf ZV9oYW5kbGVfdCAqKiAgICAgb3V0X2hhbmRsZSwKK0BAIC01MjYsNyArNTI2LDcgQEAgZ2xvYnVz X2xfeGlvX21vZGVfZV9oYW5kbGVfY3JlYXRlKAorICAgICBtZW1zZXQoaGFuZGxlLCAwLCBzaXpl b2YoZ2xvYnVzX2xfeGlvX21vZGVfZV9oYW5kbGVfdCkpOworICAgICBpZiAoIWF0dHIpCisgICAg IHsKKy0gICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX3hpb19tb2RlX2VfYXR0cl9pbml0KCh2b2lk KiopKHZvaWQqKSZoYW5kbGUtPmF0dHIpOyAKKysgICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX3hp b19tb2RlX2VfYXR0cl9pbml0KCh2b2lkKiopKHZvaWQqKSZoYW5kbGUtPmF0dHIpOworICAgICAg ICAgaWYgKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgIHsKKyAgICAgICAgICAg ICByZXN1bHQgPSBHbG9idXNYSU9FcnJvcldyYXBGYWlsZWQoCitAQCAtNTc3LDIzICs1NzcsMjMg QEAgZ2xvYnVzX2xfeGlvX21vZGVfZV9oYW5kbGVfY3JlYXRlKAorICAgICBpZiAocmVzdWx0ICE9 IEdMT0JVU19TVUNDRVNTKQorICAgICB7CisgICAgICAgICBnb3RvIGVycm9yX2VvZF9xX2luaXQ7 CistICAgIH0gICAgICAgICAgIAorKyAgICB9CisgICAgIHJlc3VsdCA9IGdsb2J1c19maWZvX2lu aXQoJmhhbmRsZS0+aW9fcSk7CisgICAgIGlmIChyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisg ICAgIHsKKyAgICAgICAgIGdvdG8gZXJyb3JfaW9fcV9pbml0OworICAgICB9CistICAgIG5vZGVf c2l6ZSA9IHNpemVvZihnbG9idXNfaV94aW9fbW9kZV9lX3JlcXVlc3Rvcl90KTsgIAorLSAgICBu b2RlX2NvdW50ID0gR0xPQlVTX1hJT19NT0RFX0VfSU9fUV9TSVpFOyAgICAgICAKKysgICAgbm9k ZV9zaXplID0gc2l6ZW9mKGdsb2J1c19pX3hpb19tb2RlX2VfcmVxdWVzdG9yX3QpOworKyAgICBu b2RlX2NvdW50ID0gR0xPQlVTX1hJT19NT0RFX0VfSU9fUV9TSVpFOworICAgICBnbG9idXNfbWVt b3J5X2luaXQoJmhhbmRsZS0+cmVxdWVzdG9yX21lbW9yeSwgbm9kZV9zaXplLCBub2RlX2NvdW50 KTsKKyAgICAgbm9kZV9zaXplID0gc2l6ZW9mKGdsb2J1c19sX3hpb19tb2RlX2VfaGVhZGVyX3Qp OworLSAgICBub2RlX2NvdW50ID0gR0xPQlVTX1hJT19NT0RFX0VfSEVBREVSX0NPVU5UOyAgICAg ICAKKysgICAgbm9kZV9jb3VudCA9IEdMT0JVU19YSU9fTU9ERV9FX0hFQURFUl9DT1VOVDsKKyAg ICAgZ2xvYnVzX21lbW9yeV9pbml0KCZoYW5kbGUtPmhlYWRlcl9tZW1vcnksIG5vZGVfc2l6ZSwg bm9kZV9jb3VudCk7CisgICAgIGdsb2J1c19tdXRleF9pbml0KCZoYW5kbGUtPm11dGV4LCBOVUxM KTsKKy0gICAgLyogCisrICAgIC8qCisgICAgICAqIEFzIEkgZGlkIG1lbXNldChoYW5kbGUsIDAp IGluIHRoZSBiZWdpbm5pbmcsIGhlcmUgaSBpbml0aWFsaXplIG9ubHkgdGhlCisgICAgICAqIGZp ZWxkcyB0aGF0IGhhcyB0byBpbml0aWFsaXplZCB3aXRoIGEgbm9uLXplcm8gdmFsdWUKKy0gICAg ICovIAorKyAgICAgKi8KKyAgICAgaGFuZGxlLT5lb2RfY291bnQgPSAtMTsKKyAgICAgaGFuZGxl LT5yZWZfY291bnQgPSAxOworICAgICAqb3V0X2hhbmRsZSA9IGhhbmRsZTsKK0BAIC02MDgsNyAr NjA4LDcgQEAgZXJyb3JfY29ubmVjdGlvbl9xX2luaXQ6CisgZXJyb3JfcHVzaF9kcml2ZXI6Cisg ICAgIGlmICghaGFuZGxlLT5hdHRyLT5zdGFjaykKKyAgICAgeworLSAgICAgICAgZ2xvYnVzX3hp b19zdGFja19kZXN0cm95KGhhbmRsZS0+c3RhY2spOyAKKysgICAgICAgIGdsb2J1c194aW9fc3Rh Y2tfZGVzdHJveShoYW5kbGUtPnN0YWNrKTsKKyAgICAgfQorIGVycm9yX3N0YWNrX2luaXQ6Cisg ICAgIGlmICghaGFuZGxlLT5hdHRyLT5zdGFjaykKK0BAIC02MzUsNyArNjM1LDcgQEAgZ2xvYnVz X2xfeGlvX21vZGVfZV9zZXJ2ZXJfaW5pdCgKKyAgICAgZ2xvYnVzX2xfeGlvX21vZGVfZV9oYW5k bGVfdCAqICAgICAgaGFuZGxlOworICAgICBnbG9idXNfbF94aW9fbW9kZV9lX2F0dHJfdCAqICAg ICAgICBhdHRyOworICAgICBnbG9idXNfeGlvX2NvbnRhY3RfdCAgICAgICAgICAgICAgICBteV9j b250YWN0X2luZm87CistICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNz OyAgICAgCisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzOworICAg ICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAgIEdsb2J1 c1hJT05hbWUoZ2xvYnVzX2xfeGlvX21vZGVfZV9zZXJ2ZXJfaW5pdCk7CisgCitAQCAtNjQ1LDcg KzY0NSw3IEBAIGdsb2J1c19sX3hpb19tb2RlX2Vfc2VydmVyX2luaXQoCisgICAgIGlmIChyZXN1 bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGdvdG8gZXJyb3JfaGFuZGxl X2NyZWF0ZTsKKy0gICAgfSAgIAorKyAgICB9CisgICAgIGlmICghYXR0cikKKyAgICAgeworICAg ICAgICAgYXR0ciA9IGhhbmRsZS0+YXR0cjsKK0BAIC02NTcsMTkgKzY1NywxOSBAQCBnbG9idXNf bF94aW9fbW9kZV9lX3NlcnZlcl9pbml0KAorICAgICAgICAgeworICAgICAgICAgICAgIGdvdG8g ZXJyb3JfYXR0cl9pbml0OworICAgICAgICAgfQorLSAgICB9ICAKKysgICAgfQorICAgICByZXN1 bHQgPSBnbG9idXNfeGlvX3NlcnZlcl9jcmVhdGUoCisgICAgICAgICAgICAgJmhhbmRsZS0+c2Vy dmVyLCBhdHRyLT54aW9fYXR0ciwgaGFuZGxlLT5zdGFjayk7CisgICAgIGlmIChyZXN1bHQgIT0g R0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIGdvdG8gZXJyb3Jfc2VydmVyX2NyZWF0 ZTsKKy0gICAgfSAgIAorKyAgICB9CisgICAgIHJlc3VsdCA9IGdsb2J1c194aW9fc2VydmVyX2dl dF9jb250YWN0X3N0cmluZyhoYW5kbGUtPnNlcnZlciwgJmNzKTsKKyAgICAgaWYgKHJlc3VsdCAh PSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworICAgICAgICAgZ290byBlcnJvcl9nZXRfY3M7Cisg ICAgIH0KKy0gICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19jb250YWN0X3BhcnNlKCZteV9jb250YWN0 X2luZm8sIGNzKTsgICAgCisrICAgIHJlc3VsdCA9IGdsb2J1c194aW9fY29udGFjdF9wYXJzZSgm bXlfY29udGFjdF9pbmZvLCBjcyk7CisgICAgIGlmIChyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1Mp CisgICAgIHsKKyAgICAgICAgIGdvdG8gZXJyb3JfcGFyc2VfY3M7CitAQCAtNjkyLDcgKzY5Miw3 IEBAIGVycm9yX2F0dHJfaW5pdDoKKyAgICAgZ2xvYnVzX2xfeGlvX21vZGVfZV9oYW5kbGVfZGVz dHJveShoYW5kbGUpOworIGVycm9yX2hhbmRsZV9jcmVhdGU6CisgICAgIEdsb2J1c1hJT01vZGVF RGVidWdFeGl0V2l0aEVycm9yKCk7CistICAgIHJldHVybiByZXN1bHQ7ICAgIAorKyAgICByZXR1 cm4gcmVzdWx0OworIH0KKyAKKyAKK0BAIC03MDMsMTIgKzcwMywxMiBAQCBnbG9idXNfbF94aW9f bW9kZV9lX3NhdmVfZXJyb3IoCisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAg ICAgIHJlc3VsdCkKKyB7CisgICAgIEdsb2J1c1hJT05hbWUoZ2xvYnVzX2xfeGlvX21vZGVfZV9z YXZlX2Vycm9yKTsKKy0gICAgCisrCisgICAgIEdsb2J1c1hJT01vZGVFRGVidWdFbnRlcigpOwor ICAgICBoYW5kbGUtPnN0YXRlID0gR0xPQlVTX1hJT19NT0RFX0VfRVJST1I7CisgICAgIGlmICho YW5kbGUtPmVycm9yID09IEdMT0JVU19OVUxMKQorICAgICB7CistCWhhbmRsZS0+ZXJyb3IgPSBn bG9idXNfb2JqZWN0X2NvcHkoZ2xvYnVzX2Vycm9yX3BlZWsocmVzdWx0KSk7CisrICAgICAgICBo YW5kbGUtPmVycm9yID0gZ2xvYnVzX29iamVjdF9jb3B5KGdsb2J1c19lcnJvcl9wZWVrKHJlc3Vs dCkpOworICAgICB9CisgICAgIEdsb2J1c1hJT01vZGVFRGVidWdFeGl0KCk7CisgfQorQEAgLTcy MiwxNCArNzIyLDE0IEBAIGdsb2J1c19sX3hpb19tb2RlX2Vfc2VydmVyX2FjY2VwdF9jYigKKyAg ICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LAorICAgICB2b2lk ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2FyZykKKyB7CistICAgIGdsb2J1 c19sX3hpb19tb2RlX2VfaGFuZGxlX3QgKiAgICAgIGhhbmRsZTsgIAorKyAgICBnbG9idXNfbF94 aW9fbW9kZV9lX2hhbmRsZV90ICogICAgICBoYW5kbGU7CisgICAgIGdsb2J1c194aW9fb3BlcmF0 aW9uX3QgICAgICAgICAgICAgIG9wOworICAgICBHbG9idXNYSU9OYW1lKGdsb2J1c19sX3hpb19t b2RlX2Vfc2VydmVyX2FjY2VwdF9jYik7CisgCisgICAgIEdsb2J1c1hJT01vZGVFRGVidWdFbnRl cigpOworICAgICBoYW5kbGUgPSAoZ2xvYnVzX2xfeGlvX21vZGVfZV9oYW5kbGVfdCAqKXVzZXJf YXJnOworICAgICBnbG9idXNfeGlvX29wZXJhdGlvbl9kaXNhYmxlX2NhbmNlbChoYW5kbGUtPm91 dHN0YW5kaW5nX29wKTsKKy0gICAgZ2xvYnVzX211dGV4X2xvY2soJmhhbmRsZS0+bXV0ZXgpOyAg IAorKyAgICBnbG9idXNfbXV0ZXhfbG9jaygmaGFuZGxlLT5tdXRleCk7CisgICAgIG9wID0gaGFu ZGxlLT5vdXRzdGFuZGluZ19vcDsKKyAgICAgaWYgKHJlc3VsdCA9PSBHTE9CVVNfU1VDQ0VTUykK KyAgICAgeworQEAgLTc0MCwxMyArNzQwLDEzIEBAIGdsb2J1c19sX3hpb19tb2RlX2Vfc2VydmVy X2FjY2VwdF9jYigKKyAgICAgeworICAgICAgICAgZ290byBlcnJvcl9hY2NlcHQ7CisgICAgIH0K Ky0gICAgZ2xvYnVzX211dGV4X3VubG9jaygmaGFuZGxlLT5tdXRleCk7ICAgCisrICAgIGdsb2J1 c19tdXRleF91bmxvY2soJmhhbmRsZS0+bXV0ZXgpOworICAgICBnbG9idXNfeGlvX2RyaXZlcl9m aW5pc2hlZF9hY2NlcHQob3AsIGhhbmRsZSwgcmVzdWx0KTsKKyAgICAgR2xvYnVzWElPTW9kZUVE ZWJ1Z0V4aXQoKTsKKyAgICAgcmV0dXJuOworIAorIGVycm9yX2FjY2VwdDoKKy0gICAgZ2xvYnVz X211dGV4X3VubG9jaygmaGFuZGxlLT5tdXRleCk7ICAgCisrICAgIGdsb2J1c19tdXRleF91bmxv Y2soJmhhbmRsZS0+bXV0ZXgpOworICAgICBnbG9idXNfeGlvX2RyaXZlcl9maW5pc2hlZF9hY2Nl cHQob3AsIGhhbmRsZSwgcmVzdWx0KTsKKyAgICAgR2xvYnVzWElPTW9kZUVEZWJ1Z0V4aXRXaXRo RXJyb3IoKTsKKyAgICAgcmV0dXJuOworQEAgLTc1NCw5ICs3NTQsOSBAQCBlcnJvcl9hY2NlcHQ6 CisgCisgCisgLyoKKy0gKiBBdCBhbnkgaW5zdGFuY2UsIHRoZXJlIHdvdWxkIGJlIGEgZ2xvYnVz X3hpb19zZXJ2ZXJfcmVnaXN0ZXJfYWNjZXB0IAorKyAqIEF0IGFueSBpbnN0YW5jZSwgdGhlcmUg d291bGQgYmUgYSBnbG9idXNfeGlvX3NlcnZlcl9yZWdpc3Rlcl9hY2NlcHQKKyAgKiBvdXRzdGFu ZGluZyB0byBhY2NlcHQgYW55IG5ldyBpbmNvbWluZyBjb25uZWN0aW9uLiBGb3IgdGhlIHZlcnkg Zmlyc3QKKy0gKiByZWdpc3RlciBhY2NlcHQgKGRvbmUgaW4gZ2xvYnVzX2xfeGlvX21vZGVfZV9z ZXJ2ZXJfYWNjZXB0KSwgCisrICogcmVnaXN0ZXIgYWNjZXB0IChkb25lIGluIGdsb2J1c19sX3hp b19tb2RlX2Vfc2VydmVyX2FjY2VwdCksCisgICogZ2xvYnVzX2xfeGlvX21vZGVfZV9zZXJ2ZXJf YWNjZXB0X2NiIGlzIHVzZWQuIEZvciB0aGUgc3Vic2VxdWVudAorICAqIHJlZ2lzdGVyIGFjY3Bl dHMsIHRoaXMgZnVuY3Rpb24gaXMgdXNlZAorICAqLworQEAgLTc2OCwzOSArNzY4LDM5IEBAIGds b2J1c19pX3hpb19tb2RlX2Vfc2VydmVyX2FjY2VwdF9jYigKKyAgICAgZ2xvYnVzX3Jlc3VsdF90 ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LAorICAgICB2b2lkICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1c2VyX2FyZykKKyB7CistICAgIGdsb2J1c19sX3hpb19tb2RlX2VfaGFu ZGxlX3QgKiAgICAgIGhhbmRsZTsgIAorKyAgICBnbG9idXNfbF94aW9fbW9kZV9lX2hhbmRsZV90 ICogICAgICBoYW5kbGU7CisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAg IHJlczsKKyAgICAgR2xvYnVzWElPTmFtZShnbG9idXNfaV94aW9fbW9kZV9lX3NlcnZlcl9hY2Nl cHRfY2IpOworIAorICAgICBHbG9idXNYSU9Nb2RlRURlYnVnRW50ZXIoKTsKKyAgICAgaGFuZGxl ID0gKGdsb2J1c19sX3hpb19tb2RlX2VfaGFuZGxlX3QgKil1c2VyX2FyZzsKKy0gICAgZ2xvYnVz X211dGV4X2xvY2soJmhhbmRsZS0+bXV0ZXgpOyAgIAorKyAgICBnbG9idXNfbXV0ZXhfbG9jaygm aGFuZGxlLT5tdXRleCk7CisgICAgIGlmIChyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCistICAg IHsgICAgCisrICAgIHsKKyAgICAgICAgIHJlcyA9IHJlc3VsdDsKKyAgICAgICAgIGdvdG8gZXJy b3JfYWNjZXB0OworLSAgICB9ICAgIAorKyAgICB9CisgICAgIHN3aXRjaCAoaGFuZGxlLT5zdGF0 ZSkKKyAgICAgeworICAgICAgICAgY2FzZSBHTE9CVVNfWElPX01PREVfRV9PUEVOOgorICAgICAg ICAgeworICAgICAgICAgICAgIHJlcyA9IGdsb2J1c194aW9fcmVnaXN0ZXJfb3BlbigKKy0gICAg ICAgICAgICAgICAgICAgICAgICB4aW9faGFuZGxlLCAKKy0gICAgICAgICAgICAgICAgICAgICAg ICBOVUxMLCAKKysgICAgICAgICAgICAgICAgICAgICAgICB4aW9faGFuZGxlLAorKyAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5h dHRyLT54aW9fYXR0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNfaV94aW9fbW9k ZV9lX3NlcnZlcl9vcGVuX2NiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSk7Cisg ICAgICAgICAgICAgaWYgKHJlcyAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgIGdsb2J1c194aW9fcmVnaXN0ZXJfY2xvc2UoCistICAgICAgICAgICAg ICAgICAgICB4aW9faGFuZGxlLCAKKy0gICAgICAgICAgICAgICAgICAgIE5VTEwsIAorKyAgICAg ICAgICAgICAgICAgICAgeGlvX2hhbmRsZSwKKysgICAgICAgICAgICAgICAgICAgIE5VTEwsCisg ICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Cisg ICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfcmVnaXN0ZXJfb3BlbjsKKyAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgcmVzID0gZ2xvYnVzX3hpb19zZXJ2ZXJfcmVnaXN0ZXJfYWNjZXB0KAor LSAgICAgICAgICAgICAgICBzZXJ2ZXIsIAorKyAgICAgICAgICAgICAgICBzZXJ2ZXIsCisgICAg ICAgICAgICAgICAgIGdsb2J1c19pX3hpb19tb2RlX2Vfc2VydmVyX2FjY2VwdF9jYiwKKyAgICAg ICAgICAgICAgICAgaGFuZGxlKTsKKyAgICAgICAgICAgICBpZiAocmVzICE9IEdMT0JVU19TVUND RVNTKQorQEAgLTgxMiw4ICs4MTIsOCBAQCBnbG9idXNfaV94aW9fbW9kZV9lX3NlcnZlcl9hY2Nl cHRfY2IoCisgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgIHJlcyA9IEdsb2J1c1hJT0Vy cm9ySW52YWxpZFN0YXRlKGhhbmRsZS0+c3RhdGUpOworICAgICAgICAgICAgIGdvdG8gZXJyb3Jf aW52YWxpZF9zdGF0ZTsKKy0gICAgfSAgIAorLSAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZoYW5k bGUtPm11dGV4KTsgICAKKysgICAgfQorKyAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZoYW5kbGUt Pm11dGV4KTsKKyAgICAgR2xvYnVzWElPTW9kZUVEZWJ1Z0V4aXQoKTsKKyAgICAgcmV0dXJuOwor IAorQEAgLTgyMiw3ICs4MjIsNyBAQCBlcnJvcl9yZWdpc3Rlcl9vcGVuOgorIGVycm9yX2ludmFs aWRfc3RhdGU6CisgZXJyb3JfYWNjZXB0OgorICAgICBnbG9idXNfbF94aW9fbW9kZV9lX3NhdmVf ZXJyb3IoaGFuZGxlLCByZXMpOworLSAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZoYW5kbGUtPm11 dGV4KTsgCisrICAgIGdsb2J1c19tdXRleF91bmxvY2soJmhhbmRsZS0+bXV0ZXgpOworICAgICBH bG9idXNYSU9Nb2RlRURlYnVnRXhpdFdpdGhFcnJvcigpOworICAgICByZXR1cm47CisgfQorQEAg LTg0MCw4ICs4NDAsOCBAQCBnbG9idXNfaV94aW9fbW9kZV9lX2NhbmNlbF9vcGVyYXRpb25zKAor ICAgICBHbG9idXNYSU9OYW1lKGdsb2J1c19pX3hpb19tb2RlX2VfY2FuY2VsX29wZXJhdGlvbnMp OworIAorICAgICBHbG9idXNYSU9Nb2RlRURlYnVnRW50ZXIoKTsKKy0gICAgLyogCistICAgICAq IElmIHVzZXIgY2FuY2VscyBjbG9zZSBvbiB0aGUgY2xpZW50IHNpZGUsIGJvdGggcmVnaXN0ZXJf d3JpdGUgKGVvZHMpIAorKyAgICAvKgorKyAgICAgKiBJZiB1c2VyIGNhbmNlbHMgY2xvc2Ugb24g dGhlIGNsaWVudCBzaWRlLCBib3RoIHJlZ2lzdGVyX3dyaXRlIChlb2RzKQorICAgICAgKiBhbmQg cmVnaXN0ZXJfY2xvc2UgY2FuIGJlIG91dHN0YW5kaW5nCisgICAgICAqLworICAgICBtYXNrID0g R0xPQlVTX1hJT19DQU5DRUxfV1JJVEU7CitAQCAtODUxLDkgKzg1MSw5IEBAIGdsb2J1c19pX3hp b19tb2RlX2VfY2FuY2VsX29wZXJhdGlvbnMoCisgICAgICAgICAgICAgICAgICAgICBnbG9idXNf bGlzdF9yZW1vdmUoJmhhbmRsZS0+ZW9kX2xpc3QsIGhhbmRsZS0+ZW9kX2xpc3QpOworICAgICAg ICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19oYW5kbGVfY2FuY2VsX29wZXJhdGlvbnMoeGlvX2hhbmRs ZSwgbWFzayk7CisgICAgICAgICBpZiAocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorLSAgICAg ICAgeyAgIAorKyAgICAgICAgeworICAgICAgICAgICAgIGdvdG8gZXJyb3I7CistICAgICAgICB9 ICAgCisrICAgICAgICB9CisgICAgIH0KKyAgICAgbWFzayA9IEdMT0JVU19YSU9fQ0FOQ0VMX0NM T1NFOworICAgICB3aGlsZSAoIWdsb2J1c19saXN0X2VtcHR5KGhhbmRsZS0+Y2xvc2VfbGlzdCkp CitAQCAtODYyLDkgKzg2Miw5IEBAIGdsb2J1c19pX3hpb19tb2RlX2VfY2FuY2VsX29wZXJhdGlv bnMoCisgICAgICAgICAgICAgICAgIGdsb2J1c19saXN0X3JlbW92ZSgmaGFuZGxlLT5jbG9zZV9s aXN0LCBoYW5kbGUtPmNsb3NlX2xpc3QpOworICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19o YW5kbGVfY2FuY2VsX29wZXJhdGlvbnMoeGlvX2hhbmRsZSwgbWFzayk7CisgICAgICAgICBpZiAo cmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorLSAgICAgICAgeyAgIAorKyAgICAgICAgeworICAg ICAgICAgICAgIGdvdG8gZXJyb3I7CistICAgICAgICB9ICAgCisrICAgICAgICB9CisgICAgIH0K KyAgICAgR2xvYnVzWElPTW9kZUVEZWJ1Z0V4aXQoKTsKKyAgICAgcmV0dXJuIEdMT0JVU19TVUND RVNTOworQEAgLTkyNCwxMSArOTI0LDExIEBAIGdsb2J1c19sX3hpb19tb2RlX2VfY2FuY2VsX2Ni KAorICAgICAgICAgICAgIGlmIChnbG9idXNfZmlmb19lbXB0eSgmaGFuZGxlLT5pb19xKSB8fAor ICAgICAgICAgICAgICAgICAhZ2xvYnVzX2ZpZm9fcmVtb3ZlKCZoYW5kbGUtPmlvX3EsIHJlcXVl c3RvcikpCisgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAvKiAKKy0gICAgICAgICAg ICAgICAgICogcmVxdWVzdG9yLT54aW9faGFuZGxlIHdvdWxkIGJlIE5VTEwgaWYgY2FuY2VsIHdh cyBjYWxsZWQgCistICAgICAgICAgICAgICAgICAqIGFmdGVyIGVuYWJsZV9jYW5jZWwgaXMgY2Fs bGVkIGluIHJlYWQvd3JpdGUgYW5kIGJlZm9yZSB0aGUgCistICAgICAgICAgICAgICAgICAqIGxv Y2sgaXMgcmVxdWlyZWQgaW4gcmVhZC93cml0ZS4gSW4gdGhhdCBjYXNlIGFuIHhpbyAKKy0gICAg ICAgICAgICAgICAgICogb3BlcmF0aW9uIHdvdWxkIG5vdCBoYXZlIGJlZW4gaW5pdGlhdGVkLiBT byBJIGRvbid0IGRvIAorKyAgICAgICAgICAgICAgICAvKgorKyAgICAgICAgICAgICAgICAgKiBy ZXF1ZXN0b3ItPnhpb19oYW5kbGUgd291bGQgYmUgTlVMTCBpZiBjYW5jZWwgd2FzIGNhbGxlZAor KyAgICAgICAgICAgICAgICAgKiBhZnRlciBlbmFibGVfY2FuY2VsIGlzIGNhbGxlZCBpbiByZWFk L3dyaXRlIGFuZCBiZWZvcmUgdGhlCisrICAgICAgICAgICAgICAgICAqIGxvY2sgaXMgcmVxdWly ZWQgaW4gcmVhZC93cml0ZS4gSW4gdGhhdCBjYXNlIGFuIHhpbworKyAgICAgICAgICAgICAgICAg KiBvcGVyYXRpb24gd291bGQgbm90IGhhdmUgYmVlbiBpbml0aWF0ZWQuIFNvIEkgZG9uJ3QgZG8K KyAgICAgICAgICAgICAgICAgICogYW55dGhpbmcgaGVyZS4KKyAgICAgICAgICAgICAgICAgICov CisgICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0b3ItPnhpb19oYW5kbGUpCitAQCAtOTY5LDcg Kzk2OSw3IEBAIGdsb2J1c19sX3hpb19tb2RlX2VfY2FuY2VsX2NiKAorICAgICAgICAgZGVmYXVs dDoKKyAgICAgICAgICAgICByZXN1bHQgPSBHbG9idXNYSU9FcnJvckludmFsaWRTdGF0ZShoYW5k bGUtPnN0YXRlKTsKKyAgICAgICAgICAgICBnb3RvIGVycm9yOworLSAgICAgICAgCisrCisgICAg IH0KKyAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmaGFuZGxlLT5tdXRleCk7CisgICAgIGlmIChm aW5pc2gpCitAQCAtMTAyNSwxMyArMTAyNSwxMyBAQCBnbG9idXNfbF94aW9fbW9kZV9lX3NlcnZl cl9hY2NlcHQoCisgICAgICAgICBnb3RvIGVycm9yX29wZXJhdGlvbl9jYW5jZWxlZDsKKyAgICAg fQorICAgICByZXN1bHQgPSBnbG9idXNfeGlvX3NlcnZlcl9yZWdpc3Rlcl9hY2NlcHQoCistICAg ICAgICAgICAgICAgIGhhbmRsZS0+c2VydmVyLCAKKysgICAgICAgICAgICAgICAgaGFuZGxlLT5z ZXJ2ZXIsCisgICAgICAgICAgICAgICAgIGdsb2J1c19sX3hpb19tb2RlX2Vfc2VydmVyX2FjY2Vw dF9jYiwKKyAgICAgICAgICAgICAgICAgaGFuZGxlKTsKKyAgICAgaWYgKHJlc3VsdCAhPSBHTE9C VVNfU1VDQ0VTUykKKyAgICAgeworICAgICAgICAgZ290byBlcnJvcl9yZWdpc3Rlcl9hY2NlcHQ7 CistICAgIH0gICAKKysgICAgfQorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZoYW5kbGUtPm11 dGV4KTsKKyAgICAgR2xvYnVzWElPTW9kZUVEZWJ1Z0V4aXQoKTsKKyAgICAgcmV0dXJuIEdMT0JV U19TVUNDRVNTOworQEAgLTEwNTQsMTkgKzEwNTQsMTkgQEAgZ2xvYnVzX2xfeGlvX21vZGVfZV9z ZXJ2ZXJfZGVzdHJveSgKKyB7CisgICAgIGdsb2J1c19sX3hpb19tb2RlX2VfaGFuZGxlX3QgKiAg ICAgIGhhbmRsZTsKKyAgICAgR2xvYnVzWElPTmFtZShnbG9idXNfbF94aW9fbW9kZV9lX3NlcnZl cl9kZXN0cm95KTsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgCisrCisgICAgIEdsb2J1 c1hJT01vZGVFRGVidWdFbnRlcigpOworICAgICBoYW5kbGUgPSAoZ2xvYnVzX2xfeGlvX21vZGVf ZV9oYW5kbGVfdCAqKWRyaXZlcl9zZXJ2ZXI7CistICAgIGdsb2J1c19tdXRleF9sb2NrKCZoYW5k bGUtPm11dGV4KTsgICAgCisrICAgIGdsb2J1c19tdXRleF9sb2NrKCZoYW5kbGUtPm11dGV4KTsK KyAgICAgLS1oYW5kbGUtPnJlZl9jb3VudDsKKyAgICAgaWYgKGhhbmRsZS0+cmVmX2NvdW50ID09 IDApCisgICAgIHsKKy0gICAgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmhhbmRsZS0+bXV0ZXgp OyAgICAKKysgICAgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmhhbmRsZS0+bXV0ZXgpOworICAg ICAgICAgZ2xvYnVzX2xfeGlvX21vZGVfZV9oYW5kbGVfZGVzdHJveShoYW5kbGUpOworICAgICB9 CisgICAgIGVsc2UKKyAgICAgeworLSAgICAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmaGFuZGxl LT5tdXRleCk7ICAgIAorKyAgICAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmaGFuZGxlLT5tdXRl eCk7CisgICAgIH0KKyAgICAgR2xvYnVzWElPTW9kZUVEZWJ1Z0V4aXQoKTsKKyAgICAgcmV0dXJu IEdMT0JVU19TVUNDRVNTOworQEAgLTExMTQsNyArMTExNCw3IEBAIGdsb2J1c19sX3hpb19tb2Rl X2VfbGlua19kZXN0cm95KAorICAgICAtLWhhbmRsZS0+cmVmX2NvdW50OworICAgICBpZiAoaGFu ZGxlLT5yZWZfY291bnQgPT0gMCkKKyAgICAgeworLSAgICAgICAgZ2xvYnVzX211dGV4X3VubG9j aygmaGFuZGxlLT5tdXRleCk7ICAgIAorKyAgICAgICAgZ2xvYnVzX211dGV4X3VubG9jaygmaGFu ZGxlLT5tdXRleCk7CisgICAgICAgICBnbG9idXNfbF94aW9fbW9kZV9lX2hhbmRsZV9kZXN0cm95 KGhhbmRsZSk7CisgICAgIH0KKyAgICAgZWxzZQorQEAgLTExNDgsNyArMTE0OCw3IEBAIHN0YXRp YworIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19sX3hpb19tb2RlX2VfcHJvY2Vzc19oZWFkZXIo CisgICAgIGdsb2J1c19sX3hpb19tb2RlX2VfaGVhZGVyX3QgKiAgICAgIGhlYWRlciwKKy0gICAg Z2xvYnVzX2xfeGlvX21vZGVfZV9jb25uZWN0aW9uX2hhbmRsZV90ICogICAgICAKKysgICAgZ2xv YnVzX2xfeGlvX21vZGVfZV9jb25uZWN0aW9uX2hhbmRsZV90ICoKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9oYW5kbGUpCisgeworICAgICBnbG9i dXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CitAQCAtMTE2MSw3ICsxMTYx LDcgQEAgZ2xvYnVzX2xfeGlvX21vZGVfZV9wcm9jZXNzX2hlYWRlcigKKyAgICAgfQorICAgICBp ZiAoaGVhZGVyLT5kZXNjcmlwdG9yICYgR0xPQlVTX1hJT19NT0RFX0VfREFUQV9ERVNDUklQVE9S X0NMT1NFKQorICAgICB7CistICAgICAgICAvKiBzZW5kaW5nIENMT1NFIGJlZm9yZSBFT0QgaXMg YSBwcm90b2NvbCB2aW9sYXRpb24gKi8gICAgCisrICAgICAgICAvKiBzZW5kaW5nIENMT1NFIGJl Zm9yZSBFT0QgaXMgYSBwcm90b2NvbCB2aW9sYXRpb24gKi8KKyAgICAgICAgIGdsb2J1c19hc3Nl cnQoY29ubmVjdGlvbl9oYW5kbGUtPmVvZCk7CisgICAgICAgICBjb25uZWN0aW9uX2hhbmRsZS0+ Y2xvc2UgPSBHTE9CVVNfVFJVRTsKKyAgICAgfQorQEAgLTEyMTYsMTUgKzEyMTYsMTUgQEAgZ2xv YnVzX2xfeGlvX21vZGVfZV9wcm9jZXNzX291dHN0YW5kaW5nX2RhdGEoCisgICAgIGlmICghZ2xv YnVzX2ZpZm9fZW1wdHkoJmhhbmRsZS0+aW9fcSkpCisgICAgIHsKKyAgICAgICAgIHJlcXVlc3Rv ciA9IChnbG9idXNfaV94aW9fbW9kZV9lX3JlcXVlc3Rvcl90ICopCistICAgICAgICAgICAgICAg ICAgICAgICAgZ2xvYnVzX2ZpZm9fZGVxdWV1ZSgmaGFuZGxlLT5pb19xKTsgCisrICAgICAgICAg ICAgICAgICAgICAgICAgZ2xvYnVzX2ZpZm9fZGVxdWV1ZSgmaGFuZGxlLT5pb19xKTsKKyAgICAg ICAgIGlmIChoYW5kbGUtPmF0dHItPm9mZnNldF9yZWFkcykKKyAgICAgICAgIHsKKyAgICAgICAg ICAgICAvKiB3YWl0X2ZvciBvZiB0aGlzIHJlcXVlc3RvciBzaG91bGQgYmUgemVybyAqLworLSAg ICAgICAgICAgIHJlcXVlc3Rvci0+ZGQtPm9mZnNldCA9IAorKyAgICAgICAgICAgIHJlcXVlc3Rv ci0+ZGQtPm9mZnNldCA9CisgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faGFuZGxlLT5vdXRz dGFuZGluZ19kYXRhX29mZnNldDsKKyAgICAgICAgICAgICBnbG9idXNfaGFzaHRhYmxlX2luc2Vy dCgKKy0gICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLT5vZmZzZXRfaHQsIAorLSAgICAg ICAgICAgICAgICAgICAgICAgICh2b2lkICopICZjb25uZWN0aW9uX2hhbmRsZS0+b3V0c3RhbmRp bmdfZGF0YV9vZmZzZXQsIAorKyAgICAgICAgICAgICAgICAgICAgICAgICZoYW5kbGUtPm9mZnNl dF9odCwKKysgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSAmY29ubmVjdGlvbl9oYW5k bGUtPm91dHN0YW5kaW5nX2RhdGFfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICh2 b2lkICopIGNvbm5lY3Rpb25faGFuZGxlKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGVsc2UKK0BA IC0xMjY1LDcgKzEyNjUsNyBAQCBnbG9idXNfbF94aW9fbW9kZV9lX3Byb2Nlc3NfZW9kKAorICAg ICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICBnbG9idXNfbF94aW9fbW9kZV9l X2Nsb3NlX2NiLAorICAgICAgICAgICAgICAgICBoYW5kbGUpOworLSAgICAgICAgZ2xvYnVzX2xp c3RfcmVtb3ZlKCZoYW5kbGUtPmNvbm5lY3Rpb25fbGlzdCwgCisrICAgICAgICBnbG9idXNfbGlz dF9yZW1vdmUoJmhhbmRsZS0+Y29ubmVjdGlvbl9saXN0LAorICAgICAgICAgICAgIGdsb2J1c19s aXN0X3NlYXJjaChoYW5kbGUtPmNvbm5lY3Rpb25fbGlzdCwgY29ubmVjdGlvbl9oYW5kbGUpKTsK KyAgICAgICAgIGdsb2J1c19mcmVlKGNvbm5lY3Rpb25faGFuZGxlKTsKKyAgICAgfQorQEAgLTEz MjAsNyArMTMyMCw3IEBAIGdsb2J1c19sX3hpb19tb2RlX2VfcmVhZF9oZWFkZXJfY2IoCisgICAg IG9mZnNldCA9IGNvbm5lY3Rpb25faGFuZGxlLT5vdXRzdGFuZGluZ19kYXRhX29mZnNldDsKKyAg ICAgZ2xvYnVzX211dGV4X2xvY2soJmhhbmRsZS0+bXV0ZXgpOworICAgICBpZiAocmVzdWx0ID09 IEdMT0JVU19TVUNDRVNTKQorLSAgICB7ICAgCisrICAgIHsKKyAgICAgICAgIGhlYWRlciA9IChn bG9idXNfbF94aW9fbW9kZV9lX2hlYWRlcl90ICopIGJ1ZmZlcjsKKyAgICAgICAgIHJlc3VsdCA9 IGdsb2J1c19sX3hpb19tb2RlX2VfcHJvY2Vzc19oZWFkZXIoaGVhZGVyLCBjb25uZWN0aW9uX2hh bmRsZSk7CisgICAgICAgICBpZiAocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorQEAgLTEzMzcs MTYgKzEzMzcsMTYgQEAgZ2xvYnVzX2xfeGlvX21vZGVfZV9yZWFkX2hlYWRlcl9jYigKKyAgICAg ICAgICAqIElmIEVPRiBpcyBzZXQgaW4gaGVhZGVyLCBkYXRhIGxlbiB3aWxsIGJlIHplcm8uIElm IEVPRCBhbG9uZSBpcworICAgICAgICAgICogc2V0LCB0aGVyZSBjYW4gYmUgZGF0YSBwcmVzZW50 LiBJZiBFT0QgaXMgc2V0IG9uIGhlYWRlciBhbmQgYWxzbworICAgICAgICAgICogdGhlcmUgaXMg ZGF0YSBwcmVzZW50LCBpIHByb2Nlc3MgRU9EIGluIHJlYWRfY2IuIElmIEkgcHJvY2VzcyBpdAor LSAgICAgICAgICogaGVyZSBhbmQgaWYgaXQgc28gaGFwcGVucyB0aGF0IGVvZHNfcmVjZWl2ZWQg PT0gZW9kX2NvdW50LCAKKysgICAgICAgICAqIGhlcmUgYW5kIGlmIGl0IHNvIGhhcHBlbnMgdGhh dCBlb2RzX3JlY2VpdmVkID09IGVvZF9jb3VudCwKKyAgICAgICAgICAqIHByb2Nlc3NfZW9kIHdp bGwgcmV0dXJuIHRydWUgKGVvZikgYW5kIHRoZSBzdGF0ZSB3b3VsZCBiZSBzZXQgdG8KKyAgICAg ICAgICAqIEdMT0JVU19YSU9fTU9ERV9FX0VPRl9SRUNFSVZFRCBvciBERUxJVkVSRUQgYW5kIHRo ZXJlIHdvdWxkIGJlIG5vCistICAgICAgICAgKiB3YXkgZm9yIHRoZSB1c2VyIHRvIHJlYWQgdGhl IGRhdGEgdGhhdCBoYWQgRU9EIHNldCBvbiB0aGUgaGVhZGVyLiAKKysgICAgICAgICAqIHdheSBm b3IgdGhlIHVzZXIgdG8gcmVhZCB0aGUgZGF0YSB0aGF0IGhhZCBFT0Qgc2V0IG9uIHRoZSBoZWFk ZXIuCisgICAgICAgICAgKi8KKyAgICAgICAgIGVsc2UgaWYgKGNvbm5lY3Rpb25faGFuZGxlLT5l b2QpCisgICAgICAgICB7CisgICAgICAgICAgICAgZW9mID0gZ2xvYnVzX2xfeGlvX21vZGVfZV9w cm9jZXNzX2VvZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u bmVjdGlvbl9oYW5kbGUsICZyZXF1ZXN0b3JfcSk7CistICAgICAgICAgICAgaWYgKGVvZikgCisr ICAgICAgICAgICAgaWYgKGVvZikKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGlm IChnbG9idXNfZmlmb19lbXB0eSgmcmVxdWVzdG9yX3EpKQorICAgICAgICAgICAgICAgICB7CitA QCAtMTM1NywxMiArMTM1NywxMiBAQCBnbG9idXNfbF94aW9fbW9kZV9lX3JlYWRfaGVhZGVyX2Ni KAorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg ICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgcmVxdWVzdG9yID0gKGdsb2J1c19pX3hpb19t b2RlX2VfcmVxdWVzdG9yX3QgKikgCisrICAgICAgICAgICAgICAgICAgICByZXF1ZXN0b3IgPSAo Z2xvYnVzX2lfeGlvX21vZGVfZV9yZXF1ZXN0b3JfdCAqKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnbG9idXNfZmlmb19wZWVrKCZyZXF1ZXN0b3JfcSk7CisgICAg ICAgICAgICAgICAgICAgICBnbG9idXNfeGlvX2RyaXZlcl9zZXRfZW9mX3JlY2VpdmVkKHJlcXVl c3Rvci0+b3ApOworICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAg ICAqIElmIHRoaXMgcGFydCBvZiB0aGUgY29kZSBpcyBleGVjdXRlZCwgZmluaXNoZWRfcmVhZAor LSAgICAgICAgICAgICAgICAgICAgICogaGFwcGVuIG9ubHkgaW4gaWYgKGZpbmlzaCkge30gYmxv Y2sgYmVsb3cuIFRoZSAKKysgICAgICAgICAgICAgICAgICAgICAqIGhhcHBlbiBvbmx5IGluIGlm IChmaW5pc2gpIHt9IGJsb2NrIGJlbG93LiBUaGUKKyAgICAgICAgICAgICAgICAgICAgICAqIGZp bmlzaGVkX3JlYWQgaW4gaWYgKHJlcXVlc3Rvcikge30gYmxvY2sgYmVsb3cgc2hvdWxkCisgICAg ICAgICAgICAgICAgICAgICAgKiBoYXBwZW4gb25seSBpZiBwcm9jZXNzX291dHN0YW5kaW5nX2Rh dGEgY2FsbGVkIGFib3ZlCisgICAgICAgICAgICAgICAgICAgICAgKiByZXR1cm5zIGEgbm9uIE5V TEwgcmVxdWVzdG9yIHZhbHVlLiBUaGF0cyB3aHkgcmVxdWVzdG9yCitAQCAtMTM4OCwxMyArMTM4 OCwxMyBAQCBnbG9idXNfbF94aW9fbW9kZV9lX3JlYWRfaGVhZGVyX2NiKAorICAgICAgICAgfQor ICAgICB9CisgICAgIGVsc2UgaWYoZ2xvYnVzX2Vycm9yX21hdGNoKAorLSAgICAgICAgICAgICAg ICBnbG9idXNfZXJyb3JfcGVlayhyZXN1bHQpLCAKKy0gICAgICAgICAgICAgICAgR0xPQlVTX1hJ T19NT0RVTEUsIAorKyAgICAgICAgICAgICAgICBnbG9idXNfZXJyb3JfcGVlayhyZXN1bHQpLAor KyAgICAgICAgICAgICAgICBHTE9CVVNfWElPX01PRFVMRSwKKyAgICAgICAgICAgICAgICAgR0xP QlVTX1hJT19FUlJPUl9DQU5DRUxFRCkpCisgICAgIHsKKy0gICAgICAgIC8qIAorLSAgICAgICAg ICogaWYgdGhlcmUgYXJlIG91dHN0YW5kaW5nIGhlYWRlciByZWFkcyBhbmQgdXNlciBjYWxscyBj bG9zZSwgdGhlIAorLSAgICAgICAgICogaGVhZGVyIHJlYWRzIGFyZSBjYW5jZWxlZCBpbiBjbG9z ZSAKKysgICAgICAgIC8qCisrICAgICAgICAgKiBpZiB0aGVyZSBhcmUgb3V0c3RhbmRpbmcgaGVh ZGVyIHJlYWRzIGFuZCB1c2VyIGNhbGxzIGNsb3NlLCB0aGUKKysgICAgICAgICAqIGhlYWRlciBy ZWFkcyBhcmUgY2FuY2VsZWQgaW4gY2xvc2UKKyAgICAgICAgICAqLworICAgICAgICAgaWYgKCFo YW5kbGUtPmNsb3NlX2NhbmNlbGVkKQorICAgICAgICAgeworQEAgLTE0NDUsMTIgKzE0NDUsMTIg QEAgZ2xvYnVzX2xfeGlvX21vZGVfZV9yZWFkX2hlYWRlcl9jYigKKyAgICAgICAgICAgICBvcCA9 IHJlcXVlc3Rvci0+b3A7CisgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgKiBFYXJsaWVy IEkgaGFkIHRoaXMgcHVzaF9ub2RlIGluc2lkZSBwcm9jZXNzX2VvZCBidXQgdGhlbiBpIG1vdmVk CistICAgICAgICAgICAgICogaGVyZSB0byBhdm9pZCBhIHJhY2UuIHByb2Nlc3NfZW9kIGlzIGNh bGxlZCB3aXRoIGxvY2sgaGVsZCBhbmQgCisrICAgICAgICAgICAgICogaGVyZSB0byBhdm9pZCBh IHJhY2UuIHByb2Nlc3NfZW9kIGlzIGNhbGxlZCB3aXRoIGxvY2sgaGVsZCBhbmQKKyAgICAgICAg ICAgICAgKiB3aGVuIGxvY2sgaXMgcmVsZWFzZWQgYWJvdmUsIHNvbWV0aW1lcyBjYW5jZWxfY2Ig Z2V0cyBjYWxsZWQgYW5kCisgICAgICAgICAgICAgICogaXQgdHJpZXMgdG8gYWNjZXNzIHRoZSBy ZXF1ZXN0b3Igd2hpY2ggaXMgbm8gbW9yZS4gVG8gZ2V0IHJpZAorICAgICAgICAgICAgICAqIG9m IHRoYXQsIEkgbW92ZWQgdGhlIHB1c2hfbm9kZSB0byBoZXJlIGFmdGVyIGRpc2FibGVfY2FuY2Vs LgorLSAgICAgICAgICAgICAqIFNpbmNlIHJlcXVlc3RvciBpcyByZW1vdmVkIGZyb20gdGhlIGhh bmRsZS0+aW9fcSBhbmQgcHV0IGluIAorLSAgICAgICAgICAgICAqIHJlcXVlc3Rvcl9xIGJ5IHBy b2Nlc3NfZW9kIGZ1bmN0aW9uLCBjYW5jZWxfY2Igd2lsbCBub3QgZG8gCisrICAgICAgICAgICAg ICogU2luY2UgcmVxdWVzdG9yIGlzIHJlbW92ZWQgZnJvbSB0aGUgaGFuZGxlLT5pb19xIGFuZCBw dXQgaW4KKysgICAgICAgICAgICAgKiByZXF1ZXN0b3JfcSBieSBwcm9jZXNzX2VvZCBmdW5jdGlv biwgY2FuY2VsX2NiIHdpbGwgbm90IGRvCisgICAgICAgICAgICAgICogZmluaXNoZWRfcmVhZCBv biByZXF1ZXN0b3ItPm9wLiBTaW1pbGFyIHRoaW5nIGlzIGRvbmUgaW4gcmVhZF9jYgorICAgICAg ICAgICAgICAqIHRvbworICAgICAgICAgICAgICAqLworQEAgLTE0NjAsNyArMTQ2MCw3IEBAIGds b2J1c19sX3hpb19tb2RlX2VfcmVhZF9oZWFkZXJfY2IoCisgICAgICAgICAgICAgICAgICAgICAg ICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfWElPX0REX1NFVF9PRkZT RVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0KTsKKy0JICAgIHJlcyA9IEdsb2J1 c1hJT0Vycm9yRU9GKCk7CisrICAgICAgICAgICAgcmVzID0gR2xvYnVzWElPRXJyb3JFT0YoKTsK KyAgICAgICAgICAgICBnbG9idXNfeGlvX2RyaXZlcl9maW5pc2hlZF9yZWFkKG9wLCByZXMsIDAp OworICAgICAgICAgfQorICAgICB9CitAQCAtMTUzMSw3ICsxNTMxLDcgQEAgZ2xvYnVzX2xfeGlv X21vZGVfZV9vcGVuX2NiKAorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZoYW5kbGUtPm11dGV4 KTsKKyAgICAgZ2xvYnVzX3hpb19kcml2ZXJfZmluaXNoZWRfb3BlbihoYW5kbGUsIG9wLCByZXMp OworICAgICBHbG9idXNYSU9Nb2RlRURlYnVnRXhpdCgpOworLSAgICByZXR1cm47ICAgIAorKyAg ICByZXR1cm47CisgCisgZXJyb3JfY29ubmVjdGlvbl9oYW5kbGU6CisgICAgIGdsb2J1c194aW9f cmVnaXN0ZXJfY2xvc2UoeGlvX2hhbmRsZSwgTlVMTCwgTlVMTCwgTlVMTCk7CitAQCAtMTU0MCw3 ICsxNTQwLDcgQEAgZXJyb3I6CisgICAgIGdsb2J1c194aW9fYXR0cl9kZXN0cm95KGhhbmRsZS0+ YXR0ci0+eGlvX2F0dHIpOworICAgICBpZiAoLS1oYW5kbGUtPnJlZl9jb3VudCA9PSAwKQorICAg ICB7CistICAgICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZoYW5kbGUtPm11dGV4KTsgICAgCisr ICAgICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZoYW5kbGUtPm11dGV4KTsKKyAgICAgICAgIGds b2J1c19sX3hpb19tb2RlX2VfaGFuZGxlX2Rlc3Ryb3koaGFuZGxlKTsKKyAgICAgfQorICAgICBl bHNlCitAQCAtMTU1MCw3ICsxNTUwLDcgQEAgZXJyb3I6CisgICAgIH0KKyAgICAgZ2xvYnVzX3hp b19kcml2ZXJfZmluaXNoZWRfb3BlbihoYW5kbGUsIG9wLCByZXMpOworICAgICBHbG9idXNYSU9N b2RlRURlYnVnRXhpdFdpdGhFcnJvcigpOworLSAgICByZXR1cm47ICAgIAorKyAgICByZXR1cm47 CisgfQorIAorIAorQEAgLTE1NzMsMTIgKzE1NzMsMTIgQEAgZ2xvYnVzX2lfeGlvX21vZGVfZV9v cGVuX2NiKAorICAgICBoYW5kbGUgPSAoZ2xvYnVzX2xfeGlvX21vZGVfZV9oYW5kbGVfdCAqKXVz ZXJfYXJnOworICAgICBnbG9idXNfbXV0ZXhfbG9jaygmaGFuZGxlLT5tdXRleCk7CisgICAgIGlm IChyZXN1bHQgPT0gR0xPQlVTX1NVQ0NFU1MpCistICAgIHsgICAKKysgICAgeworICAgICAgICAg Z2xvYnVzX3NpemVfdCBjb25uZWN0aW9uX2hhbmRsZV9zaXplOworLSAgICAgICAgY29ubmVjdGlv bl9oYW5kbGVfc2l6ZSA9IAorKyAgICAgICAgY29ubmVjdGlvbl9oYW5kbGVfc2l6ZSA9CisgICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGdsb2J1c19sX3hpb19tb2RlX2VfY29ubmVjdGlv bl9oYW5kbGVfdCk7CisgICAgICAgICBjb25uZWN0aW9uX2hhbmRsZSA9IChnbG9idXNfbF94aW9f bW9kZV9lX2Nvbm5lY3Rpb25faGFuZGxlX3QgKikKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2xvYnVzX21hbGxvYyhjb25uZWN0aW9uX2hhbmRsZV9zaXplKTsgCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19tYWxsb2MoY29u bmVjdGlvbl9oYW5kbGVfc2l6ZSk7CisgICAgICAgICBpZiAoIWNvbm5lY3Rpb25faGFuZGxlKQor ICAgICAgICAgeworICAgICAgICAgICAgIHJlcyA9IEdsb2J1c1hJT0Vycm9yTWVtb3J5KCJjb25u ZWN0aW9uX2hhbmRsZSIpOworQEAgLTE2MTQsNyArMTYxNCw3IEBAIGdsb2J1c19pX3hpb19tb2Rl X2Vfb3Blbl9jYigKKyAgICAgfQorICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZoYW5kbGUtPm11 dGV4KTsKKyAgICAgR2xvYnVzWElPTW9kZUVEZWJ1Z0V4aXQoKTsKKy0gICAgcmV0dXJuOyAgICAK KysgICAgcmV0dXJuOworIAorIGVycm9yX3JlZ2lzdGVyX3dyaXRlOgorIGVycm9yX2Nvbm5lY3Rp b25faGFuZGxlOgorQEAgLTE2MzQsNyArMTYzNCw3IEBAIGVycm9yX29wZW46CisgICAgICAgICBn bG9idXNfeGlvX2RyaXZlcl9maW5pc2hlZF93cml0ZSh3cml0ZV9vcCwgcmVzLCAwKTsKKyAgICAg fQorICAgICBHbG9idXNYSU9Nb2RlRURlYnVnRXhpdFdpdGhFcnJvcigpOworLSAgICByZXR1cm47 ICAgIAorKyAgICByZXR1cm47CisgfQorIAorIAorQEAgLTE3MTcsNyArMTcxNyw3IEBAIGdsb2J1 c19sX3hpb19tb2RlX2Vfc2VydmVyX29wZW5fY2IoCisgZXJyb3I6CisgICAgIGlmICgtLWhhbmRs ZS0+cmVmX2NvdW50ID09IDApCisgICAgIHsKKy0gICAgICAgIGdsb2J1c19tdXRleF91bmxvY2so JmhhbmRsZS0+bXV0ZXgpOyAgICAKKysgICAgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmhhbmRs ZS0+bXV0ZXgpOworICAgICAgICAgZ2xvYnVzX2xfeGlvX21vZGVfZV9oYW5kbGVfZGVzdHJveSho YW5kbGUpOworICAgICB9CisgICAgIGVsc2UKK0BAIC0xNzMzLDEyICsxNzMzLDEyIEBAIGVycm9y OgorIAorIC8qIGNhbGxlZCBsb2NrZWQgKGlmIGhhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX1hJT19N T0RFX0VfT1BFTikgKi8KKyBzdGF0aWMKKy1nbG9idXNfcmVzdWx0X3QgCisrZ2xvYnVzX3Jlc3Vs dF90CisgZ2xvYnVzX2xfeGlvX21vZGVfZV9vcGVuX25ld19zdHJlYW0oCisgICAgIGdsb2J1c19s X3hpb19tb2RlX2VfaGFuZGxlX3QgKiAgICAgIGhhbmRsZSwKKyAgICAgZ2xvYnVzX3hpb19jYWxs YmFja190ICAgICAgICAgICAgICAgb3Blbl9jYikKKyB7CistICAgIGdsb2J1c194aW9faGFuZGxl X3QgICAgICAgICAgICAgICAgIHhpb19oYW5kbGU7ICAgICAKKysgICAgZ2xvYnVzX3hpb19oYW5k bGVfdCAgICAgICAgICAgICAgICAgeGlvX2hhbmRsZTsKKyAgICAgZ2xvYnVzX2xfeGlvX21vZGVf ZV9hdHRyX3QgKiAgICAgICAgYXR0cjsKKyAgICAgZ2xvYnVzX2lfeGlvX21vZGVfZV9yZXF1ZXN0 b3JfdCAqICAgcmVxdWVzdG9yOworICAgICBnbG9idXNfeGlvX29wZXJhdGlvbl90ICAgICAgICAg ICAgICBvcDsKK0BAIC0xNzgxLDggKzE3ODEsOCBAQCBnbG9idXNfbF94aW9fbW9kZV9lX29wZW5f bmV3X3N0cmVhbSgKKyAgICAgICAgIH0KKyAgICAgfQorICAgICByZXN1bHQgPSBnbG9idXNfeGlv X3JlZ2lzdGVyX29wZW4oCistICAgICAgICAgICAgICAgIHhpb19oYW5kbGUsIAorLSAgICAgICAg ICAgICAgICBoYW5kbGUtPmNzLCAKKysgICAgICAgICAgICAgICAgeGlvX2hhbmRsZSwKKysgICAg ICAgICAgICAgICAgaGFuZGxlLT5jcywKKyAgICAgICAgICAgICAgICAgaGFuZGxlLT5hdHRyLT54 aW9fYXR0ciwKKyAgICAgICAgICAgICAgICAgb3Blbl9jYiwKKyAgICAgICAgICAgICAgICAgaGFu ZGxlKTsKK0BAIC0xODMzLDEwICsxODMzLDEwIEBAIGdsb2J1c19sX3hpb19tb2RlX2Vfc2VydmVy X29wZW4oCisgICAgIEdsb2J1c1hJT01vZGVFRGVidWdFbnRlcigpOworICAgICBnbG9idXNfbXV0 ZXhfbG9jaygmaGFuZGxlLT5tdXRleCk7CisgICAgIGhhbmRsZS0+b3V0c3RhbmRpbmdfb3AgPSBv cDsKKy0gICAgaWYgKGhhbmRsZS0+YXR0ci0+b2Zmc2V0X3JlYWRzKSAKKysgICAgaWYgKGhhbmRs ZS0+YXR0ci0+b2Zmc2V0X3JlYWRzKQorICAgICB7CisgICAgICAgICByZXN1bHQgPSBnbG9idXNf aGFzaHRhYmxlX2luaXQoCistICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLT5vZmZzZXRfaHQs IAorKyAgICAgICAgICAgICAgICAgICAgJmhhbmRsZS0+b2Zmc2V0X2h0LAorICAgICAgICAgICAg ICAgICAgICAgR0xPQlVTX1hJT19NT0RFX0VfT0ZGU0VUX0hUX1NJWkUsCisgICAgICAgICAgICAg ICAgICAgICBnbG9idXNfbF94aW9fbW9kZV9lX2hhc2h0YWJsZV9vZmZzZXRfaGFzaCwKKyAgICAg ICAgICAgICAgICAgICAgIGdsb2J1c19sX3hpb19tb2RlX2VfaGFzaHRhYmxlX29mZnNldF9rZXll cSk7CitAQCAtMTk1Myw3ICsxOTUzLDcgQEAgZ2xvYnVzX2xfeGlvX21vZGVfZV9vcGVuKAorICAg ICAgICAgaWYgKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgIHsKKyAgICAgICAg ICAgICBnbG9idXNfbF94aW9fbW9kZV9lX3NhdmVfZXJyb3IoaGFuZGxlLCByZXN1bHQpOworLSAg ICAgICAgICAgIGdvdG8gZXJyb3Jfc2VydmVyX29wZW47IAorKyAgICAgICAgICAgIGdvdG8gZXJy b3Jfc2VydmVyX29wZW47CisgICAgICAgICB9CisgICAgIH0KKyAgICAgR2xvYnVzWElPTW9kZUVE ZWJ1Z0V4aXQoKTsKK0BAIC0xOTYxLDcgKzE5NjEsNyBAQCBnbG9idXNfbF94aW9fbW9kZV9lX29w ZW4oCisgCisgZXJyb3Jfb3Blbl9uZXdfc3RyZWFtOgorIGVycm9yX2NvbnRhY3RfaW5mb190b19z dHJpbmc6CistICAgIGdsb2J1c19sX3hpb19tb2RlX2VfaGFuZGxlX2Rlc3Ryb3koaGFuZGxlKTsg ICAgCisrICAgIGdsb2J1c19sX3hpb19tb2RlX2VfaGFuZGxlX2Rlc3Ryb3koaGFuZGxlKTsKKyBl cnJvcl9oYW5kbGVfY3JlYXRlOgorIGVycm9yX3NlcnZlcl9vcGVuOgorICAgICBHbG9idXNYSU9N b2RlRURlYnVnRXhpdFdpdGhFcnJvcigpOworQEAgLTIwMTEsNyArMjAxMSw3IEBAIGdsb2J1c19s X3hpb19tb2RlX2VfcmVhZF9jYigKKyAgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdXNlcl9hcmcpCisgeworICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAg ICAgICByZXMgPSByZXN1bHQ7CistICAgIGdsb2J1c19sX3hpb19tb2RlX2VfY29ubmVjdGlvbl9o YW5kbGVfdCAqICAgICAgCisrICAgIGdsb2J1c19sX3hpb19tb2RlX2VfY29ubmVjdGlvbl9oYW5k bGVfdCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rp b25faGFuZGxlOworICAgICBnbG9idXNfbF94aW9fbW9kZV9lX2hhbmRsZV90ICogICAgICBoYW5k bGU7CisgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgIGVvZjsKK0BAIC0y MDI1LDIwICsyMDI1LDIwIEBAIGdsb2J1c19sX3hpb19tb2RlX2VfcmVhZF9jYigKKyAgICAgY29u bmVjdGlvbl9oYW5kbGUgPSAoZ2xvYnVzX2xfeGlvX21vZGVfZV9jb25uZWN0aW9uX2hhbmRsZV90 ICopIHVzZXJfYXJnOworICAgICBvcCA9IGNvbm5lY3Rpb25faGFuZGxlLT5yZXF1ZXN0b3ItPm9w OworICAgICBnbG9idXNfeGlvX29wZXJhdGlvbl9kaXNhYmxlX2NhbmNlbChvcCk7CistICAgIGhh bmRsZSA9IGNvbm5lY3Rpb25faGFuZGxlLT5tb2RlX2VfaGFuZGxlOyAKKysgICAgaGFuZGxlID0g Y29ubmVjdGlvbl9oYW5kbGUtPm1vZGVfZV9oYW5kbGU7CisgICAgIGdsb2J1c19maWZvX2luaXQo JnJlcXVlc3Rvcl9xKTsKKyAgICAgb2Zmc2V0ID0gY29ubmVjdGlvbl9oYW5kbGUtPm91dHN0YW5k aW5nX2RhdGFfb2Zmc2V0OworICAgICBpZiAoY29ubmVjdGlvbl9oYW5kbGUtPmlvdmVjX2luZGV4 ICE9IC0xKQorICAgICB7CistICAgICAgICBpb3ZlY1tjb25uZWN0aW9uX2hhbmRsZS0+aW92ZWNf aW5kZXhdLmlvdl9sZW4gPSAKKysgICAgICAgIGlvdmVjW2Nvbm5lY3Rpb25faGFuZGxlLT5pb3Zl Y19pbmRleF0uaW92X2xlbiA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbm5lY3Rpb25faGFuZGxlLT5pb3ZlY19pbmRleF9sZW47CisgICAgICAgICBjb25uZWN0 aW9uX2hhbmRsZS0+aW92ZWNfaW5kZXggPSAtMTsKKyAgICAgfQorLSAgICBnbG9idXNfbXV0ZXhf bG9jaygmaGFuZGxlLT5tdXRleCk7IAorKyAgICBnbG9idXNfbXV0ZXhfbG9jaygmaGFuZGxlLT5t dXRleCk7CisgICAgIGdsb2J1c19tZW1vcnlfcHVzaF9ub2RlKAorICAgICAgICAgJmhhbmRsZS0+ cmVxdWVzdG9yX21lbW9yeSwgKHZvaWQqKWNvbm5lY3Rpb25faGFuZGxlLT5yZXF1ZXN0b3IpOwor ICAgICBpZiAocmVzdWx0ID09IEdMT0JVU19TVUNDRVNTKQorLSAgICB7ICAgIAorKyAgICB7Cisg ICAgICAgICBjb25uZWN0aW9uX2hhbmRsZS0+b3V0c3RhbmRpbmdfZGF0YV9sZW4gLT0gbmJ5dGVz OworICAgICAgICAgaWYgKGNvbm5lY3Rpb25faGFuZGxlLT5vdXRzdGFuZGluZ19kYXRhX2xlbiA+ IDApCisgICAgICAgICB7CitAQCAtMjA0Niw3ICsyMDQ2LDcgQEAgZ2xvYnVzX2xfeGlvX21vZGVf ZV9yZWFkX2NiKAorICAgICAgICAgICAgIHJlcXVlc3RvciA9IGdsb2J1c19sX3hpb19tb2RlX2Vf cHJvY2Vzc19vdXRzdGFuZGluZ19kYXRhKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9oYW5kbGUpOworICAgICAgICAg fQorLSAgICAgICAgZWxzZSBpZiAoY29ubmVjdGlvbl9oYW5kbGUtPmVvZCkgCisrICAgICAgICBl bHNlIGlmIChjb25uZWN0aW9uX2hhbmRsZS0+ZW9kKQorICAgICAgICAgeworICAgICAgICAgICAg IGVvZiA9IGdsb2J1c19sX3hpb19tb2RlX2VfcHJvY2Vzc19lb2QoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uX2hhbmRsZSwgJnJlcXVlc3Rv cl9xKTsKK0BAIC0yMDgwLDcgKzIwODAsNyBAQCBnbG9idXNfbF94aW9fbW9kZV9lX3JlYWRfY2Io CisgICAgICAgICB9CisgICAgICAgICBnb3RvIGVycm9yOworICAgICB9CistICAgIGdsb2J1c19t dXRleF91bmxvY2soJmhhbmRsZS0+bXV0ZXgpOyAKKysgICAgZ2xvYnVzX211dGV4X3VubG9jaygm aGFuZGxlLT5tdXRleCk7CisgICAgIGdsb2J1c194aW9fZHJpdmVyX2RhdGFfZGVzY3JpcHRvcl9j bnRsKAorICAgICAgICAgICAgICAgICAgICAgICAgIG9wLAorICAgICAgICAgICAgICAgICAgICAg ICAgIE5VTEwsCitAQCAtMjEwOSw3ICsyMTA5LDcgQEAgZ2xvYnVzX2xfeGlvX21vZGVfZV9yZWFk X2NiKAorIAorIGVycm9yOgorICAgICBnbG9idXNfbF94aW9fbW9kZV9lX3NhdmVfZXJyb3IoaGFu ZGxlLCByZXN1bHQpOworLSAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZoYW5kbGUtPm11dGV4KTsg CisrICAgIGdsb2J1c19tdXRleF91bmxvY2soJmhhbmRsZS0+bXV0ZXgpOworICAgICB3aGlsZSAo IWdsb2J1c19maWZvX2VtcHR5KCZyZXF1ZXN0b3JfcSkpCisgICAgIHsKKyAgICAgICAgIHJlcXVl c3RvciA9IChnbG9idXNfaV94aW9fbW9kZV9lX3JlcXVlc3Rvcl90KikKK0BAIC0yMTMxLDcgKzIx MzEsNyBAQCBnbG9idXNfaV94aW9fbW9kZV9lX3JlZ2lzdGVyX3JlYWQoCisgICAgIGdsb2J1c19s X3hpb19tb2RlX2VfY29ubmVjdGlvbl9oYW5kbGVfdCAqCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faGFuZGxlKQorIHsKKy0gICAgZ2xvYnVzX3Np emVfdCAgICAgICAgICAgICAgICAgICAgICAgaW92ZWNfbGVuOyAgICAKKysgICAgZ2xvYnVzX3Np emVfdCAgICAgICAgICAgICAgICAgICAgICAgaW92ZWNfbGVuOworICAgICBnbG9idXNfcmVzdWx0 X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAgIGdsb2J1c194aW9faW92ZWNfdCAq ICAgICAgICAgICAgICAgIGlvdmVjOworICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpb3ZlY19jb3VudDsKK0BAIC0yMTQxLDE0ICsyMTQxLDE0IEBAIGdsb2J1c19pX3hp b19tb2RlX2VfcmVnaXN0ZXJfcmVhZCgKKyAgICAgaW92ZWMgPSBjb25uZWN0aW9uX2hhbmRsZS0+ cmVxdWVzdG9yLT5pb3ZlYzsKKyAgICAgaW92ZWNfY291bnQgPSBjb25uZWN0aW9uX2hhbmRsZS0+ cmVxdWVzdG9yLT5pb3ZlY19jb3VudDsKKyAgICAgR2xvYnVzWElPVXRpbElvdlRvdGFsTGVuZ3Ro KGlvdmVjX2xlbiwgaW92ZWMsIGlvdmVjX2NvdW50KTsKKy0gICAgLyogCistICAgICAqIFVwdG8g aW92ZWNfbGVuIGFtb3VudCBvZiBkYXRhIHdvdWxkIGJlIHJlYWQgZnJvbSB0aGUgY2hhbm5lbC4g SWYgCisrICAgIC8qCisrICAgICAqIFVwdG8gaW92ZWNfbGVuIGFtb3VudCBvZiBkYXRhIHdvdWxk IGJlIHJlYWQgZnJvbSB0aGUgY2hhbm5lbC4gSWYKKyAgICAgICogaW92ZWNfbGVuID4gb3V0c3Rh bmRpbmdfZGF0YV9sZW4sIHRoaXMgcmVhZCBtaWdodCBwb3NzaWJseSBnZXQgdGhlIG5leHQKKyAg ICAgICogaGVhZGVyIHRoYXQgaGFzIGFycml2ZWQgb24gdGhpcyBjaGFubmVsLiBTbyBJIG1vZGlm eSBpb3ZlYyAoYW5kIGxhdGVyCisgICAgICAqIHJlc3RvcmUgaW4gdGhlIHJlYWRfY2IpIHN1Y2gg dGhhdCB0aGUgYW1vdW50IG9mIGRhdGEgcmVhZCB3b3VsZCBiZQorICAgICAgKiBtaW4ob3V0c3Rh bmRpbmdfZGF0YV9sZW4sIGlvdmVjX2xlbikKKyAgICAgICovCistICAgIGlmIChjb25uZWN0aW9u X2hhbmRsZS0+b3V0c3RhbmRpbmdfZGF0YV9sZW4gPCBpb3ZlY19sZW4pIAorKyAgICBpZiAoY29u bmVjdGlvbl9oYW5kbGUtPm91dHN0YW5kaW5nX2RhdGFfbGVuIDwgaW92ZWNfbGVuKQorICAgICB7 CisgICAgICAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgIHNpemUgPSAwOworICAg ICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpOworQEAgLTIxNjgsNyArMjE2 OCw3IEBAIGdsb2J1c19pX3hpb19tb2RlX2VfcmVnaXN0ZXJfcmVhZCgKKyAgICAgfQorICAgICBy ZXN1bHQgPSBnbG9idXNfeGlvX3JlZ2lzdGVyX3JlYWR2KAorICAgICAgICAgICAgICAgICBjb25u ZWN0aW9uX2hhbmRsZS0+eGlvX2hhbmRsZSwKKy0gICAgICAgICAgICAgICAgKGdsb2J1c194aW9f aW92ZWNfdCopaW92ZWMsIAorKyAgICAgICAgICAgICAgICAoZ2xvYnVzX3hpb19pb3ZlY190Kilp b3ZlYywKKyAgICAgICAgICAgICAgICAgaW92ZWNfY291bnQsCisgICAgICAgICAgICAgICAgIGlv dmVjX2xlbiwKKyAgICAgICAgICAgICAgICAgTlVMTCwKK0BAIC0yMTc2LDcgKzIxNzYsNyBAQCBn bG9idXNfaV94aW9fbW9kZV9lX3JlZ2lzdGVyX3JlYWQoCisgICAgICAgICAgICAgICAgIGNvbm5l Y3Rpb25faGFuZGxlKTsKKyAgICAgR2xvYnVzWElPTW9kZUVEZWJ1Z0V4aXQoKTsKKyAgICAgcmV0 dXJuIHJlc3VsdDsKKy19ICAgICAgICAgICAgICAgICAgICAgICAgCisrfQorIAorIAorIC8qIGNh bGxlZCBsb2NrZWQgKi8KK0BAIC0yMTg3LDcgKzIxODcsNyBAQCBnbG9idXNfbF94aW9fbW9kZV9l X3Jlc2V0X2Nvbm5lY3Rpb25zKAorIHsKKyAgICAgZ2xvYnVzX2xfeGlvX21vZGVfZV9jb25uZWN0 aW9uX2hhbmRsZV90ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29ubmVjdGlvbl9oYW5kbGU7CistICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAg ICAgIHJlc3VsdDsgCisrICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJl c3VsdDsKKyAgICAgR2xvYnVzWElPTmFtZShnbG9idXNfbF94aW9fbW9kZV9lX3Jlc2V0X2Nvbm5l Y3Rpb25zKTsKKyAgICAgR2xvYnVzWElPTW9kZUVEZWJ1Z0VudGVyKCk7CisgICAgIGhhbmRsZS0+ ZW9kX2NvdW50ID0gLTE7CitAQCAtMjI3OCwxNyArMjI3OCwxNyBAQCBnbG9idXNfbF94aW9fbW9k ZV9lX3JlYWQoCisgICAgICAgICBjYXNlIEdMT0JVU19YSU9fTU9ERV9FX0VPRl9SRUNFSVZFRDoK KyAgICAgICAgICAgICBnbG9idXNfeGlvX2RyaXZlcl9zZXRfZW9mX3JlY2VpdmVkKG9wKTsKKyAg ICAgICAgICAgICBoYW5kbGUtPnN0YXRlID0gR0xPQlVTX1hJT19NT0RFX0VfRU9GX0RFTElWRVJF RDsKKy0JICAgIGdsb2J1c19tZW1vcnlfcHVzaF9ub2RlKAorLQkJCSZoYW5kbGUtPnJlcXVlc3Rv cl9tZW1vcnksICh2b2lkKilyZXF1ZXN0b3IpOworKyAgICAgICAgICAgIGdsb2J1c19tZW1vcnlf cHVzaF9ub2RlKAorKyAgICAgICAgICAgICAgICAgICAgICAgICZoYW5kbGUtPnJlcXVlc3Rvcl9t ZW1vcnksICh2b2lkKilyZXF1ZXN0b3IpOworICAgICAgICAgICAgIHJlc3VsdCA9IEdsb2J1c1hJ T0Vycm9yRU9GKCk7CisgICAgICAgICAgICAgZmluaXNoID0gR0xPQlVTX1RSVUU7CisgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICBjYXNlIEdMT0JVU19YSU9fTU9ERV9FX0VPRl9ERUxJVkVS RUQ6CistICAgICAgICAgICAgaWYgKGdsb2J1c194aW9fZHJpdmVyX2VvZl9yZWNlaXZlZChvcCkg fHwgCisrICAgICAgICAgICAgaWYgKGdsb2J1c194aW9fZHJpdmVyX2VvZl9yZWNlaXZlZChvcCkg fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5jb25u ZWN0aW9uX2NvdW50ID09IDApCisgICAgICAgICAgICAgeworLQkgICAgICAgIGdsb2J1c19tZW1v cnlfcHVzaF9ub2RlKAorLQkJCSZoYW5kbGUtPnJlcXVlc3Rvcl9tZW1vcnksICh2b2lkKilyZXF1 ZXN0b3IpOworKyAgICAgICAgICAgICAgICBnbG9idXNfbWVtb3J5X3B1c2hfbm9kZSgKKysgICAg ICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLT5yZXF1ZXN0b3JfbWVtb3J5LCAodm9pZCopcmVx dWVzdG9yKTsKKyAgICAgICAgICAgICAgICAgcmVzdWx0ID0gR2xvYnVzWElPRXJyb3JFT0YoKTsK KyAgICAgICAgICAgICAgICAgZmluaXNoID0gR0xPQlVTX1RSVUU7CisgICAgICAgICAgICAgICAg IGJyZWFrOworQEAgLTIyOTYsNyArMjI5Niw3IEBAIGdsb2J1c19sX3hpb19tb2RlX2VfcmVhZCgK KyAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBnbG9i dXNfbF94aW9fbW9kZV9lX3Jlc2V0X2Nvbm5lY3Rpb25zKGhhbmRsZSk7CistICAgICAgICAgICAg ICAgIC8qIAorKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgKiBjb25uZWN0 aW9uX3Egd2lsbCBiZSBlbXB0eSBhdCB0aGlzIHBvaW50LiBJIGxldCB0aGlzCisgICAgICAgICAg ICAgICAgICAqIGZhbGwgdGhyb3VnaCB0byBlbnF1ZXVlIHRoZSByZXF1ZXN0IGluIHRoZSBpb19x CisgICAgICAgICAgICAgICAgICAqLworQEAgLTIzMDksMjkgKzIzMDksMjkgQEAgZ2xvYnVzX2xf eGlvX21vZGVfZV9yZWFkKAorICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBlbHNlCisgICAg ICAgICAgICAgeworLSAgICAgICAgICAgICAgICBnbG9idXNfbF94aW9fbW9kZV9lX2Nvbm5lY3Rp b25faGFuZGxlX3QgKiAgICAgIAorKyAgICAgICAgICAgICAgICBnbG9idXNfbF94aW9fbW9kZV9l X2Nvbm5lY3Rpb25faGFuZGxlX3QgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faGFuZGxlOworICAgICAgICAgICAgICAgICBpZiAo d2FpdF9mb3IgPT0gMCkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg Z2xvYnVzX21lbW9yeV9wdXNoX25vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmaGFuZGxlLT5yZXF1ZXN0b3JfbWVtb3J5LCAodm9pZCopcmVxdWVzdG9yKTsKKy0gICAgICAg ICAgICAgICAgICAgIGNvbm5lY3Rpb25faGFuZGxlID0gCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoZ2xvYnVzX2xfeGlvX21vZGVfZV9jb25uZWN0aW9uX2hhbmRsZV90KikgCisr ICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uX2hhbmRsZSA9CisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoZ2xvYnVzX2xfeGlvX21vZGVfZV9jb25uZWN0aW9uX2hhbmRsZV90 KikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNfZmlmb19kZXF1 ZXVlKCZoYW5kbGUtPmNvbm5lY3Rpb25fcSk7CisgICAgICAgICAgICAgICAgICAgICBnbG9idXNf aGFzaHRhYmxlX2luc2VydCgKKy0gICAgICAgICAgICAgICAgICAgICAgICAmaGFuZGxlLT5vZmZz ZXRfaHQsIAorLSAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopJmNvbm5lY3Rpb25faGFu ZGxlLT5vdXRzdGFuZGluZ19kYXRhX29mZnNldCwgCisrICAgICAgICAgICAgICAgICAgICAgICAg JmhhbmRsZS0+b2Zmc2V0X2h0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopJmNv bm5lY3Rpb25faGFuZGxlLT5vdXRzdGFuZGluZ19kYXRhX29mZnNldCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAodm9pZCAqKWNvbm5lY3Rpb25faGFuZGxlKTsKKyAgICAgICAgICAgICAgICAg ICAgIGRkLT5vZmZzZXQgPSBjb25uZWN0aW9uX2hhbmRsZS0+b3V0c3RhbmRpbmdfZGF0YV9vZmZz ZXQ7CisgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBHTE9CVVNfU1VDQ0VTUzsKKyAgICAg ICAgICAgICAgICAgICAgIGZpbmlzaCA9IEdMT0JVU19UUlVFOworICAgICAgICAgICAgICAgICB9 CistICAgICAgICAgICAgICAgIGVsc2UgCisrICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgaWYgKGhhbmRsZS0+YXR0ci0+b2Zmc2V0 X3JlYWRzKQorICAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAg IGNvbm5lY3Rpb25faGFuZGxlID0gCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Z2xvYnVzX2xfeGlvX21vZGVfZV9jb25uZWN0aW9uX2hhbmRsZV90KikgCisrICAgICAgICAgICAg ICAgICAgICAgICAgY29ubmVjdGlvbl9oYW5kbGUgPQorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGdsb2J1c19sX3hpb19tb2RlX2VfY29ubmVjdGlvbl9oYW5kbGVfdCopCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19oYXNodGFibGVfcmVt b3ZlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRs ZS0+b2Zmc2V0X2h0LCAmZGQtPm9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYg KCFjb25uZWN0aW9uX2hhbmRsZSkKK0BAIC0yMzQyLDggKzIzNDIsOCBAQCBnbG9idXNfbF94aW9f bW9kZV9lX3JlYWQoCisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAg Y29ubmVjdGlvbl9oYW5kbGUgPSAKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdsb2J1 c19sX3hpb19tb2RlX2VfY29ubmVjdGlvbl9oYW5kbGVfdCopIAorKyAgICAgICAgICAgICAgICAg ICAgICAgIGNvbm5lY3Rpb25faGFuZGxlID0KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGdsb2J1c19sX3hpb19tb2RlX2VfY29ubmVjdGlvbl9oYW5kbGVfdCopCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnbG9idXNfZmlmb19kZXF1ZXVlKCZoYW5kbGUtPmNvbm5lY3Rp b25fcSk7CisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICBjb25u ZWN0aW9uX2hhbmRsZS0+cmVxdWVzdG9yID0gcmVxdWVzdG9yOworQEAgLTI0MjgsOCArMjQyOCw4 IEBAIGdsb2J1c19sX3hpb19tb2RlX2Vfd3JpdGVfY2IoCisgICAgICAgICByZXF1ZXN0b3JfcmVz dWx0ID0gZ2xvYnVzX2lfeGlvX21vZGVfZV9yZWdpc3Rlcl93cml0ZSgKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faGFu ZGxlKTsKKyAgICAgICAgIGlmIChyZXF1ZXN0b3JfcmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQor LSAgICAgICAgeyAgIAorLSAgICAgICAgICAgIHJlcXVlc3Rvcl9vcCA9IHJlcXVlc3Rvci0+b3A7 ICAgIAorKyAgICAgICAgeworKyAgICAgICAgICAgIHJlcXVlc3Rvcl9vcCA9IHJlcXVlc3Rvci0+ b3A7CisgICAgICAgICAgICAgcmVxdWVzdG9yX29mZnNldCA9IGNvbm5lY3Rpb25faGFuZGxlLT5v dXRzdGFuZGluZ19kYXRhX29mZnNldDsKKyAgICAgICAgICAgICBmaW5pc2hfbmV4dCA9IEdMT0JV U19UUlVFOworICAgICAgICAgICAgIGdsb2J1c19tZW1vcnlfcHVzaF9ub2RlKAorQEAgLTI0NDIs MTAgKzI0NDIsMTAgQEAgZ2xvYnVzX2xfeGlvX21vZGVfZV93cml0ZV9jYigKKyAgICAgICAgIGlm IChoYW5kbGUtPnN0YXRlID09IEdMT0JVU19YSU9fTU9ERV9FX1NFTkRJTkdfRU9EKQorICAgICAg ICAgeworICAgICAgICAgICAgIGdsb2J1c19ieXRlX3QgICAgICAgICAgICAgICBkZXNjcmlwdG9y OworLSAgICAgICAgICAgIC8qIAorKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICogSSds bCBnZXQgdGhpcyBjYiB3aXRoIGVvZF9zZW50ID09IFRSVUUgZm9yIG9uZSBjb25uZWN0aW9uIGFs b25lCisgICAgICAgICAgICAgICogYW5kIEkgc2VuZCBFT0YgKGlmIG5lZWQgYmUpIG9uIHRoaXMg Y29ubmVjdGlvbiBhbG9uZS4gSWYgSSBkb24ndAorLSAgICAgICAgICAgICAqIG5lZWQgdG8gc2Vu ZCBFT0YgYW5kIGVvZHNfc2VudCA9PSBjb25uZWN0aW9uX2NvdW50LCBJIG5lZWQgdG8gCisrICAg ICAgICAgICAgICogbmVlZCB0byBzZW5kIEVPRiBhbmQgZW9kc19zZW50ID09IGNvbm5lY3Rpb25f Y291bnQsIEkgbmVlZCB0bworICAgICAgICAgICAgICAqIGZpbmlzaCB0aGUgd3JpdGUgKHRoYXQg aGFkIFNFTkRfRU9EIHNldCBvbiBkZCkKKyAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICBp ZiAoIWNvbm5lY3Rpb25faGFuZGxlLT5lb2QpCitAQCAtMjQ1OCw3ICsyNDU4LDcgQEAgZ2xvYnVz X2xfeGlvX21vZGVfZV93cml0ZV9jYigKKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3Jf cmVnaXN0ZXJfZW9kOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorLSAgICAg ICAgICAgIGVsc2UgCisrICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgY29ubmVjdGlvbl9oYW5kbGUtPmVvZCA9IEdMT0JVU19GQUxTRTsKKyAgICAgICAg ICAgICAgICAgaWYgKGhhbmRsZS0+ZW9kX2NvdW50ID4gLTEpCitAQCAtMjU1OCwxMyArMjU1OCwx MyBAQCBnbG9idXNfbF94aW9fbW9kZV9lX3dyaXRlX2hlYWRlcl9jYigKKyAgICAgZ2xvYnVzX211 dGV4X2xvY2soJmhhbmRsZS0+bXV0ZXgpOworICAgICBpZiAocmVzdWx0ID09IEdMT0JVU19TVUND RVNTKQorICAgICB7CistICAgICAgICAvKiAKKysgICAgICAgIC8qCisgICAgICAgICAgKiBpZiBo YW5kbGUtPmVvZF9jb3VudCAhPSAtMSwgdGhlbiByZWdpc3Rlcl9lb2Qgd2lsbCBiZSBjYWxsZWQg KGVpdGhlcgorLSAgICAgICAgICogaW4gaGVyZSBvciBpbiB3cml0ZV9jYikgdG8gc2VuZCBFT0Yg YW5kIGVvZHNfc2VudCB3aWxsIGJlIAorKyAgICAgICAgICogaW4gaGVyZSBvciBpbiB3cml0ZV9j YikgdG8gc2VuZCBFT0YgYW5kIGVvZHNfc2VudCB3aWxsIGJlCisgICAgICAgICAgKiBpbmNyZW1l bnRlZCBpbiBlb2RfY2IKKyAgICAgICAgICAqLworICAgICAgICAgaWYgKGhlYWRlci0+ZGVzY3Jp cHRvciAmIEdMT0JVU19YSU9fTU9ERV9FX0RBVEFfREVTQ1JJUFRPUl9FT0QgJiYKKy0gICAgICAg ICAgICBoYW5kbGUtPmVvZF9jb3VudCA9PSAtMSkgCisrICAgICAgICAgICAgaGFuZGxlLT5lb2Rf Y291bnQgPT0gLTEpCisgICAgICAgICB7CisgICAgICAgICAgICAgKytoYW5kbGUtPmVvZHNfc2Vu dDsKKyAgICAgICAgIH0KK0BAIC0yNTkwLDcgKzI1OTAsNyBAQCBnbG9idXNfbF94aW9fbW9kZV9l X3dyaXRlX2hlYWRlcl9jYigKKyAgICAgICAgIGVsc2UgaWYgKGhhbmRsZS0+ZW9kX2NvdW50ID4g LTEpCisgICAgICAgICB7CisgICAgICAgICAgICAgZ2xvYnVzX2J5dGVfdCAgICAgICAgICAgICAg IGRlc2NyaXB0b3I7CistICAgICAgICAgICAgLyogCisrICAgICAgICAgICAgLyoKKyAgICAgICAg ICAgICAgKiBoYW5kbGUtPmlvdmVjIGNhbiBiZSBOVUxMIG9ubHkgd2hlbiB0aGUgdXNlciBzZXRz IFNFTkRfRU9ECisgICAgICAgICAgICAgICogb24gdGhlIGRkLiBTbyBJIGp1c3Qgd3JvdGUgRU9E IG9uIHRoaXMgY2hhbm5lbCBhbmQgbm93IGkgY2hlY2sKKyAgICAgICAgICAgICAgKiB0byBzZWUg aWYgaSBuZWVkIHRvIHNlbmQgRU9GCitAQCAtMjYwMywxMyArMjYwMywxMyBAQCBnbG9idXNfbF94 aW9fbW9kZV9lX3dyaXRlX2hlYWRlcl9jYigKKyAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsK KyAgICAgICAgICAgICB9CisgICAgICAgICB9CistICAgICAgICBlbHNlIAorKyAgICAgICAgZWxz ZQorICAgICAgICAgeworICAgICAgICAgICAgIGdsb2J1c19maWZvX2VucXVldWUoJmhhbmRsZS0+ Y29ubmVjdGlvbl9xLCBjb25uZWN0aW9uX2hhbmRsZSk7CisgICAgICAgICAgICAgaWYgKGhhbmRs ZS0+ZW9kc19zZW50ID09IGhhbmRsZS0+Y29ubmVjdGlvbl9jb3VudCkKKyAgICAgICAgICAgICB7 CistICAgICAgICAgICAgICAgIC8qIAorLSAgICAgICAgICAgICAgICAgKiB1c2VyIGlzIGFsbG93 ZWQgdG8gZG8gYSB3cml0ZSB3aXRoIGJ1ZmZlciA9IE5VTEwgYW5kIAorKyAgICAgICAgICAgICAg ICAvKgorKyAgICAgICAgICAgICAgICAgKiB1c2VyIGlzIGFsbG93ZWQgdG8gZG8gYSB3cml0ZSB3 aXRoIGJ1ZmZlciA9IE5VTEwgYW5kCisgICAgICAgICAgICAgICAgICAqIFNFTkRfRU9EIHNldCBv biBkZAorICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgaGFuZGxlLT5zdGF0 ZSA9IEdMT0JVU19YSU9fTU9ERV9FX09QRU47CitAQCAtMjYxNywxNyArMjYxNywxNyBAQCBnbG9i dXNfbF94aW9fbW9kZV9lX3dyaXRlX2hlYWRlcl9jYigKKyAgICAgICAgICAgICAgICAgaGFuZGxl LT5hdHRyLT5lb2RfY291bnQgPSAtMTsKKyAgICAgICAgICAgICAgICAgaGFuZGxlLT5vZmZzZXQg PSAwOworICAgICAgICAgICAgICAgICBmaW5pc2ggPSBHTE9CVVNfVFJVRTsKKy0gICAgICAgICAg ICAgICAgLyogCisrICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAqIGhhbmRs ZS0+ZW9kX29mZnNldCBhbHNvIGhhcyBzYW1lIHZhbHVlLiBpZiBpIGhhdmUgdG8gZmluaXNoCisg ICAgICAgICAgICAgICAgICAqIGluIGVvZF9jYiwgY29ubmVjdGlvbl9oYW5kbGUtPm91dHN0YW5k aW5nX2RhdGFfb2Zmc2V0IGNhbnQKKy0gICAgICAgICAgICAgICAgICogYmUgdXNlZCBjb3ogaSBk b24ndCBrbm93IHdoaWNoIGNvbm5lY3Rpb25faGFuZGxlIGlzIAorKyAgICAgICAgICAgICAgICAg KiBiZSB1c2VkIGNveiBpIGRvbid0IGtub3cgd2hpY2ggY29ubmVjdGlvbl9oYW5kbGUgaXMKKyAg ICAgICAgICAgICAgICAgICogYXNzb2NpYXRlZCB3aXRoIHRoZSB1c2VyX3dyaXRlICh0aGF0IGhh ZCBTRU5EX0VPRCBzZXQpLgorICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAg b2Zmc2V0ID0gY29ubmVjdGlvbl9oYW5kbGUtPm91dHN0YW5kaW5nX2RhdGFfb2Zmc2V0OworICAg ICAgICAgICAgICAgICAvKiB0aGUgb3AgaXMgc3RvcmVkIGluIGhhbmRsZS0+b3V0c3RhbmRpbmdf b3AgdG9vICovCisgICAgICAgICAgICAgICAgIG9wID0gY29ubmVjdGlvbl9oYW5kbGUtPnJlcXVl c3Rvci0+b3A7CisgICAgICAgICAgICAgICAgIGdsb2J1c19tZW1vcnlfcHVzaF9ub2RlKAorLSAg ICAgICAgICAgICAgICAgICAgJmhhbmRsZS0+cmVxdWVzdG9yX21lbW9yeSwgCisrICAgICAgICAg ICAgICAgICAgICAmaGFuZGxlLT5yZXF1ZXN0b3JfbWVtb3J5LAorICAgICAgICAgICAgICAgICAg ICAgKHZvaWQqKWNvbm5lY3Rpb25faGFuZGxlLT5yZXF1ZXN0b3IpOworICAgICAgICAgICAgIH0K KyAgICAgICAgIH0KK0BAIC0yNjY4LDcgKzI2NjgsNyBAQCBlcnJvcjoKKyBzdGF0aWMKKyBnbG9i dXNfcmVzdWx0X3QKKyBnbG9idXNfaV94aW9fbW9kZV9lX3JlZ2lzdGVyX3dyaXRlKAorLSAgICBn bG9idXNfbF94aW9fbW9kZV9lX2Nvbm5lY3Rpb25faGFuZGxlX3QgKiAgICAgIAorKyAgICBnbG9i dXNfbF94aW9fbW9kZV9lX2Nvbm5lY3Rpb25faGFuZGxlX3QgKgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uX2hhbmRsZSkKKyB7CisgICAgIGdsb2J1 c19sX3hpb19tb2RlX2VfaGFuZGxlX3QgKiAgICAgIGhhbmRsZTsKK0BAIC0yNjg2LDggKzI2ODYs OCBAQCBnbG9idXNfaV94aW9fbW9kZV9lX3JlZ2lzdGVyX3dyaXRlKAorICAgICBoZWFkZXJfc2l6 ZSA9IHNpemVvZihnbG9idXNfbF94aW9fbW9kZV9lX2hlYWRlcl90KTsKKyAgICAgbWVtc2V0KGhl YWRlciwgMCwgaGVhZGVyX3NpemUpOworICAgICBHbG9idXNYSU9VdGlsSW92VG90YWxMZW5ndGgo CistICAgICAgICAgICAgICAgIHNpemUsIAorLSAgICAgICAgICAgICAgICBjb25uZWN0aW9uX2hh bmRsZS0+cmVxdWVzdG9yLT5pb3ZlYywgCisrICAgICAgICAgICAgICAgIHNpemUsCisrICAgICAg ICAgICAgICAgIGNvbm5lY3Rpb25faGFuZGxlLT5yZXF1ZXN0b3ItPmlvdmVjLAorICAgICAgICAg ICAgICAgICBjb25uZWN0aW9uX2hhbmRsZS0+cmVxdWVzdG9yLT5pb3ZlY19jb3VudCk7CisgICAg IGdsb2J1c19pX3hpb19tb2RlX2VfaGVhZGVyX2VuY29kZShoZWFkZXItPmNvdW50LCBzaXplKTsK KyAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19kcml2ZXJfZGF0YV9kZXNjcmlwdG9yX2NudGwoCitA QCAtMjY5OSw3ICsyNjk5LDcgQEAgZ2xvYnVzX2lfeGlvX21vZGVfZV9yZWdpc3Rlcl93cml0ZSgK KyAgICAgeworICAgICAgICAgb2Zmc2V0ID0gaGFuZGxlLT5vZmZzZXQ7CisgICAgIH0KKy0gICAg aWYgKGhhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX1hJT19NT0RFX0VfU0VORElOR19FT0QgJiYgCisr ICAgIGlmIChoYW5kbGUtPnN0YXRlID09IEdMT0JVU19YSU9fTU9ERV9FX1NFTkRJTkdfRU9EICYm CisgICAgICAgICBnbG9idXNfZmlmb19lbXB0eSgmaGFuZGxlLT5pb19xKSkKKyAgICAgeworICAg ICAgICAgaGVhZGVyLT5kZXNjcmlwdG9yID0gR0xPQlVTX1hJT19NT0RFX0VfREFUQV9ERVNDUklQ VE9SX0VPRDsKK0BAIC0yNzEzLDggKzI3MTMsOCBAQCBnbG9idXNfaV94aW9fbW9kZV9lX3JlZ2lz dGVyX3dyaXRlKAorICAgICAgICAgaGFuZGxlLT5vZmZzZXQgPSBvZmZzZXQ7CisgICAgIH0KKyAg ICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19yZWdpc3Rlcl93cml0ZSgKKy0gICAgICAgICAgICAgICAg Y29ubmVjdGlvbl9oYW5kbGUtPnhpb19oYW5kbGUsIAorLSAgICAgICAgICAgICAgICAoZ2xvYnVz X2J5dGVfdCopaGVhZGVyLCAKKysgICAgICAgICAgICAgICAgY29ubmVjdGlvbl9oYW5kbGUtPnhp b19oYW5kbGUsCisrICAgICAgICAgICAgICAgIChnbG9idXNfYnl0ZV90KiloZWFkZXIsCisgICAg ICAgICAgICAgICAgIGhlYWRlcl9zaXplLAorICAgICAgICAgICAgICAgICBoZWFkZXJfc2l6ZSwK KyAgICAgICAgICAgICAgICAgR0xPQlVTX05VTEwsCitAQCAtMjcyMyw3ICsyNzIzLDcgQEAgZ2xv YnVzX2lfeGlvX21vZGVfZV9yZWdpc3Rlcl93cml0ZSgKKyAgICAgaWYgKHJlc3VsdCAhPSBHTE9C VVNfU1VDQ0VTUykKKyAgICAgeworICAgICAgICAgZ290byBlcnJvcjsKKy0gICAgfSAgICAgICAg ICAgICAgIAorKyAgICB9CisgICAgIGlmIChoZWFkZXItPmRlc2NyaXB0b3IgJiBHTE9CVVNfWElP X01PREVfRV9EQVRBX0RFU0NSSVBUT1JfRU9EKQorICAgICB7CisgICAgICAgICBjb25uZWN0aW9u X2hhbmRsZS0+ZW9kID0gR0xPQlVTX1RSVUU7CitAQCAtMjc1MywxMCArMjc1MywxMCBAQCBnbG9i dXNfbF94aW9fbW9kZV9lX3dyaXRlKAorIAorICAgICBHbG9idXNYSU9Nb2RlRURlYnVnRW50ZXIo KTsKKyAgICAgaGFuZGxlID0gKGdsb2J1c19sX3hpb19tb2RlX2VfaGFuZGxlX3QgKikgZHJpdmVy X3NwZWNpZmljX2hhbmRsZTsKKy0gICAgLyogCisrICAgIC8qCisgICAgICAqIE1vZGUgRSBpcyB1 bmlkaXJlY3Rpb25hbC4gU2VydmVyIGNhbiBvbmx5IHJlYWQgYW5kIGNsaWVudCBjYW4gb25seSB3 cml0ZQorICAgICAgKi8KKy0gICAgZ2xvYnVzX2Fzc2VydChoYW5kbGUtPnNlcnZlciA9PSBHTE9C VVNfTlVMTCk7IAorKyAgICBnbG9idXNfYXNzZXJ0KGhhbmRsZS0+c2VydmVyID09IEdMT0JVU19O VUxMKTsKKyAgICAgZGQgPSAoZ2xvYnVzX2xfeGlvX21vZGVfZV9hdHRyX3QgKikKKyAgICAgICAg ICAgICBnbG9idXNfeGlvX29wZXJhdGlvbl9nZXRfZGF0YV9kZXNjcmlwdG9yKG9wLCBHTE9CVVNf RkFMU0UpOworICAgICByZXF1ZXN0b3IgPSAoZ2xvYnVzX2lfeGlvX21vZGVfZV9yZXF1ZXN0b3Jf dCAqKQorQEAgLTI3ODIsOSArMjc4Miw5IEBAIGdsb2J1c19sX3hpb19tb2RlX2Vfd3JpdGUoCisg ICAgIHN3aXRjaCAoaGFuZGxlLT5zdGF0ZSkKKyAgICAgeworICAgICAgICAgY2FzZSBHTE9CVVNf WElPX01PREVfRV9PUEVOOgorLSAgICAgICAgICAgIC8qIAorKyAgICAgICAgICAgIC8qCisgICAg ICAgICAgICAgICogSSByZXNldCBlb2RzX3NlbnQgaGVyZSAoYW5kIG5vdCByaWdodCBhZnRlciBp IHNlbmQgYWxsIHRoZSBlb2RzKQorLSAgICAgICAgICAgICAqIGNveiBpIHVzZSAnZW9kc19zZW50 ID09IGNvbm5lY3Rpb25fY291bnQnIGluIGNsb3NlIHRvIGNoZWNrIGlmIAorKyAgICAgICAgICAg ICAqIGNveiBpIHVzZSAnZW9kc19zZW50ID09IGNvbm5lY3Rpb25fY291bnQnIGluIGNsb3NlIHRv IGNoZWNrIGlmCisgICAgICAgICAgICAgICogZW9kcyBoYXZlIGJlZW4gc2VudCBvciBub3QKKyAg ICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICBpZiAoaGFuZGxlLT5lb2RzX3NlbnQgPT0gaGFu ZGxlLT5jb25uZWN0aW9uX2NvdW50KQorQEAgLTI4MTEsNyArMjgxMSw3IEBAIGdsb2J1c19sX3hp b19tb2RlX2Vfd3JpdGUoCisgICAgICAgICAgICAgaWYgKCFnbG9idXNfZmlmb19lbXB0eSgmaGFu ZGxlLT5jb25uZWN0aW9uX3EpKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgZ2xv YnVzX2xfeGlvX21vZGVfZV9jb25uZWN0aW9uX2hhbmRsZV90ICoKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faGFuZGxlOyAgICAKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faGFuZGxl OworICAgICAgICAgICAgICAgICBjb25uZWN0aW9uX2hhbmRsZSA9IChnbG9idXNfbF94aW9fbW9k ZV9lX2Nvbm5lY3Rpb25faGFuZGxlX3QgKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnbG9idXNfZmlmb19kZXF1ZXVlKCZoYW5kbGUtPmNvbm5lY3Rpb25fcSk7CisgICAg ICAgICAgICAgICAgIGNvbm5lY3Rpb25faGFuZGxlLT5yZXF1ZXN0b3IgPSByZXF1ZXN0b3I7CitA QCAtMjgyNyw3ICsyODI3LDcgQEAgZ2xvYnVzX2xfeGlvX21vZGVfZV93cml0ZSgKKyAgICAgICAg ICAgICAgICAgICAgIGRlc2NyaXB0b3IgPSBHTE9CVVNfWElPX01PREVfRV9EQVRBX0RFU0NSSVBU T1JfRU9EOworICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCFnbG9idXNfZmlmb19lbXB0eSgm aGFuZGxlLT5jb25uZWN0aW9uX3EpKQorICAgICAgICAgICAgICAgICAgICAgeworLSAgICAgICAg ICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faGFuZGxlID0gCisrICAgICAgICAgICAgICAgICAg ICAgICAgY29ubmVjdGlvbl9oYW5kbGUgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChnbG9idXNfbF94aW9fbW9kZV9lX2Nvbm5lY3Rpb25faGFuZGxlX3QgKikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9idXNfZmlmb19kZXF1ZXVlKCZoYW5k bGUtPmNvbm5lY3Rpb25fcSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfeGlv X21vZGVfZV9yZWdpc3Rlcl9lb2QoCitAQCAtMjgzNyw3ICsyODM3LDcgQEAgZ2xvYnVzX2xfeGlv X21vZGVfZV93cml0ZSgKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgZWxzZQorICAgICAg ICAgICAgIHsKKy0gICAgICAgICAgICAgICAgaWYgKGhhbmRsZS0+Y29ubmVjdGlvbl9jb3VudCA8 IAorKyAgICAgICAgICAgICAgICBpZiAoaGFuZGxlLT5jb25uZWN0aW9uX2NvdW50IDwKKyAgICAg ICAgICAgICAgICAgICAgIGhhbmRsZS0+YXR0ci0+bWF4X2Nvbm5lY3Rpb25fY291bnQpCisgICAg ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX3hp b19tb2RlX2Vfb3Blbl9uZXdfc3RyZWFtKAorQEAgLTI4OTcsOCArMjg5Nyw4IEBAIGdsb2J1c19s X3hpb19tb2RlX2VfY2xvc2VfY2IoCisgICAgICAgICBnb3RvIGVycm9yOworICAgICB9CisgICAg IGlmKGdsb2J1c19lcnJvcl9tYXRjaCgKKy0gICAgICAgICAgICAgICAgZ2xvYnVzX2Vycm9yX3Bl ZWsocmVzdWx0KSwgCistICAgICAgICAgICAgICAgIEdMT0JVU19YSU9fTU9EVUxFLCAKKysgICAg ICAgICAgICAgICAgZ2xvYnVzX2Vycm9yX3BlZWsocmVzdWx0KSwKKysgICAgICAgICAgICAgICAg R0xPQlVTX1hJT19NT0RVTEUsCisgICAgICAgICAgICAgICAgIEdMT0JVU19YSU9fRVJST1JfQ0FO Q0VMRUQpKQorICAgICB7CisgICAgICAgICArK2hhbmRsZS0+Y2xvc2VfY291bnQ7CitAQCAtMjkx NCw3ICsyOTE0LDcgQEAgZ2xvYnVzX2xfeGlvX21vZGVfZV9jbG9zZV9jYigKKyAgICAgICAgIGlm ICghZ2xvYnVzX2xpc3RfZW1wdHkoaGFuZGxlLT5jbG9zZV9saXN0KSkKKyAgICAgICAgIHsKKyAg ICAgICAgICAgICBnbG9idXNfbGlzdF9yZW1vdmUoCistICAgICAgICAgICAgICAgICZoYW5kbGUt PmNsb3NlX2xpc3QsIAorKyAgICAgICAgICAgICAgICAmaGFuZGxlLT5jbG9zZV9saXN0LAorICAg ICAgICAgICAgICAgICBnbG9idXNfbGlzdF9zZWFyY2goaGFuZGxlLT5jbG9zZV9saXN0LCB4aW9f aGFuZGxlKSk7CisgICAgICAgICB9CisgICAgIH0KK0BAIC0yOTczLDcgKzI5NzMsNyBAQCBnbG9i dXNfbF94aW9fbW9kZV9lX3dyaXRlX2VvZF9jYigKKyAgICAgZ2xvYnVzX2xfeGlvX21vZGVfZV9j b25uZWN0aW9uX2hhbmRsZV90ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29ubmVjdGlvbl9oYW5kbGU7CisgICAgIGdsb2J1c19sX3hpb19tb2RlX2VfaGFuZGxl X3QgKiAgICAgIGhhbmRsZTsKKy0gICAgZ2xvYnVzX2xfeGlvX21vZGVfZV9oZWFkZXJfdCAqICAg ICAgaGVhZGVyOyAKKysgICAgZ2xvYnVzX2xfeGlvX21vZGVfZV9oZWFkZXJfdCAqICAgICAgaGVh ZGVyOworICAgICBnbG9idXNfeGlvX29wZXJhdGlvbl90ICAgICAgICAgICAgICBvcDsKKyAgICAg Z2xvYnVzX29mZl90ICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OworICAgICBnbG9idXNf Ym9vbF90ICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2ggPSBHTE9CVVNfRkFMU0U7CitAQCAt Mjk5MSwxOCArMjk5MSwxOCBAQCBnbG9idXNfbF94aW9fbW9kZV9lX3dyaXRlX2VvZF9jYigKKyAg ICAgICAgIHJlcyA9IHJlc3VsdDsKKyAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgIH0KKy0gICAg KytoYW5kbGUtPmVvZHNfc2VudDsgCistICAgIC8qIAorLSAgICAgKiBJZiBDTE9TRSBpcyBzZXQg b24gaGVhZGVyLCB0aGVuIGl0IGltcGxpZXMgdGhhdCB1c2VyIGhhcyBjYWxsZWQgCistICAgICAq IGNsb3NlIGFuZCBJIGFsbG93IHVzZXJzIHRvIGNhbmNlbCBjbG9zZSB1bnRpbCBhbGwgdGhlIGNo YW5uZWxzIGFyZSAKKysgICAgKytoYW5kbGUtPmVvZHNfc2VudDsKKysgICAgLyoKKysgICAgICog SWYgQ0xPU0UgaXMgc2V0IG9uIGhlYWRlciwgdGhlbiBpdCBpbXBsaWVzIHRoYXQgdXNlciBoYXMg Y2FsbGVkCisrICAgICAqIGNsb3NlIGFuZCBJIGFsbG93IHVzZXJzIHRvIGNhbmNlbCBjbG9zZSB1 bnRpbCBhbGwgdGhlIGNoYW5uZWxzIGFyZQorICAgICAgKiBjbG9zZWQKKyAgICAgICovCisgICAg IGlmIChoZWFkZXItPmRlc2NyaXB0b3IgJiBHTE9CVVNfWElPX01PREVfRV9EQVRBX0RFU0NSSVBU T1JfQ0xPU0UpCisgICAgIHsKKyAgICAgICAgIC8qIEkgZG9uJ3QgcmVnaXN0ZXJfY2xvc2UsIGlm IHVzZXIgaGFzIGNhbmNlbGVkIHRoZSBjbG9zZSBhbHJlYWR5ICovCisgICAgICAgICBpZiAoIWds b2J1c19lcnJvcl9tYXRjaCgKKy0gICAgICAgICAgICAgICAgZ2xvYnVzX2Vycm9yX3BlZWsocmVz dWx0KSwgCistICAgICAgICAgICAgICAgIEdMT0JVU19YSU9fTU9EVUxFLCAKKysgICAgICAgICAg ICAgICAgZ2xvYnVzX2Vycm9yX3BlZWsocmVzdWx0KSwKKysgICAgICAgICAgICAgICAgR0xPQlVT X1hJT19NT0RVTEUsCisgICAgICAgICAgICAgICAgIEdMT0JVU19YSU9fRVJST1JfQ0FOQ0VMRUQp KQorICAgICAgICAgeworICAgICAgICAgICAgIHJlcyA9IGdsb2J1c194aW9fcmVnaXN0ZXJfY2xv c2UoCitAQCAtMzAxNiwxMyArMzAxNiwxMyBAQCBnbG9idXNfbF94aW9fbW9kZV9lX3dyaXRlX2Vv ZF9jYigKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgZ2xvYnVzX2xpc3RfaW5zZXJ0KAor ICAgICAgICAgICAgICAgICAgICAgICAgICZoYW5kbGUtPmNsb3NlX2xpc3QsIGNvbm5lY3Rpb25f aGFuZGxlLT54aW9faGFuZGxlKTsKKy0gICAgICAgICAgICAvKiAKKysgICAgICAgICAgICAvKgor ICAgICAgICAgICAgICAqIElmIGl0IHdhcyBjYW5jZWxlZCwgdGhlbiB0aGUgeGlvX2hhbmRsZSB3 b3VsZCBoYXZlIGJlZW4gcmVtb3ZlZAorICAgICAgICAgICAgICAqIGZyb20gdGhlIGVvZF9saXN0 IGJlZm9yZSB0aGUgY2FuY2VsaW5nIHRoZSB3cml0ZSBlb2QuIFNvIEkgZG8KKy0gICAgICAgICAg ICAgKiBub3QgaGF2ZSB0byB0aGlzIHJlbW92YWwgaW4gdGhlIGVsc2UgYmVsb3cuIAorKyAgICAg ICAgICAgICAqIG5vdCBoYXZlIHRvIHRoaXMgcmVtb3ZhbCBpbiB0aGUgZWxzZSBiZWxvdy4KKyAg ICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICBnbG9idXNfbGlzdF9yZW1vdmUoCistICAgICAg ICAgICAgICAgICZoYW5kbGUtPmVvZF9saXN0LCAKKysgICAgICAgICAgICAgICAgJmhhbmRsZS0+ ZW9kX2xpc3QsCisgICAgICAgICAgICAgICAgIGdsb2J1c19saXN0X3NlYXJjaCgKKyAgICAgICAg ICAgICAgICAgICAgICAgICBoYW5kbGUtPmVvZF9saXN0LCBjb25uZWN0aW9uX2hhbmRsZS0+eGlv X2hhbmRsZSkpOworICAgICAgICAgfQorQEAgLTMwMzksMTAgKzMwMzksMTAgQEAgZ2xvYnVzX2xf eGlvX21vZGVfZV93cml0ZV9lb2RfY2IoCisgICAgIH0KKyAgICAgZWxzZQorICAgICB7CistICAg ICAgICAvKiAKKysgICAgICAgIC8qCisgICAgICAgICAgKiBnZXR0aW5nIGhlcmUgaW1wbGllcyB0 aGF0IHJlZ2lzdGVyX2VvZCAoYXNzb2NpYXRlZCB3aXRoIHRoaXMgY2IpIGlzCisgICAgICAgICAg KiBjYWxsZWQgaW4gcmVzcG9uc2UgdG8gdGhlIGRkICdTRU5EX0VPRCcgb24gd3JpdGUKKy0gICAg ICAgICAqLyAKKysgICAgICAgICAqLworICAgICAgICAgaWYgKGhlYWRlci0+ZGVzY3JpcHRvciAm IEdMT0JVU19YSU9fTU9ERV9FX0RBVEFfREVTQ1JJUFRPUl9FT0YpCisgICAgICAgICB7CisgICAg ICAgICAgICAgaGFuZGxlLT5lb2Zfc2VudCA9IEdMT0JVU19UUlVFOworQEAgLTMwNTksMTcgKzMw NTksMTcgQEAgZ2xvYnVzX2xfeGlvX21vZGVfZV93cml0ZV9lb2RfY2IoCisgICAgICAgICAgICAg ZmluaXNoID0gR0xPQlVTX1RSVUU7CisgICAgICAgICB9CisgICAgICAgICBpZiAoIWdsb2J1c19l cnJvcl9tYXRjaCgKKy0gICAgICAgICAgICAgICAgZ2xvYnVzX2Vycm9yX3BlZWsocmVzdWx0KSwg CistICAgICAgICAgICAgICAgIEdMT0JVU19YSU9fTU9EVUxFLCAKKysgICAgICAgICAgICAgICAg Z2xvYnVzX2Vycm9yX3BlZWsocmVzdWx0KSwKKysgICAgICAgICAgICAgICAgR0xPQlVTX1hJT19N T0RVTEUsCisgICAgICAgICAgICAgICAgIEdMT0JVU19YSU9fRVJST1JfQ0FOQ0VMRUQpKQorICAg ICAgICAgeworICAgICAgICAgICAgIGdsb2J1c19saXN0X3JlbW92ZSgKKy0gICAgICAgICAgICAg ICAgJmhhbmRsZS0+ZW9kX2xpc3QsIAorKyAgICAgICAgICAgICAgICAmaGFuZGxlLT5lb2RfbGlz dCwKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2xpc3Rfc2VhcmNoKAorICAgICAgICAgICAgICAg ICAgICAgICAgIGhhbmRsZS0+ZW9kX2xpc3QsIGNvbm5lY3Rpb25faGFuZGxlLT54aW9faGFuZGxl KSk7CisgICAgICAgICB9CistICAgICAgICAKKy0gICAgfSAgICAgICAgICAgCisrCisrICAgIH0K KyAgICAgZ2xvYnVzX21lbW9yeV9wdXNoX25vZGUoJmhhbmRsZS0+aGVhZGVyX21lbW9yeSwgKHZv aWQqKWhlYWRlcik7CisgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmhhbmRsZS0+bXV0ZXgpOwor ICAgICBpZiAoZmluaXNoKQorQEAgLTMxNDMsNyArMzE0Myw3IEBAIGdsb2J1c19sX3hpb19tb2Rl X2VfcmVnaXN0ZXJfZW9kKAorICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgCisgZXJyb3I6 CistICAgIGdsb2J1c19tZW1vcnlfcHVzaF9ub2RlKCZoYW5kbGUtPmhlYWRlcl9tZW1vcnksICh2 b2lkKiloZWFkZXIpOyAgICAgICAgIAorKyAgICBnbG9idXNfbWVtb3J5X3B1c2hfbm9kZSgmaGFu ZGxlLT5oZWFkZXJfbWVtb3J5LCAodm9pZCopaGVhZGVyKTsKKyAgICAgR2xvYnVzWElPTW9kZUVE ZWJ1Z0V4aXRXaXRoRXJyb3IoKTsKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CitAQCAtMzE2MSw3 ICszMTYxLDcgQEAgZ2xvYnVzX2xfeGlvX21vZGVfZV9jbG9zZV9jb25uZWN0aW9ucygKKyAgICAg R2xvYnVzWElPTmFtZShnbG9idXNfbF94aW9fbW9kZV9lX2Nsb3NlX2Nvbm5lY3Rpb25zKTsKKyAK KyAgICAgR2xvYnVzWElPTW9kZUVEZWJ1Z0VudGVyKCk7CistICAgIC8qIAorKyAgICAvKgorICAg ICAgKiBoYW5kbGUtPmNvbm5lY3Rpb25fbGlzdCBjb250YWlucyBhbGwgdGhlIGNvbm5lY3Rpb25z IHdoZXJlYXMgdGhlIHEncworICAgICAgKiAoY29ubmVjdGlvbl9xLCBlb2RfcSBjb250YWluIG9u bHkgdGhvc2UgY29ubmVjdGlvbnMgdGhhdCBhcmUgZnJlZSAoaWRsZSkKKyAgICAgICovCitAQCAt MzE3MywxNyArMzE3MywxNyBAQCBnbG9idXNfbF94aW9fbW9kZV9lX2Nsb3NlX2Nvbm5lY3Rpb25z KAorICAgICAgICAgICAgICAgIGdsb2J1c19maWZvX3JlbW92ZSgmaGFuZGxlLT5jb25uZWN0aW9u X3EsIGNvbm5lY3Rpb25faGFuZGxlKTsKKyAgICAgICAgIGlmICghaWRsZV9jb25uZWN0aW9uX2hh bmRsZSkKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBpZGxlX2Nvbm5lY3Rpb25faGFuZGxlID0g CisrICAgICAgICAgICAgaWRsZV9jb25uZWN0aW9uX2hhbmRsZSA9CisgICAgICAgICAgICAgICAg ICAgICAoZ2xvYnVzX2xfeGlvX21vZGVfZV9jb25uZWN0aW9uX2hhbmRsZV90ICopCisgICAgICAg ICAgICAgICAgICAgICAgICBnbG9idXNfZmlmb19yZW1vdmUoJmhhbmRsZS0+ZW9kX3EsIGNvbm5l Y3Rpb25faGFuZGxlKTsKKy0gICAgICAgIAorKworICAgICAgICAgfQorICAgICAgICAgaWYgKGlk bGVfY29ubmVjdGlvbl9oYW5kbGUpCisgICAgICAgICB7CisgICAgICAgICAgICAgLyogY29ubmVj dGlvbl9oYW5kbGUgYW5kIGlkbGVfY29ubmVjdGlvbl9oYW5kbGUgYXJlIHNhbWUgaGVyZSAqLwor ICAgICAgICAgICAgIGdsb2J1c194aW9fcmVnaXN0ZXJfY2xvc2UoCistICAgICAgICAgICAgICAg IGNvbm5lY3Rpb25faGFuZGxlLT54aW9faGFuZGxlLCAKKy0gICAgICAgICAgICAgICAgTlVMTCwg CisrICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faGFuZGxlLT54aW9faGFuZGxlLAorKyAgICAg ICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICBnbG9idXNfbF94aW9fbW9kZV9lX2Ns b3NlX2NiLAorICAgICAgICAgICAgICAgICBjb25uZWN0aW9uX2hhbmRsZS0+bW9kZV9lX2hhbmRs ZSk7CisgICAgICAgICAgICAgZ2xvYnVzX2xpc3RfaW5zZXJ0KAorQEAgLTMyMTksNyArMzIxOSw3 IEBAIGdsb2J1c19sX3hpb19tb2RlX2VfY2xvc2UoCisgCisgICAgIEdsb2J1c1hJT01vZGVFRGVi dWdFbnRlcigpOworICAgICBoYW5kbGUgPSAoZ2xvYnVzX2xfeGlvX21vZGVfZV9oYW5kbGVfdCAq KSBkcml2ZXJfc3BlY2lmaWNfaGFuZGxlOworLSAgICBhdHRyID0gKGdsb2J1c19sX3hpb19tb2Rl X2VfYXR0cl90ICopIAorKyAgICBhdHRyID0gKGdsb2J1c19sX3hpb19tb2RlX2VfYXR0cl90ICop CisgICAgICAgICAgICAgICAgIGRyaXZlcl9hdHRyID8gZHJpdmVyX2F0dHIgOiBoYW5kbGUtPmF0 dHI7CisgICAgIHJlcXVlc3RvciA9IChnbG9idXNfaV94aW9fbW9kZV9lX3JlcXVlc3Rvcl90ICop CisgICAgICAgICAgICAgICAgICAgICBnbG9idXNfbWVtb3J5X3BvcF9ub2RlKCZoYW5kbGUtPnJl cXVlc3Rvcl9tZW1vcnkpOworQEAgLTMyNDQsNyArMzI0NCw3IEBAIGdsb2J1c19sX3hpb19tb2Rl X2VfY2xvc2UoCisgICAgICAgICBkZXNjcmlwdG9yID0gR0xPQlVTX1hJT19NT0RFX0VfREFUQV9E RVNDUklQVE9SX0NMT1NFOworICAgICAgICAgaGFuZGxlLT5zdGF0ZSA9IEdMT0JVU19YSU9fTU9E RV9FX0NMT1NJTkc7CisgCistICAgICAgICAvKiB0aGlzIGltcGxpZXMgZW9kcyBhcmUgbm90IHNl bnQgeWV0ICovIAorKyAgICAgICAgLyogdGhpcyBpbXBsaWVzIGVvZHMgYXJlIG5vdCBzZW50IHll dCAqLworICAgICAgICAgaWYgKGhhbmRsZS0+ZW9kc19zZW50ICE9IGhhbmRsZS0+Y29ubmVjdGlv bl9jb3VudCkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBkZXNjcmlwdG9yIHw9IEdMT0JVU19Y SU9fTU9ERV9FX0RBVEFfREVTQ1JJUFRPUl9FT0Q7CitAQCAtMzMwOCw3ICszMzA4LDcgQEAgZ2xv YnVzX2xfeGlvX21vZGVfZV9jbG9zZSgKKyAgICAgICAgIGdsb2J1c194aW9fZHJpdmVyX2Zpbmlz aGVkX2Nsb3NlKG9wLCBHTE9CVVNfU1VDQ0VTUyk7CisgICAgIH0KKyAgICAgR2xvYnVzWElPTW9k ZUVEZWJ1Z0V4aXQoKTsKKy0gICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOyAgICAgIAorKyAgICBy ZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgCisgZXJyb3JfcmVnaXN0ZXJfZW9kOgorIGVycm9yX29w ZXJhdGlvbl9jYW5jZWxlZDoKK0BAIC0zMzE3LDcgKzMzMTcsNyBAQCBlcnJvcl9vcGVyYXRpb25f Y2FuY2VsZWQ6CisgZXJyb3JfY2FuY2VsX2VuYWJsZToKKyAgICAgZ2xvYnVzX21lbW9yeV9wdXNo X25vZGUoJmhhbmRsZS0+cmVxdWVzdG9yX21lbW9yeSwgKHZvaWQqKXJlcXVlc3Rvcik7CisgICAg IEdsb2J1c1hJT01vZGVFRGVidWdFeGl0V2l0aEVycm9yKCk7CistICAgIHJldHVybiByZXN1bHQ7 IAorKyAgICByZXR1cm4gcmVzdWx0OworIH0KKyAKKyAKK0BAIC0zMzU5LDggKzMzNTksOCBAQCBn bG9idXNfbF94aW9fbW9kZV9lX2NudGwoCisgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAg ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgcmVzdWx0ID0gR2xvYnVzWElPRXJyb3JJbnZhbGlk Q29tbWFuZChjbWQpOworLSAgICAgICAgICAgIGdvdG8gZXJyb3I7ICAgICAKKy0gICAgfSAgIAor KyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisrICAgIH0KKyAgICAgR2xvYnVzWElPTW9kZUVEZWJ1 Z0V4aXQoKTsKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworIAorQEAgLTMzODMsMTQgKzMz ODMsMTQgQEAgZ2xvYnVzX2xfeGlvX21vZGVfZV9hdHRyX2luaXQoCisgICAgIC8qCisgICAgICAq ICBjcmVhdGUgYSBtb2RlX2UgYXR0ciBzdHJ1Y3R1cmUgYW5kIGludGlhbGl6ZSBpdHMgdmFsdWVz CisgICAgICAqLworLSAgICBhdHRyID0gKGdsb2J1c19sX3hpb19tb2RlX2VfYXR0cl90ICopIAor KyAgICBhdHRyID0gKGdsb2J1c19sX3hpb19tb2RlX2VfYXR0cl90ICopCisgICAgICAgICAgICAg ICAgIGdsb2J1c19tYWxsb2Moc2l6ZW9mKGdsb2J1c19sX3hpb19tb2RlX2VfYXR0cl90KSk7Cisg ICAgIGlmKCFhdHRyKQorICAgICB7CisgICAgICAgICByZXN1bHQgPSBHbG9idXNYSU9FcnJvck1l bW9yeSgiYXR0ciIpOworICAgICAgICAgZ290byBlcnJvcl9hdHRyOworICAgICB9CistICAgIG1l bWNweShhdHRyLCAmZ2xvYnVzX2xfeGlvX21vZGVfZV9hdHRyX2RlZmF1bHQsIAorKyAgICBtZW1j cHkoYXR0ciwgJmdsb2J1c19sX3hpb19tb2RlX2VfYXR0cl9kZWZhdWx0LAorICAgICAgICAgICAg ICAgICAgICAgICAgIHNpemVvZihnbG9idXNfbF94aW9fbW9kZV9lX2F0dHJfdCkpOworICAgICAq b3V0X2F0dHIgPSBhdHRyOworICAgICBHbG9idXNYSU9Nb2RlRURlYnVnRXhpdCgpOworQEAgLTM0 NTEsNyArMzQ1MSw3IEBAIGdsb2J1c19sX3hpb19tb2RlX2VfYXR0cl9jbnRsKAorICAgICAgICAg fQorICAgICAgICAgY2FzZSBHTE9CVVNfWElPX01PREVfRV9TRVRfTUFOVUFMX0VPREM6CisgICAg ICAgICAgICAgYXR0ci0+bWFudWFsX2VvZGMgPSB2YV9hcmcoYXAsIGdsb2J1c19ib29sX3QpOwor LSAgICAgICAgICAgIGJyZWFrOyAgICAgIAorKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg Y2FzZSBHTE9CVVNfWElPX01PREVfRV9HRVRfTUFOVUFMX0VPREM6CisgICAgICAgICB7CisgICAg ICAgICAgICAgZ2xvYnVzX2Jvb2xfdCAqIG1hbnVhbF9lb2RjX291dCA9IHZhX2FyZyhhcCwgZ2xv YnVzX2Jvb2xfdCopOworQEAgLTM0OTYsMTEgKzM0OTYsMTEgQEAgZ2xvYnVzX2xfeGlvX21vZGVf ZV9hdHRyX2NudGwoCisgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmVzdWx0ID0gR2xv YnVzWElPRXJyb3JJbnZhbGlkQ29tbWFuZChjbWQpOworICAgICAgICAgICAgZ290byBlcnJvcjsK Ky0gICAgfSAgIAorKyAgICB9CisgICAgIEdsb2J1c1hJT01vZGVFRGVidWdFeGl0KCk7CisgICAg IHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAKKy1lcnJvcjogIAorK2Vycm9yOgorICAgICBHbG9i dXNYSU9Nb2RlRURlYnVnRXhpdFdpdGhFcnJvcigpOworICAgICByZXR1cm4gcmVzdWx0OworIH0K K0BAIC0zNTE4LDcgKzM1MTgsNyBAQCBnbG9idXNfbF94aW9fbW9kZV9lX2F0dHJfY29weSgKKyAg ICAgR2xvYnVzWElPTmFtZShnbG9idXNfbF94aW9fbW9kZV9lX2F0dHJfY29weSk7CisgCisgICAg IEdsb2J1c1hJT01vZGVFRGVidWdFbnRlcigpOworLSAgICBkc3RfYXR0ciA9IChnbG9idXNfbF94 aW9fbW9kZV9lX2F0dHJfdCAqKSAKKysgICAgZHN0X2F0dHIgPSAoZ2xvYnVzX2xfeGlvX21vZGVf ZV9hdHRyX3QgKikKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX21hbGxvYyhzaXplb2YoZ2xvYnVz X2xfeGlvX21vZGVfZV9hdHRyX3QpKTsKKyAgICAgaWYoIWRzdF9hdHRyKQorICAgICB7CitAQCAt MzUyNiw3ICszNTI2LDcgQEAgZ2xvYnVzX2xfeGlvX21vZGVfZV9hdHRyX2NvcHkoCisgICAgICAg ICBnb3RvIGVycm9yX2RzdF9hdHRyOworICAgICB9CisgICAgIHNyY19hdHRyID0gKGdsb2J1c19s X3hpb19tb2RlX2VfYXR0cl90ICopIHNyYzsKKy0gICAgbWVtY3B5KGRzdF9hdHRyLCBzcmNfYXR0 ciwgc2l6ZW9mKGdsb2J1c19sX3hpb19tb2RlX2VfYXR0cl90KSk7IAorKyAgICBtZW1jcHkoZHN0 X2F0dHIsIHNyY19hdHRyLCBzaXplb2YoZ2xvYnVzX2xfeGlvX21vZGVfZV9hdHRyX3QpKTsKKyAg ICAgaWYoc3JjX2F0dHItPnN0YWNrICE9IE5VTEwpCisgICAgIHsKKyAgICAgICAgIGdsb2J1c194 aW9fc3RhY2tfY29weSgmZHN0X2F0dHItPnN0YWNrLCBzcmNfYXR0ci0+c3RhY2spOworZGlmZiAt LWdpdCBhL3hpby9zcmMvZ2xvYnVzX3hpb19kcml2ZXIuYyBiL3hpby9zcmMvZ2xvYnVzX3hpb19k cml2ZXIuYworaW5kZXggYTI2N2IwODA2Li4xODUwMzM5NGUgMTAwNjQ0CistLS0gYS94aW8vc3Jj L2dsb2J1c194aW9fZHJpdmVyLmMKKysrKyBiL3hpby9zcmMvZ2xvYnVzX3hpb19kcml2ZXIuYwor QEAgLTY0LDcgKzY0LDcgQEAgZ2xvYnVzX2xfeGlvX29wX3Jlc3RhcnRlZCgKKyAgICAgeworICAg ICAgICAgZ2xvYnVzX2lfeGlvX2hhbmRsZV9kZXN0cm95KGhhbmRsZSk7CisgICAgIH0KKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorKworICAgICBHbG9idXNYSU9EZWJ1Z0ludGVybmFsRXhpdCgp OworIH0KKyAKK0BAIC0xNTIsNyArMTUyLDcgQEAgZ2xvYnVzX2lfeGlvX3JlcGFzc19yZWFkKAor ICAgICByZXR1cm4gcmVzOworIH0KKyAKKy12b2lkIAorK3ZvaWQKKyBnbG9idXNfaV94aW9fcGFz c19mYWlsZWQoCisgICAgIGdsb2J1c19pX3hpb19vcF90ICogICAgICAgICAgICAgICAgIG9wLAor ICAgICBnbG9idXNfaV94aW9fY29udGV4dF9lbnRyeV90ICogICAgICBteV9jb250ZXh0LAorQEAg LTI0NCw3ICsyNDQsNyBAQCBnbG9idXNfaV94aW9faGFuZGxlX2Rlc3Ryb3koCisgICAgIEdsb2J1 c1hJT0RlYnVnSW50ZXJuYWxFeGl0KCk7CisgfQorIAorLS8qIAorKy8qCisgICogIGNhbGxlZCBp biB0aGUgY29udGV4dCBsb2NrCisgICovCisgdm9pZAorQEAgLTI2MCw3ICsyNjAsNyBAQCBnbG9i dXNfaV94aW9faGFuZGxlX2RlYygKKyAKKyAgICAgKmRlc3Ryb3lfaGFuZGxlID0gR0xPQlVTX0ZB TFNFOworIAorLSAgICBoYW5kbGUtPnJlZi0tOyAKKysgICAgaGFuZGxlLT5yZWYtLTsKKyAgICAg R2xvYnVzWElPRGVidWdQcmludGYoCisgICAgICAgICBHTE9CVVNfWElPX0RFQlVHX0lORk9fVkVS Qk9TRSwKKyAgICAgICAgIChfWElPU0woIltnbG9idXNfaV94aW9faGFuZGxlX2RlY10gOjogaGFu ZGxlIHJlZiBhdCAlZC5cbiIpLCBoYW5kbGUtPnJlZikpOworQEAgLTI5MSw4ICsyOTEsOCBAQCBn bG9idXNfaV94aW9faGFuZGxlX2RlYygKKyAgICAgR2xvYnVzWElPRGVidWdJbnRlcm5hbEV4aXQo KTsKKyB9CisgCistLyogCistICogY2FsbGVkIGxvY2tlZCAKKysvKgorKyAqIGNhbGxlZCBsb2Nr ZWQKKyAgKi8KKyB2b2lkCisgZ2xvYnVzX2lfeGlvX29wX2Rlc3Ryb3koCitAQCAtMzMzLDcgKzMz Myw3IEBAIGdsb2J1c19pX3hpb19vcF9kZXN0cm95KAorICAgICAgICAgICAgIG9wLT5lbnRyeVtj dHJdLmNsb3NlX2F0dHIgPSBOVUxMOworICAgICAgICAgfQorICAgICB9CistICAgIAorKworICAg ICBpZihvcC0+dXNlcl9vcGVuX3NiaikKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2ZyZWUob3At PnVzZXJfb3Blbl9zYmopOworQEAgLTM4MSw3ICszODEsNyBAQCBnbG9idXNfaV94aW9fZHJpdmVy X3Jlc3VtZV9vcCgKKyAgICAgICAgIGNhc2UgR0xPQlVTX1hJT19PUEVSQVRJT05fVFlQRV9XUklU RToKKyAgICAgICAgICAgICBnbG9idXNfbF94aW9fZHJpdmVyX29wX3dyaXRlX2tpY2tvdXQob3Ap OworICAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgCisrCisgICAgICAgICBjYXNlIEdMT0JV U19YSU9fT1BFUkFUSU9OX1RZUEVfQ0xPU0U6CisgICAgICAgICAgICAgZ2xvYnVzX2xfeGlvX2Ry aXZlcl9vcF9jbG9zZV9raWNrb3V0KG9wKTsKKyAgICAgICAgICAgICBicmVhazsKK0BAIC00NTYs NyArNDU2LDcgQEAgZ2xvYnVzX2lfeGlvX3dpbGxfYmxvY2tfY2IoCisgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICBHbG9idXNYSU9PcEluYyhvcCk7CisgICAgICAgICAgICAgICAgIGRl bGl2ZXJfdHlwZSA9ICpvcC0+ZW50cnlbbmR4XS5kZWxpdmVyX3R5cGU7CistICAgICAgICAgICAg ICAgICpvcC0+ZW50cnlbbmR4XS5kZWxpdmVyX3R5cGUgPSAKKysgICAgICAgICAgICAgICAgKm9w LT5lbnRyeVtuZHhdLmRlbGl2ZXJfdHlwZSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgR0xP QlVTX1hJT19PUEVSQVRJT05fVFlQRV9GSU5JU0hFRDsKKyAgICAgICAgICAgICAgICAgb3AtPmVu dHJ5W25keF0uZGVsaXZlcl90eXBlID0gTlVMTDsKKyAgICAgICAgICAgICB9CitAQCAtNTM1LDcg KzUzNSw3IEBAIGdsb2J1c19sX3hpb19kcml2ZXJfb3Bfd3JpdGVfa2lja291dCgKKyAgICAgR2xv YnVzSVhJT0NsZWFyQ2FuY2VsKG9wKTsKKyAKKyAgICAgLyoKKy0gICAgICogIGJlZm9yZSByZWxl YXNpbmcgdGhlIG9wIGJhY2sgdG8gdGhlIHVzZXIgd2UgY2FuIHNhZmVseSBzZXQgdGhpcyAKKysg ICAgICogIGJlZm9yZSByZWxlYXNpbmcgdGhlIG9wIGJhY2sgdG8gdGhlIHVzZXIgd2UgY2FuIHNh ZmVseSBzZXQgdGhpcworICAgICAgKiAgb3V0c2lkZSBvZiBhIG11dGV4LiAgT25jZSB0aGUgdXNl cnMgY2FsbGJjYWsgaXMgY2FsbGVkIHRoZSB2YWx1ZQorICAgICAgKiAgb24gdGhlIGxvY2FsIHN0 YWNrIG1heSBiZSBjaGFuZ2VkLCB0aGV1cyB0aGUgbWFnaWMuCisgICAgICAqLworQEAgLTU1NCwy MCArNTU0LDIwIEBAIGdsb2J1c19sX3hpb19kcml2ZXJfb3Bfd3JpdGVfa2lja291dCgKKyAKKyAg ICAgICAgIG15X29wLT5fb3BfZW50X2RhdGFfY2Iob3AsIEdsb2J1c1hJT09ialRvUmVzdWx0KG9w LT5jYWNoZWRfb2JqKSwKKyAgICAgICAgICAgICBteV9vcC0+X29wX2VudF9uYnl0ZXMsIG15X29w LT51c2VyX2FyZyk7CistICAgIAorKworICAgICAgICAgZ2xvYnVzX3RocmVhZF9ibG9ja2luZ19j YWxsYmFja19wb3AoJndiX25keCk7CisgICAgIH0KKyAgICAgZWxzZQorICAgICB7CisgICAgICAg ICBpZihteV9vcC0+X29wX2VudF9kYXRhX2NiID09IE5VTEwpCisgICAgICAgICB7CistICAgICAg ICAgICAgZ2xvYnVzX3hpb19kcml2ZXJfZmluaXNoZWRfd3JpdGUob3AsIAorLSAgICAgICAgICAg ICAgICBHbG9idXNYSU9PYmpUb1Jlc3VsdChvcC0+Y2FjaGVkX29iaiksIAorKyAgICAgICAgICAg IGdsb2J1c194aW9fZHJpdmVyX2ZpbmlzaGVkX3dyaXRlKG9wLAorKyAgICAgICAgICAgICAgICBH bG9idXNYSU9PYmpUb1Jlc3VsdChvcC0+Y2FjaGVkX29iaiksCisgICAgICAgICAgICAgICAgIG15 X29wLT5fb3BfZW50X25ieXRlcyk7CisgICAgICAgICB9CisgICAgICAgICBlbHNlCisgICAgICAg ICB7CistICAgICAgICAgICAgbXlfb3AtPl9vcF9lbnRfZGF0YV9jYihvcCwgCisrICAgICAgICAg ICAgbXlfb3AtPl9vcF9lbnRfZGF0YV9jYihvcCwKKyAgICAgICAgICAgICAgICAgR2xvYnVzWElP T2JqVG9SZXN1bHQob3AtPmNhY2hlZF9vYmopLAorICAgICAgICAgICAgICAgICBteV9vcC0+X29w X2VudF9uYnl0ZXMsIG15X29wLT51c2VyX2FyZyk7CisgICAgICAgICB9CitAQCAtNTc2LDggKzU3 Niw4IEBAIGdsb2J1c19sX3hpb19kcml2ZXJfb3Bfd3JpdGVfa2lja291dCgKKyAgICAgZ2xvYnVz X3hpb19kcml2ZXJfd3JpdGVfZGVsaXZlcmVkKG9wLCBuZHgsICZkZWxpdmVyX3R5cGUpOworIAor ICAgICBHbG9idXNYSU9EZWJ1Z0ludGVybmFsRXhpdCgpOworLX0gICAKKy0gICAKKyt9CisrCisg dm9pZAorIGdsb2J1c19sX3hpb19kcml2ZXJfb3BfcmVhZF9raWNrb3V0KAorICAgICB2b2lkICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2FyZykKK0BAIC02MDAsOSArNjAwLDkg QEAgZ2xvYnVzX2xfeGlvX2RyaXZlcl9vcF9yZWFkX2tpY2tvdXQoCisgICAgIGhhbmRsZSA9IG9w LT5fb3BfaGFuZGxlOworIAorICAgICBHbG9idXNJWElPQ2xlYXJDYW5jZWwob3ApOworLSAgICAK KysKKyAgICAgLyoKKy0gICAgICogIGJlZm9yZSByZWxlYXNpbmcgdGhlIG9wIGJhY2sgdG8gdGhl IHVzZXIgd2UgY2FuIHNhZmVseSBzZXQgdGhpcyAKKysgICAgICogIGJlZm9yZSByZWxlYXNpbmcg dGhlIG9wIGJhY2sgdG8gdGhlIHVzZXIgd2UgY2FuIHNhZmVseSBzZXQgdGhpcworICAgICAgKiAg b3V0c2lkZSBvZiBhIG11dGV4LiAgT25jZSB0aGUgdXNlcnMgY2FsbGJjYWsgaXMgY2FsbGVkIHRo ZSB2YWx1ZQorICAgICAgKiAgb24gdGhlIGxvY2FsIHN0YWNrIG1heSBiZSBjaGFuZ2VkLCB0aGV1 cyB0aGUgbWFnaWMuCisgICAgICAqLworQEAgLTYyMSwyMCArNjIxLDIwIEBAIGdsb2J1c19sX3hp b19kcml2ZXJfb3BfcmVhZF9raWNrb3V0KAorIAorICAgICAgICAgbXlfb3AtPl9vcF9lbnRfZGF0 YV9jYihvcCwgR2xvYnVzWElPT2JqVG9SZXN1bHQob3AtPmNhY2hlZF9vYmopLAorICAgICAgICAg ICAgIG15X29wLT5fb3BfZW50X25ieXRlcywgbXlfb3AtPnVzZXJfYXJnKTsKKy0gICAgCisrCisg ICAgICAgICBnbG9idXNfdGhyZWFkX2Jsb2NraW5nX2NhbGxiYWNrX3BvcCgmd2JfbmR4KTsKKyAg ICAgfQorICAgICBlbHNlCisgICAgIHsKKyAgICAgICAgIGlmKG15X29wLT5fb3BfZW50X2RhdGFf Y2IgPT0gTlVMTCkKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBnbG9idXNfeGlvX2RyaXZlcl9m aW5pc2hlZF9yZWFkKG9wLCAKKy0gICAgICAgICAgICAgICAgR2xvYnVzWElPT2JqVG9SZXN1bHQo b3AtPmNhY2hlZF9vYmopLCAKKysgICAgICAgICAgICBnbG9idXNfeGlvX2RyaXZlcl9maW5pc2hl ZF9yZWFkKG9wLAorKyAgICAgICAgICAgICAgICBHbG9idXNYSU9PYmpUb1Jlc3VsdChvcC0+Y2Fj aGVkX29iaiksCisgICAgICAgICAgICAgICAgIG15X29wLT5fb3BfZW50X25ieXRlcyk7CisgICAg ICAgICB9CisgICAgICAgICBlbHNlCisgICAgICAgICB7CistICAgICAgICAgICAgbXlfb3AtPl9v cF9lbnRfZGF0YV9jYihvcCwgCisrICAgICAgICAgICAgbXlfb3AtPl9vcF9lbnRfZGF0YV9jYihv cCwKKyAgICAgICAgICAgICAgICAgR2xvYnVzWElPT2JqVG9SZXN1bHQob3AtPmNhY2hlZF9vYmop LAorICAgICAgICAgICAgICAgICBteV9vcC0+X29wX2VudF9uYnl0ZXMsIG15X29wLT51c2VyX2Fy Zyk7CisgICAgICAgICB9CitAQCAtNjQzLDggKzY0Myw4IEBAIGdsb2J1c19sX3hpb19kcml2ZXJf b3BfcmVhZF9raWNrb3V0KAorICAgICBnbG9idXNfeGlvX2RyaXZlcl9yZWFkX2RlbGl2ZXJlZChv cCwgbmR4LCAmZGVsaXZlcl90eXBlKTsKKyAKKyAgICAgR2xvYnVzWElPRGVidWdJbnRlcm5hbEV4 aXQoKTsKKy19ICAgCistICAgCisrfQorKworIHZvaWQKKyBnbG9idXNfbF94aW9fZHJpdmVyX3B1 cmdlX3JlYWRfZW9mKAorICAgICBnbG9idXNfaV94aW9fY29udGV4dF9lbnRyeV90ICogICAgICBt eV9jb250ZXh0KQorQEAgLTY1NSw3ICs2NTUsNyBAQCBnbG9idXNfbF94aW9fZHJpdmVyX3B1cmdl X3JlYWRfZW9mKAorICAgICBHbG9idXNYSU9EZWJ1Z0ludGVybmFsRW50ZXIoKTsKKyAgICAgd2hp bGUoIWdsb2J1c19saXN0X2VtcHR5KG15X2NvbnRleHQtPmVvZl9vcF9saXN0KSkKKyAgICAgewor LSAgICAgICAgLyogd2UgY2FuIG9ubHkgZ2V0IGhlcmUgaWYgYSBlb2YgaGFzIGJlZW4gcmVjZWl2 ZWQgKi8gCisrICAgICAgICAvKiB3ZSBjYW4gb25seSBnZXQgaGVyZSBpZiBhIGVvZiBoYXMgYmVl biByZWNlaXZlZCAqLworICAgICAgICAgZ2xvYnVzX2Fzc2VydChteV9jb250ZXh0LT5zdGF0ZSA9 PQorICAgICAgICAgICAgIEdMT0JVU19YSU9fQ09OVEVYVF9TVEFURV9FT0ZfUkVDRUlWRUQgfHwK KyAgICAgICAgICAgICBteV9jb250ZXh0LT5zdGF0ZSA9PQorQEAgLTcyOCw3ICs3MjgsNyBAQCBn bG9idXNfaV94aW9fZHJpdmVyX3N0YXJ0X2Nsb3NlKAorICAgICAgICAgZ2xvYnVzX3hpb19kcml2 ZXJfZmluaXNoZWRfY2xvc2Uob3AsIHJlcyk7CisgICAgICAgICBteV9vcC0+aW5fcmVnaXN0ZXIg PSBHTE9CVVNfRkFMU0U7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmKChyZXMgPT0gR0xPQlVT X1NVQ0NFU1MgfHwgIWNhbl9mYWlsKSAmJiBteV9vcC0+cHJldl9uZHggPT0gMCkKKyAgICAgewor ICAgICAgICAgd2hpbGUob3AtPmZpbmlzaGVkX2RlbGF5ZWQpCitAQCAtNzQ2LDcgKzc0Niw3IEBA IGdsb2J1c19pX3hpb19kcml2ZXJfc3RhcnRfY2xvc2UoCisgICAgICAgICB7CisgICAgICAgICAg ICAgZ2xvYnVzX2lfeGlvX29wX2Rlc3Ryb3kob3AsICZkZXN0cm95X2hhbmRsZSk7CisgICAgICAg ICB9CistICAgICAgICAKKysKKyAgICAgICAgIGNvbnRleHQtPnJlZi0tOworICAgICAgICAgaWYo Y29udGV4dC0+cmVmID09IDApCisgICAgICAgICB7CitAQCAtNzYxLDcgKzc2MSw3IEBAIGdsb2J1 c19pX3hpb19kcml2ZXJfc3RhcnRfY2xvc2UoCisgICAgIH0KKyAgICAgaWYoZGVzdHJveV9jb250 ZXh0KQorICAgICB7CistICAgICAgICAvKiB0aGUgb25seSB3YXkgd2UnbGwgYmUgZGVzdHJveWlu ZyB0aGUgY29udGV4dCBpcyBpZiB0aGlzIHdhcyBhIAorKyAgICAgICAgLyogdGhlIG9ubHkgd2F5 IHdlJ2xsIGJlIGRlc3Ryb3lpbmcgdGhlIGNvbnRleHQgaXMgaWYgdGhpcyB3YXMgYQorICAgICAg ICAgICogZHJpdmVyIG9wIGFuZCB0aGUgaGFuZGxlIG5vIGxvbmdlciBleGlzdHMKKyAgICAgICAg ICAqLworICAgICAgICAgZ2xvYnVzX2Fzc2VydCghZGVzdHJveV9oYW5kbGUpOworQEAgLTgyMCwx OSArODIwLDE5IEBAIGdsb2J1c19sX3hpb19kcml2ZXJfb3BfYWNjZXB0X2tpY2tvdXQoCisgICAg IGdsb2J1c19pX3hpb19vcF90ICogICAgICAgICAgICAgICAgIG9wOworICAgICBnbG9idXNfaV94 aW9fb3BfZW50cnlfdCAqICAgICAgICAgICBteV9vcDsKKyAgICAgR2xvYnVzWElPTmFtZShnbG9i dXNfbF94aW9fZHJpdmVyX29wX2FjY2VwdF9raWNrb3V0KTsKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorKworICAgICBHbG9idXNYSU9EZWJ1Z0ludGVybmFsRW50ZXIoKTsKKyAgICAgb3AgPSAo Z2xvYnVzX2lfeGlvX29wX3QgKikgdXNlcl9hcmc7CistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK KysKKyAgICAgbXlfb3AgPSAmb3AtPmVudHJ5W29wLT5uZHggLSAxXTsKKyAgICAgb3AtPm5keCA9 IG15X29wLT5wcmV2X25keDsKKy0gICAgICAgICAgICAgICAgICAgICAgCisrCisgICAgIC8qIGRy aXZlcidzIGNhbid0IGNhbmNlbCBhY2NlcHQgb3BzIHlldCwgZG9udCBuZWVkIHRoaXMKKyAgICAg ICogdGhpcyBjYWxsIG9ubHkgd29ya3MgZm9yIHJlZ3VsYXIgb3BzLCBhbnl3YXkKKy0gICAgICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisrICAgICAqCisgICAgIEdsb2J1c0lYSU9DbGVhckNhbmNlbChv cCk7CisgICAgICAqLworLSAgICAgCisrCisgICAgIGlmKG15X29wLT5jYiAhPSBOVUxMKQorICAg ICB7CisgICAgICAgICBteV9vcC0+Y2IoCitAQCAtODYwLDcgKzg2MCw3IEBAIGdsb2J1c19sX3hp b19kcml2ZXJfb3Blbl9vcF9raWNrb3V0KAorICAgICBnbG9idXNfaV94aW9fb3BfdCAqICAgICAg ICAgICAgICAgICBvcDsKKyAgICAgZ2xvYnVzX3hpb19vcGVyYXRpb25fdHlwZV90ICAgICAgICAg ZGVsaXZlcl90eXBlOworICAgICBHbG9idXNYSU9OYW1lKGdsb2J1c19sX3hpb19kcml2ZXJfb3Bl bl9vcF9raWNrb3V0KTsKKy0gICAgCisrCisgICAgIEdsb2J1c1hJT0RlYnVnSW50ZXJuYWxFbnRl cigpOworIAorICAgICBvcCA9IChnbG9idXNfaV94aW9fb3BfdCAqKSB1c2VyX2FyZzsKK0BAIC04 OTEsMTIgKzg5MSwxMiBAQCBnbG9idXNfbF94aW9fZHJpdmVyX29wZW5fb3Bfa2lja291dCgKKyAg ICAgeworICAgICAgICAgaWYobXlfb3AtPmNiID09IE5VTEwpCisgICAgICAgICB7CistICAgICAg ICAgICAgZ2xvYnVzX3hpb19kcml2ZXJfZmluaXNoZWRfb3BlbihOVUxMLCBvcCwgCisrICAgICAg ICAgICAgZ2xvYnVzX3hpb19kcml2ZXJfZmluaXNoZWRfb3BlbihOVUxMLCBvcCwKKyAgICAgICAg ICAgICAgICAgR2xvYnVzWElPT2JqVG9SZXN1bHQob3AtPmNhY2hlZF9vYmopKTsKKyAgICAgICAg IH0KKyAgICAgICAgIGVsc2UKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBteV9vcC0+Y2Iob3As IAorKyAgICAgICAgICAgIG15X29wLT5jYihvcCwKKyAgICAgICAgICAgICAgICAgR2xvYnVzWElP T2JqVG9SZXN1bHQob3AtPmNhY2hlZF9vYmopLCBteV9vcC0+dXNlcl9hcmcpOworICAgICAgICAg fQorICAgICB9CitAQCAtOTIyLDE1ICs5MjIsMTUgQEAgZ2xvYnVzX2lfeGlvX2NvbnRleHRfZGVz dHJveSgKKyAgICAgZ2xvYnVzX2Fzc2VydCh4aW9fY29udGV4dC0+cmVmID09IDApOworIAorICAg ICBHbG9idXNYSU9EZWJ1Z1ByaW50ZigKKy0gICAgICAgIEdMT0JVU19YSU9fREVCVUdfSU5GT19W RVJCT1NFLCAKKy0gICAgICAgIChfWElPU0woIiAgY29udGV4dCBAIDB4JXg6IHJlZj0lZCBzaXpl PSVkXG4iKSwgCisrICAgICAgICBHTE9CVVNfWElPX0RFQlVHX0lORk9fVkVSQk9TRSwKKysgICAg ICAgIChfWElPU0woIiAgY29udGV4dCBAIDB4JXg6IHJlZj0lZCBzaXplPSVkXG4iKSwKKyAgICAg ICAgICAgICB4aW9fY29udGV4dCwgeGlvX2NvbnRleHQtPnJlZiwgeGlvX2NvbnRleHQtPnN0YWNr X3NpemUpKTsKKy0gICAgCisrCisgICAgIGZvcihjdHIgPSAwOyBjdHIgPCB4aW9fY29udGV4dC0+ c3RhY2tfc2l6ZTsgY3RyKyspCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19maWZvX2Rlc3Ryb3ko Jnhpb19jb250ZXh0LT5lbnRyeVtjdHJdLnBlbmRpbmdfcmVhZF9xdWV1ZSk7CisgICAgIH0KKy0g ICAgICAgIAorKworICAgICBnbG9idXNfbXV0ZXhfZGVzdHJveSgmeGlvX2NvbnRleHQtPm11dGV4 KTsKKyAgICAgZ2xvYnVzX211dGV4X2Rlc3Ryb3koJnhpb19jb250ZXh0LT5jYW5jZWxfbXV0ZXgp OworICAgICBnbG9idXNfbWVtb3J5X2Rlc3Ryb3koJnhpb19jb250ZXh0LT5vcF9tZW1vcnkpOwor QEAgLTEwMDAsNyArMTAwMCw3IEBAIGdsb2J1c19pX3hpb19hdHRyX2dldF9kcygKKyAvKgorICAq ICByZWFkIGFoZWFkIHN0dWZmCisgICovCistdm9pZCAKKyt2b2lkCisgZ2xvYnVzX3hpb19kcml2 ZXJfb3BlcmF0aW9uX2Rlc3Ryb3koCisgICAgIGdsb2J1c194aW9fb3BlcmF0aW9uX3QgICAgICAg ICAgICAgIG9wZXJhdGlvbikKKyB7CitAQCAtMTA2MCwxNiArMTA2MCwxNiBAQCBnbG9idXNfeGlv X2RyaXZlcl9vcGVyYXRpb25fY3JlYXRlKAorICAgICAgICAgaW5kZXgrKykKKyAgICAgeworICAg ICB9CistICAgIAorKworICAgICBpZihpbmRleCA9PSBjb250ZXh0LT5zdGFja19zaXplKQorICAg ICB7CisgICAgICAgICByZXMgPSBHbG9idXNYSU9FcnJvclBhcmFtZXRlcigiZHJpdmVyX2hhbmRs ZSIpOworICAgICAgICAgZ290byBlcnI7CisgICAgIH0KKy0gICAgCisrCisgICAgIC8qIGRyaXZl cl9oYW5kbGVzIGFyZSB0byB0aGUgZHJpdmVycyBiZWxvdyB0aGUgY3VycmVudCBvbmUgKi8KKyAg ICAgaW5kZXgtLTsKKy0gICAgCisrCisgICAgIEdsb2J1c1hJT09wZXJhdGlvbkNyZWF0ZShvcCwg Y29udGV4dCk7CisgICAgIGlmKG9wID09IE5VTEwpCisgICAgIHsKK0BAIC0xMDkwLDcgKzEwOTAs NyBAQCBnbG9idXNfeGlvX2RyaXZlcl9vcGVyYXRpb25fY3JlYXRlKAorICAgICBteV9vcC0+X29w X2VudF93YWl0X2ZvciA9IDA7CisgICAgIG15X29wLT5wcmV2X25keCA9IC0xOworICAgICBteV9v cC0+dHlwZSA9IEdMT0JVU19YSU9fT1BFUkFUSU9OX1RZUEVfRFJJVkVSOworLSAgICAKKysKKyAg ICAgZ2xvYnVzX211dGV4X2xvY2soJmNvbnRleHQtPm11dGV4KTsKKyAgICAgY29udGV4dC0+cmVm Kys7CisgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmNvbnRleHQtPm11dGV4KTsKK0BAIC0xMTQ3 LDEyICsxMTQ3LDEyIEBAIGdsb2J1c19pX3hpb19kcml2ZXJfYXR0cl9jbnRsKAorICAgICAgICAg ICAgIGF0dHItPm5keCsrOworICAgICAgICAgfQorIAorLSAgICAgICAgLyogaWYgdGhlIGRyaXZl ciBpcyBjYXBhYmxlIG9mIHBhcnNpbmcgdGhlIHN0cmluZ3MgCisrICAgICAgICAvKiBpZiB0aGUg ZHJpdmVyIGlzIGNhcGFibGUgb2YgcGFyc2luZyB0aGUgc3RyaW5ncworICAgICAgICAgICAgIGFu ZCB0aGlzIGlzIHRoZSBzdHJpbmcgcGFyc2VyIGNvbW1hbmQsIGlmIHRoZXJlIGlzCisgICAgICAg ICAgICAgbm8gdGFibGUgZGVmaW5lZCB0aGUgU0VUX1NUUklORyBjb21tYW5kIHdpbGwgYmUgcGFz c2VkCisgICAgICAgICAgICAgdG8gdGhlIGRyaXZlci4gIHRoaXMgaXMgZmluZS4gIHRoZXkgbWF5 IHdhbnQgdG8gcGFyc2UgaXQKKyAgICAgICAgICAgICBpbiB0aGVpciBvd24gd2F5ICovCistICAg ICAgICBpZihkcml2ZXItPnN0cmluZ190YWJsZSAhPSBOVUxMICYmIAorKyAgICAgICAgaWYoZHJp dmVyLT5zdHJpbmdfdGFibGUgIT0gTlVMTCAmJgorICAgICAgICAgICAgIGNtZCA9PSBHTE9CVVNf WElPX1NFVF9TVFJJTkdfT1BUSU9OUykKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBjaGFyICog ICAgICAgICAgICAgICAgICAgICAgb3B0X3N0cjsKK0BAIC0xMTc0LDcgKzExNzQsNyBAQCBnbG9i dXNfaV94aW9fZHJpdmVyX2F0dHJfY250bCgKKyAgICAgICAgIHsKKyAgICAgICAgICAgICByZXMg PSBkcml2ZXItPmF0dHJfY250bF9mdW5jKGRzLCBjbWQsIGFwKTsKKyAgICAgICAgIH0KKy0gICAg ICAgIAorKworICAgICAgICAgaWYocmVzICE9IEdMT0JVU19TVUNDRVNTKQorICAgICAgICAgewor ICAgICAgICAgICAgIGdvdG8gZXJyOworQEAgLTEyOTUsNyArMTI5NSw3IEBAIGdsb2J1c19pX3hp b19kcml2ZXJfYXR0cl9jbnRsKAorICAgICAgICAgICAgICAgICB0bXBfc3RyID0gdmFfYXJnKGFw LCBjaGFyICopOworICAgICAgICAgICAgICAgICBhdHRyLT51c2VyX29wZW5fcHcgPSBnbG9idXNf bGliY19zdHJkdXAodG1wX3N0cik7CisgICAgICAgICAgICAgICAgIGJyZWFrOworLSAgICAKKysK KyAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICByZXMgPSBHbG9idXNYSU9F cnJvckludmFsaWRDb21tYW5kKGdlbmVyYWxfY21kKTsKKyAgICAgICAgICAgICAgICAgZ290byBl cnI7CitAQCAtMTMzOSw3ICsxMzM5LDcgQEAgZ2xvYnVzX2lfeGlvX2RyaXZlcl9kZF9jbnRsKAor ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBpZihvcC0+ZW50cnlbY3Ry XS5vcGVuX2F0dHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAg ICAgICAgICAgICAgICByZXMgPSAKKysgICAgICAgICAgICAgICAgICAgICAgICByZXMgPQorICAg ICAgICAgICAgICAgICAgICAgICAgIG9wLT5fb3Bfc2VydmVyLT5lbnRyeVtjdHJdLmRyaXZlci0+ YXR0cl9pbml0X2Z1bmMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcC0+ZW50cnlb Y3RyXS5vcGVuX2F0dHIpOworICAgICAgICAgICAgICAgICAgICAgfQorQEAgLTEzNTUsNyArMTM1 NSw3IEBAIGdsb2J1c19pX3hpb19kcml2ZXJfZGRfY250bCgKKyAgICAgICAgICAgICAgICAgICAg IGNhc2UgR0xPQlVTX1hJT19PUEVSQVRJT05fVFlQRV9PUEVOOgorICAgICAgICAgICAgICAgICAg ICAgICAgIGlmKG9wLT5lbnRyeVtjdHJdLm9wZW5fYXR0ciA9PSBOVUxMKQorICAgICAgICAgICAg ICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9wLT5fb3BfY29udGV4dC0+ZW50cnlbY3RyXS5kcml2ZXItPmF0dHJfaW5pdF9mdW5jKAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wLT5lbnRyeVtjdHJdLm9wZW5fYXR0 cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorQEAgLTEzNjUsNyArMTM2NSw3IEBAIGds b2J1c19pX3hpb19kcml2ZXJfZGRfY250bCgKKyAgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xP QlVTX1hJT19PUEVSQVRJT05fVFlQRV9DTE9TRToKKyAgICAgICAgICAgICAgICAgICAgICAgICBp ZihvcC0+ZW50cnlbY3RyXS5jbG9zZV9hdHRyID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAg ICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSAKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVzID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3At Pl9vcF9jb250ZXh0LT5lbnRyeVtjdHJdLmRyaXZlci0+YXR0cl9pbml0X2Z1bmMoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmb3AtPmVudHJ5W2N0cl0uY2xvc2VfYXR0cik7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgfQorQEAgLTEzNzUsNyArMTM3NSw3IEBAIGdsb2J1c19p X3hpb19kcml2ZXJfZGRfY250bCgKKyAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg ICAgICAgICAgICAgICAgICAgICAgaWYob3AtPmVudHJ5W2N0cl0uZGQgPT0gTlVMTCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9 IAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvcC0+X29wX2NvbnRleHQtPmVudHJ5W2N0cl0uZHJpdmVyLT5hdHRyX2luaXRf ZnVuYygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcC0+ZW50cnlbY3RyXS5k ZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorQEAgLTE0MDgsMTYgKzE0MDgsMTYgQEAg Z2xvYnVzX2lfeGlvX2RyaXZlcl9kZF9jbnRsKAorIAorICAgICAgICAgaWYgKGF0dHJfY250bF9m dW5jKQorICAgICAgICAgeworLSAgICAgICAgICAgIC8qIGlmIHRoZSBkcml2ZXIgaXMgY2FwYWJs ZSBvZiBwYXJzaW5nIHRoZSBzdHJpbmdzIAorKyAgICAgICAgICAgIC8qIGlmIHRoZSBkcml2ZXIg aXMgY2FwYWJsZSBvZiBwYXJzaW5nIHRoZSBzdHJpbmdzCisgICAgICAgICAgICAgICAgIGFuZCB0 aGlzIGlzIHRoZSBzdHJpbmcgcGFyc2VyIGNvbW1hbmQsIGlmIHRoZXJlIGlzCisgICAgICAgICAg ICAgICAgIG5vIHRhYmxlIGRlZmluZWQgdGhlIFNFVF9TVFJJTkcgY29tbWFuZCB3aWxsIGJlIHBh c3NlZAorICAgICAgICAgICAgICAgICB0byB0aGUgZHJpdmVyLiAgdGhpcyBpcyBmaW5lLiAgdGhl eSBtYXkgd2FudCB0byBwYXJzZSBpdAorICAgICAgICAgICAgICAgICBpbiB0aGVpciBvd24gd2F5 ICovCistICAgICAgICAgICAgaWYoZHJpdmVyLT5zdHJpbmdfdGFibGUgIT0gTlVMTCAmJiAKKysg ICAgICAgICAgICBpZihkcml2ZXItPnN0cmluZ190YWJsZSAhPSBOVUxMICYmCisgICAgICAgICAg ICAgICAgIGNtZCA9PSBHTE9CVVNfWElPX1NFVF9TVFJJTkdfT1BUSU9OUykKKyAgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICBvcHRfc3Ry OworLSAgICAKKysKKyAgICAgICAgICAgICAgICAgb3B0X3N0ciA9IHZhX2FyZyhhcCwgY2hhciAq KTsKKyAgICAgICAgICAgICAgICAgcmVzID0gZ2xvYnVzX2lfeGlvX3N0cmluZ19jbnRsX3BhcnNl cigKKyAgICAgICAgICAgICAgICAgICAgIG9wdF9zdHIsCitAQCAtMTQ1Myw3ICsxNDUzLDcgQEAg Z2xvYnVzX2lfeGlvX2RyaXZlcl9kZF9jbnRsKAorICAgICBlbHNlCisgICAgIHsKKyAgICAgICAg IGdsb2J1c19vZmZfdCAqICAgICAgICAgICAgICAgICAgb3V0X29mZnQ7CistICAgICAgICAKKysK KyAgICAgICAgIC8qIGNvdWxkIGVuZCB1cCBoZXJlIHdpdGggbm9uLWRkIGF0dHIgY250bHMuLi4g bm9uZSBzdXBwb3J0ZWQgYXQgZHJpdmVyCisgICAgICAgICAgKiBsZXZlbCB5ZXQsIHNvIG5vIGJp Z2dpZQorICAgICAgICAgICovCitAQCAtMTQ2MiwxMiArMTQ2MiwxMiBAQCBnbG9idXNfaV94aW9f ZHJpdmVyX2RkX2NudGwoCisgICAgICAgICAgIGNhc2UgR0xPQlVTX1hJT19ERF9TRVRfT0ZGU0VU OgorICAgICAgICAgICAgIG9wLT5fb3BfZW50X29mZnNldCA9IHZhX2FyZyhhcCwgZ2xvYnVzX29m Zl90KTsKKyAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAg Y2FzZSBHTE9CVVNfWElPX0REX0dFVF9PRkZTRVQ6CisgICAgICAgICAgICAgb3V0X29mZnQgPSB2 YV9hcmcoYXAsIGdsb2J1c19vZmZfdCAqKTsKKyAgICAgICAgICAgICAqb3V0X29mZnQgPSBvcC0+ X29wX2VudF9vZmZzZXQ7CisgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICAgICAgCisrCisg ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgcmVzID0gR2xvYnVzWElPRXJyb3JJbnZh bGlkQ29tbWFuZChjbWQpOworICAgICAgICAgICAgIGdvdG8gZXJyOworQEAgLTE1OTMsNyArMTU5 Myw3IEBAIGdsb2J1c19pX3hpb19kcml2ZXJfaGFuZGxlX2NudGwoCisgICAgICAgICBmb3IoY3Ry ID0gc3RhcnRfbmR4OyBjdHIgPCBjb250ZXh0LT5zdGFja19zaXplOyBjdHIrKykKKyAgICAgICAg IHsKKyAgICAgICAgICAgICBjYWxsZWQgPSBHTE9CVVNfRkFMU0U7CistICAgICAgICAgICAgCisr CisgICAgICAgICAgICAgaWYoZHJpdmVyID09IGNvbnRleHQtPmVudHJ5W2N0cl0uZHJpdmVyIHx8 CisgICAgICAgICAgICAgICAgIGRyaXZlciA9PSBHTE9CVVNfWElPX1FVRVJZKQorICAgICAgICAg ICAgIHsKK0BAIC0xNjA5LDcgKzE2MDksNyBAQCBnbG9idXNfaV94aW9fZHJpdmVyX2hhbmRsZV9j bnRsKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcCk7CisgICAgICAgICAgICAgICAg ICAgICBjYWxsZWQgPSBHTE9CVVNfVFJVRTsKKyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAg ICAgICAgICBlbHNlIGlmKGNvbnRleHQtPmVudHJ5W2N0cl0uc3RhdGUgIT0gCisrICAgICAgICAg ICAgICAgIGVsc2UgaWYoY29udGV4dC0+ZW50cnlbY3RyXS5zdGF0ZSAhPQorICAgICAgICAgICAg ICAgICAgICAgR0xPQlVTX1hJT19DT05URVhUX1NUQVRFX05PTkUgJiYKKyAgICAgICAgICAgICAg ICAgICAgIGNvbnRleHQtPmVudHJ5W2N0cl0uZHJpdmVyLT5oYW5kbGVfY250bF9mdW5jKQorICAg ICAgICAgICAgICAgICB7CitAQCAtMTYxOSwxMiArMTYxOSwxMiBAQCBnbG9idXNfaV94aW9fZHJp dmVyX2hhbmRsZV9jbnRsKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcCk7CisgICAg ICAgICAgICAgICAgICAgICBjYWxsZWQgPSBHTE9CVVNfVFJVRTsKKyAgICAgICAgICAgICAgICAg fQorLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgaWYoY2FsbGVkICYmIHJl cyA9PSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgCisrCisg ICAgICAgICAgICAgICAgIGlmKGRyaXZlciA9PSBHTE9CVVNfWElPX1FVRVJZKQorICAgICAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBpZihjYWxsZWQgJiYgcmVzICE9IEdMT0JV U19TVUNDRVNTICYmCitAQCAtMTYzOSw3ICsxNjM5LDcgQEAgZ2xvYnVzX2lfeGlvX2RyaXZlcl9o YW5kbGVfY250bCgKKyAgICAgICAgICAgICAgICAgICAgIHJlcyA9IEdsb2J1c1hJT0Vycm9ySW52 YWxpZERyaXZlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICBfWElPU0woImhhbmRsZV9jbnRs IG5vdCBzdXBwb3J0ZWQiKSk7CisgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAg CisrCisgICAgICAgICAgICAgICAgIGlmKHJlcyAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7CitAQCAtMTcyMyw3ICsx NzIzLDcgQEAgZ2xvYnVzX3hpb19kcml2ZXJfbWVyZ2VfaGFuZGxlKAorICAgICAgICAgICAgIGdv dG8gZXJyOworICAgICAgICAgfQorICAgICAgICAgZHN0X2NvbnRleHQtPmVudHJ5W2N0cl0ud2hv c19teV9kYWRkeSA9IGRzdF9jb250ZXh0OworLSAgICAgICAgZHN0X2NvbnRleHQtPmVudHJ5W2N0 cl0uZHJpdmVyX2hhbmRsZSA9IAorKyAgICAgICAgZHN0X2NvbnRleHQtPmVudHJ5W2N0cl0uZHJp dmVyX2hhbmRsZSA9CisgICAgICAgICAgICAgc3JjX2NvbnRleHQtPmVudHJ5W2N0cl0uZHJpdmVy X2hhbmRsZTsKKyAKKyAgICAgICAgIEdsb2J1c1hJT0NvbnRleHRTdGF0ZUNoYW5nZSgmZHN0X2Nv bnRleHQtPmVudHJ5W2N0cl0sCitAQCAtMTc3NCw3ICsxNzc0LDcgQEAgZ2xvYnVzX3hpb19kcml2 ZXJfaGFuZGxlX2NudGwoCisgICAgICAgICB7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCisr CisgICAgIHJlcyA9IGdsb2J1c19pX3hpb19kcml2ZXJfaGFuZGxlX2NudGwoY29udGV4dCwgc3Rh cnRfbmR4LCBkcml2ZXIsIGNtZCwgYXApOworICAgICB2YV9lbmQoYXApOworICAgICBpZihyZXMg IT0gR0xPQlVTX1NVQ0NFU1MpCitAQCAtMTgxOCwyMiArMTgxOCwyMiBAQCBnbG9idXNfeGlvX2Ry aXZlcl9vcGVyYXRpb25fY2FuY2VsKAorICAgICAgICAgc291cmNlX25keCsrKQorICAgICB7Cisg ICAgIH0KKy0gICAgCisrCisgICAgIGlmKHNvdXJjZV9uZHggPT0gY29udGV4dC0+c3RhY2tfc2l6 ZSkKKyAgICAgeworICAgICAgICAgcmVzID0gR2xvYnVzWElPRXJyb3JQYXJhbWV0ZXIoImRyaXZl cl9oYW5kbGUiKTsKKyAgICAgICAgIGdvdG8gZXJyOworICAgICB9CistICAgIAorKworICAgICAv KiBkcml2ZXJfaGFuZGxlcyBhcmUgdG8gdGhlIGRyaXZlcnMgYmVsb3cgdGhlIGN1cnJlbnQgb25l ICovCisgICAgIHNvdXJjZV9uZHgtLTsKKy0gICAgCisrCisgICAgIGdsb2J1c19tdXRleF9sb2Nr KCZjb250ZXh0LT5jYW5jZWxfbXV0ZXgpOworICAgICB7CisgICAgICAgICByZXMgPSBnbG9idXNf aV94aW9fb3BlcmF0aW9uX2NhbmNlbChvcCwgc291cmNlX25keCk7CisgICAgIH0KKyAgICAgZ2xv YnVzX211dGV4X3VubG9jaygmY29udGV4dC0+Y2FuY2VsX211dGV4KTsKKy0gICAgCisrCisgICAg IEdsb2J1c1hJT0RlYnVnRXhpdCgpOworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgCitA QCAtMTg1MywxMCArMTg1MywxMCBAQCBnbG9idXNfeGlvX2RyaXZlcl9zZXRfZW9mX3JlY2VpdmVk KAorICAgICBHbG9idXNYSU9OYW1lKGdsb2J1c194aW9fZHJpdmVyX3NldF9lb2ZfcmVjZWl2ZWQp OworIAorICAgICBHbG9idXNYSU9EZWJ1Z0VudGVyKCk7CistICAgIAorKworICAgICBjb250ZXh0 ID0gb3AtPl9vcF9jb250ZXh0OworICAgICBteV9jb250ZXh0ID0gJmNvbnRleHQtPmVudHJ5W29w LT5lbnRyeVtvcC0+bmR4IC0gMV0ucHJldl9uZHhdOworLSAgICAKKysKKyAgICAgZ2xvYnVzX211 dGV4X2xvY2soJmNvbnRleHQtPm11dGV4KTsKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2Fzc2Vy dCgKK0BAIC0xODY1LDkgKzE4NjUsOSBAQCBnbG9idXNfeGlvX2RyaXZlcl9zZXRfZW9mX3JlY2Vp dmVkKAorICAgICAgICAgZ2xvYnVzX2Fzc2VydCgKKyAgICAgICAgICAgICBteV9jb250ZXh0LT5z dGF0ZSA9PSBHTE9CVVNfWElPX0NPTlRFWFRfU1RBVEVfT1BFTiB8fAorICAgICAgICAgICAgIG15 X2NvbnRleHQtPnN0YXRlID09IEdMT0JVU19YSU9fQ09OVEVYVF9TVEFURV9FT0ZfUkVDRUlWRUQg fHwKKy0gICAgICAgICAgICBteV9jb250ZXh0LT5zdGF0ZSA9PSAKKysgICAgICAgICAgICBteV9j b250ZXh0LT5zdGF0ZSA9PQorICAgICAgICAgICAgICAgICBHTE9CVVNfWElPX0NPTlRFWFRfU1RB VEVfRU9GX1JFQ0VJVkVEX0FORF9DTE9TSU5HKTsKKy0gICAgICAgICAgICAgICAgCisrCisgICAg ICAgICBpZihteV9jb250ZXh0LT5zdGF0ZSA9PSBHTE9CVVNfWElPX0NPTlRFWFRfU1RBVEVfT1BF TikKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBHbG9idXNYSU9Db250ZXh0U3RhdGVDaGFuZ2Uo bXlfY29udGV4dCwKK0BAIC0xODc1LDcgKzE4NzUsNyBAQCBnbG9idXNfeGlvX2RyaXZlcl9zZXRf ZW9mX3JlY2VpdmVkKAorICAgICAgICAgfQorICAgICB9CisgICAgIGdsb2J1c19tdXRleF91bmxv Y2soJmNvbnRleHQtPm11dGV4KTsKKy0gICAgCisrCisgICAgIEdsb2J1c1hJT0RlYnVnRXhpdCgp OworIH0KKyAKK0BAIC0xODg5LDEwICsxODg5LDEwIEBAIGdsb2J1c194aW9fZHJpdmVyX2VvZl9y ZWNlaXZlZCgKKyAgICAgR2xvYnVzWElPTmFtZShnbG9idXNfeGlvX2RyaXZlcl9lb2ZfcmVjZWl2 ZWQpOworIAorICAgICBHbG9idXNYSU9EZWJ1Z0VudGVyKCk7CistICAgIAorKworICAgICBjb250 ZXh0ID0gb3AtPl9vcF9jb250ZXh0OworICAgICBteV9jb250ZXh0ID0gJmNvbnRleHQtPmVudHJ5 W29wLT5lbnRyeVtvcC0+bmR4IC0gMV0ucHJldl9uZHhdOworLSAgICAKKysKKyAgICAgZ2xvYnVz X211dGV4X2xvY2soJmNvbnRleHQtPm11dGV4KTsKKyAgICAgeworICAgICAgICAgZ2xvYnVzX2Fz c2VydCgKK0BAIC0xOTAxLDIwICsxOTAxLDIwIEBAIGdsb2J1c194aW9fZHJpdmVyX2VvZl9yZWNl aXZlZCgKKyAgICAgICAgIGdsb2J1c19hc3NlcnQoCisgICAgICAgICAgICAgbXlfY29udGV4dC0+ c3RhdGUgPT0gR0xPQlVTX1hJT19DT05URVhUX1NUQVRFX09QRU4gfHwKKyAgICAgICAgICAgICBt eV9jb250ZXh0LT5zdGF0ZSA9PSBHTE9CVVNfWElPX0NPTlRFWFRfU1RBVEVfRU9GX1JFQ0VJVkVE IHx8CistICAgICAgICAgICAgbXlfY29udGV4dC0+c3RhdGUgPT0gCisrICAgICAgICAgICAgbXlf Y29udGV4dC0+c3RhdGUgPT0KKyAgICAgICAgICAgICAgICAgR0xPQlVTX1hJT19DT05URVhUX1NU QVRFX0VPRl9SRUNFSVZFRF9BTkRfQ0xPU0lORyk7CistICAgICAgICAgICAgICAgIAorKworICAg ICAgICAgaWYobXlfY29udGV4dC0+c3RhdGUgPT0gR0xPQlVTX1hJT19DT05URVhUX1NUQVRFX0VP Rl9SRUNFSVZFRCB8fAorLSAgICAgICAgICAgIG15X2NvbnRleHQtPnN0YXRlID09IAorKyAgICAg ICAgICAgIG15X2NvbnRleHQtPnN0YXRlID09CisgICAgICAgICAgICAgICAgIEdMT0JVU19YSU9f Q09OVEVYVF9TVEFURV9FT0ZfUkVDRUlWRURfQU5EX0NMT1NJTkcpCisgICAgICAgICB7CisgICAg ICAgICAgICAgcmVjZWl2ZWQgPSBHTE9CVVNfVFJVRTsKKyAgICAgICAgIH0KKyAgICAgfQorICAg ICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZjb250ZXh0LT5tdXRleCk7CistICAgIAorKworICAgICBH bG9idXNYSU9EZWJ1Z0V4aXQoKTsKKy0gICAgCisrCisgICAgIHJldHVybiByZWNlaXZlZDsKKyB9 CisgCitAQCAtMTk0Miw3ICsxOTQyLDcgQEAgZ2xvYnVzX3hpb19kcml2ZXJfaW5pdCgKKyAgICAg ICAgIGdvdG8gZXJyOworICAgICB9CisgICAgIG1lbXNldChkcml2ZXIsICdcMCcsIHNpemVvZihn bG9idXNfaV94aW9fZHJpdmVyX3QpKTsKKy0gICAgCisrCisgICAgIGRyaXZlci0+bmFtZSA9IGds b2J1c19saWJjX3N0cmR1cChkcml2ZXJfbmFtZSk7CisgICAgIGlmKCFkcml2ZXItPm5hbWUpCisg ICAgIHsKK0BAIC0xOTUwLDcgKzE5NTAsNyBAQCBnbG9idXNfeGlvX2RyaXZlcl9pbml0KAorICAg ICAgICAgcmVzID0gR2xvYnVzWElPRXJyb3JNZW1vcnkoImRyaXZlci0+bmFtZSIpOworICAgICAg ICAgZ290byBlcnI7CisgICAgIH0KKy0gICAgCisrCisgICAgIGRyaXZlci0+dXNlcl9kYXRhID0g dXNlcl9kYXRhOworIAorICAgICAqb3V0X2RyaXZlciA9IGRyaXZlcjsKK0BAIC0yMDg5LDcgKzIw ODksNyBAQCBnbG9idXNfeGlvX2RyaXZlcl9zZXRfc2VydmVyKAorICAqIEBkZXRhaWxzCisgICog VGhpcyBmdW5jdGlvbiBhZGRzIGEgY2FsbGJhY2sgdG8gYSBkcml2ZXIgdGhhdCB3aWxsIGJlIGNh bGxlZCBiZWZvcmUKKyAgKiBhIHNlcnZlciBoYW5kbGUgaXMgY3JlYXRlZCBieSBYSU8uIFRoaXMg ZnVuY3Rpb24gaGFzIHRoZSBzYW1lIHNpZ25hdHVyZQorLSAqIGFzIHRoZSBzZXJ2ZXJfaW5pdF9m dW5jIGluIHRoZSBkcml2ZXIsIGJ1dCBpcyBhbHdheXMgY2FsbGVkIHdpdGggYSAKKysgKiBhcyB0 aGUgc2VydmVyX2luaXRfZnVuYyBpbiB0aGUgZHJpdmVyLCBidXQgaXMgYWx3YXlzIGNhbGxlZCB3 aXRoIGEKKyAgKiBOVUxMIGNvbnRhY3Qgc3RyaW5nLiBUaGVyZSBpcyBubyBzdXBwb3J0IGZvciBj YWxsaW5nIGEgcGFzcygpIG9yIGZpbmlzaGVkKCkKKyAgKiBmdW5jdGlvbiBmb3IgdGhpcyBpbnRl cmZhY2UuIEl0IG1heSBpbnNwZWN0IGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXMKKyAgKiBhbmQg b3BlcmF0aW9uLCBidXQgY2FuIG5vdCBkaXJlY3RseSByZXR1cm4gYW55IGRhdGEgb3Igc2V0IGEg ZHJpdmVyLXNwZWNpZmljCitAQCAtMjI2OSw3ICsyMjY5LDcgQEAgZ2xvYnVzX3hpb19vcGVyYXRp b25fZW5hYmxlX2NhbmNlbCgKKyAgICAgeworICAgICAgICAgbXV0ZXggPSAmb3AtPl9vcF9jb250 ZXh0LT5jYW5jZWxfbXV0ZXg7CisgICAgIH0KKy0gICAgCisrCisgICAgIGdsb2J1c19tdXRleF9s b2NrKG11dGV4KTsKKyAgICAgeworICAgICAgICAgYWxyZWFkeV9jYW5jZWxlZCA9IG9wLT5jYW5j ZWxlZCAhPSAwOworQEAgLTIyODAsNyArMjI4MCw3IEBAIGdsb2J1c194aW9fb3BlcmF0aW9uX2Vu YWJsZV9jYW5jZWwoCisgICAgICAgICB9CisgICAgIH0KKyAgICAgZ2xvYnVzX211dGV4X3VubG9j ayhtdXRleCk7CistICAgIAorKworICAgICByZXR1cm4gYWxyZWFkeV9jYW5jZWxlZDsKKyB9Cisg CitAQCAtMjI5OCw3ICsyMjk4LDcgQEAgZ2xvYnVzX3hpb19vcGVyYXRpb25fZGlzYWJsZV9jYW5j ZWwoCisgICAgIHsKKyAgICAgICAgIG11dGV4ID0gJm9wLT5fb3BfY29udGV4dC0+Y2FuY2VsX211 dGV4OworICAgICB9CistICAgIAorKworICAgICBnbG9idXNfbXV0ZXhfbG9jayhtdXRleCk7Cisg ICAgIHsKKyAgICAgICAgIG9wLT5jYW5jZWxfY2IgPSBOVUxMOworQEAgLTI0MDAsNyArMjQwMCw3 IEBAIGdsb2J1c194aW9fb3BlcmF0aW9uX2F0dHJfY250bCgKKyAgICAgZ3NzX2NyZWRfaWRfdCAq ICAgICAgICAgICAgICAgICAgICAgb3V0X2NyZWQ7CisgICAgIHZhX2xpc3QgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFwOworICAgICBHbG9idXNYSU9OYW1lKGdsb2J1c194aW9fb3BlcmF0 aW9uX2F0dHJfY250bCk7CistIAorKworICAgICBpZihvcCA9PSBOVUxMKQorICAgICB7CisgICAg ICAgICByZXN1bHQgPSBHbG9idXNYSU9FcnJvclBhcmFtZXRlcigib3AiKTsKK0BAIC0yNDY1LDcg KzI0NjUsNyBAQCBnbG9idXNfeGlvX29wZXJhdGlvbl9nZXRfZGF0YV9kZXNjcmlwdG9yKAorICAg ICAgICAgICAgIG9wLT5lbnRyeVtvcC0+bmR4IC0gMV0uZGQgPSBOVUxMOworICAgICAgICAgfQor ICAgICB9CistICAgIAorKworICAgICByZXR1cm4gb3AtPmVudHJ5W29wLT5uZHggLSAxXS5kZDsK KyB9CisgCitAQCAtMjQ4OCwxNCArMjQ4OCwxNCBAQCBnbG9idXNfeGlvX29wZXJhdGlvbl9jb3B5 X3N0YWNrKAorICAgICB7CisgICAgICAgICBnb3RvIGVycm9yX2luaXQ7CisgICAgIH0KKy0gICAg CisrCisgICAgIGlzdGFjayA9ICpzdGFjazsKKy0gICAgCisrCisgICAgIHN3aXRjaChvcC0+dHlw ZSkKKyAgICAgeworICAgICAgIGNhc2UgR0xPQlVTX1hJT19PUEVSQVRJT05fVFlQRV9TRVJWRVJf SU5JVDoKKyAgICAgICAgIHNlcnZlciA9IG9wLT5fb3Bfc2VydmVyOworLSAgICAgICAgCisrCisg ICAgICAgICBmb3IobmR4ID0gb3AtPnN0YWNrX3NpemUgLSAxOyBuZHggPiBvcC0+bmR4OyBuZHgt LSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpc3RhY2stPnNpemUrKzsKK0BAIC0yNTAzLDEw ICsyNTAzLDEwIEBAIGdsb2J1c194aW9fb3BlcmF0aW9uX2NvcHlfc3RhY2soCisgICAgICAgICAg ICAgICAgICZpc3RhY2stPmRyaXZlcl9zdGFjaywgc2VydmVyLT5lbnRyeVtuZHhdLmRyaXZlcik7 CisgICAgICAgICB9CisgICAgICAgICBicmVhazsKKy0gICAgICAKKysKKyAgICAgICBjYXNlIEdM T0JVU19YSU9fT1BFUkFUSU9OX1RZUEVfQUNDRVBUOgorICAgICAgICAgc2VydmVyID0gb3AtPl9v cF9zZXJ2ZXI7CistICAgICAgICAKKysKKyAgICAgICAgIGZvcihuZHggPSBvcC0+c3RhY2tfc2l6 ZSAtIDE7IG5keCA+PSBvcC0+bmR4OyBuZHgtLSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBp c3RhY2stPnNpemUrKzsKK0BAIC0yNTE0LDEwICsyNTE0LDEwIEBAIGdsb2J1c194aW9fb3BlcmF0 aW9uX2NvcHlfc3RhY2soCisgICAgICAgICAgICAgICAgICZpc3RhY2stPmRyaXZlcl9zdGFjaywg c2VydmVyLT5lbnRyeVtuZHhdLmRyaXZlcik7CisgICAgICAgICB9CisgICAgICAgICBicmVhazsK Ky0gICAgICAgIAorKworICAgICAgIGRlZmF1bHQ6CisgICAgICAgICBjb250ZXh0ID0gb3AtPl9v cF9jb250ZXh0OworLSAgICAgICAgCisrCisgICAgICAgICBmb3IobmR4ID0gb3AtPnN0YWNrX3Np emUgLSAxOyBuZHggPj0gb3AtPm5keDsgbmR4LS0pCisgICAgICAgICB7CisgICAgICAgICAgICAg aXN0YWNrLT5zaXplKys7CitAQCAtMjUyNiwxMCArMjUyNiwxMCBAQCBnbG9idXNfeGlvX29wZXJh dGlvbl9jb3B5X3N0YWNrKAorICAgICAgICAgfQorICAgICAgICAgYnJlYWs7CisgICAgIH0KKy0g ICAgCisrCisgICAgIEdsb2J1c1hJT0RlYnVnRXhpdCgpOworICAgICByZXR1cm4gR0xPQlVTX1NV Q0NFU1M7CistICAgIAorKworIGVycm9yX2luaXQ6CisgICAgIEdsb2J1c1hJT0RlYnVnRXhpdFdp dGhFcnJvcigpOworICAgICByZXR1cm4gcmVzdWx0OworZGlmZiAtLWdpdCBhL3hpby9zcmMvZ2xv YnVzX3hpb19zeXN0ZW1fc2VsZWN0LmMgYi94aW8vc3JjL2dsb2J1c194aW9fc3lzdGVtX3NlbGVj dC5jCitpbmRleCBkZDFkNWVmZjAuLmIyY2Q1NjQ3NSAxMDA2NDQKKy0tLSBhL3hpby9zcmMvZ2xv YnVzX3hpb19zeXN0ZW1fc2VsZWN0LmMKKysrKyBiL3hpby9zcmMvZ2xvYnVzX3hpb19zeXN0ZW1f c2VsZWN0LmMKK0BAIC0xNTcsNyArMTU3LDcgQEAgZ2xvYnVzX2xfeGlvX3N5c3RlbV93YWtldXBf aGFuZGxlcigKKyAgICAgR2xvYnVzWElPTmFtZShnbG9idXNfbF94aW9fc3lzdGVtX3dha2V1cF9o YW5kbGVyKTsKKyAKKyAgICAgR2xvYnVzWElPU3lzdGVtRGVidWdFbnRlcigpOworLSAgICAKKysK KyAgICAgaWYoIWdsb2J1c19sX3hpb19zeXN0ZW1fc2h1dGRvd25fY2FsbGVkKQorICAgICB7Cisg ICAgICAgICBieXRlID0gMDsKK0BAIC0xNjcsNyArMTY3LDcgQEAgZ2xvYnVzX2xfeGlvX3N5c3Rl bV93YWtldXBfaGFuZGxlcigKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfeGlvX3N5c3RlbV93 YWtldXBfcGlwZVsxXSwgJmJ5dGUsIHNpemVvZihieXRlKSk7CisgICAgICAgICB9IHdoaWxlKHJj IDwgMCAmJiBlcnJubyA9PSBFSU5UUik7CisgICAgIH0KKy0gICAgCisrCisgICAgIEdsb2J1c1hJ T1N5c3RlbURlYnVnRXhpdCgpOworIH0KKyAKK0BAIC0xODAsMTIgKzE4MCwxMiBAQCBnbG9idXNf bF94aW9fc3lzdGVtX2FjdGl2YXRlKHZvaWQpCisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAg ICAgICAgICAgICAgIHJlc3VsdDsKKyAgICAgZ2xvYnVzX3JlbHRpbWVfdCAgICAgICAgICAgICAg ICAgICAgcGVyaW9kOworICAgICBHbG9idXNYSU9OYW1lKGdsb2J1c19sX3hpb19zeXN0ZW1fYWN0 aXZhdGUpOworLSAgICAKKysKKyAgICAgaWYoZ2xvYnVzX2lfeGlvX3N5c3RlbV9jb21tb25fYWN0 aXZhdGUoKSAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworICAgICAgICAgZ290byBlcnJvcl9h Y3RpdmF0ZTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgR2xvYnVzWElPU3lzdGVtRGVidWdFbnRl cigpOworIAorICAgICBnbG9idXNfY29uZF9pbml0KCZnbG9idXNfbF94aW9fc3lzdGVtX2NvbmQs IEdMT0JVU19OVUxMKTsKK0BAIC0yNDUsNyArMjQ1LDcgQEAgZ2xvYnVzX2xfeGlvX3N5c3RlbV9h Y3RpdmF0ZSh2b2lkKQorICAgICB9CisgICAgIGZjbnRsKGdsb2J1c19sX3hpb19zeXN0ZW1fd2Fr ZXVwX3BpcGVbMF0sIEZfU0VURkQsIEZEX0NMT0VYRUMpOworICAgICBmY250bChnbG9idXNfbF94 aW9fc3lzdGVtX3dha2V1cF9waXBlWzFdLCBGX1NFVEZELCBGRF9DTE9FWEVDKTsKKy0gICAgCisr CisgICAgIGdsb2J1c19sX3hpb19zeXN0ZW1faGlnaGVzdF9mZCA9IGdsb2J1c19sX3hpb19zeXN0 ZW1fd2FrZXVwX3BpcGVbMF07CisgICAgIEZEX1NFVChnbG9idXNfbF94aW9fc3lzdGVtX3dha2V1 cF9waXBlWzBdLCBnbG9idXNfbF94aW9fc3lzdGVtX3JlYWRfZmRzKTsKKyAKK0BAIC0yNjIsNyAr MjYyLDcgQEAgZ2xvYnVzX2xfeGlvX3N5c3RlbV9hY3RpdmF0ZSh2b2lkKQorICAgICAgICAgICAg ICJnbG9idXNfY2FsbGJhY2tfcmVnaXN0ZXJfcGVyaW9kaWMiLCByZXN1bHQpOworICAgICAgICAg Z290byBlcnJvcl9yZWdpc3RlcjsKKyAgICAgfQorLSAgICAKKysKKyAgICAgZ2xvYnVzX2NhbGxi YWNrX2FkZF93YWtldXBfaGFuZGxlcigKKyAgICAgICAgIGdsb2J1c19sX3hpb19zeXN0ZW1fd2Fr ZXVwX2hhbmRsZXIsIEdMT0JVU19OVUxMKTsKKyAKK0BAIC0yODMsNyArMjgzLDcgQEAgZXJyb3Jf ZmRzZXRzOgorICAgICBnbG9idXNfbXV0ZXhfZGVzdHJveSgmZ2xvYnVzX2xfeGlvX3N5c3RlbV9j YW5jZWxfbXV0ZXgpOworICAgICBnbG9idXNfbXV0ZXhfZGVzdHJveSgmZ2xvYnVzX2xfeGlvX3N5 c3RlbV9mZHNldF9tdXRleCk7CisgICAgIGdsb2J1c19jb25kX2Rlc3Ryb3koJmdsb2J1c19sX3hp b19zeXN0ZW1fY29uZCk7CistICAgIAorKworICAgICBHbG9idXNYSU9TeXN0ZW1EZWJ1Z0V4aXRX aXRoRXJyb3IoKTsKKyAgICAgZ2xvYnVzX2lfeGlvX3N5c3RlbV9jb21tb25fZGVhY3RpdmF0ZSgp OworIGVycm9yX2FjdGl2YXRlOgorQEAgLTI5Nyw5ICsyOTcsOSBAQCBnbG9idXNfbF94aW9fc3lz dGVtX3VucmVnaXN0ZXJfcGVyaW9kaWNfY2IoCisgeworICAgICBnbG9idXNfYm9vbF90ICogICAg ICAgICAgICAgICAgICAgICBzaWduYWxlZDsKKyAgICAgR2xvYnVzWElPTmFtZShnbG9idXNfbF94 aW9fc3lzdGVtX3VucmVnaXN0ZXJfcGVyaW9kaWNfY2IpOworLSAgICAKKysKKyAgICAgR2xvYnVz WElPU3lzdGVtRGVidWdFbnRlcigpOworLSAgICAKKysKKyAgICAgc2lnbmFsZWQgPSAoZ2xvYnVz X2Jvb2xfdCAqKSB1c2VyX2FyZ3M7CisgICAgIGdsb2J1c19tdXRleF9sb2NrKCZnbG9idXNfbF94 aW9fc3lzdGVtX2Zkc2V0X211dGV4KTsKKyAgICAgeworQEAgLTMyMiw3ICszMjIsNyBAQCBnbG9i dXNfbF94aW9fc3lzdGVtX2RlYWN0aXZhdGUodm9pZCkKKyAgICAgZ2xvYnVzX211dGV4X2xvY2so Jmdsb2J1c19sX3hpb19zeXN0ZW1fZmRzZXRfbXV0ZXgpOworICAgICB7CisgICAgICAgICBnbG9i dXNfYm9vbF90ICAgICAgICAgICAgICAgICAgIHNpZ25hbGVkOworLSAgICAgICAgCisrCisgICAg ICAgICBnbG9idXNfbF94aW9fc3lzdGVtX3NodXRkb3duX2NhbGxlZCA9IEdMT0JVU19UUlVFOwor ICAgICAgICAgc2lnbmFsZWQgPSBHTE9CVVNfRkFMU0U7CisgICAgICAgICBnbG9idXNfY2FsbGJh Y2tfdW5yZWdpc3RlcigKK0BAIC0zNTQsNyArMzU0LDcgQEAgZ2xvYnVzX2xfeGlvX3N5c3RlbV9k ZWFjdGl2YXRlKHZvaWQpCisgICAgIGdsb2J1c19jb25kX2Rlc3Ryb3koJmdsb2J1c19sX3hpb19z eXN0ZW1fY29uZCk7CisgCisgICAgIEdsb2J1c1hJT1N5c3RlbURlYnVnRXhpdCgpOworLSAgICAK KysKKyAgICAgZ2xvYnVzX2lfeGlvX3N5c3RlbV9jb21tb25fZGVhY3RpdmF0ZSgpOworIAorICAg ICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CitAQCAtMzgxLDI1ICszODEsMjUgQEAgZ2xvYnVzX2xf eGlvX3N5c3RlbV9oYW5kbGVfaW5pdCgKKyAgICAgICAgIHJlc3VsdCA9IEdsb2J1c1hJT0Vycm9y TWVtb3J5KCJoYW5kbGUiKTsKKyAgICAgICAgIGdvdG8gZXJyb3JfYWxsb2M7CisgICAgIH0KKy0g ICAgCisrCisgICAgIGhhbmRsZS0+dHlwZSA9IHR5cGU7CisgICAgIGhhbmRsZS0+ZmQgPSBmZDsK Ky0gICAgCisrCisgICAgIGhhbmRsZS0+ZmlsZV9wb3NpdGlvbiA9IGdsb2J1c194aW9fc3lzdGVt X2ZpbGVfZ2V0X3Bvc2l0aW9uKGZkKTsKKy0gICAgCisrCisgICAgIHJjID0gZ2xvYnVzX2xfeGlv X3N5c3RlbV9hZGRfbm9uYmxvY2tpbmcoaGFuZGxlKTsKKyAgICAgaWYocmMgPCAwKQorICAgICB7 CisgICAgICAgICByZXN1bHQgPSBHbG9idXNYSU9FcnJvclN5c3RlbUVycm9yKCJmY250bCIsIGVy cm5vKTsKKyAgICAgICAgIGdvdG8gZXJyb3JfZmNudGw7CisgICAgIH0KKy0gICAgCisrCisgICAg IGdsb2J1c19tdXRleF9pbml0KCZoYW5kbGUtPmxvY2ssIE5VTEwpOworLSAgICAKKysKKyAgICAg KnVfaGFuZGxlID0gaGFuZGxlOworICAgICBHbG9idXNYSU9TeXN0ZW1EZWJ1Z0V4aXRGRChmZCk7 CisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKy0gICAgCisrCisgZXJyb3JfZmNudGw6Cisg ICAgIGdsb2J1c19mcmVlKGhhbmRsZSk7CisgZXJyb3JfYWxsb2M6CitAQCAtNDM5LDcgKzQzOSw3 IEBAIGdsb2J1c19sX3hpb19zeXN0ZW1faGFuZGxlX2Rlc3Ryb3koCisgCisgICAgIGdsb2J1c19s X3hpb19zeXN0ZW1fcmVtb3ZlX25vbmJsb2NraW5nKGhhbmRsZSk7CisgICAgIGdsb2J1c19mcmVl KGhhbmRsZSk7CistICAgIAorKworICAgICBHbG9idXNYSU9TeXN0ZW1EZWJ1Z0V4aXRGRChmZCk7 CisgfQorIAorQEAgLTQ3MywyMSArNDczLDIxIEBAIGdsb2J1c19sX3hpb19zeXN0ZW1fY2FuY2Vs X2NiKAorIAorICAgICBnbG9idXNfbXV0ZXhfbG9jaygmZ2xvYnVzX2xfeGlvX3N5c3RlbV9jYW5j ZWxfbXV0ZXgpOworICAgICB7CistICAgICAgICBpZihvcF9pbmZvLT5zdGF0ZSAhPSBHTE9CVVNf SV9YSU9fU1lTVEVNX09QX0NPTVBMRVRFICYmIAorKyAgICAgICAgaWYob3BfaW5mby0+c3RhdGUg IT0gR0xPQlVTX0lfWElPX1NZU1RFTV9PUF9DT01QTEVURSAmJgorICAgICAgICAgICAgIG9wX2lu Zm8tPnN0YXRlICE9IEdMT0JVU19JX1hJT19TWVNURU1fT1BfQ0FOQ0VMRUQpCisgICAgICAgICB7 CisgICAgICAgICAgICAgb3BfaW5mby0+ZXJyb3IgPSByZWFzb24gPT0gR0xPQlVTX1hJT19FUlJP Ul9USU1FT1VUCisgICAgICAgICAgICAgICAgID8gR2xvYnVzWElPRXJyb3JPYmpUaW1lb3V0KCkK KyAgICAgICAgICAgICAgICAgOiBHbG9idXNYSU9FcnJvck9iakNhbmNlbGVkKCk7CistICAgICAg ICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBnbG9idXNfbXV0ZXhfbG9jaygmZ2xvYnVz X2xfeGlvX3N5c3RlbV9mZHNldF9tdXRleCk7CisgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICBwZW5kOworLSAgICAgICAgICAgICAgICAKKysK KyAgICAgICAgICAgICAgICAgaWYob3BfaW5mby0+c3RhdGUgPT0gR0xPQlVTX0lfWElPX1NZU1RF TV9PUF9ORVcpCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIG9wX2lu Zm8tPnN0YXRlID0gR0xPQlVTX0lfWElPX1NZU1RFTV9PUF9DQU5DRUxFRDsKKy0gICAgICAgICAg ICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAgIEdsb2J1c1hJT1N5c3RlbURl YnVnUHJpbnRmKAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19JX1hJT19TWVNURU1f REVCVUdfSU5GTywKKyAgICAgICAgICAgICAgICAgICAgICAgICAoX1hJT1NMKCJbJXNdIGZkPSVk LCBDYW5jZWxpbmcgTkVXXG4iKSwKK0BAIC00OTgsMTIgKzQ5OCwxMiBAQCBnbG9idXNfbF94aW9f c3lzdGVtX2NhbmNlbF9jYigKKyAgICAgICAgICAgICAgICAgICAgIGlmKGdsb2J1c19sX3hpb19z eXN0ZW1fc2VsZWN0X2FjdGl2ZSkKKyAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgICBvcF9pbmZvLT5zdGF0ZSA9IEdMT0JVU19JX1hJT19TWVNURU1fT1BfQ0FO Q0VMRUQ7CistICAgICAgICAgICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgICAg ICAgICAgR2xvYnVzWElPU3lzdGVtRGVidWdQcmludGYoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdMT0JVU19JX1hJT19TWVNURU1fREVCVUdfSU5GTywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKF9YSU9TTCgiWyVzXSBmZD0lZCwgQ2FuY2VsaW5nIEFjdGl2ZVxuIiksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfeGlvX25hbWUsIG9wX2luZm8tPmhhbmRs ZS0+ZmQpKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAg ICAgICAgICAgICAgLyogcGVuZCB0aGUgY2FuY2VsIGZvciBhZnRlciBzZWxlY3Qgd2FrZXMgdXAg Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgICBpZighZ2xvYnVzX2xfeGlvX3N5c3RlbV93YWtl dXBfcGVuZGluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICB7CitAQCAtNTE4LDEyICs1MTgs MTIgQEAgZ2xvYnVzX2xfeGlvX3N5c3RlbV9jYW5jZWxfY2IoCisgICAgICAgICAgICAgICAgICAg ICAgICAgZ2xvYnVzX3Jlc3VsdF90IHJlc3VsdDsKKyAKKyAgICAgICAgICAgICAgICAgICAgICAg ICBvcF9pbmZvLT5zdGF0ZSA9IEdMT0JVU19JX1hJT19TWVNURU1fT1BfQ09NUExFVEU7CistICAg ICAgICAgICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgICAgICAgICAgR2xvYnVz WElPU3lzdGVtRGVidWdQcmludGYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JV U19JX1hJT19TWVNURU1fREVCVUdfSU5GTywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KF9YSU9TTCgiWyVzXSBmZD0lZCwgQ2FuY2VsaW5nIFBlbmRpbmdcbiIpLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgX3hpb19uYW1lLCBvcF9pbmZvLT5oYW5kbGUtPmZkKSk7Cist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAg ICAgICAvKiB1bnJlZ2lzdGVyIGFuZCBraWNrb3V0IG5vdyAqLworICAgICAgICAgICAgICAgICAg ICAgICAgIHJlc3VsdCA9IGdsb2J1c19jYWxsYmFja19yZWdpc3Rlcl9vbmVzaG90KAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKK0BAIC02MjEsNyArNjIxLDcgQEAg Z2xvYnVzX2xfeGlvX3N5c3RlbV9yZWdpc3Rlcl9yZWFkX2ZkKAorICAgICAgICAgICAgIHJlc3Vs dCA9IEdsb2J1c1hJT0Vycm9yTm90QWN0aXZhdGVkKCk7CisgICAgICAgICAgICAgZ290byBlcnJv cl9kZWFjdGl2YXRlZDsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgaWYoZmQg Pj0gZ2xvYnVzX2xfeGlvX3N5c3RlbV9tYXhfZmRzKQorICAgICAgICAgeworICAgICAgICAgICAg IHJlc3VsdCA9IEdsb2J1c1hJT0Vycm9yU3lzdGVtUmVzb3VyY2UoX1hJT1NMKCJ0b28gbWFueSBm ZHMiKSk7CitAQCAtNjYxLDcgKzY2MSw3IEBAIGdsb2J1c19sX3hpb19zeXN0ZW1fcmVnaXN0ZXJf cmVhZF9mZCgKKyAgICAgICAgICAqLworICAgICAgICAgZ2xvYnVzX2xfeGlvX3N5c3RlbV9zZWxl Y3Rfd2FrZXVwKCk7CisgICAgIH0KKy0gICAgCisrCisgICAgIEdsb2J1c1hJT1N5c3RlbURlYnVn RXhpdEZEKGZkKTsKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworIAorQEAgLTcwNiwxMyAr NzA2LDEzIEBAIGdsb2J1c19sX3hpb19zeXN0ZW1fcmVnaXN0ZXJfd3JpdGVfZmQoCisgICAgICAg ICAgICAgcmVzdWx0ID0gZ2xvYnVzX2Vycm9yX3B1dCh3cml0ZV9pbmZvLT5lcnJvcik7CisgICAg ICAgICAgICAgZ290byBlcnJvcl9jYW5jZWxlZDsKKyAgICAgICAgIH0KKy0gICAgICAgIAorKwor ICAgICAgICAgaWYoZ2xvYnVzX2xfeGlvX3N5c3RlbV9zaHV0ZG93bl9jYWxsZWQpCisgICAgICAg ICB7CisgICAgICAgICAgICAgcmVzdWx0ID0gR2xvYnVzWElPRXJyb3JOb3RBY3RpdmF0ZWQoKTsK KyAgICAgICAgICAgICBnb3RvIGVycm9yX2RlYWN0aXZhdGVkOworICAgICAgICAgfQorLSAgICAg ICAgCisrCisgICAgICAgICBpZihmZCA+PSBnbG9idXNfbF94aW9fc3lzdGVtX21heF9mZHMpCisg ICAgICAgICB7CisgICAgICAgICAgICAgcmVzdWx0ID0gR2xvYnVzWElPRXJyb3JTeXN0ZW1SZXNv dXJjZShfWElPU0woInRvbyBtYW55IGZkcyIpKTsKK0BAIC03NDMsNyArNzQzLDcgQEAgZ2xvYnVz X2xfeGlvX3N5c3RlbV9yZWdpc3Rlcl93cml0ZV9mZCgKKyAgICAgICAgIHdyaXRlX2luZm8tPnN0 YXRlID0gR0xPQlVTX0lfWElPX1NZU1RFTV9PUF9QRU5ESU5HOworICAgICB9CisgICAgIGdsb2J1 c19tdXRleF91bmxvY2soJmdsb2J1c19sX3hpb19zeXN0ZW1fZmRzZXRfbXV0ZXgpOworLSAgICAK KysKKyAgICAgaWYoZG9fd2FrZXVwKQorICAgICB7CisgICAgICAgICAvKiBJIGRvIHRoaXMgb3V0 c2lkZSB0aGUgbG9jayBiZWNhdXNlIHRoZSBzZWxlY3QgdGhyZWFkIGlzIGxpa2VseQorQEAgLTc1 Miw3ICs3NTIsNyBAQCBnbG9idXNfbF94aW9fc3lzdGVtX3JlZ2lzdGVyX3dyaXRlX2ZkKAorICAg ICAgICAgICovCisgICAgICAgICBnbG9idXNfbF94aW9fc3lzdGVtX3NlbGVjdF93YWtldXAoKTsK KyAgICAgfQorLSAgICAKKysKKyAgICAgR2xvYnVzWElPU3lzdGVtRGVidWdFeGl0RkQoZmQpOwor ICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgCitAQCAtODg1LDcgKzg4NSw3IEBAIGdsb2J1 c19sX3hpb19zeXN0ZW1fa2lja291dCgKKyAgICAgICAgICAgICBvcF9pbmZvLT5zb3AuZGF0YS5z dGFydF9pb3YpOworICAgICAgICAgYnJlYWs7CisgICAgIH0KKy0gICAgCisrCisgICAgIEdsb2J1 c1hJT1N5c3RlbURlYnVnRXhpdEZEKGZkKTsKKyAgICAgR2xvYnVzSVhJT1N5c3RlbUZyZWVPcGVy YXRpb24ob3BfaW5mbyk7CisgfQorQEAgLTg5OSw3ICs4OTksNyBAQCBnbG9idXNfbF94aW9fc3lz dGVtX3NlbGVjdF93YWtldXAodm9pZCkKKyAgICAgR2xvYnVzWElPTmFtZShnbG9idXNfbF94aW9f c3lzdGVtX3NlbGVjdF93YWtldXApOworIAorICAgICBHbG9idXNYSU9TeXN0ZW1EZWJ1Z0VudGVy KCk7CistICAgIAorKworICAgICBieXRlID0gMDsKKyAKKyAgICAgZG8KK0BAIC05OTMsNyArOTkz LDcgQEAgZ2xvYnVzX2xfeGlvX3N5c3RlbV9oYW5kbGVfcmVhZCgKKyAgICAgICAgICAgICAgICAg dG1wX2hhbmRsZS50eXBlID0gR0xPQlVTX1hJT19TWVNURU1fVENQOworIAorICAgICAgICAgICAg ICAgICByYyA9IGdsb2J1c19sX3hpb19zeXN0ZW1fcmVtb3ZlX25vbmJsb2NraW5nKCZ0bXBfaGFu ZGxlKTsKKy0gICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgIHJlYWRfaW5mby0+ bmJ5dGVzKys7CisgICAgICAgICAgICAgICAgIEdsb2J1c1hJT1N5c3RlbURlYnVnUHJpbnRmKAor ICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0lfWElPX1NZU1RFTV9ERUJVR19JTkZPLAorQEAg LTEwMjYsMTIgKzEwMjYsMTIgQEAgZ2xvYnVzX2xfeGlvX3N5c3RlbV9oYW5kbGVfcmVhZCgKKyAg ICAgICAgIHJldHVybiBHTE9CVVNfRkFMU0U7CisgICAgICAgICBicmVhazsKKyAgICAgfQorLSAg ICAKKysKKyAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICB7CisgICAgICAg ICByZWFkX2luZm8tPmVycm9yID0gZ2xvYnVzX2Vycm9yX2dldChyZXN1bHQpOworICAgICB9Cist ICAgIAorKworICAgICAvKiBhbHdheXMgdHJ1ZSBmb3IgYWNjZXB0IG9wZXJhdGlvbnMgKi8KKyAg ICAgaWYocmVhZF9pbmZvLT5uYnl0ZXMgPj0gcmVhZF9pbmZvLT53YWl0Zm9yYnl0ZXMgfHwKKyAg ICAgICAgIHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKK0BAIC0xMTMzLDEyICsxMTMzLDEyIEBA IGdsb2J1c19sX3hpb19zeXN0ZW1faGFuZGxlX3dyaXRlKAorICAgICAgICAgcmV0dXJuIEdMT0JV U19GQUxTRTsKKyAgICAgICAgIGJyZWFrOworICAgICB9CistICAgIAorKworICAgICBpZihyZXN1 bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKyAgICAgICAgIHdyaXRlX2luZm8tPmVycm9y ID0gZ2xvYnVzX2Vycm9yX2dldChyZXN1bHQpOworICAgICB9CistICAgIAorKworICAgICAvKiBh bHdheXMgdHJ1ZSBmb3IgY29ubmVjdCBvcGVyYXRpb25zICovCisgICAgIGlmKHdyaXRlX2luZm8t Pm5ieXRlcyA+PSB3cml0ZV9pbmZvLT53YWl0Zm9yYnl0ZXMgfHwKKyAgICAgICAgIHJlc3VsdCAh PSBHTE9CVVNfU1VDQ0VTUykKK0BAIC0xMTg2LDcgKzExODYsNyBAQCBnbG9idXNfbF94aW9fc3lz dGVtX2JhZF9hcHBsZSh2b2lkKQorICAgICBHbG9idXNYSU9OYW1lKGdsb2J1c19sX3hpb19zeXN0 ZW1fYmFkX2FwcGxlKTsKKyAKKyAgICAgR2xvYnVzWElPU3lzdGVtRGVidWdFbnRlcigpOworLSAg ICAKKysKKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJmdsb2J1c19sX3hpb19zeXN0ZW1fZmRzZXRf bXV0ZXgpOworICAgICB7CisgICAgICAgICBmb3IoZmQgPSAwOyBmZCA8PSBnbG9idXNfbF94aW9f c3lzdGVtX2hpZ2hlc3RfZmQ7IGZkKyspCitAQCAtMTE5OSw5ICsxMTk5LDkgQEAgZ2xvYnVzX2xf eGlvX3N5c3RlbV9iYWRfYXBwbGUodm9pZCkKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICAgICAgR2xvYnVzWElPU3lzdGVtRGVidWdQcmludGYoCisgICAgICAgICAgICAgICAg ICAgICAgICAgR0xPQlVTX0lfWElPX1NZU1RFTV9ERUJVR19JTkZPLAorLSAgICAgICAgICAgICAg ICAgICAgICAgIChfWElPU0woIlslc10gZmQ9JWQsIENhbmNlbGluZyByZWFkIGJhZCBhcHBsZVxu IiksIAorKyAgICAgICAgICAgICAgICAgICAgICAgIChfWElPU0woIlslc10gZmQ9JWQsIENhbmNl bGluZyByZWFkIGJhZCBhcHBsZVxuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgX3hpb19u YW1lLCBmZCkpOworLSAgICAgICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgICAg ICBvcF9pbmZvID0gZ2xvYnVzX2xfeGlvX3N5c3RlbV9yZWFkX29wZXJhdGlvbnNbZmRdOworICAg ICAgICAgICAgICAgICAgICAgaWYob3BfaW5mby0+c3RhdGUgPT0gR0xPQlVTX0lfWElPX1NZU1RF TV9PUF9QRU5ESU5HKQorICAgICAgICAgICAgICAgICAgICAgeworQEAgLTEyMTMsNyArMTIxMyw3 IEBAIGdsb2J1c19sX3hpb19zeXN0ZW1fYmFkX2FwcGxlKHZvaWQpCisgICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CistICAgICAgICAgICAg CisrCisgICAgICAgICAgICAgaWYoRkRfSVNTRVQoZmQsIGdsb2J1c19sX3hpb19zeXN0ZW1fd3Jp dGVfZmRzKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHJjID0gZnN0YXQoZmQs ICZzdGF0X2J1Zik7CitAQCAtMTIyNCw3ICsxMjI0LDcgQEAgZ2xvYnVzX2xfeGlvX3N5c3RlbV9i YWRfYXBwbGUodm9pZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfSV9YSU9fU1lT VEVNX0RFQlVHX0lORk8sCisgICAgICAgICAgICAgICAgICAgICAgICAgKF9YSU9TTCgiWyVzXSBm ZD0lZCwgQ2FuY2VsaW5nIHdyaXRlIGJhZCBhcHBsZVxuIiksCisgICAgICAgICAgICAgICAgICAg ICAgICAgX3hpb19uYW1lLCBmZCkpOworLSAgICAgICAgICAgICAgICAgICAgCisrCisgICAgICAg ICAgICAgICAgICAgICBvcF9pbmZvID0gZ2xvYnVzX2xfeGlvX3N5c3RlbV93cml0ZV9vcGVyYXRp b25zW2ZkXTsKKyAgICAgICAgICAgICAgICAgICAgIGlmKG9wX2luZm8tPnN0YXRlID09IEdMT0JV U19JX1hJT19TWVNURU1fT1BfUEVORElORykKKyAgICAgICAgICAgICAgICAgICAgIHsKK0BAIC0x MjM5LDcgKzEyMzksNyBAQCBnbG9idXNfbF94aW9fc3lzdGVtX2JhZF9hcHBsZSh2b2lkKQorICAg ICAgICAgfQorICAgICB9CisgICAgIGdsb2J1c19tdXRleF91bmxvY2soJmdsb2J1c19sX3hpb19z eXN0ZW1fZmRzZXRfbXV0ZXgpOworLSAgICAKKysKKyAgICAgR2xvYnVzWElPU3lzdGVtRGVidWdF eGl0KCk7CisgfQorIAorQEAgLTEyNjQsNyArMTI2NCw3IEBAIGdsb2J1c19sX3hpb19zeXN0ZW1f cG9sbCgKKyAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnJlYWR5Owor ICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZDsKKyAgICAgICAgIGlu dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZV9lcnJubzsKKy0gICAgICAgIAorKwor ICAgICAgICAgdGltZV9sZWZ0X2lzX3plcm8gPSBHTE9CVVNfRkFMU0U7CisgICAgICAgICB0aW1l X2xlZnRfaXNfaW5maW5pdHkgPSBHTE9CVVNfRkFMU0U7CisgCitAQCAtMTI5NCwxMSArMTI5NCwx MSBAQCBnbG9idXNfbF94aW9fc3lzdGVtX3BvbGwoCisgICAgICAgICAgICAgZ2xvYnVzX2xfeGlv X3N5c3RlbV9zZWxlY3RfYWN0aXZlID0gR0xPQlVTX1RSVUU7CisgICAgICAgICB9CisgICAgICAg ICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZnbG9idXNfbF94aW9fc3lzdGVtX2Zkc2V0X211dGV4KTsK Ky0gICAgICAgIAorKworICAgICAgICAgR2xvYnVzWElPU3lzdGVtRGVidWdQcmludGYoCisgICAg ICAgICAgICAgR0xPQlVTX0lfWElPX1NZU1RFTV9ERUJVR19JTkZPLAorICAgICAgICAgICAgIChf WElPU0woIlslc10gQmVmb3JlIHNlbGVjdFxuIiksIF94aW9fbmFtZSkpOworLSAgICAgICAgICAg ICAgICAgICAgCisrCisgICAgICAgICBucmVhZHkgPSBzZWxlY3QoCisgICAgICAgICAgICAgbnVt LAorICAgICAgICAgICAgIGdsb2J1c19sX3hpb19zeXN0ZW1fcmVhZHlfcmVhZHMsCitAQCAtMTMw OCw3ICsxMzA4LDcgQEAgZ2xvYnVzX2xfeGlvX3N5c3RlbV9wb2xsKAorIAorICAgICAgICAgR2xv YnVzWElPU3lzdGVtVXBkYXRlRXJybm8oKTsKKyAgICAgICAgIHNhdmVfZXJybm8gPSBlcnJubzsK Ky0gICAgICAgIAorKworICAgICAgICAgR2xvYnVzWElPU3lzdGVtRGVidWdQcmludGYoCisgICAg ICAgICAgICAgR0xPQlVTX0lfWElPX1NZU1RFTV9ERUJVR19JTkZPLAorICAgICAgICAgICAgIChf WElPU0woIlslc10gQWZ0ZXIgc2VsZWN0XG4iKSwgX3hpb19uYW1lKSk7CitAQCAtMTMzOSw3ICsx MzM5LDcgQEAgZ2xvYnVzX2xfeGlvX3N5c3RlbV9wb2xsKAorICAgICAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgICAgICBnbG9idXNfbF94aW9fc3lzdGVtX2JhZF9hcHBsZSgpOworICAg ICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAv KgorICAgICAgICAgICAgICAgICAgKiBjYW4ndCByZWFsbHkgZG8gYW55dGhpbmcgYWJvdXQgb3Ro ZXIgZXJyb3JzCisgICAgICAgICAgICAgICAgICAqIHNvLCBzZXQgcmVhZHkgZmRzIHRvIGtub3du IHN0YXRlIGluIGNhc2UgdGhlcmUgYXJlIHRoaW5ncworQEAgLTEzNjEsMTEgKzEzNjEsMTEgQEAg Z2xvYnVzX2xfeGlvX3N5c3RlbV9wb2xsKAorICAgICAgICAgICAgICAgICBmZCA9IChpbnQpIChp bnRwdHJfdCkgZ2xvYnVzX2xpc3RfcmVtb3ZlKAorICAgICAgICAgICAgICAgICAgICAgJmdsb2J1 c19sX3hpb19zeXN0ZW1fY2FuY2VsZWRfcmVhZHMsCisgICAgICAgICAgICAgICAgICAgICBnbG9i dXNfbF94aW9fc3lzdGVtX2NhbmNlbGVkX3JlYWRzKTsKKy0gICAgICAgICAgICAgICAgCisrCisg ICAgICAgICAgICAgICAgIEdsb2J1c1hJT1N5c3RlbURlYnVnUHJpbnRmKAorICAgICAgICAgICAg ICAgICAgICAgR0xPQlVTX0lfWElPX1NZU1RFTV9ERUJVR19JTkZPLAorICAgICAgICAgICAgICAg ICAgICAgKF9YSU9TTCgiWyVzXSBmZD0lZCwgU2V0dGluZyBjYW5jZWxlZCByZWFkXG4iKSwgX3hp b19uYW1lLCBmZCkpOworLSAgICAgICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAg IGlmKCFGRF9JU1NFVChmZCwgZ2xvYnVzX2xfeGlvX3N5c3RlbV9yZWFkeV9yZWFkcykpCisgICAg ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIEZEX1NFVChmZCwgZ2xvYnVzX2xf eGlvX3N5c3RlbV9yZWFkeV9yZWFkcyk7CitAQCAtMTM3OCwxMSArMTM3OCwxMSBAQCBnbG9idXNf bF94aW9fc3lzdGVtX3BvbGwoCisgICAgICAgICAgICAgICAgIGZkID0gKGludCkgKGludHB0cl90 KSBnbG9idXNfbGlzdF9yZW1vdmUoCisgICAgICAgICAgICAgICAgICAgICAmZ2xvYnVzX2xfeGlv X3N5c3RlbV9jYW5jZWxlZF93cml0ZXMsCisgICAgICAgICAgICAgICAgICAgICBnbG9idXNfbF94 aW9fc3lzdGVtX2NhbmNlbGVkX3dyaXRlcyk7CistICAgICAgICAgICAgICAgIAorKworICAgICAg ICAgICAgICAgICBHbG9idXNYSU9TeXN0ZW1EZWJ1Z1ByaW50ZigKKyAgICAgICAgICAgICAgICAg ICAgIEdMT0JVU19JX1hJT19TWVNURU1fREVCVUdfSU5GTywKKyAgICAgICAgICAgICAgICAgICAg IChfWElPU0woIlslc10gZmQ9JWQsIFNldHRpbmcgY2FuY2VsZWQgcmVhZFxuIiksIF94aW9fbmFt ZSwgZmQpKTsKKy0gICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICBpZigh RkRfSVNTRVQoZmQsIGdsb2J1c19sX3hpb19zeXN0ZW1fcmVhZHlfd3JpdGVzKSkKKyAgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgRkRfU0VUKGZkLCBnbG9idXNfbF94aW9f c3lzdGVtX3JlYWR5X3dyaXRlcyk7CitAQCAtMTQ4Niw3ICsxNDg2LDcgQEAgZ2xvYnVzX3hpb19z eXN0ZW1fc29ja2V0X3JlZ2lzdGVyX2Nvbm5lY3QoCisgICAgICAgICBnb3RvIGVycm9yX3JlZ2lz dGVyOworIAorICAgICB9CistICAgIAorKworICAgICAvKiBoYW5kbGUgY291bGQgYmUgZGVzdHJv eWVkIGJ5IHRpbWUgd2UgZ2V0IGhlcmUgLSBubyB0b3VjaCEgKi8KKyAgICAgR2xvYnVzWElPU3lz dGVtRGVidWdFeGl0RkQoZmQpOworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CitAQCAtMTUx NCw3ICsxNTE0LDcgQEAgZ2xvYnVzX3hpb19zeXN0ZW1fc29ja2V0X3JlZ2lzdGVyX2FjY2VwdCgK KyAgICAgR2xvYnVzWElPTmFtZShnbG9idXNfeGlvX3N5c3RlbV9zb2NrZXRfcmVnaXN0ZXJfYWNj ZXB0KTsKKyAKKyAgICAgR2xvYnVzWElPU3lzdGVtRGVidWdFbnRlckZEKGZkKTsKKy0gICAgCisr CisgICAgIEdsb2J1c0lYSU9TeXN0ZW1BbGxvY09wZXJhdGlvbihvcF9pbmZvKTsKKyAgICAgaWYo IW9wX2luZm8pCisgICAgIHsKK0BAIC0xNTM5LDcgKzE1MzksNyBAQCBnbG9idXNfeGlvX3N5c3Rl bV9zb2NrZXRfcmVnaXN0ZXJfYWNjZXB0KAorICAgICAgICAgICAgIF9YSU9TTCgiZ2xvYnVzX2xf eGlvX3N5c3RlbV9yZWdpc3Rlcl9yZWFkX2ZkIiksIHJlc3VsdCk7CisgICAgICAgICBnb3RvIGVy cm9yX3JlZ2lzdGVyOworICAgICB9CistICAgIAorKworICAgICAvKiBoYW5kbGUgY291bGQgYmUg ZGVzdHJveWVkIGJ5IHRpbWUgd2UgZ2V0IGhlcmUgLSBubyB0b3VjaCEgKi8KKyAgICAgR2xvYnVz WElPU3lzdGVtRGVidWdFeGl0RkQoZmQpOworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CitA QCAtMTU3NiwyMyArMTU3NiwyMyBAQCBnbG9idXNfbF94aW9fc3lzdGVtX3JlZ2lzdGVyX3JlYWQo CisgICAgIEdsb2J1c1hJT1N5c3RlbURlYnVnUHJpbnRmKAorICAgICAgICAgR0xPQlVTX0lfWElP X1NZU1RFTV9ERUJVR19EQVRBLAorICAgICAgICAgKF9YSU9TTCgiWyVzXSBXYWl0aW5nIGZvciAl dSBieXRlc1xuIiksIF94aW9fbmFtZSwgKHVuc2lnbmVkKSB3YWl0Zm9yYnl0ZXMpKTsKKy0gICAg ICAgIAorKworICAgICBHbG9idXNJWElPU3lzdGVtQWxsb2NPcGVyYXRpb24ob3BfaW5mbyk7Cisg ICAgIGlmKCFvcF9pbmZvKQorICAgICB7CisgICAgICAgICByZXN1bHQgPSBHbG9idXNYSU9FcnJv ck1lbW9yeSgib3BfaW5mbyIpOworICAgICAgICAgZ290byBlcnJvcl9vcF9pbmZvOworICAgICB9 CistICAgIAorKworICAgICBHbG9idXNJWElPU3lzdGVtQWxsb2NJb3ZlYyh1X2lvdmMsIGlvdik7 CisgICAgIGlmKCFpb3YpCisgICAgIHsKKyAgICAgICAgIHJlc3VsdCA9IEdsb2J1c1hJT0Vycm9y TWVtb3J5KCJpb3YiKTsKKyAgICAgICAgIGdvdG8gZXJyb3JfaW92ZWM7CisgICAgIH0KKy0gICAg CisrCisgICAgIEdsb2J1c0lYSU9VdGlsVHJhbnNmZXJJb3ZlYyhpb3YsIHVfaW92LCB1X2lvdmMp OworLSAgICAKKysKKyAgICAgb3BfaW5mby0+dHlwZSA9IEdMT0JVU19JX1hJT19TWVNURU1fT1Bf UkVBRDsKKyAgICAgb3BfaW5mby0+c29wLmRhdGEuc3RhcnRfaW92ID0gaW92OworICAgICBvcF9p bmZvLT5zb3AuZGF0YS5zdGFydF9pb3ZjID0gdV9pb3ZjOworQEAgLTE2MDAsNyArMTYwMCw3IEBA IGdsb2J1c19sX3hpb19zeXN0ZW1fcmVnaXN0ZXJfcmVhZCgKKyAgICAgb3BfaW5mby0+c29wLmRh dGEuaW92YyA9IHVfaW92YzsKKyAgICAgb3BfaW5mby0+c29wLmRhdGEuYWRkciA9IGZyb207Cisg ICAgIG9wX2luZm8tPnNvcC5kYXRhLmZsYWdzID0gZmxhZ3M7CistICAgIAorKworICAgICBvcF9p bmZvLT5zdGF0ZSA9IEdMT0JVU19JX1hJT19TWVNURU1fT1BfTkVXOworICAgICBvcF9pbmZvLT5v cCA9IG9wOworICAgICBvcF9pbmZvLT5oYW5kbGUgPSBoYW5kbGU7CitAQCAtMTYwOCw3ICsxNjA4 LDcgQEAgZ2xvYnVzX2xfeGlvX3N5c3RlbV9yZWdpc3Rlcl9yZWFkKAorICAgICBvcF9pbmZvLT5z b3AuZGF0YS5jYWxsYmFjayA9IGNhbGxiYWNrOworICAgICBvcF9pbmZvLT53YWl0Zm9yYnl0ZXMg PSB3YWl0Zm9yYnl0ZXM7CisgICAgIG9wX2luZm8tPm9mZnNldCA9IG9mZnNldDsKKy0gICAgCisr CisgICAgIHJlc3VsdCA9IGdsb2J1c19sX3hpb19zeXN0ZW1fcmVnaXN0ZXJfcmVhZF9mZChmZCwg b3BfaW5mbyk7CisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworQEAg LTE2MTYsNyArMTYxNiw3IEBAIGdsb2J1c19sX3hpb19zeXN0ZW1fcmVnaXN0ZXJfcmVhZCgKKyAg ICAgICAgICAgICAiZ2xvYnVzX2xfeGlvX3N5c3RlbV9yZWdpc3Rlcl9yZWFkX2ZkIiwgcmVzdWx0 KTsKKyAgICAgICAgIGdvdG8gZXJyb3JfcmVnaXN0ZXI7CisgICAgIH0KKy0gICAgCisrCisgICAg IC8qIGhhbmRsZSBjb3VsZCBiZSBkZXN0cm95ZWQgYnkgdGltZSB3ZSBnZXQgaGVyZSAtIG5vIHRv dWNoISAqLworICAgICBHbG9idXNYSU9TeXN0ZW1EZWJ1Z0V4aXRGRChmZCk7CisgICAgIHJldHVy biBHTE9CVVNfU1VDQ0VTUzsKK0BAIC0xNzA1LDE0ICsxNzA1LDE0IEBAIGdsb2J1c19sX3hpb19z eXN0ZW1fcmVnaXN0ZXJfd3JpdGUoCisgICAgIEdsb2J1c1hJT1N5c3RlbURlYnVnUHJpbnRmKAor ICAgICAgICAgR0xPQlVTX0lfWElPX1NZU1RFTV9ERUJVR19EQVRBLAorICAgICAgICAgKF9YSU9T TCgiWyVzXSBXYWl0aW5nIGZvciAldSBieXRlc1xuIiksIF94aW9fbmFtZSwgKHVuc2lnbmVkKSB3 YWl0Zm9yYnl0ZXMpKTsKKy0gICAgICAgIAorKworICAgICBHbG9idXNJWElPU3lzdGVtQWxsb2NP cGVyYXRpb24ob3BfaW5mbyk7CisgICAgIGlmKCFvcF9pbmZvKQorICAgICB7CisgICAgICAgICBy ZXN1bHQgPSBHbG9idXNYSU9FcnJvck1lbW9yeSgib3BfaW5mbyIpOworICAgICAgICAgZ290byBl cnJvcl9vcF9pbmZvOworICAgICB9CistICAgIAorKworICAgICBHbG9idXNJWElPU3lzdGVtQWxs b2NJb3ZlYyh1X2lvdmMsIGlvdik7CisgICAgIGlmKCFpb3YpCisgICAgIHsKK0BAIC0xNzIxLDcg KzE3MjEsNyBAQCBnbG9idXNfbF94aW9fc3lzdGVtX3JlZ2lzdGVyX3dyaXRlKAorICAgICB9Cisg CisgICAgIEdsb2J1c0lYSU9VdGlsVHJhbnNmZXJJb3ZlYyhpb3YsIHVfaW92LCB1X2lvdmMpOwor LSAgICAKKysKKyAgICAgb3BfaW5mby0+dHlwZSA9IEdMT0JVU19JX1hJT19TWVNURU1fT1BfV1JJ VEU7CisgICAgIG9wX2luZm8tPnNvcC5kYXRhLnN0YXJ0X2lvdiA9IGlvdjsKKyAgICAgb3BfaW5m by0+c29wLmRhdGEuc3RhcnRfaW92YyA9IHVfaW92YzsKK0BAIC0xNzI5LDcgKzE3MjksNyBAQCBn bG9idXNfbF94aW9fc3lzdGVtX3JlZ2lzdGVyX3dyaXRlKAorICAgICBvcF9pbmZvLT5zb3AuZGF0 YS5pb3ZjID0gdV9pb3ZjOworICAgICBvcF9pbmZvLT5zb3AuZGF0YS5hZGRyID0gdG87CisgICAg IG9wX2luZm8tPnNvcC5kYXRhLmZsYWdzID0gZmxhZ3M7CistICAgIAorKworICAgICBvcF9pbmZv LT5zdGF0ZSA9IEdMT0JVU19JX1hJT19TWVNURU1fT1BfTkVXOworICAgICBvcF9pbmZvLT5vcCA9 IG9wOworICAgICBvcF9pbmZvLT5oYW5kbGUgPSBoYW5kbGU7CitAQCAtMTczNyw3ICsxNzM3LDcg QEAgZ2xvYnVzX2xfeGlvX3N5c3RlbV9yZWdpc3Rlcl93cml0ZSgKKyAgICAgb3BfaW5mby0+c29w LmRhdGEuY2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgb3BfaW5mby0+d2FpdGZvcmJ5dGVzID0g d2FpdGZvcmJ5dGVzOworICAgICBvcF9pbmZvLT5vZmZzZXQgPSBvZmZzZXQ7CistICAgIAorKwor ICAgICByZXN1bHQgPSBnbG9idXNfbF94aW9fc3lzdGVtX3JlZ2lzdGVyX3dyaXRlX2ZkKGZkLCBv cF9pbmZvKTsKKyAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICB7CitAQCAt MTc0NSw3ICsxNzQ1LDcgQEAgZ2xvYnVzX2xfeGlvX3N5c3RlbV9yZWdpc3Rlcl93cml0ZSgKKyAg ICAgICAgICAgICAiZ2xvYnVzX2xfeGlvX3N5c3RlbV9yZWdpc3Rlcl93cml0ZV9mZCIsIHJlc3Vs dCk7CisgICAgICAgICBnb3RvIGVycm9yX3JlZ2lzdGVyOworICAgICB9CistICAgIAorKworICAg ICAvKiBoYW5kbGUgY291bGQgYmUgZGVzdHJveWVkIGJ5IHRpbWUgd2UgZ2V0IGhlcmUgLSBubyB0 b3VjaCEgKi8KKyAgICAgR2xvYnVzWElPU3lzdGVtRGVidWdFeGl0RkQoZmQpOworICAgICByZXR1 cm4gR0xPQlVTX1NVQ0NFU1M7CitAQCAtMTgyNCw3ICsxODI0LDcgQEAgZ2xvYnVzX2xfeGlvX3N5 c3RlbV90cnlfcmVhZCgKKyAgICAgaWYoaGFuZGxlLT50eXBlID09IEdMT0JVU19YSU9fU1lTVEVN X0ZJTEUpCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAg cmVzdWx0OworLSAgICAgICAgCisrCisgICAgICAgICBnbG9idXNfbXV0ZXhfbG9jaygmaGFuZGxl LT5sb2NrKTsKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBpZihoYW5kbGUtPmZpbGVfcG9zaXRp b24gIT0gb2Zmc2V0ICYmCitAQCAtMTgzNSwxOSArMTgzNSwxOSBAQCBnbG9idXNfbF94aW9fc3lz dGVtX3RyeV9yZWFkKAorICAgICAgICAgICAgICAgICAgICAgKCJbZ2xvYnVzX2xfeGlvX3N5c3Rl bV90cnlfcmVhZF0gZmQ9JWQsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hhbmdpbmcg ZmlsZSBwb3NpdGlvbiB0byAlIiBHTE9CVVNfT0ZGX1RfRk9STUFUICJcbiIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGhhbmRsZS0+ZmQsIG9mZnNldCkpOworLSAgICAgICAgICAgICAg ICAKKysKKyAgICAgICAgICAgICAgICAgLyogYXNzdW1lIHN1Y2Nlc3MgYXMgcG9zc2libGUgZmFp bHVyZXMgYXJlIGlnbm9yYWJsZSAqLworICAgICAgICAgICAgICAgICBsc2VlayhoYW5kbGUtPmZk LCBvZmZzZXQsIFNFRUtfU0VUKTsKKyAgICAgICAgICAgICAgICAgaGFuZGxlLT5maWxlX3Bvc2l0 aW9uID0gb2Zmc2V0OworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAKKysKKyAgICAgICAg ICAgICByZXN1bHQgPSBnbG9idXNfaV94aW9fc3lzdGVtX2ZpbGVfdHJ5X3JlYWQoCisgICAgICAg ICAgICAgICAgIGhhbmRsZS0+ZmQsIGlvdiwgaW92YywgbmJ5dGVzKTsKKy0gICAgICAgICAgICAg ICAgCisrCisgICAgICAgICAgICAgaGFuZGxlLT5maWxlX3Bvc2l0aW9uICs9ICpuYnl0ZXM7Cisg ICAgICAgICB9CisgICAgICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZoYW5kbGUtPmxvY2spOwor LSAgICAgICAgCisrCisgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICB9CisgICAgIGVsc2UK K0BAIC0xODc3LDE0ICsxODc3LDE0IEBAIGdsb2J1c19sX3hpb19zeXN0ZW1fcmVhZCgKKyAKKyAg ICAgcmVzdWx0ID0gZ2xvYnVzX2xfeGlvX3N5c3RlbV90cnlfcmVhZCgKKyAgICAgICAgIGhhbmRs ZSwgb2Zmc2V0LCB1X2lvdiwgdV9pb3ZjLCBmbGFncywgZnJvbSwgdV9uYnl0ZXMpOworLSAgICAK KysKKyAgICAgaWYocmVzdWx0ID09IEdMT0JVU19TVUNDRVNTICYmICp1X25ieXRlcyA8IHdhaXRm b3JieXRlcykKKyAgICAgeworICAgICAgICAgc3RydWN0IGlvdmVjICogICAgICAgICAgICAgICAg ICBpb3Y7CisgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlvdmM7Cisg ICAgICAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgIG5ieXRlcyA9ICp1X25ieXRl czsKKyAgICAgICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgdG90YWwgPSBuYnl0 ZXM7CistICAgICAgICAKKysKKyAgICAgICAgIC8qCisgICAgICAgICAgKiBYWFggdGhpcyBpcyBu b3QgdGhyZWFkIHNhZmUuLi4gYm90aCByZWFkcyBhbmQgd3JpdGVzIGFyZSBtdWNraW5nCisgICAg ICAgICAgKiB3aXRoIGJsb2NraW5nIHN0YXR1cy4KK0BAIC0xOTAyLDcgKzE5MDIsNyBAQCBnbG9i dXNfbF94aW9fc3lzdGVtX3JlYWQoCisgICAgICAgICBHbG9idXNJWElPVXRpbFRyYW5zZmVySW92 ZWMoaW92LCB1X2lvdiwgdV9pb3ZjKTsKKyAgICAgICAgIHVfaW92ID0gaW92OworICAgICAgICAg aW92YyA9IHVfaW92YzsKKy0gICAgICAgIAorKworICAgICAgICAgZG8KKyAgICAgICAgIHsKKyAg ICAgICAgICAgICBpZih0b3RhbCA+IDApCitAQCAtMTkxMCwxNiArMTkxMCwxNiBAQCBnbG9idXNf bF94aW9fc3lzdGVtX3JlYWQoCisgICAgICAgICAgICAgICAgIC8qIG9ubHkgY2FwdHVyZSBzb3Vy Y2UgZmlyc3QgdGltZSBhcm91bmQgKi8KKyAgICAgICAgICAgICAgICAgZnJvbSA9IEdMT0JVU19O VUxMOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBvZmZz ZXQgKz0gbmJ5dGVzOworICAgICAgICAgICAgIEdsb2J1c0lYSU9VdGlsQWRqdXN0SW92ZWMoaW92 LCBpb3ZjLCBuYnl0ZXMpOworICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX3hpb19zeXN0 ZW1fdHJ5X3JlYWQoCisgICAgICAgICAgICAgICAgIGhhbmRsZSwgb2Zmc2V0LCBpb3YsIGlvdmMs IGZsYWdzLCBmcm9tLCAmbmJ5dGVzKTsKKyAgICAgICAgICAgICB0b3RhbCArPSBuYnl0ZXM7Cisg ICAgICAgICB9IHdoaWxlKHJlc3VsdCA9PSBHTE9CVVNfU1VDQ0VTUyAmJiBuYnl0ZXMgJiYgdG90 YWwgPCB3YWl0Zm9yYnl0ZXMpOworLSAgICAgICAgCisrCisgICAgICAgICAqdV9uYnl0ZXMgPSB0 b3RhbDsKKy0gICAgCisrCisgICAgICAgICBHbG9idXNJWElPU3lzdGVtRnJlZUlvdmVjKHVfaW92 YywgKGdsb2J1c194aW9faW92ZWNfdCAqKSB1X2lvdik7CisgICAgICAgICByYyA9IGdsb2J1c19s X3hpb19zeXN0ZW1fYWRkX25vbmJsb2NraW5nKGhhbmRsZSk7CisgICAgIH0KK0BAIC0xOTc0LDcg KzE5NzQsNyBAQCBnbG9idXNfbF94aW9fc3lzdGVtX3RyeV93cml0ZSgKKyAgICAgaWYoaGFuZGxl LT50eXBlID09IEdMT0JVU19YSU9fU1lTVEVNX0ZJTEUpCisgICAgIHsKKyAgICAgICAgIGdsb2J1 c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgcmVzdWx0OworLSAgICAgICAgCisrCisgICAgICAg ICBnbG9idXNfbXV0ZXhfbG9jaygmaGFuZGxlLT5sb2NrKTsKKyAgICAgICAgIHsKKyAgICAgICAg ICAgICBpZihoYW5kbGUtPmZpbGVfcG9zaXRpb24gIT0gb2Zmc2V0ICYmCitAQCAtMTk4NSwxOSAr MTk4NSwxOSBAQCBnbG9idXNfbF94aW9fc3lzdGVtX3RyeV93cml0ZSgKKyAgICAgICAgICAgICAg ICAgICAgICgiW2dsb2J1c19sX3hpb19zeXN0ZW1fdHJ5X3dyaXRlXSBmZD0lZCwgIgorICAgICAg ICAgICAgICAgICAgICAgICAgICJDaGFuZ2luZyBmaWxlIHBvc2l0aW9uIHRvICUiIEdMT0JVU19P RkZfVF9GT1JNQVQgIlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5m ZCwgb2Zmc2V0KSk7CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAvKiBh c3N1bWUgc3VjY2VzcyBhcyBwb3NzaWJsZSBmYWlsdXJlcyBhcmUgaWdub3JhYmxlICovCisgICAg ICAgICAgICAgICAgIGxzZWVrKGhhbmRsZS0+ZmQsIG9mZnNldCwgU0VFS19TRVQpOworICAgICAg ICAgICAgICAgICBoYW5kbGUtPmZpbGVfcG9zaXRpb24gPSBvZmZzZXQ7CisgICAgICAgICAgICAg fQorLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19pX3hpb19z eXN0ZW1fZmlsZV90cnlfd3JpdGUoCisgICAgICAgICAgICAgICAgIGhhbmRsZS0+ZmQsIGlvdiwg aW92YywgbmJ5dGVzKTsKKy0gICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgaGFuZGxl LT5maWxlX3Bvc2l0aW9uICs9ICpuYnl0ZXM7CisgICAgICAgICB9CisgICAgICAgICBnbG9idXNf bXV0ZXhfdW5sb2NrKCZoYW5kbGUtPmxvY2spOworLSAgICAgICAgCisrCisgICAgICAgICByZXR1 cm4gcmVzdWx0OworICAgICB9CisgICAgIGVsc2UKK0BAIC0yMDI3LDE0ICsyMDI3LDE0IEBAIGds b2J1c19sX3hpb19zeXN0ZW1fd3JpdGUoCisgCisgICAgIHJlc3VsdCA9IGdsb2J1c19sX3hpb19z eXN0ZW1fdHJ5X3dyaXRlKAorICAgICAgICAgaGFuZGxlLCBvZmZzZXQsIHVfaW92LCB1X2lvdmMs IGZsYWdzLCB0bywgdV9uYnl0ZXMpOworLSAgICAKKysKKyAgICAgaWYocmVzdWx0ID09IEdMT0JV U19TVUNDRVNTICYmICp1X25ieXRlcyA8IHdhaXRmb3JieXRlcykKKyAgICAgeworICAgICAgICAg c3RydWN0IGlvdmVjICogICAgICAgICAgICAgICAgICBpb3Y7CisgICAgICAgICBpbnQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGlvdmM7CisgICAgICAgICBnbG9idXNfc2l6ZV90ICAgICAg ICAgICAgICAgICAgIG5ieXRlcyA9ICp1X25ieXRlczsKKyAgICAgICAgIGdsb2J1c19zaXplX3Qg ICAgICAgICAgICAgICAgICAgdG90YWwgPSBuYnl0ZXM7CistICAgICAgICAKKysKKyAgICAgICAg IC8qCisgICAgICAgICAgKiBYWFggdGhpcyBpcyBub3QgdGhyZWFkIHNhZmUuLi4gYm90aCByZWFk cyBhbmQgd3JpdGVzIGFyZSBtdWNraW5nCisgICAgICAgICAgKiB3aXRoIGJsb2NraW5nIHN0YXR1 cworQEAgLTIwNTAsNyArMjA1MCw3IEBAIGdsb2J1c19sX3hpb19zeXN0ZW1fd3JpdGUoCisgICAg ICAgICBHbG9idXNJWElPVXRpbFRyYW5zZmVySW92ZWMoaW92LCB1X2lvdiwgdV9pb3ZjKTsKKyAg ICAgICAgIHVfaW92ID0gaW92OworICAgICAgICAgaW92YyA9IHVfaW92YzsKKy0gICAgICAgIAor KworICAgICAgICAgZG8KKyAgICAgICAgIHsKKyAgICAgICAgICAgICBvZmZzZXQgKz0gbmJ5dGVz OworQEAgLTIwNTksOSArMjA1OSw5IEBAIGdsb2J1c19sX3hpb19zeXN0ZW1fd3JpdGUoCisgICAg ICAgICAgICAgICAgIGhhbmRsZSwgb2Zmc2V0LCBpb3YsIGlvdmMsIGZsYWdzLCB0bywgJm5ieXRl cyk7CisgICAgICAgICAgICAgdG90YWwgKz0gbmJ5dGVzOworICAgICAgICAgfSB3aGlsZShyZXN1 bHQgPT0gR0xPQlVTX1NVQ0NFU1MgJiYgbmJ5dGVzICYmIHRvdGFsIDwgd2FpdGZvcmJ5dGVzKTsK Ky0gICAgICAgIAorKworICAgICAgICAgKnVfbmJ5dGVzID0gdG90YWw7CistICAgIAorKworICAg ICAgICAgR2xvYnVzSVhJT1N5c3RlbUZyZWVJb3ZlYyh1X2lvdmMsIChnbG9idXNfeGlvX2lvdmVj X3QgKikgdV9pb3YpOworICAgICAgICAgcmMgPSBnbG9idXNfbF94aW9fc3lzdGVtX2FkZF9ub25i bG9ja2luZyhoYW5kbGUpOworICAgICB9CitAQCAtMjExMiwxOSArMjExMiwxOSBAQCBnbG9idXNf bF94aW9fc3lzdGVtX2Nsb3NlKAorICAgICBHbG9idXNYSU9OYW1lKGdsb2J1c19sX3hpb19zeXN0 ZW1fY2xvc2UpOworIAorICAgICBHbG9idXNYSU9TeXN0ZW1EZWJ1Z0VudGVyRkQoZmQpOworLSAg ICAKKysKKyAgICAgZG8KKyAgICAgeworICAgICAgICAgcmMgPSBjbG9zZShmZCk7CisgICAgICAg ICBHbG9idXNYSU9TeXN0ZW1VcGRhdGVFcnJubygpOworICAgICB9IHdoaWxlKHJjIDwgMCAmJiBl cnJubyA9PSBFSU5UUik7CistICAgIAorKworICAgICBpZihyYyA8IDApCisgICAgIHsKKyAgICAg ICAgIHJlc3VsdCA9IEdsb2J1c1hJT0Vycm9yU3lzdGVtRXJyb3IoImNsb3NlIiwgZXJybm8pOwor ICAgICAgICAgZ290byBlcnJvcl9jbG9zZTsKKyAgICAgfQorLSAgICAgICAgCisrCisgICAgIEds b2J1c1hJT1N5c3RlbURlYnVnRXhpdEZEKGZkKTsKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNT OworIAorQEAgLTIxMzksMTggKzIxMzksMTggQEAgZ2xvYnVzX3hpb19zeXN0ZW1fZmlsZV9nZXRf cG9zaXRpb24oCisgeworICAgICBnbG9idXNfb2ZmX3QgICAgICAgICAgICAgICAgICAgICAgICBv ZmZzZXQ7CisgICAgIEdsb2J1c1hJT05hbWUoZ2xvYnVzX3hpb19zeXN0ZW1fZmlsZV9nZXRfcG9z aXRpb24pOworLSAgICAKKysKKyAgICAgR2xvYnVzWElPU3lzdGVtRGVidWdFbnRlckZEKGZkKTsK Ky0gICAgCisrCisgICAgIC8qIGlnbm9yZSBlcnJvcnMsIG1heSBiZSBhIHBpcGUgb3Igb3RoZXIg dW5zZWVrYWJsZSAqLworICAgICBvZmZzZXQgPSBsc2VlayhmZCwgMCwgU0VFS19DVVIpOworICAg ICBpZihvZmZzZXQgPT0gLTEpCisgICAgIHsKKyAgICAgICAgIG9mZnNldCA9IDA7CisgICAgIH0K Ky0gICAgCisrCisgICAgIEdsb2J1c1hJT1N5c3RlbURlYnVnRXhpdEZEKGZkKTsKKy0gICAgCisr CisgICAgIHJldHVybiBvZmZzZXQ7CisgfQorIAorQEAgLTIxNjEsMTYgKzIxNjEsMTYgQEAgZ2xv YnVzX3hpb19zeXN0ZW1fZmlsZV9nZXRfc2l6ZSgKKyAgICAgZ2xvYnVzX29mZl90ICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZSA9IC0xOworICAgICBzdHJ1Y3Qgc3RhdCAgICAgICAgICAgICAg ICAgICAgICAgICBidWY7CisgICAgIEdsb2J1c1hJT05hbWUoZ2xvYnVzX3hpb19zeXN0ZW1fZmls ZV9nZXRfc2l6ZSk7CistICAgIAorKworICAgICBHbG9idXNYSU9TeXN0ZW1EZWJ1Z0VudGVyRkQo ZmQpOworLSAgICAKKysKKyAgICAgaWYoZnN0YXQoZmQsICZidWYpID09IDApCisgICAgIHsKKyAg ICAgICAgIHNpemUgPSBidWYuc3Rfc2l6ZTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgR2xvYnVz WElPU3lzdGVtRGVidWdFeGl0RkQoZmQpOworLSAgICAKKysKKyAgICAgcmV0dXJuIHNpemU7Cisg fQorIAorQEAgLTIxOTAsNyArMjE5MCw3IEBAIGdsb2J1c194aW9fc3lzdGVtX2NvbnZlcnRfc3Rk aW8oCisgICAgIHsKKyAgICAgICAgIHJldHVybiBmaWxlbm8oc3RkZXJyKTsKKyAgICAgfQorLSAg ICAKKysKKyAgICAgcmV0dXJuIEdMT0JVU19YSU9fU1lTVEVNX0lOVkFMSURfRklMRTsKKyB9Cisg CitAQCAtMjIwMiw5ICsyMjAyLDkgQEAgZ2xvYnVzX3hpb19zeXN0ZW1fZmlsZV90cnVuY2F0ZSgK KyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OworICAgICBp bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYzsKKyAgICAgR2xvYnVzWElPTmFt ZShnbG9idXNfeGlvX3N5c3RlbV9maWxlX3RydW5jYXRlKTsKKy0gICAgCisrCisgICAgIEdsb2J1 c1hJT1N5c3RlbURlYnVnRW50ZXJGRChmZCk7CistICAgIAorKworICNpZmRlZiBUQVJHRVRfQVJD SF9BUk0KKyAgICAgc2V0RXJybm8oRUlOVkFMKTsKKyAKK0BAIC0yMjE3LDcgKzIyMTcsNyBAQCBn bG9idXNfeGlvX3N5c3RlbV9maWxlX3RydW5jYXRlKAorICAgICAgICAgcmVzdWx0ID0gR2xvYnVz WElPRXJyb3JTeXN0ZW1FcnJvcigiZnRydW5jYXRlIiwgZXJybm8pOworICAgICAgICAgZ290byBl cnJvcl90cnVuY2F0ZTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgR2xvYnVzWElPU3lzdGVtRGVi dWdFeGl0RkQoZmQpOworICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgCitAQCAtMjIzNiwx MCArMjIzNiwxMCBAQCBnbG9idXNfeGlvX3N5c3RlbV9maWxlX29wZW4oCisgeworICAgICBnbG9i dXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAgIEdsb2J1c1hJT05h bWUoZ2xvYnVzX3hpb19zeXN0ZW1fZmlsZV9vcGVuKTsKKy0gICAgCisrCisgICAgICpmZCA9IC0x OworICAgICBHbG9idXNYSU9TeXN0ZW1EZWJ1Z0VudGVyRkQoKmZkKTsKKy0gICAgCisrCisgICAg IGRvCisgICAgIHsKKyAgICAgICAgICpmZCA9IG9wZW4oZmlsZW5hbWUsIGZsYWdzLCBtb2RlKTsK K0BAIC0yMjUxLDEwICsyMjUxLDEwIEBAIGdsb2J1c194aW9fc3lzdGVtX2ZpbGVfb3BlbigKKyAg ICAgICAgIHJlc3VsdCA9IEdsb2J1c1hJT0Vycm9yU3lzdGVtRXJyb3IoIm9wZW4iLCBlcnJubyk7 CisgICAgICAgICBnb3RvIGVycm9yX29wZW47CisgICAgIH0KKy0gICAgICAgIAorKworICAgICAv KiBhbGwgaGFuZGxlcyBjcmVhdGVkIGJ5IG1lIGFyZSBjbG9zZWQgb24gZXhlYyAqLworICAgICBm Y250bCgqZmQsIEZfU0VURkQsIEZEX0NMT0VYRUMpOworLSAgICAKKysKKyAgICAgR2xvYnVzWElP U3lzdGVtRGVidWdQcmludGYoCisgICAgICAgICBHTE9CVVNfSV9YSU9fU1lTVEVNX0RFQlVHX0lO Rk8sCisgICAgICAgICAoIlslc10gT3BlbmVkIGZpbGUsICVzIGZkPSVkXG4iLCBfeGlvX25hbWUs IGZpbGVuYW1lLCAqZmQpKTsKK0BAIC0yMjgzLDEwICsyMjgzLDEwIEBAIGdsb2J1c194aW9fc3lz dGVtX3NvY2tldF9jcmVhdGUoCisgeworICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAg ICAgICAgICByZXN1bHQ7CisgICAgIEdsb2J1c1hJT05hbWUoZ2xvYnVzX3hpb19zeXN0ZW1fc29j a2V0X2NyZWF0ZSk7CistICAgIAorKworICAgICAqZmQgPSAtMTsKKyAgICAgR2xvYnVzWElPU3lz dGVtRGVidWdFbnRlckZEKCpmZCk7CistICAgIAorKworICAgICAqZmQgPSBzb2NrZXQoZG9tYWlu LCB0eXBlLCBwcm90b2NvbCk7CisgICAgIEdsb2J1c1hJT1N5c3RlbVVwZGF0ZUVycm5vKCk7Cisg ICAgIGlmKCpmZCA9PSAtMSkKK0BAIC0yMjk0LDcgKzIyOTQsNyBAQCBnbG9idXNfeGlvX3N5c3Rl bV9zb2NrZXRfY3JlYXRlKAorICAgICAgICAgcmVzdWx0ID0gR2xvYnVzWElPRXJyb3JTeXN0ZW1F cnJvcigic29ja2V0IiwgZXJybm8pOworICAgICAgICAgZ290byBlcnJvcl9zb2NrZXQ7CisgICAg IH0KKy0gICAgCisrCisgICAgIC8qIGFsbCBoYW5kbGVzIGNyZWF0ZWQgYnkgbWUgYXJlIGNsb3Nl ZCBvbiBleGVjICovCisgICAgIGZjbnRsKCpmZCwgRl9TRVRGRCwgRkRfQ0xPRVhFQyk7CisgCitA QCAtMjMxNiwxNiArMjMxNiwxNiBAQCBnbG9idXNfeGlvX3N5c3RlbV9zb2NrZXRfc2V0c29ja29w dCgKKyB7CisgICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsK KyAgICAgR2xvYnVzWElPTmFtZShnbG9idXNfeGlvX3N5c3RlbV9zb2NrZXRfc2V0c29ja29wdCk7 CistICAgIAorKworICAgICBHbG9idXNYSU9TeXN0ZW1EZWJ1Z0VudGVyRkQoc29ja2V0KTsKKy0g ICAgCisrCisgICAgIGlmKHNldHNvY2tvcHQoc29ja2V0LCBsZXZlbCwgb3B0bmFtZSwgKHZvaWQg Kikgb3B0dmFsLCBvcHRsZW4pIDwgMCkKKyAgICAgeworICAgICAgICAgR2xvYnVzWElPU3lzdGVt VXBkYXRlRXJybm8oKTsKKyAgICAgICAgIHJlc3VsdCA9IEdsb2J1c1hJT0Vycm9yU3lzdGVtRXJy b3IoInNldHNvY2tvcHQiLCBlcnJubyk7CisgICAgICAgICBnb3RvIGVycm9yX3NldHNvY2tvcHQ7 CisgICAgIH0KKy0gICAgCisrCisgICAgIEdsb2J1c1hJT1N5c3RlbURlYnVnRXhpdEZEKHNvY2tl dCk7CisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAKK0BAIC0yMzQ0LDE2ICsyMzQ0LDE2 IEBAIGdsb2J1c194aW9fc3lzdGVtX3NvY2tldF9nZXRzb2Nrb3B0KAorIHsKKyAgICAgZ2xvYnVz X3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OworICAgICBHbG9idXNYSU9OYW1l KGdsb2J1c194aW9fc3lzdGVtX3NvY2tldF9nZXRzb2Nrb3B0KTsKKy0gICAgCisrCisgICAgIEds b2J1c1hJT1N5c3RlbURlYnVnRW50ZXJGRChzb2NrZXQpOworLSAgICAKKysKKyAgICAgaWYoZ2V0 c29ja29wdChzb2NrZXQsIGxldmVsLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbikgPCAwKQorICAg ICB7CisgICAgICAgICBHbG9idXNYSU9TeXN0ZW1VcGRhdGVFcnJubygpOworICAgICAgICAgcmVz dWx0ID0gR2xvYnVzWElPRXJyb3JTeXN0ZW1FcnJvcigiZ2V0c29ja29wdCIsIGVycm5vKTsKKyAg ICAgICAgIGdvdG8gZXJyb3JfZ2V0c29ja29wdDsKKyAgICAgfQorLSAgICAKKysKKyAgICAgR2xv YnVzWElPU3lzdGVtRGVidWdFeGl0RkQoc29ja2V0KTsKKyAgICAgcmV0dXJuIEdMT0JVU19TVUND RVNTOworIAorQEAgLTIzNzAsMTYgKzIzNzAsMTYgQEAgZ2xvYnVzX3hpb19zeXN0ZW1fc29ja2V0 X2dldHNvY2tuYW1lKAorIHsKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAg ICAgcmVzdWx0OworICAgICBHbG9idXNYSU9OYW1lKGdsb2J1c194aW9fc3lzdGVtX3NvY2tldF9n ZXRzb2NrbmFtZSk7CistICAgIAorKworICAgICBHbG9idXNYSU9TeXN0ZW1EZWJ1Z0VudGVyRkQo c29ja2V0KTsKKy0gICAgCisrCisgICAgIGlmKGdldHNvY2tuYW1lKHNvY2tldCwgbmFtZSwgbmFt ZWxlbikgPCAwKQorICAgICB7CisgICAgICAgICBHbG9idXNYSU9TeXN0ZW1VcGRhdGVFcnJubygp OworICAgICAgICAgcmVzdWx0ID0gR2xvYnVzWElPRXJyb3JTeXN0ZW1FcnJvcigiZ2V0c29ja25h bWUiLCBlcnJubyk7CisgICAgICAgICBnb3RvIGVycm9yX2dldHNvY2tuYW1lOworICAgICB9Cist ICAgIAorKworICAgICBHbG9idXNYSU9TeXN0ZW1EZWJ1Z0V4aXRGRChzb2NrZXQpOworICAgICBy ZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgCitAQCAtMjM5NiwxNiArMjM5NiwxNiBAQCBnbG9idXNf eGlvX3N5c3RlbV9zb2NrZXRfZ2V0cGVlcm5hbWUoCisgeworICAgICBnbG9idXNfcmVzdWx0X3Qg ICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAgIEdsb2J1c1hJT05hbWUoZ2xvYnVzX3hp b19zeXN0ZW1fc29ja2V0X2dldHBlZXJuYW1lKTsKKy0gICAgCisrCisgICAgIEdsb2J1c1hJT1N5 c3RlbURlYnVnRW50ZXJGRChzb2NrZXQpOworLSAgICAKKysKKyAgICAgaWYoZ2V0cGVlcm5hbWUo c29ja2V0LCBuYW1lLCBuYW1lbGVuKSA8IDApCisgICAgIHsKKyAgICAgICAgIEdsb2J1c1hJT1N5 c3RlbVVwZGF0ZUVycm5vKCk7CisgICAgICAgICByZXN1bHQgPSBHbG9idXNYSU9FcnJvclN5c3Rl bUVycm9yKCJnZXRwZWVybmFtZSIsIGVycm5vKTsKKyAgICAgICAgIGdvdG8gZXJyb3JfZ2V0cGVl cm5hbWU7CisgICAgIH0KKy0gICAgCisrCisgICAgIEdsb2J1c1hJT1N5c3RlbURlYnVnRXhpdEZE KHNvY2tldCk7CisgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAKK0BAIC0yNDIyLDE2ICsy NDIyLDE2IEBAIGdsb2J1c194aW9fc3lzdGVtX3NvY2tldF9iaW5kKAorIHsKKyAgICAgZ2xvYnVz X3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OworICAgICBHbG9idXNYSU9OYW1l KGdsb2J1c194aW9fc3lzdGVtX3NvY2tldF9iaW5kKTsKKy0gICAgCisrCisgICAgIEdsb2J1c1hJ T1N5c3RlbURlYnVnRW50ZXJGRChzb2NrZXQpOworLSAgICAKKysKKyAgICAgaWYoYmluZChzb2Nr ZXQsIGFkZHIsIGFkZHJsZW4pIDwgMCkKKyAgICAgeworICAgICAgICAgR2xvYnVzWElPU3lzdGVt VXBkYXRlRXJybm8oKTsKKyAgICAgICAgIHJlc3VsdCA9IEdsb2J1c1hJT0Vycm9yU3lzdGVtRXJy b3IoImJpbmQiLCBlcnJubyk7CisgICAgICAgICBnb3RvIGVycm9yX2JpbmQ7CisgICAgIH0KKy0g ICAgCisrCisgICAgIEdsb2J1c1hJT1N5c3RlbURlYnVnRXhpdEZEKHNvY2tldCk7CisgICAgIHJl dHVybiBHTE9CVVNfU1VDQ0VTUzsKKyAKK0BAIC0yNDQ3LDE2ICsyNDQ3LDE2IEBAIGdsb2J1c194 aW9fc3lzdGVtX3NvY2tldF9saXN0ZW4oCisgeworICAgICBnbG9idXNfcmVzdWx0X3QgICAgICAg ICAgICAgICAgICAgICByZXN1bHQ7CisgICAgIEdsb2J1c1hJT05hbWUoZ2xvYnVzX3hpb19zeXN0 ZW1fc29ja2V0X2xpc3Rlbik7CistICAgIAorKworICAgICBHbG9idXNYSU9TeXN0ZW1EZWJ1Z0Vu dGVyRkQoc29ja2V0KTsKKy0gICAgCisrCisgICAgIGlmKGxpc3Rlbihzb2NrZXQsIGJhY2tsb2cp IDwgMCkKKyAgICAgeworICAgICAgICAgR2xvYnVzWElPU3lzdGVtVXBkYXRlRXJybm8oKTsKKyAg ICAgICAgIHJlc3VsdCA9IEdsb2J1c1hJT0Vycm9yU3lzdGVtRXJyb3IoImxpc3RlbiIsIGVycm5v KTsKKyAgICAgICAgIGdvdG8gZXJyb3JfbGlzdGVuOworICAgICB9CistICAgIAorKworICAgICBH bG9idXNYSU9TeXN0ZW1EZWJ1Z0V4aXRGRChzb2NrZXQpOworICAgICByZXR1cm4gR0xPQlVTX1NV Q0NFU1M7CisgCitAQCAtMjQ3NCwyMSArMjQ3NCwyMSBAQCBnbG9idXNfeGlvX3N5c3RlbV9zb2Nr ZXRfY29ubmVjdCgKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVz dWx0OworICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYzsKKyAgICAg R2xvYnVzWElPTmFtZShnbG9idXNfeGlvX3N5c3RlbV9zb2NrZXRfY29ubmVjdCk7CistICAgIAor KworICAgICBHbG9idXNYSU9TeXN0ZW1EZWJ1Z0VudGVyRkQoc29ja2V0KTsKKy0gICAgCisrCisg ICAgIGRvCisgICAgIHsKKyAgICAgICAgIHJjID0gY29ubmVjdChzb2NrZXQsIGFkZHIsIGFkZHJs ZW4pOworICAgICAgICAgR2xvYnVzWElPU3lzdGVtVXBkYXRlRXJybm8oKTsKKyAgICAgfSB3aGls ZShyYyA8IDAgJiYgZXJybm8gPT0gRUlOVFIpOworLSAgICAgICAgCisrCisgICAgIGlmKHJjIDwg MCkKKyAgICAgeworICAgICAgICAgcmVzdWx0ID0gR2xvYnVzWElPRXJyb3JTeXN0ZW1FcnJvcigi Y29ubmVjdCIsIGVycm5vKTsKKyAgICAgICAgIGdvdG8gZXJyb3JfY29ubmVjdDsKKyAgICAgfQor LSAgICAKKysKKyAgICAgR2xvYnVzWElPU3lzdGVtRGVidWdFeGl0RkQoc29ja2V0KTsKKyAgICAg cmV0dXJuIEdMT0JVU19TVUNDRVNTOworIAorZGlmZiAtLWdpdCBhL3hpby9zcmMvdGVzdC9kcml2 ZXJzL2dsb2J1c194aW9fc210cC5jIGIveGlvL3NyYy90ZXN0L2RyaXZlcnMvZ2xvYnVzX3hpb19z bXRwLmMKK2luZGV4IDA4NTY5YzA1Ni4uODQwMDNmOTNkIDEwMDY0NAorLS0tIGEveGlvL3NyYy90 ZXN0L2RyaXZlcnMvZ2xvYnVzX3hpb19zbXRwLmMKKysrKyBiL3hpby9zcmMvdGVzdC9kcml2ZXJz L2dsb2J1c194aW9fc210cC5jCitAQCAtMTIzLDcgKzEyMyw3IEBAIGdsb2J1c19sX3hpb19zbXRw X2F0dHJfY250bCgKKyAgICAgaWYoY21kID09IDEpCisgICAgIHsKKyAgICAgICAgIHRvX2FkZHIg PSAoY2hhciAqKSB2YV9hcmcoYXAsIGNoYXIgKik7CistICAgICAgICBzcHJpbnRmKGluZm8tPnRv X2FkZHJlc3MsICIlcyIsIHRvX2FkZHIpOyAgICAgICAgCisrICAgICAgICBzcHJpbnRmKGluZm8t PnRvX2FkZHJlc3MsICIlcyIsIHRvX2FkZHIpOworICAgICB9CisgCisgICAgIHJldHVybiBHTE9C VVNfU1VDQ0VTUzsKK0BAIC0yMjQsNyArMjI0LDcgQEAgZ2xvYnVzX2xfeGlvX3NtdHBfcmVhZF9o ZWFkZXJfY2IoCisgICAgIHsKKyAgICAgICAgIC8qIGlmIHdlIGhhdmUgbm90IHJlY2lldmVkIHRo ZSBlbnRpcmUgbWVzc2FnZSByZXBvc3QgKi8KKyAgICAgICAgIGluZm8tPnJlYWRfb2Zmc2V0ICs9 IG5ieXRlczsKKy0gICAgICAgIGlmKGluZm8tPnJlYWRfb2Zmc2V0IDwgMiB8fCAKKysgICAgICAg IGlmKGluZm8tPnJlYWRfb2Zmc2V0IDwgMiB8fAorICAgICAgICAgICAgIGluZm8tPm1lc3NhZ2Vb aW5mby0+cmVhZF9vZmZzZXQgLSAyXSAhPSAnXHInIHx8CisgICAgICAgICAgICAgaW5mby0+bWVz c2FnZVtpbmZvLT5yZWFkX29mZnNldCAtIDFdICE9ICdcbicpCisgICAgICAgICB7CitAQCAtMzE4 LDcgKzMxOCw3IEBAIGdsb2J1c19sX3hpb19zbXRwX29wZW5fY2IoCisgICAgIHsKKyAgICAgICAg IG5leHRfc3RhdGUoaW5mbywgb3ApOworICAgICB9CistfSAgIAorK30KKyAKKyBzdGF0aWMKKyBn bG9idXNfcmVzdWx0X3QKK0BAIC0zNTIsOSArMzUyLDkgQEAgZ2xvYnVzX2xfeGlvX3NtdHBfY2xv c2VfY2IoCisgICAgIGdsb2J1c194aW9fb3BlcmF0aW9uX3QgICAgICAgICAgICAgIG9wLAorICAg ICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICByZXN1bHQsCisgICAgIHZvaWQg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfYXJnKQorLXsgICAKKyt7CisgICAg IGdsb2J1c194aW9fZHJpdmVyX2ZpbmlzaGVkX2Nsb3NlKG9wLCByZXN1bHQpOworLX0gICAKKyt9 CisgCisgdm9pZAorIGdsb2J1c19sX3hpb19zbXRwX3dyaXRlX2Nsb3NlX2NiKAorQEAgLTUxNSw3 ICs1MTUsNyBAQCBnbG9idXNfbF94aW9fc210cF9hY3RpdmF0ZSh2b2lkKQorIAorICAgICBnbG9i dXNfbF9yZXR1cm5fYWRkcmVzcyA9IGdsb2J1c19jb21tb25fY3JlYXRlX3N0cmluZygiJXNAJXMi LAorICAgICAgICAgdXNlcm5hbWUsIGdsb2J1c19sX2hvc3RuYW1lKTsKKy0gICAgCisrCisgICAg IGlmKHJjID09IEdMT0JVU19TVUNDRVNTKQorICAgICB7CisgICAgICAgICBHbG9idXNYSU9SZWdp c3RlckRyaXZlcihzbXRwKTsKK2RpZmYgLS1naXQgYS94aW8vc3JjL3Rlc3QvZ2xvYnVzX3V0cF9t YWluLmMgYi94aW8vc3JjL3Rlc3QvZ2xvYnVzX3V0cF9tYWluLmMKK2luZGV4IDY5OGU0YjMxOC4u MTg0YjM5NWE3IDEwMDY0NAorLS0tIGEveGlvL3NyYy90ZXN0L2dsb2J1c191dHBfbWFpbi5jCisr KysgYi94aW8vc3JjL3Rlc3QvZ2xvYnVzX3V0cF9tYWluLmMKK0BAIC00NSw3ICs0NSw3IEBAIFB1 YmxpYyBmdW5jdGlvbnMgZm9yIHRoZSBVbm5hbWVkIFRpbWluZyBQYWNrYWdlIChVVFApLgorICNp bmNsdWRlICJnbG9idXNfdXRwX3ByaXZhdGUuaCIKKyAKKyAvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CistCQkJICBNb2R1bGUgYWN0aXZhdGlvbiBzdHJ1Y3R1cmUKKysgICAgICAgICAgICAgICAgICAg ICAgICAgIE1vZHVsZSBhY3RpdmF0aW9uIHN0cnVjdHVyZQorICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKyBzdGF0aWMgaW50CisgZ2xvYnVzX2xfdXRwX2FjdGl2YXRlKHZvaWQpOworQEAgLTU0LDcg KzU0LDcgQEAgc3RhdGljIGludAorIGdsb2J1c19sX3V0cF9kZWFjdGl2YXRlKHZvaWQpOworIAor IAorLWdsb2J1c19tb2R1bGVfZGVzY3JpcHRvcl90CQlnbG9idXNfaV91dHBfbW9kdWxlID0KKytn bG9idXNfbW9kdWxlX2Rlc2NyaXB0b3JfdCAgICAgICAgICAgICAgZ2xvYnVzX2lfdXRwX21vZHVs ZSA9CisgeworICAgICAiZ2xvYnVzX3V0cCIsCisgICAgIGdsb2J1c19sX3V0cF9hY3RpdmF0ZSwK K0BAIC02NCw3ICs2NCw3IEBAIGdsb2J1c19tb2R1bGVfZGVzY3JpcHRvcl90CQlnbG9idXNfaV91 dHBfbW9kdWxlID0KKyAKKyAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistCQkgICBnbG9idXNf dXRwIG1vZHVsZSBhY3RpdmF0aW9uIGZ1bmN0aW9ucworKyAgICAgICAgICAgICAgICAgICBnbG9i dXNfdXRwIG1vZHVsZSBhY3RpdmF0aW9uIGZ1bmN0aW9ucworICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKyAKKyBzdGF0aWMgaW50CitAQCAtNzIsMTQgKzcyLDE0IEBAIGdsb2J1c19sX3V0cF9hY3Rp dmF0ZSh2b2lkKQorIHsKKyAgICAgaWYgKGdsb2J1c19tb2R1bGVfYWN0aXZhdGUoR0xPQlVTX0NP TU1PTl9NT0RVTEUpICE9IEdMT0JVU19TVUNDRVNTKQorICAgICB7CistCXJldHVybiBHTE9CVVNf RkFJTFVSRTsKKysgICAgICAgIHJldHVybiBHTE9CVVNfRkFJTFVSRTsKKyAgICAgfQorIAorICAg ICAvKiBJbml0aWFsaXplIHNvbWUgZ2xvYmFsIHZhcmlhYmxlcyAqLworICAgICBnbG9idXNfdXRw X2F0dHJpYnV0ZXMgPSBHTE9CVVNfTlVMTDsKKyAgICAgZ2xvYnVzX3V0cF9udW1UaW1lcnMgPSAw OworICAgICBnbG9idXNfdXRwX3RpbWVycyA9IEdMT0JVU19OVUxMOworLSAgICAKKysKKyAgICAg cmV0dXJuIEdMT0JVU19TVUNDRVNTOworIH0KKyAKK0BAIC05Myw3ICs5Myw3IEBAIGdsb2J1c19s X3V0cF9kZWFjdGl2YXRlKHZvaWQpCisgICAgIGdsb2J1c191dHBfQXR0cmlidXRlX3QgKnRtcEF0 dHI7CisgCisgICAgIHJjID0gR0xPQlVTX1NVQ0NFU1M7CistICAgIAorKworICAgICAvKgorICAg ICAgKiBGcmVlIHVwIGFueSBzdG9yYWdlCisgICAgICAqLworQEAgLTEwMSwxOCArMTAxLDE4IEBA IGdsb2J1c19sX3V0cF9kZWFjdGl2YXRlKHZvaWQpCisgICAgIHdoaWxlIChjdXJBdHRyKQorICAg ICB7CisgCistCXRtcEF0dHIgPSBjdXJBdHRyOworLQljdXJBdHRyID0gY3VyQXR0ci0+bmV4dDsK Ky0JZ2xvYnVzX2ZyZWUodG1wQXR0cik7CisrICAgICAgICB0bXBBdHRyID0gY3VyQXR0cjsKKysg ICAgICAgIGN1ckF0dHIgPSBjdXJBdHRyLT5uZXh0OworKyAgICAgICAgZ2xvYnVzX2ZyZWUodG1w QXR0cik7CisgICAgIH0KKyAgICAgZ2xvYnVzX3V0cF9hdHRyaWJ1dGVzID0gR0xPQlVTX05VTEw7 CisgCisgICAgIGZvciAoaSA9IDA7IGkgPCBnbG9idXNfdXRwX251bVRpbWVyczsgaSsrKQorICAg ICB7CistCWlmIChnbG9idXNfdXRwX3RpbWVyc1tpXS5uYW1lKQorLQl7CistCSAgICBnbG9idXNf ZnJlZShnbG9idXNfdXRwX3RpbWVyc1tpXS5uYW1lKTsKKy0JfQorKyAgICAgICAgaWYgKGdsb2J1 c191dHBfdGltZXJzW2ldLm5hbWUpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ2xvYnVzX2Zy ZWUoZ2xvYnVzX3V0cF90aW1lcnNbaV0ubmFtZSk7CisrICAgICAgICB9CisgICAgIH0KKyAgICAg Z2xvYnVzX2ZyZWUoZ2xvYnVzX3V0cF90aW1lcnMpOworICAgICBnbG9idXNfdXRwX251bVRpbWVy cyA9IDA7CitAQCAtMTIzLDExICsxMjMsMTEgQEAgZ2xvYnVzX2xfdXRwX2RlYWN0aXZhdGUodm9p ZCkKKyAgICAgICovCisgICAgIGlmIChnbG9idXNfbW9kdWxlX2RlYWN0aXZhdGUoR0xPQlVTX0NP TU1PTl9NT0RVTEUpICE9IEdMT0JVU19TVUNDRVNTKQorICAgICB7CistCXJjID0gR0xPQlVTX0ZB SUxVUkU7CisrICAgICAgICByYyA9IEdMT0JVU19GQUlMVVJFOworICAgICB9CisgCisgICAgIHJl dHVybiByYzsKKy0gICAgCisrCisgfQorIAorIAorQEAgLTEzNyw1MyArMTM3LDUzIEBAIFB1Ymxp YyBVVFAgZnVuY3Rpb25zLgorIAorIGludCBnbG9idXNfdXRwX2luaXQodW5zaWduZWQgbnVtVGlt ZXJzLCBpbnQgbW9kZSkKKyB7CistCXVuc2lnbmVkIGk7CistCWludCBzaGFyaW5nTW9kZSA9IG1v ZGUgJiBHTE9CVVNfVVRQX01PREVfU0hBUklOR19GSUVMRDsKKy0JY2hhciBob3N0bmFtZUJ1ZmZb TUFYSE9TVE5BTUVMRU5dOworLQl0aW1lX3QgdGhlVGltZTsKKysgICAgICAgIHVuc2lnbmVkIGk7 CisrICAgICAgICBpbnQgc2hhcmluZ01vZGUgPSBtb2RlICYgR0xPQlVTX1VUUF9NT0RFX1NIQVJJ TkdfRklFTEQ7CisrICAgICAgICBjaGFyIGhvc3RuYW1lQnVmZltNQVhIT1NUTkFNRUxFTl07Cisr ICAgICAgICB0aW1lX3QgdGhlVGltZTsKKyAgICAgICAgIGNvbnN0IGNoYXIgKnVzZXJuYW1lOwor LQljaGFyIHRoZVRpbWVTdHJbMjddOworLQorLQlpZiAoc2hhcmluZ01vZGUgPT0gR0xPQlVTX1VU UF9NT0RFX1BSSVZBVEUpCistCXsKKy0JICAgIGdsb2J1c191dHBfd2FybigiZ2xvYnVzX3V0cF9p bml0OiBtb2RlIEdMT0JVU19VVFBfTU9ERV9QUklWQVRFIG5vdCB5ZXQgIgorLQkJCSAgICAiaW1w bGVtZW50ZWQiKTsKKy0JICAgIHJldHVybiAxOworLQl9IGVsc2UgaWYgKHNoYXJpbmdNb2RlICE9 IEdMT0JVU19VVFBfTU9ERV9TSEFSRUQpCistCXsKKy0JICAgIGdsb2J1c191dHBfd2FybigiZ2xv YnVzX3V0cF9pbml0OiBpbnZhbGlkIHNoYXJpbmcgbW9kZSAlI1ggc3BlY2lmaWVkIiwKKy0JCQkg ICAgc2hhcmluZ01vZGUpOworLQkgICAgcmV0dXJuIDE7CistCX0KKy0KKy0JaWYgKCEoZ2xvYnVz X3V0cF90aW1lcnMgPSBnbG9idXNfbWFsbG9jKG51bVRpbWVycyAqIHNpemVvZihnbG9idXNfdXRw X1RpbWVyX3QpKSkpCistCXsKKy0JCWdsb2J1c191dHBfd2FybigiZ2xvYnVzX3V0cF9pbml0OiBn bG9idXNfbWFsbG9jKCkgZmFpbGVkIGZvciB0aW1lcnMiKTsKKy0JCWdsb2J1c191dHBfbnVtVGlt ZXJzID0gMDsKKy0JCXJldHVybiAxOworLQl9CistCistCWdsb2J1c191dHBfbnVtVGltZXJzID0g bnVtVGltZXJzOworLQorLQkJCQkvKiBUaGlzIGxvb3Agbm90IG9ubHkgaW5pdGlhbGl6ZXMgZXZl cnkKKy0JCQkJICAgZmllbGQ7IGJ5ICJ0b3VjaGluZyIgZXZlcnl0aGluZywgaXQgYWxzbworLQkJ CQkgICBtYWtlcyBzdXJlIGl0IGlzIHBhZ2VkIGluLiAqLworLQlmb3IgKGkgPSAwOyBpIDwgbnVt VGltZXJzOyBpKyspIHsKKy0JCWdsb2J1c191dHBfdGltZXJzW2ldLnN0YXRlID0gR0xPQlVTX1VU UF9USU1FUl9TVE9QUEVEOworLQkJZ2xvYnVzX3V0cF90aW1lWmVybygmZ2xvYnVzX3V0cF90aW1l cnNbaV0uc3RhcnRUaW1lKTsKKy0JCWdsb2J1c191dHBfdGltZVplcm8oJmdsb2J1c191dHBfdGlt ZXJzW2ldLmFjY3VtdWxhdGVkVGltZSk7CistCQlnbG9idXNfdXRwX3RpbWVyc1tpXS5udW1FdmVu dHMgPSAwOworLQkJCQkvKiBJZiBuYW1lIGlzIHN0aWxsIE5VTEwgd2hlbgorLQkJCQkgICBnbG9i dXNfdXRwX3dyaXRlX2ZpbGUoKSBpcyBjYWxsZWQsCistCQkJCSAgIGdsb2J1c191dHBfREVGQVVM VF9USU1FUl9OQU1FIGlzIHByaW50ZWQuICovCistCQlnbG9idXNfdXRwX3RpbWVyc1tpXS5uYW1l ID0gTlVMTDsKKy0JfQorLQorLQkJCQkvKiBNYWtlIGtleS92YWx1ZSBsaW5rZWQgbGlzdCBlbXB0 eS4gKi8KKy0JZ2xvYnVzX3V0cF9hdHRyaWJ1dGVzID0gTlVMTDsKKy0KKy0JCQkJLyogU2V0IGF0 dHJpYnV0ZXMgZm9yICJ1c2VyIiwgImhvc3RuYW1lIiwKKy0JCQkJICAgYW5kICJ0aW1lc3RhbXAi LiAqLworKyAgICAgICAgY2hhciB0aGVUaW1lU3RyWzI3XTsKKysKKysgICAgICAgIGlmIChzaGFy aW5nTW9kZSA9PSBHTE9CVVNfVVRQX01PREVfUFJJVkFURSkKKysgICAgICAgIHsKKysgICAgICAg ICAgICBnbG9idXNfdXRwX3dhcm4oImdsb2J1c191dHBfaW5pdDogbW9kZSBHTE9CVVNfVVRQX01P REVfUFJJVkFURSBub3QgeWV0ICIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltcGxl bWVudGVkIik7CisrICAgICAgICAgICAgcmV0dXJuIDE7CisrICAgICAgICB9IGVsc2UgaWYgKHNo YXJpbmdNb2RlICE9IEdMT0JVU19VVFBfTU9ERV9TSEFSRUQpCisrICAgICAgICB7CisrICAgICAg ICAgICAgZ2xvYnVzX3V0cF93YXJuKCJnbG9idXNfdXRwX2luaXQ6IGludmFsaWQgc2hhcmluZyBt b2RlICUjWCBzcGVjaWZpZWQiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyaW5n TW9kZSk7CisrICAgICAgICAgICAgcmV0dXJuIDE7CisrICAgICAgICB9CisrCisrICAgICAgICBp ZiAoIShnbG9idXNfdXRwX3RpbWVycyA9IGdsb2J1c19tYWxsb2MobnVtVGltZXJzICogc2l6ZW9m KGdsb2J1c191dHBfVGltZXJfdCkpKSkKKysgICAgICAgIHsKKysgICAgICAgICAgICAgICAgZ2xv YnVzX3V0cF93YXJuKCJnbG9idXNfdXRwX2luaXQ6IGdsb2J1c19tYWxsb2MoKSBmYWlsZWQgZm9y IHRpbWVycyIpOworKyAgICAgICAgICAgICAgICBnbG9idXNfdXRwX251bVRpbWVycyA9IDA7Cisr ICAgICAgICAgICAgICAgIHJldHVybiAxOworKyAgICAgICAgfQorKworKyAgICAgICAgZ2xvYnVz X3V0cF9udW1UaW1lcnMgPSBudW1UaW1lcnM7CisrCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvKiBUaGlzIGxvb3Agbm90IG9ubHkgaW5pdGlhbGl6ZXMgZXZlcnkKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOyBieSAidG91Y2hpbmciIGV2ZXJ5dGhp bmcsIGl0IGFsc28KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2VzIHN1 cmUgaXQgaXMgcGFnZWQgaW4uICovCisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtVGltZXJz OyBpKyspIHsKKysgICAgICAgICAgICAgICAgZ2xvYnVzX3V0cF90aW1lcnNbaV0uc3RhdGUgPSBH TE9CVVNfVVRQX1RJTUVSX1NUT1BQRUQ7CisrICAgICAgICAgICAgICAgIGdsb2J1c191dHBfdGlt ZVplcm8oJmdsb2J1c191dHBfdGltZXJzW2ldLnN0YXJ0VGltZSk7CisrICAgICAgICAgICAgICAg IGdsb2J1c191dHBfdGltZVplcm8oJmdsb2J1c191dHBfdGltZXJzW2ldLmFjY3VtdWxhdGVkVGlt ZSk7CisrICAgICAgICAgICAgICAgIGdsb2J1c191dHBfdGltZXJzW2ldLm51bUV2ZW50cyA9IDA7 CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJZiBuYW1lIGlzIHN0aWxsIE5V TEwgd2hlbgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX3V0cF93 cml0ZV9maWxlKCkgaXMgY2FsbGVkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2xvYnVzX3V0cF9ERUZBVUxUX1RJTUVSX05BTUUgaXMgcHJpbnRlZC4gKi8KKysgICAgICAg ICAgICAgICAgZ2xvYnVzX3V0cF90aW1lcnNbaV0ubmFtZSA9IE5VTEw7CisrICAgICAgICB9Cisr CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBNYWtlIGtleS92YWx1ZSBsaW5r ZWQgbGlzdCBlbXB0eS4gKi8KKysgICAgICAgIGdsb2J1c191dHBfYXR0cmlidXRlcyA9IE5VTEw7 CisrCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTZXQgYXR0cmlidXRlcyBm b3IgInVzZXIiLCAiaG9zdG5hbWUiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYW5kICJ0aW1lc3RhbXAiLiAqLworIAorICMgICAgICAgaWZkZWYgX1dJTjMyCisgICAgICAg ICB7CitAQCAtMTk4LDMxICsxOTgsMzEgQEAgaW50IGdsb2J1c191dHBfaW5pdCh1bnNpZ25lZCBu dW1UaW1lcnMsIGludCBtb2RlKQorICAgICAgICAgICAgIHN0cnVjdCBwYXNzd2QgKnBhc3N3ZEVu dHJ5OworICAgICAgICAgICAgIHBhc3N3ZEVudHJ5ID0gZ2V0cHd1aWQoZ2V0dWlkKCkpOworICAg ICAgICAgICAgIGlmICghcGFzc3dkRW50cnkpIHsKKy0JCXJldHVybiAxOworKyAgICAgICAgICAg ICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgdXNlcm5hbWUgPSBw YXNzd2RFbnRyeS0+cHdfbmFtZTsKKyAgICAgICAgIH0KKy0JZ2xvYnVzX3V0cF9zZXRfYXR0cmli dXRlKCIlcyIsICJ1c2VyIiwgdXNlcm5hbWUpOworKyAgICAgICAgZ2xvYnVzX3V0cF9zZXRfYXR0 cmlidXRlKCIlcyIsICJ1c2VyIiwgdXNlcm5hbWUpOworICNlbmRpZgorIAorLQlpZiAoZ2xvYnVz X2xpYmNfZ2V0aG9zdG5hbWUoaG9zdG5hbWVCdWZmLCBNQVhIT1NUTkFNRUxFTikpIHsKKy0JICAg IC8qIGdsb2J1c191dHBfd2FybigiZ2xvYnVzX3V0cF9pbml0OiBnZXRob3N0bmFtZSgpIGZhaWxl ZDsgc3lzdGVtIGVycm9yIGlzICIKKy0JCSAgICAgICAgICJcIiVzXCIiLCBzeXNfZXJybGlzdFtl cnJub10pOyAqLworLQkJcmV0dXJuIDE7CistCX0KKy0JZ2xvYnVzX3V0cF9zZXRfYXR0cmlidXRl KCIlcyIsICJob3N0bmFtZSIsIGhvc3RuYW1lQnVmZik7CistCistCWlmICgodGhlVGltZSA9IHRp bWUoTlVMTCkpID09ICh0aW1lX3QpIC0xKSB7CistCSAgICAvKiBnbG9idXNfdXRwX3dhcm4oImds b2J1c191dHBfaW5pdDogdGltZSgzKSBmYWlsZWQ7IHN5c3RlbSBlcnJvciBpcyAiCistCQkgICAg ICAgICAiXCIlc1wiIiwgc3lzX2Vycmxpc3RbZXJybm9dKTsgKi8KKy0JCXJldHVybiAxOworLQl9 CistCXN0cmNweSh0aGVUaW1lU3RyLCBjdGltZSgmdGhlVGltZSkpOworLQkJCQkvKiBSZW1vdmUg dHJhaWxpbmcgJ1xuJy4gKi8KKy0JdGhlVGltZVN0cltzdHJsZW4odGhlVGltZVN0cikgLSAxXSA9 IDA7CistCWdsb2J1c191dHBfc2V0X2F0dHJpYnV0ZSgiJXMiLCAidGltZXN0YW1wIiwgdGhlVGlt ZVN0cik7CistCistCXJldHVybiAwOworKyAgICAgICAgaWYgKGdsb2J1c19saWJjX2dldGhvc3Ru YW1lKGhvc3RuYW1lQnVmZiwgTUFYSE9TVE5BTUVMRU4pKSB7CisrICAgICAgICAgICAgLyogZ2xv YnVzX3V0cF93YXJuKCJnbG9idXNfdXRwX2luaXQ6IGdldGhvc3RuYW1lKCkgZmFpbGVkOyBzeXN0 ZW0gZXJyb3IgaXMgIgorKyAgICAgICAgICAgICAgICAgICAgICAgICAiXCIlc1wiIiwgc3lzX2Vy cmxpc3RbZXJybm9dKTsgKi8KKysgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisrICAgICAgICB9 CisrICAgICAgICBnbG9idXNfdXRwX3NldF9hdHRyaWJ1dGUoIiVzIiwgImhvc3RuYW1lIiwgaG9z dG5hbWVCdWZmKTsKKysKKysgICAgICAgIGlmICgodGhlVGltZSA9IHRpbWUoTlVMTCkpID09ICh0 aW1lX3QpIC0xKSB7CisrICAgICAgICAgICAgLyogZ2xvYnVzX3V0cF93YXJuKCJnbG9idXNfdXRw X2luaXQ6IHRpbWUoMykgZmFpbGVkOyBzeXN0ZW0gZXJyb3IgaXMgIgorKyAgICAgICAgICAgICAg ICAgICAgICAgICAiXCIlc1wiIiwgc3lzX2Vycmxpc3RbZXJybm9dKTsgKi8KKysgICAgICAgICAg ICAgICAgcmV0dXJuIDE7CisrICAgICAgICB9CisrICAgICAgICBzdHJjcHkodGhlVGltZVN0ciwg Y3RpbWUoJnRoZVRpbWUpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJl bW92ZSB0cmFpbGluZyAnXG4nLiAqLworKyAgICAgICAgdGhlVGltZVN0cltzdHJsZW4odGhlVGlt ZVN0cikgLSAxXSA9IDA7CisrICAgICAgICBnbG9idXNfdXRwX3NldF9hdHRyaWJ1dGUoIiVzIiwg InRpbWVzdGFtcCIsIHRoZVRpbWVTdHIpOworKworKyAgICAgICAgcmV0dXJuIDA7CisgfQorIAor IHZvaWQKK0BAIC0yMzUsMzA2ICsyMzUsMzA2IEBAIGdsb2J1c191dHBfd3JpdGVfZmlsZShjb25z dCBjaGFyICpvdXRGaWxlbmFtZSkKKyAKKyAgICAgaWYgKCEob3V0RmlsZSA9IGZvcGVuKG91dEZp bGVuYW1lLCAidyIpKSkKKyAgICAgeworLQkvKiBnbG9idXNfdXRwX3dhcm4oImdsb2J1c191dHBf d3JpdGVfZmlsZTogZm9wZW4oKSBvbiBmaWxlIFwiJXNcIiBmYWlsZWQiLAorLQkJCW91dEZpbGVu YW1lKTsKKy0JZ2xvYnVzX3V0cF93YXJuKCJnbG9idXNfdXRwX3dyaXRlX2ZpbGU6IHN5c3RlbSBl cnJvciBtZXNzYWdlIGlzIFwiJXNcIiIsCistCQkJc3lzX2Vycmxpc3RbZXJybm9dKTsgKi8KKy0J cmV0dXJuOworKyAgICAgICAgLyogZ2xvYnVzX3V0cF93YXJuKCJnbG9idXNfdXRwX3dyaXRlX2Zp bGU6IGZvcGVuKCkgb24gZmlsZSBcIiVzXCIgZmFpbGVkIiwKKysgICAgICAgICAgICAgICAgICAg ICAgICBvdXRGaWxlbmFtZSk7CisrICAgICAgICBnbG9idXNfdXRwX3dhcm4oImdsb2J1c191dHBf d3JpdGVfZmlsZTogc3lzdGVtIGVycm9yIG1lc3NhZ2UgaXMgXCIlc1wiIiwKKysgICAgICAgICAg ICAgICAgICAgICAgICBzeXNfZXJybGlzdFtlcnJub10pOyAqLworKyAgICAgICAgcmV0dXJuOwor ICAgICB9CisgCisgICAgIGN1ckF0dHIgPSBnbG9idXNfdXRwX2F0dHJpYnV0ZXM7CisgICAgIHdo aWxlIChjdXJBdHRyKQorICAgICB7CistCWdsb2J1c191dHBfQXR0cmlidXRlX3QgKnRtcCA9IGN1 ckF0dHI7CistCWZwcmludGYob3V0RmlsZSwgImF0dHJpYnV0ZVx0XCIlc1wiXHRcIiVzXCJcbiIs CistCQljdXJBdHRyLT5rZXksIGN1ckF0dHItPnZhbHVlKTsKKy0JY3VyQXR0ciA9IGN1ckF0dHIt Pm5leHQ7CistCWdsb2J1c19mcmVlKHRtcC0+a2V5KTsKKy0JZ2xvYnVzX2ZyZWUodG1wLT52YWx1 ZSk7CistCWdsb2J1c19mcmVlKHRtcCk7CisrICAgICAgICBnbG9idXNfdXRwX0F0dHJpYnV0ZV90 ICp0bXAgPSBjdXJBdHRyOworKyAgICAgICAgZnByaW50ZihvdXRGaWxlLCAiYXR0cmlidXRlXHRc IiVzXCJcdFwiJXNcIlxuIiwKKysgICAgICAgICAgICAgICAgY3VyQXR0ci0+a2V5LCBjdXJBdHRy LT52YWx1ZSk7CisrICAgICAgICBjdXJBdHRyID0gY3VyQXR0ci0+bmV4dDsKKysgICAgICAgIGds b2J1c19mcmVlKHRtcC0+a2V5KTsKKysgICAgICAgIGdsb2J1c19mcmVlKHRtcC0+dmFsdWUpOwor KyAgICAgICAgZ2xvYnVzX2ZyZWUodG1wKTsKKyAgICAgfQorICAgICBnbG9idXNfdXRwX2F0dHJp YnV0ZXMgPSBOVUxMOworIAorICAgICBmb3IgKGkgPSAwOyBpIDwgZ2xvYnVzX3V0cF9udW1UaW1l cnM7IGkrKykKKyAgICAgeworLQljb25zdCBjaGFyICpuYW1lID0gZ2xvYnVzX3V0cF90aW1lcnNb aV0ubmFtZTsKKy0JICAgIAorLQlpZiAoZ2xvYnVzX3V0cF90aW1lcnNbaV0uc3RhdGUgPT0gR0xP QlVTX1VUUF9USU1FUl9SVU5OSU5HKQorLQl7CistCSAgICBnbG9idXNfdXRwX3dhcm4oImdsb2J1 c191dHBfd3JpdGVfZmlsZTogdGltZXIgJWQgc3RpbGwgcnVubmluZyIsCistCQkJICAgIGkpOwor LQkgICAgZ2xvYnVzX3V0cF9zdG9wX3RpbWVyKGkpOworLQl9CistCistCWdsb2J1c191dHBfdGlt ZVRvU3RyaW5nKGJ1ZmYsCistCQkJCSZnbG9idXNfdXRwX3RpbWVyc1tpXS5hY2N1bXVsYXRlZFRp bWUpOworLQorLQlmcHJpbnRmKG91dEZpbGUsICJ0aW1lclx0JXVcdCVzXHQlbHVcdFwiJXNcIlxu IiwKKy0JCSh1bnNpZ25lZCkgaSwKKy0JCWJ1ZmYsCistCQlnbG9idXNfdXRwX3RpbWVyc1tpXS5u dW1FdmVudHMsCistCQluYW1lID8gbmFtZSA6IEdMT0JVU19VVFBfREVGQVVMVF9USU1FUl9OQU1F KTsKKysgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBnbG9idXNfdXRwX3RpbWVyc1tpXS5uYW1l OworKworKyAgICAgICAgaWYgKGdsb2J1c191dHBfdGltZXJzW2ldLnN0YXRlID09IEdMT0JVU19V VFBfVElNRVJfUlVOTklORykKKysgICAgICAgIHsKKysgICAgICAgICAgICBnbG9idXNfdXRwX3dh cm4oImdsb2J1c191dHBfd3JpdGVfZmlsZTogdGltZXIgJWQgc3RpbGwgcnVubmluZyIsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGkpOworKyAgICAgICAgICAgIGdsb2J1c191dHBfc3Rv cF90aW1lcihpKTsKKysgICAgICAgIH0KKysKKysgICAgICAgIGdsb2J1c191dHBfdGltZVRvU3Ry aW5nKGJ1ZmYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ2xvYnVzX3V0cF90 aW1lcnNbaV0uYWNjdW11bGF0ZWRUaW1lKTsKKysKKysgICAgICAgIGZwcmludGYob3V0RmlsZSwg InRpbWVyXHQldVx0JXNcdCVsdVx0XCIlc1wiXG4iLAorKyAgICAgICAgICAgICAgICAodW5zaWdu ZWQpIGksCisrICAgICAgICAgICAgICAgIGJ1ZmYsCisrICAgICAgICAgICAgICAgIGdsb2J1c191 dHBfdGltZXJzW2ldLm51bUV2ZW50cywKKysgICAgICAgICAgICAgICAgbmFtZSA/IG5hbWUgOiBH TE9CVVNfVVRQX0RFRkFVTFRfVElNRVJfTkFNRSk7CisgICAgIH0KKyAKKyAgICAgaWYgKGZjbG9z ZShvdXRGaWxlKSkKKyAgICAgeworLQkvKiBnbG9idXNfdXRwX3dhcm4oImdsb2J1c191dHBfd3Jp dGVfZmlsZTogZmNsb3NlKCkgb24gZmlsZSBcIiVzXCIgZmFpbGVkIiwKKy0JCQlvdXRGaWxlbmFt ZSk7CistCWdsb2J1c191dHBfd2FybigiZ2xvYnVzX3V0cF93cml0ZV9maWxlOiBzeXN0ZW0gZXJy b3IgbWVzc2FnZSBpcyBcIiVzXCIiLAorLQkJCXN5c19lcnJsaXN0W2Vycm5vXSk7ICovCistCXJl dHVybjsKKysgICAgICAgIC8qIGdsb2J1c191dHBfd2FybigiZ2xvYnVzX3V0cF93cml0ZV9maWxl OiBmY2xvc2UoKSBvbiBmaWxlIFwiJXNcIiBmYWlsZWQiLAorKyAgICAgICAgICAgICAgICAgICAg ICAgIG91dEZpbGVuYW1lKTsKKysgICAgICAgIGdsb2J1c191dHBfd2FybigiZ2xvYnVzX3V0cF93 cml0ZV9maWxlOiBzeXN0ZW0gZXJyb3IgbWVzc2FnZSBpcyBcIiVzXCIiLAorKyAgICAgICAgICAg ICAgICAgICAgICAgIHN5c19lcnJsaXN0W2Vycm5vXSk7ICovCisrICAgICAgICByZXR1cm47Cisg ICAgIH0KKyB9CisgCisgdm9pZAorIGdsb2J1c191dHBfc2V0X2F0dHJpYnV0ZShjb25zdCBjaGFy ICprZXlTdHIsIGNvbnN0IGNoYXIgKmtleUFyZywKKy0JCSAgY29uc3QgY2hhciAqdmFsdWVTdHIs IC4uLikKKysgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YWx1ZVN0ciwgLi4uKQorIHsK Ky0JZ2xvYnVzX3V0cF9BdHRyaWJ1dGVfdCAqbmV3QXR0cjsJLyogTmV3IGtleS92YWx1ZSBwYWly LiAqLworLQlnbG9idXNfdXRwX0F0dHJpYnV0ZV90ICoqbGFzdE5leHQ7CS8qIEZpbmFsICJuZXh0 IiBwb2ludGVyIGluIGxpc3QuICovCistCWNoYXIgKm5ld0tleSA9IGdsb2J1c19tYWxsb2Moc2l6 ZW9mKGNoYXIpICogR0xPQlVTX1VUUF9NQVhfTkFNRV9MRU5HVEgpOworLQljaGFyICpuZXdWYWx1 ZSA9IGdsb2J1c19tYWxsb2Moc2l6ZW9mKGNoYXIpICogR0xPQlVTX1VUUF9NQVhfTkFNRV9MRU5H VEgpOworLQl2YV9saXN0IGFwOworLQorLQlpZiAoIW5ld0tleSB8fCAhbmV3VmFsdWUpIHsKKy0J CWdsb2J1c191dHBfd2FybigiZ2xvYnVzX3V0cF9zZXRfYXR0cmlidXRlOiBnbG9idXNfbWFsbG9j KCkgZmFpbGVkIik7CistCQlyZXR1cm47CistCX0KKy0Jc3ByaW50ZihuZXdLZXksIGtleVN0ciwg a2V5QXJnKTsJLyogQ29tcHV0ZSBuZXcga2V5LiAqLworLQl2YV9zdGFydChhcCwgdmFsdWVTdHIp OwkJCS8qIENvbXB1dGUgbmV3IHZhbHVlLiAqLworLQl2c3ByaW50ZihuZXdWYWx1ZSwgdmFsdWVT dHIsIGFwKTsKKy0KKy0JbmV3QXR0ciA9IGdsb2J1c191dHBfYXR0cmlidXRlczsKKy0JbGFzdE5l eHQgPSAmZ2xvYnVzX3V0cF9hdHRyaWJ1dGVzOworLQkJCQkJLyogU2VhcmNoIGZvciBzYW1lIGtl eSBpbiBsaXN0LiAqLworLQl3aGlsZSAobmV3QXR0ciAmJiBzdHJjbXAobmV3QXR0ci0+a2V5LCBu ZXdLZXkpICE9IDApIHsKKy0JCWxhc3ROZXh0ID0gJm5ld0F0dHItPm5leHQ7CistCQluZXdBdHRy ID0gbmV3QXR0ci0+bmV4dDsKKy0JfQorLQorLQlpZiAobmV3QXR0cikgewkJCS8qIEtleSBhbHJl YWR5IGV4aXN0cyBpbiBsaXN0LiAqLworLQkJCQkJLyogSnVzdCByZXBsYWNlIHRoZSBvbGQgdmFs dWUuICovCistCQlzdHJjcHkobmV3QXR0ci0+dmFsdWUsIG5ld1ZhbHVlKTsKKy0JCWdsb2J1c19m cmVlKG5ld0tleSk7CistCQlnbG9idXNfZnJlZShuZXdWYWx1ZSk7CistCQlyZXR1cm47CistCX0K Ky0KKy0JCQkJLyogQWRkIG5ldyBrZXkvdmFsdWUgcGFpciB0byBsaXN0LiAqLworLQkqbGFzdE5l eHQgPSBuZXdBdHRyID0gZ2xvYnVzX21hbGxvYyhzaXplb2YoZ2xvYnVzX3V0cF9BdHRyaWJ1dGVf dCkpOworLQlpZiAoIW5ld0F0dHIpIHsKKy0JCWdsb2J1c191dHBfd2FybigiZ2xvYnVzX3V0cF9z ZXRfYXR0cmlidXRlOiBnbG9idXNfbWFsbG9jKCkgZmFpbGVkIik7CistCQlyZXR1cm47CistCX0K Ky0JbmV3QXR0ci0+a2V5ID0gbmV3S2V5OworLQluZXdBdHRyLT52YWx1ZSA9IG5ld1ZhbHVlOwor LQluZXdBdHRyLT5uZXh0ID0gTlVMTDsKKysgICAgICAgIGdsb2J1c191dHBfQXR0cmlidXRlX3Qg Km5ld0F0dHI7ICAgICAgICAvKiBOZXcga2V5L3ZhbHVlIHBhaXIuICovCisrICAgICAgICBnbG9i dXNfdXRwX0F0dHJpYnV0ZV90ICoqbGFzdE5leHQ7ICAgICAgLyogRmluYWwgIm5leHQiIHBvaW50 ZXIgaW4gbGlzdC4gKi8KKysgICAgICAgIGNoYXIgKm5ld0tleSA9IGdsb2J1c19tYWxsb2Moc2l6 ZW9mKGNoYXIpICogR0xPQlVTX1VUUF9NQVhfTkFNRV9MRU5HVEgpOworKyAgICAgICAgY2hhciAq bmV3VmFsdWUgPSBnbG9idXNfbWFsbG9jKHNpemVvZihjaGFyKSAqIEdMT0JVU19VVFBfTUFYX05B TUVfTEVOR1RIKTsKKysgICAgICAgIHZhX2xpc3QgYXA7CisrCisrICAgICAgICBpZiAoIW5ld0tl eSB8fCAhbmV3VmFsdWUpIHsKKysgICAgICAgICAgICAgICAgZ2xvYnVzX3V0cF93YXJuKCJnbG9i dXNfdXRwX3NldF9hdHRyaWJ1dGU6IGdsb2J1c19tYWxsb2MoKSBmYWlsZWQiKTsKKysgICAgICAg ICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgc3ByaW50ZihuZXdLZXksIGtl eVN0ciwga2V5QXJnKTsgICAgICAgIC8qIENvbXB1dGUgbmV3IGtleS4gKi8KKysgICAgICAgIHZh X3N0YXJ0KGFwLCB2YWx1ZVN0cik7ICAgICAgICAgICAgICAgICAvKiBDb21wdXRlIG5ldyB2YWx1 ZS4gKi8KKysgICAgICAgIHZzcHJpbnRmKG5ld1ZhbHVlLCB2YWx1ZVN0ciwgYXApOworKworKyAg ICAgICAgbmV3QXR0ciA9IGdsb2J1c191dHBfYXR0cmlidXRlczsKKysgICAgICAgIGxhc3ROZXh0 ID0gJmdsb2J1c191dHBfYXR0cmlidXRlczsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogU2VhcmNoIGZvciBzYW1lIGtleSBpbiBsaXN0LiAqLworKyAgICAgICAg d2hpbGUgKG5ld0F0dHIgJiYgc3RyY21wKG5ld0F0dHItPmtleSwgbmV3S2V5KSAhPSAwKSB7Cisr ICAgICAgICAgICAgICAgIGxhc3ROZXh0ID0gJm5ld0F0dHItPm5leHQ7CisrICAgICAgICAgICAg ICAgIG5ld0F0dHIgPSBuZXdBdHRyLT5uZXh0OworKyAgICAgICAgfQorKworKyAgICAgICAgaWYg KG5ld0F0dHIpIHsgICAgICAgICAgICAgICAgICAvKiBLZXkgYWxyZWFkeSBleGlzdHMgaW4gbGlz dC4gKi8KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSnVzdCBy ZXBsYWNlIHRoZSBvbGQgdmFsdWUuICovCisrICAgICAgICAgICAgICAgIHN0cmNweShuZXdBdHRy LT52YWx1ZSwgbmV3VmFsdWUpOworKyAgICAgICAgICAgICAgICBnbG9idXNfZnJlZShuZXdLZXkp OworKyAgICAgICAgICAgICAgICBnbG9idXNfZnJlZShuZXdWYWx1ZSk7CisrICAgICAgICAgICAg ICAgIHJldHVybjsKKysgICAgICAgIH0KKysKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIEFkZCBuZXcga2V5L3ZhbHVlIHBhaXIgdG8gbGlzdC4gKi8KKysgICAgICAgICpsYXN0 TmV4dCA9IG5ld0F0dHIgPSBnbG9idXNfbWFsbG9jKHNpemVvZihnbG9idXNfdXRwX0F0dHJpYnV0 ZV90KSk7CisrICAgICAgICBpZiAoIW5ld0F0dHIpIHsKKysgICAgICAgICAgICAgICAgZ2xvYnVz X3V0cF93YXJuKCJnbG9idXNfdXRwX3NldF9hdHRyaWJ1dGU6IGdsb2J1c19tYWxsb2MoKSBmYWls ZWQiKTsKKysgICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgbmV3 QXR0ci0+a2V5ID0gbmV3S2V5OworKyAgICAgICAgbmV3QXR0ci0+dmFsdWUgPSBuZXdWYWx1ZTsK KysgICAgICAgIG5ld0F0dHItPm5leHQgPSBOVUxMOworIH0KKyAKKyAKKyAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgorLVRpbWVyIHN0YXRlIHRyYW5zaXRpb24gZGlhZ3JhbS4gIElmIHRpbWVyIGlzIGluICJDdXJy ZW50IFN0YXRlIiwgYW5kIAorK1RpbWVyIHN0YXRlIHRyYW5zaXRpb24gZGlhZ3JhbS4gIElmIHRp bWVyIGlzIGluICJDdXJyZW50IFN0YXRlIiwgYW5kCisgIlN0YXRlIENoYW5nZSBGdW5jdGlvbiIg aXMgY2FsbGVkLCByZXN1bHQgaXMgZWl0aGVyIHRoZSBpbmRpY2F0ZWQgbmV3IHN0YXRlCisgb3Ig IkludmFsaWQiIChpbiB3aGljaCBjYXNlIGdsb2J1c191dHBfd2FybigpIGlzIGNhbGxlZCkuCisg CistCQkJCVN0YXRlIENoYW5nZSBGdW5jdGlvbgorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3RhdGUgQ2hhbmdlIEZ1bmN0aW9uCisgQ3VycmVudAorLVN0YXRlCQlzdGFydCgpCSAg IHN0b3AoKSAgICAgcmVzZXQoKSAgICBkaXNhYmxlKCkgICBlbmFibGUoKQorLS0tLS0tLS0JCS0t LS0tLS0JICAgLS0tLS0tICAgICAtLS0tLS0tICAgIC0tLS0tLS0tLSAgIC0tLS0tLS0tLQorLVNU T1BQRUQJCVJVTk5JTkcgICAgSW52YWxpZCAgICBTVE9QUEVEICAgIERJU0FCTEVEICAgIFNUT1BQ RUQgICAgCisrU3RhdGUgICAgICAgICAgIHN0YXJ0KCkgICAgc3RvcCgpICAgICByZXNldCgpICAg IGRpc2FibGUoKSAgIGVuYWJsZSgpCisrLS0tLS0tLSAgICAgICAgIC0tLS0tLS0gICAgLS0tLS0t ICAgICAtLS0tLS0tICAgIC0tLS0tLS0tLSAgIC0tLS0tLS0tLQorK1NUT1BQRUQgICAgICAgICBS VU5OSU5HICAgIEludmFsaWQgICAgU1RPUFBFRCAgICBESVNBQkxFRCAgICBTVE9QUEVECisgCist UlVOTklORwkJSW52YWxpZCAgICBTVE9QUEVEICAgIFNUT1BQRUQgICAgSW52YWxpZCAgICAgUlVO TklORyAgICAKKytSVU5OSU5HICAgICAgICAgSW52YWxpZCAgICBTVE9QUEVEICAgIFNUT1BQRUQg ICAgSW52YWxpZCAgICAgUlVOTklORworIAorLURJU0FCTEVECURJU0FCTEVEICAgRElTQUJMRUQg ICBESVNBQkxFRCAgIERJU0FCTEVEICAgIFNUT1BQRUQgICAgCisrRElTQUJMRUQgICAgICAgIERJ U0FCTEVEICAgRElTQUJMRUQgICBESVNBQkxFRCAgIERJU0FCTEVEICAgIFNUT1BQRUQKKyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLworIAorIHZvaWQgZ2xvYnVzX3V0cF9zdGFydF90aW1lcih1bnNpZ25lZCB0aW1l ck51bWJlcikKKyB7CistCWdsb2J1c191dHBfVGltZXJfdCAqdGhlVGltZXI7CisrICAgICAgICBn bG9idXNfdXRwX1RpbWVyX3QgKnRoZVRpbWVyOworIAorLQkJLyogRG9uJ3QgY29tcGlsZSBydW4t dGltZSBjaGVja3MgaW50byBmdWxseS1vcHRpbWl6ZWQKKy0JCSAgIHZlcnNpb24gb2YgdGhlIGxp YnJhcnkuICovCisrICAgICAgICAgICAgICAgIC8qIERvbid0IGNvbXBpbGUgcnVuLXRpbWUgY2hl Y2tzIGludG8gZnVsbHktb3B0aW1pemVkCisrICAgICAgICAgICAgICAgICAgIHZlcnNpb24gb2Yg dGhlIGxpYnJhcnkuICovCisgI2lmbmRlZiBOREVCVUcKKy0JaWYgKHRpbWVyTnVtYmVyID49IGds b2J1c191dHBfbnVtVGltZXJzKSB7CistCQlnbG9idXNfdXRwX3dhcm4oImdsb2J1c191dHBfc3Rh cnRfdGltZXI6IGlsbGVnYWwgdGltZXIgJWQiLAorLQkJCSAoaW50KSB0aW1lck51bWJlcik7Cist CQlyZXR1cm47CistCX0KKysgICAgICAgIGlmICh0aW1lck51bWJlciA+PSBnbG9idXNfdXRwX251 bVRpbWVycykgeworKyAgICAgICAgICAgICAgICBnbG9idXNfdXRwX3dhcm4oImdsb2J1c191dHBf c3RhcnRfdGltZXI6IGlsbGVnYWwgdGltZXIgJWQiLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAoaW50KSB0aW1lck51bWJlcik7CisrICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAg IH0KKyAjZW5kaWYgLyogI2lmbmRlZiBOREVCVUcgKi8KKyAKKy0JdGhlVGltZXIgPSAmZ2xvYnVz X3V0cF90aW1lcnNbdGltZXJOdW1iZXJdOworLQlpZiAodGhlVGltZXItPnN0YXRlID09IEdMT0JV U19VVFBfVElNRVJfRElTQUJMRUQpCistCQlyZXR1cm47CisrICAgICAgICB0aGVUaW1lciA9ICZn bG9idXNfdXRwX3RpbWVyc1t0aW1lck51bWJlcl07CisrICAgICAgICBpZiAodGhlVGltZXItPnN0 YXRlID09IEdMT0JVU19VVFBfVElNRVJfRElTQUJMRUQpCisrICAgICAgICAgICAgICAgIHJldHVy bjsKKyAKKyAjaWZuZGVmIE5ERUJVRworLQlpZiAodGhlVGltZXItPnN0YXRlID09IEdMT0JVU19V VFBfVElNRVJfUlVOTklORykgeworLQkJZ2xvYnVzX3V0cF93YXJuKCJnbG9idXNfdXRwX3N0YXJ0 X3RpbWVyOiB0aW1lciAlZCBhbHJlYWR5IHJ1bm5pbmciLAorLQkJCSAoaW50KSB0aW1lck51bWJl cik7CistCQlyZXR1cm47CistCX0KKysgICAgICAgIGlmICh0aGVUaW1lci0+c3RhdGUgPT0gR0xP QlVTX1VUUF9USU1FUl9SVU5OSU5HKSB7CisrICAgICAgICAgICAgICAgIGdsb2J1c191dHBfd2Fy bigiZ2xvYnVzX3V0cF9zdGFydF90aW1lcjogdGltZXIgJWQgYWxyZWFkeSBydW5uaW5nIiwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgKGludCkgdGltZXJOdW1iZXIpOworKyAgICAgICAgICAg ICAgICByZXR1cm47CisrICAgICAgICB9CisgI2VuZGlmIC8qICNpZm5kZWYgTkRFQlVHICovCisg CistCXRoZVRpbWVyLT5zdGF0ZSA9IEdMT0JVU19VVFBfVElNRVJfUlVOTklORzsKKy0JZ2xvYnVz X3V0cF9yZWFkVGltZSgmdGhlVGltZXItPnN0YXJ0VGltZSk7CisrICAgICAgICB0aGVUaW1lci0+ c3RhdGUgPSBHTE9CVVNfVVRQX1RJTUVSX1JVTk5JTkc7CisrICAgICAgICBnbG9idXNfdXRwX3Jl YWRUaW1lKCZ0aGVUaW1lci0+c3RhcnRUaW1lKTsKKyB9CisgCisgdm9pZCBnbG9idXNfdXRwX3N0 b3BfdGltZXIodW5zaWduZWQgdGltZXJOdW1iZXIpCisgeworLQlnbG9idXNfdXRwX1RpbWVyX3Qg KnRoZVRpbWVyOworLQlnbG9idXNfdXRwX1RpbWVWYWx1ZV90IHN0b3BUaW1lLCBlbGFwc2VkVGlt ZTsKKysgICAgICAgIGdsb2J1c191dHBfVGltZXJfdCAqdGhlVGltZXI7CisrICAgICAgICBnbG9i dXNfdXRwX1RpbWVWYWx1ZV90IHN0b3BUaW1lLCBlbGFwc2VkVGltZTsKKyAKKyAjaWZuZGVmIE5E RUJVRworLQlpZiAodGltZXJOdW1iZXIgPj0gZ2xvYnVzX3V0cF9udW1UaW1lcnMpIHsKKy0JCWds b2J1c191dHBfd2FybigiZ2xvYnVzX3V0cF9zdG9wX3RpbWVyOiBpbGxlZ2FsIHRpbWVyICVkIiwK Ky0JCQkgKGludCkgdGltZXJOdW1iZXIpOworLQkJcmV0dXJuOworLQl9CisrICAgICAgICBpZiAo dGltZXJOdW1iZXIgPj0gZ2xvYnVzX3V0cF9udW1UaW1lcnMpIHsKKysgICAgICAgICAgICAgICAg Z2xvYnVzX3V0cF93YXJuKCJnbG9idXNfdXRwX3N0b3BfdGltZXI6IGlsbGVnYWwgdGltZXIgJWQi LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSB0aW1lck51bWJlcik7CisrICAgICAg ICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKyAjZW5kaWYgLyogI2lmbmRlZiBOREVCVUcg Ki8KKyAKKy0JdGhlVGltZXIgPSAmZ2xvYnVzX3V0cF90aW1lcnNbdGltZXJOdW1iZXJdOworLQlp ZiAodGhlVGltZXItPnN0YXRlID09IEdMT0JVU19VVFBfVElNRVJfRElTQUJMRUQpCistCQlyZXR1 cm47CisrICAgICAgICB0aGVUaW1lciA9ICZnbG9idXNfdXRwX3RpbWVyc1t0aW1lck51bWJlcl07 CisrICAgICAgICBpZiAodGhlVGltZXItPnN0YXRlID09IEdMT0JVU19VVFBfVElNRVJfRElTQUJM RUQpCisrICAgICAgICAgICAgICAgIHJldHVybjsKKyAKKyAjaWZuZGVmIE5ERUJVRworLQlpZiAo dGhlVGltZXItPnN0YXRlID09IEdMT0JVU19VVFBfVElNRVJfU1RPUFBFRCkgeworLQkJZ2xvYnVz X3V0cF93YXJuKCJnbG9idXNfdXRwX3N0b3BfdGltZXI6IHRpbWVyICVkIG5vdCBydW5uaW5nIiwK Ky0JCQkgKGludCkgdGltZXJOdW1iZXIpOworLQkJcmV0dXJuOworLQl9CisrICAgICAgICBpZiAo dGhlVGltZXItPnN0YXRlID09IEdMT0JVU19VVFBfVElNRVJfU1RPUFBFRCkgeworKyAgICAgICAg ICAgICAgICBnbG9idXNfdXRwX3dhcm4oImdsb2J1c191dHBfc3RvcF90aW1lcjogdGltZXIgJWQg bm90IHJ1bm5pbmciLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSB0aW1lck51bWJl cik7CisrICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKyAjZW5kaWYgLyogI2lm bmRlZiBOREVCVUcgKi8KKyAKKy0JdGhlVGltZXItPnN0YXRlID0gR0xPQlVTX1VUUF9USU1FUl9T VE9QUEVEOworLQlnbG9idXNfdXRwX3JlYWRUaW1lKCZzdG9wVGltZSk7CistCWdsb2J1c191dHBf dGltZURpZmZlcmVuY2UoJmVsYXBzZWRUaW1lLCAmdGhlVGltZXItPnN0YXJ0VGltZSwgJnN0b3BU aW1lKTsKKy0JZ2xvYnVzX3V0cF90aW1lQWRkKCZ0aGVUaW1lci0+YWNjdW11bGF0ZWRUaW1lLCAm ZWxhcHNlZFRpbWUpOworLQl0aGVUaW1lci0+bnVtRXZlbnRzKys7CisrICAgICAgICB0aGVUaW1l ci0+c3RhdGUgPSBHTE9CVVNfVVRQX1RJTUVSX1NUT1BQRUQ7CisrICAgICAgICBnbG9idXNfdXRw X3JlYWRUaW1lKCZzdG9wVGltZSk7CisrICAgICAgICBnbG9idXNfdXRwX3RpbWVEaWZmZXJlbmNl KCZlbGFwc2VkVGltZSwgJnRoZVRpbWVyLT5zdGFydFRpbWUsICZzdG9wVGltZSk7CisrICAgICAg ICBnbG9idXNfdXRwX3RpbWVBZGQoJnRoZVRpbWVyLT5hY2N1bXVsYXRlZFRpbWUsICZlbGFwc2Vk VGltZSk7CisrICAgICAgICB0aGVUaW1lci0+bnVtRXZlbnRzKys7CisgfQorIAorIHZvaWQgZ2xv YnVzX3V0cF9yZXNldF90aW1lcih1bnNpZ25lZCB0aW1lck51bWJlcikKKyB7CistCWdsb2J1c191 dHBfVGltZXJfdCAqdGhlVGltZXI7CisrICAgICAgICBnbG9idXNfdXRwX1RpbWVyX3QgKnRoZVRp bWVyOworIAorICNpZm5kZWYgTkRFQlVHCistCWlmICh0aW1lck51bWJlciA+PSBnbG9idXNfdXRw X251bVRpbWVycykgeworLQkJZ2xvYnVzX3V0cF93YXJuKCJnbG9idXNfdXRwX3Jlc2V0X3RpbWVy OiBpbGxlZ2FsIHRpbWVyICVkIiwKKy0JCQkgKGludCkgdGltZXJOdW1iZXIpOworLQkJcmV0dXJu OworLQl9CisrICAgICAgICBpZiAodGltZXJOdW1iZXIgPj0gZ2xvYnVzX3V0cF9udW1UaW1lcnMp IHsKKysgICAgICAgICAgICAgICAgZ2xvYnVzX3V0cF93YXJuKCJnbG9idXNfdXRwX3Jlc2V0X3Rp bWVyOiBpbGxlZ2FsIHRpbWVyICVkIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkg dGltZXJOdW1iZXIpOworKyAgICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisgI2Vu ZGlmIC8qICNpZm5kZWYgTkRFQlVHICovCisgCistCXRoZVRpbWVyID0gJmdsb2J1c191dHBfdGlt ZXJzW3RpbWVyTnVtYmVyXTsKKy0JaWYgKHRoZVRpbWVyLT5zdGF0ZSA9PSBHTE9CVVNfVVRQX1RJ TUVSX0RJU0FCTEVEKQorLQkJcmV0dXJuOworKyAgICAgICAgdGhlVGltZXIgPSAmZ2xvYnVzX3V0 cF90aW1lcnNbdGltZXJOdW1iZXJdOworKyAgICAgICAgaWYgKHRoZVRpbWVyLT5zdGF0ZSA9PSBH TE9CVVNfVVRQX1RJTUVSX0RJU0FCTEVEKQorKyAgICAgICAgICAgICAgICByZXR1cm47CisgCist CXRoZVRpbWVyLT5zdGF0ZSA9IEdMT0JVU19VVFBfVElNRVJfU1RPUFBFRDsKKy0JZ2xvYnVzX3V0 cF90aW1lWmVybygmdGhlVGltZXItPnN0YXJ0VGltZSk7CistCWdsb2J1c191dHBfdGltZVplcm8o JnRoZVRpbWVyLT5hY2N1bXVsYXRlZFRpbWUpOworLQl0aGVUaW1lci0+bnVtRXZlbnRzID0gMDsK KysgICAgICAgIHRoZVRpbWVyLT5zdGF0ZSA9IEdMT0JVU19VVFBfVElNRVJfU1RPUFBFRDsKKysg ICAgICAgIGdsb2J1c191dHBfdGltZVplcm8oJnRoZVRpbWVyLT5zdGFydFRpbWUpOworKyAgICAg ICAgZ2xvYnVzX3V0cF90aW1lWmVybygmdGhlVGltZXItPmFjY3VtdWxhdGVkVGltZSk7CisrICAg ICAgICB0aGVUaW1lci0+bnVtRXZlbnRzID0gMDsKKyB9CisgCisgdm9pZCBnbG9idXNfdXRwX2Rp c2FibGVfdGltZXIodW5zaWduZWQgdGltZXJOdW1iZXIpCisgeworLQlnbG9idXNfdXRwX1RpbWVy X3QgKnRoZVRpbWVyOworKyAgICAgICAgZ2xvYnVzX3V0cF9UaW1lcl90ICp0aGVUaW1lcjsKKyAK KyAjaWZuZGVmIE5ERUJVRworLQlpZiAodGltZXJOdW1iZXIgPj0gZ2xvYnVzX3V0cF9udW1UaW1l cnMpIHsKKy0JCWdsb2J1c191dHBfd2FybigiZ2xvYnVzX3V0cF9kaXNhYmxlX3RpbWVyOiBpbGxl Z2FsIHRpbWVyICVkIiwKKy0JCQkgKGludCkgdGltZXJOdW1iZXIpOworLQkJcmV0dXJuOworLQl9 CisrICAgICAgICBpZiAodGltZXJOdW1iZXIgPj0gZ2xvYnVzX3V0cF9udW1UaW1lcnMpIHsKKysg ICAgICAgICAgICAgICAgZ2xvYnVzX3V0cF93YXJuKCJnbG9idXNfdXRwX2Rpc2FibGVfdGltZXI6 IGlsbGVnYWwgdGltZXIgJWQiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSB0aW1l ck51bWJlcik7CisrICAgICAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKyAjZW5kaWYg LyogI2lmbmRlZiBOREVCVUcgKi8KKyAKKy0JdGhlVGltZXIgPSAmZ2xvYnVzX3V0cF90aW1lcnNb dGltZXJOdW1iZXJdOworKyAgICAgICAgdGhlVGltZXIgPSAmZ2xvYnVzX3V0cF90aW1lcnNbdGlt ZXJOdW1iZXJdOworIAorICNpZm5kZWYgTkRFQlVHCistCWlmICh0aGVUaW1lci0+c3RhdGUgPT0g R0xPQlVTX1VUUF9USU1FUl9SVU5OSU5HKSB7CistCQlnbG9idXNfdXRwX3dhcm4oImdsb2J1c191 dHBfZGlzYWJsZV90aW1lcjogdGltZXIgJWQgaXMgcnVubmluZyIsCistCQkJIChpbnQpIHRpbWVy TnVtYmVyKTsKKy0JCXJldHVybjsKKy0JfQorKyAgICAgICAgaWYgKHRoZVRpbWVyLT5zdGF0ZSA9 PSBHTE9CVVNfVVRQX1RJTUVSX1JVTk5JTkcpIHsKKysgICAgICAgICAgICAgICAgZ2xvYnVzX3V0 cF93YXJuKCJnbG9idXNfdXRwX2Rpc2FibGVfdGltZXI6IHRpbWVyICVkIGlzIHJ1bm5pbmciLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSB0aW1lck51bWJlcik7CisrICAgICAgICAg ICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKyAjZW5kaWYgLyogI2lmbmRlZiBOREVCVUcgKi8K KyAKKy0JdGhlVGltZXItPnN0YXRlID0gR0xPQlVTX1VUUF9USU1FUl9ESVNBQkxFRDsKKysgICAg ICAgIHRoZVRpbWVyLT5zdGF0ZSA9IEdMT0JVU19VVFBfVElNRVJfRElTQUJMRUQ7CisgfQorIAor IHZvaWQgZ2xvYnVzX3V0cF9lbmFibGVfdGltZXIodW5zaWduZWQgdGltZXJOdW1iZXIpCisgewor LQlnbG9idXNfdXRwX1RpbWVyX3QgKnRoZVRpbWVyOworKyAgICAgICAgZ2xvYnVzX3V0cF9UaW1l cl90ICp0aGVUaW1lcjsKKyAKKyAjaWZuZGVmIE5ERUJVRworLQlpZiAodGltZXJOdW1iZXIgPj0g Z2xvYnVzX3V0cF9udW1UaW1lcnMpIHsKKy0JCWdsb2J1c191dHBfd2FybigiZ2xvYnVzX3V0cF9k aXNhYmxlX3RpbWVyOiBpbGxlZ2FsIHRpbWVyICVkIiwKKy0JCQkgKGludCkgdGltZXJOdW1iZXIp OworLQkJcmV0dXJuOworLQl9CisrICAgICAgICBpZiAodGltZXJOdW1iZXIgPj0gZ2xvYnVzX3V0 cF9udW1UaW1lcnMpIHsKKysgICAgICAgICAgICAgICAgZ2xvYnVzX3V0cF93YXJuKCJnbG9idXNf dXRwX2Rpc2FibGVfdGltZXI6IGlsbGVnYWwgdGltZXIgJWQiLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAoaW50KSB0aW1lck51bWJlcik7CisrICAgICAgICAgICAgICAgIHJldHVybjsKKysg ICAgICAgIH0KKyAjZW5kaWYgLyogI2lmbmRlZiBOREVCVUcgKi8KKyAKKy0JdGhlVGltZXIgPSAm Z2xvYnVzX3V0cF90aW1lcnNbdGltZXJOdW1iZXJdOworKyAgICAgICAgdGhlVGltZXIgPSAmZ2xv YnVzX3V0cF90aW1lcnNbdGltZXJOdW1iZXJdOworIAorLQkJCS8qIElmIFNUT1BQRUQgb3IgUlVO TklORywgYWxyZWFkeSBlbmFibGVkLgorLQkJCSAgIE90aGVyd2lzZSwgY2FuIG9ubHkgZ2V0IHRv IERJU0FCTEVEIGZyb20KKy0JCQkgICBTVE9QUEVELCBzbyBnbyB0aGVyZS4gKi8KKy0JaWYgKHRo ZVRpbWVyLT5zdGF0ZSA9PSBHTE9CVVNfVVRQX1RJTUVSX0RJU0FCTEVEKQorLQkJdGhlVGltZXIt PnN0YXRlID0gR0xPQlVTX1VUUF9USU1FUl9TVE9QUEVEOworKyAgICAgICAgICAgICAgICAgICAg ICAgIC8qIElmIFNUT1BQRUQgb3IgUlVOTklORywgYWxyZWFkeSBlbmFibGVkLgorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSwgY2FuIG9ubHkgZ2V0IHRvIERJU0FCTEVEIGZy b20KKysgICAgICAgICAgICAgICAgICAgICAgICAgICBTVE9QUEVELCBzbyBnbyB0aGVyZS4gKi8K KysgICAgICAgIGlmICh0aGVUaW1lci0+c3RhdGUgPT0gR0xPQlVTX1VUUF9USU1FUl9ESVNBQkxF RCkKKysgICAgICAgICAgICAgICAgdGhlVGltZXItPnN0YXRlID0gR0xPQlVTX1VUUF9USU1FUl9T VE9QUEVEOworIH0KKyAKKyB2b2lkIGdsb2J1c191dHBfZGlzYWJsZV9hbGxfdGltZXJzKHZvaWQp CisgeworLQl1bnNpZ25lZCBpOworKyAgICAgICAgdW5zaWduZWQgaTsKKyAKKy0JZm9yIChpID0g MDsgaSA8IGdsb2J1c191dHBfbnVtVGltZXJzOyBpKyspCistCQlnbG9idXNfdXRwX2Rpc2FibGVf dGltZXIoaSk7CisrICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZ2xvYnVzX3V0cF9udW1UaW1lcnM7 IGkrKykKKysgICAgICAgICAgICAgICAgZ2xvYnVzX3V0cF9kaXNhYmxlX3RpbWVyKGkpOworIH0K KyAKKyB2b2lkIGdsb2J1c191dHBfZW5hYmxlX2FsbF90aW1lcnModm9pZCkKKyB7CistCXVuc2ln bmVkIGk7CisrICAgICAgICB1bnNpZ25lZCBpOworIAorLQlmb3IgKGkgPSAwOyBpIDwgZ2xvYnVz X3V0cF9udW1UaW1lcnM7IGkrKykKKy0JCWdsb2J1c191dHBfZW5hYmxlX3RpbWVyKGkpOworKyAg ICAgICAgZm9yIChpID0gMDsgaSA8IGdsb2J1c191dHBfbnVtVGltZXJzOyBpKyspCisrICAgICAg ICAgICAgICAgIGdsb2J1c191dHBfZW5hYmxlX3RpbWVyKGkpOworIH0KKyAKKyBjb25zdCBjaGFy ICoKKyBnbG9idXNfdXRwX25hbWVfdGltZXIodW5zaWduZWQgdGltZXJOdW1iZXIsIGNvbnN0IGNo YXIgKm5hbWVTdHIsIC4uLikKKyB7CistCWNoYXIgKm5hbWU7CistCXZhX2xpc3QgYXA7CisrICAg ICAgICBjaGFyICpuYW1lOworKyAgICAgICAgdmFfbGlzdCBhcDsKKyAKKyAjaWZuZGVmIE5ERUJV RworLQlpZiAodGltZXJOdW1iZXIgPj0gZ2xvYnVzX3V0cF9udW1UaW1lcnMpIHsKKy0JCWdsb2J1 c191dHBfd2FybigiZ2xvYnVzX3V0cF9uYW1lX3RpbWVyOiBpbGxlZ2FsIHRpbWVyICVkIiwKKy0J CQkgKGludCkgdGltZXJOdW1iZXIpOworLQkJcmV0dXJuIE5VTEw7CistCX0KKysgICAgICAgIGlm ICh0aW1lck51bWJlciA+PSBnbG9idXNfdXRwX251bVRpbWVycykgeworKyAgICAgICAgICAgICAg ICBnbG9idXNfdXRwX3dhcm4oImdsb2J1c191dHBfbmFtZV90aW1lcjogaWxsZWdhbCB0aW1lciAl ZCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpIHRpbWVyTnVtYmVyKTsKKysgICAg ICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisrICAgICAgICB9CisgI2VuZGlmIC8qICNpZm5kZWYg TkRFQlVHICovCistCWlmICghKG5hbWUgPSBnbG9idXNfbWFsbG9jKHNpemVvZihjaGFyKSAqIEdM T0JVU19VVFBfTUFYX05BTUVfTEVOR1RIKSkpIHsKKy0JCWdsb2J1c191dHBfd2FybigiZ2xvYnVz X3V0cF9uYW1lX3RpbWVyOiBnbG9idXNfbWFsbG9jKCkgZmFpbGVkIik7CistCQlyZXR1cm4gTlVM TDsKKy0JfQorKyAgICAgICAgaWYgKCEobmFtZSA9IGdsb2J1c19tYWxsb2Moc2l6ZW9mKGNoYXIp ICogR0xPQlVTX1VUUF9NQVhfTkFNRV9MRU5HVEgpKSkgeworKyAgICAgICAgICAgICAgICBnbG9i dXNfdXRwX3dhcm4oImdsb2J1c191dHBfbmFtZV90aW1lcjogZ2xvYnVzX21hbGxvYygpIGZhaWxl ZCIpOworKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgICAgIH0KKyAKKy0JdmFf c3RhcnQoYXAsIG5hbWVTdHIpOworLQl2c3ByaW50ZihuYW1lLCBuYW1lU3RyLCBhcCk7CistCWds b2J1c191dHBfdGltZXJzW3RpbWVyTnVtYmVyXS5uYW1lID0gbmFtZTsKKysgICAgICAgIHZhX3N0 YXJ0KGFwLCBuYW1lU3RyKTsKKysgICAgICAgIHZzcHJpbnRmKG5hbWUsIG5hbWVTdHIsIGFwKTsK KysgICAgICAgIGdsb2J1c191dHBfdGltZXJzW3RpbWVyTnVtYmVyXS5uYW1lID0gbmFtZTsKKyAK Ky0JcmV0dXJuIG5hbWU7CisrICAgICAgICByZXR1cm4gbmFtZTsKKyB9CisgCisgdm9pZAorIGds b2J1c191dHBfZ2V0X2FjY3VtX3RpbWUodW5zaWduZWQgdGltZXJOdW1iZXIsIGRvdWJsZSAqdGlt ZSwgaW50ICpwcmVjaXNpb24pCisgeworLQlnbG9idXNfdXRwX1RpbWVyX3QgKnRoZVRpbWVyOwor KyAgICAgICAgZ2xvYnVzX3V0cF9UaW1lcl90ICp0aGVUaW1lcjsKKyAKKyAjaWZuZGVmIE5ERUJV RworLQlpZiAodGltZXJOdW1iZXIgPj0gZ2xvYnVzX3V0cF9udW1UaW1lcnMpIHsKKy0JCWdsb2J1 c191dHBfd2FybigiZ2xvYnVzX3V0cF9nZXRfYWNjdW1fdGltZTogaWxsZWdhbCB0aW1lciAlZCIs CistCQkJIChpbnQpIHRpbWVyTnVtYmVyKTsKKy0JCXJldHVybjsKKy0JfQorKyAgICAgICAgaWYg KHRpbWVyTnVtYmVyID49IGdsb2J1c191dHBfbnVtVGltZXJzKSB7CisrICAgICAgICAgICAgICAg IGdsb2J1c191dHBfd2FybigiZ2xvYnVzX3V0cF9nZXRfYWNjdW1fdGltZTogaWxsZWdhbCB0aW1l ciAlZCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpIHRpbWVyTnVtYmVyKTsKKysg ICAgICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorICNlbmRpZiAvKiAjaWZuZGVmIE5E RUJVRyAqLworIAorLQl0aGVUaW1lciA9ICZnbG9idXNfdXRwX3RpbWVyc1t0aW1lck51bWJlcl07 CisrICAgICAgICB0aGVUaW1lciA9ICZnbG9idXNfdXRwX3RpbWVyc1t0aW1lck51bWJlcl07Cisg CistCWdsb2J1c191dHBfdGltZVRvRG91YmxlKHRpbWUsIHByZWNpc2lvbiwgJnRoZVRpbWVyLT5h Y2N1bXVsYXRlZFRpbWUpOworKyAgICAgICAgZ2xvYnVzX3V0cF90aW1lVG9Eb3VibGUodGltZSwg cHJlY2lzaW9uLCAmdGhlVGltZXItPmFjY3VtdWxhdGVkVGltZSk7CisgfQorIAorIAorQEAgLTU0 MiwzMCArNTQyLDMwIEBAIGdsb2J1c191dHBfZ2V0X2FjY3VtX3RpbWUodW5zaWduZWQgdGltZXJO dW1iZXIsIGRvdWJsZSAqdGltZSwgaW50ICpwcmVjaXNpb24pCisgUHJpdmF0ZSBVVFAgZnVuY3Rp b25zLgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisgCistCQkJLyogVXNlIGV4dGVybmFsIGFzc2VtYmxlciBy b3V0aW5lIGZvciBSUzYwMDAgYnkKKy0JCQkgICBkZWZhdWx0LCB1bmxlc3MgUlM2MDAwX0dFVFRJ TUVSIGlzIGRlZmluZWQuICovCisrICAgICAgICAgICAgICAgICAgICAgICAgLyogVXNlIGV4dGVy bmFsIGFzc2VtYmxlciByb3V0aW5lIGZvciBSUzYwMDAgYnkKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICBkZWZhdWx0LCB1bmxlc3MgUlM2MDAwX0dFVFRJTUVSIGlzIGRlZmluZWQuICovCisg I2lmICFkZWZpbmVkKFJTNjAwMCkgfHwgKGRlZmluZWQoUlM2MDAwKSAmJiBkZWZpbmVkKFJTNjAw MF9HRVRUSU1FUikpCisgCisgdm9pZAorIGdsb2J1c191dHBfcmVhZFRpbWUoZ2xvYnVzX3V0cF9U aW1lVmFsdWVfdCAqdHYpCisgeworICNpZmRlZiBVTklYCistCWludCBmbGFnOworKyAgICAgICAg aW50IGZsYWc7CisgCistCWZsYWcgPSBnZXR0aW1lb2ZkYXkodHYsIE5VTEwpOworKyAgICAgICAg ZmxhZyA9IGdldHRpbWVvZmRheSh0diwgTlVMTCk7CisgCisgI2lmZGVmIERFQlVHCistCWlmIChm bGFnKSB7CistCQlnbG9idXNfdXRwX3dhcm4oImdsb2J1c191dHBfcmVhZFRpbWU6IGdldHRpbWVv ZmRheSgpIGZhaWxlZCIpOworLQkJZ2xvYnVzX3V0cF93YXJuKCJnbG9idXNfdXRwX3JlYWRUaW1l OiBzeXN0ZW0gZXJyb3IgbWVzc2FnZSBpcyBcIiVzXCIiLAorLQkJCSBzeXNfZXJybGlzdFtlcnJu b10pOworLQl9CisrICAgICAgICBpZiAoZmxhZykgeworKyAgICAgICAgICAgICAgICBnbG9idXNf dXRwX3dhcm4oImdsb2J1c191dHBfcmVhZFRpbWU6IGdldHRpbWVvZmRheSgpIGZhaWxlZCIpOwor KyAgICAgICAgICAgICAgICBnbG9idXNfdXRwX3dhcm4oImdsb2J1c191dHBfcmVhZFRpbWU6IHN5 c3RlbSBlcnJvciBtZXNzYWdlIGlzIFwiJXNcIiIsCisrICAgICAgICAgICAgICAgICAgICAgICAg IHN5c19lcnJsaXN0W2Vycm5vXSk7CisrICAgICAgICB9CisgI2VuZGlmIC8qICNpZmRlZiBERUJV RyAqLworICNlbmRpZiAvKiAjaWZkZWYgVU5JWCAqLworIAorIAorICNpZmRlZiBTT0xIUgorLQkq dHYgPSBnZXRocnRpbWUoKTsKKysgICAgICAgICp0diA9IGdldGhydGltZSgpOworICNlbmRpZgor IAorICNpZmRlZiBSUzYwMDAKK0BAIC01NzcsOTUgKzU3Nyw5NSBAQCBvbiBwLiA1OSBvZiB0aGUg Ik9wdGltaXppbmcgYW5kIFR1bmluZyBHdWlkZSBmb3IgRk9SVFJBTiwgQywgYW5kIEMrKyIsIGFu ZAorIHNlZW1zIHRvIHdvcmsganVzdCBmaW5lLgorICovCisgCistCWludCBmbGFnOworKyAgICAg ICAgaW50IGZsYWc7CisgCistCWZsYWcgPSBnZXR0aW1lcihUSU1FT0ZEQVksIHR2KTsKKysgICAg ICAgIGZsYWcgPSBnZXR0aW1lcihUSU1FT0ZEQVksIHR2KTsKKyAKKyAjaWZkZWYgREVCVUcKKy0J aWYgKGZsYWcpIHsKKy0JCWdsb2J1c191dHBfd2FybigiZ2xvYnVzX3V0cF9yZWFkVGltZTogZ2V0 dGltZXIoKSBmYWlsZWQiKTsKKy0JCWdsb2J1c191dHBfd2FybigiZ2xvYnVzX3V0cF9yZWFkVGlt ZTogc3lzdGVtIGVycm9yIG1lc3NhZ2UgaXMgXCIlc1wiIiwKKy0JCQkgc3lzX2Vycmxpc3RbZXJy bm9dKTsKKy0JfQorKyAgICAgICAgaWYgKGZsYWcpIHsKKysgICAgICAgICAgICAgICAgZ2xvYnVz X3V0cF93YXJuKCJnbG9idXNfdXRwX3JlYWRUaW1lOiBnZXR0aW1lcigpIGZhaWxlZCIpOworKyAg ICAgICAgICAgICAgICBnbG9idXNfdXRwX3dhcm4oImdsb2J1c191dHBfcmVhZFRpbWU6IHN5c3Rl bSBlcnJvciBtZXNzYWdlIGlzIFwiJXNcIiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgIHN5 c19lcnJsaXN0W2Vycm5vXSk7CisrICAgICAgICB9CisgI2VuZGlmIC8qICNpZmRlZiBERUJVRyAq LworIAorICNlbmRpZiAvKiAjaWZkZWYgUlM2MDAwICovCisgCisgI2lmZGVmIFBBUkFHT04KKy0J KnR2ID0gZGNsb2NrKCk7CistI2VuZGlmCS8qICNpZmRlZiBQQVJBR09OICovCisrICAgICAgICAq dHYgPSBkY2xvY2soKTsKKysjZW5kaWYgIC8qICNpZmRlZiBQQVJBR09OICovCisgfQorIAorLSNl bmRpZgkvKiAjaWYgIWRlZmluZWQoUlM2MDAwKSB8fCAuLi4uICovCisrI2VuZGlmICAvKiAjaWYg IWRlZmluZWQoUlM2MDAwKSB8fCAuLi4uICovCisgCisgCisgdm9pZAorIGdsb2J1c191dHBfdGlt ZURpZmZlcmVuY2UoZ2xvYnVzX3V0cF9UaW1lVmFsdWVfdCAqZGlmZiwgY29uc3QgZ2xvYnVzX3V0 cF9UaW1lVmFsdWVfdCAqc3RhcnQsCistCQkgICBjb25zdCBnbG9idXNfdXRwX1RpbWVWYWx1ZV90 ICplbmQpCisrICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsb2J1c191dHBfVGltZVZhbHVlX3Qg KmVuZCkKKyB7CisgI2lmZGVmIFVOSVgKKy0JZGlmZi0+dHZfc2VjID0gZW5kLT50dl9zZWMgLSBz dGFydC0+dHZfc2VjOworKyAgICAgICAgZGlmZi0+dHZfc2VjID0gZW5kLT50dl9zZWMgLSBzdGFy dC0+dHZfc2VjOworIAorLQlpZiAoZW5kLT50dl91c2VjIDwgc3RhcnQtPnR2X3VzZWMpIHsKKy0J CWRpZmYtPnR2X3NlYy0tOwkJLyogIkJvcnJvdyIgZnJvbSBzZWNvbmRzLiAqLworLQkJZGlmZi0+ dHZfdXNlYyA9IDEwMDAwMDAgKyBlbmQtPnR2X3VzZWMgLSBzdGFydC0+dHZfdXNlYzsKKy0JfSBl bHNlCistCQlkaWZmLT50dl91c2VjID0gZW5kLT50dl91c2VjIC0gc3RhcnQtPnR2X3VzZWM7Cisr ICAgICAgICBpZiAoZW5kLT50dl91c2VjIDwgc3RhcnQtPnR2X3VzZWMpIHsKKysgICAgICAgICAg ICAgICAgZGlmZi0+dHZfc2VjLS07ICAgICAgICAgLyogIkJvcnJvdyIgZnJvbSBzZWNvbmRzLiAq LworKyAgICAgICAgICAgICAgICBkaWZmLT50dl91c2VjID0gMTAwMDAwMCArIGVuZC0+dHZfdXNl YyAtIHN0YXJ0LT50dl91c2VjOworKyAgICAgICAgfSBlbHNlCisrICAgICAgICAgICAgICAgIGRp ZmYtPnR2X3VzZWMgPSBlbmQtPnR2X3VzZWMgLSBzdGFydC0+dHZfdXNlYzsKKyAjZW5kaWYgLyog I2lmZGVmIFVOSVggKi8KKyAKKyAjaWZkZWYgUlM2MDAwCistCWRpZmYtPnR2X3NlYyA9IGVuZC0+ dHZfc2VjIC0gc3RhcnQtPnR2X3NlYzsKKysgICAgICAgIGRpZmYtPnR2X3NlYyA9IGVuZC0+dHZf c2VjIC0gc3RhcnQtPnR2X3NlYzsKKyAKKy0JaWYgKGVuZC0+dHZfbnNlYyA8IHN0YXJ0LT50dl9u c2VjKSB7CistCQlkaWZmLT50dl9zZWMtLTsJCS8qICJCb3Jyb3ciIGZyb20gc2Vjb25kcy4gKi8K Ky0JCWRpZmYtPnR2X25zZWMgPSAxMDAwMDAwMDAwICsgZW5kLT50dl9uc2VjIC0gc3RhcnQtPnR2 X25zZWM7CistCX0gZWxzZQorLQkJZGlmZi0+dHZfbnNlYyA9IGVuZC0+dHZfbnNlYyAtIHN0YXJ0 LT50dl9uc2VjOworKyAgICAgICAgaWYgKGVuZC0+dHZfbnNlYyA8IHN0YXJ0LT50dl9uc2VjKSB7 CisrICAgICAgICAgICAgICAgIGRpZmYtPnR2X3NlYy0tOyAgICAgICAgIC8qICJCb3Jyb3ciIGZy b20gc2Vjb25kcy4gKi8KKysgICAgICAgICAgICAgICAgZGlmZi0+dHZfbnNlYyA9IDEwMDAwMDAw MDAgKyBlbmQtPnR2X25zZWMgLSBzdGFydC0+dHZfbnNlYzsKKysgICAgICAgIH0gZWxzZQorKyAg ICAgICAgICAgICAgICBkaWZmLT50dl9uc2VjID0gZW5kLT50dl9uc2VjIC0gc3RhcnQtPnR2X25z ZWM7CisgI2VuZGlmIC8qICNpZmRlZiBSUzYwMDAgKi8KKyAKKyAjaWZkZWYgU09MSFIKKy0JKmRp ZmYgPSAqZW5kIC0gKnN0YXJ0OworKyAgICAgICAgKmRpZmYgPSAqZW5kIC0gKnN0YXJ0OworICNl bmRpZgorIAorICNpZmRlZiBQQVJBR09OCistCSpkaWZmID0gKmVuZCAtICpzdGFydDsKKy0jZW5k aWYJLyogI2lmZGVmIFBBUkFHT04gKi8KKysgICAgICAgICpkaWZmID0gKmVuZCAtICpzdGFydDsK KysjZW5kaWYgIC8qICNpZmRlZiBQQVJBR09OICovCisgfQorIAorIAorIHZvaWQKKyBnbG9idXNf dXRwX3RpbWVBZGQoZ2xvYnVzX3V0cF9UaW1lVmFsdWVfdCAqb2xkRWxhcHNlZCwKKy0JICAgIGNv bnN0IGdsb2J1c191dHBfVGltZVZhbHVlX3QgKm5ld0VsYXBzZWQpCisrICAgICAgICAgICAgY29u c3QgZ2xvYnVzX3V0cF9UaW1lVmFsdWVfdCAqbmV3RWxhcHNlZCkKKyB7CisgI2lmZGVmIFVOSVgK Ky0Jb2xkRWxhcHNlZC0+dHZfdXNlYyArPSBuZXdFbGFwc2VkLT50dl91c2VjOworKyAgICAgICAg b2xkRWxhcHNlZC0+dHZfdXNlYyArPSBuZXdFbGFwc2VkLT50dl91c2VjOworIAorLQlpZiAob2xk RWxhcHNlZC0+dHZfdXNlYyA+PSAxMDAwMDAwKSB7CistCQlvbGRFbGFwc2VkLT50dl9zZWMrKzsJ LyogIkNhcnJ5IiBpbnRvIHNlY29uZHMuICovCistCQlvbGRFbGFwc2VkLT50dl91c2VjIC09IDEw MDAwMDA7CistCX0KKysgICAgICAgIGlmIChvbGRFbGFwc2VkLT50dl91c2VjID49IDEwMDAwMDAp IHsKKysgICAgICAgICAgICAgICAgb2xkRWxhcHNlZC0+dHZfc2VjKys7ICAgLyogIkNhcnJ5IiBp bnRvIHNlY29uZHMuICovCisrICAgICAgICAgICAgICAgIG9sZEVsYXBzZWQtPnR2X3VzZWMgLT0g MTAwMDAwMDsKKysgICAgICAgIH0KKyAKKy0Jb2xkRWxhcHNlZC0+dHZfc2VjICs9IG5ld0VsYXBz ZWQtPnR2X3NlYzsKKysgICAgICAgIG9sZEVsYXBzZWQtPnR2X3NlYyArPSBuZXdFbGFwc2VkLT50 dl9zZWM7CisgI2VuZGlmIC8qICNpZmRlZiBVTklYICovCisgCisgI2lmZGVmIFJTNjAwMAorLQlv bGRFbGFwc2VkLT50dl9uc2VjICs9IG5ld0VsYXBzZWQtPnR2X25zZWM7CisrICAgICAgICBvbGRF bGFwc2VkLT50dl9uc2VjICs9IG5ld0VsYXBzZWQtPnR2X25zZWM7CisgCistCWlmIChvbGRFbGFw c2VkLT50dl9uc2VjID49IDEwMDAwMDAwMDApIHsKKy0JCW9sZEVsYXBzZWQtPnR2X3NlYysrOwkv KiAiQ2FycnkiIGludG8gc2Vjb25kcy4gKi8KKy0JCW9sZEVsYXBzZWQtPnR2X25zZWMgLT0gMTAw MDAwMDAwMDsKKy0JfQorKyAgICAgICAgaWYgKG9sZEVsYXBzZWQtPnR2X25zZWMgPj0gMTAwMDAw MDAwMCkgeworKyAgICAgICAgICAgICAgICBvbGRFbGFwc2VkLT50dl9zZWMrKzsgICAvKiAiQ2Fy cnkiIGludG8gc2Vjb25kcy4gKi8KKysgICAgICAgICAgICAgICAgb2xkRWxhcHNlZC0+dHZfbnNl YyAtPSAxMDAwMDAwMDAwOworKyAgICAgICAgfQorIAorLQlvbGRFbGFwc2VkLT50dl9zZWMgKz0g bmV3RWxhcHNlZC0+dHZfc2VjOworKyAgICAgICAgb2xkRWxhcHNlZC0+dHZfc2VjICs9IG5ld0Vs YXBzZWQtPnR2X3NlYzsKKyAjZW5kaWYgLyogI2lmZGVmIFJTNjAwMCAqLworIAorICNpZmRlZiBT T0xIUgorLQkqb2xkRWxhcHNlZCArPSAqbmV3RWxhcHNlZDsKKysgICAgICAgICpvbGRFbGFwc2Vk ICs9ICpuZXdFbGFwc2VkOworICNlbmRpZgorIAorICNpZmRlZiBQQVJBR09OCistCSpvbGRFbGFw c2VkICs9ICpuZXdFbGFwc2VkOworLSNlbmRpZgkvKiAjaWZkZWYgUEFSQUdPTiAqLworKyAgICAg ICAgKm9sZEVsYXBzZWQgKz0gKm5ld0VsYXBzZWQ7CisrI2VuZGlmICAvKiAjaWZkZWYgUEFSQUdP TiAqLworIH0KKyAKKyAKK0BAIC02NzMsMjIgKzY3MywyMiBAQCB2b2lkCisgZ2xvYnVzX3V0cF90 aW1lWmVybyhnbG9idXNfdXRwX1RpbWVWYWx1ZV90ICp0dikKKyB7CisgI2lmZGVmIFVOSVgKKy0J dHYtPnR2X3NlYyA9IDA7CistCXR2LT50dl91c2VjID0gMDsKKysgICAgICAgIHR2LT50dl9zZWMg PSAwOworKyAgICAgICAgdHYtPnR2X3VzZWMgPSAwOworICNlbmRpZiAvKiAjaWZkZWYgVU5JWCAq LworIAorICNpZmRlZiBSUzYwMDAKKy0JdHYtPnR2X3NlYyA9IDA7CistCXR2LT50dl9uc2VjID0g MDsKKysgICAgICAgIHR2LT50dl9zZWMgPSAwOworKyAgICAgICAgdHYtPnR2X25zZWMgPSAwOwor ICNlbmRpZiAvKiAjaWZkZWYgUlM2MDAwICovCisgCisgI2lmZGVmIFNPTEhSCistCSp0diA9IDA7 CisrICAgICAgICAqdHYgPSAwOworICNlbmRpZgorIAorICNpZmRlZiBQQVJBR09OCistCSp0diA9 IDAuMDsKKy0jZW5kaWYJLyogI2lmZGVmIFBBUkFHT04gKi8KKysgICAgICAgICp0diA9IDAuMDsK KysjZW5kaWYgIC8qICNpZmRlZiBQQVJBR09OICovCisgfQorIAorIAorQEAgLTY5NiwzNyArNjk2 LDM3IEBAIHZvaWQKKyBnbG9idXNfdXRwX3RpbWVUb0RvdWJsZShkb3VibGUgKnRpbWUsIGludCAq cHJlY2lzaW9uLCBjb25zdCBnbG9idXNfdXRwX1RpbWVWYWx1ZV90ICp0dikKKyB7CisgI2lmZGVm IFVOSVgKKy0JKnRpbWUgPSAoZG91YmxlKSB0di0+dHZfc2VjICsgKChkb3VibGUpIHR2LT50dl91 c2VjKSAvIDEwMDAwMDAuMDsKKy0JKnByZWNpc2lvbiA9IDY7CisrICAgICAgICAqdGltZSA9IChk b3VibGUpIHR2LT50dl9zZWMgKyAoKGRvdWJsZSkgdHYtPnR2X3VzZWMpIC8gMTAwMDAwMC4wOwor KyAgICAgICAgKnByZWNpc2lvbiA9IDY7CisgI2VuZGlmIC8qICNpZmRlZiBVTklYICovCisgCisg I2lmZGVmIFJTNjAwMAorLQkqdGltZSA9IChkb3VibGUpIHR2LT50dl9zZWMgKyAoKGRvdWJsZSkg dHYtPnR2X25zZWMpIC8KKy0JCTEwMDAwMDAwMDAuMDsKKy0JKnByZWNpc2lvbiA9IDc7CisrICAg ICAgICAqdGltZSA9IChkb3VibGUpIHR2LT50dl9zZWMgKyAoKGRvdWJsZSkgdHYtPnR2X25zZWMp IC8KKysgICAgICAgICAgICAgICAgMTAwMDAwMDAwMC4wOworKyAgICAgICAgKnByZWNpc2lvbiA9 IDc7CisgI2VuZGlmIC8qICNpZmRlZiBSUzYwMDAgKi8KKyAKKyAjaWZkZWYgU09MSFIKKy0JKnRp bWUgPSAoKGRvdWJsZSkqdHYpIC8gMTAwMDAwMDAwMC4wOworLQkqcHJlY2lzaW9uID0gNjsKKysg ICAgICAgICp0aW1lID0gKChkb3VibGUpKnR2KSAvIDEwMDAwMDAwMDAuMDsKKysgICAgICAgICpw cmVjaXNpb24gPSA2OworICNlbmRpZgorIAorICNpZmRlZiBQQVJBR09OCistCSp0aW1lID0gKnR2 OworLQkqcHJlY2lzaW9uID0gNzsKKy0jZW5kaWYJLyogI2lmZGVmIFBBUkFHT04gKi8KKysgICAg ICAgICp0aW1lID0gKnR2OworKyAgICAgICAgKnByZWNpc2lvbiA9IDc7CisrI2VuZGlmICAvKiAj aWZkZWYgUEFSQUdPTiAqLworIH0KKyAKKyAKKyB2b2lkCisgZ2xvYnVzX3V0cF90aW1lVG9TdHJp bmcoY2hhciB0aW1lU3RyaW5nW10sIGNvbnN0IGdsb2J1c191dHBfVGltZVZhbHVlX3QgKnR2KQor IHsKKy0JZG91YmxlIHR2QXNEb3VibGU7CistCWludCBwcmVjaXNpb247CisrICAgICAgICBkb3Vi bGUgdHZBc0RvdWJsZTsKKysgICAgICAgIGludCBwcmVjaXNpb247CisgCistCWdsb2J1c191dHBf dGltZVRvRG91YmxlKCZ0dkFzRG91YmxlLCAmcHJlY2lzaW9uLCB0dik7CisrICAgICAgICBnbG9i dXNfdXRwX3RpbWVUb0RvdWJsZSgmdHZBc0RvdWJsZSwgJnByZWNpc2lvbiwgdHYpOworIAorLQlz cHJpbnRmKHRpbWVTdHJpbmcsICIlLipmIiwgcHJlY2lzaW9uLCB0dkFzRG91YmxlKTsKKysgICAg ICAgIHNwcmludGYodGltZVN0cmluZywgIiUuKmYiLCBwcmVjaXNpb24sIHR2QXNEb3VibGUpOwor IH0KKyAKKyAKK0BAIC03MzUsMTMgKzczNSwxMyBAQCBnbG9idXNfdXRwX3dhcm4oY29uc3QgY2hh ciAqbWVzc2FnZVN0ciwgLi4uKQorIHsKKyAjICAgaWYgZGVmaW5lZChERUJVRykKKyAgICAgewor LQl2YV9saXN0IGFwOworKyAgICAgICAgdmFfbGlzdCBhcDsKKyAKKy0JdmFfc3RhcnQoYXAsIG1l c3NhZ2VTdHIpOworKyAgICAgICAgdmFfc3RhcnQoYXAsIG1lc3NhZ2VTdHIpOworIAorLQl2ZnBy aW50ZihzdGRlcnIsIG1lc3NhZ2VTdHIsIGFwKTsKKy0JZnByaW50ZihzdGRlcnIsICJcbiIpOwor LQlmZmx1c2goc3RkZXJyKTsJCS8qIEp1c3QgdG8gYmUgc2FmZS4gKi8KKysgICAgICAgIHZmcHJp bnRmKHN0ZGVyciwgbWVzc2FnZVN0ciwgYXApOworKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJc biIpOworKyAgICAgICAgZmZsdXNoKHN0ZGVycik7ICAgICAgICAgLyogSnVzdCB0byBiZSBzYWZl LiAqLworICAgICB9CisgIyAgIGVuZGlmCisgfQorLS0gCisyLjU0LjAKKwoKZGlmZiAtLWdpdCBh LzAwMDItRml4LWNvbXBpbGVyLWFuZC1kb3h5Z2VuLXdhcm5pbmdzLnBhdGNoIGIvMDAwMi1GaXgt Y29tcGlsZXItYW5kLWRveHlnZW4td2FybmluZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uNDFmMGQ2NwotLS0gL2Rldi9udWxsCisrKyBiLzAwMDItRml4LWNvbXBp bGVyLWFuZC1kb3h5Z2VuLXdhcm5pbmdzLnBhdGNoCkBAIC0wLDAgKzEsNzc3IEBACitGcm9tIDRl ZTA4ZDEzZTI5NjMzMDllMjA2M2RjNDVkZWRkMDY3MzM3ZDNiNzYgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCitGcm9tOiBNYXR0aWFzIEVsbGVydCA8bWF0dGlhcy5lbGxlcnRAcGh5c2ljcy51dS5z ZT4KK0RhdGU6IFdlZCwgMjAgTWF5IDIwMjYgMDA6MTU6MzcgKzAyMDAKK1N1YmplY3Q6IFtQQVRD SCAyLzJdIEZpeCBjb21waWxlciBhbmQgZG94eWdlbiB3YXJuaW5ncworCistLS0KKyB4aW8vc3Jj L2J1aWx0aW5zL2h0dHAvZ2xvYnVzX2lfeGlvX2h0dHAuaCAgICAgfCAgMiArLQorIHhpby9zcmMv YnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHAuYyAgICAgICB8ICA2ICsrKy0KKyB4aW8vc3Jj L2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX2F0dHIuYyAgfCAgNCArKysKKyAuLi4vYnVp bHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHBfY2xpZW50LmMgICAgfCAxMSArKystLS0tCisgLi4u L2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX2hhbmRsZS5jICAgIHwgMTUgKysrLS0tLS0t CisgLi4uL2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX2hlYWRlci5jICAgIHwgIDggKyst LS0KKyAuLi4vaHR0cC9nbG9idXNfeGlvX2h0dHBfaGVhZGVyX2luZm8uYyAgICAgICAgfCAgNiAr Ky0tCisgLi4uL2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX3JlcXVlc3QuYyAgIHwgIDYg KystLQorIC4uLi9idWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0cF9yZXNwb25zZS5jICB8ICA2 ICsrLS0KKyAuLi4vYnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHBfc2VydmVyLmMgICAgfCAx MCArKystLS0KKyAuLi4vYnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHBfdGFyZ2V0LmMgICAg fCAgNCArKysKKyAuLi4vYnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHBfdHJhbnNmb3JtLmMg fCAzMiArKystLS0tLS0tLS0tLS0tLS0tCisgLi4uL21vZGVfZS9nbG9idXNfeGlvX21vZGVfZV9k cml2ZXIuYyAgICAgICAgIHwgIDQgKy0tCisgeGlvL3NyYy9nbG9idXNfeGlvX2RyaXZlci5jICAg ICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB4aW8vc3JjL2dsb2J1c194aW9fc3lzdGVtX3NlbGVj dC5jICAgICAgICAgICAgfCAxNyArKysrLS0tLS0tCisgeGlvL3NyYy90ZXN0L2RyaXZlcnMvZ2xv YnVzX3hpb19zbXRwLmMgICAgICAgIHwgIDcgKystLQorIHhpby9zcmMvdGVzdC9nbG9idXNfdXRw X21haW4uYyAgICAgICAgICAgICAgICB8ICA4ICsrKy0tCisgeGlvL3NyYy90ZXN0L2h0dHBfdGlt ZW91dF90ZXN0LmMgICAgICAgICAgICAgIHwgMjIgKysrKysrLS0tLS0tLQorIDE4IGZpbGVzIGNo YW5nZWQsIDc0IGluc2VydGlvbnMoKyksIDk2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEv eGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1c19pX3hpb19odHRwLmggYi94aW8vc3JjL2J1aWx0 aW5zL2h0dHAvZ2xvYnVzX2lfeGlvX2h0dHAuaAoraW5kZXggMTU1ZGZkZTM0Li5jOGI5M2YyOGIg MTAwNjQ0CistLS0gYS94aW8vc3JjL2J1aWx0aW5zL2h0dHAvZ2xvYnVzX2lfeGlvX2h0dHAuaAor KysrIGIveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1c19pX3hpb19odHRwLmgKK0BAIC00Mzcs NyArNDM3LDcgQEAgZ2xvYnVzX2lfeGlvX2h0dHBfY29weV9ibG9iKAorIGV4dGVybgorIGNoYXIg KgorIGdsb2J1c19pX3hpb19odHRwX2ZpbmRfZW9sKAorLSAgICBjb25zdCBjaGFyICogICAgICAg ICAgICAgICAgICAgICAgICBibG9iLAorKyAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBibG9iLAorICAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICBi bG9iX2xlbmd0aCk7CisgCisgZXh0ZXJuCitkaWZmIC0tZ2l0IGEveGlvL3NyYy9idWlsdGlucy9o dHRwL2dsb2J1c194aW9faHR0cC5jIGIveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1c194aW9f aHR0cC5jCitpbmRleCBjMzUzNWUwMjQuLjE0ODQxYzUyNiAxMDA2NDQKKy0tLSBhL3hpby9zcmMv YnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHAuYworKysrIGIveGlvL3NyYy9idWlsdGlucy9o dHRwL2dsb2J1c194aW9faHR0cC5jCitAQCAtMTcxLDYgKzE3MSw4IEBAIGdsb2J1c19pX3hpb19o dHRwX2NvcHlfYmxvYigKKyB9CisgLyogZ2xvYnVzX2xfeGlvX2h0dHBfY29weV9ibG9iKCkgKi8K KyAKKysjaWZuZGVmIEdMT0JVU19ET05UX0RPQ1VNRU5UX0lOVEVSTkFMCisrCisgLyoqCisgICog RGV0ZXJtaW5lIHdoZXRoZXIgYW4gSFRUUCBtZXRob2Qgc2hvdWxkIGNvbnRhaW4gYW4gZW50aXR5 LgorICAqIEBpbmdyb3VwIGdsb2J1c19pX3hpb19odHRwX3V0aWwKK0BAIC0yNzQsNyArMjc2LDcg QEAgZ2xvYnVzX2lfeGlvX2h0dHBfZ3Vlc3NfdmVyc2lvbigKKyAgKi8KKyBjaGFyICoKKyBnbG9i dXNfaV94aW9faHR0cF9maW5kX2VvbCgKKy0gICAgY29uc3QgY2hhciAqICAgICAgICAgICAgICAg ICAgICAgICAgYmxvYiwKKysgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YmxvYiwKKyAgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAgICAgICAgYmxvYl9sZW5n dGgpCisgeworICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7 CitAQCAtMzc5LDYgKzM4MSw4IEBAIGVycm9yX2V4aXQ6CisgfQorIC8qIGdsb2J1c19pX3hpb19o dHRwX2NsZWFudXBfcmVhZF9idWZmZXIoKSAqLworIAorKyNlbmRpZiAvKiBHTE9CVVNfRE9OVF9E T0NVTUVOVF9JTlRFUk5BTCAqLworKworIEdsb2J1c1hJT0RlZmluZURyaXZlcigKKyAgICAgaHR0 cCwKKyAgICAgZ2xvYnVzX2xfeGlvX2h0dHBfaW5pdCwKK2RpZmYgLS1naXQgYS94aW8vc3JjL2J1 aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX2F0dHIuYyBiL3hpby9zcmMvYnVpbHRpbnMvaHR0 cC9nbG9idXNfeGlvX2h0dHBfYXR0ci5jCitpbmRleCAyZDNkM2Q3YmQuLjk0ZGU0ZWUyZCAxMDA2 NDQKKy0tLSBhL3hpby9zcmMvYnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHBfYXR0ci5jCisr KysgYi94aW8vc3JjL2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX2F0dHIuYworQEAgLTIz LDYgKzIzLDggQEAKKyAgKi8KKyAjZW5kaWYKKyAKKysjaWZuZGVmIEdMT0JVU19ET05UX0RPQ1VN RU5UX0lOVEVSTkFMCisrCisgLyoqCisgICogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYW4gSFRU UCBhdHRyaWJ1dGUKKyAgKiBAaW5ncm91cCBnbG9idXNfaV94aW9faHR0cF9hdHRyCitAQCAtMzU1 LDMgKzM1Nyw1IEBAIGdsb2J1c19pX3hpb19odHRwX2F0dHJfZGVzdHJveSgKKyAgICAgcmV0dXJu IEdMT0JVU19TVUNDRVNTOworIH0KKyAvKiBnbG9idXNfaV94aW9faHR0cF9hdHRyX2Rlc3Ryb3ko KSAqLworKworKyNlbmRpZiAvKiBHTE9CVVNfRE9OVF9ET0NVTUVOVF9JTlRFUk5BTCAqLworZGlm ZiAtLWdpdCBhL3hpby9zcmMvYnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHBfY2xpZW50LmMg Yi94aW8vc3JjL2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX2NsaWVudC5jCitpbmRleCA3 NWEwMTgxNzIuLjIyNTA4M2EyMCAxMDA2NDQKKy0tLSBhL3hpby9zcmMvYnVpbHRpbnMvaHR0cC9n bG9idXNfeGlvX2h0dHBfY2xpZW50LmMKKysrKyBiL3hpby9zcmMvYnVpbHRpbnMvaHR0cC9nbG9i dXNfeGlvX2h0dHBfY2xpZW50LmMKK0BAIC0zNiw2ICszNiw4IEBAIGdsb2J1c19yZXN1bHRfdAor IGdsb2J1c19sX3hpb19odHRwX2NsZWFudXBfY2FuY2VsKAorICAgICBnbG9idXNfaV94aW9faHR0 cF9oYW5kbGVfdCAqICAgICAgICBodHRwX2hhbmRsZSk7CisgCisrI2lmbmRlZiBHTE9CVVNfRE9O VF9ET0NVTUVOVF9JTlRFUk5BTAorKworIC8qKgorICAqIENsaWVudC1zaWRlIGNvbm5lY3Rpb24g b3BlbiBjYWxsYmFjaworICAqIEBpbmdyb3VwIGdsb2J1c19pX3hpb19odHRwX2NsaWVudAorQEAg LTU0LDggKzU2LDYgQEAgZ2xvYnVzX2xfeGlvX2h0dHBfY2xlYW51cF9jYW5jZWwoCisgICogICAg IExvd2VyLWxldmVsIHByb3RvY29sIHJlc3VsdCBmcm9tIG9wZW4uCisgICogQHBhcmFtIHVzZXJf YXJnCisgICogICAgIEEgdm9pZCBwb2ludGVyIHBvaW50aW5nIHRvIGEgI2dsb2J1c19pX3hpb19o dHRwX2RyaXZlcl90CistICoKKy0gKiBAcmV0dXJuIHZvaWQKKyAgKi8KKyB2b2lkCisgZ2xvYnVz X2lfeGlvX2h0dHBfY2xpZW50X29wZW5fY2FsbGJhY2soCitAQCAtNDc2LDggKzQ3Niw2IEBAIGVy cm9yX2V4aXQ6CisgICogICAgIE51bWJlciBvZiBieXRlcyBpbiB0aGUgbWVzc2FnZSB0aGF0IHdl cmUgd3JpdHRlbi4KKyAgKiBAcGFyYW0gdXNlcl9hcmcKKyAgKiAgICAgVm9pZCBwb2ludGVyIGNv bnRhaW5pbmcgdGhlICNnbG9idXNfaV94aW9faHR0cF9oYW5kbGVfdC4KKy0gKgorLSAqIEByZXR1 cm4gdm9pZAorICAqLworIHN0YXRpYworIHZvaWQKK0BAIC02NjAsMTAgKzY1OCw3IEBAIGVycm9y X2V4aXQ6CisgICogQHBhcmFtIHVzZXJfYXJnCisgICogICAgIFZvaWQgKiBwb2ludGluZyB0byB0 aGUgI2dsb2J1c19pX3hpb19odHRwX2hhbmRsZV90IGFzc29jaWF0ZWQKKyAgKiAgICAgd2l0aCB0 aGlzIHJlc3BvbnNlLgorLSAqCistICogQHJldHVybiB2b2lkCisgICovCistCisgdm9pZAorIGds b2J1c19sX3hpb19odHRwX2NsaWVudF9yZWFkX3Jlc3BvbnNlX2NhbGxiYWNrKAorICAgICBnbG9i dXNfeGlvX29wZXJhdGlvbl90ICAgICAgICAgICAgICBvcCwKK0BAIC0xMTMzLDMgKzExMjgsNSBA QCBnbG9idXNfbF94aW9faHR0cF9jbGVhbnVwX2NhbmNlbCgKKyAKKyAgICAgcmV0dXJuIHJlc3Vs dDsKKyB9CisrCisrI2VuZGlmIC8qIEdMT0JVU19ET05UX0RPQ1VNRU5UX0lOVEVSTkFMICovCitk aWZmIC0tZ2l0IGEveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0cF9oYW5kbGUu YyBiL3hpby9zcmMvYnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHBfaGFuZGxlLmMKK2luZGV4 IDEwNGNlZTBkYi4uNjI2MWU1YzgyIDEwMDY0NAorLS0tIGEveGlvL3NyYy9idWlsdGlucy9odHRw L2dsb2J1c194aW9faHR0cF9oYW5kbGUuYworKysrIGIveGlvL3NyYy9idWlsdGlucy9odHRwL2ds b2J1c194aW9faHR0cF9oYW5kbGUuYworQEAgLTMxLDYgKzMxLDggQEAgZ2xvYnVzX2xfeGlvX2h0 dHBfd3JpdGVfZW9mX2NhbGxiYWNrKAorICAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAg ICAgICAgICBuYnl0ZXMsCisgICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVzZXJfYXJnKTsKKyAKKysjaWZuZGVmIEdMT0JVU19ET05UX0RPQ1VNRU5UX0lOVEVSTkFMCisr CisgLyoqCisgICogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYW4gSFRUUCBoYW5kbGUKKyAgKiBA aW5ncm91cCBnbG9idXNfaV94aW9faHR0cF9oYW5kbGUKK0BAIC0yMjcsOCArMjI5LDYgQEAgZnJl ZV9tdXRleF9leGl0OgorICAqCisgICogQHBhcmFtIGh0dHBfaGFuZGxlCisgICogICAgIEhhbmRs ZSB0byBiZSBkZXN0cm95ZWQuCistICoKKy0gKiBAcmV0dXJuIHZvaWQKKyAgKi8KKyB2b2lkCisg Z2xvYnVzX2lfeGlvX2h0dHBfaGFuZGxlX2Rlc3Ryb3koCitAQCAtNDM4LDYgKzQzOCw4IEBAIGds b2J1c19pX3hpb19odHRwX2hhbmRsZV9jbnRsKAorIH0KKyAvKiBnbG9idXNfaV94aW9faHR0cF9o YW5kbGVfY250bCgpICovCisgCisrI2VuZGlmIC8qIEdMT0JVU19ET05UX0RPQ1VNRU5UX0lOVEVS TkFMICovCisrCisgLyoqCisgICogQ2FsbGVkIHdpdGggbXV0ZXggbG9ja2VkCisgICovCitAQCAt NDQ2LDcgKzQ0OCw2IEBAIGdsb2J1c19pX3hpb19odHRwX3NldF9lbmRfb2ZfZW50aXR5KAorICAg ICBnbG9idXNfaV94aW9faHR0cF9oYW5kbGVfdCAqICAgICAgICBodHRwX2hhbmRsZSkKKyB7Cisg ICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEdMT0JVU19T VUNDRVNTOworLSAgICBnbG9idXNfaV94aW9faHR0cF9oZWFkZXJfaW5mb190ICogICBoZWFkZXJz OworICAgICBzdGF0aWMgZ2xvYnVzX3hpb19pb3ZlY190ICAgICAgICAgICBlbmRfb2ZfYm9keV9p b3ZlYyA9IHsKKyAgICAgICAgIC5pb3ZfYmFzZSA9ICIwXHJcblxyXG4iLAorICAgICAgICAgLmlv dl9sZW4gPSA1CitAQCAtNDU5LDE0ICs0NjAsNiBAQCBnbG9idXNfaV94aW9faHR0cF9zZXRfZW5k X29mX2VudGl0eSgKKyAKKyAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAgfQorLSAgICBl bHNlIGlmIChodHRwX2hhbmRsZS0+dGFyZ2V0X2luZm8uaXNfY2xpZW50KQorLSAgICB7CistICAg ICAgICBoZWFkZXJzID0gJmh0dHBfaGFuZGxlLT5yZXF1ZXN0X2luZm8uaGVhZGVyczsKKy0gICAg fQorLSAgICBlbHNlCistICAgIHsKKy0gICAgICAgIGhlYWRlcnMgPSAmaHR0cF9oYW5kbGUtPnJl c3BvbnNlX2luZm8uaGVhZGVyczsKKy0gICAgfQorIAorICAgICBpZiAoaHR0cF9oYW5kbGUtPnNl bmRfc3RhdGUgPT0gR0xPQlVTX1hJT19IVFRQX1NUQVRVU19MSU5FKQorICAgICB7CitkaWZmIC0t Z2l0IGEveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0cF9oZWFkZXIuYyBiL3hp by9zcmMvYnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHBfaGVhZGVyLmMKK2luZGV4IGQ0YzY4 N2E2NS4uNWI1M2UyNzI1IDEwMDY0NAorLS0tIGEveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1 c194aW9faHR0cF9oZWFkZXIuYworKysrIGIveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1c194 aW9faHR0cF9oZWFkZXIuYworQEAgLTIzLDYgKzIzLDggQEAKKyAgKi8KKyAjZW5kaWYKKyAKKysj aWZuZGVmIEdMT0JVU19ET05UX0RPQ1VNRU5UX0lOVEVSTkFMCisrCisgLyoqCisgICogRGVzdHJv eSBhbiBIVFRQIEhlYWRlcgorICAqIEBpbmdyb3VwIGdsb2J1c19pX3hpb19odHRwX2hlYWRlcgor QEAgLTMzLDggKzM1LDYgQEAKKyAgKgorICAqIEBwYXJhbSBoZWFkZXIKKyAgKiAgICAgQSA8Y29k ZT52b2lkICo8L2NvZGU+IHBvaW50aW5nIHRvIHRoZSBoZWFkZXIgdG8gYmUgZnJlZWQuCistICoK Ky0gKiBAcmV0dXJuIHZvaWQKKyAgKi8KKyBleHRlcm4KKyB2b2lkCitAQCAtNzYsOCArNzYsNiBA QCBnbG9idXNfaV94aW9faHR0cF9oZWFkZXJfZGVzdHJveSgKKyAgKiBAcGFyYW0gc3JjX2RhdHVt CisgICogICAgIEEgPGNvZGU+dm9pZCAqPC9jb2RlPiBwb2ludGluZyB0byB0aGUgSFRUUCBoZWFk ZXIgc3RydWN0dXJlIGluIHRoZQorICAqICAgICBvcmlnaW5hbCBoYXNodGFibGUgdG8gY29weS4K Ky0gKgorLSAqIEByZXR1cm4gdm9pZAorICAqLworIGV4dGVybgorIHZvaWQKK0BAIC0yOTUsMyAr MjkzLDUgQEAgZXJyb3JfZXhpdDoKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9CisgLyogZ2xvYnVz X2lfeGlvX2h0dHBfaGVhZGVyX3BhcnNlKCkgKi8KKysKKysjZW5kaWYgLyogR0xPQlVTX0RPTlRf RE9DVU1FTlRfSU5URVJOQUwgKi8KK2RpZmYgLS1naXQgYS94aW8vc3JjL2J1aWx0aW5zL2h0dHAv Z2xvYnVzX3hpb19odHRwX2hlYWRlcl9pbmZvLmMgYi94aW8vc3JjL2J1aWx0aW5zL2h0dHAvZ2xv YnVzX3hpb19odHRwX2hlYWRlcl9pbmZvLmMKK2luZGV4IDc1MzY3ODg3Yi4uYWYxMTg5MjYwIDEw MDY0NAorLS0tIGEveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0cF9oZWFkZXJf aW5mby5jCisrKysgYi94aW8vc3JjL2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX2hlYWRl cl9pbmZvLmMKK0BAIC0yMyw2ICsyMyw4IEBACisgICovCisgI2VuZGlmCisgCisrI2lmbmRlZiBH TE9CVVNfRE9OVF9ET0NVTUVOVF9JTlRFUk5BTAorKworIC8qKgorICAqIEluaXRpYWxpemUgYW4g SFRUUCBoZWFkZXIgaW5mbyBzdHJ1Y3R1cmUKKyAgKiBAaW5ncm91cCBnbG9idXNfaV94aW9faHR0 cF9oZWFkZXJfaW5mbworQEAgLTcxLDggKzczLDYgQEAgZ2xvYnVzX2lfeGlvX2h0dHBfaGVhZGVy X2luZm9faW5pdCgKKyAgKgorICAqIEBwYXJhbSBoZWFkZXJfaW5mbworICAqICAgICBIZWFkZXIg aW5mb3JtYXRpb24gc3RydWN0dXJlIHRvIGRlc3Ryb3kuCistICoKKy0gKiBAcmV0dXJuIHZvaWQK KyAgKi8KKyB2b2lkCisgZ2xvYnVzX2lfeGlvX2h0dHBfaGVhZGVyX2luZm9fZGVzdHJveSgKK0BA IC0zMDgsMyArMzA4LDUgQEAgZXJyb3JfZXhpdDoKKyAgICAgcmV0dXJuIHJlc3VsdDsKKyB9Cisg LyogZ2xvYnVzX2xfeGlvX2h0dHBfaGVhZGVyX2luZm9fc2V0X2hlYWRlcigpICovCisrCisrI2Vu ZGlmIC8qIEdMT0JVU19ET05UX0RPQ1VNRU5UX0lOVEVSTkFMICovCitkaWZmIC0tZ2l0IGEveGlv L3NyYy9idWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0cF9yZXF1ZXN0LmMgYi94aW8vc3JjL2J1 aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX3JlcXVlc3QuYworaW5kZXggMDY3ODc1OTQwLi5k NGExZThmMjMgMTAwNjQ0CistLS0gYS94aW8vc3JjL2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19o dHRwX3JlcXVlc3QuYworKysrIGIveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0 cF9yZXF1ZXN0LmMKK0BAIC0yMyw2ICsyMyw4IEBACisgICovCisgI2VuZGlmCisgCisrI2lmbmRl ZiBHTE9CVVNfRE9OVF9ET0NVTUVOVF9JTlRFUk5BTAorKworIC8qKgorICAqIEluaXRpYWxpemUg YW4gSFRUUCByZXF1ZXN0CisgICogQGluZ3JvdXAgZ2xvYnVzX2lfeGlvX2h0dHBfcmVxdWVzdAor QEAgLTU3LDggKzU5LDYgQEAgZ2xvYnVzX2lfeGlvX2h0dHBfcmVxdWVzdF9pbml0KAorICAqCisg ICogQHBhcmFtIHJlcXVlc3QKKyAgKiAgICAgUmVxdWVzdCBzdHJ1Y3R1cmUgdG8gZGVzdHJveS4K Ky0gKgorLSAqIEByZXR1cm4gdm9pZAorICAqLworIHZvaWQKKyBnbG9idXNfaV94aW9faHR0cF9y ZXF1ZXN0X2Rlc3Ryb3koCitAQCAtMTY4LDMgKzE2OCw1IEBAIGVycm9yX2V4aXQ6CisgICAgIHJl dHVybiByZXM7CisgfQorIC8qIGdsb2J1c19pX3hpb19odHRwX3JlcXVlc3RfY29weSgpICovCisr CisrI2VuZGlmIC8qIEdMT0JVU19ET05UX0RPQ1VNRU5UX0lOVEVSTkFMICovCitkaWZmIC0tZ2l0 IGEveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0cF9yZXNwb25zZS5jIGIveGlv L3NyYy9idWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0cF9yZXNwb25zZS5jCitpbmRleCBlYzQ3 NzQ3N2EuLjA5NTFhZTE2YSAxMDA2NDQKKy0tLSBhL3hpby9zcmMvYnVpbHRpbnMvaHR0cC9nbG9i dXNfeGlvX2h0dHBfcmVzcG9uc2UuYworKysrIGIveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1 c194aW9faHR0cF9yZXNwb25zZS5jCitAQCAtMjMsNiArMjMsOCBAQAorICAqLworICNlbmRpZgor IAorKyNpZm5kZWYgR0xPQlVTX0RPTlRfRE9DVU1FTlRfSU5URVJOQUwKKysKKyAvKioKKyAgKiBJ bml0aWFsaXplIGFuIEhUVFAgcmVzcG9uc2UKKyAgKiBAaW5ncm91cCBnbG9idXNfaV94aW9faHR0 cF9yZXNwb25zZQorQEAgLTY1LDggKzY3LDYgQEAgZ2xvYnVzX2lfeGlvX2h0dHBfcmVzcG9uc2Vf aW5pdCgKKyAgKgorICAqIEBwYXJhbSByZXNwb25zZQorICAqICAgICBSZXNwb25zZSBzdHJ1Y3R1 cmUgdG8gZGVzdHJveS4KKy0gKgorLSAqIEByZXR1cm4gdm9pZAorICAqLworIHZvaWQKKyBnbG9i dXNfaV94aW9faHR0cF9yZXNwb25zZV9kZXN0cm95KAorQEAgLTE1MywzICsxNTMsNSBAQCBlcnJv cl9leGl0OgorICAgICByZXR1cm4gcmVzOworIH0KKyAvKiBnbG9idXNfaV94aW9faHR0cF9yZXNw b25zZV9jb3B5KCkgKi8KKysKKysjZW5kaWYgLyogR0xPQlVTX0RPTlRfRE9DVU1FTlRfSU5URVJO QUwgKi8KK2RpZmYgLS1naXQgYS94aW8vc3JjL2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRw X3NlcnZlci5jIGIveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0cF9zZXJ2ZXIu YworaW5kZXggNWQzYWQwYWI3Li40MWRiOWY4NzcgMTAwNjQ0CistLS0gYS94aW8vc3JjL2J1aWx0 aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX3NlcnZlci5jCisrKysgYi94aW8vc3JjL2J1aWx0aW5z L2h0dHAvZ2xvYnVzX3hpb19odHRwX3NlcnZlci5jCitAQCAtNDQsNiArNDQsOCBAQCBnbG9idXNf bF94aW9faHR0cF9zZXJ2ZXJfd3JpdGVfcmVzcG9uc2VfY2FsbGJhY2soCisgICAgIGdsb2J1c19z aXplX3QgICAgICAgICAgICAgICAgICAgICAgIG5ieXRlcywKKyAgICAgdm9pZCAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdXNlcl9hcmcpOworIAorKyNpZm5kZWYgR0xPQlVTX0RPTlRf RE9DVU1FTlRfSU5URVJOQUwKKysKKyAvKioKKyAgKiBBY2NlcHQgYW4gSFRUUCByZXF1ZXN0Cisg ICogQGluZ3JvdXAgZ2xvYnVzX2lfeGlvX2h0dHBfc2VydmVyCitAQCAtODcsOCArODksNiBAQCBn bG9idXNfaV94aW9faHR0cF9hY2NlcHQoCisgICogQHBhcmFtIHVzZXJfYXJnCisgICogICAgIE5v dCB1c2VkLgorICAqCistICogQHJldHVybiB2b2lkCistICoKKyAgKiBAdG9kbyBXaGVuIGltcGxl bWVudGVkIGluIHRoZSBYSU8gZHJpdmVyIGZyYW1ld29yaywgcGFyc2UgdGhlIHJlcXVlc3QKKyAg KiBoZWFkZXIgYmVmb3JlIHJldHVybmluZyBmcm9tIHRoaXMsIHNvIHRoZSB0YXJnZXQgaXMgcG9w dWxhdGVkIHdpdGgKKyAgKiBtZWFuaW5nZnVsIGluZm9ybWF0aW9uIGZvciB0aGUgdXNlci4gVGhp cyB3aWxsIGhlbHAgZW5hYmxlIHBlcnNpc3RlbnQKK0BAIC0xMzQsOCArMTM0LDYgQEAgZ2xvYnVz X2xfeGlvX2h0dHBfYWNjZXB0X2NhbGxiYWNrKAorICAqIEBwYXJhbSB1c2VyX2FyZworICAqICAg ICBWb2lkICogcG9pbnRpbmcgdG8gYSAjZ2xvYnVzX2lfeGlvX2h0dHBfaGFuZGxlX3QgYXNzb2Np YXRlZCB3aXRoCisgICogICAgIHRoaXMgb3Blbi4KKy0gKgorLSAqIEByZXR1cm4gdm9pZAorICAq LworIHZvaWQKKyBnbG9idXNfaV94aW9faHR0cF9zZXJ2ZXJfb3Blbl9jYWxsYmFjaygKK0BAIC00 OTgsOCArNDk2LDYgQEAgZXJyb3JfZXhpdDoKKyAgKiBmaW5pc2hlZC4gSWYgdGhlIHJlc3BvbnNl IHdhcyB0cmlnZ2VyZWQgYnkgdGhlCisgICogR0xPQlVTX1hJT19IVFRQX0hBTkRMRV9TRVRfRU5E X09GX0VOVElUWSBjb250cm9sLCB0aGVuIHRoZSBvcGVyYXRpb24KKyAgKiBpcyBzaW1wbHkgZGVz dHJveWVkLgorLSAqCistICogQHJldHVybiB2b2lkCisgICovCisgc3RhdGljCisgdm9pZAorQEAg LTc0MCw2ICs3MzYsOCBAQCBlcnJvcl9leGl0X2luaXQ6CisgfQorIC8qIGdsb2J1c19sX3hpb19o dHRwX3NlcnZlcl9wYXJzZV9yZXF1ZXN0KCkgKi8KKyAKKysjZW5kaWYgLyogR0xPQlVTX0RPTlRf RE9DVU1FTlRfSU5URVJOQUwgKi8KKysKKyB2b2lkCisgZ2xvYnVzX2lfeGlvX2h0dHBfc2VydmVy X3JlYWRfcmVxdWVzdF9jYWxsYmFjaygKKyAgICAgZ2xvYnVzX3hpb19vcGVyYXRpb25fdCAgICAg ICAgICAgICAgb3AsCitkaWZmIC0tZ2l0IGEveGlvL3NyYy9idWlsdGlucy9odHRwL2dsb2J1c194 aW9faHR0cF90YXJnZXQuYyBiL3hpby9zcmMvYnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHBf dGFyZ2V0LmMKK2luZGV4IDZlOGQyMmYzNC4uYzg3NDg2ZWZkIDEwMDY0NAorLS0tIGEveGlvL3Ny Yy9idWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0cF90YXJnZXQuYworKysrIGIveGlvL3NyYy9i dWlsdGlucy9odHRwL2dsb2J1c194aW9faHR0cF90YXJnZXQuYworQEAgLTIzLDYgKzIzLDggQEAK KyAgKi8KKyAjZW5kaWYKKyAKKysjaWZuZGVmIEdMT0JVU19ET05UX0RPQ1VNRU5UX0lOVEVSTkFM CisrCisgLyoqCisgICogQWxsb2NhdGUgYSBuZXcgdGFyZ2V0CisgICogQGluZ3JvdXAgZ2xvYnVz X2lfeGlvX2h0dHBfdGFyZ2V0CitAQCAtMjE5LDYgKzIyMSw4IEBAIGdsb2J1c19pX3hpb19odHRw X3RhcmdldF9kZXN0cm95KAorIH0KKyAvKiBnbG9idXNfaV94aW9faHR0cF90YXJnZXRfZGVzdHJv eSgpICovCisgCisrI2VuZGlmIC8qIEdMT0JVU19ET05UX0RPQ1VNRU5UX0lOVEVSTkFMICovCisr CisgZXh0ZXJuCisgdm9pZAorIGdsb2J1c19pX3hpb19odHRwX3RhcmdldF9kZXN0cm95X2ludGVy bmFsKAorZGlmZiAtLWdpdCBhL3hpby9zcmMvYnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHBf dHJhbnNmb3JtLmMgYi94aW8vc3JjL2J1aWx0aW5zL2h0dHAvZ2xvYnVzX3hpb19odHRwX3RyYW5z Zm9ybS5jCitpbmRleCA2YTQ1NTZkMjMuLmNjMTE2MmU3NyAxMDA2NDQKKy0tLSBhL3hpby9zcmMv YnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHBfdHJhbnNmb3JtLmMKKysrKyBiL3hpby9zcmMv YnVpbHRpbnMvaHR0cC9nbG9idXNfeGlvX2h0dHBfdHJhbnNmb3JtLmMKK0BAIC05NCw2ICs5NCw4 IEBAIHZvaWQKKyBnbG9idXNfbF94aW9faHR0cF9yZWFkX3RpbWVvdXRfY2FsbGJhY2soCisgICAg IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfYXJnKTsKKyAKKysjaWZu ZGVmIEdMT0JVU19ET05UX0RPQ1VNRU5UX0lOVEVSTkFMCisrCisgLyoqCisgICogT3BlbiBhbiBI VFRQIFVSSQorICAqIEBpbmdyb3VwIGdsb2J1c19pX3hpb19odHRwX3RyYW5zZm9ybQorQEAgLTY0 NSw4ICs2NDcsNiBAQCBlcnJvcl9leGl0OgorICAqIEBwYXJhbSByZWdpc3RlcmVkX2FnYWluCisg ICogICAgIFNldCB0byBHTE9CVVNfVFJVRSBieSB0aGlzIGZ1bmN0aW9uIGlmIHRoZSByZWFkIG9w ZXJhdGlvbiB3YXMgcGFzc2VkCisgICogICAgIGRvd24gYWdhaW4gYXMgYSByZXN1bHQgb2YgYSBw YXJ0aWFsIHJlYWQgb2YgZGF0YS4KKy0gKgorLSAqIEByZXR1cm4gdm9pZAorICAqLworIGdsb2J1 c19yZXN1bHRfdAorIGdsb2J1c19pX3hpb19odHRwX3BhcnNlX3Jlc2lkdWUoCitAQCAtOTY5LDgg Kzk2OSw2IEBAIGdsb2J1c19sX3hpb19odHRwX2NvcHlfcmVzaWR1ZSgKKyAgKiAgICAgTnVtYmVy IG9mIGJ5dGVzIHJlYWQgYnkgdGhlIHRyYW5zcG9ydC4KKyAgKiBAcGFyYW0gdXNlcl9hcmcKKyAg KiAgICAgVm9pZCBwb2ludGVyIHBvaW50aW5nIHRvIGFuIEhUVFAgaGFuZGxlLgorLSAqCistICog QHJldHVybiB2b2lkCisgICovCisgc3RhdGljCisgdm9pZAorQEAgLTEwNTcsOCArMTA1NSw2IEBA IGdsb2J1c19sX3hpb19odHRwX3JlYWRfY2FsbGJhY2soCisgICogICAgIE51bWJlciBvZiBieXRl cyByZWFkIGJ5IHRoZSB0cmFuc3BvcnQuCisgICogQHBhcmFtIHVzZXJfYXJnCisgICogICAgIFZv aWQgcG9pbnRlciBwb2ludGluZyB0byBhbiBIVFRQIGhhbmRsZS4KKy0gKgorLSAqIEByZXR1cm4g dm9pZAorICAqLworIHN0YXRpYworIHZvaWQKK0BAIC0xMzkzLDE4ICsxMzg5LDggQEAgZ2xvYnVz X2lfeGlvX2h0dHBfd3JpdGUoCisgeworICAgICBnbG9idXNfaV94aW9faHR0cF9oYW5kbGVfdCAq ICAgICAgICAgICAgaHR0cF9oYW5kbGUgPSBoYW5kbGU7CisgICAgIGdsb2J1c19yZXN1bHRfdCAg ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBHTE9CVVNfU1VDQ0VTUzsKKy0gICAgZ2xv YnVzX2lfeGlvX2h0dHBfaGVhZGVyX2luZm9fdCAqICAgICAgIGhlYWRlcnM7CisgICAgIEdsb2J1 c1hJT05hbWUoZ2xvYnVzX2lfeGlvX2h0dHBfd3JpdGUpOworIAorLSAgICBpZiAoaHR0cF9oYW5k bGUtPnRhcmdldF9pbmZvLmlzX2NsaWVudCkKKy0gICAgeworLSAgICAgICAgaGVhZGVycyA9ICZo dHRwX2hhbmRsZS0+cmVxdWVzdF9pbmZvLmhlYWRlcnM7CistICAgIH0KKy0gICAgZWxzZQorLSAg ICB7CistICAgICAgICBoZWFkZXJzID0gJmh0dHBfaGFuZGxlLT5yZXNwb25zZV9pbmZvLmhlYWRl cnM7CistICAgIH0KKy0KKyAgICAgZ2xvYnVzX211dGV4X2xvY2soJmh0dHBfaGFuZGxlLT5tdXRl eCk7CisgCisgICAgIGlmIChodHRwX2hhbmRsZS0+cGVuZGluZ19lcnJvcikKK0BAIC0xNjI0LDgg KzE2MTAsNiBAQCBlcnJvcl9leGl0OgorICAqICAgICBOdW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBi eSB0aGUgdHJhbnNwb3J0LgorICAqIEBwYXJhbSB1c2VyX2FyZworICAqICAgICBWb2lkIHBvaW50 ZXIgdG8gYSBnbG9idXNfaV94aW9faHR0cF9oYW5kbGVfdC4KKy0gKgorLSAqIEByZXR1cm4gdm9p ZAorICAqLworIHZvaWQKKyBnbG9idXNfaV94aW9faHR0cF93cml0ZV9jYWxsYmFjaygKK0BAIC0x ODUxLDE5ICsxODM1LDkgQEAgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2lfeGlvX2h0dHBfY2xv c2VfaW50ZXJuYWwoCisgICAgIGdsb2J1c19pX3hpb19odHRwX2hhbmRsZV90ICogICAgICAgIGh0 dHBfaGFuZGxlKQorIHsKKy0gICAgZ2xvYnVzX2lfeGlvX2h0dHBfaGVhZGVyX2luZm9fdCAqICAg aGVhZGVyczsKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0 OworICAgICBnbG9idXNfcmVsdGltZV90ICAgICAgICAgICAgICAgICAgICBkZWxheTsKKyAKKy0g ICAgaWYgKGh0dHBfaGFuZGxlLT50YXJnZXRfaW5mby5pc19jbGllbnQpCistICAgIHsKKy0gICAg ICAgIGhlYWRlcnMgPSAmaHR0cF9oYW5kbGUtPnJlcXVlc3RfaW5mby5oZWFkZXJzOworLSAgICB9 CistICAgIGVsc2UKKy0gICAgeworLSAgICAgICAgaGVhZGVycyA9ICZodHRwX2hhbmRsZS0+cmVz cG9uc2VfaW5mby5oZWFkZXJzOworLSAgICB9CistCisgICAgIGh0dHBfaGFuZGxlLT5zZW5kX3N0 YXRlID0gR0xPQlVTX1hJT19IVFRQX0NMT1NFOworIAorICAgICBpZiAoaHR0cF9oYW5kbGUtPnRh cmdldF9pbmZvLmlzX2NsaWVudCAmJgorQEAgLTE5MDAsNiArMTg3NCw4IEBAIGZpbmlzaDoKKyB9 CisgLyogZ2xvYnVzX2lfeGlvX2h0dHBfY2xvc2VfaW50ZXJuYWwoKSAqLworIAorKyNlbmRpZiAv KiBHTE9CVVNfRE9OVF9ET0NVTUVOVF9JTlRFUk5BTCAqLworKworIHZvaWQKKyBnbG9idXNfaV94 aW9faHR0cF9jbG9zZV9jYWxsYmFjaygKKyAgICAgZ2xvYnVzX3hpb19vcGVyYXRpb25fdCAgICAg ICAgICAgICAgb3AsCitkaWZmIC0tZ2l0IGEveGlvL3NyYy9idWlsdGlucy9tb2RlX2UvZ2xvYnVz X3hpb19tb2RlX2VfZHJpdmVyLmMgYi94aW8vc3JjL2J1aWx0aW5zL21vZGVfZS9nbG9idXNfeGlv X21vZGVfZV9kcml2ZXIuYworaW5kZXggNjU5NTJhMDM2Li5hOGNlNTk5NGYgMTAwNjQ0CistLS0g YS94aW8vc3JjL2J1aWx0aW5zL21vZGVfZS9nbG9idXNfeGlvX21vZGVfZV9kcml2ZXIuYworKysr IGIveGlvL3NyYy9idWlsdGlucy9tb2RlX2UvZ2xvYnVzX3hpb19tb2RlX2VfZHJpdmVyLmMKK0BA IC0xNzQwLDggKzE3NDAsOCBAQCBnbG9idXNfbF94aW9fbW9kZV9lX29wZW5fbmV3X3N0cmVhbSgK KyB7CisgICAgIGdsb2J1c194aW9faGFuZGxlX3QgICAgICAgICAgICAgICAgIHhpb19oYW5kbGU7 CisgICAgIGdsb2J1c19sX3hpb19tb2RlX2VfYXR0cl90ICogICAgICAgIGF0dHI7CistICAgIGds b2J1c19pX3hpb19tb2RlX2VfcmVxdWVzdG9yX3QgKiAgIHJlcXVlc3RvcjsKKy0gICAgZ2xvYnVz X3hpb19vcGVyYXRpb25fdCAgICAgICAgICAgICAgb3A7CisrICAgIGdsb2J1c19pX3hpb19tb2Rl X2VfcmVxdWVzdG9yX3QgKiAgIHJlcXVlc3RvciA9IEdMT0JVU19OVUxMOworKyAgICBnbG9idXNf eGlvX29wZXJhdGlvbl90ICAgICAgICAgICAgICBvcCA9IEdMT0JVU19YSU9fT1BFUkFUSU9OX1RZ UEVfTk9ORTsKKyAgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0 OworICAgICBHbG9idXNYSU9OYW1lKGdsb2J1c19sX3hpb19tb2RlX2Vfb3Blbl9uZXdfc3RyZWFt KTsKKyAKK2RpZmYgLS1naXQgYS94aW8vc3JjL2dsb2J1c194aW9fZHJpdmVyLmMgYi94aW8vc3Jj L2dsb2J1c194aW9fZHJpdmVyLmMKK2luZGV4IDE4NTAzMzk0ZS4uMzUwNDc5MmRlIDEwMDY0NAor LS0tIGEveGlvL3NyYy9nbG9idXNfeGlvX2RyaXZlci5jCisrKysgYi94aW8vc3JjL2dsb2J1c194 aW9fZHJpdmVyLmMKK0BAIC0yMzQ3LDcgKzIzNDcsNyBAQCBnbG9idXNfeGlvX29wZXJhdGlvbl9n ZXRfdXNlcl9kcml2ZXIoCisgCisgLyoqCisgICogQGJyaWVmIEdldCB0aGUgWElPIHRyYW5zcG9y dCBkcml2ZXIgYXNzb2NpYXRlZCB3aXRoIGFuIG9wCistICogQGluZ3JvdXAgZ2xvYnVzX3hpb19k cml2ZXJfcHJvZ3JhbW1pbmcKKysgKiBAaW5ncm91cCBzdHJpbmdfZ2xvYnVzX3hpb19kcml2ZXJf cHJvZ3JhbW1pbmcKKyAgKi8KKyBnbG9idXNfeGlvX2RyaXZlcl90CisgZ2xvYnVzX3hpb19vcGVy YXRpb25fZ2V0X3RyYW5zcG9ydF91c2VyX2RyaXZlcigKK2RpZmYgLS1naXQgYS94aW8vc3JjL2ds b2J1c194aW9fc3lzdGVtX3NlbGVjdC5jIGIveGlvL3NyYy9nbG9idXNfeGlvX3N5c3RlbV9zZWxl Y3QuYworaW5kZXggYjJjZDU2NDc1Li5mNTA1OTUzNWYgMTAwNjQ0CistLS0gYS94aW8vc3JjL2ds b2J1c194aW9fc3lzdGVtX3NlbGVjdC5jCisrKysgYi94aW8vc3JjL2dsb2J1c194aW9fc3lzdGVt X3NlbGVjdC5jCitAQCAtOTg1LDE0ICs5ODUsMTMgQEAgZ2xvYnVzX2xfeGlvX3N5c3RlbV9oYW5k bGVfcmVhZCgKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg IHsKKy0gICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgcmM7CisgICAgICAg ICAgICAgICAgIGdsb2J1c19sX3hpb19zeXN0ZW1fdCAgIHRtcF9oYW5kbGU7CisgCisgICAgICAg ICAgICAgICAgICpyZWFkX2luZm8tPnNvcC5ub25fZGF0YS5vdXRfZmQgPSBuZXdfZmQ7CisgICAg ICAgICAgICAgICAgIHRtcF9oYW5kbGUuZmQgPSBuZXdfZmQ7CisgICAgICAgICAgICAgICAgIHRt cF9oYW5kbGUudHlwZSA9IEdMT0JVU19YSU9fU1lTVEVNX1RDUDsKKyAKKy0gICAgICAgICAgICAg ICAgcmMgPSBnbG9idXNfbF94aW9fc3lzdGVtX3JlbW92ZV9ub25ibG9ja2luZygmdG1wX2hhbmRs ZSk7CisrICAgICAgICAgICAgICAgIGdsb2J1c19sX3hpb19zeXN0ZW1fcmVtb3ZlX25vbmJsb2Nr aW5nKCZ0bXBfaGFuZGxlKTsKKyAKKyAgICAgICAgICAgICAgICAgcmVhZF9pbmZvLT5uYnl0ZXMr KzsKKyAgICAgICAgICAgICAgICAgR2xvYnVzWElPU3lzdGVtRGVidWdQcmludGYoCitAQCAtMTg3 MCw3ICsxODY5LDYgQEAgZ2xvYnVzX2xfeGlvX3N5c3RlbV9yZWFkKAorICAgICBnbG9idXNfc2l6 ZV90ICogICAgICAgICAgICAgICAgICAgICB1X25ieXRlcykKKyB7CisgICAgIGdsb2J1c19yZXN1 bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsKKy0gICAgaW50ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmM7CisgICAgIEdsb2J1c1hJT05hbWUoZ2xvYnVzX2xfeGlvX3N5 c3RlbV9yZWFkKTsKKyAKKyAgICAgR2xvYnVzWElPU3lzdGVtRGVidWdFbnRlcigpOworQEAgLTE4 OTEsNyArMTg4OSw3IEBAIGdsb2J1c19sX3hpb19zeXN0ZW1fcmVhZCgKKyAgICAgICAgICAqIHdv cnN0IGNhc2UsIHdlIHJlYWQgMCBieXRlcyBpbiB0aGUgbG9vcCBiZWxvdywgcmV0dXJuLCBhbmQg eGlvCisgICAgICAgICAgKiBjYWxscyB1cyBhZ2FpbiB0byBmaW5pc2ggdXAuCisgICAgICAgICAg Ki8KKy0gICAgICAgIHJjID0gZ2xvYnVzX2xfeGlvX3N5c3RlbV9yZW1vdmVfbm9uYmxvY2tpbmco aGFuZGxlKTsKKysgICAgICAgIGdsb2J1c19sX3hpb19zeXN0ZW1fcmVtb3ZlX25vbmJsb2NraW5n KGhhbmRsZSk7CisgICAgICAgICBHbG9idXNJWElPU3lzdGVtQWxsb2NJb3ZlYyh1X2lvdmMsIGlv dik7CisgICAgICAgICBpZighaW92KQorICAgICAgICAgeworQEAgLTE5MjEsMTQgKzE5MTksMTQg QEAgZ2xvYnVzX2xfeGlvX3N5c3RlbV9yZWFkKAorICAgICAgICAgKnVfbmJ5dGVzID0gdG90YWw7 CisgCisgICAgICAgICBHbG9idXNJWElPU3lzdGVtRnJlZUlvdmVjKHVfaW92YywgKGdsb2J1c194 aW9faW92ZWNfdCAqKSB1X2lvdik7CistICAgICAgICByYyA9IGdsb2J1c19sX3hpb19zeXN0ZW1f YWRkX25vbmJsb2NraW5nKGhhbmRsZSk7CisrICAgICAgICBnbG9idXNfbF94aW9fc3lzdGVtX2Fk ZF9ub25ibG9ja2luZyhoYW5kbGUpOworICAgICB9CisgCisgICAgIEdsb2J1c1hJT1N5c3RlbURl YnVnRXhpdCgpOworICAgICByZXR1cm4gcmVzdWx0OworIAorIGVycm9yX2lvdmVjOgorLSAgICBy YyA9IGdsb2J1c19sX3hpb19zeXN0ZW1fYWRkX25vbmJsb2NraW5nKGhhbmRsZSk7CisrICAgIGds b2J1c19sX3hpb19zeXN0ZW1fYWRkX25vbmJsb2NraW5nKGhhbmRsZSk7CisgICAgIEdsb2J1c1hJ T1N5c3RlbURlYnVnRXhpdFdpdGhFcnJvcigpOworICAgICByZXR1cm4gcmVzdWx0OworIH0KK0BA IC0yMDIwLDcgKzIwMTgsNiBAQCBnbG9idXNfbF94aW9fc3lzdGVtX3dyaXRlKAorICAgICBnbG9i dXNfc2l6ZV90ICogICAgICAgICAgICAgICAgICAgICB1X25ieXRlcykKKyB7CisgICAgIGdsb2J1 c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsKKy0gICAgaW50ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmM7CisgICAgIEdsb2J1c1hJT05hbWUoZ2xvYnVzX2xf eGlvX3N5c3RlbV93cml0ZSk7CisgCisgICAgIEdsb2J1c1hJT1N5c3RlbURlYnVnRW50ZXIoKTsK K0BAIC0yMDM5LDcgKzIwMzYsNyBAQCBnbG9idXNfbF94aW9fc3lzdGVtX3dyaXRlKAorICAgICAg ICAgICogWFhYIHRoaXMgaXMgbm90IHRocmVhZCBzYWZlLi4uIGJvdGggcmVhZHMgYW5kIHdyaXRl cyBhcmUgbXVja2luZworICAgICAgICAgICogd2l0aCBibG9ja2luZyBzdGF0dXMKKyAgICAgICAg ICAqLworLSAgICAgICAgcmMgPSBnbG9idXNfbF94aW9fc3lzdGVtX3JlbW92ZV9ub25ibG9ja2lu ZyhoYW5kbGUpOworKyAgICAgICAgZ2xvYnVzX2xfeGlvX3N5c3RlbV9yZW1vdmVfbm9uYmxvY2tp bmcoaGFuZGxlKTsKKyAgICAgICAgIEdsb2J1c0lYSU9TeXN0ZW1BbGxvY0lvdmVjKHVfaW92Yywg aW92KTsKKyAgICAgICAgIGlmKCFpb3YpCisgICAgICAgICB7CitAQCAtMjA2MywxNCArMjA2MCwx NCBAQCBnbG9idXNfbF94aW9fc3lzdGVtX3dyaXRlKAorICAgICAgICAgKnVfbmJ5dGVzID0gdG90 YWw7CisgCisgICAgICAgICBHbG9idXNJWElPU3lzdGVtRnJlZUlvdmVjKHVfaW92YywgKGdsb2J1 c194aW9faW92ZWNfdCAqKSB1X2lvdik7CistICAgICAgICByYyA9IGdsb2J1c19sX3hpb19zeXN0 ZW1fYWRkX25vbmJsb2NraW5nKGhhbmRsZSk7CisrICAgICAgICBnbG9idXNfbF94aW9fc3lzdGVt X2FkZF9ub25ibG9ja2luZyhoYW5kbGUpOworICAgICB9CisgCisgICAgIEdsb2J1c1hJT1N5c3Rl bURlYnVnRXhpdCgpOworICAgICByZXR1cm4gcmVzdWx0OworIAorIGVycm9yX2lvdmVjOgorLSAg ICByYyA9IGdsb2J1c19sX3hpb19zeXN0ZW1fYWRkX25vbmJsb2NraW5nKGhhbmRsZSk7CisrICAg IGdsb2J1c19sX3hpb19zeXN0ZW1fYWRkX25vbmJsb2NraW5nKGhhbmRsZSk7CisgICAgIEdsb2J1 c1hJT1N5c3RlbURlYnVnRXhpdFdpdGhFcnJvcigpOworICAgICByZXR1cm4gcmVzdWx0OworIH0K K2RpZmYgLS1naXQgYS94aW8vc3JjL3Rlc3QvZHJpdmVycy9nbG9idXNfeGlvX3NtdHAuYyBiL3hp by9zcmMvdGVzdC9kcml2ZXJzL2dsb2J1c194aW9fc210cC5jCitpbmRleCA4NDAwM2Y5M2QuLjcy ODUxYzg1OCAxMDA2NDQKKy0tLSBhL3hpby9zcmMvdGVzdC9kcml2ZXJzL2dsb2J1c194aW9fc210 cC5jCisrKysgYi94aW8vc3JjL3Rlc3QvZHJpdmVycy9nbG9idXNfeGlvX3NtdHAuYworQEAgLTI3 NCw3ICsyNzQsNiBAQCBnbG9idXNfbF94aW9fc210cF93cml0ZV9oZWFkZXJfY2IoCisgICAgIGds b2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgIG5ieXRlcywKKyAgICAgdm9pZCAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9hcmcpCisgeworLSAgICBnbG9idXNfcmVz dWx0X3QgICAgICAgICAgICAgICAgICAgICByZXM7CisgICAgIGxfc210cF9pbmZvX3QgKiAgICAg ICAgICAgICAgICAgICAgIGluZm87CisgCisgICAgIGluZm8gPSAobF9zbXRwX2luZm9fdCAqKSB1 c2VyX2FyZzsKK0BAIC0yOTEsNyArMjkwLDcgQEAgZ2xvYnVzX2xfeGlvX3NtdHBfd3JpdGVfaGVh ZGVyX2NiKAorICAgICAgKi8KKyAgICAgZWxzZQorICAgICB7CistICAgICAgICByZXMgPSBnbG9i dXNfeGlvX2RyaXZlcl9wYXNzX3JlYWQob3AsICZpbmZvLT5pb3ZlYywgMSwKKysgICAgICAgIGds b2J1c194aW9fZHJpdmVyX3Bhc3NfcmVhZChvcCwgJmluZm8tPmlvdmVjLCAxLAorICAgICAgICAg ICAgIDEsIGdsb2J1c19sX3hpb19zbXRwX3JlYWRfaGVhZGVyX2NiLCAodm9pZCAqKSAgaW5mbyk7 CisgICAgIH0KKyB9CitAQCAtMzYzLDkgKzM2Miw3IEBAIGdsb2J1c19sX3hpb19zbXRwX3dyaXRl X2Nsb3NlX2NiKAorICAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICBuYnl0 ZXMsCisgICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfYXJnKQor IHsKKy0gICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgcmVzOworLQorLSAg ICByZXMgPSBnbG9idXNfeGlvX2RyaXZlcl9wYXNzX2Nsb3NlKAorKyAgICBnbG9idXNfeGlvX2Ry aXZlcl9wYXNzX2Nsb3NlKAorICAgICAgICAgICAgIG9wLCBnbG9idXNfbF94aW9fc210cF9jbG9z ZV9jYiwgdXNlcl9hcmcpOworIH0KKyAKK2RpZmYgLS1naXQgYS94aW8vc3JjL3Rlc3QvZ2xvYnVz X3V0cF9tYWluLmMgYi94aW8vc3JjL3Rlc3QvZ2xvYnVzX3V0cF9tYWluLmMKK2luZGV4IDE4NGIz OTVhNy4uNDNmNTlkNDY3IDEwMDY0NAorLS0tIGEveGlvL3NyYy90ZXN0L2dsb2J1c191dHBfbWFp bi5jCisrKysgYi94aW8vc3JjL3Rlc3QvZ2xvYnVzX3V0cF9tYWluLmMKK0BAIC01NTAsMTYgKzU1 MCwxOCBAQCB2b2lkCisgZ2xvYnVzX3V0cF9yZWFkVGltZShnbG9idXNfdXRwX1RpbWVWYWx1ZV90 ICp0dikKKyB7CisgI2lmZGVmIFVOSVgKKysjaWZkZWYgREVCVUcKKyAgICAgICAgIGludCBmbGFn OworIAorICAgICAgICAgZmxhZyA9IGdldHRpbWVvZmRheSh0diwgTlVMTCk7CisgCistI2lmZGVm IERFQlVHCisgICAgICAgICBpZiAoZmxhZykgeworICAgICAgICAgICAgICAgICBnbG9idXNfdXRw X3dhcm4oImdsb2J1c191dHBfcmVhZFRpbWU6IGdldHRpbWVvZmRheSgpIGZhaWxlZCIpOworICAg ICAgICAgICAgICAgICBnbG9idXNfdXRwX3dhcm4oImdsb2J1c191dHBfcmVhZFRpbWU6IHN5c3Rl bSBlcnJvciBtZXNzYWdlIGlzIFwiJXNcIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN5 c19lcnJsaXN0W2Vycm5vXSk7CisgICAgICAgICB9CisrI2Vsc2UKKysgICAgICAgIGdldHRpbWVv ZmRheSh0diwgTlVMTCk7CisgI2VuZGlmIC8qICNpZmRlZiBERUJVRyAqLworICNlbmRpZiAvKiAj aWZkZWYgVU5JWCAqLworIAorQEAgLTU3NywxNiArNTc5LDE4IEBAIG9uIHAuIDU5IG9mIHRoZSAi T3B0aW1pemluZyBhbmQgVHVuaW5nIEd1aWRlIGZvciBGT1JUUkFOLCBDLCBhbmQgQysrIiwgYW5k Cisgc2VlbXMgdG8gd29yayBqdXN0IGZpbmUuCisgKi8KKyAKKysjaWZkZWYgREVCVUcKKyAgICAg ICAgIGludCBmbGFnOworIAorICAgICAgICAgZmxhZyA9IGdldHRpbWVyKFRJTUVPRkRBWSwgdHYp OworIAorLSNpZmRlZiBERUJVRworICAgICAgICAgaWYgKGZsYWcpIHsKKyAgICAgICAgICAgICAg ICAgZ2xvYnVzX3V0cF93YXJuKCJnbG9idXNfdXRwX3JlYWRUaW1lOiBnZXR0aW1lcigpIGZhaWxl ZCIpOworICAgICAgICAgICAgICAgICBnbG9idXNfdXRwX3dhcm4oImdsb2J1c191dHBfcmVhZFRp bWU6IHN5c3RlbSBlcnJvciBtZXNzYWdlIGlzIFwiJXNcIiIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgIHN5c19lcnJsaXN0W2Vycm5vXSk7CisgICAgICAgICB9CisrI2Vsc2UKKysgICAgICAg IGdldHRpbWVyKFRJTUVPRkRBWSwgdHYpOworICNlbmRpZiAvKiAjaWZkZWYgREVCVUcgKi8KKyAK KyAjZW5kaWYgLyogI2lmZGVmIFJTNjAwMCAqLworZGlmZiAtLWdpdCBhL3hpby9zcmMvdGVzdC9o dHRwX3RpbWVvdXRfdGVzdC5jIGIveGlvL3NyYy90ZXN0L2h0dHBfdGltZW91dF90ZXN0LmMKK2lu ZGV4IGExYTRlZDYzNS4uZDUzMzVhN2IwIDEwMDY0NAorLS0tIGEveGlvL3NyYy90ZXN0L2h0dHBf dGltZW91dF90ZXN0LmMKKysrKyBiL3hpby9zcmMvdGVzdC9odHRwX3RpbWVvdXRfdGVzdC5jCitA QCAtMTA4LDcgKzEwOCw2IEBAIG1haW4oCisgeworICAgICBpbnQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByYzsKKyAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udGFjdCA9IE5VTEw7CistICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAg ICAgIHJlc3VsdDsKKyAgICAgZ2xvYnVzX2xfdGltZW91dF9pbmZvX3QgICAgICAgICAgICAgY2xp ZW50X3RpbWVvdXRfaW5mbzsKKyAgICAgZ2xvYnVzX2xfdGltZW91dF9pbmZvX3QgICAgICAgICAg ICAgc2VydmVyX3RpbWVvdXRfaW5mbzsKKyAgICAgZ2xvYnVzX3JlbHRpbWVfdCAgICAgICAgICAg ICAgICAgICAgdGltZW91dDsKK0BAIC0zMTQsMTIgKzMxMywxMiBAQCBtYWluKAorICAgICBzZXJ2 ZXJfdGltZW91dF9pbmZvLmhhbmRsZSA9IE5VTEw7CisgICAgIHNlcnZlcl90aW1lb3V0X2luZm8u cmVzdWx0ID0gR0xPQlVTX1NVQ0NFU1M7CisgICAgIHNlcnZlcl90aW1lb3V0X2luZm8uY29udGFj dCA9IE5VTEw7CistICAgIHJlc3VsdCA9IGdsb2J1c194aW9fc2VydmVyX2NyZWF0ZSgKKysgICAg Z2xvYnVzX3hpb19zZXJ2ZXJfY3JlYXRlKAorICAgICAgICAgICAgICZzZXJ2ZXJfdGltZW91dF9p bmZvLnNlcnZlciwKKyAgICAgICAgICAgICBzZXJ2ZXJfdGltZW91dF9pbmZvLmF0dHIsCisgICAg ICAgICAgICAgZ2xvYnVzX2xfaHR0cF9zdGFjayk7CisgCistICAgIHJlc3VsdCA9IGdsb2J1c194 aW9fc2VydmVyX2dldF9jb250YWN0X3N0cmluZygKKysgICAgZ2xvYnVzX3hpb19zZXJ2ZXJfZ2V0 X2NvbnRhY3Rfc3RyaW5nKAorICAgICAgICAgICAgIHNlcnZlcl90aW1lb3V0X2luZm8uc2VydmVy LAorICAgICAgICAgICAgICZjb250YWN0KTsKKyAKK0BAIC0zMzMsMTkgKzMzMiwxOSBAQCBtYWlu KAorICAgICBjbGllbnRfdGltZW91dF9pbmZvLnJlc3VsdCA9IEdMT0JVU19TVUNDRVNTOworICAg ICBjbGllbnRfdGltZW91dF9pbmZvLnNlcnZlciA9IE5VTEw7CisgCistICAgIHJlc3VsdCA9IGds b2J1c194aW9faGFuZGxlX2NyZWF0ZSgKKysgICAgZ2xvYnVzX3hpb19oYW5kbGVfY3JlYXRlKAor ICAgICAgICAgICAgICZjbGllbnRfdGltZW91dF9pbmZvLmhhbmRsZSwKKyAgICAgICAgICAgICBn bG9idXNfbF9odHRwX3N0YWNrKTsKKyAKKyAgICAgLyogb25lc2hvdCB0byBzdGFydCBzZXJ2ZXIg c3RhdGUgbWFjaGluZSAqLworLSAgICByZXN1bHQgPSBnbG9idXNfY2FsbGJhY2tfcmVnaXN0ZXJf b25lc2hvdCgKKysgICAgZ2xvYnVzX2NhbGxiYWNrX3JlZ2lzdGVyX29uZXNob3QoCisgICAgICAg ICAgICAgTlVMTCwKKyAgICAgICAgICAgICAmZ2xvYnVzX2lfcmVsdGltZV96ZXJvLAorICAgICAg ICAgICAgIHN0YXRlX21hY2hpbmUsCisgICAgICAgICAgICAgJnNlcnZlcl90aW1lb3V0X2luZm8p OworIAorICAgICAvKiBvbmVzaG90IHRvIHN0YXJ0IGNsaWVudCBzdGF0ZSBtYWNoaW5lICovCist ICAgIHJlc3VsdCA9IGdsb2J1c19jYWxsYmFja19yZWdpc3Rlcl9vbmVzaG90KAorKyAgICBnbG9i dXNfY2FsbGJhY2tfcmVnaXN0ZXJfb25lc2hvdCgKKyAgICAgICAgICAgICBOVUxMLAorICAgICAg ICAgICAgICZnbG9idXNfaV9yZWx0aW1lX3plcm8sCisgICAgICAgICAgICAgc3RhdGVfbWFjaGlu ZSwKK0BAIC01MzQsNyArNTMzLDYgQEAgc3RhdGVfbWFjaGluZSgKKyAgICAgdm9pZCAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9hcmcpCisgeworICAgICBnbG9idXNfcmVsdGlt ZV90ICAgICAgICAgICAgICAgICAgICBkZWxheTsKKy0gICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAg ICAgICAgICAgICAgICAgcmVzdWx0OworICAgICBnbG9idXNfbF90aW1lb3V0X2luZm9fdCAqICAg ICAgICAgICBpbmZvID0gdXNlcl9hcmc7CisgCisgICAgIC8qIElmIHRoZSB0aW1lb3V0IGlzIHRv IGJlIGNhdXNlZCBieSB0aGlzIHNpZGUgb2YgdGhlIHRyYW5zZmVyLCB0aGVuIGNoZWNrCitAQCAt NTY4LDE0ICs1NjYsMTQgQEAgc3RhdGVfbWFjaGluZSgKKyAgICAgeworICAgICAgICAgY2FzZSBH TE9CVVNfWElPX09QRVJBVElPTl9UWVBFX0FDQ0VQVDoKKyAgICAgICAgICAgICBnbG9idXNfYXNz ZXJ0KGluZm8tPnNlcnZlcik7CistICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19zZXJ2 ZXJfcmVnaXN0ZXJfYWNjZXB0KAorKyAgICAgICAgICAgIGdsb2J1c194aW9fc2VydmVyX3JlZ2lz dGVyX2FjY2VwdCgKKyAgICAgICAgICAgICAgICAgICAgIGluZm8tPnNlcnZlciwKKyAgICAgICAg ICAgICAgICAgICAgIGFjY2VwdF9jYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgIGluZm8p OworICAgICAgICAgICAgIGJyZWFrOworIAorICAgICAgICAgY2FzZSBHTE9CVVNfWElPX09QRVJB VElPTl9UWVBFX09QRU46CistICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19yZWdpc3Rl cl9vcGVuKAorKyAgICAgICAgICAgIGdsb2J1c194aW9fcmVnaXN0ZXJfb3BlbigKKyAgICAgICAg ICAgICAgICAgICAgIGluZm8tPmhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgIGluZm8tPmNv bnRhY3QsCisgICAgICAgICAgICAgICAgICAgICBpbmZvLT5hdHRyLAorQEAgLTU4NCw3ICs1ODIs NyBAQCBzdGF0ZV9tYWNoaW5lKAorICAgICAgICAgICAgIGJyZWFrOworIAorICAgICAgICAgY2Fz ZSBHTE9CVVNfWElPX09QRVJBVElPTl9UWVBFX1JFQUQ6CistICAgICAgICAgICAgcmVzdWx0ID0g Z2xvYnVzX3hpb19yZWdpc3Rlcl9yZWFkKAorKyAgICAgICAgICAgIGdsb2J1c194aW9fcmVnaXN0 ZXJfcmVhZCgKKyAgICAgICAgICAgICAgICAgICAgIGluZm8tPmhhbmRsZSwKKyAgICAgICAgICAg ICAgICAgICAgIGluZm8tPmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpbmZv LT5idWZmZXIpLAorQEAgLTU5Nyw3ICs1OTUsNyBAQCBzdGF0ZV9tYWNoaW5lKAorICAgICAgICAg Y2FzZSBHTE9CVVNfWElPX09QRVJBVElPTl9UWVBFX1dSSVRFOgorICAgICAgICAgICAgIHN0cmNw eSgoY2hhciAqKSBpbmZvLT5idWZmZXIsICJva1xuIik7CisgCistICAgICAgICAgICAgcmVzdWx0 ID0gZ2xvYnVzX3hpb19yZWdpc3Rlcl93cml0ZSgKKysgICAgICAgICAgICBnbG9idXNfeGlvX3Jl Z2lzdGVyX3dyaXRlKAorICAgICAgICAgICAgICAgICAgICAgaW5mby0+aGFuZGxlLAorICAgICAg ICAgICAgICAgICAgICAgaW5mby0+YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgc3RybGVu KChjaGFyICopIGluZm8tPmJ1ZmZlciksCitAQCAtNjA4LDcgKzYwNiw3IEBAIHN0YXRlX21hY2hp bmUoCisgICAgICAgICAgICAgYnJlYWs7CisgCisgICAgICAgICBjYXNlIEdMT0JVU19YSU9fT1BF UkFUSU9OX1RZUEVfQ0xPU0U6CistICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX3hpb19yZWdp c3Rlcl9jbG9zZSgKKysgICAgICAgICAgICBnbG9idXNfeGlvX3JlZ2lzdGVyX2Nsb3NlKAorICAg ICAgICAgICAgICAgICAgICAgaW5mby0+aGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgTlVM TCwKKyAgICAgICAgICAgICAgICAgICAgIG9wZW5fY2xvc2VfY2FsbGJhY2ssCistLSAKKzIuNTQu MAorCgpkaWZmIC0tZ2l0IGEvZ2xvYnVzLXhpby5zcGVjIGIvZ2xvYnVzLXhpby5zcGVjCmluZGV4 IGE3NWMwY2IuLmI2NGM1MDcgMTAwNjQ0Ci0tLSBhL2dsb2J1cy14aW8uc3BlYworKysgYi9nbG9i dXMteGlvLnNwZWMKQEAgLTEsMTMgKzEsMTUgQEAKIE5hbWU6CQlnbG9idXMteGlvCiAlZ2xvYmFs IF9uYW1lICUodHIgLSBfIDw8PCAle25hbWV9KQogVmVyc2lvbjoJNi42Ci1SZWxlYXNlOgkxMCV7 P2Rpc3R9CitSZWxlYXNlOgkxMSV7P2Rpc3R9CiBTdW1tYXJ5OglHcmlkIENvbW11bml0eSBUb29s a2l0IC0gR2xvYnVzIFhJTyBGcmFtZXdvcmsKIAogTGljZW5zZToJQXBhY2hlLTIuMAogVVJMOgkJ aHR0cHM6Ly9naXRodWIuY29tL2dyaWRjZi9nY3QvCiBTb3VyY2U6CQlodHRwczovL3JlcG8uZ3Jp ZGNmLm9yZy9nY3Q2L3NvdXJjZXMvJXtfbmFtZX0tJXt2ZXJzaW9ufS50YXIuZ3oKIFNvdXJjZTg6 CVJFQURNRQorUGF0Y2gwOgkJMDAwMS1VbnRhYmlmeS1hbmQtcmVtb3ZlLXRyYWlsaW5nLXdoaXRl LXNwYWNlLnBhdGNoCitQYXRjaDE6CQkwMDAyLUZpeC1jb21waWxlci1hbmQtZG94eWdlbi13YXJu aW5ncy5wYXRjaAogCiBCdWlsZFJlcXVpcmVzOgltYWtlCiBCdWlsZFJlcXVpcmVzOglnY2MKQEAg LTYzLDYgKzY1LDggQEAgR2xvYnVzIFhJTyBGcmFtZXdvcmsgRG9jdW1lbnRhdGlvbiBGaWxlcwog CiAlcHJlcAogJXNldHVwIC1xIC1uICV7X25hbWV9LSV7dmVyc2lvbn0KKyVwYXRjaCAtUDAgLXAz CislcGF0Y2ggLVAxIC1wMwogCiAlYnVpbGQKICMgUmVkdWNlIG92ZXJsaW5raW5nCkBAIC0xMTQs NiArMTE4LDkgQEAgR0xPQlVTX0hPU1ROQU1FPWxvY2FsaG9zdCAlbWFrZV9idWlsZCBjaGVjawog JWxpY2Vuc2UgR0xPQlVTX0xJQ0VOU0UKIAogJWNoYW5nZWxvZworKiBTdW4gSnVuIDE0IDIwMjYg TWF0dGlhcyBFbGxlcnQgPG1hdHRpYXMuZWxsZXJ0QHBoeXNpY3MudXUuc2U+IC0gNi42LTExCist IEZpeCBjb21waWxlciBhbmQgZG94eWdlbiB3YXJuaW5ncworCiAqIEZyaSBKYW4gMTYgMjAyNiBG ZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDYu Ni0xMAogLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3Jh XzQ0X01hc3NfUmVidWlsZAogCg==