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/myproxy] rawhide: Compile with OpenSSL 4 Date: Sun, 14 Jun 2026 10:27:28 GMT Message-ID: <178143284879.1.15746985763139466748.rpms-myproxy-d166cea057e3@fedoraproject.org> List-ID: X-Git-Repo: rpms/myproxy X-Git-Branch: rawhide X-Git-Rev: d166cea057e373cceda9f0b294cf145dfacbf33c ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvbXlwcm94eQogICAgICAgICAgICBCcmFuY2ggOiByYXdoaWRlCiAgICAgICAg ICAgIENvbW1pdCA6IGQxNjZjZWEwNTdlMzczY2NlZGE5ZjBiMjk0Y2YxNDVkZmFjYmYzM2MKICAg ICAgICAgICAgQXV0aG9yIDogTWF0dGlhcyBFbGxlcnQgPG1hdHRpYXMuZWxsZXJ0QHBoeXNpY3Mu dXUuc2U+CiAgICAgICAgICAgIERhdGUgICA6IDIwMjYtMDYtMTRUMTI6Mjc6MDArMDI6MDAKICAg ICAgICAgICAgU3RhdHMgIDogKzYxODgvLTIgaW4gNCBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAg ICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvbXlwcm94eS9jL2QxNjZjZWEw NTdlMzczY2NlZGE5ZjBiMjk0Y2YxNDVkZmFjYmYzM2M/YnJhbmNoPXJhd2hpZGUKCiAgICAgICAg ICAgIExvZzoKICAgICAgICAgICAgQ29tcGlsZSB3aXRoIE9wZW5TU0wgNApGaXggY29tcGlsZXIg d2FybmluZ3MKCi0tLQpkaWZmIC0tZ2l0IGEvMDAwMS1VbnRhYmlmeS1hbmQtcmVtb3ZlLXRyYWls aW5nLXdoaXRlLXNwYWNlLnBhdGNoIGIvMDAwMS1VbnRhYmlmeS1hbmQtcmVtb3ZlLXRyYWlsaW5n LXdoaXRlLXNwYWNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1 OTM3OGMKLS0tIC9kZXYvbnVsbAorKysgYi8wMDAxLVVudGFiaWZ5LWFuZC1yZW1vdmUtdHJhaWxp bmctd2hpdGUtc3BhY2UucGF0Y2gKQEAgLTAsMCArMSw1Njc3IEBACitGcm9tIDNjY2RhYTAyMzYy MzBiYmNiY2JmMzM5ZTdkZmRmYWYyM2MxMGJkNmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBNYXR0aWFzIEVsbGVydCA8bWF0dGlhcy5lbGxlcnRAcGh5c2ljcy51dS5zZT4KK0RhdGU6 IFdlZCwgMjAgTWF5IDIwMjYgMDA6MTU6MzcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIFVu dGFiaWZ5IGFuZCByZW1vdmUgdHJhaWxpbmcgd2hpdGUtc3BhY2UKKworLS0tCisgbXlwcm94eS9z b3VyY2UvY2VydGF1dGhfZXh0ZW5zaW9ucy5jICAgIHwgIDM4MCArKy0tCisgbXlwcm94eS9zb3Vy Y2UvZ3NzYXBpLmMgICAgICAgICAgICAgICAgIHwgMjI4MCArKysrKysrKysrKy0tLS0tLS0tLS0t LQorIG15cHJveHkvc291cmNlL215cHJveHkuYyAgICAgICAgICAgICAgICB8ICAgMjQgKy0KKyBt eXByb3h5L3NvdXJjZS9teXByb3h5X2FsY2YuYyAgICAgICAgICAgfCAgNTE0ICsrLS0tCisgbXlw cm94eS9zb3VyY2UvbXlwcm94eV9nZXRfY3JlZGVudGlhbC5jIHwgIDI2NCArLS0KKyBteXByb3h5 L3NvdXJjZS9teXByb3h5X29jc3AuYyAgICAgICAgICAgfCAgIDEyICstCisgbXlwcm94eS9zb3Vy Y2UvbXlwcm94eV9vY3NwX2FpYS5jICAgICAgIHwgIDEwNiArLQorIG15cHJveHkvc291cmNlL215 cHJveHlfc3RvcmUuYyAgICAgICAgICB8ICA0NTggKystLS0KKyBteXByb3h5L3NvdXJjZS92b21z Y2xpZW50LmMgICAgICAgICAgICAgfCAgIDQ2ICstCisgOSBmaWxlcyBjaGFuZ2VkLCAyMDQyIGlu c2VydGlvbnMoKyksIDIwNDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9teXByb3h5L3Nv dXJjZS9jZXJ0YXV0aF9leHRlbnNpb25zLmMgYi9teXByb3h5L3NvdXJjZS9jZXJ0YXV0aF9leHRl bnNpb25zLmMKK2luZGV4IDE0YWYzM2U1NC4uNGViZjgzYjljIDEwMDY0NAorLS0tIGEvbXlwcm94 eS9zb3VyY2UvY2VydGF1dGhfZXh0ZW5zaW9ucy5jCisrKysgYi9teXByb3h5L3NvdXJjZS9jZXJ0 YXV0aF9leHRlbnNpb25zLmMKK0BAIC00MywxMCArNDMsMTAgQEAgUlNBX2dldDBfa2V5KGNvbnN0 IFJTQSAqciwgY29uc3QgQklHTlVNICoqbiwgY29uc3QgQklHTlVNICoqZSwgY29uc3QgQklHTlVN ICoqZCkKKyAKKyAjZW5kaWYKKyAKKy1zdGF0aWMgaW50IAorK3N0YXRpYyBpbnQKKyByZWFkX2Nl cnRfcmVxdWVzdChHU0lfU09DS0VUICpzZWxmLAorLQkJICB1bnNpZ25lZCBjaGFyICoqYnVmZmVy LAorLQkJICBzaXplX3QgKmxlbmd0aCkgeworKyAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNo YXIgKipidWZmZXIsCisrICAgICAgICAgICAgICAgICAgc2l6ZV90ICpsZW5ndGgpIHsKKyAKKyAg IGludCAgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSAxOworICAgdW5zaWduZWQgY2hhciAqIGlu cHV0X2J1ZmZlciA9IE5VTEw7CitAQCAtNTgsNyArNTgsNyBAQCByZWFkX2NlcnRfcmVxdWVzdChH U0lfU09DS0VUICpzZWxmLAorICAgfQorIAorICAgaWYgKEdTSV9TT0NLRVRfcmVhZF90b2tlbihz ZWxmLCAmaW5wdXRfYnVmZmVyLAorLQkJCSAgICAmaW5wdXRfYnVmZmVyX2xlbmd0aCkgPT0gR1NJ X1NPQ0tFVF9FUlJPUikgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5wdXRfYnVm ZmVyX2xlbmd0aCkgPT0gR1NJX1NPQ0tFVF9FUlJPUikgeworICAgICB2ZXJyb3JfcHV0X3N0cmlu ZygicmVhZF9jZXJ0X3JlcXVlc3QoKTogUmVhZCBmcm9tIHNvY2tldCBmYWlsZWQiKTsKKyAgICAg Z290byBlcnJvcjsKKyAgIH0KK0BAIC04MSwxMyArODEsMTMgQEAgcmVhZF9jZXJ0X3JlcXVlc3Qo R1NJX1NPQ0tFVCAqc2VsZiwKKyAKKyB9CisgCistc3RhdGljIGludCAKKytzdGF0aWMgaW50Cisg c2VuZF9jZXJ0aWZpY2F0ZShHU0lfU09DS0VUICpzZWxmLAorLQkJIHVuc2lnbmVkIGNoYXIgKmJ1 ZmZlciwKKy0JCSBzaXplX3QgbGVuZ3RoKSB7CisrICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj aGFyICpidWZmZXIsCisrICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoKSB7CisgCistICBp ZiAoR1NJX1NPQ0tFVF93cml0ZV9idWZmZXIoc2VsZiwgKGNvbnN0IGNoYXIgKilidWZmZXIsIAor LQkJCSAgICAgIGxlbmd0aCkgPT0gR1NJX1NPQ0tFVF9FUlJPUikgeworKyAgaWYgKEdTSV9TT0NL RVRfd3JpdGVfYnVmZmVyKHNlbGYsIChjb25zdCBjaGFyICopYnVmZmVyLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxlbmd0aCkgPT0gR1NJX1NPQ0tFVF9FUlJPUikgeworICAgICB2 ZXJyb3JfcHV0X3N0cmluZygiRXJyb3Igd3JpdGluZyBjZXJ0aWZpY2F0ZSB0byBjbGllbnQhIik7 CisgICAgIHJldHVybiAxOworICAgfQorQEAgLTk2LDcgKzk2LDcgQEAgc2VuZF9jZXJ0aWZpY2F0 ZShHU0lfU09DS0VUICpzZWxmLAorIAorIH0KKyAKKy1zdGF0aWMgdm9pZCAKKytzdGF0aWMgdm9p ZAorIGFkZF9rZXlfdmFsdWUoIGNoYXIgKiBrZXksIGNoYXIgKiB2YWx1ZSwgY2hhciBidWZmZXJb XSApIHsKKyAKKyAgIHN0cmNhdCggYnVmZmVyLCBrZXkgKTsKK0BAIC0xMTAsMTEgKzExMCwxMSBA QCBhZGRfa2V5X3ZhbHVlKCBjaGFyICoga2V5LCBjaGFyICogdmFsdWUsIGNoYXIgYnVmZmVyW10g KSB7CisgfQorIAorIAorLXN0YXRpYyBpbnQgCistZXh0ZXJuYWxfY2FsbG91dCggWDUwOV9SRVEg ICAgICAgICAgICAgICAgICpyZXF1ZXN0LCAKKy0JCSAgWDUwOSAgICAgICAgICAgICAgICAgICAg ICoqY2VydCwKKy0JCSAgbXlwcm94eV9yZXF1ZXN0X3QgICAgICAgICpjbGllbnRfcmVxdWVzdCwK Ky0JCSAgbXlwcm94eV9zZXJ2ZXJfY29udGV4dF90ICpzZXJ2ZXJfY29udGV4dCkgeworK3N0YXRp YyBpbnQKKytleHRlcm5hbF9jYWxsb3V0KCBYNTA5X1JFUSAgICAgICAgICAgICAgICAgKnJlcXVl c3QsCisrICAgICAgICAgICAgICAgICAgWDUwOSAgICAgICAgICAgICAgICAgICAgICoqY2VydCwK KysgICAgICAgICAgICAgICAgICBteXByb3h5X3JlcXVlc3RfdCAgICAgICAgKmNsaWVudF9yZXF1 ZXN0LAorKyAgICAgICAgICAgICAgICAgIG15cHJveHlfc2VydmVyX2NvbnRleHRfdCAqc2VydmVy X2NvbnRleHQpIHsKKyAKKyAgIGludCByZXR1cm5fdmFsdWUgPSAxOworIAorQEAgLTEzMSwxMiAr MTMxLDEyIEBAIGV4dGVybmFsX2NhbGxvdXQoIFg1MDlfUkVRICAgICAgICAgICAgICAgICAqcmVx dWVzdCwKKyAgIG1lbXNldChidWZmZXIsICdcMCcsIEJVRl9TSVpFKTsKKyAgIG1lbXNldChpbnRi dWYsICdcMCcsIDEyOCk7CisgCistICBteXByb3h5X2RlYnVnKCJjYWxsb3V0IHVzaW5nOiAlcyIs IAorLQkJc2VydmVyX2NvbnRleHQtPmNlcnRpZmljYXRlX2lzc3Vlcl9wcm9ncmFtKTsKKysgIG15 cHJveHlfZGVidWcoImNhbGxvdXQgdXNpbmc6ICVzIiwKKysgICAgICAgICAgICAgICAgc2VydmVy X2NvbnRleHQtPmNlcnRpZmljYXRlX2lzc3Vlcl9wcm9ncmFtKTsKKyAKKyAgIGlmICgocGlkID0g bXlwcm94eV9wb3BlbihmZHMsCistCQkJICAgc2VydmVyX2NvbnRleHQtPmNlcnRpZmljYXRlX2lz c3Vlcl9wcm9ncmFtLAorLQkJCSAgIE5VTEwpKSA8IDApIHsKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZXJ2ZXJfY29udGV4dC0+Y2VydGlmaWNhdGVfaXNzdWVyX3Byb2dyYW0sCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkpIDwgMCkgeworICAgICByZXR1cm4gLTE7IC8q IG15cHJveHlfcG9wZW4gd2lsbCBzZXQgdmVycm9yICovCisgICB9CisgCitAQCAtMTYyLDcgKzE2 Miw3IEBAIGV4dGVybmFsX2NhbGxvdXQoIFg1MDlfUkVRICAgICAgICAgICAgICAgICAqcmVxdWVz dCwKKyAgIGFkZF9rZXlfdmFsdWUoICJhdXRoemNyZWRzIiwgY2xpZW50X3JlcXVlc3QtPmF1dGh6 Y3JlZHMsIGJ1ZmZlciApOworICAgYWRkX2tleV92YWx1ZSggImtleXJldHJpZXZlIiwgY2xpZW50 X3JlcXVlc3QtPmtleXJldHJpZXZlLCBidWZmZXIgKTsKKyAgIGFkZF9rZXlfdmFsdWUoICJ0cnVz dGVkX3JldHJpZXZlcnMiLCBjbGllbnRfcmVxdWVzdC0+dHJ1c3RlZF9yZXRyaWV2ZXJzLAorLQkJ IGJ1ZmZlciApOworKyAgICAgICAgICAgICAgICAgYnVmZmVyICk7CisgCisgICBzcHJpbnRmKCBp bnRidWYsICIlZCIsIHNlcnZlcl9jb250ZXh0LT5tYXhfY2VydF9saWZldGltZSApOworICAgYWRk X2tleV92YWx1ZSggIm1heF9jZXJ0X2xpZmV0aW1lIiwgKGNoYXIqKWludGJ1ZiwgYnVmZmVyICk7 CitAQCAtMjUzLDEwICsyNTMsMTAgQEAgbG9ja19maWxlKGludCBmZCkKKyAKKyAgICAgd2hpbGUo IGZjbnRsKCBmZCwgRl9TRVRMS1csICZmbCApIDwgMCApCisgICAgIHsKKy0JaWYgKCBlcnJubyAh PSBFSU5UUiApCistCXsKKy0JICAgIHJldHVybiAtMTsKKy0JfQorKyAgICAgICAgaWYgKCBlcnJu byAhPSBFSU5UUiApCisrICAgICAgICB7CisrICAgICAgICAgICAgcmV0dXJuIC0xOworKyAgICAg ICAgfQorICAgICB9CisgICAgIHJldHVybiAwOworIH0KK0BAIC0yNjYsOSArMjY2LDkgQEAgbG9j a19maWxlKGludCBmZCkKKyAgKiBvZiBmaWxlIGxvY2tpbmcKKyAgKi8KKyAKKy1zdGF0aWMgaW50 IAorLWFzc2lnbl9zZXJpYWxfbnVtYmVyKCBYNTA5ICpjZXJ0LCAKKy0JCSAgICAgIG15cHJveHlf c2VydmVyX2NvbnRleHRfdCAqc2VydmVyX2NvbnRleHQgKSB7Cisrc3RhdGljIGludAorK2Fzc2ln bl9zZXJpYWxfbnVtYmVyKCBYNTA5ICpjZXJ0LAorKyAgICAgICAgICAgICAgICAgICAgICBteXBy b3h5X3NlcnZlcl9jb250ZXh0X3QgKnNlcnZlcl9jb250ZXh0ICkgeworIAorICAgaW50IHJldHZh bCA9IDE7CisgICBsb25nIHNlcmlhbHNldDsKK0BAIC0zMDEsNyArMzAxLDcgQEAgYXNzaWduX3Nl cmlhbF9udW1iZXIoIFg1MDkgKmNlcnQsCisgICAgICAgY29uc3QgY2hhciAqc2RpcjsKKyAgICAg ICBzZGlyID0gbXlwcm94eV9nZXRfc3RvcmFnZV9kaXIoKTsKKyAgICAgICBpZiAoc2RpciA9PSBO VUxMKSB7CistCSAgZ290byBlcnJvcjsKKysgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICB9 CisgICAgICAgc2VyaWFsZmlsZSA9IG1hbGxvYyhzdHJsZW4oc2Rpcikrc3RybGVuKCIvc2VyaWFs IikrMSk7CisgICAgICAgc3ByaW50ZihzZXJpYWxmaWxlLCAiJXMvc2VyaWFsIiwgc2Rpcik7CitA QCAtMzUxLDExICszNTEsMTEgQEAgYXNzaWduX3NlcmlhbF9udW1iZXIoIFg1MDkgKmNlcnQsCisg CisgICBpZiAoc2VyaWFsc2V0KSB7CisgICAgICAgaWYgKCFhMmlfQVNOMV9JTlRFR0VSKHNlcmlh bGJpbywgY3VycmVudCwgYnVmLCBzaXplb2YoYnVmKSkpIHsKKy0JICB2ZXJyb3JfcHV0X3N0cmlu ZygiQXNuMSBpbnQgcmVhZC9jb252ZXJzaW9uIGVycm9yXG4iKTsKKysgICAgICAgICAgdmVycm9y X3B1dF9zdHJpbmcoIkFzbjEgaW50IHJlYWQvY29udmVyc2lvbiBlcnJvclxuIik7CisgICAgICAg c3NsX2Vycm9yX3RvX3ZlcnJvcigpOworLQkgIGdvdG8gZXJyb3I7CisrICAgICAgICAgIGdvdG8g ZXJyb3I7CisgICAgICAgfSBlbHNlIHsKKy0JICBteXByb3h5X2RlYnVnKCJMb2FkZWQgc2VyaWFs IG51bWJlciAweCVzIGZyb20gJXMiLCBidWYsIHNlcmlhbGZpbGUpOworKyAgICAgICAgICBteXBy b3h5X2RlYnVnKCJMb2FkZWQgc2VyaWFsIG51bWJlciAweCVzIGZyb20gJXMiLCBidWYsIHNlcmlh bGZpbGUpOworICAgICAgIH0KKyAgIH0gZWxzZSB7CisgICAgICAgQVNOMV9JTlRFR0VSX3NldChj dXJyZW50LCBzZXJ2ZXJfY29udGV4dC0+Y2VydGlmaWNhdGVfc2VyaWFsX3NraXApOworQEAgLTM5 Myw3ICszOTMsNyBAQCBhc3NpZ25fc2VyaWFsX251bWJlciggWDUwOSAqY2VydCwKKyAgICAqIHRo ZSB1bmRlcmx5aW5nIGZpbGUgc3RyZWFtIGFuZCBjbG9zZSgpaW5nIHRoZSBmaWxlIGRlc2NyaXB0 b3IsCisgICAgKiB3aGljaCB3aWxsIHJlbGVhc2UgdGhlIGxvY2suCisgICAgKi8KKy0gIAorKwor ICAgQklPX2ZyZWUoc2VyaWFsYmlvKTsKKyAgIHNlcmlhbGJpbyAgICA9IE5VTEw7CisgICBzZXJp YWxzdHJlYW0gPSBOVUxMOworQEAgLTQ0Nyw3ICs0NDcsNyBAQCB3cml0ZV9jZXJ0aWZpY2F0ZShY NTA5ICpjZXJ0LCBjb25zdCBjaGFyIHNlcmlhbFtdLCBjb25zdCBjaGFyIGRpcltdKSB7CisgICAg ICAgICBnb3RvIGVycm9yOworICAgICB9CisgICAgIGNsb3NlKGZkKTsKKy0JaWYgKChicD1CSU9f bmV3KEJJT19zX2ZpbGUoKSkpID09IE5VTEwpIHsKKysgICAgICAgIGlmICgoYnA9QklPX25ldyhC SU9fc19maWxlKCkpKSA9PSBOVUxMKSB7CisgICAgICAgICBteXByb3h5X2RlYnVnKCJCSU9fbmV3 KEJJT19zX2ZpbGUoKSkgZmFpbGVkIik7CisgICAgICAgICBnb3RvIGVycm9yOworICAgICB9CitA QCAtNDYzLDcgKzQ2Myw3IEBAIHdyaXRlX2NlcnRpZmljYXRlKFg1MDkgKmNlcnQsIGNvbnN0IGNo YXIgc2VyaWFsW10sIGNvbnN0IGNoYXIgZGlyW10pIHsKKyAKKyAgZXJyb3I6CisgICAgIGZyZWUo cGF0aCk7CistCUJJT19mcmVlX2FsbChicCk7CisrICAgICAgICBCSU9fZnJlZV9hbGwoYnApOwor IAorICAgICByZXR1cm4gcnZhbDsKKyB9CitAQCAtNDc0LDE0ICs0NzQsMTQgQEAgc3RhdGljIEVO R0lORSAgICAqZW5naW5lPU5VTEw7Cisgc3RhdGljIGludCAgICAgICAgZW5naW5lX3VzZWQ9MDsK KyAjZW5kaWYKKyAKKy1zdGF0aWMgaW50IAorLWdlbmVyYXRlX2NlcnRpZmljYXRlKCBYNTA5X1JF USAgICAgICAgICAgICAgICAgKnJlcXVlc3QsIAorLQkJICAgICAgWDUwOSAgICAgICAgICAgICAg ICAgICAgICoqY2VydGlmaWNhdGUsCistCQkgICAgICBFVlBfUEtFWSAgICAgICAgICAgICAgICAg KnBrZXksCistCQkgICAgICBteXByb3h5X3JlcXVlc3RfdCAgICAgICAgKmNsaWVudF9yZXF1ZXN0 LAorLQkJICAgICAgbXlwcm94eV9zZXJ2ZXJfY29udGV4dF90ICpzZXJ2ZXJfY29udGV4dCkgeyAK KytzdGF0aWMgaW50CisrZ2VuZXJhdGVfY2VydGlmaWNhdGUoIFg1MDlfUkVRICAgICAgICAgICAg ICAgICAqcmVxdWVzdCwKKysgICAgICAgICAgICAgICAgICAgICAgWDUwOSAgICAgICAgICAgICAg ICAgICAgICoqY2VydGlmaWNhdGUsCisrICAgICAgICAgICAgICAgICAgICAgIEVWUF9QS0VZICAg ICAgICAgICAgICAgICAqcGtleSwKKysgICAgICAgICAgICAgICAgICAgICAgbXlwcm94eV9yZXF1 ZXN0X3QgICAgICAgICpjbGllbnRfcmVxdWVzdCwKKysgICAgICAgICAgICAgICAgICAgICAgbXlw cm94eV9zZXJ2ZXJfY29udGV4dF90ICpzZXJ2ZXJfY29udGV4dCkgeworIAorLSAgaW50ICAgICAg ICAgICAgIHJldHVybl92YWx1ZSA9IDE7ICAKKysgIGludCAgICAgICAgICAgICByZXR1cm5fdmFs dWUgPSAxOworICAgaW50ICAgICAgICAgICAgIG5vdF9hZnRlcjsKKyAgIGludCAgICAgICAgICAg ICBsb2NrZmQgPSAtMTsKKyAgIGludCAgICAgICAgICAgICBpOworQEAgLTUwMyw3ICs1MDMsNyBA QCBnZW5lcmF0ZV9jZXJ0aWZpY2F0ZSggWDUwOV9SRVEgICAgICAgICAgICAgICAgICpyZXF1ZXN0 LAorIAorICAgY2VydCA9IFg1MDlfbmV3KCk7CisgCistICBjdHhwID0gJmN0eDsJCS8qIG5lZWRl ZCBmb3IgWDUwOVYzIG1hY3JvcyAqLworKyAgY3R4cCA9ICZjdHg7ICAgICAgICAgIC8qIG5lZWRl ZCBmb3IgWDUwOVYzIG1hY3JvcyAqLworICAgWDUwOVYzX3NldF9jdHhfbm9kYihjdHhwKTsKKyAK KyAgIGlmIChjZXJ0ID09IE5VTEwpIHsKK0BAIC01MTcsNyArNTE3LDcgQEAgZ2VuZXJhdGVfY2Vy dGlmaWNhdGUoIFg1MDlfUkVRICAgICAgICAgICAgICAgICAqcmVxdWVzdCwKKyAgIC8qIHRoaXMg aGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgc3VjY2Vzc2Z1bGx5LCBidXQuLi4gKi8KKyAKKyAgIGlm ICggdXNlcl9kbl9sb29rdXAoIGNsaWVudF9yZXF1ZXN0LT51c2VybmFtZSwgJnVzZXJkbiwKKy0J CSAgICAgICBzZXJ2ZXJfY29udGV4dCApICkgeworKyAgICAgICAgICAgICAgICAgICAgICAgc2Vy dmVyX2NvbnRleHQgKSApIHsKKyAgICAgdmVycm9yX3B1dF9zdHJpbmcoInVua25vd24gdXNlcm5h bWU6ICVzIiwgY2xpZW50X3JlcXVlc3QtPnVzZXJuYW1lKTsKKyAgICAgZ290byBlcnJvcjsKKyAg IH0KK0BAIC01NjEsMTYgKzU2MSwxNiBAQCBnZW5lcmF0ZV9jZXJ0aWZpY2F0ZSggWDUwOV9SRVEg ICAgICAgICAgICAgICAgICpyZXF1ZXN0LAorICAgaXNzdWVyX2NlcnRfZmlsZSA9IGZvcGVuKHNl cnZlcl9jb250ZXh0LT5jZXJ0aWZpY2F0ZV9pc3N1ZXJfY2VydCwgInIiKTsKKyAgIGlmIChpc3N1 ZXJfY2VydF9maWxlID09IE5VTEwpIHsKKyAgICAgICB2ZXJyb3JfcHV0X3N0cmluZygiRXJyb3Ig b3BlbmluZyBjZXJ0aWZpY2F0ZSBmaWxlICVzIiwKKy0JCQlzZXJ2ZXJfY29udGV4dC0+Y2VydGlm aWNhdGVfaXNzdWVyX2NlcnQpOworKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb250 ZXh0LT5jZXJ0aWZpY2F0ZV9pc3N1ZXJfY2VydCk7CisgICAgICAgdmVycm9yX3B1dF9lcnJubyhl cnJubyk7CisgICAgICAgZ290byBlcnJvcjsKKyAgIH0KKy0gIAorKworICAgaWYgKChpc3N1ZXJf Y2VydCA9IFBFTV9yZWFkX1g1MDkoaXNzdWVyX2NlcnRfZmlsZSwKKy0JCQkJICAgTlVMTCwgTlVM TCwgTlVMTCkpID09IE5VTEwpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO VUxMLCBOVUxMLCBOVUxMKSkgPT0gTlVMTCkKKyAgIHsKKyAgICAgICB2ZXJyb3JfcHV0X3N0cmlu ZygiRXJyb3IgcmVhZGluZyBjZXJ0aWZpY2F0ZSAlcyIsCistCQkJc2VydmVyX2NvbnRleHQtPmNl cnRpZmljYXRlX2lzc3Vlcl9jZXJ0KTsKKysgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJf Y29udGV4dC0+Y2VydGlmaWNhdGVfaXNzdWVyX2NlcnQpOworICAgICAgIHNzbF9lcnJvcl90b192 ZXJyb3IoKTsKKyAgICAgICBmY2xvc2UoaXNzdWVyX2NlcnRfZmlsZSk7CisgICAgICAgZ290byBl cnJvcjsKK0BAIC01OTUsMTAgKzU5NSwxMCBAQCBnZW5lcmF0ZV9jZXJ0aWZpY2F0ZSggWDUwOV9S RVEgICAgICAgICAgICAgICAgICpyZXF1ZXN0LAorIAorICAgaWYgKCFzZXJ2ZXJfY29udGV4dC0+ bWF4X2NlcnRfbGlmZXRpbWUpIHsKKyAgICAgbm90X2FmdGVyID0gTUlOKGNsaWVudF9yZXF1ZXN0 LT5wcm94eV9saWZldGltZSwKKy0JCSAgICBTRUNPTkRTX1BFUl9IT1VSICogTVlQUk9YWV9ERUZB VUxUX0RFTEVHX0hPVVJTKTsKKysgICAgICAgICAgICAgICAgICAgIFNFQ09ORFNfUEVSX0hPVVIg KiBNWVBST1hZX0RFRkFVTFRfREVMRUdfSE9VUlMpOworICAgfSBlbHNlIHsKKyAgICAgbm90X2Fm dGVyID0gTUlOKGNsaWVudF9yZXF1ZXN0LT5wcm94eV9saWZldGltZSwKKy0JCSAgICBzZXJ2ZXJf Y29udGV4dC0+bWF4X2NlcnRfbGlmZXRpbWUpOworKyAgICAgICAgICAgICAgICAgICAgc2VydmVy X2NvbnRleHQtPm1heF9jZXJ0X2xpZmV0aW1lKTsKKyAgIH0KKyAKKyAgIG15cHJveHlfZGVidWco ImNlcnQgbGlmZXRpbWU6ICVkIiwgbm90X2FmdGVyICk7CitAQCAtNjA2LDcgKzYwNiw3IEBAIGdl bmVyYXRlX2NlcnRpZmljYXRlKCBYNTA5X1JFUSAgICAgICAgICAgICAgICAgKnJlcXVlc3QsCisg ICAvKiBhbGxvdyA1bSBjbG9jayBza2V3ICovCisgICBYNTA5X2dtdGltZV9hZGooWDUwOV9nZXRf bm90QmVmb3JlKGNlcnQpLCAtKE1ZUFJPWFlfREVGQVVMVF9DTE9DS19TS0VXKSk7CisgICBYNTA5 X2dtdGltZV9hZGooWDUwOV9nZXRfbm90QWZ0ZXIoY2VydCksIChsb25nKW5vdF9hZnRlcik7Cist ICAKKysKKyAgIFg1MDlfc2V0X3B1YmtleShjZXJ0LCBwa2V5KTsKKyAKKyAgIC8qIGV4dGVuc2lv bnMgKi8KK0BAIC02MTcsNzcgKzYxNyw3NyBAQCBnZW5lcmF0ZV9jZXJ0aWZpY2F0ZSggWDUwOV9S RVEgICAgICAgICAgICAgICAgICpyZXF1ZXN0LAorICAgICAgIGxvbmcgZXJyb3JsaW5lID0gLTE7 CisgICAgICAgZXh0Y29uZiA9IE5DT05GX25ldyhOVUxMKTsKKyAgICAgICBpZiAoc2VydmVyX2Nv bnRleHQtPmNlcnRpZmljYXRlX2V4dGZpbGUpIHsKKy0JICBpZiAoTkNPTkZfbG9hZChleHRjb25m LCBzZXJ2ZXJfY29udGV4dC0+Y2VydGlmaWNhdGVfZXh0ZmlsZSwKKy0JCQkgJmVycm9ybGluZSkg PD0gMCkgeworLQkgICAgICBpZiAoZXJyb3JsaW5lIDw9IDApIHsKKy0JCSAgdmVycm9yX3B1dF9z dHJpbmcoIk9wZW5TU0wgZXJyb3IgbG9hZGluZyB0aGUgY2VydGlmaWNhdGVfZXh0ZmlsZSAnJXMn Iiwgc2VydmVyX2NvbnRleHQtPmNlcnRpZmljYXRlX2V4dGZpbGUpOworLQkgICAgICB9IGVsc2Ug eworLQkJICB2ZXJyb3JfcHV0X3N0cmluZygiT3BlblNTTCBlcnJvciBvbiBsaW5lICVsZCBvZiBj ZXJ0aWZpY2F0ZV9leHRmaWxlICclcydcbiIsIGVycm9ybGluZSwgc2VydmVyX2NvbnRleHQtPmNl cnRpZmljYXRlX2V4dGZpbGUpOworLQkgICAgICB9CistCSAgICAgIGdvdG8gZXJyb3I7CistCSAg fQorLQkgIG15cHJveHlfZGVidWcoIlN1Y2Nlc3NmdWxseSBsb2FkZWQgZXh0ZW5zaW9ucyBmaWxl ICVzLiIsCistCQkJc2VydmVyX2NvbnRleHQtPmNlcnRpZmljYXRlX2V4dGZpbGUpOworKyAgICAg ICAgICBpZiAoTkNPTkZfbG9hZChleHRjb25mLCBzZXJ2ZXJfY29udGV4dC0+Y2VydGlmaWNhdGVf ZXh0ZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9ybGluZSkgPD0gMCkgewor KyAgICAgICAgICAgICAgaWYgKGVycm9ybGluZSA8PSAwKSB7CisrICAgICAgICAgICAgICAgICAg dmVycm9yX3B1dF9zdHJpbmcoIk9wZW5TU0wgZXJyb3IgbG9hZGluZyB0aGUgY2VydGlmaWNhdGVf ZXh0ZmlsZSAnJXMnIiwgc2VydmVyX2NvbnRleHQtPmNlcnRpZmljYXRlX2V4dGZpbGUpOworKyAg ICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgICB2ZXJyb3JfcHV0X3N0cmlu ZygiT3BlblNTTCBlcnJvciBvbiBsaW5lICVsZCBvZiBjZXJ0aWZpY2F0ZV9leHRmaWxlICclcydc biIsIGVycm9ybGluZSwgc2VydmVyX2NvbnRleHQtPmNlcnRpZmljYXRlX2V4dGZpbGUpOworKyAg ICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgZ290byBlcnJvcjsKKysgICAgICAgICAgfQor KyAgICAgICAgICBteXByb3h5X2RlYnVnKCJTdWNjZXNzZnVsbHkgbG9hZGVkIGV4dGVuc2lvbnMg ZmlsZSAlcy4iLAorKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LT5jZXJ0 aWZpY2F0ZV9leHRmaWxlKTsKKyAgICAgICB9IGVsc2UgeworLQkgIHBpZF90IGNoaWxkcGlkOwor LQkgIGludCBmZHNbM107CistCSAgaW50IGV4aXRfc3RhdHVzOworLQkgIEZJTEUgKm5jb25mX3N0 cmVhbSA9IE5VTEw7CistCSAgbXlwcm94eV9kZWJ1ZygiY2FsbGluZyAlcyIsIHNlcnZlcl9jb250 ZXh0LT5jZXJ0aWZpY2F0ZV9leHRhcHApOworLQkgIGlmICgoY2hpbGRwaWQgPSBteXByb3h5X3Bv cGVuKGZkcywKKy0JCQkJCXNlcnZlcl9jb250ZXh0LT5jZXJ0aWZpY2F0ZV9leHRhcHAsCistCQkJ CQljbGllbnRfcmVxdWVzdC0+dXNlcm5hbWUsCistCQkJCQlOVUxMKSkgPCAwKSB7CistCSAgICAg IHJldHVybiAtMTsgLyogbXlwcm94eV9wb3BlbiB3aWxsIHNldCB2ZXJyb3IgKi8KKy0JICB9Cist CSAgY2xvc2UoZmRzWzBdKTsKKy0JICBpZiAod2FpdHBpZChjaGlsZHBpZCwgJmV4aXRfc3RhdHVz LCAwKSA9PSAtMSkgeworLQkgICAgICB2ZXJyb3JfcHV0X3N0cmluZygid2FpdCgpIGZhaWxlZCBm b3IgZXh0YXBwIGNoaWxkIik7CistCSAgICAgIHZlcnJvcl9wdXRfZXJybm8oZXJybm8pOworLQkg ICAgICByZXR1cm4gLTE7CistCSAgfQorLQkgIGlmIChleGl0X3N0YXR1cyAhPSAwKSB7CistCSAg ICAgIEZJTEUgKmZwID0gTlVMTDsKKy0JICAgICAgY2hhciBidWZbMTAwXTsKKy0JICAgICAgdmVy cm9yX3B1dF9zdHJpbmcoIkNlcnRpZmljYXRlIGV4dGVuc2lvbiBjYWxsLW91dCByZXR1cm5lZCBu b24temVyby4iKTsKKy0JICAgICAgZnAgPSBmZG9wZW4oZmRzWzFdLCAiciIpOworLQkgICAgICBp ZiAoZnApIHsKKy0JCSAgd2hpbGUgKGZnZXRzKGJ1ZiwgMTAwLCBmcCkgIT0gTlVMTCkgeworLQkJ ICAgICAgdmVycm9yX3B1dF9zdHJpbmcoIiVzIiwgYnVmKTsKKy0JCSAgfQorLQkJICBmY2xvc2Uo ZnApOworLQkgICAgICB9CistCSAgICAgIGZwID0gZmRvcGVuKGZkc1syXSwgInIiKTsKKy0JICAg ICAgaWYgKGZwKSB7CistCQkgIHdoaWxlIChmZ2V0cyhidWYsIDEwMCwgZnApICE9IE5VTEwpIHsK Ky0JCSAgICAgIHZlcnJvcl9wdXRfc3RyaW5nKCIlcyIsIGJ1Zik7CistCQkgIH0KKy0JCSAgZmNs b3NlKGZwKTsKKy0JICAgICAgfQorLQkgICAgICBnb3RvIGVycm9yOworLQkgIH0KKy0JICBjbG9z ZShmZHNbMl0pOworLQkgIG5jb25mX3N0cmVhbSA9IGZkb3BlbihmZHNbMV0sICJyIik7CistCSAg aWYgKE5DT05GX2xvYWRfZnAoZXh0Y29uZiwgbmNvbmZfc3RyZWFtLCAmZXJyb3JsaW5lKSA8PSAw KSB7CistCSAgICAgIGlmIChlcnJvcmxpbmUgPD0gMCkgeworLQkJICB2ZXJyb3JfcHV0X3N0cmlu ZygiT3BlblNTTCBlcnJvciBwYXJzaW5nIG91dHB1dCBvZiBjZXJ0aWZpY2F0ZV9leHRhcHAgY2Fs bC1vdXQuIik7CistCSAgICAgIH0gZWxzZSB7CistCQkgIHZlcnJvcl9wdXRfc3RyaW5nKCJPcGVu U1NMIGVycm9yIHBhcnNpbmcgbGluZSAlbGQgb2Ygb2YgY2VydGlmaWNhdGVfZXh0YXBwIGNhbGwt b3V0IG91dHB1dC4iLCBlcnJvcmxpbmUpOworLQkgICAgICB9CistCSAgICAgIGZjbG9zZShuY29u Zl9zdHJlYW0pOworLQkgICAgICBnb3RvIGVycm9yOworLQkgIH0KKy0JICBmY2xvc2UobmNvbmZf c3RyZWFtKTsKKysgICAgICAgICAgcGlkX3QgY2hpbGRwaWQ7CisrICAgICAgICAgIGludCBmZHNb M107CisrICAgICAgICAgIGludCBleGl0X3N0YXR1czsKKysgICAgICAgICAgRklMRSAqbmNvbmZf c3RyZWFtID0gTlVMTDsKKysgICAgICAgICAgbXlwcm94eV9kZWJ1ZygiY2FsbGluZyAlcyIsIHNl cnZlcl9jb250ZXh0LT5jZXJ0aWZpY2F0ZV9leHRhcHApOworKyAgICAgICAgICBpZiAoKGNoaWxk cGlkID0gbXlwcm94eV9wb3BlbihmZHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlcnZlcl9jb250ZXh0LT5jZXJ0aWZpY2F0ZV9leHRhcHAsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZXF1ZXN0LT51c2VybmFtZSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkpIDwgMCkgewor KyAgICAgICAgICAgICAgcmV0dXJuIC0xOyAvKiBteXByb3h5X3BvcGVuIHdpbGwgc2V0IHZlcnJv ciAqLworKyAgICAgICAgICB9CisrICAgICAgICAgIGNsb3NlKGZkc1swXSk7CisrICAgICAgICAg IGlmICh3YWl0cGlkKGNoaWxkcGlkLCAmZXhpdF9zdGF0dXMsIDApID09IC0xKSB7CisrICAgICAg ICAgICAgICB2ZXJyb3JfcHV0X3N0cmluZygid2FpdCgpIGZhaWxlZCBmb3IgZXh0YXBwIGNoaWxk Iik7CisrICAgICAgICAgICAgICB2ZXJyb3JfcHV0X2Vycm5vKGVycm5vKTsKKysgICAgICAgICAg ICAgIHJldHVybiAtMTsKKysgICAgICAgICAgfQorKyAgICAgICAgICBpZiAoZXhpdF9zdGF0dXMg IT0gMCkgeworKyAgICAgICAgICAgICAgRklMRSAqZnAgPSBOVUxMOworKyAgICAgICAgICAgICAg Y2hhciBidWZbMTAwXTsKKysgICAgICAgICAgICAgIHZlcnJvcl9wdXRfc3RyaW5nKCJDZXJ0aWZp Y2F0ZSBleHRlbnNpb24gY2FsbC1vdXQgcmV0dXJuZWQgbm9uLXplcm8uIik7CisrICAgICAgICAg ICAgICBmcCA9IGZkb3BlbihmZHNbMV0sICJyIik7CisrICAgICAgICAgICAgICBpZiAoZnApIHsK KysgICAgICAgICAgICAgICAgICB3aGlsZSAoZmdldHMoYnVmLCAxMDAsIGZwKSAhPSBOVUxMKSB7 CisrICAgICAgICAgICAgICAgICAgICAgIHZlcnJvcl9wdXRfc3RyaW5nKCIlcyIsIGJ1Zik7Cisr ICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgIGZjbG9zZShmcCk7CisrICAg ICAgICAgICAgICB9CisrICAgICAgICAgICAgICBmcCA9IGZkb3BlbihmZHNbMl0sICJyIik7Cisr ICAgICAgICAgICAgICBpZiAoZnApIHsKKysgICAgICAgICAgICAgICAgICB3aGlsZSAoZmdldHMo YnVmLCAxMDAsIGZwKSAhPSBOVUxMKSB7CisrICAgICAgICAgICAgICAgICAgICAgIHZlcnJvcl9w dXRfc3RyaW5nKCIlcyIsIGJ1Zik7CisrICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAg ICAgICAgIGZjbG9zZShmcCk7CisrICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICBnb3Rv IGVycm9yOworKyAgICAgICAgICB9CisrICAgICAgICAgIGNsb3NlKGZkc1syXSk7CisrICAgICAg ICAgIG5jb25mX3N0cmVhbSA9IGZkb3BlbihmZHNbMV0sICJyIik7CisrICAgICAgICAgIGlmIChO Q09ORl9sb2FkX2ZwKGV4dGNvbmYsIG5jb25mX3N0cmVhbSwgJmVycm9ybGluZSkgPD0gMCkgewor KyAgICAgICAgICAgICAgaWYgKGVycm9ybGluZSA8PSAwKSB7CisrICAgICAgICAgICAgICAgICAg dmVycm9yX3B1dF9zdHJpbmcoIk9wZW5TU0wgZXJyb3IgcGFyc2luZyBvdXRwdXQgb2YgY2VydGlm aWNhdGVfZXh0YXBwIGNhbGwtb3V0LiIpOworKyAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAg ICAgICAgICAgICAgICB2ZXJyb3JfcHV0X3N0cmluZygiT3BlblNTTCBlcnJvciBwYXJzaW5nIGxp bmUgJWxkIG9mIG9mIGNlcnRpZmljYXRlX2V4dGFwcCBjYWxsLW91dCBvdXRwdXQuIiwgZXJyb3Js aW5lKTsKKysgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgIGZjbG9zZShuY29uZl9zdHJl YW0pOworKyAgICAgICAgICAgICAgZ290byBlcnJvcjsKKysgICAgICAgICAgfQorKyAgICAgICAg ICBmY2xvc2UobmNvbmZfc3RyZWFtKTsKKyAgICAgICB9CisgICAgICAgWDUwOVYzX3NldF9uY29u ZigmY3R4LCBleHRjb25mKTsKKyAgICAgICBpZiAoIVg1MDlWM19FWFRfYWRkX25jb25mKGV4dGNv bmYsICZjdHgsICJkZWZhdWx0IiwgY2VydCkpCisgICAgICAgeworLQkgIHZlcnJvcl9wdXRfc3Ry aW5nKCJPcGVuU1NMIGVycm9yIGFkZGluZyBleHRlbnNpb25zLiIpOworKyAgICAgICAgICB2ZXJy b3JfcHV0X3N0cmluZygiT3BlblNTTCBlcnJvciBhZGRpbmcgZXh0ZW5zaW9ucy4iKTsKKyAgICAg ICBzc2xfZXJyb3JfdG9fdmVycm9yKCk7CistCSAgZ290byBlcnJvcjsKKysgICAgICAgICAgZ290 byBlcnJvcjsKKyAgICAgICB9CisgICAgICAgbXlwcm94eV9kZWJ1ZygiU3VjY2Vzc2Z1bGx5IGFk ZGVkIGV4dGVuc2lvbnMuIik7CistICB9IGVsc2UgewkJCS8qIGFkZCBzb21lIGRlZmF1bHRzICov CisrICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAvKiBhZGQgc29tZSBkZWZhdWx0cyAq LworICAgICAgIGFkZF9leHQoY3R4cCwgY2VydCwgTklEX2tleV91c2FnZSwgImNyaXRpY2FsLERp Z2l0YWwgU2lnbmF0dXJlLCBLZXkgRW5jaXBoZXJtZW50LCBEYXRhIEVuY2lwaGVybWVudCIpOwor ICAgICAgIGFkZF9leHQoY3R4cCwgY2VydCwgTklEX2V4dF9rZXlfdXNhZ2UsICJjbGllbnRBdXRo Iik7CisgICAgICAgYWRkX2V4dChjdHhwLCBjZXJ0LCBOSURfYmFzaWNfY29uc3RyYWludHMsICJj cml0aWNhbCxDQTpGQUxTRSIpOworQEAgLTY5Niw5ICs2OTYsOSBAQCBnZW5lcmF0ZV9jZXJ0aWZp Y2F0ZSggWDUwOV9SRVEgICAgICAgICAgICAgICAgICpyZXF1ZXN0LAorICAgaWYgKHNlcnZlcl9j b250ZXh0LT5jZXJ0aWZpY2F0ZV9pc3N1ZXJfZW1haWxfZG9tYWluKSB7CisgICAgICAgY2hhciAq ZW1haWw7CisgICAgICAgZW1haWwgPSBtYWxsb2Moc3RybGVuKGNsaWVudF9yZXF1ZXN0LT51c2Vy bmFtZSkrc3RybGVuKCJlbWFpbDpAIikrMSsKKy0JCSAgICAgc3RybGVuKHNlcnZlcl9jb250ZXh0 LT5jZXJ0aWZpY2F0ZV9pc3N1ZXJfZW1haWxfZG9tYWluKSk7CisrICAgICAgICAgICAgICAgICAg ICAgc3RybGVuKHNlcnZlcl9jb250ZXh0LT5jZXJ0aWZpY2F0ZV9pc3N1ZXJfZW1haWxfZG9tYWlu KSk7CisgICAgICAgc3ByaW50ZihlbWFpbCwgImVtYWlsOiVzQCVzIiwgY2xpZW50X3JlcXVlc3Qt PnVzZXJuYW1lLAorLQkgICAgICBzZXJ2ZXJfY29udGV4dC0+Y2VydGlmaWNhdGVfaXNzdWVyX2Vt YWlsX2RvbWFpbik7CisrICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC0+Y2VydGlmaWNhdGVf aXNzdWVyX2VtYWlsX2RvbWFpbik7CisgICAgICAgYWRkX2V4dChjdHhwLCBjZXJ0LCBOSURfc3Vi amVjdF9hbHRfbmFtZSwgZW1haWwpOworICAgICAgIGZyZWUoZW1haWwpOworICAgfQorQEAgLTcz OSwxMyArNzM5LDEzIEBAIGdlbmVyYXRlX2NlcnRpZmljYXRlKCBYNTA5X1JFUSAgICAgICAgICAg ICAgICAgKnJlcXVlc3QsCisgCisgICAgICAgaWYgKCFpbmtleSkgeworICAgICAgICAgIHZlcnJv cl9wdXRfc3RyaW5nKCJDb3VsZCBub3Qgb3BlbiBjYWtleSBmaWxlIGhhbmRsZTogJXMiLAorLQkg ICAgIAkgICAgICBzZXJ2ZXJfY29udGV4dC0+Y2VydGlmaWNhdGVfaXNzdWVyX2tleSk7CisrICAg ICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LT5jZXJ0aWZpY2F0ZV9pc3N1ZXJfa2V5 KTsKKyAgICAgICAgICB2ZXJyb3JfcHV0X2Vycm5vKGVycm5vKTsKKyAgICAgICAgICBnb3RvIGVy cm9yOworICAgICAgIH0KKyAKKyAgICAgICBjYWtleSA9IFBFTV9yZWFkX1ByaXZhdGVLZXkoIGlu a2V5LCBOVUxMLCBOVUxMLAorLQkgICAgICAgICAgIChjaGFyICopc2VydmVyX2NvbnRleHQtPmNl cnRpZmljYXRlX2lzc3Vlcl9rZXlfcGFzc3BocmFzZSApOworKyAgICAgICAgICAgICAgICAgICAo Y2hhciAqKXNlcnZlcl9jb250ZXh0LT5jZXJ0aWZpY2F0ZV9pc3N1ZXJfa2V5X3Bhc3NwaHJhc2Ug KTsKKyAKKyAgICAgICBmY2xvc2UoaW5rZXkpOworICAgfQorQEAgLTc3NCw3ICs3NzQsNyBAQCBn ZW5lcmF0ZV9jZXJ0aWZpY2F0ZSggWDUwOV9SRVEgICAgICAgICAgICAgICAgICpyZXF1ZXN0LAor ICAgICB2ZXJyb3JfcHV0X3N0cmluZygiQ2VydGlmaWNhdGUvY2FrZXkgc2lnbiBmYWlsZWQuIik7 CisgICAgIHNzbF9lcnJvcl90b192ZXJyb3IoKTsKKyAgICAgZ290byBlcnJvcjsKKy0gIH0gCisr ICB9CisgICBzZXJpYWwgPSBpMnNfQVNOMV9PQ1RFVF9TVFJJTkcoTlVMTCwgWDUwOV9nZXRfc2Vy aWFsTnVtYmVyKGNlcnQpKTsKKyAjaWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5FCisgICBpZiAoZW5n aW5lKSB7CitAQCAtNzk0LDcgKzc5NCw3IEBAIGdlbmVyYXRlX2NlcnRpZmljYXRlKCBYNTA5X1JF USAgICAgICAgICAgICAgICAgKnJlcXVlc3QsCisgCisgICBteXByb3h5X2xvZygiSXNzdWVkIGNl cnRpZmljYXRlIGZvciB1c2VyIFwiJXNcIiwgd2l0aCBETiBcIiVzXCIsICIKKyAgICAgICAgICAg ICAgICJsaWZldGltZSBcIiVkXCIsIGFuZCBzZXJpYWwgbnVtYmVyIFwiMHglc1wiIiwKKy0gICAg ICAgICAgICAgIGNsaWVudF9yZXF1ZXN0LT51c2VybmFtZSwgdXNlcmRuLCAKKysgICAgICAgICAg ICAgIGNsaWVudF9yZXF1ZXN0LT51c2VybmFtZSwgdXNlcmRuLAorICAgICAgICAgICAgICAgbm90 X2FmdGVyLAorICAgICAgICAgICAgICAgc2VyaWFsCisgICAgICAgICAgICAgICk7CitAQCAtODI0 LDcgKzgyNCw3IEBAIGdlbmVyYXRlX2NlcnRpZmljYXRlKCBYNTA5X1JFUSAgICAgICAgICAgICAg ICAgKnJlcXVlc3QsCisgfQorIAorIAorLXN0YXRpYyBpbnQgCisrc3RhdGljIGludAorIGFycmF5 bGVuKGNoYXIgKipvcHRpb25zKSB7CisgICBjaGFyICoqcHRyOworICAgaW50IGMgPSAwOworQEAg LTg1MCwzMCArODUwLDMwIEBAIHZvaWQgc2h1dGRvd25fb3BlbnNzbF9lbmdpbmUodm9pZCkgewor IAorIHN0YXRpYyBpbnQgdWlfcmVhZF9mbihVSSAqdWksIFVJX1NUUklORyAqdWlfc3RyaW5nKSB7 CisgICAgIHN3aXRjaChVSV9nZXRfc3RyaW5nX3R5cGUodWlfc3RyaW5nKSkgeworLSAgCWNhc2Ug VUlUX1BST01QVDoKKy0JY2FzZSBVSVRfVkVSSUZZOgorLQkgICAgaWYoVUlfZ2V0X2lucHV0X2Zs YWdzKHVpX3N0cmluZykgJiBVSV9JTlBVVF9GTEFHX0VDSE8pIHsKKy0JCVVJX3NldF9yZXN1bHQo dWksIHVpX3N0cmluZywgKGNoYXIgKikgVUlfZ2V0MF91c2VyX2RhdGEodWkpKTsKKy0JCXJldHVy biAxOworLQkgICAgfSBlbHNlIHsKKysgICAgICAgIGNhc2UgVUlUX1BST01QVDoKKysgICAgICAg IGNhc2UgVUlUX1ZFUklGWToKKysgICAgICAgICAgICBpZihVSV9nZXRfaW5wdXRfZmxhZ3ModWlf c3RyaW5nKSAmIFVJX0lOUFVUX0ZMQUdfRUNITykgeworKyAgICAgICAgICAgICAgICBVSV9zZXRf cmVzdWx0KHVpLCB1aV9zdHJpbmcsIChjaGFyICopIFVJX2dldDBfdXNlcl9kYXRhKHVpKSk7Cisr ICAgICAgICAgICAgICAgIHJldHVybiAxOworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAg ICAgICAgcmV0dXJuIDA7IC8qIG5vdCBzdXBwb3J0ZWQhICovCisrICAgICAgICAgICAgfQorKyAg ICAgICAgY2FzZSBVSVRfQk9PTEVBTjoKKysgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg cmV0dXJuIDA7IC8qIG5vdCBzdXBwb3J0ZWQhICovCistCSAgICB9CistCWNhc2UgVUlUX0JPT0xF QU46CistCWRlZmF1bHQ6CistCSAgICByZXR1cm4gMDsgLyogbm90IHN1cHBvcnRlZCEgKi8KKyAg ICAgfQorIH0KKyAKKyBzdGF0aWMgaW50IHVpX3dyaXRlX2ZuKFVJICp1aSwgVUlfU1RSSU5HICp1 aV9zdHJpbmcpIHsKKyAgICAgc3dpdGNoKFVJX2dldF9zdHJpbmdfdHlwZSh1aV9zdHJpbmcpKSB7 CistCWNhc2UgVUlUX0VSUk9SOgorLQkgICAgdmVycm9yX3B1dF9zdHJpbmcoIiVzIiwgVUlfZ2V0 MF9vdXRwdXRfc3RyaW5nKHVpX3N0cmluZykpOworLQkgICAgYnJlYWs7CistCWNhc2UgVUlUX0lO Rk86CistCSAgICBteXByb3h5X2xvZygiJXMiLCBVSV9nZXQwX291dHB1dF9zdHJpbmcodWlfc3Ry aW5nKSk7CistCSAgICBicmVhazsKKy0JZGVmYXVsdDoKKy0JICAgIGJyZWFrOworKyAgICAgICAg Y2FzZSBVSVRfRVJST1I6CisrICAgICAgICAgICAgdmVycm9yX3B1dF9zdHJpbmcoIiVzIiwgVUlf Z2V0MF9vdXRwdXRfc3RyaW5nKHVpX3N0cmluZykpOworKyAgICAgICAgICAgIGJyZWFrOworKyAg ICAgICAgY2FzZSBVSVRfSU5GTzoKKysgICAgICAgICAgICBteXByb3h5X2xvZygiJXMiLCBVSV9n ZXQwX291dHB1dF9zdHJpbmcodWlfc3RyaW5nKSk7CisrICAgICAgICAgICAgYnJlYWs7CisrICAg ICAgICBkZWZhdWx0OgorKyAgICAgICAgICAgIGJyZWFrOworICAgICB9CisgICAgIHJldHVybiAx OworIH0KK0BAIC04ODksNyArODg5LDcgQEAgaW50IGluaXRpYWxpc2Vfb3BlbnNzbF9lbmdpbmUo bXlwcm94eV9zZXJ2ZXJfY29udGV4dF90ICpzZXJ2ZXJfY29udGV4dCkgeworICAgICBVSV9tZXRo b2Rfc2V0X3JlYWRlcih1aV9tZXRob2QsIHVpX3JlYWRfZm4pOworICAgICBVSV9tZXRob2Rfc2V0 X3dyaXRlcih1aV9tZXRob2QsIHVpX3dyaXRlX2ZuKTsKKyAKKy0JU1NMX2xvYWRfZXJyb3Jfc3Ry aW5ncygpOworKyAgICBTU0xfbG9hZF9lcnJvcl9zdHJpbmdzKCk7CisgICAgIEVOR0lORV9sb2Fk X2J1aWx0aW5fZW5naW5lcygpOworIAorICAgICBteXByb3h5X2xvZygiSW5pdGlhbGlzaW5nIE9w ZW5TU0wgc2lnbmluZyBlbmdpbmUgJyVzJy4uLi4iLCBlbmdpbmVfaWQpOworQEAgLTkwMCwxMiAr OTAwLDEyIEBAIGludCBpbml0aWFsaXNlX29wZW5zc2xfZW5naW5lKG15cHJveHlfc2VydmVyX2Nv bnRleHRfdCAqc2VydmVyX2NvbnRleHQpIHsKKyAgICAgICAgIFVJX2Rlc3Ryb3lfbWV0aG9kKHVp X21ldGhvZCk7CisgICAgICAgICByZXR1cm4gMDsKKyAgICAgfQorLQlpZihzZXJ2ZXJfY29udGV4 dC0+Y2VydGlmaWNhdGVfb3BlbnNzbF9lbmdpbmVfcHJlKSB7CistCSAgICBjaGFyICoqcHJlX2Nt ZHM7CistCSAgICBpbnQgcHJlX251bTsKKysgICAgaWYoc2VydmVyX2NvbnRleHQtPmNlcnRpZmlj YXRlX29wZW5zc2xfZW5naW5lX3ByZSkgeworKyAgICAgICAgY2hhciAqKnByZV9jbWRzOworKyAg ICAgICAgaW50IHByZV9udW07CisgICAgICAgICBwcmVfY21kcyA9IHNlcnZlcl9jb250ZXh0LT5j ZXJ0aWZpY2F0ZV9vcGVuc3NsX2VuZ2luZV9wcmU7CistCSAgICBwcmVfbnVtID0gYXJyYXlsZW4o cHJlX2NtZHMpOworLQkgICAgd2hpbGUocHJlX251bS0tKSB7CisrICAgICAgICBwcmVfbnVtID0g YXJyYXlsZW4ocHJlX2NtZHMpOworKyAgICAgICAgd2hpbGUocHJlX251bS0tKSB7CisgICAgICAg ICAgICAgY2hhciAqbmFtZSwgKnZhbHVlPU5VTEw7CisgICAgICAgICAgICAgY2hhciAqbiA9IHN0 cmNocihwcmVfY21kc1swXSwgJzonKTsKKyAgICAgICAgICAgICBpZihuPT1OVUxMKSB7CitAQCAt OTE1LDE5ICs5MTUsMTkgQEAgaW50IGluaXRpYWxpc2Vfb3BlbnNzbF9lbmdpbmUobXlwcm94eV9z ZXJ2ZXJfY29udGV4dF90ICpzZXJ2ZXJfY29udGV4dCkgeworICAgICAgICAgICAgICAgICBuYW1l PXByZV9jbWRzWzBdOworICAgICAgICAgICAgICAgICB2YWx1ZT1uKzE7CisgICAgICAgICAgICAg fQorLSAgICAgICAgIAlpZighRU5HSU5FX2N0cmxfY21kX3N0cmluZyhlLCBuYW1lLCB2YWx1ZSwg MCkpIHsKKysgICAgICAgICAgICBpZighRU5HSU5FX2N0cmxfY21kX3N0cmluZyhlLCBuYW1lLCB2 YWx1ZSwgMCkpIHsKKyAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgcHJl IGNvbW1hbmQgKCVzIC0gJXM6JXMpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2lu ZV9pZCwgbmFtZSwgdmFsdWUgPyB2YWx1ZSA6ICIoTlVMTCkiKTsKKyAgICAgICAgICAgICAgICAg RU5HSU5FX2ZyZWUoZSk7CisgICAgICAgICAgICAgICAgIEVOR0lORV9jbGVhbnVwKCk7CistCSAg ICAgICAgICAgIFVJX2Rlc3Ryb3lfbWV0aG9kKHVpX21ldGhvZCk7CisrICAgICAgICAgICAgICAg IFVJX2Rlc3Ryb3lfbWV0aG9kKHVpX21ldGhvZCk7CisgICAgICAgICAgICAgICAgIHJldHVybiAw OworLSAgICAgICAgIAl9CistICAgICAgICAgCXByZV9jbWRzKys7CistCSAgICB9CisrICAgICAg ICAgICAgfQorKyAgICAgICAgICAgIHByZV9jbWRzKys7CisrICAgICAgICB9CisgICAgIH0KKyAg ICAgaWYoIUVOR0lORV9pbml0KGUpKSB7CistCSAgICB2ZXJyb3JfcHV0X3N0cmluZygiQ291bGQg bm90IGluaXRpYWxpc2UgZW5naW5lICclcycuIiwgZW5naW5lX2lkKTsKKysgICAgICAgIHZlcnJv cl9wdXRfc3RyaW5nKCJDb3VsZCBub3QgaW5pdGlhbGlzZSBlbmdpbmUgJyVzJy4iLCBlbmdpbmVf aWQpOworICAgICAgICAgc3NsX2Vycm9yX3RvX3ZlcnJvcigpOworICAgICAgICAgRU5HSU5FX2Zy ZWUoZSk7CisgICAgICAgICBFTkdJTkVfY2xlYW51cCgpOworQEAgLTk1OCw3ICs5NTgsNyBAQCBp bnQgaW5pdGlhbGlzZV9vcGVuc3NsX2VuZ2luZShteXByb3h5X3NlcnZlcl9jb250ZXh0X3QgKnNl cnZlcl9jb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lX2lkLCBuYW1l LCB2YWx1ZSA/IHZhbHVlIDogIihOVUxMKSIpOworICAgICAgICAgICAgICAgICBFTkdJTkVfZnJl ZShlKTsKKyAgICAgICAgICAgICAgICAgRU5HSU5FX2NsZWFudXAoKTsKKy0JICAgICAgICAgICAg VUlfZGVzdHJveV9tZXRob2QodWlfbWV0aG9kKTsKKysgICAgICAgICAgICAgICAgICAgIFVJX2Rl c3Ryb3lfbWV0aG9kKHVpX21ldGhvZCk7CisgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICBwb3N0X2NtZHMrKzsKK0BAIC05NjcsMzEgKzk2Nywz MSBAQCBpbnQgaW5pdGlhbGlzZV9vcGVuc3NsX2VuZ2luZShteXByb3h5X3NlcnZlcl9jb250ZXh0 X3QgKnNlcnZlcl9jb250ZXh0KSB7CisgCisgICAgIGNha2V5ID0gRU5HSU5FX2xvYWRfcHJpdmF0 ZV9rZXkoZSwgc2VydmVyX2NvbnRleHQtPmNlcnRpZmljYXRlX2lzc3Vlcl9rZXksIHVpX21ldGhv ZCwgKGNoYXIgKilzZXJ2ZXJfY29udGV4dC0+Y2VydGlmaWNhdGVfaXNzdWVyX2tleV9wYXNzcGhy YXNlKTsKKyAKKy0gIAlpZiAoY2FrZXkgPT0gTlVMTCkgeyAgICAgICAgLyogbWF5IG5vdCBiZSBm YXRhbC4uLiAqLworKyAgICBpZiAoY2FrZXkgPT0gTlVMTCkgeyAgICAgICAgLyogbWF5IG5vdCBi ZSBmYXRhbC4uLiAqLworICAgICAgICAgdmVycm9yX3B1dF9zdHJpbmcoIldBUk5JTkc6IENvdWxk IG5vdCBsb2FkIEVOR0lORSBjYWtleSBhdCAlcy4iLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VydmVyX2NvbnRleHQtPmNlcnRpZmljYXRlX2lzc3Vlcl9rZXkpOworICAgICAgICAgc3Ns X2Vycm9yX3RvX3ZlcnJvcigpOworICAgICAgICAgbXlwcm94eV9sb2dfdmVycm9yKCk7CisgICAg ICAgICB2ZXJyb3JfY2xlYXIoKTsKKy0JfQorKyAgICB9CisgCisgICAgIGlmKGF0ZXhpdCgmc2h1 dGRvd25fb3BlbnNzbF9lbmdpbmUpIT0wKSB7CisgICAgICAgICB2ZXJyb3JfcHV0X3N0cmluZygi Q291bGQgbm90IHJlZ2lzdGVyIHNodXRkb3duIGhhbmRsZXIgZm9yIGVuZ2luZSAnJXMnLiIsIGVu Z2luZV9pZCk7CistCSAgICBpZiAoY2FrZXkpIEVWUF9QS0VZX2ZyZWUoIGNha2V5ICk7CisrICAg ICAgICBpZiAoY2FrZXkpIEVWUF9QS0VZX2ZyZWUoIGNha2V5ICk7CisgICAgICAgICBFTkdJTkVf ZmluaXNoKGUpOworICAgICAgICAgRU5HSU5FX2NsZWFudXAoKTsKKyAgICAgICAgIFVJX2Rlc3Ry b3lfbWV0aG9kKHVpX21ldGhvZCk7CisgICAgICAgICByZXR1cm4gMDsKKy0JfSAKKysgICAgfQor IAorICAgICBteXByb3h5X2xvZygiSW5pdGlhbGlzZWQgZW5naW5lICclcycgKENBS2V5PSVzKSIs IGVuZ2luZV9pZCwgc2VydmVyX2NvbnRleHQtPmNlcnRpZmljYXRlX2lzc3Vlcl9rZXkpOworIAor LQkvKiBTaGFyZSB3aXRoIHRoZSBvdGhlciBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUuICovCist CWVfY2FrZXkgPSBjYWtleTsgCistCWVuZ2luZSAgPSBlOworKyAgICAvKiBTaGFyZSB3aXRoIHRo ZSBvdGhlciBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUuICovCisrICAgIGVfY2FrZXkgPSBjYWtl eTsKKysgICAgZW5naW5lICA9IGU7CisgCistCVVJX2Rlc3Ryb3lfbWV0aG9kKHVpX21ldGhvZCk7 CistCXJldHVybiAxOworKyAgICBVSV9kZXN0cm95X21ldGhvZCh1aV9tZXRob2QpOworKyAgICBy ZXR1cm4gMTsKKyB9CisgI2VuZGlmCisgCitAQCAtMTA2NywxMyArMTA2NywxMyBAQCBjaGVja19u ZXdjZXJ0KGNvbnN0IGNoYXIgKmNhbGxvdXQsIGNvbnN0IFg1MDkgKmNlcnQpCisgICAgIHJldHVy biBkb19jaGVjayhjYWxsb3V0LCBOVUxMLCBjZXJ0KTsKKyB9CisgCistc3RhdGljIGludCAKKytz dGF0aWMgaW50CisgaGFuZGxlX2NlcnRpZmljYXRlKHVuc2lnbmVkIGNoYXIgICAgICAgICAgICAq aW5wdXRfYnVmZmVyLAorLQkJICAgc2l6ZV90ICAgICAgICAgICAgICAgICAgIGlucHV0X2J1ZmZl cl9sZW5ndGgsCistCQkgICB1bnNpZ25lZCBjaGFyICAgICAgICAgICAgKipvdXRwdXRfYnVmZmVy LAorLQkJICAgaW50ICAgICAgICAgICAgICAgICAgICAgICpvdXRwdXRfYnVmZmVyX2xlbmd0aCwK Ky0JCSAgIG15cHJveHlfcmVxdWVzdF90ICAgICAgICAqY2xpZW50X3JlcXVlc3QsCistCQkgICBt eXByb3h5X3NlcnZlcl9jb250ZXh0X3QgKnNlcnZlcl9jb250ZXh0KSB7CisrICAgICAgICAgICAg ICAgICAgIHNpemVfdCAgICAgICAgICAgICAgICAgICBpbnB1dF9idWZmZXJfbGVuZ3RoLAorKyAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICAgICAgICAgICAgKipvdXRwdXRfYnVmZmVy LAorKyAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgKm91dHB1dF9i dWZmZXJfbGVuZ3RoLAorKyAgICAgICAgICAgICAgICAgICBteXByb3h5X3JlcXVlc3RfdCAgICAg ICAgKmNsaWVudF9yZXF1ZXN0LAorKyAgICAgICAgICAgICAgICAgICBteXByb3h5X3NlcnZlcl9j b250ZXh0X3QgKnNlcnZlcl9jb250ZXh0KSB7CisgCisgICBpbnQgICAgICAgICAgIHJldHVybl92 YWx1ZSA9IDE7CisgICBpbnQgICAgICAgICAgIHZlcmlmeTsKK0BAIC0xMTIyLDcgKzExMjIsNyBA QCBoYW5kbGVfY2VydGlmaWNhdGUodW5zaWduZWQgY2hhciAgICAgICAgICAgICppbnB1dF9idWZm ZXIsCisgICAgIHZlcnJvcl9wdXRfc3RyaW5nKCJDb3VsZCBub3QgZXh0cmFjdCBwdWJsaWMga2V5 IGZyb20gcmVxdWVzdC4iKTsKKyAgICAgc3NsX2Vycm9yX3RvX3ZlcnJvcigpOworICAgICBnb3Rv IGVycm9yOworLSAgfSAKKysgIH0KKyAKKyAgIGlmIChFVlBfUEtFWV9pZChwa2V5KSAhPSBFVlBf UEtFWV9SU0EpIHsKKyAgICAgICB2ZXJyb3JfcHV0X3N0cmluZygiUHVibGljIGtleSBpbiBjZXJ0 aWZpY2F0ZSByZXF1ZXN0IGlzIG5vdCBvZiB0eXBlIFJTQS4iKTsKK0BAIC0xMTU1LDE1ICsxMTU1 LDE1IEBAIGhhbmRsZV9jZXJ0aWZpY2F0ZSh1bnNpZ25lZCBjaGFyICAgICAgICAgICAgKmlucHV0 X2J1ZmZlciwKKyAgICAgdmVycm9yX3B1dF9zdHJpbmcoIlJlcS9rZXkgZGlkIG5vdCB2ZXJpZnk6 ICVkIiwgdmVyaWZ5ICk7CisgICAgIHNzbF9lcnJvcl90b192ZXJyb3IoKTsKKyAgICAgZ290byBl cnJvcjsKKy0gIH0gCisrICB9CisgCisgICAvKiBjb252ZXJ0IHBrZXkgaW50byBzdHJpbmcgZm9y IG91dHB1dCB0byBsb2cgKi8KKyAgIEFTTjFfZGlnZXN0KChpMmRfb2Zfdm9pZCopaTJkX1BVQktF WSwgRVZQX3NoYTEoKSwgKGNoYXIqKXBrZXksIG1kLCAmbWRfbGVuKTsKKy0gIHN1Yl9oYXNoID0g bWRbMF0gKyAobWRbMV0gKyAobWRbMl0gKyAobWRbM10gPj4gMSkgKiAyNTYpICogMjU2KSAqIDI1 NjsgCisrICBzdWJfaGFzaCA9IG1kWzBdICsgKG1kWzFdICsgKG1kWzJdICsgKG1kWzNdID4+IDEp ICogMjU2KSAqIDI1NikgKiAyNTY7CisgCisgICBteXByb3h5X2xvZygiR290IGEgY2VydCByZXF1 ZXN0IGZvciB1c2VyIFwiJXNcIiwgIgorICAgICAgICAgICAgICAgIndpdGggcHVia2V5IGhhc2gg XCIweCVseFwiLCBhbmQgbGlmZXRpbWUgXCIlZFwiIiwKKy0gICAgICAgICAgICAgIGNsaWVudF9y ZXF1ZXN0LT51c2VybmFtZSwgCisrICAgICAgICAgICAgICBjbGllbnRfcmVxdWVzdC0+dXNlcm5h bWUsCisgICAgICAgICAgICAgICBzdWJfaGFzaCwKKyAgICAgICAgICAgICAgIGNsaWVudF9yZXF1 ZXN0LT5wcm94eV9saWZldGltZQorICAgICAgICAgICAgICApOworQEAgLTExNzcsMzAgKzExNzcs MzAgQEAgaGFuZGxlX2NlcnRpZmljYXRlKHVuc2lnbmVkIGNoYXIgICAgICAgICAgICAqaW5wdXRf YnVmZmVyLAorICAgICogdGhlc2UgY2hlY2tzIGFyZSBkdXBsaWNhdGVkIGluIGNoZWNrX2NvbmZp ZygpLgorICAgICovCisgCistICBpZiAoICggc2VydmVyX2NvbnRleHQtPmNlcnRpZmljYXRlX2lz c3Vlcl9wcm9ncmFtICE9IE5VTEwgKSAmJiAKKysgIGlmICggKCBzZXJ2ZXJfY29udGV4dC0+Y2Vy dGlmaWNhdGVfaXNzdWVyX3Byb2dyYW0gIT0gTlVMTCApICYmCisgICAgICAgICggc2VydmVyX2Nv bnRleHQtPmNlcnRpZmljYXRlX2lzc3Vlcl9jZXJ0ICE9IE5VTEwgKSApIHsKKyAgICAgdmVycm9y X3B1dF9zdHJpbmcoIkNBIGNvbmZpZyBlcnJvcjogYm90aCBpc3N1ZXIgYW5kIHByb2dyYW0gZGVm aW5lZCIpOworICAgICBnb3RvIGVycm9yOworLSAgfSAKKysgIH0KKyAKKy0gIGlmICggKCBzZXJ2 ZXJfY29udGV4dC0+Y2VydGlmaWNhdGVfaXNzdWVyX3Byb2dyYW0gPT0gTlVMTCApICYmIAorKyAg aWYgKCAoIHNlcnZlcl9jb250ZXh0LT5jZXJ0aWZpY2F0ZV9pc3N1ZXJfcHJvZ3JhbSA9PSBOVUxM ICkgJiYKKyAgICAgICAgKCBzZXJ2ZXJfY29udGV4dC0+Y2VydGlmaWNhdGVfaXNzdWVyX2NlcnQg PT0gTlVMTCApICkgeworICAgICB2ZXJyb3JfcHV0X3N0cmluZygiQ0EgY29uZmlnIGVycm9yOiBu ZWl0aGVyIGlzc3VlciBvciBwcm9ncmFtIGRlZmluZWQiKTsKKyAgICAgZ290byBlcnJvcjsKKyAg IH0KKyAKKy0gIGlmICggKCBzZXJ2ZXJfY29udGV4dC0+Y2VydGlmaWNhdGVfaXNzdWVyX2NlcnQg IT0gTlVMTCApICYmIAorKyAgaWYgKCAoIHNlcnZlcl9jb250ZXh0LT5jZXJ0aWZpY2F0ZV9pc3N1 ZXJfY2VydCAhPSBOVUxMICkgJiYKKyAgICAgICAgKCBzZXJ2ZXJfY29udGV4dC0+Y2VydGlmaWNh dGVfaXNzdWVyX2tleSA9PSBOVUxMICkgKSB7CisgICAgIHZlcnJvcl9wdXRfc3RyaW5nKCJDQSBj b25maWcgZXJyb3I6IGlzc3VlciBkZWZpbmVkIGJ1dCBubyBrZXkgZGVmaW5lZCIpOworICAgICBn b3RvIGVycm9yOworICAgfQorIAorLSAgaWYgKCAoIHNlcnZlcl9jb250ZXh0LT5jZXJ0aWZpY2F0 ZV9pc3N1ZXJfY2VydCAhPSBOVUxMICkgJiYgCisrICBpZiAoICggc2VydmVyX2NvbnRleHQtPmNl cnRpZmljYXRlX2lzc3Vlcl9jZXJ0ICE9IE5VTEwgKSAmJgorICAgICAgICAoIHNlcnZlcl9jb250 ZXh0LT5jZXJ0aWZpY2F0ZV9pc3N1ZXJfa2V5ICE9IE5VTEwgKSApIHsKKyAgICAgbXlwcm94eV9k ZWJ1ZygiVXNpbmcgaW50ZXJuYWwgb3BlbnNzbC9nZW5lcmF0ZV9jZXJ0aWZpY2F0ZSgpIGNvZGUi KTsKKyAKKy0gICAgaWYgKCBnZW5lcmF0ZV9jZXJ0aWZpY2F0ZSggcmVxLCAmY2VydCwgcGtleSwg CistCQkJICAgICAgIGNsaWVudF9yZXF1ZXN0LCBzZXJ2ZXJfY29udGV4dCApICkgeworKyAgICBp ZiAoIGdlbmVyYXRlX2NlcnRpZmljYXRlKCByZXEsICZjZXJ0LCBwa2V5LAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjbGllbnRfcmVxdWVzdCwgc2VydmVyX2NvbnRleHQgKSApIHsK KyAgICAgICB2ZXJyb3JfcHV0X3N0cmluZygiSW50ZXJuYWwgY2VydCBnZW5lcmF0aW9uIGZhaWxl ZCIpOworICAgICAgIGdvdG8gZXJyb3I7CisgICAgIH0KK0BAIC0xMjgzLDE2ICsxMjgzLDE2IEBA IGludCBpc19jZXJ0aWZpY2F0ZV9hdXRob3JpdHlfY29uZmlndXJlZChteXByb3h5X3NlcnZlcl9j b250ZXh0X3QKKyB9CisgCisgCistdm9pZCBnZXRfY2VydGlmaWNhdGVfYXV0aG9yaXR5KG15cHJv eHlfc29ja2V0X2F0dHJzX3QgICAqc2VydmVyX2F0dHJzLCAKKy0JCQkgICAgICAgbXlwcm94eV9j cmVkc190ICAgICAgICAgICpjcmVkcywKKy0JCQkgICAgICAgbXlwcm94eV9yZXF1ZXN0X3QgICAg ICAgICpjbGllbnRfcmVxdWVzdCwKKy0JCQkgICAgICAgbXlwcm94eV9yZXNwb25zZV90ICAgICAg ICpyZXNwb25zZSwKKy0JCQkgICAgICAgbXlwcm94eV9zZXJ2ZXJfY29udGV4dF90ICpzZXJ2ZXJf Y29udGV4dCkgeworK3ZvaWQgZ2V0X2NlcnRpZmljYXRlX2F1dGhvcml0eShteXByb3h5X3NvY2tl dF9hdHRyc190ICAgKnNlcnZlcl9hdHRycywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbXlwcm94eV9jcmVkc190ICAgICAgICAgICpjcmVkcywKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbXlwcm94eV9yZXF1ZXN0X3QgICAgICAgICpjbGllbnRfcmVxdWVzdCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlwcm94eV9yZXNwb25zZV90ICAgICAgICpy ZXNwb25zZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlwcm94eV9zZXJ2ZXJf Y29udGV4dF90ICpzZXJ2ZXJfY29udGV4dCkgeworIAorICAgdW5zaWduZWQgY2hhciAqIGlucHV0 X2J1ZmZlciA9IE5VTEw7CistICBzaXplX3QJICBpbnB1dF9idWZmZXJfbGVuZ3RoOworLSAgdW5z aWduZWQgY2hhcgkqIG91dHB1dF9idWZmZXIgPSBOVUxMOworLSAgaW50CQkgIG91dHB1dF9idWZm ZXJfbGVuZ3RoOworKyAgc2l6ZV90ICAgICAgICAgIGlucHV0X2J1ZmZlcl9sZW5ndGg7CisrICB1 bnNpZ25lZCBjaGFyICogb3V0cHV0X2J1ZmZlciA9IE5VTEw7CisrICBpbnQgICAgICAgICAgICAg b3V0cHV0X2J1ZmZlcl9sZW5ndGg7CisgCisgICBteXByb3h5X2RlYnVnKCJDYWxsaW5nIENBIEV4 dGVuc2lvbnMiKTsKKyAKK0BAIC0xMzAwLDggKzEzMDAsOCBAQCB2b2lkIGdldF9jZXJ0aWZpY2F0 ZV9hdXRob3JpdHkobXlwcm94eV9zb2NrZXRfYXR0cnNfdCAgICpzZXJ2ZXJfYXR0cnMsCisgCisg ICB2ZXJyb3JfY2xlYXIoKTsKKyAKKy0gIGlmICggcmVhZF9jZXJ0X3JlcXVlc3QoIHNlcnZlcl9h dHRycy0+Z3NpX3NvY2tldCwgCistCQkJICAmaW5wdXRfYnVmZmVyLCAmaW5wdXRfYnVmZmVyX2xl bmd0aCkgKSB7CisrICBpZiAoIHJlYWRfY2VydF9yZXF1ZXN0KCBzZXJ2ZXJfYXR0cnMtPmdzaV9z b2NrZXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5wdXRfYnVmZmVyLCAmaW5wdXRf YnVmZmVyX2xlbmd0aCkgKSB7CisgICAgIHZlcnJvcl9wdXRfc3RyaW5nKCJVbmFibGUgdG8gcmVh ZCByZXF1ZXN0IGZyb20gY2xpZW50Iik7CisgICAgIG15cHJveHlfbG9nX3ZlcnJvcigpOworICAg ICByZXNwb25zZS0+ZXJyb3Jfc3RyaW5nID0gXAorQEAgLTEzMTAsOCArMTMxMCw4IEBAIHZvaWQg Z2V0X2NlcnRpZmljYXRlX2F1dGhvcml0eShteXByb3h5X3NvY2tldF9hdHRyc190ICAgKnNlcnZl cl9hdHRycywKKyAgIH0KKyAKKyAgIGlmICggaGFuZGxlX2NlcnRpZmljYXRlKCBpbnB1dF9idWZm ZXIsIGlucHV0X2J1ZmZlcl9sZW5ndGgsCistCQkJICAgJm91dHB1dF9idWZmZXIsICZvdXRwdXRf YnVmZmVyX2xlbmd0aCwKKy0JCQkgICBjbGllbnRfcmVxdWVzdCwgc2VydmVyX2NvbnRleHQgKSAp IHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0X2J1ZmZlciwgJm91dHB1dF9i dWZmZXJfbGVuZ3RoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9yZXF1ZXN0 LCBzZXJ2ZXJfY29udGV4dCApICkgeworICAgICB2ZXJyb3JfcHV0X3N0cmluZygiQ0EgZmFpbGVk IHRvIGdlbmVyYXRlIGNlcnRpZmljYXRlIik7CisgICAgIHJlc3BvbnNlLT5lcnJvcl9zdHJpbmcg PSBzdHJkdXAoIkNlcnRpZmljYXRlIGdlbmVyYXRpb24gZmFpbHVyZS5cbiIpOworICAgICBteXBy b3h5X2xvZ192ZXJyb3IoKTsKK0BAIC0xMzE5LDcgKzEzMTksNyBAQCB2b2lkIGdldF9jZXJ0aWZp Y2F0ZV9hdXRob3JpdHkobXlwcm94eV9zb2NrZXRfYXR0cnNfdCAgICpzZXJ2ZXJfYXR0cnMsCisg ICB9CisgCisgICBpZiAoIHNlbmRfY2VydGlmaWNhdGUoIHNlcnZlcl9hdHRycy0+Z3NpX3NvY2tl dCwKKy0JCQkgb3V0cHV0X2J1ZmZlciwgb3V0cHV0X2J1ZmZlcl9sZW5ndGggKSApIHsKKysgICAg ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2J1ZmZlciwgb3V0cHV0X2J1ZmZlcl9sZW5ndGgg KSApIHsKKyAgICAgbXlwcm94eV9sb2dfdmVycm9yKCk7CisgICAgIG15cHJveHlfZGVidWcoIkZh aWx1cmUgdG8gc2VuZCByZXNwb25zZSB0byBjbGllbnQhIik7CisgICAgIGdvdG8gZXJyb3I7Citk aWZmIC0tZ2l0IGEvbXlwcm94eS9zb3VyY2UvZ3NzYXBpLmMgYi9teXByb3h5L3NvdXJjZS9nc3Nh cGkuYworaW5kZXggZTE3NjM5MmU0Li43MGE2ZDI3ZTQgMTAwNjQ0CistLS0gYS9teXByb3h5L3Nv dXJjZS9nc3NhcGkuYworKysrIGIvbXlwcm94eS9zb3VyY2UvZ3NzYXBpLmMKK0BAIC00LDcgKzQs NyBAQAorICAqIFJvYiBTaWVtYm9yc2tpIChTQVNMIHYyIENvbnZlcnNpb24pCisgICogJElkOiBn c3NhcGkuYyx2IDEuOSAyMDA3LzA5LzI3IDE1OjQwOjU0IGJhc25leSBFeHAgJAorICAqLworLS8q IAorKy8qCisgICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDMgQ2FybmVnaWUgTWVsbG9uIFVuaXZl cnNpdHkuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogUmVkaXN0cmlidXRpb24gYW5k IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CitAQCAtMTIs NyArMTIsNyBAQAorICAqIGFyZSBtZXQ6CisgICoKKyAgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLSAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4g CisrICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyLgorICAqCisgICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgKiAgICBub3RpY2UsIHRoaXMg bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KK0BAIC0y Miw3ICsyMiw3IEBACisgICogMy4gVGhlIG5hbWUgIkNhcm5lZ2llIE1lbGxvbiBVbml2ZXJzaXR5 IiBtdXN0IG5vdCBiZSB1c2VkIHRvCisgICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz IGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKyAgKiAgICBwcmlvciB3cml0dGVu IHBlcm1pc3Npb24uIEZvciBwZXJtaXNzaW9uIG9yIGFueSBvdGhlciBsZWdhbAorLSAqICAgIGRl dGFpbHMsIHBsZWFzZSBjb250YWN0ICAKKysgKiAgICBkZXRhaWxzLCBwbGVhc2UgY29udGFjdAor ICAqICAgICAgT2ZmaWNlIG9mIFRlY2hub2xvZ3kgVHJhbnNmZXIKKyAgKiAgICAgIENhcm5lZ2ll IE1lbGxvbiBVbml2ZXJzaXR5CisgICogICAgICA1MDAwIEZvcmJlcyBBdmVudWUKK0BAIC05Niwy NSArOTYsMjUgQEAgZXh0ZXJuIGdzc19PSUQgZ3NzX250X3NlcnZpY2VfbmFtZTsKKyAjaWZkZWYg V0FOVF9LRVJCRVJPUzVfM0RFUworIC8qIENoZWNrIGlmIEN5YmVyU2FmZSBmbGFnIGlzIGRlZmlu ZWQgKi8KKyAjaWZkZWYgQ1NGX0dTU19DX0RFUzNfRkxBRworLSNkZWZpbmUgSzVfTUFYX1NTRgkx MTIKKysjZGVmaW5lIEs1X01BWF9TU0YgICAgICAxMTIKKyAjZW5kaWYKKyAKKyAvKiBIZWltZGFs IGFuZCBNSVQgdXNlIHRoZSBmb2xsb3dpbmcgKi8KKyAjaWZkZWYgR1NTX0tSQjVfQ09ORl9DX1FP UF9ERVMzX0tECistI2RlZmluZSBLNV9NQVhfU1NGCTExMgorKyNkZWZpbmUgSzVfTUFYX1NTRiAg ICAgIDExMgorICNlbmRpZgorIAorICNlbmRpZgorIAorICNpZm5kZWYgSzVfTUFYX1NTRgorIC8q IEFsbCBLZXJiZXJvcyBpbXBsZW1lbnRhdGlvbnMgc3VwcG9ydCBERVMgKi8KKy0jZGVmaW5lIEs1 X01BWF9TU0YJNTYKKysjZGVmaW5lIEs1X01BWF9TU0YgICAgICA1NgorICNlbmRpZgorIAorIC8q IEdTU0FQSSBTQVNMIE1lY2hhbmlzbSBieSBMZWlmIEpvaGFuc3NvbiA8bGVpZmpAbWF0ZW1hdGlr LnN1LnNlPgorICAqIGluc3BpcmVkIGJ5IHRoZSBrZXJiZXJvcyBtZWNoYW5pc20gYW5kIHRoZSBn c3NhcGlfc2VydmVyIGFuZAorICAqIGdzc2FwaV9jbGllbnQgZnJvbSB0aGUgaGVpbWRhbCBkaXN0 cmlidXRpb24gYnkgQXNzYXIgV2VzdGVybHVuZAorLSAqIDxhc3NhckBzaWNzLnNlPiBhbmQgSm9o YW4gRGFuaWVsc3NvbiA8am9kYUBwZGMua3RoLnNlPi4gCisrICogPGFzc2FyQHNpY3Muc2U+IGFu ZCBKb2hhbiBEYW5pZWxzc29uIDxqb2RhQHBkYy5rdGguc2U+LgorICAqIFNlZSB0aGUgY29uZmln dXJlLmluIGZpbGUgZm9yIGRldGFpbHMgb24gZGVwZW5kZW5jaWVzLgorICAqCisgICogSW1wb3J0 YW50IGNvbnRyaWJ1dGlvbnMgZnJvbSBTYW0gSGFydG1hbiA8aGFydG1hbnNAZnVuZHN4cHJlc3Mu Y29tPi4KK0BAIC0xMjYsMTggKzEyNiwxOCBAQCBleHRlcm4gZ3NzX09JRCBnc3NfbnRfc2Vydmlj ZV9uYW1lOworIAorIHR5cGVkZWYgc3RydWN0IGNvbnRleHQgeworICAgICBpbnQgc3RhdGU7Cist ICAgIAorKworICAgICBnc3NfY3R4X2lkX3QgZ3NzX2N0eDsKKyAgICAgZ3NzX25hbWVfdCAgIGNs aWVudF9uYW1lOworICAgICBnc3NfbmFtZV90ICAgc2VydmVyX25hbWU7CisgICAgIGdzc19jcmVk X2lkX3Qgc2VydmVyX2NyZWRzOworICAgICBzYXNsX3NzZl90IGxpbWl0c3NmLCByZXF1aXJlc3Nm OyAvKiBhcHBsaWNhdGlvbiBkZWZpbmVkIGJvdW5kcywgZm9yIHRoZQorLQkJCQkJc2VydmVyICov CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlciAqLworICAg ICBjb25zdCBzYXNsX3V0aWxzX3QgKnV0aWxzOworLSAgICAKKysKKyAgICAgLyogbGF5ZXJzIGJ1 ZmZlcmluZyAqLworICAgICBkZWNvZGVfY29udGV4dF90IGRlY29kZV9jb250ZXh0OworLSAgICAK KysKKyAgICAgY2hhciAqZW5jb2RlX2J1ZjsgICAgICAgICAgICAgICAgLyogRm9yIGVuY29kaW5n L2RlY29kaW5nIG1lbSBtYW5hZ2VtZW50ICovCisgICAgIGNoYXIgKmRlY29kZV9idWY7CisgICAg IGNoYXIgKmRlY29kZV9vbmNlX2J1ZjsKK0BAIC0xNDUsMTAgKzE0NSwxMCBAQCB0eXBlZGVmIHN0 cnVjdCBjb250ZXh0IHsKKyAgICAgdW5zaWduZWQgZGVjb2RlX2J1Zl9sZW47CisgICAgIHVuc2ln bmVkIGRlY29kZV9vbmNlX2J1Zl9sZW47CisgICAgIGJ1ZmZlcl9pbmZvX3QgKmVuY19pbl9idWY7 CistICAgIAorKworICAgICBjaGFyICpvdXRfYnVmOyAgICAgICAgICAgICAgICAgICAvKiBwZXIt c3RlcCBtZW0gbWFuYWdlbWVudCAqLworLSAgICB1bnNpZ25lZCBvdXRfYnVmX2xlbjsgICAgCist ICAgIAorKyAgICB1bnNpZ25lZCBvdXRfYnVmX2xlbjsKKysKKyAgICAgY2hhciAqYXV0aGlkOyAv KiBob2xkIHRoZSBhdXRoaWQgYmV0d2VlbiBzdGVwcyAtIHNlcnZlciAqLworICAgICBjb25zdCBj aGFyICp1c2VyOyAgIC8qIGhvbGQgdGhlIHVzZXJpZCBiZXR3ZWVuIHN0ZXBzIC0gY2xpZW50ICov CisgfSBjb250ZXh0X3Q7CitAQCAtMjEwLDcgKzIxMCw3IEBAIHN0YXRpYyBPTV91aW50MzIgKCpw X2tyYjVfZ3NzX3dyYXBfc2l6ZV9saW1pdCkKKyAgICAgKE9NX3VpbnQzMiAqLCBnc3NfY3R4X2lk X3QsIGludCwgZ3NzX3FvcF90LCBPTV91aW50MzIsIE9NX3VpbnQzMiAqKTsKKyBzdGF0aWMgT01f dWludDMyICgqcF9rcmI1X2dzc19hZGRfY3JlZCkKKyAgICAgKE9NX3VpbnQzMiAqLCBnc3NfY3Jl ZF9pZF90LCBnc3NfbmFtZV90LCBnc3NfT0lELCAgZ3NzX2NyZWRfdXNhZ2VfdCwKKy0gICAgIE9N X3VpbnQzMiwgT01fdWludDMyLCBnc3NfY3JlZF9pZF90ICosIGdzc19PSURfc2V0ICosICBPTV91 aW50MzIgKiwgCisrICAgICBPTV91aW50MzIsIE9NX3VpbnQzMiwgZ3NzX2NyZWRfaWRfdCAqLCBn c3NfT0lEX3NldCAqLCAgT01fdWludDMyICosCisgICAgICBPTV91aW50MzIgKik7Cisgc3RhdGlj IE9NX3VpbnQzMiAoKnBfa3JiNV9nc3Nfc2VhbCkKKyAgICAgIChPTV91aW50MzIgKiwgZ3NzX2N0 eF9pZF90LCBpbnQsIGludCwgZ3NzX2J1ZmZlcl90LCBpbnQgKiwKK0BAIC0yMjYsMTUgKzIyNiwx NSBAQCBzYXNsX2dzc19saWJfaW5pdChjb25zdCBzYXNsX3V0aWxzX3QgKnV0aWxzKQorICAgICBp ZiAoaF9rcmI1bGliKSByZXR1cm4gU0FTTF9PSzsKKyAKKyAgICAgaWYgKChoX2tyYjVsaWIgPSBk bG9wZW4oS1JCNV9MSUJfTkFNRSwgUlRMRF9MQVpZKSkgPT0gTlVMTCkgeworLQllcnJtc2cgPSAi RmFpbGVkIHRvIG9wZW4gR1NTQVBJIGxpYnJhcnkiOworLQlnb3RvIGVycm9yOworKyAgICAgICAg ZXJybXNnID0gIkZhaWxlZCB0byBvcGVuIEdTU0FQSSBsaWJyYXJ5IjsKKysgICAgICAgIGdvdG8g ZXJyb3I7CisgICAgIH0KKyAKKy0jZGVmaW5lIFNBU0xfR1NTX0RMU1lNKHgpCQkJCQkJXAorLSAg ICBwX2tyYjVfICMjIHggPSBkbHN5bShoX2tyYjVsaWIsICN4KTsJCQkJXAorLSAgICBpZiAocF9r cmI1XyAjIyB4ID09IE5VTEwpIHsJCQkJCQlcCistCWVycm1zZyA9ICJGYWlsZWQgdG8gZGxzeW0o IiAjeCAiKSI7CQkJCVwKKy0JZ290byBlcnJvcjsJCQkJCQkJXAorKyNkZWZpbmUgU0FTTF9HU1Nf RExTWU0oeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KysgICAgcF9rcmI1XyAjIyB4ID0gZGxzeW0oaF9rcmI1bGliLCAjeCk7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisrICAgIGlmIChwX2tyYjVfICMjIHggPT0gTlVMTCkgeyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgZXJybXNnID0g IkZhaWxlZCB0byBkbHN5bSgiICN4ICIpIjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KysgICAgICAgIGdvdG8gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgIH0KKyAKKyAgICAgU0FTTF9HU1NfRExTWU0oZ3NzX2Fj Y2VwdF9zZWNfY29udGV4dCk7CitAQCAtMjYxLDI0ICsyNjEsMjQgQEAgc2FzbF9nc3NfbGliX2lu aXQoY29uc3Qgc2FzbF91dGlsc190ICp1dGlscykKKyAgZXJyb3I6CisgICAgIGRsZXJyID0gZGxl cnJvcigpOworICAgICBpZiAoZGxlcnIpIHsKKy0JY2hhciAqc2FzbGVycjsKKy0Jc2FzbGVyciA9 IG1hbGxvYyhzdHJsZW4oZXJybXNnKStzdHJsZW4oZGxlcnIpKzMpOworLQlzcHJpbnRmKHNhc2xl cnIsICIlczogJXMiLCBlcnJtc2csIGRsZXJyKTsKKy0JU0VURVJST1IodXRpbHMsIHNhc2xlcnIp OworLQlmcmVlKHNhc2xlcnIpOworKyAgICAgICAgY2hhciAqc2FzbGVycjsKKysgICAgICAgIHNh c2xlcnIgPSBtYWxsb2Moc3RybGVuKGVycm1zZykrc3RybGVuKGRsZXJyKSszKTsKKysgICAgICAg IHNwcmludGYoc2FzbGVyciwgIiVzOiAlcyIsIGVycm1zZywgZGxlcnIpOworKyAgICAgICAgU0VU RVJST1IodXRpbHMsIHNhc2xlcnIpOworKyAgICAgICAgZnJlZShzYXNsZXJyKTsKKyAgICAgfSBl bHNlIHsKKy0JU0VURVJST1IodXRpbHMsIGVycm1zZyk7CisrICAgICAgICBTRVRFUlJPUih1dGls cywgZXJybXNnKTsKKyAgICAgfQorICAgICBpZiAoaF9rcmI1bGliKSB7CistCWRsY2xvc2UoaF9r cmI1bGliKTsKKy0JaF9rcmI1bGliID0gTlVMTDsKKysgICAgICAgIGRsY2xvc2UoaF9rcmI1bGli KTsKKysgICAgICAgIGhfa3JiNWxpYiA9IE5VTEw7CisgICAgIH0KKyAgICAgcmV0dXJuIFNBU0xf RkFJTDsKKyB9CisgCisgc3RhdGljIHZvaWQKKyBzYXNsX2dzc19zZXRlcnJvcl8oY29uc3Qgc2Fz bF91dGlsc190ICp1dGlscywgT01fdWludDMyIG1haiwgT01fdWludDMyIG1pbiwKKy0JaW50IGxv Z29ubHkpCisrICAgICAgICBpbnQgbG9nb25seSkKKyB7CisgICAgIE9NX3VpbnQzMiBtYWpfc3Rh dCwgbWluX3N0YXQ7CisgICAgIGdzc19idWZmZXJfZGVzYyBtc2c7CitAQCAtMjg4LDExNiArMjg4 LDExNiBAQCBzYXNsX2dzc19zZXRlcnJvcl8oY29uc3Qgc2FzbF91dGlsc190ICp1dGlscywgT01f dWludDMyIG1haiwgT01fdWludDMyIG1pbiwKKyAgICAgc2l6ZV90IGxlbjsKKyAgICAgdW5zaWdu ZWQgaW50IGN1cmxlbiA9IDA7CisgICAgIGNvbnN0IGNoYXIgcHJlZml4W10gPSAiR1NTQVBJIEVy cm9yOiAiOworLSAgICAKKysKKyAgICAgaWYoIXV0aWxzKSByZXR1cm47CisgCisgICAgIGlmIChz YXNsX2dzc19saWJfaW5pdCh1dGlscykgIT0gU0FTTF9PSykgcmV0dXJuOworLSAgICAKKysKKyAg ICAgbGVuID0gc2l6ZW9mKHByZWZpeCk7CisgICAgIHJldCA9IF9wbHVnX2J1Zl9hbGxvYyh1dGls cywgJm91dCwgJmN1cmxlbiwgMjU2KTsKKyAgICAgaWYocmV0ICE9IFNBU0xfT0spIHJldHVybjsK Ky0gICAgCisrCisgICAgIHN0cmNweShvdXQsIHByZWZpeCk7CistICAgIAorKworICAgICBtc2df Y3R4ID0gMDsKKyAgICAgd2hpbGUgKDEpIHsKKy0JbWFqX3N0YXQgPSAoKnBfa3JiNV9nc3NfZGlz cGxheV9zdGF0dXMpKCZtaW5fc3RhdCwgbWFqLAorLQkJCQkgICAgICBHU1NfQ19HU1NfQ09ERSwg R1NTX0NfTlVMTF9PSUQsCistCQkJCSAgICAgICZtc2dfY3R4LCAmbXNnKTsKKy0JaWYoR1NTX0VS Uk9SKG1hal9zdGF0KSkgeworLQkgICAgaWYgKGxvZ29ubHkpIHsKKy0JCXV0aWxzLT5sb2codXRp bHMtPmNvbm4sIFNBU0xfTE9HX0ZBSUwsCistCQkJIkdTU0FQSSBGYWlsdXJlOiAoY291bGQgbm90 IGdldCBtYWpvciBlcnJvciBtZXNzYWdlKSIpOworLQkgICAgfSBlbHNlIHsKKy0JCXV0aWxzLT5z ZXRlcnJvcih1dGlscy0+Y29ubiwgMCwKKy0JCQkJIkdTU0FQSSBGYWlsdXJlICIKKy0JCQkJIihj b3VsZCBub3QgZ2V0IG1ham9yIGVycm9yIG1lc3NhZ2UpIik7CistCSAgICB9CistCSAgICB1dGls cy0+ZnJlZShvdXQpOworLQkgICAgcmV0dXJuOworLQl9CistCQorLQlsZW4gKz0gbGVuICsgbXNn Lmxlbmd0aDsKKy0JcmV0ID0gX3BsdWdfYnVmX2FsbG9jKHV0aWxzLCAmb3V0LCAmY3VybGVuLCBs ZW4pOworLQkKKy0JaWYocmV0ICE9IFNBU0xfT0spIHsKKy0JICAgIHV0aWxzLT5mcmVlKG91dCk7 CistCSAgICByZXR1cm47CistCX0KKy0JCistCXN0cmNhdChvdXQsIG1zZy52YWx1ZSk7CistCQor LQkoKnBfa3JiNV9nc3NfcmVsZWFzZV9idWZmZXIpKCZtaW5fc3RhdCwgJm1zZyk7CistCQorLQlp ZiAoIW1zZ19jdHgpCistCSAgICBicmVhazsKKysgICAgICAgIG1hal9zdGF0ID0gKCpwX2tyYjVf Z3NzX2Rpc3BsYXlfc3RhdHVzKSgmbWluX3N0YXQsIG1haiwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdTU19DX0dTU19DT0RFLCBHU1NfQ19OVUxMX09JRCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtc2dfY3R4LCAmbXNnKTsKKysgICAg ICAgIGlmKEdTU19FUlJPUihtYWpfc3RhdCkpIHsKKysgICAgICAgICAgICBpZiAobG9nb25seSkg eworKyAgICAgICAgICAgICAgICB1dGlscy0+bG9nKHV0aWxzLT5jb25uLCBTQVNMX0xPR19GQUlM LAorKyAgICAgICAgICAgICAgICAgICAgICAgICJHU1NBUEkgRmFpbHVyZTogKGNvdWxkIG5vdCBn ZXQgbWFqb3IgZXJyb3IgbWVzc2FnZSkiKTsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAg ICAgICAgICAgICB1dGlscy0+c2V0ZXJyb3IodXRpbHMtPmNvbm4sIDAsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiR1NTQVBJIEZhaWx1cmUgIgorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIihjb3VsZCBub3QgZ2V0IG1ham9yIGVycm9yIG1lc3NhZ2UpIik7Cisr ICAgICAgICAgICAgfQorKyAgICAgICAgICAgIHV0aWxzLT5mcmVlKG91dCk7CisrICAgICAgICAg ICAgcmV0dXJuOworKyAgICAgICAgfQorKworKyAgICAgICAgbGVuICs9IGxlbiArIG1zZy5sZW5n dGg7CisrICAgICAgICByZXQgPSBfcGx1Z19idWZfYWxsb2ModXRpbHMsICZvdXQsICZjdXJsZW4s IGxlbik7CisrCisrICAgICAgICBpZihyZXQgIT0gU0FTTF9PSykgeworKyAgICAgICAgICAgIHV0 aWxzLT5mcmVlKG91dCk7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKworKyAg ICAgICAgc3RyY2F0KG91dCwgbXNnLnZhbHVlKTsKKysKKysgICAgICAgICgqcF9rcmI1X2dzc19y ZWxlYXNlX2J1ZmZlcikoJm1pbl9zdGF0LCAmbXNnKTsKKysKKysgICAgICAgIGlmICghbXNnX2N0 eCkKKysgICAgICAgICAgICBicmVhazsKKyAgICAgfQorLSAgICAKKysKKyAgICAgLyogTm93IGdl dCB0aGUgbWlub3Igc3RhdHVzICovCistICAgIAorKworICAgICBsZW4gKz0gMjsKKyAgICAgcmV0 ID0gX3BsdWdfYnVmX2FsbG9jKHV0aWxzLCAmb3V0LCAmY3VybGVuLCBsZW4pOworICAgICBpZihy ZXQgIT0gU0FTTF9PSykgeworLQl1dGlscy0+ZnJlZShvdXQpOworLQlyZXR1cm47CisrICAgICAg ICB1dGlscy0+ZnJlZShvdXQpOworKyAgICAgICAgcmV0dXJuOworICAgICB9CistICAgIAorKwor ICAgICBzdHJjYXQob3V0LCAiICgiKTsKKy0gICAgCisrCisgICAgIG1zZ19jdHggPSAwOworICAg ICB3aGlsZSAoMSkgeworLQltYWpfc3RhdCA9ICgqcF9rcmI1X2dzc19kaXNwbGF5X3N0YXR1cyko Jm1pbl9zdGF0LCBtaW4sCistCQkJCSAgICAgIEdTU19DX01FQ0hfQ09ERSwgR1NTX0NfTlVMTF9P SUQsCistCQkJCSAgICAgICZtc2dfY3R4LCAmbXNnKTsKKy0JaWYoR1NTX0VSUk9SKG1hal9zdGF0 KSkgeworLQkgICAgaWYgKGxvZ29ubHkpIHsKKy0JCXV0aWxzLT5sb2codXRpbHMtPmNvbm4sIFNB U0xfTE9HX0ZBSUwsCistCQkJIkdTU0FQSSBGYWlsdXJlOiAoY291bGQgbm90IGdldCBtaW5vciBl cnJvciBtZXNzYWdlKSIpOworLQkgICAgfSBlbHNlIHsKKy0JCXV0aWxzLT5zZXRlcnJvcih1dGls cy0+Y29ubiwgMCwKKy0JCQkJIkdTU0FQSSBGYWlsdXJlICIKKy0JCQkJIihjb3VsZCBub3QgZ2V0 IG1pbm9yIGVycm9yIG1lc3NhZ2UpIik7CistCSAgICB9CistCSAgICB1dGlscy0+ZnJlZShvdXQp OworLQkgICAgcmV0dXJuOworLQl9CistCQorLQlsZW4gKz0gbGVuICsgbXNnLmxlbmd0aDsKKy0J cmV0ID0gX3BsdWdfYnVmX2FsbG9jKHV0aWxzLCAmb3V0LCAmY3VybGVuLCBsZW4pOworLQkKKy0J aWYocmV0ICE9IFNBU0xfT0spIHsKKy0JICAgIHV0aWxzLT5mcmVlKG91dCk7CistCSAgICByZXR1 cm47CistCX0KKy0JCistCXN0cmNhdChvdXQsIG1zZy52YWx1ZSk7CistCQorLQkoKnBfa3JiNV9n c3NfcmVsZWFzZV9idWZmZXIpKCZtaW5fc3RhdCwgJm1zZyk7CistCQorLQlpZiAoIW1zZ19jdHgp CistCSAgICBicmVhazsKKysgICAgICAgIG1hal9zdGF0ID0gKCpwX2tyYjVfZ3NzX2Rpc3BsYXlf c3RhdHVzKSgmbWluX3N0YXQsIG1pbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdTU19DX01FQ0hfQ09ERSwgR1NTX0NfTlVMTF9PSUQsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmbXNnX2N0eCwgJm1zZyk7CisrICAgICAgICBpZihHU1Nf RVJST1IobWFqX3N0YXQpKSB7CisrICAgICAgICAgICAgaWYgKGxvZ29ubHkpIHsKKysgICAgICAg ICAgICAgICAgdXRpbHMtPmxvZyh1dGlscy0+Y29ubiwgU0FTTF9MT0dfRkFJTCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAiR1NTQVBJIEZhaWx1cmU6IChjb3VsZCBub3QgZ2V0IG1pbm9yIGVy cm9yIG1lc3NhZ2UpIik7CisrICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAg dXRpbHMtPnNldGVycm9yKHV0aWxzLT5jb25uLCAwLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIkdTU0FQSSBGYWlsdXJlICIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICIoY291bGQgbm90IGdldCBtaW5vciBlcnJvciBtZXNzYWdlKSIpOworKyAgICAgICAgICAg IH0KKysgICAgICAgICAgICB1dGlscy0+ZnJlZShvdXQpOworKyAgICAgICAgICAgIHJldHVybjsK KysgICAgICAgIH0KKysKKysgICAgICAgIGxlbiArPSBsZW4gKyBtc2cubGVuZ3RoOworKyAgICAg ICAgcmV0ID0gX3BsdWdfYnVmX2FsbG9jKHV0aWxzLCAmb3V0LCAmY3VybGVuLCBsZW4pOworKwor KyAgICAgICAgaWYocmV0ICE9IFNBU0xfT0spIHsKKysgICAgICAgICAgICB1dGlscy0+ZnJlZShv dXQpOworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysKKysgICAgICAgIHN0cmNh dChvdXQsIG1zZy52YWx1ZSk7CisrCisrICAgICAgICAoKnBfa3JiNV9nc3NfcmVsZWFzZV9idWZm ZXIpKCZtaW5fc3RhdCwgJm1zZyk7CisrCisrICAgICAgICBpZiAoIW1zZ19jdHgpCisrICAgICAg ICAgICAgYnJlYWs7CisgICAgIH0KKy0gICAgCisrCisgICAgIGxlbiArPSAxOworICAgICByZXQg PSBfcGx1Z19idWZfYWxsb2ModXRpbHMsICZvdXQsICZjdXJsZW4sIGxlbik7CisgICAgIGlmKHJl dCAhPSBTQVNMX09LKSB7CistCXV0aWxzLT5mcmVlKG91dCk7CistCXJldHVybjsKKysgICAgICAg IHV0aWxzLT5mcmVlKG91dCk7CisrICAgICAgICByZXR1cm47CisgICAgIH0KKy0gICAgCisrCisg ICAgIHN0cmNhdChvdXQsICIpIik7CistICAgIAorKworICAgICBpZiAobG9nb25seSkgeworLQl1 dGlscy0+bG9nKHV0aWxzLT5jb25uLCBTQVNMX0xPR19GQUlMLCAiJXMiLCBvdXQpOworKyAgICAg ICAgdXRpbHMtPmxvZyh1dGlscy0+Y29ubiwgU0FTTF9MT0dfRkFJTCwgIiVzIiwgb3V0KTsKKyAg ICAgfSBlbHNlIHsKKy0JdXRpbHMtPnNldGVycm9yKHV0aWxzLT5jb25uLCAwLCAiJXMiLCBvdXQp OworKyAgICAgICAgdXRpbHMtPnNldGVycm9yKHV0aWxzLT5jb25uLCAwLCAiJXMiLCBvdXQpOwor ICAgICB9CisgICAgIHV0aWxzLT5mcmVlKG91dCk7CisgfQorIAorLXN0YXRpYyBpbnQgCisrc3Rh dGljIGludAorIHNhc2xfZ3NzX2VuY29kZSh2b2lkICpjb250ZXh0LCBjb25zdCBzdHJ1Y3QgaW92 ZWMgKmludmVjLCB1bnNpZ25lZCBudW1pb3YsCistCQljb25zdCBjaGFyICoqb3V0cHV0LCB1bnNp Z25lZCAqb3V0cHV0bGVuLCBpbnQgcHJpdmFjeSkKKysgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqKm91dHB1dCwgdW5zaWduZWQgKm91dHB1dGxlbiwgaW50IHByaXZhY3kpCisgeworICAgICBj b250ZXh0X3QgKnRleHQgPSAoY29udGV4dF90ICopY29udGV4dDsKKyAgICAgT01fdWludDMyIG1h al9zdGF0LCBtaW5fc3RhdDsKK0BAIC00MDUsMjQ0ICs0MDUsMjQ0IEBAIHNhc2xfZ3NzX2VuY29k ZSh2b2lkICpjb250ZXh0LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmludmVjLCB1bnNpZ25lZCBudW1p b3YsCisgICAgIGdzc19idWZmZXJfZGVzYyByZWFsX2lucHV0X3Rva2VuLCByZWFsX291dHB1dF90 b2tlbjsKKyAgICAgaW50IHJldDsKKyAgICAgc3RydWN0IGJ1ZmZlcl9pbmZvICppbmJsb2IsIGJ1 ZmluZm87CistICAgIAorKworICAgICBpZighb3V0cHV0KSByZXR1cm4gU0FTTF9CQURQQVJBTTsK Ky0gICAgCisrCisgICAgIGlmIChzYXNsX2dzc19saWJfaW5pdCh0ZXh0LT51dGlscykgIT0gU0FT TF9PSykgcmV0dXJuIFNBU0xfRkFJTDsKKy0gICAgCisrCisgICAgIGlmKG51bWlvdiA+IDEpIHsK Ky0JcmV0ID0gX3BsdWdfaW92ZWNfdG9fYnVmKHRleHQtPnV0aWxzLCBpbnZlYywgbnVtaW92LCAm dGV4dC0+ZW5jX2luX2J1Zik7CistCWlmKHJldCAhPSBTQVNMX09LKSByZXR1cm4gcmV0OworLQlp bmJsb2IgPSB0ZXh0LT5lbmNfaW5fYnVmOworKyAgICAgICAgcmV0ID0gX3BsdWdfaW92ZWNfdG9f YnVmKHRleHQtPnV0aWxzLCBpbnZlYywgbnVtaW92LCAmdGV4dC0+ZW5jX2luX2J1Zik7CisrICAg ICAgICBpZihyZXQgIT0gU0FTTF9PSykgcmV0dXJuIHJldDsKKysgICAgICAgIGluYmxvYiA9IHRl eHQtPmVuY19pbl9idWY7CisgICAgIH0gZWxzZSB7CistCWJ1ZmluZm8uZGF0YSA9IGludmVjWzBd Lmlvdl9iYXNlOworLQlidWZpbmZvLmN1cmxlbiA9IGludmVjWzBdLmlvdl9sZW47CistCWluYmxv YiA9ICZidWZpbmZvOworKyAgICAgICAgYnVmaW5mby5kYXRhID0gaW52ZWNbMF0uaW92X2Jhc2U7 CisrICAgICAgICBidWZpbmZvLmN1cmxlbiA9IGludmVjWzBdLmlvdl9sZW47CisrICAgICAgICBp bmJsb2IgPSAmYnVmaW5mbzsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaWYgKHRleHQtPnN0YXRl ICE9IFNBU0xfR1NTQVBJX1NUQVRFX0FVVEhFTlRJQ0FURUQpIHJldHVybiBTQVNMX05PVERPTkU7 CistICAgIAorKworICAgICBpbnB1dF90b2tlbiA9ICZyZWFsX2lucHV0X3Rva2VuOworLSAgICAK KysKKyAgICAgcmVhbF9pbnB1dF90b2tlbi52YWx1ZSAgPSBpbmJsb2ItPmRhdGE7CisgICAgIHJl YWxfaW5wdXRfdG9rZW4ubGVuZ3RoID0gaW5ibG9iLT5jdXJsZW47CistICAgIAorKworICAgICBv dXRwdXRfdG9rZW4gPSAmcmVhbF9vdXRwdXRfdG9rZW47CisgICAgIG91dHB1dF90b2tlbi0+dmFs dWUgPSBOVUxMOworICAgICBvdXRwdXRfdG9rZW4tPmxlbmd0aCA9IDA7CistICAgIAorKworICAg ICBtYWpfc3RhdCA9ICgqcF9rcmI1X2dzc193cmFwKSAoJm1pbl9zdGF0LAorLQkJCSB0ZXh0LT5n c3NfY3R4LAorLQkJCSBwcml2YWN5LAorLQkJCSBHU1NfQ19RT1BfREVGQVVMVCwKKy0JCQkgaW5w dXRfdG9rZW4sCistCQkJIE5VTEwsCistCQkJIG91dHB1dF90b2tlbik7CistICAgIAorKyAgICAg ICAgICAgICAgICAgICAgICAgICB0ZXh0LT5nc3NfY3R4LAorKyAgICAgICAgICAgICAgICAgICAg ICAgICBwcml2YWN5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICBHU1NfQ19RT1BfREVGQVVM VCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfdG9rZW4sCisrICAgICAgICAgICAg ICAgICAgICAgICAgIE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF90b2tl bik7CisrCisgICAgIGlmIChHU1NfRVJST1IobWFqX3N0YXQpKQorLQl7CistCSAgICBzYXNsX2dz c19zZXRlcnJvcih0ZXh0LT51dGlscywgbWFqX3N0YXQsIG1pbl9zdGF0KTsKKy0JICAgIGlmIChv dXRwdXRfdG9rZW4tPnZhbHVlKQorLQkJKCpwX2tyYjVfZ3NzX3JlbGVhc2VfYnVmZmVyKSgmbWlu X3N0YXQsIG91dHB1dF90b2tlbik7CistCSAgICByZXR1cm4gU0FTTF9GQUlMOworLQl9CistICAg IAorKyAgICAgICAgeworKyAgICAgICAgICAgIHNhc2xfZ3NzX3NldGVycm9yKHRleHQtPnV0aWxz LCBtYWpfc3RhdCwgbWluX3N0YXQpOworKyAgICAgICAgICAgIGlmIChvdXRwdXRfdG9rZW4tPnZh bHVlKQorKyAgICAgICAgICAgICAgICAoKnBfa3JiNV9nc3NfcmVsZWFzZV9idWZmZXIpKCZtaW5f c3RhdCwgb3V0cHV0X3Rva2VuKTsKKysgICAgICAgICAgICByZXR1cm4gU0FTTF9GQUlMOworKyAg ICAgICAgfQorKworICAgICBpZiAob3V0cHV0X3Rva2VuLT52YWx1ZSAmJiBvdXRwdXQpIHsKKy0J aW50IGxlbjsKKy0JCistCXJldCA9IF9wbHVnX2J1Zl9hbGxvYyh0ZXh0LT51dGlscywgJih0ZXh0 LT5lbmNvZGVfYnVmKSwKKy0JCQkgICAgICAmKHRleHQtPmVuY29kZV9idWZfbGVuKSwgb3V0cHV0 X3Rva2VuLT5sZW5ndGggKyA0KTsKKy0JCistCWlmIChyZXQgIT0gU0FTTF9PSykgeworLQkgICAg KCpwX2tyYjVfZ3NzX3JlbGVhc2VfYnVmZmVyKSgmbWluX3N0YXQsIG91dHB1dF90b2tlbik7Cist CSAgICByZXR1cm4gcmV0OworLQl9CistCQorLQlsZW4gPSBodG9ubChvdXRwdXRfdG9rZW4tPmxl bmd0aCk7CistCW1lbWNweSh0ZXh0LT5lbmNvZGVfYnVmLCAmbGVuLCA0KTsKKy0JbWVtY3B5KHRl eHQtPmVuY29kZV9idWYgKyA0LCBvdXRwdXRfdG9rZW4tPnZhbHVlLCBvdXRwdXRfdG9rZW4tPmxl bmd0aCk7CisrICAgICAgICBpbnQgbGVuOworKworKyAgICAgICAgcmV0ID0gX3BsdWdfYnVmX2Fs bG9jKHRleHQtPnV0aWxzLCAmKHRleHQtPmVuY29kZV9idWYpLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICYodGV4dC0+ZW5jb2RlX2J1Zl9sZW4pLCBvdXRwdXRfdG9rZW4tPmxlbmd0 aCArIDQpOworKworKyAgICAgICAgaWYgKHJldCAhPSBTQVNMX09LKSB7CisrICAgICAgICAgICAg KCpwX2tyYjVfZ3NzX3JlbGVhc2VfYnVmZmVyKSgmbWluX3N0YXQsIG91dHB1dF90b2tlbik7Cisr ICAgICAgICAgICAgcmV0dXJuIHJldDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGxlbiA9IGh0 b25sKG91dHB1dF90b2tlbi0+bGVuZ3RoKTsKKysgICAgICAgIG1lbWNweSh0ZXh0LT5lbmNvZGVf YnVmLCAmbGVuLCA0KTsKKysgICAgICAgIG1lbWNweSh0ZXh0LT5lbmNvZGVfYnVmICsgNCwgb3V0 cHV0X3Rva2VuLT52YWx1ZSwgb3V0cHV0X3Rva2VuLT5sZW5ndGgpOworICAgICB9CistICAgIAor KworICAgICBpZiAob3V0cHV0bGVuKSB7CistCSpvdXRwdXRsZW4gPSBvdXRwdXRfdG9rZW4tPmxl bmd0aCArIDQ7CisrICAgICAgICAqb3V0cHV0bGVuID0gb3V0cHV0X3Rva2VuLT5sZW5ndGggKyA0 OworICAgICB9CistICAgIAorKworICAgICAqb3V0cHV0ID0gdGV4dC0+ZW5jb2RlX2J1ZjsKKy0g ICAgCisrCisgICAgIGlmIChvdXRwdXRfdG9rZW4tPnZhbHVlKQorLQkoKnBfa3JiNV9nc3NfcmVs ZWFzZV9idWZmZXIpKCZtaW5fc3RhdCwgb3V0cHV0X3Rva2VuKTsKKy0gICAgIAorKyAgICAgICAg KCpwX2tyYjVfZ3NzX3JlbGVhc2VfYnVmZmVyKSgmbWluX3N0YXQsIG91dHB1dF90b2tlbik7Cisr CisgICAgIHJldHVybiBTQVNMX09LOworIH0KKyAKKyBzdGF0aWMgaW50IGdzc2FwaV9wcml2YWN5 X2VuY29kZSh2b2lkICpjb250ZXh0LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmludmVjLAorLQkJCQkg dW5zaWduZWQgbnVtaW92LCBjb25zdCBjaGFyICoqb3V0cHV0LAorLQkJCQkgdW5zaWduZWQgKm91 dHB1dGxlbikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1p b3YsIGNvbnN0IGNoYXIgKipvdXRwdXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgKm91dHB1dGxlbikKKyB7CisgICAgIHJldHVybiBzYXNsX2dzc19lbmNvZGUo Y29udGV4dCxpbnZlYyxudW1pb3Ysb3V0cHV0LG91dHB1dGxlbiwxKTsKKyB9CisgCisgc3RhdGlj IGludCBnc3NhcGlfaW50ZWdyaXR5X2VuY29kZSh2b2lkICpjb250ZXh0LCBjb25zdCBzdHJ1Y3Qg aW92ZWMgKmludmVjLAorLQkJCQkgICB1bnNpZ25lZCBudW1pb3YsIGNvbnN0IGNoYXIgKipvdXRw dXQsCistCQkJCSAgIHVuc2lnbmVkICpvdXRwdXRsZW4pIAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtaW92LCBjb25zdCBjaGFyICoqb3V0cHV0LAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgKm91dHB1dGxlbikKKyB7 CisgICAgIHJldHVybiBzYXNsX2dzc19lbmNvZGUoY29udGV4dCxpbnZlYyxudW1pb3Ysb3V0cHV0 LG91dHB1dGxlbiwwKTsKKyB9CisgCisgc3RhdGljIGludCBnc3NhcGlfZGVjb2RlX3BhY2tldCh2 b2lkICpjb250ZXh0LAorLQkJCQljb25zdCBjaGFyICppbnB1dCwgdW5zaWduZWQgaW5wdXRsZW4s CistCQkJCWNoYXIgKipvdXRwdXQsIHVuc2lnbmVkICpvdXRwdXRsZW4pCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICppbnB1dCwgdW5zaWduZWQgaW5wdXRsZW4s CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqb3V0cHV0LCB1bnNpZ25l ZCAqb3V0cHV0bGVuKQorIHsKKyAgICAgY29udGV4dF90ICp0ZXh0ID0gKGNvbnRleHRfdCAqKSBj b250ZXh0OworICAgICBPTV91aW50MzIgbWFqX3N0YXQsIG1pbl9zdGF0OworICAgICBnc3NfYnVm ZmVyX3QgaW5wdXRfdG9rZW4sIG91dHB1dF90b2tlbjsKKyAgICAgZ3NzX2J1ZmZlcl9kZXNjIHJl YWxfaW5wdXRfdG9rZW4sIHJlYWxfb3V0cHV0X3Rva2VuOworICAgICBpbnQgcmVzdWx0OworLSAg ICAKKysKKyAgICAgaWYgKHNhc2xfZ3NzX2xpYl9pbml0KHRleHQtPnV0aWxzKSAhPSBTQVNMX09L KSByZXR1cm4gU0FTTF9GQUlMOworLSAgICAKKysKKyAgICAgaWYgKHRleHQtPnN0YXRlICE9IFNB U0xfR1NTQVBJX1NUQVRFX0FVVEhFTlRJQ0FURUQpIHsKKy0JU0VURVJST1IodGV4dC0+dXRpbHMs ICJHU1NBUEkgRmFpbHVyZSIpOworLQlyZXR1cm4gU0FTTF9OT1RET05FOworKyAgICAgICAgU0VU RVJST1IodGV4dC0+dXRpbHMsICJHU1NBUEkgRmFpbHVyZSIpOworKyAgICAgICAgcmV0dXJuIFNB U0xfTk9URE9ORTsKKyAgICAgfQorLSAgICAKKy0gICAgaW5wdXRfdG9rZW4gPSAmcmVhbF9pbnB1 dF90b2tlbjsgCisrCisrICAgIGlucHV0X3Rva2VuID0gJnJlYWxfaW5wdXRfdG9rZW47CisgICAg IHJlYWxfaW5wdXRfdG9rZW4udmFsdWUgPSAoY2hhciAqKSBpbnB1dDsKKyAgICAgcmVhbF9pbnB1 dF90b2tlbi5sZW5ndGggPSBpbnB1dGxlbjsKKy0gICAgCisrCisgICAgIG91dHB1dF90b2tlbiA9 ICZyZWFsX291dHB1dF90b2tlbjsKKyAgICAgb3V0cHV0X3Rva2VuLT52YWx1ZSA9IE5VTEw7Cisg ICAgIG91dHB1dF90b2tlbi0+bGVuZ3RoID0gMDsKKy0gICAgCisrCisgICAgIG1hal9zdGF0ID0g KCpwX2tyYjVfZ3NzX3Vud3JhcCkgKCZtaW5fc3RhdCwKKy0JCQkgICB0ZXh0LT5nc3NfY3R4LAor LQkJCSAgIGlucHV0X3Rva2VuLAorLQkJCSAgIG91dHB1dF90b2tlbiwKKy0JCQkgICBOVUxMLAor LQkJCSAgIE5VTEwpOworLSAgICAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LT5n c3NfY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X3Rva2VuLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF90b2tlbiwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICBOVUxMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworKworICAg ICBpZiAoR1NTX0VSUk9SKG1hal9zdGF0KSkKKy0JeworLQkgICAgc2FzbF9nc3Nfc2V0ZXJyb3Io dGV4dC0+dXRpbHMsbWFqX3N0YXQsbWluX3N0YXQpOworLQkgICAgaWYgKG91dHB1dF90b2tlbi0+ dmFsdWUpCistCQkoKnBfa3JiNV9nc3NfcmVsZWFzZV9idWZmZXIpKCZtaW5fc3RhdCwgb3V0cHV0 X3Rva2VuKTsKKy0JICAgIHJldHVybiBTQVNMX0ZBSUw7CistCX0KKy0gICAgCisrICAgICAgICB7 CisrICAgICAgICAgICAgc2FzbF9nc3Nfc2V0ZXJyb3IodGV4dC0+dXRpbHMsbWFqX3N0YXQsbWlu X3N0YXQpOworKyAgICAgICAgICAgIGlmIChvdXRwdXRfdG9rZW4tPnZhbHVlKQorKyAgICAgICAg ICAgICAgICAoKnBfa3JiNV9nc3NfcmVsZWFzZV9idWZmZXIpKCZtaW5fc3RhdCwgb3V0cHV0X3Rv a2VuKTsKKysgICAgICAgICAgICByZXR1cm4gU0FTTF9GQUlMOworKyAgICAgICAgfQorKworICAg ICBpZiAob3V0cHV0bGVuKQorLQkqb3V0cHV0bGVuID0gb3V0cHV0X3Rva2VuLT5sZW5ndGg7Cist ICAgIAorKyAgICAgICAgKm91dHB1dGxlbiA9IG91dHB1dF90b2tlbi0+bGVuZ3RoOworKworICAg ICBpZiAob3V0cHV0X3Rva2VuLT52YWx1ZSkgeworLQlpZiAob3V0cHV0KSB7CistCSAgICByZXN1 bHQgPSBfcGx1Z19idWZfYWxsb2ModGV4dC0+dXRpbHMsICZ0ZXh0LT5kZWNvZGVfb25jZV9idWYs CistCQkJCSAgICAgJnRleHQtPmRlY29kZV9vbmNlX2J1Zl9sZW4sCistCQkJCSAgICAgKm91dHB1 dGxlbik7CistCSAgICBpZihyZXN1bHQgIT0gU0FTTF9PSykgeworLQkJKCpwX2tyYjVfZ3NzX3Jl bGVhc2VfYnVmZmVyKSgmbWluX3N0YXQsIG91dHB1dF90b2tlbik7CistCQlyZXR1cm4gcmVzdWx0 OworLQkgICAgfQorLQkgICAgKm91dHB1dCA9IHRleHQtPmRlY29kZV9vbmNlX2J1ZjsKKy0JICAg IG1lbWNweSgqb3V0cHV0LCBvdXRwdXRfdG9rZW4tPnZhbHVlLCAqb3V0cHV0bGVuKTsKKy0JfQor LQkoKnBfa3JiNV9nc3NfcmVsZWFzZV9idWZmZXIpKCZtaW5fc3RhdCwgb3V0cHV0X3Rva2VuKTsK KysgICAgICAgIGlmIChvdXRwdXQpIHsKKysgICAgICAgICAgICByZXN1bHQgPSBfcGx1Z19idWZf YWxsb2ModGV4dC0+dXRpbHMsICZ0ZXh0LT5kZWNvZGVfb25jZV9idWYsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZ0ZXh0LT5kZWNvZGVfb25jZV9idWZfbGVuLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqb3V0cHV0bGVuKTsKKysgICAgICAg ICAgICBpZihyZXN1bHQgIT0gU0FTTF9PSykgeworKyAgICAgICAgICAgICAgICAoKnBfa3JiNV9n c3NfcmVsZWFzZV9idWZmZXIpKCZtaW5fc3RhdCwgb3V0cHV0X3Rva2VuKTsKKysgICAgICAgICAg ICAgICAgcmV0dXJuIHJlc3VsdDsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgKm91dHB1 dCA9IHRleHQtPmRlY29kZV9vbmNlX2J1ZjsKKysgICAgICAgICAgICBtZW1jcHkoKm91dHB1dCwg b3V0cHV0X3Rva2VuLT52YWx1ZSwgKm91dHB1dGxlbik7CisrICAgICAgICB9CisrICAgICAgICAo KnBfa3JiNV9nc3NfcmVsZWFzZV9idWZmZXIpKCZtaW5fc3RhdCwgb3V0cHV0X3Rva2VuKTsKKyAg ICAgfQorLSAgICAKKysKKyAgICAgcmV0dXJuIFNBU0xfT0s7CisgfQorIAorIHN0YXRpYyBpbnQg Z3NzYXBpX2RlY29kZSh2b2lkICpjb250ZXh0LAorLQkJCSBjb25zdCBjaGFyICppbnB1dCwgdW5z aWduZWQgaW5wdXRsZW4sCistCQkJIGNvbnN0IGNoYXIgKipvdXRwdXQsIHVuc2lnbmVkICpvdXRw dXRsZW4pCisrICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmlucHV0LCB1bnNp Z25lZCBpbnB1dGxlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKm91 dHB1dCwgdW5zaWduZWQgKm91dHB1dGxlbikKKyB7CisgICAgIGNvbnRleHRfdCAqdGV4dCA9IChj b250ZXh0X3QgKikgY29udGV4dDsKKyAgICAgaW50IHJldDsKKy0gICAgCisrCisgICAgIHJldCA9 IF9wbHVnX2RlY29kZSgmdGV4dC0+ZGVjb2RlX2NvbnRleHQsIGlucHV0LCBpbnB1dGxlbiwKKy0J CSAgICAgICAmdGV4dC0+ZGVjb2RlX2J1ZiwgJnRleHQtPmRlY29kZV9idWZfbGVuLCBvdXRwdXRs ZW4sCistCQkgICAgICAgZ3NzYXBpX2RlY29kZV9wYWNrZXQsIHRleHQpOworLSAgICAKKysgICAg ICAgICAgICAgICAgICAgICAgICZ0ZXh0LT5kZWNvZGVfYnVmLCAmdGV4dC0+ZGVjb2RlX2J1Zl9s ZW4sIG91dHB1dGxlbiwKKysgICAgICAgICAgICAgICAgICAgICAgIGdzc2FwaV9kZWNvZGVfcGFj a2V0LCB0ZXh0KTsKKysKKyAgICAgKm91dHB1dCA9IHRleHQtPmRlY29kZV9idWY7CistICAgIAor KworICAgICByZXR1cm4gcmV0OworIH0KKyAKKyBzdGF0aWMgY29udGV4dF90ICpnc3NfbmV3X2Nv bnRleHQoY29uc3Qgc2FzbF91dGlsc190ICp1dGlscykKKyB7CisgICAgIGNvbnRleHRfdCAqcmV0 OworLSAgICAKKysKKyAgICAgcmV0ID0gdXRpbHMtPm1hbGxvYyhzaXplb2YoY29udGV4dF90KSk7 CisgICAgIGlmKCFyZXQpIHJldHVybiBOVUxMOworLSAgICAKKysKKyAgICAgbWVtc2V0KHJldCww LHNpemVvZihjb250ZXh0X3QpKTsKKyAgICAgcmV0LT51dGlscyA9IHV0aWxzOworLSAgICAKKysK KyAgICAgcmV0dXJuIHJldDsKKyB9CisgCisgc3RhdGljIHZvaWQgc2FzbF9nc3NfZnJlZV9jb250 ZXh0X2NvbnRlbnRzKGNvbnRleHRfdCAqdGV4dCkKKyB7CisgICAgIE9NX3VpbnQzMiBtYWpfc3Rh dCwgbWluX3N0YXQ7CistICAgIAorKworICAgICBpZiAoIXRleHQpIHJldHVybjsKKy0gICAgCisr CisgICAgIGlmIChzYXNsX2dzc19saWJfaW5pdCh0ZXh0LT51dGlscykgIT0gU0FTTF9PSykgcmV0 dXJuOworLSAgICAKKysKKyAgICAgaWYgKHRleHQtPmdzc19jdHggIT0gR1NTX0NfTk9fQ09OVEVY VCkgeworLQltYWpfc3RhdCA9ICgqcF9rcmI1X2dzc19kZWxldGVfc2VjX2NvbnRleHQpKCZtaW5f c3RhdCwmdGV4dC0+Z3NzX2N0eCxHU1NfQ19OT19CVUZGRVIpOworLQl0ZXh0LT5nc3NfY3R4ID0g R1NTX0NfTk9fQ09OVEVYVDsKKysgICAgICAgIG1hal9zdGF0ID0gKCpwX2tyYjVfZ3NzX2RlbGV0 ZV9zZWNfY29udGV4dCkoJm1pbl9zdGF0LCZ0ZXh0LT5nc3NfY3R4LEdTU19DX05PX0JVRkZFUik7 CisrICAgICAgICB0ZXh0LT5nc3NfY3R4ID0gR1NTX0NfTk9fQ09OVEVYVDsKKyAgICAgfQorLSAg ICAKKysKKyAgICAgaWYgKHRleHQtPmNsaWVudF9uYW1lICE9IEdTU19DX05PX05BTUUpIHsKKy0J bWFqX3N0YXQgPSAoKnBfa3JiNV9nc3NfcmVsZWFzZV9uYW1lKSgmbWluX3N0YXQsJnRleHQtPmNs aWVudF9uYW1lKTsKKy0JdGV4dC0+Y2xpZW50X25hbWUgPSBHU1NfQ19OT19OQU1FOworKyAgICAg ICAgbWFqX3N0YXQgPSAoKnBfa3JiNV9nc3NfcmVsZWFzZV9uYW1lKSgmbWluX3N0YXQsJnRleHQt PmNsaWVudF9uYW1lKTsKKysgICAgICAgIHRleHQtPmNsaWVudF9uYW1lID0gR1NTX0NfTk9fTkFN RTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaWYgKHRleHQtPnNlcnZlcl9uYW1lICE9IEdTU19D X05PX05BTUUpIHsKKy0JbWFqX3N0YXQgPSAoKnBfa3JiNV9nc3NfcmVsZWFzZV9uYW1lKSgmbWlu X3N0YXQsJnRleHQtPnNlcnZlcl9uYW1lKTsKKy0JdGV4dC0+c2VydmVyX25hbWUgPSBHU1NfQ19O T19OQU1FOworKyAgICAgICAgbWFqX3N0YXQgPSAoKnBfa3JiNV9nc3NfcmVsZWFzZV9uYW1lKSgm bWluX3N0YXQsJnRleHQtPnNlcnZlcl9uYW1lKTsKKysgICAgICAgIHRleHQtPnNlcnZlcl9uYW1l ID0gR1NTX0NfTk9fTkFNRTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaWYgKCB0ZXh0LT5zZXJ2 ZXJfY3JlZHMgIT0gR1NTX0NfTk9fQ1JFREVOVElBTCkgeworLQltYWpfc3RhdCA9ICgqcF9rcmI1 X2dzc19yZWxlYXNlX2NyZWQpKCZtaW5fc3RhdCwgJnRleHQtPnNlcnZlcl9jcmVkcyk7CistCXRl eHQtPnNlcnZlcl9jcmVkcyA9IEdTU19DX05PX0NSRURFTlRJQUw7CisrICAgICAgICBtYWpfc3Rh dCA9ICgqcF9rcmI1X2dzc19yZWxlYXNlX2NyZWQpKCZtaW5fc3RhdCwgJnRleHQtPnNlcnZlcl9j cmVkcyk7CisrICAgICAgICB0ZXh0LT5zZXJ2ZXJfY3JlZHMgPSBHU1NfQ19OT19DUkVERU5USUFM OworICAgICB9CisgCisgICAgIGlmICh0ZXh0LT5vdXRfYnVmKSB7CistCXRleHQtPnV0aWxzLT5m cmVlKHRleHQtPm91dF9idWYpOworLQl0ZXh0LT5vdXRfYnVmID0gTlVMTDsKKysgICAgICAgIHRl eHQtPnV0aWxzLT5mcmVlKHRleHQtPm91dF9idWYpOworKyAgICAgICAgdGV4dC0+b3V0X2J1ZiA9 IE5VTEw7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmICh0ZXh0LT5lbmNvZGVfYnVmKSB7Cist CXRleHQtPnV0aWxzLT5mcmVlKHRleHQtPmVuY29kZV9idWYpOworLQl0ZXh0LT5lbmNvZGVfYnVm ID0gTlVMTDsKKysgICAgICAgIHRleHQtPnV0aWxzLT5mcmVlKHRleHQtPmVuY29kZV9idWYpOwor KyAgICAgICAgdGV4dC0+ZW5jb2RlX2J1ZiA9IE5VTEw7CisgICAgIH0KKy0gICAgCisrCisgICAg IGlmICh0ZXh0LT5kZWNvZGVfYnVmKSB7CistCXRleHQtPnV0aWxzLT5mcmVlKHRleHQtPmRlY29k ZV9idWYpOworLQl0ZXh0LT5kZWNvZGVfYnVmID0gTlVMTDsKKysgICAgICAgIHRleHQtPnV0aWxz LT5mcmVlKHRleHQtPmRlY29kZV9idWYpOworKyAgICAgICAgdGV4dC0+ZGVjb2RlX2J1ZiA9IE5V TEw7CisgICAgIH0KKy0gICAgCisrCisgICAgIGlmICh0ZXh0LT5kZWNvZGVfb25jZV9idWYpIHsK Ky0JdGV4dC0+dXRpbHMtPmZyZWUodGV4dC0+ZGVjb2RlX29uY2VfYnVmKTsKKy0JdGV4dC0+ZGVj b2RlX29uY2VfYnVmID0gTlVMTDsKKysgICAgICAgIHRleHQtPnV0aWxzLT5mcmVlKHRleHQtPmRl Y29kZV9vbmNlX2J1Zik7CisrICAgICAgICB0ZXh0LT5kZWNvZGVfb25jZV9idWYgPSBOVUxMOwor ICAgICB9CistICAgIAorKworICAgICBpZiAodGV4dC0+ZW5jX2luX2J1ZikgeworLQlpZih0ZXh0 LT5lbmNfaW5fYnVmLT5kYXRhKSB0ZXh0LT51dGlscy0+ZnJlZSh0ZXh0LT5lbmNfaW5fYnVmLT5k YXRhKTsKKy0JdGV4dC0+dXRpbHMtPmZyZWUodGV4dC0+ZW5jX2luX2J1Zik7CistCXRleHQtPmVu Y19pbl9idWYgPSBOVUxMOworKyAgICAgICAgaWYodGV4dC0+ZW5jX2luX2J1Zi0+ZGF0YSkgdGV4 dC0+dXRpbHMtPmZyZWUodGV4dC0+ZW5jX2luX2J1Zi0+ZGF0YSk7CisrICAgICAgICB0ZXh0LT51 dGlscy0+ZnJlZSh0ZXh0LT5lbmNfaW5fYnVmKTsKKysgICAgICAgIHRleHQtPmVuY19pbl9idWYg PSBOVUxMOworICAgICB9CisgCisgICAgIF9wbHVnX2RlY29kZV9mcmVlKCZ0ZXh0LT5kZWNvZGVf Y29udGV4dCk7CistICAgIAorKworICAgICBpZiAodGV4dC0+YXV0aGlkKSB7IC8qIHdvcmtzIGZv ciBib3RoIGNsaWVudCBhbmQgc2VydmVyICovCistCXRleHQtPnV0aWxzLT5mcmVlKHRleHQtPmF1 dGhpZCk7CistCXRleHQtPmF1dGhpZCA9IE5VTEw7CisrICAgICAgICB0ZXh0LT51dGlscy0+ZnJl ZSh0ZXh0LT5hdXRoaWQpOworKyAgICAgICAgdGV4dC0+YXV0aGlkID0gTlVMTDsKKyAgICAgfQor IH0KKyAKKyBzdGF0aWMgdm9pZCBnc3NhcGlfY29tbW9uX21lY2hfZGlzcG9zZSh2b2lkICpjb25u X2NvbnRleHQsCistCQkJCSAgICAgICBjb25zdCBzYXNsX3V0aWxzX3QgKnV0aWxzKQorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNhc2xfdXRpbHNfdCAqdXRp bHMpCisgeworICAgICBzYXNsX2dzc19mcmVlX2NvbnRleHRfY29udGVudHMoKGNvbnRleHRfdCAq KShjb25uX2NvbnRleHQpKTsKKyAgICAgdXRpbHMtPmZyZWUoY29ubl9jb250ZXh0KTsKK0BAIC02 NTAsNDAgKzY1MCw0MCBAQCBzdGF0aWMgdm9pZCBnc3NhcGlfY29tbW9uX21lY2hfZGlzcG9zZSh2 b2lkICpjb25uX2NvbnRleHQsCisgCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqICBT ZXJ2ZXIgU2VjdGlvbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgCistc3RhdGlj IGludCAKKy1nc3NhcGlfc2VydmVyX21lY2hfbmV3KHZvaWQgKmdsb2JfY29udGV4dCBfX2F0dHJp YnV0ZV9fKCh1bnVzZWQpKSwgCistCQkgICAgICAgc2FzbF9zZXJ2ZXJfcGFyYW1zX3QgKnBhcmFt cywKKy0JCSAgICAgICBjb25zdCBjaGFyICpjaGFsbGVuZ2UgX19hdHRyaWJ1dGVfXygodW51c2Vk KSksIAorLQkJICAgICAgIHVuc2lnbmVkIGNoYWxsZW4gX19hdHRyaWJ1dGVfXygodW51c2VkKSks CistCQkgICAgICAgdm9pZCAqKmNvbm5fY29udGV4dCkKKytzdGF0aWMgaW50CisrZ3NzYXBpX3Nl cnZlcl9tZWNoX25ldyh2b2lkICpnbG9iX2NvbnRleHQgX19hdHRyaWJ1dGVfXygodW51c2VkKSks CisrICAgICAgICAgICAgICAgICAgICAgICBzYXNsX3NlcnZlcl9wYXJhbXNfdCAqcGFyYW1zLAor KyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2hhbGxlbmdlIF9fYXR0cmlidXRl X18oKHVudXNlZCkpLAorKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhbGxlbiBf X2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKKysgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipj b25uX2NvbnRleHQpCisgeworICAgICBjb250ZXh0X3QgKnRleHQ7CistICAgIAorKworICAgICB0 ZXh0ID0gZ3NzX25ld19jb250ZXh0KHBhcmFtcy0+dXRpbHMpOworICAgICBpZiAodGV4dCA9PSBO VUxMKSB7CistCU1FTUVSUk9SKHBhcmFtcy0+dXRpbHMpOworLQlyZXR1cm4gU0FTTF9OT01FTTsK KysgICAgICAgIE1FTUVSUk9SKHBhcmFtcy0+dXRpbHMpOworKyAgICAgICAgcmV0dXJuIFNBU0xf Tk9NRU07CisgICAgIH0KKy0gICAgCisrCisgICAgIHRleHQtPmdzc19jdHggPSBHU1NfQ19OT19D T05URVhUOworICAgICB0ZXh0LT5jbGllbnRfbmFtZSA9IEdTU19DX05PX05BTUU7CisgICAgIHRl eHQtPnNlcnZlcl9uYW1lID0gR1NTX0NfTk9fTkFNRTsKKyAgICAgdGV4dC0+c2VydmVyX2NyZWRz ID0gR1NTX0NfTk9fQ1JFREVOVElBTDsKKyAgICAgdGV4dC0+c3RhdGUgPSBTQVNMX0dTU0FQSV9T VEFURV9BVVRITkVHOworLSAgICAKKysKKyAgICAgKmNvbm5fY29udGV4dCA9IHRleHQ7CistICAg IAorKworICAgICByZXR1cm4gU0FTTF9PSzsKKyB9CisgCistc3RhdGljIGludCAKKytzdGF0aWMg aW50CisgZ3NzYXBpX3NlcnZlcl9tZWNoX3N0ZXAodm9pZCAqY29ubl9jb250ZXh0LAorLQkJCXNh c2xfc2VydmVyX3BhcmFtc190ICpwYXJhbXMsCistCQkJY29uc3QgY2hhciAqY2xpZW50aW4sCist CQkJdW5zaWduZWQgY2xpZW50aW5sZW4sCistCQkJY29uc3QgY2hhciAqKnNlcnZlcm91dCwKKy0J CQl1bnNpZ25lZCAqc2VydmVyb3V0bGVuLAorLQkJCXNhc2xfb3V0X3BhcmFtc190ICpvcGFyYW1z KQorKyAgICAgICAgICAgICAgICAgICAgICAgIHNhc2xfc2VydmVyX3BhcmFtc190ICpwYXJhbXMs CisrICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2xpZW50aW4sCisrICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2xpZW50aW5sZW4sCisrICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqKnNlcnZlcm91dCwKKysgICAgICAgICAgICAgICAgICAgICAg ICB1bnNpZ25lZCAqc2VydmVyb3V0bGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgIHNhc2xf b3V0X3BhcmFtc190ICpvcGFyYW1zKQorIHsKKyAgICAgY29udGV4dF90ICp0ZXh0ID0gKGNvbnRl eHRfdCAqKWNvbm5fY29udGV4dDsKKyAgICAgZ3NzX2J1ZmZlcl90IGlucHV0X3Rva2VuLCBvdXRw dXRfdG9rZW47CitAQCAtNjkyLDI1NyArNjkyLDI1NyBAQCBnc3NhcGlfc2VydmVyX21lY2hfc3Rl cCh2b2lkICpjb25uX2NvbnRleHQsCisgICAgIE9NX3VpbnQzMiBtYXhfaW5wdXQ7CisgICAgIGdz c19idWZmZXJfZGVzYyBuYW1lX3Rva2VuOworICAgICBpbnQgcmV0OworLSAgICAKKysKKyAgICAg aW5wdXRfdG9rZW4gPSAmcmVhbF9pbnB1dF90b2tlbjsKKyAgICAgb3V0cHV0X3Rva2VuID0gJnJl YWxfb3V0cHV0X3Rva2VuOworICAgICBvdXRwdXRfdG9rZW4tPnZhbHVlID0gTlVMTDsgb3V0cHV0 X3Rva2VuLT5sZW5ndGggPSAwOworICAgICBpbnB1dF90b2tlbi0+dmFsdWUgPSBOVUxMOyBpbnB1 dF90b2tlbi0+bGVuZ3RoID0gMDsKKy0gICAgCisrCisgICAgIGlmKCFzZXJ2ZXJvdXQpIHsKKy0J UEFSQU1FUlJPUih0ZXh0LT51dGlscyk7CistCXJldHVybiBTQVNMX0JBRFBBUkFNOworKyAgICAg ICAgUEFSQU1FUlJPUih0ZXh0LT51dGlscyk7CisrICAgICAgICByZXR1cm4gU0FTTF9CQURQQVJB TTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgKnNlcnZlcm91dCA9IE5VTEw7CistICAgICpzZXJ2 ZXJvdXRsZW4gPSAwOwkKKy0JICAgIAorKyAgICAqc2VydmVyb3V0bGVuID0gMDsKKysKKyAgICAg aWYgKHNhc2xfZ3NzX2xpYl9pbml0KHRleHQtPnV0aWxzKSAhPSBTQVNMX09LKSByZXR1cm4gU0FT TF9GQUlMOworLSAgICAKKysKKyAgICAgc3dpdGNoICh0ZXh0LT5zdGF0ZSkgeworIAorICAgICBj YXNlIFNBU0xfR1NTQVBJX1NUQVRFX0FVVEhORUc6CistCWlmICh0ZXh0LT5zZXJ2ZXJfbmFtZSA9 PSBHU1NfQ19OT19OQU1FKSB7IC8qIG9ubHkgb25jZSAqLworLQkgICAgbmFtZV90b2tlbi5sZW5n dGggPSBzdHJsZW4ocGFyYW1zLT5zZXJ2aWNlKSArIDEgKyBzdHJsZW4ocGFyYW1zLT5zZXJ2ZXJG UUROKTsKKy0JICAgIG5hbWVfdG9rZW4udmFsdWUgPSAoY2hhciAqKXBhcmFtcy0+dXRpbHMtPm1h bGxvYygobmFtZV90b2tlbi5sZW5ndGggKyAxKSAqIHNpemVvZihjaGFyKSk7CistCSAgICBpZiAo bmFtZV90b2tlbi52YWx1ZSA9PSBOVUxMKSB7CistCQlNRU1FUlJPUih0ZXh0LT51dGlscyk7Cist CQlzYXNsX2dzc19mcmVlX2NvbnRleHRfY29udGVudHModGV4dCk7CistCQlyZXR1cm4gU0FTTF9O T01FTTsKKy0JICAgIH0KKy0JICAgIHNwcmludGYobmFtZV90b2tlbi52YWx1ZSwiJXNAJXMiLCBw YXJhbXMtPnNlcnZpY2UsIHBhcmFtcy0+c2VydmVyRlFETik7CistCSAgICAKKy0JICAgIG1hal9z dGF0ID0gKCpwX2tyYjVfZ3NzX2ltcG9ydF9uYW1lKSAoJm1pbl9zdGF0LAorLQkJCQkJJm5hbWVf dG9rZW4sCistCQkJCQlHU1NfQ19OVF9IT1NUQkFTRURfU0VSVklDRSwKKy0JCQkJCSZ0ZXh0LT5z ZXJ2ZXJfbmFtZSk7CistCSAgICAKKy0JICAgIHBhcmFtcy0+dXRpbHMtPmZyZWUobmFtZV90b2tl bi52YWx1ZSk7CistCSAgICBuYW1lX3Rva2VuLnZhbHVlID0gTlVMTDsKKy0JICAgIAorLQkgICAg aWYgKEdTU19FUlJPUihtYWpfc3RhdCkpIHsKKy0JCXNhc2xfZ3NzX3NldGVycm9yKHRleHQtPnV0 aWxzLCBtYWpfc3RhdCwgbWluX3N0YXQpOworLQkJc2FzbF9nc3NfZnJlZV9jb250ZXh0X2NvbnRl bnRzKHRleHQpOworLQkJcmV0dXJuIFNBU0xfRkFJTDsKKy0JICAgIH0KKy0JICAgIAorLQkgICAg aWYgKCB0ZXh0LT5zZXJ2ZXJfY3JlZHMgIT0gR1NTX0NfTk9fQ1JFREVOVElBTCkgeworLQkJbWFq X3N0YXQgPSAoKnBfa3JiNV9nc3NfcmVsZWFzZV9jcmVkKSgmbWluX3N0YXQsICZ0ZXh0LT5zZXJ2 ZXJfY3JlZHMpOworLQkJdGV4dC0+c2VydmVyX2NyZWRzID0gR1NTX0NfTk9fQ1JFREVOVElBTDsK Ky0JICAgIH0KKy0JICAgIAorLQkgICAgbWFqX3N0YXQgPSAoKnBfa3JiNV9nc3NfYWNxdWlyZV9j cmVkKSgmbWluX3N0YXQsIAorLQkJCQkJdGV4dC0+c2VydmVyX25hbWUsCistCQkJCQlHU1NfQ19J TkRFRklOSVRFLCAKKy0JCQkJCUdTU19DX05PX09JRF9TRVQsCistCQkJCQlHU1NfQ19BQ0NFUFQs CistCQkJCQkmdGV4dC0+c2VydmVyX2NyZWRzLCAKKy0JCQkJCU5VTEwsIAorLQkJCQkJTlVMTCk7 CistCSAgICAKKy0JICAgIGlmIChHU1NfRVJST1IobWFqX3N0YXQpKSB7CistCQlzYXNsX2dzc19z ZXRlcnJvcih0ZXh0LT51dGlscywgbWFqX3N0YXQsIG1pbl9zdGF0KTsKKy0JCXNhc2xfZ3NzX2Zy ZWVfY29udGV4dF9jb250ZW50cyh0ZXh0KTsKKy0JCXJldHVybiBTQVNMX0ZBSUw7CistCSAgICB9 CistCX0KKy0JCistCWlmIChjbGllbnRpbmxlbikgeworLQkgICAgcmVhbF9pbnB1dF90b2tlbi52 YWx1ZSA9ICh2b2lkICopY2xpZW50aW47CistCSAgICByZWFsX2lucHV0X3Rva2VuLmxlbmd0aCA9 IGNsaWVudGlubGVuOworLQl9CistCQorLQkKKy0JbWFqX3N0YXQgPQorLQkgICAgKCpwX2tyYjVf Z3NzX2FjY2VwdF9zZWNfY29udGV4dCkoJm1pbl9zdGF0LAorLQkJCQkgICAmKHRleHQtPmdzc19j dHgpLAorLQkJCQkgICB0ZXh0LT5zZXJ2ZXJfY3JlZHMsCistCQkJCSAgIGlucHV0X3Rva2VuLAor LQkJCQkgICBHU1NfQ19OT19DSEFOTkVMX0JJTkRJTkdTLAorLQkJCQkgICAmdGV4dC0+Y2xpZW50 X25hbWUsCistCQkJCSAgIE5VTEwsCistCQkJCSAgIG91dHB1dF90b2tlbiwKKy0JCQkJICAgTlVM TCwKKy0JCQkJICAgTlVMTCwKKy0JCQkJICAgTlVMTCk7CistCQorLQlpZiAoR1NTX0VSUk9SKG1h al9zdGF0KSkgeworLQkgICAgc2FzbF9nc3NfbG9nKHRleHQtPnV0aWxzLCBtYWpfc3RhdCwgbWlu X3N0YXQpOworLQkgICAgdGV4dC0+dXRpbHMtPnNldGVycm9yKHRleHQtPnV0aWxzLT5jb25uLCBT QVNMX05PTE9HLCAiR1NTQVBJIEZhaWx1cmU6IGdzc19hY2NlcHRfc2VjX2NvbnRleHQiKTsKKy0J ICAgIGlmIChvdXRwdXRfdG9rZW4tPnZhbHVlKSB7CistCQkoKnBfa3JiNV9nc3NfcmVsZWFzZV9i dWZmZXIpKCZtaW5fc3RhdCwgb3V0cHV0X3Rva2VuKTsKKy0JICAgIH0KKy0JICAgIHNhc2xfZ3Nz X2ZyZWVfY29udGV4dF9jb250ZW50cyh0ZXh0KTsKKy0JICAgIHJldHVybiBTQVNMX0JBREFVVEg7 CistCX0KKy0JICAgIAorLQorLQlpZiAoc2VydmVyb3V0bGVuKQorLQkgICAgKnNlcnZlcm91dGxl biA9IG91dHB1dF90b2tlbi0+bGVuZ3RoOworLQlpZiAob3V0cHV0X3Rva2VuLT52YWx1ZSkgewor LQkgICAgaWYgKHNlcnZlcm91dCkgeworLQkJcmV0ID0gX3BsdWdfYnVmX2FsbG9jKHRleHQtPnV0 aWxzLCAmKHRleHQtPm91dF9idWYpLAorLQkJCQkgICAgICAmKHRleHQtPm91dF9idWZfbGVuKSwg KnNlcnZlcm91dGxlbik7CistCQlpZihyZXQgIT0gU0FTTF9PSykgeworLQkJICAgICgqcF9rcmI1 X2dzc19yZWxlYXNlX2J1ZmZlcikoJm1pbl9zdGF0LCBvdXRwdXRfdG9rZW4pOworLQkJICAgIHJl dHVybiByZXQ7CistCQl9CistCQltZW1jcHkodGV4dC0+b3V0X2J1Ziwgb3V0cHV0X3Rva2VuLT52 YWx1ZSwgKnNlcnZlcm91dGxlbik7CistCQkqc2VydmVyb3V0ID0gdGV4dC0+b3V0X2J1ZjsKKy0J ICAgIH0KKy0JICAgIAorLQkgICAgKCpwX2tyYjVfZ3NzX3JlbGVhc2VfYnVmZmVyKSgmbWluX3N0 YXQsIG91dHB1dF90b2tlbik7CistCX0gZWxzZSB7CistCSAgICAvKiBObyBvdXRwdXQgdG9rZW4s IHNlbmQgYW4gZW1wdHkgc3RyaW5nICovCistCSAgICAqc2VydmVyb3V0ID0gR1NTQVBJX0JMQU5L X1NUUklORzsKKy0JICAgIHNlcnZlcm91dGxlbiA9IDA7CistCX0KKy0JCistCWlmIChtYWpfc3Rh dCA9PSBHU1NfU19DT01QTEVURSkgeworLQkgICAgLyogU3dpdGNoIHRvIHNzZiBuZWdvdGlhdGlv biAqLworLQkgICAgdGV4dC0+c3RhdGUgPSBTQVNMX0dTU0FQSV9TVEFURV9TU0ZDQVA7CistCX0K Ky0JCistCXJldHVybiBTQVNMX0NPTlRJTlVFOworKyAgICAgICAgaWYgKHRleHQtPnNlcnZlcl9u YW1lID09IEdTU19DX05PX05BTUUpIHsgLyogb25seSBvbmNlICovCisrICAgICAgICAgICAgbmFt ZV90b2tlbi5sZW5ndGggPSBzdHJsZW4ocGFyYW1zLT5zZXJ2aWNlKSArIDEgKyBzdHJsZW4ocGFy YW1zLT5zZXJ2ZXJGUUROKTsKKysgICAgICAgICAgICBuYW1lX3Rva2VuLnZhbHVlID0gKGNoYXIg KilwYXJhbXMtPnV0aWxzLT5tYWxsb2MoKG5hbWVfdG9rZW4ubGVuZ3RoICsgMSkgKiBzaXplb2Yo Y2hhcikpOworKyAgICAgICAgICAgIGlmIChuYW1lX3Rva2VuLnZhbHVlID09IE5VTEwpIHsKKysg ICAgICAgICAgICAgICAgTUVNRVJST1IodGV4dC0+dXRpbHMpOworKyAgICAgICAgICAgICAgICBz YXNsX2dzc19mcmVlX2NvbnRleHRfY29udGVudHModGV4dCk7CisrICAgICAgICAgICAgICAgIHJl dHVybiBTQVNMX05PTUVNOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBzcHJpbnRmKG5h bWVfdG9rZW4udmFsdWUsIiVzQCVzIiwgcGFyYW1zLT5zZXJ2aWNlLCBwYXJhbXMtPnNlcnZlckZR RE4pOworKworKyAgICAgICAgICAgIG1hal9zdGF0ID0gKCpwX2tyYjVfZ3NzX2ltcG9ydF9uYW1l KSAoJm1pbl9zdGF0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm bmFtZV90b2tlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NT X0NfTlRfSE9TVEJBU0VEX1NFUlZJQ0UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZ0ZXh0LT5zZXJ2ZXJfbmFtZSk7CisrCisrICAgICAgICAgICAgcGFyYW1zLT51 dGlscy0+ZnJlZShuYW1lX3Rva2VuLnZhbHVlKTsKKysgICAgICAgICAgICBuYW1lX3Rva2VuLnZh bHVlID0gTlVMTDsKKysKKysgICAgICAgICAgICBpZiAoR1NTX0VSUk9SKG1hal9zdGF0KSkgewor KyAgICAgICAgICAgICAgICBzYXNsX2dzc19zZXRlcnJvcih0ZXh0LT51dGlscywgbWFqX3N0YXQs IG1pbl9zdGF0KTsKKysgICAgICAgICAgICAgICAgc2FzbF9nc3NfZnJlZV9jb250ZXh0X2NvbnRl bnRzKHRleHQpOworKyAgICAgICAgICAgICAgICByZXR1cm4gU0FTTF9GQUlMOworKyAgICAgICAg ICAgIH0KKysKKysgICAgICAgICAgICBpZiAoIHRleHQtPnNlcnZlcl9jcmVkcyAhPSBHU1NfQ19O T19DUkVERU5USUFMKSB7CisrICAgICAgICAgICAgICAgIG1hal9zdGF0ID0gKCpwX2tyYjVfZ3Nz X3JlbGVhc2VfY3JlZCkoJm1pbl9zdGF0LCAmdGV4dC0+c2VydmVyX2NyZWRzKTsKKysgICAgICAg ICAgICAgICAgdGV4dC0+c2VydmVyX2NyZWRzID0gR1NTX0NfTk9fQ1JFREVOVElBTDsKKysgICAg ICAgICAgICB9CisrCisrICAgICAgICAgICAgbWFqX3N0YXQgPSAoKnBfa3JiNV9nc3NfYWNxdWly ZV9jcmVkKSgmbWluX3N0YXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRleHQtPnNlcnZlcl9uYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHU1NfQ19JTkRFRklOSVRFLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHU1NfQ19OT19PSURfU0VULAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHU1NfQ19BQ0NFUFQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZ0ZXh0LT5zZXJ2ZXJfY3JlZHMsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5VTEwpOworKworKyAgICAgICAgICAgIGlmIChHU1NfRVJST1IobWFqX3N0YXQp KSB7CisrICAgICAgICAgICAgICAgIHNhc2xfZ3NzX3NldGVycm9yKHRleHQtPnV0aWxzLCBtYWpf c3RhdCwgbWluX3N0YXQpOworKyAgICAgICAgICAgICAgICBzYXNsX2dzc19mcmVlX2NvbnRleHRf Y29udGVudHModGV4dCk7CisrICAgICAgICAgICAgICAgIHJldHVybiBTQVNMX0ZBSUw7CisrICAg ICAgICAgICAgfQorKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKGNsaWVudGlubGVuKSB7Cisr ICAgICAgICAgICAgcmVhbF9pbnB1dF90b2tlbi52YWx1ZSA9ICh2b2lkICopY2xpZW50aW47Cisr ICAgICAgICAgICAgcmVhbF9pbnB1dF90b2tlbi5sZW5ndGggPSBjbGllbnRpbmxlbjsKKysgICAg ICAgIH0KKysKKysKKysgICAgICAgIG1hal9zdGF0ID0KKysgICAgICAgICAgICAoKnBfa3JiNV9n c3NfYWNjZXB0X3NlY19jb250ZXh0KSgmbWluX3N0YXQsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmKHRleHQtPmdzc19jdHgpLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGV4dC0+c2VydmVyX2NyZWRzLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5wdXRfdG9rZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHU1NfQ19OT19DSEFOTkVMX0JJTkRJTkdTLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJnRleHQtPmNsaWVudF9uYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTlVMTCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91 dHB1dF90b2tlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisrCisrICAgICAgICBpZiAoR1NTX0VSUk9SKG1h al9zdGF0KSkgeworKyAgICAgICAgICAgIHNhc2xfZ3NzX2xvZyh0ZXh0LT51dGlscywgbWFqX3N0 YXQsIG1pbl9zdGF0KTsKKysgICAgICAgICAgICB0ZXh0LT51dGlscy0+c2V0ZXJyb3IodGV4dC0+ dXRpbHMtPmNvbm4sIFNBU0xfTk9MT0csICJHU1NBUEkgRmFpbHVyZTogZ3NzX2FjY2VwdF9zZWNf Y29udGV4dCIpOworKyAgICAgICAgICAgIGlmIChvdXRwdXRfdG9rZW4tPnZhbHVlKSB7CisrICAg ICAgICAgICAgICAgICgqcF9rcmI1X2dzc19yZWxlYXNlX2J1ZmZlcikoJm1pbl9zdGF0LCBvdXRw dXRfdG9rZW4pOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBzYXNsX2dzc19mcmVlX2Nv bnRleHRfY29udGVudHModGV4dCk7CisrICAgICAgICAgICAgcmV0dXJuIFNBU0xfQkFEQVVUSDsK KysgICAgICAgIH0KKysKKysKKysgICAgICAgIGlmIChzZXJ2ZXJvdXRsZW4pCisrICAgICAgICAg ICAgKnNlcnZlcm91dGxlbiA9IG91dHB1dF90b2tlbi0+bGVuZ3RoOworKyAgICAgICAgaWYgKG91 dHB1dF90b2tlbi0+dmFsdWUpIHsKKysgICAgICAgICAgICBpZiAoc2VydmVyb3V0KSB7CisrICAg ICAgICAgICAgICAgIHJldCA9IF9wbHVnX2J1Zl9hbGxvYyh0ZXh0LT51dGlscywgJih0ZXh0LT5v dXRfYnVmKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYodGV4dC0+ b3V0X2J1Zl9sZW4pLCAqc2VydmVyb3V0bGVuKTsKKysgICAgICAgICAgICAgICAgaWYocmV0ICE9 IFNBU0xfT0spIHsKKysgICAgICAgICAgICAgICAgICAgICgqcF9rcmI1X2dzc19yZWxlYXNlX2J1 ZmZlcikoJm1pbl9zdGF0LCBvdXRwdXRfdG9rZW4pOworKyAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIHJldDsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBtZW1jcHkodGV4 dC0+b3V0X2J1Ziwgb3V0cHV0X3Rva2VuLT52YWx1ZSwgKnNlcnZlcm91dGxlbik7CisrICAgICAg ICAgICAgICAgICpzZXJ2ZXJvdXQgPSB0ZXh0LT5vdXRfYnVmOworKyAgICAgICAgICAgIH0KKysK KysgICAgICAgICAgICAoKnBfa3JiNV9nc3NfcmVsZWFzZV9idWZmZXIpKCZtaW5fc3RhdCwgb3V0 cHV0X3Rva2VuKTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgLyogTm8gb3V0cHV0 IHRva2VuLCBzZW5kIGFuIGVtcHR5IHN0cmluZyAqLworKyAgICAgICAgICAgICpzZXJ2ZXJvdXQg PSBHU1NBUElfQkxBTktfU1RSSU5HOworKyAgICAgICAgICAgIHNlcnZlcm91dGxlbiA9IDA7Cisr ICAgICAgICB9CisrCisrICAgICAgICBpZiAobWFqX3N0YXQgPT0gR1NTX1NfQ09NUExFVEUpIHsK KysgICAgICAgICAgICAvKiBTd2l0Y2ggdG8gc3NmIG5lZ290aWF0aW9uICovCisrICAgICAgICAg ICAgdGV4dC0+c3RhdGUgPSBTQVNMX0dTU0FQSV9TVEFURV9TU0ZDQVA7CisrICAgICAgICB9Cisr CisrICAgICAgICByZXR1cm4gU0FTTF9DT05USU5VRTsKKyAKKyAgICAgY2FzZSBTQVNMX0dTU0FQ SV9TVEFURV9TU0ZDQVA6IHsKKy0JdW5zaWduZWQgY2hhciBzYXNsZGF0YVs0XTsKKy0JZ3NzX2J1 ZmZlcl9kZXNjIG5hbWVfdG9rZW47CistCWdzc19idWZmZXJfZGVzYyBuYW1lX3dpdGhvdXRfcmVh bG07CistCWdzc19uYW1lX3Qgd2l0aG91dCA9IE5VTEw7CistCWludCBlcXVhbDsKKy0JCistCW5h bWVfdG9rZW4udmFsdWUgPSBOVUxMOworLQluYW1lX3dpdGhvdXRfcmVhbG0udmFsdWUgPSBOVUxM OworLQkKKy0JLyogV2UgaWdub3JlIHdoYXRldmVyIHRoZSBjbGllbnQgc2VudCB1cyBhdCB0aGlz IHN0YWdlICovCistCQorLQltYWpfc3RhdCA9ICgqcF9rcmI1X2dzc19kaXNwbGF5X25hbWUpICgm bWluX3N0YXQsCistCQkJCSAgICAgdGV4dC0+Y2xpZW50X25hbWUsCistCQkJCSAgICAgJm5hbWVf dG9rZW4sCistCQkJCSAgICAgTlVMTCk7CistCQorLQlpZiAoR1NTX0VSUk9SKG1hal9zdGF0KSkg eworLQkgICAgaWYgKG5hbWVfd2l0aG91dF9yZWFsbS52YWx1ZSkKKy0JCXBhcmFtcy0+dXRpbHMt PmZyZWUobmFtZV93aXRob3V0X3JlYWxtLnZhbHVlKTsKKy0JICAgIAorLQkgICAgaWYgKG5hbWVf dG9rZW4udmFsdWUpCistCQkoKnBfa3JiNV9nc3NfcmVsZWFzZV9idWZmZXIpKCZtaW5fc3RhdCwg Jm5hbWVfdG9rZW4pOworLQkgICAgaWYgKHdpdGhvdXQpCistCQkoKnBfa3JiNV9nc3NfcmVsZWFz ZV9uYW1lKSgmbWluX3N0YXQsICZ3aXRob3V0KTsKKy0JICAgIFNFVEVSUk9SKHRleHQtPnV0aWxz LCAiR1NTQVBJIEZhaWx1cmUiKTsKKy0JICAgIHNhc2xfZ3NzX2ZyZWVfY29udGV4dF9jb250ZW50 cyh0ZXh0KTsKKy0JICAgIHJldHVybiBTQVNMX0JBREFVVEg7CistCX0KKy0JCistCS8qIElmIHRo ZSBpZCBjb250YWlucyBhIHJlYWxtIGdldCB0aGUgaWRlbnRpZmllciBmb3IgdGhlIHVzZXIKKy0J ICAgd2l0aG91dCB0aGUgcmVhbG0gYW5kIHNlZSBpZiBpdCdzIHRoZSBzYW1lIGlkIChpLmUuIAor LQkgICB0bWFydGluID09IHRtYXJ0aW5AQU5EUkVXLkNNVS5FRFUuIElmIHRoaXMgaXMgdGhlIGNh c2Ugd2UganVzdCB3YW50CistCSAgIHRvIHJldHVybiB0aGUgaWQgKGkuZS4ganVzdCAidG1hcnRp biIgKi8KKy0JaWYgKHN0cmNocigoY2hhciAqKSBuYW1lX3Rva2VuLnZhbHVlLCAoaW50KSAnQCcp ICE9IE5VTEwpIHsKKy0JICAgIC8qIE5PVEU6IGxpYmMgbWFsbG9jLCBhcyBpdCBpcyBmcmVlZCBi ZWxvdyBieSBhIGdzc2FwaSBpbnRlcm5hbAorLQkgICAgICogICAgICAgZnVuY3Rpb24hICovCist CSAgICBuYW1lX3dpdGhvdXRfcmVhbG0udmFsdWUgPSBtYWxsb2Moc3RybGVuKG5hbWVfdG9rZW4u dmFsdWUpKzEpOworLQkgICAgaWYgKG5hbWVfd2l0aG91dF9yZWFsbS52YWx1ZSA9PSBOVUxMKSB7 CistCQlNRU1FUlJPUih0ZXh0LT51dGlscyk7CistCQlyZXR1cm4gU0FTTF9OT01FTTsKKy0JICAg IH0KKy0JICAgIAorLQkgICAgc3RyY3B5KG5hbWVfd2l0aG91dF9yZWFsbS52YWx1ZSwgbmFtZV90 b2tlbi52YWx1ZSk7CistCSAgICAKKy0JICAgIC8qIGN1dCBvZmYgc3RyaW5nIGF0ICdAJyAqLwor LQkgICAgKHN0cmNocihuYW1lX3dpdGhvdXRfcmVhbG0udmFsdWUsJ0AnKSlbMF0gPSAnXDAnOwor LQkgICAgCistCSAgICBuYW1lX3dpdGhvdXRfcmVhbG0ubGVuZ3RoID0gc3RybGVuKCAoY2hhciAq KSBuYW1lX3dpdGhvdXRfcmVhbG0udmFsdWUgKTsKKy0JICAgIAorLQkgICAgbWFqX3N0YXQgPSAo KnBfa3JiNV9nc3NfaW1wb3J0X25hbWUpICgmbWluX3N0YXQsCistCQkJCQkmbmFtZV93aXRob3V0 X3JlYWxtLAorLQkgICAgLyogU29sYXJpcyA4LzkgZ3NzX2ltcG9ydF9uYW1lIGRvZXNuJ3QgYWNj ZXB0IEdTU19DX05VTExfT0lEIGhlcmUsCistCSAgICAgICBzbyB1c2UgR1NTX0NfTlRfVVNFUl9O QU1FIGluc3RlYWQgaWYgYXZhaWxhYmxlLiAgKi8KKysgICAgICAgIHVuc2lnbmVkIGNoYXIgc2Fz bGRhdGFbNF07CisrICAgICAgICBnc3NfYnVmZmVyX2Rlc2MgbmFtZV90b2tlbjsKKysgICAgICAg IGdzc19idWZmZXJfZGVzYyBuYW1lX3dpdGhvdXRfcmVhbG07CisrICAgICAgICBnc3NfbmFtZV90 IHdpdGhvdXQgPSBOVUxMOworKyAgICAgICAgaW50IGVxdWFsOworKworKyAgICAgICAgbmFtZV90 b2tlbi52YWx1ZSA9IE5VTEw7CisrICAgICAgICBuYW1lX3dpdGhvdXRfcmVhbG0udmFsdWUgPSBO VUxMOworKworKyAgICAgICAgLyogV2UgaWdub3JlIHdoYXRldmVyIHRoZSBjbGllbnQgc2VudCB1 cyBhdCB0aGlzIHN0YWdlICovCisrCisrICAgICAgICBtYWpfc3RhdCA9ICgqcF9rcmI1X2dzc19k aXNwbGF5X25hbWUpICgmbWluX3N0YXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRleHQtPmNsaWVudF9uYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmbmFtZV90b2tlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTlVMTCk7CisrCisrICAgICAgICBpZiAoR1NTX0VSUk9SKG1hal9zdGF0KSkgeworKyAgICAg ICAgICAgIGlmIChuYW1lX3dpdGhvdXRfcmVhbG0udmFsdWUpCisrICAgICAgICAgICAgICAgIHBh cmFtcy0+dXRpbHMtPmZyZWUobmFtZV93aXRob3V0X3JlYWxtLnZhbHVlKTsKKysKKysgICAgICAg ICAgICBpZiAobmFtZV90b2tlbi52YWx1ZSkKKysgICAgICAgICAgICAgICAgKCpwX2tyYjVfZ3Nz X3JlbGVhc2VfYnVmZmVyKSgmbWluX3N0YXQsICZuYW1lX3Rva2VuKTsKKysgICAgICAgICAgICBp ZiAod2l0aG91dCkKKysgICAgICAgICAgICAgICAgKCpwX2tyYjVfZ3NzX3JlbGVhc2VfbmFtZSko Jm1pbl9zdGF0LCAmd2l0aG91dCk7CisrICAgICAgICAgICAgU0VURVJST1IodGV4dC0+dXRpbHMs ICJHU1NBUEkgRmFpbHVyZSIpOworKyAgICAgICAgICAgIHNhc2xfZ3NzX2ZyZWVfY29udGV4dF9j b250ZW50cyh0ZXh0KTsKKysgICAgICAgICAgICByZXR1cm4gU0FTTF9CQURBVVRIOworKyAgICAg ICAgfQorKworKyAgICAgICAgLyogSWYgdGhlIGlkIGNvbnRhaW5zIGEgcmVhbG0gZ2V0IHRoZSBp ZGVudGlmaWVyIGZvciB0aGUgdXNlcgorKyAgICAgICAgICAgd2l0aG91dCB0aGUgcmVhbG0gYW5k IHNlZSBpZiBpdCdzIHRoZSBzYW1lIGlkIChpLmUuCisrICAgICAgICAgICB0bWFydGluID09IHRt YXJ0aW5AQU5EUkVXLkNNVS5FRFUuIElmIHRoaXMgaXMgdGhlIGNhc2Ugd2UganVzdCB3YW50Cisr ICAgICAgICAgICB0byByZXR1cm4gdGhlIGlkIChpLmUuIGp1c3QgInRtYXJ0aW4iICovCisrICAg ICAgICBpZiAoc3RyY2hyKChjaGFyICopIG5hbWVfdG9rZW4udmFsdWUsIChpbnQpICdAJykgIT0g TlVMTCkgeworKyAgICAgICAgICAgIC8qIE5PVEU6IGxpYmMgbWFsbG9jLCBhcyBpdCBpcyBmcmVl ZCBiZWxvdyBieSBhIGdzc2FwaSBpbnRlcm5hbAorKyAgICAgICAgICAgICAqICAgICAgIGZ1bmN0 aW9uISAqLworKyAgICAgICAgICAgIG5hbWVfd2l0aG91dF9yZWFsbS52YWx1ZSA9IG1hbGxvYyhz dHJsZW4obmFtZV90b2tlbi52YWx1ZSkrMSk7CisrICAgICAgICAgICAgaWYgKG5hbWVfd2l0aG91 dF9yZWFsbS52YWx1ZSA9PSBOVUxMKSB7CisrICAgICAgICAgICAgICAgIE1FTUVSUk9SKHRleHQt PnV0aWxzKTsKKysgICAgICAgICAgICAgICAgcmV0dXJuIFNBU0xfTk9NRU07CisrICAgICAgICAg ICAgfQorKworKyAgICAgICAgICAgIHN0cmNweShuYW1lX3dpdGhvdXRfcmVhbG0udmFsdWUsIG5h bWVfdG9rZW4udmFsdWUpOworKworKyAgICAgICAgICAgIC8qIGN1dCBvZmYgc3RyaW5nIGF0ICdA JyAqLworKyAgICAgICAgICAgIChzdHJjaHIobmFtZV93aXRob3V0X3JlYWxtLnZhbHVlLCdAJykp WzBdID0gJ1wwJzsKKysKKysgICAgICAgICAgICBuYW1lX3dpdGhvdXRfcmVhbG0ubGVuZ3RoID0g c3RybGVuKCAoY2hhciAqKSBuYW1lX3dpdGhvdXRfcmVhbG0udmFsdWUgKTsKKysKKysgICAgICAg ICAgICBtYWpfc3RhdCA9ICgqcF9rcmI1X2dzc19pbXBvcnRfbmFtZSkgKCZtaW5fc3RhdCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWVfd2l0aG91dF9yZWFs bSwKKysgICAgICAgICAgICAvKiBTb2xhcmlzIDgvOSBnc3NfaW1wb3J0X25hbWUgZG9lc24ndCBh Y2NlcHQgR1NTX0NfTlVMTF9PSUQgaGVyZSwKKysgICAgICAgICAgICAgICBzbyB1c2UgR1NTX0Nf TlRfVVNFUl9OQU1FIGluc3RlYWQgaWYgYXZhaWxhYmxlLiAgKi8KKyAjaWZkZWYgSEFWRV9HU1Nf Q19OVF9VU0VSX05BTUUKKy0JCQkJCUdTU19DX05UX1VTRVJfTkFNRSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NTX0NfTlRfVVNFUl9OQU1FLAorICNlbHNlCist CQkJCQlHU1NfQ19OVUxMX09JRCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR1NTX0NfTlVMTF9PSUQsCisgI2VuZGlmCistCQkJCQkmd2l0aG91dCk7CistCSAgICAK Ky0JICAgIGlmIChHU1NfRVJST1IobWFqX3N0YXQpKSB7CistCQlwYXJhbXMtPnV0aWxzLT5mcmVl KG5hbWVfd2l0aG91dF9yZWFsbS52YWx1ZSk7CistCQlpZiAobmFtZV90b2tlbi52YWx1ZSkKKy0J CSAgICAoKnBfa3JiNV9nc3NfcmVsZWFzZV9idWZmZXIpKCZtaW5fc3RhdCwgJm5hbWVfdG9rZW4p OworLQkJaWYgKHdpdGhvdXQpCistCQkgICAgKCpwX2tyYjVfZ3NzX3JlbGVhc2VfbmFtZSkoJm1p bl9zdGF0LCAmd2l0aG91dCk7CistCQlTRVRFUlJPUih0ZXh0LT51dGlscywgIkdTU0FQSSBGYWls dXJlIik7CistCQlzYXNsX2dzc19mcmVlX2NvbnRleHRfY29udGVudHModGV4dCk7CistCQlyZXR1 cm4gU0FTTF9CQURBVVRIOworLQkgICAgfQorLQkgICAgCistCSAgICBtYWpfc3RhdCA9ICgqcF9r cmI1X2dzc19jb21wYXJlX25hbWUpKCZtaW5fc3RhdCwKKy0JCQkJCXRleHQtPmNsaWVudF9uYW1l LAorLQkJCQkJd2l0aG91dCwKKy0JCQkJCSZlcXVhbCk7CistCSAgICAKKy0JICAgIGlmIChHU1Nf RVJST1IobWFqX3N0YXQpKSB7CistCQlwYXJhbXMtPnV0aWxzLT5mcmVlKG5hbWVfd2l0aG91dF9y ZWFsbS52YWx1ZSk7CistCQlpZiAobmFtZV90b2tlbi52YWx1ZSkKKy0JCSAgICAoKnBfa3JiNV9n c3NfcmVsZWFzZV9idWZmZXIpKCZtaW5fc3RhdCwgJm5hbWVfdG9rZW4pOworLQkJaWYgKHdpdGhv dXQpCistCQkgICAgKCpwX2tyYjVfZ3NzX3JlbGVhc2VfbmFtZSkoJm1pbl9zdGF0LCAmd2l0aG91 dCk7CistCQlTRVRFUlJPUih0ZXh0LT51dGlscywgIkdTU0FQSSBGYWlsdXJlIik7CistCQlzYXNs X2dzc19mcmVlX2NvbnRleHRfY29udGVudHModGV4dCk7CistCQlyZXR1cm4gU0FTTF9CQURBVVRI OworLQkgICAgfQorLQkgICAgCistCSAgICAoKnBfa3JiNV9nc3NfcmVsZWFzZV9uYW1lKSgmbWlu X3N0YXQsJndpdGhvdXQpOworLQl9IGVsc2UgeworLQkgICAgZXF1YWwgPSAwOworLQl9CistCQor LQlpZiAoZXF1YWwpIHsKKy0JICAgIHRleHQtPmF1dGhpZCA9IHN0cmR1cChuYW1lX3dpdGhvdXRf cmVhbG0udmFsdWUpOworLQkgICAgCistCSAgICBpZiAodGV4dC0+YXV0aGlkID09IE5VTEwpIHsK Ky0JCU1FTUVSUk9SKHBhcmFtcy0+dXRpbHMpOworLQkJcmV0dXJuIFNBU0xfTk9NRU07CistCSAg ICB9CistCX0gZWxzZSB7CistCSAgICB0ZXh0LT5hdXRoaWQgPSBzdHJkdXAobmFtZV90b2tlbi52 YWx1ZSk7CistCSAgICAKKy0JICAgIGlmICh0ZXh0LT5hdXRoaWQgPT0gTlVMTCkgeworLQkJTUVN RVJST1IocGFyYW1zLT51dGlscyk7CistCQlyZXR1cm4gU0FTTF9OT01FTTsKKy0JICAgIH0KKy0J fQorLQkKKy0JaWYgKG5hbWVfdG9rZW4udmFsdWUpCistCSAgICAoKnBfa3JiNV9nc3NfcmVsZWFz ZV9idWZmZXIpKCZtaW5fc3RhdCwgJm5hbWVfdG9rZW4pOworLQlpZiAobmFtZV93aXRob3V0X3Jl YWxtLnZhbHVlKQorLQkgICAgcGFyYW1zLT51dGlscy0+ZnJlZShuYW1lX3dpdGhvdXRfcmVhbG0u dmFsdWUpOworLQkKKy0JCistCS8qIHdlIGhhdmUgdG8gZGVjaWRlIHdoYXQgc29ydCBvZiBlbmNy eXB0aW9uL2ludGVncml0eS9ldGMuLAorLQkgICB3ZSBzdXBwb3J0ICovCistCWlmIChwYXJhbXMt PnByb3BzLm1heF9zc2YgPCBwYXJhbXMtPmV4dGVybmFsX3NzZikgeworLQkgICAgdGV4dC0+bGlt aXRzc2YgPSAwOworLQl9IGVsc2UgeworLQkgICAgdGV4dC0+bGltaXRzc2YgPSBwYXJhbXMtPnBy b3BzLm1heF9zc2YgLSBwYXJhbXMtPmV4dGVybmFsX3NzZjsKKy0JfQorLQlpZiAocGFyYW1zLT5w cm9wcy5taW5fc3NmIDwgcGFyYW1zLT5leHRlcm5hbF9zc2YpIHsKKy0JICAgIHRleHQtPnJlcXVp cmVzc2YgPSAwOworLQl9IGVsc2UgeworLQkgICAgdGV4dC0+cmVxdWlyZXNzZiA9IHBhcmFtcy0+ cHJvcHMubWluX3NzZiAtIHBhcmFtcy0+ZXh0ZXJuYWxfc3NmOworLQl9CistCQorLQkvKiBidWls ZCB1cCBvdXIgc2VjdXJpdHkgcHJvcGVydGllcyB0b2tlbiAqLworKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmd2l0aG91dCk7CisrCisrICAgICAgICAgICAgaWYgKEdT U19FUlJPUihtYWpfc3RhdCkpIHsKKysgICAgICAgICAgICAgICAgcGFyYW1zLT51dGlscy0+ZnJl ZShuYW1lX3dpdGhvdXRfcmVhbG0udmFsdWUpOworKyAgICAgICAgICAgICAgICBpZiAobmFtZV90 b2tlbi52YWx1ZSkKKysgICAgICAgICAgICAgICAgICAgICgqcF9rcmI1X2dzc19yZWxlYXNlX2J1 ZmZlcikoJm1pbl9zdGF0LCAmbmFtZV90b2tlbik7CisrICAgICAgICAgICAgICAgIGlmICh3aXRo b3V0KQorKyAgICAgICAgICAgICAgICAgICAgKCpwX2tyYjVfZ3NzX3JlbGVhc2VfbmFtZSkoJm1p bl9zdGF0LCAmd2l0aG91dCk7CisrICAgICAgICAgICAgICAgIFNFVEVSUk9SKHRleHQtPnV0aWxz LCAiR1NTQVBJIEZhaWx1cmUiKTsKKysgICAgICAgICAgICAgICAgc2FzbF9nc3NfZnJlZV9jb250 ZXh0X2NvbnRlbnRzKHRleHQpOworKyAgICAgICAgICAgICAgICByZXR1cm4gU0FTTF9CQURBVVRI OworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBtYWpfc3RhdCA9ICgqcF9rcmI1X2dz c19jb21wYXJlX25hbWUpKCZtaW5fc3RhdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGV4dC0+Y2xpZW50X25hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHdpdGhvdXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZlcXVhbCk7CisrCisrICAgICAgICAgICAgaWYgKEdTU19FUlJPUihtYWpfc3Rh dCkpIHsKKysgICAgICAgICAgICAgICAgcGFyYW1zLT51dGlscy0+ZnJlZShuYW1lX3dpdGhvdXRf cmVhbG0udmFsdWUpOworKyAgICAgICAgICAgICAgICBpZiAobmFtZV90b2tlbi52YWx1ZSkKKysg ICAgICAgICAgICAgICAgICAgICgqcF9rcmI1X2dzc19yZWxlYXNlX2J1ZmZlcikoJm1pbl9zdGF0 LCAmbmFtZV90b2tlbik7CisrICAgICAgICAgICAgICAgIGlmICh3aXRob3V0KQorKyAgICAgICAg ICAgICAgICAgICAgKCpwX2tyYjVfZ3NzX3JlbGVhc2VfbmFtZSkoJm1pbl9zdGF0LCAmd2l0aG91 dCk7CisrICAgICAgICAgICAgICAgIFNFVEVSUk9SKHRleHQtPnV0aWxzLCAiR1NTQVBJIEZhaWx1 cmUiKTsKKysgICAgICAgICAgICAgICAgc2FzbF9nc3NfZnJlZV9jb250ZXh0X2NvbnRlbnRzKHRl eHQpOworKyAgICAgICAgICAgICAgICByZXR1cm4gU0FTTF9CQURBVVRIOworKyAgICAgICAgICAg IH0KKysKKysgICAgICAgICAgICAoKnBfa3JiNV9nc3NfcmVsZWFzZV9uYW1lKSgmbWluX3N0YXQs JndpdGhvdXQpOworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBlcXVhbCA9IDA7Cisr ICAgICAgICB9CisrCisrICAgICAgICBpZiAoZXF1YWwpIHsKKysgICAgICAgICAgICB0ZXh0LT5h dXRoaWQgPSBzdHJkdXAobmFtZV93aXRob3V0X3JlYWxtLnZhbHVlKTsKKysKKysgICAgICAgICAg ICBpZiAodGV4dC0+YXV0aGlkID09IE5VTEwpIHsKKysgICAgICAgICAgICAgICAgTUVNRVJST1Io cGFyYW1zLT51dGlscyk7CisrICAgICAgICAgICAgICAgIHJldHVybiBTQVNMX05PTUVNOworKyAg ICAgICAgICAgIH0KKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgdGV4dC0+YXV0aGlk ID0gc3RyZHVwKG5hbWVfdG9rZW4udmFsdWUpOworKworKyAgICAgICAgICAgIGlmICh0ZXh0LT5h dXRoaWQgPT0gTlVMTCkgeworKyAgICAgICAgICAgICAgICBNRU1FUlJPUihwYXJhbXMtPnV0aWxz KTsKKysgICAgICAgICAgICAgICAgcmV0dXJuIFNBU0xfTk9NRU07CisrICAgICAgICAgICAgfQor KyAgICAgICAgfQorKworKyAgICAgICAgaWYgKG5hbWVfdG9rZW4udmFsdWUpCisrICAgICAgICAg ICAgKCpwX2tyYjVfZ3NzX3JlbGVhc2VfYnVmZmVyKSgmbWluX3N0YXQsICZuYW1lX3Rva2VuKTsK KysgICAgICAgIGlmIChuYW1lX3dpdGhvdXRfcmVhbG0udmFsdWUpCisrICAgICAgICAgICAgcGFy YW1zLT51dGlscy0+ZnJlZShuYW1lX3dpdGhvdXRfcmVhbG0udmFsdWUpOworKworKworKyAgICAg ICAgLyogd2UgaGF2ZSB0byBkZWNpZGUgd2hhdCBzb3J0IG9mIGVuY3J5cHRpb24vaW50ZWdyaXR5 L2V0Yy4sCisrICAgICAgICAgICB3ZSBzdXBwb3J0ICovCisrICAgICAgICBpZiAocGFyYW1zLT5w cm9wcy5tYXhfc3NmIDwgcGFyYW1zLT5leHRlcm5hbF9zc2YpIHsKKysgICAgICAgICAgICB0ZXh0 LT5saW1pdHNzZiA9IDA7CisrICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgIHRleHQtPmxp bWl0c3NmID0gcGFyYW1zLT5wcm9wcy5tYXhfc3NmIC0gcGFyYW1zLT5leHRlcm5hbF9zc2Y7Cisr ICAgICAgICB9CisrICAgICAgICBpZiAocGFyYW1zLT5wcm9wcy5taW5fc3NmIDwgcGFyYW1zLT5l eHRlcm5hbF9zc2YpIHsKKysgICAgICAgICAgICB0ZXh0LT5yZXF1aXJlc3NmID0gMDsKKysgICAg ICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgdGV4dC0+cmVxdWlyZXNzZiA9IHBhcmFtcy0+cHJv cHMubWluX3NzZiAtIHBhcmFtcy0+ZXh0ZXJuYWxfc3NmOworKyAgICAgICAgfQorKworKyAgICAg ICAgLyogYnVpbGQgdXAgb3VyIHNlY3VyaXR5IHByb3BlcnRpZXMgdG9rZW4gKi8KKyAgICAgICAg IGlmIChwYXJhbXMtPnByb3BzLm1heGJ1ZnNpemUgPiAweEZGRkZGRikgeworICAgICAgICAgICAg IC8qIG1ha2Ugc3VyZSBtYXhidWZzaXplIGlzbid0IHRvbyBsYXJnZSAqLworICAgICAgICAgICAg IC8qIG1heGJ1ZnNpemUgPSAweEZGRkZGRiAqLworQEAgLTk1MiwyMjYgKzk1MiwyMjYgQEAgZ3Nz YXBpX3NlcnZlcl9tZWNoX3N0ZXAodm9pZCAqY29ubl9jb250ZXh0LAorICAgICAgICAgICAgIHNh c2xkYXRhWzJdID0gKHBhcmFtcy0+cHJvcHMubWF4YnVmc2l6ZSA+PiA4KSAmIDB4RkY7CisgICAg ICAgICAgICAgc2FzbGRhdGFbM10gPSAocGFyYW1zLT5wcm9wcy5tYXhidWZzaXplID4+IDApICYg MHhGRjsKKyAgICAgICAgIH0KKy0Jc2FzbGRhdGFbMF0gPSAwOworLQlpZih0ZXh0LT5yZXF1aXJl c3NmICE9IDAgJiYgIXBhcmFtcy0+cHJvcHMubWF4YnVmc2l6ZSkgeworLQkgICAgcGFyYW1zLT51 dGlscy0+c2V0ZXJyb3IocGFyYW1zLT51dGlscy0+Y29ubiwgMCwKKy0JCQkJICAgICJHU1NBUEkg bmVlZHMgYSBzZWN1cml0eSBsYXllciBidXQgb25lIGlzIGZvcmJpZGRlbiIpOworLQkgICAgcmV0 dXJuIFNBU0xfVE9PV0VBSzsKKy0JfQorLQkKKy0JaWYgKHRleHQtPnJlcXVpcmVzc2YgPT0gMCkg eworLQkgICAgc2FzbGRhdGFbMF0gfD0gMTsgLyogYXV0aGVudGljYXRpb24gKi8KKy0JfQorLQlp ZiAodGV4dC0+cmVxdWlyZXNzZiA8PSAxICYmIHRleHQtPmxpbWl0c3NmID49IDEKKy0JICAgICYm IHBhcmFtcy0+cHJvcHMubWF4YnVmc2l6ZSkgeworLQkgICAgc2FzbGRhdGFbMF0gfD0gMjsKKy0J fQorLQlpZiAodGV4dC0+cmVxdWlyZXNzZiA8PSBLNV9NQVhfU1NGICYmIHRleHQtPmxpbWl0c3Nm ID49IEs1X01BWF9TU0YKKy0JICAgICYmIHBhcmFtcy0+cHJvcHMubWF4YnVmc2l6ZSkgeworLQkg ICAgc2FzbGRhdGFbMF0gfD0gNDsKKy0JfQorLQkKKy0JcmVhbF9pbnB1dF90b2tlbi52YWx1ZSA9 ICh2b2lkICopc2FzbGRhdGE7CistCXJlYWxfaW5wdXRfdG9rZW4ubGVuZ3RoID0gNDsKKy0JCist CW1hal9zdGF0ID0gKCpwX2tyYjVfZ3NzX3dyYXApKCZtaW5fc3RhdCwKKy0JCQkgICAgdGV4dC0+ Z3NzX2N0eCwKKy0JCQkgICAgMCwgLyogSnVzdCBpbnRlZ3JpdHkgY2hlY2tpbmcgaGVyZSAqLwor LQkJCSAgICBHU1NfQ19RT1BfREVGQVVMVCwKKy0JCQkgICAgaW5wdXRfdG9rZW4sCistCQkJICAg IE5VTEwsCistCQkJICAgIG91dHB1dF90b2tlbik7CistCQorLQlpZiAoR1NTX0VSUk9SKG1hal9z dGF0KSkgeworLQkgICAgc2FzbF9nc3Nfc2V0ZXJyb3IodGV4dC0+dXRpbHMsIG1hal9zdGF0LCBt aW5fc3RhdCk7CistCSAgICBpZiAob3V0cHV0X3Rva2VuLT52YWx1ZSkKKy0JCSgqcF9rcmI1X2dz c19yZWxlYXNlX2J1ZmZlcikoJm1pbl9zdGF0LCBvdXRwdXRfdG9rZW4pOworLQkgICAgc2FzbF9n c3NfZnJlZV9jb250ZXh0X2NvbnRlbnRzKHRleHQpOworLQkgICAgcmV0dXJuIFNBU0xfRkFJTDsK Ky0JfQorLQkKKy0JCistCWlmIChzZXJ2ZXJvdXRsZW4pCistCSAgICAqc2VydmVyb3V0bGVuID0g b3V0cHV0X3Rva2VuLT5sZW5ndGg7CistCWlmIChvdXRwdXRfdG9rZW4tPnZhbHVlKSB7CistCSAg ICBpZiAoc2VydmVyb3V0KSB7CistCQlyZXQgPSBfcGx1Z19idWZfYWxsb2ModGV4dC0+dXRpbHMs ICYodGV4dC0+b3V0X2J1ZiksCistCQkJCSAgICAgICYodGV4dC0+b3V0X2J1Zl9sZW4pLCAqc2Vy dmVyb3V0bGVuKTsKKy0JCWlmKHJldCAhPSBTQVNMX09LKSB7CistCQkgICAgKCpwX2tyYjVfZ3Nz X3JlbGVhc2VfYnVmZmVyKSgmbWluX3N0YXQsIG91dHB1dF90b2tlbik7CistCQkgICAgcmV0dXJu IHJldDsKKy0JCX0KKy0JCW1lbWNweSh0ZXh0LT5vdXRfYnVmLCBvdXRwdXRfdG9rZW4tPnZhbHVl LCAqc2VydmVyb3V0bGVuKTsKKy0JCSpzZXJ2ZXJvdXQgPSB0ZXh0LT5vdXRfYnVmOworLQkgICAg fQorLQkgICAgCistCSAgICAoKnBfa3JiNV9nc3NfcmVsZWFzZV9idWZmZXIpKCZtaW5fc3RhdCwg b3V0cHV0X3Rva2VuKTsKKy0JfQorLQkKKy0JLyogV2FpdCBmb3Igc3NmIHJlcXVlc3QgYW5kIGF1 dGhpZCAqLworLQl0ZXh0LT5zdGF0ZSA9IFNBU0xfR1NTQVBJX1NUQVRFX1NTRlJFUTsgCistCQor LQlyZXR1cm4gU0FTTF9DT05USU5VRTsKKysgICAgICAgIHNhc2xkYXRhWzBdID0gMDsKKysgICAg ICAgIGlmKHRleHQtPnJlcXVpcmVzc2YgIT0gMCAmJiAhcGFyYW1zLT5wcm9wcy5tYXhidWZzaXpl KSB7CisrICAgICAgICAgICAgcGFyYW1zLT51dGlscy0+c2V0ZXJyb3IocGFyYW1zLT51dGlscy0+ Y29ubiwgMCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR1NTQVBJIG5l ZWRzIGEgc2VjdXJpdHkgbGF5ZXIgYnV0IG9uZSBpcyBmb3JiaWRkZW4iKTsKKysgICAgICAgICAg ICByZXR1cm4gU0FTTF9UT09XRUFLOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKHRleHQt PnJlcXVpcmVzc2YgPT0gMCkgeworKyAgICAgICAgICAgIHNhc2xkYXRhWzBdIHw9IDE7IC8qIGF1 dGhlbnRpY2F0aW9uICovCisrICAgICAgICB9CisrICAgICAgICBpZiAodGV4dC0+cmVxdWlyZXNz ZiA8PSAxICYmIHRleHQtPmxpbWl0c3NmID49IDEKKysgICAgICAgICAgICAmJiBwYXJhbXMtPnBy b3BzLm1heGJ1ZnNpemUpIHsKKysgICAgICAgICAgICBzYXNsZGF0YVswXSB8PSAyOworKyAgICAg ICAgfQorKyAgICAgICAgaWYgKHRleHQtPnJlcXVpcmVzc2YgPD0gSzVfTUFYX1NTRiAmJiB0ZXh0 LT5saW1pdHNzZiA+PSBLNV9NQVhfU1NGCisrICAgICAgICAgICAgJiYgcGFyYW1zLT5wcm9wcy5t YXhidWZzaXplKSB7CisrICAgICAgICAgICAgc2FzbGRhdGFbMF0gfD0gNDsKKysgICAgICAgIH0K KysKKysgICAgICAgIHJlYWxfaW5wdXRfdG9rZW4udmFsdWUgPSAodm9pZCAqKXNhc2xkYXRhOwor KyAgICAgICAgcmVhbF9pbnB1dF90b2tlbi5sZW5ndGggPSA0OworKworKyAgICAgICAgbWFqX3N0 YXQgPSAoKnBfa3JiNV9nc3Nfd3JhcCkoJm1pbl9zdGF0LAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0ZXh0LT5nc3NfY3R4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAv KiBKdXN0IGludGVncml0eSBjaGVja2luZyBoZXJlICovCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdTU19DX1FPUF9ERUZBVUxULAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnB1dF90b2tlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X3Rva2VuKTsKKysKKysgICAgICAgIGlmIChHU1Nf RVJST1IobWFqX3N0YXQpKSB7CisrICAgICAgICAgICAgc2FzbF9nc3Nfc2V0ZXJyb3IodGV4dC0+ dXRpbHMsIG1hal9zdGF0LCBtaW5fc3RhdCk7CisrICAgICAgICAgICAgaWYgKG91dHB1dF90b2tl bi0+dmFsdWUpCisrICAgICAgICAgICAgICAgICgqcF9rcmI1X2dzc19yZWxlYXNlX2J1ZmZlciko Jm1pbl9zdGF0LCBvdXRwdXRfdG9rZW4pOworKyAgICAgICAgICAgIHNhc2xfZ3NzX2ZyZWVfY29u dGV4dF9jb250ZW50cyh0ZXh0KTsKKysgICAgICAgICAgICByZXR1cm4gU0FTTF9GQUlMOworKyAg ICAgICAgfQorKworKworKyAgICAgICAgaWYgKHNlcnZlcm91dGxlbikKKysgICAgICAgICAgICAq c2VydmVyb3V0bGVuID0gb3V0cHV0X3Rva2VuLT5sZW5ndGg7CisrICAgICAgICBpZiAob3V0cHV0 X3Rva2VuLT52YWx1ZSkgeworKyAgICAgICAgICAgIGlmIChzZXJ2ZXJvdXQpIHsKKysgICAgICAg ICAgICAgICAgcmV0ID0gX3BsdWdfYnVmX2FsbG9jKHRleHQtPnV0aWxzLCAmKHRleHQtPm91dF9i dWYpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih0ZXh0LT5vdXRf YnVmX2xlbiksICpzZXJ2ZXJvdXRsZW4pOworKyAgICAgICAgICAgICAgICBpZihyZXQgIT0gU0FT TF9PSykgeworKyAgICAgICAgICAgICAgICAgICAgKCpwX2tyYjVfZ3NzX3JlbGVhc2VfYnVmZmVy KSgmbWluX3N0YXQsIG91dHB1dF90b2tlbik7CisrICAgICAgICAgICAgICAgICAgICByZXR1cm4g cmV0OworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIG1lbWNweSh0ZXh0LT5v dXRfYnVmLCBvdXRwdXRfdG9rZW4tPnZhbHVlLCAqc2VydmVyb3V0bGVuKTsKKysgICAgICAgICAg ICAgICAgKnNlcnZlcm91dCA9IHRleHQtPm91dF9idWY7CisrICAgICAgICAgICAgfQorKworKyAg ICAgICAgICAgICgqcF9rcmI1X2dzc19yZWxlYXNlX2J1ZmZlcikoJm1pbl9zdGF0LCBvdXRwdXRf dG9rZW4pOworKyAgICAgICAgfQorKworKyAgICAgICAgLyogV2FpdCBmb3Igc3NmIHJlcXVlc3Qg YW5kIGF1dGhpZCAqLworKyAgICAgICAgdGV4dC0+c3RhdGUgPSBTQVNMX0dTU0FQSV9TVEFURV9T U0ZSRVE7CisrCisrICAgICAgICByZXR1cm4gU0FTTF9DT05USU5VRTsKKyAgICAgfQorIAorICAg ICBjYXNlIFNBU0xfR1NTQVBJX1NUQVRFX1NTRlJFUTogeworLQlpbnQgbGF5ZXJjaG9pY2U7Cist CQorLQlyZWFsX2lucHV0X3Rva2VuLnZhbHVlID0gKHZvaWQgKiljbGllbnRpbjsKKy0JcmVhbF9p bnB1dF90b2tlbi5sZW5ndGggPSBjbGllbnRpbmxlbjsKKy0JCistCW1hal9zdGF0ID0gKCpwX2ty YjVfZ3NzX3Vud3JhcCkoJm1pbl9zdGF0LAorLQkJCSAgICAgIHRleHQtPmdzc19jdHgsCistCQkJ ICAgICAgaW5wdXRfdG9rZW4sCistCQkJICAgICAgb3V0cHV0X3Rva2VuLAorLQkJCSAgICAgIE5V TEwsCistCQkJICAgICAgTlVMTCk7CistCQorLQlpZiAoR1NTX0VSUk9SKG1hal9zdGF0KSkgewor LQkgICAgc2FzbF9nc3Nfc2V0ZXJyb3IodGV4dC0+dXRpbHMsIG1hal9zdGF0LCBtaW5fc3RhdCk7 CistCSAgICBzYXNsX2dzc19mcmVlX2NvbnRleHRfY29udGVudHModGV4dCk7CistCSAgICByZXR1 cm4gU0FTTF9GQUlMOworLQl9CistCQorLQlsYXllcmNob2ljZSA9IChpbnQpKCgoY2hhciAqKShv dXRwdXRfdG9rZW4tPnZhbHVlKSlbMF0pOworLQlpZiAobGF5ZXJjaG9pY2UgPT0gMSAmJiB0ZXh0 LT5yZXF1aXJlc3NmID09IDApIHsgLyogbm8gZW5jcnlwdGlvbiAqLworLQkgICAgb3BhcmFtcy0+ ZW5jb2RlID0gTlVMTDsKKy0JICAgIG9wYXJhbXMtPmRlY29kZSA9IE5VTEw7CistCSAgICBvcGFy YW1zLT5tZWNoX3NzZiA9IDA7CistCX0gZWxzZSBpZiAobGF5ZXJjaG9pY2UgPT0gMiAmJiB0ZXh0 LT5yZXF1aXJlc3NmIDw9IDEgJiYKKy0JCSAgIHRleHQtPmxpbWl0c3NmID49IDEpIHsgLyogaW50 ZWdyaXR5ICovCistCSAgICBvcGFyYW1zLT5lbmNvZGU9Jmdzc2FwaV9pbnRlZ3JpdHlfZW5jb2Rl OworLQkgICAgb3BhcmFtcy0+ZGVjb2RlPSZnc3NhcGlfZGVjb2RlOworLQkgICAgb3BhcmFtcy0+ bWVjaF9zc2Y9MTsKKy0JfSBlbHNlIGlmIChsYXllcmNob2ljZSA9PSA0ICYmIHRleHQtPnJlcXVp cmVzc2YgPD0gSzVfTUFYX1NTRiAmJgorLQkJICAgdGV4dC0+bGltaXRzc2YgPj0gSzVfTUFYX1NT RikgeyAvKiBwcml2YWN5ICovCistCSAgICBvcGFyYW1zLT5lbmNvZGUgPSAmZ3NzYXBpX3ByaXZh Y3lfZW5jb2RlOworLQkgICAgb3BhcmFtcy0+ZGVjb2RlID0gJmdzc2FwaV9kZWNvZGU7CistCSAg ICAvKiBGSVggTUU6IE5lZWQgdG8gZXh0cmFjdCB0aGUgcHJvcGVyIHZhbHVlIGhlcmUgKi8KKy0J ICAgIG9wYXJhbXMtPm1lY2hfc3NmID0gSzVfTUFYX1NTRjsKKy0JfSBlbHNlIHsKKy0JICAgIC8q IG5vdCBhIHN1cHBvcnRlZCBlbmNyeXB0aW9uIGxheWVyICovCistCSAgICBTRVRFUlJPUih0ZXh0 LT51dGlscywKKy0JCSAgICAgInByb3RvY29sIHZpb2xhdGlvbjogY2xpZW50IHJlcXVlc3RlZCBp bnZhbGlkIGxheWVyIik7CistCSAgICAvKiBNYXJrIHRoYXQgd2UgYXR0ZW1wdGVkIG5lZ290aWF0 aW9uICovCistCSAgICBvcGFyYW1zLT5tZWNoX3NzZiA9IDI7CistCSAgICBpZiAob3V0cHV0X3Rv a2VuLT52YWx1ZSkKKy0JCSgqcF9rcmI1X2dzc19yZWxlYXNlX2J1ZmZlcikoJm1pbl9zdGF0LCBv dXRwdXRfdG9rZW4pOworLQkgICAgc2FzbF9nc3NfZnJlZV9jb250ZXh0X2NvbnRlbnRzKHRleHQp OworLQkgICAgcmV0dXJuIFNBU0xfRkFJTDsKKy0JfQorLQkKKy0JaWYgKG91dHB1dF90b2tlbi0+ bGVuZ3RoID4gNCkgeworLQkgICAgaW50IHJldDsKKy0JICAgIAorLQkgICAgcmV0ID0gcGFyYW1z LT5jYW5vbl91c2VyKHBhcmFtcy0+dXRpbHMtPmNvbm4sCistCQkJCSAgICAgKChjaGFyICopIG91 dHB1dF90b2tlbi0+dmFsdWUpICsgNCwKKy0JCQkJICAgICAob3V0cHV0X3Rva2VuLT5sZW5ndGgg LSA0KSAqIHNpemVvZihjaGFyKSwKKy0JCQkJICAgICBTQVNMX0NVX0FVVEhaSUQsIG9wYXJhbXMp OworLQkgICAgCistCSAgICBpZiAocmV0ICE9IFNBU0xfT0spIHsKKy0JCXNhc2xfZ3NzX2ZyZWVf Y29udGV4dF9jb250ZW50cyh0ZXh0KTsKKy0JCXJldHVybiByZXQ7CistCSAgICB9CistCSAgICAK Ky0JICAgIHJldCA9IHBhcmFtcy0+Y2Fub25fdXNlcihwYXJhbXMtPnV0aWxzLT5jb25uLAorLQkJ CQkgICAgIHRleHQtPmF1dGhpZCwKKy0JCQkJICAgICAwLCAvKiBzdHJsZW4odGV4dC0+YXV0aGlk KSAqLworLQkJCQkgICAgIFNBU0xfQ1VfQVVUSElELCBvcGFyYW1zKTsKKy0JICAgIGlmIChyZXQg IT0gU0FTTF9PSykgeworLQkJc2FzbF9nc3NfZnJlZV9jb250ZXh0X2NvbnRlbnRzKHRleHQpOwor LQkJcmV0dXJuIHJldDsKKy0JICAgIH0KKy0JfSBlbHNlIGlmKG91dHB1dF90b2tlbi0+bGVuZ3Ro ID09IDQpIHsKKy0JICAgIC8qIG51bGwgYXV0aHppZCAqLworLQkgICAgaW50IHJldDsKKy0JICAg IAorLQkgICAgcmV0ID0gcGFyYW1zLT5jYW5vbl91c2VyKHBhcmFtcy0+dXRpbHMtPmNvbm4sCist CQkJCSAgICAgdGV4dC0+YXV0aGlkLAorLQkJCQkgICAgIDAsIC8qIHN0cmxlbih0ZXh0LT5hdXRo aWQpICovCistCQkJCSAgICAgU0FTTF9DVV9BVVRIWklEIHwgU0FTTF9DVV9BVVRISUQsCistCQkJ CSAgICAgb3BhcmFtcyk7CistCSAgICAKKy0JICAgIGlmIChyZXQgIT0gU0FTTF9PSykgeworLQkJ c2FzbF9nc3NfZnJlZV9jb250ZXh0X2NvbnRlbnRzKHRleHQpOworLQkJcmV0dXJuIHJldDsKKy0J ICAgIH0JICAgIAorLQl9IGVsc2UgeworLQkgICAgU0VURVJST1IodGV4dC0+dXRpbHMsCistCQkg ICAgICJ0b2tlbiB0b28gc2hvcnQiKTsKKy0JICAgICgqcF9rcmI1X2dzc19yZWxlYXNlX2J1ZmZl cikoJm1pbl9zdGF0LCBvdXRwdXRfdG9rZW4pOworLQkgICAgc2FzbF9nc3NfZnJlZV9jb250ZXh0 X2NvbnRlbnRzKHRleHQpOworLQkgICAgcmV0dXJuIFNBU0xfRkFJTDsKKy0JfQkKKy0JCistCS8q IE5vIG1hdHRlciB3aGF0LCBzZXQgdGhlIHJlc3Qgb2YgdGhlIG9wYXJhbXMgKi8KKy0JCisrICAg ICAgICBpbnQgbGF5ZXJjaG9pY2U7CisrCisrICAgICAgICByZWFsX2lucHV0X3Rva2VuLnZhbHVl ID0gKHZvaWQgKiljbGllbnRpbjsKKysgICAgICAgIHJlYWxfaW5wdXRfdG9rZW4ubGVuZ3RoID0g Y2xpZW50aW5sZW47CisrCisrICAgICAgICBtYWpfc3RhdCA9ICgqcF9rcmI1X2dzc191bndyYXAp KCZtaW5fc3RhdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LT5nc3NfY3R4 LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X3Rva2VuLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF90b2tlbiwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOVUxMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwor KworKyAgICAgICAgaWYgKEdTU19FUlJPUihtYWpfc3RhdCkpIHsKKysgICAgICAgICAgICBzYXNs X2dzc19zZXRlcnJvcih0ZXh0LT51dGlscywgbWFqX3N0YXQsIG1pbl9zdGF0KTsKKysgICAgICAg ICAgICBzYXNsX2dzc19mcmVlX2NvbnRleHRfY29udGVudHModGV4dCk7CisrICAgICAgICAgICAg cmV0dXJuIFNBU0xfRkFJTDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGxheWVyY2hvaWNlID0g KGludCkoKChjaGFyICopKG91dHB1dF90b2tlbi0+dmFsdWUpKVswXSk7CisrICAgICAgICBpZiAo bGF5ZXJjaG9pY2UgPT0gMSAmJiB0ZXh0LT5yZXF1aXJlc3NmID09IDApIHsgLyogbm8gZW5jcnlw dGlvbiAqLworKyAgICAgICAgICAgIG9wYXJhbXMtPmVuY29kZSA9IE5VTEw7CisrICAgICAgICAg ICAgb3BhcmFtcy0+ZGVjb2RlID0gTlVMTDsKKysgICAgICAgICAgICBvcGFyYW1zLT5tZWNoX3Nz ZiA9IDA7CisrICAgICAgICB9IGVsc2UgaWYgKGxheWVyY2hvaWNlID09IDIgJiYgdGV4dC0+cmVx dWlyZXNzZiA8PSAxICYmCisrICAgICAgICAgICAgICAgICAgIHRleHQtPmxpbWl0c3NmID49IDEp IHsgLyogaW50ZWdyaXR5ICovCisrICAgICAgICAgICAgb3BhcmFtcy0+ZW5jb2RlPSZnc3NhcGlf aW50ZWdyaXR5X2VuY29kZTsKKysgICAgICAgICAgICBvcGFyYW1zLT5kZWNvZGU9Jmdzc2FwaV9k ZWNvZGU7CisrICAgICAgICAgICAgb3BhcmFtcy0+bWVjaF9zc2Y9MTsKKysgICAgICAgIH0gZWxz ZSBpZiAobGF5ZXJjaG9pY2UgPT0gNCAmJiB0ZXh0LT5yZXF1aXJlc3NmIDw9IEs1X01BWF9TU0Yg JiYKKysgICAgICAgICAgICAgICAgICAgdGV4dC0+bGltaXRzc2YgPj0gSzVfTUFYX1NTRikgeyAv KiBwcml2YWN5ICovCisrICAgICAgICAgICAgb3BhcmFtcy0+ZW5jb2RlID0gJmdzc2FwaV9wcml2 YWN5X2VuY29kZTsKKysgICAgICAgICAgICBvcGFyYW1zLT5kZWNvZGUgPSAmZ3NzYXBpX2RlY29k ZTsKKysgICAgICAgICAgICAvKiBGSVggTUU6IE5lZWQgdG8gZXh0cmFjdCB0aGUgcHJvcGVyIHZh bHVlIGhlcmUgKi8KKysgICAgICAgICAgICBvcGFyYW1zLT5tZWNoX3NzZiA9IEs1X01BWF9TU0Y7 CisrICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgIC8qIG5vdCBhIHN1cHBvcnRlZCBlbmNy eXB0aW9uIGxheWVyICovCisrICAgICAgICAgICAgU0VURVJST1IodGV4dC0+dXRpbHMsCisrICAg ICAgICAgICAgICAgICAgICAgInByb3RvY29sIHZpb2xhdGlvbjogY2xpZW50IHJlcXVlc3RlZCBp bnZhbGlkIGxheWVyIik7CisrICAgICAgICAgICAgLyogTWFyayB0aGF0IHdlIGF0dGVtcHRlZCBu ZWdvdGlhdGlvbiAqLworKyAgICAgICAgICAgIG9wYXJhbXMtPm1lY2hfc3NmID0gMjsKKysgICAg ICAgICAgICBpZiAob3V0cHV0X3Rva2VuLT52YWx1ZSkKKysgICAgICAgICAgICAgICAgKCpwX2ty YjVfZ3NzX3JlbGVhc2VfYnVmZmVyKSgmbWluX3N0YXQsIG91dHB1dF90b2tlbik7CisrICAgICAg ICAgICAgc2FzbF9nc3NfZnJlZV9jb250ZXh0X2NvbnRlbnRzKHRleHQpOworKyAgICAgICAgICAg IHJldHVybiBTQVNMX0ZBSUw7CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAob3V0cHV0X3Rv a2VuLT5sZW5ndGggPiA0KSB7CisrICAgICAgICAgICAgaW50IHJldDsKKysKKysgICAgICAgICAg ICByZXQgPSBwYXJhbXMtPmNhbm9uX3VzZXIocGFyYW1zLT51dGlscy0+Y29ubiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChjaGFyICopIG91dHB1dF90b2tlbi0+dmFs dWUpICsgNCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG91dHB1dF90 b2tlbi0+bGVuZ3RoIC0gNCkgKiBzaXplb2YoY2hhciksCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFNBU0xfQ1VfQVVUSFpJRCwgb3BhcmFtcyk7CisrCisrICAgICAgICAg ICAgaWYgKHJldCAhPSBTQVNMX09LKSB7CisrICAgICAgICAgICAgICAgIHNhc2xfZ3NzX2ZyZWVf Y29udGV4dF9jb250ZW50cyh0ZXh0KTsKKysgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKKysg ICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgcmV0ID0gcGFyYW1zLT5jYW5vbl91c2VyKHBh cmFtcy0+dXRpbHMtPmNvbm4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHRleHQtPmF1dGhpZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg Lyogc3RybGVuKHRleHQtPmF1dGhpZCkgKi8KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU0FTTF9DVV9BVVRISUQsIG9wYXJhbXMpOworKyAgICAgICAgICAgIGlmIChyZXQg IT0gU0FTTF9PSykgeworKyAgICAgICAgICAgICAgICBzYXNsX2dzc19mcmVlX2NvbnRleHRfY29u dGVudHModGV4dCk7CisrICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CisrICAgICAgICAgICAg fQorKyAgICAgICAgfSBlbHNlIGlmKG91dHB1dF90b2tlbi0+bGVuZ3RoID09IDQpIHsKKysgICAg ICAgICAgICAvKiBudWxsIGF1dGh6aWQgKi8KKysgICAgICAgICAgICBpbnQgcmV0OworKworKyAg ICAgICAgICAgIHJldCA9IHBhcmFtcy0+Y2Fub25fdXNlcihwYXJhbXMtPnV0aWxzLT5jb25uLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LT5hdXRoaWQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8qIHN0cmxlbih0ZXh0LT5hdXRo aWQpICovCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNBU0xfQ1VfQVVU SFpJRCB8IFNBU0xfQ1VfQVVUSElELAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvcGFyYW1zKTsKKysKKysgICAgICAgICAgICBpZiAocmV0ICE9IFNBU0xfT0spIHsKKysg ICAgICAgICAgICAgICAgc2FzbF9nc3NfZnJlZV9jb250ZXh0X2NvbnRlbnRzKHRleHQpOworKyAg ICAgICAgICAgICAgICByZXR1cm4gcmV0OworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0gZWxz ZSB7CisrICAgICAgICAgICAgU0VURVJST1IodGV4dC0+dXRpbHMsCisrICAgICAgICAgICAgICAg ICAgICAgInRva2VuIHRvbyBzaG9ydCIpOworKyAgICAgICAgICAgICgqcF9rcmI1X2dzc19yZWxl YXNlX2J1ZmZlcikoJm1pbl9zdGF0LCBvdXRwdXRfdG9rZW4pOworKyAgICAgICAgICAgIHNhc2xf Z3NzX2ZyZWVfY29udGV4dF9jb250ZW50cyh0ZXh0KTsKKysgICAgICAgICAgICByZXR1cm4gU0FT TF9GQUlMOworKyAgICAgICAgfQorKworKyAgICAgICAgLyogTm8gbWF0dGVyIHdoYXQsIHNldCB0 aGUgcmVzdCBvZiB0aGUgb3BhcmFtcyAqLworKworICAgICAgICAgb3BhcmFtcy0+bWF4b3V0YnVm ID0KKy0JICAgICgoKHVuc2lnbmVkIGNoYXIgKikgb3V0cHV0X3Rva2VuLT52YWx1ZSlbMV0gPDwg MTYpIHwKKysgICAgICAgICAgICAoKCh1bnNpZ25lZCBjaGFyICopIG91dHB1dF90b2tlbi0+dmFs dWUpWzFdIDw8IDE2KSB8CisgICAgICAgICAgICAgKCgodW5zaWduZWQgY2hhciAqKSBvdXRwdXRf dG9rZW4tPnZhbHVlKVsyXSA8PCA4KSB8CisgICAgICAgICAgICAgKCgodW5zaWduZWQgY2hhciAq KSBvdXRwdXRfdG9rZW4tPnZhbHVlKVszXSA8PCAwKTsKKyAKKy0JaWYgKG9wYXJhbXMtPm1lY2hf c3NmKSB7CistIAkgICAgbWFqX3N0YXQgPSAoKnBfa3JiNV9nc3Nfd3JhcF9zaXplX2xpbWl0KSgm bWluX3N0YXQsCistCQkJCQkgICAgdGV4dC0+Z3NzX2N0eCwKKy0JCQkJCSAgICAxLAorLQkJCQkJ ICAgIEdTU19DX1FPUF9ERUZBVUxULAorLQkJCQkJICAgIChPTV91aW50MzIpIG9wYXJhbXMtPm1h eG91dGJ1ZiwKKy0JCQkJCSAgICAmbWF4X2lucHV0KTsKKy0KKy0JICAgIGlmKG1heF9pbnB1dCA+ IG9wYXJhbXMtPm1heG91dGJ1ZikgeworLQkJLyogSGVpbWRhbCBhcHBlYXJzIHRvIGdldCB0aGlz IHdyb25nICovCistCQlvcGFyYW1zLT5tYXhvdXRidWYgLT0gKG1heF9pbnB1dCAtIG9wYXJhbXMt Pm1heG91dGJ1Zik7CistCSAgICB9IGVsc2UgeworLQkJLyogVGhpcyBjb2RlIGlzIGFjdHVhbGx5 IGNvcnJlY3QgKi8KKy0JCW9wYXJhbXMtPm1heG91dGJ1ZiA9IG1heF9pbnB1dDsKKy0JICAgIH0g ICAgCistCX0KKy0JCistCSgqcF9rcmI1X2dzc19yZWxlYXNlX2J1ZmZlcikoJm1pbl9zdGF0LCBv dXRwdXRfdG9rZW4pOworLQkKKy0JdGV4dC0+c3RhdGUgPSBTQVNMX0dTU0FQSV9TVEFURV9BVVRI RU5USUNBVEVEOworLQkKKy0JLyogdXNlZCBieSBsYXllcnMgKi8KKy0JX3BsdWdfZGVjb2RlX2lu aXQoJnRleHQtPmRlY29kZV9jb250ZXh0LCB0ZXh0LT51dGlscywKKy0JCQkgIChwYXJhbXMtPnBy b3BzLm1heGJ1ZnNpemUgPiAweEZGRkZGRikgPyAweEZGRkZGRiA6CistCQkJICBwYXJhbXMtPnBy b3BzLm1heGJ1ZnNpemUpOworLQkKKy0Jb3BhcmFtcy0+ZG9uZWZsYWcgPSAxOworLQkKKy0JcmV0 dXJuIFNBU0xfT0s7CisrICAgICAgICBpZiAob3BhcmFtcy0+bWVjaF9zc2YpIHsKKysgICAgICAg ICAgICBtYWpfc3RhdCA9ICgqcF9rcmI1X2dzc193cmFwX3NpemVfbGltaXQpKCZtaW5fc3RhdCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtPmdzc19j dHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NTX0NfUU9QX0RFRkFV TFQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoT01fdWlu dDMyKSBvcGFyYW1zLT5tYXhvdXRidWYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmbWF4X2lucHV0KTsKKysKKysgICAgICAgICAgICBpZihtYXhfaW5wdXQg PiBvcGFyYW1zLT5tYXhvdXRidWYpIHsKKysgICAgICAgICAgICAgICAgLyogSGVpbWRhbCBhcHBl YXJzIHRvIGdldCB0aGlzIHdyb25nICovCisrICAgICAgICAgICAgICAgIG9wYXJhbXMtPm1heG91 dGJ1ZiAtPSAobWF4X2lucHV0IC0gb3BhcmFtcy0+bWF4b3V0YnVmKTsKKysgICAgICAgICAgICB9 IGVsc2UgeworKyAgICAgICAgICAgICAgICAvKiBUaGlzIGNvZGUgaXMgYWN0dWFsbHkgY29ycmVj dCAqLworKyAgICAgICAgICAgICAgICBvcGFyYW1zLT5tYXhvdXRidWYgPSBtYXhfaW5wdXQ7Cisr ICAgICAgICAgICAgfQorKyAgICAgICAgfQorKworKyAgICAgICAgKCpwX2tyYjVfZ3NzX3JlbGVh c2VfYnVmZmVyKSgmbWluX3N0YXQsIG91dHB1dF90b2tlbik7CisrCisrICAgICAgICB0ZXh0LT5z dGF0ZSA9IFNBU0xfR1NTQVBJX1NUQVRFX0FVVEhFTlRJQ0FURUQ7CisrCisrICAgICAgICAvKiB1 c2VkIGJ5IGxheWVycyAqLworKyAgICAgICAgX3BsdWdfZGVjb2RlX2luaXQoJnRleHQtPmRlY29k ZV9jb250ZXh0LCB0ZXh0LT51dGlscywKKysgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJh bXMtPnByb3BzLm1heGJ1ZnNpemUgPiAweEZGRkZGRikgPyAweEZGRkZGRiA6CisrICAgICAgICAg ICAgICAgICAgICAgICAgICBwYXJhbXMtPnByb3BzLm1heGJ1ZnNpemUpOworKworKyAgICAgICAg b3BhcmFtcy0+ZG9uZWZsYWcgPSAxOworKworKyAgICAgICAgcmV0dXJuIFNBU0xfT0s7CisgICAg IH0KKy0gICAgCisrCisgICAgIGRlZmF1bHQ6CistCXBhcmFtcy0+dXRpbHMtPmxvZyhOVUxMLCBT QVNMX0xPR19FUlIsCistCQkJICAgIkludmFsaWQgR1NTQVBJIHNlcnZlciBzdGVwICVkXG4iLCB0 ZXh0LT5zdGF0ZSk7CistCXJldHVybiBTQVNMX0ZBSUw7CisrICAgICAgICBwYXJhbXMtPnV0aWxz LT5sb2coTlVMTCwgU0FTTF9MT0dfRVJSLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJJ bnZhbGlkIEdTU0FQSSBzZXJ2ZXIgc3RlcCAlZFxuIiwgdGV4dC0+c3RhdGUpOworKyAgICAgICAg cmV0dXJuIFNBU0xfRkFJTDsKKyAgICAgfQorLSAgICAKKysKKyAgICAgcmV0dXJuIFNBU0xfRkFJ TDsgLyogc2hvdWxkIG5ldmVyIGdldCBoZXJlICovCisgfQorIAorLXN0YXRpYyBzYXNsX3NlcnZl cl9wbHVnX3QgZ3NzYXBpX3NlcnZlcl9wbHVnaW5zW10gPSAKKytzdGF0aWMgc2FzbF9zZXJ2ZXJf cGx1Z190IGdzc2FwaV9zZXJ2ZXJfcGx1Z2luc1tdID0KKyB7CisgICAgIHsKKy0JIkdTU0FQSSIs CQkJLyogbWVjaF9uYW1lICovCistCUs1X01BWF9TU0YsCQkJLyogbWF4X3NzZiAqLworLQlTQVNM X1NFQ19OT1BMQUlOVEVYVAorLQl8IFNBU0xfU0VDX05PQUNUSVZFCistCXwgU0FTTF9TRUNfTk9B Tk9OWU1PVVMKKy0JfCBTQVNMX1NFQ19NVVRVQUxfQVVUSCwJCS8qIHNlY3VyaXR5X2ZsYWdzICov CistCVNBU0xfRkVBVF9XQU5UX0NMSUVOVF9GSVJTVAorLQl8IFNBU0xfRkVBVF9BTExPV1NfUFJP WFksCS8qIGZlYXR1cmVzICovCistCU5VTEwsCQkJCS8qIGdsb2JfY29udGV4dCAqLworLQkmZ3Nz YXBpX3NlcnZlcl9tZWNoX25ldywJLyogbWVjaF9uZXcgKi8KKy0JJmdzc2FwaV9zZXJ2ZXJfbWVj aF9zdGVwLAkvKiBtZWNoX3N0ZXAgKi8KKy0JJmdzc2FwaV9jb21tb25fbWVjaF9kaXNwb3NlLAkv KiBtZWNoX2Rpc3Bvc2UgKi8KKy0JTlVMTCwJCQkJLyogbWVjaF9mcmVlICovCistCU5VTEwsCQkJ CS8qIHNldHBhc3MgKi8KKy0JTlVMTCwJCQkJLyogdXNlcl9xdWVyeSAqLworLQlOVUxMLAkJCQkv KiBpZGxlICovCistCU5VTEwsCQkJCS8qIG1lY2hfYXZhaWwgKi8KKy0JTlVMTAkJCQkvKiBzcGFy ZSAqLworKyAgICAgICAgIkdTU0FQSSIsICAgICAgICAgICAgICAgICAgICAgICAvKiBtZWNoX25h bWUgKi8KKysgICAgICAgIEs1X01BWF9TU0YsICAgICAgICAgICAgICAgICAgICAgLyogbWF4X3Nz ZiAqLworKyAgICAgICAgU0FTTF9TRUNfTk9QTEFJTlRFWFQKKysgICAgICAgIHwgU0FTTF9TRUNf Tk9BQ1RJVkUKKysgICAgICAgIHwgU0FTTF9TRUNfTk9BTk9OWU1PVVMKKysgICAgICAgIHwgU0FT TF9TRUNfTVVUVUFMX0FVVEgsICAgICAgICAgLyogc2VjdXJpdHlfZmxhZ3MgKi8KKysgICAgICAg IFNBU0xfRkVBVF9XQU5UX0NMSUVOVF9GSVJTVAorKyAgICAgICAgfCBTQVNMX0ZFQVRfQUxMT1dT X1BST1hZLCAgICAgICAvKiBmZWF0dXJlcyAqLworKyAgICAgICAgTlVMTCwgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiBnbG9iX2NvbnRleHQgKi8KKysgICAgICAgICZnc3NhcGlfc2VydmVy X21lY2hfbmV3LCAgICAgICAgLyogbWVjaF9uZXcgKi8KKysgICAgICAgICZnc3NhcGlfc2VydmVy X21lY2hfc3RlcCwgICAgICAgLyogbWVjaF9zdGVwICovCisrICAgICAgICAmZ3NzYXBpX2NvbW1v bl9tZWNoX2Rpc3Bvc2UsICAgIC8qIG1lY2hfZGlzcG9zZSAqLworKyAgICAgICAgTlVMTCwgICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiBtZWNoX2ZyZWUgKi8KKysgICAgICAgIE5VTEwsICAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0cGFzcyAqLworKyAgICAgICAgTlVMTCwgICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiB1c2VyX3F1ZXJ5ICovCisrICAgICAgICBOVUxMLCAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlkbGUgKi8KKysgICAgICAgIE5VTEwsICAgICAg ICAgICAgICAgICAgICAgICAgICAgLyogbWVjaF9hdmFpbCAqLworKyAgICAgICAgTlVMTCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiBzcGFyZSAqLworICAgICB9CisgfTsKKyAKK0BAIC0x MTgwLDcgKzExODAsNyBAQCBpbnQgZ3NzYXBpdjJfc2VydmVyX3BsdWdfaW5pdCgKKyAgICAgY29u c3Qgc2FzbF91dGlsc190ICp1dGlscyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKKyAjZWxzZQor ICAgICBjb25zdCBzYXNsX3V0aWxzX3QgKnV0aWxzLAorLSNlbmRpZiAKKysjZW5kaWYKKyAgICAg aW50IG1heHZlcnNpb24sCisgICAgIGludCAqb3V0X3ZlcnNpb24sCisgICAgIHNhc2xfc2VydmVy X3BsdWdfdCAqKnBsdWdsaXN0LAorQEAgLTExOTEsNzggKzExOTEsNzggQEAgaW50IGdzc2FwaXYy X3NlcnZlcl9wbHVnX2luaXQoCisgICAgIGNoYXIga2V5dGFiX3BhdGhbMTAyNF07CisgICAgIHVu c2lnbmVkIGludCBybDsKKyAjZW5kaWYKKy0gICAgCisrCisgICAgIGlmIChtYXh2ZXJzaW9uIDwg U0FTTF9TRVJWRVJfUExVR19WRVJTSU9OKSB7CistCXJldHVybiBTQVNMX0JBRFZFUlM7CisrICAg ICAgICByZXR1cm4gU0FTTF9CQURWRVJTOworICAgICB9CistICAgIAorKworICNpZmRlZiBIQVZF X0dTU0tSQjVfUkVHSVNURVJfQUNDRVBUT1JfSURFTlRJVFkKKyAgICAgLyogdW5mb3J0dW5hdGVs eSwgd2UgZG9uJ3QgY2hlY2sgZm9yIHJlYWRhYmlsaXR5IG9mIGtleXRhYiBpZiBpdCdzCisgICAg ICAgIHRoZSBzdGFuZGFyZCBvbmUsIHNpbmNlIHdlIGRvbid0IGtub3cgd2hlcmUgaXQgaXMgKi8K Ky0gICAgCisrCisgICAgIC8qIEZJWE1FOiBUaGlzIGNvZGUgaXMgYnJva2VuICovCistICAgIAor KworICAgICB1dGlscy0+Z2V0b3B0KHV0aWxzLT5nZXRvcHRfY29udGV4dCwgIkdTU0FQSSIsICJr ZXl0YWIiLCAma2V5dGFiLCAmcmwpOworICAgICBpZiAoa2V5dGFiICE9IE5VTEwpIHsKKy0JaWYg KGFjY2VzcyhrZXl0YWIsIFJfT0spICE9IDApIHsKKy0JICAgIHV0aWxzLT5sb2coTlVMTCwgU0FT TF9MT0dfRVJSLAorLQkJICAgICAgICJDb3VsZCBub3QgZmluZCBrZXl0YWIgZmlsZTogJXM6ICVt IiwKKy0JCSAgICAgICBrZXl0YWIsIGVycm5vKTsKKy0JICAgIHJldHVybiBTQVNMX0ZBSUw7Cist CX0KKy0JCistCWlmKHN0cmxlbihrZXl0YWIpID4gMTAyNCkgeworLQkgICAgdXRpbHMtPmxvZyhO VUxMLCBTQVNMX0xPR19FUlIsCistCQkgICAgICAgInBhdGggdG8ga2V5dGFiIGlzID4gMTAyNCBj aGFyYWN0ZXJzIik7CistCSAgICByZXR1cm4gU0FTTF9CVUZPVkVSOworLQl9CistCQorLQlzdHJu Y3B5KGtleXRhYl9wYXRoLCBrZXl0YWIsIDEwMjQpOworLQkKKy0JZ3Nza3JiNV9yZWdpc3Rlcl9h Y2NlcHRvcl9pZGVudGl0eShrZXl0YWJfcGF0aCk7CisrICAgICAgICBpZiAoYWNjZXNzKGtleXRh YiwgUl9PSykgIT0gMCkgeworKyAgICAgICAgICAgIHV0aWxzLT5sb2coTlVMTCwgU0FTTF9MT0df RVJSLAorKyAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBmaW5kIGtleXRhYiBmaWxl OiAlczogJW0iLAorKyAgICAgICAgICAgICAgICAgICAgICAga2V5dGFiLCBlcnJubyk7CisrICAg ICAgICAgICAgcmV0dXJuIFNBU0xfRkFJTDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmKHN0 cmxlbihrZXl0YWIpID4gMTAyNCkgeworKyAgICAgICAgICAgIHV0aWxzLT5sb2coTlVMTCwgU0FT TF9MT0dfRVJSLAorKyAgICAgICAgICAgICAgICAgICAgICAgInBhdGggdG8ga2V5dGFiIGlzID4g MTAyNCBjaGFyYWN0ZXJzIik7CisrICAgICAgICAgICAgcmV0dXJuIFNBU0xfQlVGT1ZFUjsKKysg ICAgICAgIH0KKysKKysgICAgICAgIHN0cm5jcHkoa2V5dGFiX3BhdGgsIGtleXRhYiwgMTAyNCk7 CisrCisrICAgICAgICBnc3NrcmI1X3JlZ2lzdGVyX2FjY2VwdG9yX2lkZW50aXR5KGtleXRhYl9w YXRoKTsKKyAgICAgfQorICNlbmRpZgorLSAgICAKKysKKyAgICAgKm91dF92ZXJzaW9uID0gU0FT TF9TRVJWRVJfUExVR19WRVJTSU9OOworICAgICAqcGx1Z2xpc3QgPSBnc3NhcGlfc2VydmVyX3Bs dWdpbnM7CistICAgICpwbHVnY291bnQgPSAxOyAgCistICAgIAorKyAgICAqcGx1Z2NvdW50ID0g MTsKKysKKyAgICAgcmV0dXJuIFNBU0xfT0s7CisgfQorIAorIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKiAgQ2xpZW50IFNlY3Rpb24gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq LworIAorLXN0YXRpYyBpbnQgZ3NzYXBpX2NsaWVudF9tZWNoX25ldyh2b2lkICpnbG9iX2NvbnRl eHQgX19hdHRyaWJ1dGVfXygodW51c2VkKSksIAorLQkJCQkgIHNhc2xfY2xpZW50X3BhcmFtc190 ICpwYXJhbXMsCistCQkJCSAgdm9pZCAqKmNvbm5fY29udGV4dCkKKytzdGF0aWMgaW50IGdzc2Fw aV9jbGllbnRfbWVjaF9uZXcodm9pZCAqZ2xvYl9jb250ZXh0IF9fYXR0cmlidXRlX18oKHVudXNl ZCkpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXNsX2NsaWVudF9wYXJh bXNfdCAqcGFyYW1zLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoq Y29ubl9jb250ZXh0KQorIHsKKyAgICAgY29udGV4dF90ICp0ZXh0OworLSAgICAKKysKKyAgICAg LyogaG9sZHMgc3RhdGUgYXJlIGluICovCisgICAgIHRleHQgPSBnc3NfbmV3X2NvbnRleHQocGFy YW1zLT51dGlscyk7CisgICAgIGlmICh0ZXh0ID09IE5VTEwpIHsKKy0JTUVNRVJST1IocGFyYW1z LT51dGlscyk7CistCXJldHVybiBTQVNMX05PTUVNOworKyAgICAgICAgTUVNRVJST1IocGFyYW1z LT51dGlscyk7CisrICAgICAgICByZXR1cm4gU0FTTF9OT01FTTsKKyAgICAgfQorLSAgICAKKysK KyAgICAgdGV4dC0+c3RhdGUgPSBTQVNMX0dTU0FQSV9TVEFURV9BVVRITkVHOworICAgICB0ZXh0 LT5nc3NfY3R4ID0gR1NTX0NfTk9fQ09OVEVYVDsKKyAgICAgdGV4dC0+Y2xpZW50X25hbWUgPSBH U1NfQ19OT19OQU1FOworICAgICB0ZXh0LT5zZXJ2ZXJfY3JlZHMgPSBHU1NfQ19OT19DUkVERU5U SUFMOworIAorICAgICAqY29ubl9jb250ZXh0ID0gdGV4dDsKKy0gICAgCisrCisgICAgIHJldHVy biBTQVNMX09LOworIH0KKyAKKyBzdGF0aWMgaW50IGdzc2FwaV9jbGllbnRfbWVjaF9zdGVwKHZv aWQgKmNvbm5fY29udGV4dCwKKy0JCQkJICAgc2FzbF9jbGllbnRfcGFyYW1zX3QgKnBhcmFtcywK Ky0JCQkJICAgY29uc3QgY2hhciAqc2VydmVyaW4sCistCQkJCSAgIHVuc2lnbmVkIHNlcnZlcmlu bGVuLAorLQkJCQkgICBzYXNsX2ludGVyYWN0X3QgKipwcm9tcHRfbmVlZCwKKy0JCQkJICAgY29u c3QgY2hhciAqKmNsaWVudG91dCwKKy0JCQkJICAgdW5zaWduZWQgKmNsaWVudG91dGxlbiwKKy0J CQkJICAgc2FzbF9vdXRfcGFyYW1zX3QgKm9wYXJhbXMpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzYXNsX2NsaWVudF9wYXJhbXNfdCAqcGFyYW1zLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2VydmVyaW4sCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzZXJ2ZXJpbmxlbiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhc2xfaW50ZXJhY3RfdCAqKnByb21wdF9uZWVk LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmNsaWVu dG91dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkICpjbGll bnRvdXRsZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXNsX291dF9w YXJhbXNfdCAqb3BhcmFtcykKKyB7CisgICAgIGNvbnRleHRfdCAqdGV4dCA9IChjb250ZXh0X3Qg Kiljb25uX2NvbnRleHQ7CisgICAgIGdzc19idWZmZXJfdCBpbnB1dF90b2tlbiwgb3V0cHV0X3Rv a2VuOworQEAgLTEyNzUsMjg2ICsxMjc1LDI4NiBAQCBzdGF0aWMgaW50IGdzc2FwaV9jbGllbnRf bWVjaF9zdGVwKHZvaWQgKmNvbm5fY29udGV4dCwKKyAgICAgaW5wdXRfdG9rZW4gPSAmcmVhbF9p bnB1dF90b2tlbjsKKyAgICAgb3V0cHV0X3Rva2VuID0gJnJlYWxfb3V0cHV0X3Rva2VuOworICAg ICBvdXRwdXRfdG9rZW4tPnZhbHVlID0gTlVMTDsKKy0gICAgaW5wdXRfdG9rZW4tPnZhbHVlID0g TlVMTDsgCisrICAgIGlucHV0X3Rva2VuLT52YWx1ZSA9IE5VTEw7CisgICAgIGlucHV0X3Rva2Vu LT5sZW5ndGggPSAwOworLSAgICAKKysKKyAgICAgKmNsaWVudG91dCA9IE5VTEw7CisgICAgICpj bGllbnRvdXRsZW4gPSAwOworLSAgICAKKysKKyAgICAgaWYgKHNhc2xfZ3NzX2xpYl9pbml0KHRl eHQtPnV0aWxzKSAhPSBTQVNMX09LKSByZXR1cm4gU0FTTF9GQUlMOworLSAgICAKKysKKyAgICAg c3dpdGNoICh0ZXh0LT5zdGF0ZSkgeworIAorICAgICBjYXNlIFNBU0xfR1NTQVBJX1NUQVRFX0FV VEhORUc6CistCS8qIHRyeSB0byBnZXQgdGhlIHVzZXJpZCAqLworLQlpZiAodGV4dC0+dXNlciA9 PSBOVUxMKSB7CistCSAgICBpbnQgdXNlcl9yZXN1bHQgPSBTQVNMX09LOworLQkgICAgCistCSAg ICB1c2VyX3Jlc3VsdCA9IF9wbHVnX2dldF91c2VyaWQocGFyYW1zLT51dGlscywgJnRleHQtPnVz ZXIsCistCQkJCQkgICBwcm9tcHRfbmVlZCk7CistCSAgICAKKy0JICAgIGlmICgodXNlcl9yZXN1 bHQgIT0gU0FTTF9PSykgJiYgKHVzZXJfcmVzdWx0ICE9IFNBU0xfSU5URVJBQ1QpKSB7CistCQlz YXNsX2dzc19mcmVlX2NvbnRleHRfY29udGVudHModGV4dCk7CistCQlyZXR1cm4gdXNlcl9yZXN1 bHQ7CistCSAgICB9CistCQkgICAgCistCSAgICAvKiBmcmVlIHByb21wdHMgd2UgZ290ICovCist CSAgICBpZiAocHJvbXB0X25lZWQgJiYgKnByb21wdF9uZWVkKSB7CistCQlwYXJhbXMtPnV0aWxz LT5mcmVlKCpwcm9tcHRfbmVlZCk7CistCQkqcHJvbXB0X25lZWQgPSBOVUxMOworLQkgICAgfQor LQkJICAgIAorLQkgICAgLyogaWYgdGhlcmUgYXJlIHByb21wdHMgbm90IGZpbGxlZCBpbiAqLwor LQkgICAgaWYgKHVzZXJfcmVzdWx0ID09IFNBU0xfSU5URVJBQ1QpIHsKKy0JCS8qIG1ha2UgdGhl IHByb21wdCBsaXN0ICovCistCQlpbnQgcmVzdWx0ID0KKy0JCSAgICBfcGx1Z19tYWtlX3Byb21w dHMocGFyYW1zLT51dGlscywgcHJvbXB0X25lZWQsCistCQkJCSAgICAgICB1c2VyX3Jlc3VsdCA9 PSBTQVNMX0lOVEVSQUNUID8KKy0JCQkJICAgICAgICJQbGVhc2UgZW50ZXIgeW91ciBhdXRob3Jp emF0aW9uIG5hbWUiIDogTlVMTCwgTlVMTCwKKy0JCQkJICAgICAgIE5VTEwsIE5VTEwsCistCQkJ CSAgICAgICBOVUxMLCBOVUxMLAorLQkJCQkgICAgICAgTlVMTCwgTlVMTCwgTlVMTCwKKy0JCQkJ ICAgICAgIE5VTEwsIE5VTEwsIE5VTEwpOworLSAJCWlmIChyZXN1bHQgIT0gU0FTTF9PSykgcmV0 dXJuIHJlc3VsdDsKKy0JCQorLQkJcmV0dXJuIFNBU0xfSU5URVJBQ1Q7CistCSAgICB9CistCX0K Ky0JICAgIAorLQlpZiAodGV4dC0+c2VydmVyX25hbWUgPT0gR1NTX0NfTk9fTkFNRSkgeyAvKiBv bmx5IG9uY2UgKi8KKy0JICAgIG5hbWVfdG9rZW4ubGVuZ3RoID0gc3RybGVuKHBhcmFtcy0+c2Vy dmljZSkgKyAxICsgc3RybGVuKHBhcmFtcy0+c2VydmVyRlFETik7CistCSAgICBuYW1lX3Rva2Vu LnZhbHVlID0gKGNoYXIgKilwYXJhbXMtPnV0aWxzLT5tYWxsb2MoKG5hbWVfdG9rZW4ubGVuZ3Ro ICsgMSkgKiBzaXplb2YoY2hhcikpOworLQkgICAgaWYgKG5hbWVfdG9rZW4udmFsdWUgPT0gTlVM TCkgeworLQkJc2FzbF9nc3NfZnJlZV9jb250ZXh0X2NvbnRlbnRzKHRleHQpOworLQkJcmV0dXJu IFNBU0xfTk9NRU07CistCSAgICB9CistCSAgICBpZiAocGFyYW1zLT5zZXJ2ZXJGUUROID09IE5V TEwKKy0JCXx8IHN0cmxlbihwYXJhbXMtPnNlcnZlckZRRE4pID09IDApIHsKKy0JCVNFVEVSUk9S KHRleHQtPnV0aWxzLCAiR1NTQVBJIEZhaWx1cmU6IG5vIHNlcnZlckZRRE4iKTsKKy0JCXJldHVy biBTQVNMX0ZBSUw7CistCSAgICB9CistCSAgICAKKy0JICAgIHNwcmludGYobmFtZV90b2tlbi52 YWx1ZSwiJXNAJXMiLCBwYXJhbXMtPnNlcnZpY2UsIHBhcmFtcy0+c2VydmVyRlFETik7CistCSAg ICAKKy0JICAgIG1hal9zdGF0ID0gKCpwX2tyYjVfZ3NzX2ltcG9ydF9uYW1lKSAoJm1pbl9zdGF0 LAorLQkJCQkJJm5hbWVfdG9rZW4sCistCQkJCQlHU1NfQ19OVF9IT1NUQkFTRURfU0VSVklDRSwK Ky0JCQkJCSZ0ZXh0LT5zZXJ2ZXJfbmFtZSk7CistCSAgICAKKy0JICAgIHBhcmFtcy0+dXRpbHMt PmZyZWUobmFtZV90b2tlbi52YWx1ZSk7CistCSAgICBuYW1lX3Rva2VuLnZhbHVlID0gTlVMTDsK Ky0JICAgIAorLQkgICAgaWYgKEdTU19FUlJPUihtYWpfc3RhdCkpIHsKKy0JCXNhc2xfZ3NzX3Nl dGVycm9yKHRleHQtPnV0aWxzLCBtYWpfc3RhdCwgbWluX3N0YXQpOworLQkJc2FzbF9nc3NfZnJl ZV9jb250ZXh0X2NvbnRlbnRzKHRleHQpOworLQkJcmV0dXJuIFNBU0xfRkFJTDsKKy0JICAgIH0K Ky0JfQorLQkgICAgCistCWlmIChzZXJ2ZXJpbmxlbiA9PSAwKQorLQkgICAgaW5wdXRfdG9rZW4g PSBHU1NfQ19OT19CVUZGRVI7CistCistCWlmIChzZXJ2ZXJpbmxlbikgeworLQkgICAgcmVhbF9p bnB1dF90b2tlbi52YWx1ZSA9ICh2b2lkICopc2VydmVyaW47CistCSAgICByZWFsX2lucHV0X3Rv a2VuLmxlbmd0aCA9IHNlcnZlcmlubGVuOworLQl9CistCWVsc2UgaWYgKHRleHQtPmdzc19jdHgg IT0gR1NTX0NfTk9fQ09OVEVYVCApIHsKKy0JICAgIC8qIFRoaXMgY2FuJ3QgaGFwcGVuIHVuZGVy IEdTU0FQSTogd2UgaGF2ZSBhIG5vbi1udWxsIGNvbnRleHQKKy0JICAgICAqIGFuZCBubyBpbnB1 dCBmcm9tIHRoZSBzZXJ2ZXIuICBIb3dldmVyLCB0aGFua3MgdG8gSW1hcCwKKy0JICAgICAqIHdo aWNoIGRpc2NhcmRzIG91ciBmaXJzdCBvdXRwdXQsIHRoaXMgaGFwcGVucyBhbGwgdGhlIHRpbWUu CistCSAgICAgKiBUaHJvdyBhd2F5IHRoZSBjb250ZXh0IGFuZCB0cnkgYWdhaW4uICovCistCSAg ICBtYWpfc3RhdCA9ICgqcF9rcmI1X2dzc19kZWxldGVfc2VjX2NvbnRleHQpICgmbWluX3N0YXQs JnRleHQtPmdzc19jdHgsR1NTX0NfTk9fQlVGRkVSKTsKKy0JICAgIHRleHQtPmdzc19jdHggPSBH U1NfQ19OT19DT05URVhUOworLQl9CistCSAgICAKKy0JLyogU2V0dXAgcmVxX2ZsYWdzIHByb3Bl cmx5ICovCistCXJlcV9mbGFncyA9IEdTU19DX01VVFVBTF9GTEFHIHwgR1NTX0NfU0VRVUVOQ0Vf RkxBRzsKKy0JaWYocGFyYW1zLT5wcm9wcy5tYXhfc3NmID4gcGFyYW1zLT5leHRlcm5hbF9zc2Yp IHsKKy0JICAgIC8qIFdlIGFyZSByZXF1ZXN0aW5nIGEgc2VjdXJpdHkgbGF5ZXIgKi8KKy0JICAg IHJlcV9mbGFncyB8PSBHU1NfQ19JTlRFR19GTEFHOworLQkgICAgLyogQW55IFNTRiBiaWdnZXIg dGhhbiAxIGlzIGNvbmZpZGVudGlhbGl0eS4gKi8KKy0JICAgIC8qIExldCdzIGNoZWNrIGlmIHRo ZSBjbGllbnQgb2YgdGhlIEFQSSByZXF1aXJlcyBjb25maWRlbnRpYWxpdHksCistCSAgICAgICBh bmQgaXQgd2Fzbid0IGFscmVhZHkgcHJvdmlkZWQgYnkgYW4gZXh0ZXJuYWwgbGF5ZXIgKi8KKy0J ICAgIGlmKHBhcmFtcy0+cHJvcHMubWF4X3NzZiAtIHBhcmFtcy0+ZXh0ZXJuYWxfc3NmID4gMSkg eworLQkJLyogV2Ugd2FudCB0byB0cnkgZm9yIHByaXZhY3kgKi8KKy0JCXJlcV9mbGFncyB8PSBH U1NfQ19DT05GX0ZMQUc7CistCSAgICB9CistCX0KKy0JCistCW1hal9zdGF0ID0gKCpwX2tyYjVf Z3NzX2luaXRfc2VjX2NvbnRleHQpKCZtaW5fc3RhdCwKKy0JCQkJCUdTU19DX05PX0NSRURFTlRJ QUwsCistCQkJCQkmdGV4dC0+Z3NzX2N0eCwKKy0JCQkJCXRleHQtPnNlcnZlcl9uYW1lLAorLQkJ CQkJR1NTX0NfTk9fT0lELAorLQkJCQkJcmVxX2ZsYWdzLAorLQkJCQkJMCwKKy0JCQkJCUdTU19D X05PX0NIQU5ORUxfQklORElOR1MsCistCQkJCQlpbnB1dF90b2tlbiwKKy0JCQkJCU5VTEwsCist CQkJCQlvdXRwdXRfdG9rZW4sCistCQkJCQkmb3V0X3JlcV9mbGFncywKKy0JCQkJCU5VTEwpOwor LQkKKy0JaWYgKEdTU19FUlJPUihtYWpfc3RhdCkpIHsKKy0JICAgIHNhc2xfZ3NzX3NldGVycm9y KHRleHQtPnV0aWxzLCBtYWpfc3RhdCwgbWluX3N0YXQpOworLQkgICAgaWYgKG91dHB1dF90b2tl bi0+dmFsdWUpCistCQkoKnBfa3JiNV9nc3NfcmVsZWFzZV9idWZmZXIpKCZtaW5fc3RhdCwgb3V0 cHV0X3Rva2VuKTsKKy0JICAgIHNhc2xfZ3NzX2ZyZWVfY29udGV4dF9jb250ZW50cyh0ZXh0KTsK Ky0JICAgIHJldHVybiBTQVNMX0ZBSUw7CistCX0KKy0KKy0JKmNsaWVudG91dGxlbiA9IG91dHB1 dF90b2tlbi0+bGVuZ3RoOworLQkgICAgCistCWlmIChvdXRwdXRfdG9rZW4tPnZhbHVlKSB7Cist CSAgICBpZiAoY2xpZW50b3V0KSB7CistCQlyZXQgPSBfcGx1Z19idWZfYWxsb2ModGV4dC0+dXRp bHMsICYodGV4dC0+b3V0X2J1ZiksCistCQkJCSAgICAgICYodGV4dC0+b3V0X2J1Zl9sZW4pLCAq Y2xpZW50b3V0bGVuKTsKKy0JCWlmKHJldCAhPSBTQVNMX09LKSB7CistCQkgICAgKCpwX2tyYjVf Z3NzX3JlbGVhc2VfYnVmZmVyKSgmbWluX3N0YXQsIG91dHB1dF90b2tlbik7CistCQkgICAgcmV0 dXJuIHJldDsKKy0JCX0KKy0JCW1lbWNweSh0ZXh0LT5vdXRfYnVmLCBvdXRwdXRfdG9rZW4tPnZh bHVlLCAqY2xpZW50b3V0bGVuKTsKKy0JCSpjbGllbnRvdXQgPSB0ZXh0LT5vdXRfYnVmOworLQkg ICAgfQorLQkgICAgCistCSAgICAoKnBfa3JiNV9nc3NfcmVsZWFzZV9idWZmZXIpKCZtaW5fc3Rh dCwgb3V0cHV0X3Rva2VuKTsKKy0JfQorLQkKKy0JaWYgKG1hal9zdGF0ID09IEdTU19TX0NPTVBM RVRFKSB7CistCSAgICBtYWpfc3RhdCA9ICgqcF9rcmI1X2dzc19pbnF1aXJlX2NvbnRleHQpKCZt aW5fc3RhdCwKKy0JCQkJCSAgIHRleHQtPmdzc19jdHgsCistCQkJCQkgICAmdGV4dC0+Y2xpZW50 X25hbWUsCistCQkJCQkgICBOVUxMLCAgICAgICAvKiB0YXJnX25hbWUgKi8KKy0JCQkJCSAgIE5V TEwsICAgICAgIC8qIGxpZmV0aW1lICovCistCQkJCQkgICBOVUxMLCAgICAgICAvKiBtZWNoICov CistCQkJCQkgICAvKiBGSVggTUU6IFNob3VsZCBjaGVjayB0aGUgcmVzdWx0aW5nIGZsYWdzIGhl cmUgKi8KKy0JCQkJCSAgIE5VTEwsICAgICAgIC8qIGZsYWdzICovCistCQkJCQkgICBOVUxMLCAg ICAgICAvKiBsb2NhbCBpbml0ICovCistCQkJCQkgICBOVUxMKTsgICAgICAvKiBvcGVuICovCist CSAgICAKKy0JICAgIGlmIChHU1NfRVJST1IobWFqX3N0YXQpKSB7CistCQlzYXNsX2dzc19zZXRl cnJvcih0ZXh0LT51dGlscywgbWFqX3N0YXQsIG1pbl9zdGF0KTsKKy0JCXNhc2xfZ3NzX2ZyZWVf Y29udGV4dF9jb250ZW50cyh0ZXh0KTsKKy0JCXJldHVybiBTQVNMX0ZBSUw7CistCSAgICB9Cist CSAgICAKKy0JICAgIG5hbWVfdG9rZW4ubGVuZ3RoID0gMDsKKy0JICAgIG1hal9zdGF0ID0gKCpw X2tyYjVfZ3NzX2Rpc3BsYXlfbmFtZSkoJm1pbl9zdGF0LAorLQkJCQkJdGV4dC0+Y2xpZW50X25h bWUsCistCQkJCQkmbmFtZV90b2tlbiwKKy0JCQkJCU5VTEwpOworLQkgICAgCistCSAgICBpZiAo R1NTX0VSUk9SKG1hal9zdGF0KSkgeworLQkJaWYgKG5hbWVfdG9rZW4udmFsdWUpCistCQkgICAg KCpwX2tyYjVfZ3NzX3JlbGVhc2VfYnVmZmVyKSgmbWluX3N0YXQsICZuYW1lX3Rva2VuKTsKKy0J CVNFVEVSUk9SKHRleHQtPnV0aWxzLCAiR1NTQVBJIEZhaWx1cmUiKTsKKy0JCXNhc2xfZ3NzX2Zy ZWVfY29udGV4dF9jb250ZW50cyh0ZXh0KTsKKy0JCXJldHVybiBTQVNMX0ZBSUw7CistCSAgICB9 CistCSAgICAKKy0JICAgIGlmICh0ZXh0LT51c2VyICYmIHRleHQtPnVzZXJbMF0pIHsKKy0JCXJl dCA9IHBhcmFtcy0+Y2Fub25fdXNlcihwYXJhbXMtPnV0aWxzLT5jb25uLAorLQkJCQkJIHRleHQt PnVzZXIsIDAsCistCQkJCQkgU0FTTF9DVV9BVVRIWklELCBvcGFyYW1zKTsKKy0JCWlmIChyZXQg PT0gU0FTTF9PSykgCistCQkgICAgcmV0ID0gcGFyYW1zLT5jYW5vbl91c2VyKHBhcmFtcy0+dXRp bHMtPmNvbm4sCistCQkJCQkgICAgIG5hbWVfdG9rZW4udmFsdWUsIDAsCistCQkJCQkgICAgIFNB U0xfQ1VfQVVUSElELCBvcGFyYW1zKTsKKy0JICAgIH0gZWxzZSB7CistCQlyZXQgPSBwYXJhbXMt PmNhbm9uX3VzZXIocGFyYW1zLT51dGlscy0+Y29ubiwKKy0JCQkJCSBuYW1lX3Rva2VuLnZhbHVl LCAwLAorLQkJCQkJIFNBU0xfQ1VfQVVUSElEIHwgU0FTTF9DVV9BVVRIWklELAorLQkJCQkJIG9w YXJhbXMpOworLQkgICAgfQorLQkgICAgKCpwX2tyYjVfZ3NzX3JlbGVhc2VfYnVmZmVyKSgmbWlu X3N0YXQsICZuYW1lX3Rva2VuKTsKKy0JICAgIAorLSAJICAgIGlmIChyZXQgIT0gU0FTTF9PSykg cmV0dXJuIHJldDsKKy0JICAgIAorLQkgICAgLyogU3dpdGNoIHRvIHNzZiBuZWdvdGlhdGlvbiAq LworLQkgICAgdGV4dC0+c3RhdGUgPSBTQVNMX0dTU0FQSV9TVEFURV9TU0ZDQVA7CistCX0KKy0J CistCXJldHVybiBTQVNMX0NPTlRJTlVFOworKyAgICAgICAgLyogdHJ5IHRvIGdldCB0aGUgdXNl cmlkICovCisrICAgICAgICBpZiAodGV4dC0+dXNlciA9PSBOVUxMKSB7CisrICAgICAgICAgICAg aW50IHVzZXJfcmVzdWx0ID0gU0FTTF9PSzsKKysKKysgICAgICAgICAgICB1c2VyX3Jlc3VsdCA9 IF9wbHVnX2dldF91c2VyaWQocGFyYW1zLT51dGlscywgJnRleHQtPnVzZXIsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21wdF9uZWVkKTsKKysKKysgICAg ICAgICAgICBpZiAoKHVzZXJfcmVzdWx0ICE9IFNBU0xfT0spICYmICh1c2VyX3Jlc3VsdCAhPSBT QVNMX0lOVEVSQUNUKSkgeworKyAgICAgICAgICAgICAgICBzYXNsX2dzc19mcmVlX2NvbnRleHRf Y29udGVudHModGV4dCk7CisrICAgICAgICAgICAgICAgIHJldHVybiB1c2VyX3Jlc3VsdDsKKysg ICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgLyogZnJlZSBwcm9tcHRzIHdlIGdvdCAqLwor KyAgICAgICAgICAgIGlmIChwcm9tcHRfbmVlZCAmJiAqcHJvbXB0X25lZWQpIHsKKysgICAgICAg ICAgICAgICAgcGFyYW1zLT51dGlscy0+ZnJlZSgqcHJvbXB0X25lZWQpOworKyAgICAgICAgICAg ICAgICAqcHJvbXB0X25lZWQgPSBOVUxMOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAg ICAvKiBpZiB0aGVyZSBhcmUgcHJvbXB0cyBub3QgZmlsbGVkIGluICovCisrICAgICAgICAgICAg aWYgKHVzZXJfcmVzdWx0ID09IFNBU0xfSU5URVJBQ1QpIHsKKysgICAgICAgICAgICAgICAgLyog bWFrZSB0aGUgcHJvbXB0IGxpc3QgKi8KKysgICAgICAgICAgICAgICAgaW50IHJlc3VsdCA9Cisr ICAgICAgICAgICAgICAgICAgICBfcGx1Z19tYWtlX3Byb21wdHMocGFyYW1zLT51dGlscywgcHJv bXB0X25lZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9y ZXN1bHQgPT0gU0FTTF9JTlRFUkFDVCA/CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIlBsZWFzZSBlbnRlciB5b3VyIGF1dGhvcml6YXRpb24gbmFtZSIgOiBOVUxMLCBO VUxMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEws CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwp OworKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IFNBU0xfT0spIHJldHVybiByZXN1bHQ7 CisrCisrICAgICAgICAgICAgICAgIHJldHVybiBTQVNMX0lOVEVSQUNUOworKyAgICAgICAgICAg IH0KKysgICAgICAgIH0KKysKKysgICAgICAgIGlmICh0ZXh0LT5zZXJ2ZXJfbmFtZSA9PSBHU1Nf Q19OT19OQU1FKSB7IC8qIG9ubHkgb25jZSAqLworKyAgICAgICAgICAgIG5hbWVfdG9rZW4ubGVu Z3RoID0gc3RybGVuKHBhcmFtcy0+c2VydmljZSkgKyAxICsgc3RybGVuKHBhcmFtcy0+c2VydmVy RlFETik7CisrICAgICAgICAgICAgbmFtZV90b2tlbi52YWx1ZSA9IChjaGFyICopcGFyYW1zLT51 dGlscy0+bWFsbG9jKChuYW1lX3Rva2VuLmxlbmd0aCArIDEpICogc2l6ZW9mKGNoYXIpKTsKKysg ICAgICAgICAgICBpZiAobmFtZV90b2tlbi52YWx1ZSA9PSBOVUxMKSB7CisrICAgICAgICAgICAg ICAgIHNhc2xfZ3NzX2ZyZWVfY29udGV4dF9jb250ZW50cyh0ZXh0KTsKKysgICAgICAgICAgICAg ICAgcmV0dXJuIFNBU0xfTk9NRU07CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGlmIChw YXJhbXMtPnNlcnZlckZRRE4gPT0gTlVMTAorKyAgICAgICAgICAgICAgICB8fCBzdHJsZW4ocGFy YW1zLT5zZXJ2ZXJGUUROKSA9PSAwKSB7CisrICAgICAgICAgICAgICAgIFNFVEVSUk9SKHRleHQt PnV0aWxzLCAiR1NTQVBJIEZhaWx1cmU6IG5vIHNlcnZlckZRRE4iKTsKKysgICAgICAgICAgICAg ICAgcmV0dXJuIFNBU0xfRkFJTDsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgc3By aW50ZihuYW1lX3Rva2VuLnZhbHVlLCIlc0AlcyIsIHBhcmFtcy0+c2VydmljZSwgcGFyYW1zLT5z ZXJ2ZXJGUUROKTsKKysKKysgICAgICAgICAgICBtYWpfc3RhdCA9ICgqcF9rcmI1X2dzc19pbXBv cnRfbmFtZSkgKCZtaW5fc3RhdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJm5hbWVfdG9rZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdTU19DX05UX0hPU1RCQVNFRF9TRVJWSUNFLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmdGV4dC0+c2VydmVyX25hbWUpOworKworKyAgICAgICAgICAgIHBh cmFtcy0+dXRpbHMtPmZyZWUobmFtZV90b2tlbi52YWx1ZSk7CisrICAgICAgICAgICAgbmFtZV90 b2tlbi52YWx1ZSA9IE5VTEw7CisrCisrICAgICAgICAgICAgaWYgKEdTU19FUlJPUihtYWpfc3Rh dCkpIHsKKysgICAgICAgICAgICAgICAgc2FzbF9nc3Nfc2V0ZXJyb3IodGV4dC0+dXRpbHMsIG1h al9zdGF0LCBtaW5fc3RhdCk7CisrICAgICAgICAgICAgICAgIHNhc2xfZ3NzX2ZyZWVfY29udGV4 dF9jb250ZW50cyh0ZXh0KTsKKysgICAgICAgICAgICAgICAgcmV0dXJuIFNBU0xfRkFJTDsKKysg ICAgICAgICAgICB9CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAoc2VydmVyaW5sZW4gPT0g MCkKKysgICAgICAgICAgICBpbnB1dF90b2tlbiA9IEdTU19DX05PX0JVRkZFUjsKKysKKysgICAg ICAgIGlmIChzZXJ2ZXJpbmxlbikgeworKyAgICAgICAgICAgIHJlYWxfaW5wdXRfdG9rZW4udmFs dWUgPSAodm9pZCAqKXNlcnZlcmluOworKyAgICAgICAgICAgIHJlYWxfaW5wdXRfdG9rZW4ubGVu Z3RoID0gc2VydmVyaW5sZW47CisrICAgICAgICB9CisrICAgICAgICBlbHNlIGlmICh0ZXh0LT5n c3NfY3R4ICE9IEdTU19DX05PX0NPTlRFWFQgKSB7CisrICAgICAgICAgICAgLyogVGhpcyBjYW4n dCBoYXBwZW4gdW5kZXIgR1NTQVBJOiB3ZSBoYXZlIGEgbm9uLW51bGwgY29udGV4dAorKyAgICAg ICAgICAgICAqIGFuZCBubyBpbnB1dCBmcm9tIHRoZSBzZXJ2ZXIuICBIb3dldmVyLCB0aGFua3Mg dG8gSW1hcCwKKysgICAgICAgICAgICAgKiB3aGljaCBkaXNjYXJkcyBvdXIgZmlyc3Qgb3V0cHV0 LCB0aGlzIGhhcHBlbnMgYWxsIHRoZSB0aW1lLgorKyAgICAgICAgICAgICAqIFRocm93IGF3YXkg dGhlIGNvbnRleHQgYW5kIHRyeSBhZ2Fpbi4gKi8KKysgICAgICAgICAgICBtYWpfc3RhdCA9ICgq cF9rcmI1X2dzc19kZWxldGVfc2VjX2NvbnRleHQpICgmbWluX3N0YXQsJnRleHQtPmdzc19jdHgs R1NTX0NfTk9fQlVGRkVSKTsKKysgICAgICAgICAgICB0ZXh0LT5nc3NfY3R4ID0gR1NTX0NfTk9f Q09OVEVYVDsKKysgICAgICAgIH0KKysKKysgICAgICAgIC8qIFNldHVwIHJlcV9mbGFncyBwcm9w ZXJseSAqLworKyAgICAgICAgcmVxX2ZsYWdzID0gR1NTX0NfTVVUVUFMX0ZMQUcgfCBHU1NfQ19T RVFVRU5DRV9GTEFHOworKyAgICAgICAgaWYocGFyYW1zLT5wcm9wcy5tYXhfc3NmID4gcGFyYW1z LT5leHRlcm5hbF9zc2YpIHsKKysgICAgICAgICAgICAvKiBXZSBhcmUgcmVxdWVzdGluZyBhIHNl Y3VyaXR5IGxheWVyICovCisrICAgICAgICAgICAgcmVxX2ZsYWdzIHw9IEdTU19DX0lOVEVHX0ZM QUc7CisrICAgICAgICAgICAgLyogQW55IFNTRiBiaWdnZXIgdGhhbiAxIGlzIGNvbmZpZGVudGlh bGl0eS4gKi8KKysgICAgICAgICAgICAvKiBMZXQncyBjaGVjayBpZiB0aGUgY2xpZW50IG9mIHRo ZSBBUEkgcmVxdWlyZXMgY29uZmlkZW50aWFsaXR5LAorKyAgICAgICAgICAgICAgIGFuZCBpdCB3 YXNuJ3QgYWxyZWFkeSBwcm92aWRlZCBieSBhbiBleHRlcm5hbCBsYXllciAqLworKyAgICAgICAg ICAgIGlmKHBhcmFtcy0+cHJvcHMubWF4X3NzZiAtIHBhcmFtcy0+ZXh0ZXJuYWxfc3NmID4gMSkg eworKyAgICAgICAgICAgICAgICAvKiBXZSB3YW50IHRvIHRyeSBmb3IgcHJpdmFjeSAqLworKyAg ICAgICAgICAgICAgICByZXFfZmxhZ3MgfD0gR1NTX0NfQ09ORl9GTEFHOworKyAgICAgICAgICAg IH0KKysgICAgICAgIH0KKysKKysgICAgICAgIG1hal9zdGF0ID0gKCpwX2tyYjVfZ3NzX2luaXRf c2VjX2NvbnRleHQpKCZtaW5fc3RhdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR1NTX0NfTk9fQ1JFREVOVElBTCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJnRleHQtPmdzc19jdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRleHQtPnNlcnZlcl9uYW1lLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHU1NfQ19OT19PSUQsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlcV9mbGFncywKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR1NTX0NfTk9fQ0hBTk5FTF9CSU5ESU5HUywKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5wdXRfdG9rZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG91dHB1dF90b2tlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJm91dF9yZXFfZmxhZ3MsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE5VTEwpOworKworKyAgICAgICAgaWYgKEdTU19FUlJPUihtYWpfc3RhdCkpIHsKKysgICAg ICAgICAgICBzYXNsX2dzc19zZXRlcnJvcih0ZXh0LT51dGlscywgbWFqX3N0YXQsIG1pbl9zdGF0 KTsKKysgICAgICAgICAgICBpZiAob3V0cHV0X3Rva2VuLT52YWx1ZSkKKysgICAgICAgICAgICAg ICAgKCpwX2tyYjVfZ3NzX3JlbGVhc2VfYnVmZmVyKSgmbWluX3N0YXQsIG91dHB1dF90b2tlbik7 CisrICAgICAgICAgICAgc2FzbF9nc3NfZnJlZV9jb250ZXh0X2NvbnRlbnRzKHRleHQpOworKyAg ICAgICAgICAgIHJldHVybiBTQVNMX0ZBSUw7CisrICAgICAgICB9CisrCisrICAgICAgICAqY2xp ZW50b3V0bGVuID0gb3V0cHV0X3Rva2VuLT5sZW5ndGg7CisrCisrICAgICAgICBpZiAob3V0cHV0 X3Rva2VuLT52YWx1ZSkgeworKyAgICAgICAgICAgIGlmIChjbGllbnRvdXQpIHsKKysgICAgICAg ICAgICAgICAgcmV0ID0gX3BsdWdfYnVmX2FsbG9jKHRleHQtPnV0aWxzLCAmKHRleHQtPm91dF9i dWYpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJih0ZXh0LT5vdXRf YnVmX2xlbiksICpjbGllbnRvdXRsZW4pOworKyAgICAgICAgICAgICAgICBpZihyZXQgIT0gU0FT TF9PSykgeworKyAgICAgICAgICAgICAgICAgICAgKCpwX2tyYjVfZ3NzX3JlbGVhc2VfYnVmZmVy KSgmbWluX3N0YXQsIG91dHB1dF90b2tlbik7CisrICAgICAgICAgICAgICAgICAgICByZXR1cm4g cmV0OworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIG1lbWNweSh0ZXh0LT5v dXRfYnVmLCBvdXRwdXRfdG9rZW4tPnZhbHVlLCAqY2xpZW50b3V0bGVuKTsKKysgICAgICAgICAg ICAgICAgKmNsaWVudG91dCA9IHRleHQtPm91dF9idWY7CisrICAgICAgICAgICAgfQorKworKyAg ICAgICAgICAgICgqcF9rcmI1X2dzc19yZWxlYXNlX2J1ZmZlcikoJm1pbl9zdGF0LCBvdXRwdXRf dG9rZW4pOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKG1hal9zdGF0ID09IEdTU19TX0NP TVBMRVRFKSB7CisrICAgICAgICAgICAgbWFqX3N0YXQgPSAoKnBfa3JiNV9nc3NfaW5xdWlyZV9j b250ZXh0KSgmbWluX3N0YXQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRleHQtPmdzc19jdHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZ0ZXh0LT5jbGllbnRfbmFtZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCwgICAgICAgLyogdGFyZ19uYW1lICovCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgIC8qIGxpZmV0aW1l ICovCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICAg ICAgIC8qIG1lY2ggKi8KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogRklYIE1FOiBTaG91bGQgY2hlY2sgdGhlIHJlc3VsdGluZyBmbGFncyBoZXJlICovCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICAgICAgIC8q IGZsYWdzICovCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V TEwsICAgICAgIC8qIGxvY2FsIGluaXQgKi8KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTlVMTCk7ICAgICAgLyogb3BlbiAqLworKworKyAgICAgICAgICAgIGlm IChHU1NfRVJST1IobWFqX3N0YXQpKSB7CisrICAgICAgICAgICAgICAgIHNhc2xfZ3NzX3NldGVy cm9yKHRleHQtPnV0aWxzLCBtYWpfc3RhdCwgbWluX3N0YXQpOworKyAgICAgICAgICAgICAgICBz YXNsX2dzc19mcmVlX2NvbnRleHRfY29udGVudHModGV4dCk7CisrICAgICAgICAgICAgICAgIHJl dHVybiBTQVNMX0ZBSUw7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIG5hbWVfdG9r ZW4ubGVuZ3RoID0gMDsKKysgICAgICAgICAgICBtYWpfc3RhdCA9ICgqcF9rcmI1X2dzc19kaXNw bGF5X25hbWUpKCZtaW5fc3RhdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGV4dC0+Y2xpZW50X25hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZuYW1lX3Rva2VuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOVUxMKTsKKysKKysgICAgICAgICAgICBpZiAoR1NTX0VSUk9SKG1hal9zdGF0KSkg eworKyAgICAgICAgICAgICAgICBpZiAobmFtZV90b2tlbi52YWx1ZSkKKysgICAgICAgICAgICAg ICAgICAgICgqcF9rcmI1X2dzc19yZWxlYXNlX2J1ZmZlcikoJm1pbl9zdGF0LCAmbmFtZV90b2tl bik7CisrICAgICAgICAgICAgICAgIFNFVEVSUk9SKHRleHQtPnV0aWxzLCAiR1NTQVBJIEZhaWx1 cmUiKTsKKysgICAgICAgICAgICAgICAgc2FzbF9nc3NfZnJlZV9jb250ZXh0X2NvbnRlbnRzKHRl eHQpOworKyAgICAgICAgICAgICAgICByZXR1cm4gU0FTTF9GQUlMOworKyAgICAgICAgICAgIH0K KysKKysgICAgICAgICAgICBpZiAodGV4dC0+dXNlciAmJiB0ZXh0LT51c2VyWzBdKSB7CisrICAg ICAgICAgICAgICAgIHJldCA9IHBhcmFtcy0+Y2Fub25fdXNlcihwYXJhbXMtPnV0aWxzLT5jb25u LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC0+dXNlciwg MCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNBU0xfQ1VfQVVU SFpJRCwgb3BhcmFtcyk7CisrICAgICAgICAgICAgICAgIGlmIChyZXQgPT0gU0FTTF9PSykKKysg ICAgICAgICAgICAgICAgICAgIHJldCA9IHBhcmFtcy0+Y2Fub25fdXNlcihwYXJhbXMtPnV0aWxz LT5jb25uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5h bWVfdG9rZW4udmFsdWUsIDAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU0FTTF9DVV9BVVRISUQsIG9wYXJhbXMpOworKyAgICAgICAgICAgIH0gZWxzZSB7 CisrICAgICAgICAgICAgICAgIHJldCA9IHBhcmFtcy0+Y2Fub25fdXNlcihwYXJhbXMtPnV0aWxz LT5jb25uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV90 b2tlbi52YWx1ZSwgMCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFNBU0xfQ1VfQVVUSElEIHwgU0FTTF9DVV9BVVRIWklELAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb3BhcmFtcyk7CisrICAgICAgICAgICAgfQorKyAgICAgICAg ICAgICgqcF9rcmI1X2dzc19yZWxlYXNlX2J1ZmZlcikoJm1pbl9zdGF0LCAmbmFtZV90b2tlbik7 CisrCisrICAgICAgICAgICAgaWYgKHJldCAhPSBTQVNMX09LKSByZXR1cm4gcmV0OworKworKyAg ICAgICAgICAgIC8qIFN3aXRjaCB0byBzc2YgbmVnb3RpYXRpb24gKi8KKysgICAgICAgICAgICB0 ZXh0LT5zdGF0ZSA9IFNBU0xfR1NTQVBJX1NUQVRFX1NTRkNBUDsKKysgICAgICAgIH0KKysKKysg ICAgICAgIHJldHVybiBTQVNMX0NPTlRJTlVFOworIAorICAgICBjYXNlIFNBU0xfR1NTQVBJX1NU QVRFX1NTRkNBUDogeworLQlzYXNsX3NlY3VyaXR5X3Byb3BlcnRpZXNfdCAqc2VjcHJvcHMgPSAm KHBhcmFtcy0+cHJvcHMpOworLQl1bnNpZ25lZCBpbnQgYWxlbiwgZXh0ZXJuYWwgPSBwYXJhbXMt PmV4dGVybmFsX3NzZjsKKy0Jc2FzbF9zc2ZfdCBuZWVkLCBhbGxvd2VkOworLQljaGFyIHNlcnZl cmhhcywgbXljaG9pY2U7CistCQorLQlyZWFsX2lucHV0X3Rva2VuLnZhbHVlID0gKHZvaWQgKikg c2VydmVyaW47CistCXJlYWxfaW5wdXRfdG9rZW4ubGVuZ3RoID0gc2VydmVyaW5sZW47CistCQor LQltYWpfc3RhdCA9ICgqcF9rcmI1X2dzc191bndyYXApKCZtaW5fc3RhdCwKKy0JCQkgICAgICB0 ZXh0LT5nc3NfY3R4LAorLQkJCSAgICAgIGlucHV0X3Rva2VuLAorLQkJCSAgICAgIG91dHB1dF90 b2tlbiwKKy0JCQkgICAgICBOVUxMLAorLQkJCSAgICAgIE5VTEwpOworLQkKKy0JaWYgKEdTU19F UlJPUihtYWpfc3RhdCkpIHsKKy0JICAgIHNhc2xfZ3NzX3NldGVycm9yKHRleHQtPnV0aWxzLCBt YWpfc3RhdCwgbWluX3N0YXQpOworLQkgICAgc2FzbF9nc3NfZnJlZV9jb250ZXh0X2NvbnRlbnRz KHRleHQpOworLQkgICAgaWYgKG91dHB1dF90b2tlbi0+dmFsdWUpCistCQkoKnBfa3JiNV9nc3Nf cmVsZWFzZV9idWZmZXIpKCZtaW5fc3RhdCwgb3V0cHV0X3Rva2VuKTsKKy0JICAgIHJldHVybiBT QVNMX0ZBSUw7CistCX0KKy0JCistCS8qIHRha2VuIGZyb20ga2VyYmVyb3MuYyAqLworLQlpZiAo c2VjcHJvcHMtPm1pbl9zc2YgPiAoSzVfTUFYX1NTRiArIGV4dGVybmFsKSkgeworLQkgICAgcmV0 dXJuIFNBU0xfVE9PV0VBSzsKKy0JfSBlbHNlIGlmIChzZWNwcm9wcy0+bWluX3NzZiA+IHNlY3By b3BzLT5tYXhfc3NmKSB7CistCSAgICByZXR1cm4gU0FTTF9CQURQQVJBTTsKKy0JfQorLQkKKy0J LyogbmVlZCBiaXRzIG9mIGxheWVyIC0tIHNhc2xfc3NmX3QgaXMgdW5zaWduZWQgc28gYmUgY2Fy ZWZ1bCAqLworLQlpZiAoc2VjcHJvcHMtPm1heF9zc2YgPj0gZXh0ZXJuYWwpIHsKKy0JICAgIGFs bG93ZWQgPSBzZWNwcm9wcy0+bWF4X3NzZiAtIGV4dGVybmFsOworLQl9IGVsc2UgeworLQkgICAg YWxsb3dlZCA9IDA7CistCX0KKy0JaWYgKHNlY3Byb3BzLT5taW5fc3NmID49IGV4dGVybmFsKSB7 CistCSAgICBuZWVkID0gc2VjcHJvcHMtPm1pbl9zc2YgLSBleHRlcm5hbDsKKy0JfSBlbHNlIHsK Ky0JICAgIC8qIGdvb2QgdG8gZ28gKi8KKy0JICAgIG5lZWQgPSAwOworLQl9CistCQorLQkvKiBi aXQgbWFzayBvZiBzZXJ2ZXIgc3VwcG9ydCAqLworLQlzZXJ2ZXJoYXMgPSAoKGNoYXIgKilvdXRw dXRfdG9rZW4tPnZhbHVlKVswXTsKKy0JCistCS8qIGlmIGNsaWVudCBkaWRuJ3Qgc2V0IHVzZSBz dHJvbmdlc3QgbGF5ZXIgYXZhaWxhYmxlICovCistCWlmIChhbGxvd2VkID49IEs1X01BWF9TU0Yg JiYgbmVlZCA8PSBLNV9NQVhfU1NGICYmIChzZXJ2ZXJoYXMgJiA0KSkgeworLQkgICAgLyogZW5j cnlwdGlvbiAqLworLQkgICAgb3BhcmFtcy0+ZW5jb2RlID0gJmdzc2FwaV9wcml2YWN5X2VuY29k ZTsKKy0JICAgIG9wYXJhbXMtPmRlY29kZSA9ICZnc3NhcGlfZGVjb2RlOworLQkgICAgLyogRklY IE1FOiBOZWVkIHRvIGV4dHJhY3QgdGhlIHByb3BlciB2YWx1ZSBoZXJlICovCistCSAgICBvcGFy YW1zLT5tZWNoX3NzZiA9IEs1X01BWF9TU0Y7CistCSAgICBteWNob2ljZSA9IDQ7CistCX0gZWxz ZSBpZiAoYWxsb3dlZCA+PSAxICYmIG5lZWQgPD0gMSAmJiAoc2VydmVyaGFzICYgMikpIHsKKy0J ICAgIC8qIGludGVncml0eSAqLworLQkgICAgb3BhcmFtcy0+ZW5jb2RlID0gJmdzc2FwaV9pbnRl Z3JpdHlfZW5jb2RlOworLQkgICAgb3BhcmFtcy0+ZGVjb2RlID0gJmdzc2FwaV9kZWNvZGU7Cist CSAgICBvcGFyYW1zLT5tZWNoX3NzZiA9IDE7CistCSAgICBteWNob2ljZSA9IDI7CistCX0gZWxz ZSBpZiAobmVlZCA8PSAwICYmIChzZXJ2ZXJoYXMgJiAxKSkgeworLQkgICAgLyogbm8gbGF5ZXIg Ki8KKy0JICAgIG9wYXJhbXMtPmVuY29kZSA9IE5VTEw7CistCSAgICBvcGFyYW1zLT5kZWNvZGUg PSBOVUxMOworLQkgICAgb3BhcmFtcy0+bWVjaF9zc2YgPSAwOworLQkgICAgbXljaG9pY2UgPSAx OworLQl9IGVsc2UgeworLQkgICAgLyogdGhlcmUncyBubyBhcHByb3ByaWF0ZSBsYXllcmluZyBm b3IgdXMhICovCistCSAgICBzYXNsX2dzc19mcmVlX2NvbnRleHRfY29udGVudHModGV4dCk7Cist CSAgICByZXR1cm4gU0FTTF9UT09XRUFLOworLQl9CistCQorKyAgICAgICAgc2FzbF9zZWN1cml0 eV9wcm9wZXJ0aWVzX3QgKnNlY3Byb3BzID0gJihwYXJhbXMtPnByb3BzKTsKKysgICAgICAgIHVu c2lnbmVkIGludCBhbGVuLCBleHRlcm5hbCA9IHBhcmFtcy0+ZXh0ZXJuYWxfc3NmOworKyAgICAg ICAgc2FzbF9zc2ZfdCBuZWVkLCBhbGxvd2VkOworKyAgICAgICAgY2hhciBzZXJ2ZXJoYXMsIG15 Y2hvaWNlOworKworKyAgICAgICAgcmVhbF9pbnB1dF90b2tlbi52YWx1ZSA9ICh2b2lkICopIHNl cnZlcmluOworKyAgICAgICAgcmVhbF9pbnB1dF90b2tlbi5sZW5ndGggPSBzZXJ2ZXJpbmxlbjsK KysKKysgICAgICAgIG1hal9zdGF0ID0gKCpwX2tyYjVfZ3NzX3Vud3JhcCkoJm1pbl9zdGF0LAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtPmdzc19jdHgsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW5wdXRfdG9rZW4sCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb3V0cHV0X3Rva2VuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V TEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisrCisrICAgICAgICBp ZiAoR1NTX0VSUk9SKG1hal9zdGF0KSkgeworKyAgICAgICAgICAgIHNhc2xfZ3NzX3NldGVycm9y KHRleHQtPnV0aWxzLCBtYWpfc3RhdCwgbWluX3N0YXQpOworKyAgICAgICAgICAgIHNhc2xfZ3Nz X2ZyZWVfY29udGV4dF9jb250ZW50cyh0ZXh0KTsKKysgICAgICAgICAgICBpZiAob3V0cHV0X3Rv a2VuLT52YWx1ZSkKKysgICAgICAgICAgICAgICAgKCpwX2tyYjVfZ3NzX3JlbGVhc2VfYnVmZmVy KSgmbWluX3N0YXQsIG91dHB1dF90b2tlbik7CisrICAgICAgICAgICAgcmV0dXJuIFNBU0xfRkFJ TDsKKysgICAgICAgIH0KKysKKysgICAgICAgIC8qIHRha2VuIGZyb20ga2VyYmVyb3MuYyAqLwor KyAgICAgICAgaWYgKHNlY3Byb3BzLT5taW5fc3NmID4gKEs1X01BWF9TU0YgKyBleHRlcm5hbCkp IHsKKysgICAgICAgICAgICByZXR1cm4gU0FTTF9UT09XRUFLOworKyAgICAgICAgfSBlbHNlIGlm IChzZWNwcm9wcy0+bWluX3NzZiA+IHNlY3Byb3BzLT5tYXhfc3NmKSB7CisrICAgICAgICAgICAg cmV0dXJuIFNBU0xfQkFEUEFSQU07CisrICAgICAgICB9CisrCisrICAgICAgICAvKiBuZWVkIGJp dHMgb2YgbGF5ZXIgLS0gc2FzbF9zc2ZfdCBpcyB1bnNpZ25lZCBzbyBiZSBjYXJlZnVsICovCisr ICAgICAgICBpZiAoc2VjcHJvcHMtPm1heF9zc2YgPj0gZXh0ZXJuYWwpIHsKKysgICAgICAgICAg ICBhbGxvd2VkID0gc2VjcHJvcHMtPm1heF9zc2YgLSBleHRlcm5hbDsKKysgICAgICAgIH0gZWxz ZSB7CisrICAgICAgICAgICAgYWxsb3dlZCA9IDA7CisrICAgICAgICB9CisrICAgICAgICBpZiAo c2VjcHJvcHMtPm1pbl9zc2YgPj0gZXh0ZXJuYWwpIHsKKysgICAgICAgICAgICBuZWVkID0gc2Vj cHJvcHMtPm1pbl9zc2YgLSBleHRlcm5hbDsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAg ICAgLyogZ29vZCB0byBnbyAqLworKyAgICAgICAgICAgIG5lZWQgPSAwOworKyAgICAgICAgfQor KworKyAgICAgICAgLyogYml0IG1hc2sgb2Ygc2VydmVyIHN1cHBvcnQgKi8KKysgICAgICAgIHNl cnZlcmhhcyA9ICgoY2hhciAqKW91dHB1dF90b2tlbi0+dmFsdWUpWzBdOworKworKyAgICAgICAg LyogaWYgY2xpZW50IGRpZG4ndCBzZXQgdXNlIHN0cm9uZ2VzdCBsYXllciBhdmFpbGFibGUgKi8K KysgICAgICAgIGlmIChhbGxvd2VkID49IEs1X01BWF9TU0YgJiYgbmVlZCA8PSBLNV9NQVhfU1NG ICYmIChzZXJ2ZXJoYXMgJiA0KSkgeworKyAgICAgICAgICAgIC8qIGVuY3J5cHRpb24gKi8KKysg ICAgICAgICAgICBvcGFyYW1zLT5lbmNvZGUgPSAmZ3NzYXBpX3ByaXZhY3lfZW5jb2RlOworKyAg ICAgICAgICAgIG9wYXJhbXMtPmRlY29kZSA9ICZnc3NhcGlfZGVjb2RlOworKyAgICAgICAgICAg IC8qIEZJWCBNRTogTmVlZCB0byBleHRyYWN0IHRoZSBwcm9wZXIgdmFsdWUgaGVyZSAqLworKyAg ICAgICAgICAgIG9wYXJhbXMtPm1lY2hfc3NmID0gSzVfTUFYX1NTRjsKKysgICAgICAgICAgICBt eWNob2ljZSA9IDQ7CisrICAgICAgICB9IGVsc2UgaWYgKGFsbG93ZWQgPj0gMSAmJiBuZWVkIDw9 IDEgJiYgKHNlcnZlcmhhcyAmIDIpKSB7CisrICAgICAgICAgICAgLyogaW50ZWdyaXR5ICovCisr ICAgICAgICAgICAgb3BhcmFtcy0+ZW5jb2RlID0gJmdzc2FwaV9pbnRlZ3JpdHlfZW5jb2RlOwor KyAgICAgICAgICAgIG9wYXJhbXMtPmRlY29kZSA9ICZnc3NhcGlfZGVjb2RlOworKyAgICAgICAg ICAgIG9wYXJhbXMtPm1lY2hfc3NmID0gMTsKKysgICAgICAgICAgICBteWNob2ljZSA9IDI7Cisr ICAgICAgICB9IGVsc2UgaWYgKG5lZWQgPD0gMCAmJiAoc2VydmVyaGFzICYgMSkpIHsKKysgICAg ICAgICAgICAvKiBubyBsYXllciAqLworKyAgICAgICAgICAgIG9wYXJhbXMtPmVuY29kZSA9IE5V TEw7CisrICAgICAgICAgICAgb3BhcmFtcy0+ZGVjb2RlID0gTlVMTDsKKysgICAgICAgICAgICBv cGFyYW1zLT5tZWNoX3NzZiA9IDA7CisrICAgICAgICAgICAgbXljaG9pY2UgPSAxOworKyAgICAg ICAgfSBlbHNlIHsKKysgICAgICAgICAgICAvKiB0aGVyZSdzIG5vIGFwcHJvcHJpYXRlIGxheWVy aW5nIGZvciB1cyEgKi8KKysgICAgICAgICAgICBzYXNsX2dzc19mcmVlX2NvbnRleHRfY29udGVu dHModGV4dCk7CisrICAgICAgICAgICAgcmV0dXJuIFNBU0xfVE9PV0VBSzsKKysgICAgICAgIH0K KysKKyAgICAgICAgIG9wYXJhbXMtPm1heG91dGJ1ZiA9CistCSAgICAoKCh1bnNpZ25lZCBjaGFy ICopIG91dHB1dF90b2tlbi0+dmFsdWUpWzFdIDw8IDE2KSB8CisrICAgICAgICAgICAgKCgodW5z aWduZWQgY2hhciAqKSBvdXRwdXRfdG9rZW4tPnZhbHVlKVsxXSA8PCAxNikgfAorICAgICAgICAg ICAgICgoKHVuc2lnbmVkIGNoYXIgKikgb3V0cHV0X3Rva2VuLT52YWx1ZSlbMl0gPDwgOCkgfAor ICAgICAgICAgICAgICgoKHVuc2lnbmVkIGNoYXIgKikgb3V0cHV0X3Rva2VuLT52YWx1ZSlbM10g PDwgMCk7CisgCistCWlmKG9wYXJhbXMtPm1lY2hfc3NmKSB7CisrICAgICAgICBpZihvcGFyYW1z LT5tZWNoX3NzZikgeworICAgICAgICAgICAgIG1hal9zdGF0ID0gKCpwX2tyYjVfZ3NzX3dyYXBf c2l6ZV9saW1pdCkoJm1pbl9zdGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGV4dC0+Z3NzX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDEsCitAQCAtMTU2MiwzOCArMTU2MiwzOCBAQCBzdGF0aWMgaW50IGdz c2FwaV9jbGllbnRfbWVjaF9zdGVwKHZvaWQgKmNvbm5fY29udGV4dCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChPTV91aW50MzIpIG9wYXJhbXMtPm1heG91 dGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYXhf aW5wdXQpOworIAorLQkgICAgaWYobWF4X2lucHV0ID4gb3BhcmFtcy0+bWF4b3V0YnVmKSB7Cist CQkvKiBIZWltZGFsIGFwcGVhcnMgdG8gZ2V0IHRoaXMgd3JvbmcgKi8KKy0JCW9wYXJhbXMtPm1h eG91dGJ1ZiAtPSAobWF4X2lucHV0IC0gb3BhcmFtcy0+bWF4b3V0YnVmKTsKKy0JICAgIH0gZWxz ZSB7CistCQkvKiBUaGlzIGNvZGUgaXMgYWN0dWFsbHkgY29ycmVjdCAqLworLQkJb3BhcmFtcy0+ bWF4b3V0YnVmID0gbWF4X2lucHV0OworLQkgICAgfQorLQl9CistCQorLQkoKnBfa3JiNV9nc3Nf cmVsZWFzZV9idWZmZXIpKCZtaW5fc3RhdCwgb3V0cHV0X3Rva2VuKTsKKy0JCistCS8qIG9wYXJh bXMtPnVzZXIgaXMgYWx3YXlzIHNldCwgZHVlIHRvIGNhbm9uX3VzZXIgcmVxdWlyZW1lbnRzLgor LQkgKiBNYWtlIHN1cmUgdGhlIGNsaWVudCBhY3R1YWxseSByZXF1ZXN0ZWQgaXQgdGhvdWdoLCBi eSBjaGVja2luZworLQkgKiBpZiBvdXIgY29udGV4dCB3YXMgc2V0LgorLQkgKi8KKy0JaWYgKHRl eHQtPnVzZXIgJiYgdGV4dC0+dXNlclswXSkKKy0JICAgIGFsZW4gPSBzdHJsZW4ob3BhcmFtcy0+ dXNlcik7CistCWVsc2UKKy0JICAgIGFsZW4gPSAwOworLQkKKy0JaW5wdXRfdG9rZW4tPmxlbmd0 aCA9IDQgKyBhbGVuOworLQlpbnB1dF90b2tlbi0+dmFsdWUgPQorLQkgICAgKGNoYXIgKilwYXJh bXMtPnV0aWxzLT5tYWxsb2MoKGlucHV0X3Rva2VuLT5sZW5ndGggKyAxKSpzaXplb2YoY2hhcikp OworLQlpZiAoaW5wdXRfdG9rZW4tPnZhbHVlID09IE5VTEwpIHsKKy0JICAgIHNhc2xfZ3NzX2Zy ZWVfY29udGV4dF9jb250ZW50cyh0ZXh0KTsKKy0JICAgIHJldHVybiBTQVNMX05PTUVNOworLQl9 CistCQorLQlpZiAoYWxlbikKKy0JICAgIG1lbWNweSgoY2hhciAqKWlucHV0X3Rva2VuLT52YWx1 ZSs0LG9wYXJhbXMtPnVzZXIsYWxlbik7CistCistCS8qIGJ1aWxkIHVwIG91ciBzZWN1cml0eSBw cm9wZXJ0aWVzIHRva2VuICovCisrICAgICAgICAgICAgaWYobWF4X2lucHV0ID4gb3BhcmFtcy0+ bWF4b3V0YnVmKSB7CisrICAgICAgICAgICAgICAgIC8qIEhlaW1kYWwgYXBwZWFycyB0byBnZXQg dGhpcyB3cm9uZyAqLworKyAgICAgICAgICAgICAgICBvcGFyYW1zLT5tYXhvdXRidWYgLT0gKG1h eF9pbnB1dCAtIG9wYXJhbXMtPm1heG91dGJ1Zik7CisrICAgICAgICAgICAgfSBlbHNlIHsKKysg ICAgICAgICAgICAgICAgLyogVGhpcyBjb2RlIGlzIGFjdHVhbGx5IGNvcnJlY3QgKi8KKysgICAg ICAgICAgICAgICAgb3BhcmFtcy0+bWF4b3V0YnVmID0gbWF4X2lucHV0OworKyAgICAgICAgICAg IH0KKysgICAgICAgIH0KKysKKysgICAgICAgICgqcF9rcmI1X2dzc19yZWxlYXNlX2J1ZmZlciko Jm1pbl9zdGF0LCBvdXRwdXRfdG9rZW4pOworKworKyAgICAgICAgLyogb3BhcmFtcy0+dXNlciBp cyBhbHdheXMgc2V0LCBkdWUgdG8gY2Fub25fdXNlciByZXF1aXJlbWVudHMuCisrICAgICAgICAg KiBNYWtlIHN1cmUgdGhlIGNsaWVudCBhY3R1YWxseSByZXF1ZXN0ZWQgaXQgdGhvdWdoLCBieSBj aGVja2luZworKyAgICAgICAgICogaWYgb3VyIGNvbnRleHQgd2FzIHNldC4KKysgICAgICAgICAq LworKyAgICAgICAgaWYgKHRleHQtPnVzZXIgJiYgdGV4dC0+dXNlclswXSkKKysgICAgICAgICAg ICBhbGVuID0gc3RybGVuKG9wYXJhbXMtPnVzZXIpOworKyAgICAgICAgZWxzZQorKyAgICAgICAg ICAgIGFsZW4gPSAwOworKworKyAgICAgICAgaW5wdXRfdG9rZW4tPmxlbmd0aCA9IDQgKyBhbGVu OworKyAgICAgICAgaW5wdXRfdG9rZW4tPnZhbHVlID0KKysgICAgICAgICAgICAoY2hhciAqKXBh cmFtcy0+dXRpbHMtPm1hbGxvYygoaW5wdXRfdG9rZW4tPmxlbmd0aCArIDEpKnNpemVvZihjaGFy KSk7CisrICAgICAgICBpZiAoaW5wdXRfdG9rZW4tPnZhbHVlID09IE5VTEwpIHsKKysgICAgICAg ICAgICBzYXNsX2dzc19mcmVlX2NvbnRleHRfY29udGVudHModGV4dCk7CisrICAgICAgICAgICAg cmV0dXJuIFNBU0xfTk9NRU07CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAoYWxlbikKKysg ICAgICAgICAgICBtZW1jcHkoKGNoYXIgKilpbnB1dF90b2tlbi0+dmFsdWUrNCxvcGFyYW1zLT51 c2VyLGFsZW4pOworKworKyAgICAgICAgLyogYnVpbGQgdXAgb3VyIHNlY3VyaXR5IHByb3BlcnRp ZXMgdG9rZW4gKi8KKyAgICAgICAgIGlmIChwYXJhbXMtPnByb3BzLm1heGJ1ZnNpemUgPiAweEZG RkZGRikgeworICAgICAgICAgICAgIC8qIG1ha2Ugc3VyZSBtYXhidWZzaXplIGlzbid0IHRvbyBs YXJnZSAqLworICAgICAgICAgICAgIC8qIG1heGJ1ZnNpemUgPSAweEZGRkZGRiAqLworQEAgLTE2 MDEsMTE1ICsxNjAxLDExNSBAQCBzdGF0aWMgaW50IGdzc2FwaV9jbGllbnRfbWVjaF9zdGVwKHZv aWQgKmNvbm5fY29udGV4dCwKKyAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKilpbnB1dF90 b2tlbi0+dmFsdWUpWzJdID0gMHhGRjsKKyAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKilp bnB1dF90b2tlbi0+dmFsdWUpWzNdID0gMHhGRjsKKyAgICAgICAgIH0gZWxzZSB7CistICAgICAg ICAgICAgKCh1bnNpZ25lZCBjaGFyICopaW5wdXRfdG9rZW4tPnZhbHVlKVsxXSA9IAorKyAgICAg ICAgICAgICgodW5zaWduZWQgY2hhciAqKWlucHV0X3Rva2VuLT52YWx1ZSlbMV0gPQorICAgICAg ICAgICAgICAgICAocGFyYW1zLT5wcm9wcy5tYXhidWZzaXplID4+IDE2KSAmIDB4RkY7CistICAg ICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopaW5wdXRfdG9rZW4tPnZhbHVlKVsyXSA9IAorKyAg ICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKWlucHV0X3Rva2VuLT52YWx1ZSlbMl0gPQorICAg ICAgICAgICAgICAgICAocGFyYW1zLT5wcm9wcy5tYXhidWZzaXplID4+IDgpICYgMHhGRjsKKy0g ICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKilpbnB1dF90b2tlbi0+dmFsdWUpWzNdID0gCisr ICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopaW5wdXRfdG9rZW4tPnZhbHVlKVszXSA9Cisg ICAgICAgICAgICAgICAgIChwYXJhbXMtPnByb3BzLm1heGJ1ZnNpemUgPj4gMCkgJiAweEZGOwor ICAgICAgICAgfQorLQkoKHVuc2lnbmVkIGNoYXIgKilpbnB1dF90b2tlbi0+dmFsdWUpWzBdID0g bXljaG9pY2U7CistCQorLQltYWpfc3RhdCA9ICgqcF9rcmI1X2dzc193cmFwKSAoJm1pbl9zdGF0 LAorLQkJCSAgICAgdGV4dC0+Z3NzX2N0eCwKKy0JCQkgICAgIDAsIC8qIEp1c3QgaW50ZWdyaXR5 IGNoZWNraW5nIGhlcmUgKi8KKy0JCQkgICAgIEdTU19DX1FPUF9ERUZBVUxULAorLQkJCSAgICAg aW5wdXRfdG9rZW4sCistCQkJICAgICBOVUxMLAorLQkJCSAgICAgb3V0cHV0X3Rva2VuKTsKKy0J CistCXBhcmFtcy0+dXRpbHMtPmZyZWUoaW5wdXRfdG9rZW4tPnZhbHVlKTsKKy0JaW5wdXRfdG9r ZW4tPnZhbHVlID0gTlVMTDsKKy0JCistCWlmIChHU1NfRVJST1IobWFqX3N0YXQpKSB7CistCSAg ICBzYXNsX2dzc19zZXRlcnJvcih0ZXh0LT51dGlscywgbWFqX3N0YXQsIG1pbl9zdGF0KTsKKy0J ICAgIGlmIChvdXRwdXRfdG9rZW4tPnZhbHVlKQorLQkJKCpwX2tyYjVfZ3NzX3JlbGVhc2VfYnVm ZmVyKSgmbWluX3N0YXQsIG91dHB1dF90b2tlbik7CistCSAgICBzYXNsX2dzc19mcmVlX2NvbnRl eHRfY29udGVudHModGV4dCk7CistCSAgICByZXR1cm4gU0FTTF9GQUlMOworLQl9CistCQorLQlp ZiAoY2xpZW50b3V0bGVuKQorLQkgICAgKmNsaWVudG91dGxlbiA9IG91dHB1dF90b2tlbi0+bGVu Z3RoOworLQlpZiAob3V0cHV0X3Rva2VuLT52YWx1ZSkgeworLQkgICAgaWYgKGNsaWVudG91dCkg eworLQkJcmV0ID0gX3BsdWdfYnVmX2FsbG9jKHRleHQtPnV0aWxzLCAmKHRleHQtPm91dF9idWYp LAorLQkJCQkgICAgICAmKHRleHQtPm91dF9idWZfbGVuKSwgKmNsaWVudG91dGxlbik7CistCQlp ZiAocmV0ICE9IFNBU0xfT0spIHsKKy0JCSAgICgqcF9rcmI1X2dzc19yZWxlYXNlX2J1ZmZlciko Jm1pbl9zdGF0LCBvdXRwdXRfdG9rZW4pOworLQkJICAgIHJldHVybiByZXQ7CistCQl9CistCQlt ZW1jcHkodGV4dC0+b3V0X2J1Ziwgb3V0cHV0X3Rva2VuLT52YWx1ZSwgKmNsaWVudG91dGxlbik7 CistCQkqY2xpZW50b3V0ID0gdGV4dC0+b3V0X2J1ZjsKKy0JICAgIH0KKy0JICAgIAorLQkgICAg KCpwX2tyYjVfZ3NzX3JlbGVhc2VfYnVmZmVyKSgmbWluX3N0YXQsIG91dHB1dF90b2tlbik7Cist CX0KKy0JCistCXRleHQtPnN0YXRlID0gU0FTTF9HU1NBUElfU1RBVEVfQVVUSEVOVElDQVRFRDsK Ky0JCistCW9wYXJhbXMtPmRvbmVmbGFnID0gMTsKKy0JCistCS8qIHVzZWQgYnkgbGF5ZXJzICov CistCV9wbHVnX2RlY29kZV9pbml0KCZ0ZXh0LT5kZWNvZGVfY29udGV4dCwgdGV4dC0+dXRpbHMs CistCQkJICAocGFyYW1zLT5wcm9wcy5tYXhidWZzaXplID4gMHhGRkZGRkYpID8gMHhGRkZGRkYg OgorLQkJCSAgcGFyYW1zLT5wcm9wcy5tYXhidWZzaXplKTsKKy0JCistCXJldHVybiBTQVNMX09L OworKyAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopaW5wdXRfdG9rZW4tPnZhbHVlKVswXSA9IG15 Y2hvaWNlOworKworKyAgICAgICAgbWFqX3N0YXQgPSAoKnBfa3JiNV9nc3Nfd3JhcCkgKCZtaW5f c3RhdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtPmdzc19jdHgsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAvKiBKdXN0IGludGVncml0eSBjaGVja2luZyBo ZXJlICovCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU1NfQ19RT1BfREVGQVVMVCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X3Rva2VuLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91 dHB1dF90b2tlbik7CisrCisrICAgICAgICBwYXJhbXMtPnV0aWxzLT5mcmVlKGlucHV0X3Rva2Vu LT52YWx1ZSk7CisrICAgICAgICBpbnB1dF90b2tlbi0+dmFsdWUgPSBOVUxMOworKworKyAgICAg ICAgaWYgKEdTU19FUlJPUihtYWpfc3RhdCkpIHsKKysgICAgICAgICAgICBzYXNsX2dzc19zZXRl cnJvcih0ZXh0LT51dGlscywgbWFqX3N0YXQsIG1pbl9zdGF0KTsKKysgICAgICAgICAgICBpZiAo b3V0cHV0X3Rva2VuLT52YWx1ZSkKKysgICAgICAgICAgICAgICAgKCpwX2tyYjVfZ3NzX3JlbGVh c2VfYnVmZmVyKSgmbWluX3N0YXQsIG91dHB1dF90b2tlbik7CisrICAgICAgICAgICAgc2FzbF9n c3NfZnJlZV9jb250ZXh0X2NvbnRlbnRzKHRleHQpOworKyAgICAgICAgICAgIHJldHVybiBTQVNM X0ZBSUw7CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAoY2xpZW50b3V0bGVuKQorKyAgICAg ICAgICAgICpjbGllbnRvdXRsZW4gPSBvdXRwdXRfdG9rZW4tPmxlbmd0aDsKKysgICAgICAgIGlm IChvdXRwdXRfdG9rZW4tPnZhbHVlKSB7CisrICAgICAgICAgICAgaWYgKGNsaWVudG91dCkgewor KyAgICAgICAgICAgICAgICByZXQgPSBfcGx1Z19idWZfYWxsb2ModGV4dC0+dXRpbHMsICYodGV4 dC0+b3V0X2J1ZiksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHRl eHQtPm91dF9idWZfbGVuKSwgKmNsaWVudG91dGxlbik7CisrICAgICAgICAgICAgICAgIGlmIChy ZXQgIT0gU0FTTF9PSykgeworKyAgICAgICAgICAgICAgICAgICAoKnBfa3JiNV9nc3NfcmVsZWFz ZV9idWZmZXIpKCZtaW5fc3RhdCwgb3V0cHV0X3Rva2VuKTsKKysgICAgICAgICAgICAgICAgICAg IHJldHVybiByZXQ7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgbWVtY3B5 KHRleHQtPm91dF9idWYsIG91dHB1dF90b2tlbi0+dmFsdWUsICpjbGllbnRvdXRsZW4pOworKyAg ICAgICAgICAgICAgICAqY2xpZW50b3V0ID0gdGV4dC0+b3V0X2J1ZjsKKysgICAgICAgICAgICB9 CisrCisrICAgICAgICAgICAgKCpwX2tyYjVfZ3NzX3JlbGVhc2VfYnVmZmVyKSgmbWluX3N0YXQs IG91dHB1dF90b2tlbik7CisrICAgICAgICB9CisrCisrICAgICAgICB0ZXh0LT5zdGF0ZSA9IFNB U0xfR1NTQVBJX1NUQVRFX0FVVEhFTlRJQ0FURUQ7CisrCisrICAgICAgICBvcGFyYW1zLT5kb25l ZmxhZyA9IDE7CisrCisrICAgICAgICAvKiB1c2VkIGJ5IGxheWVycyAqLworKyAgICAgICAgX3Bs dWdfZGVjb2RlX2luaXQoJnRleHQtPmRlY29kZV9jb250ZXh0LCB0ZXh0LT51dGlscywKKysgICAg ICAgICAgICAgICAgICAgICAgICAgIChwYXJhbXMtPnByb3BzLm1heGJ1ZnNpemUgPiAweEZGRkZG RikgPyAweEZGRkZGRiA6CisrICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMtPnByb3Bz Lm1heGJ1ZnNpemUpOworKworKyAgICAgICAgcmV0dXJuIFNBU0xfT0s7CisgICAgIH0KKy0JCisr CisgICAgIGRlZmF1bHQ6CistCXBhcmFtcy0+dXRpbHMtPmxvZyhOVUxMLCBTQVNMX0xPR19FUlIs CistCQkJICAgIkludmFsaWQgR1NTQVBJIGNsaWVudCBzdGVwICVkXG4iLCB0ZXh0LT5zdGF0ZSk7 CistCXJldHVybiBTQVNMX0ZBSUw7CisrICAgICAgICBwYXJhbXMtPnV0aWxzLT5sb2coTlVMTCwg U0FTTF9MT0dfRVJSLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIEdTU0FQ SSBjbGllbnQgc3RlcCAlZFxuIiwgdGV4dC0+c3RhdGUpOworKyAgICAgICAgcmV0dXJuIFNBU0xf RkFJTDsKKyAgICAgfQorLSAgICAKKysKKyAgICAgcmV0dXJuIFNBU0xfRkFJTDsgLyogc2hvdWxk IG5ldmVyIGdldCBoZXJlICovCisgfQorIAorIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIGdz c2FwaV9yZXF1aXJlZF9wcm9tcHRzW10gPSB7CisgICAgIFNBU0xfQ0JfTElTVF9FTkQKKy19OyAg CisrfTsKKyAKKy1zdGF0aWMgc2FzbF9jbGllbnRfcGx1Z190IGdzc2FwaV9jbGllbnRfcGx1Z2lu c1tdID0gCisrc3RhdGljIHNhc2xfY2xpZW50X3BsdWdfdCBnc3NhcGlfY2xpZW50X3BsdWdpbnNb XSA9CisgeworICAgICB7CistCSJHU1NBUEkiLAkJCS8qIG1lY2hfbmFtZSAqLworLQlLNV9NQVhf U1NGLAkJCS8qIG1heF9zc2YgKi8KKy0JU0FTTF9TRUNfTk9QTEFJTlRFWFQKKy0JfCBTQVNMX1NF Q19OT0FDVElWRQorLQl8IFNBU0xfU0VDX05PQU5PTllNT1VTCistCXwgU0FTTF9TRUNfTVVUVUFM X0FVVEgsICAgICAgICAgLyogc2VjdXJpdHlfZmxhZ3MgKi8KKy0JU0FTTF9GRUFUX05FRURTRVJW RVJGUUROCistCXwgU0FTTF9GRUFUX1dBTlRfQ0xJRU5UX0ZJUlNUCistCXwgU0FTTF9GRUFUX0FM TE9XU19QUk9YWSwJLyogZmVhdHVyZXMgKi8KKy0JZ3NzYXBpX3JlcXVpcmVkX3Byb21wdHMsCS8q IHJlcXVpcmVkX3Byb21wdHMgKi8KKy0JTlVMTCwJCQkJLyogZ2xvYl9jb250ZXh0ICovCistCSZn c3NhcGlfY2xpZW50X21lY2hfbmV3LAkvKiBtZWNoX25ldyAqLworLQkmZ3NzYXBpX2NsaWVudF9t ZWNoX3N0ZXAsCS8qIG1lY2hfc3RlcCAqLworLQkmZ3NzYXBpX2NvbW1vbl9tZWNoX2Rpc3Bvc2Us CS8qIG1lY2hfZGlzcG9zZSAqLworLQlOVUxMLAkJCQkvKiBtZWNoX2ZyZWUgKi8KKy0JTlVMTCwJ CQkJLyogaWRsZSAqLworLQlOVUxMLAkJCQkvKiBzcGFyZSAqLworLQlOVUxMCQkJCS8qIHNwYXJl ICovCisrICAgICAgICAiR1NTQVBJIiwgICAgICAgICAgICAgICAgICAgICAgIC8qIG1lY2hfbmFt ZSAqLworKyAgICAgICAgSzVfTUFYX1NTRiwgICAgICAgICAgICAgICAgICAgICAvKiBtYXhfc3Nm ICovCisrICAgICAgICBTQVNMX1NFQ19OT1BMQUlOVEVYVAorKyAgICAgICAgfCBTQVNMX1NFQ19O T0FDVElWRQorKyAgICAgICAgfCBTQVNMX1NFQ19OT0FOT05ZTU9VUworKyAgICAgICAgfCBTQVNM X1NFQ19NVVRVQUxfQVVUSCwgICAgICAgICAvKiBzZWN1cml0eV9mbGFncyAqLworKyAgICAgICAg U0FTTF9GRUFUX05FRURTRVJWRVJGUUROCisrICAgICAgICB8IFNBU0xfRkVBVF9XQU5UX0NMSUVO VF9GSVJTVAorKyAgICAgICAgfCBTQVNMX0ZFQVRfQUxMT1dTX1BST1hZLCAgICAgICAvKiBmZWF0 dXJlcyAqLworKyAgICAgICAgZ3NzYXBpX3JlcXVpcmVkX3Byb21wdHMsICAgICAgICAvKiByZXF1 aXJlZF9wcm9tcHRzICovCisrICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qIGdsb2JfY29udGV4dCAqLworKyAgICAgICAgJmdzc2FwaV9jbGllbnRfbWVjaF9uZXcsICAg ICAgICAvKiBtZWNoX25ldyAqLworKyAgICAgICAgJmdzc2FwaV9jbGllbnRfbWVjaF9zdGVwLCAg ICAgICAvKiBtZWNoX3N0ZXAgKi8KKysgICAgICAgICZnc3NhcGlfY29tbW9uX21lY2hfZGlzcG9z ZSwgICAgLyogbWVjaF9kaXNwb3NlICovCisrICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8qIG1lY2hfZnJlZSAqLworKyAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiBpZGxlICovCisrICAgICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIHNwYXJlICovCisrICAgICAgICBOVUxMICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIHNwYXJlICovCisgICAgIH0KKyB9OworIAorLWludCBnc3NhcGl2Ml9jbGllbnRfcGx1 Z19pbml0KGNvbnN0IHNhc2xfdXRpbHNfdCAqdXRpbHMgX19hdHRyaWJ1dGVfXygodW51c2VkKSks IAorLQkJCSAgICAgIGludCBtYXh2ZXJzaW9uLAorLQkJCSAgICAgIGludCAqb3V0X3ZlcnNpb24s IAorLQkJCSAgICAgIHNhc2xfY2xpZW50X3BsdWdfdCAqKnBsdWdsaXN0LAorLQkJCSAgICAgIGlu dCAqcGx1Z2NvdW50KQorK2ludCBnc3NhcGl2Ml9jbGllbnRfcGx1Z19pbml0KGNvbnN0IHNhc2xf dXRpbHNfdCAqdXRpbHMgX19hdHRyaWJ1dGVfXygodW51c2VkKSksCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IG1heHZlcnNpb24sCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50ICpvdXRfdmVyc2lvbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz YXNsX2NsaWVudF9wbHVnX3QgKipwbHVnbGlzdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgKnBsdWdjb3VudCkKKyB7CisgICAgIGlmIChtYXh2ZXJzaW9uIDwgU0FTTF9DTElF TlRfUExVR19WRVJTSU9OKSB7CistCVNFVEVSUk9SKHV0aWxzLCAiVmVyc2lvbiBtaXNtYXRjaCBp biBHU1NBUEkiKTsKKy0JcmV0dXJuIFNBU0xfQkFEVkVSUzsKKysgICAgICAgIFNFVEVSUk9SKHV0 aWxzLCAiVmVyc2lvbiBtaXNtYXRjaCBpbiBHU1NBUEkiKTsKKysgICAgICAgIHJldHVybiBTQVNM X0JBRFZFUlM7CisgICAgIH0KKy0gICAgCisrCisgICAgICpvdXRfdmVyc2lvbiA9IFNBU0xfQ0xJ RU5UX1BMVUdfVkVSU0lPTjsKKyAgICAgKnBsdWdsaXN0ID0gZ3NzYXBpX2NsaWVudF9wbHVnaW5z OworICAgICAqcGx1Z2NvdW50ID0gMTsKKy0gICAgCisrCisgICAgIHJldHVybiBTQVNMX09LOwor IH0KKyAKK0BAIC0xNzI4LDE3ICsxNzI4LDE3IEBAIGludCBnc3NhcGl2Ml9jbGllbnRfcGx1Z19p bml0KGNvbnN0IHNhc2xfdXRpbHNfdCAqdXRpbHMgX19hdHRyaWJ1dGVfXygodW51c2VkKSksCisg CisgT01fdWludDMyCisgZ3NzX2FkZF9jcmVkKAorLSAgICAgICAgICAgICBPTV91aW50MzIJCSpt aW5vcl9zdGF0dXMsCistICAgICAgICAgICAgIGdzc19jcmVkX2lkX3QJaW5wdXRfY3JlZF9oYW5k bGUsCistICAgICAgICAgICAgIGdzc19uYW1lX3QJCWRlc2lyZWRfbmFtZSwKKy0gICAgICAgICAg ICAgZ3NzX09JRAkJZGVzaXJlZF9tZWNoLAorLSAgICAgICAgICAgICBnc3NfY3JlZF91c2FnZV90 CWNyZWRfdXNhZ2UsCistICAgICAgICAgICAgIE9NX3VpbnQzMgkJaW5pdGlhdG9yX3RpbWVfcmVx LAorLSAgICAgICAgICAgICBPTV91aW50MzIJCWFjY2VwdG9yX3RpbWVfcmVxLAorLSAgICAgICAg ICAgICBnc3NfY3JlZF9pZF90CSpvdXRwdXRfY3JlZF9oYW5kbGUsCistICAgICAgICAgICAgIGdz c19PSURfc2V0CQkqYWN0dWFsX21lY2hzLAorLSAgICAgICAgICAgICBPTV91aW50MzIJCSppbml0 aWF0b3JfdGltZV9yZWMsCistICAgICAgICAgICAgIE9NX3VpbnQzMgkJKmFjY2VwdG9yX3RpbWVf cmVjKQorKyAgICAgICAgICAgICBPTV91aW50MzIgICAgICAgICAgKm1pbm9yX3N0YXR1cywKKysg ICAgICAgICAgICAgZ3NzX2NyZWRfaWRfdCAgICAgIGlucHV0X2NyZWRfaGFuZGxlLAorKyAgICAg ICAgICAgICBnc3NfbmFtZV90ICAgICAgICAgZGVzaXJlZF9uYW1lLAorKyAgICAgICAgICAgICBn c3NfT0lEICAgICAgICAgICAgZGVzaXJlZF9tZWNoLAorKyAgICAgICAgICAgICBnc3NfY3JlZF91 c2FnZV90ICAgY3JlZF91c2FnZSwKKysgICAgICAgICAgICAgT01fdWludDMyICAgICAgICAgIGlu aXRpYXRvcl90aW1lX3JlcSwKKysgICAgICAgICAgICAgT01fdWludDMyICAgICAgICAgIGFjY2Vw dG9yX3RpbWVfcmVxLAorKyAgICAgICAgICAgICBnc3NfY3JlZF9pZF90ICAgICAgKm91dHB1dF9j cmVkX2hhbmRsZSwKKysgICAgICAgICAgICAgZ3NzX09JRF9zZXQgICAgICAgICAgICAgICAgKmFj dHVhbF9tZWNocywKKysgICAgICAgICAgICAgT01fdWludDMyICAgICAgICAgICppbml0aWF0b3Jf dGltZV9yZWMsCisrICAgICAgICAgICAgIE9NX3VpbnQzMiAgICAgICAgICAqYWNjZXB0b3JfdGlt ZV9yZWMpCisgeworICAgICByZXR1cm4oKCpwX2tyYjVfZ3NzX2FkZF9jcmVkKShtaW5vcl9zdGF0 dXMsIGlucHV0X2NyZWRfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkZXNpcmVkX25hbWUsCitAQCAtMTc1OCw4ICsxNzU4LDggQEAgZ3NzX3NlYWwoT01fdWludDMy ICptaW5vcl9zdGF0dXMsCisgICAgICAgICAgZ3NzX2J1ZmZlcl90IG91dHB1dF9tZXNzYWdlX2J1 ZmZlcikKKyB7CisgICAgcmV0dXJuKCgqcF9rcmI1X2dzc19zZWFsKShtaW5vcl9zdGF0dXMsIGNv bnRleHRfaGFuZGxlLAorLQkJCWNvbmZfcmVxX2ZsYWcsIHFvcF9yZXEsIGlucHV0X21lc3NhZ2Vf YnVmZmVyLAorLQkJCWNvbmZfc3RhdGUsIG91dHB1dF9tZXNzYWdlX2J1ZmZlcikpOworKyAgICAg ICAgICAgICAgICAgICAgICAgIGNvbmZfcmVxX2ZsYWcsIHFvcF9yZXEsIGlucHV0X21lc3NhZ2Vf YnVmZmVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZfc3RhdGUsIG91dHB1dF9tZXNz YWdlX2J1ZmZlcikpOworIH0KKyAKKyBPTV91aW50MzIKK0BAIC0xNzcxLDggKzE3NzEsOCBAQCBn c3NfdW5zZWFsKE9NX3VpbnQzMiAqbWlub3Jfc3RhdHVzLAorICAgICAgICAgICAgaW50ICpxb3Bf c3RhdGUpCisgeworICAgIHJldHVybigoKnBfa3JiNV9nc3NfdW5zZWFsKShtaW5vcl9zdGF0dXMs IGNvbnRleHRfaGFuZGxlLAorLQkJCSAgaW5wdXRfbWVzc2FnZV9idWZmZXIsIG91dHB1dF9tZXNz YWdlX2J1ZmZlciwKKy0JCQkgIGNvbmZfc3RhdGUsIHFvcF9zdGF0ZSkpOworKyAgICAgICAgICAg ICAgICAgICAgICAgICAgaW5wdXRfbWVzc2FnZV9idWZmZXIsIG91dHB1dF9tZXNzYWdlX2J1ZmZl ciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZfc3RhdGUsIHFvcF9zdGF0ZSkpOwor IH0KKyAKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9teXByb3h5L3NvdXJjZS9teXByb3h5LmMgYi9t eXByb3h5L3NvdXJjZS9teXByb3h5LmMKK2luZGV4IDk2MzQ0OWQ2YS4uODlhYjBhMzA2IDEwMDY0 NAorLS0tIGEvbXlwcm94eS9zb3VyY2UvbXlwcm94eS5jCisrKysgYi9teXByb3h5L3NvdXJjZS9t eXByb3h5LmMKK0BAIC04OTgsMTYgKzg5OCwxNiBAQCBteXByb3h5X2F1dGhlbnRpY2F0ZV9pbml0 KG15cHJveHlfc29ja2V0X2F0dHJzX3QgKmF0dHJzLAorICAgICAgICAgICAgaW50IHM7CisgICAg ICAgICAgICBPTV91aW50MzIgbWFqb3Jfc3RhdHVzLCBtaW5vcl9zdGF0dXM7CisgCistICAgICAg ICAgICAgIGZxaG4gPSBHU0lfU09DS0VUX2dldF9wZWVyX2hvc3RuYW1lKGF0dHJzLT5nc2lfc29j a2V0KTsKKy0gICAgICAgICAgICAgaWYgKCFmcWhuKSB7CistICAgICAgICAgICAgICAgICBHU0lf U09DS0VUX2dldF9lcnJvcl9zdHJpbmcoYXR0cnMtPmdzaV9zb2NrZXQsIGVycm9yX3N0cmluZywK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZXJy b3Jfc3RyaW5nKSk7CistICAgICAgICAgICAgICAgICB2ZXJyb3JfcHV0X3N0cmluZygiRXJyb3Ig Z2V0dGluZyBuYW1lIG9mIHJlbW90ZSBwYXJ0eTogJXNcbiIsCistICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlcnJvcl9zdHJpbmcpOworLSAgICAgICAgICAgICAgICAgZ290byBl cnJvcjsKKy0gICAgICAgICAgICAgfQorLSAgICAgICAgICAgICBmb3IgKHMgPSAwOyBzIDwgKHNp emVvZiBzZXJ2aWNlcykvKHNpemVvZiAqc2VydmljZXMpOyBzKyspCistICAgICAgICAgICAgIHsK KysgICAgICAgICAgIGZxaG4gPSBHU0lfU09DS0VUX2dldF9wZWVyX2hvc3RuYW1lKGF0dHJzLT5n c2lfc29ja2V0KTsKKysgICAgICAgICAgIGlmICghZnFobikgeworKyAgICAgICAgICAgICAgIEdT SV9TT0NLRVRfZ2V0X2Vycm9yX3N0cmluZyhhdHRycy0+Z3NpX3NvY2tldCwgZXJyb3Jfc3RyaW5n LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZXJy b3Jfc3RyaW5nKSk7CisrICAgICAgICAgICAgICAgdmVycm9yX3B1dF9zdHJpbmcoIkVycm9yIGdl dHRpbmcgbmFtZSBvZiByZW1vdGUgcGFydHk6ICVzXG4iLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVycm9yX3N0cmluZyk7CisrICAgICAgICAgICAgICAgZ290byBlcnJvcjsK KysgICAgICAgICAgIH0KKysgICAgICAgICAgIGZvciAocyA9IDA7IHMgPCAoc2l6ZW9mIHNlcnZp Y2VzKS8oc2l6ZW9mICpzZXJ2aWNlcyk7IHMrKykKKysgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICBuYW1lX2J1Zi52YWx1ZSA9IGdsb2J1c19jb21tb25fY3JlYXRlX3N0cmluZygiJXNAJXMi LAorICAgICAgICAgICAgICAgICAgICAgc2VydmljZXNbc10sIGZxaG4pOworICAgICAgICAgICAg ICAgIG5hbWVfYnVmLmxlbmd0aCA9IHN0cmxlbihuYW1lX2J1Zi52YWx1ZSk7CitAQCAtOTE3LDkg KzkxNyw5IEBAIG15cHJveHlfYXV0aGVudGljYXRlX2luaXQobXlwcm94eV9zb2NrZXRfYXR0cnNf dCAqYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAmbmFtZV9idWYsCisgICAgICAgICAgICAg ICAgICAgICBHU1NfQ19OVF9IT1NUQkFTRURfU0VSVklDRSwKKyAgICAgICAgICAgICAgICAgICAg ICZhY2NlcHRlZF9wZWVyX25hbWVzW3NdKTsKKy0gICAgICAgICAgICAgfQorKyAgICAgICAgICAg fQorIAorLSAgICAgICAgICAgICBmcmVlKGZxaG4pOworKyAgICAgICAgICAgZnJlZShmcWhuKTsK KyAgICAgICAgfQorICAgIH0KKyAKK2RpZmYgLS1naXQgYS9teXByb3h5L3NvdXJjZS9teXByb3h5 X2FsY2YuYyBiL215cHJveHkvc291cmNlL215cHJveHlfYWxjZi5jCitpbmRleCAzMDhmZDM0OTgu LjYxYzFjYmVlZiAxMDA2NDQKKy0tLSBhL215cHJveHkvc291cmNlL215cHJveHlfYWxjZi5jCisr KysgYi9teXByb3h5L3NvdXJjZS9teXByb3h5X2FsY2YuYworQEAgLTUsMTAgKzUsMTAgQEAKKyAg KgorICAqLworIAorLSNpbmNsdWRlICJteXByb3h5X2NvbW1vbi5oIgkvKiBhbGwgbmVlZGVkIGhl YWRlcnMgaW5jbHVkZWQgaGVyZSAqLworKyNpbmNsdWRlICJteXByb3h5X2NvbW1vbi5oIiAgICAg LyogYWxsIG5lZWRlZCBoZWFkZXJzIGluY2x1ZGVkIGhlcmUgKi8KKyAKKyAjZGVmaW5lIE1ZUFJP WFlfREVGQVVMVF9QUk9YWSAgIi90bXAvbXlwcm94eS1wcm94eSIKKy0jZGVmaW5lCVNFQ09ORFNf UEVSX0hPVVIgKDYwICogNjApCisrI2RlZmluZSBTRUNPTkRTX1BFUl9IT1VSICg2MCAqIDYwKQor IHN0YXRpYyBpbnQgZG5fYXNfdXNlcm5hbWUgPSAwOworIAorIHN0YXRpYyBjaGFyIHVzYWdlW10g PSBcCitAQCAtMjYsNyArMjYsNyBAQCBzdGF0aWMgY2hhciB1c2FnZVtdID0gXAorICIgICAgICAg LWMgfCAtLWNlcnRmaWxlICAgICAgIDxmaWxlbmFtZT4gIENlcnRpZmljYXRlIGZpbGUgbmFtZVxu IgorICIgICAgICAgLXkgfCAtLWtleWZpbGUgICAgICAgIDxmaWxlbmFtZT4gIEtleSBmaWxlIG5h bWVcbiIKKyAiICAgICAgIC1sIHwgLS11c2VybmFtZSAgICAgICA8dXNlcm5hbWU+ICBVc2VybmFt ZSBmb3IgdGhlIGRlbGVnYXRlZCBwcm94eVxuIgorLSIgICAgICAgLXQgfCAtLXByb3h5X2xpZmV0 aW1lICA8aG91cnM+ICAgIExpZmV0aW1lIG9mIHByb3hpZXMgZGVsZWdhdGVkIGJ5XG4iIAorKyIg ICAgICAgLXQgfCAtLXByb3h5X2xpZmV0aW1lICA8aG91cnM+ICAgIExpZmV0aW1lIG9mIHByb3hp ZXMgZGVsZWdhdGVkIGJ5XG4iCisgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VydmVyIChkZWZhdWx0IDEyIGhvdXJzKVxuIgorICIgICAgICAgLWEgfCAtLWFsbG93 X2Fub255bW91c19yZXRyaWV2ZXJzIEFsbG93IGNyZWRlbnRpYWxzIHRvIGJlIHJldHJpZXZlZFxu IgorICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGgganVzdCB1 c2VybmFtZS9wYXNzcGhyYXNlXG4iCitAQCAtNTUsOCArNTUsOCBAQCBzdHJ1Y3Qgb3B0aW9uIGxv bmdfb3B0aW9uc1tdID0KKyB7CisgICB7ImhlbHAiLCAgICAgICAgICAgICAgICAgIG5vX2FyZ3Vt ZW50LCBOVUxMLCAnaCd9LAorICAgeyJ1c2FnZSIsICAgICAgICAgICAgICAgICBub19hcmd1bWVu dCwgTlVMTCwgJ3UnfSwKKy0gIHsiY2VydGZpbGUiLAkgICAgICByZXF1aXJlZF9hcmd1bWVudCwg TlVMTCwgJ2MnfSwKKy0gIHsia2V5ZmlsZSIsCSAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxM LCAneSd9LAorKyAgeyJjZXJ0ZmlsZSIsICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwg J2MnfSwKKysgIHsia2V5ZmlsZSIsICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd5 J30sCisgICB7InByb3h5X2xpZmV0aW1lIiwgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAndCd9 LAorICAgeyJzdG9yYWdlIiwgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3MnfSwK KyAgIHsidXNlcm5hbWUiLCAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdsJ30sCitA QCAtNjgsOSArNjgsOSBAQCBzdHJ1Y3Qgb3B0aW9uIGxvbmdfb3B0aW9uc1tdID0KKyAgIHsicmV0 cmlldmFibGVfYnkiLCAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdyJ30sCisgICB7InJlbmV3 YWJsZV9ieSIsICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUid9LAorICAgeyJyZWdleF9k bl9tYXRjaCIsICAgICAgICBub19hcmd1bWVudCwgTlVMTCwgJ3gnfSwKKy0gIHsibWF0Y2hfY25f b25seSIsIAkgICAgbm9fYXJndW1lbnQsIE5VTEwsICdYJ30sCistICB7ImNyZWRuYW1lIiwJICAg ICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdrJ30sCistICB7ImNyZWRkZXNjIiwJICAgICAg cmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdLJ30sCisrICB7Im1hdGNoX2NuX29ubHkiLCAgICAg ICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAnWCd9LAorKyAgeyJjcmVkbmFtZSIsICAgICAgICByZXF1 aXJlZF9hcmd1bWVudCwgTlVMTCwgJ2snfSwKKysgIHsiY3JlZGRlc2MiLCAgICAgICAgcmVxdWly ZWRfYXJndW1lbnQsIE5VTEwsICdLJ30sCisgICB7InJldHJpZXZhYmxlX2J5X2NlcnQiLCByZXF1 aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1onfSwKKyAgIHsicmV0cmlldmVfa2V5IiwgICAgcmVxdWly ZWRfYXJndW1lbnQsIE5VTEwsICdFJ30sCisgICB7MCwgMCwgMCwgMH0KK0BAIC05MCw3ICs5MCw3 IEBAIHN0YXRpYyBjaGFyIHZlcnNpb25bXSA9CisgCisgdm9pZCBpbml0X2FyZ3VtZW50cyhpbnQg YXJnYywgY2hhciAqYXJndltdLCBteXByb3h5X2NyZWRzX3QgKm15X2NyZWRzKTsKKyBpbnQgbWFr ZXByb3h5KGNvbnN0IGNoYXIgY2VydGZpbGVbXSwgY29uc3QgY2hhciBrZXlmaWxlW10sCistCSAg ICAgIGNvbnN0IGNoYXIgcHJveHlmaWxlW10pOworKyAgICAgICAgICAgICAgY29uc3QgY2hhciBw cm94eWZpbGVbXSk7CisgaW50IGdldF9zdG9yYWdlX2Rpcl9vd25lcih1aWRfdCAqb3duZXIpOwor IAorIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCitAQCAtMTAxLDEwICsxMDEsMTAg QEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAKKyAgICAgLyogY2hlY2sgbGli cmFyeSB2ZXJzaW9uICovCisgICAgIGlmIChteXByb3h5X2NoZWNrX3ZlcnNpb24oKSkgeworLQlm cHJpbnRmKHN0ZGVyciwgIk15UHJveHkgbGlicmFyeSB2ZXJzaW9uIG1pc21hdGNoLlxuIgorLQkJ IkV4cGVjdGluZyAlcy4gIEZvdW5kICVzLlxuIiwKKy0JCU1ZUFJPWFlfVkVSU0lPTl9EQVRFLCBt eXByb3h5X3ZlcnNpb24oMCwwLDApKTsKKy0JZXhpdCgxKTsKKysgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiTXlQcm94eSBsaWJyYXJ5IHZlcnNpb24gbWlzbWF0Y2guXG4iCisrICAgICAgICAgICAg ICAgICJFeHBlY3RpbmcgJXMuICBGb3VuZCAlcy5cbiIsCisrICAgICAgICAgICAgICAgIE1ZUFJP WFlfVkVSU0lPTl9EQVRFLCBteXByb3h5X3ZlcnNpb24oMCwwLDApKTsKKysgICAgICAgIGV4aXQo MSk7CisgICAgIH0KKyAKKyAgICAgbXlwcm94eV9sb2dfdXNlX3N0cmVhbSAoc3RkZXJyKTsKK0BA IC0xMTIsNjEgKzExMiw2MSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorICAg ICBpbml0X2FyZ3VtZW50cyAoYXJnYywgYXJndiwgJm15X2NyZWRzKTsKKyAKKyAgICAgaWYgKGNl cnRmaWxlID09IE5VTEwpIHsKKy0JZnByaW50ZiAoc3RkZXJyLCAiU3BlY2lmeSBjZXJ0aWZpY2F0 ZSBmaWxlIHdpdGggLWMgb3B0aW9uXG4iKTsKKy0JZnByaW50ZihzdGRlcnIsICIlcyIsIHVzYWdl KTsKKy0JZ290byBjbGVhbnVwOworKyAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiU3BlY2lmeSBj ZXJ0aWZpY2F0ZSBmaWxlIHdpdGggLWMgb3B0aW9uXG4iKTsKKysgICAgICAgIGZwcmludGYoc3Rk ZXJyLCAiJXMiLCB1c2FnZSk7CisrICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgIH0KKyAKKyAg ICAgaWYgKGtleWZpbGUgPT0gTlVMTCkgeworLQlmcHJpbnRmIChzdGRlcnIsICJTcGVjaWZ5IGtl eSBmaWxlIHdpdGggLXkgb3B0aW9uXG4iKTsKKy0JZnByaW50ZihzdGRlcnIsICIlcyIsIHVzYWdl KTsKKy0JZ290byBjbGVhbnVwOworKyAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiU3BlY2lmeSBr ZXkgZmlsZSB3aXRoIC15IG9wdGlvblxuIik7CisrICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVz IiwgdXNhZ2UpOworKyAgICAgICAgZ290byBjbGVhbnVwOworICAgICB9CisgCisgICAgIHNwcmlu dGYocHJveHlmaWxlLCAiJXMuJXUuJXUiLCBNWVBST1hZX0RFRkFVTFRfUFJPWFksCistCSAgICAo dW5zaWduZWQpZ2V0dWlkKCksICh1bnNpZ25lZClnZXRwaWQoKSk7CisrICAgICAgICAgICAgKHVu c2lnbmVkKWdldHVpZCgpLCAodW5zaWduZWQpZ2V0cGlkKCkpOworICAgICAvKiBSZW1vdmUgcHJv eHlmaWxlIGlmIGl0IGFscmVhZHkgZXhpc3RzLiAqLworICAgICBzc2xfcHJveHlfZmlsZV9kZXN0 cm95KHByb3h5ZmlsZSk7CisgICAgIHZlcnJvcl9jbGVhcigpOworIAorICAgICBpZiAobWFrZXBy b3h5KGNlcnRmaWxlLCBrZXlmaWxlLCBwcm94eWZpbGUpIDwgMCkgeworLQlmcHJpbnRmKHN0ZGVy ciwgIkZhaWxlZCB0byBjcmVhdGUgdGVtcG9yYXJ5IGNyZWRlbnRpYWxzIGZpbGUuXG4iKTsKKy0J Z290byBjbGVhbnVwOworKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gY3JlYXRl IHRlbXBvcmFyeSBjcmVkZW50aWFscyBmaWxlLlxuIik7CisrICAgICAgICBnb3RvIGNsZWFudXA7 CisgICAgIH0KKy0JCQorKworICAgICBpZiAobXlfY3JlZHMudXNlcm5hbWUgPT0gTlVMTCkgeyAv KiBzZXQgZGVmYXVsdCB1c2VybmFtZSAqLworLQlpZiAoZG5fYXNfdXNlcm5hbWUpIHsKKy0JICAg IGlmIChzc2xfZ2V0X2Jhc2Vfc3ViamVjdF9maWxlKHByb3h5ZmlsZSwKKy0JCQkJCSAgJm15X2Ny ZWRzLnVzZXJuYW1lKSkgeworLQkJZnByaW50ZihzdGRlcnIsCistCQkJIkNhbm5vdCBnZXQgc3Vi amVjdCBuYW1lIGZyb20geW91ciBjZXJ0aWZpY2F0ZVxuIik7CistCQlnb3RvIGNsZWFudXA7Cist CSAgICB9CistCX0gZWxzZSB7CistCSAgICBjaGFyICp1c2VybmFtZSA9IE5VTEw7CistCSAgICBp ZiAoISh1c2VybmFtZSA9IGdldGVudigiTE9HTkFNRSIpKSkgeworLQkJZnByaW50ZihzdGRlcnIs ICJQbGVhc2Ugc3BlY2lmeSBhIHVzZXJuYW1lLlxuIik7CistCQlnb3RvIGNsZWFudXA7CistCSAg ICB9CistCSAgICBteV9jcmVkcy51c2VybmFtZSA9IHN0cmR1cCh1c2VybmFtZSk7CistCX0KKysg ICAgICAgIGlmIChkbl9hc191c2VybmFtZSkgeworKyAgICAgICAgICAgIGlmIChzc2xfZ2V0X2Jh c2Vfc3ViamVjdF9maWxlKHByb3h5ZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmbXlfY3JlZHMudXNlcm5hbWUpKSB7CisrICAgICAgICAgICAgICAgIGZw cmludGYoc3RkZXJyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgZ2V0IHN1Ympl Y3QgbmFtZSBmcm9tIHlvdXIgY2VydGlmaWNhdGVcbiIpOworKyAgICAgICAgICAgICAgICBnb3Rv IGNsZWFudXA7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAg ICBjaGFyICp1c2VybmFtZSA9IE5VTEw7CisrICAgICAgICAgICAgaWYgKCEodXNlcm5hbWUgPSBn ZXRlbnYoIkxPR05BTUUiKSkpIHsKKysgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJQ bGVhc2Ugc3BlY2lmeSBhIHVzZXJuYW1lLlxuIik7CisrICAgICAgICAgICAgICAgIGdvdG8gY2xl YW51cDsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgbXlfY3JlZHMudXNlcm5hbWUgPSBz dHJkdXAodXNlcm5hbWUpOworKyAgICAgICAgfQorICAgICB9CisgCisgICAgIGlmIChzc2xfZ2V0 X2Jhc2Vfc3ViamVjdF9maWxlKHByb3h5ZmlsZSwKKy0JCQkJICAmbXlfY3JlZHMub3duZXJfbmFt ZSkpIHsKKy0JZnByaW50ZihzdGRlcnIsCistCQkiQ2Fubm90IGdldCBzdWJqZWN0IG5hbWUgZnJv bSBjZXJ0aWZpY2F0ZS5cbiIpOworLQlnb3RvIGNsZWFudXA7CisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZteV9jcmVkcy5vd25lcl9uYW1lKSkgeworKyAgICAgICAgZnByaW50 ZihzdGRlcnIsCisrICAgICAgICAgICAgICAgICJDYW5ub3QgZ2V0IHN1YmplY3QgbmFtZSBmcm9t IGNlcnRpZmljYXRlLlxuIik7CisrICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgIH0KKyAgICAg bXlfY3JlZHMubG9jYXRpb24gPSBzdHJkdXAocHJveHlmaWxlKTsKKyAKKyAgICAgaWYgKG15cHJv eHlfY3JlZHNfc3RvcmUoJm15X2NyZWRzKSA8IDApIHsKKy0JbXlwcm94eV9sb2dfdmVycm9yKCk7 CistCWZwcmludGYgKHN0ZGVyciwgIlVuYWJsZSB0byBzdG9yZSBjcmVkZW50aWFscy4gJXNcbiIs CistCQkgdmVycm9yX2dldF9zdHJpbmcoKSk7IAorKyAgICAgICAgbXlwcm94eV9sb2dfdmVycm9y KCk7CisrICAgICAgICBmcHJpbnRmIChzdGRlcnIsICJVbmFibGUgdG8gc3RvcmUgY3JlZGVudGlh bHMuICVzXG4iLAorKyAgICAgICAgICAgICAgICAgdmVycm9yX2dldF9zdHJpbmcoKSk7CisgICAg IGdvdG8gY2xlYW51cDsKKyAgICAgfSBlbHNlIHsKKy0JZnByaW50ZiAoc3Rkb3V0LCAiQ3JlZGVu dGlhbCBzdG9yZWQgc3VjY2Vzc2Z1bGx5XG4iKTsKKysgICAgICAgIGZwcmludGYgKHN0ZG91dCwg IkNyZWRlbnRpYWwgc3RvcmVkIHN1Y2Nlc3NmdWxseVxuIik7CisgICAgIH0KKyAKKyAgICAgcnZh bCA9IDA7CitAQCAtMTc2LDkgKzE3Niw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCisgfQorIAorIAorLXZvaWQgCistaW5pdF9hcmd1bWVudHMoaW50IGFyZ2MsIAorLQkgICAg ICAgY2hhciAqYXJndltdLCBteXByb3h5X2NyZWRzX3QgKm15X2NyZWRzKQorK3ZvaWQKKytpbml0 X2FyZ3VtZW50cyhpbnQgYXJnYywKKysgICAgICAgICAgICAgICBjaGFyICphcmd2W10sIG15cHJv eHlfY3JlZHNfdCAqbXlfY3JlZHMpCisgeworICAgICBleHRlcm4gY2hhciAqb3B0YXJnOworICAg ICBpbnQgYXJnOworQEAgLTE4NiwxNzYgKzE4NiwxNzYgQEAgaW5pdF9hcmd1bWVudHMoaW50IGFy Z2MsCisgCisgICAgIG15X2NyZWRzLT5saWZldGltZSA9IFNFQ09ORFNfUEVSX0hPVVIgKiBNWVBS T1hZX0RFRkFVTFRfREVMRUdfSE9VUlM7CisgCistICAgIHdoaWxlKChhcmcgPSBnZXRvcHRfbG9u ZyhhcmdjLCBhcmd2LCBzaG9ydF9vcHRpb25zLCAKKy0JCQkJIGxvbmdfb3B0aW9ucywgTlVMTCkp ICE9IEVPRikgCisrICAgIHdoaWxlKChhcmcgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCBzaG9y dF9vcHRpb25zLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdfb3B0aW9u cywgTlVMTCkpICE9IEVPRikKKyAgICAgeworLSAgICAgICAgc3dpdGNoKGFyZykgCistICAgICAg ICB7ICAKKysgICAgICAgIHN3aXRjaChhcmcpCisrICAgICAgICB7CisgICAgICAgICBjYXNlICdz JzogLyogc2V0IHRoZSBjcmVkZW50aWFsIHN0b3JhZ2UgZGlyZWN0b3J5ICovCistCSAgICBteXBy b3h5X3NldF9zdG9yYWdlX2RpcihvcHRhcmcpOworKyAgICAgICAgICAgIG15cHJveHlfc2V0X3N0 b3JhZ2VfZGlyKG9wdGFyZyk7CisgICAgICAgICBzdG9yYWdlX2RpciA9IG9wdGFyZzsKKy0JICAg IGJyZWFrOworLQkKKy0JY2FzZSAnYyc6IC8qIGNyZWRlbnRpYWwgZmlsZSBuYW1lKi8KKy0JICAg IGNlcnRmaWxlID0gc3RyZHVwIChvcHRhcmcpOworLQkgICAgYnJlYWs7CistCWNhc2UgJ3knOiAv KiBrZXkgZmlsZSBuYW1lICovCistCSAgICBrZXlmaWxlID0gc3RyZHVwIChvcHRhcmcpOworLQkg ICAgYnJlYWs7CistICAgICAgICBjYXNlICd1JzogCS8qIHByaW50IGhlbHAgYW5kIGV4aXQgKi8K KysgICAgICAgICAgICBicmVhazsKKysKKysgICAgICAgIGNhc2UgJ2MnOiAvKiBjcmVkZW50aWFs IGZpbGUgbmFtZSovCisrICAgICAgICAgICAgY2VydGZpbGUgPSBzdHJkdXAgKG9wdGFyZyk7Cisr ICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlICd5JzogLyoga2V5IGZpbGUgbmFtZSAq LworKyAgICAgICAgICAgIGtleWZpbGUgPSBzdHJkdXAgKG9wdGFyZyk7CisrICAgICAgICAgICAg YnJlYWs7CisrICAgICAgICBjYXNlICd1JzogICAgICAgLyogcHJpbnQgaGVscCBhbmQgZXhpdCAq LworICAgICAgICAgICAgIHByaW50ZigiJXMiLCB1c2FnZSk7CisgICAgICAgICAgICAgZXhpdCgw KTsKKy0gICAgICAgCSAgICBicmVhazsKKy0JY2FzZSAndCc6IAkvKiBTcGVjaWZ5IHByb3h5IGxp ZmV0aW1lIGluIGhvdXJzICovCistCSAgICBteV9jcmVkcy0+bGlmZXRpbWUgPSBTRUNPTkRTX1BF Ul9IT1VSICogYXRvaShvcHRhcmcpOworLQkgICAgYnJlYWs7ICAgICAgICAKKy0JY2FzZSAnaCc6 IAkvKiBwcmludCBoZWxwIGFuZCBleGl0ICovCisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAg ICBjYXNlICd0JzogICAgICAgLyogU3BlY2lmeSBwcm94eSBsaWZldGltZSBpbiBob3VycyAqLwor KyAgICAgICAgICAgIG15X2NyZWRzLT5saWZldGltZSA9IFNFQ09ORFNfUEVSX0hPVVIgKiBhdG9p KG9wdGFyZyk7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlICdoJzogICAgICAg LyogcHJpbnQgaGVscCBhbmQgZXhpdCAqLworICAgICAgICAgICAgIHByaW50ZigiJXMiLCB1c2Fn ZSk7CisgICAgICAgICAgICAgZXhpdCgwKTsKKyAgICAgICAgICAgICBicmVhazsKKy0gICAgICAg IGNhc2UgJ2wnOgkvKiB1c2VybmFtZSAqLworLQkgICAgbXlfY3JlZHMtPnVzZXJuYW1lID0gc3Ry ZHVwIChvcHRhcmcpOworLQkgICAgYnJlYWs7CistCWNhc2UgJ3YnOgkvKiB2ZXJib3NlICovCist CSAgICBteXByb3h5X2RlYnVnX3NldF9sZXZlbCgxKTsKKy0JICAgIGJyZWFrOworKyAgICAgICAg Y2FzZSAnbCc6ICAgICAgIC8qIHVzZXJuYW1lICovCisrICAgICAgICAgICAgbXlfY3JlZHMtPnVz ZXJuYW1lID0gc3RyZHVwIChvcHRhcmcpOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAg Y2FzZSAndic6ICAgICAgIC8qIHZlcmJvc2UgKi8KKysgICAgICAgICAgICBteXByb3h5X2RlYnVn X3NldF9sZXZlbCgxKTsKKysgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIGNhc2UgJ1YnOiAg ICAgICAvKiBwcmludCB2ZXJzaW9uIGFuZCBleGl0ICovCisgICAgICAgICAgICAgcHJpbnRmKCIl cyIsIHZlcnNpb24pOworICAgICAgICAgICAgIGV4aXQoMCk7CisgICAgICAgICAgICAgYnJlYWs7 CistCQorLQorLQljYXNlICdyJzogICAvKiByZXRyaWV2ZXJzIGxpc3QgKi8KKy0JICAgIGlmICht eV9jcmVkcy0+cmVuZXdlcnMpIHsKKy0JCWZwcmludGYoc3RkZXJyLCAiLXIgaXMgaW5jb21wYXRp YmxlIHdpdGggLUEgYW5kIC1SLiAgQSBjcmVkZW50aWFsIG1heSBub3QgYmUgdXNlZCBmb3IgYm90 aFxucmV0cmlldmFsIGFuZCByZW5ld2FsLiAgSWYgYm90aCBhcmUgZGVzaXJlZCwgdXBsb2FkIG11 bHRpcGxlIGNyZWRlbnRpYWxzIHdpdGhcbmRpZmZlcmVudCBuYW1lcywgdXNpbmcgdGhlIC1rIG9w dGlvbi5cbiIpOworLQkJZXhpdCgxKTsKKy0JICAgIH0KKy0JICAgIGlmIChteV9jcmVkcy0+cmV0 cmlldmVycykgeworLQkJZnByaW50ZihzdGRlcnIsICJPbmx5IG9uZSAtYSBvciAtciBvcHRpb24g bWF5IGJlIHNwZWNpZmllZC5cbiIpOworLQkJZXhpdCgxKTsKKy0JICAgIH0KKy0JICAgIGlmIChl eHByX3R5cGUgPT0gUkVHVUxBUl9FWFApICAvKmNvcHkgYXMgaXMgKi8KKy0JCW15X2NyZWRzLT5y ZXRyaWV2ZXJzID0gc3RyZHVwIChvcHRhcmcpOworLQkgICAgZWxzZQorLQkgICAgeworLQkJbXlf Y3JlZHMtPnJldHJpZXZlcnMgPSAoY2hhciAqKW1hbGxvYyhzdHJsZW4ob3B0YXJnKSs2KTsKKy0J CXN0cmNweSAobXlfY3JlZHMtPnJldHJpZXZlcnMsICIqL0NOPSIpOworLQkJbXlfY3JlZHMtPnJl dHJpZXZlcnMgPSBzdHJjYXQobXlfY3JlZHMtPnJldHJpZXZlcnMsCistCQkJCQkgICAgICBvcHRh cmcpOworLQkJbXlwcm94eV9kZWJ1ZygiYXV0aG9yaXplZCByZXRyaWV2ZXIgJXMiLAorLQkJCSAg ICAgIG15X2NyZWRzLT5yZXRyaWV2ZXJzKTsKKy0JICAgIH0KKy0JICAgIGJyZWFrOworLQljYXNl ICdaJzogICAvKiByZXRyaWV2ZXJzIGxpc3QgKi8KKy0JICAgIGlmIChteV9jcmVkcy0+dHJ1c3Rl ZF9yZXRyaWV2ZXJzKSB7CistCQlmcHJpbnRmKHN0ZGVyciwgIk9ubHkgb25lIC1aIG9wdGlvbiBt YXkgYmUgc3BlY2lmaWVkLlxuIik7CistCQlleGl0KDEpOworLQkgICAgfQorLQkgICAgaWYgKGV4 cHJfdHlwZSA9PSBSRUdVTEFSX0VYUCkgIC8qY29weSBhcyBpcyAqLworLQkJbXlfY3JlZHMtPnRy dXN0ZWRfcmV0cmlldmVycyA9IHN0cmR1cCAob3B0YXJnKTsKKy0JICAgIGVsc2UKKy0JICAgIHsK Ky0JCW15X2NyZWRzLT50cnVzdGVkX3JldHJpZXZlcnMgPSAoY2hhciAqKW1hbGxvYyhzdHJsZW4o b3B0YXJnKSs2KTsKKy0JCXN0cmNweSAobXlfY3JlZHMtPnRydXN0ZWRfcmV0cmlldmVycywgIiov Q049Iik7CistCQlteV9jcmVkcy0+dHJ1c3RlZF9yZXRyaWV2ZXJzID0gc3RyY2F0KG15X2NyZWRz LT50cnVzdGVkX3JldHJpZXZlcnMsCistCQkJCQkgICAgICBvcHRhcmcpOworLQkJbXlwcm94eV9k ZWJ1ZygidHJ1c3RlZCByZXRyaWV2ZXIgJXMiLAorLQkJCSAgICAgIG15X2NyZWRzLT50cnVzdGVk X3JldHJpZXZlcnMpOworLQkgICAgfQorLQkgICAgYnJlYWs7CistCWNhc2UgJ1InOiAgIC8qIHJl bmV3ZXJzIGxpc3QgKi8KKy0JICAgIGlmIChteV9jcmVkcy0+cmV0cmlldmVycykgeworLQkJZnBy aW50ZihzdGRlcnIsICItUiBpcyBpbmNvbXBhdGlibGUgd2l0aCAtYSBhbmQgLXIuICBBIGNyZWRl bnRpYWwgbWF5IG5vdCBiZSB1c2VkIGZvciBib3RoXG5yZXRyaWV2YWwgYW5kIHJlbmV3YWwuICBJ ZiBib3RoIGFyZSBkZXNpcmVkLCB1cGxvYWQgbXVsdGlwbGUgY3JlZGVudGlhbHMgd2l0aFxuZGlm ZmVyZW50IG5hbWVzLCB1c2luZyB0aGUgLWsgb3B0aW9uLlxuIik7CistCQlleGl0KDEpOworLQkg ICAgfQorLQkgICAgaWYgKG15X2NyZWRzLT5yZW5ld2VycykgeworLQkJZnByaW50ZihzdGRlcnIs ICJPbmx5IG9uZSAtQSBvciAtUiBvcHRpb24gbWF5IGJlIHNwZWNpZmllZC5cbiIpOworLQkJZXhp dCgxKTsKKy0JICAgIH0KKy0JICAgIGlmIChleHByX3R5cGUgPT0gUkVHVUxBUl9FWFApICAvKmNv cHkgYXMgaXMgKi8KKy0JCW15X2NyZWRzLT5yZW5ld2VycyA9IHN0cmR1cCAob3B0YXJnKTsKKy0J ICAgIGVsc2UKKy0JICAgIHsKKy0JCW15X2NyZWRzLT5yZW5ld2VycyA9IChjaGFyICopbWFsbG9j KHN0cmxlbihvcHRhcmcpKzYpOworLQkJc3RyY3B5IChteV9jcmVkcy0+cmVuZXdlcnMsICIqL0NO PSIpOworLQkJbXlfY3JlZHMtPnJlbmV3ZXJzID0gc3RyY2F0IChteV9jcmVkcy0+cmVuZXdlcnMs b3B0YXJnKTsKKy0JCW15cHJveHlfZGVidWcoImF1dGhvcml6ZWQgcmVuZXdlciAlcyIsCistCQkJ ICAgICAgbXlfY3JlZHMtPnJlbmV3ZXJzKTsKKy0JICAgIH0KKy0JICAgIGJyZWFrOworLQljYXNl ICdkJzogICAvKiB1c2UgdGhlIGNlcnRpZmljYXRlIHN1YmplY3QgKEROKSBhcyB0aGUgZGVmYXVs dAorLQkJICAgICAgIHVzZXJuYW1lIGluc3RlYWQgb2YgTE9HTkFNRSAqLworLQkgICAgZG5fYXNf dXNlcm5hbWUgPSAxOworLQkgICAgYnJlYWs7CistCWNhc2UgJ3gnOiAgIC8qc2V0IGV4cHJlc3Np b24gdHlwZSB0byByZWdleCovCistCSAgICBleHByX3R5cGUgPSBSRUdVTEFSX0VYUDsKKy0JICAg IG15cHJveHlfZGVidWcoImV4cHItdHlwZSA9IHJlZ2V4Iik7CistCSAgICBicmVhazsKKy0JY2Fz ZSAnWCc6ICAgLypzZXQgZXhwcmVzc2lvbiB0eXBlIHRvIGNvbW1vbiBuYW1lKi8KKy0JICAgIGV4 cHJfdHlwZSA9IE1BVENIX0NOX09OTFk7CistCSAgICBteXByb3h5X2RlYnVnKCJleHByLXR5cGUg PSBDTiIpOworLQkgICAgYnJlYWs7CistCWNhc2UgJ2EnOiAgLyphbGxvdyBhbm9ueW1vdXMgcmV0 cmlldmVycyovCistCSAgICBpZiAobXlfY3JlZHMtPnJlbmV3ZXJzKSB7CistCQlmcHJpbnRmKHN0 ZGVyciwgIi1hIGlzIGluY29tcGF0aWJsZSB3aXRoIC1BIGFuZCAtUi4gIEEgY3JlZGVudGlhbCBt YXkgbm90IGJlIHVzZWQgZm9yIGJvdGhcbnJldHJpZXZhbCBhbmQgcmVuZXdhbC4gIElmIGJvdGgg YXJlIGRlc2lyZWQsIHVwbG9hZCBtdWx0aXBsZSBjcmVkZW50aWFscyB3aXRoXG5kaWZmZXJlbnQg bmFtZXMsIHVzaW5nIHRoZSAtayBvcHRpb24uXG4iKTsKKy0JCWV4aXQoMSk7CistCSAgICB9Cist CSAgICBpZiAobXlfY3JlZHMtPnJldHJpZXZlcnMpIHsKKy0JCWZwcmludGYoc3RkZXJyLCAiT25s eSBvbmUgLWEgb3IgLXIgb3B0aW9uIG1heSBiZSBzcGVjaWZpZWQuXG4iKTsKKy0JCWV4aXQoMSk7 CistCSAgICB9CistCSAgICBteV9jcmVkcy0+cmV0cmlldmVycyA9IHN0cmR1cCAoIioiKTsKKy0J ICAgIG15cHJveHlfZGVidWcoImFub255bW91cyByZXRyaWV2ZXJzIGFsbG93ZWQiKTsKKy0JICAg IGJyZWFrOworLQljYXNlICdBJzogIC8qYWxsb3cgYW5vbnltb3VzIHJlbmV3ZXJzKi8KKy0JICAg IGlmIChteV9jcmVkcy0+cmV0cmlldmVycykgeworLQkJZnByaW50ZihzdGRlcnIsICItQSBpcyBp bmNvbXBhdGlibGUgd2l0aCAtYSBhbmQgLXIuICBBIGNyZWRlbnRpYWwgbWF5IG5vdCBiZSB1c2Vk IGZvciBib3RoXG5yZXRyaWV2YWwgYW5kIHJlbmV3YWwuICBJZiBib3RoIGFyZSBkZXNpcmVkLCB1 cGxvYWQgbXVsdGlwbGUgY3JlZGVudGlhbHMgd2l0aFxuZGlmZmVyZW50IG5hbWVzLCB1c2luZyB0 aGUgLWsgb3B0aW9uLlxuIik7CistCQlleGl0KDEpOworLQkgICAgfQorLQkgICAgaWYgKG15X2Ny ZWRzLT5yZW5ld2VycykgeworLQkJZnByaW50ZihzdGRlcnIsICJPbmx5IG9uZSAtQSBvciAtUiBv cHRpb24gbWF5IGJlIHNwZWNpZmllZC5cbiIpOworLQkJZXhpdCgxKTsKKy0JICAgIH0KKy0JICAg IG15X2NyZWRzLT5yZW5ld2VycyA9IHN0cmR1cCAoIioiKTsKKy0JICAgIG15cHJveHlfZGVidWco ImFub255bW91cyByZW5ld2VycyBhbGxvd2VkIik7CistCSAgICBicmVhazsKKy0gICAgY2FzZSAn RScgOiAgICAgICAgICAgICAgLyoga2V5IHJldHJpZXZlciBsaXN0ICovIAorLQkgICAgaWYgKGV4 cHJfdHlwZSA9PSBSRUdVTEFSX0VYUCkgeworLQkJLyogQ29weSBhcyBpcyAqLworLQkJbXlfY3Jl ZHMtPmtleXJldHJpZXZlID0gc3RyZHVwKG9wdGFyZyk7CistCSAgICB9IGVsc2UgeworLQkJbXlf Y3JlZHMtPmtleXJldHJpZXZlID0KKy0JCSAgICAoY2hhciAqKSBtYWxsb2Moc3RybGVuKG9wdGFy ZykgKyA2KTsKKy0JCXN0cmNweShteV9jcmVkcy0+a2V5cmV0cmlldmUsICIqL0NOPSIpOworLQkJ bXlfY3JlZHMtPmtleXJldHJpZXZlID0KKy0JCSAgICBzdHJjYXQobXlfY3JlZHMtPmtleXJldHJp ZXZlLCBvcHRhcmcpOworLQkJbXlwcm94eV9kZWJ1ZygiYXV0aG9yaXplZCBrZXkgcmV0cmlldmVy ICVzIiwKKy0JCQkgICAgICBteV9jcmVkcy0+a2V5cmV0cmlldmUpOworLQkgICAgfQorLQkgICAg YnJlYWs7CistCWNhc2UgJ2snOiAgLypjcmVkZW50aWFsIG5hbWUqLworLQkgICAgbXlfY3JlZHMt PmNyZWRuYW1lID0gc3RyZHVwIChvcHRhcmcpOworLQkgICAgYnJlYWs7CistCWNhc2UgJ0snOiAg LypjcmVkZW50aWFsIGRlc2NyaXB0aW9uKi8KKy0JICAgIG15X2NyZWRzLT5jcmVkZGVzYyA9IHN0 cmR1cCAob3B0YXJnKTsKKy0JICAgIGJyZWFrOworLQorLSAgICAgICAgZGVmYXVsdDogICAgICAg IC8qIHByaW50IHVzYWdlIGFuZCBleGl0ICovIAorKworKworKyAgICAgICAgY2FzZSAncic6ICAg LyogcmV0cmlldmVycyBsaXN0ICovCisrICAgICAgICAgICAgaWYgKG15X2NyZWRzLT5yZW5ld2Vy cykgeworKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIi1yIGlzIGluY29tcGF0aWJs ZSB3aXRoIC1BIGFuZCAtUi4gIEEgY3JlZGVudGlhbCBtYXkgbm90IGJlIHVzZWQgZm9yIGJvdGhc bnJldHJpZXZhbCBhbmQgcmVuZXdhbC4gIElmIGJvdGggYXJlIGRlc2lyZWQsIHVwbG9hZCBtdWx0 aXBsZSBjcmVkZW50aWFscyB3aXRoXG5kaWZmZXJlbnQgbmFtZXMsIHVzaW5nIHRoZSAtayBvcHRp b24uXG4iKTsKKysgICAgICAgICAgICAgICAgZXhpdCgxKTsKKysgICAgICAgICAgICB9CisrICAg ICAgICAgICAgaWYgKG15X2NyZWRzLT5yZXRyaWV2ZXJzKSB7CisrICAgICAgICAgICAgICAgIGZw cmludGYoc3RkZXJyLCAiT25seSBvbmUgLWEgb3IgLXIgb3B0aW9uIG1heSBiZSBzcGVjaWZpZWQu XG4iKTsKKysgICAgICAgICAgICAgICAgZXhpdCgxKTsKKysgICAgICAgICAgICB9CisrICAgICAg ICAgICAgaWYgKGV4cHJfdHlwZSA9PSBSRUdVTEFSX0VYUCkgIC8qY29weSBhcyBpcyAqLworKyAg ICAgICAgICAgICAgICBteV9jcmVkcy0+cmV0cmlldmVycyA9IHN0cmR1cCAob3B0YXJnKTsKKysg ICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBteV9jcmVk cy0+cmV0cmlldmVycyA9IChjaGFyICopbWFsbG9jKHN0cmxlbihvcHRhcmcpKzYpOworKyAgICAg ICAgICAgICAgICBzdHJjcHkgKG15X2NyZWRzLT5yZXRyaWV2ZXJzLCAiKi9DTj0iKTsKKysgICAg ICAgICAgICAgICAgbXlfY3JlZHMtPnJldHJpZXZlcnMgPSBzdHJjYXQobXlfY3JlZHMtPnJldHJp ZXZlcnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w dGFyZyk7CisrICAgICAgICAgICAgICAgIG15cHJveHlfZGVidWcoImF1dGhvcml6ZWQgcmV0cmll dmVyICVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteV9jcmVkcy0+cmV0cmll dmVycyk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2Fz ZSAnWic6ICAgLyogcmV0cmlldmVycyBsaXN0ICovCisrICAgICAgICAgICAgaWYgKG15X2NyZWRz LT50cnVzdGVkX3JldHJpZXZlcnMpIHsKKysgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIs ICJPbmx5IG9uZSAtWiBvcHRpb24gbWF5IGJlIHNwZWNpZmllZC5cbiIpOworKyAgICAgICAgICAg ICAgICBleGl0KDEpOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBpZiAoZXhwcl90eXBl ID09IFJFR1VMQVJfRVhQKSAgLypjb3B5IGFzIGlzICovCisrICAgICAgICAgICAgICAgIG15X2Ny ZWRzLT50cnVzdGVkX3JldHJpZXZlcnMgPSBzdHJkdXAgKG9wdGFyZyk7CisrICAgICAgICAgICAg ZWxzZQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgbXlfY3JlZHMtPnRydXN0ZWRf cmV0cmlldmVycyA9IChjaGFyICopbWFsbG9jKHN0cmxlbihvcHRhcmcpKzYpOworKyAgICAgICAg ICAgICAgICBzdHJjcHkgKG15X2NyZWRzLT50cnVzdGVkX3JldHJpZXZlcnMsICIqL0NOPSIpOwor KyAgICAgICAgICAgICAgICBteV9jcmVkcy0+dHJ1c3RlZF9yZXRyaWV2ZXJzID0gc3RyY2F0KG15 X2NyZWRzLT50cnVzdGVkX3JldHJpZXZlcnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9wdGFyZyk7CisrICAgICAgICAgICAgICAgIG15cHJveHlfZGVi dWcoInRydXN0ZWQgcmV0cmlldmVyICVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBteV9jcmVkcy0+dHJ1c3RlZF9yZXRyaWV2ZXJzKTsKKysgICAgICAgICAgICB9CisrICAgICAg ICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlICdSJzogICAvKiByZW5ld2VycyBsaXN0ICovCisr ICAgICAgICAgICAgaWYgKG15X2NyZWRzLT5yZXRyaWV2ZXJzKSB7CisrICAgICAgICAgICAgICAg IGZwcmludGYoc3RkZXJyLCAiLVIgaXMgaW5jb21wYXRpYmxlIHdpdGggLWEgYW5kIC1yLiAgQSBj cmVkZW50aWFsIG1heSBub3QgYmUgdXNlZCBmb3IgYm90aFxucmV0cmlldmFsIGFuZCByZW5ld2Fs LiAgSWYgYm90aCBhcmUgZGVzaXJlZCwgdXBsb2FkIG11bHRpcGxlIGNyZWRlbnRpYWxzIHdpdGhc bmRpZmZlcmVudCBuYW1lcywgdXNpbmcgdGhlIC1rIG9wdGlvbi5cbiIpOworKyAgICAgICAgICAg ICAgICBleGl0KDEpOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBpZiAobXlfY3JlZHMt PnJlbmV3ZXJzKSB7CisrICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiT25seSBvbmUg LUEgb3IgLVIgb3B0aW9uIG1heSBiZSBzcGVjaWZpZWQuXG4iKTsKKysgICAgICAgICAgICAgICAg ZXhpdCgxKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgaWYgKGV4cHJfdHlwZSA9PSBS RUdVTEFSX0VYUCkgIC8qY29weSBhcyBpcyAqLworKyAgICAgICAgICAgICAgICBteV9jcmVkcy0+ cmVuZXdlcnMgPSBzdHJkdXAgKG9wdGFyZyk7CisrICAgICAgICAgICAgZWxzZQorKyAgICAgICAg ICAgIHsKKysgICAgICAgICAgICAgICAgbXlfY3JlZHMtPnJlbmV3ZXJzID0gKGNoYXIgKiltYWxs b2Moc3RybGVuKG9wdGFyZykrNik7CisrICAgICAgICAgICAgICAgIHN0cmNweSAobXlfY3JlZHMt PnJlbmV3ZXJzLCAiKi9DTj0iKTsKKysgICAgICAgICAgICAgICAgbXlfY3JlZHMtPnJlbmV3ZXJz ID0gc3RyY2F0IChteV9jcmVkcy0+cmVuZXdlcnMsb3B0YXJnKTsKKysgICAgICAgICAgICAgICAg bXlwcm94eV9kZWJ1ZygiYXV0aG9yaXplZCByZW5ld2VyICVzIiwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBteV9jcmVkcy0+cmVuZXdlcnMpOworKyAgICAgICAgICAgIH0KKysgICAg ICAgICAgICBicmVhazsKKysgICAgICAgIGNhc2UgJ2QnOiAgIC8qIHVzZSB0aGUgY2VydGlmaWNh dGUgc3ViamVjdCAoRE4pIGFzIHRoZSBkZWZhdWx0CisrICAgICAgICAgICAgICAgICAgICAgICB1 c2VybmFtZSBpbnN0ZWFkIG9mIExPR05BTUUgKi8KKysgICAgICAgICAgICBkbl9hc191c2VybmFt ZSA9IDE7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlICd4JzogICAvKnNldCBl eHByZXNzaW9uIHR5cGUgdG8gcmVnZXgqLworKyAgICAgICAgICAgIGV4cHJfdHlwZSA9IFJFR1VM QVJfRVhQOworKyAgICAgICAgICAgIG15cHJveHlfZGVidWcoImV4cHItdHlwZSA9IHJlZ2V4Iik7 CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlICdYJzogICAvKnNldCBleHByZXNz aW9uIHR5cGUgdG8gY29tbW9uIG5hbWUqLworKyAgICAgICAgICAgIGV4cHJfdHlwZSA9IE1BVENI X0NOX09OTFk7CisrICAgICAgICAgICAgbXlwcm94eV9kZWJ1ZygiZXhwci10eXBlID0gQ04iKTsK KysgICAgICAgICAgICBicmVhazsKKysgICAgICAgIGNhc2UgJ2EnOiAgLyphbGxvdyBhbm9ueW1v dXMgcmV0cmlldmVycyovCisrICAgICAgICAgICAgaWYgKG15X2NyZWRzLT5yZW5ld2Vycykgewor KyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIi1hIGlzIGluY29tcGF0aWJsZSB3aXRo IC1BIGFuZCAtUi4gIEEgY3JlZGVudGlhbCBtYXkgbm90IGJlIHVzZWQgZm9yIGJvdGhcbnJldHJp ZXZhbCBhbmQgcmVuZXdhbC4gIElmIGJvdGggYXJlIGRlc2lyZWQsIHVwbG9hZCBtdWx0aXBsZSBj cmVkZW50aWFscyB3aXRoXG5kaWZmZXJlbnQgbmFtZXMsIHVzaW5nIHRoZSAtayBvcHRpb24uXG4i KTsKKysgICAgICAgICAgICAgICAgZXhpdCgxKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAg ICAgaWYgKG15X2NyZWRzLT5yZXRyaWV2ZXJzKSB7CisrICAgICAgICAgICAgICAgIGZwcmludGYo c3RkZXJyLCAiT25seSBvbmUgLWEgb3IgLXIgb3B0aW9uIG1heSBiZSBzcGVjaWZpZWQuXG4iKTsK KysgICAgICAgICAgICAgICAgZXhpdCgxKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAg bXlfY3JlZHMtPnJldHJpZXZlcnMgPSBzdHJkdXAgKCIqIik7CisrICAgICAgICAgICAgbXlwcm94 eV9kZWJ1ZygiYW5vbnltb3VzIHJldHJpZXZlcnMgYWxsb3dlZCIpOworKyAgICAgICAgICAgIGJy ZWFrOworKyAgICAgICAgY2FzZSAnQSc6ICAvKmFsbG93IGFub255bW91cyByZW5ld2VycyovCisr ICAgICAgICAgICAgaWYgKG15X2NyZWRzLT5yZXRyaWV2ZXJzKSB7CisrICAgICAgICAgICAgICAg IGZwcmludGYoc3RkZXJyLCAiLUEgaXMgaW5jb21wYXRpYmxlIHdpdGggLWEgYW5kIC1yLiAgQSBj cmVkZW50aWFsIG1heSBub3QgYmUgdXNlZCBmb3IgYm90aFxucmV0cmlldmFsIGFuZCByZW5ld2Fs LiAgSWYgYm90aCBhcmUgZGVzaXJlZCwgdXBsb2FkIG11bHRpcGxlIGNyZWRlbnRpYWxzIHdpdGhc bmRpZmZlcmVudCBuYW1lcywgdXNpbmcgdGhlIC1rIG9wdGlvbi5cbiIpOworKyAgICAgICAgICAg ICAgICBleGl0KDEpOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBpZiAobXlfY3JlZHMt PnJlbmV3ZXJzKSB7CisrICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiT25seSBvbmUg LUEgb3IgLVIgb3B0aW9uIG1heSBiZSBzcGVjaWZpZWQuXG4iKTsKKysgICAgICAgICAgICAgICAg ZXhpdCgxKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgbXlfY3JlZHMtPnJlbmV3ZXJz ID0gc3RyZHVwICgiKiIpOworKyAgICAgICAgICAgIG15cHJveHlfZGVidWcoImFub255bW91cyBy ZW5ld2VycyBhbGxvd2VkIik7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgJ0UnIDog ICAgICAgICAgICAgIC8qIGtleSByZXRyaWV2ZXIgbGlzdCAqLworKyAgICAgICAgICAgIGlmIChl eHByX3R5cGUgPT0gUkVHVUxBUl9FWFApIHsKKysgICAgICAgICAgICAgICAgLyogQ29weSBhcyBp cyAqLworKyAgICAgICAgICAgICAgICBteV9jcmVkcy0+a2V5cmV0cmlldmUgPSBzdHJkdXAob3B0 YXJnKTsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICBteV9jcmVkcy0+ a2V5cmV0cmlldmUgPQorKyAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikgbWFsbG9jKHN0cmxl bihvcHRhcmcpICsgNik7CisrICAgICAgICAgICAgICAgIHN0cmNweShteV9jcmVkcy0+a2V5cmV0 cmlldmUsICIqL0NOPSIpOworKyAgICAgICAgICAgICAgICBteV9jcmVkcy0+a2V5cmV0cmlldmUg PQorKyAgICAgICAgICAgICAgICAgICAgc3RyY2F0KG15X2NyZWRzLT5rZXlyZXRyaWV2ZSwgb3B0 YXJnKTsKKysgICAgICAgICAgICAgICAgbXlwcm94eV9kZWJ1ZygiYXV0aG9yaXplZCBrZXkgcmV0 cmlldmVyICVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteV9jcmVkcy0+a2V5 cmV0cmlldmUpOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBicmVhazsKKysgICAgICAg IGNhc2UgJ2snOiAgLypjcmVkZW50aWFsIG5hbWUqLworKyAgICAgICAgICAgIG15X2NyZWRzLT5j cmVkbmFtZSA9IHN0cmR1cCAob3B0YXJnKTsKKysgICAgICAgICAgICBicmVhazsKKysgICAgICAg IGNhc2UgJ0snOiAgLypjcmVkZW50aWFsIGRlc2NyaXB0aW9uKi8KKysgICAgICAgICAgICBteV9j cmVkcy0+Y3JlZGRlc2MgPSBzdHJkdXAgKG9wdGFyZyk7CisrICAgICAgICAgICAgYnJlYWs7Cisr CisrICAgICAgICBkZWZhdWx0OiAgICAgICAgLyogcHJpbnQgdXNhZ2UgYW5kIGV4aXQgKi8KKyAg ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgdXNhZ2UpOworLQkgICAgZXhpdCgxKTsK Ky0gICAgICAgICAgICBicmVhazsJCisrICAgICAgICAgICAgZXhpdCgxKTsKKysgICAgICAgICAg ICBicmVhazsKKyAgICAgICAgIH0KKyAgICAgfQorICAgICBpZiAob3B0aW5kICE9IGFyZ2MpIHsK Ky0JZnByaW50ZihzdGRlcnIsICIlczogaW52YWxpZCBvcHRpb24gLS0gJXNcbiIsIGFyZ3ZbMF0s CistCQlhcmd2W29wdGluZF0pOworLQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgdXNhZ2UpOworLQll eGl0KDEpOworKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlczogaW52YWxpZCBvcHRpb24gLS0g JXNcbiIsIGFyZ3ZbMF0sCisrICAgICAgICAgICAgICAgIGFyZ3Zbb3B0aW5kXSk7CisrICAgICAg ICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgdXNhZ2UpOworKyAgICAgICAgZXhpdCgxKTsKKyAgICAg fQorIH0KKyAKKyBpbnQgbWFrZXByb3h5KGNvbnN0IGNoYXIgY2VydGZpbGVbXSwgY29uc3QgY2hh ciBrZXlmaWxlW10sCistCSAgICAgIGNvbnN0IGNoYXIgcHJveHlmaWxlW10pIAorKyAgICAgICAg ICAgICAgY29uc3QgY2hhciBwcm94eWZpbGVbXSkKKyB7CisgICAgIHN0YXRpYyBjaGFyIEJFR0lO Q0VSVFtdID0gIi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLSI7CisgICAgIHN0YXRpYyBjaGFy IEVORENFUlRbXSA9ICItLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tIjsKK0BAIC0zNzIsMTQgKzM3 MiwxNCBAQCBpbnQgbWFrZXByb3h5KGNvbnN0IGNoYXIgY2VydGZpbGVbXSwgY29uc3QgY2hhciBr ZXlmaWxlW10sCisgCisgICAgIC8qIFJlYWQgdGhlIGNlcnRpZmljYXRlKHMpIGludG8gYSBidWZm ZXIuICovCisgICAgIGlmIChidWZmZXJfZnJvbV9maWxlKGNlcnRmaWxlLCAmY2VydGJ1ZiwgTlVM TCkgPCAwKSB7CistCWZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIHJlYWQgJXNcbiIsIGNlcnRm aWxlKTsKKy0JZ290byBjbGVhbnVwOworKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQg dG8gcmVhZCAlc1xuIiwgY2VydGZpbGUpOworKyAgICAgICAgZ290byBjbGVhbnVwOworICAgICB9 CisgCisgICAgIC8qIFJlYWQgdGhlIGtleSBpbnRvIGEgYnVmZmVyLiAqLworICAgICBpZiAoYnVm ZmVyX2Zyb21fZmlsZShrZXlmaWxlLCAma2V5YnVmLCBOVUxMKSA8IDApIHsKKy0JZnByaW50Zihz dGRlcnIsICJGYWlsZWQgdG8gcmVhZCAlc1xuIiwga2V5ZmlsZSk7CistCWdvdG8gY2xlYW51cDsK KysgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIHJlYWQgJXNcbiIsIGtleWZpbGUp OworKyAgICAgICAgZ290byBjbGVhbnVwOworICAgICB9CisgCisgICAgIC8qIHNwZWNpYWwgY2Fz ZTogcnVuIGFzIHJvb3Qgdy8gbm9uLXJvb3Qgc3RvcmFnZSBkaXIgKi8KK0BAIC0zOTAsOTYgKzM5 MCw5NiBAQCBpbnQgbWFrZXByb3h5KGNvbnN0IGNoYXIgY2VydGZpbGVbXSwgY29uc3QgY2hhciBr ZXlmaWxlW10sCisgCisgICAgIC8qIE9wZW4gdGhlIG91dHB1dCBmaWxlLiAqLworICAgICBpZiAo KGZkID0gb3Blbihwcm94eWZpbGUsIE9fQ1JFQVQgfCBPX0VYQ0wgfCBPX1dST05MWSwKKy0JCSAg IFNfSVJVU1IgfCBTX0lXVVNSKSkgPCAwKSB7CistCWZwcmludGYoc3RkZXJyLCAib3Blbiglcykg ZmFpbGVkOiAlc1xuIiwgcHJveHlmaWxlLCBzdHJlcnJvcihlcnJubykpOworLQlnb3RvIGNsZWFu dXA7CisrICAgICAgICAgICAgICAgICAgIFNfSVJVU1IgfCBTX0lXVVNSKSkgPCAwKSB7CisrICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgIm9wZW4oJXMpIGZhaWxlZDogJXNcbiIsIHByb3h5ZmlsZSwg c3RyZXJyb3IoZXJybm8pKTsKKysgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgfQorIAorICAg ICAvKiBXcml0ZSB0aGUgZmlyc3QgY2VydGlmaWNhdGUuICovCisgICAgIGlmICgoY2VydHN0YXJ0 ID0gc3Ryc3RyKChjb25zdCBjaGFyICopY2VydGJ1ZiwgQkVHSU5DRVJUKSkgPT0gTlVMTCkgewor LQlmcHJpbnRmKHN0ZGVyciwgIiVzIGRvZXNuJ3QgY29udGFpbiAnJXMnLlxuIiwgY2VydGZpbGUs IEJFR0lOQ0VSVCk7CistCWdvdG8gY2xlYW51cDsKKysgICAgICAgIGZwcmludGYoc3RkZXJyLCAi JXMgZG9lc24ndCBjb250YWluICclcycuXG4iLCBjZXJ0ZmlsZSwgQkVHSU5DRVJUKTsKKysgICAg ICAgIGdvdG8gY2xlYW51cDsKKyAgICAgfQorIAorICAgICBpZiAoKGNlcnRlbmQgPSBzdHJzdHIo KGNvbnN0IGNoYXIgKiljZXJ0c3RhcnQsIEVORENFUlQpKSA9PSBOVUxMKSB7CistCWZwcmludGYo c3RkZXJyLCAiJXMgZG9lc24ndCBjb250YWluICclcycuXG4iLCBjZXJ0ZmlsZSwgRU5EQ0VSVCk7 CistCWdvdG8gY2xlYW51cDsKKysgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgZG9lc24ndCBj b250YWluICclcycuXG4iLCBjZXJ0ZmlsZSwgRU5EQ0VSVCk7CisrICAgICAgICBnb3RvIGNsZWFu dXA7CisgICAgIH0KKyAgICAgY2VydGVuZCArPSBzdHJsZW4oRU5EQ0VSVCk7CisgICAgIHNpemUg PSBjZXJ0ZW5kLWNlcnRzdGFydDsKKyAKKyAgICAgd2hpbGUgKHNpemUpIHsKKy0JaWYgKChydmFs ID0gd3JpdGUoZmQsIGNlcnRzdGFydCwgc2l6ZSkpIDwgMCkgeworLQkgICAgcGVycm9yKCJ3cml0 ZSIpOworLQkgICAgZ290byBjbGVhbnVwOworLQl9CistCXNpemUgLT0gcnZhbDsKKy0JY2VydHN0 YXJ0ICs9IHJ2YWw7CisrICAgICAgICBpZiAoKHJ2YWwgPSB3cml0ZShmZCwgY2VydHN0YXJ0LCBz aXplKSkgPCAwKSB7CisrICAgICAgICAgICAgcGVycm9yKCJ3cml0ZSIpOworKyAgICAgICAgICAg IGdvdG8gY2xlYW51cDsKKysgICAgICAgIH0KKysgICAgICAgIHNpemUgLT0gcnZhbDsKKysgICAg ICAgIGNlcnRzdGFydCArPSBydmFsOworICAgICB9CisgICAgIGlmICh3cml0ZShmZCwgIlxuIiwg MSkgPCAwKSB7CistCXBlcnJvcigid3JpdGUiKTsKKy0JZ290byBjbGVhbnVwOworKyAgICAgICAg cGVycm9yKCJ3cml0ZSIpOworKyAgICAgICAgZ290byBjbGVhbnVwOworICAgICB9CisgCisgICAg IC8qIFdyaXRlIHRoZSBrZXkuICovCisgICAgIGlmICgoa2V5c3RhcnQgPSBzdHJzdHIoKGNvbnN0 IGNoYXIgKilrZXlidWYsIEJFR0lOS0VZMSkpID09IE5VTEwKKy0JJiYgKGtleXN0YXJ0ID0gc3Ry c3RyKChjb25zdCBjaGFyICopa2V5YnVmLCBCRUdJTktFWTIpKSA9PSBOVUxMCistCSYmIChrZXlz dGFydCA9IHN0cnN0cigoY29uc3QgY2hhciAqKWtleWJ1ZiwgQkVHSU5LRVkzKSkgPT0gTlVMTCkg eworLQlmcHJpbnRmKHN0ZGVyciwgIiVzIGRvZXNuJ3QgY29udGFpbiAnJXMnIG5vciAnJXMnIG5v ciAnJXMnLlxuIiwga2V5ZmlsZSwKKy0JCQkJCSBCRUdJTktFWTEsIEJFR0lOS0VZMiwgQkVHSU5L RVkzKTsKKy0JZ290byBjbGVhbnVwOworKyAgICAgICAgJiYgKGtleXN0YXJ0ID0gc3Ryc3RyKChj b25zdCBjaGFyICopa2V5YnVmLCBCRUdJTktFWTIpKSA9PSBOVUxMCisrICAgICAgICAmJiAoa2V5 c3RhcnQgPSBzdHJzdHIoKGNvbnN0IGNoYXIgKilrZXlidWYsIEJFR0lOS0VZMykpID09IE5VTEwp IHsKKysgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgZG9lc24ndCBjb250YWluICclcycgbm9y ICclcycgbm9yICclcycuXG4iLCBrZXlmaWxlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQkVHSU5LRVkxLCBCRUdJTktFWTIsIEJFR0lOS0VZMyk7CisrICAgICAg ICBnb3RvIGNsZWFudXA7CisgICAgIH0KKyAKKyAgICAgaWYgKChrZXllbmQgPSBzdHJzdHIoKGNv bnN0IGNoYXIgKilrZXlzdGFydCwgRU5ES0VZMSkpICE9IE5VTEwpCistCWtleWVuZCArPSBzdHJs ZW4oRU5ES0VZMSk7CisrICAgICAgICBrZXllbmQgKz0gc3RybGVuKEVOREtFWTEpOworICAgICBl bHNlIGlmICgoa2V5ZW5kID0gc3Ryc3RyKChjb25zdCBjaGFyICopa2V5c3RhcnQsIEVOREtFWTIp KSAhPSBOVUxMKQorLQlrZXllbmQgKz0gc3RybGVuKEVOREtFWTIpOworKyAgICAgICAga2V5ZW5k ICs9IHN0cmxlbihFTkRLRVkyKTsKKyAgICAgZWxzZSBpZiAoKGtleWVuZCA9IHN0cnN0cigoY29u c3QgY2hhciAqKWtleXN0YXJ0LCBFTkRLRVkzKSkgIT0gTlVMTCkKKy0Ja2V5ZW5kICs9IHN0cmxl bihFTkRLRVkzKTsKKysgICAgICAgIGtleWVuZCArPSBzdHJsZW4oRU5ES0VZMyk7CisgICAgIGVs c2UgeworLQlmcHJpbnRmKHN0ZGVyciwgIiVzIGRvZXNuJ3QgY29udGFpbiAnJXMnIG5vciAnJXMn IG5vciAnJXMnLlxuIiwga2V5ZmlsZSwKKy0JCQkJRU5ES0VZMSwgRU5ES0VZMiwgRU5ES0VZMyk7 CistCWdvdG8gY2xlYW51cDsKKysgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMgZG9lc24ndCBj b250YWluICclcycgbm9yICclcycgbm9yICclcycuXG4iLCBrZXlmaWxlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRU5ES0VZMSwgRU5ES0VZMiwgRU5ES0VZMyk7CisrICAgICAg ICBnb3RvIGNsZWFudXA7CisgICAgIH0KKyAKKyAgICAgc2l6ZSA9IGtleWVuZC1rZXlzdGFydDsK KyAKKyAgICAgd2hpbGUgKHNpemUpIHsKKy0JaWYgKChydmFsID0gd3JpdGUoZmQsIGtleXN0YXJ0 LCBzaXplKSkgPCAwKSB7CistCSAgICBwZXJyb3IoIndyaXRlIik7CistCSAgICBnb3RvIGNsZWFu dXA7CistCX0KKy0Jc2l6ZSAtPSBydmFsOworLQlrZXlzdGFydCArPSBydmFsOworKyAgICAgICAg aWYgKChydmFsID0gd3JpdGUoZmQsIGtleXN0YXJ0LCBzaXplKSkgPCAwKSB7CisrICAgICAgICAg ICAgcGVycm9yKCJ3cml0ZSIpOworKyAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKKysgICAgICAg IH0KKysgICAgICAgIHNpemUgLT0gcnZhbDsKKysgICAgICAgIGtleXN0YXJ0ICs9IHJ2YWw7Cisg ICAgIH0KKyAgICAgaWYgKHdyaXRlKGZkLCAiXG4iLCAxKSA8IDApIHsKKy0JcGVycm9yKCJ3cml0 ZSIpOworLQlnb3RvIGNsZWFudXA7CisrICAgICAgICBwZXJyb3IoIndyaXRlIik7CisrICAgICAg ICBnb3RvIGNsZWFudXA7CisgICAgIH0KKyAKKyAgICAgLyogV3JpdGUgYW55IHJlbWFpbmluZyBj ZXJ0aWZpY2F0ZXMuICovCisgICAgIHdoaWxlICgoY2VydHN0YXJ0ID0gc3Ryc3RyKChjb25zdCBj aGFyICopY2VydHN0YXJ0LCBCRUdJTkNFUlQpKSAhPSBOVUxMKSB7CisgCistCWlmICgoY2VydGVu ZCA9IHN0cnN0cigoY29uc3QgY2hhciAqKWNlcnRzdGFydCwgRU5EQ0VSVCkpID09IE5VTEwpIHsK Ky0JICAgIGZwcmludGYoc3RkZXJyLCAiQ2FuJ3QgZmluZCBtYXRjaGluZyAnJXMnIGluICVzLlxu IiwgRU5EQ0VSVCwKKy0JCSAgICBjZXJ0ZmlsZSk7CistCSAgICBnb3RvIGNsZWFudXA7CistCX0K Ky0JY2VydGVuZCArPSBzdHJsZW4oRU5EQ0VSVCk7CistCXNpemUgPSBjZXJ0ZW5kLWNlcnRzdGFy dDsKKy0KKy0Jd2hpbGUgKHNpemUpIHsKKy0JICAgIGlmICgocnZhbCA9IHdyaXRlKGZkLCBjZXJ0 c3RhcnQsIHNpemUpKSA8IDApIHsKKy0JCXBlcnJvcigid3JpdGUiKTsKKy0JCWdvdG8gY2xlYW51 cDsKKy0JICAgIH0KKy0JICAgIHNpemUgLT0gcnZhbDsKKy0JICAgIGNlcnRzdGFydCArPSBydmFs OworLQl9CistCWlmICh3cml0ZShmZCwgIlxuIiwgMSkgPCAwKSB7CistCSAgICBwZXJyb3IoIndy aXRlIik7CistCSAgICBnb3RvIGNsZWFudXA7CistCX0KKysgICAgICAgIGlmICgoY2VydGVuZCA9 IHN0cnN0cigoY29uc3QgY2hhciAqKWNlcnRzdGFydCwgRU5EQ0VSVCkpID09IE5VTEwpIHsKKysg ICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNhbid0IGZpbmQgbWF0Y2hpbmcgJyVzJyBpbiAl cy5cbiIsIEVORENFUlQsCisrICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZSk7CisrICAgICAg ICAgICAgZ290byBjbGVhbnVwOworKyAgICAgICAgfQorKyAgICAgICAgY2VydGVuZCArPSBzdHJs ZW4oRU5EQ0VSVCk7CisrICAgICAgICBzaXplID0gY2VydGVuZC1jZXJ0c3RhcnQ7CisrCisrICAg ICAgICB3aGlsZSAoc2l6ZSkgeworKyAgICAgICAgICAgIGlmICgocnZhbCA9IHdyaXRlKGZkLCBj ZXJ0c3RhcnQsIHNpemUpKSA8IDApIHsKKysgICAgICAgICAgICAgICAgcGVycm9yKCJ3cml0ZSIp OworKyAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7CisrICAgICAgICAgICAgfQorKyAgICAg ICAgICAgIHNpemUgLT0gcnZhbDsKKysgICAgICAgICAgICBjZXJ0c3RhcnQgKz0gcnZhbDsKKysg ICAgICAgIH0KKysgICAgICAgIGlmICh3cml0ZShmZCwgIlxuIiwgMSkgPCAwKSB7CisrICAgICAg ICAgICAgcGVycm9yKCJ3cml0ZSIpOworKyAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKKysgICAg ICAgIH0KKyAgICAgfQorIAorICAgICByZXR1cm5fdmFsdWUgPSAwOworZGlmZiAtLWdpdCBhL215 cHJveHkvc291cmNlL215cHJveHlfZ2V0X2NyZWRlbnRpYWwuYyBiL215cHJveHkvc291cmNlL215 cHJveHlfZ2V0X2NyZWRlbnRpYWwuYworaW5kZXggMjk4ODU2ZGJmLi5kMWQxNWYzODYgMTAwNjQ0 CistLS0gYS9teXByb3h5L3NvdXJjZS9teXByb3h5X2dldF9jcmVkZW50aWFsLmMKKysrKyBiL215 cHJveHkvc291cmNlL215cHJveHlfZ2V0X2NyZWRlbnRpYWwuYworQEAgLTQsNyArNCw3IEBACisg ICogV2Vic2VydmVyIHByb2dyYW0gdG8gcmV0cmlldmUgYSBlbmQtZW50aXR5IGNyZWRlbnRpYWwg ZnJvbSBhIG15cHJveHktc2VydmVyCisgICovCisgCistI2luY2x1ZGUgIm15cHJveHlfY29tbW9u LmgiCS8qIGFsbCBuZWVkZWQgaGVhZGVycyBpbmNsdWRlZCBoZXJlICovCisrI2luY2x1ZGUgIm15 cHJveHlfY29tbW9uLmgiICAgICAvKiBhbGwgbmVlZGVkIGhlYWRlcnMgaW5jbHVkZWQgaGVyZSAq LworIAorICNpZm5kZWYgTUFYUEFUSExFTgorICNkZWZpbmUgTUFYUEFUSExFTiA0MDk2CitAQCAt NDgsNyArNDgsNyBAQCBzdHJ1Y3Qgb3B0aW9uIGxvbmdfb3B0aW9uc1tdID0KKyAgICAgeyJ2ZXJz aW9uIiwgICAgICAgICAgICAgICAgbm9fYXJndW1lbnQsIE5VTEwsICdWJ30sCisgICAgIHsiYXV0 aG9yaXphdGlvbiIsICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncid9LAorICAgICB7ImRu X2FzX3VzZXJuYW1lIiwgICAgICAgICBub19hcmd1bWVudCwgTlVMTCwgJ2QnfSwKKy0gICAgeyJj cmVkbmFtZSIsCSByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ2snfSwKKysgICAgeyJjcmVkbmFt ZSIsICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdrJ30sCisgICAgIHsic3RkaW5f cGFzcyIsICAgICAgICAgICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAnUyd9LAorICAgICB7Im5vX3Bh c3NwaHJhc2UiLCAgICAgICAgICBub19hcmd1bWVudCwgTlVMTCwgJ24nfSwKKyAgICAgeyJjZXJ0 ZmlsZSIsICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdjJ30sCitAQCAtNjIsMTEg KzYyLDExIEBAIHN0YXRpYyBjaGFyIHNob3J0X29wdGlvbnNbXSA9ICJodXM6cDpsOnQ6Yzp5OnZW YTpkazpTblQiOworIHN0YXRpYyBjaGFyIHZlcnNpb25bXSA9CisgIm15cHJveHktcmV0cmlldmUg dmVyc2lvbiAiIE1ZUFJPWFlfVkVSU0lPTiAiICgiIE1ZUFJPWFlfVkVSU0lPTl9EQVRFICIpICIg ICJcbiI7CisgCistdm9pZCAKKy1pbml0X2FyZ3VtZW50cyhpbnQgYXJnYywgY2hhciAqYXJndltd LCAKKy0JICAgICAgIG15cHJveHlfc29ja2V0X2F0dHJzX3QgKmF0dHJzLAorLQkgICAgICAgbXlw cm94eV9yZXF1ZXN0X3QgKnJlcXVlc3QpOworLSAKKyt2b2lkCisraW5pdF9hcmd1bWVudHMoaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwKKysgICAgICAgICAgICAgICBteXByb3h5X3NvY2tldF9hdHRy c190ICphdHRycywKKysgICAgICAgICAgICAgICBteXByb3h5X3JlcXVlc3RfdCAqcmVxdWVzdCk7 CisrCisgaW50Cisgc3RvcmVfY3JlZGVudGlhbCggY2hhciAqZGVsZWdmaWxlLAorICAgICAgICAg ICAgICAgICAgIGNoYXIgKmNlcnRmaWxlLAorQEAgLTkyLDcgKzkyLDcgQEAgbWtwYXRoKCBjaGFy ICpwYXRoICk7CisgICogVXNlIHNldHZidWYoKSBpbnN0ZWFkIG9mIHNldGxpbmVidWYoKSBzaW5j ZSBjeWd3aW4gZG9lc24ndCBzdXBwb3J0CisgICogc2V0bGluZWJ1ZigpLgorICAqLworLSNkZWZp bmUgbXlfc2V0bGluZWJ1ZihzdHJlYW0pCXNldHZidWYoKHN0cmVhbSksIChjaGFyICopIE5VTEws IF9JT0xCRiwgMCkKKysjZGVmaW5lIG15X3NldGxpbmVidWYoc3RyZWFtKSAgIHNldHZidWYoKHN0 cmVhbSksIChjaGFyICopIE5VTEwsIF9JT0xCRiwgMCkKKyAKKyAvKiBsb2NhdGlvbiBvZiBkZWxl Z2F0ZWQgcHJveHkgKi8KKyBzdGF0aWMgY2hhciAqY2VydGZpbGUgICAgICAgICAgICAgICA9IE5V TEw7ICAgICAvKiBjZXJ0aWZpY2F0ZSBmaWxlIG5hbWUgKi8KK0BAIC0xMDIsOCArMTAyLDggQEAg c3RhdGljIGludCAgIHJlYWRfcGFzc3dkX2Zyb21fc3RkaW4gPSAwOworIHN0YXRpYyBpbnQgICB1 c2VfZW1wdHlfcGFzc3dkICAgICAgID0gMDsKKyAKKyBpbnQKKy1tYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10pIAorLXsgICAgCisrbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorK3sKKyAg ICAgbXlwcm94eV9zb2NrZXRfYXR0cnNfdCAqc29ja2V0X2F0dHJzOworICAgICBteXByb3h5X3Jl cXVlc3RfdCAgICAgICpjbGllbnRfcmVxdWVzdDsKKyAgICAgbXlwcm94eV9yZXNwb25zZV90ICAg ICAqc2VydmVyX3Jlc3BvbnNlOworQEAgLTExNiwxMCArMTE2LDEwIEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKKyAKKyAgICAgLyogY2hlY2sgbGlicmFyeSB2ZXJzaW9uICovCisgICAg IGlmIChteXByb3h5X2NoZWNrX3ZlcnNpb24oKSkgeworLQlmcHJpbnRmKHN0ZGVyciwgIk15UHJv eHkgbGlicmFyeSB2ZXJzaW9uIG1pc21hdGNoLlxuIgorLQkJIkV4cGVjdGluZyAlcy4gIEZvdW5k ICVzLlxuIiwKKy0JCU1ZUFJPWFlfVkVSU0lPTl9EQVRFLCBteXByb3h5X3ZlcnNpb24oMCwwLDAp KTsKKy0JZXhpdCgxKTsKKysgICAgICAgIGZwcmludGYoc3RkZXJyLCAiTXlQcm94eSBsaWJyYXJ5 IHZlcnNpb24gbWlzbWF0Y2guXG4iCisrICAgICAgICAgICAgICAgICJFeHBlY3RpbmcgJXMuICBG b3VuZCAlcy5cbiIsCisrICAgICAgICAgICAgICAgIE1ZUFJPWFlfVkVSU0lPTl9EQVRFLCBteXBy b3h5X3ZlcnNpb24oMCwwLDApKTsKKysgICAgICAgIGV4aXQoMSk7CisgICAgIH0KKyAKKyAgICAg bXlwcm94eV9sb2dfdXNlX3N0cmVhbSAoc3RkZXJyKTsKK0BAIC0xNTQsMzYgKzE1NCwzNiBAQCBt YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgICAgIH0KKyAKKyAgICAgaWYgKGdldHVpZCgp ID09IDApIHsKKy0gICAgICAgIGdldF9ob3N0X2NyZWRlbnRpYWxfZmlsZW5hbWVzKCAmY2VydGZp bGUsICZrZXlmaWxlICk7IAorKyAgICAgICAgZ2V0X2hvc3RfY3JlZGVudGlhbF9maWxlbmFtZXMo ICZjZXJ0ZmlsZSwgJmtleWZpbGUgKTsKKyAgICAgfSBlbHNlIHsKKy0gICAgICAgIGdldF91c2Vy X2NyZWRlbnRpYWxfZmlsZW5hbWVzKCAmY2VydGZpbGUsICZrZXlmaWxlICk7IAorKyAgICAgICAg Z2V0X3VzZXJfY3JlZGVudGlhbF9maWxlbmFtZXMoICZjZXJ0ZmlsZSwgJmtleWZpbGUgKTsKKyAg ICAgfQorIAorICAgICAvKiBJbml0aWFsaXplIGNsaWVudCBhcmd1bWVudHMgYW5kIGNyZWF0ZSBj bGllbnQgcmVxdWVzdCBvYmplY3QgKi8KKyAgICAgaW5pdF9hcmd1bWVudHMoYXJnYywgYXJndiwg c29ja2V0X2F0dHJzLCBjbGllbnRfcmVxdWVzdCk7CisgCisgICAgIGlmICghY2VydGZpbGUgJiYg IWtleWZpbGUpIHsKKy0JZnByaW50ZihzdGRlcnIsICJVbmFibGUgdG8gZGV0ZXJtaW5lIGNyZWRl bnRpYWwgb3V0cHV0IGxvY2F0aW9ucy5cbiIKKy0JCSJVc2UgLS1jZXJ0ZmlsZSBhbmQgLS1rZXlm aWxlIG9wdGlvbnMuXG4iKTsKKy0JZ290byBlcnJvcjsKKysgICAgICAgIGZwcmludGYoc3RkZXJy LCAiVW5hYmxlIHRvIGRldGVybWluZSBjcmVkZW50aWFsIG91dHB1dCBsb2NhdGlvbnMuXG4iCisr ICAgICAgICAgICAgICAgICJVc2UgLS1jZXJ0ZmlsZSBhbmQgLS1rZXlmaWxlIG9wdGlvbnMuXG4i KTsKKysgICAgICAgIGdvdG8gZXJyb3I7CisgICAgIH0gZWxzZSBpZiAoIWNlcnRmaWxlKSB7Cist CWZwcmludGYoc3RkZXJyLCAiVW5hYmxlIHRvIGRldGVybWluZSBjZXJ0aWZpY2F0ZSBvdXRwdXQg bG9jYXRpb24uXG4iCistCQkiVXNlIC0tY2VydGZpbGUgb3B0aW9uLlxuIik7CistCWdvdG8gZXJy b3I7CisrICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuYWJsZSB0byBkZXRlcm1pbmUgY2VydGlm aWNhdGUgb3V0cHV0IGxvY2F0aW9uLlxuIgorKyAgICAgICAgICAgICAgICAiVXNlIC0tY2VydGZp bGUgb3B0aW9uLlxuIik7CisrICAgICAgICBnb3RvIGVycm9yOworICAgICB9IGVsc2UgaWYgKCFr ZXlmaWxlKSB7CistCWZwcmludGYoc3RkZXJyLCAiVW5hYmxlIHRvIGRldGVybWluZSBwcml2YXRl IGtleSBvdXRwdXQgbG9jYXRpb24uXG4iCistCQkiVXNlIC0ta2V5ZmlsZSBvcHRpb24uXG4iKTsK Ky0JZ290byBlcnJvcjsKKysgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVW5hYmxlIHRvIGRldGVy bWluZSBwcml2YXRlIGtleSBvdXRwdXQgbG9jYXRpb24uXG4iCisrICAgICAgICAgICAgICAgICJV c2UgLS1rZXlmaWxlIG9wdGlvbi5cbiIpOworKyAgICAgICAgZ290byBlcnJvcjsKKyAgICAgfQor IAorICAgICBpZiAoYWNjZXNzKGNlcnRmaWxlLCBGX09LKSA9PSAwKSB7CistCWZwcmludGYoc3Rk ZXJyLCAiJXMgZXhpc3RzLlxuIiwgY2VydGZpbGUpOworLQlnb3RvIGVycm9yOworKyAgICAgICAg ZnByaW50ZihzdGRlcnIsICIlcyBleGlzdHMuXG4iLCBjZXJ0ZmlsZSk7CisrICAgICAgICBnb3Rv IGVycm9yOworICAgICB9CisgCisgICAgIGlmIChhY2Nlc3Moa2V5ZmlsZSwgRl9PSykgPT0gMCkg eworLQlmcHJpbnRmKHN0ZGVyciwgIiVzIGV4aXN0cy5cbiIsIGtleWZpbGUpOworLQlnb3RvIGVy cm9yOworKyAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyBleGlzdHMuXG4iLCBrZXlmaWxlKTsK KysgICAgICAgIGdvdG8gZXJyb3I7CisgICAgIH0KKyAKKyAgICAgLyogQm9vdHN0cmFwIHRydXN0 ZWQgY2VydGlmaWNhdGUgZGlyZWN0b3J5IGlmIG5vbmUgZXhpc3RzLiAqLworQEAgLTIwNSw3ICsy MDUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgICAgICAgICB2ZXJyb3JfcHJp bnRfZXJyb3Ioc3RkZXJyKTsKKyAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgIH0KKy0gICAgCisr CisgICAgIC8qIEF0dGVtcHQgYW5vbnltb3VzLW1vZGUgY3JlZGVudGlhbCByZXRyaWV2YWwgaWYg d2UgZG9uJ3QgaGF2ZSBhCisgICAgICAgIGNyZWRlbnRpYWwuICovCisgICAgIEdTSV9TT0NLRVRf YWxsb3dfYW5vbnltb3VzKHNvY2tldF9hdHRycy0+Z3NpX3NvY2tldCwgMSk7CitAQCAtMjM5LDYw ICsyMzksNjAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAorICAgICBpZiAoIXVz ZV9lbXB0eV9wYXNzd2QpIHsKKyAgICAgICAgLyogQWxsb3cgdXNlciB0byBwcm92aWRlIGEgcGFz c3BocmFzZSAqLworLQlpbnQgcnZhbDsKKy0JaWYgKHJlYWRfcGFzc3dkX2Zyb21fc3RkaW4pIHsK Ky0JICAgIHJ2YWwgPSBteXByb3h5X3JlYWRfcGFzc3BocmFzZV9zdGRpbigKKy0JCQkgICBjbGll bnRfcmVxdWVzdC0+cGFzc3BocmFzZSwKKy0JCQkgICBzaXplb2YoY2xpZW50X3JlcXVlc3QtPnBh c3NwaHJhc2UpLAorLQkJCSAgIE5VTEwpOworLQl9IGVsc2UgeworLQkgICAgcnZhbCA9IG15cHJv eHlfcmVhZF9wYXNzcGhyYXNlKGNsaWVudF9yZXF1ZXN0LT5wYXNzcGhyYXNlLAorLQkJCQkJICAg c2l6ZW9mKGNsaWVudF9yZXF1ZXN0LT5wYXNzcGhyYXNlKSwKKy0JCQkJCSAgIE5VTEwpOworLQl9 CistCWlmIChydmFsID09IC0xKSB7CistCSAgICB2ZXJyb3JfcHJpbnRfZXJyb3Ioc3RkZXJyKTsK KysgICAgICAgIGludCBydmFsOworKyAgICAgICAgaWYgKHJlYWRfcGFzc3dkX2Zyb21fc3RkaW4p IHsKKysgICAgICAgICAgICBydmFsID0gbXlwcm94eV9yZWFkX3Bhc3NwaHJhc2Vfc3RkaW4oCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X3JlcXVlc3QtPnBhc3NwaHJhc2UsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGNsaWVudF9yZXF1ZXN0LT5wYXNzcGhy YXNlKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKysgICAgICAgIH0gZWxz ZSB7CisrICAgICAgICAgICAgcnZhbCA9IG15cHJveHlfcmVhZF9wYXNzcGhyYXNlKGNsaWVudF9y ZXF1ZXN0LT5wYXNzcGhyYXNlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaXplb2YoY2xpZW50X3JlcXVlc3QtPnBhc3NwaHJhc2UpLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKysgICAgICAgIH0KKysgICAg ICAgIGlmIChydmFsID09IC0xKSB7CisrICAgICAgICAgICAgdmVycm9yX3ByaW50X2Vycm9yKHN0 ZGVycik7CisgICAgICAgICAgICAgZ290byBlcnJvcjsKKy0JfQorKyAgICAgICAgfQorICAgICB9 CisgCisgICAgIGlmIChjbGllbnRfcmVxdWVzdC0+dXNlcm5hbWUgPT0gTlVMTCkgeyAvKiBzZXQg ZGVmYXVsdCB1c2VybmFtZSAqLworLQlpZiAoZG5fYXNfdXNlcm5hbWUpIHsKKy0JICAgIGlmIChj bGllbnRfcmVxdWVzdC0+YXV0aHpjcmVkcykgeworLQkJaWYgKHNzbF9nZXRfYmFzZV9zdWJqZWN0 X2ZpbGUoY2xpZW50X3JlcXVlc3QtPmF1dGh6Y3JlZHMsCistCQkJCQkgICAgICAmY2xpZW50X3Jl cXVlc3QtPnVzZXJuYW1lKSkgeworLQkJICAgIGZwcmludGYoc3RkZXJyLCAiQ2Fubm90IGdldCBz dWJqZWN0IG5hbWUgZnJvbSAlc1xuIiwKKy0JCQkgICAgY2xpZW50X3JlcXVlc3QtPmF1dGh6Y3Jl ZHMpOworKyAgICAgICAgaWYgKGRuX2FzX3VzZXJuYW1lKSB7CisrICAgICAgICAgICAgaWYgKGNs aWVudF9yZXF1ZXN0LT5hdXRoemNyZWRzKSB7CisrICAgICAgICAgICAgICAgIGlmIChzc2xfZ2V0 X2Jhc2Vfc3ViamVjdF9maWxlKGNsaWVudF9yZXF1ZXN0LT5hdXRoemNyZWRzLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2xpZW50X3JlcXVlc3QtPnVz ZXJuYW1lKSkgeworKyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJDYW5ub3Qg Z2V0IHN1YmplY3QgbmFtZSBmcm9tICVzXG4iLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjbGllbnRfcmVxdWVzdC0+YXV0aHpjcmVkcyk7CisgICAgICAgICAgICAgICAgICAgICBnb3Rv IGVycm9yOworLQkJfQorLQkgICAgfSBlbHNlIHsKKy0JCWlmIChzc2xfZ2V0X2Jhc2Vfc3ViamVj dF9maWxlKE5VTEwsCistCQkJCQkgICAgICAmY2xpZW50X3JlcXVlc3QtPnVzZXJuYW1lKSkgewor LQkJICAgIGZwcmludGYoc3RkZXJyLAorLQkJCSAgICAiQ2Fubm90IGdldCBzdWJqZWN0IG5hbWUg ZnJvbSB5b3VyIGNlcnRpZmljYXRlXG4iKTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAg ICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIGlmIChzc2xfZ2V0X2Jhc2Vfc3ViamVjdF9m aWxlKE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZjbGllbnRfcmVxdWVzdC0+dXNlcm5hbWUpKSB7CisrICAgICAgICAgICAgICAgICAgICBmcHJp bnRmKHN0ZGVyciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBnZXQgc3Vi amVjdCBuYW1lIGZyb20geW91ciBjZXJ0aWZpY2F0ZVxuIik7CisgICAgICAgICAgICAgICAgICAg ICBnb3RvIGVycm9yOworLQkJfQorLQkgICAgfQorLQl9IGVsc2UgeworLQkgICAgY2hhciAqdXNl cm5hbWUgPSBOVUxMOworLQkgICAgaWYgKCEodXNlcm5hbWUgPSBnZXRlbnYoIkxPR05BTUUiKSkp IHsKKy0JCWZwcmludGYoc3RkZXJyLCAiUGxlYXNlIHNwZWNpZnkgYSB1c2VybmFtZS5cbiIpOwor KyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKyAgICAgICAgfSBlbHNlIHsKKysg ICAgICAgICAgICBjaGFyICp1c2VybmFtZSA9IE5VTEw7CisrICAgICAgICAgICAgaWYgKCEodXNl cm5hbWUgPSBnZXRlbnYoIkxPR05BTUUiKSkpIHsKKysgICAgICAgICAgICAgICAgZnByaW50Zihz dGRlcnIsICJQbGVhc2Ugc3BlY2lmeSBhIHVzZXJuYW1lLlxuIik7CisgICAgICAgICAgICAgICAg IGdvdG8gZXJyb3I7CistCSAgICB9CistCSAgICBjbGllbnRfcmVxdWVzdC0+dXNlcm5hbWUgPSBz dHJkdXAodXNlcm5hbWUpOworLQl9CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGNsaWVu dF9yZXF1ZXN0LT51c2VybmFtZSA9IHN0cmR1cCh1c2VybmFtZSk7CisrICAgICAgICB9CisgICAg IH0KKyAKKyAgICAgLyogU2VyaWFsaXplIGNsaWVudCByZXF1ZXN0IG9iamVjdCAqLworICAgICBy ZXF1ZXN0bGVuID0gbXlwcm94eV9zZXJpYWxpemVfcmVxdWVzdF9leChjbGllbnRfcmVxdWVzdCwg JnJlcXVlc3RfYnVmZmVyKTsKKyAgICAgaWYgKHJlcXVlc3RsZW4gPCAwKSB7CistCXZlcnJvcl9w cmludF9lcnJvcihzdGRlcnIpOworKyAgICAgICAgdmVycm9yX3ByaW50X2Vycm9yKHN0ZGVycik7 CisgICAgICAgICBnb3RvIGVycm9yOworICAgICB9CisgCisgICAgIC8qIFNlbmQgcmVxdWVzdCB0 byB0aGUgbXlwcm94eS1zZXJ2ZXIgKi8KKyAgICAgaWYgKG15cHJveHlfc2VuZChzb2NrZXRfYXR0 cnMsIHJlcXVlc3RfYnVmZmVyLCByZXF1ZXN0bGVuKSA8IDApIHsKKy0JdmVycm9yX3ByaW50X2Vy cm9yKHN0ZGVycik7CisrICAgICAgICB2ZXJyb3JfcHJpbnRfZXJyb3Ioc3RkZXJyKTsKKyAgICAg ICAgIGdvdG8gZXJyb3I7CisgICAgIH0KKyAgICAgZnJlZShyZXF1ZXN0X2J1ZmZlcik7CitAQCAt MzA4LDggKzMwOCw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAgICAgLyogQWNj ZXB0IGRlbGVnYXRlZCBjcmVkZW50aWFscyBmcm9tIHNlcnZlciAqLworICAgICBkZWxldGVmaWxl ID0gMTsKKyAgICAgaWYgKG15cHJveHlfYWNjZXB0X2NyZWRlbnRpYWxzKHNvY2tldF9hdHRycywg ZGVsZWdmaWxlLAorLQkJCQkgICBzaXplb2YoZGVsZWdmaWxlKSkgPCAwKSB7CistCXZlcnJvcl9w cmludF9lcnJvcihzdGRlcnIpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2l6ZW9mKGRlbGVnZmlsZSkpIDwgMCkgeworKyAgICAgICAgdmVycm9yX3ByaW50X2Vycm9yKHN0 ZGVycik7CisgICAgICAgICBnb3RvIGVycm9yOworICAgICB9CisgCitAQCAtMzM4LDIyICszMzgs MjIgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorICAgICAvKiBTdG9yZSBmaWxlIGlu IHRydXN0ZWQgZGlyZWN0b3J5IGlmIHJlcXVlc3RlZCBhbmQgcmV0dXJuZWQgKi8KKyAgICAgaWYg KGNsaWVudF9yZXF1ZXN0LT53YW50X3RydXN0ZWRfY2VydHMpIHsKKyAgICAgICAgIGlmIChzZXJ2 ZXJfcmVzcG9uc2UtPnRydXN0ZWRfY2VydHMgIT0gTlVMTCkgeworLSAgICAgICAgICAgIGlmICht eXByb3h5X2luc3RhbGxfdHJ1c3RlZF9jZXJ0X2ZpbGVzKHNlcnZlcl9yZXNwb25zZS0+dHJ1c3Rl ZF9jZXJ0cykgIT0gMCkgeyAgICAgICAKKy0JCXZlcnJvcl9wcmludF9lcnJvcihzdGRlcnIpOwor LQkJZ290byBlcnJvcjsKKysgICAgICAgICAgICBpZiAobXlwcm94eV9pbnN0YWxsX3RydXN0ZWRf Y2VydF9maWxlcyhzZXJ2ZXJfcmVzcG9uc2UtPnRydXN0ZWRfY2VydHMpICE9IDApIHsKKysgICAg ICAgICAgICAgICAgdmVycm9yX3ByaW50X2Vycm9yKHN0ZGVycik7CisrICAgICAgICAgICAgICAg IGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgfSBlbHNlIHsKKy0JCWNoYXIgKnBhdGg7CistCQlw YXRoID0gZ2V0X3RydXN0ZWRfY2VydHNfcGF0aCgpOworKyAgICAgICAgICAgICAgICBjaGFyICpw YXRoOworKyAgICAgICAgICAgICAgICBwYXRoID0gZ2V0X3RydXN0ZWRfY2VydHNfcGF0aCgpOwor ICAgICAgICAgaWYgKHBhdGgpIHsKKyAgICAgICAgICAgICBwcmludGYoIlRydXN0IHJvb3RzIGhh dmUgYmVlbiBpbnN0YWxsZWQgaW4gJXMuXG4iLCBwYXRoKTsKKyAgICAgICAgICAgICBmcmVlKHBh dGgpOworICAgICAgICAgfQorLQkgICAgfQorKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgbXlwcm94eV9kZWJ1ZygiUmVxdWVzdGVkIHRydXN0ZWQgY2VydHMg YnV0IGRpZG4ndCBnZXQgYW55LlxuIik7CisgICAgICAgICB9CisgICAgIH0KKy0gICAgCisrCisg ICAgIHJldHZhbCA9IDA7CisgCisgZXJyb3I6CitAQCAtMzcyLDg5ICszNzIsODkgQEAgZXJyb3I6 CisgICAgIHJldHVybiByZXR2YWw7CisgfQorIAorLXZvaWQgCistaW5pdF9hcmd1bWVudHMoaW50 IGFyZ2MsIAorLQkgICAgICAgY2hhciAqYXJndltdLCAKKy0JICAgICAgIG15cHJveHlfc29ja2V0 X2F0dHJzX3QgKmF0dHJzLAorLQkgICAgICAgbXlwcm94eV9yZXF1ZXN0X3QgKnJlcXVlc3QpIAor LXsgICAKKyt2b2lkCisraW5pdF9hcmd1bWVudHMoaW50IGFyZ2MsCisrICAgICAgICAgICAgICAg Y2hhciAqYXJndltdLAorKyAgICAgICAgICAgICAgIG15cHJveHlfc29ja2V0X2F0dHJzX3QgKmF0 dHJzLAorKyAgICAgICAgICAgICAgIG15cHJveHlfcmVxdWVzdF90ICpyZXF1ZXN0KQorK3sKKyAg ICAgZXh0ZXJuIGNoYXIgKm9wdGFyZzsKKyAgICAgaW50IGFyZzsKKyAKKy0gICAgd2hpbGUoKGFy ZyA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsIHNob3J0X29wdGlvbnMsIAorLQkJCQkgbG9uZ19v cHRpb25zLCBOVUxMKSkgIT0gRU9GKSAKKysgICAgd2hpbGUoKGFyZyA9IGdldG9wdF9sb25nKGFy Z2MsIGFyZ3YsIHNob3J0X29wdGlvbnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gRU9GKQorICAgICB7CistICAgICAgICBzd2l0Y2go YXJnKSAKKysgICAgICAgIHN3aXRjaChhcmcpCisgICAgICAgICB7CistICAgICAgICBjYXNlICdz JzogCS8qIHBzaG9zdCBuYW1lICovCistCSAgICBhdHRycy0+cHNob3N0ID0gc3RyZHVwKG9wdGFy Zyk7CisrICAgICAgICBjYXNlICdzJzogICAgICAgLyogcHNob3N0IG5hbWUgKi8KKysgICAgICAg ICAgICBhdHRycy0+cHNob3N0ID0gc3RyZHVwKG9wdGFyZyk7CisgICAgICAgICAgICAgYnJlYWs7 CistICAgICAgICBjYXNlICdwJzogCS8qIHBzcG9ydCAqLworKyAgICAgICAgY2FzZSAncCc6ICAg ICAgIC8qIHBzcG9ydCAqLworICAgICAgICAgICAgIGF0dHJzLT5wc3BvcnQgPSBhdG9pKG9wdGFy Zyk7CisgICAgICAgICAgICAgYnJlYWs7CistCWNhc2UgJ2gnOiAJLyogcHJpbnQgaGVscCBhbmQg ZXhpdCAqLworLSAgICAgICAgY2FzZSAndSc6IAkvKiBwcmludCBoZWxwIGFuZCBleGl0ICovCisr ICAgICAgICBjYXNlICdoJzogICAgICAgLyogcHJpbnQgaGVscCBhbmQgZXhpdCAqLworKyAgICAg ICAgY2FzZSAndSc6ICAgICAgIC8qIHByaW50IGhlbHAgYW5kIGV4aXQgKi8KKyAgICAgICAgICAg ICBwcmludGYoIiVzIiwgdXNhZ2UpOworICAgICAgICAgICAgIGV4aXQoMCk7CisgICAgICAgICAg ICAgYnJlYWs7CistICAgICAgICBjYXNlICdsJzoJLyogdXNlcm5hbWUgKi8KKysgICAgICAgIGNh c2UgJ2wnOiAgICAgICAvKiB1c2VybmFtZSAqLworICAgICAgICAgICAgIHJlcXVlc3QtPnVzZXJu YW1lID0gc3RyZHVwKG9wdGFyZyk7CisgICAgICAgICAgICAgYnJlYWs7CistCWNhc2UgJ2EnOiAg ICAgICAvKiBzcGVjaWFsIGF1dGhvcml6YXRpb24gKi8KKy0JICAgIHJlcXVlc3QtPmF1dGh6Y3Jl ZHMgPSBzdHJkdXAob3B0YXJnKTsKKy0JICAgIHVzZV9lbXB0eV9wYXNzd2QgPSAxOworLQkgICAg YnJlYWs7CistCWNhc2UgJ24nOiAgICAgICAvKiBubyBwYXNzcGhyYXNlICovCistCSAgICB1c2Vf ZW1wdHlfcGFzc3dkID0gMTsKKy0JICAgIGJyZWFrOworLQljYXNlICd2JzoKKy0JICAgIG15cHJv eHlfZGVidWdfc2V0X2xldmVsKDEpOworLQkgICAgYnJlYWs7CisrICAgICAgICBjYXNlICdhJzog ICAgICAgLyogc3BlY2lhbCBhdXRob3JpemF0aW9uICovCisrICAgICAgICAgICAgcmVxdWVzdC0+ YXV0aHpjcmVkcyA9IHN0cmR1cChvcHRhcmcpOworKyAgICAgICAgICAgIHVzZV9lbXB0eV9wYXNz d2QgPSAxOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSAnbic6ICAgICAgIC8q IG5vIHBhc3NwaHJhc2UgKi8KKysgICAgICAgICAgICB1c2VfZW1wdHlfcGFzc3dkID0gMTsKKysg ICAgICAgICAgICBicmVhazsKKysgICAgICAgIGNhc2UgJ3YnOgorKyAgICAgICAgICAgIG15cHJv eHlfZGVidWdfc2V0X2xldmVsKDEpOworKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgY2Fz ZSAnVic6ICAgICAgIC8qIHByaW50IHZlcnNpb24gYW5kIGV4aXQgKi8KKyAgICAgICAgICAgICBw cmludGYoIiVzIiwgdmVyc2lvbik7CisgICAgICAgICAgICAgZXhpdCgwKTsKKyAgICAgICAgICAg ICBicmVhazsKKy0JY2FzZSAnZCc6ICAgICAgIC8qIHVzZSB0aGUgY2VydGlmaWNhdGUgc3ViamVj dCAoRE4pIGFzIHRoZSBkZWZhdWx0CistCQkgICAgICAgICAgIHVzZXJuYW1lIGluc3RlYWQgb2Yg TE9HTkFNRSAqLworLQkgICAgZG5fYXNfdXNlcm5hbWUgPSAxOworLQkgICAgYnJlYWs7CistCWNh c2UgJ2snOiAgICAgICAvKiBjcmVkZW50aWFsIG5hbWUgKi8KKy0JICAgIHJlcXVlc3QtPmNyZWRu YW1lID0gc3RyZHVwIChvcHRhcmcpOworLQkgICAgYnJlYWs7CistCWNhc2UgJ1MnOgorLQkgICAg cmVhZF9wYXNzd2RfZnJvbV9zdGRpbiA9IDE7CistCSAgICBicmVhazsKKy0JY2FzZSAnVCc6Cist CSAgICByZXF1ZXN0LT53YW50X3RydXN0ZWRfY2VydHMgPSAxOworKyAgICAgICAgY2FzZSAnZCc6 ICAgICAgIC8qIHVzZSB0aGUgY2VydGlmaWNhdGUgc3ViamVjdCAoRE4pIGFzIHRoZSBkZWZhdWx0 CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWUgaW5zdGVhZCBvZiBMT0dOQU1F ICovCisrICAgICAgICAgICAgZG5fYXNfdXNlcm5hbWUgPSAxOworKyAgICAgICAgICAgIGJyZWFr OworKyAgICAgICAgY2FzZSAnayc6ICAgICAgIC8qIGNyZWRlbnRpYWwgbmFtZSAqLworKyAgICAg ICAgICAgIHJlcXVlc3QtPmNyZWRuYW1lID0gc3RyZHVwIChvcHRhcmcpOworKyAgICAgICAgICAg IGJyZWFrOworKyAgICAgICAgY2FzZSAnUyc6CisrICAgICAgICAgICAgcmVhZF9wYXNzd2RfZnJv bV9zdGRpbiA9IDE7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlICdUJzoKKysg ICAgICAgICAgICByZXF1ZXN0LT53YW50X3RydXN0ZWRfY2VydHMgPSAxOworICAgICAgICAgICAg IG15cHJveHlfZGVidWcoIlJlcXVlc3RpbmcgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMuXG4iKTsKKy0J ICAgIGJyZWFrOworKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgY2FzZSAnYyc6ICAgICAg IC8qIGNyZWRlbnRpYWwgZmlsZSBuYW1lICovCistCSAgICBpZiAoY2VydGZpbGUpIGZyZWUoY2Vy dGZpbGUpOworKyAgICAgICAgICAgIGlmIChjZXJ0ZmlsZSkgZnJlZShjZXJ0ZmlsZSk7CisgICAg ICAgICAgICAgY2VydGZpbGUgPSBzdHJkdXAob3B0YXJnKTsKKyAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgIGNhc2UgJ3knOiAgICAgICAvKiBrZXkgZmlsZSBuYW1lICovCistCSAgICBpZiAo a2V5ZmlsZSkgZnJlZShrZXlmaWxlKTsKKysgICAgICAgICAgICBpZiAoa2V5ZmlsZSkgZnJlZShr ZXlmaWxlKTsKKyAgICAgICAgICAgICBrZXlmaWxlID0gc3RyZHVwKG9wdGFyZyk7CisgICAgICAg ICAgICAgYnJlYWs7CistICAgICAgICBkZWZhdWx0OiAgICAgICAgLyogcHJpbnQgdXNhZ2UgYW5k IGV4aXQgKi8gCisrICAgICAgICBkZWZhdWx0OiAgICAgICAgLyogcHJpbnQgdXNhZ2UgYW5kIGV4 aXQgKi8KKyAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgdXNhZ2UpOworLQkgICAg ZXhpdCgxKTsKKy0JICAgIGJyZWFrOwkKKysgICAgICAgICAgICBleGl0KDEpOworKyAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgfQorICAgICB9CisgCisgICAgIC8qIENoZWNrIHRvIHNlZSBp ZiBteXByb3h5LXNlcnZlciBzcGVjaWZpZWQgKi8KKyAgICAgaWYgKGF0dHJzLT5wc2hvc3QgPT0g TlVMTCkgeworLQlmcHJpbnRmKHN0ZGVyciwgIlVuc3BlY2lmaWVkIG15cHJveHktc2VydmVyLiAg U2V0IHRoZSBNWVBST1hZX1NFUlZFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0b1xudGhlIGhvc3Ru YW1lIG9mIHRoZSBteXByb3h5LXNlcnZlciBvciBydW4gd2l0aCAnLXMgc2VydmVyLWhvc3RuYW1l Jy5cbiIpOworLQlleGl0KDEpOworKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbnNwZWNpZmll ZCBteXByb3h5LXNlcnZlci4gIFNldCB0aGUgTVlQUk9YWV9TRVJWRVIgZW52aXJvbm1lbnQgdmFy aWFibGUgdG9cbnRoZSBob3N0bmFtZSBvZiB0aGUgbXlwcm94eS1zZXJ2ZXIgb3IgcnVuIHdpdGgg Jy1zIHNlcnZlci1ob3N0bmFtZScuXG4iKTsKKysgICAgICAgIGV4aXQoMSk7CisgICAgIH0KKyAK KyAgICAgcmV0dXJuOworIH0KKyAKKyBpbnQKKy1zdG9yZV9jcmVkZW50aWFsKCBjaGFyICpkZWxl Z2ZpbGUsIAorLSAgICAgICAgICAgICAgICAgIGNoYXIgKmNlcnRmaWxlLCAKKytzdG9yZV9jcmVk ZW50aWFsKCBjaGFyICpkZWxlZ2ZpbGUsCisrICAgICAgICAgICAgICAgICAgY2hhciAqY2VydGZp bGUsCisgICAgICAgICAgICAgICAgICAgY2hhciAqa2V5ZmlsZSApCisgeworICAgICB1bnNpZ25l ZCBjaGFyICAgICAgICppbnB1dF9idWZmZXIgICAgICAgPSBOVUxMOworQEAgLTQ4OCw3ICs0ODgs NyBAQCBlcnJvcjoKKyB9CisgCisgaW50Cistd3JpdGVfY2VydCggY2hhciAgICAgICAqcGF0aCwg Cisrd3JpdGVfY2VydCggY2hhciAgICAgICAqcGF0aCwKKyAgICAgICAgICAgICBjb25zdCBjaGFy ICpidWZmZXIgKQorIHsKKyAgICAgaW50ICAgICAgICAgIGZkID0gMDsKK0BAIC01NzAsNyArNTcw LDcgQEAgZXJyb3I6CisgfQorIAorIGludAorLXdyaXRlX2tleSggY2hhciAgICAgICAqcGF0aCwg Cisrd3JpdGVfa2V5KCBjaGFyICAgICAgICpwYXRoLAorICAgICAgICAgICAgY29uc3QgY2hhciAq YnVmZmVyICkKKyB7CisgICAgIGludCAgICAgICAgICBmZCA9IDA7CitAQCAtNjA3LDI0ICs2MDcs MjQgQEAgd3JpdGVfa2V5KCBjaGFyICAgICAgICpwYXRoLAorIAorICAgICAvKiBXcml0ZSB0aGUg a2V5LiAqLworICAgICBpZiAoKGtleXN0YXJ0ID0gc3Ryc3RyKGJ1ZmZlciwgQkVHSU5LRVkxKSkg PT0gTlVMTAorLQkmJiAoa2V5c3RhcnQgPSBzdHJzdHIoYnVmZmVyLCBCRUdJTktFWTIpKSA9PSBO VUxMCistCSYmIChrZXlzdGFydCA9IHN0cnN0cihidWZmZXIsIEJFR0lOS0VZMykpID09IE5VTEwp CisrICAgICAgICAmJiAoa2V5c3RhcnQgPSBzdHJzdHIoYnVmZmVyLCBCRUdJTktFWTIpKSA9PSBO VUxMCisrICAgICAgICAmJiAoa2V5c3RhcnQgPSBzdHJzdHIoYnVmZmVyLCBCRUdJTktFWTMpKSA9 PSBOVUxMKQorICAgICB7CisgICAgICAgZnByaW50ZihzdGRlcnIsICJDUkVES0VZIGRvZXNuJ3Qg Y29udGFpbiAnJXMnIG5vciAnJXMnIG5vciAnJXMnLlxuIiwKKy0JCQkJQkVHSU5LRVkxLCBCRUdJ TktFWTIsIEJFR0lOS0VZMyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCRUdJ TktFWTEsIEJFR0lOS0VZMiwgQkVHSU5LRVkzKTsKKyAgICAgICBnb3RvIGVycm9yOworICAgICB9 CisgCisgICAgIGlmICgoa2V5ZW5kID0gc3Ryc3RyKGtleXN0YXJ0LCBFTkRLRVkxKSkgIT0gTlVM TCkKKy0Ja2V5ZW5kICs9IHN0cmxlbihFTkRLRVkxKTsKKysgICAgICAgIGtleWVuZCArPSBzdHJs ZW4oRU5ES0VZMSk7CisgICAgIGVsc2UgaWYgKChrZXllbmQgPSBzdHJzdHIoa2V5c3RhcnQsIEVO REtFWTIpKSAhPSBOVUxMKQorLQlrZXllbmQgKz0gc3RybGVuKEVOREtFWTIpOworKyAgICAgICAg a2V5ZW5kICs9IHN0cmxlbihFTkRLRVkyKTsKKyAgICAgZWxzZSBpZiAoKGtleWVuZCA9IHN0cnN0 cihrZXlzdGFydCwgRU5ES0VZMykpICE9IE5VTEwpCistCWtleWVuZCArPSBzdHJsZW4oRU5ES0VZ Myk7CisrICAgICAgICBrZXllbmQgKz0gc3RybGVuKEVOREtFWTMpOworICAgICBlbHNlCisgICAg IHsKKyAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkNSRURLRVkgZG9lc24ndCBjb250YWluICclcycg bm9yICclcycgbm9yICclcycuXG4iLAorLQkJCQlFTkRLRVkxLCBFTkRLRVkyLCBFTkRLRVkzKTsK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVOREtFWTEsIEVOREtFWTIsIEVOREtF WTMpOworICAgICAgIGdvdG8gZXJyb3I7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9teXByb3h5 L3NvdXJjZS9teXByb3h5X29jc3AuYyBiL215cHJveHkvc291cmNlL215cHJveHlfb2NzcC5jCitp bmRleCBjZDU4NGEzZjMuLjQxMTgxOTg1MiAxMDA2NDQKKy0tLSBhL215cHJveHkvc291cmNlL215 cHJveHlfb2NzcC5jCisrKysgYi9teXByb3h5L3NvdXJjZS9teXByb3h5X29jc3AuYworQEAgLTQs MTkgKzQsMTkgQEAKKyAgKgorICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy0gKiBt ZXQ6IAorKyAqIG1ldDoKKyAgKgorICAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICogICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLSAqIAorKyAq CisgICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo ZSBhYm92ZSBjb3B5cmlnaHQKKyAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICogICAgZG9jdW1lbnRhdGlv biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K Ky0gKiAKKysgKgorICAqIDMuIE5laXRoZXIgdGhlIG5hbWVzIG9mIHRoZSBhdXRob3JzIG5vciB0 aGUgbmFtZXMgb2YgdGhlCisgICogICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAgKiAgICB0aGlzIHNvZnR3YXJl IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLSAqIAorKyAqCisg ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E IENPTlRSSUJVVE9SUworICAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCitAQCAtODYsNyAr ODYsNyBAQCBteXByb3h5X29jc3Bfc2V0X3Jlc3BvbmRlcl9jZXJ0KGNvbnN0IGNoYXIgKnBhdGgp IHsKKyAgICAgaW50ICAgICAgY291bnQ7CisgICAgIGludCAgICAgIHJ2YWwgPSAtMTsKKyAKKy0J c2tfWDUwOV9wb3BfZnJlZShyZXNwb25kZXJfY2VydCwgWDUwOV9mcmVlKTsKKysgICAgc2tfWDUw OV9wb3BfZnJlZShyZXNwb25kZXJfY2VydCwgWDUwOV9mcmVlKTsKKyAgICAgcmVzcG9uZGVyX2Nl cnQgPSBOVUxMOworIAorICAgICBpbiA9IEJJT19uZXcoQklPX3NfZmlsZSgpKTsKK0BAIC0zNjUs NyArMzY1LDcgQEAgaW50IG15cHJveHlfb2NzcF92ZXJpZnkoWDUwOSAqY2VydCwgWDUwOSAqaXNz dWVyKSB7CisgICBpZiAoIXJlc3BvbmRlcl9jZXJ0IHx8CisgICAgICAgKHJjID0gT0NTUF9iYXNp Y192ZXJpZnkoYmFzaWMsIHJlc3BvbmRlcl9jZXJ0LCBzdG9yZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPQ1NQX1RSVVNUT1RIRVIpKSA8PSAwKQorLSAgICAgIGlmICgocmMgPSBP Q1NQX2Jhc2ljX3ZlcmlmeShiYXNpYywgTlVMTCwgc3RvcmUsIDApKSA8PSAwKSAKKysgICAgICBp ZiAoKHJjID0gT0NTUF9iYXNpY192ZXJpZnkoYmFzaWMsIE5VTEwsIHN0b3JlLCAwKSkgPD0gMCkK KyAgICAgICAgICAgZ290byBlbmQ7CisgCisgICBpZiAoIU9DU1BfcmVzcF9maW5kX3N0YXR1cyhi YXNpYywgaWQsICZzdGF0dXMsICZyZWFzb24sICZwcm9kdWNlZEF0LAorZGlmZiAtLWdpdCBhL215 cHJveHkvc291cmNlL215cHJveHlfb2NzcF9haWEuYyBiL215cHJveHkvc291cmNlL215cHJveHlf b2NzcF9haWEuYworaW5kZXggOTFlZTMwNmIxLi5jMDFkODVlNGYgMTAwNjQ0CistLS0gYS9teXBy b3h5L3NvdXJjZS9teXByb3h5X29jc3BfYWlhLmMKKysrKyBiL215cHJveHkvc291cmNlL215cHJv eHlfb2NzcF9haWEuYworQEAgLTM3LDc3ICszNyw3NyBAQAorIAorIHN0YXRpYyBBVVRIT1JJVFlf SU5GT19BQ0NFU1MgKgorIG15X2FpYV9nZXQoWDUwOV9FWFRFTlNJT04gKmV4dCkgeworLQljb25z dCBYNTA5VjNfRVhUX01FVEhPRCAqbWV0aG9kID0gTlVMTDsKKy0Jdm9pZCAqZXh0X3N0ciA9IE5V TEw7CistCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnA7CistCWludCBsZW47CistCistCWlmIChleHQg PT0gTlVMTCkgeworLQkJdmVycm9yX3B1dF9zdHJpbmcoIm15X2FpYV9nZXQ6IGV4dCBpcyBOVUxM Iik7CistCQlyZXR1cm4oTlVMTCk7CistCX0KKy0KKy0JbWV0aG9kID0gWDUwOVYzX0VYVF9nZXQo ZXh0KTsKKy0JaWYgKG1ldGhvZCA9PSBOVUxMKSB7CistCQlteXByb3h5X2RlYnVnKCJteV9haWFf Z2V0OiBjYW5ub3QgZ2V0IG1ldGhvZCIpOworLQkJcmV0dXJuKE5VTEwpOworLQl9CistCistCXAg PSBYNTA5X0VYVEVOU0lPTl9nZXRfZGF0YShleHQpLT5kYXRhOworLQlsZW4gPSBYNTA5X0VYVEVO U0lPTl9nZXRfZGF0YShleHQpLT5sZW5ndGg7CistCWlmIChtZXRob2QtPml0KSB7CistCQlleHRf c3RyID0gQVNOMV9pdGVtX2QyaShOVUxMLCAmcCwgbGVuLCBBU04xX0lURU1fcHRyKG1ldGhvZC0+ aXQpKTsKKy0JfSBlbHNlIHsKKy0JCWV4dF9zdHIgPSBtZXRob2QtPmQyaShOVUxMLCAmcCwgbGVu KTsKKy0JfQorLQlpZiAoZXh0X3N0ciA9PSBOVUxMKSB7CistCQlteXByb3h5X2RlYnVnKCJteV9h aWFfZ2V0OiBudWxsIGV4dF9zdHIhIik7CistCQlyZXR1cm4oTlVMTCk7CistCX0KKy0KKy0JcmV0 dXJuKChBVVRIT1JJVFlfSU5GT19BQ0NFU1MqKWV4dF9zdHIpOworKyAgICBjb25zdCBYNTA5VjNf RVhUX01FVEhPRCAqbWV0aG9kID0gTlVMTDsKKysgICAgdm9pZCAqZXh0X3N0ciA9IE5VTEw7Cisr ICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnA7CisrICAgIGludCBsZW47CisrCisrICAgIGlmIChl eHQgPT0gTlVMTCkgeworKyAgICAgICAgdmVycm9yX3B1dF9zdHJpbmcoIm15X2FpYV9nZXQ6IGV4 dCBpcyBOVUxMIik7CisrICAgICAgICByZXR1cm4oTlVMTCk7CisrICAgIH0KKysKKysgICAgbWV0 aG9kID0gWDUwOVYzX0VYVF9nZXQoZXh0KTsKKysgICAgaWYgKG1ldGhvZCA9PSBOVUxMKSB7Cisr ICAgICAgICBteXByb3h5X2RlYnVnKCJteV9haWFfZ2V0OiBjYW5ub3QgZ2V0IG1ldGhvZCIpOwor KyAgICAgICAgcmV0dXJuKE5VTEwpOworKyAgICB9CisrCisrICAgIHAgPSBYNTA5X0VYVEVOU0lP Tl9nZXRfZGF0YShleHQpLT5kYXRhOworKyAgICBsZW4gPSBYNTA5X0VYVEVOU0lPTl9nZXRfZGF0 YShleHQpLT5sZW5ndGg7CisrICAgIGlmIChtZXRob2QtPml0KSB7CisrICAgICAgICBleHRfc3Ry ID0gQVNOMV9pdGVtX2QyaShOVUxMLCAmcCwgbGVuLCBBU04xX0lURU1fcHRyKG1ldGhvZC0+aXQp KTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIGV4dF9zdHIgPSBtZXRob2QtPmQyaShOVUxMLCAm cCwgbGVuKTsKKysgICAgfQorKyAgICBpZiAoZXh0X3N0ciA9PSBOVUxMKSB7CisrICAgICAgICBt eXByb3h5X2RlYnVnKCJteV9haWFfZ2V0OiBudWxsIGV4dF9zdHIhIik7CisrICAgICAgICByZXR1 cm4oTlVMTCk7CisrICAgIH0KKysKKysgICAgcmV0dXJuKChBVVRIT1JJVFlfSU5GT19BQ0NFU1Mq KWV4dF9zdHIpOworIH0KKyAKKyBzdGF0aWMgdm9pZAorIG15X2FpYV9mcmVlKFg1MDlfRVhURU5T SU9OICpleHQsIEFVVEhPUklUWV9JTkZPX0FDQ0VTUyogYWlhKSB7CistCWNvbnN0IFg1MDlWM19F WFRfTUVUSE9EICptZXRob2QgPSBOVUxMOworKyAgICBjb25zdCBYNTA5VjNfRVhUX01FVEhPRCAq bWV0aG9kID0gTlVMTDsKKyAKKy0JaWYgKGV4dCA9PSBOVUxMKSB7CistCQl2ZXJyb3JfcHV0X3N0 cmluZygibXlfYWlhX2ZyZWU6IGV4dCBpcyBOVUxMIik7CistCQlyZXR1cm47CistCX0KKysgICAg aWYgKGV4dCA9PSBOVUxMKSB7CisrICAgICAgICB2ZXJyb3JfcHV0X3N0cmluZygibXlfYWlhX2Zy ZWU6IGV4dCBpcyBOVUxMIik7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKyAKKy0JbWV0aG9k ID0gWDUwOVYzX0VYVF9nZXQoZXh0KTsKKy0JaWYgKG1ldGhvZCA9PSBOVUxMKSByZXR1cm47Cisr ICAgIG1ldGhvZCA9IFg1MDlWM19FWFRfZ2V0KGV4dCk7CisrICAgIGlmIChtZXRob2QgPT0gTlVM TCkgcmV0dXJuOworIAorLQlpZiAobWV0aG9kLT5pdCkgeworLQkJQVNOMV9pdGVtX2ZyZWUoKHZv aWQqKWFpYSwgQVNOMV9JVEVNX3B0cihtZXRob2QtPml0KSk7CistCX0gZWxzZSB7CistCQltZXRo b2QtPmV4dF9mcmVlKGFpYSk7CistCX0KKysgICAgaWYgKG1ldGhvZC0+aXQpIHsKKysgICAgICAg IEFTTjFfaXRlbV9mcmVlKCh2b2lkKilhaWEsIEFTTjFfSVRFTV9wdHIobWV0aG9kLT5pdCkpOwor KyAgICB9IGVsc2UgeworKyAgICAgICAgbWV0aG9kLT5leHRfZnJlZShhaWEpOworKyAgICB9Cisg fQorIAorIGNoYXIgKgorIG15cHJveHlfZ2V0X2FpYV9vY3NwX3VyaShYNTA5ICpjZXJ0KQorIHsK Ky0JaW50IGxvYyA9IC0xOworKyAgICBpbnQgbG9jID0gLTE7CisgICAgIGNoYXIgKnVyaSA9IE5V TEw7CisgCistCWlmIChjZXJ0ID09IE5VTEwpIHJldHVybigwKTsKKysgICAgaWYgKGNlcnQgPT0g TlVMTCkgcmV0dXJuKDApOworIAorLQlmb3IgKGxvYyA9IFg1MDlfZ2V0X2V4dF9ieV9OSUQoY2Vy dCwgTklEX2luZm9fYWNjZXNzLCBsb2MpOworKyAgICBmb3IgKGxvYyA9IFg1MDlfZ2V0X2V4dF9i eV9OSUQoY2VydCwgTklEX2luZm9fYWNjZXNzLCBsb2MpOworICAgICAgICAgIGxvYyA+PSAwOwor ICAgICAgICAgIGxvYyA9IFg1MDlfZ2V0X2V4dF9ieV9OSUQoY2VydCwgTklEX2luZm9fYWNjZXNz LCBsb2MpKSB7CisgCistCQlYNTA5X0VYVEVOU0lPTgkqeGU7CistICAgICAgICBBVVRIT1JJVFlf SU5GT19BQ0NFU1MJKmFpYTsKKysgICAgICAgIFg1MDlfRVhURU5TSU9OICAqeGU7CisrICAgICAg ICBBVVRIT1JJVFlfSU5GT19BQ0NFU1MgICAqYWlhOworICAgICAgICAgaW50IGs7CisgCistCQl4 ZSA9IFg1MDlfZ2V0X2V4dChjZXJ0LCBsb2MpOworLQkJaWYgKHhlID09IE5VTEwpIHsKKy0JCQlt eXByb3h5X2RlYnVnKCJnZXRfYWlhX29jc3BfdXJpOiBjYW5ub3QgZ2V0IHg1MDkgZXh0ZW5zaW9u Iik7CistCQkJY29udGludWU7CistCQl9CisrICAgICAgICB4ZSA9IFg1MDlfZ2V0X2V4dChjZXJ0 LCBsb2MpOworKyAgICAgICAgaWYgKHhlID09IE5VTEwpIHsKKysgICAgICAgICAgICBteXByb3h5 X2RlYnVnKCJnZXRfYWlhX29jc3BfdXJpOiBjYW5ub3QgZ2V0IHg1MDkgZXh0ZW5zaW9uIik7Cisr ICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICB9CisgCisgICAgICAgICBhaWEgPSBteV9h aWFfZ2V0KHhlKTsKKyAgICAgICAgIGlmIChhaWEgPT0gTlVMTCkgY29udGludWU7CitAQCAtMTI5 LDggKzEyOSw4IEBAIG15cHJveHlfZ2V0X2FpYV9vY3NwX3VyaShYNTA5ICpjZXJ0KQorIAorICAg ICAgICAgbXlfYWlhX2ZyZWUoeGUsIGFpYSk7CisgCistCQlpZiAodXJpKSBicmVhazsKKy0JfQor KyAgICAgICAgaWYgKHVyaSkgYnJlYWs7CisrICAgIH0KKyAKKyAgICAgcmV0dXJuIHVyaTsKKyB9 CitkaWZmIC0tZ2l0IGEvbXlwcm94eS9zb3VyY2UvbXlwcm94eV9zdG9yZS5jIGIvbXlwcm94eS9z b3VyY2UvbXlwcm94eV9zdG9yZS5jCitpbmRleCAxOWQwMmUyZjUuLmJkYzQ4MmJkMSAxMDA2NDQK Ky0tLSBhL215cHJveHkvc291cmNlL215cHJveHlfc3RvcmUuYworKysrIGIvbXlwcm94eS9zb3Vy Y2UvbXlwcm94eV9zdG9yZS5jCitAQCAtNCw3ICs0LDcgQEAKKyAgKiBDbGllbnQgcHJvZ3JhbSB0 byBzdG9yZSBhIGVuZC1lbnRpdHkgY3JlZGVudGlhbCB0byBhIG15cHJveHktc2VydmVyCisgICov CisgCistI2luY2x1ZGUgIm15cHJveHlfY29tbW9uLmgiCS8qIGFsbCBuZWVkZWQgaGVhZGVycyBp bmNsdWRlZCBoZXJlICovCisrI2luY2x1ZGUgIm15cHJveHlfY29tbW9uLmgiICAgICAvKiBhbGwg bmVlZGVkIGhlYWRlcnMgaW5jbHVkZWQgaGVyZSAqLworIAorIC8qIExvY2F0aW9uIG9mIGRlZmF1 bHQgcHJveHkgKi8KKyAjZGVmaW5lIE1ZUFJPWFlfREVGQVVMVF9VU0VSQ0VSVCAgInVzZXJjZXJ0 LnBlbSIKK0BAIC04NSwyNyArODUsMjcgQEAgc3RhdGljIGNoYXIgdmVyc2lvbltdID0KKyAgICAg Im15cHJveHktc3RvcmUgdmVyc2lvbiAiIE1ZUFJPWFlfVkVSU0lPTiAiICgiIE1ZUFJPWFlfVkVS U0lPTl9EQVRFICIpICIKKyAgICAgIlxuIjsKKyAKKy1zdGF0aWMgY2hhciAqY2VydGZpbGUgICAg ICAgICAgICAgICA9IE5VTEw7CS8qIGNlcnRpZmljYXRlIGZpbGUgbmFtZSAqLworLXN0YXRpYyBj aGFyICprZXlmaWxlICAgICAgICAgICAgICAgID0gTlVMTDsJLyoga2V5IGZpbGUgbmFtZSAqLwor K3N0YXRpYyBjaGFyICpjZXJ0ZmlsZSAgICAgICAgICAgICAgID0gTlVMTDsgICAgIC8qIGNlcnRp ZmljYXRlIGZpbGUgbmFtZSAqLworK3N0YXRpYyBjaGFyICprZXlmaWxlICAgICAgICAgICAgICAg ID0gTlVMTDsgICAgIC8qIGtleSBmaWxlIG5hbWUgKi8KKyBzdGF0aWMgaW50ICAgZG5fYXNfdXNl cm5hbWUgICAgICAgICA9IDA7Cisgc3RhdGljIGludCAgIHZlcmJvc2UgICAgICAgICAgICAgICAg PSAwOworIAorIC8qIEZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAqLworLWludCAKKytpbnQKKyBpbml0 X2FyZ3VtZW50cyggICAgaW50ICAgICAgICAgICAgICAgICAgICAgIGFyZ2MsCistCSAgICAgICAg ICAgY2hhciAgICAgICAgICAgICAgICAgICAgKmFyZ3ZbXSwKKy0JICAgICAgICAgICBteXByb3h5 X3NvY2tldF9hdHRyc190ICAqYXR0cnMsCisrICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAg ICAgICAgICAgICAgICphcmd2W10sCisrICAgICAgICAgICAgICAgICAgIG15cHJveHlfc29ja2V0 X2F0dHJzX3QgICphdHRycywKKyAgICAgICAgICAgICAgICAgICAgbXlwcm94eV9yZXF1ZXN0X3Qg ICAgICAgKnJlcXVlc3QpOworIAorLWludCAKKytpbnQKKyBtYWtlY2VydGZpbGUoICAgICAgY29u c3QgY2hhciAgICAgICAgICAgICAgIGNlcnRmaWxlW10sCistCSAgICAgICAgICAgY29uc3QgY2hh ciAgICAgICAgICAgICAgIGtleWZpbGVbXSwKKysgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAgICAgICAgICAgICAgIGtleWZpbGVbXSwKKyAgICAgICAgICAgICAgICAgICAgY2hhciAgICAg ICAgICAgICAgICAgICAqKmNyZWRidWYpOworIAorLSNkZWZpbmUJCVNFQ09ORFNfUEVSX0hPVVIJ CQkoNjAgKiA2MCkKKysjZGVmaW5lICAgICAgICAgU0VDT05EU19QRVJfSE9VUiAgICAgICAgICAg ICAgICAgICAgICAgICg2MCAqIDYwKQorIAorLWludCAKKy1tYWluKGludCAgIGFyZ2MsIAorK2lu dAorK21haW4oaW50ICAgYXJnYywKKyAgICAgIGNoYXIgKmFyZ3ZbXSkKKyB7CisgICAgIGNoYXIg ICAgICAgICAgICAgICAgICAgKnBzaG9zdCAgICAgICAgICAgICA9IE5VTEw7CitAQCAtMTIwLDEw ICsxMjAsMTAgQEAgbWFpbihpbnQgICBhcmdjLAorIAorICAgICAvKiBjaGVjayBsaWJyYXJ5IHZl cnNpb24gKi8KKyAgICAgaWYgKG15cHJveHlfY2hlY2tfdmVyc2lvbigpKSB7CistCWZwcmludGYo c3RkZXJyLCAiTXlQcm94eSBsaWJyYXJ5IHZlcnNpb24gbWlzbWF0Y2guXG4iCistCQkiRXhwZWN0 aW5nICVzLiAgRm91bmQgJXMuXG4iLAorLQkJTVlQUk9YWV9WRVJTSU9OX0RBVEUsIG15cHJveHlf dmVyc2lvbigwLDAsMCkpOworLQlleGl0KDEpOworKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJN eVByb3h5IGxpYnJhcnkgdmVyc2lvbiBtaXNtYXRjaC5cbiIKKysgICAgICAgICAgICAgICAgIkV4 cGVjdGluZyAlcy4gIEZvdW5kICVzLlxuIiwKKysgICAgICAgICAgICAgICAgTVlQUk9YWV9WRVJT SU9OX0RBVEUsIG15cHJveHlfdmVyc2lvbigwLDAsMCkpOworKyAgICAgICAgZXhpdCgxKTsKKyAg ICAgfQorIAorICAgICBteXByb3h5X2xvZ191c2Vfc3RyZWFtKHN0ZGVycik7CitAQCAtMTQ1LDE4 ICsxNDUsMTggQEAgbWFpbihpbnQgICBhcmdjLAorICAgICBwc2hvc3QgPSBnZXRlbnYoIk1ZUFJP WFlfU0VSVkVSIik7CisgCisgICAgIGlmIChwc2hvc3QgIT0gTlVMTCkgeworLQlzb2NrZXRfYXR0 cnMtPnBzaG9zdCA9IHN0cmR1cChwc2hvc3QpOworKyAgICAgICAgc29ja2V0X2F0dHJzLT5wc2hv c3QgPSBzdHJkdXAocHNob3N0KTsKKyAgICAgfQorIAorICAgICBpZiAoZ2V0ZW52KCJNWVBST1hZ X1NFUlZFUl9QT1JUIikpIHsKKy0Jc29ja2V0X2F0dHJzLT5wc3BvcnQgPSBhdG9pKGdldGVudigi TVlQUk9YWV9TRVJWRVJfUE9SVCIpKTsKKysgICAgICAgIHNvY2tldF9hdHRycy0+cHNwb3J0ID0g YXRvaShnZXRlbnYoIk1ZUFJPWFlfU0VSVkVSX1BPUlQiKSk7CisgICAgIH0gZWxzZSB7CistCXNv Y2tldF9hdHRycy0+cHNwb3J0ID0gTVlQUk9YWV9TRVJWRVJfUE9SVDsKKysgICAgICAgIHNvY2tl dF9hdHRycy0+cHNwb3J0ID0gTVlQUk9YWV9TRVJWRVJfUE9SVDsKKyAgICAgfQorIAorICAgICBn bG9idXNfbW9kdWxlX2FjdGl2YXRlKEdMT0JVU19HU0lfU1lTQ09ORklHX01PRFVMRSk7CisgICAg IEdMT0JVU19HU0lfU1lTQ09ORklHX0dFVF9VU0VSX0NFUlRfRklMRU5BTUUoICZjZXJ0ZmlsZSwK Ky0JCQkJCQkgJmtleWZpbGUgKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmtleWZpbGUgKTsKKyAKKyAgICAgY2xpZW50X3JlcXVlc3QtPnByb3h5 X2xpZmV0aW1lID0gU0VDT05EU19QRVJfSE9VUiAqCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE1ZUFJPWFlfREVGQVVMVF9ERUxFR19IT1VSUzsKK0BAIC0xNjgsMTcgKzE2 OCwxNyBAQCBtYWluKGludCAgIGFyZ2MsCisgICAgIH0KKyAKKyAgICAgaWYgKCFjZXJ0ZmlsZSAm JiAha2V5ZmlsZSkgeworLQlmcHJpbnRmKHN0ZGVyciwgIkNyZWRlbnRpYWxzIG5vdCBmb3VuZCBp biBkZWZhdWx0IGxvY2F0aW9uLlxuIgorLQkJIlVzZSAtLWNlcnRmaWxlIGFuZCAtLWtleWZpbGUg b3B0aW9ucy5cbiIpOworLQlnb3RvIGNsZWFudXA7CisrICAgICAgICBmcHJpbnRmKHN0ZGVyciwg IkNyZWRlbnRpYWxzIG5vdCBmb3VuZCBpbiBkZWZhdWx0IGxvY2F0aW9uLlxuIgorKyAgICAgICAg ICAgICAgICAiVXNlIC0tY2VydGZpbGUgYW5kIC0ta2V5ZmlsZSBvcHRpb25zLlxuIik7CisrICAg ICAgICBnb3RvIGNsZWFudXA7CisgICAgIH0gZWxzZSBpZiAoIWNlcnRmaWxlKSB7CistCWZwcmlu dGYoc3RkZXJyLCAiQ2VydGlmaWNhdGUgbm90IGZvdW5kIGluIGRlZmF1bHQgbG9jYXRpb24uXG4i CistCQkiVXNlIC0tY2VydGZpbGUgb3B0aW9uLlxuIik7CistCWdvdG8gY2xlYW51cDsKKysgICAg ICAgIGZwcmludGYoc3RkZXJyLCAiQ2VydGlmaWNhdGUgbm90IGZvdW5kIGluIGRlZmF1bHQgbG9j YXRpb24uXG4iCisrICAgICAgICAgICAgICAgICJVc2UgLS1jZXJ0ZmlsZSBvcHRpb24uXG4iKTsK KysgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgfSBlbHNlIGlmICgha2V5ZmlsZSkgeworLQlm cHJpbnRmKHN0ZGVyciwgIlByaXZhdGUga2V5IG5vdCBmb3VuZCBpbiBkZWZhdWx0IGxvY2F0aW9u LlxuIgorLQkJIlVzZSAtLWtleWZpbGUgb3B0aW9uLlxuIik7CistCWdvdG8gY2xlYW51cDsKKysg ICAgICAgIGZwcmludGYoc3RkZXJyLCAiUHJpdmF0ZSBrZXkgbm90IGZvdW5kIGluIGRlZmF1bHQg bG9jYXRpb24uXG4iCisrICAgICAgICAgICAgICAgICJVc2UgLS1rZXlmaWxlIG9wdGlvbi5cbiIp OworKyAgICAgICAgZ290byBjbGVhbnVwOworICAgICB9CisgCisgICAgIC8qCitAQCAtMTkyLDcg KzE5Miw3IEBAIG1haW4oaW50ICAgYXJnYywKKyAKKyAgICAgLyogU2V0IHVwIGNsaWVudCBzb2Nr ZXQgYXR0cmlidXRlcyAqLworICAgICBpZiAobXlwcm94eV9pbml0X2NsaWVudChzb2NrZXRfYXR0 cnMpIDwgMCkgeworLQl2ZXJyb3JfcHJpbnRfZXJyb3Ioc3RkZXJyKTsKKysgICAgICAgIHZlcnJv cl9wcmludF9lcnJvcihzdGRlcnIpOworICAgICAgICAgZ290byBjbGVhbnVwOworICAgICB9Cisg CitAQCAtMjE3LDcgKzIxNyw3IEBAIG1haW4oaW50ICAgYXJnYywKKyAKKyAgICAgLyogQXV0aGVu dGljYXRlIGNsaWVudCB0byBzZXJ2ZXIgKi8KKyAgICAgaWYgKG15cHJveHlfYXV0aGVudGljYXRl X2luaXQoc29ja2V0X2F0dHJzLCBOVUxMKSA8IDApIHsKKy0JdmVycm9yX3ByaW50X2Vycm9yKHN0 ZGVycik7CisrICAgICAgICB2ZXJyb3JfcHJpbnRfZXJyb3Ioc3RkZXJyKTsKKyAgICAgICAgIGdv dG8gY2xlYW51cDsKKyAgICAgfQorIAorQEAgLTIzOSwxNCArMjM5LDE0IEBAIG1haW4oaW50ICAg YXJnYywKKyAKKyAgICAgLyogQ29udGludWUgdW5sZXNzIHRoZSByZXNwb25zZSBpcyBub3QgT0sg Ki8KKyAgICAgaWYgKG15cHJveHlfcmVjdl9yZXNwb25zZV9leChzb2NrZXRfYXR0cnMsCistCQkJ CSBzZXJ2ZXJfcmVzcG9uc2UsIGNsaWVudF9yZXF1ZXN0KSAhPSAwKSB7CisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3Jlc3BvbnNlLCBjbGllbnRfcmVxdWVzdCkgIT0g MCkgeworICAgICAgICAgdmVycm9yX3ByaW50X2Vycm9yKHN0ZGVycik7CisgICAgICAgICBnb3Rv IGNsZWFudXA7CisgICAgIH0KKyAKKyAgICAgLyogU2VuZCBlbmQtZW50aXR5IGNyZWRlbnRpYWxz IHRvIHNlcnZlci4gKi8KKyAgICAgaWYgKG15cHJveHlfaW5pdF9jcmVkZW50aWFscyhzb2NrZXRf YXR0cnMsCistCQkJCSBjcmVka2V5YnVmKSA8IDApIHsKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjcmVka2V5YnVmKSA8IDApIHsKKyAgICAgICAgIHZlcnJvcl9wcmludF9lcnJv cihzdGRlcnIpOworICAgICAgICAgZ290byBjbGVhbnVwOworICAgICB9CitAQCAtMjczLDkzICsy NzMsOTMgQEAgbWFpbihpbnQgICBhcmdjLAorIAorIGludAorIGluaXRfYXJndW1lbnRzKGludCAg ICAgICAgICAgICAgICAgICAgIGFyZ2MsCistCSAgICAgICBjaGFyICAgICAgICAgICAgICAgICAg ICphcmd2W10sCistCSAgICAgICBteXByb3h5X3NvY2tldF9hdHRyc190ICphdHRycywgCisrICAg ICAgICAgICAgICAgY2hhciAgICAgICAgICAgICAgICAgICAqYXJndltdLAorKyAgICAgICAgICAg ICAgIG15cHJveHlfc29ja2V0X2F0dHJzX3QgKmF0dHJzLAorICAgICAgICAgICAgICAgIG15cHJv eHlfcmVxdWVzdF90ICAgICAgKiByZXF1ZXN0KQorIHsKKyAgICAgZXh0ZXJuIGNoYXIgKm9wdGFy ZzsKKy0gICAgaW50IGV4cHJfdHlwZSA9IE1BVENIX0NOX09OTFk7CS8qZGVmYXVsdCAqLworKyAg ICBpbnQgZXhwcl90eXBlID0gTUFUQ0hfQ05fT05MWTsgICAgICAvKmRlZmF1bHQgKi8KKyAgICAg aW50IGFyZzsKKyAKKyAgICAgd2hpbGUgKChhcmcgPSBnZXRvcHRfbG9uZyhhcmdjLAorLQkJCQkg IGFyZ3YsCistCQkJCSAgc2hvcnRfb3B0aW9ucywKKy0JCQkJICBsb25nX29wdGlvbnMsIE5VTEwp KSAhPSBFT0YpIHsKKy0Jc3dpdGNoIChhcmcpIHsKKy0JY2FzZSAncyc6CQkvKiBwc2hvc3QgbmFt ZSAqLworLQkgICAgYXR0cnMtPnBzaG9zdCA9IHN0cmR1cChvcHRhcmcpOworLQkgICAgYnJlYWs7 CistCistCWNhc2UgJ3AnOgkJLyogcHNwb3J0ICovCistCSAgICBhdHRycy0+cHNwb3J0ID0gYXRv aShvcHRhcmcpOworLQkgICAgYnJlYWs7CistCistCWNhc2UgJ2MnOgkJLyogY3JlZGVudGlhbCBm aWxlIG5hbWUgKi8KKy0JICAgIGlmIChjZXJ0ZmlsZSkgZnJlZShjZXJ0ZmlsZSk7CistCSAgICBj ZXJ0ZmlsZSA9IHN0cmR1cChvcHRhcmcpOworLQkgICAgYnJlYWs7CistCistCWNhc2UgJ3knOgkJ Lyoga2V5IGZpbGUgbmFtZSAqLworLQkgICAgaWYgKGtleWZpbGUpIGZyZWUoa2V5ZmlsZSk7Cist CSAgICBrZXlmaWxlID0gc3RyZHVwKG9wdGFyZyk7CistCSAgICBicmVhazsKKy0KKy0JY2FzZSAn dSc6CQkvKiBwcmludCBoZWxwIGFuZCBleGl0ICovCistCSAgICBwcmludGYoIiVzIiwgdXNhZ2Up OworLQkgICAgZXhpdCgwKTsKKy0JICAgIGJyZWFrOworLQorLQljYXNlICd0JzoJCS8qIFNwZWNp ZnkgcHJveHkgbGlmZXRpbWUgaW4gaG91cnMgKi8KKy0JICAgIHJlcXVlc3QtPnByb3h5X2xpZmV0 aW1lID0gU0VDT05EU19QRVJfSE9VUiAqIGF0b2kob3B0YXJnKTsKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYXJndiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2hvcnRfb3B0aW9ucywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9u Z19vcHRpb25zLCBOVUxMKSkgIT0gRU9GKSB7CisrICAgICAgICBzd2l0Y2ggKGFyZykgeworKyAg ICAgICAgY2FzZSAncyc6ICAgICAgICAgICAgICAgLyogcHNob3N0IG5hbWUgKi8KKysgICAgICAg ICAgICBhdHRycy0+cHNob3N0ID0gc3RyZHVwKG9wdGFyZyk7CisrICAgICAgICAgICAgYnJlYWs7 CisrCisrICAgICAgICBjYXNlICdwJzogICAgICAgICAgICAgICAvKiBwc3BvcnQgKi8KKysgICAg ICAgICAgICBhdHRycy0+cHNwb3J0ID0gYXRvaShvcHRhcmcpOworKyAgICAgICAgICAgIGJyZWFr OworKworKyAgICAgICAgY2FzZSAnYyc6ICAgICAgICAgICAgICAgLyogY3JlZGVudGlhbCBmaWxl IG5hbWUgKi8KKysgICAgICAgICAgICBpZiAoY2VydGZpbGUpIGZyZWUoY2VydGZpbGUpOworKyAg ICAgICAgICAgIGNlcnRmaWxlID0gc3RyZHVwKG9wdGFyZyk7CisrICAgICAgICAgICAgYnJlYWs7 CisrCisrICAgICAgICBjYXNlICd5JzogICAgICAgICAgICAgICAvKiBrZXkgZmlsZSBuYW1lICov CisrICAgICAgICAgICAgaWYgKGtleWZpbGUpIGZyZWUoa2V5ZmlsZSk7CisrICAgICAgICAgICAg a2V5ZmlsZSA9IHN0cmR1cChvcHRhcmcpOworKyAgICAgICAgICAgIGJyZWFrOworKworKyAgICAg ICAgY2FzZSAndSc6ICAgICAgICAgICAgICAgLyogcHJpbnQgaGVscCBhbmQgZXhpdCAqLworKyAg ICAgICAgICAgIHByaW50ZigiJXMiLCB1c2FnZSk7CisrICAgICAgICAgICAgZXhpdCgwKTsKKysg ICAgICAgICAgICBicmVhazsKKysKKysgICAgICAgIGNhc2UgJ3QnOiAgICAgICAgICAgICAgIC8q IFNwZWNpZnkgcHJveHkgbGlmZXRpbWUgaW4gaG91cnMgKi8KKysgICAgICAgICAgICByZXF1ZXN0 LT5wcm94eV9saWZldGltZSA9IFNFQ09ORFNfUEVSX0hPVVIgKiBhdG9pKG9wdGFyZyk7CisgICAg ICAgICBpZiAocmVxdWVzdC0+cHJveHlfbGlmZXRpbWUgPCAwKSB7CisgICAgICAgICAgICAgZnBy aW50ZihzdGRlcnIsICJSZXF1ZXN0ZWQgbGlmZXRpbWUgKC10IG9wdGlvbikgb3V0IG9mIGJvdW5k cy5cbiIpOworICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICB9CistCSAgICBicmVhazsK KysgICAgICAgICAgICBicmVhazsKKysKKysgICAgICAgIGNhc2UgJ2gnOiAgICAgICAgICAgICAg IC8qIHByaW50IGhlbHAgYW5kIGV4aXQgKi8KKysgICAgICAgICAgICBwcmludGYoIiVzIiwgdXNh Z2UpOworKyAgICAgICAgICAgIGV4aXQoMCk7CisrICAgICAgICAgICAgYnJlYWs7CisgCistCWNh c2UgJ2gnOgkJLyogcHJpbnQgaGVscCBhbmQgZXhpdCAqLworLQkgICAgcHJpbnRmKCIlcyIsIHVz YWdlKTsKKy0JICAgIGV4aXQoMCk7CistCSAgICBicmVhazsKKysgICAgICAgIGNhc2UgJ2wnOiAg ICAgICAgICAgICAgIC8qIHVzZXJuYW1lICovCisrICAgICAgICAgICAgcmVxdWVzdC0+dXNlcm5h bWUgPSBzdHJkdXAob3B0YXJnKTsKKysgICAgICAgICAgICBicmVhazsKKyAKKy0JY2FzZSAnbCc6 CQkvKiB1c2VybmFtZSAqLworLQkgICAgcmVxdWVzdC0+dXNlcm5hbWUgPSBzdHJkdXAob3B0YXJn KTsKKy0JICAgIGJyZWFrOworKyAgICAgICAgY2FzZSAndic6ICAgICAgICAgICAgICAgLyogdmVy Ym9zZSAqLworKyAgICAgICAgICAgIG15cHJveHlfZGVidWdfc2V0X2xldmVsKDEpOworKyAgICAg ICAgICAgIHZlcmJvc2UgPSAxOworKyAgICAgICAgICAgIGJyZWFrOworIAorLQljYXNlICd2JzoJ CS8qIHZlcmJvc2UgKi8KKy0JICAgIG15cHJveHlfZGVidWdfc2V0X2xldmVsKDEpOworLQkgICAg dmVyYm9zZSA9IDE7CistCSAgICBicmVhazsKKysgICAgICAgIGNhc2UgJ1YnOiAgICAgICAgICAg ICAgIC8qIHByaW50IHZlcnNpb24gYW5kIGV4aXQgKi8KKysgICAgICAgICAgICBwcmludGYoIiVz IiwgdmVyc2lvbik7CisrICAgICAgICAgICAgZXhpdCgwKTsKKysgICAgICAgICAgICBicmVhazsK KyAKKy0JY2FzZSAnVic6CQkvKiBwcmludCB2ZXJzaW9uIGFuZCBleGl0ICovCistCSAgICBwcmlu dGYoIiVzIiwgdmVyc2lvbik7CistCSAgICBleGl0KDApOworLQkgICAgYnJlYWs7CisgCisrICAg ICAgICBjYXNlICdyJzogICAgICAgICAgICAgICAvKiByZXRyaWV2ZXJzIGxpc3QgKi8KKysgICAg ICAgICAgICBpZiAocmVxdWVzdC0+cmV0cmlldmVycykgeworKyAgICAgICAgICAgICAgICBmcHJp bnRmKHN0ZGVyciwKKysgICAgICAgICAgICAgICAgICAgICAgICAiT25seSBvbmUgLWEgb3IgLXIg b3B0aW9uIG1heSBiZSBzcGVjaWZpZWQuXG4iKTsKKysgICAgICAgICAgICAgICAgZXhpdCgxKTsK KysgICAgICAgICAgICB9CisgCistCWNhc2UgJ3InOgkJLyogcmV0cmlldmVycyBsaXN0ICovCist CSAgICBpZiAocmVxdWVzdC0+cmV0cmlldmVycykgeworLQkJZnByaW50ZihzdGRlcnIsCistCQkJ Ik9ubHkgb25lIC1hIG9yIC1yIG9wdGlvbiBtYXkgYmUgc3BlY2lmaWVkLlxuIik7CistCQlleGl0 KDEpOworLQkgICAgfQorKyAgICAgICAgICAgIGlmIChleHByX3R5cGUgPT0gUkVHVUxBUl9FWFAp IHsKKyAKKy0JICAgIGlmIChleHByX3R5cGUgPT0gUkVHVUxBUl9FWFApIHsKKy0JCQorICAgICAg ICAgICAgICAgICAvKiBDb3B5IGFzIGlzICovCistCQlyZXF1ZXN0LT5yZXRyaWV2ZXJzID0gc3Ry ZHVwKG9wdGFyZyk7CistCSAgICB9IGVsc2UgeworLQkJcmVxdWVzdC0+cmV0cmlldmVycyA9Cist CQkgICAgKGNoYXIgKikgbWFsbG9jKHN0cmxlbihvcHRhcmcpICsgNik7CistCQlzdHJjcHkocmVx dWVzdC0+cmV0cmlldmVycywgIiovQ049Iik7CistCQlteXByb3h5X2RlYnVnKCJhdXRob3JpemVk IHJldHJpZXZlciAlcyIsCistCQkJICAgICAgcmVxdWVzdC0+cmV0cmlldmVycyk7CistCQlyZXF1 ZXN0LT5yZXRyaWV2ZXJzID0KKy0JCSAgICBzdHJjYXQocmVxdWVzdC0+cmV0cmlldmVycywgb3B0 YXJnKTsKKy0JICAgIH0KKy0JICAgIGJyZWFrOworLQorLQljYXNlICdSJzoJCS8qIHJlbmV3ZXJz IGxpc3QgKi8KKysgICAgICAgICAgICAgICAgcmVxdWVzdC0+cmV0cmlldmVycyA9IHN0cmR1cChv cHRhcmcpOworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIHJlcXVlc3Qt PnJldHJpZXZlcnMgPQorKyAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikgbWFsbG9jKHN0cmxl bihvcHRhcmcpICsgNik7CisrICAgICAgICAgICAgICAgIHN0cmNweShyZXF1ZXN0LT5yZXRyaWV2 ZXJzLCAiKi9DTj0iKTsKKysgICAgICAgICAgICAgICAgbXlwcm94eV9kZWJ1ZygiYXV0aG9yaXpl ZCByZXRyaWV2ZXIgJXMiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qt PnJldHJpZXZlcnMpOworKyAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZXRyaWV2ZXJzID0KKysg ICAgICAgICAgICAgICAgICAgIHN0cmNhdChyZXF1ZXN0LT5yZXRyaWV2ZXJzLCBvcHRhcmcpOwor KyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBicmVhazsKKysKKysgICAgICAgIGNhc2UgJ1In OiAgICAgICAgICAgICAgIC8qIHJlbmV3ZXJzIGxpc3QgKi8KKyAgICAgICAgICAgICAvKgorICAg ICAgICAgICAgICoqIFRoaXMgbmVlZHMgdG8gYmUgcmVhZGRyZXNzZWQuICBSaWdodCBub3csIHRo ZSBwcml2YXRlIGtleSBpcworICAgICAgICAgICAgICoqIGJlaW5nIHN0b3JlZCBlbmNyeXB0ZWQu ICBUaGlzIGlzIGEgcHJvYmxlbSBpZiB0aGUgdXNlciBjYWxscworQEAgLTM2OCwxMjcgKzM2OCwx MjcgQEAgaW5pdF9hcmd1bWVudHMoaW50ICAgICAgICAgICAgICAgICAgICAgYXJnYywKKyAgICAg ICAgICAgICAqKiBTbywgZG8gd2Ugd2FudCB0byBhZGQgY29kZSB0byB1bmVuY3J5cHQgdGhlIHBy aXZhdGUga2V5IGlmCisgICAgICAgICAgICAgKiogdGhpcyBvcHRpb24gaXMgdXNlZD8KKyAgICAg ICAgICAgICAqLworLQkgICAgaWYgKHJlcXVlc3QtPnJlbmV3ZXJzKSB7CistCQlmcHJpbnRmKHN0 ZGVyciwKKy0JCQkiT25seSBvbmUgLUEgb3IgLVIgb3B0aW9uIG1heSBiZSBzcGVjaWZpZWQuXG4i KTsKKy0JCWV4aXQoMSk7CistCSAgICB9CistCistCSAgICBpZiAoZXhwcl90eXBlID09IFJFR1VM QVJfRVhQKSB7CistCQkvKiBDb3B5IGFzIGlzICovCistCQlyZXF1ZXN0LT5yZW5ld2VycyA9IHN0 cmR1cChvcHRhcmcpOworLQkgICAgfSBlbHNlIHsKKy0JCXJlcXVlc3QtPnJlbmV3ZXJzID0KKy0J CSAgICAoY2hhciAqKSBtYWxsb2Moc3RybGVuKG9wdGFyZykgKyA2KTsKKy0JCXN0cmNweShyZXF1 ZXN0LT5yZW5ld2VycywgIiovQ049Iik7CistCQlteXByb3h5X2RlYnVnKCJhdXRob3JpemVkIHJl bmV3ZXIgJXMiLCByZXF1ZXN0LT5yZW5ld2Vycyk7CistCQlyZXF1ZXN0LT5yZW5ld2VycyA9IHN0 cmNhdChyZXF1ZXN0LT5yZW5ld2Vycywgb3B0YXJnKTsKKy0JICAgIH0KKy0JICAgIGJyZWFrOwor LQorLQljYXNlICdaJzoJCS8qIHJldHJpZXZlcnMgbGlzdCAqLworLQkgICAgaWYgKHJlcXVlc3Qt PnRydXN0ZWRfcmV0cmlldmVycykgeworLQkJZnByaW50ZihzdGRlcnIsCistCQkJIk9ubHkgb25l IC1aIG9wdGlvbiBtYXkgYmUgc3BlY2lmaWVkLlxuIik7CistCQlleGl0KDEpOworLQkgICAgfQor LQorLQkgICAgaWYgKGV4cHJfdHlwZSA9PSBSRUdVTEFSX0VYUCkgeworLQkJCisrICAgICAgICAg ICAgaWYgKHJlcXVlc3QtPnJlbmV3ZXJzKSB7CisrICAgICAgICAgICAgICAgIGZwcmludGYoc3Rk ZXJyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJPbmx5IG9uZSAtQSBvciAtUiBvcHRpb24g bWF5IGJlIHNwZWNpZmllZC5cbiIpOworKyAgICAgICAgICAgICAgICBleGl0KDEpOworKyAgICAg ICAgICAgIH0KKysKKysgICAgICAgICAgICBpZiAoZXhwcl90eXBlID09IFJFR1VMQVJfRVhQKSB7 CisgICAgICAgICAgICAgICAgIC8qIENvcHkgYXMgaXMgKi8KKy0JCXJlcXVlc3QtPnRydXN0ZWRf cmV0cmlldmVycyA9IHN0cmR1cChvcHRhcmcpOworLQkgICAgfSBlbHNlIHsKKy0JCXJlcXVlc3Qt PnRydXN0ZWRfcmV0cmlldmVycyA9CistCQkgICAgKGNoYXIgKikgbWFsbG9jKHN0cmxlbihvcHRh cmcpICsgNik7CistCQlzdHJjcHkocmVxdWVzdC0+dHJ1c3RlZF9yZXRyaWV2ZXJzLCAiKi9DTj0i KTsKKy0JCW15cHJveHlfZGVidWcoInRydXN0ZWQgcmV0cmlldmVyICVzIiwKKy0JCQkgICAgICBy ZXF1ZXN0LT50cnVzdGVkX3JldHJpZXZlcnMpOworLQkJcmVxdWVzdC0+dHJ1c3RlZF9yZXRyaWV2 ZXJzID0KKy0JCSAgICBzdHJjYXQocmVxdWVzdC0+dHJ1c3RlZF9yZXRyaWV2ZXJzLCBvcHRhcmcp OworLQkgICAgfQorLQkgICAgYnJlYWs7CistCistICAgICAgICBjYXNlICdFJyA6ICAgICAgICAg ICAgICAvKiBrZXkgcmV0cmlldmVyIGxpc3QgKi8gCistCSAgICBpZiAoZXhwcl90eXBlID09IFJF R1VMQVJfRVhQKSB7CistCQkvKiBDb3B5IGFzIGlzICovCistCQlyZXF1ZXN0LT5rZXlyZXRyaWV2 ZSA9IHN0cmR1cChvcHRhcmcpOworLQkgICAgfSBlbHNlIHsKKy0JCXJlcXVlc3QtPmtleXJldHJp ZXZlID0KKy0JCSAgICAoY2hhciAqKSBtYWxsb2Moc3RybGVuKG9wdGFyZykgKyA2KTsKKy0JCXN0 cmNweShyZXF1ZXN0LT5rZXlyZXRyaWV2ZSwgIiovQ049Iik7CistCQlteXByb3h5X2RlYnVnKCJh dXRob3JpemVkIGtleSByZXRyaWV2ZXIgJXMiLAorLQkJCSAgICAgIHJlcXVlc3QtPmtleXJldHJp ZXZlKTsKKy0JCXJlcXVlc3QtPmtleXJldHJpZXZlID0KKy0JCSAgICBzdHJjYXQocmVxdWVzdC0+ a2V5cmV0cmlldmUsIG9wdGFyZyk7CistCSAgICB9CistCSAgICBicmVhazsKKy0KKy0JY2FzZSAn ZCc6CQkvKiAKKy0JCQkJICoqIHVzZSB0aGUgY2VydGlmaWNhdGUgc3ViamVjdCAoRE4pIGFzIHRo ZSAKKy0JCQkJICoqIGRlZmF1bHQgdXNlcm5hbWUgaW5zdGVhZCBvZiBMT0dOQU1FIAorLQkJCQkg Ki8KKy0JICAgIGRuX2FzX3VzZXJuYW1lID0gMTsKKy0JICAgIGJyZWFrOworLQorLQljYXNlICd4 JzoJCS8qc2V0IGV4cHJlc3Npb24gdHlwZSB0byByZWdleCAqLworLQkgICAgZXhwcl90eXBlID0g UkVHVUxBUl9FWFA7CistCSAgICBteXByb3h5X2RlYnVnKCJleHByLXR5cGUgPSByZWdleCIpOwor LQkgICAgYnJlYWs7CistCistCWNhc2UgJ1gnOgkJLypzZXQgZXhwcmVzc2lvbiB0eXBlIHRvIGNv bW1vbiBuYW1lICovCistCSAgICBleHByX3R5cGUgPSBNQVRDSF9DTl9PTkxZOworLQkgICAgbXlw cm94eV9kZWJ1ZygiZXhwci10eXBlID0gQ04iKTsKKy0JICAgIGJyZWFrOworLQorLQljYXNlICdh JzoJCS8qYWxsb3cgYW5vbnltb3VzIHJldHJpZXZlcnMgKi8KKy0JICAgIGlmIChyZXF1ZXN0LT5y ZXRyaWV2ZXJzKSB7CistCQlmcHJpbnRmKHN0ZGVyciwKKy0JCQkiT25seSBvbmUgLWEgb3IgLXIg b3B0aW9uIG1heSBiZSBzcGVjaWZpZWQuXG4iKTsKKy0JCWV4aXQoMSk7CistCSAgICB9CistCist CSAgICByZXF1ZXN0LT5yZXRyaWV2ZXJzID0gc3RyZHVwKCIqIik7CistCSAgICBteXByb3h5X2Rl YnVnKCJhbm9ueW1vdXMgcmV0cmlldmVycyBhbGxvd2VkIik7CistCSAgICBicmVhazsKKy0KKy0J Y2FzZSAnQSc6CQkvKmFsbG93IGFub255bW91cyByZW5ld2VycyAqLworLQkgICAgaWYgKHJlcXVl c3QtPnJlbmV3ZXJzKSB7CistCQlmcHJpbnRmKHN0ZGVyciwKKy0JCQkiT25seSBvbmUgLUEgb3Ig LVIgb3B0aW9uIG1heSBiZSBzcGVjaWZpZWQuXG4iKTsKKy0JCWV4aXQoMSk7CistCSAgICB9Cist CistCSAgICByZXF1ZXN0LT5yZW5ld2VycyA9IHN0cmR1cCgiKiIpOworLQkgICAgbXlwcm94eV9k ZWJ1ZygiYW5vbnltb3VzIHJlbmV3ZXJzIGFsbG93ZWQiKTsKKy0JICAgIGJyZWFrOworLQorLQlj YXNlICdrJzoJCS8qY3JlZGVudGlhbCBuYW1lICovCistCSAgICByZXF1ZXN0LT5jcmVkbmFtZSA9 IHN0cmR1cChvcHRhcmcpOworLQkgICAgYnJlYWs7CistCistCWNhc2UgJ0snOgkJLypjcmVkZW50 aWFsIGRlc2NyaXB0aW9uICovCistCSAgICByZXF1ZXN0LT5jcmVkZGVzYyA9IHN0cmR1cChvcHRh cmcpOworLQkgICAgYnJlYWs7CistCistCWRlZmF1bHQ6CQkvKiBwcmludCB1c2FnZSBhbmQgZXhp dCAqLworLQkgICAgZnByaW50ZihzdGRlcnIsICIlcyIsIHVzYWdlKTsKKy0JICAgIGV4aXQoMSk7 CistCSAgICBicmVhazsKKy0JfQorKyAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZW5ld2VycyA9 IHN0cmR1cChvcHRhcmcpOworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAg IHJlcXVlc3QtPnJlbmV3ZXJzID0KKysgICAgICAgICAgICAgICAgICAgIChjaGFyICopIG1hbGxv YyhzdHJsZW4ob3B0YXJnKSArIDYpOworKyAgICAgICAgICAgICAgICBzdHJjcHkocmVxdWVzdC0+ cmVuZXdlcnMsICIqL0NOPSIpOworKyAgICAgICAgICAgICAgICBteXByb3h5X2RlYnVnKCJhdXRo b3JpemVkIHJlbmV3ZXIgJXMiLCByZXF1ZXN0LT5yZW5ld2Vycyk7CisrICAgICAgICAgICAgICAg IHJlcXVlc3QtPnJlbmV3ZXJzID0gc3RyY2F0KHJlcXVlc3QtPnJlbmV3ZXJzLCBvcHRhcmcpOwor KyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBicmVhazsKKysKKysgICAgICAgIGNhc2UgJ1on OiAgICAgICAgICAgICAgIC8qIHJldHJpZXZlcnMgbGlzdCAqLworKyAgICAgICAgICAgIGlmIChy ZXF1ZXN0LT50cnVzdGVkX3JldHJpZXZlcnMpIHsKKysgICAgICAgICAgICAgICAgZnByaW50Zihz dGRlcnIsCisrICAgICAgICAgICAgICAgICAgICAgICAgIk9ubHkgb25lIC1aIG9wdGlvbiBtYXkg YmUgc3BlY2lmaWVkLlxuIik7CisrICAgICAgICAgICAgICAgIGV4aXQoMSk7CisrICAgICAgICAg ICAgfQorKworKyAgICAgICAgICAgIGlmIChleHByX3R5cGUgPT0gUkVHVUxBUl9FWFApIHsKKysK KysgICAgICAgICAgICAgICAgLyogQ29weSBhcyBpcyAqLworKyAgICAgICAgICAgICAgICByZXF1 ZXN0LT50cnVzdGVkX3JldHJpZXZlcnMgPSBzdHJkdXAob3B0YXJnKTsKKysgICAgICAgICAgICB9 IGVsc2UgeworKyAgICAgICAgICAgICAgICByZXF1ZXN0LT50cnVzdGVkX3JldHJpZXZlcnMgPQor KyAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikgbWFsbG9jKHN0cmxlbihvcHRhcmcpICsgNik7 CisrICAgICAgICAgICAgICAgIHN0cmNweShyZXF1ZXN0LT50cnVzdGVkX3JldHJpZXZlcnMsICIq L0NOPSIpOworKyAgICAgICAgICAgICAgICBteXByb3h5X2RlYnVnKCJ0cnVzdGVkIHJldHJpZXZl ciAlcyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC0+dHJ1c3RlZF9y ZXRyaWV2ZXJzKTsKKysgICAgICAgICAgICAgICAgcmVxdWVzdC0+dHJ1c3RlZF9yZXRyaWV2ZXJz ID0KKysgICAgICAgICAgICAgICAgICAgIHN0cmNhdChyZXF1ZXN0LT50cnVzdGVkX3JldHJpZXZl cnMsIG9wdGFyZyk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGJyZWFrOworKworKyAg ICAgICAgY2FzZSAnRScgOiAgICAgICAgICAgICAgLyoga2V5IHJldHJpZXZlciBsaXN0ICovCisr ICAgICAgICAgICAgaWYgKGV4cHJfdHlwZSA9PSBSRUdVTEFSX0VYUCkgeworKyAgICAgICAgICAg ICAgICAvKiBDb3B5IGFzIGlzICovCisrICAgICAgICAgICAgICAgIHJlcXVlc3QtPmtleXJldHJp ZXZlID0gc3RyZHVwKG9wdGFyZyk7CisrICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAg ICAgICAgcmVxdWVzdC0+a2V5cmV0cmlldmUgPQorKyAgICAgICAgICAgICAgICAgICAgKGNoYXIg KikgbWFsbG9jKHN0cmxlbihvcHRhcmcpICsgNik7CisrICAgICAgICAgICAgICAgIHN0cmNweShy ZXF1ZXN0LT5rZXlyZXRyaWV2ZSwgIiovQ049Iik7CisrICAgICAgICAgICAgICAgIG15cHJveHlf ZGVidWcoImF1dGhvcml6ZWQga2V5IHJldHJpZXZlciAlcyIsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVxdWVzdC0+a2V5cmV0cmlldmUpOworKyAgICAgICAgICAgICAgICByZXF1 ZXN0LT5rZXlyZXRyaWV2ZSA9CisrICAgICAgICAgICAgICAgICAgICBzdHJjYXQocmVxdWVzdC0+ a2V5cmV0cmlldmUsIG9wdGFyZyk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGJyZWFr OworKworKyAgICAgICAgY2FzZSAnZCc6ICAgICAgICAgICAgICAgLyoKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqKiB1c2UgdGhlIGNlcnRpZmljYXRlIHN1YmplY3QgKEROKSBh cyB0aGUKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKiBkZWZhdWx0IHVzZXJu YW1lIGluc3RlYWQgb2YgTE9HTkFNRQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICovCisrICAgICAgICAgICAgZG5fYXNfdXNlcm5hbWUgPSAxOworKyAgICAgICAgICAgIGJyZWFr OworKworKyAgICAgICAgY2FzZSAneCc6ICAgICAgICAgICAgICAgLypzZXQgZXhwcmVzc2lvbiB0 eXBlIHRvIHJlZ2V4ICovCisrICAgICAgICAgICAgZXhwcl90eXBlID0gUkVHVUxBUl9FWFA7Cisr ICAgICAgICAgICAgbXlwcm94eV9kZWJ1ZygiZXhwci10eXBlID0gcmVnZXgiKTsKKysgICAgICAg ICAgICBicmVhazsKKysKKysgICAgICAgIGNhc2UgJ1gnOiAgICAgICAgICAgICAgIC8qc2V0IGV4 cHJlc3Npb24gdHlwZSB0byBjb21tb24gbmFtZSAqLworKyAgICAgICAgICAgIGV4cHJfdHlwZSA9 IE1BVENIX0NOX09OTFk7CisrICAgICAgICAgICAgbXlwcm94eV9kZWJ1ZygiZXhwci10eXBlID0g Q04iKTsKKysgICAgICAgICAgICBicmVhazsKKysKKysgICAgICAgIGNhc2UgJ2EnOiAgICAgICAg ICAgICAgIC8qYWxsb3cgYW5vbnltb3VzIHJldHJpZXZlcnMgKi8KKysgICAgICAgICAgICBpZiAo cmVxdWVzdC0+cmV0cmlldmVycykgeworKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwK KysgICAgICAgICAgICAgICAgICAgICAgICAiT25seSBvbmUgLWEgb3IgLXIgb3B0aW9uIG1heSBi ZSBzcGVjaWZpZWQuXG4iKTsKKysgICAgICAgICAgICAgICAgZXhpdCgxKTsKKysgICAgICAgICAg ICB9CisrCisrICAgICAgICAgICAgcmVxdWVzdC0+cmV0cmlldmVycyA9IHN0cmR1cCgiKiIpOwor KyAgICAgICAgICAgIG15cHJveHlfZGVidWcoImFub255bW91cyByZXRyaWV2ZXJzIGFsbG93ZWQi KTsKKysgICAgICAgICAgICBicmVhazsKKysKKysgICAgICAgIGNhc2UgJ0EnOiAgICAgICAgICAg ICAgIC8qYWxsb3cgYW5vbnltb3VzIHJlbmV3ZXJzICovCisrICAgICAgICAgICAgaWYgKHJlcXVl c3QtPnJlbmV3ZXJzKSB7CisrICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICJPbmx5IG9uZSAtQSBvciAtUiBvcHRpb24gbWF5IGJlIHNwZWNp ZmllZC5cbiIpOworKyAgICAgICAgICAgICAgICBleGl0KDEpOworKyAgICAgICAgICAgIH0KKysK KysgICAgICAgICAgICByZXF1ZXN0LT5yZW5ld2VycyA9IHN0cmR1cCgiKiIpOworKyAgICAgICAg ICAgIG15cHJveHlfZGVidWcoImFub255bW91cyByZW5ld2VycyBhbGxvd2VkIik7CisrICAgICAg ICAgICAgYnJlYWs7CisrCisrICAgICAgICBjYXNlICdrJzogICAgICAgICAgICAgICAvKmNyZWRl bnRpYWwgbmFtZSAqLworKyAgICAgICAgICAgIHJlcXVlc3QtPmNyZWRuYW1lID0gc3RyZHVwKG9w dGFyZyk7CisrICAgICAgICAgICAgYnJlYWs7CisrCisrICAgICAgICBjYXNlICdLJzogICAgICAg ICAgICAgICAvKmNyZWRlbnRpYWwgZGVzY3JpcHRpb24gKi8KKysgICAgICAgICAgICByZXF1ZXN0 LT5jcmVkZGVzYyA9IHN0cmR1cChvcHRhcmcpOworKyAgICAgICAgICAgIGJyZWFrOworKworKyAg ICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgLyogcHJpbnQgdXNhZ2UgYW5kIGV4aXQgKi8K KysgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgdXNhZ2UpOworKyAgICAgICAgICAg IGV4aXQoMSk7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAg ICAgLyogQ2hlY2sgdG8gc2VlIGlmIG15cHJveHktc2VydmVyIHNwZWNpZmllZCAqLworICAgICBp ZiAoYXR0cnMtPnBzaG9zdCA9PSBOVUxMKSB7CisgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVz IiwgdXNhZ2UpOworLQlmcHJpbnRmKHN0ZGVyciwKKy0JCSJVbnNwZWNpZmllZCBteXByb3h5LXNl cnZlciEgRWl0aGVyIHNldCB0aGUgTVlQUk9YWV9TRVJWRVIgZW52aXJvbm1lbnQgdmFyaWFibGUg b3IgZXhwbGljaXRseSBzZXQgdGhlIG15cHJveHktc2VydmVyIHZpYSB0aGUgLXMgZmxhZ1xuIik7 CistCXJldHVybiAtMTsKKysgICAgICAgIGZwcmludGYoc3RkZXJyLAorKyAgICAgICAgICAgICAg ICAiVW5zcGVjaWZpZWQgbXlwcm94eS1zZXJ2ZXIhIEVpdGhlciBzZXQgdGhlIE1ZUFJPWFlfU0VS VkVSIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIGV4cGxpY2l0bHkgc2V0IHRoZSBteXByb3h5LXNl cnZlciB2aWEgdGhlIC1zIGZsYWdcbiIpOworKyAgICAgICAgcmV0dXJuIC0xOworICAgICB9Cisg CisgICAgIHJldHVybiAwOworIH0KKyAKKy1pbnQgCisraW50CisgbWFrZWNlcnRmaWxlKGNvbnN0 IGNoYXIgICBjZXJ0ZmlsZVtdLAorICAgICAgICAgICAgICBjb25zdCBjaGFyICAga2V5ZmlsZVtd LAorICAgICAgICAgICAgICBjaGFyICAgICAgICoqY3JlZGJ1ZikKK0BAIC01MDYsMTAgKzUwNiwx MCBAQCBtYWtlY2VydGZpbGUoY29uc3QgY2hhciAgIGNlcnRmaWxlW10sCisgICAgIHN0YXRpYyBj aGFyIEVOREtFWTFbXSA9ICItLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLSI7CisgICAgIHN0 YXRpYyBjaGFyIEVOREtFWTJbXSA9ICItLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tIjsKKyAgICAg c3RhdGljIGNoYXIgRU5ES0VZM1tdID0gIi0tLS0tRU5EIEVOQ1JZUFRFRCBQUklWQVRFIEtFWS0t LS0tIjsKKy0gICAgY2hhciAgICAgICAgKmNlcnRzdGFydDsgCisrICAgIGNoYXIgICAgICAgICpj ZXJ0c3RhcnQ7CisgICAgIGNoYXIgICAgICAgICpjZXJ0ZW5kOworICAgICBpbnQgICAgICAgICAg c2l6ZTsKKy0gICAgY2hhciAgICAgICAgKmtleXN0YXJ0OyAKKysgICAgY2hhciAgICAgICAgKmtl eXN0YXJ0OworICAgICBjaGFyICAgICAgICAqa2V5ZW5kOworIAorIAorQEAgLTUzMCw4ICs1MzAs OCBAQCBtYWtlY2VydGZpbGUoY29uc3QgY2hhciAgIGNlcnRmaWxlW10sCisgCisgICAgIC8qIFJl YWQgdGhlIGNlcnRpZmljYXRlKHMpIGludG8gYSBidWZmZXIuICovCisgICAgIGlmIChidWZmZXJf ZnJvbV9maWxlKGNlcnRmaWxlLCAmY2VydGJ1ZiwgTlVMTCkgPCAwKSB7CistCWZwcmludGYoc3Rk ZXJyLCAiRmFpbGVkIHRvIHJlYWQgJXNcbiIsIGNlcnRmaWxlKTsKKy0JZ290byBjbGVhbnVwOwor KyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gcmVhZCAlc1xuIiwgY2VydGZpbGUp OworKyAgICAgICAgZ290byBjbGVhbnVwOworICAgICB9CisgCisgICAgIC8qIFJlYWQgdGhlIGtl eSBpbnRvIGEgYnVmZmVyLiAqLworQEAgLTU1NCwyOSArNTU0LDI5IEBAIG1ha2VjZXJ0ZmlsZShj b25zdCBjaGFyICAgY2VydGZpbGVbXSwKKyAgICAgY2VydGVuZCArPSBzdHJsZW4oRU5EQ0VSVCk7 CisgICAgIHNpemUgPSBjZXJ0ZW5kLWNlcnRzdGFydDsKKyAKKy0gICAgc3RybmNhdCggKmNyZWRi dWYsIGNlcnRzdGFydCwgc2l6ZSApOyAKKysgICAgc3RybmNhdCggKmNyZWRidWYsIGNlcnRzdGFy dCwgc2l6ZSApOworICAgICBzdHJjYXQoICpjcmVkYnVmLCAiXG4iICk7CisgICAgIGNlcnRzdGFy dCArPSBzaXplOworIAorICAgICAvKiBXcml0ZSB0aGUga2V5LiAqLworICAgICBpZiAoKGtleXN0 YXJ0ID0gc3Ryc3RyKChjb25zdCBjaGFyICopa2V5YnVmLCBCRUdJTktFWTEpKSA9PSBOVUxMCist CSYmIChrZXlzdGFydCA9IHN0cnN0cigoY29uc3QgY2hhciAqKWtleWJ1ZiwgQkVHSU5LRVkyKSkg PT0gTlVMTAorLQkmJiAoa2V5c3RhcnQgPSBzdHJzdHIoKGNvbnN0IGNoYXIgKilrZXlidWYsIEJF R0lOS0VZMykpID09IE5VTEwpIHsKKy0JZnByaW50ZihzdGRlcnIsICIlcyBkb2Vzbid0IGNvbnRh aW4gJyVzJyBub3IgJyVzJyBub3IgJXMuXG4iLCBrZXlmaWxlLAorLQkJCQkJQkVHSU5LRVkxLCBC RUdJTktFWTIsIEJFR0lOS0VZMyk7CistCWdvdG8gY2xlYW51cDsKKysgICAgICAgICYmIChrZXlz dGFydCA9IHN0cnN0cigoY29uc3QgY2hhciAqKWtleWJ1ZiwgQkVHSU5LRVkyKSkgPT0gTlVMTAor KyAgICAgICAgJiYgKGtleXN0YXJ0ID0gc3Ryc3RyKChjb25zdCBjaGFyICopa2V5YnVmLCBCRUdJ TktFWTMpKSA9PSBOVUxMKSB7CisrICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIGRvZXNuJ3Qg Y29udGFpbiAnJXMnIG5vciAnJXMnIG5vciAlcy5cbiIsIGtleWZpbGUsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJFR0lOS0VZMSwgQkVHSU5LRVkyLCBCRUdJTktF WTMpOworKyAgICAgICAgZ290byBjbGVhbnVwOworICAgICB9CisgCisgICAgIGlmICgoa2V5ZW5k ID0gc3Ryc3RyKGtleXN0YXJ0LCBFTkRLRVkxKSkgIT0gTlVMTCkKKy0Ja2V5ZW5kICs9IHN0cmxl bihFTkRLRVkxKTsKKysgICAgICAgIGtleWVuZCArPSBzdHJsZW4oRU5ES0VZMSk7CisgICAgIGVs c2UgaWYgKChrZXllbmQgPSBzdHJzdHIoa2V5c3RhcnQsIEVOREtFWTIpKSAhPSBOVUxMKQorLQlr ZXllbmQgKz0gc3RybGVuKEVOREtFWTIpOworKyAgICAgICAga2V5ZW5kICs9IHN0cmxlbihFTkRL RVkyKTsKKyAgICAgZWxzZSBpZiAoKGtleWVuZCA9IHN0cnN0cihrZXlzdGFydCwgRU5ES0VZMykp ICE9IE5VTEwpCistCWtleWVuZCArPSBzdHJsZW4oRU5ES0VZMyk7CisrICAgICAgICBrZXllbmQg Kz0gc3RybGVuKEVOREtFWTMpOworICAgICBlbHNlIHsKKy0JZnByaW50ZihzdGRlcnIsICIlcyBk b2Vzbid0IGNvbnRhaW4gJyVzJyBub3IgJyVzJyBub3IgJXMuXG4iLCBrZXlmaWxlLCBFTkRLRVkx LAorLQkJCQkJCUVOREtFWTIsIEVOREtFWTMpOworLQlnb3RvIGNsZWFudXA7CisrICAgICAgICBm cHJpbnRmKHN0ZGVyciwgIiVzIGRvZXNuJ3QgY29udGFpbiAnJXMnIG5vciAnJXMnIG5vciAlcy5c biIsIGtleWZpbGUsIEVOREtFWTEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRU5ES0VZMiwgRU5ES0VZMyk7CisrICAgICAgICBnb3RvIGNsZWFudXA7 CisgICAgIH0KKyAKKyAgICAgc2l6ZSA9IGtleWVuZC1rZXlzdGFydDsKK0BAIC01OTUsOCArNTk1 LDggQEAgbWFrZWNlcnRmaWxlKGNvbnN0IGNoYXIgICBjZXJ0ZmlsZVtdLAorICAgICAgICAgY2Vy dGVuZCArPSBzdHJsZW4oRU5EQ0VSVCk7CisgICAgICAgICBzaXplID0gY2VydGVuZC1jZXJ0c3Rh cnQ7CisgCistICAgICAgICBzdHJuY2F0KCAqY3JlZGJ1ZiwgY2VydHN0YXJ0LCBzaXplICk7IAor LSAgICAgICAgc3RyY2F0KCAqY3JlZGJ1ZiwgIlxuIiApOyAKKysgICAgICAgIHN0cm5jYXQoICpj cmVkYnVmLCBjZXJ0c3RhcnQsIHNpemUgKTsKKysgICAgICAgIHN0cmNhdCggKmNyZWRidWYsICJc biIgKTsKKyAgICAgICAgIGNlcnRzdGFydCArPSBzaXplOworICAgICB9CisgCitkaWZmIC0tZ2l0 IGEvbXlwcm94eS9zb3VyY2Uvdm9tc2NsaWVudC5jIGIvbXlwcm94eS9zb3VyY2Uvdm9tc2NsaWVu dC5jCitpbmRleCBiNDQxZjk4ODAuLjY3ZjVlZTMxOCAxMDA2NDQKKy0tLSBhL215cHJveHkvc291 cmNlL3ZvbXNjbGllbnQuYworKysrIGIvbXlwcm94eS9zb3VyY2Uvdm9tc2NsaWVudC5jCitAQCAt MTQsNyArMTQsNyBAQCBpbnQgdm9tc19pbml0X2RlbGVnYXRpb24obXlwcm94eV9zb2NrZXRfYXR0 cnNfdCAqYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnZvbmFtZSwgY2hh ciAqdm9tc2VzLCBjaGFyICp2b21zX3VzZXJjb25mKTsKKyAKKyAKKy1pbnQgdm9tc19jb250YWN0 KFNTTF9DUkVERU5USUFMUyAqY3JlZHMsIGludCBsaWZldGltZSwgCisraW50IHZvbXNfY29udGFj dChTU0xfQ1JFREVOVElBTFMgKmNyZWRzLCBpbnQgbGlmZXRpbWUsCisgICAgICAgICAgICAgICAg ICBjaGFyICp2b25hbWUsIGNoYXIgKnZvbXNlcywgY2hhciAqdm9tc191c2VyY29uZiwKKyAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKiphY2xpc3QsIGludCAqYWNsaXN0X2xlbmd0aCk7 CisgCitAQCAtMzUsNyArMzUsNyBAQCB2b21zX3B1dF9lcnJvcl9tZXNzYWdlKHN0cnVjdCB2b21z ZGF0YSAqdmQsIGludCBlcnIpCisgICogZ2V0IHRoZSB1c2VyIGluZm8gZm9yIHNwZWNpZmllZCB2 bworICAqLworIHN0YXRpYyBpbnQKKy12b21zX2dldF91c2VyX2luZm8oc3RydWN0IHZvbXNkYXRh ICp2ZCwgCisrdm9tc19nZXRfdXNlcl9pbmZvKHN0cnVjdCB2b21zZGF0YSAqdmQsCisgICAgICAg ICAgICAgICAgICAgIHZvbXNfY29tbWFuZF90ICpjb21tYW5kLAorICAgICAgICAgICAgICAgICAg ICBjaGFyICp2b21zZXNfcGF0aCkKKyB7CitAQCAtNjAsNyArNjAsNyBAQCB2b21zX2dldF91c2Vy X2luZm8oc3RydWN0IHZvbXNkYXRhICp2ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbmZvLT5jb250YWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQt PmNvbW1hbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmQsCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmVycik7IAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZlcnIpOworICAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgIC8qIGlmIGNv bnRhY3Qgc3VjY2VkZWQganVtcHMgdG8gb3RoZXIgVk9zICovCisgICAgICAgICAgICAgcmV0dXJu X2NvZGUgPSAwOworQEAgLTE2NCw3ICsxNjQsNyBAQCB2b21zZXNfd3JpdGVfdG9fdGVtcG9yYXJ5 KGNoYXIgKnZvbXNlcywgY2hhciAqdGVtcGxhdGUpCisgCisgICBkb25lOgorIAorLSAgICByZXR1 cm4gcmV0dXJuX3N0YXR1czsgCisrICAgIHJldHVybiByZXR1cm5fc3RhdHVzOworIH0KKyAKKyBz dGF0aWMgaW50CitAQCAtMTk5LDcgKzE5OSw3IEBAIHZvbXNfZ2V0X3JvbGVfY29tbWFuZChjb25z dCBjaGFyICpzdHIpCisgeworICAgICBjaGFyICpidWYgPSBOVUxMOworICAgICBjaGFyICpwX3Jv bGUgPSBOVUxMOworLSAgICBzaXplX3QgYnVmX2xlbiwgcm9sZV9sZW47OyAKKysgICAgc2l6ZV90 IGJ1Zl9sZW4sIHJvbGVfbGVuOzsKKyAgICAgaW50IGkgPSAwOworIAorICAgICBpZiAoKHN0ciA9 PSBOVUxMKSB8fCAoc3RyWzBdID09ICdcMCcpKSB7CitAQCAtMjgwLDcgKzI4MCw3IEBAIHN0YXRp YyBjaGFyICoKKyB2b21zX2dldF9ncm91cF9jb21tYW5kKGNvbnN0IGNoYXIgKnN0cikKKyB7Cisg ICAgIGNoYXIgKmJ1ZiA9IE5VTEw7CistICAgIHNpemVfdCBidWZfbGVuID0gMCwgc3RyX2xlbiA9 IDA7IAorKyAgICBzaXplX3QgYnVmX2xlbiA9IDAsIHN0cl9sZW4gPSAwOworICAgICBpbnQgaSA9 IDA7CisgCisgICAgIGlmICgoc3RyID09IE5VTEwpIHx8IChzdHJbMF0gPT0gJ1wwJykpIHsKK0BA IC0zNDEsNyArMzQxLDcgQEAgdm9tc19jb252ZXJ0X2NvbW1hbmQoY29uc3QgY2hhciAqc3RyKQor ICAgICByZXR1cm4gcmVzdWx0OworIH0KKyAKKy1zdGF0aWMgaW50IAorK3N0YXRpYyBpbnQKKyB2 b21zX3BhcnNlX2NvbW1hbmQoY29uc3QgY2hhciAqdm9tcywgY2hhciAqKnZvLCBjaGFyICoqY29t bWFuZCkKKyB7CisgICAgIGludCByZXN1bHQgPSAxOworQEAgLTQ0OCwxMiArNDQ4LDEyIEBAIHZv bXNfY29tbWFuZF9saXN0X2FkZCh2b21zX2NvbW1hbmRfdCAqKmhlYWRSZWYsIGNvbnN0IGNoYXIg KnZvLCBjb25zdCBjaGFyICpjbWQpCisgICAgICAgICAgICAgcmVzdWx0ID0gMDsKKyAgICAgICAg IH0KKyAgICAgfSBlbHNlIHsKKy0gICAgICAgIG5vZGUgPSB2b21zX2NvbW1hbmRfbGlzdF9maW5k KGN1cnJlbnQsIHZvKTsgCisrICAgICAgICBub2RlID0gdm9tc19jb21tYW5kX2xpc3RfZmluZChj dXJyZW50LCB2byk7CisgICAgICAgICBpZiAobm9kZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAg LyogQXBwZW5kIGNvbW1hbmQgdG8gdGhlIG5vZGUgKi8KKyAgICAgICAgICAgICBteV9hcHBlbmQo Jihub2RlLT5jb21tYW5kKSwgIiwiLCBjbWQsIE5VTEwpOworICAgICAgICAgICAgIHJlc3VsdCA9 IDA7CistICAgICAgICB9IGVsc2UgeyAKKysgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg LyogQ3JlYXRlIGFuZCBBZGQgYSBuZXcgbm9kZSB0byBsYXN0ICovCisgICAgICAgICAgICAgbm9k ZSA9IHZvbXNfY29tbWFuZF9uZXcodm8sIGNtZCk7CisgICAgICAgICAgICAgaWYgKG5vZGUgIT0g TlVMTCkgeworQEAgLTU3NSwxMyArNTc1LDEzIEBAIGdldF9BQ19TRVEoc3RydWN0IHZvbXNkYXRh ICp2ZCwgdW5zaWduZWQgY2hhciAqKmFjbGlzdCwgaW50ICphY2xpc3RfbGVuZ3RoKQorIAorIC8q CisgICogR2V0IFZPTVMgVXNlciBpbmZvCistICogCisrICoKKyAgKiBAcGFyYW0gYWNsaXN0IERF Ui1lbmNvZGVkIEFDLXNlcXVlbmNlCisgICogQHBhcmFtIGFjbGlzdF9sZW5ndGggbGVuZ3RoIG9m IGFjbGlzdAorICAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIDEgb24gZXJyb3IuCisgICovCist aW50IAorLXZvbXNfY29udGFjdChTU0xfQ1JFREVOVElBTFMgKmNyZWRzLCBpbnQgbGlmZXRpbWUs IAorK2ludAorK3ZvbXNfY29udGFjdChTU0xfQ1JFREVOVElBTFMgKmNyZWRzLCBpbnQgbGlmZXRp bWUsCisgICAgICAgICAgICAgIGNoYXIgKnZvbmFtZSwgY2hhciAqdm9tc2VzLCBjaGFyICp2b21z X3VzZXJjb25mLAorICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqYWNsaXN0LCBpbnQgKmFj bGlzdF9sZW5ndGgpCisgCitAQCAtNTg5LDcgKzU4OSw3IEBAIHZvbXNfY29udGFjdChTU0xfQ1JF REVOVElBTFMgKmNyZWRzLCBpbnQgbGlmZXRpbWUsCisgCisgICAgIGludCByZXR1cm5fY29kZSA9 IDE7CisgICAgIGludCB2ZXJpZnlfYWMgPSAwOworLSAgICBzdHJ1Y3Qgdm9tc2RhdGEgKnZkID0g TlVMTDsgCisrICAgIHN0cnVjdCB2b21zZGF0YSAqdmQgPSBOVUxMOworICAgICBpbnQgZXJyOwor ICAgICBpbnQgcmVzdWx0ID0gMTsKKyAgICAgaW50IGlzX3dyaXRlX3RlbXBfdm9tc2VzID0gMDsK K0BAIC02NDIsNyArNjQyLDcgQEAgdm9tc19jb250YWN0KFNTTF9DUkVERU5USUFMUyAqY3JlZHMs IGludCBsaWZldGltZSwKKyAgICAgICAgIH0KKyAgICAgICAgIGlzX3dyaXRlX3RlbXBfdm9tc2Vz ID0gMTsKKyAgICAgfSBlbHNlIHsKKy0gICAgICAgIGlmICh2b21zX3VzZXJjb25mID09IE5VTEwp IHsgCisrICAgICAgICBpZiAodm9tc191c2VyY29uZiA9PSBOVUxMKSB7CisgICAgICAgICAgICAg dmVycm9yX3B1dF9zdHJpbmcoIk5vIFZPTVMgU2VydmVyIEluZm9ybWF0aW9uIik7CisgICAgICAg ICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgIH0KK0BAIC02NjEsOCArNjYxLDggQEAgdm9tc19j b250YWN0KFNTTF9DUkVERU5USUFMUyAqY3JlZHMsIGludCBsaWZldGltZSwKKyAgICAgLyogU2V0 IFg1MDlfVVNFUl9DRVJULCBYNTA5X1VTRVJfS0VZICovCisgICAgIG9sZF91Y2VydCA9IGdldGVu digiWDUwOV9VU0VSX0NFUlQiKTsKKyAgICAgb2xkX3VrZXkgID0gZ2V0ZW52KCJYNTA5X1VTRVJf S0VZIik7CistICAgIC8qIAorLSAgICAgICAgU2F2ZSBjcmVkZW50aWFsIChjZXJ0ICYgcHJpdmF0 ZSBrZXkpIHRvIGNyZWRfcGF0aCAKKysgICAgLyoKKysgICAgICAgIFNhdmUgY3JlZGVudGlhbCAo Y2VydCAmIHByaXZhdGUga2V5KSB0byBjcmVkX3BhdGgKKyAgICAgICAgIGNyZWRfcGF0aCBpcyBt b2RpZmllZCBvbiBzdWNjZXNzLgorICAgICAgKi8KKyAgICAgaWYgKCBjcmVkZW50aWFsX3dyaXRl X3RvX3RlbXBvcmFyeShjcmVkcywgY3JlZF9wYXRoKSAhPSBTU0xfU1VDQ0VTUyApIHsKK0BAIC03 NTUsNyArNzU1LDcgQEAgdm9pZCBnZXRfdm9tc19wcm94eShteXByb3h5X3NvY2tldF9hdHRyc190 ICphdHRycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpZmV0aW1lLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC0+cGFzc3BocmFzZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnZvbmFtZSwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlcXVlc3QtPnZvbXNlcywgCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXF1ZXN0LT52b21zZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWct PnZvbXNfdXNlcmNvbmYpIDwgMCkgeworICAgICAgICAgcmVzcG9uc2UtPnJlc3BvbnNlX3R5cGUg PSBNWVBST1hZX0VSUk9SX1JFU1BPTlNFOworICAgICAgICAgcmVzcG9uc2UtPmVycm9yX3N0cmlu ZyA9IHN0cmR1cCggdmVycm9yX2dldF9zdHJpbmcoKSApOworQEAgLTgwMywxMSArODAzLDExIEBA IHZvbXNfY3JlYXRlX0FDX1NFUV9YNTA5X0VYVEVOU0lPTih1bnNpZ25lZCBjaGFyICphY3NlcSwg aW50IGFjc2VxX2xlbmd0aCkKKyAKKyBzdGF0aWMgaW50Cisgdm9tc19jb250YWN0X2V4dChjb25z dCBjaGFyICpzb3VyY2VfY3JlZGVudGlhbHMsIGNvbnN0IGludCBsaWZldGltZSwKKy0gICAgICAg ICAgICAgICAgIGNoYXIgKnBhc3NwaHJhc2UsIAorKyAgICAgICAgICAgICAgICAgY2hhciAqcGFz c3BocmFzZSwKKyAgICAgICAgICAgICAgICAgIGNoYXIgKnZvbmFtZSwgY2hhciAqdm9tc2VzLCBj aGFyICp2b21zX3VzZXJjb25mKQorLXsgCisreworICAgICBpbnQgcmVzdWx0ID0gMTsKKy0gICAg U1NMX0NSRURFTlRJQUxTICpjcmVkcyA9IE5VTEw7IAorKyAgICBTU0xfQ1JFREVOVElBTFMgKmNy ZWRzID0gTlVMTDsKKyAgICAgdW5zaWduZWQgY2hhciAgICphY3NlcT0gTlVMTDsKKyAgICAgaW50 ICAgICAgICAgICAgIGFjc2VxX2xlbmd0aCA9IDA7CisgICAgIFg1MDlfRVhURU5TSU9OICAqZXh0 ID0gTlVMTDsKK0BAIC04MTcsNyArODE3LDcgQEAgdm9tc19jb250YWN0X2V4dChjb25zdCBjaGFy ICpzb3VyY2VfY3JlZGVudGlhbHMsIGNvbnN0IGludCBsaWZldGltZSwKKyAgICAgaWYgKGNyZWRz ID09IE5VTEwpIHsKKyAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgfQorLSAgICBpZiAoc3NsX3By b3h5X2xvYWRfZnJvbV9maWxlKGNyZWRzLCBzb3VyY2VfY3JlZGVudGlhbHMsIAorKyAgICBpZiAo c3NsX3Byb3h5X2xvYWRfZnJvbV9maWxlKGNyZWRzLCBzb3VyY2VfY3JlZGVudGlhbHMsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3BocmFzZSkgPT0gU1NMX0VSUk9SKSB7 CisgICAgICAgICBnb3RvIGRvbmU7CisgICAgIH0KK0BAIC04NjIsNyArODYyLDcgQEAgdm9tc19p bml0X2RlbGVnYXRpb24obXlwcm94eV9zb2NrZXRfYXR0cnNfdCAqYXR0cnMsCisgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqZGVsZWdmaWxlLAorICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGludCBsaWZldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICBjaGFyICpwYXNzcGhy YXNlLAorLSAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnZvbmFtZSwgY2hhciAqdm9tc2VzLCAK KysgICAgICAgICAgICAgICAgICAgICBjaGFyICp2b25hbWUsIGNoYXIgKnZvbXNlcywKKyAgICAg ICAgICAgICAgICAgICAgICBjaGFyICp2b21zX3VzZXJjb25mKQorIHsKKyAKK0BAIC04NzQsNyAr ODc0LDcgQEAgdm9tc19pbml0X2RlbGVnYXRpb24obXlwcm94eV9zb2NrZXRfYXR0cnNfdCAqYXR0 cnMsCisgICAgICAgICByZXR1cm4gLTE7CisgCisgCistICAgIGlmICh2b21zX2NvbnRhY3RfZXh0 KGRlbGVnZmlsZSwgbGlmZXRpbWUsIHBhc3NwaHJhc2UsIAorKyAgICBpZiAodm9tc19jb250YWN0 X2V4dChkZWxlZ2ZpbGUsIGxpZmV0aW1lLCBwYXNzcGhyYXNlLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgdm9uYW1lLCB2b21zZXMsIHZvbXNfdXNlcmNvbmYpKQorICAgICB7CisgICAgICAg ICB2ZXJyb3JfcHV0X3N0cmluZygiQ291bGRuJ3QgZ2V0IFZPTVMgVXNlciBJbmZvcm1hdGlvbi4i KTsKKy0tIAorMi41NC4wCisKCmRpZmYgLS1naXQgYS8wMDAyLUJ1aWxkLXdpdGgtT3BlblNTTC00 LnBhdGNoIGIvMDAwMi1CdWlsZC13aXRoLU9wZW5TU0wtNC5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5lMzMzMTQzCi0tLSAvZGV2L251bGwKKysrIGIvMDAwMi1CdWls ZC13aXRoLU9wZW5TU0wtNC5wYXRjaApAQCAtMCwwICsxLDIzMyBAQAorRnJvbSAyNDM3NWI4NTAz ZDJhNDM3MzYwMGIxNGQwMzcwMGI2OTc0MTU3MzdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogTWF0dGlhcyBFbGxlcnQgPG1hdHRpYXMuZWxsZXJ0QHBoeXNpY3MudXUuc2U+CitEYXRl OiBXZWQsIDIwIE1heSAyMDI2IDAwOjE1OjM3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBC dWlsZCB3aXRoIE9wZW5TU0wgNAorCistLS0KKyBteXByb3h5L3NvdXJjZS9jZXJ0YXV0aF9leHRl bnNpb25zLmMgfCAyMyArKysrKysrKysrKystLS0tLS0tLS0tLQorIG15cHJveHkvc291cmNlL215 cHJveHlfb2NzcC5jICAgICAgICB8IDEwICsrKysrKystLS0KKyBteXByb3h5L3NvdXJjZS9teXBy b3h5X29jc3BfYWlhLmMgICAgfCAyNiArKysrKysrKysrKysrKysrKysrKystLS0tLQorIG15cHJv eHkvc291cmNlL3NzbF91dGlscy5jICAgICAgICAgICB8IDExICsrKysrKysrKystCisgbXlwcm94 eS9zb3VyY2Uvdm9tc2NsaWVudC5jICAgICAgICAgIHwgIDYgKystLS0tCisgNSBmaWxlcyBjaGFu Z2VkLCA1MiBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL215 cHJveHkvc291cmNlL2NlcnRhdXRoX2V4dGVuc2lvbnMuYyBiL215cHJveHkvc291cmNlL2NlcnRh dXRoX2V4dGVuc2lvbnMuYworaW5kZXggNGViZjgzYjljLi5kZDJmNWQzYWYgMTAwNjQ0CistLS0g YS9teXByb3h5L3NvdXJjZS9jZXJ0YXV0aF9leHRlbnNpb25zLmMKKysrKyBiL215cHJveHkvc291 cmNlL2NlcnRhdXRoX2V4dGVuc2lvbnMuYworQEAgLTM2MSw3ICszNjEsNyBAQCBhc3NpZ25fc2Vy aWFsX251bWJlciggWDUwOSAqY2VydCwKKyAgICAgICBBU04xX0lOVEVHRVJfc2V0KGN1cnJlbnQs IHNlcnZlcl9jb250ZXh0LT5jZXJ0aWZpY2F0ZV9zZXJpYWxfc2tpcCk7CisgICB9CisgCistICBz ZXJpYWwgPSBCTl9iaW4yYm4oIGN1cnJlbnQtPmRhdGEsIGN1cnJlbnQtPmxlbmd0aCwgc2VyaWFs ICk7CisrICBzZXJpYWwgPSBCTl9iaW4yYm4oIEFTTjFfU1RSSU5HX2dldDBfZGF0YShjdXJyZW50 KSwgQVNOMV9TVFJJTkdfbGVuZ3RoKGN1cnJlbnQpLCBzZXJpYWwgKTsKKyAgIGlmICggc2VyaWFs ID09IE5VTEwgKSB7CisgICAgIHZlcnJvcl9wdXRfc3RyaW5nKCJFcnJvciBjb252ZXJ0aW5nIHRv IGJpZ251bVxuIik7CisgICAgIHNzbF9lcnJvcl90b192ZXJyb3IoKTsKK0BAIC01MjIsNyArNTIy LDcgQEAgZ2VuZXJhdGVfY2VydGlmaWNhdGUoIFg1MDlfUkVRICAgICAgICAgICAgICAgICAqcmVx dWVzdCwKKyAgICAgZ290byBlcnJvcjsKKyAgIH0KKyAKKy0gIHN1YmplY3QgPSBYNTA5X2dldF9z dWJqZWN0X25hbWUoY2VydCk7CisrICBzdWJqZWN0ID0gWDUwOV9OQU1FX2R1cChYNTA5X2dldF9z dWJqZWN0X25hbWUoY2VydCkpOworIAorICAgZ2xvYnVzX3Jlc3VsdCA9CisgICAgICAgZ2xvYnVz X2dzaV9jZXJ0X3V0aWxzX2dldF94NTA5X25hbWUodXNlcmRuLCBzdHJsZW4odXNlcmRuKSwgc3Vi amVjdCk7CitAQCAtNTM2LDIzICs1MzYsMjEgQEAgZ2VuZXJhdGVfY2VydGlmaWNhdGUoIFg1MDlf UkVRICAgICAgICAgICAgICAgICAqcmVxdWVzdCwKKyAgICAgIHByb2JsZW1zIHdlIGZpbmQuKi8K KyAgIGZvciAoaSA9IDA7IGkgPCBYNTA5X05BTUVfZW50cnlfY291bnQoc3ViamVjdCk7IGkrKykK KyAgIHsKKy0gICAgICBYNTA5X05BTUVfRU5UUlkgKm5lID0gTlVMTDsKKy0gICAgICBBU04xX1NU UklORyAqc3RyID0gTlVMTDsKKy0gICAgICBBU04xX09CSkVDVCAqb2JqID0gTlVMTDsKKysgICAg ICBjb25zdCBYNTA5X05BTUVfRU5UUlkgKm5lID0gTlVMTDsKKysgICAgICBjb25zdCBBU04xX1NU UklORyAqc3RyID0gTlVMTDsKKysgICAgICBjb25zdCBBU04xX09CSkVDVCAqb2JqID0gTlVMTDsK KyAKKyAgICAgICBuZSA9IFg1MDlfTkFNRV9nZXRfZW50cnkoc3ViamVjdCwgaSk7CisgICAgICAg c3RyID0gWDUwOV9OQU1FX0VOVFJZX2dldF9kYXRhKG5lKTsKKyAgICAgICBvYmogPSBYNTA5X05B TUVfRU5UUllfZ2V0X29iamVjdChuZSk7CisgCisgICAgICAgaWYgKChPQkpfb2JqMm5pZChvYmop ID09IE5JRF9kb21haW5Db21wb25lbnQpICYmCistICAgICAgICAgIChzdHItPnR5cGUgPT0gVl9B U04xX1BSSU5UQUJMRVNUUklORykpIHsKKy0gICAgICAgICAgbXlwcm94eV9kZWJ1ZygiU2V0dGlu ZyBEQyB0eXBlIHRvIElBNVN0cmluZy4iKTsKKy0gICAgICAgICAgc3RyLT50eXBlID0gVl9BU04x X0lBNVNUUklORzsKKysgICAgICAgICAgKEFTTjFfU1RSSU5HX3R5cGUoc3RyKSA9PSBWX0FTTjFf UFJJTlRBQkxFU1RSSU5HKSkgeworKyAgICAgICAgICBteXByb3h5X2RlYnVnKCJDYW4ndCBzZXQg REMgdHlwZSB0byBJQTVTdHJpbmcuIik7CisgICAgICAgfQorICAgICAgIGlmICgoT0JKX29iajJu aWQob2JqKSA9PSBOSURfcGtjczlfZW1haWxBZGRyZXNzKSAmJgorLSAgICAgICAgICAoc3RyLT50 eXBlID09IFZfQVNOMV9QUklOVEFCTEVTVFJJTkcpKSB7CistICAgICAgICAgIG15cHJveHlfZGVi dWcoIlNldHRpbmcgZW1haWxBZGRyZXNzIHR5cGUgdG8gSUE1U3RyaW5nLiIpOworLSAgICAgICAg ICBzdHItPnR5cGUgPSBWX0FTTjFfSUE1U1RSSU5HOworKyAgICAgICAgICAoQVNOMV9TVFJJTkdf dHlwZShzdHIpID09IFZfQVNOMV9QUklOVEFCTEVTVFJJTkcpKSB7CisrICAgICAgICAgIG15cHJv eHlfZGVidWcoIkNhbid0IHNldCBlbWFpbEFkZHJlc3MgdHlwZSB0byBJQTVTdHJpbmcuIik7Cisg ICAgICAgfQorICAgfQorIAorQEAgLTU2Niw2ICs1NjQsOSBAQCBnZW5lcmF0ZV9jZXJ0aWZpY2F0 ZSggWDUwOV9SRVEgICAgICAgICAgICAgICAgICpyZXF1ZXN0LAorICAgICAgIGdvdG8gZXJyb3I7 CisgICB9CisgCisrICBYNTA5X3NldF9zdWJqZWN0X25hbWUoY2VydCwgc3ViamVjdCk7CisrICBY NTA5X05BTUVfZnJlZShzdWJqZWN0KTsKKysKKyAgIGlmICgoaXNzdWVyX2NlcnQgPSBQRU1fcmVh ZF9YNTA5KGlzc3Vlcl9jZXJ0X2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBOVUxMLCBOVUxMLCBOVUxMKSkgPT0gTlVMTCkKKyAgIHsKK2RpZmYgLS1naXQgYS9teXBy b3h5L3NvdXJjZS9teXByb3h5X29jc3AuYyBiL215cHJveHkvc291cmNlL215cHJveHlfb2NzcC5j CitpbmRleCA0MTE4MTk4NTIuLjFjZGU2NDFjNyAxMDA2NDQKKy0tLSBhL215cHJveHkvc291cmNl L215cHJveHlfb2NzcC5jCisrKysgYi9teXByb3h5L3NvdXJjZS9teXByb3h5X29jc3AuYworQEAg LTE2NCwxMSArMTY0LDE1IEBAIHN0YXRpYyBpbnQKKyB2ZXJpZnlfY2VydF9ob3N0bmFtZShYNTA5 ICpjZXJ0LCBjaGFyICpob3N0bmFtZSkgeworICAgaW50ICAgICAgICAgICAgICAgICAgIGV4dGNv dW50LCBpLCBqLCBvayA9IDA7CisgICBjaGFyICAgICAgICAgICAgICAgICAgbmFtZVsyNTZdOwor LSAgWDUwOV9OQU1FICAgICAgICAgICAgICpzdWJqOworKyAgY29uc3QgWDUwOV9OQU1FICAgICAg ICpzdWJqOworICAgY29uc3QgY2hhciAgICAgICAgICAgICpleHRzdHI7CisgICBDT05GX1ZBTFVF ICAgICAgICAgICAgKm52YWw7CisgICBjb25zdCB1bnNpZ25lZCBjaGFyICAgKmRhdGE7CisrI2lm IE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDQwMDAwMDAwTAorICAgWDUwOV9FWFRFTlNJT04g ICAgICAgICpleHQ7CisrI2Vsc2UKKysgIGNvbnN0IFg1MDlfRVhURU5TSU9OICAqZXh0OworKyNl bmRpZgorICAgWDUwOVYzX0VYVF9NRVRIT0QgICAgICptZXRoOworICAgU1RBQ0tfT0YoQ09ORl9W QUxVRSkgICp2YWw7CisgCitAQCAtMTc4LDkgKzE4Miw5IEBAIHZlcmlmeV9jZXJ0X2hvc3RuYW1l KFg1MDkgKmNlcnQsIGNoYXIgKmhvc3RuYW1lKSB7CisgICAgICAgZXh0c3RyID0gT0JKX25pZDJz bihPQkpfb2JqMm5pZChYNTA5X0VYVEVOU0lPTl9nZXRfb2JqZWN0KGV4dCkpKTsKKyAgICAgICBp ZiAoIXN0cmNhc2VjbXAoZXh0c3RyLCAic3ViamVjdEFsdE5hbWUiKSkgeworICAgICAgICAgaWYg KCEobWV0aCA9IChYNTA5VjNfRVhUX01FVEhPRCAqKVg1MDlWM19FWFRfZ2V0KGV4dCkpKSBicmVh azsKKy0gICAgICAgIGRhdGEgPSBYNTA5X0VYVEVOU0lPTl9nZXRfZGF0YShleHQpLT5kYXRhOwor KyAgICAgICAgZGF0YSA9IEFTTjFfU1RSSU5HX2dldDBfZGF0YShYNTA5X0VYVEVOU0lPTl9nZXRf ZGF0YShleHQpKTsKKyAKKy0gICAgICAgIHZhbCA9IG1ldGgtPmkydihtZXRoLCBtZXRoLT5kMmko MCwgJmRhdGEsIFg1MDlfRVhURU5TSU9OX2dldF9kYXRhKGV4dCktPmxlbmd0aCksIDApOworKyAg ICAgICAgdmFsID0gbWV0aC0+aTJ2KG1ldGgsIG1ldGgtPmQyaSgwLCAmZGF0YSwgQVNOMV9TVFJJ TkdfbGVuZ3RoKFg1MDlfRVhURU5TSU9OX2dldF9kYXRhKGV4dCkpKSwgMCk7CisgICAgICAgICBm b3IgKGogPSAwOyAgaiA8IHNrX0NPTkZfVkFMVUVfbnVtKHZhbCk7ICBqKyspIHsKKyAgICAgICAg ICAgbnZhbCA9IHNrX0NPTkZfVkFMVUVfdmFsdWUodmFsLCBqKTsKKyAgICAgICAgICAgaWYgKCFz dHJjYXNlY21wKG52YWwtPm5hbWUsICJETlMiKSAmJiAhc3RyY2FzZWNtcChudmFsLT52YWx1ZSwg aG9zdG5hbWUpKSB7CitkaWZmIC0tZ2l0IGEvbXlwcm94eS9zb3VyY2UvbXlwcm94eV9vY3NwX2Fp YS5jIGIvbXlwcm94eS9zb3VyY2UvbXlwcm94eV9vY3NwX2FpYS5jCitpbmRleCBjMDFkODVlNGYu LjRhNjI0NjVmNSAxMDA2NDQKKy0tLSBhL215cHJveHkvc291cmNlL215cHJveHlfb2NzcF9haWEu YworKysrIGIvbXlwcm94eS9zb3VyY2UvbXlwcm94eV9vY3NwX2FpYS5jCitAQCAtMzUsOCArMzUs MTQgQEAKKyAjaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD4KKyAjaW5jbHVkZSA8b3BlbnNzbC94NTA5 djMuaD4KKyAKKysjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4NDAwMDAwMDBMCisgc3Rh dGljIEFVVEhPUklUWV9JTkZPX0FDQ0VTUyAqCistbXlfYWlhX2dldChYNTA5X0VYVEVOU0lPTiAq ZXh0KSB7CisrbXlfYWlhX2dldChYNTA5X0VYVEVOU0lPTiAqZXh0KQorKyNlbHNlCisrc3RhdGlj IEFVVEhPUklUWV9JTkZPX0FDQ0VTUyAqCisrbXlfYWlhX2dldChjb25zdCBYNTA5X0VYVEVOU0lP TiAqZXh0KQorKyNlbmRpZgorK3sKKyAgICAgY29uc3QgWDUwOVYzX0VYVF9NRVRIT0QgKm1ldGhv ZCA9IE5VTEw7CisgICAgIHZvaWQgKmV4dF9zdHIgPSBOVUxMOworICAgICBjb25zdCB1bnNpZ25l ZCBjaGFyICpwOworQEAgLTUzLDggKzU5LDggQEAgbXlfYWlhX2dldChYNTA5X0VYVEVOU0lPTiAq ZXh0KSB7CisgICAgICAgICByZXR1cm4oTlVMTCk7CisgICAgIH0KKyAKKy0gICAgcCA9IFg1MDlf RVhURU5TSU9OX2dldF9kYXRhKGV4dCktPmRhdGE7CistICAgIGxlbiA9IFg1MDlfRVhURU5TSU9O X2dldF9kYXRhKGV4dCktPmxlbmd0aDsKKysgICAgcCA9IEFTTjFfU1RSSU5HX2dldDBfZGF0YShY NTA5X0VYVEVOU0lPTl9nZXRfZGF0YShleHQpKTsKKysgICAgbGVuID0gQVNOMV9TVFJJTkdfbGVu Z3RoKFg1MDlfRVhURU5TSU9OX2dldF9kYXRhKGV4dCkpOworICAgICBpZiAobWV0aG9kLT5pdCkg eworICAgICAgICAgZXh0X3N0ciA9IEFTTjFfaXRlbV9kMmkoTlVMTCwgJnAsIGxlbiwgQVNOMV9J VEVNX3B0cihtZXRob2QtPml0KSk7CisgICAgIH0gZWxzZSB7CitAQCAtNjgsOCArNzQsMTQgQEAg bXlfYWlhX2dldChYNTA5X0VYVEVOU0lPTiAqZXh0KSB7CisgICAgIHJldHVybigoQVVUSE9SSVRZ X0lORk9fQUNDRVNTKilleHRfc3RyKTsKKyB9CisgCisrI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1C RVIgPCAweDQwMDAwMDAwTAorK3N0YXRpYyB2b2lkCisrbXlfYWlhX2ZyZWUoWDUwOV9FWFRFTlNJ T04gKmV4dCwgQVVUSE9SSVRZX0lORk9fQUNDRVNTKiBhaWEpCisrI2Vsc2UKKyBzdGF0aWMgdm9p ZAorLW15X2FpYV9mcmVlKFg1MDlfRVhURU5TSU9OICpleHQsIEFVVEhPUklUWV9JTkZPX0FDQ0VT UyogYWlhKSB7CisrbXlfYWlhX2ZyZWUoY29uc3QgWDUwOV9FWFRFTlNJT04gKmV4dCwgQVVUSE9S SVRZX0lORk9fQUNDRVNTKiBhaWEpCisrI2VuZGlmCisreworICAgICBjb25zdCBYNTA5VjNfRVhU X01FVEhPRCAqbWV0aG9kID0gTlVMTDsKKyAKKyAgICAgaWYgKGV4dCA9PSBOVUxMKSB7CitAQCAt OTksNyArMTExLDExIEBAIG15cHJveHlfZ2V0X2FpYV9vY3NwX3VyaShYNTA5ICpjZXJ0KQorICAg ICAgICAgIGxvYyA+PSAwOworICAgICAgICAgIGxvYyA9IFg1MDlfZ2V0X2V4dF9ieV9OSUQoY2Vy dCwgTklEX2luZm9fYWNjZXNzLCBsb2MpKSB7CisgCisrI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1C RVIgPCAweDQwMDAwMDAwTAorICAgICAgICAgWDUwOV9FWFRFTlNJT04gICp4ZTsKKysjZWxzZQor KyAgICAgICAgY29uc3QgWDUwOV9FWFRFTlNJT04gICp4ZTsKKysjZW5kaWYKKyAgICAgICAgIEFV VEhPUklUWV9JTkZPX0FDQ0VTUyAgICphaWE7CisgICAgICAgICBpbnQgazsKKyAKK0BAIC0xMjMs NyArMTM5LDcgQEAgbXlwcm94eV9nZXRfYWlhX29jc3BfdXJpKFg1MDkgKmNlcnQpCisgICAgICAg ICAgICAgaWYgKGduLT50eXBlICE9IEdFTl9VUkkpIGNvbnRpbnVlOworIAorICAgICAgICAgICAg IGFzbjFfdXJpID0gZ24tPmQudW5pZm9ybVJlc291cmNlSWRlbnRpZmllcjsKKy0gICAgICAgICAg ICB1cmkgPSBzdHJkdXAoKGNvbnN0IGNoYXIqKWFzbjFfdXJpLT5kYXRhKTsKKysgICAgICAgICAg ICB1cmkgPSBzdHJkdXAoKGNvbnN0IGNoYXIqKUFTTjFfU1RSSU5HX2dldDBfZGF0YShhc24xX3Vy aSkpOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorIAorZGlmZiAtLWdpdCBhL215 cHJveHkvc291cmNlL3NzbF91dGlscy5jIGIvbXlwcm94eS9zb3VyY2Uvc3NsX3V0aWxzLmMKK2lu ZGV4IGUzNjEzNGUyYy4uYzgzODQ4Nzg0IDEwMDY0NAorLS0tIGEvbXlwcm94eS9zb3VyY2Uvc3Ns X3V0aWxzLmMKKysrKyBiL215cHJveHkvc291cmNlL3NzbF91dGlscy5jCitAQCAtNzksMTggKzc5 LDI3IEBAIHZvaWQKKyBzc2xfZXJyb3JfdG9fdmVycm9yKCkKKyB7CisgICAgIHVuc2lnbmVkIGxv bmcgZXJyb3I7CisrI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDMwMDAwMDAwTAorICAg ICBFUlJfU1RBVEUgKmVycm9yX3N0YXRlOworLSAgICBjb25zdCBjaGFyICplcnJvcl9kYXRhOwor ICAgICBpbnQgZXJyb3JfbnVtYmVyOworKyNlbHNlCisrICAgIGludCBmbGFnczsKKysjZW5kaWYK KysgICAgY29uc3QgY2hhciAqZXJyb3JfZGF0YTsKKyAKKyAgICAgd2hpbGUgKChlcnJvciA9IEVS Ul9wZWVrX2Vycm9yKCkpICE9IDApCisgICAgIHsKKysjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJF UiA8IDB4MzAwMDAwMDBMCisgICAgICAgICAvKiBGaW5kIGRhdGEgZm9yIGxhc3QgZXJyb3IgKi8K KyAgICAgICAgIGVycm9yX3N0YXRlID0gRVJSX2dldF9zdGF0ZSgpOworIAorICAgICAgICAgZXJy b3JfbnVtYmVyID0gKGVycm9yX3N0YXRlLT5ib3R0b20gKyAxKSAlIEVSUl9OVU1fRVJST1JTOwor IAorICAgICAgICAgZXJyb3JfZGF0YSA9IGVycm9yX3N0YXRlLT5lcnJfZGF0YVtlcnJvcl9udW1i ZXJdOworKyNlbHNlCisrCUVSUl9wZWVrX2Vycm9yX2RhdGEoJmVycm9yX2RhdGEsICZmbGFncyk7 CisrCWlmICghKGZsYWdzICYgRVJSX1RYVF9TVFJJTkcpKSBlcnJvcl9kYXRhID0gTlVMTDsKKysj ZW5kaWYKKyAKKyAgICAgICAgIC8qIE5vdyBhZGQgdG8gdmVycm9yIHN0YXRlICovCisgICAgICAg ICB2ZXJyb3JfcHV0X3N0cmluZygiJXMiLCBFUlJfZXJyb3Jfc3RyaW5nKGVycm9yLCBOVUxMKSk7 CitkaWZmIC0tZ2l0IGEvbXlwcm94eS9zb3VyY2Uvdm9tc2NsaWVudC5jIGIvbXlwcm94eS9zb3Vy Y2Uvdm9tc2NsaWVudC5jCitpbmRleCA2N2Y1ZWUzMTguLjk3ODc5ZWE1NiAxMDA2NDQKKy0tLSBh L215cHJveHkvc291cmNlL3ZvbXNjbGllbnQuYworKysrIGIvbXlwcm94eS9zb3VyY2Uvdm9tc2Ns aWVudC5jCitAQCAtNzc5LDEzICs3NzksMTEgQEAgdm9tc19jcmVhdGVfQUNfU0VRX1g1MDlfRVhU RU5TSU9OKHVuc2lnbmVkIGNoYXIgKmFjc2VxLCBpbnQgYWNzZXFfbGVuZ3RoKQorICAgICAgICAg Z290byBlcnJvcjsKKyAgICAgfQorIAorLSAgICBhY19ERVJfc3RyaW5nLT5kYXRhID0gKHVuc2ln bmVkIGNoYXIqKW1hbGxvYyhhY3NlcV9sZW5ndGgpOworLSAgICBpZiAoYWNfREVSX3N0cmluZy0+ ZGF0YSA9PSBOVUxMKSB7CisrICAgIGlmIChBU04xX09DVEVUX1NUUklOR19zZXQoYWNfREVSX3N0 cmluZywgYWNzZXEsIGFjc2VxX2xlbmd0aCkgPT0gMCkgeworICAgICAgICAgdmVycm9yX3B1dF9z dHJpbmcoIkNvdWxkbid0IGFsbG9jYXRlIEFTTjFfT0NURVQiKTsKKyAgICAgICAgIGdvdG8gZXJy b3I7CisgICAgIH0KKy0gICAgbWVtY3B5KGFjX0RFUl9zdHJpbmctPmRhdGEsIGFjc2VxLCBhY3Nl cV9sZW5ndGgpOworLSAgICBhY19ERVJfc3RyaW5nLT5sZW5ndGggPSBhY3NlcV9sZW5ndGg7Cisr CisgICAgIGV4dCA9IFg1MDlfRVhURU5TSU9OX2NyZWF0ZV9ieV9OSUQoTlVMTCwgT0JKX3R4dDJu aWQoImFjc2VxIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg YWNfREVSX3N0cmluZyk7CisgICAgIGlmIChleHQgPT0gTlVMTCkgeworLS0gCisyLjU0LjAKKwoK ZGlmZiAtLWdpdCBhLzAwMDMtRml4LWNvbXBpbGVyLWFuZC1kb3h5Z2VuLXdhcm5pbmdzLnBhdGNo IGIvMDAwMy1GaXgtY29tcGlsZXItYW5kLWRveHlnZW4td2FybmluZ3MucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYxMTExYgotLS0gL2Rldi9udWxsCisrKyBiLzAw MDMtRml4LWNvbXBpbGVyLWFuZC1kb3h5Z2VuLXdhcm5pbmdzLnBhdGNoCkBAIC0wLDAgKzEsMjY2 IEBACitGcm9tIDRlZTA4ZDEzZTI5NjMzMDllMjA2M2RjNDVkZWRkMDY3MzM3ZDNiNzYgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0aWFzIEVsbGVydCA8bWF0dGlhcy5lbGxlcnRA cGh5c2ljcy51dS5zZT4KK0RhdGU6IFdlZCwgMjAgTWF5IDIwMjYgMDA6MTU6MzcgKzAyMDAKK1N1 YmplY3Q6IFtQQVRDSCAzLzNdIEZpeCBjb21waWxlciBhbmQgZG94eWdlbiB3YXJuaW5ncworCist LS0KKyBteXByb3h5L3NvdXJjZS9jZXJ0YXV0aF9leHRlbnNpb25zLmMgICAgfCAgNCArLS0tCisg bXlwcm94eS9zb3VyY2UvZ3NzYXBpLmMgICAgICAgICAgICAgICAgIHwgMTAgKysrKystLS0tLQor IG15cHJveHkvc291cmNlL215cHJveHkuYyAgICAgICAgICAgICAgICB8ICA4ICsrKystLS0tCisg bXlwcm94eS9zb3VyY2UvbXlwcm94eV9hbGNmLmMgICAgICAgICAgIHwgIDIgKy0KKyBteXByb3h5 L3NvdXJjZS9teXByb3h5X2dldF9jcmVkZW50aWFsLmMgfCAxMCArKysrKy0tLS0tCisgbXlwcm94 eS9zb3VyY2UvbXlwcm94eV9zdG9yZS5jICAgICAgICAgIHwgIDggKysrKy0tLS0KKyBteXByb3h5 L3NvdXJjZS9wbHVnaW5fY29tbW9uLmMgICAgICAgICAgfCAgMiArLQorIG15cHJveHkvc291cmNl L3ZvbXNjbGllbnQuYyAgICAgICAgICAgICB8ICA4ICsrKystLS0tCisgOCBmaWxlcyBjaGFuZ2Vk LCAyNSBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL215cHJv eHkvc291cmNlL2NlcnRhdXRoX2V4dGVuc2lvbnMuYyBiL215cHJveHkvc291cmNlL2NlcnRhdXRo X2V4dGVuc2lvbnMuYworaW5kZXggZGQyZjVkM2FmLi40N2ExMjExNmEgMTAwNjQ0CistLS0gYS9t eXByb3h5L3NvdXJjZS9jZXJ0YXV0aF9leHRlbnNpb25zLmMKKysrKyBiL215cHJveHkvc291cmNl L2NlcnRhdXRoX2V4dGVuc2lvbnMuYworQEAgLTgyNSw2ICs4MjUsNyBAQCBnZW5lcmF0ZV9jZXJ0 aWZpY2F0ZSggWDUwOV9SRVEgICAgICAgICAgICAgICAgICpyZXF1ZXN0LAorIH0KKyAKKyAKKysj aWZuZGVmIE9QRU5TU0xfTk9fRU5HSU5FCisgc3RhdGljIGludAorIGFycmF5bGVuKGNoYXIgKipv cHRpb25zKSB7CisgICBjaGFyICoqcHRyOworQEAgLTgzNiw3ICs4MzcsNiBAQCBhcnJheWxlbihj aGFyICoqb3B0aW9ucykgeworICAgcmV0dXJuIGM7CisgfQorIAorLSNpZm5kZWYgT1BFTlNTTF9O T19FTkdJTkUKKyB2b2lkIHNodXRkb3duX29wZW5zc2xfZW5naW5lKHZvaWQpIHsKKyAgIGlmIChl X2Nha2V5KSBFVlBfUEtFWV9mcmVlKCBlX2Nha2V5ICk7CisgICBpZiAoZW5naW5lKSBFTkdJTkVf ZmluaXNoKGVuZ2luZSk7CitAQCAtODQ3LDcgKzg0Nyw2IEBAIHZvaWQgc2h1dGRvd25fb3BlbnNz bF9lbmdpbmUodm9pZCkgeworIAorICAgaWYgKGVuZ2luZV91c2VkKSBFTkdJTkVfY2xlYW51cCgp OworIH0KKy0jZW5kaWYKKyAKKyBzdGF0aWMgaW50IHVpX3JlYWRfZm4oVUkgKnVpLCBVSV9TVFJJ TkcgKnVpX3N0cmluZykgeworICAgICBzd2l0Y2goVUlfZ2V0X3N0cmluZ190eXBlKHVpX3N0cmlu ZykpIHsKK0BAIC04NzksNyArODc4LDYgQEAgc3RhdGljIGludCB1aV93cml0ZV9mbihVSSAqdWks IFVJX1NUUklORyAqdWlfc3RyaW5nKSB7CisgICAgIHJldHVybiAxOworIH0KKyAKKy0jaWZuZGVm IE9QRU5TU0xfTk9fRU5HSU5FCisgaW50IGluaXRpYWxpc2Vfb3BlbnNzbF9lbmdpbmUobXlwcm94 eV9zZXJ2ZXJfY29udGV4dF90ICpzZXJ2ZXJfY29udGV4dCkgeworICAgICBFTkdJTkUgKmU7Cisg ICAgIEVWUF9QS0VZICpjYWtleTsKK2RpZmYgLS1naXQgYS9teXByb3h5L3NvdXJjZS9nc3NhcGku YyBiL215cHJveHkvc291cmNlL2dzc2FwaS5jCitpbmRleCA3MGE2ZDI3ZTQuLmU3ODIyOWY0ZSAx MDA2NDQKKy0tLSBhL215cHJveHkvc291cmNlL2dzc2FwaS5jCisrKysgYi9teXByb3h5L3NvdXJj ZS9nc3NhcGkuYworQEAgLTU4MSwyOSArNTgxLDI5IEBAIHN0YXRpYyBjb250ZXh0X3QgKmdzc19u ZXdfY29udGV4dChjb25zdCBzYXNsX3V0aWxzX3QgKnV0aWxzKQorIAorIHN0YXRpYyB2b2lkIHNh c2xfZ3NzX2ZyZWVfY29udGV4dF9jb250ZW50cyhjb250ZXh0X3QgKnRleHQpCisgeworLSAgICBP TV91aW50MzIgbWFqX3N0YXQsIG1pbl9zdGF0OworKyAgICBPTV91aW50MzIgbWluX3N0YXQ7Cisg CisgICAgIGlmICghdGV4dCkgcmV0dXJuOworIAorICAgICBpZiAoc2FzbF9nc3NfbGliX2luaXQo dGV4dC0+dXRpbHMpICE9IFNBU0xfT0spIHJldHVybjsKKyAKKyAgICAgaWYgKHRleHQtPmdzc19j dHggIT0gR1NTX0NfTk9fQ09OVEVYVCkgeworLSAgICAgICAgbWFqX3N0YXQgPSAoKnBfa3JiNV9n c3NfZGVsZXRlX3NlY19jb250ZXh0KSgmbWluX3N0YXQsJnRleHQtPmdzc19jdHgsR1NTX0NfTk9f QlVGRkVSKTsKKysgICAgICAgICgqcF9rcmI1X2dzc19kZWxldGVfc2VjX2NvbnRleHQpKCZtaW5f c3RhdCwmdGV4dC0+Z3NzX2N0eCxHU1NfQ19OT19CVUZGRVIpOworICAgICAgICAgdGV4dC0+Z3Nz X2N0eCA9IEdTU19DX05PX0NPTlRFWFQ7CisgICAgIH0KKyAKKyAgICAgaWYgKHRleHQtPmNsaWVu dF9uYW1lICE9IEdTU19DX05PX05BTUUpIHsKKy0gICAgICAgIG1hal9zdGF0ID0gKCpwX2tyYjVf Z3NzX3JlbGVhc2VfbmFtZSkoJm1pbl9zdGF0LCZ0ZXh0LT5jbGllbnRfbmFtZSk7CisrICAgICAg ICAoKnBfa3JiNV9nc3NfcmVsZWFzZV9uYW1lKSgmbWluX3N0YXQsJnRleHQtPmNsaWVudF9uYW1l KTsKKyAgICAgICAgIHRleHQtPmNsaWVudF9uYW1lID0gR1NTX0NfTk9fTkFNRTsKKyAgICAgfQor IAorICAgICBpZiAodGV4dC0+c2VydmVyX25hbWUgIT0gR1NTX0NfTk9fTkFNRSkgeworLSAgICAg ICAgbWFqX3N0YXQgPSAoKnBfa3JiNV9nc3NfcmVsZWFzZV9uYW1lKSgmbWluX3N0YXQsJnRleHQt PnNlcnZlcl9uYW1lKTsKKysgICAgICAgICgqcF9rcmI1X2dzc19yZWxlYXNlX25hbWUpKCZtaW5f c3RhdCwmdGV4dC0+c2VydmVyX25hbWUpOworICAgICAgICAgdGV4dC0+c2VydmVyX25hbWUgPSBH U1NfQ19OT19OQU1FOworICAgICB9CisgCisgICAgIGlmICggdGV4dC0+c2VydmVyX2NyZWRzICE9 IEdTU19DX05PX0NSRURFTlRJQUwpIHsKKy0gICAgICAgIG1hal9zdGF0ID0gKCpwX2tyYjVfZ3Nz X3JlbGVhc2VfY3JlZCkoJm1pbl9zdGF0LCAmdGV4dC0+c2VydmVyX2NyZWRzKTsKKysgICAgICAg ICgqcF9rcmI1X2dzc19yZWxlYXNlX2NyZWQpKCZtaW5fc3RhdCwgJnRleHQtPnNlcnZlcl9jcmVk cyk7CisgICAgICAgICB0ZXh0LT5zZXJ2ZXJfY3JlZHMgPSBHU1NfQ19OT19DUkVERU5USUFMOwor ICAgICB9CisgCitkaWZmIC0tZ2l0IGEvbXlwcm94eS9zb3VyY2UvbXlwcm94eS5jIGIvbXlwcm94 eS9zb3VyY2UvbXlwcm94eS5jCitpbmRleCA4OWFiMGEzMDYuLjM0ZTgwNDEyNyAxMDA2NDQKKy0t LSBhL215cHJveHkvc291cmNlL215cHJveHkuYworKysrIGIvbXlwcm94eS9zb3VyY2UvbXlwcm94 eS5jCitAQCAtODk2LDcgKzg5Niw3IEBAIG15cHJveHlfYXV0aGVudGljYXRlX2luaXQobXlwcm94 eV9zb2NrZXRfYXR0cnNfdCAqYXR0cnMsCisgICAgICAgICAgICBnc3NfYnVmZmVyX2Rlc2MgbmFt ZV9idWY7CisgICAgICAgICAgICBjb25zdCBjaGFyICpzZXJ2aWNlc1tdID0geyAibXlwcm94eSIs ICJob3N0IiB9OworICAgICAgICAgICAgaW50IHM7CistICAgICAgICAgICBPTV91aW50MzIgbWFq b3Jfc3RhdHVzLCBtaW5vcl9zdGF0dXM7CisrICAgICAgICAgICBPTV91aW50MzIgbWlub3Jfc3Rh dHVzOworIAorICAgICAgICAgICAgZnFobiA9IEdTSV9TT0NLRVRfZ2V0X3BlZXJfaG9zdG5hbWUo YXR0cnMtPmdzaV9zb2NrZXQpOworICAgICAgICAgICAgaWYgKCFmcWhuKSB7CitAQCAtOTEyLDcg KzkxMiw3IEBAIG15cHJveHlfYXV0aGVudGljYXRlX2luaXQobXlwcm94eV9zb2NrZXRfYXR0cnNf dCAqYXR0cnMsCisgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlc1tzXSwgZnFobik7CisgICAg ICAgICAgICAgICAgbmFtZV9idWYubGVuZ3RoID0gc3RybGVuKG5hbWVfYnVmLnZhbHVlKTsKKyAK Ky0gICAgICAgICAgICAgICBtYWpvcl9zdGF0dXMgPSBnc3NfaW1wb3J0X25hbWUoCisrICAgICAg ICAgICAgICAgZ3NzX2ltcG9ydF9uYW1lKAorICAgICAgICAgICAgICAgICAgICAgJm1pbm9yX3N0 YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICZuYW1lX2J1ZiwKKyAgICAgICAgICAgICAgICAg ICAgIEdTU19DX05UX0hPU1RCQVNFRF9TRVJWSUNFLAorQEAgLTI4MTIsNyArMjgxMiw3IEBAIGNv bnZlcnRfbWVzc2FnZShjb25zdCBjaGFyICAgICAgICAgICAgICAgICAgICAgICpidWZmZXIsCisg ICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipsaW5lKQor IHsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kb25lID0gMDsKKy0gICAg Y2hhciAgICAgICAgICAgICAgICAgICAgICAgICp2YXJuYW1lX3N0YXJ0OworKyAgICBjb25zdCBj aGFyICAgICAgICAgICAgICAgICAgKnZhcm5hbWVfc3RhcnQ7CisgICAgIGludCAgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICAgaW50ICAgICAgICAgICAgICAg ICAgICAgICAgIGxpbmVfaW5kZXggPSAwOworICAgICBjb25zdCBjaGFyICAgICAgICAgICAgICAg ICAgKmJ1ZmZlcl9wOworQEAgLTI4MzYsNyArMjgzNiw3IEBAIGNvbnZlcnRfbWVzc2FnZShjb25z dCBjaGFyICAgICAgICAgICAgICAgICAgICAgICpidWZmZXIsCisgCisgICAgIHdoaWxlICgodmFy bmFtZV9zdGFydCA9IHN0cnN0cihidWZmZXJfcCwgdmFybmFtZSkpICE9IE5VTEwpCisgICAgIHsK Ky0gICAgICAgIGNoYXIgICAgICAgICAgICAgICAgICAgICp2YWx1ZV9zdGFydDsKKysgICAgICAg IGNvbnN0IGNoYXIgICAgICAgICAgICAgICp2YWx1ZV9zdGFydDsKKyAgICAgICAgIGludCAgICAg ICAgICAgICAgICAgICAgIHZhbHVlX2xlbmd0aDsKKyAKKyAgICAgICAgIC8qIEhhdmUgaXMgdGhp cyB0aGUgZmlyc3QgdmFybmFtZSB3ZSd2ZSBmb3VuZD8gKi8KK2RpZmYgLS1naXQgYS9teXByb3h5 L3NvdXJjZS9teXByb3h5X2FsY2YuYyBiL215cHJveHkvc291cmNlL215cHJveHlfYWxjZi5jCitp bmRleCA2MWMxY2JlZWYuLmU2N2VhNDY0ZSAxMDA2NDQKKy0tLSBhL215cHJveHkvc291cmNlL215 cHJveHlfYWxjZi5jCisrKysgYi9teXByb3h5L3NvdXJjZS9teXByb3h5X2FsY2YuYworQEAgLTM2 Niw3ICszNjYsNyBAQCBpbnQgbWFrZXByb3h5KGNvbnN0IGNoYXIgY2VydGZpbGVbXSwgY29uc3Qg Y2hhciBrZXlmaWxlW10sCisgICAgIHN0YXRpYyBjaGFyIEVOREtFWTJbXSA9ICItLS0tLUVORCBQ UklWQVRFIEtFWS0tLS0tIjsKKyAgICAgc3RhdGljIGNoYXIgRU5ES0VZM1tdID0gIi0tLS0tRU5E IEVOQ1JZUFRFRCBQUklWQVRFIEtFWS0tLS0tIjsKKyAgICAgdW5zaWduZWQgY2hhciAqY2VydGJ1 Zj1OVUxMLCAqa2V5YnVmPU5VTEw7CistICAgIGNoYXIgKmNlcnRzdGFydCwgKmNlcnRlbmQsICpr ZXlzdGFydCwgKmtleWVuZDsKKysgICAgY29uc3QgY2hhciAqY2VydHN0YXJ0LCAqY2VydGVuZCwg KmtleXN0YXJ0LCAqa2V5ZW5kOworICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTEsIHNpemUsIHJ2 YWwsIGZkPTA7CisgICAgIHVpZF90IG93bmVyOworIAorZGlmZiAtLWdpdCBhL215cHJveHkvc291 cmNlL215cHJveHlfZ2V0X2NyZWRlbnRpYWwuYyBiL215cHJveHkvc291cmNlL215cHJveHlfZ2V0 X2NyZWRlbnRpYWwuYworaW5kZXggZDFkMTVmMzg2Li5iNjBlZmFmMzggMTAwNjQ0CistLS0gYS9t eXByb3h5L3NvdXJjZS9teXByb3h5X2dldF9jcmVkZW50aWFsLmMKKysrKyBiL215cHJveHkvc291 cmNlL215cHJveHlfZ2V0X2NyZWRlbnRpYWwuYworQEAgLTczLDcgKzczLDcgQEAgc3RvcmVfY3Jl ZGVudGlhbCggY2hhciAqZGVsZWdmaWxlLAorICAgICAgICAgICAgICAgICAgIGNoYXIgKmtleWZp bGUgKTsKKyAKKyBpbnQKKy1idWZmZXIyZmlsZSggY2hhciAqYnVmZmVyLAorK2J1ZmZlcjJmaWxl KCBjb25zdCBjaGFyICpidWZmZXIsCisgICAgICAgICAgICAgIGludCAgIHNpemUsCisgICAgICAg ICAgICAgIGludCAgIGZkICk7CisgCitAQCAtNDk0LDcgKzQ5NCw3IEBAIHdyaXRlX2NlcnQoIGNo YXIgICAgICAgKnBhdGgsCisgICAgIGludCAgICAgICAgICBmZCA9IDA7CisgICAgIHN0YXRpYyBj aGFyICBCRUdJTkNFUlRbXSA9ICItLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0iOworICAgICBz dGF0aWMgY2hhciAgRU5EQ0VSVFtdICAgPSAiLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLSI7Cist ICAgIGNoYXIgICAgICAgICpjZXJ0c3RhcnQsCisrICAgIGNvbnN0IGNoYXIgICpjZXJ0c3RhcnQs CisgICAgICAgICAgICAgICAgICpjZXJ0ZW5kOworICAgICBpbnQgICAgICAgICAgcmV0dmFsICAg ICAgPSAtMTsKKyAgICAgaW50ICAgICAgICAgIHNpemU7CitAQCAtNTgwLDcgKzU4MCw3IEBAIHdy aXRlX2tleSggY2hhciAgICAgICAqcGF0aCwKKyAgICAgc3RhdGljIGNoYXIgIEVOREtFWTFbXSAg ID0gIi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tIjsKKyAgICAgc3RhdGljIGNoYXIgIEVO REtFWTJbXSAgID0gIi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0iOworICAgICBzdGF0aWMgY2hh ciAgRU5ES0VZM1tdICAgPSAiLS0tLS1FTkQgRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0iOwor LSAgICBjaGFyICAgICAgICAqa2V5c3RhcnQsCisrICAgIGNvbnN0IGNoYXIgICprZXlzdGFydCwK KyAgICAgICAgICAgICAgICAgKmtleWVuZDsKKyAgICAgaW50ICAgICAgICAgIHJldHZhbCAgICAg PSAtMTsKKyAgICAgaW50ICAgICAgICAgIHNpemU7CitAQCAtNjQ4LDEyICs2NDgsMTIgQEAgZXJy b3I6CisgfQorIAorIGludAorLWJ1ZmZlcjJmaWxlKCBjaGFyICpidWZmZXIsCisrYnVmZmVyMmZp bGUoIGNvbnN0IGNoYXIgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgaW50ICAgc2l6ZSwKKyAgICAg ICAgICAgICAgaW50ICAgZmQgKQorIHsKKyAgICAgaW50ICAgcnZhbDsKKy0gICAgY2hhciAqY2Vy dHN0YXJ0OworKyAgICBjb25zdCBjaGFyICpjZXJ0c3RhcnQ7CisgCisgICAgIGNlcnRzdGFydCA9 IGJ1ZmZlcjsKKyAKK2RpZmYgLS1naXQgYS9teXByb3h5L3NvdXJjZS9teXByb3h5X3N0b3JlLmMg Yi9teXByb3h5L3NvdXJjZS9teXByb3h5X3N0b3JlLmMKK2luZGV4IGJkYzQ4MmJkMS4uMWVmZDhj ZTdjIDEwMDY0NAorLS0tIGEvbXlwcm94eS9zb3VyY2UvbXlwcm94eV9zdG9yZS5jCisrKysgYi9t eXByb3h5L3NvdXJjZS9teXByb3h5X3N0b3JlLmMKK0BAIC01MDYsMTEgKzUwNiwxMSBAQCBtYWtl Y2VydGZpbGUoY29uc3QgY2hhciAgIGNlcnRmaWxlW10sCisgICAgIHN0YXRpYyBjaGFyIEVOREtF WTFbXSA9ICItLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLSI7CisgICAgIHN0YXRpYyBjaGFy IEVOREtFWTJbXSA9ICItLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tIjsKKyAgICAgc3RhdGljIGNo YXIgRU5ES0VZM1tdID0gIi0tLS0tRU5EIEVOQ1JZUFRFRCBQUklWQVRFIEtFWS0tLS0tIjsKKy0g ICAgY2hhciAgICAgICAgKmNlcnRzdGFydDsKKy0gICAgY2hhciAgICAgICAgKmNlcnRlbmQ7Cisr ICAgIGNvbnN0IGNoYXIgICpjZXJ0c3RhcnQ7CisrICAgIGNvbnN0IGNoYXIgICpjZXJ0ZW5kOwor ICAgICBpbnQgICAgICAgICAgc2l6ZTsKKy0gICAgY2hhciAgICAgICAgKmtleXN0YXJ0OworLSAg ICBjaGFyICAgICAgICAqa2V5ZW5kOworKyAgICBjb25zdCBjaGFyICAqa2V5c3RhcnQ7CisrICAg IGNvbnN0IGNoYXIgICprZXllbmQ7CisgCisgCisgICAgIC8qIEZpZ3VyZSBvdXQgaG93IG11Y2gg bWVtb3J5IHdlIGFyZSBnb2luZyB0byBuZWVkICovCitkaWZmIC0tZ2l0IGEvbXlwcm94eS9zb3Vy Y2UvcGx1Z2luX2NvbW1vbi5jIGIvbXlwcm94eS9zb3VyY2UvcGx1Z2luX2NvbW1vbi5jCitpbmRl eCBkNzQ0YzBkNDYuLjhjMGY5Njk3NiAxMDA2NDQKKy0tLSBhL215cHJveHkvc291cmNlL3BsdWdp bl9jb21tb24uYworKysrIGIvbXlwcm94eS9zb3VyY2UvcGx1Z2luX2NvbW1vbi5jCitAQCAtNzMx LDcgKzczMSw3IEBAIGludCBfcGx1Z19wYXJzZXVzZXIoY29uc3Qgc2FzbF91dGlsc190ICp1dGls cywKKyAgICAgICAgIHJldHVybiBTQVNMX0JBRFBBUkFNOworICAgICB9CisgCistICAgIHIgPSBz dHJjaHIoaW5wdXQsICdAJyk7CisrICAgIHIgPSAoY2hhciAqKSBzdHJjaHIoaW5wdXQsICdAJyk7 CisgICAgIGlmICghcikgeworICAgICAgICAgLyogaG1tbSwgdGhlIHVzZXIgZGlkbid0IHNwZWNp ZnkgYSByZWFsbSAqLworICAgICAgICAgaWYodXNlcl9yZWFsbSAmJiB1c2VyX3JlYWxtWzBdKSB7 CitkaWZmIC0tZ2l0IGEvbXlwcm94eS9zb3VyY2Uvdm9tc2NsaWVudC5jIGIvbXlwcm94eS9zb3Vy Y2Uvdm9tc2NsaWVudC5jCitpbmRleCA5Nzg3OWVhNTYuLjdmNDFlNDE3NCAxMDA2NDQKKy0tLSBh L215cHJveHkvc291cmNlL3ZvbXNjbGllbnQuYworKysrIGIvbXlwcm94eS9zb3VyY2Uvdm9tc2Ns aWVudC5jCitAQCAtMTk4LDcgKzE5OCw3IEBAIHN0YXRpYyBjaGFyICoKKyB2b21zX2dldF9yb2xl X2NvbW1hbmQoY29uc3QgY2hhciAqc3RyKQorIHsKKyAgICAgY2hhciAqYnVmID0gTlVMTDsKKy0g ICAgY2hhciAqcF9yb2xlID0gTlVMTDsKKysgICAgY29uc3QgY2hhciAqcF9yb2xlID0gTlVMTDsK KyAgICAgc2l6ZV90IGJ1Zl9sZW4sIHJvbGVfbGVuOzsKKyAgICAgaW50IGkgPSAwOworIAorQEAg LTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgY2hhciAqCisgdm9tc19nZXRfbWFwcGluZ19jb21tYW5k KGNvbnN0IGNoYXIgKnN0cikKKyB7CisgICAgIGNoYXIgKmJ1ZiA9IE5VTEw7CistICAgIGNoYXIg KnBfcm9sZSA9IE5VTEw7CisrICAgIGNvbnN0IGNoYXIgKnBfcm9sZSA9IE5VTEw7CisgICAgIHNp emVfdCBidWZfbGVuID0gMCwgZ3JvdXBfbGVuID0gMCwgcm9sZV9sZW4gPSAwOworICAgICBpbnQg aSA9IDA7CisgCitAQCAtMzE1LDcgKzMxNSw3IEBAIHZvbXNfZ2V0X2dyb3VwX2NvbW1hbmQoY29u c3QgY2hhciAqc3RyKQorIHN0YXRpYyBjaGFyICoKKyB2b21zX2NvbnZlcnRfY29tbWFuZChjb25z dCBjaGFyICpzdHIpCisgeworLSAgICBjaGFyICpwID0gTlVMTDsKKysgICAgY29uc3QgY2hhciAq cCA9IE5VTEw7CisgICAgIGNoYXIgKnJlc3VsdCA9IE5VTEw7CisgCisgICAgIGlmIChzdHIgPT0g TlVMTCkgeworQEAgLTM0NSw3ICszNDUsNyBAQCBzdGF0aWMgaW50Cisgdm9tc19wYXJzZV9jb21t YW5kKGNvbnN0IGNoYXIgKnZvbXMsIGNoYXIgKip2bywgY2hhciAqKmNvbW1hbmQpCisgeworICAg ICBpbnQgcmVzdWx0ID0gMTsKKy0gICAgY2hhciAqcF9jb2xvbiA9IE5VTEw7CisrICAgIGNvbnN0 IGNoYXIgKnBfY29sb24gPSBOVUxMOworICAgICBwX2NvbG9uID0gc3RyY2hyKHZvbXMsICc6Jyk7 CisgICAgIGlmIChwX2NvbG9uID09IE5VTEwpIHsKKyAgICAgICAgICp2byA9IHN0cmR1cCh2b21z KTsKKy0tIAorMi41NC4wCisKCmRpZmYgLS1naXQgYS9teXByb3h5LnNwZWMgYi9teXByb3h5LnNw ZWMKaW5kZXggNTNiYzQyMi4uNWRkZTE0ZSAxMDA2NDQKLS0tIGEvbXlwcm94eS5zcGVjCisrKyBi L215cHJveHkuc3BlYwpAQCAtOCw3ICs4LDcgQEAKIAogTmFtZTogICAgICAgICAgIG15cHJveHkK IFZlcnNpb246ICAgICAgICA2LjIuMjAKLVJlbGVhc2U6ICAgICAgICAzJXs/ZGlzdH0KK1JlbGVh c2U6ICAgICAgICA0JXs/ZGlzdH0KIFN1bW1hcnk6ICAgICAgICBNYW5hZ2UgWC41MDkgUHVibGlj IEtleSBJbmZyYXN0cnVjdHVyZSAoUEtJKSBzZWN1cml0eSBjcmVkZW50aWFscwogCiBMaWNlbnNl OiAgICAgICAgTkNTQSBBTkQgQlNELTQtQ2xhdXNlIEFORCBCU0QtMi1DbGF1c2UgQU5EIEFwYWNo ZS0yLjAKQEAgLTE2LDYgKzE2LDkgQEAgVVJMOiAgICAgICAgICAgIGh0dHA6Ly9ncmlkLm5jc2Eu aWxsaW5vaXMuZWR1L215cHJveHkvCiBTb3VyY2U6ICAgICAgICAgaHR0cHM6Ly9yZXBvLmdyaWRj Zi5vcmcvZ2N0Ni9zb3VyY2VzLyV7bmFtZX0tJXt2ZXJzaW9ufS50YXIuZ3oKIFNvdXJjZTE6ICAg ICAgICBteXByb3h5LXNlcnZlci1zeXN0ZW1kLXN5c3VzZXJzLmNvbmYKIFNvdXJjZTg6ICAgICAg ICBSRUFETUUKK1BhdGNoMDoJCTAwMDEtVW50YWJpZnktYW5kLXJlbW92ZS10cmFpbGluZy13aGl0 ZS1zcGFjZS5wYXRjaAorUGF0Y2gxOgkJMDAwMi1CdWlsZC13aXRoLU9wZW5TU0wtNC5wYXRjaAor UGF0Y2gyOgkJMDAwMy1GaXgtY29tcGlsZXItYW5kLWRveHlnZW4td2FybmluZ3MucGF0Y2gKIAog QnVpbGRSZXF1aXJlczogIG1ha2UKIEJ1aWxkUmVxdWlyZXM6ICBnY2MKQEAgLTMwLDcgKzMzLDcg QEAgQnVpbGRSZXF1aXJlczogIGdsb2J1cy1nc2ktY2FsbGJhY2stZGV2ZWwgPj0gNAogQnVpbGRS ZXF1aXJlczogIGN5cnVzLXNhc2wtZGV2ZWwKIEJ1aWxkUmVxdWlyZXM6ICBrcmI1LWRldmVsCiBC dWlsZFJlcXVpcmVzOiAgb3BlbnNzbC1kZXZlbAotJWlmICV7P2ZlZG9yYX0leyE/ZmVkb3JhOjB9 ID49IDQxCislaWYgJXs/ZmVkb3JhfSV7IT9mZWRvcmE6MH0gPj0gNDEgJiYgJXs/ZmVkb3JhfSV7 IT9mZWRvcmE6MH0gPD0gNDQKIEJ1aWxkUmVxdWlyZXM6ICBvcGVuc3NsLWRldmVsLWVuZ2luZQog JWVuZGlmCiBCdWlsZFJlcXVpcmVzOiAgb3BlbmxkYXAtZGV2ZWwgPj0gMi4zCkBAIC0xNTYsNiAr MTU5LDkgQEAgUGFja2FnZSAle25hbWV9LWRvYyBjb250YWlucyB0aGUgTXlQcm94eSBkb2N1bWVu dGF0aW9uLgogCiAlcHJlcAogJXNldHVwIC1xCislcGF0Y2ggLVAwIC1wMworJXBhdGNoIC1QMSAt cDMKKyVwYXRjaCAtUDIgLXAzCiAKICVidWlsZAogIyBSZWR1Y2Ugb3ZlcmxpbmtpbmcKQEAgLTMx Nyw2ICszMjMsMTAgQEAgcm0gJXtidWlsZHJvb3R9JXtfc2JpbmRpcn0vbXlwcm94eS1zZXJ2ZXIt c2V0dXAKICVsaWNlbnNlIExJQ0VOU0UqCiAKICVjaGFuZ2Vsb2cKKyogU3VuIEp1biAxNCAyMDI2 IE1hdHRpYXMgRWxsZXJ0IDxtYXR0aWFzLmVsbGVydEBwaHlzaWNzLnV1LnNlPiAtIDYuMi4yMC00 CistIENvbXBpbGUgd2l0aCBPcGVuU1NMIDQKKy0gRml4IGNvbXBpbGVyIHdhcm5pbmdzCisKICog RnJpIEp1biAxMiAyMDI2IFlhYWtvdiBTZWxrb3dpdHogPHlzZWxrb3dpQHJlZGhhdC5jb20+IC0g Ni4yLjIwLTMKIC0gUmVidWlsdCBmb3Igb3BlbnNzbCA0LjAKIAo=